dreamwld.c: Fill in some missing dips for Rolling Crush and Baryon - Future Assault. [Brian Troha]

This commit is contained in:
Brian Troha 2014-07-18 00:56:55 +00:00
parent 86a9695e7a
commit 6e9eb01b0b

View File

@ -9,39 +9,6 @@ Note: this hardware is a copy of Psikyo's 68020 based hardware,
transparent pen modification. This makes it rather hard to
merge with psikyo.c and it should probably be left separate.
Dream World
SemiCom, 2000
PCB Layout
----------
|-------------------------------------------------|
| M6295 ROM5 62256 ACTEL ROM10 |
|VOL M6295 ROM6 62256 A40MX04 |
| PAL PAL 32MHz |
| 62256 62256 PAL |
| ROM1 ROM3 68EC020 PAL PAL |
| ROM2 ROM4 PAL PAL |
|J 62256 62256 PAL |
|A PAL 27MHz |
|M PAL |
|M ACTEL M5M44260 |
|A 6116 A40MX04 M5M44260 |
| 6116 |
| PAL |
| 6264 PAL |
| 6264 |
| DSW1 ROM11 |
| 8752 ROM7 ROM9 |
| DSW2 ROM8 |
|-------------------------------------------------|
Notes:
68020 @ 16.0MHz [32/2]
M6295 (both) @ 1.0MHz [32/32]. pin 7 LOW
8752 @ 16.0MHz [32/2]
HSync @ 15.2kHz
VSync @ 58Hz
Stephh's notes (based on the game M68EC020 code and some tests) :
@ -119,7 +86,6 @@ Stephh's notes (based on the game M68EC020 code and some tests) :
#include "cpu/m68000/m68000.h"
#include "sound/okim6295.h"
#define MASTER_CLOCK 32000000
class dreamwld_state : public driver_device
{
@ -529,6 +495,19 @@ static INPUT_PORTS_START( dreamwld )
INPUT_PORTS_END
static INPUT_PORTS_START( baryon )
PORT_INCLUDE(dreamwld)
PORT_MODIFY("DSW")
PORT_DIPNAME( 0x0004, 0x0004, "Bomb Stock" ) PORT_DIPLOCATION("SW2:3")
PORT_DIPSETTING( 0x0004, "2" )
PORT_DIPSETTING( 0x0000, "3" )
PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( rolcrush )
PORT_START("INPUTS")
PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_COIN1 )
@ -556,51 +535,37 @@ static INPUT_PORTS_START( rolcrush )
PORT_BIT( 0xffff0000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, driver_device,custom_port_read, "DSW")
PORT_START("DSW")
PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
PORT_DIPUNUSED_DIPLOC( 0x0001, IP_ACTIVE_LOW, "SW2:1" ) /* As listed in service mode, but tested */
PORT_DIPUNUSED_DIPLOC( 0x0002, IP_ACTIVE_LOW, "SW2:2" ) /* These might have some use, requires investigation of code */
PORT_DIPUNUSED_DIPLOC( 0x0004, IP_ACTIVE_LOW, "SW2:3" )
PORT_DIPUNUSED_DIPLOC( 0x0008, IP_ACTIVE_LOW, "SW2:4" )
PORT_DIPUNUSED_DIPLOC( 0x0010, IP_ACTIVE_LOW, "SW2:5" )
PORT_DIPUNUSED_DIPLOC( 0x0020, IP_ACTIVE_LOW, "SW2:6" )
PORT_DIPUNUSED_DIPLOC( 0x0040, IP_ACTIVE_LOW, "SW2:7" )
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW2:8")
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0e00, 0x0e00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:2,3,4")
PORT_DIPSETTING( 0x0000, DEF_STR( 5C_1C ) )
PORT_DIPSETTING( 0x0200, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x0400, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x0600, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0e00, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x0a00, DEF_STR( 2C_3C ) )
PORT_DIPSETTING( 0x0c00, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x0800, DEF_STR( 1C_3C ) )
PORT_DIPNAME( 0x7000, 0x7000, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:5,6,7")
PORT_DIPSETTING( 0x2000, "Level 1" )
PORT_DIPSETTING( 0x1000, "Level 2" )
PORT_DIPSETTING( 0x0000, "Level 3" )
PORT_DIPSETTING( 0x7000, "Level 4" )
PORT_DIPSETTING( 0x6000, "Level 5" )
PORT_DIPSETTING( 0x5000, "Level 6" )
PORT_DIPSETTING( 0x4000, "Level 7" )
PORT_DIPSETTING( 0x3000, "Level 8" )
PORT_SERVICE_DIPLOC( 0x8000, IP_ACTIVE_LOW, "SW1:8" )
INPUT_PORTS_END
@ -624,7 +589,6 @@ static GFXDECODE_START( dreamwld )
GFXDECODE_END
void dreamwld_state::machine_start()
{
save_item(NAME(m_protindex));
@ -640,12 +604,10 @@ void dreamwld_state::machine_reset()
}
static MACHINE_CONFIG_START( baryon, dreamwld_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68EC020, MASTER_CLOCK/2)
MCFG_CPU_ADD("maincpu", M68EC020, XTAL_32MHz/2) /* 16MHz verified */
MCFG_CPU_PROGRAM_MAP(baryon_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", dreamwld_state, irq4_line_hold)
@ -668,7 +630,7 @@ static MACHINE_CONFIG_START( baryon, dreamwld_state )
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_OKIM6295_ADD("oki1", MASTER_CLOCK/32, OKIM6295_PIN7_LOW)
MCFG_OKIM6295_ADD("oki1", XTAL_32MHz/32, OKIM6295_PIN7_LOW) /* 1MHz verified */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
MACHINE_CONFIG_END
@ -680,11 +642,51 @@ static MACHINE_CONFIG_DERIVED( dreamwld, baryon )
MCFG_CPU_PROGRAM_MAP(dreamwld_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", dreamwld_state, irq4_line_hold)
MCFG_OKIM6295_ADD("oki2", MASTER_CLOCK/32, OKIM6295_PIN7_LOW)
MCFG_OKIM6295_ADD("oki2", XTAL_32MHz/32, OKIM6295_PIN7_LOW) /* 1MHz verified */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
MACHINE_CONFIG_END
/*
Dream World
SemiCom, 2000
PCB Layout
----------
|-------------------------------------------------|
| M6295 ROM5 62256 ACTEL ROM10 |
|VOL M6295 ROM6 62256 A40MX04 |
| PAL PAL 32MHz |
| 62256 62256 PAL |
| ROM1 ROM3 68EC020 PAL PAL |
| ROM2 ROM4 PAL PAL |
|J 62256 62256 PAL |
|A PAL 27MHz |
|M PAL |
|M ACTEL M5M44260 |
|A 6116 A40MX04 M5M44260 |
| 6116 |
| PAL |
| 6264 PAL |
| 6264 |
| DSW1 ROM11 |
| 8752 ROM7 ROM9 27C160* |
| DSW2 ROM8 27C160* 27C160* |
|-------------------------------------------------|
* denotes unpopulated components
Notes:
68020 @ 16.0MHz [32/2]
M6295 (both) @ 1.0MHz [32/32]. pin 7 LOW
8752 @ 16.0MHz [32/2]
HSync @ 15.2kHz
VSync @ 58Hz
*/
ROM_START( dreamwld )
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD32_BYTE( "3.bin", 0x000000, 0x040000, CRC(e8f7ae78) SHA1(cfd393cec6dec967c82e1131547b7e7fdc5d814f) )
@ -727,26 +729,44 @@ ROM_END
/*
Rolling Crush - this is the same PCB as Dream World with one of the OKIs positions left unpopulated.
Rolling Crush
Trust / Semicom, 1999
Here are the dumps from a (original???) Rolling Crush (version 1.07.E 1999/02/11) PCB.Game seems to be a rip-off
of Puzz Loop from Mitchell, infact there is a piece of tape on the solder side which says 'P. LOOP' and a sticker with 02/1999 date.Manifacturer is TRUST.
All EPROMS four 27C2000 (program code), one 27C4000 (6295 samples),
one MASK 27C512(GFX), two 27C160(GFX) and two 27C010 (GFX) are not labeled.
Main CPU is a 68EC020FG16 in QFP package
There are also a Atmel AT89C52 MCU (secured) and two Actel A40MX04 FPGAs as well as a lot of PLDs (three GAL22V10B and nine PALCE20V8H), don't know
if secured.
PCB Layout
----------
|-------------------------------------------------|
| M6295* 27C40* 62256 ACTEL ROM10 |
|VOL M6295 ROM6 62256 A40MX04 |
| PAL PAL 32MHz |
| 62256 62256 PAL |
| ROM2 ROM4 68EC020 PAL PAL |
| ROM1 ROM3 PAL PAL |
|J 62256 62256 PAL |
|A PAL 27MHz |
|M PAL |
|M ACTEL M5M44260 |
|A 6116 A40MX04 M5M44260 |
| 6116 |
| PAL |
| 6264 PAL |
| 6264 |
| DSW1 ROM9 |
| 8752 ROM7 ROM8 27C160* |
| DSW2 ROM6 27C160* 27C160* |
|-------------------------------------------------|
Same PCB as Dream World except one OKI M6295 and it's sample rom are unpopulated
* denotes unpopulated components
Main CPU 68EC020FG16 @ 16MHz
AD-65 (OKI MSM6295 rebadged) @ 1MHz
Atmel AT89C52 MCU @ 16MHZ
Atmel AT89C52 MCU (secured) @ 16MHZ
V-SYNC @57.793 Hz
H-SYNC @ (floating) 15.19 - 15.27KHz
*/
ROM_START( rolcrush )
@ -783,14 +803,47 @@ ROM_START( rolcrush )
ROM_LOAD( "mx27c512.9.bin", 0x000000, 0x10000, CRC(0da8db45) SHA1(7d5bd71c5b0b28ff74c732edd7c662f46f2ab25b) )
ROM_END
/* Baryon is a slightly different PCB, doesn't have a position for the 2nd OKI */
/*
Baryon
Semicom, 1997
PCB Layout
----------
|-------------------------------------------------|
| ROM1 62256 ACTEL ROM2 |
|VOL M6295 62256 A40MX04 |
| PAL PAL 32MHz |
| 62256 62256 PAL |
| ROM3 ROM4 68EC020 PAL PAL |
| ROM5 ROM6 PAL PAL |
|J 62256 62256 PAL |
|A PAL 27MHz |
|M PAL |
|M ACTEL M5M44260 |
|A 6116 A40MX04 M5M44260 |
| 6116 |
| PAL |
| 6264 PAL |
| 6264 |
| DSW1 ROM7 |
| P87C52 ROM8 ROM9 27C160* |
| DSW2 ROM10 ROM11 27C160* |
|-------------------------------------------------|
Baryon is a slightly different PCB, doesn't have a position for a 2nd OKI
* denotes unpopulated components
*/
ROM_START( baryon )
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD32_BYTE( "3.bin", 0x000002, 0x040000, CRC(046d4231) SHA1(05056efe5fec7f43c400f05278de516b01be0fdf) )
ROM_LOAD32_BYTE( "4.bin", 0x000000, 0x040000, CRC(59e0df20) SHA1(ff12f4adcf731f6984db7d0fbdd7fcc71ce66aa4) )
ROM_LOAD32_BYTE( "5.bin", 0x000003, 0x040000, CRC(63d5e7cb) SHA1(269bf5ffe10f2464f823c4d377921e19cfb8bc46) )
ROM_LOAD32_BYTE( "6.bin", 0x000001, 0x040000, CRC(abccbb3d) SHA1(01524f094543d872d775306024f51258a11e9240) )
ROM_LOAD32_BYTE( "3.bin", 0x000002, 0x040000, CRC(046d4231) SHA1(05056efe5fec7f43c400f05278de516b01be0fdf) )
ROM_LOAD32_BYTE( "5.bin", 0x000003, 0x040000, CRC(63d5e7cb) SHA1(269bf5ffe10f2464f823c4d377921e19cfb8bc46) )
ROM_REGION( 0x10000, "cpu1", 0 ) /* 87C52 MCU Code */
ROM_LOAD( "87c52.mcu", 0x00000, 0x10000 , NO_DUMP ) /* can't be dumped. */
@ -818,8 +871,6 @@ ROM_START( baryon )
ROM_END
GAME( 1997, baryon, 0, baryon, dreamwld, driver_device, 0, ROT270, "SemiCom", "Baryon - Future Assault", GAME_SUPPORTS_SAVE )
GAME( 2000, dreamwld, 0, dreamwld, dreamwld, driver_device, 0, ROT0, "SemiCom", "Dream World", GAME_SUPPORTS_SAVE )
GAME( 1999, rolcrush, 0, baryon, rolcrush, driver_device, 0, ROT0, "Trust / Semicom", "Rolling Crush (version 1.07.E - 1999/02/11)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS ) // wrong linescroll
GAME( 1997, baryon, 0, baryon, baryon, driver_device, 0, ROT270, "SemiCom", "Baryon - Future Assault", GAME_SUPPORTS_SAVE )
GAME( 2000, dreamwld, 0, dreamwld, dreamwld, driver_device, 0, ROT0, "SemiCom", "Dream World", GAME_SUPPORTS_SAVE )
GAME( 1999, rolcrush, 0, baryon, rolcrush, driver_device, 0, ROT0, "Trust / Semicom", "Rolling Crush (version 1.07.E - 1999/02/11)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS ) // wrong linescroll