Previous 199869 Revisions Next

r36191 Monday 2nd March, 2015 at 17:56:48 UTC by Osso
mgolf.c: removed anonymous timer, added save state support (nw)
[src/mame/drivers]megasys1.c mgolf.c
[src/mame/video]megasys1.c

trunk/src/mame/drivers/megasys1.c
r244702r244703
105105
106106- Understand properly how irqs truly works, kazan / iganinju is (again) broken.
107107
108- 64street: player characters in attract mode doesn't move at all, protection?
109  they move on the real PCB
108- 64street: player characters in attract mode doesn't move at all, protection
109  or btanb?
110110
111111- Understand a handful of unknown bits in video regs
112112
r244702r244703
17511751   ROM_LOAD( "64th_10.rom", 0x000000, 0x040000, CRC(a3390561) SHA1(f86d5c61e3e80d30408535c2203940ca1e95ac18) )
17521752
17531753   ROM_REGION( 0x0200, "proms", 0 )        /* Priority PROM */
1754   ROM_LOAD( "pr91009.12",  0x0000, 0x0200, CRC(c69423d6) SHA1(ba9644a9899df2d73a5a16bf7ceef1954c2e25f3) ) // same as pr-91044 on hayaosi1
1754   ROM_LOAD( "prom",        0x0000, 0x0200, NO_DUMP )
17551755ROM_END
17561756
17571757
r244702r244703
17871787   ROM_LOAD( "64th_10.rom", 0x000000, 0x040000, CRC(a3390561) SHA1(f86d5c61e3e80d30408535c2203940ca1e95ac18) )
17881788
17891789   ROM_REGION( 0x0200, "proms", 0 )        /* Priority PROM */
1790   ROM_LOAD( "pr91009.12",  0x0000, 0x0200, CRC(c69423d6) SHA1(ba9644a9899df2d73a5a16bf7ceef1954c2e25f3) ) // same as pr-91044 on hayaosi1
1790   ROM_LOAD( "prom",        0x0000, 0x0200, NO_DUMP )
17911791ROM_END
17921792
17931793
trunk/src/mame/drivers/mgolf.c
r244702r244703
1717
1818   mgolf_state(const machine_config &mconfig, device_type type, const char *tag)
1919      : driver_device(mconfig, type, tag),
20      m_video_ram(*this, "video_ram"),
2120      m_maincpu(*this, "maincpu"),
2221      m_gfxdecode(*this, "gfxdecode"),
2322      m_screen(*this, "screen"),
24      m_palette(*this, "palette") { }
23      m_palette(*this, "palette"),
24      m_video_ram(*this, "video_ram") { }
2525
26   /* devices */
27   required_device<cpu_device> m_maincpu;
28   required_device<gfxdecode_device> m_gfxdecode;
29   required_device<screen_device> m_screen;
30   required_device<palette_device> m_palette;
31
2632   /* memory pointers */
2733   required_shared_ptr<UINT8> m_video_ram;
2834
r244702r244703
3440   UINT8 m_mask;
3541   attotime m_time_pushed;
3642   attotime m_time_released;
43   emu_timer *m_interrupt_timer;
3744
38   /* devices */
39   required_device<cpu_device> m_maincpu;
40   required_device<gfxdecode_device> m_gfxdecode;
41   required_device<screen_device> m_screen;
42   required_device<palette_device> m_palette;
43
44   DECLARE_WRITE8_MEMBER(mgolf_vram_w);
45   DECLARE_READ8_MEMBER(mgolf_wram_r);
46   DECLARE_READ8_MEMBER(mgolf_dial_r);
47   DECLARE_READ8_MEMBER(mgolf_misc_r);
48   DECLARE_WRITE8_MEMBER(mgolf_wram_w);
45   DECLARE_WRITE8_MEMBER(vram_w);
46   DECLARE_READ8_MEMBER(wram_r);
47   DECLARE_READ8_MEMBER(dial_r);
48   DECLARE_READ8_MEMBER(misc_r);
49   DECLARE_WRITE8_MEMBER(wram_w);
50   
4951   TILE_GET_INFO_MEMBER(get_tile_info);
52   
5053   virtual void machine_start();
5154   virtual void machine_reset();
5255   virtual void video_start();
5356   DECLARE_PALETTE_INIT(mgolf);
54   UINT32 screen_update_mgolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
57   
58   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
59   
5560   TIMER_CALLBACK_MEMBER(interrupt_callback);
61   
5662   void update_plunger(  );
5763   double calc_plunger_pos();
5864
r244702r244703
6975}
7076
7177
72WRITE8_MEMBER(mgolf_state::mgolf_vram_w)
78WRITE8_MEMBER(mgolf_state::vram_w)
7379{
7480   m_video_ram[offset] = data;
7581   m_bg_tilemap->mark_tile_dirty(offset);
r244702r244703
8288}
8389
8490
85UINT32 mgolf_state::screen_update_mgolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
91UINT32 mgolf_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
8692{
8793   int i;
8894
r244702r244703
157163   if (scanline >= 262)
158164      scanline = 16;
159165
160   timer_set(m_screen->time_until_pos(scanline), TIMER_INTERRUPT, scanline);
166   m_interrupt_timer->adjust(m_screen->time_until_pos(scanline), scanline);
161167}
162168
163169
r244702r244703
167173}
168174
169175
170READ8_MEMBER(mgolf_state::mgolf_wram_r)
176READ8_MEMBER(mgolf_state::wram_r)
171177{
172178   return m_video_ram[0x380 + offset];
173179}
174180
175181
176READ8_MEMBER(mgolf_state::mgolf_dial_r)
182READ8_MEMBER(mgolf_state::dial_r)
177183{
178184   UINT8 val = ioport("41")->read();
179185
r244702r244703
190196}
191197
192198
193READ8_MEMBER(mgolf_state::mgolf_misc_r)
199READ8_MEMBER(mgolf_state::misc_r)
194200{
195201   double plunger = calc_plunger_pos(); /* see Video Pinball */
196202
r244702r244703
209215}
210216
211217
212WRITE8_MEMBER(mgolf_state::mgolf_wram_w)
218WRITE8_MEMBER(mgolf_state::wram_w)
213219{
214220   m_video_ram[0x380 + offset] = data;
215221}
r244702r244703
220226   ADDRESS_MAP_GLOBAL_MASK(0x3fff)
221227
222228   AM_RANGE(0x0040, 0x0040) AM_READ_PORT("40")
223   AM_RANGE(0x0041, 0x0041) AM_READ(mgolf_dial_r)
229   AM_RANGE(0x0041, 0x0041) AM_READ(dial_r)
224230   AM_RANGE(0x0060, 0x0060) AM_READ_PORT("60")
225   AM_RANGE(0x0061, 0x0061) AM_READ(mgolf_misc_r)
226   AM_RANGE(0x0080, 0x00ff) AM_READ(mgolf_wram_r)
227   AM_RANGE(0x0180, 0x01ff) AM_READ(mgolf_wram_r)
231   AM_RANGE(0x0061, 0x0061) AM_READ(misc_r)
232   AM_RANGE(0x0080, 0x00ff) AM_READ(wram_r)
233   AM_RANGE(0x0180, 0x01ff) AM_READ(wram_r)
228234   AM_RANGE(0x0800, 0x0bff) AM_READONLY
229235
230236   AM_RANGE(0x0000, 0x0009) AM_WRITENOP
r244702r244703
238244   AM_RANGE(0x006a, 0x006a) AM_WRITENOP
239245   AM_RANGE(0x006c, 0x006c) AM_WRITENOP
240246   AM_RANGE(0x006d, 0x006d) AM_WRITENOP
241   AM_RANGE(0x0080, 0x00ff) AM_WRITE(mgolf_wram_w)
242   AM_RANGE(0x0180, 0x01ff) AM_WRITE(mgolf_wram_w)
243   AM_RANGE(0x0800, 0x0bff) AM_WRITE(mgolf_vram_w) AM_SHARE("video_ram")
247   AM_RANGE(0x0080, 0x00ff) AM_WRITE(wram_w)
248   AM_RANGE(0x0180, 0x01ff) AM_WRITE(wram_w)
249   AM_RANGE(0x0800, 0x0bff) AM_WRITE(vram_w) AM_SHARE("video_ram")
244250
245251   AM_RANGE(0x2000, 0x3fff) AM_ROM
246252ADDRESS_MAP_END
r244702r244703
336342
337343void mgolf_state::machine_start()
338344{
345   m_interrupt_timer = timer_alloc(TIMER_INTERRUPT);
346   
339347   save_item(NAME(m_prev));
340348   save_item(NAME(m_mask));
349   save_item(NAME(m_time_pushed));
350   save_item(NAME(m_time_released));
341351}
342352
343353void mgolf_state::machine_reset()
344354{
345   timer_set(m_screen->time_until_pos(16), TIMER_INTERRUPT, 16);
355   m_interrupt_timer->adjust(m_screen->time_until_pos(16), 16);
346356
347357   m_mask = 0;
348358   m_prev = 0;
r244702r244703
361371   MCFG_SCREEN_REFRESH_RATE(60)
362372   MCFG_SCREEN_SIZE(256, 262)
363373   MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 223)
364   MCFG_SCREEN_UPDATE_DRIVER(mgolf_state, screen_update_mgolf)
374   MCFG_SCREEN_UPDATE_DRIVER(mgolf_state, screen_update)
365375   MCFG_SCREEN_PALETTE("palette")
366376
367377   MCFG_GFXDECODE_ADD("gfxdecode", "palette", mgolf)
r244702r244703
396406ROM_END
397407
398408
399GAME( 1978, mgolf, 0, mgolf, mgolf, driver_device, 0, ROT270, "Atari", "Atari Mini Golf (prototype)", GAME_NO_SOUND )
409GAME( 1978, mgolf, 0, mgolf, mgolf, driver_device, 0, ROT270, "Atari", "Atari Mini Golf (prototype)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
trunk/src/mame/video/megasys1.c
r244702r244703
726726
727727static const struct priority priorities[] =
728728{
729   {   "64street",
730      { 0x04132,0x03142,0x14032,0x04132,0xfffff,0x04132,0xfffff,0xfffff,
731         0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff }
732   },
729733   {   "chimerab",
730734      { 0x14032,0x04132,0x14032,0x04132,0xfffff,0xfffff,0xfffff,0xfffff,
731735         0xfffff,0xfffff,0x01324,0xfffff,0xfffff,0xfffff,0xfffff,0xfffff }


Previous 199869 Revisions Next


© 1997-2024 The MAME Team