1756 lines
38 KiB
NASM
1756 lines
38 KiB
NASM
|
.MLIB "GXMACS.LIB"
|
|||
|
.FILE "GXHELGA.ASM"
|
|||
|
.TITLE "<<< GENERATION X -- Head Mistress Helga >>>"
|
|||
|
.WIDTH 132
|
|||
|
.OPTION B,D,L,T
|
|||
|
.MNOLIST
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* COPYRIGHT (C) 1994 MIDWAY MANUFACTURING COMPANY. *
|
|||
|
* ALL RIGHTS RESERVED. *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
* GET THE SYSTEM STUFF
|
|||
|
.INCLUDE "GX.INC"
|
|||
|
.INCLUDE "GXCONTRL.H"
|
|||
|
.INCLUDE "IMGTBL.GLO"
|
|||
|
.INCLUDE "GXHELGA.TBL"
|
|||
|
|
|||
|
.BSS HELGA_GRUNT_FLAGS,32 ;UHL
|
|||
|
.BSS HELGA_THREAT_FLAGS,32 ;UHL
|
|||
|
.BSS HELGA_BITCH_FLAGS,32 ;UHL
|
|||
|
|
|||
|
***** In this file
|
|||
|
.DEF START_HELGA, PROC_THRONE_HELGA, START_FINAL_HELGA
|
|||
|
.DEF MAKE_TABLE_SOUND
|
|||
|
|
|||
|
***** from GXAFUNC.ASM
|
|||
|
.REF A_STAY_TIL_WY_GT, A_Set_Var_Word, A_STAY_TIL_OFFSCRN
|
|||
|
|
|||
|
***** from GXMONDR2.ASM
|
|||
|
.REF MONDOR_START_FLAG
|
|||
|
|
|||
|
* SYMBOLS FROM GXD.ASM
|
|||
|
.REF SET_ODAG_MULTI
|
|||
|
|
|||
|
* SYMBOLS FROM GXENEMY.ASM
|
|||
|
.REF EFLASH_SHORT_INIT, GUN_FLASH_MULTI
|
|||
|
|
|||
|
***** from GXBLOOD.ASM
|
|||
|
.REF BLOODY_BULLET_HIT_OFFSET
|
|||
|
|
|||
|
* SYMBOLS FROM GXBEEK2.ASM
|
|||
|
.REF CURPLYR_ADJ
|
|||
|
|
|||
|
* SYMBOLS FROM GXCOG.ASM
|
|||
|
.REF HIT_ENEMY
|
|||
|
|
|||
|
***** from GXRAM.ASM
|
|||
|
.REF BASE_HIT, GUNS_OFF
|
|||
|
|
|||
|
* SYMBOLS FROM GXPALL.ASM
|
|||
|
; .REF A_CHANGE_PAL_MULTI
|
|||
|
|
|||
|
* SYMBOLS FROM GXHELI.ASM
|
|||
|
.REF PICK_ENTRY2
|
|||
|
|
|||
|
***** from GXDESK.ASM
|
|||
|
.REF A_ADD_YPOS
|
|||
|
|
|||
|
.TEXT
|
|||
|
|
|||
|
;1388 ($056c) 3 92.1 105.6 HELGA triumphant laugh
|
|||
|
;1389 ($056d) 3 69.1 79.2 HELGA had enough?
|
|||
|
|
|||
|
;1391 ($056f) 3 111.8 128.2 HELGA you've been a bad boy
|
|||
|
|
|||
|
;1392 ($0570) 3 80.4 92.2 HELGA irresponsible --
|
|||
|
;1393 ($0571) 3 69.9 80.2 HELGA scatterbrained --
|
|||
|
;1394 ($0572) 3 69.1 79.2 HELGA undisciplined --
|
|||
|
|
|||
|
;1390 ($056e) 3 108.0 123.8 HELGA you can't harm the headmistress
|
|||
|
;1395 ($0573) 3 36.8 42.2 HELGA brat!
|
|||
|
;1396 ($0574) 3 43.9 50.4 HELGA brats!
|
|||
|
;1397 ($0575) 3 78.7 90.2 HELGA how dare you?
|
|||
|
|
|||
|
;1398 ($0576) 3 137.3 157.4 HELGA you ain't seen nothing yet
|
|||
|
|
|||
|
;1399 ($0577) 1 17.2 19.7 HELGA effort grunt #0
|
|||
|
;1400 ($0578) 2 17.2 19.7 HELGA effort grunt #0
|
|||
|
;1401 ($0579) 3 17.2 19.7 HELGA effort grunt #0
|
|||
|
;1402 ($057a) 1 16.7 19.2 HELGA effort grunt #1
|
|||
|
;1403 ($057b) 2 16.7 19.2 HELGA effort grunt #1
|
|||
|
;1404 ($057c) 3 16.7 19.2 HELGA effort grunt #1
|
|||
|
;1405 ($057d) 1 16.3 18.7 HELGA effort grunt #2
|
|||
|
;1406 ($057e) 2 16.3 18.7 HELGA effort grunt #2
|
|||
|
;1407 ($057f) 3 16.3 18.7 HELGA effort grunt #2
|
|||
|
;1408 ($0580) 1 19.3 22.1 HELGA small damage
|
|||
|
;1409 ($0581) 2 19.3 22.1 HELGA small damage
|
|||
|
;1410 ($0582) 3 19.3 22.1 HELGA small damage
|
|||
|
;1411 ($0583) 1 43.5 49.9 HELGA medium damage #0
|
|||
|
;1412 ($0584) 2 43.5 49.9 HELGA medium damage #0
|
|||
|
;1413 ($0585) 3 43.5 49.9 HELGA medium damage #0
|
|||
|
;1414 ($0586) 1 31.8 36.5 HELGA medium damage #1
|
|||
|
;1415 ($0587) 2 31.8 36.5 HELGA medium damage #1
|
|||
|
;1416 ($0588) 3 31.8 36.5 HELGA medium damage #1
|
|||
|
|
|||
|
;1436 ($059c) 3 92.9 106.6 HELGA I will destroy you
|
|||
|
;1437 ($059d) 3 81.2 93.1 HELGA you will obey
|
|||
|
|
|||
|
*
|
|||
|
* Sounds for Helga
|
|||
|
*
|
|||
|
SND_JUMP_LAND
|
|||
|
.WORD 0F330H,26,0A1D1H,0
|
|||
|
;SND_HELGA_ASS
|
|||
|
; .WORD 0F142H,26,0A4EFH,0
|
|||
|
SND_HELGA_TUNE
|
|||
|
.WORD 0F0FDH,1,08014H,0
|
|||
|
SND_HELGA_TAUNT
|
|||
|
.WORD 0F380H,185,08506H,0
|
|||
|
|
|||
|
SND_HELGA_BODY_THUD
|
|||
|
.WORD 0F120H,26,0A1CFH,0
|
|||
|
|
|||
|
SND_BAD_BOY
|
|||
|
.WORD 0F3F1H,112,0856FH,0
|
|||
|
SND_YOU_AINT_SEEN
|
|||
|
.WORD 0F380H,138,08576H,0
|
|||
|
|
|||
|
|
|||
|
SND_IRR
|
|||
|
.WORD 0F380H,81,08570H,0
|
|||
|
SND_SCAT
|
|||
|
.WORD 0F380H,70,08571H,0
|
|||
|
SND_UND
|
|||
|
.WORD 0F380H,70,08572H,0
|
|||
|
SND_HOW_DARE_YOU
|
|||
|
.WORD 0F380H,78,08575H,0
|
|||
|
|
|||
|
HELGA_BITCHES EQU 4
|
|||
|
|
|||
|
HELGA_BITCH_TABLE
|
|||
|
.LONG SND_IRR, SND_SCAT, SND_UND, SND_HOW_DARE_YOU
|
|||
|
|
|||
|
|
|||
|
SND_HELGA_FIRE
|
|||
|
.WORD 0E303H,10,0A10BH,0
|
|||
|
|
|||
|
SND_HAD_ENOUGH
|
|||
|
.WORD 0F33FH,70,0856CH,0
|
|||
|
SND_YOU_CANT_HARM
|
|||
|
.WORD 0F33FH,108,0856EH,0
|
|||
|
SND_I_WILL_DESTROY_YOU
|
|||
|
.WORD 0F33FH,93,0859CH,0
|
|||
|
SND_YOU_WILL_OBEY
|
|||
|
.WORD 0F33FH,82,0859DH,0
|
|||
|
|
|||
|
HELGA_THREATS EQU 4
|
|||
|
|
|||
|
HELGA_THREAT_TABLE
|
|||
|
.LONG SND_HAD_ENOUGH, SND_YOU_CANT_HARM, SND_I_WILL_DESTROY_YOU
|
|||
|
.LONG SND_YOU_WILL_OBEY
|
|||
|
|
|||
|
SND_HELGA_STUN
|
|||
|
.WORD 0F340H,20,0A582H,0
|
|||
|
|
|||
|
SND_HELGA_FALLDOWN_0
|
|||
|
.WORD 0F360H,44,0A585H,0
|
|||
|
SND_HELGA_FALLDOWN_1
|
|||
|
.WORD 0F360H,32,0A588H,0
|
|||
|
|
|||
|
SND_HELGA_GRUNT_0
|
|||
|
.WORD 0F360H,18,0A579H,0
|
|||
|
SND_HELGA_GRUNT_1
|
|||
|
.WORD 0F360H,17,0A57CH,0
|
|||
|
SND_HELGA_GRUNT_2
|
|||
|
.WORD 0F360H,17,0A57FH,0
|
|||
|
|
|||
|
HELGA_GRUNTS EQU 3
|
|||
|
|
|||
|
HELGA_GRUNT_TABLE
|
|||
|
.LONG SND_HELGA_GRUNT_0,SND_HELGA_GRUNT_1,SND_HELGA_GRUNT_2
|
|||
|
|
|||
|
FINAL_STAGE_Y EQU -02FB800H
|
|||
|
|
|||
|
CARTWHEEL_XVEL EQU 01AAAAH ;028000H;01AAAAH;014000H;010000H
|
|||
|
|
|||
|
CARTWHEEL_TIME EQU 3 ;2 ;3 ;4 ;5
|
|||
|
|
|||
|
;CARTWHEEL_XVEL_TABLE
|
|||
|
; .LONG 014000H, 01AAAAH, 028000H
|
|||
|
|
|||
|
MIN_HIT_TIME EQU 20
|
|||
|
|
|||
|
HELGA_GUN_HITS EQU 7
|
|||
|
|
|||
|
HELGA_HANG_TIME EQU 60
|
|||
|
|
|||
|
THRONE_X_ERROR EQU 0100000H
|
|||
|
|
|||
|
THROW_YACCEL EQU 04000H
|
|||
|
|
|||
|
ROCKET_PUSH_ZVEL EQU 080H
|
|||
|
|
|||
|
Z_GET_CLOSER EQU 01000H
|
|||
|
|
|||
|
FARTHEST_WORLD_Z EQU 0C000H
|
|||
|
|
|||
|
MIN_THROW_TIME EQU 120
|
|||
|
|
|||
|
MAX_THROWS EQU 1
|
|||
|
|
|||
|
MIN_STUN_TIME EQU 100
|
|||
|
|
|||
|
MAX_STUNS EQU 2
|
|||
|
|
|||
|
MIN_SHOOTTIME EQU 88
|
|||
|
|
|||
|
*
|
|||
|
* ODATA for Helga enemy
|
|||
|
*
|
|||
|
|
|||
|
OATE_ROCKET EQU ODATA ;UHL ROCKET OBJECT
|
|||
|
OHFLAGS EQU ODATA+020H ;UHW FLAGS
|
|||
|
OCARTSPEED EQU ODATA+030H ;UHW CARTWHEEL SPEED TIME
|
|||
|
OLASTHITTIME EQU ODATA+040H ;UHL TIME OF LAST HIT
|
|||
|
OHITS EQU ODATA+060H ;UHL HITS FROM EACH PLAYER
|
|||
|
OTHROWS EQU ODATA+080H ;UHW NUMBER OF THROWS IN A ROW
|
|||
|
OSTUNS EQU ODATA+090H ;UHW NUMBER OF STUNS IN A ROW
|
|||
|
OLASTTHROW EQU ODATA+0A0H ;UHL TIME OF LAST THROW
|
|||
|
OLASTSTUN EQU ODATA+0C0H ;UHL TIME OF LAST STUN
|
|||
|
OTHRONE_OBJ EQU ODATA+0E0H ;UHL Throne object
|
|||
|
OSHOOTTIME EQU ODATA+0100H ;UHL TIME OF HELGA START/LAST SHOOTIN'
|
|||
|
|
|||
|
M_INTRO EQU 1
|
|||
|
|
|||
|
B_INTRO EQU 0
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* START_FINAL_HELGA *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
START_FINAL_HELGA
|
|||
|
MOVI FINAL_HELGA_INIT,B0 ;Get dat multi-parter
|
|||
|
CALLA CREATE_ENEMY
|
|||
|
|
|||
|
CALLA GET_SHAD_MULTI ;Setup her shadow
|
|||
|
|
|||
|
CALLA INSERT_ENEMY
|
|||
|
|
|||
|
; MOVE @YWORLD,A14,L
|
|||
|
; SUBI FINAL_STAGE_Y,A14
|
|||
|
; MOVE A14,*A8(OGRNDOFF),L
|
|||
|
|
|||
|
MOVI 02000H,A14
|
|||
|
MOVE A14,*A8(OYACCEL),W
|
|||
|
|
|||
|
MOVK M_INTRO,A14
|
|||
|
MOVE A14,*A8(OHFLAGS),W
|
|||
|
|
|||
|
MOVK 4,A14
|
|||
|
MOVE A14,*A8(OCARTSPEED),W
|
|||
|
|
|||
|
MOVI [HELGA_GRUNTS, 0],A14
|
|||
|
MOVE A14,@HELGA_GRUNT_FLAGS,L
|
|||
|
|
|||
|
MOVI [HELGA_BITCHES, 0],A14
|
|||
|
MOVE A14,@HELGA_BITCH_FLAGS,L
|
|||
|
|
|||
|
MOVI [HELGA_THREATS, 0],A14
|
|||
|
MOVE A14,@HELGA_THREAT_FLAGS,L
|
|||
|
|
|||
|
MOVE A8,A7
|
|||
|
MOVI OID_MONDOR,A0
|
|||
|
CALLA EXIST_OBJ_ALL
|
|||
|
LOCKON Z
|
|||
|
MOVE A8,*A7(OTHRONE_OBJ),L
|
|||
|
|
|||
|
RETS
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_HELGA_GRUNT *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
A_HELGA_GRUNT
|
|||
|
MOVI HELGA_GRUNT_TABLE,A3
|
|||
|
MOVI HELGA_GRUNT_FLAGS,A6
|
|||
|
MOVK HELGA_GRUNTS-1,A7
|
|||
|
CALLR MAKE_TABLE_SOUND
|
|||
|
RETS
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_HELGA_THREAT *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
A_HELGA_THREAT
|
|||
|
MOVI HELGA_THREAT_TABLE,A3
|
|||
|
MOVI HELGA_THREAT_FLAGS,A6
|
|||
|
MOVK HELGA_THREATS-1,A7
|
|||
|
CALLR MAKE_TABLE_SOUND
|
|||
|
RETS
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_HELGA_BITCH *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
A_HELGA_BITCH
|
|||
|
MOVI HELGA_BITCH_TABLE,A3
|
|||
|
MOVI HELGA_BITCH_FLAGS,A6
|
|||
|
MOVK HELGA_BITCHES-1,A7
|
|||
|
CALLR MAKE_TABLE_SOUND
|
|||
|
RETS
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* MAKE_TABLE_SOUND *
|
|||
|
* *
|
|||
|
* PASS: *
|
|||
|
* A3 = ADDRESS OF TABLE *
|
|||
|
* A6 = ADDRESS OF FLAGS LONG WORD *
|
|||
|
* A7 = MAXIMUM NUMBER OF SOUNDS - 1 *
|
|||
|
* *
|
|||
|
* RETURN: *
|
|||
|
* NUTIN' *
|
|||
|
* UPDATED FLAGS LONG WORD *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
MAKE_TABLE_SOUND
|
|||
|
MMTM SP,A0,A1,A4,A5
|
|||
|
|
|||
|
MOVE *A6,A1,L
|
|||
|
MOVE A1,A0
|
|||
|
SRL 16,A0
|
|||
|
NEG A0 ;FLAG TABLE OF LONG WORDS
|
|||
|
ZEXT A1,W
|
|||
|
MOVE A1,A5
|
|||
|
CALLR PICK_ENTRY2
|
|||
|
JRNZ MTS_SAVE ;BR=NOT LAST ENTRY PICKED
|
|||
|
MOVE A7,A0
|
|||
|
XOR A5,A1
|
|||
|
MTS_SAVE
|
|||
|
SLL 16,A0
|
|||
|
OR A0,A1
|
|||
|
MOVE A4,A0
|
|||
|
CALLA ONESND
|
|||
|
JRNZ MTS_NOGOOD ;BR=SANS SOUND
|
|||
|
MOVE A1,*A6,L
|
|||
|
MTS_NOGOOD
|
|||
|
MMFM SP,A0,A1,A4,A5
|
|||
|
RETS
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_WAIT_TIL_ON_GROUND *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
A_WAIT_TIL_ON_GROUND
|
|||
|
MOVE *A8(OFLAGS),A14,W
|
|||
|
BTST B_GCOLL,A14
|
|||
|
JRZ AWTOG_DONE
|
|||
|
MOVE *A8(AnimFrm),A14,L
|
|||
|
SUBI 050H,A14
|
|||
|
MOVE A14,*A8(AnimFrm),L
|
|||
|
AWTOG_DONE
|
|||
|
RETS
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_WAIT_TIL_HELGA_OFFSCRN *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
A_WAIT_TIL_HELGA_OFFSCRN
|
|||
|
CALLA GET_HEAD_PART
|
|||
|
MOVK 4,A0
|
|||
|
AWTHO_LUPE
|
|||
|
MOVB *A8(OFLAGS),A14
|
|||
|
JRNN AWTHO_ON ;BR=ON SCREEN
|
|||
|
DEC A0
|
|||
|
JRZ AWTHO_DONE ;BR=OFF SCREEN
|
|||
|
MOVE *A8(OPARTS),A8,L
|
|||
|
JRNZ AWTHO_LUPE ;BR=MORE PARTS TO CHECK
|
|||
|
JRUC AWTHO_DONE
|
|||
|
AWTHO_ON
|
|||
|
MOVE *A8(AnimFrm),A14,L
|
|||
|
SUBI 050H,A14
|
|||
|
MOVE A14,*A8(AnimFrm),L
|
|||
|
AWTHO_DONE
|
|||
|
RETS
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_HELGA_FIRE_FNC *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
A_HELGA_SHORT_FIRE_FNC
|
|||
|
MOVI [-75,-17],A3 ;FIRING OFFSET
|
|||
|
MOVI EFLASH_SHORT_INIT,B0
|
|||
|
CALLA GUN_FLASH_MULTI ;MAKE A GUN FLASH
|
|||
|
JRUC AHFF_HIT
|
|||
|
A_HELGA_FIRE_FNC
|
|||
|
MOVI [-75,-17],A3 ;FIRING OFFSET
|
|||
|
CALLA EGUN_FLASH_MULTI ;MAKE A GUN FLASH
|
|||
|
AHFF_HIT
|
|||
|
MOVE @BASE_HIT,A5,L
|
|||
|
; SLL 4,A5
|
|||
|
SLL 4+1,A5
|
|||
|
|
|||
|
; CLR A5
|
|||
|
|
|||
|
ALLPLYR PLAYER_HIT ;HIT 'EM ALL
|
|||
|
|
|||
|
SOUND1 SND_HELGA_FIRE
|
|||
|
|
|||
|
RETS
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_START_HELGA_WHEEL *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
A_START_HELGA_WHEEL
|
|||
|
CLR A14
|
|||
|
MOVE A14,*A8(OZVEL),L
|
|||
|
|
|||
|
; MOVE *A8(OCARTSPEED),A14,W
|
|||
|
|
|||
|
MOVI CARTWHEEL_XVEL,A1
|
|||
|
ASHW_RAND
|
|||
|
MOVE @RAND,A0,W
|
|||
|
ANDI M_FLIPH,A0
|
|||
|
JRZ ASHW_SET ;BR=NO FLIP
|
|||
|
NEG A1
|
|||
|
ASHW_SET
|
|||
|
CALLA SET_FLPS
|
|||
|
|
|||
|
MOVE A1,*A8(OXVEL),L
|
|||
|
|
|||
|
MOVI HELGA_WHEEL_ANIM,A14
|
|||
|
MOVE A14,*A8(AnimScr),L
|
|||
|
|
|||
|
MOVK CARTWHEEL_TIME,A0
|
|||
|
ASHW_SLEEP_LUPE
|
|||
|
MOVB A0,*A8(AnimSLP)
|
|||
|
MOVE *A8(OPARTS),A8,L
|
|||
|
JRNZ ASHW_SLEEP_LUPE
|
|||
|
|
|||
|
JRUC A_HELGA_GRUNT
|
|||
|
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_CENTER_HELGA_WHEEL - CARTWHEEL TOWARD CENTER SCREEN *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
A_CENTER_HELGA_WHEEL
|
|||
|
CLR A14
|
|||
|
MOVE A14,*A8(OZVEL),L
|
|||
|
|
|||
|
CLR A0 ;DEFAULT NO FLIP
|
|||
|
MOVI CARTWHEEL_XVEL,A1
|
|||
|
|
|||
|
MOVI HELGA_WHEEL_ANIM,A14
|
|||
|
MOVE A14,*A8(AnimFrm),L
|
|||
|
|
|||
|
MOVE *A8(OXVAL),A2,L
|
|||
|
MOVE @XBASE,A14,L
|
|||
|
SUB A14,A2
|
|||
|
JRZ ASHW_RAND ;BR=IN CENTER ALREADY, RANDOMIZE
|
|||
|
JRN ASHW_SET ;BR=ON THE LEFT, NO FLIP
|
|||
|
MOVK M_FLIPH,A0 ;ON THE RIGHT, FLIP
|
|||
|
NEG A1
|
|||
|
JRUC ASHW_SET
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_AWAY_HELGA_WHEEL - CARTWHEEL AWAY FROM CENTER SCREEN *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
A_AWAY_HELGA_WHEEL
|
|||
|
CLR A14
|
|||
|
MOVE A14,*A8(OZVEL),L
|
|||
|
|
|||
|
CLR A0 ;DEFAULT NO FLIP
|
|||
|
MOVI CARTWHEEL_XVEL,A1
|
|||
|
|
|||
|
MOVI HELGA_WHEEL_ANIM,A14
|
|||
|
MOVE A14,*A8(AnimFrm),L
|
|||
|
|
|||
|
MOVE *A8(OXVAL),A2,L
|
|||
|
MOVE @XBASE,A14,L
|
|||
|
SUB A14,A2
|
|||
|
JRZ ASHW_RAND ;BR=IN CENTER ALREADY, RANDOMIZE
|
|||
|
JRNN ASHW_SET ;BR=ON THE LEFT, NO FLIP
|
|||
|
MOVK M_FLIPH,A0 ;ON THE RIGHT, FLIP
|
|||
|
NEG A1
|
|||
|
JRUC ASHW_SET
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_WHEEL_CHECK *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
A_WHEEL_CHECK
|
|||
|
CALLA SCRTST
|
|||
|
JRNZ AWC_OFF
|
|||
|
|
|||
|
MOVE *A8(OZVAL),A0,L
|
|||
|
MOVE *A8(OXVAL),A1,L
|
|||
|
|
|||
|
UTOSX A0,A1
|
|||
|
|
|||
|
CMPI SCRLFT+SCRWIDTH/6,A1
|
|||
|
JRLT AWC_DONE
|
|||
|
CMPI SCRRGT-SCRWIDTH/6,A1
|
|||
|
JRGT AWC_DONE
|
|||
|
|
|||
|
MOVE *A8(OSHOOTTIME),A14,L ;CHECK LAST SHOOT
|
|||
|
JRNZ AWC_SHOOT ;BR=SHOOT NOW
|
|||
|
|
|||
|
MOVI 512+128,A0
|
|||
|
CALLA RANDPER
|
|||
|
JRNC AWC_DONE
|
|||
|
AWC_SHOOT
|
|||
|
CLR A14
|
|||
|
MOVE A14,*A8(OXVEL),L
|
|||
|
|
|||
|
MOVI HELGA_START_SHOOT_ANIM,A14
|
|||
|
MOVE A14,*A8(AnimFrm),L
|
|||
|
|
|||
|
AWC_DONE
|
|||
|
RETS
|
|||
|
AWC_OFF
|
|||
|
MOVE *A8(OXVAL),A0,L
|
|||
|
MOVE @XBASE,A14,L
|
|||
|
SUB A14,A0
|
|||
|
MOVE *A8(OXVEL),A1,L
|
|||
|
; MOVE *A8(OCTRL),A1,W
|
|||
|
; SLL (31-B_FLIPH),A1 ;SHIFT UP TO SIGN BIT
|
|||
|
XOR A0,A1
|
|||
|
SRL 31,A1
|
|||
|
JRNZ AWC_DONE
|
|||
|
; JRZ AWC_DONE
|
|||
|
|
|||
|
MOVE *A8(OZVAL),A1,L
|
|||
|
SUBI Z_GET_CLOSER,A1
|
|||
|
MOVE @ZBASE,A14,L
|
|||
|
ADDI 08000H,A14
|
|||
|
CMP A14,A1
|
|||
|
JRGT AWC_SET_Z
|
|||
|
MOVE A14,A1
|
|||
|
AWC_SET_Z
|
|||
|
MOVE A1,A2
|
|||
|
|
|||
|
MOVI 512,A0
|
|||
|
CALLA RANDPER
|
|||
|
JRNC AWC_JUMP_DOWN
|
|||
|
|
|||
|
CALLA SET_ANIPZU
|
|||
|
|
|||
|
MOVK M_FLIPH,A0
|
|||
|
CALLA TOGGLE_FLPS
|
|||
|
|
|||
|
MOVE *A8(OXVEL),A14,L
|
|||
|
NEG A14
|
|||
|
MOVE A14,*A8(OXVEL),L
|
|||
|
|
|||
|
RETS
|
|||
|
AWC_JUMP_DOWN
|
|||
|
CLR A14
|
|||
|
MOVE A14,*A8(OXVEL),L
|
|||
|
|
|||
|
MOVE @RAND,A3,W
|
|||
|
MOVE A3,A0
|
|||
|
ANDI M_FLIPH,A0
|
|||
|
CALLA SET_FLPS
|
|||
|
|
|||
|
; MOVI SCRRGT-SCRWIDTH/6,A0
|
|||
|
MOVI SCRLFT+SCRWIDTH/3,A0
|
|||
|
MOVI SCRLFT+SCRWIDTH/6,A1
|
|||
|
CALLA RANGERND
|
|||
|
BTST 15,A3
|
|||
|
JRZ AWC_TRANS ;BR=ON DA LEFT SIDE
|
|||
|
ADDI 200,A0
|
|||
|
AWC_TRANS
|
|||
|
MOVE A0,A1
|
|||
|
STOUX A2,A1
|
|||
|
|
|||
|
MOVE A2,A3
|
|||
|
MOVI -0500000H,A2
|
|||
|
MOVE @YBASE,A14,L
|
|||
|
SUB A14,A2
|
|||
|
CALLA SET_ANIPU
|
|||
|
|
|||
|
MOVI 04000H,A14
|
|||
|
MOVE A14,*A8(OYACCEL),W
|
|||
|
|
|||
|
MOVE *A8(OFLAGS),A14,W
|
|||
|
ORI M_GCOLL,A14
|
|||
|
MOVE A14,*A8(OFLAGS),W
|
|||
|
|
|||
|
MOVI FINAL_DROP_ANIM,A1
|
|||
|
CALLA STRT_ANIM
|
|||
|
|
|||
|
RETS
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_HELGA_JUMP_DOWN *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
A_HELGA_JUMP_DOWN
|
|||
|
MOVE *A8(OZVAL),A2,L
|
|||
|
JRUC AWC_JUMP_DOWN
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_CHECK_JUMP_UP *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
A_CHECK_JUMP_UP
|
|||
|
MOVE *A8(AnimScr),A14,L
|
|||
|
CMPI HELGA_JUMP_UP_ANIM,A14
|
|||
|
JRNE ENABLE_HELGA_VECTORS
|
|||
|
RETS
|
|||
|
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_SET_WHEEL_XVEL *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
A_SET_WHEEL_XVEL
|
|||
|
CALLA GETAFARG_LONG
|
|||
|
MOVE *A8(OCTRL),A14,W
|
|||
|
BTST B_FLIPH,A14
|
|||
|
JRZ ASWX_SET
|
|||
|
NEG A0
|
|||
|
ASWX_SET
|
|||
|
MOVE A0,*A8(OXVEL),L
|
|||
|
RETS
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_JUMP_ON_SET_HFLAG *
|
|||
|
* A_JUMP_ON_CLR_HFLAG *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
A_JUMP_ON_SET_HFLAG
|
|||
|
CALLA GETAFARG_WORD
|
|||
|
MOVE *A8(OHFLAGS),A14,W
|
|||
|
AND A0,A14
|
|||
|
JRNZ AJOH_JUMP
|
|||
|
RETS
|
|||
|
A_JUMP_ON_CLR_HFLAG
|
|||
|
CALLA GETAFARG_WORD
|
|||
|
MOVE *A8(OHFLAGS),A14,W
|
|||
|
AND A0,A14
|
|||
|
JRNZ AJOH_DONE
|
|||
|
AJOH_JUMP
|
|||
|
CALLA GETAFARG_LONG
|
|||
|
MOVE A0,*A8(AnimFrm),L
|
|||
|
AJOH_DONE
|
|||
|
RETS
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_TOGGLE_HELGA_FLIP *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
A_TOGGLE_HELGA_FLIP
|
|||
|
MOVK M_FLIPH,A0
|
|||
|
CALLA TOGGLE_FLPS
|
|||
|
JAUC SET_ODAG_MULTI
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* HELGA COLLISION VECTORS *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
HELGA_CVECT
|
|||
|
WWL OID_PROCKET,~MASK_PLAYER,HELGA_ROCKET_COLL
|
|||
|
WWL OID_PEXPLOSION,~MASK_PLAYER,HELGA_EXPLO_COLL
|
|||
|
HELGA_GROUND_CVECT
|
|||
|
WWL OID_GRND,0FFFFH,HELGA_GRND_COLLVECT
|
|||
|
WL 0,DUMCRETS
|
|||
|
|
|||
|
HELGA_GRND_COLLVECT
|
|||
|
CLR A14
|
|||
|
MOVE A14,*A8(OYACCEL),W
|
|||
|
MOVE A14,*A8(OXVEL),L
|
|||
|
MOVE A14,*A8(OYVEL),L
|
|||
|
MOVE A14,*A8(OZVEL),L
|
|||
|
|
|||
|
MOVE *A8(OFLAGS),A14,W
|
|||
|
ANDNI M_GCOLL,A14
|
|||
|
MOVE A14,*A8(OFLAGS),W
|
|||
|
|
|||
|
MOVI FINAL_STAGE_Y,A1
|
|||
|
CALLA SET_ANIPYU
|
|||
|
|
|||
|
RETS
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* HELGA_ROCKET_COLL - ROCKET COLLISION WITH HELGA OBJECT *
|
|||
|
* *
|
|||
|
* PASS: *
|
|||
|
* A0 = ROCKET OBJECT *
|
|||
|
* A8 = HELGA OBJECT *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
HELGA_ROCKET_COLL
|
|||
|
CALLA GETHEADPART ;OF ROCKET
|
|||
|
MOVE A0,*A8(OATE_ROCKET),L
|
|||
|
RETS
|
|||
|
|
|||
|
HELGA_EXPLO_COLL
|
|||
|
CALLA GETHEADPART ;OF EXPLOSION
|
|||
|
MOVE *A8(OATE_ROCKET),A14,L
|
|||
|
JRZ HEC_DONE ;BR=NO ROCKET COLLISION
|
|||
|
CMP A0,A14
|
|||
|
JRNE HEC_DONE ;BR=DIFFERENT EXPLOSION
|
|||
|
|
|||
|
MOVE *A0(RL_INTENDED_OBJ),A14,L ;DO WE HAVE THE RIGHT TARGET?
|
|||
|
CMP A8,A14
|
|||
|
JRNE HEC_DONE ;BR=NOPE. NOT THE RIGHT TARGET.
|
|||
|
|
|||
|
CLRM *A8(OATE_ROCKET),L ;HIT! READY FOR ANOTHER!
|
|||
|
|
|||
|
; MOVE *A0(OID),A0,W ;GET PLAYER DATA ADDRESS
|
|||
|
; CALLA POID_TO_PDATA
|
|||
|
|
|||
|
CALLA GET_HEAD_PART
|
|||
|
; MOVE *A8(OYVEL),A14,L
|
|||
|
; JRNZ HEC_DONE
|
|||
|
; MOVE *A8(OZVEL),A14,L
|
|||
|
; JRNZ HEC_DONE
|
|||
|
|
|||
|
MOVI SND_HELGA_FALLDOWN_0,A0
|
|||
|
MOVE @RAND,A14,W
|
|||
|
BTST B_FLIPH,A14
|
|||
|
JRZ HEC_SOUND
|
|||
|
MOVI SND_HELGA_FALLDOWN_1,A0
|
|||
|
HEC_SOUND
|
|||
|
CALLA ONESND
|
|||
|
|
|||
|
CLR A14
|
|||
|
MOVE A14,*A8(OYACCEL),W
|
|||
|
MOVE A14,*A8(OXVEL),L
|
|||
|
MOVE A14,*A8(OYVEL),L
|
|||
|
|
|||
|
MOVE *A8(OTHRONE_OBJ),A9,L
|
|||
|
|
|||
|
MOVE *A8(OXVAL),A3,L ;HELGA UNIVERSE X
|
|||
|
MOVE *A9(OXVAL),A14,L ;THRONE UNIVERSE X
|
|||
|
SUB A14,A3
|
|||
|
ABS A3
|
|||
|
|
|||
|
MOVI ROCKET_PUSH_ZVEL,A0
|
|||
|
|
|||
|
MOVE *A8(OLASTTHROW),A14,L
|
|||
|
MOVE @WAVEIRQS,A5,L
|
|||
|
MOVE A5,*A8(OLASTTHROW),L
|
|||
|
SUB A14,A5
|
|||
|
|
|||
|
MOVE *A8(OZVAL),A1,L
|
|||
|
MOVE @ZBASE,A14,L
|
|||
|
SUB A14,A1
|
|||
|
CMPI FARTHEST_WORLD_Z,A1
|
|||
|
JRLT HEC_SET_ZVEL
|
|||
|
|
|||
|
CLR A0 ;CLEAR PUSH VELOCITY
|
|||
|
|
|||
|
CMPI THRONE_X_ERROR,A3
|
|||
|
JRGT HEC_SET_ZVEL ;BR=NOT WITHIN THRONE LIMIT
|
|||
|
|
|||
|
CMPI MIN_THROW_TIME,A5
|
|||
|
JRLE HEC_SET_ZVEL ;BR=UNDER MINIMUM TIME
|
|||
|
|
|||
|
MOVI HELGA_THRONE_START_ANIM,A1
|
|||
|
CALLA STRT_ANIM
|
|||
|
|
|||
|
; MOVI DUMCOLL,A14
|
|||
|
; MOVE A14,*A8(OCVECT),L
|
|||
|
; MOVI DUMRETS,A14
|
|||
|
; MOVE A14,*A8(OGUNVECT),L
|
|||
|
|
|||
|
CALLA ALL_COLLS_OFF
|
|||
|
|
|||
|
MOVK 1,A14
|
|||
|
MOVE A14,@GUNS_OFF,W
|
|||
|
|
|||
|
CALLA DELETE_SHADOW ;SHADOW GO AWAY
|
|||
|
|
|||
|
RETS
|
|||
|
|
|||
|
HEC_SET_ZVEL
|
|||
|
MOVE A0,*A8(OZVEL),L
|
|||
|
|
|||
|
MOVI -020000H,A14
|
|||
|
MOVE A14,*A8(OYVEL),L
|
|||
|
MOVI 02000H,A14
|
|||
|
MOVE A14,*A8(OYACCEL),W
|
|||
|
|
|||
|
MOVE *A8(OFLAGS),A14,W
|
|||
|
ORI M_GCOLL,A14
|
|||
|
MOVE A14,*A8(OFLAGS),W
|
|||
|
|
|||
|
CLR A14
|
|||
|
MOVB A14,*A8(AnimSlp)
|
|||
|
|
|||
|
MOVI HELGA_FLYBACK_ANIM,A14
|
|||
|
MOVE A14,*A8(AnimFrm),L
|
|||
|
|
|||
|
CLR A4
|
|||
|
CMPI MIN_THROW_TIME,A5
|
|||
|
JRGT HEC_NO_JUMP ;BR=OVER MINIMUM TIME
|
|||
|
MOVE *A8(OTHROWS),A4,W
|
|||
|
INC A4
|
|||
|
CMPK MAX_THROWS,A4
|
|||
|
JRLT HEC_NO_JUMP ;BR=NOT THROWN ENOUGH
|
|||
|
CLR A14
|
|||
|
MOVE A14,*A8(OTHROWS),W
|
|||
|
MOVI HELGA_JUMP_UP_ANIM,A14
|
|||
|
JRUC HEC_SET_RECOVER_ANIM
|
|||
|
HEC_NO_JUMP
|
|||
|
MOVE A4,*A8(OTHROWS),W
|
|||
|
|
|||
|
MOVI HELGA_START_SHOOT_ANIM,A14
|
|||
|
|
|||
|
CMPI THRONE_X_ERROR*3/2,A3
|
|||
|
JRGT HEC_SET_RECOVER_ANIM
|
|||
|
|
|||
|
MOVI HELGA_AWAY_WHEEL_ANIM,A14
|
|||
|
HEC_SET_RECOVER_ANIM
|
|||
|
|
|||
|
MOVE A14,*A8(AnimScr),L
|
|||
|
|
|||
|
CALLR DISABLE_HELGA_VECTORS
|
|||
|
HEC_DONE
|
|||
|
RETS
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* DISABLE_HELGA_VECTORS *
|
|||
|
* DISABLE_GUN_VECTOR *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
DISABLE_HELGA_VECTORS
|
|||
|
MMTM SP,A1,A2,A3,A8
|
|||
|
MOVI HELGA_GROUND_CVECT,A2
|
|||
|
JRUC DHV_GO
|
|||
|
DISABLE_GUN_VECTOR
|
|||
|
MMTM SP,A1,A2,A3,A8
|
|||
|
MOVI HELGA_CVECT,A2
|
|||
|
DHV_GO
|
|||
|
CALLA GET_HEAD_PART
|
|||
|
MOVI HELGA_FX_GUNVECT,A1
|
|||
|
MOVK 4,A3
|
|||
|
DHV_LUPE
|
|||
|
MOVE A1,*A8(OGUNVECT),L
|
|||
|
MOVE A2,*A8(OCVECT),L
|
|||
|
DEC A3
|
|||
|
JRZ DHV_DONE
|
|||
|
MOVE *A8(OPARTS),A8,L
|
|||
|
JRNZ DHV_LUPE
|
|||
|
DHV_DONE
|
|||
|
MMFM SP,A1,A2,A3,A8
|
|||
|
RETS
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* ENABLE_HELGA_VECTORS *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
ENABLE_HELGA_VECTORS
|
|||
|
MMTM SP,A1,A2,A3,A8
|
|||
|
CALLA GET_HEAD_PART
|
|||
|
MOVI HELGA_GUNVECT,A1
|
|||
|
MOVI HELGA_CVECT,A2
|
|||
|
MOVK 4,A3
|
|||
|
EHV_LUPE
|
|||
|
MOVE A1,*A8(OGUNVECT),L
|
|||
|
MOVE A2,*A8(OCVECT),L
|
|||
|
DEC A3
|
|||
|
JRZ EHV_DONE
|
|||
|
MOVE *A8(OPARTS),A8,L
|
|||
|
JRNZ EHV_LUPE
|
|||
|
EHV_DONE
|
|||
|
MMFM SP,A1,A2,A3,A8
|
|||
|
RETS
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* HELGA GUN VECTOR *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
HELGA_FX_GUNVECT
|
|||
|
SOUND1 SND_HELGA_BODY_THUD
|
|||
|
CALLA BLOODY_BULLET_HIT_OFFSET
|
|||
|
RETS
|
|||
|
|
|||
|
HELGA_GUNVECT
|
|||
|
SOUND1 SND_HELGA_BODY_THUD
|
|||
|
|
|||
|
CALLA GET_HEAD_PART
|
|||
|
; MOVE *A8(OYVEL),A14,L
|
|||
|
; JRNZ HG_DONE
|
|||
|
|
|||
|
CALLA BLOODY_BULLET_HIT_OFFSET
|
|||
|
|
|||
|
; MOVE *A8(AnimScr),A14,L
|
|||
|
; CMPI HELGA_FLINCH_ANIM,A14
|
|||
|
; JREQ HG_DONE
|
|||
|
|
|||
|
MOVE *A8(OLASTHITTIME),A1,L
|
|||
|
MOVE @WAVEIRQS,A14,L
|
|||
|
MOVE A14,*A8(OLASTHITTIME),L
|
|||
|
SUB A1,A14
|
|||
|
CMPI MIN_HIT_TIME,A14
|
|||
|
JRLT HG_GO ;BR=UNDER MINIMUM TIME
|
|||
|
CLR A14
|
|||
|
MOVE A14,*A8(OHITS),L
|
|||
|
JRUC HG_DONE
|
|||
|
HG_GO
|
|||
|
MOVK HELGA_GUN_HITS,A0
|
|||
|
calla CURPLYR_ADJ
|
|||
|
move a0,a1
|
|||
|
MOVI OHITS,A3
|
|||
|
|
|||
|
MOVE *A2(PPLASMASHOTS),A14,W
|
|||
|
JRZ HG_ONE_HIT ;BR=NO BIG GUN
|
|||
|
CALLA HIT_ENEMY
|
|||
|
JRGE HG_CHECK ;BR=TRY TO STUN
|
|||
|
HG_ONE_HIT
|
|||
|
CALLA HIT_ENEMY
|
|||
|
JRLT HG_DONE ;BR=DON'T STUN
|
|||
|
HG_CHECK
|
|||
|
MOVE *A8(AnimFrm),A14,L
|
|||
|
CMPI HELGA_END_NOGUN_HIT,A14
|
|||
|
JRHS HG_HIT ;BR=IN RETURN FRAMES
|
|||
|
CMPI HELGA_START_NOGUN_HIT,A14
|
|||
|
JRHS HG_DONE ;BR=UPSIDE FRAMES
|
|||
|
HG_HIT
|
|||
|
CLR A14
|
|||
|
MOVE A14,*A8(OHITS),L
|
|||
|
|
|||
|
; CALLA BLOODY_BULLET_HIT
|
|||
|
|
|||
|
CLR A14
|
|||
|
MOVE A14,*A8(OYACCEL),W
|
|||
|
MOVE A14,*A8(OXVEL),L
|
|||
|
MOVE A14,*A8(OYVEL),L
|
|||
|
MOVE A14,*A8(OZVEL),L
|
|||
|
|
|||
|
CLR A14
|
|||
|
MOVB A14,*A8(AnimSlp)
|
|||
|
MOVI HELGA_FLINCH_ANIM,A14
|
|||
|
MOVE A14,*A8(AnimFrm),L
|
|||
|
|
|||
|
CLR A4
|
|||
|
MOVE *A8(OLASTSTUN),A1,L
|
|||
|
MOVE @WAVEIRQS,A14,L
|
|||
|
MOVE A14,*A8(OLASTSTUN),L
|
|||
|
SUB A1,A14
|
|||
|
CMPI MIN_STUN_TIME,A14
|
|||
|
JRGT HG_NO_JUMP ;BR=OVER MINIMUM TIME
|
|||
|
MOVE *A8(OSTUNS),A4,W
|
|||
|
INC A4
|
|||
|
CMPK MAX_STUNS,A4
|
|||
|
JRLT HG_NO_JUMP ;BR=NOT STUNNED ENOUGH
|
|||
|
CLR A14
|
|||
|
MOVE A14,*A8(OSTUNS),W
|
|||
|
MOVI HELGA_JUMP_UP_ANIM,A14
|
|||
|
JRUC HG_SET_RECOVER_ANIM
|
|||
|
HG_NO_JUMP
|
|||
|
MOVE A4,*A8(OSTUNS),W
|
|||
|
|
|||
|
MOVI HELGA_CENTER_WHEEL_ANIM,A14
|
|||
|
HG_SET_RECOVER_ANIM
|
|||
|
MOVE A14,*A8(AnimScr),L
|
|||
|
|
|||
|
CALLR DISABLE_GUN_VECTOR
|
|||
|
HG_DONE
|
|||
|
RETS
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_SET_SHOOTTIME *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
A_SET_SHOOTTIME
|
|||
|
CALLA GET_HEAD_PART
|
|||
|
MOVE @WAVEIRQS,A14,L
|
|||
|
MOVE A14,*A8(OSHOOTTIME),L
|
|||
|
RETS
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_CHECK_SHOOTTIME *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
A_CHECK_SHOOTTIME
|
|||
|
CALLA GET_HEAD_PART
|
|||
|
|
|||
|
MOVE *A8(OZVAL),A0,L
|
|||
|
MOVE *A8(OXVAL),A1,L
|
|||
|
|
|||
|
UTOSX A0,A1
|
|||
|
|
|||
|
CMPI SCRLFT+SCRWIDTH/6,A1
|
|||
|
JRLT ACS_OFF
|
|||
|
CMPI SCRRGT-SCRWIDTH/6,A1
|
|||
|
JRGT ACS_OFF
|
|||
|
JRUC ACS_CHECK_SHOOT
|
|||
|
ACS_OFF
|
|||
|
CLR A14
|
|||
|
MOVE A14,*A8(OSHOOTTIME),L ;FLAG SHOOTTIME
|
|||
|
RETS
|
|||
|
ACS_CHECK_SHOOT
|
|||
|
|
|||
|
MOVE *A8(OSHOOTTIME),A0,L
|
|||
|
MOVE @WAVEIRQS,A14,L
|
|||
|
MOVE A14,A1
|
|||
|
SUB A0,A14
|
|||
|
CMPI MIN_SHOOTTIME,A14
|
|||
|
JRLT ACS_SHOOT_AGAIN ;BR=STILL SHOOT
|
|||
|
CLR A14
|
|||
|
MOVE A14,*A8(OSHOOTTIME),L ;FLAG SHOOTTIME
|
|||
|
MOVI 512,A0
|
|||
|
CALLA RANDPER
|
|||
|
JRC ACS_SHOOT_AGAIN ;BR=SHOOT AGAIN
|
|||
|
RETS
|
|||
|
ACS_SHOOT_AGAIN
|
|||
|
MOVI HELGA_SHOOT_ANIM,A14
|
|||
|
MOVE A14,*A8(AnimFrm),L
|
|||
|
RETS
|
|||
|
|
|||
|
FINAL_HELGA_INIT
|
|||
|
.byte 4, 0, 0, 1 ;OBJCNT, PRCCNT, IMGPALCNT, PALCNT
|
|||
|
.long P_HELGA ;IMGPAL
|
|||
|
.word OID_HELGA,OM_COLL|OM_WPOS ;OID, GLOBAL_OPTIONS
|
|||
|
.LONG HELGA_CVECT
|
|||
|
.long 0,-0500000H,08000H
|
|||
|
* .long IMG
|
|||
|
* .word OCTRL, OFLAGS, OZOFF
|
|||
|
* .word OPTIONS
|
|||
|
LWWWW HL1J_A5, DMAWNZ, M_GCOLL, 0, OM_GUNV|OM_ANIM
|
|||
|
.LONG HELGA_GUNVECT
|
|||
|
.LONG FINAL_DROP_ANIM
|
|||
|
LWWWW HT1J_A5, DMAWNZ, 0, 0, OM_PRVGUNV
|
|||
|
LWWWW HT1J_A5, DMAWNZ, M_NODISP, 0, OM_PRVGUNV
|
|||
|
LWWWW HT1J_A5, DMAWNZ, M_NODISP, 0, OM_PRVGUNV
|
|||
|
|
|||
|
HELGA_THREAT_SHOOT_ANIM
|
|||
|
LWLL 1,1|AMulti|AFunc,A_AnimGo+2,HELGA_START_SHOOT_ANIM
|
|||
|
LWL 1,1|AFunc,A_HELGA_THREAT
|
|||
|
|
|||
|
FINAL_DROP_ANIM:
|
|||
|
LW HL1J_A5,1|AMulti
|
|||
|
LW HT1J_A5,3
|
|||
|
|
|||
|
LWL 1,1|AFunc,A_WAIT_TIL_ON_GROUND
|
|||
|
|
|||
|
LW HL1J_A6,1|AMulti
|
|||
|
LWLL HT1J_A6,5|AFunc,A_SOUND+2,SND_JUMP_LAND
|
|||
|
|
|||
|
LW HL1J_A7,1|AMulti
|
|||
|
LW HT1J_A7,5
|
|||
|
|
|||
|
LW HL1J_A8,1|AMulti
|
|||
|
LW HT1J_A8,5
|
|||
|
|
|||
|
LW HH1ST_A4,1|AMulti
|
|||
|
LW HB1ST_A4,6
|
|||
|
|
|||
|
LW HH1ST_A3,1|AMulti
|
|||
|
LW HB1ST_A3,7
|
|||
|
|
|||
|
LWLWL HH1ST_A2,1|AMulti|AFunc,A_JUMP_ON_CLR_HFLAG+3,M_INTRO,HELGA_THREAT_SHOOT_ANIM
|
|||
|
LW HB1ST_A2,8
|
|||
|
|
|||
|
LWLWW HH1ST_A1,1|AMulti|AFunc,A_Set_Rel_Word+2,OHFLAGS,0
|
|||
|
LWLL HT1ST_A1,1|AMulti|AFunc,A_SOUND+2,SND_BAD_BOY
|
|||
|
LWL HL1ST_A1,112|AFunc,OBJ_ON
|
|||
|
|
|||
|
LWLLW HH1ST_A2,1|AMulti|AFunc,A_Set_Var_Word+3,GUNS_OFF,0
|
|||
|
LW HB1ST_A2,1|AMulti
|
|||
|
LWL 1,4|AFunc,OBJ_OFF
|
|||
|
|
|||
|
HELGA_START_SHOOT_ANIM
|
|||
|
LWL HH1SH_A1,1|AMulti|AFunc,ENABLE_HELGA_VECTORS
|
|||
|
LWL HT1SH_A1,1|AMulti|AFunc,A_SET_SHOOTTIME
|
|||
|
LWL HL1SH_A1,1|AFunc,OBJ_ON
|
|||
|
|
|||
|
HELGA_SHOOT_ANIM
|
|||
|
LWL HH1SH_A1,1|AMulti|AFunc,A_HELGA_FIRE_FNC
|
|||
|
LW HT1SH_A1,1|AMulti
|
|||
|
LW HL1SH_A1,5
|
|||
|
|
|||
|
LW HH1SH_A2,1|AMulti
|
|||
|
LW HT1SH_A2,1|AMulti
|
|||
|
LW HL1SH_A2,6
|
|||
|
|
|||
|
LWL 1,1|AFunc,A_CHECK_SHOOTTIME
|
|||
|
|
|||
|
HELGA_START_WHEEL_ANIM
|
|||
|
LWL HT3CW_A1,1|AMulti|AFunc,A_START_HELGA_WHEEL
|
|||
|
LW HL3CW_A1,1|AMulti
|
|||
|
LWL 1,1|AMulti|AFunc,OBJ_OFF
|
|||
|
LWL 1,0|AFunc,OBJ_OFF
|
|||
|
|
|||
|
HELGA_WHEEL_ANIM
|
|||
|
LW HT3CW_A2,1|AMulti
|
|||
|
LW HL3CW_A2,1|AMulti
|
|||
|
LWL HH3CW_A2,0|AFunc,OBJ_ON
|
|||
|
|
|||
|
LW HT3CW_A3,1|AMulti
|
|||
|
LW HL3CW_A3,1|AMulti
|
|||
|
LW HA3CW_A3,0
|
|||
|
HELGA_START_NOGUN_HIT ;REMEMBER AnimFrm ONE FRAME AHED
|
|||
|
LW HT3CW_A4,1|AMulti
|
|||
|
LW HL3CW_A4,1|AMulti
|
|||
|
LWL 1,0|AFunc,OBJ_OFF
|
|||
|
|
|||
|
LW HT3CW_A5,1|AMulti
|
|||
|
LW HL3CW_A5,0
|
|||
|
|
|||
|
LW HT3CW_A6,1|AMulti
|
|||
|
LW HL3CW_A6,1|AMulti
|
|||
|
LWL HA3CW_A6,1|AMulti|AFunc,OBJ_ON
|
|||
|
LWL HZ3CW_A6,0|AFunc,OBJ_ON
|
|||
|
|
|||
|
LW HT3CW_A7,1|AMulti
|
|||
|
LW HL3CW_A7,1|AMulti
|
|||
|
LW HA3CW_A7,1|AMulti
|
|||
|
LW HZ3CW_A7,0
|
|||
|
|
|||
|
LW HT3CW_A8,1|AMulti
|
|||
|
LW HL3CW_A8,1|AMulti
|
|||
|
LW HA3CW_A8,1|AMulti
|
|||
|
LW HZ3CW_A8,0
|
|||
|
|
|||
|
LW HT3CW_A9,1|AMulti
|
|||
|
LW HL3CW_A9,1|AMulti
|
|||
|
LW HA3CW_A9,1|AMulti
|
|||
|
LW HZ3CW_A9,0
|
|||
|
|
|||
|
LW HT3CW_A10,1|AMulti
|
|||
|
LW HL3CW_A10,1|AMulti
|
|||
|
LWL 1,1|AMulti|AFunc,OBJ_OFF
|
|||
|
LWL 1,0|AFunc,OBJ_OFF
|
|||
|
|
|||
|
LW HT3CW_A11,1|AMulti
|
|||
|
LW HL3CW_A11,1|AMulti
|
|||
|
LWL HZ3CW_A11,0|AFunc,OBJ_ON
|
|||
|
|
|||
|
LWL HT3CW_A12,1|AMulti|AFunc,A_TOGGLE_HELGA_FLIP
|
|||
|
LW HL3CW_A12,1|AMulti
|
|||
|
LW HH3CW_A12,0
|
|||
|
HELGA_END_NOGUN_HIT ;REMEMBER AnimFrm ONE FRAME AHED
|
|||
|
LWL HT3CW_A13,1|AMulti|AFunc,A_WHEEL_CHECK
|
|||
|
LW HL3CW_A13,1|AMulti
|
|||
|
LWL 1,0|AFunc,OBJ_OFF
|
|||
|
|
|||
|
LWL HT3CW_A1,1|AMulti|AFunc,A_TOGGLE_HELGA_FLIP
|
|||
|
LW HL3CW_A1,0
|
|||
|
|
|||
|
.long 0
|
|||
|
|
|||
|
HELGA_CENTER_WHEEL_ANIM
|
|||
|
LWL HT3CW_A1,1|AMulti|AFunc,A_CENTER_HELGA_WHEEL
|
|||
|
LW HL3CW_A1,1|AMulti
|
|||
|
LWL 1,1|AMulti|AFunc,OBJ_OFF
|
|||
|
LWL 1,0|AFunc,OBJ_OFF
|
|||
|
|
|||
|
HELGA_AWAY_WHEEL_ANIM
|
|||
|
LWL HT3CW_A1,1|AMulti|AFunc,A_AWAY_HELGA_WHEEL
|
|||
|
LW HL3CW_A1,1|AMulti
|
|||
|
LWL 1,1|AMulti|AFunc,OBJ_OFF
|
|||
|
LWL 1,0|AFunc,OBJ_OFF
|
|||
|
|
|||
|
HELGA_FLINCH_ANIM
|
|||
|
; LW HT1H_A3,1|AMulti
|
|||
|
; LW HL1H_A3,1|AMulti
|
|||
|
; LWL 1,1|AMulti|AFunc,OBJ_OFF
|
|||
|
; LWL 1,3|AFunc,OBJ_OFF
|
|||
|
|
|||
|
LWLL HH1H_A2,1|AMulti|AFunc,A_SOUND+2,SND_HELGA_STUN
|
|||
|
LW HT1H_A2,1|AMulti
|
|||
|
LWL HL1H_A2,1|AMulti|AFunc,OBJ_ON
|
|||
|
LWL 1,6|AFunc,OBJ_OFF
|
|||
|
|
|||
|
LWL HH1H_A1,1|AMulti|AFunc,A_CHECK_JUMP_UP
|
|||
|
LW HT1H_A1,1|AMulti
|
|||
|
LW HL1H_A1,9
|
|||
|
|
|||
|
.long 0
|
|||
|
|
|||
|
HELGA_FLYBACK_ANIM
|
|||
|
LW HL1DIE_A2,1|AMulti
|
|||
|
LW HT1DIE_A2,1|AMulti
|
|||
|
LWL HA1DIE_A2,1|AMulti|AFunc,OBJ_ON
|
|||
|
LWL HZ1DIE_A2,3|AFunc,OBJ_ON
|
|||
|
|
|||
|
LW HL1DIE_A3,1|AMulti
|
|||
|
LW HT1DIE_A3,1|AMulti
|
|||
|
LW HA1DIE_A3,1|AMulti
|
|||
|
LW HZ1DIE_A3,3
|
|||
|
|
|||
|
LW HL1DIE_A4,1|AMulti
|
|||
|
LW HT1DIE_A4,1|AMulti
|
|||
|
LW HA1DIE_A4,1|AMulti
|
|||
|
LW HZ1DIE_A4,3
|
|||
|
|
|||
|
LW HL1DIE_A5,1|AMulti
|
|||
|
LW HT1DIE_A5,1|AMulti
|
|||
|
LW HA1DIE_A5,1|AMulti
|
|||
|
LWL 1,1|AFunc,OBJ_OFF
|
|||
|
|
|||
|
LWL 1,1|AFunc,A_WAIT_TIL_ON_GROUND
|
|||
|
|
|||
|
LWL HL1DIE_A13,1|AMulti|AFunc,A_HELGA_BITCH
|
|||
|
LW HT1DIE_A13,1|AMulti
|
|||
|
LW HA1DIE_A13,3
|
|||
|
|
|||
|
LW HA1DIE_A10,1|AMulti
|
|||
|
LW HL1DIE_A10,1|AMulti
|
|||
|
LW HT1DIE_A10,1|AMulti
|
|||
|
LWL HZ1DIE_A10,5|AFunc,OBJ_ON
|
|||
|
|
|||
|
LW HA1DIE_A9,1|AMulti
|
|||
|
LW HZ1DIE_A9,1|AMulti
|
|||
|
LW HL1DIE_A9,1|AMulti
|
|||
|
LWL 1,7|AFunc,OBJ_OFF
|
|||
|
|
|||
|
LW HA1DIE_A10,1|AMulti
|
|||
|
LW HL1DIE_A10,1|AMulti
|
|||
|
LW HT1DIE_A10,1|AMulti
|
|||
|
LWL HZ1DIE_A10,5|AFunc,OBJ_ON
|
|||
|
|
|||
|
LW HL1DIE_A13,1|AMulti
|
|||
|
LW HT1DIE_A13,1|AMulti
|
|||
|
LW HA1DIE_A13,3|AMulti
|
|||
|
LWL 1,3|AFunc,OBJ_OFF
|
|||
|
|
|||
|
LW HH1ST_A4,1|AMulti
|
|||
|
LW HB1ST_A4,1|AMulti
|
|||
|
LWL 1,6|AFunc,OBJ_OFF
|
|||
|
|
|||
|
LW HH1ST_A3,1|AMulti
|
|||
|
LW HB1ST_A3,7
|
|||
|
|
|||
|
LWL HH1ST_A2,1|AMulti|AFunc,A_CHECK_JUMP_UP
|
|||
|
LW HB1ST_A2,8
|
|||
|
|
|||
|
.long 0
|
|||
|
|
|||
|
HELGA_JUMP_UP_ANIM
|
|||
|
; LW HH1ST_A2,1|AMulti
|
|||
|
; LW HB1ST_A2,1|AMulti
|
|||
|
; LWL 1,1|AMulti|AFunc,OBJ_OFF
|
|||
|
; LWL 1,8|AFunc,OBJ_OFF
|
|||
|
;
|
|||
|
; LW HH1ST_A3,1|AMulti
|
|||
|
; LW HB1ST_A3,7
|
|||
|
|
|||
|
LW HH1ST_A3,1|AMulti
|
|||
|
LW HB1ST_A3,1|AMulti
|
|||
|
LWL 1,1|AMulti|AFunc,OBJ_OFF
|
|||
|
LWL 1,5|AFunc,OBJ_OFF
|
|||
|
|
|||
|
LW HH1ST_A4,1|AMulti
|
|||
|
LW HB1ST_A4,5
|
|||
|
|
|||
|
LW HL1J_A8,1|AMulti
|
|||
|
LW HT1J_A8,4
|
|||
|
|
|||
|
LWLW HL1J_A7,1|AMulti|AFunc,A_SET_OYACCEL+1,-04000H
|
|||
|
LW HT1J_A7,4
|
|||
|
|
|||
|
LW HL1J_A6,1|AMulti
|
|||
|
LW HT1J_A6,3
|
|||
|
|
|||
|
LW HL1J_A5,1|AMulti
|
|||
|
LW HT1J_A5,3
|
|||
|
|
|||
|
LWL 1,1|AFunc,A_WAIT_TIL_HELGA_OFFSCRN
|
|||
|
|
|||
|
LWL 1,1|AFunc,CLR_VEL
|
|||
|
|
|||
|
LWL 1,1|AFunc,A_HELGA_JUMP_DOWN
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* THRONE_HELGA *
|
|||
|
* *
|
|||
|
* Create the Helga that will find the throne and land *
|
|||
|
* in it. *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
PROC_THRONE_HELGA
|
|||
|
MOVI OID_MONDOR,A0
|
|||
|
CALLA EXIST_OBJ_ALL
|
|||
|
JRZ PTH_FAIL
|
|||
|
|
|||
|
PUSH A8
|
|||
|
MOVI THRONE_HELGA_INIT,B0 ;Get dat multi-parter
|
|||
|
CALLA CREATE_ENEMY
|
|||
|
PULL A9
|
|||
|
JRNZ PTH_GOT_OBJ ;BR = Success
|
|||
|
|
|||
|
PTH_FAIL
|
|||
|
SLOOP 5,PROC_THRONE_HELGA ;Try again later
|
|||
|
|
|||
|
PTH_GOT_OBJ
|
|||
|
|
|||
|
MOVE *A9(OXVAL),A1,L
|
|||
|
MOVE *A9(OZVAL),A3,L
|
|||
|
SUBK 1,A3
|
|||
|
MOVE A9,*A8(OTHRONE_OBJ),L
|
|||
|
|
|||
|
MOVI -50,A5
|
|||
|
STOUY A3,A5
|
|||
|
MOVE A5,A2
|
|||
|
|
|||
|
CALLA SET_ANIPU
|
|||
|
|
|||
|
MOVIM 80000H,*A8(OYVEL),L ;Drop this guy
|
|||
|
MOVIM 5000H,*A8(OYACCEL),W ;Add some Grav
|
|||
|
|
|||
|
CALLA INSERT_OBJ ;Insert this bitch
|
|||
|
|
|||
|
DIE
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_STAY_TIL_IN_THRONE *
|
|||
|
* *
|
|||
|
* Stay here til she lands that awesome ass on the throne. *
|
|||
|
* *
|
|||
|
* A8 = Ptr to head object *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
A_STAY_TIL_IN_THRONE
|
|||
|
MOVE *A8(OYPOS),A1,W
|
|||
|
MOVE *A8(OTHRONE_OBJ),A0,L
|
|||
|
MOVE *A0(OYPOS),A2,W
|
|||
|
MOVE *A8(OYVEL+16),A14,W
|
|||
|
JRN ASTIT_STAY
|
|||
|
SUB A14,A2
|
|||
|
|
|||
|
CMP A2,A1
|
|||
|
JRGE ASTIT_THERE ;BR = Hit the thrown
|
|||
|
ASTIT_STAY
|
|||
|
MOVE *A8(AnimFrm),A14,L ; otherwise, stay here
|
|||
|
SUBI 50h,A14
|
|||
|
MOVE A14,*A8(AnimFrm),L
|
|||
|
RETS
|
|||
|
|
|||
|
ASTIT_THERE
|
|||
|
CLR A14
|
|||
|
MOVE A14,*A8(OXVEL),L ;STOP X AND Z MOTION
|
|||
|
MOVE A14,*A8(OZVEL),L
|
|||
|
|
|||
|
MOVE *A0(OXVAL),A1,L
|
|||
|
SLL 16,A2
|
|||
|
MOVE *A0(OZVAL),A3,L
|
|||
|
SUBK 1,A3
|
|||
|
JAUC SET_ANIPU
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_HELGA_ASS_BOUNCE *
|
|||
|
* *
|
|||
|
* Anim func to bounce helga on that ass. *
|
|||
|
* *
|
|||
|
* A8 = Ptr to Helga head part *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
A_HELGA_ASS_BOUNCE
|
|||
|
SOUND1 SND_JUMP_LAND
|
|||
|
MOVE *A8(OYVEL),A3,L
|
|||
|
|
|||
|
SRA 2,A3
|
|||
|
CMPI 10000H,A3
|
|||
|
JRGE AHAB_OK
|
|||
|
CLR A3
|
|||
|
AHAB_OK
|
|||
|
NEG A3
|
|||
|
MOVE A3,*A8(OYVEL),L
|
|||
|
JRNZ AHAB_X
|
|||
|
|
|||
|
MOVE A3,*A8(OYACCEL),W
|
|||
|
|
|||
|
MOVI ANIM_ASS_LAND,A1
|
|||
|
JAUC SetAnim
|
|||
|
|
|||
|
AHAB_X
|
|||
|
RETS
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_STAY_TIL_YVEL_POS *
|
|||
|
* *
|
|||
|
* Anim func to stay put until the OYVEL of an object is positive. *
|
|||
|
* *
|
|||
|
* A8 = Ptr to head part *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
A_STAY_TIL_YVEL_POS
|
|||
|
MOVE *A8(OYVEL+16),A14,W
|
|||
|
JRN ASTYP_STAY
|
|||
|
RETS
|
|||
|
|
|||
|
ASTYP_STAY
|
|||
|
MOVE *A8(AnimFrm),A14,L ; otherwise, stay here
|
|||
|
SUBI 50h,A14
|
|||
|
MOVE A14,*A8(AnimFrm),L
|
|||
|
RETS
|
|||
|
|
|||
|
A_STAY_TIL_ZSCROLL_NONZ
|
|||
|
MOVE @ZSCROLL,A14,L
|
|||
|
JRZ ASTYP_STAY
|
|||
|
RETS
|
|||
|
|
|||
|
A_STAY_TIL_ZSCROLL_ZERO
|
|||
|
MOVE @ZSCROLL,A14,L
|
|||
|
JRNZ ASTYP_STAY
|
|||
|
RETS
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_START_PEDASTAL *
|
|||
|
* *
|
|||
|
* Anim func to make the throne pedastal sink into the stage. *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
A_START_PEDASTAL
|
|||
|
MOVI ANIM_SINK_PED,A1
|
|||
|
; MOVI (OID_UNIV|ID_1)&~MASK_SUPP,A0 ;Get the first half
|
|||
|
MOVI (OID_UNIV|ID_1),A0 ;Get the first half
|
|||
|
CALLA EXIST_OBJ_ALL
|
|||
|
JRZ ASP_X ;BR = Not found
|
|||
|
CALLA BG_TO_FG ;Get place holder out of Bgnd
|
|||
|
CALLA STRT_ANIM
|
|||
|
; MOVI (OID_UNIV|ID_1)&~MASK_SUPP,A0
|
|||
|
MOVI (OID_UNIV|ID_1),A0
|
|||
|
CALLA RESUME_EXIST_OBJ_ALL ;Get the other half
|
|||
|
JRZ ASP_X
|
|||
|
CALLA BG_TO_FG ;Get place holder out of Bgnd
|
|||
|
CALLA STRT_ANIM
|
|||
|
ASP_X
|
|||
|
RETS
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* START_HELGA *
|
|||
|
* *
|
|||
|
* Start the Helga that drops in after Aerosmith has been *
|
|||
|
* pushed off of the stage. *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
START_HELGA:
|
|||
|
movi HELGA_INIT,b0
|
|||
|
calla MULTIMAKE
|
|||
|
MOVIM 2000h,*a8(OYACCEL),W
|
|||
|
rets
|
|||
|
|
|||
|
|
|||
|
HELGA_INIT
|
|||
|
.byte 4,0,0,1
|
|||
|
.long P_HELGA
|
|||
|
.word OID_HELGA,OM_DUMCOLL|OM_WPOS|OM_INSERT
|
|||
|
.long 0h,-500000h,8000h
|
|||
|
|
|||
|
.long HL1J_A5
|
|||
|
.word DMAWNZ,M_NOSCALE,0,OM_ANIM
|
|||
|
.long HELGA_DROP_ANIM
|
|||
|
|
|||
|
.long HT1J_A5
|
|||
|
.word DMAWNZ,M_NOSCALE,0,0
|
|||
|
|
|||
|
.long HT1J_A5
|
|||
|
.word DMAWNZ,M_NODISP|M_NOSCALE,0,0
|
|||
|
|
|||
|
.long HT1J_A5
|
|||
|
.word DMAWNZ,M_NODISP|M_NOSCALE,0,0
|
|||
|
|
|||
|
|
|||
|
*
|
|||
|
* She drops!
|
|||
|
*
|
|||
|
HELGA_DROP_ANIM:
|
|||
|
LW HL1J_A5,1|AMulti
|
|||
|
; LWLL HT1J_A5,3|AFunc,A_SOUND+2,SND_HELGA_TUNE
|
|||
|
LW HT1J_A5,3
|
|||
|
|
|||
|
LWLW 1,2|AFunc,A_STAY_TIL_WY_GT+1,17h
|
|||
|
|
|||
|
LW HL1J_A6,1|AMulti
|
|||
|
LWLL HT1J_A6,5|AFunc,A_SOUND+2,SND_JUMP_LAND
|
|||
|
|
|||
|
LW HL1J_A7,1|AMulti
|
|||
|
LW HT1J_A7,5
|
|||
|
|
|||
|
LW HL1J_A8,1|AMulti
|
|||
|
LW HT1J_A8,5
|
|||
|
*
|
|||
|
* She stands!
|
|||
|
*
|
|||
|
HELG_STND_ANIM
|
|||
|
LW HH1ST_A4,1|AMulti
|
|||
|
LW HB1ST_A4,6
|
|||
|
|
|||
|
LW HH1ST_A3,1|AMulti
|
|||
|
LW HB1ST_A3,7
|
|||
|
|
|||
|
LW HH1ST_A2,1|AMulti
|
|||
|
LW HB1ST_A2,8
|
|||
|
|
|||
|
; LWLLW 1,1|AFunc,A_Set_Var_Word+3,SCROLL_FLAG,1
|
|||
|
|
|||
|
LW HH1ST_A1,1|AMulti
|
|||
|
LW HT1ST_A1,1|AMulti
|
|||
|
LWL HL1ST_A1,8|AFunc,OBJ_ON
|
|||
|
|
|||
|
*
|
|||
|
* She points!
|
|||
|
*
|
|||
|
HELG_PT_ANIM
|
|||
|
LWLL HT1PT_A8,1|AMulti|AFunc,A_SOUND+2,SND_HELGA_TAUNT
|
|||
|
LW HL1PT_A8,1|AMulti
|
|||
|
LW HH1PT_A8,1|AMulti
|
|||
|
LWL HA1PT_A8,6|AFunc,OBJ_ON
|
|||
|
|
|||
|
LW HT1PT_A9,1|AMulti
|
|||
|
LW HL1PT_A9,1|AMulti
|
|||
|
LW HH1PT_A9,1|AMulti
|
|||
|
LW HA1PT_A9,6
|
|||
|
|
|||
|
LW HT1PT_A10,1|AMulti
|
|||
|
LW HL1PT_A10,1|AMulti
|
|||
|
LW HH1PT_A10,1|AMulti
|
|||
|
LW HA1PT_A10,5
|
|||
|
|
|||
|
LWLW 1,1|AFunc,A_Set_AnimLoop+1,6
|
|||
|
|
|||
|
HELGA_PT_LOOP
|
|||
|
LW HT1PT_A11,1|AMulti
|
|||
|
LW HL1PT_A11,1|AMulti
|
|||
|
LWL HA1PT_A11,1|AMulti|AFunc,OBJ_ON
|
|||
|
LWL 1,6|AFunc,OBJ_OFF
|
|||
|
|
|||
|
LW HT1PT_A12,1|AMulti
|
|||
|
LW HL1PT_A12,1|AMulti
|
|||
|
LWL 1,6|AFunc,OBJ_OFF
|
|||
|
|
|||
|
LW HT1PT_A13,1|AMulti
|
|||
|
LW HL1PT_A13,1|AMulti
|
|||
|
LWL HH1PT_A13,6|AFunc,OBJ_ON
|
|||
|
|
|||
|
LWLL HT1PT_A12,1|AMulti|AFunc,A_Anim_DSJ+2,HELGA_PT_LOOP
|
|||
|
LW HL1PT_A12,1|AMulti
|
|||
|
LWL 1,6|AFunc,OBJ_OFF
|
|||
|
|
|||
|
LW HT1PT_A13,1|AMulti
|
|||
|
LW HL1PT_A13,1|AMulti
|
|||
|
LWL HH1PT_A13,6|AFunc,OBJ_ON
|
|||
|
|
|||
|
LW HT1PT_A14,1|AMulti
|
|||
|
LW HL1PT_A14,1|AMulti
|
|||
|
LW HH1PT_A14,6
|
|||
|
|
|||
|
LWLLW HT1PT_A15,1|AMulti|AFunc,A_Set_Var_Word+3,SCROLL_FLAG,1
|
|||
|
LW HL1PT_A15,1|AMulti
|
|||
|
LW HH1PT_A15,120
|
|||
|
|
|||
|
LW 1,120
|
|||
|
LW 1,120
|
|||
|
|
|||
|
LWL 1,120|AFunc,DELETE_OBJ
|
|||
|
|
|||
|
*
|
|||
|
* Init table for Helga that lands in the throne and then morphs
|
|||
|
*
|
|||
|
THRONE_HELGA_INIT
|
|||
|
.byte 4,0,0,1
|
|||
|
.long P_HLSIT
|
|||
|
.word OID_HELGA,OM_DUMCOLL
|
|||
|
|
|||
|
.long HELSIT_A1
|
|||
|
.word DMAWNZ,M_NOSCALE,0,OM_ANIM
|
|||
|
.long HELGA_THRONE_DROP_ANIM
|
|||
|
|
|||
|
.long HELSIT_T1
|
|||
|
.word DMAWNZ,M_NOSCALE,0,0
|
|||
|
|
|||
|
.long HELSIT_Z1
|
|||
|
.word DMAWNZ,M_NOSCALE,0,0
|
|||
|
|
|||
|
.long HELSIT_L1
|
|||
|
.word DMAWNZ,M_NOSCALE,0,0
|
|||
|
|
|||
|
**************************************************************************
|
|||
|
* *
|
|||
|
* A_THROW_START *
|
|||
|
* *
|
|||
|
**************************************************************************
|
|||
|
|
|||
|
A_THROW_START
|
|||
|
MOVI P_HLSIT,A0
|
|||
|
CALLA CHANGE_PAL_MULTI
|
|||
|
MOVE *A8(OYVAL),A1,L
|
|||
|
SUBI 96 << 15,A1
|
|||
|
MOVE A1,A10
|
|||
|
CALLA SET_ANIPYU
|
|||
|
CALLA SET_ODAG_MULTI
|
|||
|
|
|||
|
MOVE *A8(OTHRONE_OBJ),A9,L
|
|||
|
|
|||
|
* 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) *
|
|||
|
|
|||
|
MOVE *A9(OXVAL),A1,L
|
|||
|
MOVE *A8(OXVAL),A2,L
|
|||
|
CLR A3 ;DON'T STUFF Y
|
|||
|
CLR A4
|
|||
|
MOVE *A9(OZVAL),A5,L
|
|||
|
SUBK 1,A5
|
|||
|
MOVE *A8(OZVAL),A6,L
|
|||
|
MOVI HELGA_HANG_TIME,A7
|
|||
|
|
|||
|
CALLA SLINEVEL_3D
|
|||
|
MOVE A1,*A8(OXVEL),L
|
|||
|
MOVE A5,*A8(OZVEL),L
|
|||
|
|
|||
|
MOVE *A9(OYVAL),A1,L
|
|||
|
SUB A10,A1
|
|||
|
DIVS A7,A1 ;(X - X0) / T
|
|||
|
|
|||
|
MOVI THROW_YACCEL,A14
|
|||
|
MOVE A14,*A8(OYACCEL),W
|
|||
|
|
|||
|
SUBI (THROW_YACCEL * HELGA_HANG_TIME) >> 1,A1
|
|||
|
|
|||
|
MOVE A1,*A8(OYVEL),L ;V0 = (X - X0) / T - 0.5*A*T
|
|||
|
|
|||
|
RETS
|
|||
|
|
|||
|
*
|
|||
|
* She drops into her seat
|
|||
|
*
|
|||
|
|
|||
|
HELGA_THRONE_START_ANIM
|
|||
|
LWL HELSIT_A1,1|AMulti|AFunc,A_THROW_START
|
|||
|
LW HELSIT_T1,1|AMulti
|
|||
|
LWL HELSIT_Z1,1|AMulti|AFunc,OBJ_ON
|
|||
|
LWL HELSIT_L1,(HELGA_HANG_TIME/2)|AFunc,OBJ_ON
|
|||
|
|
|||
|
HELGA_THRONE_DROP_ANIM:
|
|||
|
LWL 1,1|AFunc,A_STAY_TIL_IN_THRONE
|
|||
|
|
|||
|
; LWLL 1,1|AFunc,A_SOUND+2,SND_HELGA_ASS
|
|||
|
|
|||
|
ANIM_ASS_BOUNCE
|
|||
|
LWL HELSIT_T3,1|AMulti|AFunc,A_HELGA_ASS_BOUNCE
|
|||
|
LW HELSIT_L3,1|AMulti
|
|||
|
LW HELSIT_Z3,1|AMulti
|
|||
|
LWL 1,1|AFunc,OBJ_OFF
|
|||
|
|
|||
|
LWL 1,1|AFunc,A_STAY_TIL_YVEL_POS
|
|||
|
|
|||
|
LW HELSIT_A2,1|AMulti
|
|||
|
LW HELSIT_T2,1|AMulti
|
|||
|
LW HELSIT_Z2,1|AMulti
|
|||
|
LWL HELSIT_L2,1|AFunc,OBJ_ON
|
|||
|
|
|||
|
LWL 1,1|AFunc,A_STAY_TIL_IN_THRONE
|
|||
|
|
|||
|
LWLL 1,1|AFunc,A_AnimGo+2,ANIM_ASS_BOUNCE
|
|||
|
|
|||
|
ANIM_ASS_LAND
|
|||
|
LW HELSIT_T5,1|AMulti
|
|||
|
LW HELSIT_L5,1|AMulti
|
|||
|
LW HELSIT_Z5,5
|
|||
|
|
|||
|
LW HELSIT_T6,1|AMulti
|
|||
|
LW HELSIT_A6,1|AMulti
|
|||
|
LW HELSIT_Z6,1|AMulti
|
|||
|
LWL HELSIT_L6,5|AFunc,OBJ_ON
|
|||
|
|
|||
|
LW HELSIT_H7,1|AMulti
|
|||
|
LW HELSIT_T7,1|AMulti
|
|||
|
LW HELSIT_L7,1|AMulti
|
|||
|
LW HELSIT_Z7,5
|
|||
|
|
|||
|
LWLL HELSIT_H8,1|AMulti|AFunc,A_SOUND+2,SND_YOU_AINT_SEEN
|
|||
|
LW HELSIT_T8,1|AMulti
|
|||
|
LW HELSIT_L8,1|AMulti
|
|||
|
LW HELSIT_Z8,10
|
|||
|
|
|||
|
LWLLW 1,1|AFunc,A_Set_Var_Word+3,SCROLL_FLAG,1
|
|||
|
|
|||
|
LWL 1,1|AFunc,A_STAY_TIL_ZSCROLL_NONZ
|
|||
|
|
|||
|
LWL 1,1|AFunc,A_STAY_TIL_ZSCROLL_ZERO
|
|||
|
|
|||
|
LW 1,30
|
|||
|
|
|||
|
LWLLW 1,7|AFunc,A_Set_Var_Word+3,MONDOR_START_FLAG,1
|
|||
|
|
|||
|
LWL 1,1|AFunc,A_START_PEDASTAL
|
|||
|
|
|||
|
LWL 1,1|AFunc,DELETE_OBJ
|
|||
|
|
|||
|
|
|||
|
ANIM_SINK_PED
|
|||
|
LWLW 1,60|AFunc,A_Set_AnimLoop+1,20
|
|||
|
ANIM_PED_LOOP
|
|||
|
LWLW 1,1|AFunc,A_ADD_YPOS+1,4
|
|||
|
LWLL 1,1|AFunc,A_Anim_DSJ+2,ANIM_PED_LOOP
|
|||
|
|
|||
|
LWL 1,1|AFunc,DELETE_OBJ
|
|||
|
|
|||
|
.END
|
|||
|
|