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