Add mapper 447 submapper 1.
This commit is contained in:
@@ -22,14 +22,9 @@
|
||||
#include "asic_vrc2and4.h"
|
||||
#include "cartram.h"
|
||||
|
||||
static uint8 submapper;
|
||||
static uint8 reg;
|
||||
static uint8 dip;
|
||||
|
||||
static SFORMAT stateRegs[] = {
|
||||
{ ®, 1, "EXP0" },
|
||||
{ &dip, 1, "DIPS" },
|
||||
{ 0 }
|
||||
};
|
||||
static uint8 pad;
|
||||
|
||||
static void sync () {
|
||||
VRC24_syncPRG(0x0F, reg <<4);
|
||||
@@ -39,21 +34,19 @@ static void sync () {
|
||||
}
|
||||
|
||||
static int getPRGBank (uint8 bank) {
|
||||
if (reg &4) {
|
||||
if (~reg &2)
|
||||
return VRC24_getPRGBank(bank &1) &~2 | bank &2;
|
||||
else
|
||||
return VRC24_getPRGBank(bank &1);
|
||||
if (reg &0x04) {
|
||||
int mask = reg &(submapper == 0? 0x02: 0x08) ? 1: 3;
|
||||
return VRC24_getPRGBank(bank &1) &~mask | bank &mask;
|
||||
} else
|
||||
return VRC24_getPRGBank(bank);
|
||||
}
|
||||
|
||||
static DECLFR (readPRG) {
|
||||
return CartBR(reg &8? (A &~3 | dip &3): A);
|
||||
return CartBR(reg &0x08? (A &~0x03 | pad &0x03): A);
|
||||
}
|
||||
|
||||
static DECLFW (writeReg) {
|
||||
if (~reg &1) {
|
||||
if (~reg &0x01) {
|
||||
reg = A &0xFF;
|
||||
sync();
|
||||
}
|
||||
@@ -62,21 +55,23 @@ static DECLFW (writeReg) {
|
||||
|
||||
static void power (void) {
|
||||
reg = 0;
|
||||
dip = 0;
|
||||
pad = 0;
|
||||
VRC24_power();
|
||||
SetReadHandler(0x8000, 0xFFFF, readPRG);
|
||||
if (submapper == 0) SetReadHandler(0x8000, 0xFFFF, readPRG);
|
||||
}
|
||||
|
||||
static void reset (void) {
|
||||
reg = 0;
|
||||
dip++;
|
||||
sync();
|
||||
pad++;
|
||||
VRC24_clear();
|
||||
}
|
||||
|
||||
void Mapper447_Init (CartInfo *info) {
|
||||
submapper = info->submapper;
|
||||
VRC4_init(info, sync, 0x04, 0x08, 0, getPRGBank, NULL, NULL, writeReg, NULL );
|
||||
WRAM_init(info, 2);
|
||||
info->Power = power;
|
||||
info->Reset = reset;
|
||||
AddExState(stateRegs, ~0, 0, 0);
|
||||
AddExState(®, 1, 0, "EXPR");
|
||||
if (submapper == 0) AddExState(&pad, 1, 0, "DIPS");
|
||||
}
|
||||
|
||||
@@ -878,7 +878,7 @@ INES_BOARD_BEGIN()
|
||||
INES_BOARD( "NC-7000M/NC-8000M", 444, Mapper444_Init )
|
||||
INES_BOARD( "DG574B", 445, Mapper445_Init )
|
||||
INES_BOARD( "SMD172B_FPGA", 446, Mapper446_Init )
|
||||
INES_BOARD( "KL-06", 447, Mapper447_Init )
|
||||
INES_BOARD( "KL-06/GC007", 447, Mapper447_Init )
|
||||
INES_BOARD( "830768C", 448, Mapper448_Init )
|
||||
INES_BOARD( "22-in-1 King Series", 449, Mapper449_Init )
|
||||
INES_BOARD( "晶太 YY841157C", 450, Mapper450_Init )
|
||||
|
||||
Reference in New Issue
Block a user