From 5a1cdadc645b1e034603ddf400e8c1fe046b7e95 Mon Sep 17 00:00:00 2001 From: Dillon Depeel Date: Mon, 15 May 2023 12:46:46 -0700 Subject: [PATCH] added files --- PAC1.ASM | 1118 +++++++++++++++++++++++++++++++++++++++++++++++++++ PAC2.ASM | 754 ++++++++++++++++++++++++++++++++++ PAC3.ASM | 822 +++++++++++++++++++++++++++++++++++++ PAC4.ASM | 1010 ++++++++++++++++++++++++++++++++++++++++++++++ PACDAT1.ASM | 141 +++++++ PACDAT2.ASM | 729 +++++++++++++++++++++++++++++++++ PACDAT3.ASM | 112 ++++++ PACMAN.ASM | 626 ++++++++++++++++++++++++++++ SYSTEXT.ASM | 153 +++++++ 9 files changed, 5465 insertions(+) create mode 100644 PAC1.ASM create mode 100644 PAC2.ASM create mode 100644 PAC3.ASM create mode 100644 PAC4.ASM create mode 100644 PACDAT1.ASM create mode 100644 PACDAT2.ASM create mode 100644 PACDAT3.ASM create mode 100644 PACMAN.ASM create mode 100644 SYSTEXT.ASM diff --git a/PAC1.ASM b/PAC1.ASM new file mode 100644 index 0000000..94c82a5 --- /dev/null +++ b/PAC1.ASM @@ -0,0 +1,1118 @@ +; +VBSUBS LDA ATSEQU + BNE VBATTR + JMP CKOPTS +VBATTR CMP #1 + BNE CKATS2 + LDX #0 + TXA +CLRAOP STA OPTSCN+$50,X + STA OPTSCN+$150,X + DEX + BNE CLRAOP + LDX #$0F +BPMLP1 LDA BPMSG1,X + STA OPTSCN+$11A,X + DEX + BPL BPMLP1 + LDX #$11 +BPMLP2 LDA BPMSG2,X + STA OPTSCN+$141,X + DEX + BPL BPMLP2 + LDA #$FF + STA ATTIMR + INC ATSEQU + RTS +CKATS2 CMP #2 + BNE CKATS3 + LDA ATTIMR + BEQ CAS2ER + JMP DECATM +CAS2ER LDA #0 + LDX #$11 +C2ERLP STA OPTSCN+$119,X + STA OPTSCN+$141,X + DEX + BPL C2ERLP + LDA #$7F + STA ATTIMR + INC ATSEQU + RTS +CKATS3 CMP #3 + BNE CKATS4 + LDA ATTIMR + BEQ CS3SCN + JMP DECATM +CS3SCN LDX #0 + TXA +CLRASC STA PATSCN,X + STA PATSCN+$100,X + INX + BNE CLRASC + INC ATSEQU + RTS +CKATS4 CMP #4 + BNE CKATS5 + LDA #LOW ADLIST + STA SDLSTL + STA DLISTL + LDA #HIGH ADLIST + STA SDLSTH + STA DLISTH + LDA #LOW ADLIV + STA VDSLST + LDA #HIGH ADLIV + STA VDSLST+1 + LDX #7 +SETACL LDA ACOLRS,X + STA PCOLR0,X + DEX + BPL SETACL + LDA #$7F + STA ATTIMR + INC ATSEQU + RTS +CKATS5 CMP #5 + BNE CKATS6 + LDA ATTIMR + BEQ C4NICK + JMP DECATM +C4NICK LDX #19 +ASTART LDA CHNKTX,X + STA PATSCN+$28,X + DEX + BPL ASTART + INC ATSEQU + RTS +CKATS6 CMP #6 + BNE CKATSQ + LDX #0 + TXA + JSR INITPL + LDX #$7F +INIAP0 STA $80,X + DEX + BPL INIAP0 + JSR ATINIT + INC ATSEQU + LDA #ADELAY + STA ATTIMR + RTS +CKATSQ LDA ATSEQU + CMP #$16 + BCC CKATMR + JMP SEQATM +CKATMR LDA ATTIMR + BNE DECATM + JSR SEQATR + INC ATSEQU + LDA #ADELAY + STA ATTIMR + RTS +DECATM DEC ATTIMR + RTS +; +CKOPTS LDY OPTION + BNE TSTOPT + JMP VBGAME +TSTOPT CPY #1 + BNE VBOPT2 +; +; BUILD TITLE SCREEN +; + JSR OPTTTL + LDX #0 + TXA +OPSCCL STA OPTSCN,X + STA OPTSCN+$100,X + STA PACMAZ+$300,X + DEX + BNE OPSCCL + STA COLOR1 + LDX #$0D +PLOGOL LDA OALOGO,X + STA OPTSCN+$157,X + DEX + BPL PLOGOL + INX +PTTLLP TXA + CLC + ADC #$C1 + STA OPTSCN+$18,X + TXA + ADC #$CD + STA OPTSCN+$2C,X + INX + CPX #$0C + BNE PTTLLP +VBOP1I INC OPTION +VBOP1X RTS +; +; TIME OUT TITLE SCREEN +; +VBOPT2 CPY #2 + BNE VBOPT3 + LDA ATCLOK + CMP RTCLOK+2 + BNE VBOP1X + LDA #7 + STA ATCLOK + BNE VBOP1I +; +; BUILD OPTION SCREEN +; +VBOPT3 LDA RTCLOK+2 + BNE OPTSCR + DEC ATCLOK + BNE OPTSCR + LDA #1 + STA ATSEQU +OPTSCR LDA #0 + LDX #$11 +OPTCL2 STA OPTSCN+$119,X + STA OPTSCN+$141,X + DEX + BPL OPTCL2 + LDX NUMPLY + INX + TXA + ORA #$50 + STA OPTSCN+$54 + LDA NUMPLY + BNE PMOPT3 + CPY #3 + BNE SAME1P + JSR SET1PL +SAME1P LDA #$12 + BNE PMOPT4 +PMOPT3 CPY #3 + BNE SAME2P + JSR SET2PL +SAME2P LDA #$11 +PMOPT4 STA OPTSCN+$90 + LDX #$0A +PMO4LP LDA OPLGAM,X + STA OPTSCN+$92,X + ORA #$40 + STA OPTSCN+$56,X + DEX + BPL PMO4LP + JSR OPTTTL + LDX #$0F +PMO5LP LDA OPRSEL,X + STA OPTSCN+$7A,X + LDA OPROP1,X + STA OPTSCN+$F2,X + LDA OPRST1,X + STA OPTSCN+$156,X + DEX + BPL PMO5LP + LDX DIFOPT + LDA OPTFRT,X + STA OPTSCN+$C6 + CLC + ADC #1 + STA OPTSCN+$C7 + LDX #$10 +PMO7LP LDA OPROP2,X + STA OPTSCN+$105,X + DEX + BPL PMO7LP + LDX #8 +PMO9LP LDA OPRST2,X + STA OPTSCN+$16D,X + DEX + BPL PMO9LP + RTS +; +VBGAME LDA ATTIMR + BEQ VBGAM1 + LDA RTCLOK+2 + AND #7 + BNE VBGAM1 + DEC ATTIMR +VBGAM1 LDA PAUSEF + BEQ VBGAM2 + JMP CLRAUD +VBGAM2 JSR FLSHXU + LDA RSTRTF + BEQ TSTGMO + CMP #2 + BEQ VTUNES +TSTGMO LDA GMOVRF + BEQ TSTRRK + LDA NUMPLY + BEQ VFLS1O + JSR FLS2ON +VFLS1O JMP FLS1ON +TSTRRK LDA RRFLAG + BEQ TSTVRD + JMP RERACK +TSTVRD LDA READYF + BNE VREADY + LDA INTROF + BNE VINTRO +VSQUIT RTS +VTUNES INC INTROF + LDA #0 + STA ATRACT + STA RSTRTF + JMP READY1 +VINTRO LDA RTCLOK+2 + AND #3 + BNE VSQUIT +VSONGS LDX NOTCNT + CPX #$40 + BEQ VSTART + LDA HINOT1,X + STA AUDF1 + LDA LONOT1,X + STA AUDF2 + LDA #$A8 + STA AUDC1 + LDA #$A4 + STA AUDC2 + INC NOTCNT + CPX #$28 + BNE VSQUIT + JMP READY2 +VSTART INC READYF +VSTRT1 INC M1STAT + JSR READY3 +VREADY LDA RESETF + BEQ VCONTN + CMP #1 + BNE RESET2 + JSR VRESET + LDA SWAPPF + BNE VSQUIT +VRSTGM LDA GMOVRF + BNE VSQUIT +CRESET INC RESETF + LDA #$40 + STA RESETT +CRESTX RTS +; +RESET2 LDA RESETT + BEQ VSTRT2 + DEC RESETT +VGONE1 RTS +VSTRT2 LDA #0 + STA RESETF + BEQ VSTRT1 +VCONTN JSR BLINKR + LDA VFIZST + BEQ VPLAYR + JSR VFIZZL + JMP FIZZIE +VPLAYR JSR EYONLY + LDA VFREEZ + BEQ VFRUIT + JMP VGULPR +VFRUIT JSR FRUITY + JSR DOTTST + LDA RRFLAG + BNE VPLYUD +VCOLLS JSR COLCHK + LDA VFREEZ + BNE VGONE2 + LDA VFIZST + BEQ VPLYUD +VGONE2 RTS +VPLYUD JSR FLITEC + LDA VFREEZ + BNE VGONE2 + JSR VEATER + JSR GOBBLE + JSR SKIRTS +; +; SPEED OF PACMAN +; +SPDPAC LDA PACADV + BEQ PACREG + LDA #0 + BEQ SPDPC1 +PACREG LDA PACDLY + BNE SPDPC1 + LDX #4 + JSR SPDSEQ +SPDPC1 STA PACCNT + LDA #0 + STA PACADV + JSR PMSTIK + LDA #0 + STA PACDLY + JSR MUNCHY + LDA RTCLOK+2 + AND #$03 + BNE UDMONS + JSR STRTMN +UDMONS JSR CHSSEQ + LDA PACADV + BNE VSUBSX + LDX #3 +; +; SPEED HANDLER FOR MONSTERS +; +; X REG = 0-3 FOR MONSTERS 1-4 +; +SPDMON LDA M1STAT,X + AND #$7F + BEQ NXMSPD + LDA RTCLOK+2 + AND #7 + BNE SPMOK1 + LDA M1TIMR,X + BEQ SPMOK1 + DEC M1TIMR,X +SPMOK1 LDA M1STAT,X + AND #$3F + BEQ NXMSPD +SPMOK2 LDA M1STAT,X + ASL A + BMI NXMSPD +SPMOK3 LDA M1VPOS,X + CMP #$74 + BNE SPDBLU + LDA M1HPOS,X + CMP #$A7 + BCS SPDSLO + CMP #$52 + BCC SPDSLO +SPDBLU LDA M1STAT,X + BPL SPDREG +SPDSLO JSR SPDSEQ + CMP #0 + BNE NXMSPD + LDY M1DELY,X + CPY #1 + BNE MONDLA + STA M1DELY,X + BEQ SPDUPD +MONDLA LDA #1 + STA M1DELY,X + BNE NXMSPD +SPDREG JSR SPDSEQ + CMP #0 + BNE NXMSPD +SPDUPD JSR MONSTR +NXMSPD DEX + BPL SPDMON +VSUBSX RTS +; +; ***** PACMAN ATTRACT MODE ***** +; +ATINIT LDA #$11 + STA GPRIOR + LDA #$E0 + STA PMHPOS + LDA #$EC + STA M1HPOS + LDA #$F5 + STA M2HPOS + LDA #$FE + STA M3HPOS + LDA #$07 + STA M4HPOS + LDA #$8C + STA PMVPOS + STA M1VPOS + STA M2VPOS + STA M3VPOS + STA M4VPOS + LDA #$2A + STA PACCLR + RTS +; +; +; SEQUENCINC OF ATTRACT DISPLAY +; +SEQATR LDA ATSEQU + CMP #7 + BNE ATSEQ8 + LDA #$05 + STA PATSCN+61 + LDA #$06 + STA PATSCN+81 + RTS +; +ATSEQ8 CMP #8 + BNE ATSEQ9 + LDX #0 + LDY #80 + JMP ATSHOW +ATSEQ9 CMP #9 + BNE ATSEQA + LDX #10 + LDY #90 + JMP ATSHOW +ATSEQA CMP #$0A + BNE ATSEQB + LDA #$45 + STA PATSCN+101 + LDA #$46 + STA PATSCN+121 + RTS +ATSEQB CMP #$0B + BNE ATSEQC + LDX #20 + LDY #120 + JMP ATSHOW +ATSEQC CMP #$0C + BNE ATSEQD + LDX #30 + LDY #130 + JMP ATSHOW +ATSEQD CMP #$0D + BNE ATSEQE + LDA #$85 + STA PATSCN+141 + LDA #$86 + STA PATSCN+161 + RTS +ATSEQE CMP #$0E + BNE ATSEQF + LDX #40 + LDY #160 + JMP ATSHOW +ATSEQF CMP #$0F + BNE ATSQ10 + LDX #50 + LDY #170 + JMP ATSHOW +ATSQ10 CMP #$10 + BNE ATSQ11 + LDA #$C5 + STA PATSCN+181 + LDA #$C6 + STA PATSCN+201 + RTS +ATSQ11 CMP #$11 + BNE ATSQ12 + LDX #60 + LDY #200 + JMP ATSHOW +ATSQ12 CMP #$12 + BNE ATSQ13 + LDX #70 + LDY #210 + JMP ATSHOW +ATSQ13 CMP #$13 + BNE ATSQ14 + LDX #7 +ATSQDL LDA AM10PT,X + STA PATSCN+325,X + LDA AM50PT,X + STA PATSCN+365,X + DEX + BPL ATSQDL + RTS +ATSQ14 CMP #$14 + BNE ATSEQX + LDA #$84 + STA PATSCN+261 + LDX #19 +ACOPLP LDA COPMSG,X + STA PATSCN+400,X + DEX + BPL ACOPLP +ATSEQX RTS +; +SEQATM JSR FLS1DT + LDA ATSEQU + CMP #$16 + BNE ATSQ17 + LDA RTCLOK+2 + AND #$0F + BNE ABNKON + LDA #0 + STA PATSCN+261 + STA PATSCN+365 + BEQ CHASEL +ABNKON CMP #8 + BNE CHASEL + LDA #$84 + STA PATSCN+261 + STA PATSCN+365 +CHASEL JSR SKIRTS + LDA RTCLOK+2 + AND #1 + BNE CHASL1 + LDA #1 + BNE CHASL2 +CHASL1 LDA PMHPOS + CMP #$48 + BEQ CHACLS + CMP #$70 + BEQ CHACLS + CMP #$98 + BEQ CHACLS + BNE CHSLFT +CHACLS LDX #3 +CHSCLP DEC M1HPOS,X + DEX + BPL CHSCLP +CHSLFT LDX #3 +CHSLLP LDA #4 + JSR MONHND + DEX + BPL CHSLLP + LDA #0 +CHASL2 STA PACCNT + LDA PMHPOS + CMP #$38 + BEQ STOPLF + JSR PACLF + RTS +STOPLF INC ATSEQU + RTS +ATSQ17 CMP #$17 + BNE ATSQ18 + LDA #$80 + STA M1STAT + STA M2STAT + STA M3STAT + STA M4STAT + LDA #$84 + STA PCOLR0 + STA PCOLR1 + STA PCOLR2 + STA PCOLR3 + LDA #$14 + STA GPRIOR + LDA #$FF + STA GLPCNT + LDA #0 + STA VFREEZ + STA PATSCN+261 + STA HITCLR + INC ATSEQU + LDA ATSEQU +ATSQ18 CMP #$18 + BNE ATSQ19 + LDA VFREEZ + BNE DECFRZ + LDX GLPCNT + CPX #3 + BEQ ATDONE + INX + JSR CHASER + JSR COLCHK + RTS +DECFRZ LDA VGLPC2 + CMP #$30 + BNE DCGLPF + LDX GULPED + LDA #0 + STA HPOSP0,X + STA VFREEZ + LDA #$2A + STA PACCLR + SEC + LDA PMHPOS + SBC #4 + STA PMHPOS + RTS +DCGLPF DEC VGLPC2 + RTS +ATDONE LDA #0 + STA ATSEQU + LDA #7 + STA ATCLOK +ATSQ19 RTS + ; +CHASER JSR SKIRTS + LDA RTCLOK+2 + AND #3 + BNE CHASRP +CHSRML LDA #8 + JSR MONHND + INX + CPX #4 + BNE CHSRML +CHASRP LDA RTCLOK+2 + AND #1 + BNE CHASR1 + LDA #1 + BNE CHASR2 +CHASR1 LDA #0 +CHASR2 STA PACCNT + JSR PACRT + RTS + +; +ATSHOW LDA #9 + STA TEMLOC +ATSHWL LDA CHARTX,X + STA PATSCN,Y + INX + INY + DEC TEMLOC + BPL ATSHWL + RTS +; +FLS1DT LDA RTCLOK+2 + AND #$0F + BNE FLS1DO + LDA #0 + STA PATSCN+365 + RTS +FLS1DO CMP #8 + BNE FLS1DX + LDA #$84 + STA PATSCN+365 +FLS1DX RTS +; +; ATTRACT MODE DLI ROUTINE +; +ADLIV PHA + TXA + PHA + TYA + PHA + LDX DLICNT + BNE N1ADLI + LDA #HIGH AMCSET + STA WSYNC + STA CHBASE + BNE ADLIXX +N1ADLI CPX #1 + BNE N2ADLI + LDA #$4A + EOR COLRSH + AND DRKMSK + TAX + LDA #$D8 + EOR COLRSH + AND DRKMSK + STA WSYNC + STX COLPF1 + STA COLPF2 + BNE ADLIXX +N2ADLI CPX #2 + BNE N3ADLI + LDA PACCLR + EOR COLRSH + AND DRKMSK + LDX ACOLR1; $3A + STA WSYNC + STA COLPF3 + STX COLPF2 + BNE ADLIXX +N3ADLI CPX #3 + BNE N4ADLI + LDA #$0C + EOR COLRSH + AND DRKMSK + LDX ACOLR2; $44 + STA WSYNC + STA COLPF0 + STX COLPF1 + BNE ADLIXX +N4ADLI LDA #HIGH PACCHR + LDX ACOLR4; $DA + LDY ACOLR3; $2A + STA WSYNC + STA CHBASE + STX COLPF0 + STY COLPF3 +ADLIXX INC DLICNT + PLA + TAY + PLA + TAX + PLA + RTI +; +; COLLISION CHECK +; +COLCHK LDX #0 + LDY #1 +COLLLP LDA M1STAT,X + ASL A + BMI NXCOLL + TYA + BIT M1PL + BEQ NXCOLL + BIT M2PL + BEQ NXCOLL + LDA PMVPOS + CMP M1VPOS,X +SBCMXV BCS PMBLMX + SEC + LDA M1VPOS,X + SBC PMVPOS + BNE TSTMXC +PMBLMX SBC M1VPOS,X +TSTMXC CMP #5 + BCC STRCOL +NXCOLL TYA + ASL A + TAY + INX + CPX #4 + BNE COLLLP +COLCX1 JMP COLCKX +STRCOL LDA M1STAT,X + BMI ZAPGST + JMP PMDEAD +ZAPGST LDA #$42 + STA M1STAT,X + STX GULPED + INC GLPCNT + SEC + LDA PMHPOS + SBC #4 + STA HPOSM3 + CLC + LDY #2 +REPOSL ADC #2 + STA HPOSM0,Y + DEY + BPL REPOSL + ADC #2 + STA HPOSP0,X + LDA #$DC + STA PACCLR + STA PCOLR0,X + LDY ATSEQU + BNE CKOFFS + STA COLOR3 +CKOFFS LDA PMVPOS +; + CMP M1VPOS,X + BEQ NOOFFS + BCC OFFDWN + LDA #$FE + BMI STROFF +OFFDWN LDA #2 +STROFF CLC + ADC PMVPOS +; +NOOFFS STA SCNSC1 + STA SCNSC2 + LDA #HIGH PMADDR+3 + STA SCNSC1+1 + TXA + CLC + ADC SCNSC1+1 + ADC #1 + STA SCNSC2+1 + LDA GLPCNT + ASL A + TAY + LDA BLSADD,Y + STA PIXGET + INY + LDA BLSADD,Y + STA PIXGET+1 + LDY #$0F +STBSCL LDA (PIXGET),Y + STA (SCNSC1),Y + LDA BLUSC0,Y + STA (SCNSC2),Y + DEY + BPL STBSCL + LDA #0 + STA AUDC2 + INC VFREEZ + LDA #$84 + STA VGLPC2 + LDA #2 + STA VGLPC1 + LDA #$14 + STA GPRIOR + LDA ATSEQU + BEQ CKGPS0 + JMP CLRHIT +CKGPS0 LDA GLPCNT + BNE CKGPS1 + LDA #2 + BNE UDGPSC +CKGPS1 CMP #1 + BNE CKGPS2 + LDA #4 + BNE UDGPSC +CKGPS2 CMP #2 + BNE CKGPS3 + LDA #8 + BNE UDGPSC +CKGPS3 LDA #1 + STA SCOREX+2 + LDA #6 +UDGPSC STA SCOREX+3 + JMP PSCORE +PMDEAD LDA PMSTAT + ORA #$80 + STA PMSTAT + JSR CLRAUD + LDA #1 + STA MSTILL + STA VFIZST + LDA #$60 + STA VFIZSQ +COLCKX LDA #2 + BIT M2PF + BEQ CLRHIT + LDX PLYNUM + LDA MAZCT1,X + CMP #$0C + BCC LOWFSI + LDA #$0C +LOWFSI TAX + LDA FSINDX,X + TAX + LDY #0 +FSLOOP LDA FS0100,X + STA PACMAZ+$1F1,Y + INX + INY + CPY #5 + BNE FSLOOP + LDA #1 + STA FRSCRF + LDA #$40 + STA FRSCRT + LDA #0 + STA FRUFLG + STA FRUTMR + STA FRUTMR+1 + LDA #1 + STA GOBBLD + LDA #$78 + STA GOBBLF + LDX PLYNUM + LDA MAZCT1,X + CMP #$0C + BCC LOWFRS + LDA #$0C +LOWFRS ASL A + TAX + LDA FRSTAB,X + STA SCOREX+2 + INX + LDA FRSTAB,X + STA SCOREX+3 + JSR PSCORE +CLRHIT STA HITCLR + RTS +; +VRESET JSR BLNKON + LDA SWAPPF + BEQ VRSET1 + LDX RESETT + BEQ VSWAP1 + DEC RESETT + RTS +VSWAP1 CMP #1 + BNE VSWAP2 +; + LDX #0 +LODP1L LDA P1SAVE,X + STA PACMAZ,X + LDA P1SAVE+$100,X + STA PACMAZ+$100,X + LDA P1SAVE+$200,X + STA PACMAZ+$200,X + LDA P1SAVE+$300,X + STA PACMAZ+$300,X + INX + BNE LODP1L +; + JSR FLS2ON + LDA #0 + STA PLYNUM + BEQ VSWAPX +VSWAP2 CMP #2 + BNE VSWAP3 +; + LDX #0 +LODP2L LDA P2SAVE,X + STA PACMAZ,X + LDA P2SAVE+$100,X + STA PACMAZ+$100,X + LDA P2SAVE+$200,X + STA PACMAZ+$200,X + LDA P2SAVE+$300,X + STA PACMAZ+$300,X + INX + BNE LODP2L +; + JSR FLS1ON + LDA #1 + STA PLYNUM + BNE VSWAPX +VSWAP3 CMP #3 + BNE VSWAP4 + JSR BLNKON + JMP RST1PG +VSWAPX LDA #3 +VSWPX1 STA SWAPPF + RTS +VRSET1 LDA NUMPLY + BEQ RST1PG +RST2PG LDA PLYNUM + BNE RST2P2 +RST2P1 LDA XPACP2 + BEQ RST1PG;PLAYER 2 DEAD + LDA XPACP1 + BNE SWAP12;GO SWAP PLAYERS + LDA #2 + STA SWAPPF;SHOW #1 GAME OVER + LDA #$60 + STA RESETT + BNE VGMEND +SWAP12 JSR SAVEP1 + LDA #$40 + STA RESETT + LDA #2 + BNE VSWPX1 +RST2P2 LDA XPACP1 + BEQ RST1PG;PLAYER 1 DEAD + LDA XPACP2 + BNE SWAP21;GO SWAP PLAYERS + LDA #1 + STA SWAPPF;SHOW #2 GAME OVER + LDA #$60 + STA RESETT + BNE VGMEND +SWAP21 JSR SAVEP2 + LDA #$40 + STA RESETT + LDA #1 + STA SWAPPF +VGGONE RTS +RST1PG LDX PLYNUM + LDA XPACP1,X + BEQ VGMEND; GAME IS OVER + JSR SETUP + JSR READY1 + LDA NUMPLY + BEQ VSWAP4 + LDA #$40 + STA RESETT + LDA #4 + STA SWAPPF + RTS +VSWAP4 LDA #0 + STA SWAPPF + JMP READY2 +VGMEND LDA #$AC + LDX #0 +GMOVLP STA PACMAZ+$1ED,X + CLC + ADC #1 + INX + CPX #$0E + BNE GMOVLP + LDA #$44 + STA COLOR3 + STA COLPF3 + JSR PLAYRS + LDA SWAPPF + BNE VGGONE +THEEND LDX #$2A + JSR CKHIGH + LDX #$47 + JSR CKHIGH + LDA #0 + STA RESETF + LDA #1 + STA GMOVRF + LDA #$E2 + STA ATTIMR + JSR FLS1ON + JMP BLNKON +; +CKHIGH LDY #0 +CKHILP LDA TEXT,X + CMP TEXT+$39,Y + BEQ CHINXT + BCC CKHIGX + BCS STORHI +CHINXT INX + INY + CPY #6 + BNE CKHILP + RTS +STORHI LDA TEXT,X + STA TEXT+$39,Y + INX + INY + CPY #6 + BNE STORHI +CKHIGX RTS +; +; TUNNEL LOGIC +; +TUNNEL LDX #4 +CTMSKL LDA M1VPOS,X + CMP #$74 + BNE NXTMSK + JSR MSKTUN +NXTMSK DEX + BPL CTMSKL + RTS +; +MSKTUN STA TUNLOC + TXA + CMP #4 + BNE TUNPLY + LDA #$FF +TUNPLY CLC + ADC #HIGH PMADDR+4 + STA TUNLOC+1 + LDA #$FF + STA TUNMSK + LDA M1HPOS,X + STA TUNCNT + CMP #$C0 + BCC TNMSK2 + LDA #$C0 +TNMSL1 CMP TUNCNT + BEQ STTMSK + DEC TUNCNT + ASL TUNMSK + BCS TNMSL1 + LDA M1HPOS,X + CMP #$CA + BCC STTMSK + LDA M1DIRT,X + CMP #8 + BNE STTMSK + LDA #$2A + STA M1HPOS,X + CPX #4 + BNE STTMSK + LDA #$8F + BNE TFXPAC +TNMSK2 CMP #$39 + BCS TNMSKX +TNMSL2 LDA #$38 + CMP TUNCNT + BEQ STTMSK + INC TUNCNT + LSR TUNMSK + BCS TNMSL2 + LDA M1HPOS,X + CMP #$2A + BNE STTMSK + LDA M1DIRT,X + CMP #4 + BNE STTMSK + LDA #$CA + STA M1HPOS,X + CPX #4 + BNE STTMSK + LDA #$B7 +TFXPAC STA PACSCN +STTMSK LDY #$0F +STTMSL LDA (TUNLOC),Y + AND TUNMSK + STA (TUNLOC),Y + DEY + BPL STTMSL +TNMSKX RTS +; +ÿÿpðÿÿ2qÿÿúØÿÿü2ÿÿöþÿÿ0|ÿÿ°pÿÿ´˜ÿÿtðÿÿéfÿÿ¾<ÿÿòìÿÿÒýÿÿÇðÿÿ`õôÿ¤ \ No newline at end of file diff --git a/PAC2.ASM b/PAC2.ASM new file mode 100644 index 0000000..dea58fe --- /dev/null +++ b/PAC2.ASM @@ -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 \ No newline at end of file diff --git a/PAC3.ASM b/PAC3.ASM new file mode 100644 index 0000000..0a6d232 --- /dev/null +++ b/PAC3.ASM @@ -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 \ No newline at end of file diff --git a/PAC4.ASM b/PAC4.ASM new file mode 100644 index 0000000..3b31a90 --- /dev/null +++ b/PAC4.ASM @@ -0,0 +1,1010 @@ +; +; PACMAN MONSTER SUBROUTINES +; +; +EYONLY LDA #0 + STA TWEETR + LDX #3 +EYONLP LDA M1STAT,X + CMP #$44 + BEQ NXTEYD + ASL A + BPL NXTEYD + CPX GULPED + BEQ NXTEYD + INC TWEETR + LDA M1HPOS,X + TAY + LDA M1VPOS,X + CPY #$7C + BNE TSTEYV + CMP #$64 + BNE TSTEYV + LDA M1DIRT,X + CMP #1 + BNE EYHOME + LDA #4 + STA M1DIRT,X + LDA M1VPOS,X + BNE TSTEYV +EYHOME LDA #$44 + STA M1STAT,X + LDA #$FF + STA M1SSEQ,X + BNE NXTEYD +TSTEYV JSR MAZHND + BCC SAMEYD + CLC + LDA #$7C + STA M1THPS,X + LDA #$64 + STA M1TVPS,X + JSR MDIRCT +SAMEYD LDA M1DIRT,X + JSR MONHND +NXTEYD DEX + BPL EYONLP + LDA TWEETR + BNE GTWEET + LDA #0 + STA TWEETF + BEQ CKINBX +GTWEET LDA VFREEZ + BNE CKINBX + JSR VTWEET +CKINBX LDX #3 +NMEYLP LDA M1STAT,X + CLC + LSR A + LSR A + LSR A + BCC NXNMEY + LDA M1STAT,X + ASL A + BPL MONOUT + JSR PNKMIN + JMP NXNMEY +MONOUT LDA RTCLOK+2 + AND #3 + BNE NXNMEY + CPX #3 + BNE GRNOUT + JSR YELMOT + JMP NXNMEY +GRNOUT CPX #2 + BNE REDOUT + JSR GRNMOT + JMP NXNMEY +REDOUT JSR PNKMOT +NXNMEY DEX + BPL NMEYLP +EYONLX RTS +; +PNKMOT LDA M1VPOS,X + CMP #$64 + BNE PNKOUT + LDA M1STAT,X + BNE PNKTST + LDA #1 + BNE PNKCHS +PNKTST AND #$80 + ORA #2 + BPL PNKCHS + STA CHASET + LDY #8 + BNE STRDIR +PNKCHS LDY #4 +STRDIR STY M1DIRT,X +STRSTS STA M1STAT,X + RTS +PNKOUT LDA #1 +PNKOT1 STA M1DIRT,X + JMP MONHND +; +REINCR LDA M1STAT,X + AND #$0F + STA M1STAT,X + LDA COLORS,X + STA PCOLR0,X + RTS +; +GRNMOT LDA M1HPOS,X + CMP #$7C + BEQ PNKMOT +GRNOT1 LDA #8 + BNE PNKOT1 +; +YELMOT LDA M1HPOS,X + CMP #$7C + BEQ PNKMOT +YELOUT LDA #4 + BNE PNKOT1 +; +PNKMIN LDA M1VPOS,X + CMP #$74 + BNE PNKMDN + CPX #2 + BEQ GRNMIN + CPX #3 + BEQ YELMIN + BNE REINCR +PNKMDN LDA #2 + BNE PNKOT1 +; +GRNMIN LDA M1HPOS,X + CMP #$70 + BNE YELOUT + BEQ REINCR +; +YELMIN LDA M1HPOS,X + CMP #$88 + BNE GRNOT1 + BEQ REINCR +; +STRTMN LDX #1 +CKSSQL LDA M1STAT,X + AND #$7F + BNE NXCKSS + LDA M1TIMR,X + BEQ CKSMUP + DEC M1TIMR,X + JSR BOUNCE + JMP NXCKSS +CKSMUP CPX #3 + BNE CKM2UP + JSR YELMOT + JMP NXCKSS +CKM2UP CPX #2 + BNE CKM1UP + JSR GRNMOT + JMP NXCKSS +CKM1UP JSR PNKMOT +NXCKSS INX + CPX #4 + BNE CKSSQL + RTS +; +; STARTUP SEQUENCE OF +; MONSTERS EXITING FROM +; BOX. +; +BOUNCE LDA M1DIRT,X + CMP #1 + BNE TSUPSQ + LDA M1VPOS,X + CMP #$70 + BNE NXTBNC + LDA #2 + BNE STSQST +TSUPSQ LDA M1VPOS,X + CMP #$78 + BNE NXTBNC + LDA #1 +STSQST STA M1DIRT,X +NXTBNC LDA M1DIRT,X + JMP MONHND +; +MONSTR LDA M1STAT,X + BPL MNTST1 + LSR A + LSR A + LSR A + BCC MNTSCH + RTS +MNTST1 CMP #1 + BEQ MSTRTP; MONSTER START PATH +MNTST2 CMP #2 + BNE MNTST3 + LDA CHASET + BNE MNTSCH + JMP GOHOME +MNTSCH JMP MCHASE; MONSTER IS CHASING +MNTST3 CMP #8 + BNE MNTST4 + JMP SEEKPS; SEEK PATTERN START +MNTST4 CMP #$10 + BNE MNTST5 + JMP MPATRN; CONTINUE PATTERN +MNTST5 CMP #$20 + BNE MNTST6 + JMP GOHOME; SEEK HOME CORNER +MNTST6 RTS + +MSTRTP JSR MAZHND + BCC SAMPTH + CLC + INC M1SSEQ,X +SAMPTH TXA + ASL A + TAY + LDA STRADD,Y + STA PIXGET + INY + LDA STRADD,Y + STA PIXGET+1 + LDA M1SSEQ,X + TAY + LDA (PIXGET),Y + CMP #$0F + BNE MNPATH +; +; - MONSTER HAS REACHED START POSIT +; SET UP TO FIND PATTERN START +; AND SET TIMER FOR 20 SECS +; + CPX #0 + BNE SETPAT + LDA #$50 + STA CHASET + JMP SCHASE +SETPAT LDA #8 + STA M1STAT,X + LDA #0 + STA M1PCNT,X + LDA RANDOM + AND #$0F + STA M1PIDX,X + ASL A + TAY + LDA PTRNHV,Y + STA M1THPS,X + INY + LDA PTRNHV,Y + STA M1TVPS,X + LDA #$96 + STA M1TIMR,X + BNE SEEKPS +MNPATH STA M1DIRT,X + JMP MONHND +; +; GO FIND START OF PATTERN +; +SEEKPS LDA M1TIMR,X + BNE SEKPS1 + JMP GOHOME +SEKPS1 JSR MAZHND + BCS SEKPS2 +FINDST JMP SAMEMD +SEKPS2 CLC + JSR MDIRCT + LDA M1HDIR,X + BNE FINDST + LDA M1VDIR,X + BNE FINDST + LDA #$10; REACHED PATTERN START + STA M1STAT,X + CLC + BCC SMPTRN +; +MPATRN LDA M1TIMR,X + BEQ GOHOME +MPTRN1 JSR MAZHND + BCC SMPTRN + CLC + INC M1PCNT,X +SMPTRN LDA M1PIDX,X + TAY + LDA PTNIDX,Y + ADC M1PCNT,X + TAY + LDA PTRN01,Y + BNE MPTRN2 + STA M1PCNT,X + LDA M1PIDX,X + TAY + LDA PTNIDX,Y + TAY + LDA PTRN01,Y +MPTRN2 STA M1DIRT,X + JMP SAMEMD +; +GOHOME LDA #$20 + STA M1STAT,X + TXA + ASL A + TAY + LDA HOMEHV,Y + STA M1THPS,X + INY + LDA HOMEHV,Y + STA M1TVPS,X +; + JSR MAZHND + BCC SAMEMD + CLC + JSR MDIRCT + LDA M1HDIR,X + BNE SAMEMD + LDA M1VDIR,X + BNE SAMEMD + JMP SETPAT +; +; TAKES CARE OF CHASE & FLIGHT +; +SCHASE LDA #2 + STA M1STAT,X +MCHASE LDA PMHPOS + STA M1THPS,X + LDA PMVPOS + STA M1TVPS,X + JSR MAZHND + BCC SAMEMD + CLC + JSR MDIRCT +SAMEMD LDA M1DIRT,X +; +; MONSTER DISPLAY HANDLER +; +; X-REG VALUE 0-3 TO SELECT +; MONSTER 1 - MONSTER 4 +; +; A-REG VALUE 1 EQUALS UP +; 2 EQUALS DOWN +; 4 EQUALS LEFT +; 8 EQUALS RIGHT +; +; SELECTED MONSTER WILL BE +; INCREMENTED 1 PIXEL IN THE +; DIRECTION SPECIFIED. +; +; IF MSTILL > 0 THEN THE MONSTERS +; WILL BE DRAWN BUT NOT MOVED. +; +; BIT 7 OF STATUS = FLIGHT IMAGE +; BIT 6 OF STATUS = EYES IMAGE +; +MONHND CMP #1; DO REPOSITIONING + BNE TSTMDN + LDY MSTILL + BNE MSTLUP + DEC M1VPOS,X + DEC M1VPOS,X +MSTLUP LDA #MONSUP-MONSUP + BEQ TSTMSK +TSTMDN CMP #2 + BNE TSTMLF + LDY MSTILL + BNE MSTLDN + INC M1VPOS,X + INC M1VPOS,X +MSTLDN LDA #MONSDN-MONSUP + BNE TSTMSK +TSTMLF CMP #4 + BNE TSTMRT + LDY MSTILL + BNE MSTLLF + DEC M1HPOS,X +MSTLLF LDA #MONSLF-MONSUP + BNE TSTMSK +TSTMRT CMP #8 + BNE NOMMOT + LDY MSTILL + BNE MSTLRT + INC M1HPOS,X +MSTLRT LDA #MONSRT-MONSUP + BNE TSTMSK +NOMMOT RTS +TSTMSK LDY M1STAT,X + BPL TSTEYE + LDA #MONSFL-MONSUP; FLIGHT IMAGE +TSTEYE TAY + LDA M1STAT,X + ASL A + BMI MNEYES + TYA + LDY MSKIRT + BEQ MSKL54 + LDY #$AA + BNE MNSKRT +MSKL54 LDY #$54 + BNE MNSKRT +MNEYES LDA #MONSEY-MONSUP + LDY #0 +MNSKRT STY MONBUF+$0C + CLC + ADC #LOW MONSUP + STA PIXGET + LDA #0 + ADC #HIGH MONSUP + STA PIXGET+1 + LDY #9 +MNLDBL LDA (PIXGET),Y + STA MONBUF+2,Y + DEY + BPL MNLDBL + LDA #LOW MONBUF + STA PIXGET + LDA #HIGH MONBUF + STA PIXGET+1 + LDA M1HPOS,X + STA HPOSP0,X + LDA M1VPOS,X + STA PIXPUT +SECURE LDA #HIGH PMADDR+4 + STA PIXPUT+1 + TXA + CLC + ADC PIXPUT+1 + STA PIXPUT+1 + LDY #$0F +MWRITE LDA (PIXGET),Y + STA (PIXPUT),Y + DEY + BPL MWRITE + RTS +; +; DIRECTIONS COMPUTED FOR +; MONSTERS +; +; X REG = MONSTER # +; +; TARGET VERTICAL & HORIZONTAL +; COORDINATES MUST BE PLACED +; INTO VSAVER & HSAVER PRIOR +; TO ENTRY +; +MDIRCT LDA M1VPOS,X + CMP M1TVPS,X + BEQ VEQUAL + BCC VGRATR;MONSTER IS ABOVE TARGET +; +; MONSTER IS BELOW TARGET +; + LDA M1STAT,X + BMI VBIGGR +VLESSR LDA #1;POINT TO UP + BNE STRVRT +VGRATR LDA M1STAT,X + BMI VLESSR +VBIGGR LDA #2;POINT TO DOWN + BNE STRVRT +VEQUAL LDA #0 +STRVRT STA M1VDIR,X + LDA M1HPOS,X + CMP M1THPS,X + BEQ HEQUAL + BCS HGRATR;MONSTER IS RT OF TARGET +; +; MONSTER IS LEFT OF TARGET +; + LDA M1STAT,X + BMI HBIGGR +HLESSR LDA #8;POINT TO RT + BNE STRHRZ +HGRATR LDA M1STAT,X + BMI HLESSR +HBIGGR LDA #4;POINT TO LEFT + BNE STRHRZ +HEQUAL LDA #0 +STRHRZ STA M1HDIR,X +; + LDA M1VDIR,X + BEQ MHONLY + BIT TEMLOC + BEQ MHONLY + LDA M1HDIR,X + BEQ MVRTOK + BIT TEMLOC + BEQ MVRTOK +; +; CHOICE OF DIRECTIONS +; + LDA RANDOM + BMI MHRZOK +MVRTOK LDA M1VDIR,X + BNE SETMDR +MHRZOK LDA M1HDIR,X + BNE SETMDR +MHONLY LDA M1HDIR,X + BIT TEMLOC + BNE MHRZOK +; + LDA RANDOM + AND TEMLOC + BNE UPTEST + LDA TEMLOC;RELOAD ORIGINAL +UPTEST LSR A + BCC DNTEST + LDA #1 + BNE SETMDR +DNTEST LSR A + BCC LFTEST + LDA #2 + BNE SETMDR +LFTEST LSR A + BCC RTTEST + LDA #4 + BNE SETMDR +RTTEST LDA #8 +SETMDR STA M1DIRT,X +SAMMDR LDA M1DIRT,X + RTS +; +SEEPAC LDA M1VPOS,X + CMP PMVPOS + BEQ SEEVRT + LDA M1HPOS,X + CMP PMHPOS + BEQ SEEHRZ + RTS +SEEVRT LDY #9 +SEEVRL LDA VTABLE,Y + CMP PMVPOS + BEQ SEEVR1 + DEY + BPL SEEVRL +SEEVRX RTS +SEEVR1 LDA M1HPOS,X + CMP PMHPOS + BCS SEELFT +SEERGT LDA M1DIRT,X + CMP #8 + BNE SEEVRX +SEERT1 LDA HWALLS,Y + CMP #$FF + BEQ SEECHS + CMP M1HPOS,X + BCS SEERT2 + INY + BNE SEERT1 +SEERT2 CMP PMHPOS + BCS SEECHS + RTS +; +SEELFT LDA M1DIRT,X + CMP #4 + BNE SEEVRX +SEELF1 LDA HWALLS,Y + CMP #$FF + BEQ SEECHS + CMP PMHPOS + BCS SEELF2 + INY + BNE SEELF1 +SEELF2 CMP M1HPOS,X + BCS SEECHS + RTS +; +SEEHRZ LDY #9 +SEEHRL LDA HTABLE,Y + CMP PMHPOS + BEQ SEEHR1 + DEY + BPL SEEHRL +SEEHRX RTS +SEEHR1 LDA M1VPOS,X + CMP PMVPOS + BCC SEEDWN +; +SEEUPP LDA M1DIRT,X + CMP #1 + BNE SEEHRX +SEEUP1 LDA VWALLS,Y + CMP #$FF + BEQ SEECHS + CMP PMVPOS + BCS SEEUP2 + INY + BNE SEEUP1 +SEEUP2 CMP M1VPOS,X + BCS SEECHS + RTS +; +SEEDWN LDA M1DIRT,X + CMP #2 + BNE SEEHRX +SEEDN1 LDA VWALLS,Y + CMP #$FF + BEQ SEECHS + CMP M1VPOS,X + BCS SEEDN2 + INY + BNE SEEDN1 +SEEDN2 CMP PMVPOS + BCC SEECHX +; +SEECHS CPX #2 + BNE STRCHS + LDA RTCLOK+2 + BMI SEECHX +STRCHS LDA #2 + STA M1STAT,X + LDA #$A0 + STA CHASET +SEECHX RTS +; +; INTERMISSION CODE +; +INTMIS LDX PLYNUM + LDA MAZCT1,X + LDX #$00 + CMP #$01 + BEQ L7221 + INX + INX + CMP #$04 + BEQ L7221 + INX + INX + CMP #$08 + BEQ L7221 + CMP #$0C + BEQ L7221 + CMP #$10 + BEQ L7221 + JMP L73AA +L7221 STX INTMOD + LDA #$FF + STA INTCNT +L7228 LDA INTCNT + BNE L7228 + LDX #$1C +L722E LDA INTDLC,X + STA INTRDL,X + DEX + BPL L722E + LDA #INDLI1&255 + STA VDSLST + LDA #INDLI1/256 + STA VDSLST+1 + LDA #INTRDL&255 + STA SDLSTL + STA DLISTL + LDA #INTRDL/256 + STA SDLSTH + STA DLISTH + LDX #$03 +L7251 STA HPOSM0,X + DEX + BPL L7251 +L7257 JSR INITPT + LDX INTMOD + LDA L756B,X + TAY + LDX #$15 +L7263 LDA L7571,Y + STA PMADDR+$300,X + DEY + DEX + BPL L7263 + LDA INTMOD + CMP #$03 + BNE L727D + LDA INTSEQ + STA PMADDR+$31A + JMP L72A1 +L727D ROR A + BCC L7288 + LDA #$2C + LDX #$7C + LDY #$CC + BNE L7293 +L7288 LDA #$FF + STA PMADDR+$318 + LDA #$00 + LDX #$50 + LDY #$A0 +L7293 STA INTRDL+$12 + STX INTRDL+$15 + STY INTRDL+$18 + LDA #$00 + STA HSCROL +L72A1 LDA #$FF + STA INTCLK +L72A5 LDA #$FF + STA INTCNT +L72A9 LDA INTCNT + BNE L72A9 + LDA #$FF + STA INTCNT + LDA PMADDR+$312 + STA INTSEQ + JSR L73E3 + LDA PMADDR+$317 + CMP PMADDR+$30D + BCS L72C5 + JMP L7346 +L72C5 LDA INTMOD + CMP #$03 + BNE L72E9 + LDA PMADDR+$31E + CMP #$13 + BEQ L72D6 + JMP L7365 +L72D6 LDA #$8F + STA PMADDR+$314 + LDA #$78 + STA PMADDR+$315 + LDA #$00 + TAX + JSR L746A + JMP L72A5 +L72E9 CMP #$02 + BNE L733E + LDA PMADDR+$31F + BEQ L7319 + JSR L74F7 + LDX #$01 + JSR L744B + LDA PMADDR+$320 + CMP #$07 + BEQ L7365 + LDA PMADDR+$305 + CLC + ADC PMADDR+$307 + STA PMADDR+$307 + BCC L72A5 + JSR L741D + JSR L7470 + INC PMADDR+$320 + JMP L72A5 +L7319 LDA PMADDR+$31B + CMP #$13 + BNE L733E + LDA #$01 + STA PMADDR+$31F + LDY #$18 +L7327 LDA L75F5,Y + STA PMADDR+$300,Y + DEY + BPL L7327 + LDA #$00 + STA PMADDR+$31C + LDA INTSEQ + STA PMADDR+$312 + JMP L7346 +L733E JSR L7411 + LDX #$00 + JSR L744B +L7346 LDA PMADDR+$310 + BEQ L735B + LDA PMADDR+$317 + CMP PMADDR+$30E + BCC L735B + JSR L74F7 + LDX #$01 + JSR L744B +L735B LDA PMADDR+$317 + CMP #$FF + BEQ L7365 + INC PMADDR+$317 +L7365 LDA PMADDR+$31E + CMP #$3C + BEQ L736F + JMP L72A5 +L736F INC INTMOD + LDA INTMOD + CMP #$03 + BNE L739C + JSR L741D + JSR L741D + LDA #L787A&255 + STA PMADDR+$314 + LDA #L787A/256 + STA PMADDR+$315 + LDA #$06 + STA PMADDR+$30F + LDA #$00 + TAX + JSR L746A + LDA #$01 + STA PMADDR+$31E + JMP L72A5 +L739C ROR A + BCC L73A2 + JMP L7257 +L73A2 LDA #$FF + STA INTCNT +L73A6 LDA INTCNT + BNE L73A6 +L73AA JSR SETNUL + JSR INITPT + LDA #$FF + STA INTCNT +L73B4 LDA INTCNT + BNE L73B4 + LDA #$00 + STA NMIEN + STA IRQEN + LDA #DLIST&255 + STA SDLSTL + STA DLISTL + LDA #DLIST/256 + STA SDLSTH + STA DLISTH + LDA #DLIV&255 + STA VDSLST + LDA #DLIV/256 + STA VDSLST+1 + LDA #$C0 + STA NMIEN + LDA #$40 + STA IRQEN + RTS +; +L73E3 LDA INTCLK + CMP #$04 + BCC L740E + LDA PMADDR+$31E + ASL A + ASL A + TAX + LDA IMUSIC,X + STA AUDF1 + LDA IMUSIC+1,X + STA AUDC1 + LDA IMUSIC+2,X + STA AUDF2 + LDA IMUSIC+3,X + STA AUDC2 + INC PMADDR+$31E + LDA #$FF + STA INTCLK +L740E INC INTCLK + RTS +L7411 LDA PMADDR+$303 + CLC + ADC PMADDR+$318 + STA PMADDR+$318 + BCC L744A +L741D LDA PMADDR+$31A + AND #$03 + TAX + EOR PMADDR+$300 + STA HSCROL + TXA + BNE L7447 + LDX #$06 +L742E LDA INTRDL+$12,X + CLC + ADC PMADDR+$302 + STA INTRDL+$12,X + CMP #$FF + BNE L743F + DEC INTRDL+$13,X +L743F DEX + DEX + DEX + BPL L742E + INC PMADDR+$31B +L7447 INC PMADDR+$31A +L744A RTS +L744B LDA PMADDR+$307,X + CLC + ADC PMADDR+$305,X + STA PMADDR+$307,X + BCC L74AC + INC PMADDR+$309,X + LDA PMADDR+$309,X + CMP PMADDR+$30B,X + BCC L746D + LDA #$00 + STA PMADDR+$309,X + TXA + BNE L746D +L746A STA PMADDR+$31C +L746D TXA + BNE L74AD +L7470 LDA #$2C + BIT PMADDR+$301 + BMI L747D + LDA #$28 + SEC + SBC PMADDR+$30F +L747D TAX + LDA PMADDR+$30F + STA PMADDR+$316 + LDY PMADDR+$31C + LDA PMADDR+$314 + STA PIXGET + LDA PMADDR+$315 + STA PIXGET+1 +L7491 LDA (PIXGET),Y + STA PMADDR+$400,X + INY + LDA (PIXGET),Y + STA PMADDR+$450,X + INY + LDA (PIXGET),Y + STA PMADDR+$4A0,X + INY + INX + DEC PMADDR+$316 + BNE L7491 + STY PMADDR+$31C +L74AC RTS +L74AD LDA #PMADDR/256+5 + STA PIXPUT+1 + LDA PMADDR+$313 + STA PIXPUT + LDA PMADDR+$30A + ASL A + TAY + LDX INTMOD + CPX #$01 + BEQ L74CB + LDA L760E,Y + LDX L760E+1,Y + JMP L74D1 +L74CB LDA L761A,Y + LDX L761A+1,Y +L74D1 STA PIXGET + STX PIXGET+1 + LDX PMADDR+$310 +L74D8 LDY PMADDR+$311 + DEY +L74DC LDA (PIXGET),Y + STA (PIXPUT),Y + DEY + BPL L74DC + DEX + BEQ L74AC + LDA PIXGET + CLC + ADC PMADDR+$311 + STA PIXGET + BCC L74F2 + INC PIXGET+1 +L74F2 INC PIXPUT+1 + JMP L74D8 +L74F7 LDA PMADDR+$304 + CLC + ADC PMADDR+$319 + STA PMADDR+$319 + BCC L751B + LDA PMADDR+$312 + SEC + SBC PMADDR+$302 + STA PMADDR+$312 + LDX #$00 +L750F STA HPOSP1,X + CLC + ADC #$08 + INX + CPX PMADDR+$310 + BNE L750F +L751B RTS +; +INDLI1 PHA + TXA + PHA + LDA #ICHARS/256 + STA CHBASE + LDA #$2A + STA COLPM1 + STA COLPM2 + STA COLPM3 + LDX INTMOD + LDA ICOLR0,X + STA COLPF0 + LDA ICOLR1,X + STA COLPF1 + LDA ICOLR2,X + STA COLPF2 + LDA ICOLR3,X + STA COLPF3 + PLA + TAX + PLA + RTI +; +SETNUL LDA #NULLDL&255 + STA SDLSTL + STA DLISTL + LDA #NULLDL/256 + STA SDLSTH + STA DLISTH + RTS +; +INITPT LDX #0 + TXA + JMP INITPL +; + + LDA #$C0 +TNMSL1 CMP TUNCNT + BEQ STTMSK + DEC TUNCNT + ASL TUNMSK + BCS TNMSL1 + LDA \ No newline at end of file diff --git a/PACDAT1.ASM b/PACDAT1.ASM new file mode 100644 index 0000000..2bbce84 --- /dev/null +++ b/PACDAT1.ASM @@ -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 \ No newline at end of file diff --git a/PACDAT2.ASM b/PACDAT2.ASM new file mode 100644 index 0000000..013e8aa --- /dev/null +++ b/PACDAT2.ASM @@ -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 +; +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ \ No newline at end of file diff --git a/PACDAT3.ASM b/PACDAT3.ASM new file mode 100644 index 0000000..1acea6f --- /dev/null +++ b/PACDAT3.ASM @@ -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 \ No newline at end of file diff --git a/PACMAN.ASM b/PACMAN.ASM new file mode 100644 index 0000000..d60c77c --- /dev/null +++ b/PACMAN.ASM @@ -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 +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ \ No newline at end of file diff --git a/SYSTEXT.ASM b/SYSTEXT.ASM new file mode 100644 index 0000000..ced4c1c --- /dev/null +++ b/SYSTEXT.ASM @@ -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 + GRAFP0 EQU $D00D ;graphics for player0 + TRIG0 EQU $D010 ;joystick controller trigger 0 + GRAFM EQU $D011 ;grahics for all missiles + COLPM0 EQU $D012 ;player color registers +COLPM1 EQU $D013 +COLPM2 EQU $D014 +COLPM3 EQU $D015 + COLPF0 EQU $D016 ;playfield color registers +COLPF1 EQU $D017 +COLPF2 EQU $D018 +COLPF3 EQU $D019 + COLBK EQU $D01A ;color-luminance of background + PRIOR EQU $D01B ;priority select + VDELAY EQU $D01C ;vertical delay + GRACTL EQU $D01D ;graphics control register + HITCLR EQU $D01E ;collision clear + CONSOL EQU $D01F ;console key register + POT0 EQU $D200 ;pot 0 + AUDF1 EQU $D200 ;audio channel 1 frequency + AUDC1 EQU $D201 ;audio channel 1 control + AUDF2 EQU $D202 ;audio channel 1 frequency + +AUDC2 EQU $D203 ;audio channel 1 control + +AUDF3 EQU $D204 ;audio channel 1 frequency + +AUDC3 EQU $D205 ;audio channel 1 control + +AUDF4 EQU $D206 ;audio channel 1 frequency + +AUDC4 EQU $D207 ;audio channel 1 control + +AUDCTL EQU $D208 ;audio control + ALLPOT EQU $D208 ;read 8 line pot port status + KBCODE EQU $D209 ;keyboard code + STIMER EQU $D209 ;start timer + RANDOM EQU $D20A ;random number generator + SERIN EQU $D20A ;serial port input + SKREST EQU $D20A ;reset serial port status + POTGO EQU $D20B ;start POT scan sequence + SEROUT EQU $D20C ;serial port output + IRQEN EQU $D20E ;IRQ enable mask + IRQST EQU $D20E ;IRQ status + SKCTL EQU $D20F ;serial port control + SKSTAT EQU $D20F ;keyboard status register + PORTA EQU $D300 ;port A + DMACTL EQU $D400 ;DMA control register + CHACTL EQU $D401 ;character control + DLISTL EQU $D402 ;display list pointer (low byte) + DLISTH EQU $D403 ;display list pointer (high byte) + HSCROL EQU $D404 ;horizontal scroll register + VSCROL EQU $D405 ;vertical scroll register + PMBASE EQU $D407 ;player base address + CHBASE EQU $D409 ;character base address + WSYNC EQU $D40A ;wait for horizontal sync + VCOUNT EQU $D40B ;scan line counter + PENH EQU $D40C ;light pen horizontal position + PENV EQU $D40D ;light pen vertical position + NMIEN EQU $D40E ;interrupt enable register + NMIRES EQU $D40F ;NMI reset + NMIST EQU $D40F ;NMI status