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
|
|||
|
|
|||
|
|
|||
|
|