86 lines
2.1 KiB
C
86 lines
2.1 KiB
C
#ifndef __NES_MAIN_H
|
||
#define __NES_MAIN_H
|
||
|
||
//////////////////////////////////////////////////////////////////////////////////
|
||
//本程序移植自网友ye781205的NES模拟器工程
|
||
//ALIENTEK STM32F407开发板
|
||
//NES主函数 代码
|
||
//正点原子@ALIENTEK
|
||
//技术论坛:www.openedv.com
|
||
//创建日期:2014/7/1
|
||
//版本:V1.0
|
||
//////////////////////////////////////////////////////////////////////////////////
|
||
|
||
#define NES_SKIP_FRAME 2 //定义模拟器跳帧数,默认跳2帧
|
||
|
||
|
||
#define INLINE static inline
|
||
#define int8 char
|
||
#define int16 short
|
||
#define int32 int
|
||
#define uint8 unsigned char
|
||
#define uint16 unsigned short
|
||
#define uint32 unsigned int
|
||
#define boolean uint8
|
||
|
||
|
||
|
||
//nes信息头结构体
|
||
typedef struct
|
||
{
|
||
unsigned char id[3]; // 'NES'
|
||
unsigned char ctrl_z; // control-z
|
||
unsigned char num_16k_rom_banks;
|
||
unsigned char num_8k_vrom_banks;
|
||
unsigned char flags_1;
|
||
unsigned char flags_2;
|
||
unsigned char reserved[8];
|
||
}NES_header;
|
||
|
||
extern u8 nes_frame_cnt; //nes帧计数器
|
||
extern int MapperNo; //map编号
|
||
extern int NES_scanline; //扫描线
|
||
extern NES_header *RomHeader; //rom文件头
|
||
extern int VROM_1K_SIZE;
|
||
extern int VROM_8K_SIZE;
|
||
extern u8 cpunmi; //cpu中断标志 在 6502.s里面
|
||
extern u8 cpuirq;
|
||
extern u8 PADdata; //手柄1键值
|
||
extern u8 PADdata1; //手柄1键值
|
||
extern u8 lianan_biao; //连按标志
|
||
#define CPU_NMI cpunmi=1;
|
||
#define CPU_IRQ cpuirq=1;
|
||
#define NES_RAM_SPEED 0 //1:内存占用小 0:速度快
|
||
|
||
|
||
//使用文件名来打开游戏
|
||
u8 nes_load(u8* pname,void *lcd_addr,int x,int y);
|
||
|
||
//运行已经加载在内存中的游戏
|
||
u8 nes_start(u8* file,int fileSize,void *lcd_addr,int x,int y);
|
||
|
||
|
||
|
||
void cpu6502_init(void); //在 cart.s
|
||
void run6502(u32); //在 6502.s
|
||
u8 nes_load_rom(void);
|
||
void nes_sram_free(void);
|
||
u8 nes_sram_malloc(u32 romsize);
|
||
void nes_set_window(void);
|
||
void nes_get_gamepadval(void);
|
||
void nes_emulate_frame(void);
|
||
void debug_6502(u16 reg0,u8 reg1);
|
||
|
||
void nes_i2s_dma_tx_callback(void);
|
||
int nes_sound_open(int samples_per_sync,int sample_rate);
|
||
void nes_sound_close(void);
|
||
void nes_apu_fill_buffer(int samples,u16* wavebuf);
|
||
#endif
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|