822 lines
10 KiB
NASM
822 lines
10 KiB
NASM
;
|
||
; 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 |