1 // license:BSD-3-Clause
2 // copyright-holders:David Graves, Brian Troha
3 // thanks-to:Richard Bush
4 /***************************************************************************
5
6 Asuka & Asuka (+ Taito/Visco games on similar hardware)
7 =============
8
9 David Graves, Brian Troha
10
11 Made out of: Rastan driver by Jarek Burczynski
12 MAME Taito F2 driver
13 Raine source - very special thanks to
14 Richard Bush and the Raine Team.
15 two different drivers for Bonze Adventure that were
16 written at the same time by Yochizo and Frotz
17
18 Bonze Adventure (c) 1988 Taito Corporation
19 Asuka & Asuka (c) 1988 Taito Corporation
20 Maze of Flott (c) 1989 Taito Corporation
21 Galmedes (c) 1992 Visco Corporation
22 Earth Joker (c) 1993 Visco Corporation
23 Kokontouzai Eto Monogatari (c) 1994 Visco Corporation
24
25 Main CPU: MC68000 uses irq 5 (4 in bonze, 4&5 in cadash).
26 Sound : Z80 & YM2151 + MSM5205 (YM2610 in bonze)
27 Chips : TC0100SCN + TC0002OBJ + TC0110PCR (+ C-Chip in bonze)
28 (Bryan McPhail: My Bonze uses TC0100SCN + PC0900J (OBJ) + TC0110PCR + TC0140SYT (SND))
29
30 Memory map for Asuka & Asuka
31 ----------------------------
32
33 The other games seem identical but Eto is slightly different.
34
35 0x000000 - 0x0fffff : ROM (not all used for each game)
36 0x100000 - 0x103fff : 16k of RAM
37 0x200000 - 0x20000f : palette generator
38 0x400000 - 0x40000f : input ports and dipswitches
39 0x3a0000 - 0x3a0003 : sprite control
40 0x3e0000 - 0x3e0003 : communication with sound CPU
41 0xc00000 - 0xc2000f : TC0100SCN (see video/tc0100scn.cpp)
42 0xd00000 - 0xd007ff : sprite RAM
43
44
45 Cadashu Info (Malcor)
46 ---------------------
47
48 Main PCB (JAMMA) K1100528A
49 Main processor - 68000 12MHz
50 - HD64180RP8 8MHz (8 bit processor, dual channel DMAC,
51 memory mapped I/O, used for multigame link)
52 Misc custom ICs including three PQFPs, one PGA, and one SIP
53
54
55 From "garmedes.txt"
56 -------------------
57
58 The following cord is written, on PCB: K1100388A J1100169A M6100708A
59 There are the parts that were written as B68 on this PCB.
60 The original title of the game called B68 is unknown.
61 This PCB is the same as the one that is used with EARTH-JOKER.
62 <B68 is the verified Taito ROM id# for Asuka & Asuka - B.Troha>
63
64
65 Use of TC0100SCN
66 ----------------
67
68 Asuka & Asuka: $e6a init code clearing TC0100SCN areas is erroneous.
69 It only clears 1/8 of the BG layers; then it clears too much of the
70 rowscroll areas [0xc000, 0xc400] causing overrun into next 64K block.
71
72 Asuka is one of the early Taito games using the TC0100SCN. (Ninja
73 Warriors was probably the first.) They didn't bother using its FG (text)
74 layer facility, instead placing text in the BG / sprite layers.
75
76 Maze of Flott [(c) one year later] and most other games with the
77 TC0100SCN do use the FG layer for text (Driftout is an exception).
78
79
80 Stephh's notes (based on the game M68000 code and some tests) :
81
82 1) 'bonzeadv', 'jigkmgri' and 'bonzeadvu'
83
84 - Region stored at 0x03fffe.w
85 - Sets :
86 * 'bonzeadv' : region = 0x0002
87 * 'jigkmgri' : region = 0x0000
88 * 'bonzeadvu': region = 0x0001
89 - These 3 games are 100% the same, only region differs !
90 - Coinage relies on the region (code at 0x02d344) :
91 * 0x0000 (Japan) and 0x0001 (US) use TAITO_COINAGE_JAPAN_OLD_LOC()
92 * 0x0002 (World) uses TAITO_COINAGE_WORLD_LOC()
93 - Notice screen only if region = 0x0000
94 - Texts and game name rely on the region :
95 * 0x0000 : most texts in Japanese - game name is "Jigoku Meguri"
96 * other : all texts in English - game name is "Bonze Adventure"
97 - Bonus lives aren't awarded correctly due to bogus code at 0x00961e :
98
99 00961E: 302D 0B7E move.w ($b7e,A5), D0
100 009622: 0240 0018 andi.w #$18, D0
101 009626: E648 lsr.w #3, D0
102
103 Here is what the correct code should be :
104
105 00961E: 302D 0B7E move.w ($b7e,A5), D0
106 009622: 0240 0030 andi.w #$30, D0
107 009626: E848 lsr.w #4, D0
108
109 - DSWB bit 7 was previously used to allow map viewing (C-Chip test ?),
110 but it is now unused due to "bra" instruction at 0x007572
111
112
113 2) 'bonzeadvo'
114
115 - Region stored at 0x03fffe.w
116 - Sets :
117 * 'bonzeadvo' : region = 0x0002
118 - The only difference is that the following code is missing :
119
120 00D218: 08AD 0004 15DE bclr #$4, ($15de,A5)
121
122 So the "crouch" bit wasn't always reset, which may cause you
123 to consume all your magic powers in less than 4 frames !
124 See bonzeadv0107u1ora full report on MAME Testers site
125 - Same other notes as for 'bonzeadv'
126
127
128 3) 'asuka*'
129
130 - No region
131 - BOTH sets use TAITO_COINAGE_JAPAN_OLD_LOC() for coinage,
132 so I wonder if the World version isn't a US version
133 - Additional notice screen in 'asukaj'
134
135
136 4) 'mofflott'
137
138 - Region stored at 0x03fffe.w
139 - Sets :
140 * 'mofflott' : region = 0x0001
141 - Coinage relies on the region (code at 0x0145ec) :
142 * 0x0001 (Japan) and 0x0002 (US ?) use TAITO_COINAGE_JAPAN_OLD_LOC()
143 * 0x0003 (World) uses TAITO_COINAGE_WORLD_LOC()
144 - Notice screen only if region = 0x0001
145
146
147 5) 'cadash*'
148
149 - Region stored at 0x07fffe.w
150 - Sets :
151 * 'cadash' : region = 0x0003
152 * 'cadashj' : region = 0x0001
153 * 'cadashu' : region = 0x0002
154 * 'cadashfr' : region = 0x0003
155 * 'cadashit' : region = 0x0003
156 - These 5 games are 100% the same, only region differs !
157 However each version requires its specific texts
158 - Coinage relies on the region (code at 0x0013d6) :
159 * 0x0001 (Japan) uses TAITO_COINAGE_JAPAN_OLD_LOC()
160 * 0x0002 (US) uses TAITO_COINAGE_US_LOC()
161 * 0x0003 (World) uses TAITO_COINAGE_WORLD_LOC()
162 - Notice screen only if region = 0x0001 or region = 0x0002
163 - FBI logo only if region = 0x0002
164 - I can't tell about the Italian and Japanese versions,
165 but translation in the French version is really poor !
166
167
168 6) 'galmedes'
169
170 - No region (not a Taito game anyway)
171 - Coinage relies on "Coin Mode" Dip Switch (code at 0x0801c0) :
172 * "Mode A" uses TAITO_COINAGE_JAPAN_OLD_LOC()
173 * "Mode B" uses TAITO_COINAGE_WORLD_LOC()
174 - Notice screen
175
176
177 7) 'earthjkr'
178
179 - No region (not a Taito game anyway)
180 - Game uses TAITO_COINAGE_JAPAN_OLD_LOC()
181 - Notice screen only if "Copyright" Dip Switch set to "Visco"
182
183
184 8) 'eto'
185
186 - No region (not a Taito game anyway)
187 - Game uses TAITO_COINAGE_JAPAN_OLD_LOC()
188 - No notice screen
189
190
191 TODO
192 ----
193
194 Mofflot: $14c46 sub inits sound system: in a pause loop during this
195 it reads a dummy address.
196
197 Earthjkr: Wrong screen size? Left edge of green blueprints in
198 attract looks like it's incorrectly off screen.
199
200 Cadash: Hooks for twin arcade machine setup: will involve emulating an extra
201 microcontroller, the 07 ROM might be the program for it. Cadash background
202 colors don't reinitialize properly with save states.
203
204 Galmedes: Test mode has select1/2 stuck at on.
205
206 Eto: $76d0 might be a protection check? It reads to and writes from
207 the program ROM. Doesn't seem to cause problems though.
208
209 DIP locations verified for:
210 - bonzeadv (manual)
211 - cadash (manual)
212 - asuka (manual)
213 - mofflott (manual)
214 - galmedes (manual)
215
216 ***************************************************************************/
217
218 #include "emu.h"
219 #include "includes/asuka.h"
220 #include "includes/taitoipt.h"
221 #include "audio/taitosnd.h"
222
223 #include "cpu/m68000/m68000.h"
224 #include "cpu/z180/z180.h"
225 #include "cpu/z80/z80.h"
226 #include "machine/watchdog.h"
227 #include "sound/2610intf.h"
228 #include "sound/msm5205.h"
229 #include "sound/ym2151.h"
230 #include "screen.h"
231 #include "speaker.h"
232
233
234 /***********************************************************
235 INTERRUPTS
236 ***********************************************************/
237
device_timer(emu_timer & timer,device_timer_id id,int param,void * ptr)238 void asuka_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
239 {
240 switch (id)
241 {
242 case TIMER_CADASH_INTERRUPT5:
243 m_maincpu->set_input_line(5, HOLD_LINE);
244 break;
245 default:
246 throw emu_fatalerror("Unknown id in asuka_state::device_timer");
247 }
248 }
249
250
INTERRUPT_GEN_MEMBER(asuka_state::cadash_interrupt)251 INTERRUPT_GEN_MEMBER(asuka_state::cadash_interrupt)
252 {
253 m_cadash_int5_timer->adjust(m_maincpu->cycles_to_attotime(500));
254 device.execute().set_input_line(4, HOLD_LINE); /* interrupt vector 4 */
255 }
256
257
258 /************************************************
259 SOUND
260 ************************************************/
261
sound_bankswitch_w(u8 data)262 void asuka_state::sound_bankswitch_w(u8 data)
263 {
264 m_audiobank->set_entry(data & 0x03);
265 }
266
267
WRITE_LINE_MEMBER(asuka_state::asuka_msm5205_vck)268 WRITE_LINE_MEMBER(asuka_state::asuka_msm5205_vck)
269 {
270 if (!state)
271 return;
272
273 m_adpcm_ff = !m_adpcm_ff;
274 m_adpcm_select->select_w(m_adpcm_ff);
275
276 if (m_adpcm_ff)
277 {
278 m_adpcm_select->ba_w(m_sound_data[m_adpcm_pos]);
279 m_adpcm_pos = (m_adpcm_pos + 1) & 0xffff;
280 }
281 }
282
msm5205_address_w(u8 data)283 void asuka_state::msm5205_address_w(u8 data)
284 {
285 m_adpcm_pos = (m_adpcm_pos & 0x00ff) | (data << 8);
286 }
287
msm5205_start_w(u8 data)288 void asuka_state::msm5205_start_w(u8 data)
289 {
290 m_msm->reset_w(0);
291 m_adpcm_ff = false;
292 }
293
msm5205_stop_w(u8 data)294 void asuka_state::msm5205_stop_w(u8 data)
295 {
296 m_msm->reset_w(1);
297 m_adpcm_pos &= 0xff00;
298 }
299
cadash_share_r(offs_t offset)300 u16 asuka_state::cadash_share_r(offs_t offset)
301 {
302 return m_cadash_shared_ram[offset];
303 }
304
cadash_share_w(offs_t offset,u16 data)305 void asuka_state::cadash_share_w(offs_t offset, u16 data)
306 {
307 m_cadash_shared_ram[offset] = data & 0xff;
308 }
309
310
coin_control_w(u8 data)311 void asuka_state::coin_control_w(u8 data)
312 {
313 machine().bookkeeping().coin_lockout_w(0, ~data & 0x01);
314 machine().bookkeeping().coin_lockout_w(1, ~data & 0x02);
315 machine().bookkeeping().coin_counter_w(0, data & 0x04);
316 machine().bookkeeping().coin_counter_w(1, data & 0x08);
317 }
318
319
320 /***********************************************************
321 MEMORY STRUCTURES
322 ***********************************************************/
323
bonzeadv_map(address_map & map)324 void asuka_state::bonzeadv_map(address_map &map)
325 {
326 map(0x000000, 0x03ffff).rom();
327 map(0x080000, 0x0fffff).rom();
328 map(0x10c000, 0x10ffff).ram();
329 map(0x200000, 0x200007).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w));
330 map(0x390000, 0x390001).portr("DSWA");
331 map(0x3a0000, 0x3a0001).w(m_pc090oj, FUNC(pc090oj_device::sprite_ctrl_w));
332 map(0x3b0000, 0x3b0001).portr("DSWB");
333 map(0x3c0000, 0x3c0001).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
334 map(0x3d0000, 0x3d0001).nopr();
335 map(0x3e0001, 0x3e0001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
336 map(0x3e0003, 0x3e0003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
337 map(0x800000, 0x8007ff).rw(m_cchip, FUNC(taito_cchip_device::mem68_r), FUNC(taito_cchip_device::mem68_w)).umask16(0x00ff);
338 map(0x800800, 0x800fff).rw(m_cchip, FUNC(taito_cchip_device::asic_r), FUNC(taito_cchip_device::asic68_w)).umask16(0x00ff);
339 map(0xc00000, 0xc0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::ram_r), FUNC(tc0100scn_device::ram_w)); /* tilemaps */
340 map(0xc20000, 0xc2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_r), FUNC(tc0100scn_device::ctrl_w));
341 map(0xd00000, 0xd03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram */
342 }
343
asuka_map(address_map & map)344 void asuka_state::asuka_map(address_map &map)
345 {
346 map(0x000000, 0x0fffff).rom();
347 map(0x100000, 0x103fff).ram();
348 map(0x1076f0, 0x1076f1).nopr(); /* Mofflott init does dummy reads here */
349 map(0x200000, 0x20000f).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w));
350 map(0x3a0000, 0x3a0003).w(m_pc090oj, FUNC(pc090oj_device::sprite_ctrl_w));
351 map(0x3e0000, 0x3e0001).nopr();
352 map(0x3e0001, 0x3e0001).w("ciu", FUNC(pc060ha_device::master_port_w));
353 map(0x3e0003, 0x3e0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
354 map(0x400000, 0x40000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
355 map(0xc00000, 0xc0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::ram_r), FUNC(tc0100scn_device::ram_w)); /* tilemaps */
356 map(0xc10000, 0xc103ff).nopw(); /* error in Asuka init code */
357 map(0xc20000, 0xc2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_r), FUNC(tc0100scn_device::ctrl_w));
358 map(0xd00000, 0xd03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram */
359 }
360
cadash_map(address_map & map)361 void asuka_state::cadash_map(address_map &map)
362 {
363 map(0x000000, 0x07ffff).rom();
364 map(0x080000, 0x080003).w(m_pc090oj, FUNC(pc090oj_device::sprite_ctrl_w));
365 map(0x0c0000, 0x0c0001).nopr();
366 map(0x0c0001, 0x0c0001).w("ciu", FUNC(pc060ha_device::master_port_w));
367 map(0x0c0003, 0x0c0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
368 map(0x100000, 0x107fff).ram();
369 map(0x800000, 0x800fff).rw(FUNC(asuka_state::cadash_share_r), FUNC(asuka_state::cadash_share_w)); /* network ram */
370 map(0x900000, 0x90000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
371 map(0xa00000, 0xa0000f).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_4bpg_word_w));
372 map(0xb00000, 0xb03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram */
373 map(0xc00000, 0xc0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::ram_r), FUNC(tc0100scn_device::ram_w)); /* tilemaps */
374 map(0xc20000, 0xc2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_r), FUNC(tc0100scn_device::ctrl_w));
375 }
376
eto_map(address_map & map)377 void asuka_state::eto_map(address_map &map)
378 { /* N.B. tc100scn mirror overlaps spriteram */
379 map(0x000000, 0x0fffff).rom();
380 map(0x100000, 0x10000f).rw(m_tc0110pcr, FUNC(tc0110pcr_device::word_r), FUNC(tc0110pcr_device::step1_word_w));
381 map(0x200000, 0x203fff).ram();
382 map(0x300000, 0x30000f).rw(m_tc0220ioc, FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write)).umask16(0x00ff);
383 map(0x400000, 0x40000f).r(m_tc0220ioc, FUNC(tc0220ioc_device::read)).umask16(0x00ff); /* service mode mirror */
384 map(0x4a0000, 0x4a0003).w(m_pc090oj, FUNC(pc090oj_device::sprite_ctrl_w));
385 map(0x4e0000, 0x4e0001).nopr();
386 map(0x4e0001, 0x4e0001).w("ciu", FUNC(pc060ha_device::master_port_w));
387 map(0x4e0003, 0x4e0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
388 map(0xc00000, 0xc0ffff).w(m_tc0100scn, FUNC(tc0100scn_device::ram_w));
389 map(0xc00000, 0xc03fff).rw(m_pc090oj, FUNC(pc090oj_device::word_r), FUNC(pc090oj_device::word_w)); /* sprite ram */
390 map(0xd00000, 0xd0ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::ram_r), FUNC(tc0100scn_device::ram_w)); /* tilemaps */
391 map(0xd20000, 0xd2000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_r), FUNC(tc0100scn_device::ctrl_w));
392 }
393
394
395 /***************************************************************************/
396
bonzeadv_z80_map(address_map & map)397 void asuka_state::bonzeadv_z80_map(address_map &map)
398 {
399 map(0x0000, 0x3fff).rom();
400 map(0x4000, 0x7fff).bankr("audiobank");
401 map(0xc000, 0xdfff).ram();
402 map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
403 map(0xe200, 0xe200).w("tc0140syt", FUNC(tc0140syt_device::slave_port_w));
404 map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w));
405 map(0xe400, 0xe403).nopw(); /* pan */
406 map(0xe600, 0xe600).nopw();
407 map(0xee00, 0xee00).nopw();
408 map(0xf000, 0xf000).nopw();
409 map(0xf200, 0xf200).w(FUNC(asuka_state::sound_bankswitch_w));
410 }
411
412 /* no MSM5205 */
cadash_z80_map(address_map & map)413 void asuka_state::cadash_z80_map(address_map &map)
414 {
415 map(0x0000, 0x3fff).rom();
416 map(0x4000, 0x7fff).bankr("audiobank");
417 map(0x8000, 0x8fff).ram();
418 map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
419 map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w));
420 map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
421 }
422
z80_map(address_map & map)423 void asuka_state::z80_map(address_map &map)
424 {
425 cadash_z80_map(map);
426 // map(0x9002, 0x9100).nopr();
427 map(0xb000, 0xb000).w(FUNC(asuka_state::msm5205_address_w));
428 map(0xc000, 0xc000).w(FUNC(asuka_state::msm5205_start_w));
429 map(0xd000, 0xd000).w(FUNC(asuka_state::msm5205_stop_w));
430 }
431
432 /*
433 Cadash communication CPU is a z180.
434 [0x8000]: at pc=31, z180 checks a byte ... if it's equal to 0x4d ("M") then the board is in master mode, otherwise it's in slave mode.
435 Right now, the z180 is too fast, so it never checks it properly ... maybe I'm missing a z180 halt line that's lying to somewhere on m68k side.
436 [0x8002]: puts T in master mode, R in slave mode ... looks a rather obvious flag that says the current Tx / Rx state
437 [0x8080-0x80ff]: slave data
438 [0x8100-0x817f]: master data
439
440 Internal I/O Asynchronous SCI regs are then checked ... we can't emulate this at the current time, needs two MAME instances.
441
442 m68k M communicates with z180 M through shared ram, then the z180 M communicates with z180 S through these ASCI regs ... finally, the z180 S
443 communicates with m68k S with its own shared ram. In short:
444
445 m68k M -> z180 M <-> z180 S <- m68k S
446 */
447
cadash_sub_map(address_map & map)448 void asuka_state::cadash_sub_map(address_map &map)
449 {
450 map(0x0000, 0x7fff).rom();
451 map(0x8000, 0x87ff).ram().share("sharedram");
452 }
453
cadash_sub_io(address_map & map)454 void asuka_state::cadash_sub_io(address_map &map)
455 {
456 map(0x00, 0x3f).ram(); // z180 internal I/O regs
457 }
458
459 /***********************************************************
460 INPUT PORTS, DIPs
461 ***********************************************************/
462
463 #define CADASH_PLAYERS_INPUT( player ) \
464 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
465 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
466 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(player) \
467 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(player) \
468 INPUT_GENERIC_JOY_HIGH_NIBBLE(player, IP_ACTIVE_LOW, PORT_8WAY, RIGHT, LEFT, DOWN, UP)
469
470
471 /* different players and system inputs than 'asuka' */
472 static INPUT_PORTS_START( bonzeadv )
473 /* 0x390000 -> 0x10cb7c ($b7c,A5) */
474 PORT_START("DSWA")
TAITO_MACHINE_COCKTAIL_LOC(SWA)475 TAITO_MACHINE_COCKTAIL_LOC(SWA)
476 TAITO_COINAGE_WORLD_LOC(SWA)
477
478 /* 0x3b0000 -> 0x10cb7e ($b7e,A5) */
479 PORT_START("DSWB")
480 TAITO_DIFFICULTY_LOC(SWB)
481 PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SWB:3,4") /* see notes */
482 PORT_DIPSETTING( 0x08, "40k 100k" ) /* 300k 1000k 1500k 2000k 2500k 3000k 3500k 5000k */
483 PORT_DIPSETTING( 0x0c, "50k 150k" ) /* 500k 1000k 2000k 3000k 4000k 5000k 6000k 7000k */
484 PORT_DIPSETTING( 0x04, "60k 200k" ) /* 500k 1000k 2000k 3000k 4000k 5000k 6000k 7000k */
485 PORT_DIPSETTING( 0x00, "80k 250k" ) /* 500k 1000k 2000k 3000k 4000k 5000k 6000k 7000k */
486 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) PORT_DIPLOCATION("SWB:5,6")
487 PORT_DIPSETTING( 0x20, "2" )
488 PORT_DIPSETTING( 0x30, "3" )
489 PORT_DIPSETTING( 0x10, "4" )
490 PORT_DIPSETTING( 0x00, "5" )
491 PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SWB:7")
492 PORT_DIPSETTING( 0x40, DEF_STR( No ) )
493 PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
494 PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SWB:8" ) /* see notes */
495
496 PORT_START("800007")
497 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
498 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
499 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 )
500
501 PORT_START("800009")
502 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1)
503 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1)
504
505 PORT_START("80000B")
506 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_TILT )
507 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
508 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
509 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
510 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
511 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
512 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 )
513 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 )
514
515 PORT_START("80000D")
516 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
517 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
518 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
519 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL // as with all c-chip through ADC reads this ends up on 0x80 instead of 0x08
520 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
521 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
522 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
523 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
524 INPUT_PORTS_END
525
526 static INPUT_PORTS_START( jigkmgri )
527 PORT_INCLUDE(bonzeadv)
528
529 PORT_MODIFY("DSWA")
530 TAITO_COINAGE_JAPAN_OLD_LOC(SWA)
531 INPUT_PORTS_END
532
533 static INPUT_PORTS_START( asuka )
534 /* 0x400000 -> 0x103618 */
535 PORT_START("DSWA")
536 TAITO_MACHINE_NO_COCKTAIL_LOC(SWA)
537 TAITO_COINAGE_JAPAN_OLD_LOC(SWA)
538
539 /* 0x400002 -> 0x10361c */
540 PORT_START("DSWB")
541 TAITO_DIFFICULTY_LOC(SWB)
542 PORT_DIPNAME( 0x0c, 0x0c, "Bonus Points" ) PORT_DIPLOCATION("SWB:3,4") /* for each plane shot after each end of level boss */
543 PORT_DIPSETTING( 0x0c, "500" )
544 PORT_DIPSETTING( 0x08, "1500" )
545 PORT_DIPSETTING( 0x04, "2000" )
546 PORT_DIPSETTING( 0x00, "2500" )
547 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) PORT_DIPLOCATION("SWB:5,6")
548 PORT_DIPSETTING( 0x10, "1" )
549 PORT_DIPSETTING( 0x20, "2" )
550 PORT_DIPSETTING( 0x30, "3" )
551 PORT_DIPSETTING( 0x00, "4" )
552 PORT_DIPNAME( 0xc0, 0x80, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SWB:7,8")
553 PORT_DIPSETTING( 0x00, DEF_STR( No ) )
554 PORT_DIPSETTING( 0xc0, "Up To Level 2" )
555 PORT_DIPSETTING( 0x80, "Up To Level 3" )
556 PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
557
558 PORT_START("IN0")
559 TAITO_JOY_UDLR_2_BUTTONS( 1 )
560
561 PORT_START("IN1")
562 TAITO_JOY_UDLR_2_BUTTONS( 2 )
563
564 PORT_START("IN2")
565 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_TILT )
566 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 )
567 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
568 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
569 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
570 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
571 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
572 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
573 INPUT_PORTS_END
574
575 static INPUT_PORTS_START( mofflott )
576 PORT_INCLUDE(asuka)
577
578 /* 0x400000 -> 0x100a92.b */
579 PORT_MODIFY("DSWA")
580 TAITO_MACHINE_COCKTAIL_LOC(SWA)
581
582 /* 0x400002 -> 0x100a93.b */
583 PORT_MODIFY("DSWB")
584 TAITO_DIFFICULTY_LOC(SWB)
585 PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SWB:3,4")
586 PORT_DIPSETTING( 0x0c, "20k And Every 50k" )
587 PORT_DIPSETTING( 0x08, "50k And Every 100k" )
588 PORT_DIPSETTING( 0x04, "100k Only" )
589 PORT_DIPSETTING( 0x00, DEF_STR( None ) )
590 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) PORT_DIPLOCATION("SWB:5,6")
591 PORT_DIPSETTING( 0x00, "2" )
592 PORT_DIPSETTING( 0x30, "3" )
593 PORT_DIPSETTING( 0x10, "4" )
594 PORT_DIPSETTING( 0x20, "5" )
595 PORT_DIPNAME( 0x40, 0x40, "Invulnerability (Cheat)") PORT_DIPLOCATION("SWB:7")
596 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
597 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
598 PORT_DIPNAME( 0x80, 0x80, "Number Of Keys" ) PORT_DIPLOCATION("SWB:8")
599 PORT_DIPSETTING( 0x00, "B 14" ) /* Hard */
600 PORT_DIPSETTING( 0x80, "A 16" ) /* Easy */
601 INPUT_PORTS_END
602
603 /* different players and system inputs than 'asuka' */
604 static INPUT_PORTS_START( cadash )
605 /* 0x900000 -> 0x10317a ($317a,A5) */
606 PORT_START("DSWA")
607 TAITO_MACHINE_NO_COCKTAIL_LOC(SWA)
608 TAITO_COINAGE_WORLD_LOC(SWA)
609
610 /* 0x900002 -> 0x10317c ($317c,A5) */
611 PORT_START("DSWB")
612 TAITO_DIFFICULTY_LOC(SWB)
613 PORT_DIPNAME( 0x0c, 0x0c, "Starting Time" ) PORT_DIPLOCATION("SWB:3,4")
614 PORT_DIPSETTING( 0x00, "5:00" )
615 PORT_DIPSETTING( 0x04, "6:00" )
616 PORT_DIPSETTING( 0x0c, "7:00" )
617 PORT_DIPSETTING( 0x08, "8:00" )
618 /* Round cleared Added time */
619 /* 1 8:00 */
620 /* 2 10:00 */
621 /* 3 8:00 */
622 /* 4 7:00 */
623 /* 5 9:00 */
624 PORT_DIPNAME( 0x30, 0x30, "Added Time (after round clear)" ) PORT_DIPLOCATION("SWB:5,6")
625 PORT_DIPSETTING( 0x00, "Default - 2:00" )
626 PORT_DIPSETTING( 0x10, "Default - 1:00" )
627 PORT_DIPSETTING( 0x30, "Default" )
628 PORT_DIPSETTING( 0x20, "Default + 1:00" )
629 PORT_DIPNAME( 0xc0, 0xc0, "Communication Mode" ) PORT_DIPLOCATION("SWB:7,8")
630 PORT_DIPSETTING( 0xc0, "Stand alone" )
631 PORT_DIPSETTING( 0x80, "Master" )
632 PORT_DIPSETTING( 0x00, "Slave" )
633 // PORT_DIPSETTING( 0x40, "Stand alone" )
634
635 PORT_START("IN0")
636 CADASH_PLAYERS_INPUT( 1 )
637
638 PORT_START("IN1")
639 CADASH_PLAYERS_INPUT( 2 )
640
641 PORT_START("IN2")
642 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
643 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
644 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
645 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
646 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
647 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_TILT )
648 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
649 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
650 INPUT_PORTS_END
651
652 static INPUT_PORTS_START( cadashj )
653 PORT_INCLUDE(cadash)
654
655 PORT_MODIFY("DSWA")
656 TAITO_COINAGE_JAPAN_OLD_LOC(SWA)
657 INPUT_PORTS_END
658
659 static INPUT_PORTS_START( cadashu )
660 PORT_INCLUDE(cadash)
661
662 PORT_MODIFY("DSWA")
663 TAITO_COINAGE_US_LOC(SWA)
664 INPUT_PORTS_END
665
666 static INPUT_PORTS_START( galmedes )
667 PORT_INCLUDE(asuka)
668
669 /* 0x400000 -> 0x100982 */
670 PORT_MODIFY("DSWA")
671 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SWA:4")
672 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
673 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
674 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SWA:5,6")
675 PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
676 PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
677 PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
678 PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
679 PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
680 PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
681 PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
682 PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
683 PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SWA:7,8")
684 PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
685 PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
686 PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
687 PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSWB",0x80,EQUALS,0x80)
688 PORT_DIPSETTING( 0xc0, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
689 PORT_DIPSETTING( 0x80, DEF_STR( 1C_3C ) ) PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
690 PORT_DIPSETTING( 0x40, DEF_STR( 1C_4C ) ) PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
691 PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) ) PORT_CONDITION("DSWB",0x80,EQUALS,0x00)
692
693 /* 0x400002 -> 0x100984 */
694 PORT_MODIFY("DSWB")
695 TAITO_DIFFICULTY_LOC(SWB)
696 PORT_DIPNAME( 0x0c, 0x08, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SWB:3,4")
697 PORT_DIPSETTING( 0x08, "Every 100k" )
698 PORT_DIPSETTING( 0x0c, "100k And Every 200k" )
699 PORT_DIPSETTING( 0x04, "150k And Every 200k" )
700 PORT_DIPSETTING( 0x00, "Every 200k" )
701 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) PORT_DIPLOCATION("SWB:5,6")
702 PORT_DIPSETTING( 0x20, "1" )
703 PORT_DIPSETTING( 0x10, "2" )
704 PORT_DIPSETTING( 0x30, "3" )
705 PORT_DIPSETTING( 0x00, "4" )
706 PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SWB:7" ) /* Listed as "Unused" */
707 PORT_DIPNAME( 0x80, 0x80, "Coin Mode" ) PORT_DIPLOCATION("SWB:8")
708 PORT_DIPSETTING( 0x80, "Mode A (Japan)" ) /* Mode A is TAITO_COINAGE_JAPAN_OLD */
709 PORT_DIPSETTING( 0x00, "Mode B (World)" ) /* Mode B is TAITO_COINAGE_WORLD */
710 INPUT_PORTS_END
711
712 static INPUT_PORTS_START( earthjkr )
713 PORT_INCLUDE(asuka)
714 /* DSWA: 0x400000 -> 0x100932 */
715
716 /* 0x400002 -> 0x1009842 */
717 PORT_MODIFY("DSWB")
718 PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SWB:3,4")
719 PORT_DIPSETTING( 0x00, "100k and 300k" )
720 PORT_DIPSETTING( 0x08, "100k only" )
721 PORT_DIPSETTING( 0x04, "200k only" )
722 PORT_DIPSETTING( 0x0c, DEF_STR( None ) )
723 PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) PORT_DIPLOCATION("SWB:5,6")
724 PORT_DIPSETTING( 0x00, "1" )
725 PORT_DIPSETTING( 0x30, "2" )
726 PORT_DIPSETTING( 0x20, "3" )
727 PORT_DIPSETTING( 0x10, "4" )
728 PORT_DIPNAME( 0x40, 0x40, "Copyright" ) PORT_DIPLOCATION("SWB:7") /* code at 0x00b982 and 0x00dbce */
729 PORT_DIPSETTING( 0x40, "Visco" ) /* Japan notice screen ON */
730 PORT_DIPSETTING( 0x00, "Visco (distributed by Romstar)" ) /* Japan notice screen OFF */
731 PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SWB:8" )
732 INPUT_PORTS_END
733
734 static INPUT_PORTS_START( earthjkrp )
735 PORT_INCLUDE(asuka)
736
737 PORT_MODIFY("DSWB")
738 PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SWB:7" )
739 PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SWB:8" )
740 INPUT_PORTS_END
741
742
743 static INPUT_PORTS_START( eto )
744 PORT_INCLUDE(asuka)
745 /* DSWA: 0x300000 -> 0x200914 */
746
747 /* 0x300002 -> 0x200916 */
748 PORT_MODIFY("DSWB")
749 PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SWB:3" )
750 PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SWB:4" )
751 PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SWB:5" )
752 PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SWB:6" ) /* value stored at 0x20090a but not read back */
753 PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SWB:7" )
754 PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SWB:8" )
755 INPUT_PORTS_END
756
757
758 /***********************************************************
759 MACHINE DRIVERS
760 ***********************************************************/
761
762 void asuka_state::machine_start()
763 {
764 /* configure the banks */
765 m_audiobank->configure_entries(0, 4, memregion("audiocpu")->base(), 0x04000);
766
767 save_item(NAME(m_adpcm_pos));
768 save_item(NAME(m_adpcm_ff));
769 }
770
machine_reset()771 void asuka_state::machine_reset()
772 {
773 m_adpcm_pos = 0;
774 m_adpcm_ff = false;
775 }
776
WRITE_LINE_MEMBER(asuka_state::screen_vblank)777 WRITE_LINE_MEMBER(asuka_state::screen_vblank)
778 {
779 // rising edge
780 if (state)
781 {
782 m_pc090oj->eof_callback();
783 }
784 }
785
INTERRUPT_GEN_MEMBER(asuka_state::bonze_interrupt)786 INTERRUPT_GEN_MEMBER(asuka_state::bonze_interrupt)
787 {
788 m_maincpu->set_input_line(4, HOLD_LINE);
789 if (m_cchip) m_cchip->ext_interrupt(ASSERT_LINE);
790 if (m_cchip_irq_clear) m_cchip_irq_clear->adjust(attotime::zero);
791 }
792
TIMER_DEVICE_CALLBACK_MEMBER(asuka_state::cchip_irq_clear_cb)793 TIMER_DEVICE_CALLBACK_MEMBER(asuka_state::cchip_irq_clear_cb)
794 {
795 m_cchip->ext_interrupt(CLEAR_LINE);
796 }
797
counters_w(u8 data)798 void asuka_state::counters_w(u8 data)
799 {
800 machine().bookkeeping().coin_lockout_w(1, data & 0x80);
801 machine().bookkeeping().coin_lockout_w(0, data & 0x40);
802 machine().bookkeeping().coin_counter_w(1, data & 0x20);
803 machine().bookkeeping().coin_counter_w(0, data & 0x10);
804 }
805
bonzeadv(machine_config & config)806 void asuka_state::bonzeadv(machine_config &config)
807 {
808 /* basic machine hardware */
809 M68000(config, m_maincpu, XTAL(16'000'000)/2); /* checked on PCB */
810 m_maincpu->set_addrmap(AS_PROGRAM, &asuka_state::bonzeadv_map);
811 m_maincpu->set_vblank_int("screen", FUNC(asuka_state::bonze_interrupt));
812
813 Z80(config, m_audiocpu, XTAL(16'000'000)/4); /* sound CPU, also required for test mode */
814 m_audiocpu->set_addrmap(AS_PROGRAM, &asuka_state::bonzeadv_z80_map);
815
816 TAITO_CCHIP(config, m_cchip, 12_MHz_XTAL); // 12MHz OSC near C-Chip
817 m_cchip->in_pa_callback().set_ioport("800007");
818 m_cchip->in_pb_callback().set_ioport("800009");
819 m_cchip->in_pc_callback().set_ioport("80000B");
820 m_cchip->in_ad_callback().set_ioport("80000D");
821 m_cchip->out_pb_callback().set(FUNC(asuka_state::counters_w));
822
823 TIMER(config, "cchip_irq_clear").configure_generic(FUNC(asuka_state::cchip_irq_clear_cb));
824
825 config.set_maximum_quantum(attotime::from_hz(600));
826
827 WATCHDOG_TIMER(config, "watchdog");
828
829 /* video hardware */
830 screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
831 screen.set_refresh_hz(60);
832 screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
833 screen.set_size(40*8, 32*8);
834 screen.set_visarea(0*8, 40*8-1, 3*8, 31*8-1);
835 screen.set_screen_update(FUNC(asuka_state::screen_update));
836 screen.screen_vblank().set(FUNC(asuka_state::screen_vblank));
837 screen.set_palette(m_tc0110pcr);
838
839 PC090OJ(config, m_pc090oj, 0);
840 m_pc090oj->set_offsets(0, 8);
841 m_pc090oj->set_palette(m_tc0110pcr);
842 m_pc090oj->set_colpri_callback(FUNC(asuka_state::bonzeadv_colpri_cb));
843
844 TC0100SCN(config, m_tc0100scn, 0);
845 m_tc0100scn->set_palette(m_tc0110pcr);
846
847 TC0110PCR(config, m_tc0110pcr, 0);
848
849 /* sound hardware */
850 SPEAKER(config, "mono").front_center();
851
852 ym2610_device &ymsnd(YM2610(config, "ymsnd", XTAL(16'000'000)/2));
853 ymsnd.irq_handler().set_inputline("audiocpu", 0);
854 ymsnd.add_route(0, "mono", 0.25);
855 ymsnd.add_route(1, "mono", 1.0);
856 ymsnd.add_route(2, "mono", 1.0);
857
858 tc0140syt_device &tc0140syt(TC0140SYT(config, "tc0140syt", 0));
859 tc0140syt.set_master_tag(m_maincpu);
860 tc0140syt.set_slave_tag(m_audiocpu);
861 }
862
asuka(machine_config & config)863 void asuka_state::asuka(machine_config &config)
864 {
865 /* basic machine hardware */
866 M68000(config, m_maincpu, XTAL(16'000'000)/2); /* verified on pcb */
867 m_maincpu->set_addrmap(AS_PROGRAM, &asuka_state::asuka_map);
868 m_maincpu->set_vblank_int("screen", FUNC(asuka_state::irq5_line_hold));
869
870 Z80(config, m_audiocpu, XTAL(16'000'000)/4); /* verified on pcb */
871 m_audiocpu->set_addrmap(AS_PROGRAM, &asuka_state::z80_map);
872
873 config.set_maximum_quantum(attotime::from_hz(600));
874
875 TC0220IOC(config, m_tc0220ioc, 0);
876 m_tc0220ioc->read_0_callback().set_ioport("DSWA");
877 m_tc0220ioc->read_1_callback().set_ioport("DSWB");
878 m_tc0220ioc->read_2_callback().set_ioport("IN0");
879 m_tc0220ioc->read_3_callback().set_ioport("IN1");
880 m_tc0220ioc->write_4_callback().set(FUNC(asuka_state::coin_control_w));
881 m_tc0220ioc->read_7_callback().set_ioport("IN2");
882
883 /* video hardware */
884 screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
885 screen.set_refresh_hz(60);
886 screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
887 screen.set_size(40*8, 32*8);
888 screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
889 screen.set_screen_update(FUNC(asuka_state::screen_update));
890 screen.screen_vblank().set(FUNC(asuka_state::screen_vblank));
891 screen.set_palette(m_tc0110pcr);
892
893 PC090OJ(config, m_pc090oj, 0);
894 m_pc090oj->set_offsets(0, 8);
895 m_pc090oj->set_usebuffer(true);
896 m_pc090oj->set_palette(m_tc0110pcr);
897 m_pc090oj->set_colpri_callback(FUNC(asuka_state::asuka_colpri_cb));
898
899 TC0100SCN(config, m_tc0100scn, 0);
900 m_tc0100scn->set_palette(m_tc0110pcr);
901
902 TC0110PCR(config, m_tc0110pcr, 0);
903
904 /* sound hardware */
905 SPEAKER(config, "mono").front_center();
906
907 ym2151_device &ymsnd(YM2151(config, "ymsnd", 16_MHz_XTAL/4)); // verified on PCB
908 ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
909 ymsnd.port_write_handler().set_membank(m_audiobank).mask(0x03);
910 ymsnd.add_route(0, "mono", 0.25);
911 ymsnd.add_route(1, "mono", 0.25);
912
913 MSM5205(config, m_msm, XTAL(384'000)); /* verified on pcb */
914 m_msm->vck_legacy_callback().set(FUNC(asuka_state::asuka_msm5205_vck)); /* VCK function */
915 m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */
916 m_msm->add_route(ALL_OUTPUTS, "mono", 0.5);
917
918 LS157(config, m_adpcm_select, 0);
919 m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w));
920
921 pc060ha_device &ciu(PC060HA(config, "ciu", 0));
922 ciu.set_master_tag(m_maincpu);
923 ciu.set_slave_tag(m_audiocpu);
924 }
925
cadash(machine_config & config)926 void asuka_state::cadash(machine_config &config)
927 {
928 /* basic machine hardware */
929 M68000(config, m_maincpu, XTAL(32'000'000)/2); /* 68000p12 running at 16Mhz, verified on pcb */
930 m_maincpu->set_addrmap(AS_PROGRAM, &asuka_state::cadash_map);
931 m_maincpu->set_vblank_int("screen", FUNC(asuka_state::cadash_interrupt));
932
933 Z80(config, m_audiocpu, XTAL(8'000'000)/2); /* verified on pcb */
934 m_audiocpu->set_addrmap(AS_PROGRAM, &asuka_state::cadash_z80_map);
935
936 z180_device &subcpu(HD64180RP(config, "subcpu", XTAL(8'000'000))); /* 8MHz HD64180RP8 Z180 */
937 subcpu.set_addrmap(AS_PROGRAM, &asuka_state::cadash_sub_map);
938 subcpu.set_addrmap(AS_IO, &asuka_state::cadash_sub_io);
939
940 config.set_maximum_quantum(attotime::from_hz(600));
941
942 TC0220IOC(config, m_tc0220ioc, 0);
943 m_tc0220ioc->read_0_callback().set_ioport("DSWA");
944 m_tc0220ioc->read_1_callback().set_ioport("DSWB");
945 m_tc0220ioc->read_2_callback().set_ioport("IN0");
946 m_tc0220ioc->read_3_callback().set_ioport("IN1");
947 m_tc0220ioc->write_4_callback().set(FUNC(asuka_state::coin_control_w));
948 m_tc0220ioc->read_7_callback().set_ioport("IN2");
949
950 /* video hardware */
951 screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
952 screen.set_refresh_hz(60);
953 screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
954 screen.set_size(40*8, 32*8);
955 screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
956 screen.set_screen_update(FUNC(asuka_state::screen_update));
957 screen.screen_vblank().set(FUNC(asuka_state::screen_vblank));
958 screen.set_palette(m_tc0110pcr);
959
960 PC090OJ(config, m_pc090oj, 0);
961 m_pc090oj->set_offsets(0, 8);
962 m_pc090oj->set_usebuffer(true);
963 m_pc090oj->set_palette(m_tc0110pcr);
964 m_pc090oj->set_colpri_callback(FUNC(asuka_state::bonzeadv_colpri_cb));
965
966 TC0100SCN(config, m_tc0100scn, 0);
967 m_tc0100scn->set_offsets(1, 0);
968 m_tc0100scn->set_palette(m_tc0110pcr);
969
970 TC0110PCR(config, m_tc0110pcr, 0);
971
972 /* sound hardware */
973 SPEAKER(config, "mono").front_center();
974
975 ym2151_device &ymsnd(YM2151(config, "ymsnd", 8_MHz_XTAL/2)); // verified on PCB
976 ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
977 ymsnd.port_write_handler().set_membank(m_audiobank).mask(0x03);
978 ymsnd.add_route(0, "mono", 0.50);
979 ymsnd.add_route(1, "mono", 0.50);
980
981 pc060ha_device &ciu(PC060HA(config, "ciu", 0));
982 ciu.set_master_tag(m_maincpu);
983 ciu.set_slave_tag(m_audiocpu);
984 }
985
mofflott(machine_config & config)986 void asuka_state::mofflott(machine_config &config)
987 {
988 /* basic machine hardware */
989 M68000(config, m_maincpu, 8000000); /* 8 MHz ??? */
990 m_maincpu->set_addrmap(AS_PROGRAM, &asuka_state::asuka_map);
991 m_maincpu->set_vblank_int("screen", FUNC(asuka_state::irq5_line_hold));
992
993 Z80(config, m_audiocpu, 4000000); /* 4 MHz ??? */
994 m_audiocpu->set_addrmap(AS_PROGRAM, &asuka_state::z80_map);
995
996 config.set_maximum_quantum(attotime::from_hz(600));
997
998 TC0220IOC(config, m_tc0220ioc, 0);
999 m_tc0220ioc->read_0_callback().set_ioport("DSWA");
1000 m_tc0220ioc->read_1_callback().set_ioport("DSWB");
1001 m_tc0220ioc->read_2_callback().set_ioport("IN0");
1002 m_tc0220ioc->read_3_callback().set_ioport("IN1");
1003 m_tc0220ioc->write_4_callback().set(FUNC(asuka_state::coin_control_w));
1004 m_tc0220ioc->read_7_callback().set_ioport("IN2");
1005
1006 /* video hardware */
1007 screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
1008 screen.set_refresh_hz(60);
1009 screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
1010 screen.set_size(40*8, 32*8);
1011 screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
1012 screen.set_screen_update(FUNC(asuka_state::screen_update));
1013 screen.screen_vblank().set(FUNC(asuka_state::screen_vblank));
1014 screen.set_palette(m_tc0110pcr);
1015
1016 PC090OJ(config, m_pc090oj, 0);
1017 m_pc090oj->set_offsets(0, 8);
1018 m_pc090oj->set_palette(m_tc0110pcr);
1019 m_pc090oj->set_colpri_callback(FUNC(asuka_state::asuka_colpri_cb));
1020
1021 TC0100SCN(config, m_tc0100scn, 0);
1022 m_tc0100scn->set_offsets(1, 0);
1023 m_tc0100scn->set_palette(m_tc0110pcr);
1024
1025 TC0110PCR(config, m_tc0110pcr, 0);
1026
1027 /* sound hardware */
1028 SPEAKER(config, "mono").front_center();
1029
1030 ym2151_device &ymsnd(YM2151(config, "ymsnd", 4000000));
1031 ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
1032 ymsnd.port_write_handler().set_membank(m_audiobank).mask(0x03);
1033 ymsnd.add_route(0, "mono", 0.25);
1034 ymsnd.add_route(1, "mono", 0.25);
1035
1036 MSM5205(config, m_msm, 384000);
1037 m_msm->vck_legacy_callback().set(FUNC(asuka_state::asuka_msm5205_vck)); /* VCK function */
1038 m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */
1039 m_msm->add_route(ALL_OUTPUTS, "mono", 0.5);
1040
1041 LS157(config, m_adpcm_select, 0);
1042 m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w));
1043
1044 pc060ha_device &ciu(PC060HA(config, "ciu", 0));
1045 ciu.set_master_tag(m_maincpu);
1046 ciu.set_slave_tag(m_audiocpu);
1047 }
1048
eto(machine_config & config)1049 void asuka_state::eto(machine_config &config)
1050 {
1051 /* basic machine hardware */
1052 M68000(config, m_maincpu, 8000000); /* 8 MHz ??? */
1053 m_maincpu->set_addrmap(AS_PROGRAM, &asuka_state::eto_map);
1054 m_maincpu->set_vblank_int("screen", FUNC(asuka_state::irq5_line_hold));
1055
1056 Z80(config, m_audiocpu, 4000000); /* 4 MHz ??? */
1057 m_audiocpu->set_addrmap(AS_PROGRAM, &asuka_state::cadash_z80_map);
1058
1059 config.set_maximum_quantum(attotime::from_hz(600));
1060
1061 TC0220IOC(config, m_tc0220ioc, 0);
1062 m_tc0220ioc->read_0_callback().set_ioport("DSWA");
1063 m_tc0220ioc->read_1_callback().set_ioport("DSWB");
1064 m_tc0220ioc->read_2_callback().set_ioport("IN0");
1065 m_tc0220ioc->read_3_callback().set_ioport("IN1");
1066 m_tc0220ioc->write_4_callback().set(FUNC(asuka_state::coin_control_w));
1067 m_tc0220ioc->read_7_callback().set_ioport("IN2");
1068
1069 /* video hardware */
1070 screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
1071 screen.set_refresh_hz(60);
1072 screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
1073 screen.set_size(40*8, 32*8);
1074 screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
1075 screen.set_screen_update(FUNC(asuka_state::screen_update));
1076 screen.screen_vblank().set(FUNC(asuka_state::screen_vblank));
1077 screen.set_palette(m_tc0110pcr);
1078
1079 PC090OJ(config, m_pc090oj, 0);
1080 m_pc090oj->set_offsets(0, 8);
1081 m_pc090oj->set_palette(m_tc0110pcr);
1082 m_pc090oj->set_colpri_callback(FUNC(asuka_state::asuka_colpri_cb));
1083
1084 TC0100SCN(config, m_tc0100scn, 0);
1085 m_tc0100scn->set_offsets(1, 0);
1086 m_tc0100scn->set_palette(m_tc0110pcr);
1087
1088 TC0110PCR(config, m_tc0110pcr, 0);
1089
1090 /* sound hardware */
1091 SPEAKER(config, "mono").front_center();
1092
1093 ym2151_device &ymsnd(YM2151(config, "ymsnd", 4000000));
1094 ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
1095 ymsnd.port_write_handler().set_membank(m_audiobank).mask(0x03);
1096 ymsnd.add_route(0, "mono", 0.50);
1097 ymsnd.add_route(1, "mono", 0.50);
1098
1099 pc060ha_device &ciu(PC060HA(config, "ciu", 0));
1100 ciu.set_master_tag(m_maincpu);
1101 ciu.set_slave_tag(m_audiocpu);
1102 }
1103
1104
1105 /***************************************************************************
1106 DRIVERS
1107 ***************************************************************************/
1108
1109 ROM_START( bonzeadv )
1110 ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
CRC(af821fbc)1111 ROM_LOAD16_BYTE( "b41-09-1.17", 0x00000, 0x10000, CRC(af821fbc) SHA1(55bc13742033a31c92d6268d6b8344062ca78633) )
1112 ROM_LOAD16_BYTE( "b41-11-1.26", 0x00001, 0x10000, CRC(823fff00) SHA1(b8b8cafbe860136c202d8d9f3ed5a54e2f4df363) )
1113 ROM_LOAD16_BYTE( "b41-10.16", 0x20000, 0x10000, CRC(4ca94d77) SHA1(69a9f6bcb6d5e4132eed50860bdfe8d6b6d914cd) )
1114 ROM_LOAD16_BYTE( "b41-15.25", 0x20001, 0x10000, CRC(aed7a0d0) SHA1(99ffc0b0e88b81231756610bf48df5365e12603b) )
1115 /* 0x040000 - 0x7ffff is intentionally empty */
1116 ROM_LOAD16_WORD_SWAP( "b41-01.15", 0x80000, 0x80000, CRC(5d072fa4) SHA1(6ffe1b8531381eb6dd3f1fec18c91294a6aca9f6) )
1117
1118 ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
1119 ROM_LOAD( "cchip_b41-05.43", 0x0000, 0x2000, CRC(75c52553) SHA1(87bbaefab90e7d43f63556fbae3e937baf9d397b) )
1120
1121 ROM_REGION( 0x80000, "tc0100scn", 0 )
1122 ROM_LOAD16_WORD_SWAP( "b41-03.1", 0x00000, 0x80000, CRC(736d35d0) SHA1(7d41a7d71e117714bbd2cdda2953589cda6e763a) ) /* SCR tiles (8 x 8) */
1123
1124 ROM_REGION( 0x80000, "pc090oj", 0 )
1125 ROM_LOAD16_WORD_SWAP( "b41-02.7", 0x00000, 0x80000, CRC(29f205d9) SHA1(9e9f0c2755a9aa5acfe2601911bfa07d8d61164c) ) /* Sprites (16 x 16) */
1126
1127 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1128 ROM_LOAD( "b41-13.20", 0x00000, 0x10000, CRC(9e464254) SHA1(b6f6126b54c15320ecaa652d0eeabaa4cd94bd26) ) /* banked */
1129
1130 ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */
1131 ROM_LOAD( "b41-04.48", 0x00000, 0x80000, CRC(c668638f) SHA1(07238a6cb4d93ffaf6351657163b5d80f0dbf688) )
1132 ROM_END
1133
1134 ROM_START( bonzeadvo )
1135 ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
1136 ROM_LOAD16_BYTE( "b41-09.17", 0x00000, 0x10000, CRC(06818710) SHA1(b8045f4e15246231a5645d22bb965953f7fb47a3) )
1137 ROM_LOAD16_BYTE( "b41-11.26", 0x00001, 0x10000, CRC(33c4c2f4) SHA1(3f1e76932d8f7e06e976b968a711177d25254bef) )
1138 ROM_LOAD16_BYTE( "b41-10.16", 0x20000, 0x10000, CRC(4ca94d77) SHA1(69a9f6bcb6d5e4132eed50860bdfe8d6b6d914cd) )
1139 ROM_LOAD16_BYTE( "b41-15.25", 0x20001, 0x10000, CRC(aed7a0d0) SHA1(99ffc0b0e88b81231756610bf48df5365e12603b) )
1140 /* 0x040000 - 0x7ffff is intentionally empty */
1141 ROM_LOAD16_WORD_SWAP( "b41-01.15", 0x80000, 0x80000, CRC(5d072fa4) SHA1(6ffe1b8531381eb6dd3f1fec18c91294a6aca9f6) )
1142
1143 ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
1144 ROM_LOAD( "cchip_b41-05.43", 0x0000, 0x2000, CRC(75c52553) SHA1(87bbaefab90e7d43f63556fbae3e937baf9d397b) )
1145
1146 ROM_REGION( 0x80000, "tc0100scn", 0 )
1147 ROM_LOAD16_WORD_SWAP( "b41-03.1", 0x00000, 0x80000, CRC(736d35d0) SHA1(7d41a7d71e117714bbd2cdda2953589cda6e763a) ) /* SCR tiles (8 x 8) */
1148
1149 ROM_REGION( 0x80000, "pc090oj", 0 )
1150 ROM_LOAD16_WORD_SWAP( "b41-02.7", 0x00000, 0x80000, CRC(29f205d9) SHA1(9e9f0c2755a9aa5acfe2601911bfa07d8d61164c) ) /* Sprites (16 x 16) */
1151
1152 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1153 ROM_LOAD( "b41-13.20", 0x00000, 0x10000, CRC(9e464254) SHA1(b6f6126b54c15320ecaa652d0eeabaa4cd94bd26) ) /* banked */
1154
1155 ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */
1156 ROM_LOAD( "b41-04.48", 0x00000, 0x80000, CRC(c668638f) SHA1(07238a6cb4d93ffaf6351657163b5d80f0dbf688) )
1157 ROM_END
1158
1159 ROM_START( bonzeadvu )
1160 ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
1161 ROM_LOAD16_BYTE( "b41-09-1.17", 0x00000, 0x10000, CRC(af821fbc) SHA1(55bc13742033a31c92d6268d6b8344062ca78633) )
1162 ROM_LOAD16_BYTE( "b41-11-1.26", 0x00001, 0x10000, CRC(823fff00) SHA1(b8b8cafbe860136c202d8d9f3ed5a54e2f4df363) )
1163 ROM_LOAD16_BYTE( "b41-10.16", 0x20000, 0x10000, CRC(4ca94d77) SHA1(69a9f6bcb6d5e4132eed50860bdfe8d6b6d914cd) )
1164 ROM_LOAD16_BYTE( "b41-14.25", 0x20001, 0x10000, CRC(37def16a) SHA1(b0a3b7206db55e29454672fffadf4e2a64eed873) )
1165 /* 0x040000 - 0x7ffff is intentionally empty */
1166 ROM_LOAD16_WORD_SWAP( "b41-01.15", 0x80000, 0x80000, CRC(5d072fa4) SHA1(6ffe1b8531381eb6dd3f1fec18c91294a6aca9f6) )
1167
1168 ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
1169 ROM_LOAD( "cchip_b41-05.43", 0x0000, 0x2000, CRC(75c52553) SHA1(87bbaefab90e7d43f63556fbae3e937baf9d397b) )
1170
1171 ROM_REGION( 0x80000, "tc0100scn", 0 )
1172 ROM_LOAD16_WORD_SWAP( "b41-03.1", 0x00000, 0x80000, CRC(736d35d0) SHA1(7d41a7d71e117714bbd2cdda2953589cda6e763a) ) /* SCR tiles (8 x 8) */
1173
1174 ROM_REGION( 0x80000, "pc090oj", 0 )
1175 ROM_LOAD16_WORD_SWAP( "b41-02.7", 0x00000, 0x80000, CRC(29f205d9) SHA1(9e9f0c2755a9aa5acfe2601911bfa07d8d61164c) ) /* Sprites (16 x 16) */
1176
1177 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1178 ROM_LOAD( "b41-13.20", 0x00000, 0x10000, CRC(9e464254) SHA1(b6f6126b54c15320ecaa652d0eeabaa4cd94bd26) ) /* banked */
1179
1180 ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */
1181 ROM_LOAD( "b41-04.48", 0x00000, 0x80000, CRC(c668638f) SHA1(07238a6cb4d93ffaf6351657163b5d80f0dbf688) )
1182 ROM_END
1183
1184 ROM_START( jigkmgri )
1185 ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
1186 ROM_LOAD16_BYTE( "b41-09-1.17", 0x00000, 0x10000, CRC(af821fbc) SHA1(55bc13742033a31c92d6268d6b8344062ca78633) )
1187 ROM_LOAD16_BYTE( "b41-11-1.26", 0x00001, 0x10000, CRC(823fff00) SHA1(b8b8cafbe860136c202d8d9f3ed5a54e2f4df363) )
1188 ROM_LOAD16_BYTE( "b41-10.16", 0x20000, 0x10000, CRC(4ca94d77) SHA1(69a9f6bcb6d5e4132eed50860bdfe8d6b6d914cd) )
1189 ROM_LOAD16_BYTE( "b41-12.25", 0x20001, 0x10000, CRC(40d9c1fc) SHA1(6f03d263e10559988aaa2be00d9bbf55f2fb864e) )
1190 /* 0x040000 - 0x7ffff is intentionally empty */
1191 ROM_LOAD16_WORD_SWAP( "b41-01.15", 0x80000, 0x80000, CRC(5d072fa4) SHA1(6ffe1b8531381eb6dd3f1fec18c91294a6aca9f6) )
1192
1193 ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
1194 ROM_LOAD( "cchip_b41-05.43", 0x0000, 0x2000, CRC(75c52553) SHA1(87bbaefab90e7d43f63556fbae3e937baf9d397b) )
1195
1196 ROM_REGION( 0x80000, "tc0100scn", 0 )
1197 ROM_LOAD16_WORD_SWAP( "b41-03.1", 0x00000, 0x80000, CRC(736d35d0) SHA1(7d41a7d71e117714bbd2cdda2953589cda6e763a) ) /* Tiles (8 x 8) */
1198
1199 ROM_REGION( 0x80000, "pc090oj", 0 )
1200 ROM_LOAD16_WORD_SWAP( "b41-02.7", 0x00000, 0x80000, CRC(29f205d9) SHA1(9e9f0c2755a9aa5acfe2601911bfa07d8d61164c) ) /* Sprites (16 x 16) */
1201
1202 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1203 ROM_LOAD( "b41-13.20", 0x00000, 0x10000, CRC(9e464254) SHA1(b6f6126b54c15320ecaa652d0eeabaa4cd94bd26) ) /* banked */
1204
1205 ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */
1206 ROM_LOAD( "b41-04.48", 0x00000, 0x80000, CRC(c668638f) SHA1(07238a6cb4d93ffaf6351657163b5d80f0dbf688) )
1207 ROM_END
1208
1209 ROM_START( bonzeadvp ) /* Labels consists of hand written checksum values of the ROMs */
1210 ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
1211 ROM_LOAD16_BYTE( "0l.ic17", 0x00000, 0x10000, CRC(9e046e6f) SHA1(a05ed46930bcfa8f59fda6f1d370b841ad261258) )
1212 ROM_LOAD16_BYTE( "0h.ic26", 0x00001, 0x10000, CRC(3e2b2628) SHA1(66ee0e5d2c38c467edc3f22b83b73643764ae8f0) )
1213 ROM_LOAD16_BYTE( "1h.ic16", 0x20000, 0x10000, CRC(52f31b98) SHA1(8a20a79350073438522361d3f598afa42f0f62ed) )
1214 ROM_LOAD16_BYTE( "1l.ic25", 0x20001, 0x10000, CRC(c7e79b98) SHA1(1d92861c6337362cdd9d31a2da944d8eb3171170) )
1215 /* 0x040000 - 0x7ffff is intentionally empty */
1216 ROM_LOAD16_BYTE( "fd65.ic20", 0x80001, 0x20000, CRC(c32f3bd5) SHA1(d9db14ec26cac5504a61058e87da4e404647ca94) ) // these 4 == b41-01.15 but split
1217 ROM_LOAD16_BYTE( "49eb.ic26", 0x80000, 0x20000, CRC(c747650b) SHA1(ef03931d233ec1f9e61d45d02abb23e69edd8c15) ) // ^
1218 ROM_LOAD16_BYTE( "a418.ic23", 0xc0001, 0x20000, CRC(51b02be6) SHA1(20e3423aea359f3ca92dd24f4f87351d93c279b6) ) // ^
1219 ROM_LOAD16_BYTE( "0e7e.ic28", 0xc0000, 0x20000, CRC(dc1f9fd0) SHA1(88addfa2c3bb854efd88a3556d23a7607b6ec848) ) // ^
1220
1221 ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
1222 ROM_LOAD( "cchip_b41-05.43", 0x0000, 0x2000, CRC(75c52553) SHA1(87bbaefab90e7d43f63556fbae3e937baf9d397b) ) /* is the C-Chip the same as the final? */
1223
1224 ROM_REGION( 0x80000, "tc0100scn", 0 )
1225 ROM_LOAD16_BYTE( "abbe.ic9", 0x00001, 0x20000, CRC(50e6581c) SHA1(230724d65c9b1ea5d72117dca077464dd599ad68) ) // first 2 == first half b41-03.1 but split
1226 ROM_LOAD16_BYTE( "0ac8.ic15", 0x00000, 0x20000, CRC(29002fc4) SHA1(5ddbefc0d173865802362990e99a3b542c096412) ) // ^
1227 ROM_LOAD16_BYTE( "5ebf.ic5", 0x40001, 0x20000, CRC(dac6f11f) SHA1(8c79d05ca539ebfbec35c7426c207937745c1949) ) // these 2 have differences
1228 ROM_LOAD16_BYTE( "77c8.ic12", 0x40000, 0x20000, CRC(d8aaae12) SHA1(240dda7d7e74ffc6a084c39ca19903fd35ad0157) ) // ^
1229
1230 ROM_REGION( 0x80000, "pc090oj", 0 )
1231 ROM_LOAD16_BYTE( "9369.ic19", 0x00001, 0x20000, CRC(a9dd7f90) SHA1(c3acf2dcd9325b9a74967d4b9cfff59bdb4045c6) ) // these 4 == b41-02.7 but split
1232 ROM_LOAD16_BYTE( "e3ed.ic25", 0x00000, 0x20000, CRC(7cc66ee2) SHA1(145d3bd0e3ef765874fc679e709391d516e74ef0) ) // ^
1233 ROM_LOAD16_BYTE( "03eb.ic16", 0x40001, 0x20000, CRC(39f32715) SHA1(5c555fde1ae0bb1e796e0122157bc694392122f3) ) // ^
1234 ROM_LOAD16_BYTE( "b8e1.ic22", 0x40000, 0x20000, CRC(15b836cf) SHA1(0f7e5cb6a57c336125909e28af664fe7387947d4) ) // ^
1235
1236 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1237 ROM_LOAD( "b41-13.20", 0x00000, 0x10000, CRC(9e464254) SHA1(b6f6126b54c15320ecaa652d0eeabaa4cd94bd26) ) // missing from dump /* banked */
1238
1239 ROM_REGION( 0x80000, "ymsnd", 0 ) /* ADPCM samples */
1240 ROM_LOAD( "6089.ic17", 0x00000, 0x20000, CRC(b092783c) SHA1(e13f765e2884b6194926bf982595de18376ffef9) ) // these 4 == b41-04.48 but split
1241 ROM_LOAD( "2e1f.ic14", 0x20000, 0x20000, CRC(df1f87c0) SHA1(ad3df38c22f1bb7bdc449922bd3c2a5c78aa87f8) ) // ^
1242 ROM_LOAD( "f66e.ic11", 0x40000, 0x20000, CRC(c6df1b3e) SHA1(84d6ad3e3af565060aa4324c6e3e91e4dc5089b6) ) // ^
1243 ROM_LOAD( "49d7.ic7", 0x60000, 0x20000, CRC(5584c02c) SHA1(00402df66debb257c97a609a37de0f8eeeb6e9f0) ) // ^
1244 ROM_END
1245
1246 ROM_START( asuka ) /* Taito PCB: ASKA&ASKA - K1100388A / J1100169A */
1247 ROM_REGION( 0x100000, "maincpu", 0 ) /* 1024k for 68000 code */
1248 ROM_LOAD16_BYTE( "b68-13.ic23", 0x00000, 0x20000, CRC(855efb3e) SHA1(644e02e207adeaec7839c824688d88ab8d046418) )
1249 ROM_LOAD16_BYTE( "b68-12.ic8", 0x00001, 0x20000, CRC(271eeee9) SHA1(c08e347be4aae929c0ab95ff7618edaa1a7d6da9) )
1250 /* 0x040000 - 0x7ffff is intentionally empty */
1251 ROM_LOAD16_WORD( "b68-03.ic30", 0x80000, 0x80000, CRC(d3a59b10) SHA1(35a2ff18b64e73ac5e17484354c0cc58bc2cd7fc) ) /* Fix ROM */
1252
1253 ROM_REGION( 0x80000, "tc0100scn", 0 )
1254 ROM_LOAD16_WORD_SWAP( "b68-01.ic3", 0x00000, 0x80000, CRC(89f32c94) SHA1(74fbb699e05e2336509cb5ac06ed94335ff870d5) ) /* SCR tiles (8 x 8) */
1255
1256 ROM_REGION( 0xa0000, "pc090oj", 0 )
1257 ROM_LOAD16_WORD_SWAP( "b68-02.ic6", 0x00000, 0x80000, CRC(f5018cd3) SHA1(860ce140ae369556d03d5d78987b87c0d6070df5) ) /* Sprites (16 x 16) */
1258 ROM_LOAD16_BYTE ( "b68-07.ic5", 0x80001, 0x10000, CRC(c113acc8) SHA1(613c61a78df73dcb0b9c9018ae829e865baac772) )
1259 ROM_LOAD16_BYTE ( "b68-06.ic4", 0x80000, 0x10000, CRC(f517e64d) SHA1(8be491bfe0f7eed58521de9d31da677acf635c23) )
1260
1261 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1262 ROM_LOAD( "b68-11.ic27", 0x00000, 0x10000, CRC(c378b508) SHA1(1b145fe736b924f298e02532cf9f26cc18b42ca7) ) /* banked */
1263
1264 ROM_REGION( 0x10000, "msm", 0 ) /* ADPCM samples */
1265 ROM_LOAD( "b68-10.ic24", 0x00000, 0x10000, CRC(387aaf40) SHA1(47c583564ef1d49ece15f97221b2e073e8fb0544) )
1266
1267 ROM_REGION( 0x144, "pals", 0 )
1268 ROM_LOAD( "b68-04.ic32", 0x00000, 0x144, CRC(9be618d1) SHA1(61ee33c3db448a05ff8f455e77fe17d51106baec) )
1269 ROM_LOAD( "b68-05.ic43", 0x00000, 0x104, CRC(d6524ccc) SHA1(f3b56253692aebb63278d47832fc27b8b212b59c) )
1270 ROM_END
1271
1272 ROM_START( asukaj ) /* Known to exist but not dumped: revision 1 with B68 08-1 & B68 09-1 program ROMs */
1273 ROM_REGION( 0x100000, "maincpu", 0 ) /* 1024k for 68000 code */
1274 ROM_LOAD16_BYTE( "b68-09.ic23", 0x00000, 0x20000, CRC(1eaa1bbb) SHA1(01ca6a5f3c47dab49654b84601119714eb329cc5) )
1275 ROM_LOAD16_BYTE( "b68-08.ic8", 0x00001, 0x20000, CRC(8cc96e60) SHA1(dc94f3fd48c0407ec72e8330bc688e9e16d39213) )
1276 /* 0x040000 - 0x7ffff is intentionally empty */
1277 ROM_LOAD16_WORD( "b68-03.ic30", 0x80000, 0x80000, CRC(d3a59b10) SHA1(35a2ff18b64e73ac5e17484354c0cc58bc2cd7fc) ) /* Fix ROM */
1278
1279 ROM_REGION( 0x80000, "tc0100scn", 0 )
1280 ROM_LOAD16_WORD_SWAP( "b68-01.ic3", 0x00000, 0x80000, CRC(89f32c94) SHA1(74fbb699e05e2336509cb5ac06ed94335ff870d5) ) /* SCR tiles (8 x 8) */
1281
1282 ROM_REGION( 0xa0000, "pc090oj", 0 )
1283 ROM_LOAD16_WORD_SWAP( "b68-02.ic6", 0x00000, 0x80000, CRC(f5018cd3) SHA1(860ce140ae369556d03d5d78987b87c0d6070df5) ) /* Sprites (16 x 16) */
1284 ROM_LOAD16_BYTE ( "b68-07.ic5", 0x80001, 0x10000, CRC(c113acc8) SHA1(613c61a78df73dcb0b9c9018ae829e865baac772) )
1285 ROM_LOAD16_BYTE ( "b68-06.ic4", 0x80000, 0x10000, CRC(f517e64d) SHA1(8be491bfe0f7eed58521de9d31da677acf635c23) )
1286
1287 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1288 ROM_LOAD( "b68-11.ic27", 0x00000, 0x10000, CRC(c378b508) SHA1(1b145fe736b924f298e02532cf9f26cc18b42ca7) ) /* banked */
1289
1290 ROM_REGION( 0x10000, "msm", 0 ) /* ADPCM samples */
1291 ROM_LOAD( "b68-10.ic24", 0x00000, 0x10000, CRC(387aaf40) SHA1(47c583564ef1d49ece15f97221b2e073e8fb0544) )
1292
1293 ROM_REGION( 0x144, "pals", 0 )
1294 ROM_LOAD( "b68-04.ic32", 0x00000, 0x144, CRC(9be618d1) SHA1(61ee33c3db448a05ff8f455e77fe17d51106baec) )
1295 ROM_LOAD( "b68-05.ic43", 0x00000, 0x104, CRC(d6524ccc) SHA1(f3b56253692aebb63278d47832fc27b8b212b59c) )
1296 ROM_END
1297
1298 ROM_START( mofflott )
1299 ROM_REGION( 0x100000, "maincpu", 0 ) /* 1024k for 68000 code */
1300 ROM_LOAD16_BYTE( "c17-09.bin", 0x00000, 0x20000, CRC(05ee110f) SHA1(8cedd911d3fdcca1e409260d12dd03a2fb35ef86) )
1301 ROM_LOAD16_BYTE( "c17-08.bin", 0x00001, 0x20000, CRC(d0aacffd) SHA1(2c5ec4020aad2c1cd3a004dc70a12e0d77eb6aa7) )
1302 /* 0x40000 - 0x7ffff is intentionally empty */
1303 ROM_LOAD16_WORD( "c17-03.bin", 0x80000, 0x80000, CRC(27047fc3) SHA1(1f88a7a42a94bac0e164a69896ae168ab821fbb3) ) /* Fix ROM */
1304
1305 ROM_REGION( 0x80000, "tc0100scn", 0 )
1306 ROM_LOAD16_WORD_SWAP( "c17-01.bin", 0x00000, 0x80000, CRC(e9466d42) SHA1(93d533a9a992e3ff537e914577ede41729235826) ) /* SCR tiles (8 x 8) */
1307
1308 ROM_REGION( 0xa0000, "pc090oj", 0 )
1309 ROM_LOAD16_WORD_SWAP( "c17-02.bin", 0x00000, 0x80000, CRC(8860a8db) SHA1(372adea8835a9524ece30ab71181ef9d05b120e9) ) /* Sprites (16 x 16) */
1310 ROM_LOAD16_BYTE ( "c17-05.bin", 0x80001, 0x10000, CRC(57ac4741) SHA1(3188ff0866324c68fba8e9745a0cb186784cb53d) )
1311 ROM_LOAD16_BYTE ( "c17-04.bin", 0x80000, 0x10000, CRC(f4250410) SHA1(1f5f6baca4aa695ce2ae5c65adcb460da872a239) )
1312
1313 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1314 ROM_LOAD( "c17-07.bin", 0x00000, 0x10000, CRC(cdb7bc2c) SHA1(5113055c954a39918436db75cc06b53c29c60728) ) /* banked */
1315
1316 ROM_REGION( 0x10000, "msm", 0 ) /* ADPCM samples */
1317 ROM_LOAD( "c17-06.bin", 0x00000, 0x10000, CRC(5c332125) SHA1(408f42df18b38347c8a4e177a9484162a66877e1) )
1318 ROM_END
1319
1320 ROM_START( cadash )
1321 ROM_REGION( 0x80000, "maincpu", 0 ) /* 512k for 68000 code */
1322 ROM_LOAD16_BYTE( "c21_14.ic11", 0x00000, 0x20000, CRC(5daf13fb) SHA1(c2be42b2cdc90b6463ce87211cf711c951b17fab) )
1323 ROM_LOAD16_BYTE( "c21_16.ic15", 0x00001, 0x20000, CRC(cbaa2e75) SHA1(c41ea71f2b0e72bf993dfcfd30f1994cae9f52a0) )
1324 ROM_LOAD16_BYTE( "c21_13.ic10", 0x40000, 0x20000, CRC(6b9e0ee9) SHA1(06314b9c0be19314e6b6ecb5274a63eb36b642f5) )
1325 ROM_LOAD16_BYTE( "c21_17.ic14", 0x40001, 0x20000, CRC(bf9a578a) SHA1(42bde46081db6be2f61eaf171438ecc9264d18be) )
1326
1327 ROM_REGION( 0x80000, "tc0100scn", 0 )
1328 ROM_LOAD16_WORD_SWAP( "c21-02.9", 0x00000, 0x80000, CRC(205883b9) SHA1(5aafee8cab3f949a7db91bcc26912f331041b51e) ) /* SCR tiles (8 x 8) */
1329
1330 ROM_REGION( 0x80000, "pc090oj", 0 )
1331 ROM_LOAD16_WORD_SWAP( "c21-01.1", 0x00000, 0x80000, CRC(1ff6f39c) SHA1(742f296efc8073fafa73da2c8d7d26ca9514b6bf) ) /* Sprites (16 x 16) */
1332
1333 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1334 ROM_LOAD( "c21-08.38", 0x00000, 0x10000, CRC(dca495a0) SHA1(4e0f401f1b967da75f33fd7294860ad0b4bf2dce) ) /* banked */
1335
1336 ROM_REGION( 0x08000, "subcpu", 0 ) /* HD64180RP8 code (link) */
1337 ROM_LOAD( "c21-07.57", 0x00000, 0x08000, CRC(f02292bd) SHA1(0a5c06a048ad67f90e0d766b504582e9eef035f7) )
1338
1339 ROM_REGION( 0x0800, "plds", 0 )
1340 ROM_LOAD( "pal16l8b-c21-09.ic34", 0x0000, 0x0104, CRC(4b296700) SHA1(79d6c8fb13e30795d9c1f49885ada658f9722b68) )
1341 ROM_LOAD( "pal16l8b-c21-10.ic45", 0x0200, 0x0104, CRC(35642f00) SHA1(a04403536b0ef7e8e7251dfc47274a6c8772fd2d) )
1342 ROM_LOAD( "pal16l8b-c21-11-1.ic46", 0x0400, 0x0104, CRC(f4791e24) SHA1(7e3bbffec7b8f9171e6e09706e5622fef3c99ca0) )
1343 ROM_LOAD( "pal20l8b-c21-12.ic47", 0x0600, 0x0144, CRC(bbc2cc97) SHA1(d4a68f28e0d3f5a3b39ecc25640bc9197ad0260b) )
1344 ROM_END
1345
1346 ROM_START( cadashp )
1347 ROM_REGION( 0x80000, "maincpu", 0 ) /* 512k for 68000 code */
1348 ROM_LOAD16_BYTE( "euro main h.ic11", 0x00000, 0x20000, CRC(9dae00ca) SHA1(e80a069d1afbc624fa3e9cbe9c18bcd0364b3889) )
1349 ROM_LOAD16_BYTE( "euro main l.ic15", 0x00001, 0x20000, CRC(ba66b6a5) SHA1(26040c847209c2fd25805eefb99c280b12564a17) )
1350 ROM_LOAD16_BYTE( "euro data h.bin", 0x40000, 0x20000, CRC(bcce9d44) SHA1(e20a79e1e1c3367f92d05a2313cbeee122c1d3c5) )
1351 ROM_LOAD16_BYTE( "euro data l.bin", 0x40001, 0x20000, CRC(21f5b591) SHA1(6ff70f79bca705407ab9a4825466826bc2dbab32) )
1352
1353 ROM_REGION( 0x08000, "subcpu", 0 ) /* HD64180RP8 code (link) */
1354 ROM_LOAD( "com.ic57", 0x00000, 0x08000, CRC(bae1a92f) SHA1(dbe10a02a294dfa7d6052a692c3a49aad85d6ffd) )
1355
1356 // all other ROMs are under some kind of epoxy, assuming to be the same..
1357 ROM_REGION( 0x80000, "tc0100scn", 0 )
1358 ROM_LOAD16_WORD_SWAP( "c21-02.9", 0x00000, 0x80000, CRC(205883b9) SHA1(5aafee8cab3f949a7db91bcc26912f331041b51e) ) /* SCR tiles (8 x 8) */
1359
1360 ROM_REGION( 0x80000, "pc090oj", 0 )
1361 ROM_LOAD16_WORD_SWAP( "c21-01.1", 0x00000, 0x80000, CRC(1ff6f39c) SHA1(742f296efc8073fafa73da2c8d7d26ca9514b6bf) ) /* Sprites (16 x 16) */
1362
1363 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1364 ROM_LOAD( "c21-08.38", 0x00000, 0x10000, CRC(dca495a0) SHA1(4e0f401f1b967da75f33fd7294860ad0b4bf2dce) ) /* banked */
1365
1366 ROM_REGION( 0x0800, "plds", 0 )
1367 ROM_LOAD( "pal16l8b-c21-09.ic34", 0x0000, 0x0104, CRC(4b296700) SHA1(79d6c8fb13e30795d9c1f49885ada658f9722b68) )
1368 ROM_LOAD( "pal16l8b-c21-10.ic45", 0x0200, 0x0104, CRC(35642f00) SHA1(a04403536b0ef7e8e7251dfc47274a6c8772fd2d) )
1369 ROM_LOAD( "pal16l8b-c21-11-1.ic46", 0x0400, 0x0104, CRC(f4791e24) SHA1(7e3bbffec7b8f9171e6e09706e5622fef3c99ca0) )
1370 ROM_LOAD( "pal20l8b-c21-12.ic47", 0x0600, 0x0144, CRC(bbc2cc97) SHA1(d4a68f28e0d3f5a3b39ecc25640bc9197ad0260b) )
1371 ROM_END
1372
1373 ROM_START( cadashj )
1374 ROM_REGION( 0x80000, "maincpu", 0 ) /* 512k for 68000 code */
1375 ROM_LOAD16_BYTE( "c21_04-2.ic11", 0x00000, 0x20000, CRC(7a9c1828) SHA1(491eea29efc47159ad904e734a980c444bfbd8aa) )
1376 ROM_LOAD16_BYTE( "c21_06-2.ic15", 0x00001, 0x20000, CRC(c9d6440a) SHA1(2555af4c4043811a53e9f069d97571672237c18e) )
1377 ROM_LOAD16_BYTE( "c21_03-2.ic10", 0x40000, 0x20000, CRC(30afc320) SHA1(d4c1d1ef30be633244c6b71b24491d6eb3562cef) )
1378 ROM_LOAD16_BYTE( "c21_05-2.ic14", 0x40001, 0x20000, CRC(2bc93209) SHA1(3352659ea9364ca9462343f03e26dd10087d6834) )
1379
1380 ROM_REGION( 0x80000, "tc0100scn", 0 )
1381 ROM_LOAD16_WORD_SWAP( "c21-02.9", 0x00000, 0x80000, CRC(205883b9) SHA1(5aafee8cab3f949a7db91bcc26912f331041b51e) ) /* SCR tiles (8 x 8) */
1382
1383 ROM_REGION( 0x80000, "pc090oj", 0 )
1384 ROM_LOAD16_WORD_SWAP( "c21-01.1", 0x00000, 0x80000, CRC(1ff6f39c) SHA1(742f296efc8073fafa73da2c8d7d26ca9514b6bf) ) /* Sprites (16 x 16) */
1385
1386 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1387 ROM_LOAD( "c21-08.38", 0x00000, 0x10000, CRC(dca495a0) SHA1(4e0f401f1b967da75f33fd7294860ad0b4bf2dce) ) /* banked */
1388
1389 ROM_REGION( 0x08000, "subcpu", ROMREGION_ERASE00 ) /* HD64180RP8 code (link) */
1390 ROM_LOAD( "c21-07.57", 0x00000, 0x08000, CRC(f02292bd) SHA1(0a5c06a048ad67f90e0d766b504582e9eef035f7) )
1391
1392 ROM_REGION( 0x0800, "plds", 0 )
1393 ROM_LOAD( "pal16l8b-c21-09.ic34", 0x0000, 0x0104, CRC(4b296700) SHA1(79d6c8fb13e30795d9c1f49885ada658f9722b68) )
1394 ROM_LOAD( "pal16l8b-c21-10.ic45", 0x0200, 0x0104, CRC(35642f00) SHA1(a04403536b0ef7e8e7251dfc47274a6c8772fd2d) )
1395 ROM_LOAD( "pal16l8b-c21-11-1.ic46", 0x0400, 0x0104, CRC(f4791e24) SHA1(7e3bbffec7b8f9171e6e09706e5622fef3c99ca0) )
1396 ROM_LOAD( "pal20l8b-c21-12.ic47", 0x0600, 0x0144, CRC(bbc2cc97) SHA1(d4a68f28e0d3f5a3b39ecc25640bc9197ad0260b) )
1397 ROM_END
1398
1399 ROM_START( cadashj1 )
1400 ROM_REGION( 0x80000, "maincpu", 0 ) /* 512k for 68000 code */
1401 ROM_LOAD16_BYTE( "c21_04-1.ic11", 0x00000, 0x20000, CRC(cc22ebe5) SHA1(170787e7ab2055af593f3f2596cab44feb53b060) )
1402 ROM_LOAD16_BYTE( "c21_06-1.ic15", 0x00001, 0x20000, CRC(26e03304) SHA1(c8b271e455dde312c8871dc8dd4d3f0f063fa894) )
1403 ROM_LOAD16_BYTE( "c21_03-1.ic10", 0x40000, 0x20000, CRC(c54888ed) SHA1(8a58da25eb8986a1c6496290e82344840badef0a) )
1404 ROM_LOAD16_BYTE( "c21_05-1.ic14", 0x40001, 0x20000, CRC(834018d2) SHA1(0b1a29316f90a98478b47d7fa3f05c68e5ddd9b3) )
1405
1406 ROM_REGION( 0x80000, "tc0100scn", 0 )
1407 ROM_LOAD16_WORD_SWAP( "c21-02.9", 0x00000, 0x80000, CRC(205883b9) SHA1(5aafee8cab3f949a7db91bcc26912f331041b51e) ) /* SCR tiles (8 x 8) */
1408
1409 ROM_REGION( 0x80000, "pc090oj", 0 )
1410 ROM_LOAD16_WORD_SWAP( "c21-01.1", 0x00000, 0x80000, CRC(1ff6f39c) SHA1(742f296efc8073fafa73da2c8d7d26ca9514b6bf) ) /* Sprites (16 x 16) */
1411
1412 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1413 ROM_LOAD( "c21-08.38", 0x00000, 0x10000, CRC(dca495a0) SHA1(4e0f401f1b967da75f33fd7294860ad0b4bf2dce) ) /* banked */
1414
1415 ROM_REGION( 0x08000, "subcpu", ROMREGION_ERASE00 ) /* HD64180RP8 code (link) */ // the board this set was from did not have the link section populated
1416 ROM_LOAD( "c21-07.57", 0x00000, 0x08000, CRC(f02292bd) SHA1(0a5c06a048ad67f90e0d766b504582e9eef035f7) )
1417
1418 ROM_REGION( 0x0800, "plds", 0 )
1419 ROM_LOAD( "pal16l8b-c21-09.ic34", 0x0000, 0x0104, CRC(4b296700) SHA1(79d6c8fb13e30795d9c1f49885ada658f9722b68) )
1420 ROM_LOAD( "pal16l8b-c21-10.ic45", 0x0200, 0x0104, CRC(35642f00) SHA1(a04403536b0ef7e8e7251dfc47274a6c8772fd2d) )
1421 ROM_LOAD( "pal16l8b-c21-11-1.ic46", 0x0400, 0x0104, CRC(f4791e24) SHA1(7e3bbffec7b8f9171e6e09706e5622fef3c99ca0) )
1422 ROM_LOAD( "pal20l8b-c21-12.ic47", 0x0600, 0x0144, CRC(bbc2cc97) SHA1(d4a68f28e0d3f5a3b39ecc25640bc9197ad0260b) )
1423 ROM_END
1424
1425 ROM_START( cadashjo )
1426 ROM_REGION( 0x80000, "maincpu", 0 ) /* 512k for 68000 code */
1427 ROM_LOAD16_BYTE( "c21_04.ic11", 0x00000, 0x20000, CRC(be7d3f12) SHA1(16e445317d053a19fc430625743f4afa54ce1d8e) )
1428 ROM_LOAD16_BYTE( "c21_06.ic15", 0x00001, 0x20000, CRC(1db3fe02) SHA1(3abb341596eed8f991ed2002d2e7b71fa2dd099d) )
1429 ROM_LOAD16_BYTE( "c21_03.ic10", 0x40000, 0x20000, CRC(7e31c5a3) SHA1(a0abc5862d594800934a4792de4ec655f60c1f23) )
1430 ROM_LOAD16_BYTE( "c21_05.ic14", 0x40001, 0x20000, CRC(a4f4901d) SHA1(a3e8d9ad033e6fb1c8383669e6e59f2f79386e32) )
1431
1432 ROM_REGION( 0x80000, "tc0100scn", 0 )
1433 ROM_LOAD16_WORD_SWAP( "c21-02.9", 0x00000, 0x80000, CRC(205883b9) SHA1(5aafee8cab3f949a7db91bcc26912f331041b51e) ) /* SCR tiles (8 x 8) */
1434
1435 ROM_REGION( 0x80000, "pc090oj", 0 )
1436 ROM_LOAD16_WORD_SWAP( "c21-01.1", 0x00000, 0x80000, CRC(1ff6f39c) SHA1(742f296efc8073fafa73da2c8d7d26ca9514b6bf) ) /* Sprites (16 x 16) */
1437
1438 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1439 ROM_LOAD( "c21-08.38", 0x00000, 0x10000, CRC(dca495a0) SHA1(4e0f401f1b967da75f33fd7294860ad0b4bf2dce) ) /* banked */
1440
1441 ROM_REGION( 0x08000, "subcpu", ROMREGION_ERASE00 ) /* HD64180RP8 code (link) */ // the board this set was from did not have the link section populated
1442 ROM_LOAD( "c21-07.57", 0x00000, 0x08000, CRC(f02292bd) SHA1(0a5c06a048ad67f90e0d766b504582e9eef035f7) )
1443
1444 ROM_REGION( 0x0800, "plds", 0 )
1445 ROM_LOAD( "pal16l8b-c21-09.ic34", 0x0000, 0x0104, CRC(4b296700) SHA1(79d6c8fb13e30795d9c1f49885ada658f9722b68) )
1446 ROM_LOAD( "pal16l8b-c21-10.ic45", 0x0200, 0x0104, CRC(35642f00) SHA1(a04403536b0ef7e8e7251dfc47274a6c8772fd2d) )
1447 ROM_LOAD( "pal16l8b-c21-11-1.ic46", 0x0400, 0x0104, CRC(f4791e24) SHA1(7e3bbffec7b8f9171e6e09706e5622fef3c99ca0) )
1448 ROM_LOAD( "pal20l8b-c21-12.ic47", 0x0600, 0x0144, CRC(bbc2cc97) SHA1(d4a68f28e0d3f5a3b39ecc25640bc9197ad0260b) )
1449 ROM_END
1450
1451 ROM_START( cadashu )
1452 ROM_REGION( 0x80000, "maincpu", 0 ) /* 512k for 68000 code */
1453 ROM_LOAD16_BYTE( "c21_14-2.ic11", 0x00000, 0x20000, CRC(f823d418) SHA1(5b4a0b42fb5a2e1ba1e25465762cdc24c41b33f8) )
1454 ROM_LOAD16_BYTE( "c21_16-2.ic15", 0x00001, 0x20000, CRC(90165577) SHA1(b8e163cf60933aaaa53873fbc866d8d1750240ab) )
1455 ROM_LOAD16_BYTE( "c21_13-2.ic10", 0x40000, 0x20000, CRC(92dcc3ae) SHA1(7d11c6d8b54468f0c56b4f58adc176e4d46a62eb) )
1456 ROM_LOAD16_BYTE( "c21_15-2.ic14", 0x40001, 0x20000, CRC(f915d26a) SHA1(cdc7e6a35077ebff937350aee1eee332352e9383) )
1457
1458 ROM_REGION( 0x80000, "tc0100scn", 0 )
1459 ROM_LOAD16_WORD_SWAP( "c21-02.9", 0x00000, 0x80000, CRC(205883b9) SHA1(5aafee8cab3f949a7db91bcc26912f331041b51e) ) /* SCR tiles (8 x 8) */
1460
1461 ROM_REGION( 0x80000, "pc090oj", 0 )
1462 ROM_LOAD16_WORD_SWAP( "c21-01.1", 0x00000, 0x80000, CRC(1ff6f39c) SHA1(742f296efc8073fafa73da2c8d7d26ca9514b6bf) ) /* Sprites (16 x 16) */
1463
1464 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1465 ROM_LOAD( "c21-08.38", 0x00000, 0x10000, CRC(dca495a0) SHA1(4e0f401f1b967da75f33fd7294860ad0b4bf2dce) ) /* banked */
1466
1467 ROM_REGION( 0x08000, "subcpu", 0 ) /* HD64180RP8 code (link) */
1468 ROM_LOAD( "c21-07.57", 0x00000, 0x08000, CRC(f02292bd) SHA1(0a5c06a048ad67f90e0d766b504582e9eef035f7) )
1469
1470 ROM_REGION( 0x0800, "plds", 0 )
1471 ROM_LOAD( "pal16l8b-c21-09.ic34", 0x0000, 0x0104, CRC(4b296700) SHA1(79d6c8fb13e30795d9c1f49885ada658f9722b68) )
1472 ROM_LOAD( "pal16l8b-c21-10.ic45", 0x0200, 0x0104, CRC(35642f00) SHA1(a04403536b0ef7e8e7251dfc47274a6c8772fd2d) )
1473 ROM_LOAD( "pal16l8b-c21-11-1.ic46", 0x0400, 0x0104, CRC(f4791e24) SHA1(7e3bbffec7b8f9171e6e09706e5622fef3c99ca0) )
1474 ROM_LOAD( "pal20l8b-c21-12.ic47", 0x0600, 0x0144, CRC(bbc2cc97) SHA1(d4a68f28e0d3f5a3b39ecc25640bc9197ad0260b) )
1475 ROM_END
1476
1477 ROM_START( cadashi )
1478 ROM_REGION( 0x80000, "maincpu", 0 ) /* 512k for 68000 code */
1479 ROM_LOAD16_BYTE( "c21_27-1.ic11", 0x00000, 0x20000, CRC(d1d9e613) SHA1(296c188daec962bdb4e78e20f1cc4c7d1f4dda09) )
1480 ROM_LOAD16_BYTE( "c21_29-1.ic15", 0x00001, 0x20000, CRC(142256ef) SHA1(9ffc64d7c900bfa0300de9e6d18c7458f4c76ed7) )
1481 ROM_LOAD16_BYTE( "c21_26-1.ic10", 0x40000, 0x20000, CRC(c9cf6e30) SHA1(872c871cd60e0aa7149660277f67f90748d82743) )
1482 ROM_LOAD16_BYTE( "c21_28-1.ic14", 0x40001, 0x20000, CRC(641fc9dd) SHA1(1497e39f6b250de39ef2785aaca7e68a803612fa) )
1483
1484 ROM_REGION( 0x80000, "tc0100scn", 0 )
1485 ROM_LOAD16_WORD_SWAP( "c21-02.9", 0x00000, 0x80000, CRC(205883b9) SHA1(5aafee8cab3f949a7db91bcc26912f331041b51e) ) /* SCR tiles (8 x 8) */
1486
1487 ROM_REGION( 0x80000, "pc090oj", 0 )
1488 ROM_LOAD16_WORD_SWAP( "c21-01.1", 0x00000, 0x80000, CRC(1ff6f39c) SHA1(742f296efc8073fafa73da2c8d7d26ca9514b6bf) ) /* Sprites (16 x 16) */
1489
1490 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1491 ROM_LOAD( "c21-08.38", 0x00000, 0x10000, CRC(dca495a0) SHA1(4e0f401f1b967da75f33fd7294860ad0b4bf2dce) ) /* banked */
1492
1493 ROM_REGION( 0x08000, "subcpu", 0 ) /* HD64180RP8 code (link) */
1494 ROM_LOAD( "c21-07.57", 0x00000, 0x08000, CRC(f02292bd) SHA1(0a5c06a048ad67f90e0d766b504582e9eef035f7) )
1495
1496 ROM_REGION( 0x0800, "plds", 0 )
1497 ROM_LOAD( "pal16l8b-c21-09.ic34", 0x0000, 0x0104, CRC(4b296700) SHA1(79d6c8fb13e30795d9c1f49885ada658f9722b68) )
1498 ROM_LOAD( "pal16l8b-c21-10.ic45", 0x0200, 0x0104, CRC(35642f00) SHA1(a04403536b0ef7e8e7251dfc47274a6c8772fd2d) )
1499 ROM_LOAD( "pal16l8b-c21-11-1.ic46", 0x0400, 0x0104, CRC(f4791e24) SHA1(7e3bbffec7b8f9171e6e09706e5622fef3c99ca0) )
1500 ROM_LOAD( "pal20l8b-c21-12.ic47", 0x0600, 0x0144, CRC(bbc2cc97) SHA1(d4a68f28e0d3f5a3b39ecc25640bc9197ad0260b) )
1501 ROM_END
1502
1503 ROM_START( cadashf )
1504 ROM_REGION( 0x80000, "maincpu", 0 ) /* 512k for 68000 code */
1505 ROM_LOAD16_BYTE( "c21_19.ic11", 0x00000, 0x20000, CRC(4d70543b) SHA1(4fc8d4a9f978232a484af3d91bf8eea2afc839a7) )
1506 ROM_LOAD16_BYTE( "c21_21.ic15", 0x00001, 0x20000, CRC(0e5b9950) SHA1(872919bab057fc9e5baffe5dfe35b1b8c1ed0105) )
1507 ROM_LOAD16_BYTE( "c21_18.ic10", 0x40000, 0x20000, CRC(8a19e59b) SHA1(b42a0c8273ca6f202a5dc6e33965423da3b074d8) )
1508 ROM_LOAD16_BYTE( "c21_20.ic14", 0x40001, 0x20000, CRC(b96acfd9) SHA1(d05b55fd5bbf8fd0e5a7272d1951f27a4900371f) )
1509
1510 ROM_REGION( 0x80000, "tc0100scn", 0 )
1511 ROM_LOAD16_WORD_SWAP( "c21-02.9", 0x00000, 0x80000, CRC(205883b9) SHA1(5aafee8cab3f949a7db91bcc26912f331041b51e) ) /* SCR tiles (8 x 8) */
1512
1513 ROM_REGION( 0x80000, "pc090oj", 0 )
1514 ROM_LOAD16_WORD_SWAP( "c21-01.1", 0x00000, 0x80000, CRC(1ff6f39c) SHA1(742f296efc8073fafa73da2c8d7d26ca9514b6bf) ) /* Sprites (16 x 16) */
1515
1516 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1517 ROM_LOAD( "c21-08.38", 0x00000, 0x10000, CRC(dca495a0) SHA1(4e0f401f1b967da75f33fd7294860ad0b4bf2dce) ) /* banked */
1518
1519 ROM_REGION( 0x08000, "subcpu", 0 ) /* HD64180RP8 code (link) */
1520 ROM_LOAD( "c21-07.57", 0x00000, 0x08000, CRC(f02292bd) SHA1(0a5c06a048ad67f90e0d766b504582e9eef035f7) )
1521
1522 ROM_REGION( 0x0800, "plds", 0 )
1523 ROM_LOAD( "pal16l8b-c21-09.ic34", 0x0000, 0x0104, CRC(4b296700) SHA1(79d6c8fb13e30795d9c1f49885ada658f9722b68) )
1524 ROM_LOAD( "pal16l8b-c21-10.ic45", 0x0200, 0x0104, CRC(35642f00) SHA1(a04403536b0ef7e8e7251dfc47274a6c8772fd2d) )
1525 ROM_LOAD( "pal16l8b-c21-11-1.ic46", 0x0400, 0x0104, CRC(f4791e24) SHA1(7e3bbffec7b8f9171e6e09706e5622fef3c99ca0) )
1526 ROM_LOAD( "pal20l8b-c21-12.ic47", 0x0600, 0x0144, CRC(bbc2cc97) SHA1(d4a68f28e0d3f5a3b39ecc25640bc9197ad0260b) )
1527 ROM_END
1528
1529 ROM_START( cadashg )
1530 ROM_REGION( 0x80000, "maincpu", 0 ) /* 512k for 68000 code */
1531 ROM_LOAD16_BYTE( "c21_23-1.ic11", 0x00000, 0x20000, CRC(30ddbabe) SHA1(f48ea6fe36c4d9fe291232fd7adddb8f3547270f) )
1532 ROM_LOAD16_BYTE( "c21_25-1.ic15", 0x00001, 0x20000, CRC(24e10611) SHA1(6f406267777dd693a3869ccb34fe3f2f8dea857d) )
1533 ROM_LOAD16_BYTE( "c21_22-1.ic10", 0x40000, 0x20000, CRC(daf58b2d) SHA1(7a64df848f46f27bb6f9757ce0cc81311c2f172f) )
1534 ROM_LOAD16_BYTE( "c21_24-1.ic14", 0x40001, 0x20000, CRC(2359b93e) SHA1(9a5ce34dd8667a987ab8b6e6246f0ad032af868f) )
1535
1536 ROM_REGION( 0x80000, "tc0100scn", 0 )
1537 ROM_LOAD16_WORD_SWAP( "c21-02.9", 0x00000, 0x80000, CRC(205883b9) SHA1(5aafee8cab3f949a7db91bcc26912f331041b51e) ) /* SCR tiles (8 x 8) */
1538
1539 ROM_REGION( 0x80000, "pc090oj", 0 )
1540 ROM_LOAD16_WORD_SWAP( "c21-01.1", 0x00000, 0x80000, CRC(1ff6f39c) SHA1(742f296efc8073fafa73da2c8d7d26ca9514b6bf) ) /* Sprites (16 x 16) */
1541
1542 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1543 ROM_LOAD( "c21-08.38", 0x00000, 0x10000, CRC(dca495a0) SHA1(4e0f401f1b967da75f33fd7294860ad0b4bf2dce) ) /* banked */
1544
1545 ROM_REGION( 0x08000, "subcpu", 0 ) /* HD64180RP8 code (link) */
1546 ROM_LOAD( "c21-07.57", 0x00000, 0x08000, CRC(f02292bd) SHA1(0a5c06a048ad67f90e0d766b504582e9eef035f7) )
1547
1548 ROM_REGION( 0x0800, "plds", 0 )
1549 ROM_LOAD( "pal16l8b-c21-09.ic34", 0x0000, 0x0104, CRC(4b296700) SHA1(79d6c8fb13e30795d9c1f49885ada658f9722b68) )
1550 ROM_LOAD( "pal16l8b-c21-10.ic45", 0x0200, 0x0104, CRC(35642f00) SHA1(a04403536b0ef7e8e7251dfc47274a6c8772fd2d) )
1551 ROM_LOAD( "pal16l8b-c21-11-1.ic46", 0x0400, 0x0104, CRC(f4791e24) SHA1(7e3bbffec7b8f9171e6e09706e5622fef3c99ca0) )
1552 ROM_LOAD( "pal20l8b-c21-12.ic47", 0x0600, 0x0144, CRC(bbc2cc97) SHA1(d4a68f28e0d3f5a3b39ecc25640bc9197ad0260b) )
1553 ROM_END
1554
1555 ROM_START( cadashs ) // no labels on the program ROMs
1556 ROM_REGION( 0x80000, "maincpu", 0 ) /* 512k for 68000 code */
1557 ROM_LOAD16_BYTE( "ic11", 0x00000, 0x20000, CRC(6c11743e) SHA1(847266a04090b34e20985d65f4d1f7e7776efa02) )
1558 ROM_LOAD16_BYTE( "ic15", 0x00001, 0x20000, CRC(73224356) SHA1(28f8fa58bf62d8f9aa94115b84568f20810f5342) )
1559 ROM_LOAD16_BYTE( "ic10", 0x40000, 0x20000, CRC(57d659d9) SHA1(6bf0c7d514a65bd1a0d51fe1c6bb208419d016e6) )
1560 ROM_LOAD16_BYTE( "ic14", 0x40001, 0x20000, CRC(53c1b195) SHA1(5985304fa65a3f33a26fbd5dcccb153de6860841) )
1561
1562 ROM_REGION( 0x80000, "tc0100scn", 0 )
1563 ROM_LOAD16_WORD_SWAP( "c21-02.9", 0x00000, 0x80000, CRC(205883b9) SHA1(5aafee8cab3f949a7db91bcc26912f331041b51e) ) /* SCR tiles (8 x 8) */
1564
1565 ROM_REGION( 0x80000, "pc090oj", 0 )
1566 ROM_LOAD16_WORD_SWAP( "c21-01.1", 0x00000, 0x80000, CRC(1ff6f39c) SHA1(742f296efc8073fafa73da2c8d7d26ca9514b6bf) ) /* Sprites (16 x 16) */
1567
1568 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1569 ROM_LOAD( "c21-08.38", 0x00000, 0x10000, CRC(dca495a0) SHA1(4e0f401f1b967da75f33fd7294860ad0b4bf2dce) ) /* banked */
1570
1571 ROM_REGION( 0x08000, "subcpu", 0 ) /* HD64180RP8 code (link) */
1572 ROM_LOAD( "c21-07.57", 0x00000, 0x08000, CRC(f02292bd) SHA1(0a5c06a048ad67f90e0d766b504582e9eef035f7) )
1573
1574 ROM_REGION( 0x0800, "plds", 0 )
1575 ROM_LOAD( "pal16l8b-c21-09.ic34", 0x0000, 0x0104, CRC(4b296700) SHA1(79d6c8fb13e30795d9c1f49885ada658f9722b68) )
1576 ROM_LOAD( "pal16l8b-c21-10.ic45", 0x0200, 0x0104, CRC(35642f00) SHA1(a04403536b0ef7e8e7251dfc47274a6c8772fd2d) )
1577 ROM_LOAD( "pal16l8b-c21-11-1.ic46", 0x0400, 0x0104, CRC(f4791e24) SHA1(7e3bbffec7b8f9171e6e09706e5622fef3c99ca0) )
1578 ROM_LOAD( "pal20l8b-c21-12.ic47", 0x0600, 0x0144, CRC(bbc2cc97) SHA1(d4a68f28e0d3f5a3b39ecc25640bc9197ad0260b) )
1579 ROM_END
1580
1581 ROM_START( galmedes ) /* Taito PCB: K1100388A / J1100169A */
1582 ROM_REGION( 0x100000, "maincpu", 0 ) /* 1024k for 68000 code */
1583 ROM_LOAD16_BYTE( "gm-prg1.ic23", 0x00000, 0x20000, CRC(32a70753) SHA1(3bd094b7ae600dbc87ba74e8b2d6b86a68346f4f) )
1584 ROM_LOAD16_BYTE( "gm-prg0.ic8", 0x00001, 0x20000, CRC(fae546a4) SHA1(484cad5287daa495b347f6b5b065f3b3d02d8f0e) )
1585 /* 0x40000 - 0x7ffff is intentionally empty */
1586 ROM_LOAD16_WORD( "gm-30.ic30", 0x80000, 0x80000, CRC(4da2a407) SHA1(7bd0eb629dd7022a16e328612c786c544267f7bc) ) /* Fix ROM */
1587
1588 ROM_REGION( 0x80000, "tc0100scn", 0 )
1589 ROM_LOAD16_WORD_SWAP( "gm-scn.ic3", 0x00000, 0x80000, CRC(3bab0581) SHA1(56b79a4ffd9f4880a63450b7d1b79f029de75e20) ) /* SCR tiles (8 x 8) */
1590
1591 ROM_REGION( 0x80000, "pc090oj", 0 )
1592 ROM_LOAD16_WORD_SWAP( "gm-obj.ic6", 0x00000, 0x80000, CRC(7a4a1315) SHA1(e2010ee4222415fd55ba3102003be4151d29e39b) ) /* Sprites (16 x 16) */
1593
1594 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1595 ROM_LOAD( "gm-snd.ic27", 0x00000, 0x10000, CRC(d6f56c21) SHA1(ff9743448ac8ce57a2f8c33a26145e7b92cbe3c3) ) /* banked */
1596
1597 ROM_REGION( 0x10000, "msm", ROMREGION_ERASEFF ) /* ADPCM samples */
1598 /* Empty socket on Galmedes - but sound chips present */
1599
1600 ROM_REGION( 0x144, "pals", 0 )
1601 ROM_LOAD( "b68-04.ic32", 0x00000, 0x144, CRC(9be618d1) SHA1(61ee33c3db448a05ff8f455e77fe17d51106baec) )
1602 ROM_LOAD( "b68-05.ic43", 0x00000, 0x104, CRC(d6524ccc) SHA1(f3b56253692aebb63278d47832fc27b8b212b59c) )
1603 ROM_END
1604
1605 ROM_START( earthjkr ) /* Taito PCB: K1100388A / J1100169A */
1606 ROM_REGION( 0x100000, "maincpu", 0 ) /* 1024k for 68000 code */
1607 ROM_LOAD16_BYTE( "ej_3b.ic23", 0x00000, 0x20000, BAD_DUMP CRC(bdd86fc2) SHA1(96578860ed03718f8a68847b367eac6c81b79ca2) )
1608 ROM_LOAD16_BYTE( "ej_3a.ic8", 0x00001, 0x20000, CRC(9c8050c6) SHA1(076c882f75787e8120de66ff0dcd2cb820513c45) )
1609 /* 0x40000 - 0x7ffff is intentionally empty */
1610 ROM_LOAD16_WORD( "ej_30e.ic30", 0x80000, 0x80000, CRC(49d1f77f) SHA1(f6c9b2fc88b77cc9baa5be48da5c3eb72310e471) ) /* Fix ROM */
1611
1612 ROM_REGION( 0x80000, "tc0100scn", 0 )
1613 ROM_LOAD16_WORD_SWAP( "ej_chr-0.ic3", 0x00000, 0x80000, CRC(ac675297) SHA1(2a34e1eae3a4be84dbf709053f5e8a781b1073fc) ) /* SCR tiles (8 x 8) - mask ROM */
1614
1615 ROM_REGION( 0xa0000, "pc090oj", 0 )
1616 ROM_LOAD16_WORD_SWAP( "ej_obj-0.ic6", 0x00000, 0x80000, CRC(5f21ac47) SHA1(45c94ffb53ee9b822b0676f6fb151fed4ce6d967) ) /* Sprites (16 x 16) - mask ROM */
1617 ROM_LOAD16_BYTE ( "ej_1.ic5", 0x80001, 0x10000, CRC(cb4891db) SHA1(af1112608cdd897ef6028ef617f5ca69d7964861) )
1618 ROM_LOAD16_BYTE ( "ej_0.ic4", 0x80000, 0x10000, CRC(b612086f) SHA1(625748fcb698ec57b7b3ce46019cf85de99aaaa1) )
1619
1620 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1621 ROM_LOAD( "ej_2.ic27", 0x00000, 0x10000, CRC(42ba2566) SHA1(c437388684b565c7504d6bad6accd73aa000faca) ) /* banked */
1622
1623 ROM_REGION( 0x10000, "msm", ROMREGION_ERASEFF ) /* ADPCM samples */
1624 /* Empty socket on U.N. Defense Force: Earth Joker - but sound chips present */
1625
1626 ROM_REGION( 0x144, "pals", 0 )
1627 ROM_LOAD( "b68-04.ic32", 0x00000, 0x144, CRC(9be618d1) SHA1(61ee33c3db448a05ff8f455e77fe17d51106baec) )
1628 ROM_LOAD( "b68-05.ic43", 0x00000, 0x104, CRC(d6524ccc) SHA1(f3b56253692aebb63278d47832fc27b8b212b59c) )
1629 ROM_END
1630
1631 ROM_START( earthjkra )
1632 ROM_REGION( 0x100000, "maincpu", 0 ) /* 1024k for 68000 code */
1633 /* Blank ROM labels, might be for the Korean market, although region handling is unchanged. Very close to parent set, but some clearly additional intentional changes that can't be attributed to the bitrot in the parent */
1634 ROM_LOAD16_BYTE( "ejok_ic23", 0x00000, 0x20000, CRC(cbd29731) SHA1(4cbbdc9352cb203b6b5ec37c1b11c09d827960fc) ) /* ejok_ic23 vs ej_3b.ic23 99.945831% similar (71 changed bytes) */
1635 ROM_LOAD16_BYTE( "ejok_ic8", 0x00001, 0x20000, CRC(cfd4953c) SHA1(6aa91ebca4444070841c1f8307430bc787656df3) ) /* ejok_ic8 vs ej_3a.ic8 99.945831% similar (71 changed bytes) */
1636 /* 0x40000 - 0x7ffff is intentionally empty */
1637 ROM_LOAD16_WORD( "ejok_ic30", 0x80000, 0x80000, CRC(49d1f77f) SHA1(f6c9b2fc88b77cc9baa5be48da5c3eb72310e471) ) /* Fix ROM */
1638
1639 ROM_REGION( 0x80000, "tc0100scn", 0 )
1640 ROM_LOAD16_WORD_SWAP( "ej_chr-0.ic3", 0x00000, 0x80000, CRC(ac675297) SHA1(2a34e1eae3a4be84dbf709053f5e8a781b1073fc) ) /* SCR tiles (8 x 8) - mask ROM */
1641
1642 ROM_REGION( 0xa0000, "pc090oj", 0 )
1643 ROM_LOAD16_WORD_SWAP( "ej_obj-0.ic6", 0x00000, 0x80000, CRC(5f21ac47) SHA1(45c94ffb53ee9b822b0676f6fb151fed4ce6d967) ) /* Sprites (16 x 16) - mask ROM */
1644 ROM_LOAD16_BYTE ( "ejok_ic5", 0x80001, 0x10000, CRC(cb4891db) SHA1(af1112608cdd897ef6028ef617f5ca69d7964861) )
1645 ROM_LOAD16_BYTE ( "ejok_ic4", 0x80000, 0x10000, CRC(b612086f) SHA1(625748fcb698ec57b7b3ce46019cf85de99aaaa1) )
1646
1647 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1648 ROM_LOAD( "ejok_ic28", 0x00000, 0x10000, CRC(42ba2566) SHA1(c437388684b565c7504d6bad6accd73aa000faca) ) /* banked */
1649
1650 ROM_REGION( 0x10000, "msm", ROMREGION_ERASEFF ) /* ADPCM samples */
1651 /* Empty socket on U.N. Defense Force: Earth Joker - but sound chips present */
1652
1653 ROM_REGION( 0x144, "pals", 0 )
1654 ROM_LOAD( "b68-04.ic32", 0x00000, 0x144, CRC(9be618d1) SHA1(61ee33c3db448a05ff8f455e77fe17d51106baec) )
1655 ROM_LOAD( "b68-05.ic43", 0x00000, 0x104, CRC(d6524ccc) SHA1(f3b56253692aebb63278d47832fc27b8b212b59c) )
1656 ROM_END
1657
1658 // Known to exist (not dumped) a Japanese version with ROMs 3 & 4 also stamped "A" same as above or different version??
1659 // Also known to exist (not dumped) a US version of Earth Joker, title screen shows "DISTRIBUTED BY ROMSTAR, INC." ROMs were numbered
1660 // from 0 through 4 and the fix ROM at IC30 is labeled 1 even though IC5 is also labled as 1 similar to the below set:
1661 // (ROMSTAR license is set by a dipswitch, is set mentioned above really undumped?)
1662
1663 ROM_START( earthjkrp ) // was production PCB complete with mask ROM, could just be an early revision, not proto
1664 ROM_REGION( 0x100000, "maincpu", 0 ) /* 1024k for 68000 code */
1665 ROM_LOAD16_BYTE( "3.ic23", 0x00001, 0x20000, CRC(26c33225) SHA1(b039c47d0776c90813ab52c867e95989cab2c567) )
1666 ROM_LOAD16_BYTE( "4.ic8", 0x00000, 0x20000, CRC(e9b1ef0c) SHA1(5e104146d37922a8c7e93696c2c156223653025b) )
1667 /* 0x40000 - 0x7ffff is intentionally empty */
1668 ROM_LOAD16_WORD( "5.ic30", 0x80000, 0x80000, CRC(bf760b2d) SHA1(4aff36623e5a31ab86c77461fa93e40e77f08edd) ) /* Fix ROM */
1669
1670 ROM_REGION( 0x80000, "tc0100scn", 0 )
1671 ROM_LOAD16_WORD_SWAP( "ej_chr-0.ic3", 0x00000, 0x80000, CRC(ac675297) SHA1(2a34e1eae3a4be84dbf709053f5e8a781b1073fc) ) /* SCR tiles (8 x 8) - mask ROM */
1672
1673 ROM_REGION( 0xa0000, "pc090oj", 0 )
1674 ROM_LOAD16_WORD_SWAP( "ej_obj-0.ic6", 0x00000, 0x80000, CRC(5f21ac47) SHA1(45c94ffb53ee9b822b0676f6fb151fed4ce6d967) ) /* Sprites (16 x 16) - mask ROM */
1675 ROM_LOAD16_BYTE ( "1.ic5", 0x80001, 0x10000, CRC(cb4891db) SHA1(af1112608cdd897ef6028ef617f5ca69d7964861) )
1676 ROM_LOAD16_BYTE ( "0.ic4", 0x80000, 0x10000, CRC(b612086f) SHA1(625748fcb698ec57b7b3ce46019cf85de99aaaa1) )
1677
1678 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1679 ROM_LOAD( "2.ic27", 0x00000, 0x10000, CRC(42ba2566) SHA1(c437388684b565c7504d6bad6accd73aa000faca) ) /* banked */
1680
1681 ROM_REGION( 0x10000, "msm", ROMREGION_ERASEFF ) /* ADPCM samples */
1682 /* Empty socket on U.N. Defense Force: Earth Joker - but sound chips present */
1683
1684 ROM_REGION( 0x144, "pals", 0 )
1685 ROM_LOAD( "b68-04.ic32", 0x00000, 0x144, CRC(9be618d1) SHA1(61ee33c3db448a05ff8f455e77fe17d51106baec) )
1686 ROM_LOAD( "b68-05.ic43", 0x00000, 0x104, CRC(d6524ccc) SHA1(f3b56253692aebb63278d47832fc27b8b212b59c) )
1687 ROM_END
1688
1689 ROM_START( eto )
1690 ROM_REGION( 0x100000, "maincpu", 0 ) /* 1024k for 68000 code */
1691 ROM_LOAD16_BYTE( "eto-1.ic23", 0x00000, 0x20000, CRC(44286597) SHA1(ac37e5edbf9d187f60232adc5e9ebed45b3d2fe2) )
1692 ROM_LOAD16_BYTE( "eto-0.ic8", 0x00001, 0x20000, CRC(57b79370) SHA1(25f83eada982ef654260fe92016d42a90005a05c) )
1693 /* 0x40000 - 0x7ffff is intentionally empty */
1694 ROM_LOAD16_WORD( "eto-2.ic30", 0x80000, 0x80000, CRC(12f46fb5) SHA1(04db8b6ccd0051668bd2930275efa0265c0cfd2b) ) /* Fix ROM */
1695
1696 ROM_REGION( 0x80000, "tc0100scn", 0 )
1697 ROM_LOAD16_WORD_SWAP( "eto-4.ic3", 0x00000, 0x80000, CRC(a8768939) SHA1(a2cbbd3e10ed48ba32a680b2e40ea03900cf33fa) ) /* Sprites (16 x 16) */
1698
1699 ROM_REGION( 0x80000, "pc090oj", 0 )
1700 ROM_LOAD16_WORD_SWAP( "eto-3.ic6", 0x00000, 0x80000, CRC(dd247397) SHA1(53a7bf877fd7e5f3daf295a698f4012447b6f113) ) /* SCR tiles (8 x 8) */
1701
1702 ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
1703 ROM_LOAD( "eto-5.ic27", 0x00000, 0x10000, CRC(b3689da0) SHA1(812d2e0a794403df9f0a5035784f14cd070ea080) ) /* banked */
1704 ROM_END
1705
1706 void asuka_state::init_cadash()
1707 {
1708 m_cadash_int5_timer = timer_alloc(TIMER_CADASH_INTERRUPT5);
1709 }
1710
init_earthjkr()1711 void asuka_state::init_earthjkr()
1712 {
1713 u16 *rom = (u16 *)memregion("maincpu")->base();
1714 // 357c -> 317c, I think this is bitrot, see ROM loading for which ROM needs redumping, causes rowscroll to be broken on final stage (writes to ROM area instead)
1715 // code is correct in the 'prototype?' set
1716 rom[0x7aaa/2] = 0x317c;
1717 }
1718
1719 GAME( 1988, bonzeadv, 0, bonzeadv, bonzeadv, asuka_state, empty_init, ROT0, "Taito Corporation Japan", "Bonze Adventure (World, Newer)", MACHINE_SUPPORTS_SAVE )
1720 GAME( 1988, bonzeadvo, bonzeadv, bonzeadv, bonzeadv, asuka_state, empty_init, ROT0, "Taito Corporation Japan", "Bonze Adventure (World, Older)", MACHINE_SUPPORTS_SAVE )
1721 GAME( 1988, bonzeadvu, bonzeadv, bonzeadv, jigkmgri, asuka_state, empty_init, ROT0, "Taito America Corporation", "Bonze Adventure (US)", MACHINE_SUPPORTS_SAVE )
1722 GAME( 1988, jigkmgri, bonzeadv, bonzeadv, jigkmgri, asuka_state, empty_init, ROT0, "Taito Corporation", "Jigoku Meguri (Japan)", MACHINE_SUPPORTS_SAVE )
1723 GAME( 1988, bonzeadvp, bonzeadv, bonzeadv, jigkmgri, asuka_state, empty_init, ROT0, "Taito Corporation Japan", "Bonze Adventure (World, prototype)", MACHINE_SUPPORTS_SAVE )
1724
1725 GAME( 1988, asuka, 0, asuka, asuka, asuka_state, empty_init, ROT270, "Taito Corporation", "Asuka & Asuka (World)", MACHINE_SUPPORTS_SAVE )
1726 GAME( 1988, asukaj, asuka, asuka, asuka, asuka_state, empty_init, ROT270, "Taito Corporation", "Asuka & Asuka (Japan)", MACHINE_SUPPORTS_SAVE )
1727
1728 GAME( 1989, mofflott, 0, mofflott, mofflott, asuka_state, empty_init, ROT270, "Taito Corporation", "Maze of Flott (Japan)", MACHINE_SUPPORTS_SAVE )
1729
1730 GAME( 1989, cadash, 0, cadash, cadash, asuka_state, init_cadash, ROT0, "Taito Corporation Japan", "Cadash (World)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN )
1731 GAME( 1989, cadashj, cadash, cadash, cadashj, asuka_state, init_cadash, ROT0, "Taito Corporation", "Cadash (Japan, version 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN )
1732 GAME( 1989, cadashj1, cadash, cadash, cadashj, asuka_state, init_cadash, ROT0, "Taito Corporation", "Cadash (Japan, version 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN )
1733 GAME( 1989, cadashjo, cadash, cadash, cadashj, asuka_state, init_cadash, ROT0, "Taito Corporation", "Cadash (Japan, oldest version)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN )
1734 GAME( 1989, cadashu, cadash, cadash, cadashu, asuka_state, init_cadash, ROT0, "Taito America Corporation", "Cadash (US, version 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN )
1735 GAME( 1989, cadashi, cadash, cadash, cadash, asuka_state, init_cadash, ROT0, "Taito Corporation Japan", "Cadash (Italy)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN )
1736 GAME( 1989, cadashf, cadash, cadash, cadash, asuka_state, init_cadash, ROT0, "Taito Corporation Japan", "Cadash (France)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN )
1737 GAME( 1989, cadashg, cadash, cadash, cadash, asuka_state, init_cadash, ROT0, "Taito Corporation Japan", "Cadash (Germany, version 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN )
1738 GAME( 1989, cadashp, cadash, cadash, cadashj, asuka_state, init_cadash, ROT0, "Taito Corporation Japan", "Cadash (World, prototype)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN)
1739 GAME( 1989, cadashs, cadash, cadash, cadash, asuka_state, init_cadash, ROT0, "Taito Corporation Japan", "Cadash (Spain, version 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN )
1740
1741 GAME( 1992, galmedes, 0, asuka, galmedes, asuka_state, empty_init, ROT270, "Visco", "Galmedes (Japan)", MACHINE_SUPPORTS_SAVE )
1742
1743 GAME( 1993, earthjkr, 0, asuka, earthjkr, asuka_state, init_earthjkr, ROT270, "Visco", "U.N. Defense Force: Earth Joker (US / Japan, set 1)", MACHINE_SUPPORTS_SAVE ) // sets 1 + 2 have ROMSTAR (US?) license and no region disclaimer if you change the dipswitch
1744 GAME( 1993, earthjkra, earthjkr, asuka, earthjkr, asuka_state, empty_init, ROT270, "Visco", "U.N. Defense Force: Earth Joker (US / Japan, set 2)", MACHINE_SUPPORTS_SAVE )
1745 GAME( 1993, earthjkrp, earthjkr, asuka, earthjkrp,asuka_state, empty_init, ROT270, "Visco", "U.N. Defense Force: Earth Joker (Japan, prototype?)", MACHINE_SUPPORTS_SAVE )
1746
1747 GAME( 1994, eto, 0, eto, eto, asuka_state, empty_init, ROT0, "Visco", "Kokontouzai Eto Monogatari (Japan)", MACHINE_SUPPORTS_SAVE )
1748