Previous 199869 Revisions Next

r20000 Tuesday 1st January, 2013 at 21:36:40 UTC by Luca Elia
metro.c update [Luca Elia]
- added work RAM mirror (fixes toride2g intro)
- halved palette size
- corrected video chip model and offsets in several games
[src/mame/drivers]metro.c
[src/mame/includes]metro.h
[src/mame/video]metro.c

trunk/src/mame/includes/metro.h
r19999r20000
156156   TILEMAP_MAPPER_MEMBER(tilemap_scan_gstrik2);
157157   DECLARE_MACHINE_START(metro);
158158   DECLARE_MACHINE_RESET(metro);
159   DECLARE_VIDEO_START(metro_i4100);
159160   DECLARE_VIDEO_START(metro_i4220);
160   DECLARE_VIDEO_START(metro_i4100);
161   DECLARE_VIDEO_START(metro_i4220_offset);
161162   DECLARE_VIDEO_START(metro_i4300);
162163   DECLARE_VIDEO_START(blzntrnd);
163164   DECLARE_VIDEO_START(gstrik2);
trunk/src/mame/video/metro.c
r19999r20000
3535        their color code.
3636
3737        Tile code with their msbit set are different as they mean:
38        draw a tile filled with a single color (0-1ff)
38        draw a tile filled with a single color (0-fff)
3939
4040
4141                            [ 512 Zooming Sprites ]
r19999r20000
6262   SET_TILE_INFO_MEMBER(
6363         2,
6464         code & 0x7fff,
65         0x1e,
65         0xe,
6666         0);
6767}
6868
r19999r20000
7373   SET_TILE_INFO_MEMBER(
7474         2,
7575         (code & 0x7fff)>>2,
76         0x1e,
76         0xe,
7777         0);
7878}
7979
r19999r20000
110110        Offset:     Bits:                   Value:
111111
112112        0.w         fedc ---- ---- ----
113                    ---- ba98 7654 ----     Color Code
113                    ---- ba98 7654 ----     Color Code*
114114                    ---- ---- ---- 3210     Code High Bits
115115
116116        2.w                                 Code Low Bits
117117
118
118* 00-ff, but on later chips supporting it, xf means 256 color tile and palette x
119119***************************************************************************/
120120
121121
r19999r20000
151151
152152   if (code & 0x8000) /* Special: draw a tile of a single color (i.e. not from the gfx ROMs) */
153153   {
154      *pix = (code & 0x0fff)+0x1000;
154      *pix = code & 0x0fff;
155155
156156      if ((*pix & 0xf) != 0xf)
157157         return 1;
r19999r20000
159159         return 0;
160160
161161   }
162   else if (((tile & 0x00f00000) == 0x00f00000)   && (state->m_support_8bpp)) /* draw tile as 8bpp */
162   else if (((tile & 0x00f00000) == 0x00f00000)   && (state->m_support_8bpp)) /* draw tile as 8bpp (e.g. balcube bg) */
163163   {
164164      gfx_element *gfx1 = machine.gfx[big?3:1];
165165      UINT32 tile2 = big ? ((tile & 0xfffff) + 8*(code & 0xf)) :
r19999r20000
184184         case 0x3: *pix = data[(((big?15:7)-y) * (big?16:8)) + ((big?15:7)-x)]; break;
185185      }
186186
187      *pix |= ((((tile & 0x0f000000) >> 24) + 0x10)*0x100);
187      *pix |= ((tile & 0x0f000000) >> 24) * 0x100;
188188
189189      if ((*pix & 0xff) != 0xff)
190190         return 1;
r19999r20000
208208         return 0;
209209      }
210210
211
212211      switch (flipxy)
213212      {
214213         default:
r19999r20000
218217         case 0x3: *pix = data[(((big?15:7)-y) * (big?16:8)) + ((big?15:7)-x)]; break;
219218      }
220219
221      *pix |= (((((tile & 0x0ff00000) >> 20)) + 0x100)*0x10);
220      *pix |= (((tile & 0x0ff00000) >> 20)) * 0x10;
222221
223222      if ((*pix & 0xf) != 0xf)
224223         return 1;
r19999r20000
246245WRITE16_MEMBER(metro_state::metro_window_w)
247246{
248247   COMBINE_DATA(&m_window[offset]);
249
250248}
251249
252250
r19999r20000
305303
306304VIDEO_START_MEMBER(metro_state,metro_i4220)
307305{
308   expand_gfx1(*this);
306   VIDEO_START_CALL_MEMBER(metro_i4100);
309307
310308   m_support_8bpp = 1;
311   m_support_16x16 = 0;
312   m_has_zoom = 0;
309}
310VIDEO_START_MEMBER(metro_state,metro_i4220_offset)
311{
312   VIDEO_START_CALL_MEMBER(metro_i4220);
313313
314   m_bg_tilemap_enable[0] = 1;
315   m_bg_tilemap_enable[1] = 1;
316   m_bg_tilemap_enable[2] = 1;
317
318   m_bg_tilemap_enable16[0] = 0;
319   m_bg_tilemap_enable16[1] = 0;
320   m_bg_tilemap_enable16[2] = 0;
321
322314   m_bg_tilemap_scrolldx[0] = -2;
323315   m_bg_tilemap_scrolldx[1] = -2;
324316   m_bg_tilemap_scrolldx[2] = -2;
r19999r20000
326318
327319VIDEO_START_MEMBER(metro_state,metro_i4300)
328320{
329   expand_gfx1(*this);
321   VIDEO_START_CALL_MEMBER(metro_i4220);
330322
331   m_support_8bpp = 1;
332323   m_support_16x16 = 1;
333   m_has_zoom = 0;
334
335   m_bg_tilemap_enable[0] = 1;
336   m_bg_tilemap_enable[1] = 1;
337   m_bg_tilemap_enable[2] = 1;
338
339   m_bg_tilemap_enable16[0] = 0;
340   m_bg_tilemap_enable16[1] = 0;
341   m_bg_tilemap_enable16[2] = 0;
342
343   m_bg_tilemap_scrolldx[0] = 0;
344   m_bg_tilemap_scrolldx[1] = 0;
345   m_bg_tilemap_scrolldx[2] = 0;
346324}
347325
348326VIDEO_START_MEMBER(metro_state,blzntrnd)
349327{
350
351328   VIDEO_START_CALL_MEMBER(metro_i4220);
352329
353330   m_has_zoom = 1;
r19999r20000
361338
362339VIDEO_START_MEMBER(metro_state,gstrik2)
363340{
364
365341   VIDEO_START_CALL_MEMBER(metro_i4220);
366342
367343   m_has_zoom = 1;
r19999r20000
448424   int max_sprites = state->m_spriteram.bytes() / 8;
449425   int sprites     = state->m_videoregs[0x00/2] % max_sprites;
450426
451   int color_start = ((state->m_videoregs[0x08/2] & 0x0f) << 4) + 0x100;
427   int color_start = (state->m_videoregs[0x08/2] & 0x0f) << 4;
452428
453429   int i, j, pri;
454430   static const int primask[4] = { 0x0000, 0xff00, 0xff00 | 0xf0f0, 0xff00 | 0xf0f0 | 0xcccc };
r19999r20000
724700
725701   /* The background color is selected by a register */
726702   machine().priority_bitmap.fill(0, cliprect);
727   bitmap.fill((m_videoregs[0x12/2] & 0x0fff) + 0x1000, cliprect);
703   bitmap.fill(m_videoregs[0x12/2] & 0x0fff, cliprect);
728704
729705   /*  Screen Control Register:
730706
trunk/src/mame/drivers/metro.c
r19999r20000
464696  Sankokushi                  MTR5260-A     I4220
474799  Battle Bubble v2.00         LM2D-Y        I4220    No sound CPU
4848
4995  Mahjong Doukyuhsei          VG330-B       I4300    No sound CPU
4995  Mahjong Doukyuusei          VG330-B       I4300    No sound CPU
505095  Mahjong Doukyuusei Special  VG340-A       I4300    No sound CPU
515196  Mouja                       VG410-B       I4300    No sound CPU
525297  Mahjong Gakuensai           VG340-A       I4300    No sound CPU
r19999r20000
5555-----------------------------------------------------------------------------
5656
5757Mouse Shooter GoGo, Bal Cube, Bang Bang Ball & Daitoride (YMF278B) PCBs have
58    no PCB number but all look identical to each other.
58no PCB number but all look identical to each other.
5959
6060Not dumped yet:
616194  Toride II
6262
6363To Do:
6464
65-   Wrong color bars in service mode (e.g. balcube, toride2g).
66    They use solid color tiles (80xx), but the right palette is not at 00-ff.
67    Related to the unknown table in the RAM mapped just before the palette?
68-   Most games, in service mode, seem to require that you press start1&2 *exactly at once*
69    in order to advance to the next screen (e.g. holding 1 then pressing 2 doesn't work).
6570-   Coin lockout
66-   Some gfx problems in ladykill, 3kokushi, puzzli, gakusai
67  -  Seems related to how we handle windows and wrapping
71-   Some gfx problems in ladykill, 3kokushi, puzzli, gakusai,
72    seem related to how we handle windows and wrapping
6873-   Are the 16x16 tiles used by Mouja a Imagetek I4300-only feature?
6974-   Interrupt timing needs figuring out properly, having it incorrect
7075    causes scrolling glitches in some games.  Test cases Mouse Go Go
r19999r20000
7681
7782Notes:
7883
79-   To enter service mode in Lady Killer, toggle the dip switch and reset
80    keeping  start 2 pressed.
84-   To enter service mode in ladykill, 3kokishi: toggle the dip switch and reset
85    keeping start 2 pressed.
8186-   Sprite zoom in Mouja at the end of a match looks wrong, but it's been verified
8287    to be the same on the original board
8388
r19999r20000
190195
191196INTERRUPT_GEN_MEMBER(metro_state::metro_vblank_interrupt)
192197{
193
194198   m_requested_int[m_vblank_bit] = 1;
195199   update_irq_state(machine());
196200}
197201
198202INTERRUPT_GEN_MEMBER(metro_state::metro_periodic_interrupt)
199203{
200
201204   m_requested_int[4] = 1;
202205   update_irq_state(machine());
203206}
r19999r20000
210213/* lev 2-7 (lev 1 seems sound related) */
211214INTERRUPT_GEN_MEMBER(metro_state::karatour_interrupt)
212215{
213
214216   m_requested_int[m_vblank_bit] = 1;
215217
216218   /* write to scroll registers, the duration is a guess */
r19999r20000
222224
223225TIMER_CALLBACK_MEMBER(metro_state::mouja_irq_callback)
224226{
225
226227   m_requested_int[0] = 1;
227228   update_irq_state(machine());
228229}
r19999r20000
236237
237238INTERRUPT_GEN_MEMBER(metro_state::puzzlet_interrupt)
238239{
239
240240   m_requested_int[m_vblank_bit] = 1;
241241   update_irq_state(machine());
242242
r19999r20000
769769
770770
771771static ADDRESS_MAP_START( balcube_map, AS_PROGRAM, 16, metro_state )
772   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                 // ROM
773   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM                                 // RAM
774   AM_RANGE(0x300000, 0x300001) AM_DEVREAD8_LEGACY("ymf", ymf278b_r, 0x00ff)               // Sound
775   AM_RANGE(0x300000, 0x30000b) AM_DEVWRITE8_LEGACY("ymf", ymf278b_w, 0x00ff)               // Sound
772   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                    // ROM
773   AM_RANGE(0x300000, 0x300001) AM_DEVREAD8_LEGACY("ymf", ymf278b_r, 0x00ff)      // Sound
774   AM_RANGE(0x300000, 0x30000b) AM_DEVWRITE8_LEGACY("ymf", ymf278b_w, 0x00ff)      // Sound
776775   AM_RANGE(0x400000, 0x41ffff) AM_READ(balcube_dsw_r)                        // DSW x 3
777776   AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN0")                        // Inputs
778777   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("IN1")                        //
779   AM_RANGE(0x500006, 0x500007) AM_READNOP                              //
780   AM_RANGE(0x500002, 0x500009) AM_WRITE(metro_coin_lockout_4words_w)               // Coin Lockout
778   AM_RANGE(0x500006, 0x500007) AM_READNOP                                 //
779   AM_RANGE(0x500002, 0x500009) AM_WRITE(metro_coin_lockout_4words_w)            // Coin Lockout
781780   AM_RANGE(0x600000, 0x61ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0")   // Layer 0
782781   AM_RANGE(0x620000, 0x63ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1")   // Layer 1
783782   AM_RANGE(0x640000, 0x65ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2")   // Layer 2
784783   AM_RANGE(0x660000, 0x66ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
785   AM_RANGE(0x670000, 0x673fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
786   AM_RANGE(0x674000, 0x674fff) AM_RAM AM_SHARE("spriteram")   // Sprites
787   AM_RANGE(0x678000, 0x6787ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
784   AM_RANGE(0x670000, 0x671fff) AM_RAM                                    // ???
785   AM_RANGE(0x672000, 0x673fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
786   AM_RANGE(0x674000, 0x674fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
787   AM_RANGE(0x678000, 0x6787ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
788788   AM_RANGE(0x678840, 0x67884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
789789   AM_RANGE(0x678860, 0x67886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
790   AM_RANGE(0x678870, 0x67887b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll
790   AM_RANGE(0x678870, 0x67887b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll
791791   AM_RANGE(0x678880, 0x678881) AM_WRITENOP                              // ? increasing
792792   AM_RANGE(0x678890, 0x678891) AM_WRITENOP                              // ? increasing
793   AM_RANGE(0x6788a2, 0x6788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)         // IRQ Cause / IRQ Acknowledge
794   AM_RANGE(0x6788a4, 0x6788a5) AM_WRITEONLY AM_SHARE("irq_enable")         // IRQ Enable
795   AM_RANGE(0x6788aa, 0x6788ab) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
796   AM_RANGE(0x6788ac, 0x6788ad) AM_WRITEONLY AM_SHARE("screenctrl")         // Screen Control
797   AM_RANGE(0x679700, 0x679713) AM_WRITEONLY AM_SHARE("videoregs")         // Video Registers
793   AM_RANGE(0x6788a2, 0x6788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)   // IRQ Cause / IRQ Acknowledge
794   AM_RANGE(0x6788a4, 0x6788a5) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
795   AM_RANGE(0x6788aa, 0x6788ab) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
796   AM_RANGE(0x6788ac, 0x6788ad) AM_WRITEONLY AM_SHARE("screenctrl")            // Screen Control
797   AM_RANGE(0x679700, 0x679713) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
798   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
798799ADDRESS_MAP_END
799800
800801
801802/***************************************************************************
802                                    Daitoride (alt hardware)
803                            Daitoride (YMF278B version)
803804***************************************************************************/
804805
805806
806807static ADDRESS_MAP_START( daitoa_map, AS_PROGRAM, 16, metro_state )
807   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                 // ROM
808   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM                               // RAM
809   AM_RANGE(0x400000, 0x400001) AM_DEVREAD8_LEGACY("ymf", ymf278b_r, 0x00ff)               // Sound
810   AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8_LEGACY("ymf", ymf278b_w, 0x00ff)               // Sound
811   AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r)                        // DSW x 3
808   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                    // ROM
812809   AM_RANGE(0x100000, 0x11ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0")   // Layer 0
813810   AM_RANGE(0x120000, 0x13ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1")   // Layer 1
814811   AM_RANGE(0x140000, 0x15ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2")   // Layer 2
815812   AM_RANGE(0x160000, 0x16ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
816   AM_RANGE(0x170000, 0x173fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
817   AM_RANGE(0x174000, 0x174fff) AM_RAM AM_SHARE("spriteram")   // Sprites
818   AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
813   AM_RANGE(0x170000, 0x171fff) AM_RAM                                    // ???
814   AM_RANGE(0x172000, 0x173fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
815   AM_RANGE(0x174000, 0x174fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
816   AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
819817   AM_RANGE(0x178840, 0x17884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
820818   AM_RANGE(0x178860, 0x17886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
821   AM_RANGE(0x178870, 0x17887b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll
819   AM_RANGE(0x178870, 0x17887b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll
822820   AM_RANGE(0x178880, 0x178881) AM_WRITENOP                              // ? increasing
823821   AM_RANGE(0x178890, 0x178891) AM_WRITENOP                              // ? increasing
824   AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)         // IRQ Cause / IRQ Acknowledge
825   AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_SHARE("irq_enable")         // IRQ Enable
826   AM_RANGE(0x1788aa, 0x1788ab) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
827   AM_RANGE(0x1788ac, 0x1788ad) AM_WRITEONLY AM_SHARE("screenctrl")         // Screen Control
828   AM_RANGE(0x179700, 0x179713) AM_WRITEONLY AM_SHARE("videoregs")         // Video Registers
822   AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)   // IRQ Cause / IRQ Acknowledge
823   AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
824   AM_RANGE(0x1788aa, 0x1788ab) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
825   AM_RANGE(0x1788ac, 0x1788ad) AM_WRITEONLY AM_SHARE("screenctrl")            // Screen Control
826   AM_RANGE(0x179700, 0x179713) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
829827   AM_RANGE(0x200000, 0x200001) AM_READ_PORT("IN0")                        // Inputs
830828   AM_RANGE(0x200002, 0x200003) AM_READ_PORT("IN1")                        //
831   AM_RANGE(0x200006, 0x200007) AM_READNOP                              //
832   AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w)               // Coin Lockout
829   AM_RANGE(0x200006, 0x200007) AM_READNOP                                 //
830   AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w)            // Coin Lockout
831   AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r)                        // DSW x 3
832   AM_RANGE(0x400000, 0x400001) AM_DEVREAD8_LEGACY("ymf", ymf278b_r, 0x00ff)      // Sound
833   AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8_LEGACY("ymf", ymf278b_w, 0x00ff)      // Sound
834   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
833835ADDRESS_MAP_END
834836
835837
r19999r20000
838840***************************************************************************/
839841
840842static ADDRESS_MAP_START( bangball_map, AS_PROGRAM, 16, metro_state )
841   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                 // ROM
842   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM                                 // RAM
843   AM_RANGE(0xf10000, 0xf10fff) AM_RAM                                 // RAM (bug in the ram test routine)
844   AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8_LEGACY("ymf", ymf278b_r, 0x00ff)               // Sound
845   AM_RANGE(0xb00000, 0xb0000b) AM_DEVWRITE8_LEGACY("ymf", ymf278b_w, 0x00ff)               // Sound
843   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                    // ROM
844   AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8_LEGACY("ymf", ymf278b_r, 0x00ff)      // Sound
845   AM_RANGE(0xb00000, 0xb0000b) AM_DEVWRITE8_LEGACY("ymf", ymf278b_w, 0x00ff)      // Sound
846846   AM_RANGE(0xc00000, 0xc1ffff) AM_READ(balcube_dsw_r)                        // DSW x 3
847847   AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("IN0")                        // Inputs
848848   AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("IN1")                        //
849   AM_RANGE(0xd00006, 0xd00007) AM_READNOP                              //
850   AM_RANGE(0xd00002, 0xd00009) AM_WRITE(metro_coin_lockout_4words_w)               // Coin Lockout
849   AM_RANGE(0xd00006, 0xd00007) AM_READNOP                                 //
850   AM_RANGE(0xd00002, 0xd00009) AM_WRITE(metro_coin_lockout_4words_w)            // Coin Lockout
851851   AM_RANGE(0xe00000, 0xe1ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0")   // Layer 0
852852   AM_RANGE(0xe20000, 0xe3ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1")   // Layer 1
853853   AM_RANGE(0xe40000, 0xe5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2")   // Layer 2
854854   AM_RANGE(0xe60000, 0xe6ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
855   AM_RANGE(0xe70000, 0xe73fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
856   AM_RANGE(0xe74000, 0xe74fff) AM_RAM AM_SHARE("spriteram")   // Sprites
857   AM_RANGE(0xe78000, 0xe787ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
855   AM_RANGE(0xe70000, 0xe71fff) AM_RAM                                    // ???
856   AM_RANGE(0xe72000, 0xe73fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
857   AM_RANGE(0xe74000, 0xe74fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
858   AM_RANGE(0xe78000, 0xe787ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
858859   AM_RANGE(0xe78840, 0xe7884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
859860   AM_RANGE(0xe78860, 0xe7886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
860   AM_RANGE(0xe78870, 0xe7887b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll
861   AM_RANGE(0xe78870, 0xe7887b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll
861862   AM_RANGE(0xe78880, 0xe78881) AM_WRITENOP                              // ? increasing
862863   AM_RANGE(0xe78890, 0xe78891) AM_WRITENOP                              // ? increasing
863   AM_RANGE(0xe788a2, 0xe788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)         // IRQ Cause / IRQ Acknowledge
864   AM_RANGE(0xe788a4, 0xe788a5) AM_WRITEONLY AM_SHARE("irq_enable")         // IRQ Enable
865   AM_RANGE(0xe788aa, 0xe788ab) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
866   AM_RANGE(0xe788ac, 0xe788ad) AM_WRITEONLY AM_SHARE("screenctrl")         // Screen Control
867   AM_RANGE(0xe79700, 0xe79713) AM_WRITEONLY AM_SHARE("videoregs")         // Video Registers
864   AM_RANGE(0xe788a2, 0xe788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)   // IRQ Cause / IRQ Acknowledge
865   AM_RANGE(0xe788a4, 0xe788a5) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
866   AM_RANGE(0xe788aa, 0xe788ab) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
867   AM_RANGE(0xe788ac, 0xe788ad) AM_WRITEONLY AM_SHARE("screenctrl")            // Screen Control
868   AM_RANGE(0xe79700, 0xe79713) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
869   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
868870ADDRESS_MAP_END
869871
870872
r19999r20000
873875***************************************************************************/
874876
875877static ADDRESS_MAP_START( batlbubl_map, AS_PROGRAM, 16, metro_state )
876   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                 // ROM
878   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                    // ROM
877879   AM_RANGE(0x100000, 0x11ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0")   // Layer 0
878880   AM_RANGE(0x120000, 0x13ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1")   // Layer 1
879881   AM_RANGE(0x140000, 0x15ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2")   // Layer 2
880882   AM_RANGE(0x160000, 0x16ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
881   AM_RANGE(0x170000, 0x173fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
882   AM_RANGE(0x174000, 0x174fff) AM_RAM AM_SHARE("spriteram")   // Sprites
883   AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
883   AM_RANGE(0x170000, 0x171fff) AM_RAM                                    // ???
884   AM_RANGE(0x172000, 0x173fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
885   AM_RANGE(0x174000, 0x174fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
886   AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
884887   AM_RANGE(0x178840, 0x17884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
885888   AM_RANGE(0x178860, 0x17886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
886   AM_RANGE(0x178870, 0x17887b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll
889   AM_RANGE(0x178870, 0x17887b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll
887890   AM_RANGE(0x178880, 0x178881) AM_WRITENOP                              // ? increasing
888891   AM_RANGE(0x178890, 0x178891) AM_WRITENOP                              // ? increasing
889   AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)         // IRQ Cause / IRQ Acknowledge
890   AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_SHARE("irq_enable")         // IRQ Enable
891   AM_RANGE(0x1788aa, 0x1788ab) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
892   AM_RANGE(0x1788ac, 0x1788ad) AM_WRITEONLY AM_SHARE("screenctrl")         // Screen Control
893   AM_RANGE(0x179700, 0x179713) AM_WRITEONLY AM_SHARE("videoregs")         // Video Registers
894   AM_RANGE(0x200000, 0x200001) AM_READ_PORT("IN1")
895   AM_RANGE(0x200002, 0x200003) AM_READ_PORT("DSW0")
896   AM_RANGE(0x200004, 0x200005) AM_READ_PORT("IN0")
897   AM_RANGE(0x200006, 0x200007) AM_READ_PORT("IN2")
898   AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w)               // Coin Lockout
892   AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)   // IRQ Cause / IRQ Acknowledge
893   AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
894   AM_RANGE(0x1788aa, 0x1788ab) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
895   AM_RANGE(0x1788ac, 0x1788ad) AM_WRITEONLY AM_SHARE("screenctrl")            // Screen Control
896   AM_RANGE(0x179700, 0x179713) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
897   AM_RANGE(0x200000, 0x200001) AM_READ_PORT("IN1")                        // Inputs
898   AM_RANGE(0x200002, 0x200003) AM_READ_PORT("DSW0")                        //
899   AM_RANGE(0x200004, 0x200005) AM_READ_PORT("IN0")                        //
900   AM_RANGE(0x200006, 0x200007) AM_READ_PORT("IN2")                        //
901   AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w)            // Coin Lockout
899902   AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r)                        // read but ignored?
900   AM_RANGE(0x400000, 0x400001) AM_DEVREAD8_LEGACY("ymf", ymf278b_r, 0x00ff)               // Sound
901   AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8_LEGACY("ymf", ymf278b_w, 0x00ff)               //
902   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM                                 // RAM
903   AM_RANGE(0xf10000, 0xf10fff) AM_RAM                                 // RAM (bug in the ram test routine)
903   AM_RANGE(0x400000, 0x400001) AM_DEVREAD8_LEGACY("ymf", ymf278b_r, 0x00ff)      // Sound
904   AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8_LEGACY("ymf", ymf278b_w, 0x00ff)      //
905   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
904906ADDRESS_MAP_END
905907
906908
r19999r20000
909911***************************************************************************/
910912
911913static ADDRESS_MAP_START( msgogo_map, AS_PROGRAM, 16, metro_state )
912   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                 // ROM
914   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                    // ROM
913915   AM_RANGE(0x100000, 0x11ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0")   // Layer 0
914916   AM_RANGE(0x120000, 0x13ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1")   // Layer 1
915917   AM_RANGE(0x140000, 0x15ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2")   // Layer 2
916918   AM_RANGE(0x160000, 0x16ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
917   AM_RANGE(0x170000, 0x173fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
918   AM_RANGE(0x174000, 0x174fff) AM_RAM AM_SHARE("spriteram")   // Sprites
919   AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
919   AM_RANGE(0x170000, 0x171fff) AM_RAM                                    // ???
920   AM_RANGE(0x172000, 0x173fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
921   AM_RANGE(0x174000, 0x174fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
922   AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
920923   AM_RANGE(0x178840, 0x17884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
921924   AM_RANGE(0x178860, 0x17886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
922   AM_RANGE(0x178870, 0x17887b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll
925   AM_RANGE(0x178870, 0x17887b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll
923926   AM_RANGE(0x178880, 0x178881) AM_WRITENOP                              // ? increasing
924927   AM_RANGE(0x178890, 0x178891) AM_WRITENOP                              // ? increasing
925   AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)         // IRQ Cause / IRQ Acknowledge
926   AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_SHARE("irq_enable")         // IRQ Enable
927   AM_RANGE(0x1788aa, 0x1788ab) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
928   AM_RANGE(0x1788ac, 0x1788ad) AM_WRITEONLY AM_SHARE("screenctrl")         // Screen Control
929   AM_RANGE(0x179700, 0x179713) AM_WRITEONLY AM_SHARE("videoregs")         // Video Registers
928   AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)   // IRQ Cause / IRQ Acknowledge
929   AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
930   AM_RANGE(0x1788aa, 0x1788ab) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
931   AM_RANGE(0x1788ac, 0x1788ad) AM_WRITEONLY AM_SHARE("screenctrl")            // Screen Control
932   AM_RANGE(0x179700, 0x179713) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
930933   AM_RANGE(0x200000, 0x200001) AM_READ_PORT("COINS")                        // Inputs
931934   AM_RANGE(0x200002, 0x200003) AM_READ_PORT("JOYS")                        //
932   AM_RANGE(0x200006, 0x200007) AM_READNOP                              //
933   AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w)               // Coin Lockout
935   AM_RANGE(0x200006, 0x200007) AM_READNOP                                 //
936   AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w)            // Coin Lockout
934937   AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r)                        // 3 x DSW
935   AM_RANGE(0x400000, 0x400001) AM_DEVREAD8_LEGACY("ymf", ymf278b_r, 0x00ff)               // Sound
936   AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8_LEGACY("ymf", ymf278b_w, 0x00ff)               //
937   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM                                 // RAM
938   AM_RANGE(0x400000, 0x400001) AM_DEVREAD8_LEGACY("ymf", ymf278b_r, 0x00ff)      // Sound
939   AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8_LEGACY("ymf", ymf278b_w, 0x00ff)      //
940   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
938941ADDRESS_MAP_END
939942
940943/***************************************************************************
r19999r20000
942945***************************************************************************/
943946
944947static ADDRESS_MAP_START( daitorid_map, AS_PROGRAM, 16, metro_state )
945   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                 // ROM
946   AM_RANGE(0x800000, 0x80ffff) AM_RAM                                 // RAM
948   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                    // ROM
947949   AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0")   // Layer 0
948950   AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1")   // Layer 1
949951   AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2")   // Layer 2
950952   AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
951   AM_RANGE(0x470000, 0x473fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
952   AM_RANGE(0x474000, 0x474fff) AM_RAM AM_SHARE("spriteram")   // Sprites
953   AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
953   AM_RANGE(0x470000, 0x471fff) AM_RAM                                    // ???
954   AM_RANGE(0x472000, 0x473fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
955   AM_RANGE(0x474000, 0x474fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
956   AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
954957   AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
955958   AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
956   AM_RANGE(0x478870, 0x47887b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll
959   AM_RANGE(0x478870, 0x47887b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll
957960   AM_RANGE(0x478880, 0x478881) AM_WRITENOP                              // ? increasing
958961   AM_RANGE(0x478890, 0x478891) AM_WRITENOP                              // ? increasing
959   AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)         // IRQ Cause / IRQ Acknowledge
960   AM_RANGE(0x4788a4, 0x4788a5) AM_WRITEONLY AM_SHARE("irq_enable")         // IRQ Enable
961   AM_RANGE(0x4788a8, 0x4788a9) AM_WRITE(metro_soundlatch_w)                     // To Sound CPU
962   AM_RANGE(0x4788aa, 0x4788ab) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
963   AM_RANGE(0x4788ac, 0x4788ad) AM_WRITEONLY AM_SHARE("screenctrl")         // Screen Control
964   AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_SHARE("videoregs")         // Video Registers
965   AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w)         // To Sound CPU
966   AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1")
967   AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0")
968   AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN2")
969   AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w)               // Coin Lockout
962   AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)   // IRQ Cause / IRQ Acknowledge
963   AM_RANGE(0x4788a4, 0x4788a5) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
964   AM_RANGE(0x4788a8, 0x4788a9) AM_WRITE(metro_soundlatch_w)                  // To Sound CPU
965   AM_RANGE(0x4788aa, 0x4788ab) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
966   AM_RANGE(0x4788ac, 0x4788ad) AM_WRITEONLY AM_SHARE("screenctrl")            // Screen Control
967   AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
968   AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
969   AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w)   // To Sound CPU
970   AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1")                        //
971   AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0")                        //
972   AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN2")                        //
973   AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w)            // Coin Lockout
970974ADDRESS_MAP_END
971975
972976
r19999r20000
975979***************************************************************************/
976980
977981static ADDRESS_MAP_START( dharma_map, AS_PROGRAM, 16, metro_state )
978   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                 // ROM
979   AM_RANGE(0x400000, 0x40ffff) AM_RAM                                 // RAM
982   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                    // ROM
983   AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
980984   AM_RANGE(0x800000, 0x81ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0")   // Layer 0
981985   AM_RANGE(0x820000, 0x83ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1")   // Layer 1
982986   AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2")   // Layer 2
983987   AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
984   AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
985   AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram")   // Sprites
986   AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
988   AM_RANGE(0x870000, 0x871fff) AM_RAM                                    // ???
989   AM_RANGE(0x872000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
990   AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
991   AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
987992   AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
988993   AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
989   AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll Regs
994   AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll Regs
990995   AM_RANGE(0x878880, 0x878881) AM_WRITENOP                              // ? increasing
991996   AM_RANGE(0x878890, 0x878891) AM_WRITENOP                              // ? increasing
992   AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable")         // IRQ Enable
993   AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w)                     // To Sound CPU
994   AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
995   AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_SHARE("screenctrl")         // Screen Control
996   AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)         // IRQ Cause / IRQ Acknowledge
997   AM_RANGE(0x879700, 0x879713) AM_WRITEONLY AM_SHARE("videoregs")         // Video Registers
998   AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w)         // To Sound CPU
999   AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1")
1000   AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0")
1001   AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN2")
1002   AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w)               // Coin Lockout
997   AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
998   AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w)                  // To Sound CPU
999   AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
1000   AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_SHARE("screenctrl")            // Screen Control
1001   AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)   // IRQ Cause / IRQ Acknowledge
1002   AM_RANGE(0x879700, 0x879713) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
1003   AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w)   // To Sound CPU
1004   AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1")                        //
1005   AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0")                        //
1006   AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN2")                        //
1007   AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w)            // Coin Lockout
10031008ADDRESS_MAP_END
10041009
10051010
r19999r20000
10221027WRITE16_MEMBER(metro_state::karatour_vram_2_w){ metro_vram_2_w(space, KARATOUR_OFFS(offset), data, mem_mask); }
10231028
10241029static ADDRESS_MAP_START( karatour_map, AS_PROGRAM, 16, metro_state )
1025   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                 // ROM
1026   AM_RANGE(0xffc000, 0xffffff) AM_RAM                                 // RAM
1027   AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r, metro_soundstatus_w)         // From Sound CPU
1030   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                    // ROM
1031   AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r, metro_soundstatus_w)   // From Sound CPU
10281032   AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN0")                        // Inputs
1029   AM_RANGE(0x400002, 0x400003) AM_WRITE(metro_coin_lockout_1word_w)                  // Coin Lockout
1033   AM_RANGE(0x400002, 0x400003) AM_WRITE(metro_coin_lockout_1word_w)            // Coin Lockout
10301034   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN1")                        //
10311035   AM_RANGE(0x400006, 0x400007) AM_READ_PORT("DSW0")                        //
10321036   AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW1")                        //
10331037   AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("IN2")                        //
10341038   AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
1035   AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1036   AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram")   // Sprites
1037   AM_RANGE(0x875000, 0x875fff) AM_READWRITE(karatour_vram_0_r, karatour_vram_0_w)         // Layer 0 (Part of)
1038   AM_RANGE(0x876000, 0x876fff) AM_READWRITE(karatour_vram_1_r, karatour_vram_1_w)         // Layer 1 (Part of)
1039   AM_RANGE(0x877000, 0x877fff) AM_READWRITE(karatour_vram_2_r, karatour_vram_2_w)         // Layer 2 (Part of)
1040   AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
1041   AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_SHARE("videoregs")         // Video Registers
1039   AM_RANGE(0x870000, 0x871fff) AM_RAM                                    // ???
1040   AM_RANGE(0x872000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1041   AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
1042   AM_RANGE(0x875000, 0x875fff) AM_READWRITE(karatour_vram_0_r, karatour_vram_0_w)   // Layer 0 (Part of)
1043   AM_RANGE(0x876000, 0x876fff) AM_READWRITE(karatour_vram_1_r, karatour_vram_1_w)   // Layer 1 (Part of)
1044   AM_RANGE(0x877000, 0x877fff) AM_READWRITE(karatour_vram_2_r, karatour_vram_2_w)   // Layer 2 (Part of)
1045   AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
1046   AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
10421047   AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
10431048   AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
1044   AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll
1049   AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll
10451050   AM_RANGE(0x878880, 0x878881) AM_WRITENOP                              // ? increasing
10461051   AM_RANGE(0x878890, 0x878891) AM_WRITENOP                              // ? increasing
1047   AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)         // IRQ Cause / IRQ Acknowledge
1048   AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable")         // IRQ Enable
1049   AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w)                     // To Sound CPU
1050   AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
1051   AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_SHARE("screenctrl")         // Screen Control
1052   AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)   // IRQ Cause / IRQ Acknowledge
1053   AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
1054   AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w)                  // To Sound CPU
1055   AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
1056   AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_SHARE("screenctrl")            // Screen Control
1057   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
10521058ADDRESS_MAP_END
10531059
10541060
r19999r20000
10591065/* same limited tilemap access as karatour */
10601066
10611067static ADDRESS_MAP_START( kokushi_map, AS_PROGRAM, 16, metro_state )
1062   AM_RANGE(0x000000, 0x07ffff) AM_ROM                              // ROM
1063   AM_RANGE(0x7fc000, 0x7fffff) AM_RAM                              // RAM
1064   AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r)                  // Banked ROM
1065   AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1066   AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram")            // Sprites
1067   AM_RANGE(0x875000, 0x875fff) AM_READWRITE(karatour_vram_0_r, karatour_vram_0_w)      // Layer 0 (Part of)
1068   AM_RANGE(0x876000, 0x876fff) AM_READWRITE(karatour_vram_1_r, karatour_vram_1_w)      // Layer 1 (Part of)
1069   AM_RANGE(0x877000, 0x877fff) AM_READWRITE(karatour_vram_2_r, karatour_vram_2_w)      // Layer 2 (Part of)
1070   AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
1068   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                    // ROM
1069   AM_RANGE(0x700000, 0x70ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
1070   AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
1071   AM_RANGE(0x870000, 0x871fff) AM_RAM                                    // ???
1072   AM_RANGE(0x872000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1073   AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
1074   AM_RANGE(0x875000, 0x875fff) AM_READWRITE(karatour_vram_0_r, karatour_vram_0_w)   // Layer 0 (Part of)
1075   AM_RANGE(0x876000, 0x876fff) AM_READWRITE(karatour_vram_1_r, karatour_vram_1_w)   // Layer 1 (Part of)
1076   AM_RANGE(0x877000, 0x877fff) AM_READWRITE(karatour_vram_2_r, karatour_vram_2_w)   // Layer 2 (Part of)
1077   AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
10711078   AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
1072   AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_SHARE("window")   // Tilemap Window
1073   AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll")         // Scroll Regs - WRONG
1074//  AM_RANGE(0x878880, 0x878881) AM_WRITENOP                                                    // ? increasing
1075   AM_RANGE(0x878890, 0x878891) AM_WRITENOP                           // ? increasing
1076   AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)      // IRQ Cause /  IRQ Acknowledge
1077   AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable")      // IRQ Enable
1079   AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
1080   AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll Regs - WRONG
1081//  AM_RANGE(0x878880, 0x878881) AM_WRITENOP                                        // ? increasing
1082   AM_RANGE(0x878890, 0x878891) AM_WRITENOP                              // ? increasing
1083   AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)   // IRQ Cause /  IRQ Acknowledge
1084   AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
10781085   AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w)                  // To Sound CPU
1079   AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank")      // Rom Bank
1080   AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_SHARE("screenctrl")      // Screen Control
1081   AM_RANGE(0x879700, 0x879713) AM_WRITEONLY AM_SHARE("videoregs")      // Video Registers
1082   AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w)      // To Sound CPU
1083   AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1")                     // Inputs
1084   AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0")
1085   AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w   )            // Coin Lockout
1086   AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
1087   AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_SHARE("screenctrl")            // Screen Control
1088   AM_RANGE(0x879700, 0x879713) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
1089   AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w)   // To Sound CPU
1090   AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1")                        // Inputs
1091   AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0")                        //
1092   AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w   )         // Coin Lockout
10861093ADDRESS_MAP_END
10871094
10881095
r19999r20000
10911098***************************************************************************/
10921099
10931100static ADDRESS_MAP_START( lastfort_map, AS_PROGRAM, 16, metro_state )
1094   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                 // ROM
1095   AM_RANGE(0x400000, 0x40ffff) AM_RAM                                 // RAM
1101   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                    // ROM
1102   AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
10961103   AM_RANGE(0x800000, 0x81ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0")   // Layer 0
10971104   AM_RANGE(0x820000, 0x83ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1")   // Layer 1
10981105   AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2")   // Layer 2
10991106   AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
1100   AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1101   AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram")   // Sprites
1102   AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
1103   AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_SHARE("videoregs")         // Video Registers
1107   AM_RANGE(0x870000, 0x871fff) AM_RAM                                    // ???
1108   AM_RANGE(0x872000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1109   AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
1110   AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
1111   AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
11041112   AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
11051113   AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
1106   AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll
1114   AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll
11071115   AM_RANGE(0x878880, 0x878881) AM_WRITENOP                              // ? increasing
11081116   AM_RANGE(0x878890, 0x878891) AM_WRITENOP                              // ? increasing
1109   AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)         // IRQ Cause / IRQ Acknowledge
1110   AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable")         // IRQ Enable
1111   AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w)                     // To Sound CPU
1112   AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
1113   AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_SHARE("screenctrl")         // Screen Control
1114   AM_RANGE(0xc00000, 0xc00001) AM_READWRITE(metro_soundstatus_r, metro_soundstatus_w)         // From / To Sound CPU
1115   AM_RANGE(0xc00002, 0xc00003) AM_WRITE(metro_coin_lockout_1word_w)                  // Coin Lockout
1117   AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)   // IRQ Cause / IRQ Acknowledge
1118   AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
1119   AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w)                  // To Sound CPU
1120   AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
1121   AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_SHARE("screenctrl")            // Screen Control
1122   AM_RANGE(0xc00000, 0xc00001) AM_READWRITE(metro_soundstatus_r, metro_soundstatus_w)   // From / To Sound CPU
1123   AM_RANGE(0xc00002, 0xc00003) AM_WRITE(metro_coin_lockout_1word_w)            // Coin Lockout
11161124   AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("IN0")                        // Inputs
11171125   AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN1")                        //
11181126   AM_RANGE(0xc00008, 0xc00009) AM_READ_PORT("IN2")                        //
r19999r20000
11251133
11261134/* todo: clean up input reads etc. */
11271135static ADDRESS_MAP_START( lastforg_map, AS_PROGRAM, 16, metro_state )
1128   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                 // ROM
1129   AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r, metro_soundstatus_w)         // From / To Sound CPU
1136   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                    // ROM
1137   AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r, metro_soundstatus_w)   // From / To Sound CPU
11301138   AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN0")                        // Inputs
1131   AM_RANGE(0x400002, 0x400003) AM_WRITE(metro_coin_lockout_1word_w)                  // Coin Lockout
1139   AM_RANGE(0x400002, 0x400003) AM_WRITE(metro_coin_lockout_1word_w)            // Coin Lockout
11321140   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN1")                        //
11331141   AM_RANGE(0x400006, 0x400007) AM_READ_PORT("DSW0")                        //
11341142   AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW1")                        //
r19999r20000
11371145   AM_RANGE(0x8a0000, 0x8bffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1")   // Layer 1
11381146   AM_RANGE(0x8c0000, 0x8dffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2")   // Layer 2
11391147   AM_RANGE(0x8e0000, 0x8effff) AM_READ(metro_bankedrom_r)                     // Banked ROM
1140   AM_RANGE(0x8f0000, 0x8f3fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1141   AM_RANGE(0x8f4000, 0x8f4fff) AM_RAM AM_SHARE("spriteram")   // Sprites
1142   AM_RANGE(0x8f8000, 0x8f87ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
1143   AM_RANGE(0x8f8800, 0x8f8813) AM_WRITEONLY AM_SHARE("videoregs")         // Video Registers
1148   AM_RANGE(0x8f0000, 0x8f1fff) AM_RAM                                    // ???
1149   AM_RANGE(0x8f2000, 0x8f3fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1150   AM_RANGE(0x8f4000, 0x8f4fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
1151   AM_RANGE(0x8f8000, 0x8f87ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
1152   AM_RANGE(0x8f8800, 0x8f8813) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
11441153   AM_RANGE(0x8f8840, 0x8f884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
11451154   AM_RANGE(0x8f8860, 0x8f886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
1146   AM_RANGE(0x8f8870, 0x8f887b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll
1155   AM_RANGE(0x8f8870, 0x8f887b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll
11471156   AM_RANGE(0x8f8880, 0x8f8881) AM_WRITENOP                              // ? increasing
11481157   AM_RANGE(0x8f8890, 0x8f8891) AM_WRITENOP                              // ? increasing
1149   AM_RANGE(0x8f88a2, 0x8f88a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)         // IRQ Cause / IRQ Acknowledge
1150   AM_RANGE(0x8f88a4, 0x8f88a5) AM_WRITEONLY AM_SHARE("irq_enable")         // IRQ Enable
1151   AM_RANGE(0x8f88a8, 0x8f88a9) AM_WRITE(metro_soundlatch_w)                     // To Sound CPU
1152   AM_RANGE(0x8f88aa, 0x8f88ab) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
1153   AM_RANGE(0x8f88ac, 0x8f88ad) AM_WRITEONLY AM_SHARE("screenctrl")         // Screen Control
1154   AM_RANGE(0xc00000, 0xc0ffff) AM_RAM                               // RAM
1158   AM_RANGE(0x8f88a2, 0x8f88a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)   // IRQ Cause / IRQ Acknowledge
1159   AM_RANGE(0x8f88a4, 0x8f88a5) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
1160   AM_RANGE(0x8f88a8, 0x8f88a9) AM_WRITE(metro_soundlatch_w)                  // To Sound CPU
1161   AM_RANGE(0x8f88aa, 0x8f88ab) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
1162   AM_RANGE(0x8f88ac, 0x8f88ad) AM_WRITEONLY AM_SHARE("screenctrl")            // Screen Control
1163   AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
11551164ADDRESS_MAP_END
11561165
11571166
r19999r20000
12271236}
12281237
12291238static ADDRESS_MAP_START( gakusai_map, AS_PROGRAM, 16, metro_state )
1230   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                 // ROM
1231   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                 // RAM
1239   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                    // ROM
12321240   AM_RANGE(0x200000, 0x21ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0")   // Layer 0
12331241   AM_RANGE(0x220000, 0x23ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1")   // Layer 1
12341242   AM_RANGE(0x240000, 0x25ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2")   // Layer 2
12351243   AM_RANGE(0x260000, 0x26ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
1236   AM_RANGE(0x270000, 0x273fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1237   AM_RANGE(0x274000, 0x274fff) AM_RAM AM_SHARE("spriteram")   // Sprites
1238   AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
1239   AM_RANGE(0x27880e, 0x27880f) AM_RAM AM_SHARE("screenctrl")            // Screen Control
1240   AM_RANGE(0x278810, 0x27881f) AM_WRITEONLY AM_SHARE("irq_levels")         // IRQ Levels
1241   AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_SHARE("irq_vectors")         // IRQ Vectors
1242   AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_SHARE("irq_enable")         // IRQ Enable
1243   AM_RANGE(0x278832, 0x278833) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)         // IRQ Cause / IRQ Acknowledge
1244   AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r)                        // Inputs
1244   AM_RANGE(0x270000, 0x271fff) AM_RAM                                    // ???
1245   AM_RANGE(0x272000, 0x273fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1246   AM_RANGE(0x274000, 0x274fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
1247   AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
1248   AM_RANGE(0x27880e, 0x27880f) AM_RAM AM_SHARE("screenctrl")                  // Screen Control
1249   AM_RANGE(0x278810, 0x27881f) AM_WRITEONLY AM_SHARE("irq_levels")            // IRQ Levels
1250   AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_SHARE("irq_vectors")            // IRQ Vectors
1251   AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
1252   AM_RANGE(0x278832, 0x278833) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)   // IRQ Cause / IRQ Acknowledge
1253   AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r)                     // Inputs
12451254   AM_RANGE(0x278882, 0x278883) AM_READ_PORT("IN0")                        //
1246   AM_RANGE(0x278836, 0x278837) AM_WRITE(watchdog_reset16_w)                     // Watchdog
1255   AM_RANGE(0x278836, 0x278837) AM_WRITE(watchdog_reset16_w)                  // Watchdog
12471256   AM_RANGE(0x278840, 0x27884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
12481257   AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
1249   AM_RANGE(0x278850, 0x27885b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll Regs
1250   AM_RANGE(0x278870, 0x278871) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
1251   AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_SHARE("input_sel")         // Inputs
1252   AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_SHARE("videoregs")         // Video Registers
1258   AM_RANGE(0x278850, 0x27885b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll Regs
1259   AM_RANGE(0x278870, 0x278871) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
1260   AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_SHARE("input_sel")               // Inputs
1261   AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
12531262   AM_RANGE(0x400000, 0x400001) AM_WRITENOP                              // ? 5
12541263   AM_RANGE(0x500000, 0x500001) AM_WRITE(gakusai_oki_bank_lo_w)               // Sound
12551264   AM_RANGE(0x600000, 0x600003) AM_DEVWRITE8_LEGACY("ymsnd", ym2413_w, 0x00ff)
1256   AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)         // Sound
1265   AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)   // Sound
12571266   AM_RANGE(0xc00000, 0xc00001) AM_READWRITE(gakusai_eeprom_r, gakusai_eeprom_w)   // EEPROM
12581267   AM_RANGE(0xd00000, 0xd00001) AM_WRITE(gakusai_oki_bank_hi_w)
1268   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
12591269ADDRESS_MAP_END
12601270
12611271
r19999r20000
12641274***************************************************************************/
12651275
12661276static ADDRESS_MAP_START( gakusai2_map, AS_PROGRAM, 16, metro_state )
1267   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                 // ROM
1268   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                 // RAM
1277   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                    // ROM
12691278   AM_RANGE(0x600000, 0x61ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0")   // Layer 0
12701279   AM_RANGE(0x620000, 0x63ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1")   // Layer 1
12711280   AM_RANGE(0x640000, 0x65ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2")   // Layer 2
12721281   AM_RANGE(0x660000, 0x66ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
1273   AM_RANGE(0x670000, 0x673fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1274   AM_RANGE(0x674000, 0x674fff) AM_RAM AM_SHARE("spriteram")   // Sprites
1275   AM_RANGE(0x675000, 0x675fff) AM_RAM                                 // Sprites?
1276   AM_RANGE(0x678000, 0x6787ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
1277   AM_RANGE(0x67880e, 0x67880f) AM_RAM AM_SHARE("screenctrl")            // Screen Control
1278   AM_RANGE(0x678810, 0x67881f) AM_WRITEONLY AM_SHARE("irq_levels")         // IRQ Levels
1279   AM_RANGE(0x678820, 0x67882f) AM_WRITEONLY AM_SHARE("irq_vectors")         // IRQ Vectors
1280   AM_RANGE(0x678830, 0x678831) AM_WRITEONLY AM_SHARE("irq_enable")         // IRQ Enable
1281   AM_RANGE(0x678832, 0x678833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)         // IRQ Cause / IRQ Acknowledge
1282   AM_RANGE(0x678836, 0x678837) AM_WRITE(watchdog_reset16_w)                     // Watchdog
1282   AM_RANGE(0x670000, 0x671fff) AM_RAM                                    // ???
1283   AM_RANGE(0x672000, 0x673fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1284   AM_RANGE(0x674000, 0x674fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
1285   AM_RANGE(0x675000, 0x675fff) AM_RAM                                    // Sprites?
1286   AM_RANGE(0x678000, 0x6787ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
1287   AM_RANGE(0x67880e, 0x67880f) AM_RAM AM_SHARE("screenctrl")                  // Screen Control
1288   AM_RANGE(0x678810, 0x67881f) AM_WRITEONLY AM_SHARE("irq_levels")            // IRQ Levels
1289   AM_RANGE(0x678820, 0x67882f) AM_WRITEONLY AM_SHARE("irq_vectors")            // IRQ Vectors
1290   AM_RANGE(0x678830, 0x678831) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
1291   AM_RANGE(0x678832, 0x678833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)   // IRQ Cause / IRQ Acknowledge
1292   AM_RANGE(0x678836, 0x678837) AM_WRITE(watchdog_reset16_w)                  // Watchdog
12831293   AM_RANGE(0x678840, 0x67884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
12841294   AM_RANGE(0x678860, 0x67886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
1285   AM_RANGE(0x678880, 0x678881) AM_READ(gakusai_input_r)                        // Inputs
1295   AM_RANGE(0x678880, 0x678881) AM_READ(gakusai_input_r)                     // Inputs
12861296   AM_RANGE(0x678882, 0x678883) AM_READ_PORT("IN0")                        //
1287   AM_RANGE(0x678850, 0x67885b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll Regs
1288   AM_RANGE(0x678870, 0x678871) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
1289   AM_RANGE(0x678888, 0x678889) AM_WRITEONLY AM_SHARE("input_sel")         // Inputs
1290   AM_RANGE(0x679700, 0x679713) AM_WRITEONLY AM_SHARE("videoregs")         // Video Registers
1297   AM_RANGE(0x678850, 0x67885b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll Regs
1298   AM_RANGE(0x678870, 0x678871) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
1299   AM_RANGE(0x678888, 0x678889) AM_WRITEONLY AM_SHARE("input_sel")               // Inputs
1300   AM_RANGE(0x679700, 0x679713) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
12911301   AM_RANGE(0x800000, 0x800001) AM_WRITENOP                              // ? 5
12921302   AM_RANGE(0x900000, 0x900001) AM_WRITE(gakusai_oki_bank_lo_w)               // Sound bank
1293   AM_RANGE(0xa00000, 0xa00001) AM_WRITE(gakusai_oki_bank_hi_w)
1294   AM_RANGE(0xb00000, 0xb00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)         // Sound
1303   AM_RANGE(0xa00000, 0xa00001) AM_WRITE(gakusai_oki_bank_hi_w)               //
1304   AM_RANGE(0xb00000, 0xb00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)   // Sound
12951305   AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8_LEGACY("ymsnd", ym2413_w, 0x00ff)
1296   AM_RANGE(0xe00000, 0xe00001) AM_READWRITE(gakusai_eeprom_r,gakusai_eeprom_w)      // EEPROM
1306   AM_RANGE(0xe00000, 0xe00001) AM_READWRITE(gakusai_eeprom_r,gakusai_eeprom_w)   // EEPROM
1307   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
12971308ADDRESS_MAP_END
12981309
12991310
r19999r20000
13391350}
13401351
13411352static ADDRESS_MAP_START( dokyusp_map, AS_PROGRAM, 16, metro_state )
1342   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                 // ROM
1343   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                 // RAM
1353   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                    // ROM
13441354   AM_RANGE(0x200000, 0x21ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0")   // Layer 0
13451355   AM_RANGE(0x220000, 0x23ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1")   // Layer 1
13461356   AM_RANGE(0x240000, 0x25ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2")   // Layer 2
13471357   AM_RANGE(0x260000, 0x26ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
1348   AM_RANGE(0x270000, 0x273fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1349   AM_RANGE(0x274000, 0x274fff) AM_RAM AM_SHARE("spriteram")   // Sprites
1350   AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
1351   AM_RANGE(0x278810, 0x27881f) AM_WRITEONLY AM_SHARE("irq_levels")         // IRQ Levels
1352   AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_SHARE("irq_vectors")         // IRQ Vectors
1353   AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_SHARE("irq_enable")         // IRQ Enable
1354   AM_RANGE(0x278832, 0x278833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)         // IRQ Cause / IRQ Acknowledge
1355   AM_RANGE(0x278836, 0x278837) AM_WRITE(watchdog_reset16_w)                     // Watchdog
1358   AM_RANGE(0x270000, 0x271fff) AM_RAM                                    // ???
1359   AM_RANGE(0x272000, 0x273fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1360   AM_RANGE(0x274000, 0x274fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
1361   AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
1362   AM_RANGE(0x278810, 0x27881f) AM_WRITEONLY AM_SHARE("irq_levels")            // IRQ Levels
1363   AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_SHARE("irq_vectors")            // IRQ Vectors
1364   AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
1365   AM_RANGE(0x278832, 0x278833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)   // IRQ Cause / IRQ Acknowledge
1366   AM_RANGE(0x278836, 0x278837) AM_WRITE(watchdog_reset16_w)                  // Watchdog
13561367   AM_RANGE(0x278840, 0x27884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
13571368   AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
1358   AM_RANGE(0x278850, 0x27885b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll Regs
1359   AM_RANGE(0x278870, 0x278871) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
1360   AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r)                        // Inputs
1369   AM_RANGE(0x278850, 0x27885b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll Regs
1370   AM_RANGE(0x278870, 0x278871) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
1371   AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r)                     // Inputs
13611372   AM_RANGE(0x278882, 0x278883) AM_READ_PORT("IN0")                        //
1362   AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_SHARE("input_sel")         // Inputs
1363   AM_RANGE(0x27880e, 0x27880f) AM_RAM AM_SHARE("screenctrl")            // Screen Control
1364   AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_SHARE("videoregs")         // Video Registers
1373   AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_SHARE("input_sel")               //
1374   AM_RANGE(0x27880e, 0x27880f) AM_RAM AM_SHARE("screenctrl")                  // Screen Control
1375   AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
13651376   AM_RANGE(0x400000, 0x400001) AM_WRITENOP                              // ? 5
13661377   AM_RANGE(0x500000, 0x500001) AM_WRITE(gakusai_oki_bank_lo_w)               // Sound
13671378   AM_RANGE(0x600000, 0x600003) AM_DEVWRITE8_LEGACY("ymsnd", ym2413_w, 0x00ff)
1368   AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)      // Sound
1369   AM_RANGE(0xc00000, 0xc00001) AM_WRITE(dokyusp_eeprom_reset_w)            // EEPROM
1379   AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)   // Sound
1380   AM_RANGE(0xc00000, 0xc00001) AM_WRITE(dokyusp_eeprom_reset_w)                  // EEPROM
13701381   AM_RANGE(0xd00000, 0xd00001) AM_READWRITE(dokyusp_eeprom_r, dokyusp_eeprom_bit_w)   // EEPROM
1382   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
13711383ADDRESS_MAP_END
13721384
13731385
r19999r20000
13761388***************************************************************************/
13771389
13781390static ADDRESS_MAP_START( dokyusei_map, AS_PROGRAM, 16, metro_state )
1379   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                 // ROM
1380   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                 // RAM
1391   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                    // ROM
13811392   AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0")   // Layer 0
13821393   AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1")   // Layer 1
13831394   AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2")   // Layer 2
13841395   AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
13851396   AM_RANGE(0x460000, 0x46ffff) AM_WRITENOP                              // DSW Selection
1386   AM_RANGE(0x470000, 0x473fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1387   AM_RANGE(0x474000, 0x474fff) AM_RAM AM_SHARE("spriteram")   // Sprites
1388   AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
1389   AM_RANGE(0x47880e, 0x47880f) AM_WRITEONLY AM_SHARE("screenctrl")         // Screen Control
1390   AM_RANGE(0x478810, 0x47881f) AM_WRITEONLY AM_SHARE("irq_levels")         // IRQ Levels
1391   AM_RANGE(0x478820, 0x47882f) AM_WRITEONLY AM_SHARE("irq_vectors")         // IRQ Vectors
1392   AM_RANGE(0x478830, 0x478831) AM_WRITEONLY AM_SHARE("irq_enable")         // IRQ Enable
1393//  AM_RANGE(0x478832, 0x478833) AM_READ(metro_irq_cause_r)                                      // IRQ Cause
1394   AM_RANGE(0x478832, 0x478833) AM_WRITE(metro_irq_cause_w)                     // IRQ Acknowledge
1397   AM_RANGE(0x470000, 0x471fff) AM_RAM                                    // ???
1398   AM_RANGE(0x472000, 0x473fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1399   AM_RANGE(0x474000, 0x474fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
1400   AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
1401   AM_RANGE(0x47880e, 0x47880f) AM_WRITEONLY AM_SHARE("screenctrl")            // Screen Control
1402   AM_RANGE(0x478810, 0x47881f) AM_WRITEONLY AM_SHARE("irq_levels")            // IRQ Levels
1403   AM_RANGE(0x478820, 0x47882f) AM_WRITEONLY AM_SHARE("irq_vectors")            // IRQ Vectors
1404   AM_RANGE(0x478830, 0x478831) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
1405//  AM_RANGE(0x478832, 0x478833) AM_READ(metro_irq_cause_r)                     // IRQ Cause
1406   AM_RANGE(0x478832, 0x478833) AM_WRITE(metro_irq_cause_w)                  // IRQ Acknowledge
13951407   AM_RANGE(0x478836, 0x478837) AM_WRITENOP                              // ? watchdog ?
13961408   AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
1397   AM_RANGE(0x478850, 0x47885b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll Regs
1409   AM_RANGE(0x478850, 0x47885b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll Regs
13981410   AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
1399   AM_RANGE(0x478870, 0x478871) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
1400   AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_SHARE("videoregs")         // Video Registers
1401   AM_RANGE(0x478888, 0x478889) AM_WRITEONLY AM_SHARE("input_sel")         // Inputs
1402   AM_RANGE(0x478880, 0x478881) AM_READ(gakusai_input_r)                        // Inputs
1411   AM_RANGE(0x478870, 0x478871) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
1412   AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
1413   AM_RANGE(0x478888, 0x478889) AM_WRITEONLY AM_SHARE("input_sel")               // Inputs
1414   AM_RANGE(0x478880, 0x478881) AM_READ(gakusai_input_r)                     // Inputs
14031415   AM_RANGE(0x478882, 0x478883) AM_READ_PORT("IN0")                        //
14041416   AM_RANGE(0x478884, 0x478885) AM_READ_PORT("DSW0")                        // 2 x DSW
14051417   AM_RANGE(0x478886, 0x478887) AM_READ_PORT("DSW1")                        //
14061418   AM_RANGE(0x800000, 0x800001) AM_WRITE(gakusai_oki_bank_hi_w)               // Samples Bank?
14071419   AM_RANGE(0x900000, 0x900001) AM_WRITENOP                              // ? 4
14081420   AM_RANGE(0xa00000, 0xa00001) AM_WRITE(gakusai_oki_bank_lo_w)               // Samples Bank
1409   AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8_LEGACY("ymsnd", ym2413_w, 0x00ff)               //
1410   AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)      // Sound
1421   AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8_LEGACY("ymsnd", ym2413_w, 0x00ff)      //
1422   AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)   // Sound
1423   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
14111424ADDRESS_MAP_END
14121425
14131426
r19999r20000
14161429***************************************************************************/
14171430
14181431static ADDRESS_MAP_START( pangpoms_map, AS_PROGRAM, 16, metro_state )
1419   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                 // ROM
1420   AM_RANGE(0xc00000, 0xc0ffff) AM_RAM                                 // RAM
1432   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                    // ROM
14211433   AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0")   // Layer 0
14221434   AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1")   // Layer 1
14231435   AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2")   // Layer 2
14241436   AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
1425   AM_RANGE(0x470000, 0x473fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1426   AM_RANGE(0x474000, 0x474fff) AM_RAM AM_SHARE("spriteram")   // Sprites
1427   AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
1428   AM_RANGE(0x478800, 0x478813) AM_RAM AM_SHARE("videoregs")            // Video Registers
1437   AM_RANGE(0x470000, 0x471fff) AM_RAM                                    // ???
1438   AM_RANGE(0x472000, 0x473fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1439   AM_RANGE(0x474000, 0x474fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
1440   AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
1441   AM_RANGE(0x478800, 0x478813) AM_RAM AM_SHARE("videoregs")                  // Video Registers
14291442   AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
14301443   AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
1431   AM_RANGE(0x478870, 0x47887b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll Regs
1444   AM_RANGE(0x478870, 0x47887b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll Regs
14321445   AM_RANGE(0x478880, 0x478881) AM_WRITENOP                              // ? increasing
14331446   AM_RANGE(0x478890, 0x478891) AM_WRITENOP                              // ? increasing
1434   AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)         // IRQ Cause / IRQ Acknowledge
1435   AM_RANGE(0x4788a4, 0x4788a5) AM_WRITEONLY AM_SHARE("irq_enable")         // IRQ Enable
1436   AM_RANGE(0x4788a8, 0x4788a9) AM_WRITE(metro_soundlatch_w)                     // To Sound CPU
1437   AM_RANGE(0x4788aa, 0x4788ab) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
1438   AM_RANGE(0x4788ac, 0x4788ad) AM_WRITEONLY AM_SHARE("screenctrl")         // Screen Control
1439   AM_RANGE(0x800000, 0x800001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w)         // From / To Sound CPU
1440   AM_RANGE(0x800002, 0x800003) AM_READNOP   AM_WRITE(metro_coin_lockout_1word_w)         // Coin Lockout
1447   AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)   // IRQ Cause / IRQ Acknowledge
1448   AM_RANGE(0x4788a4, 0x4788a5) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
1449   AM_RANGE(0x4788a8, 0x4788a9) AM_WRITE(metro_soundlatch_w)                  // To Sound CPU
1450   AM_RANGE(0x4788aa, 0x4788ab) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
1451   AM_RANGE(0x4788ac, 0x4788ad) AM_WRITEONLY AM_SHARE("screenctrl")            // Screen Control
1452   AM_RANGE(0x800000, 0x800001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w)   // From / To Sound CPU
1453   AM_RANGE(0x800002, 0x800003) AM_READNOP   AM_WRITE(metro_coin_lockout_1word_w)   // Coin Lockout
14411454   AM_RANGE(0x800004, 0x800005) AM_READ_PORT("IN0")                        // Inputs
14421455   AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN1")                        //
14431456   AM_RANGE(0x800008, 0x800009) AM_READ_PORT("IN2")                        //
14441457   AM_RANGE(0x80000a, 0x80000b) AM_READ_PORT("DSW0")                        //
14451458   AM_RANGE(0x80000c, 0x80000d) AM_READ_PORT("DSW1")                        //
14461459   AM_RANGE(0x80000e, 0x80000f) AM_READ_PORT("IN3")                        //
1460   AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
14471461ADDRESS_MAP_END
14481462
14491463
r19999r20000
14521466***************************************************************************/
14531467
14541468static ADDRESS_MAP_START( poitto_map, AS_PROGRAM, 16, metro_state )
1455   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                 // ROM
1456   AM_RANGE(0x400000, 0x40ffff) AM_RAM                                 // RAM
1469   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                    // ROM
1470   AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
1471   AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w)   // To Sound CPU
1472   AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1")                        //
1473   AM_RANGE(0x800004, 0x800005) AM_READ_PORT("DSW0")                        //
1474   AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN2")                        //
1475   AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w)            // Coin Lockout
14571476   AM_RANGE(0xc00000, 0xc1ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0")   // Layer 0
14581477   AM_RANGE(0xc20000, 0xc3ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1")   // Layer 1
14591478   AM_RANGE(0xc40000, 0xc5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2")   // Layer 2
14601479   AM_RANGE(0xc60000, 0xc6ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
1461   AM_RANGE(0xc70000, 0xc73fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1462   AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_SHARE("spriteram")   // Sprites
1463   AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
1464   AM_RANGE(0xc78800, 0xc78813) AM_WRITEONLY AM_SHARE("videoregs")         // Video Registers
1480   AM_RANGE(0xc70000, 0xc71fff) AM_RAM                                    // ???
1481   AM_RANGE(0xc72000, 0xc73fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1482   AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
1483   AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
1484   AM_RANGE(0xc78800, 0xc78813) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
14651485   AM_RANGE(0xc78840, 0xc7884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
14661486   AM_RANGE(0xc78860, 0xc7886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
1467   AM_RANGE(0xc78870, 0xc7887b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll Regs
1487   AM_RANGE(0xc78870, 0xc7887b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll Regs
14681488   AM_RANGE(0xc78880, 0xc78881) AM_WRITENOP                              // ? increasing
14691489   AM_RANGE(0xc78890, 0xc78891) AM_WRITENOP                              // ? increasing
1470   AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)         // IRQ Cause / IRQ Acknowledge
1471   AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_SHARE("irq_enable")         // IRQ Enable
1472   AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w)                     // To Sound CPU
1473   AM_RANGE(0xc788aa, 0xc788ab) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
1474   AM_RANGE(0xc788ac, 0xc788ad) AM_WRITEONLY AM_SHARE("screenctrl")         // Screen Control
1475   AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w)         // To Sound CPU
1476   AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1")
1477   AM_RANGE(0x800004, 0x800005) AM_READ_PORT("DSW0")
1478   AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN2")
1479   AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w)               // Coin Lockout
1490   AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)   // IRQ Cause / IRQ Acknowledge
1491   AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
1492   AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w)                  // To Sound CPU
1493   AM_RANGE(0xc788aa, 0xc788ab) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
1494   AM_RANGE(0xc788ac, 0xc788ad) AM_WRITEONLY AM_SHARE("screenctrl")            // Screen Control
14801495ADDRESS_MAP_END
14811496
14821497
r19999r20000
14851500***************************************************************************/
14861501
14871502static ADDRESS_MAP_START( skyalert_map, AS_PROGRAM, 16, metro_state )
1488   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                 // ROM
1489   AM_RANGE(0xc00000, 0xc0ffff) AM_RAM                                 // RAM
1503   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                    // ROM
1504   AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w)   // From / To Sound CPU
1505   AM_RANGE(0x400002, 0x400003) AM_READNOP   AM_WRITE(metro_coin_lockout_1word_w)   // Coin Lockout
1506   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN0")                        // Inputs
1507   AM_RANGE(0x400006, 0x400007) AM_READ_PORT("IN1")                        //
1508   AM_RANGE(0x400008, 0x400009) AM_READ_PORT("IN2")                        //
1509   AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW0")                        //
1510   AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("DSW1")                        //
1511   AM_RANGE(0x40000e, 0x40000f) AM_READ_PORT("IN3")                        //
14901512   AM_RANGE(0x800000, 0x81ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0")   // Layer 0
14911513   AM_RANGE(0x820000, 0x83ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1")   // Layer 1
14921514   AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2")   // Layer 2
14931515   AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
1494   AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1495   AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram")   // Sprites
1496   AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
1497   AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_SHARE("videoregs")         // Video Registers
1516   AM_RANGE(0x870000, 0x871fff) AM_RAM                                    // ???
1517   AM_RANGE(0x872000, 0x873fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1518   AM_RANGE(0x874000, 0x874fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
1519   AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
1520   AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
14981521   AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
14991522   AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
1500   AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll
1523   AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll
15011524   AM_RANGE(0x878880, 0x878881) AM_WRITENOP                              // ? increasing
15021525   AM_RANGE(0x878890, 0x878891) AM_WRITENOP                              // ? increasing
1503   AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)         // IRQ Cause / IRQ Acknowledge
1504   AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable")         // IRQ Enable
1505   AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w)                     // To Sound CPU
1506   AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
1507   AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_SHARE("screenctrl")         // Screen Control
1508   AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w)         // From / To Sound CPU
1509   AM_RANGE(0x400002, 0x400003) AM_READNOP   AM_WRITE(metro_coin_lockout_1word_w)         // Coin Lockout
1510   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN0")                        // Inputs
1511   AM_RANGE(0x400006, 0x400007) AM_READ_PORT("IN1")                        //
1512   AM_RANGE(0x400008, 0x400009) AM_READ_PORT("IN2")                        //
1513   AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW0")                        //
1514   AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("DSW1")                        //
1515   AM_RANGE(0x40000e, 0x40000f) AM_READ_PORT("IN3")                        //
1526   AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)   // IRQ Cause / IRQ Acknowledge
1527   AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
1528   AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w)                  // To Sound CPU
1529   AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
1530   AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_SHARE("screenctrl")            // Screen Control
1531   AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
15161532ADDRESS_MAP_END
15171533
15181534
r19999r20000
15211537***************************************************************************/
15221538
15231539static ADDRESS_MAP_START( pururun_map, AS_PROGRAM, 16, metro_state )
1524   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                 // ROM
1525   AM_RANGE(0x800000, 0x80ffff) AM_RAM                                 // RAM
1540   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                    // ROM
1541   AM_RANGE(0x400000, 0x400001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w)   // To Sound CPU
1542   AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN1")                        //
1543   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("DSW0")                        //
1544   AM_RANGE(0x400006, 0x400007) AM_READ_PORT("IN2")                        //
1545   AM_RANGE(0x400002, 0x400009) AM_WRITE(metro_coin_lockout_4words_w)            // Coin Lockout
1546   AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
15261547   AM_RANGE(0xc00000, 0xc1ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0")   // Layer 0
15271548   AM_RANGE(0xc20000, 0xc3ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1")   // Layer 1
15281549   AM_RANGE(0xc40000, 0xc5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2")   // Layer 2
15291550   AM_RANGE(0xc60000, 0xc6ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
1530   AM_RANGE(0xc70000, 0xc73fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1531   AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_SHARE("spriteram")   // Sprites
1532   AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
1551   AM_RANGE(0xc70000, 0xc71fff) AM_RAM                                    // ???
1552   AM_RANGE(0xc72000, 0xc73fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1553   AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
1554   AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
15331555   AM_RANGE(0xc78840, 0xc7884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
15341556   AM_RANGE(0xc78860, 0xc7886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
1535   AM_RANGE(0xc78870, 0xc7887b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll Regs
1557   AM_RANGE(0xc78870, 0xc7887b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll Regs
15361558   AM_RANGE(0xc78880, 0xc78881) AM_WRITENOP                              // ? increasing
15371559   AM_RANGE(0xc78890, 0xc78891) AM_WRITENOP                              // ? increasing
1538   AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)         // IRQ Cause / IRQ Acknowledge
1539   AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_SHARE("irq_enable")         // IRQ Enable
1540   AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w)                     // To Sound CPU
1541   AM_RANGE(0xc788aa, 0xc788ab) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
1542   AM_RANGE(0xc788ac, 0xc788ad) AM_WRITEONLY AM_SHARE("screenctrl")         // Screen Control
1543   AM_RANGE(0xc79700, 0xc79713) AM_WRITEONLY AM_SHARE("videoregs")         // Video Registers
1544   AM_RANGE(0x400000, 0x400001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w)         // To Sound CPU
1545   AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN1")
1546   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("DSW0")
1547   AM_RANGE(0x400006, 0x400007) AM_READ_PORT("IN2")
1548   AM_RANGE(0x400002, 0x400009) AM_WRITE(metro_coin_lockout_4words_w)               // Coin Lockout
1560   AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)   // IRQ Cause / IRQ Acknowledge
1561   AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
1562   AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w)                  // To Sound CPU
1563   AM_RANGE(0xc788aa, 0xc788ab) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
1564   AM_RANGE(0xc788ac, 0xc788ad) AM_WRITEONLY AM_SHARE("screenctrl")            // Screen Control
1565   AM_RANGE(0xc79700, 0xc79713) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
15491566ADDRESS_MAP_END
15501567
15511568
r19999r20000
15541571***************************************************************************/
15551572
15561573static ADDRESS_MAP_START( toride2g_map, AS_PROGRAM, 16, metro_state )
1557   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                 // ROM
1558   AM_RANGE(0x400000, 0x4cffff) AM_RAM                                 // RAM (4xc000-4xffff mirrored?)
1574   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                    // ROM
1575   AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
1576   AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w)   // Watchdog (R)? / To Sound CPU (W)
1577   AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1")                        //
1578   AM_RANGE(0x800004, 0x800005) AM_READ_PORT("DSW0")                        //
1579   AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN2")                        //
1580   AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w)            // Coin Lockout
15591581   AM_RANGE(0xc00000, 0xc1ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0")   // Layer 0
15601582   AM_RANGE(0xc20000, 0xc3ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1")   // Layer 1
15611583   AM_RANGE(0xc40000, 0xc5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2")   // Layer 2
15621584   AM_RANGE(0xc60000, 0xc6ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
1563   AM_RANGE(0xc70000, 0xc73fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1564   AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_SHARE("spriteram")   // Sprites
1565   AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
1585   AM_RANGE(0xc70000, 0xc71fff) AM_RAM                                    // ???
1586   AM_RANGE(0xc72000, 0xc73fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1587   AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
1588   AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
15661589   AM_RANGE(0xc78840, 0xc7884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
15671590   AM_RANGE(0xc78860, 0xc7886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
1568   AM_RANGE(0xc78870, 0xc7887b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll Regs
1591   AM_RANGE(0xc78870, 0xc7887b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll Regs
15691592   AM_RANGE(0xc78880, 0xc78881) AM_WRITENOP                              // ? increasing
15701593   AM_RANGE(0xc78890, 0xc78891) AM_WRITENOP                              // ? increasing
1571   AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)         // IRQ Cause / IRQ Acknowledge
1572   AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_SHARE("irq_enable")         // IRQ Enable
1573   AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w)                     // To Sound CPU
1574   AM_RANGE(0xc788aa, 0xc788ab) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
1575   AM_RANGE(0xc788ac, 0xc788ad) AM_WRITEONLY AM_SHARE("screenctrl")         // Screen Control
1576   AM_RANGE(0xc79700, 0xc79713) AM_WRITEONLY AM_SHARE("videoregs")         // Video Registers
1577
1578   AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w)         // To Sound CPU
1579   AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1")
1580   AM_RANGE(0x800004, 0x800005) AM_READ_PORT("DSW0")
1581   AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN2")
1582   AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w)               // Coin Lockout
1583
1594   AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r, metro_irq_cause_w)   // IRQ Cause / IRQ Acknowledge
1595   AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
1596   AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w)                  // To Sound CPU
1597   AM_RANGE(0xc788aa, 0xc788ab) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
1598   AM_RANGE(0xc788ac, 0xc788ad) AM_WRITEONLY AM_SHARE("screenctrl")            // Screen Control
1599   AM_RANGE(0xc79700, 0xc79713) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
15841600ADDRESS_MAP_END
15851601
15861602
r19999r20000
15901606
15911607WRITE16_MEMBER(metro_state::blzntrnd_sound_w)
15921608{
1593
15941609   soundlatch_byte_w(space, offset, data >> 8);
15951610   m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
15961611}
r19999r20000
16291644ADDRESS_MAP_END
16301645
16311646static ADDRESS_MAP_START( blzntrnd_map, AS_PROGRAM, 16, metro_state )
1632   AM_RANGE(0x000000, 0x1fffff) AM_ROM                                 // ROM
1633   AM_RANGE(0xff0000, 0xffffff) AM_RAM                               // RAM
1634//  AM_RANGE(0x300000, 0x300001) AM_READNOP                                             // Sound
1647   AM_RANGE(0x000000, 0x1fffff) AM_ROM                                    // ROM
16351648   AM_RANGE(0x200000, 0x21ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0")   // Layer 0
16361649   AM_RANGE(0x220000, 0x23ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1")   // Layer 1
16371650   AM_RANGE(0x240000, 0x25ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2")   // Layer 2
16381651   AM_RANGE(0x260000, 0x26ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
16391652   AM_RANGE(0x260000, 0x26ffff) AM_WRITENOP                              // ??????
1640   AM_RANGE(0x270000, 0x273fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1641   AM_RANGE(0x274000, 0x274fff) AM_RAM AM_SHARE("spriteram")   // Sprites
1642   AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
1653   AM_RANGE(0x270000, 0x271fff) AM_RAM                                    // ???
1654   AM_RANGE(0x272000, 0x273fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1655   AM_RANGE(0x274000, 0x274fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
1656   AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
16431657   AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
1644   AM_RANGE(0x278870, 0x27887b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll
1658   AM_RANGE(0x278870, 0x27887b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll
16451659   AM_RANGE(0x278890, 0x278891) AM_WRITENOP                              // ? increasing
1646   AM_RANGE(0x2788a2, 0x2788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)         // IRQ Cause / IRQ Acknowledge
1647   AM_RANGE(0x2788a4, 0x2788a5) AM_WRITEONLY AM_SHARE("irq_enable")         // IRQ Enable
1648   AM_RANGE(0x2788aa, 0x2788ab) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
1649   AM_RANGE(0x2788ac, 0x2788ad) AM_WRITEONLY AM_SHARE("screenctrl")         // Screen Control
1650   AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_SHARE("videoregs")         // Video Registers
1660   AM_RANGE(0x2788a2, 0x2788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)   // IRQ Cause / IRQ Acknowledge
1661   AM_RANGE(0x2788a4, 0x2788a5) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
1662   AM_RANGE(0x2788aa, 0x2788ab) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
1663   AM_RANGE(0x2788ac, 0x2788ad) AM_WRITEONLY AM_SHARE("screenctrl")            // Screen Control
1664   AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
1665//  AM_RANGE(0x300000, 0x300001) AM_READNOP                                         // Sound
16511666
16521667   AM_RANGE(0x400000, 0x43ffff) AM_RAM_WRITE(metro_k053936_w) AM_SHARE("k053936_ram")   // 053936
1653   AM_RANGE(0x500000, 0x500fff) AM_DEVWRITE_LEGACY("k053936", k053936_linectrl_w)               // 053936 line control
1654   AM_RANGE(0x600000, 0x60001f) AM_DEVWRITE_LEGACY("k053936", k053936_ctrl_w)               // 053936 control
1668   AM_RANGE(0x500000, 0x500fff) AM_DEVWRITE_LEGACY("k053936", k053936_linectrl_w)      // 053936 line control
1669   AM_RANGE(0x600000, 0x60001f) AM_DEVWRITE_LEGACY("k053936", k053936_ctrl_w)         // 053936 control
16551670
1656   AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("DSW0") AM_WRITENOP                  // Inputs
1657   AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("DSW1") AM_WRITE(blzntrnd_sound_w)            //
1671   AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("DSW0") AM_WRITENOP               // Inputs
1672   AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("DSW1") AM_WRITE(blzntrnd_sound_w)   //
16581673   AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("IN0")                        //
16591674   AM_RANGE(0xe00006, 0xe00007) AM_READ_PORT("IN1")                        //
16601675   AM_RANGE(0xe00008, 0xe00009) AM_READ_PORT("IN2")                        //
1676   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
16611677ADDRESS_MAP_END
16621678
16631679
r19999r20000
16721688}
16731689
16741690static ADDRESS_MAP_START( mouja_map, AS_PROGRAM, 16, metro_state )
1675   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                 // ROM
1676   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM                                 // RAM
1691   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                    // ROM
16771692   AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(metro_vram_0_w) AM_SHARE("vram_0")   // Layer 0
16781693   AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(metro_vram_1_w) AM_SHARE("vram_1")   // Layer 1
16791694   AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_SHARE("vram_2")   // Layer 2
1680   AM_RANGE(0x470000, 0x473fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1681   AM_RANGE(0x474000, 0x474fff) AM_RAM AM_SHARE("spriteram")   // Sprites
1682   AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_SHARE("tiletable")   // Tiles Set
1683   AM_RANGE(0x47880e, 0x47880f) AM_WRITEONLY AM_SHARE("screenctrl")         // Screen Control
1684   AM_RANGE(0x478810, 0x47881f) AM_WRITEONLY AM_SHARE("irq_levels")         // IRQ Levels
1685   AM_RANGE(0x478820, 0x47882f) AM_WRITEONLY AM_SHARE("irq_vectors")         // IRQ Vectors
1686   AM_RANGE(0x478830, 0x478831) AM_WRITEONLY AM_SHARE("irq_enable")         // IRQ Enable
1687   AM_RANGE(0x478832, 0x478833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)         // IRQ Cause / IRQ Acknowledge
1688   AM_RANGE(0x478834, 0x478835) AM_WRITE(mouja_irq_timer_ctrl_w)                  // IRQ set timer count
1689   AM_RANGE(0x478836, 0x478837) AM_WRITE(watchdog_reset16_w)                     // Watchdog
1690   AM_RANGE(0x478850, 0x47885b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll Regs
1695   AM_RANGE(0x470000, 0x471fff) AM_RAM                                    // ???
1696   AM_RANGE(0x472000, 0x473fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1697   AM_RANGE(0x474000, 0x474fff) AM_RAM AM_SHARE("spriteram")                  // Sprites
1698   AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_SHARE("tiletable")                  // Tiles Set
1699   AM_RANGE(0x47880e, 0x47880f) AM_WRITEONLY AM_SHARE("screenctrl")            // Screen Control
1700   AM_RANGE(0x478810, 0x47881f) AM_WRITEONLY AM_SHARE("irq_levels")            // IRQ Levels
1701   AM_RANGE(0x478820, 0x47882f) AM_WRITEONLY AM_SHARE("irq_vectors")            // IRQ Vectors
1702   AM_RANGE(0x478830, 0x478831) AM_WRITEONLY AM_SHARE("irq_enable")            // IRQ Enable
1703   AM_RANGE(0x478832, 0x478833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)   // IRQ Cause / IRQ Acknowledge
1704   AM_RANGE(0x478834, 0x478835) AM_WRITE(mouja_irq_timer_ctrl_w)               // IRQ set timer count
1705   AM_RANGE(0x478836, 0x478837) AM_WRITE(watchdog_reset16_w)                  // Watchdog
1706   AM_RANGE(0x478850, 0x47885b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll Regs
16911707   AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
16921708   AM_RANGE(0x478880, 0x478881) AM_READ_PORT("IN0")                        // Inputs
16931709   AM_RANGE(0x478882, 0x478883) AM_READ_PORT("IN1")                        //
16941710   AM_RANGE(0x478884, 0x478885) AM_READ_PORT("DSW0")                        //
16951711   AM_RANGE(0x478886, 0x478887) AM_READ_PORT("IN2")                        //
16961712   AM_RANGE(0x478888, 0x478889) AM_WRITENOP                              // ??
1697   AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_SHARE("videoregs")         // Video Registers
1713   AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
16981714   AM_RANGE(0x800000, 0x800001) AM_WRITE(mouja_sound_rombank_w)
16991715   AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8_LEGACY("ymsnd", ym2413_w, 0x00ff)
17001716   AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0xffff)
1717   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM AM_MIRROR(0x0f0000)                     // RAM (mirrored)
17011718#if 0
17021719   AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
17031720   AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
1704   AM_RANGE(0x47883a, 0x47883b) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
1705   AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w)               // Coin Lockout
1721   AM_RANGE(0x47883a, 0x47883b) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
1722   AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w)            // Coin Lockout
17061723#endif
17071724ADDRESS_MAP_END
17081725
r19999r20000
17621779
17631780   AM_RANGE(0x760000, 0x76ffff) AM_READ(metro_bankedrom_r)                     // Banked ROM
17641781
1782   AM_RANGE(0x770000, 0x771fff) AM_RAM                                    // ???
17651783//  AM_RANGE(0x772000, 0x773fff) AM_RAM
1766   AM_RANGE(0x770000, 0x773fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
1784   AM_RANGE(0x772000, 0x773fff) AM_RAM_WRITE(paletteram_GGGGGRRRRRBBBBBx_word_w) AM_SHARE("paletteram")   // Palette
17671785
17681786   AM_RANGE(0x775000, 0x775fff) AM_RAM_WRITE(vram_0_clr_w)
17691787   AM_RANGE(0x776000, 0x776fff) AM_RAM_WRITE(vram_1_clr_w)
17701788   AM_RANGE(0x777000, 0x777fff) AM_RAM_WRITE(vram_2_clr_w)
17711789
1772   AM_RANGE(0x778000, 0x7787ff) AM_RAM   AM_SHARE("tiletable")   // Tiles Set
1773   AM_RANGE(0x778800, 0x778813) AM_WRITEONLY AM_SHARE("videoregs")         // Video Registers
1790   AM_RANGE(0x778000, 0x7787ff) AM_RAM   AM_SHARE("tiletable")                  // Tiles Set
1791   AM_RANGE(0x778800, 0x778813) AM_WRITEONLY AM_SHARE("videoregs")               // Video Registers
17741792   AM_RANGE(0x778840, 0x77884f) AM_WRITE(metro_blitter_w) AM_SHARE("blitter_regs")   // Tiles Blitter
17751793   AM_RANGE(0x778860, 0x77886b) AM_WRITE(metro_window_w) AM_SHARE("window")      // Tilemap Window
1776   AM_RANGE(0x778870, 0x77887b) AM_WRITEONLY AM_SHARE("scroll")            // Scroll
1794   AM_RANGE(0x778870, 0x77887b) AM_WRITEONLY AM_SHARE("scroll")               // Scroll
17771795   AM_RANGE(0x778890, 0x778891) AM_WRITENOP                              // ? increasing
17781796   AM_RANGE(0x7788a2, 0x7788a3) AM_WRITE(metro_irq_cause_w)                     // IRQ Cause
17791797   AM_RANGE(0x7788a4, 0x7788a5) AM_WRITE(puzzlet_irq_enable_w) AM_SHARE("irq_enable")   // IRQ Enable
17801798
1781   AM_RANGE(0x7788aa, 0x7788ab) AM_WRITEONLY AM_SHARE("rombank")         // Rom Bank
1782   AM_RANGE(0x7788ac, 0x7788ad) AM_WRITEONLY AM_SHARE("screenctrl")         // Screen Control
1799   AM_RANGE(0x7788aa, 0x7788ab) AM_WRITEONLY AM_SHARE("rombank")               // Rom Bank
1800   AM_RANGE(0x7788ac, 0x7788ad) AM_WRITEONLY AM_SHARE("screenctrl")            // Screen Control
17831801
17841802   AM_RANGE(0x7f2000, 0x7f3fff) AM_RAM
17851803
r19999r20000
25702588   COINS
25712589
25722590   PORT_START("DSW0")   // $400006
2573   PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) )      PORT_DIPLOCATION("SW2:1,2")
2591   PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) )         PORT_DIPLOCATION("SW2:1,2")
25742592   PORT_DIPSETTING(      0x0001, "1" )
25752593   PORT_DIPSETTING(      0x0000, "2" )
25762594   PORT_DIPSETTING(      0x0003, "3" )
r19999r20000
25802598   PORT_DIPSETTING(      0x000c, DEF_STR( Normal ) )
25812599   PORT_DIPSETTING(      0x0004, DEF_STR( Hard ) )
25822600   PORT_DIPSETTING(      0x0000, DEF_STR( Very_Hard ) )
2583   PORT_DIPNAME( 0x0010, 0x0000, "Nudity" )         PORT_DIPLOCATION("SW2:5") /* Manual calls this "Sexy Version" ;-) */
2601   PORT_DIPNAME( 0x0010, 0x0000, "Nudity" )               PORT_DIPLOCATION("SW2:5") // Manual calls this "Sexy Version"
25842602   PORT_DIPSETTING(      0x0010, "Partial" )
25852603   PORT_DIPSETTING(      0x0000, "Full" )
2586   PORT_SERVICE_DIPLOC(  0x0020, IP_ACTIVE_LOW, "SW2:6" )      /* Manual states "Don't Change" */
2604   PORT_DIPNAME( 0x0020, 0x0020, "Service Mode / Free Play" )   PORT_DIPLOCATION("SW2:6")   // Keep Start2 pressed during boot - Manual states "Don't Change"
2605   PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
2606   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
25872607   PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Allow_Continue ) )   PORT_DIPLOCATION("SW2:7")
25882608   PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
25892609   PORT_DIPSETTING(      0x0040, DEF_STR( Yes ) )
r19999r20000
31033123   PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Allow_Continue ) )   PORT_DIPLOCATION("SW2:5")
31043124   PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
31053125   PORT_DIPSETTING(      0x1000, DEF_STR( Yes ) )
3106   PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Free_Play ) )      PORT_DIPLOCATION("SW2:6")
3126   PORT_DIPNAME( 0x2000, 0x2000, "Service Mode / Free Play" )   PORT_DIPLOCATION("SW2:6")   // Keep Start2 pressed during boot
31073127   PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
31083128   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
3109   PORT_DIPNAME( 0xc000, 0xc000, "Helps" )            PORT_DIPLOCATION("SW2:7,8")
3129   PORT_DIPNAME( 0xc000, 0xc000, "Helps" )                  PORT_DIPLOCATION("SW2:7,8")
31103130   PORT_DIPSETTING(      0x0000, "1" )
31113131   PORT_DIPSETTING(      0x4000, "2" )
31123132   PORT_DIPSETTING(      0xc000, "3" )
r19999r20000
33303350};
33313351
33323352static GFXDECODE_START( i4100 )
3333   GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x4,    0x0, 0x200 ) // [0] 4 Bit Tiles
3353   GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x4,    0x0, 0x100 ) // [0] 4 Bit Tiles
33343354GFXDECODE_END
33353355
33363356static GFXDECODE_START( i4220 )
3337   GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x4,    0x0, 0x200 ) // [0] 4 Bit Tiles
3338   GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x8h,   0x0,  0x20 ) // [1] 8 Bit Tiles
3357   GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x4,    0x0, 0x100 ) // [0] 4 Bit Tiles
3358   GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x8h,   0x0,  0x10 ) // [1] 8 Bit Tiles
33393359GFXDECODE_END
33403360
33413361static GFXDECODE_START( blzntrnd )
3342   GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x4,    0x0, 0x200 ) // [0] 4 Bit Tiles
3343   GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x8h,   0x0,  0x20 ) // [1] 8 Bit Tiles
3344   GFXDECODE_ENTRY( "gfx3", 0, layout_053936,   0x0,  0x20 ) // [2] 053936 Tiles
3362   GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x4,    0x0, 0x100 ) // [0] 4 Bit Tiles
3363   GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x8h,   0x0,  0x10 ) // [1] 8 Bit Tiles
3364   GFXDECODE_ENTRY( "gfx3", 0, layout_053936,   0x0,  0x10 ) // [2] 053936 Tiles
33453365GFXDECODE_END
33463366
33473367static GFXDECODE_START( gstrik2 )
3348   GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x4,    0x0, 0x200 ) // [0] 4 Bit Tiles
3349   GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x8h,   0x0,  0x20 ) // [1] 8 Bit Tiles
3350   GFXDECODE_ENTRY( "gfx3", 0, layout_053936_16,0x0,  0x20 ) // [2] 053936 Tiles
3368   GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x4,    0x0, 0x100 ) // [0] 4 Bit Tiles
3369   GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x8h,   0x0,  0x10 ) // [1] 8 Bit Tiles
3370   GFXDECODE_ENTRY( "gfx3", 0, layout_053936_16,0x0,  0x10 ) // [2] 053936 Tiles
33513371GFXDECODE_END
33523372
33533373static GFXDECODE_START( i4300 )
3354   GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x4,    0x0, 0x200 ) // [0] 4 Bit Tiles
3355   GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x8h,   0x0,  0x20 ) // [1] 8 Bit Tiles
3356   GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x4q, 0x0, 0x200 ) // [2] 4 Bit Tiles 16x16
3357   GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x8o, 0x0, 0x200 ) // [2] 8 Bit Tiles 16x16
3374   GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x4,    0x0, 0x100 ) // [0] 4 Bit Tiles
3375   GFXDECODE_ENTRY( "gfx1", 0, layout_8x8x8h,   0x0,  0x10 ) // [1] 8 Bit Tiles
3376   GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x4q, 0x0, 0x100 ) // [2] 4 Bit Tiles 16x16
3377   GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x8o, 0x0, 0x100 ) // [2] 8 Bit Tiles 16x16
33583378GFXDECODE_END
33593379
33603380
r19999r20000
33683388
33693389MACHINE_START_MEMBER(metro_state,metro)
33703390{
3371
33723391   save_item(NAME(m_blitter_bit));
33733392   save_item(NAME(m_irq_line));
33743393   save_item(NAME(m_requested_int));
r19999r20000
33863405
33873406MACHINE_RESET_MEMBER(metro_state,metro)
33883407{
3389
33903408   if (m_irq_line == -1)
33913409      machine().device("maincpu")->execute().set_irq_acknowledge_callback(metro_irq_callback);
33923410}
r19999r20000
34183436   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
34193437
34203438   MCFG_GFXDECODE(i4220)
3421   MCFG_PALETTE_LENGTH(8192)
3439   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_offset)
3440   MCFG_PALETTE_LENGTH(0x1000)
34223441
3423   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220)
3424
34253442   /* sound hardware */
34263443   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
34273444
r19999r20000
34523469   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
34533470
34543471   MCFG_GFXDECODE(i4220)
3455   MCFG_PALETTE_LENGTH(8192)
3472   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_offset)
3473   MCFG_PALETTE_LENGTH(0x1000)
34563474
3457   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220)
3458
34593475   /* sound hardware */
34603476   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
34613477
r19999r20000
34863502   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
34873503
34883504   MCFG_GFXDECODE(i4220)
3489   MCFG_PALETTE_LENGTH(8192)
3505   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_offset)
3506   MCFG_PALETTE_LENGTH(0x1000)
34903507
3491   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220)
3492
34933508   /* sound hardware */
34943509   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
34953510
r19999r20000
35203535   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
35213536
35223537   MCFG_GFXDECODE(i4220)
3523   MCFG_PALETTE_LENGTH(8192)
3538   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_offset)
3539   MCFG_PALETTE_LENGTH(0x1000)
35243540
3525   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220)
3526
35273541   /* sound hardware */
35283542   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
35293543
r19999r20000
35543568   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
35553569
35563570   MCFG_GFXDECODE(i4220)
3557   MCFG_PALETTE_LENGTH(8192)
3571   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_offset)
3572   MCFG_PALETTE_LENGTH(0x1000)
35583573
3559   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220)
3560
35613574   /* sound hardware */
35623575   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
35633576
r19999r20000
35923605   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
35933606
35943607   MCFG_GFXDECODE(i4220)
3595   MCFG_PALETTE_LENGTH(8192)
3608   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220_offset)
3609   MCFG_PALETTE_LENGTH(0x1000)
35963610
3597   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220)
3598
35993611   /* sound hardware */
36003612   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
36013613
r19999r20000
36343646   MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
36353647   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
36363648
3637   MCFG_GFXDECODE(i4100)
3638   MCFG_PALETTE_LENGTH(8192)
3649   MCFG_GFXDECODE(i4220)
3650   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220)
3651   MCFG_PALETTE_LENGTH(0x1000)
36393652
3640   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100)
3641
36423653   /* sound hardware */
36433654   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
36443655
r19999r20000
36773688   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
36783689
36793690   MCFG_GFXDECODE(i4100)
3680   MCFG_PALETTE_LENGTH(8192)
3681
36823691   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100)
3692   MCFG_PALETTE_LENGTH(0x1000)
36833693
36843694   /* sound hardware */
36853695   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
r19999r20000
37193729   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
37203730
37213731   MCFG_GFXDECODE(i4220)
3722   MCFG_PALETTE_LENGTH(8192)
3723
37243732   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220)
3733   MCFG_PALETTE_LENGTH(0x1000)
37253734
37263735   /* sound hardware */
37273736   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
r19999r20000
37613770   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
37623771
37633772   MCFG_GFXDECODE(i4100)
3764   MCFG_PALETTE_LENGTH(8192)
3765
37663773   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100)
3774   MCFG_PALETTE_LENGTH(0x1000)
37673775
37683776   /* sound hardware */
37693777   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
r19999r20000
38023810   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
38033811
38043812   MCFG_GFXDECODE(i4100)
3805   MCFG_PALETTE_LENGTH(8192)
3806
38073813   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100)
3814   MCFG_PALETTE_LENGTH(0x1000)
38083815
38093816   /* sound hardware */
38103817   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
r19999r20000
38373844   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
38383845
38393846   MCFG_GFXDECODE(i4300)
3840   MCFG_PALETTE_LENGTH(8192)
3841
38423847   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4300)
3848   MCFG_PALETTE_LENGTH(0x1000)
38433849
38443850   /* sound hardware */
38453851   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
r19999r20000
38733879   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
38743880
38753881   MCFG_GFXDECODE(i4300)
3876   MCFG_PALETTE_LENGTH(8192)
3877
38783882   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4300)
3883   MCFG_PALETTE_LENGTH(0x1000)
38793884
38803885   /* sound hardware */
38813886   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
r19999r20000
39103915   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
39113916
39123917   MCFG_GFXDECODE(i4300)
3913   MCFG_PALETTE_LENGTH(8192)
3914
39153918   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4300)
3919   MCFG_PALETTE_LENGTH(0x1000)
39163920
39173921   /* sound hardware */
39183922   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
r19999r20000
39473951   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
39483952
39493953   MCFG_GFXDECODE(i4300)
3950   MCFG_PALETTE_LENGTH(8192)
3951
39523954   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4300)
3955   MCFG_PALETTE_LENGTH(0x1000)
39533956
39543957   /* sound hardware */
39553958   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
r19999r20000
39893992   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
39903993
39913994   MCFG_GFXDECODE(i4100)
3992   MCFG_PALETTE_LENGTH(8192)
3993
39943995   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100)
3996   MCFG_PALETTE_LENGTH(0x1000)
39953997
39963998   /* sound hardware */
39973999   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
r19999r20000
40314033   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
40324034
40334035   MCFG_GFXDECODE(i4100)
4034   MCFG_PALETTE_LENGTH(8192)
4035
40364036   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100)
4037   MCFG_PALETTE_LENGTH(0x1000)
40374038
40384039   /* sound hardware */
40394040   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
r19999r20000
40724073   MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
40734074   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
40744075
4075   MCFG_GFXDECODE(i4100)
4076   MCFG_PALETTE_LENGTH(8192)
4076   MCFG_GFXDECODE(i4220)
4077   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220)
4078   MCFG_PALETTE_LENGTH(0x1000)
40774079
4078   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100)
4079
40804080   /* sound hardware */
40814081   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
40824082
r19999r20000
41164116   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
41174117
41184118   MCFG_GFXDECODE(i4100)
4119   MCFG_PALETTE_LENGTH(8192)
4120
41214119   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100)
4120   MCFG_PALETTE_LENGTH(0x1000)
41224121
41234122   /* sound hardware */
41244123   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
r19999r20000
41574156   MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
41584157   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
41594158
4160   MCFG_GFXDECODE(i4100)
4161   MCFG_PALETTE_LENGTH(8192)
4159   MCFG_GFXDECODE(i4220)
4160   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4220)
4161   MCFG_PALETTE_LENGTH(0x1000)
41624162
4163   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4100)
4164
41654163   /* sound hardware */
41664164   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
41674165
r19999r20000
41944192   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
41954193
41964194   MCFG_GFXDECODE(i4300)
4197   MCFG_PALETTE_LENGTH(8192)
4198
41994195   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4300)
4196   MCFG_PALETTE_LENGTH(0x1000)
42004197
42014198   /* sound hardware */
42024199   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
r19999r20000
42394236   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
42404237
42414238   MCFG_GFXDECODE(blzntrnd)
4242   MCFG_PALETTE_LENGTH(8192)
4243
42444239   MCFG_VIDEO_START_OVERRIDE(metro_state,blzntrnd)
4240   MCFG_PALETTE_LENGTH(0x1000)
42454241
42464242   MCFG_K053936_ADD("k053936", blzntrnd_k053936_intf)
42474243
r19999r20000
42874283   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
42884284
42894285   MCFG_GFXDECODE(gstrik2)
4290   MCFG_PALETTE_LENGTH(8192)
4291
42924286   MCFG_VIDEO_START_OVERRIDE(metro_state,gstrik2)
4287   MCFG_PALETTE_LENGTH(0x1000)
42934288
42944289   MCFG_K053936_ADD("k053936", gstrik2_k053936_intf)
42954290
r19999r20000
43254320   MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_metro)
43264321
43274322   MCFG_GFXDECODE(i4300)
4328   MCFG_PALETTE_LENGTH(8192)
4329
43304323   MCFG_VIDEO_START_OVERRIDE(metro_state,metro_i4300)
4324   MCFG_PALETTE_LENGTH(0x1000)
43314325
43324326   /* sound hardware */
43334327   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
r19999r20000
51965190
51975191/***************************************************************************
51985192
5199Mahjong Doukyuhsei (JPN Ver.)
5193Mahjong Doukyuusei (JPN Ver.)
52005194
52015195(c)1995 make software/elf/media trading corp.
52025196
r19999r20000
60236017/* Unscramble the GFX ROMs */
60246018DRIVER_INIT_MEMBER(metro_state,balcube)
60256019{
6026
60276020   const size_t len = memregion("gfx1")->bytes();
60286021   UINT8 *src       = memregion("gfx1")->base();
60296022   UINT8 *end       = src + len;
r19999r20000
61076100GAME( 1992, skyalert,  0,        skyalert, skyalert, metro_state, metro,    ROT270, "Metro",                                  "Sky Alert",                         GAME_SUPPORTS_SAVE )
61086101GAME( 1993, ladykill,  0,        karatour, ladykill, metro_state, karatour, ROT90,  "Yanyaka (Mitchell license)",             "Lady Killer",                       GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
61096102GAME( 1993, moegonta,  ladykill, karatour, moegonta, metro_state, karatour, ROT90,  "Yanyaka",                                "Moeyo Gonta!! (Japan)",             GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
6110GAME( 1993, poitto,    0,        poitto,   poitto, metro_state,  metro,    ROT0,   "Metro / Able Corp.",                     "Poitto!",                           GAME_SUPPORTS_SAVE )
6103GAME( 1993, poitto,    0,        poitto,   poitto,   metro_state, metro,    ROT0,   "Metro / Able Corp.",                     "Poitto!",                           GAME_SUPPORTS_SAVE )
61116104GAME( 1994, blzntrnd,  0,        blzntrnd, blzntrnd, metro_state, blzntrnd, ROT0,   "Human Amusement",                        "Blazing Tornado",                   GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
6112GAME( 1994, dharma,    0,        dharma,   dharma, metro_state,   metro,    ROT0,   "Metro",                                  "Dharma Doujou",                     GAME_SUPPORTS_SAVE )
6113GAME( 1994, dharmak,   dharma,   dharma,   dharma, metro_state,   dharmak,  ROT0,   "Metro",                                  "Dharma Doujou (Korea)",             GAME_SUPPORTS_SAVE )
6105GAME( 1994, dharma,    0,        dharma,   dharma,   metro_state, metro,    ROT0,   "Metro",                                  "Dharma Doujou",                     GAME_SUPPORTS_SAVE )
6106GAME( 1994, dharmak,   dharma,   dharma,   dharma,   metro_state, dharmak,  ROT0,   "Metro",                                  "Dharma Doujou (Korea)",             GAME_SUPPORTS_SAVE )
61146107GAME( 1994, lastfort,  0,        lastfort, lastfort, metro_state, metro,    ROT0,   "Metro",                                  "Last Fortress - Toride",            GAME_SUPPORTS_SAVE )
61156108GAME( 1994, lastforte, lastfort, lastfort, lastfero, metro_state, metro,    ROT0,   "Metro",                                  "Last Fortress - Toride (Erotic, Rev C)", GAME_SUPPORTS_SAVE )
61166109GAME( 1994, lastfortea,lastfort, lastfort, lastfero, metro_state, metro,    ROT0,   "Metro",                                  "Last Fortress - Toride (Erotic, Rev A)", GAME_SUPPORTS_SAVE )
r19999r20000
61206113GAME( 1994, toride2gg, toride2g, toride2g, toride2g, metro_state, metro,    ROT0,   "Metro",                                  "Toride II Adauchi Gaiden (German)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
61216114GAME( 1994, toride2gk, toride2g, toride2g, toride2g, metro_state, metro,    ROT0,   "Metro",                                  "Toride II Bok Su Oi Jeon Adauchi Gaiden (Korea)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
61226115GAME( 1994, toride2j,  toride2g, toride2g, toride2g, metro_state, metro,    ROT0,   "Metro",                                  "Toride II (Japan)",                 GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
6123GAME( 1994, gunmast,   0,        pururun,  gunmast, metro_state, daitorid, ROT0,   "Metro",                                  "Gun Master",                        GAME_SUPPORTS_SAVE )
6116GAME( 1994, gunmast,   0,        pururun,  gunmast, metro_state, daitorid, ROT0,   "Metro",                                  "Gun Master",                        GAME_SUPPORTS_SAVE )
61246117GAME( 1995, daitorid,  0,        daitorid, daitorid, metro_state, daitorid, ROT0,   "Metro",                                  "Daitoride",                         GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
61256118GAME( 1996, daitorida, daitorid, daitoa,   daitorid, metro_state, balcube,  ROT0,   "Metro",                                  "Daitoride (YMF278B version)",       GAME_SUPPORTS_SAVE )
61266119GAME( 1995, dokyusei,  0,        dokyusei, dokyusei, metro_state, gakusai,  ROT0,   "Make Software / Elf / Media Trading",    "Mahjong Doukyuusei",                GAME_SUPPORTS_SAVE )
6127GAME( 1995, dokyusp,   0,        dokyusp,  gakusai, metro_state,  gakusai,  ROT0,   "Make Software / Elf / Media Trading",    "Mahjong Doukyuusei Special",        GAME_SUPPORTS_SAVE )
6128GAME( 1995, msgogo,    0,        msgogo,   msgogo, metro_state,   balcube,  ROT0,   "Metro",                                  "Mouse Shooter GoGo",                GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
6129GAME( 1995, pururun,   0,        pururun,  pururun, metro_state,  daitorid, ROT0,   "Metro / Banpresto",                      "Pururun",                           GAME_SUPPORTS_SAVE )
6130GAME( 1995, puzzli,    0,        daitorid, puzzli, metro_state,   daitorid, ROT0,   "Metro / Banpresto",                      "Puzzli",                            GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
6120GAME( 1995, dokyusp,   0,        dokyusp,  gakusai,  metro_state, gakusai,  ROT0,   "Make Software / Elf / Media Trading",    "Mahjong Doukyuusei Special",        GAME_SUPPORTS_SAVE )
6121GAME( 1995, msgogo,    0,        msgogo,   msgogo,   metro_state, balcube,  ROT0,   "Metro",                                  "Mouse Shooter GoGo",                GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
6122GAME( 1995, pururun,   0,        pururun,  pururun,  metro_state, daitorid, ROT0,   "Metro / Banpresto",                      "Pururun",                           GAME_SUPPORTS_SAVE )
6123GAME( 1995, puzzli,    0,        daitorid, puzzli,   metro_state, daitorid, ROT0,   "Metro / Banpresto",                      "Puzzli",                            GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
61316124GAME( 1996, 3kokushi,  0,        3kokushi, 3kokushi, metro_state, karatour, ROT0,   "Mitchell",                               "Sankokushi (Japan)",                GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
6132GAME( 1996, balcube,   0,        balcube,  balcube, metro_state, balcube,  ROT0,   "Metro",                                  "Bal Cube",                          GAME_SUPPORTS_SAVE )
6125GAME( 1996, balcube,   0,        balcube,  balcube, metro_state, balcube,  ROT0,   "Metro",                                  "Bal Cube",                          GAME_SUPPORTS_SAVE )
61336126GAME( 1996, bangball,  0,        bangball, bangball, metro_state, balcube,  ROT0,   "Banpresto / Kunihiko Tashiro+Goodhouse", "Bang Bang Ball (v1.05)",            GAME_SUPPORTS_SAVE )
6134GAME( 1996, gstrik2,   0,        gstrik2,  gstrik2, metro_state,  blzntrnd, ROT0,   "Human Amusement",                        "Grand Striker 2 (Europe and Oceania)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
6135GAME( 1996, gstrik2j,  gstrik2,  gstrik2,  gstrik2, metro_state,  blzntrnd, ROT0,   "Human Amusement",                        "Grand Striker 2 (Japan)",           GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // priority between rounds
6127GAME( 1996, gstrik2,   0,        gstrik2,  gstrik2,  metro_state, blzntrnd, ROT0,   "Human Amusement",                        "Grand Striker 2 (Europe and Oceania)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
6128GAME( 1996, gstrik2j,  gstrik2,  gstrik2,  gstrik2,  metro_state, blzntrnd, ROT0,   "Human Amusement",                        "Grand Striker 2 (Japan)",           GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // priority between rounds
61366129GAME( 1999, batlbubl,  bangball, batlbubl, batlbubl, metro_state, balcube,  ROT0,   "Banpresto (Limenko license?)",           "Battle Bubble (v2.00)",             GAME_SUPPORTS_SAVE ) // or bootleg?
6137GAME( 1996, mouja,     0,        mouja,    mouja, metro_state,    mouja,    ROT0,   "Etona",                                  "Mouja (Japan)",                     GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
6138GAME( 1997, gakusai,   0,        gakusai,  gakusai, metro_state,  gakusai,  ROT0,   "MakeSoft",                               "Mahjong Gakuensai (Japan)",         GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
6139GAME( 1998, gakusai2,  0,        gakusai2, gakusai, metro_state,  gakusai,  ROT0,   "MakeSoft",                               "Mahjong Gakuensai 2 (Japan)",       GAME_SUPPORTS_SAVE )
6140GAME( 2000, puzzlet,   0,        puzzlet,  puzzlet, metro_state,  puzzlet,  ROT0,   "Unies Corporation",                      "Puzzlet (Japan)",                   GAME_NOT_WORKING | GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
6130GAME( 1996, mouja,     0,        mouja,    mouja,    metro_state, mouja,    ROT0,   "Etona",                                  "Mouja (Japan)",                     GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
6131GAME( 1997, gakusai,   0,        gakusai,  gakusai,  metro_state, gakusai,  ROT0,   "MakeSoft",                               "Mahjong Gakuensai (Japan)",         GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
6132GAME( 1998, gakusai2,  0,        gakusai2, gakusai,  metro_state, gakusai,  ROT0,   "MakeSoft",                               "Mahjong Gakuensai 2 (Japan)",       GAME_SUPPORTS_SAVE )
6133GAME( 2000, puzzlet,   0,        puzzlet,  puzzlet,  metro_state, puzzlet,  ROT0,   "Unies Corporation",                      "Puzzlet (Japan)",                   GAME_NOT_WORKING | GAME_NO_SOUND | GAME_SUPPORTS_SAVE )

Previous 199869 Revisions Next


© 1997-2024 The MAME Team