Previous 199869 Revisions Next

r18328 Sunday 7th October, 2012 at 10:55:30 UTC by Robbbert
Atari_s1: wip
[src/mame]mame.mak
[src/mame/drivers]atari_s1.c
[src/mame/layout]atari_s1.lay*

trunk/src/mame/layout/atari_s1.lay
r0r18328
1<!-- atari_s1.lay -->
2
3<!-- 2012-10-07: Initial version.  [Robbbert] -->
4
5<mamelayout version="2">
6
7   <element name="digit" defstate="0">
8      <led7seg>
9         <color red="1.0" green="0.25" blue="0.0" />
10      </led7seg>
11   </element>
12
13   <element name="background">
14      <rect>
15         <bounds left="0" top="0" right="1" bottom="1" />
16         <color red="0.0" green="0.0" blue="0.0" />
17      </rect>
18   </element>
19   <element name="P0"><text string="Ball / Match"><color red="1.0" green="1.0" blue="1.0" /></text></element>
20   <element name="P1"><text string="Credits"><color red="1.0" green="1.0" blue="1.0" /></text></element>
21   <element name="P3"><text string="Player 1"><color red="1.0" green="1.0" blue="1.0" /></text></element>
22   <element name="P4"><text string="Player 2"><color red="1.0" green="1.0" blue="1.0" /></text></element>
23   <element name="P5"><text string="Player 3"><color red="1.0" green="1.0" blue="1.0" /></text></element>
24   <element name="P6"><text string="Player 4"><color red="1.0" green="1.0" blue="1.0" /></text></element>
25
26   <view name="Default Layout">
27
28      <!-- Background -->
29      <backdrop element="background">
30         <bounds left="0" top="20" right="274" bottom="394" />
31      </backdrop>
32
33      <!-- LEDs -->
34
35      <!-- Player 1 Score -->
36
37      <bezel name="digit28" element="digit">
38         <bounds left="10" top="45" right="44" bottom="84" />
39      </bezel>
40      <bezel name="digit29" element="digit">
41         <bounds left="54" top="45" right="88" bottom="84" />
42      </bezel>
43      <bezel name="digit26" element="digit">
44         <bounds left="98" top="45" right="132" bottom="84" />
45      </bezel>
46      <bezel name="digit27" element="digit">
47         <bounds left="142" top="45" right="176" bottom="84" />
48      </bezel>
49      <bezel name="digit24" element="digit">
50         <bounds left="186" top="45" right="220" bottom="84" />
51      </bezel>
52      <bezel name="digit25" element="digit">
53         <bounds left="230" top="45" right="264" bottom="84" />
54      </bezel>
55
56      <!-- Player 2 Score -->
57      <bezel name="digit20" element="digit">
58         <bounds left="10" top="105" right="44" bottom="144" />
59      </bezel>
60      <bezel name="digit21" element="digit">
61         <bounds left="54" top="105" right="88" bottom="144" />
62      </bezel>
63      <bezel name="digit18" element="digit">
64         <bounds left="98" top="105" right="132" bottom="144" />
65      </bezel>
66      <bezel name="digit19" element="digit">
67         <bounds left="142" top="105" right="176" bottom="144" />
68      </bezel>
69      <bezel name="digit16" element="digit">
70         <bounds left="186" top="105" right="220" bottom="144" />
71      </bezel>
72      <bezel name="digit17" element="digit">
73         <bounds left="230" top="105" right="264" bottom="144" />
74      </bezel>
75
76      <!-- Player 3 Score -->
77      <bezel name="digit12" element="digit">
78         <bounds left="10" top="165" right="44" bottom="204" />
79      </bezel>
80      <bezel name="digit13" element="digit">
81         <bounds left="54" top="165" right="88" bottom="204" />
82      </bezel>
83      <bezel name="digit10" element="digit">
84         <bounds left="98" top="165" right="132" bottom="204" />
85      </bezel>
86      <bezel name="digit11" element="digit">
87         <bounds left="142" top="165" right="176" bottom="204" />
88      </bezel>
89      <bezel name="digit8" element="digit">
90         <bounds left="186" top="165" right="220" bottom="204" />
91      </bezel>
92      <bezel name="digit9" element="digit">
93         <bounds left="230" top="165" right="264" bottom="204" />
94      </bezel>
95
96      <!-- Player 4 Score -->
97      <bezel name="digit4" element="digit">
98         <bounds left="10" top="225" right="44" bottom="264" />
99      </bezel>
100      <bezel name="digit5" element="digit">
101         <bounds left="54" top="225" right="88" bottom="264" />
102      </bezel>
103      <bezel name="digit2" element="digit">
104         <bounds left="98" top="225" right="132" bottom="264" />
105      </bezel>
106      <bezel name="digit3" element="digit">
107         <bounds left="142" top="225" right="176" bottom="264" />
108      </bezel>
109      <bezel name="digit0" element="digit">
110         <bounds left="186" top="225" right="220" bottom="264" />
111      </bezel>
112      <bezel name="digit1" element="digit">
113         <bounds left="230" top="225" right="264" bottom="264" />
114      </bezel>
115
116      <!-- Credits and Balls -->
117      <bezel name="digit58" element="digit">
118         <bounds left="10" top="345" right="44" bottom="384" />
119      </bezel>
120      <bezel name="digit59" element="digit">
121         <bounds left="54" top="345" right="88" bottom="384" />
122      </bezel>
123      <bezel name="digit70" element="digit">
124         <bounds left="98" top="345" right="132" bottom="384" />
125      </bezel>
126      <bezel name="digit71" element="digit">
127         <bounds left="142" top="345" right="176" bottom="384" />
128      </bezel>
129      <bezel name="digit56" element="digit">
130         <bounds left="186" top="345" right="220" bottom="384" />
131      </bezel>
132      <bezel name="digit57" element="digit">
133         <bounds left="230" top="345" right="264" bottom="384" />
134      </bezel>
135      <bezel element="P0"><bounds left="200" right="258" top="330" bottom="342" /></bezel>
136      <bezel element="P1"><bounds left="30" right="88" top="330" bottom="342" /></bezel>
137      <bezel element="P3"><bounds left="100" right="180" top="30" bottom="42" /></bezel>
138      <bezel element="P4"><bounds left="100" right="180" top="90" bottom="102" /></bezel>
139      <bezel element="P5"><bounds left="100" right="180" top="150" bottom="162" /></bezel>
140      <bezel element="P6"><bounds left="100" right="180" top="210" bottom="222" /></bezel>
141   </view>
142</mamelayout>
trunk/src/mame/drivers/atari_s1.c
r18327r18328
22
33    Pinball
44    Atari Generation/System 1
5    These were the first widebody pinball machines.
6    Unfortunately they tended to be boring.
57
8    The design of having the circuit boards under the playfield wasn't such a good
9    idea, because it allowed debris and loose screws that could fall off the
10    playfield to cause havoc among the electronics.
11
12    Schematics and PinMAME used as references.
13
14ToDo:
15- Inputs per game; the ones there are for Airborne Avenger
16- Link up switches where 2 or more act together
17- Sound
18- Lamps, solenoids
19
20
621************************************************************************************/
722
8#include "emu.h"
23#include "machine/genpin.h"
924#include "cpu/m6800/m6800.h"
25#include "atari_s1.lh"
1026
11//extern const char layout_pinball[];
27// looking at chip '29 74', this could be /8
28#define MASTER_CLK XTAL_4MHz / 4
29#define DMA_CLK MASTER_CLK / 2
30//#define AUDIO_CLK DMA_CLK / 4
31#define DMA_INT DMA_CLK / 128
32#define NMI_INT DMA_INT / 16
33//#define BIT6_CLK NMI_INT / 4
34
1235class atari_s1_state : public driver_device
1336{
1437public:
1538   atari_s1_state(const machine_config &mconfig, device_type type, const char *tag)
1639      : driver_device(mconfig, type, tag),
17   m_maincpu(*this, "maincpu")
40   m_maincpu(*this, "maincpu"),
41   m_p_ram(*this, "ram"),
42   m_samples(*this, "samples")
1843   { }
1944
45   DECLARE_READ8_MEMBER(switch_r);
46   DECLARE_READ8_MEMBER(latch_r);
47   DECLARE_WRITE8_MEMBER(latch_w);
48
49   TIMER_DEVICE_CALLBACK_MEMBER(nmi);
50
2051protected:
2152
2253   // devices
2354   required_device<cpu_device> m_maincpu;
55   required_shared_ptr<UINT8> m_p_ram;
56   required_device<samples_device> m_samples;
2457
2558   // driver_device overrides
2659   virtual void machine_reset();
27public:
28   DECLARE_DRIVER_INIT(atari_s1);
60private:
61   UINT8 m_bit6;
62   UINT8 m_out_offs;
2963};
3064
3165static ADDRESS_MAP_START( atari_s1_map, AS_PROGRAM, 8, atari_s1_state )
3266   ADDRESS_MAP_GLOBAL_MASK(0x7fff)
33   AM_RANGE(0x0000, 0x01ff) AM_RAM
34   //AM_RANGE(0x1080, 0x1080) AM_READWRITE(latch1080_r,latch1080_w)
35   //AM_RANGE(0x1084, 0x1084) AM_READWRITE(latch1084_r,latch1084_w)
36   //AM_RANGE(0x1088, 0x1088) AM_READWRITE(latch1088_r,latch1088_w)
37   //AM_RANGE(0x108c, 0x108c) AM_READWRITE(latch108c_r,latch108c_w)
38   //AM_RANGE(0x2000, 0x200f) AM_READWRITE(dipg1_r,dipg1_w)
39   //AM_RANGE(0x2010, 0x204f) AM_READ(swg1_r)
40   //AM_RANGE(0x3000, 0x3000) AM_WRITE(soundg1_w)
41   //AM_RANGE(0x4000, 0x4000) AM_WRITE(watchdog_w)
67   AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("ram")
68   //AM_RANGE(0x1000, 0x100f) AM_MIRROR(0x0F70) AM_WRITE(latch1000_w) // lamps
69   AM_RANGE(0x1080, 0x108f) AM_MIRROR(0x0F70) AM_READWRITE(latch_r,latch_w)
70   //AM_RANGE(0x2000, 0x200f) AM_WRITE(dipg1_w)
71   AM_RANGE(0x2000, 0x204f) AM_MIRROR(0x0F80) AM_READ(switch_r)
72   //AM_RANGE(0x3000, 0x3fff) AM_WRITE(soundg1_w) // audio enable
73   AM_RANGE(0x4000, 0x4fff) AM_WRITE(watchdog_reset_w)
4274   //AM_RANGE(0x508c, 0x508c) AM_WRITE(latch508c_w)
43   //AM_RANGE(0x6000, 0x6000) AM_WRITE(audiog1_w)
75   //AM_RANGE(0x6000, 0x6fff) AM_WRITE(audiog1_w) // audio reset
4476   AM_RANGE(0x7000, 0x7fff) AM_ROM
4577ADDRESS_MAP_END
4678
4779static INPUT_PORTS_START( atari_s1 )
80   // need to fix these, the manual has a lot of mistakes
81   PORT_START("INP00")
82   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Test") PORT_CODE(KEYCODE_0)
83   PORT_START("INP01")
84   PORT_DIPNAME( 0x80, 0x80, "Spelling Award" )
85   PORT_DIPSETTING(    0x80, "Extra Ball" )
86   PORT_DIPSETTING(    0x00, "20,000 points" )
87   PORT_START("INP02")
88   PORT_DIPNAME( 0x80, 0x80, "Last Ball double bonus" )
89   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
90   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
91   PORT_START("INP03")
92   // This switch together with INP4C thru 4F, sets the scores at which a replay is awarded
93   PORT_DIPNAME( 0x80, 0x80, "Replay score" )
94   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
95   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
96   // These 2 dips control max number of credits (both off = 8; then 12, 15, both on=20)
97   PORT_START("INP04")
98   PORT_DIPNAME( 0x80, 0x80, "Max Credits-a" )
99   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
100   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
101   PORT_START("INP05")
102   PORT_DIPNAME( 0x80, 0x80, "Max Credits-b" )
103   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
104   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
105   PORT_START("INP06")
106   PORT_DIPNAME( 0x80, 0x80, "Exceed replay score" )
107   PORT_DIPSETTING(    0x80, "Nothing" )
108   PORT_DIPSETTING(    0x00, "Extra Ball" )
109   PORT_START("INP07")
110   PORT_DIPNAME( 0x80, 0x80, "Replay when Exceed replay score" ) // overrides INP06 if on
111   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
112   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
113   PORT_START("INP08")
114   PORT_DIPNAME( 0x80, 0x80, "Balls" )
115   PORT_DIPSETTING(    0x80, "5" )
116   PORT_DIPSETTING(    0x00, "3" )
117   PORT_START("INP09")
118   PORT_DIPNAME( 0x80, 0x80, "Match" )
119   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
120   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
121   // next 4 dips control coins and credits. Leave them all off for 1coin=1credit.
122   PORT_START("INP0A")
123   PORT_DIPNAME( 0x80, 0x80, "Coins-a" )
124   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
125   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
126   PORT_START("INP0B")
127   PORT_DIPNAME( 0x80, 0x80, "Coins-b" ) // this is actually the test button
128   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
129   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
130   PORT_START("INP0C")
131   PORT_DIPNAME( 0x80, 0x80, "Coins-c" )
132   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
133   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
134   PORT_START("INP0D")
135   PORT_DIPNAME( 0x80, 0x80, "Coins-d" )
136   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
137   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
138   PORT_START("INP0E")
139   PORT_DIPNAME( 0x80, 0x80, "Special" )
140   PORT_DIPSETTING(    0x80, "Extra Ball" )
141   PORT_DIPSETTING(    0x00, "Free Game" )
142   PORT_START("INP0F")
143   PORT_DIPNAME( 0x80, 0x80, "20000 points for special" ) // overrides INP0E if on
144   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
145   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
146   PORT_START("INP10")
147   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
148   PORT_START("INP11")
149   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN2 )
150   PORT_START("INP12")
151   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START )
152   PORT_START("INP13")
153   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Slam Tilt")
154   PORT_START("INP14")
155   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
156   PORT_START("INP15")
157   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
158   PORT_START("INP16")
159   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
160   PORT_START("INP17")
161   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
162   PORT_START("INP18")
163   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
164   PORT_START("INP19")
165   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
166   PORT_START("INP1A")
167   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
168   PORT_START("INP1B")
169   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
170   PORT_START("INP1C")
171   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
172   PORT_START("INP1D")
173   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
174   PORT_START("INP1E")
175   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
176   PORT_START("INP1F")
177   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
178   PORT_START("INP20")
179   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Cabinet Tilt")
180   PORT_START("INP21")
181   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_TILT ) PORT_NAME("Pendulum Tilt")
182   PORT_START("INP22")
183   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Left Flipper") PORT_CODE(KEYCODE_LSHIFT)
184   PORT_START("INP23")
185   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Right Flipper") PORT_CODE(KEYCODE_RSHIFT)
186   PORT_START("INP24")
187   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Target 4")
188   PORT_START("INP25")
189   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Target 3")
190   PORT_START("INP26")
191   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Target 2")
192   PORT_START("INP27")
193   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Target 1")
194   PORT_START("INP28")
195   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
196   PORT_START("INP29")
197   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
198   PORT_START("INP2A")
199   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
200   PORT_START("INP2B")
201   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
202   PORT_START("INP2C")
203   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
204   PORT_START("INP2D")
205   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
206   PORT_START("INP2E")
207   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
208   PORT_START("INP2F")
209   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
210   PORT_START("INP30")
211   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
212   PORT_START("INP31")
213   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rollover 3") PORT_CODE(KEYCODE_Q)
214   PORT_START("INP32")
215   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rollover 2") PORT_CODE(KEYCODE_W)
216   PORT_START("INP33")
217   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rollover 1") PORT_CODE(KEYCODE_E)
218   PORT_START("INP34")
219   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rollover 8") PORT_CODE(KEYCODE_R)
220   PORT_START("INP35")
221   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rollover 7") PORT_CODE(KEYCODE_Y)
222   PORT_START("INP36")
223   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rollover 6") PORT_CODE(KEYCODE_U)
224   PORT_START("INP37")
225   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rollover 5") PORT_CODE(KEYCODE_I)
226   PORT_START("INP38")
227   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("L Hole") PORT_CODE(KEYCODE_O)
228   PORT_START("INP39")
229   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Bumper 1") PORT_CODE(KEYCODE_V)
230   PORT_START("INP3A")
231   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Bumper 2") PORT_CODE(KEYCODE_B)
232   PORT_START("INP3B")
233   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Bumper 3") PORT_CODE(KEYCODE_N)
234   PORT_START("INP3C")
235   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Spinner") PORT_CODE(KEYCODE_M)
236   PORT_START("INP3D")
237   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("R Pocket") PORT_CODE(KEYCODE_A)
238   PORT_START("INP3E")
239   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("L Pocket") PORT_CODE(KEYCODE_S)
240   PORT_START("INP3F")
241   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("R Hole") PORT_CODE(KEYCODE_D)
242   PORT_START("INP40")
243   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("L Triangle") PORT_CODE(KEYCODE_F)
244   PORT_START("INP41")
245   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("10 points") PORT_CODE(KEYCODE_G)
246   PORT_START("INP42")
247   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("50 points") PORT_CODE(KEYCODE_H)
248   PORT_START("INP43")
249   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("OutHole") PORT_CODE(KEYCODE_X)
250   PORT_START("INP44")
251   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
252   PORT_START("INP45")
253   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
254   PORT_START("INP46")
255   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
256   PORT_START("INP47")
257   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("R Triangle") PORT_CODE(KEYCODE_J)
258   PORT_START("INP48")
259   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("50 points and adv letter") PORT_CODE(KEYCODE_K)
260   PORT_START("INP49")
261   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Captive ball rollovers") PORT_CODE(KEYCODE_L)
262   PORT_START("INP4A")
263   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rollover 'B' centre") PORT_CODE(KEYCODE_Z)
264   PORT_START("INP4B")
265   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Roll thru upper right") PORT_CODE(KEYCODE_C)
266   PORT_START("INP4C")
267   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
268   PORT_START("INP4D")
269   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
270   PORT_START("INP4E")
271   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
272   PORT_START("INP4F")
273   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER )
48274INPUT_PORTS_END
49275
50276void atari_s1_state::machine_reset()
51277{
52278}
53279
54DRIVER_INIT_MEMBER(atari_s1_state,atari_s1)
280READ8_MEMBER( atari_s1_state::latch_r )
55281{
282   return 0;
56283}
57284
285WRITE8_MEMBER( atari_s1_state::latch_w )
286{
287}
288
289READ8_MEMBER( atari_s1_state::switch_r )
290{
291   char kbdrow[8];
292   sprintf(kbdrow,"INP%02X",offset);
293   return ioport(kbdrow)->read() | (BIT(m_bit6, 1) << 6);
294}
295
296TIMER_DEVICE_CALLBACK_MEMBER( atari_s1_state::nmi )
297{
298   m_bit6++;
299   m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
300
301   static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0, 0, 0, 0, 0, 0 };
302   m_out_offs++;
303   m_out_offs &= 0x1f;
304   output_set_digit_value(m_out_offs << 1, patterns[m_p_ram[m_out_offs]>>4]);
305   output_set_digit_value((m_out_offs << 1)+1, patterns[m_p_ram[m_out_offs]&15]);
306}
307
58308static MACHINE_CONFIG_START( atari_s1, atari_s1_state )
59309   /* basic machine hardware */
60   MCFG_CPU_ADD("maincpu", M6800, 1000000)
310   MCFG_CPU_ADD("maincpu", M6800, MASTER_CLK)
61311   MCFG_CPU_PROGRAM_MAP(atari_s1_map)
312   MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi", atari_s1_state, nmi, attotime::from_hz(NMI_INT))
313
314   /* Sound */
315   MCFG_FRAGMENT_ADD( genpin_audio )
316
317   /* Video */
318   MCFG_DEFAULT_LAYOUT(layout_atari_s1)
62319MACHINE_CONFIG_END
63320
64321/*-------------------------------------------------------------------
r18327r18328
116373ROM_END
117374
118375
119GAME( 1976, atarians, 0,      atari_s1, atari_s1, atari_s1_state, atari_s1, ROT0, "Atari","The Atarians",    GAME_IS_SKELETON_MECHANICAL)
120//GAME( 2002, atarianb, atarians,   atari_s1, atari_s1, atari_s1_state, atari_s1, ROT0, "Atari / Gaston","The Atarians (working bootleg)",  GAME_IS_SKELETON_MECHANICAL)
121GAME( 1977, time2000, 0,      atari_s1, atari_s1, atari_s1_state, atari_s1, ROT0, "Atari","Time 2000",      GAME_IS_SKELETON_MECHANICAL)
122GAME( 1977, aavenger, 0,      atari_s1, atari_s1, atari_s1_state, atari_s1, ROT0, "Atari","Airborne Avenger", GAME_IS_SKELETON_MECHANICAL)
123GAME( 1978, midearth, 0,      atari_s1, atari_s1, atari_s1_state, atari_s1, ROT0, "Atari","Middle Earth",    GAME_IS_SKELETON_MECHANICAL)
124GAME( 1978, spcrider, 0,      atari_s1, atari_s1, atari_s1_state, atari_s1, ROT0, "Atari","Space Riders",      GAME_IS_SKELETON_MECHANICAL)
376GAME( 1976, atarians, 0,      atari_s1, atari_s1, driver_device, 0, ROT0, "Atari","The Atarians",    GAME_IS_SKELETON_MECHANICAL)
377//GAME( 2002, atarianb, atarians,   atari_s1, atari_s1, driver_device, 0, ROT0, "Atari / Gaston","The Atarians (working bootleg)",  GAME_IS_SKELETON_MECHANICAL)
378GAME( 1977, time2000, 0,      atari_s1, atari_s1, driver_device, 0, ROT0, "Atari","Time 2000",      GAME_IS_SKELETON_MECHANICAL)
379GAME( 1977, aavenger, 0,      atari_s1, atari_s1, driver_device, 0, ROT0, "Atari","Airborne Avenger", GAME_IS_SKELETON_MECHANICAL)
380GAME( 1978, midearth, 0,      atari_s1, atari_s1, driver_device, 0, ROT0, "Atari","Middle Earth",    GAME_IS_SKELETON_MECHANICAL)
381GAME( 1978, spcrider, 0,      atari_s1, atari_s1, driver_device, 0, ROT0, "Atari","Space Riders",      GAME_IS_SKELETON_MECHANICAL)
trunk/src/mame/mame.mak
r18327r18328
19761976         $(LAYOUT)/atarifb4.lh \
19771977         $(LAYOUT)/abaseb.lh
19781978
1979$(DRIVERS)/atari_s1.o:   $(LAYOUT)/atari_s1.lh
1980
19791981$(DRIVERS)/avalnche.o:   $(LAYOUT)/avalnche.lh
19801982
19811983$(DRIVERS)/balsente.o:   $(LAYOUT)/stocker.lh

Previous 199869 Revisions Next


© 1997-2024 The MAME Team