************************************************************** * * Software: Mark Turmell * Initiated: 8/30/90 * * Modified: Shawn Liptak, 10/27/91 -Orcus mods * * COPYRIGHT (C) 1992 WILLIAMS ELECTRONICS GAMES, INC. * *.Last mod - 1/9/92 17:07 ************************************************************** .FILE 'SHOTS.ASM' .TITLE 'PROJECTILES FROM PLAYERS STUFF' .WIDTH 132 .OPTION B,D,L,T .MNOLIST .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 "GAME.EQU" .INCLUDE "FINGRNT.TBL" .INCLUDE "THROW.TBL" .include "shawn.hdr" ;Macros ; ;SOUNDS EXTERNAL ; .REF EXP2HI,SHOT,TOTCARN,FLAMSND,SHOT2,SCASH,KEYSND,WOO1 .REF WOO2,GRNSND,THUMP,THUMP2,MTING,GETWPN,SEXP2HI,SALTXP4,TING .REF SETDWN,GULP,TING2,TING3,NOWAY,ONESNDOVR .REF TORCH,SCASH2,GAMSTATE ; ;SYMBOLS EXTERNALLY DEFINED ; .REF missile_fire2,DONT_WARP,WAVE,ORCHINT,PLYROBJS,RANDPER .REF PCNT,OUT_FLG,FRANIM,FRANIMQ,BCURRENT,CLEANUP,SKIPR_CNT .ref SHAKER,INHERE,RINGS,AHMD_CNT,FND_CNT,JEEP2,JEEP,JEEP4 .REF SCRADD2,P1DATA,P2DATA,DO_EXTRA,FREETOT,KILL_H1,PEXIST,TBOMBD2 .REF KILL_F2,GETFPAL,BGDO,HALT,KILL_LY,COMEOUT,BLUEEXP .REF WARPOUT,PLYRPRCS,GETUGH,CYCLEON .ref slt_smartbomb,NEUTRONB,DOBINGO,HULK_CNT,DODUD .ref AKHLIMO .ref SPAWN_MISL_GOOD ; ;SYMBOLS DEFINED IN THIS FILE ; .DEF STRT_MISLS,DOIT,ONHEAD .DEF BMBLTSON,ADDBMB,TINGSND .DEF STRT_WPN,KILL_BULL,SPRAYON,NSTPON,EXPCNT,FLAMING .DEF KEYON,RINGON,SMRTON,SHOEON,EXTRA,BMBON,DEL_BULL,TCSH,BOOMS .DEF FIREON,GRENON,SPDGON,CLNICN,CHK_BULL,SBOMB,KILL_BULL2 .def SBSND,KILL_BULLG ;UNINITIALIZED RAM DEFINITIONS .BSS EXPCNT,16 ;SMART BOMB EXP CNT ;EQUATES FIRST ORIGINATED IN THIS FILE ;PUT IN ANGLE VELOCITIES! BLTYVEL .EQU 072000H ;>164000 BLTXVEL .EQU 072000H ;>164000 BL3YVEL .EQU 032000H ;>164000 BL3XVEL .EQU 039000H ;>164000 BLT5YVEL .EQU 038000H ;>164000 BLT5XVEL .EQU 040000H ;>164000 GRNYVEL .EQU 000H GRNXVEL .EQU 2000H ;-18000 FOR FLATFACE ;GRNYVEL2 .EQU -018000H ; ;GRNXVEL2 .EQU -018000H .TEXT msllnchsnd .word >f290,10,>80b9,0 ;Missile launch ;msllnchsnd .word >f290,10,>80b6,0 ;Missile launch ;msllnchsnd .word >f290,10,>812C,0 ;Missile launch STRT_MISLS ; DIE MOVK 4,A11 MOVE @WAVE,A0 CMPI 1,A0 JRZ SM1 MOVK 4,A11 ;MISL CNT FOR BASEMENT AREA #1 CMPI 38,A0 JRZ SM1 MOVK 14,A11 CMPI 18,A0 JRNZ SM1 MOVK 3,A11 ;INTO AIRPORT GATE SM1 MOVE *A8(OYPOS),A0 MOVE @WORLDTLY+16,A1 ADDI 240,A1 CMP A0,A1 JRLT SMD SLEEP 110 MOVE @HALT,A0 JRNZ SM1 MOVE @WAVE,A0 CMPI 38,A0 JRNZ SM50 MOVI 400,A0 CALLA RANDPER JRC SM1 JRUC SM01 SM50 SUBK 1,A0 JRNZ SM01 MOVI 850,A0 CALLA RANDPER JRC SM1 SM01 movi msllnchsnd,a0 calla ONESND MOVK 8,A10 MOVE *A8(OFLAGS),A0 BTST B_FLIPH,A0 JRZ SM2 MOVK 24,A10 SM2 MOVI missileo_t,A9 CREATE BOSSPID,missile_fire2 ;missile_fire ;A8=*Src obj, A9=*Offset_t, A10=Dir 0-31 DSJ A11,SM1 SMD DIE missileo_t .word 12H,6 RINGON: ;TURN RING ON AROUND PLAYER ICON PICKUP ;REDUCE MMTM!!! MMTM SP,A1,A7,A9 MOVE @GAMSTATE,A1 CMPI INAMODE,A1 JRZ ROUT MOVE *A0(OPLINK),A0,L MOVE *A0(PNUM),A9 MOVI GULP,A0 CALLA ONESND MOVI 50,A10 ;TIME RINGS ARE ON ; MOVE @RINGTIME,A10 ;GOOD PLAYERS WILL GET RING TIME CUT DOWN CMPI 1,A9 JRZ SM16 MOVE @timerp2,A1 CMPI 280,A1 JRGE MKHRD0 ;IF CURRENT GAME IS TOO LONG! MOVE @timerp2sd,A1 ;Player 2 seconds since death CMPI 170,A1 JRLT NOCHNG6 MKHRD0 MOVI 39,A10 JRUC NOCHNG6 SM16 MOVE @timerp1,A1 CMPI 280,A1 JRGE MKHRD0 ;IF CURRENT GAME IS TOO LONG! MOVE @timerp1sd,A1 ;Player 1 seconds since death CMPI 170,A1 JRLT NOCHNG6 MOVI 39,A10 NOCHNG6 MOVE @WAVE,A0 CMPI 38,A0 JRNZ PAT MOVK 19,A10 PAT ;IF ALREADY A RING FOR THIS PLYR ;KILL OLD PROC AND RESTART ANEW CMPI 1,A9 JRZ ONEP MOVI B2PID,A0 CALLA KIL1C MOVI RNG2PID,A0 CLR A1 NOT A1 CALLA EXISTP JRZ STRT2 move *A0(PA9),A1,L CALLA KILL MOVE A1,A0 CALLA DELOBJ STRT2 ; MOVI 50,A10 ;TIME RINGS ARE ON CREATE RNG2PID,RINGS ;PLACE RING AROUND PLAYER X JRUC ROUT ONEP MOVI B1PID,A0 CALLA KIL1C MOVI RNG1PID,A0 CLR A1 NOT A1 CALLA EXISTP JRZ STRT1 move *A0(PA9),A1,L CALLA KILL MOVE A1,A0 CALLA DELOBJ STRT1 ; MOVI 50,A10 ;TIME RINGS ARE ON CREATE RNG1PID,RINGS ;PLACE RING AROUND PLAYER X ROUT CALLR CLNICN MMFM SP,A1,A7,A9 RETS BMBLTSON MMTM SP,A1,A7,A9,A11 MOVE *A0(OPLINK),A11,L MOVE *A11(PNUM),A9 CMPI 1,A9 JRZ ONEP4 MOVI BMBLT2PID,A0 CLR A1 NOT A1 CALLA EXISTP JRZ STRT4 CALLA KILL STRT4 MOVK 10,A10 ;# OF BOMBS TO DROP FOR PLYR CREATE BMBLT2PID,DOBMBS JRUC ADSHOE ONEP4 MOVI BMBLT1PID,A0 CLR A1 NOT A1 CALLA EXISTP JRZ STRT14 CALLA KILL STRT14 MOVK 10,A10 CREATE BMBLT1PID,DOBMBS ADSHOE ;TURN ON FAST SHOES ALSO MOVE *A11(LEG_PRC),A9,L ;PICKED UP TENNIS SHOES! MOVI 08140H,A1 MOVE A1,*A9(SHOECNT),W CALLR CLNICN MMFM SP,A1,A7,A9,A11 RETS DOBMBS ;A9=1 OR 2 FOR PLYR # ;A10=# OF BOMBS TO DROP MOVE A9,A1 DEC A1 SLL 5,A1 MOVI PLYRPRCS,A11 ADD A1,A11 MOVE *A11,A11,L DB2 MOVE @WARPOUT,A0 JRNZ DI ;NOBM MOVE @HALT,A0 JRNZ NOBM ;PLACE TIME BOMB HERE MOVE *A11(DEAD),A0 JRNZ DI ;PLACE BOMB ON GROUND CREATE BMBPID,TBOMBD2 MOVI SETDWN,A0 ;SET DOWN SND CALLA ONESND DEC A10 JRZ DI NOBM SLEEPK 25 JRUC DB2 EXTRA: ;A0=PLYR ;A8=ICON MMTM SP,A1,A2,A3,A4,A5,A6,A7 MOVE *A8(OIMG),A1,L CMPI ORCHINT,A1 ;HINTS JRZ AWARP CMPI SPIN1,A1 ;WARP JRZ AWARP CMPI MAPBUTN,A1 JRNZ EX1 ;THIS IS A MAPBUTN MOVI BGDO,A7 MOVK 1,A0 MOVE A0,@HALT EX2 MOVE *A8(OPLINK),A0,L CLR A1 CALLA XFERPROC MOVE *A8(OFLAGS),A0 ORI M_NOCOLL,A0 MOVE A0,*A8(OFLAGS) EX3 MOVK 1,A0 MOVE A0,@OUT_FLG NOPE MMFM SP,A1,A2,A3,A4,A5,A6,A7 RETS AWARP MOVE @DONT_WARP,A7 ;NEUTRON BMB BLOWING UP! JRNZ EX3 MOVI COMEOUT,A7 MOVE A0,A9 JRUC EX2 EX1 CMPI PLAYER,A1 JRNZ NOPE ;FREE MAN ICON TOUCHED MOVE *A0(OPLINK),A10,L CREATE0 FLASHME MOVE *A10(PNUM),A10 MOVI P1DATA,A2 CMPI 1,A10 JRZ TAG1 MOVI P2DATA,A2 TAG1 CALLA DO_EXTRA ; MOVE *A8(OPLINK),A0,L ; JRZ TAG2 ;BR=BONUS MAN SITTING INSIDE A WARP ;CHECK TO SEE IF PIXSCAN BIT IS SET! ;IF SO, WE HAVE A BONUS MAN IN A WARP! MOVE *A8(OFLAGS),A0 BTST B_PIXSCAN,A0 ;.EQU 10 JRNZ TAG2 ; ; MOVE *A8(OYPOS),A0 ;;CHECK IF WARP LOCKDOWN FREE MAN ; CMPI 127+200+60,A0 ; JRNZ TAG1A ; MOVE *A8(OXPOS),A0 ; CMPI 180+200-3,A0 ; JRZ TAG2 ; CMPI 220+200-3,A0 ; JRZ TAG2 ;TAG1A MOVE @FREETOT,A0 INC A0 MOVE A0,@FREETOT JRUC FLYCONT TAG2 CLR A11 JRUC FLYCONTA KEYON: ;PLAYER NOW CARRIES KEY ;A0=PLYR ;A8=ICON MMTM SP,A1,A2,A3,A4,A5,A6,A7 MOVE *A0(OPLINK),A10,L CREATE0 FLASHME MOVE *A10(PNUM),A10 MOVI P1DATA,A2 ; MOVE A2,@MAPON MOVI KEYPT,A1 CMPI 1,A10 JRZ KEY1 MOVI P2DATA,A2 KEY1 MOVE *A2(TKEYS),A0 INC A0 MOVE A0,*A2(TKEYS) CALLA SCRADD2 MOVI KEYSND,A0 ;KEY VOICE CALL CALLA ONESND FLYCONT MOVK 1,A11 FLYCONTA MOVI CLSDEAD,A0 MOVE A0,*A8(OID) MOVI DMAWNZ|M_NOCOLL,A0 MOVE A0,*A8(OFLAGS) MOVI 300,A0 MOVE A0,*A8(OZPOS) MOVE *A8(OPLINK),A0,L DEC A10 FLYCONT2 MOVI ICONPID,A1 MOVI INHERE,A7 ;FLOAT TOWARD SCORE BOARD CALLA XFERPROC MOVK 1,A0 MOVE A0,@OUT_FLG MMFM SP,A1,A2,A3,A4,A5,A6,A7 RETS ONHEAD CMPI P1DATA,A9 JRNZ ONH1 ;P1 CLR A10 MOVE @PLYROBJS,A7,L ONH2 MOVE *A7(OXVAL),A0,L CLR A11 SUBI [1,0],A0 MOVE *A7(OYVAL),A1,L ADDI [1,0],A1 MOVI PLAYER,A2 MOVI 300,A3 MOVI DMAWNZ|M_NOCOLL,A4 MOVI CLSDEAD,A5 CLR A6 CLR A7 CALLA BEGINOBJ2 MOVI ICONPID,A0 MOVE A0,*A13(PROCID) SLEEPK 20 ;SHOW HIM! JAUC INHERE ONH1 MOVE @PLYROBJS+32,A7,L MOVK 1,A10 JRUC ONH2 TCSH: ;TOUCH CASH ON FLOOR ;A0=PLYR ;A8=BMB IMG MMTM SP,A1,A2,A3,A4,A5,A6,A7 MOVE *A0(OPLINK),A0,L MOVE *A0(PNUM),A10 MOVI P1DATA,A1 DEC A10 JRZ X0 MOVI P2DATA,A1 X0 MOVE *A8(OIMG),A0,L CMPI DET1,A0 JRNZ NOT_BMB ;PLAYER PICKED UP EXTRA BOMB PUSH A0 MOVI P1DATA+BMB_CNT,A0 MOVE A10,A10 JRZ TBMB0 MOVI P2DATA+BMB_CNT,A0 TBMB0 CALLR ADDBMB PULL A0 MOVI SCASH2,A0 JRUC X2A NOT_BMB CMPI PLAYER,A0 ;FREE MAN? JRNZ NOTMAN MOVI P1DATA,A2 MOVE A10,A10 JRZ TKEY10 MOVI P2DATA,A2 TKEY10 CALLA DO_EXTRA ;DO_EXTRA ;EXTRA MAN ;A2 = P1DATA OR P2DATA JRUC X2AA NOTMAN CMPI KEY,A0 JRNZ NOT_KEY MOVI P1DATA,A2 MOVI KEYPT,A1 MOVE A10,A10 JRZ TKEY1 MOVI P2DATA,A2 TKEY1 MOVE *A2(TKEYS),A0 INC A0 MOVE A0,*A2(TKEYS) CALLA SCRADD2 MOVI KEYSND,A0 ;KEY VOICE CALL JRUC X2A NOT_KEY CMPI USFLG,A0 JRNZ X1 MOVE *A1(TFLAGS),A0 ;TOTAL FLAGS PICKED UP INC A0 MOVE A0,*A1(TFLAGS) JRUC X2 X1 MOVE *A1(CASHCNT),A0 INC A0 MOVE A0,*A1(CASHCNT) X2 MOVE @WAVE,A0 CMPI 40,A0 JRNZ X3Z ;PLEASURE DOME CASH MOVI P1DATA,A2 MOVI PLSRPTS,A1 ;PLEASURE DOME PNTS MOVE A10,A10 JRZ TPL MOVI P2DATA,A2 TPL CALLA SCRADD2 ;SUBTRACT OUT TWPNS PICKED UP X3Z MOVI SCASH,A0 ;GET CASH PICKUP SND X2A CALLA ONESND X2AA MOVE *A1(TWPNS),A0 DEC A0 MOVE A0,*A1(TWPNS) MOVI CLSDEAD,A0 MOVE A0,*A8(OID) MOVI DMAWNZ|M_NOCOLL,A0 MOVE A0,*A8(OFLAGS) MOVI 500,A0 ;300 MOVE A0,*A8(OZPOS) MOVE *A8(OPLINK),A0,L JRZ X3 CALLA KILL X3 ;JEWEL ON GROUND JUMPS IN HERE ;A10=0 OR 1 FOR PLYR # ;A8=ICON IMG ;A11=1 IF FROM KEY FLOATING TO SCORE BOARD CLR A11 CREATE FUTUREPID,INHERE MMFM SP,A1,A2,A3,A4,A5,A6,A7 RETS ;CSHSND .LONG SCASH1,SCASH2,SCASH3,SCASH4,SCASH5 ; .LONG SCASH4,SCASH2,SCASH5 BMBON: ;PLAYER PICKED UP EXTRA BOMB ;A0=PLYR ;A8=BMB IMG MMTM SP,A1,A2,A3,A4,A5,A6,A7 MOVE *A0(OPLINK),A0,L MOVE *A0(PNUM),A10 MOVI SCASH2,A0 CALLA ONESND MOVI P2DATA+BMB_CNT,A0 CMPI 1,A10 JRNZ FLY MOVI P1DATA+BMB_CNT,A0 FLY CALLR ADDBMB MOVI CLSDEAD,A0 MOVE A0,*A8(OID) MOVI DMAWNZ|M_FLIPH|M_NOCOLL,A0 MOVE A0,*A8(OFLAGS) MOVI 300,A0 MOVE A0,*A8(OZPOS) MOVE *A8(OPLINK),A0,L DEC A10 CLR A11 JRUC FLYCONT2 ADDBMB MOVE *A0,A2,W ;@P1DATA+BMB_CNT,A2 CMPI 15,A2 ;CAN CARRY MAXIMUM OF 18 BMBS JRNC NOADD INC A2 MOVE A2,*A0,W ;@P1DATA+BMB_CNT NOADD RETS FLASHME ;A10=PROC OF PLYR TO FLASH (TORSO STRUCTURE) MOVE *A10(TSO_PTR),A8,L MOVE *A10(LEG_PTR),A11,L ; MOVE *A8(OPAL),A10,W ;GIVE THESE IMAGES OTHER PAL MOVI nup2a,A0 CALLA GETFPAL ;GET A COLOR MAP ASSIGNMENT MOVE A0,*A8(OPAL),W ;STORE THE NEW PALETTE MOVE A0,*A11(OPAL),W ;STORE THE NEW PALETTE SLEEPK 8 ;GIVE THESE IMAGES OTHER PAL MOVI nup1,A0 MOVE *A10(PNUM),A1 CMPI 1,A1 JRZ XS MOVI nup2,A0 XS CALLA GETFPAL ;GET A COLOR MAP ASSIGNMENT MOVE A0,*A8(OPAL),W ;STORE THE NEW PALETTE MOVE A0,*A11(OPAL),W DIE SHOEON: ;A8=SHOE ICON ;FAST SHOES ;REDUCE MMTM!!! MMTM SP,A1,A7,A9,A10 MOVE *A0(OPLINK),A10,L PUSH A0 CREATE0 FLASHME PULL A0 MOVE *A10(LEG_PRC),A9,L MOVE *A10(PNUM),A7 MOVE *A8(OIMG),A10,L CMPI SHOES,A10 JRZ BOOTS ;PICKED UP TENNIS SHOES! MOVI 08280H,A1 CMPI 1,A7 JRZ SM15 MOVE @timerp2sd,A7 ;Player 2 seconds since death CMPI 80,A7 JRLT SH3 MOVI 081C0H,A1 JRUC SH3 SM15 MOVE @timerp1sd,A7 ;Player 1 seconds since death CMPI 80,A7 JRLT SH3 MOVI 081C0H,A1 JRUC SH3 BOOTS MOVE *A9(SHOECNT),A1 JRZ SHOE2 BTST 15,A1 JRZ SH2 ;HAVE TENNIS SHOES ON! TAKE'EM OFF SHOE2 MOVE A0,A10 CREATE0 FLOAT SH2 MOVI 0A0H,A1 ;150 ;TIME SHOES ARE ON SH3 MOVE A1,*A9(SHOECNT),W CALLR CLNICN MOVI FEET,A0 CALLA ONESND MMFM SP,A1,A7,A9,A10 RETS FEET .WORD >F06E,>18,>80CA,0 ;FAST FEET PICKUP FLOAT ;A10=LEG IMG ;A9=LEG PROCESS MOVE *A9(TSO_PTR),A8,L MOVK 15,A11 FLT2 SLEEPK 8 MOVE *A9(SHOECNT),A0 JRZ DI BTST 15,A0 JRNZ DI MOVE *A10(OYPOS),A0 XORI 1,A0 MOVE A0,*A10(OYPOS) DSJ A11,FLT2 MOVK 15,A11 MOVE A8,A0 MOVE A10,A8 CALLA GETANIXY MOVE *A8(OFLAGS),A4,W ORI M_NOCOLL,A4 CALLA GANISAG MOVE A0,A8 ;TURN BACK ON TORSO OBJECT JRUC FLT2 DI DIE SMRTON: ;SMART BOMB EVERYTHING ON SCREEN MMTM SP,A1,A7,A10 MOVE A0,A9 MOVE *A0(OPLINK),A10,L CREATE0 FLASHME PUSH A9 CALLR CLNICN PULL A9 MOVI 100,A0 ;230 MOVE *A10(PNUM),A1 CMPI 1,A1 JRZ SM1T ;GOOD PLAYERS WILL GET SMART BOMB 80% DUD RATE .REF timerp2sd,timerp1sd,timerp1,timerp2 MOVE @timerp2,A1 CMPI 360,A1 JRGE MKHRD01 ;IF CURRENT GAME IS TOO LONG! MOVE @timerp2sd,A1 ;Player 2 seconds since death CMPI 90,A1 JRLT NOCHNG JRUC MKHRD01 SM1T MOVE @timerp1,A1 CMPI 360,A1 JRGE MKHRD01 ;IF CURRENT GAME IS TOO LONG! MOVE @timerp1sd,A1 ;Player 1 seconds since death CMPI 90,A1 JRLT NOCHNG MKHRD01 MOVI 450,A0 NOCHNG CALLA RANDPER JRNC ZSM1 MOVE @WAVE,A0 JRZ ZSM1 CMPI 10,A0 JRZ ZSM1 ;DUD! CREATE0 DODUD MOVI WHAWHA,A0 CALLA ONESNDOVR JRUC XSM1 WHAWHA .WORD >FBEE,90,>8088,0 ;WHAWHA ZSM1 CREATE0 DOBINGO CREATE0 SBSND MOVE @WAVE,A0 SUBK 32,A0 JRZ XSM1 CREATE0 SBOMB MOVI 30,A10 CALLA SHAKER XSM1 MMFM SP,A1,A7,A10 RETS SBSND MOVI SALTXP4,A0 MOVK 2,A1 ;REPEAT IT 3 TIMES CALLA SNDLD ;GO DO IT JSRP BOOMS MOVI TOTCARN,A0 ;SPEECH CALLA ONESND DIE BOOMS MOVI SEXP2HI,A0 MOVK 1,A1 ;REPEAT IT 3 TIMES CALLA SNDLD ;GO DO IT SLEEPK 5 MOVI SEXP2HI,A0 MOVK 1,A1 ;REPEAT IT 3 TIMES CALLA SNDLD ;GO DO IT SLEEPK 5 MOVI SEXP2HI,A0 MOVK 1,A1 ;REPEAT IT 3 TIMES CALLA SNDLD ;GO DO IT SLEEPK 5 MOVI SEXP2HI,A0 MOVK 1,A1 ;REPEAT IT 3 TIMES CALLA SNDLD ;GO DO IT SLEEPK 21 RETP SBOMB ;SMART BOMB ;A9=PLYR IMG PTR WHO GOT ME CLR A0 MOVE A0,@EXPCNT ;SMART BOMB EXP CNT - MAX OUT AT 15! MOVE *A9(OPLINK),A0,L MOVE *A0(PNUM),A0 MOVI P1DATA,A9 DEC A0 JRZ BAD0 MOVI P2DATA,A9 ;A9=P1 OR P2DATA FOR SCORING SMART BOMB POINTS BAD0 MOVI CLSENMY|TYPHULK,A0 MOVI 0FFFFH,A1 CALLA EXISTOBJ JRZ BAD10 ;FOUND A HULK MOVE A0,A8 CALLA KILL_H1 ;KILL_HULK JRUC BAD0 BAD10 CLR A0 MOVE A0,@HULK_CNT BAD1 MOVI CLSENMY|TYPFND,A0 MOVI 0FFFFH,A1 CALLA EXISTOBJ JRZ BAD2A ;FOUND A FIEND MOVE A0,A8 CALLA KILL_F2 ;KILL_FIEND JRUC BAD1 BAD2A CLR A0 MOVE A0,@FND_CNT BAD2 MOVI CLSENMY|TYPGOO,A0 MOVI 0FFFFH,A1 CALLA EXISTOBJ JRZ BAD3 ;FOUND A GOOB MOVE A0,A8 MOVE *A8(OPLINK),A0,L CALLA PEXIST JRZ NOK CALLA KILL NOK CALLA DELOBJA8 JRUC BAD2 BAD3 MOVI CLSENMY|TYPGRW,A0 MOVI 0FFFFH,A1 CALLA EXISTOBJ JRZ BAD4 ;FOUND A HULK GROWING MOVE A0,A8 CALLA KILL_H1 ;KILL_HULK JRUC BAD3 BAD4 MOVI CLSENMY|TYPLAYR,A0 MOVI 0FFFFH,A1 CALLA EXISTOBJ JRZ BAD5 ;FOUND A MINE LAYER MOVE A0,A8 CALLA KILL_LY ;KILL MINE LAYER TOO! JRUC BAD4 BAD5 MOVI CLSPLYR|TYPHLPR|SUBLAY,A0 MOVI 0FFFFH,A1 CALLA EXISTOBJ JRZ BAD6 MOVE *A0(OIMG),A8,L ; CMPI T72TNK,A8 ; JRZ BAD6 ;BR=DON'T SMART BOMB T72 TANK! ; CMPI BTR60,A8 ; JRZ BAD6 ;BR=DON'T SMART BOMB BTR60! ; CMPI BTRECK,A8 ; JRZ BAD6 ;BR=DON'T SMART BOMB BTR60 WRECK! ; CMPI JEEP,A8 ; JRZ BAD6 ;BR=DON'T SMART BOMB JEEP! ; CMPI JEEP2,A8 ; JRZ BAD6 ;BR=DON'T SMART BOMB JEEP! ; CMPI JEEP4,A8 ; JRZ BAD6 ;BR=DON'T SMART BOMB JEEP! ; CMPI SCUD1,A8 ; JRZ BAD6 ;BR=DON'T SMART BOMB SCUD TRUCK! ; CMPI NEUTRONB,A8 ; JRZ BAD6 ;BR=DON'T SMART BOMB NEUTBONB! ; CMPI AKHLIMO,A8 ; JRZ BAD6 MOVI TANK_LIST,A2 LOOP MOVE *A2+,A3,L JRZ BAD6 CMP A8,A3 JRNZ LOOP ;FOUND A MINE LAYER WITH CLSPLYR BIT SET FOR A MOMENT! MOVE A0,A8 CALLA KILL_LY ;KILL MINE LAYER TOO! JRUC BAD5 TANK_LIST .LONG MTNK10,RTNK,MTNK11,MTNK12,MTNK12B,MTNK6 .LONG MTNK6B,MTNK7,MTNK8,MTNK9,MTNK9B,0 BAD6 MOVI CLSENMY|TYPAHMD,A0 MOVI 0FFFFH,A1 CALLA EXISTOBJ JRZ BAD7A MOVE A0,A8 CALLA KILL_H1 ;KILL HULK AS WELL AS AHMED JRUC BAD6 BAD7A CLR A0 MOVE A0,@AHMD_CNT BAD7 MOVI CLSENMY|TYPLAYR|SUBFLM,A0 MOVI 0FFFFH,A1 CALLA EXISTOBJ JRZ BAD8 ;FOUND A FLAME CALLA DELOBJ JRUC BAD7 BAD8 movi CLSENMY|TYPSL,a0 movi >ff00,a1 calla EXISTOBJ jrz BAD9 move a0,a8 calla slt_smartbomb jruc BAD8 BAD9 movi SHRAPPID,a0 calla KIL1C clr a0 move a0,@SKIPR_CNT ; ;INSERT OTHERS HERE ; ;HULKFIX MOVI HULKPID,A0 ; CLR A1 ; NOT A1 ; CALLA EXISTP ;* Z BIT SET = NO MATCH, A0 = 0 ;* Z BIT CLR = MATCH, A0 = PTR TO PROCESS ; JRZ BADCLN ; MOVE A0,A2 ; move *A0(PA8),A0,L ; CALLA ISOBJ ;* Z BIT SET = NO OBJECT, A0 = 0 * ;* Z BIT CLR = NO OBJECT, A0 = PTR TO OBJECT * ; JRZ KILLIT ; MOVE *A0(OID),A1 ; CMPI CLSDEAD,A1 ; JRZ HULKFIX ; CMPI CLSENMY|TYPGRW,A1 ; JRZ HULKFIX ; CMPI CLSENMY|TYPHULK,A1 ; JRZ HULKFIX ;KILLIT MOVE A2,A0 ; CALLA KILL ; JRUC HULKFIX BADCLN MOVI CLSENMY|TYPSHOT,A0 MOVI 0FFFFH,A1 CALLA EXISTOBJ JRZ BADO ;FOUND A CBALL/SHRAPNEL ;NO SCORE MOVE A0,A8 ;ALSO USED FOR SHRAPNEL FROM FAT MAN MOVE *A8(OPLINK),A0,L JREQ BADCLN CLR A1 MOVE A1,*A8(OPLINK),L CALLA KILL CALLA DELOBJA8 JRUC BADCLN BADO ;RESET ALL CNTS! DIE SNDA MOVI GETWPN,A0 CALLA ONESND SLEEPK 18H MOVI WOO2,A0 CALLA ONESND DIE ******************************** * Collision code for weapon icons * A0=*Plyr leg obj * A8=*Icon obj NSTPON PUSH a1,a2,a7,a9,a10 MOVK SUBNOSTP,A2 ;BULLET SUBTYPE JRUC ICONIN SPDGON PUSH a1,a2,a7,a9 MOVK SUBSPDG1,A2 ;BULLET SUBTYPE JRUC ICONIN GRENON PUSH a1,a2,a7,a9 MOVK SUBGRND,A2 ;BULLET SUBTYPE JRUC ICONIN FIREON PUSH a1,a2,a7,a9 MOVK SUBTHROW,A2 MOVE @PCNT,A7 SLL 32-2,A7 JRZ ICONIN MOVK SUBFIRE1,A2 ;BULLET SUBTYPE JRUC ICONIN SPRAYON PUSH a1,a2,a7,a9 MOVK SUBSPRY,A2 ;BULLET SUBTYPE ICONIN move *a0(OPLINK),a10,L CALLR DO_CNT CREATE0 SNDA CALLR CLNICN CREATE0 FLASHME PULL a1,a2,a7,a9,a10 RETS ******************************** * Setup new weapon * A2=Weapon # * A10=*Plyr process * Trashes A0-A2,A7,A9 DO_CNT move a2,*a10(WPN_TYP) sll 4,a2 addi TIMERS,a2 movi timerp1,a14 move *a10(PNUM),a1 subk 1,a1 jreq dc40 movi timerp2,a14 dc40 move *a14+,a7 ;Seconds since buyin cmpi 240,a7 jrgt dc150 ;Hard? move *a14,a1 ;Seconds since death cmpi 80,a1 jrlt dc300 ;Normal? dc150 cmpi 290,a7 jrlt dc200 ;No missile? move a0,a9 ;A9=*Plyr leg obj move @PCNT,a0 sll 32-1,a0 jrnz dc200 ;50%? move @WAVE,a0 subk 16,a0 jrlt dc180 ;Msl launch ok? subk 18-16,a0 jrle dc200 ;Bad wave for msl? subi 35-18,a0 jrlt dc200 ;^ dc180 movi MSLSLOWPID,a0 movi -1,a1 calla EXISTP jrnz dc200 CREATE MSLSLOWPID,SPAWN_MISL_GOOD dc200 addi TIMER2-TIMERS,a2 ;Less ammo dc300 move *a2,a1 move a1,*a10(SHOTCNT) rets ;STUFF SHOT CNT FOR THIS WEAPON ;SUBLZR .EQU 0001H ;REGULAR LAZER SHOTS ;SUBSPRY .EQU 0002H ;SPRAY SUB TYPE ;SUBFIRE1 .EQU 0003H ;FIRE BALL WPN ;SUBGRND .EQU 0004H ;GRENADE ;SUBNOSTP .EQU 0005H ;NON STOPPING BULLET ;SUBSPDG1 .EQU 0006H ;MACHINE GUN TYP WPN TIMERS .WORD 0,0,41,60,60,52,110,56 TIMER2 .WORD 0,0,30,45,45,38,70,40 ;FOR GOOD PLAYERS CLNICN MOVE *A8(OFLAGS),A1 ORI M_NOCOLL,A1 MOVE A1,*A8(OFLAGS) MOVE *A8(OPLINK),A0,L MOVE *A0(PTIME),A9 ;TIME IT STILL HAD LEFT TO SLEEP MOVI CLEANUP,A7 MOVI ICONPID,A1 CALLA XFERPROC MOVK 1,A0 MOVE A0,@OUT_FLG RETS DEL_BULL ;DEL BULLET OBJ ;NOW DELETE OBJECT FROM OBJLST MOVE *A8(OPLINK),A0,L ;INC BULLET HIT TOTAL FOR THIS PLAYER MOVI P1DATA,A2 MOVE *A0(MYPLYR),A1 DEC A1 JRZ ADB2 ; SUBK 1,A1 ; JRNZ BUGSKIP MOVI P2DATA,A2 ADB2 MOVE *A2(THITS),A1 INC A1 MOVE A1,*A2(THITS) ;BUGSKIP MOVE A1,@OUT_FLG ;TELL SCANNER TO STOP CALLA KILL CALLA DELOBJA8 RETS KILL_BULLG MOVE @PCNT,A0 sll 32-3,a0 JRNZ KILL_BULL CALLA GETUGH KILL_BULL ; KILL BULLET WITH AN EXPLOSION MOVI REGEXP,A7 KBL MOVE *A8(OPLINK),A0,L ;INC BULLET HIT TOTAL FOR THIS PLAYER ;MYPLYR .EQU PDATA+48 ;UHW PLAYER 1 OR 2 FIRED ME=1 OR 2 MOVI P1DATA,A2 MOVE *A0(MYPLYR),A1 DEC A1 JRZ DB5 SUBK 1,A1 MOVI P2DATA,A2 DB5 MOVE *A2(THITS),A1 INC A1 MOVE A1,*A2(THITS) MOVE A1,@OUT_FLG ;TELL SCANNER TO STOP MOVI BULPID,A1 CALLA XFERPROC MOVE *A8(OFLAGS),A0 ORI M_NOCOLL,A0 MOVE A0,*A8(OFLAGS) RETS SUBR KILL_BULL3 movi cldbpurp_l,a9 movi kb3exp,a7 jruc kb2 cldbpurp_l LWL CLDB1,NEWPALET|2,PURPPAL LW CLDB2,2 LW CLDB3,2 LW CLDB4,2 LW CLD8,2 LW CLD9,2 LW CLD10,2 LWL0 CLD11,2 KILL_BULL2 MOVI FIREEXP,A9 ;FRBALL movi ONON,a7 kb2 MOVE @PCNT,A0 sll 32-2,a0 srl 32-2-5,a0 ADDI TINGLST,A0 MOVE *A0,A0,L CALLA ONESND JRUC KBL TINGLST .LONG TING,TING2,TING3,TING TINGSND MOVE @PCNT,A0 SLL 32-2,A0 SRL 32-7,A0 ;*32 ADDI TINGLST,A0 MOVE *A0,A0,L JAUC ONESND kb3exp move *a8(OYPOS),a0 addk 13,a0 move a0,*a8(OYPOS) movi 160,a4 jruc re10 REGEXP ;REGULAR EXPLOSION HERE MOVI FRBALL,A9 ;FRBALL MOVI 180,A4 re10 MOVE A4,*A8(OZPOS) ONON MOVE *A8(OXVEL),A4,L sra 2,a4 MOVE A4,*A8(OXVEL),L MOVE *A8(OYVEL),A4,L sra 2,a4 RG4 MOVE A4,*A8(OYVEL),L jauc FRQDELDIE ;EXPLODE BULLET NOW! REGEXP2 MOVI FIREEXP,A9 ;FRBALL JRUC ONON FIREEXP LWL ABLST1,NEWPALET|3,TNKPAL LW ABLST2,3 LW ABLST3,3 LW ABLST4,3 LW ABLST5,3 LW ABLST6,3 LWL0 ABLST7,3 FRBALL LW FRBAL1,2 ;BULLET FIRE BALL EXPLOSION LW FRBAL2,2 LWL0 FRBAL3,2 FRBL LW EXPb1,5 LW EXPb2,5 LW EXPb3,4 LW EXPb4,4 LWL0 EXPb5,4 FRBLBIG LWL THROW1,NEWPALET|4,BLUBOOM LW THROW2,4 LW THROW3,4 LW THROW4,3 LW THROW5,3 LW THROW6,3 LW THROW7,3 LW THROW8,3 LW THROW9,3 LW THROW10,3 LW THROW11,2 LWL0 THROW12,2 ; LWL0 THROW13,3 BULYV .LONG -BLTYVEL,-BLTYVEL,0,BLTYVEL,BLTYVEL,BLTYVEL,0,-BLTYVEL BULXV .LONG 0,BLTXVEL,BLTXVEL,BLTXVEL,0,-BLTXVEL,-BLTXVEL,-BLTXVEL BUL3AYV .LONG -BL3YVEL,-BL3YVEL,0,BL3YVEL,BL3YVEL,BL3YVEL,0,-BL3YVEL BUL3AXV .LONG 0,BL3XVEL,BL3XVEL,BL3XVEL,0,-BL3XVEL,-BL3XVEL,-BL3XVEL BUL5YV .LONG -BLT5YVEL,-BLT5YVEL,0,BLT5YVEL,BLT5YVEL,BLT5YVEL,0,-BLT5YVEL BUL5XV .LONG 0,BLT5XVEL,BLT5XVEL,BLT5XVEL,0,-BLT5XVEL,-BLT5XVEL,-BLT5XVEL GRNYV .LONG -GRNYVEL,-GRNYVEL,0,GRNYVEL,GRNYVEL,GRNYVEL,0,-GRNYVEL GRNXV .LONG 0,GRNXVEL,GRNXVEL,GRNXVEL,0,-GRNXVEL,-GRNXVEL,-GRNXVEL ;GRNYV2 .LONG -GRNYVEL2,-GRNYVEL2,0,GRNYVEL2,GRNYVEL2,GRNYVEL2,0,-GRNYVEL2 ;GRNXV2 .LONG 0,GRNXVEL2,GRNXVEL2,GRNXVEL2,0,-GRNXVEL2,-GRNXVEL2,-GRNXVEL2 BUL2YV .LONG -BLTYVEL,-BLTYVEL,-(BLTYVEL/2),BLTYVEL/2,BLTYVEL .LONG BLTYVEL,BLTYVEL/2,-BLTYVEL BUL2XV .LONG -(BLTXVEL/2),BLTXVEL/2,BLTXVEL,BLTXVEL,BLTXVEL/2 .LONG -(BLTXVEL/2),-BLTXVEL,-(BLTXVEL/2) BUL3YV .LONG -BLTYVEL,-(BLTYVEL/2),BLTYVEL/2,BLTYVEL,BLTYVEL .LONG BLTYVEL/2,-(BLTYVEL/2),-(BLTYVEL/2) BUL3XV .LONG BLTXVEL/2,BLTXVEL,BLTXVEL,BLTXVEL/2,-(BLTXVEL/2) .LONG -BLTXVEL,-BLTXVEL,-BLTXVEL BXL .LONG -010000H,008000H,0018000H,08000H,-010000H,-28000H,-30000H,-28000H BXH .LONG 0010000H,028000H,030000H,28000H,010000H,-08000H,-018000H,-08000H BYL .LONG -028000H,-28000H,-010000H,08000H,018000H,008000H,-010000H,-28000H BYH .LONG -018000H,-08000H,0010000H,28000H,28000H,028000H,0010000H,-08000H WHICHXV .LONG BULXV,BUL2XV,BUL3XV WHICHYV .LONG BULYV,BUL2YV,BUL3YV ;SUBLZR .EQU 0001H ;REGULAR LAZER SHOTS ;SUBSPRY .EQU 0002H ;SPRAY SUB TYPE ;SUBFIRE1 .EQU 0003H ;FIRE BALL WPN ;SUBGRND .EQU 0004H ;GRENADE ;SUBNOSTP .EQU 0005H ;NON STOPPING BULLET ;SUBSPDG1 .EQU 0006H ;MACHINE GUN TYP WPN ;SUBTHROW .EQU 0007H ;BIG FLAME THROWER WPLIST ;SUB BULLET TYPES .LONG NORM,NORM,SPRY,FIREB,GREND,NSTP,MGUN,THROWR ******************************** * Starts a weapon, called from torso process STRT_WPN ;A8=*Player obj, A9=Dir 1-8 MOVE *A13(WPN_TYP),A1 JRZ CONTA MOVE *A13(SHOTCNT),A0 ;NONSTANDARD WEAPON WILL DEC SHOTCNT DEC A0 MOVE A0,*A13(SHOTCNT) JRNZ CONTA MOVE A0,*A13(WPN_TYP) CONTA SLL 5,A1 ADDI WPLIST,A1 MOVE *A1,A0,L MOVE *A13(PNUM),A11 ;A11=Player who fired me MOVE A11,A2 MOVI P1DATA,A10 DEC A2 JRZ CONTB MOVI P2DATA,A10 CONTB MOVE *A10(TSHOTS),A2 INC A2 MOVE A2,*A10(TSHOTS) JUMP A0 ************************************************************************** NORM ;WEAPON 1 - NORMAL FIRE POWER CREATE BULPID,WPN1 ;BULPID ; MOVE *A13(LSRPTR),A0,L ;HELPER ON FLAG 1=YES ; JRZ NOLASER ; CREATE BULPID,WPN1A ;NOLASER MOVI SHOT,A0 ;RIFLE SHOT jauc ONESND NSTP CREATE BULPID,WPN5 CREATE BULPID,WPN5A MOVE *A10(TSHOTS),A2 INC A2 MOVE A2,*A10(TSHOTS) MOVI THUMP,A0 jauc ONESND MGUN ;MACHINE GUN CREATE BULPID,WPN6 MOVI THUMP2,A0 jauc ONESND FIREB ;FIRE BALL WEAPON MOVI FRBL,A10 CREATE BULPID,WPN3 MOVI FLAMSND,A0 jauc ONESND THROWR ;BIG GREEN FLAME THROWER MOVI FRBLBIG,A10 CREATE BULPID,WPN3 MOVI FLAMSND,A0 jauc ONESND GREND ;WEAPON 4 - GRENADE WEAPON CREATE BULPID,WPN4 MOVI GRNSND,A0 jauc ONESND SPRY ;SPRAY WEAPON ;WEAPON 2 MOVE *A10(TSHOTS),A2 ADDK 2,A2 MOVE A2,*A10(TSHOTS) CLR A10 CREATE BULPID,WPN2 MOVK 1,A10 CREATE BULPID,WPN2 MOVK 2,A10 CREATE BULPID,WPN2 MOVI SHOT2,A0 ;SPRY jauc ONESND ******************************** SHOT_INIT ;A6=*XVel_t, A7=*YVel_t, A9=Dir 1-8, A11=Player #1-2 move a11,*a13(MYPLYR) move a9,*a13(BLTDIR) subk 1,a9 sll 5,a9 ;A9=(Dir-1)*32 add a9,a6 move *a6,a6,L ;A6=XVel add a9,a7 move *a7,a7,L ;A7=YVel rets ;WEAPON 5 - NON STOPPING BULLET ;NOW STUFF CORRECT BULLET AND CORRECT FLIP INFO WPN5 MOVI BUL5XV,A6 MOVI BUL5YV,A7 CALLR SHOT_INIT MOVE *A8(OXVEL),A2,L ;ADD IN PLAYER VELOCITIES ADD A2,A6 MOVE *A8(OYVEL),A2,L ADD A2,A7 move a9,a2 addi B5_TYP,a2 move *a2,a2,L ;A2=*Img srl 1,a9 ;/2 move a9,a4 addi B1_INFO,a4 ;Has PIXSCAN move *a4,a4 ;A4=FLAGS move *a8(OXVAL),a0,L ;A8=*Torso for player that fired me move *a8(OYVAL),a1,L addi XYOFFSET5,a9 move *a9,a5 sll 16,a5 add a5,a0 ;A0=XVal move *a9(8*16),a5 sll 16,a5 add a5,a1 ;A1=YVal MOVI CLSPLYR|TYPPLBL|SUBNOSTP,A5 JRUC DO_IT ;WEAPON 5A - WITH NON STOPPING BULLET ;NOW STUFF CORRECT BULLET AND CORRECT FLIP INFO WPN5A MOVI BULXV,A6 MOVI BULYV,A7 CALLR SHOT_INIT MOVI BALL6,A2 ;A2=*IMG MOVI DMAWNZ,A4 ;FLAGS IN A4 move *a8(OXVAL),a0,L ;A8=*Torso for player that fired me move *a8(OYVAL),a1,L srl 1,a9 ;/2 addi XYOFFSET5,a9 move *a9,a5 sll 16,a5 add a5,a0 ;A0=XVal move *a9(8*16),a5 sll 16,a5 add a5,a1 ;A1=YVal JRUC SPDCONT ;WEAPON 2 - 3 BULLETS SPRAYED OUT ;NOW STUFF CORRECT BULLET AND CORRECT FLIP INFO WPN2 SLL 5,A10 ;GET VELS FOR THIS PROJECTILE MOVI WHICHXV,A6 ADD A10,A6 MOVE *A6,A6,L MOVI WHICHYV,A7 ADD A10,A7 MOVE *A7,A7,L CALLR SHOT_INIT MOVI CNNBLL,A2 MOVI DMAWNZ,A4 ; MOVI DMAWNZ+M_PIXSCAN,A4 ;TAKE OUT PIXSCAN? ;SPDCONT MOVE *A8(OXVAL),A0,L MOVE *A8(OYVAL),A1,L srl 1,a9 ;/2 addi XYOFFSET2,a9 move *a9,a5 sll 16,a5 add a5,a0 ;A0=XVal move *a9(8*16),a5 sll 16,a5 add a5,a1 ;A1=YVal SPDCONT MOVI CLSPLYR|TYPPLBL|SUBSPRY,A5 JRUC DO_IT WPN3 ;FIRE BALL MOVI FIRE1,A2 ;A2=*IMG MOVI BUL3AXV,A6 MOVI BUL3AYV,A7 CALLR SHOT_INIT MOVE *A8(OXVEL),A4,L ;ADD IN PLAYERS XY VEL TO FLAMES ADD A4,A6 MOVE *A8(OYVEL),A4,L ADD A4,A7 MOVI DMAWNZ,A4 ;A4=FLAGS, NO PIXSCAN MOVE *A8(OXVAL),A0,L MOVE *A8(OYVAL),A1,L srl 1,a9 ;/2 addi XYOFFSET3,a9 move *a9,a5 sll 16,a5 add a5,a0 ;A0=X move *a9(8*16),a5 sll 16,a5 add a5,a1 ;A1=Y MOVI 159,A3 ;A3=ZPOS MOVI CLSPLYR|TYPPLBL|SUBNOSTP,A5 ;A5=ID CALLA BEGINOBJ2 MOVE A10,A9 ;MOVI FRBL,A9 W3_TP CALLR CHK_BULL ;CHECK RECTANGLES JRNC NOH CLR A0 ;HIT MOVE A0,*A8(OXVEL),L MOVE A0,*A8(OYVEL),L JSRP FRANIMQ C32X jauc DELOBJDIE NOH CLR A1 JSRP FRANIM JRC C32X JRUC W3_TP ;WEAPON 6 - MACHINE GUN WPN6 MOVI BULXV,A6 MOVI BULYV,A7 CALLR SHOT_INIT MOVE *A8(OXVEL),A2,L ADD A2,A6 MOVE *A8(OYVEL),A2,L ADD A2,A7 MOVI SPDBL,A2 ;A2=*IMG MOVI DMAWNZ|M_PIXSCAN,A4 ;A4=FLAGS MOVE *A8(OXVAL),A0,L MOVE *A8(OYVAL),A1,L srl 1,a9 ;/2 addi XYOFFSET6,a9 move *a9,a5 sll 16,a5 add a5,a0 ;A0=XVal move *a9(8*16),a5 sll 16,a5 add a5,a1 ;A1=YVal MOVI CLSPLYR|TYPPLBL|SUBSPDG1,A5 JRUC DO_IT * WEAPON 4 - GRENADE WPN4 MOVI GRNXV,A6 MOVI GRNYV,A7 CALLR SHOT_INIT MOVE *A8(OXVEL),A2,L ADD A2,A6 ;A6=XV MOVE *A8(OYVEL),A2,L ADD A2,A7 ;A7=YV MOVI DMAWNZ,A4 MOVI BALL1,A2 ;GRND1 MOVE *A8(OXVAL),A0,L MOVE *A8(OYVAL),A1,L MOVI TOSSDIR,A11 ADD A9,A11 MOVE *A11,A11,L ;LIST OF OFFSET BYTES! MOVI TOSS2DIR,A10 ADD A9,A10 MOVE *A10,A10,L ;LIST OF OFFSET BYTES! srl 1,a9 ;/2 addi XYOFFSET4,a9 move *a9,a5 sll 16,a5 add a5,a0 ;A0=X move *a9(8*16),a5 sll 16,a5 add a5,a1 ;A1=Y MOVI CLSDEAD,A5 ;ID MOVI 253,A3 ;Z PUSH A0 CALLA BEGINOBJ2 PULL A0 PUSH A8 ADDI 0180000H,A1 MOVI GSHAD1,A2 MOVI 58,A3 CALLA BEGINOBJ2 MOVE A8,A9 PULL A8 CLR A7 MOVE A7,*A13(GTMP) W4_TP: MOVE *A13(GTMP),A7 MOVE A7,A1 SLL 5,A1 ADDI TOSSG,A1 MOVE *A1,A1,L JRZ BLWUP CMPI 15,A7 ;19 JRNZ V1 ;SET OID ;TURN ON COLLISIONS ALSO! ; MOVI CLSPLYR|TYPPLBL|SUBGRND,A5 ; MOVE A5,*A8(OID),W V1 MOVI DMAWNZ,A4 ;GET NEW FLAGS (SAME!) CALLA ANI MOVB *A11,A0 ;GET X OFFSET addk 8,a11 MOVB *A10,A2 ;GET X OFFSET addk 8,a10 MOVE *A8(OXPOS),A1,W ADD A0,A1 MOVE A1,*A8(OXPOS),W MOVE *A9(OXPOS),A1,W ADD A2,A1 MOVE A1,*A9(OXPOS),W MOVB *A11,A0 addk 8,a11 MOVB *A10,A2 addk 8,a10 MOVE *A8(OYPOS),A1,W ADD A0,A1 MOVE A1,*A8(OYPOS),W MOVE *A9(OYPOS),A1,W ADD A2,A1 MOVE A1,*A9(OYPOS),W INC A7 MOVE A7,*A13(GTMP) SLEEPK 1 JRUC W4_TP BLWUP: MOVI MTING,A0 ;AUDIO BOMB EXPLODE CALLA ONESND ;GRENADE LANDING ON GROUND BLW2: CLR A0 MOVE A0,*A8(OXVEL),L MOVE A0,*A8(OYVEL),L MOVE A9,A0 ;DELETE SHADOW CALLA DELOBJ ;ABOVE ORCUS MOVI 370,A0 ;EXPLOSION OF GRENADE AT IMPACT MOVE A0,*A8(OZPOS) MOVI CLSPLYR|TYPPLBL|SUBGRND,A5 MOVE A5,*A8(OID),W MOVI FIREEXP,A9 ;FRBALL ; MOVI BLUEEXP,A9 JAUC FRQDELDIE ;WEAPON 1 - NORMAL BULLET WPN1 MOVI BULXV,A6 MOVI BULYV,A7 CALLR SHOT_INIT move a9,a2 addi B1_TYP,a2 move *a2,a2,L ;A2=*IMG srl 1,a9 ;/2 move a9,a4 addi B1_INFO,a4 move *a4,a4 ;A4=FLAGS MOVE *A8(OXVAL),A0,L MOVE *A8(OYVAL),A1,L addi XYOFFSET,a9 move *a9,a5 sll 16,a5 add a5,a0 ;A0=XVal move *a9(8*16),a5 sll 16,a5 add a5,a1 ;A1=YVal MOVI CLSPLYR|TYPPLBL|SUBLZR,A5 ;A5=ID DO_IT MOVI 159,A3 ;A3=ZPOS ;XVEL IN A6 ;YVEL IN A7 CALLA BEGINOBJ2 LP_TP ;REGULAR BULLETS ;COULD DO THIS SCRTST LESS FREQUENTLY! MOVE *A13(AGE),A0 INC A0 MOVE A0,*A13(AGE) sll 32-2,a0 JRNZ C1 MOVI [>0,>0],A2 ;21,20 MOVI [>FF,>1A3],A3 ;FC,173 CALLA SCRTSTG JRZ C1 ;A0=1,2,3 OR 4 WHICH IS RETURNED FROM SCRTSTG! jauc DELOBJDIE C1 CALLR CHK_BULL JRNC NXT CLR A4 MOVE A4,*A8(OXVEL),L MOVI FRBALL,A9 ;FRBALL JRUC RG4 NXT SLEEPK 4 ;SLEEP 2 MAYBE? JRUC LP_TP ;CHECK FOR RECTANGLE COLLISIONS! CHK_BULL MOVE *A8(OXPOS),A4 MOVE *A8(OYPOS),A6 MOVE @BCURRENT,A0,L ;CURRENT RECT LIST JRZ OUT JRUC NEXT0 NEXT3 ADDK 16,A0 NEXT2 ADDK 16,A0 NEXT1 ADDK 16,A0 NEXT0 MOVE *A0+,A1 JRZ OUT CMP A1,A4 JRLT NEXT3 ;IF BRNCH RECT LFT EDGE > PLYR X MOVE *A0+,A1 CMP A1,A6 JRLT NEXT2 ;IF BRNCH RECT TOP EDGE > PLYR Y MOVE *A0+,A1 CMP A1,A4 JRGT NEXT1 ;IF BRNCH RECT RGT EDGE < PLYR X MOVE *A0+,A1 CMP A1,A6 JRGT NEXT0 ;IF BRNCH RECT BOT EDGE < PLYR Y SETC ;HIT RETS OUT CLRC RETS B1_TYP ;NORMAL WEAPON (1) .long BULUP,BULUPLFT,BULLFT,BULUPLFT .long BULUP,BULUPLFT,BULLFT,BULUPLFT B5_TYP ;NON STOPPING BULLET .long B2UP,B245,B2SIDE,B245 .long B2UP,B245,B2SIDE,B245 B1_INFO ;NORMAL WEAPON (1), PIXSCAN! .WORD DMAWNZ+M_PIXSCAN, DMAWNZ+M_FLIPH+M_PIXSCAN .WORD DMAWNZ+M_FLIPH+M_PIXSCAN, DMAWNZ+M_FLIPH+M_FLIPV+M_PIXSCAN .WORD DMAWNZ+M_FLIPV+M_PIXSCAN, DMAWNZ+M_FLIPV+M_PIXSCAN .WORD DMAWNZ+M_PIXSCAN, DMAWNZ+M_PIXSCAN ;SUBLZR .EQU 0001H ;REGULAR LAZER SHOTS ;SUBSPRY .EQU 0002H ;SPRAY SUB TYPE ;SUBFIRE1 .EQU 0003H ;FIRE BALL WPN ;SUBGRND .EQU 0004H ;GRENADE ;SUBNOSTP .EQU 0005H ;NON STOPPING BULLET ;SUBSPDG1 .EQU 0006H ;MACHINE GUN TYP WPN XYOFFSET ;NORMAL WEAPON (1) .word 15,16,25,23,5,3,1,4 ;X .word 0,5,10,22,25,22,10,5 ;Y XYOFFSET2 ;SPRAY WEAPON .word 14,16,25,21,5,5,3,4 ;X .word 5,5,10,22,25,22,10,5 ;Y XYOFFSET3 ;FLAME THROWER .word 15,19,33,24,5,2,1,2 ;X .word 0,1,10,26,32,26,9,1 ;Y XYOFFSET4 ;GRENADE LAUCHER .word 15,10,25,25,5,1,1,11 ;X .word 0,3,1,3,10,3,2,3 ;Y XYOFFSET5 ;NON STOP WEAPON .word 15,16,33,24,5,3,1,6 ;X .word 0,5,4,22,25,22,4,5 ;Y XYOFFSET6 ;MACHINE GUN WEAPON .word 16,20,25,23,7,9,1,4 ;X .word 3,5,10,22,25,20,10,5 ;Y ; 1 ; 8 5 ;7 4 OLD CRAP!!! ; 9 6 ; 2 TOSSDIR .LONG TSUP,TSUPRT,TSRT,TSDNRT,TSDN,TSDNLT,TSLT,TSUPLT TOSS2DIR .LONG TSUP2,TSUPRT2,TSRT2,TSDNRT2,TSDN2,TSDNLT2,TSLT2,TSUPLT2 TOSSG .LONG BALL1,BALL2,BALL3,BALL3,BALL4,BALL5,BALL5,BALL6 .LONG BALL6,BALL7,BALL7,BALL6,BALL6,BALL5,BALL5,BALL4 .LONG BALL4,BALL3,BALL3,BALL2,BALL2,BALL1,0 TSRT .BYTE 3 ;X .BYTE -2 ;Y ADJUST .BYTE 4 .BYTE -2 .BYTE 4 .BYTE -2 .BYTE 5 .BYTE -3 .BYTE 5 .BYTE -3 .BYTE 6 .BYTE -3 .BYTE 6 .BYTE -2 .BYTE 6 .BYTE -2 .BYTE 6 .BYTE 0 .BYTE 6 .BYTE 0 .BYTE 6 .BYTE 0 .BYTE 6 .BYTE 2 .BYTE 6 .BYTE 2 .BYTE 6 .BYTE 3 .BYTE 6 .BYTE 3 .BYTE 6 .BYTE 4 .BYTE 6 .BYTE 5 .BYTE 5 .BYTE 5 .BYTE 4 .BYTE 5 .BYTE 4 .BYTE 4 .BYTE 4 .BYTE 4 .BYTE 3 .BYTE 4 .BYTE 2 .BYTE 3 .BYTE 2 .BYTE 3 TSLT .BYTE -3 .BYTE -2 .BYTE -4 .BYTE -2 .BYTE -4 .BYTE -2 .BYTE -5 .BYTE -3 .BYTE -5 .BYTE -3 .BYTE -6 .BYTE -3 .BYTE -6 .BYTE -2 .BYTE -6 .BYTE -2 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 2 .BYTE -6 .BYTE 2 .BYTE -6 .BYTE 3 .BYTE -6 .BYTE 3 .BYTE -6 .BYTE 4 .BYTE -6 .BYTE 5 .BYTE -5 .BYTE 5 .BYTE -4 .BYTE 5 .BYTE -4 .BYTE 5 .BYTE -4 .BYTE 4 .BYTE -3 .BYTE 4 .BYTE -2 .BYTE 3 .BYTE -2 .BYTE 3 TSUPLT .BYTE 0 .BYTE -5 .BYTE -1 .BYTE -6 .BYTE -2 .BYTE -6 .BYTE -2 .BYTE -6 .BYTE -3 .BYTE -6 .BYTE -3 .BYTE -6 .BYTE -4 .BYTE -6 .BYTE -4 .BYTE -6 .BYTE -4 .BYTE -5 .BYTE -5 .BYTE -5 .BYTE -5 .BYTE -4 .BYTE -6 .BYTE -3 .BYTE -6 .BYTE -3 .BYTE -6 .BYTE -2 .BYTE -6 .BYTE -2 .BYTE -5 .BYTE -2 .BYTE -5 .BYTE -1 .BYTE -4 .BYTE -1 .BYTE -4 .BYTE 0 .BYTE -4 .BYTE 0 .BYTE -3 .BYTE 0 .BYTE -3 .BYTE 0 TSUPRT .BYTE 0 .BYTE -5 .BYTE 1 .BYTE -6 .BYTE 2 .BYTE -6 .BYTE 2 .BYTE -6 .BYTE 3 .BYTE -6 .BYTE 3 .BYTE -6 .BYTE 4 .BYTE -6 .BYTE 4 .BYTE -6 .BYTE 4 .BYTE -5 .BYTE 5 .BYTE -5 .BYTE 5 .BYTE -4 .BYTE 6 .BYTE -3 .BYTE 6 .BYTE -3 .BYTE 6 .BYTE -2 .BYTE 6 .BYTE -2 .BYTE 5 .BYTE -2 .BYTE 5 .BYTE -1 .BYTE 4 .BYTE -1 .BYTE 4 .BYTE 0 .BYTE 4 .BYTE 0 .BYTE 3 .BYTE 0 .BYTE 3 .BYTE 0 TSDNLT .BYTE -1 .BYTE 0 .BYTE -2 .BYTE 0 .BYTE -3 .BYTE 1 .BYTE -4 .BYTE 1 .BYTE -5 .BYTE 2 .BYTE -5 .BYTE 2 .BYTE -6 .BYTE 2 .BYTE -6 .BYTE 3 .BYTE -6 .BYTE 3 .BYTE -6 .BYTE 4 .BYTE -5 .BYTE 4 .BYTE -5 .BYTE 5 .BYTE -4 .BYTE 5 .BYTE -3 .BYTE 6 .BYTE -3 .BYTE 6 .BYTE -2 .BYTE 6 .BYTE -2 .BYTE 6 .BYTE -1 .BYTE 6 .BYTE -1 .BYTE 6 .BYTE -1 .BYTE 6 .BYTE 0 .BYTE 5 .BYTE 0 .BYTE 5 TSDNRT .BYTE 1 .BYTE 0 .BYTE 2 .BYTE 0 .BYTE 3 .BYTE 1 .BYTE 4 .BYTE 1 .BYTE 5 .BYTE 2 .BYTE 5 .BYTE 2 .BYTE 6 .BYTE 2 .BYTE 6 .BYTE 3 .BYTE 6 .BYTE 3 .BYTE 6 .BYTE 4 .BYTE 5 .BYTE 4 .BYTE 5 .BYTE 5 .BYTE 4 .BYTE 5 .BYTE 3 .BYTE 6 .BYTE 3 .BYTE 6 .BYTE 2 .BYTE 6 .BYTE 2 .BYTE 6 .BYTE 1 .BYTE 6 .BYTE 1 .BYTE 6 .BYTE 1 .BYTE 6 .BYTE 0 .BYTE 5 .BYTE 0 .BYTE 5 TSUP .BYTE 0 .BYTE -4 .BYTE 0 .BYTE -5 .BYTE 0 .BYTE -5 .BYTE 0 .BYTE -5 .BYTE 0 .BYTE -5 .BYTE 0 .BYTE -5 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -5 .BYTE 0 .BYTE -5 .BYTE 0 .BYTE -4 .BYTE 0 .BYTE -3 .BYTE 0 .BYTE -2 .BYTE 0 .BYTE -1 .BYTE 0 .BYTE 0 .BYTE 0 .BYTE 0 .BYTE 0 .BYTE 0 TSDN .BYTE 0 .BYTE 0 .BYTE 0 .BYTE 1 .BYTE 0 .BYTE 2 .BYTE 0 .BYTE 3 .BYTE 0 .BYTE 4 .BYTE 0 .BYTE 5 .BYTE 0 .BYTE 5 .BYTE 0 .BYTE 5 .BYTE 0 .BYTE 5 .BYTE 0 .BYTE 6 .BYTE 0 .BYTE 6 .BYTE 0 .BYTE 6 .BYTE 0 .BYTE 6 .BYTE 0 .BYTE 6 .BYTE 0 .BYTE 5 .BYTE 0 .BYTE 5 .BYTE 0 .BYTE 5 .BYTE 0 .BYTE 5 .BYTE 0 .BYTE 5 .BYTE 0 .BYTE 4 .BYTE 0 .BYTE 4 .BYTE 0 .BYTE 4 TSRT2 .BYTE 3 .BYTE 0 .BYTE 4 .BYTE 0 .BYTE 4 .BYTE 0 .BYTE 5 .BYTE 0 .BYTE 5 .BYTE 0 .BYTE 6 .BYTE 0 .BYTE 6 .BYTE 0 .BYTE 6 .BYTE 0 .BYTE 6 .BYTE 0 .BYTE 6 .BYTE 0 .BYTE 6 .BYTE 0 .BYTE 6 .BYTE 0 .BYTE 6 .BYTE 0 .BYTE 6 .BYTE 0 .BYTE 6 .BYTE 0 .BYTE 6 .BYTE 0 .BYTE 6 .BYTE 0 .BYTE 5 .BYTE 0 .BYTE 4 .BYTE 0 .BYTE 4 .BYTE 0 .BYTE 4 .BYTE 0 .BYTE 3 .BYTE 0 .BYTE 2 .BYTE 0 .BYTE 2 .BYTE 0 TSLT2 .BYTE -3 .BYTE 0 .BYTE -4 .BYTE 0 .BYTE -4 .BYTE 0 .BYTE -5 .BYTE 0 .BYTE -5 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -5 .BYTE 0 .BYTE -4 .BYTE 0 .BYTE -4 .BYTE 0 .BYTE -4 .BYTE 0 .BYTE -3 .BYTE 0 .BYTE -2 .BYTE 0 .BYTE -2 .BYTE 0 TSUPLT2 .BYTE -5+5 .BYTE -1-10 .BYTE -3 .BYTE -3 .BYTE -4-5 .BYTE -4+10 .BYTE -4 .BYTE -5 .BYTE -4 .BYTE -5 .BYTE -4 .BYTE -4 .BYTE -4 .BYTE -5 .BYTE -4 .BYTE -5 .BYTE -4 .BYTE -4 .BYTE -4 .BYTE -5 .BYTE -4 .BYTE -5 .BYTE -4 .BYTE -4 .BYTE -4 .BYTE -5 .BYTE -4 .BYTE -5 .BYTE -4 .BYTE -4 .BYTE -4 .BYTE -5 .BYTE -4 .BYTE -5 .BYTE -4 .BYTE -4 .BYTE -4 .BYTE -5 .BYTE -4 .BYTE -4 .BYTE -4 .BYTE -5 .BYTE -2 .BYTE -4 TSUPRT2 .BYTE 5+5 .BYTE -1-10 .BYTE 3 .BYTE -3 .BYTE 4-5 .BYTE -4+10 .BYTE 4 .BYTE -5 .BYTE 4 .BYTE -5 .BYTE 4 .BYTE -4 .BYTE 4 .BYTE -5 .BYTE 4 .BYTE -5 .BYTE 4 .BYTE -4 .BYTE 4 .BYTE -5 .BYTE 4 .BYTE -5 .BYTE 4 .BYTE -4 .BYTE 4 .BYTE -5 .BYTE 4 .BYTE -5 .BYTE 4 .BYTE -4 .BYTE 4 .BYTE -5 .BYTE 4 .BYTE -5 .BYTE 4 .BYTE -4 .BYTE 4 .BYTE -5 .BYTE 4 .BYTE -4 .BYTE 4 .BYTE -5 .BYTE 2 .BYTE -4 TSDNLT2 .BYTE -3 .BYTE 11 .BYTE -3 .BYTE 3 .BYTE -3 .BYTE 2 .BYTE -4 .BYTE 3 .BYTE -3 .BYTE 3 .BYTE -4 .BYTE 3 .BYTE -3 .BYTE 3 .BYTE -4 .BYTE 3 .BYTE -3 .BYTE 2 .BYTE -3 .BYTE 3 .BYTE -3 .BYTE 3 .BYTE -3 .BYTE 2 .BYTE -4 .BYTE 3 .BYTE -3 .BYTE 2 .BYTE -3 .BYTE 3 .BYTE -3 .BYTE 2 .BYTE -4 .BYTE 3 .BYTE -3 .BYTE 2 .BYTE -3 .BYTE 2 .BYTE -3 .BYTE 2 .BYTE -3 .BYTE 2 .BYTE -3 .BYTE 2 TSDNRT2 .BYTE 3 .BYTE 11 .BYTE 3 .BYTE 3 .BYTE 3 .BYTE 2 .BYTE 4 .BYTE 3 .BYTE 3 .BYTE 3 .BYTE 4 .BYTE 3 .BYTE 3 .BYTE 3 .BYTE 4 .BYTE 3 .BYTE 3 .BYTE 2 .BYTE 3 .BYTE 3 .BYTE 3 .BYTE 3 .BYTE 3 .BYTE 2 .BYTE 4 .BYTE 3 .BYTE 3 .BYTE 2 .BYTE 3 .BYTE 3 .BYTE 3 .BYTE 2 .BYTE 4 .BYTE 3 .BYTE 3 .BYTE 2 .BYTE 3 .BYTE 2 .BYTE 3 .BYTE 2 .BYTE 3 .BYTE 2 .BYTE 3 .BYTE 2 TSUP2 .BYTE 0 .BYTE -4 .BYTE 0 .BYTE -5 .BYTE 0 .BYTE -5 .BYTE 0 .BYTE -5 .BYTE 0 .BYTE -5 .BYTE 0 .BYTE -5 .BYTE 0 .BYTE -5 .BYTE 0 .BYTE -5 .BYTE 0 .BYTE -5 .BYTE 0 .BYTE -5 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -6 .BYTE 0 .BYTE -5 .BYTE 0 .BYTE -5 .BYTE 0 .BYTE -4 .BYTE 0 .BYTE -4 TSDN2 .BYTE 0 .BYTE 0 .BYTE 0 .BYTE 1 .BYTE 0 .BYTE 2 .BYTE 0 .BYTE 3 .BYTE 0 .BYTE 4 .BYTE 0 .BYTE 5 .BYTE 0 .BYTE 5 .BYTE 0 .BYTE 5 .BYTE 0 .BYTE 5 .BYTE 0 .BYTE 5 .BYTE 0 .BYTE 5 .BYTE 0 .BYTE 5 .BYTE 0 .BYTE 4 .BYTE 0 .BYTE 4 .BYTE 0 .BYTE 3 .BYTE 0 .BYTE 3 .BYTE 0 .BYTE 3 .BYTE 0 .BYTE 3 .BYTE 0 .BYTE 3 .BYTE 0 .BYTE 2 .BYTE 0 .BYTE 1 .BYTE 0 .BYTE 1 .EVEN FLAMING ;MAYBE ALIGN WITH THIS (A10) AHMED GUY AS I FLAME ;A10 IS FLAME THROWER AHMED PNTR MOVI TORCH,A0 CALLA ONESND MOVE A9,*A13(PDATA) MOVK 2,A0 MOVE A0,*A13(PDATA+32) MOVE A8,*A13(PDATA+64),L ;STUB PC BASE MOVI BLASTA,A0 MOVE A0,*A13(PDATA+96),L MOVE *A8(OXVAL),A0,L MOVE *A8(OYVAL),A1,L MOVE *A8(OFLAGS),A4 MOVI AHMEDBLST1,A2 MOVI 160,A3 MOVI CLSENMY|TYPLAYR|SUBFLM,A5 CLR A6 CLR A7 CALLA BEGINOBJ2 MOVE A8,*A13(PDATA+128),L MOVI BLASTA2,A0 MOVE A0,*A13(PDATA+160),L MOVE *A8(OXVAL),A0,L MOVE *A8(OYVAL),A1,L MOVE *A8(OFLAGS),A4 MOVI AHMEDBLST1,A2 MOVI 160,A3 MOVI CLSENMY|TYPLAYR|SUBFLM,A5 CLR A6 CLR A7 CALLA BEGINOBJ2 MOVE A8,*A13(PDATA+192),L MOVI BLASTA3,A0 MOVE A0,*A13(PDATA+224),L DSF0 MOVE *A13(PDATA+64),A8,L MOVE *A13(PDATA+96),A9,L MOVK 4,A1 JSRP FRANIM MOVE A9,*A13(PDATA+96),L MOVE *A13(PDATA+128),A8,L MOVE *A13(PDATA+160),A9,L MOVK 4,A1 JSRP FRANIM MOVE A9,*A13(PDATA+160),L MOVE *A13(PDATA+192),A8,L MOVE *A13(PDATA+224),A9,L MOVK 4,A1 JSRP FRANIM MOVE A9,*A13(PDATA+224),L JRC NXTF ;A0=SLP TIME MOVE A0,A11 DSF CALLR ALIGNF SLEEPK 1 DSJS A11,DSF JRUC DSF0 NXTF MOVI BLASTB,A9 MOVE A9,*A13(PDATA+96),L MOVI BLASTB2,A9 MOVE A9,*A13(PDATA+160),L MOVI BLASTB3,A9 MOVE A9,*A13(PDATA+224),L NXTFA MOVE *A13(PDATA+64),A8,L MOVE *A13(PDATA+96),A9,L MOVK 4,A1 JSRP FRANIM MOVE A9,*A13(PDATA+96),L MOVE *A13(PDATA+128),A8,L MOVE *A13(PDATA+160),A9,L MOVK 4,A1 JSRP FRANIM MOVE A9,*A13(PDATA+160),L MOVE *A13(PDATA+192),A8,L MOVE *A13(PDATA+224),A9,L MOVK 4,A1 JSRP FRANIM MOVE A9,*A13(PDATA+224),L JRC NXTF1 MOVE A0,A11 DSF2 CALLR ALIGNF SLEEPK 1 DSJS A11,DSF2 JRUC NXTFA NXTF1 MOVE *A13(PDATA+32),A0 DEC A0 MOVE A0,*A13(PDATA+32) JRNZ NXTF MOVI BLASTC,A9 MOVE A9,*A13(PDATA+96),L MOVI BLASTC2,A9 MOVE A9,*A13(PDATA+160),L MOVI BLASTC3,A9 MOVE A9,*A13(PDATA+224),L DSF4 MOVE *A13(PDATA+64),A8,L MOVE *A13(PDATA+96),A9,L MOVK 4,A1 JSRP FRANIM MOVE A9,*A13(PDATA+96),L MOVE *A13(PDATA+128),A8,L MOVE *A13(PDATA+160),A9,L MOVK 4,A1 JSRP FRANIM MOVE A9,*A13(PDATA+160),L MOVE *A13(PDATA+192),A8,L MOVE *A13(PDATA+224),A9,L MOVK 4,A1 JSRP FRANIM MOVE A9,*A13(PDATA+224),L JRC NXTF2 MOVE A0,A11 DSF3 CALLR ALIGNF SLEEPK 1 DSJS A11,DSF3 JRUC DSF4 NXTF2 MOVE *A13(PDATA+64),A0,L CALLA DELOBJ MOVE *A13(PDATA+128),A0,L CALLA DELOBJ MOVE *A13(PDATA+192),A0,L CALLA DELOBJ ****************JARV PATCH MOVE @WAVE,A0 CMPI 16,A0 ;ORCUS WAVE USES FLAMES JAEQ SUCIDE ****************************** MOVE *A10(OPLINK),A10,L CLR A0 BULPRC .EQU PDATA+352 ;UHL BULLET PROCESS FIRING BULLS! MOVE A0,*A10(BULPRC),L DIE **********************JARV PATCH DOIT MOVI 160,A3 MOVI AHMEDBLST1,A2 MOVI CLSENMY|TYPLAYR|SUBFLM,A5 CLR A6 CLR A7 MOVE A8,A10 CALLA BEGINOBJ2 CREATE HULKPID,FLAMING DIE ************************************* ALIGNF MOVE *A13(PDATA+64),A0,L MOVE A10,A8 CALLA GETANIXY MOVE *A13(PDATA),A6 SLL 5,A6 ADDI FIREYX,A6 MOVE *A6,A6,L ADD A6,A2 SLL 16,A6 ADD A6,A3 ;A2=Y,A3=X MOVE *A0(OFLAGS),A4,W CALLA GANISAG ;ADJUSTS TORSO MOVE *A13(PDATA+128),A0,L MOVE A10,A8 CALLA GETANIXY MOVE *A13(PDATA),A6 SLL 5,A6 ADDI FIREYX,A6 MOVE *A6,A6,L ADD A6,A2 SLL 16,A6 ADD A6,A3 ;A2=Y,A3=X MOVE *A0(OFLAGS),A4,W CALLA GANISAG ;ADJUSTS TORSO MOVE *A13(PDATA+192),A0,L MOVE A10,A8 CALLA GETANIXY MOVE *A13(PDATA),A6 SLL 5,A6 ADDI FIREYX,A6 MOVE *A6,A6,L ADD A6,A2 SLL 16,A6 ADD A6,A3 ;A2=Y,A3=X MOVE *A0(OFLAGS),A4,W CALLA GANISAG ;ADJUSTS TORSO RETS ;2=4 OCLOCK ;3=8 OCLOCK ************************JARV PATCH FIREYX .LONG [4FH,0FFF8H],[04FH,9],[1,3],[1,0FFFDH],[29H,-8],[29H,8] *************************************** BLASTA .LONG AHMEDBLST1 .WORD 2 .LONG AHMEDBLST2 .WORD 2 .LONG BLST3C .WORD 2 .LONG 0 BLASTB .LONG BLST4C .WORD 4 .LONG BLST5C .WORD 4 .LONG BLST6C .WORD 4 .LONG BLST4C .WORD 4 .LONG BLST5C .WORD 4 .LONG BLST6C .WORD 4 .LONG BLST4C .WORD 4 .LONG BLST5C .WORD 4 .LONG BLST6C .WORD 4 .LONG BLST4C .WORD 4 .LONG BLST5C .WORD 4 .LONG BLST6C .WORD 4 .LONG BLST4C .WORD 4 .LONG BLST5C .WORD 4 .LONG BLST6C .WORD 4 .LONG 0 BLASTC3 BLASTC .LONG BLST3C .WORD 2 .LONG AHMEDBLST2 .WORD 2 .LONG AHMEDBLST1 .WORD 2 .LONG 0 BLASTA2 .LONG AHMEDBLST1 ;INVISIBLE .WORD 2 .LONG AHMEDBLST2 ;'' .WORD 2 .LONG BLST3B .WORD 2 .LONG 0 BLASTB2 .LONG BLST4B .WORD 4 .LONG BLST5B .WORD 4 .LONG BLST6B .WORD 4 .LONG BLST4B .WORD 4 .LONG BLST5B .WORD 4 .LONG BLST6B .WORD 4 .LONG BLST4B .WORD 4 .LONG BLST5B .WORD 4 .LONG BLST6B .WORD 4 .LONG BLST4B .WORD 4 .LONG BLST5B .WORD 4 .LONG BLST6B .WORD 4 .LONG BLST4B .WORD 4 .LONG BLST5B .WORD 4 .LONG BLST6B .WORD 4 .LONG 0 BLASTC2 .LONG BLST3B .WORD 2 .LONG AHMEDBLST2 .WORD 2 .LONG AHMEDBLST1 .WORD 2 .LONG 0 BLASTA3 .LONG AHMEDBLST1 ;INVISIBLE .WORD 2 .LONG AHMEDBLST2 .WORD 2 .LONG BLST3C ;STILL INV .WORD 2 .LONG 0 BLASTB3 .LONG BLST4A .WORD 4 .LONG BLST5A .WORD 4 .LONG BLST6A .WORD 4 .LONG BLST4A .WORD 4 .LONG BLST5A .WORD 4 .LONG BLST6A .WORD 4 .LONG BLST4A .WORD 4 .LONG BLST5A .WORD 4 .LONG BLST6A .WORD 4 .LONG BLST4A .WORD 4 .LONG BLST5A .WORD 4 .LONG BLST6A .WORD 4 .LONG BLST4A .WORD 4 .LONG BLST5A .WORD 4 .LONG BLST6A .WORD 4 .LONG 0 .END