📄 williams.c
字号:
/***************************************************************************
Changes:
Mar 12 98 LBO
* Added Sinistar speech samples provided by Howie Cohen
* Fixed clipping circuit with help from Sean Riddle and Pat Lawrence
Mar 22 98 ASG
* Fixed Sinistar head drawing, did another major cleanup
* Rewrote the blitter routines
* Fixed interrupt timing finally!!!
Do to: Mystic Marathon
Not sure of the board: Turkey shoot, Joust 2
Note: the visible area (according to the service mode) seems to be
{ 6, 297-1, 7, 246-1 },
however I use
{ 6, 298-1, 7, 247-1 },
because the DOS port doesn't support well screen widths which are not multiple of 4.
------- Blaster Bubbles Joust Robotron Sinistar Splat Stargate -------------
0000-8FFF ROM (for Blaster, 0000-3FFF is a bank of 12 ROMs)
0000-97FF Video RAM Bank switched with ROM (96FF for Blaster)
9800-BFFF RAM
0xBB00 Blaster only, Color 0 for each line (256 entry)
0xBC00 Blaster only, Color 0 flags, latch color only if bit 0 = 1 (256 entry)
Do something else with the bit 1, I do not know what
C000-CFFF I/O
D000-FFFF ROM
c000-C00F color_registers (16 bytes of BBGGGRRR)
c804 widget_pia_dataa (widget = I/O board)
c805 widget_pia_ctrla
c806 widget_pia_datab
c807 widget_pia_ctrlb (CB2 select between player 1 and player 2
controls if Table or Joust)
bits 5-3 = 110 = player 2
bits 5-3 = 111 = player 1
c80c rom_pia_dataa
c80d rom_pia_ctrla
c80e rom_pia_datab
bit 0 \
bit 1 |
bit 2 |-6 bits to sound board
bit 3 |
bit 4 |
bit 5 /
bit 6 \
bit 7 /Plus CA2 and CB2 = 4 bits to drive the LED 7 segment
c80f rom_pia_ctrlb
C900 rom_enable_scr_ctrl Switch between video ram and rom at 0000-97FF
C940 Blaster only: Select bank in the color Prom for color remap
C980 Blaster only: Select which ROM is at 0000-3FFF
C9C0 Blaster only: bit 0 = enable the color 0 changing each lines
bit 1 = erase back each frame
***** Blitter ****** (Stargate and Defender do not have blitter)
CA00 start_blitter Each bits has a function
1000 0000 Do not process half the byte 4-7
0100 0000 Do not process half the byte 0-3
0010 0000 Shift the shape one pixel right (to display a shape on an odd pixel)
0001 0000 Remap, if shape != 0 then pixel = mask
0000 1000 Source 1 = take source 0 = take Mask only
0000 0100 ?
0000 0010 Transparent
0000 0001
CA01 blitter_mask Not really a mask, more a remap color, see Blitter
CA02 blitter_source hi
CA03 blitter_source lo
CA04 blitter_dest hi
CA05 blitter_dest lo
CA06 blitter_w_h H Do a XOR with 4 to have the real value (Except Splat)
CA07 blitter_w_h W Do a XOR with 4 to have the real value (Except Splat)
CB00 6 bits of the video counters bits 2-7
CBFF watchdog
CC00-CFFF 1K X 4 CMOS ram battery backed up (8 bits on Sinistar)
------------------ Robotron -------------------
c804 widget_pia_dataa (widget = I/O board)
bit 0 Move Up
bit 1 Move Down
bit 2 Move Left
bit 3 Move Right
bit 4 1 Player
bit 5 2 Players
bit 6 Fire Up
bit 7 Fire Down
c806 widget_pia_datab
bit 0 Fire Left
bit 1 Fire Right
bit 2
bit 3
bit 4
bit 5
bit 6
bit 7
c80c rom_pia_dataa
bit 0 Auto Up
bit 1 Advance
bit 2 Right Coin
bit 3 High Score Reset
bit 4 Left Coin
bit 5 Center Coin
bit 6 Slam Door Tilt
bit 7 Hand Shake from sound board
------------------ Joust -------------------
c804 widget_pia_dataa (widget = I/O board)
bit 0 Move Left player 1/2
bit 1 Move Right player 1/2
bit 2 Flap player 1/2
bit 3
bit 4 2 Player
bit 5 1 Players
bit 6
bit 7
c806 widget_pia_datab
bit 0
bit 1
bit 2
bit 3
bit 4
bit 5
bit 6
bit 7
c80c rom_pia_dataa
bit 0 Auto Up
bit 1 Advance
bit 2 Right Coin
bit 3 High Score Reset
bit 4 Left Coin
bit 5 Center Coin
bit 6 Slam Door Tilt
bit 7 Hand Shake from sound board
------------------ Stargate -------------------
c804 widget_pia_dataa (widget = I/O board)
bit 0 Fire
bit 1 Thrust
bit 2 Smart Bomb
bit 3 HyperSpace
bit 4 2 Players
bit 5 1 Player
bit 6 Reverse
bit 7 Down
c806 widget_pia_datab
bit 0 Up
bit 1 Inviso
bit 2
bit 3
bit 4
bit 5
bit 6
bit 7 0 = Upright 1 = Table
c80c rom_pia_dataa
bit 0 Auto Up
bit 1 Advance
bit 2 Right Coin (High Score Reset in schematics)
bit 3 High Score Reset (Left Coin in schematics)
bit 4 Left Coin (Center Coin in schematics)
bit 5 Center Coin (Right Coin in schematics)
bit 6 Slam Door Tilt
bit 7 Hand Shake from sound board
------------------ Splat -------------------
c804 widget_pia_dataa (widget = I/O board)
bit 0 Walk Up
bit 1 Walk Down
bit 2 Walk Left
bit 3 Walk Right
bit 4 1 Player
bit 5 2 Players
bit 6 Throw Up
bit 7 Throw Down
c806 widget_pia_datab
bit 0 Throw Left
bit 1 Throw Right
bit 2
bit 3
bit 4
bit 5
bit 6
bit 7
c80c rom_pia_dataa
bit 0 Auto Up
bit 1 Advance
bit 2 Right Coin
bit 3 High Score Reset
bit 4 Left Coin
bit 5 Center Coin
bit 6 Slam Door Tilt
bit 7 Hand Shake from sound board
------------------ Blaster -------------------
c804 widget_pia_dataa (widget = I/O board)
bit 0 up/down switch a
bit 1 up/down switch b
bit 2 up/down switch c
bit 3 up/down direction
bit 4 left/right switch a
bit 5 left/right switch b
bit 6 left/right switch c
bit 7 left/right direction
c806 widget_pia_datab
bit 0 Thrust (Panel)
bit 1 Blast
bit 2 Thrust (Joystick)
bit 3
bit 4 1 Player
bit 5 2 Player
bit 6
bit 7
c80c rom_pia_dataa
bit 0 Auto Up
bit 1 Advance
bit 2 Right Coin
bit 3 High Score Reset
bit 4 Left Coin
bit 5 Center Coin
bit 6 Slam Door Tilt
bit 7 Hand Shake from sound board
------------------------- Sinistar -------------------------------------
c804 widget_pia_dataa (widget = I/O board)
bit 0 up/down switch a
bit 1 up/down switch b
bit 2 up/down switch c
bit 3 up/down direction
bit 4 left/right switch a
bit 5 left/right switch b
bit 6 left/right switch c
bit 7 left/right direction
c806 widget_pia_datab
bit 0 Fire
bit 1 Bomb
bit 2
bit 3
bit 4 1 Player
bit 5 2 Player
bit 6
bit 7
c80c rom_pia_dataa
bit 0 Auto Up
bit 1 Advance
bit 2 Right Coin
bit 3 High Score Reset
bit 4 Left Coin
bit 5 Center Coin
bit 6 Slam Door Tilt
bit 7 Hand Shake from sound board
------------------ Bubbles -------------------
c804 widget_pia_dataa (widget = I/O board)
bit 0 Up
bit 1 Down
bit 2 Left
bit 3 Right
bit 4 2 Players
bit 5 1 Player
bit 6
bit 7
c806 widget_pia_datab
bit 0
bit 1
bit 2
bit 3
bit 4
bit 5
bit 6
bit 7
c80c rom_pia_dataa
bit 0 Auto Up
bit 1 Advance
bit 2 Right Coin (High Score Reset in schematics)
bit 3 High Score Reset (Left Coin in schematics)
bit 4 Left Coin (Center Coin in schematics)
bit 5 Center Coin (Right Coin in schematics)
bit 6 Slam Door Tilt
bit 7 Hand Shake from sound board
------------------------- Defender -------------------------------------
0000-9800 Video RAM
C000-CFFF ROM (4 banks) + I/O
d000-ffff ROM
c000-c00f color_registers (16 bytes of BBGGGRRR)
C3FC WatchDog
C400-C4FF CMOS ram battery backed up
C800 6 bits of the video counters bits 2-7
cc00 pia1_dataa (widget = I/O board)
bit 0 Auto Up
bit 1 Advance
bit 2 Right Coin
bit 3 High Score Reset
bit 4 Left Coin
bit 5 Center Coin
bit 6
bit 7
cc01 pia1_ctrla
cc02 pia1_datab
bit 0 \
bit 1 |
bit 2 |-6 bits to sound board
bit 3 |
bit 4 |
bit 5 /
bit 6 \
bit 7 /Plus CA2 and CB2 = 4 bits to drive the LED 7 segment
cc03 pia1_ctrlb (CB2 select between player 1 and player 2 controls if Table)
cc04 pia2_dataa
bit 0 Fire
bit 1 Thrust
bit 2 Smart Bomb
bit 3 HyperSpace
bit 4 2 Players
bit 5 1 Player
bit 6 Reverse
bit 7 Down
cc05 pia2_ctrla
cc06 pia2_datab
bit 0 Up
bit 1
bit 2
bit 3
bit 4
bit 5
bit 6
bit 7
cc07 pia2_ctrlb
Control the IRQ
d000 Select bank (c000-cfff)
0 = I/O
1 = BANK 1
2 = BANK 2
3 = BANK 3
7 = BANK 4
***************************************************************************/
#include "driver.h"
#include "machine/6821pia.h"
#include "vidhrdw/generic.h"
/**** from machine/williams.h ****/
extern unsigned char *williams_bank_base;
extern unsigned char *williams_video_counter;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -