整理代码

This commit is contained in:
ranchuan
2025-07-10 11:30:57 +08:00
parent c3df6f6ae2
commit 387ada7e6f
8 changed files with 2821 additions and 3180 deletions

View File

@@ -1,122 +1,109 @@
#ifndef __NES_MAPPER_H
#define __NES_MAPPER_H
//////////////////////////////////////////////////////////////////////////////////
//<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 MAP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><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
//////////////////////////////////////////////////////////////////////////////////
#ifndef uint16
#define uint16 u16
#define uint8 u8
#define uint32 u32
#endif
// <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 MAP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><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
//////////////////////////////////////////////////////////////////////////////////
#define num_8k_ROM_banks VROM_8K_SIZE
#define num_1k_VROM_banks VROM_1K_SIZE
//////////////////////////////////////////////////////////////////////////////////
typedef struct
{
void (*Reset)();
void (*Write)( uint16 addr,uint8 data);
void (*Read)( uint8 data,uint16 addr);
uint8 (*ReadLow)( uint16 addr);
void (*WriteLow)(uint16 addr,uint8 data);
void (*HSync)( int scanline);
void (*VSync)(void);
#ifndef __NES_MAPPER_H
#define __NES_MAPPER_H
#include "stdint.h"
#define num_8k_ROM_banks VROM_8K_SIZE
#define num_1k_VROM_banks VROM_1K_SIZE
typedef struct {
void (*Reset)();
void (*Write)(uint16_t addr, uint8_t data);
void (*Read)(uint8_t data, uint16_t addr);
uint8_t (*ReadLow)(uint16_t addr);
void (*WriteLow)(uint16_t addr, uint8_t data);
void (*HSync)(int scanline);
void (*VSync)(void);
} MAPPER;
///////////////////////////////////////////////////////////////
typedef enum
{
MMC1_SMALL,
MMC1_512K,
MMC1_1024K
}MMC1_Size_t;
typedef struct
{
uint32 write_count;
uint8 bits;
uint8 regs[4];
uint32 last_write_addr;
MMC1_Size_t MMC1_Size;
uint32 MMC1_256K_base;
uint32 MMC1_swap;
// these are the 4 ROM banks currently selected
uint32 MMC1_bank1;
uint32 MMC1_bank2;
uint32 MMC1_bank3;
uint32 MMC1_bank4;
typedef enum { MMC1_SMALL, MMC1_512K, MMC1_1024K } MMC1_Size_t;
uint32 MMC1_HI1;
uint32 MMC1_HI2;
}Mapper1Res;
typedef struct {
uint32_t write_count;
uint8_t bits;
uint8_t regs[4];
uint32_t last_write_addr;
//ͨ<><CDA8>map<61><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>
typedef struct
{
uint8 patch;
uint8 regs[11];
MMC1_Size_t MMC1_Size;
uint32_t MMC1_256K_base;
uint32_t MMC1_swap;
uint32 prg0,prg1;
uint32 chr01,chr23,chr4,chr5,chr6,chr7;
uint8 irq_enabled; // IRQs enabled
uint32 irq_counter; // IRQ scanline counter, decreasing
uint32 irq_latch; // IRQ scanline counter latch
}MapperCommRes;
extern uint32 ROM_mask;
extern uint32 VROM_mask;
extern const int MapTab[];
// these are the 4 ROM banks currently selected
uint32_t MMC1_bank1;
uint32_t MMC1_bank2;
uint32_t MMC1_bank3;
uint32_t MMC1_bank4;
uint32_t MMC1_HI1;
uint32_t MMC1_HI2;
} Mapper1Res;
// ͨ<><CDA8>map<61><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B9B9>
typedef struct {
uint8_t patch;
uint8_t regs[11];
uint32_t prg0, prg1;
uint32_t chr01, chr23, chr4, chr5, chr6, chr7;
uint8_t irq_enabled; // IRQs enabled
uint32_t irq_counter; // IRQ scanline counter, decreasing
uint32_t irq_latch; // IRQ scanline counter latch
} MapperCommRes;
extern uint32_t ROM_mask;
extern uint32_t VROM_mask;
extern const int MapTab[];
extern MAPPER *NES_Mapper;
extern uint32 VROM_mask;
extern uint32_t VROM_mask;
extern Mapper1Res *MAP1;
extern MapperCommRes *MAPx;
extern MapperCommRes *MAPx;
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
void Mapper_Init(void);
void asm_Mapper_Write(uint8 byData,uint16 wAddr);
void asm_Mapper_ReadLow( uint16 wAddr);
void asm_Mapper_WriteLow( uint8 byData ,uint16 wAddr);
void asm_Mapper_Write(uint8_t byData, uint16_t wAddr);
void asm_Mapper_ReadLow(uint16_t wAddr);
void asm_Mapper_WriteLow(uint8_t byData, uint16_t wAddr);
void map67_(signed char page); //6502.s
void map89_(signed char page);
void map67_(signed char page); // 6502.s
void map89_(signed char page);
void mapAB_(signed char page);
void mapCD_(signed char page);
void mapEF_(signed char page);//<2F>з<EFBFBD><D0B7><EFBFBD><EFBFBD>ַ<EFBFBD>
void mapEF_(signed char page); // <EFBFBD>з<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
void set_CPU_bank3(signed char page );
void set_CPU_bank4(signed char page );
void set_CPU_bank5(signed char page );
void set_CPU_bank6(signed char page );
void set_CPU_bank7(signed char page );
void set_CPU_banks(int bank0_num,int bank1_num,int bank2_num, int bank3_num);
void set_PPU_banks( uint32 bank0_num, uint32 bank1_num,
uint32 bank2_num, uint32 bank3_num,
uint32 bank4_num, uint32 bank5_num,
uint32 bank6_num, uint32 bank7_num);
void set_PPU_bank0(uint32 bank_num);
void set_PPU_bank1(uint32 bank_num);
void set_PPU_bank2(uint32 bank_num);
void set_PPU_bank3(uint32 bank_num);
void set_PPU_bank4(uint32 bank_num);
void set_PPU_bank5(uint32 bank_num);
void set_PPU_bank6(uint32 bank_num);
void set_PPU_bank7(uint32 bank_num);
void set_PPU_bank8(uint32 bank_num);
void set_PPU_bank9(uint32 bank_num);
void set_PPU_bank10(uint32 bank_num);
void set_PPU_bank11(uint32 bank_num);
void set_VRAM_bank(uint8 bank, uint32 bank_num);
void set_CPU_bank3(signed char page);
void set_CPU_bank4(signed char page);
void set_CPU_bank5(signed char page);
void set_CPU_bank6(signed char page);
void set_CPU_bank7(signed char page);
void set_CPU_banks(int bank0_num, int bank1_num, int bank2_num, int bank3_num);
void set_PPU_banks(uint32_t bank0_num, uint32_t bank1_num, uint32_t bank2_num,
uint32_t bank3_num, uint32_t bank4_num, uint32_t bank5_num,
uint32_t bank6_num, uint32_t bank7_num);
void set_PPU_bank0(uint32_t bank_num);
void set_PPU_bank1(uint32_t bank_num);
void set_PPU_bank2(uint32_t bank_num);
void set_PPU_bank3(uint32_t bank_num);
void set_PPU_bank4(uint32_t bank_num);
void set_PPU_bank5(uint32_t bank_num);
void set_PPU_bank6(uint32_t bank_num);
void set_PPU_bank7(uint32_t bank_num);
void set_PPU_bank8(uint32_t bank_num);
void set_PPU_bank9(uint32_t bank_num);
void set_PPU_bank10(uint32_t bank_num);
void set_PPU_bank11(uint32_t bank_num);
void set_VRAM_bank(uint8_t bank, uint32_t bank_num);
#endif