trog/TROGTREX.ASM

1417 lines
28 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 'TROGTREX.ASM'
.TITLE " <<< T R O G -- TYRANNOSAURUS REX ROUTINES >>>"
.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 "SYSINC.ASM" ;Zunit system equates
.INCLUDE "GSPINC.ASM" ;SYSTEM EQUATES
.INCLUDE "IMGTBL.GLO"
.INCLUDE "TROGEQU.ASM"
.INCLUDE "TROGAEQU.ASM"
.INCLUDE "TROGTREX.TBL" ;TREX IMAGE TABLE
.DEF DINOXFORM, TREX_KILL, REXGROWL_SND, DINO_MUNCH, GROWL_TAB
.DEF CK_TREX, TREX_STOMP, DTREX_LEAP
.DEF REXUP_SND, REXTUNE_SND, REXSCORE_SND
.REF GWENTUNN_U, GWENTUNN_D, GWENTUNN_LR, BCDADD, LOAD_DIR
.REF START_INVINCIBILITY, DINOWXFER, MAINTUNE, THRASHFLG
.REF WAVE_MUSIC, HOUSEB_SND, FRANIMATE_DIR, SCOREOBJ
.REF TARBYE_SND, DINOSQUASH_SND, EARTHSHAKER, SCORE2XOBJ
.REF WOWDEL, KILL_INVINCIBILITY, POWERUP_DURATION, BONUS_WAVE
.REF TROG_CNT, ANIMATE_BUTTON, BMX5_SND
.BSS PAC_SCORE,32,1 ;CURRENT EAT VALUE FOR A TREX
.BSS EAT_COUNT,16,1 ;NUMBER OF TROGS EATEN THIS TREX
.BSS WOW_COUNT,16,1 ;NUMBER OF TROGS TO EAT TO GET A WOW
.TEXT
PACSTART .EQU 10000H ;STARTING PAC-MAN SCORE FOR TROG EATS
PACTOP .EQU 80000H ;TOP PAC-MAN SCORE FOR TROG EATS
MINWOWCNT .EQU 7 ;MINIMUM NUMBER OF TROGS TO GET A WOW
**************************************************************************
* *
* DINOXFORM - TRANSFORM THE DINOSAUR INTO THE TYRANNOSAURUS IF HE *
* NEEDS TO BE. *
* A8 = PTR TO DINOSAUR THAT NEEDS TO BE TRANSFORMED. *
* *
**************************************************************************
DINOXFORM:
MOVE *A8(OPLINK),A11,L
JRZ DINOXF_DIE
MOVE @THRASHFLG,A0,W
JRNZ DX_SKIPUP
SOUND1 REXUP_SND
DX_SKIPUP
CALLA PSTOP ;STOP THAT CRAZY DINO
SWAP A11,A13
CALLA KILL_INVINCIBILITY ;KILL THE CURRENT INVINC.
**** MOVI TREXTIME+140,A10 ;MUST ALLOW FOR INITIAL ANI
MOVE @POWERUP_DURATION,A10,W ;REX FOR THIS AMOUNT OF TIME
ADDI 180,A10 ;ALLOW SOME GRACE-T FOR RETURN
CALLA START_INVINCIBILITY
SWAP A11,A13
MOVE A11,A0
MOVI DINOHOLD,A7
CALLA XFERPROC_ID
MOVE *A11(DATABLE),*A13(DATABLE),L
MOVI TREXATAB,A10
MOVE A10,*A11(DATABLE),L
MOVK 1,A0
MOVB A0,*A11(DTREXFLG)
MOVI PACSTART,A0
MOVE A0,@PAC_SCORE,L
CLR A0
MOVE A0,@EAT_COUNT,W
MOVE @TROG_CNT,A0,W
CMPI MINWOWCNT,A0
JRHS DX_SET_WOW
MOVI MINWOWCNT,A0
DX_SET_WOW
MOVE A0,@WOW_COUNT,W
MOVE *A11(DSPEED),A0,W
ADDI 400H,A0 ;PUMP UP THE VOLUME
MOVE A0,*A11(DSPEED2),W
MOVE *A11(DDIR),A0,W
MOVE A0,A1
MOVE A0,A2
SLL 6,A2
SLL 5,A1
ADD A1,A2
ADD A10,A2
MOVE *A2+,A9,L
MOVE A9,*A11(DWALKFRM),L
SLL 5,A0
ADDI METAU_TAB,A0
MOVE *A0,A9,L
MOVK 1,A1
JSRP FRANIM
MOVE A11,A0
MOVI DINOWXFER,A7
CALLA XFERPROC_ID
MOVE *A11(DDIR),A0,W
CMPI DOWN,A0 ;ARE WE FACING DOWN
JREQ TREX_REDUCE_TIME ;MUST SLEEP LESS, LONGER ANI
SLEEP 14
TREX_REDUCE_TIME
SLEEP 38
MOVE @THRASHFLG,A0,W
JRNZ DX_SKIPTUNE
SOUND1 REXTUNE_SND
INCM @THRASHFLG,W
DX_SKIPTUNE
**** SLEEP TREXTIME-112
MOVE @POWERUP_DURATION,A0,W
SUBI 112,A0
SLEEPR A0
DINOXBACK_WAIT:
MOVE @BONUS_WAVE,A0,W
CMPI BONUSW_1,A0
JREQ DX_ALWAYS
MOVB *A11(DPUNCHFLG),A0
JREQ DINOXBACK
DX_ALWAYS
SLOOP 3,DINOXBACK_WAIT
DINOXBACK:
MOVE *A11(DPLAYER),A2,L
JRZ DINOX_NP
MOVE *A2(PPID),A1,W
ORI PFLASHPID,A1
MOVI TREX_FLASH,A7
CALLA GETPRC
DINOX_NP
SOUND1 REXDOWN_SND
SLEEP 60
DTREXRESET_WAIT:
MOVB *A11(DPUNCHFLG),A0 ;DID HE START EATING?
JREQ DTREXRESET ;BR = NO
SLOOP 3,DTREXRESET_WAIT ;WAIT FOR HIM TO FINISH
DTREXRESET
CALLR RESTART_MAIN
CALLR TREX_KILL_FLASH
MOVE A11,A0
MOVI DINOHOLD,A7
CALLA XFERPROC_ID
CLR A0
MOVB A0,*A11(DTREXFLG)
MOVE A0,*A11(DSPEED2),W
CALLA PSTOP
MOVE *A11(DDIR),A0,W
SLL 5,A0
ADDI METAD_TAB,A0
MOVE *A0,A9,L
MOVK 1,A1
JSRP FRANIM
MOVE *A13(DATABLE),*A11(DATABLE),L
MOVE A11,A0
MOVI DINOWXFER,A7
CALLA XFERPROC_ID
**** SOUND1 TARBYE_SND
DINOXF_DIE:
DIE
*HOLD THE DINOSAUR PROCESS INDEFINITELY
DINOHOLD:
SLOOP 100,DINOHOLD
**************************************************************************
* *
* TREX_KILL - ROUTINE TO KILL THIS DINOS TREX PROCESS, IF APPROPRIATE. *
* A13 = PTR TO DINO PROCESS. *
* *
**************************************************************************
TREX_KILL:
MMTM SP,A0,A1,A2,A11
MOVB *A13(DTREXFLG),A0
JREQ TREX_KILL_X
MOVE *A13(DPLAYER),A2,L
JRZ TREX_KILL_X
MOVE *A2(PPID),A0,W
ORI PTREXPID,A0
CLR A1
NOT A1
CALLA EXISTP ;FIND THE TREX HOLDING PROCESS
JRZ TREX_KILL_RSM ;BR = NONE TO HEAR OF
MOVE *A0(DATABLE),*A13(DATABLE),L
CALLA KILL ;BLOW THE PROCESS OFF
TREX_KILL_RSM:
MOVE A13,A11
CALLR TREX_KILL_FLASH
CALLR RESTART_MAIN ;RESTART THE MAIN PLAY TUNE
CLR A0
MOVB A0,*A13(DTREXFLG) ;TAKE AWAY THIS FLAG JUST IN CASE
TREX_KILL_X:
MMFM SP,A0,A1,A2,A11
RETS
**************************************************************************
* *
* TREX_KILL_FLASH - KILL THE DINOS TREX FINISH FLASHER. *
* A11 = PTR TO DINO PROCESS *
* *
**************************************************************************
TREX_KILL_FLASH
MMTM SP,A0,A1,A2,A8
MOVE *A11(DPLAYER),A2,L
JRZ TKF_X
MOVE *A2(PPID),A0,W
ORI PFLASHPID,A0
CLR A1
NOT A1
CALLA KILALL
MOVE A11,A0
CALLA GETA8
JRZ TKF_X
CALLA OBJ_ON
TKF_X:
MMFM SP,A0,A1,A2,A8
RETS
**************************************************************************
* *
* TREX_FLASH - PROCESS TO FLASH THE TREX WHITE AND ON FOREVER. *
* A11 = PTR TO TREX PROCESS. *
* PROCID = PLAYERID|PFLASHID <- THIS IS OF UTMOST IMPORTANCE. *
* *
**************************************************************************
TREX_FLASH:
MOVE A11,A0
CALLA GETA8
JAZ DUMDIE
MOVI 0F0FH,A0
MOVE A0,*A8(OCONST),W
MOVI DMACNZ&0FH,A9
MOVI DMAWNZ&0FH,A10
TF_LP
MOVE *A8(OFLAGS),A0,W
SRL 4,A0
SLL 4,A0
OR A9,A0
MOVE A0,*A8(OFLAGS),W
SLEEP 4
MOVE *A8(OFLAGS),A0,W
SRL 4,A0
SLL 4,A0
OR A10,A0
MOVE A0,*A8(OFLAGS),W
SLOOP 4,TF_LP
**************************************************************************
* *
* RESTART_MAIN - ROUTINE TO CORRECTLY RESTART THE MAIN PLAY TUNE. *
* CLEARS THRASHFLG. *
* NOTE: TRASHES A14 *
* *
**************************************************************************
RESTART_MAIN:
PUSH A0
CLRM @THRASHFLG,W
MOVE @GAME_STATE,A0,W
CMPI INPLAY,A0 ;ARE WE IN PLAY?
JRNE RM_X ;BRF = NO, LET SOMEONE ELSE HANDLE
MOVE @MAINTUNE,A0
JRNZ RM_HA
MOVE @WAVE_MUSIC,A0,L
JRUC RM_S
RM_HA:
MOVI HRESTART_SND,A0
RM_S:
CALLA ONESND
RM_X:
PULL A0
RETS
**************************************************************************
* *
* DINO_MUNCH - PROCESS TO MAKE THE DINOSAUR TAKE A BIG BITE OUTTA TROG. *
* A8 = PTR TO DINO *
* A9 = PTR TO TROG PROCESS *
* A11 = PTR TO TROG OBJECT *
* A13 = PTR TO DINO PROCESS *
* NOTE: TRANSFERS TO DINOWXFER *
* *
**************************************************************************
DINO_MUNCH:
PUSHP A9
MOVI EATU,A0
**** PUSHP A11
**** JSRP FRANIMATE_DIR
**** PULLP A11
CALLA LOAD_DIR ;LOAD THE ANIMATION
JSRP ANIMATE_BUTTON
MOVE *A8(OZVAL),A0,L
DEC A0
MOVE A0,*A11(OZVAL),L
**** MOVK 1,A1
**** JSRP FRANIM
JSRP ANIMATE_BUTTON
MOVE @BONUS_WAVE,A0,W
CMPI BONUSW_1,A0
JREQ DM_SKIP_CHEW
**** MOVK 1,A1
**** JSRP FRANIM
JSRP ANIMATE_BUTTON
DM_SKIP_CHEW
PULLP A9
*HANDLE SCORING FOR THIS TROG DUDE
MMTM SP,A8,A9,A10,A11
MOVE A11,A5
MOVE *A13(DPLAYER),A11,L
JRZ DINO_MUNCH_NS
CALLA GETCPNT
MOVE A1,A8
MOVE *A5(OID),A0,W
CMPI DEADWHLOID,A0
JREQ DM_SCORE_10K
MOVB *A9(TTYPE),A0
CMPI TTYPE_SPRING,A0 ;DID WE BITE THE SPRINGS
JRNE DM_EASYTROG ;BR = NO
MOVE @PAC_SCORE,A10,L ;OH SO SPECIAL SCORING FOR
MOVE A10,A0 ;THIS OH SO HARD TROG
MOVE A10,A1
CALLA BCDADD ;DOUBLE UP
MOVE A0,A10
MOVI REXSCORE_SND,A9
CREATE INDPIDE,SCORE2XOBJ ;USE SPECIAL SCORE STUFF
MOVE @PAC_SCORE,A10,L
JRUC DM_PACITUP
DM_EASYTROG
MOVE @BONUS_WAVE,A0,W
CMPI BONUSW_1,A0
JRNE DM_NORMAL
DM_SCORE_10K
MOVI REXSCORE_SND,A9
MOVI PACSTART,A10
CREATE INDPIDE,SCOREOBJ
INCM *A11(PTROGKILLS),W
JRUC DINO_MUNCH_NS
DM_NORMAL
MOVI REXSCORE_SND,A9
MOVE @PAC_SCORE,A10,L
CREATE INDPIDE,SCOREOBJ
DM_PACITUP
MOVE A10,A0
MOVE A10,A1
CALLA BCDADD
CMPI PACTOP,A0
JRLS DINOM_PACSTF
MOVI PACTOP,A0
DINOM_PACSTF:
MOVE A0,@PAC_SCORE,L
MOVE @EAT_COUNT,A0,W
INC A0
MOVE A0,@EAT_COUNT,W
MOVE @WOW_COUNT,A1,W
CMP A1,A0
JRLO DINO_MUNCH_NS
MOVE A8,A10
SUBI [60,0],A10
CREATE GOODIEPID,DELAYED_WOW
DINO_MUNCH_NS:
MMFM SP,A8,A9,A10,A11
JAUC DINOWXFER
**************************************************************************
* *
* DELAYED_WOW - PROCESS TO OUTPUT A DELAYED WOW. *
* A10 = [Y,X] POSITION *
* *
**************************************************************************
DELAYED_WOW
SLEEP 20
SOUND1 BMX5_SND
JAUC WOWDEL
**************************************************************************
* *
* TREX_STOMP - TREX WILL STOMP ON A DINO HERE. *
* A8 = PTR TO TREX *
* A9 = PTR TO DINO OBJECT *
* A11 = PTR TO DINO PROCESS *
* A13 = PTR TO TREX PROCESS *
* *
**************************************************************************
TREX_STOMP:
CALLA GETANIXY_PACKED
MOVE A3,A2
MOVE A8,A7
MOVE A9,A8
CALLA GETANIXY_PACKED
MOVE A7,A8
MOVK 20,A4
CALLA SLINEVEL
MOVE *A13(DDIR),A0,W
CMPI UP,A0
JREQ TREXS_UD
CMPI DOWN,A0
JRNE TREXS_RL
TREXS_UD
CLR A1 ;Y VELOCITY ONLY, DUDE
JRUC TREXS_DOIT
TREXS_RL
CLR A2 ;X VELOCITY ONLY, DUD
TREXS_DOIT
SLL 5,A0
ADDI STOMP_TAB,A0
MOVE *A0,A9,L
MOVE A9,A11
MOVE A1,*A8(OXVEL),L
MOVE A2,*A8(OYVEL),L
MOVE A2,*A8(OZVEL),L
MOVK 1,A1
JSRP FRANIM
CALLA PSTOP
MOVK 1,A1
JSRP FRANIM
MOVE A11,A9
MOVK 1,A1
JSRP FRANIM
SOUND1 DINOSQUASH_SND
MOVK 1,A1
JSRP FRANIM
MOVE *A13(DPLAYER),A11,L
JRZ DINO_STOMP_NS
MOVE A8,B0
CALLA GET_BOTTOM_MID
MOVE A1,A8
MOVI REXSCORE_SND,A9
MOVI 1000H,A10,L ;GIVE 1K FOR STOMPING
CREATE INDPIDE,SCOREOBJ
MOVE B0,A8
DINO_STOMP_NS
JAUC DINOWXFER
**************************************************************************
* *
* DTREX_LEAP - ENTRYPOINT FOR THE DINO PROCESS TO JUMP FROM IT'S *
* CURRENT MOVE POSITION TO THE GIVEN CENTER MOVE. *
* A0 = PTR TO MOVE OR CENTER MOVE THAT HE NEEDS TO LAND UPON *
* A13 = PTR TO DINOSAUR PROCESS *
* NOTE: JUMP TO DINOWXFER WHEN DONE *
* *
**************************************************************************
DTREX_LEAP
ORIM M_NOCOLL,*A8(OFLAGS),W
MOVK 1,A14
MOVB A14,*A13(DPUNCHFLG)
MOVE *A13(TCURMPOS),A2,L
MOVE *A0(MOVEPOS),A3,L
MOVK 20,A4
CALLA SLINEVEL
MOVE *A13(DDIR),A0,W
SLL 5,A0
ADDI STOMP_TAB,A0
MOVE *A0,A9,L
MOVE A1,*A8(OXVEL),L
MOVE A2,*A8(OYVEL),L
MOVE A2,*A8(OZVEL),L
MOVK 1,A1
JSRP FRANIM
CALLA PSTOP
MOVK 1,A1
JSRP FRANIM
JAUC DINOWXFER
**************************************************************************
* *
* CK_TREX - ROUTINE TO SEE IF THERE EXISTS A TREX. *
* RETURNS: *
* Z = NO TREX TO BE FOUND *
* NZ = THERE IS A TREX ABOUT *
* *
**************************************************************************
CK_TREX:
MMTM SP,A0,A8
MOVE @DINOS,A8,L
JRZ CK_TREX_X
CK_TREX_LP:
MOVE *A8(OPLINK),A0,L
JRZ CK_TREX_NXT
MOVB *A0(DTREXFLG),A0
JRNZ CK_TREX_X
CK_TREX_NXT:
MOVE *A8(OSLINK),A8,L
JRNZ CK_TREX_LP
CK_TREX_X:
MMFM SP,A0,A8
RETS
.DATA
**************************************************************************
* *
* MASTER ANIMATION TABLE FOR TREX *
* *
**************************************************************************
TREXATAB
.LONG TREX_U,0,-8000H,TREX_D,0,8000H
.LONG TREX_L,-8000H,0,TREX_R,8000H,0
*90 DEGREE TURNS
.LONG TREX_UL,0,0,TREX_RU,0,0,TREX_DR,0,0,TREX_LD,0,0
.LONG TREX_LU,0,0,TREX_DR,0,0,TREX_RD,0,0,TREX_UR,0,0
*DEATH FRAMES?
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*180 DEGREE TURNS
.LONG TREXABOUT_UL,0,0,TREXABOUT_UR,0,0
.LONG TREXABOUT_DL,0,0,TREXABOUT_DR,0,0
.LONG TREXABOUT_LU,0,0,TREXABOUT_LD,0,0
.LONG TREXABOUT_RU,0,0,TREXABOUT_RD,0,0
*STANDING IN PLACE
.LONG TREXSTAND_U,0,0,TREXSTAND_D,0,0
.LONG TREXSTAND_L,0,0,TREXSTAND_R,0,0
*CHEER SEQUENCES
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*MAD SEQUENCES
.LONG REXMAD_U,0,0,REXMAD_D,0,0
.LONG REXMAD_LR,0,0,REXMAD_LR,0,0
*MAD SEQUENCES W/SOUND
.LONG REXMAD_U,0,0,REXMAD_D,0,0
.LONG REXMAD_LR,0,0,REXMAD_LR,0,0
*QUESTION SEQUENCES
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*BUMP HEADS
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*PUNCH
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*GET PUNCHED
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*FALL IN PIT
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*INTRO AND WONDERMENT
.LONG DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0
*STUCK IN TAR
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*FIRE
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*SHAKE OFF A PUNCH
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*GET BURNED
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*KNOCK OUT
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*FALL IN SMALL PIT
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*GET CLUBBED
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*SQUISHED BY WHEEL SEQUENCES
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*SQUASHED BY THE SPRING SHOE
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*LOOK BOTH WAYS
.LONG 0,0,0,0,0,0,0,0,0,0,0,0
*EAT
.LONG TREXEAT_U,0,0,TREXEAT_D,0,0
.LONG TREXEAT_L,0,0,TREXEAT_R,0,0
*DIG, IN THIS CASE, TUNNEL
.LONG GWENTUNN_U,0,0,GWENTUNN_D,0,0
.LONG GWENTUNN_LR,0,0,GWENTUNN_LR,0,0
*LAVA DEATH FRAMES
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
.LONG DUMSCRIPT,0,0,DUMSCRIPT,0,0
*PUNCH OFF, IN THIS CASE, WALK AND SPIT FIRE
.LONG TREX_U,0,-8000H,TREX_D,0,8000H
.LONG TREX_L,-8000H,0,TREX_R,8000H,0
**************************************************************************
* *
* DINO METAMORPHASIS SEQUENCES *
* *
**************************************************************************
METAU_TAB:
.LONG REXMET8u,REXMET0u,REXMET4u,REXMET4u
METAD_TAB:
.LONG REXMET8d,REXMET0d,REXMET4d,REXMET4d
REXMET4u:
.LONG RXMETAP4F2
.WORD 6
.LONG RXMETAP4F3
.WORD 8
.LONG RXMETAP4F4
.WORD 10
REXMAD_LR:
.LONG RXSNP4F2
.WORD 4|MAKESOUND
.LONG REXGROWL_SND
.LONG RXSNP4F3
.WORD 4
.LONG RXSNP4F4
.WORD 6
.LONG RXSNP4F5
.WORD 8
.LONG RXSTP4
.WORD 8
.LONG 0
REXMET4d:
.LONG RXMETAP4F4
.WORD 6
.LONG RXMETAP4F3
.WORD 8
.LONG RXMETAP4F2
.WORD 6
.LONG 0
REXMET8u:
.LONG RXMETAP8F2
.WORD 6
.LONG RXMETAP8F3
.WORD 8
.LONG RXMETAP8F4
.WORD 10
REXMAD_U:
.LONG RXSNP8F2
.WORD 4|MAKESOUND
.LONG REXGROWL_SND
.LONG RXSNP8F3
.WORD 4
.LONG RXSNP8F4
.WORD 6
.LONG RXSNP8F5
.WORD 8
.LONG RXSTP8
.WORD 8
.LONG 0
REXMET8d:
.LONG RXMETAP8F4
.WORD 6
.LONG RXMETAP8F3
.WORD 8
.LONG RXMETAP8F2
.WORD 6
.LONG 0
REXMET0u:
.LONG RXMETAP0F2
.WORD 6
.LONG RXMETAP0F3
.WORD 8
.LONG RXMETAP0F4
.WORD 10
REXMAD_D:
.LONG RXPOUNP0F1
.WORD 4
.LONG RXPOUNP0F2
.WORD 4|MAKESOUND
.LONG REXGROWL_SND
.LONG RXPOUNP0F3
.WORD 3
.LONG RXPOUNP0F4
.WORD 4
.LONG RXPOUNP0F2
.WORD 4
.LONG RXPOUNP0F5
.WORD 3
.LONG RXPOUNP0F6
.WORD 4
.LONG RXPOUNP0F2
.WORD 4
.LONG RXPOUNP0F3
.WORD 3
.LONG RXPOUNP0F4
.WORD 4
.LONG RXPOUNP0F2
.WORD 4
.LONG RXPOUNP0F1
.WORD 3
.LONG 0
REXMET0d:
.LONG RXMETAP0F4
.WORD 6
.LONG RXMETAP0F3
.WORD 8
.LONG RXMETAP0F2
.WORD 6
.LONG 0
**************************************************************************
* *
* THE GROWLING *
* *
**************************************************************************
GROWL_TAB:
.LONG REXGROWL_U, REXGROWL_D, REXGROWL_L, REXGROWL_R
REXGROWL_U:
.LONG RXWAP8F1
.WORD 7|MAKESOUND
.LONG REXGROWL_SND
.LONG RXWAGRP8F2
.WORD 9
.LONG RXWAGRP8F3
.WORD 7
.LONG RXWAGRP8F4
.WORD 7
.LONG RXWAGRP8F5
.WORD 9
.LONG RXWAGRP8F6
.WORD 7
.LONG RXWAP8F7
.WORD 7|SCRIPT
.LONG TREX_U
REXGROWL_D:
.LONG RXWAP0F1
.WORD 7|MAKESOUND
.LONG REXGROWL_SND
.LONG RXWAGRP0F2
.WORD 9
.LONG RXWAGRP0F3
.WORD 7
.LONG RXWAGRP0F4
.WORD 7
.LONG RXWAGRP0F5
.WORD 9
.LONG RXWAGRP0F6
.WORD 7
.LONG RXWAP0F7
.WORD 7|SCRIPT
.LONG TREX_D
REXGROWL_L:
.LONG RXWAP4F1
.WORD 7|FLIPBITS|SCRIPT,M_FLIPH
.LONG REXGROWL_LR
REXGROWL_R:
.LONG RXWAP4F1
.WORD 7|FLIPBITS,0
REXGROWL_LR:
.LONG RXWAGRP4F2
.WORD 9|MAKESOUND
.LONG REXGROWL_SND
.LONG RXWAGRP4F3
.WORD 7
.LONG RXWAGRP4F4
.WORD 7
.LONG RXWAGRP4F5
.WORD 9
.LONG RXWAP4F6
.WORD 7
.LONG RXWAP4F7
.WORD 7
.LONG RXWAP4F1
.WORD 7|SCRIPT
.LONG TREX_LRLP
**************************************************************************
* *
* THESE CLAWS ARE MADE FOR WALKIN'... *
* *
**************************************************************************
TREX_L:
.LONG RXWAP4F1
.WORD 7|FLIPBITS|SCRIPT,M_FLIPH
.LONG TREX_LRLP
TREX_R:
.LONG RXWAP4F1
.WORD 7|FLIPBITS,0
TREX_LRLP:
.LONG RXWAP4F2
.WORD 9
.LONG RXWAP4F3
.WORD 7
.LONG RXWAP4F4
.WORD 7
.LONG RXWAP4F5
.WORD 9
.LONG RXWAP4F6
.WORD 7
.LONG RXWAP4F7
.WORD 7
.LONG RXWAP4F1
.WORD 7|SCRIPT
.LONG TREX_LRLP
TREX_D:
TREX_DLP:
.LONG RXWAP0F1
.WORD 7
.LONG RXWAP0F2
.WORD 9
.LONG RXWAP0F3
.WORD 7
.LONG RXWAP0F4
.WORD 7
.LONG RXWAP0F5
.WORD 9
.LONG RXWAP0F6
.WORD 7
.LONG RXWAP0F7
.WORD 7|SCRIPT
.LONG TREX_DLP
TREX_U:
TREX_ULP:
.LONG RXWAP8F1
.WORD 7
.LONG RXWAP8F2
.WORD 9
.LONG RXWAP8F3
.WORD 7
.LONG RXWAP8F4
.WORD 7
.LONG RXWAP8F5
.WORD 9
.LONG RXWAP8F6
.WORD 7
.LONG RXWAP8F7
.WORD 7|SCRIPT
.LONG TREX_ULP
.LONG 0
.LONG 0 ;LEAVE THESE HERE AS A BUFFER (GNP 6/1/90)
**************************************************************************
* *
* TREX TURNS *
* *
**************************************************************************
*
*TURN UP FROM RIGHT
TREX_UR:
*
*TURN UP FROM LEFT
TREX_UL:
.LONG RXSTP4
.WORD 16
.LONG 0 ;HEAD TURN SPLIT
.LONG RXSTP4
.WORD 8
.LONG RXSTP5
.WORD 4
.LONG RXSTP6
.WORD 4
.LONG RXSTP7
.WORD 4
.LONG RXSTP8
.WORD 4|FLIPBITS,0
.LONG 0
*
*TURN RIGHT FROM UP
TREX_RU:
.LONG RXSTP8
.WORD 16
.LONG 0 ;HEAD TURN SPLIT
.LONG RXSTP8
.WORD 8|FLIPBITS|SCRIPT,0
.LONG TREX_RULU
*
*TURN LEFT FROM UP
TREX_LU:
.LONG RXSTP8
.WORD 16
.LONG 0 ;HEAD TURN SPLIT
.LONG RXSTP8
.WORD 8|FLIPBITS,M_FLIPH
TREX_RULU:
.LONG RXSTP7
.WORD 4
.LONG RXSTP6
.WORD 4
.LONG RXSTP5
.WORD 4
.LONG RXSTP4
.WORD 4
.LONG 0
*
*TURN DOWN FROM RIGHT
TREX_DR:
*
*TURN DOWN FROM LEFT
TREX_DL:
.LONG RXSTP4
.WORD 16
.LONG 0 ;HEAD TURN SPLIT
.LONG RXSTP4
.WORD 8
.LONG RXSTP3
.WORD 4
.LONG RXSTP2
.WORD 4
.LONG RXSTP1
.WORD 4
.LONG RXSTP0
.WORD 4|FLIPBITS,0
.LONG 0
*
*TURN LEFT FROM DOWN
TREX_LD
.LONG RXSTP0
.WORD 16
.LONG 0 ;HEAD TURN SPLIT
.LONG RXSTP0
.WORD 8|FLIPBITS|SCRIPT,M_FLIPH
.LONG TREX_RDLD
*
*TURN RIGHT FROM DOWN
TREX_RD
.LONG RXSTP0
.WORD 16
.LONG 0
.LONG RXSTP0
.WORD 8|FLIPBITS,0
TREX_RDLD:
.LONG RXSTP1
.WORD 4
.LONG RXSTP2
.WORD 4
.LONG RXSTP3
.WORD 4
.LONG RXSTP4
.WORD 4
.LONG 0
*ABOUT FACE FROM UP, VIA LEFT
TREXABOUT_UL:
.LONG RXSTP8
.WORD 12
.LONG 0 ;HEAD TURN SPLIT
.LONG RXSTP8
.WORD 8|FLIPBITS|SCRIPT,M_FLIPH
.LONG TREXABOUT_U
*ABOUT FACE FROM UP VIA RIGHT
TREXABOUT_UR:
.LONG RXSTP8
.WORD 12
.LONG 0 ;HEAD TURN SPLIT
.LONG RXSTP8
.WORD 8|FLIPBITS,0
TREXABOUT_U:
.LONG RXSTP7
.WORD 4
.LONG RXSTP6
.WORD 4
.LONG RXSTP5
.WORD 4
.LONG RXSTP4
.WORD 4
.LONG RXSTP3
.WORD 4
.LONG RXSTP2
.WORD 4
.LONG RXSTP1
.WORD 4
.LONG RXSTP0
.WORD 4|FLIPBITS,0
.LONG 0
*ABOUT FACE FROM DOWN VIA LEFT
TREXABOUT_DL:
.LONG RXSTP0
.WORD 12
.LONG 0 ;HEAD TURN SPLIT
.LONG RXSTP0
.WORD 8|FLIPBITS|SCRIPT,M_FLIPH
.LONG TREXABOUT_D
*ABOUT FACE FROM DOWN VIA RIGHT
TREXABOUT_DR:
.LONG RXSTP0
.WORD 12
.LONG 0 ;HEAD TURN SPLIT
.LONG RXSTP0
.WORD 8
TREXABOUT_D:
.LONG RXSTP1
.WORD 4
.LONG RXSTP2
.WORD 4
.LONG RXSTP3
.WORD 4
.LONG RXSTP4
.WORD 4
.LONG RXSTP5
.WORD 4
.LONG RXSTP6
.WORD 4
.LONG RXSTP7
.WORD 4
.LONG RXSTP8
.WORD 4|FLIPBITS,0
.LONG 0
*ABOUT FACE FROM LEFT VIA UP
TREXABOUT_LU:
.LONG RXSTP4
.WORD 12
.LONG 0 ;HEAD TURN SPLIT
.LONG RXSTP4
.WORD 8
.LONG RXSTP5
.WORD 4
.LONG RXSTP6
.WORD 4
.LONG RXSTP7
.WORD 4
.LONG RXSTP8
.WORD 4|FLIPBITS,0
.LONG RXSTP7
.WORD 4
.LONG RXSTP6
.WORD 4
.LONG RXSTP5
.WORD 4
.LONG RXSTP4
.WORD 4
.LONG 0
*ABOUT FACE FROM LEFT VIA DOWN
TREXABOUT_LD:
.LONG RXSTP4
.WORD 12
.LONG 0 ;HEAD TURN SPLIT
.LONG RXSTP4
.WORD 8
.LONG RXSTP3
.WORD 4
.LONG RXSTP2
.WORD 4
.LONG RXSTP1
.WORD 4
.LONG RXSTP0
.WORD 4|FLIPBITS,0
.LONG RXSTP1
.WORD 4
.LONG RXSTP2
.WORD 4
.LONG RXSTP3
.WORD 4
.LONG RXSTP4
.WORD 4
.LONG 0
*ABOUT FACE FROM RIGHT VIA UP
TREXABOUT_RU:
.LONG RXSTP4
.WORD 12
.LONG 0 ;HEAD TURN SPLIT
.LONG RXSTP4
.WORD 8
.LONG RXSTP5
.WORD 4
.LONG RXSTP6
.WORD 4
.LONG RXSTP7
.WORD 4
.LONG RXSTP8
.WORD 4|FLIPBITS,M_FLIPH
.LONG RXSTP7
.WORD 4
.LONG RXSTP6
.WORD 4
.LONG RXSTP5
.WORD 4
.LONG RXSTP4
.WORD 4
.LONG 0
*ABOUT FACE FROM RIGHT VIA DOWN
TREXABOUT_RD:
.LONG RXSTP4
.WORD 12
.LONG 0 ;HEAD TURN SPLIT
.LONG RXSTP4
.WORD 8
.LONG RXSTP3
.WORD 4
.LONG RXSTP2
.WORD 4
.LONG RXSTP1
.WORD 4
.LONG RXSTP0
.WORD 4|FLIPBITS,M_FLIPH
.LONG RXSTP1
.WORD 4
.LONG RXSTP2
.WORD 4
.LONG RXSTP3
.WORD 4
.LONG RXSTP4
.WORD 4
.LONG 0
**************************************************************************
* *
* STANDING IN THE PLACE WHERE YOU ARE! *
* *
**************************************************************************
*STAND FACING UP
TREXSTAND_U:
.LONG RXSTP8
.WORD 1|FLIPBITS,0
.LONG 0
*STAND FACING DOWN
TREXSTAND_D:
.LONG RXSTP0
.WORD 1|FLIPBITS,0
.LONG 0
*STAND FACING LEFT
TREXSTAND_L:
.LONG RXSTP4
.WORD 1|FLIPBITS,M_FLIPH
.LONG 0
*STAND FACING RIGHT
TREXSTAND_R:
.LONG RXSTP4
.WORD 1|FLIPBITS,0
.LONG 0
**************************************************************************
* *
* EATING FRAMES *
* BREAK POINT 1 - TROG SHOULD BE PUT BEHIND TREX IN Z HERE *
* BREAK POINT 2 - DINO HAS JUST SNAPPED TROG, READY TO CHEW *
* *
**************************************************************************
TREXEAT_U:
.LONG RXMUNCP8F1
.WORD 4|MAKESOUND
.LONG REXGROWL_SND
.LONG RXMUNCP8F2
.WORD 6
.LONG RXMUNCP8F3
.WORD 2
.LONG RXMUNCP8F4
.WORD 4
.LONG 0
.LONG RXMUNCP8F5
.WORD 6
.LONG RXMUNCP8F6
.WORD 6|SPAWNP|MAKESOUND,0,0,INDPID
.LONG EARTHSHAKER
.LONG REXCHOMP_SND
.LONG RXMUNCP8F7
.WORD 4
.LONG RXMUNCP8F8
.WORD 4
.LONG RXMUNCP8F1
.WORD 4
.LONG 0
.LONG RXCHEWP8F3
.WORD 4
.LONG RXCHEWP8F1
.WORD 8
.LONG RXCHEWP8F2
.WORD 8|MAKESOUND
.LONG REXCHEW_SND
**** .LONG RXCHEWP8F3
**** .WORD 10
**** .LONG RXCHEWP8F1
**** .WORD 6
**** .LONG RXCHEWP8F2
**** .WORD 6|MAKESOUND
**** .LONG REXCHEW_SND
.LONG RXCHEWP8F3
.WORD 6
.LONG 0
TREXEAT_D:
.LONG RXMUNCP0F1
.WORD 4|MAKESOUND
.LONG REXGROWL_SND
.LONG RXMUNCP0F2
.WORD 6
.LONG RXMUNCP0F3
.WORD 2
.LONG RXMUNCP0F4
.WORD 4
.LONG 0
.LONG RXMUNCP0F5
.WORD 6
.LONG RXMUNCP0F6
.WORD 6|SPAWNP|MAKESOUND,0,0,INDPID
.LONG EARTHSHAKER
.LONG REXCHOMP_SND
.LONG RXMUNCP0F7
.WORD 4
.LONG RXMUNCP0F8
.WORD 4
.LONG RXMUNCP0F1
.WORD 4
.LONG 0
.LONG RXCHEWP0F3
.WORD 4
.LONG RXCHEWP0F1
.WORD 8
.LONG RXCHEWP0F2
.WORD 8|MAKESOUND
.LONG REXCHEW_SND
**** .LONG RXCHEWP0F3
**** .WORD 10
**** .LONG RXCHEWP0F1
**** .WORD 6
**** .LONG RXCHEWP0F2
**** .WORD 6|MAKESOUND
**** .LONG REXCHEW_SND
.LONG RXCHEWP0F3
.WORD 6
.LONG 0
TREXEAT_L
.LONG RXMUNCP4F1
.WORD 4|FLIPBITS|MAKESOUND|SCRIPT,M_FLIPH
.LONG REXGROWL_SND
.LONG TREXEAT_LR
TREXEAT_R
.LONG RXMUNCP4F1
.WORD 4|FLIPBITS|MAKESOUND,0
.LONG REXGROWL_SND
TREXEAT_LR
.LONG RXMUNCP4F2
.WORD 6
.LONG RXMUNCP4F3
.WORD 2
.LONG RXMUNCP4F4
.WORD 4
.LONG 0
.LONG RXMUNCP4F5
.WORD 6
.LONG RXMUNCP4F6
.WORD 6|SPAWNP|MAKESOUND,0,0,INDPID
.LONG EARTHSHAKER
.LONG REXCHOMP_SND
.LONG RXMUNCP4F7
.WORD 4
.LONG RXMUNCP4F8
.WORD 4
.LONG RXMUNCP4F1
.WORD 4
.LONG 0
.LONG RXCHEWP4F3
.WORD 4
.LONG RXCHEWP4F1
.WORD 8
.LONG RXCHEWP4F2
.WORD 8|MAKESOUND
.LONG REXCHEW_SND
**** .LONG RXCHEWP4F3
**** .WORD 10
**** .LONG RXCHEWP4F1
**** .WORD 6
**** .LONG RXCHEWP4F2
**** .WORD 6|MAKESOUND
**** .LONG REXCHEW_SND
.LONG RXCHEWP4F3
.WORD 6
.LONG 0
**************************************************************************
* *
* THE STOMPING *
* *
**************************************************************************
STOMP_TAB:
.LONG TREXSTOMP_U,TREXSTOMP_D
.LONG TREXSTOMP_LR,TREXSTOMP_LR
TREXSTOMP_D:
.LONG RXSTOMP0F2
.WORD 4|MAKESOUND
.LONG REXGROWL_SND
.LONG RXSTOMP0F3
.WORD 4
.LONG RXSTOMP0F4
.WORD 8
.LONG RXSTOMP0F2
.WORD 4
.LONG 0
.LONG RXSTOMP0F1
.WORD 8|SPAWNP,0,0,INDPID
.LONG EARTHSHAKER
.LONG RXSTP0
.WORD 4
.LONG 0
TREXSTOMP_LR
.LONG RXSTOMP4F2
.WORD 4|MAKESOUND
.LONG REXGROWL_SND
.LONG RXSTOMP4F3
.WORD 4
.LONG RXSTOMP4F4
.WORD 8
.LONG RXSTOMP4F2
.WORD 4
.LONG 0
.LONG RXSTOMP4F1
.WORD 8|SPAWNP,0,0,INDPID
.LONG EARTHSHAKER
.LONG RXSTP4
.WORD 4
.LONG 0
TREXSTOMP_U:
.LONG RXSTOMP8F2
.WORD 4|MAKESOUND
.LONG REXGROWL_SND
.LONG RXSTOMP8F3
.WORD 4
.LONG RXSTOMP8F4
.WORD 8
.LONG RXSTOMP8F2
.WORD 4
.LONG 0
.LONG RXSTOMP8F1
.WORD 8|SPAWNP,0,0,INDPID
.LONG EARTHSHAKER
.LONG RXSTP8
.WORD 4
.LONG 0
*
*SOUNDS MADE IN THIS MODULE
REXGROWL_SND:
.WORD >F010,>3E,>80BC,0 ;TREX GROWL TYPE ROARING
REXCHOMP_SND:
.WORD >F010,30,>807A,0 ;TREX CHOMPS ON TROGS HEAD
REXCHEW_SND:
.WORD >F010,30,>80BB,0 ;TREX CHEWS ON TROG
REXUP_SND:
.WORD >F330,>7E,>80C1,0 ;TURN INTO TREX SOUND
REXDOWN_SND:
.WORD >F3DF,>7E,>80C0,0 ;OUT OF TREX TIME
REXTUNE_SND:
.WORD >F2FD,>1,>407F,>800D,0 ;TREX THRASH TUNE (KILLS FGND EFFECT)
REXSCORE_SND:
.WORD >F310,>3C,>80B6,0 ;SCORE DUDE
HRESTART_SND:
.WORD >F2E1,>78,>800E,0 ;HOUSE BUILD TUNE RESTART
.END