Previous 199869 Revisions Next

r18176 Thursday 27th September, 2012 at 14:33:26 UTC by Miodrag Milanović
Replace some *_DEVICE_HANDLER with _MEMBER calls (no whatsnew)
[src/mame/audio]qix.c
[src/mame/drivers]ataxx.c equites.c gaelco2.c hanaawas.c homerun.c leland.c m10.c mcr.c naomi.c phoenix.c puckpkmn.c qix.c simpsons.c snk.c spiders.c stfight.c system1.c tatsumi.c topspeed.c xxmissio.c
[src/mame/includes]beezer.h carpolo.h dc.h equites.h gaelco2.h gameplan.h hanaawas.h homerun.h leland.h m10.h mcr.h mcr68.h megadriv.h phoenix.h qix.h scramble.h simpsons.h snes.h snk.h spiders.h stfight.h system1.h tatsumi.h topspeed.h vectrex.h vertigo.h williams.h xxmissio.h
[src/mame/machine]beezer.c carpolo.c dc.c gaelco2.c leland.c mcr.c mcr68.c megadriv.c qix.c scramble.c simpsons.c snes.c stfight.c tatsumi.c vectrex.c vertigo.c williams.c
[src/mame/video]gameplan.c hanaawas.c homerun.c leland.c phoenix.c qix.c system1.c vectrex.c xxmissio.c
[src/mess/drivers]dc.c snes.c

trunk/src/mess/drivers/snes.c
r18175r18176
735735
736736static SUPERFX_CONFIG( snes_superfx_config )
737737{
738   DEVCB_LINE(snes_extern_irq_w)   /* IRQ line from cart */
738   DEVCB_DRIVER_LINE_MEMBER(snes_state,snes_extern_irq_w)   /* IRQ line from cart */
739739};
740740
741741static MACHINE_CONFIG_DERIVED( snessfx, snes )
trunk/src/mess/drivers/dc.c
r18175r18176
168168   AM_RANGE(0x005f7c00, 0x005f7cff) AM_READWRITE_LEGACY(pvr_ctrl_r, pvr_ctrl_w )
169169   AM_RANGE(0x005f8000, 0x005f9fff) AM_READWRITE_LEGACY(pvr_ta_r, pvr_ta_w )
170170   AM_RANGE(0x00600000, 0x006007ff) AM_READWRITE_LEGACY(dc_modem_r, dc_modem_w )
171   AM_RANGE(0x00700000, 0x00707fff) AM_DEVREADWRITE_LEGACY("aica", dc_aica_reg_r, dc_aica_reg_w )
171   AM_RANGE(0x00700000, 0x00707fff) AM_READWRITE(dc_aica_reg_r, dc_aica_reg_w )
172172   AM_RANGE(0x00710000, 0x0071000f) AM_READWRITE_LEGACY(dc_rtc_r, dc_rtc_w )
173173   AM_RANGE(0x00800000, 0x009fffff) AM_READWRITE_LEGACY(dc_arm_r, dc_arm_w )
174174
r18175r18176
202202
203203static ADDRESS_MAP_START( dc_audio_map, AS_PROGRAM, 32, dc_state )
204204   AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("dc_sound_ram")      /* shared with SH-4 */
205   AM_RANGE(0x00800000, 0x00807fff) AM_DEVREADWRITE_LEGACY("aica", dc_arm_aica_r, dc_arm_aica_w)
205   AM_RANGE(0x00800000, 0x00807fff) AM_READWRITE(dc_arm_aica_r, dc_arm_aica_w)
206206ADDRESS_MAP_END
207207
208208static MACHINE_RESET( dc_console )
trunk/src/mame/includes/scramble.h
r18175r18176
5353   DECLARE_DRIVER_INIT(billiard);
5454   DECLARE_MACHINE_RESET(scramble);
5555   DECLARE_MACHINE_RESET(explorer);
56   DECLARE_WRITE8_MEMBER(scramble_protection_w);
57   DECLARE_READ8_MEMBER(scramble_protection_r);
5658};
5759
5860
r18175r18176
6870DECLARE_READ8_HANDLER( hunchbks_mirror_r );
6971DECLARE_WRITE8_HANDLER( hunchbks_mirror_w );
7072
71DECLARE_READ8_DEVICE_HANDLER( scramble_protection_r );
72DECLARE_WRITE8_DEVICE_HANDLER( scramble_protection_w );
7373
7474
7575/*----------- defined in audio/scramble.c -----------*/
trunk/src/mame/includes/gameplan.h
r18175r18176
7474   TIMER_CALLBACK_MEMBER(clear_screen_done_callback);
7575   TIMER_CALLBACK_MEMBER(via_irq_delayed);
7676   TIMER_CALLBACK_MEMBER(via_0_ca1_timer_callback);
77   DECLARE_WRITE8_MEMBER(video_data_w);
78   DECLARE_WRITE8_MEMBER(gameplan_video_command_w);
79   DECLARE_WRITE8_MEMBER(leprechn_video_command_w);
80   DECLARE_WRITE_LINE_MEMBER(video_command_trigger_w);
81   DECLARE_READ8_MEMBER(vblank_r);
7782};
7883
7984/*----------- defined in video/gameplan.c -----------*/
trunk/src/mame/includes/hanaawas.h
r18175r18176
3131   virtual void video_start();
3232   virtual void palette_init();
3333   UINT32 screen_update_hanaawas(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
34   DECLARE_WRITE8_MEMBER(hanaawas_portB_w);
3435};
35
36/*----------- defined in video/hanaawas.c -----------*/
37DECLARE_WRITE8_DEVICE_HANDLER( hanaawas_portB_w );
trunk/src/mame/includes/tatsumi.h
r18175r18176
125125   UINT32 screen_update_cyclwarr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
126126   UINT32 screen_update_bigfight(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
127127   INTERRUPT_GEN_MEMBER(roundup5_interrupt);
128   DECLARE_READ8_MEMBER(tatsumi_hack_ym2151_r);
129   DECLARE_READ8_MEMBER(tatsumi_hack_oki_r);
128130};
129131
130132/*----------- defined in machine/tatsumi.c -----------*/
131DECLARE_READ8_DEVICE_HANDLER(tatsumi_hack_ym2151_r);
132DECLARE_READ8_DEVICE_HANDLER(tatsumi_hack_oki_r);
133
134133void tatsumi_reset(running_machine &machine);
trunk/src/mame/includes/snes.h
r18175r18176
551551   TIMER_CALLBACK_MEMBER(snes_update_io);
552552   TIMER_CALLBACK_MEMBER(snes_scanline_tick);
553553   TIMER_CALLBACK_MEMBER(snes_hblank_tick);
554   DECLARE_WRITE_LINE_MEMBER(snes_extern_irq_w);
554555};
555556
556557/* Special chips, checked at init and used in memory handlers */
r18175r18176
628629extern DECLARE_WRITE8_HANDLER( superfx_w_bank2 );
629630extern DECLARE_WRITE8_HANDLER( superfx_w_bank3 );
630631
631WRITE_LINE_DEVICE_HANDLER( snes_extern_irq_w );
632
633
634632extern UINT8  *snes_ram;         /* Main memory */
635633
636634
trunk/src/mame/includes/phoenix.h
r18175r18176
3636   DECLARE_PALETTE_INIT(survival);
3737   DECLARE_PALETTE_INIT(pleiads);
3838   UINT32 screen_update_phoenix(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
39   DECLARE_READ8_MEMBER(survival_protection_r);
40   DECLARE_READ_LINE_MEMBER(survival_sid_callback);
3941};
4042
4143
r18175r18176
8183};
8284
8385extern const device_type PHOENIX;
84
85/*----------- defined in video/phoenix.c -----------*/
86DECLARE_READ8_DEVICE_HANDLER( survival_protection_r );
87READ_LINE_DEVICE_HANDLER( survival_sid_callback );
trunk/src/mame/includes/equites.h
r18175r18176
110110   TIMER_CALLBACK_MEMBER(equites_frq_adjuster_callback);
111111   TIMER_DEVICE_CALLBACK_MEMBER(equites_scanline);
112112   TIMER_DEVICE_CALLBACK_MEMBER(splndrbt_scanline);
113   DECLARE_WRITE_LINE_MEMBER(equites_msm5232_gate);
113114};
trunk/src/mame/includes/vectrex.h
r18175r18176
7777   TIMER_CALLBACK_MEMBER(vectrex_refresh);
7878   TIMER_CALLBACK_MEMBER(vectrex_zero_integrators);
7979   TIMER_CALLBACK_MEMBER(update_signal);
80   DECLARE_READ8_MEMBER(vectrex_via_pb_r);
81   DECLARE_READ8_MEMBER(vectrex_via_pa_r);
82   DECLARE_READ8_MEMBER(vectrex_s1_via_pb_r);
83   DECLARE_WRITE8_MEMBER(v_via_pb_w);
84   DECLARE_WRITE8_MEMBER(v_via_pa_w);
85   DECLARE_WRITE8_MEMBER(v_via_ca2_w);
86   DECLARE_WRITE8_MEMBER(v_via_cb2_w);
8087};
8188
8289
r18175r18176
8491
8592DEVICE_IMAGE_LOAD( vectrex_cart );
8693void vectrex_configuration(running_machine &machine);
87DECLARE_READ8_DEVICE_HANDLER (vectrex_via_pa_r);
88DECLARE_READ8_DEVICE_HANDLER(vectrex_via_pb_r );
8994void vectrex_via_irq (device_t *device, int level);
9095
91/* for spectrum 1+ */
92DECLARE_READ8_DEVICE_HANDLER( vectrex_s1_via_pb_r );
93
9496/*----------- defined in video/vectrex.c -----------*/
9597
9698extern const via6522_interface vectrex_via6522_interface;
trunk/src/mame/includes/stfight.h
r18175r18176
4848   UINT32 screen_update_stfight(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
4949   INTERRUPT_GEN_MEMBER(stfight_vb_interrupt);
5050   TIMER_CALLBACK_MEMBER(stfight_interrupt_1);
51   DECLARE_WRITE8_MEMBER(stfight_adpcm_control_w);
5152};
5253
5354/*----------- defined in machine/stfight.c -----------*/
5455void stfight_adpcm_int(device_t *device);
55DECLARE_WRITE8_DEVICE_HANDLER( stfight_adpcm_control_w );
5656
57
trunk/src/mame/includes/gaelco2.h
r18175r18176
5353   UINT32 screen_update_gaelco2_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
5454   UINT32 screen_update_gaelco2_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
5555   TIMER_DEVICE_CALLBACK_MEMBER(bang_irq);
56   DECLARE_WRITE16_MEMBER(gaelco2_eeprom_cs_w);
57   DECLARE_WRITE16_MEMBER(gaelco2_eeprom_sk_w);
58   DECLARE_WRITE16_MEMBER(gaelco2_eeprom_data_w);
5659};
57
58
59/*----------- defined in machine/gaelco2.c -----------*/
60
61DECLARE_WRITE16_DEVICE_HANDLER( gaelco2_eeprom_cs_w );
62DECLARE_WRITE16_DEVICE_HANDLER( gaelco2_eeprom_sk_w );
63DECLARE_WRITE16_DEVICE_HANDLER( gaelco2_eeprom_data_w );
trunk/src/mame/includes/homerun.h
r18175r18176
5353   virtual void machine_reset();
5454   virtual void video_start();
5555   UINT32 screen_update_homerun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
56   DECLARE_WRITE8_MEMBER(homerun_banking_w);
5657};
57
58/*----------- defined in video/homerun.c -----------*/
59DECLARE_WRITE8_DEVICE_HANDLER( homerun_banking_w );
trunk/src/mame/includes/topspeed.h
r18175r18176
5959   INTERRUPT_GEN_MEMBER(topspeed_cpub_interrupt);
6060   TIMER_CALLBACK_MEMBER(topspeed_interrupt6);
6161   TIMER_CALLBACK_MEMBER(topspeed_cpub_interrupt6);
62   DECLARE_WRITE8_MEMBER(topspeed_tc0140syt_comm_w);
6263};
trunk/src/mame/includes/beezer.h
r18175r18176
1919   virtual void machine_start();
2020   UINT32 screen_update_beezer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
2121   TIMER_DEVICE_CALLBACK_MEMBER(beezer_interrupt);
22   DECLARE_READ_LINE_MEMBER(b_via_0_ca2_r);
23   DECLARE_READ8_MEMBER(b_via_0_pa_r);
24   DECLARE_READ8_MEMBER(b_via_0_pb_r);
25   DECLARE_WRITE8_MEMBER(b_via_0_pa_w);
26   DECLARE_WRITE8_MEMBER(b_via_0_pb_w);
27   DECLARE_READ8_MEMBER(b_via_1_pa_r);
28   DECLARE_READ8_MEMBER(b_via_1_pb_r);
29   DECLARE_WRITE8_MEMBER(b_via_1_pa_w);
30   DECLARE_WRITE8_MEMBER(b_via_1_pb_w);
2231};
2332
2433
trunk/src/mame/includes/mcr.h
r18175r18176
106106   TIMER_DEVICE_CALLBACK_MEMBER(dpoker_coin_in_callback);
107107   TIMER_DEVICE_CALLBACK_MEMBER(mcr_interrupt);
108108   TIMER_DEVICE_CALLBACK_MEMBER(mcr_ipu_interrupt);
109   DECLARE_WRITE16_MEMBER(mcr_ipu_sio_transmit);
110   DECLARE_WRITE_LINE_MEMBER(ipu_ctc_interrupt);
111   DECLARE_WRITE8_MEMBER(ipu_break_changed);
109112};
110113
111
112/*----------- defined in drivers/mcr.c -----------*/
113
114DECLARE_WRITE16_DEVICE_HANDLER( mcr_ipu_sio_transmit );
115
116
117114/*----------- defined in machine/mcr.c -----------*/
118115
119116extern const z80_daisy_config mcr_daisy_chain[];
trunk/src/mame/includes/xxmissio.h
r18175r18176
3131   UINT32 screen_update_xxmissio(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
3232   INTERRUPT_GEN_MEMBER(xxmissio_interrupt_m);
3333   INTERRUPT_GEN_MEMBER(xxmissio_interrupt_s);
34   DECLARE_WRITE8_MEMBER(xxmissio_scroll_x_w);
35   DECLARE_WRITE8_MEMBER(xxmissio_scroll_y_w);
3436};
35
36DECLARE_WRITE8_DEVICE_HANDLER( xxmissio_scroll_x_w );
37DECLARE_WRITE8_DEVICE_HANDLER( xxmissio_scroll_y_w );
trunk/src/mame/includes/leland.h
r18175r18176
147147   TIMER_CALLBACK_MEMBER(ataxx_interrupt_callback);
148148   TIMER_CALLBACK_MEMBER(scanline_callback);
149149   TIMER_CALLBACK_MEMBER(leland_delayed_mvram_w);
150   DECLARE_READ8_MEMBER(ataxx_eeprom_r);
151   DECLARE_WRITE8_MEMBER(ataxx_eeprom_w);
152   DECLARE_READ8_MEMBER(leland_sound_port_r);
153   DECLARE_WRITE8_MEMBER(leland_sound_port_w);
154   DECLARE_WRITE8_MEMBER(leland_gfx_port_w);
150155};
151156
152157
r18175r18176
170175void leland_init_eeprom(running_machine &machine, UINT8 default_val, const UINT16 *data, UINT8 serial_offset, UINT8 serial_type);
171176void ataxx_init_eeprom(running_machine &machine, const UINT16 *data);
172177
173DECLARE_READ8_DEVICE_HANDLER( ataxx_eeprom_r );
174DECLARE_WRITE8_DEVICE_HANDLER( ataxx_eeprom_w );
175
176
177
178
179
180DECLARE_READ8_DEVICE_HANDLER( leland_sound_port_r );
181DECLARE_WRITE8_DEVICE_HANDLER( leland_sound_port_w );
182
183
184
185178void leland_rotate_memory(running_machine &machine, const char *cpuname);
186179
187180
trunk/src/mame/includes/carpolo.h
r18175r18176
6969   UINT32 screen_update_carpolo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
7070   void screen_eof_carpolo(screen_device &screen, bool state);
7171   INTERRUPT_GEN_MEMBER(carpolo_timer_interrupt);
72   DECLARE_WRITE_LINE_MEMBER(coin1_interrupt_clear_w);
73   DECLARE_WRITE_LINE_MEMBER(coin2_interrupt_clear_w);
74   DECLARE_WRITE_LINE_MEMBER(coin3_interrupt_clear_w);
75   DECLARE_WRITE_LINE_MEMBER(coin4_interrupt_clear_w);
76   DECLARE_WRITE8_MEMBER(pia_0_port_a_w);
77   DECLARE_WRITE8_MEMBER(pia_0_port_b_w);
78   DECLARE_READ8_MEMBER(pia_0_port_b_r);
79   DECLARE_READ8_MEMBER(pia_1_port_a_r);
80   DECLARE_READ8_MEMBER(pia_1_port_b_r);
7281};
7382
7483
trunk/src/mame/includes/system1.h
r18175r18176
110110   INTERRUPT_GEN_MEMBER(mcu_irq_assert);
111111   TIMER_DEVICE_CALLBACK_MEMBER(soundirq_gen);
112112   TIMER_DEVICE_CALLBACK_MEMBER(mcu_t0_callback);
113   DECLARE_WRITE8_MEMBER(system1_videoram_bank_w);
113114};
114115
115
116/*----------- defined in video/system1.c -----------*/
117DECLARE_WRITE8_DEVICE_HANDLER( system1_videoram_bank_w );
trunk/src/mame/includes/m10.h
r18175r18176
9292   INTERRUPT_GEN_MEMBER(m10_interrupt);
9393   INTERRUPT_GEN_MEMBER(m15_interrupt);
9494   TIMER_CALLBACK_MEMBER(interrupt_callback);
95   DECLARE_WRITE8_MEMBER(ic8j1_output_changed);
96   DECLARE_WRITE8_MEMBER(ic8j2_output_changed);
9597};
9698
trunk/src/mame/includes/vertigo.h
r18175r18176
112112   virtual void machine_reset();
113113   INTERRUPT_GEN_MEMBER(vertigo_interrupt);
114114   TIMER_CALLBACK_MEMBER(sound_command_w);
115   DECLARE_WRITE_LINE_MEMBER(v_irq4_w);
116   DECLARE_WRITE_LINE_MEMBER(v_irq3_w);
115117};
116118
117119/*----------- defined in machine/vertigo.c -----------*/
trunk/src/mame/includes/williams.h
r18175r18176
116116   TIMER_DEVICE_CALLBACK_MEMBER(williams_count240_callback);
117117   TIMER_DEVICE_CALLBACK_MEMBER(williams2_va11_callback);
118118   TIMER_DEVICE_CALLBACK_MEMBER(williams2_endscreen_callback);
119   DECLARE_WRITE8_MEMBER(williams_snd_cmd_w);
120   DECLARE_WRITE8_MEMBER(playball_snd_cmd_w);
121   DECLARE_WRITE8_MEMBER(blaster_snd_cmd_w);
122   DECLARE_WRITE8_MEMBER(williams2_snd_cmd_w);
123   DECLARE_WRITE8_MEMBER(williams_port_select_w);
124   DECLARE_READ8_MEMBER(williams_49way_port_0_r);
125   DECLARE_READ8_MEMBER(williams_input_port_49way_0_5_r);
126   DECLARE_WRITE8_MEMBER(lottofun_coin_lock_w);
127   DECLARE_READ8_MEMBER(tshoot_input_port_0_3_r);
128   DECLARE_WRITE8_MEMBER(tshoot_maxvol_w);
129   DECLARE_WRITE8_MEMBER(tshoot_lamp_w);
119130};
120131
121132
r18175r18176
131142   DECLARE_MACHINE_START(joust2);
132143   DECLARE_MACHINE_RESET(joust2);
133144   TIMER_CALLBACK_MEMBER(joust2_deferred_snd_cmd_w);
145   DECLARE_WRITE8_MEMBER(joust2_pia_3_cb1_w);
146   DECLARE_WRITE8_MEMBER(joust2_snd_cmd_w);
134147};
135148
136149/*----------- defined in drivers/williams.c -----------*/
trunk/src/mame/includes/dc.h
r18175r18176
113113   TIMER_CALLBACK_MEMBER(endofrender_video);
114114   TIMER_CALLBACK_MEMBER(endofrender_tsp);
115115   TIMER_CALLBACK_MEMBER(endofrender_isp);
116   DECLARE_READ64_MEMBER(dc_aica_reg_r);
117   DECLARE_WRITE64_MEMBER(dc_aica_reg_w);
118   DECLARE_READ32_MEMBER(dc_arm_aica_r);
119   DECLARE_WRITE32_MEMBER(dc_arm_aica_w);
116120};
117121
118122/*----------- defined in machine/dc.c -----------*/
r18175r18176
132136DECLARE_WRITE64_HANDLER( dc_modem_w );
133137DECLARE_READ64_HANDLER( dc_rtc_r );
134138DECLARE_WRITE64_HANDLER( dc_rtc_w );
135DECLARE_READ64_DEVICE_HANDLER( dc_aica_reg_r );
136DECLARE_WRITE64_DEVICE_HANDLER( dc_aica_reg_w );
137139
138DECLARE_READ32_DEVICE_HANDLER( dc_arm_aica_r );
139DECLARE_WRITE32_DEVICE_HANDLER( dc_arm_aica_w );
140140
141
142
143
144141int dc_compute_interrupt_level(running_machine &machine);
145142void dc_update_interrupt_status(running_machine &machine);
146143
trunk/src/mame/includes/mcr68.h
r18175r18176
103103   TIMER_CALLBACK_MEMBER(zwackery_493_off_callback);
104104   TIMER_CALLBACK_MEMBER(zwackery_493_callback);
105105   TIMER_CALLBACK_MEMBER(counter_fired_callback);
106   DECLARE_READ8_MEMBER(zwackery_port_1_r);
107   DECLARE_READ8_MEMBER(zwackery_port_3_r);
108   DECLARE_WRITE8_MEMBER(zwackery_pia0_w);
109   DECLARE_WRITE8_MEMBER(zwackery_pia1_w);
110   DECLARE_WRITE_LINE_MEMBER(zwackery_ca2_w);
111   DECLARE_WRITE_LINE_MEMBER(zwackery_pia_irq);
106112};
107113
108114/*----------- defined in machine/mcr68.c -----------*/
trunk/src/mame/includes/megadriv.h
r18175r18176
7272extern DECLARE_READ16_HANDLER( megadriv_68k_io_read );
7373extern DECLARE_WRITE16_HANDLER( megadriv_68k_io_write );
7474
75/* These handlers are needed by puckpkmn.c for his memory map */
76extern DECLARE_READ8_DEVICE_HANDLER( megadriv_68k_YM2612_read);
77extern DECLARE_WRITE8_DEVICE_HANDLER( megadriv_68k_YM2612_write);
7875
7976/* These are needed to create external input handlers (see e.g. MESS) */
8077/* Regs are also used by Megaplay! */
r18175r18176
122119   TILE_GET_INFO_MEMBER( get_stampmap_32x32_1x1_tile_info );
123120   TILE_GET_INFO_MEMBER( get_stampmap_16x16_16x16_tile_info );
124121   TILE_GET_INFO_MEMBER( get_stampmap_32x32_16x16_tile_info );
122   DECLARE_READ8_MEMBER(megadriv_68k_YM2612_read);
123   DECLARE_WRITE8_MEMBER(megadriv_68k_YM2612_write);
125124};
126125
127126class md_boot_state : public md_base_state
trunk/src/mame/includes/spiders.h
r18175r18176
3030   DECLARE_READ8_MEMBER(gfx_rom_r);
3131   virtual void machine_start();
3232   INTERRUPT_GEN_MEMBER(update_pia_1);
33   DECLARE_WRITE8_MEMBER(ic60_74123_output_changed);
3334};
3435
3536/*----------- defined in audio/spiders.c -----------*/
trunk/src/mame/includes/snk.h
r18175r18176
171171   UINT32 screen_update_tdfever(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
172172   TIMER_CALLBACK_MEMBER(sgladiat_sndirq_update_callback);
173173   TIMER_CALLBACK_MEMBER(sndirq_update_callback);
174   DECLARE_WRITE_LINE_MEMBER(ymirq_callback_2);
174175};
trunk/src/mame/includes/simpsons.h
r18175r18176
4343   INTERRUPT_GEN_MEMBER(simpsons_irq);
4444   TIMER_CALLBACK_MEMBER(nmi_callback);
4545   TIMER_CALLBACK_MEMBER(dmaend_callback);
46   DECLARE_READ8_MEMBER(simpsons_sound_r);
4647};
4748
48/*----------- defined in machine/simpsons.c -----------*/
49DECLARE_READ8_DEVICE_HANDLER( simpsons_sound_r );
5049
5150/*----------- defined in video/simpsons.c -----------*/
5251void simpsons_video_banking( running_machine &machine, int select );
trunk/src/mame/includes/qix.h
r18175r18176
8585   DECLARE_MACHINE_START(qixmcu);
8686   DECLARE_VIDEO_START(qix);
8787   TIMER_CALLBACK_MEMBER(pia_w_callback);
88   DECLARE_WRITE_LINE_MEMBER(qix_vsync_changed);
89   DECLARE_READ8_MEMBER(qixmcu_coin_r);
90   DECLARE_WRITE8_MEMBER(qixmcu_coin_w);
91   DECLARE_WRITE8_MEMBER(qixmcu_coinctrl_w);
92   DECLARE_WRITE8_MEMBER(qix_pia_w);
93   DECLARE_WRITE8_MEMBER(qix_coinctl_w);
94   DECLARE_WRITE8_MEMBER(slither_76489_0_w);
95   DECLARE_WRITE8_MEMBER(slither_76489_1_w);
96   DECLARE_READ8_MEMBER(slither_trak_lr_r);
97   DECLARE_READ8_MEMBER(slither_trak_ud_r);
98   DECLARE_WRITE_LINE_MEMBER(display_enable_changed);
99   DECLARE_WRITE8_MEMBER(qix_flip_screen_w);
88100};
89101
90102
r18175r18176
98110extern const pia6821_interface slither_pia_1_intf;
99111extern const pia6821_interface slither_pia_2_intf;
100112
101DECLARE_WRITE8_DEVICE_HANDLER( qix_pia_w );
102WRITE_LINE_DEVICE_HANDLER( qix_vsync_changed );
103
104113/*----------- defined in video/qix.c -----------*/
105114
106115MACHINE_CONFIG_EXTERN( qix_video );
107116MACHINE_CONFIG_EXTERN( zookeep_video );
108117MACHINE_CONFIG_EXTERN( slither_video );
109118
110DECLARE_WRITE8_DEVICE_HANDLER( qix_flip_screen_w );
111
112119/*----------- defined in audio/qix.c -----------*/
113120
114121MACHINE_CONFIG_EXTERN( qix_audio );
trunk/src/mame/video/xxmissio.c
r18175r18176
1212#include "includes/xxmissio.h"
1313
1414
15WRITE8_DEVICE_HANDLER( xxmissio_scroll_x_w )
15WRITE8_MEMBER(xxmissio_state::xxmissio_scroll_x_w)
1616{
17   xxmissio_state *state = space.machine().driver_data<xxmissio_state>();
18   state->m_xscroll = data;
17   m_xscroll = data;
1918}
20WRITE8_DEVICE_HANDLER( xxmissio_scroll_y_w )
19WRITE8_MEMBER(xxmissio_state::xxmissio_scroll_y_w)
2120{
22   xxmissio_state *state = space.machine().driver_data<xxmissio_state>();
23   state->m_yscroll = data;
21   m_yscroll = data;
2422}
2523
2624WRITE8_MEMBER(xxmissio_state::xxmissio_flipscreen_w)
trunk/src/mame/video/leland.c
r18175r18176
115115}
116116
117117
118WRITE8_DEVICE_HANDLER( leland_gfx_port_w )
118WRITE8_MEMBER(leland_state::leland_gfx_port_w)
119119{
120   leland_state *state = space.machine().driver_data<leland_state>();
121   space.machine().primary_screen->update_partial(space.machine().primary_screen->vpos());
122   state->m_gfxbank = data;
120   machine().primary_screen->update_partial(machine().primary_screen->vpos());
121   m_gfxbank = data;
123122}
124123
125124
trunk/src/mame/video/system1.c
r18175r18176
275275      machine().primary_screen->update_now();
276276}
277277
278WRITE8_DEVICE_HANDLER( system1_videoram_bank_w )
278WRITE8_MEMBER(system1_state::system1_videoram_bank_w)
279279{
280   system1_state *state = space.machine().driver_data<system1_state>();
281   state->m_videoram_bank = data;
280   m_videoram_bank = data;
282281}
283282
284283
trunk/src/mame/video/qix.c
r18175r18176
3131
3232static MC6845_BEGIN_UPDATE( begin_update );
3333static MC6845_UPDATE_ROW( update_row );
34static WRITE_LINE_DEVICE_HANDLER( display_enable_changed );
3534
3635
3736
37
3838/*************************************
3939 *
4040 *  Start
r18175r18176
6161 *
6262 *************************************/
6363
64static WRITE_LINE_DEVICE_HANDLER( display_enable_changed )
64WRITE_LINE_MEMBER(qix_state::display_enable_changed)
6565{
66   qix_state *driver_state = device->machine().driver_data<qix_state>();
6766
6867   /* on the rising edge, latch the scanline */
6968   if (state)
7069   {
71      UINT16 ma = downcast<mc6845_device *>(device)->get_ma();
72      UINT8 ra = downcast<mc6845_device *>(device)->get_ra();
70      UINT16 ma = downcast<mc6845_device *>(machine().device(MC6845_TAG))->get_ma();
71      UINT8 ra = downcast<mc6845_device *>(machine().device(MC6845_TAG))->get_ra();
7372
7473      /* RA0-RA2 goes to D0-D2 and MA5-MA9 goes to D3-D7 */
75      *driver_state->m_scanline_latch = ((ma >> 2) & 0xf8) | (ra & 0x07);
74      *m_scanline_latch = ((ma >> 2) & 0xf8) | (ra & 0x07);
7675   }
7776}
7877
r18175r18176
8483 *
8584 *************************************/
8685
87WRITE8_DEVICE_HANDLER( qix_flip_screen_w )
86WRITE8_MEMBER(qix_state::qix_flip_screen_w)
8887{
89   qix_state *state = space.machine().driver_data<qix_state>();
9088
91   state->m_flip = data;
89   m_flip = data;
9290}
9391
9492
r18175r18176
402400   begin_update,                  /* before pixel update callback */
403401   update_row,                     /* row update callback */
404402   NULL,                        /* after pixel update callback */
405   DEVCB_LINE(display_enable_changed),   /* callback for display state changes */
403   DEVCB_DRIVER_LINE_MEMBER(qix_state,display_enable_changed),   /* callback for display state changes */
406404   DEVCB_NULL,                     /* callback for cursor state changes */
407405   DEVCB_NULL,                     /* HSYNC callback */
408   DEVCB_LINE(qix_vsync_changed),      /* VSYNC callback */
406   DEVCB_DRIVER_LINE_MEMBER(qix_state,qix_vsync_changed),      /* VSYNC callback */
409407   NULL                        /* update address callback */
410408};
411409
trunk/src/mame/video/gameplan.c
r18175r18176
114114 *
115115 *************************************/
116116
117static WRITE8_DEVICE_HANDLER( video_data_w )
117WRITE8_MEMBER(gameplan_state::video_data_w)
118118{
119   gameplan_state *state = space.machine().driver_data<gameplan_state>();
120119
121   state->m_video_data = data;
120   m_video_data = data;
122121}
123122
124123
125static WRITE8_DEVICE_HANDLER( gameplan_video_command_w )
124WRITE8_MEMBER(gameplan_state::gameplan_video_command_w)
126125{
127   gameplan_state *state = space.machine().driver_data<gameplan_state>();
128126
129   state->m_video_command = data & 0x07;
127   m_video_command = data & 0x07;
130128}
131129
132130
133static WRITE8_DEVICE_HANDLER( leprechn_video_command_w )
131WRITE8_MEMBER(gameplan_state::leprechn_video_command_w)
134132{
135   gameplan_state *state = space.machine().driver_data<gameplan_state>();
136133
137   state->m_video_command = (data >> 3) & 0x07;
134   m_video_command = (data >> 3) & 0x07;
138135}
139136
140137
r18175r18176
146143}
147144
148145
149static WRITE_LINE_DEVICE_HANDLER( video_command_trigger_w )
146WRITE_LINE_MEMBER(gameplan_state::video_command_trigger_w)
150147{
151   gameplan_state *driver_state = device->machine().driver_data<gameplan_state>();
152148
153149   if (state == 0)
154150   {
155      switch (driver_state->m_video_command)
151      switch (m_video_command)
156152      {
157153      /* draw pixel */
158154      case 0:
159155         /* auto-adjust X? */
160         if (driver_state->m_video_data & 0x10)
156         if (m_video_data & 0x10)
161157         {
162            if (driver_state->m_video_data & 0x40)
163               driver_state->m_video_x = driver_state->m_video_x - 1;
158            if (m_video_data & 0x40)
159               m_video_x = m_video_x - 1;
164160            else
165               driver_state->m_video_x = driver_state->m_video_x + 1;
161               m_video_x = m_video_x + 1;
166162         }
167163
168164         /* auto-adjust Y? */
169         if (driver_state->m_video_data & 0x20)
165         if (m_video_data & 0x20)
170166         {
171            if (driver_state->m_video_data & 0x80)
172               driver_state->m_video_y = driver_state->m_video_y - 1;
167            if (m_video_data & 0x80)
168               m_video_y = m_video_y - 1;
173169            else
174               driver_state->m_video_y = driver_state->m_video_y + 1;
170               m_video_y = m_video_y + 1;
175171         }
176172
177         driver_state->m_videoram[driver_state->m_video_y * (HBSTART - HBEND) + driver_state->m_video_x] = driver_state->m_video_data & 0x0f;
173         m_videoram[m_video_y * (HBSTART - HBEND) + m_video_x] = m_video_data & 0x0f;
178174
179175         break;
180176
181177      /* load X register */
182178      case 1:
183         driver_state->m_video_x = driver_state->m_video_data;
179         m_video_x = m_video_data;
184180         break;
185181
186182      /* load Y register */
187183      case 2:
188         driver_state->m_video_y = driver_state->m_video_data;
184         m_video_y = m_video_data;
189185         break;
190186
191187      /* clear screen */
192188      case 3:
193189         /* indicate that the we are busy */
194190         {
195            driver_state->m_via_0->write_ca1(1);
191            m_via_0->write_ca1(1);
196192         }
197193
198         memset(driver_state->m_videoram, driver_state->m_video_data & 0x0f, driver_state->m_videoram_size);
194         memset(m_videoram, m_video_data & 0x0f, m_videoram_size);
199195
200196         /* set a timer for an arbitrarily short period.
201197               The real time it takes to clear to screen is not
202198               important to the software */
203         device->machine().scheduler().synchronize(timer_expired_delegate(FUNC(gameplan_state::clear_screen_done_callback),driver_state));
199         machine().scheduler().synchronize(timer_expired_delegate(FUNC(gameplan_state::clear_screen_done_callback),this));
204200
205201         break;
206202      }
r18175r18176
224220}
225221
226222
227static READ8_DEVICE_HANDLER( vblank_r )
223READ8_MEMBER(gameplan_state::vblank_r)
228224{
229225   /* this is needed for trivia quest */
230226   return 0x20;
r18175r18176
233229
234230const via6522_interface gameplan_via_0_interface =
235231{
236   DEVCB_NULL, DEVCB_HANDLER(vblank_r),                              /*inputs : A/B         */
232   DEVCB_NULL, DEVCB_DRIVER_MEMBER(gameplan_state,vblank_r),                              /*inputs : A/B         */
237233   DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,                        /*inputs : CA/B1,CA/B2 */
238   DEVCB_HANDLER(video_data_w), DEVCB_HANDLER(gameplan_video_command_w),      /*outputs: A/B         */
239   DEVCB_NULL, DEVCB_NULL, DEVCB_LINE(video_command_trigger_w), DEVCB_NULL,   /*outputs: CA/B1,CA/B2 */
234   DEVCB_DRIVER_MEMBER(gameplan_state,video_data_w), DEVCB_DRIVER_MEMBER(gameplan_state,gameplan_video_command_w),      /*outputs: A/B         */
235   DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_LINE_MEMBER(gameplan_state,video_command_trigger_w), DEVCB_NULL,   /*outputs: CA/B1,CA/B2 */
240236   DEVCB_LINE(via_irq)                                             /*irq                  */
241237};
242238
243239
244240const via6522_interface leprechn_via_0_interface =
245241{
246   DEVCB_NULL, DEVCB_HANDLER(vblank_r),                              /*inputs : A/B         */
242   DEVCB_NULL, DEVCB_DRIVER_MEMBER(gameplan_state,vblank_r),                              /*inputs : A/B         */
247243   DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,                        /*inputs : CA/B1,CA/B2 */
248   DEVCB_HANDLER(video_data_w), DEVCB_HANDLER(leprechn_video_command_w),      /*outputs: A/B         */
249   DEVCB_NULL, DEVCB_NULL, DEVCB_LINE(video_command_trigger_w), DEVCB_NULL,   /*outputs: CA/B1,CA/B2 */
244   DEVCB_DRIVER_MEMBER(gameplan_state,video_data_w), DEVCB_DRIVER_MEMBER(gameplan_state,leprechn_video_command_w),      /*outputs: A/B         */
245   DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_LINE_MEMBER(gameplan_state,video_command_trigger_w), DEVCB_NULL,   /*outputs: CA/B1,CA/B2 */
250246   DEVCB_LINE(via_irq)                                             /*irq                  */
251247};
252248
253249
254250const via6522_interface trvquest_via_0_interface =
255251{
256   DEVCB_NULL, DEVCB_HANDLER(vblank_r),                              /*inputs : A/B         */
252   DEVCB_NULL, DEVCB_DRIVER_MEMBER(gameplan_state,vblank_r),                              /*inputs : A/B         */
257253   DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,                        /*inputs : CA/B1,CA/B2 */
258   DEVCB_HANDLER(video_data_w), DEVCB_HANDLER(gameplan_video_command_w),      /*outputs: A/B         */
259   DEVCB_NULL, DEVCB_NULL, DEVCB_LINE(video_command_trigger_w), DEVCB_NULL,   /*outputs: CA/B1,CA/B2 */
254   DEVCB_DRIVER_MEMBER(gameplan_state,video_data_w), DEVCB_DRIVER_MEMBER(gameplan_state,gameplan_video_command_w),      /*outputs: A/B         */
255   DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_LINE_MEMBER(gameplan_state,video_command_trigger_w), DEVCB_NULL,   /*outputs: CA/B1,CA/B2 */
260256   DEVCB_NULL                                                   /*irq                  */
261257};
262258
trunk/src/mame/video/hanaawas.c
r18175r18176
7878   m_bg_tilemap->mark_tile_dirty((offset + (flip_screen() ? -1 : 1)) & 0x03ff);
7979}
8080
81WRITE8_DEVICE_HANDLER( hanaawas_portB_w )
81WRITE8_MEMBER(hanaawas_state::hanaawas_portB_w)
8282{
8383   /* bit 7 is flip screen */
84   hanaawas_state *state = space.machine().driver_data<hanaawas_state>();
85   if (state->flip_screen() != (~data & 0x80))
84   if (flip_screen() != (~data & 0x80))
8685   {
87      state->flip_screen_set(~data & 0x80);
88      space.machine().tilemap().mark_all_dirty();
86      flip_screen_set(~data & 0x80);
87      machine().tilemap().mark_all_dirty();
8988   }
9089}
9190
trunk/src/mame/video/phoenix.c
r18175r18176
424424   return m_survival_input_latches[0];
425425}
426426
427READ8_DEVICE_HANDLER( survival_protection_r )
427READ8_MEMBER(phoenix_state::survival_protection_r)
428428{
429   phoenix_state *state = space.machine().driver_data<phoenix_state>();
430   return state->m_survival_protection_value;
429   return m_survival_protection_value;
431430}
432431
433READ_LINE_DEVICE_HANDLER( survival_sid_callback )
432READ_LINE_MEMBER(phoenix_state::survival_sid_callback)
434433{
435   phoenix_state *state = device->machine().driver_data<phoenix_state>();
436   return state->m_survival_sid_value;
434   return m_survival_sid_value;
437435}
438436
439437
trunk/src/mame/video/vectrex.c
r18175r18176
3535   A_Y,
3636};
3737
38
3938/*********************************************************************
4039
41   Prototypes
42
43*********************************************************************/
44
45static DECLARE_WRITE8_DEVICE_HANDLER (v_via_pa_w);
46static DECLARE_WRITE8_DEVICE_HANDLER(v_via_pb_w);
47static DECLARE_WRITE8_DEVICE_HANDLER (v_via_ca2_w);
48static DECLARE_WRITE8_DEVICE_HANDLER (v_via_cb2_w);
49
50
51/*********************************************************************
52
5340   Local variables
5441
5542*********************************************************************/
5643
5744const via6522_interface vectrex_via6522_interface =
5845{
59   DEVCB_HANDLER(vectrex_via_pa_r), DEVCB_HANDLER(vectrex_via_pb_r),         /* read PA/B */
46   DEVCB_DRIVER_MEMBER(vectrex_state,vectrex_via_pa_r), DEVCB_DRIVER_MEMBER(vectrex_state,vectrex_via_pb_r),         /* read PA/B */
6047   DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,                     /* read ca1, cb1, ca2, cb2 */
61   DEVCB_HANDLER(v_via_pa_w), DEVCB_HANDLER(v_via_pb_w),         /* write PA/B */
62   DEVCB_NULL, DEVCB_NULL, DEVCB_HANDLER(v_via_ca2_w), DEVCB_HANDLER(v_via_cb2_w), /* write ca1, cb1, ca2, cb2 */
48   DEVCB_DRIVER_MEMBER(vectrex_state,v_via_pa_w), DEVCB_DRIVER_MEMBER(vectrex_state,v_via_pb_w),         /* write PA/B */
49   DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(vectrex_state,v_via_ca2_w), DEVCB_DRIVER_MEMBER(vectrex_state,v_via_cb2_w), /* write ca1, cb1, ca2, cb2 */
6350   DEVCB_LINE(vectrex_via_irq),                      /* IRQ */
6451};
6552
r18175r18176
317304}
318305
319306
320static WRITE8_DEVICE_HANDLER(v_via_pb_w)
307WRITE8_MEMBER(vectrex_state::v_via_pb_w)
321308{
322   vectrex_state *state = space.machine().driver_data<vectrex_state>();
323309   if (!(data & 0x80))
324310   {
325311      /* RAMP is active */
326      if ((state->m_ramp & 0x80))
312      if ((m_ramp & 0x80))
327313      {
328314         /* RAMP was inactive before */
329315
330         if (state->m_lightpen_down)
316         if (m_lightpen_down)
331317         {
332318            /* Simple lin. algebra to check if pen is near
333319                 * the line defined by (A_X,A_Y).
r18175r18176
348334                 *            a
349335                 */
350336            double a2, b2, ab, d2;
351            ab = (state->m_pen_x - state->m_x_int) * state->m_analog[A_X]
352               +(state->m_pen_y - state->m_y_int) * state->m_analog[A_Y];
337            ab = (m_pen_x - m_x_int) * m_analog[A_X]
338               +(m_pen_y - m_y_int) * m_analog[A_Y];
353339            if (ab > 0)
354340            {
355               a2 = (double)(state->m_analog[A_X] * state->m_analog[A_X]
356                          +(double)state->m_analog[A_Y] * state->m_analog[A_Y]);
357               b2 = (double)(state->m_pen_x - state->m_x_int) * (state->m_pen_x - state->m_x_int)
358                  +(double)(state->m_pen_y - state->m_y_int) * (state->m_pen_y - state->m_y_int);
341               a2 = (double)(m_analog[A_X] * m_analog[A_X]
342                          +(double)m_analog[A_Y] * m_analog[A_Y]);
343               b2 = (double)(m_pen_x - m_x_int) * (m_pen_x - m_x_int)
344                  +(double)(m_pen_y - m_y_int) * (m_pen_y - m_y_int);
359345               d2 = b2 - ab * ab / a2;
360               if (d2 < 2e10 && state->m_analog[A_Z] * state->m_blank > 0)
361                  state->m_lp_t->adjust(attotime::from_double(ab / a2 / (space.machine().device("maincpu")->unscaled_clock() * INT_PER_CLOCK)));
346               if (d2 < 2e10 && m_analog[A_Z] * m_blank > 0)
347                  m_lp_t->adjust(attotime::from_double(ab / a2 / (machine().device("maincpu")->unscaled_clock() * INT_PER_CLOCK)));
362348            }
363349         }
364350      }
365351
366      if (!(data & 0x1) && (state->m_via_out[PORTB] & 0x1))
352      if (!(data & 0x1) && (m_via_out[PORTB] & 0x1))
367353      {
368354         /* MUX has been enabled */
369         space.machine().scheduler().timer_set(attotime::from_nsec(ANALOG_DELAY), timer_expired_delegate(FUNC(vectrex_state::update_signal),state));
355         machine().scheduler().timer_set(attotime::from_nsec(ANALOG_DELAY), timer_expired_delegate(FUNC(vectrex_state::update_signal),this));
370356      }
371357   }
372358   else
373359   {
374360      /* RAMP is inactive */
375      if (!(state->m_ramp & 0x80))
361      if (!(m_ramp & 0x80))
376362      {
377363         /* Cancel running timer, line already finished */
378         if (state->m_lightpen_down)
379            state->m_lp_t->adjust(attotime::never);
364         if (m_lightpen_down)
365            m_lp_t->adjust(attotime::never);
380366      }
381367   }
382368
383369   /* Cartridge bank-switching */
384   if (state->m_64k_cart && ((data ^ state->m_via_out[PORTB]) & 0x40))
370   if (m_64k_cart && ((data ^ m_via_out[PORTB]) & 0x40))
385371   {
386      device_t &root_device = space.machine().root_device();
372      device_t &root_device = machine().root_device();
387373
388374      root_device.membank("bank1")->set_base(root_device.memregion("maincpu")->base() + ((data & 0x40) ? 0x10000 : 0x0000));
389375   }
r18175r18176
391377   /* Sound */
392378   if (data & 0x10)
393379   {
394      device_t *ay8912 = space.machine().device("ay8912");
380      device_t *ay8912 = machine().device("ay8912");
395381
396382      if (data & 0x08) /* BC1 (do we select a reg or write it ?) */
397         ay8910_address_w(ay8912, space, 0, state->m_via_out[PORTA]);
383         ay8910_address_w(ay8912, space, 0, m_via_out[PORTA]);
398384      else
399         ay8910_data_w(ay8912, space, 0, state->m_via_out[PORTA]);
385         ay8910_data_w(ay8912, space, 0, m_via_out[PORTA]);
400386   }
401387
402   if (!(data & 0x1) && (state->m_via_out[PORTB] & 0x1))
403      vectrex_multiplexer (space.machine(), (data >> 1) & 0x3);
388   if (!(data & 0x1) && (m_via_out[PORTB] & 0x1))
389      vectrex_multiplexer (machine(), (data >> 1) & 0x3);
404390
405   state->m_via_out[PORTB] = data;
406   space.machine().scheduler().timer_set(attotime::from_nsec(ANALOG_DELAY), timer_expired_delegate(FUNC(vectrex_state::update_signal),state), data & 0x80, &state->m_ramp);
391   m_via_out[PORTB] = data;
392   machine().scheduler().timer_set(attotime::from_nsec(ANALOG_DELAY), timer_expired_delegate(FUNC(vectrex_state::update_signal),this), data & 0x80, &m_ramp);
407393}
408394
409395
410static WRITE8_DEVICE_HANDLER(v_via_pa_w)
396WRITE8_MEMBER(vectrex_state::v_via_pa_w)
411397{
412   vectrex_state *state = space.machine().driver_data<vectrex_state>();
413398   /* DAC output always goes to Y integrator */
414   state->m_via_out[PORTA] = data;
415   space.machine().scheduler().timer_set(attotime::from_nsec(ANALOG_DELAY), timer_expired_delegate(FUNC(vectrex_state::update_signal),state), data, &state->m_analog[A_Y]);
399   m_via_out[PORTA] = data;
400   machine().scheduler().timer_set(attotime::from_nsec(ANALOG_DELAY), timer_expired_delegate(FUNC(vectrex_state::update_signal),this), data, &m_analog[A_Y]);
416401
417   if (!(state->m_via_out[PORTB] & 0x1))
418      vectrex_multiplexer (space.machine(), (state->m_via_out[PORTB] >> 1) & 0x3);
402   if (!(m_via_out[PORTB] & 0x1))
403      vectrex_multiplexer (machine(), (m_via_out[PORTB] >> 1) & 0x3);
419404}
420405
421406
422static WRITE8_DEVICE_HANDLER(v_via_ca2_w)
407WRITE8_MEMBER(vectrex_state::v_via_ca2_w)
423408{
424   vectrex_state *state = space.machine().driver_data<vectrex_state>();
425409   if (data == 0)
426      space.machine().scheduler().timer_set(attotime::from_nsec(ANALOG_DELAY), timer_expired_delegate(FUNC(vectrex_state::vectrex_zero_integrators),state));
410      machine().scheduler().timer_set(attotime::from_nsec(ANALOG_DELAY), timer_expired_delegate(FUNC(vectrex_state::vectrex_zero_integrators),this));
427411}
428412
429413
430static WRITE8_DEVICE_HANDLER(v_via_cb2_w)
414WRITE8_MEMBER(vectrex_state::v_via_cb2_w)
431415{
432   vectrex_state *state = space.machine().driver_data<vectrex_state>();
433416   int dx, dy;
434417
435   if (state->m_cb2 != data)
418   if (m_cb2 != data)
436419   {
437420
438421      /* Check lightpen */
439      if (state->m_lightpen_port != 0)
422      if (m_lightpen_port != 0)
440423      {
441         state->m_lightpen_down = state->ioport("LPENCONF")->read() & 0x10;
424         m_lightpen_down = ioport("LPENCONF")->read() & 0x10;
442425
443         if (state->m_lightpen_down)
426         if (m_lightpen_down)
444427         {
445            state->m_pen_x = state->ioport("LPENX")->read() * (state->m_x_max / 0xff);
446            state->m_pen_y = state->ioport("LPENY")->read() * (state->m_y_max / 0xff);
428            m_pen_x = ioport("LPENX")->read() * (m_x_max / 0xff);
429            m_pen_y = ioport("LPENY")->read() * (m_y_max / 0xff);
447430
448            dx = abs(state->m_pen_x - state->m_x_int);
449            dy = abs(state->m_pen_y - state->m_y_int);
431            dx = abs(m_pen_x - m_x_int);
432            dy = abs(m_pen_y - m_y_int);
450433            if (dx < 500000 && dy < 500000 && data > 0)
451               space.machine().scheduler().timer_set(attotime::zero, timer_expired_delegate(FUNC(vectrex_state::lightpen_trigger),state));
434               machine().scheduler().timer_set(attotime::zero, timer_expired_delegate(FUNC(vectrex_state::lightpen_trigger),this));
452435         }
453436      }
454437
455      space.machine().scheduler().timer_set(attotime::zero, timer_expired_delegate(FUNC(vectrex_state::update_signal),state), data, &state->m_blank);
456      state->m_cb2 = data;
438      machine().scheduler().timer_set(attotime::zero, timer_expired_delegate(FUNC(vectrex_state::update_signal),this), data, &m_blank);
439      m_cb2 = data;
457440   }
458441}
459442
r18175r18176
466449
467450const via6522_interface spectrum1_via6522_interface =
468451{
469   /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_HANDLER(vectrex_via_pa_r), DEVCB_HANDLER(vectrex_s1_via_pb_r), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
470   /*outputs: A/B,CA/B1,CA/B2 */ DEVCB_HANDLER(v_via_pa_w), DEVCB_HANDLER(v_via_pb_w), DEVCB_NULL, DEVCB_NULL, DEVCB_HANDLER(v_via_ca2_w), DEVCB_HANDLER(v_via_cb2_w),
452   /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_DRIVER_MEMBER(vectrex_state,vectrex_via_pa_r), DEVCB_DRIVER_MEMBER(vectrex_state,vectrex_s1_via_pb_r), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
453   /*outputs: A/B,CA/B1,CA/B2 */ DEVCB_DRIVER_MEMBER(vectrex_state,v_via_pa_w), DEVCB_DRIVER_MEMBER(vectrex_state,v_via_pb_w), DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(vectrex_state,v_via_ca2_w), DEVCB_DRIVER_MEMBER(vectrex_state,v_via_cb2_w),
471454   /*irq                      */ DEVCB_LINE(vectrex_via_irq),
472455};
473456
trunk/src/mame/video/homerun.c
r18175r18176
3535   m_scrollx = (m_scrollx & 0xff00) | data;
3636}
3737
38WRITE8_DEVICE_HANDLER(homerun_banking_w)
38WRITE8_MEMBER(homerun_state::homerun_banking_w)
3939{
40   homerun_state *state = space.machine().driver_data<homerun_state>();
4140
4241   // games do mid-screen gfx bank switching
43   int vpos = space.machine().primary_screen->vpos();
44   space.machine().primary_screen->update_partial(vpos);
42   int vpos = machine().primary_screen->vpos();
43   machine().primary_screen->update_partial(vpos);
4544
4645   // d0-d1: gfx bank
4746   // d2-d4: ?
4847   // d5-d7: prg bank
49   state->m_gfx_ctrl = data;
50   state->m_tilemap->mark_all_dirty();
51   state->membank("bank1")->set_entry(data >> 5 & 7);
48   m_gfx_ctrl = data;
49   m_tilemap->mark_all_dirty();
50   membank("bank1")->set_entry(data >> 5 & 7);
5251}
5352
5453WRITE8_MEMBER(homerun_state::homerun_videoram_w)
trunk/src/mame/drivers/puckpkmn.c
r18175r18176
220220   AM_RANGE(0x700016, 0x700017) AM_READ_PORT("DSW1")
221221   AM_RANGE(0x700018, 0x700019) AM_READ_PORT("DSW2")
222222   AM_RANGE(0x700022, 0x700023) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
223   AM_RANGE(0xa04000, 0xa04003) AM_DEVREADWRITE8_LEGACY("ymsnd", megadriv_68k_YM2612_read, megadriv_68k_YM2612_write, 0xffff)
223   AM_RANGE(0xa04000, 0xa04003) AM_READWRITE8(megadriv_68k_YM2612_read, megadriv_68k_YM2612_write, 0xffff)
224224   AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega_genesis_vdp_device, megadriv_vdp_r,megadriv_vdp_w)
225225
226226   AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_MIRROR(0x1f0000)
r18175r18176
244244   AM_RANGE(0x700016, 0x700017) AM_READ_PORT("DSW1")
245245   AM_RANGE(0x700018, 0x700019) AM_READ_PORT("DSW2")
246246   AM_RANGE(0x700022, 0x700023) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
247   AM_RANGE(0xa04000, 0xa04003) AM_DEVREADWRITE8_LEGACY("ymsnd", megadriv_68k_YM2612_read, megadriv_68k_YM2612_write, 0xffff)
247   AM_RANGE(0xa04000, 0xa04003) AM_READWRITE8( megadriv_68k_YM2612_read, megadriv_68k_YM2612_write, 0xffff)
248248   AM_RANGE(0xc00000, 0xc0001f) AM_DEVREADWRITE("gen_vdp", sega_genesis_vdp_device, megadriv_vdp_r,megadriv_vdp_w)
249249
250250
trunk/src/mame/drivers/leland.c
r18175r18176
700700{
701701   AY8910_SINGLE_OUTPUT,
702702   {1000, 0, 0},
703   DEVCB_HANDLER(leland_sound_port_r),
703   DEVCB_DRIVER_MEMBER(leland_state, leland_sound_port_r),
704704   DEVCB_NULL,
705   DEVCB_HANDLER(leland_sound_port_w),
705   DEVCB_DRIVER_MEMBER(leland_state, leland_sound_port_w),
706706   DEVCB_NULL
707707};
708708
trunk/src/mame/drivers/naomi.c
r18175r18176
15661566   AM_RANGE(0x005f7c00, 0x005f7cff) AM_MIRROR(0x02000000) AM_READWRITE_LEGACY(pvr_ctrl_r, pvr_ctrl_w )
15671567   AM_RANGE(0x005f8000, 0x005f9fff) AM_MIRROR(0x02000000) AM_READWRITE_LEGACY(pvr_ta_r, pvr_ta_w )
15681568   AM_RANGE(0x00600000, 0x006007ff) AM_MIRROR(0x02000000) AM_READWRITE_LEGACY(dc_modem_r, dc_modem_w )
1569   AM_RANGE(0x00700000, 0x00707fff) AM_MIRROR(0x02000000) AM_DEVREADWRITE_LEGACY("aica", dc_aica_reg_r, dc_aica_reg_w )
1569   AM_RANGE(0x00700000, 0x00707fff) AM_MIRROR(0x02000000) AM_READWRITE(dc_aica_reg_r, dc_aica_reg_w )
15701570   AM_RANGE(0x00710000, 0x0071000f) AM_MIRROR(0x02000000) AM_READWRITE_LEGACY(dc_rtc_r, dc_rtc_w )
15711571   AM_RANGE(0x00800000, 0x00ffffff) AM_MIRROR(0x02000000) AM_READWRITE_LEGACY(naomi_arm_r, naomi_arm_w )           // sound RAM (8 MB)
15721572
r18175r18176
16181618   AM_RANGE(0x005f7c00, 0x005f7cff) AM_READWRITE_LEGACY(pvr_ctrl_r, pvr_ctrl_w )
16191619   AM_RANGE(0x005f8000, 0x005f9fff) AM_READWRITE_LEGACY(pvr_ta_r, pvr_ta_w )
16201620   AM_RANGE(0x00600000, 0x006007ff) AM_MIRROR(0x02000000) AM_READWRITE_LEGACY(dc_modem_r, dc_modem_w )
1621   AM_RANGE(0x00700000, 0x00707fff) AM_MIRROR(0x02000000) AM_DEVREADWRITE_LEGACY("aica", dc_aica_reg_r, dc_aica_reg_w )
1621   AM_RANGE(0x00700000, 0x00707fff) AM_MIRROR(0x02000000) AM_READWRITE(dc_aica_reg_r, dc_aica_reg_w )
16221622   AM_RANGE(0x00710000, 0x0071000f) AM_MIRROR(0x02000000) AM_READWRITE_LEGACY(dc_rtc_r, dc_rtc_w )
16231623   AM_RANGE(0x00800000, 0x00ffffff) AM_MIRROR(0x02000000) AM_READWRITE_LEGACY(naomi_arm_r, naomi_arm_w )           // sound RAM (8 MB)
16241624
r18175r18176
17711771   AM_RANGE(0x005f7c00, 0x005f7cff) AM_READWRITE_LEGACY(pvr_ctrl_r, pvr_ctrl_w )
17721772   AM_RANGE(0x005f8000, 0x005f9fff) AM_READWRITE_LEGACY(pvr_ta_r, pvr_ta_w )
17731773   AM_RANGE(0x00600000, 0x006007ff) AM_READWRITE_LEGACY(aw_modem_r, aw_modem_w )
1774   AM_RANGE(0x00700000, 0x00707fff) AM_DEVREADWRITE_LEGACY("aica", dc_aica_reg_r, dc_aica_reg_w )
1774   AM_RANGE(0x00700000, 0x00707fff) AM_READWRITE(dc_aica_reg_r, dc_aica_reg_w )
17751775   AM_RANGE(0x00710000, 0x0071000f) AM_READWRITE_LEGACY(dc_rtc_r, dc_rtc_w )
17761776   AM_RANGE(0x00800000, 0x00ffffff) AM_READWRITE_LEGACY(naomi_arm_r, naomi_arm_w )           // sound RAM (8 MB)
17771777
r18175r18176
18321832static ADDRESS_MAP_START( dc_audio_map, AS_PROGRAM, 32, dc_state )
18331833   ADDRESS_MAP_UNMAP_HIGH
18341834   AM_RANGE(0x00000000, 0x007fffff) AM_RAM   AM_SHARE("dc_sound_ram")                /* shared with SH-4 */
1835   AM_RANGE(0x00800000, 0x00807fff) AM_DEVREADWRITE_LEGACY("aica", dc_arm_aica_r, dc_arm_aica_w)
1835   AM_RANGE(0x00800000, 0x00807fff) AM_READWRITE(dc_arm_aica_r, dc_arm_aica_w)
18361836ADDRESS_MAP_END
18371837
18381838/*
trunk/src/mame/drivers/system1.c
r18175r18176
471471
472472WRITE8_MEMBER(system1_state::sound_control_w)
473473{
474   device_t *device = machine().device("ppi8255");
475474   /* bit 0 = MUTE (inverted sense on System 2) */
476475   machine().sound().system_mute((data ^ m_mute_xor) & 1);
477476
r18175r18176
481480   machine().device("soundcpu")->execute().set_input_line(INPUT_LINE_NMI, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
482481
483482   /* remaining bits are used for video RAM banking */
484   system1_videoram_bank_w(device, space, offset, data);
483   system1_videoram_bank_w(space, offset, data);
485484}
486485
487486
trunk/src/mame/drivers/m10.c
r18175r18176
128128
129129#define LOG(x) do { if (DEBUG) printf x; } while (0)
130130
131static WRITE8_DEVICE_HANDLER( ic8j1_output_changed )
131WRITE8_MEMBER(m10_state::ic8j1_output_changed)
132132{
133   m10_state *state = space.machine().driver_data<m10_state>();
134   LOG(("ic8j1: %d %d\n", data, space.machine().primary_screen->vpos()));
135   state->m_maincpu->set_input_line(0, !data ? CLEAR_LINE : ASSERT_LINE);
133   LOG(("ic8j1: %d %d\n", data, machine().primary_screen->vpos()));
134   m_maincpu->set_input_line(0, !data ? CLEAR_LINE : ASSERT_LINE);
136135}
137136
138static WRITE8_DEVICE_HANDLER( ic8j2_output_changed )
137WRITE8_MEMBER(m10_state::ic8j2_output_changed)
139138{
140   m10_state *state = space.machine().driver_data<m10_state>();
141139
142140   /* written from /Q to A with slight delight */
143141   LOG(("ic8j2: %d\n", data));
144   ttl74123_a_w(device, space, 0, data);
145   ttl74123_a_w(state->m_ic8j1, space, 0, data);
142   ttl74123_a_w(m_ic8j2, space, 0, data);
143   ttl74123_a_w(m_ic8j1, space, 0, data);
146144}
147145
148146static const ttl74123_interface ic8j1_intf =
r18175r18176
154152   1,               /* A pin - driven by the CRTC */
155153   1,               /* B pin - pulled high */
156154   1,               /* Clear pin - pulled high */
157   DEVCB_HANDLER(ic8j1_output_changed)
155   DEVCB_DRIVER_MEMBER(m10_state,ic8j1_output_changed)
158156};
159157
160158static const ttl74123_interface ic8j2_intf =
r18175r18176
166164   1,               /* A pin - driven by the CRTC */
167165   1,               /* B pin - pulled high */
168166   1,               /* Clear pin - pulled high */
169   DEVCB_HANDLER(ic8j2_output_changed)
167   DEVCB_DRIVER_MEMBER(m10_state,ic8j2_output_changed)
170168};
171169
172170/*************************************
trunk/src/mame/drivers/spiders.c
r18175r18176
372372 *
373373 *************************************/
374374
375static WRITE8_DEVICE_HANDLER( ic60_74123_output_changed)
375WRITE8_MEMBER(spiders_state::ic60_74123_output_changed)
376376{
377   pia6821_device *pia2 = space.machine().device<pia6821_device>("pia2");
377   pia6821_device *pia2 = machine().device<pia6821_device>("pia2");
378378   pia2->ca1_w(data);
379379}
380380
r18175r18176
387387   1,               /* A pin - driven by the CRTC */
388388   1,               /* B pin - pulled high */
389389   1,               /* Clear pin - pulled high */
390   DEVCB_HANDLER(ic60_74123_output_changed)
390   DEVCB_DRIVER_MEMBER(spiders_state,ic60_74123_output_changed)
391391};
392392
393393
trunk/src/mame/drivers/snk.c
r18175r18176
459459      device->machine().scheduler().synchronize(timer_expired_delegate(FUNC(snk_state::sndirq_update_callback),drvstate), YM1IRQ_ASSERT);
460460}
461461
462static WRITE_LINE_DEVICE_HANDLER( ymirq_callback_2 )
462WRITE_LINE_MEMBER(snk_state::ymirq_callback_2)
463463{
464   snk_state *drvstate = device->machine().driver_data<snk_state>();
465464   if (state)
466      device->machine().scheduler().synchronize(timer_expired_delegate(FUNC(snk_state::sndirq_update_callback),drvstate), YM2IRQ_ASSERT);
465      machine().scheduler().synchronize(timer_expired_delegate(FUNC(snk_state::sndirq_update_callback),this), YM2IRQ_ASSERT);
467466}
468467
469468
r18175r18176
474473
475474static const ym3526_interface ym3526_config_2 =
476475{
477   DEVCB_LINE(ymirq_callback_2)
476   DEVCB_DRIVER_LINE_MEMBER(snk_state,ymirq_callback_2)
478477};
479478
480479static const ym3812_interface ym3812_config_1 =
r18175r18176
484483
485484static const y8950_interface y8950_config_2 =
486485{
487   DEVCB_LINE(ymirq_callback_2)
486   DEVCB_DRIVER_LINE_MEMBER(snk_state,ymirq_callback_2)
488487};
489488
490489
trunk/src/mame/drivers/qix.c
r18175r18176
245245   AM_RANGE(0x8c00, 0x8c00) AM_MIRROR(0x3fe) AM_READWRITE(qix_video_firq_r, qix_video_firq_w)
246246   AM_RANGE(0x8c01, 0x8c01) AM_MIRROR(0x3fe) AM_READWRITE(qix_data_firq_ack_r, qix_data_firq_ack_w)
247247   AM_RANGE(0x9000, 0x93ff) AM_DEVREADWRITE("sndpia0", pia6821_device, read, write)
248   AM_RANGE(0x9400, 0x97ff) AM_DEVREAD("pia0", pia6821_device, read) AM_DEVWRITE_LEGACY("pia0", qix_pia_w)
248   AM_RANGE(0x9400, 0x97ff) AM_DEVREAD("pia0", pia6821_device, read) AM_WRITE(qix_pia_w)
249249   AM_RANGE(0x9800, 0x9bff) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
250250   AM_RANGE(0x9c00, 0x9fff) AM_DEVREADWRITE("pia2", pia6821_device, read, write)
251251   AM_RANGE(0xa000, 0xffff) AM_ROM
r18175r18176
259259   AM_RANGE(0x0c00, 0x0c00) AM_MIRROR(0x3fe) AM_READWRITE(qix_video_firq_r, qix_video_firq_w)
260260   AM_RANGE(0x0c01, 0x0c01) AM_MIRROR(0x3fe) AM_READWRITE(qix_data_firq_ack_r, qix_data_firq_ack_w)
261261   AM_RANGE(0x1000, 0x13ff) AM_DEVREADWRITE("sndpia0", pia6821_device, read, write)
262   AM_RANGE(0x1400, 0x17ff) AM_DEVREAD("pia0", pia6821_device, read) AM_DEVWRITE_LEGACY("pia0", qix_pia_w)
262   AM_RANGE(0x1400, 0x17ff) AM_DEVREAD("pia0", pia6821_device, read) AM_WRITE(qix_pia_w)
263263   AM_RANGE(0x1800, 0x1bff) AM_DEVREADWRITE("pia1", pia6821_device, read, write)
264264   AM_RANGE(0x1c00, 0x1fff) AM_DEVREADWRITE("pia2", pia6821_device, read, write)
265265   AM_RANGE(0x8000, 0xffff) AM_ROM
trunk/src/mame/drivers/equites.c
r18175r18176
564564   equites_update_dac(machine());
565565}
566566
567static WRITE_LINE_DEVICE_HANDLER( equites_msm5232_gate )
567WRITE_LINE_MEMBER(equites_state::equites_msm5232_gate)
568568{
569569}
570570
r18175r18176
11111111static const msm5232_interface equites_5232intf =
11121112{
11131113   { 0.47e-6, 0.47e-6, 0.47e-6, 0.47e-6, 0.47e-6, 0.47e-6, 0.47e-6, 0.47e-6 }, // verified
1114   DEVCB_LINE(equites_msm5232_gate)
1114   DEVCB_DRIVER_LINE_MEMBER(equites_state,equites_msm5232_gate)
11151115};
11161116
11171117
trunk/src/mame/drivers/stfight.c
r18175r18176
245245   AM_RANGE(0xc203, 0xc204) AM_READ(stfight_dsw_r)      /* DS0,1 */
246246   AM_RANGE(0xc205, 0xc205) AM_READ(stfight_coin_r)   /* coin mech */
247247   AM_RANGE(0xc500, 0xc500) AM_WRITE(stfight_fm_w)               /* play fm sound */
248   AM_RANGE(0xc600, 0xc600) AM_DEVWRITE_LEGACY("msm", stfight_adpcm_control_w)    /* voice control */
248   AM_RANGE(0xc600, 0xc600) AM_WRITE(stfight_adpcm_control_w)    /* voice control */
249249   AM_RANGE(0xc700, 0xc700) AM_WRITE(stfight_coin_w)             /* coin mech */
250250   AM_RANGE(0xc804, 0xc806) AM_WRITENOP                    /* TBD */
251251   AM_RANGE(0xc807, 0xc807) AM_WRITE(stfight_sprite_bank_w)
trunk/src/mame/drivers/gaelco2.c
r18175r18176
222222    AM_RANGE(0x300000, 0x300001) AM_READ_PORT("P1")
223223    AM_RANGE(0x300002, 0x300003) AM_READNOP                                                    /* Random number generator? */
224224   AM_RANGE(0x300000, 0x300003) AM_WRITE(gaelco2_coin2_w)                                          /* Coin Counters */
225   AM_RANGE(0x300008, 0x300009) AM_DEVWRITE_LEGACY("eeprom", gaelco2_eeprom_data_w)                                    /* EEPROM data */
226   AM_RANGE(0x30000a, 0x30000b) AM_DEVWRITE_LEGACY("eeprom", gaelco2_eeprom_sk_w)                                       /* EEPROM serial clock */
227   AM_RANGE(0x30000c, 0x30000d) AM_DEVWRITE_LEGACY("eeprom", gaelco2_eeprom_cs_w)                                       /* EEPROM chip select */
225   AM_RANGE(0x300008, 0x300009) AM_WRITE(gaelco2_eeprom_data_w)                                    /* EEPROM data */
226   AM_RANGE(0x30000a, 0x30000b) AM_WRITE(gaelco2_eeprom_sk_w)                                       /* EEPROM serial clock */
227   AM_RANGE(0x30000c, 0x30000d) AM_WRITE(gaelco2_eeprom_cs_w)                                       /* EEPROM chip select */
228228    AM_RANGE(0x300010, 0x300011) AM_READ_PORT("P2")
229229    AM_RANGE(0x300020, 0x300021) AM_READ_PORT("COIN")
230230    AM_RANGE(0x310000, 0x310001) AM_READ(p1_gun_x) AM_WRITE(bang_clr_gun_int_w)                           /* Gun 1P X */ /* CLR INT Gun */
r18175r18176
913913   AM_RANGE(0x218004, 0x218009) AM_RAM AM_SHARE("vregs")                                                /* Video Registers */
914914   AM_RANGE(0x300000, 0x300001) AM_READ_PORT("P1")
915915   AM_RANGE(0x300000, 0x300003) AM_WRITE(gaelco2_coin2_w)                                                   /* Coin Counters */
916   AM_RANGE(0x300008, 0x300009) AM_DEVWRITE_LEGACY("eeprom", gaelco2_eeprom_data_w)                                             /* EEPROM data */
917   AM_RANGE(0x30000a, 0x30000b) AM_DEVWRITE_LEGACY("eeprom", gaelco2_eeprom_sk_w)                                                /* EEPROM serial clock */
918   AM_RANGE(0x30000c, 0x30000d) AM_DEVWRITE_LEGACY("eeprom", gaelco2_eeprom_cs_w)                                                /* EEPROM chip select */
916   AM_RANGE(0x300008, 0x300009) AM_WRITE(gaelco2_eeprom_data_w)                                             /* EEPROM data */
917   AM_RANGE(0x30000a, 0x30000b) AM_WRITE(gaelco2_eeprom_sk_w)                                                /* EEPROM serial clock */
918   AM_RANGE(0x30000c, 0x30000d) AM_WRITE(gaelco2_eeprom_cs_w)                                                /* EEPROM chip select */
919919   AM_RANGE(0x300010, 0x300011) AM_READ_PORT("P2")
920920   AM_RANGE(0x300020, 0x300021) AM_READ_PORT("COIN")
921921   AM_RANGE(0x310000, 0x31ffff) AM_READWRITE(snowboar_protection_r,snowboar_protection_w) AM_SHARE("snowboar_prot")   /* Protection */
trunk/src/mame/drivers/homerun.c
r18175r18176
343343      DEVCB_INPUT_PORT("DSW"),
344344      DEVCB_NULL,
345345      DEVCB_NULL,
346      DEVCB_HANDLER(homerun_banking_w)
346      DEVCB_DRIVER_MEMBER(homerun_state, homerun_banking_w)
347347   },
348348   DEVCB_NULL
349349};
trunk/src/mame/drivers/topspeed.c
r18175r18176
419419   reset_sound_region(machine());
420420}
421421
422static WRITE8_DEVICE_HANDLER( topspeed_tc0140syt_comm_w )
422WRITE8_MEMBER(topspeed_state::topspeed_tc0140syt_comm_w)
423423{
424   space.machine().device("audiocpu")->execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
424   device_t *device = machine().device("tc0140syt");
425   machine().device("audiocpu")->execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
425426   tc0140syt_comm_w(device, space, 0, data);
426427}
427428
r18175r18176
504505   AM_RANGE(0x500000, 0x503fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
505506   AM_RANGE(0x600002, 0x600003) AM_WRITE(cpua_ctrl_w)
506507   AM_RANGE(0x7e0000, 0x7e0001) AM_READNOP AM_DEVWRITE8_LEGACY("tc0140syt", tc0140syt_port_w, 0x00ff)
507   AM_RANGE(0x7e0002, 0x7e0003) AM_DEVREADWRITE8_LEGACY("tc0140syt", tc0140syt_comm_r, topspeed_tc0140syt_comm_w, 0x00ff)
508   AM_RANGE(0x7e0002, 0x7e0003) AM_DEVREAD8_LEGACY("tc0140syt", tc0140syt_comm_r, 0x00ff) AM_WRITE8(topspeed_tc0140syt_comm_w, 0x00ff)
508509   AM_RANGE(0x800000, 0x8003ff) AM_RAM AM_SHARE("raster_ctrl")
509510   AM_RANGE(0x800400, 0x80ffff) AM_RAM
510511   AM_RANGE(0xa00000, 0xa0ffff) AM_DEVREADWRITE_LEGACY("pc080sn_1", pc080sn_word_r, pc080sn_word_w)
trunk/src/mame/drivers/mcr.c
r18175r18176
649649 *
650650 *************************************/
651651
652WRITE16_DEVICE_HANDLER( mcr_ipu_sio_transmit )
652WRITE16_MEMBER(mcr_state::mcr_ipu_sio_transmit)
653653{
654654   logerror("ipu_sio_transmit: %02X\n", data);
655655
trunk/src/mame/drivers/xxmissio.c
r18175r18176
273273      AY8910_DEFAULT_LOADS,
274274      DEVCB_NULL,
275275      DEVCB_NULL,
276      DEVCB_HANDLER(xxmissio_scroll_x_w),
277      DEVCB_HANDLER(xxmissio_scroll_y_w)
276      DEVCB_DRIVER_MEMBER(xxmissio_state, xxmissio_scroll_x_w),
277      DEVCB_DRIVER_MEMBER(xxmissio_state, xxmissio_scroll_y_w)
278278   },
279279   DEVCB_NULL
280280};
trunk/src/mame/drivers/simpsons.c
r18175r18176
9696   AM_RANGE(0x1fc0, 0x1fc0) AM_WRITE(simpsons_coin_counter_w)
9797   AM_RANGE(0x1fc2, 0x1fc2) AM_WRITE(simpsons_eeprom_w)
9898   AM_RANGE(0x1fc4, 0x1fc4) AM_READ(simpsons_sound_interrupt_r)
99   AM_RANGE(0x1fc6, 0x1fc7) AM_DEVREADWRITE_LEGACY("k053260", simpsons_sound_r, k053260_w)
99   AM_RANGE(0x1fc6, 0x1fc7) AM_READ(simpsons_sound_r) AM_DEVWRITE_LEGACY("k053260",k053260_w)
100100   AM_RANGE(0x1fc8, 0x1fc9) AM_DEVREAD_LEGACY("k053246", k053246_r)
101101   AM_RANGE(0x1fca, 0x1fca) AM_READ(watchdog_reset_r)
102102   AM_RANGE(0x2000, 0x3fff) AM_RAMBANK("bank4")
trunk/src/mame/drivers/hanaawas.c
r18175r18176
178178   DEVCB_INPUT_PORT("DSW"),
179179   DEVCB_NULL,
180180   DEVCB_NULL,
181   DEVCB_HANDLER(hanaawas_portB_w)
181   DEVCB_DRIVER_MEMBER(hanaawas_state, hanaawas_portB_w)
182182};
183183
184184
trunk/src/mame/drivers/tatsumi.c
r18175r18176
245245   AM_RANGE(0x00000, 0x01fff) AM_RAM
246246   AM_RANGE(0x04000, 0x04003) AM_NOP // piu select .. ?
247247   AM_RANGE(0x06000, 0x06001) AM_READ_PORT("IN0") // esw
248   AM_RANGE(0x08000, 0x08001) AM_DEVREADWRITE_LEGACY("ymsnd", tatsumi_hack_ym2151_r, ym2151_w)
249   AM_RANGE(0x0a000, 0x0a000) AM_DEVREAD_LEGACY("oki", tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write)
248   AM_RANGE(0x08000, 0x08001) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE_LEGACY("ymsnd", ym2151_w)
249   AM_RANGE(0x0a000, 0x0a000) AM_READ(tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write)
250250   AM_RANGE(0x0e000, 0x0e007) AM_READWRITE(apache3_adc_r, apache3_adc_w) //adc select
251251   AM_RANGE(0xf0000, 0xfffff) AM_ROM
252252ADDRESS_MAP_END
r18175r18176
289289static ADDRESS_MAP_START( roundup5_z80_map, AS_PROGRAM, 8, tatsumi_state )
290290   AM_RANGE(0x0000, 0xdfff) AM_ROM
291291   AM_RANGE(0xe000, 0xffef) AM_RAM
292   AM_RANGE(0xfff0, 0xfff1) AM_DEVREADWRITE_LEGACY("ymsnd", tatsumi_hack_ym2151_r, ym2151_w)
293   AM_RANGE(0xfff4, 0xfff4) AM_DEVREAD_LEGACY("oki", tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write)
292   AM_RANGE(0xfff0, 0xfff1) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE_LEGACY("ymsnd", ym2151_w)
293   AM_RANGE(0xfff4, 0xfff4) AM_READ(tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write)
294294   AM_RANGE(0xfff8, 0xfff8) AM_READ_PORT("IN0")
295295   AM_RANGE(0xfff9, 0xfff9) AM_READ_PORT("IN1")
296296   AM_RANGE(0xfffc, 0xfffc) AM_READ_PORT("STICKX")
r18175r18176
346346static ADDRESS_MAP_START( cyclwarr_z80_map, AS_PROGRAM, 8, tatsumi_state )
347347   AM_RANGE(0x0000, 0xdfff) AM_ROM
348348   AM_RANGE(0xe000, 0xffef) AM_RAM
349   AM_RANGE(0xfff0, 0xfff1) AM_DEVREADWRITE_LEGACY("ymsnd", tatsumi_hack_ym2151_r, ym2151_w)
350   AM_RANGE(0xfff4, 0xfff4) AM_DEVREAD_LEGACY("oki", tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write)
349   AM_RANGE(0xfff0, 0xfff1) AM_READ(tatsumi_hack_ym2151_r) AM_DEVWRITE_LEGACY("ymsnd", ym2151_w)
350   AM_RANGE(0xfff4, 0xfff4) AM_READ(tatsumi_hack_oki_r) AM_DEVWRITE("oki", okim6295_device, write)
351351   AM_RANGE(0xfffc, 0xfffc) AM_READ(soundlatch_byte_r)
352352   AM_RANGE(0xfffe, 0xfffe) AM_WRITENOP
353353ADDRESS_MAP_END
trunk/src/mame/drivers/phoenix.c
r18175r18176
437437   AY8910_LEGACY_OUTPUT,
438438   AY8910_DEFAULT_LOADS,
439439   DEVCB_NULL,
440   DEVCB_HANDLER(survival_protection_r),
440   DEVCB_DRIVER_MEMBER(phoenix_state, survival_protection_r),
441441   DEVCB_NULL,
442442   DEVCB_NULL
443443};
r18175r18176
514514{
515515   DEVCB_NULL,                     /* STATUS changed callback */
516516   DEVCB_NULL,                     /* INTE changed callback */
517   DEVCB_LINE(survival_sid_callback),   /* SID changed callback (8085A only) */
517   DEVCB_DRIVER_LINE_MEMBER(phoenix_state, survival_sid_callback),   /* SID changed callback (8085A only) */
518518   DEVCB_NULL                     /* SOD changed callback (8085A only) */
519519};
520520
trunk/src/mame/drivers/ataxx.c
r18175r18176
6060   AM_RANGE(0x05, 0x05) AM_DEVWRITE_LEGACY("custom", leland_80186_command_hi_w)
6161   AM_RANGE(0x06, 0x06) AM_DEVWRITE_LEGACY("custom", leland_80186_command_lo_w)
6262   AM_RANGE(0x0c, 0x0c) AM_DEVWRITE_LEGACY("custom", ataxx_80186_control_w)
63   AM_RANGE(0x20, 0x20) AM_DEVREADWRITE_LEGACY("eeprom", ataxx_eeprom_r, ataxx_eeprom_w)
63   AM_RANGE(0x20, 0x20) AM_READWRITE(ataxx_eeprom_r, ataxx_eeprom_w)
6464   AM_RANGE(0xd0, 0xef) AM_READWRITE(ataxx_mvram_port_r, ataxx_mvram_port_w)
6565   AM_RANGE(0xf0, 0xff) AM_READWRITE(ataxx_master_input_r, ataxx_master_output_w)
6666ADDRESS_MAP_END
trunk/src/mame/audio/qix.c
r18175r18176
180180   DEVCB_DEVICE_HANDLER("sndpia1", sync_sndpia1_porta_w),         /* port A out */
181181   DEVCB_DEVICE_HANDLER("discrete", qix_vol_w),               /* port B out */
182182   DEVCB_DEVICE_LINE_MEMBER("sndpia1", pia6821_device, ca1_w),      /* line CA2 out */
183   DEVCB_HANDLER(qix_flip_screen_w),                        /* port CB2 out */
183   DEVCB_DRIVER_MEMBER(qix_state,qix_flip_screen_w),                        /* port CB2 out */
184184   DEVCB_LINE(qix_pia_dint),                              /* IRQA */
185185   DEVCB_LINE(qix_pia_dint)                              /* IRQB */
186186};
r18175r18176
228228   DEVCB_NULL,      /* port A out */
229229   DEVCB_HANDLER(slither_coinctl_w),   /* port B out */
230230   DEVCB_NULL,      /* line CA2 out */
231   DEVCB_HANDLER(qix_flip_screen_w),   /* port CB2 out */
231   DEVCB_DRIVER_MEMBER(qix_state,qix_flip_screen_w),   /* port CB2 out */
232232   DEVCB_LINE(qix_pia_dint),         /* IRQA */
233233   DEVCB_LINE(qix_pia_dint)         /* IRQB */
234234};
trunk/src/mame/machine/simpsons.c
r18175r18176
5151   return 0x00;
5252}
5353
54READ8_DEVICE_HANDLER( simpsons_sound_r )
54READ8_MEMBER(simpsons_state::simpsons_sound_r)
5555{
56   return k053260_r(device, space, 2 + offset);
56   return k053260_r(machine().device("k053260"), space, 2 + offset);
5757}
5858
5959
trunk/src/mame/machine/vectrex.c
r18175r18176
227227}
228228
229229
230READ8_DEVICE_HANDLER(vectrex_via_pb_r)
230READ8_MEMBER(vectrex_state::vectrex_via_pb_r)
231231{
232   vectrex_state *state = space.machine().driver_data<vectrex_state>();
233232   int pot;
234233   static const char *const ctrlnames[] = { "CONTR1X", "CONTR1Y", "CONTR2X", "CONTR2Y" };
235234
236   pot = space.machine().root_device().ioport(ctrlnames[(state->m_via_out[PORTB] & 0x6) >> 1])->read() - 0x80;
235   pot = machine().root_device().ioport(ctrlnames[(m_via_out[PORTB] & 0x6) >> 1])->read() - 0x80;
237236
238   if (pot > (signed char)state->m_via_out[PORTA])
239      state->m_via_out[PORTB] |= 0x20;
237   if (pot > (signed char)m_via_out[PORTA])
238      m_via_out[PORTB] |= 0x20;
240239   else
241      state->m_via_out[PORTB] &= ~0x20;
240      m_via_out[PORTB] &= ~0x20;
242241
243   return state->m_via_out[PORTB];
242   return m_via_out[PORTB];
244243}
245244
246245
247READ8_DEVICE_HANDLER(vectrex_via_pa_r)
246READ8_MEMBER(vectrex_state::vectrex_via_pa_r)
248247{
249   vectrex_state *state = space.machine().driver_data<vectrex_state>();
250   if ((!(state->m_via_out[PORTB] & 0x10)) && (state->m_via_out[PORTB] & 0x08))
248   if ((!(m_via_out[PORTB] & 0x10)) && (m_via_out[PORTB] & 0x08))
251249      /* BDIR inactive, we can read the PSG. BC1 has to be active. */
252250   {
253      device_t *ay = space.machine().device("ay8912");
251      device_t *ay = machine().device("ay8912");
254252
255      state->m_via_out[PORTA] = ay8910_r(ay, space, 0)
256         & ~(state->m_imager_pinlevel & 0x80);
253      m_via_out[PORTA] = ay8910_r(ay, space, 0)
254         & ~(m_imager_pinlevel & 0x80);
257255   }
258   return state->m_via_out[PORTA];
256   return m_via_out[PORTA];
259257}
260258
261259
262READ8_DEVICE_HANDLER(vectrex_s1_via_pb_r)
260READ8_MEMBER(vectrex_state::vectrex_s1_via_pb_r)
263261{
264   vectrex_state *state = space.machine().driver_data<vectrex_state>();
265   return (state->m_via_out[PORTB] & ~0x40) | (state->ioport("COIN")->read() & 0x40);
262   return (m_via_out[PORTB] & ~0x40) | (ioport("COIN")->read() & 0x40);
266263}
267264
268265
trunk/src/mame/machine/stfight.c
r18175r18176
210210   state->m_toggle ^= 1;
211211}
212212
213WRITE8_DEVICE_HANDLER( stfight_adpcm_control_w )
213WRITE8_MEMBER(stfight_state::stfight_adpcm_control_w)
214214{
215   stfight_state *state = space.machine().driver_data<stfight_state>();
216215    if( data < 0x08 )
217216    {
218        state->m_adpcm_data_offs = sampleLimits[data];
219        state->m_adpcm_data_end = sampleLimits[data+1];
217        m_adpcm_data_offs = sampleLimits[data];
218        m_adpcm_data_end = sampleLimits[data+1];
220219    }
221220
222    msm5205_reset_w( device, data & 0x08 ? 1 : 0 );
221    msm5205_reset_w( machine().device("msm"), data & 0x08 ? 1 : 0 );
223222}
224223
225224WRITE8_MEMBER(stfight_state::stfight_e800_w)
trunk/src/mame/machine/scramble.c
r18175r18176
4949
5050/* state of the security PAL (6J) */
5151
52WRITE8_DEVICE_HANDLER( scramble_protection_w )
52WRITE8_MEMBER(scramble_state::scramble_protection_w)
5353{
54   scramble_state *state = space.machine().driver_data<scramble_state>();
55   state->m_xb = data;
54   m_xb = data;
5655}
5756
58READ8_DEVICE_HANDLER( scramble_protection_r )
57READ8_MEMBER(scramble_state::scramble_protection_r)
5958{
60   switch (space.machine().device("maincpu")->safe_pc())
59   switch (machine().device("maincpu")->safe_pc())
6160   {
6261   case 0x00a8: return 0xf0;
6362   case 0x00be: return 0xb0;
r18175r18176
6867   case 0x1ca2: return 0x00;  /* I don't think it's checked */
6968   case 0x1d7e: return 0xb0;
7069   default:
71      logerror("%s: read protection\n",space.machine().describe_context());
70      logerror("%s: read protection\n",machine().describe_context());
7271      return 0;
7372   }
7473}
trunk/src/mame/machine/gaelco2.c
r18175r18176
260260
261261***************************************************************************/
262262
263WRITE16_DEVICE_HANDLER( gaelco2_eeprom_cs_w )
263WRITE16_MEMBER(gaelco2_state::gaelco2_eeprom_cs_w)
264264{
265265   /* bit 0 is CS (active low) */
266   eeprom_device *eeprom = downcast<eeprom_device *>(device);
266   eeprom_device *eeprom = downcast<eeprom_device *>(machine().device("eeprom"));
267267   eeprom->set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
268268}
269269
270WRITE16_DEVICE_HANDLER( gaelco2_eeprom_sk_w )
270WRITE16_MEMBER(gaelco2_state::gaelco2_eeprom_sk_w)
271271{
272272   /* bit 0 is SK (active high) */
273   eeprom_device *eeprom = downcast<eeprom_device *>(device);
273   eeprom_device *eeprom = downcast<eeprom_device *>(machine().device("eeprom"));
274274   eeprom->set_clock_line((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
275275}
276276
277WRITE16_DEVICE_HANDLER( gaelco2_eeprom_data_w )
277WRITE16_MEMBER(gaelco2_state::gaelco2_eeprom_data_w)
278278{
279279   /* bit 0 is EEPROM data (DIN) */
280   eeprom_device *eeprom = downcast<eeprom_device *>(device);
280   eeprom_device *eeprom = downcast<eeprom_device *>(machine().device("eeprom"));
281281   eeprom->write_bit(data & 0x01);
282282}
283283
trunk/src/mame/machine/williams.c
r18175r18176
1919static void williams_main_firq(device_t *device, int state);
2020static void williams_snd_irq(device_t *device, int state);
2121static void williams_snd_irq_b(device_t *device, int state);
22static DECLARE_WRITE8_DEVICE_HANDLER( williams_snd_cmd_w );
23static DECLARE_WRITE8_DEVICE_HANDLER( playball_snd_cmd_w );
24static DECLARE_WRITE8_DEVICE_HANDLER( blaster_snd_cmd_w );
2522
26/* input port mapping */
27static DECLARE_WRITE8_DEVICE_HANDLER( williams_port_select_w );
28static DECLARE_READ8_DEVICE_HANDLER( williams_input_port_49way_0_5_r );
29static DECLARE_READ8_DEVICE_HANDLER( williams_49way_port_0_r );
30
3123/* newer-Williams routines */
32static DECLARE_WRITE8_DEVICE_HANDLER( williams2_snd_cmd_w );
3324static void mysticm_main_irq(device_t *device, int state);
3425static void tshoot_main_irq(device_t *device, int state);
3526
36/* Lotto Fun-specific code */
37static DECLARE_WRITE8_DEVICE_HANDLER( lottofun_coin_lock_w );
3827
39/* Turkey Shoot-specific code */
40static DECLARE_READ8_DEVICE_HANDLER( tshoot_input_port_0_3_r );
41static DECLARE_WRITE8_DEVICE_HANDLER( tshoot_lamp_w );
42static DECLARE_WRITE8_DEVICE_HANDLER( tshoot_maxvol_w );
4328
44/* Joust 2-specific code */
45static DECLARE_WRITE8_DEVICE_HANDLER( joust2_snd_cmd_w );
46static DECLARE_WRITE8_DEVICE_HANDLER( joust2_pia_3_cb1_w );
47
48
4929/*************************************
5030 *
5131 *  Generic old-Williams PIA interfaces
r18175r18176
6646const pia6821_interface williams_muxed_pia_0_intf =
6747{
6848   /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_INPUT_PORT("IN0"), DEVCB_INPUT_PORT("IN1"), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
69   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_HANDLER(williams_port_select_w),
49   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(williams_state,williams_port_select_w),
7050   /*irqs   : A/B             */ DEVCB_NULL, DEVCB_NULL
7151};
7252
7353/* Generic 49-way joystick PIA 0 for Sinistar/Blaster */
7454const pia6821_interface williams_49way_pia_0_intf =
7555{
76   /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_HANDLER(williams_49way_port_0_r), DEVCB_INPUT_PORT("IN1"), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
56   /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_DRIVER_MEMBER(williams_state,williams_49way_port_0_r), DEVCB_INPUT_PORT("IN1"), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
7757   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
7858   /*irqs   : A/B             */ DEVCB_NULL, DEVCB_NULL
7959};
r18175r18176
8161/* Muxing 49-way joystick PIA 0 for Blaster kit */
8262const pia6821_interface williams_49way_muxed_pia_0_intf =
8363{
84   /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_HANDLER(williams_input_port_49way_0_5_r), DEVCB_INPUT_PORT("IN1"), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
85   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_HANDLER(williams_port_select_w),
64   /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_DRIVER_MEMBER(williams_state,williams_input_port_49way_0_5_r), DEVCB_INPUT_PORT("IN1"), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
65   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(williams_state,williams_port_select_w),
8666   /*irqs   : A/B             */ DEVCB_NULL, DEVCB_NULL
8767};
8868
r18175r18176
9070const pia6821_interface williams_pia_1_intf =
9171{
9272   /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_INPUT_PORT("IN2"), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
93   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_HANDLER(williams_snd_cmd_w), DEVCB_NULL, DEVCB_NULL,
73   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_DRIVER_MEMBER(williams_state,williams_snd_cmd_w), DEVCB_NULL, DEVCB_NULL,
9474   /*irqs   : A/B             */ DEVCB_LINE(williams_main_irq), DEVCB_LINE(williams_main_irq)
9575};
9676
r18175r18176
121101const pia6821_interface lottofun_pia_0_intf =
122102{
123103   /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_INPUT_PORT("IN0"), DEVCB_INPUT_PORT("IN1"), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
124   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_DEVICE_MEMBER("ticket", ticket_dispenser_device, write), DEVCB_HANDLER(lottofun_coin_lock_w), DEVCB_NULL,
104   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_DEVICE_MEMBER("ticket", ticket_dispenser_device, write), DEVCB_DRIVER_MEMBER(williams_state,lottofun_coin_lock_w), DEVCB_NULL,
125105   /*irqs   : A/B             */ DEVCB_NULL, DEVCB_NULL
126106};
127107
r18175r18176
137117const pia6821_interface playball_pia_1_intf =
138118{
139119   /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_INPUT_PORT("IN2"), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
140   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_HANDLER(playball_snd_cmd_w), DEVCB_NULL, DEVCB_NULL,
120   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_DRIVER_MEMBER(williams_state,playball_snd_cmd_w), DEVCB_NULL, DEVCB_NULL,
141121   /*irqs   : A/B             */ DEVCB_LINE(williams_main_irq), DEVCB_LINE(williams_main_irq)
142122};
143123
r18175r18176
145125const pia6821_interface blaster_pia_1_intf =
146126{
147127   /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_INPUT_PORT("IN2"), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
148   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_HANDLER(blaster_snd_cmd_w), DEVCB_NULL, DEVCB_NULL,
128   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_DRIVER_MEMBER(williams_state,blaster_snd_cmd_w), DEVCB_NULL, DEVCB_NULL,
149129   /*irqs   : A/B             */ DEVCB_LINE(williams_main_irq), DEVCB_LINE(williams_main_irq)
150130};
151131
r18175r18176
169149const pia6821_interface williams2_muxed_pia_0_intf =
170150{
171151   /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_INPUT_PORT("IN0"), DEVCB_INPUT_PORT("IN1"), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
172   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_NULL, DEVCB_HANDLER(williams_port_select_w), DEVCB_NULL,
152   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_NULL, DEVCB_DRIVER_MEMBER(williams_state,williams_port_select_w), DEVCB_NULL,
173153   /*irqs   : A/B             */ DEVCB_NULL, DEVCB_NULL
174154};
175155
r18175r18176
177157const pia6821_interface williams2_pia_1_intf =
178158{
179159   /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_INPUT_PORT("IN2"), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
180   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_HANDLER(williams2_snd_cmd_w), DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("pia_2", pia6821_device, ca1_w),
160   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_DRIVER_MEMBER(williams_state,williams2_snd_cmd_w), DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("pia_2", pia6821_device, ca1_w),
181161   /*irqs   : A/B             */ DEVCB_LINE(williams_main_irq), DEVCB_LINE(williams_main_irq)
182162};
183163
r18175r18176
209189const pia6821_interface mysticm_pia_1_intf =
210190{
211191   /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_INPUT_PORT("IN2"), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
212   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_HANDLER(williams2_snd_cmd_w), DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("pia_2", pia6821_device, ca1_w),
192   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_DRIVER_MEMBER(williams_state,williams2_snd_cmd_w), DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("pia_2", pia6821_device, ca1_w),
213193   /*irqs   : A/B             */ DEVCB_LINE(mysticm_main_irq), DEVCB_LINE(mysticm_main_irq)
214194};
215195
216196/* Turkey Shoot PIA 0 */
217197const pia6821_interface tshoot_pia_0_intf =
218198{
219   /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_HANDLER(tshoot_input_port_0_3_r), DEVCB_INPUT_PORT("IN1"), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
220   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_HANDLER(tshoot_lamp_w), DEVCB_HANDLER(williams_port_select_w), DEVCB_NULL,
199   /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_DRIVER_MEMBER(williams_state,tshoot_input_port_0_3_r), DEVCB_INPUT_PORT("IN1"), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
200   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_DRIVER_MEMBER(williams_state,tshoot_lamp_w), DEVCB_DRIVER_MEMBER(williams_state,williams_port_select_w), DEVCB_NULL,
221201   /*irqs   : A/B             */ DEVCB_LINE(tshoot_main_irq), DEVCB_LINE(tshoot_main_irq)
222202};
223203
r18175r18176
225205const pia6821_interface tshoot_pia_1_intf =
226206{
227207   /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_INPUT_PORT("IN2"), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
228   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_HANDLER(williams2_snd_cmd_w), DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("pia_2", pia6821_device, ca1_w),
208   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_DRIVER_MEMBER(williams_state,williams2_snd_cmd_w), DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("pia_2", pia6821_device, ca1_w),
229209   /*irqs   : A/B             */ DEVCB_LINE(tshoot_main_irq), DEVCB_LINE(tshoot_main_irq)
230210};
231211
r18175r18176
233213const pia6821_interface tshoot_snd_pia_intf =
234214{
235215   /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
236   /*outputs: A/B,CA/B2       */ DEVCB_DEVICE_MEMBER("pia_1", pia6821_device, portb_w), DEVCB_DEVICE_MEMBER("wmsdac", dac_device, write_unsigned8), DEVCB_DEVICE_LINE_MEMBER("pia_1", pia6821_device, cb1_w), DEVCB_HANDLER(tshoot_maxvol_w),
216   /*outputs: A/B,CA/B2       */ DEVCB_DEVICE_MEMBER("pia_1", pia6821_device, portb_w), DEVCB_DEVICE_MEMBER("wmsdac", dac_device, write_unsigned8), DEVCB_DEVICE_LINE_MEMBER("pia_1", pia6821_device, cb1_w), DEVCB_DRIVER_MEMBER(williams_state,tshoot_maxvol_w),
237217   /*irqs   : A/B             */ DEVCB_LINE(williams_snd_irq), DEVCB_LINE(williams_snd_irq)
238218};
239219
r18175r18176
241221const pia6821_interface joust2_pia_1_intf =
242222{
243223   /*inputs : A/B,CA/B1,CA/B2 */ DEVCB_INPUT_PORT("IN2"), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL,
244   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_HANDLER(joust2_snd_cmd_w), DEVCB_HANDLER(joust2_pia_3_cb1_w), DEVCB_DEVICE_LINE_MEMBER("pia_2", pia6821_device, ca1_w),
224   /*outputs: A/B,CA/B2       */ DEVCB_NULL, DEVCB_DRIVER_MEMBER(joust2_state,joust2_snd_cmd_w), DEVCB_DRIVER_MEMBER(joust2_state,joust2_pia_3_cb1_w), DEVCB_DEVICE_LINE_MEMBER("pia_2", pia6821_device, ca1_w),
245225   /*irqs   : A/B             */ DEVCB_LINE(williams_main_irq), DEVCB_LINE(williams_main_irq)
246226};
247227
r18175r18176
558538   pia_2->cb1_w((param == 0xff) ? 0 : 1);
559539}
560540
561WRITE8_DEVICE_HANDLER( williams_snd_cmd_w )
541WRITE8_MEMBER(williams_state::williams_snd_cmd_w)
562542{
563   williams_state *state = device->machine().driver_data<williams_state>();
564543   /* the high two bits are set externally, and should be 1 */
565   space.machine().scheduler().synchronize(timer_expired_delegate(FUNC(williams_state::williams_deferred_snd_cmd_w),state), data | 0xc0);
544   machine().scheduler().synchronize(timer_expired_delegate(FUNC(williams_state::williams_deferred_snd_cmd_w),this), data | 0xc0);
566545}
567546
568WRITE8_DEVICE_HANDLER( playball_snd_cmd_w )
547WRITE8_MEMBER(williams_state::playball_snd_cmd_w)
569548{
570   williams_state *state = device->machine().driver_data<williams_state>();
571   space.machine().scheduler().synchronize(timer_expired_delegate(FUNC(williams_state::williams_deferred_snd_cmd_w),state), data);
549   machine().scheduler().synchronize(timer_expired_delegate(FUNC(williams_state::williams_deferred_snd_cmd_w),this), data);
572550}
573551
574552TIMER_CALLBACK_MEMBER(williams_state::blaster_deferred_snd_cmd_w)
r18175r18176
582560   pia_2r->portb_w(r_data); pia_2r->cb1_w((r_data == 0xff) ? 0 : 1);
583561}
584562
585WRITE8_DEVICE_HANDLER( blaster_snd_cmd_w )
563WRITE8_MEMBER(williams_state::blaster_snd_cmd_w)
586564{
587   williams_state *state = device->machine().driver_data<williams_state>();
588   space.machine().scheduler().synchronize(timer_expired_delegate(FUNC(williams_state::blaster_deferred_snd_cmd_w),state), data);
565   machine().scheduler().synchronize(timer_expired_delegate(FUNC(williams_state::blaster_deferred_snd_cmd_w),this), data);
589566}
590567
591568
r18175r18176
596573   pia_2->porta_w(param);
597574}
598575
599static WRITE8_DEVICE_HANDLER( williams2_snd_cmd_w )
576WRITE8_MEMBER(williams_state::williams2_snd_cmd_w)
600577{
601   williams_state *state = device->machine().driver_data<williams_state>();
602   space.machine().scheduler().synchronize(timer_expired_delegate(FUNC(williams_state::williams2_deferred_snd_cmd_w),state), data);
578   machine().scheduler().synchronize(timer_expired_delegate(FUNC(williams_state::williams2_deferred_snd_cmd_w),this), data);
603579}
604580
605581
r18175r18176
610586 *
611587 *************************************/
612588
613WRITE8_DEVICE_HANDLER( williams_port_select_w )
589WRITE8_MEMBER(williams_state::williams_port_select_w)
614590{
615   williams_state *state = space.machine().driver_data<williams_state>();
616   state->m_port_select = data;
591   m_port_select = data;
617592}
618593
619594CUSTOM_INPUT_MEMBER(williams_state::williams_mux_r)
r18175r18176
651626 *      1000 = right/down full
652627 */
653628
654READ8_DEVICE_HANDLER( williams_49way_port_0_r )
629READ8_MEMBER(williams_state::williams_49way_port_0_r)
655630{
656631   static const UINT8 translate49[7] = { 0x0, 0x4, 0x6, 0x7, 0xb, 0x9, 0x8 };
657   return (translate49[space.machine().root_device().ioport("49WAYX")->read() >> 4] << 4) | translate49[space.machine().root_device().ioport("49WAYY")->read() >> 4];
632   return (translate49[machine().root_device().ioport("49WAYX")->read() >> 4] << 4) | translate49[machine().root_device().ioport("49WAYY")->read() >> 4];
658633}
659634
660635
661READ8_DEVICE_HANDLER( williams_input_port_49way_0_5_r )
636READ8_MEMBER(williams_state::williams_input_port_49way_0_5_r)
662637{
663   williams_state *state = space.machine().driver_data<williams_state>();
664   if (state->m_port_select)
665      return williams_49way_port_0_r(device, space, 0);
638   if (m_port_select)
639      return williams_49way_port_0_r(space, 0);
666640   else
667      return state->ioport("IN3")->read();
641      return ioport("IN3")->read();
668642}
669643
670644
r18175r18176
929903 *
930904 *************************************/
931905
932static WRITE8_DEVICE_HANDLER( lottofun_coin_lock_w )
906WRITE8_MEMBER(williams_state::lottofun_coin_lock_w)
933907{
934   coin_lockout_global_w(space.machine(), data & 1); /* bit 5 of PIC control port A */
908   coin_lockout_global_w(machine(), data & 1); /* bit 5 of PIC control port A */
935909}
936910
937911
r18175r18176
942916 *
943917 *************************************/
944918
945static READ8_DEVICE_HANDLER( tshoot_input_port_0_3_r )
919READ8_MEMBER(williams_state::tshoot_input_port_0_3_r)
946920{
947921   /* merge in the gun inputs with the standard data */
948   int data = space.machine().root_device().ioport("IN0")->read();
922   int data = machine().root_device().ioport("IN0")->read();
949923   int gun = (data & 0x3f) ^ ((data & 0x3f) >> 1);
950924   return (data & 0xc0) | gun;
951925
r18175r18176
954928}
955929
956930
957static WRITE8_DEVICE_HANDLER( tshoot_maxvol_w )
931WRITE8_MEMBER(williams_state::tshoot_maxvol_w)
958932{
959933   /* something to do with the sound volume */
960   logerror("tshoot maxvol = %d (%s)\n", data, space.machine().describe_context());
934   logerror("tshoot maxvol = %d (%s)\n", data, machine().describe_context());
961935}
962936
963937
964static WRITE8_DEVICE_HANDLER( tshoot_lamp_w )
938WRITE8_MEMBER(williams_state::tshoot_lamp_w)
965939{
966940   /* set the grenade lamp */
967941   output_set_value("Grenade_lamp", (~data & 0x4)>>2 );
r18175r18176
1002976}
1003977
1004978
1005static WRITE8_DEVICE_HANDLER( joust2_pia_3_cb1_w )
979WRITE8_MEMBER(joust2_state::joust2_pia_3_cb1_w)
1006980{
1007   joust2_state *state = space.machine().driver_data<joust2_state>();
1008   state->m_joust2_current_sound_data = (state->m_joust2_current_sound_data & ~0x100) | ((data << 8) & 0x100);
1009   state->m_cvsd_sound->write(space.machine().driver_data()->generic_space(), 0, state->m_joust2_current_sound_data);
981   m_joust2_current_sound_data = (m_joust2_current_sound_data & ~0x100) | ((data << 8) & 0x100);
982   m_cvsd_sound->write(machine().driver_data()->generic_space(), 0, m_joust2_current_sound_data);
1010983}
1011984
1012985
1013static WRITE8_DEVICE_HANDLER( joust2_snd_cmd_w )
986WRITE8_MEMBER(joust2_state::joust2_snd_cmd_w)
1014987{
1015   joust2_state *state = space.machine().driver_data<joust2_state>();
1016   state->m_joust2_current_sound_data = (state->m_joust2_current_sound_data & ~0xff) | (data & 0xff);
1017   state->m_cvsd_sound->write(space.machine().driver_data()->generic_space(), 0, state->m_joust2_current_sound_data);
1018   space.machine().scheduler().synchronize(timer_expired_delegate(FUNC(joust2_state::joust2_deferred_snd_cmd_w),state), state->m_joust2_current_sound_data);
988   m_joust2_current_sound_data = (m_joust2_current_sound_data & ~0xff) | (data & 0xff);
989   m_cvsd_sound->write(machine().driver_data()->generic_space(), 0, m_joust2_current_sound_data);
990   machine().scheduler().synchronize(timer_expired_delegate(FUNC(joust2_state::joust2_deferred_snd_cmd_w),this), m_joust2_current_sound_data);
1019991}
trunk/src/mame/machine/dc.c
r18175r18176
828828   dc_sysctrl_regs[SB_SBREV] = 0x0b;
829829}
830830
831READ64_DEVICE_HANDLER( dc_aica_reg_r )
831READ64_MEMBER(dc_state::dc_aica_reg_r)
832832{
833   //  dc_state *state = space.machine().driver_data<dc_state>();
834833   //int reg;
835834   UINT64 shift;
836835
837   /*reg = */decode_reg32_64(space.machine(), offset, mem_mask, &shift);
836   /*reg = */decode_reg32_64(machine(), offset, mem_mask, &shift);
838837
839838//  mame_printf_verbose("AICA REG: [%08x] read %" I64FMT "x, mask %" I64FMT "x\n", 0x700000+reg*4, (UINT64)offset, mem_mask);
840839
841   return (UINT64) aica_r(device, space, offset*2, 0xffff)<<shift;
840   return (UINT64) aica_r(machine().device("aica"), space, offset*2, 0xffff)<<shift;
842841}
843842
844WRITE64_DEVICE_HANDLER( dc_aica_reg_w )
843WRITE64_MEMBER(dc_state::dc_aica_reg_w)
845844{
846   //  dc_state *state = space.machine().driver_data<dc_state>();
847845   int reg;
848846   UINT64 shift;
849847   UINT32 dat;
850848
851   reg = decode_reg32_64(space.machine(), offset, mem_mask, &shift);
849   reg = decode_reg32_64(machine(), offset, mem_mask, &shift);
852850   dat = (UINT32)(data >> shift);
853851
854852   if (reg == (0x2c00/4))
r18175r18176
856854      if (dat & 1)
857855      {
858856         /* halt the ARM7 */
859         space.machine().device("soundcpu")->execute().set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
857         machine().device("soundcpu")->execute().set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
860858      }
861859      else
862860      {
863861         /* it's alive ! */
864         space.machine().device("soundcpu")->execute().set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
862         machine().device("soundcpu")->execute().set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
865863      }
866864    }
867865
868   aica_w(device, space, offset*2, dat, shift ? ((mem_mask>>32)&0xffff) : (mem_mask & 0xffff));
866   aica_w(machine().device("aica"), space, offset*2, dat, shift ? ((mem_mask>>32)&0xffff) : (mem_mask & 0xffff));
869867
870868//  mame_printf_verbose("AICA REG: [%08x=%x] write %" I64FMT "x to %x, mask %" I64FMT "x\n", 0x700000+reg*4, dat, data, offset, mem_mask);
871869}
872870
873READ32_DEVICE_HANDLER( dc_arm_aica_r )
871READ32_MEMBER(dc_state::dc_arm_aica_r)
874872{
875   return aica_r(device, space, offset*2, 0xffff) & 0xffff;
873   return aica_r(machine().device("aica"), space, offset*2, 0xffff) & 0xffff;
876874}
877875
878WRITE32_DEVICE_HANDLER( dc_arm_aica_w )
876WRITE32_MEMBER(dc_state::dc_arm_aica_w)
879877{
880   aica_w(device, space, offset*2, data, mem_mask&0xffff);
878   aica_w(machine().device("aica"), space, offset*2, data, mem_mask&0xffff);
881879}
882880
trunk/src/mame/machine/carpolo.c
r18175r18176
287287
288288// FIXME: Remove trampolines
289289
290static WRITE_LINE_DEVICE_HANDLER( coin1_interrupt_clear_w )
290WRITE_LINE_MEMBER(carpolo_state::coin1_interrupt_clear_w)
291291{
292   carpolo_state *drvstate = device->machine().driver_data<carpolo_state>();
293   drvstate->m_ttl7474_2s_1->clear_w(state);
292   m_ttl7474_2s_1->clear_w(state);
294293}
295294
296static WRITE_LINE_DEVICE_HANDLER( coin2_interrupt_clear_w )
295WRITE_LINE_MEMBER(carpolo_state::coin2_interrupt_clear_w)
297296{
298   carpolo_state *drvstate = device->machine().driver_data<carpolo_state>();
299   drvstate->m_ttl7474_2s_2->clear_w(state);
297   m_ttl7474_2s_2->clear_w(state);
300298}
301299
302static WRITE_LINE_DEVICE_HANDLER( coin3_interrupt_clear_w )
300WRITE_LINE_MEMBER(carpolo_state::coin3_interrupt_clear_w)
303301{
304   carpolo_state *drvstate = device->machine().driver_data<carpolo_state>();
305   drvstate->m_ttl7474_2u_1->clear_w(state);
302   m_ttl7474_2u_1->clear_w(state);
306303}
307304
308static WRITE_LINE_DEVICE_HANDLER( coin4_interrupt_clear_w )
305WRITE_LINE_MEMBER(carpolo_state::coin4_interrupt_clear_w)
309306{
310   carpolo_state *drvstate = device->machine().driver_data<carpolo_state>();
311   drvstate->m_ttl7474_2u_2->clear_w(state);
307   m_ttl7474_2u_2->clear_w(state);
312308}
313309
314310WRITE8_MEMBER(carpolo_state::carpolo_ball_screen_interrupt_clear_w)
r18175r18176
354350 *
355351 *************************************/
356352
357static WRITE8_DEVICE_HANDLER( pia_0_port_a_w )
353WRITE8_MEMBER(carpolo_state::pia_0_port_a_w)
358354{
359   carpolo_state *state = space.machine().driver_data<carpolo_state>();
360355   /* bit 0 - Coin counter
361356       bit 1 - Player 4 crash sound
362357       bit 2 - Player 3 crash sound
r18175r18176
366361       bit 6 - Player 1 crash sound
367362       bit 7 - Ball hit pulse sound */
368363
369   coin_counter_w(space.machine(), 0, data & 0x01);
364   coin_counter_w(machine(), 0, data & 0x01);
370365
371366
372   state->m_ttl7474_1f_1->clear_w((data & 0x08) >> 3);
373   state->m_ttl7474_1d_1->clear_w((data & 0x08) >> 3);
374   state->m_ttl7474_1c_1->clear_w((data & 0x08) >> 3);
375   state->m_ttl7474_1a_1->clear_w((data & 0x08) >> 3);
367   m_ttl7474_1f_1->clear_w((data & 0x08) >> 3);
368   m_ttl7474_1d_1->clear_w((data & 0x08) >> 3);
369   m_ttl7474_1c_1->clear_w((data & 0x08) >> 3);
370   m_ttl7474_1a_1->clear_w((data & 0x08) >> 3);
376371}
377372
378373
379static WRITE8_DEVICE_HANDLER( pia_0_port_b_w )
374WRITE8_MEMBER(carpolo_state::pia_0_port_b_w)
380375{
381   carpolo_state *state = space.machine().driver_data<carpolo_state>();
382376   /* bit 0 - Strobe speed bits sound
383377       bit 1 - Speed bit 0 sound
384378       bit 2 - Speed bit 1 sound
r18175r18176
386380       bit 6 - Select pedal 0
387381       bit 7 - Select pdeal 1 */
388382
389   ttl74153_a_w(state->m_ttl74153_1k, data & 0x40);
390   ttl74153_b_w(state->m_ttl74153_1k, data & 0x80);
383   ttl74153_a_w(m_ttl74153_1k, data & 0x40);
384   ttl74153_b_w(m_ttl74153_1k, data & 0x80);
391385
392   ttl74153_update(state->m_ttl74153_1k);
386   ttl74153_update(m_ttl74153_1k);
393387}
394388
395static READ8_DEVICE_HANDLER( pia_0_port_b_r )
389READ8_MEMBER(carpolo_state::pia_0_port_b_r)
396390{
397   carpolo_state *state = space.machine().driver_data<carpolo_state>();
398391   /* bit 4 - Pedal bit 0
399392       bit 5 - Pedal bit 1 */
400393
401   return (ttl74153_output_r(state->m_ttl74153_1k, 0) << 5) |
402         (ttl74153_output_r(state->m_ttl74153_1k, 1) << 4);
394   return (ttl74153_output_r(m_ttl74153_1k, 0) << 5) |
395         (ttl74153_output_r(m_ttl74153_1k, 1) << 4);
403396}
404397
405398
406static READ8_DEVICE_HANDLER( pia_1_port_a_r )
399READ8_MEMBER(carpolo_state::pia_1_port_a_r)
407400{
408   carpolo_state *state = space.machine().driver_data<carpolo_state>();
409401   UINT8 ret;
410402
411403   /* bit 0 - Player 4 steering input (left or right)
r18175r18176
417409       bit 6 - Player 2 forward/reverse input
418410       bit 7 - Player 1 forward/reverse input */
419411
420   ret = (state->m_ttl7474_1a_2->output_r() ? 0x01 : 0x00) |
421        (state->m_ttl7474_1c_2->output_r() ? 0x02 : 0x00) |
422        (state->m_ttl7474_1d_2->output_r() ? 0x04 : 0x00) |
423        (state->m_ttl7474_1f_2->output_r() ? 0x08 : 0x00) |
424        (state->ioport("IN2")->read() & 0xf0);
412   ret = (m_ttl7474_1a_2->output_r() ? 0x01 : 0x00) |
413        (m_ttl7474_1c_2->output_r() ? 0x02 : 0x00) |
414        (m_ttl7474_1d_2->output_r() ? 0x04 : 0x00) |
415        (m_ttl7474_1f_2->output_r() ? 0x08 : 0x00) |
416        (ioport("IN2")->read() & 0xf0);
425417
426418   return ret;
427419}
428420
429421
430static READ8_DEVICE_HANDLER( pia_1_port_b_r )
422READ8_MEMBER(carpolo_state::pia_1_port_b_r)
431423{
432   carpolo_state *state = space.machine().driver_data<carpolo_state>();
433424   UINT8 ret;
434425
435426   /* bit 4 - Player 4 steering input (wheel moving or stopped)
r18175r18176
437428       bit 6 - Player 2 steering input (wheel moving or stopped)
438429       bit 7 - Player 1 steering input (wheel moving or stopped) */
439430
440   ret = (state->m_ttl7474_1a_1->output_r() ? 0x10 : 0x00) |
441        (state->m_ttl7474_1c_1->output_r() ? 0x20 : 0x00) |
442        (state->m_ttl7474_1d_1->output_r() ? 0x40 : 0x00) |
443        (state->m_ttl7474_1f_1->output_r() ? 0x80 : 0x00);
431   ret = (m_ttl7474_1a_1->output_r() ? 0x10 : 0x00) |
432        (m_ttl7474_1c_1->output_r() ? 0x20 : 0x00) |
433        (m_ttl7474_1d_1->output_r() ? 0x40 : 0x00) |
434        (m_ttl7474_1f_1->output_r() ? 0x80 : 0x00);
444435
445436   return ret;
446437}
r18175r18176
449440const pia6821_interface carpolo_pia0_intf =
450441{
451442   DEVCB_NULL,      /* port A in */
452   DEVCB_HANDLER(pia_0_port_b_r),   /* port B in */
443   DEVCB_DRIVER_MEMBER(carpolo_state,pia_0_port_b_r),   /* port B in */
453444   DEVCB_NULL,      /* line CA1 in */
454445   DEVCB_NULL,      /* line CB1 in */
455446   DEVCB_NULL,      /* line CA2 in */
456447   DEVCB_NULL,      /* line CB2 in */
457   DEVCB_HANDLER(pia_0_port_a_w),      /* port A out */
458   DEVCB_HANDLER(pia_0_port_b_w),      /* port B out */
459   DEVCB_LINE(coin1_interrupt_clear_w),      /* line CA2 out */
460   DEVCB_LINE(coin2_interrupt_clear_w),      /* port CB2 out */
448   DEVCB_DRIVER_MEMBER(carpolo_state,pia_0_port_a_w),      /* port A out */
449   DEVCB_DRIVER_MEMBER(carpolo_state,pia_0_port_b_w),      /* port B out */
450   DEVCB_DRIVER_LINE_MEMBER(carpolo_state,coin1_interrupt_clear_w),      /* line CA2 out */
451   DEVCB_DRIVER_LINE_MEMBER(carpolo_state,coin2_interrupt_clear_w),      /* port CB2 out */
461452   DEVCB_NULL,      /* IRQA */
462453   DEVCB_NULL      /* IRQB */
463454};
r18175r18176
465456
466457const pia6821_interface carpolo_pia1_intf =
467458{
468   DEVCB_HANDLER(pia_1_port_a_r),      /* port A in */
469   DEVCB_HANDLER(pia_1_port_b_r),      /* port B in */
459   DEVCB_DRIVER_MEMBER(carpolo_state,pia_1_port_a_r),      /* port A in */
460   DEVCB_DRIVER_MEMBER(carpolo_state,pia_1_port_b_r),      /* port B in */
470461   DEVCB_NULL,      /* line CA1 in */
471462   DEVCB_NULL,      /* line CB1 in */
472463   DEVCB_NULL,      /* line CA2 in */
473464   DEVCB_NULL,      /* line CB2 in */
474465   DEVCB_NULL,      /* port A out */
475466   DEVCB_NULL,      /* port B out */
476   DEVCB_LINE(coin3_interrupt_clear_w),      /* line CA2 out */
477   DEVCB_LINE(coin4_interrupt_clear_w),      /* port CB2 out */
467   DEVCB_DRIVER_LINE_MEMBER(carpolo_state,coin3_interrupt_clear_w),      /* line CA2 out */
468   DEVCB_DRIVER_LINE_MEMBER(carpolo_state,coin4_interrupt_clear_w),      /* port CB2 out */
478469   DEVCB_NULL,      /* IRQA */
479470   DEVCB_NULL      /* IRQB */
480471};
trunk/src/mame/machine/mcr68.c
r18175r18176
2121
2222static void subtract_from_counter(running_machine &machine, int counter, int count);
2323
24
25
26
27static DECLARE_WRITE8_DEVICE_HANDLER( zwackery_pia0_w );
28static DECLARE_WRITE8_DEVICE_HANDLER( zwackery_pia1_w );
29static WRITE_LINE_DEVICE_HANDLER( zwackery_ca2_w );
30static WRITE_LINE_DEVICE_HANDLER( zwackery_pia_irq );
31
32
33
34
35
3624/*************************************
3725 *
3826 *  6821 PIA declarations
3927 *
4028 *************************************/
4129
42static READ8_DEVICE_HANDLER( zwackery_port_1_r )
30READ8_MEMBER(mcr68_state::zwackery_port_1_r)
4331{
44   UINT8 ret = space.machine().root_device().ioport("IN1")->read();
32   UINT8 ret = machine().root_device().ioport("IN1")->read();
4533
46   downcast<pia6821_device *>(device)->set_port_a_z_mask(ret);
34   downcast<pia6821_device *>(machine().device("pia1"))->set_port_a_z_mask(ret);
4735
4836   return ret;
4937}
5038
5139
52static READ8_DEVICE_HANDLER( zwackery_port_3_r )
40READ8_MEMBER(mcr68_state::zwackery_port_3_r)
5341{
54   UINT8 ret = space.machine().root_device().ioport("IN3")->read();
42   UINT8 ret = machine().root_device().ioport("IN3")->read();
5543
56   downcast<pia6821_device *>(device)->set_port_a_z_mask(ret);
44   downcast<pia6821_device *>(machine().device("pia2"))->set_port_a_z_mask(ret);
5745
5846   return ret;
5947}
r18175r18176
6755   DEVCB_NULL,      /* line CB1 in */
6856   DEVCB_NULL,      /* line CA2 in */
6957   DEVCB_NULL,      /* line CB2 in */
70   DEVCB_HANDLER(zwackery_pia0_w),      /* port A out */
58   DEVCB_DRIVER_MEMBER(mcr68_state,zwackery_pia0_w),      /* port A out */
7159   DEVCB_NULL,      /* port B out */
7260   DEVCB_NULL,      /* line CA2 out */
7361   DEVCB_NULL,      /* port CB2 out */
74   DEVCB_LINE(zwackery_pia_irq),      /* IRQA */
75   DEVCB_LINE(zwackery_pia_irq)      /* IRQB */
62   DEVCB_DRIVER_LINE_MEMBER(mcr68_state,zwackery_pia_irq),      /* IRQA */
63   DEVCB_DRIVER_LINE_MEMBER(mcr68_state,zwackery_pia_irq)      /* IRQB */
7664};
7765
7866
7967const pia6821_interface zwackery_pia1_intf =
8068{
81   DEVCB_HANDLER(zwackery_port_1_r),      /* port A in */
69   DEVCB_DRIVER_MEMBER(mcr68_state,zwackery_port_1_r),      /* port A in */
8270   DEVCB_DRIVER_MEMBER(mcr68_state, zwackery_port_2_r),      /* port B in */
8371   DEVCB_NULL,      /* line CA1 in */
8472   DEVCB_NULL,      /* line CB1 in */
8573   DEVCB_NULL,      /* line CA2 in */
8674   DEVCB_NULL,      /* line CB2 in */
87   DEVCB_HANDLER(zwackery_pia1_w),      /* port A out */
75   DEVCB_DRIVER_MEMBER(mcr68_state,zwackery_pia1_w),      /* port A out */
8876   DEVCB_NULL,      /* port B out */
89   DEVCB_LINE(zwackery_ca2_w),      /* line CA2 out */
77   DEVCB_DRIVER_LINE_MEMBER(mcr68_state,zwackery_ca2_w),      /* line CA2 out */
9078   DEVCB_NULL,      /* port CB2 out */
9179   DEVCB_NULL,      /* IRQA */
9280   DEVCB_NULL      /* IRQB */
r18175r18176
9583
9684const pia6821_interface zwackery_pia2_intf =
9785{
98   DEVCB_HANDLER(zwackery_port_3_r),      /* port A in */
86   DEVCB_DRIVER_MEMBER(mcr68_state,zwackery_port_3_r),      /* port A in */
9987   DEVCB_INPUT_PORT("DSW"),            /* port B in */
10088   DEVCB_NULL,      /* line CA1 in */
10189   DEVCB_NULL,      /* line CB1 in */
r18175r18176
263251 *
264252 *************************************/
265253
266WRITE8_DEVICE_HANDLER( zwackery_pia0_w )
254WRITE8_MEMBER(mcr68_state::zwackery_pia0_w)
267255{
268256   /* bit 7 is the watchdog */
269   if (!(data & 0x80)) space.machine().watchdog_reset();
257   if (!(data & 0x80)) machine().watchdog_reset();
270258
271259   /* bits 5 and 6 control hflip/vflip */
272260   /* bits 3 and 4 control coin counters? */
r18175r18176
274262}
275263
276264
277WRITE8_DEVICE_HANDLER( zwackery_pia1_w )
265WRITE8_MEMBER(mcr68_state::zwackery_pia1_w)
278266{
279   mcr68_state *state = space.machine().driver_data<mcr68_state>();
280   state->m_zwackery_sound_data = (data >> 4) & 0x0f;
267   m_zwackery_sound_data = (data >> 4) & 0x0f;
281268}
282269
283270
284WRITE_LINE_DEVICE_HANDLER( zwackery_ca2_w )
271WRITE_LINE_MEMBER(mcr68_state::zwackery_ca2_w)
285272{
286   mcr68_state *drvstate = device->machine().driver_data<mcr68_state>();
287   address_space &space = device->machine().device("maincpu")->memory().space(AS_PROGRAM);
288   drvstate->m_chip_squeak_deluxe->write(space, 0, (state << 4) | drvstate->m_zwackery_sound_data);
273   address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM);
274   m_chip_squeak_deluxe->write(space, 0, (state << 4) | m_zwackery_sound_data);
289275}
290276
291277
292static WRITE_LINE_DEVICE_HANDLER( zwackery_pia_irq )
278WRITE_LINE_MEMBER(mcr68_state::zwackery_pia_irq)
293279{
294   mcr68_state *drvstate = device->machine().driver_data<mcr68_state>();
295   pia6821_device *pia = downcast<pia6821_device *>(device);
296   drvstate->m_v493_irq_state = pia->irq_a_state() | pia->irq_b_state();
297   update_mcr68_interrupts(device->machine());
280   pia6821_device *pia = machine().device<pia6821_device>("pia0");
281   m_v493_irq_state = pia->irq_a_state() | pia->irq_b_state();
282   update_mcr68_interrupts(machine());
298283}
299284
300285
trunk/src/mame/machine/qix.c
r18175r18176
1313#include "includes/qix.h"
1414
1515
16
17
18
19/*************************************
20 *
21 *  Static function prototypes
22 *
23 *************************************/
24
25static DECLARE_READ8_DEVICE_HANDLER( qixmcu_coin_r );
26static DECLARE_WRITE8_DEVICE_HANDLER( qixmcu_coinctrl_w );
27static DECLARE_WRITE8_DEVICE_HANDLER( qixmcu_coin_w );
28
29static DECLARE_WRITE8_DEVICE_HANDLER( qix_coinctl_w );
30
31static DECLARE_WRITE8_DEVICE_HANDLER( slither_76489_0_w );
32static DECLARE_WRITE8_DEVICE_HANDLER( slither_76489_1_w );
33
34static DECLARE_READ8_DEVICE_HANDLER( slither_trak_lr_r );
35static DECLARE_READ8_DEVICE_HANDLER( slither_trak_ud_r );
36
37
38
3916/***************************************************************************
4017
4118    Qix has 6 PIAs on board:
r18175r18176
128105   DEVCB_NULL,      /* line CA2 in */
129106   DEVCB_NULL,      /* line CB2 in */
130107   DEVCB_NULL,      /* port A out */
131   DEVCB_HANDLER(qix_coinctl_w),      /* port B out */
108   DEVCB_DRIVER_MEMBER(qix_state,qix_coinctl_w),      /* port B out */
132109   DEVCB_NULL,      /* line CA2 out */
133110   DEVCB_NULL,      /* port CB2 out */
134111   DEVCB_NULL,      /* IRQA */
r18175r18176
147124const pia6821_interface qixmcu_pia_0_intf =
148125{
149126   DEVCB_INPUT_PORT("P1"),         /* port A in */
150   DEVCB_HANDLER(qixmcu_coin_r),   /* port B in */
127   DEVCB_DRIVER_MEMBER(qix_state,qixmcu_coin_r),   /* port B in */
151128   DEVCB_NULL,      /* line CA1 in */
152129   DEVCB_NULL,      /* line CB1 in */
153130   DEVCB_NULL,      /* line CA2 in */
154131   DEVCB_NULL,      /* line CB2 in */
155132   DEVCB_NULL,      /* port A out */
156   DEVCB_HANDLER(qixmcu_coin_w),   /* port B out */
133   DEVCB_DRIVER_MEMBER(qix_state,qixmcu_coin_w),   /* port B out */
157134   DEVCB_NULL,      /* line CA2 out */
158135   DEVCB_NULL,      /* port CB2 out */
159136   DEVCB_NULL,      /* IRQA */
r18175r18176
169146   DEVCB_NULL,      /* line CA2 in */
170147   DEVCB_NULL,      /* line CB2 in */
171148   DEVCB_NULL,      /* port A out */
172   DEVCB_HANDLER(qixmcu_coinctrl_w),   /* port B out */
149   DEVCB_DRIVER_MEMBER(qix_state,qixmcu_coinctrl_w),   /* port B out */
173150   DEVCB_NULL,      /* line CA2 out */
174151   DEVCB_NULL,      /* port CB2 out */
175152   DEVCB_NULL,      /* IRQA */
r18175r18176
187164
188165const pia6821_interface slither_pia_1_intf =
189166{
190   DEVCB_HANDLER(slither_trak_lr_r),   /* port A in */
167   DEVCB_DRIVER_MEMBER(qix_state,slither_trak_lr_r),   /* port A in */
191168   DEVCB_NULL,      /* port B in */
192169   DEVCB_NULL,      /* line CA1 in */
193170   DEVCB_NULL,      /* line CB1 in */
194171   DEVCB_NULL,      /* line CA2 in */
195172   DEVCB_NULL,      /* line CB2 in */
196173   DEVCB_NULL,      /* port A out */
197   DEVCB_HANDLER(slither_76489_0_w),      /* port B out */
174   DEVCB_DRIVER_MEMBER(qix_state,slither_76489_0_w),      /* port B out */
198175   DEVCB_NULL,      /* line CA2 out */
199176   DEVCB_NULL,      /* port CB2 out */
200177   DEVCB_NULL,      /* IRQA */
r18175r18176
203180
204181const pia6821_interface slither_pia_2_intf =
205182{
206   DEVCB_HANDLER(slither_trak_ud_r),   /* port A in */
183   DEVCB_DRIVER_MEMBER(qix_state,slither_trak_ud_r),   /* port A in */
207184   DEVCB_NULL,      /* port B in */
208185   DEVCB_NULL,      /* line CA1 in */
209186   DEVCB_NULL,      /* line CB1 in */
210187   DEVCB_NULL,      /* line CA2 in */
211188   DEVCB_NULL,      /* line CB2 in */
212189   DEVCB_NULL,      /* port A out */
213   DEVCB_HANDLER(slither_76489_1_w),      /* port B out */
190   DEVCB_DRIVER_MEMBER(qix_state,slither_76489_1_w),      /* port B out */
214191   DEVCB_NULL,      /* line CA2 out */
215192   DEVCB_NULL,      /* port CB2 out */
216193   DEVCB_NULL,      /* IRQA */
r18175r18176
249226 *
250227 *************************************/
251228
252WRITE_LINE_DEVICE_HANDLER( qix_vsync_changed )
229WRITE_LINE_MEMBER(qix_state::qix_vsync_changed)
253230{
254   pia6821_device *pia = device->machine().device<pia6821_device>("sndpia0");
231   pia6821_device *pia = machine().device<pia6821_device>("sndpia0");
255232   pia->cb1_w(state);
256233}
257234
r18175r18176
344321 *
345322 *************************************/
346323
347READ8_DEVICE_HANDLER( qixmcu_coin_r )
324READ8_MEMBER(qix_state::qixmcu_coin_r)
348325{
349   qix_state *state = space.machine().driver_data<qix_state>();
350326
351   logerror("6809:qixmcu_coin_r = %02X\n", state->m_68705_port_out[0]);
352   return state->m_68705_port_out[0];
327   logerror("6809:qixmcu_coin_r = %02X\n", m_68705_port_out[0]);
328   return m_68705_port_out[0];
353329}
354330
355331
356static WRITE8_DEVICE_HANDLER( qixmcu_coin_w )
332WRITE8_MEMBER(qix_state::qixmcu_coin_w)
357333{
358   qix_state *state = space.machine().driver_data<qix_state>();
359334
360335   logerror("6809:qixmcu_coin_w = %02X\n", data);
361336   /* this is a callback called by pia6821_device::write(), so I don't need to synchronize */
362337   /* the CPUs - they have already been synchronized by qix_pia_w() */
363   state->m_68705_port_in[0] = data;
338   m_68705_port_in[0] = data;
364339}
365340
366341
367static WRITE8_DEVICE_HANDLER( qixmcu_coinctrl_w )
342WRITE8_MEMBER(qix_state::qixmcu_coinctrl_w)
368343{
369   qix_state *state = space.machine().driver_data<qix_state>();
370344
371345   /* if (!(data & 0x04)) */
372346   if (data & 0x04)
373347   {
374      space.machine().device("mcu")->execute().set_input_line(M68705_IRQ_LINE, ASSERT_LINE);
348      machine().device("mcu")->execute().set_input_line(M68705_IRQ_LINE, ASSERT_LINE);
375349      /* temporarily boost the interleave to sync things up */
376350      /* note: I'm using 50 because 30 is not enough for space dungeon at game over */
377      space.machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(50));
351      machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(50));
378352   }
379353   else
380      space.machine().device("mcu")->execute().set_input_line(M68705_IRQ_LINE, CLEAR_LINE);
354      machine().device("mcu")->execute().set_input_line(M68705_IRQ_LINE, CLEAR_LINE);
381355
382356   /* this is a callback called by pia6821_device::write(), so I don't need to synchronize */
383357   /* the CPUs - they have already been synchronized by qix_pia_w() */
384   state->m_coinctrl = data;
358   m_coinctrl = data;
385359   logerror("6809:qixmcu_coinctrl_w = %02X\n", data);
386360}
387361
r18175r18176
469443}
470444
471445
472WRITE8_DEVICE_HANDLER( qix_pia_w )
446WRITE8_MEMBER(qix_state::qix_pia_w)
473447{
474   qix_state *state = device->machine().driver_data<qix_state>();
475448   /* make all the CPUs synchronize, and only AFTER that write the command to the PIA */
476449   /* otherwise the 68705 will miss commands */
477   space.machine().scheduler().synchronize(timer_expired_delegate(FUNC(qix_state::pia_w_callback),state), data | (offset << 8), (void *)downcast<pia6821_device *>(device));
450   machine().scheduler().synchronize(timer_expired_delegate(FUNC(qix_state::pia_w_callback),this), data | (offset << 8), (void *)downcast<pia6821_device *>(machine().device("pia0")));
478451}
479452
480453
r18175r18176
485458 *
486459 *************************************/
487460
488static WRITE8_DEVICE_HANDLER( qix_coinctl_w )
461WRITE8_MEMBER(qix_state::qix_coinctl_w)
489462{
490   coin_lockout_w(space.machine(), 0, (~data >> 2) & 1);
491   coin_counter_w(space.machine(), 0, (data >> 1) & 1);
463   coin_lockout_w(machine(), 0, (~data >> 2) & 1);
464   coin_counter_w(machine(), 0, (data >> 1) & 1);
492465}
493466
494467
r18175r18176
499472 *
500473 *************************************/
501474
502 static WRITE8_DEVICE_HANDLER( slither_76489_0_w )
475 WRITE8_MEMBER(qix_state::slither_76489_0_w)
503476{
504   qix_state *state = space.machine().driver_data<qix_state>();
505
506477   /* write to the sound chip */
507   state->m_sn1->write(space.machine().device<legacy_cpu_device>("maincpu")->space(), 0, data);
478   m_sn1->write(space.machine().device<legacy_cpu_device>("maincpu")->space(), 0, data);
508479
509480   /* clock the ready line going back into CB1 */
510   pia6821_device *pia = downcast<pia6821_device *>(device);
481   pia6821_device *pia = downcast<pia6821_device *>(machine().device("pia1"));
511482   pia->cb1_w(0);
512483   pia->cb1_w(1);
513484}
514485
515486
516static WRITE8_DEVICE_HANDLER( slither_76489_1_w )
487WRITE8_MEMBER(qix_state::slither_76489_1_w)
517488{
518   qix_state *state = space.machine().driver_data<qix_state>();
519489
520490   /* write to the sound chip */
521   state->m_sn2->write(space.machine().device<legacy_cpu_device>("maincpu")->space(), 0, data);
491   m_sn2->write(machine().device<legacy_cpu_device>("maincpu")->space(), 0, data);
522492
523493   /* clock the ready line going back into CB1 */
524   pia6821_device *pia = downcast<pia6821_device *>(device);
494   pia6821_device *pia = downcast<pia6821_device *>(machine().device("pia2"));
525495   pia->cb1_w(0);
526496   pia->cb1_w(1);
527497}
r18175r18176
534504 *
535505 *************************************/
536506
537static READ8_DEVICE_HANDLER( slither_trak_lr_r )
507READ8_MEMBER(qix_state::slither_trak_lr_r)
538508{
539   qix_state *state = space.machine().driver_data<qix_state>();
540509
541   return state->ioport(state->m_flip ? "AN3" : "AN1")->read();
510   return ioport(m_flip ? "AN3" : "AN1")->read();
542511}
543512
544513
545static READ8_DEVICE_HANDLER( slither_trak_ud_r )
514READ8_MEMBER(qix_state::slither_trak_ud_r)
546515{
547   qix_state *state = space.machine().driver_data<qix_state>();
548516
549   return state->ioport(state->m_flip ? "AN2" : "AN0")->read();
517   return ioport(m_flip ? "AN2" : "AN0")->read();
550518}
trunk/src/mame/machine/beezer.c
r18175r18176
44#include "includes/beezer.h"
55
66
7static DECLARE_READ8_DEVICE_HANDLER( b_via_0_pa_r );
8static DECLARE_READ8_DEVICE_HANDLER( b_via_0_pb_r );
9static DECLARE_WRITE8_DEVICE_HANDLER( b_via_0_pa_w );
10static DECLARE_WRITE8_DEVICE_HANDLER( b_via_0_pb_w );
11static READ_LINE_DEVICE_HANDLER( b_via_0_ca2_r );
127
13static DECLARE_READ8_DEVICE_HANDLER( b_via_1_pa_r );
14static DECLARE_READ8_DEVICE_HANDLER( b_via_1_pb_r );
15static DECLARE_WRITE8_DEVICE_HANDLER( b_via_1_pa_w );
16static DECLARE_WRITE8_DEVICE_HANDLER( b_via_1_pb_w );
17
18
198/* VIA 0 (aka "PPCNP74", U6 @1C on schematics)
209    enabled at CE00-CFFF of main m6809 cpu when bankswitch is set to 0
2110    port A:
r18175r18176
4130    */
4231const via6522_interface b_via_0_interface =
4332{
44   /*inputs : A/B         */ DEVCB_HANDLER(b_via_0_pa_r), DEVCB_HANDLER(b_via_0_pb_r),
45   /*inputs : CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("via6522_1", via6522_device, read_ca2), DEVCB_LINE(b_via_0_ca2_r), DEVCB_DEVICE_LINE_MEMBER("via6522_1", via6522_device, read_ca1),
46   /*outputs: A/B         */ DEVCB_HANDLER(b_via_0_pa_w), DEVCB_HANDLER(b_via_0_pb_w),
33   /*inputs : A/B         */ DEVCB_DRIVER_MEMBER(beezer_state,b_via_0_pa_r), DEVCB_DRIVER_MEMBER(beezer_state,b_via_0_pb_r),
34   /*inputs : CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("via6522_1", via6522_device, read_ca2), DEVCB_DRIVER_LINE_MEMBER(beezer_state, b_via_0_ca2_r), DEVCB_DEVICE_LINE_MEMBER("via6522_1", via6522_device, read_ca1),
35   /*outputs: A/B         */ DEVCB_DRIVER_MEMBER(beezer_state,b_via_0_pa_w), DEVCB_DRIVER_MEMBER(beezer_state,b_via_0_pb_w),
4736   /*outputs: CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("via6522_1", via6522_device, write_ca1),
4837   /*irq                  */ DEVCB_CPU_INPUT_LINE("maincpu", M6809_IRQ_LINE)
4938};
r18175r18176
7362    */
7463const via6522_interface b_via_1_interface =
7564{
76   /*inputs : A/B         */ DEVCB_HANDLER(b_via_1_pa_r), DEVCB_HANDLER(b_via_1_pb_r),
65   /*inputs : A/B         */ DEVCB_DRIVER_MEMBER(beezer_state,b_via_1_pa_r), DEVCB_DRIVER_MEMBER(beezer_state,b_via_1_pb_r),
7766   /*inputs : CA/B1,CA/B2 */ DEVCB_DEVICE_LINE_MEMBER("via6522_0", via6522_device, read_cb2), DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("via6522_0", via6522_device, read_cb1), DEVCB_NULL,
78   /*outputs: A/B         */ DEVCB_HANDLER(b_via_1_pa_w), DEVCB_HANDLER(b_via_1_pb_w),
67   /*outputs: A/B         */ DEVCB_DRIVER_MEMBER(beezer_state,b_via_1_pa_w), DEVCB_DRIVER_MEMBER(beezer_state,b_via_1_pb_w),
7968   /*outputs: CA/B1,CA/B2 */ DEVCB_NULL, DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("via6522_0", via6522_device, write_cb1), DEVCB_NULL,
8069   /*irq                  */ DEVCB_CPU_INPUT_LINE("audiocpu", M6809_IRQ_LINE)
8170};
8271
83static READ_LINE_DEVICE_HANDLER( b_via_0_ca2_r )
72READ_LINE_MEMBER(beezer_state::b_via_0_ca2_r)
8473{
8574   return 0; // TODO: TDISP on schematic, same as D5 bit of scanline count from 74LS161 counter at 7A; attach properly
8675
8776}
8877
89static READ8_DEVICE_HANDLER( b_via_0_pa_r )
78READ8_MEMBER(beezer_state::b_via_0_pa_r)
9079{
91   beezer_state *state = space.machine().driver_data<beezer_state>();
92   return (state->m_banklatch&0x38)<<2; // return X,Y,Z bits TODO: the Z bit connects somewhere else... where?
80   return (m_banklatch&0x38)<<2; // return X,Y,Z bits TODO: the Z bit connects somewhere else... where?
9381}
9482
95static READ8_DEVICE_HANDLER( b_via_0_pb_r )
83READ8_MEMBER(beezer_state::b_via_0_pb_r)
9684{
97   beezer_state *state = space.machine().driver_data<beezer_state>();
98   return state->m_pbus;
85   return m_pbus;
9986}
10087
101static WRITE8_DEVICE_HANDLER( b_via_0_pa_w )
88WRITE8_MEMBER(beezer_state::b_via_0_pa_w)
10289{
103   beezer_state *state = space.machine().driver_data<beezer_state>();
10490   if ((data & 0x08) == 0)
105      space.machine().device("audiocpu")->execute().set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
91      machine().device("audiocpu")->execute().set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
10692   else
107      space.machine().device("audiocpu")->execute().set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
93      machine().device("audiocpu")->execute().set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
10894
10995   if ((data & 0x04) == 0)
11096   {
11197      switch (data & 0x03)
11298      {
11399      case 0:
114         state->m_pbus = state->ioport("IN0")->read();
100         m_pbus = ioport("IN0")->read();
115101         break;
116102      case 1:
117         state->m_pbus = state->ioport("IN1")->read() | (state->ioport("IN2")->read() << 4);
103         m_pbus = ioport("IN1")->read() | (ioport("IN2")->read() << 4);
118104         break;
119105      case 2:
120         state->m_pbus = state->ioport("DSWB")->read();
106         m_pbus = ioport("DSWB")->read();
121107         break;
122108      case 3:
123         state->m_pbus = state->ioport("DSWA")->read(); // Technically DSWA isn't populated on the board and is pulled to 0xFF with resistor pack, but there IS a DSWA port in the driver so we may as well use it.
109         m_pbus = ioport("DSWA")->read(); // Technically DSWA isn't populated on the board and is pulled to 0xFF with resistor pack, but there IS a DSWA port in the driver so we may as well use it.
124110         break;
125111      }
126112   }
127113}
128114
129static WRITE8_DEVICE_HANDLER( b_via_0_pb_w )
115WRITE8_MEMBER(beezer_state::b_via_0_pb_w)
130116{
131   beezer_state *state = space.machine().driver_data<beezer_state>();
132   state->m_pbus = data;
117   m_pbus = data;
133118}
134119
135static READ8_DEVICE_HANDLER( b_via_1_pa_r )
120READ8_MEMBER(beezer_state::b_via_1_pa_r)
136121{
137   beezer_state *state = space.machine().driver_data<beezer_state>();
138   return state->m_pbus;
122   return m_pbus;
139123}
140124
141static READ8_DEVICE_HANDLER( b_via_1_pb_r )
125READ8_MEMBER(beezer_state::b_via_1_pb_r)
142126{
143   return 0x1F | (beezer_noise_r(space.machine().device("custom"), space, 0)?0x40:0);
127   return 0x1F | (beezer_noise_r(machine().device("custom"), space, 0)?0x40:0);
144128}
145129
146static WRITE8_DEVICE_HANDLER( b_via_1_pa_w )
130WRITE8_MEMBER(beezer_state::b_via_1_pa_w)
147131{
148   beezer_state *state = space.machine().driver_data<beezer_state>();
149   state->m_pbus = data;
132   m_pbus = data;
150133}
151134
152static WRITE8_DEVICE_HANDLER( b_via_1_pb_w )
135WRITE8_MEMBER(beezer_state::b_via_1_pb_w)
153136{
154   beezer_timer1_w(space.machine().device("custom"), space, 0, data&0x80);
137   beezer_timer1_w(machine().device("custom"), space, 0, data&0x80);
155138   //if ((data&0x1f) != 0x01)
156139   //  popmessage("via1 pb low write of 0x%02x is not supported! contact mamedev!", data&0x1f);
157140}
trunk/src/mame/machine/vertigo.c
r18175r18176
1717 *
1818 *************************************/
1919
20static WRITE_LINE_DEVICE_HANDLER( v_irq4_w );
21static WRITE_LINE_DEVICE_HANDLER( v_irq3_w );
2220
2321
2422
23
24
2525/*************************************
2626 *
2727 *  Statics
r18175r18176
4343      {
4444         240000,
4545         DEVCB_NULL,
46         DEVCB_LINE(v_irq4_w)
46         DEVCB_DRIVER_LINE_MEMBER(vertigo_state,v_irq4_w)
4747      }, {
4848         240000,
4949         DEVCB_NULL,
50         DEVCB_LINE(v_irq3_w)
50         DEVCB_DRIVER_LINE_MEMBER(vertigo_state,v_irq3_w)
5151      }, {
5252         240000,
5353         DEVCB_NULL,
r18175r18176
8787}
8888
8989
90static WRITE_LINE_DEVICE_HANDLER( v_irq4_w )
90WRITE_LINE_MEMBER(vertigo_state::v_irq4_w)
9191{
92   vertigo_state *drvstate = device->machine().driver_data<vertigo_state>();
93   update_irq_encoder(device->machine(), INPUT_LINE_IRQ4, state);
94   vertigo_vproc(device->machine(), device->machine().device<cpu_device>("maincpu")->attotime_to_cycles(device->machine().time() - drvstate->m_irq4_time), state);
95   drvstate->m_irq4_time = device->machine().time();
92   update_irq_encoder(machine(), INPUT_LINE_IRQ4, state);
93   vertigo_vproc(machine(), machine().device<cpu_device>("maincpu")->attotime_to_cycles(machine().time() - m_irq4_time), state);
94   m_irq4_time = machine().time();
9695}
9796
9897
99static WRITE_LINE_DEVICE_HANDLER( v_irq3_w )
98WRITE_LINE_MEMBER(vertigo_state::v_irq3_w)
10099{
101100   if (state)
102      device->machine().device("audiocpu")->execute().set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE);
101      machine().device("audiocpu")->execute().set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE);
103102
104   update_irq_encoder(device->machine(), INPUT_LINE_IRQ3, state);
103   update_irq_encoder(machine(), INPUT_LINE_IRQ3, state);
105104}
106105
107106
trunk/src/mame/machine/mcr.c
r18175r18176
3333
3434static emu_timer *ipu_watchdog_timer;
3535
36
3736/*************************************
3837 *
39 *  Function prototypes
40 *
41 *************************************/
42
43
44static DECLARE_WRITE8_DEVICE_HANDLER( ipu_break_changed );
45
46
47
48/*************************************
49 *
5038 *  Graphics declarations
5139 *
5240 *************************************/
r18175r18176
132120};
133121
134122
135static WRITE_LINE_DEVICE_HANDLER( ipu_ctc_interrupt )
123WRITE_LINE_MEMBER(mcr_state::ipu_ctc_interrupt)
136124{
137   device->machine().device("ipu")->execute().set_input_line(0, state);
125   machine().device("ipu")->execute().set_input_line(0, state);
138126}
139127
140128
141129const z80sio_interface nflfoot_sio_intf =
142130{
143   DEVCB_LINE(ipu_ctc_interrupt),   /* interrupt handler */
131   DEVCB_DRIVER_LINE_MEMBER(mcr_state,ipu_ctc_interrupt),   /* interrupt handler */
144132   DEVCB_NULL,               /* DTR changed handler */
145133   DEVCB_NULL,               /* RTS changed handler */
146   DEVCB_HANDLER(ipu_break_changed),   /* BREAK changed handler */
147   DEVCB_HANDLER(mcr_ipu_sio_transmit)/* transmit handler */
134   DEVCB_DRIVER_MEMBER(mcr_state,ipu_break_changed),   /* BREAK changed handler */
135   DEVCB_DRIVER_MEMBER16(mcr_state,mcr_ipu_sio_transmit)/* transmit handler */
148136};
149137
150138
r18175r18176
225213 *
226214 *************************************/
227215
228static WRITE8_DEVICE_HANDLER( ipu_break_changed )
216WRITE8_MEMBER(mcr_state::ipu_break_changed)
229217{
230218   /* channel B is connected to the CED player */
231219   if (offset == 1)
232220   {
233221      logerror("DTR changed -> %d\n", data);
234222      if (data == 1)
235         downcast<z80sio_device *>(device)->receive_data(1, 0);
223         downcast<z80sio_device *>(machine().device("ipu_sio"))->receive_data(1, 0);
236224   }
237225}
238226
trunk/src/mame/machine/tatsumi.c
r18175r18176
335335
336336// Todo:  Current YM2151 doesn't seem to raise the busy flag quickly enough for the
337337// self-test in Tatsumi games.  Needs fixed, but hack it here for now.
338READ8_DEVICE_HANDLER(tatsumi_hack_ym2151_r)
338READ8_MEMBER(tatsumi_state::tatsumi_hack_ym2151_r)
339339{
340   int r=ym2151_status_port_r(device,space,0);
340   int r=ym2151_status_port_r(machine().device("ymsnd"),space,0);
341341
342342   if (space.device().safe_pc()==0x2aca || space.device().safe_pc()==0x29fe
343343      || space.device().safe_pc()==0xf9721
r18175r18176
348348
349349// Todo:  Tatsumi self-test fails if OKI doesn't respond (when sound off).
350350// Mame really should emulate the OKI status reads even with Mame sound off.
351READ8_DEVICE_HANDLER(tatsumi_hack_oki_r)
351READ8_MEMBER(tatsumi_state::tatsumi_hack_oki_r)
352352{
353   int r=downcast<okim6295_device *>(device)->read(space,0);
353   int r=downcast<okim6295_device *>(machine().device("oki"))->read(space,0);
354354
355355   if (space.device().safe_pc()==0x2b70 || space.device().safe_pc()==0x2bb5
356356      || space.device().safe_pc()==0x2acc
trunk/src/mame/machine/megadriv.c
r18175r18176
105105
106106
107107
108READ8_DEVICE_HANDLER( megadriv_68k_YM2612_read)
108READ8_MEMBER(md_base_state::megadriv_68k_YM2612_read)
109109{
110   device_t *device = machine().device("ymsnd");
110111   //mame_printf_debug("megadriv_68k_YM2612_read %02x %04x\n",offset,mem_mask);
111112   if ( (genz80.z80_has_bus==0) && (genz80.z80_is_reset==0) )
112113   {
r18175r18176
114115   }
115116   else
116117   {
117      logerror("%s: 68000 attempting to access YM2612 (read) without bus\n", space.machine().describe_context());
118      logerror("%s: 68000 attempting to access YM2612 (read) without bus\n", machine().describe_context());
118119      return 0;
119120   }
120121
r18175r18176
122123}
123124
124125
125WRITE8_DEVICE_HANDLER( megadriv_68k_YM2612_write)
126WRITE8_MEMBER(md_base_state::megadriv_68k_YM2612_write)
126127{
128   device_t *device = machine().device("ymsnd");
127129   //mame_printf_debug("megadriv_68k_YM2612_write %02x %04x %04x\n",offset,data,mem_mask);
128130   if ( (genz80.z80_has_bus==0) && (genz80.z80_is_reset==0) )
129131   {
r18175r18176
131133   }
132134   else
133135   {
134      logerror("%s: 68000 attempting to access YM2612 (write) without bus\n", space.machine().describe_context());
136      logerror("%s: 68000 attempting to access YM2612 (write) without bus\n", machine().describe_context());
135137   }
136138}
137139
r18175r18176
559561
560562
561563
562static ADDRESS_MAP_START( megadriv_map, AS_PROGRAM, 16, driver_device )
564static ADDRESS_MAP_START( megadriv_map, AS_PROGRAM, 16, md_base_state )
563565   AM_RANGE(0x000000, 0x3fffff) AM_ROM
564566   /*      (0x000000 - 0x3fffff) == GAME ROM (4Meg Max, Some games have special banking too) */
565567
566568   AM_RANGE(0xa00000, 0xa01fff) AM_READWRITE_LEGACY(megadriv_68k_read_z80_ram,megadriv_68k_write_z80_ram)
567569   AM_RANGE(0xa02000, 0xa03fff) AM_WRITE_LEGACY(megadriv_68k_write_z80_ram)
568   AM_RANGE(0xa04000, 0xa04003) AM_DEVREADWRITE8_LEGACY("ymsnd", megadriv_68k_YM2612_read,megadriv_68k_YM2612_write, 0xffff)
570   AM_RANGE(0xa04000, 0xa04003) AM_READWRITE8(megadriv_68k_YM2612_read,megadriv_68k_YM2612_write, 0xffff)
569571
570572   AM_RANGE(0xa06000, 0xa06001) AM_WRITE_LEGACY(megadriv_68k_z80_bank_write)
571573
r18175r18176
865867/************************************ Megadrive Bootlegs *************************************/
866868
867869// smaller ROM region because some bootlegs check for RAM there
868static ADDRESS_MAP_START( md_bootleg_map, AS_PROGRAM, 16, driver_device )
870static ADDRESS_MAP_START( md_bootleg_map, AS_PROGRAM, 16, md_base_state )
869871   AM_RANGE(0x000000, 0x0fffff) AM_ROM   /* Cartridge Program Rom */
870872   AM_RANGE(0x200000, 0x2023ff) AM_RAM // tested
871873
872874   AM_RANGE(0xa00000, 0xa01fff) AM_READWRITE_LEGACY(megadriv_68k_read_z80_ram, megadriv_68k_write_z80_ram)
873875   AM_RANGE(0xa02000, 0xa03fff) AM_WRITE_LEGACY(megadriv_68k_write_z80_ram)
874   AM_RANGE(0xa04000, 0xa04003) AM_DEVREADWRITE8_LEGACY("ymsnd", megadriv_68k_YM2612_read, megadriv_68k_YM2612_write, 0xffff)
876   AM_RANGE(0xa04000, 0xa04003) AM_READWRITE8(megadriv_68k_YM2612_read, megadriv_68k_YM2612_write, 0xffff)
875877   AM_RANGE(0xa06000, 0xa06001) AM_WRITE_LEGACY(megadriv_68k_z80_bank_write)
876878
877879   AM_RANGE(0xa10000, 0xa1001f) AM_READWRITE_LEGACY(megadriv_68k_io_read, megadriv_68k_io_write)
trunk/src/mame/machine/snes.c
r18175r18176
750750   snes_ram[offset] = data;
751751}
752752
753WRITE_LINE_DEVICE_HANDLER( snes_extern_irq_w )
753WRITE_LINE_MEMBER(snes_state::snes_extern_irq_w)
754754{
755   snes_state *driver_state = device->machine().driver_data<snes_state>();
756   driver_state->m_maincpu->set_input_line(G65816_LINE_IRQ, state);
755   m_maincpu->set_input_line(G65816_LINE_IRQ, state);
757756}
758757
759758/*************************************
trunk/src/mame/machine/leland.c
r18175r18176
333333   /* reset globals */
334334   m_gfx_control = 0x00;
335335   address_space &space = generic_space();
336   leland_sound_port_w(machine().device("ay8910.1"), space, 0, 0xff);
336   leland_sound_port_w(space, 0, 0xff);
337337   m_wcol_enable = 0;
338338
339339   m_dangerz_x = 512;
r18175r18176
817817 *
818818 *************************************/
819819
820READ8_DEVICE_HANDLER( ataxx_eeprom_r )
820READ8_MEMBER(leland_state::ataxx_eeprom_r)
821821{
822   int port = space.machine().root_device().ioport("IN2")->read();
823   if (LOG_EEPROM) logerror("%s:EE read\n", space.machine().describe_context());
822   int port = machine().root_device().ioport("IN2")->read();
823   if (LOG_EEPROM) logerror("%s:EE read\n", machine().describe_context());
824824   return port;
825825}
826826
827827
828WRITE8_DEVICE_HANDLER( ataxx_eeprom_w )
828WRITE8_MEMBER(leland_state::ataxx_eeprom_w)
829829{
830   if (LOG_EEPROM) logerror("%s:EE write %d%d%d\n", space.machine().describe_context(),
830   if (LOG_EEPROM) logerror("%s:EE write %d%d%d\n", machine().describe_context(),
831831         (data >> 6) & 1, (data >> 5) & 1, (data >> 4) & 1);
832   eeprom_device *eeprom = downcast<eeprom_device *>(device);
832   eeprom_device *eeprom = downcast<eeprom_device *>(machine().device("eeprom"));
833833   eeprom->write_bit     ((data & 0x10) >> 4);
834834   eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
835835   eeprom->set_cs_line   ((~data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
r18175r18176
13021302 *
13031303 *************************************/
13041304
1305READ8_DEVICE_HANDLER( leland_sound_port_r )
1305READ8_MEMBER(leland_state::leland_sound_port_r)
13061306{
1307   leland_state *state = space.machine().driver_data<leland_state>();
1308   return state->m_gfx_control;
1307   return m_gfx_control;
13091308}
13101309
13111310
1312WRITE8_DEVICE_HANDLER( leland_sound_port_w )
1311WRITE8_MEMBER(leland_state::leland_sound_port_w)
13131312{
1314   leland_state *state = space.machine().driver_data<leland_state>();
13151313   /* update the graphics banking */
1316   leland_gfx_port_w(device, space, 0, data);
1314   leland_gfx_port_w(space, 0, data);
13171315
13181316   /* set the new value */
1319   state->m_gfx_control = data;
1320   state->m_dac_control = data & 3;
1317   m_gfx_control = data;
1318   m_dac_control = data & 3;
13211319
13221320   /* some bankswitching occurs here */
13231321   if (LOG_BANKSWITCHING_M)
1324      if ((state->m_sound_port_bank ^ data) & 0x24)
1325         logerror("%s:sound_port_bank = %02X\n", space.machine().describe_context(), data & 0x24);
1326   state->m_sound_port_bank = data & 0x24;
1327   (*state->m_update_master_bank)(space.machine());
1322      if ((m_sound_port_bank ^ data) & 0x24)
1323         logerror("%s:sound_port_bank = %02X\n", machine().describe_context(), data & 0x24);
1324   m_sound_port_bank = data & 0x24;
1325   (*m_update_master_bank)(machine());
13281326}
13291327
13301328

Previous 199869 Revisions Next


© 1997-2024 The MAME Team