trunk/src/mame/drivers/m72.c
| r245320 | r245321 | |
| 96 | 96 | |
| 97 | 97 | |
| 98 | 98 | |
| 99 | | |
| 100 | | |
| 101 | | |
| 102 | 99 | /***************************************************************************/ |
| 103 | 100 | |
| 104 | 101 | void m72_state::machine_start() |
| 105 | 102 | { |
| 106 | | m_scanline_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(m72_state::m72_scanline_interrupt),this)); |
| 107 | | |
| 108 | | save_item(NAME(m_mcu_sample_addr)); |
| 109 | | save_item(NAME(m_mcu_snd_cmd_latch)); |
| 103 | m_scanline_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(m72_state::scanline_interrupt),this)); |
| 110 | 104 | } |
| 111 | 105 | |
| 112 | 106 | MACHINE_START_MEMBER(m72_state,kengo) |
| 113 | 107 | { |
| 114 | 108 | m_scanline_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(m72_state::kengo_scanline_interrupt),this)); |
| 115 | | |
| 116 | | save_item(NAME(m_mcu_sample_addr)); |
| 117 | | save_item(NAME(m_mcu_snd_cmd_latch)); |
| 118 | 109 | } |
| 119 | 110 | |
| 120 | 111 | TIMER_CALLBACK_MEMBER(m72_state::synch_callback) |
| r245320 | r245321 | |
| 144 | 135 | m_scanline_timer->adjust(m_screen->time_until_pos(0)); |
| 145 | 136 | } |
| 146 | 137 | |
| 147 | | TIMER_CALLBACK_MEMBER(m72_state::m72_scanline_interrupt) |
| 138 | TIMER_CALLBACK_MEMBER(m72_state::scanline_interrupt) |
| 148 | 139 | { |
| 149 | 140 | int scanline = param; |
| 150 | 141 | |
| r245320 | r245321 | |
| 200 | 191 | |
| 201 | 192 | Protection emulation |
| 202 | 193 | |
| 203 | | Currently only available for lohtb2, since this is the only game |
| 204 | | with a dumped 8751. |
| 205 | | |
| 206 | 194 | The protection device does |
| 207 | 195 | |
| 208 | 196 | * provide startup code |
| r245320 | r245321 | |
| 221 | 209 | } |
| 222 | 210 | |
| 223 | 211 | |
| 224 | | WRITE16_MEMBER(m72_state::m72_main_mcu_sound_w) |
| 212 | WRITE16_MEMBER(m72_state::main_mcu_sound_w) |
| 225 | 213 | { |
| 226 | 214 | if (data & 0xfff0) |
| 227 | 215 | logerror("sound_w: %04x %04x\n", mem_mask, data); |
| r245320 | r245321 | |
| 233 | 221 | } |
| 234 | 222 | } |
| 235 | 223 | |
| 236 | | WRITE16_MEMBER(m72_state::m72_main_mcu_w) |
| 224 | WRITE16_MEMBER(m72_state::main_mcu_w) |
| 237 | 225 | { |
| 238 | 226 | UINT16 val = m_protection_ram[offset]; |
| 239 | 227 | |
| r245320 | r245321 | |
| 255 | 243 | machine().scheduler().synchronize( timer_expired_delegate(FUNC(m72_state::delayed_ram16_w),this), (offset<<16) | val, m_protection_ram); |
| 256 | 244 | } |
| 257 | 245 | |
| 258 | | WRITE8_MEMBER(m72_state::m72_mcu_data_w) |
| 246 | WRITE8_MEMBER(m72_state::mcu_data_w) |
| 259 | 247 | { |
| 260 | 248 | UINT16 val; |
| 261 | 249 | if (offset&1) val = (m_protection_ram[offset/2] & 0x00ff) | (data << 8); |
| r245320 | r245321 | |
| 264 | 252 | machine().scheduler().synchronize( timer_expired_delegate(FUNC(m72_state::delayed_ram16_w),this), ((offset >>1 ) << 16) | val, m_protection_ram); |
| 265 | 253 | } |
| 266 | 254 | |
| 267 | | READ8_MEMBER(m72_state::m72_mcu_data_r) |
| 255 | READ8_MEMBER(m72_state::mcu_data_r) |
| 268 | 256 | { |
| 269 | 257 | UINT8 ret; |
| 270 | 258 | |
| r245320 | r245321 | |
| 279 | 267 | return ret; |
| 280 | 268 | } |
| 281 | 269 | |
| 282 | | INTERRUPT_GEN_MEMBER(m72_state::m72_mcu_int) |
| 270 | INTERRUPT_GEN_MEMBER(m72_state::mcu_int) |
| 283 | 271 | { |
| 284 | 272 | //m_mcu_snd_cmd_latch |= 0x11; /* 0x10 is special as well - FIXME */ |
| 285 | 273 | m_mcu_snd_cmd_latch = 0x11;// | (machine.rand() & 1); /* 0x10 is special as well - FIXME */ |
| 286 | 274 | device.execute().set_input_line(1, ASSERT_LINE); |
| 287 | 275 | } |
| 288 | 276 | |
| 289 | | READ8_MEMBER(m72_state::m72_mcu_sample_r) |
| 277 | READ8_MEMBER(m72_state::mcu_sample_r) |
| 290 | 278 | { |
| 291 | 279 | UINT8 sample; |
| 292 | 280 | sample = memregion("samples")->base()[m_mcu_sample_addr++]; |
| 293 | 281 | return sample; |
| 294 | 282 | } |
| 295 | 283 | |
| 296 | | WRITE8_MEMBER(m72_state::m72_mcu_ack_w) |
| 284 | WRITE8_MEMBER(m72_state::mcu_ack_w) |
| 297 | 285 | { |
| 298 | 286 | m_mcu->set_input_line(1, CLEAR_LINE); |
| 299 | 287 | m_mcu_snd_cmd_latch = 0; |
| 300 | 288 | } |
| 301 | 289 | |
| 302 | | READ8_MEMBER(m72_state::m72_mcu_snd_r) |
| 290 | READ8_MEMBER(m72_state::mcu_snd_r) |
| 303 | 291 | { |
| 304 | 292 | return m_mcu_snd_cmd_latch; |
| 305 | 293 | } |
| 306 | 294 | |
| 307 | | READ8_MEMBER(m72_state::m72_mcu_port_r) |
| 295 | READ8_MEMBER(m72_state::mcu_port_r) |
| 308 | 296 | { |
| 309 | 297 | logerror("port read: %02x\n", offset); |
| 310 | 298 | return 0; |
| 311 | 299 | } |
| 312 | 300 | |
| 313 | | WRITE8_MEMBER(m72_state::m72_mcu_port_w) |
| 301 | WRITE8_MEMBER(m72_state::mcu_port_w) |
| 314 | 302 | { |
| 315 | 303 | if (offset == 1) |
| 316 | 304 | { |
| r245320 | r245321 | |
| 322 | 310 | |
| 323 | 311 | } |
| 324 | 312 | |
| 325 | | WRITE8_MEMBER(m72_state::m72_mcu_low_w) |
| 313 | WRITE8_MEMBER(m72_state::mcu_low_w) |
| 326 | 314 | { |
| 327 | 315 | m_mcu_sample_addr = (m_mcu_sample_addr & 0xffe000) | (data<<5); |
| 328 | 316 | logerror("low: %02x %02x %08x\n", offset, data, m_mcu_sample_addr); |
| 329 | 317 | } |
| 330 | 318 | |
| 331 | | WRITE8_MEMBER(m72_state::m72_mcu_high_w) |
| 319 | WRITE8_MEMBER(m72_state::mcu_high_w) |
| 332 | 320 | { |
| 333 | 321 | m_mcu_sample_addr = (m_mcu_sample_addr & 0x1fff) | (data<<(8+5)); |
| 334 | 322 | logerror("high: %02x %02x %08x\n", offset, data, m_mcu_sample_addr); |
| 335 | 323 | } |
| 336 | 324 | |
| 337 | | WRITE8_MEMBER(m72_state::m72_snd_cpu_sample_w) |
| 325 | READ8_MEMBER(m72_state::snd_cpu_sample_r) |
| 338 | 326 | { |
| 339 | | //m_dac->write_signed8(data); |
| 340 | | m_dac->write_unsigned8(data); |
| 341 | | } |
| 342 | | |
| 343 | | READ8_MEMBER(m72_state::m72_snd_cpu_sample_r) |
| 344 | | { |
| 345 | 327 | return m_mcu_sample_latch; |
| 346 | 328 | } |
| 347 | 329 | |
| r245320 | r245321 | |
| 353 | 335 | |
| 354 | 336 | m_protection_ram = auto_alloc_array(machine(), UINT16, 0x10000/2); |
| 355 | 337 | program.install_read_bank(0xb0000, 0xbffff, "bank1"); |
| 356 | | program.install_write_handler(0xb0000, 0xb0fff, write16_delegate(FUNC(m72_state::m72_main_mcu_w),this)); |
| 357 | | membank("bank1")->set_base(m_protection_ram); |
| 338 | program.install_write_handler(0xb0000, 0xb0fff, write16_delegate(FUNC(m72_state::main_mcu_w),this)); |
| 339 | membank("bank1")->configure_entry(0, m_protection_ram); |
| 340 | |
| 341 | save_pointer(NAME(m_protection_ram), 0x10000/2); |
| 342 | save_item(NAME(m_mcu_sample_latch)); |
| 343 | save_item(NAME(m_mcu_sample_addr)); |
| 344 | save_item(NAME(m_mcu_snd_cmd_latch)); |
| 358 | 345 | |
| 359 | 346 | //io.install_write_handler(0xc0, 0xc1, write16_delegate(FUNC(m72_state::loht_sample_trigger_w),this)); |
| 360 | | io.install_write_handler(0xc0, 0xc1, write16_delegate(FUNC(m72_state::m72_main_mcu_sound_w),this)); |
| 347 | io.install_write_handler(0xc0, 0xc1, write16_delegate(FUNC(m72_state::main_mcu_sound_w),this)); |
| 361 | 348 | |
| 362 | 349 | /* sound cpu */ |
| 363 | | sndio.install_write_handler(0x82, 0x82, 0xff, 0, write8_delegate(FUNC(m72_state::m72_snd_cpu_sample_w),this)); |
| 364 | | sndio.install_read_handler (0x84, 0x84, 0xff, 0, read8_delegate(FUNC(m72_state::m72_snd_cpu_sample_r),this)); |
| 350 | sndio.install_write_handler(0x82, 0x82, 0xff, 0, write8_delegate(FUNC(dac_device::write_unsigned8),(dac_device*)m_dac)); |
| 351 | sndio.install_read_handler (0x84, 0x84, 0xff, 0, read8_delegate(FUNC(m72_state::snd_cpu_sample_r),this)); |
| 365 | 352 | |
| 366 | 353 | /* lohtb2 */ |
| 367 | 354 | #if 0 |
| r245320 | r245321 | |
| 697 | 684 | m_maincpu->space(AS_PROGRAM).install_read_bank(0xb0000, 0xb0fff, "bank1"); |
| 698 | 685 | m_maincpu->space(AS_PROGRAM).install_read_handler(0xb0ffa, 0xb0ffb, read16_delegate(FUNC(m72_state::protection_r),this)); |
| 699 | 686 | m_maincpu->space(AS_PROGRAM).install_write_handler(0xb0000, 0xb0fff, write16_delegate(FUNC(m72_state::protection_w),this)); |
| 700 | | membank("bank1")->set_base(m_protection_ram); |
| 687 | membank("bank1")->configure_entry(0, m_protection_ram); |
| 688 | |
| 689 | save_pointer(NAME(m_protection_ram), 0x1000/2); |
| 701 | 690 | } |
| 702 | 691 | |
| 703 | 692 | DRIVER_INIT_MEMBER(m72_state,bchopper) |
| r245320 | r245321 | |
| 808 | 797 | AM_RANGE(0x00000, ROMSIZE-1) AM_ROM \ |
| 809 | 798 | AM_RANGE(WORKRAM, WORKRAM+0x3fff) AM_RAM /* work RAM */ \ |
| 810 | 799 | AM_RANGE(0xc0000, 0xc03ff) AM_RAM AM_SHARE("spriteram") \ |
| 811 | | AM_RANGE(0xc8000, 0xc8bff) AM_READWRITE(m72_palette1_r, m72_palette1_w) AM_SHARE("paletteram") \ |
| 812 | | AM_RANGE(0xcc000, 0xccbff) AM_READWRITE(m72_palette2_r, m72_palette2_w) AM_SHARE("paletteram2") \ |
| 813 | | AM_RANGE(0xd0000, 0xd3fff) AM_RAM_WRITE(m72_videoram1_w) AM_SHARE("videoram1") \ |
| 814 | | AM_RANGE(0xd8000, 0xdbfff) AM_RAM_WRITE(m72_videoram2_w) AM_SHARE("videoram2") \ |
| 800 | AM_RANGE(0xc8000, 0xc8bff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram") \ |
| 801 | AM_RANGE(0xcc000, 0xccbff) AM_READWRITE(palette2_r, palette2_w) AM_SHARE("paletteram2") \ |
| 802 | AM_RANGE(0xd0000, 0xd3fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1") \ |
| 803 | AM_RANGE(0xd8000, 0xdbfff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") \ |
| 815 | 804 | AM_RANGE(0xe0000, 0xeffff) AM_READWRITE(soundram_r, soundram_w) \ |
| 816 | 805 | AM_RANGE(0xffff0, 0xfffff) AM_ROM \ |
| 817 | 806 | ADDRESS_MAP_END |
| r245320 | r245321 | |
| 828 | 817 | AM_RANGE(0x9c000, 0x9ffff) AM_RAM /* work RAM */ |
| 829 | 818 | AM_RANGE(0xb0ffe, 0xb0fff) AM_WRITEONLY /* leftover from protection?? */ |
| 830 | 819 | AM_RANGE(0xc0000, 0xc03ff) AM_RAM AM_SHARE("spriteram") |
| 831 | | AM_RANGE(0xc8000, 0xc8bff) AM_READWRITE(m72_palette1_r, m72_palette1_w) AM_SHARE("paletteram") |
| 832 | | AM_RANGE(0xcc000, 0xccbff) AM_READWRITE(m72_palette2_r, m72_palette2_w) AM_SHARE("paletteram2") |
| 833 | | AM_RANGE(0xd0000, 0xd3fff) AM_RAM_WRITE(m72_videoram1_w) AM_SHARE("videoram1") |
| 834 | | AM_RANGE(0xd8000, 0xdbfff) AM_RAM_WRITE(m72_videoram2_w) AM_SHARE("videoram2") |
| 820 | AM_RANGE(0xc8000, 0xc8bff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram") |
| 821 | AM_RANGE(0xcc000, 0xccbff) AM_READWRITE(palette2_r, palette2_w) AM_SHARE("paletteram2") |
| 822 | AM_RANGE(0xd0000, 0xd3fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1") |
| 823 | AM_RANGE(0xd8000, 0xdbfff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") |
| 835 | 824 | AM_RANGE(0xffff0, 0xfffff) AM_ROM |
| 836 | 825 | ADDRESS_MAP_END |
| 837 | 826 | |
| r245320 | r245321 | |
| 840 | 829 | AM_RANGE(0x88000, 0x8bfff) AM_RAM /* work RAM */ |
| 841 | 830 | AM_RANGE(0xb0ffe, 0xb0fff) AM_WRITEONLY /* leftover from protection?? */ |
| 842 | 831 | AM_RANGE(0xc0000, 0xc03ff) AM_RAM AM_SHARE("spriteram") |
| 843 | | AM_RANGE(0xc8000, 0xc8bff) AM_READWRITE(m72_palette1_r, m72_palette1_w) AM_SHARE("paletteram") |
| 844 | | AM_RANGE(0xcc000, 0xccbff) AM_READWRITE(m72_palette2_r, m72_palette2_w) AM_SHARE("paletteram2") |
| 845 | | AM_RANGE(0xd0000, 0xd3fff) AM_RAM_WRITE(m72_videoram1_w) AM_SHARE("videoram1") |
| 846 | | AM_RANGE(0xd8000, 0xdbfff) AM_RAM_WRITE(m72_videoram2_w) AM_SHARE("videoram2") |
| 832 | AM_RANGE(0xc8000, 0xc8bff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram") |
| 833 | AM_RANGE(0xcc000, 0xccbff) AM_READWRITE(palette2_r, palette2_w) AM_SHARE("paletteram2") |
| 834 | AM_RANGE(0xd0000, 0xd3fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1") |
| 835 | AM_RANGE(0xd8000, 0xdbfff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") |
| 847 | 836 | AM_RANGE(0xffff0, 0xfffff) AM_ROM |
| 848 | 837 | ADDRESS_MAP_END |
| 849 | 838 | |
| 850 | 839 | static ADDRESS_MAP_START( rtype2_map, AS_PROGRAM, 16, m72_state ) |
| 851 | 840 | AM_RANGE(0x00000, 0x7ffff) AM_ROM |
| 852 | | AM_RANGE(0xb0000, 0xb0001) AM_WRITE(m72_irq_line_w) |
| 853 | | AM_RANGE(0xbc000, 0xbc001) AM_WRITE(m72_dmaon_w) |
| 841 | AM_RANGE(0xb0000, 0xb0001) AM_WRITE(irq_line_w) |
| 842 | AM_RANGE(0xbc000, 0xbc001) AM_WRITE(dmaon_w) |
| 854 | 843 | AM_RANGE(0xc0000, 0xc03ff) AM_RAM AM_SHARE("spriteram") |
| 855 | | AM_RANGE(0xc8000, 0xc8bff) AM_READWRITE(m72_palette1_r, m72_palette1_w) AM_SHARE("paletteram") |
| 856 | | AM_RANGE(0xd0000, 0xd3fff) AM_RAM_WRITE(m72_videoram1_w) AM_SHARE("videoram1") |
| 857 | | AM_RANGE(0xd4000, 0xd7fff) AM_RAM_WRITE(m72_videoram2_w) AM_SHARE("videoram2") |
| 858 | | AM_RANGE(0xd8000, 0xd8bff) AM_READWRITE(m72_palette2_r, m72_palette2_w) AM_SHARE("paletteram2") |
| 844 | AM_RANGE(0xc8000, 0xc8bff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram") |
| 845 | AM_RANGE(0xd0000, 0xd3fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1") |
| 846 | AM_RANGE(0xd4000, 0xd7fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") |
| 847 | AM_RANGE(0xd8000, 0xd8bff) AM_READWRITE(palette2_r, palette2_w) AM_SHARE("paletteram2") |
| 859 | 848 | AM_RANGE(0xe0000, 0xe3fff) AM_RAM /* work RAM */ |
| 860 | 849 | AM_RANGE(0xffff0, 0xfffff) AM_ROM |
| 861 | 850 | ADDRESS_MAP_END |
| r245320 | r245321 | |
| 863 | 852 | static ADDRESS_MAP_START( majtitle_map, AS_PROGRAM, 16, m72_state ) |
| 864 | 853 | AM_RANGE(0x00000, 0x7ffff) AM_ROM |
| 865 | 854 | AM_RANGE(0xa0000, 0xa03ff) AM_RAM AM_SHARE("majtitle_rowscr") |
| 866 | | AM_RANGE(0xa4000, 0xa4bff) AM_READWRITE(m72_palette2_r, m72_palette2_w) AM_SHARE("paletteram2") |
| 867 | | AM_RANGE(0xac000, 0xaffff) AM_RAM_WRITE(m72_videoram1_w) AM_SHARE("videoram1") |
| 868 | | AM_RANGE(0xb0000, 0xbffff) AM_RAM_WRITE(m72_videoram2_w) AM_SHARE("videoram2") /* larger than the other games */ |
| 855 | AM_RANGE(0xa4000, 0xa4bff) AM_READWRITE(palette2_r, palette2_w) AM_SHARE("paletteram2") |
| 856 | AM_RANGE(0xac000, 0xaffff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1") |
| 857 | AM_RANGE(0xb0000, 0xbffff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") /* larger than the other games */ |
| 869 | 858 | AM_RANGE(0xc0000, 0xc03ff) AM_RAM AM_SHARE("spriteram") |
| 870 | 859 | AM_RANGE(0xc8000, 0xc83ff) AM_RAM AM_SHARE("spriteram2") |
| 871 | | AM_RANGE(0xcc000, 0xccbff) AM_READWRITE(m72_palette1_r, m72_palette1_w) AM_SHARE("paletteram") |
| 860 | AM_RANGE(0xcc000, 0xccbff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram") |
| 872 | 861 | AM_RANGE(0xd0000, 0xd3fff) AM_RAM /* work RAM */ |
| 873 | | AM_RANGE(0xe0000, 0xe0001) AM_WRITE(m72_irq_line_w) |
| 862 | AM_RANGE(0xe0000, 0xe0001) AM_WRITE(irq_line_w) |
| 874 | 863 | AM_RANGE(0xe4000, 0xe4001) AM_WRITEONLY /* playfield enable? 1 during screen transitions, 0 otherwise */ |
| 875 | | AM_RANGE(0xec000, 0xec001) AM_WRITE(m72_dmaon_w) |
| 864 | AM_RANGE(0xec000, 0xec001) AM_WRITE(dmaon_w) |
| 876 | 865 | AM_RANGE(0xffff0, 0xfffff) AM_ROM |
| 877 | 866 | ADDRESS_MAP_END |
| 878 | 867 | |
| r245320 | r245321 | |
| 881 | 870 | AM_RANGE(0xa0000, 0xa3fff) AM_RAM /* work RAM */ |
| 882 | 871 | AM_RANGE(0xb0ffe, 0xb0fff) AM_WRITEONLY /* leftover from protection?? */ |
| 883 | 872 | AM_RANGE(0xc0000, 0xc03ff) AM_RAM AM_SHARE("spriteram") |
| 884 | | AM_RANGE(0xc8000, 0xc8bff) AM_READWRITE(m72_palette1_r, m72_palette1_w) AM_SHARE("paletteram") |
| 885 | | AM_RANGE(0xcc000, 0xccbff) AM_READWRITE(m72_palette2_r, m72_palette2_w) AM_SHARE("paletteram2") |
| 886 | | AM_RANGE(0xd0000, 0xd3fff) AM_RAM_WRITE(m72_videoram1_w) AM_SHARE("videoram1") |
| 887 | | AM_RANGE(0xd8000, 0xdbfff) AM_RAM_WRITE(m72_videoram2_w) AM_SHARE("videoram2") |
| 873 | AM_RANGE(0xc8000, 0xc8bff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram") |
| 874 | AM_RANGE(0xcc000, 0xccbff) AM_READWRITE(palette2_r, palette2_w) AM_SHARE("paletteram2") |
| 875 | AM_RANGE(0xd0000, 0xd3fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1") |
| 876 | AM_RANGE(0xd8000, 0xdbfff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") |
| 888 | 877 | AM_RANGE(0xffff0, 0xfffff) AM_ROM |
| 889 | 878 | ADDRESS_MAP_END |
| 890 | 879 | |
| 891 | 880 | static ADDRESS_MAP_START( hharryu_map, AS_PROGRAM, 16, m72_state ) |
| 892 | 881 | AM_RANGE(0x00000, 0x7ffff) AM_ROM |
| 893 | | AM_RANGE(0xa0000, 0xa0bff) AM_READWRITE(m72_palette1_r, m72_palette1_w) AM_SHARE("paletteram") |
| 894 | | AM_RANGE(0xa8000, 0xa8bff) AM_READWRITE(m72_palette2_r, m72_palette2_w) AM_SHARE("paletteram2") |
| 895 | | AM_RANGE(0xb0000, 0xb0001) AM_WRITE(m72_irq_line_w) |
| 896 | | AM_RANGE(0xbc000, 0xbc001) AM_WRITE(m72_dmaon_w) |
| 882 | AM_RANGE(0xa0000, 0xa0bff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram") |
| 883 | AM_RANGE(0xa8000, 0xa8bff) AM_READWRITE(palette2_r, palette2_w) AM_SHARE("paletteram2") |
| 884 | AM_RANGE(0xb0000, 0xb0001) AM_WRITE(irq_line_w) |
| 885 | AM_RANGE(0xbc000, 0xbc001) AM_WRITE(dmaon_w) |
| 897 | 886 | AM_RANGE(0xb0ffe, 0xb0fff) AM_WRITEONLY /* leftover from protection?? */ |
| 898 | 887 | AM_RANGE(0xc0000, 0xc03ff) AM_RAM AM_SHARE("spriteram") |
| 899 | | AM_RANGE(0xd0000, 0xd3fff) AM_RAM_WRITE(m72_videoram1_w) AM_SHARE("videoram1") |
| 900 | | AM_RANGE(0xd4000, 0xd7fff) AM_RAM_WRITE(m72_videoram2_w) AM_SHARE("videoram2") |
| 888 | AM_RANGE(0xd0000, 0xd3fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1") |
| 889 | AM_RANGE(0xd4000, 0xd7fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") |
| 901 | 890 | AM_RANGE(0xe0000, 0xe3fff) AM_RAM /* work RAM */ |
| 902 | 891 | AM_RANGE(0xffff0, 0xfffff) AM_ROM |
| 903 | 892 | ADDRESS_MAP_END |
| 904 | 893 | |
| 905 | 894 | static ADDRESS_MAP_START( kengo_map, AS_PROGRAM, 16, m72_state ) |
| 906 | 895 | AM_RANGE(0x00000, 0x7ffff) AM_ROM |
| 907 | | AM_RANGE(0xa0000, 0xa0bff) AM_READWRITE(m72_palette1_r, m72_palette1_w) AM_SHARE("paletteram") |
| 908 | | AM_RANGE(0xa8000, 0xa8bff) AM_READWRITE(m72_palette2_r, m72_palette2_w) AM_SHARE("paletteram2") |
| 909 | | AM_RANGE(0xb0000, 0xb0001) AM_WRITE(m72_irq_line_w) |
| 896 | AM_RANGE(0xa0000, 0xa0bff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram") |
| 897 | AM_RANGE(0xa8000, 0xa8bff) AM_READWRITE(palette2_r, palette2_w) AM_SHARE("paletteram2") |
| 898 | AM_RANGE(0xb0000, 0xb0001) AM_WRITE(irq_line_w) |
| 910 | 899 | AM_RANGE(0xb4000, 0xb4001) AM_WRITENOP /* ??? */ |
| 911 | | AM_RANGE(0xbc000, 0xbc001) AM_WRITE(m72_dmaon_w) |
| 900 | AM_RANGE(0xbc000, 0xbc001) AM_WRITE(dmaon_w) |
| 912 | 901 | AM_RANGE(0xc0000, 0xc03ff) AM_RAM AM_SHARE("spriteram") |
| 913 | | AM_RANGE(0x80000, 0x83fff) AM_RAM_WRITE(m72_videoram1_w) AM_SHARE("videoram1") |
| 914 | | AM_RANGE(0x84000, 0x87fff) AM_RAM_WRITE(m72_videoram2_w) AM_SHARE("videoram2") |
| 902 | AM_RANGE(0x80000, 0x83fff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1") |
| 903 | AM_RANGE(0x84000, 0x87fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") |
| 915 | 904 | AM_RANGE(0xe0000, 0xe3fff) AM_RAM /* work RAM */ |
| 916 | 905 | AM_RANGE(0xffff0, 0xfffff) AM_ROM |
| 917 | 906 | ADDRESS_MAP_END |
| r245320 | r245321 | |
| 921 | 910 | AM_RANGE(0x02, 0x03) AM_READ_PORT("IN1") |
| 922 | 911 | AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW") |
| 923 | 912 | AM_RANGE(0x00, 0x01) AM_DEVWRITE("m72", m72_audio_device, sound_command_w) |
| 924 | | AM_RANGE(0x02, 0x03) AM_WRITE(m72_port02_w) /* coin counters, reset sound cpu, other stuff? */ |
| 925 | | AM_RANGE(0x04, 0x05) AM_WRITE(m72_dmaon_w) |
| 926 | | AM_RANGE(0x06, 0x07) AM_WRITE(m72_irq_line_w) |
| 913 | AM_RANGE(0x02, 0x03) AM_WRITE(port02_w) /* coin counters, reset sound cpu, other stuff? */ |
| 914 | AM_RANGE(0x04, 0x05) AM_WRITE(dmaon_w) |
| 915 | AM_RANGE(0x06, 0x07) AM_WRITE(irq_line_w) |
| 927 | 916 | //AM_RANGE(0x40, 0x43) AM_WRITENOP /* Interrupt controller, only written to at bootup */ |
| 928 | | AM_RANGE(0x80, 0x81) AM_WRITE(m72_scrolly1_w) |
| 929 | | AM_RANGE(0x82, 0x83) AM_WRITE(m72_scrollx1_w) |
| 930 | | AM_RANGE(0x84, 0x85) AM_WRITE(m72_scrolly2_w) |
| 931 | | AM_RANGE(0x86, 0x87) AM_WRITE(m72_scrollx2_w) |
| 917 | AM_RANGE(0x80, 0x81) AM_WRITE(scrolly1_w) |
| 918 | AM_RANGE(0x82, 0x83) AM_WRITE(scrollx1_w) |
| 919 | AM_RANGE(0x84, 0x85) AM_WRITE(scrolly2_w) |
| 920 | AM_RANGE(0x86, 0x87) AM_WRITE(scrollx2_w) |
| 932 | 921 | /* { 0xc0, 0xc0 trigger sample, filled by init_ function */ |
| 933 | 922 | ADDRESS_MAP_END |
| 934 | 923 | |
| r245320 | r245321 | |
| 939 | 928 | AM_RANGE(0x00, 0x01) AM_DEVWRITE("m72", m72_audio_device, sound_command_w) |
| 940 | 929 | AM_RANGE(0x02, 0x03) AM_WRITE(rtype2_port02_w) |
| 941 | 930 | AM_RANGE(0x40, 0x43) AM_WRITENOP /* Interrupt controller, only written to at bootup */ |
| 942 | | AM_RANGE(0x80, 0x81) AM_WRITE(m72_scrolly1_w) |
| 943 | | AM_RANGE(0x82, 0x83) AM_WRITE(m72_scrollx1_w) |
| 944 | | AM_RANGE(0x84, 0x85) AM_WRITE(m72_scrolly2_w) |
| 945 | | AM_RANGE(0x86, 0x87) AM_WRITE(m72_scrollx2_w) |
| 931 | AM_RANGE(0x80, 0x81) AM_WRITE(scrolly1_w) |
| 932 | AM_RANGE(0x82, 0x83) AM_WRITE(scrollx1_w) |
| 933 | AM_RANGE(0x84, 0x85) AM_WRITE(scrolly2_w) |
| 934 | AM_RANGE(0x86, 0x87) AM_WRITE(scrollx2_w) |
| 946 | 935 | ADDRESS_MAP_END |
| 947 | 936 | |
| 948 | 937 | static ADDRESS_MAP_START( poundfor_portmap, AS_IO, 16, m72_state ) |
| r245320 | r245321 | |
| 952 | 941 | AM_RANGE(0x00, 0x01) AM_DEVWRITE("m72", m72_audio_device, sound_command_w) |
| 953 | 942 | AM_RANGE(0x02, 0x03) AM_WRITE(rtype2_port02_w) |
| 954 | 943 | AM_RANGE(0x40, 0x43) AM_WRITENOP /* Interrupt controller, only written to at bootup */ |
| 955 | | AM_RANGE(0x80, 0x81) AM_WRITE(m72_scrolly1_w) |
| 956 | | AM_RANGE(0x82, 0x83) AM_WRITE(m72_scrollx1_w) |
| 957 | | AM_RANGE(0x84, 0x85) AM_WRITE(m72_scrolly2_w) |
| 958 | | AM_RANGE(0x86, 0x87) AM_WRITE(m72_scrollx2_w) |
| 944 | AM_RANGE(0x80, 0x81) AM_WRITE(scrolly1_w) |
| 945 | AM_RANGE(0x82, 0x83) AM_WRITE(scrollx1_w) |
| 946 | AM_RANGE(0x84, 0x85) AM_WRITE(scrolly2_w) |
| 947 | AM_RANGE(0x86, 0x87) AM_WRITE(scrollx2_w) |
| 959 | 948 | ADDRESS_MAP_END |
| 960 | 949 | |
| 961 | 950 | static ADDRESS_MAP_START( majtitle_portmap, AS_IO, 16, m72_state ) |
| r245320 | r245321 | |
| 965 | 954 | AM_RANGE(0x00, 0x01) AM_DEVWRITE("m72", m72_audio_device, sound_command_w) |
| 966 | 955 | AM_RANGE(0x02, 0x03) AM_WRITE(rtype2_port02_w) |
| 967 | 956 | AM_RANGE(0x40, 0x43) AM_WRITENOP /* Interrupt controller, only written to at bootup */ |
| 968 | | AM_RANGE(0x80, 0x81) AM_WRITE(m72_scrolly1_w) |
| 969 | | AM_RANGE(0x82, 0x83) AM_WRITE(m72_scrollx1_w) |
| 970 | | AM_RANGE(0x84, 0x85) AM_WRITE(m72_scrolly2_w) |
| 971 | | AM_RANGE(0x86, 0x87) AM_WRITE(m72_scrollx2_w) |
| 957 | AM_RANGE(0x80, 0x81) AM_WRITE(scrolly1_w) |
| 958 | AM_RANGE(0x82, 0x83) AM_WRITE(scrollx1_w) |
| 959 | AM_RANGE(0x84, 0x85) AM_WRITE(scrolly2_w) |
| 960 | AM_RANGE(0x86, 0x87) AM_WRITE(scrollx2_w) |
| 972 | 961 | AM_RANGE(0x8e, 0x8f) AM_WRITE(majtitle_gfx_ctrl_w) |
| 973 | 962 | ADDRESS_MAP_END |
| 974 | 963 | |
| r245320 | r245321 | |
| 978 | 967 | AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW") |
| 979 | 968 | AM_RANGE(0x00, 0x01) AM_DEVWRITE("m72", m72_audio_device, sound_command_w) |
| 980 | 969 | AM_RANGE(0x02, 0x03) AM_WRITE(rtype2_port02_w) /* coin counters, reset sound cpu, other stuff? */ |
| 981 | | AM_RANGE(0x04, 0x05) AM_WRITE(m72_dmaon_w) |
| 982 | | AM_RANGE(0x06, 0x07) AM_WRITE(m72_irq_line_w) |
| 970 | AM_RANGE(0x04, 0x05) AM_WRITE(dmaon_w) |
| 971 | AM_RANGE(0x06, 0x07) AM_WRITE(irq_line_w) |
| 983 | 972 | AM_RANGE(0x40, 0x43) AM_WRITENOP /* Interrupt controller, only written to at bootup */ |
| 984 | | AM_RANGE(0x80, 0x81) AM_WRITE(m72_scrolly1_w) |
| 985 | | AM_RANGE(0x82, 0x83) AM_WRITE(m72_scrollx1_w) |
| 986 | | AM_RANGE(0x84, 0x85) AM_WRITE(m72_scrolly2_w) |
| 987 | | AM_RANGE(0x86, 0x87) AM_WRITE(m72_scrollx2_w) |
| 973 | AM_RANGE(0x80, 0x81) AM_WRITE(scrolly1_w) |
| 974 | AM_RANGE(0x82, 0x83) AM_WRITE(scrollx1_w) |
| 975 | AM_RANGE(0x84, 0x85) AM_WRITE(scrolly2_w) |
| 976 | AM_RANGE(0x86, 0x87) AM_WRITE(scrollx2_w) |
| 988 | 977 | ADDRESS_MAP_END |
| 989 | 978 | |
| 990 | 979 | static ADDRESS_MAP_START( kengo_portmap, AS_IO, 16, m72_state ) |
| r245320 | r245321 | |
| 993 | 982 | AM_RANGE(0x04, 0x05) AM_READ_PORT("DSW") |
| 994 | 983 | AM_RANGE(0x00, 0x01) AM_DEVWRITE("m72", m72_audio_device, sound_command_w) |
| 995 | 984 | AM_RANGE(0x02, 0x03) AM_WRITE(rtype2_port02_w) |
| 996 | | AM_RANGE(0x80, 0x81) AM_WRITE(m72_scrolly1_w) |
| 997 | | AM_RANGE(0x82, 0x83) AM_WRITE(m72_scrollx1_w) |
| 998 | | AM_RANGE(0x84, 0x85) AM_WRITE(m72_scrolly2_w) |
| 999 | | AM_RANGE(0x86, 0x87) AM_WRITE(m72_scrollx2_w) |
| 985 | AM_RANGE(0x80, 0x81) AM_WRITE(scrolly1_w) |
| 986 | AM_RANGE(0x82, 0x83) AM_WRITE(scrollx1_w) |
| 987 | AM_RANGE(0x84, 0x85) AM_WRITE(scrolly2_w) |
| 988 | AM_RANGE(0x86, 0x87) AM_WRITE(scrollx2_w) |
| 1000 | 989 | // AM_RANGE(0x8c, 0x8f) AM_WRITENOP /* ??? */ |
| 1001 | 990 | ADDRESS_MAP_END |
| 1002 | 991 | |
| r245320 | r245321 | |
| 1048 | 1037 | |
| 1049 | 1038 | static ADDRESS_MAP_START( mcu_io_map, AS_IO, 8, m72_state ) |
| 1050 | 1039 | /* External access */ |
| 1051 | | AM_RANGE(0x0000, 0x0000) AM_READWRITE(m72_mcu_sample_r, m72_mcu_low_w) |
| 1052 | | AM_RANGE(0x0001, 0x0001) AM_WRITE(m72_mcu_high_w) |
| 1053 | | AM_RANGE(0x0002, 0x0002) AM_READWRITE(m72_mcu_snd_r, m72_mcu_ack_w) |
| 1040 | AM_RANGE(0x0000, 0x0000) AM_READWRITE(mcu_sample_r, mcu_low_w) |
| 1041 | AM_RANGE(0x0001, 0x0001) AM_WRITE(mcu_high_w) |
| 1042 | AM_RANGE(0x0002, 0x0002) AM_READWRITE(mcu_snd_r, mcu_ack_w) |
| 1054 | 1043 | /* shared at b0000 - b0fff on the main cpu */ |
| 1055 | | AM_RANGE(0xc000, 0xcfff) AM_READWRITE(m72_mcu_data_r,m72_mcu_data_w ) |
| 1044 | AM_RANGE(0xc000, 0xcfff) AM_READWRITE(mcu_data_r,mcu_data_w ) |
| 1056 | 1045 | |
| 1057 | 1046 | /* Ports */ |
| 1058 | | AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P3) AM_READWRITE(m72_mcu_port_r, m72_mcu_port_w) |
| 1047 | AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P3) AM_READWRITE(mcu_port_r, mcu_port_w) |
| 1059 | 1048 | ADDRESS_MAP_END |
| 1060 | 1049 | |
| 1061 | 1050 | #define COIN_MODE_1 \ |
| r245320 | r245321 | |
| 1793 | 1782 | |
| 1794 | 1783 | MCFG_SCREEN_ADD("screen", RASTER) |
| 1795 | 1784 | MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256) |
| 1796 | | MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m72) |
| 1785 | MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update) |
| 1797 | 1786 | MCFG_SCREEN_PALETTE("palette") |
| 1798 | 1787 | |
| 1799 | 1788 | MCFG_VIDEO_START_OVERRIDE(m72_state,m72) |
| r245320 | r245321 | |
| 1811 | 1800 | |
| 1812 | 1801 | MCFG_CPU_ADD("mcu",I8751, XTAL_8MHz) /* Uses its own XTAL */ |
| 1813 | 1802 | MCFG_CPU_IO_MAP(mcu_io_map) |
| 1814 | | MCFG_CPU_VBLANK_INT_DRIVER("screen", m72_state, m72_mcu_int) |
| 1803 | MCFG_CPU_VBLANK_INT_DRIVER("screen", m72_state, mcu_int) |
| 1815 | 1804 | |
| 1816 | 1805 | MACHINE_CONFIG_END |
| 1817 | 1806 | |
| r245320 | r245321 | |
| 1926 | 1915 | |
| 1927 | 1916 | MCFG_SCREEN_ADD("screen", RASTER) |
| 1928 | 1917 | MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256) |
| 1929 | | MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m72) |
| 1918 | MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update) |
| 1930 | 1919 | MCFG_SCREEN_PALETTE("palette") |
| 1931 | 1920 | |
| 1932 | 1921 | MCFG_VIDEO_START_OVERRIDE(m72_state,rtype2) |
| r245320 | r245321 | |
| 1957 | 1946 | |
| 1958 | 1947 | MCFG_SCREEN_ADD("screen", RASTER) |
| 1959 | 1948 | MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256) |
| 1960 | | MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m72) |
| 1949 | MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update) |
| 1961 | 1950 | MCFG_SCREEN_PALETTE("palette") |
| 1962 | 1951 | |
| 1963 | 1952 | MCFG_VIDEO_START_OVERRIDE(m72_state,hharry) |
| r245320 | r245321 | |
| 1988 | 1977 | |
| 1989 | 1978 | MCFG_SCREEN_ADD("screen", RASTER) |
| 1990 | 1979 | MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256) |
| 1991 | | MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m72) |
| 1980 | MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update) |
| 1992 | 1981 | MCFG_SCREEN_PALETTE("palette") |
| 1993 | 1982 | |
| 1994 | 1983 | MCFG_VIDEO_START_OVERRIDE(m72_state,hharry) |
| r245320 | r245321 | |
| 2020 | 2009 | |
| 2021 | 2010 | MCFG_SCREEN_ADD("screen", RASTER) |
| 2022 | 2011 | MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256) |
| 2023 | | MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m72) |
| 2012 | MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update) |
| 2024 | 2013 | MCFG_SCREEN_PALETTE("palette") |
| 2025 | 2014 | |
| 2026 | 2015 | MCFG_VIDEO_START_OVERRIDE(m72_state,hharryu) |
| r245320 | r245321 | |
| 2049 | 2038 | |
| 2050 | 2039 | MCFG_SCREEN_ADD("screen", RASTER) |
| 2051 | 2040 | MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256) |
| 2052 | | MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m72) |
| 2041 | MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update) |
| 2053 | 2042 | MCFG_SCREEN_PALETTE("palette") |
| 2054 | 2043 | |
| 2055 | 2044 | MCFG_VIDEO_START_OVERRIDE(m72_state,poundfor) |
| r245320 | r245321 | |
| 2080 | 2069 | |
| 2081 | 2070 | MCFG_SCREEN_ADD("screen", RASTER) |
| 2082 | 2071 | MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256) |
| 2083 | | MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m72) |
| 2072 | MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update) |
| 2084 | 2073 | MCFG_SCREEN_PALETTE("palette") |
| 2085 | 2074 | |
| 2086 | 2075 | MCFG_VIDEO_START_OVERRIDE(m72_state,poundfor) |
| r245320 | r245321 | |
| 3502 | 3491 | // the program roms failing their tests. This is why we still have simulation code for many games |
| 3503 | 3492 | // despite having Japanese version MCU roms for several of them. See notes next to the sets |
| 3504 | 3493 | |
| 3505 | | GAME( 1987, rtype, 0, rtype, rtype, driver_device, 0, ROT0, "Irem", "R-Type (World)", GAME_NO_COCKTAIL ) |
| 3506 | | GAME( 1987, rtypej, rtype, rtype, rtype, driver_device, 0, ROT0, "Irem", "R-Type (Japan)", GAME_NO_COCKTAIL ) |
| 3507 | | GAME( 1987, rtypejp, rtype, rtype, rtypep, driver_device, 0, ROT0, "Irem", "R-Type (Japan prototype)", GAME_NO_COCKTAIL ) |
| 3508 | | GAME( 1987, rtypeu, rtype, rtype, rtype, driver_device, 0, ROT0, "Irem (Nintendo of America license)", "R-Type (US)", GAME_NO_COCKTAIL ) |
| 3509 | | GAME( 1987, rtypeb, rtype, rtype, rtype, driver_device, 0, ROT0, "bootleg", "R-Type (World bootleg)", GAME_NO_COCKTAIL ) |
| 3494 | GAME( 1987, rtype, 0, rtype, rtype, driver_device, 0, ROT0, "Irem", "R-Type (World)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3495 | GAME( 1987, rtypej, rtype, rtype, rtype, driver_device, 0, ROT0, "Irem", "R-Type (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3496 | GAME( 1987, rtypejp, rtype, rtype, rtypep, driver_device, 0, ROT0, "Irem", "R-Type (Japan prototype)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3497 | GAME( 1987, rtypeu, rtype, rtype, rtype, driver_device, 0, ROT0, "Irem (Nintendo of America license)", "R-Type (US)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3498 | GAME( 1987, rtypeb, rtype, rtype, rtype, driver_device, 0, ROT0, "bootleg", "R-Type (World bootleg)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3510 | 3499 | |
| 3511 | | GAME( 1987, bchopper, 0, m72, bchopper, m72_state, bchopper, ROT0, "Irem", "Battle Chopper", GAME_NO_COCKTAIL ) |
| 3512 | | GAME( 1987, mrheli, bchopper, m72_8751, bchopper, m72_state, m72_8751, ROT0, "Irem", "Mr. HELI no Daibouken (Japan)", GAME_NO_COCKTAIL ) |
| 3500 | GAME( 1987, bchopper, 0, m72, bchopper, m72_state, bchopper, ROT0, "Irem", "Battle Chopper", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3501 | GAME( 1987, mrheli, bchopper, m72_8751, bchopper, m72_state, m72_8751, ROT0, "Irem", "Mr. HELI no Daibouken (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3513 | 3502 | |
| 3514 | | GAME( 1988, nspirit, 0, m72, nspirit, m72_state, nspirit, ROT0, "Irem", "Ninja Spirit", GAME_NO_COCKTAIL ) // doesn't wait / check for japan warning string.. fails rom check if used with japanese mcu rom (World version?) |
| 3515 | | GAME( 1988, nspiritj, nspirit, m72_8751, nspirit, m72_state, m72_8751, ROT0, "Irem", "Saigo no Nindou (Japan)", GAME_NO_COCKTAIL ) // waits for japan warning screen, works with our mcu dump, corrupt warning screen due to priority / mixing errors (Japan Version) |
| 3503 | GAME( 1988, nspirit, 0, m72, nspirit, m72_state, nspirit, ROT0, "Irem", "Ninja Spirit", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) // doesn't wait / check for japan warning string.. fails rom check if used with japanese mcu rom (World version?) |
| 3504 | GAME( 1988, nspiritj, nspirit, m72_8751, nspirit, m72_state, m72_8751, ROT0, "Irem", "Saigo no Nindou (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) // waits for japan warning screen, works with our mcu dump, corrupt warning screen due to priority / mixing errors (Japan Version) |
| 3516 | 3505 | |
| 3517 | | GAME( 1988, imgfight, 0, m72, imgfight, m72_state, imgfight, ROT270, "Irem", "Image Fight (World, revision A)", 0 ) // doesn't wait / check for japan warning string.. fails rom check if used with japanese mcu rom (World version?) |
| 3518 | | GAME( 1988, imgfightj, imgfight, m72_8751, imgfight, m72_state, m72_8751, ROT270, "Irem", "Image Fight (Japan)", 0 ) // waits for japan warning screen, works with our mcu dump, can't actually see warning screen due to priority / mixing errors, check tilemap viewer (Japan Version) |
| 3506 | GAME( 1988, imgfight, 0, m72, imgfight, m72_state, imgfight, ROT270, "Irem", "Image Fight (World, revision A)", GAME_SUPPORTS_SAVE ) // doesn't wait / check for japan warning string.. fails rom check if used with japanese mcu rom (World version?) |
| 3507 | GAME( 1988, imgfightj, imgfight, m72_8751, imgfight, m72_state, m72_8751, ROT270, "Irem", "Image Fight (Japan)", GAME_SUPPORTS_SAVE ) // waits for japan warning screen, works with our mcu dump, can't actually see warning screen due to priority / mixing errors, check tilemap viewer (Japan Version) |
| 3519 | 3508 | |
| 3520 | | GAME( 1989, loht, 0, m72, loht, m72_state, loht, ROT0, "Irem", "Legend of Hero Tonma", GAME_NO_COCKTAIL ) // fails rom check if used with Japan MCU rom (World version?) |
| 3521 | | GAME( 1989, lohtj, loht, m72_8751, loht, m72_state, m72_8751, ROT0, "Irem", "Legend of Hero Tonma (Japan)", GAME_NO_COCKTAIL ) // waits for japan warning screen, works with our mcu dump (Japan Version) |
| 3522 | | GAME( 1989, lohtb2, loht, m72_8751, loht, m72_state, m72_8751, ROT0, "bootleg", "Legend of Hero Tonma (Japan, bootleg with i8751)", GAME_NO_COCKTAIL ) // works like above, mcu code is the same as the real code, probably just an alt revision on a bootleg board |
| 3523 | | GAME( 1989, lohtb, loht, m72, loht, driver_device, 0, ROT0, "bootleg", "Legend of Hero Tonma (unprotected bootleg)", GAME_NOT_WORKING| GAME_NO_COCKTAIL ) |
| 3509 | GAME( 1989, loht, 0, m72, loht, m72_state, loht, ROT0, "Irem", "Legend of Hero Tonma", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) // fails rom check if used with Japan MCU rom (World version?) |
| 3510 | GAME( 1989, lohtj, loht, m72_8751, loht, m72_state, m72_8751, ROT0, "Irem", "Legend of Hero Tonma (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) // waits for japan warning screen, works with our mcu dump (Japan Version) |
| 3511 | GAME( 1989, lohtb2, loht, m72_8751, loht, m72_state, m72_8751, ROT0, "bootleg", "Legend of Hero Tonma (Japan, bootleg with i8751)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) // works like above, mcu code is the same as the real code, probably just an alt revision on a bootleg board |
| 3512 | GAME( 1989, lohtb, loht, m72, loht, driver_device, 0, ROT0, "bootleg", "Legend of Hero Tonma (unprotected bootleg)", GAME_NOT_WORKING| GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3524 | 3513 | |
| 3525 | | GAME( 1989, xmultipl, 0, xmultipl, xmultipl, driver_device, 0, ROT0, "Irem", "X Multiply (World, M81)", GAME_NO_COCKTAIL ) |
| 3526 | | GAME( 1989, xmultiplm72, xmultipl, xmultiplm72, xmultipl, m72_state, m72_8751, ROT0, "Irem", "X Multiply (Japan, M72)", GAME_NO_COCKTAIL ) |
| 3514 | GAME( 1989, xmultipl, 0, xmultipl, xmultipl, driver_device, 0, ROT0, "Irem", "X Multiply (World, M81)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3515 | GAME( 1989, xmultiplm72, xmultipl, xmultiplm72, xmultipl, m72_state, m72_8751, ROT0, "Irem", "X Multiply (Japan, M72)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3527 | 3516 | |
| 3528 | | GAME( 1989, dbreed, 0, dbreed, dbreed, driver_device, 0, ROT0, "Irem", "Dragon Breed (M81 PCB version)", GAME_NO_COCKTAIL ) |
| 3529 | | GAME( 1989, dbreedm72, dbreed, dbreedm72, dbreed, m72_state, dbreedm72, ROT0, "Irem", "Dragon Breed (M72 PCB version)", GAME_NO_COCKTAIL ) |
| 3517 | GAME( 1989, dbreed, 0, dbreed, dbreed, driver_device, 0, ROT0, "Irem", "Dragon Breed (M81 PCB version)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3518 | GAME( 1989, dbreedm72, dbreed, dbreedm72, dbreed, m72_state, dbreedm72, ROT0, "Irem", "Dragon Breed (M72 PCB version)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3530 | 3519 | |
| 3531 | | GAME( 1989, rtype2, 0, rtype2, rtype2, driver_device, 0, ROT0, "Irem", "R-Type II", GAME_NO_COCKTAIL ) |
| 3532 | | GAME( 1989, rtype2j, rtype2, rtype2, rtype2, driver_device, 0, ROT0, "Irem", "R-Type II (Japan)", GAME_NO_COCKTAIL ) |
| 3533 | | GAME( 1989, rtype2jc, rtype2, rtype2, rtype2, driver_device, 0, ROT0, "Irem", "R-Type II (Japan, revision C)", GAME_NO_COCKTAIL ) |
| 3520 | GAME( 1989, rtype2, 0, rtype2, rtype2, driver_device, 0, ROT0, "Irem", "R-Type II", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3521 | GAME( 1989, rtype2j, rtype2, rtype2, rtype2, driver_device, 0, ROT0, "Irem", "R-Type II (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3522 | GAME( 1989, rtype2jc, rtype2, rtype2, rtype2, driver_device, 0, ROT0, "Irem", "R-Type II (Japan, revision C)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3534 | 3523 | |
| 3535 | | GAME( 1990, majtitle, 0, majtitle, rtype2, driver_device, 0, ROT0, "Irem", "Major Title (World)", GAME_NO_COCKTAIL ) |
| 3536 | | GAME( 1990, majtitlej, majtitle, majtitle, rtype2, driver_device, 0, ROT0, "Irem", "Major Title (Japan)", GAME_NO_COCKTAIL ) |
| 3524 | GAME( 1990, majtitle, 0, majtitle, rtype2, driver_device, 0, ROT0, "Irem", "Major Title (World)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3525 | GAME( 1990, majtitlej, majtitle, majtitle, rtype2, driver_device, 0, ROT0, "Irem", "Major Title (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3537 | 3526 | |
| 3538 | | GAME( 1990, hharry, 0, hharry, hharry, driver_device, 0, ROT0, "Irem", "Hammerin' Harry (World)", GAME_NO_COCKTAIL ) |
| 3539 | | GAME( 1990, hharryu, hharry, hharryu, hharry, driver_device, 0, ROT0, "Irem America", "Hammerin' Harry (US)", GAME_NO_COCKTAIL ) |
| 3540 | | GAME( 1990, dkgensan, hharry, hharryu, hharry, driver_device, 0, ROT0, "Irem", "Daiku no Gensan (Japan, M82)", GAME_NO_COCKTAIL ) |
| 3541 | | GAME( 1990, dkgensanm72, hharry, dkgenm72, hharry, m72_state, dkgenm72, ROT0, "Irem", "Daiku no Gensan (Japan, M72)", GAME_NO_COCKTAIL ) |
| 3527 | GAME( 1990, hharry, 0, hharry, hharry, driver_device, 0, ROT0, "Irem", "Hammerin' Harry (World)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3528 | GAME( 1990, hharryu, hharry, hharryu, hharry, driver_device, 0, ROT0, "Irem America", "Hammerin' Harry (US)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3529 | GAME( 1990, dkgensan, hharry, hharryu, hharry, driver_device, 0, ROT0, "Irem", "Daiku no Gensan (Japan, M82)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3530 | GAME( 1990, dkgensanm72, hharry, dkgenm72, hharry, m72_state, dkgenm72, ROT0, "Irem", "Daiku no Gensan (Japan, M72)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3542 | 3531 | |
| 3543 | | GAME( 1990, poundfor, 0, poundfor, poundfor, driver_device, 0, ROT270, "Irem", "Pound for Pound (World)", GAME_NO_COCKTAIL ) |
| 3544 | | GAME( 1990, poundforj, poundfor, poundfor, poundfor, driver_device, 0, ROT270, "Irem", "Pound for Pound (Japan)", GAME_NO_COCKTAIL ) |
| 3545 | | GAME( 1990, poundforu, poundfor, poundfor, poundfor, driver_device, 0, ROT270, "Irem America", "Pound for Pound (US)", GAME_NO_COCKTAIL ) |
| 3532 | GAME( 1990, poundfor, 0, poundfor, poundfor, driver_device, 0, ROT270, "Irem", "Pound for Pound (World)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3533 | GAME( 1990, poundforj, poundfor, poundfor, poundfor, driver_device, 0, ROT270, "Irem", "Pound for Pound (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3534 | GAME( 1990, poundforu, poundfor, poundfor, poundfor, driver_device, 0, ROT270, "Irem America", "Pound for Pound (US)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3546 | 3535 | |
| 3547 | | GAME( 1990, airduel, 0, m72, airduel, m72_state, airduel, ROT270, "Irem", "Air Duel (Japan)", 0 ) |
| 3536 | GAME( 1990, airduel, 0, m72, airduel, m72_state, airduel, ROT270, "Irem", "Air Duel (Japan)", GAME_SUPPORTS_SAVE ) |
| 3548 | 3537 | |
| 3549 | | GAME( 1991, cosmccop, 0, cosmccop, gallop, driver_device, 0, ROT0, "Irem", "Cosmic Cop (World)", GAME_NO_COCKTAIL ) |
| 3550 | | GAME( 1991, gallop, cosmccop, m72, gallop, m72_state, gallop, ROT0, "Irem", "Gallop - Armed Police Unit (Japan)", GAME_NO_COCKTAIL ) |
| 3538 | GAME( 1991, cosmccop, 0, cosmccop, gallop, driver_device, 0, ROT0, "Irem", "Cosmic Cop (World)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3539 | GAME( 1991, gallop, cosmccop, m72, gallop, m72_state, gallop, ROT0, "Irem", "Gallop - Armed Police Unit (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 3551 | 3540 | |
| 3552 | | GAME( 1991, kengo, 0, kengo, kengo, driver_device, 0, ROT0, "Irem", "Ken-Go", GAME_NO_COCKTAIL ) |
| 3541 | GAME( 1991, kengo, 0, kengo, kengo, driver_device, 0, ROT0, "Irem", "Ken-Go", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
trunk/src/mame/includes/m72.h
| r245320 | r245321 | |
| 11 | 11 | public: |
| 12 | 12 | m72_state(const machine_config &mconfig, device_type type, const char *tag) |
| 13 | 13 | : driver_device(mconfig, type, tag), |
| 14 | | m_spriteram(*this, "spriteram"), |
| 15 | | m_videoram1(*this, "videoram1"), |
| 16 | | m_videoram2(*this, "videoram2"), |
| 17 | | m_majtitle_rowscrollram(*this, "majtitle_rowscr"), |
| 18 | | m_spriteram2(*this, "spriteram2"), |
| 19 | | m_soundram(*this, "soundram"), |
| 20 | 14 | m_maincpu(*this, "maincpu"), |
| 21 | 15 | m_soundcpu(*this, "soundcpu"), |
| 22 | 16 | m_mcu(*this, "mcu"), |
| r245320 | r245321 | |
| 25 | 19 | m_gfxdecode(*this, "gfxdecode"), |
| 26 | 20 | m_screen(*this, "screen"), |
| 27 | 21 | m_palette(*this, "palette"), |
| 22 | m_spriteram(*this, "spriteram"), |
| 23 | m_videoram1(*this, "videoram1"), |
| 24 | m_videoram2(*this, "videoram2"), |
| 25 | m_majtitle_rowscrollram(*this, "majtitle_rowscr"), |
| 26 | m_spriteram2(*this, "spriteram2"), |
| 27 | m_soundram(*this, "soundram"), |
| 28 | 28 | m_generic_paletteram_16(*this, "paletteram"), |
| 29 | 29 | m_generic_paletteram2_16(*this, "paletteram2") { } |
| 30 | 30 | |
| 31 | | required_shared_ptr<UINT16> m_spriteram; |
| 32 | | required_shared_ptr<UINT16> m_videoram1; |
| 33 | | required_shared_ptr<UINT16> m_videoram2; |
| 34 | | optional_shared_ptr<UINT16> m_majtitle_rowscrollram; |
| 35 | | optional_shared_ptr<UINT16> m_spriteram2; |
| 36 | | optional_shared_ptr<UINT8> m_soundram; |
| 37 | | |
| 38 | 31 | required_device<cpu_device> m_maincpu; |
| 39 | 32 | required_device<cpu_device> m_soundcpu; |
| 40 | 33 | optional_device<cpu_device> m_mcu; |
| r245320 | r245321 | |
| 43 | 36 | required_device<gfxdecode_device> m_gfxdecode; |
| 44 | 37 | required_device<screen_device> m_screen; |
| 45 | 38 | required_device<palette_device> m_palette; |
| 39 | |
| 40 | required_shared_ptr<UINT16> m_spriteram; |
| 41 | required_shared_ptr<UINT16> m_videoram1; |
| 42 | required_shared_ptr<UINT16> m_videoram2; |
| 43 | optional_shared_ptr<UINT16> m_majtitle_rowscrollram; |
| 44 | optional_shared_ptr<UINT16> m_spriteram2; |
| 45 | optional_shared_ptr<UINT8> m_soundram; |
| 46 | 46 | required_shared_ptr<UINT16> m_generic_paletteram_16; |
| 47 | 47 | required_shared_ptr<UINT16> m_generic_paletteram2_16; |
| 48 | 48 | |
| 49 | 49 | UINT16 *m_protection_ram; |
| 50 | 50 | emu_timer *m_scanline_timer; |
| 51 | 51 | UINT8 m_irq_base; |
| 52 | | UINT8 m_mcu_snd_cmd_latch; |
| 53 | | UINT8 m_mcu_sample_latch; |
| 54 | | UINT32 m_mcu_sample_addr; |
| 55 | 52 | const UINT8 *m_protection_code; |
| 56 | 53 | const UINT8 *m_protection_crc; |
| 57 | | int m_prev[4]; |
| 58 | | int m_diff[4]; |
| 59 | 54 | UINT32 m_raster_irq_position; |
| 60 | 55 | UINT16 *m_buffered_spriteram; |
| 61 | 56 | tilemap_t *m_fg_tilemap; |
| r245320 | r245321 | |
| 65 | 60 | INT32 m_scrollx2; |
| 66 | 61 | INT32 m_scrolly2; |
| 67 | 62 | INT32 m_video_off; |
| 63 | |
| 64 | //poundfor specific |
| 65 | int m_prev[4]; |
| 66 | int m_diff[4]; |
| 67 | |
| 68 | // majtitle specific |
| 68 | 69 | int m_majtitle_rowscroll; |
| 69 | | DECLARE_WRITE16_MEMBER(m72_main_mcu_sound_w); |
| 70 | | DECLARE_WRITE16_MEMBER(m72_main_mcu_w); |
| 71 | | DECLARE_WRITE8_MEMBER(m72_mcu_data_w); |
| 72 | | DECLARE_READ8_MEMBER(m72_mcu_data_r); |
| 73 | | DECLARE_READ8_MEMBER(m72_mcu_sample_r); |
| 74 | | DECLARE_WRITE8_MEMBER(m72_mcu_ack_w); |
| 75 | | DECLARE_READ8_MEMBER(m72_mcu_snd_r); |
| 76 | | DECLARE_READ8_MEMBER(m72_mcu_port_r); |
| 77 | | DECLARE_WRITE8_MEMBER(m72_mcu_port_w); |
| 78 | | DECLARE_WRITE8_MEMBER(m72_mcu_low_w); |
| 79 | | DECLARE_WRITE8_MEMBER(m72_mcu_high_w); |
| 80 | | DECLARE_READ8_MEMBER(m72_snd_cpu_sample_r); |
| 70 | |
| 71 | // m72_i8751 specific |
| 72 | UINT8 m_mcu_snd_cmd_latch; |
| 73 | UINT8 m_mcu_sample_latch; |
| 74 | UINT32 m_mcu_sample_addr; |
| 75 | |
| 76 | // common |
| 77 | DECLARE_READ16_MEMBER(palette1_r); |
| 78 | DECLARE_READ16_MEMBER(palette2_r); |
| 79 | DECLARE_WRITE16_MEMBER(palette1_w); |
| 80 | DECLARE_WRITE16_MEMBER(palette2_w); |
| 81 | DECLARE_WRITE16_MEMBER(videoram1_w); |
| 82 | DECLARE_WRITE16_MEMBER(videoram2_w); |
| 83 | DECLARE_READ16_MEMBER(soundram_r); |
| 84 | DECLARE_WRITE16_MEMBER(soundram_w); |
| 85 | |
| 86 | // m72_i8751 specific |
| 87 | DECLARE_WRITE16_MEMBER(main_mcu_sound_w); |
| 88 | DECLARE_WRITE16_MEMBER(main_mcu_w); |
| 89 | DECLARE_WRITE8_MEMBER(mcu_data_w); |
| 90 | DECLARE_READ8_MEMBER(mcu_data_r); |
| 91 | DECLARE_READ8_MEMBER(mcu_sample_r); |
| 92 | DECLARE_WRITE8_MEMBER(mcu_ack_w); |
| 93 | DECLARE_READ8_MEMBER(mcu_snd_r); |
| 94 | DECLARE_READ8_MEMBER(mcu_port_r); |
| 95 | DECLARE_WRITE8_MEMBER(mcu_port_w); |
| 96 | DECLARE_WRITE8_MEMBER(mcu_low_w); |
| 97 | DECLARE_WRITE8_MEMBER(mcu_high_w); |
| 98 | DECLARE_READ8_MEMBER(snd_cpu_sample_r); |
| 99 | DECLARE_WRITE16_MEMBER(irq_line_w); |
| 100 | DECLARE_WRITE16_MEMBER(scrollx1_w); |
| 101 | DECLARE_WRITE16_MEMBER(scrollx2_w); |
| 102 | DECLARE_WRITE16_MEMBER(scrolly1_w); |
| 103 | DECLARE_WRITE16_MEMBER(scrolly2_w); |
| 104 | DECLARE_WRITE16_MEMBER(dmaon_w); |
| 105 | DECLARE_WRITE16_MEMBER(port02_w); |
| 106 | DECLARE_READ16_MEMBER(protection_r); |
| 107 | DECLARE_WRITE16_MEMBER(protection_w); |
| 108 | |
| 109 | // game specific |
| 81 | 110 | DECLARE_WRITE16_MEMBER(bchopper_sample_trigger_w); |
| 82 | 111 | DECLARE_WRITE16_MEMBER(nspirit_sample_trigger_w); |
| 83 | 112 | DECLARE_WRITE16_MEMBER(imgfight_sample_trigger_w); |
| r245320 | r245321 | |
| 86 | 115 | DECLARE_WRITE16_MEMBER(airduel_sample_trigger_w); |
| 87 | 116 | DECLARE_WRITE16_MEMBER(dkgenm72_sample_trigger_w); |
| 88 | 117 | DECLARE_WRITE16_MEMBER(gallop_sample_trigger_w); |
| 89 | | DECLARE_READ16_MEMBER(protection_r); |
| 90 | | DECLARE_WRITE16_MEMBER(protection_w); |
| 91 | | DECLARE_READ16_MEMBER(soundram_r); |
| 92 | | DECLARE_WRITE16_MEMBER(soundram_w); |
| 93 | 118 | DECLARE_READ16_MEMBER(poundfor_trackball_r); |
| 94 | | DECLARE_READ16_MEMBER(m72_palette1_r); |
| 95 | | DECLARE_READ16_MEMBER(m72_palette2_r); |
| 96 | | DECLARE_WRITE16_MEMBER(m72_palette1_w); |
| 97 | | DECLARE_WRITE16_MEMBER(m72_palette2_w); |
| 98 | | DECLARE_WRITE16_MEMBER(m72_videoram1_w); |
| 99 | | DECLARE_WRITE16_MEMBER(m72_videoram2_w); |
| 100 | | DECLARE_WRITE16_MEMBER(m72_irq_line_w); |
| 101 | | DECLARE_WRITE16_MEMBER(m72_scrollx1_w); |
| 102 | | DECLARE_WRITE16_MEMBER(m72_scrollx2_w); |
| 103 | | DECLARE_WRITE16_MEMBER(m72_scrolly1_w); |
| 104 | | DECLARE_WRITE16_MEMBER(m72_scrolly2_w); |
| 105 | | DECLARE_WRITE16_MEMBER(m72_dmaon_w); |
| 106 | | DECLARE_WRITE16_MEMBER(m72_port02_w); |
| 107 | 119 | DECLARE_WRITE16_MEMBER(rtype2_port02_w); |
| 108 | 120 | DECLARE_WRITE16_MEMBER(majtitle_gfx_ctrl_w); |
| 109 | | DECLARE_WRITE8_MEMBER(m72_snd_cpu_sample_w); |
| 110 | | DECLARE_DRIVER_INIT(dkgenm72); |
| 111 | | DECLARE_DRIVER_INIT(bchopper); |
| 112 | | DECLARE_DRIVER_INIT(gallop); |
| 113 | | DECLARE_DRIVER_INIT(m72_8751); |
| 114 | | DECLARE_DRIVER_INIT(dbreedm72); |
| 115 | | DECLARE_DRIVER_INIT(airduel); |
| 116 | | DECLARE_DRIVER_INIT(nspirit); |
| 117 | | DECLARE_DRIVER_INIT(loht); |
| 118 | | DECLARE_DRIVER_INIT(imgfight); |
| 119 | | TILE_GET_INFO_MEMBER(m72_get_bg_tile_info); |
| 120 | | TILE_GET_INFO_MEMBER(m72_get_fg_tile_info); |
| 121 | |
| 122 | TILE_GET_INFO_MEMBER(get_bg_tile_info); |
| 123 | TILE_GET_INFO_MEMBER(get_fg_tile_info); |
| 121 | 124 | TILE_GET_INFO_MEMBER(hharry_get_bg_tile_info); |
| 122 | 125 | TILE_GET_INFO_MEMBER(rtype2_get_bg_tile_info); |
| 123 | 126 | TILE_GET_INFO_MEMBER(rtype2_get_fg_tile_info); |
| 124 | 127 | TILEMAP_MAPPER_MEMBER(majtitle_scan_rows); |
| 128 | |
| 125 | 129 | void machine_start(); |
| 126 | 130 | void machine_reset(); |
| 127 | 131 | DECLARE_VIDEO_START(m72); |
| r245320 | r245321 | |
| 134 | 138 | DECLARE_VIDEO_START(poundfor); |
| 135 | 139 | DECLARE_MACHINE_START(kengo); |
| 136 | 140 | DECLARE_MACHINE_RESET(kengo); |
| 137 | | UINT32 screen_update_m72(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 138 | | UINT32 screen_update_majtitle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 139 | | INTERRUPT_GEN_MEMBER(m72_mcu_int); |
| 141 | DECLARE_DRIVER_INIT(dkgenm72); |
| 142 | DECLARE_DRIVER_INIT(bchopper); |
| 143 | DECLARE_DRIVER_INIT(gallop); |
| 144 | DECLARE_DRIVER_INIT(m72_8751); |
| 145 | DECLARE_DRIVER_INIT(dbreedm72); |
| 146 | DECLARE_DRIVER_INIT(airduel); |
| 147 | DECLARE_DRIVER_INIT(nspirit); |
| 148 | DECLARE_DRIVER_INIT(loht); |
| 149 | DECLARE_DRIVER_INIT(imgfight); |
| 150 | |
| 151 | INTERRUPT_GEN_MEMBER(mcu_int); |
| 140 | 152 | INTERRUPT_GEN_MEMBER(fake_nmi); |
| 141 | 153 | TIMER_CALLBACK_MEMBER(synch_callback); |
| 142 | | TIMER_CALLBACK_MEMBER(m72_scanline_interrupt); |
| 154 | TIMER_CALLBACK_MEMBER(scanline_interrupt); |
| 143 | 155 | TIMER_CALLBACK_MEMBER(kengo_scanline_interrupt); |
| 144 | 156 | TIMER_CALLBACK_MEMBER(delayed_ram16_w); |
| 145 | | inline void m72_get_tile_info(tile_data &tileinfo,int tile_index,const UINT16 *vram,int gfxnum); |
| 157 | |
| 158 | |
| 159 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 160 | UINT32 screen_update_majtitle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 161 | inline void get_tile_info(tile_data &tileinfo,int tile_index,const UINT16 *vram,int gfxnum); |
| 146 | 162 | inline void rtype2_get_tile_info(tile_data &tileinfo,int tile_index,const UINT16 *vram,int gfxnum); |
| 147 | 163 | void register_savestate(); |
| 148 | 164 | inline void changecolor(int color,int r,int g,int b); |
| 149 | | void m72_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect); |
| 165 | void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect); |
| 150 | 166 | void majtitle_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect); |
| 151 | 167 | int find_sample(int num); |
| 152 | 168 | void copy_le(UINT16 *dest, const UINT8 *src, UINT8 bytes); |