trunk/src/mame/drivers/supduck.c
| r242052 | r242053 | |
| 62 | 62 | |
| 63 | 63 | TILEMAP_MAPPER_MEMBER(supduk_tilemap_scan); |
| 64 | 64 | |
| 65 | DECLARE_WRITE8_MEMBER(okibank_w); |
| 65 | 66 | |
| 66 | 67 | protected: |
| 67 | 68 | |
| r242052 | r242053 | |
| 257 | 258 | WRITE16_MEMBER(supduck_state::supduck_4002_w) |
| 258 | 259 | { |
| 259 | 260 | data &= mem_mask; |
| 260 | | // soundlatch |
| 261 | | // printf("supduck_4002_w %04x\n", data); |
| 261 | |
| 262 | soundlatch_byte_w(space, 0, (data>>8)); |
| 263 | m_audiocpu->set_input_line(0, HOLD_LINE); |
| 264 | |
| 262 | 265 | } |
| 263 | 266 | |
| 264 | 267 | WRITE16_MEMBER(supduck_state::supduck_scroll_w) |
| r242052 | r242053 | |
| 313 | 316 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, supduck_state ) |
| 314 | 317 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 315 | 318 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 319 | AM_RANGE(0x9000, 0x9000) AM_WRITE(okibank_w) |
| 320 | AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) |
| 321 | AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r) |
| 316 | 322 | ADDRESS_MAP_END |
| 317 | 323 | |
| 324 | static ADDRESS_MAP_START( oki_map, AS_0, 8, supduck_state ) |
| 325 | AM_RANGE(0x00000, 0x1ffff) AM_ROM |
| 326 | AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") |
| 327 | ADDRESS_MAP_END |
| 318 | 328 | |
| 329 | WRITE8_MEMBER(supduck_state::okibank_w) |
| 330 | { |
| 331 | // bit 0x80 is written on startup? |
| 332 | |
| 333 | membank("okibank")->set_entry(data&0x03); |
| 334 | } |
| 335 | |
| 336 | |
| 319 | 337 | static INPUT_PORTS_START( supduck ) |
| 320 | 338 | PORT_START("P1_P2") |
| 321 | 339 | PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) |
| r242052 | r242053 | |
| 325 | 343 | PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) |
| 326 | 344 | PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) |
| 327 | 345 | PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) |
| 328 | | PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 346 | PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) |
| 329 | 347 | PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) |
| 330 | 348 | PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) |
| 331 | 349 | PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) |
| r242052 | r242053 | |
| 333 | 351 | PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) |
| 334 | 352 | PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) |
| 335 | 353 | PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) |
| 336 | | PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 354 | PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) |
| 337 | 355 | |
| 338 | 356 | PORT_START("SYSTEM") |
| 339 | 357 | PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| r242052 | r242053 | |
| 463 | 481 | |
| 464 | 482 | void supduck_state::machine_start() |
| 465 | 483 | { |
| 484 | membank("okibank")->configure_entries(0, 4, memregion("okibank")->base(), 0x20000); |
| 485 | membank("okibank")->set_entry(0); |
| 466 | 486 | } |
| 467 | 487 | |
| 468 | 488 | void supduck_state::machine_reset() |
| r242052 | r242053 | |
| 513 | 533 | |
| 514 | 534 | MCFG_OKIM6295_ADD("oki", 8000000/8, OKIM6295_PIN7_HIGH) // pin 7 not verified |
| 515 | 535 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 536 | MCFG_DEVICE_ADDRESS_MAP(AS_0, oki_map) |
| 537 | |
| 516 | 538 | MACHINE_CONFIG_END |
| 517 | 539 | |
| 518 | 540 | |