trunk/src/mame/drivers/psikyo4.c
| r31802 | r31803 | |
| 31 | 31 | To Do: |
| 32 | 32 | |
| 33 | 33 | Sprite List format not 100% understood. |
| 34 | | The sound rom banking is wrong, at least for the ROM tests (see hotgm4ev), all the roms |
| 35 | | are good, but it tests sound rom 0 twice due to the banking issues. |
| 34 | Lode Runner still fails the sound ROM test for some reason (different banking from the other games?) |
| 36 | 35 | |
| 37 | 36 | *-----------------------------------* |
| 38 | 37 | | Tips and Tricks | |
| r31802 | r31803 | |
| 40 | 39 | |
| 41 | 40 | Hold Button during booting to test roms (Checksum 16-bit) for: |
| 42 | 41 | |
| 43 | | Lode Runner - The Dig Fight: PL1 Start (passes gfx, sample result:05A5, expects:0BB0 [both sets]) (banking?) |
| 44 | | Quiz de Idol! Hot Debut: PL1 Start (passes) |
| 42 | Hot Gimmick 4 Ever: PL1 Start+PL2 Start (passes) |
| 43 | Hot Gimmick Integral: PL1 Start+PL2 Start (passes) |
| 44 | Lode Runner - The Dig Fight: PL1 Start (debug DSW must be set; passes gfx, sample result:05A5, expects:0BB0 [both sets]) |
| 45 | Quiz de Idol! Hot Debut: PL1 Start (debug DSW must be set; passes) |
| 45 | 46 | |
| 46 | 47 | --- Lode Runner: The Dig Fight --- |
| 47 | 48 | |
| r31802 | r31803 | |
| 120 | 121 | |
| 121 | 122 | The remaining ROMs are surface mounted TSOP48 Type II MASKROMs, |
| 122 | 123 | either OKI MSM27C3252 (32MBit) or OKI MSM27C1652 (16MBit). |
| 123 | | These MASKROMs are non-standard are require a custom adapter |
| 124 | These MASKROMs are non-standard and require a custom adapter |
| 124 | 125 | to read them. Not all positions are populated for each game. See |
| 125 | 126 | the source below for specifics. |
| 126 | 127 | |
| r31802 | r31803 | |
| 129 | 130 | #include "includes/psikyo4.h" |
| 130 | 131 | #include "rendlay.h" |
| 131 | 132 | |
| 133 | static GFXLAYOUT_RAW( layout_16x16x8, 16, 16, 16*8, 16*16*8 ) |
| 132 | 134 | |
| 133 | | static const gfx_layout layout_16x16x8 = |
| 134 | | { |
| 135 | | 16,16, |
| 136 | | RGN_FRAC(1,1), |
| 137 | | 8, |
| 138 | | {STEP8(0,1)}, |
| 139 | | {STEP16(0,8)}, |
| 140 | | {STEP16(0,16*8)}, |
| 141 | | 16*16*8 |
| 142 | | }; |
| 143 | | |
| 144 | 135 | static GFXDECODE_START( ps4 ) |
| 145 | | GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x8, 0x000, 0x80 ) // 8bpp tiles |
| 136 | GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x8, 0x000, 0x40 ) // 8bpp tiles |
| 146 | 137 | GFXDECODE_END |
| 147 | 138 | |
| 148 | 139 | WRITE32_MEMBER(psikyo4_state::ps4_eeprom_w) |
| r31802 | r31803 | |
| 176 | 167 | device.execute().set_input_line(4, HOLD_LINE); |
| 177 | 168 | } |
| 178 | 169 | |
| 179 | | CUSTOM_INPUT_MEMBER(psikyo4_state::system_port_r) |
| 180 | | { |
| 181 | | return ioport("SYSTEM")->read(); |
| 182 | | } |
| 183 | | |
| 184 | 170 | CUSTOM_INPUT_MEMBER(psikyo4_state::mahjong_ctrl_r)/* used by hotgmck/hgkairak */ |
| 185 | 171 | { |
| 186 | 172 | int player = (FPTR)param; |
| 187 | | int sel = (m_io_select[0] & 0x0000ff00) >> 8; |
| 188 | 173 | int ret = 0xff; |
| 189 | 174 | |
| 190 | | if (sel & 1) ret &= ioport(player ? "KEY4" : "KEY0" )->read(); |
| 191 | | if (sel & 2) ret &= ioport(player ? "KEY5" : "KEY1" )->read(); |
| 192 | | if (sel & 4) ret &= ioport(player ? "KEY6" : "KEY2" )->read(); |
| 193 | | if (sel & 8) ret &= ioport(player ? "KEY7" : "KEY3" )->read(); |
| 175 | if (m_io_select & 1) ret &= m_keys[player+0]->read(); |
| 176 | if (m_io_select & 2) ret &= m_keys[player+1]->read(); |
| 177 | if (m_io_select & 4) ret &= m_keys[player+2]->read(); |
| 178 | if (m_io_select & 8) ret &= m_keys[player+3]->read(); |
| 194 | 179 | |
| 195 | 180 | return ret; |
| 196 | 181 | } |
| r31802 | r31803 | |
| 298 | 283 | if (offset == 2) /* Configure bank for gfx test */ |
| 299 | 284 | { |
| 300 | 285 | if (ACCESSING_BITS_0_15) // Bank |
| 301 | | membank("bank2")->set_base(memregion("gfx1")->base() + 0x2000 * (m_vidregs[offset] & 0x1fff)); /* Bank comes from vidregs */ |
| 286 | membank("gfxbank")->set_base(memregion("gfx1")->base() + 0x2000 * (m_vidregs[offset] & 0x1fff)); /* Bank comes from vidregs */ |
| 302 | 287 | } |
| 303 | 288 | } |
| 304 | 289 | |
| 305 | | #define PCM_BANK_NO_LEGACY(n) ((m_io_select[0] >> (n * 4 + 24)) & 0x07) |
| 306 | | |
| 307 | | void psikyo4_state::set_hotgmck_pcm_bank( int n ) |
| 290 | WRITE32_MEMBER(psikyo4_state::io_select_w) |
| 308 | 291 | { |
| 309 | | UINT8 *ymf_pcmbank = memregion("ymf")->base() + 0x200000; |
| 310 | | UINT8 *pcm_rom = memregion("ymfsource")->base(); |
| 292 | // YMF banking |
| 293 | if (ACCESSING_BITS_16_31) |
| 294 | { |
| 295 | UINT32 bankdata = data >> 16; |
| 296 | UINT32 bankmask = mem_mask >> 16; |
| 297 | for (int i = 0; i < 4; i++) |
| 298 | { |
| 299 | if (bankmask & 0x0f) |
| 300 | { |
| 301 | int banknum = bankdata & 0x0f; |
| 302 | if (banknum < m_ymf_max_bank) |
| 303 | m_ymf_bank[i]->set_entry(banknum); |
| 304 | } |
| 305 | bankdata >>= 4; |
| 306 | bankmask >>= 4; |
| 307 | } |
| 308 | } |
| 311 | 309 | |
| 312 | | memcpy(ymf_pcmbank + n * 0x100000, pcm_rom + PCM_BANK_NO_LEGACY(n) * 0x100000, 0x100000); |
| 313 | | } |
| 314 | | #define PCM_BANK_NO(n) ((m_io_select[0] >> (n * 4 + 24)) & 0x07) |
| 315 | | WRITE32_MEMBER(psikyo4_state::hotgmck_pcm_bank_w) |
| 316 | | { |
| 317 | | int old_bank0 = PCM_BANK_NO(0); |
| 318 | | int old_bank1 = PCM_BANK_NO(1); |
| 319 | | int new_bank0, new_bank1; |
| 310 | // mahjong input multiplexing |
| 311 | if (ACCESSING_BITS_8_15) |
| 312 | m_io_select = data >> 8; |
| 320 | 313 | |
| 321 | | COMBINE_DATA(&m_io_select[0]); |
| 322 | | |
| 323 | | new_bank0 = PCM_BANK_NO(0); |
| 324 | | new_bank1 = PCM_BANK_NO(1); |
| 325 | | |
| 326 | | if (old_bank0 != new_bank0) |
| 327 | | set_hotgmck_pcm_bank(0); |
| 328 | | |
| 329 | | if (old_bank1 != new_bank1) |
| 330 | | set_hotgmck_pcm_bank(1); |
| 314 | if (ACCESSING_BITS_0_7) |
| 315 | logerror("Unk ioselect write %x mask %x\n", data, mem_mask); |
| 331 | 316 | } |
| 332 | 317 | |
| 333 | 318 | static ADDRESS_MAP_START( ps4_map, AS_PROGRAM, 32, psikyo4_state ) |
| 334 | 319 | AM_RANGE(0x00000000, 0x000fffff) AM_ROM // program ROM (1 meg) |
| 335 | | AM_RANGE(0x02000000, 0x021fffff) AM_ROMBANK("bank1") // data ROM |
| 320 | AM_RANGE(0x02000000, 0x021fffff) AM_ROM AM_REGION("maincpu", 0x100000) // data ROM |
| 336 | 321 | AM_RANGE(0x03000000, 0x030037ff) AM_RAM AM_SHARE("spriteram") |
| 337 | 322 | AM_RANGE(0x03003fe0, 0x03003fe3) AM_READWRITE(ps4_eeprom_r,ps4_eeprom_w) |
| 338 | 323 | AM_RANGE(0x03003fe4, 0x03003fe7) AM_READNOP // also writes to this address - might be vblank? |
| r31802 | r31803 | |
| 343 | 328 | AM_RANGE(0x03003ff8, 0x03003ffb) AM_WRITE(ps4_screen2_brt_w) // screen 2 brightness |
| 344 | 329 | AM_RANGE(0x03003ffc, 0x03003fff) AM_WRITE(ps4_bgpen_2_dword_w) AM_SHARE("bgpen_2") // screen 2 clear colour |
| 345 | 330 | AM_RANGE(0x03004000, 0x03005fff) AM_RAM_WRITE(ps4_paletteram32_RRRRRRRRGGGGGGGGBBBBBBBBxxxxxxxx_dword_w) AM_SHARE("paletteram") // palette |
| 346 | | AM_RANGE(0x03006000, 0x03007fff) AM_ROMBANK("bank2") // data for rom tests (gfx), data is controlled by vidreg |
| 331 | AM_RANGE(0x03006000, 0x03007fff) AM_ROMBANK("gfxbank") // data for rom tests (gfx), data is controlled by vidreg |
| 347 | 332 | AM_RANGE(0x05000000, 0x05000007) AM_DEVREADWRITE8("ymf", ymf278b_device, read, write, 0xffffffff) |
| 348 | 333 | AM_RANGE(0x05800000, 0x05800003) AM_READ_PORT("P1_P2") |
| 349 | 334 | AM_RANGE(0x05800004, 0x05800007) AM_READ_PORT("P3_P4") |
| 350 | | AM_RANGE(0x05800008, 0x0580000b) AM_WRITEONLY AM_SHARE("io_select") // Used by Mahjong games to choose input (also maps normal loderndf inputs to offsets) |
| 335 | AM_RANGE(0x05800008, 0x0580000b) AM_WRITE(io_select_w) // Used by Mahjong games to choose input (also maps normal loderndf inputs to offsets) |
| 351 | 336 | |
| 352 | 337 | AM_RANGE(0x06000000, 0x060fffff) AM_RAM AM_SHARE("ram") // main RAM (1 meg) |
| 338 | ADDRESS_MAP_END |
| 353 | 339 | |
| 340 | static ADDRESS_MAP_START( ps4_ymf_map, AS_0, 8, psikyo4_state ) |
| 341 | AM_RANGE(0x000000, 0x0fffff) AM_ROMBANK("ymfbank0") |
| 342 | AM_RANGE(0x100000, 0x1fffff) AM_ROMBANK("ymfbank1") |
| 343 | AM_RANGE(0x200000, 0x2fffff) AM_ROMBANK("ymfbank2") |
| 344 | AM_RANGE(0x300000, 0x3fffff) AM_ROMBANK("ymfbank3") |
| 354 | 345 | ADDRESS_MAP_END |
| 355 | 346 | |
| 356 | 347 | |
| 357 | 348 | static INPUT_PORTS_START( hotgmck ) |
| 358 | 349 | PORT_START("P1_P2") |
| 359 | | PORT_BIT( 0x000000ff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CUSTOM_MEMBER(DEVICE_SELF, psikyo4_state,system_port_r, NULL) |
| 350 | PORT_BIT( 0x000000ff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "SYSTEM") |
| 360 | 351 | PORT_BIT( 0x00ffff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 361 | 352 | PORT_BIT( 0xff000000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CUSTOM_MEMBER(DEVICE_SELF, psikyo4_state,mahjong_ctrl_r, (void *)0) |
| 362 | 353 | |
| 363 | 354 | PORT_START("P3_P4") |
| 364 | | PORT_BIT( 0x000000ff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CUSTOM_MEMBER(DEVICE_SELF, psikyo4_state,system_port_r, NULL) |
| 355 | PORT_BIT( 0x000000ff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "SYSTEM") |
| 365 | 356 | PORT_BIT( 0x00ffff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 366 | | PORT_BIT( 0xff000000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CUSTOM_MEMBER(DEVICE_SELF, psikyo4_state,mahjong_ctrl_r, (void *)1) |
| 357 | PORT_BIT( 0xff000000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CUSTOM_MEMBER(DEVICE_SELF, psikyo4_state,mahjong_ctrl_r, (void *)4) |
| 367 | 358 | |
| 368 | 359 | PORT_START("JP4")/* jumper pads 'JP4' on the PCB */ |
| 369 | 360 | /* EEPROM is read here */ |
| r31802 | r31803 | |
| 381 | 372 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 382 | 373 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE2 ) // Screen 2 |
| 383 | 374 | |
| 384 | | PORT_START("KEY0") /* fake player 1 controls 1st bank */ |
| 375 | PORT_START("KEY.0") /* fake player 1 controls 1st bank */ |
| 385 | 376 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) |
| 386 | 377 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) |
| 387 | 378 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) |
| r31802 | r31803 | |
| 391 | 382 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 392 | 383 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 393 | 384 | |
| 394 | | PORT_START("KEY1") /* fake player 1 controls 2nd bank */ |
| 385 | PORT_START("KEY.1") /* fake player 1 controls 2nd bank */ |
| 395 | 386 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) |
| 396 | 387 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) |
| 397 | 388 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) |
| r31802 | r31803 | |
| 401 | 392 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 402 | 393 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 403 | 394 | |
| 404 | | PORT_START("KEY2") /* fake player 1 controls 3rd bank */ |
| 395 | PORT_START("KEY.2") /* fake player 1 controls 3rd bank */ |
| 405 | 396 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) |
| 406 | 397 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) |
| 407 | 398 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) |
| r31802 | r31803 | |
| 411 | 402 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 412 | 403 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 413 | 404 | |
| 414 | | PORT_START("KEY3") /* fake player 1 controls 4th bank */ |
| 405 | PORT_START("KEY.3") /* fake player 1 controls 4th bank */ |
| 415 | 406 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) |
| 416 | 407 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) |
| 417 | 408 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) |
| r31802 | r31803 | |
| 421 | 412 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 422 | 413 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 423 | 414 | |
| 424 | | PORT_START("KEY4") /* fake player 2 controls 1st bank */ |
| 415 | PORT_START("KEY.4") /* fake player 2 controls 1st bank */ |
| 425 | 416 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2) |
| 426 | 417 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2) |
| 427 | 418 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2) |
| r31802 | r31803 | |
| 431 | 422 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 432 | 423 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 433 | 424 | |
| 434 | | PORT_START("KEY5") /* fake player 2 controls 2nd bank */ |
| 425 | PORT_START("KEY.5") /* fake player 2 controls 2nd bank */ |
| 435 | 426 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2) |
| 436 | 427 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2) |
| 437 | 428 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2) |
| r31802 | r31803 | |
| 441 | 432 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 442 | 433 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 443 | 434 | |
| 444 | | PORT_START("KEY6") /* fake player 2 controls 3rd bank */ |
| 435 | PORT_START("KEY.6") /* fake player 2 controls 3rd bank */ |
| 445 | 436 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2) |
| 446 | 437 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2) |
| 447 | 438 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2) |
| r31802 | r31803 | |
| 451 | 442 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 452 | 443 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 453 | 444 | |
| 454 | | PORT_START("KEY7") /* fake player 2 controls 4th bank */ |
| 445 | PORT_START("KEY.7") /* fake player 2 controls 4th bank */ |
| 455 | 446 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2) |
| 456 | 447 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2) |
| 457 | 448 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2) |
| r31802 | r31803 | |
| 470 | 461 | PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_COIN4 ) // Screen 2 - 2nd slot |
| 471 | 462 | PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_SERVICE1 ) // Screen 1 |
| 472 | 463 | PORT_SERVICE_NO_TOGGLE( 0x00000020, IP_ACTIVE_LOW) |
| 473 | | PORT_DIPNAME( 0x00000040, 0x00000040, "Debug" ) /* Must be high for rom test, unknown other side-effects */ |
| 464 | PORT_DIPNAME( 0x00000040, 0x00000040, "Debug" ) /* Must be on for rom test, unknown other side-effects */ |
| 474 | 465 | PORT_DIPSETTING( 0x00000040, DEF_STR( Off ) ) |
| 475 | 466 | PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) |
| 476 | 467 | PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_SERVICE2 ) // Screen 2 |
| r31802 | r31803 | |
| 633 | 624 | |
| 634 | 625 | void psikyo4_state::machine_start() |
| 635 | 626 | { |
| 627 | // configure YMF ROM banks |
| 628 | memory_region *YMFROM = memregion("ymf"); |
| 629 | m_ymf_max_bank = YMFROM->bytes() / 0x100000; |
| 630 | for (int i = 0; i < 4; i++) |
| 631 | { |
| 632 | char banktag[16]; |
| 633 | sprintf(banktag, "ymfbank%d", i); |
| 634 | m_ymf_bank[i] = membank(banktag); |
| 635 | m_ymf_bank[i]->configure_entries(0, m_ymf_max_bank, YMFROM->base(), 0x100000); |
| 636 | m_ymf_bank[i]->set_entry(i); |
| 637 | } |
| 638 | |
| 639 | // configure SH2 DRC |
| 640 | m_maincpu->sh2drc_add_fastram(0x00000000, 0x000fffff, 1, memregion("maincpu")->base()); |
| 641 | m_maincpu->sh2drc_add_fastram(0x03000000, 0x030037ff, 0, memshare("spriteram")->ptr()); |
| 642 | m_maincpu->sh2drc_add_fastram(0x06000000, 0x060fffff, 0, memshare("ram")->ptr()); |
| 643 | |
| 644 | save_item(NAME(m_io_select)); |
| 636 | 645 | save_item(NAME(m_oldbrt1)); |
| 637 | 646 | save_item(NAME(m_oldbrt2)); |
| 638 | 647 | } |
| r31802 | r31803 | |
| 683 | 692 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 684 | 693 | |
| 685 | 694 | MCFG_SOUND_ADD("ymf", YMF278B, MASTER_CLOCK/2) |
| 695 | MCFG_DEVICE_ADDRESS_MAP(AS_0, ps4_ymf_map) |
| 686 | 696 | MCFG_YMF278B_IRQ_HANDLER(WRITELINE(psikyo4_state, irqhandler)) |
| 687 | 697 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) |
| 688 | 698 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) |
| r31802 | r31803 | |
| 718 | 728 | ROM_LOAD32_WORD( "3l.bin", 0x1800000, 0x400000, CRC(a8a646f7) SHA1(be96626f3a4c8eb81f0bb7d8ac1c4e6619be50c8) ) |
| 719 | 729 | ROM_LOAD32_WORD( "3h.bin", 0x1800002, 0x400000, CRC(8c32becd) SHA1(9a8ddda4c6c007bb5cd4abb11859a4b7f1b1d578) ) |
| 720 | 730 | |
| 721 | | ROM_REGION( 0x400000, "ymf", ROMREGION_ERASE00 ) |
| 722 | | |
| 723 | | ROM_REGION( 0x800000, "ymfsource", 0 ) |
| 731 | ROM_REGION( 0x800000, "ymf", 0 ) |
| 724 | 732 | ROM_LOAD( "snd0.bin", 0x000000, 0x400000, CRC(c090d51a) SHA1(d229753b536209fe0da1985ca694fd1a73bc0f39) ) |
| 725 | 733 | ROM_LOAD( "snd1.bin", 0x400000, 0x400000, CRC(c24243b5) SHA1(2100d5d7d2e4b9ed90bde38cb61a5da09f00ce21) ) |
| 726 | 734 | ROM_END |
| r31802 | r31803 | |
| 745 | 753 | ROM_LOAD32_WORD( "5l.u7", 0x2800000, 0x400000, CRC(4639ef36) SHA1(324ffcfa1b1b9def00c15f628c59cea1d09b031d) ) |
| 746 | 754 | ROM_LOAD32_WORD( "5h.u16", 0x2800002, 0x400000, CRC(549e9e9e) SHA1(90c1695c89c059852f8b4f714b3dfee006839b44) ) |
| 747 | 755 | |
| 748 | | ROM_REGION( 0x400000, "ymf", ROMREGION_ERASE00 ) |
| 749 | | |
| 750 | | ROM_REGION( 0x800000, "ymfsource", 0 ) |
| 756 | ROM_REGION( 0x800000, "ymf", 0 ) |
| 751 | 757 | ROM_LOAD( "snd0.u10", 0x000000, 0x400000, CRC(0e8e5fdf) SHA1(041e3118f7a838dcc9fb99a1028fb48a452ba1d9) ) |
| 752 | 758 | ROM_LOAD( "snd1.u19", 0x400000, 0x400000, CRC(d8057d2f) SHA1(51d96cc4e9da81cbd1e815c652707407e6c7c3ae) ) |
| 753 | 759 | ROM_END |
| r31802 | r31803 | |
| 777 | 783 | ROM_LOAD32_WORD( "7l.u9", 0x3800000, 0x400000, CRC(2ec78fb2) SHA1(194e9833ab7057c2f83c581e722b41631d99fccc) ) |
| 778 | 784 | ROM_LOAD32_WORD( "7h.u18", 0x3800002, 0x400000, CRC(c1735612) SHA1(84e32d3249d57cdc8ea91780801eaa196c439895) ) |
| 779 | 785 | |
| 780 | | ROM_REGION( 0x400000, "ymf", ROMREGION_ERASE00 ) |
| 781 | | |
| 782 | | ROM_REGION( 0x800000, "ymfsource", 0 ) |
| 786 | ROM_REGION( 0x800000, "ymf", 0 ) |
| 783 | 787 | ROM_LOAD( "snd0.u10", 0x000000, 0x400000, CRC(d62a0dba) SHA1(d81e2e1251b62eca8cd4d8eec2515b2cf7d7ff0a) ) |
| 784 | 788 | ROM_LOAD( "snd1.u19", 0x400000, 0x400000, CRC(1df91fb4) SHA1(f0f2d2d717fbd16a67da9f0e21f288ceedef839f) ) |
| 785 | 789 | ROM_END |
| r31802 | r31803 | |
| 789 | 793 | ROM_REGION( 0x500000, "maincpu", 0) |
| 790 | 794 | ROM_LOAD32_WORD_SWAP( "2.u22", 0x000000, 0x080000, CRC(3334c21e) SHA1(8d825448e40bc50d670ab8587a40df6b27ac918e) ) |
| 791 | 795 | ROM_LOAD32_WORD_SWAP( "1.u23", 0x000002, 0x080000, CRC(b1a1c643) SHA1(1912a2d231e97ffbe9b668ca7f25cf406664f3ba) ) |
| 792 | | ROM_LOAD16_WORD_SWAP( "prog.u1", 0x100000, 0x400000, CRC(ad556d8e) SHA1(d3dc3c5cbe939b6fc28f861e4132c5485ba89f50) ) // no test |
| 796 | ROM_LOAD16_WORD_SWAP( "prog.u1", 0x100000, 0x400000, CRC(ad556d8e) SHA1(d3dc3c5cbe939b6fc28f861e4132c5485ba89f50) ) // no test; second half empty |
| 793 | 797 | |
| 794 | 798 | ROM_REGION( 0x8000000, "gfx1", 0 ) /* Sprites */ |
| 795 | 799 | ROM_LOAD32_WORD( "0l.u2", 0x0000000, 0x400000, CRC(f65986f7) SHA1(3824a7ea7f14ef3f319b07bd1224847131f6cac0) ) // ok |
| r31802 | r31803 | |
| 809 | 813 | ROM_LOAD32_WORD( "7l.u9", 0x3800000, 0x400000, CRC(022a8a31) SHA1(a21dbf36f56e144f9817c7255866546367dda2f6) ) // ok |
| 810 | 814 | ROM_LOAD32_WORD( "7h.u18", 0x3800002, 0x400000, CRC(77e47409) SHA1(0e1deb01dd1250c90fc3eed776becd51899f0b5f) ) // ok |
| 811 | 815 | |
| 812 | | ROM_REGION( 0x400000, "ymf", ROMREGION_ERASE00 ) |
| 813 | | |
| 814 | | ROM_REGION( 0x800000, "ymfsource", 0 ) |
| 816 | ROM_REGION( 0x800000, "ymf", 0 ) |
| 815 | 817 | ROM_LOAD( "snd0.u10", 0x000000, 0x400000, CRC(051e2fed) SHA1(ee8073332801982549b3c142fba114e27733a756) ) // ok |
| 816 | | ROM_LOAD( "snd1.u19", 0x400000, 0x400000, CRC(0de0232d) SHA1(c600fe1d3c6c05e451ae7ef249bb92e8fc9cec3a) ) // ok (but fails rom test due to banking error in emulation) |
| 818 | ROM_LOAD( "snd1.u19", 0x400000, 0x400000, CRC(0de0232d) SHA1(c600fe1d3c6c05e451ae7ef249bb92e8fc9cec3a) ) // ok |
| 817 | 819 | ROM_END |
| 818 | 820 | |
| 819 | 821 | ROM_START( hotgmcki ) |
| 820 | | ROM_REGION( 0x500000, "maincpu", 0) |
| 822 | ROM_REGION( 0x300000, "maincpu", 0) |
| 821 | 823 | ROM_LOAD32_WORD_SWAP( "2.u22", 0x000000, 0x080000, CRC(abc192dd) SHA1(674c2b8814319605c1b6221bbe18588a98dda093) ) |
| 822 | 824 | ROM_LOAD32_WORD_SWAP( "1.u23", 0x000002, 0x080000, CRC(8be896d0) SHA1(5d677dede4ec18cbfc54acae95fe0f10bfc4d566) ) |
| 823 | 825 | ROM_LOAD16_WORD_SWAP( "prog.u1", 0x100000, 0x200000, CRC(9017ae8e) SHA1(0879198606095a2d209df059538ce1c73460b30e) ) // no test |
| 824 | | ROM_RELOAD(0x300000,0x200000) |
| 825 | 826 | |
| 826 | 827 | /* Roms have to be mirrored with ROM_RELOAD for rom tests to pass */ |
| 827 | 828 | ROM_REGION( 0x4000000, "gfx1", ROMREGION_ERASEFF | 0 ) /* Sprites */ |
| r31802 | r31803 | |
| 858 | 859 | ROM_LOAD32_WORD( "7h.u18", 0x3800002, 0x200000, CRC(a3fd4ae5) SHA1(31056e5f645984b85e9bc3767016a856ac0175f9) ) // ok |
| 859 | 860 | ROM_RELOAD( 0x3c00002, 0x200000 ) |
| 860 | 861 | |
| 861 | | ROM_REGION( 0x400000, "ymf", ROMREGION_ERASE00 ) |
| 862 | | |
| 863 | | ROM_REGION( 0x800000, "ymfsource", 0 ) |
| 862 | ROM_REGION( 0x800000, "ymf", 0 ) |
| 864 | 863 | ROM_LOAD( "snd0.u10", 0x000000, 0x400000, CRC(5f275f35) SHA1(c5952a16e9f0cee6fc990c234ccaa7ca577741bd) ) // ok |
| 865 | | ROM_LOAD( "snd1.u19", 0x400000, 0x400000, CRC(98608779) SHA1(a73c21f0f66c2af903e44a0a6a9f821b00615e7b) ) // ok (but fails rom test due to bad banking in service mode) |
| 864 | ROM_LOAD( "snd1.u19", 0x400000, 0x400000, CRC(98608779) SHA1(a73c21f0f66c2af903e44a0a6a9f821b00615e7b) ) // ok |
| 866 | 865 | ROM_END |
| 867 | 866 | |
| 868 | 867 | |
| 869 | 868 | ROM_START( loderndf ) |
| 870 | | ROM_REGION( 0x100000, "maincpu", 0) |
| 869 | ROM_REGION( 0x300000, "maincpu", 0) |
| 871 | 870 | ROM_LOAD32_WORD_SWAP( "1b.u23", 0x000002, 0x080000, CRC(fae92286) SHA1(c3d3a50514fb9c0bbd3ffb5c4bfcc853dc1893d2) ) |
| 872 | 871 | ROM_LOAD32_WORD_SWAP( "2b.u22", 0x000000, 0x080000, CRC(fe2424c0) SHA1(48a329cfdf98da1a8701b430c159d470c0f5eca1) ) |
| 873 | 872 | |
| r31802 | r31803 | |
| 882 | 881 | ROM_END |
| 883 | 882 | |
| 884 | 883 | ROM_START( loderndfa ) |
| 885 | | ROM_REGION( 0x100000, "maincpu", 0) |
| 884 | ROM_REGION( 0x300000, "maincpu", 0) |
| 886 | 885 | ROM_LOAD32_WORD_SWAP( "12.u23", 0x000002, 0x080000, CRC(661d372e) SHA1(c509c3ad9ca01e0f58bfc319b2738ecc36865ffd) ) |
| 887 | 886 | ROM_LOAD32_WORD_SWAP( "3.u22", 0x000000, 0x080000, CRC(0a63529f) SHA1(05dd7877041b69d46e41c5bddb877c083620294b) ) |
| 888 | 887 | |
| r31802 | r31803 | |
| 897 | 896 | ROM_END |
| 898 | 897 | |
| 899 | 898 | ROM_START( hotdebut ) |
| 900 | | ROM_REGION( 0x100000, "maincpu", 0) |
| 899 | ROM_REGION( 0x300000, "maincpu", 0) |
| 901 | 900 | ROM_LOAD32_WORD_SWAP( "1.u23", 0x000002, 0x080000, CRC(0b0d0027) SHA1(f62c487a725439af035d2904d453d3c2f7a5649b) ) |
| 902 | 901 | ROM_LOAD32_WORD_SWAP( "2.u22", 0x000000, 0x080000, CRC(c3b5180b) SHA1(615cc1fd99a1e4634b04bb92a3c41f914644e903) ) |
| 903 | 902 | |
| r31802 | r31803 | |
| 914 | 913 | ROM_END |
| 915 | 914 | |
| 916 | 915 | |
| 917 | | void psikyo4_state::hotgmck_pcm_bank_postload() |
| 918 | | { |
| 919 | | set_hotgmck_pcm_bank(0); |
| 920 | | set_hotgmck_pcm_bank(1); |
| 921 | | } |
| 922 | | |
| 923 | | void psikyo4_state::install_hotgmck_pcm_bank() |
| 924 | | { |
| 925 | | UINT8 *ymf_pcm = memregion("ymf")->base(); |
| 926 | | UINT8 *pcm_rom = memregion("ymfsource")->base(); |
| 927 | | |
| 928 | | memcpy(ymf_pcm, pcm_rom, 0x200000); |
| 929 | | |
| 930 | | m_io_select[0] = (m_io_select[0] & 0x00ffffff) | 0x32000000; |
| 931 | | set_hotgmck_pcm_bank(0); |
| 932 | | set_hotgmck_pcm_bank(1); |
| 933 | | |
| 934 | | m_maincpu->space(AS_PROGRAM).install_write_handler(0x5800008, 0x580000b, write32_delegate(FUNC(psikyo4_state::hotgmck_pcm_bank_w),this)); |
| 935 | | machine().save().register_postload(save_prepost_delegate(FUNC(psikyo4_state::hotgmck_pcm_bank_postload), this)); |
| 936 | | } |
| 937 | | |
| 938 | | DRIVER_INIT_MEMBER(psikyo4_state,hotgmck) |
| 939 | | { |
| 940 | | UINT8 *RAM = memregion("maincpu")->base(); |
| 941 | | membank("bank1")->set_base(&RAM[0x100000]); |
| 942 | | install_hotgmck_pcm_bank(); // Banked PCM ROM |
| 943 | | |
| 944 | | UINT32 *rom = (UINT32 *)memregion("maincpu")->base(); |
| 945 | | m_maincpu->sh2drc_add_fastram(0x00000000, 0x000fffff, 1, rom); |
| 946 | | m_maincpu->sh2drc_add_fastram(0x03000000, 0x030037ff, 0, &m_spriteram[0]); |
| 947 | | m_maincpu->sh2drc_add_fastram(0x06000000, 0x060fffff, 0, &m_ram[0]); |
| 948 | | } |
| 949 | | |
| 950 | | |
| 951 | | /* YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS */ |
| 952 | | GAME( 1997, hotgmck, 0, ps4big, hotgmck, psikyo4_state, hotgmck, ROT0, "Psikyo", "Taisen Hot Gimmick (Japan)", GAME_SUPPORTS_SAVE ) |
| 953 | | GAME( 1998, hgkairak, 0, ps4big, hotgmck, psikyo4_state, hotgmck, ROT0, "Psikyo", "Taisen Hot Gimmick Kairakuten (Japan)", GAME_SUPPORTS_SAVE ) |
| 954 | | GAME( 1999, hotgmck3, 0, ps4big, hotgmck, psikyo4_state, hotgmck, ROT0, "Psikyo", "Taisen Hot Gimmick 3 Digital Surfing (Japan)", GAME_SUPPORTS_SAVE ) |
| 955 | | GAME( 2000, hotgm4ev, 0, ps4big, hotgmck, psikyo4_state, hotgmck, ROT0, "Psikyo", "Taisen Hot Gimmick 4 Ever (Japan)", GAME_SUPPORTS_SAVE ) |
| 956 | | GAME( 2001, hotgmcki, 0, ps4big, hotgmck, psikyo4_state, hotgmck, ROT0, "Psikyo", "Mahjong Hot Gimmick Integral (Japan)", GAME_SUPPORTS_SAVE ) |
| 957 | | GAME( 2000, loderndf, 0, ps4small, loderndf, driver_device, 0, ROT0, "Psikyo", "Lode Runner - The Dig Fight (ver. B)", GAME_SUPPORTS_SAVE ) |
| 958 | | GAME( 2000, loderndfa,loderndf, ps4small, loderndf, driver_device, 0, ROT0, "Psikyo", "Lode Runner - The Dig Fight (ver. A)", GAME_SUPPORTS_SAVE ) |
| 959 | | GAME( 2000, hotdebut, 0, ps4small, hotdebut, driver_device, 0, ROT0, "MOSS / Psikyo", "Quiz de Idol! Hot Debut (Japan)", GAME_SUPPORTS_SAVE ) |
| 916 | /* YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS */ |
| 917 | GAME( 1997, hotgmck, 0, ps4big, hotgmck, driver_device, 0, ROT0, "Psikyo", "Taisen Hot Gimmick (Japan)", GAME_SUPPORTS_SAVE ) |
| 918 | GAME( 1998, hgkairak, 0, ps4big, hotgmck, driver_device, 0, ROT0, "Psikyo", "Taisen Hot Gimmick Kairakuten (Japan)", GAME_SUPPORTS_SAVE ) |
| 919 | GAME( 1999, hotgmck3, 0, ps4big, hotgmck, driver_device, 0, ROT0, "Psikyo", "Taisen Hot Gimmick 3 Digital Surfing (Japan)", GAME_SUPPORTS_SAVE ) |
| 920 | GAME( 2000, hotgm4ev, 0, ps4big, hotgmck, driver_device, 0, ROT0, "Psikyo", "Taisen Hot Gimmick 4 Ever (Japan)", GAME_SUPPORTS_SAVE ) |
| 921 | GAME( 2001, hotgmcki, 0, ps4big, hotgmck, driver_device, 0, ROT0, "Psikyo", "Mahjong Hot Gimmick Integral (Japan)", GAME_SUPPORTS_SAVE ) |
| 922 | GAME( 2000, loderndf, 0, ps4small, loderndf, driver_device, 0, ROT0, "Psikyo", "Lode Runner - The Dig Fight (ver. B)", GAME_SUPPORTS_SAVE ) |
| 923 | GAME( 2000, loderndfa,loderndf, ps4small, loderndf, driver_device, 0, ROT0, "Psikyo", "Lode Runner - The Dig Fight (ver. A)", GAME_SUPPORTS_SAVE ) |
| 924 | GAME( 2000, hotdebut, 0, ps4small, hotdebut, driver_device, 0, ROT0, "MOSS / Psikyo", "Quiz de Idol! Hot Debut (Japan)", GAME_SUPPORTS_SAVE ) |
trunk/src/mame/drivers/psikyosh.c
| r31802 | r31803 | |
| 355 | 355 | if (offset == 4) /* Configure bank for gfx test */ |
| 356 | 356 | { |
| 357 | 357 | if (ACCESSING_BITS_0_15) // Bank |
| 358 | | membank("bank2")->set_entry(m_vidregs[offset] & 0xfff); |
| 358 | membank("gfxbank")->set_entry(m_vidregs[offset] & 0xfff); |
| 359 | 359 | } |
| 360 | 360 | } |
| 361 | 361 | |
| r31802 | r31803 | |
| 486 | 486 | static ADDRESS_MAP_START( ps3v1_map, AS_PROGRAM, 32, psikyosh_state ) |
| 487 | 487 | // rom mapping |
| 488 | 488 | AM_RANGE(0x00000000, 0x000fffff) AM_ROM // program ROM (1 meg) |
| 489 | | AM_RANGE(0x02000000, 0x021fffff) AM_ROMBANK("bank1") // data ROM |
| 489 | AM_RANGE(0x02000000, 0x020fffff) AM_ROM AM_REGION("maincpu", 0x100000) // data ROM |
| 490 | 490 | // video chip |
| 491 | 491 | AM_RANGE(0x03000000, 0x03003fff) AM_RAM AM_SHARE("spriteram") // video banks0-7 (sprites and sprite list) |
| 492 | 492 | AM_RANGE(0x03004000, 0x0300ffff) AM_RAM AM_SHARE("bgram") // video banks 7-0x1f (backgrounds and other effects) |
| r31802 | r31803 | |
| 494 | 494 | AM_RANGE(0x03050000, 0x030501ff) AM_RAM AM_SHARE("zoomram") // sprite zoom lookup table |
| 495 | 495 | AM_RANGE(0x0305ffdc, 0x0305ffdf) AM_READNOP AM_WRITE(psikyosh_irqctrl_w) // also writes to this address - might be vblank reads? |
| 496 | 496 | AM_RANGE(0x0305ffe0, 0x0305ffff) AM_RAM_WRITE(psikyosh_vidregs_w) AM_SHARE("vidregs") // video registers |
| 497 | | AM_RANGE(0x03060000, 0x0307ffff) AM_ROMBANK("bank2") // data for rom tests (gfx), data is controlled by vidreg |
| 497 | AM_RANGE(0x03060000, 0x0307ffff) AM_ROMBANK("gfxbank") // data for rom tests (gfx), data is controlled by vidreg |
| 498 | 498 | // rom mapping |
| 499 | | AM_RANGE(0x04060000, 0x0407ffff) AM_ROMBANK("bank2") // data for rom tests (gfx) (Mirrored?) |
| 499 | AM_RANGE(0x04060000, 0x0407ffff) AM_ROMBANK("gfxbank") // data for rom tests (gfx) (Mirrored?) |
| 500 | 500 | // sound chip |
| 501 | 501 | AM_RANGE(0x05000000, 0x05000007) AM_DEVREADWRITE8("ymf", ymf278b_device, read, write, 0xffffffff) |
| 502 | 502 | // inputs/eeprom |
| r31802 | r31803 | |
| 522 | 522 | AM_RANGE(0x04050000, 0x040501ff) AM_RAM AM_SHARE("zoomram") // sprite zoom lookup table |
| 523 | 523 | AM_RANGE(0x0405ffdc, 0x0405ffdf) AM_READNOP AM_WRITE(psikyosh_irqctrl_w) // also writes to this address - might be vblank reads? |
| 524 | 524 | AM_RANGE(0x0405ffe0, 0x0405ffff) AM_RAM_WRITE(psikyosh_vidregs_w) AM_SHARE("vidregs") // video registers |
| 525 | | AM_RANGE(0x04060000, 0x0407ffff) AM_ROMBANK("bank2") // data for rom tests (gfx), data is controlled by vidreg |
| 525 | AM_RANGE(0x04060000, 0x0407ffff) AM_ROMBANK("gfxbank") // data for rom tests (gfx), data is controlled by vidreg |
| 526 | 526 | // rom mapping |
| 527 | | AM_RANGE(0x05000000, 0x0507ffff) AM_ROMBANK("bank1") // data ROM |
| 527 | AM_RANGE(0x05000000, 0x0507ffff) AM_ROM AM_REGION("maincpu", 0x100000) // data ROM |
| 528 | 528 | // ram |
| 529 | 529 | AM_RANGE(0x06000000, 0x060fffff) AM_RAM AM_SHARE("ram") |
| 530 | 530 | ADDRESS_MAP_END |
| r31802 | r31803 | |
| 764 | 764 | |
| 765 | 765 | void psikyosh_state::machine_start() |
| 766 | 766 | { |
| 767 | | membank("bank2")->configure_entries(0, 0x1000, memregion("gfx1")->base(), 0x20000); |
| 767 | membank("gfxbank")->configure_entries(0, 0x1000, memregion("gfx1")->base(), 0x20000); |
| 768 | 768 | } |
| 769 | 769 | |
| 770 | 770 | |
| r31802 | r31803 | |
| 828 | 828 | /* PS3 */ |
| 829 | 829 | |
| 830 | 830 | ROM_START( soldivid ) |
| 831 | | ROM_REGION( 0x100000, "maincpu", 0) |
| 831 | ROM_REGION( 0x200000, "maincpu", 0) |
| 832 | 832 | ROM_LOAD32_WORD_SWAP( "2-prog_l.u18", 0x000002, 0x080000, CRC(cf179b04) SHA1(343f00a81cffd44334a4db81b6b828b7cf73c1e8) ) |
| 833 | 833 | ROM_LOAD32_WORD_SWAP( "1-prog_h.u17", 0x000000, 0x080000, CRC(f467d1c4) SHA1(a011e6f310a54f09efa0bf4597783cd78c05ad6f) ) |
| 834 | 834 | |
| r31802 | r31803 | |
| 846 | 846 | ROM_END |
| 847 | 847 | |
| 848 | 848 | ROM_START( s1945ii ) |
| 849 | | ROM_REGION( 0x100000, "maincpu", 0) /* Code */ |
| 849 | ROM_REGION( 0x200000, "maincpu", 0) /* Code */ |
| 850 | 850 | ROM_LOAD32_WORD_SWAP( "2_prog_l.u18", 0x000002, 0x080000, CRC(20a911b8) SHA1(82ba7b93bd621fc45a4dc2722752077b59a0a233) ) |
| 851 | 851 | ROM_LOAD32_WORD_SWAP( "1_prog_h.u17", 0x000000, 0x080000, CRC(4c0fe85e) SHA1(74f810a1c3e9d629c8b190f68d73ce07b11f77b7) ) |
| 852 | 852 | |
| r31802 | r31803 | |
| 898 | 898 | ROM_END |
| 899 | 899 | |
| 900 | 900 | ROM_START( sbomber ) /* Version B - Only shows "Version B" when set to Japan region */ |
| 901 | | ROM_REGION( 0x100000, "maincpu", 0) |
| 901 | ROM_REGION( 0x200000, "maincpu", 0) |
| 902 | 902 | ROM_LOAD32_WORD_SWAP( "1-b_pr_l.u18", 0x000002, 0x080000, CRC(52d12225) SHA1(0a31a5d557414e7bf51dc6f7fbdd417a20b78df1) ) |
| 903 | 903 | ROM_LOAD32_WORD_SWAP( "1-b_pr_h.u17", 0x000000, 0x080000, CRC(1bbd0345) SHA1(c6ccb7c97cc9e9ea298c1883d1dd5563907a7255) ) |
| 904 | 904 | |
| r31802 | r31803 | |
| 922 | 922 | ROM_END |
| 923 | 923 | |
| 924 | 924 | ROM_START( sbombera ) /* Original version */ |
| 925 | | ROM_REGION( 0x100000, "maincpu", 0) |
| 925 | ROM_REGION( 0x200000, "maincpu", 0) |
| 926 | 926 | ROM_LOAD32_WORD_SWAP( "2.u18", 0x000002, 0x080000, CRC(57819a26) SHA1(d7a6fc957e39adf97762ab0a35b91aa17ec026e0) ) |
| 927 | 927 | ROM_LOAD32_WORD_SWAP( "1.u17", 0x000000, 0x080000, CRC(c388e847) SHA1(cbf4f2e191894160bdf0290d72cf20c222aaf7a7) ) |
| 928 | 928 | |
| r31802 | r31803 | |
| 996 | 996 | /* PS5v2 */ |
| 997 | 997 | |
| 998 | 998 | ROM_START( dragnblz ) |
| 999 | | ROM_REGION( 0x100000, "maincpu", 0) |
| 999 | ROM_REGION( 0x180000, "maincpu", 0) |
| 1000 | 1000 | ROM_LOAD32_WORD_SWAP( "2prog_h.u21", 0x000000, 0x080000, CRC(fc5eade8) SHA1(e5d05543641e4a3900b0d42e0d5f75734683d635) ) |
| 1001 | 1001 | ROM_LOAD32_WORD_SWAP( "1prog_l.u22", 0x000002, 0x080000, CRC(95d6fd02) SHA1(2b2830e7fa66cbd13666191762bfddc40571caec) ) |
| 1002 | 1002 | |
| r31802 | r31803 | |
| 1022 | 1022 | ROM_LOAD32_WORD( "10l.u58",0x2800000, 0x200000, CRC(a3f5c7f8) SHA1(d17478ca3e7ef46270f350ffa35d43acb05b1185) ) |
| 1023 | 1023 | ROM_LOAD32_WORD( "10h.u59",0x2800002, 0x200000, CRC(30e304c4) SHA1(1d866276bfe7f7524306a880d225aaf11ac2e5dd) ) |
| 1024 | 1024 | |
| 1025 | | ROM_REGION( 0x200000, "ymf", 0 ) /* Samples */ |
| 1025 | ROM_REGION( 0x400000, "ymf", 0 ) /* Samples */ |
| 1026 | 1026 | ROM_LOAD( "snd0.u52", 0x000000, 0x200000, CRC(7fd1b225) SHA1(6aa61021ada51393bbb34fd1aea00b8feccc8197) ) |
| 1027 | 1027 | |
| 1028 | 1028 | ROM_REGION( 0x100, "eeprom", 0 ) |
| r31802 | r31803 | |
| 1038 | 1038 | */ |
| 1039 | 1039 | |
| 1040 | 1040 | ROM_START( gnbarich ) |
| 1041 | | ROM_REGION( 0x100000, "maincpu", 0) |
| 1041 | ROM_REGION( 0x180000, "maincpu", 0) |
| 1042 | 1042 | ROM_LOAD32_WORD_SWAP( "2-prog_l.u21", 0x000000, 0x080000, CRC(c136cd9c) SHA1(ab66c4f5196a66a97dbb5832336a203421cf40fa) ) |
| 1043 | 1043 | ROM_LOAD32_WORD_SWAP( "1-prog_h.u22", 0x000002, 0x080000, CRC(6588fc96) SHA1(3db29fcf17e8b2aee465319b557bd3e45bc966b2) ) |
| 1044 | 1044 | |
| r31802 | r31803 | |
| 1064 | 1064 | // ROM_LOAD32_WORD( "10l.u58",0x2800000, 0x200000, CRC(a3f5c7f8) SHA1(d17478ca3e7ef46270f350ffa35d43acb05b1185) ) /* From Dragon Blaze */ |
| 1065 | 1065 | // ROM_LOAD32_WORD( "10h.u59",0x2800002, 0x200000, CRC(30e304c4) SHA1(1d866276bfe7f7524306a880d225aaf11ac2e5dd) ) /* From Dragon Blaze */ |
| 1066 | 1066 | |
| 1067 | | ROM_REGION( 0x200000, "ymf", 0 ) /* Samples */ |
| 1067 | ROM_REGION( 0x400000, "ymf", 0 ) /* Samples */ |
| 1068 | 1068 | ROM_LOAD( "snd0.u52", 0x000000, 0x200000, CRC(7b10436b) SHA1(c731fcce024e286a677ca10a91761c1ee06094a5) ) |
| 1069 | 1069 | |
| 1070 | 1070 | ROM_REGION( 0x100, "eeprom", 0 ) |
| r31802 | r31803 | |
| 1072 | 1072 | ROM_END |
| 1073 | 1073 | |
| 1074 | 1074 | ROM_START( mjgtaste ) |
| 1075 | | ROM_REGION( 0x100000, "maincpu", 0) |
| 1075 | ROM_REGION( 0x180000, "maincpu", 0) |
| 1076 | 1076 | ROM_LOAD32_WORD_SWAP( "2.u21", 0x000000, 0x080000, CRC(5f2041dc) SHA1(f3862ffdb8df0cf921ce1cb0236935731e7729a7) ) |
| 1077 | 1077 | ROM_LOAD32_WORD_SWAP( "1.u22", 0x000002, 0x080000, CRC(f5ff7876) SHA1(4c909db9c97f29fd79df6dacd29762688701b973) ) |
| 1078 | 1078 | |
| r31802 | r31803 | |
| 1098 | 1098 | // ROM_LOAD32_WORD( "10l.u58",0x2800000, 0x200000, CRC(a3f5c7f8) SHA1(d17478ca3e7ef46270f350ffa35d43acb05b1185) ) /* From Dragon Blaze */ |
| 1099 | 1099 | // ROM_LOAD32_WORD( "10h.u59",0x2800002, 0x200000, CRC(30e304c4) SHA1(1d866276bfe7f7524306a880d225aaf11ac2e5dd) ) /* From Dragon Blaze */ |
| 1100 | 1100 | |
| 1101 | | ROM_REGION( 0x800000, "ymf", 0 ) /* Samples */ |
| 1101 | ROM_REGION( 0x400000, "ymf", 0 ) /* Samples */ |
| 1102 | 1102 | ROM_LOAD( "snd0.u52", 0x000000, 0x400000, CRC(0179f018) SHA1(16ae63e021230356777342ed902e02407a1a1b82) ) |
| 1103 | 1103 | |
| 1104 | 1104 | ROM_REGION( 0x100, "eeprom", 0 ) |
| r31802 | r31803 | |
| 1106 | 1106 | ROM_END |
| 1107 | 1107 | |
| 1108 | 1108 | ROM_START( tgm2 ) |
| 1109 | | ROM_REGION( 0x100000, "maincpu", 0) |
| 1109 | ROM_REGION( 0x180000, "maincpu", 0) |
| 1110 | 1110 | ROM_LOAD32_WORD_SWAP( "2.u21", 0x000000, 0x080000, CRC(b19f6c31) SHA1(c58346c575db71262aebc3993743cb031c41e4af) ) |
| 1111 | 1111 | ROM_LOAD32_WORD_SWAP( "1.u22", 0x000002, 0x080000, CRC(c521bf24) SHA1(0ee5b9f74b6b8bcc01b2270c53f30d99e877ed64) ) |
| 1112 | 1112 | |
| r31802 | r31803 | |
| 1129 | 1129 | ROM_LOAD32_WORD( "95ts_10l.u58", 0x2800000, 0x200000, CRC(303a5240) SHA1(5816d1922e85bc27a2a13cdd183d9e67c7ddb2e1) ) |
| 1130 | 1130 | ROM_LOAD32_WORD( "96ts_10h.u59", 0x2800002, 0x200000, CRC(2240ebf6) SHA1(b61f93a18dd9d94fb57d95745d4df2e41a0371ff) ) |
| 1131 | 1131 | |
| 1132 | | ROM_REGION( 0x800000, "ymf", 0 ) /* Samples */ |
| 1132 | ROM_REGION( 0x400000, "ymf", 0 ) /* Samples */ |
| 1133 | 1133 | ROM_LOAD( "97ts_snd.u52", 0x000000, 0x400000, CRC(9155eca6) SHA1(f0b4f68462d8a465c39815d3b7fd9818788132ae) ) |
| 1134 | 1134 | |
| 1135 | 1135 | ROM_REGION( 0x100, "eeprom", 0 ) /* Default Eeprom (contains scores etc.) */ |
| r31802 | r31803 | |
| 1138 | 1138 | ROM_END |
| 1139 | 1139 | |
| 1140 | 1140 | ROM_START( tgm2p ) |
| 1141 | | ROM_REGION( 0x100000, "maincpu", 0) |
| 1141 | ROM_REGION( 0x180000, "maincpu", 0) |
| 1142 | 1142 | ROM_LOAD32_WORD_SWAP( "2b.u21", 0x000000, 0x080000, CRC(38bc626c) SHA1(783e8413b11f1fa08d331b09ef4ed63f62b87ead) ) |
| 1143 | 1143 | ROM_LOAD32_WORD_SWAP( "1b.u22", 0x000002, 0x080000, CRC(7599fb19) SHA1(3f7e81756470c173cc17a7e7dee91437571fd0c3) ) |
| 1144 | 1144 | |
| r31802 | r31803 | |
| 1161 | 1161 | ROM_LOAD32_WORD( "95ts_10l.u58", 0x2800000, 0x200000, CRC(303a5240) SHA1(5816d1922e85bc27a2a13cdd183d9e67c7ddb2e1) ) |
| 1162 | 1162 | ROM_LOAD32_WORD( "96ts_10h.u59", 0x2800002, 0x200000, CRC(2240ebf6) SHA1(b61f93a18dd9d94fb57d95745d4df2e41a0371ff) ) |
| 1163 | 1163 | |
| 1164 | | ROM_REGION( 0x800000, "ymf", 0 ) /* Samples */ |
| 1164 | ROM_REGION( 0x400000, "ymf", 0 ) /* Samples */ |
| 1165 | 1165 | ROM_LOAD( "97ts_snd.u52", 0x000000, 0x400000, CRC(9155eca6) SHA1(f0b4f68462d8a465c39815d3b7fd9818788132ae) ) |
| 1166 | 1166 | |
| 1167 | 1167 | ROM_REGION( 0x100, "eeprom", 0 ) /* Default Eeprom (contains scores etc.) */ |
| r31802 | r31803 | |
| 1169 | 1169 | ROM_LOAD( "tgm2p.default.nv", 0x000, 0x100, CRC(b2328b40) SHA1(e6cda4d6f4e91b9f78d2ca84a5eee6c3bd03fe02) ) |
| 1170 | 1170 | ROM_END |
| 1171 | 1171 | |
| 1172 | | void psikyosh_state::ps3_init() |
| 1172 | DRIVER_INIT_MEMBER(psikyosh_state,ps3) |
| 1173 | 1173 | { |
| 1174 | m_maincpu->sh2drc_set_options(SH2DRC_FASTEST_OPTIONS); |
| 1174 | 1175 | m_maincpu->sh2drc_add_fastram(0x03004000, 0x0300ffff, 0, &m_bgram[0]); |
| 1175 | 1176 | m_maincpu->sh2drc_add_fastram(0x03050000, 0x030501ff, 0, &m_zoomram[0]); |
| 1176 | 1177 | m_maincpu->sh2drc_add_fastram(0x06000000, 0x060fffff, 0, &m_ram[0]); |
| 1177 | 1178 | } |
| 1178 | 1179 | |
| 1179 | | void psikyosh_state::ps5_init() |
| 1180 | DRIVER_INIT_MEMBER(psikyosh_state,ps5) |
| 1180 | 1181 | { |
| 1182 | m_maincpu->sh2drc_set_options(SH2DRC_FASTEST_OPTIONS); |
| 1181 | 1183 | m_maincpu->sh2drc_add_fastram(0x04004000, 0x0400ffff, 0, &m_bgram[0]); |
| 1182 | 1184 | m_maincpu->sh2drc_add_fastram(0x04050000, 0x040501ff, 0, &m_zoomram[0]); |
| 1183 | 1185 | m_maincpu->sh2drc_add_fastram(0x06000000, 0x060fffff, 0, &m_ram[0]); |
| 1184 | 1186 | } |
| 1185 | 1187 | |
| 1186 | | DRIVER_INIT_MEMBER(psikyosh_state,soldivid) |
| 1187 | | { |
| 1188 | | m_maincpu->sh2drc_set_options(SH2DRC_FASTEST_OPTIONS); |
| 1189 | | ps3_init(); |
| 1190 | | } |
| 1191 | | |
| 1192 | | DRIVER_INIT_MEMBER(psikyosh_state,s1945ii) |
| 1193 | | { |
| 1194 | | m_maincpu->sh2drc_set_options(SH2DRC_FASTEST_OPTIONS); |
| 1195 | | ps3_init(); |
| 1196 | | } |
| 1197 | | |
| 1198 | | DRIVER_INIT_MEMBER(psikyosh_state,daraku) |
| 1199 | | { |
| 1200 | | UINT8 *RAM = memregion("maincpu")->base(); |
| 1201 | | membank("bank1")->set_base(&RAM[0x100000]); |
| 1202 | | m_maincpu->sh2drc_set_options(SH2DRC_FASTEST_OPTIONS); |
| 1203 | | ps3_init(); |
| 1204 | | } |
| 1205 | | |
| 1206 | | DRIVER_INIT_MEMBER(psikyosh_state,sbomberb) |
| 1207 | | { |
| 1208 | | m_maincpu->sh2drc_set_options(SH2DRC_FASTEST_OPTIONS); |
| 1209 | | ps3_init(); |
| 1210 | | } |
| 1211 | | |
| 1212 | | DRIVER_INIT_MEMBER(psikyosh_state,gunbird2) |
| 1213 | | { |
| 1214 | | UINT8 *RAM = memregion("maincpu")->base(); |
| 1215 | | membank("bank1")->set_base(&RAM[0x100000]); |
| 1216 | | m_maincpu->sh2drc_set_options(SH2DRC_FASTEST_OPTIONS); |
| 1217 | | ps5_init(); |
| 1218 | | } |
| 1219 | | |
| 1220 | | DRIVER_INIT_MEMBER(psikyosh_state,s1945iii) |
| 1221 | | { |
| 1222 | | UINT8 *RAM = memregion("maincpu")->base(); |
| 1223 | | membank("bank1")->set_base(&RAM[0x100000]); |
| 1224 | | m_maincpu->sh2drc_set_options(SH2DRC_FASTEST_OPTIONS); |
| 1225 | | ps5_init(); |
| 1226 | | } |
| 1227 | | |
| 1228 | | DRIVER_INIT_MEMBER(psikyosh_state,dragnblz) |
| 1229 | | { |
| 1230 | | m_maincpu->sh2drc_set_options(SH2DRC_FASTEST_OPTIONS); |
| 1231 | | ps5_init(); |
| 1232 | | } |
| 1233 | | |
| 1234 | | DRIVER_INIT_MEMBER(psikyosh_state,gnbarich) |
| 1235 | | { |
| 1236 | | m_maincpu->sh2drc_set_options(SH2DRC_FASTEST_OPTIONS); |
| 1237 | | ps5_init(); |
| 1238 | | } |
| 1239 | | |
| 1240 | | DRIVER_INIT_MEMBER(psikyosh_state,tgm2) |
| 1241 | | { |
| 1242 | | m_maincpu->sh2drc_set_options(SH2DRC_FASTEST_OPTIONS); |
| 1243 | | ps5_init(); |
| 1244 | | } |
| 1245 | | |
| 1246 | 1188 | DRIVER_INIT_MEMBER(psikyosh_state,mjgtaste) |
| 1247 | 1189 | { |
| 1248 | | m_maincpu->sh2drc_set_options(SH2DRC_FASTEST_OPTIONS); |
| 1249 | 1190 | /* needs to install mahjong controls too (can select joystick in test mode tho) */ |
| 1250 | 1191 | m_maincpu->space(AS_PROGRAM).install_read_handler(0x03000000, 0x03000003, read32_delegate(FUNC(psikyosh_state::mjgtaste_input_r),this)); |
| 1251 | | ps5_init(); |
| 1192 | DRIVER_INIT_CALL(ps5); |
| 1252 | 1193 | } |
| 1253 | 1194 | |
| 1254 | 1195 | |
| 1255 | 1196 | /* YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS */ |
| 1256 | 1197 | |
| 1257 | 1198 | /* ps3-v1 */ |
| 1258 | | GAME( 1997, soldivid, 0, psikyo3v1, soldivid, psikyosh_state, soldivid, ROT0, "Psikyo", "Sol Divide - The Sword Of Darkness", GAME_SUPPORTS_SAVE ) |
| 1259 | | GAME( 1997, s1945ii, 0, psikyo3v1, s1945ii, psikyosh_state, s1945ii, ROT270, "Psikyo", "Strikers 1945 II", GAME_SUPPORTS_SAVE ) |
| 1260 | | GAME( 1998, daraku, 0, psikyo3v1, daraku, psikyosh_state, daraku, ROT0, "Psikyo", "Daraku Tenshi - The Fallen Angels", GAME_SUPPORTS_SAVE ) |
| 1261 | | GAME( 1998, sbomber, 0, psikyo3v1, sbomberb, psikyosh_state, sbomberb, ROT270, "Psikyo", "Space Bomber (ver. B)", GAME_SUPPORTS_SAVE ) |
| 1262 | | GAME( 1998, sbombera, sbomber, psikyo3v1, sbomberb, psikyosh_state, sbomberb, ROT270, "Psikyo", "Space Bomber", GAME_SUPPORTS_SAVE ) |
| 1199 | GAME( 1997, soldivid, 0, psikyo3v1, soldivid, psikyosh_state, ps3, ROT0, "Psikyo", "Sol Divide - The Sword Of Darkness", GAME_SUPPORTS_SAVE ) |
| 1200 | GAME( 1997, s1945ii, 0, psikyo3v1, s1945ii, psikyosh_state, ps3, ROT270, "Psikyo", "Strikers 1945 II", GAME_SUPPORTS_SAVE ) |
| 1201 | GAME( 1998, daraku, 0, psikyo3v1, daraku, psikyosh_state, ps3, ROT0, "Psikyo", "Daraku Tenshi - The Fallen Angels", GAME_SUPPORTS_SAVE ) |
| 1202 | GAME( 1998, sbomber, 0, psikyo3v1, sbomberb, psikyosh_state, ps3, ROT270, "Psikyo", "Space Bomber (ver. B)", GAME_SUPPORTS_SAVE ) |
| 1203 | GAME( 1998, sbombera, sbomber, psikyo3v1, sbomberb, psikyosh_state, ps3, ROT270, "Psikyo", "Space Bomber", GAME_SUPPORTS_SAVE ) |
| 1263 | 1204 | |
| 1264 | 1205 | /* ps5 */ |
| 1265 | | GAME( 1998, gunbird2, 0, psikyo5, gunbird2, psikyosh_state, gunbird2, ROT270, "Psikyo", "Gunbird 2", GAME_SUPPORTS_SAVE ) |
| 1266 | | GAME( 1999, s1945iii, 0, psikyo5, s1945iii, psikyosh_state, s1945iii, ROT270, "Psikyo", "Strikers 1945 III (World) / Strikers 1999 (Japan)", GAME_SUPPORTS_SAVE ) |
| 1206 | GAME( 1998, gunbird2, 0, psikyo5, gunbird2, psikyosh_state, ps5, ROT270, "Psikyo", "Gunbird 2", GAME_SUPPORTS_SAVE ) |
| 1207 | GAME( 1999, s1945iii, 0, psikyo5, s1945iii, psikyosh_state, ps5, ROT270, "Psikyo", "Strikers 1945 III (World) / Strikers 1999 (Japan)", GAME_SUPPORTS_SAVE ) |
| 1267 | 1208 | |
| 1268 | 1209 | /* ps5v2 */ |
| 1269 | | GAME( 2000, dragnblz, 0, psikyo5, dragnblz, psikyosh_state, dragnblz, ROT270, "Psikyo", "Dragon Blaze", GAME_SUPPORTS_SAVE ) |
| 1270 | | GAME( 2000, tgm2, 0, psikyo5_240, tgm2, psikyosh_state, tgm2, ROT0, "Arika", "Tetris the Absolute The Grand Master 2", GAME_SUPPORTS_SAVE ) |
| 1271 | | GAME( 2000, tgm2p, tgm2, psikyo5_240, tgm2, psikyosh_state, tgm2, ROT0, "Arika", "Tetris the Absolute The Grand Master 2 Plus", GAME_SUPPORTS_SAVE ) |
| 1272 | | GAME( 2001, gnbarich, 0, psikyo5, gnbarich, psikyosh_state, gnbarich, ROT270, "Psikyo", "Gunbarich", GAME_SUPPORTS_SAVE ) |
| 1210 | GAME( 2000, dragnblz, 0, psikyo5, dragnblz, psikyosh_state, ps5, ROT270, "Psikyo", "Dragon Blaze", GAME_SUPPORTS_SAVE ) |
| 1211 | GAME( 2000, tgm2, 0, psikyo5_240, tgm2, psikyosh_state, ps5, ROT0, "Arika", "Tetris the Absolute The Grand Master 2", GAME_SUPPORTS_SAVE ) |
| 1212 | GAME( 2000, tgm2p, tgm2, psikyo5_240, tgm2, psikyosh_state, ps5, ROT0, "Arika", "Tetris the Absolute The Grand Master 2 Plus", GAME_SUPPORTS_SAVE ) |
| 1213 | GAME( 2001, gnbarich, 0, psikyo5, gnbarich, psikyosh_state, ps5, ROT270, "Psikyo", "Gunbarich", GAME_SUPPORTS_SAVE ) |
| 1273 | 1214 | GAME( 2002, mjgtaste, 0, psikyo5, mjgtaste, psikyosh_state, mjgtaste, ROT0, "Psikyo", "Mahjong G-Taste", GAME_SUPPORTS_SAVE ) |