trog/TROGSPRG.ASM

3372 lines
78 KiB
NASM
Raw Permalink Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

.MLIB "TROGMACS.LIB"
.FILE 'TROGSPRG.ASM'
.TITLE "<<< T R O G -- TROG, WITH THE BOUNCING SPRING SHOE. >>>"
.WIDTH 132
.OPTION B,D,L,T
.MNOLIST
**************************************************************************
* *
* COPYRIGHT (C) 1990 MIDWAY MANUFACTURING COMPANY, *
* MANUFACTURERS OF BALLY/MIDWAY AMUSEMENT GAMES. *
* ALL RIGHTS RESERVED. *
* *
**************************************************************************
* GET THE SYSTEM STUFF
.INCLUDE "MPROCEQU.ASM" ;MPROC equates
.INCLUDE "DISPEQU.ASM" ;Display processor equates
.INCLUDE "GSPINC.ASM" ;GSP assembler equates
.INCLUDE "SYSINC.ASM" ;Zunit system equates
.INCLUDE "IMGTBL.GLO"
.INCLUDE "TROGEQU.ASM"
.INCLUDE "STRING.H"
.INCLUDE "TROGAUDN.ASM"
.INCLUDE "TROGAEQU.ASM" ;GET THE ANIMATION EQUATES
.INCLUDE "TROGSPRG.TBL" ;INCLUDE THE IMAGE HEADERS
.DEF TROGSPRG_START, TROGSPRG_PROCESS, TROGBXFER
.DEF TRBOP0F1, TRBOP0F2, TRBOP0F3, TRBOP0F4, TRBOP0F5
.DEF TROGWOBBLE_D, TROGSMACK2_SND, TROGSSDEATH_OLD_RET
.DEF TROG_SHADOW_UPDATE, SMACK_SCREEN, BLOCK_CHECK
.REF FINDMOVE, GETCMOVE
.REF BOUNDRY_CHECK, ANIMATE_DIR, NOTDIR
.REF FIND_OPEN_CPNT, SMACK_CNT
.REF PIT_CLOSE, DINO_VEL
.REF SPRGSPEED, FIND_CLOSE_MPNT, FIND_CLOSE_CPNT
.REF ONE_MOVE, BONE_BETWEEN, BUMP, BUMPCK
.REF DINO_FRANIM, VALIDHITX, VALIDHITY, DINOREV, LOAD_DIR
.REF FREE_MOVE_EGG, TAROUT
.REF BONED_IN
.REF FRANIMATE_DIR, SCORE, FIRE_UP_MONKEY_SHIT
.REF HOUSE_PIT, FIND_CLOSE_EPNT
.REF TWO_MOVES
.REF BGND_TYPE, TRSTP0, TROG_CENTER, CLIP_INTO, ENEMY_START
.REF TROG_LOOK_COUNT, TROG_SEARCH_DIST
.REF TROG_NEW_PNT, FIND_MVD, GET_TROG_CPNT, SCORE_TO_PLAYER
.REF DINO_SPROING, CK_TROG_CENT, TROGUHOH_SND, TROGFIRE_SND
.REF TROGFIRE_U, TROGFIRE_D, TROGFIRE_LR, TROGINIT, DELETE_TROG
.REF SPRINGPIT_U, SPRINGPIT_D, SPRINGPIT_LR
.REF GET_DINO_CPNT, SELECT_DINO, TROG_CNT
.REF SPRINGDIE_U, SPRINGDIE_D, SPRINGDIE_LR
.REF SPRINGLAVA_U, SPRINGLAVA_D, SPRINGLAVA_LR
.REF TROG_VALIDATE_CHASEE, DINOSQUASH_SND, CLEAR_PURSUIT
.REF EARTHSHAKER, TINIT_TAB, FREEZE_TIME, DINOLOAD, IS_DINO_DEAD_A8
.REF TROGSQUISH_UU, TROGSQUISH_UD, TROGSQUISH_UL, TROGSQUISH_UR
.REF TROGSQUISH_DU, TROGSQUISH_DD, TROGSQUISH_DL, TROGSQUISH_DR
.REF TROGSQUISH_LRU, TROGSQUISH_LRD, TROGSQUISH_LRL, TROGSQUISH_LRR
.REF TROGSQUISH_LRU, TROGSQUISH_LRD, TROGSQUISH_LRR, TROGSQUISH_LRL
.REF DINO_MUNCH, POWERUP_DURATION, CK_TREX, BTYPE_CK
.REF TROGFOOD_U, TROGFOOD_D, TROGFOOD_LR, TROGFOOD_LR
.REF DINO_PUNCHED, GET_TROG_MPNT, GET_DINO_MPNT, TROG_OOF
.REF TROG_START_WAIT
**** .REF TROG_SLOWDOWN, TROG_SPEEDUP
.TEXT
**************************************************************************
* *
* TROGSPRG_START - START TROG WITH HIS SPRING SHOE. *
* A5 = [RANDOM # TO ADD, # TO START] *
* A6 = OID *
* *
**************************************************************************
TROGSPRG_START:
MMTM SP,A1,A7,A10
MOVI TROGSPRG_PROCESS,A7
MOVI TROGPID,A1
MOVE A6,A10
CALLA ENEMY_START
MOVK 3,A1
MOVE A1,@TROG_LOOK_COUNT,W
MOVK 4,A1
MOVE A1,@TROG_SEARCH_DIST,W
MOVE @SPRGSPEED,A1,W
CMPI 1800H,A1
JRHS TROGSPRGSPDOK
MOVI 1800H,A1 ;LOWEST POSSIBLE SPRING SPEED
MOVE A1,@SPRGSPEED,W
TROGSPRGSPDOK:
MMFM SP,A1,A7,A10
RETS
**************************************************************************
* *
* TROGSPRG_PROCESS - CREATE AND CONTROL THE TROG CHARACTER W/SPRINGS *
* A10 = OID *
* *
**************************************************************************
TROGSPRG_PROCESS:
CALLA CLRPDATA ;CLEAR OUR DATA AREA
MOVE A10,*A13(DOID),W ;STORE THIS GUYS OID
MOVK TTYPE_SPRING,A0
MOVB A0,*A13(TTYPE)
MOVI TROGSPRG_ATAB,A0 ;LOAD THE ANIMATION TABLE
MOVE A0,*A13(DATABLE),L
MOVE @SPRGSPEED,A1,W ;GET THIS WAVES INITIAL VELOCITY
ZEXT A1
MOVE A1,*A13(DSPEED),W ;KEEP THE INITIAL SPEED
MOVI INITSPEEDUPS,A0 ;INITIAL SPEED UP COUNT
MOVB A0,*A13(TSPEEDUPS)
TROGSS_RANDOM_INIT:
*TRANSFER HERE AFTER TROG DEATH
*ABOVE VARIABLES MUST BE CORRECT
*ONLY RETURN HERE AFTER THE OLD DINO HAS BEEN DELETED
* *A13(DINITPOS),L = RE-START POSITION [Y,X] CENTER POINT OF INITIAL FRAME
* *A13(DINITDIR),W = RE-START DIRECTION
*REMBER TO RE-INITIALIZE THE Z POSITION AFTER A DEATH.
TROGSS_DEATH_XFER:
CLR A0
MOVB A0,*A13(DPUNCHFLG) ;CLEAR FLAGS
MOVE A0,*A13(TDINO),L ;CLEAR THE PURSUEE
MOVB A0,*A13(DVNFLAG)
MOVB A0,*A13(THITS)
MOVB A0,*A13(TFREEZE)
NOT A0
MOVB A0,*A13(TPLAYER)
CALLR VEL_NORMAL ;SET TROG VELOCITY TO NORMAL
MOVB *A13(DDIZZYFLG),A0 ;IS HE DIZZY?
JRNZ TSSI_DIZZY ;BR = YES, THEN LEAVE FLAG ALONE
MOVK 1,A0 ;MAKE SURE HE'S NOT MUCKED WITH
MOVB A0,*A13(DDIZZYFLG)
TSSI_DIZZY:
JSRP TROG_START_WAIT
MOVE *A13(DOID),A14,W
SRL 2,A14
SLL 30,A14
SRL 25,A14
ADDI TINIT_TAB,A14
MOVE *A14,A14,L ;LOAD THE CORRECT TROG INITIALIZATION
CALLA GPALOBJSTF ;GET AN OBJECT AND STUFF
JRZ TROGSS_PROC_DIE ;BR = WE FAILED TO GET AN OBJECT
INCM @TROG_CNT,W
MOVE A0,A8
MOVE A13,*A8(OPLINK),L ;LINK THE PROC TO THE OBJ
MOVE *A13(DOID),*A8(OID),W ;STUFF THE I.D.
MOVI TROGSSCOLL,A10 ;ESPECIAL COLLISIONS FOR THIS DUDE
MOVE A10,*A8(OCVECT),L
MOVE *A13(DATABLE),A10,L ;RELOAD THE ANIMATION TABLE
CALLR GET_OFFSCRN_YX ;GET A RANDOM OFFSCREEN COORDINATE
CALLA TROG_NEW_PNT ;CENTER TROG ON THIS NEW POINT
MOVK DOWN,A0
MOVE A0,*A13(DDIR),W ;HE WILL FACE DOWN FOR THIS
MOVI STANDU,A0 ;STAND IN PLACE
CALLA DINOLOAD
MOVK 4,A1
JSRP FRANIM ;LOAD THE NEW FRAME
MOVI TROGS,A1
CALLA INSERT_OBJ_SUPP ;INSERT THIS 'TING
SLEEPR A0 ;SLEEP THE FRAME TIME
MOVB @TROG_LOOK_COUNT,A6
MOVB A6,*A13(TNEXTLOOK)
TROGSS_FP:
CALLA FIND_OPEN_CPNT ;FIND A PLACE FOR TROG TO APPEAR
JRNZ TROGSS_APPEAR ;BR = FOUND A PLACE
SLOOP 20,TROGSS_FP ;WAIT A LITTLE AND TRY AGAIN
TROGSS_APPEAR:
MOVE *A1(MOVEPOS),A3,L
MOVE A3,*A13(DINITPOS),L
JSRP BOUNCE_TO
*
*PROCESS TRANSFER POINT FOR TROG BOUNCING PROCESS
* A8 = PTR TO TROG OBJECT
* *A13(DATABLE),L = PTR TO TROG ANIMATION TABLE
* *A13(DDIR),W = CURRENT TROG DIRECTION
* *A13(DOID) = OBJECT I.D. OF THIS TROG MAN
* *A13(TPLAYER),L = DATA AREA OF PLAYER THAT TROG IS CHASING
*
TROGBXFER
MOVE A13,A12
ADDI PRCSIZ,A12 ;RESET PROCESS STACK POINTER
ANDNIM M_NOCOLL,*A8(OFLAGS),W ;MAKE SURE COLLISIONS ARE ON
CLR A0
MOVB A0,*A13(DPUNCHFLG) ;CLEAR FLAGS
MOVB A0,*A13(DDIZZYFLG)
MOVB A0,*A13(TFREEZE)
MOVE *A13(DOID),*A8(OID),W ;MAKE HIM A NORMAL TROGSTER
MOVE *A13(DDIR),A11,W ;GET THE NEW DIRECTION
MOVE *A13(DATABLE),A10,L ;RESTORE THE ANIMATION TABLE
CALLA PSTOP
MOVI TROGWOBBLE_D,A9
CALLA GET_TROG_CPNT ;THIS IS HIS NEW CENTER
ADDI [5,0],A1
CALLA FIND_CLOSE_MPNT ;FIND THE CLOSEST MOVE POINT
MOVE A3,*A13(TCURMPOS),L ;AND STORE IT AS HIS CURRENT MOVE POS
CALLR TROG_SHADOW_UPDATE ;UPDATE THE DUDES SHADOW
*
*A11 = CURRENT TROG DIRECTION HERE
*
TROGBLP
MOVE @GAME_STATE,A1,W
CMPI INGAME,A1 ;ARE WE BONUSING?
JRNE TROGSS_CONTINUE
MOVI STANDU,A0
JSRP FRANIMATE_DIR
MOVI TROGWOBBLE_D,A9
JRUC TROGBLP
TROGSS_CONTINUE:
CALLR VEL_NORMAL ;RETURN TROG VELOCITY TO NORMAL
MOVE *A13(DDIR),A11,W
CMPI DOWN,A11
JRNE TROGSS_NEWPNT
MOVI TROGWOBBLE_D,A9
MOVI 0802H,A1
JSRP FRANIM ;ALWAYS ANIMATE THE BREATHER SLOWLY
TROGSS_NEWPNT:
*** CALLA FIND_OPEN_CPNT ;GET ANOTHER POINT TO JUMP TO
CALLR FIND_CPNT ;GET ANOTHER POINT TO JUMP TO
JRNZ TROGSS_JUMP_TO_OPEN ;BR = FOUND ONE, JUMP TO IT
MOVE *A13(TCURMPOS),A3,L ;DIDN'T FIND A NEW ONE, JUMP IN PLACE
JRUC TROGSS_JUMP_TO
TROGSS_JUMP_TO_OPEN:
MOVE *A1(MOVEPOS),A3,L
TROGSS_JUMP_TO:
JSRP BOUNCE_TO
MOVB *A13(TNEXTLOOK),A6
DEC A6 ;DECREMENT NEXT LOOK COUNTER
MOVB A6,*A13(TNEXTLOOK)
JRNN TROGSS_CONTINUE
*TIME TO SELECT A DINO TO JUMP ON
TROGSS_SELECT_DINO:
CALLA CLEAR_PURSUIT
CALLA SELECT_DINO
JRNZ TROGSS_FOUND_DINO
CLR A4
MOVE A4,*A13(TDINO),L
NOT A4
MOVB A4,*A13(TPLAYER)
JRUC TROGSS_CONTINUE
TROGSS_FOUND_DINO:
MOVE A4,*A13(TDINO),L
MOVE *A4(OID),A2,W
SLL 28,A2
SRL 28,A2
MOVB A2,*A13(TPLAYER)
MOVK 3,A6
MOVE A6,*A13(TTRAPTIME),W
TROGSS_POUNCE:
MOVE *A4(OPLINK),A6,L ;GET THIS DINOS PROCESS LINK
JRZ TROGSS_CONTINUE ;BR = HE HAS NONE, JUST JUMP MORE
MOVB *A6(DINVIN),A0 ;HAS THIS DINO HAS GONE INVINCIBLE
JRNE TROGSS_CONTINUE ;BR = YES
SWAP A4,A8
CALLA GET_DINO_CPNT
SWAP A4,A8
CALLA FIND_CLOSE_CPNT
MOVE *A6(DDIR),A5,W
CMPI UP,A5
JREQ TROGSS_ABOVE
CMPI DOWN,A5
JREQ TROGSS_BELOW
CMPI RIGHT,A5
JREQ TROGSS_RIGHT
ADDI [0,-32],A3
JRUC TROGSS_TRACK_DINO
TROGSS_RIGHT:
ADDI [0,32],A3
JRUC TROGSS_TRACK_DINO
TROGSS_BELOW:
ADDI [32,0],A3
JRUC TROGSS_TRACK_DINO
TROGSS_ABOVE:
ADDI [-32,0],A3
TROGSS_TRACK_DINO:
JSRP BOUNCE_TO
MOVE *A13(DDIR),A11,W
MOVE A11,A1 ;AND PUT IT IN THE CORRECT PLACE
CALLA VEL_NORMAL ;RETURN TROG VELOCITY TO NORMAL
CALLA BOUNDRY_CHECK
JRNE TROGSS_OUT_OF_BOUNDS
CMPI DOWN,A11
JRNE TROGSS_TRACK_VALID
MOVI TROGWOBBLE_D,A9
MOVI 0402H,A1
JSRP FRANIM ;ALWAYS ANIMATE THE BREATHER SLOWLY
TROGSS_TRACK_VALID:
CALLA TROG_VALIDATE_CHASEE
MOVE *A13(TDINO),A4,L
JRZ TROGSS_SELECT_DINO
DECM *A13(TTRAPTIME),W
JRGT TROGSS_POUNCE
*TIME TO HIT THE DINO RIGHT ON THE NOSE
SWAP A4,A8
CALLA GET_DINO_CPNT
SWAP A4,A8
CALLA FIND_CLOSE_CPNT
CALLA CLEAR_PURSUIT
JRUC TROGSS_TRACK_DINO
*
*TROG HAS GONE OUT OF BOUNDS HERE
TROGSS_OUT_OF_BOUNDS:
CALLA SCORE_TO_PLAYER ;SCORE TO THE WORLD, TROG IS DEAD
MOVE A8,A0
CALLA DELSHAD
CALLA GET_TROG_CPNT ;GET THE CENTER POINT OF TROGGY
CALLA FIND_CLOSE_EPNT ;FIND OUT WHERE HE FELL OFF
MOVE A0,A4
CALLA NOTDIR ;APPEAR IN THE REVERSE DIRECTION
MOVE A11,*A13(DINITDIR),W ;MAKE THIS THE NEW DIRECTION
CMPI TYPE_PIT,A5 ;DID WE DIE IN A PIT?
JREQ TROGSS_PIT_DEATH ;BR = YES SIR
CMPI TYPE_VOLCANO,A5
JREQ TROGSS_VOLCANO
TROGSS_CLIFF_DEATH:
MOVI DEADTROGOID,A0 ;MARK TROG AS DEAD
MOVE A0,*A8(OID),W
*CHECK TO SEE IF ANYONE HAD A HOUSE HERE
MOVE A4,A4
JRZ TROGSS_OFF_EDGE
MOVE *A4(EMOVEOBJ),A0,L
JRZ TROGSS_OFF_EDGE
*HE DIED IN SOMEONE'S HOUSE HERE
MOVE A4,A9
CREATE INDPID,HOUSE_PIT
MOVI OGPITU,A0
JSRP FRANIMATE_DIR
MOVK 1,A1
JSRP FRANIM ;RUN THE REST OF THE SCRIPT
JRUC TROGSS_DEATH_DONE
TROGSS_OFF_EDGE:
CALLA BTYPE_CK
JRNZ TSSDEATHLAVA
MOVI DEATH_UP,A0 ;DEFAULT ON NORMAL DEATH
JRUC TSSDEATHLAN
TSSDEATHLAVA:
MOVI LAVADIEU,A0
JRUC TSSDEATHLAN
TSSDEATHLAN:
JSRP FRANIMATE_DIR
JRUC TROGSS_DEATH_DONE
*
*ANIMATE PIT DEATH ANIMATION WITH CENTER POINT DRIFT
*A6 = PIT [Y,X] CENTER POINT
TROGSS_PIT_DEATH:
MOVI DEADTROGOID,A0 ;MARK TROG AS DEAD
MOVE A0,*A8(OID),W
PUSHP A6
MOVI PIT_DEATH_UP,A0
JSRP FRANIMATE_DIR ;ANIMATE THE FLAIL
CALLA GETCPNT ;GET TROGS CENTER POINT
MOVE A1,A2
PULLP A3
MOVI 25*4,A4 ;AVERAGE SPIN DURATION
CALLA SLINEVEL
MOVE A1,*A8(OXVEL),L
MOVE A2,*A8(OYVEL),L
MOVK 1,A1
JSRP FRANIM ;NOW ANIMATE THE REST
CALLA PSTOP
JRUC TROGSS_DEATH_DONE
TROGSS_VOLCANO:
CALLR FIND_CPNT
MOVE *A1(MOVEPOS),A3,L
JSRP BOUNCE_TO
JRUC TROGBLP ;RETURN TO THE ISLAND
*
*MUST HAVE PTR TO EXIT MOVE PUSHED ON THE PROCESS STACK
*IF = 0 THEN BLOW OFF THEN *A13(DINITPOS),L IS STUFFED
TROGSS_DEATH_DONE:
TROGSSDEATH_OLD_RET:
MOVE *A13(DOID),A10,W ;RESTORE HIS I.D.
CALLA DELETE_TROG
**** SLEEP 150 ;WAIT A LITTLE BIT BEFORE RE-INIT
**** JRUC TROGSS_RANDOM_INIT ;FIND A RANDOM START POSITION
****TROGSSDEATH_EATEN
**** MOVE *A13(DOID),A10,W ;RESTORE HIS I.D.
**** CALLA DELETE_TROG
**** SLEEPM @POWERUP_DURATION,W
****TROGSSDEATH_WTREX
**** SLEEP 60 ;DEFAULT WAIT
**** CALLA CK_TREX ;WAIT FOR THE TREX TO GO
**** JRNZ TROGSSDEATH_WTREX
**** JRUC TROGSS_RANDOM_INIT ;FIND A RANDOM START POSITION
TROGSS_PROC_DIE:
DIE
**************************************************************************
* *
* BOUNCE_TO - PROCESS SUBROUTINE TO BOUNCE THE SPRING SHOE MAN FROM *
* HIS CURRENT POINT TO ANOTHER. THE TARGET POINT IS *
* WHERE HIS FEET WILL LAND. *
* A3 = TARGET [Y,X] *
* A8 = PTR TO SPRING SHOE TROG OBJECT *
* A13 = PTR TO SPRING SHOE TROG PROCESS *
* NOTE: CALL WITH JSRP *
* *
**************************************************************************
BOUNCE_TO:
MOVE A3,A1
CALLA FIND_CLOSE_MPNT
CALLR BLOCK_CHECK ;SEE IF THIS MOVE IS BLOCKED
JRNZ BT_GO
MOVE *A13(TCURMPOS),A1,L ;BOUNCE IN PLACE BOY
BT_GO
MOVE A1,A3
PUSHP A3 ;STORE THE CENTER WE NEED TO HIT
MOVE A3,A4
MOVI TROGINIT,A14
MOVE *A14(INITIMG),A5,L ;GET THE INITIAL IMAGE PTR
CLR A0
MOVE *A5(ISIZE),A1,L
CALLA GETCENT
SLL 16,A0
MOVY A0,A1
SUBXY A1,A4
MOVE *A5(IANIOFF),A1,L
ADDXY A1,A4 ;A3 = THE POINT WE NEED TO REACH
CALLA GETANIXY
SRL 16,A3
MOVX A3,A2
*GET THE RESPECTIVE DISTANCES
SUBXY A2,A4
*DETERMINE THE VELOCITIES AT WHICH TROG MUST TRAVEL TO REACH HIS POINT
*A4 = [Y,X] DISTANCES TO THE POINTS
BOUNCE_TO_TIME:
CLR A1
MOVX A4,A1
SEXT A1
ABS A1
CMPI 16,A1
JRHS BOUNCE_TO_X_OK
CLR A1
MOVX A1,A4
BOUNCE_TO_X_OK:
MOVY A4,A2
SRA 16,A2
ABS A2
CMPI 16,A2
JRHS BOUNCE_TO_Y_OK
CLR A2
MOVY A2,A4
BOUNCE_TO_Y_OK:
CMP A1,A2
JRGT BOUNCE_Y_GREATER
*THE X DISTANCE IS GREATER IN THIS CASE
MOVE *A13(DVEL),A6,L
MOVE A6,A5
SLL 16,A1
DIVU A5,A1 ;GET THE TICKS TO DO THIS
MOVE A1,A5
JRZ BOUNCE_IN_PLACE ;BR = HE'S NOT GOING ANYWHERE
CLR A7
MOVY A4,A7
DIVS A5,A7 ;GET PROPER Y VELOCITY
MOVI RIGHT,A11
CLR A0
CMPXY A0,A4
JRXGT BOUNCE_TO_JUMP
JRXEQ BOUNCE_IN_PLACE
NEG A6 ;BOUNCE IN A NEGATIVE X DIRECTION
MOVI LEFT,A11
JRUC BOUNCE_TO_JUMP
*THE Y DISTANCE IS GREATER IN THIS CASE
BOUNCE_Y_GREATER:
MOVE *A13(DVEL),A7,L
MOVE A7,A1 ;USE A5 FOR THE DIVIDE
MOVE A2,A5
SLL 16,A5
DIVU A1,A5 ;GET THE TICKS TO DO THIS IN Y
JRZ BOUNCE_IN_PLACE ;BR = HE'S NOT GOING ANYWHERE
MOVX A4,A1
SEXT A1
SLL 16,A1
DIVS A5,A1 ;GET THE X VELOCITY
MOVE A1,A6
MOVI DOWN,A11
CLR A0
CMPXY A0,A4
JRYGT BOUNCE_TO_JUMP
JRYEQ BOUNCE_IN_PLACE
NEG A7 ;BOUNCING UP
MOVI UP,A11
JRUC BOUNCE_TO_JUMP
*
*BOUNCE ON THE SAME SPOT
BOUNCE_IN_PLACE:
MOVI 20H,A5
CLR A6
CLR A7
MOVE *A13(DDIR),A11,W
*DO THE TROG BOUNCE HERE
*A5 = # OF TICKS THIS BOUNCE WILL LAST
*A6 = X VELOCITY OF TROG
*A7 = BASE Y AND Z VELOCITIES OF TROG
*A11 = ANIMATE TO THIS DIRECTION!
BOUNCE_TO_JUMP:
MOVE A7,A4
CMPI 60H,A5
JRHS BOUNCE_TO_2
CMPI 30H,A5
JRLO BOUNCE_TO_NOW
BOUNCE_TO_1:
MMTM A12,A4,A5,A6,A11
CLR A4
MOVI 20H,A5
CLR A6
MOVE *A13(DDIR),A11,W
CALLA GET_TROG_CPNT ;GET TROG'S CENTER POINT
ADDI [5,0],A1 ;FUDGE FOR THE DOWN DIRECTION
MOVE *A13(TCURMPOS),A3,L
JSRP BOUNCE_ANIMATE
MMFM A12,A4,A5,A6,A11
JRUC BOUNCE_TO_NOW
BOUNCE_TO_2:
MMTM A12,A4,A5,A6,A11
CLR A4
MOVI 20H,A5
CLR A6
MOVE *A13(DDIR),A11,W
CALLA GET_TROG_CPNT ;GET TROG'S CENTER POINT
ADDI [5,0],A1 ;FUDGE FOR THE DOWN DIRECTION
JSRP BOUNCE_ANIMATE
CLR A4
MOVI 40H,A5
CLR A6
MOVE *A13(DDIR),A11,W
CALLA GET_TROG_CPNT ;GET TROG'S CENTER POINT
ADDI [5,0],A1 ;FUDGE FOR THE DOWN DIRECTION
JSRP BOUNCE_ANIMATE
MMFM A12,A4,A5,A6,A11
JRUC BOUNCE_TO_NOW
BOUNCE_TO_NOW:
PULLP A1
JSRP BOUNCE_ANIMATE
BOUNCE_TO_X:
RETP
**************************************************************************
* *
* BOUNCE_ANIMATE - PROCESS SUBROUTINE TO ANIMATE THE JUMP TO THE NEW *
* SPOT. *
* A1 = [Y,X] SPOT WE ARE TRYING TO HIT *
* A4 = BASE Y AND Z VELOCITIES OF TROG *
* A5 = # OF TICKS THIS BOUNCE WILL LAST *
* A6 = X VELOCITY OF TROG *
* A8 = TROG OBJECT *
* A11 = ANIMATE TO THIS DIRECTION! *
* A13 = PTR TO TROG PROCESS *
* *
**************************************************************************
BOUNCE_ANIMATE:
MMTM A12,A9,A10,A11
PUSHP A1
CALLA PSTOP
MOVE *A13(DDIR),A9,W
MOVE A11,*A13(DDIR),W ;STUFF THE NEW DIRECTION
SLL 7,A9
SLL 5,A11
ADD A11,A9
ADDI BOUNCE_TABLE,A9
MOVE *A9,A9,L ;GET THE ANIMATION WE WANT
MMTM A12,A4,A5,A6
CLR A1
MOVB A1,*A13(DDIZZYFLG) ;DIZZY FLAG CLEAR, HE CAN BE SCREWED
MOVK 1,A1
JSRP DINO_FRANIM ;ANIMATE THE SPRING
MMFM A12,A4,A5,A6
*SELECT SOUND BASED ON FLYING TIME
CMPI 80H,A5
JRHS BOUNCE_LONG
CMPI 40H,A5
JRHS BOUNCE_MEDIUM
SOUND1 SHORTSPRING_SND
JRUC BOUNCE_TO_BOING
BOUNCE_MEDIUM:
SOUND1 MEDSPRING_SND
JRUC BOUNCE_TO_BOING
BOUNCE_LONG:
SOUND1 LONGSPRING_SND
JRUC BOUNCE_TO_BOING
BOUNCE_TO_BOING:
MOVE A5,A11
SRL 1,A11
PUSHP A11
MMTM A12,A4,A6
MOVK 4,A1
MOVB A1,*A13(DDIZZYFLG) ;MARK TROG IN THE BOUNCE PHASE
MOVK 4,A1
JSRP DINO_FRANIM ;ANIMATE IN THE NEXT FRAME
MMFM A12,A4,A6
MOVE A6,*A8(OXVEL),L
MOVE A4,*A8(OZVEL),L
MOVE *A13(DVEL),A6,L
MOVE A6,A5
DIVU A11,A5
MOVE A5,A10 ;THIS IS THE DECEL
NEG A6
ADD A6,A4
MOVE A4,*A8(OYVEL),L
BOUNCE_ASCENT:
SUB A0,A11
JSRP BOUNCE_SLEEP
MOVK 4,A1
JSRP DINO_FRANIM
JRNC BOUNCE_ASCENT
MOVK 4,A1
JSRP DINO_FRANIM ;ANIMATE TO THE NEW GUY
MOVE A11,A11
JRGT BOUNCE_DESCENT ;BR = EVERYTHING NORMAL
*ASCENT WASTED TOO MUCH TIME, MAKE UP FOR IT IN THE DESCENT
PULLP A0
ADD A11,A0 ;TAKE OFF WHAT THE ASCENT ABUSED
PUSHP A0
JRUC BOUNCE_DESCENT_EARLY
BOUNCE_DESCENT:
MOVE A11,A0
JSRP BOUNCE_SLEEP ;SLEEP THE REMAINING ASCENT TICKS
BOUNCE_DESCENT_EARLY:
ADDK 32,A9 ;SKIP NULL FRAME
MOVK 4,A1
JSRP DINO_FRANIM ;ANIMATE TO THE DESCENT
PULLP A11
MOVE A11,A11 ;JUST IN CASE!
JRLE BOUNCE_LAND
MOVE A11,A0
JSRP BOUNCE_SLEEP
BOUNCE_LAND:
ADDK 32,A9 ;SKIP LAST NULL FRAME
CALLA PSTOP
MOVK 5,A1
MOVB A1,*A13(DDIZZYFLG) ;TROG IS CLEARED FOR LANDING
MOVK 1,A1
JSRP DINO_FRANIM
CLR A1
MOVB A1,*A13(DDIZZYFLG) ;TROG IS BACK ON THE GROUND
PULLP A1
CALLA FIND_CLOSE_MPNT ;FIND THE CLOSEST MOVE POINT
MOVE A3,*A13(TCURMPOS),L ;AND STORE IT AS HIS CURRENT MOVE POS
CALLA TROG_NEW_PNT
CALLR TROG_SHADOW_UPDATE
MMFM A12,A9,A10,A11
RETP
**************************************************************************
* *
* BOUNCE_SLEEP - SPECIAL SLEEP PROCESS FOR BOUNCING TROG, ADDS *
* Y DECELERATION FACTOR EVERY TICK. *
* A0 = TICKS TO SLEEP *
* A8 = TROGS OBJECT *
* A10 = DECEL FACTOR *
* A13 = PTR TO TROGS PROCESS *
* *
**************************************************************************
BOUNCE_SLEEP:
MMTM A12,A9,A11
MOVE A0,A11
JRZ BOUNCE_SLEEP_X
MOVK 5,A9 ;SHADOW UPDATE
BOUNCE_SLEEP_LP:
SLEEP 1
ADDRM A10,*A8(OYVEL),L
DEC A9
JRHI BOUNCE_SLEEP_NOSUP
CALLR TROG_SHADOW_UPDATE
MOVK 5,A9
BOUNCE_SLEEP_NOSUP:
DSJS A11,BOUNCE_SLEEP_LP
BOUNCE_SLEEP_X:
MMFM A12,A9,A11
RETP
**************************************************************************
* *
* TROG_SHADOW_PROC - PROCESS TO CREATE A SHADOW FOR TROG, IF HE ALREADY *
* HAS ONE, THEN IT WILL UPDATE IT. *
* A8 = PTR TO THE TROG OBJECT *
* *
**************************************************************************
TROG_SHADOW_PROC:
CALLR TROG_SHADOW_UPDATE
DIE
**************************************************************************
* *
* TROG_SHADOW_UPDATE - ROUTINE TO UPDATE TROG'S SHADOW. IF HE DOES NOT *
* CURRENTLY HAVE ONE, IT WILL CREATE ONE. *
* A8 = PTR TO TROG *
* RETURNS: *
* Z = UNSUCCESSFUL UPDATE(I.E. SHADOW NO CREATED) *
* NZ = UPDATE WAS SUCCEFUL *
* NOTE: TRASHES A14 *
* *
**************************************************************************
TROG_SHADOW_UPDATE:
MMTM SP,A0,A1,A4,A8,A10
MOVE *A8(OSHAD),A10,L
JRNZ TROG_SP_UPDATE
MOVI TROG_SHAD_INIT,A14
CALLA GPALOBJSTF
JRZ TROG_SHADOW_UPDATE_X
MOVE A0,A10
CALLR TROG_POSITION_SHADOW
MOVE A10,*A8(OSHAD),L
MOVE A10,A0
CALLA INSOBJ
JRUC TROG_SP_VEL_ONLY
*A8 = PTR TO TROG OBJECT
*A10 = PTR TO SHADOW OBJECT
TROG_SP_UPDATE:
CALLR TROG_POSITION_SHADOW
TROG_SP_VEL_ONLY
MOVE *A8(OZVEL),*A10(OYVEL),L
MOVE *A8(OZVEL),*A10(OZVEL),L
MOVE *A8(OXVEL),*A10(OXVEL),L ;COPY JUST THE VELOCITIES
CALLR TROG_DFRMGRND ;GET TROG'S DISTANCE FROM THE GROUND
JRN TROG_SP_1
CMPI 20,A1
JRHS TROG_SP_3
CMPI 10,A1
JRHS TROG_SP_2
TROG_SP_1:
MOVI TRBOSHAD1,A1
JRUC TROG_SP_IUP
TROG_SP_2:
MOVI TRBOSHAD2,A1
JRUC TROG_SP_IUP
TROG_SP_3:
MOVI TRBOSHAD3,A1
JRUC TROG_SP_IUP
TROG_SP_IUP:
MOVE A10,A8
MOVE *A8(OFLAGS),A4,W
CALLA ANI
MOVE A8,A8
TROG_SHADOW_UPDATE_X:
MMFM SP,A0,A1,A4,A8,A10
RETS
**************************************************************************
* *
* TROG_POSITION_SHADOW - ROUTINE TO POSITION THE SHADOW OBJECT BENEATH *
* TROG, AND ON THE GROUND. *
* A8 = PTR TO TROG OBJECT *
* A10 = PTR TO SHADOW OBJECT *
* *
**************************************************************************
TROG_POSITION_SHADOW:
MMTM SP,A0,A1,A3
CALLA GET_TROG_CPNT
ADDK 2,A1 ;SHADOW X FUDGE
MOVX A1,A3
MOVE *A8(OZPOS),A1,W
SUBK 4,A1 ;SHADOW Y FUDGE
SLL 16,A1
MOVY A1,A3
MOVE A8,A0
MOVE A10,A8
CALLA OBJ_TO_PNT
MOVE A0,A8
MOVE A10,A0
CALLA SET_TZPOS
MMFM SP,A0,A1,A3
RETS
**************************************************************************
* *
* TROG_SHADOW_DEL - PROCESS TO DELETE TROG'S SHADOW *
* A8 = PTR TO TROG *
* *
**************************************************************************
TROG_SHADOW_DEL:
MOVE A8,A0
CALLA DELSHAD
DIE
**************************************************************************
* *
* TROG_DFRMGRND - RETURNS THE DISTANCE FROM THE BOTTOM OF A TROG OBJECT *
* TO THE "GROUND." ROUTINE GETS ITS Y SIZE FROM *
* THE TROGINIT IMAGE *
* A8 = TROG OBJECT BLOCK *
* RETURN(S) *
* A1 = DISTANCE FROM GROUND (16 BITS) *
* STATUS BITS SET ACCORDING TO THE SIGN OF A1 *
* NOTE: MAX ACCEPTABLE Y = +32K, MIN ACCEPTABLE Y = -32K *
* TRASHES A14 *
* *
**************************************************************************
TROG_DFRMGRND
PUSH A2
MOVE *A8(OYPOS),A1,W
MOVE @TROGINIT+INITIMG,A14,L
MOVE *A14(ISIZEY),A2,W
ADD A1,A2 ;A2 = BOTTOM Y
MOVE *A8(OZPOS),A1,W
SUB A2,A1
PULL A2
RETS
**************************************************************************
* *
* GET_OFFSCRN_YX - ROUTINE TO GET A RANDOM COORDINATE SOMEWHERE OFF *
* OF THE SCREEN. *
* RETURNS: *
* A1 = [Y,X] POINT *
* *
**************************************************************************
GET_OFFSCRN_YX:
PUSH A0
CALLA RANDOM
JRN GOFFAB
*GETTING LEFT OR RIGHT SIDE COORD.
MOVI 256,A0
CALLA RANDU ;GET A RANDOM Y COORDINATE
MOVE A0,A1
SLL 16,A1 ;STORE IT FOR RETURN
CALLA RANDOM ;PICK LEFT OR RIGHT SIDE
JRN GOFF_RIGHT ;BR = RIGHT
MOVI -30,A0
MOVX A0,A1
JRUC GOFF_X
GOFF_RIGHT:
MOVI 420,A0
MOVX A0,A1
JRUC GOFF_X
*GETTING ABOVE OR BELOW SCREEN COORD.
GOFFAB:
MOVI 400,A0
CALLA RANDU
MOVE A0,A1
CALLA RANDOM
JRN GOFF_BELOW
MOVI SKYTOPOF-20,A0
SLL 16,A0
MOVY A0,A1
JRUC GOFF_X
GOFF_BELOW:
MOVI 280,A0
SLL 16,A0
MOVY A0,A1
GOFF_X:
PULL A0
RETS
**************************************************************************
* *
* BLOCK_CHECK - ROUTINE TO SEE IF THE GIVEN MOVE IS BLOCKED. *
* I.E. THERE EXISTS A ROCK, TREE, TRANSPORTER, ETC. *
* A0 = PTR TO MOVE *
* Z = MOVE IS BLOCKED *
* NZ = NUTTIN' SITTIN' HERE *
* *
**************************************************************************
BLOCK_CHECK
MMTM SP,A0,A1
MOVE *A0(MOVECPTR),A0,L ;MUST BE A CENTER POINT
JRN CB_OK ;BR = NOPE
MOVB *A0(CMOVEEGG),A1 ;IS THERE SOMETHING HERE?
INC A1
JRZ CB_OK ;BR = NOTHING EXISTS
DEC A1
CMPI HAUSID,A1
JREQ CB_X
CMPI ROCKID,A1
JREQ CB_X
CMPI TGENID,A1
JREQ CB_X
CB_OK
CLR A0
INC A0 ;CLEAR Z BIT TO MARK SPOT O.K.
CB_X
MMFM SP,A0,A1
RETS
**************************************************************************
* *
* SPRINGDINO - TROG, WITH THE SPRING SHOES, HIT THE DINOSAUR *
* A0 = PTR TO SPRING SHOE DUDE *
* A8 = PTR TO DINOSAUR *
* *
**************************************************************************
SPRINGDINO:
PUSH A1
CALLA IS_DINO_DEAD_A8
JRZ SPRINGDINO_X
MMTM SP,A0,A4,A5,A6,A7,A8,A9,A10,A14
MOVE *A0(OPLINK),A4,L ;GET TROG'S CONTROL PROCESS
JRZ SPRINGDINO_BAIL ;BR = NO CONTROLLING PROCESS, BAIL
MOVE *A8(OPLINK),A5,L ;GET THE DINOS CONTROL PROCESS
JRZ SPRINGDINO_BAIL ;BR = NO CONTROL
MOVE *A0(OID),A1,W
CMPI DEADTROGOID,A1 ;IS TROG DEAD
JREQ SPRINGDINO_BAIL ;BR = YES, NOTHING
MOVE @FREEZE_TIME,A1,W
JRZ SD_NORMAL
CALLR IN_VICINITY ;FIND OUT IF THESE TWO GUYS ARE CLOSE
JRNZ SPRINGDINO_BAIL
JRUC SD_DADVANTAGE
SD_NORMAL
MOVB *A4(DDIZZYFLG),A1
CMPI 4,A1 ;IS TROG IN FLIGHT?
**** JREQ SPRINGDINO_BAIL ;BR = YES
JREQ SD_PUNCH_CK ;BR = YES, JUST CHECK THE PUNCH
CALLR IN_VICINITY ;FIND OUT IF THESE TWO GUYS ARE CLOSE
JRNZ SPRINGDINO_BAIL
CMPI 5,A1 ;IS HE LANDING?
JREQ SPRINGDINO_CKS ;BR = YES
SD_DADVANTAGE
MOVB *A5(DTREXFLG),A1 ;MONSTER MAN?
JRNZ SPRINGDINO_CHOMP ;BR = YES, CHOMP-O-MATIC
SD_PUNCH_CK
SWAP A0,A8
MOVE A5,A1
MOVI GET_DINO_MPNT,A6
MOVI GET_TROG_MPNT,A7
CALLA DINO_PUNCHED
JRNE SPRINGDINO_BAIL
CALLA PSTOP ;STOP FIRST
MOVE A4,A0 ;GET THE PROCESS LINK
MOVK 1,A1
MOVB A1,*A0(DDIZZYFLG) ;TROG IS GETTING PUNCHING, HA HA
CLR A1
MOVB A1,*A0(DPUNCHFLG) ;AND IS NOT PUNCHING
ORIM M_NOCOLL,*A8(OFLAGS),W ;TURN COLLISIONS OFF AT THIS POINT
MOVI TROG_OOF,A7
MOVE A5,A9 ;PASS THE PTR TO THE DINOSAUR PROCESS
JRUC SPRINGDINO_XFER
*MAKE THE MONSTER FEAST ON THE SPRING DUDE
SPRINGDINO_CHOMP
MOVE A0,A6
MOVE A5,A0 ;LET'S XFER TO THE DINO MUNCHER
CALLA PSTOP ;FIRST WE MUST STOP
MOVK 1,A1
MOVB A1,*A0(DPUNCHFLG) ;YES, HE IS MUNCHING
CLR A1
MOVB A1,*A0(DDIZZYFLG) ;NO, HE IS NOT GETTING PUNCHED
MOVE A1,*A0(PCOMM),W ;CLEAR THE COMMUNICATION LINE
MOVI DINO_MUNCH,A7
ORIM M_NOCOLL,*A8(OFLAGS),W ;MAKE SURE DINO COLLISIONS ARE OFF
MOVE A4,A9 ;PASS TROG'S PROCESS
MOVE A6,A11 ;SEND THE TROGGY OBJECT
CALLA XFERPROC_ID ;WAKE UP IN A DAZE
MOVE A6,A8 ;TRANSFER TO TROG GETTING EATEN
CALLA PSTOP ;STOP FIRST
MOVE A4,A0 ;GET THE PROCESS LINK
MOVI DEADTROGOID,A1 ;HE'S FREAKIN' DEAD
MOVE A1,*A8(OID),W
MOVK 1,A1
MOVB A1,*A0(DDIZZYFLG) ;TROG IS GETTING MUNCHED, HA HA
CLR A1
MOVB A1,*A0(DPUNCHFLG) ;AND IS NOT PUNCHING
ORIM M_NOCOLL,*A8(OFLAGS),W ;MAKE SURE TROG COLLISIONS ARE OFF
MOVI SPRINGTROG_EATEN,A7
MOVE A5,A9 ;PASS THE PTR TO THE DINOSAUR PROCESS
JRUC SPRINGDINO_XFER
SPRINGDINO_CKS
MOVB *A5(DTREXFLG),A1
JRNE SPRINGDINO_BAIL
MOVE @FREEZE_TIME,A7,W
JRNZ SPRINGDINO_BAIL
MOVB *A5(DDIZZYFLG),A1 ;IS THIS DINOSAUR DIZZY?
JRNE SPRINGDINO_BAIL ;BR = YES
MOVB *A5(DINVIN),A1 ;IS THIS DINO INVINCIBLE?
JRNZ SPRINGDINO_BAIL ;BR = YES
*
*SQUISH THE DINO HERE
*
MOVE A0,A6 ;STORE THE TROG SPRING OBJECT HERE
MOVE A5,A0 ;LET'S XFER TO THE SQUASH PROCESS
CALLA PSTOP ;FIRST WE MUST STOP
MOVE A6,A9 ;PASS THE TROG OBJECT
MOVE A4,A10 ;PASS THE TROG PROCESS TO THE SQUASH
MOVE *A8(OID),A1,W
SLL 28,A1
SRL 28,A1
ORI DEADDINOOID,A1 ;MAKE THE DINO A DEAD MAN
MOVE A1,*A8(OID),W
ORIM M_NOCOLL,*A8(OFLAGS),W ;MAKE SURE DINO COLLISIONS ARE OFF
MOVI DINO_SPROING,A7
CALLA XFERPROC_ID ;SQUASH THE DINO
MOVE A6,A8
MOVE A4,A0
MOVI SPRING_SPROING,A7
JRUC SPRINGDINO_XFER ;AND FINISH
SPRINGDINO_XFER:
CALLA XFERPROC_ID ;TRANSFER CONTROL OF THE PROCESS
SPRINGDINO_BAIL: ;BAIL-OUT POINT FOR ERRORS
MMFM SP,A0,A4,A5,A6,A7,A8,A9,A10,A14
SPRINGDINO_X:
PULL A1
JAUC DUMCRETS
**************************************************************************
* *
* SPRINGTROG_EATEN - TROG IS TO BE EATEN *
* A8 = PTR TO TROG *
* A9 = PTR TO DINO PROCESS *
* A13 = PTR TO TROG PROCESS *
* *
**************************************************************************
SPRINGTROG_EATEN:
MOVE *A13(PROCID),A0,W
PUSHP A0
MOVI CLUBOUTU,A0
JSRP FRANIMATE_DIR
PULLP A0
MOVE A0,*A13(PROCID),W
**** JRUC TROGSSDEATH_EATEN
CALLA DELETE_TROG
DIE
**************************************************************************
* *
* SPRING_SPROING - SPERM ON THE DINOSAURS GRAVE *
* A8 = PTR TO TROG *
* A13 = PTR TO TROG SPRING SHOE PROCESS *
* NOTE: ULTIMATELY TRANSFERS TO TROGBXFER *
* *
**************************************************************************
SPRING_SPROING:
CLR A0
MOVB A0,*A13(DVNFLAG)
CALLR VEL_NORMAL
CALLA GET_TROG_CPNT ;GET TROG'S CENTER POINT
ADDI [5,0],A1 ;FUDGE FOR THE DOWN DIRECTION
CALLA FIND_CLOSE_MPNT ;FIND THE CLOSEST MOVE POINT
MOVE A3,*A13(TCURMPOS),L ;AND STORE IT AS HIS CURRENT MOVE POS
MOVE A3,A1
CALLA TROG_NEW_PNT ;CENTER HIM UP
MOVK 3,A9
MOVE A1,A10
SPSPR_LP:
CLR A4
MOVK 12,A5
CLR A6
MOVE *A13(DDIR),A11,W
JSRP BOUNCE_ANIMATE
SOUND1 DINOSQUASH_SND
MOVE A10,A1
DSJ A9,SPSPR_LP
JRUC TROGBXFER
**************************************************************************
* *
* SPRINGTAR - TROG BOUNCED INTO A TAR PIT *
* A0 = PTR TO TROG *
* A8 = PTR TO TAR PIT *
* *
**************************************************************************
SPRINGTAR:
MMTM SP,A1,A7
MOVI SPRINGTAR_SINK,A7 ;USE TAR ROUTINE
JRUC SPRING_HIT
**************************************************************************
* *
* SPRINGFIRE - TROG BOUNCED INTO A FIRE *
* A0 = PTR TO TROG *
* A8 = PTR TO FIRE *
* *
**************************************************************************
SPRINGFIRE:
MMTM SP,A1,A7
MOVI SPRINGFIRE_BURN,A7 ;USE FIRE ROUTINE
JRUC SPRING_HIT
**************************************************************************
* *
* SPRINGPIT - TROG BOUNCED INTO A SMALL PIT *
* A0 = PTR TO TROG *
* A8 = PTR TO PIT *
* *
**************************************************************************
SPRINGPIT:
MMTM SP,A1,A7
MOVI SPRINGPIT_FALL,A7 ;USE PIT ROUTINE
JRUC SPRING_HIT
SPRING_HIT:
MOVE *A0(OID),A1,W
CMPI DEADTROGOID,A1 ;IS HE DYING?
JREQ SPRINGHITX ;BR = HE'S ALREADY DEAD, NO MORE
CALLA CK_TROG_CENT
JRNC SPRINGHITX ;BR = HE'S NOT STUCK
MOVE *A0(OPLINK),A1,L
JRZ SPRINGHITX ;BR = NO CONTROLLING PROCESS
MMTM SP,A0,A8,A9
MOVB *A1(DDIZZYFLG),A9
JRZ SPRINGHIT_SCK
CMPI 5,A9
JRNE SPRINGHIT_BAIL
*A7 = ROUTINE TO JUMP TO
SPRINGHIT_SCK:
MOVE A8,A9 ;PASS TAR OBJECT FOR YUKS
MOVE A0,A8 ;PASS THE TROG
MOVE A1,A0 ;FOR XFERPROC
**** MOVI INDPID,A1
CALLA XFERPROC_ID ;TRANSFER CONTROL OF THE PROCESS
MOVI DEADTROGOID,A1 ;MARK HIM AS DEAD, RIGHT THIS INSTANT
MOVE A1,*A8(OID),W
SPRINGHIT_BAIL:
MMFM SP,A0,A8,A9
SPRINGHITX:
MMFM SP,A1,A7
MOVE A0,A0 ;WITH Z BIT SET TO CONTINUE COLLISION
RETS
**************************************************************************
* *
* SPRINGFLOWER - TROG ON SPRINGS COLLIDES WITH FLOWER *
* A0 = PTR TO TROG *
* A8 = PTR TO FLOWER *
* *
**************************************************************************
****SPRINGFLOWER:
**** MMTM SP,A0,A1,A7,A8,A10,A11
**** MOVI TROGSPEEDPID,A1
**** MOVI TROG_SPEEDUP,A7
**** JRUC SPRING_PLANT_HIT
**************************************************************************
* *
* SPRINGSHROOM - TROG ON SPRINGS COLLIDES WITH MUSHROOM *
* A0 = PTR TO TROG *
* A8 = PTR TO FLOWER *
* *
**************************************************************************
****SPRINGSHROOM:
**** MMTM SP,A0,A1,A7,A8,A10,A11
**** MOVI TROGSPEEDPID,A1
**** MOVI TROG_SLOWDOWN,A7
**** JRUC SPRING_PLANT_HIT
*
*ENTRY FOR PLANT HITS
* A7 = PROCESS TO CREATE IF COLLISION IS VALID
* A0 = TROG
* A8 = PLANT
*NOTE: A14 IS TRASHED
****SPRING_PLANT_HIT:
**** CALLA CK_TROG_CENT ;IS HE CLOSE ENOUGH TO GRAB IT?
**** JRNC SPRING_PH_FL ;BR = NO
**** MOVE *A0(OPLINK),A10,L ;GET TROGS CONTROL
**** JRZ SPRING_PH_FL ;THE TROG IS OUT OF CONTROL
****
**** MOVB *A10(DDIZZYFLG),A11
**** JRZ SPRING_PLANT_SCK
**** CMPI 5,A11
**** JRNE SPRING_PH_FL
****
****SPRING_PLANT_SCK:
**** MOVE A8,A11
**** MOVE A0,A8
**** CALLA GETPRC ;AND CREATE THE PROCESS
**** MOVE A11,A8
**** CALLA FREE_MOVE_EGG ;WIPE OUT THIS THING
**** CALLA OBJPROC_KILL
**** MOVI ENEMIES,A1
**** CALLA DELETE_OBJ_SUPP
**** SETZ ;END THIS SCAN PLEASE
**** JRUC SPRING_PH_X
****SPRING_PH_FL:
**** CLRZ
****SPRING_PH_X:
**** MMFM SP,A0,A1,A7,A8,A10,A11
**** RETS
**************************************************************************
* *
* SPRINGTAR_SINK - PROCESS TO MAKE TROG WITH SPRINGS SINK INTO TAR *
* AND DIE. *
* A8 = PTR TO TROG OBJECT *
* A9 = PTR TO TAR OBJECT *
* *A13(DATABLE),L = PTR TO ANIMATION TABLE *
* *A13(DDIR),W = CURRENT DIRECTION *
* *A13(DVEL),L = CURRENT VELOCITY *
* NOTE: THIS PROCESS ULTIMATELY TRANSFERS TO TROGSSDEATH_OLD_RET *
* *
**************************************************************************
SPRINGTAR_SINK:
MOVE A9,A0
MOVE A9,A4 ;STORE HERE DURING LOAD
MOVI ENEMIES,A1
CALLA ISSUPP
JRZ TARNSUPP ;BR = TAR NOT ON SUPP LIST
CALLA DELSUPP ;TAKE IT OFF FOR COLLISIONS
JRUC TARNPUSH
TARNSUPP:
CLR A9
TARNPUSH:
PUSHP A9
MOVE A8,A5
MOVE A4,A8
MOVE *A8(OPLINK),A0,L
JRZ TAR_POS
CALLA GETA9
MOVK 1,A11
MOVI INDPID,A1
MOVI ANIMATOR,A7
CALLA XFERPROC ;TRANSFER TO A LESSER GOD
TAR_POS:
CALLA GETANIXY ;LET'S GET A RETURN POINT
MOVE A5,A8
SRL 16,A3
MOVY A2,A3
MOVE A3,*A13(DINITPOS),L
CALLA FINDMOVE
JRNC TROGTAR_SKC ;BR = SKIP THE CENTERING, NOT A MOVE
MOVE A1,A0
MOVE *A0(MOVEPOS),A1,L
SUBI [5,0],A1
CALLA TROG_NEW_PNT
TROGTAR_SKC:
CALLA SCORE_TO_PLAYER
MOVI TARU,A0
JSRP FRANIMATE_DIR ;ANIMATE THIS GUY
MOVI 06000H,A2
JSRP CLIP_INTO
MOVE A8,A5
PULLP A8 ;GET TAR POINTER
MOVE A8,A8 ;IS THERE SOMETHING THERE?
JRZ SINK_NOTAR ;BR = ALREADY TAKEN CARE OF
PUSHP A5
CALLA OBJPROC_KILL ;KILL THE TAR CONTROL
MOVI TAROUT,A9
MOVK 1,A1
JSRP FRANIM ;FADE THE TAR FROM EXISTANCE
PULLP A5
CALLA FREE_MOVE_EGG
CALLA DELETE_OBJ
SINK_NOTAR:
MOVE A5,A8
**** JRUC TROGSSDEATH_OLD_RET
CALLA DELETE_TROG
DIE
**************************************************************************
* *
* SPRINGFIRE_BURN - PROCESS TO MAKE TROG BURN IN THE FIRE. *
* A8 = PTR TO TROG OBJECT *
* A9 = PTR TO FIRE OBJECT *
* A13 = PTR TO TROG SPRING PROCESS *
* NOTE: THIS PROCESS ULTIMATELY TRANSFERS TO TROGSSDEATH_OLD_RET *
* *
**************************************************************************
SPRINGFIRE_BURN:
MOVE A9,A0
MOVE A9,A4 ;STORE HERE DURING LOAD
MOVI ENEMIES,A1
CALLA ISSUPP
JRZ FIRENSUPP ;BR = FIRE NOT ON SUPP LIST
CALLA DELSUPP ;TAKE IT OFF FOR COLLISIONS
JRUC FIRENPUSH
FIRENSUPP:
CLR A9
FIRENPUSH:
PUSHP A9
FIRENPROC:
MOVE A8,A5
MOVE A4,A8
MOVE *A8(OPLINK),A0,L
JRZ FIRE_POS
MOVI FIRE_UP_MONKEY_SHIT,A9
MOVK 1,A11
MOVI INDPID,A1
MOVI ANIMATOR,A7
CALLA XFERPROC ;TRANSFER TO A LESSER GOD
FIRE_POS:
CALLA GETANIXY ;LET'S GET A RETURN POINT
MOVE A5,A8
SRL 16,A3
MOVY A2,A3
MOVE A3,*A13(DINITPOS),L
CALLA FINDMOVE
JRNC TROGFIRE_SKC ;BR = SKIP THE CENTERING, NOT A MOVE
MOVE A1,A0
CALLA TROG_CENTER ;CENTER TROG ON THIS POINT
TROGFIRE_SKC:
MOVE *A8(OYPOS),A5,W
SUBK 12,A5
MOVE A5,*A8(OYPOS),W
CALLA SCORE_TO_PLAYER
MOVE A8,A0
CALLA DELSHAD ;DELETE DUDE'S SHADOW
MOVI FIREU,A0
JSRP FRANIMATE_DIR
MOVE *A8(OYPOS),A5,W
ADDK 12,A5
MOVE A5,*A8(OYPOS),W
MOVE A8,A5
PULLP A8 ;GET FIRE POINTER
MOVE A8,A8 ;IS THERE SOMETHING THERE?
JRZ BURN_NOFIRE ;BR = ALREADY TAKEN CARE OF
CALLA FREE_MOVE_EGG
CALLA OBJPROC_KILL ;KILL THE CONTROL
CALLA DELETE_OBJ
BURN_NOFIRE:
MOVE A5,A8
MOVK 1,A1
JSRP FRANIM ;ANIMATE THE BURN
MOVK 3,A4
MOVB A4,*A13(DDIZZYFLG) ;RETURN BURNT
**** JRUC TROGSSDEATH_OLD_RET
CALLA DELETE_TROG
DIE
**************************************************************************
* *
* SPRINGPIT_FALL - PROCESS TO MAKE TROG WITH SPRING SHOE FALL SMALL. *
* A8 = PTR TO TROG OBJECT *
* A9 = PTR TO PIT OBJECT *
* A13 = PTR TO TROG PROCESS *
* NOTE: THIS PROCESS ULTIMATELY TRANSFERS TO TROGSSDEATH_OLD_RET. *
* *
**************************************************************************
SPRINGPIT_FALL:
MOVE *A9(OID),A0,W
CMPI TUNNELOID,A0
JREQ SPRINGTUNNEL_FALL
PUSHP A9
MOVE A8,A5
MOVE A9,A8
CALLA OBJPROC_KILL ;KILL THE CONTROL
CALLA GETANIXY ;LET'S GET A RETURN POINT
SRL 16,A3
MOVY A2,A3
MOVE A3,*A13(DINITPOS),L
MOVE A5,A8
CALLA GETCPNT ;GET THE CENTER POINT OF THE TROG
MOVE A1,A2
MOVI 38H,A4
CALLA SLINEVEL
MMTM A12,A1,A2
CALLA PSTOP
CALLA SCORE_TO_PLAYER
MOVE A8,A0
CALLA DELSHAD ;DELETE DUDE'S SHADOW
MOVI OGPITU,A0
JSRP ANIMATE_DIR
MMFM A12,A1,A2
MOVE A1,*A8(OXVEL),L
MOVE A2,*A8(OYVEL),L
MOVK 1,A1
JSRP FRANIM ;ANIMATE THE REST OF THE FALL
CALLA PSTOP
CALLA OBJ_OFF ;TURN TROG OFF
MOVE A8,A5
PULLP A8 ;GET PIT POINTER
MOVE A8,A0
MOVI ENEMIES,A1
CALLA ISSUPP
JRZ FALL_NOPIT ;BR = PIT IS GONE, DON'T WORRY HERE
CALLA DELSUPP ;TAKE IT OFF FOR COLLISIONS
PITNSUPP:
CALLA FREE_MOVE_EGG
PUSHP A5
MOVI PIT_CLOSE,A9
MOVK 1,A1
JSRP FRANIM
PULLP A5
CALLA DELETE_OBJ
FALL_NOPIT:
MOVE A5,A8
**** JRUC TROGSSDEATH_OLD_RET
CALLA DELETE_TROG
DIE
*
*SIMPLE TROG FALL W/NO PIT CLOSE
*A8 = TROG
*A9 = PIT
*A13 = TROG PROCESS
SPRINGTUNNEL_FALL:
MOVE A8,A5
MOVE A9,A8
CALLA GETANIXY ;LET'S GET A RETURN POINT
SRL 16,A3
MOVY A2,A3
MOVE A3,*A13(DINITPOS),L
MOVE A5,A8
CALLA GETCPNT ;GET THE CENTER POINT OF TROG
MOVE A1,A2
MOVI 38H,A4
CALLA SLINEVEL
MMTM A12,A1,A2
CALLA PSTOP
CALLA SCORE_TO_PLAYER
MOVE A8,A0
CALLA DELSHAD ;DELETE DUDE'S SHADOW
MOVI OGPITU,A0
JSRP ANIMATE_DIR
MMFM A12,A1,A2
MOVE A1,*A8(OXVEL),L
MOVE A2,*A8(OYVEL),L
MOVK 1,A1
JSRP FRANIM ;ANIMATE THE REST OF THE FALL
CALLA PSTOP
CALLA OBJ_OFF ;TURN TROG OFF
**** JRUC TROGSSDEATH_OLD_RET
CALLA DELETE_TROG
DIE
**************************************************************************
* *
* SMACK_SCREEN - MAKE TROG SMACK THE SCREEN BECAUSE HE HAD ON HIS SPRING *
* SHOES WHILE JUMPING ON A SPEED PLANT *
* A8 = PTR TO TROG *
* A13 = PTR TO TROG SPRING SHOE PROCESS *
* NOTE: ULTIMATELY TRANSFERS TO TROGSSDEATH_OLD_RET *
* *
**************************************************************************
SMACK_SCREEN:
INCM @SMACK_CNT,W
CALLA PSTOP
MOVI BOUNCE_DD,A9
MOVK 1,A0
MOVB A0,*A13(DVNFLAG) ;NO NEW VELOCITIES
MOVB A0,*A13(TTRAPPED) ;FLAG THE INITIAL SMACK
MOVI [4,0],A1
CALLA DINO_VEL ;HYPER VELOCITY FOR THE SMACK
SOUND1 TROGSMACK1_SND
MOVK 1,A1
JSRP DINO_FRANIM
MOVK 1,A1
JSRP DINO_FRANIM
MOVK 1,A1
JSRP DINO_FRANIM
MOVE *A13(PROCID),A0,W
ORI 2000H,A0
MOVE A0,*A13(PROCID),W
MOVE A8,A0
CALLA DELSHAD ;GET THAT NASTY SPOT OUT
PAUSEON
**** CLR A0
**** MOVE A0,@GAMERASE,W ;SHUT DOWN AUTO ERASE FOR THIS
**** CALLA AUTOEOFF
**** MOVE @BAKLST,A4,L
**** PUSHP A4
**** MOVE A0,@BAKLST,L ;NULL BACKGROUND FOR NOW
MOVI 3000H,A0
MOVE A0,*A8(OZPOS),W ;HIGH ENOUGH Z?
CLR A9
CLR A10
CLR A11
MOVE A9,*A13(PTEMP1),L
MOVE A9,*A13(PTEMP2),L
MOVE A9,*A13(PTEMP3),L
MOVE A9,*A13(PTEMP4),L
CALLA GETANIXY_PACKED ;GET ALIGNMENT POINT
MOVE A3,A2
MOVI [195,200],A3
CMP A2,A3
JRNZ SMACKGETVEL
CLR A1
CLR A2
JRUC SMACK_TOIT
SMACKGETVEL
MOVK 16,A4
CALLA SLINEVEL
SMACK_TOIT:
*MAKE ALL OBJECTS FIRST, MAKING SURE WE GET THEM ALL
CALLR SMACKMAKE
JRZ SMACKESC1
MOVE A0,A9
CALLR SMACKMAKE
JRZ SMACKESC2
MOVE A0,A10
CALLA GETOBJ
JRZ SMACKESC3
MOVE A0,A11
CALLR SMACKMAKE
JRZ SMACKESC4
MOVE A0,*A13(PTEMP1),L
CALLR SMACKMAKE
JRZ SMACKESC5
MOVE A0,*A13(PTEMP2),L
CALLR SMACKMAKE
JRZ SMACKESC6
MOVE A0,*A13(PTEMP3),L
CALLA GETOBJ
JRZ SMACKESC7
MOVE A0,*A13(PTEMP4),L
DISPOFF
MOVE A1,*A8(OXVEL),L
MOVE A2,*A8(OYVEL),L
MOVI SMACK_ATAB,A6
CALLR SMACK_ANI
MOVE A9,A0
CALLA INSOBJ
MOVE A10,A0
CALLA INSOBJ
MOVE *A13(PTEMP1),A0,L
CALLA INSOBJ
MOVE *A13(PTEMP2),A0,L
CALLA INSOBJ
MOVE *A13(PTEMP3),A0,L
CALLA INSOBJ
DISPON
PUSHP A6
SLEEPR A7
SMACK_ANI_LP:
PULLP A6
CALLR SMACK_ANI
JRZ SMACK_LAST
PUSHP A6
SLOOPR A7,SMACK_ANI_LP
SMACK_LAST:
DISPOFF
CALLR SMACKSTOP
DISPON
MOVE A11,A0
CALLA COPY_OBJ
MOVE *A13(PTEMP4),A0,L
CALLA COPY_OBJ
SOUND1 TROGSMACK2_SND
CREATE INDPIDW,EARTHSHAKER
CALLR SMACK_ANI
MOVE A11,A0
CALLA INSOBJ
MOVE *A13(PTEMP4),A0,L
CALLA INSOBJ
SLEEPR A7
CLR A1
MOVI [6,0],A2
DISPOFF
CALLR SMACKVEL
DISPON
SLEEP 33
*END DELETE ALL AND END SCREEN SMACK
MOVE *A13(PTEMP4),A0,L
CALLA DELOBJ
MOVE *A13(PTEMP3),A0,L
CALLA DELOBJ
MOVE *A13(PTEMP2),A0,L
CALLA DELOBJ
MOVE *A13(PTEMP1),A0,L
CALLA DELOBJ
MOVE A11,A0
CALLA DELOBJ
MOVE A10,A0
CALLA DELOBJ
MOVE A9,A0
CALLA DELOBJ
JRUC SMACKESC1
SMACKESC7:
MOVE *A13(PTEMP3),A0,L
CALLA FREEOBJ
SMACKESC6:
MOVE *A13(PTEMP2),A0,L
CALLA FREEOBJ
SMACKESC5:
MOVE *A13(PTEMP1),A0,L
CALLA FREEOBJ
SMACKESC4:
MOVE A11,A0
CALLA FREEOBJ
SMACKESC3:
MOVE A10,A0
CALLA FREEOBJ
SMACKESC2:
MOVE A9,A0
CALLA FREEOBJ
SMACKESC1:
PAUSEOFF
MOVE *A13(PROCID),A0,W
ANDNI 2000H,A0
MOVE A0,*A13(PROCID),W
CLR A0
MOVB A0,*A13(DVNFLAG) ;NO NEW VELOCITIES
CALLR VEL_NORMAL
**** JRUC TROGSSDEATH_OLD_RET
CALLA DELETE_TROG
DIE
**************************************************************************
* *
* SMACKMAKE - SUBROUTINE TO MAKE A SMACK OBJ *
* A1 = X VEL *
* A2 = Y VEL *
* A4 = OFLAGS *
* RETURNS *
* Z = NO DICE *
* NZ = MADE AND A0 = OBJECT *
* *
**************************************************************************
SMACKMAKE:
CALLA GETOBJ
JRZ SMACKESC1
CALLA COPY_OBJ
MOVE A1,*A0(OXVEL),L
MOVE A2,*A0(OYVEL),L
MOVE A0,A0
RETS
*
*STOP ALL SMACK OBJECTS
SMACKSTOP:
CLR A1
CLR A2
*
*A1 = XVEL
*A2 = YVEL
SMACKVEL:
MOVE A1,*A8(OXVEL),L
MOVE A2,*A8(OYVEL),L
MOVE A1,*A9(OXVEL),L
MOVE A2,*A9(OYVEL),L
MOVE A1,*A10(OXVEL),L
MOVE A2,*A10(OYVEL),L
MOVE A1,*A11(OXVEL),L
MOVE A2,*A11(OYVEL),L
MOVE *A13(PTEMP1),A0,L
MOVE A1,*A0(OXVEL),L
MOVE A2,*A0(OYVEL),L
MOVE *A13(PTEMP2),A0,L
MOVE A1,*A0(OXVEL),L
MOVE A2,*A0(OYVEL),L
MOVE *A13(PTEMP3),A0,L
MOVE A1,*A0(OXVEL),L
MOVE A2,*A0(OYVEL),L
MOVE *A13(PTEMP4),A0,L
MOVE A1,*A0(OXVEL),L
MOVE A2,*A0(OYVEL),L
RETS
**************************************************************************
* *
* SMACK_ANI - ANIMATE A SMACK FRAME *
* A6 = PTR TO ANIMATION *
* A8 - A10 = FIRST FOUR FRAMES *
* *A13(PTEMP1),L - *A13(PTEMP4),L = FLIPPED FOUR FRAMES *
* RETURNS: *
* Z = END OF ANIMATION HIT *
* NZ = NEW ANIMATION STUFFED (A7 = SLEEP) *
* *
**************************************************************************
SMACK_ANI:
MMTM SP,A1,A4,A8
MOVE *A6+,A1,L
JRZ SMACK_ANI_X
MOVI DMAWNZ|M_NOPAUSE,A4
CALLA ANI
MOVE *A6+,A1,L
JRZ SMACK_ANI2
MOVE A9,A8
CALLA ANI
MOVE *A6+,A1,L
JRZ SMACK_ANI2
MOVE A10,A8
CALLA ANI
MOVE *A6+,A1,L
JRZ SMACK_ANI2
MOVE A11,A8
CALLA ANI
SMACK_ANI2:
MOVI DMAWNZ|M_FLIPH|M_NOPAUSE,A4
MOVE *A6+,A1,L
JRZ SMACK_ANI_SLP
MOVE *A13(PTEMP1),A8,L
CALLA ANI
MOVE *A6+,A1,L
JRZ SMACK_ANI_SLP
MOVE *A13(PTEMP2),A8,L
CALLA ANI
MOVE *A6+,A1,L
JRZ SMACK_ANI_SLP
MOVE *A13(PTEMP3),A8,L
CALLA ANI
MOVE *A6+,A1,L
JRZ SMACK_ANI_SLP
MOVE *A13(PTEMP4),A8,L
CALLA ANI
SMACK_ANI_SLP:
MOVE *A6+,A7,W
SMACK_ANI_X:
MMFM SP,A1,A4,A8
RETS
SMACK_ATAB:
.LONG SPRINGSM11a,SPRINGSM11b,SPRINGSM11c,0
.LONG SPRINGSM11a,SPRINGSM11b,SPRINGSM11c,0
.WORD 4
.LONG SPRINGSM7a,SPRINGSM7b,SPRINGSM7c,0
.LONG SPRINGSM7a,SPRINGSM7b,SPRINGSM7c,0
.WORD 4
.LONG SPRINGSM5a,SPRINGSM5b,SPRINGSM5c,0
.LONG SPRINGSM5a,SPRINGSM5b,SPRINGSM5c,0
.WORD 4
.LONG SPRINGSMA3a,SPRINGSMA3b,SPRINGSMA3c,0
.LONG SPRINGSMA3a,SPRINGSMA3b,SPRINGSMA3c,0
.WORD 4
.LONG 0
.LONG SPRINGSMA1a,SPRINGSMA1b,SPRINGSMA1c,SPRINGSMA1d
.LONG SPRINGSMA1a,SPRINGSMA1b,SPRINGSMA1c,SPRINGSMA1d
.WORD 40
**** CLR A4
**** MOVI 60H,A5
**** CLR A6
**** MOVE *A13(DDIR),A11,W
****
**** MOVK 1,A0
**** MOVB A0,*A13(DVNFLAG) ;NO NEW VELOCITIES
****
**** MOVI [4,0],A1
**** CALLA DINO_VEL ;HYPER VELOCITY FOR THE SMACK
****
**** CALLA GET_TROG_CPNT ;GET TROG'S CENTER POINT
**** ADDI [5,0],A1 ;FUDGE FOR THE DOWN DIRECTION
****
**** SOUND1 TROGFIRE_SND
**** JSRP BOUNCE_ANIMATE
****
**** CLR A0
**** MOVB A0,*A13(DVNFLAG) ;NO NEW VELOCITIES
****
**** CALLR VEL_NORMAL
****
**** JRUC TROGBXFER
**************************************************************************
* *
* VEL_NORMAL - SET THE DUDES VELOCITY TO THE NORMAL IMMEADIATELY *
* A13 = PTR TO DUDES PROCESS *
* *
**************************************************************************
VEL_NORMAL:
PUSH A1
MOVB *A13(DVNFLAG),A1 ;ARE WE ALLOWED TO DO THIS
JRNE VNX ;BR = NO
MOVE *A13(DSPEED),A1,W ;KEEP THE INITIAL SPEED
ZEXT A1
SLL 4,A1
CALLA DINO_VEL ;RESTORE NORMAL VELOCITY
VNX:
PULL A1
RETS
**************************************************************************
* *
* IN_VICINITY - DETERMINE IF TROG AND A DINO ARE IN THE "SAME" PLACE. *
* A0 = PTR TO TROG *
* A8 = PTR TO DINOSAUR *
* RETURNS: *
* Z = THEY ARE CLOSE TO THE SAME SPOT *
* NZ = NOT IN THE SAME VICINITY *
* *
**************************************************************************
IN_VICINITY:
MMTM SP,A0,A1,A2,A3
MOVE A8,A2
MOVE A0,A8
CALLA GET_TROG_CPNT
MOVE A2,A8
MOVE A1,A2
CALLA GET_DINO_CPNT
CALLA FIND_CLOSE_CPNT
MOVE A2,A1
MOVE A3,A2
CALLA FIND_CLOSE_CPNT
CMP A2,A3
MMFM SP,A0,A1,A2,A3
RETS
**************************************************************************
* *
* FIND_CPNT - FIND A RANDOM CENTER POINT. *
* RETURNS: *
* Z = NO CENTER POINTS WERE FOUND, A1 = DESTROYED *
* NZ = A1 = PTR TO OPEN SPACE *
* *
**************************************************************************
FIND_CPNT:
MMTM SP,A0,A3,A4,A6,A7
MOVE @CMOVECNT,A7,W ;GET THE NUMBER OF CENTER MOVES
JRZ FCPX ;THERE ARE NO CENTER MOVES, whAT?
MOVE A7,A0
CALLA RANDU ;FIND A CENTER POINT
DEC A0 ;MAKE IT ZERO BASED
CALLA GETCMOVE
MOVE A0,A1 ;SET OR CLR Z
FCPX:
MMFM SP,A0,A3,A4,A6,A7
RETS
.DATA
**************************************************************************
* *
* DATA TABLES FOR SPRING SHOE MAN *
* *
**************************************************************************
TROGSSCOLL:
.WORD DINOOID,0FFF0H
.LONG SPRINGDINO
.WORD TAROID,0FFF0H
.LONG SPRINGTAR
.WORD FIREOID,0FFF0H
.LONG SPRINGFIRE
.WORD PITOID,0FFF0H
.LONG SPRINGPIT
.WORD TUNNELOID,0FFFFH
.LONG SPRINGPIT
**** .WORD FLOWEROID,0FFFFH
**** .LONG SPRINGFLOWER
**** .WORD SHROOMOID,0FFFFH
**** .LONG SPRINGSHROOM
.WORD 0
.LONG DUMCRETS ;DO NOTHING
****TROGSSINIT
**** .LONG 0,0
**** .WORD 0,0
**** .LONG TRSTP0,[5,10],TROGSSCOLL
**** .WORD DMAWNZ|M_PIXSCAN,TROGSPRGOID
TROG_SHAD_INIT:
.LONG 0,0
.WORD 0,0
.LONG TRBOSHAD1,0,DUMCOLL
.WORD DMAWNZ,JUNKOID
TROGSPRG_ATAB:
*WOBBLING IN PLACE FRAMES
.LONG DUMSCRIPT,0,-10000H,DUMSCRIPT,0,10000H
.LONG DUMSCRIPT,-10000H,0,DUMSCRIPT,10000H,0
*TURNING SEQUENCES
.LONG TROGSSUL,0,0,TROGSSRU,0,0
.LONG TROGSSDR,0,0,TROGSSLD,0,0
.LONG TROGSSLU,0,0,TROGSSDR,0,0
.LONG TROGSSRD,0,0,TROGSSUR,0,0
*NORMAL DEATH
.LONG SPRINGDIE_U,0,0,SPRINGDIE_D,0,0
.LONG SPRINGDIE_LR,0,0,SPRINGDIE_LR,0,0
*ABOUT FACE SEQUENCES
.LONG TROGSSABOUT_UL,0,0,TROGSSABOUT_UR,0,0
.LONG TROGSSABOUT_DL,0,0,TROGSSABOUT_DR,0,0
.LONG TROGSSABOUT_LU,0,0,TROGSSABOUT_LD,0,0
.LONG TROGSSABOUT_RU,0,0,TROGSSABOUT_RD,0,0
*STANDING IN PLACE SEQUENCES
.LONG TROGSSSTAND_U,0,0,TROGSSSTAND_D,0,0
.LONG TROGSSSTAND_L,0,0,TROGSSSTAND_R,0,0
*CHEER SEQUENCES
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*MAD SEQUENCES
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*MAD W/SOUND
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*QUESTION SEQUENCES
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*BUMP SEQUENCES
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*PUNCH SEQUENCES
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*OOF SEQUENCES
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*PIT DEATH SEQUENCES
.LONG SPRINGPIT_U,0,0,SPRINGPIT_D,0,0
.LONG SPRINGPIT_LR,0,0,SPRINGPIT_LR,0,0
*TROG INTRO
.LONG DUMSCRIPT,0,0
*WONDERMENT SEQUENCES
.LONG DUMSCRIPT,0,0
*TAR DEATH SEQUENCES
.LONG TROGSSTAR_U,0,0,TROGSSTAR_D,0,0
.LONG TROGSSTAR_LR,0,0,TROGSSTAR_LR,0,0
*FIRE DEATH SEQUENCES
.LONG TROGFIRE_U,0,0,TROGFIRE_D,0,0
.LONG TROGFIRE_LR,0,0,TROGFIRE_LR,0,0
*HEAD SHAKE SEQUENCES
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*TURN INTO A SKELETON SEQUENCES
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*KNOCK SEQUENCES
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*LITTLE PIT DEATH SEQUENCES
.LONG SPRINGPIT_U,0,0,SPRINGPIT_D,0,0
.LONG SPRINGPIT_LR,0,0,SPRINGPIT_LR,0,0
*CLUB OUT SEQUENCES
.LONG TROGFOOD_U,0,0,TROGFOOD_D,0,0
.LONG TROGFOOD_LR,0,0,TROGFOOD_LR,0,0
*SQUISH SEQUENCES
.LONG TROGSQUISH_UU,0,0,TROGSQUISH_UD,0,0
.LONG TROGSQUISH_UL,0,0,TROGSQUISH_UR,0,0
.LONG TROGSQUISH_DU,0,0,TROGSQUISH_DD,0,0
.LONG TROGSQUISH_DL,0,0,TROGSQUISH_DR,0,0
.LONG TROGSQUISH_LRU,0,0,TROGSQUISH_LRD,0,0
.LONG TROGSQUISH_LRL,0,0,TROGSQUISH_LRR,0,0
.LONG TROGSQUISH_LRU,0,0,TROGSQUISH_LRD,0,0
.LONG TROGSQUISH_LRR,0,0,TROGSQUISH_LRL,0,0
*SQUASHED BY THE SPRING SHOE
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*LOOK BOTH WAYS BEFORE CROSSING
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*EATING FRAMES
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*DIGGING INTO GROUND FRAMES
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*DEATH BY FALLING INTO THE LAVA
.LONG SPRINGLAVA_U,0,0,SPRINGLAVA_D,0,0
.LONG SPRINGLAVA_LR,0,0,SPRINGLAVA_LR,0,0
*TROG FALLS INTO WATER AFTER BEING PUNCHED FROM BEHIND
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
TROGWOBBLE_D:
.LONG TRBOSTP0F1
.WORD 6
.LONG TRBOSTP0F2
.WORD 6
.LONG TRBOSTP0F1
.WORD 6
.LONG TRBOSTP0F3
.WORD 6
.LONG TRBOSTP0F1
.WORD 6
.LONG TRBOSTP0F4
.WORD 6|SCRIPT
.LONG TROGWOBBLE_D
TROGWOBBLE_U:
.LONG TRBOP8F2
.WORD 1|SCRIPT
.LONG TROGWOBBLE_U
TROGWOBBLE_L:
.LONG TRBOP4F2
.WORD 1|FLIPBITS|SCRIPT,M_FLIPH
.LONG TROGWOBBLE_L
TROGWOBBLE_R:
.LONG TRBOP4F2
.WORD 1|FLIPBITS|SCRIPT,0
.LONG TROGWOBBLE_R
**************************************************************************
* *
* STANDING IN PLACE *
* *
**************************************************************************
TROGSSSTAND_U:
.LONG TRBOP8F2
.WORD 1
.LONG 0
TROGSSSTAND_D:
.LONG TRBOP0F2
.WORD 1
.LONG 0
TROGSSSTAND_L:
.LONG TRBOP4F2
.WORD 1|FLIPBITS,M_FLIPH
.LONG 0
TROGSSSTAND_R:
.LONG TRBOP4F2
.WORD 1|FLIPBITS,0
.LONG 0
**************************************************************************
* *
* TABLE OF BOUNCING DIRECTION ANIMATIONS *
* *
**************************************************************************
BOUNCE_TABLE:
.LONG BOUNCE_UU,BOUNCE_UD,BOUNCE_UL,BOUNCE_UR
.LONG BOUNCE_DU,BOUNCE_DD,BOUNCE_DL,BOUNCE_DR
.LONG BOUNCE_LU,BOUNCE_LD,BOUNCE_LL,BOUNCE_LR
.LONG BOUNCE_RU,BOUNCE_RD,BOUNCE_RL,BOUNCE_RR
**************************************************************************
* *
* TROG BOUNCING FRAMES *
* THESE ARE FIVE PART ANIMATIONS: *
* PART 1 - TAKE OFF SPROING *
* PART 2 - ASCENT (VELOCITY TAKES EFFECT HERE) *
* PART 3 - APOGEE (1 FRAME ONLY) *
* PART 4 - DESCENT (1 FRAME ONLY) *
* PART 5 - LANDING (VELOCITY ZERO'D HERE) *
* *
**************************************************************************
*FROM UP TO UP
BOUNCE_UU:
.LONG TRBOP8F1
.WORD 10|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F2
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
.LONG TRBOP8F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F4
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F4a
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
BOUNCE_UP:
.LONG 0
.LONG TRBOP8F4
.WORD 1|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD 0
.LONG 0
.LONG TRBOP8F5
.WORD 1|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
.LONG TRBOP8F2
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F1
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
*FROM UP TO DOWN
BOUNCE_UD:
.LONG TRBOP8F1
.WORD 10|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F2
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
.LONG TRBOP8F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP7
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP6
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP5
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP3
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP2
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP1
.WORD 2|SPAWNP|SCRIPT,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG BOUNCE_DOWN
*FROM UP TO LEFT
BOUNCE_UL:
.LONG TRBOP8F1
.WORD 10|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F2
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
.LONG TRBOP8F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP7
.WORD 2|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD M_FLIPH
.LONG TRBOP6
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP5
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4
.WORD 2|SPAWNP|SCRIPT,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG BOUNCE_LEFT
*FROM UP TO RIGHT
BOUNCE_UR:
.LONG TRBOP8F1
.WORD 10|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F2
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
.LONG TRBOP8F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP7
.WORD 2|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD 0
.LONG TRBOP6
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP5
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4
.WORD 2|SPAWNP|SCRIPT,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG BOUNCE_RIGHT
*FROM DOWN TO DOWN
BOUNCE_DD:
.LONG TRBOP0F1
.WORD 10|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP0F2
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
.LONG TRBOP0F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP0F4
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP04a
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
BOUNCE_DOWN:
.LONG 0
.LONG TRBOP0F4
.WORD 1|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD 0
.LONG 0
.LONG TRBOP0F5
.WORD 1|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
.LONG TRBOP0F2
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP0F1
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
*FROM DOWN TO UP
BOUNCE_DU:
.LONG TRBOP0F1
.WORD 10|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP0F2
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
.LONG TRBOP0F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP1
.WORD 2|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD M_FLIPH
.LONG TRBOP2
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP3
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP5
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP6
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP7
.WORD 2|SPAWNP|SCRIPT,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG BOUNCE_UP
*FROM DOWN TO LEFT
BOUNCE_DL:
.LONG TRBOP0F1
.WORD 10|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP0F2
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
.LONG TRBOP0F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP1
.WORD 2|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD M_FLIPH
.LONG TRBOP2
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP3
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4
.WORD 2|SPAWNP|SCRIPT,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG BOUNCE_LEFT
*FROM DOWN TO RIGHT
BOUNCE_DR:
.LONG TRBOP0F1
.WORD 10|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP0F2
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
.LONG TRBOP0F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP1
.WORD 2|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD 0
.LONG TRBOP2
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP3
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4
.WORD 2|SPAWNP|SCRIPT,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG BOUNCE_LEFT
*FROM LEFT TO LEFT
BOUNCE_LL:
.LONG TRBOP4F1
.WORD 10|SPAWNP|FLIPBITS|SCRIPT,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD M_FLIPH
.LONG BOUNCE_LLRR
BOUNCE_RR:
.LONG TRBOP4F1
.WORD 10|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD 0
BOUNCE_LLRR
.LONG TRBOP4F2
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
.LONG TRBOP4F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4a
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
BOUNCE_LEFT:
BOUNCE_RIGHT:
.LONG 0
.LONG TRBOP4F4
.WORD 1|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
.LONG TRBOP4F5
.WORD 1|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
.LONG TRBOP4F2
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F1
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
*FROM LEFT TO UP
BOUNCE_LU:
*FROM RIGHT TO UP
BOUNCE_RU
.LONG TRBOP4F1
.WORD 10|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F2
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
.LONG TRBOP4F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP5
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP6
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP7
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F4
.WORD 2|SPAWNP|FLIPBITS|SCRIPT,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD 0
.LONG BOUNCE_UP
*FROM LEFT TO DOWN
BOUNCE_LD:
*FROM RIGHT TO DOWN
BOUNCE_RD:
.LONG TRBOP4F1
.WORD 10|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F2
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
.LONG TRBOP4F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP3
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP2
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP1
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP0F4
.WORD 2|SPAWNP|FLIPBITS|SCRIPT,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD 0
.LONG BOUNCE_DOWN
*FROM LEFT TO RIGHT
BOUNCE_LR:
.LONG TRBOP4F1
.WORD 10|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F2
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
.LONG TRBOP4F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP5
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP6
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP7
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F4
.WORD 2|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD 0
.LONG TRBOP7
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP6
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP5
.WORD 2|SPAWNP|SCRIPT,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG BOUNCE_RIGHT
*FROM RIGHT TO LEFT
BOUNCE_RL:
.LONG TRBOP4F1
.WORD 10|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F2
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
.LONG TRBOP4F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP3
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP2
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP1
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F4
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP1
.WORD 2|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD M_FLIPH
.LONG TRBOP2
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP3
.WORD 2|SPAWNP|SCRIPT,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG BOUNCE_LEFT
**************************************************************************
* *
* TROG TURNING ON HIS SHOES *
* *
**************************************************************************
*UP FROM LEFT
TROGSSUL:
*UP FROM RIGHT
TROGSSUR:
.LONG TRBOP4F1
.WORD 1
.LONG 0
.LONG TRBOP4F1
.WORD 6
.LONG TRBOP4F2
.WORD 6|SPAWNP|MAKESOUND,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG SHORTSPRING_SND
.LONG TRBOP4F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4a
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP5
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP6
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP7
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F4
.WORD 4|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD 0
.LONG TRBOP8F5
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F2
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
*RIGHT FROM UP
TROGSSRU:
.LONG TRBOP8F1
.WORD 1
.LONG 0
.LONG TRBOP8F1
.WORD 6
.LONG TRBOP8F2
.WORD 6|SPAWNP|MAKESOUND,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG SHORTSPRING_SND
.LONG TRBOP8F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F4
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F4a
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP7
.WORD 4|SPAWNP|FLIPBITS|SCRIPT,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD 0
.LONG TROGSSRULU
*LEFT FROM UP
TROGSSLU:
.LONG TRBOP8F1
.WORD 1
.LONG 0
.LONG TRBOP8F1
.WORD 6
.LONG TRBOP8F2
.WORD 6|SPAWNP|MAKESOUND,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG SHORTSPRING_SND
.LONG TRBOP8F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F4
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F4a
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP7
.WORD 4|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD M_FLIPH
TROGSSRULU:
.LONG TRBOP6
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP5
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F5
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F2
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
*DOWN FROM RIGHT
TROGSSDR:
*DOWN FROM LEFT
TROGSSDL:
.LONG TRBOP4F1
.WORD 1
.LONG 0
.LONG TRBOP4F1
.WORD 6
.LONG TRBOP4F2
.WORD 6|SPAWNP|MAKESOUND,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG SHORTSPRING_SND
.LONG TRBOP4F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4a
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP3
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP2
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP1
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP0F4
.WORD 4|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD 0
.LONG TRBOP0F5
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP0F2
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
*RIGHT FROM DOWN
TROGSSRD:
.LONG TRBOP0F1
.WORD 1
.LONG 0
.LONG TRBOP0F1
.WORD 6
.LONG TRBOP0F2
.WORD 6|SPAWNP|MAKESOUND,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG SHORTSPRING_SND
.LONG TRBOP0F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP0F4
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP04a
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP1
.WORD 4|SPAWNP|FLIPBITS|SCRIPT,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD 0
.LONG TROGSSRDLD
*LEFT FROM DOWN
TROGSSLD:
.LONG TRBOP0F1
.WORD 1
.LONG 0
.LONG TRBOP0F1
.WORD 6
.LONG TRBOP0F2
.WORD 6|SPAWNP|MAKESOUND,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG SHORTSPRING_SND
.LONG TRBOP0F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP0F4
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP04a
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP1
.WORD 4|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD M_FLIPH
TROGSSRDLD:
.LONG TRBOP2
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP3
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F5
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F2
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
*ABOUT FACE FROM UP VIA RIGHT
TROGSSABOUT_UR:
.LONG TRBOP8F1
.WORD 1
.LONG 0
.LONG TRBOP8F1
.WORD 6
.LONG TRBOP8F2
.WORD 6|SPAWNP|MAKESOUND,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG SHORTSPRING_SND
.LONG TRBOP8F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F4
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F4a
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP7
.WORD 4|SPAWNP|FLIPBITS|SCRIPT,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD 0
.LONG TROGSSABOUT_U
*ABOUT FACE FROM UP VIA LEFT
TROGSSABOUT_UL:
.LONG TRBOP8F1
.WORD 1
.LONG 0
.LONG TRBOP8F1
.WORD 6
.LONG TRBOP8F2
.WORD 6|SPAWNP|MAKESOUND,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG SHORTSPRING_SND
.LONG TRBOP8F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F4
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F4a
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP7
.WORD 4|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD M_FLIPH
TROGSSABOUT_U:
.LONG TRBOP6
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP5
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP3
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP2
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP1
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP0F2
.WORD 4|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD 0
.LONG 0
*ABOUT FACE FROM DOWN VIA RIGHT
TROGSSABOUT_DR:
.LONG TRBOP0F1
.WORD 1
.LONG 0
.LONG TRBOP0F1
.WORD 6
.LONG TRBOP0F2
.WORD 6|SPAWNP|MAKESOUND,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG SHORTSPRING_SND
.LONG TRBOP0F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP0F4
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP04a
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP1
.WORD 4|SPAWNP|FLIPBITS|SCRIPT,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD 0
.LONG TROGSSABOUT_D
*ABOUT FACE FROM DOWN VIA LEFT
TROGSSABOUT_DL:
.LONG TRBOP0F1
.WORD 1
.LONG 0
.LONG TRBOP0F1
.WORD 6
.LONG TRBOP0F2
.WORD 6|SPAWNP|MAKESOUND,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG SHORTSPRING_SND
.LONG TRBOP0F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP0F4
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP04a
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP1
.WORD 4|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD M_FLIPH
TROGSSABOUT_D:
.LONG TRBOP2
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP3
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP5
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP6
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP7
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F2
.WORD 4|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD 0
.LONG 0
*ABOUT FACE FROM RIGHT VIA UP
TROGSSABOUT_RU:
.LONG TRBOP4F1
.WORD 1
.LONG 0
.LONG TRBOP4F1
.WORD 6
.LONG TRBOP4F2
.WORD 6|SPAWNP|MAKESOUND,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG SHORTSPRING_SND
.LONG TRBOP4F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4a
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP5
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP6
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP7
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F4
.WORD 4|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD 0
.LONG TRBOP7
.WORD 4|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD M_FLIPH
.LONG TRBOP6
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP5
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F5
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F2
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
*ABOUT FACE FROM LEFT VIA UP
TROGSSABOUT_LU:
.LONG TRBOP4F1
.WORD 1
.LONG 0
.LONG TRBOP4F1
.WORD 6
.LONG TRBOP4F2
.WORD 6|SPAWNP|MAKESOUND,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG SHORTSPRING_SND
.LONG TRBOP4F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4a
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP5
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP6
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP7
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP8F4
.WORD 4|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD 0
.LONG TRBOP7
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP6
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP5
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F5
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F2
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
*ABOUTFACE FROM RIGHT VIA DOWN
TROGSSABOUT_RD:
.LONG TRBOP4F1
.WORD 1
.LONG 0
.LONG TRBOP4F1
.WORD 6
.LONG TRBOP4F2
.WORD 6|SPAWNP|MAKESOUND,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG SHORTSPRING_SND
.LONG TRBOP4F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4a
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP3
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP2
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP1
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP0F4
.WORD 4|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD 0
.LONG TRBOP1
.WORD 4|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD M_FLIPH
.LONG TRBOP2
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP3
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F5
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F2
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
*ABOUTFACE FROM LEFT VIA DOWN
TROGSSABOUT_LD:
.LONG TRBOP4F1
.WORD 1
.LONG 0
.LONG TRBOP4F1
.WORD 6
.LONG TRBOP4F2
.WORD 6|SPAWNP|MAKESOUND,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG SHORTSPRING_SND
.LONG TRBOP4F3
.WORD 6|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F4a
.WORD 2|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP3
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP2
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP1
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP0F4
.WORD 4|SPAWNP|FLIPBITS,0,0,INDPID
.LONG TROG_SHADOW_PROC
.WORD 0
.LONG TRBOP1
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP2
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP3
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F5
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG TRBOP4F2
.WORD 4|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_PROC
.LONG 0
**************************************************************************
* *
* DEATH BY TAR *
* *
**************************************************************************
*IN TAR FACING UP
TROGSSTAR_U:
.LONG TRBOP8F1
.WORD 12|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_DEL
.LONG TRBOP8F2
.WORD 6|MAKESOUND
.LONG SHORTSPRING_SND
.LONG TRBOP8F3
.WORD 6
.LONG TRBOP8F2
.WORD 6
.LONG TRBOP8F1
.WORD 6
.LONG TRBOP8F2
.WORD 25
.LONG TRBOP8F1
.WORD 12
.LONG TRBOP8F2
.WORD 6|MAKESOUND
.LONG SHORTSPRING_SND
.LONG TRBOP8F3
.WORD 6
.LONG TRBOP8F2
.WORD 6
.LONG TRBOP8F1
.WORD 6
.LONG TRBOP8F2
.WORD 20
.LONG TRBOP8F1
.WORD 12
.LONG TRBOP8F2
.WORD 6|MAKESOUND
.LONG SHORTSPRING_SND
.LONG TRBOP8F3
.WORD 6
.LONG TRBOP8F2
.WORD 6
.LONG TRBOP8F1
.WORD 6
.LONG TRBOP8F2
.WORD 6|MAKESOUND
.LONG SHORTSPRING_SND
.LONG TRBOP8F3
.WORD 6
.LONG TRBOP8F2
.WORD 15|MAKESOUND
.LONG TROGUHOH_SND
.LONG TRBOP8F2
.WORD 10
.LONG 0
TROGSSTAR_U_LP:
.LONG TRBOP8F1
.WORD 3
.LONG TRBOP8F2
.WORD 3|MAKESOUND
.LONG SHORTSPRING_SND
.LONG TRBOP8F3
.WORD 3
.LONG TRBOP8F2
.WORD 3|SCRIPT
.LONG TROGSSTAR_U_LP
*
*IN TAR FACING DOWN
TROGSSTAR_D:
.LONG TRBOP0F1
.WORD 12|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_DEL
.LONG TRBOP0F2
.WORD 6|MAKESOUND
.LONG SHORTSPRING_SND
.LONG TRBOP0F3
.WORD 6
.LONG TRBOP0F2
.WORD 6
.LONG TRBOP0F1
.WORD 6
.LONG TRBOP0F2
.WORD 25
.LONG TRBOP0F1
.WORD 12
.LONG TRBOP0F2
.WORD 6|MAKESOUND
.LONG SHORTSPRING_SND
.LONG TRBOP0F3
.WORD 6
.LONG TRBOP0F2
.WORD 6
.LONG TRBOP0F1
.WORD 6
.LONG TRBOP0F2
.WORD 20
.LONG TRBOP0F1
.WORD 12
.LONG TRBOP0F2
.WORD 6|MAKESOUND
.LONG SHORTSPRING_SND
.LONG TRBOP0F3
.WORD 6
.LONG TRBOP0F2
.WORD 6
.LONG TRBOP0F1
.WORD 6
.LONG TRBOP0F2
.WORD 6|MAKESOUND
.LONG SHORTSPRING_SND
.LONG TRBOP0F3
.WORD 6
.LONG TRBOP0F2
.WORD 15|MAKESOUND
.LONG TROGUHOH_SND
.LONG TRBOP0F2
.WORD 10
.LONG 0
TROGSSTAR_D_LP:
.LONG TRBOP0F1
.WORD 3
.LONG TRBOP0F2
.WORD 3|MAKESOUND
.LONG SHORTSPRING_SND
.LONG TRBOP0F3
.WORD 3
.LONG TRBOP0F2
.WORD 3|SCRIPT
.LONG TROGSSTAR_D_LP
*
*IN TAR LEFT/RIGHT
TROGSSTAR_LR:
.LONG TRBOP4F1
.WORD 12|SPAWNP,0,0,INDPID
.LONG TROG_SHADOW_DEL
.LONG TRBOP4F2
.WORD 6|MAKESOUND
.LONG SHORTSPRING_SND
.LONG TRBOP4F3
.WORD 6
.LONG TRBOP4F2
.WORD 6
.LONG TRBOP4F1
.WORD 6
.LONG TRBOP4F2
.WORD 25
.LONG TRBOP4F1
.WORD 12
.LONG TRBOP4F2
.WORD 6|MAKESOUND
.LONG SHORTSPRING_SND
.LONG TRBOP4F3
.WORD 6
.LONG TRBOP4F2
.WORD 6
.LONG TRBOP4F1
.WORD 6
.LONG TRBOP4F2
.WORD 20
.LONG TRBOP4F1
.WORD 12
.LONG TRBOP4F2
.WORD 6|MAKESOUND
.LONG SHORTSPRING_SND
.LONG TRBOP4F3
.WORD 6
.LONG TRBOP4F2
.WORD 6
.LONG TRBOP4F1
.WORD 6
.LONG TRBOP4F2
.WORD 6|MAKESOUND
.LONG SHORTSPRING_SND
.LONG TRBOP4F3
.WORD 6
.LONG TRBOP4F2
.WORD 15|MAKESOUND
.LONG TROGUHOH_SND
.LONG TRBOP4F2
.WORD 10
.LONG 0
TROGSSTAR_LR_LP:
.LONG TRBOP4F1
.WORD 3
.LONG TRBOP4F2
.WORD 3|MAKESOUND
.LONG SHORTSPRING_SND
.LONG TRBOP4F3
.WORD 3
.LONG TRBOP4F2
.WORD 3|SCRIPT
.LONG TROGSSTAR_LR_LP
**************************************************************************
* *
* SOUNDS USED THIS MODULE *
* *
**************************************************************************
SHORTSPRING_SND:
.WORD >F302,>10,>80A0,0 ;SHORT SPRING SOUND
MEDSPRING_SND:
.WORD >F302,>10,>80A1,0 ;MEDIUM SPRING SOUND
LONGSPRING_SND:
.WORD >F302,>10,>80A2,0 ;LONG SPRING SOUND
TROGSMACK1_SND:
.WORD >F050,>5D,>8046,0 ;TROG SPEED PLANT ON SPRINGS
TROGSMACK2_SND:
.WORD >F050,>10,>801E,0 ;TROG HIT SCREEN