3540 lines
66 KiB
NASM
3540 lines
66 KiB
NASM
|
.FILE 'ROBO.ASM'
|
|||
|
|
|||
|
|
|||
|
;MENU
|
|||
|
; MESS_MAC RD7FONT,SPACING20,200,137,ROBO_WHITE,STRCNRM,0
|
|||
|
; .STRING "JON HEY "
|
|||
|
; .BYTE 0,1
|
|||
|
; MESS_MAC RD7FONT,SPACING20,200,147,ROBO_RED,STRCNRM,0
|
|||
|
; .STRING "KEVIN WELSH "
|
|||
|
; .BYTE 0,1
|
|||
|
; MESS_MAC RD7FONT,SPACING20,200,157,ROBO_RED,STRCNRM,0
|
|||
|
; .STRING "CHARLES OGDEN "
|
|||
|
; .BYTE 0,0
|
|||
|
|
|||
|
|
|||
|
.TITLE 'ROBO-RAMA GAME PROGRAM'
|
|||
|
.WIDTH 132
|
|||
|
.OPTION B,D,L,T
|
|||
|
.MNOLIST
|
|||
|
;
|
|||
|
; INITIATED: APRIL 13,1989
|
|||
|
; MODIFIED: !
|
|||
|
; SOFTWARE: MARK TURMELL
|
|||
|
;
|
|||
|
; COPYRIGHT (C) 1989 WILLIAMS ELECTRONICS GAMES, INC.
|
|||
|
;
|
|||
|
;
|
|||
|
; GET THE SYSTEM STUFF
|
|||
|
|
|||
|
.INCLUDE "MPROC.EQU" ;MPROC EQUATES
|
|||
|
.INCLUDE "DISP.EQU" ;DISPLAY PROC. EQUATES
|
|||
|
.INCLUDE "\VIDEO\SYS\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 "ROBO.EQU"
|
|||
|
.INCLUDE "AUDIT.EQU"
|
|||
|
;
|
|||
|
;SOUNDS EXTERNAL
|
|||
|
;
|
|||
|
.REF MUSICOFF,SNDPRC,UGH,EXP3,CROWD2,YAMOFF,SHKSND,MCSPK9
|
|||
|
;
|
|||
|
;SYMBOLS EXTERNALLY DEFINED
|
|||
|
;
|
|||
|
;JARVIS
|
|||
|
.REF FACCHECK,BONUS_WARP
|
|||
|
.REF ADD_DUMP,GET_AUD,DEF_PAGE,GET_ADJ,GET_WVADDR
|
|||
|
.REF SPAWN_ORB,ONSCRN_ORB,FLATFACE,O_FACE,MAXGAL,GAL_CNT
|
|||
|
.REF ORB_DN,ORB_CNT,MAXORB,FACEON,SPWN_GAL3,SPWN_GAL1
|
|||
|
.REF SPWN_GAL1A,SPWN_GAL2,O_COB,GALTYP,COLCYC,INIT_TAB
|
|||
|
.REF STORE_AUDIT
|
|||
|
|
|||
|
.REF SCRADD2,POWERTST
|
|||
|
.REF SPWN_SNK,SNK_DN,AUD1,MAXTNK,ROBTYP
|
|||
|
.REF SPWN_RBTA,O_RBTA,RBTA_DN,MAXRBTA,RBTA_CNT,MUTPTR
|
|||
|
.REF ADPCS3,OVALBLD,EXPMINE,SWAPSK,WNTOUT,O_ITEMS,PZON
|
|||
|
.REF O_MUT,SCRIPTPLAY,ADJSTWTL,MTR1CNT,O_MINE,BLDOFF
|
|||
|
.REF RNG_LIT,RNG_LIT2,PCTOT,TOID_ON,CIRCUIT,TWOCHNKS,CHNKS2
|
|||
|
.REF KILLP1,KILLP2,CNTDIG1,CNTDIG2,GAMEOVER,LSHIT
|
|||
|
.REF FIRE_DIRECTION,ATSTRT,STRT_WPN,MAXHULK,DELPAL
|
|||
|
.REF BLT_CNT,MAXBLT,DO_BND,WAVEYX,STATUS,MSG_PROC2
|
|||
|
.REF SPAWN_HULKS,HULK_DN,MAXFAT
|
|||
|
.REF ONSCRN_HULKS,ONSCRN_FAT
|
|||
|
.REF BEGINOBJ,GETANIX
|
|||
|
.REF ONSCRN_TNK,SPAWN_TNK,SPAWN_FAT,FAT_CNT
|
|||
|
.REF JOYSW,SCRCLR,INIT_ALL,SHK_ON
|
|||
|
.REF CLSCRACH,RANDOM
|
|||
|
.REF FRANIM,GPALOBJ,B_DIR,BEGINOBJ2
|
|||
|
.REF COLLISIONS
|
|||
|
.REF BOSSON,WDOGRAM
|
|||
|
.REF P1CTRL,P2CTRL,P1DATA,P2DATA,GAMSTATE,WAVE,GETFPAL
|
|||
|
.REF JOY_UPDATE,UNSTACK,PSTAT,FIXMETERS,FIXMETERS2
|
|||
|
.REF KILBGND,AUTOEOFF,AUTOEON,HALT,OBJON,OBJOFF
|
|||
|
.REF HULK_CNT,LIVECNT
|
|||
|
.REF WORLDTLX,WORLDTLY
|
|||
|
.REF KP_LS,KP_RS,KP_TS
|
|||
|
.REF TNK_CNT,TNK_DN,SHORT_PLYR,PCNT,SHORT2
|
|||
|
.REF ONSCRN_WLMN
|
|||
|
;
|
|||
|
;SYMBOLS DEFINED IN THIS FILE
|
|||
|
;
|
|||
|
.DEF MAINLP
|
|||
|
.DEF RINGTIME,MAXFREE,TANKDIFF,GRUNTMOD,COBRAKIL
|
|||
|
.DEF TANKDIFF2,SETDIFF,TNKHITS,FATHITS
|
|||
|
|
|||
|
.DEF DRAW_PLYR_TORSO,RINGS,OFFRNG,ENDON,OVERLAP
|
|||
|
.DEF INIT_PROG,ZEROCNTS
|
|||
|
.DEF KEEPXY
|
|||
|
.DEF RAMXY,WAVE_RAM,INIT_RAM
|
|||
|
.DEF XYSEEK,XYSKOBJ,GETADIR,GETADIR2,XYSEEK2
|
|||
|
.DEF CPULEFT,CPUAVG
|
|||
|
.DEF WARMSET,EHALT
|
|||
|
.DEF KILL_PLYR
|
|||
|
.DEF KEEP_TOPL_GATE,KEEP_TOPR_GATE,KEEP_LFT_GATE,KEEP_RGT_GATE
|
|||
|
.DEF OVERLORD,ECON,ENON
|
|||
|
.DEF PLYRPRCS,PLYROBJS
|
|||
|
|
|||
|
|
|||
|
MAX_ONSC .EQU 50
|
|||
|
|
|||
|
;
|
|||
|
;UNINITIALIZED RAM DEFINITIONS
|
|||
|
;
|
|||
|
.BSS BOGUS,64
|
|||
|
.BSS PAL1,16*16*2 ;ALLOCATE 2 X COLOR AREA IN RAM
|
|||
|
|
|||
|
.BSS PLYROBJS,64 ;2 ENTRIES-PLYR1,PLYR2 TORSO PTR
|
|||
|
|
|||
|
.BSS ECON,8 ;0=NO ENEMY TO ENEMY COLLIDE, 1=YES
|
|||
|
.BSS ENON,8 ;0=NO ENEMY TO NEUTRAL COLLIDE, 1=YES
|
|||
|
.BSS ENDON,8 ;0=OK TO FIRE,1=NO FIRE STICK
|
|||
|
.BSS INXT,8
|
|||
|
.BSS EHALT,16
|
|||
|
.BSS KEEPXY,32
|
|||
|
.BSS KEEP_LFT_GATE,32
|
|||
|
.BSS KEEP_RGT_GATE,32
|
|||
|
.BSS KEEP_TOPL_GATE,32
|
|||
|
.BSS KEEP_TOPR_GATE,32
|
|||
|
.BSS CPULEFT,16
|
|||
|
.BSS CPUAVG,16
|
|||
|
.BSS RAMXY,32*MAX_ONSC
|
|||
|
.BSS WAVE_RAM,6*16*10 ;6=ELEMENTS,16=WORD SIZE
|
|||
|
.BSS PLYRPRCS,64 ;2 ENTRIES-PLYR1,PLYR2 PROCESS PTR
|
|||
|
;10 IS MAX TYPES PER WAVE
|
|||
|
.BSS RINGTIME,16
|
|||
|
.BSS MAXFREE,16
|
|||
|
.BSS GRUNTMOD,16
|
|||
|
.BSS TANKDIFF,16
|
|||
|
.BSS TANKDIFF2,16
|
|||
|
.BSS COBRAKIL,16
|
|||
|
.BSS TNKHITS,16
|
|||
|
.BSS FATHITS,16
|
|||
|
|
|||
|
;
|
|||
|
;EQUATES FOR THIS FILE
|
|||
|
;
|
|||
|
VNORMVEL .EQU 016000H
|
|||
|
HNORMVEL .EQU 016000H
|
|||
|
VSLOVEL .EQU 0FA00H ;VNORMVEL*.707
|
|||
|
HSLOVEL .EQU 0FA00H ;HNORMVEL*.707
|
|||
|
;
|
|||
|
VNORMVEL2 .EQU 01F000H
|
|||
|
HNORMVEL2 .EQU 01F000H
|
|||
|
VSLOVEL2 .EQU 018000H ;VNORMVEL*.707
|
|||
|
HSLOVEL2 .EQU 018000H ;HNORMVEL*.707
|
|||
|
;
|
|||
|
;
|
|||
|
.TEXT
|
|||
|
|
|||
|
INIT_PROG:
|
|||
|
DINT ;DISABLE INTERRUPTS
|
|||
|
;
|
|||
|
; SET FIELD PARAMETERS
|
|||
|
SETF 16,1,0 ;WORD SIGN EXTEND (FIELD 0)
|
|||
|
SETF 32,1,1 ;LONG WORD (FIELD 1)
|
|||
|
|
|||
|
; SET THE STACK POINTER TO THE END OF SCRATCHPAD
|
|||
|
MOVI STCKST,SP,L ;MOVE STACK ADDR IN SP (32 BITS)
|
|||
|
|
|||
|
MOVE @WDOGRAM,A0,L ;MARK SYSTEM AS INITIALIZED
|
|||
|
CMPI WDOGNUM,A0
|
|||
|
JRNZ WARMSET0
|
|||
|
MOVI AUDLOCK,A0
|
|||
|
CALLA AUD1
|
|||
|
;DUMP REPORT OF WATCHDOG
|
|||
|
.IF DEBUG
|
|||
|
.ELSE
|
|||
|
CALLERR 11,0
|
|||
|
.ENDIF
|
|||
|
;JUMP TO RECOVER CODE
|
|||
|
MOVI AUDSTAT,A0
|
|||
|
CALLA GET_AUD
|
|||
|
MOVE A1,A1
|
|||
|
JREQ WARMSET ;ATTRACT MODE GLITCH
|
|||
|
CLR A1
|
|||
|
CALLA STORE_AUDIT ;WARP ONLY ONCE, DUDE!!!
|
|||
|
|
|||
|
JAUC BONUS_WARP
|
|||
|
|
|||
|
WARMSET0:
|
|||
|
JAUC POWERTST
|
|||
|
WARMSET:
|
|||
|
DINT ;DISABLE INTERRUPTS
|
|||
|
;
|
|||
|
; SET FIELD PARAMETERS
|
|||
|
SETF 16,1,0 ;WORD SIGN EXTEND (FIELD 0)
|
|||
|
SETF 32,1,1 ;LONG WORD (FIELD 1)
|
|||
|
|
|||
|
; SET THE STACK POINTER TO THE END OF SCRATCHPAD
|
|||
|
MOVI STCKST,SP,L ;MOVE STACK ADDR IN SP (32 BITS)
|
|||
|
; RESET TODAYS HIGH SCORE TABLE
|
|||
|
CALLA INIT_TAB
|
|||
|
|
|||
|
|
|||
|
; CLEAR SCRATCHPAD, INITIALIZE PROCESSES
|
|||
|
CALLA CLSCRACH ;CLR SCRATCH RAM
|
|||
|
CALLA INIT_ALL ;INITIALIZE Z-UNIT
|
|||
|
|
|||
|
MAIN0
|
|||
|
CREATE 0,FACCHECK ;START ATTRACT IF THINGS O.K.
|
|||
|
; CALLA ATSTRT ;START ATTRACT MODE
|
|||
|
CREATE PLIST_ID,UNSTACK ;CREATE SWITCH UNSTACKER
|
|||
|
;
|
|||
|
; MAIN LINE LOGIC LOOP
|
|||
|
;
|
|||
|
MAINLP:
|
|||
|
CALLA PRCDSP ;DISPATCH PROCESSES
|
|||
|
|
|||
|
MOVE A13,A13
|
|||
|
JRZ MAINPOK
|
|||
|
.IF DEBUG
|
|||
|
LOCKUP
|
|||
|
EINT
|
|||
|
.ELSE
|
|||
|
CALLERR 10,0
|
|||
|
.ENDIF
|
|||
|
|
|||
|
|
|||
|
;
|
|||
|
***********************************************
|
|||
|
MAINPOK:
|
|||
|
CALLA SNDPRC ;DISPATCH AND TIME THE SOUND CALLS
|
|||
|
CALLA RANDOM ;NEW SEED PLEASE
|
|||
|
; CALLA COINIRQ ;COIN SWITCH INTERRUPT
|
|||
|
|
|||
|
|
|||
|
.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
|
|||
|
**************************************************************
|
|||
|
****************************************************************
|
|||
|
MOVB @PCNT,A0
|
|||
|
DEC A0
|
|||
|
MOVB A0,@PCNT
|
|||
|
|
|||
|
MOVE @GAMSTATE,A0
|
|||
|
CMPI INDIAG,A0
|
|||
|
JRNZ NODIAG
|
|||
|
|
|||
|
MOVI AMDEPID,A0
|
|||
|
CLR A1
|
|||
|
NOT A1
|
|||
|
CALLA KILALL
|
|||
|
CALLA KILBGND
|
|||
|
NODIAG:
|
|||
|
JRUC MAINLP
|
|||
|
;
|
|||
|
SETDIFF
|
|||
|
;BASED ON CMOS DIFFICULTY SETTING, (0-9) STUFF SEVERAL DIFFERENT
|
|||
|
;RAM LOCATIONS THAT IMPACT GAME DIFFICULTY. THESE RAM LOCATIONS
|
|||
|
;ARE REFERENCED BY ENEMIES IN EACH FILE.
|
|||
|
;SETDIFF IS CALLED AT THE START OF A GAME AND WHENEVER WE WISH TO
|
|||
|
;MODIFY OVERALL GAME DIFFICULTY.
|
|||
|
|
|||
|
;ITEMS AFFECTED:
|
|||
|
;FREEMEN POSSIBLE PER CIRCUIT @MAXFREE
|
|||
|
;MODIFY # GRUNTS ON SCREEN (+/-) @GRUNTMOD
|
|||
|
;TANK FIRE RATE @TANKDIFF
|
|||
|
;TIME RINGS ARE AROUND PLAYER (+/-) @RINGTIME
|
|||
|
MOVI ADJDIFF,A0
|
|||
|
CALLA GET_ADJ
|
|||
|
;A0=0-9 DIFFICULTY LEVEL!
|
|||
|
MOVE A0,A8
|
|||
|
; SLL 4,A0
|
|||
|
; ADDI LASERTBL,A0
|
|||
|
; MOVE *A0,A0,W
|
|||
|
; MOVE A0,@LASERSPD
|
|||
|
;
|
|||
|
; MOVE A8,A0
|
|||
|
SLL 4,A0
|
|||
|
ADDI FREETBL,A0
|
|||
|
MOVE *A0,A0,W
|
|||
|
MOVE A0,@MAXFREE
|
|||
|
;
|
|||
|
MOVE A8,A0
|
|||
|
SLL 4,A0
|
|||
|
ADDI GRUNTTBL,A0
|
|||
|
MOVE *A0,A0,W
|
|||
|
MOVE A0,@GRUNTMOD
|
|||
|
;
|
|||
|
MOVE A8,A0
|
|||
|
SLL 4,A0
|
|||
|
ADDI TANKTBL,A0
|
|||
|
MOVE *A0,A0,W
|
|||
|
MOVE A0,@TANKDIFF
|
|||
|
;
|
|||
|
MOVE A8,A0
|
|||
|
SLL 4,A0
|
|||
|
ADDI TANKTBL2,A0
|
|||
|
MOVE *A0,A0,W
|
|||
|
MOVE A0,@TANKDIFF2
|
|||
|
;
|
|||
|
MOVE A8,A0
|
|||
|
SLL 4,A0
|
|||
|
ADDI RINGTBL,A0
|
|||
|
MOVE *A0,A0,W
|
|||
|
MOVE A0,@RINGTIME
|
|||
|
;
|
|||
|
MOVE A8,A0
|
|||
|
SLL 4,A0
|
|||
|
ADDI WNDTBL,A0
|
|||
|
MOVE *A0,A0,W
|
|||
|
MOVE A0,@COBRAKIL
|
|||
|
;
|
|||
|
MOVE A8,A0
|
|||
|
SLL 4,A0
|
|||
|
ADDI HITFAT,A0
|
|||
|
MOVE *A0,A0,W
|
|||
|
MOVE A0,@FATHITS
|
|||
|
;
|
|||
|
MOVE A8,A0
|
|||
|
SLL 4,A0
|
|||
|
ADDI HITTNKS,A0
|
|||
|
MOVE *A0,A0,W
|
|||
|
MOVE A0,@TNKHITS
|
|||
|
;
|
|||
|
;ADD MORE DIFFICULTY SETTINGS HERE
|
|||
|
RETS
|
|||
|
|
|||
|
HITTNKS .WORD 3,6,12,17,20,25,30,35,45,50,50
|
|||
|
HITFAT .WORD 1,3,6,8,9,10,12,15,18,20,20
|
|||
|
|
|||
|
;LASERTBL
|
|||
|
; .WORD 3,3,3,3,3,3,3,3,3,3,3
|
|||
|
FREETBL
|
|||
|
.WORD 4,4,3,2,2,2,1,1,0,0,0
|
|||
|
GRUNTTBL
|
|||
|
.WORD -4,-3,-2,-1,0,0,1,3,4,6,6
|
|||
|
; .WORD -7,-7,-5,-5,-4,-4,-3,-1,2,4,4 ;GERMAN VERSION
|
|||
|
TANKTBL
|
|||
|
.WORD -3,-2,-1,-1,0,0,1,2,3,4,4
|
|||
|
TANKTBL2
|
|||
|
.WORD 12,11,10,9,8,8,7,6,5,4,4
|
|||
|
RINGTBL
|
|||
|
.WORD 700,600,500,400,300,300,300,200,150,110,110
|
|||
|
WNDTBL
|
|||
|
.WORD 1000-100,1500-100,2500-100,3000-100,3500-100,3900-100
|
|||
|
.WORD 4000-100,4500-100,5000-100,5000-100,5000-100
|
|||
|
|
|||
|
INIT_RAM:
|
|||
|
CLR A0
|
|||
|
MOVE A0,@HULK_DN
|
|||
|
MOVE A0,@ORB_DN
|
|||
|
MOVE A0,@TNK_DN
|
|||
|
MOVE A0,@RBTA_DN
|
|||
|
MOVE A0,@SNK_DN
|
|||
|
MOVB A0,@KP_LS
|
|||
|
MOVB A0,@KP_RS
|
|||
|
MOVB A0,@KP_TS
|
|||
|
MOVB A0,@SHK_ON
|
|||
|
MOVB A0,@FACEON
|
|||
|
MOVB A0,@BOSSON
|
|||
|
MOVB A0,@TOID_ON
|
|||
|
MOVB A0,@WNTOUT
|
|||
|
MOVB A0,@PCTOT ;CAREFUL!!
|
|||
|
MOVB A0,@PZON
|
|||
|
MOVB A0,@ENDON
|
|||
|
RETS
|
|||
|
;
|
|||
|
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)
|
|||
|
;SET BOUNDARIES TO ORBITING TYPE BNDRY
|
|||
|
;SET BOUNDARIES FOR CORRECT PLAYER!
|
|||
|
DEC A9
|
|||
|
MOVE A10,*A13(TIME)
|
|||
|
SLL 5,A9
|
|||
|
MOVE A9,A10
|
|||
|
JRZ X1
|
|||
|
CREATE RCYC2PID,RNG_LIT2
|
|||
|
JRUC X2
|
|||
|
X1
|
|||
|
CREATE RCYC1PID,RNG_LIT ;CYCLE NUP1 PAL
|
|||
|
X2 ADDI PLYRPRCS,A9
|
|||
|
MOVE *A9,A9,L
|
|||
|
MOVK 1,A0 ;HELPER TYPE BOUNDARY FOR RING IMAGE
|
|||
|
MOVB A0,*A9(BNDTYP)
|
|||
|
MOVE A9,A7 ;DO_BND NEEDS PROC PTR IN A7
|
|||
|
CALLA DO_BND
|
|||
|
|
|||
|
MOVI PLYROBJS,A9
|
|||
|
ADD A10,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 ;HIGHER PRIORITY THAN PLAYER
|
|||
|
MOVI DMAWNZ,A4
|
|||
|
MOVI CLSPLYR|TYPPLYR|SUBRNG1,A5
|
|||
|
MOVI SHLD1,A2
|
|||
|
CALLA BEGINOBJ2
|
|||
|
MOVE A8,A9 ;CIRCLE IMAGE
|
|||
|
MOVE A10,A10
|
|||
|
JRZ RTP
|
|||
|
;CHANGE TO NUP2 PAL
|
|||
|
MOVI nup2,A0
|
|||
|
CALLA GETFPAL ;GET A COLOR MAP ASSIGNMENT
|
|||
|
MOVE A0,*A8(OPAL),W ;STORE THE NEW PALETTE
|
|||
|
RTP
|
|||
|
MOVE @HALT,A0
|
|||
|
JRNE RG
|
|||
|
MOVE *A13(TIME),A0
|
|||
|
DEC A0
|
|||
|
MOVE A0,*A13(TIME)
|
|||
|
JRZ KRNGS
|
|||
|
CMPI 100,A0
|
|||
|
JRNE NYTB
|
|||
|
MOVE A10,A10
|
|||
|
JRNE F1
|
|||
|
CREATE B1PID,BLINK ;BLINK OUT RING PROCESS
|
|||
|
MOVI RCYC1PID,A0
|
|||
|
CLR A1
|
|||
|
NOT A1
|
|||
|
CALLA KILALL
|
|||
|
;STUFF RED INTO NUP1 PALL
|
|||
|
JRUC NYTB
|
|||
|
F1
|
|||
|
CREATE B2PID,BLINK
|
|||
|
MOVI RCYC2PID,A0
|
|||
|
CLR A1
|
|||
|
NOT A1
|
|||
|
CALLA KILALL
|
|||
|
;STUFF RED INTO NUP2 PALL
|
|||
|
NYTB MOVE *A11(OPLINK),A0,L
|
|||
|
MOVI 40,A1 ;10
|
|||
|
MOVE A1,*A0(DELYDET) ;KEEP STUFFING A VALUE IN HERE
|
|||
|
MOVE A9,A0
|
|||
|
MOVE A11,A8
|
|||
|
CALLA GETANIXY
|
|||
|
ADDI 0300000H,A2
|
|||
|
MOVE *A0(OFLAGS),A4,W
|
|||
|
CALLA GANISAG
|
|||
|
MOVE A0,A9
|
|||
|
|
|||
|
RG SLEEP 1
|
|||
|
JRUC RTP
|
|||
|
OFFRNG
|
|||
|
;MOVE PLAYER WITH RINGS AWAY FROM MUTOID BOSS ENEMY
|
|||
|
;A0=PLAYER RING IMAGE
|
|||
|
MMTM SP,A0,A1,A2,A3,A4,A5,A6
|
|||
|
MOVE *A0(OPLINK),A0,L
|
|||
|
|
|||
|
MOVE @MUTPTR,A3,L
|
|||
|
MOVE *A3(PDATA),A3,L ;TNKL
|
|||
|
MOVE *A3(OXPOS),A2
|
|||
|
MOVE *A3(OYPOS),A3
|
|||
|
ADDI 20,A2
|
|||
|
ADDI 20,A3
|
|||
|
MOVB *A0(MYPLYR),A1
|
|||
|
DEC A1
|
|||
|
SLL 5,A1
|
|||
|
ADDI PLYRPRCS,A1
|
|||
|
MOVE *A1,A1,L
|
|||
|
MOVE *A1(TSO_PTR),A5,L
|
|||
|
MOVE *A1(LEG2_PTR),A1,L
|
|||
|
|
|||
|
MOVE *A1(OXPOS),A4
|
|||
|
MOVE *A5(OXPOS),A6
|
|||
|
CMP A4,A2
|
|||
|
JRGT GONEG
|
|||
|
;ADD TO PLYR X
|
|||
|
ADDI 3,A4
|
|||
|
ADDI 3,A6
|
|||
|
JRUC GOGO
|
|||
|
GONEG
|
|||
|
SUBI 3,A4
|
|||
|
SUBI 3,A6
|
|||
|
GOGO MOVE A4,*A1(OXPOS)
|
|||
|
MOVE A6,*A5(OXPOS)
|
|||
|
MOVE *A1(OYPOS),A4
|
|||
|
MOVE *A5(OYPOS),A6
|
|||
|
CMPI 182H,A4
|
|||
|
JRLT GOGO2
|
|||
|
CMP A4,A3
|
|||
|
JRGT GONEG2
|
|||
|
;ADD TO PLYR Y
|
|||
|
ADDI 3,A4
|
|||
|
ADDI 3,A6
|
|||
|
JRUC GOGO1
|
|||
|
GONEG2 SUBI 3,A4
|
|||
|
SUBI 3,A6
|
|||
|
GOGO1 MOVE A4,*A1(OYPOS)
|
|||
|
MOVE A6,*A5(OYPOS)
|
|||
|
|
|||
|
;CALLED FROM COLLISION ROUTINE
|
|||
|
;RESET HERE
|
|||
|
; MOVI KRNGS,A7
|
|||
|
; CALLA PUTA7
|
|||
|
GOGO2
|
|||
|
MMFM SP,A0,A1,A2,A3,A4,A5,A6
|
|||
|
RETS
|
|||
|
|
|||
|
;KILL RINGS OFF
|
|||
|
KRNGS MOVE A9,A0
|
|||
|
; CALLA DELPAL ;NEEDED? NOT IF IN PLYR PAL!
|
|||
|
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
|
|||
|
;CHANGE BOUNDARY FOR CORRECT PLAYER!
|
|||
|
MOVI PLYRPRCS,A7
|
|||
|
ADD A10,A7
|
|||
|
MOVE *A7,A7,L
|
|||
|
MOVE *A7(LSRPTR),A0,L
|
|||
|
JRNZ D ;BR=LASER IS AROUND THIS PLAYER
|
|||
|
MOVB *A7(BNDTYP),A0
|
|||
|
CMPI 1,A0
|
|||
|
JRNE D
|
|||
|
CLR A0
|
|||
|
MOVB A0,*A7(BNDTYP)
|
|||
|
MOVB A0,*A7(PRVBND)
|
|||
|
CALLA DO_BND
|
|||
|
D
|
|||
|
DIE
|
|||
|
|
|||
|
BLINK
|
|||
|
;BLINK OUT RING
|
|||
|
;A9=RING IMAGE TO BLINK
|
|||
|
MOVE *A9(OFLAGS),A4,W
|
|||
|
MOVI FRNTBK,A1
|
|||
|
MOVE A9,A8
|
|||
|
CALLA ANI
|
|||
|
BKZ
|
|||
|
MOVE A9,A0
|
|||
|
CALLA OBJOFF
|
|||
|
SLEEP 5
|
|||
|
MOVE A9,A0
|
|||
|
CALLA OBJON
|
|||
|
SLEEP 5
|
|||
|
JRUC BKZ
|
|||
|
|
|||
|
SETMAX:
|
|||
|
MOVK 5,A0
|
|||
|
MOVB A0,@MAXFAT
|
|||
|
CLR A0
|
|||
|
MOVE A0,@GALTYP
|
|||
|
MOVE @CIRCUIT,A0
|
|||
|
JRZ SET0
|
|||
|
CMPI 1,A0
|
|||
|
JRZ DOC1
|
|||
|
;3RD CIRCUIT
|
|||
|
MOVE @WAVE,A0
|
|||
|
SLL 3,A0
|
|||
|
ADDI RMAX2,A0
|
|||
|
MOVB *A0,A0
|
|||
|
|
|||
|
MOVK 5,A1
|
|||
|
CALLR ONEPADJ
|
|||
|
CALLR ADJMAX
|
|||
|
MOVB A0,@MAXRBTA
|
|||
|
|
|||
|
MOVE @WAVE,A0
|
|||
|
SLL 3,A0
|
|||
|
ADDI OMAX,A0
|
|||
|
MOVB *A0,A0
|
|||
|
MOVK 2,A1
|
|||
|
CALLR ONEPADJ
|
|||
|
MOVB A0,@MAXORB
|
|||
|
|
|||
|
MOVE @WAVE,A0
|
|||
|
SLL 3,A0
|
|||
|
ADDI RTYPT,A0
|
|||
|
MOVB *A0,A0
|
|||
|
MOVE A0,@ROBTYP
|
|||
|
|
|||
|
MOVE @WAVE,A0
|
|||
|
SLL 3,A0
|
|||
|
ADDI GTYPT,A0
|
|||
|
MOVB *A0,A0
|
|||
|
MOVE A0,@GALTYP
|
|||
|
JRZ SETG
|
|||
|
|
|||
|
MOVI SPDRP,A8 ;PAL NAME
|
|||
|
MOVI PAL1,A9 ;RAM AREA
|
|||
|
MOVI [32,45],A10 ;BEGIN/END COLOR #
|
|||
|
MOVK 3,A11 ;RATE IN TICKS
|
|||
|
CREATE CYCPID,COLCYC ;COLOR CYCLER ON
|
|||
|
|
|||
|
SETG MOVE @WAVE,A0
|
|||
|
SLL 3,A0
|
|||
|
ADDI GMAX2,A0
|
|||
|
MOVB *A0,A0
|
|||
|
MOVK 2,A1
|
|||
|
CALLR ONEPADJ
|
|||
|
MOVB A0,@MAXGAL
|
|||
|
|
|||
|
MOVE @WAVE,A0
|
|||
|
SLL 3,A0
|
|||
|
ADDI HMAX2,A0
|
|||
|
MOVB *A0,A0
|
|||
|
MOVK 5,A1
|
|||
|
CALLR ONEPADJ
|
|||
|
CALLR ADJMAX
|
|||
|
MOVB A0,@MAXHULK
|
|||
|
|
|||
|
MOVK 3,A0
|
|||
|
MOVE @WAVE,A1
|
|||
|
CMPI 1,A1
|
|||
|
JRZ RTF
|
|||
|
INC A0
|
|||
|
CMPI 11,A1
|
|||
|
JRZ RTF
|
|||
|
MOVK 1,A0
|
|||
|
RTF
|
|||
|
MOVB A0,@MAXTNK
|
|||
|
RETS
|
|||
|
ONEPADJ
|
|||
|
MOVE @STATUS,A2
|
|||
|
CMPI 3,A2
|
|||
|
JRZ TWEEK1
|
|||
|
SUB A1,A0
|
|||
|
TWEEK1
|
|||
|
RETS
|
|||
|
|
|||
|
DOC1
|
|||
|
;SET CIRCUIT 2
|
|||
|
MOVE @WAVE,A0
|
|||
|
SLL 3,A0
|
|||
|
ADDI RTYPT,A0
|
|||
|
MOVB *A0,A0
|
|||
|
MOVE A0,@ROBTYP
|
|||
|
|
|||
|
MOVE @WAVE,A0
|
|||
|
SLL 3,A0
|
|||
|
ADDI RMAX,A0
|
|||
|
MOVB *A0,A0
|
|||
|
MOVK 2,A1
|
|||
|
CALLR ONEPADJ
|
|||
|
CALLR ADJMAX
|
|||
|
MOVB A0,@MAXRBTA
|
|||
|
|
|||
|
MOVE @WAVE,A0
|
|||
|
SLL 3,A0
|
|||
|
ADDI OMAX,A0
|
|||
|
MOVB *A0,A0
|
|||
|
MOVB A0,@MAXORB
|
|||
|
|
|||
|
MOVE @WAVE,A0
|
|||
|
SLL 3,A0
|
|||
|
ADDI GMAX,A0
|
|||
|
MOVB *A0,A0
|
|||
|
MOVK 2,A1
|
|||
|
CALLR ONEPADJ
|
|||
|
MOVB A0,@MAXGAL
|
|||
|
|
|||
|
MOVK 5,A0
|
|||
|
MOVB A0,@MAXFAT
|
|||
|
MOVK 1,A0
|
|||
|
MOVB A0,@MAXTNK
|
|||
|
|
|||
|
RETS
|
|||
|
|
|||
|
ADJMAX
|
|||
|
MOVE @GRUNTMOD,A2
|
|||
|
ADD A2,A0
|
|||
|
RETS
|
|||
|
SET0 ;CIRCUIT 1
|
|||
|
|
|||
|
MOVE @WAVE,A0
|
|||
|
SLL 3,A0
|
|||
|
ADDI HMAX,A0
|
|||
|
MOVB *A0,A0
|
|||
|
CALLR ADJMAX
|
|||
|
MOVB A0,@MAXHULK
|
|||
|
|
|||
|
MOVE @WAVE,A0
|
|||
|
SLL 3,A0
|
|||
|
ADDI TMAX,A0
|
|||
|
MOVB *A0,A0
|
|||
|
MOVB A0,@MAXTNK
|
|||
|
|
|||
|
MOVE @WAVE,A0
|
|||
|
SLL 3,A0
|
|||
|
ADDI FMAX,A0
|
|||
|
MOVB *A0,A0
|
|||
|
MOVB A0,@MAXFAT
|
|||
|
|
|||
|
RETS
|
|||
|
|
|||
|
GTYPT .BYTE 0,1,1,0,1,0,1,0,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0
|
|||
|
RTYPT .BYTE 0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,1,0,1,0,0,0,0
|
|||
|
|
|||
|
HMAX .BYTE 2,12,11,25,32,20,20,25,29,24,32,32 ;CIRCUIT 1
|
|||
|
TMAX .BYTE 1,1,1,1,1,1,1,1,1,1,1,1 ;CIRCUIT 1
|
|||
|
FMAX .BYTE 2,3,3,2,7,10,6,6,11,8,5 ;CIRCUIT 1
|
|||
|
;JARVIS
|
|||
|
OMAX .BYTE 2,20,20,25,25,25,13,25,25,25,25
|
|||
|
.BYTE 25,25,25,25,25,25,25,25,25 ;CIRCUIT 2 (ORBS)
|
|||
|
.BYTE 25,25,25,25
|
|||
|
RMAX .BYTE 2,10-2,22-2,25-2,20-2,20-2,20-2,20-2,19-4,15-2,20-2
|
|||
|
.BYTE 22-7,25-2,20-2,20-2,20-2,23-2,18-2,20-2,20-2 ;CIRCUIT 2 (ROBOTS)
|
|||
|
.BYTE 25,25,25,25
|
|||
|
RMAX2 .BYTE 2,10-2,22-2,25-2,20-2,32,20-2,20-2,19-4,15-2,20-2
|
|||
|
.BYTE 22-7,25-2,20-2,20-2,23,24,18-2,20-2,26 ;CIRCUIT 2 (ROBOTS)
|
|||
|
.BYTE 25,25,25,25
|
|||
|
GMAX .BYTE 2,20,20,20,20,12,7,25,13,25,25
|
|||
|
.BYTE 22-6,25,4,5,25,12,25,22,25 ;CIRCUIT 2 (GALS)
|
|||
|
GMAX2 .BYTE 2,8,10,10,10,12,7,15,13,15,15
|
|||
|
.BYTE 22-6,15,4,5,8,12,15,12,15 ;CIRCUIT 3 (GALS)
|
|||
|
.BYTE 22-6,15 ;CIRCUIT 3 (GALS)
|
|||
|
SMAX .BYTE 2,20,20,20,20,12,7,25,13,25,25
|
|||
|
.BYTE 22-4,25,4,5,25,12,25,22,25 ;CIRCUIT 3 (SNKS)
|
|||
|
HMAX2 .BYTE 2,15,15,29,32,20,26,25,23,24,32 ;CIRCUIT 3 GRUNTS
|
|||
|
.BYTE 28,25,21,25,25,22,25,29,25 ;CIRCUIT 3
|
|||
|
.BYTE 30,25 ;CIRCUIT 3
|
|||
|
.EVEN
|
|||
|
|
|||
|
TYP_TBL: ;FOR ONSCREEN
|
|||
|
.LONG 0,ONSCRN_ORB,ONSCRN_TNK,ONSCRN_FAT,ONSCRN_WLMN
|
|||
|
.LONG ONSCRN_HULKS,O_MINE,O_MUT,O_FACE,O_RBTA,0,0,0,0,O_COB
|
|||
|
.LONG 0
|
|||
|
TYP_TBL2: ;FOR SPAWNING
|
|||
|
.LONG 0,SPAWN_ORB,SPAWN_TNK,SPAWN_FAT,NO
|
|||
|
.LONG SPAWN_HULKS,NO,NO,NO,SPWN_RBTA,SPWN_GAL3,SPWN_GAL1,SPWN_GAL1A
|
|||
|
.LONG SPWN_GAL2,NO,SPWN_SNK
|
|||
|
|
|||
|
NO RETS
|
|||
|
CQWAVE .LONG WAVE_INFO,W2_INFO,W3_INFO
|
|||
|
|
|||
|
WAVE_INFO:
|
|||
|
;RECORDS LOOK LIKE THIS
|
|||
|
;TYPES:DIFFERENT ID'S
|
|||
|
;#:TOTAL NUMBER PER WAVE
|
|||
|
;DIFFICULTY:0,1,2,3 0=EASIEST
|
|||
|
;RATE:# OF CYCLES/3 (SLP CNTR) BEFORE SPAWN IS CALLED
|
|||
|
;ONSCRN:# OF TYPE ON SCREEN AT START OF WAVE
|
|||
|
;CNTR USED IN WAVE RAM UPDATING
|
|||
|
|
|||
|
;RECORD LAYOUT
|
|||
|
;TYPE # LEVEL RATE ONSCRN CNTR
|
|||
|
;WAVE 1
|
|||
|
.WORD HULK,100,0,6,4,30 ;110
|
|||
|
.WORD TANK,5,0,90,0,1320
|
|||
|
.WORD 0
|
|||
|
;WAVE 2
|
|||
|
.WORD HULK,195,1,1,0,1
|
|||
|
.WORD FAT,6,0,160,0,50
|
|||
|
.WORD MINE,3,0,0,3,1
|
|||
|
.WORD TANK,5,0,140,0,1420
|
|||
|
.WORD 0
|
|||
|
;WAVE 3
|
|||
|
.WORD HULK,335,2,8,16,1
|
|||
|
.WORD FAT,15,0,90,2,30
|
|||
|
.WORD MINE,5,0,0,5,1
|
|||
|
.WORD WLMN,1,0,0,1,1
|
|||
|
.WORD TANK,5,0,90,0,1720
|
|||
|
.WORD 0
|
|||
|
;WAVE 4
|
|||
|
.WORD HULK,25,3,1,0,410
|
|||
|
.WORD FAT,30,0,5,7,40
|
|||
|
.WORD WLMN,2,0,0,2,1
|
|||
|
.WORD MINE,5,0,0,5,1
|
|||
|
.WORD TANK,5,0,90,0,1720
|
|||
|
.WORD 0
|
|||
|
;WAVE 5
|
|||
|
;CASH ROOM
|
|||
|
.WORD HULK,455,6,4,0,120
|
|||
|
.WORD FAT,25,0,80,0,400
|
|||
|
.WORD MINE,5,0,0,5,1
|
|||
|
.WORD TANK,2,0,140,0,1800
|
|||
|
.WORD 0
|
|||
|
;WAVE 6
|
|||
|
.WORD HULK,35,3,1,16,500
|
|||
|
.WORD GALS3,1,0,190,0,1 ;SWARMER DUDES
|
|||
|
.WORD FAT,15,0,60,3,70
|
|||
|
.WORD MINE,2,0,0,2,1 ;5
|
|||
|
.WORD TANK,5,0,240,0,1220 ;1820
|
|||
|
.WORD 0
|
|||
|
;WAVE 7
|
|||
|
.WORD HULK,395,3,1,16,1
|
|||
|
.WORD GALS3,1,0,250,0,1300 ;SWARMER DUDES
|
|||
|
.WORD MINE,3,0,0,3,1
|
|||
|
.WORD FAT,13,0,115,2,1
|
|||
|
.WORD TANK,5,0,140,0,1620
|
|||
|
.WORD 0
|
|||
|
;WAVE 8 ;WALL MEN
|
|||
|
.WORD HULK,295,4,1,0,160 ;COULD ENTER FROM MULTIPLE DOORS!
|
|||
|
;DO NOT HAVE ANY ON SCREEN!
|
|||
|
.WORD GALS3,1,0,500,0,1 ;SWARMER DUDES
|
|||
|
.WORD FAT,10,0,10,3,1
|
|||
|
.WORD WLMN,2,0,0,2,1
|
|||
|
.WORD MINE,5,0,0,5,1
|
|||
|
.WORD TANK,13,0,40,0,700 ;8
|
|||
|
.WORD 0
|
|||
|
;WAVE 9 ;WALL MEN
|
|||
|
.WORD HULK,325,4,1,0,1 ;COULD ENTER FROM MULTIPLE DOORS!
|
|||
|
;DO NOT HAVE ANY ON SCREEN!
|
|||
|
.WORD WLMN,2,0,0,2,1
|
|||
|
.WORD TANK,17,0,160,0,1 ;200
|
|||
|
.WORD FAT,8,0,1,3,300
|
|||
|
.WORD MINE,4,0,0,4,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 10
|
|||
|
;MUTOID MAN
|
|||
|
.WORD MUTD,0,0,07FFFH,1,1
|
|||
|
.WORD MINE,2,0,0,2,1
|
|||
|
.WORD GALS3,1,0,45,0,20 ;SWARMER DUDES
|
|||
|
.WORD FAT,35,0,140,0,1000 ;1000 / 200
|
|||
|
.WORD 0
|
|||
|
|
|||
|
W2_INFO:
|
|||
|
;TYPE # LEVEL RATE ONSCRN CNTR
|
|||
|
;WAVE 1
|
|||
|
.WORD ORB,98,0,10,1,1 ;STUFF IN CORNER!
|
|||
|
; .WORD RBTA,350,3,1,0,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 2
|
|||
|
.WORD RBTA,380,3,1,0,1
|
|||
|
.WORD FAT,1,0,90,1,500
|
|||
|
.WORD 0
|
|||
|
;WAVE 3
|
|||
|
.WORD RBTA,270,5,5,3,850
|
|||
|
.WORD GALS3,2,0,80,0,1 ;SWARMER DUDES
|
|||
|
.WORD MINE,3,0,0,3,1
|
|||
|
.WORD GALS1A,15,0,10,0,150 ;TRAIN
|
|||
|
.WORD 0
|
|||
|
;WAVE 4
|
|||
|
.WORD GALS3,1,0,70,0,1 ;SWARMER DUDES
|
|||
|
.WORD RBTA,240,4,1,0,800
|
|||
|
.WORD MINE,4,0,0,4,1
|
|||
|
.WORD GALS1,60,0,15,0,1 ;GALAGA TRAIN HEAD ENEMY
|
|||
|
.WORD 0
|
|||
|
;WAVE 5
|
|||
|
.WORD RBTA,330,7,1,0,720
|
|||
|
.WORD GALS1,40,0,8,0,181 ;GALAGA TRAIN HEAD ENEMY
|
|||
|
.WORD FAT,10,0,190,1,500
|
|||
|
.WORD MINE,4,0,0,4,1
|
|||
|
.WORD GALS3,4,0,75,0,1 ;SWARMER DUDES
|
|||
|
.WORD TANK,6,0,60,1,1200
|
|||
|
.WORD 0
|
|||
|
;WAVE 6
|
|||
|
.WORD ORB,90,0,8,1,400 ;
|
|||
|
.WORD GALS2,35,0,15,0,1 ;PURPLE GALAGA
|
|||
|
.WORD MINE,4,0,0,4,1
|
|||
|
.WORD TANK,13,0,50,1,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 7
|
|||
|
;FLAT FACE ;MONITOR OUT
|
|||
|
.WORD FACE,0,0,07FFFH,1,1
|
|||
|
.WORD MINE,5,0,0,5,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 8
|
|||
|
.WORD RBTA,180,3,1,0,800
|
|||
|
.WORD GALS1A,16,0,10,0,10 ;GALAGA TRAIN
|
|||
|
.WORD MINE,3,0,0,3,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 9 ;MONITOR OUT
|
|||
|
;TYPE # LEVEL RATE ONSCRN CNTR
|
|||
|
.WORD RBTA,290,7,1,0,130
|
|||
|
.WORD GALS3,4,0,80,0,1 ;SWARMER DUDES
|
|||
|
; .WORD TANK,4,0,140,1,1
|
|||
|
.WORD MINE,5,0,0,5,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 10
|
|||
|
.WORD RBTA,100,4,1,5,1 ;BOGUS WAVE NEVER SEEN!
|
|||
|
.WORD 0
|
|||
|
;WAVE 11
|
|||
|
.WORD RBTA,360,5,1,0,890 ;JUNK ON FLOOR
|
|||
|
.WORD GALS1A,16,0,10,0,1 ;TRAIN
|
|||
|
.WORD 0
|
|||
|
;WAVE 12
|
|||
|
;MONITOR OUT
|
|||
|
; .WORD ORB,88,0,8,1,120 ;CASH ROOM
|
|||
|
.WORD RBTA,550,4,1,0,150
|
|||
|
.WORD MINE,5,0,0,5,1
|
|||
|
.WORD FAT,17,0,70,0,500
|
|||
|
.WORD 0
|
|||
|
;WAVE 13
|
|||
|
.WORD GALS2,24,0,4,0,10 ;PURPLE GALAGA
|
|||
|
.WORD RBTA,350,4,5,0,350
|
|||
|
.WORD MINE,3,0,0,3,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 14 ;MONITOR OUT
|
|||
|
.WORD RBTA,380,5,4,0,150 ;CASH ROOM
|
|||
|
.WORD GALS1A,3,0,180,0,500 ;TRAIN GALAGA
|
|||
|
.WORD FAT,9,0,10,0,1000
|
|||
|
.WORD MINE,5,0,0,5,1
|
|||
|
.WORD TANK,3,0,190,0,900
|
|||
|
.WORD 0
|
|||
|
;WAVE 15
|
|||
|
.WORD ORB,90,0,8,1,1
|
|||
|
.WORD MINE,5,0,0,5,1
|
|||
|
.WORD TANK,8,0,190,1,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 16
|
|||
|
.WORD RBTA,350,7,1,0,720
|
|||
|
.WORD GALS1,40,0,7,0,181 ;GALAGA TRAIN HEAD ENEMY
|
|||
|
.WORD FAT,10,0,190,1,500
|
|||
|
.WORD MINE,4,0,0,4,1
|
|||
|
.WORD GALS3,4,0,75,0,1 ;SWARMER DUDES
|
|||
|
.WORD TANK,8,0,60,1,1200
|
|||
|
.WORD 0
|
|||
|
;WAVE 17
|
|||
|
.WORD RBTA,550,7,1,0,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 18
|
|||
|
.WORD RBTA,690,7,1,0,1200
|
|||
|
.WORD MINE,2,0,0,2,1
|
|||
|
.WORD GALS3,9,0,80,0,1 ;SWARMER DUDES
|
|||
|
.WORD GALS1A,15,0,10,0,520 ;TRAIN
|
|||
|
; .WORD TANK,3,0,100,1,1700
|
|||
|
.WORD GALS2,5,0,10,0,1090 ;PURPLE GALAGA
|
|||
|
.WORD 0
|
|||
|
;
|
|||
|
;CIRCUIT 3 INFO
|
|||
|
;
|
|||
|
W3_INFO:
|
|||
|
;TYPE # LEVEL RATE ONSCRN CNTR
|
|||
|
;WAVE 1
|
|||
|
.WORD HULK,12,2,1,8,900 ;SET HULKTYP
|
|||
|
.WORD SNK,15,3,280,0,400
|
|||
|
.WORD TANK,24,0,19,0,1
|
|||
|
.WORD MINE,5,0,0,5,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 2
|
|||
|
.WORD HULK,315,2,8,3,350
|
|||
|
.WORD SNK,335,3,80,0,1
|
|||
|
.WORD GALS1A,6,0,50,0,50 ;GALAGA TRAIN
|
|||
|
.WORD MINE,5,0,0,5,1
|
|||
|
.WORD TANK,3,0,100,0,1500
|
|||
|
.WORD 0
|
|||
|
;WAVE 3 ;REGULAR GRUNTS
|
|||
|
.WORD HULK,700,7,1,5,1
|
|||
|
.WORD FAT,5,0,170,2,2100
|
|||
|
.WORD SNK,235,0,290,0,1
|
|||
|
.WORD MINE,3,0,0,3,1
|
|||
|
.WORD TANK,3,0,100,0,2400
|
|||
|
.WORD 0
|
|||
|
;WAVE 4
|
|||
|
.WORD HULK,650,7,1,5,1
|
|||
|
.WORD MINE,3,0,0,3,1
|
|||
|
.WORD FAT,17,0,70,4,500
|
|||
|
.WORD 0
|
|||
|
;WAVE 5
|
|||
|
.WORD RBTA,400,6,4,0,1
|
|||
|
.WORD MINE,8,0,0,8,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 6
|
|||
|
.WORD HULK,1040,6,1,1,800
|
|||
|
.WORD GALS3,13,0,70,0,1 ;SWARMER DUDES
|
|||
|
.WORD MINE,14,0,0,14,1
|
|||
|
.WORD GALS1A,34,0,400,0,180 ;GALAGA TRAIN
|
|||
|
.WORD 0
|
|||
|
;WAVE 7
|
|||
|
;SNAKES ;MONITOR OUT
|
|||
|
.WORD COBRA,0,0,07FFFH,1,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 8
|
|||
|
.WORD HULK,700,5,2,5,1
|
|||
|
.WORD SNK,835,3,80,0,20
|
|||
|
.WORD MINE,6,0,0,6,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 9 ;MONITOR OUT
|
|||
|
.WORD HULK,650,6,1,0,1200
|
|||
|
.WORD FAT,17,0,170,4,500
|
|||
|
.WORD SNK,2835,3,25,0,50
|
|||
|
.WORD MINE,5,0,0,5,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 10 ;BOGUS WAVE NEVER SEEN
|
|||
|
.WORD HULK,140,4,1,5,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 11
|
|||
|
.WORD HULK,9,2,1,5,1100 ;SET HULKTYP
|
|||
|
.WORD TANK,25,0,15,1,1
|
|||
|
.WORD MINE,5,0,0,5,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 12 ;PRIZE ROOM
|
|||
|
.WORD HULK,600,6,1,0,350
|
|||
|
.WORD MINE,6,0,0,6,1
|
|||
|
.WORD FAT,8,0,1,0,1400
|
|||
|
.WORD GALS1A,4,0,50,0,180 ;GALAGA TRAIN
|
|||
|
.WORD GALS3,5,0,280,0,700 ;SWARMER DUDES
|
|||
|
.WORD 0
|
|||
|
;WAVE 13
|
|||
|
.WORD HULK,400,2,1,10,1
|
|||
|
.WORD SNK,535,3,80,0,50
|
|||
|
.WORD MINE,5,0,0,5,1
|
|||
|
.WORD GALS3,1,0,80,0,700 ;SWARMER DUDES
|
|||
|
.WORD FAT,9,0,1,0,1400
|
|||
|
.WORD GALS1A,5,0,50,0,180 ;GALAGA TRAIN
|
|||
|
.WORD 0
|
|||
|
;WAVE 14 ;PRIZE ROOM
|
|||
|
.WORD HULK,555,5,1,0,150 ;SET HULKTYP
|
|||
|
.WORD FAT,17,0,170,0,400
|
|||
|
.WORD TANK,10,0,100,0,1500
|
|||
|
.WORD MINE,6,0,0,6,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 15
|
|||
|
.WORD RBTA,900,5,1,0,1300
|
|||
|
.WORD MINE,4,0,0,4,1
|
|||
|
.WORD GALS1A,5,0,180,0,180 ;GALAGA TRAIN
|
|||
|
.WORD SNK,2835,4,33,0,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 16
|
|||
|
.WORD RBTA,2440,5,1,0,1
|
|||
|
.WORD MINE,5,0,0,5,1
|
|||
|
.WORD GALS3,13,0,180,0,900 ;SWARMER DUDES
|
|||
|
.WORD 0
|
|||
|
;WAVE 17
|
|||
|
.WORD HULK,650,5,1,1,1000
|
|||
|
.WORD SNK,2835,4,25,0,1
|
|||
|
.WORD GALS1A,5,0,200,0,180 ;GALAGA TRAIN
|
|||
|
.WORD MINE,6,0,0,6,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 18
|
|||
|
.WORD HULK,750,5,3,5,1
|
|||
|
.WORD MINE,3,0,0,3,1
|
|||
|
.WORD GALS1A,15,0,50,0,180 ;GALAGA TRAIN
|
|||
|
.WORD FAT,27,0,80,4,500
|
|||
|
.WORD GALS3,15,0,180,0,1800 ;SWARMER DUDES
|
|||
|
.WORD 0
|
|||
|
;WAVE 19
|
|||
|
.WORD ORB,240,0,8,1,400 ;
|
|||
|
.WORD GALS2,35,0,15,0,1 ;PURPLE GALAGA
|
|||
|
.WORD MINE,8,0,0,8,1
|
|||
|
.WORD TANK,10,0,180,1,100
|
|||
|
.WORD FAT,13,0,1,0,1200
|
|||
|
.WORD 0
|
|||
|
;WAVE 20
|
|||
|
.WORD HULK,2540,6,3,5,80
|
|||
|
.WORD MINE,3,0,0,3,1
|
|||
|
.WORD GALS1A,2,0,10,0,10 ;GALAGA TRAIN
|
|||
|
.WORD FAT,27,0,180,4,900
|
|||
|
.WORD GALS3,2,0,180,0,2100 ;SWARMER DUDES
|
|||
|
.WORD 0
|
|||
|
;WAVE 21
|
|||
|
;MUTOID MAN
|
|||
|
.WORD MUTD,0,0,07FFFH,1,1
|
|||
|
.WORD MINE,2,0,0,2,1
|
|||
|
.WORD GALS3,1,0,45,0,20 ;SWARMER DUDES
|
|||
|
.WORD FAT,35,0,140,0,1000 ;1000 / 200
|
|||
|
.WORD 0
|
|||
|
|
|||
|
.IF DEBUG
|
|||
|
;FAKE CIRCUIT
|
|||
|
FAKE_INFO:
|
|||
|
;RECORDS LOOK LIKE THIS
|
|||
|
;TYPES:DIFFERENT ID'S
|
|||
|
;#:TOTAL NUMBER PER WAVE
|
|||
|
;DIFFICULTY:0,1,2,3 0=EASIEST
|
|||
|
;RATE:# OF CYCLES/3 (SLP CNTR) BEFORE SPAWN IS CALLED
|
|||
|
;ONSCRN:# OF TYPE ON SCREEN AT START OF WAVE
|
|||
|
;CNTR USED IN WAVE RAM UPDATING
|
|||
|
|
|||
|
;RECORD LAYOUT
|
|||
|
;TYPE # LEVEL RATE ONSCRN CNTR
|
|||
|
;WAVE 1
|
|||
|
.WORD HULK,5,6,1,0,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 2
|
|||
|
.WORD HULK,5,6,1,0,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 3
|
|||
|
.WORD HULK,5,6,1,0,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 4
|
|||
|
.WORD HULK,5,6,1,0,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 5
|
|||
|
.WORD HULK,5,6,1,0,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 6
|
|||
|
.WORD HULK,5,6,1,0,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 7
|
|||
|
.WORD COBRA,0,0,07FFFH,1,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 8
|
|||
|
.WORD HULK,5,6,1,0,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 9
|
|||
|
.WORD HULK,5,6,1,0,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 10
|
|||
|
.WORD HULK,5,6,1,0,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 11
|
|||
|
.WORD HULK,5,6,1,0,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 12
|
|||
|
.WORD HULK,5,6,1,0,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 13
|
|||
|
.WORD HULK,5,6,1,0,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 14
|
|||
|
.WORD HULK,5,6,1,0,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 15
|
|||
|
.WORD HULK,5,6,1,0,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 16
|
|||
|
.WORD HULK,5,6,1,0,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 17
|
|||
|
.WORD HULK,5,6,1,0,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 18
|
|||
|
.WORD HULK,5,6,1,0,1
|
|||
|
.WORD 0
|
|||
|
;WAVE 19
|
|||
|
.WORD ORB,280,0,8,1,400 ;
|
|||
|
.WORD GALS2,35,0,15,0,1 ;PURPLE GALAGA
|
|||
|
.WORD MINE,8,0,0,8,1
|
|||
|
.WORD TANK,10,0,180,1,100
|
|||
|
.WORD FAT,13,0,1,0,1200
|
|||
|
.WORD 0
|
|||
|
;WAVE 20
|
|||
|
.WORD HULK,2540,6,3,5,80
|
|||
|
.WORD MINE,3,0,0,3,1
|
|||
|
.WORD GALS1A,2,0,10,0,10 ;GALAGA TRAIN
|
|||
|
.WORD FAT,27,0,180,4,900
|
|||
|
.WORD GALS3,2,0,180,0,2100 ;SWARMER DUDES
|
|||
|
.WORD 0
|
|||
|
;WAVE 21
|
|||
|
;MUTOID MAN
|
|||
|
.WORD MUTD,0,0,07FFFH,1,1
|
|||
|
.WORD MINE,2,0,0,2,1
|
|||
|
.WORD GALS3,1,0,45,0,20 ;SWARMER DUDES
|
|||
|
.WORD FAT,35,0,140,0,1000 ;1000 / 200
|
|||
|
.WORD 0
|
|||
|
.WORD ORB,12,0,7,1,1 ;
|
|||
|
.WORD 0
|
|||
|
|
|||
|
.ENDIF
|
|||
|
|
|||
|
ZEROCNTS
|
|||
|
CLR A0
|
|||
|
MOVE A0,@HULK_CNT
|
|||
|
MOVE A0,@TNK_CNT
|
|||
|
MOVE A0,@FAT_CNT
|
|||
|
MOVE A0,@ORB_CNT
|
|||
|
MOVE A0,@GAL_CNT
|
|||
|
MOVE A0,@RBTA_CNT
|
|||
|
RETS
|
|||
|
|
|||
|
OVERLORD:
|
|||
|
SLEEP 3
|
|||
|
|
|||
|
; MOVK 10,A0
|
|||
|
; MOVE A0,@WAVE
|
|||
|
|
|||
|
;GET BASE ADDR OF CURRENT WAVES INFO
|
|||
|
MOVE @WAVEYX,A0,L
|
|||
|
;JUST ADJUST FOR NEW WORLD STUFF
|
|||
|
;NEEDED
|
|||
|
; CALLA DO_BND ;GETS BOUNDARIES FOR NEXT WAVE
|
|||
|
|
|||
|
AP MOVK 1,A0
|
|||
|
MOVE A0,@EHALT
|
|||
|
|
|||
|
CALLR SETMAX
|
|||
|
|
|||
|
CALLR ZEROCNTS
|
|||
|
|
|||
|
MOVB A0,@ECON ;NO ENEMY TO ENEMY COLLIDE ON!
|
|||
|
MOVB A0,@ENON ;NO ENEMY TO NEUTRAL COLLIDE ON!
|
|||
|
MOVB A0,@PZON
|
|||
|
|
|||
|
;CLEAR RAM AREA FOR TEMP X/Y POSITIONS
|
|||
|
MOVI RAMXY,A0
|
|||
|
CLR A3
|
|||
|
MOVI MAX_ONSC,A1
|
|||
|
LP9: MOVE A3,*A0+,L
|
|||
|
DSJS A1,LP9
|
|||
|
|
|||
|
MOVI [60,60],A0 ;SOME VALUE TO INIT TABLE WITH
|
|||
|
;NOTHING WILL ORIGINATE AT 20/20
|
|||
|
MOVI RAMXY,A1
|
|||
|
MOVE A0,*A1+,L
|
|||
|
MOVE A1,@KEEPXY,L
|
|||
|
|
|||
|
MOVE @CIRCUIT,A0
|
|||
|
SLL 5,A0
|
|||
|
ADDI CQWAVE,A0
|
|||
|
MOVE *A0,A1,L
|
|||
|
MOVE @GAMSTATE,A0,W
|
|||
|
CMPI INAMODE,A0
|
|||
|
JRNZ RIP
|
|||
|
;IN DEMO
|
|||
|
MOVE @WAVE,A0
|
|||
|
CMPI 1,A0
|
|||
|
JRNZ RIP
|
|||
|
MOVI 30,A0
|
|||
|
MOVB A0,@MAXHULK
|
|||
|
MOVK 9,A0
|
|||
|
JRUC RIP2
|
|||
|
RIP
|
|||
|
MOVE @WAVE,A0 ;WAVE 1 IS THE FIRST WAVE
|
|||
|
RIP2 DEC A0
|
|||
|
JRNZ OL00
|
|||
|
MOVE A1,A5
|
|||
|
OL00: CLR A4
|
|||
|
OL0: INC A4
|
|||
|
MOVE *A1,A2,W
|
|||
|
JRZ OL1
|
|||
|
ADDI 6*16,A1
|
|||
|
JRUC OL0
|
|||
|
OL1: CMPI 0,A0
|
|||
|
JRZ GOTIT
|
|||
|
ADDI 16,A1 ;POINT TO NEXT WAVE INFO TABLE
|
|||
|
INC A3
|
|||
|
CMP A0,A3
|
|||
|
JRNE OL00
|
|||
|
MOVE A1,A5
|
|||
|
GOTIT:
|
|||
|
MOVE A5,A1 ;A5=ADDR OF THIS WAVE IN ROM
|
|||
|
; CLEAR WAVE RAM
|
|||
|
MOVI WAVE_RAM,A0
|
|||
|
CLR A6
|
|||
|
MOVI 29,A7
|
|||
|
GT00 MOVE A6,*A0+,L
|
|||
|
DSJS A7,GT00
|
|||
|
|
|||
|
; PUT WAVE INFO INTO RAM FOR UPDATING
|
|||
|
|
|||
|
MOVK 8,A4 ;CAN IT AT 8!
|
|||
|
|
|||
|
MOVI WAVE_RAM,A0
|
|||
|
GT0 MOVI 6,A3 ;# OF FIELDS PER BAD GUY
|
|||
|
GT MOVE *A1+,*A0+,W
|
|||
|
DSJS A3,GT
|
|||
|
DSJS A4,GT0
|
|||
|
; NOW PUT ONSCRN # OF EACH TYPE ONTO SCREEN!
|
|||
|
|
|||
|
MOVI WAVE_RAM,A0
|
|||
|
ON1: MOVE *A0,A1,W ;GET TYPE #
|
|||
|
JRZ DONE
|
|||
|
MOVE *A0(4*16),A2,W ;A2=# ONSCRN
|
|||
|
JRZ GET_NXT ;NONE ON SCREEN AT START
|
|||
|
DEC A1 ;TYPE #
|
|||
|
SLL 5,A1
|
|||
|
ADDI TYP_TBL,A1
|
|||
|
MOVE *A1,A3,L
|
|||
|
PUSH A0
|
|||
|
CALL A3
|
|||
|
PULL A0
|
|||
|
GET_NXT:
|
|||
|
ADDI 6*16,A0
|
|||
|
JRUC ON1
|
|||
|
DONE:
|
|||
|
;PLACE ON SCREEN CASH ITEMS!
|
|||
|
MOVE @CIRCUIT,A0
|
|||
|
JRNZ DNEA
|
|||
|
MOVE @WAVE,A0
|
|||
|
CMPI 5,A0
|
|||
|
JRNE DNE
|
|||
|
;YES ON THIS SCREEN
|
|||
|
YEA CALLA O_ITEMS
|
|||
|
JRUC DNE
|
|||
|
DNEA MOVE @WAVE,A0
|
|||
|
CMPI 12,A0
|
|||
|
JRZ YEA
|
|||
|
CMPI 14,A0
|
|||
|
JRZ YEA
|
|||
|
DNE
|
|||
|
SLEEP 1
|
|||
|
MOVE @EHALT,A0 ;EHALT IS SET IN WAVES.ASM
|
|||
|
;AFTER ARENA TEXT IS ERASED
|
|||
|
CMPI 2,A0
|
|||
|
JRNZ DNE
|
|||
|
|
|||
|
CLR A1
|
|||
|
NOT A1
|
|||
|
MOVI TVPID,A0
|
|||
|
CALLA EXISTP
|
|||
|
JRZ SAD
|
|||
|
MOVK 1,A0
|
|||
|
MOVE A0,@HALT
|
|||
|
SAD
|
|||
|
SLEEP 60*2 ;DELAY BEFORE BAD GUYS MOVE
|
|||
|
|
|||
|
CLR A0
|
|||
|
MOVE A0,@EHALT
|
|||
|
CLR A1
|
|||
|
NOT A1
|
|||
|
MOVI TVPID,A0
|
|||
|
CALLA EXISTP
|
|||
|
JRZ SAD0
|
|||
|
MOVK 1,A0
|
|||
|
MOVE A0,@EHALT
|
|||
|
SAD0
|
|||
|
CALLR INIT_RAM
|
|||
|
|
|||
|
RLSE:
|
|||
|
;DISPERSE ENEMIES THROUGHOUT WAVE
|
|||
|
MOVI WAVE_RAM,A0
|
|||
|
MOVE @HALT,A1,W
|
|||
|
JRNZ RDN
|
|||
|
RTOP
|
|||
|
MOVE *A0(0),A1
|
|||
|
JRZ RDN
|
|||
|
MOVE *A0(16),A1 ;A1=HOW MANY ARE LEFT
|
|||
|
; ANDI 0
|
|||
|
JRZ NXTR
|
|||
|
MOVE *A0(5*16),A1 ;SPAWN RATE CNTR
|
|||
|
DEC A1
|
|||
|
MOVE A1,*A0(5*16)
|
|||
|
JRNZ NXTR
|
|||
|
MOVE *A0(3*16),A1 ;SPAWN RATE IN CYCLES
|
|||
|
MOVE A1,*A0(5*16)
|
|||
|
;TIME TO SPAWN
|
|||
|
MOVE *A0(0),A1
|
|||
|
DEC A1
|
|||
|
SLL 5,A1
|
|||
|
ADDI TYP_TBL2,A1
|
|||
|
MOVE *A1,A1,L
|
|||
|
PUSH A0
|
|||
|
CALL A1
|
|||
|
PULL A0
|
|||
|
NXTR ADDI 6*16,A0
|
|||
|
JRUC RTOP
|
|||
|
RDN
|
|||
|
;ALL ENEMIES HAVE BEEN CHECKED FOR RELEASE
|
|||
|
SLEEP 3
|
|||
|
JRUC RLSE
|
|||
|
|
|||
|
BDF
|
|||
|
;GET RID OF BLADES AT DEATH PROCESS!
|
|||
|
;
|
|||
|
SLEEP 30
|
|||
|
;IF BLDS ON, SEND THEM FLYING!
|
|||
|
MOVB *A0(BLDFLG),A1
|
|||
|
JRZ NB
|
|||
|
;YES BLADES ON THIS GUY
|
|||
|
SLEEP 30
|
|||
|
;WHEN PLAYER DIES, PAUSE A MOMENT AND THEN KILL BLADES AROUND HIM
|
|||
|
CALLA BLDOFF
|
|||
|
MOVI YAMOFF,A0
|
|||
|
CALLA ONESND
|
|||
|
NB
|
|||
|
DIE
|
|||
|
|
|||
|
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!
|
|||
|
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 @GAMSTATE,A1
|
|||
|
CMPI INAMODE,A1
|
|||
|
JREQ GAMOK
|
|||
|
MOVE *A8(OPLINK),A7,L
|
|||
|
;
|
|||
|
MOVB *A7(PNUM),A1 ;NEEDED?
|
|||
|
JREQ GAMOK
|
|||
|
MOVE *A7(DELYDET),A1,W
|
|||
|
JRZ KRU
|
|||
|
ANDI 01FFH,A1
|
|||
|
JRNZ GAMOK
|
|||
|
KRU MOVE *A7(DEAD),A1
|
|||
|
JRNZ GAMOK
|
|||
|
;
|
|||
|
;YES, KILL THIS PLYR
|
|||
|
MOVE @CIRCUIT,A10
|
|||
|
JRNZ NOMOD
|
|||
|
MOVE @WAVE,A10
|
|||
|
CMPI 3,A10
|
|||
|
JRNC NOMOD
|
|||
|
;MODIFY DIFFICULTY! THIS PLAYER IS A BOZO!
|
|||
|
PUSH A0
|
|||
|
MOVI HULK,A2
|
|||
|
CALLA GET_WVADDR
|
|||
|
CLR A10
|
|||
|
MOVE A10,*A0(32) ;ZERO DIFFICULTY
|
|||
|
PULL A0
|
|||
|
|
|||
|
NOMOD MOVE A0,A10 ;PASS ALONG SHRAP PTR
|
|||
|
MOVE *A0(OID),A11
|
|||
|
ANDI 0FFFFH,A11
|
|||
|
CMPI CLSENMY|TYPCBALL,A11 ;SHRAPNEL ALSO
|
|||
|
JRNE AA
|
|||
|
; MOVB @FACEON,A1
|
|||
|
; JRZ AVC
|
|||
|
;FACE ON, WANT A FRY DEATH!
|
|||
|
; MOVI CLSENMY|TYPORB,A11 ;(OID)
|
|||
|
; MOVE A11,*A0(OID)
|
|||
|
; JRUC AA
|
|||
|
;AVC
|
|||
|
;WANT A SPIN DEATH!
|
|||
|
PUSH A7
|
|||
|
CREATE 0,SHOWIT
|
|||
|
PULL A7
|
|||
|
AA
|
|||
|
CMPI CLSNEUT|TYPMINE,A11
|
|||
|
JRNE ABC
|
|||
|
;KILL MINE
|
|||
|
PUSH A7
|
|||
|
MOVI CLSNEUT|TYPNEUT,A0
|
|||
|
MOVE A0,*A10(OID),W
|
|||
|
CREATE 0,EXPMINE ;KILL LAND MINE (A10=PTR)
|
|||
|
MOVI EXP3,A0
|
|||
|
CALLA ONESND
|
|||
|
PULL A7
|
|||
|
ABC
|
|||
|
;A11=OID OF WHAT KILLED THIS PLAYER
|
|||
|
;A10=KILLER IMAGE PTR
|
|||
|
MOVE A7,A0 ;A7=PLYR IMG OPLINK
|
|||
|
MOVE A11,*A0(DEAD),W
|
|||
|
PUSH A0
|
|||
|
CREATE 0,BDF ;WILL HANDLE GETTING RID OF BLADES
|
|||
|
PULL A0
|
|||
|
|
|||
|
;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
|
|||
|
MOVI P1DATA,A11
|
|||
|
MOVB *A0(PNUM),A0
|
|||
|
CMPI 1,A0
|
|||
|
JREQ CG
|
|||
|
MOVI P2DATA,A11
|
|||
|
CG
|
|||
|
MOVE A11,A2
|
|||
|
;A2=P1DATA OR P2DATA
|
|||
|
MOVI >10,A1 ;AMOUNT OF SCORE
|
|||
|
CALLA SCRADD2 ;DO IT!
|
|||
|
|
|||
|
MOVE *A11(PLIVES),A0,W ;TEMP
|
|||
|
CMPI 9,A0
|
|||
|
JRC TAG1
|
|||
|
MOVK 9,A0
|
|||
|
MOVE A0,*A11(PLIVES),W
|
|||
|
TAG1 CMPI 0,A0
|
|||
|
JRNZ GAMOK
|
|||
|
;CHANGE MESSAGE ON HIS SCOREBOARD/PLUS STILL SHOW PLAYER SCORE!
|
|||
|
;COLOR CYCLE IT
|
|||
|
;DISPLAY A COUNTDOWN
|
|||
|
CREATE 0,OVERLAP
|
|||
|
; MOVK 1,A0
|
|||
|
; MOVB A0,@WNTOUT
|
|||
|
|
|||
|
MOVI MCSPK9,A0 ;TEN SECONDS SPEECH
|
|||
|
CALLA ONESND
|
|||
|
|
|||
|
MOVK 1,A1
|
|||
|
MOVB A1,*A11(CNTD) ;FLAG FOR MESSAGES AND CNTR
|
|||
|
CMPI P1DATA,A11
|
|||
|
JRNE F3
|
|||
|
CREATE P1PID,MSG_PROC2
|
|||
|
JRUC F4
|
|||
|
F3 CREATE P2PID,MSG_PROC2
|
|||
|
|
|||
|
F4 MOVE @STATUS,A0
|
|||
|
CMPI 3,A0
|
|||
|
JRZ GAMOK
|
|||
|
;IS PLAYER CNTING DOWN?
|
|||
|
MOVB @CNTDIG1,A2
|
|||
|
MOVB @CNTDIG2,A1
|
|||
|
OR A2,A1
|
|||
|
JRNZ GAMOK
|
|||
|
CREATE BUYINPID,PSTAT
|
|||
|
GAMOK:
|
|||
|
|
|||
|
MMFM SP,A1,A2,A6,A7,A10,A11
|
|||
|
RETS
|
|||
|
|
|||
|
OVERLAP
|
|||
|
MOVK 1,A0
|
|||
|
MOVB A0,@WNTOUT
|
|||
|
SLEEP 5
|
|||
|
CLR A0
|
|||
|
MOVB A0,@WNTOUT
|
|||
|
DIE
|
|||
|
|
|||
|
SHOWIT
|
|||
|
;SHOW SHRAPNEL FOR A MOMENT AFTER IT HAS KILLED PLAYER
|
|||
|
;KILL CBALL/SHRAPNEL IMAGE (KILLER)
|
|||
|
;A10=IMG PNTR OF KILLER
|
|||
|
MOVE *A10(OPLINK),A0,L
|
|||
|
JRZ DY
|
|||
|
CALLA KILL
|
|||
|
CLR A0
|
|||
|
MOVE A0,*A10(OPLINK),L
|
|||
|
|
|||
|
CLR A0
|
|||
|
;STOP ITS MOVEMENT
|
|||
|
;MAKE IT CONSTANT COLOR CYCLE COLOR
|
|||
|
MOVE A0,*A10(OXVEL),L
|
|||
|
MOVE A0,*A10(OYVEL),L
|
|||
|
|
|||
|
MOVI BOOM3,A9
|
|||
|
MOVE A10,A8
|
|||
|
MOVK 1,A1
|
|||
|
JSRP FRANIM
|
|||
|
|
|||
|
MOVE A10,A0
|
|||
|
CALLA DELOBJ
|
|||
|
DY DIE
|
|||
|
|
|||
|
BOOM3
|
|||
|
|
|||
|
.LONG EXPb1
|
|||
|
.WORD NEWPALET|4
|
|||
|
.LONG BULLET ;NEW PAL NAME
|
|||
|
.LONG EXPb2
|
|||
|
.WORD 4
|
|||
|
.LONG EXPb3
|
|||
|
.WORD 4
|
|||
|
.LONG EXPb2
|
|||
|
.WORD 4
|
|||
|
.LONG EXPb1
|
|||
|
.WORD 4
|
|||
|
.LONG EXPb2
|
|||
|
.WORD 4
|
|||
|
.LONG EXPb3
|
|||
|
.WORD 4
|
|||
|
.LONG EXPb2
|
|||
|
.WORD 4
|
|||
|
.LONG EXPb1
|
|||
|
.WORD 4
|
|||
|
.LONG EXPb2
|
|||
|
.WORD 4
|
|||
|
.LONG EXPb3
|
|||
|
.WORD 4
|
|||
|
.LONG EXPb2
|
|||
|
.WORD 4
|
|||
|
.LONG EXPb1
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
|
|||
|
CTRLS .LONG P1CTRL,P2CTRL
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* DRAW_PLYR_TORSO *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
DRAW_PLYR_TORSO:
|
|||
|
;MUST ARRIVE HERE WITH 1/2 PLAYER FLAG
|
|||
|
;A8=1 OR 2 AT THIS POINT!
|
|||
|
;A9=0 IF STARTING GAME FROM SCRATCH,1=START PLAYER BEHIND LEFT SIDE DOOR,2=RGT
|
|||
|
MOVB A8,*A13(PNUM) ;A8=1 OR 2 FOR WHAT PLAYER THIS IS
|
|||
|
DEC A8
|
|||
|
SLL 5,A8
|
|||
|
|
|||
|
MOVI CTRLS,A1
|
|||
|
ADD A8,A1
|
|||
|
MOVE *A1,A0,L
|
|||
|
MOVE A0,*A13(STICK),L ;PLACE CORRECT STICK READ ADDR
|
|||
|
ADDI PLYRPRCS,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
|
|||
|
MOVE A0,*A13(LEG2_PTR),L ;KEEP LEG PTR IN TORSO STURCTURE
|
|||
|
MOVI 02H,A0 ;HI BIT SET, DIR = 4 (TO THE RIGHT)
|
|||
|
;HI BIT SET = STANDING MODE
|
|||
|
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!?
|
|||
|
MOVB *A13(PNUM),A0
|
|||
|
DEC A0
|
|||
|
SLL 5,A0
|
|||
|
ADDI PLYROBJS,A0
|
|||
|
MOVE A8,*A0,L ;INSERT TORSO PTRS INTO TABLE
|
|||
|
|
|||
|
MOVE *A13(LEG2_PTR),A9,L ;READY TO PASS LEG ALONG TO LEG PROC
|
|||
|
MOVE A13,A10 ;PASS TORSO PROC TO LEG
|
|||
|
|
|||
|
MOVB *A13(PNUM),A0
|
|||
|
CMPI 1,A0
|
|||
|
JRNE AXC
|
|||
|
CREATE PLY1PID,DRAW_PLYR_LEGS
|
|||
|
JRUC AXCD
|
|||
|
AXC
|
|||
|
CREATE PLY2PID,DRAW_PLYR_LEGS
|
|||
|
AXCD
|
|||
|
MOVK 1,A0
|
|||
|
MOVE A0,*A13(OLD_P_DIR),W
|
|||
|
CLR A0
|
|||
|
MOVE A0,*A13(DEAD),W
|
|||
|
MOVE A0,*A13(WPN_TYP),W
|
|||
|
MOVE A0,*A13(SHOOT_FLAG),W
|
|||
|
MOVE A0,*A13(LSRPTR),L
|
|||
|
MOVB A0,*A13(BLDFLG)
|
|||
|
MOVB A0,*A13(BNDTYP)
|
|||
|
MOVB A0,*A13(PRVBND)
|
|||
|
|
|||
|
MOVB *A13(PNUM),A7
|
|||
|
DEC A7
|
|||
|
SLL 5,A7
|
|||
|
ADDI PLYRPRCS,A7
|
|||
|
MOVE *A7,A7,L
|
|||
|
CALLA DO_BND
|
|||
|
MOVI 40,A0
|
|||
|
MOVE A0,*A13(DELYDET)
|
|||
|
TORSO_1:
|
|||
|
CLR A0
|
|||
|
MOVE A0,*A13(REV_FLAG),W
|
|||
|
|
|||
|
MOVE *A13(DELYDET),A0
|
|||
|
ANDI 01FFH,A0
|
|||
|
JRZ TY
|
|||
|
DEC A0
|
|||
|
MOVE A0,*A13(DELYDET)
|
|||
|
|
|||
|
TY
|
|||
|
MOVE *A13(DEAD),A1
|
|||
|
JRZ NDD ;BR=NOT DEAD
|
|||
|
PUSH A1
|
|||
|
CREATE 0,CHEER
|
|||
|
PULL A1
|
|||
|
;COLOR CYCLE/FLASH PLAYER!
|
|||
|
MOVE *A13(LEG2_PTR),A2,L ;GET LEG INFO
|
|||
|
CLR A0
|
|||
|
MOVE A0,*A2(OXVEL),L
|
|||
|
MOVE A0,*A2(OYVEL),L
|
|||
|
MOVE A0,*A8(OXVEL),L
|
|||
|
MOVE A0,*A8(OYVEL),L
|
|||
|
|
|||
|
|
|||
|
MOVE @FACEON,A0
|
|||
|
JRNZ DIECHU
|
|||
|
CMPI CLSNEUT|TYPMINE,A1
|
|||
|
JREQ DIECHU
|
|||
|
CMPI CLSNEUT|TYPCHSR,A1
|
|||
|
JREQ DIECHU
|
|||
|
CMPI CLSNEUT|TYPTANK,A1
|
|||
|
JREQ DIECHU
|
|||
|
ANDI 0FFF0H,A1 ;FFF0?
|
|||
|
CMPI CLSENMY|TYPMUT,A1
|
|||
|
JREQ DIECHU
|
|||
|
CMPI CLSENMY|TYPFACE,A1
|
|||
|
JREQ DIECHU
|
|||
|
CMPI CLSENMY|TYPCBL2,A1
|
|||
|
JREQ DIECHU
|
|||
|
CMPI CLSENMY|TYPGAL,A1
|
|||
|
JREQ DIECHU
|
|||
|
;OTHER CHUNK OIDS HERE
|
|||
|
CMPI CLSENMY|TYPORBL,A1
|
|||
|
JREQ DIESHK
|
|||
|
CMPI CLSENMY|TYPORB,A1
|
|||
|
JREQ DIESHK
|
|||
|
CMPI CLSENMY|TYPCOB|SUBCOBFLM,A1
|
|||
|
JREQ DIESHK
|
|||
|
;OTHER SHOCK OIDS HERE
|
|||
|
|
|||
|
SPDTH
|
|||
|
;IF SPIN DEATH, FALL IN HERE
|
|||
|
SLEEP 05
|
|||
|
;BLOOD CHUNKS
|
|||
|
CREATE 0,TWOCHNKS
|
|||
|
CREATE 0,CHNKS2
|
|||
|
MOVI UGH,A0
|
|||
|
CALLA ONESND
|
|||
|
MOVK 1,A1
|
|||
|
MOVI TSPN,A9
|
|||
|
JSRP FRANIM
|
|||
|
MOVK 1,A1
|
|||
|
MOVI 132,A0 ;129
|
|||
|
MOVE A0,*A8(OZPOS)
|
|||
|
MOVI DIELST,A9
|
|||
|
JSRP FRANIM
|
|||
|
|
|||
|
SLEEP 1
|
|||
|
JRUC ALLDIE
|
|||
|
DIESHK:
|
|||
|
SLEEP 01
|
|||
|
MOVI SHKSND,A0
|
|||
|
CALLA ONESND
|
|||
|
MOVK 1,A1
|
|||
|
MOVI TSHK,A9
|
|||
|
JSRP FRANIM
|
|||
|
|
|||
|
SLEEP 1
|
|||
|
JRUC ALLDIE
|
|||
|
|
|||
|
CHEER SLEEP 25
|
|||
|
MOVI CROWD2,A0
|
|||
|
CALLA ONESND
|
|||
|
DIE
|
|||
|
;DIECK
|
|||
|
; MOVB @TOID_ON,A0
|
|||
|
; JRZ SPDTH
|
|||
|
DIECHU:
|
|||
|
;IF CHUNK DEATH, FALL IN HERE
|
|||
|
MOVI UGH,A0 ;SCREAM
|
|||
|
CALLA ONESND
|
|||
|
CREATE 0,ADPCS3
|
|||
|
;CHANGE PRIORITY
|
|||
|
MOVE *A8(OYPOS),A0
|
|||
|
ADDI 12,A0
|
|||
|
MOVE A0,*A8(OYPOS)
|
|||
|
MOVK 1,A1
|
|||
|
MOVI OVALBLD,A9
|
|||
|
JSRP FRANIM
|
|||
|
MOVE A8,A0
|
|||
|
CALLA OBJOFF
|
|||
|
SLEEP 60*2
|
|||
|
|
|||
|
ALLDIE
|
|||
|
MOVB *A13(PNUM),A0
|
|||
|
SLL 5,A0
|
|||
|
ADDI TBLP,A0
|
|||
|
MOVE *A0,A11,L
|
|||
|
SLP SLEEP 1
|
|||
|
MOVE @HALT,A0
|
|||
|
JRNZ SLP
|
|||
|
MOVB *A11(CNTD),A0
|
|||
|
JRZ DOV
|
|||
|
|
|||
|
CLR A1
|
|||
|
MOVE A1,*A8(OYPOS)
|
|||
|
MOVE A1,*A8(OXPOS)
|
|||
|
|
|||
|
MOVB *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 SLEEP 1
|
|||
|
MOVE @HALT,A0
|
|||
|
JRNZ SLPZ
|
|||
|
MOVB *A11(CNTD),A0
|
|||
|
JRZ DOV
|
|||
|
CMPI 1,A0
|
|||
|
JRZ SLPZ
|
|||
|
;PLAYERS TIME HAS EXPIRED.
|
|||
|
;KILL PROC,OBJS,START MESSAGES!
|
|||
|
CLR A0
|
|||
|
MOVB 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
|
|||
|
CREATE 0,GOGUYS ;PRINTS GAME OVER MESSAGE!
|
|||
|
DYE DIE
|
|||
|
;KILL PLYR2
|
|||
|
KL2 CALLA KILLP2
|
|||
|
;IS OTHER GUY STILL AROUND?
|
|||
|
MOVI PLY1PID,A0
|
|||
|
JRUC DYE0
|
|||
|
GOGUYS
|
|||
|
MOVI INGAMEOV,A0
|
|||
|
MOVE A0,@GAMSTATE,W
|
|||
|
SOUND1 MUSICOFF ;MUSIC HARD OFF
|
|||
|
CLR A0
|
|||
|
CLR A1
|
|||
|
NOT A1
|
|||
|
CALLA KILALL ;KILL ALL GAME PROCESSES
|
|||
|
; JSRP CWINDOW
|
|||
|
; CLR A0
|
|||
|
; MOVB A0,@WANTIN
|
|||
|
; MOVB A0,@WNDO
|
|||
|
CREATE GMEOVPID,GAMEOVER ;GAME IS NOW OFFICIALLY OVER
|
|||
|
DIE
|
|||
|
|
|||
|
PCTR .LONG P1CTRL,P2CTRL
|
|||
|
TBLP .LONG 0,P1DATA,P2DATA
|
|||
|
|
|||
|
DOV
|
|||
|
;
|
|||
|
;DEAD OVER
|
|||
|
;
|
|||
|
MOVI P1DATA,A1
|
|||
|
MOVB *A13(PNUM),A0
|
|||
|
CMPI 1,A0
|
|||
|
JREQ ET1
|
|||
|
MOVI P2DATA,A1
|
|||
|
ET1
|
|||
|
;
|
|||
|
MOVE *A1(PLIVES),A2
|
|||
|
DEC A2
|
|||
|
MOVE A2,*A1(PLIVES),W
|
|||
|
|
|||
|
PUSH A8
|
|||
|
CALLA LIVECNT
|
|||
|
PULL A8
|
|||
|
|
|||
|
SKPIT MOVI 159,A0 ;TORSO REGULAR Z
|
|||
|
MOVE A0,*A8(OZPOS)
|
|||
|
|
|||
|
MMTM SP,A8,A9
|
|||
|
MOVB *A13(PNUM),A9
|
|||
|
|
|||
|
MOVE A9,A0
|
|||
|
DEC A0
|
|||
|
SLL 5,A0
|
|||
|
ADDI PCTR,A0
|
|||
|
MOVE *A0,A8,L
|
|||
|
CREATE SCRPID,SCRIPTPLAY
|
|||
|
|
|||
|
CLR A0
|
|||
|
MOVE A0,*A13(WPN_TYP)
|
|||
|
MOVE A0,*A13(LSRPTR),L
|
|||
|
MOVB A0,*A13(BNDTYP)
|
|||
|
MOVB A0,*A13(BLDFLG)
|
|||
|
MOVE *A13(LEG_PRC),A1,L
|
|||
|
MOVE A0,*A1(SHOECNT)
|
|||
|
;CLEAR SHOT CNT FOR METER
|
|||
|
|
|||
|
CMPI 1,A9
|
|||
|
JRNE VX1
|
|||
|
MOVI 080000H,A2
|
|||
|
MOVI 0850000H,A3
|
|||
|
MOVE @PLYRPRCS,A0,L
|
|||
|
MOVE *A0(LEG2_PTR),A0,L
|
|||
|
MOVE A2,*A0(OXVAL),L
|
|||
|
MOVE A3,*A0(OYVAL),L
|
|||
|
CALLA ADJSTWTL
|
|||
|
;ANI EMPTY METER ONTO SCREEN
|
|||
|
; MOVB @MTR1CNT,A0
|
|||
|
; CMPI 6,A0
|
|||
|
; JRNZ U1
|
|||
|
;METER WAS LOW, TURN OFF BEEP SOUND
|
|||
|
; CALLA KILLBEEP
|
|||
|
;U1
|
|||
|
MOVK 7,A0
|
|||
|
MOVB A0,@MTR1CNT
|
|||
|
CREATE 0,FIXMETERS
|
|||
|
JRUC AXZ
|
|||
|
VX1
|
|||
|
MOVI 01800000H,A2
|
|||
|
MOVI 0850000H,A3
|
|||
|
MOVE @PLYRPRCS+32,A0,L
|
|||
|
MOVE *A0(LEG2_PTR),A0,L
|
|||
|
MOVE A2,*A0(OXVAL),L
|
|||
|
MOVE A3,*A0(OYVAL),L
|
|||
|
CALLA ADJSTWTL
|
|||
|
;ANI EMPTY METER ONTO SCREEN
|
|||
|
; MOVB @MTR1CNT+8,A0
|
|||
|
; CMPI 6,A0
|
|||
|
; JRNZ U2
|
|||
|
;METER WAS LOW, TURN OFF BEEP SOUND
|
|||
|
; CALLA KILLBEEP
|
|||
|
;U2
|
|||
|
MOVK 7,A0
|
|||
|
MOVB A0,@MTR1CNT+8
|
|||
|
CREATE 0,FIXMETERS2
|
|||
|
AXZ
|
|||
|
MMFM SP,A8,A9
|
|||
|
|
|||
|
|
|||
|
;REALIGN PLAYER HALVES WHEN WE RESET
|
|||
|
MOVE A8,A0
|
|||
|
MOVE *A13(LEG2_PTR),A8,L ;GET LEG PTR OUT OF TORSO STRUCT
|
|||
|
CALLA GETANIXY
|
|||
|
MOVE *A8(OFLAGS),A4,W
|
|||
|
ORI M_NOCOLL,A4
|
|||
|
CALLA GANISAG
|
|||
|
MOVE A0,A8
|
|||
|
;TURN BACK ON TORSO OBJECT
|
|||
|
CALLA OBJON
|
|||
|
;
|
|||
|
MOVI nup1,A0
|
|||
|
MOVE *A8(OPLINK),A1,L
|
|||
|
MOVB *A1(PNUM),A1
|
|||
|
CMPI 1,A1
|
|||
|
JREQ OKP
|
|||
|
;CHANGE TO PLAYER 2 PAL IF NEEDED!
|
|||
|
;CHANGE TO NUP2 PAL
|
|||
|
MOVI nup2,A0
|
|||
|
OKP
|
|||
|
CALLA GETFPAL ;GET A COLOR MAP ASSIGNMENT
|
|||
|
MOVE A0,*A8(OPAL),W ;STORE THE NEW PALETTE
|
|||
|
|
|||
|
|
|||
|
MOVI 140,A0 ;120
|
|||
|
MOVE A0,*A13(DELYDET),W
|
|||
|
CLR A0
|
|||
|
MOVE A0,*A13(DEAD),W
|
|||
|
NDD
|
|||
|
MOVB @ENDON,A0 ;DO NOT SHOOT AT END OF MUTOID!
|
|||
|
JRNZ NOT_TOUCHED
|
|||
|
MOVE *A13(STICK),A2,L
|
|||
|
MOVE *A2,A2,W ;ACTUALLY GET P1/P2CTRL INFO
|
|||
|
|
|||
|
.IF YUNIT
|
|||
|
ANDI 0F0H,A2
|
|||
|
.ELSE
|
|||
|
ANDI 0F00H,A2
|
|||
|
.ENDIF
|
|||
|
|
|||
|
JRNZ TORSO_2
|
|||
|
|
|||
|
NOT_TOUCHED:
|
|||
|
; 1
|
|||
|
; 8 5
|
|||
|
;7 4
|
|||
|
; 9 6
|
|||
|
; 2
|
|||
|
CLR A0
|
|||
|
MOVB A0,*A13(OSHTDIR)
|
|||
|
MOVE *A13(P_DIR),A0 ;DIR + HIBIT SET IF STATIONARY
|
|||
|
BTST 15,A0 ;TEST FOR STANDING FLAG
|
|||
|
JRZ RUNNING
|
|||
|
; P1 IS STANDING STILL. PLACE CORRECT TORSO ON TOP OF FEET
|
|||
|
; CHECK FOR ALREADY THERE!
|
|||
|
ANDI 01FH,A0
|
|||
|
CLR A14
|
|||
|
MOVE A14,*A13(OLD_P_DIR),W
|
|||
|
MOVE A14,*A8(OXVEL),L
|
|||
|
MOVE A14,*A8(OYVEL),L
|
|||
|
|
|||
|
MOVE A0,A14
|
|||
|
|
|||
|
MOVE A8,A0
|
|||
|
MOVE *A13(LEG2_PTR),A8,L ;GET LEG PTR OUT OF TORSO STRUCT
|
|||
|
CALLA GETANIXY
|
|||
|
MOVE *A8(OFLAGS),A4,W
|
|||
|
ORI M_NOCOLL,A4
|
|||
|
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: SLEEP 1
|
|||
|
JRUC TORSO_1
|
|||
|
|
|||
|
RUNNING:
|
|||
|
MOVE A8,A0
|
|||
|
MOVE *A13(LEG2_PTR),A8,L
|
|||
|
CALLA GETANIXY
|
|||
|
MOVE *A8(OFLAGS),A4,W
|
|||
|
ORI M_NOCOLL,A4
|
|||
|
CALLA GANISAG
|
|||
|
MOVE A0,A8
|
|||
|
|
|||
|
MOVE *A13(P_DIR),A4 ;CURRENT DIR P1 IS FACING
|
|||
|
SLL 5,A4
|
|||
|
MOVE *A13(WPN_TYP),A1,W
|
|||
|
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,W ;FLAG
|
|||
|
|
|||
|
CALLA ANI
|
|||
|
|
|||
|
TEE SLEEP 1
|
|||
|
JRUC TORSO_1
|
|||
|
|
|||
|
TORSO_2:
|
|||
|
; PLAYER IS SHOOTING
|
|||
|
; STICK IS BEING PRESSED
|
|||
|
CLR A0
|
|||
|
MOVE A0,*A13(OLD_P_DIR),W
|
|||
|
CALLA FIRE_DIRECTION
|
|||
|
|
|||
|
;PLAYER WILL BEGIN FRANIM OF SHOOTING IN PROPER DIRECTION
|
|||
|
MOVE *A13(P_DIR),A0
|
|||
|
ANDI 0FH,A0
|
|||
|
MOVE @B_DIR,A4
|
|||
|
MOVB *A13(OSHTDIR),A5
|
|||
|
CMP A4,A5
|
|||
|
JREQ JJ
|
|||
|
;SHOOTING IN NEW DIR. ZERO REV_DIR.
|
|||
|
CLR A5
|
|||
|
MOVE A5,*A13(REV_P_DIR),W
|
|||
|
JJ:
|
|||
|
MOVB 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,A9,L ;MOVE TABLE VALUE INTO A9
|
|||
|
;THIS IS NEW FRANIM SCRIPT PNTR
|
|||
|
PUSH A8
|
|||
|
CALLA STRT_WPN ;TORSO CONTROLS
|
|||
|
PULL A8
|
|||
|
|
|||
|
MOVI 1,A1
|
|||
|
JSRP FRANIM
|
|||
|
|
|||
|
MOVI 0,A0
|
|||
|
MOVE A0,*A13(SHOOT_FLAG)
|
|||
|
|
|||
|
JRUC TORSO_1
|
|||
|
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* DRAW_PLYR_LEGS *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
DRAW_PLYR_LEGS:
|
|||
|
;A8=TORSO ABOVE THESE LEGS
|
|||
|
;A10=PROCESS OF TORSO ABOVE THESE LEGS
|
|||
|
;A9=LEG PNTR FOR 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_RGT,A10 ;INIT FRANIM SCRIPT RESET
|
|||
|
MOVE A10,A9 ;FRANIM NEEDS IT IN A9
|
|||
|
|
|||
|
MOVE_TOP:
|
|||
|
MOVE *A13(TSO_PRC),A7,L
|
|||
|
MOVE *A7(DEAD),A0 ;GET DEAD FLAG FROM TORSO STRUCT
|
|||
|
JRZ SLND
|
|||
|
ANDI 0FFFFH,A0
|
|||
|
CMPI CLSENMY|TYPORBL,A0
|
|||
|
JREQ DIECHU2
|
|||
|
CMPI CLSENMY|TYPORB,A0
|
|||
|
JREQ DIECHU2
|
|||
|
; CMPI CLSNEUT|TYPMINE,A0
|
|||
|
; JREQ DIECHU2
|
|||
|
; CMPI CLSNEUT|TYPCHSR,A0
|
|||
|
; JREQ DIECHU2
|
|||
|
; CMPI CLSNEUT|TYPTANK,A0
|
|||
|
; JREQ DIECHU2
|
|||
|
; ANDI 0FFFFH,A0
|
|||
|
; CMPI CLSENMY|TYPMUT,A0
|
|||
|
; JREQ DIECHU2
|
|||
|
;OTHER CHUNK DEATHS HERE.
|
|||
|
|
|||
|
;FOR CHUNKS, SKIP FOLLOWING LINES OF FRANIM
|
|||
|
SLEEP 05
|
|||
|
MOVK 1,A1
|
|||
|
MOVI LSPN,A9
|
|||
|
JSRP FRANIM
|
|||
|
DIECHU2
|
|||
|
CLR A0
|
|||
|
MOVE A0,*A8(OXVAL),L
|
|||
|
|
|||
|
HG SLEEP 1
|
|||
|
MOVE *A13(TSO_PRC),A7,L
|
|||
|
MOVE *A7(DEAD),A0
|
|||
|
JRNZ HG
|
|||
|
MOVI PWK_RGT,A10 ;INIT FRANIM SCRIPT RESET
|
|||
|
MOVB *A7(PNUM),A0
|
|||
|
CMPI 1,A0
|
|||
|
JREQ HGY
|
|||
|
MOVI PWK_LFT,A10 ;INIT FRANIM SCRIPT RESET
|
|||
|
HGY MOVE A10,A9 ;FRANIM NEEDS IT IN A9
|
|||
|
|
|||
|
SLND CALLA UPDATE_PLYRXY
|
|||
|
JRC DO_FRANI
|
|||
|
; PLAYER IS NOT TOUCHING MOVEMENT STICK!
|
|||
|
; SET STAND FLAG, AND PNT TO CORRECT IMAGE
|
|||
|
|
|||
|
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
|
|||
|
;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
|
|||
|
ANDI 01FH,A0
|
|||
|
SLL 5,A0
|
|||
|
; PLAYER WILL BEGIN FRANIM OF SHOOTING IN PROPER DIRECTION
|
|||
|
ADDI SHOOT_LEG_LIST,A0
|
|||
|
MOVE *A0,A9,L ;MOVE TABLE VALUE INTO A9
|
|||
|
;THIS IS NEW FRANIM SCRIPT PNTR
|
|||
|
MOVI 1,A1
|
|||
|
JSRP FRANIM
|
|||
|
JRUC SL_1
|
|||
|
|
|||
|
CONT_1:
|
|||
|
MOVE *A7(P_DIR),A0 ;GET TORSO INFO
|
|||
|
ORI 08000H,A0
|
|||
|
MOVE A0,*A7(P_DIR) ;GET TORSO INFO
|
|||
|
ANDI 01FH,A0
|
|||
|
SLL 5,A0
|
|||
|
MOVI STAND_TBL_L,A2
|
|||
|
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 SLEEP 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
|
|||
|
MOVI REV_WALK_LIST,A2 ;MOVE BASE TABLE ADDRESS INTO A2
|
|||
|
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
|
|||
|
ANDI 01FH,A4 ;JUST IN CASE HE WAS STANDING STILL
|
|||
|
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
|
|||
|
MOVI WALK_LIST,A2 ;MOVE BASE TABLE ADDRESS INTO A2
|
|||
|
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
|
|||
|
;
|
|||
|
; UPDATE PLAYER 1 X Y POSITION BASED ON JOYSTICK INPUT
|
|||
|
;
|
|||
|
UPDATE_PLYRXY:
|
|||
|
;
|
|||
|
; READ MOVEMENT JOYSTICK FOR PLAYER
|
|||
|
;A7=TSO_PRC PROCESS PNTR
|
|||
|
;
|
|||
|
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
|
|||
|
MOVE *A7(RGTBND),A0,L
|
|||
|
CMP A0,A4
|
|||
|
JRLT YS1
|
|||
|
MOVE @GAMSTATE,A0
|
|||
|
CMPI ININTRO,A0
|
|||
|
JRNE TSTDN
|
|||
|
YS1
|
|||
|
ADDI 04,A3
|
|||
|
|
|||
|
PLYR_LFT:
|
|||
|
BTST BMPLEFT,A2
|
|||
|
JRZ TSTDN
|
|||
|
MOVE *A7(LFTBND),A0,L
|
|||
|
CMP A0,A4
|
|||
|
JRGT YS2
|
|||
|
MOVE @GAMSTATE,A0
|
|||
|
CMPI ININTRO,A0
|
|||
|
JRNE TSTDN
|
|||
|
YS2
|
|||
|
ADDI 7,A3
|
|||
|
|
|||
|
TSTDN:
|
|||
|
BTST BMPDOWN,A2
|
|||
|
JRZ PLYR_UP
|
|||
|
MOVE *A7(DNBND),A0,L
|
|||
|
CMP A0,A5
|
|||
|
JRLT YS3
|
|||
|
MOVE @GAMSTATE,A0
|
|||
|
CMPI ININTRO,A0
|
|||
|
JRNE TEST_OUT
|
|||
|
YS3
|
|||
|
ADDI 2,A3
|
|||
|
|
|||
|
PLYR_UP:
|
|||
|
BTST BMPUP,A2
|
|||
|
JRZ TEST_OUT
|
|||
|
MOVE *A7(UPBND),A0,L
|
|||
|
CMP A0,A5
|
|||
|
JRGT YS4
|
|||
|
MOVE @GAMSTATE,A0
|
|||
|
CMPI ININTRO,A0
|
|||
|
JRNE TEST_OUT
|
|||
|
YS4
|
|||
|
ADDI 1,A3
|
|||
|
;
|
|||
|
TEST_OUT:
|
|||
|
; ACTUALLY UPDATE PLAYERS LEGS TO NEW POSITION
|
|||
|
;
|
|||
|
CMPI 9,A3
|
|||
|
JRLS OKAYSTK
|
|||
|
MOVK 9,A3
|
|||
|
OKAYSTK
|
|||
|
MOVE A3,A5 ;KEEP IN A5 FOR LATER CMP WITH P_DIR
|
|||
|
JRNZ T1
|
|||
|
CLRC
|
|||
|
RETS
|
|||
|
T1:
|
|||
|
;
|
|||
|
SETC ;WE WILL FRANI
|
|||
|
; STICK HAS BEEN TOUCHED
|
|||
|
RETS
|
|||
|
|
|||
|
; 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
|
|||
|
;
|
|||
|
STUFF_VEL:
|
|||
|
MOVE *A13(SHOECNT),A0
|
|||
|
JRZ SV
|
|||
|
DEC A0
|
|||
|
MOVE A0,*A13(SHOECNT)
|
|||
|
|
|||
|
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:
|
|||
|
;A9=1 IF START THIS PLAYER TO LEFT OF SCREEN,2 IF TO RIGHT, 0 IF NEITHER
|
|||
|
MOVI 0D00000H,A0
|
|||
|
MOVI 07A0000H,A1
|
|||
|
|
|||
|
MOVE @GAMSTATE,A2
|
|||
|
CMPI INAMODE,A2
|
|||
|
JRZ AMODE1
|
|||
|
CMPI 1,A9
|
|||
|
JRNE V1
|
|||
|
MOVI 080000H,A0
|
|||
|
MOVI 0620000H,A1
|
|||
|
JRUC AMODE1
|
|||
|
V1 CMPI 2,A9
|
|||
|
JRNE V2
|
|||
|
MOVI 01900000H,A0
|
|||
|
MOVI 0620000H,A1
|
|||
|
JRUC AMODE1
|
|||
|
|
|||
|
V2
|
|||
|
;FRESH START IN TVSET AREA
|
|||
|
MOVB *A13(PNUM),A0
|
|||
|
CMPI 1,A0
|
|||
|
JREQ PY1
|
|||
|
MOVI 01300000H,A0
|
|||
|
MOVI 0250000H,A1
|
|||
|
JRUC AMODE1
|
|||
|
|
|||
|
PY1 MOVI 0670000H,A0
|
|||
|
MOVI 0250000H,A1
|
|||
|
AMODE1:
|
|||
|
;CHECK TO SEE IF THIS IS PLAYER 1 OR 2
|
|||
|
CALLR GETP
|
|||
|
MOVI 158,A3
|
|||
|
MOVI DMAWNZ,A4
|
|||
|
CLR A6
|
|||
|
CLR A7
|
|||
|
CALLA BEGINOBJ
|
|||
|
RETS
|
|||
|
|
|||
|
STRT_PLYR_TORSO:
|
|||
|
;A9=1 IF START THIS PLAYER TO LEFT OF SCREEN,2 IF TO RIGHT, 0 IF NIETHER
|
|||
|
MOVI 0D00000H,A0
|
|||
|
MOVI 07A0000H,A1
|
|||
|
MOVE @GAMSTATE,A2
|
|||
|
CMPI INAMODE,A2
|
|||
|
JRZ AMODE2
|
|||
|
|
|||
|
CMPI 1,A9
|
|||
|
JRNE V1A
|
|||
|
MOVI 080000H,A0
|
|||
|
MOVI 0620000H,A1
|
|||
|
JRUC AMODE2
|
|||
|
V1A CMPI 2,A9
|
|||
|
JRNE V2A
|
|||
|
MOVI 01900000H,A0
|
|||
|
MOVI 0620000H,A1
|
|||
|
JRUC AMODE2
|
|||
|
|
|||
|
V2A
|
|||
|
MOVB *A13(PNUM),A0
|
|||
|
CMPI 1,A0
|
|||
|
JREQ PY1A
|
|||
|
MOVI 0D80000H,A0
|
|||
|
MOVI 0400000H,A1
|
|||
|
JRUC AMODE2
|
|||
|
PY1A MOVI 0D00000H,A0
|
|||
|
MOVI 0380000H,A1
|
|||
|
AMODE2:
|
|||
|
;CHECK TO SEE IF THIS IS PLAYER 1 OR 2
|
|||
|
CALLR GETP
|
|||
|
; MOVI 158,A3
|
|||
|
MOVI 159,A3
|
|||
|
MOVI DMAWNZ+M_NOCOLL,A4
|
|||
|
; MOVI CLSNEUT|TYPNEUT,A5
|
|||
|
; MOVI CLSPLYR|TYPPLYR|SUBPL_1,A5
|
|||
|
CLR A6
|
|||
|
CLR A7
|
|||
|
CALLA BEGINOBJ
|
|||
|
RETS
|
|||
|
|
|||
|
GETP MOVB *A13(PNUM),A2
|
|||
|
CMPI 1,A2
|
|||
|
JREQ PYX
|
|||
|
MOVI BLACK,A2 ;TURN ON PLAYER 2 (BLACK)
|
|||
|
MOVI CLSPLYR|TYPPLYR|SUBPL_2,A5
|
|||
|
JRUC PY2
|
|||
|
PYX MOVI P1WG6T1,A2
|
|||
|
MOVI CLSPLYR|TYPPLYR|SUBPL_1,A5
|
|||
|
PY2 RETS
|
|||
|
;
|
|||
|
;NABBED FROM NARC CODE
|
|||
|
;
|
|||
|
;GET ANIMATION DIRECTION BASED ON THE VELOCITIES IN A8
|
|||
|
;A8=OBJECT
|
|||
|
;RETURNS:
|
|||
|
;A0=DIR OF TRAVEL
|
|||
|
;701
|
|||
|
;6 2
|
|||
|
;543
|
|||
|
GETADIR:
|
|||
|
MOVE *A8(OXVEL),A1,L
|
|||
|
MOVE *A8(OYVEL),A2,L
|
|||
|
;040
|
|||
|
;0 0
|
|||
|
;030
|
|||
|
|
|||
|
GETADIR2:
|
|||
|
MOVE A1,A3
|
|||
|
MOVE A2,A4
|
|||
|
ABS A3 ;UNSIGNED COMPARE
|
|||
|
ABS A4
|
|||
|
MOVE A3,A5
|
|||
|
ADD A4,A5
|
|||
|
JRNE GAD1
|
|||
|
CLR A3 ;STANDING CASE
|
|||
|
JRUC GETADX
|
|||
|
GAD1:
|
|||
|
MOVK 3,A5
|
|||
|
MOVK 3,A7
|
|||
|
MPYU A3,A5 ;CALC 3*X
|
|||
|
MPYU A4,A7 ;CALC 3*Y
|
|||
|
CMP A7,A3 ;XV GT 3*YV ?
|
|||
|
JRHS GADX
|
|||
|
CMP A5,A4
|
|||
|
JRHS GADY
|
|||
|
;DIAGONAL XY VELOCITY CASE
|
|||
|
SRL 31,A1 ;4 QUADRANTS= 0-3
|
|||
|
SRL 31,A2
|
|||
|
SLL 1,A2
|
|||
|
ADD A1,A2
|
|||
|
ADDK 5,A2
|
|||
|
MOVE A2,A3
|
|||
|
JRUC GETADX
|
|||
|
;X VELOCITY CASE
|
|||
|
GADX:
|
|||
|
MOVK 1,A3
|
|||
|
MOVE A1,A1
|
|||
|
JRNN GETADX ;XV + CASE
|
|||
|
MOVK 2,A3
|
|||
|
JRUC GETADX
|
|||
|
;Y VELOCITY CASE
|
|||
|
GADY:
|
|||
|
MOVK 3,A3
|
|||
|
MOVE A2,A2
|
|||
|
JRNN GETADX
|
|||
|
MOVK 4,A3
|
|||
|
;HAVE OFFSET IN A3
|
|||
|
GETADX:
|
|||
|
MOVE A3,A0
|
|||
|
RETS
|
|||
|
|
|||
|
;NABBED FROM EUGENE JARVIS FOOTBALL CODE
|
|||
|
;
|
|||
|
;SEEK XY OF ACTIVE OBJECT
|
|||
|
;A8=OBJECT SEEKING
|
|||
|
;A0=OBJECT SEEKED
|
|||
|
;
|
|||
|
;RETURNS
|
|||
|
;A5=X VEL
|
|||
|
;A6=Y VEL
|
|||
|
XYSKOBJ:
|
|||
|
MOVE *A0(OXPOS),A5,W
|
|||
|
MOVE *A0(OYPOS),A6,W
|
|||
|
;
|
|||
|
;SEEK X-Y COORDINATE
|
|||
|
;A8=OBJECT SEEKING
|
|||
|
;A5=X COORD TO SEEK
|
|||
|
;A6=Y COORD TO SEEK
|
|||
|
|
|||
|
;RETURNS
|
|||
|
;A5=X VEL
|
|||
|
;A6=Y VEL
|
|||
|
;
|
|||
|
;NABBED FROM EUGENE JARVIS FOOTBALL CODE
|
|||
|
;
|
|||
|
XYSEEK:
|
|||
|
MMTM SP,A0,A1,A2,A3,A4,A7
|
|||
|
MOVE *A8(OXPOS),A3,W
|
|||
|
MOVE *A8(OYPOS),A4,W
|
|||
|
SUB A3,A5 ;FIND DIFFERENCE
|
|||
|
SUB A4,A6
|
|||
|
MOVE A6,A3 ;
|
|||
|
MOVE A5,A1
|
|||
|
ABS A5
|
|||
|
ABS A6
|
|||
|
ADD A5,A6 ;CALC SUM ABS(DX+DY)
|
|||
|
SLL 16,A1 ;SHIFT TO ACCOMODATE FRACTIONAL VELOCITY
|
|||
|
SLL 16,A3
|
|||
|
DIVS A6,A1 ;GENERATE SPEED RATIOS
|
|||
|
DIVS A6,A3
|
|||
|
MOVE A1,A2
|
|||
|
ABS A2
|
|||
|
SLL 16,A2
|
|||
|
SRL 28,A2 ;CORRECT FOR SQUARE ROOT
|
|||
|
SLL 4,A2
|
|||
|
ADDI XYSQTAB,A2
|
|||
|
MOVE *A2,A2,W
|
|||
|
; MOVI 7,A2
|
|||
|
MOVI 1,A5 ;MULTIPLY BY VELOCITY FACTOR
|
|||
|
; MOVI 2,A5 ;MULTIPLY BY VELOCITY FACTOR
|
|||
|
MPYU A2,A5
|
|||
|
MPYS A5,A3
|
|||
|
MPYS A1,A5 ;FINAL X VEL
|
|||
|
SRA 4,A3
|
|||
|
SRA 4,A5
|
|||
|
MOVE A3,A6 ;FINAL Y VEL
|
|||
|
MMFM SP,A0,A1,A2,A3,A4,A7
|
|||
|
RETS
|
|||
|
|
|||
|
;CORRECT FOR ANGULAR VELOCITIES
|
|||
|
XYSQTAB:
|
|||
|
.WORD >20-28,>21-28,>22-28,>23-28,>24-28,>25-28,>26-28,>27-28
|
|||
|
.WORD >27-28,>26-28,>25-28,>24-28,>23-28,>22-28,>21-28,>20-28
|
|||
|
;
|
|||
|
;SEEK X-Y COORDINATE
|
|||
|
;A8=OBJECT SEEKING
|
|||
|
;A5=X COORD TO SEEK
|
|||
|
;A6=Y COORD TO SEEK
|
|||
|
|
|||
|
;RETURNS
|
|||
|
;A5=X VEL
|
|||
|
;A6=Y VEL
|
|||
|
;
|
|||
|
;NABBED FROM EUGENE JARVIS FOOTBALL CODE
|
|||
|
;
|
|||
|
XYSEEK2:
|
|||
|
MOVE *A8(OXPOS),A3,W
|
|||
|
MOVE *A8(OYPOS),A4,W
|
|||
|
SUB A3,A5 ;FIND DIFFERENCE
|
|||
|
SUB A4,A6
|
|||
|
MOVE A6,A3 ;
|
|||
|
MOVE A5,A1
|
|||
|
ABS A5
|
|||
|
ABS A6
|
|||
|
ADD A5,A6 ;CALC SUM ABS(DX+DY)
|
|||
|
SLL 16,A1 ;SHIFT TO ACCOMODATE FRACTIONAL VELOCITY
|
|||
|
SLL 16,A3
|
|||
|
DIVS A6,A1 ;GENERATE SPEED RATIOS
|
|||
|
DIVS A6,A3
|
|||
|
MOVI 7AH,A5 ;MULTIPLY BY VELOCITY FACTOR
|
|||
|
; MOVI 6AH,A5 ;MULTIPLY BY VELOCITY FACTOR
|
|||
|
MPYS A5,A3
|
|||
|
MPYS A1,A5 ;FINAL X VEL
|
|||
|
SRA 4,A3
|
|||
|
SRA 4,A5
|
|||
|
MOVE A3,A6 ;FINAL Y VEL
|
|||
|
RETS
|
|||
|
|
|||
|
******************************************************************************
|
|||
|
;
|
|||
|
; INITIALIZING TABLES FOR ARENA, PLAYERS, ETC.
|
|||
|
;
|
|||
|
******************************************************************************
|
|||
|
;
|
|||
|
WALK_LIST:
|
|||
|
.LONG PWK_UP,PWK_UP,PWK_DN,PWK_UP,PWK_RGT,PWK_UPRGT,PWK_DNRGT,PWK_LFT
|
|||
|
.LONG PWK_UPLFT,PWK_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
|
|||
|
; 1
|
|||
|
; 8 5
|
|||
|
;7 4
|
|||
|
; 9 6
|
|||
|
; 2
|
|||
|
LISTWHAT:
|
|||
|
.LONG WHATLST1,WHATLST2,WHATLST3,WHATLST4,WHATLST5
|
|||
|
WHATLST1: ;NORMAL
|
|||
|
.LONG SHOOT_LIST2,SHOOT_LIST2,SHOOT_LIST2,SHOOT_LIST,SHOOT_LIST
|
|||
|
.LONG SHOOT_LIST,SHOOT_LIST,SHOOT_LIST,SHOOT_LIST,SHOOT_LIST
|
|||
|
WHATLST2: ;SPRAY
|
|||
|
.LONG SHOOT_LIST2,SHOOT2_LIST2,SHOOT2_LIST2,SHOOT2_LIST,SHOOT2_LIST3
|
|||
|
.LONG SHOOT2_LIST,SHOOT2_LIST,SHOOT2_LIST,SHOOT2_LIST,SHOOT2_LIST
|
|||
|
WHATLST3: ;POD
|
|||
|
.LONG SHOOT_LIST2,SHOOT3_LIST2,SHOOT3_LIST2,SHOOT3_LIST,SHOOT3_LIST3
|
|||
|
.LONG SHOOT3_LIST,SHOOT3_LIST,SHOOT3_LIST,SHOOT3_LIST,SHOOT3_LIST
|
|||
|
WHATLST4: ;GRENADES
|
|||
|
.LONG SHOOT_LIST2,SHOOT4_LIST2,SHOOT4_LIST2,SHOOT4_LIST,SHOOT4_LIST
|
|||
|
.LONG SHOOT4_LIST,SHOOT4_LIST,SHOOT4_LIST,SHOOT4_LIST,SHOOT4_LIST
|
|||
|
WHATLST5: ;NON STOPPING BULLET
|
|||
|
.LONG SHOOT_LIST2,SHOOT5_LIST2,SHOOT5_LIST2,SHOOT5_LIST,SHOOT5_LIST3
|
|||
|
.LONG SHOOT5_LIST,SHOOT5_LIST,SHOOT5_LIST,SHOOT5_LIST,SHOOT5_LIST
|
|||
|
|
|||
|
SHOOT_LIST: ;NORMAL
|
|||
|
.LONG SHT_UP,SHT_UP,SHT_DN,SHT_UP,SHT_RGT,SHT_UPRGT,SHT_DNRGT,SHT_LFT
|
|||
|
.LONG SHT_UPLFT,SHT_DNLFT
|
|||
|
SHOOT_LIST2: ;NORMAL BUT ADJUSTING FOR ODD ANI PNTS
|
|||
|
.LONG SHT_UP,SHT_UP,SHT_DN,SHT_UP,SHT_RGT2,SHT_UPRGT,SHT_DNRGT2,SHT_LFT2
|
|||
|
.LONG SHT_UPLFT,SHT_DNLFT
|
|||
|
SHOOT2_LIST: ;SPRAY
|
|||
|
.LONG SHT_UP,SHT2_UP,SHT2_DN,SHT_UP,SHT2_RGT,SHT2_UPRGT,SHT2_DNRGT,SHT2_LFT
|
|||
|
.LONG SHT2_UPLFT,SHT2_DNLFT
|
|||
|
SHOOT2_LIST2: ;SPRAY BUT ADJUSTING FOR ODD ANI PNTS
|
|||
|
.LONG SHT_UP,SHT2_UP,SHT2_DN,SHT_UP,SHT2_RGT2,SHT2_UPRGT,SHT2_DNRGT,SHT2_LFT2
|
|||
|
.LONG SHT2_UPLFT,SHT2_DNLFT
|
|||
|
SHOOT2_LIST3: ;SPRAY BUT ADJUSTING FOR ODD ANI PNTS
|
|||
|
.LONG SHT_UP,SHT2_UP,SHT2_DN2,SHT_UP,SHT2_RGT,SHT2_UPRGT,SHT2_DNRGT,SHT2_LFT
|
|||
|
.LONG SHT2_UPLFT,SHT2_DNLFT
|
|||
|
SHOOT3_LIST: ;POD
|
|||
|
.LONG SHT_UP,SHT3_UP,SHT3_DN,SHT_UP,SHT3_RGT,SHT3_UPRGT,SHT3_DNRGT,SHT3_LFT
|
|||
|
.LONG SHT3_UPLFT,SHT3_DNLFT
|
|||
|
SHOOT3_LIST2: ;POD BUT ADJUSTING FOR ODD ANI PNTS
|
|||
|
.LONG SHT_UP,SHT3_UP,SHT3_DN,SHT_UP,SHT3_RGT2,SHT3_UPRGT,SHT3_DNRGT,SHT3_LFT2
|
|||
|
.LONG SHT3_UPLFT,SHT3_DNLFT
|
|||
|
SHOOT3_LIST3: ;POD BUT ADJUSTING FOR ODD ANI PNTS
|
|||
|
.LONG SHT_UP,SHT3_UP,SHT3_DN2,SHT_UP,SHT3_RGT,SHT3_UPRGT,SHT3_DNRGT,SHT3_LFT
|
|||
|
.LONG SHT3_UPLFT,SHT3_DNLFT
|
|||
|
SHOOT4_LIST: ;GRENADE
|
|||
|
.LONG SHT_UP,SHT4_UP,SHT4_DN,SHT_UP,SHT4_RGT,SHT4_UPRGT,SHT4_DNRGT,SHT4_LFT
|
|||
|
.LONG SHT4_UPLFT,SHT4_DNLFT
|
|||
|
SHOOT4_LIST2: ;GRENADE BUT ADJUSTING FOR ODD ANI PNTS
|
|||
|
.LONG SHT_UP,SHT4_UP,SHT4_DN,SHT_UP,SHT4_RGT2,SHT4_UPRGT,SHT4_DNRGT,SHT4_LFT2
|
|||
|
.LONG SHT4_UPLFT,SHT4_DNLFT
|
|||
|
SHOOT5_LIST: ;NON STOPPING BULLET
|
|||
|
.LONG SHT_UP,SHT5_UP,SHT5_DN,SHT_UP,SHT5_RGT,SHT5_UPRGT,SHT5_DNRGT,SHT5_LFT
|
|||
|
.LONG SHT5_UPLFT,SHT5_DNLFT
|
|||
|
SHOOT5_LIST2: ;NON STOPPING BULLET BUT ADJUSTING FOR ODD ANI PNTS
|
|||
|
.LONG SHT_UP,SHT5_UP,SHT5_DN,SHT_UP,SHT5_RGT2,SHT5_UPRGT,SHT5_DNRGT,SHT5_LFT
|
|||
|
.LONG SHT5_UPLFT,SHT5_DNLFT
|
|||
|
SHOOT5_LIST3: ;NON STOPPING BULLET BUT ADJUSTING FOR ODD ANI PNTS
|
|||
|
.LONG SHT_UP,SHT5_UP,SHT5_DN2,SHT_UP,SHT5_RGT,SHT5_UPRGT,SHT5_DNRGT,SHT5_LFT
|
|||
|
.LONG SHT5_UPLFT,SHT5_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
|
|||
|
|
|||
|
; 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
|
|||
|
|
|||
|
STAND_TBL_L:
|
|||
|
.LONG P1S12L1,P1S12L1,P1SH6L1,P1S12L1,P1SH9L1,P1S10L1,P1SH8L1,P1SH9L1
|
|||
|
.LONG P1S10L1,P1SH8L1
|
|||
|
|
|||
|
SHT_UP:
|
|||
|
.LONG P1S12T1
|
|||
|
.WORD FLIPBITS|4,0
|
|||
|
.LONG P1S12T2
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT_UPRGT:
|
|||
|
.LONG P1S10T1
|
|||
|
.WORD FLIPBITS|4,(M_FLIPH)
|
|||
|
.LONG P1S10T2
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT_UPLFT:
|
|||
|
.LONG P1S10T1
|
|||
|
.WORD FLIPBITS|4,0
|
|||
|
.LONG P1S10T2
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT_RGT:
|
|||
|
.LONG P1SH9T1
|
|||
|
.WORD FLIPBITS|4,(M_FLIPH)
|
|||
|
.LONG P1SH9T2
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT_RGT2:
|
|||
|
.LONG P1SH9T1A
|
|||
|
.WORD FLIPBITS|4,(M_FLIPH)
|
|||
|
.LONG P1SH9T2A
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT_LFT:
|
|||
|
.LONG P1SH9T1
|
|||
|
.WORD FLIPBITS|4,0
|
|||
|
.LONG P1SH9T2
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT_LFT2:
|
|||
|
.LONG P1SH9T1A
|
|||
|
.WORD FLIPBITS|4,0
|
|||
|
.LONG P1SH9T2A
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT_DN:
|
|||
|
.LONG P1SH6T1
|
|||
|
.WORD FLIPBITS|4,0
|
|||
|
.LONG P1SH6T2
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT_DNLFT:
|
|||
|
.LONG P1SH8T1
|
|||
|
.WORD FLIPBITS|4,0
|
|||
|
.LONG P1SH8T2
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT_DNRGT:
|
|||
|
.LONG P1SH8T1
|
|||
|
.WORD FLIPBITS|4,(M_FLIPH)
|
|||
|
.LONG P1SH8T2
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT_DNRGT2:
|
|||
|
.LONG P1SH8T1A
|
|||
|
.WORD FLIPBITS|4,(M_FLIPH)
|
|||
|
.LONG P1SH8T2A
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
|
|||
|
;SPRAY SHOOTING!
|
|||
|
SHT2_UP:
|
|||
|
.LONG P1SG12T2
|
|||
|
.WORD FLIPBITS|4,0
|
|||
|
.LONG P1SG12T3
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT2_UPRGT:
|
|||
|
.LONG P1SG10T2
|
|||
|
.WORD FLIPBITS|4,(M_FLIPH)
|
|||
|
.LONG P1SG10T3
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT2_UPLFT:
|
|||
|
.LONG P1SG10T2
|
|||
|
.WORD FLIPBITS|4,0
|
|||
|
.LONG P1SG10T3
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT2_RGT:
|
|||
|
.LONG P1SG9T2
|
|||
|
.WORD FLIPBITS|4,(M_FLIPH)
|
|||
|
.LONG P1SG9T3
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT2_RGT2:
|
|||
|
;'A' TYPE
|
|||
|
.LONG P1SG9T2A
|
|||
|
.WORD FLIPBITS|4,(M_FLIPH)
|
|||
|
.LONG P1SG9T3A
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT2_LFT:
|
|||
|
.LONG P1SG9T2
|
|||
|
.WORD FLIPBITS|4,0
|
|||
|
.LONG P1SG9T3
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT2_LFT2:
|
|||
|
;'A' TYPE
|
|||
|
.LONG P1SG9T2A
|
|||
|
.WORD FLIPBITS|4,0
|
|||
|
.LONG P1SG9T3A
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT2_DN:
|
|||
|
.LONG P1SG6T2
|
|||
|
.WORD FLIPBITS|4,0
|
|||
|
.LONG P1SG6T3
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT2_DN2:
|
|||
|
.LONG P1SG6T2A
|
|||
|
.WORD FLIPBITS|4,0
|
|||
|
.LONG P1SG6T3A
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT2_DNLFT:
|
|||
|
.LONG P1SG8T2
|
|||
|
.WORD FLIPBITS|4,0
|
|||
|
.LONG P1SG8T3
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT2_DNRGT:
|
|||
|
.LONG P1SG8T2
|
|||
|
.WORD FLIPBITS|4,(M_FLIPH)
|
|||
|
.LONG P1SG8T3
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
|
|||
|
;POD SHOOTING!
|
|||
|
SHT3_UP:
|
|||
|
.LONG P1B12T1
|
|||
|
.WORD FLIPBITS|3,0
|
|||
|
.LONG 0
|
|||
|
SHT3_UPRGT:
|
|||
|
.LONG P1B10T1
|
|||
|
.WORD FLIPBITS|3,(M_FLIPH)
|
|||
|
.LONG 0
|
|||
|
SHT3_UPLFT:
|
|||
|
.LONG P1B10T1
|
|||
|
.WORD FLIPBITS|3,0
|
|||
|
.LONG 0
|
|||
|
SHT3_RGT:
|
|||
|
.LONG P1B9T1
|
|||
|
.WORD FLIPBITS|3,(M_FLIPH)
|
|||
|
.LONG 0
|
|||
|
SHT3_RGT2:
|
|||
|
;'A' TYPE
|
|||
|
.LONG P1B9T1A
|
|||
|
.WORD FLIPBITS|3,(M_FLIPH)
|
|||
|
.LONG 0
|
|||
|
SHT3_LFT:
|
|||
|
.LONG P1B9T1
|
|||
|
.WORD FLIPBITS|3,0
|
|||
|
.LONG 0
|
|||
|
SHT3_LFT2:
|
|||
|
;'A' TYPE
|
|||
|
.LONG P1B9T1A
|
|||
|
.WORD FLIPBITS|3,0
|
|||
|
.LONG 0
|
|||
|
SHT3_DN:
|
|||
|
.LONG P1B6T1
|
|||
|
.WORD FLIPBITS|3,0
|
|||
|
.LONG 0
|
|||
|
SHT3_DN2:
|
|||
|
.LONG P1B6T1A
|
|||
|
.WORD FLIPBITS|3,0
|
|||
|
.LONG 0
|
|||
|
SHT3_DNLFT:
|
|||
|
.LONG P1B8T1
|
|||
|
.WORD FLIPBITS|3,0
|
|||
|
.LONG 0
|
|||
|
SHT3_DNRGT:
|
|||
|
.LONG P1B8T1
|
|||
|
.WORD FLIPBITS|3,(M_FLIPH)
|
|||
|
.LONG 0
|
|||
|
|
|||
|
;GRENADE SHOOTING
|
|||
|
SHT4_UP:
|
|||
|
.LONG P1GG12T1
|
|||
|
.WORD FLIPBITS|4,0
|
|||
|
.LONG P1GG12T2
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT4_UPRGT:
|
|||
|
.LONG P1GG10T1
|
|||
|
.WORD FLIPBITS|4,(M_FLIPH)
|
|||
|
.LONG P1GG10T2
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT4_UPLFT:
|
|||
|
.LONG P1GG10T1
|
|||
|
.WORD FLIPBITS|4,0
|
|||
|
.LONG P1GG10T2
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT4_RGT:
|
|||
|
.LONG P1GG9T1
|
|||
|
.WORD FLIPBITS|4,(M_FLIPH)
|
|||
|
.LONG P1GG9T2
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT4_RGT2:
|
|||
|
;'A' VIEW
|
|||
|
.LONG P1GG9T1A
|
|||
|
.WORD FLIPBITS|4,(M_FLIPH)
|
|||
|
.LONG P1GG9T2A
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT4_LFT:
|
|||
|
.LONG P1GG9T1
|
|||
|
.WORD FLIPBITS|4,0
|
|||
|
.LONG P1GG9T2
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT4_LFT2:
|
|||
|
;'A' VIEW
|
|||
|
.LONG P1GG9T1A
|
|||
|
.WORD FLIPBITS|4,0
|
|||
|
.LONG P1GG9T2A
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT4_DN:
|
|||
|
.LONG P1GG6T1
|
|||
|
.WORD FLIPBITS|4,0
|
|||
|
.LONG P1GG6T2
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT4_DNLFT:
|
|||
|
.LONG P1GG8T1
|
|||
|
.WORD FLIPBITS|4,0
|
|||
|
.LONG P1GG8T2
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
SHT4_DNRGT:
|
|||
|
.LONG P1GG8T1
|
|||
|
.WORD FLIPBITS|4,(M_FLIPH)
|
|||
|
.LONG P1GG8T2
|
|||
|
.WORD 4
|
|||
|
.LONG 0
|
|||
|
|
|||
|
;NON STOPPING BULLET SHOOTING
|
|||
|
SHT5_UP:
|
|||
|
.LONG P1GL12T1
|
|||
|
.WORD FLIPBITS|9,0
|
|||
|
.LONG 0
|
|||
|
SHT5_UPRGT:
|
|||
|
.LONG P1GL10T1
|
|||
|
.WORD FLIPBITS|9,(M_FLIPH)
|
|||
|
.LONG 0
|
|||
|
SHT5_UPLFT:
|
|||
|
.LONG P1GL10T1
|
|||
|
.WORD FLIPBITS|9,0
|
|||
|
.LONG 0
|
|||
|
SHT5_RGT:
|
|||
|
.LONG P1GL9T1
|
|||
|
.WORD FLIPBITS|9,(M_FLIPH)
|
|||
|
.LONG 0
|
|||
|
SHT5_RGT2:
|
|||
|
;'A' VIEW
|
|||
|
.LONG P1GL9T1A
|
|||
|
.WORD FLIPBITS|9,(M_FLIPH)
|
|||
|
.LONG 0
|
|||
|
SHT5_LFT:
|
|||
|
.LONG P1GL9T1
|
|||
|
.WORD FLIPBITS|9,0
|
|||
|
.LONG 0
|
|||
|
;SHT5_LFT2:
|
|||
|
;;'A' VIEW
|
|||
|
; .LONG P1GL9T1A
|
|||
|
; .WORD FLIPBITS|9,0
|
|||
|
; .LONG 0
|
|||
|
SHT5_DN:
|
|||
|
.LONG P1GL6T1
|
|||
|
.WORD FLIPBITS|9,0
|
|||
|
.LONG 0
|
|||
|
SHT5_DN2:
|
|||
|
.LONG P1GL6T1A
|
|||
|
.WORD FLIPBITS|9,0
|
|||
|
.LONG 0
|
|||
|
SHT5_DNLFT:
|
|||
|
.LONG P1GL8T1
|
|||
|
.WORD FLIPBITS|9,0
|
|||
|
.LONG 0
|
|||
|
SHT5_DNRGT:
|
|||
|
.LONG P1GL8T1
|
|||
|
.WORD FLIPBITS|9,(M_FLIPH)
|
|||
|
.LONG 0
|
|||
|
|
|||
|
L_SHT_UP:
|
|||
|
.LONG P1S12L1
|
|||
|
.WORD FLIPBITS|1,0
|
|||
|
.LONG 0
|
|||
|
L_SHT_UPRGT:
|
|||
|
.LONG P1S10L1
|
|||
|
.WORD FLIPBITS|1,(M_FLIPH)
|
|||
|
.LONG 0
|
|||
|
L_SHT_UPLFT:
|
|||
|
.LONG P1S10L1
|
|||
|
.WORD FLIPBITS|1,0
|
|||
|
.LONG 0
|
|||
|
L_SHT_RGT:
|
|||
|
.LONG P1SH9L1
|
|||
|
.WORD FLIPBITS|1,(M_FLIPH)
|
|||
|
.LONG 0
|
|||
|
L_SHT_LFT:
|
|||
|
.LONG P1SH9L1
|
|||
|
.WORD FLIPBITS|1,0
|
|||
|
.LONG 0
|
|||
|
L_SHT_DN:
|
|||
|
.LONG P1SH6L1
|
|||
|
.WORD FLIPBITS|1,0
|
|||
|
.LONG 0
|
|||
|
L_SHT_DNLFT:
|
|||
|
.LONG P1SH8L1
|
|||
|
.WORD FLIPBITS|1,0
|
|||
|
.LONG 0
|
|||
|
L_SHT_DNRGT:
|
|||
|
.LONG P1SH8L1
|
|||
|
.WORD FLIPBITS|1,(M_FLIPH)
|
|||
|
.LONG 0
|
|||
|
|
|||
|
PWK_UP:
|
|||
|
.LONG P1R12L1
|
|||
|
.WORD FLIPBITS|3,0
|
|||
|
.LONG P1R12L2
|
|||
|
.WORD 3
|
|||
|
.LONG P1R12L3
|
|||
|
.WORD 3
|
|||
|
.LONG P1R12L4
|
|||
|
.WORD 3
|
|||
|
.LONG P1R12L5
|
|||
|
.WORD 3
|
|||
|
.LONG P1R12L6
|
|||
|
.WORD 3
|
|||
|
.LONG P1R12L7
|
|||
|
.WORD 3
|
|||
|
.LONG P1R12L8
|
|||
|
.WORD 3
|
|||
|
.LONG P1R12L9
|
|||
|
.WORD 3
|
|||
|
.LONG P1R12L9A
|
|||
|
.WORD 3
|
|||
|
.LONG 0
|
|||
|
PWK_DN:
|
|||
|
.LONG P1RN6L1
|
|||
|
.WORD FLIPBITS|3,0
|
|||
|
.LONG P1RN6L2
|
|||
|
.WORD 3
|
|||
|
.LONG P1RN6L3
|
|||
|
.WORD 3
|
|||
|
.LONG P1RN6L4
|
|||
|
.WORD 3
|
|||
|
.LONG P1RN6L5
|
|||
|
.WORD 3
|
|||
|
.LONG P1RN6L6
|
|||
|
.WORD 3
|
|||
|
.LONG P1RN6L7
|
|||
|
.WORD 3
|
|||
|
.LONG P1RN6L8
|
|||
|
.WORD 3
|
|||
|
.LONG P1RN6L9
|
|||
|
.WORD 3
|
|||
|
.LONG P1R6L9A
|
|||
|
.WORD 3
|
|||
|
.LONG 0
|
|||
|
PWK_RGT:
|
|||
|
.LONG P1R9L1
|
|||
|
.WORD FLIPBITS|3,(M_FLIPH)
|
|||
|
.LONG P1R9L2
|
|||
|
.WORD 3
|
|||
|
.LONG P1R9L3
|
|||
|
.WORD 3
|
|||
|
.LONG P1R9L4
|
|||
|
.WORD 3
|
|||
|
.LONG P1R9L5
|
|||
|
.WORD 3
|
|||
|
.LONG P1R9L6
|
|||
|
.WORD 3
|
|||
|
.LONG P1R9L7
|
|||
|
.WORD 3
|
|||
|
.LONG P1R9L8
|
|||
|
.WORD 3
|
|||
|
.LONG P1R9L9
|
|||
|
.WORD 3
|
|||
|
.LONG P1R9L9A
|
|||
|
.WORD 3
|
|||
|
.LONG 0
|
|||
|
PWK_UPRGT:
|
|||
|
.LONG P1R10L1
|
|||
|
.WORD FLIPBITS|3,(M_FLIPH)
|
|||
|
.LONG P1R10L2
|
|||
|
.WORD 3
|
|||
|
.LONG P1R10L3
|
|||
|
.WORD 3
|
|||
|
.LONG P1R10L4
|
|||
|
.WORD 3
|
|||
|
.LONG P1R10L5
|
|||
|
.WORD 3
|
|||
|
.LONG P1R10L6
|
|||
|
.WORD 3
|
|||
|
.LONG P1R10L7
|
|||
|
.WORD 3
|
|||
|
.LONG P1R10L8
|
|||
|
.WORD 3
|
|||
|
.LONG P1R10L9
|
|||
|
.WORD 3
|
|||
|
.LONG P1R10L9A
|
|||
|
.WORD 3
|
|||
|
.LONG 0
|
|||
|
PWK_DNLFT:
|
|||
|
.LONG P1RN8L1
|
|||
|
.WORD FLIPBITS|3,0
|
|||
|
.LONG P1RN8L2
|
|||
|
.WORD 3
|
|||
|
.LONG P1RN8L3
|
|||
|
.WORD 3
|
|||
|
.LONG P1RN8L4
|
|||
|
.WORD 3
|
|||
|
.LONG P1RN8L5
|
|||
|
.WORD 3
|
|||
|
.LONG P1RN8L6
|
|||
|
.WORD 3
|
|||
|
.LONG P1RN8L7
|
|||
|
.WORD 3
|
|||
|
.LONG P1RN8L8
|
|||
|
.WORD 3
|
|||
|
.LONG P1RN8L9
|
|||
|
.WORD 3
|
|||
|
.LONG P1R8L9A
|
|||
|
.WORD 3
|
|||
|
.LONG 0
|
|||
|
PWK_LFT:
|
|||
|
.LONG P1R9L1
|
|||
|
.WORD FLIPBITS|3,0
|
|||
|
.LONG P1R9L2
|
|||
|
.WORD 3
|
|||
|
.LONG P1R9L3
|
|||
|
.WORD 3
|
|||
|
.LONG P1R9L4
|
|||
|
.WORD 3
|
|||
|
.LONG P1R9L5
|
|||
|
.WORD 3
|
|||
|
.LONG P1R9L6
|
|||
|
.WORD 3
|
|||
|
.LONG P1R9L7
|
|||
|
.WORD 3
|
|||
|
.LONG P1R9L8
|
|||
|
.WORD 3
|
|||
|
.LONG P1R9L9
|
|||
|
.WORD 3
|
|||
|
.LONG P1R9L9A
|
|||
|
.WORD 3
|
|||
|
.LONG 0
|
|||
|
PWK_UPLFT:
|
|||
|
.LONG P1R10L1
|
|||
|
.WORD FLIPBITS|3,0
|
|||
|
.LONG P1R10L2
|
|||
|
.WORD 3
|
|||
|
.LONG P1R10L3
|
|||
|
.WORD 3
|
|||
|
.LONG P1R10L4
|
|||
|
.WORD 3
|
|||
|
.LONG P1R10L5
|
|||
|
.WORD 3
|
|||
|
.LONG P1R10L6
|
|||
|
.WORD 3
|
|||
|
.LONG P1R10L7
|
|||
|
.WORD 3
|
|||
|
.LONG P1R10L8
|
|||
|
.WORD 3
|
|||
|
.LONG P1R10L9
|
|||
|
.WORD 3
|
|||
|
.LONG P1R10L9A
|
|||
|
.WORD 3
|
|||
|
.LONG 0
|
|||
|
PWK_DNRGT:
|
|||
|
.LONG P1RN8L1
|
|||
|
.WORD FLIPBITS|3,(M_FLIPH)
|
|||
|
.LONG P1RN8L2
|
|||
|
.WORD 3
|
|||
|
.LONG P1RN8L3
|
|||
|
.WORD 3
|
|||
|
.LONG P1RN8L4
|
|||
|
.WORD 3
|
|||
|
.LONG P1RN8L5
|
|||
|
.WORD 3
|
|||
|
.LONG P1RN8L6
|
|||
|
.WORD 3
|
|||
|
.LONG P1RN8L7
|
|||
|
.WORD 3
|
|||
|
.LONG P1RN8L8
|
|||
|
.WORD 3
|
|||
|
.LONG P1RN8L9
|
|||
|
.WORD 3
|
|||
|
.LONG P1R8L9A
|
|||
|
.WORD 3
|
|||
|
.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
|
|||
|
TSHK:
|
|||
|
.LONG SHOCK1
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK2
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK3
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK2
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK1
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK3
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK1
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK2
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK1
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK2
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK3
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK2
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK1
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK3
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK1
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK2
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK1
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK2
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK3
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK2
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK1
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK3
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK1
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK2
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK1
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK2
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK3
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK2
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK1
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK3
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK1
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK2
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK1
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK2
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK3
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK2
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK1
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK3
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK1
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK2
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK1
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK2
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK3
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK2
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK1
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK3
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK1
|
|||
|
.WORD 2
|
|||
|
.LONG SHOCK2
|
|||
|
.WORD 2
|
|||
|
.LONG 0
|
|||
|
DIELST:
|
|||
|
.LONG PDTH1
|
|||
|
.WORD FLIPBITS|4,0
|
|||
|
.LONG PDTH2
|
|||
|
.WORD 4
|
|||
|
.LONG PDTH3
|
|||
|
.WORD 4
|
|||
|
.LONG PDTH4
|
|||
|
.WORD 4
|
|||
|
.LONG PDTH5
|
|||
|
.WORD 4
|
|||
|
.LONG PDTH6
|
|||
|
.WORD 4
|
|||
|
.LONG PDTH7
|
|||
|
.WORD 4
|
|||
|
.LONG PDTH8
|
|||
|
.WORD 4
|
|||
|
.LONG PDTH9
|
|||
|
.WORD 6
|
|||
|
.LONG PDTH10
|
|||
|
.WORD 4
|
|||
|
.LONG PDTH11
|
|||
|
.WORD 4
|
|||
|
.LONG PDTH12
|
|||
|
.WORD 4
|
|||
|
.LONG PDTH13
|
|||
|
.WORD 4
|
|||
|
.LONG PDTH14
|
|||
|
.WORD 10
|
|||
|
.LONG PDTH15
|
|||
|
.WORD 4
|
|||
|
.LONG PDTH16
|
|||
|
.WORD 4
|
|||
|
.LONG PDTH17
|
|||
|
.WORD 4
|
|||
|
.LONG PDTH18
|
|||
|
.WORD 4
|
|||
|
.LONG PDTH19
|
|||
|
.WORD 4
|
|||
|
.LONG PDTH20
|
|||
|
.WORD 4
|
|||
|
.LONG PDTH21
|
|||
|
.WORD 4
|
|||
|
.LONG PDTH22
|
|||
|
.WORD 4
|
|||
|
.LONG PDTH23
|
|||
|
.WORD 4
|
|||
|
.LONG PDTH24
|
|||
|
.WORD 4
|
|||
|
.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
|
|||
|
;
|
|||
|
|
|||
|
WPNWALK:
|
|||
|
.LONG T_WALK_LIST,T_WALK_LIST2,T_WALK_LIST3
|
|||
|
.LONG T_WALK_LIST4,T_WALK_LIST5
|
|||
|
T_WALK_LIST: ;REGULAR GUN
|
|||
|
.LONG P1WG12T1,P1WG12T1,P1WG6T1,P1WG12T1,P1WG9T1,P1WG10T1,P1WG8T1,P1WG9T1
|
|||
|
.LONG P1WG10T1,P1WG8T1
|
|||
|
T_WALK_LIST2: ;SPRAY GUN
|
|||
|
.LONG P1WG12T1,P1SG12T1,P1SG6T1,P1WG12T1,P1SG9T1,P1SG10T1,P1SG8T1,P1SG9T1
|
|||
|
.LONG P1SG10T1,P1SG8T1
|
|||
|
T_WALK_LIST3: ;BACKPACK BOMBS
|
|||
|
.LONG P1WG12T1,P1B12T1,P1B6T1,P1WG12T1,P1B9T1,P1B10T1,P1B8T1,P1B9T1
|
|||
|
.LONG P1B10T1,P1B8T1
|
|||
|
T_WALK_LIST4: ;GRENADE
|
|||
|
.LONG P1WG12T1,P1GG12T1,P1GG6T1,P1WG12T1,P1GG9T1,P1GG10T1,P1GG8T1,P1GG9T1
|
|||
|
.LONG P1GG10T1,P1GG8T1
|
|||
|
T_WALK_LIST5: ;NON STOPPING BULLET
|
|||
|
.LONG P1WG12T1,P1GL12T1,P1GL6T1,P1WG12T1,P1GL9T1,P1GL10T1,P1GL8T1,P1GL9T1
|
|||
|
.LONG P1GL10T1,P1GL8T1
|
|||
|
|
|||
|
T_WALK_FLG:
|
|||
|
.LONG DMAWNZ+M_NOCOLL,DMAWNZ+M_NOCOLL,DMAWNZ+M_NOCOLL,DMAWNZ+M_NOCOLL,DMAWNZ+M_NOCOLL+M_FLIPH
|
|||
|
.LONG DMAWNZ+M_NOCOLL+M_FLIPH
|
|||
|
.LONG DMAWNZ+M_NOCOLL+M_FLIPH,DMAWNZ+M_NOCOLL
|
|||
|
.LONG DMAWNZ+M_NOCOLL,DMAWNZ+M_NOCOLL
|
|||
|
L_WALK_FLG:
|
|||
|
.LONG DMAWNZ+M_NOCOLL,DMAWNZ+0,DMAWNZ+0,DMAWNZ+M_NOCOLL,DMAWNZ+0+M_FLIPH
|
|||
|
.LONG DMAWNZ+0+M_FLIPH
|
|||
|
.LONG DMAWNZ+0+M_FLIPH,DMAWNZ+0
|
|||
|
.LONG DMAWNZ+0,DMAWNZ+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
|
|||
|
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* ERRORLOG - THIS SHOULD BE CALLED IN PLACE OF ANY JRxx $ *
|
|||
|
* IN CASE OF ERROR. IF WE ARE IN DEBUG MODE *
|
|||
|
* IT WILL HANG, IF NOT, THE ERROR WILL BE LOGGED *
|
|||
|
* AND IT WILL RETURN. *
|
|||
|
* A1 = RETURN ADDRESS OF CALLING ROUTINE *
|
|||
|
* A2 = ERROR CODE *
|
|||
|
**************************************************************************
|
|||
|
ERRORLOG
|
|||
|
MMTM SP,A2,A3,A4,A5,A6,A7
|
|||
|
SLL 16,A2
|
|||
|
ERRLOGG ;A8 IS IN A8
|
|||
|
|
|||
|
MOVE A13,A7 ;PROC. BLOCK IN A7
|
|||
|
MOVE *A7(PROCID),A6,W
|
|||
|
SLL 16,A6
|
|||
|
MOVE *A8(OID),A3,W
|
|||
|
MOVX A3,A6 ;A6 = [PROCID:*A8(OID)]
|
|||
|
|
|||
|
MOVE @CIRCUIT,A5,W
|
|||
|
SLL 16,A5
|
|||
|
MOVE @WAVE,A3,W
|
|||
|
MOVX A3,A5 ;A5 = [CIRCUIT#:WAVE#,)]
|
|||
|
|
|||
|
MOVI AUD1STRT,A4 ;PLAY #
|
|||
|
CALLR GETAUD4
|
|||
|
|
|||
|
SLL 16,A4
|
|||
|
MOVE *A0(OID),A3,W ;A4 = [STRT#:*A0(OID)]
|
|||
|
MOVX A3,A4
|
|||
|
|
|||
|
; MOVE @GAMSTATE,A3,W ;A2 = [STATUS:GAMSTATE]
|
|||
|
; MOVX A3,A2
|
|||
|
|
|||
|
MOVE @STATUS,A3,W ;A2 = [ERROR CODE:STATUS]
|
|||
|
MOVX A3,A2
|
|||
|
|
|||
|
MOVE *SP(0C0H),A3,L ;A3=GET THE RETURN ADDRESS
|
|||
|
; MOVE *SP(0E0H),A1,L ;A1=CALLING ADDRESS
|
|||
|
CALLA ADD_DUMP
|
|||
|
|
|||
|
; MOVE @SURVCNT,A2,W
|
|||
|
; INC A2 ;INCREMENT THE SURVIVAL COUNT
|
|||
|
; MOVE A2,@SURVCNT,W
|
|||
|
|
|||
|
MMFM SP,A2,A3,A4,A5,A6,A7
|
|||
|
RETS
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* GETAUD4 - GET AN AUDIT *
|
|||
|
* A4 = AUDIT # *
|
|||
|
* RETURNS: *
|
|||
|
* A4 = AUDIT *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
GETAUD4
|
|||
|
MMTM SP,A0,A1
|
|||
|
MOVE A4,A0
|
|||
|
CALLA GET_AUD
|
|||
|
CALLA DEF_PAGE ;POINT AT DEFAULT PAGE.
|
|||
|
MOVE A1,A4
|
|||
|
MMFM SP,A0,A1
|
|||
|
RETS
|
|||
|
|
|||
|
.END
|
|||
|
|
|||
|
|
|||
|
|