2676 lines
52 KiB
NASM
2676 lines
52 KiB
NASM
.MLIB "GXMACS.LIB"
|
||
.FILE "GXHELI2.ASM"
|
||
.TITLE " <<< REVOLUTION X -- HELICOPTER ROUTINES PART 2 >>>"
|
||
.WIDTH 132
|
||
.OPTION B,D,L,T
|
||
.MNOLIST
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPYRIGHT (C) 1992 MIDWAY MANUFACTURING COMPANY. *
|
||
* ALL RIGHTS RESERVED. *
|
||
* *
|
||
**************************************************************************
|
||
|
||
.INCLUDE "GXENEMY.INC"
|
||
.INCLUDE "GXHELI.H"
|
||
.INCLUDE "GXHELI2.H"
|
||
.INCLUDE "GXCONTRL.H"
|
||
.INCLUDE "IMGTBL.GLO"
|
||
|
||
.TEXT
|
||
|
||
* SYMBOLS IN HERE
|
||
.DEF COPTER_ATTACK_1, COPTER_ATTACK_2, COPTER_ATTACK_3, COPTER_ATTACK_4, COPTER_ATTACK_5, COPTER_ATTACK_6, COPTER_ATTACK_FINAL
|
||
.DEF COPTER_APPROACH_SND_PROC, COPTER_FLY_1, COPTER_FLY_2, COPTER_FLY_2_1
|
||
.DEF COPTER_INTRO_2
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPTER_ON - START COPTER ANIMATIONS AND INSERT OBJECTS *
|
||
* *
|
||
* PASS: *
|
||
* A8 = HEAD COPTER OBJECT *
|
||
* *
|
||
**************************************************************************
|
||
|
||
COPTER_ON
|
||
MOVE @COPTER_OBJ,A14,L
|
||
CMP A8,A14
|
||
JRNE CON_SIDE ;BR=SIDE COPTER
|
||
|
||
MOVI FRONT_ANIMS,A2
|
||
MOVK GEAR,A1 ;FRONT BLADES
|
||
JRUC CON_STRTANIMS
|
||
CON_SIDE
|
||
MOVI SIDE_ANIMS,A2
|
||
MOVK SIDE_GEAR,A1 ;SIDE BLADES
|
||
CON_STRTANIMS
|
||
CALLA FINDPART
|
||
.if DEBUG
|
||
LOCKON Z
|
||
.else
|
||
JRZ CON_INSERT
|
||
.endif
|
||
MOVI BLADE_ANIM,A1
|
||
CALLA STRTANIM ;START BLADE ANIMATION
|
||
|
||
CON_ANIM_LUPE
|
||
MOVE *A2+,A1,W
|
||
JRZ CON_INSERT ;BR=NO MORE ANIMS, INSERT OBJECT
|
||
CALLA FINDPART
|
||
.if DEBUG
|
||
LOCKON Z
|
||
.else
|
||
JRZ CON_INSERT
|
||
.endif
|
||
MOVE A8,A3
|
||
|
||
MOVE A0,A8
|
||
MOVE *A0(ONORMAL_PAL),A0,L
|
||
JRZ CON_NOPAL ;BR=DON'T CHANGE DA PALETTE
|
||
CALLA CHANGE_PAL
|
||
CON_NOPAL
|
||
MOVE A8,A0
|
||
MOVE A3,A8
|
||
|
||
MOVE *A0(OATTACKANIM),A1,L
|
||
.if DEBUG
|
||
LOCKON Z
|
||
.else
|
||
JRZ CON_INSERT
|
||
.endif
|
||
CALLA STRTANIM ;START DA ANIMATION
|
||
JRUC CON_ANIM_LUPE
|
||
CON_INSERT
|
||
MOVE A8,A0
|
||
MOVI 02000200H,A14 ;OFF SCREEN
|
||
CON_OFF_LUPE
|
||
MOVE A14,*A0(ODAG),L
|
||
MOVE *A0(OPARTS),A0,L
|
||
JRNZ CON_OFF_LUPE ;BR=STILL MORE PARTS
|
||
|
||
JAUC INSERT_OBJ ;INSERT THE OBJECT
|
||
|
||
FRONT_ANIMS
|
||
.WORD LEFT_GUN, RGHT_GUN, LEFT_ROCKET, RGHT_ROCKET, BELLY_GUN, 0
|
||
|
||
SIDE_ANIMS
|
||
; .WORD GAT, BELLY, 0
|
||
.WORD 2, 4, 0
|
||
|
||
; .WORD GAT, MISSLE, BELLY, 0
|
||
; .WORD 2, 3, 4, 0
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPTER_OFF - STOP AND PULL COPTER ANIMATIONS AND OBJECTS *
|
||
* *
|
||
* PASS: *
|
||
* A8 = HEAD COPTER OBJECT *
|
||
* *
|
||
**************************************************************************
|
||
|
||
COPTER_OFF
|
||
PUSH A8
|
||
|
||
CLR A14
|
||
MOVE A14,*A8(OCOMMAND),W ;CLEAR COMMANDS
|
||
|
||
CALLA STOPOBJ
|
||
|
||
MOVE @COPTER_OBJ,A14,L
|
||
CMP A8,A14
|
||
JRNE COF_SIDE ;BR=SIDE COPTER
|
||
|
||
MOVI FRONT_ANIMS,A2
|
||
MOVK GEAR,A1 ;FRONT BLADES
|
||
JRUC COF_PULLANIMS
|
||
COF_SIDE
|
||
MOVI SIDE_ANIMS,A2
|
||
MOVK SIDE_GEAR,A1 ;SIDE BLADES
|
||
COF_PULLANIMS
|
||
CALLA FINDPART
|
||
.if DEBUG
|
||
LOCKON Z
|
||
.else
|
||
JRZ COF_PULL_LUPE
|
||
.endif
|
||
CALLA PULLANIM ;PULL BLADE ANIMATION
|
||
COF_PULL_LUPE
|
||
MOVE *A2+,A1,W
|
||
JRZ COF_PULL_OBJ ;BR=NO MORE ANIMS, PULL OBJECT
|
||
CALLA FINDPART
|
||
.if DEBUG
|
||
LOCKON Z
|
||
.else
|
||
JRZ COF_PULL_LUPE
|
||
.endif
|
||
MOVE *A0(AnimScr),A14,L
|
||
MOVE *A0(ODAMANIM),A3,L
|
||
CMP A3,A14
|
||
JRNE COF_PULL_ANIM ;BR=NOT IN DAMAGE ANIMATION
|
||
CLR A14
|
||
MOVE A14,*A0(AnimRetScr),L ;FLAG TO PULL ANIMATION
|
||
JRUC COF_CHECK_FLASH
|
||
COF_PULL_ANIM
|
||
CALLA PULLANIM ;PULL DA ANIMATION
|
||
COF_CHECK_FLASH
|
||
MOVE A0,A8
|
||
CALLA DELETE_FLASH ;DELETE GUN FLASH
|
||
JRUC COF_PULL_LUPE
|
||
COF_PULL_OBJ
|
||
PULLQ A8
|
||
CALLA PULL_OBJ
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPTER_APPROACH_SND_PROC - FADE UP COPTER SOUND DURING APPROACH *
|
||
* *
|
||
**************************************************************************
|
||
|
||
COPTER_APPROACH_SND_PROC
|
||
|
||
SOUND0 SND_COPTER_FULL
|
||
|
||
CLR A8 ;FULL UP TO HALF
|
||
MOVI [127,0],A9
|
||
MOVK 3,A10
|
||
MOVI 60*2,A11
|
||
|
||
JAUC TRACK_FADE_PROC
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPTER_INTRO_1 *
|
||
* *
|
||
**************************************************************************
|
||
|
||
COPTER_INTRO_1
|
||
MOVI 031CA1B4H,A14 ;FLY TO CENTER SCREEN
|
||
MOVE A14,*A8(OXDEST),L
|
||
MOVI -0223A5D4H,A14
|
||
MOVE A14,*A8(OYDEST),L
|
||
MOVI 0189C7H,A14
|
||
MOVE A14,*A8(OZDEST),L
|
||
|
||
MOVI 50,A14
|
||
MOVE A14,*A8(OFLYTIME),W
|
||
|
||
MOVK M_CFLYTOPT,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MOVE A8,A3 ;FADE FROM HALF TO FULL
|
||
CLR A8
|
||
MOVI [255,127],A9
|
||
MOVK 3,A10
|
||
MOVI 40,A11
|
||
|
||
CREATE PID_IND,TRACK_FADE_PROC
|
||
MOVE A3,A8
|
||
|
||
MOVK B_CFLYTOPT,A11
|
||
JSRP COMMAND_WAIT ;WAIT TIL AT CENTER
|
||
|
||
MOVI 011598H,A14
|
||
MOVE A14,*A8(OHZWPOS),L
|
||
|
||
MOVK M_CHOVER,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
SLEEP 30
|
||
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
SOUND1 SND_STEP_OUT ;PILOT SPEECH
|
||
|
||
MOVI 60*2,A9
|
||
MOVI 01AAC7H,A10
|
||
CI1_WAIT1
|
||
SLEEP 1
|
||
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
; MOVK 3,A0
|
||
; CALLA SET_TRACK_VOLUME_Z
|
||
|
||
MOVE *A8(OZVAL),A14,L
|
||
CMP A10,A14
|
||
JRLT CI1_DEC
|
||
|
||
MOVI M_CHITALL|M_CHOVER|M_CGUNS|M_CMISSLE,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
CI1_DEC
|
||
DSJ A9,CI1_WAIT1
|
||
|
||
CALLA VOLUME_AT_Z
|
||
MOVE A1,A9
|
||
ORI [63,0],A9
|
||
|
||
MOVE A8,A3 ;FADE FROM CURRENT Z TO QUARTER
|
||
CLR A8
|
||
MOVK 3,A10
|
||
MOVI 60,A11
|
||
CREATE PID_IND,TRACK_FADE_PROC
|
||
MOVE A3,A8
|
||
|
||
MOVE *A8(OXVAL),*A8(OXDEST),L
|
||
MOVI -04400000H,A14
|
||
MOVE A14,*A8(OYDEST),L
|
||
MOVI 022000H,A14
|
||
MOVE A14,*A8(OZDEST),L
|
||
|
||
MOVI 60,A14
|
||
MOVE A14,*A8(OFLYTIME),W
|
||
|
||
MOVI M_CFLYING|M_CACCTOPT,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MOVK BELLY_GUN,A1
|
||
CALLA FINDPART
|
||
LOCKON Z
|
||
MOVE A0,A9
|
||
CI1_WAIT2
|
||
SLEEP 1
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVE *A8(OCOMMAND),A14,W
|
||
BTST B_CACCTOPT,A14
|
||
JRNZ CI1_WAIT2 ;BR=NOT THERE YET!
|
||
|
||
MOVE *A9(OFLAGS),A14,W
|
||
BTST B_OFSCRN,A14
|
||
JRZ CI1_WAIT2 ;BR=BELLY GUN STILL ON DA SCREEN
|
||
|
||
CALLR COPTER_OFF
|
||
|
||
MOVK 1,A14
|
||
MOVE A14,@SCROLL_FLAG,L ;FLAG OFF SCREEN
|
||
|
||
DIE
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPTER_INTRO_2 *
|
||
* *
|
||
**************************************************************************
|
||
|
||
COPTER_INTRO_2
|
||
MOVE @COPTER_OBJ2,A8,L
|
||
JAZ SUCIDE
|
||
|
||
CALLR COPTER_ON
|
||
|
||
MOVE A8,A3 ;FADE UP FROM QUARTER
|
||
CLR A8
|
||
MOVI [170,63],A9
|
||
MOVK 3,A10
|
||
MOVI 30,A11
|
||
CREATE PID_IND,TRACK_FADE_PROC
|
||
MOVE A3,A8
|
||
|
||
MOVI 039189B4H,A14 ;FLY TO DOWN THE SCREEN
|
||
MOVE A14,*A8(OXDEST),L
|
||
MOVI -02800000H,A14
|
||
MOVE A14,*A8(OYDEST),L
|
||
MOVI 02742FH,A14
|
||
MOVE A14,*A8(OZDEST),L
|
||
|
||
MOVI 60,A14
|
||
MOVE A14,*A8(OFLYTIME),W
|
||
|
||
MOVK M_CFLYTOPT,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
JSRP COPTER_TO_POINT
|
||
|
||
SOUND1 SND_LAND_OR ;PILOT SPEECH
|
||
|
||
MOVE @COPTER_OBJ2,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVI 020000H,A14
|
||
MOVE A14,*A8(OHZWPOS),L
|
||
|
||
MOVI M_CHITALL|M_CHOVER|M_CGUNS|M_CMISSLE,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
CI2_WAIT ;HOVER A BIT
|
||
SLEEP 1
|
||
|
||
MOVE @COPTER_OBJ2,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVI 0A000H,A0
|
||
MOVI 06000H,A1
|
||
MOVI 0100H,A2
|
||
CALLR DO_HOVER ;HOVER IN THE UNIVERSE
|
||
|
||
MOVE @XBASE,A14,L
|
||
CMPI 0347F1B4H,A14
|
||
JRGT CI2_WAIT ;BR=NOT FAR ENOUGH IN X
|
||
|
||
MOVE @COPTER_OBJ2,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVK M_CFLYTOPT,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
CLR A14
|
||
MOVE A14,*A8(OXVEL),L
|
||
MOVE A14,*A8(OYVEL),L
|
||
MOVE A14,*A8(OZVEL),L
|
||
|
||
MOVI -028410B2H,A14 ;FLY UP TO THE LEFT
|
||
MOVE A14,*A8(OXDEST),L
|
||
MOVI -01000000H,A14
|
||
MOVE A14,*A8(OYDEST),L
|
||
MOVI 020000H,A14
|
||
MOVE A14,*A8(OZDEST),L
|
||
|
||
MOVI 180,A14
|
||
MOVE A14,*A8(OFLYTIME),W
|
||
|
||
JSRP COPTER_ACCEL_TO_WORLD_POINT
|
||
|
||
MOVE @COPTER_OBJ2,A8,L
|
||
JAZ SUCIDE
|
||
|
||
CALLR COPTER_OFF
|
||
|
||
CLR A8 ;FADE DOWN TO OFF
|
||
MOVI [0,170],A9
|
||
MOVK 3,A10
|
||
MOVI 60,A11
|
||
|
||
JAUC TRACK_FADE_PROC
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPTER_FLY_1 *
|
||
* *
|
||
**************************************************************************
|
||
|
||
COPTER_FLY_1
|
||
MOVE @COPTER_OBJ2,A8,L
|
||
JAZ SUCIDE
|
||
|
||
SOUND0 SND_COPTER_FULL
|
||
|
||
MOVE A8,A3 ;FADE UP TO A QUARTER
|
||
CLR A8
|
||
MOVI [63,0],A9
|
||
MOVK 3,A10
|
||
MOVI 30,A11
|
||
CREATE PID_IND,TRACK_FADE_PROC
|
||
MOVE A3,A8
|
||
|
||
MOVI -0D800000H,A1
|
||
MOVI -04000000H,A2
|
||
MOVI 0A6000H,A3
|
||
CALLA SET_ANIPU
|
||
|
||
CALLR COPTER_ON
|
||
|
||
MOVI M_CFLYING,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MOVI -089DDDH,A14 ;FLY DOWN TO THE LEFT
|
||
MOVE A14,*A8(OXVEL),L
|
||
MOVI 038E38H,A14
|
||
MOVE A14,*A8(OYVEL),L
|
||
|
||
MOVI -012DA0C43H,A9
|
||
CF1_WAIT
|
||
SLEEP 1
|
||
|
||
MOVE @COPTER_OBJ2,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVE *A8(OXVAL),A14,L
|
||
CMP A9,A14
|
||
JRGE CF1_WAIT ;BR=NOT BEHIND THAT BUILDING YET
|
||
|
||
CALLR COPTER_OFF
|
||
|
||
DIE
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPTER_FLY_2 *
|
||
* *
|
||
**************************************************************************
|
||
|
||
FLY2_MISSLETIME_TABLE
|
||
.WORD 45, 45, 45
|
||
|
||
COPTER_FLY_2
|
||
MOVE @COPTER_OBJ2,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVK M_FLIPH,A0
|
||
CALLA TOGGLE_FLPS
|
||
|
||
MOVI -014AEFCFAH,A1
|
||
MOVI -011898C3H,A2
|
||
MOVI 0C2800H,A3
|
||
CALLA SET_ANIPU ;PLACE OFF SCREEN
|
||
|
||
CALLR COPTER_ON
|
||
|
||
SOUND0 SND_COPTER_FULL
|
||
|
||
MOVE A8,A3 ;FADE UP TO FULL
|
||
CLR A8
|
||
MOVK 3,A10
|
||
MOVI 60,A11
|
||
CREATE PID_IND,TRACK_FADE_IN_FULL_PROC
|
||
MOVE A3,A8
|
||
|
||
MOVI M_CFLYING,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MOVI 0F0000H,A14 ;FLY UP
|
||
MOVE A14,*A8(OXVEL),L
|
||
MOVI -028000H,A14
|
||
MOVE A14,*A8(OYVEL),L
|
||
|
||
MOVI -0F00000H,A9
|
||
CF2_WAIT1
|
||
SLEEP 1
|
||
|
||
MOVE @COPTER_OBJ2,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVE *A8(OXVAL),A1,L
|
||
MOVE @XBASE,A14,L
|
||
SUB A14,A1
|
||
CMP A9,A1
|
||
JRLT CF2_WAIT1 ;BR=NOT MID SCREEN YET
|
||
|
||
MOVI 0200H,A14 ;FLY AWAY (SHRINK)
|
||
MOVE A14,*A8(OZVEL),L
|
||
|
||
MOVI 01000H,A9 ;X DECELERATION
|
||
MOVI 01000H,A10 ;Y DECELERATION
|
||
CF2_WAIT2
|
||
SLEEP 1
|
||
|
||
MOVE @COPTER_OBJ2,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVK 3,A0
|
||
CALLA SET_TRACK_VOLUME_Z
|
||
|
||
CLR A0
|
||
MOVE @XSCROLL,A1,L
|
||
MOVE *A8(OXVEL),A2,L
|
||
CMP A1,A2
|
||
JREQ CF2_CHECK_Y ;BR=SAME VELOCITY
|
||
JRLT CF2_USE_XSCROLL ;BR=TOO SLOW
|
||
SUB A9,A2 ;SLOW DOWN VELOCITY
|
||
INC A0 ;FLAG X CHANGE
|
||
JRUC CF2_SAVE_XVEL
|
||
CF2_USE_XSCROLL
|
||
MOVE A1,A2 ;USE SCROLLING VELOCITY
|
||
CF2_SAVE_XVEL
|
||
MOVE A2,*A8(OXVEL),L
|
||
CF2_CHECK_Y
|
||
MOVE @YSCROLL,A1,L
|
||
NEG A1
|
||
MOVE *A8(OYVEL),A2,L
|
||
CMP A1,A2
|
||
JREQ CF2_CHECK_IF_DONE ;BR=SAME VELOCITY
|
||
JRGT CF2_USE_YSCROLL ;BR=TOO SLOW
|
||
ADD A10,A2 ;SLOW DOWN VELOCITY
|
||
INC A0 ;FLAG Y CHANGE
|
||
JRUC CF2_SAVE_YVEL
|
||
CF2_USE_YSCROLL
|
||
MOVE A1,A2 ;USE SCROLLING VELOCITY
|
||
CF2_SAVE_YVEL
|
||
MOVE A2,*A8(OYVEL),L
|
||
CF2_CHECK_IF_DONE
|
||
MOVE A0,A0
|
||
JRNZ CF2_WAIT2 ;BR=MADE CHANGES, NOT DONE YET
|
||
|
||
CLR A14
|
||
MOVE A14,*A8(OZVEL),L ;STOP Z MOTION
|
||
|
||
SOUND1 SND_YOU_ARE_ILL
|
||
|
||
MOVK 1,A14
|
||
MOVE A14,*A8(OXDEST),L
|
||
|
||
MOVI 019EB6H,A14
|
||
MOVE A14,*A8(OHZWPOS),L
|
||
|
||
CLR A7 ;DEFAULT NO HOVER TIME
|
||
CF2_WAIT3
|
||
MOVI XSCROLL,A14
|
||
MMFM A14,A9,A10,A11 ;A11=XSCROLL, A10=YSCROLL, A9=ZSCROLL
|
||
|
||
PUSHP A7
|
||
SLEEP 1
|
||
PULLPQ A7
|
||
|
||
MOVE @COPTER_OBJ2,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVE A7,A7
|
||
JRZ CF2_ZIP ;BR=NO HOVER TIME
|
||
|
||
|
||
;CF2_PLAYER_LUPE
|
||
; MOVE *A2(POBJ),A4,L ;IS THE PLAYER ALIVE?
|
||
; JRZ CF2_NEXT_PLAYER ;BR = NO
|
||
; MOVE *A2(PCURSORXY),A4,L
|
||
;
|
||
;
|
||
; CMPXY A0,A4
|
||
; JRXLT CF2_NEXT_PLAYER ;BR=X ABOVE
|
||
; JRYLT CF2_NEXT_PLAYER ;BR=Y LEFT
|
||
;
|
||
; CMPXY A1,A4
|
||
; JRXGT CF2_NEXT_PLAYER ;BR=X BELOW
|
||
; JRYGT CF2_NEXT_PLAYER ;BR=Y RIGHT
|
||
;
|
||
;;SOMEONE'S TRACKING DA COPTER
|
||
;
|
||
;CF2_NEXT_PLAYER
|
||
; ADDI PDSIZE,A2 ;NEXT PLAYER DATA AREA
|
||
; DEC A7
|
||
; JRNN CF2_PLAYER_LUPE ;BR=NO MORE PLAYERS
|
||
|
||
|
||
DEC A7 ;DECREASE HOVER TIME
|
||
|
||
MOVI 010000H,A0
|
||
MOVI 06000H,A1
|
||
MOVI 0100H,A2
|
||
CALLR DO_HOVER_WORLD ;HOVER IN THE WORLD
|
||
|
||
JRUC CF2_CHECK
|
||
CF2_ZIP
|
||
; MOVK 5-1,A0
|
||
MOVK 3-1,A0 ;FIND NEXT DEST TO ZIP TO
|
||
CALLA RAND0
|
||
MOVE *A8(OXDEST),A1,L
|
||
ABS A1
|
||
SLL 28,A1
|
||
SRL 28,A1 ;CURRENT POSITION INDEX
|
||
CMP A1,A0
|
||
JRLT CF2_GET_WORLD_X ;BR=DON'T ADJUST INDEX
|
||
INC A0 ;PICK THE NEXT ONE
|
||
CF2_GET_WORLD_X
|
||
SUB A0,A1
|
||
SLL 5,A0 ;TRANSLATE TO TABLE OFFSET
|
||
ADDI COPTER_WORLD_X_TABLE,A0
|
||
MOVE *A0(0),*A8(OXDEST),L
|
||
|
||
MOVK 30,A14
|
||
ABS A1 ;INDEX DELTA
|
||
; CMPK 3,A1
|
||
; JRNE CF2_CALC_TIME ;BR=DO THE TIME SHIFT CALC
|
||
; MOVI 45,A14
|
||
;CF2_CALC_TIME
|
||
SRL 1,A1
|
||
SLL A1,A14 ;TOTAL TIME COMPUTED
|
||
CF2_SET_TIME
|
||
MOVE A14,A1
|
||
MOVE @XSCROLL,A2,L
|
||
MPYU A2,A1 ;DISTANCE COVERED AT CONSTANT VELOCITY
|
||
MOVE @XBASE,A2,L
|
||
ADD A2,A1 ;POSITION REACHED
|
||
|
||
; CMPI -06000000H,A1
|
||
CMPI 01D00000H,A1
|
||
JRLT CF2_FLY ;BR=WE WILL NOT PASS THIS X
|
||
|
||
SLL 1,A14
|
||
MOVE A14,A7 ;USE THIS AS HOVER TIME
|
||
JRUC CF2_CHECK
|
||
CF2_FLY
|
||
MOVE A14,*A8(OFLYTIME),W
|
||
|
||
; MOVE *A8(OYVAL),A0,L
|
||
; MOVE @YBASE,A14,L
|
||
; ADD A14,A0
|
||
; MOVI -0800000H,A1
|
||
; MOVI -0657CD5H,A0
|
||
; CALLA RANGERND
|
||
MOVI -0800000H,A0
|
||
MOVE A0,*A8(OYDEST),L
|
||
|
||
; MOVE *A8(OZVAL),A0,L
|
||
; MOVE @ZBASE,A14,L
|
||
; SUB A14,A0
|
||
; MOVI 019EB6H,A1
|
||
; MOVI 029EB6H,A0
|
||
; CALLA RANGERND
|
||
MOVI 019EB6H,A0
|
||
MOVE A0,*A8(OZDEST),L
|
||
|
||
CLR A1 ;CHOOSE HOVER TIME AFTER FLIGHT
|
||
MOVI 60,A0
|
||
CALLA RANGERND
|
||
MOVE A0,A7
|
||
|
||
MOVI XSCROLL,A14
|
||
MMFM A14,A1,A2,A3 ;A3=XSCROLL, A2=YSCROLL, A1=ZSCROLL
|
||
MOVE A3,*A8(OXVEL),L
|
||
NEG A2
|
||
MOVE A2,*A8(OYVEL),L
|
||
MOVE A1,*A8(OZVEL),L
|
||
|
||
MOVI FLY2_MISSLETIME_TABLE,A14
|
||
MOVE A14,@MISSLETIME_TABLE,L
|
||
|
||
MOVI M_CGUNS|M_CMISSLE|M_CFLYTOPT,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
PUSHP A7
|
||
JSRP COPTER_TO_WORLD_POINT
|
||
PULLPQ A7
|
||
|
||
MOVI M_CGUNS|M_CMISSLE|M_CHOVER,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
CF2_CHECK
|
||
MOVE @XBASE,A14,L
|
||
CMPI 01D00000H,A14
|
||
; CMPI -06000000H,A14
|
||
JRLT CF2_WAIT3 ;BR=NOT AT THAT X POSITION YET
|
||
|
||
; MOVI M_CGUNS,A14
|
||
; MOVE A14,*A8(OCOMMAND),W
|
||
;CF2_WAIT3_1
|
||
; MOVE @XSCROLL,A9,L
|
||
; MOVE @YSCROLL,A10,L
|
||
; MOVE @ZSCROLL,A11,L
|
||
;
|
||
; SLEEP 1
|
||
;
|
||
; MOVE @COPTER_OBJ2,A8,L
|
||
; JAZ SUCIDE
|
||
;
|
||
; MOVI 010000H,A0
|
||
; MOVI 06000H,A1
|
||
; MOVI 0100H,A2
|
||
; CALLR DO_HOVER_WORLD
|
||
;
|
||
;CF2_CHECK3_1
|
||
; MOVE @XBASE,A14,L
|
||
; CMPI 01D00000H,A14
|
||
; JRLT CF2_WAIT3_1 ;BR=NOT AT THAT X POSITION YET
|
||
|
||
MOVE @XSCROLL,A14,L ;FLY WITH SCROLL
|
||
MOVE A14,*A8(OXVEL),L
|
||
|
||
MOVE @ZSCROLL,A14,L
|
||
MOVE A14,*A8(OZVEL),L
|
||
|
||
MOVI M_CFLYING,A14
|
||
; CLR A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MOVI -080000H,A9 ;DESTINATION Y VELOCITY
|
||
MOVI 08000H,A10 ;Y DECELERATION
|
||
CLR A11 ;STARTING Y VELOCITY
|
||
CF2_WAIT4
|
||
SLEEP 1
|
||
|
||
MOVE @COPTER_OBJ2,A8,L
|
||
JAZ SUCIDE
|
||
|
||
SUB A10,A11
|
||
MOVE A11,*A8(OYVEL),L
|
||
|
||
CMP A9,A11
|
||
JRGT CF2_WAIT4 ;BR=NOT AT DESTINATION VELOCITY
|
||
|
||
; MOVI -035C0000H,A9
|
||
|
||
MOVK SIDE_BELLY_GUN,A1 ;BELLY GUN
|
||
CALLA FINDPART
|
||
LOCKON Z
|
||
MOVE A0,A9
|
||
CF2_WAIT5
|
||
SLEEP 1
|
||
|
||
MOVE @COPTER_OBJ2,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVE *A9(OFLAGS),A14,W
|
||
BTST B_OFSCRN,A14
|
||
JRZ CF2_WAIT5
|
||
|
||
; MOVE *A8(OYVAL),A14,L
|
||
; CMP A9,A14
|
||
; JRGT CF2_WAIT5 ;BR=NOT AT THAT Y POSITION YET
|
||
|
||
CALLR COPTER_OFF
|
||
|
||
CALLA VOLUME_AT_Z
|
||
MOVE A1,A9
|
||
|
||
CLR A8 ;FADE DOWN TO OFF
|
||
MOVK 3,A10
|
||
MOVI 45,A11
|
||
JAUC TRACK_FADE_PROC
|
||
|
||
COPTER_WORLD_X_TABLE
|
||
; .LONG -0143FE30H,-0A1FF11H,2,0A1FF13H,0143FE34H
|
||
.LONG -0A61C30H,-1EBEE1H,063AF12H
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPTER_FLY_2_1 *
|
||
* *
|
||
**************************************************************************
|
||
|
||
COPTER_FLY_2_1
|
||
MOVE @COPTER_OBJ2,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVI 0D000000H,A1
|
||
MOVI -02800000H,A2
|
||
; MOVI 0EB000H,A3
|
||
MOVI 0FA102H,A3
|
||
|
||
CALLA SET_ANIPU
|
||
|
||
CALLR COPTER_ON
|
||
|
||
MOVI M_CFLYING,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
; MOVE A3,A6
|
||
; MOVE A2,A4
|
||
; MOVE A1,A2
|
||
;
|
||
; MOVI 014B00000H,A1
|
||
; MOVI -01270000H,A3
|
||
; MOVI 010A102H,A5
|
||
;
|
||
; MOVI 240,A7
|
||
;
|
||
;* A1 = PNT. B X POSITION (32 BITS) *
|
||
;* A2 = PNT. A X POSITION (32 BITS) *
|
||
;* A3 = PNT. B Y POSITION (32 BITS) *
|
||
;* A4 = PNT. A Y POSITION (32 BITS) *
|
||
;* A5 = PNT. B Z POSITION (32 BITS) *
|
||
;* A6 = PNT. A Z POSITION (32 BITS) *
|
||
;* A7 = DURATION(# OF TICKS TO GET FROM A TO B) *
|
||
;
|
||
; CALLA SLINEVEL_3D
|
||
;
|
||
; MOVE A1,*A8(OXVEL),L
|
||
; MOVE A3,*A8(OYVEL),L
|
||
; MOVE A5,*A8(OZVEL),L
|
||
|
||
MOVI 083333H,A14 ;FLY DOWN TO THE LEFT
|
||
MOVE A14,*A8(OXVEL),L
|
||
MOVI 017000H,A14
|
||
MOVE A14,*A8(OYVEL),L
|
||
; MOVI 0212H,A14
|
||
MOVI 0111H,A14
|
||
MOVE A14,*A8(OZVEL),L
|
||
|
||
CALLA VOLUME_AT_Z
|
||
MOVE A1,A9
|
||
SLL 16,A9
|
||
ORI 63,A9
|
||
|
||
MOVE A8,A3 ;FADE DOWN TO A QUARTER
|
||
CLR A8
|
||
MOVK 3,A10
|
||
MOVI 10,A11
|
||
CREATE PID_IND,TRACK_FADE_PROC
|
||
MOVE A3,A8
|
||
|
||
SLEEP 11
|
||
|
||
MOVE @COPTER_OBJ2,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVI 014B00000H,A9
|
||
CF21_WAIT
|
||
SLEEP 1
|
||
|
||
MOVE @COPTER_OBJ2,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVK 3,A0
|
||
CALLA SET_TRACK_VOLUME_Z
|
||
|
||
MOVE *A8(OXVAL),A14,L
|
||
CMP A9,A14
|
||
JRLT CF21_WAIT ;BR=NOT FAR ENOUGH YET
|
||
|
||
CALLA VOLUME_AT_Z
|
||
MOVE A1,A9
|
||
|
||
PUSH A8
|
||
CLR A8 ;FADE DOWN TO OFF
|
||
MOVK 3,A10
|
||
MOVI 30,A11
|
||
CREATE PID_IND,TRACK_FADE_PROC
|
||
PULLQ A8
|
||
|
||
CLR A14
|
||
MOVE A14,@COPTER_OBJ2,L
|
||
MOVE A14,*A8(OPLINK),L
|
||
|
||
CALLA DELETE_OBJ ;BYE, BYE, SIDE COPTER!
|
||
|
||
DIE
|
||
|
||
;**************************************************************************
|
||
;* *
|
||
;* COPTER_FLY_3 *
|
||
;* *
|
||
;**************************************************************************
|
||
;
|
||
;COPTER_FLY_3
|
||
; MOVE @COPTER_OBJ2,A8,L
|
||
; JAZ SUCIDE
|
||
;
|
||
; MOVI 015770000H,A1
|
||
; MOVI -015647BAH,A2
|
||
; MOVI 011B000H,A3
|
||
; CALLA SET_ANIPU
|
||
;
|
||
; CALLR COPTER_ON
|
||
;
|
||
; SOUND0 SND_COPTER_FULL
|
||
;
|
||
; CALLA VOLUME_AT_Z
|
||
; MOVE A1,A9
|
||
; SLL 16,A9
|
||
;
|
||
; MOVE A8,A3 ;FADE UP FROM OFF
|
||
; CLR A8
|
||
; MOVK 3,A10
|
||
; MOVI 30,A11
|
||
; CREATE PID_IND,TRACK_FADE_PROC
|
||
; MOVE A3,A8
|
||
;
|
||
; MOVI 070000H,A9 ;FLY TO THE RIGHT
|
||
; MOVE A9,*A8(OXVEL),L
|
||
;
|
||
;; MOVI -0200000H,A9
|
||
;; MOVI 08000H,A10
|
||
;;CF3_WAIT1
|
||
;; SLEEP 1
|
||
;;
|
||
;; CLR A0
|
||
;; MOVE A10,A1
|
||
;; CALLR DO_HOVER
|
||
;;
|
||
;; MOVE *A8(OXVAL),A1,L
|
||
;; MOVE @XBASE,A14,L
|
||
;; SUB A14,A1
|
||
;; CMP A9,A1
|
||
;; JRLT CF3_WAIT1
|
||
;
|
||
;; MOVI 069000H,A9
|
||
;; MOVI 01000H,A10
|
||
;;CF3_WAIT2
|
||
;; SLEEP 1
|
||
;;
|
||
;; CLR A0
|
||
;; MOVI 08000H,A1
|
||
;; CALLR DO_HOVER
|
||
;;
|
||
;; SUB A10,A11
|
||
;; MOVE A11,*A8(OXVEL),L
|
||
;;
|
||
;; CMP A9,A11
|
||
;; JRGT CF3_WAIT2
|
||
;
|
||
;; MOVK 5,A14 ;3 MISSLES
|
||
;; MOVK 2,A14 ;6 MISSLES
|
||
;; MOVB A14,*A8(OMISSLETIME)
|
||
;
|
||
;; MOVI M_CFLYING|M_CMISSLE,A14
|
||
; MOVI M_CFLYING,A14
|
||
; MOVE A14,*A8(OCOMMAND),W
|
||
;
|
||
; MOVI 01797BD57H,A9
|
||
;CF3_WAIT3
|
||
; MOVI XSCROLL,A14
|
||
; MMFM A14,A10,A11 ;A11=XSCROLL, A10=YSCROLL
|
||
;
|
||
; SLEEP 1
|
||
;
|
||
; MOVE @COPTER_OBJ2,A8,L
|
||
; JAZ SUCIDE
|
||
;
|
||
; MOVI 010000H,A0
|
||
; MOVI 06000H,A1
|
||
; CLR A2
|
||
; CALLR DO_HOVER_WORLD
|
||
;
|
||
; MOVE *A8(OXVAL),A14,L
|
||
; CMPI 016F1C000H,A14
|
||
; JRLT CF3_OTHER_CHECK3 ;BR=NO MISSLES YET
|
||
;
|
||
; MOVI M_CFLYING|M_CMISSLE,A1
|
||
; MOVE A1,*A8(OCOMMAND),W
|
||
;
|
||
;CF3_OTHER_CHECK3
|
||
; CMP A9,A14
|
||
; JRLT CF3_WAIT3 ;BR=NOT FAR ENOUGH RIGHT
|
||
;
|
||
; CLR A14
|
||
; MOVE A14,*A8(OYVEL),L
|
||
;
|
||
; MOVI M_CFLYING,A14
|
||
; MOVE A14,*A8(OCOMMAND),W
|
||
;
|
||
; MOVI 070000H,A9 ;FLY TO THE RIGHT
|
||
;
|
||
;; MOVI 010000H,A10 ;X ACCELERATION
|
||
; MOVI 030F0000H,A11 ;X WORLD DESTINATION
|
||
;CF3_WAIT4
|
||
; MOVE @YSCROLL,A10,L
|
||
;
|
||
; SLEEP 1
|
||
;
|
||
; MOVE @COPTER_OBJ2,A8,L
|
||
; JAZ SUCIDE
|
||
;
|
||
; CLR A0
|
||
; MOVI 06000H,A1
|
||
; CLR A2
|
||
; CALLR DO_HOVER_WORLD ;HOVER IN WORLD Y
|
||
;
|
||
; ADDI 010000H,A9
|
||
; MOVE A9,*A8(OXVEL),L ;ACCELERATE IN X
|
||
;
|
||
; MOVE *A8(OXVAL),A1,L
|
||
; MOVE @XBASE,A14,L
|
||
; SUB A14,A1
|
||
; CMP A11,A1
|
||
; JRLT CF3_WAIT4 ;BR=NOT THERE YET
|
||
;
|
||
; CALLR COPTER_OFF
|
||
;
|
||
; DIE
|
||
;
|
||
;; CALLA VOLUME_AT_Z
|
||
;; MOVE A1,A9
|
||
;; ORI [63,0],A9
|
||
;;
|
||
;; MOVE A8,A3
|
||
;; CLR A8
|
||
;; MOVK 3,A10
|
||
;; MOVI 10,A11
|
||
;; CREATE PID_IND,TRACK_FADE_PROC
|
||
;; MOVE A3,A8
|
||
;;
|
||
;; DIE
|
||
;
|
||
;**************************************************************************
|
||
;* *
|
||
;* COPTER_FLY_4 *
|
||
;* *
|
||
;**************************************************************************
|
||
;
|
||
;COPTER_FLY_4
|
||
; MOVE @COPTER_OBJ2,A8,L
|
||
; JAZ SUCIDE
|
||
;
|
||
; MOVE @XBASE,A1,L
|
||
; SUBI 02000000H,A1
|
||
; MOVI -015647BAH,A2
|
||
; MOVI 011B000H,A3
|
||
; CALLA SET_ANIPU
|
||
;
|
||
; CALLR COPTER_ON
|
||
;
|
||
;; MOVI M_CFLYING|M_CMISSLE,A14
|
||
; MOVI M_CFLYING,A14
|
||
; MOVE A14,*A8(OCOMMAND),W
|
||
;
|
||
;; SOUND0 SND_COPTER_FULL
|
||
;;
|
||
;; CALLA VOLUME_AT_Z
|
||
;; MOVE A1,A9
|
||
;; SLL 16,A9
|
||
;;
|
||
;; MOVE A8,A3
|
||
;; CLR A8
|
||
;; MOVK 3,A10
|
||
;; MOVI 30,A11
|
||
;; CREATE PID_IND,TRACK_FADE_PROC
|
||
;; MOVE A3,A8
|
||
;
|
||
; MOVI 0100000H,A9 ;FLY TO THE RIGHT
|
||
; MOVE A9,*A8(OXVEL),L
|
||
;
|
||
;; MOVI 01000H,A10
|
||
;; MOVI 070000H,A11
|
||
;;CF4_WAIT1
|
||
;; SLEEP 1
|
||
;;
|
||
;; CLR A0
|
||
;; MOVE A10,A1
|
||
;; CALLR DO_HOVER
|
||
;;
|
||
;; SUB A10,A9
|
||
;; MOVE A9,*A8(OXVEL),L
|
||
;; CMP A11,A9
|
||
;; JRGT CF4_WAIT1
|
||
;
|
||
; MOVI 01F01BD57H,A11
|
||
;CF4_WAIT2
|
||
; MOVE @YSCROLL,A10,L
|
||
;
|
||
; SLEEP 1
|
||
;
|
||
; MOVE @COPTER_OBJ2,A8,L
|
||
; JAZ SUCIDE
|
||
;
|
||
; CLR A0
|
||
; MOVI 06000H,A1
|
||
; CLR A2
|
||
; CALLR DO_HOVER_WORLD ;HOVER IN WORLD Y
|
||
;
|
||
; MOVE *A8(OXVAL),A14,L
|
||
; CMP A11,A14
|
||
; JRLT CF4_WAIT2 ;BR=NOT FAR ENOUGH RIGHT
|
||
;
|
||
; CLR A14
|
||
; MOVE A14,*A8(OYVEL),L
|
||
;
|
||
; MOVI M_CFLYING,A14
|
||
; MOVE A14,*A8(OCOMMAND),W
|
||
;
|
||
;; MOVI 010000H,A10 ;X ACCELERATION
|
||
; MOVI 030F0000H,A11 ;X WORLD DESTINATION
|
||
;CF4_WAIT3
|
||
; MOVE @YSCROLL,A10,L
|
||
;
|
||
; SLEEP 1
|
||
;
|
||
; MOVE @COPTER_OBJ2,A8,L
|
||
; JAZ SUCIDE
|
||
;
|
||
; CLR A0
|
||
; MOVI 06000H,A1
|
||
; CLR A2
|
||
; CALLR DO_HOVER_WORLD ;HOVER IN WORLD Y
|
||
;
|
||
; ADDI 010000H,A9
|
||
; MOVE A9,*A8(OXVEL),L ;ACCELERATE IN X
|
||
;
|
||
; MOVE *A8(OXVAL),A1,L
|
||
; MOVE @XBASE,A14,L
|
||
; SUB A14,A1
|
||
; CMP A11,A1
|
||
; JRLT CF4_WAIT3 ;BR=NOT THERE YET
|
||
;
|
||
; CLR A14
|
||
; MOVE A14,@COPTER_OBJ2,L
|
||
;
|
||
; CALLA DELETE_OBJ ;BYE, BYE, SIDE COPTER!
|
||
;
|
||
;; CALLR COPTER_OFF
|
||
;
|
||
; DIE
|
||
;
|
||
;; CALLA VOLUME_AT_Z
|
||
;; MOVE A1,A9
|
||
;; ORI [63,0],A9
|
||
;;
|
||
;; MOVE A8,A3
|
||
;; CLR A8
|
||
;; MOVK 3,A10
|
||
;; MOVI 10,A11
|
||
;; CREATE PID_IND,TRACK_FADE_PROC
|
||
;; MOVE A3,A8
|
||
;;
|
||
; DIE
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPTER_ATTACK_1 *
|
||
* *
|
||
**************************************************************************
|
||
|
||
COPTER_ATTACK_1
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
; MOVI -07960000H,A4 ;CENTER UNIVERSE X
|
||
MOVI -078F0000H,A4 ;CENTER UNIVERSE X
|
||
MOVI -026D0000H,A1 ;LEFT OFFSET
|
||
|
||
MOVI 512,A0
|
||
CALLA RANDPER
|
||
JRC CA1_JUMP1 ;BR=COME FROM THE LEFT
|
||
NEG A1 ;RIGHT OFFSET NOW
|
||
CA1_JUMP1
|
||
ADD A4,A1
|
||
MOVI -0281B000H,A2
|
||
MOVI 02D000H,A3
|
||
|
||
MOVE A4,*A8(OXDEST),L ;FLY TO THE CENTER
|
||
MOVE A2,*A8(OYDEST),L
|
||
MOVE A3,*A8(OZDEST),L
|
||
|
||
CALLA SET_ANIPU
|
||
|
||
CALLR COPTER_ON
|
||
|
||
; MOVI 45,A14
|
||
MOVI 60,A14
|
||
MOVE A14,*A8(OFLYTIME),W
|
||
|
||
MOVK M_CFLYTOPT,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
SOUND0 SND_COPTER_FULL
|
||
|
||
CALLA VOLUME_AT_Z
|
||
MOVE A1,A9
|
||
SLL 16,A9
|
||
|
||
MOVE A8,A3 ;FADE UP FROM OFF
|
||
CLR A8
|
||
MOVK 3,A10
|
||
MOVI 30,A11
|
||
CREATE PID_IND,TRACK_FADE_PROC
|
||
MOVE A3,A8
|
||
|
||
MOVI -06480000H,A9
|
||
CA1_WAIT1
|
||
SLEEP 1
|
||
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVE @XBASE,A14,L
|
||
CMP A9,A14
|
||
JRGT CA1_WAIT1 ;BR=DON'T ATTACK YET
|
||
|
||
MOVE *A8(OCOMMAND),A14,W
|
||
ORI M_CHITALL|M_CGUNS,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MOVK B_CFLYTOPT,A11
|
||
JSRP COMMAND_WAIT ;WAIT TIL AT CENTER
|
||
|
||
MOVI M_CCHARGE|M_CHITALL|M_CGUNS,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
DIE
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPTER_ATTACK_2 *
|
||
* *
|
||
**************************************************************************
|
||
|
||
COPTER_ATTACK_2
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVI -0DA20000H,A1
|
||
MOVI -02000000H,A2
|
||
MOVI 044000H,A3
|
||
|
||
; MOVI -0C3158C5H,A14
|
||
MOVI -0C320000H,A14
|
||
MOVE A14,*A8(OXDEST),L ;FLY TO CENTER SCREEN
|
||
MOVE A2,*A8(OYDEST),L
|
||
MOVE A3,*A8(OZDEST),L
|
||
|
||
CALLA SET_ANIPU
|
||
|
||
CALLR COPTER_ON
|
||
|
||
; MOVK 30,A14
|
||
MOVI 60,A14
|
||
MOVE A14,*A8(OFLYTIME),W
|
||
|
||
MOVK M_CFLYTOPT,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
SOUND0 SND_COPTER_FULL
|
||
|
||
CALLA VOLUME_AT_Z
|
||
MOVE A1,A9
|
||
SLL 16,A9
|
||
|
||
MOVE A8,A3 ;FADE UP FROM OFF
|
||
CLR A8
|
||
MOVK 3,A10
|
||
MOVI 30,A11
|
||
CREATE PID_IND,TRACK_FADE_PROC
|
||
MOVE A3,A8
|
||
|
||
SLEEP 31
|
||
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
; MOVI 01000H,A14
|
||
; MOVE A14,*A8(OHXACCEL),W
|
||
; MOVE A14,*A8(OHYACCEL),W
|
||
|
||
SOUND1 SND_YOU_HAVE_DIS ;PILOT SPEECH
|
||
|
||
MOVI 030000H,A9 ;CLOSEST AT THIS ZBASE
|
||
; MOVI 010000H,A10 ;HOVER X MAX SPEED
|
||
; MOVI 010000H,A11 ;HOVER Y MAX SPEED
|
||
CA2_WAIT1
|
||
SLEEP 1
|
||
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
; CLR A0
|
||
; MOVE A11,A1
|
||
; MOVE *A8(OCOMMAND),A14,W
|
||
; BTST B_CFLYTOPT,A14
|
||
; JRNZ CA2_HOVER1
|
||
; MOVE A10,A0
|
||
;CA2_HOVER1
|
||
; CALLR DO_HOVER
|
||
|
||
MOVK 3,A0
|
||
CALLA SET_TRACK_VOLUME_Z
|
||
|
||
MOVE @ZBASE,A14,L
|
||
CMP A9,A14
|
||
JRLT CA2_WAIT1 ;BR=NOT THERE YET
|
||
|
||
MOVI M_CHITALL|M_CFLYING|M_CGUNS,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MOVI 06E000H,A9 ;FLY TO THIS UNIVERSE Z
|
||
MOVI 0800H,A10 ;DESTINATION Z VELOCITY
|
||
CLR A11 ;STARTING Z VELOCITY
|
||
CA2_WAIT2
|
||
SLEEP 1
|
||
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
; MOVI 0100000H,A0
|
||
; MOVI 0100000H,A1
|
||
; CALLR DO_HOVER
|
||
|
||
MOVK 3,A0
|
||
CALLA SET_TRACK_VOLUME_Z
|
||
|
||
CMP A10,A11
|
||
JRGE CA2_CHECK2 ;BR=AT DESTINATION Z VELOCITY
|
||
ADDI 040H,A11
|
||
MOVE A11,*A8(OZVEL),L
|
||
CA2_CHECK2
|
||
MOVE *A8(OZVAL),A14,L
|
||
CMP A9,A14
|
||
JRLT CA2_WAIT2 ;BR=NOT AT UNIVERSE Z
|
||
|
||
; CLR A14
|
||
; MOVE A14,*A8(OXVEL),L
|
||
; MOVE A14,*A8(OYVEL),L
|
||
|
||
MOVI M_CFLYING,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MOVI -0D400000H,A10 ;DESTINATION UNIVERSE X
|
||
MOVI -080000H,A14 ;MOVE TO THE LEFT
|
||
MOVE A14,*A8(OXVEL),L
|
||
CA2_WAIT3
|
||
SLEEP 1
|
||
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVK 3,A0
|
||
CALLA SET_TRACK_VOLUME_Z
|
||
|
||
MOVE *A8(OXVAL),A14,L
|
||
CMP A10,A14
|
||
JRGT CA2_WAIT3 ;BR=NOT AT DESTINATION X
|
||
|
||
CALLR COPTER_OFF
|
||
|
||
CALLA VOLUME_AT_Z
|
||
MOVE A1,A9
|
||
|
||
CLR A8 ;FADE DOWN TO OFF
|
||
MOVK 3,A10
|
||
MOVI 30,A11
|
||
JAUC TRACK_FADE_PROC
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPTER_ATTACK_3 *
|
||
* *
|
||
**************************************************************************
|
||
|
||
COPTER_ATTACK_3
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVI -014CF0000H,A4 ;UNIVERSE X CENTER SCREEN
|
||
; MOVI -01400000H,A1
|
||
MOVI -01800000H,A1 ;LEFT OFFSET
|
||
|
||
MOVI 512,A0
|
||
CALLA RANDPER
|
||
JRC CA3_JUMP1 ;BR=USE THE LEFT OFFSET
|
||
NEG A1 ;RIGHT OFFSET
|
||
CA3_JUMP1
|
||
ADD A4,A1
|
||
MOVI -01800000H,A2
|
||
MOVI 0A6000H,A3
|
||
|
||
MOVE A4,*A8(OXDEST),L ;FLY TO CENTER SCREEN
|
||
MOVE A2,*A8(OYDEST),L
|
||
MOVE A3,*A8(OZDEST),L
|
||
|
||
CALLA SET_ANIPU
|
||
|
||
CALLR COPTER_ON
|
||
|
||
MOVK 30,A14
|
||
MOVE A14,*A8(OFLYTIME),W
|
||
|
||
MOVK M_CFLYTOPT,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
CALLA VOLUME_AT_Z
|
||
MOVE A1,A9
|
||
SLL 16,A9
|
||
ORI 63,A9
|
||
|
||
MOVE A8,A3 ;FADE UP TO A QUARTER
|
||
CLR A8
|
||
MOVK 3,A10
|
||
MOVI 10,A11
|
||
CREATE PID_IND,TRACK_FADE_PROC
|
||
MOVE A3,A8
|
||
|
||
SLEEP 10
|
||
|
||
CA3_WAIT1
|
||
SLEEP 2
|
||
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVE @XBASE,A14,L
|
||
CMPI -014B00000H,A14
|
||
JRGT CA3_WAIT1 ;BR=DON'T ATTACK YET
|
||
|
||
MOVE *A8(OCOMMAND),A14,W
|
||
ORI M_CHITALL|M_CGUNS,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
CA3_WAIT2
|
||
SLEEP 1
|
||
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVK 3,A0
|
||
CALLA SET_TRACK_VOLUME_Z
|
||
|
||
MOVE *A8(OCOMMAND),A14,W
|
||
BTST B_CFLYTOPT,A14
|
||
JRNZ CA3_WAIT2 ;BR=NOT AT CENTER SCREEN YET
|
||
|
||
MOVK M_CCHARGE,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
DIE
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPTER_ATTACK_4 *
|
||
* *
|
||
**************************************************************************
|
||
|
||
COPTER_ATTACK_4
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVI 0D771F58H,A1 ;HOVER HERE
|
||
MOVI -0227082EH,A2
|
||
; MOVI 0CF802H,A3
|
||
MOVI 0E8000H,A3
|
||
|
||
CALLA SET_ANIPU
|
||
|
||
CALLR COPTER_ON
|
||
|
||
; MOVI 0358B6H,A14
|
||
CLR A14
|
||
MOVE A14,*A8(OHZWPOS),L
|
||
|
||
MOVK M_CHOVER,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
SOUND0 SND_COPTER_FULL
|
||
|
||
CALLA VOLUME_AT_Z
|
||
MOVE A1,A9
|
||
SLL 16,A9
|
||
|
||
MOVE A8,A3 ;FADE UP TO CURRENT Z
|
||
CLR A8
|
||
MOVK 3,A10
|
||
MOVI 10,A11
|
||
CREATE PID_IND,TRACK_FADE_PROC
|
||
MOVE A3,A8
|
||
|
||
SLEEP 11
|
||
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVI M_CHOVER|M_CHITALL|M_CGUNS,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MOVI 0C928CH,A9
|
||
CA4_WAIT1
|
||
SLEEP 1
|
||
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVK 3,A0
|
||
CALLA SET_TRACK_VOLUME_Z
|
||
|
||
MOVE @ZBASE,A14,L
|
||
CMP A9,A14
|
||
JRLT CA4_WAIT1 ;BR=DON'T GO UP YET
|
||
|
||
MOVI M_CFLYING,A14
|
||
MOVE A14,*A8(OCOMMAND),W ;DON'T HOVER ANYMORE
|
||
|
||
MOVI -080000H,A9 ;DESTINATION Y VELOCITY
|
||
MOVI 08000H,A10 ;Y ACCELERATION
|
||
CLR A11 ;STARTING Y VELOCITY
|
||
CA4_WAIT2
|
||
SLEEP 1
|
||
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVK 3,A0
|
||
CALLA SET_TRACK_VOLUME_Z
|
||
|
||
SUB A10,A11
|
||
MOVE A11,*A8(OYVEL),L
|
||
|
||
CMP A9,A11
|
||
JRGT CA4_WAIT2 ;BR=NOT FAST ENOUGH
|
||
|
||
CALLA VOLUME_AT_Z
|
||
MOVE A1,A9
|
||
ORI [63,0],A9
|
||
|
||
MOVE A8,A3 ;FADE DOWN TO A QUARTER
|
||
CLR A8
|
||
MOVK 3,A10
|
||
MOVI 60,A11
|
||
CREATE PID_IND,TRACK_FADE_PROC
|
||
MOVE A3,A8
|
||
|
||
; MOVI -04000000H,A9 ;OFF DA SCREEN UNIVERSE Y
|
||
|
||
MOVK BELLY_GUN,A1
|
||
CALLA FINDPART
|
||
LOCKON Z
|
||
MOVE A0,A9
|
||
CA4_WAIT3
|
||
SLEEP 1
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
; MOVE *A8(OYVAL),A14,L
|
||
; CMP A9,A14
|
||
; JRGT CA4_WAIT3 ;BR=NOT OFF DA SCREEN YET
|
||
|
||
MOVE *A9(OFLAGS),A14,W
|
||
BTST B_OFSCRN,A14
|
||
JRZ CA4_WAIT3
|
||
|
||
CALLR COPTER_OFF
|
||
|
||
DIE
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPTER_ATTACK_5 *
|
||
* *
|
||
**************************************************************************
|
||
|
||
COPTER_ATTACK_5
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVI 01B50E557H,A1 ;HOVER HERE
|
||
; MOVI -015647BAH,A2
|
||
MOVI -010647BAH,A2
|
||
MOVI 011B000H,A3
|
||
CALLA SET_ANIPU
|
||
|
||
CALLR COPTER_ON
|
||
|
||
MOVI 01B2FAH,A14
|
||
MOVE A14,*A8(OHZWPOS),L
|
||
|
||
MOVK M_CHOVER,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
; SOUND0 SND_COPTER_FULL
|
||
;
|
||
; CALLA VOLUME_AT_Z
|
||
; MOVE A1,A9
|
||
; SLL 16,A9
|
||
; ORI 63,A9
|
||
;
|
||
; MOVE A8,A3
|
||
; CLR A8
|
||
; MOVK 3,A10
|
||
; MOVI 10,A11
|
||
; CREATE PID_IND,TRACK_FADE_PROC
|
||
; MOVE A3,A8
|
||
|
||
MOVI 01D621557H,A9
|
||
CA5_WAIT1
|
||
SLEEP 1
|
||
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVE @XBASE,A14,L
|
||
CMP A9,A14
|
||
JRLT CA5_WAIT1 ;BR=NOT OFF DA SCREEN YET
|
||
|
||
CALLR COPTER_OFF
|
||
|
||
DIE
|
||
|
||
; CALLA VOLUME_AT_Z
|
||
; MOVE A1,A9
|
||
; ORI [63,0],A9
|
||
;
|
||
; CLR A8
|
||
; MOVK 3,A10
|
||
; MOVI 10,A11
|
||
; JAUC TRACK_FADE_PROC
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPTER_ATTACK_6 *
|
||
* *
|
||
**************************************************************************
|
||
|
||
COPTER_ATTACK_6
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVI 022B6F557H,A1 ;HOVER HERE
|
||
; MOVI -015647BAH,A2
|
||
MOVI -010647BAH,A2
|
||
MOVI 011B000H,A3
|
||
|
||
CALLA SET_ANIPU
|
||
|
||
CALLR COPTER_ON
|
||
|
||
MOVK M_CHOVER,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
; SOUND0 SND_COPTER_FULL
|
||
;
|
||
; CALLA VOLUME_AT_Z
|
||
; MOVE A1,A9
|
||
; SLL 16,A9
|
||
; ORI 63,A9
|
||
;
|
||
; MOVE A8,A3
|
||
; CLR A8
|
||
; MOVK 3,A10
|
||
; MOVI 10,A11
|
||
; CREATE PID_IND,TRACK_FADE_PROC
|
||
; MOVE A3,A8
|
||
|
||
MOVI 024B51557H,A9
|
||
CA6_WAIT1
|
||
SLEEP 1
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVE @XBASE,A14,L
|
||
CMP A9,A14
|
||
JRLT CA6_WAIT1 ;BR=NOT OFF DA SCREEN YET
|
||
|
||
CALLR COPTER_OFF
|
||
|
||
CALLA VOLUME_AT_Z
|
||
MOVE A1,A9
|
||
|
||
CLR A8 ;FADE DOWN TO OFF
|
||
MOVK 3,A10
|
||
MOVI 30,A11
|
||
JAUC TRACK_FADE_PROC
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPTER_ATTACK_FINAL *
|
||
* *
|
||
**************************************************************************
|
||
|
||
INIT_FINAL_HALF_MISSLETIME_TABLE
|
||
.WORD 30, 25, 25
|
||
INIT_FINAL_MISSLETIME_TABLE
|
||
.WORD 60, 50, 50
|
||
|
||
FINAL_PACK_TABLE
|
||
.LONG FINAL_XBASE-0800000H, -071C0000H, 011A802H
|
||
.LONG FINAL_XBASE, -071C0000H, 011A802H
|
||
.LONG FINAL_XBASE+0800000H, -071C0000H, 011A802H
|
||
|
||
COPTER_ATTACK_FINAL
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
CLR A14
|
||
MOVE A14,@ROW_HITS,W
|
||
MOVE @WAVEIRQS,A14,L
|
||
MOVE A14,@ROW_TIME,L
|
||
|
||
MOVI [DAMAGE_SPEECHES, 0],A14
|
||
MOVE A14,@DAMAGE_SPEECH_FLAGS,L
|
||
|
||
MOVI [THREAT_SPEECHES, 0],A14
|
||
MOVE A14,@THREAT_SPEECH_FLAGS,L
|
||
|
||
MOVK 3,A0 ;PUT WEAPON CRATES ON TOP
|
||
MOVI FINAL_PACK_TABLE,A1
|
||
CAF_PUT_PACKS
|
||
MMFM A1,A9,A10,A11
|
||
CALLA PUT_INFINITE_PROCK
|
||
DSJ A0,CAF_PUT_PACKS ;BR=ANOTHER PACK
|
||
|
||
MOVE A8,A0
|
||
MOVK 18,A1
|
||
MOVI FINAL_COPTER_VECTORS_TABLE,A2
|
||
MOVI COPTER_COLL,A3
|
||
CAF_GUNVECT_LUPE
|
||
MOVE *A2+,A14,L
|
||
MOVE A14,*A0(OGUNVECT),L
|
||
MOVE *A2+,A14,L
|
||
MOVE A14,*A0(OCOLLISION),L
|
||
MOVE A3,*A0(OCVECT),L
|
||
MOVE *A0(OPARTS),A0,L
|
||
DSJ A1,CAF_GUNVECT_LUPE
|
||
|
||
MOVI FINAL_XBASE,A1 ;HOVER AT TOP OF BUILDING
|
||
MOVI ABOVE_BUILDING_UNIVY,A2
|
||
MOVI 01225DAH,A3
|
||
|
||
CALLA SET_ANIPU
|
||
|
||
CALLR COPTER_ON
|
||
|
||
; MOVI 05B5119DH,A9
|
||
MOVI 04B5119DH,A9
|
||
CAF_WAIT1
|
||
SLEEP 1
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVE @YBASE,A14,L
|
||
CMP A9,A14
|
||
JRLT CAF_WAIT1 ;BR=DON'T FADE UP YET
|
||
|
||
SOUND0 SND_COPTER_FULL
|
||
|
||
CALLA VOLUME_AT_Z
|
||
MOVE A1,A9
|
||
SLL 16,A9
|
||
|
||
MOVE A8,A3 ;FADE UP TO CURRENT Z
|
||
CLR A8
|
||
MOVK 3,A10
|
||
MOVI 60,A11
|
||
CREATE PID_IND,TRACK_FADE_PROC
|
||
MOVE A3,A8
|
||
|
||
CAF_WAIT2
|
||
SLEEP 1
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVE @YSCROLL,A14,L
|
||
JRNZ CAF_WAIT2 ;BR=DON'T HOVER YET
|
||
|
||
; MOVI 010H,A14
|
||
; MOVE A14,*A8(OHZACCEL),W
|
||
|
||
MOVI INIT_FINAL_MISSLETIME_TABLE,A14
|
||
MOVE A14,@MISSLETIME_TABLE,L
|
||
|
||
MOVI 0147F0H,A14
|
||
MOVE A14,*A8(OHZWPOS),L
|
||
|
||
MOVI M_CFINAL|M_CHOVER,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
SOUND1 SND_THIS_IS
|
||
|
||
.if BILL
|
||
|
||
; JRUC CAF_TEST_ABORT
|
||
;CAF_TEST
|
||
; SLEEP 1
|
||
; JRUC CAF_TEST
|
||
;CAF_TEST_ABORT
|
||
|
||
.endif
|
||
|
||
MOVI 60*6,A9
|
||
CAF_SPEECH_WAIT
|
||
SLEEP 1
|
||
MOVE @ROW_HITS,A14,W
|
||
JRZ CAF_NEXT
|
||
|
||
MOVI M_CFINAL|M_CHOVER|M_CGUNS|M_CMISSLE,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
CAF_NEXT
|
||
DSJ A9,CAF_SPEECH_WAIT
|
||
|
||
; SLEEP 60*6
|
||
|
||
CREATE PID_IND,COPTER_SOUND_CONTROL_PROC
|
||
|
||
MOVI M_CFINAL|M_CHOVER|M_CGUNS|M_CMISSLE,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MOVI 60,A9 ;INITIAL HOVER TIME
|
||
MOVE @WAVEIRQS,A10,L ;LAST TAKE OFF
|
||
CAF_LUPE
|
||
SLEEP 1
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVE @DESTROYING_PARTS,A14,W
|
||
JRNZ CAF_LUPE ;BR=BUSY DESTROYING
|
||
|
||
DEC A9
|
||
JRN CAF_FLIGHT ;BR=NO MORE HOVERIN'
|
||
JRNZ CAF_LUPE ;BR=KEEP ON HOVERIN'
|
||
CAF_FLIGHT
|
||
CALLR SET_RANDOM_COPTER_Z ;PICK POINT TO FLY TO
|
||
|
||
CALLR SETUP_ONSCRN_TABLE_PTR
|
||
|
||
CALLR SET_RANDOM_COPTER_X
|
||
|
||
CALLR SET_RANDOM_COPTER_Y
|
||
|
||
MOVI 60,A1
|
||
MOVE @WING_COUNT,A14,W
|
||
JRNZ CAF_SET_FLYTIME ;BR=DON'T SPEED UP
|
||
MOVI 45,A1
|
||
CAF_SET_FLYTIME
|
||
MOVE A1,*A8(OFLYTIME),W
|
||
|
||
MOVI M_CFINAL|M_CFLYTOPT|M_CGUNS|M_CMISSLE,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MOVI 128,A0
|
||
CALLA RANDPER
|
||
JRNC CAF_NO_THREAT ;BR=NO THREAT SPEECH
|
||
CALLR MAKE_THREAT_SPEECH
|
||
CAF_NO_THREAT
|
||
|
||
MOVK B_CFLYTOPT,A11
|
||
JSRP COMMAND_WAIT ;WAIT TIL WHERE THERE
|
||
JRC CAF_COMPUTE_SLEEP ;BR=BUSY DESTROYING
|
||
|
||
MOVE @WING_COUNT,A14,W
|
||
JRZ CAF_COMPUTE_SLEEP ;BR=NO WINGS LEFT
|
||
|
||
MOVE @WAVEIRQS,A0,L ;CHECK IF WE CAN LEAVE
|
||
MOVE A0,A1
|
||
SUB A10,A0
|
||
CMPI 60*15,A0
|
||
JRGE CAF_FLY_OFF ;BR=ON TOO LONG FLY OFF
|
||
|
||
CMPI 60*5,A0
|
||
JRLT CAF_COMPUTE_SLEEP ;BR=STAY ON THE SCREEN
|
||
|
||
MOVE @ROW_HITS,A14,W
|
||
CMPK 30,A14
|
||
JRLT CAF_COMPUTE_SLEEP ;BR=NOT ATTACKED ENOUGH
|
||
CAF_FLY_OFF
|
||
CLR A14
|
||
MOVE A14,@ROW_HITS,W
|
||
|
||
CLR A9
|
||
MOVE A1,A10 ;NEW LAST TIME OFF
|
||
|
||
MOVK 5,A0 ;PICK FLY OFF ROUTINE
|
||
CALLA RAND0
|
||
SLL 5,A0
|
||
ADDI FLY_OFF_TABLE,A0
|
||
MOVE *A0,A0,L
|
||
|
||
JSRPR A0 ;FLY OFF
|
||
|
||
; MOVK 3,A0
|
||
; MOVI FLY_ON_TABLE,A2
|
||
;
|
||
; MOVE *A8(OYVAL),A14,L
|
||
; CMPI CEILING_UNIVY,A14
|
||
; JRGT CAF_CHECK_UP
|
||
; MOVK 2,A0
|
||
; MOVI FLY_ON_DOWN_TABLE,A2
|
||
; JRUC CAF_COME_ON
|
||
;CAF_CHECK_UP
|
||
; CMPI ABOVE_BUILDING_UNIVY,A14
|
||
; JRLE CAF_COME_ON
|
||
; MOVK 3,A0
|
||
; MOVI FLY_ON_UP_TABLE,A2
|
||
;CAF_COME_ON
|
||
|
||
JRC CAF_FLY_BACK_ON ;BR=INTERRUPTED
|
||
|
||
CALLA RAND0 ;PICK FLY ON ROUTINE
|
||
SLL 5,A0
|
||
ADD A2,A0
|
||
MOVE *A0,A11,L
|
||
|
||
CALLA CLR_VEL ;STOP!
|
||
|
||
CLR A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
CALLA PULL_OBJ
|
||
|
||
SLEEP 60
|
||
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
CALLA CON_INSERT
|
||
|
||
JSRPR A11 ;FLY ON
|
||
|
||
CALLR MAKE_THREAT_SPEECH
|
||
|
||
CAF_VOLUME
|
||
CLR A14
|
||
MOVE A14,@COPTER_SND,W
|
||
|
||
CAF_COMPUTE_SLEEP
|
||
MOVI M_CFINAL|M_CHOVER|M_CGUNS|M_CMISSLE,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MOVI 120+1,A0 ;COMPUTE SLEEP TIME
|
||
CALLA RAND0
|
||
MOVE A0,A9
|
||
|
||
JRUC CAF_LUPE
|
||
CAF_FLY_BACK_ON
|
||
CLR A14
|
||
MOVE A14,@COPTER_SND,W
|
||
|
||
CAF_FLY_BACK_ON_WAIT
|
||
SLEEP 1
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVE @DESTROYING_PARTS,A14,W
|
||
JRNZ CAF_FLY_BACK_ON_WAIT ;BR=BUSY DESTROYING
|
||
|
||
MOVE *A8(OZVAL),A0,L
|
||
MOVE A0,*A8(OZDEST),L
|
||
|
||
CALLR SETUP_ONSCRN_TABLE_PTR
|
||
|
||
CALLR SET_RANDOM_COPTER_X
|
||
|
||
CALLR SET_RANDOM_COPTER_Y
|
||
|
||
MOVI 45,A1
|
||
JRUC CAF_SET_FLYTIME
|
||
|
||
|
||
FLY_OFF_TABLE
|
||
.LONG GO_SIDE, GO_UP, PULL_AND_DROP, PULL_AND_CHARGE, PULL_AND_CHARGE
|
||
|
||
FLY_ON_TABLE
|
||
.LONG COME_DOWN, COME_SIDE, COME_UP_FROM_BELOW
|
||
FLY_ON_DOWN_TABLE
|
||
.LONG COME_DOWN, COME_SIDE
|
||
FLY_ON_UP_TABLE
|
||
.LONG COME_SIDE, COME_UP_FROM_BELOW, COME_UP_FROM_BELOW
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COPTER_SOUND_CONTROL_PROC - UPDATE COPTER PROP SOUND WITH RESPECT TO Z *
|
||
* *
|
||
**************************************************************************
|
||
|
||
COPTER_SOUND_CONTROL_PROC
|
||
SLEEP 1
|
||
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVE @COPTER_SND,A14,W
|
||
; JAN SUCIDE ;BR=KILL MYSELF
|
||
JRZ CSCP_GO ;BR=UPDATE VOLUME
|
||
CSCP_WAIT
|
||
SLEEP 1
|
||
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVE @COPTER_SND,A14,W
|
||
; JAN SUCIDE ;BR=KILL MYSELF
|
||
JRNZ CSCP_WAIT ;BR=STILL WAITIN'
|
||
|
||
SLEEP 10
|
||
CSCP_GO
|
||
MOVK 3,A0
|
||
CALLA SET_TRACK_VOLUME_Z
|
||
|
||
JRUC COPTER_SOUND_CONTROL_PROC
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COMMAND_WAIT - WAIT FOR A COMMAND TO BE FINISHED *
|
||
* *
|
||
* PASS: *
|
||
* A8 = HEAD COPTER OBJECT *
|
||
* A11 = COMMAND TO WAIT FOR *
|
||
* RETURN: *
|
||
* NUTIN' *
|
||
* *
|
||
**************************************************************************
|
||
|
||
COMMAND_WAIT
|
||
SLEEP 1
|
||
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVE @DESTROYING_PARTS,A14,W
|
||
JRNZ CW_ABORT ;BR=BUSY DESTROYING
|
||
|
||
MOVE *A8(OCOMMAND),A14,W
|
||
BTST A11,A14
|
||
JRNZ COMMAND_WAIT ;BR=NOT DONE YET!
|
||
CLRC
|
||
RETP
|
||
CW_ABORT
|
||
SETC
|
||
RETP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* SET_RANDOM_Z - SET RANDOM Z WITHIN THE Z LIMITS *
|
||
* *
|
||
* PASS: *
|
||
* A8 = HEAD COPTER OBJECT *
|
||
* RETURN: *
|
||
* A0 = UNIVERSE Z *
|
||
* *
|
||
**************************************************************************
|
||
|
||
SET_RANDOM_COPTER_Z
|
||
MOVI MIN_COPTER_Z,A1
|
||
MOVI MAX_COPTER_Z,A0
|
||
|
||
MOVE @WING_COUNT,A14,W
|
||
JRNZ SRCZ_ROCKET_CHECK ;BR=WE HAVE WINGS
|
||
MOVI MAX_COPTER_NOWINGS_Z,A0
|
||
SRCZ_ROCKET_CHECK
|
||
MOVE @LAST_ROCKET,A14,L
|
||
JRZ SRCZ_GO ;BR=NO ROCKET
|
||
MOVE *A14(OZVAL),A14,L
|
||
CMP A0,A14
|
||
JRGT SRCZ_GO ;BR=DON'T FUCKUP DA MAXIMUM
|
||
CMP A1,A14
|
||
JRLT SRCZ_GO ;BR=Z OKAY
|
||
MOVE A14,A1
|
||
SRCZ_GO
|
||
CALLA RANGERND
|
||
MOVE A0,*A8(OZDEST),L
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* SETUP_ONSCRN_TABLE_PTR - SET UP POINTER ROUNDING ON-SCREEN FOR *
|
||
* SET_RANDOM_COPTER_X *
|
||
* *
|
||
* PASS: *
|
||
* A0 = UNIVERSE Z *
|
||
* RETURN: *
|
||
* A2 = POINTER TO RIGHT WORLD X ENTRY *
|
||
* *
|
||
**************************************************************************
|
||
|
||
SETUP_ONSCRN_TABLE_PTR
|
||
MOVE A0,A2
|
||
SUBI FINAL_ZBASE-0FFFH,A2 ;A2 = Z WORLD ROUNDED DOWN
|
||
SRA 12,A2 ;GET INDEX
|
||
SUBK 2-1,A2 ;OFFSET INDEX
|
||
JRNN SONTP_INDEX_OK ;BR=INDEX IS OKAY!
|
||
CLR A2 ;CLEAR NEGATIVE VALUE
|
||
SONTP_INDEX_OK
|
||
MOVE A2,A14
|
||
SLL 5,A14 ;CALCULATE TABLE OFFSET
|
||
SLL 4,A2
|
||
ADD A14,A2
|
||
ADDI UCHECK_TBL,A2 ;ADD OFFSET TO TABLE
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* SETUP_OFFSCRN_TABLE_PTR - SET UP POINTER ROUNDING OFF-SCREEN FOR *
|
||
* SET_RANDOM_COPTER_X *
|
||
* *
|
||
* PASS: *
|
||
* A0 = UNIVERSE Z *
|
||
* RETURN: *
|
||
* A2 = POINTER TO RIGHT WORLD X ENTRY *
|
||
* *
|
||
**************************************************************************
|
||
|
||
SETUP_OFFSCRN_TABLE_PTR
|
||
MOVE A0,A2
|
||
SUBI FINAL_ZBASE+0FFFH,A2 ;A2 = Z WORLD ROUNDED UP
|
||
SRA 12,A2 ;GET INDEX
|
||
SUBK 2,A2 ;OFFSET INDEX
|
||
JRNN SOFFTP_INDEX_OK ;BR=INDEX IS OKAY!
|
||
CLR A2 ;CLEAR NEGATIVE VALUE
|
||
SOFFTP_INDEX_OK
|
||
MOVE A2,A14
|
||
SLL 5,A14 ;CALCULATE TABLE OFFSET
|
||
SLL 4,A2
|
||
ADD A14,A2
|
||
ADDI UCHECK_TBL,A2 ;ADD OFFSET TO TABLE
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* SET_RANDOM_COPTER_X - SET RANDOM X AT GIVEN Z *
|
||
* *
|
||
* PASS: *
|
||
* A2 = POINTER TO RIGHT WORLD X ENTRY *
|
||
* A8 = HEAD COPTER OBJECT *
|
||
* RETURN: *
|
||
* A0 = UNIVERSE X *
|
||
* A1 = LEFT WORLD X *
|
||
* A2 = POINTER TO WORLD Y'S ENTRY *
|
||
* *
|
||
**************************************************************************
|
||
|
||
SET_RANDOM_COPTER_X
|
||
MOVE *A2+,A0,W ;GET PACKED WORLD X BOUNDARY
|
||
SLL 12,A0 ;UNPACK WORLD X BOUNDARY
|
||
; SUBI ((138+27)*2) << 15,A0 ;OFFSET FROM EDGE OF BOUNDARY
|
||
SUBI (144*2) << 15,A0 ;OFFSET FROM EDGE OF BOUNDARY
|
||
MOVE A0,A1
|
||
NEG A1
|
||
CALLA RANGERND
|
||
ADDI FINAL_XBASE,A0 ;TRANSLATE TO UNIVERSE
|
||
MOVE A0,*A8(OXDEST),L
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* SET_RANDOM_COPTER_Y - SET RANDOM Y AT GIVEN Z *
|
||
* *
|
||
* PASS: *
|
||
* A2 = POINTER TO WORLD Y'S ENTRY *
|
||
* A8 = HEAD COPTER OBJECT *
|
||
* RETURN: *
|
||
* A0 = UNIVERSE Y *
|
||
* A1 = TOP UNIVERSE Y *
|
||
* *
|
||
**************************************************************************
|
||
|
||
SET_RANDOM_COPTER_Y
|
||
MOVE *A2,A1,L ;GET PACKED WORLD Y [BOT, TOP]
|
||
SEXT A1,W
|
||
SLL 12,A1 ;UNPACK WORLD Y TOP BOUNDARY
|
||
; ADDI 171*2 << 15,A1 ;OFFSET FROM EDGE OF BOUNDARY
|
||
; MOVE @YBASE,A14,L
|
||
; SUB A14,A1
|
||
ADDI (171*2 << 15)-MAX_FINAL_YBASE,A1 ;OFFSET FROM EDGE OF BOUNDARY
|
||
MOVI ABOVE_BUILDING_UNIVY,A0
|
||
CMP A0,A1
|
||
JRGE SRCY_SET ;BR=DON'T GO BELOW DA BUILDING
|
||
CALLA RANGERND
|
||
SRCY_SET
|
||
MOVE A0,*A8(OYDEST),L
|
||
RETS
|
||
|
||
**************************************************************************
|
||
* *
|
||
* PULL_AND_CHARGE - PULL BACK IN Z AND CHARGE THE SCREEN *
|
||
* *
|
||
* PASS: *
|
||
* A8 = HEAD COPTER OBJECT *
|
||
* RETURN: *
|
||
* A0 = NUMBER OF ENTRIES IN RETURN TABLE *
|
||
* A2 = RETURN TABLE *
|
||
* *
|
||
**************************************************************************
|
||
|
||
PULL_AND_CHARGE
|
||
MOVE *A8(OXVAL),*A8(OXDEST),L ;FLY BACK
|
||
MOVI ABOVE_BUILDING_UNIVY,A14
|
||
MOVE A14,*A8(OYDEST),L
|
||
MOVI MAX_COPTER_Z,A14
|
||
MOVE A14,*A8(OZDEST),L
|
||
|
||
MOVK 30,A14
|
||
MOVE A14,*A8(OFLYTIME),W
|
||
|
||
MOVI M_CFINAL|M_CFLYTOPT|M_CMISSLE,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MOVK B_CFLYTOPT,A11
|
||
JSRP COMMAND_WAIT ;WAIT TIL DONE
|
||
JRC PAC_ABORT ;BR=INTERRUPTED
|
||
|
||
MOVI M_CFINAL|M_CCHARGE|M_CGUNS,A14 ;CHARGE!
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MOVK 1,A14
|
||
MOVE A14,@COPTER_SND,W
|
||
|
||
MOVK B_CCHARGE,A11
|
||
JSRP COMMAND_WAIT ;WAIT TIL DONE
|
||
JRC PAC_ABORT ;BR=INTERRUPTED
|
||
|
||
MOVK 2,A0
|
||
MOVI FLY_ON_DOWN_TABLE,A2
|
||
|
||
MOVE *A8(OYVAL),A14,L
|
||
CMPI ABOVE_BUILDING_UNIVY,A14
|
||
JRLT PAC_DONE ;BR=ABOVE DA BUILDIN
|
||
MOVK 3,A0
|
||
MOVI FLY_ON_UP_TABLE,A2
|
||
PAC_DONE
|
||
CLRC
|
||
RETP
|
||
PAC_ABORT
|
||
MOVI PID_GOODIE,A0
|
||
CALLA KILLPROC_ALL
|
||
SETC
|
||
RETP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* PULL_AND_DROP - PULL BACK IN Z AND DROP BEHIND THE BUILDING *
|
||
* *
|
||
* PASS: *
|
||
* A8 = HEAD COPTER OBJECT *
|
||
* RETURN: *
|
||
* A0 = NUMBER OF ENTRIES IN RETURN TABLE *
|
||
* A2 = RETURN TABLE *
|
||
* *
|
||
**************************************************************************
|
||
|
||
PULL_AND_DROP
|
||
PUSHP A9
|
||
MOVE *A8(OXVAL),*A8(OXDEST),L ;FLY BACK
|
||
MOVE *A8(OYVAL),*A8(OYDEST),L
|
||
MOVI MAX_COPTER_Z,A14
|
||
MOVE A14,*A8(OZDEST),L
|
||
|
||
MOVK 30,A14
|
||
MOVE A14,*A8(OFLYTIME),W
|
||
|
||
MOVI M_CFINAL|M_CFLYTOPT|M_CMISSLE,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MOVK B_CFLYTOPT,A11
|
||
JSRP COMMAND_WAIT ;WAIT TIL DONE
|
||
JRC PAD_ABORT ;BR=INTERRUPTED
|
||
|
||
MOVI M_CFINAL|M_CFLYING|M_CMISSLE,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MOVE @MISSLETIME_TABLE,A14,L
|
||
SUBI 010H*3,A14 ;MOVE POINTER TO
|
||
MOVE A14,@MISSLETIME_TABLE,L ; SHORTER TIME TABLE
|
||
|
||
MOVI ROCKET_LAUNCHER_ANIM,A2
|
||
MOVI MISSLE_LAUNCH_SUB_ANIM,A3
|
||
MOVK LEFT_ROCKET,A1
|
||
CALLA FINDPART
|
||
JRZ PAD_CHECK_RIGHT ;BR=NO LEFT LAUNCHER
|
||
|
||
MOVE A2,*A0(AnimRetScr),L
|
||
MOVE A2,*A0(AnimRetFrm),L
|
||
MOVE A3,A1
|
||
CALLA STRTANIM
|
||
|
||
PAD_CHECK_RIGHT
|
||
MOVK RGHT_ROCKET,A1
|
||
CALLA FINDPART
|
||
JRZ PAD_NAP ;BR=NO RIGHT LAUNCHER
|
||
|
||
MOVE A2,*A0(AnimRetScr),L
|
||
MOVE A2,*A0(AnimRetFrm),L
|
||
MOVE A3,A1
|
||
CALLA STRTANIM
|
||
PAD_NAP
|
||
MOVI 60,A9
|
||
PAD_NAP_LUPE1
|
||
SLEEP 1
|
||
|
||
MOVE @DESTROYING_PARTS,A14,W
|
||
JRNZ PAD_ABORT_HOVER ;BR=BUSY DESTROYING
|
||
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVI 0A000H,A0
|
||
MOVI 06000H,A1
|
||
MOVI 0100H,A2
|
||
CALLR DO_HOVER
|
||
|
||
DSJ A9,PAD_NAP_LUPE1
|
||
|
||
CALLA CLR_VEL
|
||
|
||
MOVE @MISSLETIME_TABLE,A14,L
|
||
ADDI 010H*3,A14 ;MOVE POINTER TO
|
||
MOVE A14,@MISSLETIME_TABLE,L ; NORMAL TIME TABLE
|
||
|
||
MOVI BELOW_BUILDING_UNIVY,A14 ;FLY DOWN
|
||
MOVE A14,*A8(OYDEST),L
|
||
|
||
MOVI M_CFINAL|M_CACCTOPT,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MOVK 1,A14
|
||
MOVE A14,@COPTER_SND,W
|
||
|
||
MMTM SP,A8,A10 ;FADE DOWN TO QUARTER
|
||
CALLA VOLUME_AT_Z
|
||
CLR A8
|
||
MOVE A1,A9
|
||
ORI [63,0],A9
|
||
MOVK 3,A10
|
||
MOVI 30,A11
|
||
CREATE PID_GOODIE,TRACK_FADE_PROC
|
||
MMFM SP,A8,A10
|
||
|
||
MOVI B_CACCTOPT,A11
|
||
JSRP COMMAND_WAIT ;WAIT TIL DONE
|
||
JRC PAD_ABORT ;BR=INTERRUPTED
|
||
|
||
MOVI 60*2+30,A9 ;WAIT TIL MISSLES HIT
|
||
PAD_NAP_LUPE2
|
||
SLEEP 1
|
||
|
||
MOVE @DESTROYING_PARTS,A14,W
|
||
JRNZ PAD_ABORT ;BR=BUSY DESTROYING
|
||
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
DSJ A9,PAD_NAP_LUPE2
|
||
|
||
MOVK 3,A0
|
||
MOVI FLY_ON_UP_TABLE,A2
|
||
CLRC
|
||
PULLPQ A9
|
||
RETP
|
||
PAD_ABORT_HOVER
|
||
MOVE @MISSLETIME_TABLE,A14,L
|
||
ADDI 010H*3,A14 ;MOVE POINTER TO
|
||
MOVE A14,@MISSLETIME_TABLE,L ; NORMAL TIME TABLE
|
||
PAD_ABORT
|
||
MOVI PID_GOODIE,A0
|
||
CALLA KILLPROC_ALL
|
||
SETC
|
||
PULLPQ A9
|
||
RETP
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* GO_UP - FLY UP AND OFF THE SCREEN *
|
||
* *
|
||
* PASS: *
|
||
* A8 = HEAD COPTER OBJECT *
|
||
* RETURN: *
|
||
* A0 = NUMBER OF ENTRIES IN RETURN TABLE *
|
||
* A2 = RETURN TABLE *
|
||
* *
|
||
**************************************************************************
|
||
|
||
GO_UP
|
||
MOVI M_CFINAL|M_CFLYING|M_CGUNS|M_CMISSLE,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MOVI -07FFFH,A14 ;SET Y ACCELERATION
|
||
MOVE A14,*A8(OYACCEL),W
|
||
|
||
MOVK 1,A14
|
||
MOVE A14,@COPTER_SND,W
|
||
|
||
MMTM SP,A8,A9,A10 ;FADE DOWN TO QUARTER
|
||
CALLA VOLUME_AT_Z
|
||
CLR A8
|
||
MOVE A1,A9
|
||
ORI [63,0],A9
|
||
MOVK 3,A10
|
||
MOVI 30,A11
|
||
CREATE PID_GOODIE,TRACK_FADE_PROC
|
||
MMFM SP,A8,A9,A10
|
||
|
||
GU_WAIT
|
||
SLEEP 1
|
||
|
||
MOVE @DESTROYING_PARTS,A14,W
|
||
JRNZ GU_ABORT ;BR=BUSY DESTROYING
|
||
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVE A8,A0
|
||
GU_CHECK ;CHECK ALL PARTS
|
||
MOVE *A0(OFLAGS),A14,W
|
||
BTST B_OFSCRN,A14
|
||
JRZ GU_WAIT ;BR=PART IS ON SCREEN
|
||
MOVE *A0(OPARTS),A0,L
|
||
JRNZ GU_CHECK ;BR=ANOTHER PART
|
||
|
||
MOVK 2,A0
|
||
MOVI FLY_ON_DOWN_TABLE,A2
|
||
|
||
CLRC
|
||
RETP
|
||
GU_ABORT
|
||
MOVI PID_GOODIE,A0
|
||
CALLA KILLPROC_ALL
|
||
SETC
|
||
RETP
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* GO_SIDE - FLY OFF THE SIDE OF THE SCREEN *
|
||
* *
|
||
* PASS: *
|
||
* A8 = HEAD COPTER OBJECT *
|
||
* RETURN: *
|
||
* A0 = NUMBER OF ENTRIES IN RETURN TABLE *
|
||
* A2 = RETURN TABLE *
|
||
* *
|
||
**************************************************************************
|
||
|
||
GO_SIDE
|
||
MOVI M_CFINAL|M_CFLYING|M_CGUNS|M_CMISSLE,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MOVK 1,A14
|
||
MOVE A14,@COPTER_SND,W
|
||
|
||
MMTM SP,A8,A9,A10 ;FADE DOWN TO QUARTER
|
||
CALLA VOLUME_AT_Z
|
||
CLR A8
|
||
MOVE A1,A9
|
||
ORI [63,0],A9
|
||
MOVK 3,A10
|
||
MOVI 30,A11
|
||
CREATE PID_GOODIE,TRACK_FADE_PROC
|
||
MMFM SP,A8,A9,A10
|
||
|
||
MOVI 010000H,A11 ;RIGHT X ACCELERATION
|
||
MOVE *A8(OXVAL),A1,L
|
||
MOVE @XBASE,A14,L
|
||
SUB A14,A1
|
||
JRP GS_WAIT ;BR=GO RIGHT
|
||
NEG A11 ;LEFT X ACCELERATION
|
||
GS_WAIT
|
||
SLEEP 1
|
||
|
||
MOVE @DESTROYING_PARTS,A14,W
|
||
JRNZ GS_ABORT ;BR=BUSY DESTROYING
|
||
|
||
MOVE @COPTER_OBJ,A8,L
|
||
JAZ SUCIDE
|
||
|
||
MOVE *A8(OXVEL),A14,L
|
||
ADD A11,A14 ;ADD X ACCELERATION
|
||
MOVE A14,*A8(OXVEL),L
|
||
|
||
MOVE A8,A0
|
||
GS_CHECK ;CHECK ALL PARTS
|
||
MOVE *A0(OFLAGS),A14,W
|
||
BTST B_OFSCRN,A14
|
||
JRZ GS_WAIT ;BR=PART IS ON SCREEN
|
||
MOVE *A0(OPARTS),A0,L
|
||
JRNZ GS_CHECK ;BR=ANOTHER PART
|
||
|
||
MOVK 3,A0
|
||
MOVI FLY_ON_TABLE,A2
|
||
|
||
CLRC
|
||
RETP
|
||
GS_ABORT
|
||
MOVI PID_GOODIE,A0
|
||
CALLA KILLPROC_ALL
|
||
SETC
|
||
RETP
|
||
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COME_DOWN - COME DOWN FROM THE TOP OF THE SCREEN *
|
||
* *
|
||
* PASS: *
|
||
* A8 = HEAD COPTER OBJECT *
|
||
* RETURN: *
|
||
* NUTIN' *
|
||
* *
|
||
**************************************************************************
|
||
|
||
COME_DOWN
|
||
CALLR SET_RANDOM_COPTER_Z ;SET POSITION
|
||
MOVE A0,A3
|
||
|
||
CALLR SETUP_OFFSCRN_TABLE_PTR
|
||
|
||
CALLR SET_RANDOM_COPTER_X
|
||
MOVE A0,A4
|
||
|
||
CALLR SET_RANDOM_COPTER_Y
|
||
SUBI (171+19+6)*2 << 15,A1 ;ADJUST TO POSITION Y OFF SCREEN
|
||
MOVE A1,A2
|
||
|
||
MOVE A4,A1
|
||
|
||
CALLA SET_ANIPU
|
||
|
||
MOVK 30,A14
|
||
MOVE A14,*A8(OFLYTIME),W
|
||
|
||
MOVI M_CFINAL|M_CFLYTOPT,A14 ;FLY DOWN
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MMTM SP,A8,A9,A10 ;FADE UP FROM QUARTER
|
||
SOUND0 SND_COPTER_FULL
|
||
CALLA VOLUME_AT_Z
|
||
CLR A8
|
||
MOVE A1,A9
|
||
SLL 16,A9
|
||
ORI [0,63],A9
|
||
MOVK 3,A10
|
||
MOVI 30,A11
|
||
CREATE PID_IND,TRACK_FADE_PROC
|
||
MMFM SP,A8,A9,A10
|
||
|
||
MOVK B_CFLYTOPT,A11
|
||
JSRP COMMAND_WAIT ;WAIT TIL DONE
|
||
|
||
RETP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COME_SIDE - COME FROM EITHER SIDE OF THE SCREEN *
|
||
* *
|
||
* PASS: *
|
||
* A8 = HEAD COPTER OBJECT *
|
||
* RETURN: *
|
||
* NUTIN' *
|
||
* *
|
||
**************************************************************************
|
||
|
||
COME_SIDE
|
||
CALLR SET_RANDOM_COPTER_Z ;SET POSITION
|
||
MOVE A0,A3
|
||
|
||
CALLR SETUP_OFFSCRN_TABLE_PTR
|
||
|
||
CALLR SET_RANDOM_COPTER_X
|
||
MOVE A1,A4
|
||
SUBI (138*2*2) << 15,A4 ;ADJUST TO POSITION OFF DA LEFT
|
||
|
||
; MOVE *A8(OYVAL),A14,L
|
||
; CMPI CEILING_UNIVY,A14
|
||
; JRLT CS_RAND
|
||
; CMPI ABOVE_BUILDING_UNIVY,A14
|
||
; JRLE CS_NORAND
|
||
;CS_RAND
|
||
; MOVI 512,A0
|
||
; CALLA RANDPER
|
||
; JRNC CS_TRANS
|
||
; NEG A4
|
||
; JRUC CS_TRANS
|
||
;
|
||
;CS_NORAND
|
||
MOVE *A8(OXVAL),A1,L
|
||
MOVE @XBASE,A14,L
|
||
SUB A14,A1
|
||
JRN CS_TRANS ;BR=SET OFF DA LEFT SIDE
|
||
NEG A4 ;SET OFF DA RIGHT SIDE
|
||
CS_TRANS
|
||
ADDI FINAL_XBASE,A4 ;TRANSLATE TO UNIVERSE
|
||
|
||
CALLR SET_RANDOM_COPTER_Y
|
||
MOVE A0,A2
|
||
|
||
MOVE A4,A1
|
||
|
||
CALLA SET_ANIPU
|
||
|
||
MOVK 30,A14
|
||
MOVE A14,*A8(OFLYTIME),W
|
||
|
||
MOVI M_CFINAL|M_CFLYTOPT,A14 ;FLY ON
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MMTM SP,A8,A9,A10 ;FADE UP FROM QUARTER
|
||
SOUND0 SND_COPTER_FULL
|
||
CALLA VOLUME_AT_Z
|
||
CLR A8
|
||
MOVE A1,A9
|
||
SLL 16,A9
|
||
ORI [0,63],A9
|
||
MOVK 3,A10
|
||
MOVI 30,A11
|
||
CREATE PID_IND,TRACK_FADE_PROC
|
||
MMFM SP,A8,A9,A10
|
||
|
||
MOVK B_CFLYTOPT,A11
|
||
JSRP COMMAND_WAIT ;WAIT TIL DONE
|
||
|
||
RETP
|
||
|
||
**************************************************************************
|
||
* *
|
||
* COME_UP_FROM_BELOW - COME UP FROM BELOW THE TOP OF THE BUILDING *
|
||
* *
|
||
* PASS: *
|
||
* A8 = HEAD COPTER OBJECT *
|
||
* RETURN: *
|
||
* NUTIN' *
|
||
* *
|
||
**************************************************************************
|
||
|
||
COME_UP_FROM_BELOW
|
||
MOVI MAX_COPTER_Z,A3 ;DEFAULT TO COME UP IN FRONT
|
||
MOVI 256,A0
|
||
CALLA RANDPER
|
||
JRNC CUFB_SETZ ;BR=COME UP IN FRONT
|
||
MOVI MIN_COPTER_Z,A3 ;NO! COME UP IN BACK
|
||
CUFB_SETZ
|
||
MOVE A3,*A8(OZDEST),L
|
||
MOVE A3,A0
|
||
|
||
CALLR SETUP_OFFSCRN_TABLE_PTR
|
||
|
||
CALLR SET_RANDOM_COPTER_X
|
||
MOVE A0,A4
|
||
|
||
CALLR SET_RANDOM_COPTER_Y
|
||
|
||
MOVE A4,A1
|
||
MOVI BELOW_BUILDING_UNIVY,A2
|
||
|
||
CALLA SET_ANIPU
|
||
|
||
MOVK 30,A14
|
||
MOVE A14,*A8(OFLYTIME),W
|
||
|
||
MOVI M_CINVINCIBLE|M_CFINAL|M_CFLYTOPT,A14 ;FLY UP!
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
MMTM SP,A8,A9,A10 ;FADE UP FROM QUARTER
|
||
SOUND0 SND_COPTER_FULL
|
||
CALLA VOLUME_AT_Z
|
||
CLR A8
|
||
MOVE A1,A9
|
||
SLL 16,A9
|
||
ORI [0,63],A9
|
||
MOVK 3,A10
|
||
MOVI 30,A11
|
||
CREATE PID_IND,TRACK_FADE_PROC
|
||
MMFM SP,A8,A9,A10
|
||
|
||
MOVK B_CFLYTOPT,A11
|
||
JSRP COMMAND_WAIT ;WAIT TIL DONE
|
||
|
||
; CALLR MAKE_THREAT_SPEECH
|
||
|
||
MOVI M_CFINAL,A14
|
||
MOVE A14,*A8(OCOMMAND),W
|
||
|
||
RETP
|
||
|
||
.END
|
||
|
||
|