mirror of
https://github.com/holub/mame
synced 2025-04-25 17:56:43 +03:00
Williams Special Chip 1&2: Add pinout diagram, and clarify the abbreviations to reduce confusion with similarly named chips. Fix a comment error about SC1 vs SC2 behavior. [Sean Riddle, Lord Nightmare]
This commit is contained in:
parent
4618b4dc2c
commit
b2ab9d8a65
@ -3051,19 +3051,19 @@ DRIVER_INIT_MEMBER(williams_state,stargate)
|
||||
|
||||
DRIVER_INIT_MEMBER(williams_state,robotron)
|
||||
{
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0xc000);
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC1, 0xc000);
|
||||
}
|
||||
|
||||
|
||||
DRIVER_INIT_MEMBER(williams_state,joust)
|
||||
{
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0xc000);
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC1, 0xc000);
|
||||
}
|
||||
|
||||
|
||||
DRIVER_INIT_MEMBER(williams_state,bubbles)
|
||||
{
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0xc000);
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC1, 0xc000);
|
||||
|
||||
/* bubbles has a full 8-bit-wide CMOS */
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0xcc00, 0xcfff, write8_delegate(FUNC(williams_state::bubbles_cmos_w),this));
|
||||
@ -3072,25 +3072,25 @@ DRIVER_INIT_MEMBER(williams_state,bubbles)
|
||||
|
||||
DRIVER_INIT_MEMBER(williams_state,splat)
|
||||
{
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC02, 0xc000);
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC2, 0xc000);
|
||||
}
|
||||
|
||||
|
||||
DRIVER_INIT_MEMBER(williams_state,sinistar)
|
||||
{
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0x7400);
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC1, 0x7400);
|
||||
}
|
||||
|
||||
|
||||
DRIVER_INIT_MEMBER(williams_state,playball)
|
||||
{
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0xc000);
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC1, 0xc000);
|
||||
}
|
||||
|
||||
|
||||
DRIVER_INIT_MEMBER(blaster_state,blaster)
|
||||
{
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC02, 0x9700);
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC2, 0x9700);
|
||||
}
|
||||
|
||||
|
||||
@ -3098,7 +3098,7 @@ DRIVER_INIT_MEMBER(williams_state,spdball)
|
||||
{
|
||||
pia6821_device *pia_3 = machine().device<pia6821_device>("pia_3");
|
||||
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0xc000);
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC1, 0xc000);
|
||||
|
||||
/* add a third PIA */
|
||||
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc808, 0xc80b, read8_delegate(FUNC(pia6821_device::read), pia_3), write8_delegate(FUNC(pia6821_device::write), pia_3));
|
||||
@ -3113,21 +3113,21 @@ DRIVER_INIT_MEMBER(williams_state,spdball)
|
||||
|
||||
DRIVER_INIT_MEMBER(williams_state,alienar)
|
||||
{
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0xc000);
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC1, 0xc000);
|
||||
m_maincpu->space(AS_PROGRAM).nop_write(0xcbff, 0xcbff);
|
||||
}
|
||||
|
||||
|
||||
DRIVER_INIT_MEMBER(williams_state,alienaru)
|
||||
{
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0xc000);
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC1, 0xc000);
|
||||
m_maincpu->space(AS_PROGRAM).nop_write(0xcbff, 0xcbff);
|
||||
}
|
||||
|
||||
|
||||
DRIVER_INIT_MEMBER(williams_state,lottofun)
|
||||
{
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0xc000);
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC1, 0xc000);
|
||||
}
|
||||
|
||||
|
||||
@ -3140,28 +3140,28 @@ DRIVER_INIT_MEMBER(williams_state,lottofun)
|
||||
|
||||
DRIVER_INIT_MEMBER(williams2_state,mysticm)
|
||||
{
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC02, 0x9000);
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC2, 0x9000);
|
||||
CONFIGURE_TILEMAP(WILLIAMS_TILEMAP_MYSTICM);
|
||||
}
|
||||
|
||||
|
||||
DRIVER_INIT_MEMBER(williams2_state,tshoot)
|
||||
{
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC02, 0x9000);
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC2, 0x9000);
|
||||
CONFIGURE_TILEMAP(WILLIAMS_TILEMAP_TSHOOT);
|
||||
}
|
||||
|
||||
|
||||
DRIVER_INIT_MEMBER(williams2_state,inferno)
|
||||
{
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC02, 0x9000);
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC2, 0x9000);
|
||||
CONFIGURE_TILEMAP(WILLIAMS_TILEMAP_TSHOOT);
|
||||
}
|
||||
|
||||
|
||||
DRIVER_INIT_MEMBER(joust2_state,joust2)
|
||||
{
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC02, 0x9000);
|
||||
CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC2, 0x9000);
|
||||
CONFIGURE_TILEMAP(WILLIAMS_TILEMAP_JOUST2);
|
||||
}
|
||||
|
||||
|
@ -480,7 +480,7 @@ DRIVER_INIT_MEMBER( wmg_state, wmg )
|
||||
membank("bank5")->configure_entries(0, 8, &cpu[0x2d000], 0x10000); // Code
|
||||
membank("bank6")->configure_entries(0, 8, &snd[0x10000], 0x1000); // Sound
|
||||
membank("bank7")->configure_entries(1, 4, &cpu[0x78000], 0x1000); // Defender roms
|
||||
m_blitter_config = WILLIAMS_BLITTER_SC01;
|
||||
m_blitter_config = WILLIAMS_BLITTER_SC1;
|
||||
m_blitter_clip_address = 0xc000;
|
||||
}
|
||||
|
||||
|
@ -227,11 +227,11 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER(joust2_pia_3_cb1_w);
|
||||
};
|
||||
|
||||
/*----------- defined in video/williams.c -----------*/
|
||||
/*----------- defined in video/williams.cpp -----------*/
|
||||
|
||||
#define WILLIAMS_BLITTER_NONE 0 /* no blitter */
|
||||
#define WILLIAMS_BLITTER_SC01 1 /* SC-01 blitter */
|
||||
#define WILLIAMS_BLITTER_SC02 2 /* SC-02 "fixed" blitter */
|
||||
#define WILLIAMS_BLITTER_SC1 1 /* Special Chip 1 blitter */
|
||||
#define WILLIAMS_BLITTER_SC2 2 /* Special Chip 2 "bugfixed" blitter */
|
||||
|
||||
#define WILLIAMS_TILEMAP_MYSTICM 0 /* IC79 is a 74LS85 comparator */
|
||||
#define WILLIAMS_TILEMAP_TSHOOT 1 /* IC79 is a 74LS157 selector jumpered to be enabled */
|
||||
|
@ -14,13 +14,14 @@
|
||||
Defender and Stargate simply draw graphics to the framebuffer directly
|
||||
with no extra intervention.
|
||||
|
||||
Later games added a pair of "special chips" (SC-01) to the board which
|
||||
Later games added a pair of "special chips" (Special Chip 1, and Special
|
||||
Chip 2, abbreviated for clarity as SC1 and SC2) to the board which
|
||||
are special purpose blitters. During their operation they HALT the
|
||||
main CPU so that they can control the busses. The operation of the
|
||||
chips is described in detail below.
|
||||
|
||||
The original SC-01 had a bug that forced an XOR of the width and height
|
||||
values with 4. This was fixed in the SC-02, which was used on several
|
||||
The original SC1 had a bug that forced an XOR of the width and height
|
||||
values with 4. This was fixed in the SC2, which was used on several
|
||||
later games.
|
||||
|
||||
Beginning with Sinistar, additional video tweaks were added.
|
||||
@ -57,7 +58,7 @@
|
||||
were added to the ROM boards of the later games. Splat!, Blaster, Mystic
|
||||
Marathon and Joust 2 used Special Chip 2s. The only difference that I've
|
||||
seen is that SC1s have a small bug. When you tell the SC1 the size of
|
||||
the data to move, you have to exclusive-or the width and height with 2.
|
||||
the data to move, you have to exclusive-or the width and height with 4.
|
||||
The SC2s eliminate this bug.
|
||||
|
||||
The blitters were accessed at memory location $CA00-CA06.
|
||||
@ -91,7 +92,61 @@
|
||||
Bits 6 and 7 only blit every other pixel of the image. Bit 6 says even only,
|
||||
while bit 7 says odd only.
|
||||
|
||||
***************************************************************************/
|
||||
******************************************************************************
|
||||
Special Chip 1 and 2 aka VLSI VL2001/2001A Pinout:
|
||||
_______ _______
|
||||
_|* \__/ |_
|
||||
/E <- |_|1 40|_| ?-> /WINH
|
||||
_| |_
|
||||
TCF <- |_|2 39|_| -> A15
|
||||
_| |_
|
||||
/HTCF <-? |_|3 38|_| -> A14
|
||||
_| |_
|
||||
D7 <> |_|4 37|_| -> A13
|
||||
_| |_
|
||||
/HALT -> |_|5 36|_| <- /RESET
|
||||
_| |_
|
||||
/BABS -> |_|6 35|_| == /4MHZ
|
||||
_| |_
|
||||
D6 <> |_|7 34|_| -> A12
|
||||
_| |_
|
||||
D5 <> |_|8 33|_| -> A11
|
||||
_| |_
|
||||
D4 <> |_|9 5 V 32|_| -> A10
|
||||
_| 4 T |_
|
||||
(not bonded, pcb GND) N/C |_|10 1 V I 31|_| -> A9
|
||||
_| 0 L |_
|
||||
D3 <> |_|11 - 2 30|_| -> A8
|
||||
_| 0 0 8 |_
|
||||
D2 <> |_|12 9 0 2 29|_| -- VCC(+5v)
|
||||
_| 8 1 2 |_
|
||||
D1 <> |_|13 6 0 28|_| <> A0
|
||||
_| 6 |_
|
||||
U/L -> |_|14 27|_| <> A1
|
||||
_| |_
|
||||
(not bonded, pcb +12v) N/C |_|15 26|_| <> A2
|
||||
_| |_
|
||||
GND -- |_|16 25|_| <- /CS
|
||||
_| |_
|
||||
D0 <> |_|17 24|_| N/C (not bonded, pcb GND)
|
||||
_| |_
|
||||
R/W <>? |_|18 23|_| -> A7
|
||||
_| |_
|
||||
A3 <- |_|19 22|_| -> A6
|
||||
_| |_
|
||||
A4 <- |_|20 21|_| -> A5
|
||||
|__________________|
|
||||
|
||||
The full silkscreen markings of SC1 (under the "Special Chip 1" sticker, if it is present) are:
|
||||
VTI 8220
|
||||
VL2001
|
||||
5410-09866
|
||||
|
||||
The full silkscreen markings of SC2 (under the "Special Chip 2" sticker, if it is present) are:
|
||||
<VTi Logo> 242
|
||||
VL2001A
|
||||
5410-09958
|
||||
******************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "video/resnet.h"
|
||||
@ -458,7 +513,7 @@ void williams_state::blitter_init(int blitter_config, const uint8_t *remap_prom)
|
||||
m_blitter_window_enable = 0;
|
||||
|
||||
/* switch off the video config */
|
||||
m_blitter_xor = (blitter_config == WILLIAMS_BLITTER_SC01) ? 4 : 0;
|
||||
m_blitter_xor = (blitter_config == WILLIAMS_BLITTER_SC1) ? 4 : 0;
|
||||
|
||||
/* create the remap table; if no PROM, make an identity remap table */
|
||||
m_blitter_remap_lookup = std::make_unique<uint8_t[]>(256 * 256);
|
||||
|
Loading…
Reference in New Issue
Block a user