home *** CD-ROM | disk | FTP | other *** search
/ A.N.A.L.O.G. Magazine 1989 May / 89_may.atr / clown.ama < prev    next >
Text File  |  2023-02-26  |  9KB  |  1 lines

  1.  ;----------------------------------¢ ;SOURCE CODE: CRAZY CLOWN JUMPER¢ ;----------------------------------¢ ;MAIN FILE¢ ;----------------------------------¢ ;WRITTEN FOR THE MACRO ASSEMBLER¢ ;----------------------------------¢ ¢ ORG $4000¢ ¢OPEN: = $03¢CLOSE: = $0C¢GETREC: = $05¢PUTREC: = $09¢EOL: = $9B¢ICCOM: = $342¢ICSTA: = $343¢ICBAL: = $344¢ICBAH: = $345¢ICPTL: = $346¢ICPTH: = $347¢ICBLL: = $348¢ICBLH: = $349¢AUX1: = $34A¢AUX2: = $34B¢CIOV: = $E456¢ ¢ ;MISC. EQUATES¢ ¢RAMSET: = $5000¢ROMSET: = 57344¢SCREEN: = 132¢VSCROL: = $D405¢SETVBV: = $E45C¢XITVBV: = $E462¢DLIST: = 560¢COLOR0: = 708¢COLOR1: = COLOR0+1¢COLOR2: = COLOR1+1¢COLOR3: = COLOR2+1¢COLOR4: = COLOR3+1¢BX: = 135¢TAILAD: = 137¢RANDOM: = $D20A¢STICK0: = 632¢STRIG0: = 644¢WORKP: = 128¢ ¢ ;PLAYER-MISSILE EQUATES¢ ¢PMBASE: = $6000¢PMI: = PMBASE+768¢PM0: = PMBASE+1024¢PM1: = PM0+256¢PM2: = PM1+256¢PM3: = PM2+256¢ ¢ ;HORIZONAL POSITION REGISTERS¢ ¢HPOSP0: = 53248¢HPOSP1: = 53249¢HPOSP2: = 53250¢HPOSP3: = 53251¢ ¢ ;HORIZONTAL MISSILE POS. REGISTERS¢ ¢HPOSM0: = 53252¢ ¢ ;COLLSION REGISTERS¢ ;PLAYER COLLSION WITH PLAYFEID¢ ¢P0PF: = 53252¢P1PF: = 53253¢¢ ;PLAYER COLLSION WITH OTHER PLAYER¢¢P0PL: = 53260¢P1PL: = 53261¢¢ ;MISSILE COLLISION WITH PLAYER¢¢M0PL: = 53256¢M1PL: = 53257¢M2PL: = 53258¢M3PL: = 53259¢¢ ;MISSILE COLLISION WITH PLAYFIELD¢¢M0PF: = 53248¢M1PF: = 53249¢M2PF: = 53250¢M3PF: = 53251¢¢HITCLR: = 53278¢¢PAD0: = 139¢PAD1: = 141¢¢ ;SOUND EQUATES¢¢AUDF1: = $D200¢AUDC1: = $D201¢AUDF2: = $D202¢AUDC2: = $D203¢AUDCTL: = $D208¢SKCTL: = $D20F¢ ¢LAB15: INCLUDE D:PAGESIX.LNK¢ ¢ ;MAIN SET UP¢ ¢ JSR CLOSIO¢ JSR GRAPH¢ ¢ ;PUT ZEROS IN ZERO PAGE ¢ ¢ LDX #143¢ LDA #0¢ZAPL: STA 0,X¢ INX¢ BNE ZAPL¢ ¢ JSR CHAR¢ ¢ JSR LINKVBI¢ ¢ ;SET SCREEN COLORS¢ ;BACKGROUND¢ ¢ LDA #10¢ STA COLOR4¢ ¢ ;UPPERCASE¢ ¢ LDA #130¢ STA COLOR0¢ ¢ ;INVERSE UPPERCASE¢ ¢ LDA #10¢ STA COLOR2¢ ¢ ;LOWERCASE¢ ¢ LDA #64+4¢ STA COLOR1¢ ¢ ;INVERSE LOWERCASE¢ ¢ LDA #240+8¢ STA COLOR3¢ ¢ LDY #2¢ LDA #0¢ STA (88),Y¢ ¢ JSR PMINT¢ JSR XSTART¢ JSR CORZ¢ ¢ JSR BOARD¢ ¢ ;SET ENABLE FIFTH PLAYER¢ ¢ LDA #16¢ STA 623¢ ¢ ;SET UP FOR SOUND¢ ¢ LDA #0¢ STA AUDCTL¢ LDA #3¢ STA SKCTL¢ ¢ ;SET ADDRESS OF TAIL CHAR¢ ¢ LDA #16;LOW RAMSET¢ STA TAILAD¢ LDA #HIGH RAMSET¢ STA TAILAD+1¢ ¢ LDA #9¢ STA GFLAG5¢ ¢ ;PRINT ZERO TO SCORE¢ ¢ JSR PSCOR¢ ¢QQQ: LDA #0¢ JSR XMOVE¢ ¢ ;MAIN TESTING ROUTINE¢ ;TEST CLOWN TO WHAT ITS STANDING ON¢ ¢ ;IS A JUMP IN PROGRESS?¢ ;IF SO, GO TO MAIN JUMP ROUTNE¢ ;IF NOT, CONTINUE LOOP¢ ;IS IT ON A PLATFORM?¢ ;IF IT IS, GO TEST JOYSTICK¢ ;IF NOT, GO TEST FOR BALLOONS¢ ;ALSO,CHECK FOR DOLLAR¢ ¢MAINT: LDA CRITP ¢ BEQ MAIN3¢ ¢ DEC GFLAG5¢ BNE MAIN3¢ LDA #9¢ STA GFLAG5¢ ¢ JSR MPLM¢ ¢ ;CHECK FOR DOLLOR¢ ¢MAIN3: LDA DMARK¢ BEQ MAIN4¢ JSR CDOLL¢ ¢MAIN4: LDA MCOLL1¢ BEQ MAIN5¢ ¢ JSR ADOLL¢ ¢MAIN5: LDA PCOLL1¢ BEQ BALTEST;GO TEST BALLOON¢ CMP #4¢ BNE MAIN1¢ LDA #0¢ JMP PLAT¢MAIN1: CMP #8¢ BNE MAIN2¢ LDA #1¢ JMP PLAT¢ ¢MAIN2: BNE FALL¢ ¢ ;IS HE ON A BALLOON?¢ ;IF SO MOVE HIM UP AT THE SAME RATE¢ ;AS THE BALLOONS¢ ;IF NOT HE FALLS¢ ¢BALTEST: LDA COLL1¢ BEQ FALL¢ BNE ONBALL¢ ¢ ;CLOWN FALLING, IF CFALL REACHES¢ ;60, THEN NOTHING CAN STOP IT¢ ¢FALL: INC CFALL¢ ¢ JSR NDELAY¢ ¢ LDA #2¢ JSR YMOVE¢ ¢ LDA CFALL¢ CMP #60¢ BEQ CDEAD¢ BNE MAINT¢ ¢CDEAD: LDA #0¢ STA AUDF1¢ STA AUDC1¢ STA TFLAG5¢ JSR FDEAD¢ JMP QQQ¢ ¢ ;CLOWN IS STANDING ON A BALLOON.¢ ;TEST TO SEE IF SOUND IS IN PROGRESS¢ ;IF NOT,TEST FALL DURATION.IF FALL¢ ;IS LONGER THEN 12 THEN START SOUND.¢ ;MOVE HIM UP ONE AT SAME RATE AS¢ ;THE BALLOONS, THEN SET CFALL TO ¢ ;ZERO AND GO TEST THE JOYSTICK.¢ ;IS STANDING ON A TAIL?¢ ¢ONBALL: LDA COLL1¢ CMP #4¢ BEQ FALL¢ ¢ LDA TFLAG5¢ BNE ON1¢ ¢ LDA CFALL¢ CMP #5¢ BCC ON1¢ ¢ ;SET UP FOR SOUND EFFECT¢ ¢ JSR XSOU1¢ ¢ON1: LDA TFLAG2¢ BEQ ST¢ LDA #3¢ JSR YMOVE¢ ¢ LDA #0¢ STA CFALL¢ STA TFLAG2¢ ¢ LDA CY0¢ CMP #41¢ BCC FALL¢ ¢ ;TEST FIRE BUTTON IF ITS PRESSED, GO¢ ;TO JUMP JOYSTICK ROUTINE. IF NOT,¢ ;TEST STICK FOR NORMAL LEFT OR RIGHT¢ ;MOVEMENT.¢ ;IF STICK IS NOT MOVED GO TO MAIN¢ ;TESTING ROUTINE¢ ¢ST: LDA CRITP¢ BEQ STJ1¢ ;CHECK TO SEE IF PLATFORM IS MOVING¢ LDA PCOLL1¢ BEQ STJ1¢ LDA #1¢ JSR YMOVE¢ LDA #0¢ STA CFALL¢ ¢STJ1: LDA STRIG0 ¢ ¢ BEQ JUMPST; PRESSED GO TO ROUTINE¢ ¢ ;TEST STICK FOR NORMAL MOVEMENT¢ ¢STJ: LDA STICK0¢ CMP #15¢ BNE  ST9¢ JMP MAINT¢ ¢ST9: CMP #7¢ BNE ST1¢ ¢ ;MOVE CLOWN RIGHT¢ ;IF CLOWN IS ON BALLOON MOVE UP¢ ¢ JSR NDELAY¢ ¢ LDA COLL1¢ BEQ ST10¢ ¢ LDA #3¢ JSR YMOVE¢ ¢ST10: LDA CX0¢ CMP #205¢ BEQ ST2¢ ¢ LDA #2¢ JSR XMOVE¢ JMP MAINT¢ ¢ST1: CMP #11¢ BNE ST2¢ ¢ ;MOVE CLOWN LEFT¢ ¢ JSR NDELAY¢ ¢ LDA COLL1¢ BEQ ST11¢ ¢ LDA #3¢ JSR YMOVE¢ ¢ST11: LDA CX0¢ CMP #45¢ BEQ ST2¢ ¢ LDA #1¢ JSR XMOVE¢ST2: JMP MAINT¢ ¢ ;TEST JOYSTICK FOR THE DIRECTION¢ ;IS CLOWN IS TO JUMP IN.¢ ¢JUMPST: LDA STICK0¢ CMP #11¢ BNE JST1¢ ;SHORT JUMP LEFT¢ ¢ LDA #32¢ STA JPOINT;SET POINTER TO 16¢ LDA #9¢ STA GPOINT¢ BNE RJUMP¢ ¢JST1: CMP #7¢ BNE JST2¢ ;SHORT JUMP RIGHT¢ ¢ LDA #0¢ STA JPOINT;SET POINTER TO 0¢ STA GPOINT¢ BEQ RJUMP¢ ¢JST2: CMP #10¢ BNE JST3¢ ;JUMP HIGH LEFT¢ ¢ LDA #128¢ STA JPOINT¢ LDA #27¢ STA GPOINT¢ ¢ BNE RJUMP¢ ¢JST3: CMP #6¢ BNE JST4¢ ¢ ;JUMP HIGH RIGHT¢ ¢ LDA #64¢ STA JPOINT¢ LDA #18¢ STA GPOINT¢ BNE RJUMP¢ ¢JST4: JMP MAINT¢ ¢ ;DELAY MOVE MOVEMENT OF CLOWN¢ ;CHECK DOLLAR SIGN¢ ¢NDELAY: LDX #0¢ LDY #0¢ ¢DEL2: INY¢ BNE DEL2¢ ¢ LDA DMARK¢ BEQ DEL3¢ ¢ STX TEMP11+1¢ JSR CDOLL¢ LDX TEMP11+1¢ ¢DEL3: LDA CRITP¢ BEQ DEL4¢ STX TEMP11+1¢ JSR MPLM¢ LDX TEMP11+1¢ ¢DEL4: INX¢ CPX #9¢ BNE DEL2¢ RTS¢ ¢ ;ADD 20 TO SCREEN ADDRESS¢ ¢ADD20: CLC¢ LDA SCREEN¢ ADC #20¢ STA SCREEN¢ LDA SCREEN+1¢ ADC #0¢ STA SCREEN+1¢ RTS¢ ¢ ;CLOWN IS JUMPING¢ ;GET LENGTH¢ ¢RJUMP: LDA #3¢ STA JMAX¢¢RJP1: LDY GPOINT¢ LDA JCORDN,Y¢ STA TJUMP¢ INY¢ ¢ ;GET Y CORDINATE¢ ¢ LDA JCORDN,Y¢ STA TJUMP+1¢ INY¢ ¢ ;GET X CORDINATE¢ ¢ LDA JCORDN,Y¢ STA TJUMP+2¢ ¢RJ: LDA CRITP¢ BEQ RJ7¢ JSR MPLM¢ ¢RJ7: LDA DMARK¢ BEQ RJ8¢ JSR CDOLL¢ ¢ ;DO Y CORDINATE¢ ¢RJ8: LDA TJUMP+1¢ JSR YMOVE¢ ¢ ;STOP CLOWN FROM JUMPING OUT OF¢ ;BOUNDS¢ ¢ LDA CX0¢ CMP #45¢ BNE RJ11¢ JMP FALL¢ ¢RJ11: LDA CX0¢ CMP #205¢ BNE RJ12¢ JMP FALL¢ ¢ ;DO X CORDINATE¢ ¢RJ12:  LDA TJUMP+2¢ JSR XMOVE¢ ¢ ;CHECK FOR COLLISION ¢ ¢ LDA PCOLL1¢ BEQ RJ1¢ CMP #4¢ BNE RJ4¢ LDA #0¢ JMP PLAT¢RJ4: CMP #8¢ BNE RJ2¢ LDA #1¢ JMP PLAT¢ ¢ ;CHECK FOR BALLOON¢ ¢RJ1: LDA COLL1¢ BEQ RJ2¢ ¢ LDA TFLAG5¢ BNE RJ9¢ ¢ JSR XSOU1¢ ¢RJ9: JMP ONBALL¢ ¢RJ2: LDA MCOLL1¢ BEQ RJ10¢ ¢ JSR ADOLL¢ ¢RJ10: DEC TJUMP¢ BNE RJ¢ ¢ INC GPOINT¢ INC GPOINT¢ INC GPOINT¢ DEC JMAX¢ BNE RJP1¢ ¢ JMP MAINT¢ ¢ ;SET UP FOR SOUND EFFECT¢ ;CLOWN HITTING BALLOON¢ ¢XSOU1: LDA #1¢ STA TFLAG5¢ LDA #180¢ STA AUDF1¢ LDA #160+15¢ STA AUDC1¢ STA SOUND1+1¢ LDA #15¢ STA SOUND1¢ RTS¢ ¢ ;SET UP FOR SOUND EFFECT¢ ;CLOWN HITTING DOLLAR SIGN¢ ¢XSOU2: LDA #1¢ STA TFLAG4¢ LDA #250¢ STA SOUND2¢ STA AUDF2¢ LDA #224+15¢ STA AUDC2¢ RTS¢ ¢ ;CLOWN HAS HIT DOLLAR SIGN DO IT¢ ¢ADOLL: JSR XSOU2¢ JSR DKILL¢ ¢ ;DO SCORE¢ ¢ LDA #100¢ STA TEMP14¢ LDA #0¢ STA TEMP14+1¢ STA MCOLL1¢ JSR DCON¢ ¢ RTS¢ ¢XSTART: LDA #1¢ STA TFLAG6¢ LDA #0¢ STA TFLAG9¢ STA TFLAG7¢ ¢ ;SCROLL UP TITLE¢ ¢XST1: LDA FLAG10¢ BEQ XST1¢ ¢ LDA #0¢ STA FLAG10¢ ¢ ;SCROLL UP SPACES¢ ¢ LDA #1¢ STA TFLAG9¢XST2: LDA FLAG10¢ BEQ XST2¢ ¢ ;WAIT FOR FIRE BUTTON TO BE PRESSED¢ ¢ LDA #1¢ STA TFLAG7¢ LDA #0¢ STA TFLAG6¢ ¢ ;SET COLOR2¢ ¢ LDA #44¢ STA COLOR2¢ ¢ ;PRINT THE MESSAGE" PRESS THE ¢ ;FIREBUTTON TO START."¢ ¢XST5: LDY #0¢XST3: LDA MESS2,Y¢ STA (88),Y¢ INY¢ CPY #34¢ BNE XST3¢ ¢ ;WAIT FOR THE FIREBUTTON TO BE PRESS¢ ¢XST4: LDA STRIG0¢ BNE XST4¢ LDA #0¢ STA TFLAG7¢ STA TFLAG1¢ JSR BOARD¢ JSR PSCOR¢ ¢ RTS¢ ¢ ;START GAME OVER SEQUENCE¢ ;KILL DOLLAR SIGN¢ ¢GAMEO: JSR DKILL¢ LDA #1¢ STA TFLAG1¢ ¢ ;WAIT FOR BALLOONS TO GET CLEAR¢ ¢GA4: LDA RCOUNT¢ CMP #1¢ BNE GA4¢ ¢ LDA #1¢ STA TFLAG6¢ STA TFLAG9¢ LDA #0¢ STA TPOINT¢ STA TCOUNT¢ ¢ ;SCROLL UP THREE FOR SPACES¢ ¢GA1: LDA TCOUNT¢ CMP #4¢ BNE GA1¢ ¢ ;PRINT"GAME OVER"¢ ¢ LDA #1¢ STA GFLAG1¢GA2: LDA TCOUNT¢ CMP #5¢ BNE GA2¢ ¢ ;PRINT MORE SPACES¢ ¢ LDA #0¢ STA GFLAG1¢GA3: LDA TCOUNT¢ CMP #23¢ BNE GA3¢ ¢ LDA #0¢ STA TFLAG6¢ STA TFLAG9¢ LDA #1¢ STA TFLAG7¢ LDY #0¢ ¢ ;SET VALUES BACK TO DEFAULT¢ ¢ LDA #3¢ STA PEMPB¢ STA MEN¢ LDA #130¢ STA PY2¢ STA PY3¢ ¢ ;SET PLATFORM BACK TO DEFAULT POS.¢ ¢ LDA #180¢ STA PX3¢ ¢ LDA #LOW PM2¢ STA WORKP¢ LDA #HIGH PM2¢ STA WORKP+1¢ LDX #2¢ JSR CRA2¢ LDA #1¢ STA GFLAG3¢ STA PD3¢ JSR PDR1¢ ¢ LDA #17¢ STA LEVEL¢ LDA #32¢ STA MPOINT¢ LDA #0¢ STA CRITP¢ STA MARK2¢ STA MARK3¢ STA PD2¢ LDA #100¢ STA BNUMB¢ LDA #255¢ STA PERMP¢ STA PERMP+1¢ LDA #10¢ STA DNUMB¢ ¢ ;SET SCORE BACK TO ZERO¢ ¢ LDA #0¢ STA SCORE¢ STA SCORE+1¢ STA SCORE+2¢ ¢ JMP XST5¢ ¢LAB8: INCLUDE D:LEVEL.LNK¢ ¢LAB: INCLUDE D:LINK1.LNK¢ ¢ ;GENERAL PURPOSE ERASE ROUTINE¢¢CRASE: LDA #LOW PM0¢ STA WORKP¢ LDA #HIGH PM0¢ STA WORKP+1¢ LDX #2¢CRA2: LDY #0¢ LDA #0¢¢CRA1: STA (WORKP),Y¢ INY¢ BNE CRA1¢ INC WORKP+1¢ DEX¢ BNE CRA1¢ RTS¢¢LAB4: INCLUDE D:VBILINK.LNK¢LAB9: INCLUDE D:VBISUB.LNK¢LAB5: INCLUDE D:DOLLAR.LNK¢LAB6: INCLUDE D:FALLING.LNK¢LAB7: INCLUDE D:SCORE.LNK¢LAB4: INCLUDE D:PLATFORM.LNK¢LAB2: INCLUDE D:PMINT.LNK¢LAB3: INCLUDE D:BDATA.LNK¢¢