summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commitae0c3e88115ccb19d2b0a097f43fb9fc6f92ba32 (patch)
treeedb247c7f4d71c938574a6bd65db91e68263ce3d
parent9e9ebc19a6966bfb2a28382ab0bb835380831659 (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.c1
-rw-r--r--src/mame/drivers/toaplan2.c164
-rw-r--r--src/mame/video/toaplan2.c115
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 ******/