Previous 199869 Revisions Next

r18838 Saturday 3rd November, 2012 at 21:08:51 UTC by Tafoid
[MESS] Improved the inputs in CD32 (by adding a mirror of the first button where the regular Amiga reads it) this allows the majority of the booting CD32 games to actually be started.  [David Haywood]

[MESS] Expanded cd32.xml softlist entries to highlight more future test cases.  [David Haywood]
[hash]cd32.xml
[src/mame/drivers]cd32.c
[src/mame/includes]cd32.h

trunk/hash/cd32.xml
r18837r18838
22<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
33<softwarelist name="cd32" description="Amiga CD-32 CD-ROM list">
44
5   <!--- Just a test list -->
5   <!--- Preliminary List -->
66
7   <!-- This was a cloneCD image - mounted with Daemon tools, rips to .toc/.bin with burnatonce in full RAW mode -->
8   <!-- a EC error was reported, so it might have protection -->
9   <software name="clockwsr" supported="no">
10      <description>Clockwiser</description>
11      <year>19??</year>
12      <publisher>Rasputin</publisher>
13      <part name="cdrom" interface="cd32_cdrom">
14         <diskarea name="cdrom">
15            <disk name="clockwiser" sha1="01a622e5b6a710eeef828b0f5807dad94de3798f"/>
16         </diskarea>
17      </part>
18   </software>
19
20   <software name="vital" supported="no">
21      <description>Vital Light</description>
22      <year>1994</year>
7 
8    <!-- playable but there's a scrolling glitch every few frames -->
9  <software name="morph" supported="partial">
10      <description>Morph</description>
11      <year>1993</year>
2312      <publisher>Millennium</publisher>
2413      <part name="cdrom" interface="cd32_cdrom">
2514         <diskarea name="cdrom">
26            <disk name="vital light (1994)(millennium)[!][10328981]" sha1="89921bfda42deab7a73e4c55ea4244673788a1bd"/>
15            <disk name="morph (1993)(millennium)[!]" sha1="3a8909d88d48b17b7e02284866f57085fbe62e2e"/>
2716         </diskarea>
2817      </part>
2918   </software>
3019
20  <!-- Diggers has bad sprites (oversized cursor etc.)  Oscar has bad background planes -->
21  <software name="diggoscr" supported="no">
22    <description>Diggers + Oscar</description>
23    <year>1993</year>
24    <publisher>Commodore</publisher>
25    <part name="cdrom" interface="cd32_cdrom">
26      <diskarea name="cdrom">
27        <disk name="diggers and oscar (1993)(commodore)(m4)[!][compilation][amiga-cd 31, 54]" sha1="88422ad455a8b8c7255c83812aa69132f15e1bf6"/>
28      </diskarea>
29    </part>
30  </software>
31
32  <!-- Playable, like the Ami1200 AGA version -->
33  <software name="pballfnt">
34    <description>Pinball Fantasies CD Edition</description>
35    <year>1993</year>
36    <publisher>21st Century Entertainment</publisher>
37    <part name="cdrom" interface="cd32_cdrom">
38      <diskarea name="cdrom">
39        <disk name="pinball fantasies (1993)(21st century entertainment)[!]" sha1="01b589f79dc0c6e9ebc3ed898aa021c6e59daa70"/>
40      </diskarea>
41    </part>
42  </software>
43
44  <!-- Glitchy sprites, no sound, like the Ami1200 AGA version -->
45  <software name="pballill" supported="no">
46    <description>Pinball Illusions</description>
47    <year>1995</year>
48    <publisher>21st Century Entertainment</publisher>
49    <part name="cdrom" interface="cd32_cdrom">
50      <diskarea name="cdrom">
51        <disk name="pinball illusions (1995)(21st century entertainment)[!]" sha1="1b657df40d086d9ce8f498e32033993361f3452b"/>
52      </diskarea>
53    </part>
54  </software>
55
56  <!-- Fantastic Dizzy is glitchy, other games work -->
57  <!-- Spellbound Dizzy grants you infinite lives by default, but I remember my original floppy version doing this too so it might just be a buggy game -->
58  <software name="big6diz" supported="partial">
59    <description>The Big 6 (Dizzy Collection)</description>
60    <year>1994</year>
61    <publisher>Codemasters</publisher>
62    <part name="cdrom" interface="cd32_cdrom">
63      <diskarea name="cdrom">
64        <disk name="big 6, the (1994)(codemasters)(en-de)[!][compilation]" sha1="ecea85b6f6bd167b0b5164fde31b782e6b188e30"/>
65      </diskarea>
66    </part>
67  </software>
68
69  <!-- Playable but missing some graphical effects -->
70  <software name="vital" supported="partial">
71    <description>Vital Light</description>
72    <year>1994</year>
73    <publisher>Millennium</publisher>
74    <part name="cdrom" interface="cd32_cdrom">
75      <diskarea name="cdrom">
76        <disk name="vital light (1994)(millennium)[!][10328981]" sha1="89921bfda42deab7a73e4c55ea4244673788a1bd"/>
77      </diskarea>
78    </part>
79  </software>
80
81  <!-- Bad colours / gfx issues -->
82  <software name="clockwsr" supported="no">
83    <description>Clockwiser</description>
84    <year>1994</year>
85    <publisher>Rasputin</publisher>
86    <part name="cdrom" interface="cd32_cdrom">
87      <diskarea name="cdrom">
88        <disk name="clockwiser (1994)(rasputin)[!]" sha1="0d92ecfc00175486022c4c3bcfd7e26a21568d20"/>
89      </diskarea>
90    </part>
91  </software>
92
93  <!-- runs and can be 'played', but gfx are badly scaled -->
94  <software name="sstardst" supported="no">
95    <description>Super Stardust</description>
96    <year>1994</year>
97    <publisher>Team 17</publisher>
98    <part name="cdrom" interface="cd32_cdrom">
99      <diskarea name="cdrom">
100        <disk name="super stardust (1994)(team 17)[!]" sha1="2fee9d76e9b47a9fb72c2f8833d07cb4fbc6ab82"/>
101      </diskarea>
102    </part>
103  </software>
104
105  <!-- bad screen mode -->
106  <software name="sskidmk" supported="no">
107    <description>Super Skidmarks</description>
108    <year>1995</year>
109    <publisher>Guildhall Leisure</publisher>
110    <part name="cdrom" interface="cd32_cdrom">
111      <diskarea name="cdrom">
112        <disk name="super skidmarks v2.2 (1995)(guildhall leisure)[!][gh 1 10 aug 95]" sha1="af57f7c92804f460a3d2ae89b5b881414205a21e"/>
113      </diskarea>
114    </part>
115  </software>
116
117  <!-- Manual copy protection, no idea if it actually works, menu colours are bad tho, anybody got a cheat for the code screen? -->
118  <software name="wormstdc" supported="no">
119    <description>Worms - The Director's Cut</description>
120    <year>1995</year>
121    <publisher>Ocean</publisher>
122    <part name="cdrom" interface="cd32_cdrom">
123      <diskarea name="cdrom">
124        <disk name="worms - the director's cut (1995)(ocean)(m3)[!]" sha1="7c42b4cf6c089aadd0ed41f8725174ab9c7a0378"/>
125      </diskarea>
126    </part>
127  </software>
128
129  <!-- screen offset problems, only plays on pad2? (by design?) -->
130  <software name="libcap2" supported="no">
131    <description>Liberation - Captive II</description>
132    <year>1994</year>
133    <publisher>Mindscape</publisher>
134    <part name="cdrom" interface="cd32_cdrom">
135      <diskarea name="cdrom">
136        <disk name="liberation - captive ii v2.02-2.00c (1994-04-08)(mindscape)[!][cdd3716]" sha1="e4270283304e913a9397888f536be1b146482af1"/>
137      </diskarea>
138    </part>
139  </software>
140 
141 
142
31143</softwarelist>
trunk/src/mame/drivers/cd32.c
r18837r18838
232232
233233CUSTOM_INPUT_MEMBER(cd32_state::cubo_input)
234234{
235   return handle_joystick_potgor(machine(), m_potgo_value) >> 10;
235   return handle_joystick_potgor(machine(), m_potgo_value) >> 8;
236236}
237237
238
239
240CUSTOM_INPUT_MEMBER(cd32_state::cd32_sel_mirror_input)
241{
242   UINT8 bits = ioport((const char *)param)->read();
243   return (bits & 0x20)>>5;
244}
245
246
247
238248static INPUT_PORTS_START( cd32 )
239249   PORT_START("CIA0PORTA")
240   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
250   PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_SPECIAL )
251   /* this is the regular port for reading a single button joystick on the Amiga, many CD32 games require this to mirror the pad start button! */
252   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cd32_state,cd32_sel_mirror_input, "P2")
253   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cd32_state,cd32_sel_mirror_input, "P1")
241254
242255   PORT_START("CIA0PORTB")
243256   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
r18837r18838
251264   PORT_BIT( 0xfcfc, IP_ACTIVE_HIGH, IPT_UNUSED )
252265
253266   PORT_START("POTGO")
254   PORT_BIT( 0x4400, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cd32_state,cubo_input, 0)
255   PORT_BIT( 0xbbff, IP_ACTIVE_HIGH, IPT_UNUSED )
267   PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cd32_state,cubo_input, 0)
268   PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_UNUSED )
256269
270
271   // CD32 '11' button pad (4 dpad directions + 7 buttons), not read directly
272   PORT_START("P1")
273   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 ||>")
274   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 <<") /* left trigger */
275   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 >>") /* right trigger */
276   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("P1 Green")    /* BUTTON3 */
277   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(1) PORT_NAME("P1 Yellow")   /* BUTTON4 */
278   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_PLAYER(1) PORT_NAME("P1 Red / SELECT")  /* BUTTON1 = START1 */
279   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_PLAYER(1) PORT_NAME("P1 Blue / STOP") /* BUTTON2 */
257280   PORT_START("P1JOY")
258281   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )    PORT_PLAYER(1)
259282   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )  PORT_PLAYER(1)
260283   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )  PORT_PLAYER(1)
261284   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
262285
286   // CD32 '11' button pad (4 dpad directions + 7 buttons), not read directly
287   PORT_START("P2")
288   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 ||>")
289   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 <<") /* left trigger */
290   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 >>") /* right trigger */
291   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_NAME("P2 Green")   /* BUTTON3 */
292   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(2) PORT_NAME("P2 Yellow")   /* BUTTON4 */
293   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_PLAYER(2) PORT_NAME("P2 Red / SELECT")  /* BUTTON1 = START2 */
294   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_PLAYER(2) PORT_NAME("P2 Blue / STOP") /* BUTTON2 */
263295   PORT_START("P2JOY")
264296   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )    PORT_PLAYER(2)
265297   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )  PORT_PLAYER(2)
266298   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )  PORT_PLAYER(2)
267299   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
268300
269   PORT_START("P1")
270   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
271   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1)
272   PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1)
273   PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1)    /* BUTTON3 */
274   PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(1)    /* BUTTON4 */
275   PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_PLAYER(1)    /* BUTTON1 = START1 */
276   PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_PLAYER(1)    /* BUTTON2 */
277   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_PLAYER(1)
278301
279   PORT_START("P2")
280   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
281   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2)
282   PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2)
283   PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2)    /* BUTTON3 */
284   PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(2)    /* BUTTON4 */
285   PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_PLAYER(2)    /* BUTTON1 = START2 */
286   PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_PLAYER(2)    /* BUTTON2 */
287   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_PLAYER(2)
288
289302   PORT_START("DIPSW1")
290303   PORT_DIPNAME( 0x01, 0x01, "DSW1 1" )
291304   PORT_DIPSETTING(    0x01, "Reset" )
r18837r18838
800813   MCFG_SOUND_ROUTE( 1, "rspeaker", 0.50 )
801814
802815   /* cia */
816   // these are setup differently on other amiga drivers (needed for floppy to work) which is correct / why?
803817   MCFG_LEGACY_MOS8520_ADD("cia_0", AMIGA_68EC020_PAL_CLOCK / 10, 0, cia_0_intf)
804818   MCFG_LEGACY_MOS8520_ADD("cia_1", AMIGA_68EC020_PAL_CLOCK / 10, 0, cia_1_intf)
805819
trunk/src/mame/includes/cd32.h
r18837r18838
1616   cd32_state(const machine_config &mconfig, device_type type, const char *tag)
1717      : amiga_state(mconfig, type, tag),
1818        m_microtouch(*this, "microtouch")
19      { }
19   {
20   }
2021
2122   required_device<microtouch_device> m_microtouch;
2223
r18837r18838
2627   void (*m_input_hack)(running_machine &machine);
2728   int m_oldstate[2];
2829   DECLARE_CUSTOM_INPUT_MEMBER(cubo_input);
30   DECLARE_CUSTOM_INPUT_MEMBER(cd32_sel_mirror_input);
31
2932   DECLARE_WRITE32_MEMBER(aga_overlay_w);
3033   DECLARE_WRITE8_MEMBER(cd32_cia_0_porta_w);
3134   DECLARE_READ8_MEMBER(cd32_cia_0_portb_r);

Previous 199869 Revisions Next


© 1997-2024 The MAME Team