Added PCB layout for Zoar. Corrected AY-3-8910 clocks and added missing PROM. [Guru]

This commit is contained in:
Phil Bennett 2009-02-16 01:53:14 +00:00
parent 73dcbbd36e
commit 94780ee996

View File

@ -32,10 +32,86 @@ These boards use two 8910's for sound, controlled by a dedicated 6502. The
main processor triggers an IRQ request when writing a command to the sound main processor triggers an IRQ request when writing a command to the sound
CPU. CPU.
Main clock: XTAL = 12 MHz
Horizontal video frequency: HSYNC = XTAL/768?? = 15.625 kHz ?? PCB Layouts
Video frequency: VSYNC = HSYNC/272 = 57.44 Hz ? -----------
VBlank duration: 1/VSYNC * (24/272) = 1536 us ?
Zoar
Data East, 1982
Top PCB
DE-0123
|---------------------------------|
|UPC1181H SW2 Z17.15B |
| VOL SW1 |-|
| Z16.13B | |
| 2128 Z15.12B | |
| X | |
| AY-3-8910 X |-|
| AY-3-8910 DIP24 |
| 6502 |
|1 Z13.6B |
|8 |-|
|W Z12.4B | |
|A | |
|Y Z11.3B | |
| |-|
| 555 Z10.1B |
|---------------------------------|
Notes:
6502 - clock 500.0kHz [12/24]
AY-3-8910 - clock 3.00MHz(both) [12/4]
2128 - 2k x8 SRAM == 6116
X - Position for a socket, but not populated with anything
DIP24 - Empty socket. There are rumours that this socket would hold test mode code or something else.
It's possible a factory test ROM did exist for factory-only testing as this was common with
several manufacturers at the time. However the PCB came from the factory with this socket empty
so it would be extremely unlikely to find a PCB with that socket populated.
SW1/2 - 8 position DIP switches
To set cocktail mode, set DIP#1 SW7 & 8 OFF. The player has 2 buttons only and the screen will flip between PL1 & PL2
To set upright mode, set DIP#1 SW7 & 8 ON. The player has 3 buttons and the screen will not flip between PL1 & PL2
DIP Notes:
SW1 #5 is unused
SW1 #6 must remain OFF otherwise the game will not boot-up and just displays garbage.
There is no TEST mode.
SW2 #5 is listed in the manual as "Panel B". This enables or removes the 2nd button.
There were two types of panels supplied, either cocktail or upright cabs. The cocktail panel
doesn't have 3 buttons. The 2 buttons are air-air missile and air-ground missile/bomb and
there's an extra button for accelerate on the 3 button panel. On the 2 button panel, button 1 is
the air-air and air-ground missile/bomb weapon button and is auto selected based on the enemies on
screen and the 2nd button is wired to accelerate. There is no button for manually selecting
the missiles/bombs.
Bottom PCB
DE-0122
|---------------------------------|
| Z08.15L PB3 PB0 2128 |
| Z07.14L 2128 |-------| |-|
| 2128 | | | |
| Z06.12L | CPU-7 | | |
| | | | |
| Z05.11L | | |-|
| |-------| |
| Z04.9L |
| Z03.8L Z19.7B |
| AM93425 |-|
|1 Z02.6L AM93425 AM93425 | |
|0 Z01.5L AM93425 AM93425 PB2 | |
|W Z00.3L AM93425 PB4 PB1 | |
|A Z21.2L PB4 555 |-|
|Y Z20.1L 12MHz |
|---------------------------------|
Notes:
CPU-7 - Epoxy block containing a 6502 clocked at 1.5MHz [12/8]
and possibly something else ^_^
2128 - 2k x8 SRAM == 6116
AM93425 - 1k x1 SRAM == 2125
PB* - PALs (not dumped, registered types)
Z19/20/21 - PROMs, type Harris 7603 (32 bytes)
VSync - 57.4358Hz
HSync - 15.6235kHz
Note on Lock'n'Chase: Note on Lock'n'Chase:
@ -82,6 +158,7 @@ enum
static WRITE8_HANDLER( audio_command_w ); static WRITE8_HANDLER( audio_command_w );
static READ8_HANDLER( audio_command_r ); static READ8_HANDLER( audio_command_r );
static READ8_HANDLER( zoar_dsw1_read );
static UINT8 *decrypted; static UINT8 *decrypted;
static UINT8 *rambase; static UINT8 *rambase;
@ -339,7 +416,7 @@ static ADDRESS_MAP_START( zoar_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x8800, 0x8bff) AM_WRITE(btime_mirrorvideoram_w) AM_RANGE(0x8800, 0x8bff) AM_WRITE(btime_mirrorvideoram_w)
AM_RANGE(0x8c00, 0x8fff) AM_WRITE(btime_mirrorcolorram_w) AM_RANGE(0x8c00, 0x8fff) AM_WRITE(btime_mirrorcolorram_w)
AM_RANGE(0x9000, 0x9000) AM_WRITE(zoar_video_control_w) AM_RANGE(0x9000, 0x9000) AM_WRITE(zoar_video_control_w)
AM_RANGE(0x9800, 0x9800) AM_READ_PORT("DSW1") AM_RANGE(0x9800, 0x9800) AM_READ(zoar_dsw1_read)
AM_RANGE(0x9801, 0x9801) AM_READ_PORT("DSW2") AM_RANGE(0x9801, 0x9801) AM_READ_PORT("DSW2")
AM_RANGE(0x9802, 0x9802) AM_READ_PORT("P1") AM_RANGE(0x9802, 0x9802) AM_READ_PORT("P1")
AM_RANGE(0x9803, 0x9803) AM_READ_PORT("P2") AM_RANGE(0x9803, 0x9803) AM_READ_PORT("P2")
@ -473,6 +550,10 @@ static READ8_HANDLER( audio_command_r )
return soundlatch_r(space,offset); return soundlatch_r(space,offset);
} }
static READ8_HANDLER( zoar_dsw1_read )
{
return (!video_screen_get_vblank(space->machine->primary_screen) << 7) | (input_port_read(space->machine, "DSW1") & 0x7f);
}
static INPUT_PORTS_START( btime ) static INPUT_PORTS_START( btime )
PORT_START("P1") PORT_START("P1")
@ -662,52 +743,45 @@ static INPUT_PORTS_START( zoar )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_CHANGED(coin_inserted_irq_lo, 0) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_CHANGED(coin_inserted_irq_lo, 0)
PORT_START("DSW1") PORT_START("DSW1")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW I:1,2") PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2")
PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) ) PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW I:3,4") PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:3,4")
PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x04, DEF_STR( 1C_3C ) ) PORT_DIPSETTING( 0x04, DEF_STR( 1C_3C ) )
/* Manual says bit 4,5 have to stay OFF */ /* Manual says bit 4,5 have to stay OFF */
PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x00, "SW I:5" ) /* almost certainly unused */ PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW1:5" ) /* almost certainly unused */
/* Service mode doesn't work because of missing ROMs */ /* Service mode doesn't work because of missing ROMs */
PORT_SERVICE_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW I:6" ) PORT_SERVICE_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW1:6" )
PORT_DIPNAME( 0x40, 0x00, "Control Panel" ) PORT_DIPLOCATION("SW I:7") PORT_DIPNAME( 0x40, 0x00, "Control Panel" ) PORT_DIPLOCATION("SW1:7")
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x40, DEF_STR( Cocktail ) ) PORT_DIPSETTING( 0x40, DEF_STR( Cocktail ) )
// PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW I:8") PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:8")
// PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
// PORT_DIPSETTING( 0x80, DEF_STR( Cocktail ) ) PORT_DIPSETTING( 0x80, DEF_STR( Cocktail ) )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK )
PORT_START("DSW2") PORT_START("DSW2")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW II:1") PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x01, "3" ) PORT_DIPSETTING( 0x01, "3" )
PORT_DIPSETTING( 0x00, "5" ) PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW II:2,3") PORT_DIPNAME( 0x06, 0x06, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:2,3")
PORT_DIPSETTING( 0x06, "5000" ) PORT_DIPSETTING( 0x06, "5000" )
PORT_DIPSETTING( 0x04, "10000" ) PORT_DIPSETTING( 0x04, "10000" )
PORT_DIPSETTING( 0x02, "15000" ) PORT_DIPSETTING( 0x02, "15000" )
PORT_DIPSETTING( 0x00, "20000" ) PORT_DIPSETTING( 0x00, "20000" )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW II:4") PORT_DIPNAME( 0x08, 0x08, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:4")
PORT_DIPSETTING( 0x08, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x08, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x00, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x00, DEF_STR( Hard ) )
PORT_DIPNAME( 0x10, 0x00, "Weapon Select" ) PORT_DIPLOCATION("SW II:5") PORT_DIPNAME( 0x10, 0x00, "Weapon Select" ) PORT_DIPLOCATION("SW2:5")
PORT_DIPSETTING( 0x00, "Manual" ) PORT_DIPSETTING( 0x00, "Manual" )
PORT_DIPSETTING( 0x10, "Auto" ) PORT_DIPSETTING( 0x10, "Auto" )
PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW II:6") /* These 3 switches */ PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW2:6" ) /* These 3 switches have something to do with coinage */
PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) /* have to do with */ PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW2:7" ) /* See code at $d234. Feel free to figure them out */
PORT_DIPSETTING( 0x20, DEF_STR( On ) ) /* coinage. */ PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW2:8" ) /* Manual says to leave them OFF */
PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW II:7") /* See code at $d234. */
PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) /* Feel free to figure */
PORT_DIPSETTING( 0x40, DEF_STR( On ) ) /* them out. */
PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW II:8") /* Manual says to leave */
PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) /* them OFF. */
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( lnc ) static INPUT_PORTS_START( lnc )
@ -1362,6 +1436,13 @@ static MACHINE_DRIVER_START( zoar )
MDRV_PALETTE_LENGTH(64) MDRV_PALETTE_LENGTH(64)
MDRV_VIDEO_UPDATE(zoar) MDRV_VIDEO_UPDATE(zoar)
MDRV_SOUND_REPLACE("ay1", AY8910, HCLK1)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.23)
MDRV_SOUND_CONFIG(ay1_intf)
MDRV_SOUND_REPLACE("ay2", AY8910, HCLK1)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.23)
MACHINE_DRIVER_END MACHINE_DRIVER_END
@ -1512,8 +1593,6 @@ ROM_START( cookrace )
ROM_LOAD( "b7", 0x0020, 0x0020, CRC(e4268fa6) SHA1(93f74e633c3a19755e78e0e2883109cd8ccde9a8) ) /* unknown */ ROM_LOAD( "b7", 0x0020, 0x0020, CRC(e4268fa6) SHA1(93f74e633c3a19755e78e0e2883109cd8ccde9a8) ) /* unknown */
ROM_END ROM_END
ROM_START( tisland ) ROM_START( tisland )
ROM_REGION( 0x10000, "main", 0 ) ROM_REGION( 0x10000, "main", 0 )
ROM_LOAD( "t-04.b7", 0xa000, 0x1000, CRC(641af7f9) SHA1(50cd8f2372725356bb5a66024084363f5c5a870d) ) ROM_LOAD( "t-04.b7", 0xa000, 0x1000, CRC(641af7f9) SHA1(50cd8f2372725356bb5a66024084363f5c5a870d) )
@ -1710,37 +1789,38 @@ ROM_END
ROM_START( zoar ) ROM_START( zoar )
ROM_REGION( 0x10000, "main", 0 ) ROM_REGION( 0x10000, "main", 0 )
ROM_LOAD( "zoar15", 0xd000, 0x1000, CRC(1f0cfdb7) SHA1(ce7e871f17c52b6eaf99cfb721e702e4f0e6bb25) ) ROM_LOAD( "z15.12b", 0xd000, 0x1000, CRC(1f0cfdb7) SHA1(ce7e871f17c52b6eaf99cfb721e702e4f0e6bb25) )
ROM_LOAD( "zoar16", 0xe000, 0x1000, CRC(7685999c) SHA1(fabe38d71e797ae0b04b5d3aba228b4c85d96185) ) ROM_LOAD( "z16.13b", 0xe000, 0x1000, CRC(7685999c) SHA1(fabe38d71e797ae0b04b5d3aba228b4c85d96185) )
ROM_LOAD( "zoar17", 0xf000, 0x1000, CRC(619ea867) SHA1(0a3735384f03a1052d54ab799b5e37038d8ece2a) ) ROM_LOAD( "z17.15b", 0xf000, 0x1000, CRC(619ea867) SHA1(0a3735384f03a1052d54ab799b5e37038d8ece2a) )
ROM_REGION( 0x10000, "audio", 0 ) ROM_REGION( 0x10000, "audio", 0 )
ROM_LOAD( "zoar09", 0xe000, 0x1000, CRC(18d96ff1) SHA1(671d934a451e0b042450ea86d24c3751a39b38f8) ) ROM_LOAD( "z09.13c", 0xe000, 0x1000, CRC(18d96ff1) SHA1(671d934a451e0b042450ea86d24c3751a39b38f8) )
ROM_REGION( 0x6000, "gfx1", ROMREGION_DISPOSE ) ROM_REGION( 0x6000, "gfx1", ROMREGION_DISPOSE )
ROM_LOAD( "zoar00", 0x0000, 0x1000, CRC(fd2dcb64) SHA1(1a49a6ec6ffd354d872b1af83d55ec96e8215b2b) ) ROM_LOAD( "z00.3l", 0x0000, 0x1000, CRC(fd2dcb64) SHA1(1a49a6ec6ffd354d872b1af83d55ec96e8215b2b) )
ROM_LOAD( "zoar01", 0x1000, 0x1000, CRC(74d3ca48) SHA1(2c75ea246f86a057467deb35ef6a6e72f667dd84) ) ROM_LOAD( "z01.5l", 0x1000, 0x1000, CRC(74d3ca48) SHA1(2c75ea246f86a057467deb35ef6a6e72f667dd84) )
ROM_LOAD( "zoar03", 0x2000, 0x1000, CRC(77b7df14) SHA1(a1cbc214fc849b7e3417b1156d1e4440ab67f631) ) ROM_LOAD( "z03.8l", 0x2000, 0x1000, CRC(77b7df14) SHA1(a1cbc214fc849b7e3417b1156d1e4440ab67f631) )
ROM_LOAD( "zoar04", 0x3000, 0x1000, CRC(9be786de) SHA1(480733a1438dffa4b0fac6f76bf84a0deec5d1fa) ) ROM_LOAD( "z04.9l", 0x3000, 0x1000, CRC(9be786de) SHA1(480733a1438dffa4b0fac6f76bf84a0deec5d1fa) )
ROM_LOAD( "zoar06", 0x4000, 0x1000, CRC(07638c71) SHA1(1a7fc49657ac7ac0033bd60c86663bd615079230) ) ROM_LOAD( "z06.12l", 0x4000, 0x1000, CRC(07638c71) SHA1(1a7fc49657ac7ac0033bd60c86663bd615079230) )
ROM_LOAD( "zoar07", 0x5000, 0x1000, CRC(f4710f25) SHA1(08b4cc4252f83a689cded38d9a5a50f55ee6beee) ) ROM_LOAD( "z07.14l", 0x5000, 0x1000, CRC(f4710f25) SHA1(08b4cc4252f83a689cded38d9a5a50f55ee6beee) )
ROM_REGION( 0x1800, "gfx2", ROMREGION_DISPOSE ) ROM_REGION( 0x1800, "gfx2", ROMREGION_DISPOSE )
ROM_LOAD( "zoar10", 0x0000, 0x0800, CRC(aa8bcab8) SHA1(81f1a9fd754fd6f8030ff6b5aa80c7670be9d02e) ) ROM_LOAD( "z10.1b", 0x0000, 0x0800, CRC(aa8bcab8) SHA1(81f1a9fd754fd6f8030ff6b5aa80c7670be9d02e) )
ROM_LOAD( "zoar11", 0x0800, 0x0800, CRC(dcdad357) SHA1(d1569e1d38f14f5f457547e24df4f80f726c6157) ) ROM_LOAD( "z11.3b", 0x0800, 0x0800, CRC(dcdad357) SHA1(d1569e1d38f14f5f457547e24df4f80f726c6157) )
ROM_LOAD( "zoar12", 0x1000, 0x0800, CRC(ed317e40) SHA1(db70889af5f233ca71acf734abfbdb74b6a393c0) ) ROM_LOAD( "z12.4b", 0x1000, 0x0800, CRC(ed317e40) SHA1(db70889af5f233ca71acf734abfbdb74b6a393c0) )
ROM_REGION( 0x3000, "gfx3", ROMREGION_DISPOSE ) ROM_REGION( 0x3000, "gfx3", ROMREGION_DISPOSE )
ROM_LOAD( "zoar02", 0x0000, 0x1000, CRC(d8c3c122) SHA1(841006cc84622e851df462a64696b64bb8cb62a1) ) ROM_LOAD( "z02.6l", 0x0000, 0x1000, CRC(d8c3c122) SHA1(841006cc84622e851df462a64696b64bb8cb62a1) )
ROM_LOAD( "zoar05", 0x1000, 0x1000, CRC(05dc6b09) SHA1(197c720544a090e12980513b441a2b9cf04e212f) ) ROM_LOAD( "z05.14l", 0x1000, 0x1000, CRC(05dc6b09) SHA1(197c720544a090e12980513b441a2b9cf04e212f) )
ROM_LOAD( "zoar08", 0x2000, 0x1000, CRC(9a148551) SHA1(db92dd7552c6f76a062910f37a3fe3524fdffd38) ) ROM_LOAD( "z08.15l", 0x2000, 0x1000, CRC(9a148551) SHA1(db92dd7552c6f76a062910f37a3fe3524fdffd38) )
ROM_REGION( 0x1000, "bg_map", 0 ) /* background tilemaps */ ROM_REGION( 0x1000, "bg_map", 0 ) /* background tilemaps */
ROM_LOAD( "zoar13", 0x0000, 0x1000, CRC(8fefa960) SHA1(614026aa71703dd3898e470f45730e5c6934b31b) ) ROM_LOAD( "z13.6b", 0x0000, 0x1000, CRC(8fefa960) SHA1(614026aa71703dd3898e470f45730e5c6934b31b) )
ROM_REGION( 0x0040, "proms", 0 ) ROM_REGION( 0x0060, "proms", 0 )
ROM_LOAD( "z20-1l", 0x0000, 0x0020, CRC(a63f0a07) SHA1(16532d3ac0536ad4b712005fd722ee8c14d02e9b) ) ROM_LOAD( "z20.1l", 0x0000, 0x0020, CRC(a63f0a07) SHA1(16532d3ac0536ad4b712005fd722ee8c14d02e9b) )
ROM_LOAD( "z21-1l", 0x0020, 0x0020, CRC(5e1e5788) SHA1(56068b209cc7c734bbcbb9858f40faa6474c8095) ) ROM_LOAD( "z21.2l", 0x0020, 0x0020, CRC(5e1e5788) SHA1(56068b209cc7c734bbcbb9858f40faa6474c8095) )
ROM_LOAD( "z19.7b", 0x0040, 0x0020, CRC(03ee3a96) SHA1(4acb4061ef0d8a1fab50207fc81a54bfa4c7455d) )
ROM_END ROM_END
ROM_START( disco ) ROM_START( disco )