Previous 199869 Revisions Next

r35152 Friday 20th February, 2015 at 18:14:28 UTC by Osso
tecmo.c, tecmo16.c, vball.c: added save state support (nw)
[src/mame/drivers]tecmo.c tecmo16.c vball.c
[src/mame/includes]tecmo.h tecmo16.h vball.h
[src/mame/video]tecmo.c tecmo16.c vball.c

trunk/src/mame/drivers/tecmo.c
r243663r243664
5151#include "emu.h"
5252#include "cpu/z80/z80.h"
5353#include "sound/3812intf.h"
54#include "sound/msm5205.h"
5554#include "includes/tecmo.h"
5655
5756
58WRITE8_MEMBER(tecmo_state::tecmo_bankswitch_w)
57WRITE8_MEMBER(tecmo_state::bankswitch_w)
5958{
6059   int bankaddress;
6160   UINT8 *RAM = memregion("maincpu")->base();
r243663r243664
6564   membank("bank1")->set_base(&RAM[bankaddress]);
6665}
6766
68WRITE8_MEMBER(tecmo_state::tecmo_sound_command_w)
67WRITE8_MEMBER(tecmo_state::sound_command_w)
6968{
7069   soundlatch_byte_w(space, offset, data);
7170   m_soundcpu->set_input_line(INPUT_LINE_NMI,ASSERT_LINE);
7271}
7372
74WRITE8_MEMBER(tecmo_state::tecmo_nmi_ack_w)
73WRITE8_MEMBER(tecmo_state::nmi_ack_w)
7574{
7675   m_soundcpu->set_input_line(INPUT_LINE_NMI,CLEAR_LINE);
7776}
7877
79WRITE8_MEMBER(tecmo_state::tecmo_adpcm_start_w)
78WRITE8_MEMBER(tecmo_state::adpcm_start_w)
8079{
8180   m_adpcm_pos = data << 8;
8281   m_msm->reset_w(0);
8382}
8483
85WRITE8_MEMBER(tecmo_state::tecmo_adpcm_end_w)
84WRITE8_MEMBER(tecmo_state::adpcm_end_w)
8685{
8786   m_adpcm_end = (data + 1) << 8;
8887}
8988
90WRITE8_MEMBER(tecmo_state::tecmo_adpcm_vol_w)
89WRITE8_MEMBER(tecmo_state::adpcm_vol_w)
9190{
9291   m_msm->set_volume((data & 0x0f) * 100 / 15);
9392}
9493
95WRITE_LINE_MEMBER(tecmo_state::tecmo_adpcm_int)
94WRITE_LINE_MEMBER(tecmo_state::adpcm_int)
9695{
9796   if (m_adpcm_pos >= m_adpcm_end ||
9897            m_adpcm_pos >= memregion("adpcm")->bytes())
r243663r243664
112111}
113112
114113/* the 8-bit dipswitches are split across addresses */
115READ8_MEMBER(tecmo_state::tecmo_dswa_l_r)
114READ8_MEMBER(tecmo_state::dswa_l_r)
116115{
117116   UINT8 port = ioport("DSWA")->read();
118117   port &= 0x0f;
119118   return port;
120119}
121120
122READ8_MEMBER(tecmo_state::tecmo_dswa_h_r)
121READ8_MEMBER(tecmo_state::dswa_h_r)
123122{
124123   UINT8 port = ioport("DSWA")->read();
125124   port &= 0xf0;
126125   return port>>4;
127126}
128127
129READ8_MEMBER(tecmo_state::tecmo_dswb_l_r)
128READ8_MEMBER(tecmo_state::dswb_l_r)
130129{
131130   UINT8 port = ioport("DSWB")->read();
132131   port &= 0x0f;
133132   return port;
134133}
135134
136READ8_MEMBER(tecmo_state::tecmo_dswb_h_r)
135READ8_MEMBER(tecmo_state::dswb_h_r)
137136{
138137   UINT8 port = ioport("DSWB")->read();
139138   port &= 0xf0;
r243663r243664
144143static ADDRESS_MAP_START( rygar_map, AS_PROGRAM, 8, tecmo_state )
145144   AM_RANGE(0x0000, 0xbfff) AM_ROM
146145   AM_RANGE(0xc000, 0xcfff) AM_RAM
147   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(tecmo_txvideoram_w) AM_SHARE("txvideoram")
148   AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(tecmo_fgvideoram_w) AM_SHARE("fgvideoram")
149   AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(tecmo_bgvideoram_w) AM_SHARE("bgvideoram")
146   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram")
147   AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
148   AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
150149   AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram")
151150   AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
152151   AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1")
r243663r243664
156155   AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2")
157156   AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0")
158157   AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1")
159   AM_RANGE(0xf806, 0xf806) AM_READ(tecmo_dswa_l_r)
160   AM_RANGE(0xf807, 0xf807) AM_READ(tecmo_dswa_h_r)
161   AM_RANGE(0xf808, 0xf808) AM_READ(tecmo_dswb_l_r)
162   AM_RANGE(0xf809, 0xf809) AM_READ(tecmo_dswb_h_r)
158   AM_RANGE(0xf806, 0xf806) AM_READ(dswa_l_r)
159   AM_RANGE(0xf807, 0xf807) AM_READ(dswa_h_r)
160   AM_RANGE(0xf808, 0xf808) AM_READ(dswb_l_r)
161   AM_RANGE(0xf809, 0xf809) AM_READ(dswb_h_r)
163162   AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2")
164   AM_RANGE(0xf800, 0xf802) AM_WRITE(tecmo_fgscroll_w)
165   AM_RANGE(0xf803, 0xf805) AM_WRITE(tecmo_bgscroll_w)
166   AM_RANGE(0xf806, 0xf806) AM_WRITE(tecmo_sound_command_w)
167   AM_RANGE(0xf807, 0xf807) AM_WRITE(tecmo_flipscreen_w)
168   AM_RANGE(0xf808, 0xf808) AM_WRITE(tecmo_bankswitch_w)
163   AM_RANGE(0xf800, 0xf802) AM_WRITE(fgscroll_w)
164   AM_RANGE(0xf803, 0xf805) AM_WRITE(bgscroll_w)
165   AM_RANGE(0xf806, 0xf806) AM_WRITE(sound_command_w)
166   AM_RANGE(0xf807, 0xf807) AM_WRITE(flipscreen_w)
167   AM_RANGE(0xf808, 0xf808) AM_WRITE(bankswitch_w)
169168   AM_RANGE(0xf80b, 0xf80b) AM_WRITE(watchdog_reset_w)
170169ADDRESS_MAP_END
171170
172171static ADDRESS_MAP_START( gemini_map, AS_PROGRAM, 8, tecmo_state )
173172   AM_RANGE(0x0000, 0xbfff) AM_ROM
174173   AM_RANGE(0xc000, 0xcfff) AM_RAM
175   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(tecmo_txvideoram_w) AM_SHARE("txvideoram")
176   AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(tecmo_fgvideoram_w) AM_SHARE("fgvideoram")
177   AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(tecmo_bgvideoram_w) AM_SHARE("bgvideoram")
174   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram")
175   AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
176   AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
178177   AM_RANGE(0xe000, 0xe7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
179178   AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("spriteram")
180179   AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("bank1")
r243663r243664
184183   AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2")
185184   AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0")
186185   AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1")
187   AM_RANGE(0xf806, 0xf806) AM_READ(tecmo_dswa_l_r)
188   AM_RANGE(0xf807, 0xf807) AM_READ(tecmo_dswa_h_r)
189   AM_RANGE(0xf808, 0xf808) AM_READ(tecmo_dswb_l_r)
190   AM_RANGE(0xf809, 0xf809) AM_READ(tecmo_dswb_h_r)
186   AM_RANGE(0xf806, 0xf806) AM_READ(dswa_l_r)
187   AM_RANGE(0xf807, 0xf807) AM_READ(dswa_h_r)
188   AM_RANGE(0xf808, 0xf808) AM_READ(dswb_l_r)
189   AM_RANGE(0xf809, 0xf809) AM_READ(dswb_h_r)
191190   AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2")
192   AM_RANGE(0xf800, 0xf802) AM_WRITE(tecmo_fgscroll_w)
193   AM_RANGE(0xf803, 0xf805) AM_WRITE(tecmo_bgscroll_w)
194   AM_RANGE(0xf806, 0xf806) AM_WRITE(tecmo_sound_command_w)
195   AM_RANGE(0xf807, 0xf807) AM_WRITE(tecmo_flipscreen_w)
196   AM_RANGE(0xf808, 0xf808) AM_WRITE(tecmo_bankswitch_w)
191   AM_RANGE(0xf800, 0xf802) AM_WRITE(fgscroll_w)
192   AM_RANGE(0xf803, 0xf805) AM_WRITE(bgscroll_w)
193   AM_RANGE(0xf806, 0xf806) AM_WRITE(sound_command_w)
194   AM_RANGE(0xf807, 0xf807) AM_WRITE(flipscreen_w)
195   AM_RANGE(0xf808, 0xf808) AM_WRITE(bankswitch_w)
197196   AM_RANGE(0xf80b, 0xf80b) AM_WRITE(watchdog_reset_w)
198197ADDRESS_MAP_END
199198
200199static ADDRESS_MAP_START( silkworm_map, AS_PROGRAM, 8, tecmo_state )
201200   AM_RANGE(0x0000, 0xbfff) AM_ROM
202   AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(tecmo_bgvideoram_w) AM_SHARE("bgvideoram")
203   AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(tecmo_fgvideoram_w) AM_SHARE("fgvideoram")
204   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(tecmo_txvideoram_w) AM_SHARE("txvideoram")
201   AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
202   AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram")
203   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram")
205204   AM_RANGE(0xd000, 0xdfff) AM_RAM
206205   AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("spriteram")
207206   AM_RANGE(0xe800, 0xefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
r243663r243664
212211   AM_RANGE(0xf803, 0xf803) AM_READ_PORT("BUTTONS2")
213212   AM_RANGE(0xf804, 0xf804) AM_READ_PORT("SYS_0")
214213   AM_RANGE(0xf805, 0xf805) AM_READ_PORT("SYS_1")
215   AM_RANGE(0xf806, 0xf806) AM_READ(tecmo_dswa_l_r)
216   AM_RANGE(0xf807, 0xf807) AM_READ(tecmo_dswa_h_r)
217   AM_RANGE(0xf808, 0xf808) AM_READ(tecmo_dswb_l_r)
218   AM_RANGE(0xf809, 0xf809) AM_READ(tecmo_dswb_h_r)
214   AM_RANGE(0xf806, 0xf806) AM_READ(dswa_l_r)
215   AM_RANGE(0xf807, 0xf807) AM_READ(dswa_h_r)
216   AM_RANGE(0xf808, 0xf808) AM_READ(dswb_l_r)
217   AM_RANGE(0xf809, 0xf809) AM_READ(dswb_h_r)
219218   AM_RANGE(0xf80f, 0xf80f) AM_READ_PORT("SYS_2")
220   AM_RANGE(0xf800, 0xf802) AM_WRITE(tecmo_fgscroll_w)
221   AM_RANGE(0xf803, 0xf805) AM_WRITE(tecmo_bgscroll_w)
222   AM_RANGE(0xf806, 0xf806) AM_WRITE(tecmo_sound_command_w)
223   AM_RANGE(0xf807, 0xf807) AM_WRITE(tecmo_flipscreen_w)
224   AM_RANGE(0xf808, 0xf808) AM_WRITE(tecmo_bankswitch_w)
219   AM_RANGE(0xf800, 0xf802) AM_WRITE(fgscroll_w)
220   AM_RANGE(0xf803, 0xf805) AM_WRITE(bgscroll_w)
221   AM_RANGE(0xf806, 0xf806) AM_WRITE(sound_command_w)
222   AM_RANGE(0xf807, 0xf807) AM_WRITE(flipscreen_w)
223   AM_RANGE(0xf808, 0xf808) AM_WRITE(bankswitch_w)
225224   AM_RANGE(0xf809, 0xf809) AM_WRITENOP    /* ? */
226225   AM_RANGE(0xf80b, 0xf80b) AM_WRITENOP    /* ? if mapped to watchdog like in the others, causes reset */
227226ADDRESS_MAP_END
r243663r243664
230229   AM_RANGE(0x0000, 0x3fff) AM_ROM
231230   AM_RANGE(0x4000, 0x47ff) AM_RAM
232231   AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ymsnd", ym3812_device, write)
233   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(tecmo_adpcm_start_w)
234   AM_RANGE(0xd000, 0xd000) AM_WRITE(tecmo_adpcm_end_w)
235   AM_RANGE(0xe000, 0xe000) AM_WRITE(tecmo_adpcm_vol_w)
236   AM_RANGE(0xf000, 0xf000) AM_WRITE(tecmo_nmi_ack_w)
232   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(adpcm_start_w)
233   AM_RANGE(0xd000, 0xd000) AM_WRITE(adpcm_end_w)
234   AM_RANGE(0xe000, 0xe000) AM_WRITE(adpcm_vol_w)
235   AM_RANGE(0xf000, 0xf000) AM_WRITE(nmi_ack_w)
237236ADDRESS_MAP_END
238237
239238static ADDRESS_MAP_START( tecmo_sound_map, AS_PROGRAM, 8, tecmo_state )
r243663r243664
242241   AM_RANGE(0x0000, 0x7fff) AM_ROM
243242   AM_RANGE(0x8000, 0x87ff) AM_RAM
244243   AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ymsnd", ym3812_device, write)
245   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(tecmo_adpcm_start_w)
246   AM_RANGE(0xc400, 0xc400) AM_WRITE(tecmo_adpcm_end_w)
247   AM_RANGE(0xc800, 0xc800) AM_WRITE(tecmo_adpcm_vol_w)
248   AM_RANGE(0xcc00, 0xcc00) AM_WRITE(tecmo_nmi_ack_w)
244   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) AM_WRITE(adpcm_start_w)
245   AM_RANGE(0xc400, 0xc400) AM_WRITE(adpcm_end_w)
246   AM_RANGE(0xc800, 0xc800) AM_WRITE(adpcm_vol_w)
247   AM_RANGE(0xcc00, 0xcc00) AM_WRITE(nmi_ack_w)
249248ADDRESS_MAP_END
250249
251250
r243663r243664
600599GFXDECODE_END
601600
602601
603MACHINE_RESET_MEMBER(tecmo_state,rygar)
602void tecmo_state::machine_start()
604603{
604   save_item(NAME(m_adpcm_pos));
605   save_item(NAME(m_adpcm_end));
606   save_item(NAME(m_adpcm_data));
607}
608
609void tecmo_state::machine_reset()
610{
605611   m_adpcm_pos = 0;
606612   m_adpcm_end = 0;
607613   m_adpcm_data = -1;
r243663r243664
623629   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)  /* frames per second, vblank duration */)
624630   MCFG_SCREEN_SIZE(32*8, 32*8)
625631   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
626   MCFG_SCREEN_UPDATE_DRIVER(tecmo_state, screen_update_tecmo)
632   MCFG_SCREEN_UPDATE_DRIVER(tecmo_state, screen_update)
627633   MCFG_SCREEN_PALETTE("palette")
628634
629635   MCFG_GFXDECODE_ADD("gfxdecode", "palette", tecmo)
r243663r243664
633639
634640   MCFG_DEVICE_ADD("spritegen", TECMO_SPRITE, 0)
635641
636   MCFG_VIDEO_START_OVERRIDE(tecmo_state,tecmo)
637
638   MCFG_MACHINE_RESET_OVERRIDE(tecmo_state, rygar )
639
640642   /* sound hardware */
641643   MCFG_SPEAKER_STANDARD_MONO("mono")
642644
r243663r243664
645647   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
646648
647649   MCFG_SOUND_ADD("msm", MSM5205, XTAL_400kHz) /* verified on pcb, even if schematics shows a 384khz resonator */
648   MCFG_MSM5205_VCLK_CB(WRITELINE(tecmo_state, tecmo_adpcm_int))    /* interrupt function */
650   MCFG_MSM5205_VCLK_CB(WRITELINE(tecmo_state, adpcm_int))    /* interrupt function */
649651   MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B)      /* 8KHz               */
650652   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
651653MACHINE_CONFIG_END
r243663r243664
671673   MCFG_CPU_PROGRAM_MAP(silkworm_map)
672674MACHINE_CONFIG_END
673675
674#ifdef UNUSED_CODE
675static MACHINE_CONFIG_START( backfirt, tecmo_state )
676static MACHINE_CONFIG_DERIVED( backfirt, gemini )
676677
677   /* basic machine hardware */
678   MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz/4)
679   MCFG_CPU_PROGRAM_MAP(rygar_map)
680   MCFG_CPU_VBLANK_INT_DRIVER("screen", tecmo_state,  irq0_line_hold)
681
682   MCFG_CPU_ADD("soundcpu", Z80, XTAL_8MHz/2)
683   MCFG_CPU_PROGRAM_MAP(rygar_sound_map)
684
685   /* video hardware */
686   MCFG_SCREEN_ADD("screen", RASTER)
687   MCFG_SCREEN_REFRESH_RATE(60)
688   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)  /* frames per second, vblank duration */)
689   MCFG_SCREEN_SIZE(32*8, 32*8)
690   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
691   MCFG_SCREEN_UPDATE_DRIVER(tecmo_state, screen_update_tecmo)
692   MCFG_SCREEN_PALETTE("palette")
693
694   MCFG_GFXDECODE_ADD("gfxdecode", "palette", tecmo)
695   MCFG_PALETTE_ADD("palette", 1024)
696   MCFG_PALETTE_FORMAT(xxxxBBBBRRRRGGGG)
697   MCFG_PALETTE_ENDIANNESS(ENDIANNESS_BIG)
698
699   MCFG_VIDEO_START_OVERRIDE(tecmo_state,tecmo)
700
701   MCFG_MACHINE_RESET_OVERRIDE(tecmo_state, rygar )
702
703   /* sound hardware */
704   MCFG_SPEAKER_STANDARD_MONO("mono")
705
706   MCFG_SOUND_ADD("ymsnd", YM3812, XTAL_4MHz) /* verified on pcb */
707   MCFG_YM3812_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
708   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
709
710   /* no MSM on this PCB */
711
678   /* this pcb has no MSM5205 */
679   MCFG_DEVICE_REMOVE("msm")
712680MACHINE_CONFIG_END
713#endif
714
715681/***************************************************************************
716682
717683  Game driver(s)
r243663r243664
10651031   ROM_LOAD( "b16-s2.bin",  0x10000, 0x10000, CRC(6e4052c9) SHA1(e2e3d7221b75cb044449a25a076a93c3def1f11b) )   /* tiles #2 */
10661032   ROM_LOAD( "b15-s2.bin",  0x20000, 0x10000, CRC(2b6cc20e) SHA1(4815819288753400935836cc1b0b69f4c4b43ddc) )   /* tiles #2 */
10671033   ROM_LOAD( "b14-s3.bin",  0x30000, 0x08000, CRC(4d29637a) SHA1(28e85925138256b8ce5a1c4a5df5b219b1b6b197) )   /* tiles #2 */ // half size is correct, rom type 27256
1068
1069   ROM_REGION( 0x8000, "adpcm", ROMREGION_ERASE00 )    /* ADPCM samples */
1070//  ROM_LOAD( "silkworm.1",   0x0000, 0x8000, CRC(5b553644) SHA1(5d39d2251094c17f7b732b4861401b3516fce9b1) )
10711034ROM_END
10721035
10731036ROM_START( gemini )
r243663r243664
11381101
11391102
11401103
1141GAME( 1986, rygar,     0,        rygar,    rygar, tecmo_state,    rygar,    ROT0,  "Tecmo", "Rygar (US set 1)", 0 )
1142GAME( 1986, rygar2,    rygar,    rygar,    rygar, tecmo_state,    rygar,    ROT0,  "Tecmo", "Rygar (US set 2)", 0 )
1143GAME( 1986, rygar3,    rygar,    rygar,    rygar, tecmo_state,    rygar,    ROT0,  "Tecmo", "Rygar (US set 3 Old Version)", 0 )
1144GAME( 1986, rygarj,    rygar,    rygar,    rygar, tecmo_state,    rygar,    ROT0,  "Tecmo", "Argus no Senshi (Japan)", 0 )
1145GAME( 1987, gemini,    0,        gemini,   gemini, tecmo_state,   gemini,   ROT90, "Tecmo", "Gemini Wing (Japan)", 0 ) /* Japan regional warning screen */
1146GAME( 1988, silkworm,  0,        silkworm, silkworm, tecmo_state, silkworm, ROT0,  "Tecmo", "Silk Worm (World)", 0 )   /* No regional "Warning, if you are playing ..." screen */
1147GAME( 1988, silkwormj, silkworm, silkworm, silkworm, tecmo_state, silkworm, ROT0,  "Tecmo", "Silk Worm (Japan)", 0 )   /* Japan regional warning screen */
1148GAME( 1988, backfirt,  0,        gemini,   backfirt, tecmo_state, backfirt, ROT0,  "Tecmo", "Back Fire (Tecmo, bootleg)", 0 )
1104GAME( 1986, rygar,     0,        rygar,    rygar, tecmo_state,    rygar,    ROT0,  "Tecmo", "Rygar (US set 1)", GAME_SUPPORTS_SAVE )
1105GAME( 1986, rygar2,    rygar,    rygar,    rygar, tecmo_state,    rygar,    ROT0,  "Tecmo", "Rygar (US set 2)", GAME_SUPPORTS_SAVE )
1106GAME( 1986, rygar3,    rygar,    rygar,    rygar, tecmo_state,    rygar,    ROT0,  "Tecmo", "Rygar (US set 3 Old Version)", GAME_SUPPORTS_SAVE )
1107GAME( 1986, rygarj,    rygar,    rygar,    rygar, tecmo_state,    rygar,    ROT0,  "Tecmo", "Argus no Senshi (Japan)", GAME_SUPPORTS_SAVE )
1108GAME( 1987, gemini,    0,        gemini,   gemini, tecmo_state,   gemini,   ROT90, "Tecmo", "Gemini Wing (Japan)", GAME_SUPPORTS_SAVE ) /* Japan regional warning screen */
1109GAME( 1988, silkworm,  0,        silkworm, silkworm, tecmo_state, silkworm, ROT0,  "Tecmo", "Silk Worm (World)", GAME_SUPPORTS_SAVE )   /* No regional "Warning, if you are playing ..." screen */
1110GAME( 1988, silkwormj, silkworm, silkworm, silkworm, tecmo_state, silkworm, ROT0,  "Tecmo", "Silk Worm (Japan)", GAME_SUPPORTS_SAVE )   /* Japan regional warning screen */
1111GAME( 1988, backfirt,  0,        backfirt, backfirt, tecmo_state, backfirt, ROT0,  "Tecmo", "Back Fire (Tecmo, bootleg)", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/tecmo16.c
r243663r243664
3232
3333/******************************************************************************/
3434
35WRITE16_MEMBER(tecmo16_state::tecmo16_sound_command_w)
35WRITE16_MEMBER(tecmo16_state::sound_command_w)
3636{
3737   if (ACCESSING_BITS_0_7)
3838   {
r243663r243664
4646static ADDRESS_MAP_START( fstarfrc_map, AS_PROGRAM, 16, tecmo16_state )
4747   AM_RANGE(0x000000, 0x07ffff) AM_ROM
4848   AM_RANGE(0x100000, 0x103fff) AM_RAM /* Main RAM */
49   AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(tecmo16_charram_w) AM_SHARE("charram")
50   AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(tecmo16_videoram_w) AM_SHARE("videoram")
51   AM_RANGE(0x120800, 0x120fff) AM_RAM_WRITE(tecmo16_colorram_w) AM_SHARE("colorram")
52   AM_RANGE(0x121000, 0x1217ff) AM_RAM_WRITE(tecmo16_videoram2_w) AM_SHARE("videoram2")
53   AM_RANGE(0x121800, 0x121fff) AM_RAM_WRITE(tecmo16_colorram2_w) AM_SHARE("colorram2")
49   AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram")
50   AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
51   AM_RANGE(0x120800, 0x120fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
52   AM_RANGE(0x121000, 0x1217ff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
53   AM_RANGE(0x121800, 0x121fff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2")
5454   AM_RANGE(0x122000, 0x127fff) AM_RAM /* work area */
5555   AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("spriteram")
5656   AM_RANGE(0x140000, 0x141fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
57   AM_RANGE(0x150000, 0x150001) AM_WRITE(tecmo16_flipscreen_w)
58   AM_RANGE(0x150010, 0x150011) AM_WRITE(tecmo16_sound_command_w)
57   AM_RANGE(0x150000, 0x150001) AM_WRITE(flipscreen_w)
58   AM_RANGE(0x150010, 0x150011) AM_WRITE(sound_command_w)
5959   AM_RANGE(0x150030, 0x150031) AM_READ_PORT("DSW2") AM_WRITENOP   /* ??? */
6060   AM_RANGE(0x150040, 0x150041) AM_READ_PORT("DSW1")
6161   AM_RANGE(0x150050, 0x150051) AM_READ_PORT("P1_P2")
62   AM_RANGE(0x160000, 0x160001) AM_WRITE(tecmo16_scroll_char_x_w)
63   AM_RANGE(0x16000c, 0x16000d) AM_WRITE(tecmo16_scroll_x_w)
64   AM_RANGE(0x160012, 0x160013) AM_WRITE(tecmo16_scroll_y_w)
65   AM_RANGE(0x160018, 0x160019) AM_WRITE(tecmo16_scroll2_x_w)
66   AM_RANGE(0x16001e, 0x16001f) AM_WRITE(tecmo16_scroll2_y_w)
62   AM_RANGE(0x160000, 0x160001) AM_WRITE(scroll_char_x_w)
63   AM_RANGE(0x16000c, 0x16000d) AM_WRITE(scroll_x_w)
64   AM_RANGE(0x160012, 0x160013) AM_WRITE(scroll_y_w)
65   AM_RANGE(0x160018, 0x160019) AM_WRITE(scroll2_x_w)
66   AM_RANGE(0x16001e, 0x16001f) AM_WRITE(scroll2_y_w)
6767ADDRESS_MAP_END
6868
6969static ADDRESS_MAP_START( ginkun_map, AS_PROGRAM, 16, tecmo16_state )
7070   AM_RANGE(0x000000, 0x07ffff) AM_ROM
7171   AM_RANGE(0x100000, 0x103fff) AM_RAM /* Main RAM */
72   AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(tecmo16_charram_w) AM_SHARE("charram")
73   AM_RANGE(0x120000, 0x120fff) AM_RAM_WRITE(tecmo16_videoram_w) AM_SHARE("videoram")
74   AM_RANGE(0x121000, 0x121fff) AM_RAM_WRITE(tecmo16_colorram_w) AM_SHARE("colorram")
75   AM_RANGE(0x122000, 0x122fff) AM_RAM_WRITE(tecmo16_videoram2_w) AM_SHARE("videoram2")
76   AM_RANGE(0x123000, 0x123fff) AM_RAM_WRITE(tecmo16_colorram2_w) AM_SHARE("colorram2")
72   AM_RANGE(0x110000, 0x110fff) AM_RAM_WRITE(charram_w) AM_SHARE("charram")
73   AM_RANGE(0x120000, 0x120fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
74   AM_RANGE(0x121000, 0x121fff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
75   AM_RANGE(0x122000, 0x122fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
76   AM_RANGE(0x123000, 0x123fff) AM_RAM_WRITE(colorram2_w) AM_SHARE("colorram2")
7777   AM_RANGE(0x124000, 0x124fff) AM_RAM /* extra RAM for Riot */
7878   AM_RANGE(0x130000, 0x130fff) AM_RAM AM_SHARE("spriteram")
7979   AM_RANGE(0x140000, 0x141fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
80   AM_RANGE(0x150000, 0x150001) AM_WRITE(tecmo16_flipscreen_w)
81   AM_RANGE(0x150010, 0x150011) AM_WRITE(tecmo16_sound_command_w)
80   AM_RANGE(0x150000, 0x150001) AM_WRITE(flipscreen_w)
81   AM_RANGE(0x150010, 0x150011) AM_WRITE(sound_command_w)
8282   AM_RANGE(0x150020, 0x150021) AM_READ_PORT("EXTRA") AM_WRITENOP  /* ??? */
8383   AM_RANGE(0x150030, 0x150031) AM_READ_PORT("DSW2") AM_WRITENOP   /* ??? */
8484   AM_RANGE(0x150040, 0x150041) AM_READ_PORT("DSW1")
8585   AM_RANGE(0x150050, 0x150051) AM_READ_PORT("P1_P2")
86   AM_RANGE(0x160000, 0x160001) AM_WRITE(tecmo16_scroll_char_x_w)
87   AM_RANGE(0x160006, 0x160007) AM_WRITE(tecmo16_scroll_char_y_w)
88   AM_RANGE(0x16000c, 0x16000d) AM_WRITE(tecmo16_scroll_x_w)
89   AM_RANGE(0x160012, 0x160013) AM_WRITE(tecmo16_scroll_y_w)
90   AM_RANGE(0x160018, 0x160019) AM_WRITE(tecmo16_scroll2_x_w)
91   AM_RANGE(0x16001e, 0x16001f) AM_WRITE(tecmo16_scroll2_y_w)
86   AM_RANGE(0x160000, 0x160001) AM_WRITE(scroll_char_x_w)
87   AM_RANGE(0x160006, 0x160007) AM_WRITE(scroll_char_y_w)
88   AM_RANGE(0x16000c, 0x16000d) AM_WRITE(scroll_x_w)
89   AM_RANGE(0x160012, 0x160013) AM_WRITE(scroll_y_w)
90   AM_RANGE(0x160018, 0x160019) AM_WRITE(scroll2_x_w)
91   AM_RANGE(0x16001e, 0x16001f) AM_WRITE(scroll2_y_w)
9292ADDRESS_MAP_END
9393
9494static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, tecmo16_state )
r243663r243664
382382   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
383383   MCFG_SCREEN_SIZE(32*8, 32*8)
384384   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
385   MCFG_SCREEN_UPDATE_DRIVER(tecmo16_state, screen_update_tecmo16)
385   MCFG_SCREEN_UPDATE_DRIVER(tecmo16_state, screen_update)
386386
387387   MCFG_GFXDECODE_ADD("gfxdecode", "palette", tecmo16)
388388   MCFG_PALETTE_ADD_INIT_BLACK("palette", 4096)
r243663r243664
629629
630630/******************************************************************************/
631631
632GAME( 1992, fstarfrc,  0,        fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (US)", 0 )
633GAME( 1992, fstarfrcj, fstarfrc, fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (Japan)", 0 )
634GAME( 1992, riot,      0,        riot,     riot, driver_device,     0, ROT0,  "NMK",   "Riot", 0 )
635GAME( 1995, ginkun,    0,        ginkun,   ginkun, driver_device,   0, ROT0,  "Tecmo", "Ganbare Ginkun", 0 )
632GAME( 1992, fstarfrc,  0,        fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (US)", GAME_SUPPORTS_SAVE )
633GAME( 1992, fstarfrcj, fstarfrc, fstarfrc, fstarfrc, driver_device, 0, ROT90, "Tecmo", "Final Star Force (Japan)", GAME_SUPPORTS_SAVE )
634GAME( 1992, riot,      0,        riot,     riot, driver_device,     0, ROT0,  "NMK",   "Riot", GAME_SUPPORTS_SAVE )
635GAME( 1995, ginkun,    0,        ginkun,   ginkun, driver_device,   0, ROT0,  "Tecmo", "Ganbare Ginkun", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/vball.c
r243663r243664
3131 -2) X Line Scrolling doesn't work 100% when Flip Screen Dip is set
3232 -3) 2 Player Version - Dips for difficulty don't seem to work or just need more testing
3333
34 -4) 2 Player Version - sound ROM is different and the adpmc chip is addressed differently
34 -4) 2 Player Version - sound ROM is different and the adpcm chip is addressed differently
3535                        Changed it to use a rom that was dumped from original PCB (readme below),
3636                        this makes the non-working ROM not used - i don't know where it come from.
3737
r243663r243664
131131   /* Save the scroll x register value */
132132   if (scanline < 256)
133133   {
134      m_vb_scrollx[255 - scanline] = (m_vb_scrollx_hi + m_vb_scrollx_lo + 4);
134      m_scrollx[255 - scanline] = (m_scrollx_hi + m_scrollx_lo + 4);
135135   }
136136}
137137
138WRITE8_MEMBER(vball_state::vball_irq_ack_w)
138WRITE8_MEMBER(vball_state::irq_ack_w)
139139{
140140   if (offset == 0)
141141      m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
r243663r243664
154154   bit 6 = scroll y hi
155155   bit 7 = ?
156156*/
157WRITE8_MEMBER(vball_state::vb_bankswitch_w)
157WRITE8_MEMBER(vball_state::bankswitch_w)
158158{
159   UINT8 *RAM = memregion("maincpu")->base();
160   membank("bank1")->set_base(&RAM[0x10000 + (0x4000 * (data & 1))]);
159   membank("mainbank")->set_entry(data & 1);
161160
162161   if (m_gfxset != ((data  & 0x20) ^ 0x20))
163162   {
164163      m_gfxset = (data  & 0x20) ^ 0x20;
165         vb_mark_all_dirty();
164         m_bg_tilemap->mark_all_dirty();
166165   }
167   m_vb_scrolly_hi = (data & 0x40) << 2;
166   m_scrolly_hi = (data & 0x40) << 2;
168167}
169168
170169/* The sound system comes all but verbatim from Double Dragon */
r243663r243664
184183   bit 6 = sp prom bank
185184   bit 7 = sp prom bank
186185*/
187WRITE8_MEMBER(vball_state::vb_scrollx_hi_w)
186WRITE8_MEMBER(vball_state::scrollx_hi_w)
188187{
189188   flip_screen_set(~data&1);
190   m_vb_scrollx_hi = (data & 0x02) << 7;
191   vb_bgprombank_w((data >> 2) & 0x07);
192   vb_spprombank_w((data >> 5) & 0x07);
193   //logerror("%04x: vb_scrollx_hi = %d\n", space.device().safe_pcbase(), m_vb_scrollx_hi);
189   m_scrollx_hi = (data & 0x02) << 7;
190   bgprombank_w((data >> 2) & 0x07);
191   spprombank_w((data >> 5) & 0x07);
192   //logerror("%04x: scrollx_hi = %d\n", space.device().safe_pcbase(), m_scrollx_hi);
194193}
195194
196WRITE8_MEMBER(vball_state::vb_scrollx_lo_w)
195WRITE8_MEMBER(vball_state::scrollx_lo_w)
197196{
198   m_vb_scrollx_lo = data;
199   //logerror("%04x: vb_scrollx_lo =%d\n", space.device().safe_pcbase(), m_vb_scrollx_lo);
197   m_scrollx_lo = data;
198   //logerror("%04x: scrollx_lo =%d\n", space.device().safe_pcbase(), m_scrollx_lo);
200199}
201200
202201
r243663r243664
211210   AM_RANGE(0x1004, 0x1004) AM_READ_PORT("DSW2")
212211   AM_RANGE(0x1005, 0x1005) AM_READ_PORT("P3")
213212   AM_RANGE(0x1006, 0x1006) AM_READ_PORT("P4")
214   AM_RANGE(0x1008, 0x1008) AM_WRITE(vb_scrollx_hi_w)
215   AM_RANGE(0x1009, 0x1009) AM_WRITE(vb_bankswitch_w)
216   AM_RANGE(0x100a, 0x100b) AM_WRITE(vball_irq_ack_w)  /* is there a scanline counter here? */
217   AM_RANGE(0x100c, 0x100c) AM_WRITE(vb_scrollx_lo_w)
213   AM_RANGE(0x1008, 0x1008) AM_WRITE(scrollx_hi_w)
214   AM_RANGE(0x1009, 0x1009) AM_WRITE(bankswitch_w)
215   AM_RANGE(0x100a, 0x100b) AM_WRITE(irq_ack_w)  /* is there a scanline counter here? */
216   AM_RANGE(0x100c, 0x100c) AM_WRITE(scrollx_lo_w)
218217   AM_RANGE(0x100d, 0x100d) AM_WRITE(cpu_sound_command_w)
219   AM_RANGE(0x100e, 0x100e) AM_WRITEONLY AM_SHARE("vb_scrolly_lo")
220   AM_RANGE(0x2000, 0x2fff) AM_WRITE(vb_videoram_w) AM_SHARE("vb_videoram")
221   AM_RANGE(0x3000, 0x3fff) AM_WRITE(vb_attrib_w) AM_SHARE("vb_attribram")
222   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
218   AM_RANGE(0x100e, 0x100e) AM_WRITEONLY AM_SHARE("scrolly_lo")
219   AM_RANGE(0x2000, 0x2fff) AM_WRITE(videoram_w) AM_SHARE("videoram")
220   AM_RANGE(0x3000, 0x3fff) AM_WRITE(attrib_w) AM_SHARE("attribram")
221   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("mainbank")
223222   AM_RANGE(0x8000, 0xffff) AM_ROM
224223ADDRESS_MAP_END
225224
r243663r243664
361360   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) /* Used in 4 player mode, not supported in 2 player set */
362361INPUT_PORTS_END
363362
363void vball_state::machine_start()
364{
365   membank("mainbank")->configure_entries(0, 2, memregion("maincpu")->base() + 0x10000, 0x4000);
366}
364367
368
365369static const gfx_layout charlayout =
366370{
367371   8,8,
r243663r243664
407411   MCFG_SCREEN_ADD("screen", RASTER)
408412   MCFG_SCREEN_SIZE(32*8, 32*8)
409413   MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 8, 248)   /* based on ddragon driver */
410   MCFG_SCREEN_UPDATE_DRIVER(vball_state, screen_update_vb)
414   MCFG_SCREEN_UPDATE_DRIVER(vball_state, screen_update)
411415   MCFG_SCREEN_PALETTE("palette")
412416
413417   MCFG_GFXDECODE_ADD("gfxdecode", "palette", vb)
r243663r243664
557561ROM_END
558562
559563
560GAME( 1988, vball,    0,     vball,    vball, driver_device,    0, ROT0, "Technos Japan", "U.S. Championship V'ball (US)", 0 )
561GAME( 1988, vball2pj, vball, vball,    vball2pj, driver_device, 0, ROT0, "Technos Japan", "U.S. Championship V'ball (Japan)", 0 )
562GAME( 1988, vballb,   vball, vball,    vball, driver_device,    0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of US set)", 0 )
563GAME( 1988, vball2pjb,vball, vball,    vball, driver_device,    0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of Japan set)", 0 )
564GAME( 1988, vball,    0,     vball,    vball, driver_device,    0, ROT0, "Technos Japan", "U.S. Championship V'ball (US)", GAME_SUPPORTS_SAVE )
565GAME( 1988, vball2pj, vball, vball,    vball2pj, driver_device, 0, ROT0, "Technos Japan", "U.S. Championship V'ball (Japan)", GAME_SUPPORTS_SAVE )
566GAME( 1988, vballb,   vball, vball,    vball, driver_device,    0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of US set)", GAME_SUPPORTS_SAVE )
567GAME( 1988, vball2pjb,vball, vball,    vball, driver_device,    0, ROT0, "bootleg", "U.S. Championship V'ball (bootleg of Japan set)", GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/tecmo.h
r243663r243664
66public:
77   tecmo_state(const machine_config &mconfig, device_type type, const char *tag)
88      : driver_device(mconfig, type, tag),
9      m_txvideoram(*this, "txvideoram"),
10      m_fgvideoram(*this, "fgvideoram"),
11      m_bgvideoram(*this, "bgvideoram"),
12      m_spriteram(*this, "spriteram"),
139      m_maincpu(*this, "maincpu"),
1410      m_soundcpu(*this, "soundcpu"),
1511      m_msm(*this, "msm"),
1612      m_gfxdecode(*this, "gfxdecode"),
1713      m_palette(*this, "palette"),
18      m_sprgen(*this, "spritegen")
19      { }
14      m_sprgen(*this, "spritegen"),
15      m_txvideoram(*this, "txvideoram"),
16      m_fgvideoram(*this, "fgvideoram"),
17      m_bgvideoram(*this, "bgvideoram"),
18      m_spriteram(*this, "spriteram")   { }
2019
21   int m_adpcm_pos;
22   int m_adpcm_end;
23   int m_adpcm_data;
24   int m_video_type;
20   required_device<cpu_device> m_maincpu;
21   required_device<cpu_device> m_soundcpu;
22   optional_device<msm5205_device> m_msm;
23   required_device<gfxdecode_device> m_gfxdecode;
24   required_device<palette_device> m_palette;
25   required_device<tecmo_spr_device> m_sprgen;
26
2527   required_shared_ptr<UINT8> m_txvideoram;
2628   required_shared_ptr<UINT8> m_fgvideoram;
2729   required_shared_ptr<UINT8> m_bgvideoram;
30   required_shared_ptr<UINT8> m_spriteram;
31
2832   tilemap_t *m_tx_tilemap;
2933   tilemap_t *m_fg_tilemap;
3034   tilemap_t *m_bg_tilemap;
3135   UINT8 m_fgscroll[3];
3236   UINT8 m_bgscroll[3];
33   required_shared_ptr<UINT8> m_spriteram;
34   DECLARE_WRITE8_MEMBER(tecmo_bankswitch_w);
35   DECLARE_WRITE8_MEMBER(tecmo_sound_command_w);
36   DECLARE_WRITE8_MEMBER(tecmo_nmi_ack_w);
37   DECLARE_WRITE8_MEMBER(tecmo_adpcm_end_w);
38   DECLARE_READ8_MEMBER(tecmo_dswa_l_r);
39   DECLARE_READ8_MEMBER(tecmo_dswa_h_r);
40   DECLARE_READ8_MEMBER(tecmo_dswb_l_r);
41   DECLARE_READ8_MEMBER(tecmo_dswb_h_r);
42   DECLARE_WRITE8_MEMBER(tecmo_txvideoram_w);
43   DECLARE_WRITE8_MEMBER(tecmo_fgvideoram_w);
44   DECLARE_WRITE8_MEMBER(tecmo_bgvideoram_w);
45   DECLARE_WRITE8_MEMBER(tecmo_fgscroll_w);
46   DECLARE_WRITE8_MEMBER(tecmo_bgscroll_w);
47   DECLARE_WRITE8_MEMBER(tecmo_flipscreen_w);
48   DECLARE_WRITE8_MEMBER(tecmo_adpcm_start_w);
49   DECLARE_WRITE8_MEMBER(tecmo_adpcm_vol_w);
37   int m_adpcm_pos;
38   int m_adpcm_end;
39   int m_adpcm_data;
40   int m_video_type;
41
42   DECLARE_WRITE8_MEMBER(bankswitch_w);
43   DECLARE_WRITE8_MEMBER(sound_command_w);
44   DECLARE_WRITE8_MEMBER(nmi_ack_w);
45   DECLARE_WRITE8_MEMBER(adpcm_end_w);
46   DECLARE_READ8_MEMBER(dswa_l_r);
47   DECLARE_READ8_MEMBER(dswa_h_r);
48   DECLARE_READ8_MEMBER(dswb_l_r);
49   DECLARE_READ8_MEMBER(dswb_h_r);
50   DECLARE_WRITE8_MEMBER(txvideoram_w);
51   DECLARE_WRITE8_MEMBER(fgvideoram_w);
52   DECLARE_WRITE8_MEMBER(bgvideoram_w);
53   DECLARE_WRITE8_MEMBER(fgscroll_w);
54   DECLARE_WRITE8_MEMBER(bgscroll_w);
55   DECLARE_WRITE8_MEMBER(flipscreen_w);
56   DECLARE_WRITE8_MEMBER(adpcm_start_w);
57   DECLARE_WRITE8_MEMBER(adpcm_vol_w);
58   DECLARE_WRITE_LINE_MEMBER(adpcm_int);
59   
5060   DECLARE_DRIVER_INIT(silkworm);
5161   DECLARE_DRIVER_INIT(rygar);
5262   DECLARE_DRIVER_INIT(backfirt);
5363   DECLARE_DRIVER_INIT(gemini);
64   
5465   TILE_GET_INFO_MEMBER(get_bg_tile_info);
5566   TILE_GET_INFO_MEMBER(get_fg_tile_info);
5667   TILE_GET_INFO_MEMBER(gemini_get_bg_tile_info);
5768   TILE_GET_INFO_MEMBER(gemini_get_fg_tile_info);
5869   TILE_GET_INFO_MEMBER(get_tx_tile_info);
59   DECLARE_MACHINE_RESET(rygar);
60   DECLARE_VIDEO_START(tecmo);
61   UINT32 screen_update_tecmo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
70   
71   virtual void machine_start();
72   virtual void machine_reset();
73   virtual void video_start();
74   
75   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
6276   void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect);
63   DECLARE_WRITE_LINE_MEMBER(tecmo_adpcm_int);
64   required_device<cpu_device> m_maincpu;
65   required_device<cpu_device> m_soundcpu;
66   required_device<msm5205_device> m_msm;
67   required_device<gfxdecode_device> m_gfxdecode;
68   required_device<palette_device> m_palette;
69   required_device<tecmo_spr_device> m_sprgen;
7077};
trunk/src/mame/includes/tecmo16.h
r243663r243664
66public:
77   tecmo16_state(const machine_config &mconfig, device_type type, const char *tag)
88      : driver_device(mconfig, type, tag),
9      m_videoram(*this, "videoram"),
10      m_colorram(*this, "colorram"),
11      m_videoram2(*this, "videoram2"),
12      m_colorram2(*this, "colorram2"),
13      m_charram(*this, "charram"),
14      m_spriteram(*this, "spriteram"),
159      m_maincpu(*this, "maincpu"),
1610      m_audiocpu(*this, "audiocpu"),
1711      m_gfxdecode(*this, "gfxdecode"),
1812      m_screen(*this, "screen"),
1913      m_palette(*this, "palette"),
2014      m_sprgen(*this, "spritegen"),
21      m_mixer(*this, "mixer")
15      m_mixer(*this, "mixer"),
16      m_videoram(*this, "videoram"),
17      m_colorram(*this, "colorram"),
18      m_videoram2(*this, "videoram2"),
19      m_colorram2(*this, "colorram2"),
20      m_charram(*this, "charram"),
21      m_spriteram(*this, "spriteram")
2222   { }
2323
24   required_device<cpu_device> m_maincpu;
25   required_device<cpu_device> m_audiocpu;
26   required_device<gfxdecode_device> m_gfxdecode;
27   required_device<screen_device> m_screen;
28   required_device<palette_device> m_palette;
29   required_device<tecmo_spr_device> m_sprgen;
30   required_device<tecmo_mix_device> m_mixer;
31
2432   required_shared_ptr<UINT16> m_videoram;
2533   required_shared_ptr<UINT16> m_colorram;
2634   required_shared_ptr<UINT16> m_videoram2;
2735   required_shared_ptr<UINT16> m_colorram2;
2836   required_shared_ptr<UINT16> m_charram;
37   required_shared_ptr<UINT16> m_spriteram;
38
2939   tilemap_t *m_fg_tilemap;
3040   tilemap_t *m_bg_tilemap;
3141   tilemap_t *m_tx_tilemap;
r243663r243664
4050   UINT16 m_scroll2_y_w;
4151   UINT16 m_scroll_char_x_w;
4252   UINT16 m_scroll_char_y_w;
43   required_shared_ptr<UINT16> m_spriteram;
44   DECLARE_WRITE16_MEMBER(tecmo16_sound_command_w);
45   DECLARE_WRITE16_MEMBER(tecmo16_videoram_w);
46   DECLARE_WRITE16_MEMBER(tecmo16_colorram_w);
47   DECLARE_WRITE16_MEMBER(tecmo16_videoram2_w);
48   DECLARE_WRITE16_MEMBER(tecmo16_colorram2_w);
49   DECLARE_WRITE16_MEMBER(tecmo16_charram_w);
50   DECLARE_WRITE16_MEMBER(tecmo16_flipscreen_w);
51   DECLARE_WRITE16_MEMBER(tecmo16_scroll_x_w);
52   DECLARE_WRITE16_MEMBER(tecmo16_scroll_y_w);
53   DECLARE_WRITE16_MEMBER(tecmo16_scroll2_x_w);
54   DECLARE_WRITE16_MEMBER(tecmo16_scroll2_y_w);
55   DECLARE_WRITE16_MEMBER(tecmo16_scroll_char_x_w);
56   DECLARE_WRITE16_MEMBER(tecmo16_scroll_char_y_w);
53
54   DECLARE_WRITE16_MEMBER(sound_command_w);
55   DECLARE_WRITE16_MEMBER(videoram_w);
56   DECLARE_WRITE16_MEMBER(colorram_w);
57   DECLARE_WRITE16_MEMBER(videoram2_w);
58   DECLARE_WRITE16_MEMBER(colorram2_w);
59   DECLARE_WRITE16_MEMBER(charram_w);
60   DECLARE_WRITE16_MEMBER(flipscreen_w);
61   DECLARE_WRITE16_MEMBER(scroll_x_w);
62   DECLARE_WRITE16_MEMBER(scroll_y_w);
63   DECLARE_WRITE16_MEMBER(scroll2_x_w);
64   DECLARE_WRITE16_MEMBER(scroll2_y_w);
65   DECLARE_WRITE16_MEMBER(scroll_char_x_w);
66   DECLARE_WRITE16_MEMBER(scroll_char_y_w);
67
5768   TILE_GET_INFO_MEMBER(fg_get_tile_info);
5869   TILE_GET_INFO_MEMBER(bg_get_tile_info);
5970   TILE_GET_INFO_MEMBER(tx_get_tile_info);
71
6072   virtual void video_start();
6173   DECLARE_VIDEO_START(ginkun);
6274   DECLARE_VIDEO_START(riot);
63   UINT32 screen_update_tecmo16(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
64   required_device<cpu_device> m_maincpu;
65   required_device<cpu_device> m_audiocpu;
66   required_device<gfxdecode_device> m_gfxdecode;
67   required_device<screen_device> m_screen;
68   required_device<palette_device> m_palette;
69   required_device<tecmo_spr_device> m_sprgen;
70   required_device<tecmo_mix_device> m_mixer;
7175
76   UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
77   
78   void save_state();
7279};
trunk/src/mame/includes/vball.h
r243663r243664
33public:
44   vball_state(const machine_config &mconfig, device_type type, const char *tag)
55      : driver_device(mconfig, type, tag),
6      m_vb_attribram(*this, "vb_attribram"),
7      m_vb_videoram(*this, "vb_videoram"),
8      m_vb_scrolly_lo(*this, "vb_scrolly_lo"),
9      m_spriteram(*this, "spriteram"),
106      m_maincpu(*this, "maincpu"),
117      m_audiocpu(*this, "audiocpu"),
128      m_gfxdecode(*this, "gfxdecode"),
139      m_screen(*this, "screen"),
14      m_palette(*this, "palette"){ }
10      m_palette(*this, "palette"),
11      m_attribram(*this, "attribram"),
12      m_videoram(*this, "videoram"),
13      m_scrolly_lo(*this, "scrolly_lo"),
14      m_spriteram(*this, "spriteram") { }
1515
16   required_shared_ptr<UINT8> m_vb_attribram;
17   required_shared_ptr<UINT8> m_vb_videoram;
18   required_shared_ptr<UINT8> m_vb_scrolly_lo;
19   int m_vb_scrollx_hi;
20   int m_vb_scrolly_hi;
21   int m_vb_scrollx_lo;
16   required_device<cpu_device> m_maincpu;
17   required_device<cpu_device> m_audiocpu;
18   required_device<gfxdecode_device> m_gfxdecode;
19   required_device<screen_device> m_screen;
20   required_device<palette_device> m_palette;
21
22   required_shared_ptr<UINT8> m_attribram;
23   required_shared_ptr<UINT8> m_videoram;
24   required_shared_ptr<UINT8> m_scrolly_lo;
25   required_shared_ptr<UINT8> m_spriteram;
26   
27   int m_scrollx_hi;
28   int m_scrolly_hi;
29   int m_scrollx_lo;
2230   int m_gfxset;
23   int m_vb_scrollx[256];
24   int m_vb_bgprombank;
25   int m_vb_spprombank;
31   int m_scrollx[256];
32   int m_bgprombank;
33   int m_spprombank;
2634   tilemap_t *m_bg_tilemap;
27   required_shared_ptr<UINT8> m_spriteram;
28   DECLARE_WRITE8_MEMBER(vball_irq_ack_w);
29   DECLARE_WRITE8_MEMBER(vb_bankswitch_w);
35   
36   DECLARE_WRITE8_MEMBER(irq_ack_w);
37   DECLARE_WRITE8_MEMBER(bankswitch_w);
3038   DECLARE_WRITE8_MEMBER(cpu_sound_command_w);
31   DECLARE_WRITE8_MEMBER(vb_scrollx_hi_w);
32   DECLARE_WRITE8_MEMBER(vb_scrollx_lo_w);
33   DECLARE_WRITE8_MEMBER(vb_videoram_w);
34   DECLARE_READ8_MEMBER(vb_attrib_r);
35   DECLARE_WRITE8_MEMBER(vb_attrib_w);
39   DECLARE_WRITE8_MEMBER(scrollx_hi_w);
40   DECLARE_WRITE8_MEMBER(scrollx_lo_w);
41   DECLARE_WRITE8_MEMBER(videoram_w);
42   DECLARE_WRITE8_MEMBER(attrib_w);
43   
3644   TILEMAP_MAPPER_MEMBER(background_scan);
3745   TILE_GET_INFO_MEMBER(get_bg_tile_info);
46   
47   virtual void machine_start();
3848   virtual void video_start();
39   UINT32 screen_update_vb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
49   
50   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
4051   TIMER_DEVICE_CALLBACK_MEMBER(vball_scanline);
41   void vb_bgprombank_w( int bank );
42   void vb_spprombank_w( int bank );
43   void vb_mark_all_dirty(  );
52   void bgprombank_w(int bank);
53   void spprombank_w(int bank);
4454   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
4555   inline int scanline_to_vcount(int scanline);
46   required_device<cpu_device> m_maincpu;
47   required_device<cpu_device> m_audiocpu;
48   required_device<gfxdecode_device> m_gfxdecode;
49   required_device<screen_device> m_screen;
50   required_device<palette_device> m_palette;
5156};
trunk/src/mame/video/tecmo.c
r243663r243664
7474
7575***************************************************************************/
7676
77VIDEO_START_MEMBER(tecmo_state,tecmo)
77void tecmo_state::video_start()
7878{
7979   if (m_video_type == 2)  /* gemini */
8080   {
r243663r243664
9494
9595   m_bg_tilemap->set_scrolldx(-48,256+48);
9696   m_fg_tilemap->set_scrolldx(-48,256+48);
97   
98   save_item(NAME(m_fgscroll));
99   save_item(NAME(m_bgscroll));
97100}
98101
99102
r243663r243664
104107
105108***************************************************************************/
106109
107WRITE8_MEMBER(tecmo_state::tecmo_txvideoram_w)
110WRITE8_MEMBER(tecmo_state::txvideoram_w)
108111{
109112   m_txvideoram[offset] = data;
110113   m_tx_tilemap->mark_tile_dirty(offset & 0x3ff);
111114}
112115
113WRITE8_MEMBER(tecmo_state::tecmo_fgvideoram_w)
116WRITE8_MEMBER(tecmo_state::fgvideoram_w)
114117{
115118   m_fgvideoram[offset] = data;
116119   m_fg_tilemap->mark_tile_dirty(offset & 0x1ff);
117120}
118121
119WRITE8_MEMBER(tecmo_state::tecmo_bgvideoram_w)
122WRITE8_MEMBER(tecmo_state::bgvideoram_w)
120123{
121124   m_bgvideoram[offset] = data;
122125   m_bg_tilemap->mark_tile_dirty(offset & 0x1ff);
123126}
124127
125WRITE8_MEMBER(tecmo_state::tecmo_fgscroll_w)
128WRITE8_MEMBER(tecmo_state::fgscroll_w)
126129{
127130   m_fgscroll[offset] = data;
128131
r243663r243664
130133   m_fg_tilemap->set_scrolly(0, m_fgscroll[2]);
131134}
132135
133WRITE8_MEMBER(tecmo_state::tecmo_bgscroll_w)
136WRITE8_MEMBER(tecmo_state::bgscroll_w)
134137{
135138   m_bgscroll[offset] = data;
136139
r243663r243664
138141   m_bg_tilemap->set_scrolly(0, m_bgscroll[2]);
139142}
140143
141WRITE8_MEMBER(tecmo_state::tecmo_flipscreen_w)
144WRITE8_MEMBER(tecmo_state::flipscreen_w)
142145{
143146   flip_screen_set(data & 1);
144147}
r243663r243664
153156
154157
155158
156UINT32 tecmo_state::screen_update_tecmo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
159UINT32 tecmo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
157160{
158161   screen.priority().fill(0, cliprect);
159162   bitmap.fill(0x100, cliprect);
trunk/src/mame/video/tecmo16.c
r243663r243664
1414
1515/******************************************************************************/
1616
17
18void tecmo16_state::save_state()
19{
20   save_item(NAME(m_flipscreen));
21   save_item(NAME(m_scroll_x_w));
22   save_item(NAME(m_scroll_y_w));
23   save_item(NAME(m_scroll2_x_w));
24   save_item(NAME(m_scroll2_y_w));
25   save_item(NAME(m_scroll_char_x_w));
26   save_item(NAME(m_scroll_char_y_w));
27}
28
1729TILE_GET_INFO_MEMBER(tecmo16_state::fg_get_tile_info)
1830{
1931   int tile = m_videoram[tile_index] & 0x1fff;
r243663r243664
7082   m_tx_tilemap->set_scrolly(0,-16);
7183   m_flipscreen = 0;
7284   m_game_is_riot = 0;
85   
86   save_state();
7387}
7488
7589VIDEO_START_MEMBER(tecmo16_state,ginkun)
r243663r243664
90104   m_tx_tilemap->set_transparent_pen(0);
91105   m_flipscreen = 0;
92106   m_game_is_riot = 0;
107   
108   save_state();
93109}
94110
95111VIDEO_START_MEMBER(tecmo16_state,riot)
r243663r243664
111127   m_tx_tilemap->set_scrolldy(-16,-16);
112128   m_flipscreen = 0;
113129   m_game_is_riot = 1;
130   
131   save_state();
114132}
115133
116134/******************************************************************************/
117135
118WRITE16_MEMBER(tecmo16_state::tecmo16_videoram_w)
136WRITE16_MEMBER(tecmo16_state::videoram_w)
119137{
120138   COMBINE_DATA(&m_videoram[offset]);
121139   m_fg_tilemap->mark_tile_dirty(offset);
122140}
123141
124WRITE16_MEMBER(tecmo16_state::tecmo16_colorram_w)
142WRITE16_MEMBER(tecmo16_state::colorram_w)
125143{
126144   COMBINE_DATA(&m_colorram[offset]);
127145   m_fg_tilemap->mark_tile_dirty(offset);
128146}
129147
130WRITE16_MEMBER(tecmo16_state::tecmo16_videoram2_w)
148WRITE16_MEMBER(tecmo16_state::videoram2_w)
131149{
132150   COMBINE_DATA(&m_videoram2[offset]);
133151   m_bg_tilemap->mark_tile_dirty(offset);
134152}
135153
136WRITE16_MEMBER(tecmo16_state::tecmo16_colorram2_w)
154WRITE16_MEMBER(tecmo16_state::colorram2_w)
137155{
138156   COMBINE_DATA(&m_colorram2[offset]);
139157   m_bg_tilemap->mark_tile_dirty(offset);
140158}
141159
142160
143WRITE16_MEMBER(tecmo16_state::tecmo16_charram_w)
161WRITE16_MEMBER(tecmo16_state::charram_w)
144162{
145163   COMBINE_DATA(&m_charram[offset]);
146164   m_tx_tilemap->mark_tile_dirty(offset);
147165}
148166
149WRITE16_MEMBER(tecmo16_state::tecmo16_flipscreen_w)
167WRITE16_MEMBER(tecmo16_state::flipscreen_w)
150168{
151169   m_flipscreen = data & 0x01;
152170   flip_screen_set(m_flipscreen);
r243663r243664
154172
155173/******************************************************************************/
156174
157WRITE16_MEMBER(tecmo16_state::tecmo16_scroll_x_w)
175WRITE16_MEMBER(tecmo16_state::scroll_x_w)
158176{
159177   COMBINE_DATA(&m_scroll_x_w);
160178   m_fg_tilemap->set_scrollx(0,m_scroll_x_w);
161179}
162180
163WRITE16_MEMBER(tecmo16_state::tecmo16_scroll_y_w)
181WRITE16_MEMBER(tecmo16_state::scroll_y_w)
164182{
165183   COMBINE_DATA(&m_scroll_y_w);
166184   m_fg_tilemap->set_scrolly(0,m_scroll_y_w);
167185}
168186
169WRITE16_MEMBER(tecmo16_state::tecmo16_scroll2_x_w)
187WRITE16_MEMBER(tecmo16_state::scroll2_x_w)
170188{
171189   COMBINE_DATA(&m_scroll2_x_w);
172190   m_bg_tilemap->set_scrollx(0,m_scroll2_x_w);
173191}
174192
175WRITE16_MEMBER(tecmo16_state::tecmo16_scroll2_y_w)
193WRITE16_MEMBER(tecmo16_state::scroll2_y_w)
176194{
177195   COMBINE_DATA(&m_scroll2_y_w);
178196   m_bg_tilemap->set_scrolly(0,m_scroll2_y_w);
179197}
180198
181WRITE16_MEMBER(tecmo16_state::tecmo16_scroll_char_x_w)
199WRITE16_MEMBER(tecmo16_state::scroll_char_x_w)
182200{
183201   COMBINE_DATA(&m_scroll_char_x_w);
184202   m_tx_tilemap->set_scrollx(0,m_scroll_char_x_w);
185203}
186204
187WRITE16_MEMBER(tecmo16_state::tecmo16_scroll_char_y_w)
205WRITE16_MEMBER(tecmo16_state::scroll_char_y_w)
188206{
189207   COMBINE_DATA(&m_scroll_char_y_w);
190208   m_tx_tilemap->set_scrolly(0,m_scroll_char_y_w-16);
r243663r243664
195213
196214/******************************************************************************/
197215
198UINT32 tecmo16_state::screen_update_tecmo16(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
216UINT32 tecmo16_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
199217{
200218   m_tile_bitmap_bg.fill(0, cliprect);
201219   m_tile_bitmap_fg.fill(0, cliprect);
trunk/src/mame/video/vball.c
r243663r243664
2727
2828TILE_GET_INFO_MEMBER(vball_state::get_bg_tile_info)
2929{
30   UINT8 code = m_vb_videoram[tile_index];
31   UINT8 attr = m_vb_attribram[tile_index];
30   UINT8 code = m_videoram[tile_index];
31   UINT8 attr = m_attribram[tile_index];
3232   SET_TILE_INFO_MEMBER(0,
3333         code + ((attr & 0x1f) << 8) + (m_gfxset<<8),
3434         (attr >> 5) & 0x7,
r243663r243664
4242
4343   m_bg_tilemap->set_scroll_rows(32);
4444   m_gfxset=0;
45   m_vb_bgprombank=0xff;
46   m_vb_spprombank=0xff;
45   m_bgprombank=0xff;
46   m_spprombank=0xff;
47   
48   save_item(NAME(m_scrollx_hi));
49   save_item(NAME(m_scrolly_hi));
50   save_item(NAME(m_scrollx_lo));
51   save_item(NAME(m_gfxset));
52   save_item(NAME(m_scrollx));
53   save_item(NAME(m_bgprombank));
54   save_item(NAME(m_spprombank));
4755}
4856
49WRITE8_MEMBER(vball_state::vb_videoram_w)
57WRITE8_MEMBER(vball_state::videoram_w)
5058{
51   m_vb_videoram[offset] = data;
59   m_videoram[offset] = data;
5260   m_bg_tilemap->mark_tile_dirty(offset);
5361}
5462
55#ifdef UNUSED_FUNCTION
56READ8_MEMBER(vball_state::vb_attrib_r)
63WRITE8_MEMBER(vball_state::attrib_w)
5764{
58   return m_vb_attribram[offset];
59}
60#endif
61
62WRITE8_MEMBER(vball_state::vb_attrib_w)
63{
64   m_vb_attribram[offset] = data;
65   m_attribram[offset] = data;
6566   m_bg_tilemap->mark_tile_dirty(offset);
6667}
6768
68void vball_state::vb_bgprombank_w( int bank )
69void vball_state::bgprombank_w( int bank )
6970{
7071   int i;
7172   UINT8* color_prom;
7273
73   if (bank==m_vb_bgprombank) return;
74   if (bank==m_bgprombank) return;
7475
7576   color_prom = memregion("proms")->base() + bank*0x80;
7677   for (i=0;i<128;i++, color_prom++) {
7778      m_palette->set_pen_color(i,pal4bit(color_prom[0] >> 0),pal4bit(color_prom[0] >> 4),
7879                  pal4bit(color_prom[0x800] >> 0));
7980   }
80   m_vb_bgprombank=bank;
81   m_bgprombank=bank;
8182}
8283
83void vball_state::vb_spprombank_w( int bank )
84void vball_state::spprombank_w( int bank )
8485{
8586   int i;
8687   UINT8* color_prom;
8788
88   if (bank==m_vb_spprombank) return;
89   if (bank==m_spprombank) return;
8990
9091   color_prom = memregion("proms")->base()+0x400 + bank*0x80;
9192   for (i=128;i<256;i++,color_prom++)  {
9293      m_palette->set_pen_color(i,pal4bit(color_prom[0] >> 0),pal4bit(color_prom[0] >> 4),
9394                  pal4bit(color_prom[0x800] >> 0));
9495   }
95   m_vb_spprombank=bank;
96   m_spprombank=bank;
9697}
9798
98void vball_state::vb_mark_all_dirty(  )
99{
100   m_bg_tilemap->mark_all_dirty();
101}
10299
103100#define DRAW_SPRITE( order, sx, sy ) gfx->transpen(bitmap,\
104101               cliprect, \
r243663r243664
150147
151148#undef DRAW_SPRITE
152149
153UINT32 vball_state::screen_update_vb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
150UINT32 vball_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
154151{
155152   int i;
156153
157   m_bg_tilemap->set_scrolly(0,m_vb_scrolly_hi + *m_vb_scrolly_lo);
154   m_bg_tilemap->set_scrolly(0,m_scrolly_hi + *m_scrolly_lo);
158155
159156   /*To get linescrolling to work properly, we must ignore the 1st two scroll values, no idea why! -SJE */
160157   for (i = 2; i < 256; i++) {
161      m_bg_tilemap->set_scrollx(i,m_vb_scrollx[i-2]);
162      //logerror("scrollx[%d] = %d\n",i,m_vb_scrollx[i]);
158      m_bg_tilemap->set_scrollx(i,m_scrollx[i-2]);
159      //logerror("scrollx[%d] = %d\n",i,m_scrollx[i]);
163160   }
164161   m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0);
165162   draw_sprites(bitmap,cliprect);


Previous 199869 Revisions Next


© 1997-2024 The MAME Team