Files
ci-libretro-fceumm/src/boards/468_lf36.h
NewRisingSun 07284ca4af Add mapper 468
2022-12-30 23:56:50 +01:00

47 lines
983 B
C

#define LF36_prg regByte[0]
#define LF36_irq regByte[1]
#define LF36_counter regWord[0]
static void LF36_sync () {
int OR =prgOR | mapperFlags &0x08;
setprg8(0x8000, 0x04 | OR);
setprg8(0xA000, 0x05 | OR);
setprg8(0xC000, LF36_prg &0x07 | OR);
setprg8(0xE000, 0x07 | OR);
setchr8(0);
setmirror(mapperFlags &4? MI_H: MI_V);
}
static DECLFW(LF36_writeReg) {
switch (A &0xE000) {
case 0x8000: LF36_irq =0; break;
case 0xA000: LF36_irq =1; break;
case 0XE000: LF36_prg =V; sync(); break;
}
}
static void FP_FASTAPASS(1) LF36_cpuCycle(int a) {
while (a--) {
if (LF36_irq) {
if (++LF36_counter &0x1000)
X6502_IRQBegin(FCEU_IQEXT);
else
X6502_IRQEnd(FCEU_IQEXT);
} else {
X6502_IRQEnd(FCEU_IQEXT);
LF36_counter =0;
}
}
}
void LF36_reset(uint8 clearRegs) {
sync =LF36_sync;
MapIRQHook =LF36_cpuCycle;
SetWriteHandler(0x8000, 0xFFFF, LF36_writeReg);
sync();
}
#undef LF36_prg
#undef LF36_irq
#undef LF36_counter