summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ville Linde <villedevs@gmail.com>2021-08-07 00:16:12 +0300
committer Ville Linde <villedevs@gmail.com>2021-08-07 00:16:12 +0300
commit9dfaa44def2d796c160525f6bc14e80a3c80909b (patch)
tree2b76013c06bc3548c5c9d4fe334e042b486f849a
parentd90bef1b56409e42ec742422beb452de7b9089be (diff)
taitopjc: fix save states
-rw-r--r--src/devices/cpu/tms32051/tms32051.cpp93
-rw-r--r--src/mame/drivers/taitopjc.cpp5
2 files changed, 97 insertions, 1 deletions
diff --git a/src/devices/cpu/tms32051/tms32051.cpp b/src/devices/cpu/tms32051/tms32051.cpp
index 29fb4f14f29..e43b738b0cf 100644
--- a/src/devices/cpu/tms32051/tms32051.cpp
+++ b/src/devices/cpu/tms32051/tms32051.cpp
@@ -219,6 +219,99 @@ void tms32051_device::device_start()
memset(&m_timer, 0, sizeof(m_timer));
memset(&m_serial, 0, sizeof(m_serial));
+ save_item(NAME(m_pc));
+ save_item(NAME(m_op));
+ save_item(NAME(m_acc));
+ save_item(NAME(m_accb));
+ save_item(NAME(m_preg));
+ save_item(NAME(m_treg0));
+ save_item(NAME(m_treg1));
+ save_item(NAME(m_treg2));
+ save_pointer(NAME(&m_ar[0]), std::size(m_ar));
+ save_item(NAME(m_rptc));
+ save_item(NAME(m_bmar));
+ save_item(NAME(m_brcr));
+ save_item(NAME(m_paer));
+ save_item(NAME(m_pasr));
+ save_item(NAME(m_indx));
+ save_item(NAME(m_dbmr));
+ save_item(NAME(m_arcr));
+
+ save_item(STRUCT_MEMBER(m_st0, dp));
+ save_item(STRUCT_MEMBER(m_st0, intm));
+ save_item(STRUCT_MEMBER(m_st0, ovm));
+ save_item(STRUCT_MEMBER(m_st0, ov));
+ save_item(STRUCT_MEMBER(m_st0, arp));
+
+ save_item(STRUCT_MEMBER(m_st1, arb));
+ save_item(STRUCT_MEMBER(m_st1, cnf));
+ save_item(STRUCT_MEMBER(m_st1, tc));
+ save_item(STRUCT_MEMBER(m_st1, sxm));
+ save_item(STRUCT_MEMBER(m_st1, c));
+ save_item(STRUCT_MEMBER(m_st1, hm));
+ save_item(STRUCT_MEMBER(m_st1, xf));
+ save_item(STRUCT_MEMBER(m_st1, pm));
+
+ save_item(STRUCT_MEMBER(m_pmst, iptr));
+ save_item(STRUCT_MEMBER(m_pmst, avis));
+ save_item(STRUCT_MEMBER(m_pmst, ovly));
+ save_item(STRUCT_MEMBER(m_pmst, ram));
+ save_item(STRUCT_MEMBER(m_pmst, mpmc));
+ save_item(STRUCT_MEMBER(m_pmst, ndx));
+ save_item(STRUCT_MEMBER(m_pmst, trm));
+ save_item(STRUCT_MEMBER(m_pmst, braf));
+
+ save_item(NAME(m_ifr));
+ save_item(NAME(m_imr));
+ save_pointer(NAME(&m_pcstack[0]), std::size(m_pcstack));
+ save_item(NAME(m_pcstack_ptr));
+ save_item(NAME(m_rpt_start));
+ save_item(NAME(m_rpt_end));
+ save_item(NAME(m_cbcr));
+ save_item(NAME(m_cbsr1));
+ save_item(NAME(m_cber1));
+ save_item(NAME(m_cbsr2));
+ save_item(NAME(m_cber2));
+
+ save_item(STRUCT_MEMBER(m_timer, tddr));
+ save_item(STRUCT_MEMBER(m_timer, psc));
+ save_item(STRUCT_MEMBER(m_timer, tim));
+ save_item(STRUCT_MEMBER(m_timer, prd));
+
+ save_item(STRUCT_MEMBER(m_serial, drr));
+ save_item(STRUCT_MEMBER(m_serial, dxr));
+ save_item(STRUCT_MEMBER(m_serial, spc));
+
+ save_item(STRUCT_MEMBER(m_shadow, acc));
+ save_item(STRUCT_MEMBER(m_shadow, accb));
+ save_item(STRUCT_MEMBER(m_shadow, arcr));
+ save_item(STRUCT_MEMBER(m_shadow, indx));
+ save_item(STRUCT_MEMBER(m_shadow.pmst, iptr));
+ save_item(STRUCT_MEMBER(m_shadow.pmst, avis));
+ save_item(STRUCT_MEMBER(m_shadow.pmst, ovly));
+ save_item(STRUCT_MEMBER(m_shadow.pmst, ram));
+ save_item(STRUCT_MEMBER(m_shadow.pmst, mpmc));
+ save_item(STRUCT_MEMBER(m_shadow.pmst, ndx));
+ save_item(STRUCT_MEMBER(m_shadow.pmst, trm));
+ save_item(STRUCT_MEMBER(m_shadow.pmst, braf));
+ save_item(STRUCT_MEMBER(m_shadow.st0, dp));
+ save_item(STRUCT_MEMBER(m_shadow.st0, intm));
+ save_item(STRUCT_MEMBER(m_shadow.st0, ovm));
+ save_item(STRUCT_MEMBER(m_shadow.st0, ov));
+ save_item(STRUCT_MEMBER(m_shadow.st0, arp));
+ save_item(STRUCT_MEMBER(m_shadow.st1, arb));
+ save_item(STRUCT_MEMBER(m_shadow.st1, cnf));
+ save_item(STRUCT_MEMBER(m_shadow.st1, tc));
+ save_item(STRUCT_MEMBER(m_shadow.st1, sxm));
+ save_item(STRUCT_MEMBER(m_shadow.st1, c));
+ save_item(STRUCT_MEMBER(m_shadow.st1, hm));
+ save_item(STRUCT_MEMBER(m_shadow.st1, xf));
+ save_item(STRUCT_MEMBER(m_shadow.st1, pm));
+ save_item(STRUCT_MEMBER(m_shadow, preg));
+ save_item(STRUCT_MEMBER(m_shadow, treg0));
+ save_item(STRUCT_MEMBER(m_shadow, treg1));
+ save_item(STRUCT_MEMBER(m_shadow, treg2));
+
state_add( TMS32051_PC, "PC", m_pc).formatstr("%04X");
state_add( TMS32051_ACC, "ACC", m_acc).formatstr("%08X");
state_add( TMS32051_ACCB, "ACCB", m_accb).formatstr("%08X");
diff --git a/src/mame/drivers/taitopjc.cpp b/src/mame/drivers/taitopjc.cpp
index 47da7b718f6..7aa192b26cc 100644
--- a/src/mame/drivers/taitopjc.cpp
+++ b/src/mame/drivers/taitopjc.cpp
@@ -261,6 +261,9 @@ void taitopjc_state::video_start()
m_gfxdecode->set_gfx(0, std::make_unique<gfx_element>(m_palette, char_layout, (uint8_t*)m_screen_ram.get(), 0, m_palette->entries() / 256, 0));
+ save_pointer(NAME(m_screen_ram), 0x40000);
+ save_pointer(NAME(m_pal_ram), 0x8000);
+
machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(&taitopjc_state::video_exit, this));
}
@@ -935,4 +938,4 @@ ROM_START( optiger )
ROM_LOAD( "e63-08_palce16v8h-15-4.ic49", 0x739, 0x117, CRC(c305c56d) SHA1(49592fa43c548ac6b08951d03677a3f23e9c8de8) )
ROM_END
-GAME( 1998, optiger, 0, taitopjc, taitopjc, taitopjc_state, init_optiger, ROT0, "Taito", "Operation Tiger (Ver 2.14 O)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 1998, optiger, 0, taitopjc, taitopjc, taitopjc_state, init_optiger, ROT0, "Taito", "Operation Tiger (Ver 2.14 O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND )