trunk/src/mame/drivers/metro.c
| r31797 | r31798 | |
| 19 | 19 | Other : Memory Blitter |
| 20 | 20 | |
| 21 | 21 | ------------------------------------------------------------------------------------------------ |
| 22 | | Year + Game PCB Video Issues / Notes |
| 22 | Year + Game PCB Video Sub CPU Sound Issues / Notes |
| 23 | 23 | ------------------------------------------------------------------------------------------------ |
| 24 | | 92 Last Fortress - Toride VG420 I4100 |
| 25 | | 92 Last Fortress - Toride (Ger)VG460-(A) I4100 |
| 26 | | 92 Pang Pom's VG420 I4100 |
| 27 | | 92 Sky Alert VG420 I4100 |
| 28 | | 92 The Karate Tournament VG460-B I4100 |
| 29 | | 93? Lady Killer / Moeyo Gonta!! VG460-B I4100 |
| 30 | | 93 Poitto! MTR5260-A I4100 |
| 24 | 92 Last Fortress - Toride VG420 I4100 uPD7810 YM2413+M6295 |
| 25 | 92 Last Fortress - Toride (Ger)VG460-(A) I4100 uPD7810 YM2413+M6295 |
| 26 | 92 Pang Pom's VG420 I4100 uPD7810 YM2413+M6295 |
| 27 | 92 Sky Alert VG420 I4100 uPD7810 YM2413+M6295 |
| 28 | 92 The Karate Tournament VG460-B I4100 uPD7810 YM2413+M6295 |
| 29 | 93? Lady Killer / Moeyo Gonta!! VG460-B I4100 uPD7810 YM2413+M6295 |
| 30 | 93 Poitto! MTR5260-A I4100 uPD7810 YM2413+M6295 |
| 31 | 31 | |
| 32 | | 94 Blazing Tornado HUM-002-A-(B) I4220 Also has Konami 053936 gfx chip |
| 33 | | 94 Dharma Doujou MTR5260-A I4220 |
| 34 | | 94 Dharma Doujou (Korea) MTR527 I4220 |
| 35 | | 94 Gun Master MTR5260-A I4220 |
| 36 | | 94 Toride II Adauchi Gaiden MTR5260-A I4220 |
| 37 | | 94 Toride II Adauchi Gaiden(Kr)MTR5260-A I4220 No YM2151 |
| 38 | | 95 Daitoride MTR5260-A I4220 |
| 39 | | 95 Mouse Shooter GoGo - I4220 No sound CPU |
| 40 | | 95 Pururun MTR5260-A I4220 |
| 41 | | 95 Puzzli MTR5260-A I4220 |
| 42 | | 95 Varia Metal ES-9309B-B I4220 No sound CPU but ES-8712 + M6295 + M6585 |
| 43 | | 96 Bal Cube - I4220 No sound CPU |
| 44 | | 96 Bang Bang Ball - I4220 No sound CPU |
| 45 | | 96 Daitoride (YMF278B) - I4220 No sound CPU |
| 46 | | 96 Grand Striker 2 HUM-003(A) I4220 Also has Konami 053936 gfx chip |
| 47 | | 96 Sankokushi MTR5260-A I4220 |
| 48 | | 99 Battle Bubble v2.00 LM2D-Y I4220 No sound CPU |
| 32 | 94 Dharma Doujou MTR5260-A I4220 uPD7810 YM2413+M6295 |
| 33 | 94 Dharma Doujou (Korea) MTR527 I4220 uPD7810 YM2413+M6295 |
| 34 | 94 Toride II Adauchi Gaiden MTR5260-A I4220 uPD7810 YM2413+M6295 |
| 35 | 94 Toride II Adauchi Gaiden(Kr)MTR5260-A I4220 uPD7810 YM2413+M6295 |
| 36 | 94 Gun Master MTR5260-A I4220 uPD7810 YM2151+M6295 |
| 37 | 95 Daitoride MTR5260-A I4220 uPD7810 YM2151+M6295 |
| 38 | 95 Pururun MTR5260-A I4220 uPD7810 YM2151+M6295 |
| 39 | 95 Puzzli MTR5260-A I4220 uPD7810 YM2151+M6295 |
| 40 | 96 Sankokushi MTR5260-A I4220 uPD7810 YM2413+M6295 |
| 49 | 41 | |
| 50 | | 95 Mahjong Doukyuusei VG330-B I4300 No sound CPU |
| 51 | | 95 Mahjong Doukyuusei Special VG340-A I4300 No sound CPU |
| 52 | | 96 Mouja VG410-B I4300 No sound CPU |
| 53 | | 97 Mahjong Gakuensai VG340-A I4300 No sound CPU |
| 54 | | 98 Mahjong Gakuensai 2 VG340-A I4300 No sound CPU |
| 55 | | 00 Puzzlet VG2200-(B) I4300 Z86E02 Zilog Z8 8-bit MCU |
| 42 | 95 Mouse Shooter GoGo - I4220 - YMF278B GFX ROM data lines swapped |
| 43 | 96 Bal Cube - I4220 - YMF278B GFX ROM data lines swapped |
| 44 | 96 Daitoride (YMF278B) - I4220 - YMF278B GFX ROM data lines swapped |
| 45 | 96 Bang Bang Ball - I4220 - YMF278B GFX ROM data lines swapped |
| 46 | 99 Battle Bubble v2.00 LM2D-Y I4220 - YMF278B GFX ROM data lines swapped |
| 47 | |
| 48 | 94 Blazing Tornado HUM-002-A-(B) I4220 Z80 YM2610 Konami 053936 PSAC2 |
| 49 | 96 Grand Striker 2 HUM-003(A) I4220 Z80 YM2610 Konami 053936 PSAC2 |
| 50 | |
| 51 | 95 Varia Metal ES-9309B-B I4220 - ES8712+M6295+M6585 |
| 52 | |
| 53 | 95 Mahjong Doukyuusei VG330-B I4300 - YM2413+M6295 |
| 54 | 95 Mahjong Doukyuusei Special VG340-A I4300 - YM2413+M6295 |
| 55 | 96 Mouja VG410-B I4300 - YM2413+M6295 |
| 56 | 97 Mahjong Gakuensai VG340-A I4300 - YM2413+M6295 |
| 57 | 98 Mahjong Gakuensai 2 VG340-A I4300 - YM2413+M6295 |
| 58 | |
| 59 | 00 Puzzlet VG2200-(B) I4300 Z86E02 YM2413+M6295 H8/3007 CPU |
| 56 | 60 | ------------------------------------------------------------------------------------------------ |
| 57 | 61 | |
| 58 | 62 | Mouse Shooter GoGo, Bal Cube, Bang Bang Ball & Daitoride (YMF278B) PCBs have |
| r31797 | r31798 | |
| 82 | 86 | |
| 83 | 87 | Notes: |
| 84 | 88 | |
| 85 | | - To enter service mode in ladykill, 3kokishi: toggle the dip switch and reset |
| 89 | - To enter service mode in ladykill, 3kokushi: toggle the dip switch and reset |
| 86 | 90 | keeping start 2 pressed. |
| 87 | 91 | - Sprite zoom in Mouja at the end of a match looks wrong, but it's been verified |
| 88 | 92 | to be the same on the original board |
| r31797 | r31798 | |
| 987 | 991 | AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs |
| 988 | 992 | AM_RANGE(0x878880, 0x878881) AM_WRITENOP // ? CRT |
| 989 | 993 | AM_RANGE(0x878890, 0x878891) AM_WRITENOP // ? CRT |
| 994 | AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 990 | 995 | AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable |
| 991 | 996 | AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w) // To Sound CPU |
| 992 | 997 | AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank |
| 993 | 998 | AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control |
| 994 | | AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 995 | 999 | AM_RANGE(0x879700, 0x879713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers |
| 996 | 1000 | AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w) // To Sound CPU |
| 997 | 1001 | AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1") // |
| r31797 | r31798 | |
| 1233 | 1237 | AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors |
| 1234 | 1238 | AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable |
| 1235 | 1239 | AM_RANGE(0x278832, 0x278833) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1236 | | AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r) // Inputs |
| 1237 | | AM_RANGE(0x278882, 0x278883) AM_READ_PORT("IN0") // |
| 1238 | 1240 | AM_RANGE(0x278836, 0x278837) AM_WRITE(watchdog_reset16_w) // Watchdog |
| 1239 | 1241 | AM_RANGE(0x278840, 0x27884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter |
| 1240 | | AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window |
| 1241 | 1242 | AM_RANGE(0x278850, 0x27885b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs |
| 1243 | AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window |
| 1242 | 1244 | AM_RANGE(0x278870, 0x278871) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank |
| 1245 | AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r) // Inputs |
| 1246 | AM_RANGE(0x278882, 0x278883) AM_READ_PORT("IN0") // |
| 1243 | 1247 | AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_SHARE("input_sel") // Inputs |
| 1244 | 1248 | AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers |
| 1245 | 1249 | AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? 5 |
| r31797 | r31798 | |
| 1274 | 1278 | AM_RANGE(0x678832, 0x678833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1275 | 1279 | AM_RANGE(0x678836, 0x678837) AM_WRITE(watchdog_reset16_w) // Watchdog |
| 1276 | 1280 | AM_RANGE(0x678840, 0x67884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter |
| 1281 | AM_RANGE(0x678850, 0x67885b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs |
| 1277 | 1282 | AM_RANGE(0x678860, 0x67886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window |
| 1283 | AM_RANGE(0x678870, 0x678871) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank |
| 1278 | 1284 | AM_RANGE(0x678880, 0x678881) AM_READ(gakusai_input_r) // Inputs |
| 1279 | 1285 | AM_RANGE(0x678882, 0x678883) AM_READ_PORT("IN0") // |
| 1280 | | AM_RANGE(0x678850, 0x67885b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs |
| 1281 | | AM_RANGE(0x678870, 0x678871) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank |
| 1282 | 1286 | AM_RANGE(0x678888, 0x678889) AM_WRITEONLY AM_SHARE("input_sel") // Inputs |
| 1283 | 1287 | AM_RANGE(0x679700, 0x679713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers |
| 1284 | 1288 | AM_RANGE(0x800000, 0x800001) AM_WRITENOP // ? 5 |
| r31797 | r31798 | |
| 1336 | 1340 | AM_RANGE(0x272000, 0x273fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette |
| 1337 | 1341 | AM_RANGE(0x274000, 0x274fff) AM_RAM AM_SHARE("spriteram") // Sprites |
| 1338 | 1342 | AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set |
| 1343 | AM_RANGE(0x27880e, 0x27880f) AM_RAM AM_SHARE("screenctrl") // Screen Control |
| 1339 | 1344 | AM_RANGE(0x278810, 0x27881f) AM_WRITEONLY AM_SHARE("irq_levels") // IRQ Levels |
| 1340 | 1345 | AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_SHARE("irq_vectors") // IRQ Vectors |
| 1341 | 1346 | AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_SHARE("irq_enable") // IRQ Enable |
| 1342 | 1347 | AM_RANGE(0x278832, 0x278833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w) // IRQ Cause / IRQ Acknowledge |
| 1343 | 1348 | AM_RANGE(0x278836, 0x278837) AM_WRITE(watchdog_reset16_w) // Watchdog |
| 1344 | 1349 | AM_RANGE(0x278840, 0x27884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter |
| 1345 | | AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window |
| 1346 | 1350 | AM_RANGE(0x278850, 0x27885b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs |
| 1351 | AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window |
| 1347 | 1352 | AM_RANGE(0x278870, 0x278871) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank |
| 1348 | 1353 | AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r) // Inputs |
| 1349 | 1354 | AM_RANGE(0x278882, 0x278883) AM_READ_PORT("IN0") // |
| 1350 | 1355 | AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_SHARE("input_sel") // |
| 1351 | | AM_RANGE(0x27880e, 0x27880f) AM_RAM AM_SHARE("screenctrl") // Screen Control |
| 1352 | 1356 | AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers |
| 1353 | 1357 | AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? 5 |
| 1354 | 1358 | AM_RANGE(0x500000, 0x500001) AM_WRITE(gakusai_oki_bank_lo_w) // Sound |
| r31797 | r31798 | |
| 1386 | 1390 | AM_RANGE(0x478850, 0x47885b) AM_WRITEONLY AM_SHARE("scroll") // Scroll Regs |
| 1387 | 1391 | AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_SHARE("window") // Tilemap Window |
| 1388 | 1392 | AM_RANGE(0x478870, 0x478871) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank |
| 1389 | | AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers |
| 1390 | | AM_RANGE(0x478888, 0x478889) AM_WRITEONLY AM_SHARE("input_sel") // Inputs |
| 1391 | 1393 | AM_RANGE(0x478880, 0x478881) AM_READ(gakusai_input_r) // Inputs |
| 1392 | 1394 | AM_RANGE(0x478882, 0x478883) AM_READ_PORT("IN0") // |
| 1393 | 1395 | AM_RANGE(0x478884, 0x478885) AM_READ_PORT("DSW0") // 2 x DSW |
| 1394 | 1396 | AM_RANGE(0x478886, 0x478887) AM_READ_PORT("DSW1") // |
| 1397 | AM_RANGE(0x478888, 0x478889) AM_WRITEONLY AM_SHARE("input_sel") // Inputs |
| 1398 | AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers |
| 1395 | 1399 | AM_RANGE(0x800000, 0x800001) AM_WRITE(gakusai_oki_bank_hi_w) // Samples Bank? |
| 1396 | 1400 | AM_RANGE(0x900000, 0x900001) AM_WRITENOP // ? 4 |
| 1397 | 1401 | AM_RANGE(0xa00000, 0xa00001) AM_WRITE(gakusai_oki_bank_lo_w) // Samples Bank |
| r31797 | r31798 | |
| 1652 | 1656 | Mouja |
| 1653 | 1657 | ***************************************************************************/ |
| 1654 | 1658 | |
| 1655 | | WRITE16_MEMBER(metro_state::mouja_sound_rombank_w) |
| 1659 | WRITE8_MEMBER(metro_state::mouja_sound_rombank_w) |
| 1656 | 1660 | { |
| 1657 | | if (ACCESSING_BITS_0_7) |
| 1658 | | m_oki->set_bank_base(((data >> 3) & 0x07) * 0x40000); |
| 1661 | membank("okibank")->set_entry((data >> 3) & 0x07); |
| 1659 | 1662 | } |
| 1660 | 1663 | |
| 1661 | 1664 | static ADDRESS_MAP_START( mouja_map, AS_PROGRAM, 16, metro_state ) |
| r31797 | r31798 | |
| 1682 | 1685 | AM_RANGE(0x478886, 0x478887) AM_READ_PORT("IN2") // |
| 1683 | 1686 | AM_RANGE(0x478888, 0x478889) AM_WRITENOP // ?? |
| 1684 | 1687 | AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers |
| 1685 | | AM_RANGE(0x800000, 0x800001) AM_WRITE(mouja_sound_rombank_w) |
| 1688 | AM_RANGE(0x800000, 0x800001) AM_WRITE8(mouja_sound_rombank_w, 0x00ff) |
| 1686 | 1689 | AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) |
| 1687 | 1690 | AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xffff) |
| 1688 | 1691 | AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000) // RAM (mirrored) |
| r31797 | r31798 | |
| 1694 | 1697 | #endif |
| 1695 | 1698 | ADDRESS_MAP_END |
| 1696 | 1699 | |
| 1700 | static ADDRESS_MAP_START( mouja_okimap, AS_0, 8, metro_state ) |
| 1701 | AM_RANGE(0x00000, 0x1ffff) AM_ROM |
| 1702 | AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") |
| 1703 | ADDRESS_MAP_END |
| 1697 | 1704 | |
| 1705 | |
| 1698 | 1706 | /*************************************************************************** |
| 1699 | 1707 | Puzzlet |
| 1700 | 1708 | ***************************************************************************/ |
| r31797 | r31798 | |
| 1825 | 1833 | AM_RANGE(0x700000, 0x71ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0") // Layer 0 |
| 1826 | 1834 | AM_RANGE(0x720000, 0x73ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1") // Layer 1 |
| 1827 | 1835 | AM_RANGE(0x740000, 0x75ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2") // Layer 2 |
| 1828 | | AM_RANGE(0x774000, 0x774fff) AM_RAM AM_SHARE("spriteram") |
| 1829 | | |
| 1830 | 1836 | AM_RANGE(0x760000, 0x76ffff) AM_READ(metro_bankedrom_r) // Banked ROM |
| 1831 | | |
| 1832 | 1837 | AM_RANGE(0x770000, 0x771fff) AM_RAM // ??? |
| 1833 | | // AM_RANGE(0x772000, 0x773fff) AM_RAM |
| 1834 | 1838 | AM_RANGE(0x772000, 0x773fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // Palette |
| 1835 | | |
| 1839 | AM_RANGE(0x774000, 0x774fff) AM_RAM AM_SHARE("spriteram") |
| 1836 | 1840 | AM_RANGE(0x775000, 0x775fff) AM_RAM_WRITE(vram_0_clr_w) |
| 1837 | 1841 | AM_RANGE(0x776000, 0x776fff) AM_RAM_WRITE(vram_1_clr_w) |
| 1838 | 1842 | AM_RANGE(0x777000, 0x777fff) AM_RAM_WRITE(vram_2_clr_w) |
| 1839 | | |
| 1840 | 1843 | AM_RANGE(0x778000, 0x7787ff) AM_RAM AM_SHARE("tiletable") // Tiles Set |
| 1841 | 1844 | AM_RANGE(0x778800, 0x778813) AM_WRITEONLY AM_SHARE("videoregs") // Video Registers |
| 1842 | 1845 | AM_RANGE(0x778840, 0x77884f) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter |
| r31797 | r31798 | |
| 1845 | 1848 | AM_RANGE(0x778890, 0x778891) AM_WRITENOP // ? CRT |
| 1846 | 1849 | AM_RANGE(0x7788a2, 0x7788a3) AM_WRITE(metro_irq_cause_w) // IRQ Cause |
| 1847 | 1850 | AM_RANGE(0x7788a4, 0x7788a5) AM_WRITE(puzzlet_irq_enable_w) AM_SHARE("irq_enable") // IRQ Enable |
| 1848 | | |
| 1849 | 1851 | AM_RANGE(0x7788aa, 0x7788ab) AM_WRITEONLY AM_SHARE("rombank") // Rom Bank |
| 1850 | 1852 | AM_RANGE(0x7788ac, 0x7788ad) AM_WRITEONLY AM_SHARE("screenctrl") // Screen Control |
| 1851 | 1853 | |
| r31797 | r31798 | |
| 3606 | 3608 | |
| 3607 | 3609 | ***************************************************************************/ |
| 3608 | 3610 | |
| 3609 | | MACHINE_START_MEMBER(metro_state,metro) |
| 3611 | void metro_state::machine_start() |
| 3610 | 3612 | { |
| 3611 | 3613 | save_item(NAME(m_blitter_bit)); |
| 3612 | 3614 | save_item(NAME(m_irq_line)); |
| r31797 | r31798 | |
| 3621 | 3623 | save_item(NAME(m_sprite_yoffs)); |
| 3622 | 3624 | } |
| 3623 | 3625 | |
| 3624 | | MACHINE_RESET_MEMBER(metro_state,metro) |
| 3625 | | { |
| 3626 | | } |
| 3627 | 3626 | |
| 3628 | 3627 | |
| 3629 | | static MACHINE_CONFIG_START( balcube, metro_state ) |
| 3628 | static MACHINE_CONFIG_START( msgogo, metro_state ) |
| 3630 | 3629 | |
| 3631 | 3630 | /* basic machine hardware */ |
| 3632 | 3631 | MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) |
| 3633 | | MCFG_CPU_PROGRAM_MAP(balcube_map) |
| 3634 | | MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) |
| 3635 | | MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ? |
| 3632 | MCFG_CPU_PROGRAM_MAP(msgogo_map) |
| 3633 | MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) // timing is off, shaking sprites in intro |
| 3634 | MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 60) // ? |
| 3636 | 3635 | |
| 3637 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 3638 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 3639 | | |
| 3640 | 3636 | /* video hardware */ |
| 3641 | 3637 | MCFG_SCREEN_ADD("screen", RASTER) |
| 3642 | 3638 | MCFG_SCREEN_REFRESH_RATE(60) |
| r31797 | r31798 | |
| 3660 | 3656 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 3661 | 3657 | MACHINE_CONFIG_END |
| 3662 | 3658 | |
| 3659 | static MACHINE_CONFIG_DERIVED( balcube, msgogo ) |
| 3660 | MCFG_CPU_MODIFY("maincpu") |
| 3661 | MCFG_CPU_PROGRAM_MAP(balcube_map) |
| 3662 | MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) |
| 3663 | MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ? |
| 3664 | MACHINE_CONFIG_END |
| 3663 | 3665 | |
| 3664 | | static MACHINE_CONFIG_START( daitoa, metro_state ) |
| 3665 | | |
| 3666 | | /* basic machine hardware */ |
| 3667 | | MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) |
| 3666 | static MACHINE_CONFIG_DERIVED( daitoa, msgogo ) |
| 3667 | MCFG_CPU_MODIFY("maincpu") |
| 3668 | 3668 | MCFG_CPU_PROGRAM_MAP(daitoa_map) |
| 3669 | 3669 | MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) |
| 3670 | 3670 | MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ? |
| 3671 | | |
| 3672 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 3673 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 3674 | | |
| 3675 | | /* video hardware */ |
| 3676 | | MCFG_SCREEN_ADD("screen", RASTER) |
| 3677 | | MCFG_SCREEN_REFRESH_RATE(60) |
| 3678 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 3679 | | MCFG_SCREEN_SIZE(320, 224) |
| 3680 | | MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1) |
| 3681 | | MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) |
| 3682 | | MCFG_SCREEN_PALETTE("palette") |
| 3683 | | |
| 3684 | | MCFG_GFXDECODE_ADD("gfxdecode", "palette", i4220) |
| 3685 | | MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_dx_tmap) |
| 3686 | | MCFG_PALETTE_ADD("palette", 0x1000) |
| 3687 | | MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx) |
| 3688 | | |
| 3689 | | /* sound hardware */ |
| 3690 | | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 3691 | | |
| 3692 | | MCFG_SOUND_ADD("ymf", YMF278B, YMF278B_STD_CLOCK) |
| 3693 | | MCFG_YMF278B_IRQ_HANDLER(WRITELINE(metro_state, ymf278b_interrupt)) |
| 3694 | | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 3695 | | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 3696 | 3671 | MACHINE_CONFIG_END |
| 3697 | 3672 | |
| 3698 | | |
| 3699 | | static MACHINE_CONFIG_START( msgogo, metro_state ) |
| 3700 | | |
| 3701 | | /* basic machine hardware */ |
| 3702 | | MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) |
| 3703 | | MCFG_CPU_PROGRAM_MAP(msgogo_map) |
| 3704 | | MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) // timing is off, shaking sprites in intro |
| 3705 | | MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 60) // ? |
| 3706 | | |
| 3707 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 3708 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 3709 | | |
| 3710 | | /* video hardware */ |
| 3711 | | MCFG_SCREEN_ADD("screen", RASTER) |
| 3712 | | MCFG_SCREEN_REFRESH_RATE(60) |
| 3713 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 3714 | | MCFG_SCREEN_SIZE(320, 224) |
| 3715 | | MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1) |
| 3716 | | MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) |
| 3717 | | MCFG_SCREEN_PALETTE("palette") |
| 3718 | | |
| 3719 | | MCFG_GFXDECODE_ADD("gfxdecode", "palette", i4220) |
| 3720 | | MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_dx_tmap) |
| 3721 | | MCFG_PALETTE_ADD("palette", 0x1000) |
| 3722 | | MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx) |
| 3723 | | |
| 3724 | | /* sound hardware */ |
| 3725 | | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 3726 | | |
| 3727 | | MCFG_SOUND_ADD("ymf", YMF278B, YMF278B_STD_CLOCK) |
| 3728 | | MCFG_YMF278B_IRQ_HANDLER(WRITELINE(metro_state, ymf278b_interrupt)) |
| 3729 | | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 3730 | | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 3731 | | MACHINE_CONFIG_END |
| 3732 | | |
| 3733 | | |
| 3734 | | static MACHINE_CONFIG_START( bangball, metro_state ) |
| 3735 | | |
| 3736 | | /* basic machine hardware */ |
| 3737 | | MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) |
| 3673 | static MACHINE_CONFIG_DERIVED( bangball, msgogo ) |
| 3674 | MCFG_CPU_MODIFY("maincpu") |
| 3738 | 3675 | MCFG_CPU_PROGRAM_MAP(bangball_map) |
| 3739 | 3676 | MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) |
| 3740 | 3677 | MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 60) // ? |
| 3741 | | |
| 3742 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 3743 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 3744 | | |
| 3745 | | /* video hardware */ |
| 3746 | | MCFG_SCREEN_ADD("screen", RASTER) |
| 3747 | | MCFG_SCREEN_REFRESH_RATE(60) |
| 3748 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 3749 | | MCFG_SCREEN_SIZE(320, 224) |
| 3750 | | MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1) |
| 3751 | | MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) |
| 3752 | | MCFG_SCREEN_PALETTE("palette") |
| 3753 | | |
| 3754 | | MCFG_GFXDECODE_ADD("gfxdecode", "palette", i4220) |
| 3755 | | MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_dx_tmap) |
| 3756 | | MCFG_PALETTE_ADD("palette", 0x1000) |
| 3757 | | MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx) |
| 3758 | | |
| 3759 | | /* sound hardware */ |
| 3760 | | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 3761 | | |
| 3762 | | MCFG_SOUND_ADD("ymf", YMF278B, YMF278B_STD_CLOCK) |
| 3763 | | MCFG_YMF278B_IRQ_HANDLER(WRITELINE(metro_state, ymf278b_interrupt)) |
| 3764 | | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 3765 | | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 3766 | 3678 | MACHINE_CONFIG_END |
| 3767 | 3679 | |
| 3768 | | |
| 3769 | | static MACHINE_CONFIG_START( batlbubl, metro_state ) |
| 3770 | | |
| 3771 | | /* basic machine hardware */ |
| 3772 | | MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) |
| 3680 | static MACHINE_CONFIG_DERIVED( batlbubl, msgogo ) |
| 3681 | MCFG_CPU_MODIFY("maincpu") |
| 3773 | 3682 | MCFG_CPU_PROGRAM_MAP(batlbubl_map) |
| 3774 | 3683 | MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) |
| 3775 | 3684 | MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 60) // ? |
| 3776 | | |
| 3777 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 3778 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 3779 | | |
| 3780 | | /* video hardware */ |
| 3781 | | MCFG_SCREEN_ADD("screen", RASTER) |
| 3782 | | MCFG_SCREEN_REFRESH_RATE(60) |
| 3783 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 3784 | | MCFG_SCREEN_SIZE(320, 224) |
| 3785 | | MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1) |
| 3786 | | MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) |
| 3787 | | MCFG_SCREEN_PALETTE("palette") |
| 3788 | | |
| 3789 | | MCFG_GFXDECODE_ADD("gfxdecode", "palette", i4220) |
| 3790 | | MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_dx_tmap) |
| 3791 | | MCFG_PALETTE_ADD("palette", 0x1000) |
| 3792 | | MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx) |
| 3793 | | |
| 3794 | | /* sound hardware */ |
| 3795 | | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 3796 | | |
| 3797 | | MCFG_SOUND_ADD("ymf", YMF278B, YMF278B_STD_CLOCK) |
| 3798 | | MCFG_YMF278B_IRQ_HANDLER(WRITELINE(metro_state, ymf278b_interrupt)) |
| 3799 | | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 3800 | | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 3801 | 3685 | MACHINE_CONFIG_END |
| 3802 | 3686 | |
| 3687 | |
| 3803 | 3688 | static MACHINE_CONFIG_START( daitorid, metro_state ) |
| 3804 | 3689 | |
| 3805 | 3690 | /* basic machine hardware */ |
| r31797 | r31798 | |
| 3813 | 3698 | MCFG_CPU_PROGRAM_MAP(metro_sound_map) |
| 3814 | 3699 | MCFG_CPU_IO_MAP(daitorid_sound_io_map) |
| 3815 | 3700 | |
| 3816 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 3817 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 3818 | | |
| 3819 | 3701 | /* video hardware */ |
| 3820 | 3702 | MCFG_SCREEN_ADD("screen", RASTER) |
| 3821 | 3703 | MCFG_SCREEN_REFRESH_RATE(58) |
| r31797 | r31798 | |
| 3857 | 3739 | MCFG_CPU_PROGRAM_MAP(metro_sound_map) |
| 3858 | 3740 | MCFG_CPU_IO_MAP(metro_sound_io_map) |
| 3859 | 3741 | |
| 3860 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 3861 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 3862 | | |
| 3863 | 3742 | /* video hardware */ |
| 3864 | 3743 | MCFG_SCREEN_ADD("screen", RASTER) |
| 3865 | 3744 | MCFG_SCREEN_REFRESH_RATE(60) |
| r31797 | r31798 | |
| 3900 | 3779 | MCFG_CPU_PROGRAM_MAP(metro_sound_map) |
| 3901 | 3780 | MCFG_CPU_IO_MAP(metro_sound_io_map) |
| 3902 | 3781 | |
| 3903 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 3904 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 3905 | | |
| 3906 | 3782 | /* video hardware */ |
| 3907 | 3783 | MCFG_SCREEN_ADD("screen", RASTER) |
| 3908 | 3784 | MCFG_SCREEN_REFRESH_RATE(60) |
| r31797 | r31798 | |
| 3943 | 3819 | MCFG_CPU_PROGRAM_MAP(metro_sound_map) |
| 3944 | 3820 | MCFG_CPU_IO_MAP(metro_sound_io_map) |
| 3945 | 3821 | |
| 3946 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 3947 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 3948 | | |
| 3949 | 3822 | /* video hardware */ |
| 3950 | 3823 | MCFG_SCREEN_ADD("screen", RASTER) |
| 3951 | 3824 | MCFG_SCREEN_REFRESH_RATE(60) |
| r31797 | r31798 | |
| 3986 | 3859 | MCFG_CPU_PROGRAM_MAP(metro_sound_map) |
| 3987 | 3860 | MCFG_CPU_IO_MAP(metro_sound_io_map) |
| 3988 | 3861 | |
| 3989 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 3990 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 3991 | | |
| 3992 | 3862 | /* video hardware */ |
| 3993 | 3863 | MCFG_SCREEN_ADD("screen", RASTER) |
| 3994 | 3864 | MCFG_SCREEN_REFRESH_RATE(58) |
| r31797 | r31798 | |
| 4028 | 3898 | MCFG_CPU_PROGRAM_MAP(metro_sound_map) |
| 4029 | 3899 | MCFG_CPU_IO_MAP(metro_sound_io_map) |
| 4030 | 3900 | |
| 4031 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 4032 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 4033 | | |
| 4034 | 3901 | /* video hardware */ |
| 4035 | 3902 | MCFG_SCREEN_ADD("screen", RASTER) |
| 4036 | 3903 | MCFG_SCREEN_REFRESH_RATE(58) |
| r31797 | r31798 | |
| 4065 | 3932 | MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) |
| 4066 | 3933 | MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(metro_state,metro_irq_callback) |
| 4067 | 3934 | |
| 4068 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 4069 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 4070 | | |
| 4071 | 3935 | /* video hardware */ |
| 4072 | 3936 | MCFG_SCREEN_ADD("screen", RASTER) |
| 4073 | 3937 | MCFG_SCREEN_REFRESH_RATE(60) |
| r31797 | r31798 | |
| 4102 | 3966 | MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) |
| 4103 | 3967 | MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(metro_state,metro_irq_callback) |
| 4104 | 3968 | |
| 4105 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 4106 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 4107 | 3969 | MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") |
| 4108 | 3970 | |
| 4109 | 3971 | /* video hardware */ |
| r31797 | r31798 | |
| 4141 | 4003 | MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) |
| 4142 | 4004 | MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(metro_state,metro_irq_callback) |
| 4143 | 4005 | |
| 4144 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 4145 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 4146 | 4006 | MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") |
| 4147 | 4007 | |
| 4148 | 4008 | /* video hardware */ |
| r31797 | r31798 | |
| 4180 | 4040 | MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) |
| 4181 | 4041 | MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(metro_state,metro_irq_callback) |
| 4182 | 4042 | |
| 4183 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 4184 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 4185 | 4043 | MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") |
| 4186 | 4044 | |
| 4187 | 4045 | /* video hardware */ |
| r31797 | r31798 | |
| 4224 | 4082 | MCFG_CPU_PROGRAM_MAP(metro_sound_map) |
| 4225 | 4083 | MCFG_CPU_IO_MAP(metro_sound_io_map) |
| 4226 | 4084 | |
| 4227 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 4228 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 4229 | | |
| 4230 | 4085 | /* video hardware */ |
| 4231 | 4086 | MCFG_SCREEN_ADD("screen", RASTER) |
| 4232 | 4087 | MCFG_SCREEN_REFRESH_RATE(60) |
| r31797 | r31798 | |
| 4267 | 4122 | MCFG_CPU_PROGRAM_MAP(metro_sound_map) |
| 4268 | 4123 | MCFG_CPU_IO_MAP(metro_sound_io_map) |
| 4269 | 4124 | |
| 4270 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 4271 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 4272 | | |
| 4273 | 4125 | /* video hardware */ |
| 4274 | 4126 | MCFG_SCREEN_ADD("screen", RASTER) |
| 4275 | 4127 | MCFG_SCREEN_REFRESH_RATE(60) |
| r31797 | r31798 | |
| 4310 | 4162 | MCFG_CPU_PROGRAM_MAP(metro_sound_map) |
| 4311 | 4163 | MCFG_CPU_IO_MAP(daitorid_sound_io_map) |
| 4312 | 4164 | |
| 4313 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 4314 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 4315 | | |
| 4316 | 4165 | /* video hardware */ |
| 4317 | 4166 | MCFG_SCREEN_ADD("screen", RASTER) |
| 4318 | 4167 | MCFG_SCREEN_REFRESH_RATE(60) |
| r31797 | r31798 | |
| 4354 | 4203 | MCFG_CPU_PROGRAM_MAP(metro_sound_map) |
| 4355 | 4204 | MCFG_CPU_IO_MAP(metro_sound_io_map) |
| 4356 | 4205 | |
| 4357 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 4358 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 4359 | | |
| 4360 | 4206 | /* video hardware */ |
| 4361 | 4207 | MCFG_SCREEN_ADD("screen", RASTER) |
| 4362 | 4208 | MCFG_SCREEN_REFRESH_RATE(60) |
| r31797 | r31798 | |
| 4397 | 4243 | MCFG_CPU_PROGRAM_MAP(metro_sound_map) |
| 4398 | 4244 | MCFG_CPU_IO_MAP(metro_sound_io_map) |
| 4399 | 4245 | |
| 4400 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 4401 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 4402 | | |
| 4403 | 4246 | /* video hardware */ |
| 4404 | 4247 | MCFG_SCREEN_ADD("screen", RASTER) |
| 4405 | 4248 | MCFG_SCREEN_REFRESH_RATE(60) |
| r31797 | r31798 | |
| 4435 | 4278 | MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) |
| 4436 | 4279 | MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(metro_state,metro_irq_callback) |
| 4437 | 4280 | |
| 4438 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 4439 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 4440 | | |
| 4441 | 4281 | /* video hardware */ |
| 4442 | 4282 | MCFG_SCREEN_ADD("screen", RASTER) |
| 4443 | 4283 | MCFG_SCREEN_REFRESH_RATE(58) |
| r31797 | r31798 | |
| 4455 | 4295 | /* sound hardware */ |
| 4456 | 4296 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 4457 | 4297 | MCFG_OKIM6295_ADD("oki", XTAL_16MHz/1024*132, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified |
| 4298 | MCFG_DEVICE_ADDRESS_MAP(AS_0, mouja_okimap) |
| 4458 | 4299 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) |
| 4459 | 4300 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25) |
| 4460 | 4301 | |
| r31797 | r31798 | |
| 4472 | 4313 | MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) |
| 4473 | 4314 | MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ? |
| 4474 | 4315 | |
| 4475 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 4476 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 4477 | | |
| 4478 | 4316 | /* video hardware */ |
| 4479 | 4317 | MCFG_SCREEN_ADD("screen", RASTER) |
| 4480 | 4318 | MCFG_SCREEN_REFRESH_RATE(58.2328) // VSync 58.2328Hz, HSync 15.32kHz |
| r31797 | r31798 | |
| 4516 | 4354 | MCFG_CPU_PROGRAM_MAP(blzntrnd_sound_map) |
| 4517 | 4355 | MCFG_CPU_IO_MAP(blzntrnd_sound_io_map) |
| 4518 | 4356 | |
| 4519 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 4520 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 4521 | | |
| 4522 | 4357 | /* video hardware */ |
| 4523 | 4358 | MCFG_SCREEN_ADD("screen", RASTER) |
| 4524 | 4359 | MCFG_SCREEN_REFRESH_RATE(58) |
| r31797 | r31798 | |
| 4547 | 4382 | MCFG_SOUND_ROUTE(2, "rspeaker", 1.0) |
| 4548 | 4383 | MACHINE_CONFIG_END |
| 4549 | 4384 | |
| 4550 | | /* like blzntrnd but new vidstart / gfxdecode for the different bg tilemap */ |
| 4551 | | |
| 4552 | | static MACHINE_CONFIG_START( gstrik2, metro_state ) |
| 4553 | | |
| 4554 | | /* basic machine hardware */ |
| 4555 | | MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) |
| 4556 | | MCFG_CPU_PROGRAM_MAP(blzntrnd_map) |
| 4557 | | MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, karatour_interrupt) |
| 4558 | | MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ? |
| 4559 | | |
| 4560 | | MCFG_CPU_ADD("audiocpu", Z80, XTAL_16MHz/2) |
| 4561 | | MCFG_CPU_PROGRAM_MAP(blzntrnd_sound_map) |
| 4562 | | MCFG_CPU_IO_MAP(blzntrnd_sound_io_map) |
| 4563 | | |
| 4564 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 4565 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 4566 | | |
| 4567 | | /* video hardware */ |
| 4568 | | MCFG_SCREEN_ADD("screen", RASTER) |
| 4569 | | MCFG_SCREEN_REFRESH_RATE(58) |
| 4570 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 4571 | | MCFG_SCREEN_SIZE(320, 224) |
| 4572 | | MCFG_SCREEN_VISIBLE_AREA(8, 320-8-1, 0, 224-1) |
| 4573 | | MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro) |
| 4574 | | MCFG_SCREEN_PALETTE("palette") |
| 4575 | | |
| 4576 | | MCFG_GFXDECODE_ADD("gfxdecode", "palette", gstrik2) |
| 4385 | static MACHINE_CONFIG_DERIVED( gstrik2, blzntrnd ) |
| 4386 | MCFG_GFXDECODE_MODIFY("gfxdecode", gstrik2) |
| 4577 | 4387 | MCFG_VIDEO_START_OVERRIDE(metro_state,gstrik2) |
| 4578 | | MCFG_PALETTE_ADD("palette", 0x1000) |
| 4579 | | MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx) |
| 4580 | 4388 | |
| 4581 | | MCFG_DEVICE_ADD("k053936", K053936, 0) |
| 4389 | MCFG_DEVICE_MODIFY("k053936") |
| 4582 | 4390 | MCFG_K053936_OFFSETS(-69, -19) |
| 4583 | | |
| 4584 | | /* sound hardware */ |
| 4585 | | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 4586 | | |
| 4587 | | MCFG_SOUND_ADD("ymsnd", YM2610, XTAL_16MHz/2) |
| 4588 | | MCFG_YM2610_IRQ_HANDLER(WRITELINE(metro_state, blzntrnd_irqhandler)) |
| 4589 | | MCFG_SOUND_ROUTE(0, "lspeaker", 0.25) |
| 4590 | | MCFG_SOUND_ROUTE(0, "rspeaker", 0.25) |
| 4591 | | MCFG_SOUND_ROUTE(1, "lspeaker", 1.0) |
| 4592 | | MCFG_SOUND_ROUTE(2, "rspeaker", 1.0) |
| 4593 | 4391 | MACHINE_CONFIG_END |
| 4594 | 4392 | |
| 4595 | 4393 | |
| r31797 | r31798 | |
| 4601 | 4399 | MCFG_CPU_IO_MAP(puzzlet_io_map) |
| 4602 | 4400 | MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, puzzlet_interrupt) |
| 4603 | 4401 | |
| 4604 | | MCFG_MACHINE_START_OVERRIDE(metro_state,metro) |
| 4605 | | MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) |
| 4606 | | |
| 4607 | 4402 | /* Coins/service */ |
| 4608 | 4403 | MCFG_PUZZLET_IO_ADD("coins") |
| 4609 | 4404 | MCFG_PUZZLET_IO_DATA_CALLBACK(DEVWRITELINE("maincpu:sci1", h8_sci_device, rx_w)) |
| r31797 | r31798 | |
| 4795 | 4590 | |
| 4796 | 4591 | CPU: 68000-16 |
| 4797 | 4592 | Sound: Z80-8 |
| 4798 | | YMF286K |
| 4593 | YMF286K (YM2610 compatible) |
| 4799 | 4594 | OSC: 16.0000MHz |
| 4800 | 4595 | 26.666MHz |
| 4801 | 4596 | Chips: Imagetek I4220 071 |
| r31797 | r31798 | |
| 5685 | 5480 | ROMX_LOAD( "lh53882b.u4", 0x000004, 0x100000, CRC(5dd7a7b2) SHA1(b0347e8951b29356a7d945b906d93c40b9abc19c) , ROM_GROUPWORD | ROM_SKIP(6)) /* Silkscreened U4 and 31 */ |
| 5686 | 5481 | ROMX_LOAD( "lh53882d.u1", 0x000006, 0x100000, CRC(430c3925) SHA1(41e5bd02a665eee87ef8f4ae9f4bee374c25e00b) , ROM_GROUPWORD | ROM_SKIP(6)) /* Silkscreened U1 and 75 */ |
| 5687 | 5482 | |
| 5688 | | ROM_REGION( 0x100000, "user1", 0 ) /* Samples */ |
| 5483 | ROM_REGION( 0x100000, "oki", 0 ) /* Samples */ |
| 5689 | 5484 | ROM_LOAD( "lh538711.u53", 0x000000, 0x100000, CRC(fe3df432) SHA1(4fb7ad997ca6e91468d7516e5c4a94cde6e07104) ) /* Silkscreened U53 and 11 */ |
| 5690 | | |
| 5691 | | /* $00000-$20000 stays the same in all sound banks, */ |
| 5692 | | /* the second half of the bank is what gets switched */ |
| 5693 | | ROM_REGION( 0x200000, "oki", 0 ) /* Samples */ |
| 5694 | | ROM_COPY( "user1", 0x000000, 0x000000, 0x020000) |
| 5695 | | ROM_COPY( "user1", 0x020000, 0x020000, 0x020000) |
| 5696 | | ROM_COPY( "user1", 0x000000, 0x040000, 0x020000) |
| 5697 | | ROM_COPY( "user1", 0x020000, 0x060000, 0x020000) |
| 5698 | | ROM_COPY( "user1", 0x000000, 0x080000, 0x020000) |
| 5699 | | ROM_COPY( "user1", 0x040000, 0x0a0000, 0x020000) |
| 5700 | | ROM_COPY( "user1", 0x000000, 0x0c0000, 0x020000) |
| 5701 | | ROM_COPY( "user1", 0x060000, 0x0e0000, 0x020000) |
| 5702 | | ROM_COPY( "user1", 0x000000, 0x100000, 0x020000) |
| 5703 | | ROM_COPY( "user1", 0x080000, 0x120000, 0x020000) |
| 5704 | | ROM_COPY( "user1", 0x000000, 0x140000, 0x020000) |
| 5705 | | ROM_COPY( "user1", 0x0a0000, 0x160000, 0x020000) |
| 5706 | | ROM_COPY( "user1", 0x000000, 0x180000, 0x020000) |
| 5707 | | ROM_COPY( "user1", 0x0c0000, 0x1a0000, 0x020000) |
| 5708 | | ROM_COPY( "user1", 0x000000, 0x1c0000, 0x020000) |
| 5709 | | ROM_COPY( "user1", 0x0e0000, 0x1e0000, 0x020000) |
| 5710 | 5485 | ROM_END |
| 5711 | 5486 | |
| 5712 | 5487 | |
| r31797 | r31798 | |
| 6417 | 6192 | /* Unscramble the GFX ROMs */ |
| 6418 | 6193 | DRIVER_INIT_MEMBER(metro_state,balcube) |
| 6419 | 6194 | { |
| 6420 | | const size_t len = memregion("gfx1")->bytes(); |
| 6421 | | UINT8 *src = memregion("gfx1")->base(); |
| 6422 | | UINT8 *end = src + len; |
| 6195 | UINT8 *ROM = memregion("gfx1")->base(); |
| 6196 | const unsigned len = memregion("gfx1")->bytes(); |
| 6423 | 6197 | |
| 6424 | | while (src < end) |
| 6198 | for (unsigned i = 0; i < len; i+=2) |
| 6425 | 6199 | { |
| 6426 | | static const UINT8 scramble[16] = { 0x0,0x8,0x4,0xc,0x2,0xa,0x6,0xe,0x1,0x9,0x5,0xd,0x3,0xb,0x7,0xf }; |
| 6427 | | UINT8 data; |
| 6428 | | |
| 6429 | | data = *src; |
| 6430 | | *src = (scramble[data & 0x0f] << 4) | scramble[data >> 4]; |
| 6431 | | src += 2; |
| 6200 | ROM[i] = BITSWAP8(ROM[i],0,1,2,3,4,5,6,7); |
| 6432 | 6201 | } |
| 6433 | 6202 | |
| 6434 | 6203 | metro_common(); |
| r31797 | r31798 | |
| 6468 | 6237 | m_irq_line = -1; /* split interrupt handlers */ |
| 6469 | 6238 | m_vblank_bit = 1; |
| 6470 | 6239 | m_mouja_irq_timer = timer_alloc(TIMER_MOUJA_IRQ); |
| 6240 | membank("okibank")->configure_entries(0, 8, memregion("oki")->base(), 0x20000); |
| 6471 | 6241 | } |
| 6472 | 6242 | |
| 6473 | 6243 | DRIVER_INIT_MEMBER(metro_state,gakusai) |
| r31797 | r31798 | |
| 6527 | 6297 | GAME( 1996, gstrik2, 0, gstrik2, gstrik2, metro_state, blzntrnd, ROT0, "Human Amusement", "Grand Striker 2 (Europe and Oceania)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
| 6528 | 6298 | GAME( 1996, gstrik2j, gstrik2, gstrik2, gstrik2, metro_state, blzntrnd, ROT0, "Human Amusement", "Grand Striker 2 (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // priority between rounds |
| 6529 | 6299 | GAME( 1999, batlbubl, bangball, batlbubl, batlbubl, metro_state, balcube, ROT0, "Banpresto (Limenko license?)", "Battle Bubble (v2.00)", GAME_SUPPORTS_SAVE ) // or bootleg? |
| 6530 | | GAME( 1996, mouja, 0, mouja, mouja, metro_state, mouja, ROT0, "Etona", "Mouja (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 6300 | GAME( 1996, mouja, 0, mouja, mouja, metro_state, mouja, ROT0, "Etona", "Mouja (Japan)", GAME_SUPPORTS_SAVE ) |
| 6531 | 6301 | GAME( 1997, gakusai, 0, gakusai, gakusai, metro_state, gakusai, ROT0, "MakeSoft", "Mahjong Gakuensai (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) |
| 6532 | 6302 | GAME( 1998, gakusai2, 0, gakusai2, gakusai, metro_state, gakusai, ROT0, "MakeSoft", "Mahjong Gakuensai 2 (Japan)", GAME_SUPPORTS_SAVE ) |
| 6533 | 6303 | GAME( 2000, puzzlet, 0, puzzlet, puzzlet, metro_state, puzzlet, ROT0, "Unies Corporation", "Puzzlet (Japan)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) |