[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]
This commit is contained in:
Scott Stone 2012-11-03 21:08:51 +00:00
parent a5313a0dae
commit 03731d39a2
3 changed files with 171 additions and 42 deletions

View File

@ -2,30 +2,142 @@
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
<softwarelist name="cd32" description="Amiga CD-32 CD-ROM list">
<!--- Just a test list -->
<!--- Preliminary List -->
<!-- This was a cloneCD image - mounted with Daemon tools, rips to .toc/.bin with burnatonce in full RAW mode -->
<!-- a EC error was reported, so it might have protection -->
<software name="clockwsr" supported="no">
<description>Clockwiser</description>
<year>19??</year>
<publisher>Rasputin</publisher>
<part name="cdrom" interface="cd32_cdrom">
<diskarea name="cdrom">
<disk name="clockwiser" sha1="01a622e5b6a710eeef828b0f5807dad94de3798f"/>
</diskarea>
</part>
</software>
<software name="vital" supported="no">
<description>Vital Light</description>
<year>1994</year>
<!-- playable but there's a scrolling glitch every few frames -->
<software name="morph" supported="partial">
<description>Morph</description>
<year>1993</year>
<publisher>Millennium</publisher>
<part name="cdrom" interface="cd32_cdrom">
<diskarea name="cdrom">
<disk name="vital light (1994)(millennium)[!][10328981]" sha1="89921bfda42deab7a73e4c55ea4244673788a1bd"/>
<disk name="morph (1993)(millennium)[!]" sha1="3a8909d88d48b17b7e02284866f57085fbe62e2e"/>
</diskarea>
</part>
</software>
<!-- Diggers has bad sprites (oversized cursor etc.) Oscar has bad background planes -->
<software name="diggoscr" supported="no">
<description>Diggers + Oscar</description>
<year>1993</year>
<publisher>Commodore</publisher>
<part name="cdrom" interface="cd32_cdrom">
<diskarea name="cdrom">
<disk name="diggers and oscar (1993)(commodore)(m4)[!][compilation][amiga-cd 31, 54]" sha1="88422ad455a8b8c7255c83812aa69132f15e1bf6"/>
</diskarea>
</part>
</software>
<!-- Playable, like the Ami1200 AGA version -->
<software name="pballfnt">
<description>Pinball Fantasies CD Edition</description>
<year>1993</year>
<publisher>21st Century Entertainment</publisher>
<part name="cdrom" interface="cd32_cdrom">
<diskarea name="cdrom">
<disk name="pinball fantasies (1993)(21st century entertainment)[!]" sha1="01b589f79dc0c6e9ebc3ed898aa021c6e59daa70"/>
</diskarea>
</part>
</software>
<!-- Glitchy sprites, no sound, like the Ami1200 AGA version -->
<software name="pballill" supported="no">
<description>Pinball Illusions</description>
<year>1995</year>
<publisher>21st Century Entertainment</publisher>
<part name="cdrom" interface="cd32_cdrom">
<diskarea name="cdrom">
<disk name="pinball illusions (1995)(21st century entertainment)[!]" sha1="1b657df40d086d9ce8f498e32033993361f3452b"/>
</diskarea>
</part>
</software>
<!-- Fantastic Dizzy is glitchy, other games work -->
<!-- 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 -->
<software name="big6diz" supported="partial">
<description>The Big 6 (Dizzy Collection)</description>
<year>1994</year>
<publisher>Codemasters</publisher>
<part name="cdrom" interface="cd32_cdrom">
<diskarea name="cdrom">
<disk name="big 6, the (1994)(codemasters)(en-de)[!][compilation]" sha1="ecea85b6f6bd167b0b5164fde31b782e6b188e30"/>
</diskarea>
</part>
</software>
<!-- Playable but missing some graphical effects -->
<software name="vital" supported="partial">
<description>Vital Light</description>
<year>1994</year>
<publisher>Millennium</publisher>
<part name="cdrom" interface="cd32_cdrom">
<diskarea name="cdrom">
<disk name="vital light (1994)(millennium)[!][10328981]" sha1="89921bfda42deab7a73e4c55ea4244673788a1bd"/>
</diskarea>
</part>
</software>
<!-- Bad colours / gfx issues -->
<software name="clockwsr" supported="no">
<description>Clockwiser</description>
<year>1994</year>
<publisher>Rasputin</publisher>
<part name="cdrom" interface="cd32_cdrom">
<diskarea name="cdrom">
<disk name="clockwiser (1994)(rasputin)[!]" sha1="0d92ecfc00175486022c4c3bcfd7e26a21568d20"/>
</diskarea>
</part>
</software>
<!-- runs and can be 'played', but gfx are badly scaled -->
<software name="sstardst" supported="no">
<description>Super Stardust</description>
<year>1994</year>
<publisher>Team 17</publisher>
<part name="cdrom" interface="cd32_cdrom">
<diskarea name="cdrom">
<disk name="super stardust (1994)(team 17)[!]" sha1="2fee9d76e9b47a9fb72c2f8833d07cb4fbc6ab82"/>
</diskarea>
</part>
</software>
<!-- bad screen mode -->
<software name="sskidmk" supported="no">
<description>Super Skidmarks</description>
<year>1995</year>
<publisher>Guildhall Leisure</publisher>
<part name="cdrom" interface="cd32_cdrom">
<diskarea name="cdrom">
<disk name="super skidmarks v2.2 (1995)(guildhall leisure)[!][gh 1 10 aug 95]" sha1="af57f7c92804f460a3d2ae89b5b881414205a21e"/>
</diskarea>
</part>
</software>
<!-- Manual copy protection, no idea if it actually works, menu colours are bad tho, anybody got a cheat for the code screen? -->
<software name="wormstdc" supported="no">
<description>Worms - The Director's Cut</description>
<year>1995</year>
<publisher>Ocean</publisher>
<part name="cdrom" interface="cd32_cdrom">
<diskarea name="cdrom">
<disk name="worms - the director's cut (1995)(ocean)(m3)[!]" sha1="7c42b4cf6c089aadd0ed41f8725174ab9c7a0378"/>
</diskarea>
</part>
</software>
<!-- screen offset problems, only plays on pad2? (by design?) -->
<software name="libcap2" supported="no">
<description>Liberation - Captive II</description>
<year>1994</year>
<publisher>Mindscape</publisher>
<part name="cdrom" interface="cd32_cdrom">
<diskarea name="cdrom">
<disk name="liberation - captive ii v2.02-2.00c (1994-04-08)(mindscape)[!][cdd3716]" sha1="e4270283304e913a9397888f536be1b146482af1"/>
</diskarea>
</part>
</software>
</softwarelist>

View File

@ -232,12 +232,25 @@ static UINT16 handle_joystick_potgor(running_machine &machine, UINT16 potgor)
CUSTOM_INPUT_MEMBER(cd32_state::cubo_input)
{
return handle_joystick_potgor(machine(), m_potgo_value) >> 10;
return handle_joystick_potgor(machine(), m_potgo_value) >> 8;
}
CUSTOM_INPUT_MEMBER(cd32_state::cd32_sel_mirror_input)
{
UINT8 bits = ioport((const char *)param)->read();
return (bits & 0x20)>>5;
}
static INPUT_PORTS_START( cd32 )
PORT_START("CIA0PORTA")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_SPECIAL )
/* 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! */
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cd32_state,cd32_sel_mirror_input, "P2")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cd32_state,cd32_sel_mirror_input, "P1")
PORT_START("CIA0PORTB")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -251,40 +264,40 @@ static INPUT_PORTS_START( cd32 )
PORT_BIT( 0xfcfc, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("POTGO")
PORT_BIT( 0x4400, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cd32_state,cubo_input, 0)
PORT_BIT( 0xbbff, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, cd32_state,cubo_input, 0)
PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_UNUSED )
// CD32 '11' button pad (4 dpad directions + 7 buttons), not read directly
PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 ||>")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 <<") /* left trigger */
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 >>") /* right trigger */
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("P1 Green") /* BUTTON3 */
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(1) PORT_NAME("P1 Yellow") /* BUTTON4 */
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_PLAYER(1) PORT_NAME("P1 Red / SELECT") /* BUTTON1 = START1 */
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_PLAYER(1) PORT_NAME("P1 Blue / STOP") /* BUTTON2 */
PORT_START("P1JOY")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
// CD32 '11' button pad (4 dpad directions + 7 buttons), not read directly
PORT_START("P2")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 ||>")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 <<") /* left trigger */
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 >>") /* right trigger */
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_NAME("P2 Green") /* BUTTON3 */
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(2) PORT_NAME("P2 Yellow") /* BUTTON4 */
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_PLAYER(2) PORT_NAME("P2 Red / SELECT") /* BUTTON1 = START2 */
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_PLAYER(2) PORT_NAME("P2 Blue / STOP") /* BUTTON2 */
PORT_START("P2JOY")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_START("P1")
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1)
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1) /* BUTTON3 */
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(1) /* BUTTON4 */
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_PLAYER(1) /* BUTTON1 = START1 */
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_PLAYER(1) /* BUTTON2 */
PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_PLAYER(1)
PORT_START("P2")
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2) /* BUTTON3 */
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(2) /* BUTTON4 */
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_PLAYER(2) /* BUTTON1 = START2 */
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_PLAYER(2) /* BUTTON2 */
PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_PLAYER(2)
PORT_START("DIPSW1")
PORT_DIPNAME( 0x01, 0x01, "DSW1 1" )
@ -800,6 +813,7 @@ static MACHINE_CONFIG_START( cd32base, cd32_state )
MCFG_SOUND_ROUTE( 1, "rspeaker", 0.50 )
/* cia */
// these are setup differently on other amiga drivers (needed for floppy to work) which is correct / why?
MCFG_LEGACY_MOS8520_ADD("cia_0", AMIGA_68EC020_PAL_CLOCK / 10, 0, cia_0_intf)
MCFG_LEGACY_MOS8520_ADD("cia_1", AMIGA_68EC020_PAL_CLOCK / 10, 0, cia_1_intf)

View File

@ -16,7 +16,8 @@ public:
cd32_state(const machine_config &mconfig, device_type type, const char *tag)
: amiga_state(mconfig, type, tag),
m_microtouch(*this, "microtouch")
{ }
{
}
required_device<microtouch_device> m_microtouch;
@ -26,6 +27,8 @@ public:
void (*m_input_hack)(running_machine &machine);
int m_oldstate[2];
DECLARE_CUSTOM_INPUT_MEMBER(cubo_input);
DECLARE_CUSTOM_INPUT_MEMBER(cd32_sel_mirror_input);
DECLARE_WRITE32_MEMBER(aga_overlay_w);
DECLARE_WRITE8_MEMBER(cd32_cia_0_porta_w);
DECLARE_READ8_MEMBER(cd32_cia_0_portb_r);