more saving (nw)

This commit is contained in:
Olivier Galibert 2014-04-13 02:06:17 +00:00
parent b237d53649
commit 13a04d8822
2 changed files with 49 additions and 0 deletions

View File

@ -677,6 +677,7 @@ static void m68k_presave(m68000_base_device *m68k)
static void m68k_postload(m68000_base_device *m68k)
{
m68ki_set_sr_noint_nosp(m68k, m68k->save_sr);
fprintf(stderr, "Reloaded, pc=%x\n", REG_PC(m68k));
m68k->stopped = (m68k->save_stopped ? STOP_LEVEL_STOP : 0) | (m68k->save_halted ? STOP_LEVEL_HALT : 0);
m68ki_jump(m68k, REG_PC(m68k));
}
@ -991,6 +992,38 @@ void m68000_base_device::init_cpu_common(void)
save_item(NAME(save_halted));
save_item(NAME(pref_addr));
save_item(NAME(pref_data));
save_item(NAME(reset_cycles));
save_item(NAME(nmi_pending));
save_item(NAME(has_pmmu));
save_item(NAME(has_hmmu));
save_item(NAME(pmmu_enabled));
save_item(NAME(hmmu_enabled));
save_item(NAME(mmu_crp_aptr));
save_item(NAME(mmu_crp_limit));
save_item(NAME(mmu_srp_aptr));
save_item(NAME(mmu_srp_limit));
save_item(NAME(mmu_urp_aptr));
save_item(NAME(mmu_tc));
save_item(NAME(mmu_sr));
save_item(NAME(mmu_sr_040));
save_item(NAME(mmu_atc_rr));
save_item(NAME(mmu_tt0));
save_item(NAME(mmu_tt1));
save_item(NAME(mmu_itt0));
save_item(NAME(mmu_itt1));
save_item(NAME(mmu_dtt0));
save_item(NAME(mmu_dtt1));
save_item(NAME(mmu_acr0));
save_item(NAME(mmu_acr1));
save_item(NAME(mmu_acr2));
save_item(NAME(mmu_acr3));
for (int i=0; i<MMU_ATC_ENTRIES;i++) {
save_item(NAME(mmu_atc_tag[i]), i);
save_item(NAME(mmu_atc_data[i]), i);
}
machine().save().register_presave(save_prepost_delegate(FUNC(m68k_presave), this));
machine().save().register_postload(save_prepost_delegate(FUNC(m68k_postload), this));

View File

@ -824,11 +824,26 @@ void next_state::machine_start()
save_item(NAME(irq_level));
save_item(NAME(phy));
save_item(NAME(scsictrl));
save_item(NAME(scsistat));
save_item(NAME(timer_tbase));
save_item(NAME(timer_vbase));
save_item(NAME(timer_data));
save_item(NAME(timer_next_data));
save_item(NAME(timer_ctrl));
save_item(NAME(eventc_latch));
save_item(NAME(esp));
for(int i=0; i<0x20; i++) {
save_item(NAME(dma_slots[i].start), i);
save_item(NAME(dma_slots[i].limit), i);
save_item(NAME(dma_slots[i].chain_start), i);
save_item(NAME(dma_slots[i].chain_limit), i);
save_item(NAME(dma_slots[i].current), i);
save_item(NAME(dma_slots[i].state), i);
save_item(NAME(dma_slots[i].supdate), i);
save_item(NAME(dma_slots[i].restart), i);
save_item(NAME(dma_slots[i].drq), i);
}
timer_tm = timer_alloc(0);
}
@ -841,6 +856,7 @@ void next_state::machine_reset()
irq_level = 0;
esp = 0;
scsictrl = 0;
scsistat = 0;
phy[0] = phy[1] = 0;
eventc_latch = 0;
timer_vbase = 0;