1 /*******************************************************************************
2
3 Equites (c) 1984 Alpha Denshi Co./Sega
4 Bull Fighter (c) 1984 Alpha Denshi Co./Sega
5 The Koukouyakyuh (c) 1985 Alpha Denshi Co.
6 Splendor Blast (c) 1985 Alpha Denshi Co.
7 High Voltage (c) 1985 Alpha Denshi Co.
8
9 drivers by Acho A. Tang
10
11 Stephh's notes (based on the games M68000 code and some tests) :
12
13 0) all games
14
15 - To enter sort of "test mode", bits 0 and 1 need to be ON when the game is reset.
16 Acho said that it could be a switch (but I'm not sure of that), and that's why
17 I've added a EASY_TEST_MODE compilation switch.
18
19
20 1) 'equites'
21
22 - When in "test mode", press START1 to cycle through next sound, and press START2
23 to directly test the inputs and the Dip Switches.
24 - When the number of buttons is set to 2, you need to press BOTH BUTTON1 and
25 BUTTON2 to have the same effect as BUTTON3.
26
27
28 2) 'bullfgtr'
29
30 - When in "test mode", press START1 to cycle through next sound, and press START2
31 to directly test the inputs and the Dip Switches.
32 - I'm not sure I understand how the coinage is handled, and so it's hard to make
33 a good description. Anyway, the values are correct.
34
35
36 3) 'kouyakyu'
37
38 - When in "test mode", press START1 to cycle through next sound, and press START2
39 to directly test the inputs and the Dip Switches.
40 - Bit 1 of Dip Switch is only read in combinaison of bit 0 during P.O.S.T. to
41 enter the "test mode", but it doesn't add any credit ! That's why I've patched
42 the inputs, so you can enter the "test mode" by pressing COIN1 during P.O.S.T.
43
44
45 4) 'splndrbt'
46
47 - When starting a 2 players game, when player 1 game is over, the game enters in
48 an infinite loop on displaying the "GAME OVER" message.
49 - You can test player 2 by putting 0xff instead of 0x00 at 0x040009 ($9,A6).
50 - FYI, what should change the contents of $9,A6 is the routine at 0x000932,
51 but I haven't found where this routine could be called 8( 8303 issue ?
52
53
54 5) 'hvoltage'
55
56 - When starting a 2 players game, when player 1 game is over, the game becomes
57 buggy on displaying the "GAME OVER" message and you can't start a new game
58 anymore.
59 - You can test player 2 by putting 0xff instead of 0x00 at 0x040009 ($9,A6).
60 - FYI, what should change the contents of $9,A6 is the routine at 0x000fc4,
61 but I haven't found where this routine could be called 8( 8404 issue ?
62
63 - There is sort of "debug mode" that you can access if 0x000038.w returns 0x0000
64 instead of 0xffff. To enable it, turn HVOLTAGE_HACK to 1 then enable the fake
65 Dip Switch.
66 - When you are in "debug mode", the Inputs and Dip Switches have special features.
67 Here is IMO the full list :
68
69 * pressing IPT_JOYSTICK_DOWN of player 2 freezes the game
70 * pressing IPT_JOYSTICK_UP of player 2 unfreezes the game
71 * pressing IPT_COIN1 gives invulnerability (the collision routine isn't called)
72 * pressing IPT_COIN2 speeds up the game and you don't need to kill the bosses
73 * when bit 2 is On, you are given invulnerability (same effect as IPT_COIN1)
74 * when bit 3 is On, you don't need to kill the bosses (only the last one)
75 * when bit 4 is On ("Lives" Dip Switch set to "5"), some coordonates are displayed
76 * when bit 7 is On ("Coinage" Dip Switch set to "A 1/3C B 1/6C" or "A 2/1C B 3/1C"),
77 a "band" is displayed at the left of the screen
78
79
80 TO DO :
81
82 - support screen flipping in 'equites' and 'splndrbt'.
83
84
85 Hardware Deficiencies
86 ---------------------
87
88 - Lack of 8303/8404 tech info. All MCU results are guessed.
89
90 equites_8404rule(unsigned pc, int offset, int data) details:
91
92 pc: 68000 code address where the program queries the MCU
93 offset: 8404 memory offset(in bytes) from where MCU data is read
94 data: fake byte-value to return (negative numbers trigger special conditions)
95
96 The following ROMs need redump:
97
98 - Bull Fighter's RGB PROMs (the ones in use are fake make-up's)
99 - The Koukouyakyuh's epr-6706.bin (the one in use is patched)
100
101
102 Emulation Deficiencies
103 ----------------------
104
105 - Equites has sprite lag in the post-rotate X direction depends on interrupt timing.
106 - Scale factors in High Voltage and Splendor Blast are inaccurate. Actual values are believed
107 to be in the three unknown ROM s3.8l, 1.9j and 4.7m but the equations are unknown.
108
109 - MSM5232 clock speed and capacitor values are not known.
110 - There seems to be a rheostat on Equites' soundboard to adjust the MSM5232's music pitch.
111 - It hasn't been confirmed whether music tempos are the same across all games.
112
113
114 * Special Thanks to:
115
116 Jarek Burczynski for a superb MSM5232 emulation
117 The Equites WIP webmasters for the vital screenshots and sound clips
118 Yasuhiro Ogawa for the correct Equites ROM information
119
120
121 Other unemulated Alpha Denshi and SNK games that may use similar hardware:
122 -----------------------------------------------------------
123 Maker Year Genre Name Japanese Name
124 -----------------------------------------------------------
125 Alpha Denshi 1984 (SPT) Champion Croquet �`�����s�I���N���b�P�[
126 Alpha Denshi 1985 (???) Tune Pit(?) �`�F�[���s�b�g
127 Alpha Denshi 1985 (MAJ) Perfect Janputer �p�[�t�F�N�g�W�����s���[�^�[
128 SNK/Eastern 1985 (ACT) Gekisoh ����
129
130 *******************************************************************************/
131 // Directives
132
133 #include "driver.h"
134 #include "vidhrdw/generic.h"
135
136 #define HVOLTAGE_HACK 0
137 #define EASY_TEST_MODE 1
138
139 // Equites Hardware
140 #define BMPAD 8
141
142 /******************************************************************************/
143 // Imports
144
145 // Common Hardware Start
146 #define EQUITES_ADD_SOUNDBOARD7 \
147 MDRV_CPU_ADD(8085A, 5000000) \
148 MDRV_CPU_FLAGS(CPU_AUDIO_CPU) \
149 MDRV_CPU_MEMORY(equites_s_readmem, equites_s_writemem) \
150 MDRV_CPU_PORTS(0, equites_s_writeport) \
151 MDRV_CPU_PERIODIC_INT(nmi_line_pulse, 4000) \
152 MDRV_SOUND_ADD(MSM5232, equites_5232intf) \
153 MDRV_SOUND_ADD(AY8910, equites_8910intf) \
154 MDRV_SOUND_ADD(DAC, equites_dacintf)
155
156 extern void equites_8404init(void);
157 extern void equites_8404rule(unsigned pc, int offset, int data);
158
159 extern READ16_HANDLER(equites_8404_r);
160 extern WRITE_HANDLER(equites_5232_w);
161 extern WRITE_HANDLER(equites_8910control_w);
162 extern WRITE_HANDLER(equites_8910data_w);
163 extern WRITE_HANDLER(equites_dac0_w);
164 extern WRITE_HANDLER(equites_dac1_w);
165
166 extern data16_t *equites_8404ram;
167 extern struct MSM5232interface equites_5232intf;
168 extern struct AY8910interface equites_8910intf;
169 extern struct DACinterface equites_dacintf;
170
MEMORY_READ_START(equites_s_readmem)171 static MEMORY_READ_START( equites_s_readmem )
172 { 0x0000, 0xbfff, MRA_ROM }, // sound program
173 { 0xc000, 0xc000, soundlatch_r },
174 { 0xe000, 0xe0ff, MRA_RAM }, // stack and variables
175 MEMORY_END
176
177 static MEMORY_WRITE_START( equites_s_writemem )
178 { 0x0000, 0xbfff, MWA_ROM }, // sound program
179 { 0xc080, 0xc08d, equites_5232_w },
180 { 0xc0a0, 0xc0a0, equites_8910data_w },
181 { 0xc0a1, 0xc0a1, equites_8910control_w },
182 { 0xc0b0, 0xc0b0, MWA_NOP }, // INTR: sync with main melody
183 { 0xc0c0, 0xc0c0, MWA_NOP }, // INTR: sync with specific beats
184 { 0xc0d0, 0xc0d0, equites_dac0_w },
185 { 0xc0e0, 0xc0e0, equites_dac1_w },
186 { 0xc0f8, 0xc0fe, MWA_NOP }, // soundboard I/O, ignored
187 { 0xc0ff, 0xc0ff, soundlatch_clear_w },
188 { 0xe000, 0xe0ff, MWA_RAM }, // stack and variables
189 MEMORY_END
190
191 static PORT_WRITE_START( equites_s_writeport )
192 { 0x00e0, 0x00e5, MWA_NOP }, // soundboard I/O, ignored
193 PORT_END
194 // Common Hardware End
195
196 // Equites Hardware
197 extern PALETTE_INIT( equites );
198 extern VIDEO_START( equites );
199 extern VIDEO_UPDATE( equites );
200 extern READ16_HANDLER(equites_spriteram_r);
201 extern WRITE16_HANDLER(equites_charram_w);
202 extern WRITE16_HANDLER(equites_scrollreg_w);
203 extern WRITE16_HANDLER(equites_bgcolor_w);
204
205 // Splendor Blast Hareware
206 extern MACHINE_INIT( splndrbt );
207 extern PALETTE_INIT( splndrbt );
208 extern VIDEO_START( splndrbt );
209 extern VIDEO_UPDATE( splndrbt );
210 extern READ16_HANDLER(splndrbt_bankedchar_r);
211 extern WRITE16_HANDLER(splndrbt_charram_w);
212 extern WRITE16_HANDLER(splndrbt_bankedchar_w);
213 extern WRITE16_HANDLER(splndrbt_selchar0_w);
214 extern WRITE16_HANDLER(splndrbt_selchar1_w);
215 extern WRITE16_HANDLER(splndrbt_scrollram_w);
216 extern WRITE16_HANDLER(splndrbt_bgcolor_w);
217 extern data16_t *splndrbt_scrollx, *splndrbt_scrolly;
218
219 /******************************************************************************/
220 // Locals
221
222 // Equites Hardware
223 static int disablejoyport2 = 0;
224
225 /******************************************************************************/
226 // Exports
227
228 // Common
229 data16_t *equites_workram;
230 int equites_id;
231
232 // Equites Hardware
233 int equites_flip;
234
235 // Splendor Blast Hardware
236 int splndrbt_flip;
237
238 /******************************************************************************/
239 // Local Functions
240
241 /******************************************************************************/
242 // Interrupt Handlers
243
244 // Equites Hardware
INTERRUPT_GEN(equites_interrupt)245 static INTERRUPT_GEN( equites_interrupt )
246 {
247 if (cpu_getiloops())
248 cpu_set_irq_line(0, 2, HOLD_LINE);
249 else
250 cpu_set_irq_line(0, 1, HOLD_LINE);
251 }
252
253 // Splendor Blast Hareware
INTERRUPT_GEN(splndrbt_interrupt)254 static INTERRUPT_GEN( splndrbt_interrupt )
255 {
256 if (cpu_getiloops())
257 cpu_set_irq_line(0, 2, HOLD_LINE);
258 else
259 cpu_set_irq_line(0, 1, HOLD_LINE);
260 }
261
262 /******************************************************************************/
263 // Main CPU Handlers
264
265 // Equites Hardware
READ16_HANDLER(equites_joyport_r)266 static READ16_HANDLER(equites_joyport_r)
267 {
268 int data;
269
270 data = readinputport(0);
271 if (disablejoyport2) data = (data & 0x80ff) | (data<<8 & 0x7f00);
272
273 return (data);
274 }
275
WRITE16_HANDLER(equites_flip0_w)276 static WRITE16_HANDLER(equites_flip0_w)
277 {
278 if (ACCESSING_LSB) disablejoyport2 = 1;
279 if (ACCESSING_MSB) equites_flip = 0;
280 }
281
WRITE16_HANDLER(equites_flip1_w)282 static WRITE16_HANDLER(equites_flip1_w)
283 {
284 if (ACCESSING_LSB) disablejoyport2 = 0;
285 if (ACCESSING_MSB) equites_flip = 1;
286 }
287
288 // Splendor Blast Hardware
289 #if HVOLTAGE_HACK
READ16_HANDLER(hvoltage_debug_r)290 static READ16_HANDLER(hvoltage_debug_r)
291 {
292 return(readinputport(2));
293 }
294 #endif
295
WRITE16_HANDLER(splndrbt_flip0_w)296 static WRITE16_HANDLER(splndrbt_flip0_w)
297 {
298 if (ACCESSING_LSB) splndrbt_flip = 0;
299 if (ACCESSING_MSB) equites_bgcolor_w(offset, data, 0x00ff);
300 }
301
WRITE16_HANDLER(splndrbt_flip1_w)302 static WRITE16_HANDLER(splndrbt_flip1_w)
303 {
304 if (ACCESSING_LSB) splndrbt_flip = 1;
305 }
306 #if 0
307 static WRITE16_HANDLER(log16_w)
308 {
309 int pc = activecpu_get_pc();
310
311 usrintf_showmessage("%04x: %04x(w)\n", pc, data);
312 logerror("%04x: %04x(w)\n", pc, data);
313 }
314 #endif
315 /******************************************************************************/
316 // Main CPU Memory Map
317
318 // Equites Hardware
MEMORY_READ16_START(equites_readmem)319 static MEMORY_READ16_START( equites_readmem )
320 { 0x000000, 0x00ffff, MRA16_ROM }, // main program
321 { 0x040000, 0x040fff, MRA16_RAM }, // work RAM
322 { 0x080000, 0x080fff, MRA16_RAM }, // char RAM
323 { 0x0c0000, 0x0c0fff, MRA16_RAM }, // scroll RAM
324 { 0x100000, 0x100fff, equites_spriteram_r }, // sprite RAM
325 { 0x140000, 0x1407ff, equites_8404_r }, // 8404 RAM
326 { 0x180000, 0x180001, input_port_1_word_r }, // MSB: DIP switches
327 { 0x1c0000, 0x1c0001, equites_joyport_r }, // joyport[2211] (shares the same addr with scrollreg)
328 MEMORY_END
329
330 static MEMORY_WRITE16_START( equites_writemem )
331 { 0x000000, 0x00ffff, MWA16_NOP }, // ROM area is written several times (dev system?)
332 { 0x040000, 0x040fff, MWA16_RAM, &equites_workram },
333 { 0x080000, 0x080fff, equites_charram_w, &videoram16 },
334 { 0x0c0000, 0x0c0fff, MWA16_RAM, &spriteram16_2 },
335 { 0x100000, 0x100fff, MWA16_RAM, &spriteram16, &spriteram_size },
336 { 0x140000, 0x1407ff, MWA16_RAM, &equites_8404ram },
337 { 0x180000, 0x180001, soundlatch_word_w }, // LSB: sound latch
338 { 0x184000, 0x184001, equites_flip0_w }, // [MMLL] MM: normal screen, LL: use joystick 1 only
339 { 0x188000, 0x188001, MWA16_NOP }, // 8404 control port1
340 { 0x18c000, 0x18c001, MWA16_NOP }, // 8404 control port2
341 { 0x1a4000, 0x1a4001, equites_flip1_w }, // [MMLL] MM: flip screen, LL: use both joysticks
342 { 0x1a8000, 0x1a8001, MWA16_NOP }, // 8404 control port3
343 { 0x1ac000, 0x1ac001, MWA16_NOP }, // 8404 control port4
344 { 0x1c0000, 0x1c0001, equites_scrollreg_w }, // scroll register[XXYY]
345 { 0x380000, 0x380001, equites_bgcolor_w }, // bg color register[CC--]
346 { 0x780000, 0x780001, MWA16_NOP }, // watchdog
347 MEMORY_END
348
349 // Splendor Blast Hardware
350 static MEMORY_READ16_START( splndrbt_readmem )
351 { 0x000000, 0x00ffff, MRA16_ROM }, // main program
352 { 0x040000, 0x040fff, MRA16_RAM }, // work RAM
353 { 0x080000, 0x080001, input_port_0_word_r }, // joyport [2211]
354 { 0x0c0000, 0x0c0001, input_port_1_word_r }, // MSB: DIP switches LSB: not used
355 { 0x100000, 0x100001, MRA16_RAM }, // no read
356 { 0x1c0000, 0x1c0001, MRA16_RAM }, // LSB: watchdog
357 { 0x180000, 0x1807ff, equites_8404_r }, // 8404 RAM
358 { 0x200000, 0x200fff, MRA16_RAM }, // char page 0
359 { 0x201000, 0x201fff, splndrbt_bankedchar_r }, // banked char page 1, 2
360 { 0x400000, 0x400fff, MRA16_RAM }, // scroll RAM 0,1
361 { 0x600000, 0x6001ff, MRA16_RAM }, // sprite RAM 0,1,2
362 MEMORY_END
363
364 static MEMORY_WRITE16_START( splndrbt_writemem )
365 { 0x000000, 0x00ffff, MWA16_NOP },
366 { 0x040000, 0x040fff, MWA16_RAM, &equites_workram }, // work RAM
367 { 0x0c0000, 0x0c0001, splndrbt_flip0_w }, // [MMLL] MM: bg color register, LL: normal screen
368 { 0x0c4000, 0x0c4001, MWA16_NOP }, // 8404 control port1
369 { 0x0c8000, 0x0c8001, MWA16_NOP }, // 8404 control port2
370 { 0x0cc000, 0x0cc001, splndrbt_selchar0_w }, // select active char map
371 { 0x0e0000, 0x0e0001, splndrbt_flip1_w }, // [MMLL] MM: not used, LL: flip screen
372 { 0x0e4000, 0x0e4001, MWA16_NOP }, // 8404 control port3
373 { 0x0e8000, 0x0e8001, MWA16_NOP }, // 8404 control port4
374 { 0x0ec000, 0x0ec001, splndrbt_selchar1_w }, // select active char map
375 { 0x100000, 0x100001, MWA16_RAM, &splndrbt_scrollx }, // scrollx
376 { 0x140000, 0x140001, soundlatch_word_w }, // LSB: sound command
377 { 0x1c0000, 0x1c0001, MWA16_RAM, &splndrbt_scrolly }, // scrolly
378 { 0x180000, 0x1807ff, MWA16_RAM, &equites_8404ram }, // 8404 RAM
379 { 0x200000, 0x200fff, splndrbt_charram_w, &videoram16, &videoram_size }, // char RAM page 0
380 { 0x201000, 0x201fff, splndrbt_bankedchar_w }, // banked char RAM page 1,2
381 { 0x400000, 0x400fff, splndrbt_scrollram_w, &spriteram16_2 }, // scroll RAM 0,1
382 { 0x600000, 0x6001ff, MWA16_RAM, &spriteram16, &spriteram_size }, // sprite RAM 0,1,2
383 MEMORY_END
384
385 /******************************************************************************/
386 // Common Port Map
387
388 #define EQUITES_PLAYER_INPUT_LSB( button1, button2, button3, start ) \
389 PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY ) \
390 PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY ) \
391 PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY ) \
392 PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY ) \
393 PORT_BIT( 0x0010, IP_ACTIVE_HIGH, button1 ) \
394 PORT_BIT( 0x0020, IP_ACTIVE_HIGH, button2 ) \
395 PORT_BIT( 0x0040, IP_ACTIVE_HIGH, button3 ) \
396 PORT_BIT( 0x0080, IP_ACTIVE_HIGH, start )
397
398 #define EQUITES_PLAYER_INPUT_MSB( button1, button2, button3, start ) \
399 PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL ) \
400 PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL ) \
401 PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL ) \
402 PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL ) \
403 PORT_BIT( 0x1000, IP_ACTIVE_HIGH, button1 | IPF_COCKTAIL ) \
404 PORT_BIT( 0x2000, IP_ACTIVE_HIGH, button2 | IPF_COCKTAIL ) \
405 PORT_BIT( 0x4000, IP_ACTIVE_HIGH, button3 | IPF_COCKTAIL ) \
406 PORT_BIT( 0x8000, IP_ACTIVE_HIGH, start )
407
408 /******************************************************************************/
409 // Equites Port Map
410
411 INPUT_PORTS_START( equites )
412 PORT_START
413 EQUITES_PLAYER_INPUT_LSB( IPT_BUTTON1, IPT_BUTTON2, IPT_BUTTON3, IPT_START1 )
414 EQUITES_PLAYER_INPUT_MSB( IPT_BUTTON1, IPT_BUTTON2, IPT_BUTTON3, IPT_START2 )
415
416 PORT_START
417 PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_COIN1 )
418 PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_COIN2 )
419 #if EASY_TEST_MODE
420 PORT_SERVICE( 0x0300, IP_ACTIVE_HIGH )
421 #endif
422 PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Cabinet ) )
423 PORT_DIPSETTING( 0x0400, DEF_STR( Upright ) )
424 PORT_DIPSETTING( 0x0000, DEF_STR( Cocktail ) )
425 PORT_DIPNAME( 0x0800, 0x0800, "Buttons" )
426 PORT_DIPSETTING( 0x0000, "2" )
427 PORT_DIPSETTING( 0x0800, "3" )
428 PORT_DIPNAME( 0x1000, 0x0000, DEF_STR ( Lives ) )
429 PORT_DIPSETTING( 0x0000, "3" )
430 PORT_DIPSETTING( 0x1000, "5" )
431 PORT_DIPNAME( 0x2000, 0x0000, DEF_STR ( Difficulty ) )
432 PORT_DIPSETTING( 0x0000, "Normal" )
433 PORT_DIPSETTING( 0x2000, "Hard" )
434 PORT_DIPNAME( 0xc000, 0x0000, DEF_STR( Coinage ) )
435 PORT_DIPSETTING( 0xc000, "A 2C/1C B 3C/1C" )
436 PORT_DIPSETTING( 0x0000, "A 1C/1C B 2C/1C" )
437 PORT_DIPSETTING( 0x8000, "A 1C/2C B 1C/4C" )
438 PORT_DIPSETTING( 0x4000, "A 1C/3C B 1C/6C" )
439 INPUT_PORTS_END
440
441 /******************************************************************************/
442 // Bull Fighter Port Map
443
444 INPUT_PORTS_START( bullfgtr )
445 PORT_START
446 EQUITES_PLAYER_INPUT_LSB( IPT_BUTTON1, IPT_BUTTON2, IPT_BUTTON3, IPT_START1 )
447 EQUITES_PLAYER_INPUT_MSB( IPT_BUTTON1, IPT_BUTTON2, IPT_BUTTON3, IPT_START2 )
448
449 PORT_START
450 PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_COIN1 )
451 PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_COIN2 )
452 #if EASY_TEST_MODE
453 PORT_SERVICE( 0x0300, IP_ACTIVE_HIGH )
454 #endif
455 PORT_DIPNAME( 0x0c00, 0x0000, "Game Time" )
456 PORT_DIPSETTING( 0x0c00, "3:00" )
457 PORT_DIPSETTING( 0x0800, "2:00" )
458 PORT_DIPSETTING( 0x0000, "1:30" )
459 PORT_DIPSETTING( 0x0400, "1:00" )
460 PORT_DIPNAME( 0x2000, 0x0000, DEF_STR ( Difficulty ) )
461 PORT_DIPSETTING( 0x0000, "Normal" )
462 PORT_DIPSETTING( 0x2000, "Hard" )
463 PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Demo_Sounds ) )
464 PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
465 PORT_DIPSETTING( 0x4000, DEF_STR( On ) )
466 PORT_DIPNAME( 0x9000, 0x0000, DEF_STR( Coinage ) )
467 // PORT_DIPSETTING( 0x9000, "A 1C/1C B 1C/1C" ) // More than 1 credit per player needed
468 PORT_DIPSETTING( 0x0000, "A 1C/1C B 1C/1C" )
469 PORT_DIPSETTING( 0x8000, "A 1C/1C B 1C/4C" )
470 PORT_DIPSETTING( 0x1000, "A 1C/2C B 1C/3C" )
471 INPUT_PORTS_END
472
473 /******************************************************************************/
474 // Koukouyakyuh Port Map
475
476 INPUT_PORTS_START( kouyakyu )
477 PORT_START
478 EQUITES_PLAYER_INPUT_LSB( IPT_BUTTON1, IPT_BUTTON2, IPT_BUTTON3, IPT_START1 )
479 EQUITES_PLAYER_INPUT_MSB( IPT_BUTTON1, IPT_BUTTON2, IPT_BUTTON3, IPT_START2 )
480
481 PORT_START
482 // PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_COIN1 )
483 // PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_UNUSED )
484 PORT_BIT( 0x0300, IP_ACTIVE_HIGH, IPT_COIN1 )
485 #if EASY_TEST_MODE
486 PORT_SERVICE( 0x0300, IP_ACTIVE_HIGH )
487 #endif
488 PORT_DIPNAME( 0x0c00, 0x0000, "Game Points" )
489 PORT_DIPSETTING( 0x0800, "3000" )
490 PORT_DIPSETTING( 0x0400, "4000" )
491 PORT_DIPSETTING( 0x0000, "5000" )
492 PORT_DIPSETTING( 0x0c00, "7000" )
493 PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Unused ) )
494 PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
495 PORT_DIPSETTING( 0x2000, DEF_STR( On ) )
496 PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Demo_Sounds ) )
497 PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
498 PORT_DIPSETTING( 0x4000, DEF_STR( On ) )
499 PORT_DIPNAME( 0x9000, 0x0000, DEF_STR( Coinage ) )
500 PORT_DIPSETTING( 0x9000, "1C/1C (2C per player)" )
501 PORT_DIPSETTING( 0x0000, "1C/1C (1C per player)" )
502 PORT_DIPSETTING( 0x8000, "1C/1C (1C for 2 players)" )
503 PORT_DIPSETTING( 0x1000, "1C/3C (1C per player)" )
504 INPUT_PORTS_END
505
506 /******************************************************************************/
507 // Splendor Blast Port Map
508
509 INPUT_PORTS_START( splndrbt )
510 PORT_START
511 EQUITES_PLAYER_INPUT_LSB( IPT_BUTTON1, IPT_BUTTON2, IPT_UNKNOWN, IPT_START1 )
512 EQUITES_PLAYER_INPUT_MSB( IPT_BUTTON1, IPT_BUTTON2, IPT_UNKNOWN, IPT_START2 )
513
514 PORT_START
515 PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_COIN1 )
516 PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_COIN2 )
517 #if EASY_TEST_MODE
518 PORT_SERVICE( 0x0300, IP_ACTIVE_HIGH )
519 #endif
520 PORT_DIPNAME( 0x0c00, 0x0000, DEF_STR ( Difficulty ) )
521 PORT_DIPSETTING( 0x0400, "Easy" )
522 PORT_DIPSETTING( 0x0000, "Normal" )
523 PORT_DIPSETTING( 0x0800, "Hard" )
524 PORT_DIPSETTING( 0x0c00, "Hardest" )
525 PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Demo_Sounds ) )
526 PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
527 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
528 PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Cabinet ) )
529 PORT_DIPSETTING( 0x2000, DEF_STR( Upright ) )
530 PORT_DIPSETTING( 0x0000, DEF_STR( Cocktail ) )
531 PORT_DIPNAME( 0xc000, 0x0000, DEF_STR( Coinage ) )
532 PORT_DIPSETTING( 0xc000, "A 2C/1C B 3C/1C" )
533 PORT_DIPSETTING( 0x0000, "A 1C/1C B 2C/1C" )
534 PORT_DIPSETTING( 0x4000, "A 1C/2C B 1C/4C" )
535 PORT_DIPSETTING( 0x8000, "A 1C/3C B 1C/6C" )
536 INPUT_PORTS_END
537
538 /******************************************************************************/
539 // High Voltage Port Map
540
541 INPUT_PORTS_START( hvoltage )
542 PORT_START
543 EQUITES_PLAYER_INPUT_LSB( IPT_BUTTON1, IPT_BUTTON2, IPT_UNKNOWN, IPT_START1 )
544 EQUITES_PLAYER_INPUT_MSB( IPT_BUTTON1, IPT_BUTTON2, IPT_UNKNOWN, IPT_START2 )
545
546 PORT_START
547 PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_COIN1 )
548 PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_COIN2 )
549 #if EASY_TEST_MODE
550 PORT_SERVICE( 0x0300, IP_ACTIVE_HIGH )
551 #endif
552 #if HVOLTAGE_HACK
553 PORT_DIPNAME( 0x0400, 0x0000, "Invulnerability" )
554 PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
555 PORT_DIPSETTING( 0x0400, DEF_STR( On ) )
556 PORT_DIPNAME( 0x0800, 0x0000, "Need to kill Bosses" )
557 PORT_DIPSETTING( 0x0800, DEF_STR( No ) )
558 PORT_DIPSETTING( 0x0000, DEF_STR( Yes ) )
559 #else
560 PORT_DIPNAME( 0x0c00, 0x0000, DEF_STR ( Difficulty ) )
561 PORT_DIPSETTING( 0x0400, "Easy" )
562 PORT_DIPSETTING( 0x0000, "Normal" )
563 PORT_DIPSETTING( 0x0800, "Hard" )
564 PORT_DIPSETTING( 0x0c00, "Hardest" )
565 #endif
566 PORT_DIPNAME( 0x1000, 0x0000, DEF_STR ( Lives ) ) // See notes
567 PORT_DIPSETTING( 0x0000, "3" )
568 PORT_DIPSETTING( 0x1000, "5" )
569 PORT_DIPNAME( 0x2000, 0x0000, DEF_STR ( Bonus_Life ) )
570 PORT_DIPSETTING( 0x0000, "50k, 100k then every 100k" )
571 PORT_DIPSETTING( 0x2000, "50k, 200k then every 100k" )
572 PORT_DIPNAME( 0xc000, 0x0000, DEF_STR( Coinage ) ) // See notes
573 PORT_DIPSETTING( 0xc000, "A 2C/1C B 3C/1C" )
574 PORT_DIPSETTING( 0x0000, "A 1C/1C B 2C/1C" )
575 PORT_DIPSETTING( 0x4000, "A 1C/2C B 1C/4C" )
576 PORT_DIPSETTING( 0x8000, "A 1C/3C B 1C/6C" )
577
578 #if HVOLTAGE_HACK
579 /* Fake port to handle debug mode */
580 PORT_START
581 PORT_DIPNAME( 0xffff, 0xffff, "Debug Mode" )
582 PORT_DIPSETTING( 0xffff, DEF_STR( Off ) )
583 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
584 #endif
585 INPUT_PORTS_END
586
587 /******************************************************************************/
588 // Graphics Layouts
589
590 // Equites Hardware
591 static struct GfxLayout eq_charlayout =
592 {
593 8, 8,
594 256,
595 2,
596 { 0, 4 },
597 { 8*8+3, 8*8+2, 8*8+1, 8*8, 3, 2, 1, 0 },
598 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
599 16*8
600 };
601
602 static struct GfxLayout eq_tilelayout =
603 {
604 16, 16,
605 256,
606 3,
607 { 0, 0x4000*8, 0x4000*8+4 },
608 {
609 128*1+3, 128*1+2, 128*1+1, 128*1+0,
610 128*2+3, 128*2+2, 128*2+1, 128*2+0,
611 128*3+3, 128*3+2, 128*3+1, 128*3+0,
612 3, 2, 1, 0
613 },
614 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
615 64*8
616 };
617
618 static struct GfxLayout eq_spritelayout =
619 {
620 16, 14,
621 256,
622 3,
623 { 0, 0x4000*8, 0x4000*8+4 },
624 {
625 3, 2, 1, 0,
626 128*1+3, 128*1+2, 128*1+1, 128*1+0,
627 128*2+3, 128*2+2, 128*2+1, 128*2+0,
628 128*3+3, 128*3+2, 128*3+1, 128*3+0
629 },
630 { 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8 },
631 64*8
632 };
633
634 static struct GfxDecodeInfo equites_gfxdecodeinfo[] =
635 {
636 { REGION_GFX1, 0, &eq_charlayout, 0, 32 }, // chars
637 { REGION_GFX2, 0, &eq_tilelayout, 128, 16 }, // tile set0
638 { REGION_GFX3, 0, &eq_tilelayout, 128, 16 }, // tile set1
639 { REGION_GFX4, 0, &eq_spritelayout, 256, 16 }, // sprite set0
640 { REGION_GFX5, 0, &eq_spritelayout, 256, 16 }, // sprite set1
641 { -1 } // end of array
642 };
643
644 // Splendor Blast Hardware
645 static struct GfxLayout sp_charlayout =
646 {
647 8, 8,
648 512,
649 2,
650 { 0, 4 },
651 { 8*8+3, 8*8+2, 8*8+1, 8*8, 3, 2, 1, 0 },
652 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
653 16*8
654 };
655
656 static struct GfxLayout sp_tilelayout =
657 {
658 16,16,
659 256,
660 2,
661 { 0, 4 },
662 {
663 16*8+3, 16*8+2, 16*8+1, 16*8+0,
664 32*8+3, 32*8+2, 32*8+1, 32*8+0,
665 48*8+3, 48*8+2, 48*8+1, 48*8+0,
666 3, 2, 1, 0
667 },
668 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
669 64*8
670 };
671
672 static struct GfxLayout sp_spritelayout =
673 {
674 32,32,
675 128,
676 3,
677 { 0, 0x8000*8, 0x8000*8+4 },
678 {
679 0*8+3, 0*8+2, 0*8+1, 0*8+0, 1*8+3, 1*8+2, 1*8+1, 1*8+0,
680 2*8+3, 2*8+2, 2*8+1, 2*8+0, 3*8+3, 3*8+2, 3*8+1, 3*8+0,
681 4*8+3, 4*8+2, 4*8+1, 4*8+0, 5*8+3, 5*8+2, 5*8+1, 5*8+0,
682 6*8+3, 6*8+2, 6*8+1, 6*8+0, 7*8+3, 7*8+2, 7*8+1, 7*8+0
683 },
684 {
685 0*8*8, 1*8*8, 2*8*8, 3*8*8, 4*8*8, 5*8*8, 6*8*8, 7*8*8,
686 8*8*8, 9*8*8,10*8*8,11*8*8,12*8*8,13*8*8,14*8*8,15*8*8,
687 31*8*8,30*8*8,29*8*8,28*8*8,27*8*8,26*8*8,25*8*8,24*8*8,
688 23*8*8,22*8*8,21*8*8,20*8*8,19*8*8,18*8*8,17*8*8,16*8*8
689 },
690 8*32*8
691 };
692
693 static struct GfxDecodeInfo splndrbt_gfxdecodeinfo[] =
694 {
695 { REGION_GFX1, 0, &sp_charlayout, 0, 256/4 }, // 512 4-color chars
696 { REGION_GFX2, 0, &sp_tilelayout, 256, 256/4 }, // 256 4-color tiles
697 { REGION_GFX3, 0, &sp_tilelayout, 256, 256/4 }, // 256 4-color tiles
698 { REGION_GFX4, 0, &sp_spritelayout, 512, 256/8 }, // 256 8-color sprites
699 { -1 } // end of array
700 };
701
702 /******************************************************************************/
703 // Hardware Definitions
704
705 static MACHINE_DRIVER_START( equites )
706
707 /* basic machine hardware */
708 MDRV_CPU_ADD(M68000, 12000000/2) // OSC: 12Mhz
MDRV_CPU_MEMORY(equites_readmem,equites_writemem)709 MDRV_CPU_MEMORY(equites_readmem, equites_writemem)
710 MDRV_CPU_VBLANK_INT(equites_interrupt, 2)
711
712 MDRV_FRAMES_PER_SECOND(60)
713 MDRV_VBLANK_DURATION(600)
714
715 /* video hardware */
716 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_AFTER_VBLANK)
717 MDRV_SCREEN_SIZE(256 +BMPAD*2, 256 +BMPAD*2)
718 MDRV_VISIBLE_AREA(0 +BMPAD, 256-1 +BMPAD, 24 +BMPAD, 232-1 +BMPAD)
719 MDRV_PALETTE_LENGTH(256)
720 MDRV_COLORTABLE_LENGTH(384)
721 MDRV_GFXDECODE(equites_gfxdecodeinfo)
722
723 MDRV_PALETTE_INIT(equites)
724 MDRV_VIDEO_START(equites)
725 MDRV_VIDEO_UPDATE(equites)
726
727 /* sound hardware */
728 EQUITES_ADD_SOUNDBOARD7
729
730 MACHINE_DRIVER_END
731
732 static MACHINE_DRIVER_START( splndrbt )
733
734 /* basic machine hardware */
735 MDRV_CPU_ADD(M68000, 12000000/2) // OSC: 12Mhz
736 MDRV_CPU_MEMORY(splndrbt_readmem, splndrbt_writemem)
737 MDRV_CPU_VBLANK_INT(splndrbt_interrupt, 2)
738
739 MDRV_FRAMES_PER_SECOND(60)
740 MDRV_VBLANK_DURATION(600)
741 MDRV_MACHINE_INIT(splndrbt)
742
743 /* video hardware */
744 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_AFTER_VBLANK)
745 MDRV_SCREEN_SIZE(256, 256)
746 MDRV_VISIBLE_AREA(0, 256-1, 64, 256-1)
747 MDRV_PALETTE_LENGTH(256)
748 MDRV_COLORTABLE_LENGTH(1536)
749 MDRV_GFXDECODE(splndrbt_gfxdecodeinfo)
750
751 MDRV_PALETTE_INIT(splndrbt)
752 MDRV_VIDEO_START(splndrbt)
753 MDRV_VIDEO_UPDATE(splndrbt)
754
755 /* sound hardware */
756 EQUITES_ADD_SOUNDBOARD7
757
758 MACHINE_DRIVER_END
759
760 /******************************************************************************/
761 // Equites ROM Map
762
763 ROM_START( equites )
764 ROM_REGION( 0x10000, REGION_CPU1, 0 ) // 68000 ROMs
765 ROM_LOAD16_BYTE( "ep1", 0x00001, 0x2000, CRC(6a4fe5f7) SHA1(5ff1594a2cee28cc7d59448eb57473088ac6f14b) )
766 ROM_LOAD16_BYTE( "ep5", 0x00000, 0x2000, CRC(00faa3eb) SHA1(6b31d041ad4ca81eda36487f659997cc4030f23c) )
767 ROM_LOAD16_BYTE( "epr-ep2.12d", 0x04001, 0x2000, CRC(0c1bc2e7) SHA1(4c3510dfeee2fb2f295a32e2fe2021c4c7f08e8a) )
768 ROM_LOAD16_BYTE( "epr-ep6.12b", 0x04000, 0x2000, CRC(bbed3dcc) SHA1(46ef2c60ccfa76a187b19dc0b7e6c594050b183f) )
769 ROM_LOAD16_BYTE( "epr-ep3.10d", 0x08001, 0x2000, CRC(5f2d059a) SHA1(03fe904a445cce89462788fecfd61ac53f4dd17f) )
770 ROM_LOAD16_BYTE( "epr-ep7.10b", 0x08000, 0x2000, CRC(a8f6b8aa) SHA1(ee4edb54c147a95944482e998616b025642a268a) )
771 ROM_LOAD16_BYTE( "ep4", 0x0c001, 0x2000, CRC(b636e086) SHA1(5fc23a86b6051ecf6ff3f95f810f0eb471a203b0) )
772 ROM_LOAD16_BYTE( "ep8", 0x0c000, 0x2000, CRC(d7ee48b0) SHA1(d0398704d8e89f2b0a9ed05e18f7c644d1e047c0) )
773
774 ROM_REGION( 0x10000, REGION_CPU2, 0 ) // Z80 ROMs
775 ROM_LOAD( "ev1.1m", 0x00000, 0x2000, CRC(43faaf2e) SHA1(c9aaf298d673eb70399366776474f1b242549eb4) )
776 ROM_LOAD( "ev2.1l", 0x02000, 0x2000, CRC(09e6702d) SHA1(896771f73a486e5035909eeed9ef48103d81d4ae) )
777 ROM_LOAD( "ev3.1k", 0x04000, 0x2000, CRC(10ff140b) SHA1(7c28f988a9c8b2a702d007096199e67b447a183c) )
778 ROM_LOAD( "ev4.1h", 0x06000, 0x2000, CRC(b7917264) SHA1(e58345fda088b171fd348959de15082f3cb42514) )
779
780 ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE ) // chars
781 ROM_LOAD( "ep9", 0x00000, 0x1000, CRC(0325be11) SHA1(d95667b439e3d97b08efeaf08022348546a4f385) )
782
783 ROM_REGION( 0x8000, REGION_GFX2, ROMREGION_DISPOSE ) // tile set1
784 ROM_LOAD_NIB_HIGH( "eb5.7h", 0x00000, 0x2000, CRC(cbef7da5) SHA1(c5fcd2341ce5b039a15116fbd85796bb5ddc4701) )
785 ROM_LOAD ( "eb5.7h", 0x02000, 0x2000, CRC(cbef7da5) SHA1(c5fcd2341ce5b039a15116fbd85796bb5ddc4701) )
786 ROM_LOAD ( "eb1.7f", 0x04000, 0x2000, CRC(9a236583) SHA1(fcc4da2efe904f0178bd83fdee25d4752b9cc5ce) )
787 ROM_LOAD ( "eb2.8f", 0x06000, 0x2000, CRC(f0fb6355) SHA1(3c4c009f80e648d02767b29bb8d18f4de7b26d4e) )
788
789 ROM_REGION( 0x8000, REGION_GFX3, ROMREGION_DISPOSE ) // tile set2
790 ROM_LOAD_NIB_HIGH( "eb6.8h", 0x00000, 0x2000, CRC(1e5e5475) SHA1(80ebe9326c628685faafb259f956a98ac435c809) )
791 ROM_LOAD ( "eb6.8h", 0x02000, 0x2000, CRC(1e5e5475) SHA1(80ebe9326c628685faafb259f956a98ac435c809) )
792 ROM_LOAD ( "eb3.10f", 0x04000, 0x2000, CRC(dbd0044b) SHA1(5611517bb0f54bfb0585eeca8af21fbfc2f65b2c) )
793 ROM_LOAD ( "eb4.11f", 0x06000, 0x2000, CRC(f8f8e600) SHA1(c7c97e4dc1f7a73694c98b2b1a3d7fa9f3317a2a) )
794
795 ROM_REGION( 0x8000, REGION_GFX4, ROMREGION_DISPOSE ) // sprite set1
796 ROM_LOAD_NIB_HIGH( "es5.5h", 0x00000, 0x2000, CRC(d5b82e6a) SHA1(956a1413426e53f8a735260e660805b04016ca8d) )
797 ROM_LOAD ( "es5.5h", 0x02000, 0x2000, CRC(d5b82e6a) SHA1(956a1413426e53f8a735260e660805b04016ca8d) )
798 ROM_LOAD ( "es1.5f", 0x04000, 0x2000, CRC(cf81a2cd) SHA1(a1b45451cafeaceabe3dfe24eb073098a33ab22b) )
799 ROM_LOAD ( "es2.4f", 0x06000, 0x2000, CRC(ae3111d8) SHA1(d63633b531339fa04af757f42e956b8eb1debc4e) )
800
801 ROM_REGION( 0x8000, REGION_GFX5, ROMREGION_DISPOSE ) // sprite set2
802 ROM_LOAD_NIB_HIGH( "es6.4h", 0x00000, 0x2000, CRC(cb4f5da9) SHA1(5af8f6aca0a3bb6417430e0179ec97c33d4014e3) )
803 ROM_LOAD ( "es6.4h", 0x02000, 0x2000, CRC(cb4f5da9) SHA1(5af8f6aca0a3bb6417430e0179ec97c33d4014e3) )
804 ROM_LOAD ( "es3.2f", 0x04000, 0x2000, CRC(3d44f815) SHA1(1835aef280a6915acbf7cad771d65bf1074f0f98) )
805 ROM_LOAD ( "es4.1f", 0x06000, 0x2000, CRC(16e6d18a) SHA1(44f9045ad034808070cd6497a3b94c3d8cc93262) )
806
807 ROM_REGION( 0x0300, REGION_PROMS, 0 ) // RGB PROMs
808 ROM_LOAD( "bprom.3a", 0x00000, 0x100, CRC(2fcdf217) SHA1(4acf67d37e844c2773028ecffe72a66754ed5bca) ) // R
809 ROM_LOAD( "bprom.1a", 0x00100, 0x100, CRC(d7e6cd1f) SHA1(ce330e43ba8a97ab79040c053a25e46e8fe60bdb) ) // G
810 ROM_LOAD( "bprom.2a", 0x00200, 0x100, CRC(e3d106e8) SHA1(6b153eb8140d36b4d194e26106a5ba5bffd1a851) ) // B
811
812 ROM_REGION( 0x0100, REGION_USER1, 0 ) // CLUT(same PROM x 4)
813 ROM_LOAD( "bprom.6b", 0x0000, 0x100, CRC(6294cddf) SHA1(c7a2854f62e31032df2b07fae3fb3b51ac6daac2) )
814 ROM_LOAD( "bprom.7b", 0x0000, 0x100, CRC(6294cddf) SHA1(c7a2854f62e31032df2b07fae3fb3b51ac6daac2) )
815 ROM_LOAD( "bprom.9b", 0x0000, 0x100, CRC(6294cddf) SHA1(c7a2854f62e31032df2b07fae3fb3b51ac6daac2) )
816 ROM_LOAD( "bprom.10b", 0x0000, 0x100, CRC(6294cddf) SHA1(c7a2854f62e31032df2b07fae3fb3b51ac6daac2) )
817
818 ROM_REGION( 0x0020, REGION_USER2, 0 ) // MSM5232 PROM?
819 ROM_LOAD( "bprom.3h", 0x00000, 0x020, CRC(33b98466) SHA1(017c73cf8c17dc5047c89316ae5b45f8d22092e8) )
820 ROM_END
821
822 ROM_START( equitess )
823 ROM_REGION( 0x10000, REGION_CPU1, 0 ) // 68000 ROMs
824 ROM_LOAD16_BYTE( "epr-ep1.13d", 0x00001, 0x2000, CRC(c6edf1cd) SHA1(21dba62e692f4fdc79155ce169a48ae827bd5994) )
825 ROM_LOAD16_BYTE( "epr-ep5.13b", 0x00000, 0x2000, CRC(c11f0759) SHA1(5caf2b6b777b2fdabc26ea232225be2d789e87f3) )
826 ROM_LOAD16_BYTE( "epr-ep2.12d", 0x04001, 0x2000, CRC(0c1bc2e7) SHA1(4c3510dfeee2fb2f295a32e2fe2021c4c7f08e8a) )
827 ROM_LOAD16_BYTE( "epr-ep6.12b", 0x04000, 0x2000, CRC(bbed3dcc) SHA1(46ef2c60ccfa76a187b19dc0b7e6c594050b183f) )
828 ROM_LOAD16_BYTE( "epr-ep3.10d", 0x08001, 0x2000, CRC(5f2d059a) SHA1(03fe904a445cce89462788fecfd61ac53f4dd17f) )
829 ROM_LOAD16_BYTE( "epr-ep7.10b", 0x08000, 0x2000, CRC(a8f6b8aa) SHA1(ee4edb54c147a95944482e998616b025642a268a) )
830 ROM_LOAD16_BYTE( "epr-ep4.9d", 0x0c001, 0x2000, CRC(956a06bd) SHA1(a716f9aaf0c32c522968f4ff13de904d6e8c7f98) )
831 ROM_LOAD16_BYTE( "epr-ep8.9b", 0x0c000, 0x2000, CRC(4c78d60d) SHA1(207a82779e2fe3e9082f4fa09b87c713a51167e6) )
832
833 ROM_REGION( 0x10000, REGION_CPU2, 0 ) // Z80 ROMs
834 ROM_LOAD( "ev1.1m", 0x00000, 0x2000, CRC(43faaf2e) SHA1(c9aaf298d673eb70399366776474f1b242549eb4) )
835 ROM_LOAD( "ev2.1l", 0x02000, 0x2000, CRC(09e6702d) SHA1(896771f73a486e5035909eeed9ef48103d81d4ae) )
836 ROM_LOAD( "ev3.1k", 0x04000, 0x2000, CRC(10ff140b) SHA1(7c28f988a9c8b2a702d007096199e67b447a183c) )
837 ROM_LOAD( "ev4.1h", 0x06000, 0x2000, CRC(b7917264) SHA1(e58345fda088b171fd348959de15082f3cb42514) )
838
839 ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE ) // chars
840 ROM_LOAD( "epr-ep0.3e", 0x00000, 0x1000, CRC(3f5a81c3) SHA1(8fd5bc621f483bfa46be7e40e6480b25243bdf70) )
841
842 ROM_REGION( 0x8000, REGION_GFX2, ROMREGION_DISPOSE ) // tile set1
843 ROM_LOAD_NIB_HIGH( "eb5.7h", 0x00000, 0x2000, CRC(cbef7da5) SHA1(c5fcd2341ce5b039a15116fbd85796bb5ddc4701) )
844 ROM_LOAD ( "eb5.7h", 0x02000, 0x2000, CRC(cbef7da5) SHA1(c5fcd2341ce5b039a15116fbd85796bb5ddc4701) )
845 ROM_LOAD ( "eb1.7f", 0x04000, 0x2000, CRC(9a236583) SHA1(fcc4da2efe904f0178bd83fdee25d4752b9cc5ce) )
846 ROM_LOAD ( "eb2.8f", 0x06000, 0x2000, CRC(f0fb6355) SHA1(3c4c009f80e648d02767b29bb8d18f4de7b26d4e) )
847
848 ROM_REGION( 0x8000, REGION_GFX3, ROMREGION_DISPOSE ) // tile set2
849 ROM_LOAD_NIB_HIGH( "eb6.8h", 0x00000, 0x2000, CRC(1e5e5475) SHA1(80ebe9326c628685faafb259f956a98ac435c809) )
850 ROM_LOAD ( "eb6.8h", 0x02000, 0x2000, CRC(1e5e5475) SHA1(80ebe9326c628685faafb259f956a98ac435c809) )
851 ROM_LOAD ( "eb3.10f", 0x04000, 0x2000, CRC(dbd0044b) SHA1(5611517bb0f54bfb0585eeca8af21fbfc2f65b2c) )
852 ROM_LOAD ( "eb4.11f", 0x06000, 0x2000, CRC(f8f8e600) SHA1(c7c97e4dc1f7a73694c98b2b1a3d7fa9f3317a2a) )
853
854 ROM_REGION( 0x8000, REGION_GFX4, ROMREGION_DISPOSE ) // sprite set1
855 ROM_LOAD_NIB_HIGH( "es5.5h", 0x00000, 0x2000, CRC(d5b82e6a) SHA1(956a1413426e53f8a735260e660805b04016ca8d) )
856 ROM_LOAD ( "es5.5h", 0x02000, 0x2000, CRC(d5b82e6a) SHA1(956a1413426e53f8a735260e660805b04016ca8d) )
857 ROM_LOAD ( "es1.5f", 0x04000, 0x2000, CRC(cf81a2cd) SHA1(a1b45451cafeaceabe3dfe24eb073098a33ab22b) )
858 ROM_LOAD ( "es2.4f", 0x06000, 0x2000, CRC(ae3111d8) SHA1(d63633b531339fa04af757f42e956b8eb1debc4e) )
859
860 ROM_REGION( 0x8000, REGION_GFX5, ROMREGION_DISPOSE ) // sprite set2
861 ROM_LOAD_NIB_HIGH( "es6.4h", 0x00000, 0x2000, CRC(cb4f5da9) SHA1(5af8f6aca0a3bb6417430e0179ec97c33d4014e3) )
862 ROM_LOAD ( "es6.4h", 0x02000, 0x2000, CRC(cb4f5da9) SHA1(5af8f6aca0a3bb6417430e0179ec97c33d4014e3) )
863 ROM_LOAD ( "es3.2f", 0x04000, 0x2000, CRC(3d44f815) SHA1(1835aef280a6915acbf7cad771d65bf1074f0f98) )
864 ROM_LOAD ( "es4.1f", 0x06000, 0x2000, CRC(16e6d18a) SHA1(44f9045ad034808070cd6497a3b94c3d8cc93262) )
865
866 ROM_REGION( 0x0300, REGION_PROMS, 0 ) // RGB PROMs
867 ROM_LOAD( "bprom.3a", 0x00000, 0x100, CRC(2fcdf217) SHA1(4acf67d37e844c2773028ecffe72a66754ed5bca) ) // R
868 ROM_LOAD( "bprom.1a", 0x00100, 0x100, CRC(d7e6cd1f) SHA1(ce330e43ba8a97ab79040c053a25e46e8fe60bdb) ) // G
869 ROM_LOAD( "bprom.2a", 0x00200, 0x100, CRC(e3d106e8) SHA1(6b153eb8140d36b4d194e26106a5ba5bffd1a851) ) // B
870
871 ROM_REGION( 0x0100, REGION_USER1, 0 ) // CLUT(same PROM x 4)
872 ROM_LOAD( "bprom.6b", 0x0000, 0x100, CRC(6294cddf) SHA1(c7a2854f62e31032df2b07fae3fb3b51ac6daac2) )
873 ROM_LOAD( "bprom.7b", 0x0000, 0x100, CRC(6294cddf) SHA1(c7a2854f62e31032df2b07fae3fb3b51ac6daac2) )
874 ROM_LOAD( "bprom.9b", 0x0000, 0x100, CRC(6294cddf) SHA1(c7a2854f62e31032df2b07fae3fb3b51ac6daac2) )
875 ROM_LOAD( "bprom.10b", 0x0000, 0x100, CRC(6294cddf) SHA1(c7a2854f62e31032df2b07fae3fb3b51ac6daac2) )
876
877 ROM_REGION( 0x0020, REGION_USER2, 0 ) // MSM5232 PROM?
878 ROM_LOAD( "bprom.3h", 0x00000, 0x020, CRC(33b98466) SHA1(017c73cf8c17dc5047c89316ae5b45f8d22092e8) )
879 ROM_END
880
881 /******************************************************************************/
882 // Koukouyakyuh ROM Map
883
884 ROM_START( kouyakyu )
885 ROM_REGION( 0x10000, REGION_CPU1, 0 ) // 68000 ROMs
886 ROM_LOAD16_BYTE( "epr-6704.bin", 0x00001, 0x2000, CRC(c7ac2292) SHA1(614bfb0949620d4c260768f14a116b076dd38438) )
887 ROM_LOAD16_BYTE( "epr-6707.bin", 0x00000, 0x2000, CRC(9cb2962e) SHA1(bd1bcbc53a3346e22789f24a35ab3aa681317d02) )
888 ROM_LOAD16_BYTE( "epr-6705.bin", 0x04001, 0x2000, CRC(985327cb) SHA1(86969fe763cbaa527d64de35844773b5ab1d7f83) )
889 ROM_LOAD16_BYTE( "epr-6708.bin", 0x04000, 0x2000, CRC(f8863dc5) SHA1(bfdd294d51420dd70aa97942909a9b8a95ffc05c) )
890 ROM_LOAD16_BYTE( "epr-6706.bin", 0x08001, 0x2000, BAD_DUMP CRC(79e94cd2) SHA1(f44c2292614b46116818fad9a7eb48cceeb3b819) ) // was bad, manually patched
891 ROM_LOAD16_BYTE( "epr-6709.bin", 0x08000, 0x2000, CRC(f41cb58c) SHA1(f0d1048e949d51432739755f985e4df65b8e918b) )
892 ROM_FILL( 0x0c000, 0x4000, 0 )
893
894 ROM_REGION( 0x10000, REGION_CPU2, 0 ) // Z80 ROMs
895 ROM_LOAD( "epr-6703.bin", 0x00000, 0x2000, CRC(fbff3a86) SHA1(4ed2887b1e4509ded853a230f735d4d2aa475886) )
896 ROM_LOAD( "epr-6702.bin", 0x02000, 0x2000, CRC(27ddf031) SHA1(2f11d3b693e46852762669ed1e35a667990edec7) )
897 ROM_LOAD( "epr-6701.bin", 0x04000, 0x2000, CRC(3c83588a) SHA1(a84c813ba9d464cffc855397aaacbb9177c86fb4) )
898 ROM_LOAD( "epr-6700.bin", 0x06000, 0x2000, CRC(ee579266) SHA1(94dfcf506049fc78db00084ff7031d19520d9a85) )
899 ROM_LOAD( "epr-6699.bin", 0x08000, 0x2000, CRC(9bfa4a72) SHA1(8ac4d308dab0d67a26b4e3550c2e8064aaf36a74) )
900 ROM_LOAD( "epr-6698.bin", 0x0a000, 0x2000, CRC(7adfd1ff) SHA1(b543dd6734a681a187dabf602bea390de663039c) )
901
902 ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE ) // chars
903 ROM_LOAD( "epr-6710.bin", 0x00000, 0x1000, CRC(accda190) SHA1(265d2fd92574d65e7890e48d5f305bf903a67bc8) )
904
905 ROM_REGION( 0x8000, REGION_GFX2, ROMREGION_DISPOSE ) // tile set1
906 ROM_LOAD_NIB_HIGH( "epr-6695.bin", 0x00000, 0x2000, CRC(22bea465) SHA1(4860d7ee3c386cdacc9c608ffe74ec8bfa58edcb) )
907 ROM_LOAD ( "epr-6695.bin", 0x02000, 0x2000, CRC(22bea465) SHA1(4860d7ee3c386cdacc9c608ffe74ec8bfa58edcb) )
908 ROM_LOAD ( "epr-6689.bin", 0x04000, 0x2000, CRC(53bf7587) SHA1(0046cd04d11ce789ff69e0807700a624af96eb36) )
909 ROM_LOAD ( "epr-6688.bin", 0x06000, 0x2000, CRC(ceb76c5b) SHA1(81fa236871f10c77eb201e1c9771bd57406df15b) )
910
911 ROM_REGION( 0x8000, REGION_GFX3, ROMREGION_DISPOSE ) // tile set2
912 ROM_LOAD_NIB_HIGH( "epr-6694.bin", 0x00000, 0x2000, CRC(51a7345e) SHA1(184c890559ed633e23cb459c313e6179cc3eb542) )
913 ROM_LOAD ( "epr-6694.bin", 0x02000, 0x2000, CRC(51a7345e) SHA1(184c890559ed633e23cb459c313e6179cc3eb542) )
914 ROM_LOAD ( "epr-6687.bin", 0x04000, 0x2000, CRC(9c1f49df) SHA1(1a5cf5278777f829d3654e838bd2bb9f4dbb57ba) )
915 ROM_LOAD ( "epr-6686.bin", 0x06000, 0x2000, CRC(3d9e516f) SHA1(498614821f87dbcc39edb1756e1af6b536044e6a) )
916
917 ROM_REGION( 0x8000, REGION_GFX4, ROMREGION_DISPOSE ) // sprite set1
918 ROM_LOAD_NIB_HIGH( "epr-6696.bin", 0x00000, 0x2000, CRC(0625f48e) SHA1(bea09ccf37f38678fb53c55bd0a79557d6c81b3f) )
919 ROM_LOAD ( "epr-6696.bin", 0x02000, 0x2000, CRC(0625f48e) SHA1(bea09ccf37f38678fb53c55bd0a79557d6c81b3f) )
920 ROM_LOAD ( "epr-6690.bin", 0x04000, 0x2000, CRC(a142a11d) SHA1(209c7e0591622434ada4445f3f8789059c5f4f77) )
921 ROM_LOAD ( "epr-6691.bin", 0x06000, 0x2000, CRC(b640568c) SHA1(8cef1387c469abec8b488621a94cc9575d6c5fcc) )
922
923 ROM_REGION( 0x8000, REGION_GFX5, ROMREGION_DISPOSE ) // sprite set2
924 ROM_LOAD_NIB_HIGH( "epr-6697.bin", 0x00000, 0x2000, CRC(f18afabe) SHA1(abd7f6c0bd0de145c423166a2f4e86ccdb12b1ce) )
925 ROM_LOAD ( "epr-6697.bin", 0x02000, 0x2000, CRC(f18afabe) SHA1(abd7f6c0bd0de145c423166a2f4e86ccdb12b1ce) )
926 ROM_LOAD ( "epr-6692.bin", 0x04000, 0x2000, CRC(b91d8172) SHA1(8d8f6ea78ebf652f295ce96abf19e628fe777d07) )
927 ROM_LOAD ( "epr-6693.bin", 0x06000, 0x2000, CRC(874e3acc) SHA1(29438f196811fc2c8f54b6c47f1c175e4797dd4c) )
928
929 ROM_REGION( 0x0300, REGION_PROMS, 0 ) // RGB PROMS
930 ROM_LOAD( "pr6627.bpr", 0x00000, 0x100, CRC(5ec5480d) SHA1(f966a277539a5d257f32692cdd92ce44b08599e8) ) // R
931 ROM_LOAD( "pr6629.bpr", 0x00100, 0x100, CRC(29c7a393) SHA1(67cced39c0a80655c420aad668dfe836c1d7c643) ) // G
932 ROM_LOAD( "pr6628.bpr", 0x00200, 0x100, CRC(8af247a4) SHA1(01702fbce53dd4875e4825f0487e7aed9cf212fa) ) // B
933
934 ROM_REGION( 0x0100, REGION_USER1, 0 ) // CLUT(same PROM x 4)
935 ROM_LOAD( "pr6630a.bpr", 0x0000, 0x100, CRC(d6e202da) SHA1(500ebd5c95d2d2c33535d25cf7f8f649897dc224) )
936 ROM_LOAD( "pr6630b.bpr", 0x0000, 0x100, CRC(d6e202da) SHA1(500ebd5c95d2d2c33535d25cf7f8f649897dc224) )
937 ROM_LOAD( "pr6630c.bpr", 0x0000, 0x100, CRC(d6e202da) SHA1(500ebd5c95d2d2c33535d25cf7f8f649897dc224) )
938 ROM_LOAD( "pr6630d.bpr", 0x0000, 0x100, CRC(d6e202da) SHA1(500ebd5c95d2d2c33535d25cf7f8f649897dc224) )
939
940 ROM_REGION( 0x0020, REGION_USER2, 0 ) // MSM5232 PROM?(identical to bprom.3h in Equites)
941 ROM_LOAD( "pr.bpr", 0x00000, 0x020, CRC(33b98466) SHA1(017c73cf8c17dc5047c89316ae5b45f8d22092e8) )
942 ROM_END
943
944 /******************************************************************************/
945 // Bull Fighter ROM Map
946
947 ROM_START( bullfgtr )
948 ROM_REGION( 0x10000, REGION_CPU1, 0 ) // 68000 ROMs
949 ROM_LOAD16_BYTE( "m_d13.bin", 0x00001, 0x2000, CRC(7c35dd4b) SHA1(6bd604ee32c0c5db17f90e24aa254ec7072d27dd) )
950 ROM_LOAD16_BYTE( "m_b13.bin", 0x00000, 0x2000, CRC(c4adddce) SHA1(48b6ddbad52a3941d3e651642b26d9adf70f71f5) )
951 ROM_LOAD16_BYTE( "m_d12.bin", 0x04001, 0x2000, CRC(5d51be2b) SHA1(55d2718479cb71ceefefbaf40c14285e5603e526) )
952 ROM_LOAD16_BYTE( "m_b12.bin", 0x04000, 0x2000, CRC(d98390ef) SHA1(17006503325627055c8b22052d7ed94e474f4ef7) )
953 ROM_LOAD16_BYTE( "m_dd10.bin", 0x08001, 0x2000, CRC(21875752) SHA1(016db4125b1a4584ae277af427370780d96a17c5) )
954 ROM_LOAD16_BYTE( "m_b10.bin", 0x08000, 0x2000, CRC(9d84f678) SHA1(32584d54788cb570bd5210992836f28ba9c87aac) )
955 ROM_FILL( 0x0c000, 0x4000, 0 )
956
957 ROM_REGION( 0x10000, REGION_CPU2, 0 ) // Z80 ROMs
958 ROM_LOAD( "s_m1.bin", 0x00000, 0x2000, CRC(2a8e6fcf) SHA1(866903408e05938a982ffef4c9b849203c6cc060) )
959 ROM_LOAD( "s_l2.bin", 0x02000, 0x2000, CRC(026e1533) SHA1(6271869a3faaafacfac35262746e87a83c158b93) )
960 ROM_LOAD( "s_k1.bin", 0x04000, 0x2000, CRC(51ee751c) SHA1(60bf848dfdfe313ab05df5a5c05819b0fa87ca50) )
961 ROM_LOAD( "s_h1.bin", 0x06000, 0x2000, CRC(62c7a25b) SHA1(237d3cbdfbf45b33c2f65d30faba151380866a93) )
962
963 ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE ) // chars
964 ROM_LOAD( "m_e4.bin", 0x000000, 0x1000, CRC(c6894c9a) SHA1(0d5a55cded4fd833211bdc733a78c6c8423897de) )
965
966 ROM_REGION( 0x8000, REGION_GFX2, ROMREGION_DISPOSE ) // tile set1
967 ROM_LOAD_NIB_HIGH( "l_h7.bin", 0x00000, 0x2000, CRC(6d05e9f2) SHA1(4b5c92b72bf73a08a2359fe889a327a696a45e8a) )
968 ROM_LOAD ( "l_h7.bin", 0x02000, 0x2000, CRC(6d05e9f2) SHA1(4b5c92b72bf73a08a2359fe889a327a696a45e8a) )
969 ROM_LOAD ( "l_f7.bin", 0x04000, 0x2000, CRC(4352d069) SHA1(bac687f050837b023da00cb53bb524b2a76310d4) )
970 ROM_LOAD ( "l_f9.bin", 0x06000, 0x2000, CRC(24edfd7d) SHA1(be8a40d8d5ccff06f37c1ab67341f56e41a5ea88) )
971
972 ROM_REGION( 0x8000, REGION_GFX3, ROMREGION_DISPOSE ) // tile set2
973 ROM_LOAD_NIB_HIGH( "l_h9.bin", 0x00000, 0x2000, CRC(016340ae) SHA1(f980d39337c711a15520388967ca4503e7970e18) )
974 ROM_LOAD ( "l_h9.bin", 0x02000, 0x2000, CRC(016340ae) SHA1(f980d39337c711a15520388967ca4503e7970e18) )
975 ROM_LOAD ( "l_f10.bin", 0x04000, 0x2000, CRC(4947114e) SHA1(822dc3f14b71dc9e5b69078aefbed6b438aa0690) )
976 ROM_LOAD ( "l_f12.bin", 0x06000, 0x2000, CRC(fa296cb3) SHA1(2ba864766655cb3dd2999a6cdf96dcefd6818135) )
977
978 ROM_REGION( 0x8000, REGION_GFX4, ROMREGION_DISPOSE ) // sprite set1
979 ROM_LOAD_NIB_HIGH( "l_h6.bin", 0x00000, 0x2000, CRC(48394389) SHA1(a5c6021b60226a775b2052909e8d21b5f79d9ec5) )
980 ROM_LOAD ( "l_h6.bin", 0x02000, 0x2000, CRC(48394389) SHA1(a5c6021b60226a775b2052909e8d21b5f79d9ec5) )
981 ROM_LOAD ( "l_f6.bin", 0x04000, 0x2000, CRC(7c69b473) SHA1(abc181b4e5b3f48c667a0bb4814c3818dfc6e9e2) )
982 ROM_LOAD ( "l_f4.bin", 0x06000, 0x2000, CRC(c3dc713f) SHA1(c2072cc71ea61e0c718c339bda1460d93343469e) )
983
984 ROM_REGION( 0x8000, REGION_GFX5, ROMREGION_DISPOSE ) // sprite set2
985 ROM_LOAD_NIB_HIGH( "l_h4.bin", 0x00000, 0x2000, CRC(141409ec) SHA1(3cc542fa34fdbd71e392c7c22da5d5120642be86) )
986 ROM_LOAD ( "l_h4.bin", 0x02000, 0x2000, CRC(141409ec) SHA1(3cc542fa34fdbd71e392c7c22da5d5120642be86) )
987 ROM_LOAD ( "l_f3.bin", 0x04000, 0x2000, CRC(883f93fd) SHA1(a96df701f82e62582522953830049d29bcb3d458) )
988 ROM_LOAD ( "l_f1.bin", 0x06000, 0x2000, CRC(578ace7b) SHA1(933e85d49db7b27fd85e4713f0984612bc29e134) )
989
990 // all color PROMs of current dump are bad and have wrong sizes
991 ROM_REGION( 0x0300, REGION_PROMS, 0 ) // RGB PROMs
992 ROM_LOAD( "m_a3.bin", 0x00000, 0x100, BAD_DUMP CRC(8203ee60) SHA1(5bf5e54615c77945365c39d6ae95586ae187ebed) ) // R (made up, dump was bad)
993 ROM_LOAD( "m_a1.bin", 0x00100, 0x100, BAD_DUMP CRC(2eb1a3de) SHA1(80b0e0f882210f2119d7ee307deb856dcc288352) ) // G (made up, dump was bad)
994 ROM_LOAD( "m_a2.bin", 0x00200, 0x100, BAD_DUMP CRC(2e769d4c) SHA1(4de42319aed5073e88742c006b641efdd52cac80) ) // B (made up, dump was bad)
995
996 ROM_REGION( 0x0100, REGION_USER1, 0 ) // CLUT(same PROM x 4)
997 ROM_LOAD( "l_b6.bin", 0x0000, 0x100, CRC(8835a069) SHA1(bc8d4130d4fa0f16bb2511ac66b84d53218042a3) )
998 ROM_LOAD( "l_b7.bin", 0x0000, 0x100, CRC(8835a069) SHA1(bc8d4130d4fa0f16bb2511ac66b84d53218042a3) )
999 ROM_LOAD( "l_b9.bin", 0x0000, 0x100, CRC(8835a069) SHA1(bc8d4130d4fa0f16bb2511ac66b84d53218042a3) )
1000 ROM_LOAD( "l_b10.bin", 0x0000, 0x100, CRC(8835a069) SHA1(bc8d4130d4fa0f16bb2511ac66b84d53218042a3) )
1001
1002 ROM_REGION( 0x0020, REGION_USER2, 0 ) // MSM5232 PROMs?(identical to bprom.3h in Equites)
1003 ROM_LOAD( "s_h3.bin", 0x00000, 0x020, CRC(33b98466) SHA1(017c73cf8c17dc5047c89316ae5b45f8d22092e8) )
1004 ROM_END
1005
1006 /******************************************************************************/
1007 // Splendor Blast ROM Map
1008
1009 ROM_START( splndrbt )
1010 ROM_REGION( 0x10000, REGION_CPU1, 0 ) // 68000 ROMs(16k x 4)
1011 ROM_LOAD16_BYTE( "1.16a", 0x00001, 0x4000, CRC(4bf4b047) SHA1(ef0efffa2f49905e17e4ed3a03cac419793b26d1) )
1012 ROM_LOAD16_BYTE( "2.16c", 0x00000, 0x4000, CRC(27acb656) SHA1(5f2f8d05f2f1c6c92c8364e9e6831ca525cbacd0) )
1013 ROM_LOAD16_BYTE( "3.15a", 0x08001, 0x4000, CRC(5b182189) SHA1(50ebb1fddcb6838442e8a20261f200f3386ce8a8) )
1014 ROM_LOAD16_BYTE( "4.15c", 0x08000, 0x4000, CRC(cde99613) SHA1(250b59f75eee84442da3cc7c599d1e16f0294df9) )
1015
1016 ROM_REGION( 0x10000, REGION_CPU2, 0 ) // Z80 ROMs(8k x 4)
1017 ROM_LOAD( "1_v.1m", 0x00000, 0x2000, CRC(1b3a6e42) SHA1(41a4f0503c939ec0a739c8bc6bf3c8fc354912ee) )
1018 ROM_LOAD( "2_v.1l", 0x02000, 0x2000, CRC(2a618c72) SHA1(6ad459d94352c317150ae6344d4db9bb613938dd) )
1019 ROM_LOAD( "3_v.1k", 0x04000, 0x2000, CRC(bbee5346) SHA1(753cb784b04f081fa1f8590dc28056d9918f313b) )
1020 ROM_LOAD( "4_v.1h", 0x06000, 0x2000, CRC(10f45af4) SHA1(00fa599bad8bf3ba6deee54165f381403096e8f9) )
1021
1022 ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE ) // 512 chars(8k x 1)
1023 ROM_LOAD( "10.8c", 0x00000, 0x2000, CRC(501887d4) SHA1(3cf4401d6fddff1500066219a71ac3b30ecbdd28) )
1024
1025 ROM_REGION( 0x4000, REGION_GFX2, ROMREGION_DISPOSE ) // 256 tiles(16k x 1)
1026 ROM_LOAD( "8.14m", 0x00000, 0x4000, CRC(c2c86621) SHA1(a715c70ace98502f2c0d4a81539cd79d19e9b6c4) )
1027
1028 ROM_REGION( 0x4000, REGION_GFX3, ROMREGION_DISPOSE ) // 256 tiles(16k x 1)
1029 ROM_LOAD( "9.12m", 0x00000, 0x4000, CRC(4f7da6ff) SHA1(0516271df4a36d6ea38d1b8a5e471e1d2a79e8c1) )
1030
1031 ROM_REGION( 0x10000, REGION_GFX4, ROMREGION_DISPOSE ) // 256 sprites
1032 ROM_LOAD_NIB_HIGH( "6.18n", 0x00000, 0x2000, CRC(aa72237f) SHA1(0a26746a6c448a7fb853ef708e2bdeb76edd99cf) )
1033 ROM_CONTINUE ( 0x04000, 0x2000 )
1034 ROM_LOAD ( "6.18n", 0x02000, 0x2000, CRC(aa72237f) SHA1(0a26746a6c448a7fb853ef708e2bdeb76edd99cf) )
1035 ROM_CONTINUE ( 0x06000, 0x2000 )
1036 ROM_LOAD ( "5.18m", 0x08000, 0x4000, CRC(5f618b39) SHA1(2891067e71b8e1183ee5741487faa1561316cade) )
1037 ROM_LOAD ( "7.17m", 0x0c000, 0x4000, CRC(abdd8483) SHA1(df8c8338c24fa487c49b01ce26db7eb28c8c6b85) )
1038
1039 ROM_REGION( 0x0300, REGION_PROMS, 0 ) // RGB PROMs
1040 ROM_LOAD( "r.3a", 0x00000, 0x100, CRC(ca1f08ce) SHA1(e46e2850d3ee3c8cbb23c10645f07d406c7ff50b) ) // R
1041 ROM_LOAD( "g.1a", 0x00100, 0x100, CRC(66f89177) SHA1(caa51c1bf071764d5089487342794cbf023136c0) ) // G
1042 ROM_LOAD( "b.2a", 0x00200, 0x100, CRC(d14318bc) SHA1(e219963b3e40eb246e608fbe10daa85dbb4c1226) ) // B
1043
1044 ROM_REGION( 0x0500, REGION_USER1, 0 ) // CLUT(256bytes x 5)
1045 ROM_LOAD( "2.8k", 0x00000, 0x100, CRC(e1770ad3) SHA1(e408b175b8fff934e07b0ded1ee21d7f91a9523d) )
1046 ROM_LOAD( "s5.15p", 0x00100, 0x100, CRC(7f6cf709) SHA1(5938faf937b682dcc83e53444cbf5e0bd7741363) )
1047 ROM_LOAD( "s3.8l", 0x00200, 0x100, CRC(1314b0b5) SHA1(31ef4b916110581390afc1ba90c5dca7c08c619f) ) // unknown
1048 ROM_LOAD( "1.9j", 0x00300, 0x100, CRC(f5b9b777) SHA1(a4ec731be77306db6baf319391c4fe78517fe43e) ) // unknown
1049 ROM_LOAD( "4.7m", 0x00400, 0x100, CRC(12cbcd2c) SHA1(a7946820bbf3f7e110a328b673123988af97ce7e) ) // unknown
1050
1051 ROM_REGION( 0x2000, REGION_USER2, 0 ) // unknown(8k x 1)
1052 ROM_LOAD( "0.8h", 0x00000, 0x2000, CRC(12681fb5) SHA1(7a0930819d4cd00475d1897128daa6ac865e07d0) )
1053
1054 ROM_REGION( 0x0020, REGION_USER3, 0 ) // MSM5232 PROMs?(identical to bprom.3h in Equites)
1055 ROM_LOAD( "3h.bpr", 0x00000, 0x020, CRC(33b98466) SHA1(017c73cf8c17dc5047c89316ae5b45f8d22092e8) )
1056 ROM_END
1057
1058 /******************************************************************************/
1059 // High Voltage ROM Map
1060
1061 ROM_START( hvoltage )
1062 ROM_REGION( 0x10000, REGION_CPU1, 0 ) // 68000 ROMs(16k x 4)
1063 ROM_LOAD16_BYTE( "1.16a", 0x00001, 0x4000, CRC(82606e3b) SHA1(25c3172928d8f1eda2c4c757d505fdfd91f21ea1) )
1064 ROM_LOAD16_BYTE( "2.16c", 0x00000, 0x4000, CRC(1d74fef2) SHA1(3df3dc98a78a137da8c5cddf6a8519b477824fb9) )
1065 ROM_LOAD16_BYTE( "3.15a", 0x08001, 0x4000, CRC(677abe14) SHA1(78b343122f9ad187c823bf49e8f001288c762586) )
1066 ROM_LOAD16_BYTE( "4.15c", 0x08000, 0x4000, CRC(8aab5a20) SHA1(fb90817173ad69c0e00d03814b4e10b18955c07e) )
1067
1068 ROM_REGION( 0x10000, REGION_CPU2, 0 ) // Z80 ROMs(8k x 3)
1069 ROM_LOAD( "5_v.1l", 0x00000, 0x4000, CRC(ed9bb6ea) SHA1(73b0251b86835368ec2a4e98a5f61e28e58fd234) )
1070 ROM_LOAD( "6_v.1h", 0x04000, 0x4000, CRC(e9542211) SHA1(482f2c90e842fe5cc31cc6a39025adf65ba47ce9) )
1071 ROM_LOAD( "7_v.1e", 0x08000, 0x4000, CRC(44d38554) SHA1(6765971376eafa218fda1accb1e173a7c1850cc8) )
1072
1073 ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE ) // 512 chars(8k x 1)
1074 ROM_LOAD( "5.8c", 0x00000, 0x2000, CRC(656d53cd) SHA1(9971ed7e7da0e8bf46e97e8f75a2c2201b33fc2f) )
1075
1076 ROM_REGION( 0x4000, REGION_GFX2, ROMREGION_DISPOSE ) // 256 tiles(16k x 1)
1077 ROM_LOAD( "9.14m", 0x00000, 0x4000, CRC(506a0989) SHA1(0e7f2c9bab5e83f06a8148f69d8d0cbfe7d55c5e) )
1078
1079 ROM_REGION( 0x4000, REGION_GFX3, ROMREGION_DISPOSE ) // 256 tiles(16k x 1)
1080 ROM_LOAD( "10.12m", 0x00000, 0x4000, CRC(98f87d4f) SHA1(94a7a14b0905597993595b347102436d97fc1dc9) )
1081
1082 ROM_REGION( 0x10000, REGION_GFX4, ROMREGION_DISPOSE ) // 256 sprites
1083 ROM_LOAD_NIB_HIGH( "8.18n", 0x00000, 0x2000, CRC(725acae5) SHA1(ba54598a087f8bb5fa7182b0e85d0e038003e622) )
1084 ROM_CONTINUE ( 0x04000, 0x2000 )
1085 ROM_LOAD ( "8.18n", 0x02000, 0x2000, CRC(725acae5) SHA1(ba54598a087f8bb5fa7182b0e85d0e038003e622) )
1086 ROM_CONTINUE ( 0x06000, 0x2000 )
1087 ROM_LOAD ( "6.18m", 0x08000, 0x4000, CRC(9baf2c68) SHA1(208e5ac8eb157d4bf949ab4330827da032a04235) )
1088 ROM_LOAD ( "7.17m", 0x0c000, 0x4000, CRC(12d25fb1) SHA1(99f5d68bd6d6ee5f2acb7685aceacfb0894c4961) )
1089
1090 ROM_REGION( 0x0300, REGION_PROMS, 0 ) // RGB PROMs
1091 ROM_LOAD( "r.3a", 0x00000, 0x100, CRC(98eccbf6) SHA1(a55755e8388d3edf3020b1129a638fe1e99362b6) ) // R
1092 ROM_LOAD( "g.1a", 0x00100, 0x100, CRC(fab2ed23) SHA1(6f63b6a3196dda76eb9a885b17d886a14365f922) ) // G
1093 ROM_LOAD( "b.2a", 0x00200, 0x100, CRC(7274961b) SHA1(d13070060e216d633675a528cf0dc3de94c95ffb) ) // B
1094
1095 ROM_REGION( 0x0500, REGION_USER1, 0 ) // CLUT(256bytes x 5)
1096 ROM_LOAD( "2.8k", 0x00000, 0x100, CRC(685f4e44) SHA1(110cb8f5a37f22ce9d391bd0cd46dcbb8fcf66b8) )
1097 ROM_LOAD( "s5.15p", 0x00100, 0x100, CRC(b09bcc73) SHA1(f8139feaa9563324b69aeac5c17beccfdbfa0864) )
1098 ROM_LOAD( "3.8l", 0x00200, 0x100, CRC(1314b0b5) SHA1(31ef4b916110581390afc1ba90c5dca7c08c619f) ) // unknown(identical to s3.8l in Splendor Blast)
1099 ROM_LOAD( "1.9j", 0x00300, 0x100, CRC(f5b9b777) SHA1(a4ec731be77306db6baf319391c4fe78517fe43e) ) // unknown(identical to 1.9j in Splendor Blast)
1100 ROM_LOAD( "4.7m", 0x00400, 0x100, CRC(12cbcd2c) SHA1(a7946820bbf3f7e110a328b673123988af97ce7e) ) // unknown(identical to 4.7m in Splendor Blast)
1101
1102 ROM_REGION( 0x2000, REGION_USER2, 0 ) // unknown(8k x 1, identical to 0.8h in Splendor Blast )
1103 ROM_LOAD( "0.8h", 0x00000, 0x2000, CRC(12681fb5) SHA1(7a0930819d4cd00475d1897128daa6ac865e07d0) )
1104
1105 ROM_REGION( 0x0020, REGION_USER3, 0 ) // MSM5232 PROMs?(identical to bprom.3h in Equites)
1106 ROM_LOAD( "3h.bpr", 0x00000, 0x020, CRC(33b98466) SHA1(017c73cf8c17dc5047c89316ae5b45f8d22092e8) )
1107 ROM_END
1108
1109 /******************************************************************************/
1110 // Initializations
1111
1112 static void equites_init_common(void)
1113 {
1114 equites_flip = 0;
1115
1116 equites_8404init();
1117 }
1118
splndrbt_init_common(void)1119 static void splndrbt_init_common(void)
1120 {
1121 equites_8404init();
1122 }
1123
DRIVER_INIT(equites)1124 static DRIVER_INIT( equites )
1125 {
1126 equites_id = 0x8400;
1127
1128 equites_init_common();
1129
1130 equites_8404rule(0x094a, 0x007, 0x04); // 8404 test
1131 equites_8404rule(0x094e, 0x049, 0x00); // 8404 test
1132
1133 equites_8404rule(0x0c76, 0x00b, 0x04); // death
1134 equites_8404rule(0x0c7e, 0x0cf, 0x0c); // 2nd jmp hi
1135 equites_8404rule(0x0c84, 0x0d1, 0xae); // 2nd jmp lo
1136 equites_8404rule(0x0c8c, 0x0d3, 0x0c); // 1st jmp hi
1137 equites_8404rule(0x0c92, 0x0d5, 0x9c); // 1st jmp lo
1138
1139 equites_8404rule(0x92a6, 0x00f, 0x04); // respawn
1140 equites_8404rule(0x92b0, 0x27d,-0x40); // 2nd jmp hi
1141 equites_8404rule(0x92b6, 0x27f,-0x04); // 2nd jmp lo
1142 equites_8404rule(0x92b0, 0x281,-0x50); // 1st jmp hi
1143 equites_8404rule(0x92b6, 0x283,-0x05); // 1st jmp lo
1144
1145 equites_8404rule(0x8f06, 0x013, 0x04); // ENT
1146 equites_8404rule(0x8f0c, 0x481,-0x10); // ENT jmpaddr hi
1147 equites_8404rule(0x8f12, 0x483,-0x01); // ENT jmpaddr lo
1148
1149 equites_8404rule(0x915e, 0x017, 0x04); // EXT
1150 equites_8404rule(0x9164, 0x47d,-0x20); // scroll y
1151 equites_8404rule(0x916a, 0x47f,-0x02); // player y
1152 equites_8404rule(0x9170, 0x481,-0x30); // exit location hi
1153 equites_8404rule(0x9176, 0x483,-0x03); // exit location lo
1154 }
1155
DRIVER_INIT(bullfgtr)1156 static DRIVER_INIT( bullfgtr )
1157 {
1158 equites_id = 0x8401;
1159
1160 equites_init_common();
1161
1162 equites_8404rule(0x0e7a, 0x601, 0x00); // boot up
1163 equites_8404rule(0x3da4, 0x201, 0x0c); // goal in
1164 }
1165
DRIVER_INIT(kouyakyu)1166 static DRIVER_INIT( kouyakyu )
1167 {
1168 equites_id = 0x8500;
1169
1170 equites_init_common();
1171
1172 equites_8404rule(0x5582, 0x603, 0x05); // home run
1173 }
1174
DRIVER_INIT(splndrbt)1175 static DRIVER_INIT( splndrbt )
1176 {
1177 equites_id = 0x8510;
1178
1179 splndrbt_init_common();
1180
1181 equites_8404rule(0x06f8, 0x007, 0x04); // 8404 test
1182 equites_8404rule(0x06fc, 0x049, 0x00); // 8404 test
1183
1184 equites_8404rule(0x12dc, 0x01b, 0x04); // guard point
1185 equites_8404rule(0x12e4, 0x01f, 0x04); // guard point
1186
1187 equites_8404rule(0x0dc2, 0x00b, 0x04); // guard point (start race)
1188 equites_8404rule(0x0dd4, 0x5e1, 0x00); // no. of addresses to look up - 1
1189 equites_8404rule(0x0dd8, 0x5e3, 0x0c); // race start/respawn addr hi
1190 equites_8404rule(0x0dde, 0x5e5, 0x32); // race start/respawn addr lo
1191
1192 equites_8404rule(0x1268, 0x023, 0x04); // guard point
1193
1194 equites_8404rule(0x1298, 0x25f,-0x0c); // stage number?
1195
1196 // game params. (180261-18027f)->(40060-4006f)
1197 equites_8404rule(0x12a0, 0x261, 0x0a); // max speed hi
1198 equites_8404rule(0x12a0, 0x263, 0x00); // max speed lo
1199 equites_8404rule(0x12a0, 0x265, 0x00); // accel hi
1200 equites_8404rule(0x12a0, 0x267, 0x10); // accel lo
1201 equites_8404rule(0x12a0, 0x269, 0x0c); // max turbo speed hi
1202 equites_8404rule(0x12a0, 0x26b, 0x00); // max turbo speed lo
1203 equites_8404rule(0x12a0, 0x26d, 0x00); // turbo accel hi
1204 equites_8404rule(0x12a0, 0x26f, 0x20); // turbo accel lo
1205 equites_8404rule(0x12a0, 0x271,-0x09); // random enemy spwan list
1206 equites_8404rule(0x12a0, 0x273,-0x09); // .
1207 equites_8404rule(0x12a0, 0x275,-0x09); // .
1208 equites_8404rule(0x12a0, 0x277,-0x09); // .
1209 equites_8404rule(0x12a0, 0x279,-0x09); // .
1210 equites_8404rule(0x12a0, 0x27b,-0x09); // .
1211 equites_8404rule(0x12a0, 0x27d,-0x09); // .
1212 equites_8404rule(0x12a0, 0x27f,-0x09); // .
1213
1214 equites_8404rule(0x500e, 0x281,-0x08); // power-up's (random?)
1215 equites_8404rule(0x500e, 0x283,-0x08); // power-up's (random?)
1216
1217 equites_8404rule(0x132e, 0x285,-0xa0); // object spawn table addr hi
1218 equites_8404rule(0x1334, 0x287,-0x0a); // object spawn table addr lo
1219
1220 equites_8404rule(0x739a, 0x289,-0xb0); // level section table addr hi
1221 equites_8404rule(0x73a0, 0x28b,-0x0b); // level section table addr lo
1222
1223 equites_8404rule(0x0912, 0x017, 0x04); // guard point
1224 equites_8404rule(0x0b4c, 0x013, 0x04); // guard point
1225
1226 equites_8404rule(0x0bfc, 0x00f, 0x04); // guard point (miss/no gas/end level)
1227 equites_8404rule(0x0c08, 0x5e1, 0x05); // no. of addresses to look up - 1
1228 equites_8404rule(0x0c0c, 0x5e3,-0x70); // game over/respawn addr hi
1229 equites_8404rule(0x0c12, 0x5e5,-0x07); // game over/respawn addr lo
1230 equites_8404rule(0x0c0c, 0x5e7,-0x70); // game over/respawn addr hi
1231 equites_8404rule(0x0c12, 0x5e9,-0x07); // game over/respawn addr lo
1232 equites_8404rule(0x0c0c, 0x5eb,-0x70); // game over/respawn addr hi
1233 equites_8404rule(0x0c12, 0x5ed,-0x07); // game over/respawn addr lo
1234 equites_8404rule(0x0c0c, 0x5ef,-0x70); // game over/respawn addr hi
1235 equites_8404rule(0x0c12, 0x5f1,-0x07); // game over/respawn addr lo
1236 equites_8404rule(0x0c0c, 0x5f3,-0x70); // game over/respawn addr hi
1237 equites_8404rule(0x0c12, 0x5f5,-0x07); // game over/respawn addr lo
1238 equites_8404rule(0x0c0c, 0x5f7,-0x70); // game over/respawn addr hi
1239 equites_8404rule(0x0c12, 0x5f9,-0x07); // game over/respawn addr lo
1240 }
1241
DRIVER_INIT(hvoltage)1242 static DRIVER_INIT( hvoltage )
1243 {
1244 int i;
1245
1246 #if HVOLTAGE_HACK
1247 install_mem_read16_handler(0, 0x000038, 0x000039, hvoltage_debug_r);
1248 #endif
1249
1250 equites_id = 0x8511;
1251
1252 splndrbt_init_common();
1253
1254 equites_8404rule(0x0b18, 0x007, 0x04); // 8404 test
1255 equites_8404rule(0x0b1c, 0x049, 0x00); // 8404 test
1256
1257 for(i=0x07; i<0x47; i+=4) equites_8404rule(0x0c64, i, 0xff); // checksum
1258
1259 equites_8404rule(0x0df6, 0x00f, 0x04); // 1st gateway (init)
1260 equites_8404rule(0x0e02, 0x247, 0x01); // no. of addresses to look up - 1
1261 equites_8404rule(0x0e06, 0x249, 0x10); // addr hi
1262 equites_8404rule(0x0e0c, 0x24b, 0x12); // addr lo
1263 equites_8404rule(0x0e06, 0x24d, 0x19); // addr hi
1264 equites_8404rule(0x0e0c, 0x24f, 0x96); // addr lo
1265
1266 equites_8404rule(0x10fc, 0x017, 0x04); // 2nd gateway (intro)
1267 equites_8404rule(0x111e, 0x6a5, 0x00); // no. of addresses to look up - 1
1268 equites_8404rule(0x1122, 0x6a7, 0x11); // addr hi
1269 equites_8404rule(0x1128, 0x6a9, 0xa4); // addr lo
1270
1271 equites_8404rule(0x0f86, 0x013, 0x04); // 3rd gateway (miss)
1272 equites_8404rule(0x0f92, 0x491, 0x03); // no. of addresses to look up - 1
1273 equites_8404rule(0x0f96, 0x493,-0x60); // addr hi
1274 equites_8404rule(0x0f9c, 0x495,-0x06); // addr lo
1275 equites_8404rule(0x0f96, 0x497,-0x60); // addr hi
1276 equites_8404rule(0x0f9c, 0x499,-0x06); // addr lo
1277 equites_8404rule(0x0f96, 0x49b,-0x60); // addr hi
1278 equites_8404rule(0x0f9c, 0x49d,-0x06); // addr lo
1279 equites_8404rule(0x0f96, 0x49f,-0x60); // addr hi
1280 equites_8404rule(0x0f9c, 0x4a1,-0x06); // addr lo
1281 }
1282
1283 /******************************************************************************/
1284
1285 // Game Entries
1286
1287 // Equites Hardware
1288 GAMEX( 1984, equites, 0, equites, equites, equites, ROT90, "Alpha Denshi Co.", "Equites", GAME_UNEMULATED_PROTECTION | GAME_NO_COCKTAIL )
1289 GAMEX( 1984, equitess, equites, equites, equites, equites, ROT90, "Alpha Denshi Co. (Sega license)", "Equites (Sega)", GAME_UNEMULATED_PROTECTION | GAME_NO_COCKTAIL )
1290 GAMEX( 1984, bullfgtr, 0, equites, bullfgtr, bullfgtr, ROT90, "Alpha Denshi Co. (Sega license)", "Bull Fighter", GAME_UNEMULATED_PROTECTION | GAME_WRONG_COLORS )
1291 GAMEX( 1985, kouyakyu, 0, equites, kouyakyu, kouyakyu, ROT0, "Alpha Denshi Co.", "The Koukouyakyuh", GAME_UNEMULATED_PROTECTION )
1292
1293 // Splendor Blast Hardware
1294 GAMEX( 1985, splndrbt, 0, splndrbt, splndrbt, splndrbt, ROT0, "Alpha Denshi Co.", "Splendor Blast", GAME_UNEMULATED_PROTECTION | GAME_NO_COCKTAIL )
1295 GAMEX( 1985, hvoltage, 0, splndrbt, hvoltage, hvoltage, ROT0, "Alpha Denshi Co.", "High Voltage", GAME_UNEMULATED_PROTECTION )
1296
1297 /******************************************************************************/
1298