forked from milkeybabes/Rampage
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBACK
1626 lines (1498 loc) · 18.9 KB
/
BACK
1
; RAMPMAIN SEI LDX #255 TXS LDY #2 LDA #0 STA ENABLEZEROP STA D6510,Y INY BNE ZEROP LDA #%00100101 STA R6510 LDA #%10010100 ; BANK 2 STA CIA2 LDA #%11011000 ; CHAR &E000 STA VICMCR ; SCR &F800 LDA #%11011000 STA VICCR2 LDA #%00000011 ; BLANK OUT STA VICCR1 LDA #>NMIA STA &FFFA LDA #<NMIA STA &FFFB LDA #>RESET STA &FFFC LDA #<RESET STA &FFFD LDA #>IRQ STA &FFFE LDA #<IRQ STA &FFFF LDA #1 STA VICIMR LDA #&7F STA CIA1+13 STA CIA2+13 LDA CIA1+13 LDA CIA2+13 LDA #0 STA CIA1+14 STA CIA1+15 STA CIA2+14 STA CIA2+15 STA NMSB+1 STA NMSB2+1 STA BALLON STA HEX0 STA HEX1 STA XCORD+0 STA XCORD+1 STA CIA1+2 ; ELSE DOWN = 1 STA RASTER STA APECOUNT ; ? STA TOGGLE STA OSIL STA HELLI ; STOP BIG ONES CLI JSR CLEARN ; NYBBLES JSR CRUM LDY #62 LDA #0BKANSP STA [BL*64]+BANK,Y STA [253*64]+BANK,Y ; ON STA [254*64]+BANK,Y ; BORDER STA [(SO0+0)*64]+BANK,Y STA [(SO0+1)*64]+BANK,Y STA [(SO0+2)*64]+BANK,Y STA [(SO0+3)*64]+BANK,Y STA [(SO0+4)*64]+BANK,Y STA [(SO0+5)*64]+BANK,Y STA [(SO1+0)*64]+BANK,Y STA [(SO1+1)*64]+BANK,Y STA [(SO1+2)*64]+BANK,Y STA [(SO1+3)*64]+BANK,Y STA [(SO1+4)*64]+BANK,Y STA [(SO1+5)*64]+BANK,Y STA [(SO2+0)*64]+BANK,Y STA [(SO2+1)*64]+BANK,Y STA [(SO2+2)*64]+BANK,Y STA [(SO2+3)*64]+BANK,Y STA [(SO2+4)*64]+BANK,Y STA [(SO2+5)*64]+BANK,Y DEY BPL BKANSP LDA #0 STA BORDER STA COLOUR0 STA PRIORITY LDA #11 STA COLOUR1 LDA #15 STA COLOUR2 LDA #7 STA COLOUR3 LDA #189+7 STA Y+0 STA Y+1 STA Y+2 LDA #%00111111 STA MULTICOL LDA #7 STA MULTI0 LDA #11 STA MULTI1 LDA #2 STA SPC0 STA SPC1 LDA #8 STA SPC2 STA SPC3 LDA #14 STA SPC4 STA SPC5 LDA #5 STA SPC6 STA SPC7 LDA #1 STA HELDIR STA HELDIR+1 LDA #0 STA XCORD+0 STA XCORD+1 LDA #50 STA HELDLY+0 LDA #250 STA HELDLY+1 LDA #0 STA XCORD STA XCORD+1 STA DIR+0 ; DIRECTION STA DIR+1 ; FACEING STA DIR+2 STA FRAME+0 ; SPRITE FRAME STA FRAME+1 STA FRAME+2 STA STEP+0 ; WALK FRAME STA STEP+1 STA STEP+2 STA COUNT+0 ; COUNTER FOR STA COUNT+1 ; ANIMATION STA COUNT+2 STA HUSED0 STA HUSED1 LDA #1 ; 1 WALK STA ACTION+0 ; DOING WHAT STA ACTION+1 ; ACTION STA ACTION+2 JSR INITIALISE JSR FIRS0 JSR FIRS1 LDA #%11111111 STA ENABLE JSR AIRLOOP JSR JOYGET LDX #0 JSR MOVE LDX #1 JSR MOVE LDX #2 JSR MOVE JSR SET0 JSR SET1 LDA CARB+1 BNE EAR JSR NEWOEAR JSR DRAWBUILD LDA SYNCSMO CMP SYNC BEQ SMO JMP LOOPAWALK EQU 1 ; WALKINGAPUNCHW EQU 2 ; PUNCH GROUNDACLIMB EQU 3 ; CLIMBAPUNCHC EQU 4 ; PUNCH CLIMBAJUMP EQU 5 ; JUMPAGRAWL EQU 6 ; GRAWLINGAOUCH EQU 7 ; BEING HITASUPRISE EQU 8ATRANS EQU 9ADIE EQU 10ASTARE EQU 11AFALL EQU 12AGROWL EQU 13AEAT EQU 14 ; DIRECTION 0 FACING LEFTACTTABL DB >WALK DB >PUNCHW DB >CLIMB DB >PUNCHC DB >JUMP DB >GRAWL DB >OUCH DB >SUPRISE DB >TRANS DB >DIE DB >STARE DB >FALL DB >GROWL DB >EATACTTABH DB <WALK DB <PUNCHW DB <CLIMB DB <PUNCHC DB <JUMP DB <GRAWL DB <OUCH DB <SUPRISE DB <TRANS DB <DIE DB <STARE DB <FALL DB <GROWL DB <EATMOVE LDY ACTION,X LDA ACTTABL-1,Y STA SOMET+1 LDA ACTTABH-1,Y STA SOMET+2SOMET JSR &FFFF ; SMC LDA FIRE,X BEQ AST LDA #ATRANS ;STA ACTION,X LDA #0 ;STA COUNT,XAST JSR KILCAR LDA ACTION,X CMP #AWALK BEQ CANBE CMP #ACLIMB BNE MOVMCANBE STA LASTA,X JSR ANYKEY ; IF NO BNE MOVM ; MOVEMENT LDA #ASTARE ; DO A DELAY STA ACTION,XMOVM JMP CREATE BLOCK ; ACTION 1WALK JSR WA JSR CLIMCHECKF LDA Y,X CMP #189+7 ; IF ON GROUND BCS ATB ; DONT FALL JSR MODEL BCS NFAL LDA FIRE,X BNE FALO LDA DOWN,X BEQ FALO LDA DIR,X ; BACK DOWN EOR #-1 ; LEFT STA DIR,X ; OR BMI FROML LDA X,X CLC ADC #4 STA X,XFROML LDA #ACLIMB ; RIGHT SIDE STA ACTION,X ; OF BUILDING LDA Y,X CLC ADC #3*8 STA Y,X LDA X,X AND #%11111100 STA X,X RTSATB LDA #189+7 STA Y,X RTSFALO LDA #12 STA FRAME,X LDA #AFALL STA ACTION,XNFAL RTSWA LDA FIRE,X ; IF KEY BEQ JUWA ; WITH FIRE LDA LEFT,X ; PRESS ORA RIGHT,X ; THEN DO ORA UP,X ; A PUNCH ORA DOWN,X ; OF SOME SORT BEQ OOR JMP TRYP1OOR LDA #AJUMP ; FIRE ONLY STA ACTION,X LDA #&26 ; JUMP FRAME STA FRAME,X LDA #0 STA COUNT,X PLA PLA RTSJUWA LDA LEFT,X BEQ :NOM LDA DIR,X BPL :ALSET INC DIR,X:ALSET JMP WALKL ; WALK LEFT:NOM LDA RIGHT,X BLOCK BEQ :NOM LDA DIR,X BMI :ALSET DEC DIR,X:ALSET JMP WALKRWALKL JSR WALKY ; LEFT LDA X,X SEC SBC #2 STA X,X RTSWALKR JSR WALKY ; RIGHT LDA X,X CLC ADC #2SAVEM STA X,X RTSCLIM JSR CLIMBCHECK BCS OFFB ; PUT INTO SIDE OF BUILDING LDA TMP ; 255 LEFT 0 RIGHT BEQ RIGHTS LDA DIR,X BMI NOCH LDA #-8 JMP GOTVRIGHTS LDA DIR,X BPL MINS LDA #12 NOPPMINS LDA #4GOTV CLC ADC X,X STA X,XNOCH LDA X,X AND #%11111100 STA X,X LDA TMP ; NEW DIRECTION STA DIR,X LDA #&1B STA FRAME,X LDA #ACLIMB STA ACTION,X LDA #0 STA COUNT,XOFFB RTSWALKY LDA STEP,X CLC ADC #1 CMP #4 BCC :LESS LDA #0:LESS STA STEP,X CLC ADC #8 STA FRAME,X:NOM RTSOYT0 DB 6,2,3,3OXT1 DB 0,-2,-2,-4OXT2 DB -1,2,2,4FISTPO LDY HANDY,X LDA Y,X LSR A LSR A LSR A SEC SBC OYT0,Y STA FISY,X LDA X,X LSR A LSR A STA XTEMP LDA DIR,X BPL SBIT LDA OXT2,Y JMP SUPERSBIT LDA OXT1,YSUPER CLC ADC XTEMP STA FISX,X RTSHITHEL JSR CHK0 BCS SDF ; OUT OF RANGE LDA HEACT0 CMP #8 BEQ SDF JSR HITC ; FIRST HELI BCC SDF LDY #8 LDA HEX0 STA HECXT1+8 LDA HEY0 STA HECYT1+8 JMP EXPI0SDF JSR CHK1 BCS SPF ; OUT OF RANGE LDA HEACT1 CMP #8 BEQ SPF JSR HITC BCC SPF LDY #8 LDA HEX1 STA HECXT1+8 LDA HEY1 CLC ADC #20 STA HECYT1+8 JMP EXPI1SPF RTSHITC LDA YTEMP ; HELI CHR CORD CMP FISY,X ; APE HAND BEQ JOL CLC ADC #1 CMP FISY,X BNE CANNJOL LDA XTEMP CMP FISX,X BEQ CAN CLC ADC #1 CMP FISX,X BEQ CANCANN CLC ; MISSED RTS CAN SEC ; HIT RTSCHK0 LDA HEY0 LSR A LSR A LSR A SEC SBC #5 STA YTEMP LDA HEX0 CMP #8 BCC EXI CMP #&9E BCS EXI LSR A LSR A SEC SBC #2 STA XTEMP CLC RTSCHK1 LDA HEY1 LSR A LSR A LSR A SEC SBC #5 STA YTEMP LDA HEX1 CMP #8 BCC EXI CMP #&9E BCS EXI LSR A LSR A SEC SBC #2 STA XTEMP CLC RTSEXI SEC RTS ; PUNCH FOR WALKINGTRYP1 LDA LEFT,X BEQ :TRR LDA DIR,X BNE EXI ;NOTHN ; BACKP BEQ :THIW:TRR LDA RIGHT,X BEQ :TRR2 LDA DIR,X BEQ EXI; NOTHN ; BACKP BNE :THIW:TRR2 LDA UP,X BEQ :GOTTB LDY #0 LDA #33 ; PUNCH UP JMP :STF:GOTTB LDA #7 ; PUNCH DOWN LDY #1 JMP :STF:THIW LDA #4 ; PUNCH LEFT LDY #2 JMP :STF:BACKP LDA #19 ; PUNCH RIGHT LDY #3:STF STA FRAME,X TYA STA HANDY,X ; WHAT POS LDA #APUNCHW STA ACTION,X LDA #0 STA COUNT,X JSR HIT ; PUNCH WHAT JSR FISTPO JSR DETEC2 JMP HITHELTC RTS PUNCHW LDA FIRE,X BNE TC LDA COUNT,X CLC ADC #1 CMP #1 ; 3 BCC STEX LDA #0 STA COUNT,X LDA #8 ; ACTION 2 STA FRAME,X LDA #AWALK ; BACK TO WALK STA ACTION,XSTEX STA COUNT,X RTSCLIMBCHECK LDA FIRE,X BNE CRUNCH LDA UP,X BEQ EXI JSR SIDE BCC OFE RTS ; C=1 UNDEROFE LDA DIR,X BMI HER LDA X,X SEC SBC #8 JMP DSHER LDA X,XDS LSR A LSR A CLC ADC #1 STA TMP LDY #0GETL LDA SBTOP,Y CMP Y,X BCS NOTW LDA SBXSTART,Y CMP TMP BEQ ONBEG LDA SBXEND,Y CMP TMP BEQ ONENDNOTW INY CPY HOWMANY BEQ GETL BCS CRUNCH JMP GETLCRUNCH SEC RTSONBEG LDA #255 ; DIRECTION NOPP ; FACEINGONEND LDA #0 STA TMP TYA STA MONONB,X LDA SBXSTART,Y ASL A ASL A STA ONBX,X LDA SBXEND,Y ASL A ASL A STA ONBX1,X CLC RTSSIDE LDA Y,X SEC SBC #5*8 LSR A LSR A LSR A TAY LDA DIR,X BPL TO2 LDA #4 NOPPTO2 LDA #-4 CLC ADC X,X LSR A LSR A JSR MEMXY LDY #0 LDA (MIKE1),Y CMP #&0C BEQ TH CMP #&0D BEQ TH CMP #&0F BEQ TH CMP #&10 BEQ TH CMP #&40 BEQ TH CMP #&41 BEQ TH CMP #&25 ; &25 BCC NOT ; TO &28 CMP #&29 BCC TH CMP #&46 BEQ TH CMP #&47 BEQ TH CMP #&53 ; &53 BCC NOT ; TO &73 CMP #&74 BCC THNOT SEC RTSTH CLC RTS BLOCKCLIMB LDA FIRE,X ; ACTION 3 BEQ JOM LDA RIGHT,X ORA LEFT,X ORA UP,X ORA DOWN,X BNE TRYP2 ; A PUNCH LDA #AFALL ; IF NO DIR STA ACTION,X ; FALL ALL LDA DIR,X ; BUILDING BPL AD4 LDA #-4 NOPPAD4 LDA #4 CLC ADC X,X STA X,X RTSJOM LDA UP,X BEQ THW LDA #-4 JMP FRETHW LDA DOWN,X BEQ LES LDA #4 FRE STA TMP LDA FIRE,X BNE TRYP2 LDA Y,X CLC ADC TMP STA Y,X CMP #189+7 BCC BWL LDA #189+7 STA Y,X JMP BATWBWL LDA MONONB,X TAY LDA Y,X CMP SBTOP,Y BCS LEST LDA DIR,X ; PUT ON BPL SBI ; TOP OF LDA #8 ; BUILDING NOPPSBI LDA #-8 CLC ADC X,X STA X,XDES LDA Y,X SEC SBC #3*8 STA Y,XBTW LDA #8 STA FRAME,X LDA #AWALK STA ACTION,X RTSBATW LDA #AWALK STA ACTION,XLEST LDA COUNT,X EOR #1 STA COUNT,X CLC ADC #&1B STA FRAME,XLES RTS BLOCK ; PUNCH FOR CLIMBINGTRYP2 LDA LEFT,X BEQ :TRR LDA DIR,X BNE :BACKP BEQ :THIW:TRR LDA RIGHT,X BEQ :TRR2 LDA DIR,X BEQ :BACKP BNE :THIW:TRR2 LDA UP,X BEQ :GOTTB LDY #0 LDA #34 ; PUNCH UP JMP :STF:GOTTB LDA #&1A ; PUNCH DOWN LDY #1 JMP :STF:THIW LDA #23 ; PUNCH LEFT LDY #2 JMP :STF:BACKP LDA #36 ; PUNCH RIGHT LDY #3:STF STA FRAME,X TYA STA HANDY,X LDA #APUNCHC STA ACTION,X LDA #0 STA COUNT,X LDA DOWN,X BEQ LESB LDA Y,X CLC ADC #4 STA Y,X CMP #189+7 BCC LES ;B LDA #189+7 STA Y,X JMP BTWLESB RTS OYT02 DB 6,2,4,4OXT12 DB 0,0,-3,2OXT22 DB -1,1,2,-3FISTP LDA Y,X LSR A LSR A LSR A SEC SBC OYT02,Y STA FISY,X LDA X,X LSR A LSR A STA XTEMP LDA DIR,X BPL SBIT2 LDA OXT22,Y JMP SUPER2SBIT2 LDA OXT12,YSUPER2 CLC ADC XTEMP STA FISX,XTC2 RTSPUNCHC LDA FIRE,X BNE TC2 LDA COUNT,X BNE ADR2 LDY HANDY,X JSR FISTP ; X Y FOR FIST JSR HITHEL ; HIT HELIADR2 LDA COUNT,X CLC ADC #1 STA COUNT,X CMP #1 ;2 BCC STEX2 LDA #0 STA COUNT,X LDA #&1B ; ACTION 2 STA FRAME,X LDA #ACLIMB ; BACK TO CLIMB STA ACTION,X JMP HITSTEX2 RTSJUMP LDA DIR,X ; ACTION 5 BMI THIW LDA #-2 NOPPTHIW LDA #2 CLC ADC X,X STA X,XCHICK LDY COUNT,X LDA Y,X CLC ADC YADT,Y STA Y,X TYA CLC ADC #1 STA COUNT,X CMP #17 ; 24 BCC GRAWL LDA #0 STA COUNT,X LDA #AWALK STA ACTION,X JSR CHECKFGRAWL RTS ; ACTION 6OUCH LDA COUNT,X ACTION 7 CLC ADC #1 CMP #10 BCS BACKT STA COUNT,X LDA X,X CLC ADC HITAD,XUI STA X,X LDA #&1F STA FRAME,X RTSBACKT LDA #AFALL STA ACTION,X LDA #0 STA COUNT,X RTSHITAD DS 3,0SUPRISE RTS ; ACTION 8TRANS LDA COUNT,X ; ACTION 9 CLC ADC #1 CMP #24*2 BCS WALKO ;WALK OFF SCREEN STA COUNT,X LSR A TAY LDA TRANT,Y ; STA FRAME,X RTSWALKO LDA #ADIE ; SMALL MAN ? STA ACTION,X RTSTRANT DB &27,&26,&27,&26 DB &27,&26,&27,&26 DB &27,&28,&27,&28 DB &27,&28,&27,&28 DB &29,&28,&29,&28 DB &29,&28,&29,&28DIE LDA DIR,X ; ACTION 10 BPL FCNL LDA #2 NOPP FCNL LDA #-2 CLC ADC X,X STA X,X CMP #&F8 BEQ KNIGHT CMP #&A6 BEQ KNIGHT LDA COUNT,X CLC ADC #1 AND #1 STA COUNT,X CLC ADC #&28 STA FRAME,X RTSKNIGHT LDA #AWALK STA ACTION,X RTS STARE JSR ANYKEY ; ACTION 11 BEQ OUTOF ; STARE AT YOU LDA LASTA,X STA ACTION,X LDA LASTA,X STA ACTION,X CMP #AWALK BEQ WALKF CMP #ACLIMB BNE WHAT LDA #&1B NOPPWALKF LDA #8 STA FRAME,XWHAT RTSOUTOF LDA LASTA,X CMP #AWALK BEQ ATN CMP #ACLIMB BNE NOM LDA #&15 NOPPATN LDA #0 STA FRAME,XNOM RTS ; STAY AS YOU AREANYKEY LDA FIRE,X ORA LEFT,X ORA RIGHT,X ORA UP,X ORA DOWN,X RTS BLOCK ; ACTION 12FALL LDA Y,X CLC ADC #8 STA Y,X CMP #189+7 BCS :AAO JSR MODEL BCS :AAD ; ON PLAT:GETL RTS:AAD LDA Y,X AND #15 CMP #12 BEQ :NOF CMP #4 BEQ :NOF RTS:AAO LDA #189+7 ; ? STA Y,X:NOF LDA #AWALK STA ACTION,X RTSMODEL LDA Y,X LSR A LSR A LSR A TAY LDA X,X LSR A LSR A JSR MEMXY LDY #0 LDA (MIKE1),Y CMP #9 BEQ :AAD CMP #10 BEQ :AAD CMP #11 BEQ :AAD CMP #33 BEQ :ADD CMP #34 BEQ :AAD CMP #35 BEQ :AAD CMP #36 BEQ :AAD CMP #37 BEQ :AAD CMP #&4B BEQ :AAD CMP #&4D BEQ :AAD CMP #&4F BEQ :AAD CMP #255-32 RTS:ADD SEC RTSHITW DB 1,0,0HITW2 DB 2,2,1HIT LDA LEFT,X ORA RIGHT,X BEQ MISS LDY HITW,X JSR DETECT BCC MIS JMP WACK ; HITMIS LDY HITW2,X JSR DETECT BCC MISSWACK LDA #0 STA COUNT,Y LDA ACTION,Y CMP #AWALK BEQ AOU CMP #ACLIMB BEQ CLA CMP #ASTARE BNE CLA ; OTHER JUST FALL LDA LASTA,Y CMP #AWALK BEQ AOUCLA LDA #AFALL ; ELSE FALL NOPPAOU LDA #AOUCH STA ACTION,Y LDA DIR,X BPL SBT LDA #4 NOPPSBT LDA #-4 STA HITAD,YMISS RTSDETECT LDA X,X CMP X,Y ; SOTWARE BCC LESTHN LDA X,Y CLC ADC #8 ; PIXELS X 12 CMP X,X BCS GREATENOHITA RTSLESTHN ADC #16 ; PIXELS X 12 CMP X,Y BCC NOHITAGREATE LDA Y,X CMP Y,Y BCC LETHAB LDA Y,Y CLC ADC #8 ; PIXELS Y CMP Y,X RTSLETHAB ADC #1*8 ; PIXELS Y CMP Y,YNOGJ RTS ; CHECK FOR HIT GROUND OBJECTDETEC2 LDA DOWN,X BEQ NOGJ LDA FIRE,X BEQ NOGJ BIT CARS ; ALREADY BVS NOGJ ; KILLED JSR DE BCC NOGJ LDA NP62+1 CMP #42+SS0 BEQ POL ; POLICE CAR CMP #44+SS0 BEQ POL CMP #50+SS0 BEQ POL ; TANK EXPLODE CMP #52+SS0 BEQ POL LDA CARB+1 CMP #-1 BNE UY LDA #-2 STA CARB+1 RTSUY CMP #1 BNE TY LDA #2 STA CARB+1 RTSPOL LDA CARS ; EXPLODE IT ORA #%01000000 STA CARS LDA #0 STA COUNT+3TY RTSDE LDA Y,X CMP #189+7 BCC NOGJ LDA TRANX LSR A LSR A CMP FISX,X BEQ RED CLC ADC #1 CMP FISX,X BEQ RED CLC RTSRED SEC RTSLESTH ADC #24 ; PIXELS X 12 CMP TRANXNOHIT RTSKILCAR BIT CARS BVC NOHIT LDA #8 STA CARCOL+1 LDA SYNC AND #7 BNE NOHIT LDA COUNT+3 CLC ADC #1 CMP #7 BCC STD LDA #0-24 STA TRANX LDA #%10000000 STA CARS LDA #6 STA CARCOL+1 JMP NEWOSTD STA COUNT+3 TAY LDA EXPLTT,Y STA NP62+1 LDA EXPLTB,Y STA NP72+1 RTS GROWL LDA COUNT,X ; ACTION 12 CLC ADC #1 STA COUNT,X CMP #4 BCS STG TAY LDA GRFT,Y STA FRAME,X RTSSTG LDA LASTA,X STA ACTION,X RTSGRFT DB 1,2EAT LDA COUNT,X ; ACTION 13 CLC ADC #1 STA COUNT,X CMP #4 BCS STG2 LDA LASTA,X CMP #AWALK BNE ONB LDA #&12 NOPPONB LDA #&0F CLC ADC COUNT,X STA FRAME,X RTSSTG2 LDA LASTA,X STA ACTION,X LDA #0 STA COUNT,X RTSO EQU 189+7+20 ; SPRITE OFFSETONBX DB 0,0,0ONBX1 DB 0,0,0BUILDPOINT DB 0SBXSTART DB 0,0,0,0,0,0,0,0SBXEND DB 0,0,0,0,0,0,0,0SBTOP DB 0,0,0 DB 0,0,0,0,0MONONB DS 3SY EQU 2 ; FASTER ?YADT DB SY*0,SY*-3,SY*-3,SY*-3 DB SY*-2,SY*-2,SY*-1,SY*-1 DB SY*0,SY*0,SY*0,SY*2 DB SY*2,SY*2,SY*3,SY*3 DB SY*3,SY*3,SY*3,SY*2 DB SY*3,SY*1,SY*2,SY*0EXPLTT DB 54+SS0,56+SS0,57+SS0 DB 58+SS0,60+SS0,62+SS0,BLEXPLTB DB 55+SS0,57+SS0,123+SS0 DB 59+SS0,61+SS0,63+SS0,BLNEWO JSR RAND AND #15 TAY LDA CSTCT,Y STA TRANX LDA CADT,Y STA CARB+1 LDA CARL,Y STA NP62+1 LDA CARR,Y STA NP72+1 RTS ; CAR TRAN ETC TABLESCARL DB 42+SS0,42+SS0,44+SS0,44+SS0 DB 46+SS0,46+SS0,48+SS0,48+SS0 DB 52+SS0,52+SS0,50+SS0,50+SS0 DB 42+SS0,46+SS0,50+SS0,42+SS0CARR DB 43+SS0,43+SS0,45+SS0,45+SS0 DB 47+SS0,47+SS0,49+SS0,49+SS0 DB 53+SS0,53+SS0,51+SS0,51+SS0 DB 43+SS0,47+SS0,51+SS0,43+SS0CSTCT DB 0-24,0-24,172,172 DB 0-24,0-24,172,172 DB 0-24,0-24,172,172 DB 0-24,0-24,172,172CADT DB 1,2,-1,-2 DB 1,2,-1,-2 DB 1,1,-1,-1 DB 1,1,-1,-1 ; HELI MOVEMENT TABLES ; AND ROUTINES ; CALLED FROM RASTER IRQMOVTL DB >HM0,>HM1,>HM2,>HM3 DB >HM4,>HM5,>HM6,>HM7 DB >HM8,>HM9,>HM10,>HM11 DB >HM12MOVTH DB <HM0,<HM1,<HM2,<HM3 DB <HM4,<HM5,<HM6,<HM7 DB <HM8,<HM9,<HM10,<HM11 DB <HM12HM0 DB 0,-1,0+SS0HM1 DB -1,0,4+SS0HM2 DB -1,1,8+SS0HM3 DB 0,-1,12+SS0HM4 DB 1,0,16+SS0HM5 DB 1,1,20+SS0HM6 DB 0,0,0+SS0HM7 DB 0,0,12+SS0HM8 DB 0,0,0+SS1 ; EXPLODEHM9 DB 0,0,1+SS1 ; &F000HM10 DB 0,0,2+SS1HM11 DB 0,0,3+SS1HM12 DB 0,0,BLM0 DB 1,140 ; LEFT DB 6,100 ; HOVER DB 0,50 ; UP DB 5,40 ; DIAG DB 4,130 ; LEFT DB 255M1 DB 1,140 ; LEFT DB 6,20 ; HOVER DB 4,100 ; RIGHT DB 7,20 ; HOVER DB 3,60 ; UP DB 2,50 ; DIAG DB 1,100 ; LEFT DB 255M2 DB 1,160 ; LEFT DB 6,20 ; HOVER DB 4,100 ; RIGHT DB 3,20 ; UP DB 4,70 ; RIGHT DB 255M3 DB 4,140 ; RIGHT DB 7,50 ; HOVER DB 3,30 ; UP DB 2,40 ; DIAG DB 1,120 ; LEFT DB 255M4 DB 1,50 ; LEFT DB 6,40 ; HOVER DB 0,60 ; UP DB 2,50 ; DIAG DB 1,90 ; LEFT DB 255 M5 DB 1,100 ; LEFT DB 3,60 ; UP DB 2,50 ; DIAG DB 3,60 ; UP DB 5,50 ; DIAG DB 4,100 ; RIGHT DB 255M6 DB 4,80 ; RIGHT DB 5,30 ; DIAG DB 4,60 ; RIGHT DB 255M7 DB 1,80 ; LEFT DB 2,30 ; DIAG DB 1,80 ; LEFT DB 255M8 DB 8,10 DB 9,10 DB 10,10 ;DB 11,10 ;DB 12,50 DB 255HECYT1 DB 180,190,195,170,180,190,160,160,160HECXT1 DB 180,180,180,0,180,180,0,180,160PATHTL DB >(M0-2),>(M1-2),>(M2-2) DB >(M3-2),>(M4-2),>(M5-2) DB >(M6-2),>(M7-2),>(M8-2)PATHTH DB <(M0-2),<(M1-2),<(M2-2) DB <(M3-2),<(M4-2),<(M5-2) DB <(M6-2),<(M7-2),<(M8-2)SET0 LDA HUSED0 BPL OFFSFIRS0 LDY #8 JSR RAND AND #7 TAYEXPI0 LDA PATHTL,Y STA TABML0 LDA PATHTH,Y STA TABML0+1 LDA HECXT1,Y STA HEX0 LDA HECYT1,Y STA HEY0 LDA #0 STA HUSED0NEXTB0 LDA TABML0 CLC ADC #2 STA TABML0 BCC SD0 INC TABML0+1SD0 LDY #0 LDA (TABML0),Y CMP #255 ; END OF LIST BNE NOE0 LDA #255 STA HUSED0OFFS RTSNOE0 TAY ; HELI 0 STA HEACT0 LDA MOVTL,Y STA TMPMEM LDA MOVTH,Y STA TMPMEM+1 LDY #1 LDA (TABML0),Y STA SPD0 DEY LDA (TMPMEM),Y STA THX0+1 INY LDA (TMPMEM),Y STA THY0+1 INY LDA (TMPMEM),Y STA PRT0+1 RTS UPHEL0 LDA HUSED0 BMI NOG LDA SPD0 BEQ NEXTB0 DEC SPD0 LDA HEX0 CLCTHX0 ADC #1 STA HEX0 LDA HEY0 CLCTHY0 ADC #1 STA HEY0 STA NY6+1PRT0 LDA #255 CLC ADC OSIL STA NP6+1 NOG RTSUPHEL1 LDA HUSED1 BMI NOG LDA SPD1 BEQ NEXTB1 DEC SPD1 LDA HEX1 CLCTHX1 ADC #1 STA HEX1 LDA HEY1 CLCTHY1 ADC #1 STA HEY1 STA NY7+1PRT1 LDA #255 CLC ADC OSIL STA NP7+1 RTSSET1 LDA HUSED1 BPL OFFSFIRS1 LDY #9 JSR RAND AND #7 TAYEXPI1 LDA PATHTL,Y STA TABML1+0 LDA PATHTH,Y STA TABML1+1 LDA HECXT1,Y STA HEX1 LDA HECYT1,Y SEC SBC #20 STA HEY1 LDA #0 STA HUSED1NEXTB1 LDA TABML1 CLC ADC #2 STA TABML1 BCC SD1 INC TABML1+1SD1 LDY #0 LDA (TABML1),Y CMP #255 ; END OF LIST BNE NOE1 LDA #255 STA HUSED1 RTSNOE1 TAY ; HELI 1 STA HEACT1 LDA MOVTL,Y STA TMPMEM LDA MOVTH,Y STA TMPMEM+1 LDY #1 LDA (TABML1),Y STA SPD1 DEY LDA (TMPMEM),Y STA THX1+1 INY LDA (TMPMEM),Y STA THY1+1 INY LDA (TMPMEM),Y STA PRT1+1NOF RTS ; WORK OUT MEM FOR X,Y ; FOR BIT COLOUR MEMORYMEMXY CLC ADC COLRAML,Y STA MIKE1+0 ; COLOUR LOW LDA SCREENTEMP EOR #SCEOR ; NOT BUFFER ADC COLRAMH,Y STA MIKE1+1 ; COLOUR HIGH RTSCOLRAML DB &00,&28,&50,&78 DB &A0,&C8,&F0,&18 DB &40,&68,&90,&B8 DB &E0,&08,&30,&58 DB &80,&A8,&D0,&F8 DB &20,&48,&70,&98 DB &C0COLRAMH DB 0,0,0,0,0,0 DB 0,1,1,1,1,1,1 DB 2,2,2,2,2,2,2 DB 3,3,3,3,3 ; UTILITIES FOR GAME ; SCAN JOYSTICKJOYGET LDX #0 STX CIA1+2 LDY #0 JSR JOYST ; PORT 1 INX ; PORT 2 LDY #1 JSR JOYST LDY #2 LDA #255 ; KEYBOARD STA CIA1+2 LDA #%10111111 STA CIA1 LDA CIA1+1 EOR #%11111111 STA JOY LDA #0 ASL JOY ROL A STA RIGHT,Y LDA #0 ASL JOY ASL JOY ROL A STA FIRE,Y LDA #%11011111 STA CIA1 LDA CIA1+1 EOR #%11111111 STA JOY LDA #0 ASL JOY ROL A STA LEFT,Y LDA #0 ASL JOY ROL A STA UP,Y LDA #0 ASL JOY ROL A STA DOWN,YNOFIRE RTSJOYST LDA CIA1,X EOR #%00011111 STA JOY LDA #0 LSR JOY ROL A STA UP,X LDA #0 LSR JOY ROL A STA DOWN,X LDA #0 LSR JOY ROL A STA LEFT,X LDA #0 LSR JOY ROL A STA RIGHT,X LDA #0 LSR JOY ROL A STA FIRE,X RTSCLEARN LDY #0 LDA #%00000110CLEN STA NYBBLE+&000,Y STA NYBBLE+&100,Y STA NYBBLE+&200,Y STA NYBBLE+&300,Y DEY BNE CLEN RTS