trunk/src/mame/drivers/galpani3.c
| r31859 | r31860 | |
| 74 | 74 | public: |
| 75 | 75 | galpani3_state(const machine_config &mconfig, device_type type, const char *tag) |
| 76 | 76 | : driver_device(mconfig, type, tag), |
| 77 | | m_spriteram(*this, "spriteram"), |
| 78 | | m_priority_buffer(*this, "priority_buffer"), |
| 79 | | m_sprregs(*this, "sprregs"), |
| 80 | | m_sprite_bitmap_1(1024, 1024), |
| 81 | 77 | m_maincpu(*this,"maincpu"), |
| 82 | 78 | m_grap2_0(*this,"grap2_0"), |
| 83 | 79 | m_grap2_1(*this,"grap2_1"), |
| 84 | 80 | m_grap2_2(*this,"grap2_2"), |
| 85 | 81 | m_palette(*this, "palette"), |
| 86 | | m_paletteram(*this, "palette") |
| 82 | m_spritegen(*this, "spritegen"), |
| 83 | m_paletteram(*this, "palette"), |
| 84 | m_spriteram(*this, "spriteram"), |
| 85 | m_priority_buffer(*this, "priority_buffer"), |
| 86 | m_sprregs(*this, "sprregs"), |
| 87 | m_sprite_bitmap_1(1024, 1024) |
| 88 | |
| 87 | 89 | { } |
| 88 | 90 | |
| 89 | | optional_shared_ptr<UINT16> m_spriteram; |
| 90 | | required_shared_ptr<UINT16> m_priority_buffer; |
| 91 | | required_shared_ptr<UINT16> m_sprregs; |
| 92 | | bitmap_ind16 m_sprite_bitmap_1; |
| 93 | 91 | required_device<cpu_device> m_maincpu; |
| 94 | 92 | required_device<kaneko_grap2_device> m_grap2_0; |
| 95 | 93 | required_device<kaneko_grap2_device> m_grap2_1; |
| 96 | 94 | required_device<kaneko_grap2_device> m_grap2_2; |
| 97 | 95 | required_device<palette_device> m_palette; |
| 96 | required_device<sknsspr_device> m_spritegen; |
| 97 | |
| 98 | 98 | required_shared_ptr<UINT16> m_paletteram; |
| 99 | optional_shared_ptr<UINT16> m_spriteram; |
| 100 | required_shared_ptr<UINT16> m_priority_buffer; |
| 101 | required_shared_ptr<UINT16> m_sprregs; |
| 99 | 102 | |
| 103 | bitmap_ind16 m_sprite_bitmap_1; |
| 104 | |
| 100 | 105 | UINT16 m_priority_buffer_scrollx; |
| 101 | 106 | UINT16 m_priority_buffer_scrolly; |
| 102 | 107 | |
| 103 | 108 | UINT32 m_spriteram32[0x4000/4]; |
| 104 | 109 | UINT32 m_spc_regs[0x40/4]; |
| 105 | 110 | |
| 106 | | sknsspr_device* m_spritegen; |
| 107 | 111 | DECLARE_WRITE16_MEMBER(galpani3_suprnova_sprite32_w); |
| 108 | 112 | DECLARE_WRITE16_MEMBER(galpani3_suprnova_sprite32regs_w); |
| 109 | 113 | |
| r31859 | r31860 | |
| 147 | 151 | void galpani3_state::video_start() |
| 148 | 152 | { |
| 149 | 153 | /* so we can use suprnova.c */ |
| 150 | | |
| 151 | | m_spritegen = machine().device<sknsspr_device>("spritegen"); |
| 152 | 154 | m_spritegen->skns_sprite_kludge(0,0); |
| 153 | 155 | } |
| 154 | 156 | |
| r31859 | r31860 | |
| 465 | 467 | AM_RANGE(0x300000, 0x303fff) AM_RAM_WRITE(galpani3_suprnova_sprite32_w) AM_SHARE("spriteram") |
| 466 | 468 | AM_RANGE(0x380000, 0x38003f) AM_RAM_WRITE(galpani3_suprnova_sprite32regs_w) AM_SHARE("sprregs") |
| 467 | 469 | |
| 468 | | AM_RANGE(0x400000, 0x40ffff) AM_DEVREADWRITE( "toybox", kaneko_toybox_device, toybox_mcu_ram_r, toybox_mcu_ram_w ) // area [C] |
| 470 | AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("mcuram") // area [C] |
| 469 | 471 | |
| 470 | | AM_RANGE(0x580000, 0x580001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com0_w) |
| 471 | | AM_RANGE(0x600000, 0x600001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com1_w) |
| 472 | | AM_RANGE(0x680000, 0x680001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com2_w) |
| 473 | | AM_RANGE(0x700000, 0x700001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com3_w) |
| 474 | | AM_RANGE(0x780000, 0x780001) AM_DEVREAD( "toybox", kaneko_toybox_device, toybox_mcu_status_r) |
| 472 | AM_RANGE(0x580000, 0x580001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w) |
| 473 | AM_RANGE(0x600000, 0x600001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w) |
| 474 | AM_RANGE(0x680000, 0x680001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w) |
| 475 | AM_RANGE(0x700000, 0x700001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w) |
| 476 | AM_RANGE(0x780000, 0x780001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r) |
| 475 | 477 | |
| 476 | 478 | GRAP2_AREA( 0x800000, "grap2_0" ) |
| 477 | 479 | GRAP2_AREA( 0xa00000, "grap2_1" ) |
trunk/src/mame/drivers/kaneko16.c
| r31859 | r31860 | |
| 421 | 421 | static ADDRESS_MAP_START( bloodwar, AS_PROGRAM, 16, kaneko16_gtmr_state ) |
| 422 | 422 | AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM |
| 423 | 423 | AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM |
| 424 | | AM_RANGE(0x200000, 0x20ffff) AM_DEVREADWRITE( "toybox", kaneko_toybox_device, toybox_mcu_ram_r, toybox_mcu_ram_w ) |
| 425 | | AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com0_w) // To MCU ? |
| 426 | | AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com1_w) |
| 427 | | AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com2_w) |
| 428 | | AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com3_w) |
| 424 | AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("mcuram") |
| 425 | AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w) // To MCU ? |
| 426 | AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w) |
| 427 | AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w) |
| 428 | AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w) |
| 429 | 429 | AM_RANGE(0x300000, 0x30ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette |
| 430 | 430 | AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites |
| 431 | 431 | AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) |
| r31859 | r31860 | |
| 443 | 443 | AM_RANGE(0xb00006, 0xb00007) AM_READ_PORT("EXTRA") |
| 444 | 444 | AM_RANGE(0xb80000, 0xb80001) AM_WRITE(bloodwar_coin_lockout_w) // Coin Lockout |
| 445 | 445 | AM_RANGE(0xc00000, 0xc00001) AM_WRITE(kaneko16_display_enable) |
| 446 | | AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD( "toybox", kaneko_toybox_device, toybox_mcu_status_r) |
| 446 | AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r) |
| 447 | 447 | AM_RANGE(0xe00000, 0xe00001) AM_WRITE(bloodwar_oki_0_bank_w) |
| 448 | 448 | AM_RANGE(0xe80000, 0xe80001) AM_WRITE(bloodwar_oki_1_bank_w) |
| 449 | 449 | ADDRESS_MAP_END |
| r31859 | r31860 | |
| 475 | 475 | static ADDRESS_MAP_START( bonkadv, AS_PROGRAM, 16, kaneko16_gtmr_state ) |
| 476 | 476 | AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM |
| 477 | 477 | AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM |
| 478 | | AM_RANGE(0x200000, 0x20ffff) AM_DEVREADWRITE( "toybox", kaneko_toybox_device, toybox_mcu_ram_r, toybox_mcu_ram_w ) // Shared With MCU |
| 479 | | AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com0_w) // To MCU ? |
| 480 | | AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com1_w) |
| 481 | | AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com2_w) |
| 482 | | AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com3_w) |
| 478 | AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("mcuram") // Shared With MCU |
| 479 | AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w) // To MCU ? |
| 480 | AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w) |
| 481 | AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w) |
| 482 | AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w) |
| 483 | 483 | AM_RANGE(0x300000, 0x30ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette |
| 484 | 484 | AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") // Sprites |
| 485 | 485 | AM_RANGE(0x500000, 0x503fff) AM_DEVREADWRITE("view2_0", kaneko_view2_tilemap_device, kaneko_tmap_vram_r, kaneko_tmap_vram_w ) |
| r31859 | r31860 | |
| 497 | 497 | AM_RANGE(0xb00006, 0xb00007) AM_READ_PORT("UNK") |
| 498 | 498 | AM_RANGE(0xb80000, 0xb80001) AM_WRITE(bloodwar_coin_lockout_w) // Coin Lockout |
| 499 | 499 | AM_RANGE(0xc00000, 0xc00001) AM_WRITE(kaneko16_display_enable) |
| 500 | | AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD( "toybox", kaneko_toybox_device, toybox_mcu_status_r) |
| 500 | AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r) |
| 501 | 501 | AM_RANGE(0xe00000, 0xe00001) AM_WRITE(bonkadv_oki_0_bank_w) |
| 502 | 502 | AM_RANGE(0xe80000, 0xe80001) AM_WRITE(bonkadv_oki_1_bank_w) |
| 503 | 503 | ADDRESS_MAP_END |
| r31859 | r31860 | |
| 545 | 545 | AM_RANGE(0x0ffffe, 0x0fffff) AM_READ(gtmr_wheel_r) // Wheel Value |
| 546 | 546 | |
| 547 | 547 | AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM |
| 548 | | AM_RANGE(0x200000, 0x20ffff) AM_DEVREADWRITE( "toybox", kaneko_toybox_device, toybox_mcu_ram_r, toybox_mcu_ram_w ) // Shared With MCU |
| 548 | AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("mcuram") // Shared With MCU |
| 549 | 549 | |
| 550 | | AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com0_w) // To MCU ? |
| 551 | | AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com1_w) |
| 552 | | AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com2_w) |
| 553 | | AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com3_w) |
| 550 | AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w) // To MCU ? |
| 551 | AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w) |
| 552 | AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w) |
| 553 | AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w) |
| 554 | 554 | |
| 555 | 555 | AM_RANGE(0x300000, 0x30ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette |
| 556 | 556 | AM_RANGE(0x310000, 0x327fff) AM_RAM // |
| r31859 | r31860 | |
| 577 | 577 | AM_RANGE(0xb80000, 0xb80001) AM_WRITE(kaneko16_coin_lockout_w) // Coin Lockout |
| 578 | 578 | AM_RANGE(0xc00000, 0xc00001) AM_WRITE(kaneko16_display_enable) // might do more than that |
| 579 | 579 | |
| 580 | | AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD( "toybox", kaneko_toybox_device, toybox_mcu_status_r) |
| 580 | AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r) |
| 581 | 581 | |
| 582 | 582 | AM_RANGE(0xe00000, 0xe00001) AM_WRITE(gtmr_oki_0_bank_w) // Samples Bankswitching |
| 583 | 583 | AM_RANGE(0xe80000, 0xe80001) AM_WRITE(gtmr_oki_1_bank_w) |
| r31859 | r31860 | |
| 614 | 614 | AM_RANGE(0x0ffffe, 0x0fffff) AM_READ(gtmr2_wheel_r) // Wheel Value |
| 615 | 615 | |
| 616 | 616 | AM_RANGE(0x100000, 0x10ffff) AM_RAM // Work RAM |
| 617 | | AM_RANGE(0x200000, 0x20ffff) AM_DEVREADWRITE( "toybox", kaneko_toybox_device, toybox_mcu_ram_r, toybox_mcu_ram_w ) // Shared With MCU |
| 617 | AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("mcuram") // Shared With MCU |
| 618 | 618 | |
| 619 | | AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com0_w) // To MCU ? |
| 620 | | AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com1_w) |
| 621 | | AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com2_w) |
| 622 | | AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com3_w) |
| 619 | AM_RANGE(0x2a0000, 0x2a0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w) // To MCU ? |
| 620 | AM_RANGE(0x2b0000, 0x2b0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w) |
| 621 | AM_RANGE(0x2c0000, 0x2c0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w) |
| 622 | AM_RANGE(0x2d0000, 0x2d0001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w) |
| 623 | 623 | |
| 624 | 624 | AM_RANGE(0x300000, 0x30ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette |
| 625 | 625 | AM_RANGE(0x310000, 0x327fff) AM_RAM // |
| r31859 | r31860 | |
| 645 | 645 | AM_RANGE(0xb80000, 0xb80001) AM_WRITE(kaneko16_coin_lockout_w) // Coin Lockout |
| 646 | 646 | AM_RANGE(0xc00000, 0xc00001) AM_WRITE(kaneko16_display_enable) // might do more than that |
| 647 | 647 | |
| 648 | | AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD( "toybox", kaneko_toybox_device, toybox_mcu_status_r) |
| 648 | AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r) |
| 649 | 649 | |
| 650 | 650 | AM_RANGE(0xe00000, 0xe00001) AM_WRITE(gtmr_oki_0_bank_w) // Samples Bankswitching |
| 651 | 651 | AM_RANGE(0xe80000, 0xe80001) AM_WRITE(gtmr_oki_1_bank_w) |
| r31859 | r31860 | |
| 1907 | 1907 | MCFG_KANEKO16_SPRITE_GFXDECODE("gfxdecode") |
| 1908 | 1908 | |
| 1909 | 1909 | MCFG_DEVICE_ADD("toybox", KANEKO_TOYBOX, 0) |
| 1910 | | kaneko_toybox_device::set_toybox_table(*device, TABLE_NORMAL); |
| 1911 | | kaneko_toybox_device::set_toybox_gametype(*device, GAME_NORMAL); |
| 1912 | 1910 | /* part of the toybox? */ |
| 1913 | 1911 | MCFG_DEVICE_ADD("kan_hit", KANEKO_HIT, 0) |
| 1914 | 1912 | kaneko_hit_device::set_type(*device, 1); |
| r31859 | r31860 | |
| 1928 | 1926 | |
| 1929 | 1927 | static MACHINE_CONFIG_DERIVED( gtmre, gtmr ) |
| 1930 | 1928 | MCFG_DEVICE_MODIFY("toybox") |
| 1931 | | kaneko_toybox_device::set_toybox_table(*device, TABLE_ALT); |
| 1929 | MCFG_TOYBOX_TABLE_TYPE(TABLE_ALT) |
| 1932 | 1930 | MACHINE_CONFIG_END |
| 1933 | 1931 | |
| 1934 | 1932 | /*************************************************************************** |
| r31859 | r31860 | |
| 1980 | 1978 | |
| 1981 | 1979 | |
| 1982 | 1980 | MCFG_DEVICE_MODIFY("toybox") |
| 1983 | | kaneko_toybox_device::set_toybox_gametype(*device, GAME_BONK); |
| 1981 | MCFG_TOYBOX_GAME_TYPE(GAME_BONK) |
| 1984 | 1982 | MCFG_DEVICE_MODIFY("kan_hit") |
| 1985 | 1983 | kaneko_hit_device::set_type(*device, 0); |
| 1986 | 1984 | |
trunk/src/mame/drivers/jchan.c
| r31859 | r31860 | |
| 181 | 181 | public: |
| 182 | 182 | jchan_state(const machine_config &mconfig, device_type type, const char *tag) |
| 183 | 183 | : driver_device(mconfig, type, tag), |
| 184 | m_maincpu(*this,"maincpu"), |
| 185 | m_subcpu(*this,"sub"), |
| 186 | m_palette(*this, "palette"), |
| 187 | m_spritegen1(*this, "spritegen1"), |
| 188 | m_spritegen2(*this, "spritegen2"), |
| 184 | 189 | m_view2_0(*this, "view2_0"), |
| 185 | 190 | m_spriteram_1(*this, "spriteram_1"), |
| 186 | 191 | m_sprregs_1(*this, "sprregs_1"), |
| 187 | 192 | m_spriteram_2(*this, "spriteram_2"), |
| 188 | 193 | m_sprregs_2(*this, "sprregs_2"), |
| 189 | 194 | m_mainsub_shared_ram(*this, "mainsub_shared"), |
| 190 | | m_ctrl(*this, "ctrl"), |
| 191 | | m_maincpu(*this,"maincpu"), |
| 192 | | m_subcpu(*this,"sub"), |
| 193 | | m_palette(*this, "palette") |
| 195 | m_ctrl(*this, "ctrl") |
| 194 | 196 | { } |
| 195 | 197 | |
| 196 | | optional_device<kaneko_view2_tilemap_device> m_view2_0; |
| 198 | required_device<cpu_device> m_maincpu; |
| 199 | required_device<cpu_device> m_subcpu; |
| 200 | required_device<palette_device> m_palette; |
| 201 | required_device<sknsspr_device> m_spritegen1; |
| 202 | required_device<sknsspr_device> m_spritegen2; |
| 203 | required_device<kaneko_view2_tilemap_device> m_view2_0; |
| 204 | |
| 205 | required_shared_ptr<UINT16> m_spriteram_1; |
| 206 | required_shared_ptr<UINT16> m_sprregs_1; |
| 207 | required_shared_ptr<UINT16> m_spriteram_2; |
| 208 | required_shared_ptr<UINT16> m_sprregs_2; |
| 209 | required_shared_ptr<UINT16> m_mainsub_shared_ram; |
| 210 | required_shared_ptr<UINT16> m_ctrl; |
| 211 | |
| 197 | 212 | bitmap_ind16 *m_sprite_bitmap_1; |
| 198 | 213 | bitmap_ind16 *m_sprite_bitmap_2; |
| 199 | 214 | UINT32* m_sprite_ram32_1; |
| r31859 | r31860 | |
| 201 | 216 | UINT32* m_sprite_regs32_1; |
| 202 | 217 | UINT32* m_sprite_regs32_2; |
| 203 | 218 | int m_irq_sub_enable; |
| 204 | | required_shared_ptr<UINT16> m_spriteram_1; |
| 205 | | required_shared_ptr<UINT16> m_sprregs_1; |
| 206 | | required_shared_ptr<UINT16> m_spriteram_2; |
| 207 | | required_shared_ptr<UINT16> m_sprregs_2; |
| 208 | | required_shared_ptr<UINT16> m_mainsub_shared_ram; |
| 209 | | required_shared_ptr<UINT16> m_ctrl; |
| 210 | 219 | |
| 211 | | required_device<cpu_device> m_maincpu; |
| 212 | | required_device<cpu_device> m_subcpu; |
| 213 | | required_device<palette_device> m_palette; |
| 214 | | sknsspr_device* m_spritegen1; |
| 215 | | sknsspr_device* m_spritegen2; |
| 216 | | |
| 217 | | |
| 218 | 220 | DECLARE_WRITE16_MEMBER(jchan_ctrl_w); |
| 219 | 221 | DECLARE_READ16_MEMBER(jchan_ctrl_r); |
| 220 | 222 | DECLARE_WRITE16_MEMBER(main2sub_cmd_w); |
| r31859 | r31860 | |
| 284 | 286 | m_sprite_bitmap_1 = auto_bitmap_ind16_alloc(machine(),1024,1024); |
| 285 | 287 | m_sprite_bitmap_2 = auto_bitmap_ind16_alloc(machine(),1024,1024); |
| 286 | 288 | |
| 287 | | m_spritegen1 = machine().device<sknsspr_device>("spritegen1"); |
| 288 | | m_spritegen2 = machine().device<sknsspr_device>("spritegen2"); |
| 289 | | |
| 290 | | |
| 291 | 289 | m_spritegen1->skns_sprite_kludge(0,0); |
| 292 | 290 | m_spritegen2->skns_sprite_kludge(0,0); |
| 293 | 291 | } |
| r31859 | r31860 | |
| 435 | 433 | AM_RANGE(0x000000, 0x1fffff) AM_ROM |
| 436 | 434 | AM_RANGE(0x200000, 0x20ffff) AM_RAM // Work RAM - [A] grid tested, cleared ($9d6-$a54) |
| 437 | 435 | |
| 438 | | AM_RANGE(0x300000, 0x30ffff) AM_DEVREADWRITE( "toybox", kaneko_toybox_device, toybox_mcu_ram_r, toybox_mcu_ram_w )// [G] MCU share |
| 439 | | AM_RANGE(0x330000, 0x330001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com0_w) |
| 440 | | AM_RANGE(0x340000, 0x340001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com1_w) |
| 441 | | AM_RANGE(0x350000, 0x350001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com2_w) |
| 442 | | AM_RANGE(0x360000, 0x360001) AM_DEVWRITE( "toybox", kaneko_toybox_device, toybox_mcu_com3_w) |
| 443 | | AM_RANGE(0x370000, 0x370001) AM_DEVREAD( "toybox", kaneko_toybox_device, toybox_mcu_status_r) |
| 436 | AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("mcuram") // [G] MCU share |
| 437 | AM_RANGE(0x330000, 0x330001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com0_w) |
| 438 | AM_RANGE(0x340000, 0x340001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com1_w) |
| 439 | AM_RANGE(0x350000, 0x350001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com2_w) |
| 440 | AM_RANGE(0x360000, 0x360001) AM_DEVWRITE( "toybox", kaneko_toybox_device, mcu_com3_w) |
| 441 | AM_RANGE(0x370000, 0x370001) AM_DEVREAD( "toybox", kaneko_toybox_device, mcu_status_r) |
| 444 | 442 | |
| 445 | 443 | AM_RANGE(0x400000, 0x403fff) AM_RAM AM_SHARE("mainsub_shared") |
| 446 | 444 | |
trunk/src/mame/machine/kaneko_toybox.c
| r31859 | r31860 | |
| 52 | 52 | const device_type KANEKO_TOYBOX = &device_creator<kaneko_toybox_device>; |
| 53 | 53 | |
| 54 | 54 | kaneko_toybox_device::kaneko_toybox_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 55 | | : device_t(mconfig, KANEKO_TOYBOX, "Kaneko Toybox MCU", tag, owner, clock, "kaneko_toybox", __FILE__) |
| 55 | : device_t(mconfig, KANEKO_TOYBOX, "Kaneko Toybox MCU", tag, owner, clock, "kaneko_toybox", __FILE__), |
| 56 | m_mcuram(*this, ":mcuram"), |
| 57 | m_gametype(GAME_NORMAL), |
| 58 | m_tabletype(TABLE_NORMAL) |
| 56 | 59 | { |
| 57 | | m_tabletype = TABLE_NORMAL; |
| 58 | | m_gametype = GAME_NORMAL; |
| 60 | m_mcu_com[0] = m_mcu_com[1] = m_mcu_com[2] = m_mcu_com[3] = 0; |
| 59 | 61 | } |
| 60 | 62 | |
| 61 | | void kaneko_toybox_device::set_toybox_table(device_t &device, int tabletype) |
| 63 | void kaneko_toybox_device::set_table(device_t &device, int tabletype) |
| 62 | 64 | { |
| 63 | 65 | kaneko_toybox_device &dev = downcast<kaneko_toybox_device &>(device); |
| 64 | 66 | dev.m_tabletype = tabletype; |
| 65 | 67 | } |
| 66 | 68 | |
| 67 | | void kaneko_toybox_device::set_toybox_gametype(device_t &device, int gametype) |
| 69 | void kaneko_toybox_device::set_game_type(device_t &device, int gametype) |
| 68 | 70 | { |
| 69 | 71 | kaneko_toybox_device &dev = downcast<kaneko_toybox_device &>(device); |
| 70 | 72 | dev.m_gametype = gametype; |
| 71 | 73 | } |
| 72 | 74 | |
| 73 | | |
| 74 | 75 | void kaneko_toybox_device::device_start() |
| 75 | 76 | { |
| 76 | | m_toybox_mcuram = (UINT16*)auto_alloc_array_clear(this->machine(), UINT16, 0x10000/2); |
| 77 | | memset(m_toybox_mcu_com, 0, 4 * sizeof( UINT16) ); |
| 78 | | toxboy_decrypt_rom(this->machine()); |
| 77 | memset(m_mcu_com, 0, 4 * sizeof( UINT16) ); |
| 78 | decrypt_rom(); |
| 79 | 79 | |
| 80 | | |
| 81 | | save_pointer(NAME(m_toybox_mcuram), 0x10000/2); |
| 82 | | save_item(NAME(m_toybox_mcu_com[0])); |
| 83 | | save_item(NAME(m_toybox_mcu_com[1])); |
| 84 | | save_item(NAME(m_toybox_mcu_com[2])); |
| 85 | | save_item(NAME(m_toybox_mcu_com[3])); |
| 86 | | |
| 80 | save_item(NAME(m_mcu_com)); |
| 87 | 81 | } |
| 88 | 82 | |
| 89 | 83 | void kaneko_toybox_device::device_reset() |
| 90 | 84 | { |
| 91 | | toybox_mcu_init(this->machine()); |
| 85 | mcu_init(); |
| 92 | 86 | } |
| 93 | 87 | |
| 94 | 88 | |
| 95 | | READ16_MEMBER(kaneko_toybox_device::toybox_mcu_ram_r) |
| 96 | | { |
| 97 | | return m_toybox_mcuram[offset]; |
| 98 | | } |
| 89 | #define MCU_RESPONSE(d) memcpy(&m_mcuram[mcu_offset], d, sizeof(d)) |
| 99 | 90 | |
| 100 | 91 | |
| 101 | | WRITE16_MEMBER(kaneko_toybox_device::toybox_mcu_ram_w) |
| 102 | | { |
| 103 | | COMBINE_DATA(&m_toybox_mcuram[offset]); |
| 104 | | } |
| 105 | | |
| 106 | | |
| 107 | | |
| 108 | | #define MCU_RESPONSE(d) memcpy(&m_toybox_mcuram[mcu_offset], d, sizeof(d)) |
| 109 | | |
| 110 | | |
| 111 | | |
| 112 | 92 | // I use a byteswapped MCU data rom to make the transfers to the 68k side easier |
| 113 | 93 | // not sure if it's all 100% endian safe |
| 114 | | void kaneko_toybox_device::toxboy_decrypt_rom(running_machine& machine) |
| 94 | void kaneko_toybox_device::decrypt_rom() |
| 115 | 95 | { |
| 116 | | UINT8 *src = (UINT8 *)machine.root_device().memregion(":mcudata" )->base(); |
| 96 | UINT8 *src = (UINT8 *)machine().root_device().memregion(":mcudata")->base(); |
| 117 | 97 | |
| 118 | 98 | int i; |
| 119 | 99 | |
| 120 | 100 | for (i=0;i<0x020000;i++) |
| 121 | 101 | { |
| 122 | | if (m_tabletype == TABLE_NORMAL) src[i] = src[i] + toybox_mcu_decryption_table[(i^1)&0xff]; |
| 123 | | else src[i] = src[i] + toybox_mcu_decryption_table_alt[(i^1)&0xff]; |
| 102 | if (m_tabletype == TABLE_NORMAL) src[i] = src[i] + decryption_table[(i^1)&0xff]; |
| 103 | else src[i] = src[i] + decryption_table_alt[(i^1)&0xff]; |
| 124 | 104 | } |
| 125 | | |
| 126 | | |
| 127 | 105 | } |
| 128 | 106 | |
| 129 | 107 | |
| 130 | 108 | |
| 131 | | void kaneko_toybox_device::toxboy_handle_04_subcommand(running_machine& machine,UINT8 mcu_subcmd, UINT16*mcu_ram) |
| 109 | void kaneko_toybox_device::handle_04_subcommand(UINT8 mcu_subcmd, UINT16 *mcu_ram) |
| 132 | 110 | { |
| 133 | | UINT8 *src = (UINT8 *)machine.root_device().memregion(":mcudata")->base()+0x10000; |
| 111 | UINT8 *src = (UINT8 *)machine().root_device().memregion(":mcudata")->base()+0x10000; |
| 134 | 112 | UINT8* dst = (UINT8 *)mcu_ram; |
| 135 | 113 | |
| 136 | 114 | int offs = (mcu_subcmd&0x3f)*8; |
| r31859 | r31860 | |
| 151 | 129 | } |
| 152 | 130 | |
| 153 | 131 | |
| 154 | | void kaneko_toybox_device::toybox_mcu_init(running_machine &machine) |
| 132 | void kaneko_toybox_device::mcu_init() |
| 155 | 133 | { |
| 156 | | memset(m_toybox_mcu_com, 0, 4 * sizeof( UINT16) ); |
| 134 | memset(m_mcu_com, 0, 4 * sizeof( UINT16) ); |
| 157 | 135 | } |
| 158 | 136 | |
| 159 | | void kaneko_toybox_device::toybox_mcu_com_w(offs_t offset, UINT16 data, UINT16 mem_mask, int _n_) |
| 137 | void kaneko_toybox_device::mcu_com_w(offs_t offset, UINT16 data, UINT16 mem_mask, int _n_) |
| 160 | 138 | { |
| 161 | | COMBINE_DATA(&m_toybox_mcu_com[_n_]); |
| 162 | | if (m_toybox_mcu_com[0] != 0xFFFF) return; |
| 163 | | if (m_toybox_mcu_com[1] != 0xFFFF) return; |
| 164 | | if (m_toybox_mcu_com[2] != 0xFFFF) return; |
| 165 | | if (m_toybox_mcu_com[3] != 0xFFFF) return; |
| 139 | COMBINE_DATA(&m_mcu_com[_n_]); |
| 140 | if (m_mcu_com[0] != 0xFFFF) return; |
| 141 | if (m_mcu_com[1] != 0xFFFF) return; |
| 142 | if (m_mcu_com[2] != 0xFFFF) return; |
| 143 | if (m_mcu_com[3] != 0xFFFF) return; |
| 166 | 144 | |
| 167 | | memset(m_toybox_mcu_com, 0, 4 * sizeof( UINT16 ) ); |
| 168 | | toybox_mcu_run(machine()); |
| 145 | memset(m_mcu_com, 0, 4 * sizeof( UINT16 ) ); |
| 146 | mcu_run(); |
| 169 | 147 | } |
| 170 | 148 | |
| 171 | | WRITE16_MEMBER(kaneko_toybox_device::toybox_mcu_com0_w){ toybox_mcu_com_w(offset, data, mem_mask, 0); } |
| 172 | | WRITE16_MEMBER(kaneko_toybox_device::toybox_mcu_com1_w){ toybox_mcu_com_w(offset, data, mem_mask, 1); } |
| 173 | | WRITE16_MEMBER(kaneko_toybox_device::toybox_mcu_com2_w){ toybox_mcu_com_w(offset, data, mem_mask, 2); } |
| 174 | | WRITE16_MEMBER(kaneko_toybox_device::toybox_mcu_com3_w){ toybox_mcu_com_w(offset, data, mem_mask, 3); } |
| 149 | WRITE16_MEMBER(kaneko_toybox_device::mcu_com0_w){ mcu_com_w(offset, data, mem_mask, 0); } |
| 150 | WRITE16_MEMBER(kaneko_toybox_device::mcu_com1_w){ mcu_com_w(offset, data, mem_mask, 1); } |
| 151 | WRITE16_MEMBER(kaneko_toybox_device::mcu_com2_w){ mcu_com_w(offset, data, mem_mask, 2); } |
| 152 | WRITE16_MEMBER(kaneko_toybox_device::mcu_com3_w){ mcu_com_w(offset, data, mem_mask, 3); } |
| 175 | 153 | |
| 176 | 154 | /* |
| 177 | 155 | bonkadv and bloodwar test bit 0 |
| 178 | 156 | */ |
| 179 | | READ16_MEMBER(kaneko_toybox_device::toybox_mcu_status_r) |
| 157 | READ16_MEMBER(kaneko_toybox_device::mcu_status_r) |
| 180 | 158 | { |
| 181 | 159 | logerror("CPU %s (PC=%06X) : read MCU status\n", space.device().tag(), space.device().safe_pcbase()); |
| 182 | 160 | return 0; // most games test bit 0 for failure |
| r31859 | r31860 | |
| 184 | 162 | |
| 185 | 163 | |
| 186 | 164 | |
| 187 | | void kaneko_toybox_device::toybox_mcu_run(running_machine &machine) |
| 165 | void kaneko_toybox_device::mcu_run() |
| 188 | 166 | { |
| 189 | | UINT16 *kaneko16_mcu_ram = m_toybox_mcuram; |
| 190 | | UINT16 mcu_command = kaneko16_mcu_ram[0x0010/2]; |
| 191 | | UINT16 mcu_offset = kaneko16_mcu_ram[0x0012/2] / 2; |
| 192 | | UINT16 mcu_data = kaneko16_mcu_ram[0x0014/2]; |
| 167 | UINT16 mcu_command = m_mcuram[0x0010/2]; |
| 168 | UINT16 mcu_offset = m_mcuram[0x0012/2] / 2; |
| 169 | UINT16 mcu_data = m_mcuram[0x0014/2]; |
| 193 | 170 | |
| 194 | 171 | //printf("command %04x\n",mcu_command); |
| 195 | 172 | |
| r31859 | r31860 | |
| 197 | 174 | { |
| 198 | 175 | case 0x02: // Read from NVRAM |
| 199 | 176 | { |
| 200 | | UINT8* nvdat = (UINT8*)&kaneko16_mcu_ram[mcu_offset]; |
| 177 | UINT8* nvdat = (UINT8*)&m_mcuram[mcu_offset]; |
| 201 | 178 | |
| 202 | | address_space &eeprom_space = machine.device<eeprom_serial_93cxx_device>(":eeprom")->space(); |
| 179 | address_space &eeprom_space = machine().device<eeprom_serial_93cxx_device>(":eeprom")->space(); |
| 203 | 180 | |
| 204 | 181 | for (int i=0;i<0x80;i++) |
| 205 | 182 | { |
| 206 | 183 | nvdat[i] = eeprom_space.read_byte(i); |
| 207 | 184 | } |
| 208 | 185 | |
| 209 | | logerror("%s : MCU executed command: %04X %04X (load NVRAM settings)\n", machine.describe_context(), mcu_command, mcu_offset*2); |
| 186 | logerror("%s : MCU executed command: %04X %04X (load NVRAM settings)\n", machine().describe_context(), mcu_command, mcu_offset*2); |
| 210 | 187 | |
| 211 | 188 | } |
| 212 | 189 | break; |
| 213 | 190 | |
| 214 | 191 | case 0x42: // Write to NVRAM |
| 215 | 192 | { |
| 216 | | address_space &eeprom_space = machine.device<eeprom_serial_93cxx_device>(":eeprom")->space(); |
| 217 | | UINT8* nvdat = (UINT8*)&kaneko16_mcu_ram[mcu_offset]; |
| 193 | address_space &eeprom_space = machine().device<eeprom_serial_93cxx_device>(":eeprom")->space(); |
| 194 | UINT8* nvdat = (UINT8*)&m_mcuram[mcu_offset]; |
| 218 | 195 | for (int i=0;i<0x80;i++) |
| 219 | 196 | { |
| 220 | 197 | eeprom_space.write_byte(i, nvdat[i]); |
| 221 | 198 | } |
| 222 | 199 | |
| 223 | | logerror("%s : MCU executed command: %04X %04X (save NVRAM settings)\n", machine.describe_context(), mcu_command, mcu_offset*2); |
| 200 | logerror("%s : MCU executed command: %04X %04X (save NVRAM settings)\n", machine().describe_context(), mcu_command, mcu_offset*2); |
| 224 | 201 | } |
| 225 | 202 | break; |
| 226 | 203 | |
| r31859 | r31860 | |
| 232 | 209 | //memcpy(m_nvram_save, bonkadv_mcu_43, sizeof(bonkadv_mcu_43)); |
| 233 | 210 | |
| 234 | 211 | |
| 235 | | address_space &eeprom_space = machine.device<eeprom_serial_93cxx_device>(":eeprom")->space(); |
| 212 | address_space &eeprom_space = machine().device<eeprom_serial_93cxx_device>(":eeprom")->space(); |
| 236 | 213 | UINT8* nvdat = (UINT8*)&bonkadv_mcu_43[0]; |
| 237 | 214 | for (int i=0;i<0x80;i++) |
| 238 | 215 | { |
| 239 | 216 | eeprom_space.write_byte(i, nvdat[i]); |
| 240 | 217 | } |
| 241 | | logerror("%s : MCU executed command: %04X %04X (restore default NVRAM settings)\n", machine.describe_context(), mcu_command, mcu_offset*2); |
| 218 | logerror("%s : MCU executed command: %04X %04X (restore default NVRAM settings)\n", machine().describe_context(), mcu_command, mcu_offset*2); |
| 242 | 219 | } |
| 243 | 220 | } |
| 244 | 221 | break; |
| 245 | 222 | |
| 246 | 223 | case 0x03: // DSW |
| 247 | 224 | { |
| 248 | | kaneko16_mcu_ram[mcu_offset] = machine.root_device().ioport(":DSW1")->read(); |
| 249 | | logerror("%s : MCU executed command: %04X %04X (read DSW)\n", machine.describe_context(), mcu_command, mcu_offset*2); |
| 225 | m_mcuram[mcu_offset] = machine().root_device().ioport(":DSW1")->read(); |
| 226 | logerror("%s : MCU executed command: %04X %04X (read DSW)\n", machine().describe_context(), mcu_command, mcu_offset*2); |
| 250 | 227 | } |
| 251 | 228 | break; |
| 252 | 229 | |
| 253 | 230 | case 0x04: // Protection |
| 254 | 231 | { |
| 255 | | logerror("%s : MCU executed command: %04X %04X %04X\n", machine.describe_context(), mcu_command, mcu_offset*2, mcu_data); |
| 232 | logerror("%s : MCU executed command: %04X %04X %04X\n", machine().describe_context(), mcu_command, mcu_offset*2, mcu_data); |
| 256 | 233 | |
| 257 | 234 | if (m_gametype == GAME_BONK) |
| 258 | 235 | { |
| r31859 | r31860 | |
| 268 | 245 | |
| 269 | 246 | // dynamic, per-level (29), in level order |
| 270 | 247 | default: |
| 271 | | toxboy_handle_04_subcommand(machine, mcu_data, kaneko16_mcu_ram); |
| 248 | handle_04_subcommand(mcu_data, m_mcuram); |
| 272 | 249 | break; |
| 273 | 250 | |
| 274 | 251 | } |
| 275 | 252 | } |
| 276 | 253 | else |
| 277 | 254 | { |
| 278 | | toxboy_handle_04_subcommand(machine, mcu_data, kaneko16_mcu_ram); |
| 255 | handle_04_subcommand(mcu_data, m_mcuram); |
| 279 | 256 | } |
| 280 | 257 | |
| 281 | 258 | } |
| 282 | 259 | break; |
| 283 | 260 | |
| 284 | 261 | default: |
| 285 | | logerror("%s : MCU executed command: %04X %04X %04X (UNKNOWN COMMAND)\n", machine.describe_context(), mcu_command, mcu_offset*2, mcu_data); |
| 262 | logerror("%s : MCU executed command: %04X %04X %04X (UNKNOWN COMMAND)\n", machine().describe_context(), mcu_command, mcu_offset*2, mcu_data); |
| 286 | 263 | break; |
| 287 | 264 | } |
| 288 | 265 | } |
trunk/src/mame/machine/kaneko_toybox.h
| r31859 | r31860 | |
| 290 | 290 | }; |
| 291 | 291 | |
| 292 | 292 | /* decryption table */ |
| 293 | | static const UINT8 toybox_mcu_decryption_table[0x100] = { |
| 293 | static const UINT8 decryption_table[0x100] = { |
| 294 | 294 | 0x7b,0x82,0xf0,0xbc,0x7f,0x1d,0xa2,0xc5,0x2a,0xfa,0x55,0xee,0x1a,0xd0,0x59,0x76, |
| 295 | 295 | 0x5e,0x75,0x79,0x16,0xa5,0xf6,0x84,0xed,0x0f,0x2e,0xf2,0x36,0x61,0xac,0xcd,0xab, |
| 296 | 296 | 0x01,0x3b,0x01,0x87,0x73,0xab,0xce,0x5d,0xd4,0x1d,0x68,0x2a,0x35,0xea,0x13,0x27, |
| r31859 | r31860 | |
| 310 | 310 | }; |
| 311 | 311 | |
| 312 | 312 | /* alt decryption table (gtmr2) */ |
| 313 | | static const UINT8 toybox_mcu_decryption_table_alt[0x100] = { |
| 313 | static const UINT8 decryption_table_alt[0x100] = { |
| 314 | 314 | 0x26,0x17,0xb9,0xcf,0x1a,0xf5,0x14,0x1e,0x0c,0x35,0xb3,0x66,0xa0,0x17,0xe9,0xe4, |
| 315 | 315 | 0x90,0xf6,0xd5,0x35,0xac,0x95,0x49,0x43,0x64,0x0c,0x03,0x75,0x4d,0xda,0xb6,0xdf, |
| 316 | 316 | 0x06,0xcf,0x83,0x9e,0x35,0x2c,0x71,0x2a,0xab,0xcc,0x65,0xd4,0x1f,0xb0,0x88,0x3c, |
| r31859 | r31860 | |
| 335 | 335 | public: |
| 336 | 336 | kaneko_toybox_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 337 | 337 | |
| 338 | | static void set_toybox_table(device_t &device, int tabletype); |
| 339 | | static void set_toybox_gametype(device_t &device, int gametype); |
| 338 | static void set_table(device_t &device, int tabletype); |
| 339 | static void set_game_type(device_t &device, int gametype); |
| 340 | 340 | |
| 341 | | DECLARE_READ16_MEMBER(toybox_mcu_ram_r); |
| 342 | | DECLARE_WRITE16_MEMBER(toybox_mcu_ram_w); |
| 341 | DECLARE_WRITE16_MEMBER(mcu_com0_w); |
| 342 | DECLARE_WRITE16_MEMBER(mcu_com1_w); |
| 343 | DECLARE_WRITE16_MEMBER(mcu_com2_w); |
| 344 | DECLARE_WRITE16_MEMBER(mcu_com3_w); |
| 345 | DECLARE_READ16_MEMBER(mcu_status_r); |
| 343 | 346 | |
| 344 | | DECLARE_WRITE16_MEMBER(toybox_mcu_com0_w); |
| 345 | | DECLARE_WRITE16_MEMBER(toybox_mcu_com1_w); |
| 346 | | DECLARE_WRITE16_MEMBER(toybox_mcu_com2_w); |
| 347 | | DECLARE_WRITE16_MEMBER(toybox_mcu_com3_w); |
| 348 | | DECLARE_READ16_MEMBER(toybox_mcu_status_r); |
| 349 | | |
| 350 | | void toybox_mcu_com_w(offs_t offset, UINT16 data, UINT16 mem_mask, int _n_); |
| 351 | | |
| 352 | | void toxboy_decrypt_rom(running_machine& machine); |
| 353 | | void toxboy_handle_04_subcommand(running_machine& machine,UINT8 mcu_subcmd, UINT16*mcu_ram); |
| 354 | | void toybox_mcu_init(running_machine &machine); |
| 355 | | void toybox_mcu_run(running_machine &machine); |
| 356 | | |
| 357 | | UINT16 m_toybox_mcu_com[4]; |
| 358 | | |
| 359 | | int m_gametype; |
| 360 | | int m_tabletype; |
| 361 | | |
| 362 | 347 | protected: |
| 363 | 348 | virtual void device_start(); |
| 364 | 349 | virtual void device_reset(); |
| 365 | 350 | |
| 366 | 351 | private: |
| 367 | | UINT16* m_toybox_mcuram; |
| 352 | required_shared_ptr<UINT16> m_mcuram; |
| 353 | UINT16 m_mcu_com[4]; |
| 354 | int m_gametype; |
| 355 | int m_tabletype; |
| 356 | |
| 357 | void mcu_com_w(offs_t offset, UINT16 data, UINT16 mem_mask, int _n_); |
| 358 | void decrypt_rom(); |
| 359 | void handle_04_subcommand(UINT8 mcu_subcmd, UINT16 *mcu_ram); |
| 360 | void mcu_init(); |
| 361 | void mcu_run(); |
| 368 | 362 | }; |
| 369 | 363 | |
| 370 | 364 | |
| 371 | 365 | extern const device_type KANEKO_TOYBOX; |
| 366 | |
| 367 | #define MCFG_TOYBOX_TABLE_TYPE(_type) \ |
| 368 | kaneko_toybox_device::set_table(*device, _type); |
| 369 | |
| 370 | #define MCFG_TOYBOX_GAME_TYPE(_type) \ |
| 371 | kaneko_toybox_device::set_game_type(*device, _type); |
trunk/src/mame/includes/suprnova.h
| r31859 | r31860 | |
| 24 | 24 | skns_state(const machine_config &mconfig, device_type type, const char *tag) |
| 25 | 25 | : driver_device(mconfig, type, tag), |
| 26 | 26 | m_maincpu(*this,"maincpu"), |
| 27 | m_spritegen(*this, "spritegen"), |
| 28 | m_gfxdecode(*this, "gfxdecode"), |
| 29 | m_palette(*this, "palette"), |
| 27 | 30 | m_spriteram(*this,"spriteram"), |
| 28 | 31 | m_spc_regs(*this, "spc_regs"), |
| 29 | 32 | m_v3_regs(*this, "v3_regs"), |
| r31859 | r31860 | |
| 34 | 37 | m_palette_ram(*this, "palette_ram"), |
| 35 | 38 | m_v3t_ram(*this, "v3t_ram"), |
| 36 | 39 | m_main_ram(*this, "main_ram"), |
| 37 | | m_cache_ram(*this, "cache_ram"), |
| 38 | | m_gfxdecode(*this, "gfxdecode"), |
| 39 | | m_palette(*this, "palette") { } |
| 40 | m_cache_ram(*this, "cache_ram") { } |
| 40 | 41 | |
| 41 | 42 | required_device<sh2_device> m_maincpu; |
| 43 | required_device<sknsspr_device> m_spritegen; |
| 44 | required_device<gfxdecode_device> m_gfxdecode; |
| 45 | required_device<palette_device> m_palette; |
| 46 | |
| 42 | 47 | required_shared_ptr<UINT32> m_spriteram; |
| 43 | | |
| 44 | | sknsspr_device* m_spritegen; |
| 45 | 48 | required_shared_ptr<UINT32> m_spc_regs; |
| 46 | 49 | required_shared_ptr<UINT32> m_v3_regs; |
| 47 | 50 | required_shared_ptr<UINT32> m_tilemapA_ram; |
| r31859 | r31860 | |
| 52 | 55 | required_shared_ptr<UINT32> m_v3t_ram; |
| 53 | 56 | required_shared_ptr<UINT32> m_main_ram; |
| 54 | 57 | required_shared_ptr<UINT32> m_cache_ram; |
| 55 | | required_device<gfxdecode_device> m_gfxdecode; |
| 56 | | required_device<palette_device> m_palette; |
| 58 | |
| 57 | 59 | hit_t m_hit; |
| 58 | 60 | UINT32 m_timer_0_temp[4]; |
| 59 | 61 | bitmap_ind16 m_sprite_bitmap; |