diff --git a/src/boards/addrlatch.c b/src/boards/addrlatch.c index dda64dd..836e7a8 100644 --- a/src/boards/addrlatch.c +++ b/src/boards/addrlatch.c @@ -757,3 +757,21 @@ static void M435Sync(void) { void Mapper435_Init(CartInfo *info) { Latch_Init(info, M435Sync, NULL, 0x0000, 0x8000, 0xFFFF, 1); } + +/*------------------ Map 464 ---------------------------*/ +static void M464Sync(void) { + int p =latche >>7; + int c =latche &0x1F; + if (latche &0x40) { + setprg32(0x8000, p >> 1); + } else { + setprg16(0x8000, p); + setprg16(0xC000, p); + } + setchr8(c); + setmirror(latche &0x20? MI_H: MI_V); +} + +void Mapper464_Init(CartInfo *info) { + Latch_Init(info, M464Sync, NULL, 0x0000, 0x8000, 0xFFFF, 1); +} diff --git a/src/ines.c b/src/ines.c index 1d7f0b2..ce3791e 100644 --- a/src/ines.c +++ b/src/ines.c @@ -821,6 +821,7 @@ INES_BOARD_BEGIN() INES_BOARD( "DS-9-27", 452, Mapper452_Init ) INES_BOARD( "K6C3001A", 456, Mapper456_Init ) INES_BOARD( "YH810X1", 463, Mapper463_Init ) + INES_BOARD( "NTDEC 9012", 464, Mapper464_Init ) INES_BOARD( "Keybyte Computer", 466, Mapper466_Init ) INES_BOARD( "47-2", 467, Mapper467_Init ) INES_BOARD( "SA-9602B", 513, SA9602B_Init ) diff --git a/src/ines.h b/src/ines.h index 8a6d505..2a489cf 100644 --- a/src/ines.h +++ b/src/ines.h @@ -329,6 +329,7 @@ void Mapper444_Init(CartInfo *); void Mapper452_Init(CartInfo *); void Mapper456_Init(CartInfo *); void Mapper463_Init(CartInfo *); +void Mapper464_Init(CartInfo *); void Mapper466_Init(CartInfo *); void Mapper467_Init(CartInfo *); void Mapper516_Init(CartInfo *);