trog/TROGATT.ASM

1962 lines
41 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 'TROGATT.ASM'
.TITLE " <<< T R O G -- ATTRACT MODE 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 "GSPINC.ASM" ;GSP assembler equates
.INCLUDE "SYSINC.ASM" ;Zunit system equates
.INCLUDE "IMGTBL.GLO"
.INCLUDE "TROGEQU.ASM"
.INCLUDE "BGNDTBL.GLO" ;Background equates
.INCLUDE "TROGAEQU.ASM" ; TROG ANIMATION STUFF
.INCLUDE "STRING.H"
.INCLUDE "TROGSEQU.ASM"
.INCLUDE "TROGAUDN.ASM"
.DEF ATTRACT_MODE, ATT_MODE_HSTD, BSPIKEFALL
.DEF DRAW_P_BORDER, ATT_MODE_GAME_OVER, CREDITS_TEXT
.DEF OCTO_PAGE, HSTD_ENTRY_POINT, CRED_ENTRY_POINT
.DEF STORY_MODE, ON_CRED
.REF WIPEOUT, CLRBGND, BGND_UD1, BGND_UD2, BAKMODS, BAK2MODS
.REF GWENATAB, REXATAB, BLOOPATAB, SPIKEATAB, TROGATAB
.REF TROG_ATT_APPEAR, DUMCOLL
.REF DINOLOAD, TROG_PIT, TROG_START, TROG_NEW_PNT, TROGINIT
.REF TRSTP0, FADEIN, FADE_ONLY, FadeIn, FadeOut
.REF RECLAIM_LAND, GPLAYNUM, CREDIT_SCREEN, MARQUEE
.REF WAVEEGGS, PLAYER, EGG_DIVISOR, EGGS_AT_ONCE
.REF WAVE_START, WAVE, SCORPROC, GAME_INTRO, GRAMINIT
.REF GAME_DIFFICULTY, EGG_START, PLAYER, DINO_START
.REF PDRAW, DINO_VEL, DINO_FRANIM, DINO_ADD_VEL
.REF OWINDOW, OBJEXP32, SKYCOLOR, GPLAYD, SPSTP0, APLAYDONE
.REF GET_CSTR, G_CRED, ISLAND_NUM, FADEIN, FADEOUT
.REF FLOWERINIT, SHROOMINIT, PINEAPPLEINIT
.REF FIREINIT, PITINIT, TARINIT, SKYCOLOR, WATER_CYCLE, SKYUP
.REF FLAMESM2, FIRE_ANIMII, PINEAPPLESPIN, TAR1a, TAR_ANIM1, OGPIT11
.REF WARMSET, ROM_NAME, BAKLST, OBJLST
.REF SLEEP_SWITCHX, CREDITBGND, LOGOINIT,COPYRIGHTINIT
.REF OCTO_PRINT_AUDS, OCTO_PRINT_AUDS_2, GAMEUNITS, BUYWIN_Z
.REF OCTO_PRINT_AUDS_3, OCTO_PRINT_AUDS_4
.REF ATT_HSTD, GET_CSTR
.REF P1W1DINO, P2W1DINO, P3W1DINO, P4W1DINO
.REF BAKMODS, BGND_UD1, BACKGROUND1
.BSS STORY_MODE,16 ; 1 IF IN STORY MODE
.BSS STORYOBJ,32 ; STORY BOX OBJECT
.BSS WINOBJ,32 ; BLACK WINDOW OBJECT
.BSS DINO_OBJECTS,(4*32)
.BSS TEMPNUM,16
.BSS TROG_OBJ,32
.BSS ON_CRED,16
.BSS STORY_DINO,32 ; WHICH STORY DINO WE ARE WORKING ON
.BSS AMODE_PAGE,16 ;PAGE OF WHICH WE SHALL DISPLAY
.TEXT
.EVEN
ATT_ZPOS .EQU 300H ;BIG OLD Z POSITION FOR THESE GUYS
**************************************************************************
* *
* ATTRACT_MODE - PROCESS TO CYCLE THROUGH THE ATTRACT MODE ROUTINES *
* DURING GAME OVER. *
* *
**************************************************************************
ATTRACT_MODE:
CLR A0
MOVE A0,@GAMEUNITS,W ; CLEAR OUT ANY POTENTIAL GAME UNITS
MOVIM 1,@AMODE_PAGE,W
ATTRACT_MODE_LP
SOUNDOFF
CALLA WIPEOUT
DISPON
JSRP TITLE_PAGE
CALLA WIPEOUT
DISPON
ATT_MODE_CREDIT:
CALLA WIPEOUT
DISPON
JSRP CREDIT_SCREEN
ATT_MODE_HSTD:
SOUNDOFF
ADJUST ADJHSON
JREQ ATT_MODE_STORY
CALLA WIPEOUT
DISPON
JSRP ATT_HSTD
ATT_MODE_STORY:
CALLA WIPEOUT
DISPON
JSRP STORY
CALLA WIPEOUT
DISPON
JSRP CREDIT_SCREEN ; STICK YE OLD CREDIT SCREEN IN
ATT_MODE_ENEMIES:
ADJUST ADJHSON
JREQ ATT_MODE_HOWTO
CALLA WIPEOUT
DISPON
JSRP ATT_HSTD
ATT_MODE_HOWTO
CALLA WIPEOUT
DISPON
JSRP HOW_TO_PAGE
JRUC ATTRACT_MODE_LP
HSTD_ENTRY_POINT
CALLA WIPEOUT
DISPON
JSRP ATT_HSTD
JRUC ATT_MODE_STORY
CRED_ENTRY_POINT
CALLA WIPEOUT
DISPON
JSRP CREDITS_PAGE
JRUC ATT_MODE_CREDIT
**************************************************************************
* *
* ATT_MODE_GAME_OVER - ATTRACT MODE ENTRY POINT FROM GAME OVER *
* *
**************************************************************************
ATT_MODE_GAME_OVER:
SOUNDOFF
ADJUST ADJHSON
JREQ ATT_MODE_GO_TITLE
CALLA WIPEOUT
DISPON
JSRP ATT_HSTD
ATT_MODE_GO_TITLE
CALLA WIPEOUT
DISPON
JSRP TITLE_PAGE
JRUC ATT_MODE_STORY
**************************************************************************
* *
* TITLE_PAGE - OUTPUT THE TROG TITLE PAGE *
* *
**************************************************************************
TITLE_PAGE:
CALLA WIPEOUT
CLR A0
MOVE A0,@SCRNTL,L ;RE-ADJUST TOP LEFT CORNER OF SCREEN
MOVI 0F0F0F0FH,A0
CALLA FILL_SCRN ;LET'S MAKE IT HAPPEN
MOVK 17,A0 ;LEVEL OF BLUE
MOVE A0,@IRQSKYE,W
MOVK 3,A0
MOVE A0,@GAMERASE,W ;AUTO ERASE ON
DISPON
MOVI BALLYINIT,A14
CALLA MAKE_OBJ
MOVE A0,A8
MOVI PRESENTSINIT,A14
CALLA MAKE_OBJ
SLEEP 40
SLEEPK 2
CLR A0
MOVE A0,@GAMERASE,W ;STOP AUTO-ERASE
CALLA AUTOEOFF
DISPOFF
MOVI TITLE_MODS,A1
MOVE A1,@BAK2MODS,L
CALLA BGND_UD2 ;UPDATE THE CURRENT SECONDARY BGND
MOVI SCRNMID,A0
MOVE A0,@SCRNTL,W
MOVE A0,@SCRNLR,W
DISPON
CLR A10
MOVI SCRNEND,A11
MOVI 30,A0
JSRP SCREXP32 ;EXPAND OUT THE WORDS
SLEEPK 30
MOVK 3,A0
MOVE A0,@GAMERASE,W
MOVI PLAYMATEINIT,A14
CALLA MAKE_OBJ
MOVI TITLE2_MODS,A1
MOVE A1,@BAKMODS,L
CALLA BGND_UD1 ;UPDATE THE CURRENT PRIMARY BGND
SLEEP 230
RETP
**************************************************************************
* *
* STORY *
* *
* STARTING POINT FOR SHOWING THE WONDERFUL STORIES ABOUT 4 *
* LITTLE DINOS WHO DECIDED TO MAKE IT BIG IN THE WORLD BY *
* STRUTTING THEIR STUFF FOR QUARTERS *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* MONEY -- LOTS OF MONEY *
* *
**************************************************************************
STORY:
MOVK 1,A0
MOVE A0,@STORY_MODE,W
MOVE @STORY_DINO,A2,L ; CHANGING OF THE DINOS
CALLA GPLAYNUM
INC A0
MOVE @NPLAYERS,A14,W ;GET NUMBER OF DINOS ALLOWED!
CMP A14,A0 ;BR = HAVE WE SURPASSED THIS?
JRLS STORY_DINO_OK ;BR = NO
CLR A0 ;RESET TO REXINATOR
STORY_DINO_OK
SLL 30,A0
SRL 30,A0
CALLA GPLAYD ; TURN BACK INTO A POINTER
MOVE A2,@STORY_DINO,L
; MOVI P1DATA,A2 ; START WITH REX
CLR A0
MOVE A0,*A2(PBONEHIT),W ; FIX THE LEVEL 1 PLAY STUFF
JSRP ATTGAMESTART ; SETUP THE GAME
SOUNDOFF ; NO ATTRACT MODE SOUNDS
MOVI TROG_STORY1,A8
CALLA LM_SETUP
JSRP PRINTF
CALLR TEXT_CHANGE
SLEEP 40
; MOVI P1DATA,A2
MOVE @STORY_DINO,A2,L
MOVK 1,A0
MOVE A0,@WAVE
JSRP WAVE_START ;DO THE WAVE INITIALIZATION
SLEEP 50
CALLR TEXT_DELETE
MOVI TROG_STORY2,A8
CALLA LM_SETUP
JSRP PRINTF
CALLR TEXT_CHANGE
SLEEPK 30
CREATE INDPIDW,THE_BIG_GUY ; POP TROG
SLEEP 250
MOVI TROGINIT,A14 ;NOW MAKE THE LITTLE TROG
CALLA GPALOBJSTF ;GET AN OBJECT AND STUFF
JRZ STORY_SKIP_LITTLE ;BR = WE FAILED TO GET AN OBJECT
MOVE A0,A8
MOVE A0,@TROG_OBJ,L ; KEEP THE TROGSTER AROUND
MOVI [98H,0C2H],A1
CALLA TROG_NEW_PNT ;CENTER TROG ON THIS NEW POINT
MOVE A1,A9
CREATE INDPID,TROG_PIT ;START THE PIT FROM WHICH HE WILL EMERGE
SLEEP 61
MOVI TROG_ATT_APPEAR,A9
MOVK 4,A1
JSRP FRANIM ;LOAD THE NEW FRAME
CALLA INSERT_OBJ ;INSERT THIS 'TING
SLEEPR A0 ;SLEEP THE FRAME TIME
MOVK 1,A1
JSRP FRANIM
MOVK 1,A1
JSRP FRANIM
STORY_SKIP_LITTLE:
CALLR TEXT_DELETE
MOVI TROG_STORY3,A8
CALLA LM_SETUP
JSRP PRINTF
CALLR TEXT_CHANGE
JSRP PARADE ; I LOVE A PARADE
CALLR TEXT_DELETE
STORY_DIE
MOVI DINO_OBJECTS,A1
MOVE *A1+,A8,L
JRZ STORY_DIE1
CALLA DELETE_OBJ
; CALLA DELOBJ
STORY_DIE1
MOVE *A1+,A8,L
JRZ STORY_DIE2
CALLA DELETE_OBJ
; CALLA DELOBJ
STORY_DIE2
MOVE *A1+,A8,L
JRZ STORY_DIE3
CALLA DELETE_OBJ
; CALLA DELOBJ
STORY_DIE3
MOVE *A1+,A8,L
JRZ STORY_DIE4
CALLA DELETE_OBJ
; CALLA DELOBJ
STORY_DIE4
MOVE @TROG_OBJ,A8,L
JRZ STORY_DIE5
CALLA DELETE_OBJ ; LATER, TROG
STORY_DIE5
CLR A0
MOVE A0,@STORY_MODE,W
RETP
**************************************************************************
* *
* HOW_TO_PAGE - CREATE THE HOW TO PAGE *
* *
**************************************************************************
HOW_TO_PAGE
MOVI INDPIDW,A0
MOVE A0,*A13(PROCID),W ; MAKE SURE i&M WORKING
MOVK 1,A0
MOVE A0,@STORY_MODE,W
; MOVI P1DATA,A2
MOVE @STORY_DINO,A2,L
CLR A0
MOVE A0,*A2(PBONEHIT),W ; FIX THE LEVEL 1 PLAY STUFF
MOVE A0,*A2(PBARS),W
MOVE A0,*A2(PEGGOUT),W ;CLEAR THE EGG FLAGS
MOVE A0,*A2(PEGGINIT),W
JSRP ATTGAMESTART ; SETUP THE GAME
SOUNDOFF ; NO ATTRACT MODE SOUNDS
; MOVI P1DATA,A2
MOVE @STORY_DINO,A2,L
MOVE @AMODE_PAGE,@WAVE,W
JSRP WAVE_START ;DO THE WAVE INITIALIZATION
MOVE @AMODE_PAGE,A0,W
CMPI 1,A0
JRNE HTN_CHECK4
MOVK 4,A0
JRUC HOW_TO_NXT
HTN_CHECK4
CMPI 4,A0
JRNE HTN_NEXT1
MOVK 12,A0
JRUC HOW_TO_NXT
HTN_NEXT1
MOVK 1,A0
HOW_TO_NXT
MOVE A0,@AMODE_PAGE
MOVIM 6,@WAVEEGGS,W ;LIMIT THE NUMBER OF EGGS
MOVIM 6,@EGGS_AT_ONCE,W ;LET THEM ALL OUT AT ONE TIME
MOVIM 1,@EGG_DIVISOR,W ;ONLY ONE PLAYER THIS WAVE
MOVI TROG_GAME_OVER,A8
JSRP LM_PRINTF
MOVI TEXTOID,A0
MOVI GAMEOVEROID,A1
CALLA CHANGOID ; SOMETHING THAT WON'T GET HURT
MOVE @STORY_DINO,A2,L
CALLA PLAYER
SLEEPK 5
MOVE @STORY_DINO,A2,L
MOVE *A2(POBJ),A8,L
MOVE *A8(OPLINK),A0,L
MOVIB 1,*A0(DSMART)
CLR A8
CLR A9
MOVI 360,A11
STORY_WAIT
SLEEPK 5
INC A8
CMPI 6,A8
JRLT STORY_WAIT_GO
CLR A8
MOVE A9,A9
JRZ STORY_OFF_TEXT
MOVI GAMEOVEROID,A0
CLR A1
NOT A1
MOVI DMACNZ,A4
CALLA OBJECTS_ON
CLR A8
CLR A9
JRUC STORY_WAIT_GO
STORY_OFF_TEXT
MOVI GAMEOVEROID,A0
CLR A1
NOT A1
CALLA OBJECTS_OFF
MOVK 1,A9
CLR A8
STORY_WAIT_GO
DEC A11
JRLE STORY_XXX
MOVE @APLAYDONE,A0
JRZ STORY_WAIT
CLR A0
MOVE A0,@APLAYDONE,W ; SIMPLE HANDSHAKING FOR LOCKUP
SLEEPK 3 ; GIVE OBJECT SYSTEM A SECOND TO WORK
MOVI GAMEOVEROID,A0 ; KILL OFF THE "GAME OVER"
CALLA KILOBJ_ALL ; LATER, DUDES!
SLEEP 60
STORY_XXX
CLR A0
MOVE A0,@STORY_MODE,W
RETP
**************************************************************************
* *
* PARADE *
* *
* START ALL THE BIG DINOS WALKING IN *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
PARADE:
CLR A8
CREATE PARADE_PID,BIG_DINO_WALK
SLEEP 200
MOVK 1,A8
CREATE PARADE_PID,BIG_DINO_WALK
SLEEP 250
MOVK 2,A8
CREATE PARADE_PID,BIG_DINO_WALK
SLEEP 200
MOVK 3,A8
CREATE PARADE_PID,BIG_DINO_WALK
SLEEP 300
RETP
TEXT_CHANGE:
MMTM SP,A0,A1
MOVI TEXTOID,A0
MOVI GAMEOVEROID,A1
CALLA CHANGOID ; CLEAN OUT ALL THE TEXT THINGS
MMFM SP,A0,A1
RETS
TEXT_DELETE:
MMTM SP,A0,A1
MOVI GAMEOVEROID,A0 ; TIME IS IN THIS OID
CLR A1
NOT A1
CALLA KILOBJ ; LATER, DUDES!
MMFM SP,A0,A1
RETS
**************************************************************************
* *
* THE_BIG_GUY *
* *
* BRING OUT THE BIG MAN *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
ASCENDTIME EQU 30
DESCENDTIME EQU 30
TROGHEIGHT EQU 190
PTBODY EQU PDATA ; TROG BODY
PTHAND EQU PTBODY+32 ; HAND/ARM
PTBROW EQU PTHAND+32 ; BROW
PTBLINK EQU PTBROW+32 ; BLINKERS
THE_BIG_GUY:
CALLA CLRPDATA
*GNP CHANGES 5/23/90
MOVI TROGPARTS,A5 ; BASE BODY
CALLA MULTI_MAKE
JRZ BIG_GUY_DIE
MOVE A8,*A13(PTBODY),L
*END GNP CHANGES
CALLR BUILD_PARTS ; BUILD UP THE REST OF HIM
JRZ BIG_GUY_DIE
CALLR TROG_INS ; GET HIM ON THE OBJECT LIST
MOVI [TROGHEIGHT,0],A2 ; DISTANCE TO TRAVEL
CLR A3
MOVI ASCENDTIME,A4 ; 20 TICKS TO GET UP
CALLA SLINEVEL
CALLR SET_VELS ; GET ALL THOSE PARTS MOVING
MOVE *A13(PTBLINK),A8,L
CREATE INDPIDW,TROG_BLINK ; FIRE OFF THE BLINKER
MOVE *A13(PTBODY),A8,L
SLEEP ASCENDTIME
CLR A1
CLR A2
CALLR SET_VELS
;
; HERE WE ARE AT THE TOP
;
SLEEPK 30 ; BLINK A COUPLE OF TIMES
MOVE *A13(PTBROW),A8,L
MOVI BTROGBROWRISE,A9
MOVK 1,A1
JSRP FRANIM
SLEEPK 20
MOVE *A13(PTHAND),A8,L ; HAND OBJECT
CREATE INDPIDW,TROG_WAVE
SLEEP 120 ; GIVE HAND TIME TO WAVE AND GET DOWN
;
; DROP BACK DOWN
;
CLR A2
MOVI [TROGHEIGHT,0],A3 ; DISTANCE TO TRAVEL
MOVI DESCENDTIME,A4 ; 20 TICKS TO GET UP
CALLA SLINEVEL
CALLR SET_VELS ; GET ALL THOSE PARTS MOVING
SLEEP DESCENDTIME
CLR A1
CLR A2
CALLR SET_VELS
CALLR TROG_DELETE
BIG_GUY_DIE
DIE
**************************************************************************
* *
* TROG_BLINK *
* *
* START HIS MAJESTY'S EYE BLINKING *
* *
* ENTRY *
* A8 POINTER TO BLINKER OBJECT ( NOT ON OBJECT LIST ) *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
TROG_BLINK:
MOVI BLINKSLEEP,A10
CALLA OBJ_OFF ; MAKE SURE IT IS TURNED OFF
; MOVE A8,A0
; CALLA INSOBJ
TROG_BLINK_LOOP
CALLA OBJ_ON
MOVI BTROGBLINK,A9
MOVK 1,A1
JSRP FRANIM
CALLA OBJ_OFF
MOVE *A10+,A0,W
JRZ TROG_BLINK_DIE
SLEEPR A0
JRUC TROG_BLINK_LOOP
TROG_BLINK_DIE
DIE
BLINKSLEEP
.WORD 5,15,115,5,5,0
**************************************************************************
* *
* TROG_WAVE *
* *
* START THE OLD TROGSTER WAVING *
* *
* ENTRY *
* A8 POINTER TO HAND OBJECT *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
TROG_WAVE:
MOVI BTROGWAVE,A9
MOVK 1,A1
JSRP FRANIM
DIE
**************************************************************************
* *
* BUILD_PARTS *
* *
* CREATE OBJECTS FOR ALL OF TROGS PARTS *
* *
* ENTRY *
* A8 BASE OBJECT *
* *
* EXIT *
* A8 ZERO IF SOMETHING WENT WRONG *
* *
**************************************************************************
*GNP CHANGES 5/23/90
BUILD_PARTS:
MMTM SP,A0,A1,A2,A3
MOVI [256,200],A3
CALLA OBJ_TO_PNT
MOVI 7FFF000CH,A1
CALLA STORE_ZVAL
BUILD_LOOP_DONE
MOVI TROGHAND,A14
CALLA GPALOBJSTF
JRZ BUILD_FAIL
MOVI 7FFF000DH,A14
MOVE A14,*A0(OZVAL),L
MOVE A0,*A13(PTHAND),L
MOVI TROGBROW,A14
CALLA GPALOBJSTF
JRZ BUILD_FAIL
MOVI 7FFF000FH,A14
MOVE A14,*A0(OZVAL),L
MOVE A0,*A13(PTBROW),L
MOVI TROGBLINK,A14
CALLA GPALOBJSTF
JRZ BUILD_FAIL
MOVI 7FFF000EH,A14
MOVE A14,*A0(OZVAL),L
MOVE A0,*A13(PTBLINK),L
JRUC BUILD_DONE
BUILD_FAIL
CALLR TROG_DELETE
CLR A8
BUILD_DONE
MOVE A8,A8 ; MAKE SURE FLAGS ARE SET
MMFM SP,A0,A1,A2,A3
RETS
**************************************************************************
* *
* TROG_INS *
* *
* INSERT ALL THE REGULAR TROG PARTS ON THE OBJECT LIST *
* *
* ENTRY *
* A8 HEAD OF OBJECT *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
TROG_INS:
MMTM SP,A0,A8
CALLA INSERT_OBJ
MOVE *A13(PTHAND),A0,L
JRZ TROG_INS_2
CALLA INSOBJ
TROG_INS_2
MOVE *A13(PTBROW),A0,L
JRZ TROG_INS_3
CALLA INSOBJ
TROG_INS_3
MOVE *A13(PTBLINK),A0,L
JRZ TROG_INS_DONE
MOVE A0,A8
CALLA OBJ_OFF ; INSURE IT IS TURNED OFF!
CALLA INSOBJ
TROG_INS_DONE
MMFM SP,A0,A8
RETS
**************************************************************************
* *
* TROG_DELETE *
* *
* DELETE ALL POSSIBLE TROG PARTS *
* *
* ENTRY *
* NOTHING *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
TROG_DELETE:
MMTM SP,A0,A8
MOVE *A13(PTBODY),A8,L
JRZ TROG_DELETE_PARTS
CALLA DELETE_OBJ
TROG_DELETE_PARTS
MOVE *A13(PTHAND),A8,L
JRZ TROG_DELETE_PARTS_2
CALLA DELETE_OBJ
TROG_DELETE_PARTS_2
MOVE *A13(PTBROW),A8,L
JRZ TROG_DELETE_PARTS_3
CALLA DELETE_OBJ
TROG_DELETE_PARTS_3
MOVE *A13(PTBLINK),A8,L
JRZ TROG_DELETE_DONE
CALLA DELETE_OBJ
TROG_DELETE_DONE
MMFM SP,A0,A8
RETS
**************************************************************************
* *
* SET_VELS *
* *
* SETUP ALL THE VELOCITIES FOR SOME OBJECTS *
* *
* ENTRY *
* A1 X VEL *
* A2 Y VEL *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
SET_VELS:
MMTM SP,A8
MOVE *A13(PTBODY),A8,L
JRZ SET_VEL_LOOP_DONE
***SET_VEL_LOOP
MOVE A1,*A8(OXVEL),L
MOVE A2,*A8(OYVEL),L
*** MOVE *A8(OMLINK),A8,L
*** JRNZ SET_VEL_LOOP
SET_VEL_LOOP_DONE
MOVE *A13(PTHAND),A8,L
JRZ SET_VEL_2
MOVE A1,*A8(OXVEL),L
MOVE A2,*A8(OYVEL),L
SET_VEL_2
MOVE *A13(PTBROW),A8,L
JRZ SET_VEL_3
MOVE A1,*A8(OXVEL),L
MOVE A2,*A8(OYVEL),L
SET_VEL_3
MOVE *A13(PTBLINK),A8,L
JRZ SET_VEL_DONE
MOVE A1,*A8(OXVEL),L
MOVE A2,*A8(OYVEL),L
SET_VEL_DONE
MMFM SP,A8
RETS
TROGPARTS:
.LONG DUMCOLL,0
.WORD DMAWNZ,ATTOID
.LONG BTRHED
.LONG DUMCOLL,0
.WORD DMAWNZ,ATTOID
.LONG BTRBEARD
.LONG DUMCOLL,0
.WORD DMAWNZ,ATTOID
.LONG BTRHAIR
.LONG DUMCOLL,0
.WORD DMAWNZ,ATTOID
.LONG BTREYE
.LONG DUMCOLL,0
.WORD DMAWNZ,ATTOID
.LONG BTRTEETH
.LONG 0
TROGBROW:
.LONG [200,0],[264,0] ; START EYEBROW DOWN
.WORD 0,ATT_ZPOS+30
.LONG BTRBROW,[5,10],DUMCOLL
.WORD DMAWNZ,ATTOID
TROGHAND:
.LONG [200,0],[256,0]
.WORD 0,ATT_ZPOS+10
.LONG BTRHAND5,[5,10],DUMCOLL
.WORD DMAWNZ,ATTOID
TROGBLINK:
.LONG [200,0],[256,0]
.WORD 0,ATT_ZPOS+20
.LONG BTRBLINK1,[5,10],DUMCOLL
.WORD DMAWNZ,ATTOID
*END GNP CHANGES
**************************************************************************
* *
* BIG_DINO_WALK *
* *
* ANIMATE A BIG DINO ONTO THE SCREEN AND THEN INTO HIS CORNER *
* (WITH PROPER INTRODUCTIONS) *
* *
* ENTRY *
* A8 NUMBER OF DINO *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
PBASEOBJ EQU DFURTHEST ; BASE OBJECT
PHEADOBJ EQU PBASEOBJ+32 ; HEAD OBJECT
PTUNGOBJ EQU PHEADOBJ+32 ; TONGUE ( FOR BLOOP )
PFALLDIR EQU PTUNGOBJ+32 ; DIRECTION TO FALL IN
DINOLEFTWALK EQU 180
DINORIGHTWALK EQU 180
BIG_DINO_WALK:
CALLA CLRPDATA
MOVE A8,*A13(PFALLDIR),W
SLL 5,A8
MOVE A8,A9
MOVE A8,A14
ADDI DINOHEADOBJ,A14
MOVE *A14,A14,L
CALLA GPALOBJSTF
MOVE A0,*A13(PHEADOBJ),L ; SAVE IT AWAY
;
MOVE A9,A14
CLR A0
ADDI DINOTUNGOBJ,A14
MOVE *A14,A14,L
JRZ NO_TUNG_CREATE
CALLA GPALOBJSTF
NO_TUNG_CREATE
MOVE A0,*A13(PTUNGOBJ),L
;
MOVE A9,A14
ADDI DINOBASEOBJ,A14
MOVE *A14,A14,L
CALLA GPALOBJSTF
MOVE A0,*A13(PBASEOBJ),L
MOVE A0,A8
MOVE A9,A0
ADDI DINOPALTAB,A0
MOVE *A0,A0,L
CALLA GETFPAL
MOVE A0,*A8(OPAL),W ; SET A GOOD PALETTE
MOVE A8,A0 ; RESTORE OBJECT
CALLA INSOBJ ; INSERT BASE DINO ON LIST
MOVE A0,A8
MOVE *A13(PFALLDIR),A0,W
ANDI 1,A0
JRZ BIG_STAGE_LEFT
MOVI [0,440],A2
MOVI [0,200],A3
MOVI DINORIGHTWALK,A4
CALLA SLINEVEL
MOVE A1,*A8(OXVEL),L
MOVE A2,*A8(OYVEL),L
MOVI BSPIKELF,A9
MOVI [0,(256*45)+2],A1 ; THIS MANY FRAMES
JRUC BIG_DINO_GO
BIG_STAGE_LEFT
CLR A2
MOVI [0,200],A3
MOVI DINOLEFTWALK,A4
CALLA SLINEVEL
MOVE A1,*A8(OXVEL),L
MOVE A2,*A8(OYVEL),L
MOVI [0,(256*45)+2],A1 ; THIS MANY FRAMES
MOVI BSPIKERT,A9
BIG_DINO_GO
JSRP FRANIM ; WALK TO CENTER STAGE
CLR A1
MOVE A1,*A8(OXVEL),L ; STOPPING THEM MIGHT BE NICE
MOVE A1,*A8(OYVEL),L
;
; SO HERE WE ARE, STANDING AT CENTER STAGE
;
CALLR TEXT_DELETE
MOVE *A13(PFALLDIR),A8,W
; CMPI 3,A8 ; GWEN CHECK
; JRNZ BIG_DINO_TX1
; MOVI TROG_AND,A8
; JSRP SHADOWTEXT
; CALLA LM_SETUP
; JSRP PRINTF
; CALLR TEXT_CHANGE
; SLEEP 30
; CALLR TEXT_DELETE
; MOVE *A13(PFALLDIR),A8,W
;BIG_DINO_TX1
SLL 5,A8
ADDI TROG_STORY_TAB,A8
MOVE *A8,A8,L
BIG_DINO_TEXT
CALLA LM_SETUP
JSRP PRINTF
CALLR TEXT_CHANGE
MOVE *A13(PBASEOBJ),A8,L ; RESTORE BASE
MOVI BSPSTP3,A1 ; START TURN
MOVE *A8(OFLAGS),A4,W
CALLA ANI
SLEEPK 4
CALLA GETANIXY ; LOCATION OF BODY INTO A2/A3
MOVE *A13(PHEADOBJ),A8,L ; GET THE HEAD
MOVE *A13(PFALLDIR),A0,W
ANDI 1,A0
JRZ NO_HEAD_FLIP
MOVE *A8(OIMG),A1,L ; OLD IMAGE
MOVE *A8(OFLAGS),A4,W
ORI M_FLIPH,A4 ; WANT IT FLIPPED, DUDE!
CALLA ANI
NO_HEAD_FLIP
SRL 16,A3
MOVY A2,A3
CALLA OBJ_TO_PNT
MOVE A8,A0
CALLA INSOBJ
MOVE *A13(PTUNGOBJ),A8,L
JRZ NO_TUNG
MOVE *A13(PFALLDIR),A0,W
ANDI 1,A0
JRZ NO_TUNG_FLIP
MOVE *A8(OIMG),A1,L
MOVE *A8(OFLAGS),A4,W
ORI M_FLIPH,A4 ; WANT IT FLIPPED, DUDE!
CALLA ANI
NO_TUNG_FLIP
CALLA OBJ_TO_PNT
MOVE A8,A0
CALLA INSOBJ
NO_TUNG
MOVE *A13(PBASEOBJ),A8,L
MOVI BSPTORP2,A1
MOVE *A8(OFLAGS),A4,W
CALLA ANI
SLEEP 60
MOVE *A13(PHEADOBJ),A8,L
; CALLA OBJ_OFF
; MOVE A8,A0
; CALLA DELOBJ
CALLA DELETE_OBJ
MOVE *A13(PTUNGOBJ),A8,L
JRZ NO_TUNG_DELETE
; CALLA OBJ_OFF
; MOVE A8,A0
; CALLA DELOBJ
CALLA DELETE_OBJ
NO_TUNG_DELETE
;
; NOW MAKE THE GUY FALL DOWN
;
CALLR TEXT_DELETE
MOVE *A13(PBASEOBJ),A8,L ; GET THE BASE OBJECT BACK
MOVI ATT_ZPOS-10,A0
MOVE A0,*A8(OZPOS),W ; MAKE HIM FALL BEHIND DINOS
CALLA GETANIXY
SRL 16,A3
MOVX A3,A2 ; STARTING POINT
MOVE *A13(PFALLDIR),A0,W
SLL 5,A0
ADDI DINOSTARTTAB,A0
MOVE *A0,A3,L
MOVI 10*4,A4 ; 10 FRAMES
CALLA SLINEVEL
MOVE A1,*A8(OXVEL),L
MOVE A2,*A8(OYVEL),L
MOVI BSPIKEFALL,A9
MOVK 1,A1
JSRP FRANIM ;LOAD THE NEW FRAME
CLR A1
MOVE A1,*A8(OXVEL),L ; STOPPING THEM MIGHT BE NICE
MOVE A1,*A8(OYVEL),L
MOVE *A13(PFALLDIR),A0,W
SLL 5,A0
ADDI DINO_OBJECTS,A0
MOVE A8,*A0,L
SLEEP 60
DIE
DINOBASEOBJ
.LONG REXINIT, BLOOPINIT, SPIKEINIT, GWENINIT
DINOHEADOBJ
.LONG REXHEADINIT, BLOOPHEADINIT, SPIKEHEADINIT, GWENHEADINIT
DINOTUNGOBJ
.LONG 0,BLOOPTUNGINIT, 0, 0
DINOPALTAB
.LONG RED16, BLUE16, YELLOW16, PINK16
DINOSTARTTAB:
.LONG [65,77]
.LONG [184,77]
.LONG [65,310]
.LONG [184,310]
DINO_POS_Y EQU 145
REXINIT:
.LONG [0,0],[DINO_POS_Y,0]
.WORD 0,ATT_ZPOS
.LONG BSPWP4F1,[5,10],DUMCOLL
.WORD DMAWNZ,ATTOID
BLOOPINIT:
.LONG [440,0],[DINO_POS_Y,0]
.WORD 0,ATT_ZPOS
.LONG BSPWP4F1,0,DUMCOLL
.WORD DMAWNZ,ATTOID
SPIKEINIT:
; .LONG [440,0],[DINO_POS_Y,0]
.LONG [0,0],[DINO_POS_Y,0]
.WORD 0,ATT_ZPOS
.LONG BSPWP4F1,0,DUMCOLL
.WORD DMAWNZ,ATTOID
GWENINIT:
.LONG [440,0],[DINO_POS_Y,0]
.WORD 0,ATT_ZPOS
.LONG BSPWP4F1,0,DUMCOLL
.WORD DMAWNZ,ATTOID
REXHEADINIT:
.LONG [100,0],[DINO_POS_Y,0]
.WORD 0,ATT_ZPOS+20
.LONG REXHED,0,DUMCOLL
.WORD DMAWNZ,ATTOID
BLOOPHEADINIT:
.LONG [100,0],[DINO_POS_Y,0]
.WORD 0,ATT_ZPOS+20
.LONG BLOOPHED,0,DUMCOLL
.WORD DMAWNZ,ATTOID
SPIKEHEADINIT:
.LONG [100,0],[DINO_POS_Y,0]
.WORD 0,ATT_ZPOS+20
.LONG SPIKEHED,0,DUMCOLL
.WORD DMAWNZ,ATTOID
GWENHEADINIT:
.LONG [100,0],[DINO_POS_Y,0]
.WORD 0,ATT_ZPOS+20
.LONG GWENHED,0,DUMCOLL
.WORD DMAWNZ,ATTOID
BLOOPTUNGINIT:
.LONG [100,0],[DINO_POS_Y,0]
.WORD 0,ATT_ZPOS+40
.LONG blooptung,0,DUMCOLL
.WORD DMAWNZ,ATTOID
TOP_TEXT_Y EQU 68
TROG_STORY1:
MESS_MAC RD15FONT,1,196,TOP_TEXT_Y,TROG_PWHITE,STRCNRMOS,0
.STRING "\f\dL\f\dong, long ago"
.STRING "\nin a land named OG -",0
.LONG [-6,-1]
.LONG RD20FONT
.LONG [6,1]
.LONG RD15FONT
.EVEN
TROG_STORY2:
MESS_MAC RD15FONT,1,196,TOP_TEXT_Y,TROG_PWHITE,STRCNRMOS,0
.STRING "\f\dT\f\dhere lived a one-eyed caveman"
.STRING "\nby the name of \bTROG !",0
.LONG [-6,-1]
.LONG RD20FONT
.LONG [6,1]
.LONG RD15FONT
.WORD TROG_RED
.EVEN
TROG_STORY3:
MESS_MAC RD15FONT,1,196,TOP_TEXT_Y,TROG_PWHITE,STRCNRMOS,0
.STRING "\f\dA\f\dnd in that land"
.STRING "\nthere lived four friends -",0
.LONG [-6,-1]
.LONG RD20FONT
.LONG [6,1]
.LONG RD15FONT
.EVEN
.IF 0
TROG_STORY41:
MESS_MAC RD15FONT,1,196,TOP_TEXT_Y,TROG_PWHITE,STRCNRMOS,0
.STRING "When they've picked up their \beggs,\b",0
.WORD TROG_BLUE
.WORD TROG_WHITE
.EVEN
TROG_STORY42:
MESS_MAC RD15FONT,1,196,TOP_TEXT_Y,TROG_PWHITE,STRCNRMOS,0
.STRING "\nYou'll see them smile and shout -",0
.EVEN
TROG_STORY51:
MESS_MAC RD15FONT,1,196,TOP_TEXT_Y,TROG_PWHITE,STRCNRMOS,0
.STRING "'cause leading Dinos \bhome\b",0
.WORD TROG_BLUE
.WORD TROG_WHITE
.EVEN
TROG_STORY52:
MESS_MAC RD15FONT,1,196,TOP_TEXT_Y,TROG_PWHITE,STRCNRMOS,0
.STRING "\nis what the game's about !!",0
.EVEN
.ENDIF
TROG_GAME_OVER:
MESS_MAC RD7FONT,1,198,244,TROG_PWHITE,STRCNRMOS,0
.STRING "GAME OVER",0
.EVEN
TROG_STORY_TAB:
.LONG TROG_STORY_REX, TROG_STORY_BLOOP, TROG_STORY_SPIKE
.LONG TROG_STORY_GWEN
TROG_STORY_REX:
MESS_MAC RD20FONT,1,200,TOP_TEXT_Y+9,TROG_PRED,STRCNRMOS,0
.STRING "REX",0
.EVEN
TROG_STORY_BLOOP:
MESS_MAC RD20FONT,1,200,TOP_TEXT_Y+9,TROG_PWHITE,STRCNRMOS,0
.STRING "\f\dand\f\d \bBLOoP",0
.LONG [3,0]
.LONG RD15FONT
.LONG [-3,0]
.LONG RD20FONT
.WORD TROG_BLUE
.EVEN
TROG_STORY_SPIKE:
MESS_MAC RD20FONT,1,200,TOP_TEXT_Y+9,TROG_PYELLOW,STRCNRMOS,0
.STRING "SPIKE",0
.EVEN
TROG_STORY_GWEN:
MESS_MAC RD20FONT,1,200,TOP_TEXT_Y+9,TROG_PWHITE,STRCNRMOS,0
.STRING "\f\dand\f\d \bGWEN",0
.LONG [3,0]
.LONG RD15FONT
.LONG [-3,0]
.LONG RD20FONT
.WORD TROG_PURPLE
.EVEN
**************************************************************************
* *
* UTILITY ROUTINES *
* *
**************************************************************************
**************************************************************************
* *
* ATTGAMESTART *
* *
* START UP AN ATTRACT MODE GAME *
* *
* ENTRY *
* A2 PLAYER DATA AREA *
* *
* EXIT *
* NOTHING *
* *
**************************************************************************
ATTGAMESTART:
MMTM A12,A8,A9,A10,A11
CALLA WIPEOUT
MOVK 1,A0
MOVE A0,@STORY_MODE,W ; WIPEOUT WIPES ME
CALLA GRAMINIT ;INITIALIZE GAME RAM
CALLA GAME_DIFFICULTY ;INITIALIZE GAME DIFFICULTY PARAMS
MOVK 1,A0 ;THESE 2 INSTRUCTIONS AFTER CLRALLPD
MOVE A0,*A2(PENTER),W ;YEAH! DUDE IS READY TO PLAY!
MOVK 1,A0
MOVE A0,*A2(PLIVES),W
CREATE INDPIDW,SCORPROC ;START UP THE PUSH PLAYER START PROCESS
DISPON ;DISPLAY SYSTEM BACKON
JSRP GAME_INTRO
; MOVK 1,A0
; MOVE A0,@WAVE
; JSRP WAVE_START ;DO THE WAVE INITIALIZATION
MMFM A12,A8,A9,A10,A11
RETP
.IF 0
**************************************************************************
* *
* ENEMIES PAGE *
* *
**************************************************************************
BASELINE1 EQU 75
BASELINE2 EQU 152
TITLE1 EQU BASELINE1-24
TITLE2 EQU BASELINE2-24
TEXT1 EQU BASELINE1+20
TEXT2 EQU BASELINE2+24
BASE_X EQU 18
BASE_Y EQU 13
ATT_ENEMY:
CALLA WIPEOUT
DISPOFF ; INSURE DISPLAY IS REALLY OFF
CLR A0
MOVE A0,@SCRNTL,L ;RE-ADJUST TOP LEFT CORNER OF SCREEN
MOVI 0F0F0F0FH,A0
CALLA FILL_SCRN ;LET'S MAKE IT HAPPEN
CLR A0
MOVE A0,@IRQSKYE,W
MOVK 21,A0
MOVE A0,@SKYCOLOR,W
MOVK 3,A0
MOVE A0,@GAMERASE,W ;AUTO ERASE ON
MOVI TROGBLACKBOARD,A14
MOVE A14,@BAKMODS,L ; SETUP THE BACKGROUND
CALLA BGND_UD1
MOVE @BAKLST,A14,L
MOVE A14,@OBJLST,L ; COPY BACKGROUND OBJECTS TO FOREGND
CLR A14
MOVE A14,@BAKLST,L ; LATER ON THE BACKGND OBJECTS
;
; SETUP ALL THE WINDOWS
;
MOVK 1,A0 ; TICKS TO OPEN IN
MOVI 55,A1 ; ZPOS
MOVI [213,318],A8 ; W,H
MOVI [108+BASE_Y,172+BASE_X],A10 ; CENTER
JSRP OWINDOW
JRZ SHOW_DIE
MOVI NOYLAND1,A0
CALLA GETFPAL
MOVE A0,*A8(OPAL),W ; SET A GOOD PALETTE
MOVI 0303H,A0
MOVE A0,*A8(OCONST),W
;
MOVK 1,A0 ; TICKS TO OPEN IN
MOVI 50,A1 ; ZPOS
MOVI [220,333],A8 ; W,H
MOVI [104+BASE_Y,173+BASE_X],A10 ; CENTER
JSRP OWINDOW
JRZ SHOW_DIE
MOVI trogcol,A0
CALLA GETFPAL
MOVE A0,*A8(OPAL),W ; SET A GOOD PALETTE
MOVE A0,@TEMPNUM,W
MOVI 0A0AH,A0
MOVE A0,*A8(OCONST),W
;
MOVK 1,A0 ; TICKS TO OPEN IN
MOVI 60,A1 ; ZPOS
MOVI [8,345],A8 ; W,H
MOVI [217+BASE_Y,173+BASE_X],A10 ; CENTER
JSRP OWINDOW
JRZ SHOW_DIE
MOVE @TEMPNUM,A9,W
MOVE A9,*A8(OPAL),W ; SET A GOOD PALETTE
MOVI 0808H,A0
MOVE A0,*A8(OCONST),W
;
MOVK 1,A0 ; TICKS TO OPEN IN
MOVI 60,A1 ; ZPOS
MOVI [8,345],A8 ; W,H
MOVI [224+BASE_Y,173+BASE_X],A10 ; CENTER
JSRP OWINDOW
JRZ SHOW_DIE
MOVE @TEMPNUM,A9,W
MOVE A9,*A8(OPAL),W ; SET A GOOD PALETTE
MOVI 0B0BH,A0
MOVE A0,*A8(OCONST),W
;
MOVI STUFF_MESS,A8
JSRP LM_PRINTF
MOVI CREDIT_TEXT,A8
CALLA LM_SETUP
CALLA GET_CSTR ; GET THE CREDIT STRING
JSRP PRINTF ; PRINT THE SCORE THING
;
; FADE UP THE WORLD
;
MOVI 600H,A9
CREATE SKYPID,SKYUP ; FADE UP THE SKY
CLR A0
CALLA FADEIN
SLEEPK 3
DISPON
SLEEP 60
MOVI TEXTOID,A0
MOVI ATTOID,A1
CALLA CHANGOID ; CLEAN OUT ALL THE TEXT THINGS
;
; NOW INSTRUCT THE GUY ON ENEMY ETIQUETTE
;
MOVI TEXT_TABLE,A2
TELOOP:
MOVE *A2+,A7,L ; OBJECT PROCESS
JRZ TEDONE
MOVI INDPID,A1
CALLA GETPRC ; FORK IT OFF
;
MOVI TEXT_BASE_TEXT,A8
CALLA LM_SETUP
MOVI TROG_PWHITE,A5
MOVE *A2+,A9,L
JRZ TEDONE
MOVE *A2+,A8,L
JSRP PRINTF
;
MOVI TITLE_BASE_TEXT,A8
CALLA LM_SETUP
MOVI TROG_PWHITE,A5
MOVE *A2+,A9,L
MOVE *A2+,A8,L
JSRP PRINTF
PUSHP A2
SLEEP 120
PULLP A2
;
MOVI TEXTOID,A0 ; TIME IS IN THIS OID
CLR A1
NOT A1
CALLA KILOBJ ; LATER, DUDES!
;
; NOW PLOT IN REAL COLORS
;
SUBI (4*32),A2 ; BACKUP A FEW
MOVI TEXT_BASE_TEXT,A8
CALLA LM_SETUP
MOVE *A2+,A9,L
MOVE *A2+,A8,L
JSRP PRINTF
;
MOVI TITLE_BASE_TEXT,A8
CALLA LM_SETUP
MOVE *A2+,A9,L
MOVE *A2+,A8,L
JSRP PRINTF
;
CALLR TEXT_CHANGE
JRUC TELOOP
TEDONE:
SLEEP 120
SHOW_DIE
RETP
SETANDSHOW
MOVE A0,A8
MOVE *A8(OFLAGS),A4
CALLA ANI
CALLA OBJ_TO_PNT
CALLA INSOBJ
RETS
ENEMY_FLOWER:
MOVI FLOWERINIT,A14
MOVI SPEED4,A1
MOVI [BASELINE1,100],A3
JRUC ENEMY_GOFORIT
ENEMY_MUSHROOM:
MOVI SHROOMINIT,A14
MOVI SHROOM4,A1
MOVI [BASELINE1,185],A3
JRUC ENEMY_GOFORIT
ENEMY_PIT:
MOVI PITINIT,A14
MOVI OGPIT11,A1
MOVI [BASELINE2,185],A3
ENEMY_GOFORIT:
CALLA GPALOBJSTF
JRZ SHOW_DIE
MOVI 12C0000H,A14
MOVE A14,*A0(OZVAL),L
CALLR SETANDSHOW
DIE
ENEMY_PINEAPPLE:
MOVI PINEAPPLEINIT,A14
CALLA GPALOBJSTF
JRZ ENEMY_DIE
MOVE A0,*A9,L
MOVI 12C0000H,A14
MOVE A14,*A0(OZVAL),L
MOVI PAPPLE6a,A1
MOVI [BASELINE1,268],A3
CALLR SETANDSHOW
MOVE A0,A8
MOVI PINEAPPLESPIN,A9
MOVI [80H,3],A1
JSRP FRANIM ; SIT AND SPIN FOREEVER
ENEMY_FIRE:
MOVI FIREINIT,A14
CALLA GPALOBJSTF
JRZ ENEMY_DIE
MOVI 12C0000H,A14
MOVE A14,*A0(OZVAL),L
ADDI 32,A9
MOVE A0,*A9,L
MOVI FLAMESM2,A1
MOVI [BASELINE2+1,98],A3
CALLR SETANDSHOW
MOVE A0,A8
MOVI FIRE_ANIMII,A9
MOVK 1,A1
JSRP FRANIM
ENEMY_TAR
MOVI TARINIT,A14
CALLA GPALOBJSTF
JRZ ENEMY_DIE
MOVI 12C0000H,A14
MOVE A14,*A0(OZVAL),L
ADDI 64,A9
MOVE A0,*A9,L
MOVI TAR1a,A1
MOVI [BASELINE2+2,268],A3
CALLR SETANDSHOW
MOVE A0,A8
MOVI TAR_ANIM1,A9
MOVK 1,A1
JSRP FRANIM
ENEMY_DIE
DIE
STUFF_MESS:
MESS_MAC RD15FONT,2,191,23,TROG_PWHITE,STRCNRMOS,0
.STRING "STUFF YOU SHOULD KNOW :",0
.EVEN
.IF 0
TROG_TEXT:
MESS_MAC RD7FONT,1,196,SKYTOPOF+140,TROG_PWHITE,STRCNRMOS,0
.STRING "HE'S HUNGRY \a!"
.STRING "\n\a\fAND ",0
.WORD 60
.WORD 0
.LONG [5,0]
.EVEN
TROG_TEXT2:
MESS_MAC RD7FONT,1,196,SKYTOPOF+175,TROG_PWHITE,STRCNRMOS,0
.STRING "HE EATS DINOS ! ! !",0
.EVEN
TROG_TITLE:
MESS_MAC RD20FONT,1,195,SKYTOPOF+70,TROG_PRED,STRCNRMOS,0
.STRING "TROG!",0
.EVEN
.ENDIF
CREDIT_TEXT:
MESS_MAC RD7FONT,1,198,244,TROG_PRED,STRCNRMOS,0
TITLE_BASE_TEXT:
MESS_MAC RD7FONT,1,198,244,TROG_PRED,STRCNRMOS,0
TEXT_BASE_TEXT:
MESS_MAC RD5FONT,1,198,244,TROG_PGREY,STRCNRMO,0
TEXT_TABLE:
.LONG ENEMY_FLOWER
.LONG [TEXT1,98],SP_TEXT
.LONG [TITLE1,98],SP_TITLE
.LONG ENEMY_MUSHROOM
.LONG [TEXT1,185],MU_TEXT
.LONG [TITLE1,187],MU_TITLE
.LONG ENEMY_PINEAPPLE
.LONG [TEXT1+5,264],PA_TEXT
.LONG [TITLE1,270],PA_TITLE
.LONG ENEMY_FIRE
.LONG [TEXT2,98],FI_TEXT
.LONG [TITLE2,98],FI_TITLE
.LONG ENEMY_PIT
.LONG [TEXT2,186],PI_TEXT
.LONG [TITLE2,186],PI_TITLE
.LONG ENEMY_TAR
.LONG [TEXT2,269],TP_TEXT
.LONG [TITLE2,269],TP_TITLE
.LONG 0
SP_TITLE
.STRING "SPEED PLANT",0
.EVEN
MU_TITLE
.STRING "MUSHROOM",0
.EVEN
PA_TITLE
.STRING "PINEAPPLE",0
.EVEN
FI_TITLE
.STRING "FIRE",0
.EVEN
PI_TITLE
.STRING "PIT",0
.EVEN
TP_TITLE
.STRING "TAR POOL",0
.EVEN
SP_TEXT
.STRING "SPEEDS"
.STRING "\nDINOS"
.STRING "\nUP!",0
.EVEN
MU_TEXT
.STRING "SLOWS"
.STRING "\nDINOS"
.STRING "\nDOWN!",0
.EVEN
PA_TEXT
.STRING "\d? ? ?",0
.LONG RD7FONT
.EVEN
FI_TEXT
.STRING "BURNS"
.STRING "\nDINOS"
.STRING "\nUP!",0
.EVEN
PI_TEXT
.STRING "DON'T"
.STRING "\nFALL"
.STRING "\nIN!",0
.EVEN
TP_TEXT
.STRING "DON'T"
.STRING "\nGET"
.STRING "\nSTUCK!",0
.EVEN
.ENDIF
**************************************************************************
* *
* OCTOPUS PAGE *
* *
**************************************************************************
OCTO_PAGE:
JSRP CREDITS_PAGE
CALLA WIPEOUT
DISPON
JSRP OCTO_PRINT_AUDS
SLEEPK 30 ; GET OFF THE STICKS, DUDE!
JSRP OCTO_SUBBER
JSRP OCTO_PRINT_AUDS_2
JSRP OCTO_SUBBER
JSRP OCTO_PRINT_AUDS_3
JSRP OCTO_SUBBER
JSRP OCTO_PRINT_AUDS_4
JSRP OCTO_SUBBER
JAUC WARMSET
OCTO_SUBBER
MOVI 2000,A0
JSRP SLEEP_SWITCHX
CALLA WIPEOUT
DISPON
RETP
CREDITS_PAGE:
CALLA WIPEOUT
MOVK 1,A0
MOVE A0,@ON_CRED,W
DISPON
CALLA CLR_SCRN
CLR A0
MOVE A0,@SCRNTL,L ; RE-ADJUST TOP LEFT CORNER OF SCREEN
MOVE A0,@GAMERASE,W ; AUTO ERASE OFF
CALLA AUTOEOFF
MOVI LOGOINIT,A14
CALLA MAKE_OBJ
JSRP CREDITS_TEXT
SLEEPK 30 ; WAIT FOR GUY TO GET OFF STICKS
MOVI 500,A0
JSRP SLEEP_SWITCHX
CLR A0
MOVE A0,@ON_CRED,W
RETP
**************************************************************************
* *
* CREDITS_TEXT - ROUTINE TO OUTPUT THE NAMES OF THE GAME! *
* WITH A BACKGROUND! *
* NOTE: CALL WITH JSRP *
* DESTROYS A0-A14 *
* *
**************************************************************************
CREDITS_TEXT
MOVI CREDITBGND,A14
MOVE A14,@BAKMODS,L ; SETUP THE BACKGROUND
CALLA BGND_UD1
SLEEPK 4
CLR A1
CALLA KILBOBJ ;STATIC BACKGROUND PLEASE
MOVI COPYRIGHTINIT,A14
CALLA MAKE_OBJ
MOVI OCTO_TEXT2,A8
JSRP LM_PRINTF
MOVI OCTO_TEXT3,A8
JSRP LM_PRINTF
MOVI OCTO_TEXT4,A8
JSRP LM_PRINTF
MOVI OCTO_TEXT5,A8
JSRP LM_PRINTF
MOVI OCTO_TEXT6,A8
JSRP LM_PRINTF
MOVI OCTO_TEXT7,A8
JSRP LM_PRINTF
MOVI OCTO_TEXT8,A8
JSRP LM_PRINTF
MOVI OCTO_TEXT8A,A8
JSRP LM_PRINTF
MOVI OCTO_TEXT9,A8
JSRP LM_PRINTF
MOVI OCTO_TEXT1,A8
JSRP LM_PRINTF
RETP
OCTO_TEXT1:
MESS_MAC RD7FONT,1,196,SKYTOPOF+185,DINO_PWHITE,STRCNRMS,0
.STRING "SPECIAL THANKS TO:"
.STRING "\nEUGENE JARVIS, TODD ALLEN AND LARRY DEMAR",0
.EVEN
OCTO_TEXT2:
MESS_MAC RD7FONT,1,196,SKYTOPOF+22,DINO_PGREY,STRCNRM,0
.STRING "\uGame Design\v"
.STRING "\b\nGeorge Petro"
.STRING "\nJack Haeger",0
.WORD DINO_WHITE
.EVEN
OCTO_TEXT3:
MESS_MAC RD7FONT,1,140,SKYTOPOF+66,DINO_PGREY,STRCNRM,0
.STRING "\uSOFTWARE\v"
.STRING "\b\nGEORGE PETRO"
.STRING "\nKURT MAHAN",0
.WORD DINO_WHITE
.EVEN
OCTO_TEXT4:
MESS_MAC RD7FONT,1,105,SKYTOPOF+29,DINO_PGREY,STRCNRM,0
.STRING "\uARTWORK &"
.STRING "\nPLAYMATION\v"
.STRING "\b\nJack Haeger",0
.WORD DINO_WHITE
.EVEN
OCTO_TEXT5:
MESS_MAC RD7FONT,1,285,SKYTOPOF+29,DINO_PGREY,STRCNRM,0
.STRING "\uMUSIC &"
.STRING "\nSOUNDS\v"
.STRING "\b\nCHRIS GRANNER",0
.WORD DINO_WHITE
.EVEN
OCTO_TEXT6:
MESS_MAC RD7FONT,1,140,SKYTOPOF+102,DINO_PGREY,STRCNRMS,0
.STRING "\uHardware\v"
.STRING "\b\nMark Loffredo"
.STRING "\nGlenn Shipp"
.STRING "\nCary Mednick"
.STRING "\nAl Lasko"
.STRING "\nRaymond Gay"
.STRING "\nSheridan Oursler",0
.WORD DINO_WHITE
.EVEN
OCTO_TEXT7:
MESS_MAC RD7FONT,1,260,SKYTOPOF+128,DINO_PGREY,STRCNRMS,0
.STRING "\uMarketing\v"
.STRING "\b\nLaura Rezek",0
.WORD DINO_WHITE
.EVEN
OCTO_TEXT8:
MESS_MAC RD7FONT,1,260,SKYTOPOF+66,DINO_PGREY,STRCNRM,0
.STRING "\uCABINET DESIGN\v"
.STRING "\b\nRAY CZAJKA",0
.WORD DINO_WHITE
OCTO_TEXT8A:
MESS_MAC RD7FONT,1,260,SKYTOPOF+91,DINO_PGREY,STRCNRM,0
.STRING "\uCABINET ARTWORK\v"
.STRING "\b\nLINDA DEAL"
.STRING "\nJACK HAEGER",0
.WORD DINO_WHITE
.EVEN
OCTO_TEXT9:
MESS_MAC RD7FONT,1,260,SKYTOPOF+153,DINO_PGREY,STRCNRMS,0
.STRING "\uPUBLICATIONS\v"
.STRING "\b\nKAREN TRYBULA",0
.WORD DINO_WHITE
.EVEN
**************************************************************************
* *
* DRAW_P_BORDER - DRAW A GIVEN PLAYERS BONUS BORDER. *
* A1 = [Y,X] OFFSET OF UPPER LEFT CORNER *
* A2 = PTR TO PLAYER DATA AREA. *
* NOTE: TRASHES A14 *
* *
**************************************************************************
DRAW_P_BORDER:
MMTM SP,A0,A3,A5
MOVI P1_BONUS_BORDER,A5
DPB_LP
CALLA CREATE_OBJ
JRZ DPB_X
MOVE *A0(OCVECT),A3,L
ADDXY A1,A3
CALLA OBJTOPNT
CALLA INSOBJ
MOVE *A5,A0,L
JRNZ DPB_LP
DPB_X
MMFM SP,A0,A3,A5
RETS
.DATA
**************************************************************************
* *
* BORDER MAPS *
* *
**************************************************************************
**************************************************************************
* *
* A BORDER MAP CONSISTS OF X CONTIGUOUS ELEMENTS, *
* EACH ELEMENT IS A CREATE_OBJ INIT TABLE. HOWEVER, THE OCVECT *
* IS USED AS A [Y,X] POSITION. NEVER LET OCVECT BE 0. *
* *
**************************************************************************
BBY .EQU 1
BBX .EQU 1
P1_BONUS_BORDER:
.LONG [BBY,BBX],0
.WORD DMAWNZ,BORDEROID
.LONG BART2
.LONG [BBY,BBX+224],0
.WORD DMAWNZ|M_FLIPH,BORDEROID
.LONG BART2
.LONG [BBY+98,BBX],0
.WORD DMAWNZ|M_FLIPV,BORDEROID
.LONG BART2
.LONG [BBY+98,BBX+224],0
.WORD DMAWNZ|M_FLIPH|M_FLIPV,BORDEROID
.LONG BART2
.LONG [BBY,BBX],0
.WORD DMAWNZ,BORDEROID
.LONG BARL2
.LONG [BBY,BBX+224],0
.WORD DMAWNZ|M_FLIPH,BORDEROID
.LONG BARL2
.LONG 0
TITLE_MODS:
.LONG TITLEBMOD
.WORD 67,-20+SKYTOPOF ;x = 0
.LONG 0FFFFFFFFH
TITLE2_MODS:
.LONG TITLE2BMOD
.WORD 0,49+SKYTOPOF ;x = 0
.LONG 0FFFFFFFFH
BALLYINIT:
.LONG [14,0],[11,0]
.WORD 0,0
.LONG BALLYMID,0,DUMCOLL
.WORD DMAWNZ,JUNKOID
PRESENTSINIT:
.LONG [48,0],[37,0]
.WORD 0,0
.LONG PRESENTS,0,DUMCOLL
.WORD DMAWNZ,JUNKOID
PLAYMATEINIT:
.LONG [143,0],[174,0]
.WORD 0,0
.LONG PLAYMATION,0,DUMCOLL
.WORD DMAWNZ,JUNKOID
**************************************************************************
* *
* ANIMATION STUFF FOR THE BIG DINOS *
* *
**************************************************************************
BSPIKELF:
.LONG BSPWP4F1
.WORD 4|FLIPBITS|SCRIPT,M_FLIPH
.LONG BSPIKELFRT
*
*WALK RIGHT
BSPIKERT:
.LONG BSPWP4F1
.WORD 4|FLIPBITS,0
BSPIKELFRT:
.LONG BSPWP4F2
.WORD 4
.LONG BSPWP4F3
.WORD 4
.LONG BSPWP4F4
.WORD 4
.LONG BSPWP4F5
.WORD 4
.LONG BSPWP4F6
.WORD 4
.LONG BSPWP4F7
.WORD 4
.LONG BSPWP4F1
.WORD 4|SCRIPT
.LONG BSPIKELFRT
BTROGWAVE:
.LONG BTRHAND5
.WORD 4
.LONG BTRHAND2
.WORD 4
.LONG BTRHAND1
.WORD 5
.LONG BTRHAND2
.WORD 5
.LONG BTRHAND1
.WORD 5
.LONG BTRHAND2
.WORD 5
.LONG BTRHAND1
.WORD 5
.LONG BTRHAND2
.WORD 5
.LONG BTRHAND1
.WORD 5
.LONG BTRHAND2
.WORD 5
.LONG BTRHAND1
.WORD 5
.LONG BTRHAND2
.WORD 5
.LONG BTRHAND1
.WORD 5
.LONG BTRHAND2
.WORD 5
.LONG BTRHAND1
.WORD 5
.LONG BTRHAND2
.WORD 5
.LONG BTRHAND1
.WORD 5
.LONG BTRHAND2
.WORD 5
.LONG BTRHAND1
.WORD 4
.LONG BTRHAND2
.WORD 4
.LONG BTRHAND5
.WORD 4
.LONG 0
BSPIKEFALL:
.LONG BSPSHP0F3
.WORD 4
.LONG BSPSHP0F4
.WORD 4
.LONG BSPSHP0F6
.WORD 4
.LONG BSPSHP0F7
.WORD 4
.LONG BSPSHP0F8
.WORD 4
.LONG BSPSHP0F9
.WORD 4
.LONG BSPSHP0F10
.WORD 4
.LONG BSPSHP0F11
.WORD 4
.LONG BSPSHP0F12
.WORD 4
.LONG BSPSHP0F13
.WORD 4
.LONG SPSTP0
.WORD 4
.LONG 0
BTROGBROWRISE:
.LONG BTRBROW
.WORD 2|DELTAY,-2
.LONG BTRBROW
.WORD 2|DELTAY,-2
.LONG BTRBROW
.WORD 2|DELTAY,-2
.LONG BTRBROW
.WORD 2|DELTAY,-3
.LONG BTRBROW
.WORD 2|DELTAY,-3
.LONG 0
BTROGBLINK
.LONG BTRBLINK1
.WORD 4
.LONG BTRBLINK2
.WORD 4
.LONG BTRBLINK1
.WORD 4
.LONG 0