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