GBHawk: fix linking in perfect dark

This commit is contained in:
alyosha-tas 2021-11-21 11:38:23 -05:00
parent 45dec23352
commit 5d6cf748bf
1 changed files with 13 additions and 5 deletions

View File

@ -16,6 +16,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
public byte coming_in;
public bool can_pulse;
public bool IRQ_block;
public bool tranfser_complete_flag;
public byte ReadReg(int addr)
{
@ -41,9 +42,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
case 0xFF02:
if ((value & 0x1) == 1)
{
serial_bits = 8;
if (((value & 2) > 0) && Core.GBC_compat)
{
clk_rate = 16;
@ -69,14 +67,21 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
}
*/
}
can_pulse = true;
if (tranfser_complete_flag)
{
can_pulse = true;
serial_bits = 8;
tranfser_complete_flag = false;
}
}
else
{
serial_bits = 8;
clk_rate = -1;
serial_clock = clk_rate;
can_pulse = false;
can_pulse = false;
tranfser_complete_flag = true;
}
if (Core.GBC_compat)
@ -112,6 +117,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
if (serial_bits == 0)
{
serial_control &= 0x7F;
tranfser_complete_flag = true;
if (Core.REG_FFFF.Bit(3)) { Core.cpu.FlagI = true; }
Core.REG_FF0F |= 0x08;
@ -139,6 +145,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
coming_in = 1;
can_pulse = false;
IRQ_block = false;
tranfser_complete_flag = true;
}
public void SyncState(Serializer ser)
@ -152,6 +159,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
ser.Sync(nameof(coming_in), ref coming_in);
ser.Sync(nameof(can_pulse), ref can_pulse);
ser.Sync(nameof(IRQ_block), ref IRQ_block);
ser.Sync(nameof(tranfser_complete_flag), ref tranfser_complete_flag);
}
}
}