Previous 199869 Revisions Next

r26905 Friday 3rd January, 2014 at 00:53:49 UTC by hap
fixed montecar slowdowns
[src/mame/drivers]firetrk.c
[src/mame/includes]firetrk.h
[src/mame/video]firetrk.c

trunk/src/mame/video/firetrk.c
r26904r26905
77#include "emu.h"
88#include "includes/firetrk.h"
99
10
11
12
13
14
15
1610static const rectangle playfield_window(0x02a, 0x115, 0x000, 0x0ff);
1711
1812
19
20
2113void firetrk_state::palette_init()
2214{
2315   int i;
trunk/src/mame/includes/firetrk.h
r26904r26905
3333class firetrk_state : public driver_device
3434{
3535public:
36   enum
37   {
38      TIMER_PERIODIC
39   };
40
4136   firetrk_state(const machine_config &mconfig, device_type type, const char *tag)
4237      : driver_device(mconfig, type, tag),
38      m_maincpu(*this, "maincpu"),
39      m_discrete(*this, "discrete"),
4340      m_alpha_num_ram(*this, "alpha_num_ram"),
4441      m_playfield_ram(*this, "playfield_ram"),
4542      m_scroll_y(*this, "scroll_y"),
r26904r26905
4845      m_blink(*this, "blink"),
4946      m_drone_x(*this, "drone_x"),
5047      m_drone_y(*this, "drone_y"),
51      m_drone_rot(*this, "drone_rot"),
52      m_discrete(*this, "discrete"),
53      m_maincpu(*this, "maincpu") { }
48      m_drone_rot(*this, "drone_rot")
49   { }
5450
55   UINT8 m_in_service_mode;
56   UINT32 m_dial[2];
57   UINT8 m_steer_dir[2];
58   UINT8 m_steer_flag[2];
59   UINT8 m_gear;
51   required_device<cpu_device> m_maincpu;
52   required_device<discrete_device> m_discrete;
6053   required_shared_ptr<UINT8> m_alpha_num_ram;
6154   required_shared_ptr<UINT8> m_playfield_ram;
6255   required_shared_ptr<UINT8> m_scroll_y;
r26904r26905
6659   optional_shared_ptr<UINT8> m_drone_x;
6760   optional_shared_ptr<UINT8> m_drone_y;
6861   optional_shared_ptr<UINT8> m_drone_rot;
69   required_device<discrete_device> m_discrete;
62
63   UINT8 m_in_service_mode;
64   UINT32 m_dial[2];
65   UINT8 m_steer_dir[2];
66   UINT8 m_steer_flag[2];
67   UINT8 m_gear;
68
7069   UINT8 m_flash;
7170   UINT8 m_crash[2];
7271   UINT8 m_skid[2];
r26904r26905
7675   UINT32 m_color2_mask;
7776   tilemap_t *m_tilemap1;
7877   tilemap_t *m_tilemap2;
78
7979   DECLARE_WRITE8_MEMBER(firetrk_output_w);
8080   DECLARE_WRITE8_MEMBER(superbug_output_w);
8181   DECLARE_WRITE8_MEMBER(montecar_output_1_w);
r26904r26905
112112   UINT32 screen_update_firetrk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
113113   UINT32 screen_update_superbug(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
114114   UINT32 screen_update_montecar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
115   INTERRUPT_GEN_MEMBER(firetrk_interrupt);
116   TIMER_CALLBACK_MEMBER(periodic_callback);
115   TIMER_DEVICE_CALLBACK_MEMBER(firetrk_scanline);
117116   DECLARE_WRITE8_MEMBER(firetrk_skid_reset_w);
118117   DECLARE_WRITE8_MEMBER(montecar_skid_reset_w);
119118   DECLARE_WRITE8_MEMBER(firetrk_crash_snd_w);
r26904r26905
127126   void montecar_draw_car(bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element **gfx, int which, int is_collision_detection);
128127   void check_collision(firetrk_state *state, int which);
129128   void set_service_mode(int enable);
130   required_device<cpu_device> m_maincpu;
131
132protected:
133   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
134129};
135130
136131
137132/*----------- defined in audio/firetrk.c -----------*/
138133
139
140134DISCRETE_SOUND_EXTERN( firetrk );
141135DISCRETE_SOUND_EXTERN( superbug );
142136DISCRETE_SOUND_EXTERN( montecar );
trunk/src/mame/drivers/firetrk.c
r26904r26905
44
55***************************************************************************/
66
7
87#include "emu.h"
98#include "cpu/m6800/m6800.h"
109#include "includes/firetrk.h"
r26904r26905
2423   machine().watchdog_enable(!enable);
2524
2625   /* change CPU clock speed according to service switch change */
27   m_maincpu->set_unscaled_clock(enable ? (MASTER_CLOCK/12) : (MASTER_CLOCK/16));
26   m_maincpu->set_unscaled_clock(enable ? (MASTER_CLOCK/16) : (MASTER_CLOCK/12));
2827}
2928
3029
r26904r26905
4746}
4847
4948
50INTERRUPT_GEN_MEMBER(firetrk_state::firetrk_interrupt)
49TIMER_DEVICE_CALLBACK_MEMBER(firetrk_state::firetrk_scanline)
5150{
52   /* NMI interrupts are disabled during service mode in firetrk and montecar */
53   if (!m_in_service_mode)
54      device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
55}
56
57
58void firetrk_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
59{
60   switch (id)
61   {
62   case TIMER_PERIODIC:
63      periodic_callback(ptr, param);
64      break;
65   default:
66      assert_always(FALSE, "Unknown id in firetrk_state::device_timer");
67   }
68}
69
70
71TIMER_CALLBACK_MEMBER(firetrk_state::periodic_callback)
72{
7351   int scanline = param;
74
75   generic_pulse_irq_line(m_maincpu, 0, 1);
76
77   /* IRQs are generated by inverse 16V signal */
78   scanline += 32;
79
80   if (scanline > 262)
81      scanline = 0;
82
83   timer_set(m_screen->time_until_pos(scanline), TIMER_PERIODIC, scanline);
52   
53   // periodic IRQs are generated by inverse 16V signal
54   if ((scanline & 0x1f) == 0)
55      generic_pulse_irq_line(m_maincpu, 0, 1);
56   
57   // vblank interrupt
58   // NMIs are disabled during service mode
59   if (!m_in_service_mode && scanline == 240)
60      m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
8461}
8562
8663
r26904r26905
168145void firetrk_state::machine_reset()
169146{
170147   set_service_mode(0);
171
172   machine().scheduler().synchronize(timer_expired_delegate(FUNC(firetrk_state::periodic_callback),this));
173148}
174149
175150
r26904r26905
879854   /* basic machine hardware */
880855   MCFG_CPU_ADD("maincpu", M6800, MASTER_CLOCK/12) /* 750Khz during service mode */
881856   MCFG_CPU_PROGRAM_MAP(firetrk_map)
882   MCFG_CPU_VBLANK_INT_DRIVER("screen", firetrk_state, firetrk_interrupt)
857   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", firetrk_state, firetrk_scanline, "screen", 0, 1)
883858   MCFG_WATCHDOG_VBLANK_INIT(5)
884859
885
886860   /* video hardware */
887861   MCFG_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
888862
r26904r26905
928902static MACHINE_CONFIG_DERIVED( montecar, firetrk )
929903
930904   /* basic machine hardware */
931   MCFG_CPU_MODIFY("maincpu")  /* 750Khz during service mode */
905   MCFG_CPU_MODIFY("maincpu")
932906   MCFG_CPU_PROGRAM_MAP(montecar_map)
933907
934908   /* video hardware */

Previous 199869 Revisions Next


© 1997-2024 The MAME Team