1 // license:BSD-3-Clause
2 // copyright-holders:Quench, Yochizo, David Haywood
3 // thanks-to:Richard Bush
4 /*****************************************************************************
5 
6         ToaPlan      game hardware from 1991 - 1994
7         Raizing/8ing game hardware from 1993 onwards
8         -------------------------------------------------
9         Driver by: Quench and Yochizo
10         Original othldrby.c by Nicola Salmoria
11 
12    Raizing games and Truxton 2 are heavily dependent on the Raine source -
13    many thanks to Richard Bush and the Raine team. [Yochizo]
14 
15 
16 Supported games:
17 
18     Name        Board No      Maker         Game name
19     ----------------------------------------------------------------------------
20     tekipaki    TP-020        Toaplan       Teki Paki
21     tekipakit   TP-020        Toaplan       Teki Paki (location test)
22     ghox        TP-021        Toaplan       Ghox (Spinner with single up/down axis control)
23     ghoxj       TP-021        Toaplan       Ghox (8-Way Joystick controls)
24     dogyuun     TP-022        Toaplan       Dogyuun
25     dogyuuna    TP-022        Toaplan       Dogyuun (older)
26     dogyuunt    TP-022        Toaplan       Dogyuun (location test)
27     kbash       TP-023        Toaplan       Knuckle Bash
28     kbash2      bootleg       Toaplan       Knuckle Bash 2
29     truxton2    TP-024        Toaplan       Truxton 2 / Tatsujin Oh
30     pipibibs    TP-025        Toaplan       Pipi & Bibis / Whoopee!! (set 1)
31     pipibibsa   TP-025        Toaplan       Pipi & Bibis / Whoopee!! (set 2)
32     pipibibsp   TP-025        Toaplan       Pipi & Bibis / Whoopee!! (Prototype)
33     pipibibsbl  bootleg       Toaplan       Pipi & Bibis / Whoopee!! (based of the prototype)
34     whoopee    *TP-025/TP-020 Toaplan       Pipi & Bibis / Whoopee!! (Teki Paki hardware)
35     fixeight    TP-026        Toaplan       FixEight
36     fixeightbl  bootleg       Toaplan       FixEight
37     grindstm    TP-027        Toaplan       Grind Stormer (1992)
38     grindstma   TP-027        Toaplan       Grind Stormer (1992) (older)
39     vfive       TP-027        Toaplan       V-V (V-Five)  (1993 - Japan only)
40     batsugun    TP-030        Toaplan       Batsugun
41     batsuguna   TP-030        Toaplan       Batsugun (older)
42     batsugunsp  TP-030        Toaplan       Batsugun (Special Version)
43     enmadaio    TP-031        Toaplan       Enma Daio
44     pwrkick     SW931201      Sunwise       Power Kick
45     othldrby    ??????        Sunwise       Othello Derby
46     snowbro2    TP-033        Hanafram      Snow Bros. 2 - With New Elves
47 
48     * This version of Whoopee!! is on a board labeled TP-020
49       (same board number, and same hardware, as Teki Paki)
50       but the ROMs are labeled TP-025.
51 
52     sstriker    RA-MA7893-01  Raizing       Sorcer Striker
53     sstrikera   RA-MA7893-01  Raizing       Sorcer Striker (Unite Trading license)
54     mahoudai    RA-MA7893-01  Raizing       Mahou Daisakusen (Japan)
55     kingdmgp    RA-MA9402-03  Raizing/8ing  Kingdom Grandprix
56     shippumd    RA-MA9402-03  Raizing/8ing  Shippu Mahou Daisakusen (Japan)
57     bgaregga    RA9503        Raizing/8ing  Battle Garegga (World - Sat Feb 3 1996)
58     bgareggat   RA9503        Raizing/8ing  Battle Garegga (location test - Wed Jan 17 1996)
59     bgareggahk  RA9503        Raizing/8ing  Battle Garegga (Hong Kong (and Austria?) - Sat Feb 3 1996)
60     bgareggatw  RA9503        Raizing/8ing  Battle Garegga (Taiwan (and Germany?) - Thu Feb 1 1996)
61     bgaregganv  RA9503        Raizing/8ing  Battle Garegga - New Version (Hong Kong (and Austria?) - Sat Mar 2 1996)
62     bgareggat2  RA9503        Raizing/8ing  Battle Garegga - Type 2 (World - Sat Mar 2 1996)
63     bgareggacn  RA9503        Raizing/8ing  Battle Garegga - Type 2 (China (and Denmark?) - Tue Apr 2 1996)
64     batrider    RA9704        Raizing/8ing  Armed Police Batrider (Europe - Fri Feb 13 1998)
65     batrideru   RA9704        Raizing/8ing  Armed Police Batrider (USA - Fri Feb 13 1998)
66     batriderc   RA9704        Raizing/8ing  Armed Police Batrider (China - Fri Feb 13 1998)
67     batriderj   RA9704        Raizing/8ing  Armed Police Batrider - B Version (Japan - Fri Feb 13 1998)
68     batriderk   RA9704        Raizing/8ing  Armed Police Batrider (Korea - Fri Feb 13 1998)
69     batriderja  RA9704        Raizing/8ing  Armed Police Batrider (Japan - Mon Dec 22 1997)
70     batridert   RA9704        Raizing/8ing  Armed Police Batrider (Taiwan - Mon Dec 22 1997)
71     bbakraid    ET68-V99      8ing          Battle Bakraid - Unlimited Version (USA - Tue Jun 8th, 1999)
72     bbakraidj   ET68-V99      8ing          Battle Bakraid - Unlimited Version (Japan - Tue Jun 8th, 1999)
73     bbakraidja  ET68-V99      8ing          Battle Bakraid (Japan - Wed Apr 7th, 1999)
74 
75     SET NOTES:
76 
77     ghox     - The ghoxj set displays an English title screen when the jumpers are set for Japan/Taito,
78                and fails to display the "Winners Don't Use Drugs" logo when set for USA/Taito (either
79                Taito America or Taito Japan).
80 
81     dogyuun  - In the location test version, if you are hit while you have a bomb, the bomb explodes
82                automatically and saves you from dying. In the final released version, the bomb explodes
83                but you die anyway.
84                The only difference between the dogyuun and dogyuuna sets is some of the region jumper
85                settings; see the INPUT_PORTS definitions.
86 
87     truxton2 - Although the truxton2 PCB has only standard JAMMA mono audio output, and uses a YM3014B
88                mono DAC, the YM2151 music is actually sequenced in stereo. In toaplan2.h, uncomment
89                "#define TRUXTON2_STEREO" to hear the game's music the way it was originally composed.
90                Difficulty is much lower when the region is set to Europe or USA than when set to any
91                Asian region, independent of the "Difficulty" dipswitches. See the code beginning at
92                1FE94 (RAM address 1002D6 contains 0 if region is an Asian region, 1 if Europe or USA)
93 
94     fixeight - The same program is used for all regions, and the region can be changed just by swapping
95                EEPROMs. However, the V25 code also recognizes a secret input that rewrites the EEPROM to
96                use any one of the 14 recognized regional licenses, using the state of the player 1 and
97                player 2 button inputs held in conjunction with it as a 4-bit binary code:
98 
99                Region                      Button input
100                ------------------------    ------------------------------------
101                Korea, Taito license        No buttons
102                Korea                       P1 button 1
103                Hong Kong, Taito license    P1 button 2
104                Hong Kong                   P1 buttons 1 & 2
105                Taiwan, Taito license       P2 button 1
106                Taiwan                      P1 button 1 + P2 button 1
107                SE Asia, Taito license      P1 button 2 + P2 button 1
108                Southeast Asia              P1 buttons 1 & 2 + P2 button 1
109                Europe, Taito license       P2 button 2
110                Europe                      P1 button 1 + P2 button 2
111                USA, Taito license          P1 button 2 + P2 button 2
112                USA                         P1 buttons 1 & 2 + P2 button 2
113                (Invalid)                   P2 buttons 1 & 2
114                (Invalid)                   P1 button 1 + P2 buttons 1 & 2
115                Japan                       P1 button 2 + P2 buttons 1 & 2
116                Japan, Taito license        P1 buttons 1 & 2 + P2 buttons 1 & 2
117 
118     grindstm - Code at 20A26 in vfive forces region to Japan. All sets have some NOPs at reset vector,
119                and the NEC V25 CPU test that the other games do is skipped. Furthermore, all sets have
120                a broken ROM checksum routine that reads address ranges that don't match the actual
121                location or size of the ROM, and that has a hack at the end so it always passes.
122                Normally you would expect to see code like this in a bootleg, but the NOPs and other
123                oddities are identical among three different sets.
124 
125     batsugun - The Special Version has many changes to make the game easier: it adds an autofire button,
126                replaces the regular bomb with the more powerful double bomb (which in the original version
127                required both players in a two player game to press their bomb buttons at once), gives you
128                a shield that can absorb one hit each time your ship "levels up", etc. It also changes the
129                colors of the title screen, ship select screen, stages, and enemies.
130                batsugun compared to batsuguna has code that looks more like the Special Version, but it
131                doesn't have any of the Special Version features. All the differences between batsugun
132                and batsuguna look like bug fixes that were carried over into the Special Version.
133 
134     sstriker - The mahoudai set reads the region jumpers, but the lookup tables in ROM that map jumper
135                settings to copyright text, coinage settings, etc., contain identical values for every
136                jumper setting, effectively ignoring the jumpers and forcing the region to Japan.
137                On the other hand, sstriker has its title screen and all its text in English even when
138                the region is set to Japan. This seems odd but has been verified correct on two boards.
139                The only difference between sstriker and sstrikera is the copyright text displayed when
140                the region is set to Korea.
141 
142     kingdmgp - The kingdmgp and shippumd sets have identical program ROMs but a different graphics ROM
143                for the text layer. Setting the region to Japan with the kingdmgp ROM, or to anything other
144                than Japan with the shippumd ROM, results in a corrupt title screen and unreadable text.
145                In kingdmgp some of the tiles needed for the credits screen in attract mode have been
146                stripped out, resulting in boxes where letters should be. It doesn't seem very professional
147                but appears to be a genuine release. A lot of boards being sold as 'Kingdom Grand Prix' are
148                in fact conversions using Neill Corlett's hack.
149 
150     bgaregga - The later versions change the small bullet-shaped enemy bullets to bright yellow balls,
151                eliminate the flying metal debris from explosions, and require additional joystick input
152                to access the Extended, Harder, Special, and Stage Edit hidden features.
153                In addition to these changes, the bgareggat2 set uses only two buttons. Instead of being
154                able to change the formation of your options with the third button, each of the selectable
155                ships has a different, fixed option formation. However, the third button can still be used
156                to select an alternate ship color and to enter the secret character and Stage Edit codes.
157 
158     batrider - Batrider was marketed as a two button game, and the regular ships all use only the first
159                two buttons, but in the original version you need the third button in order to control the
160                options of the hidden Battle Garegga ships.
161                This problem was fixed in the B Version, which lets you change the Battle Garegga ships'
162                option formation using Street Fighter style joystick commands (as well as by using the third
163                button, if the cabinet has one)
164 
165     bbakraid - Because players managed to counter stop the original Battle Bakraid not long after release,
166                the Unlimited Version, which can display more score digits, was released as a ROM upgrade.
167                The upgrade also fixes the bug in the original version that prevented the unlocking of
168                Team Edit mode from being saved in the EEPROM.
169 
170 
171  ****************************************************************************
172  * Battle Garegga and Armed Police Batrider have secret characters          *
173  * and game features.                                                       *
174  * Try to input the following commands to use them.                         *
175  * ======================================================================== *
176  * Battle Garegga                                                           *
177  *       The button you use to select your ship not only determines its     *
178  *       color, but affects its characteristics.                            *
179  *           A: Default characteristics.                                    *
180  *           B: Slightly higher speed than A type.                          *
181  *           C: Slightly smaller hitbox than A type.                        *
182  *       A+B+C: Same speed as B type and same hitbox as C type.             *
183  *                                                                          *
184  *       After inserting a coin (pushing a credit button), input            *
185  *       UP  UP  DOWN  DOWN  LEFT  RIGHT  LEFT  RIGHT  A  B  C  START       *
186  *       then you can use Mahou Daisakusen characters.                      *
187  *                                                                          *
188  * Note: In versions of the game dated Mar 2 1996 or later, you must        *
189  *       hold the joystick RIGHT in addition to the specified button(s)     *
190  *       when entering any of the following commands. Even if Stage Edit    *
191  *       is enabled via dipswitch, you need to hold RIGHT to use it.        *
192  *                                                                          *
193  * EXTENDED:   After inserting a coin, hold A and press START.              *
194  *             You play through all stages twice before the game ends.      *
195  * HARDER:     After inserting a coin, hold B and press START.              *
196  *             Difficulty is increased.                                     *
197  * SPECIAL:    After inserting a coin, hold A and B and press START.        *
198  *             Combination of EXTENDED and HARDER modes.                    *
199  * STAGE EDIT: After inserting a coin, hold C and press START.              *
200  *             You can choose what order to play Stage 2, 3 and 4 in,       *
201  *             or even skip them.                                           *
202  *                                                                          *
203  * EXTENDED, HARDER, and SPECIAL modes each have their own high score list. *
204  * ------------------------------------------------------------------------ *
205  * Armed Police Batrider                                                    *
206  *       The button you use to select your ship not only determines its     *
207  *       color, but affects its characteristics.                            *
208  *           A: High main shot power, low option shot power.                *
209  *              Average speed. Default autofire rate is 15 Hz.              *
210  *           B: Low main shot power, high option shot power. Slightly       *
211  *              slower than A type. Default autofire rate is 12 Hz.         *
212  *           C: High main shot and option shot power, but lowest speed.     *
213  *              Default autofire rate is 20 Hz.                             *
214  *       START: Low main shot and option shot power, but highest speed.     *
215  *              Default autofire rate is 10 Hz.                             *
216  *                                                                          *
217  * Note: The following features can also be enabled via dipswitches.        *
218  *                                                                          *
219  * PLAYER SELECT: After inserting a coin, input                             *
220  *       UP  UP  DOWN  DOWN  LEFT  RIGHT  LEFT  RIGHT  B  A                 *
221  *       You can select a single character instead of a team.               *
222  * GUEST PLAYERS: After inserting a coin, input                             *
223  *       UP  UP  DOWN  DOWN  LEFT  RIGHT  LEFT  RIGHT  A  B                 *
224  *       You can use Mahou Daisakusen and Battle Garegga characters.        *
225  * SPECIAL COURSE: After inserting a coin, input                            *
226  *       UP  DOWN  UP  DOWN  LEFT  RIGHT  LEFT  RIGHT  A  B                 *
227  *       You can select the Special course, which consists of bosses only.  *
228  * STAGE EDIT: When you select your course, press A and B simultaneously.   *
229  *       You can choose what order to play Stage 2, 3 and 4 in,             *
230  *       or even skip them.                                                 *
231  ****************************************************************************
232 
233 
234  ############################################################################
235  # In Battle Bakraid, the button you use to select your ship not only       #
236  # determines its color, but affects its characteristics.                   #
237  #     A: Increased main shot power. Default autofire rate is 20 Hz.        #
238  #     B: Increased bomb blast duration. Default autofire rate is 12 Hz.    #
239  #     C: Increased side shot power. Default autofire rate is 15 Hz.        #
240  # START: Increased speed. Default autofire rate is 10 Hz.                  #
241  #                                                                          #
242  # STAGE EDIT: When you select your course, press A and B simultaneously.   #
243  #        You can choose what order to play Stage 2, 3, 4 and 5 in,         #
244  #        or even skip them. Stage Edit can also be enabled via dipswitch.  #
245  # ======================================================================== #
246  # Battle Bakraid has unlocking codes to gain access to extra players       #
247  # and game features. Once each feature is unlocked, it is saved in EEPROM  #
248  # and remains unlocked until you erase the EEPROM from the service mode.   #
249  # However, in the original (non-Unlimited) version, the unlocking of       #
250  # Team Edit is not saved in EEPROM, apparently due to a bug.               #
251  # Special thanks go to the 'R8ZING Shooter Tribute' page for finding       #
252  # and publishing this info.                                                #
253  # ======================================================================== #
254  #      PLAYER SELECT: PHASE 2                                              #
255  # Result:  3 more fighter planes available.                                #
256  # Code:    UP  UP  DOWN  DOWN  LEFT  RIGHT  LEFT  RIGHT  A  B  Start       #
257  # Conditions:                                                              #
258  #      1. Start from the title screen                                      #
259  #      2. Insert Coin                                                      #
260  #      3. Watch the 20 sec. counter and enter each part of the code right  #
261  #         between the counting.                                            #
262  # Example: 12,up,11,up,10,down,9,down,8,left,7,right,6.left,5,r..          #
263  # After entering the [B] button a chime should sound. Phase 2 unlocked!    #
264  # ------------------------------------------------------------------------ #
265  #      PLAYER SELECT: PHASE 3                                              #
266  # Result:  2 more fighter planes available.                                #
267  # Code:    UP  UP  DOWN  DOWN  LEFT  RIGHT  LEFT  RIGHT  B  A  Start       #
268  # Conditions:                                                              #
269  #      1. Unlock Player Select Phase 2 first                               #
270  #      2. Insert Coin                                                      #
271  #      3. Watch the 20 sec. counter and enter each part of the code right  #
272  #         between the counting.                                            #
273  # Important: The entering of this code has to be finished before the       #
274  # counter passes 10 ! To do so, you will have to start after coin          #
275  # insertion, right before it starts to count:                              #
276  # Example: up,19,up,18,down,17,down,16,left,15,right,14.left,..            #
277  # After entering the [A] button a chime should sound. Phase 3 unlocked!    #
278  # ------------------------------------------------------------------------ #
279  #      TEAM EDIT: ENABLE                                                   #
280  # Result:  Unlocks the 'team edit' feature to select a team of different   #
281  #          ships like in Batrider.                                         #
282  # Code:    UP  DOWN  UP  DOWN  LEFT  RIGHT  LEFT  RIGHT  A  B  Start       #
283  # Conditions:                                                              #
284  #      1. Unlock Player Select Phase 2 and Phase 3 first                   #
285  #      2. Insert Coin                                                      #
286  #      3. Watch the 20 sec. counter and enter each part of the code right  #
287  #         between the counting.                                            #
288  # Important: This code hast to be entered so that the counter is at 0 when #
289  # you press the final button [B]. To do so, start after second 9:          #
290  # Example: 9,up,8,down,7,up,6,down,5,left,4,right,3,left,2,right,1,A,0,B   #
291  # After entering the [B] button a chime should sound. Team edit unlocked!  #
292  #                                                                          #
293  # Note: In the Japan version, to use Team Edit after unlocking it,         #
294  #       you must hold UP or DOWN  while selecting your course.             #
295  #       In the USA version, if Team Edit is unlocked, the game asks you    #
296  #       if you want to use it after you select your course.                #
297  # ------------------------------------------------------------------------ #
298  #      SPECIAL COURSE: ENABLE                                              #
299  # Result:  Unlocks the Special course, a game mode where you fight the     #
300  #          bosses only.                                                    #
301  # Code:    UP  DOWN  UP  DOWN  LEFT  RIGHT  LEFT  RIGHT  B  A  Start       #
302  # Conditions:                                                              #
303  #      1. Start from the title screen                                      #
304  #      2. Hold [C] button                                                  #
305  #      3. Insert Coin                                                      #
306  #      4. Watch the 20 sec. counter and enter each part of the code right  #
307  #         between the counting.                                            #
308  #      5. Release [C] button                                               #
309  # After entering the [A] button a chime should sound. Special course       #
310  # unlocked!                                                                #
311  ############################################################################
312 
313 
314 
315 *************** Hardware Info ***************
316 
317 CPU:
318  MC68000P10
319  TMP68HC000N-16
320 
321 Sound CPU/MCU:
322  HD647180X0FS6 (Hitachi Z180 Compatible CPU with internal 16k ROM)
323  Z84C0006PEC (Z80)
324  NEC V25
325 
326 Sound Chips:
327  YM3812 + YM3014B (DAC)
328  YM2151 + YM3014B
329  YM2151 + YM3014B + M6295
330  YM2151 + YM3012 (DAC) + M6295 + M6295
331  YMZ280B-F + YAC516-E (DAC)
332 
333 Graphics Custom 208pin QFP:
334  GP9001 L7A0498 TOA PLAN
335  (emulated in video/gp9001.c)
336 
337 *********************************************************************
338 
339 Game status:
340 
341 Teki Paki                      Working. MCU type is a Hitachi HD647180.
342 Ghox                           Working, MCU type is a Hitachi HD647180.
343 Dogyuun                        Working. MCU type is a NEC V25. Chip is a PLCC94 stamped 'TS-002-MACH'.*
344 Knuckle Bash                   Working. MCU type is a NEC V25. Chip is a PLCC94 stamped 'TS-004-DASH'.*
345 Truxton 2                      Working.
346 Pipi & Bibis                   Working.
347 Pipi & Bibis (Teki Paki h/w)   Working, MCU type is a Hitachi HD647180.
348 Pipi & Bibis bootleg           Working. One unknown ROM.
349 FixEight                       Working. MCU type is a NEC V25. Chip is a PLCC94 stamped 'TS-001-TURBO'
350 FixEight bootleg               Working. One unknown ROM (same as pipibibs bootleg one). Region hardcoded to Korea (@ $4d8)
351 Grind Stormer / VFive          Working. MCU type is a NEC V25. Chip is a PLCC94 stamped 'TS-007-SPY'.*
352 Batsugun / Batsugun Sp'        Working. MCU type is a NEC V25. Chip is a PLCC94 stamped 'TS-007-SPY'.*
353 Snow Bros. 2                   Working.
354 Mahou Daisakusen               Working.
355 Shippu Mahou Daisakusen        Working.
356 Battle Garegga                 Working.
357 Armed Police Batrider          Working.
358 Battle Bakraid                 Working.
359 
360 * Some PCBs use another version stamped 'NITRO' which is the same chip type.
361   MACH, DASH and SPY seem to be the same chip (same encryption table)
362   Batsugun has the CPU hooked up in non-encrypted mode.
363 
364 Notes:
365     See Input Port definition header below, for instructions
366       on how to enter pause/slow motion modes.
367 
368 To Do / Unknowns:
369     - Whoopee/Teki Paki sometimes tests bit 5 of the region jumper port
370         just after testing for vblank. Why?
371     - Priority problem on 2nd player side of selection screen in Fixeight bootleg.
372     - Fixeight bootleg text in sound check mode does not display properly
373         with the CPU set to 10MHz (ok at 16MHz). Possible error in video_count_r routine.
374     - Need to sort out the video status register.
375     - Find out how exactly how sound CPU communication really works in bgaregga/batrider/bbakraid
376         current emulation seems to work (plays all sounds), but there are still some unknown reads/writes
377     - Music timing is bit different on bbakraid.
378         reference : https://www.youtube.com/watch?v=zjrWs0iHQ5A
379 
380 Notes on Power Kick coin inputs:
381 - The 10 yen input is "Key In" according to the bookkeeping screen, but is
382   an otherwise normal coin input with a counter and a lockout (sharing the
383   latter with the "medal" coin).
384 - The 100 yen input never adds any credits except in "Coin Function Check,"
385   instead dispensing its value into the hopper immediately.
386 
387 To reset the NVRAM in Othello Derby, hold P1 Button 1 down while booting.
388 
389 *****************************************************************************/
390 
391 
392 #include "emu.h"
393 #include "includes/toaplan2.h"
394 #include "includes/toaplipt.h"
395 
396 #include "cpu/nec/v25.h"
397 #include "cpu/z80/z80.h"
398 #include "cpu/z180/hd647180x.h"
399 #include "machine/nvram.h"
400 #include "sound/3812intf.h"
401 #include "sound/ym2151.h"
402 #include "sound/ymz280b.h"
403 #include "speaker.h"
404 
405 
406 #define UNICODE_YEN             "\xC2\xA5"
407 #define PWRKICK_HOPPER_PULSE    50          // time between hopper pulses in milliseconds (probably wrong)
408 
409 //#define TRUXTON2_STEREO       /* Uncomment to hear truxton2 music in stereo */
410 
411 constexpr unsigned toaplan2_state::T2PALETTE_LENGTH;
412 
413 
414 /***************************************************************************
415   Initialisation handlers
416 ***************************************************************************/
417 
418 
machine_start()419 void toaplan2_state::machine_start()
420 {
421 	save_item(NAME(m_old_p1_paddle_h));
422 	save_item(NAME(m_old_p2_paddle_h));
423 	save_item(NAME(m_z80_busreq));
424 }
425 
426 
WRITE_LINE_MEMBER(toaplan2_state::toaplan2_reset)427 WRITE_LINE_MEMBER(toaplan2_state::toaplan2_reset)
428 {
429 	if (m_audiocpu != nullptr)
430 		m_audiocpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
431 }
432 
433 
MACHINE_RESET_MEMBER(toaplan2_state,toaplan2)434 MACHINE_RESET_MEMBER(toaplan2_state,toaplan2)
435 {
436 	// All games execute a RESET instruction on init, presumably to reset the sound CPU.
437 	// This is important for games with common RAM; the RAM test will fail
438 	// when leaving service mode if the sound CPU is not reset.
439 	m_maincpu->set_reset_callback(*this, FUNC(toaplan2_state::toaplan2_reset));
440 }
441 
442 
MACHINE_RESET_MEMBER(toaplan2_state,ghox)443 MACHINE_RESET_MEMBER(toaplan2_state,ghox)
444 {
445 	MACHINE_RESET_CALL_MEMBER(toaplan2);
446 	m_old_p1_paddle_h = 0;
447 	m_old_p2_paddle_h = 0;
448 }
449 
450 
MACHINE_RESET_MEMBER(toaplan2_state,bgaregga)451 MACHINE_RESET_MEMBER(toaplan2_state,bgaregga)
452 {
453 	MACHINE_RESET_CALL_MEMBER(toaplan2);
454 	for (int chip = 0; chip < 2; chip++)
455 	{
456 		for (int i = 0; i < 8; i++)
457 		{
458 			if (m_raizing_okibank[chip][i] != nullptr)
459 				m_raizing_okibank[chip][i]->set_entry(0);
460 		}
461 	}
462 }
463 
464 
init_dogyuun()465 void toaplan2_state::init_dogyuun()
466 {
467 	m_sound_reset_bit = 0x20;
468 }
469 
470 
init_fixeight()471 void toaplan2_state::init_fixeight()
472 {
473 	m_sound_reset_bit = 0x08;
474 }
475 
476 
init_fixeightbl()477 void toaplan2_state::init_fixeightbl()
478 {
479 	u8 *ROM = memregion("oki1")->base();
480 
481 	m_okibank->configure_entries(0, 5, &ROM[0x30000], 0x10000);
482 }
483 
484 
init_vfive()485 void toaplan2_state::init_vfive()
486 {
487 	m_sound_reset_bit = 0x10;
488 }
489 
490 
init_pipibibsbl()491 void toaplan2_state::init_pipibibsbl()
492 {
493 	u16 *ROM = (u16 *)(memregion("maincpu")->base());
494 
495 	for (int i = 0; i < (0x040000/2); i += 4)
496 	{
497 		ROM[i+0] = bitswap<16>(ROM[i+0],0x1,0x5,0x6,0x7,0x8,0x2,0x0,0x9,0xe,0xd,0x4,0x3,0xf,0xa,0xb,0xc);
498 		ROM[i+1] = bitswap<16>(ROM[i+1],0x5,0x3,0x1,0xf,0xd,0xb,0x9,0x0,0x2,0x4,0x6,0x8,0xa,0xc,0xe,0x7);
499 		ROM[i+2] = bitswap<16>(ROM[i+2],0xc,0xd,0xe,0xf,0x8,0x9,0xa,0xb,0x3,0x2,0x1,0x0,0x7,0x6,0x5,0x4);
500 		ROM[i+3] = bitswap<16>(ROM[i+3],0x8,0x9,0xa,0xb,0xc,0xd,0xe,0xf,0x3,0x2,0x1,0x0,0x7,0x6,0x5,0x4);
501 	}
502 }
503 
install_raizing_okibank(int chip)504 void toaplan2_state::install_raizing_okibank(int chip)
505 {
506 	assert(m_oki_rom[chip] && m_raizing_okibank[chip][0]);
507 
508 	for (int i = 0; i < 4; i++)
509 	{
510 		m_raizing_okibank[chip][i]->configure_entries(0, 16, &m_oki_rom[chip][(i * 0x100)], 0x10000);
511 	}
512 	m_raizing_okibank[chip][4]->configure_entries(0, 16, &m_oki_rom[chip][0x400], 0x10000);
513 	for (int i = 5; i < 8; i++)
514 	{
515 		m_raizing_okibank[chip][i]->configure_entries(0, 16, &m_oki_rom[chip][0], 0x10000);
516 	}
517 }
518 
init_bgaregga()519 void toaplan2_state::init_bgaregga()
520 {
521 	u8 *Z80 = memregion("audiocpu")->base();
522 
523 	m_audiobank->configure_entries(0, 8, Z80, 0x4000); // Test mode only, Mirror of First 128KB Areas?
524 	m_audiobank->configure_entries(8, 8, Z80, 0x4000);
525 	install_raizing_okibank(0);
526 }
527 
528 
init_batrider()529 void toaplan2_state::init_batrider()
530 {
531 	u8 *Z80 = memregion("audiocpu")->base();
532 
533 	m_audiobank->configure_entries(0, 16, Z80, 0x4000);
534 	install_raizing_okibank(0);
535 	install_raizing_okibank(1);
536 	m_sndirq_line = 4;
537 }
538 
539 
init_bbakraid()540 void toaplan2_state::init_bbakraid()
541 {
542 	m_sndirq_line = 2;
543 }
544 
init_enmadaio()545 void toaplan2_state::init_enmadaio()
546 {
547 	u8 *ROM = memregion("oki1")->base();
548 
549 	m_okibank->configure_entries(0, 0x60, ROM, 0x40000);
550 	m_okibank->set_entry(0);
551 }
552 
553 
554 /***************************************************************************
555   Toaplan games
556 ***************************************************************************/
557 
cpu_space_fixeightbl_map(address_map & map)558 void toaplan2_state::cpu_space_fixeightbl_map(address_map &map)
559 {
560 	map(0xfffff0, 0xffffff).m(m_maincpu, FUNC(m68000_base_device::autovectors_map));
561 	map(0xfffff5, 0xfffff5).lr8(NAME([this] () { m_maincpu->set_input_line(M68K_IRQ_2, CLEAR_LINE); return m68000_device::autovector(2); }));
562 }
563 
cpu_space_pipibibsbl_map(address_map & map)564 void toaplan2_state::cpu_space_pipibibsbl_map(address_map &map)
565 {
566 	map(0xfffff0, 0xffffff).m(m_maincpu, FUNC(m68000_base_device::autovectors_map));
567 	map(0xfffff9, 0xfffff9).lr8(NAME([this] () { m_maincpu->set_input_line(M68K_IRQ_4, CLEAR_LINE); return m68000_device::autovector(4); }));
568 }
569 
570 
video_count_r()571 u16 toaplan2_state::video_count_r()
572 {
573 	/* +---------+---------+--------+---------------------------+ */
574 	/* | /H-Sync | /V-Sync | /Blank |       Scanline Count      | */
575 	/* | Bit 15  | Bit 14  | Bit 8  |  Bit 7-0 (count from #EF) | */
576 	/* +---------+---------+--------+---------------------------+ */
577 	/*************** Control Signals are active low ***************/
578 
579 	int vpos = m_screen->vpos();
580 
581 	u16 video_status = 0xff00;    // Set signals inactive
582 
583 	vpos = (vpos + 15) % 262;
584 
585 	if (!m_vdp[0]->hsync_r())
586 		video_status &= ~0x8000;
587 	if (!m_vdp[0]->vsync_r())
588 		video_status &= ~0x4000;
589 	if (!m_vdp[0]->fblank_r())
590 		video_status &= ~0x0100;
591 	if (vpos < 256)
592 		video_status |= (vpos & 0xff);
593 	else
594 		video_status |= 0xff;
595 
596 //  logerror("VC: vpos=%04x hpos=%04x VBL=%04x\n",vpos,hpos,m_screen->vblank());
597 
598 	return video_status;
599 }
600 
601 
coin_w(u8 data)602 void toaplan2_state::coin_w(u8 data)
603 {
604 	/* +----------------+------ Bits 7-5 not used ------+--------------+ */
605 	/* | Coin Lockout 2 | Coin Lockout 1 | Coin Count 2 | Coin Count 1 | */
606 	/* |     Bit 3      |     Bit 2      |     Bit 1    |     Bit 0    | */
607 
608 	if (data & 0x0f)
609 	{
610 		machine().bookkeeping().coin_lockout_w(0, BIT(~data, 2));
611 		machine().bookkeeping().coin_lockout_w(1, BIT(~data, 3));
612 		machine().bookkeeping().coin_counter_w(0, BIT( data, 0));
613 		machine().bookkeeping().coin_counter_w(1, BIT( data, 1));
614 	}
615 	else
616 	{
617 		machine().bookkeeping().coin_lockout_global_w(1);    // Lock all coin slots
618 	}
619 	if (data & 0xf0)
620 	{
621 		logerror("Writing unknown upper bits (%02x) to coin control\n",data);
622 	}
623 }
624 
pwrkick_coin_w(u8 data)625 void toaplan2_state::pwrkick_coin_w(u8 data)
626 {
627 	machine().bookkeeping().coin_counter_w(0, BIT(data, 1)); // medal
628 	machine().bookkeeping().coin_counter_w(1, BIT(data, 3)); // 10 yen
629 	machine().bookkeeping().coin_counter_w(2, BIT(data, 0)); // 100 yen
630 	m_hopper->motor_w(BIT(data, 7));
631 }
632 
pwrkick_coin_lockout_w(u8 data)633 void toaplan2_state::pwrkick_coin_lockout_w(u8 data)
634 {
635 	machine().bookkeeping().coin_lockout_w(0, BIT(~data, 2));
636 	machine().bookkeeping().coin_lockout_w(1, BIT(~data, 2));
637 	machine().bookkeeping().coin_lockout_w(2, BIT(~data, 1));
638 }
639 
640 
coin_sound_reset_w(u8 data)641 void toaplan2_state::coin_sound_reset_w(u8 data)
642 {
643 	logerror("coin_sound_reset_w %02x\n",data);
644 
645 	coin_w(data & ~m_sound_reset_bit);
646 	sound_reset_w(data & m_sound_reset_bit);
647 }
648 
649 
shippumd_coin_w(u8 data)650 void toaplan2_state::shippumd_coin_w(u8 data)
651 {
652 	coin_w(data & ~0x10);
653 	m_oki[0]->set_rom_bank(BIT(data, 4));
654 }
655 
656 
shared_ram_r(offs_t offset)657 u8 toaplan2_state::shared_ram_r(offs_t offset)
658 {
659 	return m_shared_ram[offset];
660 }
661 
662 
shared_ram_w(offs_t offset,u8 data)663 void toaplan2_state::shared_ram_w(offs_t offset, u8 data)
664 {
665 	m_shared_ram[offset] = data;
666 }
667 
668 
READ_LINE_MEMBER(toaplan2_state::c2map_r)669 READ_LINE_MEMBER(toaplan2_state::c2map_r)
670 {
671 	// For Teki Paki hardware
672 	// bit 4 high signifies secondary CPU is ready
673 	// bit 5 is tested low before V-Blank bit ???
674 
675 	return m_soundlatch->pending_r() ? 0x00 : 0x01;
676 }
677 
678 
ghox_p1_h_analog_r()679 u16 toaplan2_state::ghox_p1_h_analog_r()
680 {
681 	const s8 new_value = m_io_pad[0]->read();
682 	if (new_value == m_old_p1_paddle_h) return 0;
683 	const s8 value = new_value - m_old_p1_paddle_h;
684 	if (!machine().side_effects_disabled())
685 		m_old_p1_paddle_h = new_value;
686 	return value;
687 }
688 
689 
ghox_p2_h_analog_r()690 u16 toaplan2_state::ghox_p2_h_analog_r()
691 {
692 	const s8 new_value = m_io_pad[1]->read();
693 	if (new_value == m_old_p2_paddle_h) return 0;
694 	const s8 value = new_value - m_old_p2_paddle_h;
695 	if (!machine().side_effects_disabled())
696 		m_old_p2_paddle_h = new_value;
697 	return value;
698 }
699 
sound_reset_w(u8 data)700 void toaplan2_state::sound_reset_w(u8 data)
701 {
702 	m_audiocpu->set_input_line(INPUT_LINE_RESET, (data & m_sound_reset_bit) ? CLEAR_LINE : ASSERT_LINE);
703 }
704 
705 template<int Chip>
oki_bankswitch_w(u8 data)706 void toaplan2_state::oki_bankswitch_w(u8 data)
707 {
708 	m_oki[Chip]->set_rom_bank(data & 1);
709 }
710 
fixeightbl_oki_bankswitch_w(u8 data)711 void toaplan2_state::fixeightbl_oki_bankswitch_w(u8 data)
712 {
713 	data &= 7;
714 	if (data <= 4) m_okibank->set_entry(data);
715 }
716 
717 
718 /***************************************************************************
719   Raizing games
720 ***************************************************************************/
721 
722 
raizing_z80_bankswitch_w(u8 data)723 void toaplan2_state::raizing_z80_bankswitch_w(u8 data)
724 {
725 	m_audiobank->set_entry(data & 0x0f);
726 }
727 
728 
729 // bgaregga and batrider don't actually have a NMK112, but rather a GAL
730 // programmed to bankswitch the sound ROMs in a similar fashion.
731 // it may not be a coincidence that the composer and sound designer for
732 // these two games, Manabu "Santaruru" Namiki, came to Raizing from NMK...
733 
raizing_oki_bankswitch_w(offs_t offset,u8 data)734 void toaplan2_state::raizing_oki_bankswitch_w(offs_t offset, u8 data)
735 {
736 	m_raizing_okibank[(offset & 4) >> 2][offset & 3]->set_entry(data & 0xf);
737 	m_raizing_okibank[(offset & 4) >> 2][4 + (offset & 3)]->set_entry(data & 0xf);
738 	offset++;
739 	data >>= 4;
740 	m_raizing_okibank[(offset & 4) >> 2][offset & 3]->set_entry(data & 0xf);
741 	m_raizing_okibank[(offset & 4) >> 2][4 + (offset & 3)]->set_entry(data & 0xf);
742 }
743 
744 
bgaregga_E01D_r()745 u8 toaplan2_state::bgaregga_E01D_r()
746 {
747 	// the Z80 reads this address during its IRQ routine,
748 	// and reads the soundlatch only if the lowest bit is clear.
749 	return m_soundlatch->pending_r() ? 0 : 1;
750 }
751 
752 
batrider_z80_busack_r()753 u16 toaplan2_state::batrider_z80_busack_r()
754 {
755 	// Bit 0x01 returns the status of BUSAK from the Z80.
756 	// These accesses are made when the 68K wants to read the Z80
757 	// ROM code. Failure to return the correct status incurrs a Sound Error.
758 
759 	return m_z80_busreq;    // Loop BUSRQ to BUSAK
760 }
761 
762 
batrider_z80_busreq_w(u8 data)763 void toaplan2_state::batrider_z80_busreq_w(u8 data)
764 {
765 	m_z80_busreq = (data & 0x01);   // see batrider_z80_busack_r above
766 }
767 
768 
batrider_z80rom_r(offs_t offset)769 u16 toaplan2_state::batrider_z80rom_r(offs_t offset)
770 {
771 	return m_z80_rom[offset];
772 }
773 
774 // these two latches are always written together, via a single move.l instruction
batrider_soundlatch_w(u8 data)775 void toaplan2_state::batrider_soundlatch_w(u8 data)
776 {
777 	m_soundlatch->write(data & 0xff);
778 	m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
779 }
780 
781 
batrider_soundlatch2_w(u8 data)782 void toaplan2_state::batrider_soundlatch2_w(u8 data)
783 {
784 	m_soundlatch2->write(data & 0xff);
785 	m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
786 }
787 
batrider_unknown_sound_w(u16 data)788 void toaplan2_state::batrider_unknown_sound_w(u16 data)
789 {
790 	// the 68K writes here when it wants a sound acknowledge IRQ from the Z80
791 	// for bbakraid this is on every sound command; for batrider, only on certain commands
792 }
793 
794 
batrider_clear_sndirq_w(u16 data)795 void toaplan2_state::batrider_clear_sndirq_w(u16 data)
796 {
797 	// not sure whether this is correct
798 	// the 68K writes here during the sound IRQ handler, and nowhere else...
799 	m_maincpu->set_input_line(m_sndirq_line, CLEAR_LINE);
800 }
801 
802 
batrider_sndirq_w(u8 data)803 void toaplan2_state::batrider_sndirq_w(u8 data)
804 {
805 	// if batrider_clear_sndirq_w() is correct, should this be ASSERT_LINE?
806 	m_maincpu->set_input_line(m_sndirq_line, HOLD_LINE);
807 }
808 
809 
batrider_clear_nmi_w(u8 data)810 void toaplan2_state::batrider_clear_nmi_w(u8 data)
811 {
812 	m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
813 }
814 
815 
bbakraid_eeprom_r()816 u16 toaplan2_state::bbakraid_eeprom_r()
817 {
818 	// Bit 0x01 returns the status of BUSAK from the Z80.
819 	// BUSRQ is activated via bit 0x10 on the EEPROM write port.
820 	// These accesses are made when the 68K wants to read the Z80
821 	// ROM code. Failure to return the correct status incurrs a Sound Error.
822 
823 	u8 data;
824 	data  = ((m_eeprom->do_read() & 0x01) << 4);
825 	data |= ((m_z80_busreq >> 4) & 0x01);   // Loop BUSRQ to BUSAK
826 
827 	return data;
828 }
829 
830 
bbakraid_eeprom_w(u8 data)831 void toaplan2_state::bbakraid_eeprom_w(u8 data)
832 {
833 	if (data & ~0x1f)
834 		logerror("CPU #0 PC:%06X - Unknown EEPROM data being written %02X\n",m_maincpu->pc(),data);
835 
836 	m_eepromout->write(data, 0xff);
837 
838 	m_z80_busreq = data & 0x10; // see bbakraid_eeprom_r above
839 }
840 
841 
INTERRUPT_GEN_MEMBER(toaplan2_state::bbakraid_snd_interrupt)842 INTERRUPT_GEN_MEMBER(toaplan2_state::bbakraid_snd_interrupt)
843 {
844 	device.execute().set_input_line(0, HOLD_LINE);
845 }
846 
847 
tekipaki_68k_mem(address_map & map)848 void toaplan2_state::tekipaki_68k_mem(address_map &map)
849 {
850 	map(0x000000, 0x01ffff).rom();
851 	map(0x020000, 0x03ffff).rom();                     // extra for Whoopee
852 	map(0x080000, 0x082fff).ram();
853 	map(0x0c0000, 0x0c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
854 	map(0x140000, 0x14000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
855 	map(0x180000, 0x180001).portr("DSWA");
856 	map(0x180010, 0x180011).portr("DSWB");
857 	map(0x180020, 0x180021).portr("SYS");
858 	map(0x180030, 0x180031).portr("JMPR");           // CPU 2 busy and Region Jumper block
859 	map(0x180041, 0x180041).w(FUNC(toaplan2_state::coin_w));
860 	map(0x180050, 0x180051).portr("IN1");
861 	map(0x180060, 0x180061).portr("IN2");
862 	map(0x180071, 0x180071).w(m_soundlatch, FUNC(generic_latch_8_device::write));
863 }
864 
865 
ghox_68k_mem(address_map & map)866 void toaplan2_state::ghox_68k_mem(address_map &map)
867 {
868 	map(0x000000, 0x03ffff).rom();
869 	map(0x040000, 0x040001).r(FUNC(toaplan2_state::ghox_p2_h_analog_r));
870 	map(0x080000, 0x083fff).ram();
871 	map(0x0c0000, 0x0c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
872 	map(0x100000, 0x100001).r(FUNC(toaplan2_state::ghox_p1_h_analog_r));
873 	map(0x140000, 0x14000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
874 	map(0x180000, 0x180fff).rw(FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w)).umask16(0x00ff);
875 	map(0x181001, 0x181001).w(FUNC(toaplan2_state::coin_w));
876 	map(0x18100c, 0x18100d).portr("JMPR");
877 }
878 
879 
dogyuun_68k_mem(address_map & map)880 void toaplan2_state::dogyuun_68k_mem(address_map &map)
881 {
882 	map(0x000000, 0x07ffff).rom();
883 	map(0x100000, 0x103fff).ram();
884 	map(0x200010, 0x200011).portr("IN1");
885 	map(0x200014, 0x200015).portr("IN2");
886 	map(0x200018, 0x200019).portr("SYS");
887 	map(0x20001d, 0x20001d).w(FUNC(toaplan2_state::coin_sound_reset_w)); // Coin count/lock + v25 reset line
888 	map(0x210000, 0x21ffff).rw(FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w)).umask16(0x00ff);
889 	map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
890 	map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
891 	map(0x500000, 0x50000d).rw(m_vdp[1], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
892 	map(0x700000, 0x700001).r(FUNC(toaplan2_state::video_count_r));         // test bit 8
893 }
894 
895 
kbash_68k_mem(address_map & map)896 void toaplan2_state::kbash_68k_mem(address_map &map)
897 {
898 	map(0x000000, 0x07ffff).rom();
899 	map(0x100000, 0x103fff).ram();
900 	map(0x200000, 0x200fff).rw(FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w)).umask16(0x00ff);
901 	map(0x208010, 0x208011).portr("IN1");
902 	map(0x208014, 0x208015).portr("IN2");
903 	map(0x208018, 0x208019).portr("SYS");
904 	map(0x20801d, 0x20801d).w(FUNC(toaplan2_state::coin_w));
905 	map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
906 	map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
907 	map(0x700000, 0x700001).r(FUNC(toaplan2_state::video_count_r));         // test bit 8
908 }
909 
910 
kbash2_68k_mem(address_map & map)911 void toaplan2_state::kbash2_68k_mem(address_map &map)
912 {
913 	map(0x000000, 0x07ffff).rom();
914 	map(0x100000, 0x103fff).ram();
915 	map(0x104000, 0x10401f).ram();         // Sound related?
916 	map(0x200000, 0x200001).noprw();         // Left over from original code - Sound Number write, Status read
917 	map(0x200002, 0x200003).nopw();    // Left over from original code - Reset Sound
918 	map(0x200004, 0x200005).portr("DSWA");
919 	map(0x200008, 0x200009).portr("DSWB");
920 	map(0x20000c, 0x20000d).portr("JMPR");
921 	map(0x200010, 0x200011).portr("IN1");
922 	map(0x200014, 0x200015).portr("IN2");
923 	map(0x200018, 0x200019).portr("SYS");
924 	map(0x200021, 0x200021).rw(m_oki[1], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
925 	map(0x200025, 0x200025).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
926 	map(0x200029, 0x200029).w(FUNC(toaplan2_state::oki_bankswitch_w<0>));
927 	map(0x20002c, 0x20002d).r(FUNC(toaplan2_state::video_count_r));
928 	map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
929 	map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
930 }
931 
932 
truxton2_68k_mem(address_map & map)933 void toaplan2_state::truxton2_68k_mem(address_map &map)
934 {
935 	map(0x000000, 0x07ffff).rom();
936 	map(0x100000, 0x10ffff).ram();
937 	map(0x200000, 0x20000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
938 	map(0x300000, 0x300fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
939 	map(0x400000, 0x401fff).ram().w(FUNC(toaplan2_state::tx_videoram_w)).share("tx_videoram");
940 	map(0x402000, 0x402fff).ram().share("tx_lineselect");
941 	map(0x403000, 0x4031ff).ram().w(FUNC(toaplan2_state::tx_linescroll_w)).share("tx_linescroll");
942 	map(0x403200, 0x403fff).ram();
943 	map(0x500000, 0x50ffff).ram().w(FUNC(toaplan2_state::tx_gfxram_w)).share("tx_gfxram");
944 	map(0x600000, 0x600001).r(FUNC(toaplan2_state::video_count_r));
945 	map(0x700000, 0x700001).portr("DSWA");
946 	map(0x700002, 0x700003).portr("DSWB");
947 	map(0x700004, 0x700005).portr("JMPR");
948 	map(0x700006, 0x700007).portr("IN1");
949 	map(0x700008, 0x700009).portr("IN2");
950 	map(0x70000a, 0x70000b).portr("SYS");
951 	map(0x700011, 0x700011).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
952 	map(0x700014, 0x700017).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
953 	map(0x70001f, 0x70001f).w(FUNC(toaplan2_state::coin_w));
954 }
955 
956 
pipibibs_68k_mem(address_map & map)957 void toaplan2_state::pipibibs_68k_mem(address_map &map)
958 {
959 	map(0x000000, 0x03ffff).rom();
960 	map(0x080000, 0x082fff).ram();
961 	map(0x0c0000, 0x0c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
962 	map(0x140000, 0x14000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
963 	map(0x190000, 0x190fff).rw(FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w)).umask16(0x00ff);
964 	map(0x19c01d, 0x19c01d).w(FUNC(toaplan2_state::coin_w));
965 	map(0x19c020, 0x19c021).portr("DSWA");
966 	map(0x19c024, 0x19c025).portr("DSWB");
967 	map(0x19c028, 0x19c029).portr("JMPR");
968 	map(0x19c02c, 0x19c02d).portr("SYS");
969 	map(0x19c030, 0x19c031).portr("IN1");
970 	map(0x19c034, 0x19c035).portr("IN2");
971 }
972 
973 // odd scroll registers
pipibibi_bootleg_68k_mem(address_map & map)974 void toaplan2_state::pipibibi_bootleg_68k_mem(address_map &map)
975 {
976 	map(0x000000, 0x03ffff).rom();
977 	map(0x080000, 0x082fff).ram();
978 	map(0x083000, 0x0837ff).rw(m_vdp[0], FUNC(gp9001vdp_device::pipibibi_bootleg_spriteram16_r), FUNC(gp9001vdp_device::pipibibi_bootleg_spriteram16_w));   // SpriteRAM
979 	map(0x083800, 0x087fff).ram();             // SpriteRAM (unused)
980 	map(0x0c0000, 0x0c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
981 	map(0x120000, 0x120fff).ram();             // Copy of SpriteRAM ?
982 //  map(0x13f000, 0x13f001).nopw();        // ???
983 	map(0x180000, 0x182fff).rw(m_vdp[0], FUNC(gp9001vdp_device::pipibibi_bootleg_videoram16_r), FUNC(gp9001vdp_device::pipibibi_bootleg_videoram16_w)); // TileRAM
984 	map(0x188000, 0x18800f).w(m_vdp[0], FUNC(gp9001vdp_device::pipibibi_bootleg_scroll_w));
985 	map(0x190003, 0x190003).r(FUNC(toaplan2_state::shared_ram_r));  // Z80 ready ?
986 	map(0x190011, 0x190011).w(FUNC(toaplan2_state::shared_ram_w)); // Z80 task to perform
987 	map(0x19c01d, 0x19c01d).w(FUNC(toaplan2_state::coin_w));
988 	map(0x19c020, 0x19c021).portr("DSWA");
989 	map(0x19c024, 0x19c025).portr("DSWB");
990 	map(0x19c028, 0x19c029).portr("JMPR");
991 	map(0x19c02c, 0x19c02d).portr("SYS");
992 	map(0x19c030, 0x19c031).portr("IN1");
993 	map(0x19c034, 0x19c035).portr("IN2");
994 }
995 
996 
fixeight_68k_mem(address_map & map)997 void toaplan2_state::fixeight_68k_mem(address_map &map)
998 {
999 	map(0x000000, 0x07ffff).rom();
1000 	map(0x100000, 0x103fff).ram();
1001 	map(0x200000, 0x200001).portr("IN1");
1002 	map(0x200004, 0x200005).portr("IN2");
1003 	map(0x200008, 0x200009).portr("IN3");
1004 	map(0x200010, 0x200011).portr("SYS");
1005 	map(0x20001d, 0x20001d).w(FUNC(toaplan2_state::coin_w));
1006 	map(0x280000, 0x28ffff).rw(FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w)).umask16(0x00ff);
1007 	map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
1008 	map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
1009 	map(0x500000, 0x501fff).ram().w(FUNC(toaplan2_state::tx_videoram_w)).share("tx_videoram");
1010 	map(0x502000, 0x5021ff).ram().share("tx_lineselect");
1011 	map(0x503000, 0x5031ff).ram().w(FUNC(toaplan2_state::tx_linescroll_w)).share("tx_linescroll");
1012 	map(0x600000, 0x60ffff).ram().w(FUNC(toaplan2_state::tx_gfxram_w)).share("tx_gfxram");
1013 	map(0x700000, 0x700001).w(FUNC(toaplan2_state::sound_reset_w)).umask16(0x00ff).cswidth(16);
1014 	map(0x800000, 0x800001).r(FUNC(toaplan2_state::video_count_r));
1015 }
1016 
1017 
fixeightbl_68k_mem(address_map & map)1018 void toaplan2_state::fixeightbl_68k_mem(address_map &map)
1019 {
1020 	map(0x000000, 0x0fffff).rom();     // 0-7ffff ?
1021 	map(0x100000, 0x10ffff).ram();     // 100000-107fff  105000-105xxx  106000-106xxx  108000 - related to sound ?
1022 	map(0x200000, 0x200001).portr("IN1");
1023 	map(0x200004, 0x200005).portr("IN2");
1024 	map(0x200008, 0x200009).portr("IN3");
1025 	map(0x20000c, 0x20000d).portr("DSWB");
1026 	map(0x200010, 0x200011).portr("SYS");
1027 	map(0x200015, 0x200015).w(FUNC(toaplan2_state::fixeightbl_oki_bankswitch_w));  // Sound banking. Code at $4084c, $5070
1028 	map(0x200019, 0x200019).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
1029 	map(0x20001c, 0x20001d).portr("DSWA");
1030 	map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
1031 	map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
1032 	map(0x500000, 0x501fff).ram().w(FUNC(toaplan2_state::tx_videoram_w)).share("tx_videoram");
1033 	map(0x700000, 0x700001).r(FUNC(toaplan2_state::video_count_r));
1034 	map(0x800000, 0x87ffff).rom().region("maincpu", 0x80000);
1035 }
1036 
1037 
vfive_68k_mem(address_map & map)1038 void toaplan2_state::vfive_68k_mem(address_map &map)
1039 {
1040 	map(0x000000, 0x07ffff).rom();
1041 	map(0x100000, 0x103fff).ram();
1042 //  map(0x200000, 0x20ffff).noprw(); // Read at startup by broken ROM checksum code - see notes
1043 	map(0x200010, 0x200011).portr("IN1");
1044 	map(0x200014, 0x200015).portr("IN2");
1045 	map(0x200018, 0x200019).portr("SYS");
1046 	map(0x20001d, 0x20001d).w(FUNC(toaplan2_state::coin_sound_reset_w)); // Coin count/lock + v25 reset line
1047 	map(0x210000, 0x21ffff).rw(FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w)).umask16(0x00ff);
1048 	map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
1049 	map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
1050 	map(0x700000, 0x700001).r(FUNC(toaplan2_state::video_count_r));
1051 }
1052 
1053 
batsugun_68k_mem(address_map & map)1054 void toaplan2_state::batsugun_68k_mem(address_map &map)
1055 {
1056 	map(0x000000, 0x07ffff).rom();
1057 	map(0x100000, 0x10ffff).ram();
1058 	map(0x200010, 0x200011).portr("IN1");
1059 	map(0x200014, 0x200015).portr("IN2");
1060 	map(0x200018, 0x200019).portr("SYS");
1061 	map(0x20001d, 0x20001d).w(FUNC(toaplan2_state::coin_sound_reset_w)); // Coin count/lock + v25 reset line
1062 	map(0x210000, 0x21ffff).rw(FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w)).umask16(0x00ff);
1063 	map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
1064 	map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
1065 	map(0x500000, 0x50000d).rw(m_vdp[1], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
1066 	map(0x700000, 0x700001).r(FUNC(toaplan2_state::video_count_r));
1067 }
1068 
pwrkick_68k_mem(address_map & map)1069 void toaplan2_state::pwrkick_68k_mem(address_map &map)
1070 {
1071 	map(0x000000, 0x07ffff).rom();
1072 	map(0x100000, 0x103fff).ram().share("nvram"); // Only 10022C-10037B is actually saved as NVRAM
1073 	map(0x104000, 0x10ffff).ram();
1074 
1075 	map(0x200000, 0x20000f).rw(m_rtc, FUNC(upd4992_device::read), FUNC(upd4992_device::write)).umask16(0x00ff);
1076 	map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
1077 	map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
1078 	map(0x600001, 0x600001).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
1079 
1080 	map(0x700000, 0x700001).r(FUNC(toaplan2_state::video_count_r));
1081 	map(0x700004, 0x700005).portr("DSWA");
1082 	map(0x700008, 0x700009).portr("DSWB");
1083 	map(0x70000c, 0x70000d).portr("IN1");
1084 	map(0x700014, 0x700015).portr("IN2");
1085 	map(0x700018, 0x700019).portr("DSWC");
1086 	map(0x70001c, 0x70001d).portr("SYS");
1087 	map(0x700031, 0x700031).w(FUNC(toaplan2_state::oki_bankswitch_w<0>));
1088 	map(0x700035, 0x700035).w(FUNC(toaplan2_state::pwrkick_coin_w));
1089 	map(0x700039, 0x700039).w(FUNC(toaplan2_state::pwrkick_coin_lockout_w));
1090 }
1091 
othldrby_68k_mem(address_map & map)1092 void toaplan2_state::othldrby_68k_mem(address_map &map)
1093 {
1094 	map(0x000000, 0x07ffff).rom();
1095 	map(0x100000, 0x103fff).ram().share("nvram"); // Only 10331E-103401 is actually saved as NVRAM
1096 	map(0x104000, 0x10ffff).ram();
1097 
1098 	map(0x200000, 0x20000f).rw(m_rtc, FUNC(upd4992_device::read), FUNC(upd4992_device::write)).umask16(0x00ff);
1099 	map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
1100 	map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
1101 	map(0x600001, 0x600001).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
1102 
1103 	map(0x700000, 0x700001).r(FUNC(toaplan2_state::video_count_r));
1104 	map(0x700004, 0x700005).portr("DSWA");
1105 	map(0x700008, 0x700009).portr("DSWB");
1106 	map(0x70000c, 0x70000d).portr("IN1");
1107 	map(0x700010, 0x700011).portr("IN2");
1108 	map(0x70001c, 0x70001d).portr("SYS");
1109 	map(0x700031, 0x700031).w(FUNC(toaplan2_state::oki_bankswitch_w<0>));
1110 	map(0x700035, 0x700035).w(FUNC(toaplan2_state::coin_w));
1111 }
1112 
1113 
enmadaio_oki_bank_w(offs_t offset,u16 data,u16 mem_mask)1114 void toaplan2_state::enmadaio_oki_bank_w(offs_t offset, u16 data, u16 mem_mask)
1115 {
1116 	data &= mem_mask;
1117 
1118 	if (data < 0x60)
1119 	{
1120 		m_okibank->set_entry(data);
1121 	}
1122 	else
1123 	{
1124 		logerror("enmadaio_oki_bank_w >=0x60 (%04x)\n",data);
1125 	}
1126 }
1127 
enmadaio_68k_mem(address_map & map)1128 void toaplan2_state::enmadaio_68k_mem(address_map &map)
1129 {
1130 	map(0x000000, 0x07ffff).rom();
1131 	map(0x100000, 0x103fff).ram(); //.share("nvram");
1132 	map(0x104000, 0x10ffff).ram();
1133 
1134 	map(0x200000, 0x20000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
1135 	map(0x300000, 0x300fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
1136 	map(0x400000, 0x400003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
1137 	map(0x500001, 0x500001).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
1138 
1139 	map(0x700000, 0x700001).r(FUNC(toaplan2_state::video_count_r));
1140 
1141 	map(0x700004, 0x700005).portr("DSWA");
1142 	map(0x70000c, 0x70000d).portr("MISC2");
1143 	map(0x700010, 0x700011).portr("MISC3");
1144 	map(0x700014, 0x700015).portr("MISC4");
1145 	map(0x700018, 0x700019).portr("SYS");
1146 	map(0x70001c, 0x70001d).portr("UNK"); //.portr("SYS");
1147 
1148 	map(0x700020, 0x700021).w(FUNC(toaplan2_state::enmadaio_oki_bank_w)); // oki bank
1149 
1150 	map(0x700028, 0x700029).nopw();
1151 	map(0x70003c, 0x70003d).nopw();
1152 	map(0x70002c, 0x70002d).nopw();
1153 }
1154 
snowbro2_68k_mem(address_map & map)1155 void toaplan2_state::snowbro2_68k_mem(address_map &map)
1156 {
1157 	map(0x000000, 0x07ffff).rom();
1158 	map(0x100000, 0x10ffff).ram();
1159 	map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
1160 	map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
1161 	map(0x500000, 0x500003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
1162 	map(0x600001, 0x600001).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
1163 	map(0x700000, 0x700001).portr("JMPR");
1164 	map(0x700004, 0x700005).portr("DSWA");
1165 	map(0x700008, 0x700009).portr("DSWB");
1166 	map(0x70000c, 0x70000d).portr("IN1");
1167 	map(0x700010, 0x700011).portr("IN2");
1168 	map(0x700014, 0x700015).portr("IN3");
1169 	map(0x700018, 0x700019).portr("IN4");
1170 	map(0x70001c, 0x70001d).portr("SYS");
1171 	map(0x700031, 0x700031).w(FUNC(toaplan2_state::oki_bankswitch_w<0>));
1172 	map(0x700035, 0x700035).w(FUNC(toaplan2_state::coin_w));
1173 }
1174 
1175 
mahoudai_68k_mem(address_map & map)1176 void toaplan2_state::mahoudai_68k_mem(address_map &map)
1177 {
1178 	map(0x000000, 0x07ffff).rom();
1179 	map(0x100000, 0x10ffff).ram();
1180 	map(0x218000, 0x21bfff).rw(FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w)).umask16(0x00ff);
1181 	map(0x21c01d, 0x21c01d).w(FUNC(toaplan2_state::coin_w));
1182 	map(0x21c020, 0x21c021).portr("IN1");
1183 	map(0x21c024, 0x21c025).portr("IN2");
1184 	map(0x21c028, 0x21c029).portr("SYS");
1185 	map(0x21c02c, 0x21c02d).portr("DSWA");
1186 	map(0x21c030, 0x21c031).portr("DSWB");
1187 	map(0x21c034, 0x21c035).portr("JMPR");
1188 	map(0x21c03c, 0x21c03d).r(FUNC(toaplan2_state::video_count_r));
1189 	map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
1190 	map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
1191 	map(0x401000, 0x4017ff).ram();                         // Unused palette RAM
1192 	map(0x500000, 0x501fff).ram().w(FUNC(toaplan2_state::tx_videoram_w)).share("tx_videoram");
1193 	map(0x502000, 0x502fff).ram().share("tx_lineselect");
1194 	map(0x503000, 0x5031ff).ram().w(FUNC(toaplan2_state::tx_linescroll_w)).share("tx_linescroll");
1195 	map(0x503200, 0x503fff).ram();
1196 }
1197 
1198 
shippumd_68k_mem(address_map & map)1199 void toaplan2_state::shippumd_68k_mem(address_map &map)
1200 {
1201 	map(0x000000, 0x0fffff).rom();
1202 	map(0x100000, 0x10ffff).ram();
1203 	map(0x218000, 0x21bfff).rw(FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w)).umask16(0x00ff);
1204 //  map(0x21c008, 0x21c009).nopw();                    // ???
1205 	map(0x21c01d, 0x21c01d).w(FUNC(toaplan2_state::shippumd_coin_w)); // Coin count/lock + oki bankswitch
1206 	map(0x21c020, 0x21c021).portr("IN1");
1207 	map(0x21c024, 0x21c025).portr("IN2");
1208 	map(0x21c028, 0x21c029).portr("SYS");
1209 	map(0x21c02c, 0x21c02d).portr("DSWA");
1210 	map(0x21c030, 0x21c031).portr("DSWB");
1211 	map(0x21c034, 0x21c035).portr("JMPR");
1212 	map(0x21c03c, 0x21c03d).r(FUNC(toaplan2_state::video_count_r));
1213 	map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
1214 	map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
1215 	map(0x401000, 0x4017ff).ram();                         // Unused palette RAM
1216 	map(0x500000, 0x501fff).ram().w(FUNC(toaplan2_state::tx_videoram_w)).share("tx_videoram");
1217 	map(0x502000, 0x502fff).ram().share("tx_lineselect");
1218 	map(0x503000, 0x5031ff).ram().w(FUNC(toaplan2_state::tx_linescroll_w)).share("tx_linescroll");
1219 	map(0x503200, 0x503fff).ram();
1220 }
1221 
1222 
bgaregga_68k_mem(address_map & map)1223 void toaplan2_state::bgaregga_68k_mem(address_map &map)
1224 {
1225 	map(0x000000, 0x0fffff).rom();
1226 	map(0x100000, 0x10ffff).ram();
1227 	map(0x218000, 0x21bfff).rw(FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w)).umask16(0x00ff);
1228 	map(0x21c01d, 0x21c01d).w(FUNC(toaplan2_state::coin_w));
1229 	map(0x21c020, 0x21c021).portr("IN1");
1230 	map(0x21c024, 0x21c025).portr("IN2");
1231 	map(0x21c028, 0x21c029).portr("SYS");
1232 	map(0x21c02c, 0x21c02d).portr("DSWA");
1233 	map(0x21c030, 0x21c031).portr("DSWB");
1234 	map(0x21c034, 0x21c035).portr("JMPR");
1235 	map(0x21c03c, 0x21c03d).r(FUNC(toaplan2_state::video_count_r));
1236 	map(0x300000, 0x30000d).rw(m_vdp[0], FUNC(gp9001vdp_device::read), FUNC(gp9001vdp_device::write));
1237 	map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
1238 	map(0x500000, 0x501fff).ram().w(FUNC(toaplan2_state::tx_videoram_w)).share("tx_videoram");
1239 	map(0x502000, 0x502fff).ram().share("tx_lineselect");
1240 	map(0x503000, 0x5031ff).ram().w(FUNC(toaplan2_state::tx_linescroll_w)).share("tx_linescroll");
1241 	map(0x503200, 0x503fff).ram();
1242 	map(0x600001, 0x600001).w(m_soundlatch, FUNC(generic_latch_8_device::write));
1243 }
1244 
1245 
batrider_dma_mem(address_map & map)1246 void toaplan2_state::batrider_dma_mem(address_map &map)
1247 {
1248 	map(0x0000, 0x1fff).ram().w(FUNC(toaplan2_state::tx_videoram_w)).share("tx_videoram");
1249 	map(0x2000, 0x2fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
1250 	map(0x3000, 0x31ff).ram().share("tx_lineselect");
1251 	map(0x3200, 0x33ff).ram().w(FUNC(toaplan2_state::tx_linescroll_w)).share("tx_linescroll");
1252 	map(0x3400, 0x7fff).ram();
1253 	map(0x8000, 0xffff).ram().w(FUNC(toaplan2_state::batrider_tx_gfxram_w)).share("tx_gfxram");
1254 }
1255 
1256 
batrider_68k_mem(address_map & map)1257 void toaplan2_state::batrider_68k_mem(address_map &map)
1258 {
1259 	map(0x000000, 0x1fffff).rom();
1260 	// actually 200000 - 20ffff is probably all main RAM, and the text and palette RAM are written via DMA
1261 	map(0x200000, 0x207fff).ram().share("mainram");
1262 	map(0x208000, 0x20ffff).ram();
1263 	map(0x300000, 0x37ffff).r(FUNC(toaplan2_state::batrider_z80rom_r));
1264 	map(0x400000, 0x40000d).lrw16(
1265 							NAME([this](offs_t offset, u16 mem_mask) { return m_vdp[0]->read(offset ^ (0xc/2), mem_mask); }),
1266 							NAME([this](offs_t offset, u16 data, u16 mem_mask) { m_vdp[0]->write(offset ^ (0xc/2), data, mem_mask); }));
1267 	map(0x500000, 0x500001).portr("IN");
1268 	map(0x500002, 0x500003).portr("SYS-DSW");
1269 	map(0x500004, 0x500005).portr("DSW");
1270 	map(0x500006, 0x500007).r(FUNC(toaplan2_state::video_count_r));
1271 	map(0x500009, 0x500009).r("soundlatch3", FUNC(generic_latch_8_device::read));
1272 	map(0x50000b, 0x50000b).r("soundlatch4", FUNC(generic_latch_8_device::read));
1273 	map(0x50000c, 0x50000d).r(FUNC(toaplan2_state::batrider_z80_busack_r));
1274 	map(0x500011, 0x500011).w(FUNC(toaplan2_state::coin_w));
1275 	map(0x500021, 0x500021).w(FUNC(toaplan2_state::batrider_soundlatch_w));
1276 	map(0x500023, 0x500023).w(FUNC(toaplan2_state::batrider_soundlatch2_w));
1277 	map(0x500024, 0x500025).w(FUNC(toaplan2_state::batrider_unknown_sound_w));
1278 	map(0x500026, 0x500027).w(FUNC(toaplan2_state::batrider_clear_sndirq_w));
1279 	map(0x500061, 0x500061).w(FUNC(toaplan2_state::batrider_z80_busreq_w));
1280 	map(0x500080, 0x500081).w(FUNC(toaplan2_state::batrider_textdata_dma_w));
1281 	map(0x500082, 0x500083).w(FUNC(toaplan2_state::batrider_pal_text_dma_w));
1282 	map(0x5000c0, 0x5000cf).w(FUNC(toaplan2_state::batrider_objectbank_w)).umask16(0x00ff);
1283 }
1284 
1285 
bbakraid_68k_mem(address_map & map)1286 void toaplan2_state::bbakraid_68k_mem(address_map &map)
1287 {
1288 	map(0x000000, 0x1fffff).rom();
1289 	// actually 200000 - 20ffff is probably all main RAM, and the text and palette RAM are written via DMA
1290 	map(0x200000, 0x207fff).ram().share("mainram");
1291 	map(0x208000, 0x20ffff).ram();
1292 	map(0x300000, 0x33ffff).r(FUNC(toaplan2_state::batrider_z80rom_r));
1293 	map(0x400000, 0x40000d).lrw16(
1294 							NAME([this](offs_t offset, u16 mem_mask) { return m_vdp[0]->read(offset ^ (0xc/2), mem_mask); }),
1295 							NAME([this](offs_t offset, u16 data, u16 mem_mask) { m_vdp[0]->write(offset ^ (0xc/2), data, mem_mask); }));
1296 	map(0x500000, 0x500001).portr("IN");
1297 	map(0x500002, 0x500003).portr("SYS-DSW");
1298 	map(0x500004, 0x500005).portr("DSW");
1299 	map(0x500006, 0x500007).r(FUNC(toaplan2_state::video_count_r));
1300 	map(0x500009, 0x500009).w(FUNC(toaplan2_state::coin_w));
1301 	map(0x500011, 0x500011).r("soundlatch3", FUNC(generic_latch_8_device::read));
1302 	map(0x500013, 0x500013).r("soundlatch4", FUNC(generic_latch_8_device::read));
1303 	map(0x500015, 0x500015).w(FUNC(toaplan2_state::batrider_soundlatch_w));
1304 	map(0x500017, 0x500017).w(FUNC(toaplan2_state::batrider_soundlatch2_w));
1305 	map(0x500018, 0x500019).r(FUNC(toaplan2_state::bbakraid_eeprom_r));
1306 	map(0x50001a, 0x50001b).w(FUNC(toaplan2_state::batrider_unknown_sound_w));
1307 	map(0x50001c, 0x50001d).w(FUNC(toaplan2_state::batrider_clear_sndirq_w));
1308 	map(0x50001f, 0x50001f).w(FUNC(toaplan2_state::bbakraid_eeprom_w));
1309 	map(0x500080, 0x500081).w(FUNC(toaplan2_state::batrider_textdata_dma_w));
1310 	map(0x500082, 0x500083).w(FUNC(toaplan2_state::batrider_pal_text_dma_w));
1311 	map(0x5000c0, 0x5000cf).w(FUNC(toaplan2_state::batrider_objectbank_w)).umask16(0x00ff);
1312 }
1313 
1314 
nprobowl_68k_mem(address_map & map)1315 void toaplan2_state::nprobowl_68k_mem(address_map &map) // TODO: verify everything, implement oki banking
1316 {
1317 	map(0x000000, 0x0fffff).rom();
1318 	map(0x200000, 0x207fff).ram().share("mainram");
1319 	map(0x208000, 0x20ffff).ram();
1320 	map(0x400000, 0x40000d).lrw16(
1321 							NAME([this](offs_t offset, u16 mem_mask) { return m_vdp[0]->read(offset ^ (0xc/2), mem_mask); }),
1322 							NAME([this](offs_t offset, u16 data, u16 mem_mask) { m_vdp[0]->write(offset ^ (0xc/2), data, mem_mask); }));
1323 	map(0x500000, 0x500001).portr("IN");
1324 	map(0x500002, 0x500003).portr("UNK");
1325 	map(0x500004, 0x500005).portr("DSW");
1326 	//map(0x500010, 0x500011).w();
1327 	//map(0x500012, 0x500013).w();
1328 	map(0x500021, 0x500021).w(m_oki[0], FUNC(okim6295_device::write));
1329 	//map(0x500040, 0x500041).w();
1330 	//map(0x500042, 0x500043).w();
1331 	map(0x500060, 0x500061).lr16(NAME([this] () -> u16 { return machine().rand(); })); // TODO: Hack, probably checks something in the mechanical part, verify
1332 	map(0x500080, 0x500081).w(FUNC(toaplan2_state::batrider_textdata_dma_w));
1333 	map(0x500082, 0x500083).w(FUNC(toaplan2_state::batrider_pal_text_dma_w));
1334 }
1335 
1336 
pipibibs_sound_z80_mem(address_map & map)1337 void toaplan2_state::pipibibs_sound_z80_mem(address_map &map)
1338 {
1339 	map(0x0000, 0x7fff).rom();
1340 	map(0x8000, 0x87ff).ram().share("shared_ram");
1341 	map(0xe000, 0xe001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
1342 }
1343 
1344 
raizing_sound_z80_mem(address_map & map)1345 void toaplan2_state::raizing_sound_z80_mem(address_map &map)
1346 {
1347 	map(0x0000, 0xbfff).rom();
1348 	map(0xc000, 0xdfff).ram().share("shared_ram");
1349 	map(0xe000, 0xe001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
1350 	map(0xe004, 0xe004).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
1351 	map(0xe00e, 0xe00e).w(FUNC(toaplan2_state::coin_w));
1352 }
1353 
1354 
bgaregga_sound_z80_mem(address_map & map)1355 void toaplan2_state::bgaregga_sound_z80_mem(address_map &map)
1356 {
1357 	map(0x0000, 0x7fff).rom();
1358 	map(0x8000, 0xbfff).bankr("audiobank");
1359 	map(0xc000, 0xdfff).ram().share("shared_ram");
1360 	map(0xe000, 0xe001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
1361 	map(0xe004, 0xe004).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
1362 	map(0xe006, 0xe008).w(FUNC(toaplan2_state::raizing_oki_bankswitch_w));
1363 	map(0xe00a, 0xe00a).w(FUNC(toaplan2_state::raizing_z80_bankswitch_w));
1364 	map(0xe00c, 0xe00c).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
1365 	map(0xe01c, 0xe01c).r(m_soundlatch, FUNC(generic_latch_8_device::read));
1366 	map(0xe01d, 0xe01d).r(FUNC(toaplan2_state::bgaregga_E01D_r));
1367 }
1368 
1369 
batrider_sound_z80_mem(address_map & map)1370 void toaplan2_state::batrider_sound_z80_mem(address_map &map)
1371 {
1372 	map(0x0000, 0x7fff).rom();
1373 	map(0x8000, 0xbfff).bankr("audiobank");
1374 	map(0xc000, 0xdfff).ram();
1375 }
1376 
1377 
batrider_sound_z80_port(address_map & map)1378 void toaplan2_state::batrider_sound_z80_port(address_map &map)
1379 {
1380 	map.global_mask(0xff);
1381 	map(0x40, 0x40).w("soundlatch3", FUNC(generic_latch_8_device::write));
1382 	map(0x42, 0x42).w("soundlatch4", FUNC(generic_latch_8_device::write));
1383 	map(0x44, 0x44).w(FUNC(toaplan2_state::batrider_sndirq_w));
1384 	map(0x46, 0x46).w(FUNC(toaplan2_state::batrider_clear_nmi_w));
1385 	map(0x48, 0x48).r(m_soundlatch, FUNC(generic_latch_8_device::read));
1386 	map(0x4a, 0x4a).r(m_soundlatch2, FUNC(generic_latch_8_device::read));
1387 	map(0x80, 0x81).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
1388 	map(0x82, 0x82).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
1389 	map(0x84, 0x84).rw(m_oki[1], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
1390 	map(0x88, 0x88).w(FUNC(toaplan2_state::raizing_z80_bankswitch_w));
1391 	map(0xc0, 0xc6).w(FUNC(toaplan2_state::raizing_oki_bankswitch_w));
1392 }
1393 
1394 
bbakraid_sound_z80_mem(address_map & map)1395 void toaplan2_state::bbakraid_sound_z80_mem(address_map &map)
1396 {
1397 	map(0x0000, 0xbfff).rom();     // No banking? ROM only contains code and data up to 0x28DC
1398 	map(0xc000, 0xffff).ram();
1399 }
1400 
1401 
bbakraid_sound_z80_port(address_map & map)1402 void toaplan2_state::bbakraid_sound_z80_port(address_map &map)
1403 {
1404 	map.global_mask(0xff);
1405 	map(0x40, 0x40).w("soundlatch3", FUNC(generic_latch_8_device::write));
1406 	map(0x42, 0x42).w("soundlatch4", FUNC(generic_latch_8_device::write));
1407 	map(0x44, 0x44).w(FUNC(toaplan2_state::batrider_sndirq_w));
1408 	map(0x46, 0x46).w(FUNC(toaplan2_state::batrider_clear_nmi_w));
1409 	map(0x48, 0x48).r(m_soundlatch, FUNC(generic_latch_8_device::read));
1410 	map(0x4a, 0x4a).r(m_soundlatch2, FUNC(generic_latch_8_device::read));
1411 	map(0x80, 0x81).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write));
1412 }
1413 
1414 
v25_mem(address_map & map)1415 void toaplan2_state::v25_mem(address_map &map)
1416 {
1417 	map(0x00000, 0x00001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
1418 	map(0x00004, 0x00004).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
1419 	map(0x80000, 0x87fff).mirror(0x78000).ram().share("shared_ram");
1420 }
1421 
1422 
kbash_v25_mem(address_map & map)1423 void toaplan2_state::kbash_v25_mem(address_map &map)
1424 {
1425 	map(0x00000, 0x007ff).ram().share("shared_ram");
1426 	map(0x04000, 0x04001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
1427 	map(0x04002, 0x04002).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
1428 	map(0x80000, 0x87fff).mirror(0x78000).rom().region("audiocpu", 0);
1429 }
1430 
1431 
fixeight_v25_mem(address_map & map)1432 void toaplan2_state::fixeight_v25_mem(address_map &map)
1433 {
1434 	map(0x00000, 0x00000).portr("IN1");
1435 	map(0x00002, 0x00002).portr("IN2");
1436 	map(0x00004, 0x00004).portr("IN3");
1437 	map(0x0000a, 0x0000b).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
1438 	map(0x0000c, 0x0000c).rw(m_oki[0], FUNC(okim6295_device::read), FUNC(okim6295_device::write));
1439 	map(0x80000, 0x87fff).mirror(0x78000).ram().share("shared_ram");
1440 }
1441 
1442 
vfive_v25_mem(address_map & map)1443 void toaplan2_state::vfive_v25_mem(address_map &map)
1444 {
1445 	map(0x00000, 0x00001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
1446 	map(0x80000, 0x87fff).mirror(0x78000).ram().share("shared_ram");
1447 }
1448 
1449 
fixeightbl_oki(address_map & map)1450 void toaplan2_state::fixeightbl_oki(address_map &map)
1451 {
1452 	map(0x00000, 0x2ffff).rom();
1453 	map(0x30000, 0x3ffff).bankr("okibank");
1454 }
1455 
enmadaio_oki(address_map & map)1456 void toaplan2_state::enmadaio_oki(address_map &map)
1457 {
1458 	map(0x00000, 0x3ffff).bankr("okibank");
1459 }
1460 
1461 // similar as NMK112, but GAL-driven; NOT actual NMK112 is present
1462 template<unsigned Chip>
raizing_oki(address_map & map)1463 void toaplan2_state::raizing_oki(address_map &map)
1464 {
1465 	map(0x00000, 0x000ff).bankr(m_raizing_okibank[Chip][0]);
1466 	map(0x00100, 0x001ff).bankr(m_raizing_okibank[Chip][1]);
1467 	map(0x00200, 0x002ff).bankr(m_raizing_okibank[Chip][2]);
1468 	map(0x00300, 0x003ff).bankr(m_raizing_okibank[Chip][3]);
1469 	map(0x00400, 0x0ffff).bankr(m_raizing_okibank[Chip][4]);
1470 	map(0x10000, 0x1ffff).bankr(m_raizing_okibank[Chip][5]);
1471 	map(0x20000, 0x2ffff).bankr(m_raizing_okibank[Chip][6]);
1472 	map(0x30000, 0x3ffff).bankr(m_raizing_okibank[Chip][7]);
1473 }
1474 
1475 
tekipaki_cmdavailable_r()1476 u8 toaplan2_state::tekipaki_cmdavailable_r()
1477 {
1478 	if (m_soundlatch->pending_r()) return 0xff;
1479 	else return 0x00;
1480 };
1481 
hd647180_io_map(address_map & map)1482 void toaplan2_state::hd647180_io_map(address_map &map)
1483 {
1484 	map.global_mask(0xff);
1485 
1486 	map(0x60, 0x60).nopr();
1487 	map(0x70, 0x75).nopw(); // DDRs are written with the wrong upper addresses!
1488 	map(0x84, 0x84).r(m_soundlatch, FUNC(generic_latch_8_device::read));
1489 
1490 	map(0x82, 0x82).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w));
1491 	map(0x83, 0x83).rw("ymsnd", FUNC(ym3812_device::read_port_r), FUNC(ym3812_device::write_port_w));
1492 }
1493 
1494 
ghox_hd647180_mem_map(address_map & map)1495 void toaplan2_state::ghox_hd647180_mem_map(address_map &map)
1496 {
1497 	map(0x40000, 0x407ff).ram().share("shared_ram");
1498 
1499 	map(0x80002, 0x80002).portr("DSWA");
1500 	map(0x80004, 0x80004).portr("DSWB");
1501 	map(0x80006, 0x80006).nopr(); // nothing?
1502 	map(0x80008, 0x80008).portr("IN1");
1503 	map(0x8000a, 0x8000a).portr("IN2");
1504 
1505 	map(0x8000c, 0x8000e).portr("SYS");
1506 
1507 	map(0x8000e, 0x8000f).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
1508 }
1509 
1510 /*****************************************************************************
1511     Input Port definitions
1512     The following commands are available when the Invulnerability dipswitch
1513     is set (or, in some games, also when the JAMMA Test switch is pressed):
1514 
1515     P2 start                 : pause
1516     P1 start                 : resume
1517     Hold P1 start & P2 start : slow motion
1518 
1519     In bgaregga, batrider and bbakraid, the commands are different:
1520 
1521     Tap P1 start             : pause/resume
1522     Hold P1 start            : slow motion
1523 
1524     Additional per-game test features are as follows:
1525 
1526     truxton2 - While playing in invulnerable mode, press button 3 to suicide.
1527 
1528     fixeight - While playing in invulnerable mode, press button 3 to suicide
1529                (player 1 and player 2 only)
1530 
1531     batsugun - While playing in invulnerable mode, press the following buttons
1532                to stage skip:
1533 
1534                P2 button 3 & P2 button 1 : Skip to end of stage 1
1535                P2 button 3 & P2 button 2 : Skip to end of stage 2
1536                P2 button 3               : Skip to end of stage 3
1537 
1538    sstriker - While playing in invulnerable mode as player 2, press
1539    /kingdmgp  P2 button 3 to skip to the end of the current stage.
1540 
1541    bgaregga - Press and hold P1 button 1, P1 button 2 and P1 button 3 while
1542               powering on in service mode to enter the special service mode.
1543               "OPTIONS" and "PLAY DATAS" are added to the menu, and the
1544               dipswitch display will show the region jumpers (normally hidden).
1545               Choose "GAME MODE" from the special service mode to enter the
1546               special game mode. In the special game mode, you can use pause
1547               and slow motion even when not playing in invulnerable mode.
1548 
1549    batrider - While playing in invulnerable mode, press P1 Start and P2 Start
1550               to skip directly to the ending scene.
1551 
1552    batrider - Press and hold P1 button 1, P1 button 2 and P1 button 3 while
1553    /bbakraid  powering on in service mode to enter the special service mode.
1554               You can change the game's region by pressing left/right.
1555               Choose "GAME MODE" from the special service mode to enter the
1556               special game mode. In the special game mode, you can use pause
1557               and slow motion even when not playing in invulnerable mode.
1558               While the game is paused in special mode, press button 3 to
1559               display debugging information.
1560 
1561 *****************************************************************************/
1562 
1563 
1564 static INPUT_PORTS_START( toaplan2_2b )
1565 	PORT_START("IN1")
1566 	TOAPLAN_JOY_UDLR_2_BUTTONS( 1 )
1567 
1568 	PORT_START("IN2")
1569 	TOAPLAN_JOY_UDLR_2_BUTTONS( 2 )
1570 
1571 	PORT_START("SYS")
1572 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_SERVICE1 )
1573 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_TILT )
1574 	TOAPLAN_TEST_SWITCH( 0x04, IP_ACTIVE_HIGH )
1575 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_COIN1 )
1576 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_COIN2 )
1577 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_START1 )
1578 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_START2 )
1579 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1580 
1581 	PORT_START("DSWA")
1582 	TOAPLAN_MACHINE_NO_COCKTAIL_LOC(SW1)
1583 	// Coinage on bit mask 0x00f0
1584 	PORT_BIT( 0x00f0, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // Modified below
1585 
1586 	PORT_START("DSWB")
1587 	TOAPLAN_DIFFICULTY_LOC(SW2)
1588 	// Per-game features on bit mask 0x00fc
1589 	PORT_BIT( 0x00fc, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // Modified below
1590 INPUT_PORTS_END
1591 
1592 
1593 static INPUT_PORTS_START( toaplan2_3b )
1594 	PORT_INCLUDE( toaplan2_2b )
1595 
1596 	PORT_MODIFY("IN1")
1597 	TOAPLAN_JOY_UDLR_3_BUTTONS( 1 )
1598 
1599 	PORT_MODIFY("IN2")
1600 	TOAPLAN_JOY_UDLR_3_BUTTONS( 2 )
1601 INPUT_PORTS_END
1602 
1603 
1604 static INPUT_PORTS_START( tekipaki )
1605 	PORT_INCLUDE( toaplan2_2b )
1606 
1607 	PORT_MODIFY("DSWA")
1608 	// Various features on bit mask 0x000f - see above
1609 	TOAPLAN_COINAGE_DUAL_LOC( JMPR, 0x0f, 0x02, SW1 )
1610 
1611 	PORT_MODIFY("DSWB")
1612 	// Difficulty on bit mask 0x0003 - see above
1613 	// "Stop Mode" corresponds to "Invulnerability" in the other games
1614 	// (i.e. it enables pause and slow motion)
1615 	PORT_DIPNAME( 0x0004,   0x0000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:!3")
1616 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
1617 	PORT_DIPSETTING(        0x0004, DEF_STR( On ) )
1618 	PORT_DIPNAME( 0x0008,   0x0000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:!4")
1619 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
1620 	PORT_DIPSETTING(        0x0008, DEF_STR( On ) )
1621 	PORT_DIPNAME( 0x0010,   0x0000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:!5")
1622 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
1623 	PORT_DIPSETTING(        0x0010, DEF_STR( On ) )
1624 	PORT_DIPNAME( 0x0020,   0x0000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:!6")
1625 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
1626 	PORT_DIPSETTING(        0x0020, DEF_STR( On ) )
1627 	PORT_DIPNAME( 0x0040,   0x0000, "Stop Mode (Cheat)" )   PORT_DIPLOCATION("SW2:!7")
1628 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
1629 	PORT_DIPSETTING(        0x0040, DEF_STR( On ) )
1630 	PORT_DIPNAME( 0x0080,   0x0000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:!8")
1631 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
1632 	PORT_DIPSETTING(        0x0080, DEF_STR( On ) )
1633 
1634 	PORT_START("JMPR")
1635 	PORT_CONFNAME( 0x000f,  0x0002, DEF_STR( Region ) ) PORT_DIPLOCATION("JP:!4,!3,!2,!1")
1636 	PORT_CONFSETTING(       0x0002, DEF_STR( Europe ) )
1637 	PORT_CONFSETTING(       0x0001, DEF_STR( USA ) )
1638 	PORT_CONFSETTING(       0x0000, DEF_STR( Japan ) )
1639 	PORT_CONFSETTING(       0x0003, DEF_STR( Hong_Kong ) )
1640 	PORT_CONFSETTING(       0x0004, DEF_STR( Korea ) )
1641 	PORT_CONFSETTING(       0x0005, DEF_STR( Taiwan ) )
1642 	PORT_CONFSETTING(       0x0006, "Taiwan (Spacy Co., Ltd." )
1643 	PORT_CONFSETTING(       0x0007, "USA (Romstar, Inc.)" )
1644 	PORT_CONFSETTING(       0x0008, "Hong Kong (Honest Trading Co.)" )
1645 //  PORT_CONFSETTING(        0x0009, DEF_STR( Japan ) )  // English title screen
1646 //  PORT_CONFSETTING(        0x000a, DEF_STR( Japan ) )
1647 //  PORT_CONFSETTING(        0x000b, DEF_STR( Japan ) )
1648 //  PORT_CONFSETTING(        0x000c, DEF_STR( Japan ) )
1649 //  PORT_CONFSETTING(        0x000d, DEF_STR( Japan ) )
1650 //  PORT_CONFSETTING(        0x000e, DEF_STR( Japan ) )
1651 	PORT_CONFSETTING(       0x000f, "Japan (Distributed by Tecmo)" )
1652 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(toaplan2_state, c2map_r)
1653 INPUT_PORTS_END
1654 
1655 
1656 static INPUT_PORTS_START( ghox )
1657 	PORT_INCLUDE( toaplan2_2b )
1658 
1659 	PORT_MODIFY("DSWA")
1660 	// Various features on bit mask 0x000f - see above
1661 	TOAPLAN_COINAGE_DUAL_LOC( JMPR, 0x80000, 0x80000, SW1 )
1662 
1663 	PORT_MODIFY("DSWB")
1664 	// Difficulty on bit mask 0x0003 - see above
1665 	// "Debug Mode" corresponds to "Invulnerability" in the other games
1666 	// (i.e. it enables pause and slow motion)
1667 	PORT_DIPNAME( 0x000c,   0x0000, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:!3,!4")
1668 	PORT_DIPSETTING(        0x000c, DEF_STR( None ) )
1669 	PORT_DIPSETTING(        0x0008, "100k only" )
1670 	PORT_DIPSETTING(        0x0004, "100k and 300k" )
1671 	PORT_DIPSETTING(        0x0000, "100k and every 200k" )
1672 	PORT_DIPNAME( 0x0030,   0x0000, DEF_STR( Lives ) )      PORT_DIPLOCATION("SW2:!5,!6")
1673 	PORT_DIPSETTING(        0x0030, "1" )
1674 	PORT_DIPSETTING(        0x0020, "2" )
1675 	PORT_DIPSETTING(        0x0000, "3" )
1676 	PORT_DIPSETTING(        0x0010, "5" )
1677 	PORT_DIPNAME( 0x0040,   0x0000, "Debug Mode (Cheat)" )  PORT_DIPLOCATION("SW2:!7")
1678 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
1679 	PORT_DIPSETTING(        0x0040, DEF_STR( On ) )
1680 	PORT_DIPNAME( 0x0080,   0x0000, DEF_STR( Unused ) )     PORT_DIPLOCATION("SW2:!8")
1681 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
1682 	PORT_DIPSETTING(        0x0080, DEF_STR( On ) )
1683 
1684 	PORT_START("JMPR")
1685 	// Bit Mask 0x80000 is used here to signify European Coinage for MAME purposes - not read on the real board!
1686 	PORT_CONFNAME( 0x8000f, 0x80002, DEF_STR( Region ) )    //PORT_CONFLOCATION("JP:!4,!3,!2,!1,FAKE:!1")
1687 	PORT_CONFSETTING(       0x80002, DEF_STR( Europe ) )
1688 	PORT_CONFSETTING(       0x00001, DEF_STR( USA ) )
1689 	PORT_CONFSETTING(       0x00000, DEF_STR( Japan ) )
1690 	PORT_CONFSETTING(       0x00003, "Hong Kong (Honest Trading Co.)" )
1691 	PORT_CONFSETTING(       0x00004, DEF_STR( Korea ) )
1692 	PORT_CONFSETTING(       0x00005, DEF_STR( Taiwan ) )
1693 	PORT_CONFSETTING(       0x80006, "Spain & Portugal (APM Electronics S.A.)" )
1694 	PORT_CONFSETTING(       0x80007, "Italy (Star Electronica SRL)" )
1695 	PORT_CONFSETTING(       0x80008, "UK (JP Leisure Limited)" )
1696 	PORT_CONFSETTING(       0x00009, "USA (Romstar, Inc.)" )
1697 	PORT_CONFSETTING(       0x8000a, "Europe (Nova Apparate GMBH & Co.)" )
1698 	PORT_CONFSETTING(       0x0000b, "USA (Taito America Corporation)" )
1699 	PORT_CONFSETTING(       0x0000c, "USA (Taito Corporation Japan)" )
1700 	PORT_CONFSETTING(       0x8000d, "Europe (Taito Corporation Japan)" )
1701 	PORT_CONFSETTING(        0x0000e, "Japan (Licensed to [blank])" )    // English title screen
1702 	PORT_CONFSETTING(        0x0000f, "Japan (Taito Corporation)" )
1703 
1704 	PORT_START("PAD1")      /* Paddle 1 (left-right)  read at $100000 */
1705 	PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(15) PORT_PLAYER(1)
1706 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // Unknown/Unused
1707 
1708 	PORT_START("PAD2")      /* Paddle 2 (left-right)  read at $040000 */
1709 	PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(15) PORT_PLAYER(2)
1710 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // Unknown/Unused
1711 INPUT_PORTS_END
1712 
1713 
1714 static INPUT_PORTS_START( ghoxjo )
1715 	PORT_INCLUDE( ghox )
1716 
1717 	PORT_MODIFY("JMPR")
1718 	// Bit Mask 0x80000 is used here to signify European Coinage for MAME purposes - not read on the real board!
1719 	PORT_CONFNAME( 0x8000f, 0x80002, DEF_STR( Region ) )    //PORT_CONFLOCATION("JP:!4,!3,!2,!1,FAKE:!1")
1720 	PORT_CONFSETTING(       0x80002, DEF_STR( Europe ) )
1721 	PORT_CONFSETTING(       0x00001, DEF_STR( USA ) )
1722 	PORT_CONFSETTING(       0x00000, DEF_STR( Japan ) )
1723 	PORT_CONFSETTING(       0x00003, "Hong Kong (Honest Trading Co.)" )
1724 	PORT_CONFSETTING(       0x00004, DEF_STR( Korea ) )
1725 	PORT_CONFSETTING(       0x00005, DEF_STR( Taiwan ) )
1726 	PORT_CONFSETTING(       0x80006, "Spain & Portugal (APM Electronics S.A.)" )
1727 	PORT_CONFSETTING(       0x80007, "Italy (Star Electronica SRL)" )
1728 	PORT_CONFSETTING(       0x80008, "UK (JP Leisure Limited)" )
1729 	PORT_CONFSETTING(       0x00009, "USA (Romstar, Inc.)" )
1730 	PORT_CONFSETTING(       0x8000a, "Europe (Nova Apparate GMBH & Co.)" )
1731 	PORT_CONFSETTING(       0x0000b, "Japan (Unused) [b]" )
1732 	PORT_CONFSETTING(       0x0000c, "Japan (Unused) [c]" )
1733 	PORT_CONFSETTING(       0x0000d, "Japan (Unused) [d]" )
1734 	PORT_CONFSETTING(       0x0000e, "Japan (Unused) [e]" )
1735 	PORT_CONFSETTING(       0x0000f, "Japan (Unused) [f]" )
1736 INPUT_PORTS_END
1737 
1738 
1739 static INPUT_PORTS_START( dogyuun )
1740 	PORT_INCLUDE( toaplan2_3b )
1741 
1742 	PORT_MODIFY("DSWA")
1743 	PORT_DIPNAME( 0x0001,   0x0000, DEF_STR( Free_Play) )       PORT_DIPLOCATION("SW1:!1")
1744 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
1745 	PORT_DIPSETTING(        0x0001, DEF_STR( On ) )
1746 	// Various features on bit mask 0x000e - see above
1747 	TOAPLAN_COINAGE_DUAL_LOC( JMPR, 0x8000, 0x8000, SW1 )
1748 
1749 	PORT_MODIFY("DSWB")
1750 	// Difficulty on bit mask 0x0003 - see above
1751 	PORT_DIPNAME( 0x000c,   0x0000, DEF_STR( Bonus_Life ) )     PORT_DIPLOCATION("SW2:!3,!4")
1752 	PORT_DIPSETTING(        0x000c, DEF_STR( None ) )
1753 	PORT_DIPSETTING(        0x0008, "400k only" )
1754 	PORT_DIPSETTING(        0x0000, "200k only" )
1755 	PORT_DIPSETTING(        0x0004, "200k, 400k and 600k" )
1756 	PORT_DIPNAME( 0x0030,   0x0000, DEF_STR( Lives ) )          PORT_DIPLOCATION("SW2:!5,!6")
1757 	PORT_DIPSETTING(        0x0030, "1" )
1758 	PORT_DIPSETTING(        0x0020, "2" )
1759 	PORT_DIPSETTING(        0x0000, "3" )
1760 	PORT_DIPSETTING(        0x0010, "5" )
1761 	PORT_DIPNAME( 0x0040,   0x0000, "Invulnerability (Cheat)" )         PORT_DIPLOCATION("SW2:!7")
1762 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
1763 	PORT_DIPSETTING(        0x0040, DEF_STR( On ) )
1764 	PORT_DIPNAME( 0x0080,   0x0000, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:!8")
1765 	PORT_DIPSETTING(        0x0080, DEF_STR( No ) )
1766 	PORT_DIPSETTING(        0x0000, DEF_STR( Yes ) )
1767 
1768 	PORT_START("JMPR")
1769 	// Bit Mask 0x8000 is used here to signify European Coinage for MAME purposes - not read on the real board!
1770 	// "No speedups": all speedup items in game are replaced with bombs
1771 	PORT_CONFNAME( 0x80f0,  0x8030, DEF_STR( Region ) ) //PORT_CONFLOCATION("JP:!4,!3,!2,!1,FAKE:!1")
1772 	PORT_CONFSETTING(       0x8030, DEF_STR( Europe ) )
1773 	PORT_CONFSETTING(       0x0010, DEF_STR( USA ) )
1774 	PORT_CONFSETTING(       0x0020, "USA (Atari Games Corp.)" )
1775 	PORT_CONFSETTING(       0x0000, DEF_STR( Japan ) )
1776 	PORT_CONFSETTING(       0x0040, "Hong Kong (Charterfield); no speedups" )
1777 	PORT_CONFSETTING(       0x0050, "Korea (Unite Trading); no speedups" )
1778 	PORT_CONFSETTING(       0x0060, "Taiwan; no speedups" )
1779 	PORT_CONFSETTING(       0x0070, "USA; no speedups" )
1780 	PORT_CONFSETTING(       0x0080, "Southeast Asia (Charterfield); no speedups" )
1781 	PORT_CONFSETTING(       0x0090, "Hong Kong (Charterfield)" )
1782 	PORT_CONFSETTING(       0x00a0, "Korea (Unite Trading)" )
1783 	PORT_CONFSETTING(       0x00b0, DEF_STR( Taiwan ) )
1784 	PORT_CONFSETTING(       0x00c0, "USA (Atari Games Corp.); no speedups" )
1785 	PORT_CONFSETTING(       0x00d0, "Southeast Asia (Charterfield)" )
1786 	PORT_CONFSETTING(       0x80e0, "Europe; no speedups" )
1787 	PORT_CONFSETTING(       0x00f0, "Japan (Taito Corp.)" )
1788 INPUT_PORTS_END
1789 
1790 
1791 static INPUT_PORTS_START( dogyuuna )
1792 	PORT_INCLUDE( dogyuun )
1793 
1794 	PORT_MODIFY("DSWA")
1795 	TOAPLAN_COINAGE_DUAL_LOC( JMPR, 0xf0, 0x30, SW1 )
1796 
1797 	PORT_MODIFY("JMPR")
1798 	// "No speedups": all speedup items in game are replaced with bombs
1799 	PORT_CONFNAME( 0x00f0,  0x0030, DEF_STR( Region ) ) //PORT_CONFLOCATION("JP:!4,!3,!2,!1")
1800 	PORT_CONFSETTING(       0x0030, DEF_STR( Europe ) )
1801 	PORT_CONFSETTING(       0x0010, DEF_STR( USA ) )
1802 	PORT_CONFSETTING(       0x0020, "USA (Atari Games Corp.)" )
1803 	PORT_CONFSETTING(       0x0000, DEF_STR( Japan ) )
1804 	PORT_CONFSETTING(       0x0040, "Hong Kong (Charterfield); no speedups" )
1805 	PORT_CONFSETTING(       0x0050, "Korea (Unite Trading); no speedups" )
1806 	PORT_CONFSETTING(       0x0060, "Taiwan; no speedups" )
1807 //  PORT_CONFSETTING(        0x0070, "Taiwan (Licensed to ???????); no speedups" )
1808 	PORT_CONFSETTING(       0x0080, "Southeast Asia (Charterfield); no speedups" )
1809 	PORT_CONFSETTING(       0x0090, "Hong Kong (Charterfield)" )
1810 	PORT_CONFSETTING(       0x00a0, "Korea (Unite Trading)" )
1811 	PORT_CONFSETTING(       0x00b0, DEF_STR( Taiwan ) )
1812 //  PORT_CONFSETTING(        0x00c0, "Taiwan (Licensed to ???????)" )
1813 	PORT_CONFSETTING(       0x00d0, "Southeast Asia (Charterfield)" )
1814 //  PORT_CONFSETTING(        0x00e0, DEF_STR( Unused ) )
1815 	PORT_CONFSETTING(       0x00f0, "Japan (Taito Corp.)" )
1816 INPUT_PORTS_END
1817 
1818 
1819 static INPUT_PORTS_START( dogyuunt )
1820 	PORT_INCLUDE( dogyuun )
1821 
1822 	PORT_MODIFY("DSWA")
1823 	TOAPLAN_COINAGE_DUAL_LOC( JMPR, 0xf0, 0x20, SW1 )
1824 
1825 	PORT_MODIFY("JMPR")
1826 	PORT_CONFNAME( 0x00f0,  0x0020, DEF_STR( Region ) ) //PORT_CONFLOCATION("JP:!4,!3,!2,!1")
1827 	PORT_CONFSETTING(       0x0020, DEF_STR( Europe ) )
1828 	PORT_CONFSETTING(       0x0010, DEF_STR( USA ) )
1829 	PORT_CONFSETTING(       0x0000, DEF_STR( Japan ) )
1830 	PORT_CONFSETTING(       0x0030, DEF_STR( Hong_Kong ) )
1831 	PORT_CONFSETTING(       0x0040, DEF_STR( Korea ) )
1832 	PORT_CONFSETTING(       0x0050, DEF_STR( Taiwan ) )
1833 	PORT_CONFSETTING(       0x0060, "Southeast Asia (Charterfield)" )
1834 	PORT_CONFSETTING(       0x0070, "USA (Romstar, Inc.)" )
1835 	PORT_CONFSETTING(       0x0080, "Hong Kong (Honest Trading Co.)" )
1836 	PORT_CONFSETTING(       0x0090, "Korea (JC Trading Corp.)" )
1837 	PORT_CONFSETTING(       0x00a0, "USA (Fabtek)" )
1838 //  PORT_CONFSETTING(        0x00b0, DEF_STR( Unused ) )
1839 //  PORT_CONFSETTING(        0x00c0, DEF_STR( Unused ) )
1840 //  PORT_CONFSETTING(        0x00d0, DEF_STR( Unused ) )
1841 //  PORT_CONFSETTING(        0x00e0, DEF_STR( Unused ) )
1842 	PORT_CONFSETTING(       0x00f0, "Japan (Taito Corp.)" )
1843 INPUT_PORTS_END
1844 
1845 
1846 static INPUT_PORTS_START( kbash )
1847 	PORT_INCLUDE( toaplan2_3b )
1848 
1849 	PORT_MODIFY("DSWA")
1850 	PORT_DIPNAME( 0x0001,   0x0000, DEF_STR( Continue_Price ) ) PORT_DIPLOCATION("SW1:!1")
1851 	PORT_DIPSETTING(        0x0000, DEF_STR( Normal ) )
1852 	PORT_DIPSETTING(        0x0001, "Discount" )
1853 	// Various features on bit mask 0x000e - see above
1854 	TOAPLAN_COINAGE_DUAL_LOC( JMPR, 0x70, 0x20, SW1 )
1855 
1856 	PORT_MODIFY("DSWB")
1857 	// Difficulty on bit mask 0x0003 - see above
1858 	PORT_DIPNAME( 0x000c,   0x0000, DEF_STR( Bonus_Life ) )     PORT_DIPLOCATION("SW2:!3,!4")
1859 	PORT_DIPSETTING(        0x000c, DEF_STR( None ) )
1860 	PORT_DIPSETTING(        0x0008, "200k only" )
1861 	PORT_DIPSETTING(        0x0004, "100k only" )
1862 	PORT_DIPSETTING(        0x0000, "100k and 400k" )
1863 	PORT_DIPNAME( 0x0030,   0x0000, DEF_STR( Lives ) )          PORT_DIPLOCATION("SW2:!5,!6")
1864 	PORT_DIPSETTING(        0x0030, "1" )
1865 	PORT_DIPSETTING(        0x0000, "2" )
1866 	PORT_DIPSETTING(        0x0020, "3" )
1867 	PORT_DIPSETTING(        0x0010, "4" )
1868 	PORT_DIPNAME( 0x0040,   0x0000, "Invulnerability (Cheat)" )         PORT_DIPLOCATION("SW2:!7")
1869 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
1870 	PORT_DIPSETTING(        0x0040, DEF_STR( On ) )
1871 	PORT_DIPNAME( 0x0080,   0x0000, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:!8")
1872 	PORT_DIPSETTING(        0x0080, DEF_STR( No ) )
1873 	PORT_DIPSETTING(        0x0000, DEF_STR( Yes ) )
1874 
1875 	PORT_START("JMPR")
1876 	PORT_CONFNAME( 0x00f0,  0x0020, DEF_STR( Region ) ) //PORT_CONFLOCATION("JP:!4,!3,!2,!1")
1877 	PORT_CONFSETTING(       0x0020, "Europe, USA (Atari Games)" )   // European coinage
1878 	PORT_CONFSETTING(       0x0010, "USA, Europe (Atari Games)" )
1879 	PORT_CONFSETTING(       0x0000, DEF_STR( Japan ) )
1880 	PORT_CONFSETTING(       0x0030, DEF_STR( Korea ) )
1881 	PORT_CONFSETTING(       0x0040, DEF_STR( Hong_Kong ) )
1882 	PORT_CONFSETTING(       0x0050, DEF_STR( Taiwan ) )
1883 	PORT_CONFSETTING(       0x0060, DEF_STR( Southeast_Asia ) ) // Service Mode wrongly shows European coinage
1884 //  PORT_CONFSETTING(        0x0070, DEF_STR( Unused ) )
1885 //  PORT_CONFSETTING(        0x0080, DEF_STR( Unused ) )
1886 	PORT_CONFSETTING(       0x0090, DEF_STR( USA ) )
1887 	PORT_CONFSETTING(       0x00a0, DEF_STR( Europe ) ) // European coinage
1888 //  PORT_CONFSETTING(        0x00b0, DEF_STR( Unused ) )
1889 //  PORT_CONFSETTING(        0x00c0, DEF_STR( Unused ) )
1890 //  PORT_CONFSETTING(        0x00d0, DEF_STR( Unused ) )
1891 //  PORT_CONFSETTING(        0x00e0, DEF_STR( Unused ) ) // Service Mode wrongly shows European coinage
1892 //  PORT_CONFSETTING(        0x00f0, DEF_STR( Unused ) )
1893 INPUT_PORTS_END
1894 
1895 static INPUT_PORTS_START( kbashk )
1896 	PORT_INCLUDE( kbash )
1897 
1898 	PORT_MODIFY("JMPR")
1899 	PORT_CONFNAME( 0x00f0,  0x0000, DEF_STR( Region ) ) //PORT_CONFLOCATION("JP:!4,!3,!2,!1")
1900 	PORT_CONFSETTING(       0x0000, "Japan (Taito license)" ) // Taito license
1901 	PORT_CONFSETTING(       0x0010, DEF_STR( Unused ) )
1902 	PORT_CONFSETTING(       0x0020, DEF_STR( Unused ) )
1903 	PORT_CONFSETTING(       0x0030, DEF_STR( Korea ) )
1904 	PORT_CONFSETTING(       0x0040, DEF_STR( Hong_Kong ) )
1905 	PORT_CONFSETTING(       0x0050, DEF_STR( Taiwan ) )
1906 	PORT_CONFSETTING(       0x0060, DEF_STR( Southeast_Asia ) )
1907 	PORT_CONFSETTING(       0x0070, DEF_STR( Unused ) )
1908 	PORT_CONFSETTING(       0x0080, DEF_STR( Japan ) ) // no Taito license
1909 	PORT_CONFSETTING(       0x0090, DEF_STR( Unused ) )
1910 	PORT_CONFSETTING(       0x00a0, DEF_STR( Unused ) )
1911 	PORT_CONFSETTING(       0x00b0, DEF_STR( Korea ) )
1912 	PORT_CONFSETTING(       0x00c0, DEF_STR( Hong_Kong ))
1913 	PORT_CONFSETTING(       0x00d0, DEF_STR( Taiwan ))
1914 	PORT_CONFSETTING(       0x00e0, DEF_STR( Southeast_Asia ))
1915 	PORT_CONFSETTING(       0x00f0, DEF_STR( Unused ) )
1916 INPUT_PORTS_END
1917 
1918 static INPUT_PORTS_START( kbash2 )
1919 	PORT_INCLUDE( kbash )
1920 
1921 	PORT_MODIFY("DSWA")
1922 	TOAPLAN_COINAGE_DUAL_LOC( JMPR, 0x07, 0x02, SW1 )
1923 
1924 	PORT_MODIFY("JMPR")
1925 	PORT_CONFNAME( 0x000f,  0x0006, DEF_STR( Region ) ) //PORT_CONFLOCATION("JP:!4,!3,!2,!1")
1926 	PORT_CONFSETTING(       0x0000, "Japan (Taito Corp.)" )
1927 //  PORT_CONFSETTING(        0x0001, DEF_STR( Unused ) )
1928 //  PORT_CONFSETTING(        0x0002, DEF_STR( Unused ) ) // European coinage
1929 	PORT_CONFSETTING(       0x0003, "Korea (Unite Trading)" )
1930 	PORT_CONFSETTING(       0x0004, DEF_STR( Hong_Kong ) )
1931 	PORT_CONFSETTING(       0x0005, DEF_STR( Taiwan ) )
1932 	PORT_CONFSETTING(       0x0006, "Southeast Asia (Charterfield)" )   // Service Mode wrongly shows European coinage
1933 //  PORT_CONFSETTING(        0x0007, DEF_STR( Unused ) )
1934 	PORT_CONFSETTING(       0x0008, DEF_STR( Japan ) )
1935 //  PORT_CONFSETTING(        0x0009, DEF_STR( Unused ) )
1936 //  PORT_CONFSETTING(        0x000a, DEF_STR( Unused ) ) // European coinage
1937 	PORT_CONFSETTING(       0x000b, DEF_STR( Korea ) )
1938 //  PORT_CONFSETTING(        0x000c, DEF_STR( Hong_Kong ) )
1939 //  PORT_CONFSETTING(        0x000d, DEF_STR( Taiwan ) )
1940 	PORT_CONFSETTING(       0x000e, DEF_STR( Southeast_Asia ) ) // Service Mode wrongly shows European coinage
1941 //  PORT_CONFSETTING(        0x000f, DEF_STR( Unused ) )
1942 	PORT_BIT( 0x00f0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1943 INPUT_PORTS_END
1944 
1945 
1946 static INPUT_PORTS_START( truxton2 )
1947 	PORT_INCLUDE( toaplan2_3b )
1948 
1949 	PORT_MODIFY("IN1")
1950 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Fast Scrolling (Cheat)")
1951 
1952 	PORT_MODIFY("DSWA")
1953 	PORT_DIPNAME( 0x0001,   0x0000, "Rapid Fire" )              PORT_DIPLOCATION("SW1:!1")
1954 	PORT_DIPSETTING(        0x0001, DEF_STR( Off ) )
1955 	PORT_DIPSETTING(        0x0000, DEF_STR( On ) )
1956 	// Various features on bit mask 0x000e - see above
1957 	TOAPLAN_COINAGE_DUAL_LOC( JMPR, 0x0f, 0x02, SW1 )
1958 
1959 	PORT_MODIFY("DSWB")
1960 	// Difficulty on bit mask 0x0003 - see above
1961 	PORT_DIPNAME( 0x000c,   0x0000, DEF_STR( Bonus_Life ) )     PORT_DIPLOCATION("SW2:!3,!4")
1962 	PORT_DIPSETTING(        0x000c, "200k only" )
1963 	PORT_DIPSETTING(        0x0008, "100k only" )
1964 	PORT_DIPSETTING(        0x0004, "100k and 250k" )
1965 	PORT_DIPSETTING(        0x0000, "70k and 200k" )
1966 	PORT_DIPNAME( 0x0030,   0x0000, DEF_STR( Lives ) )          PORT_DIPLOCATION("SW2:!5,!6")
1967 	PORT_DIPSETTING(        0x0030, "2" )
1968 	PORT_DIPSETTING(        0x0000, "3" )
1969 	PORT_DIPSETTING(        0x0020, "4" )
1970 	PORT_DIPSETTING(        0x0010, "5" )
1971 	PORT_DIPNAME( 0x0040,   0x0000, "Invulnerability (Cheat)" ) PORT_DIPLOCATION("SW2:!7")
1972 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
1973 	PORT_DIPSETTING(        0x0040, DEF_STR( On ) )
1974 	PORT_DIPNAME( 0x0080,   0x0000, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:!8")
1975 	PORT_DIPSETTING(        0x0080, DEF_STR( No ) )
1976 	PORT_DIPSETTING(        0x0000, DEF_STR( Yes ) )
1977 
1978 	PORT_START("JMPR")
1979 	PORT_CONFNAME( 0x000f,  0x0002, DEF_STR( Region ) ) //PORT_CONFLOCATION("JP:!4,!3,!2,!1")
1980 	PORT_CONFSETTING(       0x0002, DEF_STR( Europe ) )
1981 	PORT_CONFSETTING(       0x0001, DEF_STR( USA ) )
1982 	PORT_CONFSETTING(       0x0000, DEF_STR( Japan ) )
1983 	PORT_CONFSETTING(       0x0003, DEF_STR( Hong_Kong ) )
1984 	PORT_CONFSETTING(       0x0004, DEF_STR( Korea ) )
1985 	PORT_CONFSETTING(       0x0005, DEF_STR( Taiwan ) )
1986 	PORT_CONFSETTING(       0x0006, "Southeast Asia (Charterfield)" )
1987 	PORT_CONFSETTING(       0x0007, "USA (Romstar, Inc.)" )
1988 	PORT_CONFSETTING(       0x0008, "Hong Kong (Honest Trading Co.)" )
1989 	PORT_CONFSETTING(       0x0009, "Korea (JC Trading Corp.)" )
1990 	PORT_CONFSETTING(       0x000a, "USA (Fabtek)" )
1991 //  PORT_CONFSETTING(        0x000b, DEF_STR( Unused ) )
1992 //  PORT_CONFSETTING(        0x000c, DEF_STR( Unused ) )
1993 //  PORT_CONFSETTING(        0x000d, DEF_STR( Unused ) )
1994 //  PORT_CONFSETTING(        0x000e, DEF_STR( Unused ) )
1995 	PORT_CONFSETTING(       0x000f, "Japan (Taito Corp.)" )
1996 INPUT_PORTS_END
1997 
1998 
1999 static INPUT_PORTS_START( pipibibs )
2000 	PORT_INCLUDE( toaplan2_2b )
2001 
2002 	PORT_MODIFY("DSWA")
2003 	// Various features on bit mask 0x000f - see above
2004 	TOAPLAN_COINAGE_DUAL_LOC( JMPR, 0x06, 0x06, SW1 )
2005 
2006 	PORT_MODIFY("DSWB")
2007 	// Difficulty on bit mask 0x0003 - see above
2008 	PORT_DIPNAME( 0x000c,   0x0000, DEF_STR( Bonus_Life ) )     PORT_DIPLOCATION("SW2:!3,!4")
2009 	PORT_DIPSETTING(        0x000c, DEF_STR( None ) )
2010 	PORT_DIPSETTING(        0x0008, "200k only" )
2011 	PORT_DIPSETTING(        0x0000, "200k and every 300k" )
2012 	PORT_DIPSETTING(        0x0004, "150k and every 200k" )
2013 	PORT_DIPNAME( 0x0030,   0x0000, DEF_STR( Lives ) )          PORT_DIPLOCATION("SW2:!5,!6")
2014 	PORT_DIPSETTING(        0x0030, "1" )
2015 	PORT_DIPSETTING(        0x0020, "2" )
2016 	PORT_DIPSETTING(        0x0000, "3" )
2017 	PORT_DIPSETTING(        0x0010, "5" )
2018 	PORT_DIPNAME( 0x0040,   0x0000, "Invulnerability (Cheat)" ) PORT_DIPLOCATION("SW2:!7")
2019 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
2020 	PORT_DIPSETTING(        0x0040, DEF_STR( On ) )
2021 	PORT_DIPNAME( 0x0080,   0x0000, DEF_STR( Unused ) )         PORT_DIPLOCATION("SW2:!8")
2022 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
2023 	PORT_DIPSETTING(        0x0080, DEF_STR( On ) )
2024 
2025 	PORT_START("JMPR")
2026 	PORT_CONFNAME( 0x0008,  0x0000, "Nudity" )          //PORT_CONFLOCATION("JP:!1")
2027 	PORT_CONFSETTING(       0x0008, DEF_STR( Low ) )
2028 	PORT_CONFSETTING(       0x0000, "High, but censored" )
2029 	PORT_CONFNAME( 0x0007,  0x0006, DEF_STR( Region ) ) //PORT_CONFLOCATION("JP:!4,!3,!2")
2030 	PORT_CONFSETTING(       0x0006, DEF_STR( Europe ) )
2031 	PORT_CONFSETTING(       0x0004, DEF_STR( USA ) )
2032 	PORT_CONFSETTING(       0x0000, DEF_STR( Japan ) )
2033 	PORT_CONFSETTING(       0x0001, DEF_STR( Asia ) )
2034 	PORT_CONFSETTING(       0x0002, "Hong Kong (Honest Trading Co.)" )
2035 	PORT_CONFSETTING(       0x0003, DEF_STR( Taiwan ) )
2036 	PORT_CONFSETTING(       0x0005, "USA (Romstar, Inc.)" )
2037 	PORT_CONFSETTING(       0x0007, "Europe (Nova Apparate GMBH & Co.)" )
2038 INPUT_PORTS_END
2039 
2040 
2041 static INPUT_PORTS_START( pipibibsp )
2042 	PORT_INCLUDE( pipibibs )
2043 
2044 	PORT_MODIFY("DSWA")
2045 	// Various features on bit mask 0x000d - see above
2046 	TOAPLAN_COINAGE_DUAL_LOC( JMPR, 0x80000, 0x80000, SW1 )
2047 
2048 	PORT_MODIFY("JMPR")
2049 	// Bit Mask 0x80000 is used here to signify European Coinage for MAME purposes - not read on the real board!
2050 	PORT_CONFNAME( 0x80007, 0x00002, DEF_STR( Region ) )    //PORT_CONFLOCATION("JP:!4,!3,!2,FAKE:!1")
2051 	PORT_CONFSETTING(       0x00002, DEF_STR( World ) )
2052 	PORT_CONFSETTING(       0x80005, DEF_STR( Europe ) )
2053 	PORT_CONFSETTING(       0x00004, DEF_STR( USA ) )
2054 	PORT_CONFSETTING(       0x00000, "Japan (Ryouta Kikaku)" )
2055 	PORT_CONFSETTING(       0x00001, "Hong Kong (Honest Trading Co.)" )
2056 	PORT_CONFSETTING(       0x80006, "Spain & Portugal (APM Electronics S.A.)" )
2057 	PORT_CONFSETTING(       0x00007, "World (Ryouta Kikaku)" )
2058 INPUT_PORTS_END
2059 
2060 
2061 static INPUT_PORTS_START( whoopee )
2062 	PORT_INCLUDE( pipibibs )
2063 
2064 	PORT_MODIFY("JMPR")
2065 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(toaplan2_state, c2map_r)   // bit 0x10 sound ready
2066 INPUT_PORTS_END
2067 
2068 
2069 static INPUT_PORTS_START( pipibibsbl )
2070 	PORT_INCLUDE( pipibibs )
2071 
2072 	PORT_MODIFY("DSWA")
2073 	PORT_DIPNAME( 0x0002,   0x0000, DEF_STR( Unused ) )     PORT_DIPLOCATION("SW1:!2")  // In Test Mode, it shows as Normal/Invert Screen - HW doesn't support it
2074 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
2075 	PORT_DIPSETTING(        0x0002, DEF_STR( On ) )
2076 	// Various features on bit mask 0x000d - see above
2077 	TOAPLAN_COINAGE_DUAL_LOC( JMPR, 0x80000, 0x80000, SW1 )
2078 
2079 	PORT_MODIFY("JMPR")
2080 	// Bit Mask 0x80000 is used here to signify European Coinage for MAME purposes - not read on the real board!
2081 	PORT_CONFNAME( 0x80007, 0x00002, DEF_STR( Region ) )    //PORT_CONFLOCATION("JP:!4,!3,!2,FAKE:!1")
2082 	PORT_CONFSETTING(       0x00002, DEF_STR( World ) )
2083 	PORT_CONFSETTING(       0x80005, DEF_STR( Europe ) )
2084 	PORT_CONFSETTING(       0x00004, DEF_STR( USA ) )
2085 	PORT_CONFSETTING(       0x00000, "Japan (Ryouta Kikaku)" )
2086 	PORT_CONFSETTING(       0x00001, "Hong Kong (Honest Trading Co.)" )
2087 	PORT_CONFSETTING(       0x80006, "Spain & Portugal (APM Electronics S.A.)" )
2088 	PORT_CONFSETTING(       0x00007, "World (Ryouta Kikaku)" )
2089 INPUT_PORTS_END
2090 
2091 
2092 static INPUT_PORTS_START( fixeight )
2093 	// The Suicide buttons are technically P1 and P2 Button 3, but we hook
2094 	// them up as IPT_OTHER so each player has the same number of buttons.
2095 	PORT_START("IN1")
2096 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_8WAY
2097 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_8WAY
2098 	PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_8WAY
2099 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_8WAY
2100 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
2101 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1)
2102 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 Suicide (Cheat)")
2103 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2104 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // Unknown/Unused
2105 
2106 	PORT_START("IN2")
2107 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_8WAY
2108 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_8WAY
2109 	PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_8WAY
2110 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_8WAY
2111 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
2112 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2)
2113 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 Suicide (Cheat)")
2114 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2115 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // Unknown/Unused
2116 
2117 	PORT_START("IN3")
2118 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(3) PORT_8WAY
2119 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(3) PORT_8WAY
2120 	PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(3) PORT_8WAY
2121 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(3) PORT_8WAY
2122 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(3)
2123 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(3)
2124 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_START3 )
2125 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_MEMORY_RESET ) PORT_NAME("Region Reset")
2126 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // Unknown/Unused
2127 
2128 	PORT_START("SYS")
2129 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_COIN3 )
2130 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_TILT )
2131 	PORT_SERVICE_NO_TOGGLE(0x0004, IP_ACTIVE_HIGH)  // Service input is a pushbutton marked 'Test SW'
2132 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_COIN1 )
2133 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_COIN2 )
2134 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_START1 )
2135 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_START2 )
2136 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2137 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // Unknown/Unused
2138 
2139 	PORT_START("EEPROM")
2140 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
2141 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
2142 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
2143 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
2144 INPUT_PORTS_END
2145 
2146 
2147 static INPUT_PORTS_START( fixeightbl )
2148 	PORT_INCLUDE( toaplan2_2b )
2149 
2150 	PORT_MODIFY("SYS")
2151 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_COIN3 )
2152 	PORT_SERVICE_NO_TOGGLE(0x0004, IP_ACTIVE_HIGH)  // Service input is a pushbutton marked 'Test SW'
2153 
2154 	PORT_START("IN3")
2155 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(3) PORT_8WAY
2156 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(3) PORT_8WAY
2157 	PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(3) PORT_8WAY
2158 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(3) PORT_8WAY
2159 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(3)
2160 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(3)
2161 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_START3 )
2162 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2163 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // Unknown/Unused
2164 
2165 	PORT_MODIFY("DSWA")
2166 	PORT_DIPNAME( 0x0001,   0x0000, "Maximum Players" )     PORT_DIPLOCATION("SW1:!1")
2167 	PORT_DIPSETTING(        0x0000, "2" )
2168 	PORT_DIPSETTING(        0x0001, "3" )
2169 	PORT_DIPNAME( 0x0002,   0x0000, DEF_STR( Unused ) )     PORT_DIPLOCATION("SW1:!2")  // This video HW doesn't support flip screen
2170 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
2171 	PORT_DIPSETTING(        0x0002, DEF_STR( On ) )
2172 	PORT_DIPNAME( 0x0004,   0x0004, "Shooting Style" )      PORT_DIPLOCATION("SW1:!3")
2173 	PORT_DIPSETTING(        0x0004, "Semi-Auto" )
2174 	PORT_DIPSETTING(        0x0000, "Full-Auto" )
2175 	// Various features on bit mask 0x0008 - see above
2176 	TOAPLAN_COINAGE_JAPAN_LOC(SW1)
2177 
2178 	PORT_MODIFY("DSWB")
2179 	// Difficulty on bit mask 0x0003 - see above
2180 	PORT_DIPNAME( 0x000c,   0x0000, DEF_STR( Bonus_Life ) )     PORT_DIPLOCATION("SW2:!3,!4")
2181 	PORT_DIPSETTING(        0x000c, DEF_STR( None ) )
2182 	PORT_DIPSETTING(        0x0000, "500k and every 500k" )
2183 	PORT_DIPSETTING(        0x0008, "300k only" )
2184 	PORT_DIPSETTING(        0x0004, "300k and every 300k" )
2185 	PORT_DIPNAME( 0x0030,   0x0000, DEF_STR( Lives ) )          PORT_DIPLOCATION("SW2:!5,!6")
2186 	PORT_DIPSETTING(        0x0030, "1" )
2187 	PORT_DIPSETTING(        0x0020, "2" )
2188 	PORT_DIPSETTING(        0x0000, "3" )
2189 	PORT_DIPSETTING(        0x0010, "5" )
2190 	PORT_DIPNAME( 0x0040,   0x0000, "Invulnerability (Cheat)" ) PORT_DIPLOCATION("SW2:!7")
2191 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
2192 	PORT_DIPSETTING(        0x0040, DEF_STR( On ) )
2193 	PORT_DIPNAME( 0x0080,   0x0000, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:!8")
2194 	PORT_DIPSETTING(        0x0080, DEF_STR( No ) )
2195 	PORT_DIPSETTING(        0x0000, DEF_STR( Yes ) )
2196 INPUT_PORTS_END
2197 
2198 
2199 static INPUT_PORTS_START( grindstm )
2200 	PORT_INCLUDE( toaplan2_2b )
2201 
2202 	PORT_MODIFY("DSWA")
2203 	PORT_DIPNAME( 0x0001,   0x0000, DEF_STR( Cabinet ) )        PORT_DIPLOCATION("SW1:!1")
2204 	PORT_DIPSETTING(        0x0000, DEF_STR( Upright ) )
2205 	PORT_DIPSETTING(        0x0001, DEF_STR( Cocktail ) )
2206 	// Various features on bit mask 0x000e - see above
2207 	TOAPLAN_COINAGE_DUAL_LOC( JMPR, 0xe0, 0x80, SW1 )
2208 
2209 	PORT_MODIFY("DSWB")
2210 	// Difficulty on bit mask 0x0003 - see above
2211 	PORT_DIPNAME( 0x000c,   0x0000, DEF_STR( Bonus_Life ) )     PORT_DIPLOCATION("SW2:!3,!4")
2212 	PORT_DIPSETTING(        0x000c, DEF_STR( None ) )
2213 	PORT_DIPSETTING(        0x0008, "200k only" )
2214 	PORT_DIPSETTING(        0x0000, "300k and 800k" )
2215 	PORT_DIPSETTING(        0x0004, "300k and every 800k" )
2216 	PORT_DIPNAME( 0x0030,   0x0000, DEF_STR( Lives ) )          PORT_DIPLOCATION("SW2:!5,!6")
2217 	PORT_DIPSETTING(        0x0030, "1" )
2218 	PORT_DIPSETTING(        0x0020, "2" )
2219 	PORT_DIPSETTING(        0x0000, "3" )
2220 	PORT_DIPSETTING(        0x0010, "5" )
2221 	PORT_DIPNAME( 0x0040,   0x0000, "Invulnerability (Cheat)" )         PORT_DIPLOCATION("SW2:!7")
2222 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
2223 	PORT_DIPSETTING(        0x0040, DEF_STR( On ) )
2224 	PORT_DIPNAME( 0x0080,   0x0000, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:!8")
2225 	PORT_DIPSETTING(        0x0080, DEF_STR( No ) )
2226 	PORT_DIPSETTING(        0x0000, DEF_STR( Yes ) )
2227 
2228 	PORT_START("JMPR")
2229 	// Code in many places in game tests if region is >= 0xC. Effects on gameplay?
2230 	PORT_CONFNAME( 0x00f0,  0x0090, DEF_STR( Region ) ) //PORT_CONFLOCATION("JP:!4,!3,!2,!1")
2231 	PORT_CONFSETTING(       0x0090, DEF_STR( Europe ) )
2232 //  PORT_CONFSETTING(        0x0080, DEF_STR( Europe ) )
2233 	PORT_CONFSETTING(       0x00b0, DEF_STR( USA ) )
2234 	PORT_CONFSETTING(       0x00a0, "USA (American Sammy Corporation)" )
2235 	PORT_CONFSETTING(       0x0070, DEF_STR( Southeast_Asia ) )
2236 	PORT_CONFSETTING(       0x0060, "Southeast Asia (Charterfield)" )
2237 	PORT_CONFSETTING(       0x0050, DEF_STR( Taiwan ) )
2238 	PORT_CONFSETTING(       0x0040, "Taiwan (Anomoto International Inc.)" )
2239 	PORT_CONFSETTING(       0x0030, DEF_STR( Hong_Kong ) )
2240 	PORT_CONFSETTING(       0x0020, "Hong Kong (Charterfield)" )
2241 	PORT_CONFSETTING(       0x0010, DEF_STR( Korea ) )
2242 	PORT_CONFSETTING(       0x0000, "Korea (Unite Trading)" )
2243 	PORT_CONFSETTING(       0x00d0, "USA; different?" )
2244 	PORT_CONFSETTING(       0x00c0, "USA (American Sammy Corporation); different?" )
2245 	PORT_CONFSETTING(       0x00e0, "Korea; different?" )
2246 //  PORT_CONFSETTING(        0x00f0, "Korea; different?" )
2247 INPUT_PORTS_END
2248 
2249 
2250 static INPUT_PORTS_START( grindstma )
2251 	PORT_INCLUDE( grindstm )
2252 
2253 	PORT_MODIFY("JMPR")
2254 	// Code in many places in game tests if region is >= 0xC. Effects on gameplay?
2255 	PORT_CONFNAME( 0x00f0,  0x0090, DEF_STR( Region ) ) //PORT_CONFLOCATION("JP:!4,!3,!2,!1")
2256 	PORT_CONFSETTING(       0x0090, DEF_STR( Europe ) )
2257 //  PORT_CONFSETTING(        0x0080, DEF_STR( Europe ) )
2258 	PORT_CONFSETTING(       0x00b0, DEF_STR( USA ) )
2259 	PORT_CONFSETTING(       0x00a0, "USA (Atari Games Corp.)" )
2260 	PORT_CONFSETTING(       0x0070, DEF_STR( Southeast_Asia ) )
2261 	PORT_CONFSETTING(       0x0060, "Southeast Asia (Charterfield)" )
2262 	PORT_CONFSETTING(       0x0050, DEF_STR( Taiwan ) )
2263 //  PORT_CONFSETTING(        0x0040, DEF_STR( Taiwan ) )
2264 	PORT_CONFSETTING(       0x0030, DEF_STR( Hong_Kong ) )
2265 	PORT_CONFSETTING(       0x0020, "Hong Kong (Charterfield)" )
2266 	PORT_CONFSETTING(       0x0010, DEF_STR( Korea ) )
2267 	PORT_CONFSETTING(       0x0000, "Korea (Unite Trading)" )
2268 	PORT_CONFSETTING(       0x00c0, "Korea; different?" )
2269 //  PORT_CONFSETTING(        0x00d0, "Korea; different?" )
2270 //  PORT_CONFSETTING(        0x00e0, "Korea; different?" )
2271 //  PORT_CONFSETTING(        0x00f0, "Korea; different?" )
2272 INPUT_PORTS_END
2273 
2274 
2275 static INPUT_PORTS_START( vfive )
2276 	PORT_INCLUDE( grindstm )
2277 
2278 	PORT_MODIFY("DSWA")
2279 	TOAPLAN_COINAGE_JAPAN_LOC(SW1)
2280 
2281 	PORT_MODIFY("JMPR")
2282 	// Region is forced to Japan in this set.
2283 	// Code at $9238 tests bit 7.
2284 	// (Actually bit 3, but the V25 shifts the jumper byte before storing it in shared RAM)
2285 	// Runs twice near end of stage 1, once when each of the two boss tanks appears. Effect?
2286 	// Also, if bit 7 is set and bits 6-5 are clear, service mode wrongly shows European coinage
2287 	// (due to code left in from Grind Stormer: see code at $210A4 and lookup table at $211FA)
2288 	PORT_CONFNAME( 0x0030,  0x0000, "Copyright" )           //PORT_CONFLOCATION("JP:!4,!3")
2289 	PORT_CONFSETTING(       0x0000, "All Rights Reserved" )
2290 //  PORT_CONFSETTING(        0x0010, "All Rights Reserved" )
2291 //  PORT_CONFSETTING(        0x0020, "All Rights Reserved" )
2292 	PORT_CONFSETTING(       0x0030, "Licensed to Taito Corp." )
2293 	PORT_CONFNAME( 0x0040,  0x0000, DEF_STR( Unused ) )     //PORT_CONFLOCATION("JP:!2")
2294 	PORT_CONFSETTING(       0x0000, DEF_STR( Off ) )
2295 	PORT_CONFSETTING(       0x0040, DEF_STR( On ) )
2296 	PORT_CONFNAME( 0x0080,  0x0000, DEF_STR( Unknown ) )    //PORT_CONFLOCATION("JP:!1")
2297 	PORT_CONFSETTING(       0x0000, DEF_STR( Off ) )
2298 	PORT_CONFSETTING(       0x0080, DEF_STR( On ) )
2299 INPUT_PORTS_END
2300 
2301 
2302 static INPUT_PORTS_START( batsugun )
2303 	PORT_INCLUDE( toaplan2_3b )
2304 
2305 	PORT_MODIFY("DSWA")
2306 	PORT_DIPNAME( 0x0001,   0x0000, DEF_STR( Continue_Price ) ) PORT_DIPLOCATION("SW1:!1")
2307 	PORT_DIPSETTING(        0x0000, DEF_STR( Normal ) )
2308 	PORT_DIPSETTING(        0x0001, "Discount" )
2309 	// Various features on bit mask 0x000e - see above
2310 	TOAPLAN_COINAGE_JAPAN_LOC(SW1)  // European coinage shown in Service Mode but not actually used
2311 
2312 	PORT_MODIFY("DSWB")
2313 	// Difficulty on bit mask 0x0003 - see above
2314 	PORT_DIPNAME( 0x000c,   0x0000, DEF_STR( Bonus_Life ) )     PORT_DIPLOCATION("SW2:!3,!4")
2315 	PORT_DIPSETTING(        0x000c, DEF_STR( None ) )
2316 	PORT_DIPSETTING(        0x0008, "1500k only" )
2317 	PORT_DIPSETTING(        0x0000, "1000k only" )
2318 	PORT_DIPSETTING(        0x0004, "500k and every 600k" )
2319 	PORT_DIPNAME( 0x0030,   0x0000, DEF_STR( Lives ) )          PORT_DIPLOCATION("SW2:!5,!6")
2320 	PORT_DIPSETTING(        0x0030, "1" )
2321 	PORT_DIPSETTING(        0x0020, "2" )
2322 	PORT_DIPSETTING(        0x0000, "3" )
2323 	PORT_DIPSETTING(        0x0010, "5" )
2324 	PORT_DIPNAME( 0x0040,   0x0000, "Invulnerability (Cheat)" )         PORT_DIPLOCATION("SW2:!7")
2325 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
2326 	PORT_DIPSETTING(        0x0040, DEF_STR( On ) )
2327 	PORT_DIPNAME( 0x0080,   0x0000, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:!8")
2328 	PORT_DIPSETTING(        0x0080, DEF_STR( No ) )
2329 	PORT_DIPSETTING(        0x0000, DEF_STR( Yes ) )
2330 
2331 	PORT_START("JMPR")
2332 	PORT_CONFNAME( 0x00f0,  0x0090, DEF_STR( Region ) ) //PORT_CONFLOCATION("JP:!4,!3,!2,!1")
2333 	PORT_CONFSETTING(       0x0090, DEF_STR( Europe ) )
2334 	PORT_CONFSETTING(       0x0080, "Europe (Taito Corp.)" )
2335 	PORT_CONFSETTING(       0x00b0, DEF_STR( USA ) )
2336 	PORT_CONFSETTING(       0x00a0, "USA (Taito Corp.)" )
2337 	PORT_CONFSETTING(       0x00f0, DEF_STR( Japan ) )
2338 //  PORT_CONFSETTING(        0x00e0, DEF_STR( Japan ) )
2339 	PORT_CONFSETTING(       0x00d0, "Japan (Taito Corp.)" )
2340 //  PORT_CONFSETTING(        0x00c0, "Japan (Taito Corp.)" )
2341 	PORT_CONFSETTING(       0x0070, DEF_STR( Southeast_Asia ) )
2342 	PORT_CONFSETTING(       0x0060, "Southeast Asia (Taito Corp.)" )
2343 	PORT_CONFSETTING(       0x0050, DEF_STR( Taiwan ) )
2344 	PORT_CONFSETTING(       0x0040, "Taiwan (Taito Corp.)" )
2345 	PORT_CONFSETTING(       0x0030, DEF_STR( Hong_Kong ) )
2346 	PORT_CONFSETTING(       0x0020, "Hong Kong (Taito Corp.)" )
2347 	PORT_CONFSETTING(       0x0010, DEF_STR( Korea ) )
2348 	PORT_CONFSETTING(       0x0000, "Korea (Unite Trading)" )
2349 INPUT_PORTS_END
2350 
2351 
2352 static INPUT_PORTS_START( pwrkick )
2353 	PORT_START("DSWA")
2354 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:!1,!2")
2355 	PORT_DIPSETTING(    0x00, DEF_STR( Easy ) )
2356 	PORT_DIPSETTING(    0x01, DEF_STR( Normal ) )
2357 	PORT_DIPSETTING(    0x02, DEF_STR( Hard ) )
2358 	PORT_DIPSETTING(    0x03, DEF_STR( Very_Hard ) )
2359 	PORT_DIPNAME( 0x5c, 0x00, "Payout" ) PORT_DIPLOCATION("SW1:!3,!4,!5,!7")
2360 	PORT_DIPSETTING(    0x00, "110" ) // Service mode displays values as 1-8, ignoring SW1:7
2361 	PORT_DIPSETTING(    0x04, "105" )
2362 	PORT_DIPSETTING(    0x08, "100" )
2363 	PORT_DIPSETTING(    0x0c, "95" )
2364 	PORT_DIPSETTING(    0x10, "90" )
2365 	PORT_DIPSETTING(    0x14, "85" )
2366 	PORT_DIPSETTING(    0x18, "80" )
2367 	PORT_DIPSETTING(    0x1c, "75" )
2368 	PORT_DIPSETTING(    0x40, "70" )
2369 	PORT_DIPSETTING(    0x44, "65" )
2370 	PORT_DIPSETTING(    0x48, "60" )
2371 	PORT_DIPSETTING(    0x4c, "55" )
2372 	PORT_DIPSETTING(    0x50, "50" )
2373 	PORT_DIPSETTING(    0x54, "45" )
2374 	PORT_DIPSETTING(    0x58, "40" )
2375 	PORT_DIPSETTING(    0x5c, "35" )
2376 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:!6")
2377 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
2378 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2379 	PORT_DIPNAME( 0x80, 0x00, "Diagnostic" ) PORT_DIPLOCATION("SW1:!8")
2380 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2381 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
2382 
2383 	PORT_START("DSWB")
2384 	PORT_DIPNAME( 0x03, 0x00, "Play Credit" ) PORT_DIPLOCATION("SW2:!1,!2")
2385 	PORT_DIPSETTING(    0x00, UNICODE_YEN "10" )
2386 	PORT_DIPSETTING(    0x01, UNICODE_YEN "20" )
2387 	PORT_DIPSETTING(    0x02, UNICODE_YEN "30" )
2388 	PORT_DIPSETTING(    0x03, UNICODE_YEN "40" )
2389 	PORT_DIPNAME( 0x0c, 0x00, "Coin Exchange" ) PORT_DIPLOCATION("SW2:!3,!4")
2390 	PORT_DIPSETTING(    0x00, "12" )
2391 	PORT_DIPSETTING(    0x04, "10" )
2392 	PORT_DIPSETTING(    0x08, "6" )
2393 	PORT_DIPSETTING(    0x0c, "5" )
2394 	PORT_DIPNAME( 0x30, 0x00, "Game Mode" ) PORT_DIPLOCATION("SW2:!5,!6")
2395 	PORT_DIPSETTING(    0x00, DEF_STR( Normal ) )
2396 	PORT_DIPSETTING(    0x10, "Shot" )
2397 	PORT_DIPSETTING(    0x20, "Auto" )
2398 	PORT_DIPSETTING(    0x30, "S-Manual" )
2399 	PORT_DIPUNUSED_DIPLOC( 0x40, 0x00, "SW2:!7" )
2400 	PORT_DIPUNUSED_DIPLOC( 0x80, 0x00, "SW2:!8" )
2401 
2402 	PORT_START("DSWC")
2403 	PORT_DIPUNUSED_DIPLOC( 0x01, 0x00, "SW3:!1" )
2404 	PORT_DIPUNUSED_DIPLOC( 0x02, 0x00, "SW3:!2" )
2405 	PORT_DIPUNUSED_DIPLOC( 0x04, 0x00, "SW3:!3" )
2406 	PORT_DIPUNUSED_DIPLOC( 0x08, 0x00, "SW3:!4" )
2407 	PORT_DIPUNUSED_DIPLOC( 0x10, 0x00, "SW3:!5" )
2408 	PORT_DIPUNUSED_DIPLOC( 0x20, 0x00, "SW3:!6" )
2409 	PORT_DIPUNUSED_DIPLOC( 0x40, 0x00, "SW3:!7" )
2410 	PORT_DIPUNUSED_DIPLOC( 0x80, 0x00, "SW3:!8" )
2411 
2412 	PORT_START("IN1")
2413 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
2414 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SLOT_STOP1 ) PORT_NAME("Left")
2415 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SLOT_STOP2 ) PORT_NAME("Center")
2416 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SLOT_STOP3 ) PORT_NAME("Right")
2417 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )
2418 
2419 	PORT_START("IN2")
2420 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_NAME("Coin 2 (" UNICODE_YEN "10)")
2421 	PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_HIGH )
2422 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SLOT_STOP4 ) PORT_NAME("Down") // does this button really exist?
2423 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r)
2424 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_MEMORY_RESET )
2425 	PORT_BIT( 0xe0, IP_ACTIVE_HIGH, IPT_UNUSED )
2426 
2427 	PORT_START("SYS")
2428 	PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_UNUSED )
2429 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 ) PORT_NAME("Coin Exchange (" UNICODE_YEN "100)")
2430 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_GAMBLE_BOOK )
2431 	PORT_BIT( 0x30, IP_ACTIVE_HIGH, IPT_UNUSED )
2432 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_GAMBLE_SERVICE ) PORT_NAME("Attendant Key")
2433 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_NAME("Coin 1 (Medal)")
2434 
2435 	// The specific "Payout" button shown on the test screen and diagnostic menu does not exist.
2436 INPUT_PORTS_END
2437 
2438 static INPUT_PORTS_START( othldrby )
2439 	PORT_INCLUDE( toaplan2_3b )
2440 
2441 	PORT_MODIFY("SYS")
2442 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1)
2443 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1)
2444 
2445 	PORT_MODIFY("DSWA")
2446 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
2447 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
2448 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2449 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Flip_Screen ) )
2450 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2451 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
2452 	PORT_SERVICE( 0x04, IP_ACTIVE_HIGH )
2453 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Allow_Continue ) )
2454 	PORT_DIPSETTING(    0x08, DEF_STR( No ) )
2455 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
2456 	PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) )
2457 	PORT_DIPSETTING(    0x30, DEF_STR( 3C_1C ) )
2458 	PORT_DIPSETTING(    0x20, DEF_STR( 2C_1C ) )
2459 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
2460 	PORT_DIPSETTING(    0x10, DEF_STR( 1C_2C ) )
2461 	PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) )
2462 	PORT_DIPSETTING(    0xc0, DEF_STR( 3C_1C ) )
2463 	PORT_DIPSETTING(    0x80, DEF_STR( 2C_1C ) )
2464 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
2465 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_2C ) )
2466 
2467 	PORT_MODIFY("DSWB")
2468 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) )
2469 	PORT_DIPSETTING(    0x01, DEF_STR( Easy ) )
2470 	PORT_DIPSETTING(    0x00, DEF_STR( Normal ) )
2471 	PORT_DIPSETTING(    0x02, DEF_STR( Hard ) )
2472 	PORT_DIPSETTING(    0x03, DEF_STR( Very_Hard ) )
2473 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unused ) )
2474 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2475 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
2476 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unused ) )
2477 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2478 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
2479 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unused ) )
2480 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2481 	PORT_DIPSETTING(    0x10, DEF_STR( On ) )
2482 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unused ) )
2483 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2484 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
2485 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unused ) )
2486 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2487 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
2488 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unused ) )
2489 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
2490 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
2491 INPUT_PORTS_END
2492 
2493 
2494 static INPUT_PORTS_START( enmadaio )
2495 	PORT_START("SYS")
2496 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_SERVICE1 )
2497 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_TILT )
2498 	TOAPLAN_TEST_SWITCH( 0x04, IP_ACTIVE_HIGH )
2499 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_COIN1 )
2500 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_COIN2 )
2501 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_START1 )
2502 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_START2 )
2503 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2504 
2505 	PORT_START("DSWA")
2506 	PORT_DIPNAME( 0x0001, 0x0000, "Game Mode" )
2507 	PORT_DIPSETTING(      0x0000, "Normal Game" )
2508 	PORT_DIPSETTING(      0x0001, "Stop and Slow Mode" )
2509 	PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Flip_Screen ) )
2510 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
2511 	PORT_DIPSETTING(      0x0002, DEF_STR( On ) )
2512 	PORT_DIPNAME( 0x0004, 0x0000, DEF_STR( Unknown ) ) // unused
2513 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
2514 	PORT_DIPSETTING(      0x0004, DEF_STR( On ) )
2515 	PORT_DIPNAME( 0x0008, 0x0000, DEF_STR( Demo_Sounds ) )
2516 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
2517 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2518 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) )
2519 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )
2520 	PORT_DIPSETTING(      0x0000, DEF_STR( 2C_1C ) )
2521 	PORT_DIPSETTING(      0x0010, DEF_STR( 3C_1C ) )
2522 	PORT_DIPSETTING(      0x0020, DEF_STR( 4C_1C ) )
2523 	PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Unknown ) ) // unused
2524 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
2525 	PORT_DIPSETTING(      0x0040, DEF_STR( On ) )
2526 	PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Unknown ) ) // unused
2527 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
2528 	PORT_DIPSETTING(      0x0080, DEF_STR( On ) )
2529 
2530 	PORT_START("MISC2") // should be DSWB? but not even read in test mode display?
2531 	PORT_DIPNAME( 0x0001, 0x0001, "2" )
2532 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
2533 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2534 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
2535 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
2536 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2537 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
2538 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
2539 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2540 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
2541 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
2542 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2543 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
2544 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
2545 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2546 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
2547 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
2548 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2549 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
2550 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
2551 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2552 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
2553 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
2554 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2555 	PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
2556 	PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
2557 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2558 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
2559 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
2560 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2561 	PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
2562 	PORT_DIPSETTING(      0x0400, DEF_STR( Off ) )
2563 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2564 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
2565 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
2566 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2567 	PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
2568 	PORT_DIPSETTING(      0x1000, DEF_STR( Off ) )
2569 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2570 	PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
2571 	PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
2572 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2573 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
2574 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
2575 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2576 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
2577 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
2578 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2579 
2580 	PORT_START("MISC3")
2581 	PORT_DIPNAME( 0x0001, 0x0001, "3" )
2582 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
2583 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2584 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
2585 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
2586 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2587 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
2588 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
2589 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2590 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
2591 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
2592 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2593 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("yes")
2594 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("no")
2595 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
2596 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
2597 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2598 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
2599 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
2600 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2601 	PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
2602 	PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
2603 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2604 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
2605 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
2606 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2607 	PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
2608 	PORT_DIPSETTING(      0x0400, DEF_STR( Off ) )
2609 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2610 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
2611 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
2612 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2613 	PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
2614 	PORT_DIPSETTING(      0x1000, DEF_STR( Off ) )
2615 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2616 	PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
2617 	PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
2618 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2619 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
2620 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
2621 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2622 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
2623 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
2624 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2625 
2626 	PORT_START("MISC4")
2627 	PORT_DIPNAME( 0x0001, 0x0001, "4" )
2628 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
2629 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2630 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
2631 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
2632 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2633 	PORT_DIPNAME( 0x0004, 0x0000, "Status of Something 1" ) // gives error in attract mode otherwise
2634 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
2635 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2636 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
2637 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
2638 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2639 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
2640 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
2641 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2642 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
2643 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
2644 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2645 	PORT_DIPNAME( 0x0040, 0x0000, "Status of Something 2" ) // turn this off and it comes up with an error
2646 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
2647 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2648 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
2649 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
2650 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2651 	PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
2652 	PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
2653 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2654 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
2655 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
2656 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2657 	PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
2658 	PORT_DIPSETTING(      0x0400, DEF_STR( Off ) )
2659 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2660 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
2661 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
2662 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2663 	PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
2664 	PORT_DIPSETTING(      0x1000, DEF_STR( Off ) )
2665 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2666 	PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
2667 	PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
2668 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2669 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
2670 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
2671 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2672 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
2673 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
2674 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2675 
2676 	PORT_START("UNK")
2677 	PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(30) PORT_KEYDELTA(15) // this is the sensor, not sure what it measures, pulse / heartbeat?
2678 	PORT_DIPNAME( 0x0100, 0x0100, "Freeze" ) // not sure
2679 	PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
2680 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2681 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
2682 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
2683 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2684 	PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
2685 	PORT_DIPSETTING(      0x0400, DEF_STR( Off ) )
2686 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2687 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
2688 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
2689 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2690 	PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
2691 	PORT_DIPSETTING(      0x1000, DEF_STR( Off ) )
2692 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2693 	PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
2694 	PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
2695 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2696 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
2697 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
2698 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2699 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
2700 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
2701 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2702 
2703 INPUT_PORTS_END
2704 
2705 static INPUT_PORTS_START( snowbro2 )
2706 	PORT_INCLUDE( toaplan2_2b )
2707 
2708 	PORT_START("IN3")
2709 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(3) PORT_8WAY
2710 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(3) PORT_8WAY
2711 	PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(3) PORT_8WAY
2712 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(3) PORT_8WAY
2713 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(3)
2714 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(3)
2715 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_START3 )
2716 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2717 
2718 	PORT_START("IN4")
2719 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(4) PORT_8WAY
2720 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(4) PORT_8WAY
2721 	PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(4) PORT_8WAY
2722 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(4) PORT_8WAY
2723 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(4)
2724 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(4)
2725 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_START4 )
2726 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2727 
2728 	PORT_MODIFY("DSWA")
2729 	PORT_DIPNAME( 0x0001,   0x0000, DEF_STR( Continue_Price ) ) PORT_DIPLOCATION("SW1:!1")
2730 	PORT_DIPSETTING(        0x0000, DEF_STR( Normal ) )
2731 	PORT_DIPSETTING(        0x0001, "Discount" )
2732 	// Various features on bit mask 0x000e - see above
2733 	TOAPLAN_COINAGE_DUAL_LOC( JMPR, 0x1c00, 0x0800, SW1 )
2734 
2735 	PORT_MODIFY("DSWB")
2736 	// Difficulty on bit mask 0x0003 - see above
2737 	PORT_DIPNAME( 0x000c,   0x0000, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:!3,!4")
2738 	PORT_DIPSETTING(        0x000c, DEF_STR( None ) )
2739 	PORT_DIPSETTING(        0x0008, "200k only" )
2740 	PORT_DIPSETTING(        0x0000, "100k only" )
2741 	PORT_DIPSETTING(        0x0004, "100k and every 500k" )
2742 	PORT_DIPNAME( 0x0030,   0x0000, DEF_STR( Lives ) )      PORT_DIPLOCATION("SW2:!5,!6")
2743 	PORT_DIPSETTING(        0x0030, "1" )
2744 	PORT_DIPSETTING(        0x0020, "2" )
2745 	PORT_DIPSETTING(        0x0000, "3" )
2746 	PORT_DIPSETTING(        0x0010, "4" )
2747 	PORT_DIPNAME( 0x0040,   0x0000, "Invulnerability (Cheat)" )     PORT_DIPLOCATION("SW2:!7")
2748 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
2749 	PORT_DIPSETTING(        0x0040, DEF_STR( On ) )
2750 	PORT_DIPNAME( 0x0080,   0x0000, "Maximum Players" )     PORT_DIPLOCATION("SW2:!8")
2751 	PORT_DIPSETTING(        0x0080, "2" )
2752 	PORT_DIPSETTING(        0x0000, "4" )
2753 
2754 	PORT_START("JMPR")
2755 	PORT_CONFNAME( 0x2000,  0x0000, "Show All Rights Reserved" )    //PORT_CONFLOCATION("JP:!1")
2756 	PORT_CONFSETTING(       0x0000, DEF_STR( No ) )
2757 	PORT_CONFSETTING(       0x2000, DEF_STR( Yes ) )
2758 	PORT_CONFNAME( 0x1c00,  0x0800, DEF_STR( Region ) ) //PORT_CONFLOCATION("JP:!4,!3,!2")
2759 	PORT_CONFSETTING(       0x0800, DEF_STR( Europe ) )
2760 	PORT_CONFSETTING(       0x0400, DEF_STR( USA ) )
2761 	PORT_CONFSETTING(       0x0000, DEF_STR( Japan ) )
2762 	PORT_CONFSETTING(       0x0c00, DEF_STR( Korea ) )
2763 	PORT_CONFSETTING(       0x1000, DEF_STR( Hong_Kong ) )
2764 	PORT_CONFSETTING(       0x1400, DEF_STR( Taiwan ) )
2765 	PORT_CONFSETTING(       0x1800, DEF_STR( Southeast_Asia ) )
2766 //  PORT_CONFSETTING(        0x1c00, DEF_STR( Unused ) )
2767 	PORT_BIT( 0xc3ff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2768 INPUT_PORTS_END
2769 
2770 
2771 static INPUT_PORTS_START( sstriker )
2772 	PORT_INCLUDE( toaplan2_3b )
2773 
2774 	PORT_MODIFY("DSWA")
2775 	PORT_DIPNAME( 0x0001,   0x0000, DEF_STR( Free_Play ) )  PORT_DIPLOCATION("SW1:!1")
2776 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
2777 	PORT_DIPSETTING(        0x0001, DEF_STR( On ) )
2778 	// Various features on bit mask 0x000e - see above
2779 	TOAPLAN_COINAGE_DUAL_LOC( JMPR, 0x0e, 0x04, SW1 )
2780 
2781 	PORT_MODIFY("DSWB")
2782 	// Difficulty on bit mask 0x0003 - see above
2783 	PORT_DIPNAME( 0x000c,   0x0000, DEF_STR( Bonus_Life ) )     PORT_DIPLOCATION("SW2:!3,!4")
2784 	PORT_DIPSETTING(        0x000c, DEF_STR( None ) )
2785 	PORT_DIPSETTING(        0x0008, "200k only" )
2786 	PORT_DIPSETTING(        0x0000, "Every 300k" )
2787 	PORT_DIPSETTING(        0x0004, "200k and 500k" )
2788 	PORT_DIPNAME( 0x0030,   0x0000, DEF_STR( Lives ) )          PORT_DIPLOCATION("SW2:!5,!6")
2789 	PORT_DIPSETTING(        0x0030, "1" )
2790 	PORT_DIPSETTING(        0x0020, "2" )
2791 	PORT_DIPSETTING(        0x0000, "3" )
2792 	PORT_DIPSETTING(        0x0010, "5" )
2793 	PORT_DIPNAME( 0x0040,   0x0000, "Invulnerability (Cheat)" ) PORT_DIPLOCATION("SW2:!7")
2794 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
2795 	PORT_DIPSETTING(        0x0040, DEF_STR( On ) )
2796 	PORT_DIPNAME( 0x0080,   0x0000, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:!8")
2797 	PORT_DIPSETTING(        0x0080, DEF_STR( No ) )
2798 	PORT_DIPSETTING(        0x0000, DEF_STR( Yes ) )
2799 
2800 	PORT_START("JMPR")
2801 	PORT_CONFNAME( 0x0001,  0x0001, "FBI Logo" )        //PORT_CONFLOCATION("JP:!4")
2802 	PORT_CONFSETTING(       0x0001, DEF_STR( Off ) )
2803 	PORT_CONFSETTING(       0x0000, DEF_STR( On ) )
2804 	PORT_CONFNAME( 0x000e,  0x0004, DEF_STR( Region ) ) //PORT_CONFLOCATION("JP:!3,!2,!1")
2805 	PORT_CONFSETTING(       0x0004, DEF_STR( Europe ) )
2806 	PORT_CONFSETTING(       0x0002, DEF_STR( USA ) )
2807 	PORT_CONFSETTING(       0x0000, DEF_STR( Japan ) )
2808 	PORT_CONFSETTING(       0x0006, DEF_STR( Southeast_Asia ) )
2809 	PORT_CONFSETTING(       0x0008, DEF_STR( China ) )
2810 	PORT_CONFSETTING(       0x000a, DEF_STR( Korea ) )
2811 	PORT_CONFSETTING(       0x000c, DEF_STR( Hong_Kong ) )
2812 	PORT_CONFSETTING(       0x000e, DEF_STR( Taiwan ) )
2813 INPUT_PORTS_END
2814 
2815 
2816 static INPUT_PORTS_START( sstrikerk ) // Although the region jumper is functional, it's a Korean board / version
2817 	PORT_INCLUDE( sstriker )
2818 
2819 	PORT_MODIFY("JMPR")
2820 	PORT_CONFNAME( 0x000e,  0x000a, DEF_STR( Region ) ) //PORT_CONFLOCATION("JP:!3,!2,!1")
2821 	PORT_CONFSETTING(       0x0004, DEF_STR( Europe ) )
2822 	PORT_CONFSETTING(       0x0002, DEF_STR( USA ) )
2823 	PORT_CONFSETTING(       0x0000, DEF_STR( Japan ) )
2824 	PORT_CONFSETTING(       0x0006, DEF_STR( Southeast_Asia ) )
2825 	PORT_CONFSETTING(       0x0008, DEF_STR( China ) )
2826 	PORT_CONFSETTING(       0x000a, "Korea (Unite Trading)" )
2827 	PORT_CONFSETTING(       0x000c, DEF_STR( Hong_Kong ) )
2828 	PORT_CONFSETTING(       0x000e, DEF_STR( Taiwan ) )
2829 INPUT_PORTS_END
2830 
2831 
2832 static INPUT_PORTS_START( mahoudai )
2833 	PORT_INCLUDE( sstriker )
2834 
2835 	PORT_MODIFY("JMPR")
2836 	// Effectively unused by this set - see notes
2837 	PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2838 INPUT_PORTS_END
2839 
2840 
2841 static INPUT_PORTS_START( kingdmgp )
2842 	PORT_INCLUDE( sstriker )
2843 
2844 	// The code and lookup tables pertaining to the jumpers are almost identical to sstriker.
2845 	// However, this set apparently lacks (reachable) code to display the FBI logo,
2846 	// even though the logo itself is present in the gfx ROMs.
2847 	PORT_MODIFY("JMPR")
2848 	PORT_CONFNAME( 0x0001,  0x0000, DEF_STR( Unused ) ) //PORT_CONFLOCATION("JP:!4")
2849 	PORT_CONFSETTING(       0x0000, DEF_STR( Off ) )
2850 	PORT_CONFSETTING(       0x0001, DEF_STR( On ) )
2851 	PORT_CONFNAME( 0x000e,  0x0004, DEF_STR( Region ) ) //PORT_CONFLOCATION("JP:!3,!2,!1")
2852 	PORT_CONFSETTING(       0x0004, DEF_STR( Europe ) )
2853 	PORT_CONFSETTING(       0x0002, DEF_STR( USA ) )
2854 //  PORT_CONFSETTING(        0x0000, DEF_STR( Japan ) )  // Corrupt title screen and text - use shippumd
2855 	PORT_CONFSETTING(       0x0006, DEF_STR( Southeast_Asia ) )
2856 	PORT_CONFSETTING(       0x0008, DEF_STR( China ) )
2857 	PORT_CONFSETTING(       0x000a, "Korea (Unite Trading license)" )
2858 	PORT_CONFSETTING(       0x000c, DEF_STR( Hong_Kong ) )
2859 	PORT_CONFSETTING(       0x000e, DEF_STR( Taiwan ) )
2860 INPUT_PORTS_END
2861 
2862 
2863 static INPUT_PORTS_START( shippumd )
2864 	PORT_INCLUDE( sstriker )
2865 
2866 	PORT_MODIFY("JMPR")
2867 	// Title screen and text are corrupt for anything but Japan
2868 	PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2869 INPUT_PORTS_END
2870 
2871 
2872 static INPUT_PORTS_START( bgaregga )
2873 	PORT_START("IN1")
2874 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_8WAY
2875 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_8WAY
2876 	PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_8WAY
2877 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_8WAY
2878 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
2879 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1)
2880 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1)
2881 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2882 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // Unknown/Unused
2883 
2884 	PORT_START("IN2")
2885 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_8WAY
2886 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_8WAY
2887 	PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_8WAY
2888 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_8WAY
2889 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
2890 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2)
2891 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2)
2892 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2893 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // Unknown/Unused
2894 
2895 	PORT_START("SYS")
2896 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_SERVICE1 )
2897 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2898 	TOAPLAN_TEST_SWITCH( 0x04, IP_ACTIVE_HIGH )
2899 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_COIN1 )
2900 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_COIN2 )
2901 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_START1 )
2902 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_START2 )
2903 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
2904 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // Unknown/Unused
2905 
2906 	PORT_START("DSWA")
2907 	PORT_SERVICE_DIPLOC(0x0001, IP_ACTIVE_HIGH, "SW1:!1")
2908 	PORT_DIPNAME( 0x0002,   0x0000, "Credits to Start" )    PORT_DIPLOCATION("SW1:!2")
2909 	PORT_DIPSETTING(        0x0000, "1" )
2910 	PORT_DIPSETTING(        0x0002, "2" )
2911 	PORT_DIPNAME( 0x001c,   0x0000, DEF_STR( Coin_A ) )     PORT_DIPLOCATION("SW1:!3,!4,!5")
2912 	PORT_DIPSETTING(        0x0018, DEF_STR( 4C_1C ) )
2913 	PORT_DIPSETTING(        0x0014, DEF_STR( 3C_1C ) )
2914 	PORT_DIPSETTING(        0x0010, DEF_STR( 2C_1C ) )
2915 	PORT_DIPSETTING(        0x0000, DEF_STR( 1C_1C ) )
2916 	PORT_DIPSETTING(        0x0004, DEF_STR( 1C_2C ) )
2917 	PORT_DIPSETTING(        0x0008, DEF_STR( 1C_3C ) )
2918 	PORT_DIPSETTING(        0x000c, DEF_STR( 1C_4C ) )
2919 	PORT_DIPSETTING(        0x001c, DEF_STR( Free_Play ) )
2920 	PORT_DIPNAME( 0x00e0,   0x0000, DEF_STR( Coin_B ) )     PORT_CONDITION("DSWA", 0x001c, NOTEQUALS, 0x001c)   PORT_DIPLOCATION("SW1:!6,!7,!8")
2921 	PORT_DIPSETTING(        0x00c0, DEF_STR( 4C_1C ) )      PORT_CONDITION("DSWA", 0x001c, NOTEQUALS, 0x001c)
2922 	PORT_DIPSETTING(        0x00a0, DEF_STR( 3C_1C ) )      PORT_CONDITION("DSWA", 0x001c, NOTEQUALS, 0x001c)
2923 	PORT_DIPSETTING(        0x0080, DEF_STR( 2C_1C ) )      PORT_CONDITION("DSWA", 0x001c, NOTEQUALS, 0x001c)
2924 	PORT_DIPSETTING(        0x0000, DEF_STR( 1C_1C ) )      PORT_CONDITION("DSWA", 0x001c, NOTEQUALS, 0x001c)
2925 //  PORT_DIPSETTING(        0x00e0, DEF_STR( 1C_1C ) )      PORT_CONDITION("DSWA", 0x001c, NOTEQUALS, 0x001c)
2926 	PORT_DIPSETTING(        0x0020, DEF_STR( 1C_2C ) )      PORT_CONDITION("DSWA", 0x001c, NOTEQUALS, 0x001c)
2927 	PORT_DIPSETTING(        0x0040, DEF_STR( 1C_3C ) )      PORT_CONDITION("DSWA", 0x001c, NOTEQUALS, 0x001c)
2928 	PORT_DIPSETTING(        0x0060, DEF_STR( 1C_4C ) )      PORT_CONDITION("DSWA", 0x001c, NOTEQUALS, 0x001c)
2929 	// When Coin_A is set to Free_Play, Coin_A becomes Coin_A and Coin_B, and the following dips occur
2930 	PORT_DIPNAME( 0x0020,   0x0000, "Joystick Mode" )       PORT_CONDITION("DSWA", 0x001c, EQUALS, 0x001c)  PORT_DIPLOCATION("SW1:!6")
2931 	PORT_DIPSETTING(        0x0000, "90 degrees ACW" )      PORT_CONDITION("DSWA", 0x001c, EQUALS, 0x001c)
2932 	PORT_DIPSETTING(        0x0020, DEF_STR( Normal ) )     PORT_CONDITION("DSWA", 0x001c, EQUALS, 0x001c)
2933 	PORT_DIPNAME( 0x0040,   0x0000, "Effect" )              PORT_CONDITION("DSWA", 0x001c, EQUALS, 0x001c)  PORT_DIPLOCATION("SW1:!7")
2934 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )        PORT_CONDITION("DSWA", 0x001c, EQUALS, 0x001c)
2935 	PORT_DIPSETTING(        0x0040, DEF_STR( On ) )         PORT_CONDITION("DSWA", 0x001c, EQUALS, 0x001c)
2936 	PORT_DIPNAME( 0x0080,   0x0000, "Music" )               PORT_CONDITION("DSWA", 0x001c, EQUALS, 0x001c)  PORT_DIPLOCATION("SW1:!8")
2937 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )        PORT_CONDITION("DSWA", 0x001c, EQUALS, 0x001c)
2938 	PORT_DIPSETTING(        0x0080, DEF_STR( On ) )         PORT_CONDITION("DSWA", 0x001c, EQUALS, 0x001c)
2939 
2940 	PORT_START("DSWB")
2941 	PORT_DIPNAME( 0x0003,   0x0000, DEF_STR( Difficulty ) )     PORT_DIPLOCATION("SW2:!1,!2")
2942 	PORT_DIPSETTING(        0x0001, DEF_STR( Easy ) )
2943 	PORT_DIPSETTING(        0x0000, DEF_STR( Normal ) )
2944 	PORT_DIPSETTING(        0x0002, DEF_STR( Hard ) )
2945 	PORT_DIPSETTING(        0x0003, DEF_STR( Very_Hard ) )
2946 	PORT_DIPNAME( 0x0004,   0x0000, DEF_STR( Flip_Screen ) )    PORT_DIPLOCATION("SW2:!3")
2947 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
2948 	PORT_DIPSETTING(        0x0004, DEF_STR( On ) )
2949 	PORT_DIPNAME( 0x0008,   0x0000, DEF_STR( Demo_Sounds ) )    PORT_DIPLOCATION("SW2:!4")
2950 	PORT_DIPSETTING(        0x0008, DEF_STR( Off ) )
2951 	PORT_DIPSETTING(        0x0000, DEF_STR( On ) )
2952 	PORT_DIPNAME( 0x0070,   0x0000, DEF_STR( Lives ) )          PORT_DIPLOCATION("SW2:!5,!6,!7")
2953 	PORT_DIPSETTING(        0x0030, "1" )
2954 	PORT_DIPSETTING(        0x0020, "2" )
2955 	PORT_DIPSETTING(        0x0000, "3" )
2956 	PORT_DIPSETTING(        0x0010, "4" )
2957 	PORT_DIPSETTING(        0x0040, "5" )
2958 	PORT_DIPSETTING(        0x0050, "6" )
2959 	PORT_DIPSETTING(        0x0060, DEF_STR( Infinite ) )
2960 	PORT_DIPSETTING(        0x0070, "Invulnerability (Cheat)" )
2961 	PORT_DIPNAME( 0x0080,   0x0000, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:!8")
2962 	PORT_DIPSETTING(        0x0000, DEF_STR( None ) )       PORT_CONDITION("JMPR",0x0003,NOTEQUALS,0x0000)  // Non-Japan
2963 	PORT_DIPSETTING(        0x0080, "Every 2000k" )         PORT_CONDITION("JMPR",0x0003,NOTEQUALS,0x0000)  // Non-Japan
2964 	PORT_DIPSETTING(        0x0080, "1000k and 2000k" )     PORT_CONDITION("JMPR",0x0003,EQUALS,0x0000) // Japan
2965 	PORT_DIPSETTING(        0x0000, "Every 1000k" )         PORT_CONDITION("JMPR",0x0003,EQUALS,0x0000) // Japan
2966 
2967 	PORT_START("JMPR") // DSW3 and jumper
2968 	PORT_DIPNAME( 0x0008,  0x0000, "Stage Edit" ) PORT_DIPLOCATION("SW3:!1")
2969 	PORT_DIPSETTING(       0x0000, DEF_STR( Off ) )
2970 	PORT_DIPSETTING(       0x0008, DEF_STR( On ) )
2971 	PORT_DIPNAME( 0x0004,  0x0000, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW3:!2")
2972 	PORT_DIPSETTING(       0x0004, DEF_STR( No ) )
2973 	PORT_DIPSETTING(       0x0000, DEF_STR( Yes ) )
2974 	PORT_CONFNAME( 0x0003,  0x0001, DEF_STR( Region ) ) //PORT_CONFLOCATION("JP:!2,!1")
2975 	PORT_CONFSETTING(       0x0001, "Europe (Tuning)" )
2976 	PORT_CONFSETTING(       0x0002, "USA (Fabtek)" )
2977 	PORT_CONFSETTING(       0x0000, DEF_STR( Japan ) )
2978 	PORT_CONFSETTING(       0x0003, DEF_STR( Asia ) )
2979 INPUT_PORTS_END
2980 
2981 
2982 static INPUT_PORTS_START( bgareggahk )
2983 	PORT_INCLUDE( bgaregga )
2984 
2985 	PORT_MODIFY("JMPR")
2986 	PORT_CONFNAME( 0x0003,  0x0003, DEF_STR( Region ) ) //PORT_CONFLOCATION("JP:!2,!1")
2987 	PORT_CONFSETTING(       0x0001, "Austria (Tuning)" )
2988 	// These two settings end up reporting ROM-0 as BAD
2989 //  PORT_CONFSETTING(        0x0002, "USA (Fabtek)" )
2990 //  PORT_CONFSETTING(        0x0000, DEF_STR( Japan ) )
2991 	PORT_CONFSETTING(       0x0003, "Hong Kong (Metrotainment)" )
2992 INPUT_PORTS_END
2993 
2994 
2995 static INPUT_PORTS_START( bgareggatw )
2996 	PORT_INCLUDE( bgaregga )
2997 
2998 	PORT_MODIFY("JMPR")
2999 	PORT_CONFNAME( 0x0003,  0x0003, DEF_STR( Region ) ) //PORT_CONFLOCATION("JP:!2,!1")
3000 	PORT_CONFSETTING(       0x0001, "Germany (Tuning)" )
3001 	// These two settings end up reporting ROM-0 as BAD
3002 //  PORT_CONFSETTING(        0x0002, "USA (Fabtek)" )
3003 //  PORT_CONFSETTING(        0x0000, DEF_STR( Japan ) )
3004 	PORT_CONFSETTING(       0x0003, "Taiwan (Liang Hwa)" )
3005 INPUT_PORTS_END
3006 
3007 
3008 static INPUT_PORTS_START( bgareggacn )
3009 	PORT_INCLUDE( bgaregga )
3010 
3011 	PORT_MODIFY("JMPR")
3012 	PORT_CONFNAME( 0x0003,  0x0003, DEF_STR( Region ) ) //PORT_CONFLOCATION("JP:!2,!1")
3013 	PORT_CONFSETTING(       0x0001, "Denmark (Tuning)" )
3014 	// These two settings end up reporting ROM-0 as BAD
3015 //  PORT_CONFSETTING(        0x0002, "USA (Fabtek)" )
3016 //  PORT_CONFSETTING(        0x0000, DEF_STR( Japan ) )
3017 	PORT_CONFSETTING(       0x0003, DEF_STR( China ) )
3018 INPUT_PORTS_END
3019 
3020 
3021 static INPUT_PORTS_START( batrider )
3022 	PORT_START("IN")        // Player Inputs
3023 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
3024 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
3025 	PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
3026 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
3027 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
3028 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1)
3029 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1)
3030 	PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
3031 	PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
3032 	PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
3033 	PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
3034 	PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
3035 	PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2)
3036 	PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2)
3037 	PORT_BIT( 0x8080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3038 
3039 	PORT_START("DSW")       // DSWA and DSWB
3040 	PORT_SERVICE_DIPLOC(0x0001, IP_ACTIVE_HIGH, "SW1:!1")
3041 	PORT_DIPNAME( 0x0002,   0x0000, "Credits to Start" )    PORT_CONDITION("DSW", 0x001c, NOTEQUALS, 0x001c)    PORT_DIPLOCATION("SW1:!2")
3042 	PORT_DIPSETTING(        0x0000, "1" )                   PORT_CONDITION("DSW", 0x001c, NOTEQUALS, 0x001c)
3043 	PORT_DIPSETTING(        0x0002, "2" )                   PORT_CONDITION("DSW", 0x001c, NOTEQUALS, 0x001c)
3044 	PORT_DIPNAME( 0x0002,   0x0000, "Joystick Mode" )       PORT_CONDITION("DSW", 0x001c, EQUALS, 0x001c)       PORT_DIPLOCATION("SW1:!2")
3045 	PORT_DIPSETTING(        0x0000, DEF_STR( Normal ) )     PORT_CONDITION("DSW", 0x001c, EQUALS, 0x001c)
3046 	PORT_DIPSETTING(        0x0002, "90 degrees ACW" )      PORT_CONDITION("DSW", 0x001c, EQUALS, 0x001c)
3047 	PORT_DIPNAME( 0x001c,   0x0000, DEF_STR( Coin_A ) )     PORT_DIPLOCATION("SW1:!3,!4,!5")
3048 	PORT_DIPSETTING(        0x0018, DEF_STR( 4C_1C ) )
3049 	PORT_DIPSETTING(        0x0014, DEF_STR( 3C_1C ) )
3050 	PORT_DIPSETTING(        0x0010, DEF_STR( 2C_1C ) )
3051 	PORT_DIPSETTING(        0x0000, DEF_STR( 1C_1C ) )
3052 	PORT_DIPSETTING(        0x0004, DEF_STR( 1C_2C ) )
3053 	PORT_DIPSETTING(        0x0008, DEF_STR( 1C_3C ) )
3054 	PORT_DIPSETTING(        0x000c, DEF_STR( 1C_4C ) )
3055 	PORT_DIPSETTING(        0x001c, DEF_STR( Free_Play ) )
3056 	PORT_DIPNAME( 0x00e0,   0x0000, DEF_STR( Coin_B ) )     PORT_CONDITION("DSW", 0x001c, NOTEQUALS, 0x001c)    PORT_DIPLOCATION("SW1:!6,!7,!8")
3057 	PORT_DIPSETTING(        0x00c0, DEF_STR( 4C_1C ) )      PORT_CONDITION("DSW", 0x001c, NOTEQUALS, 0x001c)
3058 	PORT_DIPSETTING(        0x00a0, DEF_STR( 3C_1C ) )      PORT_CONDITION("DSW", 0x001c, NOTEQUALS, 0x001c)
3059 	PORT_DIPSETTING(        0x0080, DEF_STR( 2C_1C ) )      PORT_CONDITION("DSW", 0x001c, NOTEQUALS, 0x001c)
3060 	PORT_DIPSETTING(        0x0000, DEF_STR( 1C_1C ) )      PORT_CONDITION("DSW", 0x001c, NOTEQUALS, 0x001c)
3061 //  PORT_DIPSETTING(        0x00e0, DEF_STR( 1C_1C ) )      PORT_CONDITION("DSW", 0x001c, NOTEQUALS, 0x001c)
3062 	PORT_DIPSETTING(        0x0020, DEF_STR( 1C_2C ) )      PORT_CONDITION("DSW", 0x001c, NOTEQUALS, 0x001c)
3063 	PORT_DIPSETTING(        0x0040, DEF_STR( 1C_3C ) )      PORT_CONDITION("DSW", 0x001c, NOTEQUALS, 0x001c)
3064 	PORT_DIPSETTING(        0x0060, DEF_STR( 1C_4C ) )      PORT_CONDITION("DSW", 0x001c, NOTEQUALS, 0x001c)
3065 	// When Coin_A is set to Free_Play, Coin_A becomes Coin_A and Coin_B, and the following dips occur
3066 	PORT_DIPNAME( 0x0020,   0x0000, "Hit Score" )           PORT_CONDITION("DSW", 0x001c, EQUALS, 0x001c)   PORT_DIPLOCATION("SW1:!6")
3067 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )        PORT_CONDITION("DSW", 0x001c, EQUALS, 0x001c)
3068 	PORT_DIPSETTING(        0x0020, DEF_STR( On ) )         PORT_CONDITION("DSW", 0x001c, EQUALS, 0x001c)
3069 	PORT_DIPNAME( 0x0040,   0x0000, "Sound Effect" )        PORT_CONDITION("DSW", 0x001c, EQUALS, 0x001c)   PORT_DIPLOCATION("SW1:!7")
3070 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )        PORT_CONDITION("DSW", 0x001c, EQUALS, 0x001c)
3071 	PORT_DIPSETTING(        0x0040, DEF_STR( On ) )         PORT_CONDITION("DSW", 0x001c, EQUALS, 0x001c)
3072 	PORT_DIPNAME( 0x0080,   0x0000, "Music" )               PORT_CONDITION("DSW", 0x001c, EQUALS, 0x001c)   PORT_DIPLOCATION("SW1:!8")
3073 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )        PORT_CONDITION("DSW", 0x001c, EQUALS, 0x001c)
3074 	PORT_DIPSETTING(        0x0080, DEF_STR( On ) )         PORT_CONDITION("DSW", 0x001c, EQUALS, 0x001c)
3075 	PORT_DIPNAME( 0x0300,   0x0000, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:!1,!2")
3076 	PORT_DIPSETTING(        0x0100, DEF_STR( Easy ) )
3077 	PORT_DIPSETTING(        0x0000, DEF_STR( Normal ) )
3078 	PORT_DIPSETTING(        0x0200, DEF_STR( Hard ) )
3079 	PORT_DIPSETTING(        0x0300, DEF_STR( Very_Hard ) )
3080 	PORT_DIPNAME( 0x0c00,   0x0000, "Timer" )               PORT_DIPLOCATION("SW2:!3,!4")
3081 	PORT_DIPSETTING(        0x0c00, DEF_STR( Highest ) )
3082 	PORT_DIPSETTING(        0x0800, DEF_STR( High ) )
3083 	PORT_DIPSETTING(        0x0000, DEF_STR( Normal ) )
3084 	PORT_DIPSETTING(        0x0400, DEF_STR( Low ) )
3085 	PORT_DIPNAME( 0x3000,   0x0000, DEF_STR( Lives ) )      PORT_DIPLOCATION("SW2:!5,!6")
3086 	PORT_DIPSETTING(        0x3000, "1" )
3087 	PORT_DIPSETTING(        0x2000, "2" )
3088 	PORT_DIPSETTING(        0x0000, "3" )
3089 	PORT_DIPSETTING(        0x1000, "4" )
3090 	PORT_DIPNAME( 0xc000,   0x0000, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:!7,!8")
3091 	PORT_DIPSETTING(        0xc000, DEF_STR( None ) )
3092 	PORT_DIPSETTING(        0x8000, "Every 2000k" )
3093 	PORT_DIPSETTING(        0x0000, "Every 1500k" )
3094 	PORT_DIPSETTING(        0x4000, "Every 1000k" )
3095 
3096 	PORT_START("SYS-DSW")   // Coin/System and DSWC
3097 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_SERVICE1 )
3098 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_UNKNOWN)
3099 	TOAPLAN_TEST_SWITCH( 0x0004, IP_ACTIVE_HIGH )
3100 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_COIN1 )
3101 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_COIN2 )
3102 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_START1 )
3103 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_START2 )
3104 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3105 	PORT_DIPNAME( 0x0100,   0x0000, DEF_STR( Flip_Screen ) )    PORT_DIPLOCATION("SW3:!1")
3106 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
3107 	PORT_DIPSETTING(        0x0100, DEF_STR( On ) )
3108 	PORT_DIPNAME( 0x0200,   0x0000, DEF_STR( Demo_Sounds ) )    PORT_DIPLOCATION("SW3:!2")
3109 	PORT_DIPSETTING(        0x0200, DEF_STR( Off ) )
3110 	PORT_DIPSETTING(        0x0000, DEF_STR( On ) )
3111 	PORT_DIPNAME( 0x0400,   0x0000, "Stage Edit" )              PORT_DIPLOCATION("SW3:!3")
3112 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
3113 	PORT_DIPSETTING(        0x0400, DEF_STR( On ) )
3114 	PORT_DIPNAME( 0x0800,   0x0000, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW3:!4")
3115 	PORT_DIPSETTING(        0x0800, DEF_STR( No ) )
3116 	PORT_DIPSETTING(        0x0000, DEF_STR( Yes ) )
3117 	PORT_DIPNAME( 0x1000,   0x0000, "Invulnerability (Cheat)" )         PORT_DIPLOCATION("SW3:!5")
3118 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
3119 	PORT_DIPSETTING(        0x1000, DEF_STR( On ) )
3120 	// These dips are shown only when Coin_A is set to Free_Play, but they work in normal play mode too
3121 	PORT_DIPNAME( 0x2000,   0x0000, "Guest Players" )           PORT_DIPLOCATION("SW3:!6")
3122 	PORT_DIPSETTING(        0x2000, DEF_STR( Off ) )
3123 	PORT_DIPSETTING(        0x0000, DEF_STR( On ) )
3124 	PORT_DIPNAME( 0x4000,   0x0000, "Player Select" )           PORT_DIPLOCATION("SW3:!7")
3125 	PORT_DIPSETTING(        0x4000, DEF_STR( Off ) )
3126 	PORT_DIPSETTING(        0x0000, DEF_STR( On ) )
3127 	PORT_DIPNAME( 0x8000,   0x0000, "Special Course" )          PORT_DIPLOCATION("SW3:!8")
3128 	PORT_DIPSETTING(        0x8000, DEF_STR( Off ) )
3129 	PORT_DIPSETTING(        0x0000, DEF_STR( On ) )
3130 INPUT_PORTS_END
3131 
3132 
3133 static INPUT_PORTS_START( batriderj )
3134 	PORT_INCLUDE( batrider )
3135 
3136 	PORT_MODIFY("SYS-DSW")  // Coin/System and DSWC
3137 	// These dips are shown only when Coin_A is set to Free_Play, but they work in normal play mode too
3138 	PORT_DIPNAME( 0x2000,   0x0000, "Guest Players" )           PORT_DIPLOCATION("SW3:!6")
3139 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
3140 	PORT_DIPSETTING(        0x2000, DEF_STR( On ) )
3141 	PORT_DIPNAME( 0x4000,   0x0000, "Player Select" )           PORT_DIPLOCATION("SW3:!7")
3142 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
3143 	PORT_DIPSETTING(        0x4000, DEF_STR( On ) )
3144 	PORT_DIPNAME( 0x8000,   0x0000, "Special Course" )          PORT_DIPLOCATION("SW3:!8")
3145 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
3146 	PORT_DIPSETTING(        0x8000, DEF_STR( On ) )
3147 INPUT_PORTS_END
3148 
3149 
3150 static INPUT_PORTS_START( bbakraid )
3151 	PORT_INCLUDE( batrider )
3152 
3153 	PORT_MODIFY("DSW")       // DSWA and DSWB
3154 	PORT_DIPNAME( 0xc000,   0x0000, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:!7,!8")
3155 	PORT_DIPSETTING(        0xc000, DEF_STR( None ) )
3156 	PORT_DIPSETTING(        0x8000, "Every 4000k" )
3157 	PORT_DIPSETTING(        0x4000, "Every 3000k" )
3158 	PORT_DIPSETTING(        0x0000, "Every 2000k" )
3159 
3160 	PORT_MODIFY("SYS-DSW")   // Coin/System and DSW-3
3161 	PORT_DIPNAME( 0x2000,   0x0000, "Save Scores" )             PORT_DIPLOCATION("SW3:!6")
3162 	PORT_DIPSETTING(        0x2000, DEF_STR( Off ) )
3163 	PORT_DIPSETTING(        0x0000, DEF_STR( On ) )
3164 	PORT_DIPNAME( 0x4000,   0x0000, DEF_STR( Unused ) )         PORT_DIPLOCATION("SW3:!7")
3165 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
3166 	PORT_DIPSETTING(        0x4000, DEF_STR( On ) )
3167 	PORT_DIPNAME( 0x8000,   0x0000, DEF_STR( Unused ) )         PORT_DIPLOCATION("SW3:!8")
3168 	PORT_DIPSETTING(        0x0000, DEF_STR( Off ) )
3169 	PORT_DIPSETTING(        0x8000, DEF_STR( On ) )
3170 
3171 	PORT_START( "EEPROMOUT" )
3172 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
3173 	PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
3174 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
3175 INPUT_PORTS_END
3176 
3177 
3178 static INPUT_PORTS_START( nprobowl )
3179 	PORT_START("IN")        // Player Inputs
3180 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_COIN1 )
3181 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_SERVICE1 )
3182 	PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_START1 )
3183 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_START2 )
3184 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Set (Relay)")
3185 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // no effect in test mode
3186 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Gutter L")
3187 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Gutter R")
3188 	PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // no effect in test mode
3189 	PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Ballout")
3190 	PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("Ballpass")
3191 	PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("Mot Home")
3192 	PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // no effect in test mode
3193 	PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // no effect in test mode
3194 	PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // no effect in test mode
3195 	PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // no effect in test mode
3196 
3197 	PORT_START("DSW")       // SW0323 and SW0324
3198 	PORT_SERVICE_DIPLOC(   0x0001, IP_ACTIVE_HIGH, "SW0323:!1")
3199 	PORT_DIPUNKNOWN_DIPLOC(0x0002, 0x0000, "SW0323:!2")
3200 	PORT_DIPNAME(          0x0004, 0x0004, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW0323:!3")
3201 	PORT_DIPSETTING(       0x0004, DEF_STR( On ) )
3202 	PORT_DIPSETTING(       0x0000, DEF_STR( Off ) )
3203 	PORT_DIPUNKNOWN_DIPLOC(0x0008, 0x0000, "SW0323:!4")
3204 	PORT_DIPNAME(          0x0070, 0x0000, DEF_STR( Coinage ) )  PORT_DIPLOCATION("SW0323:!5,!6,!7")
3205 	PORT_DIPSETTING(       0x0070, DEF_STR( 5C_1C ) )
3206 	PORT_DIPSETTING(       0x0060, DEF_STR( 4C_1C ) )
3207 	PORT_DIPSETTING(       0x0050, DEF_STR( 3C_1C ) )
3208 	PORT_DIPSETTING(       0x0040, DEF_STR( 2C_1C ) )
3209 	PORT_DIPSETTING(       0x0000, DEF_STR( 1C_1C ) )
3210 	PORT_DIPSETTING(       0x0010, DEF_STR( 1C_2C ) )
3211 	PORT_DIPSETTING(       0x0020, DEF_STR( 1C_3C ) )
3212 	PORT_DIPSETTING(       0x0030, DEF_STR( 1C_4C ) )
3213 	PORT_DIPNAME(          0x0080, 0x0000, DEF_STR( Free_Play ) )  PORT_DIPLOCATION("SW0323:!8")
3214 	PORT_DIPSETTING(       0x0000, DEF_STR( Off ) )
3215 	PORT_DIPSETTING(       0x0080, DEF_STR( On ) )
3216 	PORT_DIPUNKNOWN_DIPLOC(0x0100, 0x0000, "SW0324:!1")
3217 	PORT_DIPUNKNOWN_DIPLOC(0x0200, 0x0000, "SW0324:!2")
3218 	PORT_DIPUNKNOWN_DIPLOC(0x0400, 0x0000, "SW0324:!3")
3219 	PORT_DIPUNKNOWN_DIPLOC(0x0800, 0x0000, "SW0324:!4")
3220 	PORT_DIPUNKNOWN_DIPLOC(0x1000, 0x0000, "SW0324:!5")
3221 	PORT_DIPUNKNOWN_DIPLOC(0x2000, 0x0000, "SW0324:!6")
3222 	PORT_DIPUNKNOWN_DIPLOC(0x4000, 0x0000, "SW0324:!7")
3223 	PORT_DIPUNKNOWN_DIPLOC(0x8000, 0x0000, "SW0324:!8")
3224 
3225 	PORT_START("UNK")   // ??
3226 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3227 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3228 	PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3229 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3230 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3231 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3232 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3233 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3234 	PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3235 	PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3236 	PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3237 	PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3238 	PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3239 	PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3240 	PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3241 	PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN )
3242 INPUT_PORTS_END
3243 
3244 
3245 // Text layer graphics -- ROM based in some games, RAM based in others
3246 // See video/gp9001.cpp for the main graphics layouts
3247 
3248 static const gfx_layout rom_textlayout =
3249 {
3250 	8,8,
3251 	RGN_FRAC(1,1),
3252 	4,
3253 	{ STEP4(0,1) },
3254 	{ STEP8(0,4) },
3255 	{ STEP8(0,4*8) },
3256 	8*8*4
3257 };
3258 
3259 #define XOR(a) WORD_XOR_LE(a)
3260 #define LOC(x) (x+XOR(0))
3261 
3262 static const gfx_layout truxton2_tx_tilelayout =
3263 {
3264 	8,8,    /* 8x8 characters */
3265 	1024,   /* 1024 characters */
3266 	4,      /* 4 bits per pixel */
3267 	{ STEP4(0,1) },
3268 	{ LOC(0)*4, LOC(1)*4, LOC(4)*4, LOC(5)*4, LOC(8)*4, LOC(9)*4, LOC(12)*4, LOC(13)*4 },
3269 	{ STEP8(0,8*8) },
3270 	8*8*8
3271 };
3272 
3273 static const gfx_layout batrider_tx_tilelayout =
3274 {
3275 	8,8,    /* 8x8 characters */
3276 	1024,   /* 1024 characters */
3277 	4,      /* 4 bits per pixel */
3278 	{ STEP4(0,1) },
3279 	{ XOR(0)*4, XOR(1)*4, XOR(2)*4, XOR(3)*4, XOR(4)*4, XOR(5)*4, XOR(6)*4, XOR(7)*4 },
3280 	{ STEP8(0,4*8) },
3281 	8*8*4
3282 };
3283 
3284 static GFXDECODE_START( gfx_truxton2 )
3285 	GFXDECODE_ENTRY( nullptr, 0, truxton2_tx_tilelayout, 64*16, 64 )
3286 GFXDECODE_END
3287 
GFXDECODE_START(gfx_textrom)3288 static GFXDECODE_START( gfx_textrom )
3289 	GFXDECODE_ENTRY( "text", 0, rom_textlayout, 64*16, 64 )
3290 GFXDECODE_END
3291 
3292 static GFXDECODE_START( gfx_batrider )
3293 	GFXDECODE_ENTRY( nullptr, 0, batrider_tx_tilelayout, 64*16, 64 )
3294 GFXDECODE_END
3295 
3296 
3297 void toaplan2_state::tekipaki(machine_config &config)
3298 {
3299 	/* basic machine hardware */
3300 	M68000(config, m_maincpu, 10_MHz_XTAL);         // 10MHz Oscillator
3301 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::tekipaki_68k_mem);
3302 
3303 	hd647180x_device &audiocpu(HD647180X(config, m_audiocpu, 10_MHz_XTAL));
3304 	// 16k byte ROM and 512 byte RAM are internal
3305 	audiocpu.set_addrmap(AS_IO, &toaplan2_state::hd647180_io_map);
3306 	audiocpu.in_pa_callback().set(FUNC(toaplan2_state::tekipaki_cmdavailable_r));
3307 
3308 	config.set_maximum_quantum(attotime::from_hz(600));
3309 
3310 	MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2)
3311 
3312 	/* video hardware */
3313 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
3314 	m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
3315 	m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
3316 	//m_screen->set_refresh_hz(60);
3317 	//m_screen->set_size(432, 262);
3318 	//m_screen->set_visarea(0, 319, 0, 239);
3319 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
3320 	m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
3321 	m_screen->set_palette(m_palette);
3322 
3323 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH);
3324 
3325 	GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL);
3326 	m_vdp[0]->set_palette(m_palette);
3327 	m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_4);
3328 
3329 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
3330 
3331 	/* sound hardware */
3332 	SPEAKER(config, "mono").front_center();
3333 
3334 	GENERIC_LATCH_8(config, m_soundlatch);
3335 
3336 	ym3812_device &ymsnd(YM3812(config, "ymsnd", 27_MHz_XTAL/8));
3337 	ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
3338 	ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
3339 }
3340 
ghox(machine_config & config)3341 void toaplan2_state::ghox(machine_config &config)
3342 {
3343 	/* basic machine hardware */
3344 	M68000(config, m_maincpu, 10_MHz_XTAL);         /* verified on pcb */
3345 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::ghox_68k_mem);
3346 
3347 	HD647180X(config, m_audiocpu, 10_MHz_XTAL);
3348 	m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan2_state::ghox_hd647180_mem_map);
3349 
3350 	config.set_maximum_quantum(attotime::from_hz(600));
3351 
3352 	MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,ghox)
3353 
3354 	/* video hardware */
3355 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
3356 	m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
3357 	m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
3358 	//m_screen->set_refresh_hz(60);
3359 	//m_screen->set_size(432, 262);
3360 	//m_screen->set_visarea(0, 319, 0, 239);
3361 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
3362 	m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
3363 	m_screen->set_palette(m_palette);
3364 
3365 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH);
3366 
3367 	GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL);
3368 	m_vdp[0]->set_palette(m_palette);
3369 	m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_4);
3370 
3371 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
3372 
3373 	/* sound hardware */
3374 	SPEAKER(config, "mono").front_center();
3375 
3376 	YM2151(config, "ymsnd", 27_MHz_XTAL/8).add_route(ALL_OUTPUTS, "mono", 1.0); // verified on pcb
3377 }
3378 
3379 /* probably dogyuun, vfive and kbash use the same decryption table;
3380 those 3 games have been seen with the NITRO905 chip, other alias are
3381 ts002mach for dogyuun, ts004dash for kbash and ts007spy for vfive */
3382 
3383 static const u8 nitro_decryption_table[256] = {
3384 	0x1b,0x56,0x75,0x88,0x8c,0x06,0x58,0x72, 0x83,0x86,0x36,0x1a,0x5f,0xd3,0x8c,0xe9, /* 00 */
3385 	/* *//* *//* *//* *//* *//* *//* *//* */ /* *//* *//* *//* *//* *//* *//* *//* */
3386 	0x22,0x0f,0x03,0x2a,0xeb,0x2a,0xf9,0x0f, 0xa4,0xbd,0x75,0xf3,0x4f,0x53,0x8e,0xfe, /* 10 */
3387 	/*W*//*W*//*r*//*W*//*r*//*W*//*W*//*r*/ /*r*//*a*//*r*//*r*//*r*//*W*//*x*//*r*/
3388 	0x87,0xe8,0xb1,0x8d,0x36,0xb5,0x43,0x73, 0x2a,0x5b,0xf9,0x02,0x24,0x8a,0x03,0x80, /* 20 */
3389 	/*a*//*r*//*r*//*r*//*x*//*r*//*r*//*r*/ /*W*//*r*//*W*//*W*//*a*//*r*//*a*//*r*/
3390 	0x86,0x8b,0xd1,0x3e,0x8d,0x3e,0x58,0xfb, 0xc3,0x79,0xbd,0xb7,0x8a,0xe8,0x0f,0x81, /* 30 */
3391 	/*a*//*a*//*a*//*a*//*r*//*r*//*a*//*r*/ /*r*//*a*//*a*//*W*//*r*//*r*//*r*//*r*/
3392 	0xb7,0xd0,0x8b,0xeb,0xff,0xb8,0x90,0x8b, 0x5e,0xa2,0x90,0x90,0xab,0xb4,0x80,0x59, /* 40 */
3393 	/*r*//*r*//*a*//*r*//*a*//*x*/     /*a*/ /*W*//*W*/          /*r*//*W*//*r*//*a*/
3394 	0x87,0x72,0xb5,0xbd,0xb0,0x88,0x50,0x0f, 0xfe,0xd2,0xc3,0x90,0x8a,0x90,0xf9,0x75, /* 50 */
3395 	/*W*//*a*//*a*//*r*//*r*//*a*//*a*//*a*/ /*r*//*W*//*r*/     /*r*/     /*W*//*r*/
3396 	0x1a,0xb3,0x74,0x0a,0x68,0x24,0xbb,0x90, 0x75,0x47,0xfe,0x2c,0xbe,0xc3,0x88,0xd2, /* 60 */
3397 	/*W*//*r*//*a*//*r*//*a*//*a*//*W*/      /*r*//*a*//*r*//*W*//*W*//*a*//*r*//*a*/
3398 	0x3e,0xc1,0x8c,0x33,0x0f,0x90,0x8b,0x90, 0xb9,0x1e,0xff,0xa2,0x3e,0x22,0xbe,0x57, /* 70 */
3399 	/*r*//*W*//*r*//*r*//*a*/     /*a*/      /*r*//*r*//*a*//*r*//*a*//*W*//*r*//*a*/
3400 	0x81,0x3a,0xf6,0x88,0xeb,0xb1,0x89,0x8a, 0x32,0x80,0x0f,0xb1,0x48,0xc3,0x68,0x72, /* 80 */
3401 	/*r*//*r*//*r*//*r*//*a*//*W*//*a*//*r*/ /*r*//*r*//*r*//*a*//*x*//*a*//*a*//*r*/
3402 	0x53,0x02,0xc0,0x02,0xe8,0xb4,0x74,0xbc, 0x90,0x58,0x0a,0xf3,0x75,0xc6,0x90,0xe8, /* 90 */
3403 	/*a*//*W*//*r*//*W*//*r*//*r*//*r*//*x*/      /*a*//*r*//*r*//*r*//*x*/     /*r*/
3404 	0x26,0x50,0xfc,0x8c,0x90,0xb1,0xc3,0xd1, 0xeb,0x83,0xa4,0xbf,0x26,0x4b,0x46,0xfe, /* a0 */
3405 	/*r*//*a*//*a*//*r*/     /*a*//*r*//*W*/ /*a*//*r*//*r*//*r*//*r*//*W*//*a*//*r*/
3406 	0xe2,0x89,0xb3,0x88,0x03,0x56,0x0f,0x38, 0xbb,0x0c,0x90,0x0f,0x07,0x8a,0x8a,0x33, /* b0 */
3407 	/*r*//*a*//*W*//*r*//*a*//*W*//*r*//*W*/ /*W*//*W*/     /*a*//*r*//*r*//*r*//*x*/
3408 	0xfe,0xf9,0xb1,0xa0,0x45,0x36,0x22,0x5e, 0x8a,0xbe,0xc6,0xea,0x3c,0xb2,0x1e,0xe8, /* c0 */
3409 	/*r*//*W*//*r*//*r*//*r*//*r*//*W*//*r*/ /*r*//*W*//*x*//*x*//*r*//*?*//*r*//*r*/
3410 	0x90,0xeb,0x55,0xf6,0x8a,0xb0,0x5d,0xc0, 0xbb,0x8d,0xf6,0xd0,0xd1,0x88,0x4d,0x90, /* d0 */
3411 			/*a*//*r*//*r*//*a*//*a*//*r*//*W*/ /*x*//*r*//*r*//*a*//*W*//*r*//*W*/
3412 	0x51,0x51,0x74,0xbd,0x32,0xd1,0x90,0xd2, 0x53,0xc7,0xab,0x36,0x50,0xe9,0x33,0xb3, /* e0 */
3413 	/*r*//*a*//*r*//*r*//*r*//*W*/     /*a*/ /*r*//*x*//*r*//*r*//*W*//*a*//*r*//*W*/
3414 	0x2e,0x05,0x88,0x59,0x74,0x74,0x22,0x8e, 0x8a,0x8a,0x36,0x08,0x0f,0x45,0x90,0x2e, /* f0 */
3415 	/*r*//*W*//*r*//*r*//*a*//*a*//*W*//*x*/ /*r*//*r*//*x*//*a*//*r*//*a*/     /*r*/
3416 };
3417 
3418 /*
3419 dogyuun
3420 a5272 cd
3421 
3422 kbash
3423 
3424 vfive
3425 a4849 cd
3426 
3427 */
3428 
dogyuun(machine_config & config)3429 void toaplan2_state::dogyuun(machine_config &config)
3430 {
3431 	/* basic machine hardware */
3432 	M68000(config, m_maincpu, 25_MHz_XTAL/2);           /* verified on pcb */
3433 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::dogyuun_68k_mem);
3434 
3435 	v25_device &audiocpu(V25(config, m_audiocpu, 25_MHz_XTAL/2));         /* NEC V25 type Toaplan marked CPU ??? */
3436 	audiocpu.set_addrmap(AS_PROGRAM, &toaplan2_state::v25_mem);
3437 	audiocpu.set_decryption_table(nitro_decryption_table);
3438 	audiocpu.pt_in_cb().set_ioport("DSWB").exor(0xff);
3439 	audiocpu.p0_in_cb().set_ioport("DSWA").exor(0xff);
3440 	audiocpu.p1_in_cb().set_ioport("JMPR").exor(0xff);
3441 	audiocpu.p2_out_cb().set_nop();  // bit 0 is FAULT according to kbash schematic
3442 
3443 	/* video hardware */
3444 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
3445 	m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
3446 	m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
3447 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_dogyuun));
3448 	m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
3449 	m_screen->set_palette(m_palette);
3450 
3451 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH);
3452 
3453 	GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL);
3454 	m_vdp[0]->set_palette(m_palette);
3455 	m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_4);
3456 
3457 	GP9001_VDP(config, m_vdp[1], 27_MHz_XTAL);
3458 	m_vdp[1]->set_palette(m_palette);
3459 
3460 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
3461 
3462 	/* sound hardware */
3463 	SPEAKER(config, "mono").front_center();
3464 
3465 	YM2151(config, "ymsnd", 27_MHz_XTAL/8).add_route(ALL_OUTPUTS, "mono", 0.5); // verified on pcb
3466 
3467 	OKIM6295(config, m_oki[0], 25_MHz_XTAL/24, okim6295_device::PIN7_HIGH); // verified on PCB
3468 	m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.5);
3469 }
3470 
3471 
kbash(machine_config & config)3472 void toaplan2_state::kbash(machine_config &config)
3473 {
3474 	/* basic machine hardware */
3475 	M68000(config, m_maincpu, 16_MHz_XTAL);         /* 16MHz Oscillator */
3476 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::kbash_68k_mem);
3477 
3478 	/* ROM based v25 */
3479 	v25_device &audiocpu(V25(config, m_audiocpu, 16_MHz_XTAL));         /* NEC V25 type Toaplan marked CPU ??? */
3480 	audiocpu.set_addrmap(AS_PROGRAM, &toaplan2_state::kbash_v25_mem);
3481 	audiocpu.set_decryption_table(nitro_decryption_table);
3482 	audiocpu.pt_in_cb().set_ioport("DSWA").exor(0xff);
3483 	audiocpu.p0_in_cb().set_ioport("DSWB").exor(0xff);
3484 	audiocpu.p1_in_cb().set_ioport("JMPR").exor(0xff);
3485 	audiocpu.p2_out_cb().set_nop();  // bit 0 is FAULT according to kbash schematic
3486 
3487 	/* video hardware */
3488 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
3489 	m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
3490 	m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
3491 	//m_screen->set_refresh_hz(60);
3492 	//m_screen->set_size(432, 262);
3493 	//m_screen->set_visarea(0, 319, 0, 239);
3494 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
3495 	m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
3496 	m_screen->set_palette(m_palette);
3497 
3498 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH);
3499 
3500 	GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL);
3501 	m_vdp[0]->set_palette(m_palette);
3502 	m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_4);
3503 
3504 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
3505 
3506 	/* sound hardware */
3507 	SPEAKER(config, "mono").front_center();
3508 
3509 	YM2151(config, "ymsnd", 27_MHz_XTAL/8).add_route(ALL_OUTPUTS, "mono", 0.5);
3510 
3511 	OKIM6295(config, m_oki[0], 32_MHz_XTAL/32, okim6295_device::PIN7_HIGH);
3512 	m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.5);
3513 }
3514 
3515 
kbash2(machine_config & config)3516 void toaplan2_state::kbash2(machine_config &config)
3517 {
3518 	/* basic machine hardware */
3519 	M68000(config, m_maincpu, 16_MHz_XTAL);         /* 16MHz Oscillator */
3520 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::kbash2_68k_mem);
3521 
3522 	/* video hardware */
3523 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
3524 	m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
3525 	m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
3526 	//m_screen->set_refresh_hz(60);
3527 	//m_screen->set_size(432, 262);
3528 	//m_screen->set_visarea(0, 319, 0, 239);
3529 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
3530 	m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
3531 	m_screen->set_palette(m_palette);
3532 
3533 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH);
3534 
3535 	GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL);
3536 	m_vdp[0]->set_palette(m_palette);
3537 	m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_4);
3538 
3539 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
3540 
3541 	/* sound hardware */
3542 	SPEAKER(config, "mono").front_center();
3543 
3544 	OKIM6295(config, m_oki[0], 16_MHz_XTAL/16, okim6295_device::PIN7_HIGH);
3545 	m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.0);
3546 
3547 	OKIM6295(config, m_oki[1], 16_MHz_XTAL/16, okim6295_device::PIN7_HIGH);
3548 	m_oki[1]->add_route(ALL_OUTPUTS, "mono", 1.0);
3549 }
3550 
3551 
truxton2(machine_config & config)3552 void toaplan2_state::truxton2(machine_config &config)
3553 {
3554 	/* basic machine hardware */
3555 	M68000(config, m_maincpu, 16_MHz_XTAL);         /* verified on pcb */
3556 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::truxton2_68k_mem);
3557 
3558 	/* video hardware */
3559 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
3560 	m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
3561 	m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
3562 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_truxton2));
3563 	m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
3564 	m_screen->set_palette(m_palette);
3565 
3566 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_truxton2);
3567 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH);
3568 
3569 	GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL);
3570 	m_vdp[0]->set_palette(m_palette);
3571 	m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_2);
3572 
3573 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state,truxton2)
3574 
3575 	/* sound hardware */
3576 #ifdef TRUXTON2_STEREO  // music data is stereo...
3577 	SPEAKER(config, "lspeaker").front_left();
3578 	SPEAKER(config, "rspeaker").front_right();
3579 
3580 	YM2151(config, "ymsnd", 27_MHz_XTAL/8).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0);
3581 
3582 	OKIM6295(config, m_oki[0], 16_MHz_XTAL/4, okim6295_device::PIN7_LOW);
3583 	m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
3584 	m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
3585 #else   // ...but the hardware is mono
3586 	SPEAKER(config, "mono").front_center();
3587 
3588 	YM2151(config, "ymsnd", 27_MHz_XTAL/8).add_route(ALL_OUTPUTS, "mono", 1.0); // verified on PCB
3589 
3590 	OKIM6295(config, m_oki[0], 16_MHz_XTAL/4, okim6295_device::PIN7_LOW); // verified on PCB
3591 	m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.0);
3592 #endif
3593 }
3594 
3595 
pipibibs(machine_config & config)3596 void toaplan2_state::pipibibs(machine_config &config)
3597 {
3598 	/* basic machine hardware */
3599 	M68000(config, m_maincpu, 10_MHz_XTAL);         // verified on PCB
3600 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::pipibibs_68k_mem);
3601 
3602 	Z80(config, m_audiocpu, 27_MHz_XTAL/8);         // verified on PCB
3603 	m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan2_state::pipibibs_sound_z80_mem);
3604 
3605 	config.set_maximum_quantum(attotime::from_hz(600));
3606 
3607 	MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2)
3608 
3609 	/* video hardware */
3610 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
3611 	m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
3612 	m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
3613 	//m_screen->set_refresh_hz(60);
3614 	//m_screen->set_size(432, 262);
3615 	//m_screen->set_visarea(0, 319, 0, 239);
3616 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
3617 	m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
3618 	m_screen->set_palette(m_palette);
3619 
3620 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH);
3621 
3622 	GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL);
3623 	m_vdp[0]->set_palette(m_palette);
3624 	m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_4);
3625 
3626 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
3627 
3628 	/* sound hardware */
3629 	SPEAKER(config, "mono").front_center();
3630 
3631 	ym3812_device &ymsnd(YM3812(config, "ymsnd", 27_MHz_XTAL/8)); // verified on PCB
3632 	ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
3633 	ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
3634 }
3635 
3636 
pipibibsbl(machine_config & config)3637 void toaplan2_state::pipibibsbl(machine_config &config)
3638 {
3639 	/* basic machine hardware */
3640 	M68000(config, m_maincpu, 12_MHz_XTAL); // ??? (position labeled "68000-12" but 10 MHz-rated parts used)
3641 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::pipibibi_bootleg_68k_mem);
3642 	m_maincpu->set_addrmap(m68000_base_device::AS_CPU_SPACE, &toaplan2_state::cpu_space_pipibibsbl_map);
3643 
3644 	Z80(config, m_audiocpu, 12_MHz_XTAL / 2); // GoldStar Z8400B; clock source and divider unknown
3645 	m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan2_state::pipibibs_sound_z80_mem);
3646 
3647 	config.set_maximum_quantum(attotime::from_hz(600));
3648 
3649 	MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2)
3650 
3651 	/* video hardware */
3652 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
3653 	m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
3654 	m_screen->set_raw(28.322_MHz_XTAL / 4, 450, 0, 320, 262, 0, 240); // guess, but this is within NTSC parameters
3655 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
3656 	m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
3657 	m_screen->set_palette(m_palette);
3658 
3659 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH);
3660 
3661 	GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL); // FIXME: bootleg has no VDP
3662 	m_vdp[0]->set_palette(m_palette);
3663 	m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_4, ASSERT_LINE);
3664 
3665 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
3666 
3667 	/* sound hardware */
3668 	SPEAKER(config, "mono").front_center();
3669 
3670 	ym3812_device &ymsnd(YM3812(config, "ymsnd", 28.322_MHz_XTAL / 8)); // ???
3671 	ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
3672 	ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
3673 }
3674 
3675 /* x = modified to match batsugun 'unencrypted' code - '?' likewise, but not so sure about them */
3676 /* e = opcodes used in the EEPROM service routine */
3677 /* this one seems more different to the other tables */
3678 static const u8 ts001turbo_decryption_table[256] = {
3679 	0x90,0x05,0x57,0x5f,0xfe,0x4f,0xbd,0x36, 0x80,0x8b,0x8a,0x0a,0x89,0x90,0x47,0x80, /* 00 */
3680 			/*r*//*r*//*r*//*r*//*r*//*r*//*r*/ /*r*//*r*//*r*//*r*//*r*/     /*r*//*r*/
3681 	0x22,0x90,0x90,0x5d,0x81,0x3c,0xb5,0x83, 0x68,0xff,0x75,0x75,0x8d,0x5b,0x8a,0x38, /* 10 */
3682 	/*r*/          /*r*//*r*//*r*//*r*//*r*/ /*r*//*r*//*r*//*r*//*r*//*r*//*r*//*r*/
3683 	0x8b,0xeb,0xd2,0x0a,0xb4,0xc7,0x46,0xd1, 0x0a,0x53,0xbd,0x77,0x22,0xff,0x1f,0x03, /* 20 */
3684 	/*a*//*r*//*r*//*r*//*r*//*r*//*r*//*r*/ /*r*//*r*//*r*//*e*//*r*//*r*//*?*//*r*/
3685 	0xfb,0x45,0xc3,0x02,0x90,0x0f,0xa3,0x02, 0x0f,0xb7,0x90,0x24,0xc6,0xeb,0x1b,0x32, /* 30 */
3686 	/*r*//*r*//*r*//*r*/     /*r*//*e*//*r*/ /*r*//*r*/     /*r*//*r*//*r*//*r*//*r*/
3687 	0x8d,0xb9,0xfe,0x08,0x88,0x90,0x8a,0x8a, 0x75,0x8a,0xbd,0x58,0xfe,0x51,0x1e,0x8b, /* 40 */
3688 	/*r*//*r*//*r*//*r*//*r*/     /*r*//*r*/ /*r*//*r*//*r*//*r*//*r*//*r*//*r*//*r*/
3689 	0x0f,0x22,0xf6,0x90,0xc3,0x36,0x03,0x8d, 0xbb,0x16,0xbc,0x90,0x0f,0x5e,0xf9,0x2e, /* 50 */
3690 	/*r*//*r*//*r*/     /*r*//*r*//*r*//*r*/ /*r*//*?*//*r*/     /*r*//*r*//*r*//*r*/
3691 	0x90,0x90,0x59,0x90,0xbb,0x1a,0x0c,0x8d, 0x89,0x72,0x83,0xa4,0xc3,0xb3,0x8b,0xe9, /* 60 */
3692 				/*r*/     /*r*//*r*//*r*//*r*/ /*a*//*r*//*r*//*r*//*r*//*r*//*r*//*r*/
3693 	0x81,0x43,0xa0,0x2c,0x0f,0x55,0xf3,0x36, 0xb0,0x59,0xe8,0x03,0x26,0xe9,0x22,0xb0, /* 70 */
3694 	/*r*//*r*//*r*//*r*//*r*//*r*//*r*//*r*/ /*r*//*r*//*r*//*r*//*r*//*r*//*r*//*r*/
3695 	0x90,0x8e,0x24,0x8a,0xd0,0x3e,0xc3,0x3a, 0x90,0x79,0x57,0x16,0x88,0x86,0x24,0x74, /* 80 */
3696 			/*r*//*r*//*r*//*r*//*r*//*r*//*r*/      /*a*//*r*//*r*//*r*//*r*//*r*//*r*/
3697 	0x33,0xc3,0x53,0xb8,0xab,0x75,0x90,0x90, 0x8e,0xb1,0xe9,0x5d,0xf9,0x02,0x3c,0x90, /* 90 */
3698 	/*x*//*r*//*r*//*r*//*r*//*r*/           /*r*//*r*//*r*//*r*//*r*//*r*//*r*/
3699 	0x80,0xd3,0x89,0xe8,0x90,0x90,0x2a,0x74, 0x90,0x5f,0xf6,0x88,0x4f,0x56,0x8c,0x03, /* a0 */
3700 	/*r*//*a*//*r*//*r*/          /*r*//*r*/      /*r*//*r*//*r*//*r*//*r*//*r*//*r*/
3701 	0x47,0xa1,0x88,0x90,0x03,0xfe,0x90,0xfc, 0x2a,0x90,0x33,0x07,0xb1,0x50,0x0f,0x3e, /* b0 */
3702 	/*r*//*e*//*r*/     /*r*//*r*/     /*r*/ /*r*/     /*r*//*r*//*r*//*r*//*r*//*r*/
3703 	0xbd,0x4d,0xf3,0xbf,0x59,0xd2,0xea,0xc6, 0x2a,0x74,0x72,0xe2,0x3e,0x2e,0x90,0x2e, /* c0 */
3704 	/*r*//*r*//*r*//*r*//*r*//*a*//*x*//*r*/ /*r*//*r*//*r*//*r*//*r*//*r*/     /*r*/
3705 	0x2e,0x73,0x88,0x72,0x45,0x5d,0xc1,0xb9, 0x32,0x38,0x88,0xc1,0xa0,0x06,0x45,0x90, /* d0 */
3706 	/*r*//*r*//*r*//*r*//*r*//*r*//*r*//*r*/ /*r*//*r*//*r*//*r*//*a*//*r*//*r*/
3707 	0x90,0x86,0x4b,0x87,0x90,0x8a,0x3b,0xab, 0x33,0xbe,0x90,0x32,0xbd,0xc7,0xb2,0x80, /* e0 */
3708 			/*r*//*r*//*r*/     /*r*//*?*//*r*/ /*r*//*r*/     /*r*//*r*//*r*//*?*//*r*/
3709 	0x0f,0x75,0xc0,0xb9,0x07,0x74,0x3e,0xa2, 0x8a,0x48,0x3e,0x8d,0xeb,0x90,0xfe,0x90, /* f0 */
3710 	/*r*//*r*//*r*//*r*//*r*//*r*//*r*//*r*/ /*r*//*x*//*r*//*r*//*r*/     /*r*/
3711 };
3712 
3713 
fixeight(machine_config & config)3714 void toaplan2_state::fixeight(machine_config &config)
3715 {
3716 	/* basic machine hardware */
3717 	M68000(config, m_maincpu, 16_MHz_XTAL);         // verified on PCB
3718 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::fixeight_68k_mem);
3719 
3720 	v25_device &audiocpu(V25(config, m_audiocpu, 16_MHz_XTAL));           // NEC V25 type Toaplan marked CPU ???
3721 	audiocpu.set_addrmap(AS_PROGRAM, &toaplan2_state::fixeight_v25_mem);
3722 	audiocpu.set_decryption_table(ts001turbo_decryption_table);
3723 	audiocpu.p0_in_cb().set_ioport("EEPROM");
3724 	audiocpu.p0_out_cb().set_ioport("EEPROM");
3725 
3726 	EEPROM_93C46_16BIT(config, m_eeprom);
3727 
3728 	/* video hardware */
3729 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
3730 	m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
3731 	m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240); // verified on PCB
3732 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_truxton2));
3733 	m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
3734 	m_screen->set_palette(m_palette);
3735 
3736 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_truxton2);
3737 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH);
3738 
3739 	GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL);
3740 	m_vdp[0]->set_palette(m_palette);
3741 	m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_4);
3742 
3743 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state,truxton2)
3744 
3745 	/* sound hardware */
3746 	SPEAKER(config, "mono").front_center();
3747 
3748 	YM2151(config, "ymsnd", 27_MHz_XTAL/8).add_route(ALL_OUTPUTS, "mono", 0.5); /* verified on pcb */
3749 
3750 	OKIM6295(config, m_oki[0], 16_MHz_XTAL/16, okim6295_device::PIN7_HIGH); /* verified on pcb */
3751 	m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.5);
3752 }
3753 
3754 
fixeightbl(machine_config & config)3755 void toaplan2_state::fixeightbl(machine_config &config)
3756 {
3757 	/* basic machine hardware */
3758 	M68000(config, m_maincpu, XTAL(10'000'000));         /* 10MHz Oscillator */
3759 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::fixeightbl_68k_mem);
3760 	m_maincpu->set_addrmap(m68000_base_device::AS_CPU_SPACE, &toaplan2_state::cpu_space_fixeightbl_map);
3761 
3762 	/* video hardware */
3763 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
3764 	m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
3765 	m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
3766 	//m_screen->set_refresh_hz(60);
3767 	//m_screen->set_size(432, 262);
3768 	//m_screen->set_visarea(0, 319, 0, 239);
3769 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_bootleg));
3770 	m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
3771 	m_screen->set_palette(m_palette);
3772 
3773 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_textrom);
3774 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH);
3775 
3776 	GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL);
3777 	m_vdp[0]->set_palette(m_palette);
3778 	m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_2, ASSERT_LINE);
3779 
3780 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state,fixeightbl)
3781 
3782 	/* sound hardware */
3783 	SPEAKER(config, "mono").front_center();
3784 
3785 	OKIM6295(config, m_oki[0], 14_MHz_XTAL/16, okim6295_device::PIN7_LOW);
3786 	m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.0);
3787 	m_oki[0]->set_addrmap(0, &toaplan2_state::fixeightbl_oki);
3788 }
3789 
3790 
vfive(machine_config & config)3791 void toaplan2_state::vfive(machine_config &config)
3792 {
3793 	/* basic machine hardware */
3794 	M68000(config, m_maincpu, 20_MHz_XTAL/2);   // verified on PCB
3795 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::vfive_68k_mem);
3796 
3797 	v25_device &audiocpu(V25(config, m_audiocpu, 20_MHz_XTAL/2)); // Verified on PCB, NEC V25 type Toaplan mark scratched out
3798 	audiocpu.set_addrmap(AS_PROGRAM, &toaplan2_state::vfive_v25_mem);
3799 	audiocpu.set_decryption_table(nitro_decryption_table);
3800 	audiocpu.pt_in_cb().set_ioport("DSWA").exor(0xff);
3801 	audiocpu.p0_in_cb().set_ioport("DSWB").exor(0xff);
3802 	audiocpu.p1_in_cb().set_ioport("JMPR").exor(0xff);
3803 	audiocpu.p2_out_cb().set_nop();  // bit 0 is FAULT according to kbash schematic
3804 
3805 	/* video hardware */
3806 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
3807 	m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
3808 	m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240); // verified on PCB
3809 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
3810 	m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
3811 	m_screen->set_palette(m_palette);
3812 
3813 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH);
3814 
3815 	GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL);
3816 	m_vdp[0]->set_palette(m_palette);
3817 	m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_4);
3818 
3819 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
3820 
3821 	/* sound hardware */
3822 	SPEAKER(config, "mono").front_center();
3823 
3824 	YM2151(config, "ymsnd", 27_MHz_XTAL/8).add_route(ALL_OUTPUTS, "mono", 1.0); // verified on PCB
3825 }
3826 
3827 
batsugun(machine_config & config)3828 void toaplan2_state::batsugun(machine_config &config)
3829 {
3830 	/* basic machine hardware */
3831 	M68000(config, m_maincpu, 32_MHz_XTAL/2);           // 16MHz, 32MHz Oscillator
3832 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::batsugun_68k_mem);
3833 
3834 	v25_device &audiocpu(V25(config, m_audiocpu, 32_MHz_XTAL/2));         // NEC V25 type Toaplan marked CPU ???
3835 	audiocpu.set_addrmap(AS_PROGRAM, &toaplan2_state::v25_mem);
3836 	audiocpu.pt_in_cb().set_ioport("DSWA").exor(0xff);
3837 	audiocpu.p0_in_cb().set_ioport("DSWB").exor(0xff);
3838 	audiocpu.p1_in_cb().set_ioport("JMPR").exor(0xff);
3839 	audiocpu.p2_out_cb().set_nop();  // bit 0 is FAULT according to kbash schematic
3840 
3841 	/* video hardware */
3842 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
3843 	m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
3844 	m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
3845 	//m_screen->set_refresh_hz(60);
3846 	//m_screen->set_size(432, 262);
3847 	//m_screen->set_visarea(0, 319, 0, 239);
3848 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_batsugun));
3849 	m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
3850 	m_screen->set_palette(m_palette);
3851 
3852 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH);
3853 
3854 	GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL);
3855 	m_vdp[0]->set_palette(m_palette);
3856 	m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_4);
3857 
3858 	GP9001_VDP(config, m_vdp[1], 27_MHz_XTAL);
3859 	m_vdp[1]->set_palette(m_palette);
3860 
3861 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
3862 
3863 	/* sound hardware */
3864 	SPEAKER(config, "mono").front_center();
3865 
3866 	YM2151(config, "ymsnd", 27_MHz_XTAL/8).add_route(ALL_OUTPUTS, "mono", 0.5);
3867 
3868 	OKIM6295(config, m_oki[0], 32_MHz_XTAL/8, okim6295_device::PIN7_LOW);
3869 	m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.5);
3870 }
3871 
pwrkick(machine_config & config)3872 void toaplan2_state::pwrkick(machine_config &config)
3873 {
3874 	/* basic machine hardware */
3875 	M68000(config, m_maincpu, 16_MHz_XTAL);
3876 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::pwrkick_68k_mem);
3877 
3878 	UPD4992(config, m_rtc, 32'768);
3879 
3880 	NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
3881 
3882 	TICKET_DISPENSER(config, m_hopper, attotime::from_msec(PWRKICK_HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
3883 
3884 	/* video hardware */
3885 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
3886 	m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
3887 	m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
3888 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
3889 	m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
3890 	m_screen->set_palette(m_palette);
3891 
3892 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH);
3893 
3894 	GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL);
3895 	m_vdp[0]->set_palette(m_palette);
3896 	m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_4);
3897 
3898 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
3899 
3900 	/* sound hardware */
3901 	SPEAKER(config, "mono").front_center();
3902 	// empty YM2151 socket
3903 	OKIM6295(config, m_oki[0], 27_MHz_XTAL/8, okim6295_device::PIN7_HIGH); // not confirmed
3904 	m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.5);
3905 }
3906 
othldrby(machine_config & config)3907 void toaplan2_state::othldrby(machine_config &config)
3908 {
3909 	/* basic machine hardware */
3910 	M68000(config, m_maincpu, 16_MHz_XTAL);
3911 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::othldrby_68k_mem);
3912 
3913 	UPD4992(config, m_rtc, 32'768);
3914 
3915 	NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
3916 
3917 	/* video hardware */
3918 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
3919 	m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
3920 	m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
3921 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
3922 	m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
3923 	m_screen->set_palette(m_palette);
3924 
3925 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH);
3926 
3927 	GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL);
3928 	m_vdp[0]->set_palette(m_palette);
3929 	m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_4);
3930 
3931 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
3932 
3933 	/* sound hardware */
3934 	SPEAKER(config, "mono").front_center();
3935 
3936 	OKIM6295(config, m_oki[0], 27_MHz_XTAL/8, okim6295_device::PIN7_HIGH); // not confirmed
3937 	m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.5);
3938 }
3939 
3940 
enmadaio(machine_config & config)3941 void toaplan2_state::enmadaio(machine_config &config)
3942 {
3943 	/* basic machine hardware */
3944 	M68000(config, m_maincpu, 20_MHz_XTAL/2);
3945 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::enmadaio_68k_mem);
3946 
3947 	/* video hardware */
3948 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
3949 	m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
3950 	m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
3951 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
3952 	m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
3953 	m_screen->set_palette(m_palette);
3954 
3955 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH);
3956 
3957 	GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL);
3958 	m_vdp[0]->set_palette(m_palette);
3959 	m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_4);
3960 
3961 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
3962 
3963 	/* sound hardware */
3964 	SPEAKER(config, "mono").front_center();
3965 
3966 	YM2151(config, "ymsnd", 27_MHz_XTAL/8).add_route(ALL_OUTPUTS, "mono", 0.5);
3967 
3968 	OKIM6295(config, m_oki[0], 16_MHz_XTAL/4, okim6295_device::PIN7_LOW); // pin7 not confirmed
3969 	m_oki[0]->set_addrmap(0, &toaplan2_state::enmadaio_oki);
3970 	m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.5);
3971 }
3972 
snowbro2(machine_config & config)3973 void toaplan2_state::snowbro2(machine_config &config)
3974 {
3975 	/* basic machine hardware */
3976 	M68000(config, m_maincpu, 16_MHz_XTAL);
3977 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::snowbro2_68k_mem);
3978 
3979 	/* video hardware */
3980 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
3981 	m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
3982 	m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
3983 	//m_screen->set_refresh_hz(60);
3984 	//m_screen->set_size(432, 262);
3985 	//m_screen->set_visarea(0, 319, 0, 239);
3986 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_toaplan2));
3987 	m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
3988 	m_screen->set_palette(m_palette);
3989 
3990 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH);
3991 
3992 	GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL);
3993 	m_vdp[0]->set_palette(m_palette);
3994 	m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_4);
3995 
3996 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state,toaplan2)
3997 
3998 	/* sound hardware */
3999 	SPEAKER(config, "mono").front_center();
4000 
4001 	YM2151(config, "ymsnd", 27_MHz_XTAL/8).add_route(ALL_OUTPUTS, "mono", 1.0);
4002 
4003 	OKIM6295(config, m_oki[0], 27_MHz_XTAL/10, okim6295_device::PIN7_HIGH);
4004 	m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.0);
4005 }
4006 
4007 
mahoudai(machine_config & config)4008 void toaplan2_state::mahoudai(machine_config &config)
4009 {
4010 	/* basic machine hardware */
4011 	M68000(config, m_maincpu, 32_MHz_XTAL/2);   // 16MHz, 32MHz Oscillator
4012 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::mahoudai_68k_mem);
4013 
4014 	Z80(config, m_audiocpu, 32_MHz_XTAL/8);     // 4MHz, 32MHz Oscillator
4015 	m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan2_state::raizing_sound_z80_mem);
4016 
4017 	config.set_maximum_quantum(attotime::from_hz(600));
4018 
4019 	MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2)
4020 
4021 	/* video hardware */
4022 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
4023 	m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
4024 	m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
4025 	//m_screen->set_refresh_hz(60);
4026 	//m_screen->set_size(432, 262);
4027 	//m_screen->set_visarea(0, 319, 0, 239);
4028 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_truxton2));
4029 	m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
4030 	m_screen->set_palette(m_palette);
4031 
4032 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_textrom);
4033 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH);
4034 
4035 	GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL);
4036 	m_vdp[0]->set_palette(m_palette);
4037 	m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_4);
4038 
4039 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state,bgaregga)
4040 
4041 	/* sound hardware */
4042 	SPEAKER(config, "mono").front_center();
4043 
4044 	YM2151(config, "ymsnd", 27_MHz_XTAL/8).add_route(ALL_OUTPUTS, "mono", 0.68);
4045 
4046 	OKIM6295(config, m_oki[0], 32_MHz_XTAL/32, okim6295_device::PIN7_HIGH);
4047 	m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.0);
4048 }
4049 
4050 
shippumd(machine_config & config)4051 void toaplan2_state::shippumd(machine_config &config)
4052 {
4053 	mahoudai(config);
4054 	/* basic machine hardware */
4055 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::shippumd_68k_mem);
4056 }
4057 
bgaregga(machine_config & config)4058 void toaplan2_state::bgaregga(machine_config &config)
4059 {
4060 	/* basic machine hardware */
4061 	M68000(config, m_maincpu, 32_MHz_XTAL/2);   // 16MHz, 32MHz Oscillator
4062 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::bgaregga_68k_mem);
4063 
4064 	Z80(config, m_audiocpu, 32_MHz_XTAL/8);     // 4MHz, 32MHz Oscillator
4065 	m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan2_state::bgaregga_sound_z80_mem);
4066 
4067 	config.set_maximum_quantum(attotime::from_hz(6000));
4068 
4069 	MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,bgaregga)
4070 
4071 	/* video hardware */
4072 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
4073 	m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
4074 	m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
4075 	//m_screen->set_refresh_hz(60);
4076 	//m_screen->set_size(432, 262);
4077 	//m_screen->set_visarea(0, 319, 0, 239);
4078 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_truxton2));
4079 	m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
4080 	m_screen->set_palette(m_palette);
4081 
4082 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_textrom);
4083 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH);
4084 
4085 	GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL);
4086 	m_vdp[0]->set_palette(m_palette);
4087 	m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_4);
4088 
4089 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state,bgaregga)
4090 
4091 	/* sound hardware */
4092 	SPEAKER(config, "mono").front_center();
4093 
4094 	GENERIC_LATCH_8(config, m_soundlatch);
4095 	m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
4096 	m_soundlatch->set_separate_acknowledge(true);
4097 
4098 	YM2151(config, "ymsnd", 32_MHz_XTAL/8).add_route(ALL_OUTPUTS, "mono", 0.5);
4099 
4100 	OKIM6295(config, m_oki[0], 32_MHz_XTAL/16, okim6295_device::PIN7_HIGH);
4101 	m_oki[0]->set_addrmap(0, &toaplan2_state::raizing_oki<0>);
4102 	m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.0);
4103 }
4104 
4105 
bgareggabl(machine_config & config)4106 void toaplan2_state::bgareggabl(machine_config &config)
4107 {
4108 	bgaregga(config);
4109 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state,bgareggabl)
4110 
4111 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_bootleg));
4112 }
4113 
batrider(machine_config & config)4114 void toaplan2_state::batrider(machine_config &config)
4115 {
4116 	/* basic machine hardware */
4117 	M68000(config, m_maincpu, 32_MHz_XTAL/2);   // 16MHz, 32MHz Oscillator (verified)
4118 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::batrider_68k_mem);
4119 
4120 	Z80(config, m_audiocpu, 32_MHz_XTAL/6);     // 5.333MHz, 32MHz Oscillator (verified)
4121 	m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan2_state::batrider_sound_z80_mem);
4122 	m_audiocpu->set_addrmap(AS_IO, &toaplan2_state::batrider_sound_z80_port);
4123 
4124 	config.set_maximum_quantum(attotime::from_hz(600));
4125 
4126 	MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,bgaregga)
4127 
4128 	ADDRESS_MAP_BANK(config, m_dma_space, 0);
4129 	m_dma_space->set_addrmap(0, &toaplan2_state::batrider_dma_mem);
4130 	m_dma_space->set_endianness(ENDIANNESS_BIG);
4131 	m_dma_space->set_data_width(16);
4132 	m_dma_space->set_addr_width(16);
4133 	m_dma_space->set_stride(0x8000);
4134 
4135 	/* video hardware */
4136 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
4137 	m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
4138 	m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
4139 	//m_screen->set_refresh_hz(60);
4140 	//m_screen->set_size(432, 262);
4141 	//m_screen->set_visarea(0, 319, 0, 239);
4142 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_truxton2));
4143 	m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
4144 	m_screen->set_palette(m_palette);
4145 
4146 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_batrider);
4147 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH);
4148 
4149 	GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL);
4150 	m_vdp[0]->set_palette(m_palette);
4151 	m_vdp[0]->set_tile_callback(FUNC(toaplan2_state::batrider_bank_cb));
4152 	m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_2);
4153 
4154 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state,batrider)
4155 
4156 	/* sound hardware */
4157 	SPEAKER(config, "mono").front_center();
4158 
4159 	// these two latches are always written together, via a single move.l instruction
4160 	GENERIC_LATCH_8(config, "soundlatch");
4161 	GENERIC_LATCH_8(config, "soundlatch2");
4162 	GENERIC_LATCH_8(config, "soundlatch3");
4163 	GENERIC_LATCH_8(config, "soundlatch4");
4164 
4165 	YM2151(config, "ymsnd", 32_MHz_XTAL/8).add_route(ALL_OUTPUTS, "mono", 0.5); // 4MHz, 32MHz Oscillator (verified)
4166 
4167 	OKIM6295(config, m_oki[0], 32_MHz_XTAL/10, okim6295_device::PIN7_HIGH);
4168 	m_oki[0]->set_addrmap(0, &toaplan2_state::raizing_oki<0>);
4169 	m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.0);
4170 
4171 	OKIM6295(config, m_oki[1], 32_MHz_XTAL/10, okim6295_device::PIN7_LOW);
4172 	m_oki[1]->set_addrmap(0, &toaplan2_state::raizing_oki<1>);
4173 	m_oki[1]->add_route(ALL_OUTPUTS, "mono", 1.0);
4174 }
4175 
4176 
bbakraid(machine_config & config)4177 void toaplan2_state::bbakraid(machine_config &config)
4178 {
4179 	/* basic machine hardware */
4180 	M68000(config, m_maincpu, 32_MHz_XTAL/2);   // 16MHz, 32MHz Oscillator
4181 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::bbakraid_68k_mem);
4182 
4183 	Z80(config, m_audiocpu, XTAL(32'000'000)/6);     /* 5.3333MHz , 32MHz Oscillator */
4184 	m_audiocpu->set_addrmap(AS_PROGRAM, &toaplan2_state::bbakraid_sound_z80_mem);
4185 	m_audiocpu->set_addrmap(AS_IO, &toaplan2_state::bbakraid_sound_z80_port);
4186 	m_audiocpu->set_periodic_int(FUNC(toaplan2_state::bbakraid_snd_interrupt), attotime::from_hz(448));
4187 
4188 	config.set_maximum_quantum(attotime::from_hz(600));
4189 
4190 	MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2)
4191 
4192 	EEPROM_93C66_8BIT(config, "eeprom");
4193 
4194 	ADDRESS_MAP_BANK(config, m_dma_space, 0);
4195 	m_dma_space->set_addrmap(0, &toaplan2_state::batrider_dma_mem);
4196 	m_dma_space->set_endianness(ENDIANNESS_BIG);
4197 	m_dma_space->set_data_width(16);
4198 	m_dma_space->set_addr_width(16);
4199 	m_dma_space->set_stride(0x8000);
4200 
4201 	/* video hardware */
4202 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
4203 	m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
4204 	m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
4205 	//m_screen->set_refresh_hz(60);
4206 	//m_screen->set_size(432, 262);
4207 	//m_screen->set_visarea(0, 319, 0, 239);
4208 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_truxton2));
4209 	m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
4210 	m_screen->set_palette(m_palette);
4211 
4212 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_batrider);
4213 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH);
4214 
4215 	GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL);
4216 	m_vdp[0]->set_palette(m_palette);
4217 	m_vdp[0]->set_tile_callback(FUNC(toaplan2_state::batrider_bank_cb));
4218 	m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_1);
4219 
4220 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state,batrider)
4221 
4222 	/* sound hardware */
4223 	SPEAKER(config, "mono").front_center();
4224 
4225 	// these two latches are always written together, via a single move.l instruction
4226 	GENERIC_LATCH_8(config, "soundlatch");
4227 	GENERIC_LATCH_8(config, "soundlatch2");
4228 	GENERIC_LATCH_8(config, "soundlatch3");
4229 	GENERIC_LATCH_8(config, "soundlatch4");
4230 
4231 	YMZ280B(config, "ymz", 16.9344_MHz_XTAL).add_route(ALL_OUTPUTS, "mono", 1.0);
4232 	// IRQ not used ???  Connected to a test pin (TP082)
4233 }
4234 
4235 
nprobowl(machine_config & config)4236 void toaplan2_state::nprobowl(machine_config &config)
4237 {
4238 	// basic machine hardware
4239 	M68000(config, m_maincpu, 32_MHz_XTAL / 2);   // 32MHz Oscillator, divisor not verified
4240 	m_maincpu->set_addrmap(AS_PROGRAM, &toaplan2_state::nprobowl_68k_mem);
4241 
4242 	ADDRESS_MAP_BANK(config, m_dma_space, 0);
4243 	m_dma_space->set_addrmap(0, &toaplan2_state::batrider_dma_mem);
4244 	m_dma_space->set_endianness(ENDIANNESS_BIG);
4245 	m_dma_space->set_data_width(16);
4246 	m_dma_space->set_addr_width(16);
4247 	m_dma_space->set_stride(0x8000);
4248 
4249 	// video hardware
4250 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
4251 	m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK);
4252 	m_screen->set_raw(27_MHz_XTAL/4, 432, 0, 320, 262, 0, 240);
4253 	//m_screen->set_refresh_hz(60);
4254 	//m_screen->set_size(432, 262);
4255 	//m_screen->set_visarea(0, 319, 0, 239);
4256 	m_screen->set_screen_update(FUNC(toaplan2_state::screen_update_truxton2));
4257 	m_screen->screen_vblank().set(FUNC(toaplan2_state::screen_vblank));
4258 	m_screen->set_palette(m_palette);
4259 
4260 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_batrider);
4261 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, T2PALETTE_LENGTH);
4262 
4263 	GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL);
4264 	m_vdp[0]->set_palette(m_palette);
4265 	m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_2);
4266 
4267 	MCFG_VIDEO_START_OVERRIDE(toaplan2_state, batrider)
4268 
4269 	// sound hardware
4270 	SPEAKER(config, "mono").front_center();
4271 
4272 	OKIM6295(config, m_oki[0], 32_MHz_XTAL/8, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // divisor not verified
4273 	// TODO: banking
4274 }
4275 
4276 
4277 /***************************************************************************
4278 
4279   Game driver(s)
4280 
4281 ***************************************************************************/
4282 
4283 /* -------------------------- Toaplan games ------------------------- */
4284 
4285 ROM_START( tekipaki )
4286 	ROM_REGION( 0x040000, "maincpu", 0 )            /* Main 68K code */
4287 	ROM_LOAD16_BYTE( "tp020-1.bin", 0x000000, 0x010000, CRC(d8420bd5) SHA1(30c1ad9e053cd7e79adb42aa428ebee28e144755) )
4288 	ROM_LOAD16_BYTE( "tp020-2.bin", 0x000001, 0x010000, CRC(7222de8e) SHA1(8352ae23efc24a2e20cc24b6d37cb8fc6b1a730c) )
4289 
4290 	ROM_REGION( 0x8000, "audiocpu", 0 )    /* Sound HD647180 code */
4291 	ROM_LOAD( "hd647180.020", 0x00000, 0x08000, CRC(d5157c12) SHA1(b2c6c087bb539456a9e562d0b40f05dde26cacd3) )
4292 
4293 	ROM_REGION( 0x100000, "gp9001_0", 0 )
4294 	ROM_LOAD( "tp020-4.bin", 0x000000, 0x080000, CRC(3ebbe41e) SHA1(cea196c5f83e1a23d5b538a0db9bbbffa7af5118) )
4295 	ROM_LOAD( "tp020-3.bin", 0x080000, 0x080000, CRC(2d5e2201) SHA1(5846c844eedd48305c1c67dc645b6e070b3f5b98) )
4296 ROM_END
4297 
4298 
4299 ROM_START( tekipakit ) /* Location Test version */
4300 	ROM_REGION( 0x040000, "maincpu", 0 )            /* Main 68K code */
4301 	ROM_LOAD16_BYTE( "e.e5", 0x000000, 0x010000, CRC(89affc73) SHA1(3930bf0c2528de28dcb0cf2cd537adb62a2172e3) ) /* hand written "E"  27C512 chip */
4302 	ROM_LOAD16_BYTE( "o.e6", 0x000001, 0x010000, CRC(a2244558) SHA1(5291cfbea4d4d1c45d6d4bd21b3c466459a0fa17) ) /* hand written "O"  27C512 chip */
4303 
4304 	ROM_REGION( 0x8000, "audiocpu", 0 )    /* Sound HD647180 code */
4305 	ROM_LOAD( "hd647180.020", 0x00000, 0x08000, CRC(d5157c12) SHA1(b2c6c087bb539456a9e562d0b40f05dde26cacd3) )
4306 
4307 	ROM_REGION( 0x100000, "gp9001_0", 0 )
4308 	ROM_LOAD( "0-1_4.4_cb45.a16", 0x000000, 0x080000, CRC(35e14729) SHA1(8c929604953b78c6e72744a38e06a988510193a5) ) /* hand written "0-1  4/4  CB45"  27C402 chip */
4309 	ROM_LOAD( "3-4_4.4_547d.a15", 0x080000, 0x080000, CRC(41975fcc) SHA1(f850d5a9638d41bb69f204a9cd54e2fd693b57ef) ) /* hand written "3-4  4/4  547D"  27C402 chip */
4310 ROM_END
4311 
4312 
4313 ROM_START( ghox ) /* Spinner with single axis (up/down) controls */
4314 	ROM_REGION( 0x040000, "maincpu", 0 )            /* Main 68K code */
4315 	ROM_LOAD16_BYTE( "tp021-01.u10", 0x000000, 0x020000, CRC(9e56ac67) SHA1(daf241d9e55a6e60fc004ed61f787641595b1e62) )
4316 	ROM_LOAD16_BYTE( "tp021-02.u11", 0x000001, 0x020000, CRC(15cac60f) SHA1(6efa3a50a5dfe6ef4072738d6a7d0d95dca8a675) )
4317 
4318 	ROM_REGION( 0x10000, "audiocpu", 0 )            /* Sound HD647180 code */
4319 	ROM_LOAD( "hd647180.021", 0x00000, 0x08000, CRC(6ab59e5b) SHA1(d814dd3a8f1ee638794e2bd422eed4247ba4a15e) )
4320 
4321 	ROM_REGION( 0x100000, "gp9001_0", 0 )
4322 	ROM_LOAD( "tp021-03.u36", 0x000000, 0x080000, CRC(a15d8e9d) SHA1(640a33997bdce8e84bea6a944139716379839037) )
4323 	ROM_LOAD( "tp021-04.u37", 0x080000, 0x080000, CRC(26ed1c9a) SHA1(37da8af86ea24327444c2d4ad3dfbd936208d43d) )
4324 ROM_END
4325 
4326 
4327 ROM_START( ghoxj ) /* 8-way joystick for controls */
4328 	ROM_REGION( 0x040000, "maincpu", 0 )            /* Main 68K code */
4329 	ROM_LOAD16_BYTE( "tp021-01a.u10", 0x000000, 0x020000, CRC(c11b13c8) SHA1(da7defc1d3b6ddded910ba56c31fbbdb5ed57b09) )
4330 	ROM_LOAD16_BYTE( "tp021-02a.u11", 0x000001, 0x020000, CRC(8d426767) SHA1(1ed4a8bcbf4352257e7d58cb5c2c91eb48c2f047) )
4331 
4332 	ROM_REGION( 0x10000, "audiocpu", 0 )            /* Sound HD647180 code */
4333 	ROM_LOAD( "hd647180.021", 0x00000, 0x08000, CRC(6ab59e5b) SHA1(d814dd3a8f1ee638794e2bd422eed4247ba4a15e) )
4334 
4335 	ROM_REGION( 0x100000, "gp9001_0", 0 )
4336 	ROM_LOAD( "tp021-03.u36", 0x000000, 0x080000, CRC(a15d8e9d) SHA1(640a33997bdce8e84bea6a944139716379839037) )
4337 	ROM_LOAD( "tp021-04.u37", 0x080000, 0x080000, CRC(26ed1c9a) SHA1(37da8af86ea24327444c2d4ad3dfbd936208d43d) )
4338 ROM_END
4339 
4340 ROM_START( ghoxjo ) /* older version (with fewer regions) of the 8-way joystick version */
4341 	ROM_REGION( 0x040000, "maincpu", 0 )            /* Main 68K code */
4342 	ROM_LOAD16_BYTE( "tp021-01.ghoxsticker.u10", 0x000000, 0x020000, CRC(ad3a8817) SHA1(317267e0c00934a86bf05c5afd6c69a7944a2ed3) ) // TP021 ?01? label covered with a handwriten 'GHOX' sticker
4343 	ROM_LOAD16_BYTE( "tp021-02.ghoxsticker.u11", 0x000001, 0x020000, CRC(2340e981) SHA1(d8e3f55e67fe6500f9e6c7eed1388dc895c5f574) ) // TP021 ?02? label covered with a handwriten 'GHOX' sticker
4344 
4345 	ROM_REGION( 0x10000, "audiocpu", 0 )            /* Sound HD647180 code */
4346 	ROM_LOAD( "hd647180.021", 0x00000, 0x08000, CRC(6ab59e5b) SHA1(d814dd3a8f1ee638794e2bd422eed4247ba4a15e) )
4347 
4348 	ROM_REGION( 0x100000, "gp9001_0", 0 )
4349 	ROM_LOAD( "tp021-03.u36", 0x000000, 0x080000, CRC(a15d8e9d) SHA1(640a33997bdce8e84bea6a944139716379839037) )
4350 	ROM_LOAD( "tp021-04.u37", 0x080000, 0x080000, CRC(26ed1c9a) SHA1(37da8af86ea24327444c2d4ad3dfbd936208d43d) )
4351 ROM_END
4352 
4353 
4354 ROM_START( dogyuun )
4355 	ROM_REGION( 0x080000, "maincpu", 0 )            /* Main 68K code */
4356 	ROM_LOAD16_WORD_SWAP( "tp022_01.r16", 0x000000, 0x080000, CRC(79eb2429) SHA1(088c5ed0ed77557ab71f52cafe35028e3648ae1e) )
4357 
4358 	/* Secondary CPU is a Toaplan marked chip, (TS-002-MACH  TOA PLAN) */
4359 	/* It's a NEC V25 (PLCC94) (encrypted program uploaded by main CPU) */
4360 
4361 	ROM_REGION( 0x200000, "gp9001_0", 0 )
4362 	ROM_LOAD16_WORD_SWAP( "tp022_3.w92", 0x000000, 0x100000, CRC(191b595f) SHA1(89344946daa18087cc83f92027cf5da659b1c7a5) )
4363 	ROM_LOAD16_WORD_SWAP( "tp022_4.w93", 0x100000, 0x100000, CRC(d58d29ca) SHA1(90d142fef37764ef817347a2bed77892a288a077) )
4364 
4365 	ROM_REGION( 0x400000, "gp9001_1", 0 )
4366 	ROM_LOAD16_WORD_SWAP( "tp022_5.w16", 0x000000, 0x200000, CRC(d4c1db45) SHA1(f5655467149ba737128c2f54c9c6cdaca6e4c35c) )
4367 	ROM_LOAD16_WORD_SWAP( "tp022_6.w17", 0x200000, 0x200000, CRC(d48dc74f) SHA1(081b5a00a2ff2bd82b98b30aab3cb5b6ae1014d5) )
4368 
4369 	ROM_REGION( 0x40000, "oki1", 0 )     /* ADPCM Samples */
4370 	ROM_LOAD( "tp022_2.w30", 0x00000, 0x40000, CRC(043271b3) SHA1(c7eaa929e55dd956579b824ea9d20a1d0129a925) )
4371 ROM_END
4372 
4373 
4374 ROM_START( dogyuuna )
4375 	ROM_REGION( 0x080000, "maincpu", 0 )            /* Main 68K code */
4376 	ROM_LOAD16_WORD_SWAP( "01.u64", 0x000000, 0x080000, CRC(fe5bd7f4) SHA1(9c725466112a514c9ed0fb074422d291c175c3f4) )
4377 
4378 	/* Secondary CPU is a Toaplan marked chip, (TS-002-MACH  TOA PLAN) */
4379 	/* It's a NEC V25 (PLCC94) (encrypted program uploaded by main CPU) */
4380 
4381 	ROM_REGION( 0x200000, "gp9001_0", 0 )
4382 	ROM_LOAD16_WORD_SWAP( "tp022_3.w92", 0x000000, 0x100000, CRC(191b595f) SHA1(89344946daa18087cc83f92027cf5da659b1c7a5) )
4383 	ROM_LOAD16_WORD_SWAP( "tp022_4.w93", 0x100000, 0x100000, CRC(d58d29ca) SHA1(90d142fef37764ef817347a2bed77892a288a077) )
4384 
4385 	ROM_REGION( 0x400000, "gp9001_1", 0 )
4386 	ROM_LOAD16_WORD_SWAP( "tp022_5.w16", 0x000000, 0x200000, CRC(d4c1db45) SHA1(f5655467149ba737128c2f54c9c6cdaca6e4c35c) )
4387 	ROM_LOAD16_WORD_SWAP( "tp022_6.w17", 0x200000, 0x200000, CRC(d48dc74f) SHA1(081b5a00a2ff2bd82b98b30aab3cb5b6ae1014d5) )
4388 
4389 	ROM_REGION( 0x40000, "oki1", 0 )     /* ADPCM Samples */
4390 	ROM_LOAD( "tp022_2.w30", 0x00000, 0x40000, CRC(043271b3) SHA1(c7eaa929e55dd956579b824ea9d20a1d0129a925) )
4391 ROM_END
4392 
4393 
4394 ROM_START( dogyuunt )
4395 	ROM_REGION( 0x080000, "maincpu", 0 )            /* Main 68K code */
4396 	ROM_LOAD16_WORD_SWAP( "sample10.9.u64.bin", 0x000000, 0x080000, CRC(585f5016) SHA1(18d57843f33a560a3bb4b6aef176f7ef795b742d) )
4397 
4398 	/* Secondary CPU is a Toaplan marked chip, (TS-002-MACH  TOA PLAN) */
4399 	/* It's a NEC V25 (PLCC94) (encrypted program uploaded by main CPU) */
4400 
4401 	ROM_REGION( 0x200000, "gp9001_0", 0 )
4402 	ROM_LOAD16_WORD_SWAP( "tp022_3.w92", 0x000000, 0x100000, CRC(191b595f) SHA1(89344946daa18087cc83f92027cf5da659b1c7a5) )
4403 	ROM_LOAD16_WORD_SWAP( "tp022_4.w93", 0x100000, 0x100000, CRC(d58d29ca) SHA1(90d142fef37764ef817347a2bed77892a288a077) )
4404 
4405 	ROM_REGION( 0x400000, "gp9001_1", 0 )
4406 	ROM_LOAD16_WORD_SWAP( "tp022_5.w16", 0x000000, 0x200000, CRC(d4c1db45) SHA1(f5655467149ba737128c2f54c9c6cdaca6e4c35c) )
4407 	ROM_LOAD16_WORD_SWAP( "tp022_6.w17", 0x200000, 0x200000, CRC(d48dc74f) SHA1(081b5a00a2ff2bd82b98b30aab3cb5b6ae1014d5) )
4408 
4409 	ROM_REGION( 0x40000, "oki1", 0 )     /* ADPCM Samples */
4410 	ROM_LOAD( "tp022_2.w30", 0x00000, 0x40000, CRC(043271b3) SHA1(c7eaa929e55dd956579b824ea9d20a1d0129a925) )
4411 ROM_END
4412 
4413 
4414 ROM_START( kbash )
4415 	ROM_REGION( 0x080000, "maincpu", 0 )            /* Main 68K code */
4416 	ROM_LOAD16_WORD_SWAP( "tp023_01.bin", 0x000000, 0x080000, CRC(2965f81d) SHA1(46f2df30fa92c80ba5a37f75e756424e15534784) )
4417 
4418 	/* Secondary CPU is a Toaplan marked chip, (TS-004-Dash  TOA PLAN) */
4419 	/* It's a NEC V25 (PLCC94) (encrypted) */
4420 
4421 	ROM_REGION( 0x8000, "audiocpu", 0 )         /* Sound CPU code */
4422 	ROM_LOAD( "tp023_02.bin", 0x0000, 0x8000, CRC(4cd882a1) SHA1(7199a5c384918f775f0815e09c46b2a58141814a) )
4423 
4424 	ROM_REGION( 0x800000, "gp9001_0", 0 )
4425 	ROM_LOAD( "tp023_3.bin", 0x000000, 0x200000, CRC(32ad508b) SHA1(e473489beaf649d3e5236770eb043327e309850c) )
4426 	ROM_LOAD( "tp023_5.bin", 0x200000, 0x200000, CRC(b84c90eb) SHA1(17a1531d884d9a9696d1b25d65f9155f02396e0e) )
4427 	ROM_LOAD( "tp023_4.bin", 0x400000, 0x200000, CRC(e493c077) SHA1(0edcfb70483ad07206695d9283031b85cd198a36) )
4428 	ROM_LOAD( "tp023_6.bin", 0x600000, 0x200000, CRC(9084b50a) SHA1(03b58278619524d2f09a4b1c152d5e057e792a56) )
4429 
4430 	ROM_REGION( 0x40000, "oki1", 0 )     /* ADPCM Samples */
4431 	ROM_LOAD( "tp023_7.bin", 0x00000, 0x40000, CRC(3732318f) SHA1(f0768459f5ad2dee53d408a0a5ae3a314864e667) )
4432 ROM_END
4433 
4434 ROM_START( kbashk )
4435 	ROM_REGION( 0x080000, "maincpu", 0 )            /* Main 68K code */
4436 	ROM_LOAD16_WORD_SWAP( "tp023_01.u52", 0x000000, 0x080000, CRC(099aefbc) SHA1(8daa0deffe221e1bb5a8744ced18c23ad319ffd3) ) // same label as parent?
4437 
4438 	/* Secondary CPU is a Toaplan marked chip, (TS-004-Dash  TOA PLAN) */
4439 	/* It's a NEC V25 (PLCC94) (encrypted) */
4440 
4441 	ROM_REGION( 0x8000, "audiocpu", 0 )         /* Sound CPU code */
4442 	ROM_LOAD( "tp023_02.bin", 0x0000, 0x8000, CRC(4cd882a1) SHA1(7199a5c384918f775f0815e09c46b2a58141814a) )
4443 
4444 	ROM_REGION( 0x800000, "gp9001_0", 0 )
4445 	ROM_LOAD( "tp023_3.bin", 0x000000, 0x200000, CRC(32ad508b) SHA1(e473489beaf649d3e5236770eb043327e309850c) )
4446 	ROM_LOAD( "tp023_5.bin", 0x200000, 0x200000, CRC(b84c90eb) SHA1(17a1531d884d9a9696d1b25d65f9155f02396e0e) )
4447 	ROM_LOAD( "tp023_4.bin", 0x400000, 0x200000, CRC(e493c077) SHA1(0edcfb70483ad07206695d9283031b85cd198a36) )
4448 	ROM_LOAD( "tp023_6.bin", 0x600000, 0x200000, CRC(9084b50a) SHA1(03b58278619524d2f09a4b1c152d5e057e792a56) )
4449 
4450 	ROM_REGION( 0x40000, "oki1", 0 )     /* ADPCM Samples */
4451 	ROM_LOAD( "tp023_7.bin", 0x00000, 0x40000, CRC(3732318f) SHA1(f0768459f5ad2dee53d408a0a5ae3a314864e667) )
4452 ROM_END
4453 /*
4454 Knuckle Bash 2
4455 This is a hacked version of Knuckle Bash on bootleg/Korean/Chinese
4456 hardware showing (C)Toaplan 1999 Licensed to Charterfield
4457 
4458 PCB Layout
4459 ----------
4460 
4461 |--------------------------------------------|
4462 |UPC1241  EPROM  MECAT-S                     |
4463 |  LM324                                     |
4464 |        M6295  M6295                        |
4465 | PAL   62256                      M5M51008  |
4466 |       62256    MECAT-M           M5M51008  |
4467 |        6116                      M5M51008  |
4468 |J       6116         14.31818MHz  M5M51008  |
4469 |A             68000                         |
4470 |M                    16MHz                  |
4471 |M                  PAL                      |
4472 |A             PAL                           |
4473 |        |-------|                           |
4474 |        |ACTEL  |         PAL               |
4475 |        |A40MX04|         PAL               |
4476 |        |       |                           |
4477 |   DSW1 |-------|         050917-10         |
4478 |        |ACTEL  |                           |
4479 |   DSW2 |A40MX04| MECAT-12                  |
4480 |62256   |       |                           |
4481 |62256   |-------| MECAT-34                  |
4482 |--------------------------------------------|
4483 Notes:
4484       68000 clock 16.000MHz
4485       M6295 clock 1.000MHz [16/16]. Sample rate (Hz) 16000000/16/132
4486       M5M51008 - Mitsubishi M5M51008 128k x8 SRAM (SOP32)
4487       62256    - 32k x8 SRAM
4488       6116     - 2k x8 SRAM
4489       VSync 60Hz
4490       HSync 15.68kHz
4491 */
4492 
4493 ROM_START( kbash2 )
4494 	ROM_REGION( 0x80000, "maincpu", 0 )         /* Main 68K code */
4495 	ROM_LOAD16_WORD_SWAP( "mecat-m", 0x000000, 0x80000, CRC(bd2263c6) SHA1(eb794c0fc9c1fb4337114d48149283d42d22e4b3) )
4496 
4497 	ROM_REGION( 0x800000, "gp9001_0", 0 )
4498 	ROM_LOAD( "mecat-34", 0x000000, 0x400000, CRC(6be7b37e) SHA1(13160ad0712fee932bb98cc226e651895b19228a) )
4499 	ROM_LOAD( "mecat-12", 0x400000, 0x400000, CRC(49e46b1f) SHA1(d12b12696a8473eb34f3cd247ab060289a6c0e9c) )
4500 
4501 	ROM_REGION( 0x80000, "oki1", 0 )            /* ADPCM Music */
4502 	ROM_LOAD( "mecat-s", 0x00000, 0x80000, CRC(3eb7adf4) SHA1(b0e6e99726b854858bd0e69eb77f12b9664b35e6) )
4503 
4504 	ROM_REGION( 0x40000, "oki2", 0 )            /* ADPCM Samples */
4505 	ROM_LOAD( "eprom",   0x00000, 0x40000, CRC(31115cb9) SHA1(c79ea01bd865e2fc3aaab3ff05483c8fd27e5c98) )
4506 
4507 	ROM_REGION( 0x10000, "user1", 0 )           /* ??? Some sort of table  - same as in pipibibi*/
4508 	ROM_LOAD( "050917-10", 0x0000, 0x10000, CRC(6b213183) SHA1(599c59d155d11edb151bfaed1d24ef964462a447) )
4509 ROM_END
4510 
4511 
4512 ROM_START( truxton2 )
4513 	ROM_REGION( 0x080000, "maincpu", 0 )            /* Main 68K code */
4514 	/* program ROM is byte swapped ! */
4515 	ROM_LOAD16_WORD( "tp024_1.bin", 0x000000, 0x080000, CRC(f5cfe6ee) SHA1(30979888a4cd6500244117748f28386a7e20a169) )
4516 
4517 	ROM_REGION( 0x200000, "gp9001_0", 0 )
4518 	ROM_LOAD( "tp024_4.bin", 0x000000, 0x100000, CRC(805c449e) SHA1(fdf985344145bd320b88b9b0c25e73066c9b2ada) )
4519 	ROM_LOAD( "tp024_3.bin", 0x100000, 0x100000, CRC(47587164) SHA1(bac493e2d5507286b984957b289c929335d27eaa) )
4520 
4521 	ROM_REGION( 0x80000, "oki1", 0 )         /* ADPCM Samples */
4522 	ROM_LOAD( "tp024_2.bin", 0x00000, 0x80000, CRC(f2f6cae4) SHA1(bb4e8c36531bed97ced4696ca12fd40ede2531aa) )
4523 ROM_END
4524 
4525 
4526 ROM_START( pipibibs )
4527 	ROM_REGION( 0x040000, "maincpu", 0 )            /* Main 68K code */
4528 	ROM_LOAD16_BYTE( "tp025-1.bin", 0x000000, 0x020000, CRC(b2ea8659) SHA1(400431b656dbfbd5a9bc5961c3ea04c4d38b6f77) )
4529 	ROM_LOAD16_BYTE( "tp025-2.bin", 0x000001, 0x020000, CRC(dc53b939) SHA1(e4de371f97ba7c350273ad43b7f58ff31672a269) )
4530 
4531 	ROM_REGION( 0x10000, "audiocpu", 0 )            /* Sound Z80 code */
4532 	ROM_LOAD( "tp025-5.bin", 0x0000, 0x8000, CRC(bf8ffde5) SHA1(79c09cc9a0ea979f5af5a7e5ad671ea486f5f43e) )
4533 
4534 	ROM_REGION( 0x200000, "gp9001_0", 0 )
4535 	ROM_LOAD( "tp025-4.bin", 0x000000, 0x100000, CRC(ab97f744) SHA1(c1620e614345dbd5c6567e4cb6f55c61b900d0ee) )
4536 	ROM_LOAD( "tp025-3.bin", 0x100000, 0x100000, CRC(7b16101e) SHA1(ae0119bbfa0937d18c4fbb0a3ef7cdc3b9fa6b56) )
4537 ROM_END
4538 
4539 
4540 ROM_START( pipibibsa )
4541 	ROM_REGION( 0x040000, "maincpu", 0 )            /* Main 68K code */
4542 	ROM_LOAD16_BYTE( "tp025-1.alt.bin", 0x000000, 0x020000, CRC(3e522d98) SHA1(043dd76b99e130909e47063d4cc773177a2eaccf) )
4543 	ROM_LOAD16_BYTE( "tp025-2.alt.bin", 0x000001, 0x020000, CRC(48370485) SHA1(9895e086c9a5eeec4f454cbc6098adb2f66d4e11) )
4544 
4545 	ROM_REGION( 0x10000, "audiocpu", 0 )            /* Sound Z80 code */
4546 	ROM_LOAD( "tp025-5.bin", 0x0000, 0x8000, CRC(bf8ffde5) SHA1(79c09cc9a0ea979f5af5a7e5ad671ea486f5f43e) )
4547 
4548 	ROM_REGION( 0x200000, "gp9001_0", 0 )
4549 	ROM_LOAD( "tp025-4.bin", 0x000000, 0x100000, CRC(ab97f744) SHA1(c1620e614345dbd5c6567e4cb6f55c61b900d0ee) )
4550 	ROM_LOAD( "tp025-3.bin", 0x100000, 0x100000, CRC(7b16101e) SHA1(ae0119bbfa0937d18c4fbb0a3ef7cdc3b9fa6b56) )
4551 ROM_END
4552 
4553 
4554 ROM_START( whoopee )
4555 	ROM_REGION( 0x040000, "maincpu", 0 )            /* Main 68K code */
4556 	ROM_LOAD16_BYTE( "whoopee.1", 0x000000, 0x020000, CRC(28882e7e) SHA1(8fcd278a7d005eb81cd9e461139c0c0f756a4fa4) )
4557 	ROM_LOAD16_BYTE( "whoopee.2", 0x000001, 0x020000, CRC(6796f133) SHA1(d4e657be260ba3fd3f0556ade617882513b52685) )
4558 
4559 	ROM_REGION( 0x10000, "audiocpu", 0 )            /* Sound HD647180 code */
4560 	ROM_LOAD( "hd647180.025", 0x00000, 0x08000, CRC(c02436f6) SHA1(385343f88991646ec23b385eaea82718f1251ea6) )
4561 
4562 	ROM_REGION( 0x200000, "gp9001_0", 0 )
4563 	ROM_LOAD( "tp025-4.bin", 0x000000, 0x100000, CRC(ab97f744) SHA1(c1620e614345dbd5c6567e4cb6f55c61b900d0ee) )
4564 	ROM_LOAD( "tp025-3.bin", 0x100000, 0x100000, CRC(7b16101e) SHA1(ae0119bbfa0937d18c4fbb0a3ef7cdc3b9fa6b56) )
4565 ROM_END
4566 
4567 
4568 ROM_START( pipibibsp )
4569 	ROM_REGION( 0x080000, "maincpu", 0 )            /* Main 68K code */
4570 	ROM_LOAD16_BYTE( "pip_cpu_e", 0x000000, 0x020000, CRC(ae3205bd) SHA1(1613fec637dfed213433dca0d267e49f4848df81) )
4571 	ROM_LOAD16_BYTE( "pip_cpu_o", 0x000001, 0x020000, CRC(241669a9) SHA1(234e0bb819453e16625d15d2cf22496bbc547943) )
4572 
4573 	ROM_REGION( 0x10000, "audiocpu", 0 )            /* Sound Z80 code */
4574 	ROM_LOAD( "pip_snd", 0x0000, 0x8000, CRC(8ebf183b) SHA1(602b138c85b02d121d007f6788b322aa107c7d91) )
4575 
4576 	ROM_REGION( 0x200000, "gp9001_0", 0 )
4577 	ROM_LOAD( "cg_01_l", 0x000000, 0x080000, CRC(21d1ef46) SHA1(d7ccbe56eb08be421c241065cbaa99cc9cca4d73) )
4578 	ROM_LOAD( "cg_01_h", 0x080000, 0x080000, CRC(d5726328) SHA1(26401ba8ce22fda161306b91d70afefa959cde8c) )
4579 	ROM_LOAD( "cg_23_l", 0x100000, 0x080000, CRC(114d41d0) SHA1(d1166d495d92c6082fffbed422deb7605c5a41a2) )
4580 	ROM_LOAD( "cg_23_h", 0x180000, 0x080000, CRC(e0468152) SHA1(f5a872d8658e959ec6cce51c7798291b5b973f15) )
4581 ROM_END
4582 
4583 
4584 // TODO: this runs on oneshot.cpp hardware. Move to that driver and remove the hacks in video/gp9001.cpp needed to run it in this driver
4585 ROM_START( pipibibsbl ) /* Based off the proto code. */
4586 	ROM_REGION( 0x040000, "maincpu", 0 )            /* Main 68K code */
4587 	ROM_LOAD16_BYTE( "ppbb06.bin", 0x000000, 0x020000, CRC(14c92515) SHA1(2d7f7c89272bb2a8115f163ad651bef3bca5107e) )
4588 	ROM_LOAD16_BYTE( "ppbb05.bin", 0x000001, 0x020000, CRC(3d51133c) SHA1(d7bd94ad11e9aeb5a5165c5ac6f71950849bcd2f) )
4589 
4590 	ROM_REGION( 0x10000, "audiocpu", 0 )            /* Sound Z80 code */
4591 	ROM_LOAD( "ppbb08.bin", 0x0000, 0x8000, CRC(101c0358) SHA1(162e02d00b7bdcdd3b48a0cd0527b7428435ec50) ) // same data as komocomo in oneshot.cpp
4592 
4593 	ROM_REGION( 0x200000, "gp9001_0", 0 )
4594 	/* GFX data differs slightly from Toaplan boards ??? */
4595 	ROM_LOAD16_BYTE( "ppbb01.bin", 0x000000, 0x080000, CRC(0fcae44b) SHA1(ac72bc79e3a5d0a81647c312d310d00ace017272) )
4596 	ROM_LOAD16_BYTE( "ppbb02.bin", 0x000001, 0x080000, CRC(8bfcdf87) SHA1(4537a7d646d3014f069c6fd0be457bb32e2f18ac) )
4597 	ROM_LOAD16_BYTE( "ppbb03.bin", 0x100000, 0x080000, CRC(abdd2b8b) SHA1(a4246dd63515f01d1227c9a9e16d9f1c739ee39e) )
4598 	ROM_LOAD16_BYTE( "ppbb04.bin", 0x100001, 0x080000, CRC(70faa734) SHA1(4448f4dbded56c142e57293d371e0a422c3a667e) )
4599 
4600 	ROM_REGION( 0x8000, "user1", 0 )            /* ??? Some sort of table */
4601 	ROM_LOAD( "ppbb07.bin", 0x0000, 0x8000, CRC(456dd16e) SHA1(84779ee64d3ea33ba1ba4dee39b504a81c6811a1) ) // 1xxxxxxxxxxxxxx = 0xFF, same data as komocomo in oneshot.cpp
4602 ROM_END
4603 
4604 
4605 // TODO: determine if this is the correct driver or if this needs to be moved somewhere else, too
4606 ROM_START( pipibibsbl2 ) // PIPI001 PCB
4607 	ROM_REGION( 0x040000, "maincpu", 0 )            /* Main 68K code */
4608 	ROM_LOAD16_BYTE( "06.bin", 0x000000, 0x020000, CRC(25f49c2f) SHA1(a61246ec8a07ba14ee0a01c3458c59840b435c0b) )
4609 	ROM_LOAD16_BYTE( "07.bin", 0x000001, 0x020000, CRC(15250177) SHA1(a5ee5ccc219f300d7387b45dc8f8b72fd0f37d7e) )
4610 
4611 	ROM_REGION( 0x20000, "audiocpu", 0 )            /* Sound Z80 code */
4612 	ROM_LOAD( "08.bin", 0x00000, 0x10000, CRC(f2080071) SHA1(68cbae9559879b2dc19c41a7efbd13ab4a569d3f) ) //  // 1ST AND 2ND HALF IDENTICAL, same as komocomo in oneshot.cpp
4613 
4614 	ROM_REGION( 0x200000, "gp9001_0", 0 )
4615 	ROM_LOAD16_BYTE( "01.bin", 0x000000, 0x80000, CRC(505e9e9f) SHA1(998995d94585d785263cc926f68632065aa6c366) )
4616 	ROM_LOAD16_BYTE( "02.bin", 0x000001, 0x80000, CRC(860018f5) SHA1(7f42dffb27940629447d688e1771b4ecf04f3b43) )
4617 	ROM_LOAD16_BYTE( "03.bin", 0x100000, 0x80000, CRC(ece1bc0f) SHA1(d29f1520f1a3a9d276d36af650bc0d70bcb5b8da) )
4618 	ROM_LOAD16_BYTE( "04.bin", 0x100001, 0x80000, CRC(f328d7a3) SHA1(2c4fb5d6202f847aaf7c7be719c0c92b8bb5946b) )
4619 
4620 	ROM_REGION( 0x20000, "user1", 0 )
4621 	ROM_LOAD( "5.bin", 0x00000, 0x20000, CRC(8107c4bd) SHA1(64e2fafa808c16c722454b611a8492a4620a925c) ) // motherboard ROM, unknown purpose
4622 ROM_END
4623 
4624 ROM_START( pipibibsbl3 )
4625 	ROM_REGION( 0x040000, "maincpu", 0 )            // Main 68K code, not scrambled
4626 	ROM_LOAD16_BYTE( "5.bin", 0x000000, 0x020000, CRC(7fab770c) SHA1(c96808870c5906e0203f38114702bd660e491a7d) )
4627 	ROM_LOAD16_BYTE( "6.bin", 0x000001, 0x020000, CRC(9007ef00) SHA1(594052be7351e0b8e30f83abd9a91ab1429d82ef) )
4628 
4629 	ROM_REGION( 0x10000, "audiocpu", 0 )            // Sound Z80 code
4630 	ROM_LOAD( "7.bin", 0x0000, 0x8000, CRC(101c0358) SHA1(162e02d00b7bdcdd3b48a0cd0527b7428435ec50) ) // same data as komocomo in oneshot.cpp
4631 
4632 	ROM_REGION( 0x200000, "gp9001_0", 0 )
4633 	// GFX data differs slightly from Toaplan boards ???
4634 	ROM_LOAD16_BYTE( "4.bin", 0x000000, 0x080000, CRC(0fcae44b) SHA1(ac72bc79e3a5d0a81647c312d310d00ace017272) )
4635 	ROM_LOAD16_BYTE( "3.bin", 0x000001, 0x080000, CRC(8bfcdf87) SHA1(4537a7d646d3014f069c6fd0be457bb32e2f18ac) )
4636 	ROM_LOAD16_BYTE( "2.bin", 0x100000, 0x080000, CRC(abdd2b8b) SHA1(a4246dd63515f01d1227c9a9e16d9f1c739ee39e) )
4637 	ROM_LOAD16_BYTE( "1.bin", 0x100001, 0x080000, CRC(70faa734) SHA1(4448f4dbded56c142e57293d371e0a422c3a667e) )
4638 
4639 	ROM_REGION( 0x8000, "user1", 0 )            // ??? Some sort of table
4640 	ROM_LOAD( "8.bin", 0x0000, 0x8000, CRC(456dd16e) SHA1(84779ee64d3ea33ba1ba4dee39b504a81c6811a1) ) // 1xxxxxxxxxxxxxx = 0xFF, same data as komocomo in oneshot.cpp
4641 ROM_END
4642 
4643 #define ROMS_FIXEIGHT \
4644 	ROM_REGION( 0x080000, "maincpu", 0 ) \
4645 	ROM_LOAD16_WORD_SWAP( "tp-026-1", 0x000000, 0x080000, CRC(f7b1746a) SHA1(0bbea6f111b818bc9b9b2060af4fe900f37cf7f9) ) \
4646 	ROM_REGION( 0x400000, "gp9001_0", 0 ) \
4647 	ROM_LOAD( "tp-026-3", 0x000000, 0x200000, CRC(e5578d98) SHA1(280d2b716d955e767d311fc9596823852435b6d7) ) \
4648 	ROM_LOAD( "tp-026-4", 0x200000, 0x200000, CRC(b760cb53) SHA1(bc9c5e49e45cdda0f774be0038aa4deb21d4d285) ) \
4649 	ROM_REGION( 0x40000, "oki1", 0 ) \
4650 	ROM_LOAD( "tp-026-2", 0x00000, 0x40000, CRC(85063f1f) SHA1(1bf4d77494de421c98f6273b9876e60d827a6826) )
4651 
4652 // note you may need to byteswap these EEPROM files to reprogram the original chip, this is the same for many supported in MAME.
4653 
4654 ROM_START( fixeightkt )
4655 	ROMS_FIXEIGHT
4656 	ROM_REGION16_BE( 0x80, "eeprom", 0 )
4657 	ROM_LOAD( "fixeightkt.nv", 0x00, 0x80, CRC(08fa73ba) SHA1(b7761d3dd3f4485e55c8ef2cf1a840ca771ee2fc) )
4658 ROM_END
4659 
4660 ROM_START( fixeightk )
4661 	ROMS_FIXEIGHT
4662 	ROM_REGION16_BE( 0x80, "eeprom", 0 )
4663 	ROM_LOAD( "fixeightk.nv", 0x00, 0x80, CRC(cac91c6f) SHA1(55b284f081753d60abff63493094322756b7f0c5) )
4664 ROM_END
4665 
4666 ROM_START( fixeightht )
4667 	ROMS_FIXEIGHT
4668 	ROM_REGION16_BE( 0x80, "eeprom", 0 )
4669 	ROM_LOAD( "fixeightht.nv", 0x00, 0x80, CRC(57edaa51) SHA1(b8d50e82590b8cbbbcafec5f9cfbc91e4c286db5) )
4670 ROM_END
4671 
4672 ROM_START( fixeighth )
4673 	ROMS_FIXEIGHT
4674 	ROM_REGION16_BE( 0x80, "eeprom", 0 )
4675 	ROM_LOAD( "fixeighth.nv", 0x00, 0x80, CRC(95dec584) SHA1(1c309074b51da5a5263dee00403296946e41067b) )
4676 ROM_END
4677 
4678 ROM_START( fixeighttwt )
4679 	ROMS_FIXEIGHT
4680 	ROM_REGION16_BE( 0x80, "eeprom", 0 )
4681 	ROM_LOAD( "fixeighttwt.nv", 0x00, 0x80, CRC(b6d5c06c) SHA1(7fda380ac6835a983c57d093ccad7bd76893c9ba))
4682 ROM_END
4683 
4684 ROM_START( fixeighttw )
4685 	ROMS_FIXEIGHT
4686 	ROM_REGION16_BE( 0x80, "eeprom", 0 )
4687 	ROM_LOAD( "fixeighttw.nv", 0x00, 0x80, CRC(74e6afb9) SHA1(87bdc95eb0d2d54375de2c622557d503e14154be))
4688 ROM_END
4689 
4690 ROM_START( fixeightat )
4691 	ROMS_FIXEIGHT
4692 	ROM_REGION16_BE( 0x80, "eeprom", 0 )
4693 	ROM_LOAD( "fixeightat.nv", 0x00, 0x80,CRC(e9c21987) SHA1(7f699e38deb84902ed62b857a3d2b4e3ea1475bb) )
4694 ROM_END
4695 
4696 ROM_START( fixeighta )
4697 	ROMS_FIXEIGHT
4698 	ROM_REGION16_BE( 0x80, "eeprom", 0 )
4699 	ROM_LOAD( "fixeighta.nv", 0x00, 0x80, CRC(2bf17652) SHA1(4ec6f188e63610d258cd6b2432d2200d61d80bed))
4700 ROM_END
4701 
4702 ROM_START( fixeightt )
4703 	ROMS_FIXEIGHT
4704 	ROM_REGION16_BE( 0x80, "eeprom", 0 )
4705 	ROM_LOAD( "fixeightt.nv", 0x00, 0x80, CRC(c0da4a05) SHA1(3686161244e3e8be0e2fdb5fc5c24e39a7aeba85) )
4706 ROM_END
4707 
4708 ROM_START( fixeight )
4709 	ROMS_FIXEIGHT
4710 	ROM_REGION16_BE( 0x80, "eeprom", 0 )
4711 	ROM_LOAD( "fixeight.nv", 0x00, 0x80, CRC(02e925d0) SHA1(5839d10aceff84916ea99e9c6afcdc90eef7468b) )
4712 ROM_END
4713 
4714 ROM_START( fixeightut )
4715 	ROMS_FIXEIGHT
4716 	ROM_REGION16_BE( 0x80, "eeprom", 0 )
4717 	ROM_LOAD( "fixeightut.nv", 0x00, 0x80, CRC(9fcd93ee) SHA1(4f2750f09d9b8ff358a2fd6c7a4a8ba6de67017a) )
4718 ROM_END
4719 
4720 ROM_START( fixeightu )
4721 	ROMS_FIXEIGHT
4722 	ROM_REGION16_BE( 0x80, "eeprom", 0 )
4723 	ROM_LOAD( "fixeightu.nv", 0x00, 0x80, CRC(5dfefc3b) SHA1(5203525c58e2ae10575af2e277a5696bd64c5b60) )
4724 ROM_END
4725 
4726 ROM_START( fixeightj )
4727 	ROMS_FIXEIGHT
4728 	ROM_REGION16_BE( 0x80, "eeprom", 0 )
4729 	ROM_LOAD( "fixeightj.nv", 0x00, 0x80, CRC(21e22038) SHA1(29fb10061e62799bb5e4171e144daac49f0cdf06) )
4730 ROM_END
4731 
4732 ROM_START( fixeightjt )
4733 	ROMS_FIXEIGHT
4734 	ROM_REGION16_BE( 0x80, "eeprom", 0 )
4735 	ROM_LOAD( "fixeightjt.nv", 0x00, 0x80, CRC(e3d14fed) SHA1(ee4982ef195240c5eaa5005ca1d591901fb01b47) )
4736 ROM_END
4737 
4738 
4739 /*
4740 Fix Eight (bootleg)
4741 Toaplan, 1992
4742 
4743 PCB Layout
4744 ----------
4745 
4746 |--------------------------------------------|
4747 |   1.BIN        PAL               14MHz  PAL|
4748 |   M6295        PAL                         |
4749 |   PAL     6116 4.BIN          681000 681000|
4750 |           6116                             |
4751 |           6116                681000 681000|
4752 |J          6116        PAL                  |
4753 |A                             PAL           |
4754 |M                                           |
4755 |M   62256  62256              PAL           |
4756 |A   2.BIN  3.BIN       PAL                  |
4757 |                       PAL                  |
4758 |       68000           PAL                  |
4759 | DSW2        |------|  5.BIN                |
4760 | DSW1   6264 |TPC   |                       |
4761 | 3.579545MHz |1020  |  6.BIN                |
4762 | 10MHz  6264 |------|  7.BIN                |
4763 |--------------------------------------------|
4764 Notes:
4765       68000 clock at 10.000MHz
4766       M6295 clock at 875kHz [14M/16]. Sample rate = 875000 / 165
4767       VSync at 60Hz
4768       6116  - 2k   x8 SRAM (x4)
4769       6264  - 8k   x8 SRAM (x2)
4770       62256 - 32k  x8 SRAM (x2)
4771       681000- 128k x8 SRAM (x4)
4772 */
4773 
4774 
4775 ROM_START( fixeightbl )
4776 	ROM_REGION( 0x100000, "maincpu", 0 )            /* Main 68K code */
4777 	ROM_LOAD16_BYTE( "3.bin", 0x000000, 0x80000, CRC(cc77d4b4) SHA1(4d3376cbae13d90c6314d8bb9236c2183fc6253c) )
4778 	ROM_LOAD16_BYTE( "2.bin", 0x000001, 0x80000, CRC(ed715488) SHA1(37be9bc8ff6b54a1f660d89469c6c2da6301e9cd) )
4779 
4780 	ROM_REGION( 0x400000, "gp9001_0", 0 )
4781 	ROM_LOAD( "tp-026-3", 0x000000, 0x200000, CRC(e5578d98) SHA1(280d2b716d955e767d311fc9596823852435b6d7) )
4782 	ROM_LOAD( "tp-026-4", 0x200000, 0x200000, CRC(b760cb53) SHA1(bc9c5e49e45cdda0f774be0038aa4deb21d4d285) )
4783 
4784 	ROM_REGION( 0x08000, "text", 0)
4785 	ROM_LOAD( "4.bin", 0x00000, 0x08000, CRC(a6aca465) SHA1(2b331faeee1832e0adc5218254a99d66331862c6) )
4786 
4787 	ROM_REGION( 0x80000, "oki1", 0 )         /* ADPCM Samples */
4788 	ROM_LOAD( "1.bin", 0x00000, 0x80000, CRC(888f19ac) SHA1(d2f4f8b7be7a0fdb95baa0af8930e50e2f875c05) )
4789 
4790 	ROM_REGION( 0x8000, "user1", 0 )            /* ??? Some sort of table  - same as in pipibibsbl */
4791 	ROM_LOAD( "5.bin", 0x0000, 0x8000, CRC(456dd16e) SHA1(84779ee64d3ea33ba1ba4dee39b504a81c6811a1) )
4792 ROM_END
4793 
4794 
4795 ROM_START( grindstm )
4796 	ROM_REGION( 0x080000, "maincpu", 0 )            /* Main 68K code */
4797 	ROM_LOAD16_WORD_SWAP( "01.bin", 0x000000, 0x080000, CRC(4923f790) SHA1(1c2d66b432d190d0fb6ac7ca0ec0687aea3ccbf4) )
4798 
4799 	/* Secondary CPU is a Toaplan marked chip, (TS-007-Spy  TOA PLAN) */
4800 	/* It's a NEC V25 (PLCC94) (encrypted program uploaded by main CPU) */
4801 
4802 	ROM_REGION( 0x200000, "gp9001_0", 0 )
4803 	ROM_LOAD( "tp027_02.bin", 0x000000, 0x100000, CRC(877b45e8) SHA1(b3ed8d8dbbe51a1919afc55d619d2b6771971493) )
4804 	ROM_LOAD( "tp027_03.bin", 0x100000, 0x100000, CRC(b1fc6362) SHA1(5e97e3cce31be57689d394a50178cda4d80cce5f) )
4805 ROM_END
4806 
4807 
4808 ROM_START( grindstma )
4809 	ROM_REGION( 0x080000, "maincpu", 0 )            /* Main 68K code */
4810 	ROM_LOAD16_WORD_SWAP( "tp027-01.rom", 0x000000, 0x080000, CRC(8d8c0392) SHA1(824dde274c8bef8a87c54d8ccdda7f0feb8d11e1) )
4811 
4812 	/* Secondary CPU is a Toaplan marked chip, (TS-007-Spy  TOA PLAN) */
4813 	/* It's a NEC V25 (PLCC94) (encrypted program uploaded by main CPU) */
4814 
4815 	ROM_REGION( 0x200000, "gp9001_0", 0 )
4816 	ROM_LOAD( "tp027_02.bin", 0x000000, 0x100000, CRC(877b45e8) SHA1(b3ed8d8dbbe51a1919afc55d619d2b6771971493) )
4817 	ROM_LOAD( "tp027_03.bin", 0x100000, 0x100000, CRC(b1fc6362) SHA1(5e97e3cce31be57689d394a50178cda4d80cce5f) )
4818 ROM_END
4819 
4820 
4821 ROM_START( vfive )
4822 	ROM_REGION( 0x080000, "maincpu", 0 )            /* Main 68K code */
4823 	ROM_LOAD16_WORD_SWAP( "tp027_01.bin", 0x000000, 0x080000, CRC(731d50f4) SHA1(794255d0a809cda9170f5bac473df9d7f0efdac8) )
4824 
4825 	/* Secondary CPU is a Toaplan marked chip, (TS-007-Spy  TOA PLAN) */
4826 	/* It's a NEC V25 (PLCC94) (encrypted program uploaded by main CPU) */
4827 
4828 	ROM_REGION( 0x200000, "gp9001_0", 0 )
4829 	ROM_LOAD( "tp027_02.bin", 0x000000, 0x100000, CRC(877b45e8) SHA1(b3ed8d8dbbe51a1919afc55d619d2b6771971493) )
4830 	ROM_LOAD( "tp027_03.bin", 0x100000, 0x100000, CRC(b1fc6362) SHA1(5e97e3cce31be57689d394a50178cda4d80cce5f) )
4831 ROM_END
4832 
4833 
4834 ROM_START( batsugun )
4835 	ROM_REGION( 0x080000, "maincpu", 0 )            /* Main 68K code */
4836 	ROM_LOAD16_WORD_SWAP( "tp030_1a.bin", 0x000000, 0x080000,  CRC(cb1d4554) SHA1(ef31f24d77e1c13bdf5558a04a6253e2e3e6a790) )
4837 
4838 	/* Secondary CPU is a Toaplan marked chip, (TS-007-Spy  TOA PLAN) */
4839 	/* It's a NEC V25 (PLCC94) (program uploaded by main CPU) */
4840 
4841 	ROM_REGION( 0x400000, "gp9001_0", 0 )
4842 	ROM_LOAD( "tp030_3l.bin", 0x000000, 0x100000, CRC(3024b793) SHA1(e161db940f069279356fca2c5bf2753f07773705) )
4843 	ROM_LOAD( "tp030_3h.bin", 0x100000, 0x100000, CRC(ed75730b) SHA1(341f0f728144a049486d996c9bb14078578c6879) )
4844 	ROM_LOAD( "tp030_4l.bin", 0x200000, 0x100000, CRC(fedb9861) SHA1(4b0917056bd359b21935358c6bcc729262be6417) )
4845 	ROM_LOAD( "tp030_4h.bin", 0x300000, 0x100000, CRC(d482948b) SHA1(31be7dc5cff072403b783bf203b9805ffcad7284) )
4846 
4847 	ROM_REGION( 0x200000, "gp9001_1", 0 )
4848 	ROM_LOAD( "tp030_5.bin",  0x000000, 0x100000, CRC(bcf5ba05) SHA1(40f98888a29cdd30cda5dfb60fdc667c69b0fdb0) )
4849 	ROM_LOAD( "tp030_6.bin",  0x100000, 0x100000, CRC(0666fecd) SHA1(aa8f921fc51590b5b05bbe0b0ad0cce5ff359c64) )
4850 
4851 	ROM_REGION( 0x40000, "oki1", 0 )         /* ADPCM Samples */
4852 	ROM_LOAD( "tp030_2.bin", 0x00000, 0x40000, CRC(276146f5) SHA1(bf11d1f6782cefcad77d52af4f7e6054a8f93440) )
4853 
4854 	ROM_REGION( 0x1000, "plds", 0 )         /* Logic for mixing output of both GP9001 GFX controllers */
4855 	ROM_LOAD( "tp030_u19_gal16v8b-15.bin", 0x0000, 0x117, CRC(f71669e8) SHA1(ec1fbe04605fee864af4b01f001af227938c9f21) )
4856 //  ROM_LOAD( "tp030_u19_gal16v8b-15.jed", 0x0000, 0x991, CRC(31be54a2) SHA1(06278942a9a2ea858c0352b2ef5a65bf329b7b82) )
4857 ROM_END
4858 
4859 ROM_START( batsuguna )
4860 	ROM_REGION( 0x080000, "maincpu", 0 )            /* Main 68K code */
4861 	ROM_LOAD16_WORD_SWAP( "tp030_01.bin", 0x000000, 0x080000, CRC(3873d7dd) SHA1(baf6187d7d554cfcf4a86b63f07fc30df7ef84c9) )
4862 
4863 	/* Secondary CPU is a Toaplan marked chip, (TS-007-Spy  TOA PLAN) */
4864 	/* It's a NEC V25 (PLCC94) (program uploaded by main CPU) */
4865 
4866 	ROM_REGION( 0x400000, "gp9001_0", 0 )
4867 	ROM_LOAD( "tp030_3l.bin", 0x000000, 0x100000, CRC(3024b793) SHA1(e161db940f069279356fca2c5bf2753f07773705) )
4868 	ROM_LOAD( "tp030_3h.bin", 0x100000, 0x100000, CRC(ed75730b) SHA1(341f0f728144a049486d996c9bb14078578c6879) )
4869 	ROM_LOAD( "tp030_4l.bin", 0x200000, 0x100000, CRC(fedb9861) SHA1(4b0917056bd359b21935358c6bcc729262be6417) )
4870 	ROM_LOAD( "tp030_4h.bin", 0x300000, 0x100000, CRC(d482948b) SHA1(31be7dc5cff072403b783bf203b9805ffcad7284) )
4871 
4872 	ROM_REGION( 0x200000, "gp9001_1", 0 )
4873 	ROM_LOAD( "tp030_5.bin",  0x000000, 0x100000, CRC(bcf5ba05) SHA1(40f98888a29cdd30cda5dfb60fdc667c69b0fdb0) )
4874 	ROM_LOAD( "tp030_6.bin",  0x100000, 0x100000, CRC(0666fecd) SHA1(aa8f921fc51590b5b05bbe0b0ad0cce5ff359c64) )
4875 
4876 	ROM_REGION( 0x40000, "oki1", 0 )         /* ADPCM Samples */
4877 	ROM_LOAD( "tp030_2.bin", 0x00000, 0x40000, CRC(276146f5) SHA1(bf11d1f6782cefcad77d52af4f7e6054a8f93440) )
4878 
4879 	ROM_REGION( 0x1000, "plds", 0 )         /* Logic for mixing output of both GP9001 GFX controllers */
4880 	ROM_LOAD( "tp030_u19_gal16v8b-15.bin", 0x0000, 0x117, CRC(f71669e8) SHA1(ec1fbe04605fee864af4b01f001af227938c9f21) )
4881 ROM_END
4882 
4883 ROM_START( batsugunb )
4884 	ROM_REGION( 0x080000, "maincpu", 0 )            /* Main 68K code */
4885 	ROM_LOAD16_WORD_SWAP( "large_rom1.bin", 0x000000, 0x080000,  CRC(c9de8ed8) SHA1(8de9acd26e83c8ea3388137da528704116aa7bdb) )
4886 
4887 	/* Secondary CPU is a Toaplan marked chip, (TS-007-Spy  TOA PLAN) */
4888 	/* It's a NEC V25 (PLCC94) (program uploaded by main CPU) */
4889 
4890 	ROM_REGION( 0x400000, "gp9001_0", 0 )
4891 	ROM_LOAD16_BYTE( "rom12.bin", 0x000000, 0x080000, CRC(d25affc6) SHA1(00803ae5a2bc06edbfb9ea6e3df51f195bbee8cb) )
4892 	ROM_LOAD16_BYTE( "rom6.bin",  0x000001, 0x080000, CRC(ddd6df60) SHA1(3b46945c51e7b10b473d98916f075e8def336ce7) )
4893 	ROM_LOAD16_BYTE( "rom11.bin", 0x100000, 0x080000, CRC(ed72fe3e) SHA1(5c0f4d5cc84b45e1924dacfa4c0b602cc1600b2f) )
4894 	ROM_LOAD16_BYTE( "rom5.bin",  0x100001, 0x080000, CRC(fd44b33b) SHA1(791cf6056a2dbafa5f41f1dcf686947ee990647d) )
4895 	ROM_LOAD16_BYTE( "rom10.bin", 0x200000, 0x080000, CRC(86b2c6a9) SHA1(b3f39246012c6cd9df69a6797d56479523b33bcb) )
4896 	ROM_LOAD16_BYTE( "rom4.bin",  0x200001, 0x080000, CRC(e7c1c623) SHA1(0d8922ce901b5f74f1bd397d5d9c6ab4e918b1d1) )
4897 	ROM_LOAD16_BYTE( "rom9.bin",  0x300000, 0x080000, CRC(fda8ee00) SHA1(d5ea617a72b2721386eb2dfc15b76de2e30f069c) )
4898 	ROM_LOAD16_BYTE( "rom3.bin",  0x300001, 0x080000, CRC(a7c4dee8) SHA1(94e2dda067612fac810157f8cf392b685b38798b) )
4899 
4900 	ROM_REGION( 0x200000, "gp9001_1", 0 )
4901 	ROM_LOAD16_BYTE( "rom8.bin",  0x000000, 0x080000, CRC(a2c6a170) SHA1(154048ddc8ca2b4e9617e142d904ad2698b0ad02) )
4902 	ROM_LOAD16_BYTE( "rom2.bin",  0x000001, 0x080000, CRC(a457e202) SHA1(4a9f2f95c866fc9d40af1c57ce1940f0a6dc1b82) )
4903 	ROM_LOAD16_BYTE( "rom7.bin",  0x100000, 0x080000, CRC(8644518f) SHA1(570141deeb796cfae57600d5a518d34bb6dc14d0) )
4904 	ROM_LOAD16_BYTE( "rom1.bin",  0x100001, 0x080000, CRC(8e339897) SHA1(80e84c291f287c0783bddfcb1b7ebf78c154cadc) )
4905 
4906 	ROM_REGION( 0x40000, "oki1", 0 )         /* ADPCM Samples */
4907 	ROM_LOAD( "rom13.bin", 0x00000, 0x40000, CRC(276146f5) SHA1(bf11d1f6782cefcad77d52af4f7e6054a8f93440) )
4908 
4909 	ROM_REGION( 0x1000, "plds", 0 )         /* Logic for mixing output of both GP9001 GFX controllers */
4910 	ROM_LOAD( "tp030_u19_gal16v8b-15.bin", 0x0000, 0x117, CRC(f71669e8) SHA1(ec1fbe04605fee864af4b01f001af227938c9f21) )
4911 //  ROM_LOAD( "tp030_u19_gal16v8b-15.jed", 0x0000, 0x991, CRC(31be54a2) SHA1(06278942a9a2ea858c0352b2ef5a65bf329b7b82) )
4912 ROM_END
4913 
4914 
4915 
4916 ROM_START( batsugunsp )
4917 	ROM_REGION( 0x080000, "maincpu", 0 )            /* Main 68K code */
4918 	ROM_LOAD16_WORD_SWAP( "tp030-sp.u69", 0x000000, 0x080000, CRC(8072a0cd) SHA1(3a0a9cdf894926a16800c4882a2b00383d981367) )
4919 
4920 	/* Secondary CPU is a Toaplan marked chip, (TS-007-Spy  TOA PLAN) */
4921 	/* It's a NEC V25 (PLCC94) (program uploaded by main CPU) */
4922 
4923 	ROM_REGION( 0x400000, "gp9001_0", 0 )
4924 	ROM_LOAD( "tp030_3l.bin", 0x000000, 0x100000, CRC(3024b793) SHA1(e161db940f069279356fca2c5bf2753f07773705) )
4925 	ROM_LOAD( "tp030_3h.bin", 0x100000, 0x100000, CRC(ed75730b) SHA1(341f0f728144a049486d996c9bb14078578c6879) )
4926 	ROM_LOAD( "tp030_4l.bin", 0x200000, 0x100000, CRC(fedb9861) SHA1(4b0917056bd359b21935358c6bcc729262be6417) )
4927 	ROM_LOAD( "tp030_4h.bin", 0x300000, 0x100000, CRC(d482948b) SHA1(31be7dc5cff072403b783bf203b9805ffcad7284) )
4928 
4929 	ROM_REGION( 0x200000, "gp9001_1", 0 )
4930 	ROM_LOAD( "tp030_5.bin",  0x000000, 0x100000, CRC(bcf5ba05) SHA1(40f98888a29cdd30cda5dfb60fdc667c69b0fdb0) )
4931 	ROM_LOAD( "tp030_6.bin",  0x100000, 0x100000, CRC(0666fecd) SHA1(aa8f921fc51590b5b05bbe0b0ad0cce5ff359c64) )
4932 
4933 	ROM_REGION( 0x40000, "oki1", 0 )         /* ADPCM Samples */
4934 	ROM_LOAD( "tp030_2.bin", 0x00000, 0x40000, CRC(276146f5) SHA1(bf11d1f6782cefcad77d52af4f7e6054a8f93440) )
4935 
4936 	ROM_REGION( 0x1000, "plds", 0 )         /* Logic for mixing output of both GP9001 GFX controllers */
4937 	ROM_LOAD( "tp030_u19_gal16v8b-15.bin", 0x0000, 0x117, CRC(f71669e8) SHA1(ec1fbe04605fee864af4b01f001af227938c9f21) )
4938 ROM_END
4939 
4940 
4941 ROM_START( pwrkick )
4942 	ROM_REGION( 0x80000, "maincpu", ROMREGION_ERASE00 )
4943 	ROM_LOAD16_WORD_SWAP( "1.u61",        0x000000, 0x080000, CRC(118b5899) SHA1(7a1637a63eb17e3892d79aede5730013a1dc00f9) )
4944 
4945 	ROM_REGION( 0x100000, "gp9001_0", ROMREGION_ERASE00 )
4946 	ROM_LOAD( "2.u26",        0x000000, 0x080000, CRC(a190eaea) SHA1(2c7b8c8026873e0f591fbcbc2e72b196ef84e162) )
4947 	ROM_LOAD( "3.u27",        0x080000, 0x080000, CRC(0b81e038) SHA1(8376617ae519a8ef604f20b26e941aa5b8066602) )
4948 
4949 	ROM_REGION( 0x80000, "oki1", ROMREGION_ERASE00 )
4950 	ROM_LOAD( "4.u33",        0x000000, 0x080000, CRC(3ab742f1) SHA1(ce8ca02ca57fd77872e421ce601afd017d3518a0) )
4951 ROM_END
4952 
4953 ROM_START( othldrby )
4954 	ROM_REGION( 0x080000, "maincpu", 0 )
4955 	ROM_LOAD16_WORD_SWAP( "db0.1",        0x00000, 0x80000, CRC(6b4008d3) SHA1(4cf838c47563ba482be8364b2e115569a4a06c83) )
4956 
4957 	ROM_REGION( 0x400000, "gp9001_0", 0 )
4958 	ROM_LOAD( "db0-r2",       0x000000, 0x200000, CRC(4efff265) SHA1(4cd239ff42f532495946cb52bd1fee412f84e192) )
4959 	ROM_LOAD( "db0-r3",       0x200000, 0x200000, CRC(5c142b38) SHA1(5466a8b061a0f2545493de0f96fd4387beea276a) )
4960 
4961 	ROM_REGION( 0x080000, "oki1", 0 )    /* OKIM6295 samples */
4962 	ROM_LOAD( "db0.4",        0x00000, 0x80000, CRC(a9701868) SHA1(9ee89556666d358e8d3915622573b3ba660048b8) )
4963 ROM_END
4964 
4965 ROM_START( enmadaio )
4966 	ROM_REGION( 0x080000, "maincpu", 0 )
4967 	ROM_LOAD16_WORD_SWAP( "03n_u53.c8",        0x00000, 0x80000, CRC(1a6ca2ee) SHA1(13d34a10004ca172db7953e2be8daa90fc5b62ed) )
4968 
4969 	ROM_REGION( 0x200000, "gp9001_0", 0 )
4970 	ROM_LOAD( "rom4_u30.c19",       0x000000, 0x100000, CRC(7a012d8b) SHA1(a33d9490573a9fd1e799d3fe567f991926851c51) )
4971 	ROM_LOAD( "rom5_u31.c18",       0x100000, 0x100000, CRC(60b127ab) SHA1(98785dfd6a86b4bd2c9786f6f72796c023b5b73a) )
4972 
4973 	ROM_REGION( 0x1800000, "oki1", 0 )    /* OKIM6295 samples */ // each rom contains 8 0x40000 banks, there are 12 roms, so 96 (0x60) banks here!
4974 	ROM_LOAD( "rom6_u65.a1",   0x0000000, 0x0200000, CRC(f33c6c0b) SHA1(06d73cd5b6d27de4d68f2dde1ed4dfa72b9a9178) )
4975 	ROM_LOAD( "rom7_u66.a3",   0x0200000, 0x0200000, CRC(1306f8b3) SHA1(21b0d3180f1f4af77074c35c66844e38a464fea0) )
4976 	ROM_LOAD( "rom8_u61.a4",   0x0400000, 0x0200000, CRC(4f211c00) SHA1(b067de95ad595a4915effefb83789e4e3d9db6f9) )
4977 	ROM_LOAD( "rom9_u62.a6",   0x0600000, 0x0200000, CRC(292d3ef6) SHA1(d027d4c64e57f46e444ee83b62f6c3bdf02e4eed) )
4978 	ROM_LOAD( "rom10_u67.a8",  0x0800000, 0x0200000, CRC(5219bf86) SHA1(946c8fcf3c04a88517d1a66ccd56609d22da945f) )
4979 	ROM_LOAD( "rom11_u68.a10", 0x0a00000, 0x0200000, CRC(56fe4b1d) SHA1(2ea0413b435dd178174eb66d38dc9f7ab3d07ba5) )
4980 	ROM_LOAD( "rom12_u63.a11", 0x0c00000, 0x0200000, CRC(cc48ff18) SHA1(10f6d9f445c9244b797846450f0c94700ccc7367) )
4981 	ROM_LOAD( "rom13_u64.a13", 0x0e00000, 0x0200000, CRC(a3cd181a) SHA1(6a87479c24a61f7ac940e9c9bb62a18f26c9c843) )
4982 	ROM_LOAD( "rom14_u69.a14", 0x1000000, 0x0200000, CRC(5d8cddec) SHA1(1912850d065d4ce1a1cdfd5a704218e660b5345b) )
4983 	ROM_LOAD( "rom15_u70.a16", 0x1200000, 0x0200000, CRC(c75012f5) SHA1(b1ba0abab3eb8e9e3778eecab4951d828c85cecb) )
4984 	ROM_LOAD( "rom16_u71.a18", 0x1400000, 0x0200000, CRC(efd02b0d) SHA1(b23fa3298fc29086f9ab05bc58775ff47b4cb7a9) )
4985 	ROM_LOAD( "rom17_u72.a19", 0x1600000, 0x0200000, CRC(6b8717c3) SHA1(b5b7e35deaa2f34bccd1e83844d4bc0be845d0b8) )
4986 ROM_END
4987 
4988 ROM_START( snowbro2 )
4989 	ROM_REGION( 0x080000, "maincpu", 0 )            /* Main 68K code */
4990 	ROM_LOAD16_WORD_SWAP( "pro-4", 0x000000, 0x080000, CRC(4c7ee341) SHA1(ad46c605a38565d0148daac301be4e4b72302fe7) )
4991 
4992 	ROM_REGION( 0x300000, "gp9001_0", 0 )
4993 	ROM_LOAD( "rom2-l", 0x000000, 0x100000, CRC(e9d366a9) SHA1(e87e3966fce3395324b90db6c134b3345104c04b) )
4994 	ROM_LOAD( "rom2-h", 0x100000, 0x080000, CRC(9aab7a62) SHA1(611f6a15fdbac5d3063426a365538c1482e996bf) )
4995 	ROM_LOAD( "rom3-l", 0x180000, 0x100000, CRC(eb06e332) SHA1(7cd597bfffc153d178530c0f0903bebd751c9dd1) )
4996 	ROM_LOAD( "rom3-h", 0x280000, 0x080000, CRC(df4a952a) SHA1(b76af61c8437caca573ff1312832898666a611aa) )
4997 
4998 	ROM_REGION( 0x80000, "oki1", 0 )         /* ADPCM Samples */
4999 	ROM_LOAD( "rom4", 0x00000, 0x80000, CRC(638f341e) SHA1(aa3fca25f099339ece1878ea730c5e9f18ec4823) )
5000 ROM_END
5001 
5002 ROM_START( snowbro2b ) // seems to be the same data as the main set, but with the extra user1 rom and different rom layout
5003 	ROM_REGION( 0x080000, "maincpu", 0 )    /* Main 68K code - difference with main set is year changed from 1994 to 1998 and upper FFFF fill changed to 00FF fill */
5004 	ROM_LOAD16_BYTE( "sb2-prg1.u39", 0x000000, 0x040000, CRC(e1fec8a2) SHA1(30c1a351070d784da9ba0dca68be8a262dba2045) )
5005 	ROM_LOAD16_BYTE( "sb2-prg0.u23", 0x000001, 0x040000, CRC(b473cd57) SHA1(331130faa9de01b3ca93845174e8c3684bd269c7) )
5006 
5007 	ROM_REGION( 0x400000, "gp9001_0", 0 )
5008 	ROM_LOAD( "sb2-gfx.u177", 0x000000, 0x200000, CRC(ebeec910) SHA1(e179f393b98135caa8419b68cd979038ab47a413) )
5009 	ROM_LOAD( "sb2-gfx.u175", 0x200000, 0x200000, CRC(e349c75b) SHA1(7d40d00fc0e15a68c427fe94db410bb7cbe00117) )
5010 
5011 	ROM_REGION( 0x80000, "oki1", 0 )         /* ADPCM Samples */
5012 	ROM_LOAD( "sb2-snd-4.u17", 0x00000, 0x80000, CRC(638f341e) SHA1(aa3fca25f099339ece1878ea730c5e9f18ec4823) )
5013 
5014 	ROM_REGION( 0x8000, "user1", 0 )        /* ??? Some sort of table - same as other bootleg boards */
5015 	ROM_LOAD( "sb2-unk.u100", 0x0000, 0x8000, CRC(456dd16e) SHA1(84779ee64d3ea33ba1ba4dee39b504a81c6811a1) )
5016 ROM_END
5017 
5018 ROM_START( snowbro2b2 ) // seems to mostly be the same data, but with copyright changed to Q Elec. Only set with staff credits still present. Also differently arranged graphics ROMs data.
5019 	ROM_REGION( 0x080000, "maincpu", 0 )            /* Main 68K code */
5020 	ROM_LOAD16_WORD_SWAP( "rom10.bin", 0x000000, 0x080000, CRC(3e96da41) SHA1(692211d40f506efb9cb49848521de2da7890e248) ) // 27c04002
5021 
5022 	ROM_REGION( 0x300000, "gp9001_0", 0 )
5023 	ROM_LOAD16_BYTE( "rom07.bin", 0x000000, 0x080000, CRC(c54ae0b3) SHA1(94099b2da52eb12638799eab0819fe8a13aa3879) ) // 27c040
5024 	ROM_LOAD16_BYTE( "rom05.bin", 0x000001, 0x080000, CRC(af3c74d1) SHA1(e97a688db50dfe41723452a9f652564e89e367ed) ) // 27c040
5025 	ROM_LOAD16_BYTE( "rom08.bin", 0x100000, 0x040000, CRC(72812088) SHA1(1c0d410a7dd8de0bc48b7ff677979ad269966f7d) ) // 27c02001
5026 	ROM_LOAD16_BYTE( "rom06.bin", 0x100001, 0x040000, CRC(c8f80774) SHA1(004752d7dfa08c3beb774f545fe3260d328abff0) ) // 27c02001
5027 	ROM_LOAD16_BYTE( "rom03.bin", 0x180000, 0x080000, CRC(42fecbd7) SHA1(96dc9d5495d7830400ca7475c6613119099e93f2) ) // 27c040
5028 	ROM_LOAD16_BYTE( "rom01.bin", 0x180001, 0x080000, CRC(e7134937) SHA1(7c12e7c6b08f804613e5ea0db8d622bda01bc036) ) // 27c040
5029 	ROM_LOAD16_BYTE( "rom04.bin", 0x280000, 0x040000, CRC(3343b7a7) SHA1(10efcb2dfae635f005773655faa573bf51ddc6a3) ) // 27c020
5030 	ROM_LOAD16_BYTE( "rom02.bin", 0x280001, 0x040000, CRC(af4d9551) SHA1(adcf1641e37b239b1ae4322b5710d49e53c30684) ) // 27c020
5031 
5032 	ROM_REGION( 0x80000, "oki1", 0 )         /* ADPCM Samples */
5033 	ROM_LOAD( "rom09.bin", 0x00000, 0x80000, CRC(638f341e) SHA1(aa3fca25f099339ece1878ea730c5e9f18ec4823) )
5034 ROM_END
5035 
5036 ROM_START( snowbro2ny ) // Nyanko
5037 	ROM_REGION( 0x080000, "maincpu", 0 )            /* Main 68K code */
5038 	ROM_LOAD16_WORD_SWAP( "rom1_c8.u61", 0x000000, 0x080000, CRC(9e6eb76b) SHA1(9e8b356dabedeb4ae9e08d60fbf6ed4a09edc0bd) )
5039 
5040 	ROM_REGION( 0x300000, "gp9001_0", 0 )
5041 	ROM_LOAD( "rom2-l_tp-033.u13", 0x000000, 0x100000, CRC(e9d366a9) SHA1(e87e3966fce3395324b90db6c134b3345104c04b) )
5042 	ROM_LOAD( "rom2-h_c10.u26",    0x100000, 0x080000, CRC(9aab7a62) SHA1(611f6a15fdbac5d3063426a365538c1482e996bf) )
5043 	ROM_LOAD( "rom3-l_tp-033.u12", 0x180000, 0x100000, CRC(eb06e332) SHA1(7cd597bfffc153d178530c0f0903bebd751c9dd1) )
5044 	ROM_LOAD( "rom3-h_c9.u27",     0x280000, 0x080000, CRC(6de2b059) SHA1(695e789849c34de5d83e40b0e834b2106fcd78db) )
5045 
5046 	ROM_REGION( 0x80000, "oki1", 0 )         /* ADPCM Samples */
5047 	ROM_LOAD( "rom4-tp-033.u33", 0x00000, 0x80000, CRC(638f341e) SHA1(aa3fca25f099339ece1878ea730c5e9f18ec4823) )
5048 
5049 	ROM_REGION( 0x345, "plds", 0 )
5050 	ROM_LOAD( "13_gal16v8-25lnc.u91", 0x000, 0x117, NO_DUMP ) // Protected
5051 	ROM_LOAD( "14_gal16v8-25lnc.u92", 0x117, 0x117, NO_DUMP ) // Protected
5052 	ROM_LOAD( "15_gal16v8-25lnc.u93", 0x22e, 0x117, NO_DUMP ) // Protected
5053 ROM_END
5054 
5055 /* -------------------------- Raizing games ------------------------- */
5056 
5057 
5058 /*
5059 For the two sets of Sorcer Striker (World) the only differences
5060 are 2 bytes plus a corrected checksum for each set:
5061 
5062 File Offset     sstriker   sstrikera
5063   0x160            17         0B   <-- Rom checksum value
5064   0x161            79         6D   <-- Rom checksum value
5065 
5066   0x92C            18         0C   <-- Index of copyright strings to display for Korea
5067   0x92D            18         0C   <-- Index of copyright strings to display for Korea
5068 
5069 0C points to the strings "LICENSED TO UNITE TRADING" / "FOR KOREA".
5070 18 points to a pair of empty strings.
5071 
5072 Printed labels for the eproms look like:
5073 
5074 RA-MA-01
5075    01
5076 RAIZING
5077 
5078 Both English and Japanese sets use the same labels and numbers for the roms
5079 even if the roms contain different code / data.
5080 */
5081 
5082 ROM_START( sstriker )
5083 	ROM_REGION( 0x080000, "maincpu", 0 )            /* Main 68K code */
5084 	ROM_LOAD16_WORD_SWAP( "ra-ma_01_01.u65", 0x000000, 0x080000, CRC(708fd51d) SHA1(167186d4cf13af37ec0fa6a59c738c54dbbf3c7c) )
5085 
5086 	ROM_REGION( 0x10000, "audiocpu", 0 )            /* Sound Z80 code */
5087 	ROM_LOAD( "ra-ma-01_02.u66", 0x00000, 0x10000, CRC(eabfa46d) SHA1(402c99ebf88f9025f74f0a28ced22b7882a65eb3) )
5088 
5089 	ROM_REGION( 0x200000, "gp9001_0", 0 )
5090 	ROM_LOAD( "ra-ma01-rom2.u2",  0x000000, 0x100000, CRC(54e2bd95) SHA1(341359dd46152615675bb90e8a184216c8feebff) )
5091 	ROM_LOAD( "ra-ma01-rom3.u1",  0x100000, 0x100000, CRC(21cd378f) SHA1(e1695bccec949d18b1c03e9c42dca384554b0d7c) )
5092 
5093 	ROM_REGION( 0x008000, "text", 0 )
5094 	ROM_LOAD( "ra-ma-01_05.u81",  0x000000, 0x008000, CRC(88b58841) SHA1(1d16b538c11a291bd1f46a510bfbd6259b45a0b5) )
5095 
5096 	ROM_REGION( 0x40000, "oki1", 0 )         /* ADPCM Samples */
5097 	ROM_LOAD( "ra-ma01-rom1.u57", 0x00000, 0x40000, CRC(6edb2ab8) SHA1(e3032e8eda2686f30df4b7a088c5a4d4d45782ed) )
5098 ROM_END
5099 
5100 
5101 ROM_START( sstrikerk )
5102 	ROM_REGION( 0x080000, "maincpu", 0 )            /* Main 68K code */
5103 	ROM_LOAD16_WORD_SWAP( "ra-ma-01_01.u65", 0x000000, 0x080000, CRC(92259f84) SHA1(127e62e407d95efd360bfe2cac9577f326abf6ef) )
5104 
5105 	ROM_REGION( 0x10000, "audiocpu", 0 )            /* Sound Z80 code */
5106 	ROM_LOAD( "ra-ma-01_02.u66", 0x00000, 0x10000, CRC(eabfa46d) SHA1(402c99ebf88f9025f74f0a28ced22b7882a65eb3) )
5107 
5108 	ROM_REGION( 0x200000, "gp9001_0", 0 )
5109 	ROM_LOAD( "ra-ma01-rom2.u2",  0x000000, 0x100000, CRC(54e2bd95) SHA1(341359dd46152615675bb90e8a184216c8feebff) )
5110 	ROM_LOAD( "ra-ma01-rom3.u1",  0x100000, 0x100000, CRC(21cd378f) SHA1(e1695bccec949d18b1c03e9c42dca384554b0d7c) )
5111 
5112 	ROM_REGION( 0x008000, "text", 0 )
5113 	ROM_LOAD( "ra-ma-01_05.u81",  0x000000, 0x008000, CRC(88b58841) SHA1(1d16b538c11a291bd1f46a510bfbd6259b45a0b5) )
5114 
5115 	ROM_REGION( 0x40000, "oki1", 0 )         /* ADPCM Samples */
5116 	ROM_LOAD( "ra-ma01-rom1.u57", 0x00000, 0x40000, CRC(6edb2ab8) SHA1(e3032e8eda2686f30df4b7a088c5a4d4d45782ed) )
5117 ROM_END
5118 
5119 
5120 ROM_START( mahoudai )
5121 	ROM_REGION( 0x080000, "maincpu", 0 )            /* Main 68K code */
5122 	ROM_LOAD16_WORD_SWAP( "ra_ma_01_01.u65", 0x000000, 0x080000, CRC(970ccc5c) SHA1(c87cab83bde0284e631f02e50068407fee81d941) )
5123 
5124 	ROM_REGION( 0x10000, "audiocpu", 0 )            /* Sound Z80 code */
5125 	ROM_LOAD( "ra-ma-01_02.u66", 0x00000, 0x10000, CRC(eabfa46d) SHA1(402c99ebf88f9025f74f0a28ced22b7882a65eb3) )
5126 
5127 	ROM_REGION( 0x200000, "gp9001_0", 0 )
5128 	ROM_LOAD( "ra-ma01-rom2.u2",  0x000000, 0x100000, CRC(54e2bd95) SHA1(341359dd46152615675bb90e8a184216c8feebff) )
5129 	ROM_LOAD( "ra-ma01-rom3.u1",  0x100000, 0x100000, CRC(21cd378f) SHA1(e1695bccec949d18b1c03e9c42dca384554b0d7c) )
5130 
5131 	ROM_REGION( 0x008000, "text", 0 )
5132 	ROM_LOAD( "ra_ma_01_05.u81",  0x000000, 0x008000, CRC(c00d1e80) SHA1(53e64c4c0c6309130b37597d13b44a9e95b717d8) )
5133 
5134 	ROM_REGION( 0x40000, "oki1", 0 )         /* ADPCM Samples */
5135 	ROM_LOAD( "ra-ma01-rom1.u57", 0x00000, 0x40000, CRC(6edb2ab8) SHA1(e3032e8eda2686f30df4b7a088c5a4d4d45782ed) )
5136 ROM_END
5137 
5138 
5139 ROM_START( kingdmgp )
5140 	ROM_REGION( 0x100000, "maincpu", 0 )            /* Main 68K code */
5141 	ROM_LOAD16_BYTE( "ma02rom1.bin", 0x000000, 0x080000, CRC(a678b149) SHA1(8c1a631e023dbba0a3fa6cd1b7d10dec1663213a) )
5142 	ROM_LOAD16_BYTE( "ma02rom0.bin", 0x000001, 0x080000, CRC(f226a212) SHA1(526acf3d05fdc88054a772fbea3de2af532bf3d2) )
5143 
5144 	ROM_REGION( 0x10000, "audiocpu", 0 )            /* Sound Z80 code */
5145 	ROM_LOAD( "ma02rom2.bin", 0x00000, 0x10000, CRC(dde8a57e) SHA1(f522a3f17e229c71512464349760a9e27778bf6a) )
5146 
5147 	ROM_REGION( 0x400000, "gp9001_0", 0 )
5148 	ROM_LOAD( "ma02rom3.bin",  0x000000, 0x200000, CRC(0e797142) SHA1(a480ccd151e49b886d3175a6deff56e1f2c26c3e) )
5149 	ROM_LOAD( "ma02rom4.bin",  0x200000, 0x200000, CRC(72a6fa53) SHA1(ce92e65205b84361cfb90305a61e9541b5c4dc2f) )
5150 
5151 	ROM_REGION( 0x008000, "text", 0 )
5152 	ROM_LOAD( "ma02rom5.eng",  0x000000, 0x008000, CRC(8c28460b) SHA1(0aed170762f6044896a7e608df60bbd37c583a71) )
5153 
5154 	ROM_REGION( 0x80000, "oki1", 0 )         /* ADPCM Samples */
5155 	ROM_LOAD( "ma02rom6.bin", 0x00000, 0x80000, CRC(199e7cae) SHA1(0f5e13cc8ec42c80bb4bbff90aba29cdb15213d4) )
5156 ROM_END
5157 
5158 
5159 ROM_START( shippumd )
5160 	ROM_REGION( 0x100000, "maincpu", 0 )            /* Main 68K code */
5161 	ROM_LOAD16_BYTE( "ma02rom1.bin", 0x000000, 0x080000, CRC(a678b149) SHA1(8c1a631e023dbba0a3fa6cd1b7d10dec1663213a) )
5162 	ROM_LOAD16_BYTE( "ma02rom0.bin", 0x000001, 0x080000, CRC(f226a212) SHA1(526acf3d05fdc88054a772fbea3de2af532bf3d2) )
5163 
5164 	ROM_REGION( 0x10000, "audiocpu", 0 )            /* Sound Z80 code */
5165 	ROM_LOAD( "ma02rom2.bin", 0x00000, 0x10000, CRC(dde8a57e) SHA1(f522a3f17e229c71512464349760a9e27778bf6a) )
5166 
5167 	ROM_REGION( 0x400000, "gp9001_0", 0 )
5168 	ROM_LOAD( "ma02rom3.bin",  0x000000, 0x200000, CRC(0e797142) SHA1(a480ccd151e49b886d3175a6deff56e1f2c26c3e) )
5169 	ROM_LOAD( "ma02rom4.bin",  0x200000, 0x200000, CRC(72a6fa53) SHA1(ce92e65205b84361cfb90305a61e9541b5c4dc2f) )
5170 
5171 	ROM_REGION( 0x008000, "text", 0 )
5172 	ROM_LOAD( "ma02rom5.bin",  0x000000, 0x008000, CRC(116ae559) SHA1(4cc2d2a23cc0aefd457111b7990e47184e79204c) )
5173 
5174 	ROM_REGION( 0x80000, "oki1", 0 )         /* ADPCM Samples */
5175 	ROM_LOAD( "ma02rom6.bin", 0x00000, 0x80000, CRC(199e7cae) SHA1(0f5e13cc8ec42c80bb4bbff90aba29cdb15213d4) )
5176 ROM_END
5177 
5178 ROM_START( bgareggat )
5179 	/* Dumped from a location test board, with some minor changes compared to the final.
5180 	* All ROMs are socketed
5181 	* All PAL/GALs are socketed
5182 	* PLDs at U33, U125 are PALCE16V8H/4 instead of GAL16V8B as usual (no functional impact)
5183 	* JP4 features four DIP switches, instead of two DIPs + two jumpers as in the final.
5184 
5185 	The date codes are written referencing Heisei year 8 (1996).
5186 
5187 	The program ROMs feature hand-written labels formatted like this:
5188 	BATTLE GAREGGA
5189 	     PRG 0
5190 	    8.1.17.
5191 	*/
5192 	ROM_REGION( 0x100000, "maincpu", 0 )            /* Main 68K code */
5193 	ROM_LOAD16_BYTE( "battlegaregga-prg0-8-1-17.bin", 0x000000, 0x080000, CRC(c032176f) SHA1(799ba0424489361dd2f814afaf841326bc23300c) )
5194 	ROM_LOAD16_BYTE( "battlegaregga-prg1-8-1-17.bin", 0x000001, 0x080000, CRC(3822f375) SHA1(a5a84cf48c86d8ac97f401280667658d7f451896) )
5195 
5196 	/* Hand-written label that reads
5197 	BATTLE GAREGGA
5198 	      SND
5199 	8.1.18. ロケVer.
5200 	*/
5201 	ROM_REGION( 0x20000, "audiocpu", 0 )            /* Sound Z80 code + bank */
5202 	ROM_LOAD( "battlegaregga-snd-8-1-18-loke-ver.bin", 0x00000, 0x20000, CRC(f5ea56f7) SHA1(9db04069b378dbad6626fd29d3762e3361b9aa0d) )
5203 
5204 	/* Stored on NEC ES23C16000W Mask ROMs with no Raizing/8ing custom markings.*/
5205 	ROM_REGION( 0x800000, "gp9001_0", 0 )
5206 	ROM_LOAD( "rom4.bin",  0x000000, 0x200000, CRC(b333d81f) SHA1(5481465f1304334fd55798be2f44324c57c2dbcb) )
5207 	ROM_LOAD( "rom3.bin",  0x200000, 0x200000, CRC(51b9ebfb) SHA1(30e0c326f5175aa436df8dba08f6f4e08130b92f) )
5208 	ROM_LOAD( "rom2.bin",  0x400000, 0x200000, CRC(b330e5e2) SHA1(5d48e9d56f99d093b6390e0af1609fd796df2d35) )
5209 	ROM_LOAD( "rom1.bin",  0x600000, 0x200000, CRC(7eafdd70) SHA1(7c8da8e86c3f9491719b1d7d5d285568d7614f38) )
5210 
5211 	/* Hand-written label that reads
5212 	BATTLE GAREGGA
5213 	     TEXT
5214 	8.1.17. 8AA6
5215 
5216 	8AA6 is the checksum of the text ROM, which matches release.
5217 	*/
5218 	ROM_REGION( 0x008000, "text", 0 )
5219 	ROM_LOAD( "text.u81", 0x00000, 0x08000, CRC(e67fd534) SHA1(987d0edffc2c243a13d4567319ea3d185eaadbf8) )
5220 
5221 	/* Stored on an NEC ES23C8001EJ Mask ROM with no Raizing/8ing custom markings.*/
5222 	ROM_REGION( 0x100000, "oki1", 0 )        /* ADPCM Samples */
5223 	ROM_LOAD( "rom5.bin", 0x000000, 0x100000, CRC(f6d49863) SHA1(3a3c354852adad06e8a051511abfab7606bce382) )
5224 
5225 ROM_END
5226 
5227 ROM_START( bgaregga )
5228 	ROM_REGION( 0x100000, "maincpu", 0 )            /* Main 68K code */
5229 	ROM_LOAD16_BYTE( "prg0.bin", 0x000000, 0x080000, CRC(f80c2fc2) SHA1(a9aac5c7f5439b6fe8d1b3db1fb02a27cc28fdf6) )
5230 	ROM_LOAD16_BYTE( "prg1.bin", 0x000001, 0x080000, CRC(2ccfdd1e) SHA1(7a9f11f851854f3f8389b9c3c0906ebb8dc28712) )
5231 
5232 	ROM_REGION( 0x20000, "audiocpu", 0 )            /* Sound Z80 code + bank */
5233 	ROM_LOAD( "snd.bin", 0x00000, 0x20000, CRC(68632952) SHA1(fb834db83157948e2b420b6051102a9c6ac3969b) )
5234 
5235 	ROM_REGION( 0x800000, "gp9001_0", 0 )
5236 	ROM_LOAD( "rom4.bin",  0x000000, 0x200000, CRC(b333d81f) SHA1(5481465f1304334fd55798be2f44324c57c2dbcb) )
5237 	ROM_LOAD( "rom3.bin",  0x200000, 0x200000, CRC(51b9ebfb) SHA1(30e0c326f5175aa436df8dba08f6f4e08130b92f) )
5238 	ROM_LOAD( "rom2.bin",  0x400000, 0x200000, CRC(b330e5e2) SHA1(5d48e9d56f99d093b6390e0af1609fd796df2d35) )
5239 	ROM_LOAD( "rom1.bin",  0x600000, 0x200000, CRC(7eafdd70) SHA1(7c8da8e86c3f9491719b1d7d5d285568d7614f38) )
5240 
5241 	ROM_REGION( 0x008000, "text", 0 )
5242 	ROM_LOAD( "text.u81", 0x00000, 0x08000, CRC(e67fd534) SHA1(987d0edffc2c243a13d4567319ea3d185eaadbf8) )
5243 
5244 	ROM_REGION( 0x100000, "oki1", 0 )        /* ADPCM Samples */
5245 	ROM_LOAD( "rom5.bin", 0x000000, 0x100000, CRC(f6d49863) SHA1(3a3c354852adad06e8a051511abfab7606bce382) )
5246 ROM_END
5247 
5248 
5249 ROM_START( bgareggahk )
5250 	ROM_REGION( 0x100000, "maincpu", 0 )            /* Main 68K code */
5251 	ROM_LOAD16_BYTE( "prg_0.rom", 0x000000, 0x080000, CRC(26e0019e) SHA1(5197001f5d59246b137e19ed1952a8207b25d4c0) )
5252 	ROM_LOAD16_BYTE( "prg_1.rom", 0x000001, 0x080000, CRC(2ccfdd1e) SHA1(7a9f11f851854f3f8389b9c3c0906ebb8dc28712) )
5253 
5254 	ROM_REGION( 0x20000, "audiocpu", 0 )            /* Sound Z80 code + bank */
5255 	ROM_LOAD( "snd.bin", 0x00000, 0x20000, CRC(68632952) SHA1(fb834db83157948e2b420b6051102a9c6ac3969b) )
5256 
5257 	ROM_REGION( 0x800000, "gp9001_0", 0 )
5258 	ROM_LOAD( "rom4.bin",  0x000000, 0x200000, CRC(b333d81f) SHA1(5481465f1304334fd55798be2f44324c57c2dbcb) )
5259 	ROM_LOAD( "rom3.bin",  0x200000, 0x200000, CRC(51b9ebfb) SHA1(30e0c326f5175aa436df8dba08f6f4e08130b92f) )
5260 	ROM_LOAD( "rom2.bin",  0x400000, 0x200000, CRC(b330e5e2) SHA1(5d48e9d56f99d093b6390e0af1609fd796df2d35) )
5261 	ROM_LOAD( "rom1.bin",  0x600000, 0x200000, CRC(7eafdd70) SHA1(7c8da8e86c3f9491719b1d7d5d285568d7614f38) )
5262 
5263 	ROM_REGION( 0x008000, "text", 0 )
5264 	ROM_LOAD( "text.u81", 0x00000, 0x08000, CRC(e67fd534) SHA1(987d0edffc2c243a13d4567319ea3d185eaadbf8) )
5265 
5266 	ROM_REGION( 0x100000, "oki1", 0 )        /* ADPCM Samples */
5267 	ROM_LOAD( "rom5.bin", 0x000000, 0x100000, CRC(f6d49863) SHA1(3a3c354852adad06e8a051511abfab7606bce382) )
5268 ROM_END
5269 
5270 
5271 ROM_START( bgareggatw )
5272 	ROM_REGION( 0x100000, "maincpu", 0 )            /* Main 68K code */
5273 	ROM_LOAD16_BYTE( "garegga_prg0.u123", 0x000000, 0x080000, CRC(235b7405) SHA1(a2434801df4231a6b48f6c63f47c202d25a89e79) )
5274 	ROM_LOAD16_BYTE( "garegga_prg1.u65",  0x000001, 0x080000, CRC(c29ccf6a) SHA1(38806e0b4ff852f4bfefd80c56ca23f71623e275) )
5275 
5276 	ROM_REGION( 0x20000, "audiocpu", 0 )            /* Sound Z80 code + bank */
5277 	ROM_LOAD( "snd.bin", 0x00000, 0x20000, CRC(68632952) SHA1(fb834db83157948e2b420b6051102a9c6ac3969b) )
5278 
5279 	ROM_REGION( 0x800000, "gp9001_0", 0 )
5280 	ROM_LOAD( "rom4.bin",  0x000000, 0x200000, CRC(b333d81f) SHA1(5481465f1304334fd55798be2f44324c57c2dbcb) )
5281 	ROM_LOAD( "rom3.bin",  0x200000, 0x200000, CRC(51b9ebfb) SHA1(30e0c326f5175aa436df8dba08f6f4e08130b92f) )
5282 	ROM_LOAD( "rom2.bin",  0x400000, 0x200000, CRC(b330e5e2) SHA1(5d48e9d56f99d093b6390e0af1609fd796df2d35) )
5283 	ROM_LOAD( "rom1.bin",  0x600000, 0x200000, CRC(7eafdd70) SHA1(7c8da8e86c3f9491719b1d7d5d285568d7614f38) )
5284 
5285 	ROM_REGION( 0x008000, "text", 0 )
5286 	ROM_LOAD( "text.u81", 0x00000, 0x08000, CRC(e67fd534) SHA1(987d0edffc2c243a13d4567319ea3d185eaadbf8) )
5287 
5288 	ROM_REGION( 0x100000, "oki1", 0 )        /* ADPCM Samples */
5289 	ROM_LOAD( "rom5.bin", 0x000000, 0x100000, CRC(f6d49863) SHA1(3a3c354852adad06e8a051511abfab7606bce382) )
5290 ROM_END
5291 
5292 
5293 ROM_START( bgaregganv )
5294 	ROM_REGION( 0x100000, "maincpu", 0 )            /* Main 68K code */
5295 	ROM_LOAD16_BYTE( "prg_0.bin", 0x000000, 0x080000, CRC(951ecc07) SHA1(a82e4b59e4a974566e59f3ab2fbae1aec7d88a2b) )
5296 	ROM_LOAD16_BYTE( "prg_1.bin", 0x000001, 0x080000, CRC(729a60c6) SHA1(cb6f5d138bb82c32910f42d8ee16fa573a23cef3) )
5297 
5298 	ROM_REGION( 0x20000, "audiocpu", 0 )            /* Sound Z80 code + bank */
5299 	ROM_LOAD( "snd.bin", 0x00000, 0x20000, CRC(68632952) SHA1(fb834db83157948e2b420b6051102a9c6ac3969b) )
5300 
5301 	ROM_REGION( 0x800000, "gp9001_0", 0 )
5302 	ROM_LOAD( "rom4.bin",  0x000000, 0x200000, CRC(b333d81f) SHA1(5481465f1304334fd55798be2f44324c57c2dbcb) )
5303 	ROM_LOAD( "rom3.bin",  0x200000, 0x200000, CRC(51b9ebfb) SHA1(30e0c326f5175aa436df8dba08f6f4e08130b92f) )
5304 	ROM_LOAD( "rom2.bin",  0x400000, 0x200000, CRC(b330e5e2) SHA1(5d48e9d56f99d093b6390e0af1609fd796df2d35) )
5305 	ROM_LOAD( "rom1.bin",  0x600000, 0x200000, CRC(7eafdd70) SHA1(7c8da8e86c3f9491719b1d7d5d285568d7614f38) )
5306 
5307 	ROM_REGION( 0x008000, "text", 0 )
5308 	ROM_LOAD( "text.u81", 0x00000, 0x08000, CRC(e67fd534) SHA1(987d0edffc2c243a13d4567319ea3d185eaadbf8) )
5309 
5310 	ROM_REGION( 0x100000, "oki1", 0 )        /* ADPCM Samples */
5311 	ROM_LOAD( "rom5.bin", 0x000000, 0x100000, CRC(f6d49863) SHA1(3a3c354852adad06e8a051511abfab7606bce382) )
5312 ROM_END
5313 
5314 
5315 ROM_START( bgareggat2 )
5316 	ROM_REGION( 0x100000, "maincpu", 0 )            /* Main 68K code */
5317 	ROM_LOAD16_BYTE( "prg0", 0x000000, 0x080000, CRC(84094099) SHA1(49fc68a8bcdae4477e20eade9dd569de88b0b798) )
5318 	ROM_LOAD16_BYTE( "prg1", 0x000001, 0x080000, CRC(46f92fe4) SHA1(62a02cc1dbdc3ac362339aebb62368eb89b06bad) )
5319 
5320 	ROM_REGION( 0x20000, "audiocpu", 0 )            /* Sound Z80 code + bank */
5321 	ROM_LOAD( "snd.bin", 0x00000, 0x20000, CRC(68632952) SHA1(fb834db83157948e2b420b6051102a9c6ac3969b) )
5322 
5323 	ROM_REGION( 0x800000, "gp9001_0", 0 )
5324 	ROM_LOAD( "rom4.bin",  0x000000, 0x200000, CRC(b333d81f) SHA1(5481465f1304334fd55798be2f44324c57c2dbcb) )
5325 	ROM_LOAD( "rom3.bin",  0x200000, 0x200000, CRC(51b9ebfb) SHA1(30e0c326f5175aa436df8dba08f6f4e08130b92f) )
5326 	ROM_LOAD( "rom2.bin",  0x400000, 0x200000, CRC(b330e5e2) SHA1(5d48e9d56f99d093b6390e0af1609fd796df2d35) )
5327 	ROM_LOAD( "rom1.bin",  0x600000, 0x200000, CRC(7eafdd70) SHA1(7c8da8e86c3f9491719b1d7d5d285568d7614f38) )
5328 
5329 	ROM_REGION( 0x008000, "text", 0 )
5330 	ROM_LOAD( "text.u81", 0x00000, 0x08000, CRC(e67fd534) SHA1(987d0edffc2c243a13d4567319ea3d185eaadbf8) )
5331 
5332 	ROM_REGION( 0x100000, "oki1", 0 )        /* ADPCM Samples */
5333 	ROM_LOAD( "rom5.bin", 0x000000, 0x100000, CRC(f6d49863) SHA1(3a3c354852adad06e8a051511abfab7606bce382) )
5334 ROM_END
5335 
5336 
5337 ROM_START( bgareggacn )
5338 	ROM_REGION( 0x100000, "maincpu", 0 )            /* Main 68K code */
5339 	ROM_LOAD16_BYTE( "u123", 0x000000, 0x080000, CRC(88a4e66a) SHA1(ca97e564eed0c5e028b937312e55da56400d5c8c) )
5340 	ROM_LOAD16_BYTE( "u65",  0x000001, 0x080000, CRC(5dea32a3) SHA1(59df6689e3eb5ea9e49a758604d21a64c65ca14d) )
5341 
5342 	ROM_REGION( 0x20000, "audiocpu", 0 )            /* Sound Z80 code + bank */
5343 	ROM_LOAD( "snd.bin", 0x00000, 0x20000, CRC(68632952) SHA1(fb834db83157948e2b420b6051102a9c6ac3969b) )
5344 
5345 	ROM_REGION( 0x800000, "gp9001_0", 0 )
5346 	ROM_LOAD( "rom4.bin",  0x000000, 0x200000, CRC(b333d81f) SHA1(5481465f1304334fd55798be2f44324c57c2dbcb) )
5347 	ROM_LOAD( "rom3.bin",  0x200000, 0x200000, CRC(51b9ebfb) SHA1(30e0c326f5175aa436df8dba08f6f4e08130b92f) )
5348 	ROM_LOAD( "rom2.bin",  0x400000, 0x200000, CRC(b330e5e2) SHA1(5d48e9d56f99d093b6390e0af1609fd796df2d35) )
5349 	ROM_LOAD( "rom1.bin",  0x600000, 0x200000, CRC(7eafdd70) SHA1(7c8da8e86c3f9491719b1d7d5d285568d7614f38) )
5350 
5351 	ROM_REGION( 0x008000, "text", 0 )
5352 	ROM_LOAD( "text.u81", 0x00000, 0x08000, CRC(e67fd534) SHA1(987d0edffc2c243a13d4567319ea3d185eaadbf8) )
5353 
5354 	ROM_REGION( 0x100000, "oki1", 0 )        /* ADPCM Samples */
5355 	ROM_LOAD( "rom5.bin", 0x000000, 0x100000, CRC(f6d49863) SHA1(3a3c354852adad06e8a051511abfab7606bce382) )
5356 ROM_END
5357 
5358 
5359 ROM_START( bgareggabl )
5360 	ROM_REGION( 0x100000, "maincpu", 0 )            /* Main 68K code */
5361 	ROM_LOAD16_WORD_SWAP( "xt-8m.bin", 0x000000, 0x100000, CRC(4a6657cb) SHA1(1838956e7597eaa78ea5ee58d0ccc79cbbd7ded5) )
5362 
5363 	ROM_REGION( 0x20000, "audiocpu", 0 )            /* Sound Z80 code + bank */
5364 	ROM_LOAD( "snd.bin", 0x00000, 0x20000, CRC(68632952) SHA1(fb834db83157948e2b420b6051102a9c6ac3969b) )
5365 
5366 	ROM_REGION( 0x800000, "gp9001_0", 0 )
5367 	ROM_LOAD( "6@-322",  0x000000, 0x400000, CRC(37fe48ed) SHA1(ded5d13c33b4582310cdfb3dd52c052f741c00c5) ) /* == rom4.bin+rom3.bin */
5368 	ROM_LOAD( "5@-322",  0x400000, 0x400000, CRC(5a06c031) SHA1(ee241ff90117cec1f33ab163601a9d5c75609739) ) /* == rom2.bin+rom1.bin */
5369 
5370 	ROM_REGION( 0x008000, "text", 0 )
5371 	ROM_LOAD( "1@-256", 0x00000, 0x08000, CRC(760dcd14) SHA1(e151e5d7ca5557277f306b9484ec021f4edf1e07) )
5372 
5373 	ROM_REGION( 0x010000, "user1", 0 ) // not graphics
5374 	ROM_LOAD( "2@-256", 0x00000, 0x08000, CRC(456dd16e) SHA1(84779ee64d3ea33ba1ba4dee39b504a81c6811a1) )
5375 
5376 	ROM_REGION( 0x100000, "oki1", 0 )        /* ADPCM Samples */
5377 	ROM_LOAD( "rom5.bin", 0x000000, 0x100000, CRC(f6d49863) SHA1(3a3c354852adad06e8a051511abfab7606bce382) )
5378 ROM_END
5379 
5380 ROM_START( bgareggabla )
5381 	ROM_REGION( 0x100000, "maincpu", 0 )            /* Main 68K code */
5382 	ROM_LOAD16_WORD_SWAP( "27c8100.mon-sys", 0x000000, 0x100000, CRC(d334e5aa) SHA1(41607b5630d7b92a96607ea95c5b55ad43745857) )
5383 
5384 	ROM_REGION( 0x20000, "audiocpu", 0 )            /* Sound Z80 code + bank */
5385 	ROM_LOAD( "snd.bin", 0x00000, 0x20000, CRC(68632952) SHA1(fb834db83157948e2b420b6051102a9c6ac3969b) )
5386 
5387 	ROM_REGION( 0x800000, "gp9001_0", 0 )
5388 	ROM_LOAD( "rom4.bin",  0x000000, 0x200000, CRC(b333d81f) SHA1(5481465f1304334fd55798be2f44324c57c2dbcb) )
5389 	ROM_LOAD( "rom3.bin",  0x200000, 0x200000, CRC(51b9ebfb) SHA1(30e0c326f5175aa436df8dba08f6f4e08130b92f) )
5390 	ROM_LOAD( "rom2.bin",  0x400000, 0x200000, CRC(b330e5e2) SHA1(5d48e9d56f99d093b6390e0af1609fd796df2d35) )
5391 	ROM_LOAD( "rom1.bin",  0x600000, 0x200000, CRC(7eafdd70) SHA1(7c8da8e86c3f9491719b1d7d5d285568d7614f38) )
5392 
5393 	ROM_REGION( 0x008000, "text", 0 )
5394 	ROM_LOAD( "text.bin", 0x00000, 0x08000, CRC(00d100bd) SHA1(fb6028e3519d6588a966d1b16d47453db2e51fd7))
5395 
5396 	ROM_REGION( 0x010000, "user1", 0 ) // not graphics
5397 	ROM_LOAD( "base.bin", 0x00000, 0x08000, CRC(456dd16e) SHA1(84779ee64d3ea33ba1ba4dee39b504a81c6811a1) )
5398 
5399 	ROM_REGION( 0x100000, "oki1", 0 )        /* ADPCM Samples */
5400 	ROM_LOAD( "rom5.bin", 0x000000, 0x100000, CRC(f6d49863) SHA1(3a3c354852adad06e8a051511abfab7606bce382) )
5401 ROM_END
5402 
5403 /*
5404    The region of Batrider is controlled by the first byte of rom prg0.u22
5405    only sets which have been dumped from original PCBs are supported
5406 
5407    original ROM labels have no indication of the region.
5408 
5409    valid values are:
5410     ( * denotes that this set has been found on an original PCB )
5411 
5412    00 : Nippon *
5413    01 : USA *
5414    02 : Europe *
5415    03 : Asia
5416    04 : German (sic)
5417    05 : Austria
5418    06 : Belgium
5419    07 : Denmark
5420    08 : Finland
5421    09 : France
5422    0A : Great Britain
5423    0B : Greece
5424    0C : The Netherlands
5425    0D : Italy
5426    0E : Norway
5427    0F : Portugal
5428    10 : Spain
5429    11 : Sweden
5430    12 : Switzerland
5431    13 : Australia
5432    14 : New Zealand
5433    15 : Taiwan
5434    16 : Hong Kong
5435    17 : Korea *
5436    18 : China *
5437    19 : No Region?
5438    1A+: Invalid
5439 
5440    For future reference, that would mean the following
5441 
5442    ROM_LOAD16_BYTE( "prg0_nippon.u22",       0x000000, 0x080000, CRC(4f3fc729) SHA1(b32d51c254741b82171a86c271679522a7aefd34) )
5443    ROM_LOAD16_BYTE( "prg0_usa.u22",          0x000000, 0x080000, CRC(2049d007) SHA1(f2a43547a6fc5083b03c1d59a85abbf6e1ce4cd9) )
5444    ROM_LOAD16_BYTE( "prg0_europe.u22",       0x000000, 0x080000, CRC(91d3e975) SHA1(682885fc17f2424d475c282f239f42faf1aae076) )
5445    ROM_LOAD16_BYTE( "prg0_asia.u22",         0x000000, 0x080000, CRC(fea5fe5b) SHA1(0008336ecd3886485ab1d9678880b1a0bc788f40) )
5446    ROM_LOAD16_BYTE( "prg0_german.u22",       0x000000, 0x080000, CRC(29969dd0) SHA1(eb8ad84b772508b6befb35afb11a0d6193c6a060) )
5447    ROM_LOAD16_BYTE( "prg0_austria.u22",      0x000000, 0x080000, CRC(46e08afe) SHA1(a6f46581d0f7285704fbf1ac57476c96f4dcbec2) )
5448    ROM_LOAD16_BYTE( "prg0_belgium.u22",      0x000000, 0x080000, CRC(f77ab38c) SHA1(8be87175250345d3e31d95ec204805071eae81f6) )
5449    ROM_LOAD16_BYTE( "prg0_denmark.u22",      0x000000, 0x080000, CRC(980ca4a2) SHA1(4f29eaa5ba6b94d96c527f80188657abc8f4dcd0) )
5450    ROM_LOAD16_BYTE( "prg0_finland.u22",      0x000000, 0x080000, CRC(826d72db) SHA1(be4bca0143f43c13361fd56974eb9b1ce7bd1740) )
5451    ROM_LOAD16_BYTE( "prg0_france.u22",       0x000000, 0x080000, CRC(ed1b65f5) SHA1(1e08957c0f7ed65695fb1ceb961ab765f8a97c89) )
5452    ROM_LOAD16_BYTE( "prg0_greatbritain.u22", 0x000000, 0x080000, CRC(5c815c87) SHA1(dea89944cd9a3fa6991b214495dc7123a505d39b) )
5453    ROM_LOAD16_BYTE( "prg0_greece.u22",       0x000000, 0x080000, CRC(33f74ba9) SHA1(fe770415584b037152b37a75fe468d3c52dcb3cd) )
5454    ROM_LOAD16_BYTE( "prg0_netherlands.u22",  0x000000, 0x080000, CRC(e4c42822) SHA1(8bfd286c42d7f2b3c88757b9a8b818be90b73f48) )
5455    ROM_LOAD16_BYTE( "prg0_italy.u22",        0x000000, 0x080000, CRC(8bb23f0c) SHA1(b448bba312a8d583a981f6633cbc14af99fdbb06) )
5456    ROM_LOAD16_BYTE( "prg0_norway.u22",       0x000000, 0x080000, CRC(3a28067e) SHA1(9435e6ce90b8d740a545469e6edb35d1af11ceab) )
5457    ROM_LOAD16_BYTE( "prg0_portugal.u22",     0x000000, 0x080000, CRC(555e1150) SHA1(5c9ae898244a23a4184f9613f42d9aa9530468b9) )
5458    ROM_LOAD16_BYTE( "prg0_spain.u22",        0x000000, 0x080000, CRC(0eebaa8c) SHA1(e305e90434e7f322a33e42a642362f770d3eb0e5) )
5459    ROM_LOAD16_BYTE( "prg0_sweden.u22",       0x000000, 0x080000, CRC(619dbda2) SHA1(9e88ba104a5cffcced3b93ca711487a82b0fddde) )
5460    ROM_LOAD16_BYTE( "prg0_switzerland.u22",  0x000000, 0x080000, CRC(d00784d0) SHA1(0b809414ce910684ca39216086f7d26fd2adeded) )
5461    ROM_LOAD16_BYTE( "prg0_australia.u22",    0x000000, 0x080000, CRC(bf7193fe) SHA1(9af50fffc6ef23e300bf7b5e90b0dee6e4f4ad05) )
5462    ROM_LOAD16_BYTE( "prg0_newzealand.u22",   0x000000, 0x080000, CRC(6842f075) SHA1(125b303c064d2f0b539ecadcb205756e7fd1334e) )
5463    ROM_LOAD16_BYTE( "prg0_taiwan.u22",       0x000000, 0x080000, CRC(0734e75b) SHA1(17a8fb4f8fda3c234ed976490193ba308cac08fe) )
5464    ROM_LOAD16_BYTE( "prg0_hongkong.u22",     0x000000, 0x080000, CRC(b6aede29) SHA1(580f29db6a2c2cea43966413778362694992a675) )
5465    ROM_LOAD16_BYTE( "prg0_korea.u22",        0x000000, 0x080000, CRC(d9d8c907) SHA1(69c197f2a41f288913f042de9eb8274c0df3ac27) )
5466    ROM_LOAD16_BYTE( "prg0_china.u22",        0x000000, 0x080000, CRC(c3b91f7e) SHA1(6b2376c37808dccda296d90ccd7f577ccff4e4dc) )
5467    ROM_LOAD16_BYTE( "prg0_none.u22",         0x000000, 0x080000, CRC(accf0850) SHA1(d93e4e80443a40c3a9575dbf21927ef0d1a039b9) )
5468  */
5469 
5470 
5471 ROM_START( batrider )
5472 	ROM_REGION( 0x200000, "maincpu", 0 )            /* Main 68k code */
5473 	ROM_LOAD16_BYTE( "prg0_europe.u22", 0x000000, 0x080000, CRC(91d3e975) SHA1(682885fc17f2424d475c282f239f42faf1aae076) )
5474 	ROM_LOAD16_BYTE( "prg1b.u23", 0x000001, 0x080000, CRC(8e70b492) SHA1(f84f2039826ae815afb058d71c1dbd190f9d524d) )
5475 	ROM_LOAD16_BYTE( "prg2.u21" , 0x100000, 0x080000, CRC(bdaa5fbf) SHA1(abd72ac633c0c8e7b4b1d7902c0d6e014ba995fe) )
5476 	ROM_LOAD16_BYTE( "prg3.u24" , 0x100001, 0x080000, CRC(7aa9f941) SHA1(99bdbad7a96d461073b06a53c50fc57c2fd6fc6d) )
5477 
5478 	ROM_REGION( 0x40000, "audiocpu", 0 )            /* Sound Z80 code + bank */
5479 	ROM_LOAD( "snd.u77", 0x00000, 0x40000, CRC(56682696) SHA1(a372450d9a6d535123dfc31d8116074b168ab646) )
5480 
5481 	ROM_REGION( 0x1000000, "gp9001_0", 0 )
5482 	ROM_LOAD( "rom-1.bin", 0x000000, 0x400000, CRC(0df69ca2) SHA1(49670347ebd7e1067ff988cf842b275b7ee7b5f7) )
5483 	ROM_LOAD( "rom-3.bin", 0x400000, 0x400000, CRC(60167d38) SHA1(fd2429808c59ef51fd5f5db84ea89a8dc504186e) )
5484 	ROM_LOAD( "rom-2.bin", 0x800000, 0x400000, CRC(1bfea593) SHA1(ce06dc3097ae56b0df56d104bbf7efc9b5d968d4) )
5485 	ROM_LOAD( "rom-4.bin", 0xc00000, 0x400000, CRC(bee03c94) SHA1(5bc1e6769c42857c03456426b502fcb86a114f19) )
5486 
5487 	ROM_REGION( 0x100000, "oki1", 0 )       /* ADPCM Samples 1 */
5488 	ROM_LOAD( "rom-5.bin", 0x000000, 0x100000, CRC(4274daf6) SHA1(85557b4707d529e5914f03c7a856864f5c24950e) )
5489 
5490 	ROM_REGION( 0x100000, "oki2", 0 )       /* ADPCM Samples 2 */
5491 	ROM_LOAD( "rom-6.bin", 0x000000, 0x100000, CRC(2a1c2426) SHA1(8abc3688ffc5ebb94b8d5118d4fa0908f07fe791) )
5492 ROM_END
5493 
5494 
5495 ROM_START( batrideru )
5496 	ROM_REGION( 0x200000, "maincpu", 0 )            /* Main 68k code */
5497 	ROM_LOAD16_BYTE( "prg0_usa.u22", 0x000000, 0x080000, CRC(2049d007) SHA1(f2a43547a6fc5083b03c1d59a85abbf6e1ce4cd9) )
5498 	ROM_LOAD16_BYTE( "prg1b.u23", 0x000001, 0x080000, CRC(8e70b492) SHA1(f84f2039826ae815afb058d71c1dbd190f9d524d) )
5499 	ROM_LOAD16_BYTE( "prg2.u21" , 0x100000, 0x080000, CRC(bdaa5fbf) SHA1(abd72ac633c0c8e7b4b1d7902c0d6e014ba995fe) )
5500 	ROM_LOAD16_BYTE( "prg3.u24" , 0x100001, 0x080000, CRC(7aa9f941) SHA1(99bdbad7a96d461073b06a53c50fc57c2fd6fc6d) )
5501 
5502 	ROM_REGION( 0x40000, "audiocpu", 0 )            /* Sound Z80 code + bank */
5503 	ROM_LOAD( "snd.u77", 0x00000, 0x40000, CRC(56682696) SHA1(a372450d9a6d535123dfc31d8116074b168ab646) )
5504 
5505 	ROM_REGION( 0x1000000, "gp9001_0", 0 )
5506 	ROM_LOAD( "rom-1.bin", 0x000000, 0x400000, CRC(0df69ca2) SHA1(49670347ebd7e1067ff988cf842b275b7ee7b5f7) )
5507 	ROM_LOAD( "rom-3.bin", 0x400000, 0x400000, CRC(60167d38) SHA1(fd2429808c59ef51fd5f5db84ea89a8dc504186e) )
5508 	ROM_LOAD( "rom-2.bin", 0x800000, 0x400000, CRC(1bfea593) SHA1(ce06dc3097ae56b0df56d104bbf7efc9b5d968d4) )
5509 	ROM_LOAD( "rom-4.bin", 0xc00000, 0x400000, CRC(bee03c94) SHA1(5bc1e6769c42857c03456426b502fcb86a114f19) )
5510 
5511 	ROM_REGION( 0x100000, "oki1", 0 )       /* ADPCM Samples 1 */
5512 	ROM_LOAD( "rom-5.bin", 0x000000, 0x100000, CRC(4274daf6) SHA1(85557b4707d529e5914f03c7a856864f5c24950e) )
5513 
5514 	ROM_REGION( 0x100000, "oki2", 0 )       /* ADPCM Samples 2 */
5515 	ROM_LOAD( "rom-6.bin", 0x000000, 0x100000, CRC(2a1c2426) SHA1(8abc3688ffc5ebb94b8d5118d4fa0908f07fe791) )
5516 ROM_END
5517 
5518 
5519 ROM_START( batriderc )
5520 	ROM_REGION( 0x200000, "maincpu", 0 )            /* Main 68k code */
5521 	ROM_LOAD16_BYTE( "prg0_china.u22", 0x000000, 0x080000, CRC(c3b91f7e) SHA1(6b2376c37808dccda296d90ccd7f577ccff4e4dc) )
5522 	ROM_LOAD16_BYTE( "prg1b.u23", 0x000001, 0x080000, CRC(8e70b492) SHA1(f84f2039826ae815afb058d71c1dbd190f9d524d) )
5523 	ROM_LOAD16_BYTE( "prg2.u21" , 0x100000, 0x080000, CRC(bdaa5fbf) SHA1(abd72ac633c0c8e7b4b1d7902c0d6e014ba995fe) )
5524 	ROM_LOAD16_BYTE( "prg3.u24" , 0x100001, 0x080000, CRC(7aa9f941) SHA1(99bdbad7a96d461073b06a53c50fc57c2fd6fc6d) )
5525 
5526 	ROM_REGION( 0x40000, "audiocpu", 0 )            /* Sound Z80 code + bank */
5527 	ROM_LOAD( "snd.u77", 0x00000, 0x40000, CRC(56682696) SHA1(a372450d9a6d535123dfc31d8116074b168ab646) )
5528 
5529 	ROM_REGION( 0x1000000, "gp9001_0", 0 )
5530 	ROM_LOAD( "rom-1.bin", 0x000000, 0x400000, CRC(0df69ca2) SHA1(49670347ebd7e1067ff988cf842b275b7ee7b5f7) )
5531 	ROM_LOAD( "rom-3.bin", 0x400000, 0x400000, CRC(60167d38) SHA1(fd2429808c59ef51fd5f5db84ea89a8dc504186e) )
5532 	ROM_LOAD( "rom-2.bin", 0x800000, 0x400000, CRC(1bfea593) SHA1(ce06dc3097ae56b0df56d104bbf7efc9b5d968d4) )
5533 	ROM_LOAD( "rom-4.bin", 0xc00000, 0x400000, CRC(bee03c94) SHA1(5bc1e6769c42857c03456426b502fcb86a114f19) )
5534 
5535 	ROM_REGION( 0x100000, "oki1", 0 )       /* ADPCM Samples 1 */
5536 	ROM_LOAD( "rom-5.bin", 0x000000, 0x100000, CRC(4274daf6) SHA1(85557b4707d529e5914f03c7a856864f5c24950e) )
5537 
5538 	ROM_REGION( 0x100000, "oki2", 0 )       /* ADPCM Samples 2 */
5539 	ROM_LOAD( "rom-6.bin", 0x000000, 0x100000, CRC(2a1c2426) SHA1(8abc3688ffc5ebb94b8d5118d4fa0908f07fe791) )
5540 ROM_END
5541 
5542 
5543 ROM_START( batriderj )
5544 	ROM_REGION( 0x200000, "maincpu", 0 )            /* Main 68k code */
5545 	ROM_LOAD16_BYTE( "prg0b.u22", 0x000000, 0x080000, CRC(4f3fc729) SHA1(b32d51c254741b82171a86c271679522a7aefd34) )
5546 	ROM_LOAD16_BYTE( "prg1b.u23", 0x000001, 0x080000, CRC(8e70b492) SHA1(f84f2039826ae815afb058d71c1dbd190f9d524d) )
5547 	ROM_LOAD16_BYTE( "prg2.u21" , 0x100000, 0x080000, CRC(bdaa5fbf) SHA1(abd72ac633c0c8e7b4b1d7902c0d6e014ba995fe) )
5548 	ROM_LOAD16_BYTE( "prg3.u24" , 0x100001, 0x080000, CRC(7aa9f941) SHA1(99bdbad7a96d461073b06a53c50fc57c2fd6fc6d) )
5549 
5550 	ROM_REGION( 0x40000, "audiocpu", 0 )            /* Sound Z80 code + bank */
5551 	ROM_LOAD( "snd.u77", 0x00000, 0x40000, CRC(56682696) SHA1(a372450d9a6d535123dfc31d8116074b168ab646) )
5552 
5553 	ROM_REGION( 0x1000000, "gp9001_0", 0 )
5554 	ROM_LOAD( "rom-1.bin", 0x000000, 0x400000, CRC(0df69ca2) SHA1(49670347ebd7e1067ff988cf842b275b7ee7b5f7) )
5555 	ROM_LOAD( "rom-3.bin", 0x400000, 0x400000, CRC(60167d38) SHA1(fd2429808c59ef51fd5f5db84ea89a8dc504186e) )
5556 	ROM_LOAD( "rom-2.bin", 0x800000, 0x400000, CRC(1bfea593) SHA1(ce06dc3097ae56b0df56d104bbf7efc9b5d968d4) )
5557 	ROM_LOAD( "rom-4.bin", 0xc00000, 0x400000, CRC(bee03c94) SHA1(5bc1e6769c42857c03456426b502fcb86a114f19) )
5558 
5559 	ROM_REGION( 0x100000, "oki1", 0 )       /* ADPCM Samples 1 */
5560 	ROM_LOAD( "rom-5.bin", 0x000000, 0x100000, CRC(4274daf6) SHA1(85557b4707d529e5914f03c7a856864f5c24950e) )
5561 
5562 	ROM_REGION( 0x100000, "oki2", 0 )       /* ADPCM Samples 2 */
5563 	ROM_LOAD( "rom-6.bin", 0x000000, 0x100000, CRC(2a1c2426) SHA1(8abc3688ffc5ebb94b8d5118d4fa0908f07fe791) )
5564 ROM_END
5565 
5566 
5567 ROM_START( batriderk )
5568 	ROM_REGION( 0x200000, "maincpu", 0 )            /* Main 68k code */
5569 	ROM_LOAD16_BYTE( "prg0_korea.u22", 0x000000, 0x080000, CRC(d9d8c907) SHA1(69c197f2a41f288913f042de9eb8274c0df3ac27) )
5570 	ROM_LOAD16_BYTE( "prg1b.u23", 0x000001, 0x080000, CRC(8e70b492) SHA1(f84f2039826ae815afb058d71c1dbd190f9d524d) )
5571 	ROM_LOAD16_BYTE( "prg2.u21" , 0x100000, 0x080000, CRC(bdaa5fbf) SHA1(abd72ac633c0c8e7b4b1d7902c0d6e014ba995fe) )
5572 	ROM_LOAD16_BYTE( "prg3.u24" , 0x100001, 0x080000, CRC(7aa9f941) SHA1(99bdbad7a96d461073b06a53c50fc57c2fd6fc6d) )
5573 
5574 	ROM_REGION( 0x40000, "audiocpu", 0 )            /* Sound Z80 code + bank */
5575 	ROM_LOAD( "snd.u77", 0x00000, 0x40000, CRC(56682696) SHA1(a372450d9a6d535123dfc31d8116074b168ab646) )
5576 
5577 	ROM_REGION( 0x1000000, "gp9001_0", 0 )
5578 	ROM_LOAD( "rom-1.bin", 0x000000, 0x400000, CRC(0df69ca2) SHA1(49670347ebd7e1067ff988cf842b275b7ee7b5f7) )
5579 	ROM_LOAD( "rom-3.bin", 0x400000, 0x400000, CRC(60167d38) SHA1(fd2429808c59ef51fd5f5db84ea89a8dc504186e) )
5580 	ROM_LOAD( "rom-2.bin", 0x800000, 0x400000, CRC(1bfea593) SHA1(ce06dc3097ae56b0df56d104bbf7efc9b5d968d4) )
5581 	ROM_LOAD( "rom-4.bin", 0xc00000, 0x400000, CRC(bee03c94) SHA1(5bc1e6769c42857c03456426b502fcb86a114f19) )
5582 
5583 	ROM_REGION( 0x100000, "oki1", 0 )       /* ADPCM Samples 1 */
5584 	ROM_LOAD( "rom-5.bin", 0x000000, 0x100000, CRC(4274daf6) SHA1(85557b4707d529e5914f03c7a856864f5c24950e) )
5585 
5586 	ROM_REGION( 0x100000, "oki2", 0 )       /* ADPCM Samples 2 */
5587 	ROM_LOAD( "rom-6.bin", 0x000000, 0x100000, CRC(2a1c2426) SHA1(8abc3688ffc5ebb94b8d5118d4fa0908f07fe791) )
5588 ROM_END
5589 
5590 /* older version, might have only been released in Japan, Hong Kong and Taiwan? */
5591 ROM_START( batriderja )
5592 	ROM_REGION( 0x200000, "maincpu", 0 )            /* Main 68k code */
5593 	ROM_LOAD16_BYTE( "prg0.bin", 0x000000, 0x080000, CRC(f93ea27c) SHA1(41023c2ee1efd70b5aa9c70e1ddd9e5c3d51d68a) )
5594 	ROM_LOAD16_BYTE( "prg1.u23", 0x000001, 0x080000, CRC(8ae7f592) SHA1(8a20ebf85eca621f578d2302c3a3988647b077a7) )
5595 	ROM_LOAD16_BYTE( "prg2.u21", 0x100000, 0x080000, CRC(bdaa5fbf) SHA1(abd72ac633c0c8e7b4b1d7902c0d6e014ba995fe) )
5596 	ROM_LOAD16_BYTE( "prg3.u24", 0x100001, 0x080000, CRC(7aa9f941) SHA1(99bdbad7a96d461073b06a53c50fc57c2fd6fc6d) )
5597 
5598 	ROM_REGION( 0x40000, "audiocpu", 0 )            /* Sound Z80 code + bank */
5599 	ROM_LOAD( "snd.u77", 0x00000, 0x40000, CRC(56682696) SHA1(a372450d9a6d535123dfc31d8116074b168ab646) )
5600 
5601 	ROM_REGION( 0x1000000, "gp9001_0", 0 )
5602 	ROM_LOAD( "rom-1.bin", 0x000000, 0x400000, CRC(0df69ca2) SHA1(49670347ebd7e1067ff988cf842b275b7ee7b5f7) )
5603 	ROM_LOAD( "rom-3.bin", 0x400000, 0x400000, CRC(60167d38) SHA1(fd2429808c59ef51fd5f5db84ea89a8dc504186e) )
5604 	ROM_LOAD( "rom-2.bin", 0x800000, 0x400000, CRC(1bfea593) SHA1(ce06dc3097ae56b0df56d104bbf7efc9b5d968d4) )
5605 	ROM_LOAD( "rom-4.bin", 0xc00000, 0x400000, CRC(bee03c94) SHA1(5bc1e6769c42857c03456426b502fcb86a114f19) )
5606 
5607 	ROM_REGION( 0x100000, "oki1", 0 )       /* ADPCM Samples 1 */
5608 	ROM_LOAD( "rom-5.bin", 0x000000, 0x100000, CRC(4274daf6) SHA1(85557b4707d529e5914f03c7a856864f5c24950e) )
5609 
5610 	ROM_REGION( 0x100000, "oki2", 0 )       /* ADPCM Samples 2 */
5611 	ROM_LOAD( "rom-6.bin", 0x000000, 0x100000, CRC(2a1c2426) SHA1(8abc3688ffc5ebb94b8d5118d4fa0908f07fe791) )
5612 ROM_END
5613 
5614 
5615 ROM_START( batriderhk )
5616 	ROM_REGION( 0x200000, "maincpu", 0 )            /* Main 68k code */
5617 	ROM_LOAD16_BYTE( "prg0.u22", 0x000000, 0x080000, CRC(00afbb7c) SHA1(a4b6331e0fcab7d0c43fc43adb701f1248247b41) )
5618 	ROM_LOAD16_BYTE( "prg1.u23", 0x000001, 0x080000, CRC(8ae7f592) SHA1(8a20ebf85eca621f578d2302c3a3988647b077a7) )
5619 	ROM_LOAD16_BYTE( "prg2.u21", 0x100000, 0x080000, CRC(bdaa5fbf) SHA1(abd72ac633c0c8e7b4b1d7902c0d6e014ba995fe) )
5620 	ROM_LOAD16_BYTE( "prg3.u24", 0x100001, 0x080000, CRC(7aa9f941) SHA1(99bdbad7a96d461073b06a53c50fc57c2fd6fc6d) )
5621 
5622 	ROM_REGION( 0x40000, "audiocpu", 0 )            /* Sound Z80 code + bank */
5623 	ROM_LOAD( "snd.u77", 0x00000, 0x40000, CRC(56682696) SHA1(a372450d9a6d535123dfc31d8116074b168ab646) )
5624 
5625 	ROM_REGION( 0x1000000, "gp9001_0", 0 )
5626 	ROM_LOAD( "rom-1.bin", 0x000000, 0x400000, CRC(0df69ca2) SHA1(49670347ebd7e1067ff988cf842b275b7ee7b5f7) )
5627 	ROM_LOAD( "rom-3.bin", 0x400000, 0x400000, CRC(60167d38) SHA1(fd2429808c59ef51fd5f5db84ea89a8dc504186e) )
5628 	ROM_LOAD( "rom-2.bin", 0x800000, 0x400000, CRC(1bfea593) SHA1(ce06dc3097ae56b0df56d104bbf7efc9b5d968d4) )
5629 	ROM_LOAD( "rom-4.bin", 0xc00000, 0x400000, CRC(bee03c94) SHA1(5bc1e6769c42857c03456426b502fcb86a114f19) )
5630 
5631 	ROM_REGION( 0x100000, "oki1", 0 )       /* ADPCM Samples 1 */
5632 	ROM_LOAD( "rom-5.bin", 0x000000, 0x100000, CRC(4274daf6) SHA1(85557b4707d529e5914f03c7a856864f5c24950e) )
5633 
5634 	ROM_REGION( 0x100000, "oki2", 0 )       /* ADPCM Samples 2 */
5635 	ROM_LOAD( "rom-6.bin", 0x000000, 0x100000, CRC(2a1c2426) SHA1(8abc3688ffc5ebb94b8d5118d4fa0908f07fe791) )
5636 ROM_END
5637 
5638 
5639 ROM_START( batridert )
5640 	ROM_REGION( 0x200000, "maincpu", 0 )            /* Main 68k code */
5641 	ROM_LOAD16_BYTE( "u22.bin",  0x000000, 0x080000, CRC(b135820e) SHA1(c222887d18a0a3ea0fcc973b95b29d69c86f7ec3) )
5642 	ROM_LOAD16_BYTE( "prg1.u23", 0x000001, 0x080000, CRC(8ae7f592) SHA1(8a20ebf85eca621f578d2302c3a3988647b077a7) )
5643 	ROM_LOAD16_BYTE( "prg2.u21", 0x100000, 0x080000, CRC(bdaa5fbf) SHA1(abd72ac633c0c8e7b4b1d7902c0d6e014ba995fe) )
5644 	ROM_LOAD16_BYTE( "prg3.u24", 0x100001, 0x080000, CRC(7aa9f941) SHA1(99bdbad7a96d461073b06a53c50fc57c2fd6fc6d) )
5645 
5646 	ROM_REGION( 0x40000, "audiocpu", 0 )            /* Sound Z80 code + bank */
5647 	ROM_LOAD( "snd.u77", 0x00000, 0x40000, CRC(56682696) SHA1(a372450d9a6d535123dfc31d8116074b168ab646) )
5648 
5649 	ROM_REGION( 0x1000000, "gp9001_0", 0 )
5650 	ROM_LOAD( "rom-1.bin", 0x000000, 0x400000, CRC(0df69ca2) SHA1(49670347ebd7e1067ff988cf842b275b7ee7b5f7) )
5651 	ROM_LOAD( "rom-3.bin", 0x400000, 0x400000, CRC(60167d38) SHA1(fd2429808c59ef51fd5f5db84ea89a8dc504186e) )
5652 	ROM_LOAD( "rom-2.bin", 0x800000, 0x400000, CRC(1bfea593) SHA1(ce06dc3097ae56b0df56d104bbf7efc9b5d968d4) )
5653 	ROM_LOAD( "rom-4.bin", 0xc00000, 0x400000, CRC(bee03c94) SHA1(5bc1e6769c42857c03456426b502fcb86a114f19) )
5654 
5655 	ROM_REGION( 0x100000, "oki1", 0 )       /* ADPCM Samples 1 */
5656 	ROM_LOAD( "rom-5.bin", 0x000000, 0x100000, CRC(4274daf6) SHA1(85557b4707d529e5914f03c7a856864f5c24950e) )
5657 
5658 	ROM_REGION( 0x100000, "oki2", 0 )       /* ADPCM Samples 2 */
5659 	ROM_LOAD( "rom-6.bin", 0x000000, 0x100000, CRC(2a1c2426) SHA1(8abc3688ffc5ebb94b8d5118d4fa0908f07fe791) )
5660 ROM_END
5661 
5662 
5663 
5664 /*
5665 Battle Bakraid
5666 Raizing/8ing, 1999
5667 
5668 PCB Layout
5669 ----------
5670 
5671 ET68-V99
5672 |-----------------------------------------------------|
5673 |TA8201  16.93MHz     ROM-6                   6264    |
5674 |  YAC516                                             |
5675 |       YMZ280B-F     ROM-7               SND_U0720   |
5676 |                                                     |
5677 | VOL                 ROM-8                 Z80       |
5678 |                                                     |
5679 |                   341256                            |
5680 |                                               93C66 |
5681 |                   341256               XILINX       |
5682 |J                                       XC95108      |
5683 |A                  27MHz     32MHz                   |
5684 |M                                                    |
5685 |M          DIPSW1                      341256  341256|
5686 |A                  XILINX    XILINK                  |
5687 |           DIPSW2  XC95144   XC95108   341256  341256|
5688 |                                                     |
5689 |           DIPSW3                                    |
5690 |                                MACH211    PRG1_U023 |
5691 | TEST_SW            68000                            |
5692 |                                           PRG0_U022 |
5693 |                                                     |
5694 |                                           PRG3_U024 |
5695 |                             L7A0498                 |
5696 |                             GP9001        PRG2_U021 |
5697 | ROM-0       ROM-1           (QFP208)                |
5698 |                                                     |
5699 |                               6264       MN414260   |
5700 | ROM-2       ROM-3                                   |
5701 |                               6264       MN414260   |
5702 |-----------------------------------------------------|
5703 Notes:
5704       ROM-0 to ROM-3 - 32M DIP42
5705       ROM-6 to ROM-8 - 32M DIP42 Byte Mode
5706       68000 clock - 16.000MHz (32/2)
5707       Z80 clock - 5.33333MHz (32/6)
5708       VSync - 60Hz
5709       HSync - 15.39kHz
5710 */
5711 
5712 
5713 
5714 ROM_START( bbakraid )
5715 	ROM_REGION( 0x200000, "maincpu", 0 )            /* Main 68k code */
5716 	ROM_LOAD16_BYTE( "prg0u022_usa.bin", 0x000000, 0x080000, CRC(95fb2ffd) SHA1(c7f502f3945249573b66226e8bacc6a9bc230693) )
5717 	ROM_LOAD16_BYTE( "prg1u023.new", 0x000001, 0x080000, CRC(4ae9aa64) SHA1(45fdf72141c4c9f24a38d4218c65874799b9c868) )
5718 	ROM_LOAD16_BYTE( "prg2u021.bin", 0x100000, 0x080000, CRC(ffba8656) SHA1(6526bb65fad3384de3f301a7d1095cbf03757433) )
5719 	ROM_LOAD16_BYTE( "prg3u024.bin", 0x100001, 0x080000, CRC(834b8ad6) SHA1(0dd6223bb0749819ad29811eeb04fd08d937abb0) )
5720 
5721 	ROM_REGION( 0x20000, "audiocpu", 0 )            /* Sound Z80 code */
5722 	ROM_LOAD( "sndu0720.bin", 0x00000, 0x20000, CRC(e62ab246) SHA1(00d23689dd423ecd4024c58b5903d16e890f1dff) )
5723 
5724 	ROM_REGION( 0x1000000, "gp9001_0", 0 )
5725 	ROM_LOAD( "gfxu0510.bin", 0x000000, 0x400000, CRC(9cca3446) SHA1(1123f8b8bfbe59a2c572cdf61f1ad27ff37f0f0d) )
5726 	ROM_LOAD( "gfxu0512.bin", 0x400000, 0x400000, CRC(a2a281d5) SHA1(d9a6623f9433ad682223f9780c26cd1523ebc5c5) )
5727 	ROM_LOAD( "gfxu0511.bin", 0x800000, 0x400000, CRC(e16472c0) SHA1(6068d679a8b3b65e05acd58a7ce9ead90177049f) )
5728 	ROM_LOAD( "gfxu0513.bin", 0xc00000, 0x400000, CRC(8bb635a0) SHA1(9064f1a2d8bb88ddbca702fb8556d0dfe6a5cadc) )
5729 
5730 	ROM_REGION( 0x0c00000, "ymz", 0 )       /* YMZ280B Samples */
5731 	ROM_LOAD( "rom6.829", 0x000000, 0x400000, CRC(8848b4a0) SHA1(e0dce136c5d5a4c1a92b863e57848cd5927d06f1) )
5732 	ROM_LOAD( "rom7.830", 0x400000, 0x400000, CRC(d6224267) SHA1(5c9b7b13effbef9f707811f84bfe50ca85e605e3) )
5733 	ROM_LOAD( "rom8.831", 0x800000, 0x400000, CRC(a101dfb0) SHA1(4b729b0d562e09df35438e9e6b457b8de2690a6e) )
5734 
5735 	ROM_REGION( 0x200, "eeprom", 0 )
5736 	ROM_LOAD( "eeprom-bbakraid-new.bin", 0x000, 0x200, CRC(35c9275a) SHA1(1282034adf3c7a24545fd273729867058dc93027) )
5737 ROM_END
5738 
5739 
5740 ROM_START( bbakraidc )
5741 	ROM_REGION( 0x200000, "maincpu", 0 )            /* Main 68k code */
5742 	ROM_LOAD16_BYTE( "prg0u022_china.bin", 0x000000, 0x080000, CRC(760be084) SHA1(096c8a2336492d7370ae25f3385faebf6e9c3eca) )
5743 	ROM_LOAD16_BYTE( "prg1u023.new", 0x000001, 0x080000, CRC(4ae9aa64) SHA1(45fdf72141c4c9f24a38d4218c65874799b9c868) )
5744 	ROM_LOAD16_BYTE( "prg2u021.bin", 0x100000, 0x080000, CRC(ffba8656) SHA1(6526bb65fad3384de3f301a7d1095cbf03757433) )
5745 	ROM_LOAD16_BYTE( "prg3u024.bin", 0x100001, 0x080000, CRC(834b8ad6) SHA1(0dd6223bb0749819ad29811eeb04fd08d937abb0) )
5746 
5747 	ROM_REGION( 0x20000, "audiocpu", 0 )            /* Sound Z80 code */
5748 	ROM_LOAD( "sndu0720.bin", 0x00000, 0x20000, CRC(e62ab246) SHA1(00d23689dd423ecd4024c58b5903d16e890f1dff) )
5749 
5750 	ROM_REGION( 0x1000000, "gp9001_0", 0 )
5751 	ROM_LOAD( "gfxu0510.bin", 0x000000, 0x400000, CRC(9cca3446) SHA1(1123f8b8bfbe59a2c572cdf61f1ad27ff37f0f0d) )
5752 	ROM_LOAD( "gfxu0512.bin", 0x400000, 0x400000, CRC(a2a281d5) SHA1(d9a6623f9433ad682223f9780c26cd1523ebc5c5) )
5753 	ROM_LOAD( "gfxu0511.bin", 0x800000, 0x400000, CRC(e16472c0) SHA1(6068d679a8b3b65e05acd58a7ce9ead90177049f) )
5754 	ROM_LOAD( "gfxu0513.bin", 0xc00000, 0x400000, CRC(8bb635a0) SHA1(9064f1a2d8bb88ddbca702fb8556d0dfe6a5cadc) )
5755 
5756 	ROM_REGION( 0x0c00000, "ymz", 0 )       /* YMZ280B Samples */
5757 	ROM_LOAD( "rom6.829", 0x000000, 0x400000, CRC(8848b4a0) SHA1(e0dce136c5d5a4c1a92b863e57848cd5927d06f1) )
5758 	ROM_LOAD( "rom7.830", 0x400000, 0x400000, CRC(d6224267) SHA1(5c9b7b13effbef9f707811f84bfe50ca85e605e3) )
5759 	ROM_LOAD( "rom8.831", 0x800000, 0x400000, CRC(a101dfb0) SHA1(4b729b0d562e09df35438e9e6b457b8de2690a6e) )
5760 
5761 	ROM_REGION( 0x200, "eeprom", 0 )
5762 	ROM_LOAD( "eeprom-bbakraid-new.bin", 0x000, 0x200, CRC(35c9275a) SHA1(1282034adf3c7a24545fd273729867058dc93027) )
5763 ROM_END
5764 
5765 
5766 ROM_START( bbakraidj )
5767 	ROM_REGION( 0x200000, "maincpu", 0 )            /* Main 68k code */
5768 	ROM_LOAD16_BYTE( "prg0u022.new", 0x000000, 0x080000, CRC(fa8d38d3) SHA1(aba91d87a8a62d3fe1139b4437b16e2f844264ad) )
5769 	ROM_LOAD16_BYTE( "prg1u023.new", 0x000001, 0x080000, CRC(4ae9aa64) SHA1(45fdf72141c4c9f24a38d4218c65874799b9c868) )
5770 	ROM_LOAD16_BYTE( "prg2u021.bin", 0x100000, 0x080000, CRC(ffba8656) SHA1(6526bb65fad3384de3f301a7d1095cbf03757433) )
5771 	ROM_LOAD16_BYTE( "prg3u024.bin", 0x100001, 0x080000, CRC(834b8ad6) SHA1(0dd6223bb0749819ad29811eeb04fd08d937abb0) )
5772 
5773 	ROM_REGION( 0x20000, "audiocpu", 0 )            /* Sound Z80 code */
5774 	ROM_LOAD( "sndu0720.bin", 0x00000, 0x20000, CRC(e62ab246) SHA1(00d23689dd423ecd4024c58b5903d16e890f1dff) )
5775 
5776 	ROM_REGION( 0x1000000, "gp9001_0", 0 )
5777 	ROM_LOAD( "gfxu0510.bin", 0x000000, 0x400000, CRC(9cca3446) SHA1(1123f8b8bfbe59a2c572cdf61f1ad27ff37f0f0d) )
5778 	ROM_LOAD( "gfxu0512.bin", 0x400000, 0x400000, CRC(a2a281d5) SHA1(d9a6623f9433ad682223f9780c26cd1523ebc5c5) )
5779 	ROM_LOAD( "gfxu0511.bin", 0x800000, 0x400000, CRC(e16472c0) SHA1(6068d679a8b3b65e05acd58a7ce9ead90177049f) )
5780 	ROM_LOAD( "gfxu0513.bin", 0xc00000, 0x400000, CRC(8bb635a0) SHA1(9064f1a2d8bb88ddbca702fb8556d0dfe6a5cadc) )
5781 
5782 	ROM_REGION( 0x0c00000, "ymz", 0 )       /* YMZ280B Samples */
5783 	ROM_LOAD( "rom6.829", 0x000000, 0x400000, CRC(8848b4a0) SHA1(e0dce136c5d5a4c1a92b863e57848cd5927d06f1) )
5784 	ROM_LOAD( "rom7.830", 0x400000, 0x400000, CRC(d6224267) SHA1(5c9b7b13effbef9f707811f84bfe50ca85e605e3) )
5785 	ROM_LOAD( "rom8.831", 0x800000, 0x400000, CRC(a101dfb0) SHA1(4b729b0d562e09df35438e9e6b457b8de2690a6e) )
5786 
5787 	ROM_REGION( 0x200, "eeprom", 0 )
5788 	ROM_LOAD( "eeprom-bbakraid-new.bin", 0x000, 0x200, CRC(35c9275a) SHA1(1282034adf3c7a24545fd273729867058dc93027) )
5789 ROM_END
5790 
5791 
5792 ROM_START( bbakraidja )
5793 	ROM_REGION( 0x200000, "maincpu", 0 )            /* Main 68k code */
5794 	ROM_LOAD16_BYTE( "prg0u022.bin", 0x000000, 0x080000, CRC(0dd59512) SHA1(c6a4e6aa49c6ac3b04ae62a0a4cc8084ae048381) )
5795 	ROM_LOAD16_BYTE( "prg1u023.bin", 0x000001, 0x080000, CRC(fecde223) SHA1(eb5ac0eda49b4b0f3d25d8a8bb356e77a453d3a7) )
5796 	ROM_LOAD16_BYTE( "prg2u021.bin", 0x100000, 0x080000, CRC(ffba8656) SHA1(6526bb65fad3384de3f301a7d1095cbf03757433) )
5797 	ROM_LOAD16_BYTE( "prg3u024.bin", 0x100001, 0x080000, CRC(834b8ad6) SHA1(0dd6223bb0749819ad29811eeb04fd08d937abb0) )
5798 
5799 	ROM_REGION( 0x20000, "audiocpu", 0 )            /* Sound Z80 code */
5800 	ROM_LOAD( "sndu0720.bin", 0x00000, 0x20000, CRC(e62ab246) SHA1(00d23689dd423ecd4024c58b5903d16e890f1dff) )
5801 
5802 	ROM_REGION( 0x1000000, "gp9001_0", 0 )
5803 	ROM_LOAD( "gfxu0510.bin", 0x000000, 0x400000, CRC(9cca3446) SHA1(1123f8b8bfbe59a2c572cdf61f1ad27ff37f0f0d) )
5804 	ROM_LOAD( "gfxu0512.bin", 0x400000, 0x400000, CRC(a2a281d5) SHA1(d9a6623f9433ad682223f9780c26cd1523ebc5c5) )
5805 	ROM_LOAD( "gfxu0511.bin", 0x800000, 0x400000, CRC(e16472c0) SHA1(6068d679a8b3b65e05acd58a7ce9ead90177049f) )
5806 	ROM_LOAD( "gfxu0513.bin", 0xc00000, 0x400000, CRC(8bb635a0) SHA1(9064f1a2d8bb88ddbca702fb8556d0dfe6a5cadc) )
5807 
5808 	ROM_REGION( 0x0c00000, "ymz", 0 )       /* YMZ280B Samples */
5809 	ROM_LOAD( "rom6.829", 0x000000, 0x400000, CRC(8848b4a0) SHA1(e0dce136c5d5a4c1a92b863e57848cd5927d06f1) )
5810 	ROM_LOAD( "rom7.830", 0x400000, 0x400000, CRC(d6224267) SHA1(5c9b7b13effbef9f707811f84bfe50ca85e605e3) )
5811 	ROM_LOAD( "rom8.831", 0x800000, 0x400000, CRC(a101dfb0) SHA1(4b729b0d562e09df35438e9e6b457b8de2690a6e) )
5812 
5813 	ROM_REGION( 0x200, "eeprom", 0 )
5814 	ROM_LOAD( "eeprom-bbakraid.bin", 0x000, 0x200, CRC(7f97d347) SHA1(3096c399019924dbb7d6673483f6a011f89467c6) )
5815 ROM_END
5816 
5817 
5818 // dedicated PCB marked Pro Bowl
5819 ROM_START( nprobowl )
5820 	ROM_REGION( 0x200000, "maincpu", 0 )
5821 	ROM_LOAD16_BYTE( "newprobowl-prg0-u021", 0x000000, 0x080000, CRC(3a57f122) SHA1(cc361c295f23bc0479ba49eb15de2ec6ca535a56) ) // 11xxxxxxxxxxxxxxxxx = 0xFF
5822 	ROM_LOAD16_BYTE( "newprobowl-prg1-u024", 0x000001, 0x080000, CRC(9e9bb58a) SHA1(3d2159bde418dee5d89e3df9a248b4b1989e6ee9) ) // 11xxxxxxxxxxxxxxxxx = 0xFF
5823 
5824 	ROM_REGION( 0x200000, "gp9001_0", 0 )
5825 	ROM_LOAD16_BYTE( "newprobowl-chr0-u0518", 0x000000, 0x80000, CRC(0736cccd) SHA1(5a4b691be1df697fef3847456c0f4bb3466c403f) )
5826 	ROM_LOAD16_BYTE( "newprobowl-chr1-u0519", 0x000001, 0x80000, CRC(6700a9bf) SHA1(12a72aa0b91119fbbed994aec702a6869af6f287) )
5827 	ROM_LOAD16_BYTE( "newprobowl-chr2-u0520", 0x100000, 0x80000, CRC(e5f6d0b6) SHA1(6e1a4792698be4b478118e8c82edb0cf3e2286f2) )
5828 	ROM_LOAD16_BYTE( "newprobowl-chr3-u0521", 0x100001, 0x80000, CRC(00c21951) SHA1(922abde172fb82b504dce41b95227740f16208a7) )
5829 
5830 	ROM_REGION( 0x100000, "oki1", 0 )
5831 	ROM_LOAD( "newprobowl-adpcm0-u0834", 0x00000, 0x80000, CRC(3b40b161) SHA1(ff8ba38dd7e0dadbf72810470e3d9afb1cd983d2) )
5832 	ROM_LOAD( "newprobowl-adpcm1-u0835", 0x80000, 0x80000, CRC(8c191e60) SHA1(f81c2849ffc553d921fc680cd50c2997b834c44a) )
5833 ROM_END
5834 
5835 
5836 // The following is in order of Toaplan Board/game numbers
5837 // See list at top of file
5838 
5839 //  ( YEAR  NAME         PARENT    MACHINE       INPUT       STATE           INIT           MONITOR COMPANY            FULLNAME                     FLAGS )
5840 GAME( 1991, tekipaki,    0,        tekipaki,     tekipaki,   toaplan2_state, empty_init,    ROT0,   "Toaplan",         "Teki Paki",                 MACHINE_SUPPORTS_SAVE )
5841 GAME( 1991, tekipakit,   tekipaki, tekipaki,     tekipaki,   toaplan2_state, empty_init,    ROT0,   "Toaplan",         "Teki Paki (location test)", MACHINE_SUPPORTS_SAVE )
5842 
5843 GAME( 1991, ghox,        0,        ghox,         ghox,       toaplan2_state, empty_init,    ROT270, "Toaplan",         "Ghox (spinner)",            MACHINE_SUPPORTS_SAVE )
5844 GAME( 1991, ghoxj,       ghox,     ghox,         ghox,       toaplan2_state, empty_init,    ROT270, "Toaplan",         "Ghox (joystick)",           MACHINE_SUPPORTS_SAVE )
5845 GAME( 1991, ghoxjo,      ghox,     ghox,         ghoxjo,     toaplan2_state, empty_init,    ROT270, "Toaplan",         "Ghox (joystick, older)",    MACHINE_SUPPORTS_SAVE )
5846 
5847 GAME( 1992, dogyuun,     0,        dogyuun,      dogyuun,    toaplan2_state, init_dogyuun,  ROT270, "Toaplan",         "Dogyuun",                   MACHINE_SUPPORTS_SAVE )
5848 GAME( 1992, dogyuuna,    dogyuun,  dogyuun,      dogyuuna,   toaplan2_state, init_dogyuun,  ROT270, "Toaplan",         "Dogyuun (older set)",       MACHINE_SUPPORTS_SAVE )
5849 GAME( 1992, dogyuunt,    dogyuun,  dogyuun,      dogyuunt,   toaplan2_state, init_dogyuun,  ROT270, "Toaplan",         "Dogyuun (location test)",   MACHINE_SUPPORTS_SAVE )
5850 
5851 GAME( 1993, kbash,       0,        kbash,        kbash,      toaplan2_state, empty_init,    ROT0,   "Toaplan / Atari", "Knuckle Bash",              MACHINE_SUPPORTS_SAVE ) // Atari license shown for some regions.
5852 GAME( 1993, kbashk,      kbash,    kbash,        kbashk,     toaplan2_state, empty_init,    ROT0,   "Toaplan / Taito", "Knuckle Bash (Korean PCB)", MACHINE_SUPPORTS_SAVE ) // Japan region has optional Taito license, maybe the original Japan release?
5853 
5854 GAME( 1999, kbash2,      0,        kbash2,       kbash2,     toaplan2_state, empty_init,    ROT0,   "bootleg",         "Knuckle Bash 2 (bootleg)",  MACHINE_SUPPORTS_SAVE )
5855 
5856 GAME( 1992, truxton2,    0,        truxton2,     truxton2,   toaplan2_state, empty_init,    ROT270, "Toaplan",         "Truxton II / Tatsujin Oh",  MACHINE_SUPPORTS_SAVE )
5857 
5858 GAME( 1991, pipibibs,    0,        pipibibs,     pipibibs,   toaplan2_state, empty_init,    ROT0,   "Toaplan",         "Pipi & Bibis / Whoopee!! (Z80 sound cpu, set 1)", MACHINE_SUPPORTS_SAVE )
5859 GAME( 1991, pipibibsa,   pipibibs, pipibibs,     pipibibs,   toaplan2_state, empty_init,    ROT0,   "Toaplan",         "Pipi & Bibis / Whoopee!! (Z80 sound cpu, set 2)", MACHINE_SUPPORTS_SAVE )
5860 GAME( 1991, pipibibsp,   pipibibs, pipibibs,     pipibibsp,  toaplan2_state, empty_init,    ROT0,   "Toaplan",         "Pipi & Bibis / Whoopee!! (prototype)",            MACHINE_SUPPORTS_SAVE )
5861 GAME( 1991, whoopee,     pipibibs, tekipaki,     whoopee,    toaplan2_state, empty_init,    ROT0,   "Toaplan",         "Pipi & Bibis / Whoopee!! (Teki Paki hardware)",   MACHINE_SUPPORTS_SAVE ) // original Whoopee!! boards have a HD647180 instead of Z80
5862 
5863 GAME( 1991, pipibibsbl,  pipibibs, pipibibsbl,   pipibibsbl, toaplan2_state, init_pipibibsbl, ROT0, "bootleg (Ryouta Kikaku)", "Pipi & Bibis / Whoopee!! (Ryouta Kikaku bootleg, encrypted)", MACHINE_SUPPORTS_SAVE )
5864 GAME( 1991, pipibibsbl2, pipibibs, pipibibsbl,   pipibibsbl, toaplan2_state, empty_init,    ROT0,   "bootleg",                 "Pipi & Bibis / Whoopee!! (bootleg, decrypted)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // different memory map, not scrambled
5865 GAME( 1991, pipibibsbl3, pipibibs, pipibibsbl,   pipibibsbl, toaplan2_state, empty_init,    ROT0,   "bootleg (Ryouta Kikaku)", "Pipi & Bibis / Whoopee!! (Ryouta Kikaku bootleg, decrypted)", MACHINE_SUPPORTS_SAVE )
5866 
5867 GAME( 1993, enmadaio,    0,        enmadaio,     enmadaio,   toaplan2_state, init_enmadaio, ROT0,   "Toaplan / Taito",  "Enma Daio (Japan)", 0 ) // TP-031
5868 
5869 // region is in eeprom (and also requires correct return value from a v25 mapped address??)
5870 GAME( 1992, fixeight,    0,        fixeight,   fixeight,   toaplan2_state, init_fixeight,   ROT270, "Toaplan",                 "FixEight (Europe)",                         MACHINE_SUPPORTS_SAVE )
5871 GAME( 1992, fixeightk,   fixeight, fixeight,   fixeight,   toaplan2_state, init_fixeight,   ROT270, "Toaplan",                 "FixEight (Korea)",                          MACHINE_SUPPORTS_SAVE )
5872 GAME( 1992, fixeighth,   fixeight, fixeight,   fixeight,   toaplan2_state, init_fixeight,   ROT270, "Toaplan",                 "FixEight (Hong Kong)",                      MACHINE_SUPPORTS_SAVE )
5873 GAME( 1992, fixeighttw,  fixeight, fixeight,   fixeight,   toaplan2_state, init_fixeight,   ROT270, "Toaplan",                 "FixEight (Taiwan)",                         MACHINE_SUPPORTS_SAVE )
5874 GAME( 1992, fixeighta,   fixeight, fixeight,   fixeight,   toaplan2_state, init_fixeight,   ROT270, "Toaplan",                 "FixEight (Southeast Asia)",                 MACHINE_SUPPORTS_SAVE )
5875 GAME( 1992, fixeightu,   fixeight, fixeight,   fixeight,   toaplan2_state, init_fixeight,   ROT270, "Toaplan",                 "FixEight (USA)",                            MACHINE_SUPPORTS_SAVE )
5876 GAME( 1992, fixeightj,   fixeight, fixeight,   fixeight,   toaplan2_state, init_fixeight,   ROT270, "Toaplan",                 "FixEight (Japan)",                          MACHINE_SUPPORTS_SAVE )
5877 GAME( 1992, fixeightt,   fixeight, fixeight,   fixeight,   toaplan2_state, init_fixeight,   ROT270, "Toaplan (Taito license)", "FixEight (Europe, Taito license)",          MACHINE_SUPPORTS_SAVE )
5878 GAME( 1992, fixeightkt,  fixeight, fixeight,   fixeight,   toaplan2_state, init_fixeight,   ROT270, "Toaplan (Taito license)", "FixEight (Korea, Taito license)",           MACHINE_SUPPORTS_SAVE )
5879 GAME( 1992, fixeightht,  fixeight, fixeight,   fixeight,   toaplan2_state, init_fixeight,   ROT270, "Toaplan (Taito license)", "FixEight (Hong Kong, Taito license)",       MACHINE_SUPPORTS_SAVE )
5880 GAME( 1992, fixeighttwt, fixeight, fixeight,   fixeight,   toaplan2_state, init_fixeight,   ROT270, "Toaplan (Taito license)", "FixEight (Taiwan, Taito license)",          MACHINE_SUPPORTS_SAVE )
5881 GAME( 1992, fixeightat,  fixeight, fixeight,   fixeight,   toaplan2_state, init_fixeight,   ROT270, "Toaplan (Taito license)", "FixEight (Southeast Asia, Taito license)",  MACHINE_SUPPORTS_SAVE )
5882 GAME( 1992, fixeightut,  fixeight, fixeight,   fixeight,   toaplan2_state, init_fixeight,   ROT270, "Toaplan (Taito license)", "FixEight (USA, Taito license)",             MACHINE_SUPPORTS_SAVE )
5883 GAME( 1992, fixeightjt,  fixeight, fixeight,   fixeight,   toaplan2_state, init_fixeight,   ROT270, "Toaplan (Taito license)", "FixEight (Japan, Taito license)",           MACHINE_SUPPORTS_SAVE )
5884 
5885 GAME( 1992, fixeightbl,  fixeight, fixeightbl, fixeightbl, toaplan2_state, init_fixeightbl, ROT270,"bootleg", "FixEight (Korea, bootleg)", MACHINE_SUPPORTS_SAVE )
5886 
5887 GAME( 1992, grindstm,    0,        vfive,      grindstm,   toaplan2_state, init_vfive,      ROT270, "Toaplan", "Grind Stormer",             MACHINE_SUPPORTS_SAVE )
5888 GAME( 1992, grindstma,   grindstm, vfive,      grindstma,  toaplan2_state, init_vfive,      ROT270, "Toaplan", "Grind Stormer (older set)", MACHINE_SUPPORTS_SAVE )
5889 GAME( 1993, vfive,       grindstm, vfive,      vfive,      toaplan2_state, init_vfive,      ROT270, "Toaplan", "V-Five (Japan)",            MACHINE_SUPPORTS_SAVE )
5890 
5891 GAME( 1993, batsugun,    0,        batsugun,   batsugun,   toaplan2_state, init_dogyuun,    ROT270, "Toaplan", "Batsugun", MACHINE_SUPPORTS_SAVE )
5892 GAME( 1993, batsuguna,   batsugun, batsugun,   batsugun,   toaplan2_state, init_dogyuun,    ROT270, "Toaplan", "Batsugun (older set)", MACHINE_SUPPORTS_SAVE )
5893 GAME( 1993, batsugunb,   batsugun, batsugun,   batsugun,   toaplan2_state, init_dogyuun,    ROT270, "Toaplan", "Batsugun (Korean PCB)", MACHINE_SUPPORTS_SAVE ) // cheap looking PCB (same 'TP-030' numbering as original) but without Mask ROMs.  Still has original customs etc.  Jumpers were set to the Korea Unite Trading license, so likely made in Korea, not a bootleg tho.
5894 GAME( 1993, batsugunsp,  batsugun, batsugun,   batsugun,   toaplan2_state, init_dogyuun,    ROT270, "Toaplan", "Batsugun - Special Version", MACHINE_SUPPORTS_SAVE )
5895 
5896 GAME( 1994, pwrkick,     0,        pwrkick,    pwrkick,    toaplan2_state, empty_init,      ROT0,   "Sunwise",  "Power Kick (Japan)",    0 )
5897 GAME( 1995, othldrby,    0,        othldrby,   othldrby,   toaplan2_state, empty_init,      ROT0,   "Sunwise",  "Othello Derby (Japan)", 0 )
5898 
5899 GAME( 1994, snowbro2,    0,        snowbro2,   snowbro2,   toaplan2_state, empty_init,      ROT0,   "Hanafram",         "Snow Bros. 2 - With New Elves / Otenki Paradise (Hanafram)",       MACHINE_SUPPORTS_SAVE )
5900 GAME( 1994, snowbro2ny,  snowbro2, snowbro2,   snowbro2,   toaplan2_state, empty_init,      ROT0,   "Nyanko",           "Snow Bros. 2 - With New Elves / Otenki Paradise (Nyanko)",         MACHINE_SUPPORTS_SAVE ) // not a bootleg, has original parts (the "GP9001 L7A0498 TOA PLAN" IC and the three mask ROMs)
5901 GAME( 1998, snowbro2b,   snowbro2, snowbro2,   snowbro2,   toaplan2_state, empty_init,      ROT0,   "bootleg",          "Snow Bros. 2 - With New Elves / Otenki Paradise (bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
5902 GAME( 1994, snowbro2b2,  snowbro2, snowbro2,   snowbro2,   toaplan2_state, empty_init,      ROT0,   "bootleg (Q Elec)", "Snow Bros. 2 - With New Elves / Otenki Paradise (bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) // possibly not a bootleg, has some original parts
5903 
5904 GAME( 1993, sstriker,    0,        mahoudai,   sstriker,   toaplan2_state, empty_init,      ROT270, "Raizing",                         "Sorcer Striker",           MACHINE_SUPPORTS_SAVE ) // verified on two different PCBs
5905 GAME( 1993, sstrikerk,   sstriker, mahoudai,   sstrikerk,  toaplan2_state, empty_init,      ROT270, "Raizing (Unite Trading license)", "Sorcer Striker (Korea)" ,  MACHINE_SUPPORTS_SAVE ) // Although the region jumper is functional, it's a Korean board / version
5906 GAME( 1993, mahoudai,    sstriker, mahoudai,   mahoudai,   toaplan2_state, empty_init,      ROT270, "Raizing (Able license)",          "Mahou Daisakusen (Japan)", MACHINE_SUPPORTS_SAVE )
5907 
5908 GAME( 1994, kingdmgp,    0,        shippumd,   kingdmgp,   toaplan2_state, empty_init,      ROT270, "Raizing / Eighting", "Kingdom Grandprix",               MACHINE_SUPPORTS_SAVE ) // from Korean board, missing letters on credits screen but this is correct
5909 GAME( 1994, shippumd,    kingdmgp, shippumd,   shippumd,   toaplan2_state, empty_init,      ROT270, "Raizing / Eighting", "Shippu Mahou Daisakusen (Japan)", MACHINE_SUPPORTS_SAVE )
5910 
5911 GAME( 1996, bgaregga,    0,        bgaregga,   bgaregga,   toaplan2_state, init_bgaregga,   ROT270, "Raizing / Eighting", "Battle Garegga (Europe / USA / Japan / Asia) (Sat Feb 3 1996)", MACHINE_SUPPORTS_SAVE )
5912 GAME( 1996, bgareggat,   bgaregga, bgaregga,   bgaregga,   toaplan2_state, init_bgaregga,   ROT270, "Raizing / Eighting", "Battle Garegga (location test) (Wed Jan 17 1996)", MACHINE_SUPPORTS_SAVE )
5913 GAME( 1996, bgareggahk,  bgaregga, bgaregga,   bgareggahk, toaplan2_state, init_bgaregga,   ROT270, "Raizing / Eighting", "Battle Garegga (Austria / Hong Kong) (Sat Feb 3 1996)", MACHINE_SUPPORTS_SAVE )
5914 GAME( 1996, bgareggatw,  bgaregga, bgaregga,   bgareggatw, toaplan2_state, init_bgaregga,   ROT270, "Raizing / Eighting", "Battle Garegga (Taiwan / Germany) (Thu Feb 1 1996)", MACHINE_SUPPORTS_SAVE )
5915 GAME( 1996, bgaregganv,  bgaregga, bgaregga,   bgareggahk, toaplan2_state, init_bgaregga,   ROT270, "Raizing / Eighting", "Battle Garegga - New Version (Austria / Hong Kong) (Sat Mar 2 1996)" , MACHINE_SUPPORTS_SAVE ) // displays New Version only when set to HK
5916 GAME( 1996, bgareggat2,  bgaregga, bgaregga,   bgaregga,   toaplan2_state, init_bgaregga,   ROT270, "Raizing / Eighting", "Battle Garegga - Type 2 (Europe / USA / Japan / Asia) (Sat Mar 2 1996)" , MACHINE_SUPPORTS_SAVE ) // displays Type 2 only when set to Europe
5917 GAME( 1996, bgareggacn,  bgaregga, bgaregga,   bgareggacn, toaplan2_state, init_bgaregga,   ROT270, "Raizing / Eighting", "Battle Garegga - Type 2 (Denmark / China) (Tue Apr 2 1996)", MACHINE_SUPPORTS_SAVE ) // displays Type 2 only when set to Denmark
5918 GAME( 1996, bgareggabl,  bgaregga, bgareggabl, bgareggacn, toaplan2_state, init_bgaregga,   ROT270, "bootleg",            "1945 Part-2 (Chinese hack of Battle Garegga)", MACHINE_SUPPORTS_SAVE )
5919 GAME( 1996, bgareggabla, bgaregga, bgareggabl, bgareggacn, toaplan2_state, init_bgaregga,   ROT270, "bootleg",            "Lei Shen Zhuan Thunder Deity Biography (Chinese hack of Battle Garegga)", MACHINE_SUPPORTS_SAVE )
5920 
5921 // these are all based on Version B, even if only the Japan version states 'version B'
5922 GAME( 1998, batrider,    0,        batrider,   batrider,   toaplan2_state, init_batrider,   ROT270, "Raizing / Eighting", "Armed Police Batrider (Europe) (Fri Feb 13 1998)",           MACHINE_SUPPORTS_SAVE )
5923 GAME( 1998, batrideru,   batrider, batrider,   batrider,   toaplan2_state, init_batrider,   ROT270, "Raizing / Eighting", "Armed Police Batrider (USA) (Fri Feb 13 1998)",              MACHINE_SUPPORTS_SAVE )
5924 GAME( 1998, batriderc,   batrider, batrider,   batrider,   toaplan2_state, init_batrider,   ROT270, "Raizing / Eighting", "Armed Police Batrider (China) (Fri Feb 13 1998)",            MACHINE_SUPPORTS_SAVE )
5925 GAME( 1998, batriderj,   batrider, batrider,   batriderj,  toaplan2_state, init_batrider,   ROT270, "Raizing / Eighting", "Armed Police Batrider (Japan, B version) (Fri Feb 13 1998)", MACHINE_SUPPORTS_SAVE )
5926 GAME( 1998, batriderk,   batrider, batrider,   batrider,   toaplan2_state, init_batrider,   ROT270, "Raizing / Eighting", "Armed Police Batrider (Korea) (Fri Feb 13 1998)",            MACHINE_SUPPORTS_SAVE )
5927 // older revision of the code
5928 GAME( 1998, batriderja,  batrider, batrider,   batriderj,  toaplan2_state, init_batrider,   ROT270, "Raizing / Eighting", "Armed Police Batrider (Japan, older version) (Mon Dec 22 1997)", MACHINE_SUPPORTS_SAVE )
5929 GAME( 1998, batriderhk,  batrider, batrider,   batrider,   toaplan2_state, init_batrider,   ROT270, "Raizing / Eighting", "Armed Police Batrider (Hong Kong) (Mon Dec 22 1997)",            MACHINE_SUPPORTS_SAVE )
5930 GAME( 1998, batridert,   batrider, batrider,   batrider,   toaplan2_state, init_batrider,   ROT270, "Raizing / Eighting", "Armed Police Batrider (Taiwan) (Mon Dec 22 1997)",               MACHINE_SUPPORTS_SAVE )
5931 
5932 // Battle Bakraid
5933 // the 'unlimited' version is a newer revision of the code
5934 GAME( 1999, bbakraid,    0,        bbakraid,   bbakraid,   toaplan2_state, init_bbakraid,   ROT270, "Eighting", "Battle Bakraid - Unlimited Version (USA) (Tue Jun 8 1999)",   MACHINE_SUPPORTS_SAVE )
5935 GAME( 1999, bbakraidc,   bbakraid, bbakraid,   bbakraid,   toaplan2_state, init_bbakraid,   ROT270, "Eighting", "Battle Bakraid - Unlimited Version (China) (Tue Jun 8 1999)", MACHINE_SUPPORTS_SAVE )
5936 GAME( 1999, bbakraidj,   bbakraid, bbakraid,   bbakraid,   toaplan2_state, init_bbakraid,   ROT270, "Eighting", "Battle Bakraid - Unlimited Version (Japan) (Tue Jun 8 1999)", MACHINE_SUPPORTS_SAVE )
5937 // older revision of the code
5938 GAME( 1999, bbakraidja,  bbakraid, bbakraid,   bbakraid,   toaplan2_state, init_bbakraid,   ROT270, "Eighting", "Battle Bakraid (Japan) (Wed Apr 7 1999)", MACHINE_SUPPORTS_SAVE )
5939 
5940 // dedicated PCB
5941 GAME( 1996, nprobowl,    0,        nprobowl,   nprobowl,   toaplan2_state, empty_init,      ROT0,   "Zuck / Able Corp", "New Pro Bowl", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_MECHANICAL | MACHINE_SUPPORTS_SAVE ) // bad GFXs, no sound banking, controls, etc
5942