Backport r180 and r181 - EH8813A fixes
[r180] UNIF EH8813A - fixed inplementation [r181] UNIF EH8813A - hw switch added
This commit is contained in:
@@ -21,17 +21,18 @@
|
||||
#include "mapinc.h"
|
||||
|
||||
static uint16 addrlatch;
|
||||
static uint8 datalatch;
|
||||
static uint8 datalatch, hw_mode;
|
||||
|
||||
static SFORMAT StateRegs[] =
|
||||
{
|
||||
{ &addrlatch, 2, "ADRL" },
|
||||
{ &datalatch, 1, "DATL" },
|
||||
{ &hw_mode, 1, "HWMO" },
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
static void Sync(void) {
|
||||
uint8 prg = (addrlatch & 7) | ((addrlatch & 0x40) >> 3);
|
||||
uint8 prg = (addrlatch & 7);
|
||||
setchr8(datalatch);
|
||||
if(addrlatch & 0x80) {
|
||||
setprg16(0x8000,prg);
|
||||
@@ -50,15 +51,23 @@ static DECLFW(EH8813AWrite) {
|
||||
Sync();
|
||||
}
|
||||
|
||||
static DECLFR(EH8813ARead) {
|
||||
if (addrlatch & 0x40)
|
||||
A= (A & 0xFFF0) + hw_mode;
|
||||
return CartBR(A);
|
||||
}
|
||||
|
||||
static void EH8813APower(void) {
|
||||
addrlatch = datalatch = 0;
|
||||
addrlatch = datalatch = hw_mode = 0;
|
||||
Sync();
|
||||
SetReadHandler(0x8000, 0xFFFF, CartBR);
|
||||
SetReadHandler(0x8000, 0xFFFF, EH8813ARead);
|
||||
SetWriteHandler(0x8000, 0xFFFF, EH8813AWrite);
|
||||
}
|
||||
|
||||
static void EH8813AReset(void) {
|
||||
addrlatch = datalatch = 0;
|
||||
hw_mode = (hw_mode + 1) & 0xF;
|
||||
FCEU_printf("Hardware Switch is %01X\n", hw_mode);
|
||||
Sync();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user