Previous 199869 Revisions Next

r36345 Monday 9th March, 2015 at 17:20:12 UTC by Osso
tsamurai.c: added save state support (nw)
[src/mame/drivers]tsamurai.c
[src/mame/includes]tsamurai.h
[src/mame/video]tsamurai.c

trunk/src/mame/drivers/tsamurai.c
r244856r244857
1313character column scroll feature that I have added. Its used to scroll in
1414the "660" logo on the title screen at the beginning. Not sure if Samurai
1515at al use it but it's likely their boards have the feature. Extra banking
16of the forground is done using an extra register. A bit in the background
16of the foreground is done using an extra register. A bit in the background
1717video RAM selects the additional background character space.
1818
1919The sound board is similar. There are 3 CPU's instead of the 2 of Samurai.
r244856r244857
4141#include "includes/tsamurai.h"
4242
4343
44void tsamurai_state::machine_start()
45{
46   save_item(NAME(m_nmi_enabled));
47}
48
49MACHINE_START_MEMBER(tsamurai_state, tsamurai)
50{
51   save_item(NAME(m_sound_command1));
52   save_item(NAME(m_sound_command2));
53   machine_start();
54}
55
56MACHINE_START_MEMBER(tsamurai_state, m660)
57{
58   MACHINE_START_CALL_MEMBER(tsamurai);
59   save_item(NAME(m_sound_command3));
60}
61
62MACHINE_START_MEMBER(tsamurai_state, vsgongf)
63{
64   save_item(NAME(m_vsgongf_sound_nmi_enabled));
65   machine_start();
66}
67
4468WRITE8_MEMBER(tsamurai_state::nmi_enable_w)
4569{
4670   m_nmi_enabled = data;
4771}
4872
49INTERRUPT_GEN_MEMBER(tsamurai_state::samurai_interrupt)
73INTERRUPT_GEN_MEMBER(tsamurai_state::interrupt)
5074{
5175   if (m_nmi_enabled) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
5276}
5377
54READ8_MEMBER(tsamurai_state::unknown_d803_r)
78READ8_MEMBER(tsamurai_state::tsamurai_unknown_d803_r)
5579{
5680   return 0x6b;
5781}
5882
59READ8_MEMBER(tsamurai_state::unknown_d803_m660_r)
83READ8_MEMBER(tsamurai_state::m660_unknown_d803_r)
6084{
6185   return 0x53;     // this is what the bootleg patches in.
6286}
r244856r244857
88112   m_audio2->set_input_line(0, HOLD_LINE );
89113}
90114
91WRITE8_MEMBER(tsamurai_state::sound_command3_w)
115WRITE8_MEMBER(tsamurai_state::m660_sound_command3_w)
92116{
93117   m_sound_command3 = data;
94118   m_audio3->set_input_line(0, HOLD_LINE );
r244856r244857
99123   flip_screen_set(data);
100124}
101125
102WRITE8_MEMBER(tsamurai_state::tsamurai_coin_counter_w)
126WRITE8_MEMBER(tsamurai_state::coincounter_w)
103127{
104128   coin_counter_w(machine(), offset,data);
105129}
r244856r244857
110134   AM_RANGE(0xc000, 0xcfff) AM_RAM
111135
112136   /* protection? - there are writes as well...*/
113   AM_RANGE(0xd803, 0xd803) AM_READ(unknown_d803_r)
137   AM_RANGE(0xd803, 0xd803) AM_READ(tsamurai_unknown_d803_r)
114138   AM_RANGE(0xd806, 0xd806) AM_READ(unknown_d806_r)
115139   AM_RANGE(0xd900, 0xd900) AM_READ(unknown_d900_r)
116140   AM_RANGE(0xd938, 0xd938) AM_READ(unknown_d938_r)
117141
118   AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(tsamurai_fg_videoram_w) AM_SHARE("videoram")
119   AM_RANGE(0xe400, 0xe43f) AM_RAM_WRITE(tsamurai_fg_colorram_w) AM_SHARE("colorram")
142   AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("videoram")
143   AM_RANGE(0xe400, 0xe43f) AM_RAM_WRITE(fg_colorram_w) AM_SHARE("colorram")
120144   AM_RANGE(0xe440, 0xe7ff) AM_RAM
121   AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(tsamurai_bg_videoram_w) AM_SHARE("bg_videoram")
145   AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
122146   AM_RANGE(0xf000, 0xf3ff) AM_RAM AM_SHARE("spriteram")
123147
124148   AM_RANGE(0xf400, 0xf400) AM_WRITENOP
r244856r244857
126150   AM_RANGE(0xf402, 0xf402) AM_WRITE(sound_command2_w)
127151
128152   AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1")
129   AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE(tsamurai_bgcolor_w)
130   AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") AM_WRITE(tsamurai_scrolly_w)
131   AM_RANGE(0xf803, 0xf803) AM_WRITE(tsamurai_scrollx_w)
153   AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE(bgcolor_w)
154   AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") AM_WRITE(scrolly_w)
155   AM_RANGE(0xf803, 0xf803) AM_WRITE(scrollx_w)
132156   AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW1")
133157   AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW2")
134158
135159   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(flip_screen_w)
136160   AM_RANGE(0xfc01, 0xfc01) AM_WRITE(nmi_enable_w)
137   AM_RANGE(0xfc02, 0xfc02) AM_WRITE(tsamurai_textbank1_w)
138   AM_RANGE(0xfc03, 0xfc04) AM_WRITE(tsamurai_coin_counter_w)
161   AM_RANGE(0xfc02, 0xfc02) AM_WRITE(textbank1_w)
162   AM_RANGE(0xfc03, 0xfc04) AM_WRITE(coincounter_w)
139163ADDRESS_MAP_END
140164
141165static ADDRESS_MAP_START( m660_map, AS_PROGRAM, 8, tsamurai_state )
r244856r244857
143167   AM_RANGE(0xc000, 0xcfff) AM_RAM
144168
145169   /* protection? - there are writes as well...*/
146   AM_RANGE(0xd803, 0xd803) AM_READ(unknown_d803_m660_r)
170   AM_RANGE(0xd803, 0xd803) AM_READ(m660_unknown_d803_r)
147171   AM_RANGE(0xd806, 0xd806) AM_READ(unknown_d806_r)
148172   AM_RANGE(0xd900, 0xd900) AM_READ(unknown_d900_r)
149173   AM_RANGE(0xd938, 0xd938) AM_READ(unknown_d938_r)
150174
151   AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(tsamurai_fg_videoram_w) AM_SHARE("videoram")
152   AM_RANGE(0xe400, 0xe43f) AM_RAM_WRITE(tsamurai_fg_colorram_w) AM_SHARE("colorram")
175   AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("videoram")
176   AM_RANGE(0xe400, 0xe43f) AM_RAM_WRITE(fg_colorram_w) AM_SHARE("colorram")
153177   AM_RANGE(0xe440, 0xe7ff) AM_RAM
154   AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(tsamurai_bg_videoram_w) AM_SHARE("bg_videoram")
178   AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
155179   AM_RANGE(0xf000, 0xf3ff) AM_RAM AM_SHARE("spriteram")
156180
157181   AM_RANGE(0xf400, 0xf400) AM_WRITENOP/* This is always written with F401, F402 & F403 data */
158   AM_RANGE(0xf401, 0xf401) AM_WRITE(sound_command3_w)
182   AM_RANGE(0xf401, 0xf401) AM_WRITE(m660_sound_command3_w)
159183   AM_RANGE(0xf402, 0xf402) AM_WRITE(sound_command2_w)
160184   AM_RANGE(0xf403, 0xf403) AM_WRITE(sound_command1_w)
161185
162186   AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1")
163   AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE(tsamurai_bgcolor_w)
164   AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") AM_WRITE(tsamurai_scrolly_w)
165   AM_RANGE(0xf803, 0xf803) AM_WRITE(tsamurai_scrollx_w)
187   AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE(bgcolor_w)
188   AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") AM_WRITE(scrolly_w)
189   AM_RANGE(0xf803, 0xf803) AM_WRITE(scrollx_w)
166190   AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW1")
167191   AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW2")
168192
169193   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(flip_screen_w)
170194   AM_RANGE(0xfc01, 0xfc01) AM_WRITE(nmi_enable_w)
171   AM_RANGE(0xfc02, 0xfc02) AM_WRITE(tsamurai_textbank1_w)
172   AM_RANGE(0xfc03, 0xfc04) AM_WRITE(tsamurai_coin_counter_w)
173   AM_RANGE(0xfc07, 0xfc07) AM_WRITE(tsamurai_textbank2_w)/* Mission 660 uses a bit here */
195   AM_RANGE(0xfc02, 0xfc02) AM_WRITE(textbank1_w)
196   AM_RANGE(0xfc03, 0xfc04) AM_WRITE(coincounter_w)
197   AM_RANGE(0xfc07, 0xfc07) AM_WRITE(m660_textbank2_w)/* Mission 660 uses a bit here */
174198ADDRESS_MAP_END
175199
176200static ADDRESS_MAP_START( z80_io_map, AS_IO, 8, tsamurai_state )
r244856r244857
200224   return m_sound_command2;
201225}
202226
203READ8_MEMBER(tsamurai_state::sound_command3_r)
227READ8_MEMBER(tsamurai_state::m660_sound_command3_r)
204228{
205229   return m_sound_command3;
206230}
r244856r244857
248272
249273static ADDRESS_MAP_START( sound3_m660_map, AS_PROGRAM, 8, tsamurai_state )
250274   AM_RANGE(0x0000, 0x7fff) AM_ROM
251   AM_RANGE(0xc000, 0xc000) AM_READ(sound_command3_r)
275   AM_RANGE(0xc000, 0xc000) AM_READ(m660_sound_command3_r)
252276   AM_RANGE(0xc001, 0xc001) AM_WRITENOP /* ? - probably clear IRQ */
253277   AM_RANGE(0x8000, 0x87ff) AM_RAM
254278   AM_RANGE(0xfffc, 0xffff) AM_RAM /* CPU writes here - music data */
r244856r244857
307331   AM_RANGE(0xa006, 0xa006) AM_READ(vsgongf_a006_r) /* protection */
308332   AM_RANGE(0xa100, 0xa100) AM_READ(vsgongf_a100_r) /* protection */
309333   AM_RANGE(0xc000, 0xc7ff) AM_RAM                  /* work ram */
310   AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(tsamurai_fg_videoram_w) AM_SHARE("videoram")
334   AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("videoram")
311335   AM_RANGE(0xe400, 0xe43f) AM_RAM AM_SHARE("spriteram")
312336   AM_RANGE(0xe440, 0xe47b) AM_RAM
313337   AM_RANGE(0xe800, 0xe800) AM_WRITE(vsgongf_sound_command_w)
r244856r244857
324348   AM_RANGE(0xf803, 0xf803) AM_WRITENOP /* vreg? always 0 */
325349   AM_RANGE(0xfc00, 0xfc00) AM_RAM /* vreg? always 0 */
326350   AM_RANGE(0xfc01, 0xfc01) AM_WRITE(nmi_enable_w)
327   AM_RANGE(0xfc02, 0xfc03) AM_WRITE(tsamurai_coin_counter_w)
328   AM_RANGE(0xfc04, 0xfc04) AM_WRITE(tsamurai_textbank1_w)
351   AM_RANGE(0xfc02, 0xfc03) AM_WRITE(coincounter_w)
352   AM_RANGE(0xfc04, 0xfc04) AM_WRITE(textbank1_w)
329353ADDRESS_MAP_END
330354
331355static ADDRESS_MAP_START( sound_vsgongf_map, AS_PROGRAM, 8, tsamurai_state )
r244856r244857
680704   MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz/8)
681705   MCFG_CPU_PROGRAM_MAP(main_map)
682706   MCFG_CPU_IO_MAP(z80_io_map)
683   MCFG_CPU_VBLANK_INT_DRIVER("screen", tsamurai_state,  samurai_interrupt)
707   MCFG_CPU_VBLANK_INT_DRIVER("screen", tsamurai_state,  interrupt)
684708
685709   MCFG_CPU_ADD("audiocpu", Z80, XTAL_24MHz/8)
686710   MCFG_CPU_PROGRAM_MAP(sound1_map)
687711
688712   MCFG_CPU_ADD("audio2", Z80, XTAL_24MHz/8)
689713   MCFG_CPU_PROGRAM_MAP(sound2_map)
714   
715   MCFG_MACHINE_START_OVERRIDE(tsamurai_state,tsamurai)
690716
691717   /* video hardware */
692718   MCFG_SCREEN_ADD("screen", RASTER)
r244856r244857
694720   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
695721   MCFG_SCREEN_SIZE(32*8, 32*8)
696722   MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8)
697   MCFG_SCREEN_UPDATE_DRIVER(tsamurai_state, screen_update_tsamurai)
723   MCFG_SCREEN_UPDATE_DRIVER(tsamurai_state, screen_update)
698724   MCFG_SCREEN_PALETTE("palette")
699725
700726   MCFG_GFXDECODE_ADD("gfxdecode", "palette", tsamurai)
r244856r244857
720746   /* basic machine hardware */
721747   MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz/8)
722748   MCFG_CPU_PROGRAM_MAP(vsgongf_map)
723   MCFG_CPU_VBLANK_INT_DRIVER("screen", tsamurai_state,  samurai_interrupt)
749   MCFG_CPU_VBLANK_INT_DRIVER("screen", tsamurai_state,  interrupt)
724750
725751   MCFG_CPU_ADD("audiocpu", Z80, XTAL_24MHz/8)
726752   MCFG_CPU_PROGRAM_MAP(sound_vsgongf_map)
727753   MCFG_CPU_IO_MAP(vsgongf_audio_io_map)
728754   MCFG_CPU_PERIODIC_INT_DRIVER(tsamurai_state, vsgongf_sound_interrupt, 3*60)
755   
756   MCFG_MACHINE_START_OVERRIDE(tsamurai_state,vsgongf)
729757
730758   /* video hardware */
731759   MCFG_SCREEN_ADD("screen", RASTER)
r244856r244857
757785   MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz/8)
758786   MCFG_CPU_PROGRAM_MAP(m660_map)
759787   MCFG_CPU_IO_MAP(z80_m660_io_map)
760   MCFG_CPU_VBLANK_INT_DRIVER("screen", tsamurai_state,  samurai_interrupt)
788   MCFG_CPU_VBLANK_INT_DRIVER("screen", tsamurai_state,  interrupt)
761789
762790   MCFG_CPU_ADD("audiocpu", Z80, XTAL_24MHz/8)
763791   MCFG_CPU_PROGRAM_MAP(sound1_m660_map)
r244856r244857
769797   MCFG_CPU_PROGRAM_MAP(sound3_m660_map)
770798   MCFG_CPU_IO_MAP(sound3_m660_io_map)
771799   MCFG_CPU_VBLANK_INT_DRIVER("screen", tsamurai_state,  nmi_line_pulse)
800   
801   MCFG_MACHINE_START_OVERRIDE(tsamurai_state,m660)
772802
773803   /* video hardware */
774804   MCFG_SCREEN_ADD("screen", RASTER)
r244856r244857
776806   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
777807   MCFG_SCREEN_SIZE(32*8, 32*8)
778808   MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8)
779   MCFG_SCREEN_UPDATE_DRIVER(tsamurai_state, screen_update_tsamurai)
809   MCFG_SCREEN_UPDATE_DRIVER(tsamurai_state, screen_update)
780810   MCFG_SCREEN_PALETTE("palette")
781811
782812   MCFG_GFXDECODE_ADD("gfxdecode", "palette", tsamurai)
783813   MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", 256)
784   MCFG_VIDEO_START_OVERRIDE(tsamurai_state,tsamurai)
814   MCFG_VIDEO_START_OVERRIDE(tsamurai_state,m660)
785815
786816   /* sound hardware */
787817   MCFG_SPEAKER_STANDARD_MONO("mono")
r244856r244857
12321262   ROM_LOAD( "clr.6p",  0x200, 0x0100, CRC(0e4fd17a) SHA1(d4e32bd9dd903177af61f77976a25c5db1467bba) )
12331263ROM_END
12341264
1235GAME( 1984, vsgongf,  0,        vsgongf,  vsgongf, driver_device,  0, ROT90, "Kaneko", "VS Gong Fight", GAME_IMPERFECT_COLORS )
1236GAME( 1984, ringfgt,  vsgongf,  vsgongf,  vsgongf, driver_device,  0, ROT90, "Kaneko (Taito license)", "Ring Fighter (set 1)", GAME_IMPERFECT_COLORS )
1237GAME( 1984, ringfgt2, vsgongf,  vsgongf,  vsgongf, driver_device,  0, ROT90, "Kaneko (Taito license)", "Ring Fighter (set 2)", GAME_IMPERFECT_COLORS )
1265GAME( 1984, vsgongf,  0,        vsgongf,  vsgongf, driver_device,  0, ROT90, "Kaneko", "VS Gong Fight", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
1266GAME( 1984, ringfgt,  vsgongf,  vsgongf,  vsgongf, driver_device,  0, ROT90, "Kaneko (Taito license)", "Ring Fighter (set 1)", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
1267GAME( 1984, ringfgt2, vsgongf,  vsgongf,  vsgongf, driver_device,  0, ROT90, "Kaneko (Taito license)", "Ring Fighter (set 2)", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
12381268
1239GAME( 1985, tsamurai, 0,        tsamurai, tsamurai, driver_device, 0, ROT90, "Kaneko / Taito", "Samurai Nihon-Ichi (set 1)", 0 )
1240GAME( 1985, tsamurai2,tsamurai, tsamurai, tsamurai, driver_device, 0, ROT90, "Kaneko / Taito", "Samurai Nihon-Ichi (set 2)", 0 )
1241GAME( 1985, tsamuraih,tsamurai, tsamurai, tsamurai, driver_device, 0, ROT90, "bootleg", "Samurai Nihon-Ichi (bootleg, harder)", 0 )
1269GAME( 1985, tsamurai, 0,        tsamurai, tsamurai, driver_device, 0, ROT90, "Kaneko / Taito", "Samurai Nihon-Ichi (set 1)", GAME_SUPPORTS_SAVE )
1270GAME( 1985, tsamurai2,tsamurai, tsamurai, tsamurai, driver_device, 0, ROT90, "Kaneko / Taito", "Samurai Nihon-Ichi (set 2)", GAME_SUPPORTS_SAVE )
1271GAME( 1985, tsamuraih,tsamurai, tsamurai, tsamurai, driver_device, 0, ROT90, "bootleg", "Samurai Nihon-Ichi (bootleg, harder)", GAME_SUPPORTS_SAVE )
12421272
1243GAME( 1985, ladymstr, 0,        tsamurai, ladymstr, driver_device, 0, ROT90, "Kaneko / Taito", "Lady Master of Kung Fu", 0 )
1244GAME( 1985, nunchaku, ladymstr, tsamurai, nunchaku, driver_device, 0, ROT90, "Kaneko / Taito", "Nunchackun", GAME_IMPERFECT_COLORS )
1273GAME( 1985, ladymstr, 0,        tsamurai, ladymstr, driver_device, 0, ROT90, "Kaneko / Taito", "Lady Master of Kung Fu", GAME_SUPPORTS_SAVE )
1274GAME( 1985, nunchaku, ladymstr, tsamurai, nunchaku, driver_device, 0, ROT90, "Kaneko / Taito", "Nunchackun", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
12451275
1246GAME( 1985, yamagchi, 0,        tsamurai, yamagchi, driver_device, 0, ROT90, "Kaneko / Taito", "Go Go Mr. Yamaguchi / Yuke Yuke Yamaguchi-kun", GAME_IMPERFECT_COLORS )
1276GAME( 1985, yamagchi, 0,        tsamurai, yamagchi, driver_device, 0, ROT90, "Kaneko / Taito", "Go Go Mr. Yamaguchi / Yuke Yuke Yamaguchi-kun", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
12471277
1248GAME( 1986, m660,     0,        m660,     m660, driver_device,     0, ROT90, "Wood Place Inc. (Taito America Corporation license)", "Mission 660 (US)", 0 )
1249GAME( 1986, m660j,    m660,     m660,     m660, driver_device,     0, ROT90, "Wood Place Inc. (Taito Corporation license)", "Mission 660 (Japan)", 0 )
1250GAME( 1986, m660b,    m660,     m660,     m660, driver_device,     0, ROT90, "bootleg", "Mission 660 (bootleg)", 0 )
1251GAME( 1986, alphaxz,  m660,     m660,     m660, driver_device,     0, ROT90, "Ed Co. Ltd. (Wood Place Inc. license)", "The Alphax Z (Japan)", 0 )
1278GAME( 1986, m660,     0,        m660,     m660, driver_device,     0, ROT90, "Wood Place Inc. (Taito America Corporation license)", "Mission 660 (US)", GAME_SUPPORTS_SAVE )
1279GAME( 1986, m660j,    m660,     m660,     m660, driver_device,     0, ROT90, "Wood Place Inc. (Taito Corporation license)", "Mission 660 (Japan)", GAME_SUPPORTS_SAVE )
1280GAME( 1986, m660b,    m660,     m660,     m660, driver_device,     0, ROT90, "bootleg", "Mission 660 (bootleg)", GAME_SUPPORTS_SAVE )
1281GAME( 1986, alphaxz,  m660,     m660,     m660, driver_device,     0, ROT90, "Ed Co. Ltd. (Wood Place Inc. license)", "The Alphax Z (Japan)", GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/tsamurai.h
r244856r244857
33public:
44   tsamurai_state(const machine_config &mconfig, device_type type, const char *tag)
55      : driver_device(mconfig, type, tag),
6      m_videoram(*this, "videoram"),
7      m_colorram(*this, "colorram"),
8      m_bg_videoram(*this, "bg_videoram"),
9      m_spriteram(*this, "spriteram"),
106      m_maincpu(*this, "maincpu"),
117      m_audiocpu(*this, "audiocpu"),
128      m_audio2(*this, "audio2"),
139      m_audio3(*this, "audio3"),
1410      m_gfxdecode(*this, "gfxdecode"),
15      m_palette(*this, "palette") { }
11      m_palette(*this, "palette"),
12      m_videoram(*this, "videoram"),
13      m_colorram(*this, "colorram"),
14      m_bg_videoram(*this, "bg_videoram"),
15      m_spriteram(*this, "spriteram") { }
1616
17   int m_nmi_enabled;
18   int m_sound_command1;
19   int m_sound_command2;
20   int m_sound_command3;
21   int m_vsgongf_sound_nmi_enabled;
17   required_device<cpu_device> m_maincpu;
18   required_device<cpu_device> m_audiocpu;
19   optional_device<cpu_device> m_audio2;
20   optional_device<cpu_device> m_audio3;
21   required_device<gfxdecode_device> m_gfxdecode;
22   required_device<palette_device> m_palette;
23
2224   required_shared_ptr<UINT8> m_videoram;
2325   optional_shared_ptr<UINT8> m_colorram;
2426   optional_shared_ptr<UINT8> m_bg_videoram;
25   int m_bgcolor;
26   int m_textbank1;
27   int m_textbank2;
27   required_shared_ptr<UINT8> m_spriteram;
28
2829   tilemap_t *m_background;
2930   tilemap_t *m_foreground;
31   
32   //common
3033   int m_flicker;
34   int m_textbank1;
35   int m_nmi_enabled;
36   
37   // tsamurai and m660 specific
38   int m_bgcolor;
39   int m_sound_command1;
40   int m_sound_command2;
41   
42   //m660 specific
43   int m_textbank2;
44   int m_sound_command3;
45   
46   //vsgongf specific
47   int m_vsgongf_sound_nmi_enabled;
3148   int m_vsgongf_color;
32   int m_key_count;
33   required_shared_ptr<UINT8> m_spriteram;
49   int m_key_count; //debug only
50   
51   // common
3452   DECLARE_WRITE8_MEMBER(nmi_enable_w);
35   DECLARE_READ8_MEMBER(unknown_d803_r);
36   DECLARE_READ8_MEMBER(unknown_d803_m660_r);
53   DECLARE_WRITE8_MEMBER(coincounter_w);
54   DECLARE_WRITE8_MEMBER(textbank1_w);
55   DECLARE_WRITE8_MEMBER(fg_videoram_w);
56
57   // tsamurai and m660 specific
58   DECLARE_WRITE8_MEMBER(bg_videoram_w);
59   DECLARE_WRITE8_MEMBER(fg_colorram_w);
60   DECLARE_WRITE8_MEMBER(flip_screen_w);
61   DECLARE_WRITE8_MEMBER(scrolly_w);
62   DECLARE_WRITE8_MEMBER(scrollx_w);
63   DECLARE_WRITE8_MEMBER(bgcolor_w);
3764   DECLARE_READ8_MEMBER(unknown_d806_r);
3865   DECLARE_READ8_MEMBER(unknown_d900_r);
3966   DECLARE_READ8_MEMBER(unknown_d938_r);
4067   DECLARE_WRITE8_MEMBER(sound_command1_w);
4168   DECLARE_WRITE8_MEMBER(sound_command2_w);
42   DECLARE_WRITE8_MEMBER(sound_command3_w);
43   DECLARE_WRITE8_MEMBER(flip_screen_w);
44   DECLARE_WRITE8_MEMBER(tsamurai_coin_counter_w);
4569   DECLARE_READ8_MEMBER(sound_command1_r);
4670   DECLARE_READ8_MEMBER(sound_command2_r);
47   DECLARE_READ8_MEMBER(sound_command3_r);
71   
72   // tsamurai specific
73   DECLARE_READ8_MEMBER(tsamurai_unknown_d803_r);
74   
75   // m660 specific
76   DECLARE_WRITE8_MEMBER(m660_textbank2_w);
77   DECLARE_READ8_MEMBER(m660_unknown_d803_r);
78   DECLARE_WRITE8_MEMBER(m660_sound_command3_w);
79   DECLARE_READ8_MEMBER(m660_sound_command3_r);
80   
81   // vsgongf specific
82   DECLARE_WRITE8_MEMBER(vsgongf_color_w);
4883   DECLARE_WRITE8_MEMBER(vsgongf_sound_nmi_enable_w);
4984   DECLARE_READ8_MEMBER(vsgongf_a006_r);
5085   DECLARE_READ8_MEMBER(vsgongf_a100_r);
5186   DECLARE_WRITE8_MEMBER(vsgongf_sound_command_w);
52   DECLARE_WRITE8_MEMBER(tsamurai_scrolly_w);
53   DECLARE_WRITE8_MEMBER(tsamurai_scrollx_w);
54   DECLARE_WRITE8_MEMBER(tsamurai_bgcolor_w);
55   DECLARE_WRITE8_MEMBER(tsamurai_textbank1_w);
56   DECLARE_WRITE8_MEMBER(tsamurai_textbank2_w);
57   DECLARE_WRITE8_MEMBER(tsamurai_bg_videoram_w);
58   DECLARE_WRITE8_MEMBER(tsamurai_fg_videoram_w);
59   DECLARE_WRITE8_MEMBER(tsamurai_fg_colorram_w);
60   DECLARE_WRITE8_MEMBER(vsgongf_color_w);
87   
6188   TILE_GET_INFO_MEMBER(get_bg_tile_info);
6289   TILE_GET_INFO_MEMBER(get_fg_tile_info);
6390   TILE_GET_INFO_MEMBER(get_vsgongf_tile_info);
91   
92   virtual void machine_start();
93   DECLARE_MACHINE_START(m660);
94   DECLARE_MACHINE_START(tsamurai);
95   DECLARE_MACHINE_START(vsgongf);
96   virtual void video_start();
97   DECLARE_VIDEO_START(m660);
6498   DECLARE_VIDEO_START(tsamurai);
6599   DECLARE_VIDEO_START(vsgongf);
66   UINT32 screen_update_tsamurai(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
100   
101   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
67102   UINT32 screen_update_vsgongf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
68   INTERRUPT_GEN_MEMBER(samurai_interrupt);
103   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
104   
105   INTERRUPT_GEN_MEMBER(interrupt);
69106   INTERRUPT_GEN_MEMBER(vsgongf_sound_interrupt);
70   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
71   required_device<cpu_device> m_maincpu;
72   required_device<cpu_device> m_audiocpu;
73   optional_device<cpu_device> m_audio2;
74   optional_device<cpu_device> m_audio3;
75   required_device<gfxdecode_device> m_gfxdecode;
76   required_device<palette_device> m_palette;
77107};
trunk/src/mame/video/tsamurai.c
r244856r244857
4242
4343***************************************************************************/
4444
45VIDEO_START_MEMBER(tsamurai_state,tsamurai)
45void tsamurai_state::video_start()
4646{
47   //save_item(NAME(m_flicker));
48   save_item(NAME(m_textbank1));
49}
50
51VIDEO_START_MEMBER(tsamurai_state, tsamurai)
52{
4753   m_background = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tsamurai_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32);
4854   m_foreground = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tsamurai_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32);
4955
5056   m_background->set_transparent_pen(0);
5157   m_foreground->set_transparent_pen(0);
58   
59   save_item(NAME(m_bgcolor));
60   video_start();
5261}
5362
63VIDEO_START_MEMBER(tsamurai_state, m660)
64{
65   VIDEO_START_CALL_MEMBER(tsamurai);
66   
67   save_item(NAME(m_textbank2));
68}
5469
70
5571/***************************************************************************
5672
5773  Memory handlers
5874
5975***************************************************************************/
6076
61WRITE8_MEMBER(tsamurai_state::tsamurai_scrolly_w)
77WRITE8_MEMBER(tsamurai_state::scrolly_w)
6278{
6379   m_background->set_scrolly(0, data );
6480}
6581
66WRITE8_MEMBER(tsamurai_state::tsamurai_scrollx_w)
82WRITE8_MEMBER(tsamurai_state::scrollx_w)
6783{
6884   m_background->set_scrollx(0, data );
6985}
7086
71WRITE8_MEMBER(tsamurai_state::tsamurai_bgcolor_w)
87WRITE8_MEMBER(tsamurai_state::bgcolor_w)
7288{
7389   m_bgcolor = data;
7490}
7591
76WRITE8_MEMBER(tsamurai_state::tsamurai_textbank1_w)
92WRITE8_MEMBER(tsamurai_state::textbank1_w)
7793{
7894   if( m_textbank1!=data )
7995   {
r244856r244857
8298   }
8399}
84100
85WRITE8_MEMBER(tsamurai_state::tsamurai_textbank2_w)
101WRITE8_MEMBER(tsamurai_state::m660_textbank2_w)
86102{
87103   if( m_textbank2!=data )
88104   {
r244856r244857
91107   }
92108}
93109
94WRITE8_MEMBER(tsamurai_state::tsamurai_bg_videoram_w)
110WRITE8_MEMBER(tsamurai_state::bg_videoram_w)
95111{
96112   m_bg_videoram[offset]=data;
97113   offset = offset/2;
98114   m_background->mark_tile_dirty(offset);
99115}
100WRITE8_MEMBER(tsamurai_state::tsamurai_fg_videoram_w)
116WRITE8_MEMBER(tsamurai_state::fg_videoram_w)
101117{
102118   m_videoram[offset]=data;
103119   m_foreground->mark_tile_dirty(offset);
104120}
105WRITE8_MEMBER(tsamurai_state::tsamurai_fg_colorram_w)
121WRITE8_MEMBER(tsamurai_state::fg_colorram_w)
106122{
107123   if( m_colorram[offset]!=data )
108124   {
r244856r244857
126142
127143void tsamurai_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect )
128144{
129   UINT8 *spriteram = m_spriteram;
130145   gfx_element *gfx = m_gfxdecode->gfx(2);
131   const UINT8 *source = spriteram+32*4-4;
132   const UINT8 *finish = spriteram; /* ? */
146   const UINT8 *source = m_spriteram+32*4-4;
147   const UINT8 *finish = m_spriteram; /* ? */
133148   m_flicker = 1-m_flicker;
134149
135150   while( source>=finish )
r244856r244857
183198   }
184199}
185200
186UINT32 tsamurai_state::screen_update_tsamurai(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
201UINT32 tsamurai_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
187202{
188203   int i;
189204
r244856r244857
241256VIDEO_START_MEMBER(tsamurai_state,vsgongf)
242257{
243258   m_foreground = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tsamurai_state::get_vsgongf_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32);
259   
260   save_item(NAME(m_vsgongf_color));
261   video_start();
244262}
245263
246264UINT32 tsamurai_state::screen_update_vsgongf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)


Previous 199869 Revisions Next


© 1997-2024 The MAME Team