Previous 199869 Revisions Next

r31798 Wednesday 27th August, 2014 at 08:57:30 UTC by Alex Jackson
metro.c: sort games by hardware type, clean up address maps, start unifying MCFGs (nw)
[src/mame/drivers]metro.c
[src/mame/includes]metro.h
[src/mame/video]hyprduel.c metro.c

trunk/src/mame/drivers/metro.c
r31797r31798
1919Other        :  Memory Blitter
2020
2121------------------------------------------------------------------------------------------------
22Year + Game                     PCB           Video   Issues / Notes
22Year + Game                     PCB           Video  Sub CPU  Sound        Issues / Notes
2323------------------------------------------------------------------------------------------------
2492  Last Fortress - Toride      VG420         I4100
2592  Last Fortress - Toride (Ger)VG460-(A)     I4100
2692  Pang Pom's                  VG420         I4100
2792  Sky Alert                   VG420         I4100
2892  The Karate Tournament       VG460-B       I4100
2993? Lady Killer / Moeyo Gonta!! VG460-B       I4100
3093  Poitto!                     MTR5260-A     I4100
2492  Last Fortress - Toride      VG420         I4100  uPD7810  YM2413+M6295
2592  Last Fortress - Toride (Ger)VG460-(A)     I4100  uPD7810  YM2413+M6295
2692  Pang Pom's                  VG420         I4100  uPD7810  YM2413+M6295
2792  Sky Alert                   VG420         I4100  uPD7810  YM2413+M6295
2892  The Karate Tournament       VG460-B       I4100  uPD7810  YM2413+M6295
2993? Lady Killer / Moeyo Gonta!! VG460-B       I4100  uPD7810  YM2413+M6295
3093  Poitto!                     MTR5260-A     I4100  uPD7810  YM2413+M6295
3131
3294  Blazing Tornado             HUM-002-A-(B) I4220    Also has Konami 053936 gfx chip
3394  Dharma Doujou               MTR5260-A     I4220
3494  Dharma Doujou (Korea)       MTR527        I4220
3594  Gun Master                  MTR5260-A     I4220
3694  Toride II Adauchi Gaiden    MTR5260-A     I4220
3794  Toride II Adauchi Gaiden(Kr)MTR5260-A     I4220    No YM2151
3895  Daitoride                   MTR5260-A     I4220
3995  Mouse Shooter GoGo          -             I4220    No sound CPU
4095  Pururun                     MTR5260-A     I4220
4195  Puzzli                      MTR5260-A     I4220
4295  Varia Metal                 ES-9309B-B    I4220    No sound CPU but ES-8712 + M6295 + M6585
4396  Bal Cube                    -             I4220    No sound CPU
4496  Bang Bang Ball              -             I4220    No sound CPU
4596  Daitoride (YMF278B)         -             I4220    No sound CPU
4696  Grand Striker 2             HUM-003(A)    I4220    Also has Konami 053936 gfx chip
4796  Sankokushi                  MTR5260-A     I4220
4899  Battle Bubble v2.00         LM2D-Y        I4220    No sound CPU
3294  Dharma Doujou               MTR5260-A     I4220  uPD7810  YM2413+M6295
3394  Dharma Doujou (Korea)       MTR527        I4220  uPD7810  YM2413+M6295
3494  Toride II Adauchi Gaiden    MTR5260-A     I4220  uPD7810  YM2413+M6295
3594  Toride II Adauchi Gaiden(Kr)MTR5260-A     I4220  uPD7810  YM2413+M6295
3694  Gun Master                  MTR5260-A     I4220  uPD7810  YM2151+M6295
3795  Daitoride                   MTR5260-A     I4220  uPD7810  YM2151+M6295
3895  Pururun                     MTR5260-A     I4220  uPD7810  YM2151+M6295
3995  Puzzli                      MTR5260-A     I4220  uPD7810  YM2151+M6295
4096  Sankokushi                  MTR5260-A     I4220  uPD7810  YM2413+M6295
4941
5095  Mahjong Doukyuusei          VG330-B       I4300    No sound CPU
5195  Mahjong Doukyuusei Special  VG340-A       I4300    No sound CPU
5296  Mouja                       VG410-B       I4300    No sound CPU
5397  Mahjong Gakuensai           VG340-A       I4300    No sound CPU
5498  Mahjong Gakuensai 2         VG340-A       I4300    No sound CPU
5500  Puzzlet                     VG2200-(B)    I4300    Z86E02 Zilog Z8 8-bit MCU
4295  Mouse Shooter GoGo          -             I4220   -       YMF278B       GFX ROM data lines swapped
4396  Bal Cube                    -             I4220   -       YMF278B       GFX ROM data lines swapped
4496  Daitoride (YMF278B)         -             I4220   -       YMF278B       GFX ROM data lines swapped
4596  Bang Bang Ball              -             I4220   -       YMF278B       GFX ROM data lines swapped
4699  Battle Bubble v2.00         LM2D-Y        I4220   -       YMF278B       GFX ROM data lines swapped
47
4894  Blazing Tornado             HUM-002-A-(B) I4220  Z80      YM2610        Konami 053936 PSAC2
4996  Grand Striker 2             HUM-003(A)    I4220  Z80      YM2610        Konami 053936 PSAC2
50
5195  Varia Metal                 ES-9309B-B    I4220   -       ES8712+M6295+M6585
52
5395  Mahjong Doukyuusei          VG330-B       I4300   -       YM2413+M6295
5495  Mahjong Doukyuusei Special  VG340-A       I4300   -       YM2413+M6295
5596  Mouja                       VG410-B       I4300   -       YM2413+M6295
5697  Mahjong Gakuensai           VG340-A       I4300   -       YM2413+M6295
5798  Mahjong Gakuensai 2         VG340-A       I4300   -       YM2413+M6295
58
5900  Puzzlet                     VG2200-(B)    I4300  Z86E02   YM2413+M6295  H8/3007 CPU
5660------------------------------------------------------------------------------------------------
5761
5862Mouse Shooter GoGo, Bal Cube, Bang Bang Ball & Daitoride (YMF278B) PCBs have
r31797r31798
8286
8387Notes:
8488
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
8690    keeping start 2 pressed.
8791-   Sprite zoom in Mouja at the end of a match looks wrong, but it's been verified
8892    to be the same on the original board
r31797r31798
987991   AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll")                    // Scroll Regs
988992   AM_RANGE(0x878880, 0x878881) AM_WRITENOP                                        // ? CRT
989993   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
990995   AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable")                // IRQ Enable
991996   AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w)                       // To Sound CPU
992997   AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank")                   // Rom Bank
993998   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
995999   AM_RANGE(0x879700, 0x879713) AM_WRITEONLY AM_SHARE("videoregs")                 // Video Registers
9961000   AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w)  // To Sound CPU
9971001   AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1")                                //
r31797r31798
12331237   AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_SHARE("irq_vectors")               // IRQ Vectors
12341238   AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_SHARE("irq_enable")                // IRQ Enable
12351239   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")                                //
12381240   AM_RANGE(0x278836, 0x278837) AM_WRITE(watchdog_reset16_w)                       // Watchdog
12391241   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
12411242   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
12421244   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")                                //
12431247   AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_SHARE("input_sel")                 // Inputs
12441248   AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_SHARE("videoregs")                 // Video Registers
12451249   AM_RANGE(0x400000, 0x400001) AM_WRITENOP                                        // ? 5
r31797r31798
12741278   AM_RANGE(0x678832, 0x678833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)  // IRQ Cause / IRQ Acknowledge
12751279   AM_RANGE(0x678836, 0x678837) AM_WRITE(watchdog_reset16_w)                       // Watchdog
12761280   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
12771282   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
12781284   AM_RANGE(0x678880, 0x678881) AM_READ(gakusai_input_r)                           // Inputs
12791285   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
12821286   AM_RANGE(0x678888, 0x678889) AM_WRITEONLY AM_SHARE("input_sel")                 // Inputs
12831287   AM_RANGE(0x679700, 0x679713) AM_WRITEONLY AM_SHARE("videoregs")                 // Video Registers
12841288   AM_RANGE(0x800000, 0x800001) AM_WRITENOP                                        // ? 5
r31797r31798
13361340   AM_RANGE(0x272000, 0x273fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")    // Palette
13371341   AM_RANGE(0x274000, 0x274fff) AM_RAM AM_SHARE("spriteram")                       // Sprites
13381342   AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_SHARE("tiletable")                       // Tiles Set
1343   AM_RANGE(0x27880e, 0x27880f) AM_RAM AM_SHARE("screenctrl")                      // Screen Control
13391344   AM_RANGE(0x278810, 0x27881f) AM_WRITEONLY AM_SHARE("irq_levels")                // IRQ Levels
13401345   AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_SHARE("irq_vectors")               // IRQ Vectors
13411346   AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_SHARE("irq_enable")                // IRQ Enable
13421347   AM_RANGE(0x278832, 0x278833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)  // IRQ Cause / IRQ Acknowledge
13431348   AM_RANGE(0x278836, 0x278837) AM_WRITE(watchdog_reset16_w)                       // Watchdog
13441349   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
13461350   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
13471352   AM_RANGE(0x278870, 0x278871) AM_WRITEONLY AM_SHARE("rombank")                   // Rom Bank
13481353   AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r)                           // Inputs
13491354   AM_RANGE(0x278882, 0x278883) AM_READ_PORT("IN0")                                //
13501355   AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_SHARE("input_sel")                 //
1351   AM_RANGE(0x27880e, 0x27880f) AM_RAM AM_SHARE("screenctrl")                      // Screen Control
13521356   AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_SHARE("videoregs")                 // Video Registers
13531357   AM_RANGE(0x400000, 0x400001) AM_WRITENOP                                        // ? 5
13541358   AM_RANGE(0x500000, 0x500001) AM_WRITE(gakusai_oki_bank_lo_w)                    // Sound
r31797r31798
13861390   AM_RANGE(0x478850, 0x47885b) AM_WRITEONLY AM_SHARE("scroll")                    // Scroll Regs
13871391   AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_SHARE("window")        // Tilemap Window
13881392   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
13911393   AM_RANGE(0x478880, 0x478881) AM_READ(gakusai_input_r)                           // Inputs
13921394   AM_RANGE(0x478882, 0x478883) AM_READ_PORT("IN0")                                //
13931395   AM_RANGE(0x478884, 0x478885) AM_READ_PORT("DSW0")                               // 2 x DSW
13941396   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
13951399   AM_RANGE(0x800000, 0x800001) AM_WRITE(gakusai_oki_bank_hi_w)                    // Samples Bank?
13961400   AM_RANGE(0x900000, 0x900001) AM_WRITENOP                                        // ? 4
13971401   AM_RANGE(0xa00000, 0xa00001) AM_WRITE(gakusai_oki_bank_lo_w)                    // Samples Bank
r31797r31798
16521656                                    Mouja
16531657***************************************************************************/
16541658
1655WRITE16_MEMBER(metro_state::mouja_sound_rombank_w)
1659WRITE8_MEMBER(metro_state::mouja_sound_rombank_w)
16561660{
1657   if (ACCESSING_BITS_0_7)
1658      m_oki->set_bank_base(((data >> 3) & 0x07) * 0x40000);
1661   membank("okibank")->set_entry((data >> 3) & 0x07);
16591662}
16601663
16611664static ADDRESS_MAP_START( mouja_map, AS_PROGRAM, 16, metro_state )
r31797r31798
16821685   AM_RANGE(0x478886, 0x478887) AM_READ_PORT("IN2")                                //
16831686   AM_RANGE(0x478888, 0x478889) AM_WRITENOP                                        // ??
16841687   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)
16861689   AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff)
16871690   AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xffff)
16881691   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000)                         // RAM (mirrored)
r31797r31798
16941697#endif
16951698ADDRESS_MAP_END
16961699
1700static 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")
1703ADDRESS_MAP_END
16971704
1705
16981706/***************************************************************************
16991707                                Puzzlet
17001708***************************************************************************/
r31797r31798
18251833   AM_RANGE(0x700000, 0x71ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0")    // Layer 0
18261834   AM_RANGE(0x720000, 0x73ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1")    // Layer 1
18271835   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
18301836   AM_RANGE(0x760000, 0x76ffff) AM_READ(metro_bankedrom_r)                         // Banked ROM
1831
18321837   AM_RANGE(0x770000, 0x771fff) AM_RAM                                             // ???
1833//  AM_RANGE(0x772000, 0x773fff) AM_RAM
18341838   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")
18361840   AM_RANGE(0x775000, 0x775fff) AM_RAM_WRITE(vram_0_clr_w)
18371841   AM_RANGE(0x776000, 0x776fff) AM_RAM_WRITE(vram_1_clr_w)
18381842   AM_RANGE(0x777000, 0x777fff) AM_RAM_WRITE(vram_2_clr_w)
1839
18401843   AM_RANGE(0x778000, 0x7787ff) AM_RAM AM_SHARE("tiletable")                       // Tiles Set
18411844   AM_RANGE(0x778800, 0x778813) AM_WRITEONLY AM_SHARE("videoregs")                 // Video Registers
18421845   AM_RANGE(0x778840, 0x77884f) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs") // Tiles Blitter
r31797r31798
18451848   AM_RANGE(0x778890, 0x778891) AM_WRITENOP                                        // ? CRT
18461849   AM_RANGE(0x7788a2, 0x7788a3) AM_WRITE(metro_irq_cause_w)                            // IRQ Cause
18471850   AM_RANGE(0x7788a4, 0x7788a5) AM_WRITE(puzzlet_irq_enable_w) AM_SHARE("irq_enable")  // IRQ Enable
1848
18491851   AM_RANGE(0x7788aa, 0x7788ab) AM_WRITEONLY AM_SHARE("rombank")                   // Rom Bank
18501852   AM_RANGE(0x7788ac, 0x7788ad) AM_WRITEONLY AM_SHARE("screenctrl")                // Screen Control
18511853
r31797r31798
36063608
36073609***************************************************************************/
36083610
3609MACHINE_START_MEMBER(metro_state,metro)
3611void metro_state::machine_start()
36103612{
36113613   save_item(NAME(m_blitter_bit));
36123614   save_item(NAME(m_irq_line));
r31797r31798
36213623   save_item(NAME(m_sprite_yoffs));
36223624}
36233625
3624MACHINE_RESET_MEMBER(metro_state,metro)
3625{
3626}
36273626
36283627
3629static MACHINE_CONFIG_START( balcube, metro_state )
3628static MACHINE_CONFIG_START( msgogo, metro_state )
36303629
36313630   /* basic machine hardware */
36323631   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) // ?
36363635
3637   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
3638   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
3639
36403636   /* video hardware */
36413637   MCFG_SCREEN_ADD("screen", RASTER)
36423638   MCFG_SCREEN_REFRESH_RATE(60)
r31797r31798
36603656   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
36613657MACHINE_CONFIG_END
36623658
3659static 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) // ?
3664MACHINE_CONFIG_END
36633665
3664static MACHINE_CONFIG_START( daitoa, metro_state )
3665
3666   /* basic machine hardware */
3667   MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz)
3666static MACHINE_CONFIG_DERIVED( daitoa, msgogo )
3667   MCFG_CPU_MODIFY("maincpu")
36683668   MCFG_CPU_PROGRAM_MAP(daitoa_map)
36693669   MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state,  metro_vblank_interrupt)
36703670   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)
36963671MACHINE_CONFIG_END
36973672
3698
3699static 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)
3731MACHINE_CONFIG_END
3732
3733
3734static MACHINE_CONFIG_START( bangball, metro_state )
3735
3736   /* basic machine hardware */
3737   MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz)
3673static MACHINE_CONFIG_DERIVED( bangball, msgogo )
3674   MCFG_CPU_MODIFY("maincpu")
37383675   MCFG_CPU_PROGRAM_MAP(bangball_map)
37393676   MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state,  metro_vblank_interrupt)
37403677   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)
37663678MACHINE_CONFIG_END
37673679
3768
3769static MACHINE_CONFIG_START( batlbubl, metro_state )
3770
3771   /* basic machine hardware */
3772   MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz)
3680static MACHINE_CONFIG_DERIVED( batlbubl, msgogo )
3681   MCFG_CPU_MODIFY("maincpu")
37733682   MCFG_CPU_PROGRAM_MAP(batlbubl_map)
37743683   MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state,  metro_vblank_interrupt)
37753684   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)
38013685MACHINE_CONFIG_END
38023686
3687
38033688static MACHINE_CONFIG_START( daitorid, metro_state )
38043689
38053690   /* basic machine hardware */
r31797r31798
38133698   MCFG_CPU_PROGRAM_MAP(metro_sound_map)
38143699   MCFG_CPU_IO_MAP(daitorid_sound_io_map)
38153700
3816   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
3817   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
3818
38193701   /* video hardware */
38203702   MCFG_SCREEN_ADD("screen", RASTER)
38213703   MCFG_SCREEN_REFRESH_RATE(58)
r31797r31798
38573739   MCFG_CPU_PROGRAM_MAP(metro_sound_map)
38583740   MCFG_CPU_IO_MAP(metro_sound_io_map)
38593741
3860   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
3861   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
3862
38633742   /* video hardware */
38643743   MCFG_SCREEN_ADD("screen", RASTER)
38653744   MCFG_SCREEN_REFRESH_RATE(60)
r31797r31798
39003779   MCFG_CPU_PROGRAM_MAP(metro_sound_map)
39013780   MCFG_CPU_IO_MAP(metro_sound_io_map)
39023781
3903   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
3904   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
3905
39063782   /* video hardware */
39073783   MCFG_SCREEN_ADD("screen", RASTER)
39083784   MCFG_SCREEN_REFRESH_RATE(60)
r31797r31798
39433819   MCFG_CPU_PROGRAM_MAP(metro_sound_map)
39443820   MCFG_CPU_IO_MAP(metro_sound_io_map)
39453821
3946   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
3947   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
3948
39493822   /* video hardware */
39503823   MCFG_SCREEN_ADD("screen", RASTER)
39513824   MCFG_SCREEN_REFRESH_RATE(60)
r31797r31798
39863859   MCFG_CPU_PROGRAM_MAP(metro_sound_map)
39873860   MCFG_CPU_IO_MAP(metro_sound_io_map)
39883861
3989   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
3990   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
3991
39923862   /* video hardware */
39933863   MCFG_SCREEN_ADD("screen", RASTER)
39943864   MCFG_SCREEN_REFRESH_RATE(58)
r31797r31798
40283898   MCFG_CPU_PROGRAM_MAP(metro_sound_map)
40293899   MCFG_CPU_IO_MAP(metro_sound_io_map)
40303900
4031   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
4032   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
4033
40343901   /* video hardware */
40353902   MCFG_SCREEN_ADD("screen", RASTER)
40363903   MCFG_SCREEN_REFRESH_RATE(58)
r31797r31798
40653932   MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state,  metro_vblank_interrupt)
40663933   MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(metro_state,metro_irq_callback)
40673934
4068   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
4069   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
4070
40713935   /* video hardware */
40723936   MCFG_SCREEN_ADD("screen", RASTER)
40733937   MCFG_SCREEN_REFRESH_RATE(60)
r31797r31798
41023966   MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state,  metro_vblank_interrupt)
41033967   MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(metro_state,metro_irq_callback)
41043968
4105   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
4106   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
41073969   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
41083970
41093971   /* video hardware */
r31797r31798
41414003   MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state,  metro_vblank_interrupt)
41424004   MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(metro_state,metro_irq_callback)
41434005
4144   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
4145   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
41464006   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
41474007
41484008   /* video hardware */
r31797r31798
41804040   MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state,  metro_vblank_interrupt)
41814041   MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(metro_state,metro_irq_callback)
41824042
4183   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
4184   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
41854043   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
41864044
41874045   /* video hardware */
r31797r31798
42244082   MCFG_CPU_PROGRAM_MAP(metro_sound_map)
42254083   MCFG_CPU_IO_MAP(metro_sound_io_map)
42264084
4227   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
4228   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
4229
42304085   /* video hardware */
42314086   MCFG_SCREEN_ADD("screen", RASTER)
42324087   MCFG_SCREEN_REFRESH_RATE(60)
r31797r31798
42674122   MCFG_CPU_PROGRAM_MAP(metro_sound_map)
42684123   MCFG_CPU_IO_MAP(metro_sound_io_map)
42694124
4270   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
4271   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
4272
42734125   /* video hardware */
42744126   MCFG_SCREEN_ADD("screen", RASTER)
42754127   MCFG_SCREEN_REFRESH_RATE(60)
r31797r31798
43104162   MCFG_CPU_PROGRAM_MAP(metro_sound_map)
43114163   MCFG_CPU_IO_MAP(daitorid_sound_io_map)
43124164
4313   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
4314   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
4315
43164165   /* video hardware */
43174166   MCFG_SCREEN_ADD("screen", RASTER)
43184167   MCFG_SCREEN_REFRESH_RATE(60)
r31797r31798
43544203   MCFG_CPU_PROGRAM_MAP(metro_sound_map)
43554204   MCFG_CPU_IO_MAP(metro_sound_io_map)
43564205
4357   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
4358   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
4359
43604206   /* video hardware */
43614207   MCFG_SCREEN_ADD("screen", RASTER)
43624208   MCFG_SCREEN_REFRESH_RATE(60)
r31797r31798
43974243   MCFG_CPU_PROGRAM_MAP(metro_sound_map)
43984244   MCFG_CPU_IO_MAP(metro_sound_io_map)
43994245
4400   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
4401   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
4402
44034246   /* video hardware */
44044247   MCFG_SCREEN_ADD("screen", RASTER)
44054248   MCFG_SCREEN_REFRESH_RATE(60)
r31797r31798
44354278   MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state,  metro_vblank_interrupt)
44364279   MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(metro_state,metro_irq_callback)
44374280
4438   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
4439   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
4440
44414281   /* video hardware */
44424282   MCFG_SCREEN_ADD("screen", RASTER)
44434283   MCFG_SCREEN_REFRESH_RATE(58)
r31797r31798
44554295   /* sound hardware */
44564296   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
44574297   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)
44584299   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25)
44594300   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25)
44604301
r31797r31798
44724313   MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state,  metro_vblank_interrupt)
44734314   MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt,  8*60) // ?
44744315
4475   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
4476   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
4477
44784316   /* video hardware */
44794317   MCFG_SCREEN_ADD("screen", RASTER)
44804318   MCFG_SCREEN_REFRESH_RATE(58.2328) // VSync 58.2328Hz, HSync 15.32kHz
r31797r31798
45164354   MCFG_CPU_PROGRAM_MAP(blzntrnd_sound_map)
45174355   MCFG_CPU_IO_MAP(blzntrnd_sound_io_map)
45184356
4519   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
4520   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
4521
45224357   /* video hardware */
45234358   MCFG_SCREEN_ADD("screen", RASTER)
45244359   MCFG_SCREEN_REFRESH_RATE(58)
r31797r31798
45474382   MCFG_SOUND_ROUTE(2, "rspeaker", 1.0)
45484383MACHINE_CONFIG_END
45494384
4550/* like blzntrnd but new vidstart / gfxdecode for the different bg tilemap */
4551
4552static 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)
4385static MACHINE_CONFIG_DERIVED( gstrik2, blzntrnd )
4386   MCFG_GFXDECODE_MODIFY("gfxdecode", gstrik2)
45774387   MCFG_VIDEO_START_OVERRIDE(metro_state,gstrik2)
4578   MCFG_PALETTE_ADD("palette", 0x1000)
4579   MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
45804388
4581   MCFG_DEVICE_ADD("k053936", K053936, 0)
4389   MCFG_DEVICE_MODIFY("k053936")
45824390   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)
45934391MACHINE_CONFIG_END
45944392
45954393
r31797r31798
46014399   MCFG_CPU_IO_MAP(puzzlet_io_map)
46024400   MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state,  puzzlet_interrupt)
46034401
4604   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
4605   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
4606
46074402   /* Coins/service */
46084403   MCFG_PUZZLET_IO_ADD("coins")
46094404   MCFG_PUZZLET_IO_DATA_CALLBACK(DEVWRITELINE("maincpu:sci1", h8_sci_device, rx_w))
r31797r31798
47954590
47964591CPU:    68000-16
47974592Sound:  Z80-8
4798    YMF286K
4593    YMF286K (YM2610 compatible)
47994594OSC:    16.0000MHz
48004595    26.666MHz
48014596Chips:  Imagetek I4220 071
r31797r31798
56855480   ROMX_LOAD( "lh53882b.u4", 0x000004, 0x100000, CRC(5dd7a7b2) SHA1(b0347e8951b29356a7d945b906d93c40b9abc19c) , ROM_GROUPWORD | ROM_SKIP(6)) /* Silkscreened U4 and 31 */
56865481   ROMX_LOAD( "lh53882d.u1", 0x000006, 0x100000, CRC(430c3925) SHA1(41e5bd02a665eee87ef8f4ae9f4bee374c25e00b) , ROM_GROUPWORD | ROM_SKIP(6)) /* Silkscreened U1 and 75 */
56875482
5688   ROM_REGION( 0x100000, "user1", 0 )  /* Samples */
5483   ROM_REGION( 0x100000, "oki", 0 )  /* Samples */
56895484   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)
57105485ROM_END
57115486
57125487
r31797r31798
64176192/* Unscramble the GFX ROMs */
64186193DRIVER_INIT_MEMBER(metro_state,balcube)
64196194{
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();
64236197
6424   while (src < end)
6198   for (unsigned i = 0; i < len; i+=2)
64256199   {
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);
64326201   }
64336202
64346203   metro_common();
r31797r31798
64686237   m_irq_line = -1;    /* split interrupt handlers */
64696238   m_vblank_bit = 1;
64706239   m_mouja_irq_timer = timer_alloc(TIMER_MOUJA_IRQ);
6240   membank("okibank")->configure_entries(0, 8, memregion("oki")->base(), 0x20000);
64716241}
64726242
64736243DRIVER_INIT_MEMBER(metro_state,gakusai)
r31797r31798
65276297GAME( 1996, gstrik2,   0,        gstrik2,  gstrik2,  metro_state, blzntrnd, ROT0,   "Human Amusement",                                 "Grand Striker 2 (Europe and Oceania)",   GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
65286298GAME( 1996, gstrik2j,  gstrik2,  gstrik2,  gstrik2,  metro_state, blzntrnd, ROT0,   "Human Amusement",                                 "Grand Striker 2 (Japan)",                GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // priority between rounds
65296299GAME( 1999, batlbubl,  bangball, batlbubl, batlbubl, metro_state, balcube,  ROT0,   "Banpresto (Limenko license?)",                    "Battle Bubble (v2.00)",                  GAME_SUPPORTS_SAVE ) // or bootleg?
6530GAME( 1996, mouja,     0,        mouja,    mouja,    metro_state, mouja,    ROT0,   "Etona",                                           "Mouja (Japan)",                          GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
6300GAME( 1996, mouja,     0,        mouja,    mouja,    metro_state, mouja,    ROT0,   "Etona",                                           "Mouja (Japan)",                          GAME_SUPPORTS_SAVE )
65316301GAME( 1997, gakusai,   0,        gakusai,  gakusai,  metro_state, gakusai,  ROT0,   "MakeSoft",                                        "Mahjong Gakuensai (Japan)",              GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
65326302GAME( 1998, gakusai2,  0,        gakusai2, gakusai,  metro_state, gakusai,  ROT0,   "MakeSoft",                                        "Mahjong Gakuensai 2 (Japan)",            GAME_SUPPORTS_SAVE )
65336303GAME( 2000, puzzlet,   0,        puzzlet,  puzzlet,  metro_state, puzzlet,  ROT0,   "Unies Corporation",                               "Puzzlet (Japan)",                        GAME_NOT_WORKING | GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/metro.h
r31797r31798
158158   DECLARE_READ16_MEMBER(dokyusp_eeprom_r);
159159   DECLARE_WRITE16_MEMBER(dokyusp_eeprom_bit_w);
160160   DECLARE_WRITE16_MEMBER(dokyusp_eeprom_reset_w);
161   DECLARE_WRITE16_MEMBER(mouja_sound_rombank_w);
161   DECLARE_WRITE8_MEMBER(mouja_sound_rombank_w);
162162   void gakusai_oki_bank_set();
163163
164164   // vmetal
r31797r31798
177177   TILE_GET_INFO_MEMBER(metro_k053936_get_tile_info);
178178   TILE_GET_INFO_MEMBER(metro_k053936_gstrik2_get_tile_info);
179179   TILEMAP_MAPPER_MEMBER(tilemap_scan_gstrik2);
180   DECLARE_MACHINE_START(metro);
181   DECLARE_MACHINE_RESET(metro);
182180   void expand_gfx1();
183181   DECLARE_VIDEO_START(metro_i4100);
184182   DECLARE_VIDEO_START(metro_i4220);
r31797r31798
210208   DECLARE_READ_LINE_MEMBER(metro_rxd_r);
211209
212210protected:
211   virtual void machine_start();
213212   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
214213};
trunk/src/mame/video/hyprduel.c
r31797r31798
296296
297297/*
298298 Sprites are not tile based, so we decode their graphics at runtime.
299
300 We can't do it at startup because drawgfx requires the tiles to be
301 pre-rotated to support vertical games, and that, in turn, requires
302 the tile's sizes to be known at startup - which we don't!
303299*/
304300
305301void hyprduel_state::alloc_empty_tiles(  )
trunk/src/mame/video/metro.c
r31797r31798
252252
253253/*
254254 Sprites are not tile based, so we decode their graphics at runtime.
255
256 We can't do it at startup because drawgfx requires the tiles to be
257 pre-rotated to support vertical games, and that, in turn, requires
258 the tile's sizes to be known at startup - which we don't!
259255*/
260256
261257void metro_state::expand_gfx1()

Previous 199869 Revisions Next


© 1997-2024 The MAME Team