2025-06-27 00:32:57 +08:00
|
|
|
|
#ifndef __NES_MAIN_H
|
|
|
|
|
#define __NES_MAIN_H
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ye781205<30><35>NESģ<53><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
//ALIENTEK STM32F407<30><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
//NES<45><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳:www.openedv.com
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:2014/7/1
|
|
|
|
|
//<2F>汾<EFBFBD><E6B1BE>V1.0
|
2025-06-27 00:32:57 +08:00
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
#define NES_SKIP_FRAME 2 //<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>,Ĭ<><C4AC><EFBFBD><EFBFBD>2֡
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//nes<65><73>Ϣͷ<CFA2>ṹ<EFBFBD><E1B9B9>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
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;
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
extern u8 nes_frame_cnt; //nes֡<73><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
extern int MapperNo; //map<61><70><EFBFBD><EFBFBD>
|
|
|
|
|
extern int NES_scanline; //ɨ<><C9A8><EFBFBD><EFBFBD>
|
|
|
|
|
extern NES_header *RomHeader; //rom<6F>ļ<EFBFBD>ͷ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
extern int VROM_1K_SIZE;
|
|
|
|
|
extern int VROM_8K_SIZE;
|
2025-07-05 19:47:28 +08:00
|
|
|
|
extern u8 cpunmi; //cpu<70>жϱ<D0B6>־ <20><> 6502.s<><73><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
extern u8 cpuirq;
|
2025-07-05 19:47:28 +08:00
|
|
|
|
extern u8 PADdata; //<2F>ֱ<EFBFBD>1<EFBFBD><31>ֵ
|
|
|
|
|
extern u8 PADdata1; //<2F>ֱ<EFBFBD>1<EFBFBD><31>ֵ
|
|
|
|
|
extern u8 lianan_biao; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
2025-06-27 00:32:57 +08:00
|
|
|
|
#define CPU_NMI cpunmi=1;
|
|
|
|
|
#define CPU_IRQ cpuirq=1;
|
2025-07-05 19:47:28 +08:00
|
|
|
|
#define NES_RAM_SPEED 0 //1:<3A>ڴ<EFBFBD>ռ<EFBFBD><D5BC>С 0:<3A>ٶȿ<D9B6>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//ʹ<><CAB9><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
u8 nes_load(u8* pname,void *lcd_addr,int x,int y);
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>е<EFBFBD><D0B5><EFBFBD>Ϸ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
u8 nes_start(u8* file,int fileSize,void *lcd_addr,int x,int y);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
void cpu6502_init(void); //<2F><> cart.s
|
|
|
|
|
void run6502(u32); //<2F><> 6502.s
|
2025-06-27 00:32:57 +08:00
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|