mirror of
https://github.com/holub/mame
synced 2025-04-22 08:22:15 +03:00
Correct the clocks in 1942p; fix spcwarp boot procedure.
This commit is contained in:
parent
565b835ee1
commit
c020c87f77
@ -61,9 +61,14 @@ correctly.
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#define MAIN_CPU_CLOCK (XTAL_12MHz/3) /* 12MHz is the only OSC on the PCB */
|
||||
#define SOUND_CPU_CLOCK (XTAL_12MHz/4) /* 12MHz is the only OSC on the PCB */
|
||||
#define AUDIO_CLOCK (XTAL_12MHz/8) /* 12MHz is the only OSC on the PCB */
|
||||
/* 12mhz OSC */
|
||||
#define MAIN_CPU_CLOCK (XTAL_12MHz/3)
|
||||
#define SOUND_CPU_CLOCK (XTAL_12MHz/4)
|
||||
#define AUDIO_CLOCK (XTAL_12MHz/8)
|
||||
/* 20mhz OSC - both Z80s are 4 MHz */
|
||||
#define MAIN_CPU_CLOCK_1942P (XTAL_20MHz/5)
|
||||
#define SOUND_CPU_CLOCK_1942P (XTAL_20MHz/5)
|
||||
#define AUDIO_CLOCK_1942P (XTAL_20MHz/16)
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
@ -620,11 +625,11 @@ MACHINE_CONFIG_END
|
||||
static MACHINE_CONFIG_START( 1942p, _1942_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", Z80, MAIN_CPU_CLOCK) /* 4 MHz ??? */
|
||||
MCFG_CPU_ADD("maincpu", Z80, MAIN_CPU_CLOCK_1942P) /* 4 MHz - verified on PCB */
|
||||
MCFG_CPU_PROGRAM_MAP(c1942p_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", _1942_state, irq0_line_hold) // note, powerups won't move down the screen with the original '1942' logic.
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, SOUND_CPU_CLOCK) /* 3 MHz ??? */
|
||||
MCFG_CPU_ADD("audiocpu", Z80, SOUND_CPU_CLOCK_1942P) /* 4 MHz - verified on PCB */
|
||||
MCFG_CPU_PROGRAM_MAP(c1942p_sound_map)
|
||||
MCFG_CPU_IO_MAP(c1942p_sound_io)
|
||||
MCFG_CPU_PERIODIC_INT_DRIVER(_1942_state, irq0_line_hold, 4*60)
|
||||
@ -650,9 +655,9 @@ static MACHINE_CONFIG_START( 1942p, _1942_state )
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MCFG_SOUND_ADD("ay1", AY8910, AUDIO_CLOCK) /* 1.5 MHz */
|
||||
MCFG_SOUND_ADD("ay1", AY8910, AUDIO_CLOCK_1942P) /* 1.25 MHz - verified on PCB */
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||
MCFG_SOUND_ADD("ay2", AY8910, AUDIO_CLOCK) /* 1.5 MHz */
|
||||
MCFG_SOUND_ADD("ay2", AY8910, AUDIO_CLOCK_1942P) /* 1.25 MHz - verified on PCB */
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
@ -361,7 +361,6 @@ Stephh's notes (based on the games Z80 code and some tests) for other games :
|
||||
to 0x00, so routine at 0x042a ALWAYS thinks that you've pressed COIN2,
|
||||
and as a consequence, it ALWAYS adds 1 credit (even when you are playing) !
|
||||
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
@ -902,6 +901,36 @@ static ADDRESS_MAP_START( hunchbkg, AS_PROGRAM, 8, galaxold_state )
|
||||
AM_RANGE(0x6000, 0x6fff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
/* majorly shifted, hunchbkg style */
|
||||
static ADDRESS_MAP_START( spcwarp, AS_PROGRAM, 8, galaxold_state )
|
||||
AM_RANGE(0x0000, 0x0fff) AM_ROM
|
||||
AM_RANGE(0x1480, 0x14bf) AM_MIRROR(0x6000) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
|
||||
AM_RANGE(0x14c0, 0x14ff) AM_MIRROR(0x6000) AM_WRITEONLY AM_SHARE("spriteram")
|
||||
AM_RANGE(0x1500, 0x1500) AM_MIRROR(0x6000) AM_READ_PORT("IN0")
|
||||
AM_RANGE(0x1500, 0x1501) AM_MIRROR(0x6000) AM_WRITE(galaxold_leds_w)
|
||||
AM_RANGE(0x1502, 0x1502) AM_MIRROR(0x6000) AM_WRITE(galaxold_coin_lockout_w)
|
||||
AM_RANGE(0x1503, 0x1503) AM_MIRROR(0x6000) AM_WRITE(galaxold_coin_counter_w)
|
||||
AM_RANGE(0x1504, 0x1507) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
|
||||
AM_RANGE(0x1580, 0x1580) AM_MIRROR(0x6000) AM_READ_PORT("IN1")
|
||||
AM_RANGE(0x1580, 0x1587) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, sound_w)
|
||||
AM_RANGE(0x1583, 0x1583) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w)
|
||||
AM_RANGE(0x1585, 0x1585) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w)
|
||||
AM_RANGE(0x1586, 0x1587) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, vol_w)
|
||||
// everything else in the $16xx range is moved to $17xx
|
||||
AM_RANGE(0x1680, 0x1680) AM_MIRROR(0x6000) AM_READ(watchdog_reset_r) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
|
||||
AM_RANGE(0x1700, 0x1700) AM_MIRROR(0x6000) AM_READ_PORT("DSW0")
|
||||
AM_RANGE(0x1701, 0x1701) AM_MIRROR(0x6000) AM_WRITE(galaxold_nmi_enable_w)
|
||||
AM_RANGE(0x1704, 0x1704) AM_MIRROR(0x6000) AM_WRITE(galaxold_stars_enable_w)
|
||||
AM_RANGE(0x1706, 0x1706) AM_MIRROR(0x6000) AM_WRITE(galaxold_flip_screen_x_w)
|
||||
AM_RANGE(0x1707, 0x1707) AM_MIRROR(0x6000) AM_WRITE(galaxold_flip_screen_y_w)
|
||||
// the rest
|
||||
AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
|
||||
AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM
|
||||
AM_RANGE(0x2000, 0x2fff) AM_ROM
|
||||
AM_RANGE(0x4000, 0x4fff) AM_ROM
|
||||
AM_RANGE(0x6000, 0x6fff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( hunchbkg_io, AS_IO, 8, galaxold_state )
|
||||
AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READNOP // not used
|
||||
ADDRESS_MAP_END
|
||||
@ -2733,6 +2762,24 @@ static MACHINE_CONFIG_DERIVED( hunchbkg, galaxold_base )
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( spcwarp, galaxold_base )
|
||||
/* hunchbkg but with different banking */
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_REPLACE("maincpu", S2650, PIXEL_CLOCK / 4)
|
||||
|
||||
MCFG_CPU_PROGRAM_MAP(spcwarp)
|
||||
MCFG_CPU_IO_MAP(hunchbkg_io)
|
||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(galaxold_state,hunchbkg_irq_callback)
|
||||
|
||||
MCFG_DEVICE_MODIFY("7474_9m_1")
|
||||
MCFG_7474_COMP_OUTPUT_CB(DEVWRITELINE("maincpu", s2650_device, write_sense))
|
||||
|
||||
MCFG_MACHINE_RESET_OVERRIDE(galaxold_state,hunchbkg)
|
||||
|
||||
MCFG_FRAGMENT_ADD(galaxian_audio)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( tazzmang, galaxian )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -3442,12 +3489,15 @@ ROM_START( hunchbkg )
|
||||
ROM_END
|
||||
|
||||
ROM_START( spcwarp )
|
||||
// unknown Century Electronics space shooter which involves shooting down enemy ships to use them yourself for increasing rate of fire
|
||||
// came out of an undumped ROMS collection - we have no idea if this is Space Warp but it's a unique dump compared to everything else.
|
||||
ROM_REGION( 0x8000, "maincpu", 0 )
|
||||
ROM_LOAD( "swarpt7f.bin", 0x0000, 0x1000, CRC(04d744e3) SHA1(db8218510052a05670cb0b722b73d3f10464788c) )
|
||||
ROM_LOAD( "swarpt7h.bin", 0x2000, 0x1000, CRC(34a36536) SHA1(bc438515618683b2a7c29637871ee00ed95ad7f8) )
|
||||
/* missing rom at $4000? todo: check valid calls */
|
||||
ROM_LOAD( "swarpt7m.bin", 0x6000, 0x1000, BAD_DUMP CRC(a2dff6c8) SHA1(d1c72848450dc5ff386dc94a26e4bf704ccc7121) ) /* ROMCMP reports "BADADDR xxxxxx-xxxxx". Observed data sequence repeated every 32 bytes */
|
||||
|
||||
ROM_REGION( 0x1000, "gfx1", 0 ) // gfx are very similar to 'cosmos' so I think it's a converion of that to Galaxian HW, maybe under hthe title Space Warp.
|
||||
ROM_REGION( 0x1000, "gfx1", 0 ) // gfx are very similar to 'cosmos'
|
||||
ROM_LOAD( "swarpb1h.bin", 0x0000, 0x0800, CRC(6ee3b5f7) SHA1(8150f2ecd59d3a165c0541b550664c56d049edd5) )
|
||||
ROM_LOAD( "swarpb1k.bin", 0x0800, 0x0800, CRC(da4cee6b) SHA1(28b91381658f598fa62049489beee443232825c6) )
|
||||
|
||||
@ -3739,7 +3789,7 @@ GAME( 1981, froggerv, frogger, videotron, froggerv, driver_device, 0,
|
||||
/* S2650 games */
|
||||
// YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY, FULLNAME, FLAGS, LAYOUT
|
||||
GAME( 1983, hunchbkg, hunchbak, hunchbkg, hunchbkg, driver_device, 0, ROT90, "Century Electronics", "Hunchback (Galaxian hardware)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1983, spcwarp, 0, hunchbkg, hunchbkg, driver_device, 0, ROT90, "Century Electronics", "Space Warp?", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // bad dump
|
||||
GAME( 1983, spcwarp, 0, spcwarp, hunchbkg, driver_device, 0, ROT90, "Century Electronics", "Space Warp?", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_WRONG_COLORS ) // bad dump
|
||||
GAME( 1984, drivfrcg, drivfrcp, drivfrcg, drivfrcg, driver_device, 0, ROT90, "Shinkai Inc. (Magic Electronics USA license)", "Driving Force (Galaxian conversion)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1984, drivfrct, drivfrcp, drivfrcg, drivfrcg, driver_device, 0, ROT90, "bootleg (EMT Germany)", "Top Racer (bootleg of Driving Force)", MACHINE_SUPPORTS_SAVE ) // Video Klein PCB
|
||||
GAME( 1985, drivfrcb, drivfrcp, drivfrcg, drivfrcg, driver_device, 0, ROT90, "bootleg (Elsys Software)", "Driving Force (Galaxian conversion bootleg)", MACHINE_SUPPORTS_SAVE )
|
||||
|
Loading…
Reference in New Issue
Block a user