trunk/src/mame/drivers/kurukuru.c
| r19704 | r19705 | |
| 1 | | /************************************************************************** |
| 1 | /****************************************************************************** |
| 2 | 2 | |
| 3 | 3 | KURU KURU PYON PYON |
| 4 | 4 | Taiyo Jidoki / Success |
| r19704 | r19705 | |
| 9 | 9 | |
| 10 | 10 | This hardware seems to be a derivative of MSX2 'on steroids'. |
| 11 | 11 | |
| 12 | | Depending how complex is turning the emulation, this driver |
| 13 | | could be merged later with tonton.c, since the platforms are |
| 14 | | sharing the hardware base... |
| 15 | 12 | |
| 13 | ******************************************************************************* |
| 16 | 14 | |
| 17 | | *************************************************************************** |
| 15 | Technical Notes.... |
| 18 | 16 | |
| 19 | | KURU KURU PYON PYON |
| 20 | | (c)SUCCESS / CABINET :TAIYO JIDOKI |
| 21 | 17 | |
| 22 | 18 | CPU : 2x Sharp LH0080A Z80A |
| 23 | 19 | |
| r19704 | r19705 | |
| 42 | 38 | 1x PAL12L6 (IC32) |
| 43 | 39 | |
| 44 | 40 | |
| 45 | | *************************************************************************** |
| 46 | | |
| 47 | 41 | PCB Layout... |
| 48 | 42 | |
| 49 | 43 | .--------------------------------------------------------------------------------------------------. |
| r19704 | r19705 | |
| 114 | 108 | AB = NEC C1663C 8926B. |
| 115 | 109 | |
| 116 | 110 | |
| 117 | | *************************************************************************** |
| 111 | ******************************************************************************* |
| 118 | 112 | |
| 119 | | Notes.... |
| 113 | General Notes.... |
| 120 | 114 | |
| 121 | 115 | The game name could be translated as "Croak Croak Hop Hop" |
| 122 | 116 | Kuru is the frog sound, and Pyon is the sound of jumps. |
| 123 | 117 | |
| 124 | | The game is playable, even when you can't hear all sounds. |
| 125 | | |
| 126 | 118 | Coin 1 (key 5) is not working properly and could hang the system. |
| 127 | 119 | Once pressed, the game spits a message that means "Jammed Medal". |
| 128 | 120 | For now, use Coin 2 (key 6) and Service (key 8) for credits... |
| 129 | 121 | |
| 130 | 122 | If you pressed Coin 1 and the game is not responding anymore, press RESET |
| 131 | | (key 0) and the game will reset to default values. |
| 123 | (key 0), and the game will reset to default values (even all counters will |
| 124 | be cleared). |
| 132 | 125 | |
| 133 | 126 | |
| 134 | | In the Book Keeping, you can find the statistics... |
| 127 | ******************************************************************************* |
| 135 | 128 | |
| 129 | * How to play... |
| 130 | |
| 131 | Insert tokens (medals)... |
| 132 | |
| 133 | You can bet to any (or all) of the following 5 characters: Bote, Oume, Pyoko, |
| 134 | Kunio, and Pyon Pyon. Press start, and the reels start to roll. You'll win if |
| 135 | you can get 3 of the choosen character(s) in a row, column or diagonal. |
| 136 | |
| 137 | The black tadpoles behave just like jokers... If you have 2 choosen characters |
| 138 | in a row and the remaining one is a black tadpole, it will transform into another |
| 139 | character to complete the 3 in a row, allowing you to win. |
| 140 | |
| 141 | Red tadpoles are a bonus. Once you get one, it will go to the right panel, |
| 142 | revealing a number. This number represents the extra credits you won. |
| 143 | |
| 144 | |
| 145 | * Bookkeeping... |
| 146 | |
| 147 | Pressing Bookkeeping key (key 9), you enter the Bookkeeping Mode. There are |
| 148 | 2 screens with all the game information like DIP switches and statistics... |
| 149 | |
| 136 | 150 | 1st screen... |
| 137 | 151 | |
| 138 | | - OMAKE: Extra/Bonus. |
| 152 | - [Left panel]: All the DIP switches parameters. |
| 139 | 153 | |
| 140 | | 2nd screen... |
| 154 | - [Right panel]: Bet and Win totals, 100Y/10Y/medal IN/OUT, total of games, |
| 155 | won, loss, won by paid range, and 'omake' (extra/bonus). |
| 141 | 156 | |
| 142 | | - TATE: Vertical. |
| 143 | | - YOKO: Horizontal. |
| 144 | | - NANAME: Diagonal. |
| 157 | 2nd screen (press Bookkeeping key again)... |
| 145 | 158 | |
| 146 | | ...for each character (BOTE, OUME, PYOKO, KUNIO & PP). |
| 159 | - Tate (vertical), Yoko (horizontal) and Naname (diagonal), |
| 160 | for each character (Bote, Oume, Pyoko, Kunio and Pyon Pyon). |
| 147 | 161 | |
| 148 | | Also... |
| 162 | Also Aka (red) and Kuro (black). |
| 149 | 163 | |
| 150 | | - AKA: Red. |
| 151 | | - KURO: Black. |
| 164 | Pressing the Bookkeeping key once more, you exit the mode and go back to the game. |
| 152 | 165 | |
| 153 | 166 | |
| 154 | | *************************************************************************** |
| 167 | ******************************************************************************* |
| 155 | 168 | |
| 156 | | Samples.... |
| 169 | ADPCM Samples.... |
| 157 | 170 | |
| 158 | 171 | There are 14 samples in the system. |
| 159 | 172 | |
| 160 | | 00: "boterin" (?) |
| 173 | 00: "Boterin" |
| 161 | 174 | 01: |
| 162 | | 02: "hakase" ("professor") |
| 163 | | 03: "pyokorin" |
| 164 | | 04: "kunio" |
| 165 | | 05: "pyon pyon" |
| 175 | 02: "Hakase" ("professor") |
| 176 | 03: "Pyokorin" |
| 177 | 04: "Kunio" |
| 178 | 05: "Pyon Pyon" |
| 166 | 179 | 06: |
| 167 | 180 | 07: |
| 168 | | 08: "oume" |
| 169 | | 09: "haipaa" ("hyper") |
| 170 | | 10: "ichi ni tsuite" ("on your marks") |
| 171 | | 11: "youi" ("get ready") |
| 172 | | 12: bang sound for the tadpoles landing in the right panel |
| 173 | | 13: sound for reels when running |
| 181 | 08: "Oume" |
| 182 | 09: "Haipaa" ("hyper") |
| 183 | 10: "Ichi ni tsuite" ("on your marks") |
| 184 | 11: "Youi" ("get ready") |
| 185 | 12: Bang sound for the tadpoles landing in the right panel. |
| 186 | 13: Sound effect for reels when running. |
| 174 | 187 | |
| 175 | 188 | |
| 176 | | *************************************************************************** |
| 189 | ******************************************************************************* |
| 177 | 190 | |
| 178 | 191 | TODO: |
| 179 | 192 | |
| 180 | | - Hook up AY8910 output ports. Or unused? |
| 181 | | - Find why the use of coin 1 always jams. Hopper? |
| 193 | - Hopper emulation. |
| 194 | - Find why the use of coin 1 / payout always jam. Hopper related? |
| 195 | - Default DIP Switches, once the hopper/coin jam issues were solved... |
| 182 | 196 | |
| 183 | 197 | |
| 184 | | ***************************************************************************/ |
| 198 | ******************************************************************************/ |
| 185 | 199 | |
| 186 | 200 | #include "emu.h" |
| 187 | 201 | #include "cpu/z80/z80.h" |
| r19704 | r19705 | |
| 212 | 226 | DECLARE_WRITE8_MEMBER(kurukuru_adpcm_reset_w); |
| 213 | 227 | DECLARE_READ8_MEMBER(kurukuru_adpcm_timer_irqack_r); |
| 214 | 228 | DECLARE_WRITE8_MEMBER(kurukuru_adpcm_data_w); |
| 229 | DECLARE_WRITE8_MEMBER(ym2149_aout_w); |
| 230 | DECLARE_WRITE8_MEMBER(ym2149_bout_w); |
| 215 | 231 | |
| 216 | 232 | void update_sound_irq(UINT8 cause); |
| 217 | 233 | virtual void machine_start(); |
| r19704 | r19705 | |
| 220 | 236 | }; |
| 221 | 237 | |
| 222 | 238 | #define MAIN_CLOCK XTAL_21_4772MHz |
| 239 | #define CPU_CLOCK MAIN_CLOCK/6 |
| 240 | #define YM2149_CLOCK MAIN_CLOCK/12 |
| 223 | 241 | #define M5205_CLOCK XTAL_384kHz |
| 224 | 242 | |
| 225 | | #define VDP_MEM 0x30000 |
| 243 | #define VDP_MEM 0x30000 |
| 226 | 244 | |
| 227 | 245 | /* from MSX2 driver, may be not accurate for this HW */ |
| 228 | 246 | #define MSX2_XBORDER_PIXELS 16 |
| r19704 | r19705 | |
| 323 | 341 | AM_RANGE(0x90, 0x90) AM_WRITE(kurukuru_bankswitch_w) |
| 324 | 342 | AM_RANGE(0xa0, 0xa0) AM_READ_PORT("IN0") |
| 325 | 343 | AM_RANGE(0xb0, 0xb0) AM_READ_PORT("IN1") |
| 326 | | AM_RANGE(0xc0, 0xc0) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_w) |
| 344 | AM_RANGE(0xc0, 0xc0) AM_DEVWRITE_LEGACY("ym2149", ay8910_address_w) |
| 327 | 345 | AM_RANGE(0xc8, 0xc8) AM_READ_PORT("DSW2") |
| 328 | | AM_RANGE(0xd0, 0xd0) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_w) |
| 346 | AM_RANGE(0xd0, 0xd0) AM_DEVWRITE_LEGACY("ym2149", ay8910_data_w) |
| 329 | 347 | ADDRESS_MAP_END |
| 330 | 348 | |
| 331 | 349 | |
| r19704 | r19705 | |
| 372 | 390 | ADDRESS_MAP_END |
| 373 | 391 | |
| 374 | 392 | |
| 393 | /* YM2149 ports */ |
| 394 | WRITE8_MEMBER(kurukuru_state::ym2149_aout_w) |
| 395 | { |
| 396 | logerror("YM2149: Port A out: %02X\n", data); |
| 397 | } |
| 398 | |
| 399 | WRITE8_MEMBER(kurukuru_state::ym2149_bout_w) |
| 400 | { |
| 401 | logerror("YM2149: Port B out: %02X\n", data); |
| 402 | } |
| 403 | |
| 404 | |
| 375 | 405 | /************************************************* |
| 376 | 406 | * Input Ports Definitions * |
| 377 | 407 | *************************************************/ |
| r19704 | r19705 | |
| 389 | 419 | |
| 390 | 420 | PORT_START("IN1") |
| 391 | 421 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_9) PORT_NAME("Bookkeeping") |
| 392 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_8) PORT_NAME("Service") |
| 422 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_8) PORT_NAME("Service") // add credits without contabilize them |
| 393 | 423 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_0) PORT_NAME("Reset Button") |
| 394 | 424 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) |
| 395 | 425 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A) PORT_NAME("Unknown 1") |
| r19704 | r19705 | |
| 469 | 499 | * Sound Interfaces * |
| 470 | 500 | *************************************************/ |
| 471 | 501 | |
| 472 | | static const ay8910_interface ay8910_intf = |
| 502 | static const ay8910_interface ym2149_intf = |
| 473 | 503 | { |
| 474 | 504 | AY8910_LEGACY_OUTPUT, |
| 475 | 505 | AY8910_DEFAULT_LOADS, |
| 476 | 506 | DEVCB_UNMAPPED, |
| 477 | 507 | DEVCB_UNMAPPED, |
| 478 | | DEVCB_UNMAPPED, // some writes... |
| 479 | | DEVCB_UNMAPPED // some writes... |
| 508 | DEVCB_DRIVER_MEMBER(kurukuru_state, ym2149_aout_w), |
| 509 | DEVCB_DRIVER_MEMBER(kurukuru_state, ym2149_bout_w) |
| 480 | 510 | }; |
| 481 | 511 | |
| 482 | 512 | static const msm5205_interface msm5205_config = |
| r19704 | r19705 | |
| 493 | 523 | static MACHINE_CONFIG_START( kurukuru, kurukuru_state ) |
| 494 | 524 | |
| 495 | 525 | /* basic machine hardware */ |
| 496 | | MCFG_CPU_ADD("maincpu",Z80,MAIN_CLOCK/6) |
| 526 | MCFG_CPU_ADD("maincpu",Z80, CPU_CLOCK) |
| 497 | 527 | MCFG_CPU_PROGRAM_MAP(kurukuru_map) |
| 498 | 528 | MCFG_CPU_IO_MAP(kurukuru_io) |
| 499 | 529 | MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kurukuru_state, kurukuru_vdp_scanline, "screen", 0, 1) |
| 500 | 530 | |
| 501 | | MCFG_CPU_ADD("audiocpu", Z80, MAIN_CLOCK/6) |
| 531 | MCFG_CPU_ADD("audiocpu", Z80, CPU_CLOCK) |
| 502 | 532 | MCFG_CPU_PROGRAM_MAP(audio_map) |
| 503 | 533 | MCFG_CPU_IO_MAP(audio_io) |
| 504 | 534 | |
| r19704 | r19705 | |
| 523 | 553 | |
| 524 | 554 | /* sound hardware */ |
| 525 | 555 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 526 | | MCFG_SOUND_ADD("aysnd", YM2149, MAIN_CLOCK/12) |
| 527 | | MCFG_SOUND_CONFIG(ay8910_intf) |
| 556 | MCFG_SOUND_ADD("ym2149", YM2149, YM2149_CLOCK) |
| 557 | MCFG_SOUND_CONFIG(ym2149_intf) |
| 528 | 558 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 529 | 559 | |
| 530 | | MCFG_SOUND_ADD("adpcm", MSM5205, XTAL_384kHz) |
| 560 | MCFG_SOUND_ADD("adpcm", MSM5205, M5205_CLOCK) |
| 531 | 561 | MCFG_SOUND_CONFIG(msm5205_config) |
| 532 | 562 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) |
| 533 | 563 | MACHINE_CONFIG_END |