Previous 199869 Revisions Next

r36844 Tuesday 31st March, 2015 at 18:50:11 UTC by Osso
niyanpai.c: added save state support, configured banking and removed some trampolines (nw)
[src/mame/drivers]niyanpai.c
[src/mame/includes]niyanpai.h
[src/mame/video]niyanpai.c

trunk/src/mame/drivers/niyanpai.c
r245355r245356
4444#include "includes/niyanpai.h"
4545
4646
47void niyanpai_state::niyanpai_soundbank_w(int data)
47WRITE16_MEMBER(niyanpai_state::sound_w)
4848{
49   UINT8 *SNDROM = memregion("audiocpu")->base();
50
51   membank("bank1")->set_base(&SNDROM[0x08000 + (0x8000 * (data & 0x03))]);
52}
53
54READ8_MEMBER(niyanpai_state::niyanpai_sound_r)
55{
56   return soundlatch_byte_r(space, 0);
57}
58
59WRITE16_MEMBER(niyanpai_state::niyanpai_sound_w)
60{
6149   soundlatch_byte_w(space, 0, ((data >> 8) & 0xff));
6250}
6351
64WRITE8_MEMBER(niyanpai_state::niyanpai_soundclr_w)
52WRITE8_MEMBER(niyanpai_state::soundbank_w)
6553{
66   soundlatch_clear_byte_w(space, 0, 0);
54   membank("soundbank")->set_entry(data & 0x03);
6755}
6856
69
70READ8_MEMBER(niyanpai_state::cpu_portd_r)
57WRITE8_MEMBER(niyanpai_state::soundlatch_clear_w)
7158{
72   return niyanpai_sound_r(space, 0);
59   if (!(data & 0x01)) soundlatch_clear_byte_w(space, 0, 0);
7360}
7461
75WRITE8_MEMBER(niyanpai_state::cpu_porta_w)
76{
77   niyanpai_soundbank_w(data & 0x03);
78}
7962
80WRITE8_MEMBER(niyanpai_state::cpu_portb_w)
81{
82   m_dac1->write_unsigned8(data);
83}
84
85WRITE8_MEMBER(niyanpai_state::cpu_portc_w)
86{
87   m_dac2->write_unsigned8(data);
88}
89
90WRITE8_MEMBER(niyanpai_state::cpu_porte_w)
91{
92   if (!(data & 0x01)) niyanpai_soundclr_w(space, 0, 0);
93}
94
95
96void niyanpai_state::machine_reset()
97{
98}
99
10063DRIVER_INIT_MEMBER(niyanpai_state,niyanpai)
10164{
10265   UINT8 *SNDROM = memregion("audiocpu")->base();
r245355r245356
10568   SNDROM[0x0213] = 0x00;          // DI -> NOP
10669
10770   // initialize sound rom bank
108   niyanpai_soundbank_w(0);
71   membank("soundbank")->configure_entries(0, 2, memregion("audiocpu")->base() + 0x8000, 0x8000);
72   membank("soundbank")->set_entry(0);
10973
11074   // initialize out coin flag (musobana)
11175   m_musobana_outcoin_flag = 1;
11276}
11377
11478
115READ16_MEMBER(niyanpai_state::niyanpai_dipsw_r)
79READ16_MEMBER(niyanpai_state::dipsw_r)
11680{
11781   UINT8 dipsw_a, dipsw_b;
11882
r245355r245356
12993   return ((dipsw_a << 8) | dipsw_b);
13094}
13195
96MACHINE_START_MEMBER(niyanpai_state, musobana)
97{
98   save_item(NAME(m_motor_on));
99   save_item(NAME(m_musobana_inputport));
100   save_item(NAME(m_musobana_outcoin_flag));
101}
102
132103READ16_MEMBER(niyanpai_state::musobana_inputport_0_r)
133104{
134105   int portdata;
r245355r245356
177148   AM_RANGE(0x000000, 0x03ffff) AM_ROM
178149   AM_RANGE(0x040000, 0x040fff) AM_RAM AM_SHARE("nvram")
179150
180   AM_RANGE(0x0a0000, 0x0a08ff) AM_READWRITE(niyanpai_palette_r,niyanpai_palette_w)
151   AM_RANGE(0x0a0000, 0x0a08ff) AM_READWRITE(palette_r,palette_w)
181152   AM_RANGE(0x0a0900, 0x0a11ff) AM_RAM // palette work ram?
182153
183154   AM_RANGE(0x0bf800, 0x0bffff) AM_RAM
184155
185   AM_RANGE(0x200000, 0x200001) AM_WRITE(niyanpai_sound_w)
156   AM_RANGE(0x200000, 0x200001) AM_WRITE(sound_w)
186157
187158   AM_RANGE(0x200200, 0x200201) AM_WRITENOP            // unknown
188159   AM_RANGE(0x240000, 0x240009) AM_WRITENOP            // unknown
189160   AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP            // unknown
190161
191   AM_RANGE(0x240400, 0x240403) AM_READ8(niyanpai_blitter_0_r, 0x00ff)
192   AM_RANGE(0x240400, 0x24041f) AM_WRITE8(niyanpai_blitter_0_w, 0x00ff)
193   AM_RANGE(0x240420, 0x24043f) AM_WRITE8(niyanpai_clut_0_w, 0x00ff)
194   AM_RANGE(0x240600, 0x240603) AM_READ8(niyanpai_blitter_1_r, 0x00ff)
195   AM_RANGE(0x240600, 0x24061f) AM_WRITE8(niyanpai_blitter_1_w, 0x00ff)
196   AM_RANGE(0x240620, 0x24063f) AM_WRITE8(niyanpai_clut_1_w, 0x00ff)
197   AM_RANGE(0x240800, 0x240803) AM_READ8(niyanpai_blitter_2_r, 0x00ff)
198   AM_RANGE(0x240800, 0x24081f) AM_WRITE8(niyanpai_blitter_2_w, 0x00ff)
199   AM_RANGE(0x240820, 0x24083f) AM_WRITE8(niyanpai_clut_2_w, 0x00ff)
200   AM_RANGE(0x280000, 0x280001) AM_READ(niyanpai_dipsw_r)
162   AM_RANGE(0x240400, 0x240403) AM_READ8(blitter_0_r, 0x00ff)
163   AM_RANGE(0x240400, 0x24041f) AM_WRITE8(blitter_0_w, 0x00ff)
164   AM_RANGE(0x240420, 0x24043f) AM_WRITE8(clut_0_w, 0x00ff)
165   AM_RANGE(0x240600, 0x240603) AM_READ8(blitter_1_r, 0x00ff)
166   AM_RANGE(0x240600, 0x24061f) AM_WRITE8(blitter_1_w, 0x00ff)
167   AM_RANGE(0x240620, 0x24063f) AM_WRITE8(clut_1_w, 0x00ff)
168   AM_RANGE(0x240800, 0x240803) AM_READ8(blitter_2_r, 0x00ff)
169   AM_RANGE(0x240800, 0x24081f) AM_WRITE8(blitter_2_w, 0x00ff)
170   AM_RANGE(0x240820, 0x24083f) AM_WRITE8(clut_2_w, 0x00ff)
171   AM_RANGE(0x280000, 0x280001) AM_READ(dipsw_r)
201172
202173   AM_RANGE(0x280200, 0x280201) AM_READ_PORT("P1_P2")
203174   AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
204   AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(niyanpai_clutsel_0_w, 0x00ff)
205   AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(niyanpai_clutsel_1_w, 0x00ff)
206   AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(niyanpai_clutsel_2_w, 0x00ff)
175   AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(clutsel_0_w, 0x00ff)
176   AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(clutsel_1_w, 0x00ff)
177   AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(clutsel_2_w, 0x00ff)
207178
208179   AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w)  // TMP68301 Registers
209180ADDRESS_MAP_END
r245355r245356
212183   AM_RANGE(0x000000, 0x03ffff) AM_ROM
213184   AM_RANGE(0x040000, 0x040fff) AM_RAM
214185
215   AM_RANGE(0x0a0000, 0x0a08ff) AM_READWRITE(niyanpai_palette_r,niyanpai_palette_w)
186   AM_RANGE(0x0a0000, 0x0a08ff) AM_READWRITE(palette_r,palette_w)
216187   AM_RANGE(0x0a0900, 0x0a11ff) AM_RAM             // palette work ram?
217188
218189   AM_RANGE(0x0a8000, 0x0a87ff) AM_RAM AM_SHARE("nvram")
219190   AM_RANGE(0x0bf800, 0x0bffff) AM_RAM
220191
221   AM_RANGE(0x200000, 0x200001) AM_WRITE(niyanpai_sound_w)
192   AM_RANGE(0x200000, 0x200001) AM_WRITE(sound_w)
222193
223194   AM_RANGE(0x200200, 0x200201) AM_WRITE(musobana_inputport_w) // inputport select
224195   AM_RANGE(0x240000, 0x240009) AM_WRITENOP            // unknown
225196   AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP            // unknown
226197
227   AM_RANGE(0x240400, 0x240403) AM_READ8(niyanpai_blitter_0_r, 0x00ff)
228   AM_RANGE(0x240400, 0x24041f) AM_WRITE8(niyanpai_blitter_0_w, 0x00ff)
229   AM_RANGE(0x240420, 0x24043f) AM_WRITE8(niyanpai_clut_0_w, 0x00ff)
198   AM_RANGE(0x240400, 0x240403) AM_READ8(blitter_0_r, 0x00ff)
199   AM_RANGE(0x240400, 0x24041f) AM_WRITE8(blitter_0_w, 0x00ff)
200   AM_RANGE(0x240420, 0x24043f) AM_WRITE8(clut_0_w, 0x00ff)
230201
231   AM_RANGE(0x240600, 0x240603) AM_READ8(niyanpai_blitter_1_r, 0x00ff)
232   AM_RANGE(0x240600, 0x24061f) AM_WRITE8(niyanpai_blitter_1_w, 0x00ff)
233   AM_RANGE(0x240620, 0x24063f) AM_WRITE8(niyanpai_clut_1_w, 0x00ff)
202   AM_RANGE(0x240600, 0x240603) AM_READ8(blitter_1_r, 0x00ff)
203   AM_RANGE(0x240600, 0x24061f) AM_WRITE8(blitter_1_w, 0x00ff)
204   AM_RANGE(0x240620, 0x24063f) AM_WRITE8(clut_1_w, 0x00ff)
234205
235   AM_RANGE(0x240800, 0x240803) AM_READ8(niyanpai_blitter_2_r, 0x00ff)
236   AM_RANGE(0x240800, 0x24081f) AM_WRITE8(niyanpai_blitter_2_w, 0x00ff)
237   AM_RANGE(0x240820, 0x24083f) AM_WRITE8(niyanpai_clut_2_w, 0x00ff)
238   AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(niyanpai_clutsel_0_w, 0x00ff)
239   AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(niyanpai_clutsel_1_w, 0x00ff)
240   AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(niyanpai_clutsel_2_w, 0x00ff)
206   AM_RANGE(0x240800, 0x240803) AM_READ8(blitter_2_r, 0x00ff)
207   AM_RANGE(0x240800, 0x24081f) AM_WRITE8(blitter_2_w, 0x00ff)
208   AM_RANGE(0x240820, 0x24083f) AM_WRITE8(clut_2_w, 0x00ff)
209   AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(clutsel_0_w, 0x00ff)
210   AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(clutsel_1_w, 0x00ff)
211   AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(clutsel_2_w, 0x00ff)
241212
242   AM_RANGE(0x280000, 0x280001) AM_READ(niyanpai_dipsw_r)
213   AM_RANGE(0x280000, 0x280001) AM_READ(dipsw_r)
243214   AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r)
244215   AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
245216
r245355r245356
250221   AM_RANGE(0x000000, 0x03ffff) AM_ROM
251222   AM_RANGE(0x040000, 0x040fff) AM_RAM
252223
253   AM_RANGE(0x060000, 0x0608ff) AM_READWRITE(niyanpai_palette_r,niyanpai_palette_w)
224   AM_RANGE(0x060000, 0x0608ff) AM_READWRITE(palette_r,palette_w)
254225   AM_RANGE(0x060900, 0x0611ff) AM_RAM             // palette work ram?
255226   AM_RANGE(0x07f800, 0x07ffff) AM_RAM
256227
257228   AM_RANGE(0x0a8000, 0x0a87ff) AM_RAM AM_SHARE("nvram")
258229   AM_RANGE(0x0bf000, 0x0bffff) AM_RAM
259230
260   AM_RANGE(0x200000, 0x200001) AM_WRITE(niyanpai_sound_w)
231   AM_RANGE(0x200000, 0x200001) AM_WRITE(sound_w)
261232
262233   AM_RANGE(0x200200, 0x200201) AM_WRITE(musobana_inputport_w) // inputport select
263234   AM_RANGE(0x240000, 0x240009) AM_WRITENOP            // unknown
264235   AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP            // unknown
265236
266   AM_RANGE(0x240400, 0x240403) AM_READ8(niyanpai_blitter_0_r, 0x00ff)
267   AM_RANGE(0x240400, 0x24041f) AM_WRITE8(niyanpai_blitter_0_w, 0x00ff)
268   AM_RANGE(0x240420, 0x24043f) AM_WRITE8(niyanpai_clut_0_w, 0x00ff)
237   AM_RANGE(0x240400, 0x240403) AM_READ8(blitter_0_r, 0x00ff)
238   AM_RANGE(0x240400, 0x24041f) AM_WRITE8(blitter_0_w, 0x00ff)
239   AM_RANGE(0x240420, 0x24043f) AM_WRITE8(clut_0_w, 0x00ff)
269240
270   AM_RANGE(0x240600, 0x240603) AM_READ8(niyanpai_blitter_1_r, 0x00ff)
271   AM_RANGE(0x240600, 0x24061f) AM_WRITE8(niyanpai_blitter_1_w, 0x00ff)
272   AM_RANGE(0x240620, 0x24063f) AM_WRITE8(niyanpai_clut_1_w, 0x00ff)
241   AM_RANGE(0x240600, 0x240603) AM_READ8(blitter_1_r, 0x00ff)
242   AM_RANGE(0x240600, 0x24061f) AM_WRITE8(blitter_1_w, 0x00ff)
243   AM_RANGE(0x240620, 0x24063f) AM_WRITE8(clut_1_w, 0x00ff)
273244
274   AM_RANGE(0x240800, 0x240803) AM_READ8(niyanpai_blitter_2_r, 0x00ff)
275   AM_RANGE(0x240800, 0x24081f) AM_WRITE8(niyanpai_blitter_2_w, 0x00ff)
276   AM_RANGE(0x240820, 0x24083f) AM_WRITE8(niyanpai_clut_2_w, 0x00ff)
245   AM_RANGE(0x240800, 0x240803) AM_READ8(blitter_2_r, 0x00ff)
246   AM_RANGE(0x240800, 0x24081f) AM_WRITE8(blitter_2_w, 0x00ff)
247   AM_RANGE(0x240820, 0x24083f) AM_WRITE8(clut_2_w, 0x00ff)
277248
278   AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(niyanpai_clutsel_0_w, 0x00ff)
279   AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(niyanpai_clutsel_1_w, 0x00ff)
280   AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(niyanpai_clutsel_2_w, 0x00ff)
249   AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(clutsel_0_w, 0x00ff)
250   AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(clutsel_1_w, 0x00ff)
251   AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(clutsel_2_w, 0x00ff)
281252
282   AM_RANGE(0x280000, 0x280001) AM_READ(niyanpai_dipsw_r)
253   AM_RANGE(0x280000, 0x280001) AM_READ(dipsw_r)
283254   AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r)
284255   AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
285256
r245355r245356
290261   AM_RANGE(0x000000, 0x03ffff) AM_ROM
291262   AM_RANGE(0x0ff000, 0x0fffff) AM_RAM
292263
293   AM_RANGE(0x0e0000, 0x0e08ff) AM_READWRITE(niyanpai_palette_r,niyanpai_palette_w)
264   AM_RANGE(0x0e0000, 0x0e08ff) AM_READWRITE(palette_r,palette_w)
294265   AM_RANGE(0x0e0900, 0x0e11ff) AM_RAM             // palette work ram?
295266
296267   AM_RANGE(0x0a8000, 0x0a87ff) AM_RAM AM_SHARE("nvram")
297268   AM_RANGE(0x0c0000, 0x0cffff) AM_RAM
298269
299   AM_RANGE(0x200000, 0x200001) AM_WRITE(niyanpai_sound_w)
270   AM_RANGE(0x200000, 0x200001) AM_WRITE(sound_w)
300271
301272   AM_RANGE(0x200200, 0x200201) AM_WRITE(musobana_inputport_w) // inputport select
302273   AM_RANGE(0x240000, 0x240009) AM_WRITENOP            // unknown
303274   AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP            // unknown
304275
305   AM_RANGE(0x240400, 0x240403) AM_READ8(niyanpai_blitter_0_r, 0x00ff)
306   AM_RANGE(0x240400, 0x24041f) AM_WRITE8(niyanpai_blitter_0_w, 0x00ff)
307   AM_RANGE(0x240420, 0x24043f) AM_WRITE8(niyanpai_clut_0_w, 0x00ff)
276   AM_RANGE(0x240400, 0x240403) AM_READ8(blitter_0_r, 0x00ff)
277   AM_RANGE(0x240400, 0x24041f) AM_WRITE8(blitter_0_w, 0x00ff)
278   AM_RANGE(0x240420, 0x24043f) AM_WRITE8(clut_0_w, 0x00ff)
308279
309   AM_RANGE(0x240600, 0x240603) AM_READ8(niyanpai_blitter_1_r, 0x00ff)
310   AM_RANGE(0x240600, 0x24061f) AM_WRITE8(niyanpai_blitter_1_w, 0x00ff)
311   AM_RANGE(0x240620, 0x24063f) AM_WRITE8(niyanpai_clut_1_w, 0x00ff)
280   AM_RANGE(0x240600, 0x240603) AM_READ8(blitter_1_r, 0x00ff)
281   AM_RANGE(0x240600, 0x24061f) AM_WRITE8(blitter_1_w, 0x00ff)
282   AM_RANGE(0x240620, 0x24063f) AM_WRITE8(clut_1_w, 0x00ff)
312283
313   AM_RANGE(0x240800, 0x240803) AM_READ8(niyanpai_blitter_2_r, 0x00ff)
314   AM_RANGE(0x240800, 0x24081f) AM_WRITE8(niyanpai_blitter_2_w, 0x00ff)
315   AM_RANGE(0x240820, 0x24083f) AM_WRITE8(niyanpai_clut_2_w, 0x00ff)
284   AM_RANGE(0x240800, 0x240803) AM_READ8(blitter_2_r, 0x00ff)
285   AM_RANGE(0x240800, 0x24081f) AM_WRITE8(blitter_2_w, 0x00ff)
286   AM_RANGE(0x240820, 0x24083f) AM_WRITE8(clut_2_w, 0x00ff)
316287
317   AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(niyanpai_clutsel_0_w, 0x00ff)
318   AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(niyanpai_clutsel_1_w, 0x00ff)
319   AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(niyanpai_clutsel_2_w, 0x00ff)
288   AM_RANGE(0x240a00, 0x240a01) AM_WRITE8(clutsel_0_w, 0x00ff)
289   AM_RANGE(0x240c00, 0x240c01) AM_WRITE8(clutsel_1_w, 0x00ff)
290   AM_RANGE(0x240e00, 0x240e01) AM_WRITE8(clutsel_2_w, 0x00ff)
320291
321   AM_RANGE(0x280000, 0x280001) AM_READ(niyanpai_dipsw_r)
292   AM_RANGE(0x280000, 0x280001) AM_READ(dipsw_r)
322293   AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r)
323294   AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
324295
r245355r245356
329300static ADDRESS_MAP_START( niyanpai_sound_map, AS_PROGRAM, 8, niyanpai_state )
330301   AM_RANGE(0x0000, 0x77ff) AM_ROM
331302   AM_RANGE(0x7800, 0x7fff) AM_RAM
332   AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
303   AM_RANGE(0x8000, 0xffff) AM_ROMBANK("soundbank")
333304ADDRESS_MAP_END
334305
335306static ADDRESS_MAP_START( niyanpai_sound_io_map, AS_IO, 8, niyanpai_state )
r245355r245356
755726INPUT_PORTS_END
756727
757728
758INTERRUPT_GEN_MEMBER(niyanpai_state::niyanpai_interrupt)
729INTERRUPT_GEN_MEMBER(niyanpai_state::interrupt)
759730{
760731   m_tmp68301->external_interrupt_0();
761732}
r245355r245356
771742   /* basic machine hardware */
772743   MCFG_CPU_ADD("maincpu", M68000, 12288000/2) /* TMP68301, 6.144 MHz */
773744   MCFG_CPU_PROGRAM_MAP(niyanpai_map)
774   MCFG_CPU_VBLANK_INT_DRIVER("screen", niyanpai_state,  niyanpai_interrupt)
745   MCFG_CPU_VBLANK_INT_DRIVER("screen", niyanpai_state,  interrupt)
775746   MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("tmp68301",tmp68301_device,irq_callback)
776747
777748   MCFG_DEVICE_ADD("tmp68301", TMP68301, 0)
r245355r245356
781752   MCFG_CPU_CONFIG(daisy_chain_sound)
782753   MCFG_CPU_PROGRAM_MAP(niyanpai_sound_map)
783754   MCFG_CPU_IO_MAP(niyanpai_sound_io_map)
784   MCFG_TMPZ84C011_PORTD_READ_CB(READ8(niyanpai_state, cpu_portd_r))
785   MCFG_TMPZ84C011_PORTA_WRITE_CB(WRITE8(niyanpai_state, cpu_porta_w))
786   MCFG_TMPZ84C011_PORTB_WRITE_CB(WRITE8(niyanpai_state, cpu_portb_w))
787   MCFG_TMPZ84C011_PORTC_WRITE_CB(WRITE8(niyanpai_state, cpu_portc_w))
788   MCFG_TMPZ84C011_PORTE_WRITE_CB(WRITE8(niyanpai_state, cpu_porte_w))
755   MCFG_TMPZ84C011_PORTD_READ_CB(READ8(niyanpai_state, soundlatch_byte_r))
756   MCFG_TMPZ84C011_PORTA_WRITE_CB(WRITE8(niyanpai_state, soundbank_w))
757   MCFG_TMPZ84C011_PORTB_WRITE_CB(DEVWRITE8("dac1", dac_device, write_unsigned8))
758   MCFG_TMPZ84C011_PORTC_WRITE_CB(DEVWRITE8("dac2", dac_device, write_unsigned8))
759   MCFG_TMPZ84C011_PORTE_WRITE_CB(WRITE8(niyanpai_state, soundlatch_clear_w))
789760   MCFG_TMPZ84C011_ZC0_CB(DEVWRITELINE("audiocpu", tmpz84c011_device, trg3))
790761
791762   MCFG_NVRAM_ADD_0FILL("nvram")
r245355r245356
796767   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
797768   MCFG_SCREEN_SIZE(1024, 512)
798769   MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1)
799   MCFG_SCREEN_UPDATE_DRIVER(niyanpai_state, screen_update_niyanpai)
770   MCFG_SCREEN_UPDATE_DRIVER(niyanpai_state, screen_update)
800771   MCFG_SCREEN_PALETTE("palette")
801772
802773   MCFG_PALETTE_ADD("palette", 256*3)
r245355r245356
819790   /* basic machine hardware */
820791   MCFG_CPU_MODIFY("maincpu")
821792   MCFG_CPU_PROGRAM_MAP(musobana_map)
793   
794   MCFG_MACHINE_START_OVERRIDE(niyanpai_state, musobana)
822795MACHINE_CONFIG_END
823796
824static MACHINE_CONFIG_DERIVED( mhhonban, niyanpai )
797static MACHINE_CONFIG_DERIVED( mhhonban, musobana )
825798
826799   /* basic machine hardware */
827800   MCFG_CPU_MODIFY("maincpu")
828801   MCFG_CPU_PROGRAM_MAP(mhhonban_map)
829802MACHINE_CONFIG_END
830803
831static MACHINE_CONFIG_DERIVED( zokumahj, niyanpai )
804static MACHINE_CONFIG_DERIVED( zokumahj, musobana )
832805
833806   /* basic machine hardware */
834807   MCFG_CPU_MODIFY("maincpu")
r245355r245356
930903ROM_END
931904
932905
933GAME( 1996, niyanpai, 0,        niyanpai, niyanpai, niyanpai_state, niyanpai, ROT0, "Nichibutsu", "Niyanpai (Japan)", 0 )
934GAME( 1995, musobana, 0,        musobana, musobana, niyanpai_state, niyanpai, ROT0, "Nichibutsu / Yubis", "Musoubana (Japan)", 0 )
935GAME( 1994, 4psimasy, 0,        musobana, 4psimasy, niyanpai_state, niyanpai, ROT0, "Sphinx / AV Japan", "Mahjong 4P Simasyo (Japan)", 0 )
936GAME( 199?, mhhonban, 0,        mhhonban, mhhonban, niyanpai_state, niyanpai, ROT0, "Nichibutsu?", "Mahjong Housoukyoku Honbanchuu (Japan)", 0 )
937GAME( 199?, zokumahj, mhhonban, zokumahj, zokumahj, niyanpai_state, niyanpai, ROT0, "Nichibutsu?", "Zoku Mahjong Housoukyoku (Japan)", 0 )
906GAME( 1996, niyanpai, 0,        niyanpai, niyanpai, niyanpai_state, niyanpai, ROT0, "Nichibutsu", "Niyanpai (Japan)", GAME_SUPPORTS_SAVE )
907GAME( 1995, musobana, 0,        musobana, musobana, niyanpai_state, niyanpai, ROT0, "Nichibutsu / Yubis", "Musoubana (Japan)", GAME_SUPPORTS_SAVE )
908GAME( 1994, 4psimasy, 0,        musobana, 4psimasy, niyanpai_state, niyanpai, ROT0, "Sphinx / AV Japan", "Mahjong 4P Simasyo (Japan)", GAME_SUPPORTS_SAVE )
909GAME( 199?, mhhonban, 0,        mhhonban, mhhonban, niyanpai_state, niyanpai, ROT0, "Nichibutsu?", "Mahjong Housoukyoku Honbanchuu (Japan)", GAME_SUPPORTS_SAVE )
910GAME( 199?, zokumahj, mhhonban, zokumahj, zokumahj, niyanpai_state, niyanpai, ROT0, "Nichibutsu?", "Zoku Mahjong Housoukyoku (Japan)", GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/niyanpai.h
r245355r245356
1919      m_screen(*this, "screen"),
2020      m_palette(*this, "palette") { }
2121
22   int m_musobana_inputport;
23   int m_musobana_outcoin_flag;
22   required_device<cpu_device> m_maincpu;
23   required_device<tmp68301_device> m_tmp68301;
24   required_device<dac_device> m_dac1;
25   required_device<dac_device> m_dac2;
26   required_device<screen_device> m_screen;
27   required_device<palette_device> m_palette;
2428
29   // common
2530   int m_scrollx[VRAM_MAX];
2631   int m_scrolly[VRAM_MAX];
2732   int m_blitter_destx[VRAM_MAX];
r245355r245356
4550   UINT16 *m_palette_ptr;
4651   UINT8 *m_clut[VRAM_MAX];
4752   int m_flipscreen_old[VRAM_MAX];
48   DECLARE_READ8_MEMBER(niyanpai_sound_r);
49   DECLARE_WRITE16_MEMBER(niyanpai_sound_w);
50   DECLARE_WRITE8_MEMBER(niyanpai_soundclr_w);
51
52   DECLARE_READ8_MEMBER(cpu_portd_r);
53   DECLARE_WRITE8_MEMBER(cpu_porta_w);
54   DECLARE_WRITE8_MEMBER(cpu_portb_w);
55   DECLARE_WRITE8_MEMBER(cpu_portc_w);
56   DECLARE_WRITE8_MEMBER(cpu_porte_w);
57
58   DECLARE_READ16_MEMBER(niyanpai_dipsw_r);
53   emu_timer *m_blitter_timer;
54   
55   // musobana and derived machine configs
56   int m_musobana_inputport;
57   int m_musobana_outcoin_flag;
58   UINT8 m_motor_on;
59   
60   // common
61   DECLARE_WRITE16_MEMBER(sound_w);
62   DECLARE_WRITE8_MEMBER(soundbank_w);
63   DECLARE_WRITE8_MEMBER(soundlatch_clear_w);
64   DECLARE_READ16_MEMBER(dipsw_r);
65   DECLARE_READ16_MEMBER(palette_r);
66   DECLARE_WRITE16_MEMBER(palette_w);
67   DECLARE_WRITE8_MEMBER(blitter_0_w);
68   DECLARE_WRITE8_MEMBER(blitter_1_w);
69   DECLARE_WRITE8_MEMBER(blitter_2_w);
70   DECLARE_READ8_MEMBER(blitter_0_r);
71   DECLARE_READ8_MEMBER(blitter_1_r);
72   DECLARE_READ8_MEMBER(blitter_2_r);
73   DECLARE_WRITE8_MEMBER(clut_0_w);
74   DECLARE_WRITE8_MEMBER(clut_1_w);
75   DECLARE_WRITE8_MEMBER(clut_2_w);
76   DECLARE_WRITE8_MEMBER(clutsel_0_w);
77   DECLARE_WRITE8_MEMBER(clutsel_1_w);
78   DECLARE_WRITE8_MEMBER(clutsel_2_w);
79   DECLARE_WRITE16_MEMBER(tmp68301_parallel_port_w);
80   
81   // musobana and derived machine configs
5982   DECLARE_READ16_MEMBER(musobana_inputport_0_r);
6083   DECLARE_WRITE16_MEMBER(musobana_inputport_w);
61   DECLARE_READ16_MEMBER(niyanpai_palette_r);
62   DECLARE_WRITE16_MEMBER(niyanpai_palette_w);
63   DECLARE_WRITE8_MEMBER(niyanpai_blitter_0_w);
64   DECLARE_WRITE8_MEMBER(niyanpai_blitter_1_w);
65   DECLARE_WRITE8_MEMBER(niyanpai_blitter_2_w);
66   DECLARE_READ8_MEMBER(niyanpai_blitter_0_r);
67   DECLARE_READ8_MEMBER(niyanpai_blitter_1_r);
68   DECLARE_READ8_MEMBER(niyanpai_blitter_2_r);
69   DECLARE_WRITE8_MEMBER(niyanpai_clut_0_w);
70   DECLARE_WRITE8_MEMBER(niyanpai_clut_1_w);
71   DECLARE_WRITE8_MEMBER(niyanpai_clut_2_w);
72   DECLARE_WRITE8_MEMBER(niyanpai_clutsel_0_w);
73   DECLARE_WRITE8_MEMBER(niyanpai_clutsel_1_w);
74   DECLARE_WRITE8_MEMBER(niyanpai_clutsel_2_w);
84
7585   DECLARE_CUSTOM_INPUT_MEMBER(musobana_outcoin_flag_r);
86
7687   DECLARE_DRIVER_INIT(niyanpai);
77   DECLARE_WRITE16_MEMBER(tmp68301_parallel_port_w);
78   UINT8 m_motor_on;
79   virtual void machine_reset();
8088   virtual void video_start();
81   UINT32 screen_update_niyanpai(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
82   INTERRUPT_GEN_MEMBER(niyanpai_interrupt);
83   int niyanpai_blitter_r(int vram, int offset);
84   void niyanpai_blitter_w(int vram, int offset, UINT8 data);
85   void niyanpai_clutsel_w(int vram, UINT8 data);
86   void niyanpai_clut_w(int vram, int offset, UINT8 data);
87   void niyanpai_vramflip(int vram);
89   DECLARE_MACHINE_START(musobana);
90
91   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
92   int blitter_r(int vram, int offset);
93   void blitter_w(int vram, int offset, UINT8 data);
94   void clutsel_w(int vram, UINT8 data);
95   void clut_w(int vram, int offset, UINT8 data);
96   void vramflip(int vram);
8897   void update_pixel(int vram, int x, int y);
89   void niyanpai_gfxdraw(int vram);
90   void niyanpai_soundbank_w(int data);
91   required_device<cpu_device> m_maincpu;
92   required_device<tmp68301_device> m_tmp68301;
93   required_device<dac_device> m_dac1;
94   required_device<dac_device> m_dac2;
95   required_device<screen_device> m_screen;
96   required_device<palette_device> m_palette;
98   void gfxdraw(int vram);
9799
100   INTERRUPT_GEN_MEMBER(interrupt);
101
98102protected:
99103   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
100104};
trunk/src/mame/video/niyanpai.c
r245355r245356
1313
1414
1515******************************************************************************/
16READ16_MEMBER(niyanpai_state::niyanpai_palette_r)
16READ16_MEMBER(niyanpai_state::palette_r)
1717{
1818   return m_palette_ptr[offset];
1919}
2020
21WRITE16_MEMBER(niyanpai_state::niyanpai_palette_w)
21WRITE16_MEMBER(niyanpai_state::palette_w)
2222{
2323   int r, g, b;
2424   int offs_h, offs_l;
r245355r245356
5757
5858
5959******************************************************************************/
60int niyanpai_state::niyanpai_blitter_r(int vram, int offset)
60int niyanpai_state::blitter_r(int vram, int offset)
6161{
6262   int ret;
6363   UINT8 *GFXROM = memregion("gfx1")->base();
r245355r245356
7272   return ret;
7373}
7474
75void niyanpai_state::niyanpai_blitter_w(int vram, int offset, UINT8 data)
75void niyanpai_state::blitter_w(int vram, int offset, UINT8 data)
7676{
7777   switch (offset)
7878   {
r245355r245356
8484            //  if (data & 0x20) popmessage("Unknown GFX Flag!! (0x20)");
8585               m_flipscreen[vram] = (data & 0x40) ? 0 : 1;
8686               m_dispflag[vram] = (data & 0x80) ? 1 : 0;
87               niyanpai_vramflip(vram);
87               vramflip(vram);
8888               break;
8989      case 0x01:  m_scrollx[vram] = (m_scrollx[vram] & 0x0100) | data; break;
9090      case 0x02:  m_scrollx[vram] = (m_scrollx[vram] & 0x00ff) | ((data << 8) & 0x0100); break;
r245355r245356
9999      case 0x0b:  m_blitter_destx[vram] = (m_blitter_destx[vram]  & 0x00ff) | (data << 8); break;
100100      case 0x0c:  m_blitter_desty[vram] = (m_blitter_desty[vram]  & 0xff00) | data; break;
101101      case 0x0d:  m_blitter_desty[vram] = (m_blitter_desty[vram]  & 0x00ff) | (data << 8);
102               niyanpai_gfxdraw(vram);
102               gfxdraw(vram);
103103               break;
104104      default:    break;
105105   }
106106}
107107
108void niyanpai_state::niyanpai_clutsel_w(int vram, UINT8 data)
108void niyanpai_state::clutsel_w(int vram, UINT8 data)
109109{
110110   m_clutsel[vram] = data;
111111}
112112
113void niyanpai_state::niyanpai_clut_w(int vram, int offset, UINT8 data)
113void niyanpai_state::clut_w(int vram, int offset, UINT8 data)
114114{
115115   m_clut[vram][((m_clutsel[vram] & 0xff) * 0x10) + (offset & 0x0f)] = data;
116116}
r245355r245356
119119
120120
121121******************************************************************************/
122void niyanpai_state::niyanpai_vramflip(int vram)
122void niyanpai_state::vramflip(int vram)
123123{
124124   int x, y;
125125   UINT16 color1, color2;
r245355r245356
172172   }
173173}
174174
175void niyanpai_state::niyanpai_gfxdraw(int vram)
175void niyanpai_state::gfxdraw(int vram)
176176{
177177   UINT8 *GFX = memregion("gfx1")->base();
178178   int width = m_screen->width();
r245355r245356
324324   }
325325
326326   m_nb19010_busyflag = 0;
327   timer_set(attotime::from_nsec(1000 * m_nb19010_busyctr), TIMER_BLITTER);
327   m_blitter_timer->adjust(attotime::from_nsec(1000 * m_nb19010_busyctr));
328328}
329329
330330/******************************************************************************
331331
332332
333333******************************************************************************/
334WRITE8_MEMBER(niyanpai_state::niyanpai_blitter_0_w){ niyanpai_blitter_w(0, offset, data); }
335WRITE8_MEMBER(niyanpai_state::niyanpai_blitter_1_w){ niyanpai_blitter_w(1, offset, data); }
336WRITE8_MEMBER(niyanpai_state::niyanpai_blitter_2_w){ niyanpai_blitter_w(2, offset, data); }
334WRITE8_MEMBER(niyanpai_state::blitter_0_w){ blitter_w(0, offset, data); }
335WRITE8_MEMBER(niyanpai_state::blitter_1_w){ blitter_w(1, offset, data); }
336WRITE8_MEMBER(niyanpai_state::blitter_2_w){ blitter_w(2, offset, data); }
337337
338READ8_MEMBER(niyanpai_state::niyanpai_blitter_0_r){ return niyanpai_blitter_r(0, offset); }
339READ8_MEMBER(niyanpai_state::niyanpai_blitter_1_r){ return niyanpai_blitter_r(1, offset); }
340READ8_MEMBER(niyanpai_state::niyanpai_blitter_2_r){ return niyanpai_blitter_r(2, offset); }
338READ8_MEMBER(niyanpai_state::blitter_0_r){ return blitter_r(0, offset); }
339READ8_MEMBER(niyanpai_state::blitter_1_r){ return blitter_r(1, offset); }
340READ8_MEMBER(niyanpai_state::blitter_2_r){ return blitter_r(2, offset); }
341341
342WRITE8_MEMBER(niyanpai_state::niyanpai_clut_0_w){ niyanpai_clut_w(0, offset, data); }
343WRITE8_MEMBER(niyanpai_state::niyanpai_clut_1_w){ niyanpai_clut_w(1, offset, data); }
344WRITE8_MEMBER(niyanpai_state::niyanpai_clut_2_w){ niyanpai_clut_w(2, offset, data); }
342WRITE8_MEMBER(niyanpai_state::clut_0_w){ clut_w(0, offset, data); }
343WRITE8_MEMBER(niyanpai_state::clut_1_w){ clut_w(1, offset, data); }
344WRITE8_MEMBER(niyanpai_state::clut_2_w){ clut_w(2, offset, data); }
345345
346WRITE8_MEMBER(niyanpai_state::niyanpai_clutsel_0_w){ niyanpai_clutsel_w(0, data); }
347WRITE8_MEMBER(niyanpai_state::niyanpai_clutsel_1_w){ niyanpai_clutsel_w(1, data); }
348WRITE8_MEMBER(niyanpai_state::niyanpai_clutsel_2_w){ niyanpai_clutsel_w(2, data); }
346WRITE8_MEMBER(niyanpai_state::clutsel_0_w){ clutsel_w(0, data); }
347WRITE8_MEMBER(niyanpai_state::clutsel_1_w){ clutsel_w(1, data); }
348WRITE8_MEMBER(niyanpai_state::clutsel_2_w){ clutsel_w(2, data); }
349349
350350/******************************************************************************
351351
r245355r245356
370370   m_clut[1] = auto_alloc_array(machine(), UINT8, 0x1000);
371371   m_clut[2] = auto_alloc_array(machine(), UINT8, 0x1000);
372372   m_nb19010_busyflag = 1;
373   m_blitter_timer = timer_alloc(TIMER_BLITTER);
374   
375   save_item(NAME(m_scrollx));
376   save_item(NAME(m_scrolly));
377   save_item(NAME(m_blitter_destx));
378   save_item(NAME(m_blitter_desty));
379   save_item(NAME(m_blitter_sizex));
380   save_item(NAME(m_blitter_sizey));
381   save_item(NAME(m_blitter_src_addr));
382   save_item(NAME(m_blitter_direction_x));
383   save_item(NAME(m_blitter_direction_y));
384   save_item(NAME(m_dispflag));
385   save_item(NAME(m_flipscreen));
386   save_item(NAME(m_clutmode));
387   save_item(NAME(m_transparency));
388   save_item(NAME(m_clutsel));
389   save_item(NAME(m_screen_refresh));
390   save_item(NAME(m_nb19010_busyctr));
391   save_item(NAME(m_nb19010_busyflag));
392   save_item(NAME(m_flipscreen_old));
393   save_pointer(NAME(m_palette_ptr), 0x480);
394   save_pointer(NAME(m_videoram[0]), width * height);
395   save_pointer(NAME(m_videoram[1]), width * height);
396   save_pointer(NAME(m_videoram[2]), width * height);
397   save_pointer(NAME(m_videoworkram[0]), width * height);
398   save_pointer(NAME(m_videoworkram[1]), width * height);
399   save_pointer(NAME(m_videoworkram[2]), width * height);
400   save_pointer(NAME(m_clut[0]), 0x1000);
401   save_pointer(NAME(m_clut[1]), 0x1000);
402   save_pointer(NAME(m_clut[2]), 0x1000);
403   save_item(NAME(m_tmpbitmap[0]));
404   save_item(NAME(m_tmpbitmap[1]));
405   save_item(NAME(m_tmpbitmap[2]));
373406}
374407
375408/******************************************************************************
376409
377410
378411******************************************************************************/
379UINT32 niyanpai_state::screen_update_niyanpai(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
412UINT32 niyanpai_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
380413{
381414   int i;
382415   int x, y;


Previous 199869 Revisions Next


© 1997-2024 The MAME Team