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

1118
PAC1.ASM Normal file

File diff suppressed because it is too large Load Diff

754
PAC2.ASM Normal file
View File

@@ -0,0 +1,754 @@
;
; PAC-MAN GAME SUBROUTINES
;
GOBBLE LDX GOBBLD
BEQ GOBBLX
LDA GOBBLF
LDY #$A5
CPX #7
BCS GOBBD2
CMP #$B4
BEQ SAMGOB
CLC
ADC #5
BNE STRGOB
SAMGOB INC GOBBLD
LDY #$A3
BNE STRGOB
GOBBD2 CPX #9
BNE GOBBD3
INC GOBBLD
BNE DECGOB
GOBBD3 LDY #$A3
DECGOB SEC
CMP #$78
BNE GOBDEC
LDA #0
STA GOBBLD
TAY
BEQ STRGOB
GOBDEC SBC #5
STRGOB STA GOBBLF
STA $D200
STY $D201
GOBBLX RTS
;
SKIRTS LDA RTCLOK+2
AND #$0F
BNE SKIRTX
LDA MSKIRT
BEQ ISKIRT
LDA #0
STA MSKIRT
BEQ SKIRTX
ISKIRT INC MSKIRT
SKIRTX RTS
;
; RERACK WILL RESET MAZE AFTER
; A PLAYER HAS CLEARED ALL DOTS
;
RERACK LDA RRSEQU
BNE TSTRRS
JSR CLRAUD
JSR DRAWIT
LDA #$40
RRKXX1 STA RRTIMR
RRKXX2 INC RRSEQU
RTS
TSTRRS CMP #1
BNE TSTRR2
LDA RRTIMR
BNE DRRWTM; DEC RERACK WAIT TIMER
LDA #0
LDX #3
TSRR1L STA HPOSP0,X
DEX
BPL TSRR1L
LDA #$0C
STA COLOR0
LDA #$07
STA RRFLCT; RERACK FLASH COUNT
LDA #$10
BNE RRKXX1
DRRWTM DEC RRTIMR
RTS
TSTRR2 CMP #2
BNE TSTRR3
LDA RRTIMR
BNE DRRWTM; DEC RERACK COLOR TIMER
DEC RRFLCT
BEQ RRKXX2
ALTCLR LDA RRFLCT
CLC
LSR A
BCC ALTBLU
LDA #$0C
BNE SETRRC
ALTBLU LDA #$86
SETRRC STA COLOR0
LDA #$10
STA RRTIMR
RTS
TSTRR3 CMP #3
BNE TSTRR4
LDA #0
STA INTCNT
LDA #CHRORG/256
STA CHBASE
TSTR3X RTS
TSTRR4 CMP #4
BNE TSTRR5
JSR NEWBRD
LDX PLYNUM
INC XPACP1,X
INC MAZCT1,X
JSR READY1
INC RRSEQU
LDA NUMPLY
BEQ TSTR3X
LDA #$30
STA RRTIMR
RTS
TSTRR5 CMP #5
BNE TSTRR6
LDA RRTIMR
BNE DTMRR5
INC RRSEQU
RTS
DTMRR5 DEC RRTIMR
RTS
TSTRR6 JSR READY2
LDA #0
STA RRFLAG
STA RRSEQU
LDA #2
STA RESETF
LDA #$40
STA RESETT
RTS
;
; GET READY TO PLAY
;
READY1 LDA #$A2
LDX #0
REDYLP STA PACMAZ+$1EF,X
CLC
ADC #1
INX
CPX #$0A
BNE REDYLP
JSR PLAYRS
LDX PLYNUM
LDA MAZCT1,X
CMP #6
BCC SETRED
CMP #$0A
BCS SETRED
LDY #$DA; SET UP FOR GREEN FRUITS
BNE SETFRC
SETRED LDY #$44
SETFRC STY FRUCLR
LDY #0
CMP #6
BCS HFRUTS
STA TEMLOC
LDA #$92
STA PIXPUT
LDA #HIGH PACMAZ+3
STA PIXPUT+1
LDX #0
FRUTLP LDA FRUCHR,X
STA (PIXPUT),Y
INC PIXPUT
CLC
ADC #1
STA (PIXPUT),Y
CPX TEMLOC
BEQ FSPLIT
FRUTS1 INX
DEC PIXPUT
DEC PIXPUT
DEC PIXPUT
BNE FRUTLP
HFRUTS CMP #18
BCC HFRUT1
LDA #18
HFRUT1 SEC
SBC #6
STA TEMLOC
SEC
LDA #LOW HIFRUT
SBC TEMLOC
STA PIXGET
LDA #HIGH HIFRUT
SBC #0
STA PIXGET+1
LDX #0
HFRUTL LDA (PIXGET),Y
STA PACMAZ+$386,X
CLC
ADC #1
STA PACMAZ+$387,X
INX
INX
INY
CPY #$7
BNE HFRUTL
FSPLIT RTS
;
READY2 LDX #$0B
LDA #0
RED2LP STA PACMAZ+$14E,X
DEX
BPL RED2LP
JSR DRAWIT
LDX PLYNUM
DEC XPACP1,X
;
UDXPACS LDX PLYNUM
LDA XPACP1,X
LDX #0
LDY #$9B
CMP #3
BNE TWOPAC
STY PACMAZ+$378
UDXPC2 STY PACMAZ+$376
UDXPC1 STY PACMAZ+$374
RTS
TWOPAC CMP #2
BNE ONEPAC
JSR UDNPC2
JMP UDXPC2
ONEPAC CMP #1
BNE NOPACS
JSR UDNPC1
JMP UDXPC1
NOPACS STX PACMAZ+$374
UDNPC1 STX PACMAZ+$376
UDNPC2 STX PACMAZ+$378
RTS
;
DRAWIT LDA #1
STA MSTILL
LDX #3
GREADL LDA M1DIRT,X
JSR MONHND
DEX
BPL GREADL
LDA #0
STA MSTILL
JMP PACSTP
;
READY3 LDX #$0D
LDA #0
REDY3L STA PACMAZ+$14D,X
STA PACMAZ+$1ED,X
DEX
BPL REDY3L
RTS
;
FLSHXU LDA RTCLOK+2
AND #$0F
BNE FLSHXX
LDA FLSHUP
BNE FLSRST
INC FLSHUP
BNE FLSHER
FLSRST LDA #0
STA FLSHUP
FLSHER LDA PLYNUM
BEQ FLSPL1
LDA FLSHUP
BNE FLS2ON
TAX
TAY
BEQ F2STOR
FLS2ON LDA #$12
LDX #$35
LDY #$30
F2STOR STA TEXT+$21
STX TEXT+$22
STY TEXT+$23
RTS
FLSPL1 LDA FLSHUP
BNE FLS1ON
TAX
TAY
BEQ F1STOR
FLS1ON LDA #$11
LDX #$35
LDY #$30
F1STOR STA TEXT+4
STX TEXT+5
STY TEXT+6
FLSHXX RTS
;
; SET UP MONSTER AND PACMAN
; START POSITIONS
;
SETUP JSR INITPM;CLEAR P/M GRAPHICS
SETUP1 LDX #$7F
CLRPGZ STA $80,X
DEX
BPL CLRPGZ
JSR SETCLR;INIT COLOR REGS
;
; SPEED INITIALIZATION
;
SPDINI LDX PLYNUM
LDA MAZCT1,X
CMP #6
BCC LOWINI
LDA #6
LOWINI TAY
LDA PACSPD,Y
TAX
LDA SPEED1,X
STA PMSPCT
LDA MONSPD,Y
TAY
LDX #3
SPINIL LDA SPEED1,Y
STA M1SPCT,X
DEX
BPL SPINIL
;
LDX #$13
INDATL LDA INIDAT,X
STA PACSCN,X
DEX
BPL INDATL
LDY #0
JSR MSTIMR
STA HITCLR
RTS
NEWGAM LDA #3
STA XPACP1;DO AT GAME START
STA XPACP2
LDA DIFOPT
STA MAZCT1
STA MAZCT2
LDX #1
JSR NEWBD1
NEWBRD JSR P1INIT; DO AT SCREEN START
JSR UDXPAC
LDX PLYNUM
LDA MAZCT1,X
TAY
BNE NEWRK2
LDA RTCLOK+2
BPL NEWRK2
NEWRK1 JSR MSTIMR
JMP NEWBD0
NEWRK2 INY
BNE NEWRK1
NEWBD0 LDX PLYNUM
NEWBD1 LDA #$0F
STA BIGDT1,X
LDA #0
STA FRUTP1,X
STA DTCTL1,X
STA DTCTM1,X
RTS
;
MSTIMR CPY #3
BCC LDMSTM
LDY #3
LDMSTM LDX #2
LDMSTL LDA STARTV,Y
STA M2TIMR,X
INY
DEX
BPL LDMSTL
RTS
;
; VFIZZL IS THE FOLD-UP
; SEQUENCE FOR THE PACMAN
;
; VFIZST IS THE STATUS
;
; 0 = NO ACTION
; 1 = WIGGLE SKIRTS
; 2 = CLEAR MONSTERS & INIT SOUNDS
; 3 = SOUND FREQ INCREASING
; 4 = SOUND FREQ DECREASING
; 5 = FADE OUT SOUND
; 6 = SHOW BLANK SCREEN
;
VFIZZL LDA VFIZST
CMP #1
BNE INICLR
LDA VFIZSQ
BEQ NXTFSQ
JSR SKIRTS
LDX #3
UDMFLP LDA M1DIRT,X
JSR MONHND
DEX
BPL UDMFLP
DEC VFIZSQ
RTS
NXTFSQ INC VFIZST
LDA VFIZST
INICLR CMP #2
BNE FIZCHK
LDX #3
LDA #0
MONCLR STA HPOSP0,X
DEX
BPL MONCLR
LDA #$35
STA VFIZFQ
STA VFIZBS
JSR CLRAUD
STA VFIZCT
STA FIZPTR
INC FIZZLE
LDA #$07
STA FIZTIM
LDA #3
STA VFIZST
BNE VFIZUP
FIZCHK CMP #3
BEQ VFIZUP
CMP #4
BEQ VFIZDN
CMP #5
BEQ VFIZFZ
CMP #6
BEQ FZWAIT
VFIZUP LDA #$A8
STA AUDC1
LDA VFIZFQ
STA AUDF1
CLC
ADC #8
STA VFIZFQ
INC VFIZCT
LDA VFIZCT
CMP #4
BNE VBFIZX
BEQ SVFIZS
VFIZDN LDA #$A8
STA AUDC1
LDA VFIZFQ
STA AUDF1
SEC
SBC #8
STA VFIZFQ
DEC VFIZCT
BNE VBFIZX
LDA VFIZBS
CMP #$6D
BEQ VBFIZI
VFIZSW CLC
ADC #4
STA VFIZBS
STA VFIZFQ
LDA #3
SVFIZS STA VFIZST
RTS
VFIZFZ LDA #$A8
STA AUDC1
LDA VFIZBS
STA AUDF1
SEC
SBC #8
STA VFIZBS
CMP #$25
BNE VBFIZX
JSR CLRAUD
LDA #$80
STA VFIZCT
VBFIZI INC VFIZST
VBFIZX RTS
;
FZWAIT LDA VFIZCT
BNE DECFCW
INC RESETF
RTS
DECFCW DEC VFIZCT
RTS
;
; FIZZIE WILL DRAW THE PACMAN
; FOLDING UP IN SEQUENCE
;
FIZZIE LDA FIZZLE
BEQ FIZZIX
LDA PMVPOS
STA PIXPUT
LDA #HIGH PMADDR+3
STA PIXPUT+1
LDA FIZTIM
BEQ RSTFIZ
DEC FIZTIM
BPL STRFIZ
RSTFIZ LDA FIZPTR
CMP #$0F
BEQ CLRFIZ
INC FIZPTR
LDA #$07
STA FIZTIM
STRFIZ LDA FIZPTR
BEQ FIZSTR
CMP #$0F
BEQ EXPPAC
TAX
DEX
LDA FIZIDX,X
TAY
DEY
LDA FIZDAT,X
STA (PIXPUT),Y
RTS
FIZSTR LDY #$0C
LDX #9
FIZSTL LDA PACDIE,X
STA (PIXPUT),Y
DEY
DEX
BPL FIZSTL
RTS
EXPPAC LDY #$0F
LDX #$0F
EXPPCL LDA PACEXP,X
STA (PIXPUT),Y
DEY
DEX
BPL EXPPCL
RTS
CLRFIZ LDY #$0F
LDA #0
CLRFZL STA (PIXPUT),Y
DEY
BPL CLRFZL
STA FIZZLE
FIZZIX RTS
;
FLITEC LDA FLASHC
BEQ NOFLIT
LDA TWEETR
BNE CKFLTM
JSR VRVERB
CKFLTM LDA FLITMR
BEQ FLSHSQ
DEC FLITMR
JMP SETFLC
NOFLIT LDA TWEETR
BNE FIZZIX
JMP VCHASE
FLSHSQ LDX PLYNUM
LDA MAZCT1,X
TAX
LDA FLSTIM,X
CMP FLASHC
BNE NXTFLS
LDX #3
RSCLLP LDA M1STAT,X
BPL NXTRSC
LDA COLORS,X
STA PCOLR0,X
NXTRSC DEX
BPL RSCLLP
LDX #3
RSTCHL LDA M1STAT,X
BPL NXRSTC
CMP #$80
BEQ RSTBOX
AND #$BB
BEQ NXRSTC
BNE RSTCHS
RSTBOX LDA #0
BEQ RSSTAT
RSTCHS LDA #$20
RSSTAT STA M1STAT,X
NXRSTC DEX
BPL RSTCHL
LDA #0
STA FLASHC
STA FLASHT
STA VFLITS
LDA #$A0
STA CHASET
RTS
NXTFLS LDA FLASHT
BNE DECFTM
INC FLASHC
LDA #$18
STA FLASHT
DECFTM DEC FLASHT
SETFLC LDA FLASHC
LSR A; ALTERNATE BLUE & WHITE
BCC FWHITE
LDY #$84; DARK BLUE
BNE FSTORE
FWHITE LDY #$0C; WHITE
FSTORE LDX #3
FSTORL LDA M1STAT,X
BPL NXFSTR
TYA
STA PCOLR0,X
NXFSTR DEX
BPL FSTORL
FLITCX RTS
;
;
VRVERB LDA VFLITS
BNE VFLRDY
LDA #5
STA VFLITV
LDA #2
STA VFLITD
INC VFLITS
LDA #$90
STA VFLITF
VFLRDY LDA VFLITD
CMP #1
BNE VFLIDN
LDA VFLITF
CMP #$90
BNE VFUPOK
LDA VFLITV
CMP #3
BNE VFVDEC
LDA #5
STA VFLITV
VFVDEC DEC VFLITV
LDA #2
STA VFLITD
BNE VFDNOK
VFUPOK CLC
LDA VFLITF
ADC #$10
BNE VRBSTR
VFLIDN LDA VFLITF
CMP #$40
BNE VFDNOK
LDA #1
STA VFLITD
BNE VFUPOK
VFDNOK SEC
LDA VFLITF
SBC #$10
VRBSTR STA VFLITF
STA AUDF2
LDA VFLITV
ORA #$A0
VRVBX1 STA AUDC2
VRVRBX RTS
;
VTWEET LDA TWEETF
BNE CTWEET
LDA #$0C
STA TWEETF
BNE ITWEET
CTWEET CMP #$17
BNE ITWEET
LDA #$0C
STA TWEETF
ITWEET INC TWEETF
STWEET LDA TWEETF
STA AUDF2
LDA #$A4
BNE VRVBX1
;
VGULPR DEC VGLPC1
BEQ DISTRT
SEC
LDA VGLPC2
SBC #4
STA VGLPC2
CMP #$10
BEQ GLPOFF
STA AUDF1
STA AUDF4
LDA #$84
STA AUDCTL
LDA #$A4
BNE GBRNCH
DISTRT LDA #2
STA VGLPC1
SEC
LDA VGLPC2
SBC #3
STA VGLPC2
STA AUDF1
STA AUDF3
STA AUDF4
LDA #$A8
STA AUDC3
GBRNCH STA AUDC4
BNE VEATRS
GLPOFF JSR CLRAUD
STA AUDCTL
STA VFREEZ
STA PACCNT
STY GULPED
LDA #$2A
STA COLOR3
LDA #$11
STA GPRIOR
LDX #3
RSTPCL LDA PCOLR0,X
CMP #$DC
BEQ RSTPLC
DEX
BPL RSTPCL
RTS
RSTPLC LDA #$0C
STA PCOLR0,X
STA HITCLR
LDA #0
STA PACCNT
JSR PMSTIK
INC PACADV
JMP MUNCHY
;
VEATER LDA EATERF
BEQ VEATRX
LDX EATERC
CPX #6
BNE CEATER
LDA #0
STA EATERF
STA EATERC
BEQ VEATRS
CEATER LDA EATERT
BNE EATER2
LDA E1DATA,X
JMP STREAT
EATER2 LDA E2DATA,X
STREAT INC EATERC
STA AUDF1
LDA #$A4
VEATRS STA AUDC1
VEATRX RTS
;
CLRAUD LDY #7
LDA #0
CLRAUL STA AUDF1,Y
DEY
BPL CLRAUL
CLRAUX RTS
;
PLAYRS LDA NUMPLY
BEQ CLRAUX
LDA #$65
LDX #0
PLYRLP STA PACMAZ+$14E,X
CLC
ADC #1
INX
CPX #$0C
BNE PLYRLP
LDA PLYNUM
BEQ CLRAUX
LDX #$71
STX PACMAZ+$158
INX
STX PACMAZ+$159
RTS
;
APGST LDA #$42
STA M1STAT,X
STX GULPED

822
PAC3.ASM Normal file
View File

@@ -0,0 +1,822 @@
;
; PAC-MAN GAME SUBROUTINES
;
; INITIALIZE PLAYER/MISSILE MEMORY
;
; THIS SUBR CLEARS P/M AREA
;
INITPM LDX #0
TXA
JSR INITPL
LDA #$FE
LDX #$F0
JSR INITPL
TXA
RTS
INITPL STA PMADDR+$300,X
STA PMADDR+$400,X
STA PMADDR+$500,X
STA PMADDR+$600,X
STA PMADDR+$700,X
INX
BNE INITPL
RTS
;
; SETCOLOR SUBROUTINE WILL
; INITIALIZE $2C0 - $2C7
; (COLOR REGISTERS)
;
SETCLR LDX #7
SETCLL LDA COLORS,X
STA PCOLR0,X
DEX
BPL SETCLL
RTS
;
;
P1INIT LDX #0
P1INIL LDA DATMAZ,X
STA PACMAZ,X
LDA DATMAZ+$100,X
STA PACMAZ+$100,X
LDA DATMAZ+$200,X
STA PACMAZ+$200,X
LDA DATMAZ+$300,X
STA PACMAZ+$300,X
INX
BNE P1INIL
RTS
;
SAVEP1 LDX #0
SAVP1L LDA PACMAZ,X
STA P1SAVE,X
LDA PACMAZ+$100,X
STA P1SAVE+$100,X
LDA PACMAZ+$200,X
STA P1SAVE+$200,X
LDA PACMAZ+$300,X
STA P1SAVE+$300,X
INX
BNE SAVP1L
RTS
;
SAVEP2 LDX #0
SAVP2L LDA PACMAZ,X
STA P2SAVE,X
LDA PACMAZ+$100,X
STA P2SAVE+$100,X
LDA PACMAZ+$200,X
STA P2SAVE+$200,X
LDA PACMAZ+$300,X
STA P2SAVE+$300,X
INX
BNE SAVP2L
SAV2PX RTS
;
; PMSTIK SUBROUTINE WILL TEST
; JOYTICK INPUT AND DETERMINE
; IF DIRECTION CHOSEN IS VALID.
; THE PACMAN WILL THEN MOVE
; IN THE PROPER DIRECTION WITH
; IT'S MOUTH OPENING AND CLOSING.
;
; THIS CODE IS CALLED DURING
; VBLANK AND INITIATES MOTION
; DURING ALTERNATE OCCURANCES
; OF VBLANK. MOUTH ANIMATION
; IS PERFORMED EVERY VBLANK.
;
;
PMSTIK LDA PMSTAT
BMI SAV2PX
PUDSTK LDX #4
JSR MAZHND
CLC
LDA PMNDIR;SEE IF WE CHANGE DIR.
BIT TEMLOC;IS IT VALID ?
BEQ PMUDST;NO
CMP PMODIR
BEQ PUDSAM
ORA PMODIR
TAY
AND #3
BEQ PUDSAM
TYA
AND #$0C
BEQ PUDSAM
STY PACADV
PUDSAM LDA PMNDIR
STA PMODIR
PMUDST LDX PLYNUM
LDA STICK0,X
EOR #$0F
BEQ PMSAME
PHA
LDX #3
LDY #0
PMTST2 CLC
LSR A
BCC NXPTS2
INY
NXPTS2 DEX
BPL PMTST2
PLA
CPY #2
BEQ PMSAME
PDRTST STA ATRACT
STA PMNDIR
BIT TEMLOC
BEQ PMSAME
STA PMODIR
PMSAME LDA PMODIR
BIT TEMLOC
BNE PACTST
JMP PACOPN
PACTST CMP #1
BEQ PACUP
CMP #2
BEQ PACDN
CMP #4
BNE PACRTV
JMP PACLF
PACRTV CMP #8
BEQ PACRT
JMP PACSTP
PACUP LDA PACCNT
BNE PACUPS
DEC PMVPOS
DEC PMVPOS
LDA PACMAP
BNE DECPMP
LDA #3
STA PACMAP
BNE PACUPS
DECPMP DEC PACMAP
BNE PACUPS
LDA PMVPOS
CMP PVSAVE
BEQ PACUPS
SEC
LDA PACSCN
SBC #$28
STA PACSCN
LDA PACSCN+1
SBC #0
STA PACSCN+1
PACUPS LDY #6;POINT TO PACTOP
JMP MOVPAC
PACDN LDA PACCNT
BNE PACDNS
INC PMVPOS
INC PMVPOS
LDA PACMAP
CMP #3
BNE INCPMP
LDA #0
STA PACMAP
LDA PMVPOS
CMP PVSAVE
BEQ PACDNS
CLC
LDA PACSCN
ADC #$28
STA PACSCN
LDA PACSCN+1
ADC #0
STA PACSCN+1
BNE PACDNS
INCPMP INC PACMAP
PACDNS LDY #8;POINT TO PACBOT
JMP MOVPAC
PACRT LDA PACCNT
BNE PACRTS
;
LDA PMHPOS
CMP #$CA
BNE NORTTN
LDA #$2A
STA PMHPOS
LDA #$8F
STA PACSCN
;
NORTTN INC PMHPOS
LDA PACBYT
CMP #3
BNE INCPBY
LDA #0
STA PACBYT
LDA PMHPOS
CMP PHSAVE
BEQ PACRTS
INC PACSCN
BNE PACRTS
INC PACSCN+1
BNE PACRTS
INCPBY INC PACBYT
PACRTS LDY #2;POINT TO PACRGT
BNE MOVPAC
PACLF LDA PACCNT
BNE PACLFS
;
LDA PMHPOS
CMP #$2A
BNE NOLFTN
LDA #$CA
STA PMHPOS
LDA #$B7
STA PACSCN
;
NOLFTN DEC PMHPOS
LDA PACBYT
BNE DECPBY
LDA #3
STA PACBYT
BNE PACLFS
DECPBY DEC PACBYT
BNE PACLFS
LDA PMHPOS
CMP PHSAVE
BEQ PACLFS
SEC
LDA PACSCN
SBC #1
STA PACSCN
LDA PACSCN+1
SBC #0
STA PACSCN+1
PACLFS LDY #4;POINT TO PACLFT
BNE MOVPAC
PACOPN LDA PMODIR
CMP #1
BNE POPNDN
LDY #6; UP
BNE SETOPN
POPNDN CMP #2
BNE POPNLF
LDY #8; DOWN
BNE SETOPN
POPNLF CMP #4
BNE POPNRT
LDY #4; LEFT
BNE SETOPN
POPNRT CMP #8
BNE PACSTP
LDY #2
SETOPN LDA #$0A
BNE STRPAC
PACSTP LDY #0;POINT TO PACDOT
TYA
BEQ STRPAC
MOVPAC LDX PMSEQU
BNE PACSID
INC PMSEQU
BNE PACSTP
PACSID DEX
LDA PACIDX,X
CPX #2
BNE INCPSQ
LDX #$FF
STX PMSEQU
INCPSQ INC PMSEQU
STRPAC TAX
LDA PACADD,Y
STA PIXGET
INY
LDA PACADD,Y
STA PIXGET+1
TXA
CLC
ADC PIXGET
STA PIXGET
LDA #0
ADC PIXGET+1
STA PIXGET+1
LDY #9
PMBFLP LDA (PIXGET),Y
STA PACBUF+3,Y
DEY
BPL PMBFLP
LDA #LOW PACBUF
STA PIXGET
LDA #HIGH PACBUF
STA PIXGET+1
LDA PMVPOS
STA PIXPUT
LDA #HIGH PMADDR+3
STA PIXPUT+1
CLC
LDA PMHPOS
STA HPOSM3
ADC #2
STA HPOSM2
ADC #2
STA HPOSM1
ADC #2
STA HPOSM0
LDY #$0F
PPLOOP LDA (PIXGET),Y
STA (PIXPUT),Y
DEY
BPL PPLOOP
PMSIXX RTS
;
; MUNCHY SUBROUTINE EATS DOTS
;
MUNCHY LDA PACBYT
BNE MUNCHX
LDA PACMAP
BNE MUNCHX
LDA PMHPOS
CMP PHSAVE
BNE NWPREF
LDA PMVPOS
CMP PVSAVE
BEQ PMSIXX
NWPREF LDA PMVPOS
STA PVSAVE
LDA PMHPOS
STA PHSAVE
LDY #0
LDA (PACSCN),Y
CMP #1
BEQ EATSML
CMP #2
BNE MUNCHX
TYA
STA (PACSCN),Y
RTS
EATSML STA SCOREX+4
JSR PSCORE
LDA #1
STA EATERF
STA PACDLY
LDA #0
STA EATERC
LDA EATERT
BNE ZEATER
LDA #1
BNE SEATER
ZEATER LDA #0
SEATER STA EATERT
LDA #0
TAY
STA (PACSCN),Y
INCDOT LDX PLYNUM
INC DTCTL1,X
BNE CHKMAX
INC DTCTM1,X
CHKMAX LDX PLYNUM
LDA DTCTM1,X
BEQ MUNCHX
LDA DTCTL1,X
CMP #4
BNE MUNCHX
LDA #1
STA RRFLAG
MUNCHX RTS
;
DOTTST LDX PLYNUM
LDA BIGDT1,X
STA TEMLOC
LDX PMVPOS
LDY PMHPOS
LDA #1
BIT TEMLOC
BEQ DT2TST
CPX #$3C
BNE DT2TST
CPY #$3A
BEQ DOTFND
DT2TST ASL A
BIT TEMLOC
BEQ DT3TST
CPX #$3C
BNE DT3TST
CPY #$BE
BEQ DOTFND
DT3TST ASL A
BIT TEMLOC
BEQ DT4TST
CPX #$A4
BNE DT4TST
CPY #$3A
BEQ DOTFND
DT4TST ASL A
BIT TEMLOC
BEQ MUNCHX
CPX #$A4
BNE MUNCHX
CPY #$BE
BNE MUNCHX
DOTFND EOR #$0F
AND TEMLOC
LDX PLYNUM
STA BIGDT1,X
LDA #5
STA SCOREX+4
JSR PSCORE
LDA #1; SET UP FOR BLUE MONSTERS
STA FLASHC
LDA #$FF
STA GLPCNT
LDX PLYNUM
LDA MAZCT1,X
TAX
LDA BLUTIM,X
STA FLITMR
LDX #3
SETFLL LDA M1STAT,X
ASL A
BMI NXTFLL
LDA M1STAT,X
ORA #$80; SET STATUS = FLIGHT
STA M1STAT,X
LSR A
LSR A
LSR A
BCS NXTFLL
;
AND #$3B
BEQ NXTFLL
LDA M1DIRT,X
TAY
LDA BLUREV,Y
STA M1DIRT,X
;
NXTFLL DEX
BPL SETFLL
JMP INCDOT
;
; PSCORE WILL ADD ANY POINTS
; SCORED TO THE PLAYERS' SCORE
;
PSCORE LDA #0;PSCORE SUBR
STA CARRYB
SED
LDA PLYNUM
BEQ PSCOR1
LDX #$4C
BNE PSCORX
PSCOR1 LDX #$2F
PSCORX LDY #5
KSCORE CLC
LDA TEXT,X
AND #$0F
ADC CARRYB
ADC SCOREX,Y
PHA
AND #$10
BEQ NOCARY
LDA #1
NOCARY STA CARRYB
PLA
ORA #$10
CMP #$10
BNE STRSCR
CPY #0
BNE TESLED
TYA
BEQ STRSCR
TESLED LDA TEXT-1,X
BNE NOLEAD
LDA CARRYB
BEQ STRSCR
NOLEAD LDA #$10
STRSCR STA TEXT,X
DEX
DEY
BPL KSCORE
CLD
LDX #5
LDA #0
CLRSCR STA SCOREX,X
DEX
BPL CLRSCR
CKBONS LDX PLYNUM
LDA BPACP1,X
BNE NOBONS
CPX #0
BNE CKBON2
LDA TEXT+$2B
BNE BONUSP
NOBONS RTS
CKBON2 LDA TEXT+$48
BEQ NOBONS
BONUSP INC BPACP1,X
INC XPACP1,X
JMP UDXPACS
;
; MAZE HANDLER SUBROUTINE
;
; ENTRY:
; A REG VALUE EQUALS VPOS
; Y REG VALUE EQUALS HPOS
;
; EXIT:
; A REG VALUE EQUALS PERMISSIBLE
; DIRECTIONS FOR ANY OBJECT FROM
; ANY POSITION
;
; BIT 0 SET - UP OK
; BIT 1 SET - DN OK
; BIT 2 SET - RT OK
; BIT 3 SET - LF OK
;
; CARRY BIT IS SET IF
; DECISION POINT WAS REACHED
; OTHERWISE IT IS CLEARED.
;
MAZHND LDA M1HPOS,X
STA HSAVER
LDA M1VPOS,X
STX TEMLOC
LDX #9
MHORLP CMP VTABLE,X;SEARCH VPOS
BEQ VRTFND;MATCH FOUND
DEX
BPL MHORLP;KEEP LOOKING
LDA HSAVER;NONE FOUND SO TRY HPOS
LDY #9
MVRTLP CMP HTABLE,Y;SEARCH HPOS
BEQ HORFND;MATCH FOUND
DEY
BPL MVRTLP
VRTFND LDY #9;NOW WE CHECK HPOS TABLE
LDA HSAVER; TO SEE IF DECISION PT.
VRTFNL CMP HTABLE,Y
BEQ CHOICE;YES - MAKE CHOICE
DEY
BPL VRTFNL
LDA #$0C;NO - KEEP GOING
CLC
BCC MAZHNX
HORFND LDA #3; ONLY ONE MATCH FOUND
CLC
BCC MAZHNX
CHOICE TXA;NOW INDEX INTO TABLE
ASL A
TAX
LDA HTBADD,X
STA PIXGET
INX
LDA HTBADD,X
STA PIXGET+1
LDA (PIXGET),Y
SEC
MAZHNX LDX TEMLOC
STA TEMLOC
PHP
CPX #4
BEQ MAZHX1
LDA M1DIRT,X
TAY
LDA TEMLOC
AND REVTAB,Y
STA TEMLOC
LDA M1VPOS,X
CMP #$64
BNE MAZHX1
LDA M1HPOS,X
CMP #$76
BEQ MASKIT
NEXTMU CMP #$82
BNE MAZHX1
MASKIT LDA M1STAT,X
BMI MASKSD
LDA TEMLOC
AND #$0E
BNE MASKUP
MASKSD LDA #1
MASKUP STA TEMLOC
MAZHX1 LDA TEMLOC
PLP
RTS
;
VCHASE LDA #0
STA VFLITS
LDA VCHASS
BNE VCHDIR
LDA #$28
STA VCHASF
LDA #1
STA VCHASS
STA VCHASD
VCHDIR LDA VCHASD
CMP #1
BNE VCHADN
LDA VCHASF
CMP #$40
BCC VCUPOK
LDA #2
STA VCHASD
BNE VCDNOK
VCUPOK LDA WHINEY
CLC
ADC VCHASF
BNE STRVCH
VCHADN LDA VCHASF
CMP #$28
BCS VCDNOK
LDA #1
STA VCHASD
BNE VCUPOK
VCDNOK SEC
LDA VCHASF
SBC WHINEY
STRVCH STA VCHASF
STA AUDF2
LDA #$A1
STA AUDC2
VCHASX RTS
;
BLINKR LDA RTCLOK+2
AND #$0F
BEQ BLNKON
CMP #8
BEQ BLNKOF
RTS
BLNKON LDY #2
LDX PLYNUM
LDA BIGDT1,X
STA TEMLOC
LDA #1
BIT TEMLOC
BEQ BKOND2
STY PACMAZ+$7B
BKOND2 ASL A
BIT TEMLOC
BEQ BKOND3
STY PACMAZ+$9C
BKOND3 ASL A
BIT TEMLOC
BEQ BKOND4
STY PACMAZ+$283
BKOND4 ASL A
BIT TEMLOC
BNE BKONX1
BKONXX RTS
;
BLNKOF LDY #0
STY PACMAZ+$7B
STY PACMAZ+$9C
STY PACMAZ+$283
BKONX1 STY PACMAZ+$2A4
RTS
;
;
; SPEED SEQUENCING FOR OBJECTS
;
; X REG = INDEX VALUE FOR OBJECT
;
; X=0 TO 3 FOR MONSTERS 1 - 4
; X=4 FOR PACMAN
;
; ON EXIT:
; A REG = 0 INDICATES UPDATE TIME
;
SPDSEQ DEC M1SPCT,X
BEQ NXSPSQ
LDA #$FF
RTS
NXSPSQ LDA M1SPSQ,X
CMP #3
BNE INCSPS
LDA #$FF
STA M1SPSQ,X
INCSPS INC M1SPSQ,X
LDY PLYNUM
LDA MAZCT1,Y
CMP #6
BCC LOWSPD
LDA #6
LOWSPD TAY
CPX #4
BNE MXSPSQ
LDA PACSPD,Y
BPL LDSPSQ
MXSPSQ LDA MONSPD,Y
LDSPSQ CLC
ADC M1SPSQ,X
TAY
LDA SPEED1,Y
STA M1SPCT,X
LDA #0
RTS
;
; CHASE SEQUENCING
;
CHSSEQ LDA RTCLOK+2
AND #7
BNE CHSSQ1
LDA CHASET
BEQ CHSSQ1
DEC CHASET
CHSSQ1 LDX PLYNUM
LDA DTCTM1,X
BEQ CHMAD1
VRYMAD LDX #3
JSR SETMAD
LDA #5
BNE STWHIN
CHMAD1 LDA DTCTL1,X
CMP #$F0
BCS VRYMAD
CMP #$E0
BCC SMLMAD
LDX #2
JSR SETMAD
LDA #4
BNE STWHIN
SMLMAD CMP #$B0
BCC NOTMAD
LDA #3
BNE STWHIN
NOTMAD LDA #2
STWHIN STA WHINEY
CHSSQ2 LDX #3
CHSSQL LDA M1STAT,X
CMP #8
BEQ TSTCHS
CMP #$10
BEQ TSTCHS
BNE NXCHSQ
TSTCHS JSR SEEPAC
NXCHSQ DEX
BPL CHSSQL
RTS
;
SETMAD LDA M1STAT,X
CMP #8
BEQ YESMAD
CMP #$10
BEQ YESMAD
CMP #$20
BNE NXSTMD
YESMAD LDA #2
STA M1STAT,X
NXSTMD DEX
BPL SETMAD
STX CHASET
RTS
;
FRUITY LDA FRSCRF
BEQ TSTFRT
LDA FRSCRT
BNE DCFRST
LDA #0
STA FRSCRF
LDX #4
CLFRSL STA PACMAZ+$1F1,X
DEX
BPL CLFRSL
RTS
DCFRST DEC FRSCRT
DCFRSX RTS
TSTFRT LDA FRUFLG
BNE DFRTMR
LDX PLYNUM
LDA DTCTL1,X
TAY
LDA FRUTP1,X
BEQ FRTST1
CMP #1
BEQ FRTST2
RTS
FRTST1 CPY #$50
BEQ SETFRT
FRTST2 CPY #$A0
BNE DCFRSX
SETFRT INC FRUTP1,X
LDA MAZCT1,X
CMP #$0C
BCC LOWFRC
LDA #$0C
LOWFRC TAX
LDA FRUCHR,X
STA PACMAZ+$1F3
CLC
ADC #1
STA PACMAZ+$1F4
LDA #1
STA FRUFLG
LDA #FDELAY
STA FRUTMR
LDA #2
STA FRUTMR+1
RTS
DFRTMR LDA FRUTMR+1
BNE DCFRTM
LDA FRUTMR
BNE DCFRTM
LDA #0
STA PACMAZ+$1F3
STA PACMAZ+$1F4
STA FRUFLG
RTS
DCFRTM DEC FRUTMR
BNE FRUITX
DEC FRUTMR+1
FRUITX RTS
;

STA FR

1010
PAC4.ASM Normal file

File diff suppressed because it is too large Load Diff

141
PACDAT1.ASM Normal file
View File

@@ -0,0 +1,141 @@
; MISSING LABELS & DATA
PACCHR
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3C,$3C,$00,$00,$00
.byte $3C,$3C,$FF,$FF,$FF,$FF,$3C,$3C,$00,$00,$01,$04,$04,$04,$04,$04
.byte $00,$00,$40,$10,$10,$10,$10,$10,$10,$10,$10,$10,$10,$40,$00,$00
.byte $04,$04,$04,$04,$04,$01,$00,$00,$00,$00,$55,$00,$00,$50,$04,$04
.byte $00,$00,$40,$10,$10,$40,$00,$00,$00,$00,$55,$00,$00,$05,$10,$10
.byte $00,$00,$01,$04,$04,$01,$00,$00,$00,$00,$FF,$00,$00,$00,$00,$00
.byte $00,$00,$55,$00,$00,$55,$00,$00,$04,$04,$04,$04,$04,$04,$04,$04
.byte $00,$00,$55,$00,$00,$00,$00,$00,$10,$10,$10,$10,$10,$10,$10,$10
.byte $00,$00,$00,$00,$00,$55,$00,$00,$00,$00,$00,$00,$01,$01,$01,$01
.byte $01,$01,$01,$01,$00,$00,$00,$00,$01,$01,$01,$01,$01,$01,$01,$01
.byte $40,$40,$40,$40,$40,$40,$40,$40,$00,$00,$55,$00,$00,$50,$04,$04
.byte $00,$00,$55,$00,$00,$05,$10,$10,$04,$04,$50,$00,$00,$55,$00,$00
.byte $10,$10,$05,$00,$00,$55,$00,$00,$10,$10,$05,$00,$00,$05,$10,$10
.byte $04,$04,$50,$00,$00,$50,$04,$04,$3C,$FF,$3F,$0F,$3F,$FF,$3C,$00
.byte $00,$00,$15,$40,$00,$05,$10,$10,$10,$10,$05,$00,$40,$15,$00,$00
.byte $00,$00,$54,$01,$00,$50,$04,$04,$04,$04,$50,$00,$01,$54,$00,$00
.byte $00,$00,$00,$00,$40,$40,$40,$40,$40,$40,$40,$40,$00,$00,$00,$00
.byte $00,$3F,$3C,$3C,$3F,$3C,$3C,$00,$00,$F0,$3C,$3C,$F0,$F0,$3C,$00
.byte $00,$FF,$F0,$FF,$F0,$F0,$FF,$00,$00,$C0,$03,$0F,$0F,$0F,$CF,$00
.byte $00,$F0,$FC,$0F,$0F,$FF,$0F,$00,$00,$3F,$3C,$3C,$3C,$3C,$3F,$00
.byte $00,$C0,$F0,$3C,$3C,$F0,$C0,$00,$00,$F0,$F0,$3F,$0F,$0F,$0F,$00
.byte $00,$F3,$F3,$C3,$00,$03,$03,$00,$00,$C0,$C0,$C0,$00,$C0,$C0,$00
.byte $00,$3F,$F0,$F0,$F3,$F0,$3F,$00,$00,$F0,$00,$03,$F3,$F3,$F3,$00
.byte $00,$3C,$FF,$C3,$C3,$FF,$C3,$00,$00,$0F,$0F,$CF,$CF,$CF,$CF,$00
.byte $00,$03,$CF,$FF,$33,$03,$03,$00,$00,$CF,$CF,$CF,$CF,$CF,$CF,$00
.byte $00,$FC,$00,$F0,$00,$00,$FC,$00,$00,$00,$03,$03,$03,$03,$00,$00
.byte $00,$FF,$C3,$C3,$C3,$C3,$FF,$00,$00,$0F,$CF,$CF,$CF,$C3,$00,$00
.byte $00,$3C,$3C,$3C,$3C,$F0,$C0,$00,$00,$FF,$F0,$FF,$F0,$F0,$FF,$00
.byte $00,$CF,$0F,$0F,$0F,$0F,$CF,$00,$00,$FC,$0F,$0F,$FC,$3C,$0F,$00
.byte $00,$03,$0C,$2A,$2A,$2A,$3A,$2A,$30,$F0,$30,$A8,$A8,$E8,$A8,$00
.byte $03,$0F,$2A,$2E,$2A,$2B,$0A,$02,$00,$C0,$A0,$E0,$A0,$A0,$80,$00
.byte $02,$02,$0F,$3F,$3F,$3F,$3F,$0F,$00,$00,$C0,$F0,$F0,$F0,$F0,$C0
.byte $03,$0A,$2A,$2A,$2A,$2A,$2A,$0A,$00,$80,$A0,$A0,$E0,$E0,$A0,$80
.byte $03,$03,$0A,$2A,$2A,$2A,$2A,$0A,$00,$00,$80,$A0,$A0,$A0,$A0,$80
.byte $03,$03,$05,$15,$15,$15,$15,$05,$00,$00,$40,$50,$50,$50,$50,$40
.byte $22,$22,$22,$22,$22,$A2,$82,$82,$20,$20,$20,$20,$20,$28,$08,$08
.byte $11,$11,$11,$11,$11,$51,$41,$41,$10,$10,$10,$10,$10,$14,$04,$04
.byte $03,$0D,$3F,$3F,$3F,$3A,$2B,$0A,$00,$C0,$F0,$F0,$F0,$B0,$A0,$80
.byte $0A,$08,$0A,$03,$03,$03,$03,$03,$A0,$20,$A0,$C0,$F0,$C0,$F0,$C0
.byte $00,$03,$00,$00,$00,$00,$03,$00,$C0,$C3,$C3,$C3,$C3,$C3,$F0,$00
.byte $3F,$00,$00,$03,$00,$30,$0F,$00,$F0,$33,$C3,$C3,$33,$33,$C0,$00
.byte $3F,$30,$3F,$00,$00,$30,$0F,$00,$F0,$03,$C3,$33,$33,$33,$C0,$00
.byte $3F,$00,$00,$03,$0C,$0C,$0C,$00,$F0,$33,$C3,$03,$03,$03,$00,$00
.byte $03,$0F,$03,$03,$03,$03,$0F,$00,$03,$0C,$0C,$0C,$0C,$0C,$C3,$00
.byte $3F,$C0,$00,$0F,$30,$C0,$FF,$00,$03,$CC,$CC,$0C,$0C,$0C,$C3,$00
.byte $FF,$00,$03,$0F,$00,$C0,$3F,$00,$C3,$CC,$0C,$0C,$CC,$CC,$03,$00
.byte $FF,$C0,$FF,$00,$00,$C0,$3F,$00,$C3,$0C,$0C,$CC,$CC,$CC,$03,$00
.byte $C0,$33,$33,$33,$33,$33,$C0,$00,$F0,$0C,$0C,$0C,$0C,$0C,$F0,$00
.byte $3C,$C3,$C3,$C3,$C3,$C3,$3C,$00,$00,$00,$55,$00,$00,$54,$01,$01
.byte $01,$01,$54,$00,$00,$55,$00,$00,$00,$00,$55,$00,$00,$15,$40,$40
.byte $40,$40,$15,$00,$00,$55,$00,$00,$00,$AA,$A0,$A0,$AA,$A0,$A0,$00
.byte $00,$82,$A2,$A2,$82,$02,$02,$00,$00,$80,$80,$80,$80,$80,$AA,$00
.byte $00,$02,$0A,$28,$28,$2A,$28,$00,$00,$02,$82,$A0,$A0,$A0,$A0,$00
.byte $00,$82,$82,$AA,$28,$28,$28,$00,$00,$8A,$8A,$0A,$0A,$0A,$0A,$00
.byte $00,$A8,$00,$A0,$00,$00,$A8,$00,$00,$AA,$A0,$A0,$AA,$A2,$A0,$00
.byte $00,$80,$A0,$A0,$80,$80,$A0,$00,$00,$00,$02,$00,$00,$00,$0A,$00
.byte $00,$A0,$A0,$A0,$A0,$A0,$AA,$00,$00,$02,$0A,$00,$00,$02,$0A,$00
.byte $00,$A8,$0A,$28,$A0,$80,$AA,$00
DATMAZ
.byte $00,$11,$1C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C
.byte $0C,$0C,$0C,$15,$16,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C
.byte $0C,$0C,$0C,$0C,$0C,$1E,$20,$00,$00,$13,$0F,$01,$01,$01,$01,$01
.byte $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$0D,$0F,$01,$01,$01
.byte $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$0D,$14,$00
.byte $00,$13,$0F,$01,$03,$0E,$0E,$0E,$04,$01,$03,$0E,$0E,$0E,$0E,$0E
.byte $0E,$04,$01,$0D,$0F,$01,$03,$0E,$0E,$0E,$0E,$0E,$0E,$04,$01,$03
.byte $0E,$0E,$0E,$04,$01,$0D,$14,$00,$00,$13,$0F,$02,$06,$10,$10,$10
.byte $05,$01,$06,$10,$10,$10,$10,$10,$10,$05,$01,$06,$05,$01,$06,$10
.byte $10,$10,$10,$10,$10,$05,$01,$06,$10,$10,$10,$05,$02,$0D,$14,$00
.byte $00,$13,$0F,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01
.byte $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01
.byte $01,$01,$01,$01,$01,$0D,$14,$00,$00,$13,$0F,$01,$0A,$0C,$0C,$0C
.byte $08,$01,$03,$0E,$04,$01,$0A,$0C,$0C,$0C,$0C,$07,$09,$0C,$0C,$0C
.byte $0C,$08,$01,$03,$0E,$04,$01,$0A,$0C,$0C,$0C,$08,$01,$0D,$14,$00
.byte $00,$13,$0F,$01,$01,$01,$01,$01,$01,$01,$0D,$00,$0F,$01,$01,$01
.byte $01,$01,$01,$0D,$0F,$01,$01,$01,$01,$01,$01,$0D,$00,$0F,$01,$01
.byte $01,$01,$01,$01,$01,$0D,$14,$00,$00,$12,$1D,$0C,$0C,$0C,$0C,$61
.byte $04,$01,$0D,$00,$19,$0C,$0C,$0C,$0C,$08,$00,$06,$05,$00,$0A,$0C
.byte $0C,$0C,$0C,$1A,$00,$0F,$01,$03,$63,$0C,$0C,$0C,$0C,$1F,$21,$00
.byte $00,$00,$00,$00,$00,$00,$00,$13,$0F,$01,$0D,$00,$0F,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0D,$00,$0F,$01,$0D
.byte $14,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0C,$0C,$0C,$0C,$0C,$62
.byte $05,$01,$06,$10,$05,$00,$03,$0E,$0E,$0E,$0E,$0B,$0B,$0E,$0E,$0E
.byte $0E,$04,$00,$06,$10,$05,$01,$06,$64,$0C,$0C,$0C,$0C,$0C,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$00,$00,$00,$00,$0D,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$0F,$00,$00,$00,$00,$01,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0C,$0C,$0C,$0C,$0C,$61
.byte $04,$01,$03,$0E,$04,$00,$06,$10,$10,$10,$10,$10,$10,$10,$10,$10
.byte $10,$05,$00,$03,$0E,$04,$01,$03,$63,$0C,$0C,$0C,$0C,$0C,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$13,$0F,$01,$0D,$00,$0F,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0D,$00,$0F,$01,$0D
.byte $14,$00,$00,$00,$00,$00,$00,$00,$00,$11,$1C,$0C,$0C,$0C,$0C,$62
.byte $05,$01,$06,$10,$05,$00,$0A,$0C,$0C,$0C,$0C,$07,$09,$0C,$0C,$0C
.byte $0C,$08,$00,$06,$10,$05,$01,$06,$64,$0C,$0C,$0C,$0C,$1E,$20,$00
.byte $00,$13,$0F,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01
.byte $01,$01,$01,$0D,$0F,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01
.byte $01,$01,$01,$01,$01,$0D,$14,$00,$00,$13,$0F,$01,$0A,$0C,$0C,$15
.byte $04,$01,$0A,$0C,$0C,$0C,$0C,$0C,$0C,$08,$01,$06,$05,$01,$0A,$0C
.byte $0C,$0C,$0C,$0C,$0C,$08,$01,$03,$16,$0C,$0C,$08,$01,$0D,$14,$00
.byte $00,$13,$0F,$02,$01,$01,$01,$0D,$0F,$01,$01,$01,$01,$01,$01,$01
.byte $01,$01,$01,$00,$00,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$0D
.byte $0F,$01,$01,$01,$02,$0D,$14,$00,$00,$13,$19,$0C,$0C,$08,$01,$06
.byte $05,$01,$03,$0E,$04,$01,$0A,$0C,$0C,$0C,$0C,$07,$09,$0C,$0C,$0C
.byte $0C,$08,$01,$03,$0E,$04,$01,$06,$05,$01,$0A,$0C,$0C,$1A,$14,$00
.byte $00,$13,$0F,$01,$01,$01,$01,$01,$01,$01,$0D,$00,$0F,$01,$01,$01
.byte $01,$01,$01,$0D,$0F,$01,$01,$01,$01,$01,$01,$0D,$00,$0F,$01,$01
.byte $01,$01,$01,$01,$01,$0D,$14,$00,$00,$13,$0F,$01,$0A,$0C,$0C,$0C
.byte $0C,$0C,$17,$10,$18,$0C,$0C,$0C,$0C,$08,$01,$06,$05,$01,$0A,$0C
.byte $0C,$0C,$0C,$17,$10,$18,$0C,$0C,$0C,$0C,$0C,$08,$01,$0D,$14,$00
.byte $00,$13,$0F,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01
.byte $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01
.byte $01,$01,$01,$01,$01,$0D,$14,$00,$00,$12,$1D,$0C,$0C,$0C,$0C,$0C
.byte $0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C
.byte $0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$1F,$21,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
ODLIST
.byte $70,$70,$42,$00,$28,$02,$C6,$00,$24,$07,$07,$86,$06,$06,$06,$06
.byte $86,$04,$86,$06,$06,$06,$06,$06,$06,$06,$06,$86,$44,$70,$17,$41, a(ODLIST)
DLIST
.byte $70,$70,$42,$00,$28,$82,$C4,$00,$14,$04,$04,$04,$04,$04,$04,$04
.byte $04,$04,$84,$04,$04,$04,$04,$04,$04,$04,$04,$04,$84,$84,$04,$F0
.byte $41,a(DLIST)
ADLIST
.byte $70,$70,$C2,$00,$28,$02,$46,$00,$30,$06,$86,$06,$06,$06,$06,$06
.byte $06,$06,$86,$06,$06,$06,$86,$06,$06,$06,$06,$06,$86,$06,$44,$70
.byte $17,$41,a(ADLIST)
NULLDL
.byte $70,$70,$70,$41,a(NULLDL)
INTDLC
.byte $70,$70,$70,$42,$00,$28,$02,$F0,$70,$70,$70,$70,$70,$70,$70,$70
.byte $70,$54,$00,$2C,$54,$50,$2C,$54,$A0,$2C,$41,$80,$06

729
PACDAT2.ASM Normal file
View File

@@ -0,0 +1,729 @@
;
; PAC-MAN MONSTER DATA
;
; MONSTER UP
;
MONSUP DB $38,$7C,$D6,$D6,$D6,$FE
DB $FE,$FE,$FE,$FE
;
; MONSTER DOWN
;
MONSDN DB $38,$7C,$FE,$FE,$FE,$FE
DB $D6,$D6,$D6,$FE
;
; MONSTER LEFT
;
MONSLF DB $38,$7C,$FE,$FE,$AE,$AE
DB $AE,$FE,$FE,$FE
;
; MONSTER RIGHT
;
MONSRT DB $38,$7C,$FE,$FE,$EA,$EA
DB $EA,$FE,$FE,$FE
;
; MONSTER FLIGHT
;
MONSFL DB $38,$7C,$FE,$D6,$D6,$D6
DB $FE,$D6,$AA,$FE
;
; MONSTER EYES
;
MONSEY DB $00,$00,$00,$28,$28,$28
DB $00,$00,$00,$00
;
; **** PACMAN SHAPE DATA ****
;
; PACMAN NOT MOVING
;
PACDOT DB $38,$7C,$FE,$FE,$FE
DB $FE,$FE,$FE,$7C,$38
;
;PACMAN RIGHT
;
PACRGT DB $38,$7C,$FE,$F8,$E0
DB $E0,$F8,$FE,$7C,$38
;
DB $38,$7C,$F8,$F0,$E0
DB $E0,$F0,$F8,$7C,$38
;
;PACMAN LEFT
;
PACLFT DB $38,$7C,$FE,$3E,$0E
DB $0E,$3E,$FE,$7C,$38
;
DB $38,$7C,$3E,$1E,$0E
DB $0E,$1E,$3E,$7C,$38
;
;PACMAN UP
;
PACTOP DB $00,$44,$C6,$C6,$EE
DB $EE,$FE,$FE,$7C,$38
;
PACDIE DB $00,$00,$82,$C6,$EE
DB $EE,$FE,$FE,$7C,$38
;
;PACMAN DOWN
;
PACBOT DB $38,$7C,$FE,$FE,$EE
DB $EE,$C6,$C6,$44,$00
;
DB $38,$7C,$FE,$FE,$EE
DB $EE,$C6,$82,$00
;
PACIDX DB $00,$0A
;
FIZDAT DB $00,$82,$00,$C6,$82,$00,$7C
DB $38,$10,$7C,$38,$38,$10,$10
;
;PACMAN DATA ADDRESS POINTERS
;
PACADD DW PACDOT,PACRGT,PACLFT,PACTOP,PACBOT
;
; INITIALIZE SCREEN DATA
;
INIDAT DB $93,HIGH PACMAZ+2
DB $02,$A6,$7A,$64,$74,$74,$74,$A4
DB $7C,$7C,$70,$88,$7C,$04,$02,$01
DB $01,$04
;
; PAC-MAN MAZE DIRECTION DATA
;
; THIS DATA IS USED TO DETERMINE
; WHICH DIRECTIONS ARE PERMITTED
;
VTABLE DB $2C,$44,$54,$64,$74,$84,$94,$A4,$B4,$C4
HTABLE DB $3A,$46,$52,$62,$76,$82,$96,$A6,$B2,$BE
;
; HORIZONTAL TABLE ADDR POINTERS
;
HTBADD DW HTAB01,HTAB02,HTAB03,HTAB04,HTAB05
DW HTAB06,HTAB07,HTAB08,HTAB09,HTAB10
;
HWALL1 DB $7C,$FF
HWALL2 DB $58,$7C,$9E,$FF
HWALL3 DB $58,$9E,$FF
HWALL4 DB $3C,$AC,$FF
HWALL5 DB $FF
;
HWALLS DB HWALL1-HWALL1
DB HWALL5-HWALL1
DB HWALL2-HWALL1
DB HWALL3-HWALL1
DB HWALL1-HWALL1
DB HWALL3-HWALL1
DB HWALL1-HWALL1
DB HWALL4-HWALL1
DB HWALL2-HWALL1
DB HWALL5-HWALL1
;
VWALL1 DB $64,$84,$FF
VWALL2 DB $38,$4C,$64,$84,$9C,$BC,$FF
VWALL3 DB $3C,$FF
VWALL4 DB $38,$5C,$9C,$BC,$FF
VWALL5 DB $4C,$74,$8C,$AC,$FF
;
VWALLS DB VWALL1-VWALL1
DB VWALL2-VWALL1
DB VWALL3-VWALL1
DB VWALL4-VWALL1
DB VWALL5-VWALL1
DB VWALL5-VWALL1
DB VWALL4-VWALL1
DB VWALL3-VWALL1
DB VWALL2-VWALL1
DB VWALL1-VWALL1
;
COLORS DB $44,$4A,$D8,$28,$86,$0C,$00,$2A
;
OCOLOR DB $DA,$0C,$00,$2A
;
ACOLOR DB $3A,$44,$2A,$DA
;
; TIMER VALUES FOR BLUE MONSTERS
STARTV DB $90,$60,$30,$04,$00,$00
;
BLUTIM DB $FF,$C0,$80,$40,$00
DB $C0,$00,$00,$00,$C0
DB $00,$00,$00,$40,$00
;
; PACMAN EXPLOSION
;
PACEXP DB $00,$00,$00,$00,$00,$92,$54,$00
DB $C6,$00,$54,$92
;
; SCORE DATA FOR PACMAN EATING
; BLUE MONSTERS 200-400-800-1600
;
; RIGHT HALF OF ALL SCORES
BLUSC0 DB $00,$00,$00,$00,$C6,$29,$29,$29,$29,$29,$C6,$00
; LEFT HALF OF "200"
BLUSC1 DB $00,$00,$00,$00,$38,$45,$05,$19,$21,$41,$7C,$00
; LEFT HALF OF "400"
BLUSC2 DB $00,$00,$00,$00,$08,$19,$29,$49,$7D,$09,$08,$00
; LEFT HALF OF "800"
BLUSC3 DB $00,$00,$00,$00,$38,$45,$45,$39,$45,$45,$38,$00
; LEFT HALF OF "1600"
BLUSC4 DB $00,$00,$00,$00,$8C,$91,$A1,$B9,$A5,$A5,$98,$00,$00
;
; HI NOTES FOR INTRO
;
HINOT1 DB $00,$00,$00,$3C,$00,$51,$00,$60
DB $00,$3C,$51,$00,$00,$60,$60,$00
DB $00,$00,$00,$39,$00,$4C,$00,$5B
DB $00,$39,$4C,$00,$00,$5B,$5B,$00
DB $00,$00,$00,$3C,$00,$51,$00,$60
DB $00,$3C,$51,$00,$00,$60,$60,$00
DB $00,$60,$5B,$55,$00,$55,$51,$4C
DB $00,$4C,$48,$44,$00,$3C,$3C,$00
;
; LO NOTES FOR INTRO
;
LONOT1 DB $A2,$F3,$F3,$F3,$00,$00,$00,$00
DB $A2,$F3,$F3,$F3,$00,$00,$00,$00
DB $99,$E6,$E6,$E6,$00,$00,$00,$00
DB $99,$E6,$E6,$E6,$00,$00,$00,$00
DB $A2,$F3,$F3,$F3,$00,$00,$00,$00
DB $A2,$F3,$F3,$F3,$00,$00,$00,$00
DB $A2,$C1,$00,$00,$00,$AD,$00,$00
DB $00,$99,$00,$00,$00,$79,$79,$00
;
; ADDRESS POINTERS FOR BLUE SCORES
;
BLSADD DW BLUSC1,BLUSC2,BLUSC3,BLUSC4
;
;
; EATING DOTS SOUND FREQ DATA
;
E1DATA DB $52,$4D,$48,$43,$3E,$39,$00
E2DATA DB $39,$43,$4D,$57,$61,$6B,$00
;
STRADD DW REDSTR,PNKSTR,GRNSTR,YELSTR
;
; PATTERN START HPOS & VPOS
;
; #1
PTRNHV DB $96,$A4
; #2
DB $62,$74
; #3
DB $82,$64
; #4
DB $62,$64
; #5
DB $62,$94
; #6
DB $52,$74
; #7
DB $96,$94
; #8
DB $A6,$74
; #9
DB $96,$54
; #10
DB $52,$B4
; #11
DB $BE,$C4
; #12
DB $82,$44
; #13
DB $52,$A4
; #14
DB $B2,$B4
; #15
DB $82,$44
; #16
DB $52,$44
;
; HOME CORNER HPOS AND VPOS
;
HOMEHV DB $BE,$2C
DB $3A,$2C
DB $BE,$C4
DB $3A,$C4
;
; PATTERN INDEX VALUES
;
PTNIDX DB PTRN01-PTRN01
DB PTRN02-PTRN01
DB PTRN03-PTRN01
DB PTRN04-PTRN01
DB PTRN05-PTRN01
DB PTRN06-PTRN01
DB PTRN07-PTRN01
DB PTRN08-PTRN01
DB PTRN09-PTRN01
DB PTRN10-PTRN01
DB PTRN11-PTRN01
DB PTRN12-PTRN01
DB PTRN13-PTRN01
DB PTRN14-PTRN01
DB PTRN15-PTRN01
DB PTRN16-PTRN01
;
; FRUIT CHARS FOR SCREEN
;
FRUCHR DB $3A,$3C,$3E,$3E,$40,$40
DB $42,$42,$46,$46,$4A,$4A
;
; FRUIT DATA FOR FRUIT LINE
; WHEN MAZCNT > 5
;
DB $4C,$4C,$4C,$4C,$4C,$4C
DB $4C,$4A,$4A,$48,$48,$44
HIFRUT DB $44,$40,$40,$3E,$3E,$3C,$3A
;
; PACMAN SPEEDS - INDEXED TO SPEED1
;
PACSPD DB $08
DB SPEED3-SPEED1
DB SPEED3-SPEED1
DB SPEED4-SPEED1
DB SPEED5-SPEED1
DB SPEED6-SPEED1
DB SPEED6-SPEED1
;
; MONSTER SPEEDS - INDEXED TO SPEED1
;
MONSPD DB SPEED1-SPEED1
DB SPEED2-SPEED1
DB SPEED3-SPEED1
DB SPEED3-SPEED1
DB SPEED4-SPEED1
DB SPEED5-SPEED1
DB SPEED5-SPEED1
;
; HIGH SCORE TEXT
;
HISCTX DB $28,$29,$27,$28,$00,$33,$23,$2F,$32,$25
;
OCINDX DB HIGH OPTCHR,HIGH CHRORG,HIGH PACCHR,HIGH CHRORG,HIGH PACCHR
; PLAYER GAME (COLOR0)
OPLGAM DB $30,$2C,$21,$39,$25,$32,$00,$27,$21,$2D,$25
; PRESS SELECT FOR (COLOR0)
OPRSEL DB $30,$32,$25,$33,$33,$00,$F3,$E5,$EC,$E5
DB $E3,$F4,$00,$26,$2F,$32
; PRESS OPTION TO (COLOR0)
OPROP1 DB $30,$32,$25,$33,$33,$00,$EF,$F0,$F4,$E9
DB $EF,$EE,$00,$34,$2F,$00
; CHANGE DIFFICULTY (COLOR0)
OPROP2 DB $23,$28,$21,$2E,$27,$25,$00,$24,$29,$26
DB $26,$29,$23,$35,$2C,$34,$39
; PRESS START TO (COLOR0)
OPRST1 DB $30,$32,$25,$33,$33,$00,$F3,$F4,$E1,$F2
DB $F4,$00,$34,$2F,$00,$00
; PLAY GAME (COLOR0)
OPRST2 DB $30,$2C,$21,$39,$00,$27,$21,$2D,$25
; (C) ATARI 1982; COLOR 3
OALOGO DB $C8,$E3,$C9,$00,$E1,$F4,$E1,$F2,$E9,$00
DB $D1,$D9,$D8,$D2
BPMSG1 DB $22,$2F,$2E,$35,$33,$00,$30,$21,$23,$2D
DB $21,$2E,$00,$26,$2F,$32
BPMSG2 DB $33,$23,$2F,$32,$29,$2E,$27,$00,$11,$10
DB $0C,$10,$10,$10,$00,$30,$34,$33
;
OPTFRT DB $3A,$3C,$3E,$3E,$40,$40
DB $44,$44,$48,$48,$4A,$4A,$4C,$4C
;
; TOP OF PACMAN TITLE
;
PACTTL DB $00,$00,$FE,$FF,$FF,$FF,$FB,$FF
DB $00,$00,$00,$80,$C0,$C1,$C1,$C3
DB $00,$00,$40,$E0,$E0,$F0,$F0,$F8
DB $00,$00,$03,$0F,$1F,$1F,$3F,$3F
DB $00,$00,$E0,$F8,$FC,$F8,$F0,$E0
DB $00,$00,$00,$00,$00,$00,$00,$3E
DB $00,$00,$08,$0C,$0E,$0F,$0F,$0F
DB $00,$00,$00,$01,$03,$07,$8F,$DF
DB $00,$00,$80,$80,$80,$80,$80,$81
DB $00,$00,$20,$70,$70,$F8,$F8,$FC
DB $00,$00,$08,$0C,$0E,$0F,$0F,$0F
DB $00,$00,$1F,$1F,$1F,$1F,$9F,$DF
;
; BOTTOM OF PACMAN TITLE
;
DB $FF,$FF,$FE,$F8,$F8,$F8,$F8,$00
DB $C3,$87,$07,$0F,$0F,$1F,$1F,$00
DB $F8,$BC,$FC,$FE,$FE,$FF,$FF,$00
DB $3F,$3F,$3F,$1F,$1F,$0F,$03,$00
DB $C0,$E0,$F0,$F8,$FC,$F8,$E0,$00
DB $3E,$3E,$00,$00,$00,$00,$00,$00
DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$00
DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$00
DB $81,$83,$83,$87,$87,$8F,$8F,$00
DB $FC,$DE,$FE,$FF,$FF,$FF,$FF,$00
DB $0F,$0F,$0F,$0F,$0F,$8F,$8F,$00
DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$00
;
;
; NIBBLES UNCOMPRESSED
;
FIZIDX DB $06,$07,$07,$08,$08,$08,$09
DB $09,$09,$0A,$0A,$0B,$0A,$0B
;
HTAB01 DB $0A,$0C,$0E,$0C,$06,$0A,$0C,$0E,$0C,$06
HTAB02 DB $0B,$0C,$0F,$0E,$0D,$0D,$0E,$0F,$0C,$07
HTAB03 DB $09,$0C,$07,$09,$06,$0A,$05,$0B,$0C,$05
HTAB04 DB $00,$00,$03,$0A,$0D,$0D,$06,$03,$00,$00
HTAB05 DB $0C,$0C,$0F,$07,$00,$00,$0B,$0F,$0C,$0C
HTAB06 DB $00,$00,$03,$0B,$0C,$0C,$07,$03,$00,$00
HTAB07 DB $0A,$0C,$0F,$0D,$06,$0A,$0D,$0F,$0C,$06
HTAB08 DB $09,$06,$0B,$0E,$0D,$0D,$0E,$07,$0A,$05
HTAB09 DB $0A,$0D,$05,$09,$06,$0A,$05,$09,$0D,$06
HTAB10 DB $09,$0C,$0C,$0C,$0D,$0D,$0C,$0C,$0C,$05
;
; TIMER VALUES FOR FLASHING MONSTERS
;
FLSTIM DB $0B,$0B,$0B,$0B,$0B
DB $0B,$0B,$0B,$07,$0B
DB $0B,$07,$07,$07,$0B
DB $07,$01,$07,$01,$01
;
; START UP PATHS FOR MONSTERS
; LEAVING BOX IN CENTER
;
REDSTR DB $04,$04,$02,$04,$01,$01,$01,$08,$08,$08,$08,$08,$0F
PNKSTR DB $04,$04,$02,$04,$01,$01,$01,$0F
GRNSTR DB $08,$08,$02,$02,$02,$08,$02,$0F
YELSTR DB $08,$08,$02,$02,$04,$04,$04,$02,$04,$02,$0F
;
; PATTERNS FOR MONSTERS TO RUN
;
PTRN01 DB 2,4,2,4,1,4,1,8,8,8,0
PTRN02 DB 1,8,8,8,2,2,4,4,4,1,0
PTRN03 DB 4,4,2,2,8,8,8,1,1,4,0
PTRN04 DB 8,1,4,1,4,2,2,2,8,1,0
PTRN05 DB 8,2,4,4,1,8,0
PTRN06 DB 8,2,2,4,1,1,0
PTRN07 DB 4,2,8,8,1,4,0
PTRN08 DB 4,2,2,8,1,1,0
PTRN09 DB 1,8,2,2,2,4,1,4,1,8,0
PTRN10 DB 1,8,2,8,2,4,4,4,4,1,8,8,0
PTRN11 DB 1,4,4,1,4,2,4,2,8,8,8,8,0
PTRN12 DB 1,8,8,2,4,2,4,2,4,4,2,4,1,1,1,8,8,8,0
PTRN13 DB 1,4,4,2,8,2,4,2,8,8,8,8,1,4,1,8,1,4,1,1,4,2,2,2,0
PTRN14 DB 1,8,1,4,4,2,2,8,8,2,4,4,4,4,1,8,1,4,1,8,1,1,8,2,2,2,2,8,0
PTRN15 DB 8,2,4,2,8,2,2,4,4,4,1,1,8,1,4,1,8,8,0
PTRN16 DB 2,4,4,1,8,8,1,8,8,2,8,1,8,8,8,8,2,4,4,4,2,4,2,4,1,4,1,4,0
;
; FRUIT SCORE TABLE FOR COMPUTING
; SCORE FOR ACTIVE PLAYER - 2 #S
;
FRSTAB DB $00,$01,$00,$03,$00,$05,$00,$05
DB $00,$07,$00,$07,$01,$00,$01,$00
DB $02,$00,$02,$00,$03,$00,$03,$00
DB $05,$00
;
; SPEED SEQUENCING VALUES
;
SPEED1 DB 3,3,3,3
SPEED2 DB 3,2,3,2
SPEED3 DB 2,2,2,3
SPEED4 DB 2,2,2,2
SPEED5 DB 2,2,2,1
SPEED6 DB 1,2,1,2
;
REVTAB DB $00,$0D,$0E,$00,$07,$00,$00,$00,$0B
BLUREV DB $00,$02,$01,$00,$08,$00,$00,$00,$04
;
; FRUIT SCORES
;
; FRUIT SCORE 100
FS0100 DB $00,$4E,$4F,$5F,$60
; FRUIT SCORE 300
FS0300 DB $00,$50,$51,$5F,$60
; FRUIT SCORE 500
FS0500 DB $00,$52,$53,$5F,$60
; FRUIT SCORE 700
FS0700 DB $00,$54,$55,$5F,$60
; FRUIT SCORE 1000
FS1000 DB $56,$57,$5E,$5F,$60
; FRUIT SCORE 2000
FS2000 DB $58,$59,$5E,$5F,$60
; FRUIT SCORE 3000
FS3000 DB $5A,$5B,$5E,$5F,$60
; FRUIT SCORE 5000
FS5000 DB $5C,$5D,$5E,$5F,$60
;
; INDEX VALUES FOR ABOVE SCORES
;
FSINDX DB $00,$05,$0A,$0A,$0F,$0F
DB $14,$14,$19,$19,$1E,$1E,$23
;
; ATTRACT MODE DATA
;
;
; ATTRACT MODE COLORS
;
ACOLRS DB $44,$4A,$D8,$28,$44,$0C,$00,$28
; SMALL DOT CHAR 3
ATCHRS DB $00,$00,$00,$18,$18,$00,$00,$00
; ENERGIZER DOT CHAR 4
DB $18,$18,$3C,$3C,$3C,$3C,$18,$18
; TOP OF MONSTER CHAR 5
DB $00,$00,$00,$00,$00,$38,$7C,$FE
; BODY OF MONSTER CHAR 6
DB $FE,$EA,$EA,$EA,$FE,$FE,$FE,$AA
;
; TEXT FOR CHAR/NICKNAME (COLOR 1)
CHNKTX DB $00,$63,$68,$61,$72,$61,$63,$74,$65,$72
DB $4F,$6E,$69,$63,$6B,$6E,$61,$6D,$65,$00
; TEXT FOR W SHADOW (COLOR 0)
CHARTX DB $00,$06,$00,$33,$28,$21,$24,$2F,$37,$00
; TEXT FOR "BLINKY" (COLOR 0)
DB $00,$02,$22,$2C,$29,$2E,$2B,$39,$02,$00
; TEXT FOR X SPEEDY (COLOR 1)
DB $00,$46,$00,$73,$70,$65,$65,$64,$79,$00
; TEXT FOR "PINKY" (COLOR 1)
DB $00,$42,$70,$69,$6E,$6B,$79,$42,$00,$00
; TEXT FOR Y BASHFUL (COLOR 2)
DB $00,$86,$00,$A2,$A1,$B3,$A8,$A6,$B5,$AC
; TEXT FOR "INKY" (COLOR 2)
DB $00,$82,$A9,$AE,$AB,$B9,$82,$00,$00,$00
; TEXT FOR Z POKEY (COLOR 3)
DB $00,$C6,$00,$F0,$EF,$EB,$E5,$F9,$00,$00
; TEXT FOR "CLYDE" (COLOR 3)
DB $00,$C2,$E3,$EC,$F9,$E4,$E5,$C2,$00,$00
; TEXT FOR A 10 PTS
; TEXT IS COLOR 0 DOT IS COLOR 2
AM10PT DB $83,$00,$11,$10,$00,$30,$34,$33
; TEXT FOR B 50 PTS
AM50PT DB $84,$00,$15,$10,$00,$30,$34,$33
; (C) ATARI 1982 (COLOR 2)
COPMSG DB $00,$00,$00,$88,$A3,$89,$00,$A1,$B4,$A1
DB $B2,$A9,$00,$91,$99,$98,$92,$00,$00,$00
;
;
; DATA FOR INTERMISSIONS
;
L756B = *; Y INDEX VALUE
;
DB $15,$2B,$41,$57,$6D,$83
;
L7571 = *
;
DB $03,$80,$01,$C0,$BA,$20,$50,$00
DB $00,$02,$05,$02,$05,$1D,$00,$04
DB $02,$13,$D0,$84
DW L780B
;
DB $00,$00,$FF,$C0,$FF,$20,$50,$00
DB $00,$02,$03,$02,$03,$00,$70,$04
DB $03,$27,$10,$72
DW L77F3
;
DB $03,$80,$01,$C0,$BA,$20,$50,$00
DB $00,$02,$05,$02,$05,$30,$00,$04
DB $02,$13,$D0,$84
DW L780B
;
DB $03,$80,$01,$00,$00,$04,$10,$00
DB $00,$04,$00,$04,$00,$00,$00,$07
DB $00,$00,$00,$00
DW L787A
;
DB $03,$80,$01,$C0,$BA,$20,$50,$00
DB $00,$02,$05,$02,$05,$30,$00,$04
DB $02,$13,$D0,$84
DW L7823
;
DB $00,$00,$FF,$B8,$00,$20,$00,$00
DB $00,$03,$00,$03,$00,$00,$00,$07
DB $00,$00,$00,$00
DW L783B
;
L75F5 = *
;
DB $03,$80,$01,$30,$BA,$30,$50,$00
DB $00,$02,$05,$02,$05,$00,$00,$06
DB $02,$13,$D0,$84
DW L78A4
DB $00,$00,$00
;
L760E = *
;
DW L7622,L7648,L766E
DW L7622,L7648,L766E
;
L761A = *
;
DW L7694,L7709,L777E,L7709
;
L7622 = *
;
DB $07,$1F,$3F,$1F,$0F,$07,$03,$01
DB $00,$00,$00,$01,$03,$07,$0F,$1F
DB $3F,$1F,$07,$00,$C0,$E0,$E0,$F0
DB $F0,$F0,$F8,$F8,$78,$F8,$F8,$F0
DB $F0,$F0,$E0,$E0,$C0,$00
;
L7648 = *
;
DB $07,$1F,$3F,$3F,$7F,$7F,$7F,$0F
DB $01,$00,$01,$0F,$7F,$7F,$7F,$3F
DB $3F,$1F,$07,$00,$C0,$E0,$E0,$F0
DB $F0,$F0,$F8,$F8,$78,$F8,$F8,$F0
DB $F0,$F0,$E0,$E0,$C0,$00
;
L766E = *
;
DB $07,$1F,$3F,$3F,$7F,$7F,$7F,$FF
DB $FF,$FF,$FF,$FF,$7F,$7F,$7F,$3F
DB $3F,$1F,$07,$00,$C0,$E0,$E0,$F0
DB $F0,$F0,$F8,$F8,$F8,$F8,$F8,$F0
DB $F0,$F0,$E0,$E0,$C0,$00
;
L7694 = *
;
DB $00,$01
DB $03,$07,$0F,$0F,$1F,$1F,$3F,$3F
DB $3F,$7F,$7F,$7F,$7F,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$7F,$7F
DB $7F,$7F,$3F,$3F,$3F,$1F,$1F,$0F
DB $0F,$07,$03,$01,$00,$78,$FE,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$FE,$FE
DB $FC,$F8,$F8,$F0,$E0,$E0,$C0,$C0
DB $80,$C0,$C0,$E0,$E0,$F0,$F8,$F8
DB $FC,$FE,$FE,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FE,$78,$00,$00,$00,$80
DB $C0,$C0,$80,$80,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$80,$80,$C0,$C0,$80
DB $00,$00,$00
;
L7709 = *
;
DB $00,$01,$03,$07,$0F
DB $0F,$1F,$1F,$3F,$3F,$3F,$7F,$7F
DB $7F,$7F,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$7F,$7F,$7F,$7F,$3F
DB $3F,$3F,$1F,$1F,$0F,$0F,$07,$03
DB $01,$00,$78,$FE,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FE,$F8,$E0,$80,$E0,$F8
DB $FE,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FE
DB $78,$00,$00,$00,$80,$C0,$C0,$E0
DB $E0,$F0,$F0,$F0,$F8,$F8,$F8,$E0
DB $80,$00,$00,$00,$00,$00,$00,$00
DB $80,$E0,$F8,$F8,$F8,$F0,$F0,$F0
DB $E0,$E0,$C0,$C0,$80,$00,$00,$00
;
L777E = *
;
DB $00,$01,$03,$07,$0F,$0F,$1F,$1F
DB $3F,$3F,$3F,$7F,$7F,$7F,$7F,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $7F,$7F,$7F,$7F,$3F,$3F,$3F,$1F
DB $1F,$0F,$0F,$07,$03,$01,$00,$78
DB $FE,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
DB $FF,$FF,$FF,$FF,$FE,$78,$00,$00
DB $00,$80,$C0,$C0,$E0,$E0,$F0,$F0
DB $F0,$F8,$F8,$F8,$F8,$FC,$FC,$FC
DB $FC,$FC,$FC,$FC,$FC,$FC,$F8,$F8
DB $F8,$F8,$F0,$F0,$F0,$E0,$E0,$C0
DB $C0,$80,$00,$00,$00
;
L77F3 = *
;
DB $01,$04,$08,$02,$05,$09,$03,$06
DB $0A,$00,$07,$0B,$01,$04,$0C,$02
DB $05,$0D,$03,$06,$0E,$00,$07,$0F
;
L780B = *
;
DB $01,$10,$14,$02,$11,$15,$03,$12
DB $16,$00,$13,$17,$01,$10,$18,$02
DB $11,$19,$03,$12,$1A,$00,$13,$1B
;
L7823 = *
;
DB $01,$10,$14,$02,$11,$15,$03,$54
DB $D6,$00,$D5,$57,$01,$10,$18,$02
DB $11,$19,$03,$58,$DA,$00,$D9,$5B
;
L783B = *
;
DB $00,$00,$3A,$00,$00,$3B,$00,$00
DB $3C,$00,$36,$3D,$00,$B7,$3E,$00
DB $B8,$3F,$00,$B9,$00,$00,$00,$44
;
DB $00,$00,$45
DB $00,$00,$46,$00,$40,$47,$00,$C1
DB $48,$00,$C2,$49,$00,$C3,$00,$00
DB $00,$4E,$00,$00,$4F,$00,$00,$50
DB $00,$4A,$51,$00,$CB,$52,$00,$CC
DB $53,$00,$CD,$00
;
L787A = *
DB $00,$2B,$14,$29
DB $2C,$15,$2A,$2D,$AF,$00,$AE,$B0
DB $00,$00,$00,$00,$00,$31,$00,$00
DB $32,$00,$33,$14,$29,$34,$15,$2A
DB $35,$AF,$00,$AE,$B0,$00,$00,$00
DB $00,$00,$31,$00,$00,$32
;
L78A4 = *
DB $01,$10
DB $14,$02,$11,$15,$03,$12,$16,$00
DB $13,$1C,$00,$00,$00,$00,$00,$00
DB $01,$10,$18,$02,$11,$19,$03,$12
DB $1D,$00,$13,$1E,$00,$00,$00,$00
DB $00,$00,$01,$10,$14,$02,$11,$15
DB $03,$12,$16,$00,$13,$1F,$00,$00
DB $00,$00,$00,$00,$01,$10,$18,$02
DB $11,$19,$03,$12,$1D,$00,$13,$20
DB $00,$00,$21,$00,$00,$00,$01,$10
DB $14,$02,$11,$15,$03,$12,$16,$00
DB $22,$23,$00,$00,$24,$00,$00,$00
DB $01,$10,$18,$02,$11,$19,$03,$12
DB $1D,$00,$25,$26,$00,$00,$1F,$00
DB $00,$00,$01,$10,$18,$02,$11,$19
DB $03,$12,$1D,$00,$27,$26,$00,$00
DB $20,$00,$00,$28
;
ICOLR0 DB $32,$82,$32,$32,$32,$0F
ICOLR1 DB $0F,$0F,$0F,$0F,$0F,$FA
ICOLR2 DB $63,$00,$63,$64,$64,$33
ICOLR3 DB $00,$00,$FA,$FA,$FA,$83
;
;
IMUSIC = *
;
DB $48,$AA,$90,$A8,$00,$AA,$90,$A8
DB $48,$AA,$00,$A8,$00,$AA,$90,$A8
DB $48,$AA,$90,$A8,$00,$AA,$90,$A8
DB $55,$AA,$00,$A8,$60,$AA,$90,$A8
DB $48,$AA,$90,$A8,$48,$AA,$90,$A8
DB $48,$AA,$00,$A8,$48,$AA,$90,$A8
DB $39,$AA,$72,$A8,$39,$AA,$6C,$A8
DB $39,$AA,$66,$A8,$39,$AA,$60,$A8
DB $48,$AA,$90,$A8,$48,$A0,$90,$A8
DB $48,$AA,$90,$A0,$48,$A0,$90,$A8
DB $48,$AA,$90,$A8,$48,$A0,$90,$A8
DB $55,$AA,$00,$A8,$60,$AA,$90,$A8
DB $48,$AA,$90,$A8,$48,$AA,$90,$A8
DB $55,$AA,$00,$A8,$72,$AA,$90,$A8
DB $72,$AA,$6C,$A8,$72,$AA,$66,$A8
DB $72,$AA,$60,$A8,$48,$AA,$90,$A8
DB $00,$AA,$90,$A8,$48,$AA,$00,$A8
DB $00,$AA,$90,$A8,$48,$AA,$90,$A8
DB $55,$A0,$90,$A8,$55,$AA,$1D,$A0
DB $60,$AA,$90,$A8,$48,$AA,$90,$A8
DB $48,$AA,$90,$A8,$39,$AA,$90,$A0
DB $39,$AA,$90,$A8,$35,$AA,$72,$A8
DB $35,$AA,$6C,$A8,$32,$AA,$66,$A8
DB $32,$AA,$60,$A8,$2F,$AA,$5B,$A8
DB $2F,$AA,$60,$A8,$35,$AA,$6C,$A8
DB $35,$AA,$6C,$A8,$39,$AA,$72,$A8
DB $39,$AA,$72,$A8,$48,$AA,$90,$A8
DB $48,$AA,$90,$A8,$39,$AA,$60,$A8
DB $39,$AA,$60,$A8,$48,$AA,$72,$A8
DB $48,$AA,$72,$A8,$00,$00,$00,$00
;
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ

112
PACDAT3.ASM Normal file
View File

@@ -0,0 +1,112 @@
;
ICHARS = *
;
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$01
DB $00,$00,$00,$00,$00,$00,$15,$55
DB $00,$00,$00,$00,$00,$00,$00,$50
DB $05,$15,$15,$55,$56,$55,$55,$55
DB $55,$55,$55,$95,$A6,$95,$55,$55
DB $54,$55,$55,$95,$A5,$95,$55,$55
DB $00,$00,$00,$40,$40,$40,$40,$40
;
DB $55,$59,$66,$55,$55,$55,$51,$40
DB $55,$59,$66,$95,$55,$55,$51,$40
DB $55,$59,$66,$95,$55,$55,$51,$40
DB $40,$40,$40,$40,$40,$40,$40,$40
DB $55,$59,$66,$55,$55,$55,$15,$04
DB $55,$59,$66,$95,$55,$55,$15,$04
DB $55,$59,$66,$95,$55,$55,$15,$04
DB $40,$40,$40,$40,$40,$40,$00,$00
;
DB $05,$19,$2A,$FA,$FA,$FA,$6A,$59
DB $55,$55,$56,$5F,$9F,$5F,$56,$55
DB $54,$95,$A5,$A5,$A9,$A5,$A5,$95
DB $00,$00,$00,$40,$40,$40,$40,$40
DB $55,$55,$55,$55,$55,$55,$51,$40
DB $55,$55,$55,$55,$55,$55,$51,$40
DB $55,$55,$55,$55,$55,$55,$51,$40
DB $40,$40,$40,$40,$40,$40,$40,$40
;
DB $55,$55,$55,$55,$55,$55,$15,$04
DB $55,$55,$55,$55,$55,$55,$15,$04
DB $55,$55,$55,$55,$55,$55,$15,$04
DB $40,$40,$40,$40,$40,$40,$00,$00
DB $40,$40,$50,$50,$50,$50,$50,$50
DB $55,$55,$55,$55,$55,$55,$15,$05
DB $40,$54,$54,$54,$54,$54,$54,$54
DB $40,$55,$55,$55,$55,$55,$55,$55
;
DB $50,$55,$55,$55,$55,$55,$55,$55
DB $00,$40,$40,$40,$40,$40,$40,$40
DB $00,$00,$00,$40,$40,$40,$40,$50
DB $54,$55,$55,$55,$55,$55,$55,$55
DB $00,$50,$50,$50,$50,$50,$50,$50
DB $00,$00,$00,$40,$40,$50,$54,$55
DB $55,$55,$55,$55,$55,$55,$55,$55
DB $00,$00,$00,$40,$50,$54,$55,$55
;
DB $00,$40,$40,$40,$40,$40,$40,$40
DB $00,$00,$00,$00,$00,$00,$04,$55
DB $00,$00,$00,$00,$00,$00,$00,$40
DB $00,$08,$28,$2A,$2A,$5A,$55,$55
DB $55,$95,$A6,$A6,$A6,$95,$55,$55
DB $40,$88,$8A,$AA,$AA,$A9,$55,$55
DB $00,$00,$00,$00,$00,$40,$40,$C0
DB $55,$57,$57,$57,$57,$5F,$7F,$7F
;
DB $C0,$C0,$C0,$C0,$00,$00,$F0,$F0
DB $00,$00,$00,$00,$01,$05,$15,$54
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$0A,$2A,$2A,$2A,$5A,$55,$55
DB $55,$95,$A6,$A6,$F6,$D5,$55,$55
DB $40,$A8,$AA,$AA,$AF,$AD,$55,$55
DB $00,$00,$00,$00,$00,$00,$00,$0A
DB $00,$05,$15,$17,$17,$97,$A5,$AA
;
DB $00,$14,$55,$D7,$D7,$D7,$A5,$A0
DB $00,$00,$00,$C0,$C0,$C0,$00,$00
DB $00,$00,$00,$00,$03,$3F,$3F,$FF
DB $00,$00,$00,$00,$F0,$FF,$FF,$FF
DB $00,$00,$00,$00,$0F,$FF,$FF,$FF
DB $0A,$2A,$FE,$FF,$FF,$FF,$FF,$FF
DB $AA,$AA,$AA,$AA,$AA,$EA,$F0,$F0
DB $A0,$A0,$A0,$A0,$AA,$AA,$2A,$2A
;
DB $00,$00,$00,$00,$00,$02,$0A,$0A
DB $00,$05,$15,$17,$97,$97,$A5,$AA
DB $00,$14,$55,$D7,$D7,$D7,$A5,$80
DB $00,$00,$00,$C0,$C0,$C0,$00,$00
DB $00,$00,$00,$00,$03,$0F,$3F,$FF
DB $00,$00,$00,$00,$FF,$FF,$FF,$FF
DB $00,$00,$00,$03,$FF,$FF,$FF,$FF
DB $2A,$EA,$FF,$FF,$FF,$FF,$FF,$FF
;
DB $AA,$AA,$AA,$A8,$EA,$EA,$F0,$F0
DB $80,$00,$00,$00,$A8,$A8,$A8,$A8
DB $00,$00,$00,$00,$02,$0A,$0A,$2A
DB $00,$05,$15,$17,$97,$97,$A5,$AA
DB $00,$14,$55,$D7,$D7,$D7,$A5,$A0
DB $00,$00,$00,$C0,$C0,$C0,$00,$00
DB $00,$00,$00,$03,$0F,$3F,$FF,$FF
DB $00,$00,$00,$F0,$FC,$FF,$FF,$FF
;
DB $00,$00,$03,$0F,$3F,$FF,$FF,$FF
DB $2A,$FA,$FF,$FF,$FF,$FF,$FF,$FF
DB $AA,$AA,$AA,$AA,$EA,$EA,$F2,$F2
DB $80,$80,$00,$00,$A0,$A0,$A0,$A0
DB $54,$95,$A5,$A5,$A9,$A5,$A5,$95
DB $00,$00,$00,$40,$40,$40,$40,$C0
DB $57,$7D,$D5,$75,$D5,$D5,$71,$C0
DB $40,$40,$40,$40,$40,$40,$40,$40
;
DB $54,$95,$A5,$A5,$A9,$A5,$A5,$95
DB $00,$00,$00,$40,$40,$40,$40,$C0
DB $57,$5F,$75,$D5,$75,$D5,$35,$04
DB $40,$40,$40,$40,$40,$40,$00,$00
;
B,$5B,$00
DB $00,$00,$00,$3C,$00,$51,$00,$60
DB $00,$3C,$51,$00,$00,$60,$60,$00
DB $00,$60,$5B,$55,$00,$55,$51,$4C
DB

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
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ

153
SYSTEXT.ASM Normal file
View File

@@ -0,0 +1,153 @@
; @com.wudsn.ide.asm.mainsourcefile=PACMAN.ASM
; SPACE 2
; Operating System Equates ------------------------
; SPACE 1
DOSVEC EQU $000A ;this program's start vector
DOSINI EQU $000C ;this program's init vector
POKMSK EQU $0010 ;mask for POKEY IRQ enable
BRKKEY EQU $0011 ;BREAK flag
RTCLOK EQU $0012 ;60 Hz clock
ATRACT EQU $4D
DRKMSK EQU $4E
COLRSH EQU $4F
VDSLST EQU $0200
VIMIRQ EQU $0216 ;immediate IRQ vector
SRTIMR EQU $022B ;software-driven keydown timer
SDMCTL EQU $022F ;DMA control shadow
SDLSTL EQU $0230 ;display list pointer (low byte)
SDLSTH EQU $0231 ;display List pointer (high byte)
SSKCTL EQU $0232 ;serial port control
LPENH EQU $0234 ;light pen horizontal position
LPENV EQU $0235 ;light pen vertical postion
GPRIOR EQU $026F ;player priority select
PADDL0 EQU $0270 ;pot 0
STICK0 EQU $0278 ;joystick 0 shadow
STRIG0 EQU $0284 ;red button 0 shadow
STRIG1 EQU $0285 ;red button 1 shadow
SHFLK EQU $02BE ;shift-lock flag
PCOLR0 EQU $02C0 ;player color shadow
PCOLR1 EQU $02C1
PCOLR2 EQU $02C2
PCOLR3 EQU $02C3
COLOR0 EQU $02C4 ;playfield color shadow
COLOR1 EQU $02C5
COLOR2 EQU $02C6
COLOR3 EQU $02C7
MEMLO EQU $02E7 ;start of user memory
KEYDEL EQU $02F1 ;KEY DELAY
CHART EQU $2F3 ;character control
CHBAS EQU $2F4 ;character base address
CH EQU $02FC ;character buffer
DDEVIC EQU $0300 ;peripheral bus ID number
DUNIT EQU $0301 ;unit number
DCOMND EQU $0302 ;bus command ordinal
DSTATS EQU $0303 ;command type/status return
DBUFLO EQU $0304 ;data buffer pointer
DBUFHI EQU $0305
DTIMLO EQU $0306 ;device timeout in seconds
DBYTLO EQU $0308 ;number of bytes transferred
DBYTHI EQU $0309
DAUX1 EQU $030A ;command auxiliary bytes
DAUX2 EQU $030B
ICCOM EQU $0342 ;CIO command block
ICBAL EQU $0344
ICBAH EQU $0345
ICBLL EQU $0348
ICBLH EQU $0349
ICAX1 EQU $034A
ICAX2 EQU $034B
CHRORG EQU $E000 ;OS charset
CIOV EQU $E456 ;CIO request vector
SIOV EQU $E459 ;SIO request vector
SETVBV EQU $E45C ;system interrupt init vector
XITVBV EQU $E462 ;system VBLANK return handler
OSRETN EQU $E474 ;system WARM START entry
CLICK EQU $FCD8 ;keyclick routine
; EJECT
; Hardware Registers --------------------------------
; SPACE 1
HPOSP0 EQU $D000 ;player position registers
HPOSP1 EQU $D001
HPOSP2 EQU $D002
HPOSP3 EQU $D003
M0PF EQU $D000 ;missile 0 to playfield collision
M1PF EQU $D001
M2PF EQU $D002
M3PF EQU $D003
HPOSM0 EQU $D004 ;horizontal position of missile 0
HPOSM1 EQU $D005
HPOSM2 EQU $D006
HPOSM3 EQU $D007
P0PF EQU $D004 ;player 0 to playfield collision
M0PL EQU $D008 ;missile 0 to player collision
M1PL EQU $D009
M2PL EQU $D00A
M3PL EQU $D00B
SIZEP0 EQU $D008 ;player size registers
P0PL EQU $D00C ;player 0 to player collision
SIZEM EQU $D00C ;sizes for all missiles