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 | }; |