Previous 199869 Revisions Next

r32048 Wednesday 10th September, 2014 at 08:48:37 UTC by Tafoid
Cleanups & fix for missing acknowledgment of a5200 button 2 inputs (MT5591) - from Fabio. (nw)
[src/mame/drivers]bartop52.c maxaflex.c
[src/mame/includes]atari.h
[src/mame/machine]atari.c
[src/mame/video]antic.c atari.c gtia.c
[src/mess/drivers]atari400.c

trunk/src/mess/drivers/atari400.c
r32047r32048
4646#include "sound/pokey.h"
4747#include "includes/atari.h"
4848#include "machine/atarifdc.h"
49#include "video/gtia.h"
5049#include "bus/a800/a800_slot.h"
5150#include "bus/a800/a800_carts.h"
5251
r32047r32048
287286   DECLARE_READ8_MEMBER(xegs_high_r);
288287   DECLARE_WRITE8_MEMBER(xegs_high_w);
289288   
289   TIMER_DEVICE_CALLBACK_MEMBER(a400_interrupt);
290   TIMER_DEVICE_CALLBACK_MEMBER(a800xl_interrupt);
291   TIMER_DEVICE_CALLBACK_MEMBER(a5200_interrupt);
292   
290293protected:
291294   required_device<cpu_device> m_maincpu;
292295   required_device<ram_device> m_ram;
r32047r32048
663666
664667   PORT_START("djoy_b")
665668   PORT_BIT(0x01, 0x01, IPT_BUTTON1) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(JOYCODE_BUTTON1) PORT_PLAYER(1)
666   PORT_BIT(0x02, 0x02, IPT_BUTTON1) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(JOYCODE_BUTTON2) PORT_PLAYER(2)
669   PORT_BIT(0x02, 0x02, IPT_BUTTON1) PORT_CODE(JOYCODE_BUTTON1) PORT_PLAYER(2)
667670   PORT_BIT(0x04, 0x04, IPT_UNUSED)
668671   PORT_BIT(0x08, 0x08, IPT_UNUSED)
669   PORT_BIT(0x10, 0x10, IPT_BUTTON2) PORT_CODE(KEYCODE_DEL_PAD) PORT_CODE(JOYCODE_BUTTON1) PORT_PLAYER(1)
670   PORT_BIT(0x20, 0x20, IPT_BUTTON2) PORT_CODE(KEYCODE_DEL_PAD) PORT_CODE(JOYCODE_BUTTON2) PORT_PLAYER(2)
672   PORT_BIT(0x10, 0x10, IPT_BUTTON2) PORT_CODE(KEYCODE_DEL_PAD) PORT_CODE(JOYCODE_BUTTON2) PORT_PLAYER(1)
673   PORT_BIT(0x20, 0x20, IPT_BUTTON2) PORT_CODE(JOYCODE_BUTTON2) PORT_PLAYER(2)
671674   PORT_BIT(0x40, 0x40, IPT_UNUSED)
672675   PORT_BIT(0x80, 0x80, IPT_UNUSED)
673676INPUT_PORTS_END
r32047r32048
697700
698701   PORT_START("djoy_b")
699702   PORT_BIT(0x01, 0x01, IPT_BUTTON1) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(JOYCODE_BUTTON1) PORT_PLAYER(1)
700   PORT_BIT(0x02, 0x02, IPT_BUTTON1) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(JOYCODE_BUTTON2) PORT_PLAYER(2)
701   PORT_BIT(0x04, 0x04, IPT_BUTTON1) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(JOYCODE_BUTTON3) PORT_PLAYER(3)
702   PORT_BIT(0x08, 0x08, IPT_BUTTON1) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(JOYCODE_BUTTON4) PORT_PLAYER(4)
703   PORT_BIT(0x10, 0x10, IPT_BUTTON2) PORT_CODE(KEYCODE_DEL_PAD) PORT_CODE(JOYCODE_BUTTON1) PORT_PLAYER(1)
703   PORT_BIT(0x02, 0x02, IPT_BUTTON1) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(JOYCODE_BUTTON1) PORT_PLAYER(2)
704   PORT_BIT(0x04, 0x04, IPT_BUTTON1) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(JOYCODE_BUTTON1) PORT_PLAYER(3)
705   PORT_BIT(0x08, 0x08, IPT_BUTTON1) PORT_CODE(KEYCODE_0_PAD) PORT_CODE(JOYCODE_BUTTON1) PORT_PLAYER(4)
706   PORT_BIT(0x10, 0x10, IPT_BUTTON2) PORT_CODE(KEYCODE_DEL_PAD) PORT_CODE(JOYCODE_BUTTON2) PORT_PLAYER(1)
704707   PORT_BIT(0x20, 0x20, IPT_BUTTON2) PORT_CODE(KEYCODE_DEL_PAD) PORT_CODE(JOYCODE_BUTTON2) PORT_PLAYER(2)
705   PORT_BIT(0x40, 0x40, IPT_BUTTON2) PORT_CODE(KEYCODE_DEL_PAD) PORT_CODE(JOYCODE_BUTTON3) PORT_PLAYER(3)
706   PORT_BIT(0x80, 0x80, IPT_BUTTON2) PORT_CODE(KEYCODE_DEL_PAD) PORT_CODE(JOYCODE_BUTTON4) PORT_PLAYER(4)
708   PORT_BIT(0x40, 0x40, IPT_BUTTON2) PORT_CODE(KEYCODE_DEL_PAD) PORT_CODE(JOYCODE_BUTTON2) PORT_PLAYER(3)
709   PORT_BIT(0x80, 0x80, IPT_BUTTON2) PORT_CODE(KEYCODE_DEL_PAD) PORT_CODE(JOYCODE_BUTTON2) PORT_PLAYER(4)
707710INPUT_PORTS_END
708711
709712
r32047r32048
19271930}
19281931
19291932
1933TIMER_DEVICE_CALLBACK_MEMBER( a400_state::a400_interrupt )
1934{
1935   m_antic->generic_interrupt(4);
1936}
1937
1938TIMER_DEVICE_CALLBACK_MEMBER( a400_state::a800xl_interrupt )
1939{
1940   m_antic->generic_interrupt(2);
1941}
1942
1943TIMER_DEVICE_CALLBACK_MEMBER( a400_state::a5200_interrupt )
1944{
1945   m_antic->generic_interrupt(4);
1946}
1947
19301948MACHINE_RESET_MEMBER( a400_state, a400 )
19311949{
19321950   pokey_device *pokey = machine().device<pokey_device>("pokey");
r32047r32048
21032121
21042122   MCFG_CPU_MODIFY( "maincpu" )
21052123   MCFG_CPU_PROGRAM_MAP(a400_mem)
2106   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", atari_common_state, a400_interrupt, "screen", 0, 1)
2124   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", a400_state, a400_interrupt, "screen", 0, 1)
21072125
21082126   MCFG_MACHINE_START_OVERRIDE( a400_state, a400 )
21092127
r32047r32048
21182136
21192137   MCFG_CPU_MODIFY( "maincpu" )
21202138   MCFG_CPU_PROGRAM_MAP(a400_mem)
2121   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", atari_common_state, a400_interrupt, "screen", 0, 1)
2139   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", a400_state, a400_interrupt, "screen", 0, 1)
21222140
21232141   MCFG_MACHINE_START_OVERRIDE( a400_state, a400 )
21242142
r32047r32048
21332151
21342152   MCFG_CPU_MODIFY( "maincpu" )
21352153   MCFG_CPU_PROGRAM_MAP(a400_mem)
2136   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", atari_common_state, a800_interrupt, "screen", 0, 1)
2154   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", a400_state, a400_interrupt, "screen", 0, 1)
21372155
21382156   MCFG_MACHINE_START_OVERRIDE( a400_state, a800 )
21392157
r32047r32048
21502168
21512169   MCFG_CPU_MODIFY( "maincpu" )
21522170   MCFG_CPU_PROGRAM_MAP(a400_mem)
2153   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", atari_common_state, a800_interrupt, "screen", 0, 1)
2171   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", a400_state, a400_interrupt, "screen", 0, 1)
21542172
21552173   MCFG_MACHINE_START_OVERRIDE( a400_state, a800 )
21562174
r32047r32048
21672185
21682186   MCFG_CPU_MODIFY( "maincpu" )
21692187   MCFG_CPU_PROGRAM_MAP(a600xl_mem)
2170   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", atari_common_state, a800xl_interrupt, "screen", 0, 1)
2188   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", a400_state, a800xl_interrupt, "screen", 0, 1)
21712189
21722190   MCFG_DEVICE_MODIFY("pia")
21732191   MCFG_PIA_WRITEPB_HANDLER(WRITE8(a400_state, a600xl_pia_pb_w))
r32047r32048
21882206
21892207   MCFG_CPU_MODIFY( "maincpu" )
21902208   MCFG_CPU_PROGRAM_MAP(a800xl_mem)
2191   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", atari_common_state, a800xl_interrupt, "screen", 0, 1)
2209   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", a400_state, a800xl_interrupt, "screen", 0, 1)
21922210
21932211   MCFG_DEVICE_MODIFY("pia")
21942212   MCFG_PIA_WRITEPB_HANDLER(WRITE8(a400_state, a800xl_pia_pb_w))
r32047r32048
22592277
22602278   MCFG_CPU_MODIFY( "maincpu" )
22612279   MCFG_CPU_PROGRAM_MAP(a5200_mem)
2262   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", atari_common_state, a5200_interrupt, "screen", 0, 1)
2280   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", a400_state, a5200_interrupt, "screen", 0, 1)
22632281
22642282   // FIXME: should there be anything connected where other system have the fdc?
22652283   MCFG_SOUND_MODIFY("pokey")
trunk/src/mame/machine/atari.c
r32047r32048
168168      ret |= ((machine().root_device().ioport(tag[0])->read_safe(0) & 0x01) ? 0x02 : 0x00);
169169      break;
170170   case pokey_device::POK_KEY_CTRL:
171      break;
171172   case pokey_device::POK_KEY_SHIFT:
173      // button 2 from joypads
174      ipt = machine().root_device().ioport("djoy_b")->read() & (0x10 << ((k543210 >> 3) & 0x03));
175      ret |= !ipt ? 0x02 : 0;
172176      break;
173177   }
174178
trunk/src/mame/includes/atari.h
r32047r32048
2929
3030   virtual void video_start();
3131
32   TIMER_DEVICE_CALLBACK_MEMBER( a400_interrupt );
33   TIMER_DEVICE_CALLBACK_MEMBER( a800_interrupt );
34   TIMER_DEVICE_CALLBACK_MEMBER( a800xl_interrupt );
35   TIMER_DEVICE_CALLBACK_MEMBER( a5200_interrupt );
36
3732   DECLARE_PALETTE_INIT(atari);
3833
3934   POKEY_INTERRUPT_CB_MEMBER(interrupt_cb);
4035   POKEY_KEYBOARD_CB_MEMBER(a5200_keypads);
4136   POKEY_KEYBOARD_CB_MEMBER(a800_keyboard);
4237
43private:
38protected:
4439   required_device<gtia_device> m_gtia;
4540   required_device<antic_device> m_antic;
4641};
trunk/src/mame/video/atari.c
r32047r32048
3030
3131/**************************************************************
3232 *
33 * Interrupts
34 *
35 **************************************************************/
36
37TIMER_DEVICE_CALLBACK_MEMBER( atari_common_state::a400_interrupt )
38{
39   m_antic->generic_interrupt(4);
40}
41
42TIMER_DEVICE_CALLBACK_MEMBER( atari_common_state::a800_interrupt )
43{
44   m_antic->generic_interrupt(4);
45}
46
47TIMER_DEVICE_CALLBACK_MEMBER( atari_common_state::a800xl_interrupt )
48{
49   m_antic->generic_interrupt(2);
50}
51
52TIMER_DEVICE_CALLBACK_MEMBER( atari_common_state::a5200_interrupt )
53{
54   m_antic->generic_interrupt(4);
55}
56
57/**************************************************************
58 *
5933 * Palette
6034 *
6135 **************************************************************/
trunk/src/mame/video/antic.c
r32047r32048
2525
2626antic_device::antic_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
2727            device_t(mconfig, ATARI_ANTIC, "Atari ANTIC", tag, owner, clock, "antic", __FILE__),
28            m_gtia_tag(NULL)
28            m_gtia_tag(NULL),
29            m_tv_artifacts(0),
30            m_render1(0),
31            m_render2(0),
32            m_render3(0),
33            m_cmd(0),
34            m_steal_cycles(0),
35            m_vscrol_old(0),
36            m_hscrol_old(0),
37            m_modelines(0),
38            m_chbase(0),
39            m_chand(0),
40            m_chxor(0),
41            m_scanline(0),
42            m_pfwidth(0),
43            m_dpage(0),
44            m_doffs(0),
45            m_vpage(0),
46            m_voffs(0),
47            m_pmbase_s(0),
48            m_pmbase_d(0)
2949{
3050}
3151
r32047r32048
3858{
3959   m_gtia = machine().device<gtia_device>(m_gtia_tag);
4060   assert(m_gtia);
41
42   /* save states */
43   save_pointer(NAME((UINT8 *) &m_r), sizeof(m_r));
44   save_pointer(NAME((UINT8 *) &m_w), sizeof(m_w));
4561   
4662   m_bitmap = auto_bitmap_ind16_alloc(machine(), machine().first_screen()->width(), machine().first_screen()->height());
4763   
48   m_cclk_expand = auto_alloc_array(machine(), UINT32, 21 * 256);
64   m_cclk_expand = auto_alloc_array_clear(machine(), UINT32, 21 * 256);
4965   
5066   m_pf_21       = &m_cclk_expand[ 0 * 256];
5167   m_pf_x10b     = &m_cclk_expand[ 1 * 256];
r32047r32048
7591   cclk_init();
7692   
7793   for (int i = 0; i < 64; i++)
78      m_prio_table[i] = auto_alloc_array(machine(), UINT8, 8*256);
94      m_prio_table[i] = auto_alloc_array_clear(machine(), UINT8, 8*256);
7995   
8096   LOG(("atari prio_init\n"));
8197   prio_init();
8298   
8399   for (int i = 0; i < machine().first_screen()->height(); i++)
84100      m_video[i] = auto_alloc_clear(machine(), VIDEO);
101   
102   /* save states */
103   save_pointer(NAME((UINT8 *) &m_r), sizeof(m_r));
104   save_pointer(NAME((UINT8 *) &m_w), sizeof(m_w));
105   // TODO: save VIDEO items
106   
107   save_item(NAME(m_tv_artifacts));
108   save_item(NAME(m_render1));
109   save_item(NAME(m_render2));
110   save_item(NAME(m_render3));
111   save_item(NAME(m_cmd));
112   save_item(NAME(m_steal_cycles));
113   save_item(NAME(m_vscrol_old));
114   save_item(NAME(m_hscrol_old));
115   save_item(NAME(m_modelines));
116   save_item(NAME(m_chbase));
117   save_item(NAME(m_chand));
118   save_item(NAME(m_chxor));
119   save_item(NAME(m_scanline));
120   save_item(NAME(m_pfwidth));
121   save_item(NAME(m_dpage));
122   save_item(NAME(m_doffs));
123   save_item(NAME(m_vpage));
124   save_item(NAME(m_voffs));
125   save_item(NAME(m_pmbase_s));
126   save_item(NAME(m_pmbase_d));
127   save_item(NAME(m_cclock));
128   save_item(NAME(m_pmbits));
129
130   save_pointer(NAME(m_cclk_expand), 21 * 256);
131   save_pointer(NAME(m_used_colors), 21 * 256);
85132}
86133
87134
r32047r32048
109156   m_r.penv    = 0x00;
110157   m_r.antic0e = 0xff;
111158   m_r.nmist   = 0x1f;
112   
113   m_render1 = 0;
114   m_render2 = 0;
115   m_render3 = 0;
116   m_tv_artifacts = 0;
159
160   memset(m_cclock, 0, sizeof(m_cclock));
161   memset(m_pmbits, 0, sizeof(m_pmbits));
117162}
118163
119164
trunk/src/mame/video/gtia.c
r32047r32048
161161   save_item(NAME(m_r.gtia1d));
162162   save_item(NAME(m_r.gtia1e));
163163   save_item(NAME(m_r.cons));
164
164165   save_item(NAME(m_w.hposp0));
165166   save_item(NAME(m_w.hposp1));
166167   save_item(NAME(m_w.hposp2));
r32047r32048
194195   save_item(NAME(m_w.hitclr));
195196   save_item(NAME(m_w.cons));
196197
198   save_item(NAME(m_h.grafp0));
199   save_item(NAME(m_h.grafp1));
200   save_item(NAME(m_h.grafp2));
201   save_item(NAME(m_h.grafp3));
202   save_item(NAME(m_h.grafm0));
203   save_item(NAME(m_h.grafm1));
204   save_item(NAME(m_h.grafm2));
205   save_item(NAME(m_h.grafm3));
206   save_item(NAME(m_h.hitclr_frames));
207   save_item(NAME(m_h.sizem));
208   save_item(NAME(m_h.usedp));
209   save_item(NAME(m_h.usedm0));
210   save_item(NAME(m_h.usedm1));
211   save_item(NAME(m_h.usedm2));
212   save_item(NAME(m_h.usedm3));
213   save_item(NAME(m_h.vdelay_m0));
214   save_item(NAME(m_h.vdelay_m1));
215   save_item(NAME(m_h.vdelay_m2));
216   save_item(NAME(m_h.vdelay_m3));
217   save_item(NAME(m_h.vdelay_p0));
218   save_item(NAME(m_h.vdelay_p1));
219   save_item(NAME(m_h.vdelay_p2));
220   save_item(NAME(m_h.vdelay_p3));
221   
197222   save_item(NAME(m_lumpf1));
198223   save_item(NAME(m_huepm0));
199224   save_item(NAME(m_huepm1));
r32047r32048
203228   save_item(NAME(m_huepf2));
204229   save_item(NAME(m_huebk));   
205230
231   save_item(NAME(m_color_lookup));   
232
206233   machine().save().register_postload(save_prepost_delegate(FUNC(gtia_device::gtia_postload), this));
207234}
208235
r32047r32048
217244   for (int i = 0; i < 32; i++)
218245      write(machine().driver_data()->generic_space(), i, 0);
219246   memset(&m_r, 0, sizeof(m_r));
247   memset(&m_h, 0, sizeof(m_h));
248   memset(m_color_lookup, 0, sizeof(m_color_lookup));
249
220250   if (is_ntsc())
221251      m_r.pal = 0xff;
222252   else
trunk/src/mame/drivers/bartop52.c
r32047r32048
3030      : atari_common_state(mconfig, type, tag),
3131      m_maincpu(*this, "maincpu") { }
3232
33   TIMER_DEVICE_CALLBACK_MEMBER( bartop_interrupt );
34
3335   virtual void machine_reset();
3436   required_device<cpu_device> m_maincpu;
3537};
r32047r32048
4850#define JOYSTICK_SENSITIVITY    200
4951
5052static INPUT_PORTS_START(bartop52)
51   PORT_START("djoy_b")    /* IN3 digital joystick buttons (GTIA button bits) */
53   PORT_START("djoy_b")
5254   PORT_BIT(0x01, 0x01, IPT_BUTTON1) PORT_CODE(JOYCODE_BUTTON1) PORT_PLAYER(1)
53   PORT_BIT(0x02, 0x02, IPT_BUTTON1) PORT_CODE(JOYCODE_BUTTON2) PORT_PLAYER(2)
55   PORT_BIT(0x02, 0x02, IPT_BUTTON1) PORT_CODE(JOYCODE_BUTTON1) PORT_PLAYER(2)
5456   PORT_BIT(0x04, 0x04, IPT_UNUSED)
5557   PORT_BIT(0x08, 0x08, IPT_UNUSED)
56   PORT_BIT(0x10, 0x10, IPT_BUTTON2) PORT_CODE(JOYCODE_BUTTON1) PORT_PLAYER(1)
58   PORT_BIT(0x10, 0x10, IPT_BUTTON2) PORT_CODE(JOYCODE_BUTTON2) PORT_PLAYER(1)
5759   PORT_BIT(0x20, 0x20, IPT_BUTTON2) PORT_CODE(JOYCODE_BUTTON2) PORT_PLAYER(2)
5860   PORT_BIT(0x40, 0x40, IPT_UNUSED)
5961   PORT_BIT(0x80, 0x80, IPT_UNUSED)
r32047r32048
107109   pokey->write(15,0);
108110}
109111
112TIMER_DEVICE_CALLBACK_MEMBER( bartop52_state::bartop_interrupt )
113{
114   m_antic->generic_interrupt(4);
115}
110116
111117static MACHINE_CONFIG_START( a5200, bartop52_state )
112118   /* basic machine hardware */
113119   MCFG_CPU_ADD("maincpu", M6502, FREQ_17_EXACT)
114120   MCFG_CPU_PROGRAM_MAP(a5200_mem)
115   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", atari_common_state, a5200_interrupt, "screen", 0, 1)
121   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", bartop52_state, bartop_interrupt, "screen", 0, 1)
116122
117123   MCFG_DEVICE_ADD("gtia", ATARI_GTIA, 0)
118124
trunk/src/mame/drivers/maxaflex.c
r32047r32048
6363   DECLARE_READ8_MEMBER(pia_pb_r);
6464   WRITE8_MEMBER(pia_pb_w) { mmu(data); }
6565   WRITE_LINE_MEMBER(pia_cb2_w) { }  // This is used by Floppy drive on Atari 8bits Home Computers
66   TIMER_DEVICE_CALLBACK_MEMBER(mf_interrupt);
6667   TIMER_DEVICE_CALLBACK_MEMBER(mcu_timer_proc);
6768   int atari_input_disabled();
6869   virtual void machine_reset();
r32047r32048
405406   output_set_digit_value(2, 0x00);
406407}
407408
409TIMER_DEVICE_CALLBACK_MEMBER( maxaflex_state::mf_interrupt )
410{
411   m_antic->generic_interrupt(2);
412}
408413
409414static MACHINE_CONFIG_START( maxaflex, maxaflex_state )
410415   /* basic machine hardware */
411416   MCFG_CPU_ADD("maincpu", M6502, FREQ_17_EXACT)
412417   MCFG_CPU_PROGRAM_MAP(a600xl_mem)
413   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", atari_common_state, a800xl_interrupt, "screen", 0, 1)
418   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", maxaflex_state, mf_interrupt, "screen", 0, 1)
414419
415420   MCFG_CPU_ADD("mcu", M68705, 3579545)
416421   MCFG_CPU_PROGRAM_MAP(mcu_mem)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team