647 lines
12 KiB
NASM
647 lines
12 KiB
NASM
.FILE 'BOUNCERS.ASM'
|
||
.TITLE 'ROBO-RAMA GAME PROGRAM'
|
||
.WIDTH 132
|
||
.OPTION B,D,L,T
|
||
.MNOLIST
|
||
|
||
;
|
||
; INITIATED: APRIL 26,1989
|
||
; MODIFIED: !
|
||
; SOFTWARE: MARK TURMELL & ROBERT ASHWORTH
|
||
;
|
||
; COPYRIGHT (C) 1989 WILLIAMS ELECTRONICS GAMES, INC.
|
||
;
|
||
;
|
||
; GET THE SYSTEM STUFF
|
||
|
||
.INCLUDE "MPROC.EQU" ;MPROC EQUATES
|
||
.INCLUDE "DISP.EQU" ;DISPLAY PROC. EQUATES
|
||
.INCLUDE "\VIDEO\SYS\SYS.INC" ;Z UNIT SYSTEM EQUATES
|
||
.INCLUDE "\VIDEO\SYS\MACROS.HDR" ;MACROS DEFINITIONS
|
||
.INCLUDE "IMGTBL.GLO"
|
||
.INCLUDE "ROBO.EQU"
|
||
.INCLUDE "MARK.EQU"
|
||
; .INCLUDE "\VIDEO\SYS\SND.EQU"
|
||
;
|
||
;SYMBOLS EXTERNALLY DEFINED
|
||
;
|
||
.REF RANGRAND,GETCPNT,FRANIM,DELPAL,GPALOBJ,SCRADD2
|
||
.REF P1DATA,PEXPLSND,ONESND
|
||
.REF ADJSTWTL
|
||
;
|
||
;SYMBOLS DEFINED IN THIS FILE
|
||
;
|
||
.DEF SPAWN_BNCRS,DELETE_ME,KILL_BOUNCER,BOBJ2A
|
||
.DEF BEGIN_OBJ,GENERIC_INIT,BEGIN_OBJ2
|
||
.DEF XVAL,YVAL,IMG,ZPOS,FLAGS,ID,XVEL,YVEL
|
||
.DEF BOOM2,ONSCRN_BNCRS
|
||
;
|
||
;UNINITIALIZED RAM DEFINITIONS
|
||
;
|
||
.BSS BNCR_CNT,8 ;TOTAL BNCRS ON SCREEN
|
||
.BSS GENERIC_INIT,7*32-16
|
||
;
|
||
;EQUATES FIRST ORIGINATED IN THIS FILE
|
||
;
|
||
XVAL .EQU GENERIC_INIT
|
||
YVAL .EQU XVAL+32
|
||
IMG .EQU YVAL+32
|
||
ZPOS .EQU IMG+32
|
||
FLAGS .EQU ZPOS+16
|
||
ID .EQU FLAGS+16
|
||
XVEL .EQU ID+16
|
||
YVEL .EQU XVEL+32
|
||
|
||
BLFT .EQU 0
|
||
BRGT .EQU 070H
|
||
MAXBNCR .EQU 10 ;MAX NUMBER OF BNCRS ALLOWED
|
||
BNCRAGE .EQU 60*60 ;MAX AGE OF BNCRS (IN TICKS)
|
||
HSPEED .EQU >10000 ;PIXELS PER FIELD UPDATE
|
||
VSPEED .EQU >10000 ;PIXELS PER FIELD VERTICAL
|
||
NUPBND .EQU >00390000+>200000
|
||
NDNBND .EQU >00DF0000->200000
|
||
NLFTBND .EQU >001A0000+>300000
|
||
NRGTBND .EQU >01640000->300000
|
||
;
|
||
;BULLETS STRUCTURE
|
||
;
|
||
BV .EQU 0
|
||
BXO .EQU 32
|
||
BYO .EQU 64
|
||
BF .EQU 96
|
||
;
|
||
;BNCR PDATA STRUCTURE
|
||
;
|
||
;AGE .EQU PDATA ;WORD
|
||
DIR .EQU PDATA+16 ;WORD
|
||
BDELAY .EQU PDATA+32 ;WORD
|
||
KILLME .EQU PDATA+48 ;WORD
|
||
**************************************************************************
|
||
|
||
.TEXT
|
||
|
||
KILL_BOUNCER:
|
||
MOVE *A8(OPLINK),A0,L
|
||
MOVK 1,A7
|
||
MOVE A7,*A0(KILLME)
|
||
RETS
|
||
|
||
DEC_BNCR:
|
||
MOVB @BNCR_CNT,A3 ;DELETE A BNCR FROM CNT
|
||
DEC A3
|
||
MOVB A3,@BNCR_CNT
|
||
RETS
|
||
|
||
SPAWN_BNCRS:
|
||
MOVB @BNCR_CNT,A2 ;MOVE BYTE (# GRUNTS ON SCRN) TO A2
|
||
CMPI MAXBNCR,A2 ;GRUNTS MAXED OUT?
|
||
JRZ BNCR_OUT ;
|
||
|
||
CREATE 0,BOUNCER ;START ONE BOUNCER
|
||
BNCR_OUT:
|
||
RETS
|
||
|
||
ONSCRN_BNCRS:
|
||
RETS
|
||
|
||
; MOVK 16,A9 ;31 IS HOW MANY MAKE UP CIRCLE AROUND
|
||
; ;PLAYER WALKWAY INTO ARENA
|
||
; MOVE A9,@TMP
|
||
;A2=# OF HULKS TO CREATE ON SCREEN
|
||
OH1 PUSH A2 ;CREATE A BUNCH OF THEM
|
||
CREATE BNCRPID,OBNCR
|
||
PULL A2
|
||
DSJNE A2,OH1
|
||
RETS
|
||
|
||
OBNCR:
|
||
;OHULK IS CALLED AT THE START OF A WAVE TO PLACE X # OF HULKS ON SCREEN
|
||
;AT THE BEGINNING OF A WAVE
|
||
; MOVE *A13(CFLAGS),A0
|
||
; ORI 01H,A0
|
||
; MOVE A0,*A13(CFLAGS),W ;HULK IS IN STANDING MODE AT FIRST
|
||
; CLR A11
|
||
; CALLA GET_VALID_XY ;MAKE SURE NEW HULK IS NOT
|
||
;OVERLAPPING ANY EXISTING SHAPE
|
||
;WHICH IS ALREADY ON SCRN AT START
|
||
;A0 & A1 ARE SET UP
|
||
;ADD IN OFFSETS FOR THIS PARTICULAR ARENA
|
||
; MOVE @GAMSTATE,A2
|
||
; CMPI INAMODE,A2
|
||
; JREQ DMD
|
||
; MOVE @WAVEYX,A2,L
|
||
;A2=PACKED OFFSETS
|
||
MOVX A2,A3
|
||
SLL 16,A3
|
||
ADD A3,A0 ;ADJUSTED A0 XVAL!
|
||
ANDI 0FFFF0000H,A2
|
||
ADD A2,A1 ;ADJUSTED A1 YVAL!
|
||
|
||
;DMD CALLR IH1 ;INIT HULK (BEGIN_OBJ)
|
||
; CALLA BEGIN_OBJ2
|
||
|
||
MOVI 3,A0 ;HULK STARTS FACING RIGHT
|
||
MOVE A0,*A13(DIR)
|
||
|
||
; CALLR SETUP_HULK ;INC CNT, SET DIR, SET DEATH FLAG, ETC
|
||
; CALLR DO_DIFF
|
||
; CALLR JUST_SK
|
||
; CALLR GET_STAND ;HULK STANDS AND SPINS UNTIL A MATCH
|
||
;THIS GETS CORRECT OIMG, OFLAGS
|
||
JRUC LUP_TOP
|
||
BOUNCER:
|
||
;
|
||
CALLR INIT_BNCR ;INITIAL BNCR PARAMS (SHAPE ETC..)
|
||
CALLR SETUP_BNCR ;STUFF NECESSARY FIELD FOR INIT
|
||
|
||
LUP_TOP:
|
||
MOVE *A13(KILLME),A0
|
||
JRZ NO_DELETE
|
||
|
||
MOVI P1DATA,A2 ;PLAYER 1 SCORE SELECT
|
||
MOVI >25,A1 ;AMOUNT OF SCORE TO ADD PER BNCR
|
||
CALLA SCRADD2 ;DO IT!
|
||
|
||
CALLR DELETE_ME
|
||
CALLR DEC_BNCR
|
||
CREATE 0,BNCR_EXP
|
||
DIE
|
||
|
||
NO_DELETE:
|
||
; AGE IS NOT ZERO!
|
||
;DO WE NEED TO FIRE HORIZONTALLY AT PLAYER???
|
||
MOVE *A13(BDELAY),A1
|
||
JRZ MAYBE
|
||
DEC A1
|
||
MOVE A1,*A13(BDELAY)
|
||
JRUC NO ;BR=DON'T EVEN THINK ABOUT SHOOTING
|
||
|
||
MAYBE:
|
||
PUSH A8 ;SAVE OBJECT POINTER
|
||
; MOVE @KEEP_TORSO_PTR,A8,L
|
||
MOVE *A8(OXPOS),A7 ;XPOS OF PLAYER FOR LATER CHECK
|
||
CALLA GETCPNT
|
||
PULL A8 ;RESTORE BOUNCER POINTER
|
||
SRL 16,A1
|
||
SUBI 10,A1 ;A1 = CENTER POINT OF PLAYER
|
||
|
||
MOVE *A8(OYPOS),A5 ;BOUNCER Y POSITION
|
||
CMP A5,A1
|
||
JRLT NO ;BR=BOUNCER IS ABOVE PLAYER
|
||
ADDI 20,A5
|
||
CMP A5,A1
|
||
JRGT NO ;BR=BOUNCER IS BELOW PLAYER
|
||
; A HIT
|
||
; START SPIN PRIOR TO FIRE
|
||
MOVI 18,A1 ;DELAY BEFORE THIS BOUNCER FIRES AGAIN
|
||
MOVE A1,*A13(BDELAY)
|
||
CLR A0
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
|
||
MOVE *A13(DIR),A4
|
||
MOVE *A8(OXPOS),A6 ;X POSITION OF BOUNCER
|
||
CMP A6,A7 ;A7 IS PLAYER OXPOS, A6 IS BOUNCER
|
||
JRLT SPLFT ;BR=BOUNCER WILL SPIN TO LEFT TO FIRE
|
||
; BOUNCER WILL SPIN TO RIGHT
|
||
; NEED TO CHANGE A9 TO POINT TO APPROPRIATE FRANIM TBL (1 OF 2!)
|
||
; WE ALSO NEED TO ZERO VELOCITIES
|
||
MOVI UP_RGT,A9
|
||
CMPI 2,A4
|
||
JREQ STUFFA9
|
||
MOVI DN_RGT,A9
|
||
JRUC STUFFA9
|
||
SPLFT: MOVI UP_LFT,A9
|
||
CMPI 2,A4
|
||
JREQ STUFFA9
|
||
MOVI DN_LFT,A9
|
||
STUFFA9:
|
||
MOVK 1,A1
|
||
JRUC ANI_BNCR ;SKIP BOUNDARY CHECK
|
||
NO:
|
||
;COMPARE FOR TOP/BOT BOUNDARIES
|
||
MOVE *A8(OYVAL),A5,L ;Y POSITION OF BOUNCER
|
||
MOVE *A13(DIR),A1 ;GET GRUNT DIRECTION
|
||
CMPI 2,A1 ;IS HE MOVING UP??
|
||
JRNE CHKDN ;BR=HE IS FACING DOWN
|
||
; CMPI UPBND,A5
|
||
JRHI ANI_BNCR
|
||
JRUC DO_FLP
|
||
CHKDN:
|
||
; CMPI DNBND,A5 ;GET DOWN BOUNDARY
|
||
JRLO ANI_BNCR ;BR=PLAYER LOWER THAN BOUNDARY
|
||
DO_FLP:
|
||
;FLIP_DIR REVERSES PLUS STARTS NEW FRANIM LIST (A9)
|
||
CALLR FLIP_DIR ;REVERSE HIS DIRECTION
|
||
MOVK 1,A1
|
||
JRUC ANI_SPIN ;ANIM WILL LOOP TIL DONE WITH TABLE
|
||
|
||
ANI_BNCR:
|
||
CLR A1 ;FOR NORMAL WALKING, WE WANT FRANIM
|
||
;TO COME BACK AFTER EACH STEP SO THAT
|
||
;WE CAN BE CHECKING TO SEE IF WE NEED
|
||
;TO SHOOT OR FOR BOUNDARIES!
|
||
;OR!!!
|
||
ANI_SPIN: ;ENTRY FROM SET SPIN (NONSTOP FRANIM)
|
||
JSRP FRANIM
|
||
|
||
JRNC CHECK_NEXT ;BR=NOT AT END OF SCRIPT YET
|
||
CALLR STF4WLK ;RESTORE WALKING SCRIPT
|
||
;
|
||
CHECK_NEXT: ;GET NEXT TABLE ENTRY
|
||
JRUC LUP_TOP
|
||
;
|
||
SETUP_BNCR:
|
||
|
||
MOVI BNCRAGE,A3 ;SET AGE LIMIT OF OBJECT
|
||
; MOVE A3,*A13(AGE)
|
||
|
||
CALLR GET_DIR ;INITIAL DIRECTION OF PLAYER
|
||
CALLR STF4WLK ;STUFF A9 FOR WALKING DIR
|
||
|
||
CLR A0
|
||
MOVE A0,*A13(BDELAY)
|
||
MOVE A0,*A13(KILLME)
|
||
|
||
; UPDATE BNCR COUNT
|
||
MOVB @BNCR_CNT,A0
|
||
INC A0
|
||
MOVB A0,@BNCR_CNT
|
||
RETS
|
||
|
||
FLIP_DIR:
|
||
MOVE *A13(DIR),A1 ;REVERSE DIRECTION FROM PREVIOUS
|
||
XORI 1,A1
|
||
MOVE A1,*A13(DIR)
|
||
MOVI UP_DN,A9
|
||
CMPI 3,A1
|
||
JREQ SETPTRA
|
||
MOVI DN_UP,A9
|
||
|
||
SETPTRA:
|
||
CLR A0
|
||
MOVE A0,*A8(OXVEL),L
|
||
MOVE A0,*A8(OYVEL),L
|
||
RETS
|
||
|
||
STF4WLK:
|
||
MOVI T_PWK_UP,A9 ;ASSUME UP
|
||
MOVE *A13(DIR),A0
|
||
CMPI 2,A0
|
||
JREQ SETPTR
|
||
MOVI T_PWK_DN,A9
|
||
SETPTR:
|
||
; START HIM WALKING IN PROPER DIR WITH VELOCITY
|
||
; DIR IS IN A0
|
||
SLL 5,A0 ;*32 FOR EACH TABLE ENTRY
|
||
MOVI X1_OFFSET,A1,L ;BASE TABLE ADDRESS
|
||
ADD A0,A1 ;ADJUSTED OFFSET FOR TABLE ENTRY
|
||
MOVE *A1,A3,L ;A3 CONTAINS CORRECT X VELOCITY
|
||
|
||
MOVI Y1_OFFSET,A1,L ;BASE TABLE ADDRESS
|
||
ADD A0,A1 ;ADJUSTED OFFSET FOR TABLE ENTRY
|
||
MOVE *A1,A4,L ;A4 CONTAINS CORRECT Y VELOCITY
|
||
|
||
MOVE A3,*A8(OXVEL),L ;UPDATE X,Y VELOCITIES
|
||
MOVE A4,*A8(OYVEL),L
|
||
RETS
|
||
|
||
GET_DIR:
|
||
; GET DIR 3 OR 4 AND STUFF IT
|
||
MOVI 3,B0 ;CHOOSE RANDOM INITIAL DIRECTION
|
||
MOVI 4,B1 ;EITHER UP OR DOWN (3 OR 4)
|
||
CALLA RANGRAND
|
||
DEC A0
|
||
MOVE A0,*A13(DIR)
|
||
RETS ;ROTATE HIS BODY TO MATCH DIRECTION
|
||
|
||
DELETE_ME:
|
||
;
|
||
; DELETE OBJECT FROM OBJLST
|
||
;
|
||
MOVE A8,A0
|
||
CALLA DELPAL
|
||
CALLA DELOBJ
|
||
RETS
|
||
|
||
INIT_BNCR:
|
||
;INITIAL BNCR POSITION,IMAGE SHAPE,AGE ETC....
|
||
; DO STFOBF AND GET A0 PNTR
|
||
;RANDOM POSITIONING FOR BNCRS X/Y WITHIN SCREEN BOUNDARIES
|
||
; MOVE A0,A8
|
||
; MOVI UPBND,B0
|
||
; MOVI DNBND,B1
|
||
CALLA RANGRAND
|
||
MOVE A0,A1
|
||
;A1=YVAL
|
||
; MOVI LFTBND,B0
|
||
; MOVI RGTBND,B1
|
||
CALLA RANGRAND
|
||
;A0=XVAL
|
||
MOVI CLSENMY|TYPBNCR,A5
|
||
;A5=ID
|
||
MOVI DMAWNZ,A4 ;DRAW NON-ZERO BITS
|
||
;A4=FLAGS
|
||
MOVI T12ORN1,A2 ;BNCR IMAGE
|
||
;A2=IMG
|
||
MOVI 159,A3
|
||
;A3=ZPOS
|
||
CLR A6
|
||
;A6=XVEL
|
||
CLR A7
|
||
;A7=YVEL
|
||
CALLA BEGIN_OBJ
|
||
RETS
|
||
|
||
BNCR_EXP:
|
||
CALLR BEGIN_EXP
|
||
|
||
MOVI PEXPLSND,A0
|
||
CALLA ONESND
|
||
|
||
MOVI BOOM2,A9
|
||
MOVK 1,A1
|
||
JSRP FRANIM
|
||
CALLR DELETE_ME
|
||
DIE
|
||
|
||
BEGIN_EXP:
|
||
MOVE *A8(OXVAL),A0,L
|
||
;A0=XVAL
|
||
MOVE *A8(OYVAL),A1,L
|
||
;A1=YVAL
|
||
MOVI CLSNEUT|TYPNEUT,A5
|
||
;A5=ID
|
||
MOVI DMAWNZ|M_NOCOLL,A4 ;DRAW NON-ZERO BITS
|
||
;A4=FLAGS
|
||
MOVI EXPb1,A2
|
||
;A2=IMG
|
||
MOVI 159,A3
|
||
;A3=ZPOS
|
||
CLR A6
|
||
;A6=XVEL
|
||
CLR A7
|
||
;A7=YVEL
|
||
;PUT ON ANOTHER LIST
|
||
CALLA BEGIN_OBJ
|
||
RETS
|
||
|
||
FLAMES:
|
||
CALLR BEGIN_BLT
|
||
;
|
||
FLAMES1:
|
||
; TEST FOR WALL BORDERS
|
||
MOVI [>3C,>1A],A2
|
||
MOVI [>EA,>178],A3
|
||
CALLA SCRTSTG
|
||
JRZ FLAMES2
|
||
; DEL OBJ
|
||
; NOW DELETE OBJECT FROM OBJLST
|
||
CALLR DELETE_ME
|
||
DIE
|
||
|
||
|
||
FLAMES2:
|
||
SLEEP 1
|
||
JRUC FLAMES1
|
||
|
||
BEGIN_BLT:
|
||
; NOW STUFF CORRECT BULLET AND CORRECT FLIP INFO
|
||
; A10 = 0 FOR LEFT BULLET OR 112 FOR RGT BULLET
|
||
|
||
MOVI BINFO,A0
|
||
ADD A10,A0
|
||
MOVE *A0(BV),A6,L
|
||
;A6=XVEL
|
||
MOVE *A0(BXO),A2,L
|
||
MOVE *A0(BYO),A7,L
|
||
MOVE *A0(BF),A4
|
||
;A4=FLAGS
|
||
MOVE *A8(OXVAL),A0,L
|
||
ADD A2,A0
|
||
;A0=XVAL
|
||
MOVE *A8(OYVAL),A1,L
|
||
ADD A7,A1
|
||
;A1=YVAL
|
||
MOVI CLSENMY|TYPBNBL,A5 ;BOUNCER BULLET ID
|
||
;A5=ID
|
||
MOVI BULLETSIDE,A2
|
||
;A2=IMG
|
||
MOVI 159,A3
|
||
;A3=ZPOS
|
||
CLR A7
|
||
;A7=YVEL
|
||
CALLA BEGIN_OBJ2
|
||
RETS
|
||
;
|
||
BEGIN_OBJ:
|
||
;MAKE MORE EFFIECIENT
|
||
MOVE A0,@XVAL,L
|
||
MOVE A1,@YVAL,L
|
||
MOVE A2,@IMG,L
|
||
MOVE A3,@ZPOS
|
||
MOVE A4,@FLAGS
|
||
MOVE A5,@ID
|
||
MOVE A6,@XVEL,L
|
||
MOVE A7,@YVEL,L
|
||
MOVI GENERIC_INIT,A14 ;DEFINE OBJECT PARAMS
|
||
|
||
CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE
|
||
CALLA STFOBJ ;STUFF OBJECT DATA
|
||
MOVE A13,*A0(OPLINK),L
|
||
CALLA ADJSTWTL ;PUT US IN THE WORLD
|
||
CALLA INSOBJ ;INSERT OBJECT INTO LIST
|
||
MOVE A0,A8
|
||
RETS
|
||
;
|
||
BEGIN_OBJ2:
|
||
MOVE A0,@XVAL,L
|
||
MOVE A1,@YVAL,L
|
||
MOVE A2,@IMG,L
|
||
MOVE A3,@ZPOS
|
||
MOVE A4,@FLAGS
|
||
MOVE A5,@ID
|
||
MOVE A6,@XVEL,L
|
||
MOVE A7,@YVEL,L
|
||
BOBJ2A:
|
||
MOVI GENERIC_INIT,A14 ;DEFINE OBJECT PARAMS
|
||
|
||
CALLA GPALOBJ ;ALLOCATE A COLOR PALETTE
|
||
CALLA STFOBJ ;STUFF OBJECT DATA
|
||
MOVE A13,*A0(OPLINK),L
|
||
CALLA INSOBJ ;INSERT OBJECT INTO LIST
|
||
MOVE A0,A8
|
||
RETS
|
||
BINFO:
|
||
; .LONG XVEL, .LONG XOFFSET, .LONG YOFFSET, .WORD FLAGS
|
||
|
||
.LONG -060000H,080000H,090000H
|
||
.WORD DMAWNZ
|
||
.LONG 060000H,0230000H,090000H
|
||
.WORD DMAWNZ+M_FLIPH
|
||
;
|
||
X1_OFFSET:
|
||
.LONG -HSPEED,HSPEED,0,0
|
||
;
|
||
Y1_OFFSET:
|
||
.LONG 0,0,-VSPEED,VSPEED
|
||
;
|
||
;BOUNCER WALK ANIMATION TABLES
|
||
;
|
||
T_PWK_UP:
|
||
.LONG T12ORN1
|
||
.WORD FLIPBITS|6,0
|
||
.LONG T12ORN2
|
||
.WORD 6
|
||
.LONG T12ORN3
|
||
.WORD 6
|
||
.LONG T12ORN4
|
||
.WORD 6
|
||
.LONG T12ORN5
|
||
.WORD 6
|
||
.LONG 0
|
||
T_PWK_DN:
|
||
.LONG T12ORN1
|
||
.WORD FLIPBITS|6,(M_FLIPV)
|
||
.LONG T12ORN2
|
||
.WORD 6
|
||
;FLIPBITS|6,(M_FLIPV)
|
||
.LONG T12ORN3
|
||
.WORD 6
|
||
;FLIPBITS|6,(M_FLIPV)
|
||
.LONG T12ORN4
|
||
.WORD 6
|
||
;FLIPBITS|6,(M_FLIPV)
|
||
.LONG T12ORN5
|
||
.WORD 6
|
||
;FLIPBITS|6,(M_FLIPV)
|
||
.LONG 0
|
||
;
|
||
;BOUNCER ROTATE ANIMATIONS TABLE
|
||
;
|
||
UP_LFT:
|
||
.LONG T10ORN1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG T3OSH1
|
||
.WORD FLIPBITS|18,(M_FLIPH)
|
||
.LONG T3OSH2
|
||
.WORD SPAWNP|FLIPBITS|8
|
||
.WORD BLFT,0,0
|
||
.LONG FLAMES
|
||
.WORD M_FLIPH
|
||
.LONG T3OSH1
|
||
.WORD FLIPBITS|18,(M_FLIPH)
|
||
.LONG T3OSH2
|
||
.WORD SPAWNP|FLIPBITS|8
|
||
.WORD BLFT,0,0
|
||
.LONG FLAMES
|
||
.WORD M_FLIPH
|
||
.LONG T10ORN1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG 0
|
||
;
|
||
UP_RGT:
|
||
.LONG T2ORN1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG T3OSH1
|
||
.WORD FLIPBITS|18,0
|
||
.LONG T3OSH2
|
||
.WORD SPAWNP|8
|
||
.WORD BRGT,0,0
|
||
.LONG FLAMES
|
||
.LONG T3OSH1
|
||
.WORD FLIPBITS|18,0
|
||
.LONG T3OSH2
|
||
.WORD SPAWNP|8
|
||
.WORD BRGT,0,0
|
||
.LONG FLAMES
|
||
.LONG T2ORN1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG 0
|
||
;
|
||
DN_LFT:
|
||
.LONG T10ORN1
|
||
.WORD FLIPBITS|4,(M_FLIPV)
|
||
.LONG T3OSH1
|
||
.WORD FLIPBITS|18,(M_FLIPH)
|
||
.LONG T3OSH2
|
||
.WORD SPAWNP|FLIPBITS|8
|
||
.WORD BLFT,0,0
|
||
.LONG FLAMES
|
||
.WORD M_FLIPH
|
||
.LONG T3OSH1
|
||
.WORD FLIPBITS|18,(M_FLIPH)
|
||
.LONG T3OSH2
|
||
.WORD SPAWNP|FLIPBITS|8
|
||
.WORD BLFT,0,0
|
||
.LONG FLAMES
|
||
.WORD M_FLIPH
|
||
.LONG T10ORN1
|
||
.WORD FLIPBITS|4,(M_FLIPV)
|
||
.LONG 0
|
||
;
|
||
DN_RGT:
|
||
.LONG T2ORN1
|
||
.WORD FLIPBITS|4,(M_FLIPV)
|
||
.LONG T3OSH1
|
||
.WORD FLIPBITS|18,0
|
||
.LONG T3OSH2
|
||
.WORD SPAWNP|8
|
||
.WORD BRGT,0,0
|
||
.LONG FLAMES
|
||
.LONG T3OSH1
|
||
.WORD FLIPBITS|18,0
|
||
.LONG T3OSH2
|
||
.WORD SPAWNP|8
|
||
.WORD BRGT,0,0
|
||
.LONG FLAMES
|
||
.LONG T2ORN1
|
||
.WORD FLIPBITS|4,(M_FLIPV)
|
||
.LONG 0
|
||
;
|
||
UP_DN:
|
||
.LONG T2ORN1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG T3ORN1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG T2ORN1
|
||
.WORD FLIPBITS|4,(M_FLIPV)
|
||
.LONG 0
|
||
;
|
||
DN_UP:
|
||
.LONG T10ORN1
|
||
.WORD FLIPBITS|4,(M_FLIPV)
|
||
.LONG T3ORN1
|
||
.WORD FLIPBITS|4,(M_FLIPH)
|
||
.LONG T10ORN1
|
||
.WORD FLIPBITS|4,0
|
||
.LONG 0
|
||
|
||
BOOM2:
|
||
.LONG EXPb1
|
||
.WORD 3
|
||
.LONG EXPb2
|
||
.WORD 3
|
||
.LONG EXPb3
|
||
.WORD 4
|
||
.LONG EXPb4
|
||
.WORD 4
|
||
.LONG EXPb5
|
||
.WORD 4
|
||
.LONG EXPb6
|
||
.WORD 4
|
||
.LONG EXPb7
|
||
.WORD 5
|
||
.LONG EXPb8
|
||
.WORD 5
|
||
.LONG EXPb9
|
||
.WORD 5
|
||
.LONG 0
|
||
|
||
|
||
|
||
.END
|
||
|
||
|
||
|
||
|