Previous 199869 Revisions Next

r30614 Friday 23rd May, 2014 at 03:05:03 UTC by Alex Jackson
fromanc2.c: use separate palettes per screen; use core palette formats; remove unneccessary eeprom-out trampolines (nw)
[src/mame/drivers]fromanc2.c
[src/mame/includes]fromanc2.h
[src/mame/video]fromanc2.c

trunk/src/mame/drivers/fromanc2.c
r30613r30614
8383   return m_subcpu_nmi_flag & 0x01;
8484}
8585
86WRITE16_MEMBER(fromanc2_state::fromanc2_eeprom_w)
86WRITE16_MEMBER(fromanc2_state::fromancr_gfxbank_eeprom_w)
8787{
88   if (ACCESSING_BITS_8_15)
89      ioport("EEPROMOUT")->write(data >> 8, 0xff);
90}
91
92WRITE16_MEMBER(fromanc2_state::fromancr_eeprom_w)
93{
88   fromancr_gfxbank_w(data & 0xfff8);
9489   if (ACCESSING_BITS_0_7)
9590   {
96      fromancr_gfxbank_w(data & 0xfff8);
97      ioport("EEPROMOUT")->write(data, 0xff);
91      m_eeprom->di_write(data & 0x01);
92      m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
93      m_eeprom->cs_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE);
9894   }
9995}
10096
101WRITE16_MEMBER(fromanc2_state::fromanc4_eeprom_w)
102{
103   if (ACCESSING_BITS_0_7)
104      ioport("EEPROMOUT")->write(data, 0xff);
105}
106
10797WRITE16_MEMBER(fromanc2_state::fromanc2_subcpu_w)
10898{
10999   m_datalatch1 = data;
r30613r30614
179169   AM_RANGE(0x900000, 0x903fff) AM_WRITE(fromanc2_videoram_2_w)        // VRAM 0, 1 (2P)
180170   AM_RANGE(0x980000, 0x983fff) AM_WRITE(fromanc2_videoram_3_w)        // VRAM 2, 3 (2P)
181171
182   AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(fromanc2_paletteram_0_r, fromanc2_paletteram_0_w) // PALETTE (1P)
183   AM_RANGE(0xa80000, 0xa80fff) AM_READWRITE(fromanc2_paletteram_1_r, fromanc2_paletteram_1_w) // PALETTE (2P)
172   AM_RANGE(0xa00000, 0xa00fff) AM_RAM_DEVWRITE("lpalette", palette_device, write) AM_SHARE("lpalette") // PALETTE (1P)
173   AM_RANGE(0xa80000, 0xa80fff) AM_RAM_DEVWRITE("rpalette", palette_device, write) AM_SHARE("rpalette") // PALETTE (2P)
184174
185175   AM_RANGE(0xd00000, 0xd00023) AM_WRITE(fromanc2_gfxreg_0_w)          // SCROLL REG (1P/2P)
186176   AM_RANGE(0xd00100, 0xd00123) AM_WRITE(fromanc2_gfxreg_2_w)          // SCROLL REG (1P/2P)
r30613r30614
196186   AM_RANGE(0xd01300, 0xd01301) AM_READ(fromanc2_subcpu_r  )           // SUB CPU READ
197187   AM_RANGE(0xd01400, 0xd01401) AM_WRITE(fromanc2_gfxbank_0_w)         // GFXBANK (1P)
198188   AM_RANGE(0xd01500, 0xd01501) AM_WRITE(fromanc2_gfxbank_1_w)         // GFXBANK (2P)
199   AM_RANGE(0xd01600, 0xd01601) AM_WRITE(fromanc2_eeprom_w)            // EEPROM DATA
189   AM_RANGE(0xd01600, 0xd01601) AM_WRITE_PORT("EEPROMOUT")             // EEPROM DATA
200190   AM_RANGE(0xd01800, 0xd01801) AM_READ(fromanc2_keymatrix_r)          // INPUT KEY MATRIX
201191   AM_RANGE(0xd01a00, 0xd01a01) AM_WRITE(fromanc2_portselect_w)        // PORT SELECT (1P/2P)
202192
r30613r30614
211201   AM_RANGE(0x900000, 0x903fff) AM_WRITE(fromancr_videoram_2_w)        // VRAM TEXT (1P/2P)
212202   AM_RANGE(0x980000, 0x983fff) AM_WRITENOP                            // VRAM Unused ?
213203
214   AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(fromancr_paletteram_0_r, fromancr_paletteram_0_w) // PALETTE (1P)
215   AM_RANGE(0xa80000, 0xa80fff) AM_READWRITE(fromancr_paletteram_1_r, fromancr_paletteram_1_w) // PALETTE (2P)
204   AM_RANGE(0xa00000, 0xa00fff) AM_RAM_DEVWRITE("lpalette", palette_device, write) AM_SHARE("lpalette") // PALETTE (1P)
205   AM_RANGE(0xa80000, 0xa80fff) AM_RAM_DEVWRITE("rpalette", palette_device, write) AM_SHARE("rpalette") // PALETTE (2P)
216206
217207   AM_RANGE(0xd00000, 0xd00023) AM_WRITE(fromancr_gfxreg_1_w)          // SCROLL REG (1P/2P)
218208   AM_RANGE(0xd00200, 0xd002ff) AM_WRITENOP                            // ?
r30613r30614
224214   AM_RANGE(0xd01200, 0xd01201) AM_WRITE(fromanc2_subcpu_w)            // SUB CPU WRITE
225215   AM_RANGE(0xd01300, 0xd01301) AM_READ(fromanc2_subcpu_r)             // SUB CPU READ
226216   AM_RANGE(0xd01400, 0xd01401) AM_WRITENOP                            // COIN COUNTER ?
227   AM_RANGE(0xd01600, 0xd01601) AM_WRITE(fromancr_eeprom_w)            // EEPROM DATA, GFXBANK (1P/2P)
217   AM_RANGE(0xd01600, 0xd01601) AM_WRITE(fromancr_gfxbank_eeprom_w)    // EEPROM DATA, GFXBANK (1P/2P)
228218   AM_RANGE(0xd01800, 0xd01801) AM_READ(fromanc2_keymatrix_r)          // INPUT KEY MATRIX
229219   AM_RANGE(0xd01a00, 0xd01a01) AM_WRITE(fromanc2_portselect_w)        // PORT SELECT (1P/2P)
230220
r30613r30614
241231
242232   AM_RANGE(0xd10000, 0xd10001) AM_WRITENOP                        // ?
243233   AM_RANGE(0xd30000, 0xd30001) AM_WRITENOP                        // ?
244   AM_RANGE(0xd50000, 0xd50001) AM_WRITE(fromanc4_eeprom_w)        // EEPROM DATA
234   AM_RANGE(0xd50000, 0xd50001) AM_WRITE_PORT("EEPROMOUT")         // EEPROM DATA
245235
246236   AM_RANGE(0xd70000, 0xd70001) AM_WRITE(fromanc2_sndcmd_w)        // SOUND REQ (1P/2P)
247237
r30613r30614
249239   AM_RANGE(0xd90000, 0xd9ffff) AM_WRITE(fromanc4_videoram_1_w)    // VRAM BG (1P/2P)
250240   AM_RANGE(0xda0000, 0xdaffff) AM_WRITE(fromanc4_videoram_2_w)    // VRAM TEXT (1P/2P)
251241
252   AM_RANGE(0xdb0000, 0xdb0fff) AM_READWRITE(fromanc4_paletteram_0_r, fromanc4_paletteram_0_w) // PALETTE (1P)
253   AM_RANGE(0xdc0000, 0xdc0fff) AM_READWRITE(fromanc4_paletteram_1_r, fromanc4_paletteram_1_w) // PALETTE (2P)
242   AM_RANGE(0xdb0000, 0xdb0fff) AM_RAM_DEVWRITE("lpalette", palette_device, write) AM_SHARE("lpalette") // PALETTE (1P)
243   AM_RANGE(0xdc0000, 0xdc0fff) AM_RAM_DEVWRITE("rpalette", palette_device, write) AM_SHARE("rpalette") // PALETTE (2P)
254244
255245   AM_RANGE(0xd10000, 0xd10001) AM_READ(fromanc2_keymatrix_r)      // INPUT KEY MATRIX
256246   AM_RANGE(0xd20000, 0xd20001) AM_READ_PORT("SYSTEM")
r30613r30614
395385   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
396386
397387   PORT_START( "EEPROMOUT" )
398   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
399   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
400   PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
388   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
389   PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
390   PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
391   PORT_BIT( 0xf8ff, IP_ACTIVE_HIGH, IPT_UNUSED )
401392INPUT_PORTS_END
402393
403394static INPUT_PORTS_START( fromanc4 )
r30613r30614
419410   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
420411   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
421412   PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
413   PORT_BIT( 0xfff8, IP_ACTIVE_HIGH, IPT_UNUSED )
422414INPUT_PORTS_END
423415
424416
r30613r30614
440432};
441433
442434static GFXDECODE_START( fromanc2 )
443   GFXDECODE_ENTRY( "gfx1", 0, fromanc2_tilelayout, (  0 * 2), (256 * 2) )
444   GFXDECODE_ENTRY( "gfx2", 0, fromanc2_tilelayout, (256 * 2), (256 * 2) )
445   GFXDECODE_ENTRY( "gfx3", 0, fromanc2_tilelayout, (512 * 2), (256 * 2) )
446   GFXDECODE_ENTRY( "gfx4", 0, fromanc2_tilelayout, (768 * 2), (256 * 2) )
435   GFXDECODE_ENTRY( "gfx1", 0, fromanc2_tilelayout,   0, 4 )
436   GFXDECODE_ENTRY( "gfx2", 0, fromanc2_tilelayout, 256, 4 )
437   GFXDECODE_ENTRY( "gfx3", 0, fromanc2_tilelayout, 512, 4 )
438   GFXDECODE_ENTRY( "gfx4", 0, fromanc2_tilelayout, 768, 4 )
447439GFXDECODE_END
448440
449441static const gfx_layout fromancr_tilelayout =
r30613r30614
458450};
459451
460452static GFXDECODE_START( fromancr )
461   GFXDECODE_ENTRY( "gfx1", 0, fromancr_tilelayout, (512 * 2), 2 )
462   GFXDECODE_ENTRY( "gfx2", 0, fromancr_tilelayout, (256 * 2), 2 )
463   GFXDECODE_ENTRY( "gfx3", 0, fromancr_tilelayout, (  0 * 2), 2 )
453   GFXDECODE_ENTRY( "gfx1", 0, fromancr_tilelayout, 512, 1 )
454   GFXDECODE_ENTRY( "gfx2", 0, fromancr_tilelayout, 256, 1 )
455   GFXDECODE_ENTRY( "gfx3", 0, fromancr_tilelayout,   0, 1 )
464456GFXDECODE_END
465457
466458
r30613r30614
536528   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
537529
538530   /* video hardware */
539   MCFG_GFXDECODE_ADD("gfxdecode", "palette", fromanc2)
540   MCFG_PALETTE_ADD("palette", 4096)
531   MCFG_GFXDECODE_ADD("gfxdecode", "lpalette", fromanc2)
532
533   MCFG_PALETTE_ADD("lpalette", 2048)
534   MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
535   MCFG_PALETTE_ADD("rpalette", 2048)
536   MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx)
537
541538   MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
542539
543540   MCFG_SCREEN_ADD("lscreen", RASTER)
r30613r30614
546543   MCFG_SCREEN_SIZE(512, 512)
547544   MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1)
548545   MCFG_SCREEN_UPDATE_DRIVER(fromanc2_state, screen_update_fromanc2_left)
549   MCFG_SCREEN_PALETTE("palette")
546   MCFG_SCREEN_PALETTE("lpalette")
550547
551548   MCFG_SCREEN_ADD("rscreen", RASTER)
552549   MCFG_SCREEN_REFRESH_RATE(60)
r30613r30614
554551   MCFG_SCREEN_SIZE(512, 512)
555552   MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1)
556553   MCFG_SCREEN_UPDATE_DRIVER(fromanc2_state, screen_update_fromanc2_right)
557   MCFG_SCREEN_PALETTE("palette")
554   MCFG_SCREEN_PALETTE("rpalette")
558555
559556   MCFG_VIDEO_START_OVERRIDE(fromanc2_state,fromanc2)
560557
r30613r30614
588585   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
589586
590587   /* video hardware */
591   MCFG_GFXDECODE_ADD("gfxdecode", "palette", fromancr)
592   MCFG_PALETTE_ADD("palette", 4096)
588   MCFG_GFXDECODE_ADD("gfxdecode", "lpalette", fromancr)
589
590   MCFG_PALETTE_ADD("lpalette", 2048)
591   MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
592   MCFG_PALETTE_ADD("rpalette", 2048)
593   MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
594
593595   MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
594596
595597   MCFG_SCREEN_ADD("lscreen", RASTER)
r30613r30614
598600   MCFG_SCREEN_SIZE(512, 512)
599601   MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1)
600602   MCFG_SCREEN_UPDATE_DRIVER(fromanc2_state, screen_update_fromanc2_left)
601   MCFG_SCREEN_PALETTE("palette")
603   MCFG_SCREEN_PALETTE("lpalette")
602604
603605   MCFG_SCREEN_ADD("rscreen", RASTER)
604606   MCFG_SCREEN_REFRESH_RATE(60)
r30613r30614
606608   MCFG_SCREEN_SIZE(512, 512)
607609   MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1)
608610   MCFG_SCREEN_UPDATE_DRIVER(fromanc2_state, screen_update_fromanc2_right)
609   MCFG_SCREEN_PALETTE("palette")
611   MCFG_SCREEN_PALETTE("rpalette")
610612
611613   MCFG_VIDEO_START_OVERRIDE(fromanc2_state,fromancr)
612614
r30613r30614
636638   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
637639
638640   /* video hardware */
639   MCFG_GFXDECODE_ADD("gfxdecode", "palette", fromancr)
640   MCFG_PALETTE_ADD("palette", 4096)
641   MCFG_GFXDECODE_ADD("gfxdecode", "lpalette", fromancr)
641642
643   MCFG_PALETTE_ADD("lpalette", 2048)
644   MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
645   MCFG_PALETTE_ADD("rpalette", 2048)
646   MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
647
642648   MCFG_DEFAULT_LAYOUT(layout_dualhsxs)
643649
644650   MCFG_SCREEN_ADD("lscreen", RASTER)
645651   MCFG_SCREEN_REFRESH_RATE(60)
646652   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
647   MCFG_SCREEN_SIZE(2048, 256)
653   MCFG_SCREEN_SIZE(512, 512)
648654   MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1)
649655   MCFG_SCREEN_UPDATE_DRIVER(fromanc2_state, screen_update_fromanc2_left)
650   MCFG_SCREEN_PALETTE("palette")
656   MCFG_SCREEN_PALETTE("lpalette")
651657
652658   MCFG_SCREEN_ADD("rscreen", RASTER)
653659   MCFG_SCREEN_REFRESH_RATE(60)
r30613r30614
655661   MCFG_SCREEN_SIZE(512, 512)
656662   MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1)
657663   MCFG_SCREEN_UPDATE_DRIVER(fromanc2_state, screen_update_fromanc2_right)
658   MCFG_SCREEN_PALETTE("palette")
664   MCFG_SCREEN_PALETTE("rpalette")
659665
660666   MCFG_VIDEO_START_OVERRIDE(fromanc2_state,fromanc4)
661667
trunk/src/mame/includes/fromanc2.h
r30613r30614
55public:
66   fromanc2_state(const machine_config &mconfig, device_type type, const char *tag)
77      : driver_device(mconfig, type, tag),
8      m_maincpu(*this, "maincpu"),
89      m_audiocpu(*this, "audiocpu"),
910      m_subcpu(*this, "sub"),
1011      m_eeprom(*this, "eeprom"),
11      m_maincpu(*this, "maincpu"),
1212      m_gfxdecode(*this, "gfxdecode"),
13      m_palette(*this, "palette")  { }
13      m_lpalette(*this, "lpalette"),
14      m_rpalette(*this, "rpalette") { }
1415
1516   /* memory pointers */
16   UINT16   *m_paletteram[2];
1717   UINT16   *m_videoram[2][4];
1818   UINT8    *m_bankedram;
1919
r30613r30614
3333   UINT8    m_datalatch_2l;
3434
3535   /* devices */
36   required_device<cpu_device> m_maincpu;
3637   required_device<cpu_device> m_audiocpu;
3738   optional_device<cpu_device> m_subcpu;
3839   optional_device<eeprom_serial_93cxx_device> m_eeprom;
40   required_device<gfxdecode_device> m_gfxdecode;
41   required_device<palette_device> m_lpalette;
42   required_device<palette_device> m_rpalette;
3943   DECLARE_WRITE16_MEMBER(fromanc2_sndcmd_w);
4044   DECLARE_WRITE16_MEMBER(fromanc2_portselect_w);
4145   DECLARE_READ16_MEMBER(fromanc2_keymatrix_r);
42   DECLARE_WRITE16_MEMBER(fromanc2_eeprom_w);
43   DECLARE_WRITE16_MEMBER(fromancr_eeprom_w);
44   DECLARE_WRITE16_MEMBER(fromanc4_eeprom_w);
46   DECLARE_WRITE16_MEMBER(fromancr_gfxbank_eeprom_w);
4547   DECLARE_WRITE16_MEMBER(fromanc2_subcpu_w);
4648   DECLARE_READ16_MEMBER(fromanc2_subcpu_r);
4749   DECLARE_READ8_MEMBER(fromanc2_maincpu_r_l);
r30613r30614
5153   DECLARE_WRITE8_MEMBER(fromanc2_subcpu_nmi_clr);
5254   DECLARE_READ8_MEMBER(fromanc2_sndcpu_nmi_clr);
5355   DECLARE_WRITE8_MEMBER(fromanc2_subcpu_rombank_w);
54   DECLARE_READ16_MEMBER(fromanc2_paletteram_0_r);
55   DECLARE_READ16_MEMBER(fromanc2_paletteram_1_r);
56   DECLARE_WRITE16_MEMBER(fromanc2_paletteram_0_w);
57   DECLARE_WRITE16_MEMBER(fromanc2_paletteram_1_w);
58   DECLARE_READ16_MEMBER(fromancr_paletteram_0_r);
59   DECLARE_READ16_MEMBER(fromancr_paletteram_1_r);
60   DECLARE_WRITE16_MEMBER(fromancr_paletteram_0_w);
61   DECLARE_WRITE16_MEMBER(fromancr_paletteram_1_w);
62   DECLARE_READ16_MEMBER(fromanc4_paletteram_0_r);
63   DECLARE_READ16_MEMBER(fromanc4_paletteram_1_r);
64   DECLARE_WRITE16_MEMBER(fromanc4_paletteram_0_w);
65   DECLARE_WRITE16_MEMBER(fromanc4_paletteram_1_w);
6656   DECLARE_WRITE16_MEMBER(fromanc2_videoram_0_w);
6757   DECLARE_WRITE16_MEMBER(fromanc2_videoram_1_w);
6858   DECLARE_WRITE16_MEMBER(fromanc2_videoram_2_w);
r30613r30614
119109   void fromancr_gfxbank_w( int data );
120110   inline void fromanc4_vram_w( offs_t offset, UINT16 data, UINT16 mem_mask, int layer );
121111   DECLARE_WRITE_LINE_MEMBER(irqhandler);
122   required_device<cpu_device> m_maincpu;
123   required_device<gfxdecode_device> m_gfxdecode;
124   required_device<palette_device> m_palette;
125112};
trunk/src/mame/video/fromanc2.c
r30613r30614
1717
1818inline void fromanc2_state::fromanc2_get_tile_info( tile_data &tileinfo, int tile_index, int vram, int layer )
1919{
20   int tile, color;
20   int tile  = (m_videoram[vram][layer][tile_index] & 0x3fff) | (m_gfxbank[vram][layer] << 14);
21   int color = (m_videoram[vram][layer][tile_index] & 0xc000) >> 14;
2122
22   tile  = (m_videoram[vram][layer][tile_index] & 0x3fff) | (m_gfxbank[vram][layer] << 14);
23   color = ((m_videoram[vram][layer][tile_index] & 0xc000) >> 14) | (0x10 * vram);
24
2523   SET_TILE_INFO_MEMBER(layer, tile, color, 0);
2624}
2725
r30613r30614
3735
3836inline void fromanc2_state::fromancr_get_tile_info( tile_data &tileinfo, int tile_index, int vram, int layer )
3937{
40   int tile, color;
38   int tile = m_videoram[vram][layer][tile_index] | (m_gfxbank[vram][layer] << 16);
4139
42   tile  = m_videoram[vram][layer][tile_index] | (m_gfxbank[vram][layer] << 16);
43   color = vram;
44
45   SET_TILE_INFO_MEMBER(layer, tile, color, 0);
40   SET_TILE_INFO_MEMBER(layer, tile, 0, 0);
4641}
4742
4843TILE_GET_INFO_MEMBER(fromanc2_state::fromancr_get_v0_l0_tile_info){ fromancr_get_tile_info(tileinfo, tile_index, 0, 0); }
r30613r30614
5954
6055******************************************************************************/
6156
62READ16_MEMBER(fromanc2_state::fromanc2_paletteram_0_r)
63{
64   return m_paletteram[0][offset];
65}
66
67READ16_MEMBER(fromanc2_state::fromanc2_paletteram_1_r)
68{
69   return m_paletteram[1][offset];
70}
71
72WRITE16_MEMBER(fromanc2_state::fromanc2_paletteram_0_w)
73{
74   UINT16 color;
75
76   COMBINE_DATA(&m_paletteram[0][offset]);
77
78   // GGGG_GRRR_RRBB_BBBx
79   color = ((offset & 0x0700) << 1) + (offset & 0x00ff);
80   m_palette->set_pen_color(0x000 + color, pal5bit(data >> 6), pal5bit(data >> 11), pal5bit(data >> 1));
81}
82
83WRITE16_MEMBER(fromanc2_state::fromanc2_paletteram_1_w)
84{
85   UINT16 color;
86
87   COMBINE_DATA(&m_paletteram[1][offset]);
88
89   // GGGG_GRRR_RRBB_BBBx
90   color = ((offset & 0x0700) << 1) + (offset & 0x00ff);
91   m_palette->set_pen_color(0x100 + color, pal5bit(data >> 6), pal5bit(data >> 11), pal5bit(data >> 1));
92}
93
94
95READ16_MEMBER(fromanc2_state::fromancr_paletteram_0_r)
96{
97   return m_paletteram[0][offset];
98}
99
100READ16_MEMBER(fromanc2_state::fromancr_paletteram_1_r)
101{
102   return m_paletteram[1][offset];
103}
104
105WRITE16_MEMBER(fromanc2_state::fromancr_paletteram_0_w)
106{
107   UINT16 color;
108
109   COMBINE_DATA(&m_paletteram[0][offset]);
110
111   // xGGG_GGRR_RRRB_BBBB
112   color = ((offset & 0x0700) << 1) + (offset & 0x00ff);
113   m_palette->set_pen_color(0x000 + color, pal5bit(data >> 5), pal5bit(data >> 10), pal5bit(data >> 0));
114}
115
116WRITE16_MEMBER(fromanc2_state::fromancr_paletteram_1_w)
117{
118   UINT16 color;
119
120   COMBINE_DATA(&m_paletteram[1][offset]);
121
122   // xGGG_GGRR_RRRB_BBBB
123   color = ((offset & 0x0700) << 1) + (offset & 0x00ff);
124   m_palette->set_pen_color(0x100 + color, pal5bit(data >> 5), pal5bit(data >> 10), pal5bit(data >> 0));
125}
126
127
128READ16_MEMBER(fromanc2_state::fromanc4_paletteram_0_r)
129{
130   return m_paletteram[0][offset];
131}
132
133READ16_MEMBER(fromanc2_state::fromanc4_paletteram_1_r)
134{
135   return m_paletteram[1][offset];
136}
137
138WRITE16_MEMBER(fromanc2_state::fromanc4_paletteram_0_w)
139{
140   UINT16 color;
141
142   COMBINE_DATA(&m_paletteram[0][offset]);
143
144   // xRRR_RRGG_GGGB_BBBB
145   color = ((offset & 0x0700) << 1) + (offset & 0x00ff);
146   m_palette->set_pen_color(0x000 + color, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
147}
148
149WRITE16_MEMBER(fromanc2_state::fromanc4_paletteram_1_w)
150{
151   UINT16 color;
152
153   COMBINE_DATA(&m_paletteram[1][offset]);
154
155   // xRRR_RRGG_GGGB_BBBB
156   color = ((offset & 0x0700) << 1) + (offset & 0x00ff);
157   m_palette->set_pen_color(0x100 + color, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
158}
159
160
16157inline void fromanc2_state::fromanc2_dispvram_w( offs_t offset, UINT16 data, UINT16 mem_mask, int vram, int layer )
16258{
16359   layer += (offset < 0x1000) ? 0 : 1;
r30613r30614
383279   m_tilemap[1][2] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromanc2_get_v1_l2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
384280   m_tilemap[1][3] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromanc2_get_v1_l3_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
385281
386   m_tilemap[0][1]->set_transparent_pen(0x000);
387   m_tilemap[0][2]->set_transparent_pen(0x000);
388   m_tilemap[0][3]->set_transparent_pen(0x000);
389   m_tilemap[1][1]->set_transparent_pen(0x000);
390   m_tilemap[1][2]->set_transparent_pen(0x000);
391   m_tilemap[1][3]->set_transparent_pen(0x000);
282   for (int screen = 0; screen < 2; screen++)
283   {
284      palette_device *palette = (screen == 0 ? m_lpalette : m_rpalette);
285      for (int tmap = 0; tmap < 4; tmap++)
286      {
287         m_videoram[screen][tmap] = auto_alloc_array(machine(), UINT16, (64 * 64));
288         m_tilemap[screen][tmap]->set_palette(palette);
289         if (tmap != 0) m_tilemap[screen][tmap]->set_transparent_pen(0x000);
290      }
291   }
392292
393   m_videoram[0][0] = auto_alloc_array(machine(), UINT16, (64 * 64));
394   m_videoram[0][1] = auto_alloc_array(machine(), UINT16, (64 * 64));
395   m_videoram[0][2] = auto_alloc_array(machine(), UINT16, (64 * 64));
396   m_videoram[0][3] = auto_alloc_array(machine(), UINT16, (64 * 64));
397   m_videoram[1][0] = auto_alloc_array(machine(), UINT16, (64 * 64));
398   m_videoram[1][1] = auto_alloc_array(machine(), UINT16, (64 * 64));
399   m_videoram[1][2] = auto_alloc_array(machine(), UINT16, (64 * 64));
400   m_videoram[1][3] = auto_alloc_array(machine(), UINT16, (64 * 64));
401
402   m_paletteram[0] = auto_alloc_array(machine(), UINT16, 0x800);
403   m_paletteram[1] = auto_alloc_array(machine(), UINT16, 0x800);
404
405293   save_pointer(NAME(m_videoram[0][0]), (64 * 64));
406294   save_pointer(NAME(m_videoram[0][1]), (64 * 64));
407295   save_pointer(NAME(m_videoram[0][2]), (64 * 64));
r30613r30614
410298   save_pointer(NAME(m_videoram[1][1]), (64 * 64));
411299   save_pointer(NAME(m_videoram[1][2]), (64 * 64));
412300   save_pointer(NAME(m_videoram[1][3]), (64 * 64));
413   save_pointer(NAME(m_paletteram[0]), 0x800);
414   save_pointer(NAME(m_paletteram[1]), 0x800);
415301   save_item(NAME(m_scrollx[0]));
416302   save_item(NAME(m_scrollx[1]));
417303   save_item(NAME(m_scrolly[0]));
r30613r30614
425311   m_tilemap[0][0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v0_l0_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
426312   m_tilemap[0][1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v0_l1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
427313   m_tilemap[0][2] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v0_l2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
428   m_tilemap[0][3] = 0;
314   m_tilemap[0][3] = NULL;
429315   m_tilemap[1][0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v1_l0_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
430316   m_tilemap[1][1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v1_l1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
431317   m_tilemap[1][2] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v1_l2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
432   m_tilemap[1][3] = 0;
318   m_tilemap[1][3] = NULL;
433319
434   m_tilemap[0][1]->set_transparent_pen(0x0ff);
435   m_tilemap[0][2]->set_transparent_pen(0x0ff);
436   m_tilemap[1][1]->set_transparent_pen(0x0ff);
437   m_tilemap[1][2]->set_transparent_pen(0x0ff);
320   for (int screen = 0; screen < 2; screen++)
321   {
322      palette_device *palette = (screen == 0 ? m_lpalette : m_rpalette);
323      for (int tmap = 0; tmap < 3; tmap++)
324      {
325         m_videoram[screen][tmap] = auto_alloc_array(machine(), UINT16, (64 * 64));
326         m_tilemap[screen][tmap]->set_palette(palette);
327         if (tmap != 0) m_tilemap[screen][tmap]->set_transparent_pen(0x0ff);
328      }
329   }
438330
439   m_videoram[0][0] = auto_alloc_array(machine(), UINT16, (64 * 64));
440   m_videoram[0][1] = auto_alloc_array(machine(), UINT16, (64 * 64));
441   m_videoram[0][2] = auto_alloc_array(machine(), UINT16, (64 * 64));
442   m_videoram[1][0] = auto_alloc_array(machine(), UINT16, (64 * 64));
443   m_videoram[1][1] = auto_alloc_array(machine(), UINT16, (64 * 64));
444   m_videoram[1][2] = auto_alloc_array(machine(), UINT16, (64 * 64));
445
446   m_paletteram[0] = auto_alloc_array(machine(), UINT16, 0x800);
447   m_paletteram[1] = auto_alloc_array(machine(), UINT16, 0x800);
448
449331   save_pointer(NAME(m_videoram[0][0]), (64 * 64));
450332   save_pointer(NAME(m_videoram[0][1]), (64 * 64));
451333   save_pointer(NAME(m_videoram[0][2]), (64 * 64));
452334   save_pointer(NAME(m_videoram[1][0]), (64 * 64));
453335   save_pointer(NAME(m_videoram[1][1]), (64 * 64));
454336   save_pointer(NAME(m_videoram[1][2]), (64 * 64));
455   save_pointer(NAME(m_paletteram[0]), 0x800);
456   save_pointer(NAME(m_paletteram[1]), 0x800);
457337   save_item(NAME(m_scrollx[0]));
458338   save_item(NAME(m_scrollx[1]));
459339   save_item(NAME(m_scrolly[0]));
r30613r30614
462342   save_item(NAME(m_gfxbank[1]));
463343}
464344
465
466345VIDEO_START_MEMBER(fromanc2_state,fromanc4)
467346{
468347   m_tilemap[0][0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v0_l0_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 256, 64);
469348   m_tilemap[0][1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v0_l1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 256, 64);
470349   m_tilemap[0][2] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v0_l2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 256, 64);
471   m_tilemap[0][3] = 0;
350   m_tilemap[0][3] = NULL;
472351   m_tilemap[1][0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v1_l0_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 256, 64);
473352   m_tilemap[1][1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v1_l1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 256, 64);
474353   m_tilemap[1][2] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v1_l2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 256, 64);
475   m_tilemap[1][3] = 0;
354   m_tilemap[1][3] = NULL;
476355
477   m_tilemap[0][1]->set_transparent_pen(0x000);
478   m_tilemap[0][2]->set_transparent_pen(0x000);
479   m_tilemap[1][1]->set_transparent_pen(0x000);
480   m_tilemap[1][2]->set_transparent_pen(0x000);
356   for (int screen = 0; screen < 2; screen++)
357   {
358      palette_device *palette = (screen == 0 ? m_lpalette : m_rpalette);
359      for (int tmap = 0; tmap < 3; tmap++)
360      {
361         m_videoram[screen][tmap] = auto_alloc_array(machine(), UINT16, (256 * 64));
362         m_tilemap[screen][tmap]->set_palette(palette);
363         if (tmap != 0) m_tilemap[screen][tmap]->set_transparent_pen(0x000);
364      }
365   }
481366
482   m_videoram[0][0] = auto_alloc_array(machine(), UINT16, (256 * 64));
483   m_videoram[0][1] = auto_alloc_array(machine(), UINT16, (256 * 64));
484   m_videoram[0][2] = auto_alloc_array(machine(), UINT16, (256 * 64));
485   m_videoram[1][0] = auto_alloc_array(machine(), UINT16, (256 * 64));
486   m_videoram[1][1] = auto_alloc_array(machine(), UINT16, (256 * 64));
487   m_videoram[1][2] = auto_alloc_array(machine(), UINT16, (256 * 64));
488
489   m_paletteram[0] = auto_alloc_array(machine(), UINT16, 0x800);
490   m_paletteram[1] = auto_alloc_array(machine(), UINT16, 0x800);
491
492367   save_pointer(NAME(m_videoram[0][0]), (256 * 64));
493368   save_pointer(NAME(m_videoram[0][1]), (256 * 64));
494369   save_pointer(NAME(m_videoram[0][2]), (256 * 64));
495370   save_pointer(NAME(m_videoram[1][0]), (256 * 64));
496371   save_pointer(NAME(m_videoram[1][1]), (256 * 64));
497372   save_pointer(NAME(m_videoram[1][2]), (256 * 64));
498   save_pointer(NAME(m_paletteram[0]), 0x800);
499   save_pointer(NAME(m_paletteram[1]), 0x800);
500373   save_item(NAME(m_scrollx[0]));
501374   save_item(NAME(m_scrollx[1]));
502375   save_item(NAME(m_scrolly[0]));

Previous 199869 Revisions Next


© 1997-2024 The MAME Team