diff options
author | Aaron Giles <aaron@aarongiles.com> | 2008-11-02 02:44:33 +0000 |
---|---|---|
committer | Aaron Giles <aaron@aarongiles.com> | 2008-11-02 02:44:33 +0000 |
commit | ae0c3e88115ccb19d2b0a097f43fb9fc6f92ba32 (patch) | |
tree | edb247c7f4d71c938574a6bd65db91e68263ce3d | |
parent | 9e9ebc19a6966bfb2a28382ab0bb835380831659 (diff) |
From: Atari Ace [mailto:atari_ace@verizon.net]
Sent: Saturday, November 01, 2008 11:29 AM
To: submit@mamedev.org
Cc: atariace@hotmail.com
Subject: [patch] State save support for toaplan2
Hi mamedev,
Attached is a small patch to add a toaplan2.h include file and save
state support for the driver. A number of variables changed from int
to specific sizes to support this, and I also fixed a harmless typo in
the mem_mask size.
~aa
-rw-r--r-- | src/mame/audio/toaplan2.c | 1 | ||||
-rw-r--r-- | src/mame/drivers/toaplan2.c | 164 | ||||
-rw-r--r-- | src/mame/video/toaplan2.c | 115 |
3 files changed, 144 insertions, 136 deletions
diff --git a/src/mame/audio/toaplan2.c b/src/mame/audio/toaplan2.c index 335f4266f8e..a64e4bb3b3f 100644 --- a/src/mame/audio/toaplan2.c +++ b/src/mame/audio/toaplan2.c @@ -1,5 +1,6 @@ #include "driver.h" #include "sound/okim6295.h" +#include "includes/toaplan2.h" /**************************************************************************** The Toaplan 2 hardware with V25+ secondary CPU controls the sound through diff --git a/src/mame/drivers/toaplan2.c b/src/mame/drivers/toaplan2.c index a9a86d3aa19..27e28274309 100644 --- a/src/mame/drivers/toaplan2.c +++ b/src/mame/drivers/toaplan2.c @@ -252,6 +252,7 @@ To Do / Unknowns: #include "sound/3812intf.h" #include "sound/okim6295.h" #include "sound/ymz280b.h" +#include "includes/toaplan2.h" /**************** Machine stuff ******************/ @@ -270,84 +271,17 @@ static UINT16 *toaplan2_shared_ram16; /* Really 8bit RAM connected to Z180 */ static UINT16 *V25_shared_ram; /* Really 8bit RAM connected to Z180 */ static UINT16 *fixeight_sec_cpu_mem; -/************ Video RAM related values ************/ -extern UINT16 *toaplan2_txvideoram16; -extern UINT16 *toaplan2_txvideoram16_offs; -extern UINT16 *toaplan2_txscrollram16; -extern UINT16 *toaplan2_tx_gfxram16; -size_t toaplan2_tx_vram_size; -size_t toaplan2_tx_offs_vram_size; -size_t toaplan2_tx_scroll_vram_size; -size_t batrider_paletteram16_size; - /********** Status related values **********/ int toaplan2_sub_cpu = 0; -static int mcu_data = 0; -static int video_status; +static UINT16 mcu_data = 0; +static UINT16 video_status; static INT8 old_p1_paddle_h; /* For Ghox */ static INT8 old_p2_paddle_h; -static int current_bank; /* Z80 bank used in Battle Garegga and Batrider */ +static INT8 current_bank; /* Z80 bank used in Battle Garegga and Batrider */ static int raizing_sndirq_line; /* IRQ4 for batrider, IRQ2 for bbakraid */ -static int raizing_Z80_busreq; +static UINT16 raizing_Z80_busreq; static int bbakraid_unlimited_ver; -/**************** Video stuff ******************/ -WRITE16_HANDLER( toaplan2_0_voffs_w ); -WRITE16_HANDLER( toaplan2_1_voffs_w ); - -READ16_HANDLER ( toaplan2_0_videoram16_r ); -READ16_HANDLER ( toaplan2_1_videoram16_r ); -WRITE16_HANDLER( toaplan2_0_videoram16_w ); -WRITE16_HANDLER( toaplan2_1_videoram16_w ); - -READ16_HANDLER ( toaplan2_txvideoram16_r ); -WRITE16_HANDLER( toaplan2_txvideoram16_w ); -READ16_HANDLER ( toaplan2_txvideoram16_offs_r ); -WRITE16_HANDLER( toaplan2_txvideoram16_offs_w ); -READ16_HANDLER ( toaplan2_txscrollram16_r ); -WRITE16_HANDLER( toaplan2_txscrollram16_w ); -READ16_HANDLER ( toaplan2_tx_gfxram16_r ); -WRITE16_HANDLER( toaplan2_tx_gfxram16_w ); -READ16_HANDLER ( raizing_tx_gfxram16_r ); -WRITE16_HANDLER( raizing_tx_gfxram16_w ); - -WRITE16_HANDLER( toaplan2_0_scroll_reg_select_w ); -WRITE16_HANDLER( toaplan2_1_scroll_reg_select_w ); -WRITE16_HANDLER( toaplan2_0_scroll_reg_data_w ); -WRITE16_HANDLER( toaplan2_1_scroll_reg_data_w ); - -WRITE16_HANDLER( batrider_objectbank_w ); -WRITE16_HANDLER( batrider_textdata_decode ); - -VIDEO_EOF( toaplan2_0 ); -VIDEO_EOF( toaplan2_1 ); -VIDEO_START( toaplan2_0 ); -VIDEO_START( toaplan2_1 ); -VIDEO_START( truxton2_0 ); -VIDEO_START( bgaregga_0 ); -VIDEO_START( batrider_0 ); -VIDEO_UPDATE( toaplan2_0 ); -VIDEO_UPDATE( truxton2_0 ); -VIDEO_UPDATE( dogyuun_1 ); -VIDEO_UPDATE( batsugun_1 ); -VIDEO_UPDATE( batrider_0 ); -VIDEO_UPDATE( mahoudai_0 ); - - -/********* Video wrappers for PIPIBIBI *********/ -READ16_HANDLER ( pipibibi_videoram16_r ); -WRITE16_HANDLER( pipibibi_videoram16_w ); -READ16_HANDLER ( pipibibi_spriteram16_r ); -WRITE16_HANDLER( pipibibi_spriteram16_w ); -WRITE16_HANDLER( pipibibi_scroll_w ); - - -/***************** Sound stuff *****************/ -void dogyuun_okisnd_w(running_machine *machine, int data); -void kbash_okisnd_w(running_machine *machine, int data); -void fixeight_okisnd_w(running_machine *machine, int data); -void batsugun_okisnd_w(running_machine *machine, int data); - static MACHINE_RESET(batsugun); #if USE_V25 static READ16_HANDLER( batsugun_share_r ); @@ -412,24 +346,38 @@ static MACHINE_RESET( bgaregga ) MACHINE_RESET_CALL(toaplan2); } +static void register_state_save(void) +{ + state_save_register_global(mcu_data); + state_save_register_global(video_status); + state_save_register_global(old_p1_paddle_h); + state_save_register_global(old_p2_paddle_h); + state_save_register_global(current_bank); + state_save_register_global(raizing_Z80_busreq); +} + static DRIVER_INIT( T2_Z80 ) /* init_t2_Z80(); */ { toaplan2_sub_cpu = CPU_2_Z80; + register_state_save(); } static DRIVER_INIT( T2_Z180 ) { toaplan2_sub_cpu = CPU_2_HD647180; + register_state_save(); } static DRIVER_INIT( T2_V25 ) { toaplan2_sub_cpu = CPU_2_V25; + register_state_save(); } static DRIVER_INIT( T2_noZ80 ) { toaplan2_sub_cpu = CPU_2_NONE; + register_state_save(); } static DRIVER_INIT( fixeight ) @@ -442,6 +390,7 @@ static DRIVER_INIT( fixeight ) #endif toaplan2_sub_cpu = CPU_2_V25; + register_state_save(); } static DRIVER_INIT( fixeighb ) @@ -450,6 +399,7 @@ static DRIVER_INIT( fixeighb ) memory_set_bankptr(1, &bgdata[0x40000]); /* $80000 - $fffff */ toaplan2_sub_cpu = CPU_2_NONE; + register_state_save(); } static DRIVER_INIT( pipibibi ) @@ -531,12 +481,14 @@ static DRIVER_INIT( pipibibi ) } toaplan2_sub_cpu = CPU_2_Z80; + register_state_save(); } static DRIVER_INIT( batrider ) { raizing_sndirq_line = 4; toaplan2_sub_cpu = CPU_2_Z80; + register_state_save(); } static DRIVER_INIT( bbakraid ) @@ -544,6 +496,7 @@ static DRIVER_INIT( bbakraid ) bbakraid_unlimited_ver = 0; raizing_sndirq_line = 2; toaplan2_sub_cpu = CPU_2_Z80; + register_state_save(); } static DRIVER_INIT( bbakradu ) @@ -551,6 +504,7 @@ static DRIVER_INIT( bbakradu ) bbakraid_unlimited_ver = 1; raizing_sndirq_line = 2; toaplan2_sub_cpu = CPU_2_Z80; + register_state_save(); } @@ -5049,37 +5003,37 @@ ROM_END /* Whoopee init to be changed to T2_Z180 when (if) HD647180 is dumped */ /* ( YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS ) */ -GAME( 1991, tekipaki, 0, tekipaki, tekipaki, T2_Z180, ROT0, "Toaplan", "Teki Paki", GAME_NO_SOUND ) -GAME( 1991, ghox, 0, ghox, ghox, T2_Z180, ROT270, "Toaplan", "Ghox (Spinner with Up/Down Axis)", GAME_NO_SOUND ) -GAME( 1991, ghoxj, ghox, ghox, ghox, T2_Z180, ROT270, "Toaplan", "Ghox (8-Way Joystick)", GAME_NO_SOUND ) -GAME( 1992, dogyuun, 0, dogyuun, dogyuun, T2_V25, ROT270, "Toaplan", "Dogyuun", GAME_NO_SOUND ) -GAME( 1993, kbash, 0, kbash, kbash, T2_V25, ROT0, "Toaplan", "Knuckle Bash", GAME_IMPERFECT_SOUND ) -GAME( 1999, kbash2, 0, kbash2, kbash2, T2_noZ80, ROT0, "bootleg", "Knuckle Bash 2 (bootleg)", 0 ) -GAME( 1992, truxton2, 0, truxton2, truxton2, T2_noZ80, ROT270, "Toaplan", "Truxton II / Tatsujin Oh", 0 ) -GAME( 1991, pipibibs, 0, pipibibs, pipibibs, T2_Z80, ROT0, "Toaplan", "Pipi & Bibis / Whoopee!! (Z80 sound cpu)", 0 ) -GAME( 1991, whoopee, pipibibs, whoopee, whoopee, T2_Z80, ROT0, "Toaplan", "Whoopee!! / Pipi & Bibis", 0 ) -GAME( 1991, pipibibi, pipibibs, pipibibi, pipibibi, pipibibi, ROT0, "[Toaplan] Ryouta Kikaku", "Pipi & Bibis / Whoopee!! (bootleg ?)", 0 ) -GAME( 1992, fixeight, 0, fixeight, fixeight, fixeight, ROT270, "Toaplan", "FixEight", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING ) -GAME( 1992, fixeighb, fixeight, fixeighb, fixeighb, fixeighb, ROT270, "bootleg", "FixEight (bootleg)", 0 ) -GAME( 1992, grindstm, vfive, vfive, grindstm, T2_V25, ROT270, "Toaplan", "Grind Stormer", GAME_NO_SOUND ) -GAME( 1992, grindsta, vfive, vfive, grindstm, T2_V25, ROT270, "Toaplan", "Grind Stormer (older set)", GAME_NO_SOUND ) -GAME( 1993, vfive, 0, vfive, vfive, T2_V25, ROT270, "Toaplan", "V-Five (Japan)", GAME_NO_SOUND ) -GAME( 1993, batsugun, 0, batsugun, batsugun, T2_V25, ROT270, "Toaplan", "Batsugun (set 1)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS ) -GAME( 1993, batsugna, batsugun, batsugun, batsugun, T2_V25, ROT270, "Toaplan", "Batsugun (set 2)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS ) -GAME( 1993, batugnsp, batsugun, batsugun, batsugun, T2_V25, ROT270, "Toaplan", "Batsugun (Special Ver.)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS ) -GAME( 1994, snowbro2, 0, snowbro2, snowbro2, T2_noZ80, ROT0, "[Toaplan] Hanafram", "Snow Bros. 2 - With New Elves / Otenki Paradise", 0 ) -GAME( 1993, mahoudai, 0, mahoudai, mahoudai, T2_Z80, ROT270, "Raizing (Able license)", "Mahou Daisakusen (Japan)", 0 ) -GAME( 1993, sstriker, mahoudai, mahoudai, sstriker, T2_Z80, ROT270, "Raizing", "Sorcer Striker (World)" , 0) // from korean board -GAME( 1993, sstrikra, mahoudai, mahoudai, sstriker, T2_Z80, ROT270, "Raizing", "Sorcer Striker (World, alt)" , 0) // verified on two different PCBs -GAME( 1994, shippumd, 0, shippumd, shippumd, T2_Z80, ROT270, "Raizing / Eighting", "Shippu Mahou Daisakusen (Japan)", 0 ) -GAME( 1994, kingdmgp, shippumd, shippumd, kingdmgp, T2_Z80, ROT270, "Raizing / Eighting", "Kingdom Grandprix (World)" , 0) // from korean board, missing letters on credits screen but this is correct -GAME( 1996, bgaregga, 0, bgaregga, bgaregga, T2_Z80, ROT270, "Raizing / Eighting", "Battle Garegga (Europe / USA / Japan / Asia) (Sat Feb 3 1996)", 0 ) -GAME( 1996, bgareghk, bgaregga, bgaregga, bgareghk, T2_Z80, ROT270, "Raizing / Eighting", "Battle Garegga (Austria / Hong Kong) (Sat Feb 3 1996)", 0 ) -GAME( 1996, bgaregnv, bgaregga, bgaregga, bgareghk, T2_Z80, ROT270, "Raizing / Eighting", "Battle Garegga - New Version (Austria / Hong Kong) (Sat Mar 2 1996)" , 0) // displays New Version only when set to HK -GAME( 1996, bgaregt2, bgaregga, bgaregga, bgaregga, T2_Z80, ROT270, "Raizing / Eighting", "Battle Garegga - Type 2 (Europe / USA / Japan / Asia) (Sat Mar 2 1996)" , 0) // displays Type 2 only when set to Europe -GAME( 1996, bgaregcn, bgaregga, bgaregga, bgaregcn, T2_Z80, ROT270, "Raizing / Eighting", "Battle Garegga - Type 2 (Denmark / China) (Tue Apr 2 1996)", 0 ) // displays Type 2 only when set to Denmark -GAME( 1998, batrider, 0, batrider, batrider, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider - B Version (Japan) (Fri Feb 13 1998)", 0 ) -GAME( 1998, batridra, batrider, batrider, batrider, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (Japan) (Mon Dec 22 1997)", 0 ) -GAME( 1998, batridrk, batrider, batrider, batrider, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (Korea) (Fri Feb 13 1998)", 0 ) -GAME( 1999, bbakraid, 0, bbakraid, bbakraid, bbakraid, ROT270, "Eighting", "Battle Bakraid (Japan) (Wed Apr 7 1999)", 0) -GAME( 1999, bbakradu, bbakraid, bbakraid, bbakraid, bbakradu, ROT270, "Eighting", "Battle Bakraid - Unlimited Version (Japan) (Tue Jun 8 1999)", 0) +GAME( 1991, tekipaki, 0, tekipaki, tekipaki, T2_Z180, ROT0, "Toaplan", "Teki Paki", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 1991, ghox, 0, ghox, ghox, T2_Z180, ROT270, "Toaplan", "Ghox (Spinner with Up/Down Axis)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 1991, ghoxj, ghox, ghox, ghox, T2_Z180, ROT270, "Toaplan", "Ghox (8-Way Joystick)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 1992, dogyuun, 0, dogyuun, dogyuun, T2_V25, ROT270, "Toaplan", "Dogyuun", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 1993, kbash, 0, kbash, kbash, T2_V25, ROT0, "Toaplan", "Knuckle Bash", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 1999, kbash2, 0, kbash2, kbash2, T2_noZ80, ROT0, "bootleg", "Knuckle Bash 2 (bootleg)", GAME_SUPPORTS_SAVE ) +GAME( 1992, truxton2, 0, truxton2, truxton2, T2_noZ80, ROT270, "Toaplan", "Truxton II / Tatsujin Oh", GAME_SUPPORTS_SAVE ) +GAME( 1991, pipibibs, 0, pipibibs, pipibibs, T2_Z80, ROT0, "Toaplan", "Pipi & Bibis / Whoopee!! (Z80 sound cpu)", GAME_SUPPORTS_SAVE ) +GAME( 1991, whoopee, pipibibs, whoopee, whoopee, T2_Z80, ROT0, "Toaplan", "Whoopee!! / Pipi & Bibis", GAME_SUPPORTS_SAVE ) +GAME( 1991, pipibibi, pipibibs, pipibibi, pipibibi, pipibibi, ROT0, "[Toaplan] Ryouta Kikaku", "Pipi & Bibis / Whoopee!! (bootleg ?)", GAME_SUPPORTS_SAVE ) +GAME( 1992, fixeight, 0, fixeight, fixeight, fixeight, ROT270, "Toaplan", "FixEight", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) +GAME( 1992, fixeighb, fixeight, fixeighb, fixeighb, fixeighb, ROT270, "bootleg", "FixEight (bootleg)", GAME_SUPPORTS_SAVE ) +GAME( 1992, grindstm, vfive, vfive, grindstm, T2_V25, ROT270, "Toaplan", "Grind Stormer", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 1992, grindsta, vfive, vfive, grindstm, T2_V25, ROT270, "Toaplan", "Grind Stormer (older set)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 1993, vfive, 0, vfive, vfive, T2_V25, ROT270, "Toaplan", "V-Five (Japan)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 1993, batsugun, 0, batsugun, batsugun, T2_V25, ROT270, "Toaplan", "Batsugun (set 1)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) +GAME( 1993, batsugna, batsugun, batsugun, batsugun, T2_V25, ROT270, "Toaplan", "Batsugun (set 2)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) +GAME( 1993, batugnsp, batsugun, batsugun, batsugun, T2_V25, ROT270, "Toaplan", "Batsugun (Special Ver.)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) +GAME( 1994, snowbro2, 0, snowbro2, snowbro2, T2_noZ80, ROT0, "[Toaplan] Hanafram", "Snow Bros. 2 - With New Elves / Otenki Paradise", GAME_SUPPORTS_SAVE ) +GAME( 1993, mahoudai, 0, mahoudai, mahoudai, T2_Z80, ROT270, "Raizing (Able license)", "Mahou Daisakusen (Japan)", GAME_SUPPORTS_SAVE ) +GAME( 1993, sstriker, mahoudai, mahoudai, sstriker, T2_Z80, ROT270, "Raizing", "Sorcer Striker (World)" , GAME_SUPPORTS_SAVE ) // from korean board +GAME( 1993, sstrikra, mahoudai, mahoudai, sstriker, T2_Z80, ROT270, "Raizing", "Sorcer Striker (World, alt)" , GAME_SUPPORTS_SAVE ) // verified on two different PCBs +GAME( 1994, shippumd, 0, shippumd, shippumd, T2_Z80, ROT270, "Raizing / Eighting", "Shippu Mahou Daisakusen (Japan)", GAME_SUPPORTS_SAVE ) +GAME( 1994, kingdmgp, shippumd, shippumd, kingdmgp, T2_Z80, ROT270, "Raizing / Eighting", "Kingdom Grandprix (World)" , GAME_SUPPORTS_SAVE ) // from korean board, missing letters on credits screen but this is correct +GAME( 1996, bgaregga, 0, bgaregga, bgaregga, T2_Z80, ROT270, "Raizing / Eighting", "Battle Garegga (Europe / USA / Japan / Asia) (Sat Feb 3 1996)", GAME_SUPPORTS_SAVE ) +GAME( 1996, bgareghk, bgaregga, bgaregga, bgareghk, T2_Z80, ROT270, "Raizing / Eighting", "Battle Garegga (Austria / Hong Kong) (Sat Feb 3 1996)", GAME_SUPPORTS_SAVE ) +GAME( 1996, bgaregnv, bgaregga, bgaregga, bgareghk, T2_Z80, ROT270, "Raizing / Eighting", "Battle Garegga - New Version (Austria / Hong Kong) (Sat Mar 2 1996)" , GAME_SUPPORTS_SAVE ) // displays New Version only when set to HK +GAME( 1996, bgaregt2, bgaregga, bgaregga, bgaregga, T2_Z80, ROT270, "Raizing / Eighting", "Battle Garegga - Type 2 (Europe / USA / Japan / Asia) (Sat Mar 2 1996)" , GAME_SUPPORTS_SAVE ) // displays Type 2 only when set to Europe +GAME( 1996, bgaregcn, bgaregga, bgaregga, bgaregcn, T2_Z80, ROT270, "Raizing / Eighting", "Battle Garegga - Type 2 (Denmark / China) (Tue Apr 2 1996)", GAME_SUPPORTS_SAVE ) // displays Type 2 only when set to Denmark +GAME( 1998, batrider, 0, batrider, batrider, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider - B Version (Japan) (Fri Feb 13 1998)", GAME_SUPPORTS_SAVE ) +GAME( 1998, batridra, batrider, batrider, batrider, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (Japan) (Mon Dec 22 1997)", GAME_SUPPORTS_SAVE ) +GAME( 1998, batridrk, batrider, batrider, batrider, batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (Korea) (Fri Feb 13 1998)", GAME_SUPPORTS_SAVE ) +GAME( 1999, bbakraid, 0, bbakraid, bbakraid, bbakraid, ROT270, "Eighting", "Battle Bakraid (Japan) (Wed Apr 7 1999)", GAME_SUPPORTS_SAVE ) +GAME( 1999, bbakradu, bbakraid, bbakraid, bbakraid, bbakradu, ROT270, "Eighting", "Battle Bakraid - Unlimited Version (Japan) (Tue Jun 8 1999)", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/video/toaplan2.c b/src/mame/video/toaplan2.c index 5da491dddba..c3082228eda 100644 --- a/src/mame/video/toaplan2.c +++ b/src/mame/video/toaplan2.c @@ -146,6 +146,7 @@ Pipi & Bibis | Fix Eight | V-Five | Snow Bros. 2 | #include "driver.h" #include "cpu/m68000/m68000.h" +#include "includes/toaplan2.h" @@ -154,10 +155,10 @@ Pipi & Bibis | Fix Eight | V-Five | Snow Bros. 2 | #define TOAPLAN2_TOP_VRAM_SIZE 0x1000 /* Top Layer RAM size */ #define TOAPLAN2_SPRITERAM_SIZE 0x800 /* Sprite RAM size */ #define RAIZING_TX_GFXRAM_SIZE 0x8000 /* GFX data decode RAM size */ -extern size_t toaplan2_tx_vram_size; /* 0x2000 Text layer RAM size */ -extern size_t toaplan2_tx_offs_vram_size; /* 0x200 Text layer tile flip and positon ? */ -extern size_t toaplan2_tx_scroll_vram_size; /* 0x200 Text layer scroll ? */ -extern size_t batrider_paletteram16_size; +size_t toaplan2_tx_vram_size; /* 0x2000 Text layer RAM size */ +size_t toaplan2_tx_offs_vram_size; /* 0x200 Text layer tile flip and positon ? */ +size_t toaplan2_tx_scroll_vram_size; /* 0x200 Text layer scroll ? */ +size_t batrider_paletteram16_size; @@ -181,20 +182,20 @@ UINT16 *toaplan2_txvideoram16_offs; /* Text layer tile flip and positon ? */ UINT16 *toaplan2_txscrollram16; /* Text layer scroll ? */ UINT16 *toaplan2_tx_gfxram16; /* Text Layer RAM based tiles */ static UINT16 *raizing_tx_gfxram16; /* Text Layer RAM based tiles (Batrider) */ -static int toaplan2_overflow_vram; /* Teki Paki VRAM test is bugged. It goes out of range */ - -static int toaplan2_scroll_reg[2]; -static int toaplan2_voffs[2]; -static int bg_scrollx[2]; -static int bg_scrolly[2]; -static int fg_scrollx[2]; -static int fg_scrolly[2]; -static int top_scrollx[2]; -static int top_scrolly[2]; -static int sprite_scrollx[2]; -static int sprite_scrolly[2]; +static UINT16 toaplan2_overflow_vram; /* Teki Paki VRAM test is bugged. It goes out of range */ + +static UINT16 toaplan2_scroll_reg[2]; +static UINT16 toaplan2_voffs[2]; +static UINT16 bg_scrollx[2]; +static UINT16 bg_scrolly[2]; +static UINT16 fg_scrollx[2]; +static UINT16 fg_scrolly[2]; +static UINT16 top_scrollx[2]; +static UINT16 top_scrolly[2]; +static UINT16 sprite_scrollx[2]; +static UINT16 sprite_scrolly[2]; static int objectbank_dirty = 0; /* dirty flag of object bank (for Batrider) */ -static int batrider_object_bank[8]; /* Batrider object bank */ +static UINT16 batrider_object_bank[8]; /* Batrider object bank */ #ifdef MAME_DEBUG static int display_bg[2] = { 1, 1 }; @@ -205,15 +206,13 @@ static int display_tx = 1; #endif static int display_sp[2] = { 1, 1 }; -static int sprite_priority[2][16]; -static int bg_flip[2] = { 0, 0 }; -static int fg_flip[2] = { 0, 0 }; -static int top_flip[2] = { 0, 0 }; -static int sprite_flip[2] = { 0, 0 }; -static int tx_flip = 0; - -extern int toaplan2_sub_cpu; +static UINT8 bg_flip[2] = { 0, 0 }; +static UINT8 fg_flip[2] = { 0, 0 }; +static UINT8 top_flip[2] = { 0, 0 }; +static UINT8 sprite_flip[2] = { 0, 0 }; +static UINT8 tx_flip = 0; +static UINT8 sprite_priority[2][16]; static UINT8 top_tile_priority[2][16]; static UINT8 fg_tile_priority[2][16]; static UINT8 bg_tile_priority[2][16]; @@ -492,10 +491,58 @@ static void toaplan2_vh_start(int controller) } } +static void register_state_save(int vrams) +{ + state_save_register_global_array(toaplan2_scroll_reg); + state_save_register_global_array(toaplan2_voffs); + state_save_register_global_array(bg_scrollx); + state_save_register_global_array(bg_scrolly); + state_save_register_global_array(fg_scrollx); + state_save_register_global_array(fg_scrolly); + state_save_register_global_array(top_scrollx); + state_save_register_global_array(top_scrolly); + state_save_register_global_array(sprite_scrollx); + state_save_register_global_array(sprite_scrolly); + state_save_register_global_array(batrider_object_bank); + + state_save_register_global_array(bg_flip); + state_save_register_global_array(fg_flip); + state_save_register_global_array(top_flip); + state_save_register_global_array(sprite_flip); + state_save_register_global(tx_flip); + + state_save_register_global_2d_array(sprite_priority); + state_save_register_global_2d_array(top_tile_priority); + state_save_register_global_2d_array(fg_tile_priority); + state_save_register_global_2d_array(bg_tile_priority); + + switch (vrams) + { + case 2: + state_save_register_global_pointer(spriteram16_new[1], TOAPLAN2_SPRITERAM_SIZE/2); + state_save_register_global_pointer(spriteram16_now[1], TOAPLAN2_SPRITERAM_SIZE/2); + state_save_register_global_pointer(topvideoram16[1], TOAPLAN2_TOP_VRAM_SIZE/2); + state_save_register_global_pointer(fgvideoram16[1], TOAPLAN2_FG_VRAM_SIZE/2); + state_save_register_global_pointer(bgvideoram16[1], TOAPLAN2_BG_VRAM_SIZE/2); + /* fall through */ + case 1: + state_save_register_global_pointer(spriteram16_new[0], TOAPLAN2_SPRITERAM_SIZE/2); + state_save_register_global_pointer(spriteram16_now[0], TOAPLAN2_SPRITERAM_SIZE/2); + state_save_register_global_pointer(topvideoram16[0], TOAPLAN2_TOP_VRAM_SIZE/2); + state_save_register_global_pointer(fgvideoram16[0], TOAPLAN2_FG_VRAM_SIZE/2); + state_save_register_global_pointer(bgvideoram16[0], TOAPLAN2_BG_VRAM_SIZE/2); + /* fall through */ + default: + break; + } + +} + VIDEO_START( toaplan2_0 ) { defaultOffsets(); toaplan2_vh_start(0); + register_state_save(1); } VIDEO_START( toaplan2_1 ) @@ -503,6 +550,7 @@ VIDEO_START( toaplan2_1 ) toaplan2_vh_start(0); toaplan2_vh_start(1); defaultOffsets(); + register_state_save(2); } VIDEO_START( truxton2_0 ) @@ -528,6 +576,8 @@ VIDEO_START( truxton2_0 ) defaultOffsets(); tilemap_set_scrolldx(tx_tilemap, 0x1d4 +1, 0x2a); } + + register_state_save(1); } VIDEO_START( bgaregga_0 ) @@ -536,12 +586,14 @@ VIDEO_START( bgaregga_0 ) truxton2_create_tilemaps_0(); tilemap_set_scrolldx(tx_tilemap, 0x1d4, 0x2a); defaultOffsets(); + register_state_save(1); } VIDEO_START( batrider_0 ) { raizing_tx_gfxram16 = auto_malloc(RAIZING_TX_GFXRAM_SIZE); memset(raizing_tx_gfxram16,0,RAIZING_TX_GFXRAM_SIZE); + state_save_register_global_pointer(raizing_tx_gfxram16, RAIZING_TX_GFXRAM_SIZE/2); toaplan2_vram_alloc(0); spriteram16_n[0] = spriteram16_new[0]; @@ -550,6 +602,7 @@ VIDEO_START( batrider_0 ) tilemap_set_scrolldx(tx_tilemap, 0x1d4, 0x2a); defaultOffsets(); + register_state_save(1); } @@ -559,7 +612,7 @@ VIDEO_START( batrider_0 ) ***************************************************************************/ -static void toaplan2_voffs_w(offs_t offset, UINT16 data, UINT32 mem_mask, int controller) +static void toaplan2_voffs_w(offs_t offset, UINT16 data, UINT16 mem_mask, int controller) { if (data >= 0x1c00) logerror("Hmmm, unknown video controller %01x layer being selected (%08x)\n",controller,data); @@ -719,8 +772,8 @@ WRITE16_HANDLER( batrider_objectbank_w ) static int toaplan2_videoram16_r(offs_t offset, int controller) { - static UINT16 video_data = 0; - static offs_t vram_offset; + UINT16 video_data = 0; + offs_t vram_offset; switch (toaplan2_voffs[controller] & 0xfc00) @@ -763,7 +816,7 @@ READ16_HANDLER( toaplan2_1_videoram16_r ) return toaplan2_videoram16_r(offset, 1); } -static void toaplan2_videoram16_w(offs_t offset, UINT16 data, UINT32 mem_mask, int controller) +static void toaplan2_videoram16_w(offs_t offset, UINT16 data, UINT16 mem_mask, int controller) { offs_t vram_offset; @@ -810,7 +863,7 @@ WRITE16_HANDLER( toaplan2_1_videoram16_w ) } -static void toaplan2_scroll_reg_select_w(offs_t offset, UINT16 data, UINT32 mem_mask, int controller) +static void toaplan2_scroll_reg_select_w(offs_t offset, UINT16 data, UINT16 mem_mask, int controller) { if (ACCESSING_BITS_0_7) { @@ -835,7 +888,7 @@ WRITE16_HANDLER( toaplan2_1_scroll_reg_select_w ) } -static void toaplan2_scroll_reg_data_w(running_machine *machine, offs_t offset, UINT16 data, UINT32 mem_mask, int controller) +static void toaplan2_scroll_reg_data_w(running_machine *machine, offs_t offset, UINT16 data, UINT16 mem_mask, int controller) { /************************************************************************/ /***** layer X and Y flips can be set independantly, so emulate it ******/ |