Files
player/Project/Src/NES/nes_main.h

86 lines
2.0 KiB
C
Raw Normal View History

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>
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