4373 lines
70 KiB
NASM
4373 lines
70 KiB
NASM
.FILE 'HULKS.ASM'
|
||
.TITLE 'ROBO-RAMA GAME PROGRAM'
|
||
.WIDTH 132
|
||
.OPTION B,D,L,T
|
||
.MNOLIST
|
||
|
||
;
|
||
; INITIATED: APRIL 26,1989
|
||
; MODIFIED: !
|
||
; SOFTWARE: MARK TURMELL
|
||
;
|
||
; COPYRIGHT (C) 1989 WILLIAMS ELECTRONICS GAMES, INC.
|
||
;
|
||
;
|
||
; GET THE SYSTEM STUFF
|
||
|
||
.INCLUDE "MPROC.EQU" ;MPROC EQUATES
|
||
.INCLUDE "DISP.EQU" ;DISPLAY PROC. EQUATES
|
||
.INCLUDE "\VIDEO\SYS\SYS.INC" ;Z UNIT SYSTEM EQUATES
|
||
.INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS DEFINITIONS
|
||
.INCLUDE "IMGTBL.GLO"
|
||
.INCLUDE "ROBO.EQU"
|
||
.INCLUDE "FINGRNT.TBL"
|
||
|
||
;
|
||
;SOUNDS EXTERNAL
|
||
;
|
||
.REF EXP1,UGH,HEXP,EXP3HI,EXP3,UGH2,UGH3
|
||
;
|
||
;SYMBOLS EXTERNALLY DEFINED
|
||
;
|
||
.REF GPALOBJ,GETFPAL,BLOE2,FACEON,ZOOM4,FRANIM_DIE
|
||
.REF ADJSTWTL,PCNT,CIRCUIT,GALTYP
|
||
.REF RANGRAND,FRANIM
|
||
.REF P2DATA,P1DATA,SCRADD2
|
||
.REF GAMSTATE,WAVEYX
|
||
.REF KEEPXY,RAMXY,WAVE_RAM,HALT,EHALT
|
||
.REF GETANIX
|
||
.REF SET_GATE_2,RANDPER,KP_LS,KP_RS,KP_TS
|
||
.REF WAVE
|
||
.REF KILOBJ
|
||
.REF DEXIT
|
||
.REF FROMDR,PLYROBJS,PLYRPRCS
|
||
;
|
||
;SYMBOLS DEFINED IN THIS FILE
|
||
;
|
||
.DEF OVALBLD,SWAPSK,BAT_PLYR,BLOW,NEWV,ARMOFF,ARMOFF2,TWOCHNKS
|
||
.DEF CHNKS2,SETUP_DIR,ADDRPCS,BIG3A,NEW_OV
|
||
.DEF SPAWN_HULKS,KILL_HULK,ONSCRN_HULKS,HULK_DN,HULK_CNT,BIG2,BIG3
|
||
.DEF RED_CARPETX,RED_CARPETY,PIECES,NXT,DRINF,MAXHULK,KILL_H2
|
||
.DEF INTO,INFOTBL,GET_WVADDR,DO_DIFF2,GET_VALID_XY,INTO16
|
||
.DEF ADDPCS2,ADPCS3,ADPCS1,KILL_H1,PCTOT,GET_VALID_DOOR
|
||
.DEF ADPCS2,ADPCS4
|
||
.DEF XVEL,YVEL
|
||
; .DEF BEGIN_OBJ,GENERIC_INIT,BEGIN_OBJ2
|
||
.DEF BOOM2,BOOM3,HULKTYP,SPINFLGS
|
||
|
||
;
|
||
;UNINITIALIZED RAM DEFINITIONS
|
||
;
|
||
.BSS GENERIC_INIT,7*32-16
|
||
.BSS MAXHULK,8 ;MAX NUMBER OF HULKS ALLOWED ON SCRN
|
||
.BSS TMP1,32
|
||
.BSS TMP2,32
|
||
.BSS NXT,8
|
||
.BSS LASTPC,32
|
||
.BSS PCTOT,8
|
||
.BSS HULK_CNT,16 ;TOTAL HULKS ON SCREEN
|
||
.BSS TMP,16
|
||
.BSS LDOOR_INFO,32*2
|
||
.BSS RDOOR_INFO,32*2
|
||
.BSS TDOOR_INFO,32*2
|
||
.BSS BDOOR_INFO,32*2
|
||
.BSS HULK_DN,16
|
||
.BSS HULKTYP,16
|
||
.BSS PCINFO,(32+16+32)*PCSMAX
|
||
|
||
;
|
||
;EQUATES FOR THIS FILE
|
||
;
|
||
;FOR STARTING AN OBJECT
|
||
XVAL .EQU GENERIC_INIT
|
||
YVAL .EQU XVAL+32
|
||
IMG .EQU YVAL+32
|
||
ZPOS .EQU IMG+32
|
||
FLAGS .EQU ZPOS+16
|
||
ID .EQU FLAGS+16
|
||
XVEL .EQU ID+16
|
||
YVEL .EQU XVEL+32
|
||
;
|
||
;HULK DATA STRUCTURE
|
||
;
|
||
HAGE .EQU PDATA ;OBJECT AGE
|
||
DIR .EQU PDATA+16 ;OBJECT DIRECTION
|
||
DIS .EQU PDATA+32 ;OBJECT DISTANCE COUNT
|
||
CFLAGS .EQU PDATA+48 ;CONTROL FLAGS FOR OBJECT
|
||
SK_DIR .EQU PDATA+64 ;SEEK DIR FOR SPIN
|
||
LEVEL .EQU PDATA+80 ;DIFFICULTY LEVEL FOR SPEEDS ETC.
|
||
HSPD .EQU PDATA+96
|
||
H2SPD .EQU PDATA+128
|
||
VSPD .EQU PDATA+160
|
||
V2SPD .EQU PDATA+192
|
||
KPAGE .EQU PDATA+224 ;UHW
|
||
OSCILLATE .EQU PDATA+240 ;UHW
|
||
SKPLYR .EQU PDATA+256 ;UHB PLAYER # TO PURSUE
|
||
IBAT .EQU PDATA+264 ;UHB BAT FLAG 0=OFF, 1=ON
|
||
|
||
;
|
||
MAXLEVEL .EQU 10
|
||
;
|
||
HSPEED .EQU 08000H
|
||
|
||
.TEXT
|
||
;
|
||
SPAWN_HULKS:
|
||
;SPAWN HULKS IS CALLED FROM 'WAVE OVERLORD' CODE WHICH DISPERSES
|
||
;BAD GUYS THROUGHOUT A WAVE
|
||
; MOVE @HULK_DN,A0
|
||
; JRNZ HULK_OUT
|
||
MOVE @HULK_CNT,A2 ;MOVE BYTE (# HULKS ON SCRN) TO A2
|
||
MOVB @MAXHULK,A3
|
||
CMP A3,A2 ;HULKS MAXED OUT?
|
||
JRGT HULK_OUT
|
||
MOVI 140,A0
|
||
CALLA RANDPER
|
||
JRC GANG
|
||
|
||
CREATE HULKPID,AHULK ;START ONE HULK
|
||
HULK_OUT:
|
||
RETS
|
||
DRINF .LONG 0,KP_LS,KP_RS,KP_TS
|
||
GANG:
|
||
CLR B0
|
||
MOVK 4,B1
|
||
CALLA RANGRAND
|
||
;ANDI WAVE # AND CAUSE GANGS TO USE DIFFERENT DOORS!
|
||
MOVE A0,A1
|
||
SLL 5,A1
|
||
ADDI DRINF,A1
|
||
MOVE *A1,A1,L
|
||
MOVB *A1,A1 ;GET KP_LS ETC.
|
||
CMPI 1,A1
|
||
JRNE GT
|
||
;DOOR THIS GANG WANTS TO ORIGINATE IS CLOSING RIGHT NOW!
|
||
;SHIFT THIS GANG TO BOTTOM DOOR
|
||
MOVK 4,A0
|
||
GT MOVI 58,A1
|
||
PUSH A0
|
||
CALLA SET_GATE_2
|
||
PULL A0
|
||
DEC A0 ;DOOR TO GANG UP ON!
|
||
MOVE A0,A8
|
||
MOVI HULK,A2
|
||
CALLR GET_WVADDR
|
||
MOVE *A0(16),A0 ;GET HULKS LEFT TO RELEASE THIS WAVE!
|
||
CMPI 16,A0 ;MIN HULKS BEFORE GANG
|
||
JRLT GH1 ;RELEASE ALL OF THEM!
|
||
MOVK 7,B0 ;# OF HULKS IN A GANG
|
||
MOVK 16,B1
|
||
CALLA RANGRAND
|
||
GH1:
|
||
PUSH A0
|
||
CREATE HULKPID,GHULK
|
||
PULL A0
|
||
DSJNE A0,GH1
|
||
RETS
|
||
|
||
ONSCRN_HULKS:
|
||
MOVE @CIRCUIT,A0
|
||
CMPI 2,A0
|
||
JRC REGS
|
||
;CIRCUIT 2/3 (LAST TWO!)
|
||
MOVE @WAVE,A0
|
||
SLL 3,A0
|
||
ADDI HTYP,A0
|
||
MOVB *A0,A0
|
||
MOVE A0,@HULKTYP,W
|
||
|
||
REGS MOVK 16,A9 ;31 IS HOW MANY MAKE UP CIRCLE AROUND
|
||
;PLAYER WALKWAY INTO ARENA
|
||
MOVE A9,@TMP
|
||
;A2=# OF HULKS TO CREATE ON SCREEN
|
||
OH1 PUSH A2 ;CREATE A BUNCH OF THEM
|
||
CREATE HULKPID,OHULK
|
||
PULL A2
|
||
DSJNE A2,OH1
|
||
RETS
|
||
HTYP
|
||
;0=REGULAR HULKS
|
||
;2=SNAKE GRUNTS
|
||
;3=TECH CREW
|
||
.BYTE 0,2,2,0,2,0,0,2,0,2,2,0,0,2,0,0,2,0,0,0,0,0,0,0,0
|
||
.EVEN
|
||
OHULK:
|
||
;OHULK IS CALLED AT THE START OF A WAVE TO PLACE X # OF HULKS ON SCREEN
|
||
;AT THE BEGINNING OF A WAVE
|
||
MOVE *A13(CFLAGS),A0
|
||
ORI 01H,A0
|
||
MOVE A0,*A13(CFLAGS),W ;HULK IS IN STANDING MODE AT FIRST
|
||
MOVI HULK,A11
|
||
CALLA GET_VALID_XY ;MAKE SURE NEW HULK IS NOT
|
||
;OVERLAPPING ANY EXISTING SHAPE
|
||
;WHICH IS ALREADY ON SCRN AT START
|
||
;A0 & A1 ARE SET UP
|
||
;ADD IN OFFSETS FOR THIS PARTICULAR ARENA
|
||
MOVE @GAMSTATE,A2
|
||
CMPI INAMODE,A2
|
||
JREQ DMD
|
||
MOVE @WAVEYX,A2,L
|
||
;A2=PACKED OFFSETS
|
||
MOVX A2,A3
|
||
SLL 16,A3
|
||
ADD A3,A0 ;ADJUSTED A0 XVAL!
|
||
ANDI 0FFFF0000H,A2
|
||
ADD A2,A1 ;ADJUSTED A1 YVAL!
|
||
DMD CALLR IH1 ;INIT HULK (BEGIN_OBJ)
|
||
CALLA BEGINOBJ2
|
||
MOVI 3,A0 ;HULK STARTS FACING RIGHT
|
||
MOVE A0,*A13(DIR)
|
||
CALLR SETUP_HULK ;INC CNT, SET DIR, SET DEATH FLAG, ETC
|
||
CALLR DO_DIFF
|
||
CALLR JUST_SK
|
||
CALLR GET_STAND ;HULK STANDS AND SPINS UNTIL A MATCH
|
||
;THIS GETS CORRECT OIMG, OFLAGS
|
||
;POSSIBLY SLEEP HERE??!?? TO ALLEVIATE OSCILLATE PROBLEM? AT BEGINNING.
|
||
JRUC LUP_TOP
|
||
|
||
GXL: .LONG -400000H,01900000H,0AD0000H,0AD0000H
|
||
GXR: .LONG -010000H,01D00000H,0DD0000H,0DD0000H
|
||
GYT: .LONG 0600000H,0600000H,-600000H,00F80000H
|
||
GYB: .LONG 0880000H,0880000H,-100000H,01480000H
|
||
|
||
REALO:
|
||
MOVE A8,A0
|
||
; CALLA DELPAL ;NEEDED? NOT IF IN PLYR PAL!
|
||
CALLA DELOBJ
|
||
|
||
MOVE @HULK_CNT,A3
|
||
DEC A3
|
||
MOVE A3,@HULK_CNT
|
||
DIE
|
||
GHULK:
|
||
;GHULK PUTS X # OF HULKS BEHIND A DOOR IN GANG FORMATION!
|
||
;A0=DOOR TO GANG UP ON
|
||
;
|
||
SLL 4,A8
|
||
MOVI 30,A1
|
||
MOVE A1,*A13(DIS)
|
||
MOVI SD,A1
|
||
ADD A8,A1
|
||
MOVE *A1,A1
|
||
MOVE A1,*A13(DIR)
|
||
SLL 1,A8
|
||
MOVI GXL,A1
|
||
ADD A8,A1
|
||
MOVE *A1,A2,L ;GET X LEFT BOUNDARY
|
||
MOVI GXR,A1
|
||
ADD A8,A1
|
||
MOVE *A1,A3,L ;GET X RIGHT SIDE BOUNDARY
|
||
MOVI GYT,A1
|
||
ADD A8,A1
|
||
MOVE *A1,A4,L ;GET Y TOP
|
||
MOVI GYB,A1
|
||
ADD A8,A1
|
||
MOVE *A1,A5,L ;GET Y BOT
|
||
MOVE A2,B0
|
||
MOVE A3,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A6 ;A6 IS X
|
||
MOVE A4,B0
|
||
MOVE A5,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A1 ;A1 IS Y
|
||
MOVE A6,A0
|
||
|
||
CALLR IH1
|
||
CALLA BEGINOBJ
|
||
|
||
CALLR SETUP_HULK ;INC CNT, SET DIR, SET DEATH FLAG, ETC
|
||
CLR B0
|
||
MOVK 4,B1
|
||
MOVE @GALTYP,A0
|
||
JRZ R4
|
||
MOVK 1,B0
|
||
MOVK 5,B1
|
||
R4 CALLA RANGRAND
|
||
DEC A0
|
||
MOVE A0,*A13(LEVEL)
|
||
CALLR DO_DIFF
|
||
MOVE *A13(DIR),A0
|
||
CALLR INTO
|
||
CALLR GET_RUN
|
||
MOVE *A13(CFLAGS),A0 ;INDICATE GANG MEMBER FOR RUN IN
|
||
ORI 010H,A0
|
||
MOVE A0,*A13(CFLAGS)
|
||
SLEEP 2
|
||
JRUC LUP_TOP
|
||
|
||
AHULK:
|
||
;YES A NEW HULK WILL APPEAR
|
||
;UPDATE WAVE_INFO RAM TABLE TO REFLECT THIS NEW ENTRY!
|
||
;THIS HULK WAS SPAWNED FROM 'WAVE OVERLORD' CODE
|
||
;
|
||
CALLR SETUP_HULK ;INC CNT, SET DIR, SET DEATH FLAG, ETC
|
||
CALLR INIT_HULK ;INITIAL HULK PARAMS (BEGIN_OBJ)
|
||
JRNC OKZ
|
||
;CARRY SET MEANS THIS GUY WILL DIE BECAUSE HE WAS GOING TO COME
|
||
;OUT CLOSED DOOR
|
||
DIE
|
||
|
||
OKZ
|
||
MOVE *A13(LEVEL),A0
|
||
CMPI 4,A0 ;4
|
||
JRLT OKZ0
|
||
;CHANGE TO PURPLE PAL
|
||
MOVI GRNTP,A0
|
||
MOVE @HULKTYP,A1
|
||
JRZ YAH
|
||
MOVI SNKGP,A0
|
||
CMPI 2,A1
|
||
JRZ YAH
|
||
MOVI SNKGP,A0
|
||
|
||
YAH
|
||
CALLA GETFPAL ;GET A COLOR MAP ASSIGNMENT
|
||
MOVE A0,*A8(OPAL),W ;STORE THE NEW PALETTE
|
||
|
||
OKZ0 CALLR DO_DIFF
|
||
MOVE *A13(CFLAGS),A0
|
||
ORI 02H,A0
|
||
MOVE A0,*A13(CFLAGS) ;FROM DOORWAY!
|
||
BTST 2,A0 ;CHECK FOR PAUSE DELAY BEHIND DOOR
|
||
JRNZ LR
|
||
MOVE *A13(DIR),A0
|
||
|
||
CALLR INTO
|
||
LR
|
||
CALLR GET_RUN ;GET FIRST FRANIM PNTR FOR
|
||
;THIS HULKS DIRECTION
|
||
;
|
||
; LOOP TOP FOR HULKS
|
||
;
|
||
LUP_TOP:
|
||
;TOP OF HULK LOGIC
|
||
MOVE @HALT,A0
|
||
JRNZ CONT1
|
||
|
||
MOVB *A13(IBAT),A0
|
||
JRZ LP5
|
||
;A0=PLAYER 1 OR 2
|
||
;THIS HULK IS BATTING
|
||
;START BAT SWING
|
||
CLR A1
|
||
MOVE A1,*A8(OXVEL),L
|
||
MOVE A1,*A8(OYVEL),L
|
||
DEC A0
|
||
SLL 5,A0
|
||
ADDI PLYROBJS,A0
|
||
MOVE *A0,A0,L
|
||
MOVE *A0(OYPOS),A2 ;A2=Y OF PLYR I HIT
|
||
MOVE *A0(OXPOS),A1 ;A1=X
|
||
MOVE *A8(OYPOS),A3 ;A3=THIS HULKS' Y
|
||
MOVE *A8(OXPOS),A4 ;A4=THIS HULKS' X
|
||
CMP A3,A2
|
||
JRC SUP ;BR=BAT UPWARD
|
||
CMP A4,A1
|
||
JRC B8O ;BR=8 O'CLOCK SWING NEEDED
|
||
;4 O'CLOCK
|
||
MOVI BAT4O,A9
|
||
MOVE @HULKTYP,A0
|
||
JRZ GBAT
|
||
MOVI BAT4OS,A9
|
||
CMPI 2,A0
|
||
JRZ GBAT
|
||
;4TH CIRCUIT
|
||
MOVI BAT4OS,A9
|
||
|
||
GBAT MOVE A9,A10
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
MOVE A10,A9
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
JRUC BATDN
|
||
B8O
|
||
;8
|
||
MOVI BAT8O,A9
|
||
MOVE @HULKTYP,A0
|
||
JRZ GBAT1
|
||
MOVI BAT8OS,A9
|
||
CMPI 2,A0
|
||
JRZ GBAT1
|
||
;4TH CIRCUIT
|
||
GBAT1 MOVE A9,A10
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
MOVE A10,A9
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
JRUC BATDN
|
||
SUP CMP A4,A1
|
||
JRC B10O
|
||
;2 O'CLOCK
|
||
MOVI BAT2O,A9
|
||
MOVE @HULKTYP,A0
|
||
JRZ GBAT2
|
||
MOVI BAT2OS,A9
|
||
CMPI 2,A0
|
||
JRZ GBAT2
|
||
;4TH CIRCUIT
|
||
MOVI BAT2O,A9
|
||
GBAT2 MOVE A9,A10
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
MOVE A10,A9
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
JRUC BATDN
|
||
B10O
|
||
MOVI BAT10O,A9
|
||
MOVE @HULKTYP,A0
|
||
JRZ GBAT3
|
||
MOVI BAT10OS,A9
|
||
CMPI 2,A0
|
||
JRZ GBAT3
|
||
;4TH CIRCUIT
|
||
MOVI BAT10O,A9
|
||
GBAT3 MOVE A9,A10
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
MOVE A10,A9
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
BATDN CLR A0
|
||
MOVB A0,*A13(IBAT)
|
||
MOVE *A13(DIR),A0
|
||
MOVE A10,A9
|
||
CALLA INTO
|
||
SLEEP 1
|
||
JRUC LUP_TOP
|
||
|
||
|
||
|
||
LP5 MOVE *A13(CFLAGS),A0
|
||
BTST 2,A0
|
||
JREQ DOLOGIC
|
||
MOVE @HULK_DN,A1
|
||
JRNE REALO
|
||
BTST 3,A0
|
||
JRZ DOHULK
|
||
;END OF WAVE
|
||
;CHECK TO SEE IF DOOR IS IN PROCESS OF CLOSING
|
||
;IF SO, DELAY INTO CODE!
|
||
ANDI 0FFF3H,A0
|
||
MOVE A0,*A13(CFLAGS)
|
||
MOVE *A13(DIR),A0
|
||
CALLR INTO
|
||
;
|
||
; DO HULK MOVEMENT LOGIC A8=CURRENT OBJECT POINTER (HULK IMAGE)
|
||
;
|
||
DOLOGIC:
|
||
MOVE @EHALT,A0
|
||
JRZ MV ;BR=HALT ALL HULKS!!
|
||
;PLAYER IS WALKING INTO ARENA
|
||
;MAKE HULK FACE PLAYER AS HE ENTERS
|
||
;PUT HULKS INTO STAND MODE
|
||
; MOVE @HALT,A0 ;FOR WHEN PLAYER DIES AND EVERYTHING
|
||
;MUST HALT! NO RUNNING OFF SCRN!
|
||
; JRNZ DONE_SPIN
|
||
|
||
CLR A1
|
||
NOT A1
|
||
MOVI BUYINPID,A0
|
||
CALLA EXISTP
|
||
JRNZ DONE_SPIN
|
||
|
||
|
||
CLR A0
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
MOVE *A13(CFLAGS),A0
|
||
ORI 01H,A0
|
||
MOVE A0,*A13(CFLAGS),W ;SET STAND MODE FOR THIS HULK
|
||
MOVE *A13(SK_DIR),A1
|
||
MOVE *A13(DIR),A0,W
|
||
CMP A0,A1
|
||
JREQ DONE ;BR=ALREADY FACING IN CORRECT DIR
|
||
CALLR WAY
|
||
DONE_SPIN:
|
||
SLEEP 2
|
||
JRUC LUP_TOP
|
||
DONE:
|
||
;GET NEW SEEK DIR
|
||
;IGNORE (DIS) TIMER AND GET NEW SEEK DIR RIGHT AWAY!
|
||
CALLR SETUP_DIR
|
||
CALLR DO_DIFF
|
||
JRUC DONE_SPIN
|
||
MV:
|
||
;FIRST, DO AGE/LEVEL UPDATE
|
||
MOVE *A13(HAGE),A0
|
||
ANDI 03FFH,A0
|
||
DEC A0
|
||
MOVE A0,*A13(HAGE)
|
||
JRNZ C7
|
||
MOVE *A13(LEVEL),A0
|
||
CMPI MAXLEVEL,A0
|
||
JREQ C7
|
||
INC A0
|
||
MOVE A0,*A13(LEVEL)
|
||
; CMPI 4,A0
|
||
; JRNE MVB
|
||
; MOVI GRNTP,A0
|
||
; CALLA GETFPAL ;GET A COLOR MAP ASSIGNMENT
|
||
; MOVE A0,*A8(OPAL),W ;STORE THE NEW PALETTE
|
||
;MVB
|
||
CALLR DO_DIFF
|
||
MOVE *A13(KPAGE),A0
|
||
MOVE A0,*A13(HAGE)
|
||
C7: MOVE *A13(CFLAGS),A0
|
||
BTST 0,A0
|
||
JRZ NOSPN
|
||
; THIS HULK IS SPINNING, DO SPIN
|
||
MOVE *A13(SK_DIR),A1
|
||
MOVE *A13(DIR),A0,W
|
||
CMP A0,A1
|
||
JRNE CONT
|
||
; HULK HAS SPUN TO CORRECT DIR, NOW START HIM WALKING AGAIN
|
||
; SET DIS CNTR ALSO
|
||
; CHECK TO MAKE THIS DIR IS STILL HEADING TOWARD PLAYER!
|
||
; IF SO, START RUN WITH CORRECT VELOCITY STUFFED TO COLLIDE WITH PLAYER
|
||
; IF NOT, SPIN SOME MORE!
|
||
; IF NEW SEEK IS <> OLD SEEK, THEN SET STAND FLAG
|
||
MOVE *A13(CFLAGS),A0
|
||
BTST 1,A0 ;REGULAR HULK RUN IN FLAG
|
||
JRZ R0
|
||
; HULK HAS RUN IN, NOW ANGLE HIM OFF RANDOMLY
|
||
MOVK 15,A0
|
||
MOVE A0,*A13(DIS)
|
||
MOVE *A13(CFLAGS),A0
|
||
ANDI 0FFFDH,A0
|
||
MOVE A0,*A13(CFLAGS)
|
||
JRUC GOODNEWS
|
||
R0 PUSH A1
|
||
CALLA JUST_SK ;WILL STUFF NEW VEL
|
||
PULL A1
|
||
MOVE *A13(SK_DIR),A0
|
||
CMP A0,A1 ;NEW CMP OLD SEEK
|
||
JREQ GOODNEWS
|
||
;HULK SPUN TO CORRECT DIR THEN CHECKED AGAIN AND THE PLAYER HAD MOVED
|
||
MOVE *A13(OSCILLATE),A0
|
||
JRNZ GNW
|
||
MOVK 1,A0
|
||
MOVE A0,*A13(OSCILLATE)
|
||
;SET HULK SPIN FLAG AGAIN BECAUSE PLAYER MOVED!
|
||
MOVE *A13(CFLAGS),A0
|
||
ORI 01H,A0
|
||
MOVE A0,*A13(CFLAGS),W
|
||
SLEEP 1
|
||
JRUC LUP_TOP
|
||
GNW MOVK 6,A0
|
||
MOVE A0,*A13(DIS)
|
||
GOODNEWS:
|
||
CLR A0
|
||
MOVE A0,*A13(OSCILLATE)
|
||
CALLR GET_RUN ;ZEROS STAND FLAG ALSO
|
||
SLEEP 1
|
||
JRUC LUP_TOP
|
||
CONT:
|
||
CALLR WAY ;WHICH WAY TO SPIN/THEN ANI STAND VW
|
||
CONT1: SLEEP 3
|
||
JRUC LUP_TOP
|
||
|
||
NOSPN: MOVE *A13(DIS),A0 ;UPDATE DISTANCE COUNT
|
||
DEC A0
|
||
MOVE A0,*A13(DIS) ;STUFF NEW COUNT
|
||
JRNZ DOHULK ;BR=CONTINUE CURRENT DIRECTION
|
||
MOVE *A13(CFLAGS),A0
|
||
BTST 4,A0
|
||
JRZ NGNG ;BR=NOT A GANG MEMBER
|
||
;GANG MEMBER WHO WANTS TO TURN TOWARD PLAYER
|
||
;HE MUST WAIT TILL HE IS ON SCREEN!
|
||
MOVE *A8(OYVAL),A5,L
|
||
MOVE *A8(OXVAL),A4,L
|
||
MOVE @PLYRPRCS,A7,L
|
||
JRNZ TOK
|
||
;GET BND FROM OTHER PLAYER
|
||
MOVE @PLYRPRCS+32,A7,L
|
||
|
||
TOK MOVE *A7(LFTBND),A0,L
|
||
CMP A0,A4
|
||
JRLO BAD
|
||
MOVE *A7(RGTBND),A0,L
|
||
CMP A0,A4
|
||
JRHI BAD
|
||
MOVE *A7(UPBND),A0,L
|
||
CMP A0,A5
|
||
JRLO BAD
|
||
MOVE *A7(DNBND),A0,L
|
||
CMP A0,A5
|
||
JRLO OK
|
||
BAD MOVK 5,A0
|
||
MOVE A0,*A13(DIS) ;STUFF NEW COUNT
|
||
JRUC DOHULK ;BR=CONTINUE CURRENT DIRECTION
|
||
OK MOVE *A13(CFLAGS),A0
|
||
ANDI 0FFEFH,A0
|
||
MOVE A0,*A13(CFLAGS)
|
||
JRUC T3
|
||
NGNG MOVE *A13(CFLAGS),A0
|
||
BTST 1,A0
|
||
JRZ T3
|
||
;THIS HULK JUST RUNNING IN! GIVE THIS ONE A BOGUS SEEK DIR
|
||
;IF WITHIN WALLS THEN CONT, OTHERWISE RESET DIS CNTR
|
||
MOVE *A13(DIR),A3
|
||
DEC A3
|
||
SLL 5,A3
|
||
ADDI NEWANG,A3
|
||
MOVK 1,B0
|
||
MOVK 4,B1
|
||
CALLA RANGRAND
|
||
MOVE *A3,A3,L
|
||
DEC A0
|
||
SLL 4,A0
|
||
ADD A0,A3
|
||
MOVE *A3,A0 ;NEW SEEK DIR
|
||
MOVE A0,*A13(SK_DIR)
|
||
CALLR INTO
|
||
JRUC T4
|
||
|
||
NEWANG: .LONG ANG1,0,ANG3,0,ANG5,0,ANG7
|
||
ANG5: .WORD 7,6,4,3
|
||
ANG1: .WORD 7,3,8,2
|
||
ANG3: .WORD 1,5,2,4
|
||
ANG7: .WORD 8,6,1,5
|
||
;
|
||
;
|
||
;NOW POINT THIS HULK AT CURRENT POSITION OF PLAYER
|
||
T3: MOVE *A13(SK_DIR),A7,W
|
||
;IF NEW SEEK IS <> OLD SEEK, THEN SET STAND FLAG
|
||
CALLA JUST_SK ;WILL STUFF NEW VEL
|
||
MOVE *A13(SK_DIR),A0
|
||
CMP A0,A7 ;NEW CMP OLD SEEK
|
||
JREQ DOHULK
|
||
T4: MOVE *A13(CFLAGS),A0 ;SAYS I AM SPINNING
|
||
ORI 01H,A0
|
||
MOVE A0,*A13(CFLAGS),W
|
||
MOVK 2,A0
|
||
MOVE A0,*A13(OSCILLATE)
|
||
SLEEP 3
|
||
JRUC LUP_TOP
|
||
DOHULK:
|
||
CLR A1
|
||
JSRP FRANIM
|
||
JRNC CHECK_NEXT ;BR=NOT AT END OF SCRIPT YET
|
||
CALLR GET_RUN
|
||
|
||
CHECK_NEXT:
|
||
JRUC LUP_TOP
|
||
;
|
||
SETUP_HULK:
|
||
;DIR IS BASED ON WHAT DOOR HE IS ENTERING THROUGH!
|
||
;IF THIS IS AN ONSCREEN HULK, THEN ANY DIR IS OKAY!
|
||
;
|
||
MOVK 5,A0 ;1
|
||
MOVE A0,*A13(SK_DIR)
|
||
CLR A0
|
||
MOVE A0,*A13(CFLAGS)
|
||
MOVB A0,*A13(IBAT) ;NO BATTING AT START!
|
||
MOVI 0,B0
|
||
MOVK 10,B1
|
||
CALLA RANGRAND ;TIE THIS IN WITH DIFFICULTY!
|
||
SLL 4,A0
|
||
ADDI AGTBL,A0
|
||
MOVE *A0,A0
|
||
SLL 1,A0 ;TAKE OUT! MODIFY TABLE
|
||
MOVE A0,*A13(HAGE)
|
||
MOVE A0,*A13(KPAGE)
|
||
;
|
||
; UPDATE HULK COUNT
|
||
;
|
||
MOVE @HULK_CNT,A0
|
||
INC A0
|
||
MOVE A0,@HULK_CNT
|
||
|
||
;CHOOSE PLAYER TO SEEK
|
||
ANDI 01,A0
|
||
MOVB A0,*A13(SKPLYR)
|
||
MOVE A0,A1
|
||
SLL 5,A1
|
||
ADDI PLYROBJS,A1
|
||
MOVE *A1,A1,L
|
||
MOVE *A1(OXPOS),A1
|
||
JRNZ ZY ;BR=OKAY TO SEEK THIS PLAYER
|
||
;PLAYER I AM SEEKING IS IN DIE MODE
|
||
XORI 1,A0
|
||
MOVB A0,*A13(SKPLYR)
|
||
ZY
|
||
MOVI HULK,A2
|
||
CALLR GET_WVADDR
|
||
|
||
MOVE *A0(32),A1,W ;GET DIFFICULTY LEVEL
|
||
MOVE A1,*A13(LEVEL),W
|
||
|
||
MOVE *A0(16),A1,W ;DEC WAVE RAM CNT FOR THIS HULK
|
||
DEC A1
|
||
MOVE A1,*A0(16),W
|
||
JRNZ BZ
|
||
|
||
;END OF THIS WAVES HULK CNT
|
||
MOVK 1,A1
|
||
MOVE A1,@HULK_DN
|
||
|
||
CREATE 0,DEXIT
|
||
;
|
||
BZ
|
||
RETS
|
||
|
||
GET_WVADDR:
|
||
;A2=ENEMY TYPE LOOKING FOR
|
||
;IE.HULK,TANK
|
||
MOVI WAVE_RAM,A0
|
||
HU1: MOVE *A0,A1,W ;TYPE
|
||
CMP A2,A1
|
||
JREQ YSID
|
||
ADDI 6*16,A0
|
||
JRUC HU1
|
||
YSID: RETS
|
||
;
|
||
JUST_SK:
|
||
CALLR GET_DIS
|
||
CALLR SETUP_DIR
|
||
RETS
|
||
|
||
DO_DIFF:
|
||
MOVI HSPEED,A1
|
||
DO_DIFF2:
|
||
MOVE *A13(LEVEL),A0
|
||
Z0 JRZ Z1
|
||
ADDI 02000H,A1
|
||
DEC A0
|
||
JRUC Z0
|
||
Z1 MOVE A1,*A13(HSPD),L
|
||
MOVE A1,A5
|
||
SUBI 01000H,A5
|
||
MOVE A5,*A13(VSPD),L
|
||
MOVK 10,A3
|
||
DIVU A3,A1 ;DIVIDE A1 BY 10
|
||
MOVK 8,A4
|
||
MPYU A4,A1 ;A1 * .8
|
||
MOVE A1,*A13(H2SPD),L
|
||
DIVU A3,A5
|
||
MPYU A4,A5
|
||
MOVE A5,*A13(V2SPD),L
|
||
RETS
|
||
|
||
LEVTBL:
|
||
; .WORD 9,9,8,8,7,7,6,6,5,5,4,4,3,3,3,3
|
||
.WORD 11,10,9,8,7,7,6,6,5,5,4,4,3,3,3,3
|
||
AGTBL: .WORD 80,150,90,110,140,210,250,50,70,125,45,80
|
||
;AGTBL: .WORD 03,13,23,32,43,53,63,8,18,03,3,7
|
||
;
|
||
GET_DIS:
|
||
MOVK 1,B0
|
||
MOVE *A13(LEVEL),A0
|
||
SLL 4,A0
|
||
ADDI LEVTBL,A0
|
||
MOVE *A0,A2
|
||
MOVE A2,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,*A13(DIS) ;TIME BEFORE WE GET NEW VELOCITIES
|
||
RETS
|
||
|
||
WAY:
|
||
;A1=SEEK DIR
|
||
;A0=DIR IMAGE IS FACING NOW
|
||
SUB A0,A1
|
||
MOVE A1,A2
|
||
ABS A1
|
||
CMPI 5,A1
|
||
JRLT N0
|
||
NEG A2
|
||
N0: BTST 31,A2
|
||
JRZ IC
|
||
DEC A0
|
||
JRP T1
|
||
MOVK 8,A0
|
||
JRUC T1
|
||
IC: INC A0 ;ROTATE TOWARD PLAYER
|
||
CMPI 9,A0
|
||
JRNE T1
|
||
MOVK 1,A0
|
||
T1: MOVE A0,*A13(DIR),W
|
||
CALLA GET_STAND ;DOES ANI OF CORRECT VIEW
|
||
RETS
|
||
|
||
SWAPSK
|
||
;SEEK ANOTHER PLAYER ROUTINE
|
||
;A10=0 OR 1 FOR WHICH PLAYER DIED
|
||
CLR A1
|
||
NOT A1
|
||
MOVI HULKPID,A0
|
||
CALLA EXISTP
|
||
JRZ OUTZ
|
||
;FOUND HULK
|
||
MOVB *A0(SKPLYR),A1
|
||
CMP A1,A10
|
||
JRZ YES
|
||
MOVI TP2PID,A1
|
||
MOVE A1,*A0(PROCID),W
|
||
JRUC SWAPSK
|
||
|
||
YES MOVI TEMPPID,A1
|
||
MOVI SWAPIT,A7
|
||
CALLA GETA8
|
||
CALLA GETA9
|
||
CALLA XFERPROC
|
||
JRUC SWAPSK
|
||
OUTZ
|
||
CLR A1
|
||
NOT A1
|
||
MOVI TP2PID,A0
|
||
CALLA EXISTP
|
||
JRZ OUTB
|
||
;FOUND TEMP HULK
|
||
MOVI HULKPID,A1
|
||
MOVE A1,*A0(PROCID),W
|
||
JRUC OUTZ
|
||
OUTB RETS
|
||
|
||
SWAPIT
|
||
;HULKS FALL INTO HERE IF PLAYER THEY WERE SEEKING HAS DIED. THEY WILL
|
||
;NOW SEEK OTHER PLAYER
|
||
MOVI HULKPID,A0
|
||
MOVE A0,*A13(PROCID),W
|
||
|
||
MOVB *A13(SKPLYR),A2
|
||
XORI 1,A2
|
||
MOVE A2,A1
|
||
SLL 5,A1
|
||
ADDI PLYROBJS,A1
|
||
MOVE *A1,A1,L
|
||
JRZ ZCT ;BR=OTHER PLAYER DOES NOT EXIST!
|
||
MOVB A2,*A13(SKPLYR)
|
||
ZCT
|
||
SLEEP 1
|
||
JAUC LUP_TOP
|
||
|
||
SETUP_DIR:
|
||
;GET NEW VELOCITIES AND SEEK DIR FOR THIS HULK
|
||
;SET SEEK DIR FOR THIS HULK
|
||
;MAKE SURE THIS LEG_PTR HAS A VALID VALUE! THE PLAYER MUST BE INITIALIZED!
|
||
;DETERMINE WHICH OF TWO PLAYERS THIS HULK IS SEEKING!
|
||
|
||
;NORMAL
|
||
MOVB *A13(SKPLYR),A2
|
||
MOVE A2,A1
|
||
SLL 5,A1
|
||
ADDI PLYROBJS,A1
|
||
MOVE *A1,A1,L
|
||
JRNZ ZCV
|
||
;PLAYER NO LONGER EXISTS! GET OTHER
|
||
WIT
|
||
CMPI 3,A2
|
||
JRLT WIT2
|
||
;OH OH! BOTH ARE DEAD
|
||
MOVI >111,A0
|
||
MOVE A0,@EHALT
|
||
RETS
|
||
|
||
WIT2 XORI 1,A2
|
||
MOVB A2,*A13(SKPLYR)
|
||
SLL 5,A2
|
||
ADDI PLYROBJS,A2
|
||
MOVE *A2,A1,L
|
||
ZCV
|
||
MOVE *A1(OXPOS),A0,W
|
||
JRZ WIT
|
||
MOVE *A1(OYPOS),A2,W
|
||
SLL 16,A2
|
||
MOVY A2,A0
|
||
CALLA GETXY ;A8 TO SEEK A0
|
||
INC A0
|
||
MOVE A0,*A13(SK_DIR) ;DIR WE WANT TO BE FACING!
|
||
;
|
||
;NEEDED?!!
|
||
;
|
||
MOVE @EHALT,A1 ;IN CASE HULKS MOVE SLIGHTLY
|
||
JRNE NRM
|
||
;FALLS INTO THIS
|
||
INTO:
|
||
;A0=DIR FROM 1-8
|
||
SLL 5,A0
|
||
ADDI JTBL,A0
|
||
MOVE *A0,A0,L
|
||
JUMP A0
|
||
JTBL .LONG 0,IN1,IN2,IN3,IN4,IN5,IN6,IN7,IN8
|
||
INTO16:
|
||
;A0=DIR FROM 1-16
|
||
SLL 5,A0
|
||
ADDI JTBL16,A0
|
||
MOVE *A0,A0,L
|
||
JUMP A0
|
||
|
||
JTBL16 .LONG LK,IN1,LK,IN2,LK,IN3,LK,IN4,LK,IN5,LK,IN6,LK,IN7,LK,IN8,LK
|
||
|
||
|
||
; 01
|
||
; 16 02
|
||
; 15 03
|
||
; 14 04
|
||
; 13 05
|
||
; 12 06
|
||
; 11 07
|
||
; 10 08
|
||
; 09
|
||
;
|
||
LK
|
||
; LOCKUP
|
||
IN1
|
||
;IS 0 DIR
|
||
MOVE *A13(VSPD),A0,L
|
||
NEG A0
|
||
CLR A1
|
||
MOVE A1,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
NRM RETS
|
||
IN2
|
||
MOVE *A13(V2SPD),A0,L
|
||
NEG A0
|
||
MOVE *A13(H2SPD),A1,L
|
||
MOVE A1,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
RETS
|
||
IN3
|
||
CLR A0
|
||
MOVE *A13(HSPD),A1,L
|
||
MOVE A1,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
RETS
|
||
IN4
|
||
MOVE *A13(V2SPD),A0,L
|
||
MOVE *A13(H2SPD),A1,L
|
||
MOVE A1,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
RETS
|
||
IN5
|
||
MOVE *A13(VSPD),A0,L
|
||
CLR A1
|
||
MOVE A1,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
RETS
|
||
IN6
|
||
MOVE *A13(V2SPD),A0,L
|
||
MOVE *A13(H2SPD),A1,L
|
||
NEG A1
|
||
MOVE A1,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
RETS
|
||
IN7
|
||
CLR A0
|
||
MOVE *A13(HSPD),A1,L
|
||
NEG A1
|
||
MOVE A1,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
RETS
|
||
IN8
|
||
MOVE *A13(H2SPD),A1,L
|
||
NEG A1
|
||
MOVE *A13(V2SPD),A0,L
|
||
NEG A0
|
||
MOVE A1,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
RETS
|
||
|
||
GET_RUN:
|
||
;GET FRANIM BASE ADDRESS FOR THIS HULKS DIRECTION
|
||
;
|
||
MOVE *A13(DIR),A4
|
||
DEC A4
|
||
SLL 5,A4 ;*32 FOR LONG WORD LOOKUP TABLE
|
||
MOVE @HULKTYP,A0
|
||
JRZ NORM
|
||
CMPI 2,A0
|
||
JRZ NORM1
|
||
;4TH CIRCUIT
|
||
JRUC NORM ;SPO
|
||
NORM1
|
||
MOVE *A13(LEVEL),A0
|
||
CMPI 2,A0 ;3
|
||
JRLT SLOA
|
||
CMPI 5,A0 ;6
|
||
JRLT MEDA
|
||
ADDI WALK_LISTFA,A4
|
||
JRUC SPO
|
||
MEDA ADDI WALK_LISTMA,A4
|
||
JRUC SPO
|
||
SLOA ADDI WALK_LISTA,A4 ;CALCULATE OFFSET IN TABLE
|
||
JRUC SPO
|
||
NORM MOVE *A13(LEVEL),A0
|
||
CMPI 2,A0 ;3
|
||
JRLT SLO
|
||
CMPI 5,A0 ;6
|
||
JRLT MED
|
||
ADDI WALK_LISTF,A4
|
||
JRUC SPO
|
||
MED ADDI WALK_LISTM,A4
|
||
JRUC SPO
|
||
SLO ADDI WALK_LIST,A4 ;CALCULATE OFFSET IN TABLE
|
||
SPO MOVE *A4,A9,L ;MOVE TABLE VALUE INTO A9
|
||
;NEW ANIMATION SCRIPT
|
||
MOVE *A13(CFLAGS),A0
|
||
ANDI 0FFFEH,A0 ;
|
||
MOVE A0,*A13(CFLAGS) ;ZERO STANDING FLAG
|
||
RETS
|
||
|
||
GET_STAND:
|
||
;ANI ONTO SCREEN THIS HULKS STANDING POSITION
|
||
;
|
||
MOVE *A13(DIR),A0 ;CURRENT DIR HULK IS FACING
|
||
DEC A0
|
||
MOVE A0,A2
|
||
SLL 5,A0
|
||
MOVE @HULKTYP,A4
|
||
JRZ C1
|
||
CMPI 2,A4
|
||
JRZ C2
|
||
;4TH CIRCUIT
|
||
JRUC C1
|
||
C2 ADDI SPINFRMS2,A0
|
||
JRUC COUT
|
||
C1 ADDI SPINFRMS,A0
|
||
COUT MOVE *A0,A1,L ;NEW OIMG
|
||
SLL 4,A2
|
||
ADDI SPINFLGS,A2
|
||
MOVE *A2,A4,W ;NEW OFLAGS
|
||
CALLA ANI
|
||
RETS
|
||
|
||
|
||
**************************************************************************
|
||
GETXY:
|
||
* gets direction from Obj in A8 to Z:X coors in A0, where dir
|
||
* is expressed as
|
||
* 7 0 1
|
||
* 6 * 2
|
||
* 5 4 3
|
||
* The direction is returned in A0
|
||
|
||
mmtm SP,A2,A3,A4,A5
|
||
|
||
movy A0,A3
|
||
srl 16,A3
|
||
movx A0,A2
|
||
zext A2,W
|
||
|
||
calla GETANIX ;A0 - MBIG X
|
||
sub A0,A2 ;A2 = XDELTA
|
||
; SHOULD BE ANIMATION Y COOR!
|
||
move *A8(OYPOS),A0,W
|
||
sub A0,A3 ;A3 = ZDELTA
|
||
move A2,A4
|
||
move A3,A5
|
||
abs A4
|
||
abs A5
|
||
sll 16,A5
|
||
clr A0 ;set Direction
|
||
divu A4,A5 ;A5 = A5/A4 = ABS(ZDELTA)/ABS(XDELTA) = TAN(THETA)
|
||
jrv GotD0 ;Overflow indicates XDELTA=0
|
||
cmpi >269FB,A5 ;Tan(22.5deg) = 2.414 as 16.16
|
||
jrgt GotD0
|
||
inc A0
|
||
cmpi >69FB,A5 ;Tan(67.5deg) = .414 as 16.16
|
||
jrgt GotD0
|
||
inc A0
|
||
|
||
GotD0:
|
||
;* Must Adjust for Quadrant
|
||
move A2,A2 ;check sign of XDELTA
|
||
jrn Q34
|
||
move A3,A3 ;ck sign of ZDELTA
|
||
jrn Q1
|
||
;* Quadrant 2, X+,Z+
|
||
neg A0
|
||
addk 4,A0
|
||
jruc GotD1
|
||
Q34:
|
||
move A3,A3 ;ck sign of ZDELTA
|
||
jrn Q4
|
||
Q3:
|
||
;* Quadrant 3, X-,Z+
|
||
addk 4,A0
|
||
jruc GotD1
|
||
Q4:
|
||
;* Quadrant 4, X-,Z-
|
||
neg A0
|
||
jrz GotD1
|
||
addk 8,A0
|
||
jruc GotD1
|
||
Q1:
|
||
;* Quadrant 1, X+,Z-
|
||
GotD1:
|
||
mmfm SP,A2,A3,A4,A5
|
||
rets
|
||
|
||
SX: .LONG -080000H,01980000H,0AD0000H,0AD0000H
|
||
SY: .LONG 05D0000H,05D0000H,-220000H,0F80000H
|
||
SOX: .LONG 0,0,0180000H,0180000H
|
||
SOY: .LONG 0130000H,0130000H,0,0
|
||
SD: .WORD 3,7,5,1
|
||
INFOTBL:
|
||
.LONG LDOOR_INFO,RDOOR_INFO,TDOOR_INFO,BDOOR_INFO
|
||
GET_VALID_DOOR
|
||
MOVI 0,B0
|
||
MOVI 4,B1
|
||
CALLA RANGRAND ;TIE THIS IN WITH DIFFICULTY!
|
||
MOVE A0,A1
|
||
SLL 5,A1
|
||
ADDI DRINF,A1
|
||
MOVE *A1,A1,L
|
||
MOVB *A1,A1
|
||
JRZ G
|
||
CMPI 06,A1
|
||
JRGE G
|
||
;DOOR THIS GUY WILL BE SENT TO IS CLOSING RIGHT NOW. SO SEND HIM TO DOOR 4
|
||
MOVI 4,A0 ;DOOR 4
|
||
G MOVE A0,@TMP
|
||
DEC A0
|
||
MOVE A0,A2
|
||
RETS
|
||
|
||
INIT_HULK:
|
||
;INITIAL HULK POSITION,IMAGE SHAPE,AGE ETC....
|
||
;DO STFOBF AND GET A0 PNTR
|
||
;
|
||
CALLR GET_VALID_DOOR
|
||
|
||
MOVI SD,A1
|
||
SLL 4,A2
|
||
ADD A2,A1
|
||
MOVE *A1,A1
|
||
MOVE A1,*A13(DIR)
|
||
MOVI SOX,A1 ;OFFSETS
|
||
SLL 1,A2
|
||
ADD A2,A1
|
||
MOVE *A1,A8,L ;XOFFSET FOR EACH NEW SPACE
|
||
MOVI SOY,A1
|
||
ADD A2,A1
|
||
MOVE *A1,A9,L ;YOFFSET
|
||
MOVI SX,A1
|
||
ADD A2,A1
|
||
MOVE *A1,A0,L
|
||
MOVI SY,A1
|
||
ADD A2,A1
|
||
MOVE *A1,A1,L
|
||
|
||
ADDI INFOTBL,A2
|
||
MOVE *A2,A3,L
|
||
MOVE *A3,A4,L ;CORRECT PNTR1 FOR DOOR INFO
|
||
JRNE SPC1 ;FIRST SPACE FOR THIS DOOR IS OPEN
|
||
AS MOVE A13,*A3,L
|
||
MOVE *A13(CFLAGS),A4
|
||
ORI 04H,A0
|
||
MOVE A0,*A13(CFLAGS)
|
||
JRUC STUFFED
|
||
SPC1 ADDI 32,A3
|
||
ADD A9,A1
|
||
ADD A8,A0
|
||
MOVE *A3,A4,L
|
||
JREQ AS
|
||
;3RD SPACE AVAILABLE
|
||
|
||
|
||
MOVE @TMP,A2
|
||
CMPI 4,A2
|
||
JREQ OV
|
||
|
||
DEC A2
|
||
SLL 5,A2
|
||
ADDI DRINF,A2
|
||
MOVE *A2,A2,L
|
||
MOVB *A2,A2 ;GET KP_LS RS
|
||
; .IF DEBUG
|
||
CMPI 1,A2
|
||
JRNE OV
|
||
;DOOR THESE GUYS WANT TO COME OUT OF IS CLOSING
|
||
;SEND THEM TO BOTTOM DOOR!
|
||
SETC
|
||
RETS
|
||
|
||
OV
|
||
; .ENDIF
|
||
CALLR NEW_OV
|
||
|
||
STUFFED:
|
||
MOVI 38,A3
|
||
MOVE A3,*A13(DIS) ;CHANGE BASED ON HULKS SPEED?
|
||
CALLR IH1
|
||
CALLA BEGINOBJ
|
||
CLRC ;INDICATES GOOD HULK
|
||
RETS
|
||
NEW_OV
|
||
ADD A9,A1
|
||
ADD A8,A0
|
||
SUBI 32,A3
|
||
CLR A6
|
||
MOVK 2,A5
|
||
SPCFULL:
|
||
MOVE *A3,A2,L
|
||
MOVE A6,*A3,L
|
||
MOVE *A2(CFLAGS),A4
|
||
ORI 08H,A4 ;PAUSE FLAG FOR BEHIND DOORS
|
||
MOVE A4,*A2(CFLAGS)
|
||
ADDI 32,A3
|
||
DSJS A5,SPCFULL
|
||
|
||
|
||
MMTM SP,A0,A1
|
||
MOVE @TMP,A0
|
||
MOVI >17,A1
|
||
CALLA SET_GATE_2
|
||
MMFM SP,A0,A1
|
||
RETS
|
||
|
||
IH1: ;ENTER HERE IF ON SCRN HULK
|
||
MOVI gb6w5a,A2 ;DOES NOT MATTER
|
||
MOVE @HULKTYP,A3
|
||
JRZ IH1A
|
||
MOVI SNG6A,A2 ;DOES NOT MATTER
|
||
CMPI 2,A3
|
||
JRZ IH1A
|
||
;4TH CIRCUIT TECHNICIAN GRUNT
|
||
IH1A
|
||
MOVI 159,A3
|
||
MOVI DMAWNZ+M_FLIPH,A4 ;NON-ZERO VALUE
|
||
MOVI CLSENMY|TYPHULK,A5
|
||
CLR A6
|
||
CLR A7
|
||
RETS
|
||
|
||
CTBL:
|
||
.WORD 0000000011111100B ;IF SET, THAT WAVE HAS CIRCLE
|
||
;ALIGNMENT
|
||
CTBL1 .LONG TABLEX,TABLEX,TABLEX3,TABLEX,TABLEX,TABLEX1,TABLEX,TABLEX3
|
||
.LONG TABLEX,TABLEX,TABLEX3
|
||
|
||
GET_VALID_XY:
|
||
CMPI HULK,A11
|
||
JRNE GV
|
||
MOVE @GAMSTATE,A0
|
||
CMPI INAMODE,A0
|
||
JREQ GV
|
||
MOVE @WAVE,A0
|
||
DEC A0
|
||
MOVE @CTBL,A1
|
||
BTST A0,A1
|
||
JREQ GV ;TABLE SAYS NO CIRCLE IF BR
|
||
;THIS WAVE WANTS CIRCLE ALIGNMENT
|
||
MOVE @HULKTYP,A5 ;FOR OTHER CIRCUITS - NO CIRCLE ALIGN
|
||
JRNZ GV
|
||
|
||
; ALIGN HULKS ON CIRCLE!
|
||
MOVE @TMP,A5
|
||
JRZ GV
|
||
DEC A5
|
||
MOVE A5,@TMP
|
||
SLL 5,A5
|
||
MOVI CTBL1,A1
|
||
MOVE @WAVE,A0
|
||
DEC A0
|
||
SLL 5,A0
|
||
ADD A1,A0
|
||
MOVE *A0,A0,L ;WHAT KIND OF CIRCLE TBL
|
||
ADD A0,A5
|
||
MOVE *A5,A1,L ;VALUES FOR CIRCLE TABLE
|
||
MOVX A1,A0
|
||
SLL 16,A0
|
||
|
||
MOVE A0,A2
|
||
MOVY A1,A3
|
||
SRL 16,A2
|
||
MOVX A2,A3
|
||
|
||
JRUC OEXIT
|
||
|
||
GV:
|
||
;BOUNDARIES NOW REFLECT THE NEXT WAVES BOUNDARIES!
|
||
;FROM WAVESYX
|
||
|
||
MOVI 0C10000H,B1 ;E1
|
||
MOVI 0210000H,B0 ;21
|
||
|
||
CALLA RANGRAND
|
||
MOVE A0,@YVAL,L
|
||
MOVI 02A0000H,B0
|
||
MOVI 01570000H,B1
|
||
|
||
CALLA RANGRAND
|
||
MOVE @YVAL,A1,L
|
||
|
||
;A0=X,A1=Y
|
||
;A2 SHOULD EQUAL WHAT DOOR PLAYER IS COMING FROM SO HULKS LINE UP
|
||
;AROUND CORRECT AISLE
|
||
;CHECK PROPER RED CARPET!
|
||
MOVE @FROMDR,A2
|
||
JREQ ZTV
|
||
SLL 5,A2
|
||
ZTV MOVE A2,A5
|
||
ADDI RED_CARPETX,A2
|
||
MOVE *A2,A2,L
|
||
CLR A3
|
||
MOVY A2,A3
|
||
MOVX A2,A4
|
||
SLL 16,A4
|
||
; A3=LEFT X,A4=RGT X
|
||
CMP A3,A0
|
||
JRLT OUT
|
||
CMP A4,A0
|
||
JRGT OUT
|
||
ADDI RED_CARPETY,A5
|
||
MOVE *A5,A5,L
|
||
MOVY A5,A3
|
||
MOVX A5,A4
|
||
SLL 16,A4
|
||
CMP A3,A1
|
||
JRLT OUT
|
||
CMP A4,A1
|
||
JRGT OUT
|
||
|
||
;IT IS ON RED CARPET! GET ANOTHER X,Y POSITION
|
||
JRUC GET_VALID_XY
|
||
OUT:
|
||
MOVE A0,A2
|
||
MOVY A1,A3
|
||
SRL 16,A2
|
||
MOVX A2,A3
|
||
|
||
;
|
||
;CHECK FOR OTHER SHAPES NOW
|
||
;
|
||
; CMPI BUST,A11
|
||
; JREQ EXIT ;DON'T CHECK BUST TYPE ENEMY
|
||
|
||
MOVI RAMXY,A2
|
||
TCK: MOVE *A2+,A4,L
|
||
JRZ OEXIT
|
||
;AN EXISTING SHAPE MUST BE CHECKED
|
||
MOVX A4,A5 ;A4 = Y VAL (32 BIT)
|
||
SLL 16,A5 ;A5 = X VAL
|
||
ADDI 01C0000H,A4 ;ADD IN HEIGHT OF OBJ
|
||
; ADDI 0130000H,A4 ;ADD IN HEIGHT OF OBJ
|
||
CMP A4,A1
|
||
JRGT VALID ;BR IF A1>A4
|
||
SUBI 0380000H,A4
|
||
; SUBI 0260000H,A4
|
||
CMP A4,A1
|
||
JRLT VALID ;BR IF A1<A4
|
||
|
||
;NEW Y VAL IS IN ANOTHER SHAPES Y BAND
|
||
;NOW CHECK X
|
||
|
||
ADDI 01A0000H,A5
|
||
; ADDI 0130000H,A5
|
||
CMP A5,A0
|
||
JRGT VALID ;BR IF A5>A0
|
||
SUBI 0340000H,A5
|
||
; SUBI 0260000H,A5
|
||
CMP A5,A0
|
||
JRLT VALID
|
||
;SOME SHAPE IS ALREADY THERE!
|
||
JRUC GET_VALID_XY
|
||
;HIT
|
||
VALID:
|
||
JRUC TCK
|
||
|
||
OEXIT:
|
||
MOVE @KEEPXY,A4,L
|
||
MOVE A3,*A4+,L
|
||
MOVE A4,@KEEPXY,L
|
||
RETS
|
||
|
||
KILL_H1
|
||
;A8=HULK IMAGE TO SMART BOMB
|
||
;A9=P1DATA OR P2DATA FOR SCORE UPDATE
|
||
;SMART BOMB ENTRY
|
||
;ENTER HERE WITH SMART BOMB
|
||
CREATE 0,HSMRT ;BULLETS DIR WILL BE IN A10
|
||
;HULK_EXP WHEN IT WAKES UP
|
||
MOVI CLSNEUT|TYPNEUT,A0
|
||
MOVE A0,*A8(OID)
|
||
MOVE *A8(OPLINK),A0,L
|
||
CALLA KILL ;KILLS PROCESS IN A0
|
||
CLR A0
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
RETS
|
||
HSMRT
|
||
MOVE @HULK_CNT,A3 ;DELETE A BNCR FROM CNT
|
||
DEC A3
|
||
MOVE A3,@HULK_CNT
|
||
|
||
MOVE A9,A2
|
||
;A2=P1DATA OR P2DATA
|
||
MOVI HLKPT,A1 ;AMOUNT OF SCORE
|
||
CALLA SCRADD2 ;DO IT!
|
||
MOVE *A8(OYPOS),A2
|
||
ADDI 01CH,A2 ;A2=Y OFFSET
|
||
MOVE A2,*A8(OYPOS)
|
||
|
||
BLW2 MOVI BOOM3,A9 ;BOOM3 CHANGES PALETTE TO EXPLOSION!
|
||
JAUC FRANIM_DIE
|
||
; MOVK 1,A1
|
||
; JSRP FRANIM
|
||
; MOVE A8,A0
|
||
; CALLA DELPAL ;NEEDED? NOT IF IN PLYR PAL!
|
||
; CALLA DELOBJ
|
||
; DIE
|
||
BLOW
|
||
MOVE *A8(OYPOS),A0
|
||
ADDI 20,A0
|
||
MOVE A0,*A8(OYPOS)
|
||
JRUC BLW2
|
||
|
||
BAT_PLYR:
|
||
;STOP HULK FROM MOVING
|
||
;DECIDE WHICH OF FOUR SWING ANGLES TO USE
|
||
;TELL MAIN LOGIC THIS HULK IS SWINGING
|
||
MOVE *A0(OPLINK),A0,L
|
||
MOVB *A0(PNUM),A0
|
||
MOVE *A8(OPLINK),A8,L
|
||
MOVB A0,*A8(IBAT)
|
||
RETS
|
||
KILL_H2 ;IF TANK KILLED THIS HULK
|
||
MMTM SP,A1
|
||
MOVE *A0(OID),A9,W ;KILLERS OID
|
||
MOVE *A0(OPLINK),A10,L
|
||
;WILL BE BOGUS IF SOMETHING OTHER THAN A BULLET STRUCK HULK!
|
||
MOVE *A8(OPLINK),A0,L
|
||
MOVE *A0(DIR),A11 ;HULKS DIR
|
||
CREATE 0,HULK_X2 ;BULLETS DIR WILL BE IN A10
|
||
;HULK_EXP WHEN IT WAKES UP
|
||
JRUC TAG
|
||
|
||
KILL_HULK:
|
||
;A8=HULK IMG PNTR, A0=KILLER IMG PNTR
|
||
MMTM SP,A1
|
||
MOVE *A0(OID),A9,W ;KILLERS OID
|
||
MOVE *A0(OPLINK),A10,L
|
||
;WILL BE BOGUS IF SOMETHING OTHER THAN A BULLET STRUCK HULK!
|
||
MOVE *A8(OPLINK),A0,L
|
||
MOVE *A0(DIR),A11 ;HULKS DIR
|
||
|
||
CREATE 0,HULK_EXP ;BULLETS DIR WILL BE IN A10
|
||
;HULK_EXP WHEN IT WAKES UP
|
||
TAG MOVE *A8(OPLINK),A0,L
|
||
CALLA KILL ;KILLS PROCESS IN A0
|
||
MOVE A8,A0
|
||
CALLA DELOBJ
|
||
|
||
MOVI EXP1,A0 ;GDTH1,2,EXP1
|
||
MOVE @HULKTYP,A1
|
||
JRZ YAG
|
||
MOVB @PCNT,A1
|
||
ANDI 0FH,A1
|
||
JRNZ YAG
|
||
MOVI UGH2,A0 ;SQUEAL!
|
||
MOVB @PCNT,A1
|
||
BTST 5,A1
|
||
JRZ YAG
|
||
MOVI UGH3,A0 ;OOF
|
||
YAG
|
||
CALLA ONESND
|
||
|
||
MMFM SP,A1
|
||
RETS
|
||
|
||
HULK_EXP:
|
||
;A10=PROCESS OF BULLET/BLADE THAT HIT THIS HULK
|
||
;A11=HULKS DIR
|
||
;A9=KILLERS OID
|
||
|
||
MOVI P1DATA,A2 ;PLAYER 1 SCORE SELECT
|
||
MOVB *A10(MYPLYR),A0 ;GET PLAYER #
|
||
CMPI 1,A0
|
||
JREQ CGA
|
||
MOVI P2DATA,A2
|
||
CGA
|
||
MOVI HLKPT,A1 ;AMOUNT OF SCORE
|
||
CALLA SCRADD2 ;DO IT!
|
||
MOVE *A10(BLTDIR),A10 ;=BLTDIR!!! CAREFUL!!
|
||
|
||
HULK_X2 ;TANK KILLED HULK
|
||
MOVE @HULK_CNT,A3 ;DELETE A BNCR FROM CNT
|
||
DEC A3
|
||
MOVE A3,@HULK_CNT
|
||
|
||
;JRUC BIGEXP IF A BOMB POD HAS COLLIDED WITH HULK
|
||
CMPI CLSPLYR|TYPPLBL|SUBSPEW,A9
|
||
JREQ BIGSND ;GO TO REGULAR FIRE BOMB EXPLOSION
|
||
CMPI CLSPLYR|TYPPLBL|SUBNOSTP,A9
|
||
JREQ BIGEXP ;GO TO REGULAR FIRE BOMB EXPLOSION
|
||
|
||
;8 1 2
|
||
;7 3
|
||
;6 5 4
|
||
;A10 SHOULD BE 1-8!
|
||
DEC A10
|
||
ANDI 07,A10 ;IN CASE A BLADE STRUCK HULK
|
||
SLL 5,A10
|
||
|
||
MOVI RNGXL,A0
|
||
ADD A10,A0
|
||
MOVE *A0,A0,L
|
||
MOVE A0,A6 ;XVEL
|
||
|
||
MOVI RNGYL,A0
|
||
ADD A10,A0
|
||
MOVE *A0,A0,L
|
||
MOVE A0,A7 ;YVEL
|
||
|
||
MOVE *A8(OPAL),A10
|
||
CALLA GETANIXY
|
||
MOVE A2,A1
|
||
MOVE A3,A0
|
||
|
||
CMPI CLSPLYR|TYPPRSM,A9
|
||
JREQ GR1
|
||
CMPI CLSPLYR|TYPPLBL|SUBSPRY,A9
|
||
JRNE R1
|
||
;PIECES OR BLOODY DEATH DECISION HERE!
|
||
GR1 MOVB @PCTOT,A2
|
||
CMPI 018H,A2 ;19
|
||
JRLO ADDPCS
|
||
|
||
R1: DEC A11
|
||
SLL 5,A11 ;A11=HULKS FACE DIR
|
||
ADDI LIST,A11
|
||
MOVE *A11,A9,L
|
||
|
||
MOVI 199,A3 ;259
|
||
MOVI DMAWNZ|M_NOCOLL|M_FLIPV,A4 ;NON-ZERO VALUE
|
||
MOVI VHIT1,A2
|
||
MOVE @HULKTYP,A5
|
||
JRZ ROT
|
||
MOVI VHIT1R,A2
|
||
MOVI CLSNEUT|TYPNEUT,A5
|
||
CALLA BEGINOBJ2
|
||
JRUC ROT2
|
||
ROT
|
||
MOVI CLSNEUT|TYPNEUT,A5
|
||
;SHOULD NOT DELOBJ THEN INSTANTLY BEGINOBJ!!!
|
||
CALLA BEGINOBJ2
|
||
MOVE A10,*A8(OPAL),W
|
||
ROT2 JAUC FRANIM_DIE
|
||
; MOVK 1,A1
|
||
; JSRP FRANIM
|
||
; MOVE A8,A0
|
||
; CALLA DELOBJ
|
||
; DIE
|
||
BIG3A
|
||
; MOVI ZOOM4,A9
|
||
; JRUC BIG33
|
||
BIG3: ;USED FOR ORBS
|
||
MOVI BOOM2,A9
|
||
BIG33 CLR A6
|
||
CLR A7
|
||
CALLA GETANIXY
|
||
JRUC BX2
|
||
BIG2: ;USED FOR FATMAN EXPLOSION
|
||
CLR A6
|
||
CLR A7
|
||
CALLA GETANIXY
|
||
ADDI 0050000H,A2 ;A2=Y OFFSET
|
||
MOVI BOOM2A,A9
|
||
JRUC BX2
|
||
ARMOFF2
|
||
MOVI BOOM2,A9
|
||
JRUC AT3
|
||
ARMOFF
|
||
MOVI BOOM2Z,A9
|
||
AT3 CALLA GETANIXY
|
||
ADDI 01A0000H,A2 ;A2=Y OFFSET
|
||
MOVE A2,A1
|
||
MOVE A3,A0
|
||
MOVI 230,A3 ;259
|
||
JRUC ARMNZ
|
||
BIGSND
|
||
MOVI EXP3HI,A0
|
||
CALLA ONESND
|
||
BIGEXP:
|
||
CLR A6
|
||
CLR A7
|
||
CALLA GETANIXY
|
||
ADDI 01A0000H,A2 ;A2=Y OFFSET
|
||
;BX
|
||
MOVI BOOM2,A9
|
||
BX2
|
||
MOVE A2,A1
|
||
MOVE A3,A0
|
||
MOVI 199,A3 ;259
|
||
ARMNZ
|
||
MOVI DMAWNZ|M_NOCOLL|M_FLIPV,A4 ;NON-ZERO VALUE
|
||
MOVI CLSNEUT|TYPNEUT,A5
|
||
MOVI EXPb1,A2
|
||
|
||
;PUT ON ANOTHER LIST OTHER THAN OBJLST!
|
||
;THE LIST WITH THE HIGHEST PRIORITY
|
||
CALLA BEGINOBJ2
|
||
JAUC FRANIM_DIE
|
||
; MOVK 1,A1
|
||
; JSRP FRANIM
|
||
; MOVE A8,A0
|
||
; CALLA DELOBJ
|
||
; DIE
|
||
;8 1 2
|
||
;7 3
|
||
;6 5 4
|
||
RNGXL:
|
||
.LONG 0,05C00H,05C00H,05C00H,0,-5C00H,-5C00H,-5C00H
|
||
RNGYL:
|
||
.LONG -05000H,-05000H,0,05000H,05000H,05000H,0,-05000H
|
||
LIST .LONG VDIE,HDIER,HDIER,HDIER,VDIED,HDIE,HDIE,HDIE
|
||
|
||
|
||
ARMS .LONG ARM1
|
||
.WORD 20
|
||
.LONG ARM2
|
||
.WORD 4
|
||
.LONG ARM3
|
||
.WORD 4
|
||
.LONG ARM4
|
||
.WORD 4
|
||
.LONG ARM5
|
||
.WORD 4
|
||
.LONG ARM6
|
||
.WORD 5
|
||
.LONG ARM7
|
||
.WORD 5
|
||
.LONG ARM8
|
||
.WORD 5
|
||
.LONG ARM9
|
||
.WORD 5
|
||
.LONG ARM10
|
||
.WORD 9
|
||
.LONG 0
|
||
|
||
ARMS2 .LONG ARM1
|
||
.WORD FLIPBITS|18,(M_FLIPH+M_FLIPV)
|
||
.LONG ARM2
|
||
.WORD 4
|
||
.LONG ARM3
|
||
.WORD 4
|
||
.LONG ARM4
|
||
.WORD 4
|
||
.LONG ARM5
|
||
.WORD 4
|
||
.LONG ARM6
|
||
.WORD 5
|
||
.LONG ARM7
|
||
.WORD 5
|
||
.LONG ARM8
|
||
.WORD 5
|
||
.LONG ARM9
|
||
.WORD 5
|
||
.LONG ARM10
|
||
.WORD 9
|
||
.LONG 0
|
||
|
||
LEGS2 .LONG LEG1
|
||
.WORD FLIPBITS|2,(M_FLIPH+M_FLIPV)
|
||
.LONG LEG2
|
||
.WORD 4
|
||
.LONG LEG3
|
||
.WORD 4
|
||
.LONG LEG4
|
||
.WORD 4
|
||
.LONG LEG5
|
||
.WORD 4
|
||
.LONG LEG6
|
||
.WORD 5
|
||
.LONG LEG7
|
||
.WORD 5
|
||
.LONG LEG8
|
||
.WORD 5
|
||
.LONG LEG9
|
||
.WORD 5
|
||
.LONG LEG10
|
||
.WORD 5
|
||
.LONG LEG11
|
||
.WORD 9
|
||
.LONG 0
|
||
|
||
LEGS .LONG LEG1
|
||
.WORD 28
|
||
.LONG LEG2
|
||
.WORD 4
|
||
.LONG LEG3
|
||
.WORD 4
|
||
.LONG LEG4
|
||
.WORD 4
|
||
.LONG LEG5
|
||
.WORD 5
|
||
.LONG LEG6
|
||
.WORD 5
|
||
.LONG LEG7
|
||
.WORD 5
|
||
.LONG LEG8
|
||
.WORD 5
|
||
.LONG LEG9
|
||
.WORD 5
|
||
.LONG LEG10
|
||
.WORD 5
|
||
.LONG LEG11
|
||
.WORD 9
|
||
.LONG 0
|
||
|
||
HD .LONG HD1
|
||
.WORD 15
|
||
.LONG HD2
|
||
.WORD 4
|
||
.LONG HD3
|
||
.WORD 4
|
||
.LONG HD4
|
||
.WORD 4
|
||
.LONG HD5
|
||
.WORD 5
|
||
.LONG HD6
|
||
.WORD 5
|
||
.LONG HD7
|
||
.WORD 5
|
||
.LONG HD8
|
||
.WORD 4
|
||
.LONG HD9
|
||
.WORD 9
|
||
.LONG 0
|
||
|
||
GLOB .LONG GLOB1
|
||
.WORD 2
|
||
.LONG GLOB2
|
||
.WORD 4
|
||
.LONG GLOB3
|
||
.WORD 4
|
||
.LONG GLOB4
|
||
.WORD 4
|
||
.LONG GLOB5
|
||
.WORD 5
|
||
.LONG GLOB6
|
||
.WORD 9
|
||
.LONG 0
|
||
|
||
PC .LONG PC1
|
||
.WORD 4
|
||
.LONG PC2
|
||
.WORD 4
|
||
.LONG PC3
|
||
.WORD 4
|
||
.LONG PC4
|
||
.WORD 4
|
||
.LONG PC5
|
||
.WORD 4
|
||
.LONG PC6
|
||
.WORD 4
|
||
.LONG PC7
|
||
.WORD 4
|
||
.LONG PC8
|
||
.WORD 9
|
||
.LONG 0
|
||
|
||
PCS2 .LONG PC1
|
||
.WORD FLIPBITS|20,(M_FLIPV+M_FLIPH)
|
||
.LONG PC2
|
||
.WORD 4
|
||
.LONG PC3
|
||
.WORD 4
|
||
.LONG PC4
|
||
.WORD 4
|
||
.LONG PC5
|
||
.WORD 4
|
||
.LONG PC6
|
||
.WORD 4
|
||
.LONG PC7
|
||
.WORD 4
|
||
.LONG PC8
|
||
.WORD 9
|
||
.LONG 0
|
||
ORBPC
|
||
.LONG OPC1
|
||
.WORD FLIPBITS|1,(M_FLIPV)
|
||
.LONG OPC2
|
||
.WORD 4
|
||
.LONG OPC3
|
||
.WORD 4
|
||
.LONG OPC4
|
||
.WORD 4
|
||
.LONG OPC5
|
||
.WORD 4
|
||
.LONG OPC6
|
||
.WORD 4
|
||
.LONG OPC7
|
||
.WORD 4
|
||
.LONG OPC8
|
||
.WORD 4
|
||
.LONG OPC9
|
||
.WORD 4
|
||
.LONG 0
|
||
ORBPC4
|
||
.LONG OPC1
|
||
.WORD 4
|
||
.LONG OPC2
|
||
.WORD 4
|
||
.LONG OPC3
|
||
.WORD 4
|
||
.LONG OPC4
|
||
.WORD 4
|
||
.LONG OPC5
|
||
.WORD 4
|
||
.LONG OPC6
|
||
.WORD 4
|
||
.LONG OPC7
|
||
.WORD 4
|
||
.LONG OPC8
|
||
.WORD 4
|
||
.LONG OPC9
|
||
.WORD 4
|
||
.LONG 0
|
||
ORBPC3
|
||
.LONG OPC1
|
||
.WORD FLIPBITS|59,(M_FLIPH)
|
||
.LONG OPC2
|
||
.WORD 4
|
||
.LONG OPC3
|
||
.WORD 4
|
||
.LONG OPC4
|
||
.WORD 4
|
||
.LONG OPC5
|
||
.WORD 4
|
||
.LONG OPC6
|
||
.WORD 4
|
||
.LONG OPC7
|
||
.WORD 4
|
||
.LONG OPC8
|
||
.WORD 4
|
||
.LONG OPC9
|
||
.WORD 4
|
||
.LONG 0
|
||
ORBPC2
|
||
.LONG OPC1
|
||
.WORD FLIPBITS|19,(M_FLIPH+M_FLIPV)
|
||
.LONG OPC2
|
||
.WORD 4
|
||
.LONG OPC3
|
||
.WORD 4
|
||
.LONG OPC4
|
||
.WORD 4
|
||
.LONG OPC5
|
||
.WORD 4
|
||
.LONG OPC6
|
||
.WORD 4
|
||
.LONG OPC7
|
||
.WORD 4
|
||
.LONG OPC8
|
||
.WORD 4
|
||
.LONG OPC9
|
||
.WORD 4
|
||
.LONG 0
|
||
BLDOTS .LONG BBS1
|
||
.WORD NEWPALET|20
|
||
.LONG nup1
|
||
.LONG BBS2
|
||
.WORD 5
|
||
.LONG BBS3
|
||
.WORD 5
|
||
.LONG BBS4
|
||
.WORD 5
|
||
.LONG BBS5
|
||
.WORD 5
|
||
.LONG 0
|
||
BLOOD:
|
||
;BLOODY CHUNK
|
||
.LONG rblot1
|
||
.WORD NEWPALET|20
|
||
.LONG nup1
|
||
.LONG rblot2
|
||
.WORD 5
|
||
.LONG rblot3
|
||
.WORD 5
|
||
.LONG rblot4
|
||
.WORD 5
|
||
.LONG rblot5
|
||
.WORD 5
|
||
.LONG rblot6
|
||
.WORD 5
|
||
.LONG rblot7
|
||
.WORD 5
|
||
.LONG rblot8
|
||
.WORD 4
|
||
.LONG rblot9
|
||
.WORD 4
|
||
.LONG rblot10
|
||
.WORD 5
|
||
.LONG 0
|
||
BLOOD2:
|
||
;BLOODY CHUNK
|
||
.LONG rblot1
|
||
.WORD NEWPALET|40
|
||
.LONG nup1
|
||
.LONG rblot2
|
||
.WORD 5
|
||
.LONG rblot3
|
||
.WORD 6
|
||
.LONG rblot4
|
||
.WORD 6
|
||
.LONG rblot5
|
||
.WORD 5
|
||
.LONG rblot6
|
||
.WORD 5
|
||
.LONG rblot7
|
||
.WORD 5
|
||
.LONG rblot8
|
||
.WORD 4
|
||
.LONG rblot9
|
||
.WORD 4
|
||
.LONG rblot10
|
||
.WORD 5
|
||
.LONG 0
|
||
OVALBLD:
|
||
;OVAL BLOOD EXPLOSION
|
||
.LONG bldclt1
|
||
.WORD NEWPALET|1
|
||
.LONG nup1
|
||
.LONG bldclt2
|
||
.WORD 6
|
||
.LONG bldclt3
|
||
.WORD 6
|
||
.LONG bldclt4
|
||
.WORD 6
|
||
.LONG bldclt5
|
||
.WORD 6
|
||
.LONG bldclt6
|
||
.WORD 6
|
||
.LONG bldclt7
|
||
.WORD 6
|
||
.LONG bldclt8
|
||
.WORD 7
|
||
.LONG 0
|
||
|
||
PARMS2 .LONG PARM1
|
||
.WORD FLIPBITS|18,(M_FLIPH+M_FLIPV)
|
||
.LONG PARM2
|
||
.WORD 5
|
||
.LONG PARM3
|
||
.WORD 5
|
||
.LONG PARM4
|
||
.WORD 5
|
||
.LONG PARM5
|
||
.WORD 5
|
||
.LONG PARM6
|
||
.WORD 6
|
||
.LONG PARM7
|
||
.WORD 6
|
||
.LONG PARM8
|
||
.WORD 6
|
||
.LONG PARM9
|
||
.WORD 6
|
||
.LONG PARM10
|
||
.WORD 9
|
||
.LONG 0
|
||
|
||
PLEGS2 .LONG PLEG1
|
||
.WORD FLIPBITS|2,(M_FLIPH+M_FLIPV)
|
||
.LONG PLEG2
|
||
.WORD 5
|
||
.LONG PLEG3
|
||
.WORD 5
|
||
.LONG PLEG4
|
||
.WORD 5
|
||
.LONG PLEG5
|
||
.WORD 5
|
||
.LONG PLEG6
|
||
.WORD 6
|
||
.LONG PLEG7
|
||
.WORD 6
|
||
.LONG PLEG8
|
||
.WORD 6
|
||
.LONG PLEG9
|
||
.WORD 6
|
||
.LONG PLEG10
|
||
.WORD 6
|
||
.LONG PLEG11
|
||
.WORD 9
|
||
.LONG 0
|
||
|
||
PLEGS .LONG PLEG1
|
||
.WORD 28
|
||
.LONG PLEG2
|
||
.WORD 5
|
||
.LONG PLEG3
|
||
.WORD 5
|
||
.LONG PLEG4
|
||
.WORD 5
|
||
.LONG PLEG5
|
||
.WORD 6
|
||
.LONG PLEG6
|
||
.WORD 6
|
||
.LONG PLEG7
|
||
.WORD 6
|
||
.LONG PLEG8
|
||
.WORD 6
|
||
.LONG PLEG9
|
||
.WORD 6
|
||
.LONG PLEG10
|
||
.WORD 6
|
||
.LONG PLEG11
|
||
.WORD 9
|
||
.LONG 0
|
||
|
||
PHEAD
|
||
.LONG PHEAD1
|
||
.WORD 25
|
||
.LONG PHEAD2
|
||
.WORD 9
|
||
.LONG PHEAD3
|
||
.WORD 9
|
||
.LONG PHEAD4
|
||
.WORD 9
|
||
.LONG PHEAD5
|
||
.WORD 10
|
||
.LONG PHEAD6
|
||
.WORD 11
|
||
.LONG PHEAD7
|
||
.WORD 10
|
||
.LONG PHEAD8
|
||
.WORD 9
|
||
.LONG PHEAD9
|
||
.WORD 8
|
||
.LONG PHEAD10
|
||
.WORD 8
|
||
.LONG PHEAD11
|
||
.WORD 8
|
||
.LONG 0
|
||
RLST1
|
||
.LONG YTRS1
|
||
.WORD 5
|
||
.LONG YTRS2
|
||
.WORD 5
|
||
.LONG YTRS3
|
||
.WORD 5
|
||
.LONG YTRS4
|
||
.WORD 5
|
||
.LONG YTRS5
|
||
.WORD 5
|
||
.LONG YTRS6
|
||
.WORD 5
|
||
.LONG YTRS7
|
||
.WORD 5
|
||
.LONG YTRS8
|
||
.WORD 5
|
||
.LONG YTRS9
|
||
.WORD 5
|
||
.LONG YTRS10
|
||
.WORD 5
|
||
.LONG 0
|
||
RLST2
|
||
.LONG YPC1
|
||
.WORD FLIPBITS|1,(M_FLIPV)
|
||
.LONG YPC2
|
||
.WORD 3
|
||
.LONG YPC3
|
||
.WORD 3
|
||
.LONG YPC4
|
||
.WORD 3
|
||
.LONG YPC5
|
||
.WORD 3
|
||
.LONG YPC6
|
||
.WORD 3
|
||
.LONG YPC7
|
||
.WORD 3
|
||
.LONG YPC8
|
||
.WORD 3
|
||
.LONG YPC9
|
||
.WORD 3
|
||
.LONG 0
|
||
RLST3
|
||
.LONG YPC1
|
||
.WORD FLIPBITS|21,(M_FLIPH)
|
||
.LONG YPC2
|
||
.WORD 4
|
||
.LONG YPC3
|
||
.WORD 4
|
||
.LONG YPC4
|
||
.WORD 4
|
||
.LONG YPC5
|
||
.WORD 4
|
||
.LONG YPC6
|
||
.WORD 4
|
||
.LONG YPC7
|
||
.WORD 4
|
||
.LONG YPC8
|
||
.WORD 4
|
||
.LONG YPC9
|
||
.WORD 4
|
||
.LONG 0
|
||
RLST4
|
||
.LONG YP1
|
||
.WORD FLIPBITS|18,(M_FLIPH)
|
||
.LONG YP2
|
||
.WORD 2
|
||
.LONG YP3
|
||
.WORD 2
|
||
.LONG YP4
|
||
.WORD 3
|
||
.LONG YP5
|
||
.WORD 3
|
||
.LONG YP6
|
||
.WORD 3
|
||
.LONG YP7
|
||
.WORD 3
|
||
.LONG YP8
|
||
.WORD 3
|
||
.LONG YP9
|
||
.WORD 3
|
||
.LONG YP10
|
||
.WORD 2
|
||
.LONG 0
|
||
RLST5
|
||
.LONG YP1
|
||
.WORD FLIPBITS|1,(M_FLIPV)
|
||
.LONG YP2
|
||
.WORD 3
|
||
.LONG YP3
|
||
.WORD 3
|
||
.LONG YP4
|
||
.WORD 4
|
||
.LONG YP5
|
||
.WORD 4
|
||
.LONG YP6
|
||
.WORD 4
|
||
.LONG YP7
|
||
.WORD 4
|
||
.LONG YP8
|
||
.WORD 3
|
||
.LONG YP9
|
||
.WORD 3
|
||
.LONG YP10
|
||
.WORD 3
|
||
.LONG 0
|
||
ADPCS4: ;ORB DEATH
|
||
;IN:
|
||
;A8=PNTR TO OBJECT TO BLOW UP
|
||
;A0=PROPER X,A1=Y
|
||
;PLACE INTO PCINFO TABLE FOR UPDATING BY THE PC DRIVER (PIECES) PROCESS
|
||
CALLA GETANIXY
|
||
MOVE A2,A1
|
||
MOVE A3,A0
|
||
;A0=PROPER X,A1=Y
|
||
;A6,A7=X,Y VEL FOR THIS PC
|
||
CLR A6
|
||
CLR A7
|
||
|
||
MOVI OPC1,A2
|
||
MOVI 200,A3
|
||
MOVI DMAWNZ|M_NOCOLL|M_FLIPV,A4 ;NON-ZERO VALUE
|
||
MOVI CLSNEUT|TYPNEUT,A5
|
||
CALLA BEGIN_OBJ2
|
||
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI ORBPC,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
MOVB @PCTOT,A2
|
||
CMPI 20,A2
|
||
JRGE OTOT2A
|
||
MOVB @NXT,A3
|
||
DEC A3
|
||
MOVB A3,@NXT
|
||
ANDI 03H,A3
|
||
SLL 5,A3
|
||
ADDI OIFPCS,A3
|
||
MOVE *A3,A3,L
|
||
JUMP A3
|
||
OIFPCS .LONG OTOT7,OTOT5,OTOT3,OTOT2
|
||
OTOT5
|
||
MOVB @PCTOT,A2
|
||
ADDI 06,A2
|
||
MOVB A2,@PCTOT
|
||
JRUC OPTOT5
|
||
OTOT3
|
||
MOVB @PCTOT,A2
|
||
CMPI 10,A2
|
||
JRLT OTOT7A
|
||
ADDI 04,A2
|
||
MOVB A2,@PCTOT
|
||
JRUC OPTOT3
|
||
OTOT2
|
||
MOVB @PCTOT,A2
|
||
CMPI 10,A2
|
||
JRLT OTOT7
|
||
OTOT2A
|
||
ADDI 02,A2
|
||
MOVB A2,@PCTOT
|
||
JRUC OPTOT2
|
||
OTOT7:
|
||
MOVB @PCTOT,A2
|
||
OTOT7A:
|
||
ADDI 08,A2
|
||
MOVB A2,@PCTOT
|
||
CALLR NEWV
|
||
CALLA BOBJ2A
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI ORBPC2,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
CALLR NEWV
|
||
CALLA BOBJ2A
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI ORBPC3,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
OPTOT5 CALLR NEWV
|
||
CALLA BOBJ2A
|
||
|
||
; ; MOVE A10,A10
|
||
; JREQ Y1
|
||
;CHANGE TO PLAYER 2 PAL IF NEEDED!
|
||
;CHANGE TO NUP2 PAL
|
||
; MOVI nup2,A0
|
||
; CALLA GETFPAL ;GET A COLOR MAP ASSIGNMENT
|
||
; MOVE A0,*A8(OPAL),W ;STORE THE NEW PALETTE
|
||
|
||
;Y1
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI ORBPC,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
CALLR NEWV
|
||
CALLA BOBJ2A
|
||
|
||
; MOVE A10,A10
|
||
; JREQ Y2
|
||
;CHANGE TO PLAYER 2 PAL IF NEEDED!
|
||
;CHANGE TO NUP2 PAL
|
||
; MOVI nup2,A0
|
||
; CALLA GETFPAL ;GET A COLOR MAP ASSIGNMENT
|
||
; MOVE A0,*A8(OPAL),W ;STORE THE NEW PALETTE
|
||
|
||
;Y2
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI ORBPC3,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
OPTOT3 CALLR NEWV2
|
||
CALLA BOBJ2A
|
||
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI ORBPC4,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
CALLR NEWV
|
||
CALLA BOBJ2A
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI ORBPC2,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
|
||
OPTOT2 CALLR NEWV2
|
||
CALLA BOBJ2A
|
||
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI ORBPC,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
DIE
|
||
EYEBL0
|
||
SLEEP 19
|
||
EYEBL
|
||
MOVI -08000H,B0
|
||
MOVI 08000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A6
|
||
MOVI -07000H,B0
|
||
MOVI 07000H,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A7
|
||
CALLA GETANIXY
|
||
MOVE A2,A1
|
||
ADDI 0200000H,A1
|
||
MOVE A3,A0
|
||
;A0=PROPER X,A1=Y
|
||
JAUC BLOE2
|
||
CHNKS2 SLEEP 1
|
||
TWOCHNKS
|
||
SLEEP 30
|
||
;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 02A0000H,A1
|
||
SUBI 040000H,A3
|
||
MOVE A3,A0
|
||
;A0=PROPER X,A1=Y
|
||
MOVI BLDOTS,A9
|
||
MOVI BBS1,A2 ;(OIMG)
|
||
MOVI 55,A3 ;(OZPOS)
|
||
MOVI DMAWNZ+M_NOCOLL,A4 ;(OFLAGS) NON-ZERO VALUE
|
||
MOVI CLSNEUT|TYPNEUT,A5 ;(OID)
|
||
CALLA BEGIN_OBJ2
|
||
JAUC FRANIM_DIE
|
||
; MOVK 1,A1
|
||
; JSRP FRANIM ;ANIMATE THE SUCKER
|
||
; MOVE A8,A0
|
||
; CALLA DELOBJ
|
||
; CALLA DELPAL
|
||
; DIE
|
||
|
||
ADPCS3: ;PLAYER DEATH
|
||
;IN:
|
||
;A8=PNTR TO OBJECT TO BLOW UP
|
||
|
||
;A0=PROPER X,A1=Y
|
||
;A6,A7=X,Y VEL FOR THIS PC
|
||
;PLACE INTO PCINFO TABLE FOR UPDATING BY THE PC DRIVER (PIECES) PROCESS
|
||
MOVI 500,A0
|
||
CALLA RANDPER
|
||
JRNC EYB
|
||
MOVE @FACEON,A0
|
||
JRNZ EYB
|
||
CREATE 0,EYEBL
|
||
MOVI 500,A0
|
||
CALLA RANDPER
|
||
JRNC AZ
|
||
CREATE 0,EYEBL0
|
||
AZ
|
||
EYB
|
||
CALLA GETANIXY
|
||
MOVE A2,A1
|
||
ADDI 0300000H,A1
|
||
MOVE A3,A0
|
||
;A0=PROPER X,A1=Y
|
||
CLR A6
|
||
CLR A7
|
||
|
||
MOVI PARM1,A2
|
||
MOVI 200,A3
|
||
MOVI DMAWNZ|M_NOCOLL|M_FLIPV,A4 ;NON-ZERO VALUE
|
||
MOVI CLSNEUT|TYPNEUT,A5
|
||
MOVE A8,A9
|
||
CALLA BEGIN_OBJ2
|
||
|
||
CLR A10
|
||
MOVE *A9(OPLINK),A0,L
|
||
MOVB *A0(PNUM),A0
|
||
CMPI 1,A0
|
||
JREQ OKP
|
||
;CHANGE TO PLAYER 2 PAL IF NEEDED!
|
||
;CHANGE TO NUP2 PAL
|
||
MOVK 1,A10
|
||
OKP
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI BLOOD,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
MOVB @NXT,A3
|
||
DEC A3
|
||
MOVB A3,@NXT
|
||
ANDI 03H,A3
|
||
SLL 5,A3
|
||
ADDI PIFPCS,A3
|
||
MOVE *A3,A3,L
|
||
JUMP A3
|
||
;PIFPCS .LONG PTOT5,PTOT5,PTOT5,PTOT5
|
||
PIFPCS .LONG PTOT7,PTOT5,PTOT3,PTOT2
|
||
PTOT5
|
||
MOVB @PCTOT,A2
|
||
ADDI 06,A2
|
||
MOVB A2,@PCTOT
|
||
JRUC PPTOT5
|
||
PTOT3
|
||
MOVB @PCTOT,A2
|
||
CMPI 10,A2
|
||
JRLT PTOT7A
|
||
ADDI 04,A2
|
||
MOVB A2,@PCTOT
|
||
JRUC PPTOT3
|
||
PTOT2
|
||
MOVB @PCTOT,A2
|
||
CMPI 10,A2
|
||
JRLT PTOT7
|
||
ADDI 02,A2
|
||
MOVB A2,@PCTOT
|
||
JRUC PPTOT2
|
||
PTOT7:
|
||
MOVB @PCTOT,A2
|
||
PTOT7A:
|
||
ADDI 08,A2
|
||
MOVB A2,@PCTOT
|
||
CALLR NEWV
|
||
CALLA BOBJ2A
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI BLOOD2,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
CALLR NEWV
|
||
CALLA BOBJ2A
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI BLOOD,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
PPTOT5 CALLR NEWV
|
||
CALLA BOBJ2A
|
||
|
||
MOVE A10,A10
|
||
JREQ Y1
|
||
;CHANGE TO PLAYER 2 PAL IF NEEDED!
|
||
;CHANGE TO NUP2 PAL
|
||
MOVI nup2,A0
|
||
CALLA GETFPAL ;GET A COLOR MAP ASSIGNMENT
|
||
MOVE A0,*A8(OPAL),W ;STORE THE NEW PALETTE
|
||
|
||
Y1 MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI PLEGS2,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
CALLR NEWV
|
||
CALLA BOBJ2A
|
||
|
||
MOVE A10,A10
|
||
JREQ Y2
|
||
;CHANGE TO PLAYER 2 PAL IF NEEDED!
|
||
;CHANGE TO NUP2 PAL
|
||
MOVI nup2,A0
|
||
CALLA GETFPAL ;GET A COLOR MAP ASSIGNMENT
|
||
MOVE A0,*A8(OPAL),W ;STORE THE NEW PALETTE
|
||
|
||
Y2 MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI PHEAD,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
PPTOT3 CALLR NEWV2
|
||
CALLA BOBJ2A
|
||
|
||
MOVE A10,A10
|
||
JREQ Y3
|
||
;CHANGE TO PLAYER 2 PAL IF NEEDED!
|
||
;CHANGE TO NUP2 PAL
|
||
MOVI nup2,A0
|
||
CALLA GETFPAL ;GET A COLOR MAP ASSIGNMENT
|
||
MOVE A0,*A8(OPAL),W ;STORE THE NEW PALETTE
|
||
|
||
Y3 MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI PARMS2,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
CALLR NEWV
|
||
CALLA BOBJ2A
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI BLOOD2,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
|
||
PPTOT2 CALLR NEWV2
|
||
CALLA BOBJ2A
|
||
|
||
MOVE A10,A10
|
||
JREQ Y4
|
||
;CHANGE TO PLAYER 2 PAL IF NEEDED!
|
||
;CHANGE TO NUP2 PAL
|
||
MOVI nup2,A0
|
||
CALLA GETFPAL ;GET A COLOR MAP ASSIGNMENT
|
||
MOVE A0,*A8(OPAL),W ;STORE THE NEW PALETTE
|
||
|
||
Y4 MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI PLEGS,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
ADDIE DIE
|
||
;
|
||
;
|
||
ADDRPCS
|
||
;FOR ROBOT EXPLOSION
|
||
;A8=PNTR TO OBJECT TO BLOW UP
|
||
MOVB @PCTOT,A2
|
||
CMPI 040H,A2
|
||
JRHI ADDIE
|
||
MOVE A9,A6
|
||
MOVE A10,A7
|
||
MOVE *A8(OPAL),A10
|
||
CALLA GETANIXY
|
||
; MOVE A8,A0
|
||
; CALLA DELOBJ
|
||
MOVE A2,A1
|
||
MOVE A3,A0
|
||
;A0=PROPER X,A1=Y
|
||
|
||
|
||
ADDI 01A0000H,A1 ;RESET HULK ANI PNTS!
|
||
MOVI YPC1,A2
|
||
MOVI 200,A3
|
||
MOVI DMAWNZ|M_NOCOLL,A4 ;NON-ZERO VALUE
|
||
MOVI CLSNEUT|TYPNEUT,A5
|
||
CALLA BEGIN_OBJ2
|
||
MOVE A10,*A8(OPAL)
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI RLST1,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
MOVB @NXT,A3
|
||
DEC A3
|
||
MOVB A3,@NXT
|
||
ANDI 03H,A3
|
||
SLL 5,A3
|
||
ADDI RIFPCS2,A3
|
||
MOVE *A3,A3,L
|
||
JUMP A3
|
||
RIFPCS2 .LONG RTOT7,RTOT5,RTOT3,RTOT2
|
||
RTOT5
|
||
MOVB @PCTOT,A2
|
||
ADDI 06,A2
|
||
MOVB A2,@PCTOT
|
||
JRUC RGTOT5
|
||
RTOT3
|
||
MOVB @PCTOT,A2
|
||
CMPI 10,A2
|
||
JRLT RTOT7A
|
||
ADDI 04,A2
|
||
MOVB A2,@PCTOT
|
||
JRUC RGTOT3
|
||
RTOT2
|
||
MOVB @PCTOT,A2
|
||
CMPI 10,A2
|
||
JRLT RTOT7
|
||
ADDI 02,A2
|
||
MOVB A2,@PCTOT
|
||
JRUC RGTOT2
|
||
RTOT7:
|
||
MOVB @PCTOT,A2
|
||
RTOT7A:
|
||
ADDI 08,A2
|
||
MOVB A2,@PCTOT
|
||
CALLR NEWV ;GET VELS
|
||
CALLA BOBJ2A
|
||
MOVE A10,*A8(OPAL)
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI RLST2,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
CALLR NEWV2
|
||
CALLA BOBJ2A
|
||
MOVE A10,*A8(OPAL)
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI RLST3,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
RGTOT5 CALLR NEWV
|
||
CALLA BOBJ2A
|
||
MOVE A10,*A8(OPAL)
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI RLST3,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
CALLR NEWV2
|
||
CALLA BOBJ2A
|
||
MOVE A10,*A8(OPAL)
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI RLST2,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
RGTOT3 CALLR NEWV2
|
||
CALLA BOBJ2A
|
||
MOVE A10,*A8(OPAL)
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI RLST3,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
CALLR NEWV
|
||
CALLA BOBJ2A
|
||
MOVE A10,*A8(OPAL)
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI RLST4,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
|
||
RGTOT2 CALLR NEWV2
|
||
CALLA BOBJ2A
|
||
MOVE A10,*A8(OPAL)
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI RLST5,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
DIE
|
||
|
||
ADDPCS2:
|
||
;FOR SNAKE EXPLOSION
|
||
;A8=PNTR TO OBJECT TO BLOW UP
|
||
CALLA GETANIXY
|
||
MOVE A2,A1
|
||
MOVE A3,A0
|
||
;A0=PROPER X,A1=Y
|
||
CLR A6
|
||
CLR A7
|
||
; MOVE A9,A6
|
||
; MOVE A10,A7
|
||
;A6,A7=X,Y VEL FOR THIS PC
|
||
;PLACE INTO PCINFO TABLE FOR UPDATING BY THE PC DRIVER (PIECES) PROCESS
|
||
; MOVE A6,@TMP1,L
|
||
; MOVE A7,@TMP2,L
|
||
|
||
; ADDI 0160000H,A1 ;RESET HULK ANI PNTS!
|
||
ADDI 01A0000H,A1 ;RESET HULK ANI PNTS!
|
||
MOVI bldclt1,A2
|
||
MOVI 200,A3
|
||
MOVI DMAWNZ|M_NOCOLL,A4 ;NON-ZERO VALUE
|
||
MOVI CLSNEUT|TYPNEUT,A5
|
||
CALLA BEGIN_OBJ2
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI BLOOD,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
MOVB @NXT,A3
|
||
DEC A3
|
||
MOVB A3,@NXT
|
||
ANDI 03H,A3
|
||
SLL 5,A3
|
||
ADDI DIFPCS2,A3
|
||
MOVE *A3,A3,L
|
||
JUMP A3
|
||
DIFPCS2 .LONG STOT7,STOT5,STOT3,STOT2
|
||
STOT5
|
||
MOVB @PCTOT,A2
|
||
ADDI 06,A2
|
||
MOVB A2,@PCTOT
|
||
JRUC SGTOT5
|
||
STOT3
|
||
MOVB @PCTOT,A2
|
||
CMPI 10,A2
|
||
JRLT STOT7A
|
||
ADDI 04,A2
|
||
MOVB A2,@PCTOT
|
||
JRUC SGTOT3
|
||
STOT2
|
||
MOVB @PCTOT,A2
|
||
CMPI 10,A2
|
||
JRLT STOT7
|
||
ADDI 02,A2
|
||
MOVB A2,@PCTOT
|
||
JRUC SGTOT2
|
||
STOT7:
|
||
MOVB @PCTOT,A2
|
||
STOT7A:
|
||
ADDI 08,A2
|
||
MOVB A2,@PCTOT
|
||
CALLR NEWV ;GET VELS
|
||
CALLA BOBJ2A
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI BLOOD,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
CALLR NEWV
|
||
CALLA BOBJ2A
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI BLOOD2,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
SGTOT5 CALLR NEWV
|
||
CALLA BOBJ2A
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI BLOOD,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
CALLR NEWV
|
||
CALLA BOBJ2A
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI HD,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
SGTOT3 CALLR NEWV2
|
||
CALLA BOBJ2A
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI PC,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
CALLR NEWV
|
||
CALLA BOBJ2A
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI BLOOD,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
|
||
SGTOT2 CALLR NEWV2
|
||
CALLA BOBJ2A
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI BLOOD2,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
DIE
|
||
|
||
ADPCS2:
|
||
;FAT GUY CALLS THIS
|
||
;A8=PNTR TO OBJECT TO BLOW UP
|
||
CALLA GETANIXY
|
||
MOVE A2,A1
|
||
SUBI 0140000H,A1
|
||
MOVE A3,A0
|
||
;A0=PROPER X,A1=Y
|
||
CLR A6
|
||
CLR A7
|
||
JRUC ADPCS1A
|
||
ADPCS1:
|
||
;A8=PNTR TO OBJECT TO BLOW UP
|
||
CALLA GETANIXY
|
||
MOVE A2,A1
|
||
ADDI 01A0000H,A1
|
||
MOVE A3,A0
|
||
;A0=PROPER X,A1=Y
|
||
CLR A6
|
||
CLR A7
|
||
JRUC ADPCS1A
|
||
|
||
ADDPCS:
|
||
;A0=PROPER X,A1=Y
|
||
;A6,A7=X,Y VEL FOR THIS PC
|
||
;PLACE INTO PCINFO TABLE FOR UPDATING BY THE PC DRIVER (PIECES) PROCESS
|
||
; MOVE A6,@TMP1,L
|
||
; MOVE A7,@TMP2,L
|
||
ADPCS1A:
|
||
MOVE *A8(OPAL),A10
|
||
MOVE @HULKTYP,A2
|
||
JRZ NOSW
|
||
PUSH A0
|
||
MOVI BLODP,A0
|
||
CALLA GETFPAL
|
||
MOVE A0,A10
|
||
PULL A0
|
||
NOSW
|
||
ADDI 01A0000H,A1 ;RESET HULK ANI PNTS!
|
||
MOVI GLOB1,A2
|
||
MOVI 200,A3
|
||
MOVI DMAWNZ|M_NOCOLL|M_FLIPV,A4 ;NON-ZERO VALUE
|
||
MOVI CLSNEUT|TYPNEUT,A5
|
||
CALLA BEGIN_OBJ2
|
||
MOVE A10,*A8(OPAL)
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI GLOB,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
MOVB @NXT,A3
|
||
DEC A3
|
||
MOVB A3,@NXT
|
||
ANDI 03H,A3
|
||
SLL 5,A3
|
||
ADDI DIFPCS,A3
|
||
MOVE *A3,A3,L
|
||
JUMP A3
|
||
DIFPCS .LONG TOT7,TOT5,TOT5,TOT7
|
||
TOT5
|
||
MOVB @PCTOT,A2
|
||
ADDI 06,A2
|
||
MOVB A2,@PCTOT
|
||
JRUC GTOT5
|
||
TOT7:
|
||
MOVB @PCTOT,A2
|
||
ADDI 08,A2
|
||
MOVB A2,@PCTOT
|
||
CALLR NEWV
|
||
CALLA BOBJ2A
|
||
MOVE A10,*A8(OPAL)
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI ARMS2,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
CALLR NEWV
|
||
CALLA BOBJ2A
|
||
MOVE A10,*A8(OPAL)
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI LEGS,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
GTOT5 CALLR NEWV
|
||
CALLA BOBJ2A
|
||
MOVE A10,*A8(OPAL)
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI LEGS2,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
CALLR NEWV
|
||
CALLA BOBJ2A
|
||
MOVE A10,*A8(OPAL)
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI HD,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
;GTOT3
|
||
CALLR NEWV2
|
||
CALLA BOBJ2A
|
||
MOVE A10,*A8(OPAL)
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI PC,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
CALLR NEWV
|
||
CALLA BOBJ2A
|
||
MOVE A10,*A8(OPAL)
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI ARMS,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
|
||
;GTOT2
|
||
CALLR NEWV2
|
||
CALLA BOBJ2A
|
||
MOVE A10,*A8(OPAL)
|
||
MOVE @LASTPC,A0,L
|
||
MOVE A8,*A0+,L
|
||
MOVK 1,A1
|
||
MOVE A1,*A0+,W ;INIT TICK CNT
|
||
MOVI PCS2,A9
|
||
MOVE A9,*A0+,L
|
||
MOVE A0,@LASTPC,L
|
||
|
||
DIE
|
||
|
||
NEWV MOVI -0B000H,B0
|
||
MOVI 0B000H,B1
|
||
CALLA RANGRAND
|
||
ADD A6,A0
|
||
MOVE A0,@XVEL,L
|
||
MOVI -0A000H,B0
|
||
MOVI 0A000H,B1
|
||
CALLA RANGRAND
|
||
ADD A7,A0
|
||
MOVE A0,@YVEL,L
|
||
RETS
|
||
|
||
NEWV2 MOVI -0E000H,B0
|
||
MOVI 0E000H,B1
|
||
CALLA RANGRAND
|
||
ADD A6,A0
|
||
MOVE A0,@XVEL,L
|
||
MOVI -0C000H,B0
|
||
MOVI 0C000H,B1
|
||
CALLA RANGRAND
|
||
ADD A7,A0
|
||
MOVE A0,@YVEL,L
|
||
RETS
|
||
PIECES:
|
||
CLR A0
|
||
MOVI PCINFO,A1
|
||
MOVI PCSMAX,A2
|
||
PCL1: MOVE A0,*A1+,L
|
||
MOVE A0,*A1+,W
|
||
MOVE A0,*A1+,L
|
||
DSJS A2,PCL1
|
||
;
|
||
MOVI PCINFO,A0
|
||
MOVE A0,@LASTPC,L
|
||
|
||
PCTP: MOVI PCINFO,A3
|
||
PCTP1:
|
||
MOVE *A3+,A8,L
|
||
JREQ DN
|
||
;PC PNTR FOUND
|
||
MOVE *A3,A0,W ;GET SLP TIME
|
||
DEC A0
|
||
MOVE A0,*A3+,W
|
||
JRNE PCOUTA
|
||
;READY FOR ANIMATION ON THIS PIECE
|
||
MOVE *A3,A9,L ;GET FRANIM LIST
|
||
MOVK 4,A1
|
||
JSRP FRANIM ;PIG ON CYCLES!
|
||
JRC YDONE ;GET RID OF PIECE
|
||
MOVE A9,*A3,L
|
||
SUBI 16,A3
|
||
MOVE A0,*A3,W
|
||
|
||
PCOUT:
|
||
ADDI 48,A3
|
||
JRUC PCTP1
|
||
PCOUTA:
|
||
ADDI 32,A3
|
||
JRUC PCTP1
|
||
|
||
YDONE: SUBI 48,A3
|
||
;ONLY NECESSARY IF ONLY PIECE IN LIST?
|
||
CLR A0
|
||
MOVE A0,*A3,L
|
||
MOVE A8,A0
|
||
CALLA DELOBJ
|
||
MOVB @PCTOT,A0
|
||
DEC A0
|
||
MOVB A0,@PCTOT
|
||
JRNN YD
|
||
CLR A0
|
||
MOVB A0,@PCTOT
|
||
YD
|
||
MOVE @LASTPC,A0,L
|
||
SUBI 80,A0
|
||
MOVE A0,@LASTPC,L
|
||
MOVE *A0,A5,L
|
||
JREQ DN ;BR=ONLY 1 PC IN LIST AND IT DIED!
|
||
|
||
MOVE *A0+,A1,L
|
||
MOVE *A0+,A2,W
|
||
MOVE *A0,A5,L
|
||
CLR A4
|
||
SUBI 48,A0
|
||
MOVE A4,*A0,L ;ZERO OUT PREVIOUS LAST ENTRY
|
||
MOVE A1,*A3+,L
|
||
MOVE A2,*A3+,W
|
||
MOVE A5,*A3+,L
|
||
JRUC PCTP1
|
||
|
||
DN: SLEEP 1
|
||
JRUC PCTP
|
||
|
||
HDIE:
|
||
.LONG HIT1
|
||
.WORD FLIPBITS|5,0
|
||
.LONG HIT2
|
||
.WORD 4
|
||
.LONG HIT3
|
||
.WORD 3
|
||
.LONG HIT4
|
||
.WORD 3
|
||
.LONG HIT5
|
||
.WORD 3
|
||
.LONG SPLOTCH5
|
||
.WORD 3
|
||
.LONG SPLOTCH6
|
||
.WORD 3
|
||
.LONG SPLOTCH7
|
||
.WORD 3
|
||
.LONG SPLOTCH8
|
||
.WORD 3
|
||
.LONG 0
|
||
HDIER:
|
||
.LONG HIT1
|
||
.WORD FLIPBITS|5,(M_FLIPH)
|
||
.LONG HIT2
|
||
.WORD 4
|
||
.LONG HIT3
|
||
.WORD 3
|
||
.LONG HIT4
|
||
.WORD 3
|
||
.LONG HIT5
|
||
.WORD 3
|
||
.LONG SPLOTCH5
|
||
.WORD 3
|
||
.LONG SPLOTCH6
|
||
.WORD 3
|
||
.LONG SPLOTCH7
|
||
.WORD 3
|
||
.LONG SPLOTCH8
|
||
.WORD 3
|
||
.LONG 0
|
||
VDIE:
|
||
.LONG VHIT1
|
||
.WORD FLIPBITS|5,0
|
||
.LONG VHIT2
|
||
.WORD 4
|
||
.LONG VHIT3
|
||
.WORD 3
|
||
.LONG VHIT4
|
||
.WORD 3
|
||
.LONG VHIT5
|
||
.WORD 3
|
||
.LONG SPLOTCH5
|
||
.WORD 3
|
||
.LONG SPLOTCH6
|
||
.WORD 3
|
||
.LONG SPLOTCH7
|
||
.WORD 3
|
||
.LONG SPLOTCH8
|
||
.WORD 3
|
||
.LONG 0
|
||
VDIED:
|
||
.LONG VHIT1
|
||
.WORD FLIPBITS|5,0
|
||
.LONG VHIT2
|
||
.WORD 4
|
||
.LONG VHIT3
|
||
.WORD 3
|
||
.LONG VHIT4
|
||
.WORD 3
|
||
.LONG VHIT5
|
||
.WORD 3
|
||
.LONG SPLOTCH5
|
||
.WORD 3
|
||
.LONG SPLOTCH6
|
||
.WORD 3
|
||
.LONG SPLOTCH7
|
||
.WORD 3
|
||
.LONG SPLOTCH8
|
||
.WORD 3
|
||
.LONG 0
|
||
|
||
|
||
RED_CARPETX:
|
||
.LONG [0,0F8H],[098H,0200H],[0,0F8H],[088H,0F8H],[088H,0F8H]
|
||
RED_CARPETY:
|
||
.LONG [048H,0B8H],[048H,0B8H],[048H,0B8H],[044H,0FFH],[0,0C8H]
|
||
|
||
TABLEX:
|
||
;RIGHT FROM LEFT DOORWAY
|
||
.LONG [068H-18H,028H],[068H-18H,048H],[068H-18H,068H]
|
||
.LONG [068H-18H,088H]
|
||
|
||
.LONG [05AH-18H,0A8H],[054H-18H,0C8H]
|
||
.LONG [060H-18H,0E8H],[07AH-18H,0FCH]
|
||
|
||
.LONG [0B0H-18H,028H],[0B0H-18H,048H],[0B0H-18H,068H]
|
||
.LONG [0B0H-18H,088H]
|
||
|
||
.LONG [0BEH-18H,0A8H],[0C4H-18H,0C8H]
|
||
.LONG [0B8H-18H,0E8H],[09EH-18H,0FCH]
|
||
TABLEX1:
|
||
;DOWN FROM TOP DOORWAY
|
||
.LONG [020H-0H,0A0H+04H],[035H-0H,0A0H+04H],[04AH-0H,0A0H+04H]
|
||
.LONG [05FH-0H,098H+04H]
|
||
|
||
.LONG [078H-0H,08EH+04H],[095H-0H,08EH+04H]
|
||
.LONG [0AAH-0H,09CH+04H],[0B7H-0H,0B3H+04H]
|
||
|
||
.LONG [020H-0H,0EAH+04H],[035H-0H,0EAH+04H],[04AH-0H,0EAH+04H]
|
||
.LONG [05FH-0H,0F2H+04H]
|
||
|
||
.LONG [078H-0H,0FCH+04H],[095H-0H,0FCH+04H]
|
||
.LONG [0AAH-0H,0F4H+04H],[0B7H-0H,0DDH+04H]
|
||
|
||
TABLEX3:
|
||
;UP FROM BOTTOM
|
||
.LONG [0C0H+10H,0A0H+04H],[0ABH+10H,0A0H+04H],[096H+10H,0A0H+04H]
|
||
.LONG [081H+10H,098H+04H]
|
||
|
||
.LONG [068H+10H,08EH+04H],[04BH+10H,08EH+04H]
|
||
.LONG [036H+10H,09CH+04H],[029H+10H,0B3H+04H]
|
||
|
||
.LONG [0C0H+10H,0EAH+04H],[0ABH+10H,0EAH+04H],[096H+10H,0EAH+04H]
|
||
.LONG [081H+10H,0F2H+04H]
|
||
|
||
.LONG [068H+10H,0FCH+04H],[04BH+10H,0FCH+04H]
|
||
.LONG [036H+10H,0F4H+04H],[029H+10H,0DDH+04H]
|
||
;TABLEX2:
|
||
;LEFT FROM RIGHT DOORWAY
|
||
; .LONG [068H-18H,0158H],[068H-18H,0138H],[068H-18H,0118H]
|
||
; .LONG [068H-18H,0F8H]
|
||
|
||
; .LONG [05AH-18H,0D8H],[054H-18H,0B8H]
|
||
; .LONG [060H-18H,098H],[07AH-18H,08CH]
|
||
|
||
; .LONG [0B0H-18H,0158H],[0B0H-18H,0138H],[0B0H-18H,0118H]
|
||
; .LONG [0B0H-18H,0F8H]
|
||
|
||
; .LONG [0BEH-18H,0D8H],[0C4H-18H,0B8H]
|
||
; .LONG [0B8H-18H,098H],[09EH-18H,08CH]
|
||
|
||
;TRANSLATE:
|
||
; .WORD 3,7,5,1,4,6,2,8
|
||
;
|
||
;8 1 2
|
||
;7 3
|
||
;6 5 4
|
||
;
|
||
WALK_LIST:
|
||
.LONG T_PWK_UP,T_PWK_UPRGT,T_PWK_RGT,T_PWK_DNRGT,T_PWK_DN
|
||
.LONG T_PWK_DNLFT,T_PWK_LFT,T_PWK_UPLFT
|
||
WALK_LISTM:
|
||
.LONG TM_PWK_UP,TM_PWK_UPRGT,TM_PWK_RGT,TM_PWK_DNRGT,TM_PWK_DN
|
||
.LONG TM_PWK_DNLFT,TM_PWK_LFT,TM_PWK_UPLFT
|
||
WALK_LISTF:
|
||
.LONG TF_PWK_UP,TF_PWK_UPRGT,TF_PWK_RGT,TF_PWK_DNRGT,TF_PWK_DN
|
||
.LONG TF_PWK_DNLFT,TF_PWK_LFT,TF_PWK_UPLFT
|
||
|
||
WALK_LISTA:
|
||
.LONG T2_PWK_UP,T2_PWK_UPRGT,T2_PWK_RGT,T2_PWK_DNRGT,T2_PWK_DN
|
||
.LONG T2_PWK_DNLFT,T2_PWK_LFT,T2_PWK_UPLFT
|
||
WALK_LISTMA:
|
||
.LONG T2M_PWK_UP,T2M_PWK_UPRGT,T2M_PWK_RGT,T2M_PWK_DNRGT,T2M_PWK_DN
|
||
.LONG T2M_PWK_DNLFT,T2M_PWK_LFT,T2M_PWK_UPLFT
|
||
WALK_LISTFA:
|
||
.LONG T2F_PWK_UP,T2F_PWK_UPRGT,T2F_PWK_RGT,T2F_PWK_DNRGT,T2F_PWK_DN
|
||
.LONG T2F_PWK_DNLFT,T2F_PWK_LFT,T2F_PWK_UPLFT
|
||
|
||
;
|
||
;HULK ANIMATIONS TABLE 2
|
||
;
|
||
SPINFRMS:
|
||
.LONG gb12w2a,gb10w3a,gb9w4a,gb8w3a,gb6w5a,gb8w3a,gb9w4a,gb10w3a
|
||
SPINFRMS2:
|
||
.LONG SNG12A,SNG10A,SNG9A,SNG8A,SNG6A,SNG8A,SNG9A,SNG10A
|
||
SPINFLGS:
|
||
.WORD DMAWNZ,DMAWNZ+M_FLIPH,DMAWNZ+M_FLIPH,DMAWNZ+M_FLIPH,DMAWNZ
|
||
.WORD DMAWNZ,DMAWNZ,DMAWNZ
|
||
|
||
;
|
||
;GRUNT ANIMATION TABLES
|
||
;
|
||
T_PWK_UP:
|
||
.LONG gb12w1a
|
||
.WORD FLIPBITS|05,0
|
||
.LONG gb12w2a
|
||
.WORD 05
|
||
.LONG gb12w3a
|
||
.WORD 05
|
||
.LONG gb12w4a
|
||
.WORD 05
|
||
.LONG gb12w5a
|
||
.WORD 05
|
||
.LONG gb12w6a
|
||
.WORD 05
|
||
.LONG gb12w7a
|
||
.WORD 05
|
||
.LONG 0
|
||
T_PWK_DN:
|
||
.LONG gb6w1a
|
||
.WORD FLIPBITS|05,0
|
||
.LONG gb6w2a
|
||
.WORD 05
|
||
.LONG gb6w3a
|
||
.WORD 05
|
||
.LONG gb6w4a
|
||
.WORD 05
|
||
.LONG gb6w5a
|
||
.WORD 05
|
||
.LONG gb6w6a
|
||
.WORD 05
|
||
.LONG gb6w7a
|
||
.WORD 05
|
||
.LONG 0
|
||
T_PWK_RGT:
|
||
.LONG gb9w1a
|
||
.WORD FLIPBITS|05,(M_FLIPH)
|
||
.LONG gb9w2a
|
||
.WORD 05
|
||
.LONG gb9w3a
|
||
.WORD 05
|
||
.LONG gb9w4a
|
||
.WORD 05
|
||
.LONG gb9w5a
|
||
.WORD 05
|
||
.LONG gb9w6a
|
||
.WORD 05
|
||
.LONG gb9w7a
|
||
.WORD 05
|
||
.LONG 0
|
||
T_PWK_LFT:
|
||
.LONG gb9w1a
|
||
.WORD FLIPBITS|05,0
|
||
.LONG gb9w2a
|
||
.WORD 05
|
||
.LONG gb9w3a
|
||
.WORD 05
|
||
.LONG gb9w4a
|
||
.WORD 05
|
||
.LONG gb9w5a
|
||
.WORD 05
|
||
.LONG gb9w6a
|
||
.WORD 05
|
||
.LONG gb9w7a
|
||
.WORD 05
|
||
.LONG 0
|
||
|
||
T_PWK_UPRGT:
|
||
.LONG gb10w1a
|
||
.WORD FLIPBITS|05,(M_FLIPH)
|
||
.LONG gb10w2a
|
||
.WORD 05
|
||
.LONG gb10w3a
|
||
.WORD 05
|
||
.LONG gb10w4a
|
||
.WORD 05
|
||
.LONG gb10w5a
|
||
.WORD 05
|
||
.LONG gb10w6a
|
||
.WORD 05
|
||
.LONG gb10w7a
|
||
.WORD 05
|
||
.LONG 0
|
||
|
||
T_PWK_DNLFT:
|
||
.LONG gb8w1a
|
||
.WORD FLIPBITS|05,0
|
||
.LONG gb8w2a
|
||
.WORD 05
|
||
.LONG gb8w3a
|
||
.WORD 05
|
||
.LONG gb8w4a
|
||
.WORD 05
|
||
.LONG gb8w5a
|
||
.WORD 05
|
||
.LONG gb8w6a
|
||
.WORD 05
|
||
.LONG gb8w7a
|
||
.WORD 05
|
||
.LONG 0
|
||
T_PWK_UPLFT:
|
||
.LONG gb10w1a
|
||
.WORD FLIPBITS|05,0
|
||
.LONG gb10w2a
|
||
.WORD 05
|
||
.LONG gb10w3a
|
||
.WORD 05
|
||
.LONG gb10w4a
|
||
.WORD 05
|
||
.LONG gb10w5a
|
||
.WORD 05
|
||
.LONG gb10w6a
|
||
.WORD 05
|
||
.LONG gb10w7a
|
||
.WORD 05
|
||
.LONG 0
|
||
T_PWK_DNRGT:
|
||
.LONG gb8w1a
|
||
.WORD FLIPBITS|05,(M_FLIPH)
|
||
.LONG gb8w2a
|
||
.WORD 05
|
||
.LONG gb8w3a
|
||
.WORD 05
|
||
.LONG gb8w4a
|
||
.WORD 05
|
||
.LONG gb8w5a
|
||
.WORD 05
|
||
.LONG gb8w6a
|
||
.WORD 05
|
||
.LONG gb8w7a
|
||
.WORD 05
|
||
.LONG 0
|
||
|
||
|
||
|
||
;MEDIUM
|
||
TM_PWK_UP:
|
||
.LONG gb12w1a
|
||
.WORD FLIPBITS|04,0
|
||
.LONG gb12w2a
|
||
.WORD 04
|
||
.LONG gb12w3a
|
||
.WORD 04
|
||
.LONG gb12w4a
|
||
.WORD 04
|
||
.LONG gb12w5a
|
||
.WORD 04
|
||
.LONG gb12w6a
|
||
.WORD 04
|
||
.LONG gb12w7a
|
||
.WORD 04
|
||
.LONG 0
|
||
TM_PWK_DN:
|
||
.LONG gb6w1a
|
||
.WORD FLIPBITS|04,0
|
||
.LONG gb6w2a
|
||
.WORD 04
|
||
.LONG gb6w3a
|
||
.WORD 04
|
||
.LONG gb6w4a
|
||
.WORD 04
|
||
.LONG gb6w5a
|
||
.WORD 04
|
||
.LONG gb6w6a
|
||
.WORD 04
|
||
.LONG gb6w7a
|
||
.WORD 04
|
||
.LONG 0
|
||
TM_PWK_RGT:
|
||
.LONG gb9w1a
|
||
.WORD FLIPBITS|04,(M_FLIPH)
|
||
.LONG gb9w2a
|
||
.WORD 04
|
||
.LONG gb9w3a
|
||
.WORD 04
|
||
.LONG gb9w4a
|
||
.WORD 04
|
||
.LONG gb9w5a
|
||
.WORD 04
|
||
.LONG gb9w6a
|
||
.WORD 04
|
||
.LONG gb9w7a
|
||
.WORD 04
|
||
.LONG 0
|
||
TM_PWK_LFT:
|
||
.LONG gb9w1a
|
||
.WORD FLIPBITS|04,0
|
||
.LONG gb9w2a
|
||
.WORD 04
|
||
.LONG gb9w3a
|
||
.WORD 04
|
||
.LONG gb9w4a
|
||
.WORD 04
|
||
.LONG gb9w5a
|
||
.WORD 04
|
||
.LONG gb9w6a
|
||
.WORD 04
|
||
.LONG gb9w7a
|
||
.WORD 04
|
||
.LONG 0
|
||
|
||
TM_PWK_UPRGT:
|
||
.LONG gb10w1a
|
||
.WORD FLIPBITS|04,(M_FLIPH)
|
||
.LONG gb10w2a
|
||
.WORD 04
|
||
.LONG gb10w3a
|
||
.WORD 04
|
||
.LONG gb10w4a
|
||
.WORD 04
|
||
.LONG gb10w5a
|
||
.WORD 04
|
||
.LONG gb10w6a
|
||
.WORD 04
|
||
.LONG gb10w7a
|
||
.WORD 04
|
||
.LONG 0
|
||
|
||
TM_PWK_DNLFT:
|
||
.LONG gb8w1a
|
||
.WORD FLIPBITS|04,0
|
||
.LONG gb8w2a
|
||
.WORD 04
|
||
.LONG gb8w3a
|
||
.WORD 04
|
||
.LONG gb8w4a
|
||
.WORD 04
|
||
.LONG gb8w5a
|
||
.WORD 04
|
||
.LONG gb8w6a
|
||
.WORD 04
|
||
.LONG gb8w7a
|
||
.WORD 04
|
||
.LONG 0
|
||
TM_PWK_UPLFT:
|
||
.LONG gb10w1a
|
||
.WORD FLIPBITS|04,0
|
||
.LONG gb10w2a
|
||
.WORD 04
|
||
.LONG gb10w3a
|
||
.WORD 04
|
||
.LONG gb10w4a
|
||
.WORD 04
|
||
.LONG gb10w5a
|
||
.WORD 04
|
||
.LONG gb10w6a
|
||
.WORD 04
|
||
.LONG gb10w7a
|
||
.WORD 04
|
||
.LONG 0
|
||
TM_PWK_DNRGT:
|
||
.LONG gb8w1a
|
||
.WORD FLIPBITS|04,(M_FLIPH)
|
||
.LONG gb8w2a
|
||
.WORD 04
|
||
.LONG gb8w3a
|
||
.WORD 04
|
||
.LONG gb8w4a
|
||
.WORD 04
|
||
.LONG gb8w5a
|
||
.WORD 04
|
||
.LONG gb8w6a
|
||
.WORD 04
|
||
.LONG gb8w7a
|
||
.WORD 04
|
||
.LONG 0
|
||
; FAST
|
||
TF_PWK_UP:
|
||
.LONG gb12w1a
|
||
.WORD FLIPBITS|03,0
|
||
.LONG gb12w2a
|
||
.WORD 03
|
||
.LONG gb12w3a
|
||
.WORD 03
|
||
.LONG gb12w4a
|
||
.WORD 03
|
||
.LONG gb12w5a
|
||
.WORD 03
|
||
.LONG gb12w6a
|
||
.WORD 03
|
||
.LONG gb12w7a
|
||
.WORD 03
|
||
.LONG 0
|
||
TF_PWK_DN:
|
||
.LONG gb6w1a
|
||
.WORD FLIPBITS|03,0
|
||
.LONG gb6w2a
|
||
.WORD 03
|
||
.LONG gb6w3a
|
||
.WORD 03
|
||
.LONG gb6w4a
|
||
.WORD 03
|
||
.LONG gb6w5a
|
||
.WORD 03
|
||
.LONG gb6w6a
|
||
.WORD 03
|
||
.LONG gb6w7a
|
||
.WORD 03
|
||
.LONG 0
|
||
TF_PWK_RGT:
|
||
.LONG gb9w1a
|
||
.WORD FLIPBITS|03,(M_FLIPH)
|
||
.LONG gb9w2a
|
||
.WORD 03
|
||
.LONG gb9w3a
|
||
.WORD 03
|
||
.LONG gb9w4a
|
||
.WORD 03
|
||
.LONG gb9w5a
|
||
.WORD 03
|
||
.LONG gb9w6a
|
||
.WORD 03
|
||
.LONG gb9w7a
|
||
.WORD 03
|
||
.LONG 0
|
||
TF_PWK_LFT:
|
||
.LONG gb9w1a
|
||
.WORD FLIPBITS|03,0
|
||
.LONG gb9w2a
|
||
.WORD 03
|
||
.LONG gb9w3a
|
||
.WORD 03
|
||
.LONG gb9w4a
|
||
.WORD 03
|
||
.LONG gb9w5a
|
||
.WORD 03
|
||
.LONG gb9w6a
|
||
.WORD 03
|
||
.LONG gb9w7a
|
||
.WORD 03
|
||
.LONG 0
|
||
|
||
TF_PWK_UPRGT:
|
||
.LONG gb10w1a
|
||
.WORD FLIPBITS|03,(M_FLIPH)
|
||
.LONG gb10w2a
|
||
.WORD 03
|
||
.LONG gb10w3a
|
||
.WORD 03
|
||
.LONG gb10w4a
|
||
.WORD 03
|
||
.LONG gb10w5a
|
||
.WORD 03
|
||
.LONG gb10w6a
|
||
.WORD 03
|
||
.LONG gb10w7a
|
||
.WORD 03
|
||
.LONG 0
|
||
|
||
TF_PWK_DNLFT:
|
||
.LONG gb8w1a
|
||
.WORD FLIPBITS|03,0
|
||
.LONG gb8w2a
|
||
.WORD 03
|
||
.LONG gb8w3a
|
||
.WORD 03
|
||
.LONG gb8w4a
|
||
.WORD 03
|
||
.LONG gb8w5a
|
||
.WORD 03
|
||
.LONG gb8w6a
|
||
.WORD 03
|
||
.LONG gb8w7a
|
||
.WORD 03
|
||
.LONG 0
|
||
TF_PWK_UPLFT:
|
||
.LONG gb10w1a
|
||
.WORD FLIPBITS|03,0
|
||
.LONG gb10w2a
|
||
.WORD 03
|
||
.LONG gb10w3a
|
||
.WORD 03
|
||
.LONG gb10w4a
|
||
.WORD 03
|
||
.LONG gb10w5a
|
||
.WORD 03
|
||
.LONG gb10w6a
|
||
.WORD 03
|
||
.LONG gb10w7a
|
||
.WORD 03
|
||
.LONG 0
|
||
TF_PWK_DNRGT:
|
||
.LONG gb8w1a
|
||
.WORD FLIPBITS|03,(M_FLIPH)
|
||
.LONG gb8w2a
|
||
.WORD 03
|
||
.LONG gb8w3a
|
||
.WORD 03
|
||
.LONG gb8w4a
|
||
.WORD 03
|
||
.LONG gb8w5a
|
||
.WORD 03
|
||
.LONG gb8w6a
|
||
.WORD 03
|
||
.LONG gb8w7a
|
||
.WORD 03
|
||
.LONG 0
|
||
;SNAKE GRUNT TABLES
|
||
T2_PWK_UP:
|
||
.LONG SNG12A
|
||
.WORD FLIPBITS|06,0
|
||
.LONG SNG12B
|
||
.WORD 06
|
||
.LONG SNG12C
|
||
.WORD 06
|
||
.LONG SNG12D
|
||
.WORD 06
|
||
.LONG SNG12E
|
||
.WORD 06
|
||
.LONG SNG12F
|
||
.WORD 06
|
||
.LONG SNG12G
|
||
.WORD 06
|
||
.LONG 0
|
||
T2_PWK_DN:
|
||
.LONG SNG6A
|
||
.WORD FLIPBITS|06,0
|
||
.LONG SNG6B
|
||
.WORD 06
|
||
.LONG SNG6C
|
||
.WORD 06
|
||
.LONG SNG6D
|
||
.WORD 06
|
||
.LONG SNG6E
|
||
.WORD 06
|
||
.LONG SNG6F
|
||
.WORD 06
|
||
.LONG SNG6G
|
||
.WORD 06
|
||
.LONG 0
|
||
T2_PWK_RGT:
|
||
.LONG SNG9A
|
||
.WORD FLIPBITS|06,(M_FLIPH)
|
||
.LONG SNG9B
|
||
.WORD 06
|
||
.LONG SNG9C
|
||
.WORD 06
|
||
.LONG SNG9D
|
||
.WORD 06
|
||
.LONG SNG9E
|
||
.WORD 06
|
||
.LONG SNG9F
|
||
.WORD 06
|
||
.LONG SNG9G
|
||
.WORD 06
|
||
.LONG 0
|
||
T2_PWK_LFT:
|
||
.LONG SNG9A
|
||
.WORD FLIPBITS|06,0
|
||
.LONG SNG9B
|
||
.WORD 06
|
||
.LONG SNG9C
|
||
.WORD 06
|
||
.LONG SNG9D
|
||
.WORD 06
|
||
.LONG SNG9E
|
||
.WORD 06
|
||
.LONG SNG9F
|
||
.WORD 06
|
||
.LONG SNG9G
|
||
.WORD 06
|
||
.LONG 0
|
||
|
||
T2_PWK_UPRGT:
|
||
.LONG SNG10A
|
||
.WORD FLIPBITS|06,(M_FLIPH)
|
||
.LONG SNG10B
|
||
.WORD 06
|
||
.LONG SNG10C
|
||
.WORD 06
|
||
.LONG SNG10D
|
||
.WORD 06
|
||
.LONG SNG10E
|
||
.WORD 06
|
||
.LONG SNG10F
|
||
.WORD 06
|
||
.LONG SNG10G
|
||
.WORD 06
|
||
.LONG 0
|
||
|
||
T2_PWK_DNLFT:
|
||
.LONG SNG8A
|
||
.WORD FLIPBITS|06,0
|
||
.LONG SNG8B
|
||
.WORD 06
|
||
.LONG SNG8C
|
||
.WORD 06
|
||
.LONG SNG8D
|
||
.WORD 06
|
||
.LONG SNG8E
|
||
.WORD 06
|
||
.LONG SNG8F
|
||
.WORD 06
|
||
.LONG SNG8G
|
||
.WORD 06
|
||
.LONG 0
|
||
T2_PWK_UPLFT:
|
||
.LONG SNG10A
|
||
.WORD FLIPBITS|06,0
|
||
.LONG SNG10B
|
||
.WORD 06
|
||
.LONG SNG10C
|
||
.WORD 06
|
||
.LONG SNG10D
|
||
.WORD 06
|
||
.LONG SNG10E
|
||
.WORD 06
|
||
.LONG SNG10F
|
||
.WORD 06
|
||
.LONG SNG10G
|
||
.WORD 06
|
||
.LONG 0
|
||
T2_PWK_DNRGT:
|
||
.LONG SNG8A
|
||
.WORD FLIPBITS|06,(M_FLIPH)
|
||
.LONG SNG8B
|
||
.WORD 06
|
||
.LONG SNG8C
|
||
.WORD 06
|
||
.LONG SNG8D
|
||
.WORD 06
|
||
.LONG SNG8E
|
||
.WORD 06
|
||
.LONG SNG8F
|
||
.WORD 06
|
||
.LONG SNG8G
|
||
.WORD 06
|
||
.LONG 0
|
||
|
||
|
||
;MEDIUM
|
||
T2M_PWK_UP:
|
||
.LONG SNG12A
|
||
.WORD FLIPBITS|05,0
|
||
.LONG SNG12B
|
||
.WORD 05
|
||
.LONG SNG12C
|
||
.WORD 05
|
||
.LONG SNG12D
|
||
.WORD 05
|
||
.LONG SNG12E
|
||
.WORD 05
|
||
.LONG SNG12F
|
||
.WORD 05
|
||
.LONG SNG12G
|
||
.WORD 05
|
||
.LONG 0
|
||
T2M_PWK_DN:
|
||
.LONG SNG6A
|
||
.WORD FLIPBITS|05,0
|
||
.LONG SNG6B
|
||
.WORD 05
|
||
.LONG SNG6C
|
||
.WORD 05
|
||
.LONG SNG6D
|
||
.WORD 05
|
||
.LONG SNG6E
|
||
.WORD 05
|
||
.LONG SNG6F
|
||
.WORD 05
|
||
.LONG SNG6G
|
||
.WORD 05
|
||
.LONG 0
|
||
T2M_PWK_RGT:
|
||
.LONG SNG9A
|
||
.WORD FLIPBITS|05,(M_FLIPH)
|
||
.LONG SNG9B
|
||
.WORD 05
|
||
.LONG SNG9C
|
||
.WORD 05
|
||
.LONG SNG9D
|
||
.WORD 05
|
||
.LONG SNG9E
|
||
.WORD 05
|
||
.LONG SNG9F
|
||
.WORD 05
|
||
.LONG SNG9G
|
||
.WORD 05
|
||
.LONG 0
|
||
T2M_PWK_LFT:
|
||
.LONG SNG9A
|
||
.WORD FLIPBITS|05,0
|
||
.LONG SNG9B
|
||
.WORD 05
|
||
.LONG SNG9C
|
||
.WORD 05
|
||
.LONG SNG9D
|
||
.WORD 05
|
||
.LONG SNG9E
|
||
.WORD 05
|
||
.LONG SNG9F
|
||
.WORD 05
|
||
.LONG SNG9G
|
||
.WORD 05
|
||
.LONG 0
|
||
|
||
T2M_PWK_UPRGT:
|
||
.LONG SNG10A
|
||
.WORD FLIPBITS|05,(M_FLIPH)
|
||
.LONG SNG10B
|
||
.WORD 05
|
||
.LONG SNG10C
|
||
.WORD 05
|
||
.LONG SNG10D
|
||
.WORD 05
|
||
.LONG SNG10E
|
||
.WORD 05
|
||
.LONG SNG10F
|
||
.WORD 05
|
||
.LONG SNG10G
|
||
.WORD 05
|
||
.LONG 0
|
||
|
||
T2M_PWK_DNLFT:
|
||
.LONG SNG8A
|
||
.WORD FLIPBITS|05,0
|
||
.LONG SNG8B
|
||
.WORD 05
|
||
.LONG SNG8C
|
||
.WORD 05
|
||
.LONG SNG8D
|
||
.WORD 05
|
||
.LONG SNG8E
|
||
.WORD 05
|
||
.LONG SNG8F
|
||
.WORD 05
|
||
.LONG SNG8G
|
||
.WORD 05
|
||
.LONG 0
|
||
T2M_PWK_UPLFT:
|
||
.LONG SNG10A
|
||
.WORD FLIPBITS|05,0
|
||
.LONG SNG10B
|
||
.WORD 05
|
||
.LONG SNG10C
|
||
.WORD 05
|
||
.LONG SNG10D
|
||
.WORD 05
|
||
.LONG SNG10E
|
||
.WORD 05
|
||
.LONG SNG10F
|
||
.WORD 05
|
||
.LONG SNG10G
|
||
.WORD 05
|
||
.LONG 0
|
||
T2M_PWK_DNRGT:
|
||
.LONG SNG8A
|
||
.WORD FLIPBITS|05,(M_FLIPH)
|
||
.LONG SNG8B
|
||
.WORD 05
|
||
.LONG SNG8C
|
||
.WORD 05
|
||
.LONG SNG8D
|
||
.WORD 05
|
||
.LONG SNG8E
|
||
.WORD 05
|
||
.LONG SNG8F
|
||
.WORD 05
|
||
.LONG SNG8G
|
||
.WORD 05
|
||
.LONG 0
|
||
; FAST
|
||
T2F_PWK_UP:
|
||
.LONG SNG12A
|
||
.WORD FLIPBITS|04,0
|
||
.LONG SNG12B
|
||
.WORD 04
|
||
.LONG SNG12C
|
||
.WORD 04
|
||
.LONG SNG12D
|
||
.WORD 04
|
||
.LONG SNG12E
|
||
.WORD 04
|
||
.LONG SNG12F
|
||
.WORD 04
|
||
.LONG SNG12G
|
||
.WORD 04
|
||
.LONG 0
|
||
T2F_PWK_DN:
|
||
.LONG SNG6A
|
||
.WORD FLIPBITS|04,0
|
||
.LONG SNG6B
|
||
.WORD 04
|
||
.LONG SNG6C
|
||
.WORD 04
|
||
.LONG SNG6D
|
||
.WORD 04
|
||
.LONG SNG6E
|
||
.WORD 04
|
||
.LONG SNG6F
|
||
.WORD 04
|
||
.LONG SNG6G
|
||
.WORD 04
|
||
.LONG 0
|
||
T2F_PWK_RGT:
|
||
.LONG SNG9A
|
||
.WORD FLIPBITS|04,(M_FLIPH)
|
||
.LONG SNG9B
|
||
.WORD 04
|
||
.LONG SNG9C
|
||
.WORD 04
|
||
.LONG SNG9D
|
||
.WORD 04
|
||
.LONG SNG9E
|
||
.WORD 04
|
||
.LONG SNG9F
|
||
.WORD 04
|
||
.LONG SNG9G
|
||
.WORD 04
|
||
.LONG 0
|
||
T2F_PWK_LFT:
|
||
.LONG SNG9A
|
||
.WORD FLIPBITS|04,0
|
||
.LONG SNG9B
|
||
.WORD 04
|
||
.LONG SNG9C
|
||
.WORD 04
|
||
.LONG SNG9D
|
||
.WORD 04
|
||
.LONG SNG9E
|
||
.WORD 04
|
||
.LONG SNG9F
|
||
.WORD 04
|
||
.LONG SNG9G
|
||
.WORD 04
|
||
.LONG 0
|
||
|
||
T2F_PWK_UPRGT:
|
||
.LONG SNG10A
|
||
.WORD FLIPBITS|04,(M_FLIPH)
|
||
.LONG SNG10B
|
||
.WORD 04
|
||
.LONG SNG10C
|
||
.WORD 04
|
||
.LONG SNG10D
|
||
.WORD 04
|
||
.LONG SNG10E
|
||
.WORD 04
|
||
.LONG SNG10F
|
||
.WORD 04
|
||
.LONG SNG10G
|
||
.WORD 04
|
||
.LONG 0
|
||
T2F_PWK_DNLFT:
|
||
.LONG SNG8A
|
||
.WORD FLIPBITS|04,0
|
||
.LONG SNG8B
|
||
.WORD 04
|
||
.LONG SNG8C
|
||
.WORD 04
|
||
.LONG SNG8D
|
||
.WORD 04
|
||
.LONG SNG8E
|
||
.WORD 04
|
||
.LONG SNG8F
|
||
.WORD 04
|
||
.LONG SNG8G
|
||
.WORD 04
|
||
.LONG 0
|
||
T2F_PWK_UPLFT:
|
||
.LONG SNG10A
|
||
.WORD FLIPBITS|04,0
|
||
.LONG SNG10B
|
||
.WORD 04
|
||
.LONG SNG10C
|
||
.WORD 04
|
||
.LONG SNG10D
|
||
.WORD 04
|
||
.LONG SNG10E
|
||
.WORD 04
|
||
.LONG SNG10F
|
||
.WORD 04
|
||
.LONG SNG10G
|
||
.WORD 04
|
||
.LONG 0
|
||
T2F_PWK_DNRGT:
|
||
.LONG SNG8A
|
||
.WORD FLIPBITS|04,(M_FLIPH)
|
||
.LONG SNG8B
|
||
.WORD 04
|
||
.LONG SNG8C
|
||
.WORD 04
|
||
.LONG SNG8D
|
||
.WORD 04
|
||
.LONG SNG8E
|
||
.WORD 04
|
||
.LONG SNG8F
|
||
.WORD 04
|
||
.LONG SNG8G
|
||
.WORD 04
|
||
.LONG 0
|
||
|
||
BAT8O .LONG SWING1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG SWING2
|
||
.WORD 4
|
||
.LONG SWING3
|
||
.WORD 4
|
||
.LONG SWING4
|
||
.WORD 4
|
||
.LONG SWING3
|
||
.WORD 4
|
||
.LONG SWING2
|
||
.WORD 4
|
||
.LONG SWING1
|
||
.WORD 4
|
||
.LONG SWING5
|
||
.WORD 4
|
||
.LONG SWING6
|
||
.WORD 4
|
||
.LONG SWING7
|
||
.WORD 4
|
||
.LONG SWING6
|
||
.WORD 4
|
||
.LONG SWING5
|
||
.WORD 4
|
||
.LONG 0
|
||
|
||
BAT8OS .LONG S8ATKA
|
||
.WORD FLIPBITS|4,0
|
||
.LONG S8ATKB
|
||
.WORD 4
|
||
.LONG S8ATKC
|
||
.WORD 4
|
||
.LONG S8ATKB
|
||
.WORD 4
|
||
.LONG S8ATKA
|
||
.WORD 4
|
||
.LONG S8ATKB
|
||
.WORD 4
|
||
.LONG S8ATKC
|
||
.WORD 4
|
||
.LONG S8ATKB
|
||
.WORD 4
|
||
.LONG S8ATKA
|
||
.WORD 4
|
||
.LONG S8ATKB
|
||
.WORD 4
|
||
.LONG S8ATKC
|
||
.WORD 4
|
||
.LONG S8ATKB
|
||
.WORD 4
|
||
.LONG 0
|
||
|
||
BAT4O .LONG SWING1
|
||
.WORD FLIPBITS|4,(M_FLIPH)
|
||
.LONG SWING2
|
||
.WORD 4
|
||
.LONG SWING3
|
||
.WORD 4
|
||
.LONG SWING4
|
||
.WORD 4
|
||
.LONG SWING3
|
||
.WORD 4
|
||
.LONG SWING2
|
||
.WORD 4
|
||
.LONG SWING1
|
||
.WORD 4
|
||
.LONG SWING5
|
||
.WORD 4
|
||
.LONG SWING6
|
||
.WORD 4
|
||
.LONG SWING7
|
||
.WORD 4
|
||
.LONG SWING6
|
||
.WORD 4
|
||
.LONG SWING5
|
||
.WORD 4
|
||
.LONG 0
|
||
|
||
BAT4OS .LONG S8ATKA
|
||
.WORD FLIPBITS|6,(M_FLIPH)
|
||
.LONG S8ATKB
|
||
.WORD 4
|
||
.LONG S8ATKC
|
||
.WORD 4
|
||
.LONG S8ATKB
|
||
.WORD 4
|
||
.LONG S8ATKA
|
||
.WORD 6
|
||
.LONG S8ATKB
|
||
.WORD 4
|
||
.LONG S8ATKC
|
||
.WORD 4
|
||
.LONG S8ATKB
|
||
.WORD 4
|
||
.LONG S8ATKA
|
||
.WORD 6
|
||
.LONG S8ATKB
|
||
.WORD 4
|
||
.LONG S8ATKC
|
||
.WORD 4
|
||
.LONG S8ATKB
|
||
.WORD 4
|
||
.LONG 0
|
||
|
||
|
||
|
||
BAT10O .LONG BAT2
|
||
.WORD FLIPBITS|4,0
|
||
.LONG BAT3
|
||
.WORD 4
|
||
.LONG BAT4
|
||
.WORD 4
|
||
.LONG BAT5
|
||
.WORD 4
|
||
.LONG BAT6
|
||
.WORD 4
|
||
.LONG BAT5
|
||
.WORD 4
|
||
.LONG BAT4
|
||
.WORD 4
|
||
.LONG BAT3
|
||
.WORD 4
|
||
.LONG BAT2
|
||
.WORD 4
|
||
.LONG BAT8
|
||
.WORD 4
|
||
.LONG BAT2
|
||
.WORD 4
|
||
.LONG 0
|
||
BAT10OS .LONG S10ATKA
|
||
.WORD FLIPBITS|4,0
|
||
.LONG S10ATKB
|
||
.WORD 4
|
||
.LONG S10ATKC
|
||
.WORD 4
|
||
.LONG S10ATKD
|
||
.WORD 4
|
||
.LONG S10ATKE
|
||
.WORD 6
|
||
.LONG S10ATKD
|
||
.WORD 4
|
||
.LONG S10ATKC
|
||
.WORD 4
|
||
.LONG S10ATKB
|
||
.WORD 4
|
||
.LONG S10ATKA
|
||
.WORD 4
|
||
.LONG S10ATKB
|
||
.WORD 4
|
||
.LONG S10ATKC
|
||
.WORD 4
|
||
.LONG 0
|
||
|
||
BAT2O .LONG BAT2
|
||
.WORD FLIPBITS|4,(M_FLIPH)
|
||
.LONG BAT3
|
||
.WORD 4
|
||
.LONG BAT4
|
||
.WORD 4
|
||
.LONG BAT5
|
||
.WORD 4
|
||
.LONG BAT6
|
||
.WORD 4
|
||
.LONG BAT5
|
||
.WORD 4
|
||
.LONG BAT4
|
||
.WORD 4
|
||
.LONG BAT3
|
||
.WORD 4
|
||
.LONG BAT2
|
||
.WORD 4
|
||
.LONG BAT8
|
||
.WORD 4
|
||
.LONG BAT2
|
||
.WORD 4
|
||
.LONG 0
|
||
BAT2OS .LONG S10ATKA
|
||
.WORD FLIPBITS|4,(M_FLIPH)
|
||
.LONG S10ATKB
|
||
.WORD 4
|
||
.LONG S10ATKC
|
||
.WORD 4
|
||
.LONG S10ATKD
|
||
.WORD 4
|
||
.LONG S10ATKE
|
||
.WORD 4
|
||
.LONG S10ATKD
|
||
.WORD 4
|
||
.LONG S10ATKC
|
||
.WORD 4
|
||
.LONG S10ATKB
|
||
.WORD 4
|
||
.LONG S10ATKA
|
||
.WORD 4
|
||
.LONG S10ATKB
|
||
.WORD 4
|
||
.LONG S10ATKC
|
||
.WORD 4
|
||
.LONG 0
|
||
|
||
|
||
BEGIN_OBJ:
|
||
;MAKE MORE EFFIECIENT
|
||
MOVE A0,@XVAL,L
|
||
MOVE A1,@YVAL,L
|
||
MOVE A2,@IMG,L
|
||
MOVE A3,@ZPOS
|
||
MOVE A4,@FLAGS
|
||
MOVE A5,@ID
|
||
MOVE A6,@XVEL,L
|
||
MOVE A7,@YVEL,L
|
||
MOVI GENERIC_INIT,A14 ;DEFINE OBJECT PARAMS
|
||
|
||
CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE
|
||
CALLA STFOBJ ;STUFF OBJECT DATA
|
||
MOVE A13,*A0(OPLINK),L
|
||
CALLA ADJSTWTL ;PUT US IN THE WORLD
|
||
CALLA INSOBJ ;INSERT OBJECT INTO LIST
|
||
MOVE A0,A8
|
||
RETS
|
||
;
|
||
BEGIN_OBJ2:
|
||
MOVE A0,@XVAL,L
|
||
MOVE A1,@YVAL,L
|
||
MOVE A2,@IMG,L
|
||
MOVE A3,@ZPOS
|
||
MOVE A4,@FLAGS
|
||
MOVE A5,@ID
|
||
MOVE A6,@XVEL,L
|
||
MOVE A7,@YVEL,L
|
||
BOBJ2A:
|
||
MOVI GENERIC_INIT,A14 ;DEFINE OBJECT PARAMS
|
||
|
||
CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE
|
||
CALLA STFOBJ ;STUFF OBJECT DATA
|
||
MOVE A13,*A0(OPLINK),L
|
||
CALLA INSOBJ ;INSERT OBJECT INTO LIST
|
||
MOVE A0,A8
|
||
RETS
|
||
|
||
BOOM2:
|
||
.LONG EXPb1
|
||
.WORD 3
|
||
.LONG EXPb2
|
||
.WORD 3
|
||
.LONG EXPb3
|
||
.WORD 4
|
||
.LONG EXPb4
|
||
.WORD 4
|
||
.LONG EXPb5
|
||
.WORD 4
|
||
.LONG EXPb6
|
||
.WORD 4
|
||
.LONG EXPb7
|
||
.WORD 5
|
||
.LONG EXPb8
|
||
.WORD 5
|
||
.LONG EXPb9
|
||
.WORD 5
|
||
.LONG 0
|
||
BOOM2Z:
|
||
.LONG EXPb1
|
||
.WORD 2
|
||
.LONG EXPb2
|
||
.WORD 2
|
||
.LONG EXPb3
|
||
.WORD 2
|
||
.LONG EXPb4
|
||
.WORD 2
|
||
.LONG EXPb5
|
||
.WORD 2
|
||
.LONG EXPb6
|
||
.WORD 2
|
||
.LONG EXPb7
|
||
.WORD 3
|
||
.LONG EXPb8
|
||
.WORD 3
|
||
.LONG EXPb9
|
||
.WORD 3
|
||
.LONG 0
|
||
BOOM2A:
|
||
.LONG EXPb1
|
||
.WORD 4
|
||
.LONG EXPb2
|
||
.WORD 3
|
||
.LONG EXPb3
|
||
.WORD NEWPALET|4
|
||
.LONG BULLET
|
||
.LONG EXPb4
|
||
.WORD 4
|
||
.LONG EXPb5
|
||
.WORD 4
|
||
.LONG EXPb6
|
||
.WORD 4
|
||
.LONG EXPb7
|
||
.WORD 5
|
||
.LONG EXPb8
|
||
.WORD 5
|
||
.LONG EXPb9
|
||
.WORD 5
|
||
.LONG 0
|
||
BOOM3:
|
||
.LONG EXPb1
|
||
.WORD NEWPALET|4
|
||
.LONG BULLET
|
||
.LONG EXPb2
|
||
.WORD 4
|
||
.LONG EXPb3
|
||
.WORD 5
|
||
.LONG EXPb4
|
||
.WORD 5
|
||
.LONG EXPb5
|
||
.WORD 5
|
||
.LONG EXPb6
|
||
.WORD 5
|
||
.LONG EXPb7
|
||
.WORD 5
|
||
.LONG EXPb8
|
||
.WORD 5
|
||
.LONG EXPb9
|
||
.WORD 5
|
||
.LONG 0
|
||
|
||
.END
|
||
|
||
|
||
|
||
|