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