5008 lines
96 KiB
NASM
5008 lines
96 KiB
NASM
**************************************************************
|
||
*
|
||
* Software: Mark Turmell
|
||
* Initiated: 7/17/90
|
||
*
|
||
* Modified: Shawn Liptak, 10/27/91 -Orcus mods
|
||
*
|
||
* COPYRIGHT (C) 1991 WILLIAMS ELECTRONICS GAMES, INC.
|
||
*
|
||
*.Last mod - 12/27/91 15:24
|
||
**************************************************************
|
||
.FILE 'CARN.ASM'
|
||
.TITLE 'TOTAL CARNAGE GAME PROGRAM'
|
||
.WIDTH 132
|
||
.OPTION B,D,L,T
|
||
.MNOLIST
|
||
|
||
;RANDOMIZE, ADJUST DIFFICULTY OF ELECTROCUTION SCENE
|
||
|
||
; .WORD 032H ;>C0000010 -- HEBLNK ;WAS A 2DH!! IN MAIN.ASM
|
||
;FINAL RELEASE CHANGES:
|
||
;FACCHECK IN MENU.ASM SHOULD SLEEP 60 NOT 1
|
||
|
||
.INCLUDE "MPROC.EQU" ;MPROC EQUATES
|
||
.INCLUDE "DISP.EQU" ;DISPLAY PROC. EQUATES
|
||
.INCLUDE "\VIDEO\SYS\GSP.INC" ;GSP ASSEMBLER EQUATES
|
||
.INCLUDE "\VIDEO\SYS\SYS.INC" ;Z UNIT SYSTEM EQUATES
|
||
.INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS DEFINITIONS
|
||
.INCLUDE "IMGTBL.GLO"
|
||
.INCLUDE "GAME.EQU"
|
||
.INCLUDE "AUDIT.EQU"
|
||
.INCLUDE "PLYR.TBL"
|
||
.INCLUDE "CARN.HDR"
|
||
|
||
;SOUNDS EXTERNAL
|
||
|
||
.REF EXP1,ELECTRO,DIESCRM,AIRSCRM,FIREDI,MTING,SCREAM
|
||
.REF MEUGH,UGH2
|
||
.REF MUSICOFF,ONESNDOVR
|
||
|
||
;SYMBOLS EXTERNALLY DEFINED
|
||
|
||
.ref DIAG
|
||
.REF STRCNRM,BEEP1,BOSS,AFTR_WRP,GET_AWAY
|
||
.REF WDOGRAM,CYCSPECT,T72PNTR
|
||
.REF RGTJETS,LOCK_NUM,HULK_DN,ICN9,SITLST,ROAD2_MOD,BAKMODS
|
||
.REF STRLNRMO,HEXTOASC,WRLD,STRCNRMO,RD15FONT,ICN1,ENAIR1
|
||
.REF OFFBSCRN,DOLORD,JET_KILLS,SIT4,FLASHME,RD7FONT
|
||
.REF DOSHIFT2,DOSHIFT,JDOSHIFT
|
||
.REF AIRRECT2A,AIRBRECT2,ERECT13,STRT_D,MINE_FLG,ICN7,ADDBMB
|
||
.REF AIRRECT1,AIRBRECT1,LOTS_FLAG,RNDRNG0
|
||
.REF bomb_neutron,SEND_ICON,ICONS_DN,ICN5,FIXGUNS
|
||
.REF ENRECT13,ENRECT14,INIT_TAB,ONEJEEP,DO_EXTRA,DELZ10
|
||
.REF DRECT8,DBRECT8,FND_NOWLK,IRQSKYE,DO_WINNER
|
||
.REF DRECT7,DBRECT7
|
||
.REF DRECT6,DBRECT6
|
||
.REF DRECT5,DBRECT5,NO_BONUS
|
||
.REF DRECT4,DBRECT4,ENRECT11,ERECT11,CLNPAL,ENRECT12,KILL_CRT3
|
||
.REF DRECT3,DBRECT3,VULN,BURST,STRT_G,BOOB_BURST
|
||
.REF GOBACK
|
||
.REF DRECT3A,DBRECT3A
|
||
.REF STATUS,GAMSTATE,INIT_ALL,UNSTACK,GET_AUD,PCNT
|
||
.REF FACCHECK,KILBGND,CLSCRACH,RANDOM,POWERTST,SCORE_FLAG,PCTOT
|
||
.REF STRT_WPN,P1CTRL,P2CTRL,SENDH_TOP
|
||
.REF FRANIM,FRANIMQ,BLOOD_LST2,EXPMINE2,SCRADD2,SNDPRC
|
||
.REF OBJOFF,OBJON,MSG_PROC2,GAMEOVER,GETFPAL,SHORT_PLYR
|
||
.REF P1DATA,P2DATA,PSTAT,CNTDIG1,CNTDIG2,HALT,STUFF_LVADDR
|
||
.REF THIS_PLYR,GETCPNT,BGND_UD1,SCRIPTPLAY,OFFSCRN,START,ICN2
|
||
.REF ONARRW,ARWOFF,PUMP_RED,RANGRAND,GOOBP,ZONE_TXT,RUNIN
|
||
.REF WAVE,BEGIN_CHNK,ICLIST
|
||
.REF HULK_CNT,SEND_TOP,DO_ALL_STUFF,ENRECT4
|
||
.REF ERECT2,EN_CURRENT,ERECT3,ENRECT3,KEEPIT,ERECT4,LSHIT,SHAKER
|
||
.REF PULLOBJ,JUMPXY,JUMPXY2,RANDPER,ERECT7,ERECT8
|
||
.REF TBOMBD,ZONE_TXT2
|
||
.REF DBRECT2,DRECT2,TBLST,LAY_EXP
|
||
.REF ERECT10,CTOTAL
|
||
.REF SKIPR_DN,JEEPCYC
|
||
.REF SHIFTLM,SEND_NEUT
|
||
.ref bossd_t,PURPLE_DUDE
|
||
.ref AUD,AUD1,aud_addnumplyrs,RAMLST
|
||
|
||
;SYMBOLS DEFINED IN THIS FILE
|
||
|
||
.DEF CK_BTMSD,SPECT
|
||
.DEF AIR_ER,NOSHOOT,DO_DESTROY
|
||
.DEF AIRRECT3A,AIRBRECT3,TUFFMINE
|
||
.DEF DELOFFBOTL,SLOW_DWN,POL2,GATE_PLYR,MAYBE_UD1
|
||
|
||
.DEF XOUT0,JEPCYC
|
||
.DEF INIT_PROG,DRAW_PLYR_TORSO,EHALT,CTRLS,BNC_PLYR,ANI_FLAG
|
||
.DEF PLYRPRCS,PLYROBJS,KILLP1,KILLP2,BNC_PLYR2,CURRENT,RECT1
|
||
.DEF WARMSET,KILL_PLYR,TARGET,TARGET_NUM,BCURRENT,BRECT1,RINGS
|
||
.DEF CPULEFT,CPUAVG
|
||
.DEF ENEMY_RECT
|
||
.DEF INTRO,SHOTKILL,ENDWV
|
||
.DEF CKFORY,SETPXY2,SETPXY1,HZSPD,PATHA,HSTGS_LOST
|
||
.DEF HSTGSET,WARP_KIL
|
||
.def timeron,timerp1,timerp1sd,timerp2,timerp2sd
|
||
.def bombn_killp
|
||
.def LAND
|
||
|
||
.if DEBUG
|
||
.def SLDEBUG
|
||
.bss SLDEBUG ,16 ;Shawn's debug
|
||
.endif
|
||
|
||
; .IF DEBUG
|
||
.DEF FORDBG
|
||
; .BSS KEEPA0,32
|
||
; .BSS KEEPA5,32
|
||
; .ENDIF
|
||
|
||
;UNINITIALIZED RAM DEFINITIONS
|
||
|
||
.BSS NOSHOOT,16 ;NO SHOOTING WHEN BOSS DEAD
|
||
.BSS HSTGS_LOST,16 ;TOTAL HOSTAGES NOT RESCUED
|
||
.BSS PALTMP,13*16*2 ;ALLOCATE 2 X COLOR AREA IN RAM
|
||
.BSS PLYROBJS,64 ;2 ENTRIES-PLYR1,PLYR2 TORSO PTR
|
||
.BSS PLYRPRCS,64 ;2 ENTRIES-PLYR1,PLYR2 PROCESS PTR
|
||
.BSS EHALT,16
|
||
.BSS SLOW_DWN,16 ;SLOW DOWN SCROLL CNTR
|
||
.BSS CPUAVG,16
|
||
.BSS CPULEFT,16
|
||
.BSS TARGET_NUM,16 ;TARGET NUM FOR SCROLLING
|
||
.BSS INTRO,16 ;INTRO # FOR CONTROL RM 0=PROF,1=GEN
|
||
.BSS HSTGSET,16
|
||
.BSS HZSPD,32 ;BOTH HZ/VT SPEED
|
||
.BSS TMP,16
|
||
.BSS CURRENT,32 ;PNTR TO LIST OF RECTANGLES
|
||
.BSS BCURRENT,32 ;PNTR TO LIST OF RECTANGLES (BULLETS)
|
||
.BSS ENEMY_RECT,32 ;PNTR TO ENEMY SPAWN RECTANGLES
|
||
|
||
|
||
* Timer variables. Must stay in order!!
|
||
|
||
.bss timertcnt ,16 ;Tick count
|
||
.bss timeron ,16 ;!0=Running
|
||
.bss timerp1 ,16 ;Player 1 seconds of play
|
||
.bss timerp1sd ,16 ;Player 1 seconds since death
|
||
.bss timerp2 ,16 ;Player 2 seconds of play
|
||
.bss timerp2sd ,16 ;Player 2 seconds since death
|
||
|
||
|
||
;EQUATES FOR THIS FILE
|
||
;
|
||
VNORMVEL .EQU 01A000H
|
||
HNORMVEL .EQU 01A000H
|
||
VSLOVEL .EQU 012600H ;VNORMVEL*.707
|
||
HSLOVEL .EQU 012600H ;HNORMVEL*.707
|
||
;
|
||
;VNORMVEL .EQU 018333H
|
||
;HNORMVEL .EQU 018333H
|
||
;VSLOVEL .EQU 011300H ;VNORMVEL*.707
|
||
;HSLOVEL .EQU 011300H ;HNORMVEL*.707
|
||
;
|
||
VNORMVEL2 .EQU 01F000H
|
||
HNORMVEL2 .EQU 01F000H
|
||
VSLOVEL2 .EQU 018000H ;VNORMVEL*.707
|
||
HSLOVEL2 .EQU 018000H ;HNORMVEL*.707
|
||
;
|
||
VNORMVEL3 .EQU 025000H
|
||
HNORMVEL3 .EQU 027000H
|
||
VSLOVEL3 .EQU 01CA00H ;VNORMVEL*.707
|
||
HSLOVEL3 .EQU 01CA00H ;HNORMVEL*.707
|
||
;
|
||
TEMP .EQU PDATA
|
||
|
||
MYLIST .EQU PDATA+64 ;UHL FRANIM LIST FOR THIS PC UPON DEATH
|
||
;SAME AS FROM MINE.ASM
|
||
|
||
.TEXT
|
||
|
||
|
||
INIT_PROG
|
||
DINT ;DISABLE INTERRUPTS
|
||
SETF 16,1,0 ;WORD SIGN EXTEND (FIELD 0)
|
||
SETF 32,1,1 ;LONG WORD (FIELD 1)
|
||
MOVI STCKST,SP,L ;MOVE STACK ADDR IN SP (32 BITS)
|
||
|
||
MOVE @WDOGRAM,A0,L ;MARK SYSTEM AS INITIALIZED
|
||
CMPI WDOGNUM,A0
|
||
jrne WARMSET0 ;Power on?
|
||
|
||
MOVI AUDLOCK,A0
|
||
CALLA AUD1
|
||
.IF DEBUG
|
||
.ELSE
|
||
CALLERR 11,0 ;Watch dog
|
||
.ENDIF
|
||
;JUMP TO RECOVER CODE
|
||
; MOVI AUDSTAT,A0 ;IN GAME OR IN ATTRACT MODE CHECK
|
||
; CALLA GET_AUD
|
||
; MOVE A1,A1
|
||
; JREQ WARMSET ;Attract mode glitch?
|
||
JRUC WARMSET
|
||
; CLR A1
|
||
; CALLA STORE_AUDIT ;WARP ONLY ONCE, DUDE!!!
|
||
;TRY TO RECOVER PLAYABLE GAME
|
||
; JAUC BONUS_WARP
|
||
|
||
WARMSET0
|
||
JAUC POWERTST
|
||
WARMSET
|
||
DINT ;DISABLE INTERRUPTS
|
||
SETF 16,1,0 ;WORD SIGN EXTEND (FIELD 0)
|
||
SETF 32,1,1 ;LONG WORD (FIELD 1)
|
||
MOVI STCKST,SP,L ;MOVE STACK ADDR IN SP (32 BITS)
|
||
|
||
CALLA INIT_TAB ;RESET TODAYS HIGH SCORE TABLE
|
||
|
||
CALLA CLSCRACH ;CLR SCRATCH RAM
|
||
CALLA INIT_ALL ;INITIALIZE Z-UNIT
|
||
|
||
MAIN0
|
||
CREATE0 FACCHECK ;START ATTRACT IF THINGS O.K.
|
||
CREATE PLIST_ID,UNSTACK ;CREATE SWITCH UNSTACKER
|
||
|
||
********************************
|
||
* MAIN LINE LOGIC LOOP
|
||
|
||
MAINLP
|
||
CALLA PRCDSP ;DISPATCH PROCESSES
|
||
CALLA RANDOM
|
||
.if DEBUG
|
||
move @SLDEBUG,a0
|
||
jrnn skipline
|
||
movi 5*32,a0
|
||
move a0,@ERASELOC
|
||
skipline
|
||
.endif
|
||
|
||
MOVE A13,A13
|
||
JRZ MAINPOK
|
||
.IF DEBUG
|
||
LOCKUP
|
||
EINT
|
||
.ELSE
|
||
CALLERR 10,0
|
||
.ENDIF
|
||
|
||
MAINPOK
|
||
|
||
move @timertcnt,a3 ;>Update player timers
|
||
subk 1,a3
|
||
jrgt mlp20
|
||
movi timeron,a0 ;Get * to Timer variables
|
||
move *a0+,a1
|
||
jrz mlp10
|
||
move @STATUS,a2
|
||
btst 0,a2 ;P1 in game?
|
||
jrz mlp5
|
||
move *a0,a1,L ;+1 to game time & time since death
|
||
addi >10001,a1
|
||
move a1,*a0,L
|
||
mlp5 addk 32,a0 ;Next set
|
||
btst 1,a2 ;P2 in game?
|
||
jrz mlp10
|
||
move *a0,a1,L ;+1 to game time & time since death
|
||
addi >10001,a1
|
||
move a1,*a0,L
|
||
mlp10 movi 60,a3 ;Ticks per second
|
||
mlp20 move a3,@timertcnt
|
||
|
||
|
||
CALLA SNDPRC ;DISPATCH AND TIME THE SOUND CALLS
|
||
.IF DEBUG
|
||
callr StCpuLft
|
||
.ENDIF
|
||
|
||
; TEST ROM PROTECT INTERRUPT
|
||
;
|
||
; .IF DEBUG
|
||
; JRUC SKIPCK
|
||
; dint
|
||
; MOVE @INTENB,A0,0 ;ENABLE ROM PROTECT INTERRUPT (ext2)
|
||
; ORI X2E,A0
|
||
; MOVE A0,@INTENB,0
|
||
; eint
|
||
; move @>ffe00000,a0,0
|
||
; move a0,@>ffe00000,0
|
||
;SKIPCK
|
||
; .ENDIF
|
||
|
||
|
||
MOVE @PCNT,A0
|
||
DEC A0
|
||
MOVE A0,@PCNT
|
||
|
||
movb @SWITCH+>31,a0
|
||
jan mlp500
|
||
movi ACTIVE,a13
|
||
CREATE DIAG_PID,DIAG
|
||
|
||
mlp500 MOVE @GAMSTATE,A0
|
||
CMPI INDIAG,A0
|
||
JRNZ NODIAG
|
||
|
||
MOVI AMDEPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA KILALL
|
||
CALLA KILBGND
|
||
CLR A0
|
||
MOVE A0,@SCORE_FLAG
|
||
NODIAG
|
||
JRUC MAINLP
|
||
|
||
|
||
RINGS:
|
||
;A10=TIME RINGS ARE ON
|
||
;A9=PLAYER NUMBER 1/2 TO RING
|
||
;TURN OFF EXISTING RINGS AROUND THIS PLAYER PLUS ITS COLOR CYCLE
|
||
MOVB A9,*A13(MYPLYR)
|
||
DEC A9
|
||
SLL 3,A10
|
||
MOVE A10,*A13(TIME)
|
||
SLL 5,A9
|
||
|
||
MOVE A9,A10
|
||
ADDI PLYROBJS,A9
|
||
MOVE *A9,A8,L
|
||
MOVE A8,A11 ;KEEP PLAYER OBJ TO RING IN A11
|
||
CALLA GETANIXY
|
||
CLR A6
|
||
CLR A7
|
||
MOVE A2,A1
|
||
MOVE A3,A0
|
||
MOVI 140,A3 ;LOWER PRIORITY THAN PLAYER
|
||
MOVI DMAWNZ,A4
|
||
MOVI CLSPLYR|TYPPLYR|SUBRNG1,A5
|
||
MOVI SHLD1,A2
|
||
CALLA BEGINOBJ2
|
||
MOVI PLYRPRCS,A9
|
||
ADD A10,A9
|
||
MOVE *A9,A0,L
|
||
MOVE A0,*A8(OPLINK),L
|
||
MOVE A8,A9 ;CIRCLE IMAGE
|
||
RTP
|
||
MOVE @HALT,A0
|
||
JRNE NYTB
|
||
MOVE *A13(TIME),A0
|
||
DEC A0
|
||
MOVE A0,*A13(TIME)
|
||
JRZ KRNGS
|
||
CMPI 90,A0
|
||
JRNC NYTB
|
||
MOVE *A9(OIMG),A0,L
|
||
CMPI SHLD1,A0
|
||
JRNZ NYTB
|
||
;TIME TO CHANGE TO RED SHIELD
|
||
; MOVI RINGSDN,A0
|
||
; CALLA ONESND
|
||
|
||
MOVE *A9(OFLAGS),A4,W
|
||
MOVI SHLD2,A1
|
||
MOVE A9,A8
|
||
CALLA ANI
|
||
|
||
MOVE A10,A10
|
||
JRNE F1
|
||
CREATE B1PID,BLINK ;BLINK OUT RING PROCESS
|
||
JRUC NYTB
|
||
F1
|
||
CREATE B2PID,BLINK
|
||
NYTB MOVE *A11(OPLINK),A0,L
|
||
MOVI 90,A1 ;30
|
||
MOVE A1,*A0(DELYDET) ;KEEP STUFFING A VALUE IN HERE
|
||
MOVE A9,A0
|
||
MOVE A11,A8
|
||
CALLA GETANIXY
|
||
ADDI 0280000H,A2
|
||
MOVE *A0(OFLAGS),A4,W
|
||
CALLA GANISAG
|
||
MOVE A0,A9
|
||
SLEEPK 1
|
||
JRUC RTP
|
||
|
||
XOUT0
|
||
;KILL RINGS OFF
|
||
KRNGS MOVE A9,A0
|
||
CALLA DELOBJ
|
||
CLR A1
|
||
NOT A1
|
||
MOVI B1PID,A0
|
||
;A10=0 IF PLAYER 1
|
||
MOVE A10,A10
|
||
JREQ KL
|
||
MOVI B2PID,A0
|
||
KL CALLA KILALL
|
||
DIE
|
||
|
||
BLINK
|
||
;BLINK OUT RING
|
||
;A9=RING IMAGE TO BLINK
|
||
MOVE A9,A0
|
||
CALLA OBJOFF
|
||
SLEEPK 5
|
||
MOVE A9,A0
|
||
CALLA OBJON
|
||
SLEEPK 5
|
||
JRUC BLINK
|
||
|
||
.REF SHLD1,SHLD2
|
||
|
||
RINGSDN .WORD >FB8B,>10,>80A0,0 ;SHIELD RUNNING DOWN
|
||
|
||
;RINGS
|
||
;;A10=TIME RINGS ARE ON
|
||
;;A9=PLAYER NUMBER 1/2 TO RING
|
||
;;TURN OFF EXISTING RINGS AROUND THIS PLAYER PLUS ITS COLOR CYCLE
|
||
; MOVE A9,*A13(MYPLYR)
|
||
;;SET BOUNDARIES TO ORBITING TYPE BNDRY
|
||
;;SET BOUNDARIES FOR CORRECT PLAYER!
|
||
; DEC A9
|
||
; SLL 5,A9
|
||
; MOVI PLYRPRCS,A1,L
|
||
; ADD A9,A1
|
||
; MOVE *A1,A1,L
|
||
; MOVE *A1(LEG_PTR),A11,L
|
||
; MOVI CLSPLYR|TYPPLYR|SUBRNG1,A5 ;FOR BOTH PLYRS
|
||
; MOVE A5,*A11(OID)
|
||
; MOVK 6,A0
|
||
; CMPI 20,A10
|
||
; JRNC RTP0
|
||
; MOVK 3,A0
|
||
;RTP0 MOVE A0,*A13(TEMP)
|
||
; MOVE A0,*A13(TEMP+16)
|
||
; MOVI 0AFEH,A0
|
||
; MOVE A0,*A1(DELYDET) ;KEEP STUFFING A VALUE IN HERE
|
||
;RTP
|
||
; MOVI PLYRPRCS,A1,L
|
||
; ADD A9,A1
|
||
; MOVE *A1,A1,L
|
||
; MOVE *A1(DELYDET),A0
|
||
; ORI 70,A0
|
||
; MOVE A0,*A1(DELYDET) ;KEEP STUFFING A VALUE IN HERE
|
||
; MOVE *A1(TSO_PTR),A8,L
|
||
; MOVE *A1(LEG_PTR),A11,L
|
||
;;GIVE THESE IMAGES OTHER PAL
|
||
; MOVE *A13(TEMP+16),A0
|
||
; JRNZ RTP2
|
||
; MOVI WHITEP,A0
|
||
; JRUC RCL
|
||
;RTP2
|
||
; MOVI nup2a,A0
|
||
;
|
||
; MOVE A9,A9
|
||
; JRZ RCL
|
||
; MOVI nup1a,A0
|
||
;
|
||
;RCL 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
|
||
; MOVE *A13(TEMP),A0
|
||
; CALLA PRCSLP
|
||
;XOUT0
|
||
; MOVI nup1,A0
|
||
; MOVE A9,A9
|
||
; JRZ P01
|
||
; MOVI nup2,A0
|
||
;P01
|
||
; CALLA GETFPAL ;GET A COLOR MAP ASSIGNMENT
|
||
;;GIVE THESE IMAGES OTHER PAL
|
||
; MOVE A0,*A8(OPAL),W ;STORE THE NEW PALETTE
|
||
; MOVE A0,*A11(OPAL),W
|
||
; MOVE *A13(TEMP),A0
|
||
; JRZ XOUT
|
||
; CALLA PRCSLP
|
||
; DEC A10
|
||
; JRZ XOUT
|
||
; CMPI 20,A10
|
||
; JRNZ RTP
|
||
; MOVK 2,A0
|
||
; MOVE A0,*A13(TEMP)
|
||
; JRUC RTP
|
||
;XOUT MOVE *A13(TEMP+16),A0
|
||
; JRZ REALX
|
||
; MOVI RINGSDN,A0
|
||
; CALLA ONESND
|
||
; CLR A0
|
||
; MOVE A0,*A13(TEMP+16)
|
||
; MOVK 13,A10
|
||
; JRUC RTP
|
||
;REALX
|
||
;;RESTORE CORRECT OID
|
||
; MOVI RESTUF,A1
|
||
; ADD A9,A1
|
||
; MOVE *A1,A1,L
|
||
; MOVE A1,*A11(OID)
|
||
;;GIVE TORSO SOME DELAY DETECTION
|
||
; MOVE *A8(OPLINK),A0,L
|
||
; MOVI 70,A1 ;10
|
||
; MOVE A1,*A0(DELYDET) ;KEEP STUFFING A VALUE IN HERE
|
||
; DIE
|
||
;
|
||
;RESTUF .LONG CLSPLYR|TYPPLYR|SUBPL_1,CLSPLYR|TYPPLYR|SUBPL_2
|
||
|
||
TARGET:
|
||
;PROCESS WHICH RUNS WHEN SCREEN IS STATIONARY.
|
||
;WHEN STARTED, IT WAITS FOR PLAYERS TO REACH A CERTAIN X OR Y TARGET AND
|
||
;THEN STARTS AN APPROPRIATE SCROLL
|
||
;A8=X TARGET OR 0 IF NONE
|
||
;A9=Y TARGET OR 0 (POS WORD)
|
||
;A10=0=OLD SCROLL, OR A10=TABLE OF SCROLL DIRECTION, AND CNT, END WITH 0
|
||
|
||
|
||
MOVE A8,A8
|
||
JRZ YCHK
|
||
XCHK
|
||
;CHECK PLAYERS FOR X TARGET
|
||
MOVE @STATUS,A0
|
||
CMPI 3,A0
|
||
JRNZ ONEPX
|
||
;BOTH PLYRS IN GAME
|
||
MOVE @PLYROBJS,A0,L
|
||
MOVE @PLYROBJS+32,A1,L
|
||
MOVE *A0(OXPOS),A2
|
||
MOVE *A1(OXPOS),A3
|
||
CMP A8,A2
|
||
JRNC YESHITX
|
||
CMP A8,A3
|
||
JRNC YESHITX
|
||
NOHITX SLEEPK 10
|
||
JRUC XCHK
|
||
YESHITX
|
||
;ONE OF PLAYERS IS TO RIGHT OF TARGET LINE
|
||
SUB A2,A3
|
||
ABS A3
|
||
CMPI 200,A3
|
||
JRNC NOHITX
|
||
DOHORZ
|
||
;START HORZ SCROLL!
|
||
MOVE A10,A10
|
||
JRNZ NEWSCRL
|
||
MOVE @WORLDTLX,A9,L
|
||
MOVE @TARGET_NUM,A0
|
||
CMPI 2,A0
|
||
JRNZ NOCH
|
||
;FROM REACTOR TO ELEVATOR
|
||
PUSH A0
|
||
MOVI [0E0H,0],A10
|
||
CREATE0 SETRUNIN
|
||
PULL A0
|
||
MOVI RECT4,A1
|
||
MOVE A1,@CURRENT,L
|
||
MOVI BRECT3,A1
|
||
MOVE A1,@BCURRENT,L
|
||
;IF THEY HAD A MAP, THEY DIDN'T USE IT. THROW IT AWAY
|
||
; CLR A1
|
||
; MOVE A1,@MAPON
|
||
|
||
NOCH SLL 5,A0
|
||
ADDI TARGET_LST,A0
|
||
MOVE *A0,A0,L
|
||
ADD A0,A9
|
||
CREATE TARGPID,SCROLLFT
|
||
CREATE DELPID,DELOFFH ;IMAGES OFF LEFT OF SCREEN
|
||
DIE
|
||
|
||
STOPO MOVI DELPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA KILALL
|
||
|
||
CLR A0
|
||
MOVE A0,@AFTR_WRP
|
||
|
||
move @WAVE,a0
|
||
cmpi 35,a0
|
||
JAEQ SUCIDE
|
||
|
||
CALLA OFFSCRN
|
||
MOVE @WAVE,A0
|
||
CMPI 38,A0
|
||
jrz aboss_strt
|
||
MOVI 120,A9
|
||
CMPI 34,A0
|
||
JAZ PURPLE_DUDE
|
||
CMPI 30,A0
|
||
JRZ AIRSTP01
|
||
CMPI 18,A0
|
||
JRZ AIRSTP
|
||
CMPI 27,A0
|
||
JRZ AIRSTP0
|
||
CMPI 17,A0
|
||
JRZ RD_END
|
||
CMPI 15,A0
|
||
JRZ XTRY_RCK
|
||
CMPI 12,A0 ;12 OR 11 TO GET TO 1ST LOCKDOWN
|
||
JRZ LCK1
|
||
CMPI 11,A0
|
||
JRNZ SDIE
|
||
|
||
LCK1
|
||
;AT FIRST HUT
|
||
;DO TEXT
|
||
;START WAVE
|
||
;NEW LOCK DOWN RECTANGLES
|
||
MOVI DRECT4,A0 ;FOR LOCKDOWN AT HUT
|
||
MOVE A0,@CURRENT,L
|
||
MOVI DBRECT4,A0
|
||
MOVE A0,@BCURRENT,L
|
||
MOVI ENRECT12,A0
|
||
MOVE A0,@EN_CURRENT,L ;FOR BOX COLLISIONS
|
||
MOVI ERECT11,A0
|
||
MOVE A0,@ENEMY_RECT,L ;FOR SPAWNING
|
||
|
||
SLEEPK 20
|
||
|
||
|
||
MOVE @START,A0
|
||
CMPI 5,A0
|
||
JRNZ LXTR
|
||
|
||
MOVI COLRPID,A0
|
||
CALLA KIL1C
|
||
CREATE COLRPID,CYCSPECT ;START COLOR CYCLE PROCESS
|
||
.REF WEASEL_NOTE
|
||
JSRP WEASEL_NOTE
|
||
JRUC LXTR2
|
||
|
||
LXTR
|
||
MOVK 6,A10 ;YOU ARE WEASEL MAN
|
||
MOVI [-16,0],A9 ;Y ADD IN VALUE
|
||
CREATE0 ZONE_TXT2
|
||
LXTR2
|
||
|
||
SLEEPK 30 ;40
|
||
MOVK 13,A0
|
||
CALLA DOLORD ;STORE WAVE #, START WAVE CODE
|
||
MOVI ICONPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
* Z BIT SET = NO MATCH, A0 = 0
|
||
JRNZ SFO
|
||
CREATE ICONPID,SEND_ICON
|
||
SFO CLR A0
|
||
MOVE A0,@P1DATA+WAVEPTS
|
||
MOVE A0,@P2DATA+WAVEPTS
|
||
SDIE DIE
|
||
|
||
|
||
aboss_strt
|
||
;START LOCKDOWN WAVE ACTION, WHEN DONE, DO ABOSS
|
||
CLR A0
|
||
MOVE A0,@RUNIN
|
||
MOVK 26,A10 ;MUSH
|
||
MOVI [-34,0],A9 ;Y ADD IN VALUE
|
||
CREATE0 ZONE_TXT2
|
||
SLEEP 60
|
||
MOVI SIT5,A0
|
||
MOVE A0,@SITLST,L
|
||
MOVI ERECTU2,A0
|
||
MOVE A0,@ENEMY_RECT,L ;FOR SPAWNING
|
||
MOVI 39,A0
|
||
CALLA DOLORD
|
||
CALLA JEEPCYC ;CYCLE JEEP TIRES
|
||
DIE
|
||
ERECTU2
|
||
.WORD 0,1,68H+160+1365,4E8H+270,68H+162+1365,4E8H+280
|
||
.WORD 0,5,68H+175+1365,4E8H-40,68H+176+1365,4E8H-20
|
||
.WORD 0,7,68H+400+1365,4E8H+145,68H+420+1365,4E8H+160
|
||
.WORD 0,3,28H+1365,4E8H+145,30H+1365,4E8H+150
|
||
.WORD 0,5,68H+175+1365,4E8H-40,68H+176+1365,4E8H-20
|
||
.WORD 0,1,68H+160+1365,4E8H+270,68H+162+1365,4E8H+280
|
||
.WORD 0,3,28H+1365,4E8H+145,30H+1365,4E8H+150
|
||
.WORD 0,7,68H+400+1365,4E8H+145,68H+420+1365,4E8H+160
|
||
|
||
|
||
AIRSTP01
|
||
;END OF AIRPORT, TIME FOR SHOCK SCENE
|
||
; CLR A0
|
||
; MOVE A0,@P1DATA+WAVEPTS
|
||
; MOVE A0,@P2DATA+WAVEPTS
|
||
MOVK 31,A0
|
||
CALLA DOLORD ;STORE WAVE #, START WAVE CODE
|
||
MOVI ICN9,A0
|
||
MOVE A0,@ICLIST,L
|
||
MOVI AIR_END,A0
|
||
MOVE A0,@ENEMY_RECT,L ;FOR SPAWNING
|
||
DIE
|
||
|
||
AIR_END
|
||
.WORD 0,7,1520H+410,912H+115,1520H+420,912H+135
|
||
.WORD 0,1,1520H+100,912H+260,1520H+290,912H+270
|
||
.WORD 0,5,1520H+100,912H-50,1520H+290,912H-50+10
|
||
.WORD 0,3,1520H-40,912H+115,1520H-30,912H+135
|
||
.WORD 0,5,1520H+100,912H-50,1520H+290,912H-50+10
|
||
.WORD 0,1,1520H+100,912H+260,1520H+290,912H+270
|
||
.WORD 0,7,1520H+410,912H+115,1520H+420,912H+135
|
||
.WORD 0,5,1520H+100,912H-50,1520H+290,912H-50+10
|
||
|
||
AIRSTP0
|
||
;TURN ON A WARP BACK DISC!
|
||
;GO BACK FROM WARP LOCKDOWN #2
|
||
;SEND OUT CHASER!
|
||
MOVK 1,A0
|
||
MOVE A0,@ICONS_DN
|
||
SLEEP 90
|
||
MOVE @JET_KILLS,A0
|
||
MOVE @JET_KILLS+16,A10
|
||
ADD A10,A0
|
||
MOVK 12,A10 ;NO ;DUFUS
|
||
SUBK 20,A0
|
||
JRNZ YESBB
|
||
;GOT ALL JETS
|
||
MOVK 13,A10 ;YES
|
||
MOVI P1DATA,A2
|
||
MOVE @PLYRPRCS,A0,L
|
||
JRZ RD3B
|
||
CALLR RD4B
|
||
RD3B
|
||
MOVI P2DATA,A2
|
||
MOVE @PLYRPRCS+32,A0,L
|
||
JRZ YESB
|
||
CALLR RD4B
|
||
JRUC YESB
|
||
YESBB
|
||
;NO BONUS
|
||
YESB MOVI [-16,0],A9 ;Y ADD IN VALUE
|
||
CREATE0 ZONE_TXT2
|
||
|
||
JSRP DO_DESTROY
|
||
|
||
SLEEP 4*60
|
||
CREATE WARPPID,GOBACK
|
||
DIE
|
||
AIRSTP
|
||
;FIRST LOCKDOWN IN AIRPORT
|
||
MOVE @BAKMODS,A0,L
|
||
CMPI ROAD2_MOD,A0 ;SHOW ROAD
|
||
JRZ RD_END
|
||
|
||
MOVE @WORLDTLY,A0,L
|
||
CMPI [1250H,0],A0
|
||
JRGT SDIE
|
||
|
||
MOVI AIRRECT2A,A0
|
||
MOVE A0,@CURRENT,L
|
||
MOVI AIRBRECT2,A0
|
||
MOVE A0,@BCURRENT,L
|
||
|
||
SLEEP 160+180
|
||
|
||
; CALLA CLNPAL
|
||
|
||
CLR A0
|
||
MOVE A0,@P1DATA+WAVEPTS
|
||
MOVE A0,@P2DATA+WAVEPTS
|
||
MOVK 15,A10 ;FLESH FEAST
|
||
MOVI [0,0],A9 ;Y ADD IN VALUE
|
||
CREATE0 ZONE_TXT2
|
||
|
||
MOVK 19,A0
|
||
CALLA DOLORD ;STORE WAVE #, START WAVE CODE
|
||
CLR A0 ;1=STUCK IN GOO, 0=BALL AND CHAIN
|
||
MOVE A0,@HSTGSET
|
||
MOVE A0,@EN_CURRENT,L ;FOR BOX COLLISIONS
|
||
MOVI ERECT13,A0
|
||
MOVE A0,@ENEMY_RECT,L ;FOR SPAWNING
|
||
DIE
|
||
RD_END
|
||
SLEEP 4*60 ;10
|
||
;A FEW MORE TRUCKS ALONG ROAD
|
||
MOVI 40,A0
|
||
MOVE A0,@WAVE
|
||
SLEEP 5*60
|
||
MOVK 9,A10 ;NO BONUS
|
||
CLR A9 ;Y ADD IN VALUE
|
||
MOVE @NO_BONUS,A0
|
||
JRNZ RD2
|
||
MOVK 8,A10 ;YES BONUS
|
||
MOVI [-16,0],A9 ;Y ADD IN VALUE
|
||
RD2 CREATE0 ZONE_TXT2
|
||
MOVE A9,A9
|
||
JRZ GOAIR
|
||
;GOT ALL TRUCKS
|
||
MOVI P1DATA,A2
|
||
MOVE @PLYRPRCS,A0,L
|
||
JRZ RD3
|
||
CALLR RD4
|
||
RD3 MOVI P2DATA,A2
|
||
MOVE @PLYRPRCS+32,A0,L
|
||
JRZ GOAIR
|
||
CALLR RD4
|
||
|
||
GOAIR
|
||
SLEEPK 30
|
||
;DISPLAY TRUCKS GOT AWAY CNT
|
||
MOVI 3E3EH,A6 ;COLOR CYCLE DIGITS
|
||
MOVI GWAY,A8
|
||
MOVI [180,0BCH],A9 ;SCRN Y/X
|
||
MOVI RD15FONT,A11 ;FONT TABLE
|
||
MOVK 2,A10 ;Y,X SPACING BETWEEN CHARCTERS
|
||
CLR A0
|
||
MOVE A0,@WRLD
|
||
JSRP STRCNRMO
|
||
;DIGITS
|
||
MOVE @GET_AWAY,A8
|
||
CALLA HEXTOASC
|
||
MOVI 3E3EH,A6 ;COLOR CYCLE DIGITS
|
||
MOVI [180,011DH],A9 ;SCRN Y/X
|
||
CLR A0
|
||
JSRP STRLNRMO
|
||
;
|
||
JSRP DO_DESTROY
|
||
|
||
MOVI FIXPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
* Z BIT CLR = MATCH, A0 = PTR TO PROCESS
|
||
JRZ GO1
|
||
CALLA KILL
|
||
GO1 SLEEP 3*60
|
||
|
||
MOVI 5*60,A9
|
||
MOVE @BAKMODS,A0,L
|
||
CMPI ROAD2_MOD,A0
|
||
JAZ PURPLE_DUDE
|
||
|
||
SLEEP 40
|
||
CREATE0 DO_WINNER
|
||
SLEEP 90
|
||
|
||
;START TOWARD AIRPORT GATES
|
||
MOVI 08000H,A0
|
||
MOVE A0,@HZSPD,L
|
||
MOVE @WORLDTLY,A9,L
|
||
SRL 16,A9
|
||
ADDI 80,A9 ;A9=Y TARGET LINE TO TRIGGER SCROLL
|
||
CLR A8 ;A8=0 MEANS NOT CHECKING FOR X TARGET
|
||
MOVI PATHU,A10 ;INDICATES NEW SCROLL WITH SCRL TABLE
|
||
CREATE TARGPID,TARGET
|
||
|
||
MOVK 18,A0
|
||
CALLA DOLORD
|
||
CLR A9 ;A9=0 FOR UP, 1 FOR RGT
|
||
CREATE ARWPID,ONARRW ;TURN ON UP ARROW
|
||
CREATE0 FIX ;ARROW OFF AFTER A TIME
|
||
MOVK 8,A0 ;10
|
||
MOVE A0,@CTOTAL
|
||
MOVI ICN2,A0
|
||
MOVE A0,@ICLIST,L
|
||
CLR A0
|
||
MOVE A0,@TARGET_NUM
|
||
|
||
MOVI AIRRECT1,A0
|
||
MOVE A0,@CURRENT,L
|
||
MOVI AIRBRECT1,A0
|
||
MOVE A0,@BCURRENT,L
|
||
|
||
MOVI ENAIR1,A0
|
||
MOVE A0,@EN_CURRENT,L ;FOR BOX COLLISIONS
|
||
|
||
MOVI TUNE5,A0
|
||
CALLA ONESND
|
||
|
||
MOVK 1,A0
|
||
MOVE A0,@ICONS_DN
|
||
SLEEP 12*60
|
||
CREATE ICONPID,SEND_ICON
|
||
DIE
|
||
|
||
DO_DESTROY
|
||
;NOW SHOW WHO GOT WHAT
|
||
MOVI 3E3EH,A6 ;COLOR CYCLE DIGITS
|
||
MOVI DESTROY,A8
|
||
MOVI [3CH,037H],A9 ;SCRN Y/X
|
||
MOVI RD7FONT,A11 ;FONT TABLE
|
||
MOVK 1,A10 ;Y,X SPACING BETWEEN CHARCTERS
|
||
CLR A0
|
||
MOVE A0,@WRLD
|
||
JSRP STRCNRMO
|
||
;DIGITS
|
||
MOVE @JET_KILLS,A8
|
||
CALLA HEXTOASC
|
||
MOVI 3E3EH,A6 ;COLOR CYCLE DIGITS
|
||
MOVI [3CH,5BH],A9 ;SCRN Y/X
|
||
CLR A0
|
||
JSRP STRLNRMO
|
||
|
||
;PLYR 2
|
||
MOVI 3E3EH,A6 ;COLOR CYCLE DIGITS
|
||
MOVI DESTROY,A8
|
||
MOVI [3CH,14EH],A9 ;SCRN Y/X
|
||
MOVI RD7FONT,A11 ;FONT TABLE
|
||
MOVK 1,A10 ;Y,X SPACING BETWEEN CHARCTERS
|
||
CLR A0
|
||
MOVE A0,@WRLD
|
||
JSRP STRCNRMO
|
||
;DIGITS
|
||
MOVE @JET_KILLS+16,A8
|
||
CALLA HEXTOASC
|
||
MOVI 3E3EH,A6 ;COLOR CYCLE DIGITS
|
||
MOVI [3CH,173H],A9 ;SCRN Y/X
|
||
CLR A0
|
||
JSRP STRLNRMO
|
||
RETP
|
||
|
||
|
||
TUNE5 .WORD >F3F0,2,>8008,0 ;AIRPORT TUNE
|
||
|
||
GWAY .BYTE "TRUCKS ESCAPED:",0
|
||
.EVEN
|
||
DESTROY .BYTE "DESTROYED:",0
|
||
.EVEN
|
||
musicsnd .word >f3fe,10,>8009,0 ;Boss music
|
||
|
||
RD4
|
||
MOVI >25000,A1 ;AMOUNT OF SCORE FOR ALL TRUCKS
|
||
CALLA SCRADD2 ;DO IT!
|
||
CALLA DO_EXTRA
|
||
RETS
|
||
RD4B
|
||
MOVI >25000,A1 ;AMOUNT OF SCORE FOR ALL JETS
|
||
CALLA SCRADD2 ;DO IT!
|
||
RETS
|
||
.DEF XTRY_RCK
|
||
XTRY_RCK
|
||
;AT ROAD, BRING ON ORCUS
|
||
CLR A0
|
||
MOVE A0,@WORLDTLY,L
|
||
MOVE A0,@CURRENT,L
|
||
MOVE A0,@BCURRENT,L
|
||
MOVE A0,@EN_CURRENT,L ;FOR BOX COLLISIONS
|
||
MOVE A0,@FND_NOWLK ;FIENDS CAN WALK AGAIN
|
||
MOVI ERECT11,A0
|
||
MOVE A0,@ENEMY_RECT,L ;FOR SPAWNING
|
||
|
||
; CALLA CLNPAL
|
||
|
||
movi musicsnd,a0
|
||
calla ONESND
|
||
|
||
MOVI roarlongsnd,a0
|
||
calla ONESND
|
||
|
||
MOVE @START,A0
|
||
CMPI 6,A0
|
||
JRNZ XTR
|
||
|
||
CLR A0
|
||
MOVE A0,@AFTR_WRP ;NO FREE MAN
|
||
|
||
MOVI COLRPID,A0
|
||
CALLA KIL1C
|
||
CREATE COLRPID,CYCSPECT ;START COLOR CYCLE PROCESS
|
||
.REF SHORT_NOTE
|
||
JSRP SHORT_NOTE
|
||
JRUC XTR2
|
||
|
||
XTR
|
||
MOVK 7,A10 ;ORCUS HERE
|
||
MOVI [-16,0],A9 ;Y ADD IN VALUE
|
||
CREATE0 ZONE_TXT2
|
||
XTR2
|
||
|
||
CLR A0
|
||
MOVE A0,@P1DATA+WAVEPTS
|
||
MOVE A0,@P2DATA+WAVEPTS
|
||
|
||
MOVE @GAMSTATE,A0
|
||
CMPI INAMODE,A0
|
||
JRNZ XCXC
|
||
CREATE0 DELYBS
|
||
JRUC XVXV
|
||
XCXC
|
||
MOVK 16,A0
|
||
CALLA DOLORD ;STORE WAVE #, START WAVE CODE
|
||
|
||
XVXV MOVI ICN5,A0
|
||
MOVE A0,@ICLIST,L
|
||
MOVI ( 5 *32*32)+( 5 *32)+( 5 ),A1
|
||
MOVE A1,@IRQSKYE
|
||
CALLA DELZ10
|
||
;STUFF ORCUS ICONS HERE
|
||
CREATE ICONPID,SEND_ICON
|
||
; MOVE @START,A0
|
||
; CMPI 6,A0
|
||
; JAZ SUCIDE
|
||
CREATE ICONPID,SEND_ICON
|
||
DIE
|
||
DELYBS
|
||
MOVI LORDPID,A0
|
||
CALLA KIL1C
|
||
SLEEP 120
|
||
CREATE BOSSPID,BOSS
|
||
DIE
|
||
|
||
roarlongsnd .word >f990,120,>8117,0 ;Roar
|
||
|
||
PATHU ;DIR,CNT
|
||
.WORD 1,700,0
|
||
PATHA .WORD 8,17EH,1,438H,2,2E0H,3,40,14,1,9,120,7,2EAH+40,1,292H,0 ;DIR,CNT
|
||
PATHB .WORD 2,16AH,1,340H,8,2F4H,1,38AH,0 ;DIR,CNT
|
||
NEWSCRL
|
||
;A10=LIST OF ANGLES,CNTS
|
||
;TURN OF DELETE OFF BOTTOM
|
||
CLR A0
|
||
MOVE A0,@SLOW_DWN
|
||
MOVE @WAVE,A0
|
||
CMPI 18,A0
|
||
JRNZ UPS0
|
||
MOVE @BAKMODS,A0,L
|
||
CMPI ROAD2_MOD,A0 ;SHOW ROAD
|
||
JRNZ UPS
|
||
;ON ROAD #2
|
||
CREATE DELPID,DELOFFHR ;IMAGES OFF LEFT OF SCREEN
|
||
JRUC UP2
|
||
UPS0 CMPI 17,A0
|
||
JRNZ UPS
|
||
;ON ROAD
|
||
CREATE DELPID,DELOFFH ;IMAGES OFF LEFT OF SCREEN
|
||
JRUC UP2
|
||
UPS CREATE DELPID,DELOFF ;DELETE OFF BOTM OF SCRN ONLY
|
||
UP2
|
||
CMPI PATHA,A10
|
||
JRNZ NEWS1
|
||
MOVI ENRECT11,A0
|
||
MOVE A0,@EN_CURRENT,L ;FOR BOX COLLISIONS
|
||
MOVI ERECT11,A0
|
||
MOVE A0,@ENEMY_RECT,L ;FOR SPAWNING
|
||
NOT_YETT
|
||
SLEEPK 1
|
||
;DECIDE WHICH PATH
|
||
MOVE @WORLDTLX,A0,L
|
||
SRL 16,A0
|
||
ADDI 150,A0
|
||
MOVE A0,A1
|
||
ADDI 100,A1
|
||
MOVE @STATUS,A2
|
||
CMPI 3,A2
|
||
JRZ TWOPLYRS
|
||
MOVE @PLYROBJS,A2,L
|
||
JRNZ CKNOW
|
||
MOVE @PLYROBJS+32,A2,L
|
||
CKNOW
|
||
MOVE *A2(OXPOS),A3
|
||
CMP A0,A3
|
||
JRC NEWS0
|
||
CMP A1,A3
|
||
JRNC GOINRGT
|
||
MOVE @SLOW_DWN,A0
|
||
INC A0
|
||
MOVE A0,@SLOW_DWN
|
||
CMPI 190,A0
|
||
JRLO NOT_YETT
|
||
PUSH A8
|
||
MOVK 1,A8
|
||
CREATE FUTUREPID,bomb_neutron
|
||
PULL A8
|
||
CLR A0
|
||
MOVE A0,@SLOW_DWN
|
||
JRUC NOT_YETT ;BR=NOT GOING TO LEFT OR RGT
|
||
TWOPLYRS
|
||
MOVE @PLYROBJS,A2,L
|
||
MOVE @PLYROBJS+32,A4,L
|
||
MOVE *A2(OXPOS),A3
|
||
CMP A0,A3
|
||
JRC MAYBL
|
||
CMP A1,A3
|
||
JRNC MAYBR
|
||
JRUC NOT_YETT ;BR=NOT GOING TO LEFT OR RGT
|
||
MAYBL
|
||
MOVE *A4(OXPOS),A3
|
||
CMP A0,A3
|
||
JRC NEWS0
|
||
JRNC NOT_YETT
|
||
MAYBR MOVE *A4(OXPOS),A3
|
||
CMP A1,A3
|
||
JRC NOT_YETT
|
||
GOINRGT
|
||
CALLA STRT_D ;CYCLE SAT DISH
|
||
MOVI PATHB,A10 ;INDICATES NEW SCROLL WITH SCRL TABLE
|
||
;NOW SWITCH OVER TO OTHER RECTANGLE LIST FOR PATH B
|
||
CREATE FUTRPID,CKFORY3 ;START LAND MINES MOVING LATER ON!
|
||
MOVK 11,A0 ;IT IS PATHB!
|
||
CALLA DOLORD
|
||
MOVI DRECT3,A8 ;PATH B LIST
|
||
MOVI DBRECT3,A9
|
||
MOVI [250,0],A11 ;LINES BEFORE STUFFING
|
||
JRUC NEWS00
|
||
NEWS0
|
||
CALLA STRT_D ;CYCLE SAT DISH
|
||
CREATE FUTRPID,CKFORY4 ;START JEEP COMING DOWN AT PLAYER
|
||
; CREATE0 BEACONS ;SHOW AREA AROUND DISHES ETC.
|
||
MOVK 12,A0 ;ASSUME PATH A LIST
|
||
CALLA DOLORD
|
||
MOVI DRECT3A,A8 ;PATH A LIST
|
||
MOVI DBRECT3A,A9
|
||
MOVI [150,0],A11 ;LINES BEFORE STUFFING
|
||
NEWS00 CREATE TARGPID,STUFFRECT
|
||
.REF WARP_HELP
|
||
CREATE TARGPID,WARP_HELP
|
||
|
||
NEWS1
|
||
MOVE *A10+,A11,W ;A11=DIR OF SCROLL
|
||
JRZ STOPO
|
||
MOVE *A10+,A9,W ;A9=LENGTH OF SCROLL
|
||
NEWS2 MOVE @HALT,A0
|
||
JRZ NEW1
|
||
SLEEPK 1
|
||
JRUC NEWS2
|
||
NEW1 MOVE A11,A0
|
||
SLL 5,A0
|
||
ADDI JTBLS,A0
|
||
MOVE *A0,A0,L
|
||
JUMP A0
|
||
STUFFRECT
|
||
MOVE @WORLDTLY,A0,L
|
||
SUB A11,A0
|
||
MOVE A0,A11
|
||
STF SLEEPK 30
|
||
MOVE @WORLDTLY,A0,L
|
||
CMP A0,A11
|
||
JRLT STF
|
||
;REACHED Y TRIGGER LINE, STUFF CORRECT RECT INFO
|
||
MOVE A8,@CURRENT,L
|
||
MOVE A9,@BCURRENT,L
|
||
DIE
|
||
JTBLS .LONG 0,SUP,SUPRGT,SRGT,0,SDWN,0,SLFT,SUPLFT,WAIT_HR,UPDT1,UPDT2
|
||
.LONG UPDT3,UPDT4,UPDT5,UPDT6,UPDT7,UPDT8,UPDT9,UPDT10 ;19
|
||
UPDT10
|
||
CALLA JEEPCYC ;CYCLE JEEP TIRES
|
||
MOVK 29,A0
|
||
CALLA DOLORD
|
||
MOVI 097AH,A0 ;FOR JUMPING DOWN VERTICALLY
|
||
MOVE A0,@JUMPXY
|
||
;PUT IN RECTANGLES FOR ENEMY COLLISIONS HERE!
|
||
MOVI SIT5,A0
|
||
MOVE A0,@SITLST,L
|
||
MOVI AIR_ER,A0
|
||
MOVE A0,@ENEMY_RECT,L ;FOR SPAWNING
|
||
CREATE ICONPID,SEND_ICON
|
||
JRUC NEWS1
|
||
SIT5 ;[Y,X] ;PAD FOR OTHER DIR ;FOR WARP LOCKDWN IN AIRPORT
|
||
.LONG [0CFH,-10+60],[0CFH,015BH-15],0,0 ;RUNNING IN WITH DIR=1
|
||
.LONG [05CH,0BH+60],[0C8H,167H-15],0,0 ;3
|
||
.LONG [65H,-10+60],[6CH,157H-15],0,0 ;5
|
||
.LONG [6CH,163H-30],[0D8H,0BH+60] ;7
|
||
AIR_ER
|
||
.WORD 0,1,1370H+180,09A1H+265,1370H+190,09A1H+275
|
||
.WORD 0,3,1350H,09A1H+115,1350H+10,09A1H+125
|
||
.WORD 0,7,1370H+410,9A1H+115,1370H+420,9A1H+135
|
||
.WORD 0,1,1370H+180,09A1H+265,1370H+190,09A1H+275
|
||
.WORD 0,3,1350H,09A1H+115,1350H+10,09A1H+125
|
||
.WORD 0,7,1370H+410,9A1H+115,1370H+420,9A1H+135
|
||
.WORD 6,5,1370H+100,9A1H-50,1370H+290,9A1H-50+10
|
||
.WORD 6,5,1370H+100,9A1H-50,1370H+290,9A1H-50+10
|
||
UPDT9
|
||
;AT END OF PLANE AREA LOCKDOWN
|
||
; CALLA OFFBSCRN
|
||
CLR A0
|
||
MOVE A0,@MINE_FLG
|
||
; CALLA OFFSCRN
|
||
MOVI LK6RECT,A0
|
||
MOVE A0,@CURRENT,L
|
||
MOVI LK6BRECT,A0
|
||
MOVE A0,@BCURRENT,L
|
||
JRUC NEWS1
|
||
LK6RECT
|
||
.WORD 0AAH,098H,0367H,0EEH ;TOP FENCE
|
||
.WORD 0
|
||
LK6BRECT
|
||
.WORD 0AAH,098H,0367H-10,0EEH-18 ;TOP FENCE
|
||
.WORD 0
|
||
UPDT8
|
||
CALLA OFFBSCRN
|
||
JRUC NEWS1
|
||
UPDT7 CLR A0
|
||
MOVE A0,@MINE_FLG
|
||
;SPEED UP SCROLL
|
||
MOVI 010000H,A0
|
||
MOVE A0,@HZSPD,L
|
||
; CALLA OFFSCRN
|
||
MOVI AIRRECT3A,A0
|
||
MOVE A0,@CURRENT,L
|
||
MOVI AIRBRECT3,A0
|
||
MOVE A0,@BCURRENT,L
|
||
MOVK 25,A0
|
||
CALLA DOLORD
|
||
; MOVE A0,@WAVE
|
||
CREATE FUTUREPID,RGTJETS
|
||
MOVI ICN1,A0
|
||
MOVE A0,@ICLIST,L
|
||
JRUC NEWS1
|
||
|
||
AIRRECT3A ;AFTER AIRPLANE AREA
|
||
.WORD 01082H,0BF5H,0136AH,0C43H ;TOP FENCE AFTER PLANES
|
||
.WORD 014B8H,0BACH,01540H,0C40H ;FENCED IN AREA ON RGHT
|
||
;LOWER HUT
|
||
.WORD 0134EH,0A5FH,013AEH,0B1DH ;UPPER LEFT OF HUT
|
||
.WORD 0134EH,0B95H,013B2H,0BD4H ;LOWER LFT OF HUT
|
||
;UPPER HUT/FENCE
|
||
.WORD 0134EH,096DH,013AEH,09F8H ;UPPER LEFT OF HUT
|
||
.WORD 0C7CH+1782,0FECH-1663,0E34H+1782-65,1044H-1663 ;TOP LFT FENCE
|
||
;TOP RIGHT HANGAR
|
||
.WORD 1673H,9E0H,1769H,0A18H
|
||
.WORD 1677H,926H,1770H,0966H
|
||
.WORD 0
|
||
AIRBRECT3 ;AFTER AIRPLANE AREA FOR BULLETS
|
||
.WORD 01082H,0BF5H,01360H,0C36H ;TOP FENCE AFTER PLANES
|
||
.WORD 014B0H,0BACH,01540H,0C38H ;FENCED IN AREA ON RGHT
|
||
;LOWER HUT
|
||
.WORD 0134EH,0A5FH-8,013AEH-8,0B1DH-15 ;UPPER LEFT OF HUT
|
||
.WORD 0134EH,0B95H,013B2H-8,0BD4H-15 ;LOWER LFT OF HUT
|
||
;UPPER HUT/FENCE
|
||
.WORD 0134EH,096DH,013AEH-8,09F8H-15 ;UPPER LEFT OF HUT
|
||
.WORD 0C7CH+1782,0FECH-1663,0E34H+1782-65,9B0H ;TOP LFT FENCE
|
||
;TOP RIGHT HANGAR
|
||
.WORD 1683H,9D4H,1769H,0A0CH
|
||
.WORD 1683H,91AH,1770H,095AH
|
||
.WORD 0
|
||
UPDT6
|
||
;UP INTO AIRPLANE AREA
|
||
;START LAND MINES MOVING
|
||
MOVI ICN7,A0
|
||
MOVE A0,@ICLIST,L ;NO WEAPONS
|
||
CLR A0
|
||
MOVE A0,@CURRENT,L
|
||
MOVE A0,@BCURRENT,L
|
||
CREATE FUTUREPID,TUFFMINE
|
||
MOVI GLUCK,A0
|
||
CALLA ONESNDOVR
|
||
; MOVE @PLYROBJS,A0,L
|
||
; JRZ JU2
|
||
; MOVI P1DATA+BMB_CNT,A0
|
||
; CALLA ADDBMB
|
||
; CALLA ADDBMB
|
||
; CALLA ADDBMB
|
||
; CALLA ADDBMB
|
||
;JU2 MOVE @PLYROBJS+32,A0,L
|
||
; JRZ NEWS1
|
||
; MOVI P2DATA+BMB_CNT,A0
|
||
; CALLA ADDBMB
|
||
; CALLA ADDBMB
|
||
; CALLA ADDBMB
|
||
; CALLA ADDBMB
|
||
JRUC NEWS1
|
||
GLUCK .WORD >F1F7,>40,>80E5,0 ;"GOOD LUCK"
|
||
TUFFMINE
|
||
MOVK 24,A0
|
||
MOVE A0,@WAVE
|
||
MOVE A0,@MINE_FLG
|
||
;START THEM MOVING
|
||
DCKF3 CALLA JDOSHIFT
|
||
SLEEPK 30
|
||
;NOW STOP THEM
|
||
CALLA DOSHIFT2
|
||
;DIFFICULTY SETTING HERE!
|
||
SLEEP 45 ;SLEEP 5 FOR HARD DIFFICULTY
|
||
MOVE @MINE_FLG,A0
|
||
JRNZ DCKF3
|
||
DIE
|
||
UPDT5
|
||
;TURN ON ARROW TO LEFT
|
||
MOVK 2,A9 ;A9=0 FOR UP, 1 FOR RGT ,2=LFT
|
||
CREATE ARWPID,ONARRW ;TURN ON UP ARROW
|
||
CREATE0 FIX
|
||
JRUC NEWS1
|
||
UPDT4
|
||
;AS WE SCROLL UP TOWARD CLIFFS
|
||
MOVI ENRECT14,A0
|
||
MOVE A0,@EN_CURRENT,L
|
||
|
||
MOVI DRECT8,A8
|
||
MOVI DBRECT8,A9
|
||
MOVI [242,0],A11 ;LINES BEFORE STUFFING
|
||
CREATE TARGPID,STUFFRECT
|
||
JRUC NEWS1
|
||
UPDT3
|
||
;AS WE SCROLL UP AWAY FROM DISH, SET RECTANGLE CHECK TABLES
|
||
MOVI DRECT7,A0
|
||
MOVE A0,@CURRENT,L
|
||
MOVI DBRECT7,A0
|
||
MOVE A0,@BCURRENT,L
|
||
JRUC NEWS1
|
||
UPDT2
|
||
;AS WE SCROLL UP AWAY FROM DISH, SET RECTANGLE CHECK TABLES
|
||
MOVI DRECT6,A8
|
||
MOVI DBRECT6,A9
|
||
MOVI [200,0],A11 ;LINES BEFORE STUFFING
|
||
CREATE TARGPID,STUFFRECT
|
||
MOVK 1,A0
|
||
MOVE A0,@FND_NOWLK ;FIENDS CAN'T WALK NOW!
|
||
MOVI ENRECT13,A0
|
||
MOVE A0,@EN_CURRENT,L
|
||
; .REF BEACONS
|
||
; CREATE0 BEACONS ;SHOW AREA AROUND DISHES ETC.
|
||
JRUC NEWS1
|
||
UPDT1
|
||
;AS WE SCROLL UP INTO DESERT, SET RECTANGLE CHECK TABLES
|
||
MOVI DRECT5,A0
|
||
MOVE A0,@CURRENT,L
|
||
MOVI DBRECT5,A0
|
||
MOVE A0,@BCURRENT,L
|
||
JRUC NEWS1
|
||
FIX SLEEP 54
|
||
MOVK 10,A0
|
||
MOVE A0,@ARWOFF
|
||
DIE
|
||
|
||
WAIT_HR
|
||
MOVE A9,A0
|
||
CALLA PRCSLP
|
||
JRUC NEWS1
|
||
;WAIT HERE FOR THIS LONG
|
||
SLFT MOVE @HALT,A0
|
||
JRNZ ISTUK6
|
||
DEC A9
|
||
JRZ NEWS1
|
||
MOVE @WORLDTLX,A0,L
|
||
MOVE @HZSPD,A1,L
|
||
SUB A1,A0
|
||
MOVE A0,@WORLDTLX,L
|
||
CALLR MAYBE_UD1
|
||
SLEEPK 2
|
||
CALLR CK_RGTSD ;CHECK FOR PLAYERS DRAGGING AT RGT
|
||
JRNC SLFT
|
||
ISTUK6 SLEEPK 2
|
||
CALLA SEND_NEUT
|
||
CALLR PAUSEX2
|
||
JRC ISTUK6
|
||
JRUC SLFT
|
||
SRGT
|
||
MOVE @HALT,A0
|
||
JRNZ ISTUK6A
|
||
DEC A9
|
||
JRZ NEWS1
|
||
MOVE @WORLDTLX,A0,L
|
||
MOVE @HZSPD,A1,L
|
||
ADD A1,A0
|
||
MOVE A0,@WORLDTLX,L
|
||
CALLR MAYBE_UD1
|
||
SLEEPK 2
|
||
CALLR CK_LFTSD ;CHECK FOR PLAYERS DRAGGING AT LFT SD
|
||
JRC SRGT
|
||
ISTUK6A SLEEPK 2
|
||
CALLA SEND_NEUT
|
||
CALLR PAUSEX
|
||
JRNC ISTUK6A
|
||
JRUC SRGT
|
||
|
||
SUPLFT MOVE @HALT,A0
|
||
JRNZ ISTUK5
|
||
DEC A9
|
||
JRZ NEWS1
|
||
MOVE @WORLDTLY,A0,L
|
||
MOVE @HZSPD,A1,L
|
||
SUB A1,A0
|
||
MOVE A0,@WORLDTLY,L
|
||
MOVE @WORLDTLX,A0,L
|
||
SUB A1,A0
|
||
MOVE A0,@WORLDTLX,L
|
||
CALLR MAYBE_UD1
|
||
SLEEPK 2
|
||
CALLR CK_BTMSD ;CHECK FOR PLAYERS DRAGGING AT BOTM
|
||
JRC ISTUK5
|
||
CALLR CK_RGTSD ;CHECK FOR PLAYERS DRAGGING AT RGT SD
|
||
JRNC SUPLFT
|
||
;STUCK UNTIL PLAYERS MOVE
|
||
ISTUK5 SLEEPK 2
|
||
CALLA SEND_NEUT
|
||
CALLR PAUSE
|
||
JRC ISTUK5
|
||
CALLR PAUSEX2 ;FOR RGT SIDE OF SCRN
|
||
JRC ISTUK5
|
||
;CONTINUE SCROLL, I HAVE MOVED AWAY FROM WALLS
|
||
JRUC SUPLFT
|
||
|
||
SUP MOVE @HALT,A0
|
||
JRNZ ISTUK3
|
||
DEC A9
|
||
JRZ NEWS1
|
||
MOVE @WORLDTLY,A0,L
|
||
MOVE @HZSPD,A1,L
|
||
SUB A1,A0
|
||
MOVE A0,@WORLDTLY,L
|
||
CALLR MAYBE_UD1
|
||
SLEEPK 2
|
||
CALLR CK_BTMSD ;CHECK FOR PLAYERS DRAGGING AT BOTM
|
||
JRNC SUP
|
||
ISTUK3 SLEEPK 2
|
||
CALLA SEND_NEUT
|
||
CALLR PAUSE
|
||
JRC ISTUK3
|
||
JRUC SUP
|
||
|
||
SDWN MOVE @HALT,A0
|
||
JRNZ ISTUK3Z
|
||
DEC A9
|
||
JRZ NEWS1
|
||
MOVE @WORLDTLY,A0,L
|
||
MOVE @HZSPD,A1,L
|
||
ADD A1,A0
|
||
MOVE A0,@WORLDTLY,L
|
||
CALLR MAYBE_UD1
|
||
SLEEPK 2
|
||
CALLR CK_UPSD ;CHECK FOR PLAYERS DRAGGING AT BOTM
|
||
JRC SDWN
|
||
ISTUK3Z SLEEPK 2
|
||
CALLA SEND_NEUT
|
||
CALLR PAUSEZ
|
||
JRNC ISTUK3Z
|
||
JRUC SDWN
|
||
|
||
SUPRGT MOVE @HALT,A0
|
||
JRNZ ISTUK4
|
||
DEC A9
|
||
JRZ NEWS1
|
||
MOVE @WORLDTLY,A0,L
|
||
MOVE @HZSPD,A1,L
|
||
SUB A1,A0
|
||
MOVE A0,@WORLDTLY,L
|
||
MOVE @WORLDTLX,A0,L
|
||
ADD A1,A0
|
||
MOVE A0,@WORLDTLX,L
|
||
CALLR MAYBE_UD1
|
||
SLEEPK 2
|
||
CALLR CK_BTMSD ;CHECK FOR PLAYERS DRAGGING AT BOTM
|
||
JRC ISTUK4
|
||
CALLR CK_LFTSD ;CHECK FOR PLAYERS DRAGGING AT LFT SD
|
||
JRC SUPRGT
|
||
;STUCK UNTIL PLAYERS MOVE
|
||
ISTUK4 SLEEPK 2
|
||
CALLA SEND_NEUT
|
||
CALLR PAUSE
|
||
JRC ISTUK4
|
||
CALLR PAUSEX
|
||
JRNC ISTUK4
|
||
;CONTINUE SCROLL, I HAVE MOVED AWAY FROM WALLS
|
||
JRUC SUPRGT
|
||
|
||
|
||
ONEPX DEC A0
|
||
SLL 5,A0
|
||
ADDI PLYROBJS,A0
|
||
MOVE *A0,A0,L
|
||
MOVE *A0(OXPOS),A2
|
||
CMP A8,A2
|
||
JRNC DOHORZ
|
||
JRUC NOHITX
|
||
|
||
SCROLLFT:
|
||
;A9=WORLDTLX TARGET TO STOP AT
|
||
MOVE @HALT,A0
|
||
JRZ SCR1X
|
||
SLEEPK 1
|
||
JRUC SCROLLFT
|
||
SCR1X MOVE @WORLDTLX,A0,L
|
||
SUB A9,A0
|
||
ABS A0
|
||
CMPI 10000H,A0
|
||
JRC STOPITX
|
||
MOVE @WORLDTLX,A0,L
|
||
MOVE @HZSPD,A1,L
|
||
ADD A1,A0
|
||
MOVE A0,@WORLDTLX,L
|
||
CALLR MAYBE_UD1
|
||
|
||
SLEEPK 2
|
||
|
||
CALLR CK_LFTSD ;CHECK FOR PLAYERS DRAGGING AT LEFT
|
||
;IF CARRY CLEAR, THE SCROLLER IS STUCK RIGHT HERE
|
||
;IF CARRY SET, KEEP SCROLLING
|
||
JRC SCROLLFT
|
||
;STUCK UNTIL PLAYERS MOVE
|
||
ISTUK SLEEPK 2
|
||
CALLA SEND_NEUT
|
||
CALLR PAUSEX
|
||
JRNC ISTUK
|
||
;CONTINUE SCROLL, I HAVE MOVED
|
||
JRUC SCROLLFT
|
||
|
||
|
||
****************************************************************************
|
||
|
||
|
||
CK_LFTSD
|
||
MOVE @WORLDTLX,A1,L
|
||
SRL 16,A1
|
||
ADDK 10,A1 ;STOP SCROLL IF < THIS FROM EDGE
|
||
MOVE @PLYROBJS,A0,L
|
||
JRZ CK2X
|
||
MOVE *A0(OXPOS),A0
|
||
CMP A0,A1
|
||
JRNC CKRT
|
||
; JRC SETME
|
||
CK2X MOVE @PLYROBJS+32,A0,L
|
||
JRZ SETME
|
||
; JRZ CKRT
|
||
MOVE *A0(OXPOS),A0
|
||
CMP A0,A1
|
||
CKRT RETS
|
||
PAUSEX:
|
||
;ONE OF THE PLAYERS IS TO FAR LEFT
|
||
;WAIT UNTIL THIS IS NOT THE CASE THEN CONTINUE SCROLL
|
||
MOVE @WORLDTLX,A1,L
|
||
SRL 16,A1
|
||
ADDI 50,A1 ;70
|
||
MOVE @PLYROBJS,A0,L
|
||
JRZ CK2AX
|
||
MOVE *A0(OXPOS),A0
|
||
CMP A0,A1
|
||
JRNC PAUSE2X
|
||
; JRC SETME
|
||
CK2AX MOVE @PLYROBJS+32,A0,L
|
||
JRZ SETME
|
||
; JRZ PAUSE2X
|
||
MOVE *A0(OXPOS),A0
|
||
CMP A0,A1
|
||
PAUSE2X RETS
|
||
|
||
SETME SETC
|
||
RETS
|
||
CK_RGTSD
|
||
MOVE @WORLDTLX,A1,L
|
||
SRL 16,A1
|
||
ADDI 370,A1 ;STOP SCROLL IF < THIS FROM EDGE
|
||
MOVE @PLYROBJS,A0,L
|
||
JRZ CK3X
|
||
MOVE *A0(OXPOS),A0
|
||
CMP A0,A1
|
||
; JRNC CKRT2
|
||
JRC SETME
|
||
CK3X MOVE @PLYROBJS+32,A0,L
|
||
; JRZ SETME
|
||
JRZ CKRT2
|
||
MOVE *A0(OXPOS),A0
|
||
CMP A0,A1
|
||
CKRT2 RETS
|
||
PAUSEX2:
|
||
;ONE OF THE PLAYERS IS TO FAR RGT
|
||
;WAIT UNTIL THIS IS NOT THE CASE THEN CONTINUE SCROLL
|
||
MOVE @WORLDTLX,A1,L
|
||
SRL 16,A1
|
||
ADDI 340,A1 ;320
|
||
MOVE @PLYROBJS,A0,L
|
||
JRZ CK2AX2
|
||
MOVE *A0(OXPOS),A0
|
||
CMP A0,A1
|
||
; JRNC PAUSE2X2
|
||
JRC SETME
|
||
CK2AX2 MOVE @PLYROBJS+32,A0,L
|
||
; JRZ SETME
|
||
JRZ PAUSE2X2
|
||
MOVE *A0(OXPOS),A0
|
||
CMP A0,A1
|
||
PAUSE2X2
|
||
RETS
|
||
|
||
STOPITX MOVI DELPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA KILALL
|
||
CALLA OFFSCRN
|
||
|
||
MOVE @TARGET_NUM,A0
|
||
CMPI 2,A0
|
||
JRNZ STPOUT
|
||
|
||
;IN FRONT OF ELEVATOR
|
||
MOVI RECT5,A0
|
||
MOVE A0,@CURRENT,L
|
||
CLR A0
|
||
MOVE A0,@HULK_DN
|
||
MOVE A0,@RUNIN ;FROM BOTTOM AGAIN
|
||
MOVE A0,@P1DATA+WAVEPTS
|
||
MOVE A0,@P2DATA+WAVEPTS
|
||
|
||
;DELAY START OF NEW HULK WAVE NEAR ELEVATOR
|
||
MOVI ERECT4,A0
|
||
MOVE A0,@ENEMY_RECT,L
|
||
MOVK 4,A0
|
||
CALLA DOLORD
|
||
|
||
MOVK 16,A0 ;FOR JUMPING DOWN VERTICALLY
|
||
MOVE A0,@JUMPXY
|
||
MOVI 035DH,A0 ;FOR JUMPING DOWN HORIZONTALLY
|
||
MOVE A0,@JUMPXY2
|
||
|
||
;PUT IN RECTANGLES FOR ENEMY COLLISIONS HERE!
|
||
MOVI ENRECT4,A0
|
||
MOVE A0,@EN_CURRENT,L
|
||
CREATE FUTUREPID,POL2 ;BRING ON SIDE POOL
|
||
DIE
|
||
|
||
YCHK
|
||
;CHECK PLAYERS FOR Y TARGET
|
||
MOVE @STATUS,A0
|
||
CMPI 3,A0
|
||
JRNZ ONEP
|
||
;BOTH PLYRS IN GAME
|
||
MOVE @PLYROBJS,A0,L
|
||
MOVE @PLYROBJS+32,A1,L
|
||
MOVE *A0(OYPOS),A2
|
||
MOVE *A1(OYPOS),A3
|
||
CMP A9,A2
|
||
JRC YESHIT
|
||
CMP A9,A3
|
||
JRC YESHIT
|
||
NOHIT SLEEPK 10
|
||
JRUC YCHK
|
||
YESHIT
|
||
;ONE OF PLAYERS IS ABOVE TARGET LINE
|
||
SUB A2,A3
|
||
ABS A3
|
||
CMPI 90,A3
|
||
JRNC NOHIT
|
||
DOVERT
|
||
;START VERT SCROLL!
|
||
MOVE A10,A10
|
||
JRNZ NEWSCRL
|
||
MOVE @TARGET_NUM,A10
|
||
MOVE @WORLDTLY,A9,L
|
||
CMPI 7,A10 ;AFTER 1ST LOCK DOWN
|
||
JRNZ DZL
|
||
;START HZ SCROLL ALSO
|
||
CREATE TARGPID,SCRDHZ
|
||
DZL
|
||
;PUT UP TEXT MESSAGE OF ZONE ZULU!
|
||
MOVE @START,A0
|
||
CMPI 1,A0
|
||
JRZ SKP
|
||
CMPI 1,A10
|
||
JRNZ SKP
|
||
; .IF DEBUG
|
||
; MOVE @START,A0
|
||
; CMPI 3,A0
|
||
; JRNZ SKP
|
||
; .ENDIF
|
||
MOVI 0C0CH,A8 ;0C0C ;3E3E
|
||
CREATE0 DO_ZONE_TXT
|
||
SKP SLL 5,A10
|
||
ADDI TARGET_LST,A10
|
||
MOVE *A10,A0,L
|
||
SUB A0,A9
|
||
JRNN OUTA
|
||
CLR A9
|
||
OUTA
|
||
CREATE TARGPID,SCROLLDWN
|
||
CREATE DELPID,DELOFF
|
||
DIE
|
||
DO_ZONE_TXT
|
||
CMPI 1,A10
|
||
JRNZ ASLP
|
||
CREATE FUTUREPID,SEND_TOP
|
||
ASLP SLEEP 60
|
||
MOVE @WORLDTLY,A0,L
|
||
CMPI [1F0H,0],A0
|
||
JRGT ASLP
|
||
CREATE0 ZONE_TXT
|
||
SLEEP 60
|
||
; CREATE FUTUREPID,SENDH_TOP
|
||
CREATE FUTUREPID,SHIFTLM
|
||
SLEEP 120
|
||
;DELAY START OF NEW HULK WAVE
|
||
MOVI ERECT2,A0
|
||
MOVE A0,@ENEMY_RECT,L
|
||
MOVK 2,A0
|
||
CALLA DOLORD
|
||
;POSSIBLY PUT IN RECTANGLES FOR COLLISIONS HERE!
|
||
CLR A0
|
||
MOVE A0,@EN_CURRENT,L
|
||
DIE
|
||
|
||
TARGET_LST:
|
||
.LONG [02CCH,0],[0275H,0],[01E0H,0],[0A01H,0],0
|
||
.LONG [26DH+2,0],[0,0],[1100,0],[0,0],0 ;DESERT START 26D
|
||
|
||
CKFORY2 SLEEP 60
|
||
MOVE @WORLDTLY,A0,L
|
||
CMPI [3F8H,0],A0
|
||
JRGT CKFORY2
|
||
;READY FOR JEEPS TO COME DOWN AT ME
|
||
MOVK 7,A0
|
||
CALLA DOLORD
|
||
MOVI ERECT7,A0
|
||
MOVE A0,@ENEMY_RECT,L ;FOR SPAWNING
|
||
MOVI SRECT1A,A0
|
||
MOVE A0,@CURRENT,L
|
||
MOVI BSRECT1A,A0
|
||
MOVE A0,@BCURRENT,L
|
||
MOVK 16,A0 ;FOR JUMPING DOWN VERTICALLY
|
||
MOVE A0,@JUMPXY
|
||
MOVK SUBSPDG1,A9 ;BULLET SUBTYPE
|
||
CREATE FIXPID,FIXGUNS
|
||
DIE
|
||
|
||
JEPCYC
|
||
CALLA JEEPCYC
|
||
;TURN ON A JEEP AND SEND HIM DOWN AT PLAYER
|
||
MOVE A0,*A13(PDATA+32),L ;KEEP COLOR CYCLE PROC PNTR
|
||
SLEEP 14*60 ;LAST JEEP IS OFF SCRN
|
||
CALLR KILJC
|
||
DIE
|
||
|
||
CKFORY3 SLEEP 60 ;FOR DESERT MINE FIELD BEFORE
|
||
MOVE @WORLDTLY,A0,L ;2ND LOCKDOWN! PATHA
|
||
CMPI [0E42H,0],A0
|
||
JRGT CKFORY3
|
||
CALLA JEEPCYC
|
||
;TURN ON A JEEP AND SEND HIM DOWN AT PLAYER
|
||
MOVE A0,*A13(PDATA+32),L ;KEEP COLOR CYCLE PROC PNTR
|
||
MOVE @PCNT,A11
|
||
ANDI 01,A11
|
||
ADDK 2,A11
|
||
JP2 SLEEPK 1
|
||
MOVE @HALT,A0
|
||
JRNZ JP2
|
||
MOVI [10CH,0],B0 ;X POS
|
||
MOVI [11EH,0],B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A10
|
||
; MOVI [1,0],B0 ;JEEP SPEED
|
||
; MOVI [2,0E000H],B1
|
||
MOVI [1,8000H],B0 ;JEEP SPEED
|
||
MOVI [3,0A000H],B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A9 ;VERT SPEED FOR JEEP
|
||
CREATE JEEPID,ONEJEEP ;FUTUREPID
|
||
MOVI 60*4,B0
|
||
MOVI 60*7,B1
|
||
CALLA RANGRAND
|
||
CALLA PRCSLP
|
||
DSJ A11,JP2
|
||
SLEEP 200 ;LAST JEEP IS OFF SCRN
|
||
CALLR KILJC
|
||
CKFORY3A
|
||
SLEEP 60 ;FOR DESERT MINE FIELD BEFORE
|
||
MOVE @WORLDTLY,A0,L ;2ND LOCKDOWN!
|
||
CMPI [0CD2H,0],A0
|
||
JRGT CKFORY3A
|
||
|
||
MOVE @WORLDTLX,A9,L
|
||
; ADDI [70,0],A9
|
||
MOVE A9,A10
|
||
ADDI [400,0],A10 ;300
|
||
|
||
MOVK 6,A8
|
||
;START THEM MOVING
|
||
CKF3 CALLA DOSHIFT
|
||
SLEEP 60
|
||
;NOW STOP THEM
|
||
CALLA DOSHIFT2
|
||
;DIFFICULTY SETTING HERE!
|
||
SLEEP 50 ;SLEEP 1 FOR HARD DIFFICULTY
|
||
DSJ A8,CKF3
|
||
DIE
|
||
KILJC
|
||
MOVE *A13(PDATA+32),A0,L
|
||
CALLA PEXIST
|
||
JRZ CRT
|
||
MOVE *A0(PROCID),A1
|
||
CMPI CYCPID,A1
|
||
JRNZ CRT
|
||
CALLA KILL ;KILL COLOR CYCLE PROCESS
|
||
CRT RETS
|
||
|
||
CKFORY4
|
||
SLEEP 120 ;FOR JEEPS
|
||
MOVE @WORLDTLY,A0,L
|
||
CMPI [0FD2H,0],A0
|
||
JRGT CKFORY4
|
||
|
||
CALLA JEEPCYC
|
||
;TURN ON A JEEP AND SEND HIM DOWN AT PLAYER
|
||
MOVE A0,*A13(PDATA+32),L ;KEEP COLOR CYCLE PROC PNTR
|
||
MOVE @PCNT,A11
|
||
ANDI 03H,A11
|
||
ADDK 7,A11
|
||
JP1 SLEEPK 1
|
||
MOVE @HALT,A0
|
||
JRNZ JP1
|
||
MOVI [125,0],B0
|
||
MOVI [185,0],B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A10 ;XPOS FOR JEEP
|
||
; MOVI [1,0],B0
|
||
; MOVI [2,0E000H],B1
|
||
MOVI [1,8000H],B0
|
||
MOVI [3,0C000H],B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A9 ;VERT SPEED FOR JEEP
|
||
CREATE JEEPID,ONEJEEP ;FUTUREPID
|
||
MOVI 60*4,B0
|
||
MOVI 60*7,B1
|
||
CALLA RANGRAND
|
||
CALLA PRCSLP
|
||
DSJ A11,JP1
|
||
|
||
SLEEP 200 ;LAST JEEP IS OFF SCRN
|
||
CALLR KILJC
|
||
; MOVE *A13(PDATA+32),A0,L
|
||
; CALLA KILL ;KILL COLOR CYCLE PROCESS
|
||
SLEEP 30*60
|
||
CK4A SLEEP 90
|
||
MOVE @WORLDTLY,A0,L
|
||
CMPI [0BD0H,0],A0
|
||
JRGT CK4A
|
||
MOVE @WORLDTLX,A0,L
|
||
CMPI [0160H,0],A0
|
||
JRGT CK4A
|
||
;START LAND MINES SHIFTING AT END OF PATHA!
|
||
MOVE @WORLDTLX,A9,L
|
||
SUBI [170,0],A9
|
||
MOVE A9,A10
|
||
ADDI [900,0],A10
|
||
MOVK 4,A8
|
||
;START THEM MOVING
|
||
CKF5 CALLA DOSHIFT
|
||
SLEEP 60
|
||
;NOW STOP THEM
|
||
CALLA DOSHIFT2
|
||
;DIFFICULTY SETTING HERE!
|
||
SLEEPK 5 ;SLEEP 1 FOR HARD DIFFICULTY
|
||
DSJ A8,CKF3
|
||
DIE
|
||
CKFORY SLEEP 60
|
||
MOVE @WORLDTLY,A0,L
|
||
CMPI [780H,0],A0
|
||
JRGT CKFORY
|
||
MOVE @WORLDTLX,A9,L
|
||
ADDI [76,0],A9
|
||
MOVE A9,A10
|
||
ADDI [170,0],A10
|
||
|
||
MOVK 6,A8
|
||
; MOVE A8,@WAVE
|
||
MOVI 34,A8
|
||
;START THEM MOVING
|
||
CKF CALLA DOSHIFT
|
||
SLEEP 30
|
||
;NOW STOP THEM
|
||
CALLA DOSHIFT2
|
||
;DIFFICULTY SETTING HERE!
|
||
SLEEP 25 ;SLEEP 1 FOR HARD DIFFICULTY
|
||
DSJ A8,CKF
|
||
|
||
MOVE @WORLDTLY,A0,L
|
||
MOVK 1,A8
|
||
CMPI [580H,0],A0
|
||
JRGT CKF
|
||
MOVK 7,A8 ;FOR BARRELS ALONG FREEWAY
|
||
MOVE A8,@WAVE
|
||
CREATE FUTRPID,CKFORY2
|
||
DIE
|
||
|
||
ONEP DEC A0
|
||
SLL 5,A0
|
||
ADDI PLYROBJS,A0
|
||
MOVE *A0,A0,L
|
||
JRZ NOHIT
|
||
MOVE *A0(OYPOS),A2
|
||
CMP A9,A2
|
||
JRC DOVERT
|
||
JRUC NOHIT
|
||
SCRDHZ
|
||
;MAYBE SCROLL SCREEN HORIZ
|
||
;CHECK TO SEE IF BOTH PLAYERS ARE IN FIXED Y COLUMN
|
||
;IF SO,
|
||
;CHECK CURRENT WORLDX
|
||
;IF IT IS AT BORDER, EXIT, IF NOT, SCROLL
|
||
;A9=WORLDTLY TARGET TO STOP AT
|
||
CLR A0
|
||
MOVE A0,*A13(PDATA),L ;BOTH LFT/RGT MINIMUM SCROLL
|
||
SCRDHZA
|
||
MOVE @HALT,A0
|
||
JRZ OSCR1
|
||
SLEEPK 1
|
||
JRUC SCRDHZA
|
||
OSCR1
|
||
MOVE *A13(PDATA),A0 ;GOING LEFT?
|
||
JRNZ GOL
|
||
MOVE *A13(PDATA+16),A0 ;GOING RIGHT
|
||
JRNZ GOR
|
||
MOVE @WORLDTLX,A1,L
|
||
SRL 16,A1
|
||
ADDI 140,A1
|
||
MOVE @PLYROBJS,A0,L
|
||
JRZ PK2
|
||
MOVE *A0(OXPOS),A0
|
||
CMP A0,A1
|
||
JRC NOTL ;NOT ON LEFT SIDE
|
||
;THIS GUY IS ON LEFT OF SCREEN
|
||
PK2 MOVE @PLYROBJS+32,A0,L
|
||
JRZ GOLZ ;GO LEFT
|
||
MOVE *A0(OXPOS),A0
|
||
CMP A0,A1
|
||
JRC NOTL
|
||
GOLZ
|
||
;SCROLL TO LEFT
|
||
MOVK 30,A0
|
||
MOVE A0,*A13(PDATA) ;TIME GOING LEFT
|
||
JRUC GOL
|
||
NOTL
|
||
;DO NOT SCROLL LEFT
|
||
;CHECK FOR RIGHT SIDE SCROLL
|
||
ADDI 120,A1
|
||
MOVE @PLYROBJS,A0,L
|
||
JRZ XPK2
|
||
MOVE *A0(OXPOS),A0
|
||
CMP A0,A1
|
||
JRNC NOTR ;NOT ON RGT SIDE
|
||
;THIS GUY IS ON RGT OF SCREEN
|
||
XPK2 MOVE @PLYROBJS+32,A0,L
|
||
JRZ GORZ ;GO LEFT
|
||
MOVE *A0(OXPOS),A0
|
||
CMP A0,A1
|
||
JRNC NOTR
|
||
GORZ
|
||
;SCROLL TO RIGHT
|
||
MOVK 30,A0
|
||
MOVE A0,*A13(PDATA+16) ;TIME GOING LEFT
|
||
JRUC GOR
|
||
NOTRZ CLR A0
|
||
MOVE A0,*A13(PDATA+16) ;NO MORE TO RIGHT
|
||
NOTR
|
||
;NOT SCROLLING TO RIGHT
|
||
SLEEPK 2
|
||
JRUC SCRDHZA
|
||
NOMORE CLR A0
|
||
MOVE A0,*A13(PDATA)
|
||
JRUC NOTR
|
||
GOL
|
||
;SCROLL LEFT
|
||
DEC A0
|
||
MOVE A0,*A13(PDATA)
|
||
MOVE @WORLDTLX,A0,L
|
||
CMPI [01CH,0],A0
|
||
JRLT NOMORE
|
||
;CAN GO FARTHER TO LEFT
|
||
MOVE @HZSPD,A1,L
|
||
SUB A1,A0
|
||
INH1 MOVE A0,@WORLDTLX,L
|
||
CALLR MAYBE_UD1
|
||
JRUC NOTR
|
||
GOR
|
||
;SCROLL LEFT
|
||
DEC A0
|
||
MOVE A0,*A13(PDATA+16)
|
||
MOVE @WORLDTLX,A0,L
|
||
CMPI [01A0H,0],A0
|
||
JRGT NOTRZ
|
||
;CAN GO FARTHER TO RIGHT
|
||
MOVE @HZSPD,A1,L
|
||
ADD A1,A0
|
||
JRUC INH1
|
||
|
||
SCROLLDWN:
|
||
;A9=WORLDTLY TARGET TO STOP AT
|
||
MOVE @HALT,A0
|
||
JRZ SCR1
|
||
SLEEPK 1
|
||
JRUC SCROLLDWN
|
||
SCR1 MOVE @WORLDTLY,A0,L
|
||
SUB A9,A0
|
||
ABS A0
|
||
CMPI 10000H,A0
|
||
JRC STOPIT
|
||
MOVE @WORLDTLY,A0,L
|
||
MOVE @HZSPD,A1,L
|
||
SUB A1,A0
|
||
MOVE A0,@WORLDTLY,L
|
||
|
||
CALLR MAYBE_UD1
|
||
|
||
SLEEPK 2
|
||
|
||
CALLR CK_BTMSD ;CHECK FOR PLAYERS DRAGGING AT BOTM
|
||
JRNC SCROLLDWN
|
||
ISTUK2 SLEEPK 2
|
||
CALLA SEND_NEUT
|
||
CALLR PAUSE
|
||
JRC ISTUK2
|
||
JRUC SCROLLDWN
|
||
|
||
CK_BTMSD
|
||
MOVE @WORLDTLY,A1,L
|
||
SRL 16,A1
|
||
ADDI 220,A1
|
||
MOVE @PLYROBJS,A0,L
|
||
JRZ CK2
|
||
MOVE *A0(OYPOS),A0
|
||
CMP A0,A1
|
||
JRC CKBR
|
||
CK2 MOVE @PLYROBJS+32,A0,L
|
||
JRZ SETME2
|
||
MOVE *A0(OYPOS),A0
|
||
CMP A0,A1
|
||
CKBR RETS
|
||
|
||
CK_UPSD
|
||
MOVE @WORLDTLY,A1,L
|
||
SRL 16,A1
|
||
ADDI 15,A1
|
||
MOVE @PLYROBJS,A0,L
|
||
JRZ CK2Z
|
||
MOVE *A0(OYPOS),A0
|
||
CMP A0,A1
|
||
JRNC CKBR
|
||
CK2Z MOVE @PLYROBJS+32,A0,L
|
||
JRZ SETME2
|
||
MOVE *A0(OYPOS),A0
|
||
CMP A0,A1
|
||
RETS
|
||
|
||
PAUSE:
|
||
;ONE OF THE PLAYERS IS TO LOW
|
||
;WAIT UNTIL THIS IS NOT THE CASE THEN CONTINUE SCROLL
|
||
MOVE @WORLDTLY,A1,L
|
||
SRL 16,A1
|
||
ADDI 195,A1 ;190
|
||
MOVE @PLYROBJS,A0,L
|
||
JRZ CK2A
|
||
MOVE *A0(OYPOS),A0
|
||
CMP A0,A1
|
||
JRC PAUSE2
|
||
CK2A MOVE @PLYROBJS+32,A0,L
|
||
JRZ SETME2
|
||
MOVE *A0(OYPOS),A0
|
||
CMP A0,A1
|
||
PAUSE2 RETS
|
||
SETME2 CLRC
|
||
RETS
|
||
PAUSEZ:
|
||
;ONE OF THE PLAYERS IS TO HI
|
||
;WAIT UNTIL THIS IS NOT THE CASE THEN CONTINUE SCROLL
|
||
MOVE @WORLDTLY+16,A1
|
||
ADDK 25,A1 ;190
|
||
MOVE @PLYROBJS,A0,L
|
||
JRZ CK2AZ
|
||
MOVE *A0(OYPOS),A0
|
||
CMP A0,A1
|
||
JRNC SETME2Z
|
||
CK2AZ MOVE @PLYROBJS+32,A0,L
|
||
JRZ PAUSE2Z
|
||
MOVE *A0(OYPOS),A0
|
||
CMP A0,A1
|
||
PAUSE2Z RETS
|
||
SETME2Z CLRC
|
||
RETS
|
||
|
||
MAYBE_UD1
|
||
MOVE @CNTDIG1,A0
|
||
JRZ ALREA
|
||
MOVE @CNTDIG2,A1
|
||
JRZ ALREA
|
||
;BOTH CNTRS GOING!
|
||
MOVI SCROLL_FIX,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
JRNZ ALREA
|
||
;DO IT
|
||
MOVK 1,A0
|
||
MOVE A0,@HALT
|
||
CREATE SCROLL_FIX,BOTHDEAD
|
||
ALREA DEC A8
|
||
MOVE A8,A0
|
||
MOVK 1FH,A0
|
||
AND A8,A0
|
||
JRNZ NOBGND
|
||
;CALL BGND_UD1 OCCASIONALLY
|
||
CLR A0
|
||
MOVE A0,@SLOW_DWN
|
||
JAUC BGND_UD1
|
||
NOBGND
|
||
RETS
|
||
BOTHDEAD
|
||
SLEEPK 1
|
||
MOVE @CNTDIG1,A0
|
||
JRZ BDONE
|
||
MOVE @CNTDIG2,A0
|
||
JRNZ BOTHDEAD
|
||
BDONE CLR A0
|
||
MOVE A0,@HALT
|
||
DIE
|
||
|
||
STOPIT MOVI DELPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA KILALL
|
||
CALLA OFFSCRN
|
||
MOVE @TARGET_NUM,A0
|
||
CMPI 8,A0
|
||
JRZ LCK1
|
||
CMPI 6,A0
|
||
JRZ YEA
|
||
CMPI 5,A0
|
||
JRNZ STP0
|
||
YEA
|
||
;DESERT AREA 1ST STOPPAGE
|
||
MOVK 2,A0
|
||
MOVE A0,@ARWOFF ;BLINK ARROW X MORE TIMES THEN KILL!
|
||
MOVI DRECT2,A0
|
||
MOVE A0,@CURRENT,L
|
||
MOVI DBRECT2,A0
|
||
MOVE A0,@BCURRENT,L
|
||
|
||
SLEEPK 20
|
||
|
||
MOVK 5,A10
|
||
MOVI [-16,0],A9 ;Y ADD IN VALUE
|
||
CREATE0 ZONE_TXT2
|
||
;NO COLLISIONS
|
||
CLR A0
|
||
MOVE A0,@P1DATA+WAVEPTS
|
||
MOVE A0,@P2DATA+WAVEPTS
|
||
MOVE A0,@EN_CURRENT,L ;FOR BOX COLLISIONS
|
||
MOVI ERECT10,A0
|
||
MOVE A0,@ENEMY_RECT,L ;FOR SPAWNING
|
||
|
||
SLEEPK 30 ;40
|
||
MOVK 8,A0
|
||
MOVE A0,@CTOTAL
|
||
MOVK 10,A0
|
||
CALLA DOLORD ;STORE WAVE #, START WAVE CODE
|
||
SLEEP 10*60
|
||
MOVE @WORLDTLX,A0,L
|
||
ADDI [01CH,0],A0
|
||
MOVE @WORLDTLY,A1,L
|
||
ADDI [0C5H,0],A1
|
||
MOVI FINDKEYS,A2
|
||
MOVI 71,A3
|
||
MOVI DMAWNZ|M_NOCOLL,A4
|
||
MOVI CLSDEAD,A5
|
||
CLR A6
|
||
CLR A7
|
||
CALLA BEGINOBJ2
|
||
MOVE A8,A0
|
||
CALLA OBJOFF
|
||
MOVK 12,A9
|
||
UB1 MOVE A8,A0
|
||
CALLA OBJON
|
||
SLEEPK 10
|
||
MOVE A8,A0
|
||
CALLA OBJOFF
|
||
SLEEPK 10
|
||
DSJ A9,UB1
|
||
MOVE A8,A0
|
||
CALLA DELOBJ
|
||
DIE
|
||
|
||
STP0 CMPI 1,A0
|
||
JRZ STP1
|
||
CMPI 3,A0
|
||
JRNZ STPOUT
|
||
;END OF SECRET PATH
|
||
CLR A0
|
||
MOVE A0,@P1DATA+WAVEPTS
|
||
MOVE A0,@P2DATA+WAVEPTS
|
||
MOVK 8,A0
|
||
CALLA DOLORD
|
||
MOVI ERECT8,A0
|
||
MOVE A0,@ENEMY_RECT,L ;FOR SPAWNING
|
||
CLR A0
|
||
MOVE A0,@WORLDTLY,L
|
||
CREATE FUTUREPID,POL ;BRING ON BOTTOM POOL
|
||
MOVI FIXPID,A0
|
||
CALLA KIL1C
|
||
DIE
|
||
|
||
|
||
STP1 ;REACTOR ON SCREEN
|
||
CLR A0
|
||
MOVE A0,@P1DATA+WAVEPTS
|
||
MOVE A0,@P2DATA+WAVEPTS
|
||
movk AUDREACTOR,a0
|
||
calla aud_addnumplyrs
|
||
CLR A0
|
||
MOVE A0,*A13(PROCID),W
|
||
MOVI 10000H,A0
|
||
MOVE A0,@WORLDTLY,L
|
||
MOVI RECT3,A0
|
||
MOVE A0,@CURRENT,L
|
||
;DELAY START OF NEW HULK WAVE
|
||
MOVI ERECT3,A0
|
||
MOVE A0,@ENEMY_RECT,L
|
||
MOVK 3,A0
|
||
CALLA DOLORD
|
||
MOVI ICN2,A0
|
||
MOVE A0,@ICLIST,L
|
||
CREATE ICONPID,SEND_ICON
|
||
;PUT IN RECTANGLES FOR ENEMY COLLISIONS HERE!
|
||
MOVI ENRECT3,A0
|
||
MOVE A0,@EN_CURRENT,L
|
||
CREATE FUTUREPID,POL ;BRING ON BOTTOM POOL
|
||
MOVI CYCPID,A0
|
||
MOVE A0,*A13(PROCID)
|
||
;ANI FLAG SHOULD HAVE DONE THIS!
|
||
MOVI -30,A0
|
||
MOVE A0,@JUMPXY
|
||
MOVI RECT2,A0
|
||
MOVE A0,@CURRENT,L
|
||
MOVI BRECT2,A0
|
||
MOVE A0,@BCURRENT,L
|
||
;TEMPORARY SHIT
|
||
SLEEP 7*60
|
||
CREATE CYCPID,PUMP_RED
|
||
MOVI 10000H,A0
|
||
MOVE A0,@WORLDTLY,L
|
||
DIE
|
||
ENDWV
|
||
;WAIT HERE UNTIL END OF WAVE REACHED!
|
||
;BATS TO FLY OUT OF SLIME?
|
||
|
||
;AT TOP OF FIRST WORLD
|
||
;START ARROW TO RIGHT!
|
||
;WAVE DONE
|
||
MOVI SECDR,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
JRZ NOCH0
|
||
;FOUND SECRET DOOR PROCESS
|
||
CALLA KILL
|
||
NOCH0
|
||
CLR A0 ;FOR BARREL EXPLOSION TIMING
|
||
MOVE A0,@WAVE
|
||
|
||
MOVE @KEEPIT,A8,L ;GET RID OF RIGHT SIDE POOL
|
||
MOVI 8000H,A1
|
||
MOVE A1,*A8(OXVEL),L
|
||
|
||
CREATE0 DO_WINNER
|
||
|
||
;START HORZ SCROLL TO ELEVATOR
|
||
MOVK 1,A9 ;A9=0 FOR UP, 1 FOR RGT
|
||
CREATE ARWPID,ONARRW ;TURN ON UP ARROW
|
||
MOVK 2,A0
|
||
MOVE A0,@TARGET_NUM ;NEXT TARGET NUMBER FOR SCROLL
|
||
MOVE @WORLDTLX,A8,L
|
||
SRL 16,A8
|
||
ADDI 80,A8 ;200 ;A8=X TARGET LINE TO TRIGGER SCROLL
|
||
CLR A9 ;A9=0 MEANS NOT CHECKING FOR Y TARGET
|
||
CLR A10
|
||
CREATE TARGPID,TARGET
|
||
SLEEP 53
|
||
MOVK 15,A0
|
||
MOVE A0,@ARWOFF ;BLINK ARROW X MORE TIMES THEN KILL!
|
||
MOVE @KEEPIT,A0,L ;GET RID OF RIGHT SIDE POOL
|
||
CALLA DELOBJ
|
||
CREATE0 FIXSCROLL
|
||
STPOUT DIE
|
||
|
||
FIXSCROLL
|
||
SLEEPK 1
|
||
MOVE @WAVE,A0
|
||
SUBK 4,A0
|
||
JAZ SUCIDE
|
||
MOVE @WORLDTLX+16,A0
|
||
CMPI 480,A0
|
||
JRLT FIXSCROLL
|
||
MOVK 2,A0
|
||
MOVE A0,@TARGET_NUM
|
||
MOVI TARGPID,A0
|
||
CALLA KIL1C
|
||
JRUC STOPITX
|
||
|
||
SETRUNIN
|
||
;A10=TARGET FOR CHANGING @RUNIN TO 1
|
||
SLEEP 60
|
||
MOVE @WORLDTLX,A0,L
|
||
CMP A10,A0
|
||
JRLT SETRUNIN
|
||
MOVK 1,A0
|
||
MOVE A0,@RUNIN
|
||
DIE
|
||
|
||
DELOFF SLEEP 3*60
|
||
;FOR SCROLLING DOWN
|
||
CALLA DELOFFBOT
|
||
JRUC DELOFF
|
||
DELOFFH SLEEP 8*60
|
||
;FOR SCROLLING RGT TO LEFT
|
||
CALLA DELOFFBOTL
|
||
JRUC DELOFFH
|
||
DELOFFHR
|
||
SLEEP 8*60
|
||
;FOR SCROLLING LFT TO RGT
|
||
CALLA DELOFFBOTR
|
||
JRUC DELOFFHR
|
||
|
||
DELOFFBOTR:
|
||
;DELETE FOREGROUND OBJECTS THAT ARE OFF RIGHT SIDE OF SCREEN
|
||
MOVE @WORLDTLX,A1,L
|
||
SRL 16,A1
|
||
ADDI 400,A1
|
||
MOVI RAMLST,A3
|
||
CLR A0
|
||
MOVE A0,*A3,L
|
||
MOVI OBJLST,A0
|
||
ROBJS1X
|
||
MOVE *A0,A0,L
|
||
JREQ SOBJSX ;SEARCHED THEM ALL
|
||
MOVE *A0(OID),A4,W
|
||
CMPI CLSNEUT|TYPTRUNK,A4
|
||
JRZ RONTAX
|
||
CMPI CLSNEUT|TYPICON|SUBCSH,A4
|
||
JRZ RONTAX
|
||
;ENTER OTHER OIDS TO KILL HERE
|
||
JRUC ROBJS1X
|
||
RONTAX MOVE *A0(OXPOS),A2
|
||
CMP A2,A1
|
||
JRNC ROBJS1X
|
||
MOVE A0,*A3+,L ;IMG TO BE DELETED
|
||
CLR A4
|
||
MOVE A4,*A3,L ;ZERO NEXT ENTRY
|
||
JRUC ROBJS1X
|
||
|
||
DELOFFBOTL:
|
||
;DELETE FOREGROUND OBJECTS THAT ARE OFF LEFT SIDE OF SCREEN
|
||
MOVE @WORLDTLX,A1,L
|
||
SRL 16,A1
|
||
MOVI RAMLST,A3
|
||
CLR A0
|
||
MOVE A0,*A3,L
|
||
MOVI OBJLST,A0
|
||
SOBJS1X
|
||
MOVE *A0,A0,L
|
||
JREQ SOBJSX ;SEARCHED THEM ALL
|
||
MOVE *A0(OID),A4,W
|
||
CMPI CLSNEUT|TYPTRUNK,A4
|
||
JRZ CONTAX
|
||
CMPI CLSNEUT|TYPICON|SUBCSH,A4
|
||
JRZ CONTAX
|
||
;ENTER OTHER OIDS TO KILL HERE
|
||
JRUC SOBJS1X
|
||
CONTAX MOVE *A0(OXPOS),A2
|
||
MOVE *A0(OSIZEX),A4
|
||
ADD A4,A2
|
||
CMP A2,A1
|
||
JRC SOBJS1X
|
||
MOVE A0,*A3+,L ;IMG TO BE DELETED
|
||
CLR A4
|
||
MOVE A4,*A3,L ;ZERO NEXT ENTRY
|
||
JRUC SOBJS1X
|
||
|
||
DELOFFBOT:
|
||
;DELETE FOREGROUND OBJECTS THAT ARE OFF BOTTOM OF SCREEN
|
||
MOVE @WORLDTLY,A1,L
|
||
ADDI [260,0],A1
|
||
SRL 16,A1
|
||
MOVI RAMLST,A3
|
||
CLR A0
|
||
MOVE A0,*A3,L
|
||
MOVI OBJLST,A0
|
||
SOBJS1
|
||
MOVE *A0,A0,L
|
||
JREQ SOBJSX
|
||
MOVE *A0(OID),A4,W
|
||
CMPI CLSNEUT|TYPTRUNK,A4
|
||
JRZ CONTA
|
||
CMPI CLSNEUT|TYPICON|SUBCSH,A4
|
||
JRZ CONTA
|
||
; CMPI CLSNEUT|TYPMINE,A4 ;9/16/91
|
||
; JRZ CONTA0
|
||
;ENTER OTHER OIDS TO KILL HERE
|
||
JRUC SOBJS1
|
||
;CONTA0
|
||
; MOVE *A0(OYPOS),A2
|
||
; CMP A2,A1
|
||
; JRNC SOBJS1
|
||
; MOVE *A0(OPLINK),A1,L
|
||
; JRZ CONTAB
|
||
; SWAP A0,A1
|
||
; CALLA KILL
|
||
; MOVE A1,A0
|
||
; JRUC CONTAB
|
||
CONTA MOVE *A0(OYPOS),A2
|
||
CMP A2,A1
|
||
JRNC SOBJS1
|
||
CONTAB
|
||
MOVE A0,*A3+,L ;IMG TO BE DELETED
|
||
CLR A4
|
||
MOVE A4,*A3,L ;ZERO NEXT ENTRY
|
||
JRUC SOBJS1
|
||
SOBJSX
|
||
MOVI RAMLST,A1
|
||
DELT MOVE *A1+,A0,L
|
||
JRZ DELX
|
||
CALLA DELOBJ
|
||
JRUC DELT
|
||
DELX RETS
|
||
|
||
POL
|
||
;TURN ON BOTTOM GOOB POOL
|
||
MOVI GOOB,A14
|
||
CALLA DO_ALL_STUFF
|
||
MOVE A0,A8
|
||
SLEEP 04CH
|
||
CLR A0
|
||
MOVE A0,*A8(OYVEL),L
|
||
MOVI 0F4H,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
DIE
|
||
;POL1
|
||
;;TURN ON BOTTOM GOOB POOL
|
||
; MOVI GOOB,A14
|
||
; CALLA DO_ALL_STUFF
|
||
; CALLA ADJSTWTL
|
||
; MOVE A0,A8
|
||
; SLEEP 04CH
|
||
; CLR A0
|
||
; MOVE A0,*A8(OYVEL),L
|
||
; DIE
|
||
POL2
|
||
;TURN ON SIDE GOOB POOL BY ELEVATOR
|
||
MOVI GOOBA,A14
|
||
CALLA DO_ALL_STUFF
|
||
CALLA ADJSTWTL
|
||
MOVE A0,A8
|
||
SLEEP 04CH
|
||
CLR A0
|
||
MOVE A0,*A8(OXVEL),L
|
||
DIE
|
||
GOOB:
|
||
.LONG [0DAH,0],[0108H,0],GOOBB
|
||
.WORD 20,DMAWNZ|M_NOCOLL,CLSNEUT|TYPNEUT
|
||
.LONG 0,-4000H
|
||
GOOBA:
|
||
.LONG [1DCH-1DFH,0],[084H,0],GOOBR
|
||
.WORD 20,DMAWNZ|M_NOCOLL|M_FLIPH,CLSNEUT|TYPNEUT
|
||
.LONG 04000H,0
|
||
|
||
BNC_PLYR2
|
||
;MOVE PLAYER AWAY FROM SOME OBJECT
|
||
;A8=PLYR LEGS
|
||
;A0=OBJECT TO SLIDE AWAY FROM
|
||
;BNC FARTHER AWAY WITH THIS ENTRY POINT
|
||
MMTM SP,A1,A2,A3,A4,A5,A6,A7,A9
|
||
MOVI [2,0],A7
|
||
JRUC BNCIN
|
||
BNC_PLYR
|
||
;MOVE PLAYER AWAY FROM SOME OBJECT
|
||
;A8=PLYR LEGS
|
||
;A0=OBJECT TO SLIDE AWAY FROM
|
||
MMTM SP,A1,A2,A3,A4,A5,A6,A7,A9
|
||
MOVI [1,8000H],A7
|
||
BNCIN:
|
||
MOVE *A8(OIMG),A1,L
|
||
CMPI BLADE,A1
|
||
JRZ AOUT3
|
||
CMPI SHLD1,A1
|
||
JRZ AOUT3
|
||
CMPI SHLD2,A1
|
||
JRZ AOUT3
|
||
move @WAVE,A1
|
||
subk 16,A1
|
||
jrnz notorc2 ;!Orcus?
|
||
move *a8(OYPOS),a1
|
||
move @WORLDTLY+16,a2
|
||
addi 240,a2
|
||
cmp a2,a1
|
||
jrge AOUT3 ;Don't push plyr
|
||
move @bossd_t,a0,L
|
||
move *a0(OXPOS),a2
|
||
addi 43,a2
|
||
move *a0(OYVAL),a3,L
|
||
jruc bossfix
|
||
|
||
notorc2 MOVE A0,A9
|
||
MOVE A8,-*SP,L ;PUSH A8
|
||
MOVE A0,A8
|
||
CALLA GETCPNT
|
||
;A1=Y/X CENTER POS
|
||
MOVE *SP+,A8,L ;PULL A8
|
||
MOVE A1,A2
|
||
MOVE A1,A3
|
||
bossfix sll 16,a2
|
||
MOVE *A8(OPLINK),A5,L
|
||
MOVE *A5(TSO_PTR),A5,L
|
||
MOVE A8,A1
|
||
MOVE *A1(OXVAL),A4,L
|
||
MOVE *A5(OXVAL),A6,L
|
||
CMP A4,A2
|
||
JRGT GONEG
|
||
;ADD TO PLYR X
|
||
ADD A7,A4
|
||
ADD A7,A6
|
||
JRUC GOGO
|
||
GONEG
|
||
SUB A7,A4
|
||
SUB A7,A6
|
||
GOGO
|
||
MMTM SP,A4,A6
|
||
MOVE *A1(OYVAL),A4,L
|
||
MOVE *A5(OYVAL),A6,L
|
||
CMP A4,A3
|
||
JRGT GONEG2
|
||
;ADD TO PLYR Y
|
||
ADD A7,A4
|
||
ADD A7,A6
|
||
JRUC GOGO1
|
||
GONEG2 SUB A7,A4
|
||
SUB A7,A6
|
||
GOGO1
|
||
MMFM SP,A0,A2
|
||
;FIRST CHECK TO SEE IF THIS WILL PUSH PLAYER INTO BAD RECTANGLE AREA
|
||
;A0 TO *A1(OXPOS)
|
||
;A4 TO *A1(OYPOS)
|
||
MMTM SP,A0,A1,A2,A4,A6
|
||
MOVE A4,A6
|
||
MOVE A0,A4
|
||
;CHECK FOR RECTANGLE COLLISIONS
|
||
ADDK 4,A4
|
||
ADDK 4,A6
|
||
MOVE @CURRENT,A0,L ;CURRENT RECT LIST
|
||
JRZ AOUT
|
||
ANEXT0 MOVE *A0+,A1,W
|
||
JRZ AOUT
|
||
SLL 16,A1
|
||
CMP A1,A4
|
||
JRLT ANEXT ;IF BRNCH RECT LFT EDGE > PLYR X
|
||
MOVE *A0+,A1,W
|
||
SLL 16,A1
|
||
CMP A1,A6
|
||
JRLT ANEXTA ;IF BRNCH RECT TOP EDGE > PLYR Y
|
||
MOVE *A0+,A1,W
|
||
SLL 16,A1
|
||
CMP A1,A4
|
||
JRGT ANEXTB ;IF BRNCH RECT RGT EDGE < PLYR X
|
||
MOVE *A0+,A1,W
|
||
SLL 16,A1
|
||
CMP A1,A6
|
||
JRGT ANEXT0 ;IF BRNCH RECT BOT EDGE < PLYR Y
|
||
;HIT
|
||
MMFM SP,A0,A1,A2,A4,A6
|
||
;BLOW UP BARREL IN A9!
|
||
MOVE *A9(OIMG),A0,L
|
||
CMPI BRRL2,A0
|
||
JRZ YKL
|
||
CMPI CRT1,A0
|
||
JRNZ AOUT3
|
||
YKL CALLA KILL_CRT3
|
||
JRUC AOUT3
|
||
|
||
ANEXT ADDI 48,A0
|
||
JRUC ANEXT0
|
||
ANEXTA ADDK 32,A0
|
||
JRUC ANEXT0
|
||
ANEXTB ADDK 16,A0
|
||
JRUC ANEXT0
|
||
|
||
AOUT
|
||
MMFM SP,A0,A1,A2,A4,A6
|
||
AOUT2
|
||
MOVE A4,*A1(OYVAL),L ;LEGS
|
||
MOVE A6,*A5(OYVAL),L
|
||
MOVE A0,*A1(OXVAL),L ;LEGS
|
||
MOVE A2,*A5(OXVAL),L
|
||
AOUT3
|
||
MMFM SP,A1,A2,A3,A4,A5,A6,A7,A9
|
||
RETS
|
||
|
||
SHOTKILL
|
||
;IN HERE WHEN A GOO SHOT KILLS PLAYER
|
||
;A8=PLAYER PNTR TO DIE
|
||
MMTM SP,A1,A2,A6,A7,A10,A11
|
||
MOVE *A13(MYLIST),A7,L ;SLM,A9
|
||
CMPI BOOB_BURST,A7
|
||
JRNZ SKL00
|
||
;ELECTROCUTE PLAYER
|
||
MOVI CLSNEUT|TYPMINE|01,A7
|
||
MOVE A7,*A0(OID) ;THIS BULLET WILL ELECTROCUTE PLAYER
|
||
JRUC SKL1
|
||
|
||
SKL00 CMPI BURST,A7
|
||
JRNZ SKL1
|
||
MOVI CLSENMY|TYPLAYR|SUBFLM,A7
|
||
MOVE A7,*A0(OID) ;THIS BULLET WILL FLAME PLAYER
|
||
|
||
SKL1 MOVE *A8(OPLINK),A7,L
|
||
MOVE *A7(DELYDET),A1
|
||
JRNZ GAMOK
|
||
MOVE @GAMSTATE,A0
|
||
CMPI INAMODE,A0
|
||
JRZ GAMOK
|
||
MOVE @WAVE,A1
|
||
SUBK 32,A1
|
||
JRZ GAMOK
|
||
MOVE *A7(DEAD),A1
|
||
JRNZ GAMOK
|
||
move a0,a1
|
||
; movi AUDDEATHPR,a0 ;Projectile deaths
|
||
; calla AUD1
|
||
move a1,a0
|
||
jruc SKL2
|
||
|
||
WARP_KIL
|
||
MMTM SP,A1,A2,A6,A7,A10,A11
|
||
;A0=PLYR PROCESS
|
||
;A7=^
|
||
MOVE *A7(TSO_PTR),A1,L
|
||
MOVE A2,A2
|
||
JRZ XWRPK
|
||
CLR A11
|
||
MOVE A11,*A1(OXVAL),L
|
||
XWRPK MOVI CLSENMY|TYPLAYR,A11
|
||
JRUC WRPK
|
||
|
||
bombn_killp ;A0=*Player process
|
||
|
||
MMTM SP,A1,A2,A6,A7,A10,A11
|
||
move a0,a7
|
||
movi CLSNEUT|TYPMINE,A11
|
||
JRUC WRPK
|
||
|
||
GATE_PLYR:
|
||
;PLYR IN A8, KILLER IN A0
|
||
MMTM SP,A1,A2,A6,A7,A10,A11
|
||
MOVE @HALT,A1
|
||
JRNZ GAMOK
|
||
MOVE *A8(OPLINK),A7,L
|
||
; MOVE *A7(DELYDET),A1
|
||
; JRZ EKRU
|
||
; sll 32-9,a1 ;And >1ff
|
||
; srl 32-9,a1
|
||
; JRNZ GAMOK
|
||
;EKRU
|
||
MOVE *A7(DEAD),A1
|
||
JRNZ GAMOK
|
||
;YES, KILL THIS PLYR
|
||
;A0=KILLER IMG PNTR
|
||
MOVE A0,A10 ;PASS ALONG FOR MINE DEATH
|
||
MOVE A10,*A7(KILLERO),L ;KEEP KILL PNTR
|
||
;AN ELECTRIFIED LAND MINE
|
||
MOVI CLSNEUT|TYPMINE|01,A11
|
||
JRUC NOT_MINE
|
||
|
||
KILL_PLYR:
|
||
;MAKE MORE EFFICIENT!!!
|
||
;SAVE REGISTERS!?!
|
||
;PLYR IN A8, KILLER IN A0
|
||
MMTM SP,A1,A2,A6,A7,A10,A11
|
||
; MOVE *A0(OID),A1
|
||
; ANDI 0FFFFH,A1
|
||
; CMPI CLSENMY|TYPORBL,A1
|
||
; JRNE NSHKME ;SHOCK PLAYER
|
||
;LAZER INTO PLAYER!
|
||
;DIFFERET SIZE FOR DETECTION
|
||
; CALLA SHORT2
|
||
; JRNC GAMOK
|
||
; JRUC KP99
|
||
;NSHKME
|
||
|
||
CALLA SHORT_PLYR ;REALLY A HIT?
|
||
JRNC GAMOK ;BR=NO COLLIDE!
|
||
;KP99
|
||
MOVE @HALT,A1
|
||
JRNZ GAMOK
|
||
|
||
MOVE *A8(OPLINK),A7,L
|
||
MOVE *A7(DELYDET),A1
|
||
JRNZ GAMOK
|
||
MOVE @WAVE,A1
|
||
SUBK 32,A1
|
||
JRZ GAMOK
|
||
|
||
MOVE *A7(DEAD),A1
|
||
JRNZ GAMOK
|
||
SKL2 MOVE @WAVE,A10
|
||
CMPI 16,A10
|
||
JRZ NOCHNG6
|
||
CMPI 35,A10
|
||
JRGE NOCHNG6
|
||
MOVE *A7(PNUM),A10
|
||
SUBK 1,A10
|
||
JRZ CKJ2
|
||
MOVE @P2DATA+PLIVES,A1
|
||
JRNZ NOCHNG6
|
||
MOVE @timerp2,A1 ;Player 2 seconds since death
|
||
JRUC CKJ1
|
||
CKJ2 MOVE @P1DATA+PLIVES,A1
|
||
JRNZ NOCHNG6
|
||
MOVE @timerp1,A1 ;Player 1 seconds since death
|
||
CKJ1 PUSH A0
|
||
MOVI ADJDIFF,A0
|
||
.REF GET_ADJ
|
||
CALLA GET_ADJ
|
||
;A0=0-9 DIFFICULTY LEVEL!
|
||
SLL 3,A0
|
||
ADDI MINIMUM,A0
|
||
MOVB *A0,A10
|
||
PULL A0
|
||
|
||
CMP A10,A1
|
||
JRGT NOCHNG6
|
||
;BOZO PLAYER, GIVE HIM A BREAK!
|
||
PUSH A9
|
||
MOVK 10,A9
|
||
MOVE A9,*A7(DELYDET)
|
||
MOVE *A7(PNUM),A9
|
||
MOVK 20,A10
|
||
CMPI 1,A9
|
||
JRZ PP1
|
||
CREATE RNG2PID,RINGS
|
||
JRUC PPO
|
||
PP1 CREATE RNG1PID,RINGS
|
||
PPO PULL A9
|
||
JRUC GAMOK
|
||
|
||
MINIMUM .BYTE 140,100,70,60,50,40,30,30,30,30,30 ;MINIMUM GAME TIME
|
||
.EVEN
|
||
NOCHNG6
|
||
;YES, KILL THIS PLYR
|
||
;A0=KILLER IMG PNTR
|
||
MOVE A0,A10 ;PASS ALONG FOR MINE DEATH
|
||
MOVE A10,*A7(KILLERO),L ;KEEP KILL PNTR
|
||
MOVE *A0(OID),A11
|
||
zext a11
|
||
CMPI CLSENMY|TYPHULK,A11
|
||
JRNZ NOTPNCH
|
||
;MAYBE DO PUNCH SND
|
||
MOVE *A0(OPLINK),A1,L
|
||
MOVE *A1(HULKTYP),A1
|
||
CMPI 2,A1
|
||
JRNZ NOTPNCH
|
||
PUSH A7
|
||
CREATE0 PUNCHSNDS
|
||
PULL A7
|
||
JRUC NOT_MINE
|
||
PUNCHSNDS
|
||
MOVK 10,A9
|
||
PUN1
|
||
MOVI PUNCHSND,A0
|
||
CALLA ONESND
|
||
SLEEPK 12
|
||
DSJS A9,PUN1
|
||
DIE
|
||
PUNCHSND .WORD >F5E5,20,>812B,0
|
||
NOTPNCH
|
||
CMPI CLSENMY|TYPLAYR,A11
|
||
JRNZ NOTLAY
|
||
;KILLED BY MINE LAYER, TELL MINE LAYER TO FLAME UP
|
||
MMTM SP,A7,A8
|
||
MOVE A0,A8
|
||
MOVE *A0(OFLAGS),A1
|
||
ORI M_NOCOLL,A1
|
||
MOVE A1,*A0(OFLAGS)
|
||
MOVE *A0(OPLINK),A0,L
|
||
MOVI LAY_EXP,A7 ;END OF MINE LAYER DEATH - NO FLAMES
|
||
CLR A1
|
||
CALLA XFERPROC
|
||
MMFM SP,A7,A8
|
||
|
||
NOTLAY CMPI CLSNEUT|TYPMINE,A11
|
||
JRNE NOT_MINE
|
||
MOVE *A7(LEG_PRC),A0,L
|
||
MOVE *A0(SHOECNT),A0
|
||
JRZ KM
|
||
BTST 15,A0 ;CHECK FOR TENNIS SHOES BIT
|
||
JRZ GAMOK
|
||
;YES, WEARING TENNIS SHOES!
|
||
|
||
;KILL MINE
|
||
KM PUSH A7
|
||
MOVE *A10(OIMG),A0,L
|
||
CMPI M1,A0
|
||
JRZ KM2
|
||
;AN ELECTRIFIED LAND MINE
|
||
MOVE *A10(OPLINK),A0,L
|
||
CALLA KILL
|
||
MOVI CLSNEUT|TYPMINE|01,A0
|
||
MOVI CLSNEUT|TYPMINE|01,A11
|
||
JRUC KM2A
|
||
KM2 MOVI CLSNEUT|TYPNEUT,A0
|
||
KM2A MOVE A0,*A10(OID),W
|
||
CREATE0 EXPMINE2 ;KILL LAND MINE (A10=PTR)
|
||
MOVI MTING,A0 ;LAND MINE EXPLOSION SND
|
||
CALLA ONESND
|
||
PULL A7
|
||
|
||
MOVE *A7(PNUM),A0
|
||
MOVI P1DATA,A2
|
||
DEC A0
|
||
JRZ KM1
|
||
MOVI P2DATA,A2
|
||
KM1 MOVE *A2(TMINEDTH),A0 ;LAND MINE DEATH STAT
|
||
INC A0
|
||
MOVE A0,*A2(TMINEDTH)
|
||
; movi AUDDEATHLM,a0 ;Land mine deaths
|
||
; calla AUD1
|
||
|
||
NOT_MINE
|
||
;A11=OID OF WHAT KILLED THIS PLAYER
|
||
;A10=KILLER IMAGE PTR
|
||
CLR A0
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
MOVE *A7(TSO_PTR),A1,L
|
||
MOVE A0,*A1(OXVEL),L
|
||
MOVE A0,*A1(OYVEL),L
|
||
MOVE A7,A0 ;A7=PLYR IMG OPLINK
|
||
WRPK
|
||
CMPI CLSENMY|TYPHULK,A11
|
||
JRNZ WRPK2
|
||
HULKTYP .EQU PDATA+320 ;UHW 0=NORM W/GUN,1=DEMON W/AXE
|
||
MOVE *A10(OPLINK),A10,L
|
||
MOVE *A10(HULKTYP),A1
|
||
SUBK 3,A1
|
||
JRNZ WRPK2
|
||
;FLAMING GRUNT!
|
||
MOVI CLSENMY|TYPLAYR,A11
|
||
WRPK2
|
||
MOVE A11,*A0(DEAD),W
|
||
;IF HELPER ON, SEND IT FLYING
|
||
MOVE *A0(LSRPTR),A1,L
|
||
JRZ NLZ
|
||
;YES LAZER ON
|
||
PUSH A8
|
||
MOVE A1,A8
|
||
CALLA LSHIT
|
||
PULL A8
|
||
NLZ
|
||
;GIVE THE PLAYER A POINT FOR DIEING!
|
||
MOVI P1DATA+BMB_CNT,A6
|
||
MOVI P1DATA,A11
|
||
CLR A2
|
||
movi timerp1sd,a1
|
||
MOVE *A0(PNUM),A0
|
||
DEC A0
|
||
JRZ CG
|
||
MOVI P2DATA+BMB_CNT,A6
|
||
MOVI P2DATA,A11
|
||
MOVI timerp2sd,a1
|
||
CG
|
||
move a2,*a1,W
|
||
MOVE *A6,A4
|
||
CMPI 4,A4
|
||
JRNC NOADD
|
||
MOVE A6,A0
|
||
CALLA ADDBMB
|
||
NOADD MOVE A11,A2
|
||
CLR A1
|
||
MOVE A1,*A11(PTSRAM),W
|
||
;A2=P1DATA OR P2DATA
|
||
MOVK >1,A1 ;AMOUNT OF SCORE
|
||
CALLA SCRADD2 ;DO IT!
|
||
|
||
* XFERPROC - TRANSFER CONTROL OF AN EXISTING PROCESS
|
||
* A0 = PTR OF PROCESS TO BE XFER'D
|
||
* A1 = NEW I.D.
|
||
* A7 = WAKE UP
|
||
* A8 - A11 = PASSED TO THE XFER'D PROC
|
||
MOVI PLY1PID,A1
|
||
MOVE *A7(PNUM),A0
|
||
CMPI 1,A0
|
||
JRZ U8A
|
||
MOVI PLY2PID,A1
|
||
U8A MOVE *A7(LEG_PRC),A0,L
|
||
MOVE A7,A10 ;A10=TSO_PRC
|
||
CALLA GETA8
|
||
MOVI I_DIE,A7
|
||
CALLA XFERPROC
|
||
|
||
; movi AUDDEATHTOT,a0 ;# deaths
|
||
; calla AUD1
|
||
|
||
MOVE *A11(PLIVES),A0,W ;TEMP
|
||
CMPI 9,A0
|
||
JRC TAG1
|
||
MOVK 9,A0 ;8
|
||
MOVE A0,*A11(PLIVES),W
|
||
TAG1 CMPI 0,A0
|
||
JRNZ GAMOK
|
||
;OUT OF LIVES
|
||
;CHANGE MESSAGE ON HIS SCOREBOARD/PLUS STILL SHOW PLAYER SCORE!
|
||
;COLOR CYCLE IT
|
||
;DISPLAY A COUNTDOWN
|
||
CLR A0
|
||
MOVE A0,@THIS_PLYR,W
|
||
|
||
MOVK 1,A1
|
||
MOVE A1,*A11(CNTD) ;FLAG FOR MESSAGES AND CNTR
|
||
|
||
MOVE @CNTDIG1,A2
|
||
MOVE @CNTDIG2,A10
|
||
OR A2,A10
|
||
|
||
|
||
CMPI P1DATA,A11
|
||
JRNE F3
|
||
CREATE0 PAUS0
|
||
CALLR SPECT
|
||
CREATE P1PID,MSG_PROC2
|
||
JRUC F4
|
||
F3 CREATE P2PID,MSG_PROC2
|
||
CREATE0 PAUS
|
||
CALLR SPECT
|
||
F4 MOVE @STATUS,A0
|
||
CMPI 3,A0
|
||
JRZ GAMOK
|
||
;IS PLAYER CNTING DOWN?
|
||
|
||
MOVE A10,A10
|
||
|
||
; MOVE @CNTDIG1,A2
|
||
; MOVE @CNTDIG2,A1
|
||
; OR A2,A1
|
||
JRNZ GAMOK
|
||
CREATE BUYINPID,PSTAT
|
||
GAMOK:
|
||
MMFM SP,A1,A2,A6,A7,A10,A11
|
||
RETS
|
||
|
||
PAUS0 SLEEPK 30
|
||
MOVK 10,A2 ;11/28/91
|
||
MOVE A2,@CNTDIG1
|
||
DIE
|
||
|
||
PAUS SLEEPK 30
|
||
MOVK 10,A2 ;11/28/91
|
||
MOVE A2,@CNTDIG2
|
||
DIE
|
||
|
||
SPECT MOVI COLRPID,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
JRNZ SKIPCYC
|
||
CREATE COLRPID,CYCSPECT ;START CYCLE FOR CNTDWN DIGIT
|
||
SKIPCYC RETS
|
||
|
||
CTRLS .LONG P1CTRL,P2CTRL
|
||
|
||
**************************************************************************
|
||
* *
|
||
* DRAW_PLYR_TORSO *
|
||
* *
|
||
**************************************************************************
|
||
DRAW_PLYR_TORSO
|
||
;A8=1 OR 2 FOR PLAYER NUM
|
||
|
||
MOVE A8,*A13(PNUM) ;A8=1 OR 2 FOR WHAT PLAYER THIS IS
|
||
SLL 5,A8
|
||
MOVI CTRLS-32,A1
|
||
ADD A8,A1
|
||
MOVE *A1,A0,L
|
||
MOVE A0,*A13(STICK),L ;PLACE CORRECT STICK READ ADDR
|
||
|
||
ADDI PLYRPRCS-32,A8
|
||
MOVE A13,*A8,L ;PUT PLYR PROC INTO TABLE PLYRPRCS
|
||
CALLA STRT_PLYR_LEGS
|
||
MOVE A0,*A13(LEG_PTR),L ;KEEP LEG PTR IN TORSO STURCTURE
|
||
MOVK 02H,A0 ;1
|
||
; 1
|
||
; 8 5
|
||
;7 4
|
||
; 9 6
|
||
; 2
|
||
MOVE A0,*A13(P_DIR),W
|
||
MOVE A0,*A13(TMP_P_DIR),W
|
||
|
||
CALLA STRT_PLYR_TORSO
|
||
|
||
MOVE A8,*A13(TSO_PTR),L ;KEEP TORSO PTR IN TORSO STRUCTURE!?
|
||
MOVE *A13(PNUM),A0
|
||
SLL 5,A0
|
||
ADDI PLYROBJS-32,A0
|
||
MOVE A8,*A0,L ;INSERT TORSO PTRS INTO TABLE
|
||
|
||
MOVE *A13(LEG_PTR),A9,L ;READY TO PASS LEG ALONG TO LEG PROC
|
||
MOVE A13,A10 ;PASS TORSO PROC TO LEG
|
||
|
||
MOVE *A13(PNUM),A0
|
||
subk 1,A0
|
||
JRNE AXC
|
||
CREATE PLY1PID,DRAW_PLYR_LEGS
|
||
MOVI P1DATA,A11
|
||
JRUC AXCD
|
||
|
||
AXC CREATE PLY2PID,DRAW_PLYR_LEGS
|
||
MOVI P2DATA,A11
|
||
AXCD CALLA STUFF_LVADDR
|
||
|
||
MOVK 2,A0 ;1
|
||
MOVE A0,*A13(OLD_P_DIR),W
|
||
CLR A0
|
||
MOVE A0,*A13(DEAD),W
|
||
MOVE A0,*A13(LSRPTR),L
|
||
MOVE A0,*A13(SHOOT_FLAG),W
|
||
MOVE A0,*A13(WPN_TYP),W
|
||
; MOVE A0,*A13(TSHOTS) ;TOTAL SHOTS FIRED
|
||
|
||
MOVE *A13(PNUM),A7
|
||
SLL 5,A7
|
||
ADDI PLYRPRCS-32,A7
|
||
MOVE *A7,A7,L
|
||
MOVI 70,A0
|
||
MOVE A0,*A13(DELYDET)
|
||
TORSO_1
|
||
CLR A0
|
||
MOVE A0,*A13(REV_FLAG)
|
||
|
||
MOVE *A13(DEAD),A1
|
||
JRNZ DIE_CODE
|
||
|
||
NDD MOVE @NOSHOOT,A0
|
||
JRNZ NOTT
|
||
move *a13(STICK),a0,L
|
||
move *a0,a0 ;GET P1/P2CTRL INFO
|
||
srl 4,a0
|
||
jrnz TORSO_2 ;Pass A0
|
||
|
||
NOTT ;NOT TOUCHED
|
||
; 1
|
||
; 8 5
|
||
;7 4
|
||
; 9 6
|
||
; 2
|
||
CLR A0
|
||
MOVE A0,*A13(OSHTDIR)
|
||
MOVE *A13(P_DIR),A14 ;DIR + HIBIT SET IF STATIONARY
|
||
JRNN RUNNING ;Test bit15
|
||
; P1 IS STANDING STILL. PLACE CORRECT TORSO ON TOP OF FEET
|
||
; CHECK FOR ALREADY THERE!
|
||
movk >1f,a1
|
||
and a1,a14
|
||
move a0,*a13(OLD_P_DIR)
|
||
|
||
MOVE A8,A0
|
||
MOVE *A13(LEG_PTR),A8,L ;GET LEG PTR OUT OF TORSO STRUCT
|
||
CALLA GETANIXY
|
||
MOVE *A8(OFLAGS),A4,W
|
||
ORI M_NOCOLL,A4 ;TORSO ALWAYS M_NOCOLL
|
||
CALLA GANISAG
|
||
MOVE A0,A8
|
||
|
||
MOVE A14,A0
|
||
MOVE *A13(WPN_TYP),A2,W
|
||
SLL 5,A2
|
||
ADDI WPNWALK,A2
|
||
MOVE *A2,A2,L
|
||
SLL 5,A0
|
||
ADD A0,A2
|
||
MOVE *A2,A1,L
|
||
|
||
ADDI T_WALK_FLG,A0
|
||
MOVE *A0,A4,W
|
||
|
||
CALLA ANI
|
||
|
||
LTP SLEEPK 1
|
||
JRUC TORSO_1
|
||
|
||
RUNNING
|
||
MOVE A8,A0
|
||
MOVE *A13(LEG_PTR),A8,L
|
||
CALLA GETANIXY
|
||
MOVE *A8(OFLAGS),A4,W
|
||
ORI M_NOCOLL,A4 ;TORSO ALWAYS M_NOCOLL
|
||
CALLA GANISAG
|
||
MOVE A0,A8
|
||
|
||
MOVE *A13(P_DIR),A4 ;CURRENT DIR P1 IS FACING
|
||
SLL 5,A4
|
||
MOVE *A13(WPN_TYP),A1
|
||
SLL 5,A1
|
||
ADDI WPNWALK,A1
|
||
MOVE *A1,A1,L ;MOVE BASE TABLE ADDRESS INTO A1
|
||
ADD A4,A1 ;CALCULATE OFFSET IN TABLE
|
||
MOVE *A1,A1,L ;MOVE TABLE VALUE INTO A9
|
||
CMP A1,A9
|
||
JREQ TEE
|
||
MOVE A1,A9
|
||
ADDI T_WALK_FLG,A4
|
||
MOVE *A4,A4 ;FLAG
|
||
|
||
CALLA ANI
|
||
|
||
TEE SLEEPK 1
|
||
JRUC TORSO_1
|
||
|
||
; .byte 0,1,5,0,7,8,6,0,3,2,4,0,0,0,0,0 ;Good
|
||
firedir_t .byte 1,1,5,1,7,8,6,1,3,2,4,1,1,1,1,1 ;Good with illegals
|
||
.byte 1,1,2,1,7,8,9,1,4,5,6,1,1,1,1,1 ;Old crap version
|
||
|
||
; PLAYER IS SHOOTING
|
||
; STICK IS BEING PRESSED
|
||
TORSO_2
|
||
clr a1
|
||
move a1,*a13(OLD_P_DIR)
|
||
|
||
sll 3,a0 ;*8
|
||
addi firedir_t,a0
|
||
movb *a0,a9 ;Pass A9 to weapon (New version)
|
||
addi 16*8,a0
|
||
movb *a0,a4
|
||
|
||
|
||
;PLAYER WILL BEGIN FRANIM OF SHOOTING IN PROPER DIRECTION
|
||
move *a13(P_DIR),a0
|
||
movk >f,a1
|
||
and a1,a0
|
||
MOVE *A13(OSHTDIR),A5
|
||
CMP A4,A5
|
||
JREQ JJ
|
||
CLR A5 ;SHOOTING IN NEW DIR. ZERO REV_DIR.
|
||
MOVE A5,*A13(REV_P_DIR),W
|
||
JJ MOVE A4,*A13(OSHTDIR)
|
||
MOVE A4,*A13(SHOOT_FLAG),W
|
||
|
||
MOVI REVERSE,A1
|
||
SLL 4,A4
|
||
ADD A4,A1
|
||
MOVE *A1,A1 ;GET TABLE VALUES FOR THIS BDIR
|
||
;NOW BIT TEST CORRECT PDIR BIT TO SEE IF WE WILL NEED TO FLIP LEGS
|
||
BTST A0,A1
|
||
JRZ NOR
|
||
;YES WE MUST REVERSE PLAYERS LEGS BECAUSE HE IS TWISTING TO FAR!
|
||
MOVK 1,A1
|
||
MOVE A1,*A13(REV_FLAG),W
|
||
NOR
|
||
SLL 1,A4
|
||
MOVE *A13(WPN_TYP),A5
|
||
SLL 5,A5
|
||
ADDI LISTWHAT,A5
|
||
MOVE *A5,A5,L
|
||
SLL 5,A0
|
||
ADD A0,A5
|
||
MOVE *A5,A3,L
|
||
|
||
ADD A4,A3 ;CALCULATE OFFSET IN TABLE
|
||
move a3,-*sp,L
|
||
CALLA STRT_WPN ;TORSO CONTROLS
|
||
move *sp+,a3,L
|
||
|
||
MOVE *A3,A9,L ;MOVE TABLE VALUE INTO A9
|
||
;THIS IS NEW FRANIM SCRIPT PNTR
|
||
JSRP FRANIMQ
|
||
|
||
CLR A0
|
||
MOVE A0,*A13(SHOOT_FLAG)
|
||
|
||
JRUC TORSO_1
|
||
|
||
**************************************************************************
|
||
* *
|
||
* DRAW_PLYR_LEGS *
|
||
* *
|
||
**************************************************************************
|
||
DRAW_PLYR_LEGS:
|
||
;A8=TORSO ABOVE THESE LEGS
|
||
;A9=LEG PNTR FOR THESE LEGS (IMAGE ALREADY STARTED)
|
||
;A10=PROCESS OF TORSO ABOVE THESE LEGS
|
||
MOVE A8,*A13(TSO_PTR),L ;A8=TORSO FOR THESE LEGS
|
||
MOVE A10,*A13(TSO_PRC),L ;A10=TORSO PROCESS PNTR
|
||
MOVE A9,*A13(LEG_PTR),L ;A9=LEG PTR
|
||
MOVE A13,*A10(LEG_PRC),L
|
||
CLR A0
|
||
MOVE A0,*A13(SHOECNT)
|
||
|
||
MOVE A9,A8 ;A8=LEG PNTR
|
||
MOVI PWK_UP,A10 ;INIT FRANIM SCRIPT RESET
|
||
MOVE A10,A9 ;FRANIM NEEDS IT IN A9
|
||
|
||
MOVE_TOP:
|
||
MOVE *A8(OFLAGS),A0
|
||
BTST 11,A0 ;TAKE OUT!!!!
|
||
JRZ MVT
|
||
.if DEBUG
|
||
LOCKUP
|
||
EINT
|
||
.endif
|
||
MVT
|
||
MOVE *A13(TSO_PRC),A7,L
|
||
CALLA UPDATE_PLYRXY
|
||
JRC DO_FRANI
|
||
; PLAYER IS NOT TOUCHING MOVEMENT STICK!
|
||
; SET STAND FLAG, AND PNT TO CORRECT IMAGE
|
||
MOVE *A13(SHOECNT),A1
|
||
jrle REG7
|
||
;FLYING BOOTS ON, NOT TENNIS SHOES
|
||
;SLOW DOWN THIS GUYS VELOCITY
|
||
MOVE *A8(OXVEL),A0,L
|
||
MOVE *A8(OYVEL),A1,L
|
||
OR A0,A1
|
||
JRZ REG71
|
||
|
||
MOVE *A8(OXVAL),A4,L
|
||
MOVE *A8(OYVAL),A5,L
|
||
CLR A3 ;DIR CNT
|
||
;CHECK FOR RIGHT SIDE OF SCREEN
|
||
MOVE @WORLDTLX,A0,L ;*A7(RGTBND),A0,L
|
||
ADDI [375,0],A0
|
||
CMP A0,A4
|
||
JRGT REG7
|
||
;SCRN EDGE OK
|
||
MOVE @WORLDTLX,A0,L ;MOVE *A7(LFTBND),A0,L
|
||
ADDI [10,0],A0
|
||
CMP A0,A4
|
||
JRLE REG7
|
||
MOVE @WORLDTLY,A0,L ;MOVE *A7(DNBND),A0,L
|
||
ADDI [240,0],A0
|
||
CMP A0,A5
|
||
JRGE REG7
|
||
MOVE @WORLDTLY,A0,L ;MOVE *A7(UPBND),A0,L
|
||
ADDI [15,0],A0
|
||
CMP A0,A5
|
||
JRLE REG7
|
||
MOVE A5,A6 ;T1 NEEDS A6=YVAL
|
||
CALLR THIS_DIR
|
||
subk 1,a1
|
||
JRZ REG7
|
||
;NOT COASTING INTO A WALL OR SCRN BORDER
|
||
MOVE @PCNT,A1
|
||
sll 32-3,a1
|
||
JRNZ REG71
|
||
;SLOW ME DOWN
|
||
MOVE *A13(TSO_PTR),A2,L ;GET TORSO PNTR FOR THESE LEGS
|
||
MOVE *A8(OXVEL),A1,L
|
||
sra 1,a1
|
||
MOVE A1,*A8(OXVEL),L
|
||
MOVE A1,*A2(OXVEL),L
|
||
|
||
MOVE *A8(OYVEL),A1,L
|
||
sra 1,a1
|
||
MOVE A1,*A8(OYVEL),L
|
||
MOVE A1,*A2(OYVEL),L
|
||
JRUC REG71
|
||
|
||
REG7 CLR A0
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
MOVE *A13(TSO_PTR),A1,L ;GET TORSO PNTR FOR THESE LEGS
|
||
MOVE A0,*A1(OXVEL),L ;UPDATE TORSO INFO
|
||
MOVE A0,*A1(OYVEL),L ;UPDATE TORSO
|
||
REG71
|
||
;A7=TORSO PROC
|
||
MOVK 1,A0
|
||
MOVE A0,*A7(HAVE_REV),W ;UPDATE TORSO
|
||
MOVE *A7(SHOOT_FLAG),A0 ;GET TORSO INFO
|
||
JRZ CONT_1
|
||
; PLAYERS TORSO IS SHOOTING, MAKE FEET TURN IN SAME DIRECTION AS BODY
|
||
ORI 08000H,A0
|
||
MOVE A0,*A7(P_DIR),W
|
||
sll 32-5,a0
|
||
srl 32-5-5,a0 ;*32
|
||
; PLAYER WILL BEGIN FRANIM OF SHOOTING IN PROPER DIRECTION
|
||
MOVE *A13(SHOECNT),A1
|
||
jrle REGS
|
||
;TENNIS
|
||
;BOOTS ON
|
||
ADDI SHOOT_LEG_LIST2,A0
|
||
JRUC NORG
|
||
REGS ADDI SHOOT_LEG_LIST,A0
|
||
NORG MOVE *A0,A9,L ;MOVE TABLE VALUE INTO A9
|
||
;THIS IS NEW FRANIM SCRIPT PNTR
|
||
JSRP FRANIMQ
|
||
JRUC MOVE_TOP
|
||
|
||
CONT_1:
|
||
MOVE *A7(P_DIR),A0 ;GET TORSO INFO
|
||
ORI 08000H,A0
|
||
MOVE A0,*A7(P_DIR) ;GET TORSO INFO
|
||
sll 32-5,a0
|
||
srl 32-5-5,a0 ;*32
|
||
MOVE *A13(SHOECNT),A1
|
||
jrle REGK ;TENNIS?
|
||
;BOOTS ON
|
||
MOVE @PCNT,A1
|
||
sll 32-2,a1
|
||
JRNZ REGK0
|
||
MOVE *A13(SHOEV),A1
|
||
XORI 1,A1
|
||
MOVE A1,*A13(SHOEV)
|
||
REGK0 MOVE *A13(SHOEV),A1
|
||
JRZ REGK1
|
||
MOVI STAND_TBL_L3,A2
|
||
JRUC REGK2
|
||
REGK1 MOVI STAND_TBL_L2,A2
|
||
JRUC REGK2
|
||
REGK MOVI STAND_TBL_L,A2
|
||
REGK2 ADD A0,A2
|
||
MOVE *A2,A1,L
|
||
|
||
ADDI L_WALK_FLG,A0
|
||
MOVE *A0,A4,W
|
||
|
||
CALLA ANI
|
||
;MAKE SURE A9,A10 ARE SET FOR THIS POSITION FOR WHEN HE DOES BEGIN RUNNING
|
||
|
||
SL_1 SLEEPK 1
|
||
JRUC MOVE_TOP
|
||
|
||
DO_FRANI:
|
||
; STICK IS BEING PRESSED
|
||
; PLAYERS LEGS
|
||
;A5=DIR READ FROM STICK AT THIS POINT
|
||
;A7=TORSO PROCESS
|
||
MOVE *A7(REV_FLAG),A0,W
|
||
JRZ NORV
|
||
; WE MUST REVERSE PLAYERS LEGS BECAUSE OF SHOOTING POSITION
|
||
; VEL MUST STAY SAME
|
||
MOVK 1,A0
|
||
MOVE A0,*A7(HAVE_REV),W ;UPDATE TORSO INFO!
|
||
MOVE *A7(REV_P_DIR),A4
|
||
MOVE A5,*A7(P_DIR)
|
||
MOVE A5,A6
|
||
SLL 5,A6
|
||
CMP A5,A4
|
||
JRZ SAME_DIR
|
||
; NEW DIRECTION, SET A9
|
||
MOVE A5,*A7(REV_P_DIR),W ;SAME, BUT SHOULD BE REVERSE
|
||
MOVE *A13(SHOECNT),A1
|
||
JRZ REGH
|
||
BTST 15,A1
|
||
JRZ BOOT
|
||
;TENNIS SHOES ON
|
||
MOVI REV_WALK_LIST3,A2 ;FAST SHOES ANIMATION!
|
||
JRUC REGHA
|
||
BOOT MOVI REV_WALK_LIST2,A2 ;MOVE BASE TABLE ADDRESS INTO A2
|
||
JRUC REGHA
|
||
REGH MOVI REV_WALK_LIST,A2 ;MOVE BASE TABLE ADDRESS INTO A2
|
||
REGHA ADD A6,A2 ;CALCULATE OFFSET IN TABLE
|
||
MOVE *A2,A9,L ;MOVE TABLE VALUE INTO A9
|
||
MOVE A9,A10
|
||
JRUC SAME_DIR
|
||
|
||
|
||
NORV: MOVE *A7(P_DIR),A4 ;CURRENT DIR P1 IS FACING
|
||
sll 32-5,a4 ;JUST IN CASE HE WAS STANDING STILL
|
||
srl 32-5,a4
|
||
MOVE A5,*A7(P_DIR) ;HI BIT IS NOT SET BECAUSE HE RUNS!
|
||
MOVE A5,A6
|
||
SLL 5,A6
|
||
MOVE *A7(HAVE_REV),A0
|
||
JRNZ GET_PROPER
|
||
CMP A5,A4 ;CMP WITH NEW DIR READ FROM STICK
|
||
JRZ SAME_DIR
|
||
GET_PROPER:
|
||
; NEW DIRECTION, SET A9
|
||
CLR A0
|
||
MOVE A0,*A7(HAVE_REV),W
|
||
MOVE *A13(SHOECNT),A1
|
||
JRZ REGJ
|
||
JRNN BOOT1
|
||
MOVI WALK_LIST3,A2 ;TENNIS SHOE LIST
|
||
JRUC REGJ2
|
||
BOOT1 MOVI WALK_LIST2,A2 ;BOOT LIST
|
||
JRUC REGJ2
|
||
REGJ MOVI WALK_LIST,A2 ;MOVE BASE TABLE ADDRESS INTO A2
|
||
REGJ2 ADD A6,A2 ;CALCULATE OFFSET IN TABLE
|
||
MOVE *A2,A9,L ;MOVE TABLE VALUE INTO A9
|
||
MOVE A9,A10
|
||
SAME_DIR:
|
||
; CHECK BOUNDARIES FIRST
|
||
; COMPARE FOR TOP/BOT BOUNDARIES
|
||
|
||
CALLA STUFF_VEL
|
||
|
||
CLR A1 ;COMMAND PASSED TO FRANIM
|
||
JSRP FRANIM
|
||
JRNC MOVE_TOP
|
||
MOVE A10,A9 ;RESET TO TOP OF RUNNING LIST
|
||
JRUC MOVE_TOP
|
||
|
||
I_DIE
|
||
;PLAYER DEAD, THIS IS WHAT LEGS DO DURING THIS TIME
|
||
;NEED A9=TSO_PRC
|
||
;A8=LEGS IMG
|
||
SLEEPK 05
|
||
;IF BLOWN UP INTO AIR, DO NOT DO THIS
|
||
MOVE *A10(DEAD),A1,W
|
||
ZEXT A1
|
||
CMPI CLSENMY|TYPLAYR|SUBFLM,A1
|
||
JREQ SKIPSP
|
||
CMPI CLSENMY|TYPLAYR,A1
|
||
JREQ SKIPSP
|
||
CMPI CLSNEUT|TYPMINE,A1
|
||
JREQ SKIPSP
|
||
CMPI CLSENMY|TYPT72|SUBTK,A1
|
||
JREQ SKIPSP
|
||
CMPI CLSENMY|TYPT72,A1
|
||
JREQ SKIPSP
|
||
srl 8,a1 ;/256
|
||
CMPI (CLSENMY|TYPFACE)/256,A1
|
||
JREQ SKIPSP
|
||
|
||
;REALIGN PLAYER HALVES WHEN WE RESET IF A SPIN DEATH
|
||
MOVI DIESCRM,A0
|
||
CALLA ONESNDOVR
|
||
MOVE A8,A0
|
||
MOVE *A13(TSO_PTR),A8,L ;GET LEG PTR OUT OF TORSO STRUCT
|
||
CALLA GETANIXY
|
||
MOVE *A8(OFLAGS),A4,W
|
||
ANDI 0F7FFH,A4 ;GET RID OF M_NOCOLL FOR LEGS
|
||
CALLA GANISAG
|
||
MOVE A0,A8
|
||
|
||
MOVI LSPN,A9
|
||
JSRP FRANIMQ
|
||
SKIPSP ;SKIP SPINNING OF LEGS IF NOT NEEDED
|
||
; MOVI 0A000000H,A0
|
||
; MOVE A0,*A8(OXVAL),L
|
||
MOVE A8,A0
|
||
CALLA OBJOFF
|
||
|
||
HG SLEEPK 1
|
||
MOVE *A10(DEAD),A0
|
||
JRNZ HG
|
||
MOVE A8,A0
|
||
CALLA OBJON
|
||
MOVI PWK_UP,A10 ;INIT FRANIM SCRIPT RESET
|
||
MOVE A10,A9 ;FRANIM NEEDS IT IN A9
|
||
JRUC MOVE_TOP ;OKAY_NOW
|
||
;
|
||
; UPDATE PLAYER 1 X Y POSITION BASED ON JOYSTICK INPUT
|
||
;
|
||
UPDATE_PLYRXY:
|
||
;
|
||
;READ MOVEMENT JOYSTICK FOR PLAYER
|
||
;A7=TSO_PRC PROCESS PNTR
|
||
;
|
||
CLR A0
|
||
MOVE A0,*A13(TCH_WALL)
|
||
MOVE *A7(STICK),A2,L ;GET STICK FROM TORSO STRUCT
|
||
MOVE *A2,A2,W ;GET ACTUAL CTRL INFO
|
||
ANDI 0FH,A2
|
||
JRNZ YES_A_MV
|
||
CLRC ;CLEAR CARRY SO WE DON'T FRANI
|
||
; STICK IS NOT BEING TOUCHED
|
||
RETS
|
||
|
||
YES_A_MV:
|
||
;
|
||
; PLAYER WILL MOVE IN DIRECTION SPECIFIED IN A2
|
||
;
|
||
MOVE *A8(OXVAL),A4,L
|
||
MOVE *A8(OYVAL),A5,L
|
||
CLR A3 ;DIR CNT
|
||
BTST BMPRYTE,A2
|
||
JRZ PLYR_LFT
|
||
;CHECK FOR RIGHT SIDE OF SCREEN
|
||
MOVE @WORLDTLX,A0,L
|
||
ADDI [375,0],A0
|
||
CMP A0,A4
|
||
JRGT TSTDN
|
||
;SCRN EDGE OK
|
||
ADDK 04,A3 ;YES VALID
|
||
JRUC TSTDN
|
||
PLYR_LFT:
|
||
BTST BMPLEFT,A2
|
||
JRZ TSTDN
|
||
MOVE @WORLDTLX,A0,L
|
||
ADDI [10,0],A0
|
||
CMP A0,A4
|
||
JRLE TSTDN
|
||
ADDK 7,A3
|
||
TSTDN:
|
||
BTST BMPDOWN,A2
|
||
JRZ PLYR_UP
|
||
MOVE @WORLDTLY,A0,L
|
||
ADDI [240,0],A0
|
||
CMP A0,A5
|
||
JRGE TEST_OUT
|
||
ADDK 2,A3
|
||
JRUC TEST_OUT
|
||
PLYR_UP:
|
||
BTST BMPUP,A2
|
||
JRZ TEST_OUT
|
||
MOVE @WORLDTLY,A0,L
|
||
ADDI [15,0],A0
|
||
CMP A0,A5
|
||
JRLE TEST_OUT
|
||
INC A3
|
||
|
||
TEST_OUT:
|
||
.IF DEBUG
|
||
CMPI 9,A3
|
||
JRLS OKAYSTK
|
||
LOCKUP
|
||
MOVK 9,A3
|
||
OKAYSTK
|
||
.ENDIF
|
||
|
||
MOVE A5,A6
|
||
MOVE A3,A5 ;KEEP IN A5 FOR LATER CMP WITH P_DIR
|
||
JRNZ T1
|
||
CLRC
|
||
RETS
|
||
T1:
|
||
CALLR THIS_DIR
|
||
SETC
|
||
MOVE A1,*A13(TCH_WALL)
|
||
MOVE A1,A1
|
||
JRNZ TAGN
|
||
RETS
|
||
TAGN
|
||
MOVE A5,A0
|
||
SLL 5,A0
|
||
ADDI ZCK2,A0
|
||
MOVE *A0,A0,L
|
||
JUMP A0
|
||
|
||
|
||
THIS_DIR
|
||
;CHECK FOR RECTANGLE COLLISIONS
|
||
ADDI [4,0],A4
|
||
ADDI [4,0],A6
|
||
SLL 5,A3
|
||
MOVE *A13(SHOECNT),A0
|
||
JRZ DREGS ;TENNIS?
|
||
ADDI CKOFF2,A3
|
||
JRUC DRTOP
|
||
DREGS ADDI CKOFF,A3
|
||
DRTOP MOVE *A3,A0,L
|
||
;A0=[Y,X] OFFSET FOR PLAYER TO CHECK AGAINST!
|
||
MOVY A0,A1
|
||
SLL 16,A0
|
||
ADD A0,A4 ;A4=X TO CHECK
|
||
ADD A1,A6 ;A6=Y TO CHECK
|
||
|
||
SRL 16,A4 ;X
|
||
SRL 16,A6 ;Y
|
||
MOVE @CURRENT,A0,L ;CURRENT RECT LIST
|
||
JRZ OUT
|
||
NEXT0 MOVE *A0+,A1,W
|
||
JRZ OUT
|
||
CMP A1,A4
|
||
JRLT NEXT ;IF BRNCH RECT LFT EDGE > PLYR X
|
||
MOVE *A0+,A1,W
|
||
CMP A1,A6
|
||
JRLT NEXTA ;IF BRNCH RECT TOP EDGE > PLYR Y
|
||
MOVE *A0+,A1,W
|
||
CMP A1,A4
|
||
JRGT NEXTB ;IF BRNCH RECT RGT EDGE < PLYR X
|
||
MOVE *A0+,A1,W
|
||
CMP A1,A6
|
||
JRGT NEXT0 ;IF BRNCH RECT BOT EDGE < PLYR Y
|
||
;HIT
|
||
MOVK 1,A1
|
||
RETS
|
||
|
||
OUT
|
||
; SETC ;WE WILL FRANI
|
||
; STICK HAS BEEN TOUCHED, NO BUMP WITH WALL
|
||
CLR A1
|
||
RETS
|
||
|
||
NEXT ADDI 48,A0
|
||
JRUC NEXT0
|
||
NEXTA ADDK 32,A0
|
||
JRUC NEXT0
|
||
NEXTB ADDK 16,A0
|
||
JRUC NEXT0
|
||
|
||
ZCK2 .LONG OUT,OUT,OUT,OUT,OUT,CKME5,CKME6,OUT,CKME8,CKME9
|
||
CKME5
|
||
;CHECK RECTANGLES AS IF MY DIR WAS 4
|
||
;IF IT IS OKAY TO GO 4, SET MY DIR TO 4 AND GET OUT
|
||
;IF NOT OKAY TO GO 4, CHECK RECTANGLES AS IF MY DIR WAS 1
|
||
;IF IT IS OKAY TO GO 1, SET MY DIR TO 1 AND GET OUT
|
||
MOVE *A8(OXVAL),A4,L
|
||
MOVE *A8(OYVAL),A6,L
|
||
MOVK 4,A3
|
||
CALLR THIS_DIR
|
||
MOVE A1,*A13(TCH_WALL)
|
||
MOVE A1,A1
|
||
JRNZ CKJ
|
||
MOVK 4,A5 ;YES, GO DIR 4
|
||
SETC
|
||
RETS
|
||
CKJ MOVK 1,A3
|
||
MOVE *A8(OXVAL),A4,L
|
||
MOVE *A8(OYVAL),A6,L
|
||
CALLR THIS_DIR
|
||
MOVE A1,*A13(TCH_WALL)
|
||
MOVE A1,A1
|
||
JRNZ CKOUT
|
||
MOVK 1,A5
|
||
CKOUT SETC
|
||
RETS
|
||
|
||
CKME6
|
||
;CHECK RECTANGLES AS IF MY DIR WAS 4
|
||
;IF IT IS OKAY TO GO 4, SET MY DIR TO 4 AND GET OUT
|
||
;IF NOT OKAY TO GO 4, CHECK RECTANGLES AS IF MY DIR WAS 2
|
||
;IF IT IS OKAY TO GO 2, SET MY DIR TO 2 AND GET OUT
|
||
MOVE *A8(OXVAL),A4,L
|
||
MOVE *A8(OYVAL),A6,L
|
||
MOVK 4,A3
|
||
CALLR THIS_DIR
|
||
MOVE A1,*A13(TCH_WALL)
|
||
MOVE A1,A1
|
||
JRNZ CKJ6
|
||
MOVK 4,A5 ;YES, GO DIR 4
|
||
SETC
|
||
RETS
|
||
CKJ6 MOVK 2,A3
|
||
MOVE *A8(OXVAL),A4,L
|
||
MOVE *A8(OYVAL),A6,L
|
||
CALLR THIS_DIR
|
||
MOVE A1,*A13(TCH_WALL)
|
||
MOVE A1,A1
|
||
JRNZ CKOUT
|
||
MOVK 2,A5
|
||
SETC
|
||
RETS
|
||
CKME8
|
||
;CHECK RECTANGLES AS IF MY DIR WAS 7
|
||
;IF IT IS OKAY TO GO 7, SET MY DIR TO 7 AND GET OUT
|
||
;IF NOT OKAY TO GO 7, CHECK RECTANGLES AS IF MY DIR WAS 1
|
||
;IF IT IS OKAY TO GO 1, SET MY DIR TO 1 AND GET OUT
|
||
MOVE *A8(OXVAL),A4,L
|
||
MOVE *A8(OYVAL),A6,L
|
||
MOVK 7,A3
|
||
CALLR THIS_DIR
|
||
MOVE A1,*A13(TCH_WALL)
|
||
MOVE A1,A1
|
||
JRNZ CKJ7
|
||
MOVK 7,A5 ;YES, GO DIR 7
|
||
SETC
|
||
RETS
|
||
CKJ7 MOVK 1,A3
|
||
MOVE *A8(OXVAL),A4,L
|
||
MOVE *A8(OYVAL),A6,L
|
||
CALLR THIS_DIR
|
||
MOVE A1,*A13(TCH_WALL)
|
||
MOVE A1,A1
|
||
JRNZ CKOUT
|
||
MOVK 1,A5
|
||
SETC
|
||
RETS
|
||
CKME9
|
||
;CHECK RECTANGLES AS IF MY DIR WAS 7
|
||
;IF IT IS OKAY TO GO 7, SET MY DIR TO 7 AND GET OUT
|
||
;IF NOT OKAY TO GO 7, CHECK RECTANGLES AS IF MY DIR WAS 2
|
||
;IF IT IS OKAY TO GO 2, SET MY DIR TO 2 AND GET OUT
|
||
MOVE *A8(OXVAL),A4,L
|
||
MOVE *A8(OYVAL),A6,L
|
||
MOVK 7,A3
|
||
CALLR THIS_DIR
|
||
MOVE A1,*A13(TCH_WALL)
|
||
MOVE A1,A1
|
||
JRNZ CKJ8
|
||
MOVK 7,A5 ;YES, GO DIR 4
|
||
SETC
|
||
RETS
|
||
CKJ8 MOVK 2,A3
|
||
MOVE *A8(OXVAL),A4,L
|
||
MOVE *A8(OYVAL),A6,L
|
||
CALLR THIS_DIR
|
||
MOVE A1,*A13(TCH_WALL)
|
||
MOVE A1,A1
|
||
JRNZ CKOUT
|
||
MOVK 2,A5
|
||
SETC
|
||
RETS
|
||
|
||
;FIRST RECTANGLE LIST FOR PLAYERS
|
||
XX .EQU 241
|
||
YY .EQU 202
|
||
RECT1 .WORD 242-XX,927-YY,338-XX,990-YY ;ONE ENTRY = UPLFT,LOWRGT
|
||
.WORD 324-4-XX,922-YY,380-XX,980-YY
|
||
.WORD 500-XX,921-YY,551-XX,980-YY
|
||
.WORD 540-4-XX,927-YY,630-XX,990-YY
|
||
|
||
RECT2 .WORD 1,0,27H,23CH ;242-XX,202-YY,280-XX,774-YY ;AFTER FLAG IS DEAD
|
||
.WORD 026H,19DH,3DH,1FAH ;279-XX,618-YY,302-XX,708-YY
|
||
.WORD 26H,0FBH,3DH,15DH ;279-XX,453-YY,302-XX,551-YY
|
||
.WORD 14FH-4,1CAH,18FH,21EH ;579-XX,677-YY,640-XX,744-YY
|
||
.WORD 14FH-4,14AH,18FH,19DH ;579-XX,542-YY,640-XX,615-YY
|
||
.WORD 245-XX,202-YY,827-XX,263-YY
|
||
.WORD 268-XX,308-YY,368-XX,397-YY
|
||
.WORD 245-XX,202-YY,07AH,285-YY
|
||
.WORD 0
|
||
RECT3 .WORD 268-XX,312-YY,370-XX,397-YY ;VERT SCROLL STOPS
|
||
.WORD 245-XX,202-YY,827-XX,263-YY
|
||
.WORD 242-XX,202-YY,277-XX,574-YY
|
||
.WORD 245-XX,202-YY,07AH,277-YY ;285
|
||
.WORD 0
|
||
|
||
RECT4 .WORD 268-XX,312-YY,370-XX,397-YY ;HORZ SCROLL STARTS
|
||
.WORD 245-XX,202-YY,827-XX,263-YY
|
||
.WORD 242-XX,202-YY,277-XX,574-YY
|
||
.WORD 822-XX,206-YY,906-XX,307-YY
|
||
.WORD 955-XX,203-YY,1120-XX,307-YY
|
||
.WORD 1071-XX,278-YY,1125-XX,463-YY
|
||
.WORD 0
|
||
RECT5 .WORD 822-4-XX,206-YY,906-XX,306-YY ;HORZ SCROLL STOPS
|
||
.WORD 955-4-XX,203-YY,1120-XX,306-YY
|
||
.WORD 1079-4-XX,278-YY,1125-XX,463-YY ;1079=1071
|
||
.WORD 245-XX,203-YY,827-XX,263-YY
|
||
.WORD 0
|
||
SRECT1A ;FOR AREA ABOVE EXPRESSWAY
|
||
.WORD 252-XX,203-YY,420-XX,305-YY ;INTO ELEVATOR 45 WIDE
|
||
.WORD 465-XX,203-YY,637-XX,305-YY
|
||
.WORD 0
|
||
BSRECT1A ;ABOVE XPRESS
|
||
.WORD 252-XX,202-YY,420-XX,290-YY
|
||
.WORD 465-XX,202-YY,637-XX,290-YY
|
||
.WORD 0
|
||
|
||
BRECT1 .WORD 243-XX,900-YY,378-XX,970-YY
|
||
.WORD 503-XX,908-YY,635-XX,970-YY
|
||
|
||
BRECT2 .WORD 242-XX,203-YY,281-XX,772-YY
|
||
.WORD 582-XX,656-YY,641-XX,740-YY
|
||
.WORD 582-XX,527-YY,641-XX,610-YY
|
||
.WORD 243-XX,204-YY,843-XX,250-YY
|
||
.WORD 265-XX,305-YY,361-XX,385-YY
|
||
.WORD 0
|
||
BRECT3 .WORD 243-XX,204-YY,843-XX,250-YY ;FROM REACTOR TO ELEVATOR
|
||
.WORD 024DH,05H,02A0H,057H ;830-XX,207-YY,894-XX,294-YY
|
||
.WORD 02C0H,05H,036BH,057H ;965-XX,207-YY,1116-XX,294-YY
|
||
.WORD 1073-XX,244-YY,1118-XX,448-YY
|
||
.WORD 0
|
||
|
||
CKOFF .LONG 0,[-4,0],[8,0],0,[0,11],[-4,8],[8,8],[0,-5],[-4,-6],[8,-6]
|
||
;CKOFF2 .LONG 0,[-8,0],[16,0],0,[0,22],[-8,16],[16,16],[0,-10],[-8,-12],[16,-12]
|
||
CKOFF2 .LONG 0,[-6,0],[11,0],0,[0,14],[-6,10],[10,10],[0,-8],[-6,-9],[11,-9]
|
||
;
|
||
; 1
|
||
; 8 5
|
||
;7 4
|
||
; 9 6
|
||
; 2
|
||
;
|
||
|
||
VELX_LIST:
|
||
.LONG 0,0,0,0,HNORMVEL,HSLOVEL,HSLOVEL,-HNORMVEL,-HSLOVEL
|
||
.LONG -HSLOVEL
|
||
VELY_LIST:
|
||
.LONG 0,-VNORMVEL,VNORMVEL,0,0,-VSLOVEL,VSLOVEL,0
|
||
.LONG -VSLOVEL,VSLOVEL
|
||
VELX_LIST2:
|
||
.LONG 0,0,0,0,HNORMVEL2,HSLOVEL2,HSLOVEL2,-HNORMVEL2,-HSLOVEL2
|
||
.LONG -HSLOVEL2
|
||
VELY_LIST2:
|
||
.LONG 0,-VNORMVEL2,VNORMVEL2,0,0,-VSLOVEL2,VSLOVEL2,0
|
||
.LONG -VSLOVEL2,VSLOVEL2
|
||
VELX_LIST3:
|
||
.LONG 0,0,0,0,HNORMVEL3,HSLOVEL3,HSLOVEL3,-HNORMVEL3,-HSLOVEL3
|
||
.LONG -HSLOVEL3
|
||
VELY_LIST3:
|
||
.LONG 0,-VNORMVEL3,VNORMVEL3,0,0,-VSLOVEL3,VSLOVEL3,0
|
||
.LONG -VSLOVEL3,VSLOVEL3
|
||
;
|
||
STUFF_VEL:
|
||
MOVE *A13(TCH_WALL),A0
|
||
JRZ SVX
|
||
CLR A1
|
||
CLR A0
|
||
JRUC SV2
|
||
SVX
|
||
MOVE *A13(SHOECNT),A0
|
||
JRZ SV
|
||
DEC A0
|
||
MOVE A0,*A13(SHOECNT)
|
||
MOVE A0,A2
|
||
ANDI 03FFH,A0
|
||
JRNZ SVNO
|
||
;SHOES DONE!
|
||
MOVE A0,*A13(SHOECNT)
|
||
SVNO
|
||
BTST 15,A2
|
||
JRZ VBOOT
|
||
;TENNIS SHOE SPEED
|
||
MOVI VELX_LIST3,A2
|
||
ADD A6,A2
|
||
MOVE *A2,A0,L
|
||
|
||
MOVI VELY_LIST3,A2
|
||
ADD A6,A2
|
||
MOVE *A2,A1,L
|
||
JRUC SV2
|
||
|
||
VBOOT MOVI VELX_LIST2,A2
|
||
ADD A6,A2
|
||
MOVE *A2,A0,L
|
||
|
||
MOVI VELY_LIST2,A2
|
||
ADD A6,A2
|
||
MOVE *A2,A1,L
|
||
JRUC SV2
|
||
|
||
SV MOVI VELX_LIST,A2
|
||
ADD A6,A2
|
||
MOVE *A2,A0,L
|
||
|
||
MOVI VELY_LIST,A2
|
||
ADD A6,A2
|
||
MOVE *A2,A1,L
|
||
|
||
SV2 MOVE A1,*A8(OYVEL),L
|
||
MOVE A0,*A8(OXVEL),L
|
||
|
||
; NOW ADD SAME VALUES INTO TORSO RECORD
|
||
MOVE *A13(TSO_PTR),A3,L
|
||
MOVE A1,*A3(OYVEL),L
|
||
MOVE A0,*A3(OXVEL),L
|
||
RETS
|
||
|
||
;
|
||
; INITIALIZE PLAYER OBJECT
|
||
; GET OBJECT INFO AND DO INSERT INTO OBJECT LIST
|
||
;
|
||
STRT_PLYR_LEGS:
|
||
;CHECK TO SEE IF THIS IS PLAYER 1 OR 2
|
||
CLR A0
|
||
MOVE A0,@TMP
|
||
CALLR GETP
|
||
MOVI 158,A3
|
||
MOVI DMAWNZ,A4
|
||
CLR A6
|
||
CLR A7
|
||
CALLA BEGINOBJ2
|
||
RETS
|
||
STRT_PLYR_TORSO:
|
||
;CHECK TO SEE IF THIS IS PLAYER 1 OR 2
|
||
MOVK 1,A0
|
||
MOVE A0,@TMP
|
||
CALLR GETP
|
||
MOVI 159,A3 ;HIGHER THAN LEGS
|
||
MOVI DMAWNZ+M_NOCOLL,A4 ;NO COLLISIONS WITH CHEST!
|
||
CLR A6
|
||
CLR A7
|
||
CALLA BEGINOBJ2
|
||
RETS
|
||
GETP
|
||
;START CORRECT IMAGE/ STUFF PROPER ID
|
||
MOVE *A13(PNUM),A2
|
||
CMPI 1,A2
|
||
JREQ PYX
|
||
|
||
MOVE @TMP,A0
|
||
JRZ PYXXX
|
||
MMTM SP,A0,A1
|
||
MOVK 32,A9
|
||
MOVI MEP2,A8
|
||
CREATE0 ME1
|
||
MMFM SP,A0,A1
|
||
PYXXX
|
||
MOVI BLACK,A2 ;TURN ON PLAYER 2 (BLACK)
|
||
MOVI CLSPLYR|TYPPLYR|SUBPL_2,A5
|
||
SETPXY2
|
||
MOVE @WORLDTLX,A0,L
|
||
MOVE @RUNIN,A1
|
||
JRZ FB0
|
||
CMPI 3,A1
|
||
JRNZ SD4
|
||
ADDI 0CB0000H,A0
|
||
MOVE @WORLDTLY,A1,L
|
||
SUBI [10,0],A1
|
||
RETS
|
||
SD4
|
||
;FROM SIDE
|
||
SUBI 080000H,A0
|
||
MOVE @WORLDTLY,A1,L
|
||
ADDI [130,0],A1
|
||
RETS
|
||
FB0
|
||
MOVE @WORLDTLY,A3,L
|
||
CMPI [127EH,0],A3
|
||
JRNZ FB01
|
||
;PLACE NEAR P2 PARACHUTE
|
||
ADDI 010B0000H,A0
|
||
MOVE @WORLDTLY,A1,L
|
||
ADDI 05B0000H,A1
|
||
|
||
MMTM SP,A9,A10,A0,A1
|
||
MOVE @TMP,A0
|
||
JRZ FB00
|
||
callr aud_plyrbeg
|
||
MOVI 35,A10 ;TIME RINGS ARE ON
|
||
MOVK 2,A9
|
||
CREATE RNG2PID,RINGS
|
||
FB00 MMFM SP,A9,A10,A0,A1
|
||
RETS
|
||
|
||
FB01 ADDI 0C80000H,A0
|
||
MOVE @WORLDTLY,A1,L
|
||
ADDI 0FF0000H,A1
|
||
RETS
|
||
|
||
PYX
|
||
MOVE @TMP,A0
|
||
JRZ PYXX
|
||
MMTM SP,A0,A1
|
||
CLR A9
|
||
MOVI MEP1,A8
|
||
CREATE0 ME1
|
||
MMFM SP,A0,A1
|
||
PYXX
|
||
MOVI P1WG6T1,A2
|
||
MOVI CLSPLYR|TYPPLYR|SUBPL_1,A5
|
||
SETPXY1
|
||
MOVE @WORLDTLX,A0,L
|
||
MOVE @RUNIN,A1
|
||
JRZ FB1
|
||
CMPI 3,A1
|
||
JRNZ SD44
|
||
ADDI 0B30000H,A0
|
||
MOVE @WORLDTLY,A1,L
|
||
SUBI [5,0],A1
|
||
RETS
|
||
SD44
|
||
;FROM SIDE
|
||
SUBI 080000H,A0
|
||
MOVE @WORLDTLY,A1,L
|
||
ADDI [115,0],A1
|
||
RETS
|
||
|
||
FB1 MOVE @WORLDTLY,A3,L
|
||
CMPI [127EH,0],A3
|
||
JRNZ FB11
|
||
;PLACE NEAR P1 PARACHUTE
|
||
ADDI 0730000H,A0
|
||
MOVE @WORLDTLY,A1,L
|
||
ADDI 07F0000H,A1
|
||
|
||
MMTM SP,A9,A10,A0,A1
|
||
MOVE @TMP,A0
|
||
JRZ FB000
|
||
callr aud_plyrbeg
|
||
MOVI 35,A10 ;TIME RINGS ARE ON
|
||
MOVK 1,A9
|
||
CREATE RNG1PID,RINGS
|
||
FB000 MMFM SP,A9,A10,A0,A1
|
||
RETS
|
||
FB11 ADDI 0B30000H,A0
|
||
MOVE @WORLDTLY,A1,L
|
||
ADDI 0FF0000H,A1
|
||
apbx RETS
|
||
|
||
aud_plyrbeg
|
||
movk AUDBEGIN,a0
|
||
calla AUD1
|
||
move @STATUS,a0
|
||
subk 3,a0
|
||
jrne apbx
|
||
|
||
MOVE @GAMSTATE,A0
|
||
CMPI ININTRO,A0 ;IF IN INTRO, THE REGULAR START UP
|
||
JRZ apbx
|
||
|
||
movk AUD1STRT,a0 ;Mid game start
|
||
movi -1,a1
|
||
jauc AUD
|
||
|
||
ME1
|
||
;PLAYER NAME MESSAGE
|
||
;A9=PLYR # 1 OR 2
|
||
move @WAVE,a0
|
||
cmpi 40,a0
|
||
jaeq SUCIDE
|
||
SLEEPK 5
|
||
MOVI PLYROBJS,A0,L
|
||
ADD A9,A0
|
||
MOVE *A0,A10,L
|
||
MOVE A8,A2
|
||
MOVI 359,A3 ;HIGHER THAN LEGS
|
||
MOVI DMAWNZ+M_NOCOLL,A4 ;NO COLLISIONS WITH CHEST!
|
||
MOVI CLSPLYR|TYPHLPR,A5
|
||
CLR A6
|
||
CLR A7
|
||
CALLA BEGINOBJ2
|
||
MOVK 15,A9
|
||
CREATE0 MANY
|
||
MOVI 6*60+10,A11 ;8*60
|
||
METOP
|
||
MOVE A8,A0
|
||
MOVE A10,A8 ;*A13(LEG_PTR),A8,L
|
||
CALLA GETANIXY
|
||
ADDI 00D0000H,A2 ;Y
|
||
ADDI 0E0000H,A3 ;X
|
||
MOVE *A0(OFLAGS),A4,W
|
||
CALLA GANISAG
|
||
MOVE A0,A8
|
||
SLEEPK 1
|
||
DSJ A11,METOP
|
||
jauc DELOBJDIE
|
||
MANY
|
||
SLEEPK 12
|
||
MOVE A8,A0
|
||
CALLA OBJON
|
||
SLEEPK 12
|
||
MOVE A8,A0
|
||
CALLA OBJOFF
|
||
DSJ A9,MANY
|
||
DIE
|
||
|
||
DIE_CODE
|
||
;FROM TORSO CODE
|
||
; PUSH A1
|
||
; CREATE0 CHEER
|
||
; PULL A1
|
||
MOVE *A13(LEG_PTR),A2,L ;GET LEG INFO
|
||
;STOP PLAYER FROM FLOATING
|
||
CLR A0
|
||
MOVE A0,*A2(OXVEL),L
|
||
MOVE A0,*A2(OYVEL),L
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
|
||
zext a1
|
||
CMPI CLSENMY+TYPSL+SUBSM,A1
|
||
JRZ DIECHU2 ;SPIDER MOM?
|
||
CMPI CLSENMY|TYPLAYR|SUBFLM,A1
|
||
JREQ DIEFIRE2
|
||
CMPI CLSENMY|TYPLAYR,A1
|
||
JREQ DIEFIRE
|
||
CMPI CLSNEUT|TYPMINE,A1
|
||
JREQ DIECHU
|
||
CMPI CLSENMY|TYPT72|SUBTK,A1
|
||
JREQ DIECHU2
|
||
CMPI CLSENMY|TYPT72,A1
|
||
JREQ DIECHU2
|
||
CMPI CLSNEUT|TYPMINE|01,A1 ;SHOCK OIDS HERE
|
||
JRZ shokh
|
||
|
||
srl 8,a1 ;/256
|
||
CMPI (CLSENMY|TYPFACE)/256,A1
|
||
JREQ DIECHU2
|
||
jruc SPDTH
|
||
|
||
;SHOCK HERE
|
||
shokh CREATE0 SHKSND
|
||
MOVE *A8(OPLINK),A0,L
|
||
MOVE *A0(LEG_PTR),A0,L
|
||
MOVI 01A000000H,A1
|
||
MOVE A1,*A0(OXVAL),L ;MOVE LEGS OUT OF THE WAY!
|
||
|
||
CLR A0
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
|
||
|
||
MOVE *A8(OYPOS),A0
|
||
SUBK 16H,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
; MOVE *A8(OXPOS),A0
|
||
; ADDI 2H,A0
|
||
; MOVE A0,*A8(OXPOS)
|
||
MOVI 342,A0 ;132
|
||
MOVE A0,*A8(OZPOS)
|
||
|
||
MOVI 120,A11
|
||
CREATE0 SHKPLYR
|
||
MOVI TSHK,A9
|
||
JSRP FRANIMQ
|
||
JRUC ALLDIE
|
||
|
||
SHKPLYR SLEEPK 1
|
||
movk 2,a0
|
||
CALLA RNDRNG0
|
||
subk 1,a0 ;-1 to 1
|
||
move *a8(OXPOS),a1
|
||
add a0,a1
|
||
move a1,*a8(OXPOS)
|
||
movk 2,a0
|
||
CALLA RNDRNG0
|
||
subk 1,a0 ;-1 to 1
|
||
move *a8(OYPOS),a1
|
||
add a0,a1
|
||
move a1,*a8(OYPOS)
|
||
DSJ A11,SHKPLYR
|
||
DIE
|
||
SHKSND
|
||
SLEEPK 01
|
||
MOVI ELECTRO,A0 ;SCREAM UP INTO AIR
|
||
CALLA ONESNDOVR
|
||
SLEEPK 1
|
||
MOVI AIRSCRM,A0 ;SCREAM UP INTO AIR
|
||
CALLA ONESNDOVR
|
||
SLEEP 35H
|
||
MOVI ELECTRO,A0 ;SCREAM UP INTO AIR
|
||
CALLA ONESNDOVR
|
||
DIE
|
||
DIEFIRE2
|
||
;IF FLAMING SPIN DEATH, FALL IN HERE
|
||
MOVI FIREDI,A0 ;FLAME PLAYER SCREAM
|
||
CALLA ONESNDOVR
|
||
MOVI FIRELST2,A9
|
||
MOVI 157,A0
|
||
JRUC DFZ2
|
||
FIXNUM SLEEPK 3
|
||
CLR A0
|
||
MOVE A0,@LOCK_NUM
|
||
DIE
|
||
DIEFIRE
|
||
;QUICK FLAME DEATH
|
||
MOVE @START,A0
|
||
CMPI 11,A0
|
||
JRZ DJJ
|
||
MOVE @LOCK_NUM,A0
|
||
CMPI 6,A0
|
||
JRNZ DF2X
|
||
DJJ CREATE0 FIXNUM
|
||
SLEEP 40
|
||
JRUC ALLDIE
|
||
DF2X
|
||
SLEEPK 05
|
||
MOVI FIREDI,A0
|
||
CALLA ONESNDOVR
|
||
MOVI FIRELST,A9
|
||
DFZ MOVI 159,A0
|
||
DFZ2 MOVE A0,*A8(OZPOS)
|
||
JSRP FRANIMQ
|
||
SLEEPK 1
|
||
JRUC ALLDIE
|
||
SPDTH
|
||
;IF SPIN DEATH, FALL IN HERE
|
||
SLEEPK 05
|
||
MOVI UGH2,A0
|
||
CALLA ONESNDOVR
|
||
;BLOOD CHUNKS
|
||
; MOVI 159,A0 ;157
|
||
; MOVE A0,*A8(OZPOS)
|
||
MOVE *A13(PNUM),A9
|
||
CREATE FUTUREPID,DTB
|
||
MOVK 1,A9
|
||
CREATE FUTUREPID,TWOCHNKS
|
||
MOVK 30,A9
|
||
CREATE FUTUREPID,TWOCHNKS
|
||
MOVI TSPN,A9
|
||
JSRP FRANIMQ
|
||
MOVI DIELST,A9
|
||
JSRP FRANIMQ
|
||
SLEEPK 1
|
||
JRUC ALLDIE
|
||
|
||
DTB SLEEPK 15
|
||
MOVI MEUGH,A0
|
||
CALLA ONESNDOVR
|
||
SLEEP 30+9
|
||
MOVI ELECTRO,A0 ;SHOCK SND AT DEATH
|
||
CALLA ONESNDOVR
|
||
SLEEP 02CH+20-30
|
||
MOVI 158,A0 ;BRING TORSO DOWN TO LEG ZPOS
|
||
MOVE A0,*A8(OZPOS)
|
||
SLEEPK 7
|
||
;A9=1/2 FOR PLAYER #
|
||
CREATE BMBPID,TBOMBD
|
||
DIE
|
||
|
||
CHNKS
|
||
;IF NO BOG, BLOOD FROM CHEST HOLE!
|
||
MOVE @HULK_CNT,A0
|
||
CMPI 20,A0
|
||
JRHI CDI
|
||
MOVE @PCTOT,A2
|
||
CMPI 013H,A2 ;19
|
||
JRLO ADDPCS
|
||
CDI DIE
|
||
ADDPCS MOVK 15,A10
|
||
SLEEPK 10
|
||
CH1 CREATE FUTUREPID,CHESTBLD
|
||
SLEEPK 1
|
||
DSJS A10,CH1
|
||
SLEEP 3FH
|
||
MOVK 4,A10
|
||
CH2 CREATE FUTUREPID,CHESTBLD2
|
||
SLEEPK 2
|
||
DSJS A10,CH2
|
||
DIE
|
||
|
||
CHESTBLD2
|
||
;FLOW BLOOD OUT OF CHEST HOLE
|
||
MOVI -03000H,B0
|
||
MOVI 03000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A6
|
||
MOVI -03000H,B0
|
||
MOVI 03000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A7
|
||
CALLA GETANIXY
|
||
MOVE A2,A1
|
||
|
||
SUBI 020000H,A3
|
||
MOVE *A8(OFLAGS),A0
|
||
BTST B_FLIPH,A0
|
||
JRZ NOHX
|
||
ADDI 040000H,A3
|
||
NOHX
|
||
SUBI 01C0000H,A1 ;1A
|
||
;A0=PROPER X,A1=Y
|
||
MOVI BLDB,A9
|
||
JRUC CHB
|
||
CHESTBLD
|
||
;FLOW BLOOD OUT OF CHEST HOLE
|
||
MOVI -0A000H,B0
|
||
MOVI 0A000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A6
|
||
MOVI -0A000H,B0
|
||
MOVI 0A000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A7
|
||
CALLA GETANIXY
|
||
MOVE A2,A1
|
||
SUBI 0B0000H,A3
|
||
|
||
MOVE *A8(OFLAGS),A0
|
||
BTST B_FLIPH,A0
|
||
JRZ NOHXX
|
||
ADDI 0110000H,A3
|
||
NOHXX
|
||
SUBI 01D0000H,A1
|
||
MOVI BLDBB,A9
|
||
CHB
|
||
MOVE A3,A0
|
||
;A0=PROPER X,A1=Y
|
||
MOVI BBS1,A2 ;(OIMG)
|
||
MOVI 343,A3 ;(OZPOS)
|
||
MOVI DMAWNZ+M_NOCOLL,A4 ;(OFLAGS) NON-ZERO VALUE
|
||
MOVI CLSDEAD,A5 ;(OID)
|
||
CALLA BEGIN_CHNK
|
||
jauc FRQDELDIE
|
||
|
||
BLDBB:
|
||
.LONG bldclt4
|
||
.WORD 6
|
||
.LONG bldclt5
|
||
.WORD 6
|
||
.LONG bldclt6
|
||
.WORD 6
|
||
.LONG bldclt7
|
||
.WORD 6
|
||
.LONG bldclt8
|
||
.WORD 6
|
||
.LONG 0
|
||
BLDB .LONG rblot1
|
||
.WORD 4
|
||
.LONG rblot2
|
||
.WORD 4
|
||
.LONG rblot3
|
||
.WORD 4
|
||
.LONG rblot4
|
||
.WORD 4
|
||
.LONG rblot5
|
||
.WORD 4
|
||
.LONG rblot6
|
||
.WORD 4
|
||
.LONG rblot7
|
||
.WORD 4
|
||
.LONG rblot8
|
||
.WORD 4
|
||
.LONG 0
|
||
|
||
TWOCHNKS
|
||
MOVE A9,A0
|
||
CALLA PRCSLP
|
||
;USED FOR PLAYER SPIN DEATH!
|
||
;A8=PLAYER PNTR
|
||
MOVI -02000H,B0
|
||
MOVI 02000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A6
|
||
MOVI -02000H,B0
|
||
MOVI 02000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A7
|
||
CALLA GETANIXY
|
||
MOVE A2,A1
|
||
ADDI 0180000H,A1 ;2A
|
||
SUBI 040000H,A3
|
||
MOVE A3,A0
|
||
;A0=PROPER X,A1=Y
|
||
MOVI BLDOTS,A9
|
||
MOVI BBS1,A2 ;(OIMG)
|
||
MOVI 161,A3 ;(OZPOS);150
|
||
MOVI DMAWNZ+M_NOCOLL,A4 ;(OFLAGS) NON-ZERO VALUE
|
||
MOVI CLSDEAD,A5 ;(OID)
|
||
CALLA BEGIN_CHNK
|
||
jauc FRQDELDIE
|
||
|
||
UNDERME
|
||
;A8=PLAYER PNTR
|
||
MOVI -04000H,B0
|
||
MOVI 04000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A6
|
||
MOVI -04000H,B0
|
||
MOVI 04000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A7
|
||
CALLA GETANIXY
|
||
MOVE A2,A1
|
||
MOVE A3,A0
|
||
;A0=PROPER X,A1=Y
|
||
MOVI T72BLAST1,A2
|
||
MOVI TBLST,A9 ;(OIMG)
|
||
MOVI 155,A3 ;(OZPOS)
|
||
MOVI DMAWNZ+M_NOCOLL,A4 ;(OFLAGS) NON-ZERO VALUE
|
||
MOVI CLSNEUT|TYPNEUT,A5 ;(OID)
|
||
CALLA BEGIN_CHNK
|
||
jauc FRQDELDIE
|
||
DIECHU2
|
||
;BLOOD CHUNKS
|
||
CREATE FUTUREPID,UNDERME
|
||
CREATE FUTUREPID,UNDERME
|
||
CREATE FUTUREPID,UNDERME
|
||
CREATE FUTUREPID,UNDERME
|
||
CREATE FUTUREPID,UNDERME
|
||
|
||
move @WAVE,A1
|
||
subk 16,A1
|
||
jrnz notorc ;!Orcus?
|
||
move @bossd_t,a0,L
|
||
move *a0(OXPOS),a2
|
||
addi 43,a2
|
||
move *a0(OYPOS),a3
|
||
jruc bosskp
|
||
|
||
notorc PUSH a8
|
||
MOVE *A13(KILLERO),A8,L
|
||
CALLA GETCPNT
|
||
;A1=Y/X CENTER POS
|
||
PULL A8
|
||
CLR A2
|
||
MOVX A1,A2
|
||
SRL 16,A1
|
||
MOVE A1,A3
|
||
bosskp MOVE *A8(OXPOS),A4
|
||
MOVI 09000H,A0 ;XVEL
|
||
MOVI 07000H,A6 ;YVEL
|
||
CMP A4,A2
|
||
JRLT GOGOX
|
||
;ADD TO PLYR X
|
||
NEG A0
|
||
GOGOX MOVE A0,*A8(OXVEL),L
|
||
MOVE *A8(OYPOS),A4
|
||
CMP A4,A3
|
||
JRLT GONEGD
|
||
;ADD TO PLYR Y
|
||
NEG A6
|
||
GONEGD MOVE A6,*A8(OYVEL),L
|
||
|
||
DIECHU:
|
||
MOVI AIRSCRM,A0 ;SCREAM UP INTO AIR
|
||
CALLA ONESNDOVR
|
||
MOVE *A8(OPLINK),A0,L
|
||
MOVE *A0(LEG_PTR),A0,L
|
||
MOVI 01A000000H,A1
|
||
MOVE A1,*A0(OXVAL),L ;MOVE LEGS OUT OF THE WAY!
|
||
|
||
;BIG IMAGE INTO AIR
|
||
MOVE *A8(OFLAGS),A0
|
||
BTST B_FLIPH,A0
|
||
JRZ NOH
|
||
ANDI 0FFEFH,A0
|
||
JRUC NOH1
|
||
NOH ORI M_FLIPH,A0
|
||
NOH1 MOVE A0,*A8(OFLAGS)
|
||
MOVE *A8(OYPOS),A0
|
||
ADDI 21H,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
MOVI 342,A0 ;132
|
||
MOVE A0,*A8(OZPOS)
|
||
CREATE FUTUREPID,CHNKS
|
||
MOVI FLYUP,A9
|
||
JSRP FRANIMQ
|
||
CLR A0
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
MOVI 129,A0 ;142
|
||
MOVE A0,*A8(OZPOS)
|
||
MOVK 9H,A10
|
||
CALLA SHAKER
|
||
MOVI EXP1,A0
|
||
CALLA ONESND ;SOUND AT LANDING
|
||
SLEEPK 23
|
||
MOVK 4,A10
|
||
;ABOUT 1 SECOND OF BLINK
|
||
BK
|
||
MOVE A8,A0
|
||
CALLA OBJOFF
|
||
SLEEPK 4
|
||
MOVE A8,A0
|
||
CALLA OBJON
|
||
SLEEPK 4
|
||
DSJS A10,BK
|
||
SLEEPK 18
|
||
ALLDIE
|
||
MOVE *A13(PNUM),A0
|
||
SLL 5,A0
|
||
ADDI TBLP,A0
|
||
MOVE *A0,A11,L
|
||
SLP SLEEPK 1
|
||
MOVE @HALT,A0
|
||
JRNZ SLP
|
||
MOVE *A11(CNTD),A0
|
||
JRZ DOV
|
||
|
||
CLR A1
|
||
MOVE A1,*A8(OYPOS)
|
||
MOVE A1,*A8(OXVAL),L
|
||
|
||
MOVE *A8(OPLINK),A0,L
|
||
MOVE *A0(LEG_PTR),A0,L
|
||
MOVI 01A000000H,A1
|
||
MOVE A1,*A0(OXVAL),L ;MOVE LEGS OUT OF THE WAY!
|
||
|
||
; MOVE *A13(PNUM),A10 ;1 OR 2
|
||
; DEC A10
|
||
; MMTM SP,A8,A9,A10,A11
|
||
; CALLA SWAPSK ;TELL HULKS TO SEEK ANOTHER PLAYER
|
||
; MMFM SP,A8,A9,A10,A11
|
||
|
||
SLPZ
|
||
SLEEPK 1
|
||
MOVE @HALT,A0
|
||
JRNZ SLPZ
|
||
MOVE *A11(CNTD),A0
|
||
JRZ DOV
|
||
CMPI 1,A0
|
||
JRZ SLPZ
|
||
;PLAYERS TIME HAS EXPIRED.
|
||
;KILL PROC,OBJS,START MESSAGES!
|
||
CLR A0
|
||
MOVE A0,*A11(CNTD)
|
||
CMPI P1DATA,A11
|
||
JRNE KL2
|
||
;KILL PLYR1
|
||
CALLA KILLP1
|
||
;IS OTHER GUY STILL AROUND?
|
||
MOVI PLY2PID,A0
|
||
DYE0 CLR A1
|
||
NOT A1
|
||
CALLA EXISTP
|
||
JRNZ DYE
|
||
MOVI INGAMEOV,A0
|
||
MOVE A0,@GAMSTATE,W
|
||
SOUND1 MUSICOFF ;MUSIC HARD OFF
|
||
CLR A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA KILALL ;KILL ALL GAME PROCESSES
|
||
CREATE GMEOVPID,GAMEOVER ;GAME IS NOW OFFICIALLY OVER
|
||
DYE DIE
|
||
;KILL PLYR2
|
||
KL2 CALLA KILLP2
|
||
;IS OTHER GUY STILL AROUND?
|
||
MOVI PLY1PID,A0
|
||
JRUC DYE0
|
||
|
||
TBLP .LONG 0,P1DATA,P2DATA
|
||
;
|
||
DOV
|
||
;
|
||
;DEAD OVER
|
||
;
|
||
MOVI P1DATA,A1
|
||
MOVE *A13(PNUM),A0
|
||
CMPI 1,A0
|
||
JREQ ET1
|
||
MOVI P2DATA,A1
|
||
ET1
|
||
MOVE *A1(PLIVES),A2
|
||
DEC A2
|
||
MOVE A2,*A1(PLIVES),W
|
||
MOVE A1,A11
|
||
CALLA STUFF_LVADDR
|
||
|
||
MOVI 159,A0 ;TORSO REGULAR Z
|
||
MOVE A0,*A8(OZPOS)
|
||
|
||
MMTM SP,A8,A9
|
||
MOVE *A13(PNUM),A8 ;FOR SCRIPTPLAY
|
||
MOVE @RUNIN,A10,W ;INDICATES FROM BOTTOM OR LEFT
|
||
CREATE SCRPID,SCRIPTPLAY
|
||
|
||
PUSH A8
|
||
MOVE A8,A0
|
||
CLR A9
|
||
MOVI MEP1,A8
|
||
CMPI 1,A0
|
||
JRZ IMP1
|
||
;PLYR 2
|
||
MOVK 32,A9
|
||
MOVI MEP2,A8
|
||
IMP1 CREATE0 ME1
|
||
MOVE *A13(PNUM),A8 ;FOR SCRIPTPLAY
|
||
PULL A8
|
||
|
||
|
||
MOVE *A13(LEG_PRC),A1,L
|
||
CLR A0
|
||
MOVE A0,*A1(SHOECNT) ;CLEAR FAST SHOE CNT
|
||
;MAYBE START HIM WITH GREEN FLAME THROWER
|
||
MOVK 6,A3 ;START HIM OUT STRONG
|
||
MOVI 80,A4
|
||
MOVE *A13(PNUM),A0
|
||
MOVE @P1DATA+PLIVES,A2
|
||
CMPI 2,A0
|
||
JRNZ IMO2
|
||
MOVE @P2DATA+PLIVES,A2
|
||
IMO2 CMPI 0,A2
|
||
JRNZ IMO3
|
||
|
||
MOVE @PCNT,A0
|
||
BTST 0,A0
|
||
JRZ IMO3
|
||
|
||
MOVK 7,A3 ;START HIM OUT STRONG
|
||
MOVI 75,A4
|
||
IMO3
|
||
MOVE A3,*A13(WPN_TYP),W ;AFTER A DEATH
|
||
MOVE A4,*A13(SHOTCNT)
|
||
|
||
CMPI 1,A10
|
||
JRNZ FB
|
||
;RUNIN FROM SIDE
|
||
MOVE @WORLDTLX,A3,L ;Y LINE TO REAPPEAR AT
|
||
SUBI [08H,0],A3
|
||
CMPI 1,A8
|
||
JRNE VX1R
|
||
;THIS IS FOR BRINGING THE PLAYER ON FROM OFF LEFT OF SCREEN
|
||
MOVE @WORLDTLY,A2,L
|
||
ADDI [0115,0],A2
|
||
MOVE @PLYRPRCS,A0,L
|
||
JRUC AXZ
|
||
VX1R
|
||
MOVE @WORLDTLY,A2,L
|
||
ADDI [0130,0],A2
|
||
MOVE @PLYRPRCS+32,A0,L
|
||
JRUC AXZ
|
||
|
||
FB MOVE @WORLDTLY,A2,L ;Y LINE TO REAPPEAR AT
|
||
ADDI [0108H,0],A2 ;FF
|
||
CMPI 1,A8
|
||
JRNE VX1
|
||
;THIS IS FOR BRINGING THE PLAYER ON FROM OFF BOTTOM OF SCREEN
|
||
MOVE @WORLDTLX,A3,L
|
||
ADDI [0B3H,0],A3
|
||
MOVE @PLYRPRCS,A0,L
|
||
JRUC AXZ
|
||
VX1
|
||
MOVE @WORLDTLX,A3,L
|
||
ADDI [0C8H,0],A3
|
||
MOVE @PLYRPRCS+32,A0,L
|
||
AXZ
|
||
MOVE *A0(LEG_PTR),A0,L
|
||
MOVE A3,*A0(OXVAL),L
|
||
MOVE A2,*A0(OYVAL),L
|
||
|
||
MMFM SP,A8,A9
|
||
;REALIGN PLAYER HALVES WHEN WE RESET
|
||
MOVE A8,A0
|
||
MOVE *A13(LEG_PTR),A8,L ;GET LEG PTR OUT OF TORSO STRUCT
|
||
CALLA GETANIXY
|
||
MOVE *A8(OFLAGS),A4,W
|
||
ORI M_NOCOLL,A4 ;NO COLLIDE FOR TORSO
|
||
CALLA GANISAG
|
||
MOVE A0,A8
|
||
;TURN BACK ON TORSO OBJECT
|
||
CALLA OBJON
|
||
|
||
;GIVE TORSO BACK HIS CORRECT PAL
|
||
MOVI nup1,A0
|
||
MOVE *A8(OPLINK),A1,L
|
||
MOVE *A1(PNUM),A1
|
||
CMPI 1,A1
|
||
JREQ OKP
|
||
;CHANGE TO PLAYER 2 PAL IF NEEDED!
|
||
MOVI nup2,A0
|
||
OKP
|
||
CALLA GETFPAL ;GET A COLOR MAP ASSIGNMENT
|
||
MOVE A0,*A8(OPAL),W ;STORE THE NEW PALETTE
|
||
|
||
;SAFE FOR AWHILE
|
||
MOVI 120,A0 ;80
|
||
MOVE A0,*A13(DELYDET),W
|
||
CLR A0
|
||
MOVE A0,*A13(DEAD),W
|
||
JRUC NDD ;MAINLINE CODE REENTRY
|
||
|
||
KILLP1
|
||
;KILL OFF PLAYER 1 STUFF
|
||
CLR A1
|
||
NOT A1
|
||
MOVI PLY1PID,A0
|
||
CALLA KILALL
|
||
MOVI CLSPLYR|TYPPLYR|SUBPL_1,A0
|
||
CALLA KILOBJ ;KILL PLAYER 1 IMAGES
|
||
CLR A0
|
||
MOVE A0,@PLYROBJS,L
|
||
MOVE A0,@PLYRPRCS,L
|
||
RETS
|
||
KILLP2
|
||
;KILL OFF PLAYER 2 STUFF
|
||
CLR A1
|
||
NOT A1
|
||
MOVI PLY2PID,A0
|
||
CALLA KILALL
|
||
MOVI CLSPLYR|TYPPLYR|SUBPL_2,A0
|
||
CALLA KILOBJ
|
||
CLR A0
|
||
MOVE A0,@PLYROBJS+32,L
|
||
MOVE A0,@PLYRPRCS+32,L
|
||
RETS
|
||
|
||
BLDOTS .LONG BBS1
|
||
.WORD NEWPALET|20
|
||
.LONG RDBOOM ;ONUP1
|
||
.LONG BBS2
|
||
.WORD 5
|
||
.LONG BBS3
|
||
.WORD 5
|
||
.LONG BBS4
|
||
.WORD 5
|
||
.LONG BBS5
|
||
.WORD 5
|
||
.LONG 0
|
||
|
||
TSPN:
|
||
.LONG P1WG8T1
|
||
.WORD FLIPBITS|3,0
|
||
.LONG P1WG9T1
|
||
.WORD 3
|
||
.LONG P1WG10T1
|
||
.WORD 3
|
||
.LONG P1WG12T1
|
||
.WORD 3
|
||
.LONG P1WG10T1
|
||
.WORD FLIPBITS|3,(M_FLIPH)
|
||
.LONG P1WG9T1
|
||
.WORD 3
|
||
.LONG P1WG8T1
|
||
.WORD 3
|
||
.LONG P1WG6T1
|
||
.WORD FLIPBITS|3,0
|
||
.LONG 0
|
||
FLYUP:
|
||
.LONG FLY1
|
||
.WORD 4 ;3
|
||
.LONG FLY2
|
||
.WORD 4 ;3
|
||
.LONG FLY3
|
||
.WORD 4 ;3
|
||
.LONG FLY4
|
||
.WORD 4 ;3
|
||
.LONG FLY5
|
||
.WORD 6 ;5
|
||
.LONG FLY6
|
||
.WORD 8 ;7
|
||
.LONG FLY7
|
||
.WORD 8 ;7
|
||
.LONG FLY8
|
||
.WORD 12 ;10
|
||
.LONG FLY7
|
||
.WORD 8 ;7
|
||
.LONG FLY6
|
||
.WORD 8 ;7
|
||
.LONG FLY5
|
||
.WORD 6 ;5
|
||
.LONG FLY4
|
||
.WORD 4 ;3
|
||
.LONG FLY3
|
||
.WORD 4 ;3
|
||
.LONG FLY2
|
||
.WORD 4 ;3
|
||
.LONG FLY1
|
||
.WORD 4; 3
|
||
.LONG LAND
|
||
.WORD 1
|
||
.LONG 0
|
||
FIRELST:
|
||
.LONG PLYD1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG PLYD2
|
||
.WORD 4
|
||
.LONG PLYD3
|
||
.WORD 4
|
||
.LONG PLYD4
|
||
.WORD 4
|
||
.LONG PLYD5
|
||
.WORD 4
|
||
.LONG PLYD6
|
||
.WORD 4
|
||
.LONG PLYD7
|
||
.WORD 4
|
||
.LONG PLYD8
|
||
.WORD 4 ;9
|
||
.LONG PFLM1
|
||
.WORD 4
|
||
.LONG PFLM2
|
||
.WORD 4
|
||
.LONG PFLM3
|
||
.WORD 4
|
||
.LONG PFLM4
|
||
.WORD 4
|
||
FIRELST2:
|
||
;SWITCH TO XPLOSION PAL (RDBOOM)
|
||
.LONG PLFR1
|
||
.WORD NEWPALET|6
|
||
.LONG RDBOOM
|
||
.LONG PLFR2
|
||
.WORD 6
|
||
.LONG PLFR3
|
||
.WORD NEWPALET|6
|
||
.LONG RDBOOM
|
||
.LONG PLFR4
|
||
.WORD 6
|
||
.LONG PLFR5
|
||
.WORD 6
|
||
.LONG PLFR6
|
||
.WORD 6
|
||
.LONG PLFR7
|
||
.WORD 6
|
||
.LONG PLFR8
|
||
.WORD 6
|
||
.LONG PLFR9
|
||
.WORD 6
|
||
.LONG PLFR10
|
||
.WORD 6
|
||
.LONG PLFR11
|
||
.WORD 6
|
||
.LONG PLFR12
|
||
.WORD 6
|
||
.LONG PLFR13
|
||
.WORD 6
|
||
.LONG PLFR14
|
||
.WORD 6
|
||
.LONG PLFR15
|
||
.WORD 6
|
||
.LONG PLFR16
|
||
.WORD 6
|
||
.LONG PLFR17
|
||
.WORD 6
|
||
.LONG PLFR18
|
||
.WORD 6
|
||
.LONG PLFR19
|
||
.WORD 6
|
||
.LONG PLFR20
|
||
.WORD 6
|
||
.LONG PLFR21
|
||
.WORD 6
|
||
.LONG PLFR22
|
||
.WORD 6
|
||
.LONG PLFR23
|
||
.WORD 6
|
||
.LONG PLFR24
|
||
.WORD 6
|
||
.LONG PLFR25
|
||
.WORD 6
|
||
.LONG 0
|
||
|
||
DIELST:
|
||
.LONG PLYD1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG PLYD2
|
||
.WORD 4
|
||
.LONG PLYD3
|
||
.WORD 4
|
||
.LONG PLYD4
|
||
.WORD 4
|
||
.LONG PLYD5
|
||
.WORD 4
|
||
.LONG PLYD6
|
||
.WORD 4
|
||
.LONG PLYD7
|
||
.WORD 4
|
||
.LONG PLYD8
|
||
.WORD 9
|
||
.LONG STRIKE1
|
||
.WORD 3
|
||
.LONG STRIKE2
|
||
.WORD 3
|
||
.LONG STRIKE3
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE4
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE5
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE6
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE9
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE10
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE11
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE12
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE13
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE14
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE15
|
||
.WORD 3
|
||
.LONG STRIKE17
|
||
.WORD 3
|
||
.LONG STRIKE16
|
||
.WORD 3
|
||
.LONG 0
|
||
LSPN:
|
||
.LONG P1SH8L1
|
||
.WORD FLIPBITS|3,0
|
||
.LONG P1SH9L1
|
||
.WORD 3
|
||
.LONG P1S10L1
|
||
.WORD 3
|
||
.LONG P1S12L1
|
||
.WORD 3
|
||
.LONG P1S10L1
|
||
.WORD FLIPBITS|3,(M_FLIPH)
|
||
.LONG P1SH9L1
|
||
.WORD 3
|
||
.LONG P1SH8L1
|
||
.WORD 3
|
||
.LONG P1SH6L1
|
||
.WORD FLIPBITS|3,0
|
||
.LONG 0
|
||
;
|
||
WALK_LIST:
|
||
.LONG PWK_UP,PWK_UP,PWK_DN,PWK_UP,PWK_RGT,PWK_UPRGT,PWK_DNRGT,PWK_LFT
|
||
.LONG PWK_UPLFT,PWK_DNLFT
|
||
WALK_LIST3:
|
||
.LONG FPWK_UP,FPWK_UP,FPWK_DN,FPWK_UP,FPWK_RGT,FPWK_UPRGT,FPWK_DNRGT,FPWK_LFT
|
||
.LONG FPWK_UPLFT,FPWK_DNLFT
|
||
REV_WALK_LIST:
|
||
.LONG PWK_UP,PWK_DN,PWK_UP,PWK_UP,PWK_LFT,PWK_DNLFT,PWK_UPLFT,PWK_RGT
|
||
.LONG PWK_DNRGT,PWK_UPRGT
|
||
REV_WALK_LIST3:
|
||
.LONG FPWK_UP,FPWK_DN,FPWK_UP,FPWK_UP,FPWK_LFT,FPWK_DNLFT,FPWK_UPLFT,FPWK_RGT
|
||
.LONG FPWK_DNRGT,FPWK_UPRGT
|
||
WALK_LIST2:
|
||
.LONG TWK_UP,TWK_UP,TWK_DN,TWK_UP,TWK_RGT,TWK_UPRGT,TWK_DNRGT,TWK_LFT
|
||
.LONG TWK_UPLFT,TWK_DNLFT
|
||
REV_WALK_LIST2:
|
||
.LONG TWK_UP,TWK_DN,TWK_UP,TWK_UP,TWK_LFT,TWK_DNLFT,TWK_UPLFT,TWK_RGT
|
||
.LONG TWK_DNRGT,TWK_UPRGT
|
||
; 1
|
||
; 8 5
|
||
;7 4
|
||
; 9 6
|
||
; 2
|
||
;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
|
||
;SUNTHROW
|
||
LISTWHAT:
|
||
.LONG WHATLST1,WHATLST1,WHATLST2,WHATLST3,WHATLST4,WHATLST5
|
||
.LONG WHATLST6,WHATLST3
|
||
|
||
WHATLST1: ;NORMAL
|
||
.LONG S1_LIST,S1_LIST,S1_LIST,S1_LIST,S1_LIST
|
||
.LONG S1_LIST,S1_LIST,S1_LIST,S1_LIST,S1_LIST
|
||
WHATLST2: ;SPRAY WEAPON
|
||
.LONG S2_LIST,S2_LIST,S2_LIST,S2_LIST,S2_LIST
|
||
.LONG S2_LIST,S2_LIST,S2_LIST,S2_LIST,S2_LIST
|
||
WHATLST3: ;FIRE BALL
|
||
.LONG S3_LIST,S3_LIST,S3_LIST,S3_LIST,S3_LIST
|
||
.LONG S3_LIST,S3_LIST,S3_LIST,S3_LIST,S3_LIST
|
||
WHATLST4: ;GRENADES
|
||
.LONG S4_LIST,S4_LIST,S4_LIST,S4_LIST,S4_LIST
|
||
.LONG S4_LIST,S4_LIST,S4_LIST,S4_LIST,S4_LIST
|
||
WHATLST5: ;NON STOPPING BULLET
|
||
.LONG S5_LIST,S5_LIST,S5_LIST,S5_LIST,S5_LIST
|
||
.LONG S5_LIST,S5_LIST,S5_LIST,S5_LIST,S5_LIST
|
||
WHATLST6: ;MACHINE GUN
|
||
.LONG S6_LIST,S6_LIST,S6_LIST,S6_LIST,S6_LIST
|
||
.LONG S6_LIST,S6_LIST,S6_LIST,S6_LIST,S6_LIST
|
||
|
||
S1_LIST: ;NORMAL
|
||
.LONG SHT_UP,SHT_UP,SHT_DN,SHT_UP,SHT_RGT,SHT_UPRGT,SHT_DNRGT,SHT_LFT
|
||
.LONG SHT_UPLFT,SHT_DNLFT
|
||
S2_LIST: ;SPRAY
|
||
.LONG SHT2_UP,SHT2_UP,SHT2_DN,SHT2_UP,SHT2_RGT,SHT2_UPRGT,SHT2_DNRGT,SHT2_LFT
|
||
.LONG SHT2_UPLFT,SHT2_DNLFT
|
||
S3_LIST: ;FLAME THROWER
|
||
.LONG SHT3_UP,SHT3_UP,SHT3_DN,SHT3_UP,SHT3_RGT,SHT3_UPRGT,SHT3_DNRGT,SHT3_LFT
|
||
.LONG SHT3_UPLFT,SHT3_DNLFT
|
||
S4_LIST: ;GRENADE
|
||
.LONG SHT4_UP,SHT4_UP,SHT4_DN,SHT4_UP,SHT4_RGT,SHT4_UPRGT,SHT4_DNRGT,SHT4_LFT
|
||
.LONG SHT4_UPLFT,SHT4_DNLFT
|
||
S5_LIST: ;NON STOPPING BULLET
|
||
.LONG SHT5_UP,SHT5_UP,SHT5_DN,SHT5_UP,SHT5_RGT,SHT5_UPRGT,SHT5_DNRGT,SHT5_LFT
|
||
.LONG SHT5_UPLFT,SHT5_DNLFT
|
||
S6_LIST: ;MACHINE GUN
|
||
.LONG SHT6_UP,SHT6_UP,SHT6_DN,SHT6_UP,SHT6_RGT,SHT6_UPRGT,SHT6_DNRGT,SHT6_LFT
|
||
.LONG SHT6_UPLFT,SHT6_DNLFT
|
||
|
||
|
||
SHOOT_LEG_LIST:
|
||
.LONG L_SHT_UP,L_SHT_UP,L_SHT_DN,L_SHT_UP,L_SHT_RGT,L_SHT_UPRGT,L_SHT_DNRGT,L_SHT_LFT
|
||
.LONG L_SHT_UPLFT,L_SHT_DNLFT
|
||
SHOOT_LEG_LIST2:
|
||
.LONG L2_SHT_UP,L2_SHT_UP,L2_SHT_DN,L2_SHT_UP,L2_SHT_RGT,L2_SHT_UPRGT,L2_SHT_DNRGT
|
||
.LONG L2_SHT_LFT,L2_SHT_UPLFT,L2_SHT_DNLFT
|
||
|
||
; 1
|
||
; 8 5
|
||
;7 4
|
||
; 9 6
|
||
; 2
|
||
;
|
||
;WALK DIR IS ACROSS
|
||
;FIRE DIR IS DOWN
|
||
; 9876543210
|
||
REVERSE .WORD 0000000000B
|
||
.WORD 1001000100B
|
||
.WORD 0100100010B
|
||
.WORD 0000000000B
|
||
.WORD 1110000000B
|
||
.WORD 1010000100B
|
||
.WORD 0110000010B
|
||
.WORD 0001110000B
|
||
.WORD 0001010100B
|
||
.WORD 0000110010B
|
||
|
||
|
||
ANI_FLAG:
|
||
;A8=FLAG IMAGE FROM BACKGROUND UPDATER
|
||
;ANIMATE, THEN KILL OFF ONCE IT IS OFF SCREEN
|
||
MOVK 6,A10 ;8
|
||
ANIF1 MOVI FLGLST,A9
|
||
JSRP FRANIMQ
|
||
DSJ A10,ANIF1
|
||
CALLA SCRTST
|
||
JRZ ANI_FLAG
|
||
CALLA DELOBJA8
|
||
MOVE @WAVE,A0
|
||
CMPI 2,A0
|
||
JRNZ FORGO
|
||
FORDBG
|
||
MOVI -30,A0
|
||
MOVE A0,@JUMPXY
|
||
MOVI RECT2,A0
|
||
MOVE A0,@CURRENT,L
|
||
MOVI BRECT2,A0
|
||
MOVE A0,@BCURRENT,L
|
||
CALLA STRT_G
|
||
FORGO DIE
|
||
|
||
|
||
FLGLST .LONG FLAG1 ;IRAQFLG1
|
||
.WORD 5
|
||
.LONG FLAG2 ;IRAQFLG2
|
||
.WORD 5
|
||
.LONG FLAG3 ;IRAQFLG3
|
||
.WORD 5
|
||
.LONG FLAG4 ;IRAQFLG4
|
||
.WORD 5
|
||
.LONG FLAG5 ;IRAQFLG5
|
||
.WORD 5
|
||
.LONG 0
|
||
|
||
**************************************************************************
|
||
;
|
||
; TEMP ROUTINES
|
||
;
|
||
**************************************************************************
|
||
.IF DEBUG
|
||
|
||
StCpuLft:
|
||
move @TIMER,A0,W
|
||
jrz NoBog
|
||
clr A0
|
||
jruc GotTime
|
||
NoBog:
|
||
move @vcount,A0
|
||
subi HSINT,A0
|
||
jrnn SkIncCnt
|
||
addi 256,A0
|
||
SkIncCnt:
|
||
sll 2,A0
|
||
neg A0
|
||
addi 1024,A0
|
||
GotTime:
|
||
move A0,@CPULEFT,W
|
||
|
||
srl 4,A0
|
||
move @CPUAVG,A1,W
|
||
move A1,A2
|
||
srl 4,A2
|
||
sub A2,A1
|
||
add A0,A1
|
||
move A1,@CPUAVG,W
|
||
|
||
rets
|
||
.ENDIF
|
||
|
||
.END
|
||
|
||
|
||
|