trunk/src/mame/drivers/powerins.c
| r245147 | r245148 | |
| 43 | 43 | ***************************************************************************/ |
| 44 | 44 | |
| 45 | 45 | |
| 46 | | WRITE16_MEMBER(powerins_state::powerins_okibank_w) |
| 46 | WRITE16_MEMBER(powerins_state::okibank_w) |
| 47 | 47 | { |
| 48 | 48 | if (ACCESSING_BITS_0_7) |
| 49 | 49 | { |
| r245147 | r245148 | |
| 58 | 58 | } |
| 59 | 59 | } |
| 60 | 60 | |
| 61 | | WRITE16_MEMBER(powerins_state::powerins_soundlatch_w) |
| 61 | WRITE16_MEMBER(powerins_state::soundlatch_w) |
| 62 | 62 | { |
| 63 | 63 | if (ACCESSING_BITS_0_7) |
| 64 | 64 | soundlatch_byte_w(space, 0, data & 0xff); |
| r245147 | r245148 | |
| 76 | 76 | AM_RANGE(0x100002, 0x100003) AM_READ_PORT("P1_P2") |
| 77 | 77 | AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1") |
| 78 | 78 | AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2") |
| 79 | | AM_RANGE(0x100014, 0x100015) AM_WRITE(powerins_flipscreen_w) // Flip Screen |
| 79 | AM_RANGE(0x100014, 0x100015) AM_WRITE(flipscreen_w) // Flip Screen |
| 80 | 80 | AM_RANGE(0x100016, 0x100017) AM_WRITENOP // ? always 1 |
| 81 | | AM_RANGE(0x100018, 0x100019) AM_WRITE(powerins_tilebank_w) // Tiles Banking (VRAM 0) |
| 82 | | AM_RANGE(0x10001e, 0x10001f) AM_WRITE(powerins_soundlatch_w) // Sound Latch |
| 83 | | AM_RANGE(0x100030, 0x100031) AM_WRITE(powerins_okibank_w) // Sound |
| 81 | AM_RANGE(0x100018, 0x100019) AM_WRITE(tilebank_w) // Tiles Banking (VRAM 0) |
| 82 | AM_RANGE(0x10001e, 0x10001f) AM_WRITE(soundlatch_w) // Sound Latch |
| 83 | AM_RANGE(0x100030, 0x100031) AM_WRITE(okibank_w) // Sound |
| 84 | 84 | AM_RANGE(0x120000, 0x120fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette |
| 85 | 85 | AM_RANGE(0x130000, 0x130007) AM_RAM AM_SHARE("vctrl_0") // VRAM 0 Control |
| 86 | | AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(powerins_vram_0_w) AM_SHARE("vram_0") // VRAM 0 |
| 87 | | AM_RANGE(0x170000, 0x170fff) AM_RAM_WRITE(powerins_vram_1_w) AM_SHARE("vram_1") // VRAM 1 |
| 88 | | AM_RANGE(0x171000, 0x171fff) AM_WRITE(powerins_vram_1_w) // Mirror of VRAM 1? |
| 86 | AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0") // VRAM 0 |
| 87 | AM_RANGE(0x170000, 0x170fff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1") // VRAM 1 |
| 88 | AM_RANGE(0x171000, 0x171fff) AM_WRITE(vram_1_w) // Mirror of VRAM 1? |
| 89 | 89 | AM_RANGE(0x180000, 0x18ffff) AM_RAM AM_SHARE("spriteram") // RAM + Sprites |
| 90 | 90 | ADDRESS_MAP_END |
| 91 | 91 | |
| r245147 | r245148 | |
| 96 | 96 | AM_RANGE(0x100002, 0x100003) AM_READ_PORT("P1_P2") |
| 97 | 97 | AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1") |
| 98 | 98 | AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2") |
| 99 | | AM_RANGE(0x100014, 0x100015) AM_WRITE(powerins_flipscreen_w) // Flip Screen |
| 99 | AM_RANGE(0x100014, 0x100015) AM_WRITE(flipscreen_w) // Flip Screen |
| 100 | 100 | AM_RANGE(0x100016, 0x100017) AM_WRITENOP // ? always 1 |
| 101 | | AM_RANGE(0x100018, 0x100019) AM_WRITE(powerins_tilebank_w) // Tiles Banking (VRAM 0) |
| 101 | AM_RANGE(0x100018, 0x100019) AM_WRITE(tilebank_w) // Tiles Banking (VRAM 0) |
| 102 | 102 | AM_RANGE(0x10001e, 0x10001f) AM_WRITENOP // Sound Latch, NOPed since there is no sound cpu |
| 103 | | AM_RANGE(0x100030, 0x100031) AM_WRITE(powerins_okibank_w) // Sound |
| 103 | AM_RANGE(0x100030, 0x100031) AM_WRITE(okibank_w) // Sound |
| 104 | 104 | AM_RANGE(0x10003e, 0x10003f) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) // (used by powerina) |
| 105 | 105 | AM_RANGE(0x120000, 0x120fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette |
| 106 | 106 | AM_RANGE(0x130000, 0x130007) AM_RAM AM_SHARE("vctrl_0") // VRAM 0 Control |
| 107 | | AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(powerins_vram_0_w) AM_SHARE("vram_0") // VRAM 0 |
| 108 | | AM_RANGE(0x170000, 0x170fff) AM_RAM_WRITE(powerins_vram_1_w) AM_SHARE("vram_1") // VRAM 1 |
| 109 | | AM_RANGE(0x171000, 0x171fff) AM_WRITE(powerins_vram_1_w) // Mirror of VRAM 1? |
| 107 | AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(vram_0_w) AM_SHARE("vram_0") // VRAM 0 |
| 108 | AM_RANGE(0x170000, 0x170fff) AM_RAM_WRITE(vram_1_w) AM_SHARE("vram_1") // VRAM 1 |
| 109 | AM_RANGE(0x171000, 0x171fff) AM_WRITE(vram_1_w) // Mirror of VRAM 1? |
| 110 | 110 | AM_RANGE(0x180000, 0x18ffff) AM_RAM AM_SHARE("spriteram") // RAM + Sprites |
| 111 | 111 | ADDRESS_MAP_END |
| 112 | 112 | |
| r245147 | r245148 | |
| 311 | 311 | |
| 312 | 312 | ***************************************************************************/ |
| 313 | 313 | |
| 314 | | void powerins_state::machine_reset() |
| 314 | void powerins_state::machine_start() |
| 315 | 315 | { |
| 316 | | m_oki_bank = -1; // samples bank "unitialised" |
| 316 | save_item(NAME(m_oki_bank)); |
| 317 | 317 | } |
| 318 | 318 | |
| 319 | | WRITE_LINE_MEMBER(powerins_state::irqhandler) |
| 319 | void powerins_state::machine_reset() |
| 320 | 320 | { |
| 321 | | m_soundcpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE); |
| 321 | m_oki_bank = -1; // samples bank "uninitialised" |
| 322 | 322 | } |
| 323 | 323 | |
| 324 | 324 | static MACHINE_CONFIG_START( powerins, powerins_state ) |
| r245147 | r245148 | |
| 339 | 339 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 340 | 340 | MCFG_SCREEN_SIZE(320, 256) |
| 341 | 341 | MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0+16, 256-16-1) |
| 342 | | MCFG_SCREEN_UPDATE_DRIVER(powerins_state, screen_update_powerins) |
| 342 | MCFG_SCREEN_UPDATE_DRIVER(powerins_state, screen_update) |
| 343 | 343 | MCFG_SCREEN_PALETTE("palette") |
| 344 | 344 | |
| 345 | 345 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", powerins) |
| r245147 | r245148 | |
| 357 | 357 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) |
| 358 | 358 | |
| 359 | 359 | MCFG_SOUND_ADD("ym2203", YM2203, 12000000 / 8) |
| 360 | | MCFG_YM2203_IRQ_HANDLER(WRITELINE(powerins_state, irqhandler)) |
| 360 | MCFG_YM2203_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) |
| 361 | 361 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0) |
| 362 | 362 | |
| 363 | 363 | MCFG_DEVICE_ADD("nmk112", NMK112, 0) |
| r245147 | r245148 | |
| 701 | 701 | |
| 702 | 702 | |
| 703 | 703 | /* all supported sets give a 93.10.20 date */ |
| 704 | | GAME( 1993, powerins, 0, powerins, powerins, driver_device, 0, ROT0, "Atlus", "Power Instinct (USA)", 0 ) |
| 705 | | GAME( 1993, powerinsj, powerins, powerins, powerinj, driver_device, 0, ROT0, "Atlus", "Gouketsuji Ichizoku (Japan)", 0 ) |
| 706 | | GAME( 1993, powerinsa, powerins, powerina, powerins, driver_device, 0, ROT0, "bootleg", "Power Instinct (USA, bootleg set 1)", 0 ) |
| 707 | | GAME( 1993, powerinsb, powerins, powerinb, powerins, driver_device, 0, ROT0, "bootleg", "Power Instinct (USA, bootleg set 2)", 0 ) |
| 704 | GAME( 1993, powerins, 0, powerins, powerins, driver_device, 0, ROT0, "Atlus", "Power Instinct (USA)", GAME_SUPPORTS_SAVE ) |
| 705 | GAME( 1993, powerinsj, powerins, powerins, powerinj, driver_device, 0, ROT0, "Atlus", "Gouketsuji Ichizoku (Japan)", GAME_SUPPORTS_SAVE ) |
| 706 | GAME( 1993, powerinsa, powerins, powerina, powerins, driver_device, 0, ROT0, "bootleg", "Power Instinct (USA, bootleg set 1)", GAME_SUPPORTS_SAVE ) |
| 707 | GAME( 1993, powerinsb, powerins, powerinb, powerins, driver_device, 0, ROT0, "bootleg", "Power Instinct (USA, bootleg set 2)", GAME_SUPPORTS_SAVE ) |
trunk/src/mame/drivers/ppmast93.c
| r245147 | r245148 | |
| 131 | 131 | |
| 132 | 132 | #include "emu.h" |
| 133 | 133 | #include "cpu/z80/z80.h" |
| 134 | | #include "sound/3812intf.h" |
| 135 | 134 | #include "sound/2413intf.h" |
| 136 | 135 | #include "sound/dac.h" |
| 137 | 136 | |
| r245147 | r245148 | |
| 141 | 140 | public: |
| 142 | 141 | ppmast93_state(const machine_config &mconfig, device_type type, const char *tag) |
| 143 | 142 | : driver_device(mconfig, type, tag), |
| 144 | | m_bgram(*this, "bgram"), |
| 145 | | m_fgram(*this, "fgram"), |
| 146 | 143 | m_maincpu(*this, "maincpu"), |
| 147 | 144 | m_dac(*this, "dac"), |
| 148 | | m_gfxdecode(*this, "gfxdecode") { } |
| 145 | m_ymsnd(*this, "ymsnd"), |
| 146 | m_gfxdecode(*this, "gfxdecode"), |
| 147 | m_bgram(*this, "bgram"), |
| 148 | m_fgram(*this, "fgram") { } |
| 149 | 149 | |
| 150 | | tilemap_t *m_fg_tilemap; |
| 151 | | tilemap_t *m_bg_tilemap; |
| 152 | | required_shared_ptr<UINT8> m_bgram; |
| 153 | | required_shared_ptr<UINT8> m_fgram; |
| 154 | | DECLARE_WRITE8_MEMBER(ppmast93_fgram_w); |
| 155 | | DECLARE_WRITE8_MEMBER(ppmast93_bgram_w); |
| 156 | | DECLARE_WRITE8_MEMBER(ppmast93_port4_w); |
| 157 | | DECLARE_WRITE8_MEMBER(ppmast_sound_w); |
| 158 | | TILE_GET_INFO_MEMBER(get_ppmast93_bg_tile_info); |
| 159 | | TILE_GET_INFO_MEMBER(get_ppmast93_fg_tile_info); |
| 160 | | virtual void video_start(); |
| 161 | | UINT32 screen_update_ppmast93(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 162 | 150 | required_device<cpu_device> m_maincpu; |
| 163 | 151 | required_device<dac_device> m_dac; |
| 152 | required_device<ym2413_device> m_ymsnd; |
| 164 | 153 | required_device<gfxdecode_device> m_gfxdecode; |
| 165 | | }; |
| 166 | 154 | |
| 155 | required_shared_ptr<UINT8> m_bgram; |
| 156 | required_shared_ptr<UINT8> m_fgram; |
| 167 | 157 | |
| 158 | tilemap_t *m_fg_tilemap; |
| 159 | tilemap_t *m_bg_tilemap; |
| 160 | |
| 161 | DECLARE_WRITE8_MEMBER(fgram_w); |
| 162 | DECLARE_WRITE8_MEMBER(bgram_w); |
| 163 | DECLARE_WRITE8_MEMBER(port4_w); |
| 164 | DECLARE_WRITE8_MEMBER(sound_w); |
| 165 | |
| 166 | TILE_GET_INFO_MEMBER(get_bg_tile_info); |
| 167 | TILE_GET_INFO_MEMBER(get_fg_tile_info); |
| 168 | |
| 169 | virtual void machine_start(); |
| 170 | virtual void video_start(); |
| 171 | |
| 172 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 173 | }; |
| 168 | 174 | |
| 169 | 175 | |
| 170 | | WRITE8_MEMBER(ppmast93_state::ppmast93_fgram_w) |
| 176 | void ppmast93_state::machine_start() |
| 171 | 177 | { |
| 178 | membank("cpubank")->configure_entries(0, 8, memregion("maincpu")->base(), 0x4000); |
| 179 | } |
| 180 | |
| 181 | WRITE8_MEMBER(ppmast93_state::fgram_w) |
| 182 | { |
| 172 | 183 | m_fgram[offset] = data; |
| 173 | 184 | m_fg_tilemap->mark_tile_dirty(offset/2); |
| 174 | 185 | } |
| 175 | 186 | |
| 176 | | WRITE8_MEMBER(ppmast93_state::ppmast93_bgram_w) |
| 187 | WRITE8_MEMBER(ppmast93_state::bgram_w) |
| 177 | 188 | { |
| 178 | 189 | m_bgram[offset] = data; |
| 179 | 190 | m_bg_tilemap->mark_tile_dirty(offset/2); |
| 180 | 191 | } |
| 181 | 192 | |
| 182 | | WRITE8_MEMBER(ppmast93_state::ppmast93_port4_w) |
| 193 | WRITE8_MEMBER(ppmast93_state::port4_w) |
| 183 | 194 | { |
| 184 | | UINT8 *rom = memregion("maincpu")->base(); |
| 185 | | int bank; |
| 186 | | |
| 187 | 195 | coin_counter_w(machine(), 0, data & 0x08); |
| 188 | 196 | coin_counter_w(machine(), 1, data & 0x10); |
| 189 | 197 | |
| 190 | | bank = data & 0x07; |
| 191 | | membank("bank1")->set_base(&rom[0x10000+(bank*0x4000)]); |
| 198 | membank("cpubank")->set_entry(data & 0x07); |
| 192 | 199 | } |
| 193 | 200 | |
| 194 | 201 | static ADDRESS_MAP_START( ppmast93_cpu1_map, AS_PROGRAM, 8, ppmast93_state ) |
| 195 | | AM_RANGE(0x0000, 0x7fff) AM_ROM AM_WRITENOP AM_REGION("maincpu", 0x10000) |
| 196 | | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") |
| 197 | | AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(ppmast93_bgram_w) AM_SHARE("bgram") |
| 202 | AM_RANGE(0x0000, 0x7fff) AM_ROM AM_WRITENOP |
| 203 | AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("cpubank") |
| 204 | AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(bgram_w) AM_SHARE("bgram") |
| 198 | 205 | AM_RANGE(0xd800, 0xdfff) AM_WRITENOP |
| 199 | | AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(ppmast93_fgram_w) AM_SHARE("fgram") |
| 206 | AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(fgram_w) AM_SHARE("fgram") |
| 200 | 207 | AM_RANGE(0xf800, 0xffff) AM_RAM |
| 201 | 208 | ADDRESS_MAP_END |
| 202 | 209 | |
| 203 | 210 | static ADDRESS_MAP_START( ppmast93_cpu1_io, AS_IO, 8, ppmast93_state ) |
| 204 | 211 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 205 | | AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") |
| 212 | AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") AM_WRITE(soundlatch_byte_w) |
| 206 | 213 | AM_RANGE(0x02, 0x02) AM_READ_PORT("P2") |
| 207 | | AM_RANGE(0x04, 0x04) AM_READ_PORT("SYSTEM") |
| 214 | AM_RANGE(0x04, 0x04) AM_READ_PORT("SYSTEM") AM_WRITE(port4_w) |
| 208 | 215 | AM_RANGE(0x06, 0x06) AM_READ_PORT("DSW1") |
| 209 | 216 | AM_RANGE(0x08, 0x08) AM_READ_PORT("DSW2") |
| 210 | | |
| 211 | | AM_RANGE(0x00, 0x00) AM_WRITE(soundlatch_byte_w) |
| 212 | | AM_RANGE(0x04, 0x04) AM_WRITE(ppmast93_port4_w) |
| 213 | 217 | ADDRESS_MAP_END |
| 214 | 218 | |
| 215 | 219 | static ADDRESS_MAP_START( ppmast93_cpu2_map, AS_PROGRAM, 8, ppmast93_state ) |
| r245147 | r245148 | |
| 219 | 223 | ADDRESS_MAP_END |
| 220 | 224 | |
| 221 | 225 | |
| 222 | | WRITE8_MEMBER(ppmast93_state::ppmast_sound_w) |
| 226 | WRITE8_MEMBER(ppmast93_state::sound_w) |
| 223 | 227 | { |
| 224 | 228 | switch(offset&0xff) |
| 225 | 229 | { |
| 226 | 230 | case 0: |
| 227 | | case 1: machine().device<ym2413_device>("ymsnd")->write(space,offset,data); break; |
| 231 | case 1: m_ymsnd->write(space,offset,data); break; |
| 228 | 232 | case 2: m_dac->write_unsigned8(data);break; |
| 229 | 233 | default: logerror("%x %x - %x\n",offset,data,space.device().safe_pcbase()); |
| 230 | 234 | } |
| 231 | 235 | } |
| 232 | 236 | |
| 233 | 237 | static ADDRESS_MAP_START( ppmast93_cpu2_io, AS_IO, 8, ppmast93_state ) |
| 234 | | AM_RANGE(0x0000, 0xffff) AM_ROM AM_WRITE(ppmast_sound_w) AM_REGION("sub", 0x20000) |
| 238 | AM_RANGE(0x0000, 0xffff) AM_ROM AM_WRITE(sound_w) AM_REGION("sub", 0x20000) |
| 235 | 239 | ADDRESS_MAP_END |
| 236 | 240 | |
| 237 | 241 | static INPUT_PORTS_START( ppmast93 ) |
| r245147 | r245148 | |
| 332 | 336 | GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 16 ) |
| 333 | 337 | GFXDECODE_END |
| 334 | 338 | |
| 335 | | TILE_GET_INFO_MEMBER(ppmast93_state::get_ppmast93_bg_tile_info) |
| 339 | TILE_GET_INFO_MEMBER(ppmast93_state::get_bg_tile_info) |
| 336 | 340 | { |
| 337 | 341 | int code = (m_bgram[tile_index*2+1] << 8) | m_bgram[tile_index*2]; |
| 338 | 342 | SET_TILE_INFO_MEMBER(0, |
| r245147 | r245148 | |
| 341 | 345 | 0); |
| 342 | 346 | } |
| 343 | 347 | |
| 344 | | TILE_GET_INFO_MEMBER(ppmast93_state::get_ppmast93_fg_tile_info) |
| 348 | TILE_GET_INFO_MEMBER(ppmast93_state::get_fg_tile_info) |
| 345 | 349 | { |
| 346 | 350 | int code = (m_fgram[tile_index*2+1] << 8) | m_fgram[tile_index*2]; |
| 347 | 351 | SET_TILE_INFO_MEMBER(0, |
| r245147 | r245148 | |
| 352 | 356 | |
| 353 | 357 | void ppmast93_state::video_start() |
| 354 | 358 | { |
| 355 | | m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(ppmast93_state::get_ppmast93_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32, 32); |
| 356 | | m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(ppmast93_state::get_ppmast93_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32, 32); |
| 359 | m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(ppmast93_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32, 32); |
| 360 | m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(ppmast93_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32, 32); |
| 357 | 361 | |
| 358 | 362 | m_fg_tilemap->set_transparent_pen(0); |
| 359 | 363 | } |
| 360 | 364 | |
| 361 | | UINT32 ppmast93_state::screen_update_ppmast93(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 365 | UINT32 ppmast93_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 362 | 366 | { |
| 363 | 367 | m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0); |
| 364 | 368 | m_fg_tilemap->draw(screen, bitmap, cliprect, 0,0); |
| r245147 | r245148 | |
| 370 | 374 | MCFG_CPU_ADD("maincpu", Z80,5000000) /* 5 MHz */ |
| 371 | 375 | MCFG_CPU_PROGRAM_MAP(ppmast93_cpu1_map) |
| 372 | 376 | MCFG_CPU_IO_MAP(ppmast93_cpu1_io) |
| 373 | | MCFG_CPU_VBLANK_INT_DRIVER("screen", ppmast93_state, irq0_line_hold) |
| 377 | MCFG_CPU_VBLANK_INT_DRIVER("screen", ppmast93_state, irq0_line_hold) |
| 374 | 378 | |
| 375 | 379 | MCFG_CPU_ADD("sub", Z80,5000000) /* 5 MHz */ |
| 376 | 380 | MCFG_CPU_PROGRAM_MAP(ppmast93_cpu2_map) |
| r245147 | r245148 | |
| 383 | 387 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 384 | 388 | MCFG_SCREEN_SIZE(256, 256) |
| 385 | 389 | MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1) |
| 386 | | MCFG_SCREEN_UPDATE_DRIVER(ppmast93_state, screen_update_ppmast93) |
| 390 | MCFG_SCREEN_UPDATE_DRIVER(ppmast93_state, screen_update) |
| 387 | 391 | MCFG_SCREEN_PALETTE("palette") |
| 388 | 392 | |
| 389 | 393 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", ppmast93) |
| r245147 | r245148 | |
| 402 | 406 | MACHINE_CONFIG_END |
| 403 | 407 | |
| 404 | 408 | ROM_START( ppmast93 ) |
| 405 | | ROM_REGION( 0x30000, "maincpu", 0 ) |
| 406 | | ROM_LOAD( "2.up7", 0x10000, 0x20000, CRC(8854d8db) SHA1(9d93ddfb44d533772af6519747a6cb50b42065cd) ) |
| 409 | ROM_REGION( 0x20000, "maincpu", 0 ) |
| 410 | ROM_LOAD( "2.up7", 0x00000, 0x20000, CRC(8854d8db) SHA1(9d93ddfb44d533772af6519747a6cb50b42065cd) ) |
| 407 | 411 | |
| 408 | 412 | ROM_REGION( 0x30000, "sub", 0 ) |
| 409 | 413 | ROM_LOAD( "1.ue7", 0x10000, 0x20000, CRC(8e26939e) SHA1(e62441e523f5be6a3889064cc5e0f44545260e93) ) |
| r245147 | r245148 | |
| 418 | 422 | ROM_LOAD( "prom1.ug26", 0x200, 0x100, CRC(d979c64e) SHA1(172c9579013d58e35a5b4f732e360811ac36295e) ) |
| 419 | 423 | ROM_END |
| 420 | 424 | |
| 421 | | GAME( 1993, ppmast93, 0, ppmast93, ppmast93, driver_device, 0, ROT0, "Electronic Devices S.R.L.", "Ping Pong Masters '93", GAME_IMPERFECT_SOUND ) |
| 425 | GAME( 1993, ppmast93, 0, ppmast93, ppmast93, driver_device, 0, ROT0, "Electronic Devices S.R.L.", "Ping Pong Masters '93", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
trunk/src/mame/includes/powerins.h
| r245147 | r245148 | |
| 6 | 6 | powerins_state(const machine_config &mconfig, device_type type, const char *tag) |
| 7 | 7 | : driver_device(mconfig, type, tag), |
| 8 | 8 | m_maincpu(*this, "maincpu"), |
| 9 | | m_soundcpu(*this, "soundcpu"), |
| 9 | m_gfxdecode(*this, "gfxdecode"), |
| 10 | m_screen(*this, "screen"), |
| 11 | m_palette(*this, "palette"), |
| 10 | 12 | m_vctrl_0(*this, "vctrl_0"), |
| 11 | 13 | m_vram_0(*this, "vram_0"), |
| 12 | 14 | m_vram_1(*this, "vram_1"), |
| 13 | | m_spriteram(*this, "spriteram"), |
| 14 | | m_gfxdecode(*this, "gfxdecode"), |
| 15 | | m_screen(*this, "screen"), |
| 16 | | m_palette(*this, "palette") |
| 17 | | { } |
| 15 | m_spriteram(*this, "spriteram") { } |
| 18 | 16 | |
| 19 | 17 | |
| 20 | 18 | required_device<cpu_device> m_maincpu; |
| 21 | | optional_device<cpu_device> m_soundcpu; |
| 19 | required_device<gfxdecode_device> m_gfxdecode; |
| 20 | required_device<screen_device> m_screen; |
| 21 | required_device<palette_device> m_palette; |
| 22 | |
| 22 | 23 | required_shared_ptr<UINT16> m_vctrl_0; |
| 23 | 24 | required_shared_ptr<UINT16> m_vram_0; |
| 24 | 25 | required_shared_ptr<UINT16> m_vram_1; |
| 25 | 26 | required_shared_ptr<UINT16> m_spriteram; |
| 26 | | required_device<gfxdecode_device> m_gfxdecode; |
| 27 | | required_device<screen_device> m_screen; |
| 28 | | required_device<palette_device> m_palette; |
| 29 | 27 | |
| 30 | | UINT16 *m_vctrl_1; |
| 31 | 28 | tilemap_t *m_tilemap_0; |
| 32 | 29 | tilemap_t *m_tilemap_1; |
| 33 | 30 | int m_oki_bank; |
| 34 | 31 | int m_tile_bank; |
| 35 | | DECLARE_WRITE16_MEMBER(powerins_okibank_w); |
| 36 | | DECLARE_WRITE16_MEMBER(powerins_soundlatch_w); |
| 32 | |
| 33 | DECLARE_WRITE16_MEMBER(okibank_w); |
| 34 | DECLARE_WRITE16_MEMBER(soundlatch_w); |
| 35 | DECLARE_WRITE16_MEMBER(flipscreen_w); |
| 36 | DECLARE_WRITE16_MEMBER(tilebank_w); |
| 37 | DECLARE_WRITE16_MEMBER(vram_0_w); |
| 38 | DECLARE_WRITE16_MEMBER(vram_1_w); |
| 37 | 39 | DECLARE_READ8_MEMBER(powerinb_fake_ym2203_r); |
| 38 | | DECLARE_WRITE16_MEMBER(powerins_flipscreen_w); |
| 39 | | DECLARE_WRITE16_MEMBER(powerins_tilebank_w); |
| 40 | | DECLARE_WRITE16_MEMBER(powerins_vram_0_w); |
| 41 | | DECLARE_WRITE16_MEMBER(powerins_vram_1_w); |
| 40 | |
| 42 | 41 | TILE_GET_INFO_MEMBER(get_tile_info_0); |
| 43 | | TILEMAP_MAPPER_MEMBER(powerins_get_memory_offset_0); |
| 44 | 42 | TILE_GET_INFO_MEMBER(get_tile_info_1); |
| 43 | TILEMAP_MAPPER_MEMBER(get_memory_offset_0); |
| 44 | |
| 45 | virtual void machine_start(); |
| 45 | 46 | virtual void machine_reset(); |
| 46 | 47 | virtual void video_start(); |
| 47 | | UINT32 screen_update_powerins(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 48 | |
| 49 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 48 | 50 | void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect); |
| 49 | | DECLARE_WRITE_LINE_MEMBER(irqhandler); |
| 50 | 51 | }; |
trunk/src/mame/video/powerins.c
| r245147 | r245148 | |
| 12 | 12 | W shows layer 2 |
| 13 | 13 | A shows the sprites |
| 14 | 14 | |
| 15 | | Keys can be used togheter! |
| 15 | Keys can be used together! |
| 16 | 16 | |
| 17 | 17 | [ 2 Scrolling Layers ] |
| 18 | 18 | |
| r245147 | r245148 | |
| 48 | 48 | ***************************************************************************/ |
| 49 | 49 | |
| 50 | 50 | |
| 51 | | WRITE16_MEMBER(powerins_state::powerins_flipscreen_w) |
| 51 | WRITE16_MEMBER(powerins_state::flipscreen_w) |
| 52 | 52 | { |
| 53 | 53 | if (ACCESSING_BITS_0_7) flip_screen_set(data & 1 ); |
| 54 | 54 | } |
| 55 | 55 | |
| 56 | | WRITE16_MEMBER(powerins_state::powerins_tilebank_w) |
| 56 | WRITE16_MEMBER(powerins_state::tilebank_w) |
| 57 | 57 | { |
| 58 | 58 | if (ACCESSING_BITS_0_7) |
| 59 | 59 | { |
| r245147 | r245148 | |
| 105 | 105 | 0); |
| 106 | 106 | } |
| 107 | 107 | |
| 108 | | WRITE16_MEMBER(powerins_state::powerins_vram_0_w) |
| 108 | WRITE16_MEMBER(powerins_state::vram_0_w) |
| 109 | 109 | { |
| 110 | 110 | COMBINE_DATA(&m_vram_0[offset]); |
| 111 | 111 | m_tilemap_0->mark_tile_dirty(offset); |
| 112 | 112 | } |
| 113 | 113 | |
| 114 | | TILEMAP_MAPPER_MEMBER(powerins_state::powerins_get_memory_offset_0) |
| 114 | TILEMAP_MAPPER_MEMBER(powerins_state::get_memory_offset_0) |
| 115 | 115 | { |
| 116 | 116 | return (col * TILES_PER_PAGE_Y) + |
| 117 | 117 | |
| r245147 | r245148 | |
| 144 | 144 | 0); |
| 145 | 145 | } |
| 146 | 146 | |
| 147 | | WRITE16_MEMBER(powerins_state::powerins_vram_1_w) |
| 147 | WRITE16_MEMBER(powerins_state::vram_1_w) |
| 148 | 148 | { |
| 149 | 149 | COMBINE_DATA(&m_vram_1[offset]); |
| 150 | 150 | m_tilemap_1->mark_tile_dirty(offset); |
| r245147 | r245148 | |
| 157 | 157 | /*************************************************************************** |
| 158 | 158 | |
| 159 | 159 | |
| 160 | | Vh_Start |
| 160 | video_start |
| 161 | 161 | |
| 162 | 162 | |
| 163 | 163 | ***************************************************************************/ |
| 164 | 164 | |
| 165 | 165 | void powerins_state::video_start() |
| 166 | 166 | { |
| 167 | | m_tilemap_0 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(powerins_state::get_tile_info_0),this),tilemap_mapper_delegate(FUNC(powerins_state::powerins_get_memory_offset_0),this),16,16,DIM_NX_0, DIM_NY_0 ); |
| 167 | m_tilemap_0 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(powerins_state::get_tile_info_0),this),tilemap_mapper_delegate(FUNC(powerins_state::get_memory_offset_0),this),16,16,DIM_NX_0, DIM_NY_0 ); |
| 168 | 168 | m_tilemap_1 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(powerins_state::get_tile_info_1),this),TILEMAP_SCAN_COLS,8,8,DIM_NX_1, DIM_NY_1 ); |
| 169 | 169 | |
| 170 | 170 | m_tilemap_0->set_scroll_rows(1); |
| r245147 | r245148 | |
| 173 | 173 | m_tilemap_1->set_scroll_rows(1); |
| 174 | 174 | m_tilemap_1->set_scroll_cols(1); |
| 175 | 175 | m_tilemap_1->set_transparent_pen(15); |
| 176 | |
| 177 | save_item(NAME(m_tile_bank)); |
| 176 | 178 | } |
| 177 | 179 | |
| 178 | 180 | |
| 179 | | |
| 180 | | |
| 181 | | |
| 182 | | |
| 183 | 181 | /*************************************************************************** |
| 184 | 182 | |
| 185 | 183 | |
| r245147 | r245148 | |
| 300 | 298 | ***************************************************************************/ |
| 301 | 299 | |
| 302 | 300 | |
| 303 | | UINT32 powerins_state::screen_update_powerins(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 301 | UINT32 powerins_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 304 | 302 | { |
| 305 | 303 | int layers_ctrl = -1; |
| 306 | 304 | |