.FILE 'MUTOID.ASM' .TITLE 'ROBO-RAMA GAME PROGRAM' .WIDTH 132 .OPTION B,D,L,T .MNOLIST ;CHANGE TO RED PAL WHEN DAMAGED ; ; INITIATED: APRIL 26,1989 ; MODIFIED: ! ; SOFTWARE: MARK TURMELL ; ; COPYRIGHT (C) 1989 WILLIAMS ELECTRONICS GAMES, INC. ; ; ; GET THE SYSTEM STUFF .INCLUDE "MPROC.EQU" ;MPROC EQUATES .INCLUDE "DISP.EQU" ;DISPLAY PROC. EQUATES .INCLUDE "\VIDEO\SYS\SYS.INC" ;Z UNIT SYSTEM EQUATES .INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS DEFINITIONS .INCLUDE "IMGTBL.GLO" .INCLUDE "ROBO.EQU" .INCLUDE "MUTEXP.TBL" .INCLUDE "MAC2.ASM" ;MACRO 2 DEFINITIONS .INCLUDE "AUDIT.EQU" ; ;SOUND HEADERS USED HERE ; .REF MBANG,BUBL,EXP3,YAMOFF,EXP3HI,LAZSND,VICMSC,EXP3HIA .REF AWWSND,EESND,ONOSND,WPWPSND,WPSSND,NOWAY,OUCH,CROWD1 .REF MCSPK7 .REF AWWSND2,SOUNDSUP,GOGO,BINGO,MCSPK4,MCSPK8,CIRCUIT ; ;SYMBOLS EXTERNALLY DEFINED ; .REF CLNPAL,WAVEYX,CHKFREE,O_ITEMS2,BAD0,GET_ADJ .REF EXPTLXY,EXPLRXY,DEXIT,BOSSON,GAMSTATE,ENDON,BOOM3 .REF GPALOBJ,TTORSO,FRANIM,RANGRAND,SHAKER,XYSKOBJ,CVRT .REF GETHDR,RANDPER,PLYROBJS,STATUS,SHK_ON,NEWV .REF KP_TS,HALT,PCNT,FLASHME,OBJOFF,OBJON,ARMOFF .REF SCRTSTG,BOOM2,XVEL,YVEL,P1DATA,P2DATA,SCRADD2 .REF ARMOFF2,ADDPCS2,OVALBLD,CLUSTER,KILL_F2_NO,SCRTST ; ;SYMBOLS DEFINED IN THIS FILE ; .DEF O_MUT,TOID_ON,KIL_SNK,BOOMN,MARM6A,DOSHK0,MUTPTR .DEF MUT_HIT,EXP_BULL,EXP_BULL2,GETSPK,MCON ; ;UNINITIALIZED RAM DEFINITIONS ; .BSS MCON,16 .BSS KPPLYR,32 .BSS SNDCNT,16 .BSS POPFLG,8 .BSS POP,8 .BSS DMGSK,16 .BSS DMGPNT,8 .BSS DMG,16 .BSS KPA10,8 .BSS PLYRAD,8 .BSS INAIR,8 .BSS FISTDN,8 .BSS MEMAD,16 .BSS MEROAR,16 .BSS TOTLZRS,8 .BSS HEADV,8 .BSS SKVW,8 .BSS SCNTR,8 .BSS UPDT,16 .BSS MDIR,8 .BSS TIMES,8 .BSS PLS,8 ;SLEEP CNTR USED FOR BOTH FAST AND SLOW POUND .BSS PRS,8 .BSS FISTLP,32 .BSS FISTRP,32 .BSS PNDRP,32 .BSS PNDLP,32 .BSS POSEL,32 .BSS POSER,32 .BSS FPNDRP,32 .BSS FPNDLP,32 .BSS TOID_ON,8 .BSS TRDSLP,8 .BSS TRDFTRP,32 .BSS TRDFTLP,32 .BSS TRDSDLP,32 .BSS TRDSDRP,32 .BSS MACTION,8 .BSS MTIME,16 .BSS KP_BELL,32 .BSS SNKOUT,8 .BSS MUTPTR,32 ; ;EQUATES FOR THIS FILE ; DNYVEL .EQU 0E000H DNYVEL2 .EQU 01A000H ;01C000H UPYVEL .EQU -09000H UPYVEL2 .EQU -01A000H ;-01C000H ; ;BEAM DATA STRUCTURE ; PCS .EQU PDATA ;UHB TIMES TO LAY THIS BEAM DOWN SLP .EQU PDATA+8 ; ;MUTOID DATA STRUCTURE ; TNKL .EQU PDATA ;UHL TANK LEFT PTR TNKR .EQU PDATA+32 ;UHL TANK RGT PTR TRSL .EQU PDATA+64 ;UHL TORSO LEFT PTR TRSR .EQU PDATA+96 ;UHL TORSO RGT PTR ARML .EQU PDATA+128 ;UHL ARM LEFT PTR ARMR .EQU PDATA+160 ;UHL ARM RGT PTR TRDLF .EQU PDATA+192 ;UHL TANK LEFT/FRONT TREAD TRDRF .EQU PDATA+224 ;UHL TANK RGT/FRONT TREAD TRDLS .EQU PDATA+256 ;UHL TANK LEFT/SIDE TREAD TRDRS .EQU PDATA+288 ;UHL TANK RGT/SIDE TREAD SHADR .EQU PDATA+320 ;UHL SHADOW ON RIGHT SIDE OF TANK SHADF .EQU PDATA+352 ;UHL SHADOW IN FRONT OF TANK MHEAD .EQU PDATA+384 ;UHL HEAD PTR ; MAXPCS .EQU 10 LSTPC .EQU MAXPCS-1 ; ;DATA STRUCTURE OF MASTER PIECE POINTER ; BLDVW .EQU PDATA ;UHB BLADE VIEW 0-3 CDELAY .EQU PDATA+8 ;UHB DELAY BEFORE UPDATING DLY .EQU PDATA+16 ;UHL DLY VEL UPDATE FOR THIS CNT GDIE .EQU PDATA+48 ;UHB GONNA DIE FLAG SKTM .EQU PDATA+56 ;UHW SKHITS .EQU PDATA+72 ;UHB ; ;UNINITIALIZED RAM DEFINITIONS ; .BSS OOF,16 .BSS CHEEK,16 .BSS TRAM1,32*MAXPCS+32 .BSS SCRL,8 .BSS TRAM2,32*MAXPCS .TEXT ; O_MUT CREATE DUM_ID,MUTOID RETS OCH SLEEP 23 MOVI OUCH,A0 MOVE @MCON,A1 JRZ OCH1 MOVI MCSPK7,A0 OCH1 CALLA ONESND DIE MUTOID: ;SHAKE SCREEN CLR A1 MOVE @CIRCUIT,A0 CMPI 2,A0 JRNZ JJ1 MOVK 1,A1 JJ1 MOVE A1,@MCON MOVI EXP3HI,A0 CALLA ONESND CALLR DOSHK0 SLEEP 5 CALLR DOSHK0 SLEEP 5 MOVI EXP3HI,A0 CALLA ONESND CALLR DOSHK0 SLEEP 5 CALLR DOSHK0 MOVI EXP3HI,A0 CALLA ONESND SLEEP 5 CALLR DOSHK0 CREATE 0,OCH MOVE @GAMSTATE,A0,W MOVI 300+400-90+180,A9 CMPI INAMODE,A0 JRNZ MD1 ;NO WAY SOUND CALL CLR A0 MOVE A0,@SOUNDSUP ;SOUNDS OFF IN DEMO ADJUST ADJMUSIC ;GET MUSIC ON OFF FOR DEMO MOVE A0,A0 JRNZ NONO MOVI NOWAY,A0 CALLA ONESND NONO MOVI 0FDH,A9 MOVK 1,A0 MOVE A0,@SOUNDSUP MD1 MOVI 0FFH,A0 MOVB A0,@KP_TS SLEEP 1 DSJS A9,MD1 ; MOVI DLSTZ,A1 ; CALLA UNGET CALLA CLNPAL SLEEP 1 ;TURN ON ALL PIECES MOVK 13,A9 TP MOVE A9,A0 SLL 5,A0 MOVE @MCON,A1 JRZ NOMC ADDI MCLIST,A0 JRUC MC NOMC ADDI ONLIST,A0 MC MOVE *A0,A14,L CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE CALLA STFOBJ ;STUFF OBJECT DATA MOVE A13,*A0(OPLINK),L CALLA INSOBJ ;INSERT OBJECT INTO LIST MOVE A0,A8 MOVI 173,A11 ;X MOVI -70,A10 ;Y MOVE A10,*A8(OYPOS),W MOVE A11,*A8(OXPOS),W CALLA ADJSTWTL MOVE *A8(OPAL),A0,L ANDI 0FFFFH,A0 MOVE A0,*A8(OPAL),L MOVE A9,A0 DEC A0 SLL 5,A0 ADD A13,A0 ADDI TNKL,A0 MOVE A8,*A0,L DEC A9 JRNZ TP ;OBJECTS ALL ON MOVB A9,@TOTLZRS MOVE A9,@DMGPNT MOVE A9,@DMG MOVI 150,A9 ;200 ;FIRST LEVEL OF DAMAGE TO GET TO. MOVE A9,@DMGSK MOVK 1,A0 MOVB A0,@TOID_ON MOVB A0,@BOSSON MOVE A13,@MUTPTR,L MOVE *A13(TNKL),A8,L MOVE A13,A10 CLR A9 ;TORSO ON LEFT OF TANK CREATE TNKPID,TTORSO MOVE A13,A10 MOVK 1,A9 CREATE TNKPID,TTORSO CREATE BONPID,BELLY MOVE *A13(MHEAD),A9,L CREATE BONPID,DO_HEAD CREATE BONPID,SKPLYR CREATE BONPID,GETDOWN CLR A0 ;ROLL IN FROM DOOR CALLA GET_ST ;SET INITIAL ACTION SLEEP 3 TOID_TOP MOVE @HALT,A0 JRZ TT2 ; CLR A0 ; MOVE A0,*A8(OXVEL),L ; MOVE A0,*A8(OYVEL),L ; CALLR MOD_VELS CALLR LINE_UP ;ADJUST ALL PARTS TO MATCH TANK LEFT SLEEP 1 JRUC TOID_TOP TT2 CALLR LINE_UP ;ADJUST ALL PARTS TO MATCH TANK LEFT CALLR MV_TNK MOVE A8,*A13(TNKL),L SLEEP 1 JRUC TOID_TOP GETDOWN MOVI 180,A9 GETD SLEEP 1 MOVE @HALT,A0 JRNZ GETD MOVE @MUTPTR,A1,L MOVE *A1(TNKL),A8,L MOVI DNYVEL,A0 MOVE A0,*A8(OYVEL),L DSJ A9,GETD DIE SKPLYR SLEEP 24*60 MOVE @HALT,A0 JRNZ SKPLYR SKTP ;MAYBE JERK TOWARD PLAYER MOVE @PLYROBJS,A0,L MOVB @PCNT,A1 ANDI 1,A1 JREQ COP1 MOVE @PLYROBJS+32,A0,L COP1 MOVE @MUTPTR,A1,L MOVE *A1(TNKL),A8,L CALLA PLTLINE MOVE A5,A9 ;X MOVE A6,A10 ;Y ;SHAKE MUTOID MAN CREATE BONPID,XYADJ MOVI 30,A11 COP2 MOVE A9,*A8(OXVEL),L MOVE A10,*A8(OYVEL),L MOVE *A8(OXVAL),A1,L MOVE @WORLDTLX,A2,L SUB A2,A1 CMPI [90,0],A1 ;HAS IS HIT LEFT, STOP IT FROM MOVING MORE TO LEFT JRNC RTGOR MOVI 020000H,A9 MOVK 1,A11 RTGOR CMPI [245,0],A1 JRC RTOK MOVI -020000H,A9 MOVK 1,A11 RTOK MOVE *A8(OYVAL),A1,L MOVE @WORLDTLY,A2,L SUB A2,A1 CMPI [40,0],A1 ;HAS IS HIT LEFT, STOP IT FROM MOVING MORE TO LEFT JRNC RTYGO MOVI 18000H,A10 ; MOVK 1,A11 RTYGO CMPI [170,0],A1 JRC CONT MOVI -18000H,A10 MOVK 1,A11 CONT SLEEP 2 DEC A11 JRNZ COP2 MOVE A11,*A8(OXVEL),L MOVE A11,*A8(OYVEL),L SLEEP 5*60 JRUC SKTP ; MUT_HIT ;A8=PIECE HIT ;A0=BULLET PNTR ; ;IF GRENADE, DO DAMAGE ;IF SPEW, DO DAMAGE ;IF LAZER WEAPON, DO NOTHING ;IF NOT JUST FLASH IMAGE MMTM SP,A1,A2,A7,A9,A10 MOVE *A8(OID),A1 ANDI 0FFFFH,A1 CMPI CLSENMY|TYPMUT|SUBSNK,A1 JREQ SNKHIT MOVE *A0(OID),A1 CMPI CLSPLYR|TYPPLBL|SUBLZR,A1 JREQ NADA2 CMPI CLSPLYR|TYPPLBL|SUBGRND,A1 JREQ NF2 CMPI CLSPLYR|TYPPLBL|SUBSPEW,A1 JREQ NADA ;MORE DAMAGE IF SPEW2! MOVE *A8(OID),A1 ANDI 0FFFFH,A1 CMPI CLSENMY|TYPMUT|SUBHD,A1 JREQ NADA ;A2=P1DATA OR P2DATA MOVE *A0(OPLINK),A0,L MOVB *A0(MYPLYR),A0 MOVI P1DATA,A2 CMPI 1,A0 JREQ YU7 CMPI 2,A0 JRNZ YU7A MOVI P2DATA,A2 YU7 MOVI MUTPT,A1 ;AMOUNT OF SCORE MOVE A2,@KPPLYR,L CALLA SCRADD2 ;DO IT! ; YU7A MOVI 2,A0 CALLR DAMAGE NF MOVI 03F3F0000H,A9 CREATE 0,FLASHME ; NADA MMFM SP,A1,A2,A7,A9,A10 RETS NADA2 MOVK 15,A0 ;50 ;90 ;60 CALLA RANDPER JRNC NADA MOVE @DMG,A2 MOVE @DMGSK,A1 CMP A1,A2 JRNC AHITU ADDK 1,A2 MOVE A2,@DMG CMPI 3,A0 JRNC NADA AHITU MOVI 5,A0 MOVE A0,@MEMAD MOVI 15,A0 MOVE A0,@OOF MOVI EESND,A0 CALLA ONESND JRUC NADA NF2 ;A2=P1DATA OR P2DATA MOVE *A0(OPLINK),A0,L MOVB *A0(MYPLYR),A0 MOVI P1DATA,A2 CMPI 1,A0 JREQ YU8 CMPI 2,A0 JRNZ YU8A MOVI P2DATA,A2 YU8 ;A2=P1DATA OR P2DATA MOVE A2,@KPPLYR,L MOVI MUTPT,A1 ;AMOUNT OF SCORE CALLA SCRADD2 ;DO IT! ;TELL HEAD TO OOF! YU8A MOVI 15,A0 MOVE A0,@OOF MOVI 15,A0 CALLR DAMAGE CALLR GETSPK JRUC NF GETSPK MOVE @SNDCNT,A0 INC A0 MOVE A0,@SNDCNT ANDI 03H,A0 JRZ S2 SLL 5,A0 MOVE @MCON,A1 JRZ KOP ADDI SNDLSTZ,A0 JRUC KOP2 KOP ADDI SNDLST,A0 KOP2 MOVE *A0,A0,L CALLA ONESND RETS S2 MOVI 250,A0 CALLA RANDPER JRC S3 MOVI AWWSND2,A0 CALLA ONESND RETS S3 MOVI AWWSND,A0 CALLA ONESND RETS SNDLST .LONG AWWSND,OUCH,EXP3HIA,ONOSND SNDLSTZ .LONG MCSPK7,GOGO,MCSPK4,MCSPK8 DAMAGE MOVE A0,A2 MOVE @DMG,A1 ADD A0,A1 MOVE A1,@DMG MOVE @DMGSK,A0 CMP A0,A1 JRNC AHIT CMPI 15,A2 JRZ DF4 MOVI 500,A0 CALLA RANDPER JRNC DF5 DF4 PUSH A0 CREATE BONPID,XYADJ PULL A0 CMPI 200,A0 JRNC DF5 ANDI 03,A0 SLL 5,A0 MOVE @MCON,A1 JRZ NN1 ADDI SNDLSTZ,A0 JRUC NN2 NN1 ADDI OTBL,A0 NN2 MOVE *A0,A0,L CALLA ONESND MOVI 20,A0 MOVE A0,@MEMAD DF5 RETS OTBL .LONG OUCH,AWWSND,EESND,ONOSND XYADJ ;ADJUST MUTOID X/Y MOVK 10,A9 ;14 MOVE @MCON,A0 JRZ I80 MOVK 20,A9 ;14 I80 MOVE @MUTPTR,A0,L MOVE *A0(TNKL),A8,L ; MOVE *A0(TNKR),A10,L XY2 MOVE @DMGSK,A0 ANDI 0FFFFH,A0 CMPI 0FFFFH,A0 JREQ DI MOVE @MCON,A0 JRZ I801 MOVI -5,B0 ;-4 MOVI 5,B1 ;4 JRUC FOUT I801 MOVI -3,B0 ;-4 MOVI 3,B1 ;4 FOUT CALLA RANGRAND MOVE *A8(OXPOS),A1 ADD A0,A1 CALLA CKBNDX JRC HITX MOVE A1,*A8(OXPOS) HITX MOVE @MCON,A0 JRZ I802 MOVI -5,B0 ;-4 MOVI 5,B1 ;4 JRUC FOUT1 I802 MOVI -3,B0 ;-4 MOVI 3,B1 ;4 FOUT1 CALLA RANGRAND MOVE *A8(OYPOS),A1 ADD A0,A1 CALLA CKBNDY JRC HITY MOVE A1,*A8(OYPOS) HITY ; MOVE *A8(OYPOS),A0 ; MOVE A0,*A10(OYPOS) SLEEP 3 DEC A9 JRNZ XY2 DI DIE XYADJ2 ;ADJUST MUTOID X/Y MOVK 10,A9 ;14 MOVE @MCON,A0 JRZ I90 MOVK 20,A9 ;14 I90 MOVE @MUTPTR,A0,L MOVE *A0(TNKL),A8,L ; MOVE *A0(TNKR),A10,L XY22 MOVI -8,B0 ;-4 MOVI 8,B1 ;4 CALLA RANGRAND MOVE *A8(OXPOS),A1 ADD A0,A1 CALLA CKBNDX JRC HITX2 MOVE A1,*A8(OXPOS) HITX2 MOVI -8,B0 ;-4 MOVI 8,B1 ;4 CALLA RANGRAND MOVE *A8(OYPOS),A1 ADD A0,A1 CALLA CKBNDY JRC HITY2 MOVE A1,*A8(OYPOS) HITY2 ; MOVE *A8(OYPOS),A0 ; MOVE A0,*A10(OYPOS) SLEEP 3 DEC A9 JRNZ XY22 DIE CKBNDX PUSH A1 MOVE @WORLDTLX,A2,L SLL 16,A1 SUB A2,A1 CMPI [100,0],A1 ;HAS IS HIT LEFT, STOP IT FROM MOVING MORE TO LEFT JRC RTBAD CMPI [235,0],A1 JRNC RTBAD PULL A1 CLRC RETS RTBAD PULL A1 SETC RETS CKBNDY PUSH A1 MOVE @WORLDTLY,A2,L SLL 16,A1 SUB A2,A1 CMPI [40,0],A1 ;HAS IS HIT LEFT, STOP IT FROM MOVING MORE TO LEFT JRC RTBAD CMPI [160,0],A1 JRNC RTBAD PULL A1 CLRC RETS AHIT ADDI 40,A0 ;55 MOVE @MCON,A1 JRZ AHIY ADDI 35,A0 ;25 AHIY MOVE A0,@DMGSK CREATE 0,AHITPRC RETS AHITPRC CALLR HITRC2 DIE HITRC2 MOVB @DMGPNT,A0 INC A0 MOVB A0,@DMGPNT SLL 5,A0 ADDI JPTBLH,A0 MOVE *A0,A0,L JUMP A0 JPTBLH .LONG 0,LFARM,RGTARM,BLOCHST,BLOHD,BLOCHST2,KILLMUT,TAG,TAG TAG RETS GETDMGSK MOVI 0250,A1 ;300 MOVE @STATUS,A0 CMPI 3,A0 JRNZ ONEP MOVI 300,A1 ;400 ONEP MOVE @DMGSK,A0 ADD A1,A0 MOVE A0,@DMGSK RETS LFARM CREATE 0,TAG1 CALLR GETDMGSK MOVI MUTPT3,A1 ;AMOUNT OF SCORE FOR ARMS ETC MOVE @KPPLYR,A2,L CALLA SCRADD2 ;DO IT! RETS TAG1 MOVI OUCH,A0 CALLA ONESND ;COVER ARM WITH SMALL EXP MOVI 105,A10 TL0 CREATE 0,COVER SLEEP 3 DSJS A10,TL0 MOVI ONOSND,A0 CALLA ONESND SLEEP 25 ;BLOW OFF LEFT ARM MOVE @MUTPTR,A0,L MOVE *A0(ARML),A10,L ;ARML CREATE 0,TURN1 CREATE 0,THROWL SLEEP 40 MOVI EESND,A0 CALLA ONESND DIE TAG2 MOVI ONOSND,A0 CALLA ONESND ;COVER ARM WITH SMALL EXP MOVI 105,A10 TL01 CREATE 0,COVER2 ;COVER2 SLEEP 3 DSJS A10,TL01 SLEEP 25 MOVI AWWSND,A0 CALLA ONESND ;BLOW OFF RGT ARM MOVE @MUTPTR,A0,L MOVE *A0(ARMR),A10,L ;ARMR CREATE 0,TURN1 CREATE 0,THROWR SLEEP 60 MOVI AWWSND,A0 CALLA ONESND DIE RGTARM CREATE 0,TAG2 CALLR GETDMGSK MOVI MUTPT3,A1 ;AMOUNT OF SCORE FOR ARMS ETC MOVE @KPPLYR,A2,L CALLA SCRADD2 ;DO IT! RETS BLOCHST CREATE 0,THROWC CALLR GETDMGSK MOVI ONOSND,A0 CALLA ONESND MOVI MUTPT3,A1 ;AMOUNT OF SCORE FOR ARMS ETC MOVE @KPPLYR,A2,L CALLA SCRADD2 ;DO IT! RETS BLOHD MOVI OUCH,A0 CALLA ONESND MOVE @MUTPTR,A0,L MOVE *A0(MHEAD),A10,L ;MHEAD CREATE 0,TURN1 CREATE 0,THROWH CALLR GETDMGSK MOVI MUTPT3,A1 ;AMOUNT OF SCORE FOR ARMS ETC MOVE @KPPLYR,A2,L CALLA SCRADD2 ;DO IT! RETS BLOCHST2 MOVI NOWAY,A0 CALLA ONESND MOVE @MUTPTR,A0,L MOVE *A0(TRSL),A10,L ;TRSL CREATE 0,TURN1 MOVE @MUTPTR,A0,L MOVE *A0(TRSR),A10,L ;TRSR CREATE 0,TURN1 CREATE 0,THROWC2 MOVE @MUTPTR,A0,L MOVE *A0(MHEAD),A0,L ;MHEAD MOVE *A0(OFLAGS),A1 ORI M_NOCOLL,A1 MOVE A1,*A0(OFLAGS) CALLA OBJON MOVI 131,A1 MOVE A1,*A0(OZPOS) CALLR GETDMGSK MOVI MUTPT3,A1 ;AMOUNT OF SCORE FOR ARMS ETC MOVE @KPPLYR,A2,L CALLA SCRADD2 ;DO IT! CLR A0 MOVB A0,@TOTLZRS ;TOTAL LAZER SHOTS HE WILL SHOOT RETS KILLMUT ;KILL MUTOID PROCESS ;BLOW UP FATMEN REMAINING! ;KILL SNAKE, LAZERS MOVI MUTPT2,A1 ;AMOUNT OF SCORE AT END MOVE @KPPLYR,A2,L CALLA SCRADD2 ;DO IT! MOVI OUCH,A0 CALLA ONESND MOVK 1,A0 MOVB A0,@ENDON MOVI CLSENMY|TYPORBL,A0 MOVI 0FFFFH,A1 CALLA KILOBJ MOVI CLSENMY|TYPMUT|SUBSNK,A0 CALLA KILOBJ BAD1 MOVI CLSENMY|TYPFAT,A0 MOVI 0FFFFH,A1 CALLA EXISTOBJ JRZ BAD2 ;FOUND A FAT MOVE A0,A8 ;NO SCORE FOR THESE FAT GUYS CALLA KILL_F2_NO ;KILL_FAT JRUC BAD1 BAD2 MOVI BONPID,A0 CLR A1 NOT A1 CALLA KILALL MOVI LORDPID,A0 CALLA KILALL MOVI CLSNEUT|TYPNEUT|SUBCHNK2,A0 CLR A1 NOT A1 CALLA KILOBJ CREATE 0,SPW2 MOVI 0FFFFH,A0 MOVE A0,@DMGSK CREATE 0,VIC RETS VIC SLEEP 30 ;TURN ON VICTORY MUSIC! MOVI VICMSC,A0 CALLA ONESND DIE SPW2 ;SPEW BIG CALLA DOSHK0 CLR A0 MOVE @MUTPTR,A9,L MOVE *A9(TNKL),A8,L MOVE A0,*A8(OXVEL),L MOVE A0,*A8(OYVEL),L PUSH A13 MOVE A9,A13 CALLR MOD_VELS PULL A13 MOVI DUM_ID,A0 CLR A1 NOT A1 CALLA KILALL PUSH A8 MOVE *A9(MHEAD),A8,L MOVI -01B000H,B0 MOVI 01B000H,B1 CALLA RANGRAND MOVE A0,*A8(OXVEL),L MOVI -012000H,B0 MOVI 012000H,B1 CALLA RANGRAND MOVE A0,*A8(OYVEL),L MOVI MUG1B,A1 MOVE @MCON,A4 JRZ NOBB MOVI MUG1BZ,A1 NOBB MOVE *A8(OFLAGS),A4,W ;NEW OFLAGS CALLA ANI MOVI 400,A0 MOVE A0,*A8(OZPOS) PULL A8 MOVI 180,A9 KM1 MOVK 20,A0 CALLA CHKFREE JRNE SPEWL0 CREATE 0,SPEW CREATE 0,SPEW CREATE 0,SPEW CREATE 0,SPEW CREATE 0,SPEW MOVI BUBL,A0 CALLA ONESND SPEWL0 SLEEP 1 DEC A9 JRNZ KM1 SLEEP 15H ;55 MOVI YAMOFF,A0 CALLA ONESND ; ;BLOW TANK PIECES OUT TO EDGES! ; ; MOVI CROWD1,A0 ; CALLA ONESND CALLA DOSHK0 SLEEP 10 CREATE 0,SHAKEME CREATE 0,SMLEXP SLEEP 3*60 CALLA DOSHK0 CREATE 0,BLOW1 CREATE 0,BLOW2 CREATE 0,BLOW3 CREATE 0,BLOW4 CREATE 0,BLOW5 SLEEP 60*1 CALLA DOSHK0 ;WHEN DONE, WE WILL COVER OLD TANK AREA! MOVE *A8(OYVAL),A0,L MOVE @WORLDTLY,A4,L SUB A4,A0 MOVE *A8(OXVAL),A1,L MOVE @WORLDTLX,A4,L SUB A4,A1 SRL 16,A1 MOVX A1,A0 MOVI [10H,10H],A1 SUBXY A1,A0 MOVE A0,@EXPTLXY,L MOVI [060H,050H],A1 ADDXY A1,A0 MOVE A0,@EXPLRXY,L MOVI 120H,A10 CALLA CLUSTER SLEEP 60 CREATE 0,BAD0 ;SMART BOMB AND GET RID OF EVERYONE! ;KILL OFF ALL MUTOID OBJECTS MOVI CLSNEUT|TYPNEUT|SUBCHNK,A0 CLR A1 NOT A1 CALLA KILOBJ MOVI CLSENMY|TYPMUT,A0 MOVI F_TYPE,A1 CALLA KILOBJ SLEEP 3*60 CLR A0 MOVB A0,@ENDON MOVE @MCON,A0 JRZ PIPPEN CALLA O_ITEMS2 SLEEP 5*60-30 CALLA O_ITEMS2 SLEEP 5*60-30 CALLA O_ITEMS2 SLEEP 5*60-30 CALLA O_ITEMS2 SLEEP 5*60-30 CALLA O_ITEMS2 SLEEP 5*60-30 CALLA O_ITEMS2 SLEEP 5*60-30 PIPPEN CREATE 0,DEXIT SLEEP 360*60 DIE SMLEXP MOVI 186H,A9 SM1 SLEEP 1 MOVK 20,A0 CALLA CHKFREE JRNE DONOT CREATE 0,SMLE MOVI EXP3HI,A0 CALLA ONESND DONOT DSJ A9,SM1 DIE SMLE CALLR SETKBM MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE ADDI 0020000H,A3 ADDI 03A0000H,A2 CALLA GANISAG MOVE A9,A8 MOVI -060000H,B0 MOVI 060000H,B1 CALLA RANGRAND MOVE A0,*A8(OXVEL),L MOVI -060000H,B0 MOVI 060000H,B1 CALLA RANGRAND MOVE A0,*A8(OYVEL),L MOVI BOOMN,A9 MOVK 1,A1 JSRP FRANIM MOVE A8,A0 CALLA DELOBJ DIE SETKBM MOVI KBM,A14 ;BLOOD CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE CALLA STFOBJ ;STUFF OBJECT DATA MOVE A13,*A0(OPLINK),L CALLA INSOBJ ;INSERT OBJECT INTO LIST MOVE A0,A8 MOVE *A8(OPAL),A0,L ANDI 0FFFFH,A0 MOVE A0,*A8(OPAL),L MOVE A8,A9 MOVE @MUTPTR,A8,L MOVE *A8(TNKL),A8,L CALLA GETANIXY MOVE A9,A0 RETS SHAKEME MOVI 25,A9 ;25 SH1 CREATE 0,XYADJ2 MOVK 10,A10 SH2 PUSH A13 MOVE @MUTPTR,A13,L MOVE *A13(TNKL),A8,L CALLR LINEBLY CALLA L2UP PULL A13 SLEEP 1 DSJ A10,SH2 DSJ A9,SH1 DIE BLOW1 SLEEP 60 MOVK 5,A9 MB1 CREATE 0,BLW1 SLEEP 2 DSJS A9,MB1 DIE BLOW2 MOVK 9,A9 MB2 CREATE 0,BLW2 SLEEP 10 DSJS A9,MB2 DIE BLOW3 MOVK 9,A9 MB3 CREATE 0,BLW3 SLEEP 10 DSJS A9,MB3 DIE BLOW4 MOVK 9,A9 MB4 CREATE 0,BLW4 SLEEP 10 DSJS A9,MB4 DIE BLOW5 SLEEP 60 MOVK 5,A9 MB5 CREATE 0,BLW5 SLEEP 2 DSJS A9,MB5 DIE BLW1 ;TURN ON OBJECT ;GIVE VELOCITY OUT AWAY FROM TANK ;STOP IT ;BLOW IT UP ;DIE MOVI TKPC1,A14 ;BLOOD CALLA BLWON MOVI -80000H,B0 MOVI 80000H,B1 CALLA RANGRAND MOVE A0,*A8(OYVEL),L SLEEP 25 JRUC BLWOFF BLW2 MOVI TKPC2,A14 ;BLOOD CALLA BLWON SLEEP 15 JRUC BLWOFF BLW5 MOVI TKPC5,A14 ;BLOOD CALLA BLWON MOVI -80000H,B0 MOVI 80000H,B1 CALLA RANGRAND MOVE A0,*A8(OYVEL),L SLEEP 25 JRUC BLWOFF BLW4 MOVI TKPC4,A14 ;BLOOD CALLA BLWON SLEEP 15 JRUC BLWOFF BLW3 MOVI TKPC3,A14 ;BLOOD CALLA BLWON SLEEP 15 JRUC BLWOFF BLWOFF ; CLR A0 ; MOVE A0,*A8(OXVEL),L ; MOVE A0,*A8(OYVEL),L ;FRANIM LIST OF EXPLOSION MOVE *A8(OYPOS),A0 ADDI 3AH,A0 MOVE A0,*A8(OYPOS) MOVI BOOM3,A9 MOVK 1,A1 JSRP FRANIM MOVE A8,A0 CALLA DELOBJ DIE BLWON CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE CALLA STFOBJ ;STUFF OBJECT DATA MOVE A13,*A0(OPLINK),L CALLA INSOBJ ;INSERT OBJECT INTO LIST MOVE A0,A8 ;ALIGN WITH TANK MOVE A8,A9 MOVE @MUTPTR,A8,L MOVE *A8(TNKL),A8,L CALLA GETANIXY MOVE A9,A0 MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE ADDI 010000H,A3 ADDI 010000H,A2 CALLA GANISAG MOVE A9,A8 RETS ;SPWAGN SLEEP 5 SPEW MOVI BLD,A14 ;BLOOD MOVE @MCON,A0 JRZ SPEWA MOVI PRZBLD,A14 SPEWA CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE ; JRZ SPWAGN CALLA STFOBJ ;STUFF OBJECT DATA MOVE A13,*A0(OPLINK),L CALLA INSOBJ ;INSERT OBJECT INTO LIST MOVE A0,A8 MOVE *A8(OPAL),A0,L ANDI 0FFFFH,A0 MOVE A0,*A8(OPAL),L MOVE A8,A9 MOVE @MUTPTR,A8,L MOVE *A8(TNKL),A8,L CALLA GETANIXY MOVE A9,A0 MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE ADDI 0020000H,A3 ADDI 0260000H,A2 CALLA GANISAG MOVE A9,A8 MOVI -010000H,B0 MOVI 010000H,B1 CALLA RANGRAND MOVE A0,*A8(OXVEL),L MOVI -010000H,B0 MOVI 010000H,B1 CALLA RANGRAND MOVE A0,*A8(OYVEL),L MOVI OVALBLD2,A9 ; MOVE @MCON,A0 ; JRZ SPEWB ; MOVI OVALPRZ,A9 ;SPEWB MOVK 1,A1 JSRP FRANIM MOVE A8,A0 CALLA DELOBJ DIE OVALBLD2: ;OVAL BLOOD EXPLOSION .LONG bldclt1 .WORD NEWPALET|1 .LONG nup1 .LONG bldclt2 .WORD 3 .LONG bldclt3 .WORD 3 .LONG bldclt4 .WORD 3 .LONG bldclt5 .WORD 3 .LONG bldclt6 .WORD 3 .LONG bldclt7 .WORD 3 .LONG bldclt8 .WORD 3 .LONG 0 ;OVALPRZ: ;PRIZE ; .LONG PRZ1 ; .WORD 1 ; .LONG PRZ2 ; .WORD 3 ; .LONG CNS ; .WORD 3 ; .LONG GLD ; .WORD 3 ; .LONG PRZ3 ; .WORD 3 ; .LONG CASH ; .WORD 3 ; .LONG GLD ; .WORD 3 ; .LONG PRZ1 ; .WORD 3 ; .LONG 0 BLOSND SLEEP 60 MOVI WPSSND,A0 CALLA ONESND SLEEP 60 MOVI WPSSND,A0 CALLA ONESND SLEEP 60 MOVI WPSSND,A0 CALLA ONESND DIE OHSND MOVI OUCH,A0 CALLA ONESND SLEEP 30 ;60 MOVI AWWSND,A0 CALLA ONESND SLEEP 20 ;80 MOVI OUCH,A0 CALLA ONESND DIE THROWL CREATE 0,OHSND ;CREATE SEVERAL ARMS BLOWING OFF BODY TO LEFT MOVK 9,A10 TL1 CREATE 0,SENDL SLEEP 10 PUSH A10 CALLA DOSHK0 PULL A10 DSJS A10,TL1 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 DIE COVER2 MOVI KBM,A14 CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE CALLA STFOBJ ;STUFF OBJECT DATA MOVE A13,*A0(OPLINK),L CALLA INSOBJ ;INSERT OBJECT INTO LIST MOVE A0,A8 MOVE *A8(OPAL),A0,L ANDI 0FFFFH,A0 MOVE A0,*A8(OPAL),L MOVE A8,A9 MOVE @MUTPTR,A8,L MOVE *A8(TNKL),A8,L ;ARML CALLA GETANIXY MOVE A9,A0 MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE ADDI 0240000H,A2 ADDI 01F0000H,A3 ;X JRUC FRT COVER MOVI KBM,A14 CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE CALLA STFOBJ ;STUFF OBJECT DATA MOVE A13,*A0(OPLINK),L CALLA INSOBJ ;INSERT OBJECT INTO LIST MOVE A0,A8 MOVE *A8(OPAL),A0,L ANDI 0FFFFH,A0 MOVE A0,*A8(OPAL),L MOVE A8,A9 MOVE @MUTPTR,A8,L MOVE *A8(TNKL),A8,L ;ARML CALLA GETANIXY MOVE A9,A0 MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE ADDI 0240000H,A2 SUBI 01F0000H,A3 FRT CALLA GANISAG MOVE *A8(OXVEL),A0,L MOVE *A8(OYVEL),A1,L MOVE A1,*A9(OYVEL),L MOVE A0,*A9(OXVEL),L MOVE A9,A8 MOVI -0F0000H,B0 MOVI 0F0000H,B1 CALLA RANGRAND MOVE *A8(OXVAL),A1,L ADD A0,A1 MOVE A1,*A8(OXVAL),L MOVI -0F0000H,B0 MOVI 0F0000H,B1 CALLA RANGRAND MOVE *A8(OYVAL),A1,L ADD A0,A1 MOVE A1,*A8(OYVAL),L MOVI BOOMN,A9 MOVK 1,A1 JSRP FRANIM MOVE A8,A0 CALLA DELOBJ DIE SENDL ;BEGIN OBJ ;ALIGN WITH OLD LEFT ARM ;GIVE VELOCITIES ;FRANIM ;DELOBJ MOVI ST5,A14 MOVE @MCON,A1 JRZ NOMCA MOVI ST5Z,A14 NOMCA CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE CALLA STFOBJ ;STUFF OBJECT DATA MOVE A13,*A0(OPLINK),L CALLA INSOBJ ;INSERT OBJECT INTO LIST MOVE A0,A8 MOVE *A8(OPAL),A0,L ANDI 0FFFFH,A0 MOVE A0,*A8(OPAL),L MOVE A8,A9 MOVE @MUTPTR,A8,L MOVE *A8(TNKL),A8,L AGA CALLA GETANIXY MOVE A9,A0 MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE CALLA GANISAG MOVE A9,A8 CREATE 0,FRBALLL CREATE 0,FRBALL2L CREATE 0,FRBALL2L CREATE 0,FRBALL2L MOVI -020000H,B0 MOVI 020000H,B1 CALLA RANGRAND MOVE A0,*A8(OYVEL),L MOVI FLIPL,A9 MOVE @MCON,A1 JRZ NOMCA1 MOVI FLIPLZ,A9 NOMCA1 MOVK 1,A1 JSRP FRANIM STILL SLEEP 40 CALLA SCRTST JRZ STILL MOVE A8,A0 CALLA DELOBJ DIE FRBALL MOVE *A8(OXVEL),A6,L MOVE *A8(OYVEL),A7,L JAUC ARMOFF FRBALL2 MOVE *A8(OXVEL),A6,L MOVI -020000H,B0 MOVI 020000H,B1 CALLA RANGRAND ADD A0,A6 MOVI -020000H,B0 MOVI 020000H,B1 CALLA RANGRAND MOVE A0,A7 JAUC ARMOFF FRBALLR ; MOVE *A8(OXPOS),A0 ; ADDI 15,A0 ; MOVE A0,*A8(OXPOS) ; JRUC X1 FRBALLL ; MOVE *A8(OXPOS),A0 ; SUBI 15,A0 ; MOVE A0,*A8(OXPOS) ;X1 MOVE *A8(OXVEL),A6,L MOVE *A8(OYVEL),A7,L JAUC ARMOFF FRBALL2R ; MOVE *A8(OXPOS),A0 ; SUBI 15,A0 ; MOVE A0,*A8(OXPOS) ; JRUC X2 FRBALL2L ; MOVE *A8(OXPOS),A0 ; SUBI 15,A0 ; MOVE A0,*A8(OXPOS) ;X2 MOVE *A8(OXVEL),A6,L MOVI -020000H,B0 MOVI 020000H,B1 CALLA RANGRAND ADD A0,A6 MOVI -020000H,B0 MOVI 020000H,B1 CALLA RANGRAND MOVE A0,A7 JAUC ARMOFF FRBALL1 MOVE *A8(OXVEL),A6,L MOVE *A8(OYVEL),A7,L JAUC ARMOFF2 FRBALL3 MOVE *A8(OXVEL),A6,L MOVI -020000H,B0 MOVI 020000H,B1 CALLA RANGRAND ADD A0,A6 MOVI -020000H,B0 MOVI 020000H,B1 CALLA RANGRAND MOVE A0,A7 JAUC ARMOFF2 THROWR CREATE 0,OHSND ;CREATE SEVERAL ARMS BLOWING OFF BODY TO LEFT MOVK 9,A10 TL2 CREATE 0,SENDR SLEEP 10 PUSH A10 CALLA DOSHK0 PULL A10 DSJS A10,TL2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 DIE SENDR ;BEGIN OBJ ;ALIGN WITH OLD LEFT ARM ;GIVE VELOCITIES ;FRANIM ;DELOBJ MOVI ST6,A14 MOVE @MCON,A1 JRZ NOMCB MOVI ST6Z,A14 NOMCB CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE CALLA STFOBJ ;STUFF OBJECT DATA MOVE A13,*A0(OPLINK),L CALLA INSOBJ ;INSERT OBJECT INTO LIST MOVE A0,A8 MOVE *A8(OPAL),A0,L ANDI 0FFFFH,A0 MOVE A0,*A8(OPAL),L MOVE A8,A9 MOVE @MUTPTR,A8,L MOVE *A8(TNKL),A8,L ;ARMR CALLA GETANIXY MOVE A9,A0 MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE CALLA GANISAG MOVE A9,A8 CREATE 0,FRBALLR CREATE 0,FRBALL2R CREATE 0,FRBALL3 CREATE 0,FRBALL2R MOVI -020000H,B0 MOVI 020000H,B1 CALLA RANGRAND MOVE A0,*A8(OYVEL),L MOVI FLIPR,A9 MOVE @MCON,A1 JRZ NOMCA3 MOVI FLIPRZ,A9 NOMCA3 MOVK 1,A1 JSRP FRANIM STL1 SLEEP 40 CALLA SCRTST JRZ STL1 MOVE A8,A0 CALLA DELOBJ DIE ST5 ;ARM LEFT .LONG 0,0,MARM1 .WORD 228,DMAWNZ+M_NOCOLL,CLSNEUT|TYPNEUT .LONG -40000H,-10000H ST5Z ;ARM LEFT .LONG 0,0,MARM1Z .WORD 228,DMAWNZ+M_NOCOLL,CLSNEUT|TYPNEUT .LONG -40000H,-10000H ST6 ;ARM RGT .LONG 0,0,MARM1 .WORD 228,DMAWNZ+M_FLIPH+M_NOCOLL,CLSNEUT|TYPNEUT .LONG 040000H,-10000H ST6Z ;ARM RGT .LONG 0,0,MARM1Z .WORD 228,DMAWNZ+M_FLIPH+M_NOCOLL,CLSNEUT|TYPNEUT .LONG 040000H,-10000H STCR ;ARM RGT .LONG 0,0,TRS1 .WORD 228,DMAWNZ+M_FLIPH+M_NOCOLL,CLSNEUT|TYPNEUT .LONG 050000H,0H STCRZ ;ARM RGT .LONG 0,0,TRS1Z .WORD 228,DMAWNZ+M_FLIPH+M_NOCOLL,CLSNEUT|TYPNEUT .LONG 050000H,0H TKPC1 ; .LONG 0,0,MTNK1A .WORD 328,DMAWNZ+M_NOCOLL,CLSNEUT|TYPNEUT .LONG -50000H,0H TKPC2 .LONG 0,0,TRD2 .WORD 328,DMAWNZ+M_NOCOLL,CLSNEUT|TYPNEUT .LONG -40000H,30000H TKPC3 .LONG 0,0,BELLY2 .WORD 328,DMAWNZ+M_NOCOLL,CLSNEUT|TYPNEUT .LONG 0H,38000H TKPC4 .LONG 0,0,TRD2 .WORD 328,DMAWNZ+M_FLIPH+M_NOCOLL,CLSNEUT|TYPNEUT .LONG 40000H,30000H TKPC5 .LONG 0,0,MTNK1A .WORD 328,DMAWNZ+M_FLIPH+M_NOCOLL,CLSNEUT|TYPNEUT .LONG 50000H,0H BLD ;ARM RGT .LONG 0,0,bldclt1 .WORD 228,DMAWNZ+M_NOCOLL,CLSNEUT|TYPNEUT .LONG 0H,0H PRZBLD ;ARM RGT .LONG 0,0,CASH .WORD 228,DMAWNZ+M_NOCOLL,CLSNEUT|TYPNEUT .LONG 0H,0H KBM ;ARM RGT .LONG 0,0,KBM1 .WORD 228,DMAWNZ+M_FLIPH+M_NOCOLL,CLSNEUT|TYPNEUT .LONG 0H,0H STCL ;ARM RGT .LONG 0,0,TRS1 .WORD 228,DMAWNZ+M_NOCOLL,CLSNEUT|TYPNEUT .LONG -050000H,0H STCLZ ;ARM RGT .LONG 0,0,TRS1Z .WORD 228,DMAWNZ+M_NOCOLL,CLSNEUT|TYPNEUT .LONG -050000H,0H STCR2 ;ARM RGT .LONG 0,0,TRS1 .WORD 228,DMAWNZ+M_FLIPH+M_NOCOLL,CLSNEUT|TYPNEUT .LONG 050000H,0H STCR2Z ;ARM RGT .LONG 0,0,TRS1Z .WORD 228,DMAWNZ+M_FLIPH+M_NOCOLL,CLSNEUT|TYPNEUT .LONG 050000H,0H STCL2 ;ARM RGT .LONG 0,0,TRS1 .WORD 228,DMAWNZ+M_NOCOLL,CLSNEUT|TYPNEUT .LONG -050000H,0H STCL2Z ;ARM RGT .LONG 0,0,TRS1Z .WORD 228,DMAWNZ+M_NOCOLL,CLSNEUT|TYPNEUT .LONG -050000H,0H STCH .LONG 0,0,MUG1 .WORD 231,DMAWNZ+M_NOCOLL,CLSNEUT|TYPNEUT .LONG 0H,-20000H STCHZ .LONG 0,0,MUG1Z .WORD 231,DMAWNZ+M_NOCOLL,CLSNEUT|TYPNEUT .LONG 0H,-20000H THROWC CREATE 0,BLOSND ;CREATE SEVERAL CHESTS BLOWING OFF BODY TO LEFT AND RIGHT MOVK 15,A10 TL22 CREATE 0,SENDCL CREATE 0,SENDCR SLEEP 10 MOVI EXP3HIA,A0 CALLA ONESND PUSH A10 CALLA DOSHK0 PULL A10 DSJ A10,TL22 MOVI WPSSND,A0 CALLA ONESND CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 MOVE @MUTPTR,A0,L MOVE *A0(TRSL),A8,L MOVI TRS1A,A1 MOVE @MCON,A4 JRZ NOVV MOVI TRS1AZ,A1 NOVV MOVE *A8(OFLAGS),A4,W ;NEW OFLAGS CALLA ANI MOVE @MUTPTR,A0,L MOVE *A0(TRSR),A8,L MOVI TRS1A,A1 MOVE @MCON,A4 JRZ NOBBA MOVI TRS1AZ,A1 NOBBA MOVE *A8(OFLAGS),A4,W ;NEW OFLAGS CALLA ANI DIE SENDCR MOVI STCR,A14 MOVE @MCON,A1 JRZ NOMCC MOVI STCRZ,A14 NOMCC CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE CALLA STFOBJ ;STUFF OBJECT DATA MOVE A13,*A0(OPLINK),L CALLA INSOBJ ;INSERT OBJECT INTO LIST MOVE A0,A8 MOVE *A8(OPAL),A0,L ANDI 0FFFFH,A0 MOVE A0,*A8(OPAL),L MOVE A8,A9 MOVE @MUTPTR,A8,L MOVE *A8(TNKL),A8,L ;TRSR CALLA GETANIXY MOVE A9,A0 MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE CALLA GANISAG MOVE A9,A8 CREATE 0,FRBALL CREATE 0,FRBALL2 CREATE 0,FRBALL3 CREATE 0,FRBALL2 MOVI FLIPCR,A9 MOVE @MCON,A1 JRZ NOMCA4 MOVI FLIPCRZ,A9 NOMCA4 MOVK 1,A1 JSRP FRANIM STL2 SLEEP 40 CALLA SCRTST JRZ STL2 MOVE A8,A0 CALLA DELOBJ DIE SENDCL MOVI STCL,A14 MOVE @MCON,A1 JRZ NOMCD MOVI STCLZ,A14 NOMCD CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE CALLA STFOBJ ;STUFF OBJECT DATA MOVE A13,*A0(OPLINK),L CALLA INSOBJ ;INSERT OBJECT INTO LIST MOVE A0,A8 MOVE *A8(OPAL),A0,L ANDI 0FFFFH,A0 MOVE A0,*A8(OPAL),L MOVE A8,A9 MOVE @MUTPTR,A8,L MOVE *A8(TNKL),A8,L ;TRSL CALLA GETANIXY MOVE A9,A0 MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE CALLA GANISAG MOVE A9,A8 CREATE 0,FRBALL CREATE 0,FRBALL2 CREATE 0,FRBALL3 CREATE 0,FRBALL2 MOVI FLIPCL,A9 MOVE @MCON,A1 JRZ NOMCA5 MOVI FLIPCLZ,A9 NOMCA5 MOVK 1,A1 JSRP FRANIM STL3 SLEEP 40 CALLA SCRTST JRZ STL3 MOVE A8,A0 CALLA DELOBJ DIE THROWH CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 MOVK 20,A10 TL23 CREATE 0,SENDH CREATE 0,SENDH CREATE 0,SENDH SLEEP 10 PUSH A10 CALLA DOSHK0 PULL A10 DSJ A10,TL23 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 DIE SENDH MOVI STCH,A14 MOVE @MCON,A1 JRZ NOMCE MOVI STCHZ,A14 NOMCE CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE CALLA STFOBJ ;STUFF OBJECT DATA MOVE A13,*A0(OPLINK),L CALLA INSOBJ ;INSERT OBJECT INTO LIST MOVE A0,A8 MOVE *A8(OPAL),A0,L ANDI 0FFFFH,A0 MOVE A0,*A8(OPAL),L MOVE A8,A9 MOVE @MUTPTR,A8,L MOVE *A8(TNKL),A8,L ;MHEAD CALLA GETANIXY MOVE A9,A0 MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE CALLA GANISAG MOVE A9,A8 CREATE 0,FRBALL1 CREATE 0,FRBALL3 MOVI -040000H,B0 MOVI 040000H,B1 CALLA RANGRAND MOVE A0,*A8(OXVEL),L MOVI FLIPH,A9 MOVE @MCON,A1 JRZ NOMCA6 MOVI FLIPHZ,A9 NOMCA6 MOVK 1,A1 MOVE A9,A10 JSRP FRANIM MOVE A10,A9 MOVK 1,A1 JSRP FRANIM MOVE A10,A9 MOVK 1,A1 JSRP FRANIM STL4 SLEEP 40 CALLA SCRTST JRZ STL4 MOVE A8,A0 CALLA DELOBJ DIE THROWC2 ;COVER TANK WITH EXPLOSIONS, THEN BLOW OFF CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 ;CREATE SEVERAL CHESTS BLOWING OFF BODY TO LEFT AND RIGHT CREATE 0,SENDCL2 CREATE 0,SENDCR2 CALLA DOSHK0 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 CREATE 0,ADDPCS2 SLEEP 60 MOVI NOWAY,A0 CALLA ONESND DIE SENDCR2 MOVI STCR2,A14 MOVE @MCON,A1 JRZ NOMCF MOVI STCR2Z,A14 NOMCF CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE CALLA STFOBJ ;STUFF OBJECT DATA MOVE A13,*A0(OPLINK),L CALLA INSOBJ ;INSERT OBJECT INTO LIST MOVE A0,A8 MOVE *A8(OPAL),A0,L ANDI 0FFFFH,A0 MOVE A0,*A8(OPAL),L MOVE A8,A9 MOVE @MUTPTR,A8,L MOVE *A8(TNKL),A8,L ;TRSR CALLA GETANIXY MOVE A9,A0 MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE CALLA GANISAG MOVE A9,A8 CREATE 0,FRBALL CREATE 0,FRBALL2 CREATE 0,FRBALL2 CREATE 0,FRBALL2 MOVI FLIPCR2,A9 MOVE @MCON,A1 JRZ NOMCA7 MOVI FLIPCR2Z,A9 NOMCA7 MOVK 1,A1 JSRP FRANIM STL5 SLEEP 40 CALLA SCRTST JRZ STL5 MOVE A8,A0 CALLA DELOBJ DIE SENDCL2 MOVI STCL2,A14 MOVE @MCON,A1 JRZ NOMCG MOVI STCL2Z,A14 NOMCG CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE CALLA STFOBJ ;STUFF OBJECT DATA MOVE A13,*A0(OPLINK),L CALLA INSOBJ ;INSERT OBJECT INTO LIST MOVE A0,A8 MOVE *A8(OPAL),A0,L ANDI 0FFFFH,A0 MOVE A0,*A8(OPAL),L MOVE A8,A9 MOVE @MUTPTR,A8,L MOVE *A8(TNKL),A8,L ;TRSL CALLA GETANIXY MOVE A9,A0 MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE CALLA GANISAG MOVE A9,A8 CREATE 0,FRBALL CREATE 0,FRBALL2 CREATE 0,FRBALL2 CREATE 0,FRBALL2 MOVI FLIPCL2,A9 MOVE @MCON,A1 JRZ NOMCA8 MOVI FLIPCL2Z,A9 NOMCA8 MOVK 1,A1 JSRP FRANIM STL6 SLEEP 40 CALLA SCRTST JRZ STL6 MOVE A8,A0 CALLA DELOBJ DIE TURN1 MOVI 30,A9 TX1 MOVE *A10(OFLAGS),A1 ORI M_NOCOLL,A1 MOVE A1,*A10(OFLAGS) MOVE A10,A0 CALLA OBJOFF SLEEP 1 DSJS A9,TX1 DIE SNKHIT MOVE *A0(OXVEL),A9,L MOVE *A0(OYVEL),A10,L CREATE 0,SHIFTIT JRUC NADA SHIFTIT MOVK 4,A11 SRA 2,A9 SRA 2,A10 SHF MOVE A9,*A8(OXVEL),L MOVE A10,*A8(OYVEL),L SLEEP 1 DSJS A11,SHF MOVE *A8(OPLINK),A0,L MOVB *A0(SKHITS),A1 INC A1 MOVB A1,*A0(SKHITS) D DIE ; EXP_BULL2 CLR A0 MOVE A0,*A8(OXVEL),L MOVE A0,*A8(OYVEL),L EXP_BULL MMTM SP,A1,A7 ;A8=BULLET TO BLOW UP CLR A1 MOVE *A8(OID),A0 CMPI CLSPLYR|TYPPLBL|SUBGRND,A0 JRNE EXB ;GRENADE TO EXPLODE MOVE A1,*A8(OID),W MOVE *A8(OPLINK),A0,L CALLA GETA9 CALLA KILL ;KILLS PROCESS IN A0 MOVE A9,A0 CALLA DELOBJ CREATE 0,GRNDEXP MMFM SP,A1,A7 RETS ; EXB CMPI CLSPLYR|TYPPLBL|SUBNOSTP,A0 JRNE EXA MOVE A1,*A8(OXVEL),L MOVE A1,*A8(OYVEL),L EXA MOVE A1,*A8(OID) MOVE *A8(OPLINK),A0,L CALLA KILL ;KILLS PROCESS IN A0 CREATE 0,BULEXP MMFM SP,A1,A7 RETS ; GRNDEXP ;GRENADE EXPLOSION! MOVI BOOM2,A9 CLR A6 CLR A7 CALLA NEWV MOVE @YVEL,A0,L MOVE A0,*A8(OYVEL),L MOVE @XVEL,A0,L MOVE A0,*A8(OXVEL),L JRUC BTR BULEXP MOVI BOOMN,A9 ;BOOM3 CHANGES PALETTE TO EXPLOSION! MOVI 160,A0 MOVE A0,*A8(OZPOS) BTR MOVE *A8(OXPOS),A0 SUBI 4,A0 MOVE A0,*A8(OXPOS) MOVE *A8(OYPOS),A0 SUBI 1,A0 MOVE A0,*A8(OYPOS) MOVK 1,A1 JSRP FRANIM MOVE A8,A0 CALLA DELOBJ DIE ; BOOMN2: .LONG KBM1 .WORD 4 .LONG KBM2 .WORD 4 .LONG 0 BOOMN: .LONG KBM1 .WORD 4 .LONG KBM2 .WORD 4 .LONG KBM3 .WORD 4 .LONG KBM4 .WORD 4 .LONG KBM5 .WORD 4 .LONG KBM6 .WORD 4 .LONG KBM7 .WORD 4 .LONG 0 ; MV_TNK ;MOVE LOGIC ;HANDLE MOVE DIR, SPEED, LENGTH OF MOVE ;WHEN MOVE IS DONE, TANK STOPS FOR A SHORT TIME ;THEN GET NEW ACTION FROM THE FOLLOWING: ;ACTION ; 0=ROLLIN FROM TOP OF SCREEN ; 1=MOVE DOWN SCREEN FOR X TIME ; 2=MOVE UP SCREEN FOR X TIME ; 3=POUND RIGHT/LFT ARM FAST AND SKIP TANK TO LEFT ; 4=POUND RIGHT/LFT ARM FAST AND SKIP TANK TO RIGHT ; 5=MOVE HEAD AROUND AND TRY TO LASER AT PLAYERS ; 6=POUND LEFT ARM SLOW/SHAKE SCREEN ON IMPACT/SMILE FACE ; 7=POUND RIGHT ARM SLOW/SHAKE SCREEN ON IMPACT/SMILE FACE ; 8=DO MUSCLE POSE FOR A MOMENT THEN RELAX ARMS/SMILE FACE ; 9=BOTH ARMS FLAILING WITH POUNDS INTO GROUND NO X MOVE ; 10=STOP ; 11=BRING RANDOM ARM UP TO MARM3 POSITION ; 12=LUNGE BACKWARD INTO PLAYER ; 13=LUNGE FORWARD INTO PLAYER MOVB @MACTION,A0 SLL 5,A0 ADDI JPTBL,A0 MOVE *A0,A0,L JUMP A0 ;JPTBLF .LONG ROLLINF,MDNF,MUPF,FPNDRGTF,FPNDLFTF,MVHDF,PNDLFTF,PNDRGTF,POSEF ; .LONG FLAILF,STOPF,FISTF,LUNGEF,LUNGEDF ACTIONS .BYTE 1,1,1,1,1,1 .BYTE 2,2,2,2,2,2 .BYTE 3,3,3,3,3,3,3 .BYTE 4,4,4,4,4,4,4 .BYTE 5,5,5,5,5,5,5,5 .BYTE 6,6 .BYTE 7,7 .BYTE 8,8,8 .BYTE 11,11,11,11 ;JUST IN CASE .EVEN GET_ACT MOVI 800,A0 CALLA RANDPER JRNC NO1 ;MAYBE DO A LUNGE CALLA RANDPL MOVB @PLYRAD,A0 ADDI PLYROBJS,A0 MOVE *A0,A0,L MOVE *A0(OYPOS),A2 MOVE *A0(OXPOS),A1 ;IF PLAYER IS DIRECTLY ABOVE MUTOID MAN, LUNGE BACKWARD! ;IF PLAYER IS DIRECTLY BELOW MUTOID MAN, LUNGE BACKWARD! MOVE *A8(OXPOS),A3 SUB A1,A3 ABS A3 CMPI 40,A3 JRNC NO1 ;YES PLYR IS IN X RANGE MOVE *A8(OYPOS),A3 ADDI 110,A3 SUB A2,A3 ABS A3 CMPI 20,A3 ;10 JRC HT2 ;BR=LUNGE DOWN SCREEN MOVE *A8(OYPOS),A3 CMP A2,A3 JRNC HT SUB A2,A3 ABS A3 CMPI 60,A3 ;50 JRNC NO1 ;YES A HIT! HT MOVK 12,A0 JRUC GET_ST HT2 MOVK 13,A0 JRUC GET_ST NO1 MOVI 1,B0 MOVI 43,B1 MOVE @DMGPNT,A0 CMPI 4,A0 JRNE NO1A MOVI 28,B1 NO1A CALLA RANGRAND DEC A0 SLL 3,A0 ADDI ACTIONS,A0 MOVB *A0,A0 GET_ST MOVB @DMGPNT,A1 CMPI 5,A1 JRNZ HJ MOVB @TOTLZRS,A1 JRNZ HJ ;START LAZER RIGHT AWAY! MOVK 5,A0 ;STOP JRUC GETY HJ MOVB @SNKOUT,A1 JRZ GETY CLR A0 MOVE A0,*A8(OXVEL),L MOVE A0,*A8(OYVEL),L MOVK 10,A0 ;STOP ; GETY MOVB A0,@MACTION SLL 5,A0 ADDI JPTBLF,A0 ;WHAT TO DO FIRST MOVE *A0,A0,L JUMP A0 LUNGEF MOVI UPYVEL2,A0 JRUC MUPF2 LUNGEDF MOVI DNYVEL2,A0 JRUC MDNF2 STOPF ;DO NOTHING! CLR A0 CALLA MOD_VELS MOVI 8,A0 ;10 MOVE A0,@MTIME RETS RORSND SLEEP 60 MOVI AWWSND2,A0 CALLA ONESND SLEEP 100 MOVI AWWSND2,A0 CALLA ONESND SLEEP 100 MOVI EESND,A0 CALLA ONESND DIE ROLLINF MOVK 1,A0 ;TELL TANK TO ROLL DOWN SCRN MOVB A0,@TRDSLP MOVB A0,@MACTION MOVI 0100,A0 MOVE A0,@MEROAR ;TELL FACE TO ROAR ;@MEROAR MOVI AWWSND2,A0 CALLA ONESND MOVI DNYVEL,A0 CALLA MOD_VELS CREATE 0,RORSND MOVI 800,A0 JRUC INH FPNDLFTF ;FAST PND LEFT FIRST ;SETUP FRANIM PNTR ;THIS ARM WILL POUND X TIMES AS WILL THE RIGHT ARM. ;SKIP TANK TO LEFT EACH TIME X PIXELS CLR A0 ;LEFT MOVB A0,@MDIR ;MUTOID DIR ALL MOVI 10,B0 MOVI 40,B1 CALLA RANGRAND MOVE A0,@UPDT MOVK 1,A0 MOVB A0,@TIMES ;POUND TIMES MOVI FPNDRARM,A0 MOVE @MCON,A1 JRZ NOMCB1 MOVI FPNDRARMZ,A0 NOMCB1 MOVE A0,@FPNDRP,L MOVK 1,A0 MOVB A0,@PLS ;THIS WILL HANDLE BOTH ARMS MOVI FPNDLARM,A0 MOVE @MCON,A1 JRZ NOMCB1A MOVI FPNDLARMZ,A0 NOMCB1A MOVE A0,@FPNDLP,L CREATE 0,SHKIT RETS FPNDRGTF ;THIS ARM WILL POUND X TIMES AS WILL THE RIGHT ARM. ;SKIP TANK TO RIGHT EACH TIME X PIXELS MOVK 4,A0 MOVB A0,@MACTION ;POUND LEFT MOVK 1,A0 ;RIGHT MOVB A0,@MDIR ;MUTOID DIR JRUC ALL MVHDF ;STOP TANK ;TELL HEAD PROC TO AIM AND FIRE ; MOVB @PCNT,A0 ; ANDI 07H,A0 ; JRZ MO0 ; MOVI CLSENMY|TYPTORSO,A0 ; MOVI 0FFFFH,A1 ; CALLA EXISTOBJ ; JRNZ LOP ;MO0 MOVB @TOTLZRS,A0 JRZ OKC JRNZ LOP2 ;ALREADY IN LAZER MODE ;LOP MOVB @PCNT,A0 LOP2 ANDI 1,A0 INC A0 MOVB A0,@MACTION CMPI 1,A0 JREQ MDNF JRUC MUPF OKC CLR A0 MOVB A0,@INAIR MOVI 500,A0 MOVB @DMGPNT,A1 CMPI 5,A1 JRZ DA1 MOVI 5,B0 MOVI 25,B1 ;20 CALLA RANGRAND DA1 MOVB A0,@TOTLZRS ;TOTAL LAZER SHOTS HE WILL SHOOT RANDPL BTST 0,A0 JRZ PLY1 ;WILL TRY TO LAZER PLAYER 2 MOVE @PLYROBJS+32,A1,L JRZ PLY3 PLY2 MOVK 32,A0 MOVB A0,@PLYRAD RETS PLY1 MOVE @PLYROBJS,A1,L JRZ PLY2 PLY3 CLR A0 MOVB A0,@PLYRAD RETS PNDLFTF ;SETUP FRANIM PNTR MOVI 1,B0 MOVI 3,B1 CALLA RANGRAND MOVB A0,@TIMES SETL MOVI PNDLARM,A0 MOVE @MCON,A1 JRZ NOMCB2 MOVI PNDLARMZ,A0 NOMCB2 MOVE A0,@PNDLP,L MOVK 1,A0 MOVB A0,@PLS CREATE 0,SHKIT RETS FISTF ;BRING RANDOM ARM UP TO MARM3 POSITION ;SETUP FRANIM PNTR CLR A0 MOVE A0,@FISTRP,L MOVE A0,@FISTLP,L MOVB A0,@FISTDN MOVI 60,B0 MOVI 300,B1 CALLA RANGRAND MOVE A0,@UPDT ;TIME ARM HELD IN AIR BTST 0,A0 JRZ W1 MOVI FISTR,A0 MOVE @MCON,A1 JRZ NOMCC2 MOVI FISTRZ,A0 NOMCC2 MOVE A0,@FISTRP,L MOVK 1,A0 MOVB A0,@PRS RETS W1 MOVI FISTL,A0 MOVE @MCON,A1 JRZ NOMCC3 MOVI FISTLZ,A0 NOMCC3 MOVE A0,@FISTLP,L MOVK 1,A0 MOVB A0,@PLS RETS PNDRGTF MOVI 1,B0 MOVI 3,B1 CALLA RANGRAND MOVB A0,@TIMES SETR MOVI PNDRARM,A0 MOVE @MCON,A1 JRZ NOMCC4 MOVI PNDRARMZ,A0 NOMCC4 MOVE A0,@PNDRP,L MOVK 1,A0 MOVB A0,@PRS CREATE 0,SHKIT RETS POSEF MOVI 2,B0 MOVI 4,B1 CALLA RANGRAND MOVB A0,@TIMES MOVB @TOTLZRS,A0 JRNZ PSET ;BR=LAZERS ARE ON MOVI 800,A0 CALLA RANDPER JRNC PSET MOVI 30,B0 MOVI 140,B1 CALLA RANGRAND MOVE A0,@MEROAR ;TIME TO ROAR CREATE 0,RORS PSET MOVE @MCON,A1 JRZ NOMCC1 MOVI POSEMELZ,A0 MOVE A0,@POSEL,L MOVI POSEMERZ,A0 JRUC CONTA NOMCC1 MOVI POSEMEL,A0 MOVE A0,@POSEL,L MOVI POSEMER,A0 CONTA MOVE A0,@POSER,L MOVK 1,A0 MOVB A0,@PLS RETS FLAILF RETS RORS SLEEP 40 MOVI AWWSND,A0 CALLA ONESND SLEEP 60 MOVI AWWSND,A0 CALLA ONESND SLEEP 80 MOVI OUCH,A0 CALLA ONESND DIE MUPF MOVE @HALT,A0 JRNZ FLAILF ;MAKE SURE ARMS ARE NOT ON GROUND MOVI UPYVEL,A0 MUPF2 ;FAST UP SCREEN CALLA MOD_VELS CALLR CK_KNUCK CALLR GET_TIME MOVE A0,@MTIME ;TELL LEGS TO ANIMATE BACKWARD MOVI BTRDSDLL,A0 ;TREAD SIDE LFT ANI LIST MOVE A0,@TRDSDLP,L ;PNTR FOR TREAD SIDE LEFT LIST MOVI BTRDSDRL,A0 ;TREAD SIDE RGT ANI LIST MOVE A0,@TRDSDRP,L ;PNTR FOR TREAD SIDE RGT LIST MOVI BTRDFTLL,A0 ;TREAD FRONT ANI LIST LEFT MOVE A0,@TRDFTLP,L ;PNTR FOR TREAD FRONT LEFT LIST MOVI BTRDFTRL,A0 ;TREAD FRONT ANI LIST RIGHT MOVE A0,@TRDFTRP,L ;PNTR FOR TREAD FRONT RGT LIST ;FRANIM LISTS ARE SET FOR TREADS RYT RETS MDNF ;CHECK TO SEE IF DOWN IS OKAY! ;MAKE SURE ARMS ARE NOT ON GROUND MOVE @HALT,A0 JRNZ RYT MOVI DNYVEL,A0 MDNF2 CALLA MOD_VELS CALLR CK_KNUCK CALLR GET_TIME INH MOVE A0,@MTIME ;TELL LEGS TO ANIMATE FORWARD MOVI TRDSDLL,A0 ;TREAD SIDE LFT ANI LIST MOVE A0,@TRDSDLP,L ;PNTR FOR TREAD SIDE LEFT LIST MOVI TRDSDRL,A0 ;TREAD SIDE RGT ANI LIST MOVE A0,@TRDSDRP,L ;PNTR FOR TREAD SIDE RGT LIST MOVI TRDFTLL,A0 ;TREAD FRONT ANI LIST LEFT MOVE A0,@TRDFTLP,L ;PNTR FOR TREAD FRONT LEFT LIST MOVI TRDFTRL,A0 ;TREAD FRONT ANI LIST RIGHT MOVE A0,@TRDFTRP,L ;PNTR FOR TREAD FRONT RGT LIST ;FRANIM LISTS ARE SET FOR TREADS RETS CK_KNUCK MOVB @DMGPNT,A0 JRZ CK1 CMPI 1,A0 JRZ MD2 JRUC MD3 CK1 MOVE *A13(ARML),A0,L MOVE *A0(OIMG),A0,L CMPI MARM6AZ,A0 JRZ CONTZ CMPI MARM6A,A0 JRNE MD2 CONTZ ;ARM IS ON GROUND-ANI IN REGULAR ARM PUSH A8 MOVE *A13(ARML),A8,L ; MOVI CLSENMY|TYPMUT|SUBARML,A3 ; MOVE A3,*A8(OID) MOVI MARM1,A1 MOVE @MCON,A4 JRZ NODD MOVI MARM1Z,A1 NODD MOVI DMAWNZ+M_PIXSCAN,A4,W ;NEW OFLAGS CALLA ANI PULL A8 MD2 MOVE *A13(ARMR),A0,L MOVE *A0(OIMG),A0,L CMPI MARM6AZ,A0 JRZ CONTZ1 CMPI MARM6A,A0 JRNE MD3 CONTZ1 ;ARM IS ON GROUND-ANI IN REGULAR ARM PUSH A8 MOVE *A13(ARMR),A8,L ; MOVI CLSENMY|TYPMUT|SUBARMR,A3 ; MOVE A3,*A8(OID) MOVI MARM1,A1 MOVE @MCON,A4 JRZ NOMCD1 MOVI MARM1Z,A1 NOMCD1 MOVI DMAWNZ+M_FLIPH+M_PIXSCAN,A4,W ;NEW OFLAGS CALLA ANI PULL A8 MD3 RETS GET_TIME ;GET TIME TO TRAVEL IN DOWN DIRECTION MOVI 50,B0 MOVI 100,B1 CALLA RANGRAND RETS DO_TIME MOVE @MTIME,A0 ; ANDI 03FFH,A0 DEC A0 MOVE A0,@MTIME JRN DT3 RETS DT3 MOVK 1,A0 MOVE A0,@MTIME RETS LUNGE JRUC MUP LUNGED JRUC MDN STOP ;TANK STOPPED CALLR DO_TIME JRNZ SKIPS ;STOP TANK FOR A MOMENT CALLR GET_ACT RETS SKIPS RETS FPNDLFT ;FAST PND LEFT $ RIGHT MOVB @TIMES,A0 JRNZ STIL ;BR=STILL MOVING ARMS ;POUND DONE, WE ARE UPDATING X MOVE *A8(OXVAL),A1,L MOVE @WORLDTLX,A4,L SUB A4,A1 MOVB @MDIR,A0 JRNZ CKR ;CK LEFT CMPI [115,0],A1 ;100,135 ;HAS IS HIT LEFT, STOP IT FROM MOVING MORE TO LEFT JRNC MOK JRUC RTS CKR CMPI [215,0],A1 JRNC RTS ;OKAY TO UPDATE X POS ; MOVB @MDIR,A0 MOK SLL 5,A0 MOVE @MCON,A1 JRZ NOMCD2 ADDI ADSUZ,A0 JRUC NOMCD3 NOMCD2 ADDI ADSU,A0 NOMCD3 MOVE *A0,A0,L MOVE *A8(OXVAL),A1,L ADD A0,A1 MOVE A1,*A8(OXVAL),L RTS MOVE @UPDT,A0 DEC A0 MOVE A0,@UPDT JRNZ RT MOVK 10,A0 ;STOP MUTOID MAN CALLR GET_ST RT MOVE @UPDT,A0 ANDI 07H,A0 SLL 4,A0 ADDI YADJ,A0 MOVE *A0,A0,W SLL 16,A0 MOVE *A8(OYVAL),A1,L ADD A0,A1 MOVE A1,*A8(OYVAL),L RETS YADJ .WORD 3,-2,-4,4,-5,3,4,-3 STIL MOVB @PLS,A0 ;POUND LEFT SLEEP DEC A0 MOVB A0,@PLS JRNZ PEX PUSH A8 ;DO RIGHT ARM MOVE @FPNDRP,A9,L MOVE *A13(ARMR),A8,L MOVK 4,A1 JSRP FRANIM MOVE A9,@FPNDRP,L ;DO LEFT MOVE @FPNDLP,A9,L MOVE *A13(ARML),A8,L MOVK 4,A1 JSRP FRANIM MOVB A0,@PLS MOVE A9,@FPNDLP,L JRNC PL8X ;BR=DO RIGHT ARM ; ;POUND BY BOTH ARMS IS DONE PULL A8 MOVB @TIMES,A0 DEC A0 MOVB A0,@TIMES DOSHK0 ;START SHAKE MOVI MBANG,A0 ;MBANG CALLA ONESND MOVB @SHK_ON,A0 JRNZ PEX MOVI 15,A10 CALLA SHAKER RETS PL8X PULL A8 PEX RETS ; ADSU: .LONG -020000H,020000H ;3,3 ADSUZ: .LONG -048000H,048000H ;3,3 MVHD ;LAZER MODE IS ON FOR HEAD. HEAD IS TRYING TO LASER PLAYERS TO DEATH ;DELAY FOR AWHILE, THEN GET A NEW ACTION JRUC DN1 MOVB @TOTLZRS,A0 JRZ DN1 ;NEW MODE RETS PNDLFT ;POUND LEFT MOVB @PLS,A0 ;POUND LEFT SLEEP DEC A0 MOVB A0,@PLS JRNZ PEXA PUSH A8 ;DO LEFT MOVE @PNDLP,A9,L MOVE *A13(ARML),A8,L MOVK 4,A1 JSRP FRANIM MOVB A0,@PLS MOVE A9,@PNDLP,L JRNC PL8XA ;POUND BY LEFT ARM IS DONE PULL A8 MOVB @TIMES,A0 DEC A0 MOVB A0,@TIMES JRZ DN1 CALLA SETL RETS DN1 MOVK 10,A0 ;STOP MUTOID MAN CALLR GET_ST RETS PL8XA PULL A8 PEXA RETS PNDRGT MOVB @PRS,A0 ;POUND LEFT SLEEP DEC A0 MOVB A0,@PRS JRNZ PEXB PUSH A8 ;DO RGT MOVE @PNDRP,A9,L MOVE *A13(ARMR),A8,L MOVK 4,A1 JSRP FRANIM MOVB A0,@PRS MOVE A9,@PNDRP,L JRNC PL8XB ;POUND BY RGT ARM IS DONE PULL A8 MOVB @TIMES,A0 DEC A0 MOVB A0,@TIMES JRZ DN1B CALLA SETR RETS DN1B MOVK 10,A0 ;STOP MUTOID MAN CALLR GET_ST RETS PL8XB PULL A8 PEXB RETS SHKIT ;SPAWNED FROM FRANIM ;START SHAKE ;TURN ON ID THAT SAYS ARM CAN KILL PLAYERS! SLEEP 35 MOVI MBANG,A0 CALLA ONESND MOVB @SHK_ON,A0 JRNZ PXD MOVI 10,A10 CALLA SHAKER PXD DIE FIST MOVE @FISTLP,A0,L JRNZ DLFT ;BR=LEFT FIST INTO AIR ;RIGHT FIST INTO AIR MOVB @FISTDN,A0 JRZ GUP ;FIST IN AIR MOVE @UPDT,A0 JREQ GUP DEC A0 MOVE A0,@UPDT JRNZ NY ;BRING IT DOWN MOVI FISTR2,A0 ;COME DOWN LIST MOVE @MCON,A1 JRZ NOMCE1 MOVI FISTR2Z,A0 ;COME DOWN LIST NOMCE1 MOVE A0,@FISTRP,L MOVK 1,A0 MOVB A0,@PRS GUP MOVB @PRS,A0 ;POUND LEFT SLEEP DEC A0 MOVB A0,@PRS JRNZ NY PUSH A8 MOVE @FISTRP,A9,L MOVE *A13(ARMR),A8,L MOVK 4,A1 JSRP FRANIM MOVB A0,@PRS MOVE A9,@FISTRP,L JRNC NY0 ;FIST UP INTO AIR MOVB @FISTDN,A0 JRNZ ITDWN MOVK 1,A0 MOVB A0,@FISTDN ;SET FLAG IT IS UP NY0 PULL A8 NY RETS ITDWN ;FIST HAS COME BACK DOWN PULL A8 JRUC DN1C DLFT ;LEFT FIST INTO AIR MOVB @FISTDN,A0 JRZ GUPB ;FIST IN AIR MOVE @UPDT,A0 JREQ GUPB DEC A0 MOVE A0,@UPDT JRNZ NYB ;BRING IT DOWN MOVI FISTL2,A0 ;COME DOWN LIST MOVE @MCON,A1 JRZ NOMCB3 MOVI FISTL2Z,A0 ;COME DOWN LIST NOMCB3 MOVE A0,@FISTLP,L MOVK 1,A0 MOVB A0,@PLS GUPB MOVB @PLS,A0 ;POUND LEFT SLEEP DEC A0 MOVB A0,@PLS JRNZ NYB PUSH A8 MOVE @FISTLP,A9,L MOVE *A13(ARML),A8,L MOVK 4,A1 JSRP FRANIM MOVB A0,@PLS MOVE A9,@FISTLP,L JRNC NY0B ;FIST UP INTO AIR MOVB @FISTDN,A0 JRNZ ITDWN MOVK 1,A0 MOVB A0,@FISTDN ;SET FLAG IT IS UP NY0B PULL A8 NYB RETS POSE MOVB @PLS,A0 ;POUND LEFT SLEEP DEC A0 MOVB A0,@PLS JRNZ TY1 PUSH A8 ;DO RGT ARM FIRST MOVE @POSER,A9,L MOVE *A13(ARMR),A8,L MOVK 4,A1 JSRP FRANIM MOVE A9,@POSER,L ;DO LFT MOVE @POSEL,A9,L MOVE *A13(ARML),A8,L MOVK 4,A1 JSRP FRANIM MOVB A0,@PLS MOVE A9,@POSEL,L JRNC TY2 ;POSE ARMS DONE PULL A8 MOVB @TIMES,A0 DEC A0 MOVB A0,@TIMES JRZ DN1C CALLA PSET RETS TY2 PULL A8 TY1 RETS DN1C MOVK 10,A0 ;STOP MUTOID MAN CALLR GET_ST RETS FLAIL RETS MUP MOVE @HALT,A0 JRNZ FLAIL ;TANK MOVING UP FOR X TIME CALLR DO_TIME JRNZ SKIPU ;TIME TO STOP AND GET NEW ACTION ;STOP TANK FOR A MOMENT MOVK 10,A0 CALLR GET_ST RETS SKIPU ;FLOATING UP ;CHECK FOR TOP BOUNDARY ;FRANIM 4 TREADS MOVE *A8(OYVAL),A2,L MOVE @WORLDTLY,A4,L SUB A4,A2 CMPI [40,0],A2 JRNC OKU ;HAS HIT TOP, STOP IT ;MAKE ALL TREADS STOP ON 1 CORRECT VIEW! MOVK 1,A0 JRUC GET_ST OKU MOVB @TRDSLP,A0 DEC A0 MOVB A0,@TRDSLP JRNZ SKP1U ;TIME TO UPDATE ALL TREADS! PUSH A8 MOVE @TRDSDLP,A9,L ;PNTR FOR TREAD SIDE LEFT LIST MOVE *A13(TRDLS),A8,L MOVK 4,A1 JSRP FRANIM MOVE A9,@TRDSDLP,L ;PNTR FOR TREAD SIDE LEFT LIST MOVB A0,@TRDSLP ;USE SLEEP FROM FIRST TREAD FOR ALL JRNC NX1U MOVK 1,A0 MOVB A0,@TRDSLP MOVI BTRDSDLL,A0 ;TREAD SIDE LFT ANI LIST MOVE A0,@TRDSDLP,L ;PNTR FOR TREAD SIDE LEFT LIST NX1U MOVE @TRDSDRP,A9,L ;PNTR FOR TREAD SIDE RGT LIST MOVE *A13(TRDRS),A8,L MOVK 4,A1 JSRP FRANIM MOVE A9,@TRDSDRP,L ;PNTR FOR TREAD SIDE RGT LIST JRNC NX2U MOVI BTRDSDRL,A0 ;TREAD SIDE RGT ANI LIST MOVE A0,@TRDSDRP,L ;PNTR FOR TREAD SIDE RGT LIST NX2U MOVE @TRDFTLP,A9,L ;PNTR FOR TREAD SIDE LEFT LIST MOVE *A13(TRDLF),A8,L MOVK 4,A1 JSRP FRANIM MOVE A9,@TRDFTLP,L ;PNTR FOR TREAD SIDE LEFT LIST JRNC NX3U MOVI BTRDFTLL,A0 ;TREAD FRONT ANI LIST LEFT MOVE A0,@TRDFTLP,L ;PNTR FOR TREAD FRONT LEFT LIST NX3U MOVE @TRDFTRP,A9,L ;PNTR FOR TREAD SIDE RGT LIST MOVE *A13(TRDRF),A8,L MOVK 4,A1 JSRP FRANIM MOVE A9,@TRDFTRP,L ;PNTR FOR TREAD SIDE RGT LIST JRNC NX4U MOVI BTRDFTRL,A0 ;TREAD FRONT ANI LIST RIGHT MOVE A0,@TRDFTRP,L ;PNTR FOR TREAD FRONT RGT LIST NX4U PULL A8 SKP1U RETS MDN MOVE @HALT,A0 JRNZ SKP1U ;TANK MOVING DOWN FOR X TIME CALLR DO_TIME JRNZ SKIP ;TIME TO STOP AND GET NEW ACTION ;STOP TANK FOR A MOMENT MOVK 10,A0 CALLR GET_ST RETS SKIP ;FLOATING DOWN ;CHECK FOR BOTTOM BOUNDARY ;FRANIM 4 TREADS CMPI 650,A0 ;IF A0>700 THEN TANK MUST BE ROLLING IN JRNC OK MOVE *A8(OYVAL),A2,L MOVE @WORLDTLY,A4,L SUB A4,A2 CMPI [170,0],A2 ;140,160 JRC OK ;HAS HIT BOTTOM, STOP IT ;MAKE ALL TREADS STOP ON 1 CORRECT VIEW! MOVK 2,A0 JRUC GET_ST OK MOVB @TRDSLP,A0 DEC A0 MOVB A0,@TRDSLP JRNZ SKP1 ;TIME TO UPDATE ALL TREADS! PUSH A8 MOVE @TRDSDLP,A9,L ;PNTR FOR TREAD SIDE LEFT LIST MOVE *A13(TRDLS),A8,L MOVK 4,A1 JSRP FRANIM MOVE A9,@TRDSDLP,L ;PNTR FOR TREAD SIDE LEFT LIST MOVB A0,@TRDSLP ;USE SLEEP FROM FIRST TREAD FOR ALL JRNC NX1 MOVK 1,A0 MOVB A0,@TRDSLP MOVI TRDSDLL,A0 ;TREAD SIDE LFT ANI LIST MOVE A0,@TRDSDLP,L ;PNTR FOR TREAD SIDE LEFT LIST NX1 MOVE @TRDSDRP,A9,L ;PNTR FOR TREAD SIDE RGT LIST MOVE *A13(TRDRS),A8,L MOVK 4,A1 JSRP FRANIM MOVE A9,@TRDSDRP,L ;PNTR FOR TREAD SIDE RGT LIST JRNC NX2 MOVI TRDSDRL,A0 ;TREAD SIDE RGT ANI LIST MOVE A0,@TRDSDRP,L ;PNTR FOR TREAD SIDE RGT LIST NX2 MOVE @TRDFTLP,A9,L ;PNTR FOR TREAD SIDE LEFT LIST MOVE *A13(TRDLF),A8,L MOVK 4,A1 JSRP FRANIM MOVE A9,@TRDFTLP,L ;PNTR FOR TREAD SIDE LEFT LIST JRNC NX3 MOVI TRDFTLL,A0 ;TREAD FRONT ANI LIST LEFT MOVE A0,@TRDFTLP,L ;PNTR FOR TREAD FRONT LEFT LIST NX3 MOVE @TRDFTRP,A9,L ;PNTR FOR TREAD SIDE RGT LIST MOVE *A13(TRDRF),A8,L MOVK 4,A1 JSRP FRANIM MOVE A9,@TRDFTRP,L ;PNTR FOR TREAD SIDE RGT LIST JRNC NX4 MOVI TRDFTRL,A0 ;TREAD FRONT ANI LIST RIGHT MOVE A0,@TRDFTRP,L ;PNTR FOR TREAD FRONT RGT LIST NX4 PULL A8 SKP1 RETS EYES ;A11=HEAD POINTER ;A9=HEADV ;THIS WILL CREATE X NEW PROCESSES OF PROPER IMAGE STARTING AT EYES ;AND ANGLING DOWN TOWARD THE GROUND. EACH IMAGE WILL ACT IDENTICALLY ; MOVK 2,A8 ; MOVB @PCNT,A0 ; BTST 0,A0 ; JRZ ET1 ; MOVK 4,A8 ;ET1 MOVI LAZSND,A0 CALLA ONESND MOVK 9,A10 ELP CREATE BONPID,BOLT SLEEP 2 DSJS A10,ELP MOVB @TOTLZRS,A0 ANDI 07FH,A0 DEC A0 MOVB A0,@TOTLZRS DIE BMLIST .LONG BM6,BM7,BM8,BM9,BM10,BM11,BM12 BMLISTZ .LONG BM6Z,BM7Z,BM8Z,BM9Z,BM10Z,BM11Z,BM12Z YOFS: .WORD 0CH,0BH,0FH,0FH,0FH,0BH,0CH YOFSZ: .WORD 0CH+6,0BH+6,0FH+6,0FH+6,0FH+6,0BH+6,0CH+6 XOFS: .WORD 011H,011H,09H,06H,-3,-9,-8 BLTX: .WORD 12,11,4,0,-4,-11,-12 BLTY: .WORD 6,11,15,15,15,11,6 BOLT: ;TURN ON NEW IMAGE ;A9= 6-12 ; MOVB A8,*A13(SLP) SUBI 6,A9 MOVE A9,A0 SLL 5,A0 MOVE @MCON,A1 JRZ MCON2 ADDI BMLISTZ,A0 JRUC MCON3 MCON2 ADDI BMLIST,A0 MCON3 MOVE *A0,A14,L CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE CALLA STFOBJ ;STUFF OBJECT DATA MOVE A13,*A0(OPLINK),L CALLA INSOBJ ;INSERT OBJECT INTO LIST MOVE A0,A8 MOVE *A11(OYPOS),A0 MOVE *A11(OXPOS),A1 SLL 4,A9 MOVI XOFS,A2 ADD A9,A2 MOVE *A2,A2,W ADD A2,A1 MOVE A1,*A8(OXPOS) MOVI YOFS,A2 MOVE @MCON,A3 JRZ NOMCF1 MOVI YOFSZ,A2 NOMCF1 ADD A9,A2 MOVE *A2,A2,W ADD A2,A0 MOVE A0,*A8(OYPOS) MOVK 9,A0 MOVB A0,*A13(PCS) BOLTT ; MOVB *A13(SLP),A0 MOVK 2,A0 ; MOVE @MCON,A1 ; JRZ MCON4 ; MOVK 1,A0 ;MCON4 CALLA PRCSLP ; SLEEP 4 MOVI BLTX,A0 ADD A9,A0 MOVE *A0,A0,W MOVE *A8(OXPOS),A1 ADD A0,A1 MOVE A1,*A8(OXPOS) MOVI BLTY,A0 ADD A9,A0 MOVE *A0,A0,W MOVE *A8(OYPOS),A1 ADD A0,A1 MOVE A1,*A8(OYPOS) MOVB *A13(PCS),A0 DEC A0 MOVB A0,*A13(PCS) JRZ ENDIT ;BOLTT CMPI 1,A0 JRNE BOLTT ;SET Z LOW MOVI 100,A0 MOVE A0,*A8(OZPOS) JRNE BOLTT ENDIT CMPI 3,A10 JRLO OP MOVB @PCNT,A0 ANDI 03H,A0 JRZ OP MOVI CLSENMY|TYPORBL,A0 MOVE A0,*A8(OID) OP MOVI 1,B0 MOVI 8,B1 CALLA RANGRAND SUBI 4,A0 MOVE *A8(OYPOS),A1 SUB A0,A1 MOVE A1,*A8(OYPOS) MOVI 1,B0 MOVI 8,B1 CALLA RANGRAND SUBI 4,A0 MOVE *A8(OXPOS),A1 SUB A0,A1 MOVE A1,*A8(OXPOS) ;HAVE MOVED BOLT ENOUGH TIMES MOVI LZDIE,A9 MOVE @MCON,A0 JRZ NOMC1 MOVI LZDIEZ,A9 NOMC1 MOVK 1,A1 JSRP FRANIM MOVE A8,A0 CALLA DELOBJ CMPI 1,A10 JRNE L1 ;THIS IS LAST BEAM OF LAZER CLR A0 MOVB A0,@INAIR ;LAZER FIZZLED OUT L1 DIE LZDIE .LONG BEAMH1 .WORD 04 .LONG BEAMH2 .WORD 04 .LONG 0 LZDIEZ .LONG BEAMH1Z .WORD 04 .LONG BEAMH2Z .WORD 04 .LONG BEAMH3Z .WORD 04 .LONG 0 DO_HEAD MOVE A9,A8 ;SPIN HEAD AROUND MOVK 9,A0 MOVB A0,@HEADV CALLA ANIHEAD ; HEADT MOVE @OOF,A0 JRZ NOL2 ;HEAD IS OOF VIEW! SLEEP 1 MOVB @HEADV,A0 CMPI 16,A0 JRZ PRR2O ; CMPI 9,A0 ; JREQ PRRO ;PASTE ROAR ; MOVK 9,A0 ; MOVB A0,@SKVW ; JRUC NOR2 ;PRRO MOVI 16,A0 MOVB A0,@HEADV CALLA ANIHEAD PRR2O MOVE @OOF,A0 DEC A0 MOVE A0,@OOF JRNZ KP_GO MOVB A0,@SKVW MOVK 9,A0 MOVB A0,@HEADV CALLA ANIHEAD CREATE 0,DOCHK JRUC KP_GO DOCHK SLEEP 30 MOVI 20,A0 MOVE A0,@CHEEK MOVI WPSSND,A0 CALLA ONESND MOVI 650,A0 CALLA RANDPER JRC ADAD MOVI 1,A0 MOVB A0,@POPFLG ADAD DIE CHKVW: .BYTE 11,9,7,9 POPTBL .BYTE 0,2,4,6,8,10,12,14,16 .BYTE 0,0,0,0,0,0,0,0,0,0 .BYTE 0,0,0,0,0,16,14,12,10,8 .BYTE 6,4,2,0,0FFH .EVEN NOL2 MOVB @POPFLG,A0 JRZ NOL2B CMPI 33,A0 JRNC CLRIT INC A0 MOVB A0,@POPFLG SLL 3,A0 ADDI POPTBL,A0 MOVB *A0,A0 JRNN NT6 CLRIT CLR A0 MOVB A0,@POPFLG NT6 MOVB A0,@POP SLEEP 3 NOL2B MOVE @CHEEK,A0 JRZ NOL2A ;HEAD IS CHEEKS VIEW! ANDI 03,A0 SLL 3,A0 ADDI CHKVW,A0 MOVB *A0,A0 MOVB A0,@HEADV CALLA ANIHEAD PRR2C MOVE @CHEEK,A0 DEC A0 MOVE A0,@CHEEK JRNZ KP_GO ; MOVB A0,@SKVW MOVK 9,A0 MOVB A0,@HEADV CALLA ANIHEAD MOVI 20,A0 MOVE A0,@MEMAD MOVI AWWSND,A0 CALLA ONESND JRUC KP_GO NOL2A ;IS HEAD IN LAZER MODE? MOVB @TOTLZRS,A0 JRZ NOL ;YES IN LAZER MODE ;AIM AT PLAYER ;SHOOT/DEC TOTLZR MOVB @INAIR,A0 JRNZ KP_GO ;NO LASER IN AIR CALLR INSK ;A MATCH AFTER SEEK? ;YES, THEN FIRE MOVB @SKVW,A0 ;THIS HEAD HAS A PLAN ;WHICH DIR JREQ SHOOT MOVB @HEADV,A1 ;CURRENT VIEW CMP A0,A1 JREQ SHOOT JRC INCB ;INC TO GET THERE ;DEC HEADV TO GET TO SKVW! DEC A1 JRUC GOALB INCB INC A1 GOALB MOVB A1,@HEADV CALLA ANIHEAD MOVB @HEADV,A1 MOVB @SKVW,A0 CMP A0,A1 JRNE KP_GO ;I HAVE REACHED MY GOAL SHOOT CLR A0 MOVB A0,@SKVW ;STOP HEAD FROM MOVING ;PAUSE FOR AWHILE ;IF YES, STOP AND SHOOT? ;IF NO, LOOP BACK AROUND MOVB @HEADV,A9 MOVB A9,@INAIR MOVE A8,A11 ;PASS ALONG MY HEAD PTR MOVB @DMGPNT,A0 CMPI 4,A0 JRZ KP_GO CREATE BONPID,EYES JRUC KP_GO ; NOL ;IS HEAD ROARING MOVE @MEMAD,A0 JRZ NOR22 ;YES A MAD SLEEP 1 MOVB @HEADV,A0 CMPI 15,A0 JRZ PRR2X CMPI 9,A0 JREQ PRRX ;PASTE ROAR MOVK 9,A0 MOVB A0,@SKVW JRUC NOR2 PRRX MOVK 15,A0 MOVB A0,@HEADV CALLA ANIHEAD PRR2X MOVE @MEMAD,A0 DEC A0 MOVE A0,@MEMAD JRNZ KP_GO ; MOVB A0,@SKVW MOVK 9,A0 MOVB A0,@HEADV CALLA ANIHEAD JRUC KP_GO NOR22 ;IS HEAD ROARING MOVE @MEROAR,A0 JRZ NOR ;YES A ROAR SLEEP 1 MOVB @HEADV,A0 JRZ PRR2 CMPI 9,A0 JREQ PRR ;PASTE ROAR MOVK 9,A0 MOVB A0,@SKVW JRUC NOR2 PRR CLR A0 MOVB A0,@HEADV CALLA ANIHEAD PRR2 MOVE @MEROAR,A0 DEC A0 MOVE A0,@MEROAR JRNZ KP_GO ; MOVB A0,@SKVW MOVK 9,A0 MOVB A0,@HEADV CALLA ANIHEAD JRUC KP_GO NOR ;IS HEAD SEEKING? MOVB @SKVW,A0 ;0 IF NO SEEK, OTHERWISE THE SEEKED VIEW! JRNZ NOR2 CALLA SEEK JRUC KP_GO ; JRZ SEEK ;GO SEE IF I SHOULD SEEK ;THIS HEAD HAS A PLAN ;WHICH DIR NOR2 MOVB @HEADV,A1 ;CURRENT VIEW CMP A0,A1 JRC INCI ;INC TO GET THERE ;DEC HEADV TO GET TO SKVW! DEC A1 JRUC GOAL INCI INC A1 GOAL MOVB A1,@HEADV CALLA ANIHEAD MOVB @HEADV,A1 MOVB @SKVW,A0 CMP A0,A1 JRNE KP_GO ;I HAVE REACHED MY GOAL CLR A0 MOVB A0,@SKVW ;STOP HEAD FROM MOVING ;PAUSE FOR AWHILE ;IF YES, STOP AND SHOOT? ;IF NO, LOOP BACK AROUND SLEEP 30 ;60 KP_GO SLEEP 1 ;1 JRUC HEADT SEEK MOVE @STATUS,A4 CMPI 3,A4 JREQ SK2 MOVI 20,A0 ;100 CALLA RANDPER JRC INSK RETS INSK MOVB @SCNTR,A3 INC A3 MOVB A3,@SCNTR ANDI 01,A3 SLL 5,A3 MOVB @TOTLZRS,A0 JRZ IN1 ;LAZERS ON, DO NOT CHANGE WHO I AM LOOKING AT MOVI PLYROBJS,A2 MOVB @PLYRAD,A3 ;0 OR 32 - EYES DECIDED WHOM TO LAZER ADD A3,A2 MOVE *A2,A0,L ;IF THIS PLAYER HAS JUST DIED, LAZERS WILL STILL BE AIMED AT HIM! JRUC PX IN1 XORI 32,A3 ADDI PLYROBJS,A3 MOVE *A3,A0,L JRZ QZP JRUC PX SK2 MOVI 40,A0 CALLA RANDPER JRC J8 RETS J8 ;SEEK PLAYER MOVB @SCNTR,A3 INC A3 MOVB A3,@SCNTR ANDI 01,A3 SLL 5,A3 MOVE A3,A2 ADDI PLYROBJS,A2 MOVE *A2,A0,L ;GET FIRST ENTRY JRNZ PX XORI 32,A3 ADDI PLYROBJS,A3 MOVE *A3,A0,L JRNE PX QZP MOVI 600,A0 ;800 CALLA RANDPER JRC AG1 MOVI 0,B0 MOVI 0FFFFFFFFH,B1 CALLA RANGRAND MOVE A0,A1 MOVI 0,B0 MOVI 0FFFFFFFFH,B1 CALLA RANGRAND MOVE A0,A2 JRUC PXC AG1 MOVK 6,A1 MOVI 500,A0 CALLA RANDPER JRC AG MOVK 12,A1 AG MOVE A1,A0 JRUC OKJ PX CALLA XYSKOBJ MOVE A5,A1 MOVE A6,A2 PXC CALLA GETHDR SLL 3,A0 ADDI CVRT,A0 MOVB *A0,A0 ;DIR TO FACE IN A0 CMPI 6,A0 JRNC OKJ1 MOVK 6,A0 JRUC OKJ2 OKJ1 CMPI 13,A0 JRC OKJ MOVK 12,A0 OKJ OKJ2 MOVB A0,@SKVW MOVB @HEADV,A1 CMP A1,A0 JREQ OKJ8 RETS ; JRNE KP_GO OKJ8 CLR A0 MOVB A0,@SKVW RETS ; JRUC KP_GO ; 01 ; 16 02 ; 15 03 ; 14 04 ; 13 05 ; 12 06 ; 11 07 ; 10 08 ; 09 ; 04 ; 12 11 ; 08 07 ; 16 15 ; 02 01 ; 10 09 ; 06 05 ; 14 13 ; 03 ANIHEAD ;ANI ONTO SCREEN THIS HEAD MOVB @DMGPNT,A0 CMPI 4,A0 JRZ REY MOVB @HEADV,A0 MOVE A0,A2 SLL 5,A0 MOVE @MCON,A1 JRZ NOMC5 ADDI HEADVWZ,A0 JRUC NOMC6 NOMC5 ADDI HEADVW,A0 NOMC6 MOVE *A0,A1,L ;NEW OIMG SLL 4,A2 ADDI HFLAG,A2 MOVE *A2,A4,W ;NEW OFLAGS CALLA ANI REY RETS ; 01 ; 16 02 ; 15 03 ; 14 04 ; 13 05 ; 12 06 ; 11 07 ; 10 08 ; 09 HEADVW .LONG MUG1A,MUG4,MUG4,MUG4,MUG4,MUG4,MUG4,MUG3 .LONG MUG2,MUG1,MUG2,MUG3,MUG4,MUG4,MUG4,MUG1C,MUG1B HEADVWZ .LONG MUG1AZ,MUG4Z,MUG4Z,MUG4Z,MUG4Z,MUG4Z,MUG4Z,MUG3Z .LONG MUG2Z,MUG1Z,MUG2Z,MUG3Z,MUG4Z,MUG4Z,MUG4Z,MUG1CZ,MUG1BZ HFLAG .WORD DMAWNZ,DMAWNZ,DMAWNZ,DMAWNZ,DMAWNZ,DMAWNZ .WORD DMAWNZ+M_FLIPH,DMAWNZ+M_FLIPH,DMAWNZ+M_FLIPH .WORD DMAWNZ,DMAWNZ,DMAWNZ,DMAWNZ,DMAWNZ,DMAWNZ .WORD DMAWNZ,DMAWNZ,DMAWNZ BELLY ;BELLY DOOR OPENS AND CLOSES ;BEGIN NEW OBJECT MOVE A8,A10 MOVI BLYIMG,A14 CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE CALLA STFOBJ ;STUFF OBJECT DATA MOVE A13,*A0(OPLINK),L CALLA INSOBJ ;INSERT OBJECT INTO LIST MOVE A0,A8 MOVE A8,@KP_BELL,L ; CALLA OBJOFF ;WHEN CLOSED, OBJOFF ;WHEN ON, OBJON AND FRANIM LIST ;RELEASE SNAKE ;FRANIM CLOSED (CONT 1ST SCRIPT) ;OBJOFF MOVE A10,A11 B_TOP SLEEP 30 MOVB @DMGPNT,A0 CMPI 4,A0 JRNC BBT MOVE *A11(OXVEL),A0,L MOVE *A11(OYVEL),A1,L OR A0,A1 JRNZ B_TOP MOVI CLSENMY|TYPTORSO,A0 MOVI 0FFFFH,A1 CALLA EXISTOBJ JRNZ B_TOP MOVB @MACTION,A0 CMPI 6,A0 JRLO B_TOP CMPI 11,A0 JRHI B_TOP BBT MOVI 400,A0 CALLA RANDPER JRNC B_TOP ;CHECK TO SEE IF ANYONE IS BELOW ME ANDI 01,A0 JRZ P1SK ;TRY TO SEEK PLYR 2 FIRST! CLR A1 MOVI 32,A10 MOVE @PLYROBJS+32,A0,L JRNZ CK MOVI 32,A1 CLR A10 MOVE @PLYROBJS,A0,L JRZ B_TOP JRUC CK P1SK ;TRY P1 FIRST! MOVI 32,A1 CLR A10 MOVE @PLYROBJS,A0,L JRNZ CK CLR A1 MOVE @PLYROBJS+32,A0,L JRZ B_TOP MOVI 32,A10 CK MOVE *A0(OYPOS),A2 MOVE *A8(OYPOS),A3 ADDI 30,A3 CMP A2,A3 JRLT AHIT0 MOVI PLYROBJS,A0 ADD A1,A0 MOVE *A0,A0,L JRZ B_TOP ;AHIT0 ;B_TOP XORI 32,A10 MOVE *A0(OYPOS),A2 CMP A2,A3 JRLT AHIT0 ;NOPE, BOTH PLAYERS ARE ABOVE ME JRUC B_TOP AHIT0 MOVI CLSENMY|TYPMUT|SUBSNK,A0 MOVI 0FFFFH,A1 CALLA EXISTOBJ JRNZ B_TOP MOVK 1,A0 MOVB A0,@SNKOUT MOVE A8,A0 CALLA OBJON MOVB A10,@KPA10 ;START FRANIM LIST CREATE 0,SNAKE MOVI OPNCLS,A9 ;OPEN AND CLOSE BELLY MOVK 1,A1 JSRP FRANIM MOVE A8,A0 CALLA OBJOFF SLEEP 1*60 JRUC B_TOP ; OPNCLS .LONG BELLY1 .WORD 6 .LONG BELLY2 ; .WORD SPAWNP|1*60+30 ; .WORD 0,0,0 ; .LONG SNAKE .WORD 90 .LONG BELLY1 .WORD 6 .LONG 0 ; SNAKE SLEEP 6 MOVI BONPID,A0 MOVE A0,*A13(PROCID) MOVB @KPA10,A10 ;0 FOR PLAYER 1 SEEK SNAKE MOVI TRAM1,A11 CMPI 32,A10 JRNE TRW MOVI TRAM2,A11 TRW MOVI PLYROBJS,A0 ADD A10,A0 MOVE *A0,A0,L MOVE A0,*A11,L ;MOVE OBJECT BLOCK PTR INTO TOP OF RAM STACK MOVI MAXPCS,A9 ;CHASER LENGTH MOVK 1,A10 LPA: CREATE BONPID,CHASER SLEEP 2 INC A10 CMP A9,A10 JRLE LPA SLEEP 1*60 CLR A0 MOVB A0,@SNKOUT DIE CHASER: MOVE @KP_BELL,A8,L MOVE *A8(OXVAL),A0,L ADDI 0F0000H,A0 MOVE *A8(OYVAL),A1,L ADDI 0F0000H,A1 MOVI HLPR1,A2 MOVI 159,A3 MOVI DMAWNZ,A4 ;NON-ZERO VALUE MOVI CLSENMY|TYPMUT|SUBSNK,A5 MOVE *A8(OXVEL),A6,L MOVE *A8(OYVEL),A7,L MOVE A7,*A13(DLY),L CALLA BEGINOBJ2 MOVE A10,A0 SLL 5,A0 ;A11=TRAM PTR ADD A11,A0 MOVE A8,*A0,L MOVK 1,A0 MOVB A0,*A13(CDELAY) MOVB A0,*A13(BLDVW) CLR A0 MOVE A0,*A13(SKTM) MOVB A7,*A13(GDIE) MOVB A0,*A13(SKHITS) ; SLEEP 2 LPTP: MOVB *A13(SKHITS),A0 CMPI 3,A0 JRC LO0 ;KILL PC MOVE A8,A0 CALLA DELOBJ MOVE A10,A0 SLL 5,A0 ADD A11,A0 CLR A1 MOVE A1,*A0,L DIE LO0 MOVB *A13(CDELAY),A1 ANDI 07H,A1 DEC A1 MOVB A1,*A13(CDELAY) JRNE NO_SK MOVI 1,A1 CMPI 1,A10 JRNE U2 MOVE *A13(SKTM),A0 INC A0 MOVE A0,*A13(SKTM) CMPI 028H,A0 JRHI OUT1 MOVI 5,A1 U2 MOVB A1,*A13(CDELAY) MOVE A10,A1 LPTP2 DEC A1 MOVE A1,A0 SLL 5,A0 ADD A11,A0 MOVE *A0,A0,L ;OBJ TO SK JRZ OUT1 JRZ LPTP2 CALLR PLTLINE MOVE A5,*A8(OXVEL),L MOVE A6,*A8(OYVEL),L NO_SK ;UPDATE VIEW OF BLADE MOVB *A13(BLDVW),A0 ANDI 07H,A0 INC A0 MOVB A0,*A13(BLDVW) CMPI 6,A0 JRNE KPG CLR A0 MOVB A0,*A13(BLDVW) KPG MOVI CHSRIMG,A1 SLL 5,A0 ADD A0,A1 MOVE *A1,A1,L ;GET NEW OIMG FOR THIS CHASER PIECE MOVE *A8(OFLAGS),A4 CALLA ANI OUT SLEEP 2 JRUC LPTP OUT1 MOVE A10,A0 SLL 5,A0 ADD A11,A0 CLR A1 MOVE A1,*A0,L CLR A0 MOVE A0,*A8(OID) ; MOVE A8,A0 ; CALLA DELOBJ ; DIE MOVE *A8(OXPOS),A0 SUBI 1,A0 MOVE A0,*A8(OXPOS) MOVE *A8(OYPOS),A0 SUBI 1,A0 MOVE A0,*A8(OYPOS) MOVI BOOMN2,A9 ;BOOM3 CHANGES PALETTE TO EXPLOSION! MOVK 1,A1 JSRP FRANIM MOVE A8,A0 CALLA DELOBJ DIE KIL_SNK ;A8=PC PNTR MMTM SP,A1,A9,A10,A11 MOVE *A8(OPLINK),A0,L CALLA GETA10 CALLA GETA11 MOVE A10,A0 SLL 5,A0 ADD A11,A0 CLR A1 MOVE A1,*A0,L MOVE *A8(OPLINK),A0,L CALLA KILL MOVE A8,A0 CALLA DELOBJ MMFM SP,A1,A9,A10,A11 RETS CHSRIMG: .LONG HLPR1,HLPR2,HLPR3,HLPR4,HLPR5,HLPR6 ; JPTBL .LONG 0,MDN,MUP,0,FPNDLFT,MVHD,PNDLFT,PNDRGT,POSE .LONG FLAIL,STOP,FIST,LUNGE,LUNGED JPTBLF .LONG ROLLINF,MDNF,MUPF,FPNDRGTF,FPNDLFTF,MVHDF,PNDLFTF,PNDRGTF,POSEF .LONG FLAILF,STOPF,FISTF,LUNGEF,LUNGEDF ; MOD_VELS MOVE A0,*A8(OYVEL),L MOVE *A13(TNKR),A1,L MOVE A0,*A1(OYVEL),L MOVE *A13(TRSL),A1,L MOVE A0,*A1(OYVEL),L MOVE *A13(TRSR),A1,L MOVE A0,*A1(OYVEL),L MOVE *A13(TNKR),A1,L MOVE A0,*A1(OYVEL),L MOVE *A13(ARML),A1,L MOVE A0,*A1(OYVEL),L MOVE *A13(ARMR),A1,L MOVE A0,*A1(OYVEL),L MOVE *A13(TRDLF),A1,L MOVE A0,*A1(OYVEL),L MOVE *A13(TRDRF),A1,L MOVE A0,*A1(OYVEL),L MOVE *A13(TRDRS),A1,L MOVE A0,*A1(OYVEL),L MOVE *A13(TRDLS),A1,L MOVE A0,*A1(OYVEL),L MOVE *A13(SHADR),A1,L MOVE A0,*A1(OYVEL),L MOVE *A13(SHADF),A1,L MOVE A0,*A1(OYVEL),L MOVE *A13(MHEAD),A1,L MOVE A0,*A1(OYVEL),L RETS LINEBLY ;LINE UP BELLY CALLA GETANIXY MOVE @KP_BELL,A0,L MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE SUBI 020000H,A3 ;SUB 1 FROM X SUBI 010000H,A2 ;ADD 1 TO Y CALLA GANISAG RETS LINE_UP CALLR LINEBLY ;DO HEAD CALLA GETANIXY MOVE *A13(MHEAD),A0,L MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE ADDI 020000H,A2 ;Y MOVB @DMGPNT,A5 CMPI 5,A5 JRLO AU ;HEAD ON TANK ADDI 0210000H,A2 JRUC P0 AU MOVB @POP,A5 JRZ P0 SLL 16,A5 SUB A5,A2 P0 CALLA GANISAG L2UP ;RIGHT SIDE OF TANK CALLA GETANIXY MOVE *A13(TNKR),A0,L MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE CALLA GANISAG ;ADJUST LEFT SIDE TORSO CALLA GETANIXY MOVE *A13(TRSL),A0,L MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE CALLA GANISAG ;ADJUST RGT TORSO CALLA GETANIXY MOVE *A13(TRSR),A0,L MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE SUBI 010000H,A3 ;SUB 1 FROM X CALLA GANISAG ;ADJUST LEFT SIDE ARM ; MOVB @DMGPNT,A0 ; JRNZ SKPIT CALLA GETANIXY MOVE *A13(ARML),A0,L MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE CALLA GANISAG ;ADJUST RIGHT SIDE ARM ;SKPIT ; MOVB @DMGPNT,A0 ; CMPI 2,A0 ; JRGE SKPIT2 CALLA GETANIXY MOVE *A13(ARMR),A0,L MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE SUBI 010000H,A3 ;SUB 1 FROM X CALLA GANISAG ;ADJUST LEFT SIDE TREAD ;SKPIT2 CALLA GETANIXY MOVE *A13(TRDLS),A0,L MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE CALLA GANISAG ;ADJUST RIGHT SIDE TREAD CALLA GETANIXY MOVE *A13(TRDRS),A0,L MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE CALLA GANISAG ;ADJUST LEFT FRONT TREAD CALLA GETANIXY MOVE *A13(TRDLF),A0,L MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE SUBI 010000H,A2 ;SUB 1 FROM Y CALLA GANISAG ;ADJUST RIGHT FRONT TREAD CALLA GETANIXY MOVE *A13(TRDRF),A0,L MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE SUBI 010000H,A2 ;SUB 1 FROM Y CALLA GANISAG ;DO RIGHT SIDE SHADOW CALLA GETANIXY MOVE *A13(SHADR),A0,L MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE CALLA GANISAG ;DO FRONT SHADOW CALLA GETANIXY MOVE *A13(SHADF),A0,L MOVE *A0(OFLAGS),A4,W ;SAME FLAGS AS BEFORE SUBI 010000H,A3 ;SUB 1 FROM X SUBI 010000H,A2 ;SUB 1 FROM Y CALLA GANISAG RETS ; PLTLINE - MAKE AN OBJECT TRAVEL FROM PNT. A TO PNT. B ; ; A8 = OBJECT SEEKING ; A0 = OBJECT SEEKED ; RETURNS: ; A5 = X VEL UHL ; A6 = Y VEL UHL PLTLINE: MOVE *A0(OXPOS),A5,W MOVE *A0(OYPOS),A6,W CMPI 1,A10 JRNE GRGR ADDI 10,A6 GRGR MOVE *A8(OXPOS),A3,W MOVE *A8(OYPOS),A4,W SUB A3,A5 ;FIND DIFFERENCE SUB A4,A6 MOVE A6,A3 ; MOVE A5,A1 ABS A5 ABS A6 ADD A5,A6 ;CALC SUM ABS(DX+DY) SLL 16,A1 ;SHIFT TO ACCOMODATE FRACTIONAL VELOCITY SLL 16,A3 DIVS A6,A1 ;GENERATE SPEED RATIOS DIVS A6,A3 MOVI 18H,A5 MPYS A5,A3 MPYS A1,A5 ;FINAL X VEL SRA 4,A3 SRA 4,A5 MOVE A3,A6 ;FINAL Y VEL RETS ; ONLIST .LONG 0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 MCLIST .LONG 0,T1,T2,T3Z,T4Z,T5Z,T6Z,T7,T8,T9,T10,T11,T12,T13Z T1 ;TANK LEFT .LONG 0,0,MTNK1A .WORD 130,DMAWNZ,CLSENMY|TYPMUT|SUBTKL .LONG 0,0 T2 ;TANK RGT .LONG 0,0,MTNK1A .WORD 130,DMAWNZ+M_FLIPH,CLSENMY|TYPMUT|SUBTKR .LONG 0,0 T3 ;TORSO LEFT .LONG 0,0,TRS1 .WORD 201,DMAWNZ+M_PIXSCAN,CLSENMY|TYPMUT|SUBTSL .LONG 0,0 T4 ;TORSO RGT .LONG 0,0,TRS1 .WORD 201,DMAWNZ+M_FLIPH+M_PIXSCAN,CLSENMY|TYPMUT|SUBTSR .LONG 0,0 T5 ;ARM LEFT .LONG 0,0,MARM1 .WORD 202,DMAWNZ+M_PIXSCAN,CLSENMY|TYPMUT|SUBARML .LONG 0,0 T6 ;ARM RGT .LONG 0,0,MARM1 .WORD 202,DMAWNZ+M_FLIPH+M_PIXSCAN,CLSENMY|TYPMUT|SUBARMR .LONG 0,0 T3Z ;TORSO LEFT .LONG 0,0,TRS1Z .WORD 201,DMAWNZ+M_PIXSCAN,CLSENMY|TYPMUT|SUBTSL .LONG 0,0 T4Z ;TORSO RGT .LONG 0,0,TRS1Z .WORD 201,DMAWNZ+M_FLIPH+M_PIXSCAN,CLSENMY|TYPMUT|SUBTSR .LONG 0,0 T5Z ;ARM LEFT .LONG 0,0,MARM1Z .WORD 202,DMAWNZ+M_PIXSCAN,CLSENMY|TYPMUT|SUBARML .LONG 0,0 T6Z ;ARM RGT .LONG 0,0,MARM1Z .WORD 202,DMAWNZ+M_FLIPH+M_PIXSCAN,CLSENMY|TYPMUT|SUBARMR .LONG 0,0 T7 ;TREAD LFT FRONT .LONG 0,0,TRD1 .WORD 130,DMAWNZ+M_NOCOLL,CLSNEUT|TYPNEUT|SUBCHNK .LONG 0,0 T8 ;TREAD RGT FRONT .LONG 0,0,TRD1 .WORD 130,DMAWNZ+M_FLIPH+M_NOCOLL,CLSNEUT|TYPNEUT|SUBCHNK .LONG 0,0 T9 ;TREAD LEFT SIDE .LONG 0,0,TRD1A .WORD 130,DMAWNZ+M_NOCOLL,CLSNEUT|TYPNEUT|SUBCHNK .LONG 0,0 T10 ;TREAD RGT SIDE .LONG 0,0,TRD1A .WORD 130,DMAWNZ+M_FLIPH+M_NOCOLL,CLSNEUT|TYPNEUT|SUBCHNK .LONG 0,0 T11 ;SHAD RGT .LONG 0,0,SHAD .WORD 129,DMAWNZ+M_NOCOLL,CLSNEUT|TYPNEUT|SUBCHNK .LONG 0,0 T12 ;SHAD FRONT .LONG 0,0,SHAD2 .WORD 129,DMAWNZ+M_NOCOLL,CLSNEUT|TYPNEUT|SUBCHNK .LONG 0,0 T13 ;HEAD .LONG 0,0,MUG1 .WORD 203,DMAWNZ,CLSENMY|TYPMUT|SUBHD .LONG 0,0 T13Z ;HEAD .LONG 0,0,MUG1Z .WORD 203,DMAWNZ,CLSENMY|TYPMUT|SUBHD .LONG 0,0 BM6 ;BEAM 6 .LONG 0,0,BEAM4 .WORD 213,DMAWNZ+M_FLIPH,CLSNEUT|TYPNEUT|SUBCHNK2 .LONG 0,0 BM7 ;BEAM 7 .LONG 0,0,BEAM3 .WORD 213,DMAWNZ+M_FLIPH,CLSNEUT|TYPNEUT|SUBCHNK2 .LONG 0,0 BM8 ;BEAM 8 .LONG 0,0,BEAM2 .WORD 213,DMAWNZ+M_FLIPH,CLSNEUT|TYPNEUT|SUBCHNK2 .LONG 0,0 BM9 ;BEAM 9 .LONG 0,0,BEAM1 .WORD 213,DMAWNZ,CLSNEUT|TYPNEUT|SUBCHNK2 .LONG 0,0 BM10 ;BEAM 10 .LONG 0,0,BEAM2 .WORD 213,DMAWNZ,CLSNEUT|TYPNEUT|SUBCHNK2 .LONG 0,0 BM11 ;BEAM 11 .LONG 0,0,BEAM3 .WORD 213,DMAWNZ,CLSNEUT|TYPNEUT|SUBCHNK2 .LONG 0,0 BM12 ;BEAM 12 .LONG 0,0,BEAM4 .WORD 213,DMAWNZ,CLSNEUT|TYPNEUT|SUBCHNK2 .LONG 0,0 BM6Z ;BEAM 6 .LONG 0,0,BEAM4Z .WORD 213,DMAWNZ+M_FLIPH,CLSNEUT|TYPNEUT|SUBCHNK2 .LONG 0,0 BM7Z ;BEAM 7 .LONG 0,0,BEAM3Z .WORD 213,DMAWNZ+M_FLIPH,CLSNEUT|TYPNEUT|SUBCHNK2 .LONG 0,0 BM8Z ;BEAM 8 .LONG 0,0,BEAM2Z .WORD 213,DMAWNZ+M_FLIPH,CLSNEUT|TYPNEUT|SUBCHNK2 .LONG 0,0 BM9Z ;BEAM 9 .LONG 0,0,BEAM1Z .WORD 213,DMAWNZ,CLSNEUT|TYPNEUT|SUBCHNK2 .LONG 0,0 BM10Z ;BEAM 10 .LONG 0,0,BEAM2Z .WORD 213,DMAWNZ,CLSNEUT|TYPNEUT|SUBCHNK2 .LONG 0,0 BM11Z ;BEAM 11 .LONG 0,0,BEAM3Z .WORD 213,DMAWNZ,CLSNEUT|TYPNEUT|SUBCHNK2 .LONG 0,0 BM12Z ;BEAM 12 .LONG 0,0,BEAM4Z .WORD 213,DMAWNZ,CLSNEUT|TYPNEUT|SUBCHNK2 .LONG 0,0 BLYIMG ;BEAM 12 .LONG 0,0,BELLY1 .WORD 131,DMAWNZ,CLSNEUT|TYPNEUT|SUBCHNK .LONG 0,0 ; ;TREAD ANIMATION TABLES ; TRDSDLL .LONG TRD2A .WORD FLIPBITS|02,0 .LONG TRD3A .WORD 02 .LONG TRD1A .WORD 02 .LONG 0 TRDSDRL .LONG TRD2A .WORD FLIPBITS|02,(M_FLIPH) .LONG TRD3A .WORD 02 .LONG TRD1A .WORD 02 .LONG 0 TRDFTLL .LONG TRD2 .WORD FLIPBITS|02,0 .LONG TRD3 .WORD 02 .LONG TRD1 .WORD 02 .LONG 0 TRDFTRL .LONG TRD2 .WORD FLIPBITS|02,(M_FLIPH) .LONG TRD3 .WORD 02 .LONG TRD1 .WORD 02 .LONG 0 ;UP SCREEN BTRDSDLL .LONG TRD3A .WORD FLIPBITS|03,0 .LONG TRD2A .WORD 03 .LONG TRD1A .WORD 03 .LONG 0 BTRDSDRL .LONG TRD3A .WORD FLIPBITS|03,(M_FLIPH) .LONG TRD2A .WORD 03 .LONG TRD1A .WORD 03 .LONG 0 BTRDFTLL .LONG TRD3 .WORD FLIPBITS|03,0 .LONG TRD2 .WORD 03 .LONG TRD1 .WORD 03 .LONG 0 BTRDFTRL .LONG TRD3 .WORD FLIPBITS|03,(M_FLIPH) .LONG TRD2 .WORD 03 .LONG TRD1 .WORD 03 .LONG 0 PNDLARM .LONG MARM1 .WORD FLIPBITS|05,0 .LONG MARM2 .WORD 05 .LONG MARM3 .WORD 05 .LONG MARM4 .WORD 05 .LONG MARM3 .WORD 05 .LONG MARM2 .WORD 05 .LONG MARM1 .WORD 05 .LONG MARM6A ; .WORD SPAWNP|50 ; .WORD 0,0,0 ; .LONG SHKIT .WORD 50 .LONG 0 PNDRARM .LONG MARM1 .WORD FLIPBITS|05,(M_FLIPH) .LONG MARM2 .WORD 05 .LONG MARM3 .WORD 05 .LONG MARM4 .WORD 05 .LONG MARM3 .WORD 05 .LONG MARM2 .WORD 05 .LONG MARM1 .WORD 05 .LONG MARM6A ; .WORD SPAWNP|50 ; .WORD 0,0,0 ; .LONG SHKIT .WORD 50 .LONG 0 FISTL .LONG MARM1 .WORD FLIPBITS|05,0 .LONG MARM2 .WORD FLIPBITS|05,0 .LONG MARM3 .WORD FLIPBITS|01,0 .LONG 0 FISTL2 ;COMING BACK DOWN .LONG MARM2 .WORD FLIPBITS|05,0 .LONG MARM1 .WORD FLIPBITS|01,0 .LONG 0 FISTR .LONG MARM1 .WORD FLIPBITS|05,(M_FLIPH) .LONG MARM2 .WORD 05 .LONG MARM3 .WORD 01 .LONG 0 FISTR2 ;COMING BACK DOWN .LONG MARM2 .WORD FLIPBITS|05,(M_FLIPH) .LONG MARM1 .WORD 05 .LONG 0 PNDLARMZ .LONG MARM1Z .WORD FLIPBITS|05,0 .LONG MARM2Z .WORD 05 .LONG MARM3Z .WORD 05 .LONG MARM4Z .WORD 05 .LONG MARM3Z .WORD 05 .LONG MARM2Z .WORD 05 .LONG MARM1Z .WORD 05 .LONG MARM6AZ ; .WORD SPAWNP|50 ; .WORD 0,0,0 ; .LONG SHKIT .WORD 50 .LONG 0 PNDRARMZ .LONG MARM1Z .WORD FLIPBITS|05,(M_FLIPH) .LONG MARM2Z .WORD 05 .LONG MARM3Z .WORD 05 .LONG MARM4Z .WORD 05 .LONG MARM3Z .WORD 05 .LONG MARM2Z .WORD 05 .LONG MARM1Z .WORD 05 .LONG MARM6AZ ; .WORD SPAWNP|50 ; .WORD 0,0,0 ; .LONG SHKIT .WORD 50 .LONG 0 FISTLZ .LONG MARM1Z .WORD FLIPBITS|05,0 .LONG MARM2Z .WORD FLIPBITS|05,0 .LONG MARM3Z .WORD FLIPBITS|01,0 .LONG 0 FISTL2Z ;COMING BACK DOWN .LONG MARM2Z .WORD FLIPBITS|05,0 .LONG MARM1Z .WORD FLIPBITS|01,0 .LONG 0 FISTRZ .LONG MARM1Z .WORD FLIPBITS|05,(M_FLIPH) .LONG MARM2Z .WORD 05 .LONG MARM3Z .WORD 01 .LONG 0 FISTR2Z ;COMING BACK DOWN .LONG MARM2Z .WORD FLIPBITS|05,(M_FLIPH) .LONG MARM1Z .WORD 05 .LONG 0 POSEMEL .LONG MARM1 .WORD FLIPBITS|05,0 .LONG MARM2 .WORD 05 .LONG MARM3 .WORD 05 .LONG MARM4 .WORD 90 .LONG MARM3 .WORD 05 .LONG MARM2 .WORD 05 .LONG MARM1 .WORD 05 .LONG 0 POSEMER .LONG MARM1 .WORD FLIPBITS|05,(M_FLIPH) .LONG MARM2 .WORD 05 .LONG MARM3 .WORD 05 .LONG MARM4 .WORD 90 .LONG MARM3 .WORD 05 .LONG MARM2 .WORD 05 .LONG MARM1 .WORD 05 .LONG 0 POSEMELZ .LONG MARM1Z .WORD FLIPBITS|05,0 .LONG MARM2Z .WORD 05 .LONG MARM3Z .WORD 05 .LONG MARM4Z .WORD 90 .LONG MARM3Z .WORD 05 .LONG MARM2Z .WORD 05 .LONG MARM1Z .WORD 05 .LONG 0 POSEMERZ .LONG MARM1Z .WORD FLIPBITS|05,(M_FLIPH) .LONG MARM2Z .WORD 05 .LONG MARM3Z .WORD 05 .LONG MARM4Z .WORD 90 .LONG MARM3Z .WORD 05 .LONG MARM2Z .WORD 05 .LONG MARM1Z .WORD 05 .LONG 0 FPNDLARM: .LONG MARM1 .WORD FLIPBITS|03,0 .LONG MARM2 .WORD 03 .LONG MARM3 .WORD 03 .LONG MARM4 .WORD 03 .LONG MARM3 .WORD 03 .LONG MARM2 .WORD 03 .LONG MARM1 .WORD 03 .LONG MARM6A .WORD 01 .LONG 0 FPNDLARMZ .LONG MARM1Z .WORD FLIPBITS|03,0 .LONG MARM2Z .WORD 03 .LONG MARM3Z .WORD 03 .LONG MARM4Z .WORD 03 .LONG MARM3Z .WORD 03 .LONG MARM2Z .WORD 03 .LONG MARM1Z .WORD 03 .LONG MARM6AZ .WORD 01 .LONG 0 FLIPL .LONG MARM3 .WORD FLIPBITS|02,0 .LONG 0 FLIPLZ .LONG MARM3Z .WORD FLIPBITS|02,0 .LONG 0 FLIPH .LONG MUG1 .WORD FLIPBITS|03,0 .LONG MUG2 .WORD 3 .LONG MUG3 .WORD 3 .LONG MUG4 .WORD 3 .LONG MUG1C .WORD 3 .LONG MUG4 .WORD FLIPBITS|3,(M_FLIPH) .LONG MUG3 .WORD 3 .LONG MUG2 .WORD 3 .LONG MUG1 .WORD 3 .LONG 0 FLIPHZ .LONG MUG1Z .WORD FLIPBITS|03,0 .LONG MUG2Z .WORD 3 .LONG MUG3Z .WORD 3 .LONG MUG4Z .WORD 3 .LONG MUG1CZ .WORD 3 .LONG MUG4Z .WORD FLIPBITS|3,(M_FLIPH) .LONG MUG3Z .WORD 3 .LONG MUG2Z .WORD 3 .LONG MUG1Z .WORD 3 .LONG 0 FLIPCR .LONG TRS1 .WORD FLIPBITS|02,(M_FLIPH) .LONG 0 FLIPCL .LONG TRS1 .WORD FLIPBITS|02,0 .LONG 0 FLIPCR2 .LONG TRS1A .WORD FLIPBITS|02,(M_FLIPH) .LONG 0 FLIPCL2 .LONG TRS1A .WORD FLIPBITS|02,0 .LONG 0 FLIPR .LONG MARM3 .WORD FLIPBITS|02,(M_FLIPH) .LONG 0 FLIPCRZ .LONG TRS1Z .WORD FLIPBITS|02,(M_FLIPH) .LONG 0 FLIPCLZ .LONG TRS1Z .WORD FLIPBITS|02,0 .LONG 0 FLIPCR2Z .LONG TRS1AZ .WORD FLIPBITS|02,(M_FLIPH) .LONG 0 FLIPCL2Z .LONG TRS1AZ .WORD FLIPBITS|02,0 .LONG 0 FLIPRZ .LONG MARM3Z .WORD FLIPBITS|02,(M_FLIPH) .LONG 0 FPNDRARM: .LONG MARM1 .WORD FLIPBITS|03,(M_FLIPH) .LONG MARM2 .WORD 03 .LONG MARM3 .WORD 03 .LONG MARM4 .WORD 03 .LONG MARM3 .WORD 03 .LONG MARM2 .WORD 03 .LONG MARM1 .WORD 03 .LONG MARM6A .WORD 01 .LONG 0 FPNDRARMZ: .LONG MARM1Z .WORD FLIPBITS|03,(M_FLIPH) .LONG MARM2Z .WORD 03 .LONG MARM3Z .WORD 03 .LONG MARM4Z .WORD 03 .LONG MARM3Z .WORD 03 .LONG MARM2Z .WORD 03 .LONG MARM1Z .WORD 03 .LONG MARM6AZ .WORD 01 .LONG 0 .END