2025-07-10 11:30:57 +08:00
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
// <20><><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>
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳:www.openedv.com
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:2014/7/1
|
|
|
|
|
// <20>汾<EFBFBD><E6B1BE>V1.0
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
2025-06-27 00:32:57 +08:00
|
|
|
|
#ifndef __NES_MAIN_H
|
|
|
|
|
#define __NES_MAIN_H
|
|
|
|
|
|
2025-07-10 11:30:57 +08:00
|
|
|
|
#include "stdint.h"
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-10 11:30:57 +08:00
|
|
|
|
#define NES_SKIP_FRAME 2 // <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1>,Ĭ<><C4AC><EFBFBD><EFBFBD>2֡
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-10 11:30:57 +08:00
|
|
|
|
#define INLINE static inline
|
|
|
|
|
#define boolean uint8_t
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-10 11:30:57 +08:00
|
|
|
|
// nes<65><73>Ϣͷ<CFA2>ṹ<EFBFBD><E1B9B9>
|
|
|
|
|
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-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-10 11:30:57 +08:00
|
|
|
|
extern uint8_t 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;
|
2025-07-10 11:30:57 +08:00
|
|
|
|
extern int VROM_8K_SIZE;
|
|
|
|
|
extern uint8_t cpunmi; // cpu<70>жϱ<D0B6>־ <20><> 6502.s<><73><EFBFBD><EFBFBD>
|
|
|
|
|
extern uint8_t cpuirq;
|
|
|
|
|
extern uint8_t PADdata; // <20>ֱ<EFBFBD>1<EFBFBD><31>ֵ
|
|
|
|
|
extern uint8_t PADdata1; // <20>ֱ<EFBFBD>1<EFBFBD><31>ֵ
|
|
|
|
|
extern uint8_t lianan_biao; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|
|
|
|
#define CPU_NMI cpunmi = 1;
|
|
|
|
|
#define CPU_IRQ cpuirq = 1;
|
|
|
|
|
#define NES_RAM_SPEED 0 // 1:<3A>ڴ<EFBFBD>ռ<EFBFBD><D5BC>С 0:<3A>ٶȿ<D9B6>
|
|
|
|
|
|
|
|
|
|
// ʹ<><CAB9><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ
|
|
|
|
|
uint8_t nes_load(uint8_t *pname, void *lcd_addr, int x, int y);
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4>е<EFBFBD><D0B5><EFBFBD>Ϸ
|
|
|
|
|
uint8_t nes_start(uint8_t *file, int fileSize, void *lcd_addr, int x, int y);
|
|
|
|
|
|
|
|
|
|
void cpu6502_init(void); // <20><> cart.s
|
|
|
|
|
void run6502(uint32_t); // <20><> 6502.s
|
|
|
|
|
uint8_t nes_load_rom(void);
|
2025-06-27 00:32:57 +08:00
|
|
|
|
void nes_sram_free(void);
|
2025-07-10 11:30:57 +08:00
|
|
|
|
uint8_t nes_sram_malloc(uint32_t romsize);
|
2025-06-27 00:32:57 +08:00
|
|
|
|
void nes_set_window(void);
|
|
|
|
|
void nes_get_gamepadval(void);
|
|
|
|
|
void nes_emulate_frame(void);
|
2025-07-10 11:30:57 +08:00
|
|
|
|
void debug_6502(uint16_t reg0, uint8_t reg1);
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
|
|
|
|
void nes_i2s_dma_tx_callback(void);
|
2025-07-10 11:30:57 +08:00
|
|
|
|
int nes_sound_open(int samples_per_sync, int sample_rate);
|
2025-06-27 00:32:57 +08:00
|
|
|
|
void nes_sound_close(void);
|
2025-07-10 11:30:57 +08:00
|
|
|
|
void nes_apu_fill_buffer(int samples, uint16_t *wavebuf);
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-10 11:30:57 +08:00
|
|
|
|
#endif
|