trunk/src/mame/drivers/kurukuru.c
| r19742 | r19743 | |
| 125 | 125 | will be cleared). |
| 126 | 126 | |
| 127 | 127 | |
| 128 | | DSW2 bits 5 & 6 (maybe 4 too) seems to change the YM2149 sound quality, as a |
| 129 | | side effect. Need to investigate more about... |
| 130 | | |
| 131 | | |
| 132 | 128 | ******************************************************************************* |
| 133 | 129 | |
| 134 | 130 | * How to play... |
| r19742 | r19743 | |
| 195 | 191 | |
| 196 | 192 | TODO: |
| 197 | 193 | |
| 198 | | - Hopper emulation. |
| 194 | - Out latch (Hopper emulation?). |
| 199 | 195 | - Find why the use of payout always jam. Hopper related? |
| 200 | | - Default DIP Switches, once the YM sound degrade issues were solved... |
| 201 | | (see general notes about) |
| 202 | 196 | |
| 203 | 197 | ******************************************************************************/ |
| 204 | 198 | |
| r19742 | r19743 | |
| 224 | 218 | UINT8 m_sound_irq_cause; |
| 225 | 219 | UINT8 m_adpcm_data; |
| 226 | 220 | |
| 227 | | DECLARE_WRITE8_MEMBER(kurukuru_hopper_w); |
| 221 | DECLARE_WRITE8_MEMBER(kurukuru_out_latch_w); |
| 228 | 222 | DECLARE_WRITE8_MEMBER(kurukuru_bankswitch_w); |
| 229 | 223 | DECLARE_WRITE8_MEMBER(kurukuru_soundlatch_w); |
| 230 | 224 | DECLARE_READ8_MEMBER(kurukuru_soundlatch_r); |
| r19742 | r19743 | |
| 306 | 300 | |
| 307 | 301 | // Main CPU |
| 308 | 302 | |
| 309 | | WRITE8_MEMBER(kurukuru_state::kurukuru_hopper_w) |
| 303 | WRITE8_MEMBER(kurukuru_state::kurukuru_out_latch_w) |
| 310 | 304 | { |
| 311 | | /* assume hopper related. |
| 312 | | $01 when coin 1 (jams) |
| 313 | | $20 when coin 2 |
| 314 | | $40 when payout (jams) ...check |
| 315 | | */ |
| 305 | /* |
| 306 | 00-0f is output latch (controls jamma output pins) |
| 307 | |
| 308 | assume hopper related: |
| 309 | $01 when coin 1 |
| 310 | $20 when coin 2 |
| 311 | $40 when payout (jams) ...to check |
| 312 | |
| 313 | */ |
| 316 | 314 | if (data) |
| 317 | | logerror("kurukuru_hopper_w %02X @ %04X\n", data, space.device().safe_pc()); |
| 315 | logerror("kurukuru_out_latch_w %02X @ %04X\n", data, space.device().safe_pc()); |
| 318 | 316 | } |
| 319 | 317 | |
| 320 | 318 | WRITE8_MEMBER(kurukuru_state::kurukuru_bankswitch_w) |
| r19742 | r19743 | |
| 332 | 330 | |
| 333 | 331 | |
| 334 | 332 | static ADDRESS_MAP_START( kurukuru_map, AS_PROGRAM, 8, kurukuru_state ) |
| 335 | | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 333 | AM_RANGE(0x0000, 0x5fff) AM_ROM |
| 336 | 334 | AM_RANGE(0x6000, 0xdfff) AM_ROMBANK("bank1") |
| 337 | 335 | AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") |
| 338 | 336 | ADDRESS_MAP_END |
| 339 | 337 | |
| 340 | 338 | static ADDRESS_MAP_START( kurukuru_io, AS_IO, 8, kurukuru_state ) |
| 341 | 339 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 342 | | AM_RANGE(0x00, 0x00) AM_WRITE(kurukuru_hopper_w) |
| 343 | | AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW1") |
| 344 | | AM_RANGE(0x20, 0x20) AM_WRITE(kurukuru_soundlatch_w) |
| 340 | AM_RANGE(0x00, 0x00) AM_MIRROR(0x0f) AM_WRITE(kurukuru_out_latch_w) |
| 341 | AM_RANGE(0x10, 0x10) AM_MIRROR(0x0f) AM_READ_PORT("DSW1") |
| 342 | AM_RANGE(0x20, 0x20) AM_MIRROR(0x0f) AM_WRITE(kurukuru_soundlatch_w) |
| 345 | 343 | AM_RANGE(0x80, 0x83) AM_DEVREADWRITE( "v9938", v9938_device, read, write ) |
| 346 | 344 | AM_RANGE(0x90, 0x90) AM_WRITE(kurukuru_bankswitch_w) |
| 347 | | AM_RANGE(0xa0, 0xa0) AM_READ_PORT("IN0") |
| 348 | | AM_RANGE(0xb0, 0xb0) AM_READ_PORT("IN1") |
| 349 | | AM_RANGE(0xc0, 0xc0) AM_DEVWRITE_LEGACY("ym2149", ay8910_address_w) |
| 350 | | AM_RANGE(0xc8, 0xc8) AM_DEVREAD_LEGACY("ym2149", ay8910_r) |
| 351 | | AM_RANGE(0xd0, 0xd0) AM_DEVWRITE_LEGACY("ym2149", ay8910_data_w) |
| 345 | AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0f) AM_READ_PORT("IN0") // need mirror confirmation |
| 346 | AM_RANGE(0xb0, 0xb0) AM_MIRROR(0x0f) AM_READ_PORT("IN1") |
| 347 | AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x0f) AM_DEVREADWRITE_LEGACY("ym2149", ay8910_r, ay8910_address_w) |
| 348 | AM_RANGE(0xd0, 0xd0) AM_MIRROR(0x0f) AM_DEVWRITE_LEGACY("ym2149", ay8910_data_w) |
| 352 | 349 | ADDRESS_MAP_END |
| 353 | 350 | |
| 354 | 351 | |
| 355 | | |
| 356 | 352 | // Audio CPU |
| 357 | 353 | |
| 358 | 354 | WRITE8_MEMBER(kurukuru_state::kurukuru_adpcm_data_w) |
| 359 | 355 | { |
| 356 | /* |
| 357 | 6-bit latch. only 4 connected... |
| 358 | bit 0-3 = MSM5205 data. |
| 359 | */ |
| 360 | 360 | m_adpcm_data = data & 0xf; |
| 361 | 361 | } |
| 362 | 362 | |
| r19742 | r19743 | |
| 364 | 364 | { |
| 365 | 365 | device_t *device = machine().device("adpcm"); |
| 366 | 366 | /* |
| 367 | | bit 0 = RESET |
| 368 | | bit 1 = 4B/3B |
| 369 | | bit 2 = S2 |
| 370 | | bit 3 = S1 |
| 367 | 6-bit latch. only 4 connected... |
| 368 | bit 0 = RESET |
| 369 | bit 1 = 4B/3B |
| 370 | bit 2 = S2 |
| 371 | bit 3 = S1 |
| 371 | 372 | */ |
| 372 | 373 | msm5205_playmode_w(device, BITSWAP8((data>>1), 7,6,5,4,3,0,1,2)); |
| 373 | 374 | msm5205_reset_w(device, data & 1); |