2577 lines
49 KiB
NASM
2577 lines
49 KiB
NASM
.TITLE 'ROBOT BOSS MODULE'
|
||
.WIDTH 132
|
||
.OPTION B,D,L,T
|
||
.MNOLIST
|
||
;
|
||
; INITIATED: JAN 9, 1990
|
||
; MODIFIED: FOREVER....
|
||
; SOFTWARE: EUGENE JARVIS
|
||
;
|
||
; COPYRIGHT (C) 1990 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 "FLATFACE.TBL"
|
||
|
||
;
|
||
;SOUNDS
|
||
;
|
||
.REF EXP3HI,MISS,VICMSC,OUCH,EXP3,EXP3HIA
|
||
.REF AWWSND,EESND,ONOSND,HA2SND,WPWPSND,WPSSND
|
||
.REF AWWSND2,MCSPK8
|
||
;
|
||
;SYMBOLS EXTERNALLY DEFINED
|
||
;
|
||
.REF RINGS,STATUS,CLNPAL
|
||
.REF ECON,FRANIM,BOOM2,BIG3,SCRADD2,P1DATA,P2DATA,CHEERS
|
||
.REF PSTOP,BOSSON,DEXIT,FLASHME
|
||
.REF GET_VALID_XY,GAMSTATE,WAVEYX,BEGINOBJ,BEGINOBJ2,EHALT
|
||
.REF RANDPER,RANDOM,RANGRAND,DRINF,SET_GATE_2,GET_WVADDR
|
||
.REF RANDU,SRAND,PLYROBJS,SCORPLAY,GETPLYR,OFSCRTST
|
||
.REF GETPLYR,OFSCRTST,ORBBNDCK
|
||
.REF FINDPAL,PALSET,GETFPAL
|
||
.REF SMLEXP,BOOM2,DOSHK0
|
||
.REF EXPTLXY,EXPLRXY,CLUSTER,SHAKER
|
||
.REF BOOM4,PCNT,CKPLYR,HALT
|
||
*
|
||
*SYMBOLS DEFINED IN THIS FILE
|
||
*
|
||
.DEF O_FACE
|
||
.DEF FLATFACE,FACBUL,FACEON,PUSHFC,BLOE2,STFVEL,COLCYC
|
||
.DEF VMAX,SPTPRC
|
||
;
|
||
.BSS SNDCNT,16
|
||
.BSS RBFLG,16 ;RBOSS FLAG 0=HEAD,1=BLOWING,2=SKULL
|
||
.BSS FACEON,16
|
||
.BSS FACEXV,32 ;XVEL,YVEL
|
||
.BSS FACEYV,32
|
||
.BSS PAL1,16*16*2 ;ALLOCATE 2 X COLOR AREA IN RAM
|
||
.BSS PAL3,64*16*2
|
||
.BSS FACSTOR,35*16*4 ;FACE POINTER AREA
|
||
.BSS SKLFFLG,16 ;SKULL FIRE FLAG
|
||
.BSS RBANIFLG,16 ;ANIMATION IN PROGRESS FLAG
|
||
.BSS RBMODE,16 ;MODE FLAG
|
||
.BSS CANFLG,16 ;CANNON ON FLAG
|
||
.BSS PUMLCNT,16
|
||
|
||
*BOSS ENEMY DATA OBJECT BLOCK STRUCT
|
||
*
|
||
OBJPTR .SET >0 ;IMAGE OBJECT POINTER
|
||
HITCNT .SET >20 ;IMAGE HIT COUNTER
|
||
AFRAME .SET >28 ;CURRENT ANIMATION FRAME
|
||
DAMAGEL .SET >30 ;DAMAGE LEVEL
|
||
*>040=IMAGE 1 ETC.
|
||
*
|
||
O_FACE
|
||
CREATE TYPFACE,FLATFACE
|
||
RETS
|
||
BOSSIT
|
||
;SHAKE SCREEN
|
||
MOVI EXP3HI,A0
|
||
CALLA ONESND
|
||
CALLA DOSHK0
|
||
SLEEP 5
|
||
CALLA DOSHK0
|
||
SLEEP 5
|
||
MOVI EXP3HI,A0
|
||
CALLA ONESND
|
||
CALLA DOSHK0
|
||
SLEEP 5
|
||
CALLA DOSHK0
|
||
MOVI EXP3HI,A0
|
||
CALLA ONESND
|
||
SLEEP 5
|
||
CALLA DOSHK0
|
||
CREATE 0,OCH
|
||
DIE
|
||
OCH SLEEP 23
|
||
MOVI NOWAY2,A0
|
||
CALLA ONESND
|
||
DIE
|
||
|
||
* ROBOT BOSS PROCESS
|
||
* A8=OBJECT BLOCK CONTAINING OBJECT POINTERS
|
||
* A9=ANIMATION SCRIPT FLAG
|
||
* A11=PLAYER TO SEEK
|
||
* A13=PROCESS
|
||
* PDATA+>40=XACC
|
||
* PDATA+>50=YACC
|
||
*
|
||
FLATFACE
|
||
CREATE 0,BOSSIT
|
||
;FIRST FREE UP SOME PALS!
|
||
;GET RID OF UNEEDED PALS!
|
||
|
||
|
||
; SLEEP 8*60 ;FROM BEGIN OF SCROLL TO APPEAR ON SCREEN!
|
||
SLEEP 15 ;8
|
||
; MOVI DLST3,A1
|
||
; CALLA UNGET
|
||
CALLA CLNPAL
|
||
|
||
MOVK 1,A0
|
||
MOVE A0,@FACEON,W
|
||
MOVB A0,@BOSSON
|
||
|
||
|
||
|
||
CLR A0
|
||
MOVE A0,@CANFLG,W
|
||
MOVE A0,@RBMODE,W
|
||
MOVE A0,@RBFLG,W
|
||
MOVE A0,@FACEXV,L
|
||
MOVE A0,@FACEYV,L
|
||
MOVE A0,@SKLFFLG,W
|
||
MOVE A0,*A13(PDATA),W ;CLEAR ANIMATION POINTER
|
||
|
||
MOVE @WORLDTLX,A0,L ;GET STARTING COORD
|
||
ADDI >2E00000,A0
|
||
MOVE @WORLDTLY,A1,L
|
||
ADDI >800000,A1
|
||
CLR A11 ;DAMAGE LEVEL
|
||
CALLR RBINIT ;INITIALIZE FACE
|
||
|
||
SLEEP 3
|
||
|
||
MMTM SP,A8,A9,A10,A11
|
||
MOVI FCE1,A8 ;PAL NAME
|
||
MOVI PAL1,A9 ;RAM AREA
|
||
; .BSS PAL1,16*16*2 ;ALLOCATE 2 X COLOR AREA IN RAM
|
||
MOVI [53,61],A10 ;BEGIN/END COLOR #
|
||
MOVK 3,A11 ;RATE IN TICKS
|
||
CREATE CYCPID,COLCYC ;COLOR CYCLER ON
|
||
MMFM SP,A8,A9,A10,A11
|
||
|
||
SLEEP 2
|
||
; MOVI DLST,A1
|
||
; CALLA UNGET
|
||
CALLA CLNPAL
|
||
RBWAIT
|
||
SLEEP 2
|
||
MOVE @EHALT,A0
|
||
JRNZ RBWAIT ;WAIT FOR PLAYER TO ENTER
|
||
|
||
; MOVI DLST2,A1
|
||
; CALLA UNGET
|
||
CALLA CLNPAL
|
||
|
||
MOVE @STATUS,A0
|
||
CMPI 3,A0
|
||
JRZ P2A
|
||
CMPI 2,A0
|
||
JRZ P1A
|
||
MOVK 1,A9
|
||
MOVI 190,A10 ;TIME RINGS ARE ON
|
||
CREATE RNGPID,RINGS ;PLACE RING AROUND PLAYER X
|
||
JRUC P2OUT
|
||
P2A
|
||
MOVK 1,A9
|
||
MOVI 190,A10 ;TIME RINGS ARE ON
|
||
CREATE RNGPID,RINGS ;PLACE RING AROUND PLAYER X
|
||
P1A
|
||
MOVK 2,A9
|
||
MOVI 190,A10 ;TIME RINGS ARE ON
|
||
CREATE RNGPID,RINGS ;PLACE RING AROUND PLAYER X
|
||
P2OUT
|
||
|
||
MOVK 1,A0 ;REDO THIS CRAP FOR TURMELL BUG
|
||
MOVE A0,@FACEON,W
|
||
MOVB A0,@BOSSON
|
||
CALLA GETPLYR ;FIND PLAYER TO SEEK
|
||
MOVE A0,A11
|
||
CALLR GETRBV ;GET ROBOT BOSS VELOCITY
|
||
RBLP:
|
||
MOVI 10,A0
|
||
CALLA RANDPER ;ANIMATE BOSS??
|
||
JRNC RBOSS0
|
||
|
||
*DO SOME ANIMATION HERE
|
||
|
||
MOVE @RAND,A0,W
|
||
ZEXT A0,W ;GET RID OF SIGN EXTEND
|
||
SRL 13,A0
|
||
SLL 6,A0
|
||
ADDI ANIANITB,A0
|
||
MOVE *A0+,A9,L
|
||
MOVE *A0,A10,L
|
||
CREATE TYPFACE,ANISEQ
|
||
RBOSS0
|
||
MOVI 150,A0 ;FOLLOW WITH EYES?
|
||
CALLA RANDPER
|
||
JRNC RBOSS01 ;NO
|
||
MOVE @RBANIFLG,A0,W
|
||
JRNE RBOSS01
|
||
CALLR FOLOEYE ;FOLLOW HIS EYES!!!!
|
||
RBOSS01
|
||
MOVI 200,A0 ;GET NEW VELOCITY?
|
||
CALLA RANDPER
|
||
JRNC MVV01 ;NO
|
||
CALLR GETRBV
|
||
MOVI 40,A0 ;GET NEW PLAYER TO SEEK
|
||
CALLA RANDPER
|
||
JRNC MVV01 ;NO
|
||
CALLA GETPLYR
|
||
MOVE A0,A11
|
||
MVV01
|
||
MOVI >28,A0 ;CHANGE CHASE MODE
|
||
CALLA RANDPER
|
||
JRNC MVV01A ;NO
|
||
CLR A1
|
||
CMPI 21,A0
|
||
JRLS MVV010
|
||
INC A1
|
||
MVV010
|
||
MOVE A1,@RBMODE,W
|
||
MVV01A
|
||
MOVE *A13(PDATA+>40),A2,W ;GET ACCELERATIONS
|
||
MOVE *A13(PDATA+>50),A3,W
|
||
MOVE @FACEXV,A0,L
|
||
MOVE @FACEYV,A1,L
|
||
MOVE A0,A4
|
||
MOVE A1,A5
|
||
ABS A4
|
||
ABS A5
|
||
ADD A4,A5
|
||
CMPI >20000,A5 ;>30000,A5
|
||
JRHS MVV01B
|
||
SLL 2,A2 ;INCREASE THRUST FOR LOW VELOCITY
|
||
SLL 2,A3
|
||
MVV01B
|
||
ADD A0,A2
|
||
ADD A1,A3
|
||
MOVE A2,A0
|
||
MOVE A3,A1
|
||
CMPI >40000,A5 ;MORE DAMP FOR HIGHER VELOCITY
|
||
JRHS MVV01C
|
||
SRA 1,A2
|
||
SRA 1,A3
|
||
MVV01C
|
||
SRA 3,A2 ;SUB OUT DAMPING FACTOR
|
||
SRA 3,A3
|
||
SUB A2,A0
|
||
SUB A3,A1
|
||
MOVE *A8,A8,L ;GET FIRST OBJECT
|
||
CALLA GETANIXY ;RET A2=YVAL,A3=XVAL
|
||
MOVE @WORLDTLX,A4,L ;ADJUST FOR SCREEN RELATIVE
|
||
MOVE @WORLDTLY,A5,L
|
||
SUB A4,A3
|
||
SUB A5,A2
|
||
MMTM SP,A2,A3
|
||
*ARE WE EMBEDDED IN SIDE?
|
||
CMPI >580000,A3
|
||
JRHS MVV02 ;NOT TO THE LEFT
|
||
SUBI >580000,A3 ;BRING HIM IN BOUNDS
|
||
JRUC MVV02A
|
||
MVV02
|
||
CMPI >1400000,A3
|
||
JRLS MVV03 ;NOT TO THE RIGHT
|
||
SUBI >1400000,A3
|
||
MVV02A
|
||
NEG A3
|
||
MOVE A3,A0
|
||
MVV03
|
||
CMPI >1B0000,A2
|
||
JRHS MVV04
|
||
SUBI >1B0000,A2
|
||
JRUC MVV04A
|
||
|
||
MVV04 CMPI >880000,A2
|
||
JRLS MVV05
|
||
SUBI >880000,A2
|
||
MVV04A
|
||
NEG A2
|
||
MOVE A2,A1
|
||
|
||
*CHECK FOR OUT AFTER VELOCITY ADD
|
||
MVV05
|
||
MMFM SP,A2,A3
|
||
ADD A0,A3
|
||
ADD A1,A2
|
||
|
||
CMPI >580000,A3
|
||
JRHS MVV06 ;NOT TO THE LEFT
|
||
CLR A0
|
||
MVV06
|
||
CMPI >1400000,A3
|
||
JRLS MVV07 ;NOT TO THE RIGHT
|
||
CLR A0
|
||
MVV07
|
||
CMPI >1B0000,A2
|
||
JRHS MVV08
|
||
CLR A1
|
||
|
||
MVV08 CMPI >880000,A2
|
||
JRLS MVV09
|
||
CLR A1
|
||
MVV09
|
||
MOVE A0,@FACEXV,L
|
||
MOVE A1,@FACEYV,L
|
||
MOVI FACSTOR,A8
|
||
CALLR STFVEL ;STUFF VELOCITY IN ALL PARTS
|
||
|
||
MOVE @HALT,A0,W
|
||
JRNE RBOSS1 ;DONT FIRE UPON HALT
|
||
CALLR GETDMGE
|
||
SRL 1,A0
|
||
ANDI >000000F0,A0
|
||
ADDI FIRETAB,A0
|
||
MOVE *A0,A0,W ;GET FIRE PROBABILITY BASED ON DAMAGE TABLE
|
||
CALLA RANDPER
|
||
JRNC RBOSS1
|
||
CALLR BOSSFIRE
|
||
RBOSS1
|
||
SLEEP 2
|
||
JRUC RBLP
|
||
;MAYBE SOME GALAGAS
|
||
DLST2 .LONG YBG,WHITE,ORANGE,BLUE,GREEN,0
|
||
DLST .LONG GALP,GALP2,NUORB
|
||
DLST3 .LONG TKCOL1,GRNTG,PRZ,0; PALS TO WIPE
|
||
*FIRE PROB TABLE
|
||
FIRETAB .WORD 15,20,20,25,25,30,35,40
|
||
.WORD 40,40,40,40,50,50,60,60
|
||
*
|
||
*SKULL PROCESS
|
||
*
|
||
SKULPRC
|
||
MOVI FACSTOR,A8
|
||
MOVI SKEYE,A9 ;GET EYBALLS ANIMATING
|
||
MOVI 2,A10
|
||
CREATE TYPFACE,SKSEQ
|
||
CALLA GETPLYR ;FIND PLAYER TO SEEK
|
||
MOVE A0,A11
|
||
CALLR GETRBV ;GET SKULL VELOCITY
|
||
|
||
MOVK 1,A0
|
||
MOVE A0,@RBMODE,W ;MAKE SKULL HARDER TO PUSH
|
||
SKLP:
|
||
MOVI 100,A0 ;GET NEW VELOCITY?
|
||
CALLA RANDPER
|
||
JRNC SKV01 ;NO
|
||
CALLR GETRBV
|
||
MOVI 20,A0 ;GET NEW PLAYER TO SEEK
|
||
CALLA RANDPER
|
||
JRNC SKV01 ;NO
|
||
CALLA GETPLYR
|
||
MOVE A0,A11
|
||
SKV01
|
||
MOVE *A13(PDATA+>40),A2,W ;GET ACCELERATIONS
|
||
MOVE *A13(PDATA+>50),A3,W
|
||
MOVE @FACEXV,A0,L
|
||
MOVE @FACEYV,A1,L
|
||
ADD A0,A2
|
||
ADD A1,A3
|
||
MOVE A2,A0
|
||
MOVE A3,A1
|
||
SRA 4,A2 ;SUB OUT DAMPING FACTOR
|
||
SRA 4,A3
|
||
SUB A2,A0
|
||
SUB A3,A1
|
||
MOVE *A8,A8,L ;GET FIRST OBJECT
|
||
CALLA GETANIXY ;RET A2=YVAL,A3=XVAL
|
||
MOVE @WORLDTLX,A4,L ;ADJUST FOR SCREEN RELATIVE
|
||
MOVE @WORLDTLY,A5,L
|
||
SUB A4,A3
|
||
SUB A5,A2
|
||
MMTM SP,A2,A3
|
||
*ARE WE EMBEDDED IN SIDE?
|
||
CMPI >580000,A3
|
||
JRHS SKV02 ;NOT TO THE LEFT
|
||
SUBI >580000,A3 ;BRING HIM IN BOUNDS
|
||
JRUC SKV02A
|
||
SKV02
|
||
CMPI >1400000,A3
|
||
JRLS SKV03 ;NOT TO THE RIGHT
|
||
SUBI >1400000,A3
|
||
SKV02A
|
||
NEG A3
|
||
MOVE A3,A0
|
||
SKV03
|
||
CMPI >1B0000,A2
|
||
JRHS SKV04
|
||
SUBI >1B0000,A2
|
||
JRUC SKV04A
|
||
|
||
SKV04 CMPI >880000,A2
|
||
JRLS SKV05
|
||
SUBI >880000,A2
|
||
SKV04A
|
||
NEG A2
|
||
MOVE A2,A1
|
||
|
||
*CHECK FOR OUT AFTER VELOCITY ADD
|
||
SKV05
|
||
MMFM SP,A2,A3
|
||
ADD A0,A3
|
||
ADD A1,A2
|
||
|
||
CMPI >580000,A3
|
||
JRHS SKV06 ;NOT TO THE LEFT
|
||
CLR A0
|
||
SKV06
|
||
CMPI >1400000,A3
|
||
JRLS SKV07 ;NOT TO THE RIGHT
|
||
CLR A0
|
||
SKV07
|
||
CMPI >1B0000,A2
|
||
JRHS SKV08
|
||
CLR A1
|
||
|
||
SKV08 CMPI >880000,A2
|
||
JRLS SKV09
|
||
CLR A1
|
||
SKV09
|
||
MOVE A0,@FACEXV,L
|
||
MOVE A1,@FACEYV,L
|
||
MOVI FACSTOR,A8
|
||
CALLR STFVEL ;STUFF VELOCITY IN ALL PARTS
|
||
|
||
|
||
MOVE @HALT,A0,W
|
||
JRNE SKULP1 ;DONT FIRE UPON HALT
|
||
MOVI 52,A0 ;32 ;SHOOT DUDES OUT OF MOUTH??
|
||
CALLA RANDPER
|
||
JRNC SKULP1
|
||
MOVE @SKLFFLG,A0,W
|
||
JRNE SKULP1
|
||
MOVK 1,A0
|
||
MOVE A0,@SKLFFLG,W
|
||
CREATE TYPFACE,SKULFIRE
|
||
SKULP1
|
||
MOVI 25,A0 ;ANIMATE MOUTH??
|
||
CALLA RANDPER
|
||
JRNC SKULP2
|
||
MOVI SKMOUTH,A9,L
|
||
MOVK 20,A10
|
||
CREATE TYPFACE,ANISEQ
|
||
SKULP2
|
||
SLEEP 2
|
||
JRUC SKLP
|
||
GETSKV RETS
|
||
*
|
||
*SKULL FIRES PHOTON AT YOU
|
||
*A8=SKULL DATA BLOCK
|
||
*A11=PLAYER SKULL IS AFTER
|
||
*
|
||
SKULFIRE
|
||
CALLA CKPLYR ;MAKE SURE PLAYER IS ALIVE
|
||
JREQ SKLFX
|
||
MOVI MISS,A0
|
||
CALLA ONESND
|
||
|
||
MOVI >FFE00000,A4 ;X POS OFFSET
|
||
MOVI >200000,A5 ;Y POS OFFSET
|
||
CALLR SKLFSUB
|
||
|
||
MOVI >100000,A4 ;X POS OFFSET
|
||
MOVI >200000,A5 ;Y POS OFFSET
|
||
CALLR SKLFSUB
|
||
*BLINK OFF THE EYES
|
||
MOVI CLSENMY|TYPFACE|SUBER,A0
|
||
CLR A1
|
||
NOT A1
|
||
CALLA EXISTOBJ
|
||
MOVI >8000,A2
|
||
MOVE A2,*A0(OFLAGS),W
|
||
MOVE A0,A8
|
||
MOVI CLSENMY|TYPFACE|SUBEL,A0
|
||
CALLA EXISTOBJ
|
||
MOVE A2,*A0(OFLAGS),W
|
||
MOVE A0,A9
|
||
SLEEP 30
|
||
*TURN ON EYES
|
||
MOVI DMAWNZ+M_PIXSCAN,A2
|
||
MOVE A2,*A9(OFLAGS),W
|
||
MOVI DMAWNZ+M_PIXSCAN+M_FLIPH,A2
|
||
MOVE A2,*A8(OFLAGS),W
|
||
CLR A2
|
||
MOVE A2,@SKLFFLG,W ;DONE FIRING
|
||
SKLFX
|
||
DIE
|
||
SKLFSUB
|
||
MOVE *A11(OXVAL),A6,L
|
||
MOVE *A11(OYVAL),A7,L
|
||
|
||
MOVI FACSTOR,A8
|
||
MOVE *A8,A8,L ;GET OBJ POINTER TO FIRST PART
|
||
CALLA GETANIXY
|
||
MOVE A2,A1
|
||
MOVE A3,A0
|
||
ADD A4,A0
|
||
ADD A5,A1
|
||
|
||
SUB A0,A6 ;FIND DELTA
|
||
SUB A1,A7
|
||
SRA 5,A6 ;SHIFT TO CALC VELOCITY
|
||
SRA 5,A7
|
||
|
||
MOVE A2,A1
|
||
MOVE A3,A0
|
||
ADD A4,A0
|
||
ADDI >200000,A0 ;X ADJUST
|
||
|
||
MMTM SP,A0
|
||
MOVI >60000,A0 ;LIMIT VELOCITIES
|
||
CALLA VMAX
|
||
MMFM SP,A0
|
||
|
||
MOVI photon1,A2 ;(OIMG)
|
||
MOVI 231,A3 ;(OZPOS)
|
||
MOVI DMAWNZ,A4 ;(OFLAGS) NON-ZERO VALUE
|
||
; MOVI CLSENMY|TYPCBALL,A5 ;(OID)
|
||
MOVI CLSENMY|TYPCBALL,A5 ;(OID)
|
||
; MOVI CLSENMY|TYPCBL2,A5 ;(OID)
|
||
CALLA BEGINOBJ2
|
||
CREATE 0,PHOTPRC ;PHOTON PROCESS
|
||
MOVE A0,*A8(OPLINK),L ;FIX PROCESS LINK
|
||
RETS
|
||
|
||
BULLEXP
|
||
MOVE *A8(OIMG),A1,L ;ADJUST ANIMATION POINT TO TOPLEFT
|
||
MOVE *A1(>20),A2
|
||
NEG A2
|
||
MOVE *A8(OXPOS),A3,W
|
||
ADD A2,A3
|
||
MOVE A3,*A8(OXPOS),W
|
||
|
||
MOVE *A1(>30),A2
|
||
NEG A2
|
||
MOVE *A8(OYPOS),A3,W
|
||
ADD A2,A3
|
||
MOVE A3,*A8(OYPOS),W
|
||
|
||
MOVI MEDEXP,A9
|
||
MOVK 1,A1 ;COMMAND PASSED TO FRANIM
|
||
JSRP FRANIM
|
||
;
|
||
; DELETE OBJECT FROM OBJLST
|
||
;
|
||
MOVE A8,A0
|
||
; CALLA DELPAL
|
||
CALLA DELOBJ
|
||
DIE
|
||
CLOSE
|
||
;OBJECT IN A8 CLOSE TO RANDOM PLAYER
|
||
;
|
||
MOVB @PCNT,A1
|
||
ANDI 01,A1
|
||
SLL 5,A1
|
||
MOVI PLYROBJS,A0,L
|
||
ADD A1,A0
|
||
MOVE *A0,A0,L
|
||
JRNZ BLO1
|
||
XORI 32,A1
|
||
ADDI PLYROBJS,A1,L
|
||
MOVE *A1,A0,L
|
||
JRNZ BLO1
|
||
NOEXP
|
||
CLRC
|
||
RETS
|
||
BLO1 MOVE *A8(OXPOS),A1
|
||
MOVE *A0(OXPOS),A2
|
||
;A0=PLAYER PNTR
|
||
ADDI 10,A2
|
||
SUB A1,A2
|
||
ABS A2
|
||
CMPI 16,A2 ;LEFT OF PLAYER
|
||
JRHI NOEXP
|
||
YSEXP
|
||
;A0=PLAYER PNTR
|
||
MOVE *A8(OYPOS),A1
|
||
MOVE *A0(OYPOS),A2
|
||
ADDI 15,A2
|
||
SUB A1,A2
|
||
ABS A2
|
||
CMPI 10H,A2 ;OVER PLYRS HEAD
|
||
JRHI NOEXP
|
||
YSEXP2
|
||
SETC
|
||
RETS
|
||
|
||
*
|
||
*PHOTON FLY PROCESS
|
||
*A8=PHOTON OBJECT
|
||
*A9=ANIMATION
|
||
*A10=COUNT
|
||
*PDATA=XACC, PDATA+>20=YACC
|
||
*
|
||
PHOTPRC:
|
||
MOVI MISS,A0
|
||
CALLA ONESND
|
||
|
||
MOVI >400,A0 ;GET XACC
|
||
CALLA SRAND
|
||
MOVE A0,*A13(PDATA),L
|
||
|
||
MOVI >400,A0 ;GET YACC
|
||
CALLA SRAND
|
||
MOVE A0,*A13(PDATA+>20),L
|
||
MOVK 24,A10
|
||
PHOTP00
|
||
MOVI PHOTFLY,A9
|
||
PHOTP0
|
||
MOVE *A8(OXVEL),A0,L ;DO SOME ACCELERATION
|
||
MOVE *A13(PDATA),A1,L
|
||
ADD A1,A0
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVE *A8(OYVEL),A0,L
|
||
MOVE *A13(PDATA+>20),A1,L
|
||
ADD A1,A0
|
||
MOVE A0,*A8(OYVEL),L
|
||
CALLR CLOSE ;CHECK TO SEE IF WE SHOULD EXPLODE BULLET!
|
||
JRC BULLEXP ;SET=EXP
|
||
SLEEP 1
|
||
CALLA ORBBNDCK ;BOUNCE BALLS OF WALL
|
||
MOVK 4,A1
|
||
JSRP FRANIM ;ANIMATE THE SUCKER
|
||
JRNC PHOTP0
|
||
DEC A10
|
||
JRGE PHOTP00
|
||
|
||
JRUC BULLEXP
|
||
|
||
; MOVE A8,A0
|
||
; CALLA DELOBJ
|
||
; CALLA DELPAL
|
||
; DIE
|
||
*
|
||
*FOLLOW PLAYER WITH EYES
|
||
*A11=PLAYER TO FOLLOW
|
||
*A8=BOSS DATA STRUCT
|
||
*
|
||
FOLOEYE
|
||
MOVE *A8,A4,L ;GET BOSS COORD
|
||
MOVE *A4(OXPOS),A0,W
|
||
MOVE *A4(OYPOS),A1,W
|
||
MOVE *A11(OXPOS),A2,W
|
||
MOVE *A11(OYPOS),A3,W
|
||
SUB A3,A1 ;GET YOUR DELTA'S DUDES
|
||
SUB A2,A0
|
||
MOVE A1,A3
|
||
MOVE A0,A2
|
||
ABS A0
|
||
ABS A1
|
||
CMP A0,A1 ;DX OR DY BIGGER
|
||
JRLS FOLOX ;DX BIGGER
|
||
MOVI EYESUP,A9
|
||
MOVE A3,A3
|
||
JRNN FOLOXX
|
||
MOVI EYESDWN,A9
|
||
JRUC FOLOXX
|
||
FOLOX
|
||
MOVI EYESLFT,A9
|
||
MOVE A2,A2
|
||
JRNN FOLOXX
|
||
MOVI EYESRT,A9
|
||
FOLOXX
|
||
CALLR ANIBOSS
|
||
RETS
|
||
*
|
||
*FLATFACE FIRES SHIT AT YOU
|
||
*A8=FLATFACE DATA BLOCK
|
||
*A11=PLAYER FLATFACE IS AFTER
|
||
BOSSFIRE
|
||
MMTM SP,A0,A1,A7
|
||
CALLA CKPLYR ;MAKE SURE PLAYER IS ALIVE
|
||
JREQ BSSFIRX
|
||
|
||
MOVI TYPFACE,A1
|
||
MOVI FIREP,A7
|
||
MOVI 320,A0 ;275
|
||
CALLA RANDPER
|
||
JRNC BOSSFIR1
|
||
MOVE @CANFLG,A0,W ;CANNON ALREADY ON?
|
||
JRNE BOSSFIR1 ;YES, DON'T FIRE
|
||
MOVI BOSSCAN,A7
|
||
BOSSFIR1
|
||
CALLA GETPRC
|
||
CALLA GETSPK
|
||
BSSFIRX
|
||
MMFM SP,A0,A1,A7
|
||
RETS
|
||
*
|
||
*SHOOT A CANNON VOLLEY AT YOU
|
||
*A8=BOSS DATA BLOCK PTR
|
||
*A11= PLAYER TO SHOOT
|
||
*
|
||
BOSSCAN
|
||
*OPEN YOUR MOUTH, DUDE !
|
||
MOVK 1,A0
|
||
MOVE A0,@CANFLG,W ;NO MORE CANNONS
|
||
MOVI BITE,A9
|
||
CALLR ANIBOSS
|
||
MOVI 10,A0
|
||
CALLA RANDU
|
||
ADDK 9,A0
|
||
BSSCNLP
|
||
CALLR CANST
|
||
DSJS A0,BSSCNLP
|
||
SLEEP 18
|
||
MOVI BITECL,A9 ;CLOSE YOUR MOUTH
|
||
CALLR ANIBOSS
|
||
SLEEP 37
|
||
CLR A0
|
||
MOVE A0,@CANFLG,W
|
||
DIE
|
||
*
|
||
*START A CANNON
|
||
*A8=BOSS DATA BLOCK PTR
|
||
*A11= PLAYER TO SHOOT
|
||
*
|
||
CANST
|
||
*FIRE OUT A BALL
|
||
MMTM SP,A0,A8
|
||
CALLA CKPLYR ;MAKE SURE PLAYER IS ALIVE
|
||
JREQ CANSTX
|
||
|
||
MOVI >50,A0 ;GET GOAL X,Y
|
||
CALLA SRAND
|
||
MOVE A0,A1
|
||
MOVI >50,A0
|
||
CALLA SRAND
|
||
MOVE *A11(OXPOS),A6,W
|
||
MOVE *A11(OYPOS),A7,W
|
||
ADD A0,A6
|
||
ADD A1,A7
|
||
|
||
MOVE *A8,A4,L ;GET OBJ POINTER TO FIRST PART
|
||
MOVE *A4(OYPOS),A1,W ;RANDOMIZE START A BIT
|
||
MOVK 5,A0
|
||
CALLA SRAND
|
||
ADD A0,A1
|
||
MOVK 5,A0
|
||
CALLA SRAND
|
||
MOVE *A4(OXPOS),A2,W
|
||
ADD A2,A0
|
||
ADDI >28,A0 ;ADJUST START COORD X ,Y
|
||
ADDI >40,A1
|
||
|
||
SUB A0,A6 ;FIND DELTA
|
||
SUB A1,A7
|
||
SLL 10,A6 ;SHIFT TO CALC VELOCITY
|
||
SLL 10,A7
|
||
MOVE A6,A2
|
||
MOVE A7,A3
|
||
ABS A2
|
||
ABS A3
|
||
ADD A2,A3
|
||
CMPI >28000,A3 ;IF VELOCITY TOO HIGH, HALVE IT
|
||
JRLS CANST1
|
||
SRA 1,A6
|
||
SRA 1,A7
|
||
CANST1
|
||
SLL 16,A0 ;ADJUST POSITION
|
||
SLL 16,A1
|
||
|
||
MOVI CNNBLL,A2 ;(OIMG)
|
||
MOVI 231,A3 ;(OZPOS)
|
||
MOVI DMAWNZ,A4 ;(OFLAGS) NON-ZERO VALUE
|
||
MOVI CLSENMY|TYPCBL2,A5 ;(OID)
|
||
CALLA BEGINOBJ2
|
||
CREATE 0,CANPRC ;SPITBALL PROCESS
|
||
MOVE A0,*A8(OPLINK),L ;FIX PROCESS LINK
|
||
CANSTX
|
||
MMFM SP,A0,A8
|
||
RETS
|
||
*
|
||
*CANNON BALL FLY PROCESS
|
||
*A8=CANNON OBJECT
|
||
*A10=COUNT
|
||
*PDATA=XACC, PDATA+>20=YACC
|
||
CANPRC:
|
||
MOVI 100,A10
|
||
CANPRCL
|
||
CALLA CLOSE ;CHECK TO SEE IF WE SHOULD EXPLODE BULLET!
|
||
JRC BULLEXP ;SET=EXP
|
||
MOVI [>1E,>21],A2
|
||
MOVI [>FC,>171],A3
|
||
CALLA SCRTSTG
|
||
JRNE BULLEXP
|
||
SLEEP 2
|
||
DSJS A10,CANPRCL
|
||
MOVE A8,A0
|
||
; CALLA DELPAL
|
||
CALLA DELOBJ
|
||
DIE
|
||
*
|
||
*SHOOT A FIREBALL AT YOU
|
||
*A8=BOSS DATA BLOCK PTR
|
||
*A11= PLAYER TO SHOOT
|
||
*
|
||
FIREP:
|
||
*OPEN YOUR MOUTH, DUDE !
|
||
MOVI BITE,A9
|
||
CALLR ANIBOSS
|
||
*FIRE OUT A BALL
|
||
MOVI 50,A0 ;GET GOAL X,Y
|
||
CALLA SRAND
|
||
MOVE A0,A1
|
||
MOVI 50,A0
|
||
CALLA SRAND
|
||
MOVE *A11(OXPOS),A6,W
|
||
MOVE *A11(OYPOS),A7,W
|
||
ADD A0,A6
|
||
ADD A1,A7
|
||
|
||
MOVE *A8,A4,L ;GET OBJ POINTER TO FIRST PART
|
||
MOVE *A4(OXPOS),A0,W
|
||
MOVE *A4(OYPOS),A1,W
|
||
ADDI >28,A0 ;ADJUST START COORD X ,Y
|
||
ADDI >40,A1
|
||
|
||
SUB A0,A6 ;FIND DELTA
|
||
SUB A1,A7
|
||
SLL 10,A6 ;SHIFT TO CALC VELOCITY
|
||
SLL 10,A7
|
||
|
||
MMTM SP,A0
|
||
MOVI >60000,A0 ;LIMIT VELOCITIES
|
||
CALLA VMAX
|
||
MMFM SP,A0
|
||
|
||
SLL 16,A0 ;ADJUST POSITION
|
||
SLL 16,A1
|
||
|
||
MOVI BLB1A,A2 ;(OIMG)
|
||
MOVI 231,A3 ;(OZPOS)
|
||
MOVI DMAWNZ,A4 ;(OFLAGS) NON-ZERO VALUE
|
||
MOVI CLSENMY|TYPCBALL,A5 ;(OID)
|
||
PUSH A8
|
||
CALLA BEGINOBJ2
|
||
CREATE 0,SPTPRC ;SPITBALL PROCESS
|
||
MOVE A0,*A8(OPLINK),L ;FIX PROCESS LINK
|
||
PULL A8
|
||
SLEEP 18
|
||
MOVI BITECL,A9 ;CLOSE YOUR MOUTH
|
||
CALLR ANIBOSS
|
||
DIE
|
||
*
|
||
*LIMIT VELOCITIES
|
||
*CALLING PARAMS: A0=LIMIT,A6=XV,A7,YV
|
||
*RET A6,A7 UNDER LIMIT A6+A7 < A0
|
||
VMAX
|
||
MMTM SP,A2,A3,A4,A5
|
||
MOVE A7,A5
|
||
MOVE A6,A4
|
||
SRA 3,A5
|
||
SRA 3,A4
|
||
VMAXL
|
||
MOVE A6,A2
|
||
MOVE A7,A3
|
||
ABS A2
|
||
ABS A3
|
||
ADD A2,A3
|
||
CMP A3,A0
|
||
JRHS VMAXX
|
||
SUB A4,A6
|
||
SUB A5,A7
|
||
JRUC VMAXL
|
||
VMAXX
|
||
MMFM SP,A2,A3,A4,A5
|
||
RETS
|
||
*
|
||
*SPIT BALL FLY PROCESS
|
||
*A8=SPIT BALL OBJECT
|
||
*A9=ANIMATION
|
||
*A10=COUNT
|
||
*PDATA=XACC, PDATA+>20=YACC
|
||
SPTPRC:
|
||
MOVI MISS,A0
|
||
CALLA ONESND
|
||
|
||
MOVI >400,A0 ;GET XACC
|
||
CALLA SRAND
|
||
MOVE A0,*A13(PDATA),L
|
||
|
||
MOVI >400,A0 ;GET YACC
|
||
CALLA SRAND
|
||
MOVE A0,*A13(PDATA+>20),L
|
||
MOVK 10,A10 ;6
|
||
FIREP00
|
||
MOVI SPITFLY,A9
|
||
FIREP0
|
||
MOVE *A8(OXVEL),A0,L ;DO SOME ACCELERATION
|
||
MOVE *A13(PDATA),A1,L
|
||
ADD A1,A0
|
||
MOVE A0,A1
|
||
ABS A1
|
||
CMPI >50000,A1 ;MAX IT OUT
|
||
JRHS FIREP01
|
||
MOVE A0,*A8(OXVEL),L
|
||
FIREP01
|
||
MOVE *A8(OYVEL),A0,L
|
||
MOVE *A13(PDATA+>20),A1,L
|
||
ADD A1,A0
|
||
MOVE A0,A1
|
||
ABS A1
|
||
CMPI >50000,A1 ;MAX IT OUT
|
||
JRHS FIREP02
|
||
MOVE A0,*A8(OYVEL),L
|
||
FIREP02
|
||
CALLR CLOSE ;CHECK TO SEE IF WE SHOULD EXPLODE BULLET!
|
||
JRC BULLEXP ;SET=EXP
|
||
SLEEP 1
|
||
CALLA ORBBNDCK ;BOUNCE BALLS OF WALL
|
||
MOVK 4,A1
|
||
JSRP FRANIM ;ANIMATE THE SUCKER
|
||
JRNC FIREP0
|
||
DEC A10
|
||
JRGE FIREP00
|
||
JRUC BULLEXP
|
||
|
||
|
||
; MOVE A8,A0
|
||
; CALLA DELOBJ
|
||
; CALLA DELPAL
|
||
; DIE
|
||
*
|
||
*GET ROBOT BOSS VELOCITY
|
||
*A11=PLAYER TO SEEK
|
||
*RETURNS PDATA+>40 XACC; PDATA+>50 YACC
|
||
*
|
||
GETRBV
|
||
MOVI 50,A0
|
||
CALLA SRAND
|
||
MOVE A0,A1
|
||
MOVI 50,A0
|
||
CALLA SRAND
|
||
MOVE *A11(OXPOS),A2,W
|
||
MOVE *A11(OYPOS),A3,W
|
||
ADD A0,A2
|
||
ADD A1,A3
|
||
|
||
MOVE *A8,A4,L ;GET POINTER TO A PIECE
|
||
MOVE *A4(OXPOS),A0,W
|
||
MOVE *A4(OYPOS),A1,W
|
||
SUB A0,A2
|
||
SUB A1,A3
|
||
SLL 6,A2
|
||
SLL 6,A3
|
||
MOVE A2,*A13(PDATA+>40),W
|
||
MOVE A3,*A13(PDATA+>50),W
|
||
RETS
|
||
*
|
||
*CHECK ROBOT BOSS OUT OF BOUNDS
|
||
*A0,A1,A2,A3 DESTROYED
|
||
*
|
||
RBBNDCK:
|
||
|
||
PUSH A8
|
||
MOVE *A8,A8,L ;GET FIRST OBJECT
|
||
MOVI [>2E,>2A],A2 ;BOUNDS CHECK
|
||
MOVI [>98,>116],A3
|
||
CALLR OFPNTTST ;IS IT IN BOUNDS ?
|
||
JRNE MV0
|
||
MMFM SP,A8 ;ON SCREEN O.K.
|
||
RETS
|
||
MV0
|
||
MOVE *A8(OXVEL),A1,L
|
||
MOVE *A8(OYVEL),A2,L
|
||
DEC A0
|
||
JRNE MV01
|
||
ABS A1 ;MAKE XV POSITIVE
|
||
JRUC MV00
|
||
MV01
|
||
DEC A0
|
||
JRNE MV02
|
||
ABS A1 ;MAKE XV NEGATIVE
|
||
NEG A1
|
||
JRUC MV00
|
||
MV02
|
||
ABS A2
|
||
DEC A0
|
||
JREQ MV00 ;UP CASE
|
||
NEG A2 ;DOWN WALL CASE
|
||
MV00
|
||
MOVE A1,A0
|
||
MOVE A2,A1
|
||
MMFM SP,A8
|
||
CALLR STFVEL ;STUFF THE SUCKER WITH NEW VELS
|
||
RETS
|
||
|
||
*
|
||
*CHEAP COLOR CYCLER
|
||
*CYCLES ANY NUMBER OF COLORS
|
||
*A8=PALETTE NAME
|
||
*A9=RAM STORAGE AREA
|
||
*A10=MSW START COLOR, LSW END COLOR
|
||
*A11=SPEED, A11=NEGATIVE FOR REVERSE CYCLER
|
||
|
||
COLCYC
|
||
SLEEP 4
|
||
MOVE A8,A0
|
||
CALLA FINDPAL ;FIND PALETTE
|
||
JREQ COLCYC ;WAIT TILL IT SHOWS UP FOLKS...
|
||
|
||
*GET THE COLORS INTO RAM
|
||
CLR A1
|
||
MOVX A10,A1 ;GET END COLOR
|
||
SRL 16,A10 ;ADJUST START COLOR
|
||
SUB A10,A1 ;GET COUNT
|
||
MOVE A1,*A13(PDATA),W ;SAVE COUNT
|
||
MOVE A1,A4
|
||
SLL 4,A1 ;COUNT IN WORDS
|
||
MOVE A10,A5
|
||
SLL 4,A5 ;OFFSET INTO PALETTE
|
||
ADD A8,A5
|
||
ADDK 16,A5 ;SKIP PALETTE WORD COUNT
|
||
MOVE A9,A3
|
||
MOVE A9,A6
|
||
ADD A1,A6
|
||
MOVE A6,A8
|
||
COLCYC1
|
||
MOVE *A5+,A7,W ;TRANSFER IT TWICE
|
||
MOVE A7,*A3+,W
|
||
MOVE A7,*A6+,W
|
||
DSJS A4,COLCYC1
|
||
|
||
SRL 8,A0
|
||
SLL 8,A0
|
||
ADD A0,A10 ;COLRAM DESTINATION
|
||
; MOVE A9,*A13(PDATA+>20),L ;SAVE RAM ADDRESS
|
||
; ABS A11
|
||
; JRNN COLCYCB
|
||
;COLCYCP
|
||
; MOVE A9,A0 ;GET SOURCE ADDRESS
|
||
; MOVE A10,A1 ;GET DESTINATION CONSTANT
|
||
; MOVE *A13(PDATA),A2,W ;GET COUNT
|
||
; CALLA PALSET
|
||
; ADDK 16,A9
|
||
; CMP A8,A9
|
||
; JRLO CCYCSLP
|
||
; MOVE *A13(PDATA+>20),A9,L ;GET SOURCE TABLE START
|
||
;CCYCSLP
|
||
; MOVE A11,A0 ;GET SLEEP TIME
|
||
; CALLA PRCSLP
|
||
; JRUC COLCYCP
|
||
|
||
COLCYCB
|
||
MOVE A8,*A13(PDATA+>20),L ;SAVE RAM ADDRESS
|
||
COLCYCBL
|
||
MOVE A8,A0 ;GET SOURCE ADDRESS
|
||
MOVE A10,A1 ;GET DESTINATION CONSTANT
|
||
MOVE *A13(PDATA),A2,W ;GET COUNT
|
||
CALLA PALSET
|
||
SUBK 16,A8
|
||
CMP A8,A9
|
||
JRLO CCYCBSLP
|
||
MOVE *A13(PDATA+>20),A8,L ;GET SOURCE TABLE START
|
||
CCYCBSLP
|
||
MOVE A11,A0 ;GET SLEEP TIME
|
||
CALLA PRCSLP
|
||
JRUC COLCYCBL
|
||
|
||
*
|
||
*TEST IF OXPOS,OYPOS POINT OFF SCREEN
|
||
*A2=TOP LEFT Y:X SCREEN REL BOUNDARIES
|
||
*A3=BOT RT Y:X SCREEN REL BOUNDARIES
|
||
*A8=OBJECT
|
||
*RETURNS EQ IF ON SCREEN
|
||
*A0=LEFT=1,RIGHT=2,UP=3,DOWN=4 (OFF SCREEN)
|
||
OFPNTTST
|
||
MMTM SP,A1,A2,A3,A4
|
||
MOVE *A8(OYPOS),A0,W
|
||
MOVE *A8(OXPOS),A1,W
|
||
SLL 16,A0
|
||
MOVX A1,A0 ;GET TOP LEFT OF OBJECT
|
||
MOVE @WORLDTL,A1,L
|
||
SUBXY A1,A0 ;SUBTRACT OUT WORLD BASE
|
||
|
||
CLR A4
|
||
CMPXY A2,A0
|
||
JRYLE PNTTFU ;ABOVE...
|
||
JRXLE PNTTFL ;TO THE LEFT..
|
||
|
||
CMPXY A3,A0 ;IS IT LOWER THAN LOWER RT?
|
||
JRXGE PNTTFR ;TO THE RIGHT
|
||
JRYLT OFPNTTX ;NOT LOWER
|
||
|
||
PNTTFD INC A4
|
||
PNTTFU INC A4
|
||
PNTTFR INC A4
|
||
PNTTFL INC A4
|
||
|
||
OFPNTTX
|
||
MOVE A4,A0
|
||
MMFM SP,A1,A2,A3,A4
|
||
RETS
|
||
*
|
||
*INITIALIZE THE SKULL
|
||
*A0=XPOS,A1=YPOS,A11=DAMAGE LEVEL
|
||
*
|
||
SKINIT
|
||
MMTM SP,A2,A3,A12,A13
|
||
MOVI SKLTAB,A12 ;INIT ROBOT BOSS TABLE
|
||
JRUC RBI0
|
||
*
|
||
*INITIALIZE ROBOT BOSS
|
||
*A0=XPOS,A1=YPOS,A11=DAMAGE LEVEL
|
||
*
|
||
RBINIT
|
||
MMTM SP,A2,A3,A12,A13
|
||
MOVI RBITAB,A12 ;INIT ROBOT BOSS TABLE
|
||
RBI0
|
||
MMTM SP,A0,A1 ;SAVE XY COORDS
|
||
CREATE TYPFACE,STICKP ;STICK TOGETHER HEAD
|
||
MMFM SP,A0,A1
|
||
MOVI FACSTOR,A13
|
||
RBILP
|
||
MOVE *A12+,A4,W ;GET (OFLAGS)
|
||
JREQ RBIDON ;END OF LIST
|
||
BTST B_FLIPH,A4
|
||
JRZ RBI1
|
||
SUBI >50000,A0 ;BRING RIGHT SIDE BACK A FEW
|
||
RBI1
|
||
MOVE *A12+,A5,W ;GET (OID)
|
||
MOVE *A12+,A6,W ;GET ANI FRAME #
|
||
MOVB A6,*A13(AFRAME) ;STORE FRAME POINTER
|
||
DEC A6
|
||
MOVI RBANITB1-RBANITB,A7
|
||
MPYU A6,A7 ;ADJUST FOR LENGTH OF ENTRY
|
||
ADDI RBANITB,A7 ;ADD TABLE BASE
|
||
MOVE A11,A3 ;GET DAMAGE LEVEL
|
||
SRL 1,A3
|
||
SLL 5,A3 ;ADJUST FOR LONG WORD
|
||
ADD A3,A7
|
||
MOVE *A7,A2,L ;GET OIMG POINTER
|
||
CLR A6 ;(OXVEL)
|
||
CLR A7 ;(OYVEL)
|
||
MOVI 130,A3 ;(OZPOS)
|
||
CALLA BEGINOBJ2 ;STUFF OBJ
|
||
MOVE A13,*A8(OPLINK),L ;LINK OBJECT TO BLOCK STRUCTURE
|
||
MOVE A8,*A13,L ;SAVE POINTER TO GUY
|
||
MOVE A11,*A13(DAMAGEL),W ;INIT DAMAGE LEVEL
|
||
ADDI >40,A13 ;INCREMENT IT ALONG
|
||
JRUC RBILP
|
||
RBIDON
|
||
CLR A14
|
||
MOVE A14,*A13,L ;ZERO OUT LAST POINTER TO MARK END
|
||
MOVI FACSTOR,A8
|
||
MMFM SP,A2,A3,A12,A13
|
||
RETS
|
||
*
|
||
*PUSH THE FACE WITH RINGS
|
||
*A0=PLAYER
|
||
*A8=FLATFACE PART HIT
|
||
PUSHFC
|
||
MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8
|
||
CALLA GETANIXY ;A2=YVAL, A3=XVAL
|
||
MOVE *A0(OXVAL),A4,L
|
||
MOVE *A0(OYVAL),A5,L
|
||
ADDI >400000,A2 ;ADJUST YVAL FOR CENTER
|
||
SUB A4,A3 ;FORM DELTA X
|
||
SUB A5,A2 ;FORM DELTA Y
|
||
SRA 6,A3
|
||
SRA 6,A2
|
||
|
||
MOVE @FACEYV,A1,L
|
||
MOVE @FACEXV,A0,L
|
||
SRA 1,A0
|
||
SRA 1,A1
|
||
ADD A3,A0
|
||
ADD A2,A1
|
||
MOVE A1,@FACEYV,L
|
||
MOVE A0,@FACEXV,L
|
||
PUSHFCX
|
||
MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8
|
||
RETS
|
||
*
|
||
*COUNT UP CUMULATIVE DAMAGE TO HEAD
|
||
*RETURNS DAMAGE TOTAL IN A0
|
||
*
|
||
GETDMGE
|
||
MMTM SP,A1,A8
|
||
CLR A0
|
||
MOVI FACSTOR,A8
|
||
GETDML
|
||
MOVE *A8,A1,L
|
||
JREQ GETDMX
|
||
MOVE *A8(DAMAGEL),A1,W
|
||
ADD A1,A0
|
||
ADDI >40,A8
|
||
JRUC GETDML
|
||
GETDMX
|
||
MMFM SP,A1,A8
|
||
RETS
|
||
*
|
||
*BULLET SUBTYPE SHIFT TABLE
|
||
*SUBLZR 01 ;REGULAR LAZER SHOTS
|
||
*SUBSPRY 02 ;SPRAY SUB TYPE
|
||
*SUBSPEW 03 ;SPEW TYPE WEAPON (3)
|
||
*SUBGRND 04 ;GRENADE
|
||
*SUBNOSTP 05 ;NON STOPPING BULLET
|
||
*SUBSPEW2 06
|
||
BULSHTAB
|
||
.WORD 0,0,0,>FFFF,>FFFF,3,>FFFF,0
|
||
; .WORD 2,2,2,4,8,4,2,2 ;DAMAGE LEVEL
|
||
.WORD 2,2,2,4,6,4,1,1 ;DAMAGE LEVEL
|
||
.WORD >250,>250,>250,>500,>1000,>500,>250,>250 ;SCORE LEVEL
|
||
*
|
||
*PART OF BOSS MONSTER TAKES A HIT
|
||
*A8=OBJECT
|
||
*A0=WHAT HIT HIM
|
||
*
|
||
FACBUL
|
||
MMTM SP,A0
|
||
|
||
; MOVI EXP3HI,A0
|
||
; CALLA ONESND
|
||
|
||
MOVE @RBFLG,A0,W ;DUDE BLOWING?
|
||
BTST 0,A0
|
||
JRNE FACBULX ;YES, BAG IT
|
||
CMPI 2,A0
|
||
JRNE FCB00
|
||
CALLR GETDMGE
|
||
CMPI 210,A0
|
||
MMFM SP,A0
|
||
JRLS FACBUL0
|
||
MMTM SP,A0,A1,A7
|
||
MOVI RBOS1,A1 ;75K FOR BLOWING SKULL DUDE
|
||
CALLA SCORPLAY
|
||
CREATE 0,SKBLO ;BLOW THE SKULL
|
||
MOVK 3,A0
|
||
MOVE A0,@RBFLG,W
|
||
MMFM SP,A0,A1,A7
|
||
RETS
|
||
FCB00
|
||
*GROWL?
|
||
MOVI 100,A0
|
||
CALLA RANDPER
|
||
JRNC FCB000
|
||
|
||
CALLA GETSPK
|
||
|
||
MMTM SP,A8,A9,A10,A1,A7
|
||
MOVI GROWL,A9
|
||
MOVK 20,A10
|
||
MOVI FACSTOR,A8
|
||
CREATE TYPFACE,ANISEQ
|
||
MMFM SP,A8,A9,A10,A1,A7
|
||
FCB000
|
||
*CHECK IF EYES ARE BLOWN
|
||
MOVE @FACSTOR+DAMAGEL+((LFTEYE-1)*64),A0,W
|
||
CMPI 16,A0
|
||
JRLS FCB01
|
||
|
||
MOVE @FACSTOR+DAMAGEL+((RTEYE-1)*64),A0,W
|
||
CMPI 16,A0
|
||
JRLS FCB01 ;EYES NOT BAGGED
|
||
CALLR GETDMGE ;GET DAMAGE COUNT
|
||
CMPI 510,A0
|
||
FCB01
|
||
MMFM SP,A0
|
||
JRLS FACBUL0
|
||
MMTM SP,A0,A1,A7
|
||
|
||
MOVI RBOS1,A1 ;75K FOR BLOWING HEAD
|
||
CALLA SCORPLAY
|
||
|
||
CREATE 0,RBBLO
|
||
MOVK 1,A0
|
||
MOVE A0,@RBFLG,W ;DUDE IS BLOWING, IGNORE
|
||
MMFM SP,A0,A1,A7
|
||
RETS
|
||
FACBULX
|
||
MMFM SP,A0
|
||
RETS
|
||
FACBUL0
|
||
MMTM SP,A0,A1,A2,A3,A4,A9,A10
|
||
MOVE *A0(OXVEL),A1,L ;GIVE IT A PUSH
|
||
MOVE *A8(OXVEL),A3,L
|
||
MOVE *A0(OYVEL),A2,L
|
||
MOVE *A8(OYVEL),A4,L
|
||
CALLR POPFACE
|
||
MOVE @RBMODE,A10,W
|
||
JREQ FACBUL00
|
||
SRA 1,A1 ;REDUCE SHOT EFFECTIVENESS
|
||
SRA 1,A2
|
||
FACBUL00
|
||
SRA 2,A1
|
||
SRA 2,A2
|
||
SRA 1,A3
|
||
SRA 1,A4
|
||
MOVE *A0(OID),A10,W ;ISOLATE SUBTYPE
|
||
SLL 28,A10
|
||
SRL 24,A10
|
||
ADDI BULSHTAB,A10 ;VARIABLE SHIFT BASED ON SUBTYPE
|
||
MOVE *A10,A9,W
|
||
JRNN FACBUL1
|
||
|
||
*MOVE HEAD AWAY FROM PLAYER THAT SHOT IT
|
||
MMTM SP,A0,A3,A4
|
||
MOVE *A0(OPLINK),A1,L
|
||
MOVB *A1(MYPLYR),A1 ;A0=PLAYER NUMBER 1 OR 2
|
||
SLL 5,A1
|
||
ADDI PLYROBJS-32,A1
|
||
MOVE *A1,A9,L ;GET PLAYER POINTER
|
||
MOVE *A9(OXVAL),A1,L
|
||
MOVE *A9(OYVAL),A4,L
|
||
CALLA GETANIXY
|
||
ADDI >400000,A2 ;GET HEAD DELTA
|
||
SUB A1,A3 ;MOVE AWAY
|
||
SUB A4,A2
|
||
SRA 5,A3
|
||
SRA 5,A2
|
||
MOVE A3,A1
|
||
|
||
CALLA RANDOM ;GET RANDOM VELOCITY +-1
|
||
SRA 31,A0
|
||
SLL 18,A0
|
||
ADD A0,A1
|
||
CALLA RANDOM
|
||
SRA 31,A0
|
||
SLL 18,A0
|
||
ADD A0,A2
|
||
MMFM SP,A0,A3,A4
|
||
JRUC FACBUL2
|
||
FACBUL1
|
||
SLL A9,A1
|
||
SLL A9,A2
|
||
FACBUL2
|
||
ADD A3,A1
|
||
ADD A4,A2
|
||
MOVE A1,@FACEXV,L
|
||
MOVE A2,@FACEYV,L
|
||
|
||
MOVE *A8(OPLINK),A9,L ;GET HIS POINTER TO MASTER STRUCTURE
|
||
MOVE *A9(DAMAGEL),A3,W ;INCREMENT DAMAGE LEVEL
|
||
CMPI 20,A3
|
||
JRHS BOSSHIT00 ;NO SCORE IF MAX DAMAGE
|
||
|
||
MOVE *A10(100H),A1,W ;GET SCORE
|
||
MOVE *A8(OID),A2,W ;GET TYPE
|
||
SLL 28,A2
|
||
SRL 28,A2
|
||
CMPI SUBSHL,A2 ;EXTERIOR?
|
||
JRNZ CONT ;NO
|
||
;FLASH THIS SHELL PC
|
||
MMTM SP,A0,A1,A7,A9,A11
|
||
MOVI 34340000H,A9
|
||
CREATE 0,FLASHME
|
||
MMFM SP,A0,A1,A7,A9,A11
|
||
JRUC BSSHT000
|
||
CONT
|
||
CALLA SCORPLAY ;NO, TRIPLE SCORE INTERIOR
|
||
CALLA SCORPLAY
|
||
BSSHT000
|
||
CALLA SCORPLAY
|
||
BOSSHIT00
|
||
MOVE *A10(80H),A2,W ;GET DAMAGE DEGREE
|
||
MOVE @RBFLG,A1,W
|
||
JREQ BOSSHIT0
|
||
SRL 1,A2 ;SHIFT IT AGAIN FOR SKULL
|
||
BOSSHIT0
|
||
MOVE A0,-*SP,L
|
||
MOVI 210,A0 ;TOSSING OUT 20% OF HITS
|
||
CALLA RANDPER
|
||
MOVE *SP+,A0,L
|
||
JRC NODAM
|
||
ADD A2,A3
|
||
NODAM
|
||
CMPI 20,A3 ;MAX OUT AT 4x5
|
||
JRLS BOSSHIT1
|
||
CALLR PUMMEL ;PUMMEL UNDAMAMGED STUFF ON DEAD BANGING
|
||
MOVK 20,A3
|
||
BOSSHIT1
|
||
CALLR DAMASUB
|
||
BOSSHIT2
|
||
CALLR BULEXP
|
||
MMFM SP,A0,A1,A2,A3,A4,A9,A10
|
||
RETS
|
||
*
|
||
*DAMAGE ANIMATION SUB
|
||
*A3=DAMAGE LEVEL
|
||
*A9=STRUCT INDEX
|
||
DAMASUB
|
||
MOVE A3,*A9(DAMAGEL),W
|
||
CALLR BLOWEYE ;CHECK FOR EYE BLOW OUT
|
||
MOVB *A9(AFRAME),A1 ;GET FRAME POINTER
|
||
DEC A1
|
||
CMPI LSTANI,A1
|
||
JRHS DAMAX ;OUT OF RANGE
|
||
DAMA1
|
||
MOVI RBANITB1-RBANITB,A2
|
||
MPYU A2,A1 ;ADJUST FOR LENGTH OF ENTRY
|
||
ADDI RBANITB,A1 ;ADD TABLE BASE
|
||
MOVE *A8(OFLAGS),A4,W ;GET FLAGS
|
||
SRL 2,A3 ; 1/4 OF DAMAGE COUNT
|
||
SLL 5,A3 ;ADJUST FOR LONG WORD
|
||
ADD A3,A1
|
||
MOVE *A1,A1,L ;GET OIMG
|
||
JAUC ANI
|
||
DAMAX
|
||
RETS
|
||
*
|
||
*PUMMEL THE DUDE: DAMAGE OTHER SHIT EVENTUALLY ON DEAD BANGING
|
||
*A2= DAMAGE AMOUNT DOWN
|
||
PUMMEL
|
||
MMTM SP,A1,A2,A3,A4,A8,A9
|
||
MOVE @PUMLCNT,A1,W
|
||
ADDK 1,A1
|
||
MOVE A1,@PUMLCNT,W
|
||
SLL 28,A1 ;1 OF 16
|
||
JRNE PUMMLX
|
||
MOVI FACSTOR,A9
|
||
PUMLL
|
||
MOVE *A9,A8,L
|
||
JREQ PUMMLX
|
||
MOVE *A9(DAMAGEL),A3,W
|
||
CMPI 20,A3
|
||
JRHS PUMLLP
|
||
ADD A2,A3
|
||
CMPI 20,A3
|
||
JRLS PUMLL0
|
||
MOVK 20,A3
|
||
PUMLL0
|
||
CALLR DAMASUB
|
||
JRUC PUMMLX
|
||
PUMLLP
|
||
ADDI >40,A9
|
||
JRUC PUMLL
|
||
PUMMLX
|
||
MMFM SP,A1,A2,A3,A4,A8,A9
|
||
RETS
|
||
*
|
||
*POP FACE
|
||
*A1=DELTA X
|
||
*A2=DELTA Y
|
||
*A8=POINTER TO OBJECT POINTER BLOCK
|
||
*
|
||
POPFACE
|
||
MMTM SP,A1,A2,A3,A4,A8
|
||
MOVI FACSTOR,A8
|
||
SRA 2,A1
|
||
SRA 2,A2
|
||
POPFACP
|
||
MOVE *A8,A3,L
|
||
JREQ POPFACX ;ALL DONE, NULL POINTER
|
||
MOVE *A3(OXVAL),A4,L
|
||
ADD A1,A4
|
||
MOVE A4,*A3(OXVAL),L
|
||
MOVE *A3(OYVAL),A4,L
|
||
ADD A2,A4
|
||
MOVE A4,*A3(OYVAL),L
|
||
ADDI >40,A8
|
||
JRUC POPFACP
|
||
POPFACX
|
||
MMFM SP,A1,A2,A3,A4,A8
|
||
RETS
|
||
*
|
||
*FLATFACE BULLET EXPLOSION
|
||
*A0=BULLET
|
||
*A8=FACE PART
|
||
*A10=SUBTYPE TABLE INDEX
|
||
*
|
||
BULEXP
|
||
MMTM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9
|
||
MOVE *A0(OYVAL),A1,L
|
||
MOVE *A0(OXVAL),A0,L
|
||
MOVI EXPb1,A2 ;(OIMG)
|
||
MOVI 231,A3 ;(OZPOS)
|
||
MOVI DMAWNZ,A4 ;(OFLAGS) NON-ZERO VALUE
|
||
MOVI CLSNEUT,A5 ;(OID)
|
||
CLR A6 ;XV
|
||
CLR A7 ;YV
|
||
CALLA BEGINOBJ2
|
||
MOVI SMLEXP,A9
|
||
MOVE *A10(80H),A2,W ;GET DAMAGE DEGREE
|
||
SUBK 2,A2
|
||
JRLS BULEXP1
|
||
MOVI BOOM4,A9
|
||
BULEXP1
|
||
CREATE 0,FEXPRC
|
||
MOVE A0,*A8(OPLINK),L ;FIX PROCESS LINK
|
||
MMFM SP,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9
|
||
RETS
|
||
GETSPK
|
||
MMTM SP,A0
|
||
MOVE @SNDCNT,A0
|
||
INC A0
|
||
MOVE A0,@SNDCNT
|
||
ANDI 03H,A0
|
||
SLL 5,A0
|
||
ADDI SNDLST,A0
|
||
MOVE *A0,A0,L
|
||
CALLA ONESND
|
||
MMFM SP,A0
|
||
RETS
|
||
SNDLST .LONG AWWSND2,OUCH,EXP3HIA,ONOSND
|
||
*
|
||
*BULLET EXPLOSION ON FACE
|
||
*A8=OBJECT
|
||
*A9=ANIMATION
|
||
FEXPRC
|
||
MOVI 50,A0
|
||
CALLA RANDPER
|
||
JRNC FEXZ
|
||
;DO ROAR INSTEAD
|
||
CALLA GETSPK
|
||
JRUC FEXZ2
|
||
FEXZ
|
||
MOVI EXP3,A0 ;AUDIO BOMB EXPLODE
|
||
CALLA ONESND
|
||
FEXZ2
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
MOVE A8,A0 ;KILL THE SHIT AND DIE
|
||
CALLA DELOBJ
|
||
; CALLA DELPAL
|
||
JAUC SUCIDE
|
||
*
|
||
*BLOW OUT THE EYE
|
||
*A0=WHAT HIT ME
|
||
*A2=DAMAGE ADD
|
||
*A3=DAMAGE LEVEL
|
||
*A8=EYE LOCATION
|
||
*
|
||
BLOWEYE
|
||
MMTM SP,A3
|
||
CMPI 12,A3 ;TIME TO BLOW?
|
||
JRLO BLOIXX ;NO
|
||
SUB A2,A3
|
||
CMPI 12,A3
|
||
JRHS BLOIXX
|
||
MMTM SP,A0,A1,A7,A9,A10,A11
|
||
MOVE *A8(OID),A9,W
|
||
ZEXT A9,W ;CAN SIGN EXTEND
|
||
CMPI CLSENMY|TYPFACE|SUBER,A9
|
||
JREQ BLOI1
|
||
CMPI CLSENMY|TYPFACE|SUBEL,A9
|
||
JRNE BLOIX
|
||
BLOI1
|
||
MOVE *A0(OXVEL),A10,L ;PASS VELOCITY
|
||
MOVE *A0(OYVEL),A11,L
|
||
CREATE 0,BLOEYEP
|
||
CREATE 0,BLOEYEP
|
||
CREATE 0,BLOEYEP
|
||
CREATE 0,BLOEYEP
|
||
|
||
CALLA GETSPK
|
||
|
||
BLOIX
|
||
MMFM SP,A0,A1,A7,A9,A10,A11
|
||
BLOIXX
|
||
MMFM SP,A3
|
||
RETS
|
||
*
|
||
*BLOW EYE PROCESS
|
||
*MAKE A BLOW EYE DUDE
|
||
*SPIN OF AT CONSTANT VEL AND DIE
|
||
*A8=EYE OBJECT
|
||
*A9=OID OF EYE
|
||
*A10=XV OF BULLET
|
||
*A11=YV OF BULLET
|
||
*
|
||
BLOEYEP:
|
||
MOVE *A8(OXVEL),A6,L ;GET EXISTING VELOCITY
|
||
MOVE *A8(OYVEL),A7,L
|
||
MOVI >28000,A0 ;GET RANDOM XV, YV
|
||
CALLA SRAND
|
||
ADD A0,A6
|
||
MOVI >28000,A0
|
||
CALLA SRAND
|
||
ADD A0,A7
|
||
SRA 3,A10
|
||
ADD A10,A6
|
||
SRA 3,A11
|
||
ADD A11,A7
|
||
SRA 2,A6 ;CUT DOWN VELOCITY
|
||
SRA 2,A7
|
||
MOVE *A8(OXVAL),A0,L
|
||
MOVE *A8(OYVAL),A1,L
|
||
CMPI CLSENMY|TYPFACE|SUBER,A9
|
||
JREQ BLOE1
|
||
ADDI >F0000,A0 ;ADJUST START COORD X ,Y
|
||
ADDI >E0000,A1
|
||
JRUC BLOE2
|
||
BLOE1
|
||
ADDI >180000,A0
|
||
ADDI >E0000,A1
|
||
BLOE2
|
||
MOVI EYEFLY,A9
|
||
BLOE2A
|
||
MOVI I1,A2 ;(OIMG)
|
||
MOVI 231,A3 ;(OZPOS)
|
||
MOVI DMAWNZ,A4 ;(OFLAGS) NON-ZERO VALUE
|
||
MOVI CLSNEUT|TYPNEUT,A5 ;(OID)
|
||
CALLA BEGINOBJ2
|
||
MOVK 1,A1
|
||
JSRP FRANIM ;ANIMATE THE SUCKER
|
||
MOVE A8,A0
|
||
CALLA DELOBJ
|
||
; CALLA DELPAL
|
||
DIE
|
||
*
|
||
*BLOW OUT THE BOSS PARTS CHUNKER
|
||
*
|
||
RBSUB
|
||
MOVI FACSTOR,A9,L
|
||
MOVE *A9,A8,L
|
||
CALLA GETANIXY ;GET ANIMATION POINT A2=Y,A3=X
|
||
ADDI >400000,A2 ;ADJUST FOR CENTER
|
||
*
|
||
*GET PART VELOCITIES AND BLOW OUT
|
||
*
|
||
RBBLO1
|
||
MOVE *A8(OXPOS),A6,W
|
||
MOVE *A8(OSIZEX),A1,W
|
||
SRL 1,A1
|
||
ADD A1,A6
|
||
SLL 16,A6
|
||
SUB A3,A6
|
||
MOVE *A8(OYPOS),A1,W
|
||
MOVE *A8(OSIZEY),A4,W
|
||
SRL 1,A4
|
||
ADD A4,A1
|
||
SLL 16,A1
|
||
SUB A2,A1
|
||
SRA 3,A1
|
||
SRA 3,A6
|
||
MOVE A6,*A8(OXVEL),L
|
||
MOVE A1,*A8(OYVEL),L
|
||
|
||
MOVI CLSNEUT,A6 ;(OID)
|
||
MOVE A6,*A8(OID),W ;NEUTRAL OBJECT
|
||
|
||
CREATE 0,BLOPART ;CREATE BLOW APART PROCESS MONITOR
|
||
ADDI >40,A9
|
||
MOVE *A9,A8,L
|
||
JRNE RBBLO1
|
||
|
||
CALLR KILFACE
|
||
RETS
|
||
*
|
||
*BLOW A CLUSTER ABOUT THE HEAD
|
||
*A10= # TO BLOW OUT
|
||
*
|
||
BLOCLUST
|
||
MMTM SP,A2,A3,A8,A9
|
||
MOVI FACSTOR,A9,L
|
||
MOVE *A9,A8,L
|
||
CALLA GETANIXY ;GET ANIMATION POINT A2=Y,A3=X
|
||
MOVE @WORLDTLX,A8,L
|
||
SUB A8,A3 ;MAKE SCREEN RELATIVE
|
||
MOVE @WORLDTLY,A8,L
|
||
SUB A8,A2 ;MAKE SCREEN RELATIVE
|
||
ADDI >400000,A2 ;ADJUST FOR CENTER
|
||
SRL 16,A3 ;SHIFT DOWN XANI PT
|
||
SUBI >30,A3
|
||
SUBI >300000,A2
|
||
MOVX A3,A2
|
||
MOVE A2,@EXPTLXY,L ;EXPLOSION BOUNDARIES
|
||
ADDI >600060,A2
|
||
MOVE A2,@EXPLRXY,L
|
||
CALLA CLUSTER
|
||
MMFM SP,A2,A3,A8,A9
|
||
RETS
|
||
|
||
*KILL FACE PROCESSES
|
||
KILFACE
|
||
CLR A1
|
||
NOT A1
|
||
MOVI TYPFACE,A0 ;KILL ALL FACE PROCESSES
|
||
JAUC KILALL
|
||
|
||
*SHAKE THE BOSS, DUDE
|
||
BOSSHAK
|
||
MOVI >80000,A0
|
||
CALLA SRAND
|
||
MOVE A0,A1
|
||
MOVI >80000,A0
|
||
CALLA SRAND
|
||
MOVI FACSTOR,A8
|
||
CALLR STFVEL ;STUFF VELOCITY IN ALL PARTS
|
||
CALLR RBBNDCK ;MAKE SURE HE DOESN'T GO OUT
|
||
SLOOP 1,BOSSHAK
|
||
*
|
||
*BLOW OUT THE BOSS PROCESS
|
||
*
|
||
RBBLO
|
||
*SHAKE THE SCREEN AND MAKE CLUSTER BOMBS
|
||
CALLR KILFACE
|
||
CLR A1
|
||
CLR A0
|
||
MOVI FACSTOR,A8
|
||
CALLR STFVEL ;STUFF VELOCITY IN ALL PARTS
|
||
|
||
*ROLL EYES + GRIMACE RAPIDLY
|
||
*A9=ANI SEQ TABLE ADDR
|
||
*A10=SLEEP TIME
|
||
|
||
MOVI BLOW,A9 ;PUCKER UP
|
||
CALLR ANIBOSS
|
||
|
||
CREATE 0,RORS
|
||
CREATE TYPFACE,BOSSHAK
|
||
|
||
MOVK 3,A11
|
||
MOVI BOSSROLL,A9
|
||
MOVK 8,A10
|
||
JSRP ANILP
|
||
|
||
MOVI GROWL,A9 ;GRIN AND BEAR IT !
|
||
CALLR ANIBOSS
|
||
|
||
CLR A1
|
||
CLR A0
|
||
MOVI FACSTOR,A8
|
||
CALLR STFVEL ;STUFF VELOCITY IN ALL PARTS
|
||
|
||
MOVI 120,A10
|
||
CALLA SHAKER
|
||
MOVI EXP3HI,A0
|
||
CALLA ONESND
|
||
|
||
MOVI 15,A10
|
||
CALLR BLOCLUST
|
||
SLEEP 35
|
||
MOVI EXP3HI,A0
|
||
CALLA ONESND
|
||
MOVI 15,A10
|
||
CALLR BLOCLUST
|
||
SLEEP 45
|
||
MOVI EXP3HI,A0
|
||
CALLA ONESND
|
||
|
||
MOVK 2,A0
|
||
MOVE A0,*A13(PDATA),W
|
||
RBBLOLP
|
||
CALLR RBSUB
|
||
*REMAKE DUDE
|
||
MOVK 20,A11 ;MAX DAMAGE LEVEL
|
||
MOVE A3,A0
|
||
MOVE A2,A1
|
||
SUBI >400000,A1 ;GET INITIAL COORDS.
|
||
CALLR RBINIT ;INITIALIZE THE SKULL
|
||
MOVI FACSTOR,A8
|
||
MOVI GROWL,A9 ;GRIN AND BEAR IT !
|
||
CALLR ANIBOSS
|
||
SLEEP 16
|
||
DECW *A13(PDATA)
|
||
JRNE RBBLOLP
|
||
|
||
*START THE SKULL GOING
|
||
CALLR RBSUB
|
||
CLR A11
|
||
MOVE A3,A0
|
||
MOVE A2,A1
|
||
SUBI >400000,A1 ;GET INITIAL COORDS.
|
||
CALLR SKINIT ;INITIALIZE THE SKULL
|
||
CREATE TYPFACE,SKULPRC
|
||
MOVK 2,A0 ;SKULL IS HAPPENING
|
||
MOVE A0,@RBFLG,W
|
||
|
||
; MOVI FCE3,A8
|
||
; MOVI PAL3,A9
|
||
; MOVI [0,63],A10
|
||
; MOVK 1,A11
|
||
; CREATE 0,COLCYC ;COLOR CYCLER
|
||
|
||
SLEEP 5
|
||
|
||
MOVI NOWAY2,A0
|
||
CALLA ONESND
|
||
DIE
|
||
NOWAY2 .WORD >F4FF-04H,>50,>803F,0 ;"NO WAY"
|
||
|
||
RORS SLEEP 40
|
||
CALLA GETSPK
|
||
SLEEP 60
|
||
CALLA GETSPK
|
||
SLEEP 60
|
||
CALLA GETSPK
|
||
DIE
|
||
*
|
||
*BLOW OUT THE SKULL DUDES
|
||
*
|
||
SKBLO
|
||
; CALLA GETSPK
|
||
|
||
*SHAKE THE SCREEN AND MAKE CLUSTER BOMBS
|
||
CALLR KILFACE
|
||
|
||
CLR A1
|
||
CLR A0
|
||
MOVI FACSTOR,A8
|
||
CALLR STFVEL ;STUFF VELOCITY IN ALL PARTS
|
||
|
||
; MOVI FCE3,A8
|
||
; MOVI PAL3,A9
|
||
; MOVI [0,63],A10
|
||
; MOVK 1,A11
|
||
; CREATE 0,COLCYC ;COLOR CYCLER
|
||
|
||
|
||
|
||
MOVI 120,A10
|
||
CALLA SHAKER
|
||
|
||
CREATE 0,EXPSNDS
|
||
|
||
MOVI EXP3HI,A0
|
||
CALLA ONESND
|
||
MOVI 15,A10
|
||
CALLR BLOCLUST
|
||
SLEEP 45
|
||
MOVI EXP3HI,A0
|
||
CALLA ONESND
|
||
MOVI 15,A10
|
||
CALLR BLOCLUST
|
||
SLEEP 45
|
||
MOVI OUCH,A0
|
||
CALLA ONESND
|
||
|
||
MOVK 10,A0
|
||
MOVE A0,*A13(PDATA),W
|
||
SKBLOLP
|
||
CALLR RBSUB
|
||
*REMAKE DUDE
|
||
MOVI 5,A11 ;MAX DAMAGE LEVEL
|
||
MOVE A3,A0
|
||
MOVE A2,A1
|
||
SUBI >400000,A1 ;GET INITIAL COORDS.
|
||
CALLR SKINIT ;INITIALIZE THE SKULL
|
||
SLEEP 12
|
||
DECW *A13(PDATA)
|
||
JRNE SKBLOLP
|
||
|
||
*START THE SKULL GOING
|
||
CALLR RBSUB
|
||
|
||
SLEEP 120
|
||
MOVI MCSPK8,A0
|
||
CALLA ONESND
|
||
SLEEP 100
|
||
MOVI HA2SND,A0
|
||
CALLA ONESND
|
||
|
||
;TURN ON VICTORY MUSIC!
|
||
MOVI VICMSC,A0
|
||
CALLA ONESND
|
||
|
||
SLEEP 60
|
||
CREATE 0,DEXIT
|
||
DIE ;ITS TOTALLY FUCKING OVER !!!!
|
||
EXPSNDS MOVK 30,A9
|
||
EXPM1 MOVI EXP3HI,A0
|
||
CALLA ONESND
|
||
SLEEP 15
|
||
DSJ A9,EXPM1
|
||
DIE
|
||
*
|
||
*BLOW THE PIECE OUT
|
||
*A8=PART
|
||
*
|
||
BLOPART
|
||
MOVI 30,A0
|
||
CALLA RANDU
|
||
ADDK 10,A0
|
||
MOVE A0,A10
|
||
BLOPARTL
|
||
DEC A10
|
||
JRN BLOPART1
|
||
SLEEP 1
|
||
MOVI [>23-5,>1A],A2 ;BOUNDS CHECK
|
||
MOVI [>FC,>171+5],A3
|
||
CALLA OFSCRTST ;IS IT OUT OF BOUNDS ?
|
||
JREQ BLOPARTL ;NO
|
||
BLOPART1
|
||
CALLR CENTEX
|
||
MOVE A8,A0
|
||
CALLA DELOBJ
|
||
; CALLA DELPAL
|
||
DIE
|
||
|
||
*GET ACTUAL CENTER OF OBJECT
|
||
CENTEX
|
||
MMTM SP,A8
|
||
MOVE *A8(OXPOS),A0,W
|
||
MOVE *A8(OYPOS),A1,W
|
||
MOVE *A8(OSIZEX),A2,W
|
||
MOVE *A8(OSIZEY),A3,W
|
||
SRL 1,A2
|
||
SRL 1,A3
|
||
ADD A2,A0
|
||
ADD A3,A1
|
||
SLL 16,A0
|
||
SLL 16,A1
|
||
CLR A6
|
||
CLR A7
|
||
MOVI 199,A3 ;259
|
||
MOVI DMAWNZ|M_NOCOLL|M_FLIPV,A4 ;NON-ZERO VALUE
|
||
MOVI CLSNEUT|TYPNEUT,A5
|
||
MOVI EXPb1,A2
|
||
CALLA BEGINOBJ2
|
||
CREATE 0,BIGGIE1
|
||
MMFM SP,A8
|
||
RETS
|
||
BIGGIE1
|
||
MOVI EXP3HI,A0
|
||
CALLA ONESND
|
||
|
||
MOVI BOOM2,A9
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
MOVE A8,A0
|
||
; CALLA DELPAL ;NEEDED? NOT IF IN PLYR PAL!
|
||
CALLA DELOBJ
|
||
DIE
|
||
*
|
||
*STICK TOGETHER PROCESS
|
||
*
|
||
STICKP
|
||
MOVI FACSTOR,A8
|
||
CALLR STICKER
|
||
SLOOP 6,STICKP
|
||
*
|
||
*HOLD BIG GUY TOGETHER
|
||
*A8=BIG GUY DATA BLOCK
|
||
*FOLLOW FIRST PIECE
|
||
STICKER
|
||
MMTM SP,A12,A13
|
||
MOVE A8,A9
|
||
MOVE *A8,A10,L ;FIRST PIECE INDEX
|
||
MOVE *A10(OIMG),A1,L
|
||
MOVE *A10(OSIZE),A2,L
|
||
MOVE *A10(OFLAGS),A4,W
|
||
CALLA GANIOF ;GET X Y ANI OFFSET
|
||
MOVE A6,A12 ;SAVE X ANIOFF
|
||
MOVE A7,A13 ;SAVE Y ANIOFF
|
||
JRUC STICK2
|
||
STICKL
|
||
MOVE *A8(OIMG),A1,L
|
||
MOVE *A8(OSIZE),A2,L
|
||
MOVE *A8(OFLAGS),A4,W
|
||
CALLA GANIOF ;GET X Y ANI OFFSET
|
||
BTST B_FLIPH,A4
|
||
JREQ STICK1
|
||
ADDI >50000,A6 ;ADJUST FLIP KLUDGE
|
||
STICK1
|
||
MOVE *A10(OXVAL),A0,L
|
||
ADD A12,A0
|
||
SUB A6,A0
|
||
MOVE A0,*A8(OXVAL),L
|
||
MOVE *A10(OYVAL),A1,L
|
||
ADD A13,A1
|
||
SUB A7,A1
|
||
MOVE A1,*A8(OYVAL),L
|
||
STICK2
|
||
ADDI >40,A9
|
||
MOVE *A9,A8,L ;GET NEXT INDEX
|
||
JRNE STICKL ;DONE STICKING
|
||
MMFM SP,A12,A13
|
||
RETS
|
||
*
|
||
*STUFF NEW VELOCITY INTO BOSS OBJECT
|
||
*A0=XVEL
|
||
*A1=YVEL
|
||
*A8=POINTER TO OBJECT POINTER BLOCK
|
||
STFVEL
|
||
MMTM SP,A2,A8
|
||
STFVELP
|
||
MOVE *A8,A2,L
|
||
JREQ STFVELX ;ALL DONE, NULL POINTER
|
||
MOVE A0,*A2(OXVEL),L
|
||
MOVE A1,*A2(OYVEL),L
|
||
ADDI >40,A8
|
||
JRUC STFVELP
|
||
STFVELX
|
||
MMFM SP,A2,A8
|
||
RETS
|
||
*
|
||
*STUFF NEW POSITION IN BOSS OBJECT
|
||
*
|
||
*A0=XPOS
|
||
*A1=YPOS
|
||
*A8=POINTER TO OBJECT POINTER BLOCK
|
||
*
|
||
STFPOS
|
||
MMTM SP,A2,A8
|
||
STFPOSP
|
||
MOVE *A8,A2,L
|
||
JREQ STFPOSX ;ALL DONE, NULL POINTER
|
||
MOVE A0,*A2(OXPOS),L
|
||
MOVE A1,*A2(OYPOS),L
|
||
ADDI >40,A8
|
||
JRUC STFPOSP
|
||
STFPOSX
|
||
MMFM SP,A2,A8
|
||
RETS
|
||
*
|
||
*SKULL SEQUENCER
|
||
*A11=ANI SEQ TABLE ADDR
|
||
*A10=SLEEP TIME
|
||
*
|
||
SKSEQ
|
||
MOVE A9,A11
|
||
SKSEQ0
|
||
MOVE A11,A9
|
||
SKSEQL
|
||
MOVE A10,A0
|
||
JSRP ANIBSEQ
|
||
JRNC SKSEQL ;FREE RUN FOREVER
|
||
JRUC SKSEQ0
|
||
*
|
||
*ANISEQ
|
||
*A9=ANI SEQ TABLE ADDR
|
||
*A10=SLEEP TIME
|
||
ANISEQ
|
||
INCW @RBANIFLG
|
||
ANISEQL
|
||
MOVE A10,A0
|
||
JSRP ANIBSEQ
|
||
JRNC ANISEQL
|
||
DECW @RBANIFLG
|
||
DIE
|
||
*ANILP
|
||
*A9=ANI SEQ TABLE ADDR
|
||
*A10=SLEEP TIME
|
||
*A11=LOOP COUNT
|
||
ANILP
|
||
MMTM A12,A9
|
||
ANILPL
|
||
MOVE A10,A0
|
||
JSRP ANIBSEQ
|
||
JRNC ANILPL
|
||
MMFM A12,A9
|
||
DEC A11
|
||
JRNE ANILP
|
||
RETP
|
||
*
|
||
*ANIMATE BOSS MONSTER FRAME
|
||
*A0=SLEEP TIME, 0= NO SLEEP
|
||
*A8=POINTER TO OBJECT POINTER BLOCK
|
||
*A9=ANIMATION SEQUENCE ADDR
|
||
*RET CS IF SEQ ENDED
|
||
ANIBSEQ
|
||
MOVE *A9,A1,W ;NULL FRAME?
|
||
JREQ ANIBSQX ;YES, ITS ALL OVER
|
||
|
||
CALLR ANIBOSS
|
||
CALLA PRCSLP
|
||
CLRC
|
||
RETP
|
||
ANIBSQX
|
||
SETC
|
||
RETP
|
||
*
|
||
*ANIMATE BOSS MONSTER
|
||
*A8=POINTER TO OBJECT POINTER BLOCK
|
||
*A9=ANIMATION TABLE ADDR
|
||
*RETS A9 POINTING TO NEXT FRAME
|
||
ANIBOSS
|
||
MMTM SP,A0,A1,A2,A3,A4,A7,A8,A10
|
||
MOVE A8,A10
|
||
ANIBSL
|
||
MOVB *A9,A7 ;GET PART NUMBER
|
||
ADDK 8,A9 ;INCREMENT POINTER
|
||
DEC A7
|
||
SLL 6,A7
|
||
ADD A10,A7
|
||
MOVE *A7,A8,L ;GET OBJECT POINTER
|
||
MOVB *A9,A1 ;GET NEW FRAME NUMBER
|
||
ABS A1
|
||
MOVB A1,*A7(AFRAME)
|
||
|
||
DEC A1 ;ELIMINATE 0 CASE
|
||
MOVI RBANITB1-RBANITB,A2
|
||
MPYU A2,A1 ;ADJUST FOR LENGTH OF ENTRY
|
||
ADDI RBANITB,A1 ;ADD TABLE BASE
|
||
MOVE *A7(DAMAGEL),A3,W ;GET DAMAGE LEVEL
|
||
CMPI 20,A3
|
||
JRLS ANIBSL1
|
||
MOVK 20,A3
|
||
ANIBSL1
|
||
SRL 2,A3
|
||
SLL 5,A3 ;ADJUST FOR LONG WORD
|
||
ADD A3,A1
|
||
MOVE *A1,A1,L ;GET OIMG
|
||
MOVE *A8(OFLAGS),A4,W ;GET FLAGS
|
||
CALLA ANI ;ANIMATE IT
|
||
ADDK 8,A9 ;INCREMENT POINTER
|
||
MOVB *A9(-8),A1 ;WAS LAST ENTRY NEG?
|
||
JRNN ANIBSL ;NOPE, STILL GOING
|
||
ANIBDON
|
||
MMFM SP,A0,A1,A2,A3,A4,A7,A8,A10
|
||
RETS
|
||
*
|
||
*ANIMATION SCRIPTS
|
||
*
|
||
*ANIMATION TABLE
|
||
*PART #, ANI FRAME
|
||
*NEG=END OF FRAME
|
||
*
|
||
*ANIMATION NUMBERS
|
||
GLASS .SET 1
|
||
SHLLL1 .SET 2
|
||
EYECNT .SET 3
|
||
EYEUP .SET 4
|
||
EYELFT .SET 5
|
||
EYEDWN .SET 6
|
||
EYERT .SET 7
|
||
EYEBUG .SET 8
|
||
MTHCL .SET 9
|
||
MTHGR .SET 10
|
||
MTHOP .SET 11
|
||
CHEEK .SET 12
|
||
NOSE .SET 13
|
||
SHLLL2 .SET 14
|
||
SHLLL3 .SET 15
|
||
SHLLL4 .SET 16
|
||
SHLLL5 .SET 17
|
||
SHLLL6 .SET 18
|
||
SHLLL7 .SET 19
|
||
SHLLL8 .SET 20
|
||
MTHBLO .SET 21
|
||
SHLLIN1 .SET 22
|
||
SKLL1 .SET 23
|
||
SKLL2 .SET 24
|
||
PHOT1 .SET 25
|
||
PHOT2 .SET 26
|
||
PHOT3 .SET 27
|
||
PHOT4 .SET 28
|
||
PHOT5 .SET 29
|
||
SHLLIN2 .SET 30
|
||
SHLLIN3 .SET 31
|
||
SHLLIN4 .SET 32
|
||
SKLLI .SET 33
|
||
LSTANI .SET 33
|
||
*
|
||
*PART NUMBERS
|
||
LFTEYE .SET 5
|
||
RTEYE .SET 6
|
||
LFTMTH .SET 7
|
||
RTMTH .SET 8
|
||
*
|
||
*ANIANITB
|
||
*SEQ(32),TIME(32)
|
||
*
|
||
ANIANITB
|
||
.LONG BITE,8,BITE,15,ROLLEYES,10,BITE,20
|
||
.LONG ROLLEYES,30,ROLLEYES,15,BITE,10,GROWL,10
|
||
*OPEN MOUTH
|
||
*
|
||
BLOW
|
||
.BYTE LFTMTH,MTHBLO,RTMTH,-MTHBLO
|
||
BITE
|
||
.BYTE LFTMTH,MTHOP,RTMTH,-MTHOP
|
||
BITECL
|
||
.BYTE LFTMTH,MTHCL,RTMTH,-MTHCL
|
||
.WORD 0
|
||
*
|
||
*GROWL
|
||
*
|
||
GROWL
|
||
.BYTE LFTMTH,MTHGR,RTMTH,MTHGR
|
||
.BYTE LFTEYE,EYEBUG,RTEYE,-EYEBUG ;EYES BUGGED
|
||
.BYTE LFTMTH,MTHCL,RTMTH,MTHCL
|
||
.BYTE LFTEYE,EYECNT,RTEYE,-EYECNT ;EYES CENTERED
|
||
.WORD 0
|
||
*
|
||
*ROLL EYES
|
||
*
|
||
ROLLEYES
|
||
EYESUP
|
||
.BYTE LFTEYE,EYEUP,RTEYE,-EYEUP ;EYES UP
|
||
EYESLFT
|
||
.BYTE LFTEYE,EYELFT,RTEYE,-EYERT ;EYES LEFT
|
||
EYESDWN
|
||
.BYTE LFTEYE,EYEDWN,RTEYE,-EYEDWN ;EYES DOWN
|
||
EYESRT
|
||
.BYTE LFTEYE,EYERT,RTEYE,-EYELFT ;EYES RIGHT
|
||
.BYTE LFTEYE,EYEUP,RTEYE,-EYEUP ;EYES UP
|
||
.BYTE LFTEYE,EYEBUG,RTEYE,-EYEBUG ;EYES BUGGED
|
||
.BYTE LFTEYE,EYECNT,RTEYE,-EYECNT ;EYES CENTERED
|
||
.WORD 0
|
||
BOSSROLL
|
||
.BYTE LFTEYE,EYEUP,RTEYE,-EYEUP ;EYES UP
|
||
.BYTE LFTEYE,EYELFT,RTEYE,-EYELFT ;EYES LEFT
|
||
.BYTE LFTEYE,EYEDWN,RTEYE,-EYEDWN ;EYES DOWN
|
||
.BYTE LFTEYE,EYERT,RTEYE,-EYERT ;EYES RIGHT
|
||
.WORD 0
|
||
SKEYE
|
||
.BYTE LFTEYE,PHOT1,RTEYE,-PHOT5
|
||
.BYTE LFTEYE,PHOT2,RTEYE,-PHOT4
|
||
.BYTE LFTEYE,PHOT3,RTEYE,-PHOT3
|
||
.BYTE LFTEYE,PHOT4,RTEYE,-PHOT2
|
||
.BYTE LFTEYE,PHOT5,RTEYE,-PHOT1
|
||
.WORD 0
|
||
SKMOUTH
|
||
.BYTE 3,SKLL2,4,-SKLL2
|
||
.BYTE 3,SKLL1,4,-SKLL1
|
||
.WORD 0
|
||
.EVEN
|
||
*
|
||
*TABLE OF ROBOT BOSS ANIMATIONS
|
||
*0-255; 0=NULL
|
||
*FLAGS(16), OIMG(32) DAMAGE LEVEL 1-6
|
||
RBANITB
|
||
* 1 GLASS
|
||
.LONG GLSS1,GLSS2,GLSS3,GLSS4,GLSS5,GLSS5A
|
||
RBANITB1
|
||
* 2 OUTER SHELL PIECE 1
|
||
.LONG SHLL1,SHLL1A,SHLL1A,SHLL1B,SHLL1C,SHLL1D
|
||
* 3 EYE CENTERED
|
||
.LONG EYE1,EYE1,EYE6,EYE7,EYE8,EYE9
|
||
* 4 EYE UP
|
||
.LONG EYE2,EYE2,EYE6,EYE7,EYE8,EYE9
|
||
* 5 EYE LEFT
|
||
.LONG EYE3,EYE3,EYE6,EYE7,EYE8,EYE9
|
||
* 6 EYE DOWN
|
||
.LONG EYE4,EYE4,EYE6,EYE7,EYE8,EYE9
|
||
* 7 EYE RIGHT
|
||
.LONG EYE5,EYE5,EYE6,EYE7,EYE8,EYE9
|
||
* 8 EYE BUGGED
|
||
.LONG EYE10,EYE10,EYE6,EYE7,EYE8,EYE9
|
||
* 9 MOUTH CLOSED
|
||
.LONG MTH1,MTH1A,MTH1A,MTH1B,MTH1B,MTH1C
|
||
* 10 MOUTH GROWL
|
||
.LONG MTH2,MTH2A,MTH2A,MTH2B,MTH2B,MTH2C
|
||
* 11 MOUTH OPEN
|
||
.LONG MTH4,MTH4,MTH4A,MTH4B,MTH4B,MTH4C
|
||
* 12 CHEEK
|
||
.LONG CHCK1,CHCK1,CHCK1A,CHCK1A,CHCK1A,CHCK1B
|
||
* 13 NOSE
|
||
.LONG NSE1,NSE1A,NSE1A,NSE1B,NSE1B,NSE1C
|
||
* 14 OUTER SHELL PIECE 2
|
||
.LONG SHLL2,SHLL2A,SHLL2A,SHLL2B,SHLL2C,SHLL2D
|
||
* 15 OUTER SHELL PIECE 3
|
||
.LONG SHLL3,SHLL3A,SHLL3A,SHLL3B,SHLL3C,SHLL3D
|
||
* 16 OUTER SHELL PIECE 4
|
||
.LONG SHLL4,SHLL4A,SHLL4A,SHLL4B,SHLL4C,SHLL4D
|
||
* 17 OUTER SHELL PIECE 5
|
||
.LONG SHLL5,SHLL5A,SHLL5A,SHLL5B,SHLL5C,SHLL5D
|
||
* 18 OUTER SHELL PIECE 6
|
||
.LONG SHLL6,SHLL6A,SHLL6A,SHLL6B,SHLL6C,SHLL6D
|
||
* 19 OUTER SHELL PIECE 7
|
||
.LONG SHLL7,SHLL7A,SHLL7A,SHLL7B,SHLL7C,SHLL7D
|
||
* 20 OUTER SHELL PIECE 8
|
||
.LONG SHLL8,SHLL8A,SHLL8A,SHLL8B,SHLL8C,SHLL8D
|
||
* 21 MOUTH BLOWING
|
||
.LONG MTH3,MTH3A,MTH3A,MTH3B,MTH3B,MTH3C
|
||
* 22 INNER SHELL PIECE 1
|
||
.LONG FCSH1,FCSH1A,FCSH1A,FCSH1B,FCSH1B,FCSH1C
|
||
* 23 SKULL MOUTH CLOSED
|
||
.LONG SKLLM1,SKLLM1A,SKLLM1A,SKLLM1B,SKLLM1B,SKLLM1C
|
||
* 24 SKULL WITH MOUTH OPEN
|
||
.LONG SKLLM2,SKLLM2A,SKLLM2A,SKLLM2B,SKLLM2B,SKLLM2C
|
||
* 25 PHOTON 1 EYEBALL
|
||
.LONG photon1,photon1,photon1,photon1,photon1,photon1
|
||
* 26 PHOTON 2 EYEBALL
|
||
.LONG photon2,photon2,photon2,photon2,photon2,photon2
|
||
* 27 PHOTON 3 EYEBALL
|
||
.LONG photon3,photon3,photon3,photon3,photon3,photon3
|
||
* 28 PHOTON 4 EYEBALL
|
||
.LONG photon4,photon4,photon4,photon4,photon4,photon4
|
||
* 29 PHOTON 5 EYEBALL
|
||
.LONG photon5,photon5,photon5,photon5,photon5,photon5
|
||
* 30 INNER SHELL PIECE 2
|
||
.LONG FCSH2,FCSH2A,FCSH2A,FCSH2B,FCSH2B,FCSH2C
|
||
* 31 INNER SHELL PIECE 3
|
||
.LONG FCSH3,FCSH3A,FCSH3A,FCSH3B,FCSH3B,FCSH3C
|
||
* 32 INNER SHELL PIECE 4
|
||
.LONG FCSH4,FCSH4A,FCSH4A,FCSH4B,FCSH4B,FCSH4C
|
||
* 33 SKULL EYE PIECE
|
||
.LONG SKLLI1,SKLLI1A,SKLLI1A,SKLLI1B,SKLLI1B,SKLLI1C
|
||
*
|
||
*INITIALIZE ROBOT BOSS TABLE
|
||
*
|
||
RBITAB:
|
||
*PART 1 LEFT GLASS
|
||
.WORD DMAWNZ ;FLAGS
|
||
.WORD CLSENMY|TYPFACE|SUBGLL ;TYPE
|
||
.WORD GLASS ;ANIMATION #
|
||
*PART 2 RIGHT GLASS
|
||
.WORD DMAWNZ+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBGLR
|
||
.WORD GLASS
|
||
*PART 3 LEFT OUTER SHELL PIECE 1
|
||
.WORD DMAWNZ+M_PIXSCAN
|
||
.WORD CLSENMY|TYPFACE|SUBSHL
|
||
.WORD SHLLL1
|
||
*PART 4 RIGHT OUTER SHELL PIECE 1
|
||
.WORD DMAWNZ+M_PIXSCAN+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBSHL
|
||
.WORD SHLLL1
|
||
*PART 5 LEFT EYE
|
||
.WORD DMAWNZ
|
||
.WORD CLSENMY|TYPFACE|SUBEL
|
||
.WORD EYECNT
|
||
*PART 6 RIGHT EYE
|
||
.WORD DMAWNZ+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBER
|
||
.WORD EYECNT
|
||
*PART 7 LEFT MOUTH CLOSED
|
||
.WORD DMAWNZ
|
||
.WORD CLSENMY|TYPFACE|SUBMTL
|
||
.WORD MTHCL
|
||
*PART 8 RIGHT MOUTH CLOSED
|
||
.WORD DMAWNZ+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBMTR
|
||
.WORD MTHCL
|
||
*PART 9 LEFT CHEEK
|
||
.WORD DMAWNZ
|
||
.WORD CLSENMY|TYPFACE|SUBCKL
|
||
.WORD CHEEK
|
||
*PART 10 RIGHT CHEEK
|
||
.WORD DMAWNZ+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBCKR
|
||
.WORD CHEEK
|
||
*PART 11 LEFT NOSE
|
||
.WORD DMAWNZ
|
||
.WORD CLSENMY|TYPFACE|SUBNSL
|
||
.WORD NOSE
|
||
*PART 12 RIGHT NOSE
|
||
.WORD DMAWNZ+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBNSR
|
||
.WORD NOSE
|
||
*PART 13 LEFT OUTER SHELL PIECE 2
|
||
.WORD DMAWNZ+M_PIXSCAN
|
||
.WORD CLSENMY|TYPFACE|SUBSHL
|
||
.WORD SHLLL2
|
||
*PART 14 RIGHT OUTER SHELL PIECE 2
|
||
.WORD DMAWNZ+M_PIXSCAN+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBSHL
|
||
.WORD SHLLL2
|
||
*PART 15 LEFT OUTER SHELL PIECE 3
|
||
.WORD DMAWNZ+M_PIXSCAN
|
||
.WORD CLSENMY|TYPFACE|SUBSHL
|
||
.WORD SHLLL3
|
||
*PART 16 RIGHT OUTER SHELL PIECE 3
|
||
.WORD DMAWNZ+M_PIXSCAN+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBSHL
|
||
.WORD SHLLL3
|
||
*PART 17 LEFT OUTER SHELL PIECE 4
|
||
.WORD DMAWNZ+M_PIXSCAN
|
||
.WORD CLSENMY|TYPFACE|SUBSHL
|
||
.WORD SHLLL4
|
||
*PART 18 RIGHT OUTER SHELL PIECE 4
|
||
.WORD DMAWNZ+M_PIXSCAN+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBSHL
|
||
.WORD SHLLL4
|
||
*PART 19 LEFT OUTER SHELL PIECE 5
|
||
.WORD DMAWNZ+M_PIXSCAN
|
||
.WORD CLSENMY|TYPFACE|SUBSHL
|
||
.WORD SHLLL5
|
||
*PART 20 RIGHT OUTER SHELL PIECE 5
|
||
.WORD DMAWNZ+M_PIXSCAN+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBSHL
|
||
.WORD SHLLL5
|
||
*PART 21 LEFT OUTER SHELL PIECE 6
|
||
.WORD DMAWNZ+M_PIXSCAN
|
||
.WORD CLSENMY|TYPFACE|SUBSHL
|
||
.WORD SHLLL6
|
||
*PART 22 RIGHT OUTER SHELL PIECE 6
|
||
.WORD DMAWNZ+M_PIXSCAN+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBSHL
|
||
.WORD SHLLL6
|
||
*PART 23 LEFT OUTER SHELL PIECE 7
|
||
.WORD DMAWNZ+M_PIXSCAN
|
||
.WORD CLSENMY|TYPFACE|SUBSHL
|
||
.WORD SHLLL7
|
||
*PART 24 RIGHT OUTER SHELL PIECE 7
|
||
.WORD DMAWNZ+M_PIXSCAN+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBSHL
|
||
.WORD SHLLL7
|
||
*PART 25 LEFT OUTER SHELL PIECE 8
|
||
.WORD DMAWNZ+M_PIXSCAN
|
||
.WORD CLSENMY|TYPFACE|SUBSHL
|
||
.WORD SHLLL8
|
||
*PART 26 RIGHT OUTER SHELL PIECE 8
|
||
.WORD DMAWNZ+M_PIXSCAN+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBSHL
|
||
.WORD SHLLL8
|
||
*PART 27 LEFT INNER SHELL PIECE 1
|
||
.WORD DMAWNZ+M_PIXSCAN
|
||
.WORD CLSENMY|TYPFACE|SUBSHR
|
||
.WORD SHLLIN1
|
||
*PART 28 RIGHT INNER SHELL PIECE 1
|
||
.WORD DMAWNZ+M_PIXSCAN+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBSHR
|
||
.WORD SHLLIN1
|
||
*PART 29 LEFT INNER SHELL PIECE 2
|
||
.WORD DMAWNZ+M_PIXSCAN
|
||
.WORD CLSENMY|TYPFACE|SUBSHR
|
||
.WORD SHLLIN2
|
||
*PART 30 RIGHT INNER SHELL PIECE 2
|
||
.WORD DMAWNZ+M_PIXSCAN+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBSHR
|
||
.WORD SHLLIN2
|
||
*PART 31 LEFT INNER SHELL PIECE 3
|
||
.WORD DMAWNZ+M_PIXSCAN
|
||
.WORD CLSENMY|TYPFACE|SUBSHR
|
||
.WORD SHLLIN3
|
||
*PART 32 RIGHT INNER SHELL PIECE 3
|
||
.WORD DMAWNZ+M_PIXSCAN+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBSHR
|
||
.WORD SHLLIN3
|
||
*PART 33 LEFT INNER SHELL PIECE 4
|
||
.WORD DMAWNZ+M_PIXSCAN
|
||
.WORD CLSENMY|TYPFACE|SUBSHR
|
||
.WORD SHLLIN4
|
||
*PART 34 RIGHT INNER SHELL PIECE 4
|
||
.WORD DMAWNZ+M_PIXSCAN+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBSHR
|
||
.WORD SHLLIN4
|
||
.WORD 0 ;END OF LIST
|
||
*
|
||
*INITIALIZE SKULL TABLE
|
||
*
|
||
SKLTAB:
|
||
*PART 1 LEFT INNER SHELL PIECE 1
|
||
.WORD DMAWNZ ;FLAGS
|
||
.WORD CLSENMY|TYPFACE|SUBSHL ;TYPE
|
||
.WORD SHLLIN1 ;ANIMATION #
|
||
*PART 2 RIGHT INNER SHELL PIECE 1
|
||
.WORD DMAWNZ+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBSHL
|
||
.WORD SHLLIN1
|
||
*PART 3 LEFT SKULL MOUTH
|
||
.WORD DMAWNZ+M_PIXSCAN
|
||
.WORD CLSENMY|TYPFACE|SUBSHR
|
||
.WORD SKLL1
|
||
*PART 4 RIGHT SKULL MOUTH
|
||
.WORD DMAWNZ+M_PIXSCAN+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBSHR
|
||
.WORD SKLL1
|
||
*PART 5 LEFT EYEBALL
|
||
.WORD DMAWNZ+M_PIXSCAN
|
||
.WORD CLSENMY|TYPFACE|SUBEL
|
||
.WORD PHOT1
|
||
*PART 6 RIGHT EYEBALL
|
||
.WORD DMAWNZ+M_PIXSCAN+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBER
|
||
.WORD PHOT1
|
||
*PART 7 LEFT INNER SHELL PIECE 2
|
||
.WORD DMAWNZ ;FLAGS
|
||
.WORD CLSENMY|TYPFACE|SUBSHL ;TYPE
|
||
.WORD SHLLIN2 ;ANIMATION #
|
||
*PART 8 RIGHT INNER SHELL PIECE 2
|
||
.WORD DMAWNZ+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBSHL
|
||
.WORD SHLLIN2
|
||
*PART 9 LEFT INNER SHELL PIECE 3
|
||
.WORD DMAWNZ ;FLAGS
|
||
.WORD CLSENMY|TYPFACE|SUBSHL ;TYPE
|
||
.WORD SHLLIN3 ;ANIMATION #
|
||
*PART 10 RIGHT INNER SHELL PIECE 3
|
||
.WORD DMAWNZ+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBSHL
|
||
.WORD SHLLIN3
|
||
*PART 11 LEFT INNER SHELL PIECE 4
|
||
.WORD DMAWNZ ;FLAGS
|
||
.WORD CLSENMY|TYPFACE|SUBSHL ;TYPE
|
||
.WORD SHLLIN4 ;ANIMATION #
|
||
*PART 12 RIGHT INNER SHELL PIECE 4
|
||
.WORD DMAWNZ+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBSHL
|
||
.WORD SHLLIN4
|
||
*PART 13 LEFT SKULL EYE
|
||
.WORD DMAWNZ ;FLAGS
|
||
.WORD CLSENMY|TYPFACE|SUBSHR ;TYPE
|
||
.WORD SKLLI ;ANIMATION #
|
||
*PART 14 RIGHT SKULL EYE
|
||
.WORD DMAWNZ+M_FLIPH
|
||
.WORD CLSENMY|TYPFACE|SUBSHR
|
||
.WORD SKLLI
|
||
.WORD 0 ;END OF LIST
|
||
*
|
||
*EYEBALL FLYING THROUGH THE AIR
|
||
*
|
||
EYEFLY
|
||
.LONG I1
|
||
.WORD 6
|
||
.LONG I2
|
||
.WORD 6
|
||
.LONG I3
|
||
.WORD 6
|
||
.LONG I4
|
||
.WORD 6
|
||
.LONG I5
|
||
.WORD 6
|
||
.LONG I6
|
||
.WORD 6
|
||
.LONG I6
|
||
.WORD FLIPBITS|6,M_FLIPH
|
||
.LONG I5
|
||
.WORD 6
|
||
.LONG I4
|
||
.WORD 6
|
||
.LONG I3
|
||
.WORD 6
|
||
.LONG I2
|
||
.WORD 6
|
||
.LONG I1
|
||
.WORD 6
|
||
.LONG 0
|
||
*
|
||
*PHOTON
|
||
*
|
||
PHOTFLY
|
||
.LONG photon1
|
||
.WORD 3
|
||
.LONG photon2
|
||
.WORD 3
|
||
.LONG photon3
|
||
.WORD 3
|
||
.LONG photon4
|
||
.WORD 3
|
||
.LONG photon5
|
||
.WORD 3
|
||
.LONG 0
|
||
*
|
||
*SPITBALL FLYING THROUGH THE AIR
|
||
*
|
||
SPITFLY
|
||
.LONG BLB4A
|
||
.WORD 4
|
||
.LONG BLB3A
|
||
.WORD 4
|
||
.LONG BLB2A
|
||
.WORD 4
|
||
.LONG BLB1A
|
||
.WORD 4
|
||
.LONG BLB4A
|
||
.WORD 4
|
||
.LONG BLB3A
|
||
.WORD 4
|
||
.LONG BLB2A
|
||
.WORD 4
|
||
.LONG BLB1A
|
||
.WORD 4
|
||
.LONG BLB4A
|
||
.WORD 4
|
||
.LONG BLB3A
|
||
.WORD 4
|
||
.LONG BLB2A
|
||
.WORD 4
|
||
.LONG BLB1A
|
||
.WORD 4
|
||
.LONG 0
|
||
MEDEXP
|
||
.LONG EXPb1
|
||
.WORD NEWPALET|3
|
||
.LONG BULLET ;NEW PAL NAME
|
||
.LONG EXPb2
|
||
.WORD 3
|
||
.LONG EXPb3
|
||
.WORD 4
|
||
.LONG EXPb2
|
||
.WORD 5
|
||
.LONG EXPb1
|
||
.WORD 5
|
||
.LONG 0
|
||
|
||
.END
|
||
|
||
|
||
|
||
|
||
|