trunk/src/mame/drivers/cabal.c
| r244775 | r244776 | |
| 48 | 48 | #include "sound/msm5205.h" |
| 49 | 49 | #include "includes/cabal.h" |
| 50 | 50 | |
| 51 | MACHINE_START_MEMBER(cabal_state,cabal) |
| 52 | { |
| 53 | save_item(NAME(m_last)); |
| 54 | } |
| 55 | |
| 56 | MACHINE_START_MEMBER(cabal_state,cabalbl) |
| 57 | { |
| 58 | save_item(NAME(m_sound_command1)); |
| 59 | save_item(NAME(m_sound_command2)); |
| 60 | } |
| 61 | |
| 51 | 62 | MACHINE_RESET_MEMBER(cabal_state,cabalbl) |
| 52 | 63 | { |
| 53 | 64 | m_sound_command1 = m_sound_command2 = 0xff; |
| r244775 | r244776 | |
| 94 | 105 | } |
| 95 | 106 | |
| 96 | 107 | |
| 97 | | WRITE16_MEMBER(cabal_state::cabal_sound_irq_trigger_word_w) |
| 108 | WRITE16_MEMBER(cabal_state::sound_irq_trigger_word_w) |
| 98 | 109 | { |
| 99 | 110 | m_seibu_sound->main_word_w(space,4,data,mem_mask); |
| 100 | 111 | |
| r244775 | r244776 | |
| 114 | 125 | AM_RANGE(0x40000, 0x437ff) AM_RAM |
| 115 | 126 | AM_RANGE(0x43800, 0x43fff) AM_RAM AM_SHARE("spriteram") |
| 116 | 127 | AM_RANGE(0x44000, 0x4ffff) AM_RAM |
| 117 | | AM_RANGE(0x60000, 0x607ff) AM_RAM_WRITE(cabal_text_videoram16_w) AM_SHARE("colorram") |
| 118 | | AM_RANGE(0x80000, 0x801ff) AM_RAM_WRITE(cabal_background_videoram16_w) AM_SHARE("videoram") |
| 128 | AM_RANGE(0x60000, 0x607ff) AM_RAM_WRITE(text_videoram_w) AM_SHARE("colorram") |
| 129 | AM_RANGE(0x80000, 0x801ff) AM_RAM_WRITE(background_videoram_w) AM_SHARE("videoram") |
| 119 | 130 | AM_RANGE(0x80200, 0x803ff) AM_RAM |
| 120 | 131 | AM_RANGE(0xa0000, 0xa0001) AM_READ_PORT("DSW") |
| 121 | 132 | AM_RANGE(0xa0008, 0xa000f) AM_READ(track_r) |
| 122 | 133 | AM_RANGE(0xa0010, 0xa0011) AM_READ_PORT("INPUTS") |
| 123 | 134 | AM_RANGE(0xc0000, 0xc0001) AM_WRITE(track_reset_w) |
| 124 | 135 | AM_RANGE(0xc0040, 0xc0041) AM_WRITENOP /* ??? */ |
| 125 | | AM_RANGE(0xc0080, 0xc0081) AM_WRITE(cabal_flipscreen_w) |
| 136 | AM_RANGE(0xc0080, 0xc0081) AM_WRITE(flipscreen_w) |
| 126 | 137 | AM_RANGE(0xe0000, 0xe07ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") |
| 127 | | AM_RANGE(0xe8008, 0xe8009) AM_WRITE(cabal_sound_irq_trigger_word_w) // fix coin insertion |
| 138 | AM_RANGE(0xe8008, 0xe8009) AM_WRITE(sound_irq_trigger_word_w) // fix coin insertion |
| 128 | 139 | AM_RANGE(0xe8000, 0xe800d) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, main_word_r, main_word_w) |
| 129 | 140 | ADDRESS_MAP_END |
| 130 | 141 | |
| r244775 | r244776 | |
| 133 | 144 | AM_RANGE(0x40000, 0x437ff) AM_RAM |
| 134 | 145 | AM_RANGE(0x43800, 0x43fff) AM_RAM AM_SHARE("spriteram") |
| 135 | 146 | AM_RANGE(0x44000, 0x4ffff) AM_RAM |
| 136 | | AM_RANGE(0x60000, 0x607ff) AM_RAM_WRITE(cabal_text_videoram16_w) AM_SHARE("colorram") |
| 137 | | AM_RANGE(0x80000, 0x801ff) AM_RAM_WRITE(cabal_background_videoram16_w) AM_SHARE("videoram") |
| 147 | AM_RANGE(0x60000, 0x607ff) AM_RAM_WRITE(text_videoram_w) AM_SHARE("colorram") |
| 148 | AM_RANGE(0x80000, 0x801ff) AM_RAM_WRITE(background_videoram_w) AM_SHARE("videoram") |
| 138 | 149 | AM_RANGE(0x80200, 0x803ff) AM_RAM |
| 139 | 150 | AM_RANGE(0xa0000, 0xa0001) AM_READ_PORT("DSW") |
| 140 | 151 | AM_RANGE(0xa0008, 0xa0009) AM_READ_PORT("JOY") |
| 141 | 152 | AM_RANGE(0xa0010, 0xa0011) AM_READ_PORT("INPUTS") |
| 142 | 153 | AM_RANGE(0xc0040, 0xc0041) AM_WRITENOP /* ??? */ |
| 143 | | AM_RANGE(0xc0080, 0xc0081) AM_WRITE(cabal_flipscreen_w) |
| 154 | AM_RANGE(0xc0080, 0xc0081) AM_WRITE(flipscreen_w) |
| 144 | 155 | AM_RANGE(0xe0000, 0xe07ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") |
| 145 | 156 | AM_RANGE(0xe8000, 0xe8003) AM_WRITE(cabalbl_sndcmd_w) |
| 146 | 157 | AM_RANGE(0xe8004, 0xe8005) AM_READ(soundlatch2_word_r) |
| r244775 | r244776 | |
| 464 | 475 | |
| 465 | 476 | MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */ |
| 466 | 477 | MCFG_CPU_PROGRAM_MAP(sound_map) |
| 478 | |
| 479 | MCFG_MACHINE_START_OVERRIDE(cabal_state,cabal) |
| 467 | 480 | |
| 468 | 481 | /* video hardware */ |
| 469 | 482 | MCFG_SCREEN_ADD("screen", RASTER) |
| r244775 | r244776 | |
| 471 | 484 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) |
| 472 | 485 | MCFG_SCREEN_SIZE(256, 256) |
| 473 | 486 | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) |
| 474 | | MCFG_SCREEN_UPDATE_DRIVER(cabal_state, screen_update_cabal) |
| 487 | MCFG_SCREEN_UPDATE_DRIVER(cabal_state, screen_update) |
| 475 | 488 | MCFG_SCREEN_PALETTE("palette") |
| 476 | 489 | |
| 477 | 490 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", cabal) |
| r244775 | r244776 | |
| 521 | 534 | |
| 522 | 535 | MCFG_QUANTUM_TIME(attotime::from_hz(600)) |
| 523 | 536 | |
| 537 | MCFG_MACHINE_START_OVERRIDE(cabal_state,cabalbl) |
| 524 | 538 | MCFG_MACHINE_RESET_OVERRIDE(cabal_state,cabalbl) |
| 525 | 539 | |
| 526 | 540 | /* video hardware */ |
| r244775 | r244776 | |
| 529 | 543 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) |
| 530 | 544 | MCFG_SCREEN_SIZE(256, 256) |
| 531 | 545 | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) |
| 532 | | MCFG_SCREEN_UPDATE_DRIVER(cabal_state, screen_update_cabal) |
| 546 | MCFG_SCREEN_UPDATE_DRIVER(cabal_state, screen_update) |
| 533 | 547 | MCFG_SCREEN_PALETTE("palette") |
| 534 | 548 | |
| 535 | 549 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", cabal) |
| r244775 | r244776 | |
| 847 | 861 | } |
| 848 | 862 | |
| 849 | 863 | |
| 850 | | GAME( 1988, cabal, 0, cabal, cabalj, cabal_state, cabal, ROT0, "TAD Corporation", "Cabal (World, Joystick version)", 0 ) |
| 851 | | GAME( 1989, cabala, cabal, cabal, cabalj, cabal_state, cabal, ROT0, "TAD Corporation (Alpha Trading license)", "Cabal (Alpha Trading)", 0 ) // korea? |
| 852 | | GAME( 1988, cabalbl, cabal, cabalbl, cabalbl, driver_device, 0, ROT0, "bootleg (Red Corporation)", "Cabal (bootleg of Joystick version, set 1, alternate sound hardware)", GAME_IMPERFECT_SOUND ) |
| 853 | | GAME( 1988, cabalbl2,cabal, cabal, cabalj, cabal_state, cabalbl2,ROT0, "bootleg", "Cabal (bootleg of Joystick version, set 2)", 0 ) |
| 864 | GAME( 1988, cabal, 0, cabal, cabalj, cabal_state, cabal, ROT0, "TAD Corporation", "Cabal (World, Joystick version)", GAME_SUPPORTS_SAVE ) |
| 865 | GAME( 1989, cabala, cabal, cabal, cabalj, cabal_state, cabal, ROT0, "TAD Corporation (Alpha Trading license)", "Cabal (Alpha Trading)", GAME_SUPPORTS_SAVE ) // korea? |
| 866 | GAME( 1988, cabalbl, cabal, cabalbl, cabalbl, driver_device, 0, ROT0, "bootleg (Red Corporation)", "Cabal (bootleg of Joystick version, set 1, alternate sound hardware)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
| 867 | GAME( 1988, cabalbl2,cabal, cabal, cabalj, cabal_state, cabalbl2,ROT0, "bootleg", "Cabal (bootleg of Joystick version, set 2)", GAME_SUPPORTS_SAVE ) |
| 854 | 868 | |
| 855 | | GAME( 1988, cabalus, cabal, cabal, cabalt, cabal_state, cabal, ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 1, Trackball version)", 0 ) |
| 856 | | GAME( 1988, cabalus2,cabal, cabal, cabalt, cabal_state, cabal, ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 2, Trackball version)", 0 ) |
| 869 | GAME( 1988, cabalus, cabal, cabal, cabalt, cabal_state, cabal, ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 1, Trackball version)", GAME_SUPPORTS_SAVE ) |
| 870 | GAME( 1988, cabalus2,cabal, cabal, cabalt, cabal_state, cabal, ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 2, Trackball version)", GAME_SUPPORTS_SAVE ) |
trunk/src/mame/drivers/deadang.c
| r244775 | r244776 | |
| 63 | 63 | AM_RANGE(0x05000, 0x05fff) AM_WRITEONLY |
| 64 | 64 | AM_RANGE(0x06000, 0x0600f) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, main_word_r, main_word_w) |
| 65 | 65 | AM_RANGE(0x06010, 0x07fff) AM_WRITEONLY |
| 66 | | AM_RANGE(0x08000, 0x087ff) AM_WRITE(deadang_text_w) AM_SHARE("videoram") |
| 66 | AM_RANGE(0x08000, 0x087ff) AM_WRITE(text_w) AM_SHARE("videoram") |
| 67 | 67 | AM_RANGE(0x08800, 0x0bfff) AM_WRITEONLY |
| 68 | 68 | AM_RANGE(0x0a000, 0x0a001) AM_READ_PORT("P1_P2") |
| 69 | 69 | AM_RANGE(0x0a002, 0x0a003) AM_READ_PORT("DSW") |
| r244775 | r244776 | |
| 76 | 76 | |
| 77 | 77 | static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 16, deadang_state ) |
| 78 | 78 | AM_RANGE(0x00000, 0x037ff) AM_RAM |
| 79 | | AM_RANGE(0x03800, 0x03fff) AM_RAM_WRITE(deadang_foreground_w) AM_SHARE("video_data") |
| 79 | AM_RANGE(0x03800, 0x03fff) AM_RAM_WRITE(foreground_w) AM_SHARE("video_data") |
| 80 | 80 | AM_RANGE(0x04000, 0x04fff) AM_RAM AM_SHARE("share1") |
| 81 | | AM_RANGE(0x08000, 0x08001) AM_WRITE(deadang_bank_w) |
| 81 | AM_RANGE(0x08000, 0x08001) AM_WRITE(bank_w) |
| 82 | 82 | AM_RANGE(0x0c000, 0x0c001) AM_WRITE(watchdog_reset16_w) |
| 83 | 83 | AM_RANGE(0xe0000, 0xfffff) AM_ROM |
| 84 | 84 | ADDRESS_MAP_END |
| r244775 | r244776 | |
| 206 | 206 | |
| 207 | 207 | /* Interrupt Generators */ |
| 208 | 208 | |
| 209 | | TIMER_DEVICE_CALLBACK_MEMBER(deadang_state::deadang_main_scanline) |
| 209 | TIMER_DEVICE_CALLBACK_MEMBER(deadang_state::main_scanline) |
| 210 | 210 | { |
| 211 | 211 | int scanline = param; |
| 212 | 212 | |
| r244775 | r244776 | |
| 217 | 217 | m_maincpu->set_input_line_and_vector(0, HOLD_LINE,0xc8/4); |
| 218 | 218 | } |
| 219 | 219 | |
| 220 | | TIMER_DEVICE_CALLBACK_MEMBER(deadang_state::deadang_sub_scanline) |
| 220 | TIMER_DEVICE_CALLBACK_MEMBER(deadang_state::sub_scanline) |
| 221 | 221 | { |
| 222 | 222 | int scanline = param; |
| 223 | 223 | |
| r244775 | r244776 | |
| 235 | 235 | /* basic machine hardware */ |
| 236 | 236 | MCFG_CPU_ADD("maincpu", V30,XTAL_16MHz/2) /* Sony 8623h9 CXQ70116D-8 (V30 compatible) */ |
| 237 | 237 | MCFG_CPU_PROGRAM_MAP(main_map) |
| 238 | | MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer1", deadang_state, deadang_main_scanline, "screen", 0, 1) |
| 238 | MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer1", deadang_state, main_scanline, "screen", 0, 1) |
| 239 | 239 | |
| 240 | 240 | MCFG_CPU_ADD("sub", V30,XTAL_16MHz/2) /* Sony 8623h9 CXQ70116D-8 (V30 compatible) */ |
| 241 | 241 | MCFG_CPU_PROGRAM_MAP(sub_map) |
| 242 | | MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer2", deadang_state, deadang_sub_scanline, "screen", 0, 1) |
| 242 | MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer2", deadang_state, sub_scanline, "screen", 0, 1) |
| 243 | 243 | |
| 244 | 244 | SEIBU3A_SOUND_SYSTEM_CPU(XTAL_14_31818MHz/4) |
| 245 | 245 | |
| r244775 | r244776 | |
| 251 | 251 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) |
| 252 | 252 | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 253 | 253 | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) |
| 254 | | MCFG_SCREEN_UPDATE_DRIVER(deadang_state, screen_update_deadang) |
| 254 | MCFG_SCREEN_UPDATE_DRIVER(deadang_state, screen_update) |
| 255 | 255 | MCFG_SCREEN_PALETTE("palette") |
| 256 | 256 | |
| 257 | 257 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", deadang) |
| r244775 | r244776 | |
| 267 | 267 | /* ROMs */ |
| 268 | 268 | |
| 269 | 269 | ROM_START( deadang ) |
| 270 | | ROM_REGION( 0x100000, "maincpu", 0 ) /* v20 main cpu */ |
| 270 | ROM_REGION( 0x100000, "maincpu", 0 ) /* v30 main cpu */ |
| 271 | 271 | ROM_LOAD16_BYTE("2.18h", 0x0c0000, 0x10000, CRC(1bc05b7e) SHA1(21833150a1f5ab543999a67f5b3bfbaf703e5508) ) |
| 272 | 272 | ROM_LOAD16_BYTE("4.22h", 0x0c0001, 0x10000, CRC(5751d4e7) SHA1(2e1a30c20199461fd876849f7563fef1d9a80c2d) ) |
| 273 | 273 | ROM_LOAD16_BYTE("1.18f", 0x0e0000, 0x10000, CRC(8e7b15cc) SHA1(7e4766953c1adf04be18207a2aa6f5e861ea5f6c) ) |
| 274 | 274 | ROM_LOAD16_BYTE("3.21f", 0x0e0001, 0x10000, CRC(e784b1fa) SHA1(3f41d31e0b36b9a2fab5e9998bb4146dfa0a97eb) ) |
| 275 | 275 | |
| 276 | | ROM_REGION( 0x100000, "sub", 0 ) /* v20 sub cpu */ |
| 276 | ROM_REGION( 0x100000, "sub", 0 ) /* v30 sub cpu */ |
| 277 | 277 | ROM_LOAD16_BYTE("5.6bh", 0x0e0000, 0x10000, CRC(9c69eb35) SHA1(d5a9714f279b71c419b4bae0f142c4cb1cc8d30e) ) |
| 278 | 278 | ROM_LOAD16_BYTE("6.9b", 0x0e0001, 0x10000, CRC(34a44ce5) SHA1(621c69d8778d4c96ac3be06b033a5931a6a23da2) ) |
| 279 | 279 | |
| r244775 | r244776 | |
| 314 | 314 | ROM_END |
| 315 | 315 | |
| 316 | 316 | ROM_START( leadang ) |
| 317 | | ROM_REGION( 0x100000, "maincpu", 0 ) /* v20 main cpu */ |
| 317 | ROM_REGION( 0x100000, "maincpu", 0 ) /* v30 main cpu */ |
| 318 | 318 | ROM_LOAD16_BYTE("2.18h", 0x0c0000, 0x10000, CRC(611247e0) SHA1(1b9ad50f67ba3a3a9e5a0d6e33f4d4be2fc20446) ) // sldh |
| 319 | 319 | ROM_LOAD16_BYTE("4.22h", 0x0c0001, 0x10000, CRC(348c1201) SHA1(277dd77dcbc950299de0fd56a4f66db8f90752ad) ) // sldh |
| 320 | 320 | ROM_LOAD16_BYTE("1.18f", 0x0e0000, 0x10000, CRC(fb952d71) SHA1(c6578cddf019872e6005c3a9e8e3e024d17d8c6e) ) // sldh |
| 321 | 321 | ROM_LOAD16_BYTE("3.22f", 0x0e0001, 0x10000, CRC(2271c6df) SHA1(774a92bb698606e58d0c74ea07d7eaecf766dddf) ) |
| 322 | 322 | |
| 323 | | ROM_REGION( 0x100000, "sub", 0 ) /* v20 sub cpu */ |
| 323 | ROM_REGION( 0x100000, "sub", 0 ) /* v30 sub cpu */ |
| 324 | 324 | ROM_LOAD16_BYTE("5.6b", 0x0e0000, 0x10000, CRC(9c69eb35) SHA1(d5a9714f279b71c419b4bae0f142c4cb1cc8d30e) ) |
| 325 | 325 | ROM_LOAD16_BYTE("6.9b", 0x0e0001, 0x10000, CRC(34a44ce5) SHA1(621c69d8778d4c96ac3be06b033a5931a6a23da2) ) |
| 326 | 326 | |
| r244775 | r244776 | |
| 361 | 361 | ROM_END |
| 362 | 362 | |
| 363 | 363 | ROM_START( ghunter ) |
| 364 | | ROM_REGION( 0x100000, "maincpu", 0 ) /* v20 main cpu */ |
| 364 | ROM_REGION( 0x100000, "maincpu", 0 ) /* v30 main cpu */ |
| 365 | 365 | ROM_LOAD16_BYTE("ggh-2.h18", 0x0c0000, 0x10000, CRC(7ccc6fee) SHA1(bccc283d82f080157f0521457b04fdd1d63caafe) ) |
| 366 | 366 | ROM_LOAD16_BYTE("ggh-4.h22", 0x0c0001, 0x10000, CRC(d1f23ad7) SHA1(2668729af797ccab52ac2bf519d43ab2fa9e54ce) ) |
| 367 | 367 | ROM_LOAD16_BYTE("ggh-1.f18", 0x0e0000, 0x10000, CRC(0d6ff111) SHA1(209d26170446b43d1d463737b447e30aaca614a7) ) |
| 368 | 368 | ROM_LOAD16_BYTE("ggh-3.f22", 0x0e0001, 0x10000, CRC(66dec38d) SHA1(78dd3143265c3da90d1a0ab2c4f42b4e32716af8) ) |
| 369 | 369 | |
| 370 | | ROM_REGION( 0x100000, "sub", 0 ) /* v20 sub cpu */ |
| 370 | ROM_REGION( 0x100000, "sub", 0 ) /* v30 sub cpu */ |
| 371 | 371 | ROM_LOAD16_BYTE("ggh-5.b6", 0x0e0000, 0x10000, CRC(1f612f3b) SHA1(71840fa0e988828a819d371f082ce31d5a5e3a30) ) |
| 372 | 372 | ROM_LOAD16_BYTE("ggh-6.b10", 0x0e0001, 0x10000, CRC(63e18e56) SHA1(5183d0909a7c795e76540723fb710a5a75730298) ) |
| 373 | 373 | |
| r244775 | r244776 | |
| 428 | 428 | |
| 429 | 429 | /* Game Drivers */ |
| 430 | 430 | |
| 431 | | GAME( 1988, deadang, 0, deadang, deadang, deadang_state, deadang, ROT0, "Seibu Kaihatsu", "Dead Angle", 0 ) |
| 432 | | GAME( 1988, leadang, deadang, deadang, deadang, deadang_state, deadang, ROT0, "Seibu Kaihatsu", "Lead Angle (Japan)", 0 ) |
| 433 | | GAME( 1988, ghunter, deadang, deadang, ghunter, deadang_state, ghunter, ROT0, "Seibu Kaihatsu (Segasa/Sonic license)", "Gang Hunter (Spain)", 0 ) |
| 431 | GAME( 1988, deadang, 0, deadang, deadang, deadang_state, deadang, ROT0, "Seibu Kaihatsu", "Dead Angle", GAME_SUPPORTS_SAVE ) |
| 432 | GAME( 1988, leadang, deadang, deadang, deadang, deadang_state, deadang, ROT0, "Seibu Kaihatsu", "Lead Angle (Japan)", GAME_SUPPORTS_SAVE ) |
| 433 | GAME( 1988, ghunter, deadang, deadang, ghunter, deadang_state, ghunter, ROT0, "Seibu Kaihatsu (Segasa/Sonic license)", "Gang Hunter (Spain)", GAME_SUPPORTS_SAVE ) |
trunk/src/mame/includes/cabal.h
| r244775 | r244776 | |
| 6 | 6 | public: |
| 7 | 7 | cabal_state(const machine_config &mconfig, device_type type, const char *tag) |
| 8 | 8 | : driver_device(mconfig, type, tag), |
| 9 | | m_spriteram(*this, "spriteram"), |
| 10 | | m_colorram(*this, "colorram"), |
| 11 | | m_videoram(*this, "videoram"), |
| 12 | 9 | m_maincpu(*this, "maincpu"), |
| 13 | 10 | m_audiocpu(*this, "audiocpu"), |
| 14 | 11 | m_seibu_sound(*this, "seibu_sound"), |
| r244775 | r244776 | |
| 17 | 14 | m_msm1(*this, "msm1"), |
| 18 | 15 | m_msm2(*this, "msm2"), |
| 19 | 16 | m_gfxdecode(*this, "gfxdecode"), |
| 20 | | m_palette(*this, "palette") { } |
| 17 | m_palette(*this, "palette"), |
| 18 | m_spriteram(*this, "spriteram"), |
| 19 | m_colorram(*this, "colorram"), |
| 20 | m_videoram(*this, "videoram") { } |
| 21 | 21 | |
| 22 | | required_shared_ptr<UINT16> m_spriteram; |
| 23 | | required_shared_ptr<UINT16> m_colorram; |
| 24 | | required_shared_ptr<UINT16> m_videoram; |
| 25 | | |
| 26 | 22 | required_device<cpu_device> m_maincpu; |
| 27 | 23 | required_device<cpu_device> m_audiocpu; |
| 28 | 24 | optional_device<seibu_sound_device> m_seibu_sound; |
| r244775 | r244776 | |
| 33 | 29 | required_device<gfxdecode_device> m_gfxdecode; |
| 34 | 30 | required_device<palette_device> m_palette; |
| 35 | 31 | |
| 32 | required_shared_ptr<UINT16> m_spriteram; |
| 33 | required_shared_ptr<UINT16> m_colorram; |
| 34 | required_shared_ptr<UINT16> m_videoram; |
| 35 | |
| 36 | 36 | tilemap_t *m_background_layer; |
| 37 | 37 | tilemap_t *m_text_layer; |
| 38 | 38 | int m_sound_command1; |
| 39 | 39 | int m_sound_command2; |
| 40 | 40 | int m_last[4]; |
| 41 | | DECLARE_WRITE16_MEMBER(cabalbl_sndcmd_w); |
| 41 | |
| 42 | // common |
| 43 | DECLARE_WRITE16_MEMBER(flipscreen_w); |
| 44 | DECLARE_WRITE16_MEMBER(background_videoram_w); |
| 45 | DECLARE_WRITE16_MEMBER(text_videoram_w); |
| 46 | |
| 47 | // cabal specific |
| 42 | 48 | DECLARE_WRITE16_MEMBER(track_reset_w); |
| 43 | 49 | DECLARE_READ16_MEMBER(track_r); |
| 44 | | DECLARE_WRITE16_MEMBER(cabal_sound_irq_trigger_word_w); |
| 50 | DECLARE_WRITE16_MEMBER(sound_irq_trigger_word_w); |
| 51 | |
| 52 | // cabalbl specific |
| 53 | DECLARE_WRITE16_MEMBER(cabalbl_sndcmd_w); |
| 45 | 54 | DECLARE_WRITE16_MEMBER(cabalbl_sound_irq_trigger_word_w); |
| 46 | 55 | DECLARE_READ8_MEMBER(cabalbl_snd2_r); |
| 47 | 56 | DECLARE_READ8_MEMBER(cabalbl_snd1_r); |
| 48 | 57 | DECLARE_WRITE8_MEMBER(cabalbl_coin_w); |
| 49 | | DECLARE_WRITE16_MEMBER(cabal_flipscreen_w); |
| 50 | | DECLARE_WRITE16_MEMBER(cabal_background_videoram16_w); |
| 51 | | DECLARE_WRITE16_MEMBER(cabal_text_videoram16_w); |
| 52 | 58 | DECLARE_WRITE8_MEMBER(cabalbl_1_adpcm_w); |
| 53 | 59 | DECLARE_WRITE8_MEMBER(cabalbl_2_adpcm_w); |
| 60 | |
| 54 | 61 | DECLARE_DRIVER_INIT(cabal); |
| 55 | 62 | DECLARE_DRIVER_INIT(cabalbl2); |
| 63 | DECLARE_MACHINE_START(cabal); |
| 64 | DECLARE_MACHINE_START(cabalbl); |
| 65 | DECLARE_MACHINE_RESET(cabalbl); |
| 66 | virtual void video_start(); |
| 67 | |
| 56 | 68 | TILE_GET_INFO_MEMBER(get_back_tile_info); |
| 57 | 69 | TILE_GET_INFO_MEMBER(get_text_tile_info); |
| 58 | | virtual void video_start(); |
| 59 | | DECLARE_MACHINE_RESET(cabalbl); |
| 60 | | UINT32 screen_update_cabal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 70 | |
| 71 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 61 | 72 | void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 73 | |
| 62 | 74 | void seibu_sound_bootleg(const char *cpu,int length); |
| 63 | 75 | }; |
trunk/src/mame/includes/deadang.h
| r244775 | r244776 | |
| 5 | 5 | public: |
| 6 | 6 | deadang_state(const machine_config &mconfig, device_type type, const char *tag) |
| 7 | 7 | : driver_device(mconfig, type, tag), |
| 8 | | m_spriteram(*this, "spriteram"), |
| 9 | | m_videoram(*this, "videoram"), |
| 10 | | m_scroll_ram(*this, "scroll_ram"), |
| 11 | | m_video_data(*this, "video_data"), |
| 12 | 8 | m_maincpu(*this, "maincpu"), |
| 13 | 9 | m_subcpu(*this, "sub"), |
| 14 | 10 | m_seibu_sound(*this, "seibu_sound"), |
| 15 | 11 | m_adpcm1(*this, "adpcm1"), |
| 16 | 12 | m_adpcm2(*this, "adpcm2"), |
| 17 | 13 | m_gfxdecode(*this, "gfxdecode"), |
| 18 | | m_palette(*this, "palette") { } |
| 14 | m_palette(*this, "palette"), |
| 15 | m_spriteram(*this, "spriteram"), |
| 16 | m_videoram(*this, "videoram"), |
| 17 | m_scroll_ram(*this, "scroll_ram"), |
| 18 | m_video_data(*this, "video_data") { } |
| 19 | 19 | |
| 20 | | required_shared_ptr<UINT16> m_spriteram; |
| 21 | | required_shared_ptr<UINT16> m_videoram; |
| 22 | | required_shared_ptr<UINT16> m_scroll_ram; |
| 23 | | required_shared_ptr<UINT16> m_video_data; |
| 24 | | |
| 25 | 20 | required_device<cpu_device> m_maincpu; |
| 26 | 21 | required_device<cpu_device> m_subcpu; |
| 27 | 22 | required_device<seibu_sound_device> m_seibu_sound; |
| 28 | 23 | required_device<seibu_adpcm_device> m_adpcm1; |
| 29 | 24 | required_device<seibu_adpcm_device> m_adpcm2; |
| 30 | | |
| 31 | 25 | required_device<gfxdecode_device> m_gfxdecode; |
| 32 | 26 | required_device<palette_device> m_palette; |
| 33 | 27 | |
| 28 | required_shared_ptr<UINT16> m_spriteram; |
| 29 | required_shared_ptr<UINT16> m_videoram; |
| 30 | required_shared_ptr<UINT16> m_scroll_ram; |
| 31 | required_shared_ptr<UINT16> m_video_data; |
| 32 | |
| 34 | 33 | tilemap_t *m_pf3_layer; |
| 35 | 34 | tilemap_t *m_pf2_layer; |
| 36 | 35 | tilemap_t *m_pf1_layer; |
| 37 | 36 | tilemap_t *m_text_layer; |
| 38 | | int m_deadangle_tilebank; |
| 39 | | int m_deadangle_oldtilebank; |
| 37 | int m_tilebank; |
| 38 | int m_oldtilebank; |
| 40 | 39 | |
| 40 | DECLARE_WRITE16_MEMBER(foreground_w); |
| 41 | DECLARE_WRITE16_MEMBER(text_w); |
| 42 | DECLARE_WRITE16_MEMBER(bank_w); |
| 41 | 43 | DECLARE_READ16_MEMBER(ghunter_trackball_low_r); |
| 42 | 44 | DECLARE_READ16_MEMBER(ghunter_trackball_high_r); |
| 43 | | DECLARE_WRITE16_MEMBER(deadang_foreground_w); |
| 44 | | DECLARE_WRITE16_MEMBER(deadang_text_w); |
| 45 | | DECLARE_WRITE16_MEMBER(deadang_bank_w); |
| 45 | |
| 46 | 46 | DECLARE_DRIVER_INIT(deadang); |
| 47 | 47 | DECLARE_DRIVER_INIT(ghunter); |
| 48 | virtual void video_start(); |
| 49 | |
| 48 | 50 | TILEMAP_MAPPER_MEMBER(bg_scan); |
| 49 | 51 | TILE_GET_INFO_MEMBER(get_pf3_tile_info); |
| 50 | 52 | TILE_GET_INFO_MEMBER(get_pf2_tile_info); |
| 51 | 53 | TILE_GET_INFO_MEMBER(get_pf1_tile_info); |
| 52 | 54 | TILE_GET_INFO_MEMBER(get_text_tile_info); |
| 53 | | virtual void video_start(); |
| 54 | | UINT32 screen_update_deadang(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 55 | | TIMER_DEVICE_CALLBACK_MEMBER(deadang_main_scanline); |
| 56 | | TIMER_DEVICE_CALLBACK_MEMBER(deadang_sub_scanline); |
| 55 | |
| 56 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 57 | 57 | void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 58 | |
| 59 | TIMER_DEVICE_CALLBACK_MEMBER(main_scanline); |
| 60 | TIMER_DEVICE_CALLBACK_MEMBER(sub_scanline); |
| 58 | 61 | }; |
trunk/src/mame/video/deadang.c
| r244775 | r244776 | |
| 4 | 4 | |
| 5 | 5 | /******************************************************************************/ |
| 6 | 6 | |
| 7 | | WRITE16_MEMBER(deadang_state::deadang_foreground_w) |
| 7 | WRITE16_MEMBER(deadang_state::foreground_w) |
| 8 | 8 | { |
| 9 | 9 | COMBINE_DATA(&m_video_data[offset]); |
| 10 | 10 | m_pf1_layer->mark_tile_dirty(offset ); |
| 11 | 11 | } |
| 12 | 12 | |
| 13 | | WRITE16_MEMBER(deadang_state::deadang_text_w) |
| 13 | WRITE16_MEMBER(deadang_state::text_w) |
| 14 | 14 | { |
| 15 | | UINT16 *videoram = m_videoram; |
| 16 | | COMBINE_DATA(&videoram[offset]); |
| 15 | COMBINE_DATA(&m_videoram[offset]); |
| 17 | 16 | m_text_layer->mark_tile_dirty(offset ); |
| 18 | 17 | } |
| 19 | 18 | |
| 20 | | WRITE16_MEMBER(deadang_state::deadang_bank_w) |
| 19 | WRITE16_MEMBER(deadang_state::bank_w) |
| 21 | 20 | { |
| 22 | 21 | if (ACCESSING_BITS_0_7) |
| 23 | 22 | { |
| 24 | | m_deadangle_tilebank = data&1; |
| 25 | | if (m_deadangle_tilebank!=m_deadangle_oldtilebank) |
| 23 | m_tilebank = data&1; |
| 24 | if (m_tilebank!=m_oldtilebank) |
| 26 | 25 | { |
| 27 | | m_deadangle_oldtilebank = m_deadangle_tilebank; |
| 26 | m_oldtilebank = m_tilebank; |
| 28 | 27 | m_pf1_layer->mark_all_dirty(); |
| 29 | 28 | } |
| 30 | 29 | } |
| r244775 | r244776 | |
| 57 | 56 | int color=tile >> 12; |
| 58 | 57 | tile=tile&0xfff; |
| 59 | 58 | |
| 60 | | SET_TILE_INFO_MEMBER(2,tile+m_deadangle_tilebank*0x1000,color,0); |
| 59 | SET_TILE_INFO_MEMBER(2,tile+m_tilebank*0x1000,color,0); |
| 61 | 60 | } |
| 62 | 61 | |
| 63 | 62 | TILE_GET_INFO_MEMBER(deadang_state::get_text_tile_info) |
| 64 | 63 | { |
| 65 | | UINT16 *videoram = m_videoram; |
| 66 | | int tile=(videoram[tile_index] & 0xff) | ((videoram[tile_index] >> 6) & 0x300); |
| 67 | | int color=(videoram[tile_index] >> 8)&0xf; |
| 64 | int tile=(m_videoram[tile_index] & 0xff) | ((m_videoram[tile_index] >> 6) & 0x300); |
| 65 | int color=(m_videoram[tile_index] >> 8)&0xf; |
| 68 | 66 | |
| 69 | 67 | SET_TILE_INFO_MEMBER(0,tile,color,0); |
| 70 | 68 | } |
| r244775 | r244776 | |
| 79 | 77 | m_pf2_layer->set_transparent_pen(15); |
| 80 | 78 | m_pf1_layer->set_transparent_pen(15); |
| 81 | 79 | m_text_layer->set_transparent_pen(15); |
| 80 | |
| 81 | save_item(NAME(m_tilebank)); |
| 82 | save_item(NAME(m_oldtilebank)); |
| 82 | 83 | } |
| 83 | 84 | |
| 84 | 85 | void deadang_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 85 | 86 | { |
| 86 | | UINT16 *spriteram16 = m_spriteram; |
| 87 | 87 | int offs,fx,fy,x,y,color,sprite,pri; |
| 88 | 88 | |
| 89 | 89 | for (offs = 0; offs<0x800/2; offs+=4) |
| 90 | 90 | { |
| 91 | 91 | /* Don't draw empty sprite table entries */ |
| 92 | | if ((spriteram16[offs+3] & 0xff00)!=0xf00) continue; |
| 92 | if ((m_spriteram[offs+3] & 0xff00)!=0xf00) continue; |
| 93 | 93 | |
| 94 | | switch (spriteram16[offs+2]&0xc000) { |
| 94 | switch (m_spriteram[offs+2]&0xc000) { |
| 95 | 95 | default: |
| 96 | 96 | case 0xc000: pri=0; break; /* Unknown */ |
| 97 | 97 | case 0x8000: pri=0; break; /* Over all playfields */ |
| r244775 | r244776 | |
| 99 | 99 | case 0x0000: pri=0xf0|0xcc; break; /* Under middle playfield */ |
| 100 | 100 | } |
| 101 | 101 | |
| 102 | | fx= spriteram16[offs+0]&0x2000; |
| 103 | | fy= spriteram16[offs+0]&0x4000; |
| 104 | | y = spriteram16[offs+0] & 0xff; |
| 105 | | x = spriteram16[offs+2] & 0xff; |
| 102 | fx= m_spriteram[offs+0]&0x2000; |
| 103 | fy= m_spriteram[offs+0]&0x4000; |
| 104 | y = m_spriteram[offs+0] & 0xff; |
| 105 | x = m_spriteram[offs+2] & 0xff; |
| 106 | 106 | if (fy) fy=0; else fy=1; |
| 107 | | if (spriteram16[offs+2]&0x100) x=0-(0xff-x); |
| 107 | if (m_spriteram[offs+2]&0x100) x=0-(0xff-x); |
| 108 | 108 | |
| 109 | | color = (spriteram16[offs+1]>>12)&0xf; |
| 110 | | sprite = spriteram16[offs+1]&0xfff; |
| 109 | color = (m_spriteram[offs+1]>>12)&0xf; |
| 110 | sprite = m_spriteram[offs+1]&0xfff; |
| 111 | 111 | |
| 112 | 112 | if (flip_screen()) { |
| 113 | 113 | x=240-x; |
| r244775 | r244776 | |
| 123 | 123 | } |
| 124 | 124 | } |
| 125 | 125 | |
| 126 | | UINT32 deadang_state::screen_update_deadang(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 126 | UINT32 deadang_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 127 | 127 | { |
| 128 | 128 | /* Setup the tilemaps */ |
| 129 | 129 | m_pf3_layer->set_scrolly(0, ((m_scroll_ram[0x01]&0xf0)<<4)+((m_scroll_ram[0x02]&0x7f)<<1)+((m_scroll_ram[0x02]&0x80)>>7) ); |