139
139
***************************************************************************/
141
static WRITE16_HANDLER( grdians_lockout_w )
141
WRITE16_MEMBER(seta2_state::grdians_lockout_w)
143
143
if (ACCESSING_BITS_0_7)
145
145
// initially 0, then either $25 (coin 1) or $2a (coin 2)
146
coin_counter_w(space->machine(), 0,data & 0x01); // or 0x04
147
coin_counter_w(space->machine(), 1,data & 0x02); // or 0x08
146
coin_counter_w(machine(), 0,data & 0x01); // or 0x04
147
coin_counter_w(machine(), 1,data & 0x02); // or 0x08
149
149
// popmessage("%04X", data & 0xffff);
152
static ADDRESS_MAP_START( grdians_map, AS_PROGRAM, 16 )
152
static ADDRESS_MAP_START( grdians_map, AS_PROGRAM, 16, seta2_state )
153
153
AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
154
154
AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
155
155
AM_RANGE(0x304000, 0x30ffff) AM_RAM // ? seems tile data
160
160
AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SYSTEM") // Coins
161
161
AM_RANGE(0x70000c, 0x70000d) AM_READ(watchdog_reset16_r) // Watchdog
162
162
AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w)
163
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound
164
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size) // Sprites
165
AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette
163
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound
164
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
165
AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
166
166
AM_RANGE(0xc50000, 0xc5ffff) AM_RAM // cleared
167
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE_MEMBER(seta2_state, m_vregs) // Video Registers
167
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers
168
168
AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(seta2_sound_bank_w) // Samples Banks
169
AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers
169
AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers
172
172
/***************************************************************************
200
200
AM_RANGE(0x70000a, 0x70000b) AM_READ_PORT("IN1") // P2
201
201
AM_RANGE(0x70000c, 0x70000d) AM_WRITE(watchdog_reset16_w)
202
202
AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w)
203
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound
204
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size) // Sprites
205
AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette
203
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound
204
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
205
AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
206
206
AM_RANGE(0xc50000, 0xc5ffff) AM_RAM // cleared
207
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE_MEMBER(seta2_state, m_vregs) // Video Registers
207
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers
208
208
AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(seta2_sound_bank_w) // Samples Banks
209
AM_RANGE(0xfffd0a, 0xfffd0b) AM_DEVREADWRITE("eeprom", gundamex_eeprom_r,gundamex_eeprom_w) // parallel data register
210
AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers
209
AM_RANGE(0xfffd0a, 0xfffd0b) AM_DEVREADWRITE_LEGACY("eeprom", gundamex_eeprom_r,gundamex_eeprom_w) // parallel data register
210
AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers
215
215
Wakakusamonogatari Mahjong Yonshimai
216
216
***************************************************************************/
218
static READ16_HANDLER( mj4simai_p1_r )
220
seta2_state *state = space->machine().driver_data<seta2_state>();
222
switch (state->m_keyboard_row)
224
case 0x01: return input_port_read(space->machine(), "P1_KEY0");
225
case 0x02: return input_port_read(space->machine(), "P1_KEY1");
226
case 0x04: return input_port_read(space->machine(), "P1_KEY2");
227
case 0x08: return input_port_read(space->machine(), "P1_KEY3");
228
case 0x10: return input_port_read(space->machine(), "P1_KEY4");
229
default: logerror("p1_r with keyboard_row = %02x\n", state->m_keyboard_row); return 0xffff;
233
static READ16_HANDLER( mj4simai_p2_r )
235
seta2_state *state = space->machine().driver_data<seta2_state>();
237
switch (state->m_keyboard_row)
239
case 0x01: return input_port_read(space->machine(), "P2_KEY0");
240
case 0x02: return input_port_read(space->machine(), "P2_KEY1");
241
case 0x04: return input_port_read(space->machine(), "P2_KEY2");
242
case 0x08: return input_port_read(space->machine(), "P2_KEY3");
243
case 0x10: return input_port_read(space->machine(), "P2_KEY4");
244
default: logerror("p2_r with keyboard_row = %02x\n", state->m_keyboard_row); return 0xffff;
248
static WRITE16_HANDLER( mj4simai_keyboard_w )
250
seta2_state *state = space->machine().driver_data<seta2_state>();
218
READ16_MEMBER(seta2_state::mj4simai_p1_r)
221
switch (m_keyboard_row)
223
case 0x01: return ioport("P1_KEY0")->read();
224
case 0x02: return ioport("P1_KEY1")->read();
225
case 0x04: return ioport("P1_KEY2")->read();
226
case 0x08: return ioport("P1_KEY3")->read();
227
case 0x10: return ioport("P1_KEY4")->read();
228
default: logerror("p1_r with keyboard_row = %02x\n", m_keyboard_row); return 0xffff;
232
READ16_MEMBER(seta2_state::mj4simai_p2_r)
235
switch (m_keyboard_row)
237
case 0x01: return ioport("P2_KEY0")->read();
238
case 0x02: return ioport("P2_KEY1")->read();
239
case 0x04: return ioport("P2_KEY2")->read();
240
case 0x08: return ioport("P2_KEY3")->read();
241
case 0x10: return ioport("P2_KEY4")->read();
242
default: logerror("p2_r with keyboard_row = %02x\n", m_keyboard_row); return 0xffff;
246
WRITE16_MEMBER(seta2_state::mj4simai_keyboard_w)
252
249
if (ACCESSING_BITS_0_7)
253
state->m_keyboard_row = data & 0xff;
250
m_keyboard_row = data & 0xff;
256
static ADDRESS_MAP_START( mj4simai_map, AS_PROGRAM, 16 )
253
static ADDRESS_MAP_START( mj4simai_map, AS_PROGRAM, 16, seta2_state )
257
254
AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM
258
255
AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
259
256
AM_RANGE(0x600000, 0x600001) AM_READ(mj4simai_p1_r) // P1
265
262
AM_RANGE(0x600300, 0x600301) AM_READ_PORT("DSW1") // DSW 1
266
263
AM_RANGE(0x600302, 0x600303) AM_READ_PORT("DSW2") // DSW 2
267
264
AM_RANGE(0x600300, 0x60030f) AM_WRITE(seta2_sound_bank_w) // Samples Banks
268
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound
269
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size) // Sprites
270
AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette
271
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE_MEMBER(seta2_state, m_vregs) // Video Registers
272
AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers
265
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound
266
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
267
AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
268
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers
269
AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers
288
285
AM_RANGE(0x700300, 0x700301) AM_READ_PORT("DSW1") // DSW 1
289
286
AM_RANGE(0x700302, 0x700303) AM_READ_PORT("DSW2") // DSW 2
290
287
AM_RANGE(0x700310, 0x70031f) AM_WRITE(seta2_sound_bank_w) // Samples Banks
291
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound
292
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size) // Sprites
293
AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette
294
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE_MEMBER(seta2_state, m_vregs) // Video Registers
295
AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers
288
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound
289
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
290
AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
291
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers
292
AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers
311
308
AM_RANGE(0x600300, 0x600301) AM_READ_PORT("DSW1") // DSW 1
312
309
AM_RANGE(0x600302, 0x600303) AM_READ_PORT("DSW2") // DSW 2
313
310
AM_RANGE(0x600300, 0x60030f) AM_WRITE(seta2_sound_bank_w) // Samples Banks
314
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound
315
AM_RANGE(0xd00000, 0xd3ffff) AM_RAM AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size) // Sprites
316
AM_RANGE(0xd40000, 0xd4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette
317
AM_RANGE(0xd60000, 0xd6003f) AM_WRITE(seta2_vregs_w) AM_BASE_MEMBER(seta2_state, m_vregs) // Video Registers
318
AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers
311
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound
312
AM_RANGE(0xd00000, 0xd3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
313
AM_RANGE(0xd40000, 0xd4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
314
AM_RANGE(0xd60000, 0xd6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers
315
AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers
326
323
/* The game checks for a specific value read from the ROM region.
327
324
The offset to use is stored in RAM at address 0x20BA16 */
328
static READ16_HANDLER( pzlbowl_protection_r )
330
UINT32 address = (space->read_word(0x20ba16) << 16) | space->read_word(0x20ba18);
331
return space->machine().region("maincpu")->base()[address - 2];
334
static READ16_HANDLER( pzlbowl_coins_r )
336
return input_port_read(space->machine(), "SYSTEM") | (space->machine().rand() & 0x80 );
339
static WRITE16_HANDLER( pzlbowl_coin_counter_w )
325
READ16_MEMBER(seta2_state::pzlbowl_protection_r)
327
UINT32 address = (space.read_word(0x20ba16) << 16) | space.read_word(0x20ba18);
328
return memregion("maincpu")->base()[address - 2];
331
READ16_MEMBER(seta2_state::pzlbowl_coins_r)
333
return ioport("SYSTEM")->read() | (machine().rand() & 0x80 );
336
WRITE16_MEMBER(seta2_state::pzlbowl_coin_counter_w)
341
338
if (ACCESSING_BITS_0_7)
343
coin_counter_w(space->machine(), 0,data & 0x10);
344
coin_counter_w(space->machine(), 1,data & 0x20);
340
coin_counter_w(machine(), 0,data & 0x10);
341
coin_counter_w(machine(), 1,data & 0x20);
348
static ADDRESS_MAP_START( pzlbowl_map, AS_PROGRAM, 16 )
345
static ADDRESS_MAP_START( pzlbowl_map, AS_PROGRAM, 16, seta2_state )
349
346
AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
350
347
AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
351
348
AM_RANGE(0x400300, 0x400301) AM_READ_PORT("DSW1") // DSW 1
356
353
AM_RANGE(0x500004, 0x500005) AM_READWRITE(pzlbowl_coins_r,pzlbowl_coin_counter_w) // Coins + Protection?
357
354
AM_RANGE(0x500006, 0x500007) AM_READ(watchdog_reset16_r) // Watchdog
358
355
AM_RANGE(0x700000, 0x700001) AM_READ(pzlbowl_protection_r) // Protection
359
AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size) // Sprites
360
AM_RANGE(0x840000, 0x84ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette
361
AM_RANGE(0x860000, 0x86003f) AM_WRITE(seta2_vregs_w) AM_BASE_MEMBER(seta2_state, m_vregs) // Video Registers
362
AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound
363
AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers
356
AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_SHARE("spriteram") // Sprites
357
AM_RANGE(0x840000, 0x84ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
358
AM_RANGE(0x860000, 0x86003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers
359
AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound
360
AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers
382
379
AM_RANGE(0x600004, 0x600005) AM_WRITE(pzlbowl_coin_counter_w) // Coins Counter
383
380
AM_RANGE(0x600006, 0x600007) AM_READ(watchdog_reset16_r) // Watchdog
384
381
//AM_RANGE(0x700000, 0x700001) AM_READ(pzlbowl_protection_r) // Protection
385
AM_RANGE(0xb00000, 0xb3ffff) AM_RAM AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size) // Sprites
386
AM_RANGE(0xb40000, 0xb4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette
387
AM_RANGE(0xb60000, 0xb6003f) AM_WRITE(seta2_vregs_w) AM_BASE_MEMBER(seta2_state, m_vregs)
388
AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound
389
AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers
382
AM_RANGE(0xb00000, 0xb3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
383
AM_RANGE(0xb40000, 0xb4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
384
AM_RANGE(0xb60000, 0xb6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs")
385
AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound
386
AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers
395
392
***************************************************************************/
397
static WRITE16_HANDLER( reelquak_leds_w )
394
WRITE16_MEMBER(seta2_state::reelquak_leds_w)
399
396
if (ACCESSING_BITS_0_7)
401
set_led_status( space->machine(), 0, data & 0x0001 ); // start
402
set_led_status( space->machine(), 1, data & 0x0002 ); // small
403
set_led_status( space->machine(), 2, data & 0x0004 ); // bet
404
set_led_status( space->machine(), 3, data & 0x0008 ); // big
405
set_led_status( space->machine(), 4, data & 0x0010 ); // double up
406
set_led_status( space->machine(), 5, data & 0x0020 ); // collect
407
set_led_status( space->machine(), 6, data & 0x0040 ); // bet cancel
398
set_led_status( machine(), 0, data & 0x0001 ); // start
399
set_led_status( machine(), 1, data & 0x0002 ); // small
400
set_led_status( machine(), 2, data & 0x0004 ); // bet
401
set_led_status( machine(), 3, data & 0x0008 ); // big
402
set_led_status( machine(), 4, data & 0x0010 ); // double up
403
set_led_status( machine(), 5, data & 0x0020 ); // collect
404
set_led_status( machine(), 6, data & 0x0040 ); // bet cancel
409
406
if (ACCESSING_BITS_8_15)
411
ticket_dispenser_w(space->machine().device("ticket"), 0, (data & 0x0100) >> 1); // ticket dispenser
408
machine().device<ticket_dispenser_device>("ticket")->write(space, 0, (data & 0x0100) >> 1); // ticket dispenser
414
411
// popmessage("LED %04X", data);
417
static WRITE16_HANDLER( reelquak_coin_w )
414
WRITE16_MEMBER(seta2_state::reelquak_coin_w)
419
416
if (ACCESSING_BITS_0_7)
421
coin_counter_w(space->machine(), 0, data & 0x01); // coin in
422
coin_counter_w(space->machine(), 1, data & 0x02); // coin in
423
coin_counter_w(space->machine(), 2, data & 0x04); // pay out
424
coin_counter_w(space->machine(), 3, data & 0x08); // key in
418
coin_counter_w(machine(), 0, data & 0x01); // coin in
419
coin_counter_w(machine(), 1, data & 0x02); // coin in
420
coin_counter_w(machine(), 2, data & 0x04); // pay out
421
coin_counter_w(machine(), 3, data & 0x08); // key in
425
422
// data & 0x10); // Sound IRQ Ack.? 1->0
426
423
// data & 0x20); // Vblank IRQ.? 1
428
425
// popmessage("COIN %04X", data & 0xffff);
431
static ADDRESS_MAP_START( reelquak_map, AS_PROGRAM, 16 )
428
static ADDRESS_MAP_START( reelquak_map, AS_PROGRAM, 16, seta2_state )
432
429
AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
433
430
AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
434
431
AM_RANGE(0x300000, 0x303fff) AM_RAM AM_SHARE("nvram") // NVRAM (Battery Backed)
440
437
AM_RANGE(0x400300, 0x400301) AM_READ_PORT("DSW1") // DSW 1
441
438
AM_RANGE(0x400302, 0x400303) AM_READ_PORT("DSW2") // DSW 2
442
439
AM_RANGE(0x400300, 0x40030f) AM_WRITE(seta2_sound_bank_w) // Samples Banks
443
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound
444
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size) // Sprites
445
AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette
446
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE_MEMBER(seta2_state, m_vregs) // Video Registers
447
AM_RANGE(0xfffd0a, 0xfffd0b) AM_WRITE( reelquak_leds_w ) // parallel data register (leds)
448
AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers
440
AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r,seta_sound_word_w) // Sound
441
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
442
AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
443
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers
444
AM_RANGE(0xfffd0a, 0xfffd0b) AM_WRITE(reelquak_leds_w ) // parallel data register (leds)
445
AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers
454
451
***************************************************************************/
457
static ADDRESS_MAP_START( namcostr_map, AS_PROGRAM, 16 )
454
static ADDRESS_MAP_START( namcostr_map, AS_PROGRAM, 16, seta2_state )
458
455
AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
459
456
AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM
460
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size) // Sprites
461
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE_MEMBER(seta2_state, m_vregs) // Video Registers
462
AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers
457
AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_SHARE("spriteram") // Sprites
458
AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers
459
AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers
467
464
Sammy Outdoor Shooting
468
465
***************************************************************************/
470
static WRITE16_HANDLER( samshoot_coin_w )
467
WRITE16_MEMBER(seta2_state::samshoot_coin_w)
472
469
if (ACCESSING_BITS_0_7)
474
coin_counter_w(space->machine(), 0, data & 0x10);
475
coin_counter_w(space->machine(), 1, data & 0x20);
471
coin_counter_w(machine(), 0, data & 0x10);
472
coin_counter_w(machine(), 1, data & 0x20);
476
473
// Are these connected? They are set in I/O test
477
coin_lockout_w(space->machine(), 0,~data & 0x40);
478
coin_lockout_w(space->machine(), 1,~data & 0x80);
474
coin_lockout_w(machine(), 0,~data & 0x40);
475
coin_lockout_w(machine(), 1,~data & 0x80);
480
477
// popmessage("%04x",data);
483
static ADDRESS_MAP_START( samshoot_map, AS_PROGRAM, 16 )
480
static ADDRESS_MAP_START( samshoot_map, AS_PROGRAM, 16, seta2_state )
484
481
AM_RANGE( 0x000000, 0x1fffff ) AM_ROM
485
482
AM_RANGE( 0x200000, 0x20ffff ) AM_RAM
486
483
AM_RANGE( 0x300000, 0x30ffff ) AM_RAM AM_SHARE("nvram")
488
485
AM_RANGE( 0x400000, 0x400001 ) AM_READ_PORT("DSW1") // DSW 1
489
486
AM_RANGE( 0x400002, 0x400003 ) AM_READ_PORT("BUTTONS") // Buttons
491
AM_RANGE( 0x400300, 0x40030f ) AM_WRITE( seta2_sound_bank_w ) // Samples Banks
488
AM_RANGE( 0x400300, 0x40030f ) AM_WRITE(seta2_sound_bank_w ) // Samples Banks
493
490
AM_RANGE( 0x500000, 0x500001 ) AM_READ_PORT("GUN1") // P1
494
491
AM_RANGE( 0x580000, 0x580001 ) AM_READ_PORT("GUN2") // P2
496
493
AM_RANGE( 0x700000, 0x700001 ) AM_READ_PORT("TRIGGER") // Trigger
497
494
AM_RANGE( 0x700002, 0x700003 ) AM_READ_PORT("PUMP") // Pump
498
AM_RANGE( 0x700004, 0x700005 ) AM_READ_PORT("COIN") AM_WRITE( samshoot_coin_w ) // Coins
499
AM_RANGE( 0x700006, 0x700007 ) AM_READ( watchdog_reset16_r ) // Watchdog?
501
AM_RANGE( 0x800000, 0x83ffff ) AM_RAM AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size) // Sprites
502
AM_RANGE( 0x840000, 0x84ffff ) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette
503
AM_RANGE( 0x860000, 0x86003f ) AM_WRITE(seta2_vregs_w) AM_BASE_MEMBER(seta2_state, m_vregs) // Video Registers
505
AM_RANGE( 0x900000, 0x903fff ) AM_DEVREADWRITE( "x1snd", seta_sound_word_r, seta_sound_word_w ) // Sound
495
AM_RANGE( 0x700004, 0x700005 ) AM_READ_PORT("COIN") AM_WRITE(samshoot_coin_w ) // Coins
496
AM_RANGE( 0x700006, 0x700007 ) AM_READ(watchdog_reset16_r ) // Watchdog?
498
AM_RANGE( 0x800000, 0x83ffff ) AM_RAM AM_SHARE("spriteram") // Sprites
499
AM_RANGE( 0x840000, 0x84ffff ) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_word_w) AM_SHARE("paletteram") // Palette
500
AM_RANGE( 0x860000, 0x86003f ) AM_WRITE(seta2_vregs_w) AM_SHARE("vregs") // Video Registers
502
AM_RANGE( 0x900000, 0x903fff ) AM_DEVREADWRITE_LEGACY("x1snd", seta_sound_word_r, seta_sound_word_w ) // Sound
507
504
AM_RANGE( 0xfffd0a, 0xfffd0b ) AM_READ_PORT("DSW2") // parallel data register (DSW 2)
508
AM_RANGE( 0xfffc00, 0xffffff ) AM_READWRITE(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers
505
AM_RANGE( 0xfffc00, 0xffffff ) AM_READWRITE_LEGACY(tmp68301_regs_r, tmp68301_regs_w) // TMP68301 Registers
516
513
// Bus conversion functions:
518
515
// RAM shared with the sub CPU
519
static READ32_HANDLER( funcube_nvram_dword_r )
516
READ32_MEMBER(seta2_state::funcube_nvram_dword_r)
521
seta2_state *state = space->machine().driver_data<seta2_state>();
522
UINT16 val = state->m_nvram[offset];
518
UINT16 val = m_nvram[offset];
523
519
return ((val & 0xff00) << 8) | (val & 0x00ff);
526
static WRITE32_HANDLER( funcube_nvram_dword_w )
522
WRITE32_MEMBER(seta2_state::funcube_nvram_dword_w)
528
seta2_state *state = space->machine().driver_data<seta2_state>();
529
524
if (ACCESSING_BITS_0_7)
531
state->m_nvram[offset] = (state->m_nvram[offset] & 0xff00) | (data & 0x000000ff);
526
m_nvram[offset] = (m_nvram[offset] & 0xff00) | (data & 0x000000ff);
533
528
if (ACCESSING_BITS_16_23)
535
state->m_nvram[offset] = (state->m_nvram[offset] & 0x00ff) | ((data & 0x00ff0000) >> 8);
530
m_nvram[offset] = (m_nvram[offset] & 0x00ff) | ((data & 0x00ff0000) >> 8);
539
static WRITE16_HANDLER( spriteram16_word_w )
541
seta2_state *state = space->machine().driver_data<seta2_state>();
543
COMBINE_DATA( &state->m_spriteram[offset] );
546
static READ16_HANDLER( spriteram16_word_r )
548
seta2_state *state = space->machine().driver_data<seta2_state>();
550
return state->m_spriteram[offset];
553
static READ16_HANDLER( paletteram16_word_r )
555
return space->machine().generic.paletteram.u16[offset];
558
static READ16BETO32BE( spriteram32_dword, spriteram16_word_r );
559
static WRITE16BETO32BE( spriteram32_dword, spriteram16_word_w );
561
static READ16BETO32BE( paletteram32_dword, paletteram16_word_r );
562
static WRITE16BETO32BE( paletteram32_dword, paletteram16_xRRRRRGGGGGBBBBB_word_w );
564
static WRITE16BETO32BE( seta2_vregs_dword, seta2_vregs_w );
534
WRITE16_MEMBER(seta2_state::spriteram16_word_w)
537
COMBINE_DATA( &m_spriteram[offset] );
540
READ16_MEMBER(seta2_state::spriteram16_word_r)
543
return m_spriteram[offset];
572
552
CF_MBSR = 0x1ec/4
575
static WRITE32_HANDLER( coldfire_regs_w )
555
WRITE32_MEMBER(seta2_state::coldfire_regs_w)
577
seta2_state *state = space->machine().driver_data<seta2_state>();
579
COMBINE_DATA( &state->m_coldfire_regs[offset] );
558
COMBINE_DATA( &m_coldfire_regs[offset] );
582
static READ32_HANDLER( coldfire_regs_r )
561
READ32_MEMBER(seta2_state::coldfire_regs_r)
584
seta2_state *state = space->machine().driver_data<seta2_state>();
589
return space->machine().rand();
567
return machine().rand();
592
return input_port_read(space->machine(), "BATTERY") << 16;
570
return ioport("BATTERY")->read() << 16;
595
return state->m_coldfire_regs[offset];
573
return m_coldfire_regs[offset];
598
static READ32_HANDLER( funcube_debug_r )
576
READ32_MEMBER(seta2_state::funcube_debug_r)
600
UINT32 ret = input_port_read(space->machine(),"DEBUG");
578
UINT32 ret = ioport("DEBUG")->read();
602
580
// This bits let you move the crosshair in the inputs / touch panel test with a joystick
603
if (!(space->machine().primary_screen->frame_number() % 3))
581
if (!(machine().primary_screen->frame_number() % 3))
628
static ADDRESS_MAP_START( funcube_map, AS_PROGRAM, 32 )
606
static ADDRESS_MAP_START( funcube_map, AS_PROGRAM, 32, seta2_state )
629
607
AM_RANGE( 0x00000000, 0x0007ffff ) AM_ROM
630
608
AM_RANGE( 0x00200000, 0x0020ffff ) AM_RAM
632
AM_RANGE( 0x00500000, 0x00500003 ) AM_READ( funcube_debug_r )
633
AM_RANGE( 0x00500004, 0x00500007 ) AM_READ( watchdog_reset32_r ) AM_WRITENOP
635
AM_RANGE( 0x00600000, 0x00600003 ) AM_DEVREADWRITE("oki", oki_read, oki_write)
637
AM_RANGE( 0x00800000, 0x0083ffff ) AM_READWRITE( spriteram32_dword_r, spriteram32_dword_w ) AM_BASE_SIZE_MEMBER(seta2_state, m_spriteram, m_spriteram_size)
638
AM_RANGE( 0x00840000, 0x0084ffff ) AM_READWRITE( paletteram32_dword_r, paletteram32_dword_w ) AM_BASE_GENERIC(paletteram)
639
AM_RANGE( 0x00860000, 0x0086003f ) AM_WRITE( seta2_vregs_dword_w ) AM_BASE_MEMBER(seta2_state, m_vregs)
641
AM_RANGE( 0x00c00000, 0x00c002ff ) AM_READWRITE( funcube_nvram_dword_r, funcube_nvram_dword_w )
643
AM_RANGE(0xf0000000, 0xf00001ff ) AM_READWRITE( coldfire_regs_r, coldfire_regs_w ) AM_BASE_MEMBER(seta2_state, m_coldfire_regs) // Module
610
AM_RANGE( 0x00500000, 0x00500003 ) AM_READ(funcube_debug_r )
611
AM_RANGE( 0x00500004, 0x00500007 ) AM_READ(watchdog_reset32_r ) AM_WRITENOP
613
AM_RANGE( 0x00600000, 0x00600003 ) AM_DEVREADWRITE_LEGACY("oki", oki_read, oki_write)
615
AM_RANGE( 0x00800000, 0x0083ffff ) AM_READWRITE16(spriteram16_word_r, spriteram16_word_w, 0xffffffff ) AM_SHARE("spriteram")
616
AM_RANGE( 0x00840000, 0x0084ffff ) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_dword_be_w) AM_SHARE("paletteram")
617
AM_RANGE( 0x00860000, 0x0086003f ) AM_WRITE16(seta2_vregs_w, 0xffffffff ) AM_SHARE("vregs")
619
AM_RANGE( 0x00c00000, 0x00c002ff ) AM_READWRITE(funcube_nvram_dword_r, funcube_nvram_dword_w )
621
AM_RANGE(0xf0000000, 0xf00001ff ) AM_READWRITE(coldfire_regs_r, coldfire_regs_w ) AM_SHARE("coldfire_regs") // Module
644
622
AM_RANGE(0xffffe000, 0xffffffff ) AM_RAM // SRAM
649
static ADDRESS_MAP_START( funcube_sub_map, AS_PROGRAM, 16 )
627
static ADDRESS_MAP_START( funcube_sub_map, AS_PROGRAM, 16, seta2_state )
650
628
AM_RANGE( 0x000000, 0x01ffff ) AM_ROM
651
629
AM_RANGE( 0x200000, 0x20017f ) AM_RAM AM_SHARE("nvram")
659
637
#define FUNCUBE_SUB_CPU_CLOCK (XTAL_14_7456MHz)
661
static READ8_HANDLER( funcube_coins_r )
639
READ8_MEMBER(seta2_state::funcube_coins_r)
663
seta2_state *state = space->machine().driver_data<seta2_state>();
664
UINT8 ret = input_port_read(space->machine(),"SWITCH");
641
UINT8 ret = ioport("SWITCH")->read();
665
642
UINT8 coin_bit0 = 1; // active low
666
643
UINT8 coin_bit1 = 1;
668
UINT8 hopper_bit = (state->m_funcube_hopper_motor && !(space->machine().primary_screen->frame_number()%20)) ? 1 : 0;
645
UINT8 hopper_bit = (m_funcube_hopper_motor && !(machine().primary_screen->frame_number()%20)) ? 1 : 0;
670
647
const UINT64 coin_total_cycles = FUNCUBE_SUB_CPU_CLOCK / (1000/20);
672
if ( state->m_funcube_coin_start_cycles )
649
if ( m_funcube_coin_start_cycles )
674
UINT64 elapsed = downcast<cpu_device *>(&space->device())->total_cycles() - state->m_funcube_coin_start_cycles;
651
UINT64 elapsed = downcast<cpu_device *>(&space.device())->total_cycles() - m_funcube_coin_start_cycles;
676
653
if ( elapsed < coin_total_cycles/2 )
678
655
else if ( elapsed < coin_total_cycles )
681
state->m_funcube_coin_start_cycles = 0;
658
m_funcube_coin_start_cycles = 0;
686
state->m_funcube_coin_start_cycles = downcast<cpu_device *>(&space->device())->total_cycles();
663
m_funcube_coin_start_cycles = downcast<cpu_device *>(&space.device())->total_cycles();
689
666
return (ret & ~7) | (hopper_bit << 2) | (coin_bit1 << 1) | coin_bit0;
692
static READ8_HANDLER( funcube_serial_r )
669
READ8_MEMBER(seta2_state::funcube_serial_r)
694
seta2_state *state = space->machine().driver_data<seta2_state>();
695
671
UINT8 ret = 0xff;
697
switch( state->m_funcube_serial_count )
673
switch( m_funcube_serial_count )
699
case 4: ret = state->m_funcube_serial_fifo[0]; break;
700
case 3: ret = state->m_funcube_serial_fifo[1]; break;
701
case 2: ret = state->m_funcube_serial_fifo[2]; break;
702
case 1: ret = state->m_funcube_serial_fifo[3]; break;
675
case 4: ret = m_funcube_serial_fifo[0]; break;
676
case 3: ret = m_funcube_serial_fifo[1]; break;
677
case 2: ret = m_funcube_serial_fifo[2]; break;
678
case 1: ret = m_funcube_serial_fifo[3]; break;
705
if (state->m_funcube_serial_count)
706
state->m_funcube_serial_count--;
681
if (m_funcube_serial_count)
682
m_funcube_serial_count--;
711
static void funcube_debug_outputs(void)
687
static void funcube_debug_outputs(running_machine &machine)
713
689
#ifdef MAME_DEBUG
714
// popmessage("LED: %02x OUT: %02x", (int)*funcube_leds, (int)*funcube_outputs);
690
// seta2_state *state = machine.driver_data<seta2_state>();
691
// popmessage("LED: %02x OUT: %02x", (int)*state->m_funcube_leds, (int)*state->m_funcube_outputs);
718
static WRITE8_HANDLER( funcube_leds_w )
695
WRITE8_MEMBER(seta2_state::funcube_leds_w)
720
seta2_state *state = space->machine().driver_data<seta2_state>();
722
*state->m_funcube_leds = data;
724
set_led_status( space->machine(), 0, (~data) & 0x01 ); // win lamp (red)
725
set_led_status( space->machine(), 1, (~data) & 0x02 ); // win lamp (green)
698
*m_funcube_leds = data;
700
set_led_status( machine(), 0, (~data) & 0x01 ); // win lamp (red)
701
set_led_status( machine(), 1, (~data) & 0x02 ); // win lamp (green)
727
703
// Set in a moving pattern: 0111 -> 1011 -> 1101 -> 1110
728
set_led_status( space->machine(), 2, (~data) & 0x10 );
729
set_led_status( space->machine(), 3, (~data) & 0x20 );
730
set_led_status( space->machine(), 4, (~data) & 0x40 );
731
set_led_status( space->machine(), 5, (~data) & 0x80 );
704
set_led_status( machine(), 2, (~data) & 0x10 );
705
set_led_status( machine(), 3, (~data) & 0x20 );
706
set_led_status( machine(), 4, (~data) & 0x40 );
707
set_led_status( machine(), 5, (~data) & 0x80 );
733
funcube_debug_outputs();
709
funcube_debug_outputs(space.machine());
736
static READ8_HANDLER( funcube_outputs_r )
712
READ8_MEMBER(seta2_state::funcube_outputs_r)
738
seta2_state *state = space->machine().driver_data<seta2_state>();
740
715
// Bits 1,2,3 read
741
return *state->m_funcube_outputs;
716
return *m_funcube_outputs;
744
static WRITE8_HANDLER( funcube_outputs_w )
719
WRITE8_MEMBER(seta2_state::funcube_outputs_w)
746
seta2_state *state = space->machine().driver_data<seta2_state>();
748
*state->m_funcube_outputs = data;
722
*m_funcube_outputs = data;
750
724
// Bits 0,1,3 written
752
726
// Bit 0: hopper motor
753
state->m_funcube_hopper_motor = (~data) & 0x01;
727
m_funcube_hopper_motor = (~data) & 0x01;
755
729
// Bit 1: high on pay out
757
731
// Bit 3: low after coining up, blinks on pay out
758
set_led_status( space->machine(), 6, (~data) & 0x08 );
732
set_led_status( machine(), 6, (~data) & 0x08 );
760
funcube_debug_outputs();
734
funcube_debug_outputs(space.machine());
764
static ADDRESS_MAP_START( funcube_sub_io, AS_IO, 8 )
765
AM_RANGE( H8_PORT_7, H8_PORT_7 ) AM_READ( funcube_coins_r )
738
static ADDRESS_MAP_START( funcube_sub_io, AS_IO, 8, seta2_state )
739
AM_RANGE( H8_PORT_7, H8_PORT_7 ) AM_READ(funcube_coins_r )
766
740
AM_RANGE( H8_PORT_4, H8_PORT_4 ) AM_NOP // unused
767
AM_RANGE( H8_PORT_A, H8_PORT_A ) AM_READWRITE( funcube_outputs_r, funcube_outputs_w ) AM_BASE_MEMBER( seta2_state, m_funcube_outputs )
768
AM_RANGE( H8_PORT_B, H8_PORT_B ) AM_WRITE( funcube_leds_w ) AM_BASE_MEMBER( seta2_state, m_funcube_leds )
741
AM_RANGE( H8_PORT_A, H8_PORT_A ) AM_READWRITE(funcube_outputs_r, funcube_outputs_w ) AM_SHARE("funcube_outputs")
742
AM_RANGE( H8_PORT_B, H8_PORT_B ) AM_WRITE(funcube_leds_w ) AM_SHARE("funcube_leds")
769
743
// AM_RANGE( H8_SERIAL_0, H8_SERIAL_0 ) // cabinets linking (jpunit)
770
AM_RANGE( H8_SERIAL_1, H8_SERIAL_1 ) AM_READ( funcube_serial_r )
744
AM_RANGE( H8_SERIAL_1, H8_SERIAL_1 ) AM_READ(funcube_serial_r )
2387
2361
ROM_LOAD( "fc21_iopr-0.u49", 0x00000, 0x20000, CRC(314555ef) SHA1(b17e3926c8ef7f599856c198c330d2051aae13ad) )
2389
2363
ROM_REGION( 0x300, "pic", 0 ) // PIC12C508? Code
2390
ROM_LOAD( "fc21a", 0x000, 0x300, NO_DUMP )
2364
ROM_LOAD( "fc21a.u57", 0x000, 0x300, NO_DUMP )
2392
2366
ROM_REGION( 0x800000, "sprites", 0 )
2393
2367
ROM_LOAD32_WORD( "fc21_obj-0.u43", 0x000000, 0x400000, CRC(08cfe6d9) SHA1(d10f362dcde01f7a9855d8f76af3084b5dd1573a) )
2394
2368
ROM_LOAD32_WORD( "fc21_obj-1.u42", 0x000002, 0x400000, CRC(4c1fbc20) SHA1(ff83691c19ce3600b31c494eaec26d2ac79e0028) )
2396
ROM_REGION( 0x1000000, "oki", 0 )
2397
ROM_LOAD( "fc21_voi0.u47", 0x000000, 0x400000, CRC(25b5fc3f) SHA1(18b16a14e9ee62f3fea382e9d3fdcd43bdb165f5) )
2370
ROM_REGION( 0x1000000, "oki", ROMREGION_ERASE00 )
2371
ROM_LOAD( "fc21_voi0.u47", 0x000000, 0x200000, CRC(4a49370a) SHA1(ac10e2c25626965b49475767ef5a0ec3ba9a2d01) )
2400
2374
ROM_START( funcube3 )
2401
2375
ROM_REGION( 0x80000, "maincpu", 0 ) // XCF5206 Code
2402
ROM_LOAD( "fc31prg-0a.u4", 0x00000, 0x80000, CRC(ed7d70dd) SHA1(4ebfca9e60ab5e8de22821f0475abf515c83ce53) )
2376
ROM_LOAD( "fc31_prg-0a.u4", 0x00000, 0x80000, CRC(ed7d70dd) SHA1(4ebfca9e60ab5e8de22821f0475abf515c83ce53) )
2404
2378
ROM_REGION( 0x20000, "sub", 0 ) // H8/3007 Code
2405
ROM_LOAD( "fc21iopr-0.u49", 0x00000, 0x20000, CRC(314555ef) SHA1(b17e3926c8ef7f599856c198c330d2051aae13ad) )
2379
ROM_LOAD( "fc21_iopr-0.u49", 0x00000, 0x20000, CRC(314555ef) SHA1(b17e3926c8ef7f599856c198c330d2051aae13ad) )
2407
2381
ROM_REGION( 0x400, "pic", 0 ) // PIC12C508? Code
2408
2382
ROM_LOAD( "fc31a.u57", 0x000, 0x400, NO_DUMP )
2410
2384
ROM_REGION( 0x800000, "sprites", 0 )
2411
ROM_LOAD32_WORD( "fc31obj-0.u43", 0x000000, 0x400000, CRC(08c5eb6f) SHA1(016d8f3067db487ccd47188142743897c9722b1f) )
2412
ROM_LOAD32_WORD( "fc31obj-1.u42", 0x000002, 0x400000, CRC(4dadc76e) SHA1(cf82296b38dc22a618fd178816316af05f2459b3) )
2385
ROM_LOAD32_WORD( "fc31_obj-0.u43", 0x000000, 0x400000, CRC(08c5eb6f) SHA1(016d8f3067db487ccd47188142743897c9722b1f) )
2386
ROM_LOAD32_WORD( "fc31_obj-1.u42", 0x000002, 0x400000, CRC(4dadc76e) SHA1(cf82296b38dc22a618fd178816316af05f2459b3) )
2414
ROM_REGION( 0x1000000, "oki", 0 )
2415
ROM_LOAD( "fc31snd-0.u47", 0x000000, 0x400000, CRC(319e8c32) SHA1(65fe58d762efb7c092a226ecbfed04c174af35a5) )
2388
ROM_REGION( 0x1000000, "oki", ROMREGION_ERASE00 )
2389
ROM_LOAD( "fc31_snd-0.u47", 0x000000, 0x200000, CRC(36b03769) SHA1(20e583359421e0933c781a487fe5f7220052a6d4) )
2418
2392
ROM_START( funcube4 )
2429
2403
ROM_LOAD32_WORD( "fc41_obj-0.u43", 0x000000, 0x400000, CRC(9ff029d5) SHA1(e057f4929aa745ecaf9d4ff7e39974c82e440146) )
2430
2404
ROM_LOAD32_WORD( "fc41_obj-1.u42", 0x000002, 0x400000, CRC(5ab7b087) SHA1(c600158b2358cdf947357170044dda2deacd4f37) )
2432
ROM_REGION( 0x1000000, "oki", 0 )
2433
ROM_LOAD( "fc41_snd0.u47", 0x000000, 0x400000, CRC(48337257) SHA1(d1755024b824100070b489f48f6ae921765329e8) )
2406
ROM_REGION( 0x1000000, "oki", ROMREGION_ERASE00 )
2407
ROM_LOAD( "fc41_snd0.u47", 0x000000, 0x200000, CRC(e6f7d2bc) SHA1(638c73d439eaaff8097cb0aa2684f9f7111bcade) )
2410
ROM_START( funcube5 )
2411
ROM_REGION( 0x80000, "maincpu", 0 ) // XCF5206 Code
2412
ROM_LOAD( "fc51_prg-0.u4", 0x00000, 0x80000, CRC(4e34c2d8) SHA1(1ace4f6edab291e69e5c36b15193fba62f4a6773) )
2414
ROM_REGION( 0x20000, "sub", 0 ) // H8/3007 Code
2415
ROM_LOAD( "fc21_iopr-0.u49", 0x00000, 0x20000, CRC(314555ef) SHA1(b17e3926c8ef7f599856c198c330d2051aae13ad) )
2417
ROM_REGION( 0x300, "pic", 0 ) // PIC12C508? Code
2418
ROM_LOAD( "fc51a.u57", 0x000, 0x300, NO_DUMP )
2420
ROM_REGION( 0x800000, "sprites", 0 )
2421
ROM_LOAD32_WORD( "fc51_obj-0.u43", 0x000000, 0x400000, CRC(116624b3) SHA1(c0b3dbe0ea4a0808222616c3ef77b2d1194a970a) )
2422
ROM_LOAD32_WORD( "fc51_obj-1.u42", 0x000002, 0x400000, CRC(35c6ec61) SHA1(424c9b66a2cdd5217d8a577d0179d1228112ee5b) )
2424
ROM_REGION( 0x1000000, "oki", ROMREGION_ERASE00 )
2425
ROM_LOAD( "fc51_snd-0.u47", 0x000000, 0x200000, CRC(2a504fe1) SHA1(911ad650bf48aa78d9cb3c64284aa526ceb519ba) )
2436
2428
static DRIVER_INIT( funcube2 )
2438
UINT32 *main_cpu = (UINT32 *) machine.region("maincpu")->base();
2439
UINT16 *sub_cpu = (UINT16 *) machine.region("sub")->base();
2430
UINT32 *main_cpu = (UINT32 *) machine.root_device().memregion("maincpu")->base();
2431
UINT16 *sub_cpu = (UINT16 *) machine.root_device().memregion("sub")->base();
2441
2433
main_cpu[0xa5c/4] = 0x4e713e3c; // PIC protection?
2442
2434
main_cpu[0xa74/4] = 0x4e713e3c;
3195
3171
ROM_LOAD( "as0905m01.u18", 0x100000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
3198
/* There are known versions 3.x of Deer Hunting USA.... just none are currently dumped. roms should be "AS0906 E03 U06" & "AS0907 E03 U07" */
3200
ROM_START( deerhuntc ) /* Deer Hunting USA V2.x - No version number is printed to screen but "E02" in EPROM label signifies V2 */
3174
/* Are there versions 3.x of Deer Hunting USA with labels "AS0906 E03 U06" & "AS0907 E03 U07" ?? */
3176
ROM_START( deerhuntc ) /* These rom labels break label conventions but is correct & verified. Version in program code is listed as 0.00 */
3177
ROM_REGION( 0x200000, "maincpu", 0 ) // TMP68301 Code
3178
ROM_LOAD16_BYTE( "as0937e01.u06", 0x000000, 0x100000, CRC(8d74088e) SHA1(cb11ffaf4c0267cc8cbe01accc3daeed910a3af3) ) /* SUM16 = C2CD */
3179
ROM_LOAD16_BYTE( "as0938e01.u07", 0x000001, 0x100000, CRC(c7657889) SHA1(4cc707c8abbc0862457375a9a910d3c338859193) ) /* SUM16 = 27D7 */
3181
ROM_REGION( 0x2000000, "sprites", 0 ) // Sprites
3182
ROM_LOAD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
3183
ROM_LOAD( "as0902m01.u39", 0x0800000, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
3184
ROM_LOAD( "as0903m01.u40", 0x1000000, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
3185
ROM_LOAD( "as0904m01.u41", 0x1800000, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
3187
ROM_REGION( 0x500000, "x1snd", 0 ) // Samples
3188
// Leave 1MB empty (addressable by the chip)
3189
ROM_LOAD( "as0905m01.u18", 0x100000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
3192
ROM_START( deerhuntd ) /* Deer Hunting USA V2.x - No version number is printed to screen but "E02" in EPROM label signifies V2 */
3201
3193
ROM_REGION( 0x200000, "maincpu", 0 ) // TMP68301 Code
3202
3194
ROM_LOAD16_BYTE( "as0906e02.u06", 0x000000, 0x100000, CRC(190cca42) SHA1(aef63f5e8c71ed0156b8b0104c5d23872c119167) ) /* Version in program code is listed as 0.00 */
3203
3195
ROM_LOAD16_BYTE( "as0907e02.u07", 0x000001, 0x100000, CRC(9de2b901) SHA1(d271bc54c41e30c0d9962eedd22f3ef2b7b8c9e5) ) /* Verified with two different sets of chips */
3289
3281
GAME( 2000, deerhunt, 0, samshoot, deerhunt, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.3", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
3290
3282
GAME( 2000, deerhunta,deerhunt, samshoot, deerhunt, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.2", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
3291
3283
GAME( 2000, deerhuntb,deerhunt, samshoot, deerhunt, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.0", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
3292
GAME( 2000, deerhuntc,deerhunt, samshoot, deerhunt, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V2", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
3284
GAME( 2000, deerhuntc,deerhunt, samshoot, deerhunt, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V3", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
3285
GAME( 2000, deerhuntd,deerhunt, samshoot, deerhunt, 0, ROT0, "Sammy USA Corporation", "Deer Hunting USA V2", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
3293
3286
GAME( 2001, turkhunt, 0, samshoot, turkhunt, 0, ROT0, "Sammy USA Corporation", "Turkey Hunting USA V1.0", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
3294
3287
GAME( 2001, wschamp, 0, samshoot, wschamp, 0, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V2.00", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
3295
3288
GAME( 2001, wschampa, wschamp, samshoot, wschamp, 0, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.01", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
3297
3290
GAME( 2001, funcube2, 0, funcube, funcube, funcube2, ROT0, "Namco", "Funcube 2 (v1.1)", GAME_NO_COCKTAIL )
3298
3291
GAME( 2001, funcube3, 0, funcube3, funcube, funcube3, ROT0, "Namco", "Funcube 3 (v1.1)", GAME_NO_COCKTAIL )
3299
3292
GAME( 2001, funcube4, 0, funcube, funcube, funcube2, ROT0, "Namco", "Funcube 4 (v1.0)", GAME_NO_COCKTAIL )
3293
GAME( 2002, funcube5, 0, funcube, funcube, funcube2, ROT0, "Namco", "Funcube 5 (v1.0)", GAME_NO_COCKTAIL )
3300
3294
GAME( ????, reelquak, 0, reelquak, reelquak, 0, ROT0, "<unknown>", "Reel'N Quake! (Ver. 1.05)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )