241
241
gticlub_state(const machine_config &mconfig, device_type type, const char *tag)
242
: driver_device(mconfig, type, tag) { }
242
: driver_device(mconfig, type, tag) ,
243
m_work_ram(*this, "work_ram"){ }
245
required_shared_ptr<UINT32> m_work_ram;
245
246
UINT32 *m_sharc_dataram_0;
246
247
UINT32 *m_sharc_dataram_1;
248
DECLARE_WRITE32_MEMBER(paletteram32_w);
249
DECLARE_READ32_MEMBER(gticlub_k001604_tile_r);
250
DECLARE_WRITE32_MEMBER(gticlub_k001604_tile_w);
251
DECLARE_READ32_MEMBER(gticlub_k001604_char_r);
252
DECLARE_WRITE32_MEMBER(gticlub_k001604_char_w);
253
DECLARE_READ32_MEMBER(gticlub_k001604_reg_r);
254
DECLARE_WRITE32_MEMBER(gticlub_k001604_reg_w);
255
DECLARE_READ8_MEMBER(sysreg_r);
256
DECLARE_WRITE8_MEMBER(sysreg_w);
257
DECLARE_READ32_MEMBER(dsp_dataram0_r);
258
DECLARE_WRITE32_MEMBER(dsp_dataram0_w);
259
DECLARE_READ32_MEMBER(dsp_dataram1_r);
260
DECLARE_WRITE32_MEMBER(dsp_dataram1_w);
250
static WRITE32_HANDLER( paletteram32_w )
264
WRITE32_MEMBER(gticlub_state::paletteram32_w)
252
COMBINE_DATA(&space->machine().generic.paletteram.u32[offset]);
253
data = space->machine().generic.paletteram.u32[offset];
254
palette_set_color_rgb(space->machine(), offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
266
COMBINE_DATA(&m_generic_paletteram_32[offset]);
267
data = m_generic_paletteram_32[offset];
268
palette_set_color_rgb(machine(), offset, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
257
271
static void voodoo_vblank_0(device_t *device, int param)
264
278
cputag_set_input_line(device->machine(), "maincpu", INPUT_LINE_IRQ1, param ? ASSERT_LINE : CLEAR_LINE);
267
static READ32_HANDLER( gticlub_k001604_tile_r )
281
READ32_MEMBER(gticlub_state::gticlub_k001604_tile_r)
269
device_t *k001604 = space->machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1");
283
device_t *k001604 = machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1");
270
284
return k001604_tile_r(k001604, offset, mem_mask);
273
static WRITE32_HANDLER( gticlub_k001604_tile_w )
287
WRITE32_MEMBER(gticlub_state::gticlub_k001604_tile_w)
275
device_t *k001604 = space->machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1");
289
device_t *k001604 = machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1");
276
290
k001604_tile_w(k001604, offset, data, mem_mask);
280
static READ32_HANDLER( gticlub_k001604_char_r )
294
READ32_MEMBER(gticlub_state::gticlub_k001604_char_r)
282
device_t *k001604 = space->machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1");
296
device_t *k001604 = machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1");
283
297
return k001604_char_r(k001604, offset, mem_mask);
286
static WRITE32_HANDLER( gticlub_k001604_char_w )
300
WRITE32_MEMBER(gticlub_state::gticlub_k001604_char_w)
288
device_t *k001604 = space->machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1");
302
device_t *k001604 = machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1");
289
303
k001604_char_w(k001604, offset, data, mem_mask);
292
static READ32_HANDLER( gticlub_k001604_reg_r )
306
READ32_MEMBER(gticlub_state::gticlub_k001604_reg_r)
294
device_t *k001604 = space->machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1");
308
device_t *k001604 = machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1");
295
309
return k001604_reg_r(k001604, offset, mem_mask);
298
static WRITE32_HANDLER( gticlub_k001604_reg_w )
312
WRITE32_MEMBER(gticlub_state::gticlub_k001604_reg_w)
300
device_t *k001604 = space->machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1");
314
device_t *k001604 = machine().device(get_cgboard_id() ? "k001604_2" : "k001604_1");
301
315
k001604_reg_w(k001604, offset, data, mem_mask);
400
414
ppcdrc_add_fastram(machine.device("maincpu"), 0x00000000, 0x000fffff, FALSE, state->m_work_ram);
403
static ADDRESS_MAP_START( gticlub_map, AS_PROGRAM, 32 )
404
AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_BASE_MEMBER(gticlub_state, m_work_ram) /* Work RAM */
417
static ADDRESS_MAP_START( gticlub_map, AS_PROGRAM, 32, gticlub_state )
418
AM_RANGE(0x00000000, 0x000fffff) AM_RAM AM_SHARE("work_ram") /* Work RAM */
405
419
AM_RANGE(0x74000000, 0x740000ff) AM_READWRITE(gticlub_k001604_reg_r, gticlub_k001604_reg_w)
406
AM_RANGE(0x74010000, 0x7401ffff) AM_RAM_WRITE(paletteram32_w) AM_BASE_GENERIC(paletteram)
420
AM_RANGE(0x74010000, 0x7401ffff) AM_RAM_WRITE(paletteram32_w) AM_SHARE("paletteram")
407
421
AM_RANGE(0x74020000, 0x7403ffff) AM_READWRITE(gticlub_k001604_tile_r, gticlub_k001604_tile_w)
408
422
AM_RANGE(0x74040000, 0x7407ffff) AM_READWRITE(gticlub_k001604_char_r, gticlub_k001604_char_w)
409
AM_RANGE(0x78000000, 0x7800ffff) AM_READWRITE(cgboard_dsp_shared_r_ppc, cgboard_dsp_shared_w_ppc)
410
AM_RANGE(0x78040000, 0x7804000f) AM_READWRITE(K001006_0_r, K001006_0_w)
411
AM_RANGE(0x78080000, 0x7808000f) AM_READWRITE(K001006_1_r, K001006_1_w)
412
AM_RANGE(0x780c0000, 0x780c0003) AM_READWRITE(cgboard_dsp_comm_r_ppc, cgboard_dsp_comm_w_ppc)
423
AM_RANGE(0x78000000, 0x7800ffff) AM_READWRITE_LEGACY(cgboard_dsp_shared_r_ppc, cgboard_dsp_shared_w_ppc)
424
AM_RANGE(0x78040000, 0x7804000f) AM_READWRITE_LEGACY(K001006_0_r, K001006_0_w)
425
AM_RANGE(0x78080000, 0x7808000f) AM_READWRITE_LEGACY(K001006_1_r, K001006_1_w)
426
AM_RANGE(0x780c0000, 0x780c0003) AM_READWRITE_LEGACY(cgboard_dsp_comm_r_ppc, cgboard_dsp_comm_w_ppc)
413
427
AM_RANGE(0x7e000000, 0x7e003fff) AM_READWRITE8(sysreg_r, sysreg_w, 0xffffffff)
414
AM_RANGE(0x7e008000, 0x7e009fff) AM_DEVREADWRITE8("k056230", k056230_r, k056230_w, 0xffffffff)
415
AM_RANGE(0x7e00a000, 0x7e00bfff) AM_DEVREADWRITE("k056230", lanc_ram_r, lanc_ram_w)
416
AM_RANGE(0x7e00c000, 0x7e00c007) AM_DEVWRITE("k056800", k056800_host_w)
417
AM_RANGE(0x7e00c000, 0x7e00c007) AM_DEVREAD("k056800", k056800_host_r) // Hang Pilot
418
AM_RANGE(0x7e00c008, 0x7e00c00f) AM_DEVREAD("k056800", k056800_host_r)
428
AM_RANGE(0x7e008000, 0x7e009fff) AM_DEVREADWRITE8_LEGACY("k056230", k056230_r, k056230_w, 0xffffffff)
429
AM_RANGE(0x7e00a000, 0x7e00bfff) AM_DEVREADWRITE_LEGACY("k056230", lanc_ram_r, lanc_ram_w)
430
AM_RANGE(0x7e00c000, 0x7e00c007) AM_DEVWRITE_LEGACY("k056800", k056800_host_w)
431
AM_RANGE(0x7e00c000, 0x7e00c007) AM_DEVREAD_LEGACY("k056800", k056800_host_r) // Hang Pilot
432
AM_RANGE(0x7e00c008, 0x7e00c00f) AM_DEVREAD_LEGACY("k056800", k056800_host_r)
419
433
AM_RANGE(0x7f000000, 0x7f3fffff) AM_ROM AM_REGION("user2", 0) /* Data ROM */
420
434
AM_RANGE(0x7f800000, 0x7f9fffff) AM_ROM AM_SHARE("share2")
421
435
AM_RANGE(0x7fe00000, 0x7fffffff) AM_ROM AM_REGION("user1", 0) AM_SHARE("share2") /* Program ROM */
424
438
/**********************************************************************/
426
static ADDRESS_MAP_START( sound_memmap, AS_PROGRAM, 16 )
440
static ADDRESS_MAP_START( sound_memmap, AS_PROGRAM, 16, gticlub_state )
427
441
AM_RANGE(0x000000, 0x07ffff) AM_ROM
428
442
AM_RANGE(0x200000, 0x20ffff) AM_RAM
429
AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("k056800", k056800_sound_r, k056800_sound_w)
430
AM_RANGE(0x400000, 0x400fff) AM_DEVREADWRITE("rfsnd", rf5c400_r, rf5c400_w) /* Ricoh RF5C400 */
443
AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE_LEGACY("k056800", k056800_sound_r, k056800_sound_w)
444
AM_RANGE(0x400000, 0x400fff) AM_DEVREADWRITE_LEGACY("rfsnd", rf5c400_r, rf5c400_w) /* Ricoh RF5C400 */
431
445
AM_RANGE(0x580000, 0x580001) AM_WRITENOP
432
446
AM_RANGE(0x600000, 0x600001) AM_WRITENOP
435
449
/*****************************************************************************/
437
static READ32_HANDLER( dsp_dataram0_r )
439
gticlub_state *state = space->machine().driver_data<gticlub_state>();
440
return state->m_sharc_dataram_0[offset] & 0xffff;
443
static WRITE32_HANDLER( dsp_dataram0_w )
445
gticlub_state *state = space->machine().driver_data<gticlub_state>();
446
state->m_sharc_dataram_0[offset] = data;
449
static READ32_HANDLER( dsp_dataram1_r )
451
gticlub_state *state = space->machine().driver_data<gticlub_state>();
452
return state->m_sharc_dataram_1[offset] & 0xffff;
455
static WRITE32_HANDLER( dsp_dataram1_w )
457
gticlub_state *state = space->machine().driver_data<gticlub_state>();
458
state->m_sharc_dataram_1[offset] = data;
461
static ADDRESS_MAP_START( sharc_map, AS_DATA, 32 )
462
AM_RANGE(0x400000, 0x41ffff) AM_READWRITE(cgboard_0_shared_sharc_r, cgboard_0_shared_sharc_w)
451
READ32_MEMBER(gticlub_state::dsp_dataram0_r)
453
return m_sharc_dataram_0[offset] & 0xffff;
456
WRITE32_MEMBER(gticlub_state::dsp_dataram0_w)
458
m_sharc_dataram_0[offset] = data;
461
READ32_MEMBER(gticlub_state::dsp_dataram1_r)
463
return m_sharc_dataram_1[offset] & 0xffff;
466
WRITE32_MEMBER(gticlub_state::dsp_dataram1_w)
468
m_sharc_dataram_1[offset] = data;
471
static ADDRESS_MAP_START( sharc_map, AS_DATA, 32, gticlub_state )
472
AM_RANGE(0x400000, 0x41ffff) AM_READWRITE_LEGACY(cgboard_0_shared_sharc_r, cgboard_0_shared_sharc_w)
463
473
AM_RANGE(0x500000, 0x5fffff) AM_READWRITE(dsp_dataram0_r, dsp_dataram0_w)
464
AM_RANGE(0x600000, 0x6fffff) AM_READWRITE(K001005_r, K001005_w)
465
AM_RANGE(0x700000, 0x7000ff) AM_READWRITE(cgboard_0_comm_sharc_r, cgboard_0_comm_sharc_w)
474
AM_RANGE(0x600000, 0x6fffff) AM_READWRITE_LEGACY(K001005_r, K001005_w)
475
AM_RANGE(0x700000, 0x7000ff) AM_READWRITE_LEGACY(cgboard_0_comm_sharc_r, cgboard_0_comm_sharc_w)
468
static ADDRESS_MAP_START( hangplt_sharc0_map, AS_DATA, 32 )
469
AM_RANGE(0x0400000, 0x041ffff) AM_READWRITE(cgboard_0_shared_sharc_r, cgboard_0_shared_sharc_w)
478
static ADDRESS_MAP_START( hangplt_sharc0_map, AS_DATA, 32, gticlub_state )
479
AM_RANGE(0x0400000, 0x041ffff) AM_READWRITE_LEGACY(cgboard_0_shared_sharc_r, cgboard_0_shared_sharc_w)
470
480
AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE(dsp_dataram0_r, dsp_dataram0_w)
471
481
AM_RANGE(0x1400000, 0x14fffff) AM_RAM
472
AM_RANGE(0x2400000, 0x27fffff) AM_DEVREADWRITE("voodoo0", nwk_voodoo_0_r, voodoo_w)
473
AM_RANGE(0x3400000, 0x34000ff) AM_READWRITE(cgboard_0_comm_sharc_r, cgboard_0_comm_sharc_w)
474
AM_RANGE(0x3401000, 0x34fffff) AM_DEVWRITE("voodoo0", nwk_fifo_0_w)
475
AM_RANGE(0x3500000, 0x3507fff) AM_READWRITE(K033906_0_r, K033906_0_w)
482
AM_RANGE(0x2400000, 0x27fffff) AM_DEVREADWRITE_LEGACY("voodoo0", nwk_voodoo_0_r, voodoo_w)
483
AM_RANGE(0x3400000, 0x34000ff) AM_READWRITE_LEGACY(cgboard_0_comm_sharc_r, cgboard_0_comm_sharc_w)
484
AM_RANGE(0x3401000, 0x34fffff) AM_DEVWRITE_LEGACY("voodoo0", nwk_fifo_0_w)
485
AM_RANGE(0x3500000, 0x3507fff) AM_READWRITE_LEGACY(K033906_0_r, K033906_0_w)
476
486
AM_RANGE(0x3600000, 0x37fffff) AM_ROMBANK("bank5")
479
static ADDRESS_MAP_START( hangplt_sharc1_map, AS_DATA, 32 )
480
AM_RANGE(0x0400000, 0x041ffff) AM_READWRITE(cgboard_1_shared_sharc_r, cgboard_1_shared_sharc_w)
489
static ADDRESS_MAP_START( hangplt_sharc1_map, AS_DATA, 32, gticlub_state )
490
AM_RANGE(0x0400000, 0x041ffff) AM_READWRITE_LEGACY(cgboard_1_shared_sharc_r, cgboard_1_shared_sharc_w)
481
491
AM_RANGE(0x0500000, 0x05fffff) AM_READWRITE(dsp_dataram1_r, dsp_dataram1_w)
482
492
AM_RANGE(0x1400000, 0x14fffff) AM_RAM
483
AM_RANGE(0x2400000, 0x27fffff) AM_DEVREADWRITE("voodoo1", nwk_voodoo_1_r, voodoo_w)
484
AM_RANGE(0x3400000, 0x34000ff) AM_READWRITE(cgboard_1_comm_sharc_r, cgboard_1_comm_sharc_w)
485
AM_RANGE(0x3401000, 0x34fffff) AM_DEVWRITE("voodoo1", nwk_fifo_1_w)
486
AM_RANGE(0x3500000, 0x3507fff) AM_READWRITE(K033906_1_r, K033906_1_w)
493
AM_RANGE(0x2400000, 0x27fffff) AM_DEVREADWRITE_LEGACY("voodoo1", nwk_voodoo_1_r, voodoo_w)
494
AM_RANGE(0x3400000, 0x34000ff) AM_READWRITE_LEGACY(cgboard_1_comm_sharc_r, cgboard_1_comm_sharc_w)
495
AM_RANGE(0x3401000, 0x34fffff) AM_DEVWRITE_LEGACY("voodoo1", nwk_fifo_1_w)
496
AM_RANGE(0x3500000, 0x3507fff) AM_READWRITE_LEGACY(K033906_1_r, K033906_1_w)
487
497
AM_RANGE(0x3600000, 0x37fffff) AM_ROMBANK("bank6")