trunk/src/mame/drivers/tecmo.c
| r243663 | r243664 | |
| 51 | 51 | #include "emu.h" |
| 52 | 52 | #include "cpu/z80/z80.h" |
| 53 | 53 | #include "sound/3812intf.h" |
| 54 | | #include "sound/msm5205.h" |
| 55 | 54 | #include "includes/tecmo.h" |
| 56 | 55 | |
| 57 | 56 | |
| 58 | | WRITE8_MEMBER(tecmo_state::tecmo_bankswitch_w) |
| 57 | WRITE8_MEMBER(tecmo_state::bankswitch_w) |
| 59 | 58 | { |
| 60 | 59 | int bankaddress; |
| 61 | 60 | UINT8 *RAM = memregion("maincpu")->base(); |
| r243663 | r243664 | |
| 65 | 64 | membank("bank1")->set_base(&RAM[bankaddress]); |
| 66 | 65 | } |
| 67 | 66 | |
| 68 | | WRITE8_MEMBER(tecmo_state::tecmo_sound_command_w) |
| 67 | WRITE8_MEMBER(tecmo_state::sound_command_w) |
| 69 | 68 | { |
| 70 | 69 | soundlatch_byte_w(space, offset, data); |
| 71 | 70 | m_soundcpu->set_input_line(INPUT_LINE_NMI,ASSERT_LINE); |
| 72 | 71 | } |
| 73 | 72 | |
| 74 | | WRITE8_MEMBER(tecmo_state::tecmo_nmi_ack_w) |
| 73 | WRITE8_MEMBER(tecmo_state::nmi_ack_w) |
| 75 | 74 | { |
| 76 | 75 | m_soundcpu->set_input_line(INPUT_LINE_NMI,CLEAR_LINE); |
| 77 | 76 | } |
| 78 | 77 | |
| 79 | | WRITE8_MEMBER(tecmo_state::tecmo_adpcm_start_w) |
| 78 | WRITE8_MEMBER(tecmo_state::adpcm_start_w) |
| 80 | 79 | { |
| 81 | 80 | m_adpcm_pos = data << 8; |
| 82 | 81 | m_msm->reset_w(0); |
| 83 | 82 | } |
| 84 | 83 | |
| 85 | | WRITE8_MEMBER(tecmo_state::tecmo_adpcm_end_w) |
| 84 | WRITE8_MEMBER(tecmo_state::adpcm_end_w) |
| 86 | 85 | { |
| 87 | 86 | m_adpcm_end = (data + 1) << 8; |
| 88 | 87 | } |
| 89 | 88 | |
| 90 | | WRITE8_MEMBER(tecmo_state::tecmo_adpcm_vol_w) |
| 89 | WRITE8_MEMBER(tecmo_state::adpcm_vol_w) |
| 91 | 90 | { |
| 92 | 91 | m_msm->set_volume((data & 0x0f) * 100 / 15); |
| 93 | 92 | } |
| 94 | 93 | |
| 95 | | WRITE_LINE_MEMBER(tecmo_state::tecmo_adpcm_int) |
| 94 | WRITE_LINE_MEMBER(tecmo_state::adpcm_int) |
| 96 | 95 | { |
| 97 | 96 | if (m_adpcm_pos >= m_adpcm_end || |
| 98 | 97 | m_adpcm_pos >= memregion("adpcm")->bytes()) |
| r243663 | r243664 | |
| 112 | 111 | } |
| 113 | 112 | |
| 114 | 113 | /* the 8-bit dipswitches are split across addresses */ |
| 115 | | READ8_MEMBER(tecmo_state::tecmo_dswa_l_r) |
| 114 | READ8_MEMBER(tecmo_state::dswa_l_r) |
| 116 | 115 | { |
| 117 | 116 | UINT8 port = ioport("DSWA")->read(); |
| 118 | 117 | port &= 0x0f; |
| 119 | 118 | return port; |
| 120 | 119 | } |
| 121 | 120 | |
| 122 | | READ8_MEMBER(tecmo_state::tecmo_dswa_h_r) |
| 121 | READ8_MEMBER(tecmo_state::dswa_h_r) |
| 123 | 122 | { |
| 124 | 123 | UINT8 port = ioport("DSWA")->read(); |
| 125 | 124 | port &= 0xf0; |
| 126 | 125 | return port>>4; |
| 127 | 126 | } |
| 128 | 127 | |
| 129 | | READ8_MEMBER(tecmo_state::tecmo_dswb_l_r) |
| 128 | READ8_MEMBER(tecmo_state::dswb_l_r) |
| 130 | 129 | { |
| 131 | 130 | UINT8 port = ioport("DSWB")->read(); |
| 132 | 131 | port &= 0x0f; |
| 133 | 132 | return port; |
| 134 | 133 | } |
| 135 | 134 | |
| 136 | | READ8_MEMBER(tecmo_state::tecmo_dswb_h_r) |
| 135 | READ8_MEMBER(tecmo_state::dswb_h_r) |
| 137 | 136 | { |
| 138 | 137 | UINT8 port = ioport("DSWB")->read(); |
| 139 | 138 | port &= 0xf0; |
| r243663 | r243664 | |
| 144 | 143 | static ADDRESS_MAP_START( rygar_map, AS_PROGRAM, 8, tecmo_state ) |
| 145 | 144 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 146 | 145 | AM_RANGE(0xc000, 0xcfff) AM_RAM |
| 147 | | AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(tecmo_txvideoram_w) AM_SHARE("txvideoram") |
| 148 | | AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(tecmo_fgvideoram_w) AM_SHARE("fgvideoram") |
| 149 | | AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(tecmo_bgvideoram_w) AM_SHARE("bgvideoram") |
| 146 | AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram") |
| 147 | AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") |
| 148 | AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") |
| 150 | 149 | AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram") |
| 151 | 150 | AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") |
| 152 | 151 | AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1") |
| r243663 | r243664 | |
| 156 | 155 | AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2") |
| 157 | 156 | AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0") |
| 158 | 157 | AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1") |
| 159 | | AM_RANGE(0xf806, 0xf806) AM_READ(tecmo_dswa_l_r) |
| 160 | | AM_RANGE(0xf807, 0xf807) AM_READ(tecmo_dswa_h_r) |
| 161 | | AM_RANGE(0xf808, 0xf808) AM_READ(tecmo_dswb_l_r) |
| 162 | | AM_RANGE(0xf809, 0xf809) AM_READ(tecmo_dswb_h_r) |
| 158 | AM_RANGE(0xf806, 0xf806) AM_READ(dswa_l_r) |
| 159 | AM_RANGE(0xf807, 0xf807) AM_READ(dswa_h_r) |
| 160 | AM_RANGE(0xf808, 0xf808) AM_READ(dswb_l_r) |
| 161 | AM_RANGE(0xf809, 0xf809) AM_READ(dswb_h_r) |
| 163 | 162 | AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2") |
| 164 | | AM_RANGE(0xf800, 0xf802) AM_WRITE(tecmo_fgscroll_w) |
| 165 | | AM_RANGE(0xf803, 0xf805) AM_WRITE(tecmo_bgscroll_w) |
| 166 | | AM_RANGE(0xf806, 0xf806) AM_WRITE(tecmo_sound_command_w) |
| 167 | | AM_RANGE(0xf807, 0xf807) AM_WRITE(tecmo_flipscreen_w) |
| 168 | | AM_RANGE(0xf808, 0xf808) AM_WRITE(tecmo_bankswitch_w) |
| 163 | AM_RANGE(0xf800, 0xf802) AM_WRITE(fgscroll_w) |
| 164 | AM_RANGE(0xf803, 0xf805) AM_WRITE(bgscroll_w) |
| 165 | AM_RANGE(0xf806, 0xf806) AM_WRITE(sound_command_w) |
| 166 | AM_RANGE(0xf807, 0xf807) AM_WRITE(flipscreen_w) |
| 167 | AM_RANGE(0xf808, 0xf808) AM_WRITE(bankswitch_w) |
| 169 | 168 | AM_RANGE(0xf80b, 0xf80b) AM_WRITE(watchdog_reset_w) |
| 170 | 169 | ADDRESS_MAP_END |
| 171 | 170 | |
| 172 | 171 | static ADDRESS_MAP_START( gemini_map, AS_PROGRAM, 8, tecmo_state ) |
| 173 | 172 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 174 | 173 | AM_RANGE(0xc000, 0xcfff) AM_RAM |
| 175 | | AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(tecmo_txvideoram_w) AM_SHARE("txvideoram") |
| 176 | | AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(tecmo_fgvideoram_w) AM_SHARE("fgvideoram") |
| 177 | | AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(tecmo_bgvideoram_w) AM_SHARE("bgvideoram") |
| 174 | AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram") |
| 175 | AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") |
| 176 | AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") |
| 178 | 177 | AM_RANGE(0xe000, 0xe7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") |
| 179 | 178 | AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("spriteram") |
| 180 | 179 | AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1") |
| r243663 | r243664 | |
| 184 | 183 | AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2") |
| 185 | 184 | AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0") |
| 186 | 185 | AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1") |
| 187 | | AM_RANGE(0xf806, 0xf806) AM_READ(tecmo_dswa_l_r) |
| 188 | | AM_RANGE(0xf807, 0xf807) AM_READ(tecmo_dswa_h_r) |
| 189 | | AM_RANGE(0xf808, 0xf808) AM_READ(tecmo_dswb_l_r) |
| 190 | | AM_RANGE(0xf809, 0xf809) AM_READ(tecmo_dswb_h_r) |
| 186 | AM_RANGE(0xf806, 0xf806) AM_READ(dswa_l_r) |
| 187 | AM_RANGE(0xf807, 0xf807) AM_READ(dswa_h_r) |
| 188 | AM_RANGE(0xf808, 0xf808) AM_READ(dswb_l_r) |
| 189 | AM_RANGE(0xf809, 0xf809) AM_READ(dswb_h_r) |
| 191 | 190 | AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2") |
| 192 | | AM_RANGE(0xf800, 0xf802) AM_WRITE(tecmo_fgscroll_w) |
| 193 | | AM_RANGE(0xf803, 0xf805) AM_WRITE(tecmo_bgscroll_w) |
| 194 | | AM_RANGE(0xf806, 0xf806) AM_WRITE(tecmo_sound_command_w) |
| 195 | | AM_RANGE(0xf807, 0xf807) AM_WRITE(tecmo_flipscreen_w) |
| 196 | | AM_RANGE(0xf808, 0xf808) AM_WRITE(tecmo_bankswitch_w) |
| 191 | AM_RANGE(0xf800, 0xf802) AM_WRITE(fgscroll_w) |
| 192 | AM_RANGE(0xf803, 0xf805) AM_WRITE(bgscroll_w) |
| 193 | AM_RANGE(0xf806, 0xf806) AM_WRITE(sound_command_w) |
| 194 | AM_RANGE(0xf807, 0xf807) AM_WRITE(flipscreen_w) |
| 195 | AM_RANGE(0xf808, 0xf808) AM_WRITE(bankswitch_w) |
| 197 | 196 | AM_RANGE(0xf80b, 0xf80b) AM_WRITE(watchdog_reset_w) |
| 198 | 197 | ADDRESS_MAP_END |
| 199 | 198 | |
| 200 | 199 | static ADDRESS_MAP_START( silkworm_map, AS_PROGRAM, 8, tecmo_state ) |
| 201 | 200 | AM_RANGE(0x0000, 0xbfff) AM_ROM |
| 202 | | AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(tecmo_bgvideoram_w) AM_SHARE("bgvideoram") |
| 203 | | AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(tecmo_fgvideoram_w) AM_SHARE("fgvideoram") |
| 204 | | AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(tecmo_txvideoram_w) AM_SHARE("txvideoram") |
| 201 | AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") |
| 202 | AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") |
| 203 | AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram") |
| 205 | 204 | AM_RANGE(0xd000, 0xdfff) AM_RAM |
| 206 | 205 | AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram") |
| 207 | 206 | AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") |
| r243663 | r243664 | |
| 212 | 211 | AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2") |
| 213 | 212 | AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0") |
| 214 | 213 | AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1") |
| 215 | | AM_RANGE(0xf806, 0xf806) AM_READ(tecmo_dswa_l_r) |
| 216 | | AM_RANGE(0xf807, 0xf807) AM_READ(tecmo_dswa_h_r) |
| 217 | | AM_RANGE(0xf808, 0xf808) AM_READ(tecmo_dswb_l_r) |
| 218 | | AM_RANGE(0xf809, 0xf809) AM_READ(tecmo_dswb_h_r) |
| 214 | AM_RANGE(0xf806, 0xf806) AM_READ(dswa_l_r) |
| 215 | AM_RANGE(0xf807, 0xf807) AM_READ(dswa_h_r) |
| 216 | AM_RANGE(0xf808, 0xf808) AM_READ(dswb_l_r) |
| 217 | AM_RANGE(0xf809, 0xf809) AM_READ(dswb_h_r) |
| 219 | 218 | AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2") |
| 220 | | AM_RANGE(0xf800, 0xf802) AM_WRITE(tecmo_fgscroll_w) |
| 221 | | AM_RANGE(0xf803, 0xf805) AM_WRITE(tecmo_bgscroll_w) |
| 222 | | AM_RANGE(0xf806, 0xf806) AM_WRITE(tecmo_sound_command_w) |
| 223 | | AM_RANGE(0xf807, 0xf807) AM_WRITE(tecmo_flipscreen_w) |
| 224 | | AM_RANGE(0xf808, 0xf808) AM_WRITE(tecmo_bankswitch_w) |
| 219 | AM_RANGE(0xf800, 0xf802) AM_WRITE(fgscroll_w) |
| 220 | AM_RANGE(0xf803, 0xf805) AM_WRITE(bgscroll_w) |
| 221 | AM_RANGE(0xf806, 0xf806) AM_WRITE(sound_command_w) |
| 222 | AM_RANGE(0xf807, 0xf807) AM_WRITE(flipscreen_w) |
| 223 | AM_RANGE(0xf808, 0xf808) AM_WRITE(bankswitch_w) |
| 225 | 224 | AM_RANGE(0xf809, 0xf809) AM_WRITENOP /* ? */ |
| 226 | 225 | AM_RANGE(0xf80b, 0xf80b) AM_WRITENOP /* ? if mapped to watchdog like in the others, causes reset */ |
| 227 | 226 | ADDRESS_MAP_END |
| r243663 | r243664 | |
| 230 | 229 | AM_RANGE(0x0000, 0x3fff) AM_ROM |
| 231 | 230 | AM_RANGE(0x4000, 0x47ff) AM_RAM |
| 232 | 231 | AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ymsnd", ym3812_device, write) |
| 233 | | AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(tecmo_adpcm_start_w) |
| 234 | | AM_RANGE(0xd000, 0xd000) AM_WRITE(tecmo_adpcm_end_w) |
| 235 | | AM_RANGE(0xe000, 0xe000) AM_WRITE(tecmo_adpcm_vol_w) |
| 236 | | AM_RANGE(0xf000, 0xf000) AM_WRITE(tecmo_nmi_ack_w) |
| 232 | AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(adpcm_start_w) |
| 233 | AM_RANGE(0xd000, 0xd000) AM_WRITE(adpcm_end_w) |
| 234 | AM_RANGE(0xe000, 0xe000) AM_WRITE(adpcm_vol_w) |
| 235 | AM_RANGE(0xf000, 0xf000) AM_WRITE(nmi_ack_w) |
| 237 | 236 | ADDRESS_MAP_END |
| 238 | 237 | |
| 239 | 238 | static ADDRESS_MAP_START( tecmo_sound_map, AS_PROGRAM, 8, tecmo_state ) |
| r243663 | r243664 | |
| 242 | 241 | AM_RANGE(0x0000, 0x7fff) AM_ROM |
| 243 | 242 | AM_RANGE(0x8000, 0x87ff) AM_RAM |
| 244 | 243 | AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ymsnd", ym3812_device, write) |
| 245 | | AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(tecmo_adpcm_start_w) |
| 246 | | AM_RANGE(0xc400, 0xc400) AM_WRITE(tecmo_adpcm_end_w) |
| 247 | | AM_RANGE(0xc800, 0xc800) AM_WRITE(tecmo_adpcm_vol_w) |
| 248 | | AM_RANGE(0xcc00, 0xcc00) AM_WRITE(tecmo_nmi_ack_w) |
| 244 | AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(adpcm_start_w) |
| 245 | AM_RANGE(0xc400, 0xc400) AM_WRITE(adpcm_end_w) |
| 246 | AM_RANGE(0xc800, 0xc800) AM_WRITE(adpcm_vol_w) |
| 247 | AM_RANGE(0xcc00, 0xcc00) AM_WRITE(nmi_ack_w) |
| 249 | 248 | ADDRESS_MAP_END |
| 250 | 249 | |
| 251 | 250 | |
| r243663 | r243664 | |
| 600 | 599 | GFXDECODE_END |
| 601 | 600 | |
| 602 | 601 | |
| 603 | | MACHINE_RESET_MEMBER(tecmo_state,rygar) |
| 602 | void tecmo_state::machine_start() |
| 604 | 603 | { |
| 604 | save_item(NAME(m_adpcm_pos)); |
| 605 | save_item(NAME(m_adpcm_end)); |
| 606 | save_item(NAME(m_adpcm_data)); |
| 607 | } |
| 608 | |
| 609 | void tecmo_state::machine_reset() |
| 610 | { |
| 605 | 611 | m_adpcm_pos = 0; |
| 606 | 612 | m_adpcm_end = 0; |
| 607 | 613 | m_adpcm_data = -1; |
| r243663 | r243664 | |
| 623 | 629 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */) |
| 624 | 630 | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 625 | 631 | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) |
| 626 | | MCFG_SCREEN_UPDATE_DRIVER(tecmo_state, screen_update_tecmo) |
| 632 | MCFG_SCREEN_UPDATE_DRIVER(tecmo_state, screen_update) |
| 627 | 633 | MCFG_SCREEN_PALETTE("palette") |
| 628 | 634 | |
| 629 | 635 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", tecmo) |
| r243663 | r243664 | |
| 633 | 639 | |
| 634 | 640 | MCFG_DEVICE_ADD("spritegen", TECMO_SPRITE, 0) |
| 635 | 641 | |
| 636 | | MCFG_VIDEO_START_OVERRIDE(tecmo_state,tecmo) |
| 637 | | |
| 638 | | MCFG_MACHINE_RESET_OVERRIDE(tecmo_state, rygar ) |
| 639 | | |
| 640 | 642 | /* sound hardware */ |
| 641 | 643 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 642 | 644 | |
| r243663 | r243664 | |
| 645 | 647 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 646 | 648 | |
| 647 | 649 | MCFG_SOUND_ADD("msm", MSM5205, XTAL_400kHz) /* verified on pcb, even if schematics shows a 384khz resonator */ |
| 648 | | MCFG_MSM5205_VCLK_CB(WRITELINE(tecmo_state, tecmo_adpcm_int)) /* interrupt function */ |
| 650 | MCFG_MSM5205_VCLK_CB(WRITELINE(tecmo_state, adpcm_int)) /* interrupt function */ |
| 649 | 651 | MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8KHz */ |
| 650 | 652 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 651 | 653 | MACHINE_CONFIG_END |
| r243663 | r243664 | |
| 671 | 673 | MCFG_CPU_PROGRAM_MAP(silkworm_map) |
| 672 | 674 | MACHINE_CONFIG_END |
| 673 | 675 | |
| 674 | | #ifdef UNUSED_CODE |
| 675 | | static MACHINE_CONFIG_START( backfirt, tecmo_state ) |
| 676 | static MACHINE_CONFIG_DERIVED( backfirt, gemini ) |
| 676 | 677 | |
| 677 | | /* basic machine hardware */ |
| 678 | | MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz/4) |
| 679 | | MCFG_CPU_PROGRAM_MAP(rygar_map) |
| 680 | | MCFG_CPU_VBLANK_INT_DRIVER("screen", tecmo_state, irq0_line_hold) |
| 681 | | |
| 682 | | MCFG_CPU_ADD("soundcpu", Z80, XTAL_8MHz/2) |
| 683 | | MCFG_CPU_PROGRAM_MAP(rygar_sound_map) |
| 684 | | |
| 685 | | /* video hardware */ |
| 686 | | MCFG_SCREEN_ADD("screen", RASTER) |
| 687 | | MCFG_SCREEN_REFRESH_RATE(60) |
| 688 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* frames per second, vblank duration */) |
| 689 | | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 690 | | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) |
| 691 | | MCFG_SCREEN_UPDATE_DRIVER(tecmo_state, screen_update_tecmo) |
| 692 | | MCFG_SCREEN_PALETTE("palette") |
| 693 | | |
| 694 | | MCFG_GFXDECODE_ADD("gfxdecode", "palette", tecmo) |
| 695 | | MCFG_PALETTE_ADD("palette", 1024) |
| 696 | | MCFG_PALETTE_FORMAT(xxxxBBBBRRRRGGGG) |
| 697 | | MCFG_PALETTE_ENDIANNESS(ENDIANNESS_BIG) |
| 698 | | |
| 699 | | MCFG_VIDEO_START_OVERRIDE(tecmo_state,tecmo) |
| 700 | | |
| 701 | | MCFG_MACHINE_RESET_OVERRIDE(tecmo_state, rygar ) |
| 702 | | |
| 703 | | /* sound hardware */ |
| 704 | | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 705 | | |
| 706 | | MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz) /* verified on pcb */ |
| 707 | | MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) |
| 708 | | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) |
| 709 | | |
| 710 | | /* no MSM on this PCB */ |
| 711 | | |
| 678 | /* this pcb has no MSM5205 */ |
| 679 | MCFG_DEVICE_REMOVE("msm") |
| 712 | 680 | MACHINE_CONFIG_END |
| 713 | | #endif |
| 714 | | |
| 715 | 681 | /*************************************************************************** |
| 716 | 682 | |
| 717 | 683 | Game driver(s) |
| r243663 | r243664 | |
| 1065 | 1031 | ROM_LOAD( "b16-s2.bin", 0x10000, 0x10000, CRC(6e4052c9) SHA1(e2e3d7221b75cb044449a25a076a93c3def1f11b) ) /* tiles #2 */ |
| 1066 | 1032 | ROM_LOAD( "b15-s2.bin", 0x20000, 0x10000, CRC(2b6cc20e) SHA1(4815819288753400935836cc1b0b69f4c4b43ddc) ) /* tiles #2 */ |
| 1067 | 1033 | ROM_LOAD( "b14-s3.bin", 0x30000, 0x08000, CRC(4d29637a) SHA1(28e85925138256b8ce5a1c4a5df5b219b1b6b197) ) /* tiles #2 */ // half size is correct, rom type 27256 |
| 1068 | | |
| 1069 | | ROM_REGION( 0x8000, "adpcm", ROMREGION_ERASE00 ) /* ADPCM samples */ |
| 1070 | | // ROM_LOAD( "silkworm.1", 0x0000, 0x8000, CRC(5b553644) SHA1(5d39d2251094c17f7b732b4861401b3516fce9b1) ) |
| 1071 | 1034 | ROM_END |
| 1072 | 1035 | |
| 1073 | 1036 | ROM_START( gemini ) |
| r243663 | r243664 | |
| 1138 | 1101 | |
| 1139 | 1102 | |
| 1140 | 1103 | |
| 1141 | | GAME( 1986, rygar, 0, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 1)", 0 ) |
| 1142 | | GAME( 1986, rygar2, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 2)", 0 ) |
| 1143 | | GAME( 1986, rygar3, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 3 Old Version)", 0 ) |
| 1144 | | GAME( 1986, rygarj, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Argus no Senshi (Japan)", 0 ) |
| 1145 | | GAME( 1987, gemini, 0, gemini, gemini, tecmo_state, gemini, ROT90, "Tecmo", "Gemini Wing (Japan)", 0 ) /* Japan regional warning screen */ |
| 1146 | | GAME( 1988, silkworm, 0, silkworm, silkworm, tecmo_state, silkworm, ROT0, "Tecmo", "Silk Worm (World)", 0 ) /* No regional "Warning, if you are playing ..." screen */ |
| 1147 | | GAME( 1988, silkwormj, silkworm, silkworm, silkworm, tecmo_state, silkworm, ROT0, "Tecmo", "Silk Worm (Japan)", 0 ) /* Japan regional warning screen */ |
| 1148 | | GAME( 1988, backfirt, 0, gemini, backfirt, tecmo_state, backfirt, ROT0, "Tecmo", "Back Fire (Tecmo, bootleg)", 0 ) |
| 1104 | GAME( 1986, rygar, 0, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 1)", GAME_SUPPORTS_SAVE ) |
| 1105 | GAME( 1986, rygar2, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 2)", GAME_SUPPORTS_SAVE ) |
| 1106 | GAME( 1986, rygar3, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Rygar (US set 3 Old Version)", GAME_SUPPORTS_SAVE ) |
| 1107 | GAME( 1986, rygarj, rygar, rygar, rygar, tecmo_state, rygar, ROT0, "Tecmo", "Argus no Senshi (Japan)", GAME_SUPPORTS_SAVE ) |
| 1108 | GAME( 1987, gemini, 0, gemini, gemini, tecmo_state, gemini, ROT90, "Tecmo", "Gemini Wing (Japan)", GAME_SUPPORTS_SAVE ) /* Japan regional warning screen */ |
| 1109 | GAME( 1988, silkworm, 0, silkworm, silkworm, tecmo_state, silkworm, ROT0, "Tecmo", "Silk Worm (World)", GAME_SUPPORTS_SAVE ) /* No regional "Warning, if you are playing ..." screen */ |
| 1110 | GAME( 1988, silkwormj, silkworm, silkworm, silkworm, tecmo_state, silkworm, ROT0, "Tecmo", "Silk Worm (Japan)", GAME_SUPPORTS_SAVE ) /* Japan regional warning screen */ |
| 1111 | GAME( 1988, backfirt, 0, backfirt, backfirt, tecmo_state, backfirt, ROT0, "Tecmo", "Back Fire (Tecmo, bootleg)", GAME_SUPPORTS_SAVE ) |
trunk/src/mame/drivers/tecmo16.c
| r243663 | r243664 | |
| 32 | 32 | |
| 33 | 33 | /******************************************************************************/ |
| 34 | 34 | |
| 35 | | WRITE16_MEMBER(tecmo16_state::tecmo16_sound_command_w) |
| 35 | WRITE16_MEMBER(tecmo16_state::sound_command_w) |
| 36 | 36 | { |
| 37 | 37 | if (ACCESSING_BITS_0_7) |
| 38 | 38 | { |
| r243663 | r243664 | |
| 46 | 46 | static ADDRESS_MAP_START( fstarfrc_map, AS_PROGRAM, 16, tecmo16_state ) |
| 47 | 47 | AM_RANGE(0x000000, 0x07ffff) AM_ROM |
| 48 | 48 | AM_RANGE(0x100000, 0x103fff) AM_RAM /* Main RAM */ |
| 49 | | AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(tecmo16_charram_w) AM_SHARE("charram") |
| 50 | | AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(tecmo16_videoram_w) AM_SHARE("videoram") |
| 51 | | AM_RANGE(0x120800, 0x120fff) AM_RAM_WRITE(tecmo16_colorram_w) AM_SHARE("colorram") |
| 52 | | AM_RANGE(0x121000, 0x1217ff) AM_RAM_WRITE(tecmo16_videoram2_w) AM_SHARE("videoram2") |
| 53 | | AM_RANGE(0x121800, 0x121fff) AM_RAM_WRITE(tecmo16_colorram2_w) AM_SHARE("colorram2") |
| 49 | AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram") |
| 50 | AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") |
| 51 | AM_RANGE(0x120800, 0x120fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") |
| 52 | AM_RANGE(0x121000, 0x1217ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") |
| 53 | AM_RANGE(0x121800, 0x121fff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2") |
| 54 | 54 | AM_RANGE(0x122000, 0x127fff) AM_RAM /* work area */ |
| 55 | 55 | AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("spriteram") |
| 56 | 56 | AM_RANGE(0x140000, 0x141fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") |
| 57 | | AM_RANGE(0x150000, 0x150001) AM_WRITE(tecmo16_flipscreen_w) |
| 58 | | AM_RANGE(0x150010, 0x150011) AM_WRITE(tecmo16_sound_command_w) |
| 57 | AM_RANGE(0x150000, 0x150001) AM_WRITE(flipscreen_w) |
| 58 | AM_RANGE(0x150010, 0x150011) AM_WRITE(sound_command_w) |
| 59 | 59 | AM_RANGE(0x150030, 0x150031) AM_READ_PORT("DSW2") AM_WRITENOP /* ??? */ |
| 60 | 60 | AM_RANGE(0x150040, 0x150041) AM_READ_PORT("DSW1") |
| 61 | 61 | AM_RANGE(0x150050, 0x150051) AM_READ_PORT("P1_P2") |
| 62 | | AM_RANGE(0x160000, 0x160001) AM_WRITE(tecmo16_scroll_char_x_w) |
| 63 | | AM_RANGE(0x16000c, 0x16000d) AM_WRITE(tecmo16_scroll_x_w) |
| 64 | | AM_RANGE(0x160012, 0x160013) AM_WRITE(tecmo16_scroll_y_w) |
| 65 | | AM_RANGE(0x160018, 0x160019) AM_WRITE(tecmo16_scroll2_x_w) |
| 66 | | AM_RANGE(0x16001e, 0x16001f) AM_WRITE(tecmo16_scroll2_y_w) |
| 62 | AM_RANGE(0x160000, 0x160001) AM_WRITE(scroll_char_x_w) |
| 63 | AM_RANGE(0x16000c, 0x16000d) AM_WRITE(scroll_x_w) |
| 64 | AM_RANGE(0x160012, 0x160013) AM_WRITE(scroll_y_w) |
| 65 | AM_RANGE(0x160018, 0x160019) AM_WRITE(scroll2_x_w) |
| 66 | AM_RANGE(0x16001e, 0x16001f) AM_WRITE(scroll2_y_w) |
| 67 | 67 | ADDRESS_MAP_END |
| 68 | 68 | |
| 69 | 69 | static ADDRESS_MAP_START( ginkun_map, AS_PROGRAM, 16, tecmo16_state ) |
| 70 | 70 | AM_RANGE(0x000000, 0x07ffff) AM_ROM |
| 71 | 71 | AM_RANGE(0x100000, 0x103fff) AM_RAM /* Main RAM */ |
| 72 | | AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(tecmo16_charram_w) AM_SHARE("charram") |
| 73 | | AM_RANGE(0x120000, 0x120fff) AM_RAM_WRITE(tecmo16_videoram_w) AM_SHARE("videoram") |
| 74 | | AM_RANGE(0x121000, 0x121fff) AM_RAM_WRITE(tecmo16_colorram_w) AM_SHARE("colorram") |
| 75 | | AM_RANGE(0x122000, 0x122fff) AM_RAM_WRITE(tecmo16_videoram2_w) AM_SHARE("videoram2") |
| 76 | | AM_RANGE(0x123000, 0x123fff) AM_RAM_WRITE(tecmo16_colorram2_w) AM_SHARE("colorram2") |
| 72 | AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram") |
| 73 | AM_RANGE(0x120000, 0x120fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") |
| 74 | AM_RANGE(0x121000, 0x121fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram") |
| 75 | AM_RANGE(0x122000, 0x122fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") |
| 76 | AM_RANGE(0x123000, 0x123fff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2") |
| 77 | 77 | AM_RANGE(0x124000, 0x124fff) AM_RAM /* extra RAM for Riot */ |
| 78 | 78 | AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("spriteram") |
| 79 | 79 | AM_RANGE(0x140000, 0x141fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") |
| 80 | | AM_RANGE(0x150000, 0x150001) AM_WRITE(tecmo16_flipscreen_w) |
| 81 | | AM_RANGE(0x150010, 0x150011) AM_WRITE(tecmo16_sound_command_w) |
| 80 | AM_RANGE(0x150000, 0x150001) AM_WRITE(flipscreen_w) |
| 81 | AM_RANGE(0x150010, 0x150011) AM_WRITE(sound_command_w) |
| 82 | 82 | AM_RANGE(0x150020, 0x150021) AM_READ_PORT("EXTRA") AM_WRITENOP /* ??? */ |
| 83 | 83 | AM_RANGE(0x150030, 0x150031) AM_READ_PORT("DSW2") AM_WRITENOP /* ??? */ |
| 84 | 84 | AM_RANGE(0x150040, 0x150041) AM_READ_PORT("DSW1") |
| 85 | 85 | AM_RANGE(0x150050, 0x150051) AM_READ_PORT("P1_P2") |
| 86 | | AM_RANGE(0x160000, 0x160001) AM_WRITE(tecmo16_scroll_char_x_w) |
| 87 | | AM_RANGE(0x160006, 0x160007) AM_WRITE(tecmo16_scroll_char_y_w) |
| 88 | | AM_RANGE(0x16000c, 0x16000d) AM_WRITE(tecmo16_scroll_x_w) |
| 89 | | AM_RANGE(0x160012, 0x160013) AM_WRITE(tecmo16_scroll_y_w) |
| 90 | | AM_RANGE(0x160018, 0x160019) AM_WRITE(tecmo16_scroll2_x_w) |
| 91 | | AM_RANGE(0x16001e, 0x16001f) AM_WRITE(tecmo16_scroll2_y_w) |
| 86 | AM_RANGE(0x160000, 0x160001) AM_WRITE(scroll_char_x_w) |
| 87 | AM_RANGE(0x160006, 0x160007) AM_WRITE(scroll_char_y_w) |
| 88 | AM_RANGE(0x16000c, 0x16000d) AM_WRITE(scroll_x_w) |
| 89 | AM_RANGE(0x160012, 0x160013) AM_WRITE(scroll_y_w) |
| 90 | AM_RANGE(0x160018, 0x160019) AM_WRITE(scroll2_x_w) |
| 91 | AM_RANGE(0x16001e, 0x16001f) AM_WRITE(scroll2_y_w) |
| 92 | 92 | ADDRESS_MAP_END |
| 93 | 93 | |
| 94 | 94 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, tecmo16_state ) |
| r243663 | r243664 | |
| 382 | 382 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 383 | 383 | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 384 | 384 | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) |
| 385 | | MCFG_SCREEN_UPDATE_DRIVER(tecmo16_state, screen_update_tecmo16) |
| 385 | MCFG_SCREEN_UPDATE_DRIVER(tecmo16_state, screen_update) |
| 386 | 386 | |
| 387 | 387 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", tecmo16) |
| 388 | 388 | MCFG_PALETTE_ADD_INIT_BLACK("palette", 4096) |
| r243663 | r243664 | |
| 629 | 629 | |
| 630 | 630 | /******************************************************************************/ |
| 631 | 631 | |
| 632 | | GAME( 1992, fstarfrc, 0, fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (US)", 0 ) |
| 633 | | GAME( 1992, fstarfrcj, fstarfrc, fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (Japan)", 0 ) |
| 634 | | GAME( 1992, riot, 0, riot, riot, driver_device, 0, ROT0, "NMK", "Riot", 0 ) |
| 635 | | GAME( 1995, ginkun, 0, ginkun, ginkun, driver_device, 0, ROT0, "Tecmo", "Ganbare Ginkun", 0 ) |
| 632 | GAME( 1992, fstarfrc, 0, fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (US)", GAME_SUPPORTS_SAVE ) |
| 633 | GAME( 1992, fstarfrcj, fstarfrc, fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (Japan)", GAME_SUPPORTS_SAVE ) |
| 634 | GAME( 1992, riot, 0, riot, riot, driver_device, 0, ROT0, "NMK", "Riot", GAME_SUPPORTS_SAVE ) |
| 635 | GAME( 1995, ginkun, 0, ginkun, ginkun, driver_device, 0, ROT0, "Tecmo", "Ganbare Ginkun", GAME_SUPPORTS_SAVE ) |
trunk/src/mame/drivers/vball.c
| r243663 | r243664 | |
| 31 | 31 | -2) X Line Scrolling doesn't work 100% when Flip Screen Dip is set |
| 32 | 32 | -3) 2 Player Version - Dips for difficulty don't seem to work or just need more testing |
| 33 | 33 | |
| 34 | | -4) 2 Player Version - sound ROM is different and the adpmc chip is addressed differently |
| 34 | -4) 2 Player Version - sound ROM is different and the adpcm chip is addressed differently |
| 35 | 35 | Changed it to use a rom that was dumped from original PCB (readme below), |
| 36 | 36 | this makes the non-working ROM not used - i don't know where it come from. |
| 37 | 37 | |
| r243663 | r243664 | |
| 131 | 131 | /* Save the scroll x register value */ |
| 132 | 132 | if (scanline < 256) |
| 133 | 133 | { |
| 134 | | m_vb_scrollx[255 - scanline] = (m_vb_scrollx_hi + m_vb_scrollx_lo + 4); |
| 134 | m_scrollx[255 - scanline] = (m_scrollx_hi + m_scrollx_lo + 4); |
| 135 | 135 | } |
| 136 | 136 | } |
| 137 | 137 | |
| 138 | | WRITE8_MEMBER(vball_state::vball_irq_ack_w) |
| 138 | WRITE8_MEMBER(vball_state::irq_ack_w) |
| 139 | 139 | { |
| 140 | 140 | if (offset == 0) |
| 141 | 141 | m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); |
| r243663 | r243664 | |
| 154 | 154 | bit 6 = scroll y hi |
| 155 | 155 | bit 7 = ? |
| 156 | 156 | */ |
| 157 | | WRITE8_MEMBER(vball_state::vb_bankswitch_w) |
| 157 | WRITE8_MEMBER(vball_state::bankswitch_w) |
| 158 | 158 | { |
| 159 | | UINT8 *RAM = memregion("maincpu")->base(); |
| 160 | | membank("bank1")->set_base(&RAM[0x10000 + (0x4000 * (data & 1))]); |
| 159 | membank("mainbank")->set_entry(data & 1); |
| 161 | 160 | |
| 162 | 161 | if (m_gfxset != ((data & 0x20) ^ 0x20)) |
| 163 | 162 | { |
| 164 | 163 | m_gfxset = (data & 0x20) ^ 0x20; |
| 165 | | vb_mark_all_dirty(); |
| 164 | m_bg_tilemap->mark_all_dirty(); |
| 166 | 165 | } |
| 167 | | m_vb_scrolly_hi = (data & 0x40) << 2; |
| 166 | m_scrolly_hi = (data & 0x40) << 2; |
| 168 | 167 | } |
| 169 | 168 | |
| 170 | 169 | /* The sound system comes all but verbatim from Double Dragon */ |
| r243663 | r243664 | |
| 184 | 183 | bit 6 = sp prom bank |
| 185 | 184 | bit 7 = sp prom bank |
| 186 | 185 | */ |
| 187 | | WRITE8_MEMBER(vball_state::vb_scrollx_hi_w) |
| 186 | WRITE8_MEMBER(vball_state::scrollx_hi_w) |
| 188 | 187 | { |
| 189 | 188 | flip_screen_set(~data&1); |
| 190 | | m_vb_scrollx_hi = (data & 0x02) << 7; |
| 191 | | vb_bgprombank_w((data >> 2) & 0x07); |
| 192 | | vb_spprombank_w((data >> 5) & 0x07); |
| 193 | | //logerror("%04x: vb_scrollx_hi = %d\n", space.device().safe_pcbase(), m_vb_scrollx_hi); |
| 189 | m_scrollx_hi = (data & 0x02) << 7; |
| 190 | bgprombank_w((data >> 2) & 0x07); |
| 191 | spprombank_w((data >> 5) & 0x07); |
| 192 | //logerror("%04x: scrollx_hi = %d\n", space.device().safe_pcbase(), m_scrollx_hi); |
| 194 | 193 | } |
| 195 | 194 | |
| 196 | | WRITE8_MEMBER(vball_state::vb_scrollx_lo_w) |
| 195 | WRITE8_MEMBER(vball_state::scrollx_lo_w) |
| 197 | 196 | { |
| 198 | | m_vb_scrollx_lo = data; |
| 199 | | //logerror("%04x: vb_scrollx_lo =%d\n", space.device().safe_pcbase(), m_vb_scrollx_lo); |
| 197 | m_scrollx_lo = data; |
| 198 | //logerror("%04x: scrollx_lo =%d\n", space.device().safe_pcbase(), m_scrollx_lo); |
| 200 | 199 | } |
| 201 | 200 | |
| 202 | 201 | |
| r243663 | r243664 | |
| 211 | 210 | AM_RANGE(0x1004, 0x1004) AM_READ_PORT("DSW2") |
| 212 | 211 | AM_RANGE(0x1005, 0x1005) AM_READ_PORT("P3") |
| 213 | 212 | AM_RANGE(0x1006, 0x1006) AM_READ_PORT("P4") |
| 214 | | AM_RANGE(0x1008, 0x1008) AM_WRITE(vb_scrollx_hi_w) |
| 215 | | AM_RANGE(0x1009, 0x1009) AM_WRITE(vb_bankswitch_w) |
| 216 | | AM_RANGE(0x100a, 0x100b) AM_WRITE(vball_irq_ack_w) /* is there a scanline counter here? */ |
| 217 | | AM_RANGE(0x100c, 0x100c) AM_WRITE(vb_scrollx_lo_w) |
| 213 | AM_RANGE(0x1008, 0x1008) AM_WRITE(scrollx_hi_w) |
| 214 | AM_RANGE(0x1009, 0x1009) AM_WRITE(bankswitch_w) |
| 215 | AM_RANGE(0x100a, 0x100b) AM_WRITE(irq_ack_w) /* is there a scanline counter here? */ |
| 216 | AM_RANGE(0x100c, 0x100c) AM_WRITE(scrollx_lo_w) |
| 218 | 217 | AM_RANGE(0x100d, 0x100d) AM_WRITE(cpu_sound_command_w) |
| 219 | | AM_RANGE(0x100e, 0x100e) AM_WRITEONLY AM_SHARE("vb_scrolly_lo") |
| 220 | | AM_RANGE(0x2000, 0x2fff) AM_WRITE(vb_videoram_w) AM_SHARE("vb_videoram") |
| 221 | | AM_RANGE(0x3000, 0x3fff) AM_WRITE(vb_attrib_w) AM_SHARE("vb_attribram") |
| 222 | | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1") |
| 218 | AM_RANGE(0x100e, 0x100e) AM_WRITEONLY AM_SHARE("scrolly_lo") |
| 219 | AM_RANGE(0x2000, 0x2fff) AM_WRITE(videoram_w) AM_SHARE("videoram") |
| 220 | AM_RANGE(0x3000, 0x3fff) AM_WRITE(attrib_w) AM_SHARE("attribram") |
| 221 | AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank") |
| 223 | 222 | AM_RANGE(0x8000, 0xffff) AM_ROM |
| 224 | 223 | ADDRESS_MAP_END |
| 225 | 224 | |
| r243663 | r243664 | |
| 361 | 360 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) /* Used in 4 player mode, not supported in 2 player set */ |
| 362 | 361 | INPUT_PORTS_END |
| 363 | 362 | |
| 363 | void vball_state::machine_start() |
| 364 | { |
| 365 | membank("mainbank")->configure_entries(0, 2, memregion("maincpu")->base() + 0x10000, 0x4000); |
| 366 | } |
| 364 | 367 | |
| 368 | |
| 365 | 369 | static const gfx_layout charlayout = |
| 366 | 370 | { |
| 367 | 371 | 8,8, |
| r243663 | r243664 | |
| 407 | 411 | MCFG_SCREEN_ADD("screen", RASTER) |
| 408 | 412 | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 409 | 413 | MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 8, 248) /* based on ddragon driver */ |
| 410 | | MCFG_SCREEN_UPDATE_DRIVER(vball_state, screen_update_vb) |
| 414 | MCFG_SCREEN_UPDATE_DRIVER(vball_state, screen_update) |
| 411 | 415 | MCFG_SCREEN_PALETTE("palette") |
| 412 | 416 | |
| 413 | 417 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", vb) |
| r243663 | r243664 | |
| 557 | 561 | ROM_END |
| 558 | 562 | |
| 559 | 563 | |
| 560 | | GAME( 1988, vball, 0, vball, vball, driver_device, 0, ROT0, "Technos Japan", "U.S. Championship V'ball (US)", 0 ) |
| 561 | | GAME( 1988, vball2pj, vball, vball, vball2pj, driver_device, 0, ROT0, "Technos Japan", "U.S. Championship V'ball (Japan)", 0 ) |
| 562 | | GAME( 1988, vballb, vball, vball, vball, driver_device, 0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of US set)", 0 ) |
| 563 | | GAME( 1988, vball2pjb,vball, vball, vball, driver_device, 0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of Japan set)", 0 ) |
| 564 | GAME( 1988, vball, 0, vball, vball, driver_device, 0, ROT0, "Technos Japan", "U.S. Championship V'ball (US)", GAME_SUPPORTS_SAVE ) |
| 565 | GAME( 1988, vball2pj, vball, vball, vball2pj, driver_device, 0, ROT0, "Technos Japan", "U.S. Championship V'ball (Japan)", GAME_SUPPORTS_SAVE ) |
| 566 | GAME( 1988, vballb, vball, vball, vball, driver_device, 0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of US set)", GAME_SUPPORTS_SAVE ) |
| 567 | GAME( 1988, vball2pjb,vball, vball, vball, driver_device, 0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of Japan set)", GAME_SUPPORTS_SAVE ) |
trunk/src/mame/includes/tecmo.h
| r243663 | r243664 | |
| 6 | 6 | public: |
| 7 | 7 | tecmo_state(const machine_config &mconfig, device_type type, const char *tag) |
| 8 | 8 | : driver_device(mconfig, type, tag), |
| 9 | | m_txvideoram(*this, "txvideoram"), |
| 10 | | m_fgvideoram(*this, "fgvideoram"), |
| 11 | | m_bgvideoram(*this, "bgvideoram"), |
| 12 | | m_spriteram(*this, "spriteram"), |
| 13 | 9 | m_maincpu(*this, "maincpu"), |
| 14 | 10 | m_soundcpu(*this, "soundcpu"), |
| 15 | 11 | m_msm(*this, "msm"), |
| 16 | 12 | m_gfxdecode(*this, "gfxdecode"), |
| 17 | 13 | m_palette(*this, "palette"), |
| 18 | | m_sprgen(*this, "spritegen") |
| 19 | | { } |
| 14 | m_sprgen(*this, "spritegen"), |
| 15 | m_txvideoram(*this, "txvideoram"), |
| 16 | m_fgvideoram(*this, "fgvideoram"), |
| 17 | m_bgvideoram(*this, "bgvideoram"), |
| 18 | m_spriteram(*this, "spriteram") { } |
| 20 | 19 | |
| 21 | | int m_adpcm_pos; |
| 22 | | int m_adpcm_end; |
| 23 | | int m_adpcm_data; |
| 24 | | int m_video_type; |
| 20 | required_device<cpu_device> m_maincpu; |
| 21 | required_device<cpu_device> m_soundcpu; |
| 22 | optional_device<msm5205_device> m_msm; |
| 23 | required_device<gfxdecode_device> m_gfxdecode; |
| 24 | required_device<palette_device> m_palette; |
| 25 | required_device<tecmo_spr_device> m_sprgen; |
| 26 | |
| 25 | 27 | required_shared_ptr<UINT8> m_txvideoram; |
| 26 | 28 | required_shared_ptr<UINT8> m_fgvideoram; |
| 27 | 29 | required_shared_ptr<UINT8> m_bgvideoram; |
| 30 | required_shared_ptr<UINT8> m_spriteram; |
| 31 | |
| 28 | 32 | tilemap_t *m_tx_tilemap; |
| 29 | 33 | tilemap_t *m_fg_tilemap; |
| 30 | 34 | tilemap_t *m_bg_tilemap; |
| 31 | 35 | UINT8 m_fgscroll[3]; |
| 32 | 36 | UINT8 m_bgscroll[3]; |
| 33 | | required_shared_ptr<UINT8> m_spriteram; |
| 34 | | DECLARE_WRITE8_MEMBER(tecmo_bankswitch_w); |
| 35 | | DECLARE_WRITE8_MEMBER(tecmo_sound_command_w); |
| 36 | | DECLARE_WRITE8_MEMBER(tecmo_nmi_ack_w); |
| 37 | | DECLARE_WRITE8_MEMBER(tecmo_adpcm_end_w); |
| 38 | | DECLARE_READ8_MEMBER(tecmo_dswa_l_r); |
| 39 | | DECLARE_READ8_MEMBER(tecmo_dswa_h_r); |
| 40 | | DECLARE_READ8_MEMBER(tecmo_dswb_l_r); |
| 41 | | DECLARE_READ8_MEMBER(tecmo_dswb_h_r); |
| 42 | | DECLARE_WRITE8_MEMBER(tecmo_txvideoram_w); |
| 43 | | DECLARE_WRITE8_MEMBER(tecmo_fgvideoram_w); |
| 44 | | DECLARE_WRITE8_MEMBER(tecmo_bgvideoram_w); |
| 45 | | DECLARE_WRITE8_MEMBER(tecmo_fgscroll_w); |
| 46 | | DECLARE_WRITE8_MEMBER(tecmo_bgscroll_w); |
| 47 | | DECLARE_WRITE8_MEMBER(tecmo_flipscreen_w); |
| 48 | | DECLARE_WRITE8_MEMBER(tecmo_adpcm_start_w); |
| 49 | | DECLARE_WRITE8_MEMBER(tecmo_adpcm_vol_w); |
| 37 | int m_adpcm_pos; |
| 38 | int m_adpcm_end; |
| 39 | int m_adpcm_data; |
| 40 | int m_video_type; |
| 41 | |
| 42 | DECLARE_WRITE8_MEMBER(bankswitch_w); |
| 43 | DECLARE_WRITE8_MEMBER(sound_command_w); |
| 44 | DECLARE_WRITE8_MEMBER(nmi_ack_w); |
| 45 | DECLARE_WRITE8_MEMBER(adpcm_end_w); |
| 46 | DECLARE_READ8_MEMBER(dswa_l_r); |
| 47 | DECLARE_READ8_MEMBER(dswa_h_r); |
| 48 | DECLARE_READ8_MEMBER(dswb_l_r); |
| 49 | DECLARE_READ8_MEMBER(dswb_h_r); |
| 50 | DECLARE_WRITE8_MEMBER(txvideoram_w); |
| 51 | DECLARE_WRITE8_MEMBER(fgvideoram_w); |
| 52 | DECLARE_WRITE8_MEMBER(bgvideoram_w); |
| 53 | DECLARE_WRITE8_MEMBER(fgscroll_w); |
| 54 | DECLARE_WRITE8_MEMBER(bgscroll_w); |
| 55 | DECLARE_WRITE8_MEMBER(flipscreen_w); |
| 56 | DECLARE_WRITE8_MEMBER(adpcm_start_w); |
| 57 | DECLARE_WRITE8_MEMBER(adpcm_vol_w); |
| 58 | DECLARE_WRITE_LINE_MEMBER(adpcm_int); |
| 59 | |
| 50 | 60 | DECLARE_DRIVER_INIT(silkworm); |
| 51 | 61 | DECLARE_DRIVER_INIT(rygar); |
| 52 | 62 | DECLARE_DRIVER_INIT(backfirt); |
| 53 | 63 | DECLARE_DRIVER_INIT(gemini); |
| 64 | |
| 54 | 65 | TILE_GET_INFO_MEMBER(get_bg_tile_info); |
| 55 | 66 | TILE_GET_INFO_MEMBER(get_fg_tile_info); |
| 56 | 67 | TILE_GET_INFO_MEMBER(gemini_get_bg_tile_info); |
| 57 | 68 | TILE_GET_INFO_MEMBER(gemini_get_fg_tile_info); |
| 58 | 69 | TILE_GET_INFO_MEMBER(get_tx_tile_info); |
| 59 | | DECLARE_MACHINE_RESET(rygar); |
| 60 | | DECLARE_VIDEO_START(tecmo); |
| 61 | | UINT32 screen_update_tecmo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 70 | |
| 71 | virtual void machine_start(); |
| 72 | virtual void machine_reset(); |
| 73 | virtual void video_start(); |
| 74 | |
| 75 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 62 | 76 | void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect); |
| 63 | | DECLARE_WRITE_LINE_MEMBER(tecmo_adpcm_int); |
| 64 | | required_device<cpu_device> m_maincpu; |
| 65 | | required_device<cpu_device> m_soundcpu; |
| 66 | | required_device<msm5205_device> m_msm; |
| 67 | | required_device<gfxdecode_device> m_gfxdecode; |
| 68 | | required_device<palette_device> m_palette; |
| 69 | | required_device<tecmo_spr_device> m_sprgen; |
| 70 | 77 | }; |
trunk/src/mame/includes/tecmo16.h
| r243663 | r243664 | |
| 6 | 6 | public: |
| 7 | 7 | tecmo16_state(const machine_config &mconfig, device_type type, const char *tag) |
| 8 | 8 | : driver_device(mconfig, type, tag), |
| 9 | | m_videoram(*this, "videoram"), |
| 10 | | m_colorram(*this, "colorram"), |
| 11 | | m_videoram2(*this, "videoram2"), |
| 12 | | m_colorram2(*this, "colorram2"), |
| 13 | | m_charram(*this, "charram"), |
| 14 | | m_spriteram(*this, "spriteram"), |
| 15 | 9 | m_maincpu(*this, "maincpu"), |
| 16 | 10 | m_audiocpu(*this, "audiocpu"), |
| 17 | 11 | m_gfxdecode(*this, "gfxdecode"), |
| 18 | 12 | m_screen(*this, "screen"), |
| 19 | 13 | m_palette(*this, "palette"), |
| 20 | 14 | m_sprgen(*this, "spritegen"), |
| 21 | | m_mixer(*this, "mixer") |
| 15 | m_mixer(*this, "mixer"), |
| 16 | m_videoram(*this, "videoram"), |
| 17 | m_colorram(*this, "colorram"), |
| 18 | m_videoram2(*this, "videoram2"), |
| 19 | m_colorram2(*this, "colorram2"), |
| 20 | m_charram(*this, "charram"), |
| 21 | m_spriteram(*this, "spriteram") |
| 22 | 22 | { } |
| 23 | 23 | |
| 24 | required_device<cpu_device> m_maincpu; |
| 25 | required_device<cpu_device> m_audiocpu; |
| 26 | required_device<gfxdecode_device> m_gfxdecode; |
| 27 | required_device<screen_device> m_screen; |
| 28 | required_device<palette_device> m_palette; |
| 29 | required_device<tecmo_spr_device> m_sprgen; |
| 30 | required_device<tecmo_mix_device> m_mixer; |
| 31 | |
| 24 | 32 | required_shared_ptr<UINT16> m_videoram; |
| 25 | 33 | required_shared_ptr<UINT16> m_colorram; |
| 26 | 34 | required_shared_ptr<UINT16> m_videoram2; |
| 27 | 35 | required_shared_ptr<UINT16> m_colorram2; |
| 28 | 36 | required_shared_ptr<UINT16> m_charram; |
| 37 | required_shared_ptr<UINT16> m_spriteram; |
| 38 | |
| 29 | 39 | tilemap_t *m_fg_tilemap; |
| 30 | 40 | tilemap_t *m_bg_tilemap; |
| 31 | 41 | tilemap_t *m_tx_tilemap; |
| r243663 | r243664 | |
| 40 | 50 | UINT16 m_scroll2_y_w; |
| 41 | 51 | UINT16 m_scroll_char_x_w; |
| 42 | 52 | UINT16 m_scroll_char_y_w; |
| 43 | | required_shared_ptr<UINT16> m_spriteram; |
| 44 | | DECLARE_WRITE16_MEMBER(tecmo16_sound_command_w); |
| 45 | | DECLARE_WRITE16_MEMBER(tecmo16_videoram_w); |
| 46 | | DECLARE_WRITE16_MEMBER(tecmo16_colorram_w); |
| 47 | | DECLARE_WRITE16_MEMBER(tecmo16_videoram2_w); |
| 48 | | DECLARE_WRITE16_MEMBER(tecmo16_colorram2_w); |
| 49 | | DECLARE_WRITE16_MEMBER(tecmo16_charram_w); |
| 50 | | DECLARE_WRITE16_MEMBER(tecmo16_flipscreen_w); |
| 51 | | DECLARE_WRITE16_MEMBER(tecmo16_scroll_x_w); |
| 52 | | DECLARE_WRITE16_MEMBER(tecmo16_scroll_y_w); |
| 53 | | DECLARE_WRITE16_MEMBER(tecmo16_scroll2_x_w); |
| 54 | | DECLARE_WRITE16_MEMBER(tecmo16_scroll2_y_w); |
| 55 | | DECLARE_WRITE16_MEMBER(tecmo16_scroll_char_x_w); |
| 56 | | DECLARE_WRITE16_MEMBER(tecmo16_scroll_char_y_w); |
| 53 | |
| 54 | DECLARE_WRITE16_MEMBER(sound_command_w); |
| 55 | DECLARE_WRITE16_MEMBER(videoram_w); |
| 56 | DECLARE_WRITE16_MEMBER(colorram_w); |
| 57 | DECLARE_WRITE16_MEMBER(videoram2_w); |
| 58 | DECLARE_WRITE16_MEMBER(colorram2_w); |
| 59 | DECLARE_WRITE16_MEMBER(charram_w); |
| 60 | DECLARE_WRITE16_MEMBER(flipscreen_w); |
| 61 | DECLARE_WRITE16_MEMBER(scroll_x_w); |
| 62 | DECLARE_WRITE16_MEMBER(scroll_y_w); |
| 63 | DECLARE_WRITE16_MEMBER(scroll2_x_w); |
| 64 | DECLARE_WRITE16_MEMBER(scroll2_y_w); |
| 65 | DECLARE_WRITE16_MEMBER(scroll_char_x_w); |
| 66 | DECLARE_WRITE16_MEMBER(scroll_char_y_w); |
| 67 | |
| 57 | 68 | TILE_GET_INFO_MEMBER(fg_get_tile_info); |
| 58 | 69 | TILE_GET_INFO_MEMBER(bg_get_tile_info); |
| 59 | 70 | TILE_GET_INFO_MEMBER(tx_get_tile_info); |
| 71 | |
| 60 | 72 | virtual void video_start(); |
| 61 | 73 | DECLARE_VIDEO_START(ginkun); |
| 62 | 74 | DECLARE_VIDEO_START(riot); |
| 63 | | UINT32 screen_update_tecmo16(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); |
| 64 | | required_device<cpu_device> m_maincpu; |
| 65 | | required_device<cpu_device> m_audiocpu; |
| 66 | | required_device<gfxdecode_device> m_gfxdecode; |
| 67 | | required_device<screen_device> m_screen; |
| 68 | | required_device<palette_device> m_palette; |
| 69 | | required_device<tecmo_spr_device> m_sprgen; |
| 70 | | required_device<tecmo_mix_device> m_mixer; |
| 71 | 75 | |
| 76 | UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); |
| 77 | |
| 78 | void save_state(); |
| 72 | 79 | }; |