diff --git a/libsnes/bsnes/snes/alt/ppu-compatibility/ppu.cpp b/libsnes/bsnes/snes/alt/ppu-compatibility/ppu.cpp index 3dcd5546ec..6e36e69181 100644 --- a/libsnes/bsnes/snes/alt/ppu-compatibility/ppu.cpp +++ b/libsnes/bsnes/snes/alt/ppu-compatibility/ppu.cpp @@ -350,6 +350,17 @@ void PPU::reset() { PPUcounter::reset(); memset(surface, 0, 512 * 512 * sizeof(uint32)); + //zero 01-dec-2012 - gotta reset these sometime, somewhere + memset(oam_itemlist, 0, sizeof(oam_itemlist)); + memset(oam_tilelist, 0, sizeof(oam_tilelist)); + memset(oam_line_pal, 0, sizeof(oam_line_pal)); + memset(oam_line_pri, 0, sizeof(oam_line_pri)); + active_sprite = sprite_list_valid = 0; + memset(bg_info, 0, sizeof(bg_info)); + memset(window, 0, sizeof(window)); + memset(pixel_cache, 0, sizeof(pixel_cache)); + regs.oam_tilecount = regs.oam_itemcount = 0; + frame(); //$2100 diff --git a/libsnes/bsnes/snes/cpu/cpu.cpp b/libsnes/bsnes/snes/cpu/cpu.cpp index 05e066d48a..4561bee804 100644 --- a/libsnes/bsnes/snes/cpu/cpu.cpp +++ b/libsnes/bsnes/snes/cpu/cpu.cpp @@ -124,6 +124,10 @@ void CPU::power() { mmio_power(); dma_power(); timing_power(); + + //zero 01-dec-2012 + //gotta clear these to something, sometime + aa.d = rd.d = sp = dp = 0; } void CPU::reset() { diff --git a/libsnes/bsnes/snes/dsp/dsp.cpp b/libsnes/bsnes/snes/dsp/dsp.cpp index dd51a32bca..69011aada1 100644 --- a/libsnes/bsnes/snes/dsp/dsp.cpp +++ b/libsnes/bsnes/snes/dsp/dsp.cpp @@ -223,6 +223,10 @@ void DSP::write(uint8 addr, uint8 data) { void DSP::power() { memset(&state.regs, 0, sizeof state.regs); + + //zero 01-dec-2012 - gotta reset these sometime, somewhere + state.echo_hist[0] = state.echo_hist[1] = 0; + state.echo_hist_pos = 0; state.every_other_sample = false; state.kon = 0; diff --git a/libsnes/bsnes/snes/smp/smp.cpp b/libsnes/bsnes/snes/smp/smp.cpp index 90cfb1fb75..3a0aa6b8d1 100644 --- a/libsnes/bsnes/snes/smp/smp.cpp +++ b/libsnes/bsnes/snes/smp/smp.cpp @@ -49,6 +49,10 @@ void SMP::power() { timer0.target = 0; timer1.target = 0; timer2.target = 0; + + //zero 01-dec-2012 + //gotta clear these to something, sometime + dp.w = sp.w = rd.w = wr.w = bit.w = ya.w = 0; } void SMP::reset() { @@ -115,6 +119,7 @@ void SMP::reset() { } SMP::SMP() { + } SMP::~SMP() {