• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

【代码库】基于FRDM-MCXN947的NES游戏模拟器

原创
04/09 15:41
616
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

NES的模拟器代码.zip

共1个文件

主要功能介绍:

旨在将经典的NES模拟器成功移植到MCXN947微控制器上,为您带来怀旧的游戏体验。通过利用MCXN947的强大处理能力和丰富的外设接口,我们将NES游戏的模拟环境完美地呈现在您的嵌入式设备上。

首先用lvgl的代码工程添加nes的代码。
image.png

添加绘图处理如下:

#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)
{
    
}

主任务添加如下初始化和运行代码:
image.png

编译下载之后就可以看到游戏界面了,下一步准备把触摸操控加上去。

  • NES的模拟器代码.zip
    下载
点赞
收藏
评论
分享
加入交流群
举报

相关推荐

方案定制

去合作
方案开发定制化,2000+方案商即时响应!