主要功能介绍:
旨在将经典的NES模拟器成功移植到MCXN947微控制器上,为您带来怀旧的游戏体验。通过利用MCXN947的强大处理能力和丰富的外设接口,我们将NES游戏的模拟环境完美地呈现在您的嵌入式设备上。
首先用lvgl的代码工程添加nes的代码。
添加绘图处理如下:
#include "stdint.h"
#include "nes.h"
#include "rom_mario.h"
#include "Tanks.h"
nes_t nes_console;
#define RGB565(r,g,b) ((((uint32_t)(r)&0xf8)<<8)|(((uint32_t)(g)&0xfc)<<3)|((uint32_t)(b)&0xf8)>>3)
#define RGB888(r,g,b) (((uint32_t)(r)<<16)|((uint32_t)(g)<<8)|(uint32_t)(b))
#define RGB(r,g,b) RGB565(r,g,b)
static const uint16_t rgb_palette[64] =
{
RGB(0x7C,0x7C,0x7C), RGB(0x00,0x00,0xFC), RGB(0x00,0x00,0xBC), RGB(0x44,0x28,0xBC), RGB(0x94,0x00,0x84), RGB(0xA8,0x00,0x20), RGB(0xA8,0x10,0x00), RGB(0x88,0x14,0x00),
RGB(0x50,0x30,0x00), RGB(0x00,0x78,0x00), RGB(0x00,0x68,0x00), RGB(0x00,0x58,0x00), RGB(0x00,0x40,0x58), RGB(0x00,0x00,0x00), RGB(0x00,0x00,0x00), RGB(0x00,0x00,0x00),
RGB(0xBC,0xBC,0xBC), RGB(0x00,0x78,0xF8), RGB(0x00,0x58,0xF8), RGB(0x68,0x44,0xFC), RGB(0xD8,0x00,0xCC), RGB(0xE4,0x00,0x58), RGB(0xF8,0x38,0x00), RGB(0xE4,0x5C,0x10),
RGB(0xAC,0x7C,0x00), RGB(0x00,0xB8,0x00), RGB(0x00,0xA8,0x00), RGB(0x00,0xA8,0x44), RGB(0x00,0x88,0x88), RGB(0x00,0x00,0x00), RGB(0x00,0x00,0x00), RGB(0x00,0x00,0x00),
RGB(0xF8,0xF8,0xF8), RGB(0x3C,0xBC,0xFC), RGB(0x68,0x88,0xFC), RGB(0x98,0x78,0xF8), RGB(0xF8,0x78,0xF8), RGB(0xF8,0x58,0x98), RGB(0xF8,0x78,0x58), RGB(0xFC,0xA0,0x44),
RGB(0xF8,0xB8,0x00), RGB(0xB8,0xF8,0x18), RGB(0x58,0xD8,0x54), RGB(0x58,0xF8,0x98), RGB(0x00,0xE8,0xD8), RGB(0x78,0x78,0x78), RGB(0x00,0x00,0x00), RGB(0x00,0x00,0x00),
RGB(0xFC,0xFC,0xFC), RGB(0xA4,0xE4,0xFC), RGB(0xB8,0xB8,0xF8), RGB(0xD8,0xB8,0xF8), RGB(0xF8,0xB8,0xF8), RGB(0xF8,0xA4,0xC0), RGB(0xF0,0xD0,0xB0), RGB(0xFC,0xE0,0xA8),
RGB(0xF8,0xD8,0x78), RGB(0xD8,0xF8,0x78), RGB(0xB8,0xF8,0xB8), RGB(0xB8,0xF8,0xD8), RGB(0x00,0xFC,0xFC), RGB(0xF8,0xD8,0xF8), RGB(0x00,0x00,0x00), RGB(0x00,0x00,0x00),
};
extern void DEMO_DrawBitmap(uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2, uint16_t *color_p);
uint16_t frame_buff[16][256];
uint16_t ypos = 0;
void draw_pixels(void *ptTag,
uint_fast8_t y,
uint_fast8_t x,
uint_fast8_t chColor)
{
frame_buff[y & 0x0F][x] = rgb_palette[chColor & 0x3F];
if((0x0F == (y & 0x0F))&&(255 == x))
{
DEMO_DrawBitmap(100,y-15,355,y,(uint16_t *)frame_buff);
}
}
void update_frame(uint8_t *ptFrame)
{
}
主任务添加如下初始化和运行代码:
编译下载之后就可以看到游戏界面了,下一步准备把触摸操控加上去。
阅读全文