Files
player/Project/Src/NES/nes_main.h
2025-06-27 00:32:57 +08:00

86 lines
2.1 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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