trunk/src/mame/drivers/kurukuru.c
| r19756 | r19757 | |
| 317 | 317 | |
| 318 | 318 | WRITE8_MEMBER(kurukuru_state::kurukuru_bankswitch_w) |
| 319 | 319 | { |
| 320 | | // d4,d5: bank |
| 321 | | // other bits: ? |
| 322 | | membank("bank1")->set_entry(data >> 4 & 3); |
| 320 | membank("bank1")->set_entry(7); // remove banked rom |
| 321 | /* |
| 322 | if bits 5,4 are 00,10,01 then IC10 is enabled |
| 323 | if bits 3,2 are 00,10,01 then IC18 is enabled |
| 324 | if bits 1,0 are 00,10,01 then IC23 is enabled |
| 325 | Then in addition, A15 (ROM half) is determined by the low bit. |
| 326 | Note that in theory, it can cause a conflict by enabling more than one chip, |
| 327 | but the game never does this. |
| 328 | */ |
| 329 | for (int chip = 0; chip < 3; chip++) |
| 330 | { |
| 331 | if ((data & 3) != 3) |
| 332 | membank("bank1")->set_entry((chip << 1) | (~data & 1)); |
| 333 | data >>= 2; |
| 334 | } |
| 323 | 335 | } |
| 324 | 336 | |
| 325 | 337 | WRITE8_MEMBER(kurukuru_state::kurukuru_soundlatch_w) |
| r19756 | r19757 | |
| 399 | 411 | AM_RANGE(0x60, 0x60) AM_MIRROR(0x0f) AM_READ(kurukuru_soundlatch_r) |
| 400 | 412 | AM_RANGE(0x70, 0x70) AM_MIRROR(0x0f) AM_READ(kurukuru_adpcm_timer_irqack_r) |
| 401 | 413 | ADDRESS_MAP_END |
| 414 | /* |
| 415 | Reading _any_ I/O port on the audio CPU should return ADPCM IRQ flag on bit 3, and sound command write status flag on bit 4. |
| 416 | How does this work when reading the sound latch? The game (un)fortunately doesn't test this, I'd rather leave it unemulated then. |
| 417 | */ |
| 402 | 418 | |
| 403 | 419 | |
| 404 | 420 | /* YM2149 ports */ |
| r19756 | r19757 | |
| 497 | 513 | |
| 498 | 514 | void kurukuru_state::machine_start() |
| 499 | 515 | { |
| 500 | | membank("bank1")->configure_entries(0, 4, memregion("maincpu")->base(), 0x8000); |
| 516 | membank("bank1")->configure_entries(0, 8, memregion("user1")->base(), 0x8000); |
| 501 | 517 | } |
| 502 | 518 | |
| 503 | 519 | void kurukuru_state::machine_reset() |
| r19756 | r19757 | |
| 581 | 597 | ***************************************************************************/ |
| 582 | 598 | |
| 583 | 599 | ROM_START( kurukuru ) |
| 584 | | ROM_REGION( 0x28000, "maincpu", 0 ) |
| 585 | | ROM_LOAD( "kp_17l.ic17", 0x00000, 0x08000, CRC(9b552ebc) SHA1(07d0e62b7fdad381963a345376b72ad31eb7b96d) ) // program code |
| 586 | | ROM_LOAD( "10.ic10", 0x08000, 0x10000, CRC(3d6012bc) SHA1(2764f70e0e0bef3f2f71dd6c78e0a4189057beca) ) // title + text + ingame gfx |
| 587 | | ROM_LOAD( "18.ic18", 0x18000, 0x10000, CRC(afb13c6a) SHA1(ac3cd40fad081f7a2b3d1fc72ea96282b9d1f4a3) ) // big frog gfx |
| 600 | ROM_REGION( 0x08000, "maincpu", 0 ) |
| 601 | ROM_LOAD( "kp_17l.ic17", 0x00000, 0x08000, CRC(9b552ebc) SHA1(07d0e62b7fdad381963a345376b72ad31eb7b96d) ) // program code |
| 588 | 602 | |
| 603 | ROM_REGION( 0x40000, "user1", 0 ) // maincpu banked roms |
| 604 | ROM_FILL( 0x00000, 0x10000, 0xff ) // ic23: unpopulated |
| 605 | ROM_LOAD( "18.ic18", 0x10000, 0x10000, CRC(afb13c6a) SHA1(ac3cd40fad081f7a2b3d1fc72ea96282b9d1f4a3) ) // ic18: big frog gfx |
| 606 | ROM_LOAD( "10.ic10", 0x20000, 0x10000, CRC(3d6012bc) SHA1(2764f70e0e0bef3f2f71dd6c78e0a4189057beca) ) // ic10: title + text + ingame gfx |
| 607 | ROM_FILL( 0x30000, 0x10000, 0xff ) // dummy entry for when no romchip is selected |
| 608 | |
| 589 | 609 | ROM_REGION( 0x10000, "audiocpu", 0 ) |
| 590 | | ROM_LOAD( "4.ic4", 0x00000, 0x10000, CRC(85d86f32) SHA1(f2aa93d702e6577f8f2204c74c44ac26d05be699) ) // code & adpcm samples |
| 610 | ROM_LOAD( "4.ic4", 0x00000, 0x10000, CRC(85d86f32) SHA1(f2aa93d702e6577f8f2204c74c44ac26d05be699) ) // code & adpcm samples |
| 591 | 611 | |
| 592 | 612 | ROM_REGION( 0x800, "plds", 0 ) |
| 593 | 613 | ROM_LOAD( "51.ic26", 0x0000, 0x0104, CRC(ce4a601b) SHA1(07f5bbb327b220e5846927cbb91149174dd07b36) ) |