Files
player/Project/Src/NES/nes_main.h
2025-07-10 11:30:57 +08:00

69 lines
2.0 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.

//////////////////////////////////////////////////////////////////////////////////
// 本程序移植自网友ye781205的NES模拟器工程
// ALIENTEK STM32F407开发板
// NES主函数 代码
// 正点原子@ALIENTEK
// 技术论坛:www.openedv.com
// 创建日期:2014/7/1
// 版本V1.0
//////////////////////////////////////////////////////////////////////////////////
#ifndef __NES_MAIN_H
#define __NES_MAIN_H
#include "stdint.h"
#define NES_SKIP_FRAME 2 // 定义模拟器跳帧数,默认跳2帧
#define INLINE static inline
#define boolean uint8_t
// 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 uint8_t 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 uint8_t cpunmi; // cpu中断标志 在 6502.s里面
extern uint8_t cpuirq;
extern uint8_t PADdata; // 手柄1键值
extern uint8_t PADdata1; // 手柄1键值
extern uint8_t lianan_biao; // 连按标志
#define CPU_NMI cpunmi = 1;
#define CPU_IRQ cpuirq = 1;
#define NES_RAM_SPEED 0 // 1:内存占用小 0:速度快
// 使用文件名来打开游戏
uint8_t nes_load(uint8_t *pname, void *lcd_addr, int x, int y);
// 运行已经加载在内存中的游戏
uint8_t nes_start(uint8_t *file, int fileSize, void *lcd_addr, int x, int y);
void cpu6502_init(void); // 在 cart.s
void run6502(uint32_t); // 在 6502.s
uint8_t nes_load_rom(void);
void nes_sram_free(void);
uint8_t nes_sram_malloc(uint32_t romsize);
void nes_set_window(void);
void nes_get_gamepadval(void);
void nes_emulate_frame(void);
void debug_6502(uint16_t reg0, uint8_t 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, uint16_t *wavebuf);
#endif