added files

This commit is contained in:
Dillon Depeel
2023-05-15 12:46:46 -07:00
parent 3f8df40ade
commit 5a1cdadc64
9 changed files with 5465 additions and 0 deletions

626
PACMAN.ASM Normal file
View File

@@ -0,0 +1,626 @@
;************************************
;* *
;* PAC-MAN *
;* *
;* Developed for Atari Inc. by *
;* Roklan Corp. This Information *
;* is confidential and is not for *
;* sale or distribution. *
;* *
;* *
;* *
;* 10/03/82 *
;* *
;* DISK VERSION *
;* *
;* REVISION 3.0 *
;* *
;************************************
;
INCLUDE D2:SYSTEXT.ASM
;
LIST I
;
;******* ZERO PAGE VARIABLES ******
;
ORG $0018
;
DLICNT DS 1 ;DISPLAY LIST INT. COUNT
OPTION DS 1 ;OPTION MODE FLAG
NUMPLY DS 1 ;NUMBER OF PLAYERS
DIFOPT DS 1 ;DIFFICULTY OPTION
RSTRTF DS 1 ;RESTART FLAG
ATCLOK DS 1 ;ATTRACT COUNTDOWN CLOCK
ATTIMR DS 1 ;ATTRACT MODE TIMER
ATSEQU DS 1 ;ATTRACT MODE SEQUENCE #
;
GMOVRF DS 1 ;GAME OVER FLAG
READYF DS 1 ;READY FLAG
INTROF DS 1 ;INTRO FLAG
SWAPPF DS 1 ;SWAP PLAYER FLAG
RESETF DS 1 ;RESET FLAG
RESETT DS 1 ;RESET TIMER
RRFLAG DS 1 ;RERACK FLAG
RRSEQU DS 1 ;RERACK SEQUENCE #
RRTIMR DS 1 ;RERACK TIMER
RRFLCT DS 1 ;RERACK FLASH COUNT
TEMLOC DS 1 ;TEMPORARY STORAGE
PLYNUM DS 1 ;PLAYER # 0=1 1=2
XPACP1 DS 1 ;EXTRA PACMAN PLAYER 1
XPACP2 DS 1 ;EXTRA PACMAN PLAYER 2
BPACP1 DS 1 ;BONUS PACMAN PLAYER 1
BPACP2 DS 1 ;BONUS PACMAN PLAYER 2
MAZCT1 DS 1 ;MAZE COUNT PLAYER 1
MAZCT2 DS 1 ;MAZE COUNT PLAYER 2
BIGDT1 DS 1 ;BIG DOT STATUS #1
BIGDT2 DS 1 ;BIG DOT STATUS #2
DTCTL1 DS 1 ;DOTS EATEN CTR LSB #1
DTCTL2 DS 1 ;DOTS EATEN CTR LSB #2
DTCTM1 DS 1 ;DOTS EATEN CTR MSB #1
DTCTM2 DS 1 ;DOTS EATEN CTR MSB #2
SCNSC1 DS 2 ;SCREEN SCORE 1 ADDRESS
SCNSC2 DS 2 ;SCREEN SCORE 2 ADDRESS
PIXGET DS 2 ;P/M PIX GET ADDRESS
PIXPUT DS 2 ;P/M PIX PUT ADDRESS
PACCLR DS 1 ;ATTRACT PACMAN COLOR
;
ORG $0043
;
FRUTP1 DS 1 ;FRUIT COUNTER #1
FRUTP2 DS 1 ;FRUIT COUNTER #2
BCOUNT DS 1 ;BOUNCE TIMER COUNT
SAVCNS DS 1 ;SAVE CONSOL DATA
TUNLOC DS 2 ;USED FOR TUNNEL LOGIC
;
ORG $005A
M1DELY DS 1 ;MONSTER 1 DELAY
M2DELY DS 1 ;MONSTER 2 DELAY
M3DELY DS 1 ;MONSTER 3 DELAY
M4DELY DS 1 ;MONSTER 4 DELAY
ACOLR1 DS 1 ;ATTRACT COLOR 1 - $3A
ACOLR2 DS 1 ;ATTRACT COLOR 2 - $44
ACOLR3 DS 1 ;ATTRACT COLOR 3 - $2A
ACOLR4 DS 1 ;ATTRACT COLOR 4 - $DA
INTCNT DS 1 ;INTERMISSION COUNTER
INTCLK DS 1 ;INTERMISSION CLOCK
ORG $0080
;
PACSCN DS 2 ;PACMAN SCREEN MEM ADDR
PACBYT DS 1 ;PACMAN BYTE COUNTER
PVSAVE DS 1 ;PACMAN VPOS SAVE
PHSAVE DS 1 ;PACMAN HPOS SAVE
M1VPOS DS 1 ;MONSTER 1 VERTICAL POSIT
M2VPOS DS 1 ;MONSTER 2 VERTICAL POSIT
M3VPOS DS 1 ;MONSTER 3 VERTICAL POSIT
M4VPOS DS 1 ;MONSTER 4 VERTICAL POSIT
PMVPOS DS 1 ;PACMAN VERTICAL POSITION
M1HPOS DS 1 ;MONSTER 1 HORIZ POSITION
M2HPOS DS 1 ;MONSTER 2 HORIZ POSITION
M3HPOS DS 1 ;MONSTER 3 HORIZ POSITION
M4HPOS DS 1 ;MONSTER 4 HORIZ POSITION
PMHPOS DS 1 ;PACMAN HORIZONTAL POSIT
M1DIRT DS 1 ;MONSTER 1 DIRECTION
M2DIRT DS 1 ;MONSTER 2 DIRECTION
M3DIRT DS 1 ;MONSTER 3 DIRECTION
M4DIRT DS 1 ;MONSTER 4 DIRECTION
PMODIR DS 1 ;PACMAN OLD DIRECTION
SCOREX DS 6 ;PLAYER SCORE FOR TEXT
CARRYB DS 1 ;CARRY BIT FOR ABOVE
PAUSEF DS 1 ;PAUSE FLAG
WHINEY DS 1 ;CHASE WHINE DELTA
FRUTMR DS 2 ;FRUIT TIMER (10 SECS)
FRUFLG DS 1 ;FRUIT DISPLAY FLAG
FRUCLR DS 1 ;FRUIT COLOR
FRSCRF DS 1 ;FRUIT SCORE FLAG
FRSCRT DS 1 ;FRUIT SCORE TIMER
NOTCNT DS 1 ;NOTE COUNT FOR TUNES
VSAVER DS 1 ;VERTICAL POSIT SAVE
HSAVER DS 1 ;HORIZONTAL POSIT SAVE
PACMAP DS 1 ;PACMAN VERT MAP COUNTER
PACCNT DS 1 ;PACMAN MOTION COUNT
PACADV DS 1 ;PACMAN ADVANCE-TURNING
PACDLY DS 1 ;PACMAN DELAY-EATING DOTS
PMSTAT DS 1 ;PACMAN STATUS
PMSEQU DS 1 ;PACMAN SEQUENCE (MOUTH)
PMNDIR DS 1 ;PACMAN NEW DIRECTION
CHASET DS 1 ;CHASE TIMER
MSTILL DS 1 ;MONSTERS STILL FLAG
MSKIRT DS 1 ;MONSTER SKIRT FLAG
M1SPSQ DS 1 ;MONSTER 1 SPEED SEQUENCE
M2SPSQ DS 1 ;MONSTER 2 SPEED SEQUENCE
M3SPSQ DS 1 ;MONSTER 3 SPEED SEQUENCE
M4SPSQ DS 1 ;MONSTER 4 SPEED SEQUENCE
PMSPSQ DS 1 ;PACMAN SPEED SEQUENCE
M1SPCT DS 1 ;MONSTER 1 SPEED COUNT
M2SPCT DS 1 ;MONSTER 2 SPEED COUNT
M3SPCT DS 1 ;MONSTER 3 SPEED COUNT
M4SPCT DS 1 ;MONSTER 4 SPEED COUNT
PMSPCT DS 1 ;PACMAN SPEED COUNT
M1PIDX DS 1 ;MONSTER 1 PATTERN INDEX
M2PIDX DS 1 ;MONSTER 2 PATTERN INDEX
M3PIDX DS 1 ;MONSTER 3 PATTERN INDEX
M4PIDX DS 1 ;MONSTER 4 PATTERN INDEX
M1PCNT DS 1 ;MONSTER 1 PATTERN COUNT
M2PCNT DS 1 ;MONSTER 2 PATTERN COUNT
M3PCNT DS 1 ;MONSTER 3 PATTERN COUNT
M4PCNT DS 1 ;MONSTER 4 PATTERN COUNT
M1THPS DS 1 ;MONSTER 1 TARGET HPOS
M2THPS DS 1 ;MONSTER 2 TARGET HPOS
M3THPS DS 1 ;MONSTER 3 TARGET HPOS
M4THPS DS 1 ;MONSTER 4 TARGET HPOS
M1TVPS DS 1 ;MONSTER 1 TARGET VPOS
M2TVPS DS 1 ;MONSTER 2 TARGET VPOS
M3TVPS DS 1 ;MONSTER 3 TARGET VPOS
M4TVPS DS 1 ;MONSTER 4 TARGET VPOS
M1TIMR DS 1 ;MONSTER 1 TIMER
M2TIMR DS 1 ;MONSTER 2 TIMER
M3TIMR DS 1 ;MONSTER 3 TIMER
M4TIMR DS 1 ;MONSTER 4 TIMER
M1STAT DS 1 ;MONSTER 1 STATUS
M2STAT DS 1 ;MONSTER 2 STATUS
M3STAT DS 1 ;MONSTER 3 STATUS
M4STAT DS 1 ;MONSTER 4 STATUS
M1SSEQ DS 1 ;MONSTER 1 START SEQUENCE
M2SSEQ DS 1 ;MONSTER 2 START SEQUENCE
M3SSEQ DS 1 ;MONSTER 3 START SEQUENCE
M4SSEQ DS 1 ;MONSTER 4 START SEQUENCE
M1VDIR DS 1 ;MONSTER 1 VERT CHOICE
M2VDIR DS 1 ;MONSTER 2 VERT CHOICE
M3VDIR DS 1 ;MONSTER 3 VERT CHOICE
M4VDIR DS 1 ;MONSTER 4 VERT CHOICE
M1HDIR DS 1 ;MONSTER 1 HORZ CHOICE
M2HDIR DS 1 ;MONSTER 2 HORZ CHOICE
M3HDIR DS 1 ;MONSTER 3 HORZ CHOICE
M4HDIR DS 1 ;MONSTER 4 HORZ CHOICE
VCHASF DS 1 ;CHASE FREQ
VCHASD DS 1 ;DIRECTION 1=INC 2=DEC
VCHASS DS 1 ;CHASE SOUND START
VFLITF DS 1 ;FLIGHT FREQ
VFLITD DS 1 ;DIRECTION SAME
VFLITV DS 1 ;FLIGHT VOLUME
VFLITS DS 1 ;FLIGHT SOUND START
VFREEZ DS 1 ;FREEZE FLAG
VGLPC1 DS 1 ;GULP COUNT1
VGLPC2 DS 1 ;GULP COUNT2
GULPED DS 1 ;LAST MONSTER EATEN
GLPCNT DS 1 ;GULP COUNT
FIZZLE DS 1 ;FIZZLE FLAG 1=FIZL
FIZPTR DS 1 ;FIZZLE ADDR POINTER
FIZTIM DS 1 ;FIZZLE TIMER
VFIZST DS 1 ;FIZZLE STATUS
VFIZSQ DS 1 ;FIZZLE SEQUENCE #
VFIZBS DS 1 ;FIZZLE FREQ BASE
VFIZFQ DS 1 ;FIZZLE CURRENT FREQ
VFIZCT DS 1 ;FIZZLE COUNTER
TWEETR DS 1 ;TWEET SOUND FLAG
TWEETF DS 1 ;TWEET SOUND FREQ
EATERF DS 1 ;EAT DOT SOUND FLAG
EATERC DS 1 ;EAT DOT SOUND COUNT
EATERT DS 1 ;EAT DOT TOGGLE
GOBBLD DS 1 ;GOBBLE DIRCTN (FRUITS)
GOBBLF DS 1 ;GOBBLE FREQUENCY
BLINKT DS 1 ;BLINK TIMER
FLSHUP DS 1 ;FLASH 1UP 2UP TIMER
FLASHT DS 1 ;FLASH TIMER
FLASHC DS 1 ;FLASH COUNT
FLITMR DS 1 ;FLIGHT TIMER
TUNMSK DS 1 ;TUNNEL BIT MASK
TUNCNT DS 1 ;TUNNEL ITERATION COUNT
;
EJECT
;
ORG $0600
;
PACBUF DS 16 ; PACMAN IMAGE BUFFER
MONBUF DS 16 ; MONSTER IMAGE BUFFER
;
INTRDL EQU $0680;INTERMISSION DL
INTMOD EQU $06C0;INTERMISSION MODE
INTSEQ EQU $06C1;INTERMISSION SEQ
;
;
;**** SYSTEM VARIABLES ****
;
BDELAY EQU 1 ;BOUNCE DELAY
FDELAY EQU $FF;FRUIT TIMER VALUE
ADELAY EQU $30;ATTRACT TIMER DELAY
;
GAMMEM EQU $0800; GAME MEMORY
;
PACMAZ EQU GAMMEM+$0C00
P1SAVE EQU GAMMEM+$1000
P2SAVE EQU GAMMEM+$1400
OPTCHR EQU GAMMEM+$1800
OPTSCN EQU GAMMEM+$1C00
PMADDR EQU GAMMEM+$2000
TEXT EQU GAMMEM+$2000
PATSCN EQU GAMMEM+$2800
AMCSET EQU GAMMEM+$2C00
;
EJECT
;
ORG $3FFD
;
JMP INIT
;
INCLUDE D2:PACDAT1.ASM
;
EJECT
;
INIT LDX #9
INITL1 LDA HISCTX,X
STA TEXT+$0F,X
DEX
BPL INITL1
LDA #0
LDX #$27
INITL2 STA DLICNT,X
DEX
BPL INITL2
LDX #$7F
INIPZL STA $80,X
DEX
BPL INIPZL
;
INC OPTION
LDX RTCLOK+2
DEX
STX ATCLOK
;
; RELOCATE OPTION CHAR SET
;
LDX #0
OCLOOP LDA PACTTL,X
STA OPTCHR+8,X
INX
BNE OCLOOP
;
; BUILD ATTRACT MODE CHAR SET
;
ANCHRL LDA CHRORG,X
STA AMCSET,X
LDA CHRORG+$100,X
STA AMCSET+$100,X
INX
BNE ANCHRL
LDX #$1F
ANCDTL LDA ATCHRS,X
STA AMCSET+$18,X
DEX
BPL ANCDTL
;
; ENABLE KEYSCAN & SET VBI VECTOR
;
PACINI SEI
LDA POKMSK
ORA #$40
STA POKMSK
STA IRQEN
CLI
LDY #LOW VBLANK
LDX #HIGH VBLANK
LDA #7
STA SKCTL
JSR SETVBV;GO SET VBLANK VECTOR
LDA #$C0;ENABLE DLI AND VBI
STA NMIEN
LDA #$3E
STA SDMCTL;ENABLE P/M GRAPHICS
LDA #$3
STA GRACTL
LDA #HIGH PMADDR
STA PMBASE
LDA #LOW INIT
STA DOSVEC
LDA #HIGH INIT
STA DOSVEC+1
LDA #LOW INITAD
STA DOSINI
LDA #HIGH INITAD
STA DOSINI+1
;
REINIT LDA #0;NEW GAME VECTOR
LDX #$1F
REINLP STA GMOVRF,X
DEX
BPL REINLP
TXS
JSR CLRAUD
;
; NOW INITIALIZE PLAYER SCREENS
;
JSR P1INIT
JSR SAVEP1
JSR SAVEP2
;
LDA OPTION
BNE LOOP
;
PACGAM LDA RTCLOK+2
PACGML CMP RTCLOK+2
BEQ PACGML
LDA #LOW DLIST
STA SDLSTL
STA DLISTL
LDA #HIGH DLIST
STA SDLSTH
STA DLISTH
LDA #LOW DLIV; DLI VECTOR
STA VDSLST
LDA #HIGH DLIV
STA VDSLST+1
LDA #$11
STA GPRIOR;LET MISSILES USE COLPF3
SETPAC JSR SETUP
JSR NEWGAM
LDA NUMPLY
BEQ P1SCIN
JSR SET2PL
JMP GODOIT
P1SCIN JSR SET1PL
GODOIT LDA #2
STA RSTRTF
;
LOOP LDA RRSEQU
CMP #3
BNE GOLOOP
JSR INTMIS
JSR SETUP
INC RRSEQU
GOLOOP LDX #3
LOOPLP LDA ACOLOR,X
EOR COLRSH;ATTRACT COLORS THAT ARE
AND DRKMSK;SWITCHED WITH DLI'S
STA ACOLR1,X
DEX
BPL LOOPLP
LDA OPTION
BNE PCTRIG
LDA KEYDEL
BNE IGNORK
LDA CH; TEST FOR SPACE BAR PAUSE
CMP #$21
BNE IGNORK
LDA PAUSEF
BEQ FLIPON
LDA #0
BEQ STFLIP
FLIPON LDA #1
STFLIP STA PAUSEF
NOFLIP LDA #$FF
STA CH
IGNORK LDA GMOVRF
BEQ GAMCNS
LDA ATTIMR;IF GAME OVER, TIME OUT
BNE PCTRIG;AND GO TO OPTION SCREEN
LDA #4
BNE PCEXT1
PCTRIG LDA #$FF
STA CH
LDA STRIG0
BEQ CSTART
LDA STRIG1;TEST TRIGGER START
BEQ CSTART
GAMCNS LDA CONSOL
CMP #7; NO BUTTONS PRESSED
BEQ LOOP
CNSSWT STA SAVCNS
LDX #BDELAY
STX BCOUNT
CLOOP1 ORA CONSOL
LDX BCOUNT;DEBOUNCE LOGIC
BNE CLOOP1
CMP SAVCNS
BNE GAMCNS
CLOOP2 CMP CONSOL
BEQ CLOOP2
LDA SAVCNS
CMP #6
BEQ CSTART
LDX ATSEQU
BEQ CPROPT
LDA #0
STA ATSEQU
LDA #4
BNE PCEXT1
CPROPT LDX OPTION;IF OPTION SCREEN
CPX #3; THEN CHANGE PARAMS
BCC PCEXIT
PRESSW CMP #3
BEQ COPTON
CMP #5
BEQ CSELEC
JMP LOOP
CSTART LDA #0
STA GMOVRF;START FUNCTION-NEW GAME
STA OPTION
STA ATSEQU
LDA #1
STA RSTRTF
JMP REINIT
CSELEC LDA NUMPLY
BNE PCNSE1;PROCESS SELECT CHANGES
LDA #1
BNE PCNSE2
PCNSE1 LDA #0
PCNSE2 STA NUMPLY
PCEXIT LDA #3
PCEXT1 STA OPTION
STA ATRACT
LDA #7
STA ATCLOK
JMP LOOP
COPTON LDA DIFOPT
CMP #2
BCS PCNOP1;PROCESS OPTION CHANGES
INC DIFOPT
BNE PCEXIT
PCNOP1 CMP #$0C
BEQ PCNOP2
INC DIFOPT
INC DIFOPT
BNE PCEXIT
PCNOP2 LDA #0
STA DIFOPT
BEQ PCEXIT
;
; DISPLAY LIST INTERRUPT VECTOR
;
DLIV PHA
TXA
PHA
LDX DLICNT;DLI COUNT
BNE DLI2ND
LDA #HIGH PACCHR
STA WSYNC
STA CHBASE
BNE DLIXIT
DLI2ND CPX #1
BNE DLI3RD
LDA ACOLR4;-$DA PLAYER 1-2 MSG
LDX ACOLR1;-$3A LT ORANGE COLOR
STA WSYNC
STA COLPF1
STX COLPF2
BNE DLIXIT
DLI3RD CPX #2
BNE DLI4TH
LDA FRUCLR; FRUIT COLOR
EOR COLRSH
AND DRKMSK
STA WSYNC
STA COLPF1
BNE DLIXIT
DLI4TH CPX #3
BNE DLI5TH
LDA ACOLR2
STA WSYNC
STA COLPF1
BNE DLIXIT
DLI5TH CPX #4
BNE LSTDLI
LDA ACOLR3;YELLOW COLOR
LDX ACOLR4
STA WSYNC
STX COLPF0
STA COLPF3
BNE DLIXIT
LSTDLI LDX #3
LDA #0
DLICLP STA COLPM0,X
DEX
BPL DLICLP
STA COLPF3
DLIXIT INC DLICNT
PLA
TAX
PLA
RTI
;
; DLI VECTOR FOR OPT & TITLE SCREENS
;
OPDLIV PHA
TXA
PHA
TYA
PHA
LDX DLICNT
BNE OPDLI1
LDY ACOLR2
LDA ACOLR1
LDX #HIGH OPTCHR
STA WSYNC
STX CHBASE
STA COLPF2
STY COLPF1
JMP OPDLIX
OPDLI1 LDA OCINDX,X
STA WSYNC
STA CHBASE
OPDLIX INC DLICNT
PLA
TAY
PLA
TAX
PLA
RTI
;
; VERTICAL BLANK INTERRUPT VECTOR
;
VBLANK LDA #0
STA DLICNT
DEC BCOUNT
JSR VBSUBS
LDA ATSEQU
BNE VBEXIT
LDA VFREEZ
BNE VBEXIT
JSR TUNNEL
VBEXIT JMP XITVBV; EXIT VECTOR
;
OPTTTL LDA #0
LDX #7
CHRDWR STA HPOSP0,X
STA AUDF1,X
DEX
BPL CHRDWR
LDA #LOW ODLIST
STA SDLSTL
STA DLISTL
LDA #HIGH ODLIST
STA SDLSTH
STA DLISTH
LDA #LOW OPDLIV
STA VDSLST
LDA #HIGH OPDLIV
STA VDSLST+1
OCOLRS LDY #3
OCLRLP LDA OCOLOR,Y
STA COLOR0,Y
DEY
BPL OCLRLP
INITAD RTS
;
SET1PL LDX #6
LDA #0
S1PLL1 STA TEXT+$20,X
STA TEXT+$47,X
STA TEXT+$2A,X
DEX
BPL S1PLL1
SETXPL JSR FLS1ON
LDA #$10
STA TEXT+$2E
STA TEXT+$2F
RTS
;
SET2PL LDX #6
LDA #0
S2PLL1 STA TEXT+$2A,X
STA TEXT+$47,X
DEX
BPL S2PLL1
JSR FLS2ON
LDA #$10
STA TEXT+$4B
STA TEXT+$4C
BNE SETXPL
;
EJECT
INCLUDE D1:PAC1.ASM
EJECT
INCLUDE D1:PAC2.ASM
EJECT
INCLUDE D1:PAC3.ASM
EJECT
INCLUDE D1:PAC4.ASM
EJECT
INCLUDE D2:PACDAT2.ASM
EJECT
;
ORG $7400
;
INCLUDE D2:PACDAT3.ASM
;
END INIT
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ