leland.cpp: initial work towards save state support (nw)
This commit is contained in:
parent
865b76da9d
commit
5ee931216d
@ -60,9 +60,7 @@
|
||||
|
||||
#include "emu.h"
|
||||
#include "includes/leland.h"
|
||||
#include "cpu/i86/i186.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "machine/eepromser.h"
|
||||
#include "machine/nvram.h"
|
||||
#include "sound/volt_reg.h"
|
||||
|
||||
@ -2670,6 +2668,9 @@ DRIVER_INIT_MEMBER(leland_state,dangerz)
|
||||
m_master->space(AS_IO).install_read_handler(0xf4, 0xf4, read8_delegate(FUNC(leland_state::dangerz_input_upper_r),this));
|
||||
m_master->space(AS_IO).install_read_handler(0xf8, 0xf8, read8_delegate(FUNC(leland_state::dangerz_input_y_r),this));
|
||||
m_master->space(AS_IO).install_read_handler(0xfc, 0xfc, read8_delegate(FUNC(leland_state::dangerz_input_x_r),this));
|
||||
|
||||
save_item(NAME(m_dangerz_x));
|
||||
save_item(NAME(m_dangerz_y));
|
||||
}
|
||||
|
||||
|
||||
@ -2749,6 +2750,9 @@ DRIVER_INIT_MEMBER(leland_state,viper)
|
||||
m_master->space(AS_IO).install_read_handler(0xa4, 0xa4, read8_delegate(FUNC(leland_state::dangerz_input_upper_r),this));
|
||||
m_master->space(AS_IO).install_read_handler(0xb8, 0xb8, read8_delegate(FUNC(leland_state::dangerz_input_y_r),this));
|
||||
m_master->space(AS_IO).install_read_handler(0xbc, 0xbc, read8_delegate(FUNC(leland_state::dangerz_input_x_r),this));
|
||||
|
||||
save_item(NAME(m_dangerz_x));
|
||||
save_item(NAME(m_dangerz_y));
|
||||
}
|
||||
|
||||
|
||||
|
@ -268,6 +268,6 @@ ROM_START( phklad )
|
||||
ROM_LOAD( "klad.bin", 0x10000, 0x4000, BAD_DUMP CRC(49cc7d65) SHA1(d966cfc1d973a533df8044a71fad37f7177da554) )
|
||||
ROM_END
|
||||
|
||||
GAME( 19??, phtetris, 0, photon, photon, driver_device, 0, ROT0, "<unknown>", "Tetris (Photon System)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1989?, phpython, 0, photon, photon, driver_device, 0, ROT0, "<unknown>", "Python (Photon System)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 19??, phklad, 0, photon, photon, driver_device, 0, ROT0, "<unknown>", "Klad / Labyrinth (Photon System)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 19??, phtetris, 0, photon, photon, driver_device, 0, ROT0, "<unknown>", "Tetris (Photon System)", 0 )
|
||||
GAME( 1989?, phpython, 0, photon, photon, driver_device, 0, ROT0, "<unknown>", "Python (Photon System)", 0 )
|
||||
GAME( 19??, phklad, 0, photon, photon, driver_device, 0, ROT0, "<unknown>", "Klad / Labyrinth (Photon System)", 0 )
|
||||
|
@ -415,6 +415,6 @@ ROM_END
|
||||
/* Driver */
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
|
||||
COMP( 1987, vesta, 0, 0, pk8000, pk8000, driver_device, 0, "BP EVM", "PK8000 Vesta", MACHINE_SUPPORTS_SAVE)
|
||||
COMP( 1987, hobby, vesta, 0, pk8000, pk8000, driver_device, 0, "BP EVM", "PK8000 Sura/Hobby", MACHINE_SUPPORTS_SAVE)
|
||||
COMP( 1987, pk8002, vesta, 0, pk8000, pk8000, driver_device, 0, "<unknown>", "PK8002 Elf", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE)
|
||||
COMP( 1987, vesta, 0, 0, pk8000, pk8000, driver_device, 0, "BP EVM", "PK8000 Vesta", 0 )
|
||||
COMP( 1987, hobby, vesta, 0, pk8000, pk8000, driver_device, 0, "BP EVM", "PK8000 Sura/Hobby", 0 )
|
||||
COMP( 1987, pk8002, vesta, 0, pk8000, pk8000, driver_device, 0, "<unknown>", "PK8002 Elf", MACHINE_NOT_WORKING )
|
||||
|
@ -65,7 +65,6 @@ public:
|
||||
uint8_t *m_xrom_base;
|
||||
uint32_t m_master_length;
|
||||
uint32_t m_slave_length;
|
||||
uint32_t m_xrom_length;
|
||||
int m_dangerz_x;
|
||||
int m_dangerz_y;
|
||||
uint8_t m_analog_result;
|
||||
@ -93,6 +92,7 @@ public:
|
||||
uint8_t m_gfxbank;
|
||||
uint16_t m_last_scanline;
|
||||
emu_timer *m_scanline_timer;
|
||||
|
||||
DECLARE_READ8_MEMBER(cerberus_dial_1_r);
|
||||
DECLARE_READ8_MEMBER(cerberus_dial_2_r);
|
||||
DECLARE_WRITE8_MEMBER(alleymas_joystick_kludge);
|
||||
@ -138,6 +138,12 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(ataxx_svram_port_w);
|
||||
DECLARE_READ8_MEMBER(ataxx_mvram_port_r);
|
||||
DECLARE_READ8_MEMBER(ataxx_svram_port_r);
|
||||
DECLARE_READ8_MEMBER(ataxx_eeprom_r);
|
||||
DECLARE_WRITE8_MEMBER(ataxx_eeprom_w);
|
||||
DECLARE_READ8_MEMBER(leland_sound_port_r);
|
||||
DECLARE_WRITE8_MEMBER(leland_sound_port_w);
|
||||
DECLARE_WRITE8_MEMBER(leland_gfx_port_w);
|
||||
|
||||
DECLARE_DRIVER_INIT(dblplay);
|
||||
DECLARE_DRIVER_INIT(viper);
|
||||
DECLARE_DRIVER_INIT(quarterb);
|
||||
@ -171,6 +177,7 @@ public:
|
||||
DECLARE_VIDEO_START(leland);
|
||||
DECLARE_VIDEO_START(leland2);
|
||||
DECLARE_VIDEO_START(ataxx);
|
||||
|
||||
uint32_t screen_update_leland(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
uint32_t screen_update_ataxx(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(leland_master_interrupt);
|
||||
@ -178,15 +185,12 @@ public:
|
||||
TIMER_CALLBACK_MEMBER(ataxx_interrupt_callback);
|
||||
TIMER_CALLBACK_MEMBER(scanline_callback);
|
||||
TIMER_CALLBACK_MEMBER(leland_delayed_mvram_w);
|
||||
DECLARE_READ8_MEMBER(ataxx_eeprom_r);
|
||||
DECLARE_WRITE8_MEMBER(ataxx_eeprom_w);
|
||||
DECLARE_READ8_MEMBER(leland_sound_port_r);
|
||||
DECLARE_WRITE8_MEMBER(leland_sound_port_w);
|
||||
DECLARE_WRITE8_MEMBER(leland_gfx_port_w);
|
||||
|
||||
void leland_video_addr_w(address_space &space, int offset, int data, int num);
|
||||
int leland_vram_port_r(address_space &space, int offset, int num);
|
||||
void leland_vram_port_w(address_space &space, int offset, int data, int num);
|
||||
int dial_compute_value(int new_val, int indx);
|
||||
|
||||
void update_dangerz_xy();
|
||||
void cerberus_bankswitch();
|
||||
void mayhem_bankswitch();
|
||||
|
@ -9,8 +9,6 @@
|
||||
***************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/i86/i86.h"
|
||||
#include "machine/eepromser.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "includes/leland.h"
|
||||
|
||||
@ -322,6 +320,21 @@ MACHINE_START_MEMBER(leland_state,leland)
|
||||
|
||||
/* start scanline interrupts going */
|
||||
m_master_int_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(leland_state::leland_interrupt_callback),this));
|
||||
|
||||
save_item(NAME(m_dac_control));
|
||||
save_item(NAME(m_wcol_enable));
|
||||
save_item(NAME(m_analog_result));
|
||||
save_item(NAME(m_dial_last_input));
|
||||
save_item(NAME(m_dial_last_result));
|
||||
save_item(NAME(m_keycard_shift));
|
||||
save_item(NAME(m_keycard_bit));
|
||||
save_item(NAME(m_keycard_state));
|
||||
save_item(NAME(m_keycard_clock));
|
||||
save_item(NAME(m_keycard_command));
|
||||
save_item(NAME(m_top_board_bank));
|
||||
save_item(NAME(m_sound_port_bank));
|
||||
save_item(NAME(m_alternate_bank));
|
||||
save_item(NAME(m_battery_ram_enable));
|
||||
}
|
||||
|
||||
|
||||
@ -372,6 +385,15 @@ MACHINE_START_MEMBER(leland_state,ataxx)
|
||||
|
||||
/* start scanline interrupts going */
|
||||
m_master_int_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(leland_state::ataxx_interrupt_callback),this));
|
||||
|
||||
save_item(NAME(m_wcol_enable));
|
||||
save_item(NAME(m_dial_last_input));
|
||||
save_item(NAME(m_dial_last_result));
|
||||
save_item(NAME(m_master_bank));
|
||||
save_item(NAME(m_xrom1_addr));
|
||||
save_item(NAME(m_xrom2_addr));
|
||||
save_item(NAME(m_battery_ram_enable));
|
||||
save_pointer(NAME(m_extra_tram.get()), ATAXX_EXTRA_TRAM_SIZE);
|
||||
}
|
||||
|
||||
|
||||
@ -381,7 +403,6 @@ MACHINE_RESET_MEMBER(leland_state,ataxx)
|
||||
m_master_int_timer->adjust(m_screen->time_until_pos(8), 8);
|
||||
|
||||
/* initialize the XROM */
|
||||
m_xrom_length = memregion("user1")->bytes();
|
||||
m_xrom_base = memregion("user1")->base();
|
||||
m_xrom1_addr = 0;
|
||||
m_xrom2_addr = 0;
|
||||
|
@ -63,6 +63,18 @@ VIDEO_START_MEMBER(leland_state,leland)
|
||||
/* scanline timer */
|
||||
m_scanline_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(leland_state::scanline_callback),this));
|
||||
m_scanline_timer->adjust(m_screen->time_until_pos(0));
|
||||
|
||||
save_item(NAME(m_gfx_control));
|
||||
save_pointer(NAME(m_video_ram.get()), VRAM_SIZE);
|
||||
save_item(NAME(m_xscroll));
|
||||
save_item(NAME(m_yscroll));
|
||||
save_item(NAME(m_gfxbank));
|
||||
save_item(NAME(m_last_scanline));
|
||||
for (uint8_t i = 0; i < 2; i++)
|
||||
{
|
||||
save_item(NAME(m_vram_state[i].m_addr), i);
|
||||
save_item(NAME(m_vram_state[i].m_latch), i);
|
||||
}
|
||||
}
|
||||
|
||||
VIDEO_START_MEMBER(leland_state,ataxx)
|
||||
@ -72,6 +84,16 @@ VIDEO_START_MEMBER(leland_state,ataxx)
|
||||
|
||||
/* allocate memory */
|
||||
m_ataxx_qram = make_unique_clear<uint8_t[]>(QRAM_SIZE);
|
||||
|
||||
save_pointer(NAME(m_video_ram.get()), VRAM_SIZE);
|
||||
save_pointer(NAME(m_ataxx_qram.get()), QRAM_SIZE);
|
||||
save_item(NAME(m_xscroll));
|
||||
save_item(NAME(m_yscroll));
|
||||
for (uint8_t i = 0; i < 2; i++)
|
||||
{
|
||||
save_item(NAME(m_vram_state[i].m_addr), i);
|
||||
save_item(NAME(m_vram_state[i].m_latch), i);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user