GBHawk: Fix Airaki
This commit is contained in:
parent
e8145af463
commit
073d36e40f
|
@ -108,6 +108,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
public byte AUD_CTRL_vol_R;
|
||||
|
||||
public int sequencer_len, sequencer_vol, sequencer_swp, sequencer_tick;
|
||||
public bool timer_bit_old;
|
||||
|
||||
public byte sample;
|
||||
|
||||
|
@ -726,12 +727,16 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
master_audio_clock++;
|
||||
|
||||
// frame sequencer ticks at a rate of 512 hz (or every time a 13 bit counter rolls over)
|
||||
sequencer_tick++;
|
||||
// the sequencer is actually the timer DIV register
|
||||
// so if it's constantly written to, these values won't update
|
||||
//sequencer_tick++;
|
||||
|
||||
if (sequencer_tick == 8192)
|
||||
//if (sequencer_tick == 8192)
|
||||
bool check = Core.double_speed ? Core.timer.divider_reg.Bit(13) : Core.timer.divider_reg.Bit(12);
|
||||
if (check && !timer_bit_old)
|
||||
{
|
||||
sequencer_tick = 0;
|
||||
|
||||
//sequencer_tick = 0;
|
||||
|
||||
sequencer_vol++; sequencer_vol &= 0x7;
|
||||
sequencer_len++; sequencer_len &= 0x7;
|
||||
sequencer_swp++; sequencer_swp &= 0x7;
|
||||
|
@ -883,6 +888,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
}
|
||||
}
|
||||
}
|
||||
timer_bit_old = Core.double_speed ? Core.timer.divider_reg.Bit(13) : Core.timer.divider_reg.Bit(12);
|
||||
}
|
||||
|
||||
public void power_off()
|
||||
|
@ -1028,6 +1034,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
ser.Sync("sequencer_vol", ref sequencer_vol);
|
||||
ser.Sync("sequencer_swp", ref sequencer_swp);
|
||||
ser.Sync("sequencer_tick", ref sequencer_tick);
|
||||
ser.Sync("timer_bit_old", ref timer_bit_old);
|
||||
|
||||
ser.Sync("master_audio_clock", ref master_audio_clock);
|
||||
|
||||
|
|
|
@ -37,7 +37,14 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
// some of gekkio's tests require these to be accessible during DMA
|
||||
if (addr < 0x4000)
|
||||
{
|
||||
return mapper.ReadMemory(addr);
|
||||
if (ppu.DMA_addr < 0x80)
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
return mapper.ReadMemory(addr);
|
||||
}
|
||||
}
|
||||
else if ((addr >= 0xE000) && (addr < 0xF000))
|
||||
{
|
||||
|
@ -265,7 +272,14 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk
|
|||
// some of gekkio's tests require these to be accessible during DMA
|
||||
if (addr < 0x4000)
|
||||
{
|
||||
return mapper.ReadMemory(addr);
|
||||
if (ppu.DMA_addr < 0x80)
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
return mapper.ReadMemory(addr);
|
||||
}
|
||||
}
|
||||
else if ((addr >= 0xE000) && (addr < 0xF000))
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue