TSTHawk: Lag flag detection and InputCallbacks
This commit is contained in:
parent
75f3ef9b4e
commit
b7d743e280
|
@ -1,290 +1,309 @@
|
|||
static uint8 MDFN_FASTCALL port_rbyte(v810_timestamp_t ×tamp, uint32 A)
|
||||
{
|
||||
if(A >= 0x000 && A <= 0x0FF)
|
||||
return(FXINPUT_Read8(A, timestamp));
|
||||
else if(A >= 0x100 && A <= 0x1FF) // SOUNDBOX dummy
|
||||
{
|
||||
timestamp += 4;
|
||||
}
|
||||
else if(A >= 0x200 && A <= 0x2FF) // RAINBOW dummy
|
||||
{
|
||||
timestamp += 4;
|
||||
}
|
||||
else if(A >= 0x300 && A <= 0x3FF) // FXVCE
|
||||
{
|
||||
timestamp += 4;
|
||||
return(FXVCE_Read16(A));
|
||||
}
|
||||
else if(A >= 0x400 && A <= 0x5FF) // 0x400-0x4FF: VDC-A ; 0x500-0x5FF: VDC-B
|
||||
{
|
||||
timestamp += 4;
|
||||
return(fx_vdc_chips[(A >> 8) & 0x1]->Read16((A & 4) >> 2));
|
||||
}
|
||||
else if(A >= 0x600 && A <= 0x6FF)
|
||||
{
|
||||
timestamp += 4;
|
||||
return(KING_Read8(timestamp, A));
|
||||
}
|
||||
else if(A >= 0x700 && A <= 0x7FF)
|
||||
{
|
||||
if(!(A & 1))
|
||||
{
|
||||
FXDBG("ExBusReset B Read");
|
||||
return(ExBusReset);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
else if(A >= 0xc00 && A <= 0xCFF) // Backup memory control
|
||||
{
|
||||
switch(A & 0xC0)
|
||||
{
|
||||
case 0x80: return(BackupControl);
|
||||
case 0x00: return(Last_VDC_AR[0]);
|
||||
case 0x40: return(Last_VDC_AR[1]);
|
||||
}
|
||||
}
|
||||
else if(A >= 0xe00 && A <= 0xeff)
|
||||
{
|
||||
return(PCFXIRQ_Read8(A));
|
||||
}
|
||||
else if(A >= 0xf00 && A <= 0xfff)
|
||||
{
|
||||
return(FXTIMER_Read8(A, timestamp));
|
||||
}
|
||||
else if((A & 0x7FFFFFFF) >= 0x500000 && (A & 0x7FFFFFFF) <= 0x52ffff)
|
||||
{
|
||||
if(WantHuC6273)
|
||||
return(HuC6273_Read8(A));
|
||||
}
|
||||
else if(FXSCSIROM && A >= 0x780000 && A <= 0x7FFFFF)
|
||||
{
|
||||
return(FXSCSIROM[A & 0x7FFFF]);
|
||||
}
|
||||
else if(FXSCSIROM && A >= 0x600000 && A <= 0x6FFFFF)
|
||||
{
|
||||
return(FXSCSI_CtrlRead(A));
|
||||
}
|
||||
FXDBG("Unknown 8-bit port read: %08x", A);
|
||||
if (A >= 0x000 && A <= 0x0FF)
|
||||
{
|
||||
Lagged = false;
|
||||
if (InputCallback)
|
||||
InputCallback();
|
||||
return (FXINPUT_Read8(A, timestamp));
|
||||
}
|
||||
else if (A >= 0x100 && A <= 0x1FF) // SOUNDBOX dummy
|
||||
{
|
||||
timestamp += 4;
|
||||
}
|
||||
else if (A >= 0x200 && A <= 0x2FF) // RAINBOW dummy
|
||||
{
|
||||
timestamp += 4;
|
||||
}
|
||||
else if (A >= 0x300 && A <= 0x3FF) // FXVCE
|
||||
{
|
||||
timestamp += 4;
|
||||
return (FXVCE_Read16(A));
|
||||
}
|
||||
else if (A >= 0x400 && A <= 0x5FF) // 0x400-0x4FF: VDC-A ; 0x500-0x5FF: VDC-B
|
||||
{
|
||||
timestamp += 4;
|
||||
return (fx_vdc_chips[(A >> 8) & 0x1]->Read16((A & 4) >> 2));
|
||||
}
|
||||
else if (A >= 0x600 && A <= 0x6FF)
|
||||
{
|
||||
timestamp += 4;
|
||||
return (KING_Read8(timestamp, A));
|
||||
}
|
||||
else if (A >= 0x700 && A <= 0x7FF)
|
||||
{
|
||||
if (!(A & 1))
|
||||
{
|
||||
FXDBG("ExBusReset B Read");
|
||||
return (ExBusReset);
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
else if (A >= 0xc00 && A <= 0xCFF) // Backup memory control
|
||||
{
|
||||
switch (A & 0xC0)
|
||||
{
|
||||
case 0x80:
|
||||
return (BackupControl);
|
||||
case 0x00:
|
||||
return (Last_VDC_AR[0]);
|
||||
case 0x40:
|
||||
return (Last_VDC_AR[1]);
|
||||
}
|
||||
}
|
||||
else if (A >= 0xe00 && A <= 0xeff)
|
||||
{
|
||||
return (PCFXIRQ_Read8(A));
|
||||
}
|
||||
else if (A >= 0xf00 && A <= 0xfff)
|
||||
{
|
||||
return (FXTIMER_Read8(A, timestamp));
|
||||
}
|
||||
else if ((A & 0x7FFFFFFF) >= 0x500000 && (A & 0x7FFFFFFF) <= 0x52ffff)
|
||||
{
|
||||
if (WantHuC6273)
|
||||
return (HuC6273_Read8(A));
|
||||
}
|
||||
else if (FXSCSIROM && A >= 0x780000 && A <= 0x7FFFFF)
|
||||
{
|
||||
return (FXSCSIROM[A & 0x7FFFF]);
|
||||
}
|
||||
else if (FXSCSIROM && A >= 0x600000 && A <= 0x6FFFFF)
|
||||
{
|
||||
return (FXSCSI_CtrlRead(A));
|
||||
}
|
||||
FXDBG("Unknown 8-bit port read: %08x", A);
|
||||
|
||||
return(0x00);
|
||||
return (0x00);
|
||||
}
|
||||
|
||||
static uint16 MDFN_FASTCALL port_rhword(v810_timestamp_t ×tamp, uint32 A)
|
||||
{
|
||||
if(A >= 0x000 && A <= 0x0FF)
|
||||
return(FXINPUT_Read16(A, timestamp));
|
||||
else if(A >= 0x100 && A <= 0x1FF) // SOUNDBOX dummy
|
||||
{
|
||||
timestamp += 4;
|
||||
}
|
||||
else if(A >= 0x200 && A <= 0x2FF) // RAINBOW dummy
|
||||
{
|
||||
timestamp += 4;
|
||||
}
|
||||
else if(A >= 0x300 && A <= 0x3FF)
|
||||
{
|
||||
timestamp += 4;
|
||||
return(FXVCE_Read16(A));
|
||||
}
|
||||
else if(A >= 0x400 && A <= 0x5FF) // 0x400-0x4FF: VDC-A ; 0x500-0x5FF: VDC-B
|
||||
{
|
||||
timestamp += 4;
|
||||
return(fx_vdc_chips[(A >> 8) & 0x1]->Read16((A & 4) >> 2));
|
||||
}
|
||||
else if(A >= 0x600 && A <= 0x6FF)
|
||||
{
|
||||
timestamp += 4;
|
||||
return(KING_Read16(timestamp, A));
|
||||
}
|
||||
else if(A >= 0x700 && A <= 0x7FF)
|
||||
{
|
||||
FXDBG("ExBusReset H Read");
|
||||
if (A >= 0x000 && A <= 0x0FF)
|
||||
{
|
||||
Lagged = false;
|
||||
if (InputCallback)
|
||||
InputCallback();
|
||||
return (FXINPUT_Read16(A, timestamp));
|
||||
}
|
||||
else if (A >= 0x100 && A <= 0x1FF) // SOUNDBOX dummy
|
||||
{
|
||||
timestamp += 4;
|
||||
}
|
||||
else if (A >= 0x200 && A <= 0x2FF) // RAINBOW dummy
|
||||
{
|
||||
timestamp += 4;
|
||||
}
|
||||
else if (A >= 0x300 && A <= 0x3FF)
|
||||
{
|
||||
timestamp += 4;
|
||||
return (FXVCE_Read16(A));
|
||||
}
|
||||
else if (A >= 0x400 && A <= 0x5FF) // 0x400-0x4FF: VDC-A ; 0x500-0x5FF: VDC-B
|
||||
{
|
||||
timestamp += 4;
|
||||
return (fx_vdc_chips[(A >> 8) & 0x1]->Read16((A & 4) >> 2));
|
||||
}
|
||||
else if (A >= 0x600 && A <= 0x6FF)
|
||||
{
|
||||
timestamp += 4;
|
||||
return (KING_Read16(timestamp, A));
|
||||
}
|
||||
else if (A >= 0x700 && A <= 0x7FF)
|
||||
{
|
||||
FXDBG("ExBusReset H Read");
|
||||
|
||||
return(ExBusReset);
|
||||
}
|
||||
else if(A >= 0xc00 && A <= 0xCFF) // Backup memory control
|
||||
{
|
||||
switch(A & 0xC0)
|
||||
{
|
||||
case 0x80: return(BackupControl);
|
||||
case 0x00: return(Last_VDC_AR[0]);
|
||||
case 0x40: return(Last_VDC_AR[1]);
|
||||
}
|
||||
}
|
||||
else if(A >= 0xe00 && A <= 0xeff)
|
||||
{
|
||||
return(PCFXIRQ_Read16(A));
|
||||
}
|
||||
else if(A >= 0xf00 && A <= 0xfff)
|
||||
{
|
||||
return(FXTIMER_Read16(A, timestamp));
|
||||
}
|
||||
else if((A & 0x7FFFFFFF) >= 0x500000 && (A & 0x7FFFFFFF) <= 0x52ffff)
|
||||
{
|
||||
if(WantHuC6273)
|
||||
return(HuC6273_Read16(A));
|
||||
}
|
||||
else if(FXSCSIROM && A >= 0x780000 && A <= 0x7FFFFF)
|
||||
{
|
||||
return MDFN_de16lsb<true>(&FXSCSIROM[A & 0x7FFFF]);
|
||||
}
|
||||
else if(FXSCSIROM && A >= 0x600000 && A <= 0x6FFFFF)
|
||||
{
|
||||
puts("FXSCSI 16-bit:");
|
||||
return(FXSCSI_CtrlRead(A));
|
||||
}
|
||||
return (ExBusReset);
|
||||
}
|
||||
else if (A >= 0xc00 && A <= 0xCFF) // Backup memory control
|
||||
{
|
||||
switch (A & 0xC0)
|
||||
{
|
||||
case 0x80:
|
||||
return (BackupControl);
|
||||
case 0x00:
|
||||
return (Last_VDC_AR[0]);
|
||||
case 0x40:
|
||||
return (Last_VDC_AR[1]);
|
||||
}
|
||||
}
|
||||
else if (A >= 0xe00 && A <= 0xeff)
|
||||
{
|
||||
return (PCFXIRQ_Read16(A));
|
||||
}
|
||||
else if (A >= 0xf00 && A <= 0xfff)
|
||||
{
|
||||
return (FXTIMER_Read16(A, timestamp));
|
||||
}
|
||||
else if ((A & 0x7FFFFFFF) >= 0x500000 && (A & 0x7FFFFFFF) <= 0x52ffff)
|
||||
{
|
||||
if (WantHuC6273)
|
||||
return (HuC6273_Read16(A));
|
||||
}
|
||||
else if (FXSCSIROM && A >= 0x780000 && A <= 0x7FFFFF)
|
||||
{
|
||||
return MDFN_de16lsb<true>(&FXSCSIROM[A & 0x7FFFF]);
|
||||
}
|
||||
else if (FXSCSIROM && A >= 0x600000 && A <= 0x6FFFFF)
|
||||
{
|
||||
puts("FXSCSI 16-bit:");
|
||||
return (FXSCSI_CtrlRead(A));
|
||||
}
|
||||
|
||||
FXDBG("Unknown 16-bit port read: %08x", A);
|
||||
FXDBG("Unknown 16-bit port read: %08x", A);
|
||||
|
||||
return(0x00);
|
||||
return (0x00);
|
||||
}
|
||||
|
||||
static void MDFN_FASTCALL port_wbyte(v810_timestamp_t ×tamp, uint32 A, uint8 V)
|
||||
{
|
||||
if(A >= 0x000 && A <= 0x0FF)
|
||||
FXINPUT_Write8(A, V, timestamp);
|
||||
else if(A >= 0x100 && A <= 0x1FF)
|
||||
{
|
||||
timestamp += 2;
|
||||
SoundBox_Write(A, V, timestamp);
|
||||
}
|
||||
else if(A >= 0x200 && A <= 0x2FF)
|
||||
{
|
||||
timestamp += 2;
|
||||
RAINBOW_Write8(A, V);
|
||||
}
|
||||
else if(A >= 0x300 && A <= 0x3FF) // FXVCE
|
||||
{
|
||||
timestamp += 2;
|
||||
FXVCE_Write16(A, V);
|
||||
}
|
||||
else if(A >= 0x400 && A <= 0x5FF) // 0x400-0x4FF: VDC-A ; 0x500-0x5FF: VDC-B
|
||||
{
|
||||
timestamp += 2;
|
||||
if (A >= 0x000 && A <= 0x0FF)
|
||||
FXINPUT_Write8(A, V, timestamp);
|
||||
else if (A >= 0x100 && A <= 0x1FF)
|
||||
{
|
||||
timestamp += 2;
|
||||
SoundBox_Write(A, V, timestamp);
|
||||
}
|
||||
else if (A >= 0x200 && A <= 0x2FF)
|
||||
{
|
||||
timestamp += 2;
|
||||
RAINBOW_Write8(A, V);
|
||||
}
|
||||
else if (A >= 0x300 && A <= 0x3FF) // FXVCE
|
||||
{
|
||||
timestamp += 2;
|
||||
FXVCE_Write16(A, V);
|
||||
}
|
||||
else if (A >= 0x400 && A <= 0x5FF) // 0x400-0x4FF: VDC-A ; 0x500-0x5FF: VDC-B
|
||||
{
|
||||
timestamp += 2;
|
||||
|
||||
if(!(A & 4))
|
||||
Last_VDC_AR[(A >> 8) & 0x1] = V;
|
||||
if (!(A & 4))
|
||||
Last_VDC_AR[(A >> 8) & 0x1] = V;
|
||||
|
||||
fx_vdc_chips[(A >> 8) & 0x1]->Write16((A & 4) >> 2, V);
|
||||
}
|
||||
else if(A >= 0x600 && A <= 0x6FF)
|
||||
{
|
||||
timestamp += 2;
|
||||
KING_Write8(timestamp, A, V);
|
||||
}
|
||||
else if(A >= 0x700 && A <= 0x7FF)
|
||||
{
|
||||
if(!(A & 1))
|
||||
{
|
||||
FXDBG("ExBusReset B Write: %02x", V & 1);
|
||||
ExBusReset = V & 1;
|
||||
}
|
||||
}
|
||||
else if(A >= 0xc00 && A <= 0xCFF)
|
||||
{
|
||||
switch(A & 0xC1)
|
||||
{
|
||||
case 0x80: BackupControl = V & 0x3;
|
||||
break;
|
||||
fx_vdc_chips[(A >> 8) & 0x1]->Write16((A & 4) >> 2, V);
|
||||
}
|
||||
else if (A >= 0x600 && A <= 0x6FF)
|
||||
{
|
||||
timestamp += 2;
|
||||
KING_Write8(timestamp, A, V);
|
||||
}
|
||||
else if (A >= 0x700 && A <= 0x7FF)
|
||||
{
|
||||
if (!(A & 1))
|
||||
{
|
||||
FXDBG("ExBusReset B Write: %02x", V & 1);
|
||||
ExBusReset = V & 1;
|
||||
}
|
||||
}
|
||||
else if (A >= 0xc00 && A <= 0xCFF)
|
||||
{
|
||||
switch (A & 0xC1)
|
||||
{
|
||||
case 0x80:
|
||||
BackupControl = V & 0x3;
|
||||
break;
|
||||
|
||||
default: FXDBG("Port 8-bit write: %08x %02x", A, V);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(A >= 0xe00 && A <= 0xeff)
|
||||
{
|
||||
FXDBG("IRQ write8: %08x %02x", A, V);
|
||||
PCFXIRQ_Write16(A, V);
|
||||
}
|
||||
else if((A & 0x7FFFFFFF) >= 0x500000 && (A & 0x7FFFFFFF) <= 0x52ffff)
|
||||
{
|
||||
if(WantHuC6273)
|
||||
HuC6273_Write16(A, V);
|
||||
}
|
||||
else if(FXSCSIROM && A >= 0x600000 && A <= 0x6FFFFF)
|
||||
{
|
||||
FXSCSI_CtrlWrite(A, V);
|
||||
}
|
||||
else
|
||||
{
|
||||
FXDBG("Port 8-bit write: %08x %02x", A, V);
|
||||
}
|
||||
default:
|
||||
FXDBG("Port 8-bit write: %08x %02x", A, V);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (A >= 0xe00 && A <= 0xeff)
|
||||
{
|
||||
FXDBG("IRQ write8: %08x %02x", A, V);
|
||||
PCFXIRQ_Write16(A, V);
|
||||
}
|
||||
else if ((A & 0x7FFFFFFF) >= 0x500000 && (A & 0x7FFFFFFF) <= 0x52ffff)
|
||||
{
|
||||
if (WantHuC6273)
|
||||
HuC6273_Write16(A, V);
|
||||
}
|
||||
else if (FXSCSIROM && A >= 0x600000 && A <= 0x6FFFFF)
|
||||
{
|
||||
FXSCSI_CtrlWrite(A, V);
|
||||
}
|
||||
else
|
||||
{
|
||||
FXDBG("Port 8-bit write: %08x %02x", A, V);
|
||||
}
|
||||
}
|
||||
|
||||
static void MDFN_FASTCALL port_whword(v810_timestamp_t ×tamp, uint32 A, uint16 V)
|
||||
{
|
||||
if(A >= 0x000 && A <= 0x0FF)
|
||||
FXINPUT_Write16(A, V, timestamp);
|
||||
else if(A >= 0x100 && A <= 0x1FF)
|
||||
{
|
||||
timestamp += 2;
|
||||
SoundBox_Write(A, V, timestamp);
|
||||
}
|
||||
else if(A >= 0x200 && A <= 0x2FF)
|
||||
{
|
||||
timestamp += 2;
|
||||
RAINBOW_Write16(A, V);
|
||||
}
|
||||
else if(A >= 0x300 && A <= 0x3FF)
|
||||
{
|
||||
timestamp += 2;
|
||||
FXVCE_Write16(A, V);
|
||||
}
|
||||
else if(A >= 0x400 && A <= 0x5FF) // 0x400-0x4FF: VDC-A ; 0x500-0x5FF: VDC-B
|
||||
{
|
||||
timestamp += 2;
|
||||
if (A >= 0x000 && A <= 0x0FF)
|
||||
FXINPUT_Write16(A, V, timestamp);
|
||||
else if (A >= 0x100 && A <= 0x1FF)
|
||||
{
|
||||
timestamp += 2;
|
||||
SoundBox_Write(A, V, timestamp);
|
||||
}
|
||||
else if (A >= 0x200 && A <= 0x2FF)
|
||||
{
|
||||
timestamp += 2;
|
||||
RAINBOW_Write16(A, V);
|
||||
}
|
||||
else if (A >= 0x300 && A <= 0x3FF)
|
||||
{
|
||||
timestamp += 2;
|
||||
FXVCE_Write16(A, V);
|
||||
}
|
||||
else if (A >= 0x400 && A <= 0x5FF) // 0x400-0x4FF: VDC-A ; 0x500-0x5FF: VDC-B
|
||||
{
|
||||
timestamp += 2;
|
||||
|
||||
if(!(A & 4))
|
||||
Last_VDC_AR[(A >> 8) & 0x1] = V;
|
||||
if (!(A & 4))
|
||||
Last_VDC_AR[(A >> 8) & 0x1] = V;
|
||||
|
||||
fx_vdc_chips[(A >> 8) & 0x1]->Write16((A & 4) >> 2, V);
|
||||
}
|
||||
else if(A >= 0x600 && A <= 0x6FF)
|
||||
{
|
||||
timestamp += 2;
|
||||
KING_Write16(timestamp, A, V);
|
||||
}
|
||||
else if(A >= 0x700 && A <= 0x7FF)
|
||||
{
|
||||
ExBusReset = V & 1;
|
||||
FXDBG("ExBusReset H Write: %04x", V);
|
||||
}
|
||||
else if(A >= 0x800 && A <= 0x8FF) // ?? LIP writes here
|
||||
{
|
||||
FXDBG("Port 16-bit write: %08x %04x", A, V);
|
||||
}
|
||||
else if(A >= 0xc00 && A <= 0xCFF)
|
||||
{
|
||||
switch(A & 0xC0)
|
||||
{
|
||||
case 0x80: BackupControl = V & 0x3;
|
||||
break;
|
||||
fx_vdc_chips[(A >> 8) & 0x1]->Write16((A & 4) >> 2, V);
|
||||
}
|
||||
else if (A >= 0x600 && A <= 0x6FF)
|
||||
{
|
||||
timestamp += 2;
|
||||
KING_Write16(timestamp, A, V);
|
||||
}
|
||||
else if (A >= 0x700 && A <= 0x7FF)
|
||||
{
|
||||
ExBusReset = V & 1;
|
||||
FXDBG("ExBusReset H Write: %04x", V);
|
||||
}
|
||||
else if (A >= 0x800 && A <= 0x8FF) // ?? LIP writes here
|
||||
{
|
||||
FXDBG("Port 16-bit write: %08x %04x", A, V);
|
||||
}
|
||||
else if (A >= 0xc00 && A <= 0xCFF)
|
||||
{
|
||||
switch (A & 0xC0)
|
||||
{
|
||||
case 0x80:
|
||||
BackupControl = V & 0x3;
|
||||
break;
|
||||
|
||||
default: FXDBG("Port 16-bit write: %08x %04x", A, V);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(A >= 0xe00 && A <= 0xeff)
|
||||
{
|
||||
PCFXIRQ_Write16(A, V);
|
||||
}
|
||||
else if(A >= 0xF00 && A <= 0xFFF)
|
||||
{
|
||||
FXTIMER_Write16(A, V, timestamp);
|
||||
}
|
||||
else if((A & 0x7FFFFFFF) >= 0x500000 && (A & 0x7FFFFFFF) <= 0x52ffff)
|
||||
{
|
||||
if(WantHuC6273)
|
||||
HuC6273_Write16(A, V);
|
||||
}
|
||||
else if(FXSCSIROM && A >= 0x600000 && A <= 0x6FFFFF)
|
||||
{
|
||||
puts("FXSCSI 16-bit:");
|
||||
FXSCSI_CtrlWrite(A, V);
|
||||
}
|
||||
else
|
||||
{
|
||||
FXDBG("Port 16-bit write: %08x %04x", A, V);
|
||||
}
|
||||
default:
|
||||
FXDBG("Port 16-bit write: %08x %04x", A, V);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (A >= 0xe00 && A <= 0xeff)
|
||||
{
|
||||
PCFXIRQ_Write16(A, V);
|
||||
}
|
||||
else if (A >= 0xF00 && A <= 0xFFF)
|
||||
{
|
||||
FXTIMER_Write16(A, V, timestamp);
|
||||
}
|
||||
else if ((A & 0x7FFFFFFF) >= 0x500000 && (A & 0x7FFFFFFF) <= 0x52ffff)
|
||||
{
|
||||
if (WantHuC6273)
|
||||
HuC6273_Write16(A, V);
|
||||
}
|
||||
else if (FXSCSIROM && A >= 0x600000 && A <= 0x6FFFFF)
|
||||
{
|
||||
puts("FXSCSI 16-bit:");
|
||||
FXSCSI_CtrlWrite(A, V);
|
||||
}
|
||||
else
|
||||
{
|
||||
FXDBG("Port 16-bit write: %08x %04x", A, V);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -69,6 +69,9 @@ static uint16 BackupControl;
|
|||
static uint8 BackupRAM[0x8000], ExBackupRAM[0x8000];
|
||||
static uint8 ExBusReset; // I/O Register at 0x0700
|
||||
|
||||
static bool Lagged;
|
||||
static void (*InputCallback)();
|
||||
|
||||
// Checks to see if this main-RAM-area access
|
||||
// is in the same DRAM page as the last access.
|
||||
#define RAMLPCHECK \
|
||||
|
@ -707,7 +710,7 @@ EXPORT void FrameAdvance(MyFrameInfo& f)
|
|||
{
|
||||
for (int i = 0; i < 2; i++)
|
||||
InputData[i] = f.Buttons[i];
|
||||
|
||||
Lagged = true;
|
||||
uint32_t ConsoleButtons = f.Buttons[2];
|
||||
int NewActiveDisk = ActiveDisk;
|
||||
#define ROSE(n) ((ConsoleButtons & 1 << (n)) > (PrevConsoleButtons & 1 << (n)))
|
||||
|
@ -733,6 +736,7 @@ EXPORT void FrameAdvance(MyFrameInfo& f)
|
|||
f.Width = Ess.w;
|
||||
f.Height = Ess.h;
|
||||
f.Samples = Ess.SoundBufSize;
|
||||
f.Lagged = Lagged;
|
||||
|
||||
const uint32_t* src = FrameBuffer;
|
||||
uint32_t* dst = f.VideoBuffer;
|
||||
|
@ -797,7 +801,7 @@ EXPORT void EnableLayers(int mask)
|
|||
|
||||
EXPORT void SetInputCallback(void (*callback)())
|
||||
{
|
||||
// TODO
|
||||
InputCallback = callback;
|
||||
}
|
||||
|
||||
// settings
|
||||
|
|
Loading…
Reference in New Issue