Added mapper 367, cleaned up mapper 205.
This commit is contained in:
committed by
LibretroAdmin
parent
9bb3cae0bb
commit
a65c3b26fc
@@ -21,7 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* Code for emulating iNES mappers 4,12,44,45,47,49,52,74,114,115,116,118,
|
/* Code for emulating iNES mappers 4,12,44,45,47,49,52,74,114,115,116,118,
|
||||||
119,165,205,245,249,250,254,555
|
119,165,205,245,249,250,254,361,366,367,555
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "mapinc.h"
|
#include "mapinc.h"
|
||||||
@@ -1220,57 +1220,64 @@ void Mapper198_Init(CartInfo *info) {
|
|||||||
info->Power = M198Power;
|
info->Power = M198Power;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---------------------------- Mapper 205 ------------------------------ */
|
/* ---------------------------- Mapper 205,367 ------------------------------ */
|
||||||
/* UNIF boardname BMC-JC-016-2
|
/* UNIF boardname BMC-JC-016-2
|
||||||
https://wiki.nesdev.com/w/index.php/INES_Mapper_205 */
|
https://wiki.nesdev.com/w/index.php/INES_Mapper_205 */
|
||||||
|
|
||||||
static void M205PW(uint32 A, uint8 V) {
|
static void M205_367PW(uint32 A, uint8 V) {
|
||||||
uint8 bank = V & ((EXPREGS[0] & 0x02) ? 0x0F : 0x1F);
|
uint8 bank = V & ((EXPREGS[0] & 0x02) ? 0x0F : 0x1F);
|
||||||
setprg8(A, EXPREGS[0] << 4 | bank);
|
setprg8(A, EXPREGS[0] << 4 | bank);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void M205CW(uint32 A, uint8 V) {
|
static void M205_367CW(uint32 A, uint8 V) {
|
||||||
uint8 bank = V & ((EXPREGS[0] & 0x02) ? 0x7F : 0xFF);
|
uint8 bank = V & ((EXPREGS[0] & 0x02) ? 0x7F : 0xFF);
|
||||||
setchr1(A, (EXPREGS[0] << 7) | bank);
|
setchr1(A, (EXPREGS[0] << 7) | bank);
|
||||||
}
|
}
|
||||||
|
|
||||||
static DECLFW(M205Write0) {
|
static DECLFW(M205Write) {
|
||||||
if (EXPREGS[1] == 0) {
|
EXPREGS[0] = V;
|
||||||
EXPREGS[0] = V & 0x03;
|
FixMMC3PRG(MMC3_cmd);
|
||||||
EXPREGS[1] = A & 0x80;
|
FixMMC3CHR(MMC3_cmd);
|
||||||
FixMMC3PRG(MMC3_cmd);
|
|
||||||
FixMMC3CHR(MMC3_cmd);
|
|
||||||
} else
|
|
||||||
CartBW(A, V);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static DECLFW(M205Write1) {
|
static DECLFW(M367Write) {
|
||||||
if (EXPREGS[1] == 0) {
|
EXPREGS[0] = A &0xFF;
|
||||||
EXPREGS[0] = V & 0xF0;
|
FixMMC3PRG(MMC3_cmd);
|
||||||
FixMMC3PRG(MMC3_cmd);
|
FixMMC3CHR(MMC3_cmd);
|
||||||
FixMMC3CHR(MMC3_cmd);
|
|
||||||
} else
|
|
||||||
CartBW(A, V);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void M205Reset(void) {
|
static void M205_367Reset(void) {
|
||||||
EXPREGS[0] = EXPREGS[1] = 0;
|
EXPREGS[0] = 0;
|
||||||
MMC3RegReset();
|
MMC3RegReset();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void M205Power(void) {
|
static void M205Power(void) {
|
||||||
EXPREGS[0] = EXPREGS[1] = 0;
|
EXPREGS[0] = 0;
|
||||||
GenMMC3Power();
|
GenMMC3Power();
|
||||||
SetWriteHandler(0x6000, 0x6fff, M205Write0);
|
SetWriteHandler(0x6000, 0x7fff, M205Write);
|
||||||
SetWriteHandler(0x7000, 0x7fff, M205Write1); /* OK-411 boards, the same logic, but data latched, 2-in-1 frankenstein */
|
}
|
||||||
|
|
||||||
|
static void M367Power(void) {
|
||||||
|
EXPREGS[0] = 0;
|
||||||
|
GenMMC3Power();
|
||||||
|
SetWriteHandler(0x6000, 0x7fff, M367Write);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Mapper205_Init(CartInfo *info) {
|
void Mapper205_Init(CartInfo *info) {
|
||||||
GenMMC3_Init(info, 256, 128, 8, 0);
|
GenMMC3_Init(info, 256, 128, 8, 0);
|
||||||
pwrap = M205PW;
|
pwrap = M205_367PW;
|
||||||
cwrap = M205CW;
|
cwrap = M205_367CW;
|
||||||
info->Power = M205Power;
|
info->Power = M205Power;
|
||||||
info->Reset = M205Reset;
|
info->Reset = M205_367Reset;
|
||||||
|
AddExState(EXPREGS, 1, 0, "EXPR");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Mapper367_Init(CartInfo *info) {
|
||||||
|
GenMMC3_Init(info, 256, 128, 8, 0);
|
||||||
|
pwrap = M205_367PW;
|
||||||
|
cwrap = M205_367CW;
|
||||||
|
info->Power = M367Power;
|
||||||
|
info->Reset = M205_367Reset;
|
||||||
AddExState(EXPREGS, 1, 0, "EXPR");
|
AddExState(EXPREGS, 1, 0, "EXPR");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -774,6 +774,7 @@ INES_BOARD_BEGIN()
|
|||||||
INES_BOARD( "830506C", 362, Mapper362_Init )
|
INES_BOARD( "830506C", 362, Mapper362_Init )
|
||||||
INES_BOARD( "JY830832C", 364, Mapper364_Init )
|
INES_BOARD( "JY830832C", 364, Mapper364_Init )
|
||||||
INES_BOARD( "GN-45", 366, GN45_Init )
|
INES_BOARD( "GN-45", 366, GN45_Init )
|
||||||
|
INES_BOARD( "JC-016-2 variant", 367, Mapper367_Init )
|
||||||
INES_BOARD( "Yung-08", 368, Mapper368_Init )
|
INES_BOARD( "Yung-08", 368, Mapper368_Init )
|
||||||
INES_BOARD( "N49C-300", 369, Mapper369_Init )
|
INES_BOARD( "N49C-300", 369, Mapper369_Init )
|
||||||
INES_BOARD( "Golden Mario Party II - Around the World 6-in-1", 370, Mapper370_Init )
|
INES_BOARD( "Golden Mario Party II - Around the World 6-in-1", 370, Mapper370_Init )
|
||||||
|
|||||||
@@ -286,6 +286,7 @@ void Mapper359_Init(CartInfo *);
|
|||||||
void Mapper360_Init(CartInfo *);
|
void Mapper360_Init(CartInfo *);
|
||||||
void Mapper362_Init(CartInfo *);
|
void Mapper362_Init(CartInfo *);
|
||||||
void Mapper364_Init(CartInfo *);
|
void Mapper364_Init(CartInfo *);
|
||||||
|
void Mapper367_Init(CartInfo *);
|
||||||
void Mapper368_Init(CartInfo *);
|
void Mapper368_Init(CartInfo *);
|
||||||
void Mapper369_Init(CartInfo *);
|
void Mapper369_Init(CartInfo *);
|
||||||
void Mapper370_Init(CartInfo *);
|
void Mapper370_Init(CartInfo *);
|
||||||
|
|||||||
Reference in New Issue
Block a user