5665 lines
191 KiB
C
5665 lines
191 KiB
C
#include <ultra64.h>
|
|
#include "constants.h"
|
|
#include "game/chr/chraction.h"
|
|
#include "game/data/data_000000.h"
|
|
#include "game/data/data_0083d0.h"
|
|
#include "game/data/data_00e460.h"
|
|
#include "game/data/data_0160b0.h"
|
|
#include "game/data/data_01a3a0.h"
|
|
#include "game/data/data_020df0.h"
|
|
#include "game/data/data_02da90.h"
|
|
#include "game/data/data_02e820.h"
|
|
#include "game/dlights.h"
|
|
#include "game/game_0601b0.h"
|
|
#include "game/game_092610.h"
|
|
#include "game/game_095320.h"
|
|
#include "game/game_096750.h"
|
|
#include "game/game_097ba0.h"
|
|
#include "game/game_0b0420.h"
|
|
#include "game/game_0b63b0.h"
|
|
#include "game/game_0dcdb0.h"
|
|
#include "game/game_0f09f0.h"
|
|
#include "game/game_107fb0.h"
|
|
#include "game/game_111600.h"
|
|
#include "game/explosion.h"
|
|
#include "game/game_150820.h"
|
|
#include "game/game_1531a0.h"
|
|
#include "game/game_157db0.h"
|
|
#include "game/training.h"
|
|
#include "game/game_1a3340.h"
|
|
#include "game/gamefile.h"
|
|
#include "game/lang.h"
|
|
#include "game/pad.h"
|
|
#include "game/padhalllv.h"
|
|
#include "game/propobj.h"
|
|
#include "game/wallhit.h"
|
|
#include "gvars/gvars.h"
|
|
#include "lib/lib_09660.h"
|
|
#include "lib/lib_0d0a0.h"
|
|
#include "lib/lib_0d520.h"
|
|
#include "lib/lib_0e9d0.h"
|
|
#include "lib/lib_121e0.h"
|
|
#include "lib/lib_12dc0.h"
|
|
#include "lib/lib_13130.h"
|
|
#include "lib/lib_159b0.h"
|
|
#include "lib/lib_16110.h"
|
|
#include "lib/lib_4a360.h"
|
|
#include "types.h"
|
|
|
|
extern u8 *_frdataSegmentRomStart;
|
|
extern u8 *_frdataSegmentRomEnd;
|
|
|
|
u16 *var80088800 = NULL;
|
|
u8 g_FrIsValidWeapon = false;
|
|
u8 var80088808 = 0;
|
|
u8 var8008880c = 0;
|
|
u8 *g_FrRomData = NULL;
|
|
|
|
u16 g_FrPads[] = {
|
|
0x00d6, 0x00d7, 0x00d9, 0x00d8, 0x00da, 0x00db, 0x00dc, 0x00dd,
|
|
0x00de, 0x00df, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5,
|
|
0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00f4, 0x00f3,
|
|
0x00f2, 0x00f1, 0x00f0, 0x00ef, 0x00ee, 0x00ed, 0x00ec,
|
|
};
|
|
|
|
bool ciIsTourDone(void)
|
|
{
|
|
return savefileHasFlag(SAVEFILEFLAG_CI_TOUR_DONE);
|
|
}
|
|
|
|
u8 ciGetFiringRangeScore(s32 weaponindex)
|
|
{
|
|
// Data at firingrangescores is a u8 array where each score uses 2 bits
|
|
return (g_SoloSaveFile.firingrangescores[weaponindex >> 2] >> (weaponindex % 4) * 2) & 3;
|
|
}
|
|
|
|
void frSaveScoreIfBest(s32 weaponindex, s32 difficulty)
|
|
{
|
|
if (ciGetFiringRangeScore(weaponindex) < difficulty) {
|
|
u32 byteindex = weaponindex >> 2;
|
|
u32 shiftamount = (weaponindex % 4) * 2;
|
|
u32 value = g_SoloSaveFile.firingrangescores[byteindex];
|
|
u32 mask = (1 << shiftamount) + (1 << (shiftamount + 1));
|
|
|
|
value &= 255 - mask;
|
|
value += (difficulty << shiftamount) & mask;
|
|
|
|
g_SoloSaveFile.firingrangescores[byteindex] = value;
|
|
}
|
|
}
|
|
|
|
s32 func0f19ca78(u32 weaponnum)
|
|
{
|
|
s32 slot = -1;
|
|
s32 i;
|
|
|
|
for (i = 0; i <= WEAPON_HORIZONSCANNER; i++) {
|
|
switch (i) {
|
|
case WEAPON_FALCON2:
|
|
case WEAPON_FALCON2_SCOPE:
|
|
case WEAPON_FALCON2_SILENCER:
|
|
case WEAPON_MAGSEC4:
|
|
case WEAPON_MAULER:
|
|
case WEAPON_PHOENIX:
|
|
case WEAPON_DY357MAGNUM:
|
|
case WEAPON_DY357LX:
|
|
case WEAPON_CMP150:
|
|
case WEAPON_CYCLONE:
|
|
case WEAPON_CALLISTONTG:
|
|
case WEAPON_RCP120:
|
|
case WEAPON_LAPTOPGUN:
|
|
case WEAPON_DRAGON:
|
|
case WEAPON_K7AVENGER:
|
|
case WEAPON_AR34:
|
|
case WEAPON_SUPERDRAGON:
|
|
case WEAPON_SHOTGUN:
|
|
case WEAPON_SNIPERRIFLE:
|
|
case WEAPON_FARSIGHTXR20:
|
|
case WEAPON_CROSSBOW:
|
|
case WEAPON_TRANQUILIZER:
|
|
case WEAPON_REAPER:
|
|
case WEAPON_DEVASTATOR:
|
|
case WEAPON_ROCKETLAUNCHER:
|
|
case WEAPON_SLAYER:
|
|
case WEAPON_COMBATKNIFE:
|
|
case WEAPON_LASER:
|
|
case WEAPON_GRENADE:
|
|
case WEAPON_TIMEDMINE:
|
|
case WEAPON_PROXIMITYMINE:
|
|
case WEAPON_REMOTEMINE:
|
|
slot++;
|
|
}
|
|
|
|
if (i == weaponnum) {
|
|
return slot;
|
|
}
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
u8 frIsWeaponFound(s32 weaponnum)
|
|
{
|
|
if (weaponnum <= WEAPON_UNARMED) {
|
|
return true;
|
|
}
|
|
|
|
if (weaponnum < (s32)sizeof(g_SoloSaveFile.weaponsfound) * 8) {
|
|
u32 byteindex = weaponnum >> 3;
|
|
return g_SoloSaveFile.weaponsfound[byteindex] & (1 << (weaponnum % 8));
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
void frSetWeaponFound(s32 weaponnum)
|
|
{
|
|
if (weaponnum < (s32)sizeof(g_SoloSaveFile.weaponsfound) * 8) {
|
|
u32 byteindex = weaponnum >> 3;
|
|
u32 value = g_SoloSaveFile.weaponsfound[byteindex];
|
|
|
|
value |= (1 << (weaponnum % 8));
|
|
|
|
g_SoloSaveFile.weaponsfound[byteindex] = value;
|
|
}
|
|
}
|
|
|
|
s32 stageIsComplete(s32 stageindex)
|
|
{
|
|
return g_SoloSaveFile.besttimes[stageindex][0]
|
|
|| g_SoloSaveFile.besttimes[stageindex][1]
|
|
|| g_SoloSaveFile.besttimes[stageindex][2];
|
|
}
|
|
|
|
bool func0f19cbcc(s32 weapon)
|
|
{
|
|
if (weapon <= 0 || weapon == WEAPON_PSYCHOSISGUN) {
|
|
return false;
|
|
}
|
|
|
|
if (weapon == WEAPON_XRAYSCANNER && stageIsComplete(SOLOSTAGEINDEX_INFILTRATION)) {
|
|
return true;
|
|
}
|
|
|
|
if (weapon == WEAPON_CLOAKINGDEVICE && stageIsComplete(SOLOSTAGEINDEX_CHICAGO)) {
|
|
return true;
|
|
}
|
|
|
|
return frIsWeaponFound(weapon);
|
|
}
|
|
|
|
bool frWeaponIsAvailable(s32 weapon)
|
|
{
|
|
if (weapon < WEAPON_FALCON2 || weapon > WEAPON_REMOTEMINE
|
|
|| weapon == WEAPON_PSYCHOSISGUN
|
|
|| weapon == WEAPON_COMBATBOOST
|
|
|| weapon == WEAPON_NBOMB) {
|
|
return false;
|
|
}
|
|
|
|
if (weapon == WEAPON_FALCON2 || weapon == WEAPON_CMP150) {
|
|
return true;
|
|
}
|
|
|
|
return frIsWeaponFound(weapon);
|
|
}
|
|
|
|
u32 frGetWeaponIndexByWeapon(u32 weaponnum)
|
|
{
|
|
switch (weaponnum) {
|
|
case WEAPON_FALCON2: return 0;
|
|
case WEAPON_FALCON2_SCOPE: return 1;
|
|
case WEAPON_FALCON2_SILENCER: return 2;
|
|
case WEAPON_MAGSEC4: return 3;
|
|
case WEAPON_MAULER: return 4;
|
|
case WEAPON_PHOENIX: return 5;
|
|
case WEAPON_DY357MAGNUM: return 6;
|
|
case WEAPON_DY357LX: return 7;
|
|
case WEAPON_CMP150: return 8;
|
|
case WEAPON_CYCLONE: return 9;
|
|
case WEAPON_CALLISTONTG: return 10;
|
|
case WEAPON_RCP120: return 11;
|
|
case WEAPON_LAPTOPGUN: return 12;
|
|
case WEAPON_DRAGON: return 13;
|
|
case WEAPON_K7AVENGER: return 14;
|
|
case WEAPON_AR34: return 15;
|
|
case WEAPON_SUPERDRAGON: return 16;
|
|
case WEAPON_SHOTGUN: return 17;
|
|
case WEAPON_SNIPERRIFLE: return 18;
|
|
case WEAPON_FARSIGHTXR20: return 19;
|
|
case WEAPON_CROSSBOW: return 20;
|
|
case WEAPON_TRANQUILIZER: return 21;
|
|
case WEAPON_REAPER: return 22;
|
|
case WEAPON_DEVASTATOR: return 23;
|
|
case WEAPON_ROCKETLAUNCHER: return 24;
|
|
case WEAPON_SLAYER: return 25;
|
|
case WEAPON_COMBATKNIFE: return 26;
|
|
case WEAPON_LASER: return 27;
|
|
case WEAPON_GRENADE: return 28;
|
|
case WEAPON_TIMEDMINE: return 29;
|
|
case WEAPON_PROXIMITYMINE: return 30;
|
|
case WEAPON_REMOTEMINE: return 31;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
u32 func0f19cdf0(u32 weaponnum)
|
|
{
|
|
switch (weaponnum) {
|
|
case WEAPON_FALCON2: return 1;
|
|
case WEAPON_FALCON2_SCOPE: return 2;
|
|
case WEAPON_FALCON2_SILENCER: return 3;
|
|
case WEAPON_MAGSEC4: return 4;
|
|
case WEAPON_MAULER: return 5;
|
|
case WEAPON_PHOENIX: return 6;
|
|
case WEAPON_DY357MAGNUM: return 7;
|
|
case WEAPON_DY357LX: return 8;
|
|
case WEAPON_CMP150: return 9;
|
|
case WEAPON_CYCLONE: return 10;
|
|
case WEAPON_CALLISTONTG: return 11;
|
|
case WEAPON_RCP120: return 12;
|
|
case WEAPON_LAPTOPGUN: return 13;
|
|
case WEAPON_DRAGON: return 14;
|
|
case WEAPON_K7AVENGER: return 15;
|
|
case WEAPON_AR34: return 16;
|
|
case WEAPON_SUPERDRAGON: return 17;
|
|
case WEAPON_SHOTGUN: return 18;
|
|
case WEAPON_SNIPERRIFLE: return 19;
|
|
case WEAPON_FARSIGHTXR20: return 20;
|
|
case WEAPON_CROSSBOW: return 21;
|
|
case WEAPON_TRANQUILIZER: return 22;
|
|
case WEAPON_REAPER: return 23;
|
|
case WEAPON_DEVASTATOR: return 24;
|
|
case WEAPON_ROCKETLAUNCHER: return 25;
|
|
case WEAPON_SLAYER: return 26;
|
|
case WEAPON_COMBATKNIFE: return 27;
|
|
case WEAPON_LASER: return 28;
|
|
case WEAPON_GRENADE: return 29;
|
|
case WEAPON_TIMEDMINE: return 31;
|
|
case WEAPON_PROXIMITYMINE: return 32;
|
|
case WEAPON_REMOTEMINE: return 33;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
s32 frIsClassicWeaponUnlocked(u32 weapon)
|
|
{
|
|
switch (weapon) {
|
|
case WEAPON_PP9I:
|
|
return ciGetFiringRangeScore(0) == 3
|
|
&& ciGetFiringRangeScore(1) == 3
|
|
&& ciGetFiringRangeScore(2) == 3;
|
|
case WEAPON_CC13:
|
|
return ciGetFiringRangeScore(3) == 3
|
|
&& ciGetFiringRangeScore(4) == 3
|
|
&& ciGetFiringRangeScore(5) == 3
|
|
&& ciGetFiringRangeScore(6) == 3
|
|
&& ciGetFiringRangeScore(7) == 3;
|
|
case WEAPON_KL01313:
|
|
return ciGetFiringRangeScore(8) == 3
|
|
&& ciGetFiringRangeScore(9) == 3
|
|
&& ciGetFiringRangeScore(10) == 3
|
|
&& ciGetFiringRangeScore(11) == 3;
|
|
case WEAPON_KF7SPECIAL:
|
|
return ciGetFiringRangeScore(12) == 3
|
|
&& ciGetFiringRangeScore(13) == 3
|
|
&& ciGetFiringRangeScore(14) == 3
|
|
&& ciGetFiringRangeScore(15) == 3
|
|
&& ciGetFiringRangeScore(16) == 3;
|
|
case WEAPON_ZZT:
|
|
return ciGetFiringRangeScore(17) == 3
|
|
&& ciGetFiringRangeScore(18) == 3
|
|
&& ciGetFiringRangeScore(24) == 3
|
|
&& ciGetFiringRangeScore(25) == 3;
|
|
case WEAPON_DMC:
|
|
return ciGetFiringRangeScore(29) == 3
|
|
&& ciGetFiringRangeScore(30) == 3
|
|
&& ciGetFiringRangeScore(31) == 3;
|
|
case WEAPON_AR53:
|
|
return ciGetFiringRangeScore(19) == 3
|
|
&& ciGetFiringRangeScore(20) == 3
|
|
&& ciGetFiringRangeScore(26) == 3
|
|
&& ciGetFiringRangeScore(28) == 3;
|
|
case WEAPON_RCP45:
|
|
return ciGetFiringRangeScore(21) == 3
|
|
&& ciGetFiringRangeScore(22) == 3
|
|
&& ciGetFiringRangeScore(23) == 3;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
s32 frGetSlot(void)
|
|
{
|
|
return g_FiringRangeData.slot;
|
|
}
|
|
|
|
void frSetSlot(s32 slot)
|
|
{
|
|
g_FiringRangeData.slot = slot;
|
|
}
|
|
|
|
u32 frGetWeaponBySlot(s32 slot)
|
|
{
|
|
s32 index = -1;
|
|
s32 weapon;
|
|
|
|
for (weapon = WEAPON_NONE; weapon <= WEAPON_HORIZONSCANNER; weapon++) {
|
|
if (frWeaponIsAvailable(weapon)) {
|
|
index++;
|
|
}
|
|
|
|
if (slot == index) {
|
|
return weapon;
|
|
}
|
|
}
|
|
|
|
return WEAPON_UNARMED;
|
|
}
|
|
|
|
s32 frGetNumWeaponsAvailable(void)
|
|
{
|
|
s32 count = 0;
|
|
s32 i;
|
|
|
|
for (i = WEAPON_UNARMED; i <= WEAPON_HORIZONSCANNER; i++) {
|
|
if (frWeaponIsAvailable(i)) {
|
|
count++;
|
|
}
|
|
}
|
|
|
|
return count;
|
|
}
|
|
|
|
void frInitLighting(void)
|
|
{
|
|
if (g_FiringRangeData.donelighting == false) {
|
|
s32 roomnum;
|
|
|
|
for (roomnum = 7; roomnum < 10; roomnum++) {
|
|
roomSetLighting(roomnum, LIGHTOP_3, 50, 100, 32);
|
|
}
|
|
|
|
roomSetLighting(CIROOM_FIRINGRANGE, LIGHTOP_3, 25, 100, 32);
|
|
|
|
g_FiringRangeData.donelighting = true;
|
|
|
|
audioStart(var80095200, 0x5d5, NULL, -1, -1, -1, -1, -1);
|
|
}
|
|
|
|
chrSetStageFlag(NULL, STAGEFLAG_CI_IN_TRAINING);
|
|
}
|
|
|
|
void frRestoreLighting(void)
|
|
{
|
|
if (g_FiringRangeData.donelighting == true) {
|
|
s32 roomnum;
|
|
|
|
for (roomnum = 7; roomnum < 10; roomnum++) {
|
|
roomSetLighting(roomnum, LIGHTOP_3, 100, 50, 8);
|
|
}
|
|
|
|
roomSetLighting(CIROOM_FIRINGRANGE, LIGHTOP_3, 100, 25, 8);
|
|
|
|
g_FiringRangeData.donelighting = false;
|
|
|
|
audioStart(var80095200, 0x5d6, NULL, -1, -1, -1, -1, -1);
|
|
}
|
|
}
|
|
|
|
void func0f19d4ec(void)
|
|
{
|
|
s32 i;
|
|
|
|
var80088800 = NULL;
|
|
var80088808 = 0;
|
|
g_FrIsValidWeapon = false;
|
|
g_FrRomData = NULL;
|
|
|
|
g_FiringRangeData.unk466 = 0;
|
|
g_FiringRangeData.scriptoffset = 0;
|
|
g_FiringRangeData.scriptenabled = false;
|
|
g_FiringRangeData.scriptsleep = 0;
|
|
g_FiringRangeData.unk464 = 0;
|
|
g_FiringRangeData.unk000 = 0;
|
|
|
|
for (i = 0; i < 18; i++) {
|
|
g_FiringRangeData.targets[i].prop = NULL;
|
|
g_FiringRangeData.targets[i].unk00_01 = false;
|
|
}
|
|
|
|
var8008880c = 0;
|
|
}
|
|
|
|
void *frLoadRomData(u32 len)
|
|
{
|
|
g_FrRomData = malloc(ALIGN16(len), 4);
|
|
|
|
if (g_FrRomData) {
|
|
return func0000d488(g_FrRomData, &_frdataSegmentRomStart, len);
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
void frSetDifficulty(s32 difficulty)
|
|
{
|
|
if (difficulty < FRDIFFICULTY_BRONZE) {
|
|
difficulty = FRDIFFICULTY_BRONZE;
|
|
}
|
|
|
|
if (difficulty > FRDIFFICULTY_GOLD) {
|
|
difficulty = FRDIFFICULTY_GOLD;
|
|
}
|
|
|
|
g_FiringRangeData.difficulty = difficulty;
|
|
}
|
|
|
|
u32 frGetDifficulty(void)
|
|
{
|
|
return g_FiringRangeData.difficulty;
|
|
}
|
|
|
|
GLOBAL_ASM(
|
|
glabel func0f19d5f4
|
|
/* f19d5f4: 27bdff60 */ addiu $sp,$sp,-160
|
|
/* f19d5f8: afbf003c */ sw $ra,0x3c($sp)
|
|
/* f19d5fc: 3c018009 */ lui $at,%hi(var8008880c)
|
|
/* f19d600: 3c048009 */ lui $a0,%hi(g_FrPads)
|
|
/* f19d604: afb50038 */ sw $s5,0x38($sp)
|
|
/* f19d608: afb40034 */ sw $s4,0x34($sp)
|
|
/* f19d60c: afb30030 */ sw $s3,0x30($sp)
|
|
/* f19d610: afb2002c */ sw $s2,0x2c($sp)
|
|
/* f19d614: afb10028 */ sw $s1,0x28($sp)
|
|
/* f19d618: afb00024 */ sw $s0,0x24($sp)
|
|
/* f19d61c: f7b60018 */ sdc1 $f22,0x18($sp)
|
|
/* f19d620: f7b40010 */ sdc1 $f20,0x10($sp)
|
|
/* f19d624: a020880c */ sb $zero,%lo(var8008880c)($at)
|
|
/* f19d628: 94848814 */ lhu $a0,%lo(g_FrPads)($a0)
|
|
/* f19d62c: 27a60048 */ addiu $a2,$sp,0x48
|
|
/* f19d630: 0fc456ac */ jal padUnpack
|
|
/* f19d634: 24050002 */ addiu $a1,$zero,0x2
|
|
/* f19d638: 3c12800b */ lui $s2,%hi(g_FiringRangeData)
|
|
/* f19d63c: 2652cd20 */ addiu $s2,$s2,%lo(g_FiringRangeData)
|
|
/* f19d640: 3c013f80 */ lui $at,0x3f80
|
|
/* f19d644: 44812000 */ mtc1 $at,$f4
|
|
/* f19d648: 240200ff */ addiu $v0,$zero,0xff
|
|
/* f19d64c: 3c0140c0 */ lui $at,0x40c0
|
|
/* f19d650: 240e00c8 */ addiu $t6,$zero,0xc8
|
|
/* f19d654: 3c10800b */ lui $s0,%hi(g_FiringRangeData)
|
|
/* f19d658: 4481b000 */ mtc1 $at,$f22
|
|
/* f19d65c: 4480a000 */ mtc1 $zero,$f20
|
|
/* f19d660: a2400000 */ sb $zero,0x0($s2)
|
|
/* f19d664: a6400002 */ sh $zero,0x2($s2)
|
|
/* f19d668: a24e0005 */ sb $t6,0x5($s2)
|
|
/* f19d66c: a2420006 */ sb $v0,0x6($s2)
|
|
/* f19d670: a2420007 */ sb $v0,0x7($s2)
|
|
/* f19d674: a2400008 */ sb $zero,0x8($s2)
|
|
/* f19d678: a2420004 */ sb $v0,0x4($s2)
|
|
/* f19d67c: 2610cd20 */ addiu $s0,$s0,%lo(g_FiringRangeData)
|
|
/* f19d680: 00008825 */ or $s1,$zero,$zero
|
|
/* f19d684: 2415ffff */ addiu $s5,$zero,-1
|
|
/* f19d688: 24140012 */ addiu $s4,$zero,0x12
|
|
/* f19d68c: 24133bc4 */ addiu $s3,$zero,0x3bc4
|
|
/* f19d690: e644000c */ swc1 $f4,0xc($s2)
|
|
.L0f19d694:
|
|
/* f19d694: 44918000 */ mtc1 $s1,$f16
|
|
/* f19d698: 920f0010 */ lbu $t7,0x10($s0)
|
|
/* f19d69c: c7a60048 */ lwc1 $f6,0x48($sp)
|
|
/* f19d6a0: 468084a0 */ cvt.s.w $f18,$f16
|
|
/* f19d6a4: c7aa0050 */ lwc1 $f10,0x50($sp)
|
|
/* f19d6a8: 31f9ff7f */ andi $t9,$t7,0xff7f
|
|
/* f19d6ac: 332900fb */ andi $t1,$t9,0xfb
|
|
/* f19d6b0: e6060018 */ swc1 $f6,0x18($s0)
|
|
/* f19d6b4: a2190010 */ sb $t9,0x10($s0)
|
|
/* f19d6b8: 4612b102 */ mul.s $f4,$f22,$f18
|
|
/* f19d6bc: 312b00df */ andi $t3,$t1,0xdf
|
|
/* f19d6c0: c7a8004c */ lwc1 $f8,0x4c($sp)
|
|
/* f19d6c4: a2090010 */ sb $t1,0x10($s0)
|
|
/* f19d6c8: a20b0010 */ sb $t3,0x10($s0)
|
|
/* f19d6cc: 316c00f7 */ andi $t4,$t3,0xf7
|
|
/* f19d6d0: a2000030 */ sb $zero,0x30($s0)
|
|
/* f19d6d4: 46045180 */ add.s $f6,$f10,$f4
|
|
/* f19d6d8: a2000031 */ sb $zero,0x31($s0)
|
|
/* f19d6dc: e614002c */ swc1 $f20,0x2c($s0)
|
|
/* f19d6e0: ae130024 */ sw $s3,0x24($s0)
|
|
/* f19d6e4: e6060020 */ swc1 $f6,0x20($s0)
|
|
/* f19d6e8: ae000028 */ sw $zero,0x28($s0)
|
|
/* f19d6ec: a20c0010 */ sb $t4,0x10($s0)
|
|
/* f19d6f0: e6140034 */ swc1 $f20,0x34($s0)
|
|
/* f19d6f4: e6140038 */ swc1 $f20,0x38($s0)
|
|
/* f19d6f8: e614003c */ swc1 $f20,0x3c($s0)
|
|
/* f19d6fc: a2000041 */ sb $zero,0x41($s0)
|
|
/* f19d700: a2000042 */ sb $zero,0x42($s0)
|
|
/* f19d704: a2000043 */ sb $zero,0x43($s0)
|
|
/* f19d708: ae000048 */ sw $zero,0x48($s0)
|
|
/* f19d70c: a2150044 */ sb $s5,0x44($s0)
|
|
/* f19d710: 8e040014 */ lw $a0,0x14($s0)
|
|
/* f19d714: 00002825 */ or $a1,$zero,$zero
|
|
/* f19d718: 0fc4f903 */ jal func0f13e40c
|
|
/* f19d71c: e608001c */ swc1 $f8,0x1c($s0)
|
|
/* f19d720: 8e040014 */ lw $a0,0x14($s0)
|
|
/* f19d724: 0fc4f903 */ jal func0f13e40c
|
|
/* f19d728: 24050001 */ addiu $a1,$zero,0x1
|
|
/* f19d72c: 26310001 */ addiu $s1,$s1,0x1
|
|
/* f19d730: 1634ffd8 */ bne $s1,$s4,.L0f19d694
|
|
/* f19d734: 2610003c */ addiu $s0,$s0,0x3c
|
|
/* f19d738: 924e0465 */ lbu $t6,0x465($s2)
|
|
/* f19d73c: 8fbf003c */ lw $ra,0x3c($sp)
|
|
/* f19d740: 240dff10 */ addiu $t5,$zero,-240
|
|
/* f19d744: 31d9fff7 */ andi $t9,$t6,0xfff7
|
|
/* f19d748: a2590465 */ sb $t9,0x465($s2)
|
|
/* f19d74c: 37280004 */ ori $t0,$t9,0x4
|
|
/* f19d750: a6550476 */ sh $s5,0x476($s2)
|
|
/* f19d754: ae4d044c */ sw $t5,0x44c($s2)
|
|
/* f19d758: ae400450 */ sw $zero,0x450($s2)
|
|
/* f19d75c: a2400454 */ sb $zero,0x454($s2)
|
|
/* f19d760: a2400455 */ sb $zero,0x455($s2)
|
|
/* f19d764: a2400464 */ sb $zero,0x464($s2)
|
|
/* f19d768: a2400470 */ sb $zero,0x470($s2)
|
|
/* f19d76c: a2400471 */ sb $zero,0x471($s2)
|
|
/* f19d770: a2400472 */ sb $zero,0x472($s2)
|
|
/* f19d774: a240045b */ sb $zero,0x45b($s2)
|
|
/* f19d778: a6400458 */ sh $zero,0x458($s2)
|
|
/* f19d77c: a6400462 */ sh $zero,0x462($s2)
|
|
/* f19d780: a6400460 */ sh $zero,0x460($s2)
|
|
/* f19d784: a640045e */ sh $zero,0x45e($s2)
|
|
/* f19d788: a640045c */ sh $zero,0x45c($s2)
|
|
/* f19d78c: a2400466 */ sb $zero,0x466($s2)
|
|
/* f19d790: a2400467 */ sb $zero,0x467($s2)
|
|
/* f19d794: a2400468 */ sb $zero,0x468($s2)
|
|
/* f19d798: ae40046c */ sw $zero,0x46c($s2)
|
|
/* f19d79c: a6400474 */ sh $zero,0x474($s2)
|
|
/* f19d7a0: a2480465 */ sb $t0,0x465($s2)
|
|
/* f19d7a4: 8fb2002c */ lw $s2,0x2c($sp)
|
|
/* f19d7a8: 8fb50038 */ lw $s5,0x38($sp)
|
|
/* f19d7ac: d7b40010 */ ldc1 $f20,0x10($sp)
|
|
/* f19d7b0: d7b60018 */ ldc1 $f22,0x18($sp)
|
|
/* f19d7b4: 8fb00024 */ lw $s0,0x24($sp)
|
|
/* f19d7b8: 8fb10028 */ lw $s1,0x28($sp)
|
|
/* f19d7bc: 8fb30030 */ lw $s3,0x30($sp)
|
|
/* f19d7c0: 8fb40034 */ lw $s4,0x34($sp)
|
|
/* f19d7c4: 03e00008 */ jr $ra
|
|
/* f19d7c8: 27bd00a0 */ addiu $sp,$sp,0xa0
|
|
);
|
|
|
|
// Mismatch due to something weird with the unk465 bitfield, plus some f32
|
|
// regalloc near pad.pos.z.
|
|
//void func0f19d5f4(void)
|
|
//{
|
|
// s32 i;
|
|
// struct pad pad;
|
|
//
|
|
// var8008880c = 0;
|
|
//
|
|
// padUnpack(g_FrPads[0], PADFIELD_POS, &pad);
|
|
//
|
|
// g_FiringRangeData.unk000 = 0;
|
|
// g_FiringRangeData.goalscore = 0;
|
|
// g_FiringRangeData.timelimit = 200;
|
|
// g_FiringRangeData.ammolimit = 255;
|
|
// g_FiringRangeData.sdgrenadelimit = 255;
|
|
// g_FiringRangeData.goalaccuracy = 0;
|
|
// g_FiringRangeData.goaltargets = 255;
|
|
// g_FiringRangeData.unk00c = 1;
|
|
//
|
|
// for (i = 0; i < 18; i++) {
|
|
// g_FiringRangeData.targets[i].unk08.x = pad.pos.x;
|
|
// g_FiringRangeData.targets[i].unk08.y = pad.pos.y;
|
|
// g_FiringRangeData.targets[i].unk08.z = pad.pos.z + i * 6.0f;
|
|
//
|
|
// g_FiringRangeData.targets[i].unk00_01 = false;
|
|
// g_FiringRangeData.targets[i].unk00_06 = false;
|
|
// g_FiringRangeData.targets[i].unk00_03 = false;
|
|
// g_FiringRangeData.targets[i].unk20 = 0;
|
|
// g_FiringRangeData.targets[i].unk21 = 0;
|
|
//
|
|
// g_FiringRangeData.targets[i].unk1c = 0;
|
|
// g_FiringRangeData.targets[i].unk14 = 15300;
|
|
// g_FiringRangeData.targets[i].unk18 = 0;
|
|
//
|
|
// g_FiringRangeData.targets[i].unk00_05 = false;
|
|
// g_FiringRangeData.targets[i].unk24 = 0;
|
|
// g_FiringRangeData.targets[i].unk28 = 0;
|
|
// g_FiringRangeData.targets[i].unk2c = 0;
|
|
// g_FiringRangeData.targets[i].unk31 = 0;
|
|
// g_FiringRangeData.targets[i].unk32 = 0;
|
|
// g_FiringRangeData.targets[i].unk33 = 0;
|
|
// g_FiringRangeData.targets[i].unk38 = 0;
|
|
// g_FiringRangeData.targets[i].unk34 = -1;
|
|
//
|
|
// func0f13e40c(g_FiringRangeData.targets[i].unk04, false);
|
|
// func0f13e40c(g_FiringRangeData.targets[i].unk04, true);
|
|
// }
|
|
//
|
|
// g_FiringRangeData.unk465_05 = true;
|
|
// g_FiringRangeData.timetaken = -240;
|
|
// g_FiringRangeData.unk476 = -1;
|
|
// g_FiringRangeData.score = 0;
|
|
// g_FiringRangeData.unk454 = 0;
|
|
// g_FiringRangeData.targetsdestroyed = 0;
|
|
// g_FiringRangeData.unk464 = 0;
|
|
// g_FiringRangeData.unk470 = 0;
|
|
// g_FiringRangeData.feedbackzone = 0;
|
|
// g_FiringRangeData.feedbackttl = 0;
|
|
// g_FiringRangeData.failreason = 0;
|
|
// g_FiringRangeData.numshots = 0;
|
|
// g_FiringRangeData.numhitstype4 = 0;
|
|
// g_FiringRangeData.numhitstype3 = 0;
|
|
// g_FiringRangeData.numhitstype2 = 0;
|
|
// g_FiringRangeData.numhitstype1 = 0;
|
|
// g_FiringRangeData.unk466 = 0;
|
|
// g_FiringRangeData.scriptoffset = 0;
|
|
// g_FiringRangeData.scriptenabled = false;
|
|
// g_FiringRangeData.scriptsleep = 0;
|
|
// g_FiringRangeData.unk474 = 0;
|
|
// g_FiringRangeData.unk465_04 = false;
|
|
//}
|
|
|
|
struct frdata *getFiringRangeData(void)
|
|
{
|
|
return &g_FiringRangeData;
|
|
}
|
|
|
|
u32 func0f19d7d8(u32 arg0)
|
|
{
|
|
switch (arg0) {
|
|
case 0x1f: return random() % 9 + 4; // 4 - 12
|
|
case 0x20: return random() % 9 + 13; // 13 - 21
|
|
case 0x21: return random() % 9 + 22; // 22 - 30
|
|
case 0x22: return random() % 27 + 4; // 4 - 30
|
|
}
|
|
|
|
return g_FiringRangeData.unk470 + arg0;
|
|
}
|
|
|
|
bool frIsDifficulty(u32 difficulties)
|
|
{
|
|
if (g_FiringRangeData.difficulty == FRDIFFICULTY_BRONZE) {
|
|
if ((difficulties & FRDIFFBIT_BRONZE) == 0) {
|
|
return false;
|
|
}
|
|
} else if (g_FiringRangeData.difficulty == FRDIFFICULTY_SILVER) {
|
|
if ((difficulties & FRDIFFBIT_SILVER) == 0) {
|
|
return false;
|
|
}
|
|
} else if (g_FiringRangeData.difficulty == FRDIFFICULTY_GOLD) {
|
|
if ((difficulties & FRDIFFBIT_GOLD) == 0) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
GLOBAL_ASM(
|
|
glabel func0f19d90c
|
|
.late_rodata
|
|
glabel var7f1b93bc
|
|
.word func0f19d90c+0xc4 # f19d9d0
|
|
glabel var7f1b93c0
|
|
.word func0f19d90c+0x1f4 # f19db00
|
|
glabel var7f1b93c4
|
|
.word func0f19d90c+0x24c # f19db58
|
|
glabel var7f1b93c8
|
|
.word func0f19d90c+0x278 # f19db84
|
|
glabel var7f1b93cc
|
|
.word func0f19d90c+0x2ac # f19dbb8
|
|
glabel var7f1b93d0
|
|
.word func0f19d90c+0x360 # f19dc6c
|
|
glabel var7f1b93d4
|
|
.word func0f19d90c+0x3b8 # f19dcc4
|
|
glabel var7f1b93d8
|
|
.word func0f19d90c+0x3dc # f19dce8
|
|
glabel var7f1b93dc
|
|
.word func0f19d90c+0x400 # f19dd0c
|
|
glabel var7f1b93e0
|
|
.word func0f19d90c+0x310 # f19dc1c
|
|
glabel var7f1b93e4
|
|
.word func0f19d90c+0xac # f19d9b8
|
|
glabel var7f1b93e8
|
|
.word func0f19d90c+0x218 # f19db24
|
|
glabel var7f1b93ec
|
|
.word 0x3dcccccd
|
|
.text
|
|
/* f19d90c: 27bdff98 */ addiu $sp,$sp,-104
|
|
/* f19d910: afb20020 */ sw $s2,0x20($sp)
|
|
/* f19d914: afbf003c */ sw $ra,0x3c($sp)
|
|
/* f19d918: afbe0038 */ sw $s8,0x38($sp)
|
|
/* f19d91c: afb70034 */ sw $s7,0x34($sp)
|
|
/* f19d920: afb60030 */ sw $s6,0x30($sp)
|
|
/* f19d924: afb5002c */ sw $s5,0x2c($sp)
|
|
/* f19d928: afb40028 */ sw $s4,0x28($sp)
|
|
/* f19d92c: afb30024 */ sw $s3,0x24($sp)
|
|
/* f19d930: afb1001c */ sw $s1,0x1c($sp)
|
|
/* f19d934: afb00018 */ sw $s0,0x18($sp)
|
|
/* f19d938: 0480012e */ bltz $a0,.L0f19ddf4
|
|
/* f19d93c: 00009025 */ or $s2,$zero,$zero
|
|
/* f19d940: 28810022 */ slti $at,$a0,0x22
|
|
/* f19d944: 1020012b */ beqz $at,.L0f19ddf4
|
|
/* f19d948: 3c0e8009 */ lui $t6,%hi(var80088800)
|
|
/* f19d94c: 8dce8800 */ lw $t6,%lo(var80088800)($t6)
|
|
/* f19d950: 00047840 */ sll $t7,$a0,0x1
|
|
/* f19d954: 3c088009 */ lui $t0,%hi(g_FrRomData)
|
|
/* f19d958: 01cfc021 */ addu $t8,$t6,$t7
|
|
/* f19d95c: 97190000 */ lhu $t9,0x0($t8)
|
|
/* f19d960: 8d088810 */ lw $t0,%lo(g_FrRomData)($t0)
|
|
/* f19d964: 24010013 */ addiu $at,$zero,0x13
|
|
/* f19d968: 24160001 */ addiu $s6,$zero,0x1
|
|
/* f19d96c: 0328a021 */ addu $s4,$t9,$t0
|
|
/* f19d970: 92890000 */ lbu $t1,0x0($s4)
|
|
/* f19d974: 02808821 */ addu $s1,$s4,$zero
|
|
/* f19d978: 241e0001 */ addiu $s8,$zero,0x1
|
|
/* f19d97c: 1121011d */ beq $t1,$at,.L0f19ddf4
|
|
/* f19d980: 312200ff */ andi $v0,$t1,0xff
|
|
/* f19d984: 3c10800b */ lui $s0,%hi(g_FiringRangeData)
|
|
/* f19d988: 2610cd20 */ addiu $s0,$s0,%lo(g_FiringRangeData)
|
|
/* f19d98c: 241700ff */ addiu $s7,$zero,0xff
|
|
/* f19d990: 2415003c */ addiu $s5,$zero,0x3c
|
|
/* f19d994: 8fb30044 */ lw $s3,0x44($sp)
|
|
/* f19d998: 2c41000c */ sltiu $at,$v0,0xc
|
|
.L0f19d99c:
|
|
/* f19d99c: 10200111 */ beqz $at,.L0f19dde4
|
|
/* f19d9a0: 00025080 */ sll $t2,$v0,0x2
|
|
/* f19d9a4: 3c017f1c */ lui $at,%hi(var7f1b93bc)
|
|
/* f19d9a8: 002a0821 */ addu $at,$at,$t2
|
|
/* f19d9ac: 8c2a93bc */ lw $t2,%lo(var7f1b93bc)($at)
|
|
/* f19d9b0: 01400008 */ jr $t2
|
|
/* f19d9b4: 00000000 */ nop
|
|
/* f19d9b8: 922b0001 */ lbu $t3,0x1($s1)
|
|
/* f19d9bc: 26520002 */ addiu $s2,$s2,0x2
|
|
/* f19d9c0: 26310002 */ addiu $s1,$s1,0x2
|
|
/* f19d9c4: a20b0470 */ sb $t3,0x470($s0)
|
|
/* f19d9c8: 10000106 */ b .L0f19dde4
|
|
/* f19d9cc: 92220000 */ lbu $v0,0x0($s1)
|
|
/* f19d9d0: 0fc67629 */ jal frIsDifficulty
|
|
/* f19d9d4: 92240004 */ lbu $a0,0x4($s1)
|
|
/* f19d9d8: 54400006 */ bnezl $v0,.L0f19d9f4
|
|
/* f19d9dc: 920c0454 */ lbu $t4,0x454($s0)
|
|
/* f19d9e0: 26520005 */ addiu $s2,$s2,0x5
|
|
/* f19d9e4: 26310005 */ addiu $s1,$s1,0x5
|
|
/* f19d9e8: 100000fe */ b .L0f19dde4
|
|
/* f19d9ec: 92220000 */ lbu $v0,0x0($s1)
|
|
/* f19d9f0: 920c0454 */ lbu $t4,0x454($s0)
|
|
.L0f19d9f4:
|
|
/* f19d9f4: 29810012 */ slti $at,$t4,0x12
|
|
/* f19d9f8: 5020003e */ beqzl $at,.L0f19daf4
|
|
/* f19d9fc: 26520005 */ addiu $s2,$s2,0x5
|
|
/* f19da00: 0fc675f6 */ jal func0f19d7d8
|
|
/* f19da04: 92240001 */ lbu $a0,0x1($s1)
|
|
/* f19da08: 920d0454 */ lbu $t5,0x454($s0)
|
|
/* f19da0c: 30580003 */ andi $t8,$v0,0x3
|
|
/* f19da10: 01b50019 */ multu $t5,$s5
|
|
/* f19da14: 00007012 */ mflo $t6
|
|
/* f19da18: 020e1821 */ addu $v1,$s0,$t6
|
|
/* f19da1c: 90790010 */ lbu $t9,0x10($v1)
|
|
/* f19da20: 3328fffc */ andi $t0,$t9,0xfffc
|
|
/* f19da24: 03084825 */ or $t1,$t8,$t0
|
|
/* f19da28: a0690010 */ sb $t1,0x10($v1)
|
|
/* f19da2c: 920b0454 */ lbu $t3,0x454($s0)
|
|
/* f19da30: 922a0002 */ lbu $t2,0x2($s1)
|
|
/* f19da34: 01750019 */ multu $t3,$s5
|
|
/* f19da38: 00006012 */ mflo $t4
|
|
/* f19da3c: 020c6821 */ addu $t5,$s0,$t4
|
|
/* f19da40: a1aa0012 */ sb $t2,0x12($t5)
|
|
/* f19da44: 920f0454 */ lbu $t7,0x454($s0)
|
|
/* f19da48: 922e0003 */ lbu $t6,0x3($s1)
|
|
/* f19da4c: 01f50019 */ multu $t7,$s5
|
|
/* f19da50: 0000c812 */ mflo $t9
|
|
/* f19da54: 0219c021 */ addu $t8,$s0,$t9
|
|
/* f19da58: a30e0011 */ sb $t6,0x11($t8)
|
|
/* f19da5c: 92080454 */ lbu $t0,0x454($s0)
|
|
/* f19da60: 01150019 */ multu $t0,$s5
|
|
/* f19da64: 00004812 */ mflo $t1
|
|
/* f19da68: 02091821 */ addu $v1,$s0,$t1
|
|
/* f19da6c: 906c0010 */ lbu $t4,0x10($v1)
|
|
/* f19da70: 358a0080 */ ori $t2,$t4,0x80
|
|
/* f19da74: a06a0010 */ sb $t2,0x10($v1)
|
|
/* f19da78: 920f0454 */ lbu $t7,0x454($s0)
|
|
/* f19da7c: 922d0004 */ lbu $t5,0x4($s1)
|
|
/* f19da80: 01f50019 */ multu $t7,$s5
|
|
/* f19da84: 0000c812 */ mflo $t9
|
|
/* f19da88: 02197021 */ addu $t6,$s0,$t9
|
|
/* f19da8c: a1cd0040 */ sb $t5,0x40($t6)
|
|
/* f19da90: 92040454 */ lbu $a0,0x454($s0)
|
|
/* f19da94: 00950019 */ multu $a0,$s5
|
|
/* f19da98: 0000c012 */ mflo $t8
|
|
/* f19da9c: 02181821 */ addu $v1,$s0,$t8
|
|
/* f19daa0: 90650040 */ lbu $a1,0x40($v1)
|
|
/* f19daa4: 30a80008 */ andi $t0,$a1,0x8
|
|
/* f19daa8: 5100000b */ beqzl $t0,.L0f19dad8
|
|
/* f19daac: 30af0020 */ andi $t7,$a1,0x20
|
|
/* f19dab0: 906b0010 */ lbu $t3,0x10($v1)
|
|
/* f19dab4: 356c0004 */ ori $t4,$t3,0x4
|
|
/* f19dab8: a06c0010 */ sb $t4,0x10($v1)
|
|
/* f19dabc: 92040454 */ lbu $a0,0x454($s0)
|
|
/* f19dac0: 00045100 */ sll $t2,$a0,0x4
|
|
/* f19dac4: 01445023 */ subu $t2,$t2,$a0
|
|
/* f19dac8: 000a5080 */ sll $t2,$t2,0x2
|
|
/* f19dacc: 020a1821 */ addu $v1,$s0,$t2
|
|
/* f19dad0: 90650040 */ lbu $a1,0x40($v1)
|
|
/* f19dad4: 30af0020 */ andi $t7,$a1,0x20
|
|
.L0f19dad8:
|
|
/* f19dad8: 51e00004 */ beqzl $t7,.L0f19daec
|
|
/* f19dadc: 24990001 */ addiu $t9,$a0,0x1
|
|
/* f19dae0: a07e0011 */ sb $s8,0x11($v1)
|
|
/* f19dae4: 92040454 */ lbu $a0,0x454($s0)
|
|
/* f19dae8: 24990001 */ addiu $t9,$a0,0x1
|
|
.L0f19daec:
|
|
/* f19daec: a2190454 */ sb $t9,0x454($s0)
|
|
/* f19daf0: 26520005 */ addiu $s2,$s2,0x5
|
|
.L0f19daf4:
|
|
/* f19daf4: 26310005 */ addiu $s1,$s1,0x5
|
|
/* f19daf8: 100000ba */ b .L0f19dde4
|
|
/* f19dafc: 92220000 */ lbu $v0,0x0($s1)
|
|
/* f19db00: 920d0448 */ lbu $t5,0x448($s0)
|
|
/* f19db04: 26310004 */ addiu $s1,$s1,0x4
|
|
/* f19db08: 01b27021 */ addu $t6,$t5,$s2
|
|
/* f19db0c: 01d4c021 */ addu $t8,$t6,$s4
|
|
/* f19db10: 93080001 */ lbu $t0,0x1($t8)
|
|
/* f19db14: 26520004 */ addiu $s2,$s2,0x4
|
|
/* f19db18: a2080000 */ sb $t0,0x0($s0)
|
|
/* f19db1c: 100000b1 */ b .L0f19dde4
|
|
/* f19db20: 92220000 */ lbu $v0,0x0($s1)
|
|
/* f19db24: 92090448 */ lbu $t1,0x448($s0)
|
|
/* f19db28: 33d600ff */ andi $s6,$s8,0xff
|
|
/* f19db2c: 26310004 */ addiu $s1,$s1,0x4
|
|
/* f19db30: 01325821 */ addu $t3,$t1,$s2
|
|
/* f19db34: 01746021 */ addu $t4,$t3,$s4
|
|
/* f19db38: 91820001 */ lbu $v0,0x1($t4)
|
|
/* f19db3c: 26520004 */ addiu $s2,$s2,0x4
|
|
/* f19db40: 18400003 */ blez $v0,.L0f19db50
|
|
/* f19db44: 00000000 */ nop
|
|
/* f19db48: 10000001 */ b .L0f19db50
|
|
/* f19db4c: 305600ff */ andi $s6,$v0,0xff
|
|
.L0f19db50:
|
|
/* f19db50: 100000a4 */ b .L0f19dde4
|
|
/* f19db54: 92220000 */ lbu $v0,0x0($s1)
|
|
/* f19db58: 920a0448 */ lbu $t2,0x448($s0)
|
|
/* f19db5c: 26310004 */ addiu $s1,$s1,0x4
|
|
/* f19db60: 01527821 */ addu $t7,$t2,$s2
|
|
/* f19db64: 01f4c821 */ addu $t9,$t7,$s4
|
|
/* f19db68: 932d0001 */ lbu $t5,0x1($t9)
|
|
/* f19db6c: 26520004 */ addiu $s2,$s2,0x4
|
|
/* f19db70: 01b60019 */ multu $t5,$s6
|
|
/* f19db74: 00007012 */ mflo $t6
|
|
/* f19db78: a60e0002 */ sh $t6,0x2($s0)
|
|
/* f19db7c: 10000099 */ b .L0f19dde4
|
|
/* f19db80: 92220000 */ lbu $v0,0x0($s1)
|
|
/* f19db84: 92180448 */ lbu $t8,0x448($s0)
|
|
/* f19db88: 240a0078 */ addiu $t2,$zero,0x78
|
|
/* f19db8c: 26310004 */ addiu $s1,$s1,0x4
|
|
/* f19db90: 03124021 */ addu $t0,$t8,$s2
|
|
/* f19db94: 01144821 */ addu $t1,$t0,$s4
|
|
/* f19db98: 912b0001 */ lbu $t3,0x1($t1)
|
|
/* f19db9c: 26520004 */ addiu $s2,$s2,0x4
|
|
/* f19dba0: 316c00ff */ andi $t4,$t3,0xff
|
|
/* f19dba4: 16ec0002 */ bne $s7,$t4,.L0f19dbb0
|
|
/* f19dba8: a20b0005 */ sb $t3,0x5($s0)
|
|
/* f19dbac: a20a0005 */ sb $t2,0x5($s0)
|
|
.L0f19dbb0:
|
|
/* f19dbb0: 1000008c */ b .L0f19dde4
|
|
/* f19dbb4: 92220000 */ lbu $v0,0x0($s1)
|
|
/* f19dbb8: 0fc6749a */ jal frGetWeaponBySlot
|
|
/* f19dbbc: 96040456 */ lhu $a0,0x456($s0)
|
|
/* f19dbc0: 00402025 */ or $a0,$v0,$zero
|
|
/* f19dbc4: 0fc2a685 */ jal weaponGetAmmoType
|
|
/* f19dbc8: 00002825 */ or $a1,$zero,$zero
|
|
/* f19dbcc: 0fc2a63d */ jal ammotypeGetMaxCapacity
|
|
/* f19dbd0: 00402025 */ or $a0,$v0,$zero
|
|
/* f19dbd4: 920f0448 */ lbu $t7,0x448($s0)
|
|
/* f19dbd8: 26310004 */ addiu $s1,$s1,0x4
|
|
/* f19dbdc: 01f2c821 */ addu $t9,$t7,$s2
|
|
/* f19dbe0: 03346821 */ addu $t5,$t9,$s4
|
|
/* f19dbe4: 91ae0001 */ lbu $t6,0x1($t5)
|
|
/* f19dbe8: 26520004 */ addiu $s2,$s2,0x4
|
|
/* f19dbec: 31c300ff */ andi $v1,$t6,0xff
|
|
/* f19dbf0: 12e30008 */ beq $s7,$v1,.L0f19dc14
|
|
/* f19dbf4: a20e0006 */ sb $t6,0x6($s0)
|
|
/* f19dbf8: 0043082a */ slt $at,$v0,$v1
|
|
/* f19dbfc: 10200004 */ beqz $at,.L0f19dc10
|
|
/* f19dc00: 0062c023 */ subu $t8,$v1,$v0
|
|
/* f19dc04: 3c01800b */ lui $at,%hi(g_FiringRangeData+0x476)
|
|
/* f19dc08: 10000002 */ b .L0f19dc14
|
|
/* f19dc0c: a438d196 */ sh $t8,%lo(g_FiringRangeData+0x476)($at)
|
|
.L0f19dc10:
|
|
/* f19dc10: a6000476 */ sh $zero,0x476($s0)
|
|
.L0f19dc14:
|
|
/* f19dc14: 10000073 */ b .L0f19dde4
|
|
/* f19dc18: 92220000 */ lbu $v0,0x0($s1)
|
|
/* f19dc1c: 0fc2a63d */ jal ammotypeGetMaxCapacity
|
|
/* f19dc20: 2404000b */ addiu $a0,$zero,0xb
|
|
/* f19dc24: 92080448 */ lbu $t0,0x448($s0)
|
|
/* f19dc28: 26310004 */ addiu $s1,$s1,0x4
|
|
/* f19dc2c: 01124821 */ addu $t1,$t0,$s2
|
|
/* f19dc30: 01345821 */ addu $t3,$t1,$s4
|
|
/* f19dc34: 916c0001 */ lbu $t4,0x1($t3)
|
|
/* f19dc38: 26520004 */ addiu $s2,$s2,0x4
|
|
/* f19dc3c: 318300ff */ andi $v1,$t4,0xff
|
|
/* f19dc40: 12e30008 */ beq $s7,$v1,.L0f19dc64
|
|
/* f19dc44: a20c0007 */ sb $t4,0x7($s0)
|
|
/* f19dc48: 0043082a */ slt $at,$v0,$v1
|
|
/* f19dc4c: 10200004 */ beqz $at,.L0f19dc60
|
|
/* f19dc50: 00625023 */ subu $t2,$v1,$v0
|
|
/* f19dc54: 3c01800b */ lui $at,%hi(g_FiringRangeData+0x478)
|
|
/* f19dc58: 10000002 */ b .L0f19dc64
|
|
/* f19dc5c: a42ad198 */ sh $t2,%lo(g_FiringRangeData+0x478)($at)
|
|
.L0f19dc60:
|
|
/* f19dc60: a6000478 */ sh $zero,0x478($s0)
|
|
.L0f19dc64:
|
|
/* f19dc64: 1000005f */ b .L0f19dde4
|
|
/* f19dc68: 92220000 */ lbu $v0,0x0($s1)
|
|
/* f19dc6c: 920f0448 */ lbu $t7,0x448($s0)
|
|
/* f19dc70: 3c014f80 */ lui $at,0x4f80
|
|
/* f19dc74: 01f2c821 */ addu $t9,$t7,$s2
|
|
/* f19dc78: 03346821 */ addu $t5,$t9,$s4
|
|
/* f19dc7c: 91ae0001 */ lbu $t6,0x1($t5)
|
|
/* f19dc80: 448e2000 */ mtc1 $t6,$f4
|
|
/* f19dc84: 05c10004 */ bgez $t6,.L0f19dc98
|
|
/* f19dc88: 468021a0 */ cvt.s.w $f6,$f4
|
|
/* f19dc8c: 44814000 */ mtc1 $at,$f8
|
|
/* f19dc90: 00000000 */ nop
|
|
/* f19dc94: 46083180 */ add.s $f6,$f6,$f8
|
|
.L0f19dc98:
|
|
/* f19dc98: 3c017f1c */ lui $at,%hi(var7f1b93ec)
|
|
/* f19dc9c: c42a93ec */ lwc1 $f10,%lo(var7f1b93ec)($at)
|
|
/* f19dca0: 3c013f80 */ lui $at,0x3f80
|
|
/* f19dca4: 44819000 */ mtc1 $at,$f18
|
|
/* f19dca8: 460a3402 */ mul.s $f16,$f6,$f10
|
|
/* f19dcac: 26520004 */ addiu $s2,$s2,0x4
|
|
/* f19dcb0: 26310004 */ addiu $s1,$s1,0x4
|
|
/* f19dcb4: 46128100 */ add.s $f4,$f16,$f18
|
|
/* f19dcb8: e604000c */ swc1 $f4,0xc($s0)
|
|
/* f19dcbc: 10000049 */ b .L0f19dde4
|
|
/* f19dcc0: 92220000 */ lbu $v0,0x0($s1)
|
|
/* f19dcc4: 92180448 */ lbu $t8,0x448($s0)
|
|
/* f19dcc8: 26310004 */ addiu $s1,$s1,0x4
|
|
/* f19dccc: 03124021 */ addu $t0,$t8,$s2
|
|
/* f19dcd0: 01144821 */ addu $t1,$t0,$s4
|
|
/* f19dcd4: 912b0001 */ lbu $t3,0x1($t1)
|
|
/* f19dcd8: 26520004 */ addiu $s2,$s2,0x4
|
|
/* f19dcdc: a20b0008 */ sb $t3,0x8($s0)
|
|
/* f19dce0: 10000040 */ b .L0f19dde4
|
|
/* f19dce4: 92220000 */ lbu $v0,0x0($s1)
|
|
/* f19dce8: 920c0448 */ lbu $t4,0x448($s0)
|
|
/* f19dcec: 26310004 */ addiu $s1,$s1,0x4
|
|
/* f19dcf0: 01925021 */ addu $t2,$t4,$s2
|
|
/* f19dcf4: 01547821 */ addu $t7,$t2,$s4
|
|
/* f19dcf8: 91f90001 */ lbu $t9,0x1($t7)
|
|
/* f19dcfc: 26520004 */ addiu $s2,$s2,0x4
|
|
/* f19dd00: a2190004 */ sb $t9,0x4($s0)
|
|
/* f19dd04: 10000037 */ b .L0f19dde4
|
|
/* f19dd08: 92220000 */ lbu $v0,0x0($s1)
|
|
/* f19dd0c: 922d0001 */ lbu $t5,0x1($s1)
|
|
/* f19dd10: a21e0468 */ sb $s8,0x468($s0)
|
|
/* f19dd14: 3c0e8009 */ lui $t6,%hi(var80088800)
|
|
/* f19dd18: a20d0466 */ sb $t5,0x466($s0)
|
|
/* f19dd1c: 8dce8800 */ lw $t6,%lo(var80088800)($t6)
|
|
/* f19dd20: 31a300ff */ andi $v1,$t5,0xff
|
|
/* f19dd24: 24630071 */ addiu $v1,$v1,0x71
|
|
/* f19dd28: 0003c040 */ sll $t8,$v1,0x1
|
|
/* f19dd2c: 92020448 */ lbu $v0,0x448($s0)
|
|
/* f19dd30: 3c0b8009 */ lui $t3,%hi(g_FrRomData)
|
|
/* f19dd34: 01d84021 */ addu $t0,$t6,$t8
|
|
/* f19dd38: 95090000 */ lhu $t1,0x0($t0)
|
|
/* f19dd3c: 8d6b8810 */ lw $t3,%lo(g_FrRomData)($t3)
|
|
/* f19dd40: 26520002 */ addiu $s2,$s2,0x2
|
|
/* f19dd44: 26310002 */ addiu $s1,$s1,0x2
|
|
/* f19dd48: 14400003 */ bnez $v0,.L0f19dd58
|
|
/* f19dd4c: 012b2821 */ addu $a1,$t1,$t3
|
|
/* f19dd50: 1000000a */ b .L0f19dd7c
|
|
/* f19dd54: 241300fb */ addiu $s3,$zero,0xfb
|
|
.L0f19dd58:
|
|
/* f19dd58: 24010001 */ addiu $at,$zero,0x1
|
|
/* f19dd5c: 54410004 */ bnel $v0,$at,.L0f19dd70
|
|
/* f19dd60: 24010002 */ addiu $at,$zero,0x2
|
|
/* f19dd64: 10000005 */ b .L0f19dd7c
|
|
/* f19dd68: 241300fc */ addiu $s3,$zero,0xfc
|
|
/* f19dd6c: 24010002 */ addiu $at,$zero,0x2
|
|
.L0f19dd70:
|
|
/* f19dd70: 54410003 */ bnel $v0,$at,.L0f19dd80
|
|
/* f19dd74: a2000467 */ sb $zero,0x467($s0)
|
|
/* f19dd78: 241300fd */ addiu $s3,$zero,0xfd
|
|
.L0f19dd7c:
|
|
/* f19dd7c: a2000467 */ sb $zero,0x467($s0)
|
|
.L0f19dd80:
|
|
/* f19dd80: 00a01025 */ or $v0,$a1,$zero
|
|
.L0f19dd84:
|
|
/* f19dd84: 920c0467 */ lbu $t4,0x467($s0)
|
|
/* f19dd88: 258a0001 */ addiu $t2,$t4,0x1
|
|
/* f19dd8c: a20a0467 */ sb $t2,0x467($s0)
|
|
/* f19dd90: 904f0000 */ lbu $t7,0x0($v0)
|
|
/* f19dd94: 166f0011 */ bne $s3,$t7,.L0f19dddc
|
|
/* f19dd98: 00000000 */ nop
|
|
/* f19dd9c: 90430001 */ lbu $v1,0x1($v0)
|
|
/* f19dda0: 24420001 */ addiu $v0,$v0,0x1
|
|
/* f19dda4: 254d0001 */ addiu $t5,$t2,0x1
|
|
/* f19dda8: 286100fb */ slti $at,$v1,0xfb
|
|
/* f19ddac: 54200004 */ bnezl $at,.L0f19ddc0
|
|
/* f19ddb0: 286100fb */ slti $at,$v1,0xfb
|
|
/* f19ddb4: a20d0467 */ sb $t5,0x467($s0)
|
|
/* f19ddb8: 90430001 */ lbu $v1,0x1($v0)
|
|
/* f19ddbc: 286100fb */ slti $at,$v1,0xfb
|
|
.L0f19ddc0:
|
|
/* f19ddc0: 14200004 */ bnez $at,.L0f19ddd4
|
|
/* f19ddc4: 00000000 */ nop
|
|
/* f19ddc8: 920e0467 */ lbu $t6,0x467($s0)
|
|
/* f19ddcc: 25d80001 */ addiu $t8,$t6,0x1
|
|
/* f19ddd0: a2180467 */ sb $t8,0x467($s0)
|
|
.L0f19ddd4:
|
|
/* f19ddd4: 10000003 */ b .L0f19dde4
|
|
/* f19ddd8: 92220000 */ lbu $v0,0x0($s1)
|
|
.L0f19dddc:
|
|
/* f19dddc: 1000ffe9 */ b .L0f19dd84
|
|
/* f19dde0: 24420001 */ addiu $v0,$v0,0x1
|
|
.L0f19dde4:
|
|
/* f19dde4: 24010013 */ addiu $at,$zero,0x13
|
|
/* f19dde8: 5441feec */ bnel $v0,$at,.L0f19d99c
|
|
/* f19ddec: 2c41000c */ sltiu $at,$v0,0xc
|
|
/* f19ddf0: afb30044 */ sw $s3,0x44($sp)
|
|
.L0f19ddf4:
|
|
/* f19ddf4: 8fbf003c */ lw $ra,0x3c($sp)
|
|
/* f19ddf8: 8fb00018 */ lw $s0,0x18($sp)
|
|
/* f19ddfc: 8fb1001c */ lw $s1,0x1c($sp)
|
|
/* f19de00: 8fb20020 */ lw $s2,0x20($sp)
|
|
/* f19de04: 8fb30024 */ lw $s3,0x24($sp)
|
|
/* f19de08: 8fb40028 */ lw $s4,0x28($sp)
|
|
/* f19de0c: 8fb5002c */ lw $s5,0x2c($sp)
|
|
/* f19de10: 8fb60030 */ lw $s6,0x30($sp)
|
|
/* f19de14: 8fb70034 */ lw $s7,0x34($sp)
|
|
/* f19de18: 8fbe0038 */ lw $s8,0x38($sp)
|
|
/* f19de1c: 03e00008 */ jr $ra
|
|
/* f19de20: 27bd0068 */ addiu $sp,$sp,0x68
|
|
);
|
|
|
|
void func0f19de24(void)
|
|
{
|
|
s32 i;
|
|
u32 targets[] = {
|
|
0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x11,
|
|
0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a,
|
|
};
|
|
|
|
for (i = 0; i < ARRAYCOUNT(targets); i++) {
|
|
struct defaultobj *obj = objFindByTagId(targets[i]);
|
|
|
|
if (obj) {
|
|
g_FiringRangeData.targets[i].prop = obj->prop;
|
|
obj->flags2 |= OBJFLAG2_INVISIBLE;
|
|
}
|
|
}
|
|
}
|
|
|
|
s32 g_FrWeaponNum = WEAPON_UNARMED;
|
|
|
|
bool func0f19def4(s32 index)
|
|
{
|
|
return g_FiringRangeData.targets[index].unk21 == false;
|
|
}
|
|
|
|
/**
|
|
* 0 => "FIRING\n Press Z Button to fire gun.\n"
|
|
* 1 => "AUTO RELOAD\n Release Z Button when out of ammo.\n"
|
|
* 2 => "MANUAL RELOAD\n Press B Button to reload early if magazine not full.\n"
|
|
* 3 => "Aiming: Hold down R Button to enter Aim mode.\n"
|
|
* 4 => "Use Control Stick to move aiming sight.\n"
|
|
* 5 => "AUTO FIRE\n Hold Z Button to repeatedly fire automatically.\n"
|
|
* 6 => "ALTER AIM\n Press Up C Button or Down C Button to move sight up/down.\n"
|
|
* 7 => "ZOOM\n Hold R Button to enter Zoom mode.\n"
|
|
* 8 => "FAST FIRE\n Press Z Button quickly to fire faster.\n"
|
|
*/
|
|
char *frGetInstructionalText(u32 index)
|
|
{
|
|
u16 textid = (u16)(g_FrRomData[index * 2] << 8) | g_FrRomData[index * 2 + 1];
|
|
|
|
return langGet(textid);
|
|
}
|
|
|
|
GLOBAL_ASM(
|
|
glabel func0f19df58
|
|
/* f19df58: 3c07800b */ lui $a3,%hi(g_FiringRangeData)
|
|
/* f19df5c: 24e7cd20 */ addiu $a3,$a3,%lo(g_FiringRangeData)
|
|
/* f19df60: 90ee0468 */ lbu $t6,0x468($a3)
|
|
/* f19df64: 27bdffe8 */ addiu $sp,$sp,-24
|
|
/* f19df68: afbf0014 */ sw $ra,0x14($sp)
|
|
/* f19df6c: 11c00044 */ beqz $t6,.L0f19e080
|
|
/* f19df70: 3c03800a */ lui $v1,%hi(g_Vars)
|
|
/* f19df74: 24639fc0 */ addiu $v1,$v1,%lo(g_Vars)
|
|
/* f19df78: 8c6f0034 */ lw $t7,0x34($v1)
|
|
/* f19df7c: 51e00041 */ beqzl $t7,.L0f19e084
|
|
/* f19df80: 8fbf0014 */ lw $ra,0x14($sp)
|
|
/* f19df84: 8ce2046c */ lw $v0,0x46c($a3)
|
|
/* f19df88: 3c188009 */ lui $t8,%hi(var80088800)
|
|
/* f19df8c: 3c0b8009 */ lui $t3,%hi(g_FrRomData)
|
|
/* f19df90: 54400037 */ bnezl $v0,.L0f19e070
|
|
/* f19df94: 8c6a0038 */ lw $t2,0x38($v1)
|
|
/* f19df98: 90e30466 */ lbu $v1,0x466($a3)
|
|
/* f19df9c: 8f188800 */ lw $t8,%lo(var80088800)($t8)
|
|
/* f19dfa0: 8d6b8810 */ lw $t3,%lo(g_FrRomData)($t3)
|
|
/* f19dfa4: 24630071 */ addiu $v1,$v1,0x71
|
|
/* f19dfa8: 0003c840 */ sll $t9,$v1,0x1
|
|
/* f19dfac: 03194821 */ addu $t1,$t8,$t9
|
|
/* f19dfb0: 952a0000 */ lhu $t2,0x0($t1)
|
|
/* f19dfb4: 90e80467 */ lbu $t0,0x467($a3)
|
|
/* f19dfb8: 24010010 */ addiu $at,$zero,0x10
|
|
/* f19dfbc: 014b2021 */ addu $a0,$t2,$t3
|
|
/* f19dfc0: 00883021 */ addu $a2,$a0,$t0
|
|
/* f19dfc4: 90c20000 */ lbu $v0,0x0($a2)
|
|
/* f19dfc8: 1041000f */ beq $v0,$at,.L0f19e008
|
|
/* f19dfcc: 24010011 */ addiu $at,$zero,0x11
|
|
/* f19dfd0: 10410020 */ beq $v0,$at,.L0f19e054
|
|
/* f19dfd4: 24010012 */ addiu $at,$zero,0x12
|
|
/* f19dfd8: 10410016 */ beq $v0,$at,.L0f19e034
|
|
/* f19dfdc: 24010013 */ addiu $at,$zero,0x13
|
|
/* f19dfe0: 10410007 */ beq $v0,$at,.L0f19e000
|
|
/* f19dfe4: 240100fb */ addiu $at,$zero,0xfb
|
|
/* f19dfe8: 10410005 */ beq $v0,$at,.L0f19e000
|
|
/* f19dfec: 240100fc */ addiu $at,$zero,0xfc
|
|
/* f19dff0: 10410003 */ beq $v0,$at,.L0f19e000
|
|
/* f19dff4: 240100fd */ addiu $at,$zero,0xfd
|
|
/* f19dff8: 54410022 */ bnel $v0,$at,.L0f19e084
|
|
/* f19dffc: 8fbf0014 */ lw $ra,0x14($sp)
|
|
.L0f19e000:
|
|
/* f19e000: 1000001f */ b .L0f19e080
|
|
/* f19e004: a0e00468 */ sb $zero,0x468($a3)
|
|
.L0f19e008:
|
|
/* f19e008: 0fc677c6 */ jal frGetInstructionalText
|
|
/* f19e00c: 90c40001 */ lbu $a0,0x1($a2)
|
|
/* f19e010: 00402025 */ or $a0,$v0,$zero
|
|
/* f19e014: 0fc377c7 */ jal hudmsgCreateViaPreset
|
|
/* f19e018: 2405000a */ addiu $a1,$zero,0xa
|
|
/* f19e01c: 3c07800b */ lui $a3,%hi(g_FiringRangeData)
|
|
/* f19e020: 24e7cd20 */ addiu $a3,$a3,%lo(g_FiringRangeData)
|
|
/* f19e024: 90ec0467 */ lbu $t4,0x467($a3)
|
|
/* f19e028: 258d0002 */ addiu $t5,$t4,0x2
|
|
/* f19e02c: 10000014 */ b .L0f19e080
|
|
/* f19e030: a0ed0467 */ sb $t5,0x467($a3)
|
|
.L0f19e034:
|
|
/* f19e034: 90ce0001 */ lbu $t6,0x1($a2)
|
|
/* f19e038: 25180002 */ addiu $t8,$t0,0x2
|
|
/* f19e03c: a0f80467 */ sb $t8,0x467($a3)
|
|
/* f19e040: 000e7900 */ sll $t7,$t6,0x4
|
|
/* f19e044: 01ee7823 */ subu $t7,$t7,$t6
|
|
/* f19e048: 000f7880 */ sll $t7,$t7,0x2
|
|
/* f19e04c: 1000000c */ b .L0f19e080
|
|
/* f19e050: acef046c */ sw $t7,0x46c($a3)
|
|
.L0f19e054:
|
|
/* f19e054: 94f90458 */ lhu $t9,0x458($a3)
|
|
/* f19e058: 25090001 */ addiu $t1,$t0,0x1
|
|
/* f19e05c: 53200009 */ beqzl $t9,.L0f19e084
|
|
/* f19e060: 8fbf0014 */ lw $ra,0x14($sp)
|
|
/* f19e064: 10000006 */ b .L0f19e080
|
|
/* f19e068: a0e90467 */ sb $t1,0x467($a3)
|
|
/* f19e06c: 8c6a0038 */ lw $t2,0x38($v1)
|
|
.L0f19e070:
|
|
/* f19e070: 004a5823 */ subu $t3,$v0,$t2
|
|
/* f19e074: 1d600002 */ bgtz $t3,.L0f19e080
|
|
/* f19e078: aceb046c */ sw $t3,0x46c($a3)
|
|
/* f19e07c: ace0046c */ sw $zero,0x46c($a3)
|
|
.L0f19e080:
|
|
/* f19e080: 8fbf0014 */ lw $ra,0x14($sp)
|
|
.L0f19e084:
|
|
/* f19e084: 27bd0018 */ addiu $sp,$sp,0x18
|
|
/* f19e088: 03e00008 */ jr $ra
|
|
/* f19e08c: 00000000 */ nop
|
|
);
|
|
|
|
//void func0f19df58(void)
|
|
//{
|
|
// if (!g_FiringRangeData.scriptenabled || g_Vars.lvupdate240 == 0) {
|
|
// return;
|
|
// }
|
|
//
|
|
// if (g_FiringRangeData.scriptsleep == 0) {
|
|
// s32 offset = g_FiringRangeData.unk466 + 0x71;
|
|
// u8 *cmd = g_FrRomData + var80088800[offset] + g_FiringRangeData.scriptoffset;
|
|
//
|
|
// switch (cmd[0]) {
|
|
// case FRCMD_13:
|
|
// case FRCMD_FB:
|
|
// case FRCMD_FC:
|
|
// case FRCMD_FD:
|
|
// g_FiringRangeData.scriptenabled = false;
|
|
// break;
|
|
// case FRCMD_HUDMSG:
|
|
// hudmsgCreateViaPreset(frGetInstructionalText(cmd[1]), HUDMSGTYPE_TRAINING);
|
|
// g_FiringRangeData.scriptoffset += 2;
|
|
// break;
|
|
// case FRCMD_WAITSECONDS:
|
|
// g_FiringRangeData.scriptsleep = cmd[1] * 60;
|
|
// g_FiringRangeData.scriptoffset += 2;
|
|
// break;
|
|
// case FRCMD_WAITUNTILSHOOT:
|
|
// if (g_FiringRangeData.numshots) {
|
|
// g_FiringRangeData.scriptoffset++;
|
|
// }
|
|
// break;
|
|
// }
|
|
// } else {
|
|
// g_FiringRangeData.scriptsleep -= g_Vars.lvupdate240_60;
|
|
//
|
|
// if (g_FiringRangeData.scriptsleep <= 0) {
|
|
// g_FiringRangeData.scriptsleep = 0;
|
|
// }
|
|
// }
|
|
//}
|
|
|
|
GLOBAL_ASM(
|
|
glabel func0f19e090
|
|
.late_rodata
|
|
glabel var7f1b93f0
|
|
.word func0f19e090+0xa8 # f19e138
|
|
glabel var7f1b93f4
|
|
.word func0f19e090+0x254 # f19e2e4
|
|
glabel var7f1b93f8
|
|
.word func0f19e090+0x260 # f19e2f0
|
|
glabel var7f1b93fc
|
|
.word func0f19e090+0x290 # f19e320
|
|
glabel var7f1b9400
|
|
.word func0f19e090+0x33c # f19e3cc
|
|
glabel var7f1b9404
|
|
.word func0f19e090+0x33c # f19e3cc
|
|
glabel var7f1b9408
|
|
.word func0f19e090+0x33c # f19e3cc
|
|
glabel var7f1b940c
|
|
.word func0f19e090+0x8c # f19e11c
|
|
glabel var7f1b9410
|
|
.word 0xbfc90fdb
|
|
glabel var7f1b9414
|
|
.word 0xc0490fdb
|
|
glabel var7f1b9418
|
|
.word 0x3fc90fdb
|
|
glabel var7f1b941c
|
|
.word 0x40490fdb
|
|
.text
|
|
/* f19e090: 2409003c */ addiu $t1,$zero,0x3c
|
|
/* f19e094: 00890019 */ multu $a0,$t1
|
|
/* f19e098: 3c18800b */ lui $t8,%hi(g_FiringRangeData)
|
|
/* f19e09c: 2718cd20 */ addiu $t8,$t8,%lo(g_FiringRangeData)
|
|
/* f19e0a0: 27bdff30 */ addiu $sp,$sp,-208
|
|
/* f19e0a4: afbf0044 */ sw $ra,0x44($sp)
|
|
/* f19e0a8: afa400d0 */ sw $a0,0xd0($sp)
|
|
/* f19e0ac: 3c0a8009 */ lui $t2,%hi(var80088800)
|
|
/* f19e0b0: 3c0e8009 */ lui $t6,%hi(g_FrRomData)
|
|
/* f19e0b4: 00007812 */ mflo $t7
|
|
/* f19e0b8: 01f81821 */ addu $v1,$t7,$t8
|
|
/* f19e0bc: 8c670010 */ lw $a3,0x10($v1)
|
|
/* f19e0c0: 0007cfc2 */ srl $t9,$a3,0x1f
|
|
/* f19e0c4: 532000c2 */ beqzl $t9,.L0f19e3d0
|
|
/* f19e0c8: 24020001 */ addiu $v0,$zero,0x1
|
|
/* f19e0cc: 90620012 */ lbu $v0,0x12($v1)
|
|
/* f19e0d0: 8d4a8800 */ lw $t2,%lo(var80088800)($t2)
|
|
/* f19e0d4: 8dce8810 */ lw $t6,%lo(g_FrRomData)($t6)
|
|
/* f19e0d8: 24420022 */ addiu $v0,$v0,0x22
|
|
/* f19e0dc: 00025840 */ sll $t3,$v0,0x1
|
|
/* f19e0e0: 014b6021 */ addu $t4,$t2,$t3
|
|
/* f19e0e4: 958d0000 */ lhu $t5,0x0($t4)
|
|
/* f19e0e8: 90660031 */ lbu $a2,0x31($v1)
|
|
/* f19e0ec: 01ae2021 */ addu $a0,$t5,$t6
|
|
/* f19e0f0: 00864021 */ addu $t0,$a0,$a2
|
|
/* f19e0f4: 910f0000 */ lbu $t7,0x0($t0)
|
|
/* f19e0f8: 25f8fff4 */ addiu $t8,$t7,-12
|
|
/* f19e0fc: 2f010008 */ sltiu $at,$t8,0x8
|
|
/* f19e100: 102000b2 */ beqz $at,.L0f19e3cc
|
|
/* f19e104: 0018c080 */ sll $t8,$t8,0x2
|
|
/* f19e108: 3c017f1c */ lui $at,%hi(var7f1b93f0)
|
|
/* f19e10c: 00380821 */ addu $at,$at,$t8
|
|
/* f19e110: 8c3893f0 */ lw $t8,%lo(var7f1b93f0)($at)
|
|
/* f19e114: 03000008 */ jr $t8
|
|
/* f19e118: 00000000 */ nop
|
|
/* f19e11c: 906a0010 */ lbu $t2,0x10($v1)
|
|
/* f19e120: 240c3bc4 */ addiu $t4,$zero,0x3bc4
|
|
/* f19e124: ac6c0024 */ sw $t4,0x24($v1)
|
|
/* f19e128: 354b0010 */ ori $t3,$t2,0x10
|
|
/* f19e12c: a06b0010 */ sb $t3,0x10($v1)
|
|
/* f19e130: 100000a7 */ b .L0f19e3d0
|
|
/* f19e134: 24020001 */ addiu $v0,$zero,0x1
|
|
/* f19e138: 91040001 */ lbu $a0,0x1($t0)
|
|
/* f19e13c: afa8004c */ sw $t0,0x4c($sp)
|
|
/* f19e140: 0fc675f6 */ jal func0f19d7d8
|
|
/* f19e144: afa30058 */ sw $v1,0x58($sp)
|
|
/* f19e148: 8fa30058 */ lw $v1,0x58($sp)
|
|
/* f19e14c: 00403825 */ or $a3,$v0,$zero
|
|
/* f19e150: 0007c040 */ sll $t8,$a3,0x1
|
|
/* f19e154: 806d0044 */ lb $t5,0x44($v1)
|
|
/* f19e158: 3c048009 */ lui $a0,%hi(g_FrPads)
|
|
/* f19e15c: 8fa8004c */ lw $t0,0x4c($sp)
|
|
/* f19e160: 144d0006 */ bne $v0,$t5,.L0f19e17c
|
|
/* f19e164: 00982021 */ addu $a0,$a0,$t8
|
|
/* f19e168: 906e0031 */ lbu $t6,0x31($v1)
|
|
/* f19e16c: 00001025 */ or $v0,$zero,$zero
|
|
/* f19e170: 25cf0004 */ addiu $t7,$t6,0x4
|
|
/* f19e174: 10000096 */ b .L0f19e3d0
|
|
/* f19e178: a06f0031 */ sb $t7,0x31($v1)
|
|
.L0f19e17c:
|
|
/* f19e17c: a0670044 */ sb $a3,0x44($v1)
|
|
/* f19e180: 94848814 */ lhu $a0,%lo(g_FrPads)($a0)
|
|
/* f19e184: 24050002 */ addiu $a1,$zero,0x2
|
|
/* f19e188: 27a60070 */ addiu $a2,$sp,0x70
|
|
/* f19e18c: afa30058 */ sw $v1,0x58($sp)
|
|
/* f19e190: 0fc456ac */ jal padUnpack
|
|
/* f19e194: afa8004c */ sw $t0,0x4c($sp)
|
|
/* f19e198: 8fb900d0 */ lw $t9,0xd0($sp)
|
|
/* f19e19c: 3c0140c0 */ lui $at,0x40c0
|
|
/* f19e1a0: 44814000 */ mtc1 $at,$f8
|
|
/* f19e1a4: 44995000 */ mtc1 $t9,$f10
|
|
/* f19e1a8: 8fa30058 */ lw $v1,0x58($sp)
|
|
/* f19e1ac: c7a40070 */ lwc1 $f4,0x70($sp)
|
|
/* f19e1b0: 46805420 */ cvt.s.w $f16,$f10
|
|
/* f19e1b4: c7a60074 */ lwc1 $f6,0x74($sp)
|
|
/* f19e1b8: e4640018 */ swc1 $f4,0x18($v1)
|
|
/* f19e1bc: c7a40078 */ lwc1 $f4,0x78($sp)
|
|
/* f19e1c0: e466001c */ swc1 $f6,0x1c($v1)
|
|
/* f19e1c4: 8fa8004c */ lw $t0,0x4c($sp)
|
|
/* f19e1c8: 46104482 */ mul.s $f18,$f8,$f16
|
|
/* f19e1cc: 240100ff */ addiu $at,$zero,0xff
|
|
/* f19e1d0: 3c098009 */ lui $t1,%hi(var8008880c)
|
|
/* f19e1d4: 2529880c */ addiu $t1,$t1,%lo(var8008880c)
|
|
/* f19e1d8: 240a0001 */ addiu $t2,$zero,0x1
|
|
/* f19e1dc: 46122180 */ add.s $f6,$f4,$f18
|
|
/* f19e1e0: e4660020 */ swc1 $f6,0x20($v1)
|
|
/* f19e1e4: 91040002 */ lbu $a0,0x2($t0)
|
|
/* f19e1e8: 14810005 */ bne $a0,$at,.L0f19e200
|
|
/* f19e1ec: 3c01bf80 */ lui $at,0xbf80
|
|
/* f19e1f0: 44810000 */ mtc1 $at,$f0
|
|
/* f19e1f4: a06a0043 */ sb $t2,0x43($v1)
|
|
/* f19e1f8: 1000002f */ b .L0f19e2b8
|
|
/* f19e1fc: e460002c */ swc1 $f0,0x2c($v1)
|
|
.L0f19e200:
|
|
/* f19e200: 91220000 */ lbu $v0,0x0($t1)
|
|
/* f19e204: 240605d9 */ addiu $a2,$zero,0x5d9
|
|
/* f19e208: 2407ffff */ addiu $a3,$zero,-1
|
|
/* f19e20c: 28410003 */ slti $at,$v0,0x3
|
|
/* f19e210: 10200019 */ beqz $at,.L0f19e278
|
|
/* f19e214: 244b0001 */ addiu $t3,$v0,0x1
|
|
/* f19e218: 3c01bf80 */ lui $at,0xbf80
|
|
/* f19e21c: 44810000 */ mtc1 $at,$f0
|
|
/* f19e220: 240cffff */ addiu $t4,$zero,-1
|
|
/* f19e224: 240dffff */ addiu $t5,$zero,-1
|
|
/* f19e228: a12b0000 */ sb $t3,0x0($t1)
|
|
/* f19e22c: afad002c */ sw $t5,0x2c($sp)
|
|
/* f19e230: afac0010 */ sw $t4,0x10($sp)
|
|
/* f19e234: 00002025 */ or $a0,$zero,$zero
|
|
/* f19e238: 8c650014 */ lw $a1,0x14($v1)
|
|
/* f19e23c: afa00014 */ sw $zero,0x14($sp)
|
|
/* f19e240: afa00018 */ sw $zero,0x18($sp)
|
|
/* f19e244: afa0001c */ sw $zero,0x1c($sp)
|
|
/* f19e248: afa00020 */ sw $zero,0x20($sp)
|
|
/* f19e24c: afa00028 */ sw $zero,0x28($sp)
|
|
/* f19e250: afa30058 */ sw $v1,0x58($sp)
|
|
/* f19e254: afa8004c */ sw $t0,0x4c($sp)
|
|
/* f19e258: e7a00024 */ swc1 $f0,0x24($sp)
|
|
/* f19e25c: e7a00030 */ swc1 $f0,0x30($sp)
|
|
/* f19e260: e7a00034 */ swc1 $f0,0x34($sp)
|
|
/* f19e264: 0fc24e7e */ jal func0f0939f8
|
|
/* f19e268: e7a00038 */ swc1 $f0,0x38($sp)
|
|
/* f19e26c: 8fa8004c */ lw $t0,0x4c($sp)
|
|
/* f19e270: 8fa30058 */ lw $v1,0x58($sp)
|
|
/* f19e274: 91040002 */ lbu $a0,0x2($t0)
|
|
.L0f19e278:
|
|
/* f19e278: 44845000 */ mtc1 $a0,$f10
|
|
/* f19e27c: 3c014f80 */ lui $at,0x4f80
|
|
/* f19e280: 04810004 */ bgez $a0,.L0f19e294
|
|
/* f19e284: 46805220 */ cvt.s.w $f8,$f10
|
|
/* f19e288: 44818000 */ mtc1 $at,$f16
|
|
/* f19e28c: 00000000 */ nop
|
|
/* f19e290: 46104200 */ add.s $f8,$f8,$f16
|
|
.L0f19e294:
|
|
/* f19e294: 3c014270 */ lui $at,0x4270
|
|
/* f19e298: 44812000 */ mtc1 $at,$f4
|
|
/* f19e29c: 3c01800b */ lui $at,0x800b
|
|
/* f19e2a0: c426cd2c */ lwc1 $f6,-0x32d4($at)
|
|
/* f19e2a4: 46044483 */ div.s $f18,$f8,$f4
|
|
/* f19e2a8: 240e0001 */ addiu $t6,$zero,0x1
|
|
/* f19e2ac: a06e0043 */ sb $t6,0x43($v1)
|
|
/* f19e2b0: 46069282 */ mul.s $f10,$f18,$f6
|
|
/* f19e2b4: e46a002c */ swc1 $f10,0x2c($v1)
|
|
.L0f19e2b8:
|
|
/* f19e2b8: 910f0003 */ lbu $t7,0x3($t0)
|
|
/* f19e2bc: 90790031 */ lbu $t9,0x31($v1)
|
|
/* f19e2c0: a0600042 */ sb $zero,0x42($v1)
|
|
/* f19e2c4: 000fc100 */ sll $t8,$t7,0x4
|
|
/* f19e2c8: 030fc023 */ subu $t8,$t8,$t7
|
|
/* f19e2cc: 0018c080 */ sll $t8,$t8,0x2
|
|
/* f19e2d0: 272a0004 */ addiu $t2,$t9,0x4
|
|
/* f19e2d4: ac780024 */ sw $t8,0x24($v1)
|
|
/* f19e2d8: a06a0031 */ sb $t2,0x31($v1)
|
|
/* f19e2dc: 1000003c */ b .L0f19e3d0
|
|
/* f19e2e0: 24020001 */ addiu $v0,$zero,0x1
|
|
/* f19e2e4: a0600031 */ sb $zero,0x31($v1)
|
|
/* f19e2e8: 10000039 */ b .L0f19e3d0
|
|
/* f19e2ec: 24020001 */ addiu $v0,$zero,0x1
|
|
/* f19e2f0: 906c0010 */ lbu $t4,0x10($v1)
|
|
/* f19e2f4: 24d80002 */ addiu $t8,$a2,0x2
|
|
/* f19e2f8: 24020001 */ addiu $v0,$zero,0x1
|
|
/* f19e2fc: 358d0010 */ ori $t5,$t4,0x10
|
|
/* f19e300: a06d0010 */ sb $t5,0x10($v1)
|
|
/* f19e304: 910e0001 */ lbu $t6,0x1($t0)
|
|
/* f19e308: a0780031 */ sb $t8,0x31($v1)
|
|
/* f19e30c: 01c90019 */ multu $t6,$t1
|
|
/* f19e310: 00007812 */ mflo $t7
|
|
/* f19e314: ac6f0024 */ sw $t7,0x24($v1)
|
|
/* f19e318: 1000002e */ b .L0f19e3d4
|
|
/* f19e31c: 8fbf0044 */ lw $ra,0x44($sp)
|
|
/* f19e320: 00075140 */ sll $t2,$a3,0x5
|
|
/* f19e324: 05400025 */ bltz $t2,.L0f19e3bc
|
|
/* f19e328: 3c017f1c */ lui $at,%hi(var7f1b9410)
|
|
/* f19e32c: c4309410 */ lwc1 $f16,%lo(var7f1b9410)($at)
|
|
/* f19e330: 3c017f1c */ lui $at,%hi(var7f1b9414)
|
|
/* f19e334: c4289414 */ lwc1 $f8,%lo(var7f1b9414)($at)
|
|
/* f19e338: 3c017f1c */ lui $at,%hi(var7f1b9418)
|
|
/* f19e33c: c4249418 */ lwc1 $f4,%lo(var7f1b9418)($at)
|
|
/* f19e340: 3c017f1c */ lui $at,%hi(var7f1b941c)
|
|
/* f19e344: c432941c */ lwc1 $f18,%lo(var7f1b941c)($at)
|
|
/* f19e348: e7b0005c */ swc1 $f16,0x5c($sp)
|
|
/* f19e34c: e7a80060 */ swc1 $f8,0x60($sp)
|
|
/* f19e350: e7a40064 */ swc1 $f4,0x64($sp)
|
|
/* f19e354: e7b20068 */ swc1 $f18,0x68($sp)
|
|
/* f19e358: 910b0001 */ lbu $t3,0x1($t0)
|
|
/* f19e35c: 27a2005c */ addiu $v0,$sp,0x5c
|
|
/* f19e360: c46a0038 */ lwc1 $f10,0x38($v1)
|
|
/* f19e364: 000b6080 */ sll $t4,$t3,0x2
|
|
/* f19e368: 004c6821 */ addu $t5,$v0,$t4
|
|
/* f19e36c: c5a60000 */ lwc1 $f6,0x0($t5)
|
|
/* f19e370: 906c0010 */ lbu $t4,0x10($v1)
|
|
/* f19e374: 90660031 */ lbu $a2,0x31($v1)
|
|
/* f19e378: 460a3400 */ add.s $f16,$f6,$f10
|
|
/* f19e37c: e470003c */ swc1 $f16,0x3c($v1)
|
|
/* f19e380: 91190002 */ lbu $t9,0x2($t0)
|
|
/* f19e384: 910e0001 */ lbu $t6,0x1($t0)
|
|
/* f19e388: 00195100 */ sll $t2,$t9,0x4
|
|
/* f19e38c: 01595023 */ subu $t2,$t2,$t9
|
|
/* f19e390: 448a2000 */ mtc1 $t2,$f4
|
|
/* f19e394: 000e7880 */ sll $t7,$t6,0x2
|
|
/* f19e398: 004fc021 */ addu $t8,$v0,$t7
|
|
/* f19e39c: 468024a0 */ cvt.s.w $f18,$f4
|
|
/* f19e3a0: c7080000 */ lwc1 $f8,0x0($t8)
|
|
/* f19e3a4: 358e0008 */ ori $t6,$t4,0x8
|
|
/* f19e3a8: a06e0010 */ sb $t6,0x10($v1)
|
|
/* f19e3ac: 31cf00ef */ andi $t7,$t6,0xef
|
|
/* f19e3b0: a06f0010 */ sb $t7,0x10($v1)
|
|
/* f19e3b4: 46124183 */ div.s $f6,$f8,$f18
|
|
/* f19e3b8: e4660034 */ swc1 $f6,0x34($v1)
|
|
.L0f19e3bc:
|
|
/* f19e3bc: 24d80003 */ addiu $t8,$a2,0x3
|
|
/* f19e3c0: a0780031 */ sb $t8,0x31($v1)
|
|
/* f19e3c4: 10000002 */ b .L0f19e3d0
|
|
/* f19e3c8: 24020001 */ addiu $v0,$zero,0x1
|
|
.L0f19e3cc:
|
|
/* f19e3cc: 24020001 */ addiu $v0,$zero,0x1
|
|
.L0f19e3d0:
|
|
/* f19e3d0: 8fbf0044 */ lw $ra,0x44($sp)
|
|
.L0f19e3d4:
|
|
/* f19e3d4: 27bd00d0 */ addiu $sp,$sp,0xd0
|
|
/* f19e3d8: 03e00008 */ jr $ra
|
|
/* f19e3dc: 00000000 */ nop
|
|
);
|
|
|
|
void frHideAllTargets(void)
|
|
{
|
|
s32 i;
|
|
|
|
for (i = 0; i < 18; i++) {
|
|
struct prop *prop = g_FiringRangeData.targets[i].prop;
|
|
struct defaultobj *target = prop->obj;
|
|
|
|
target->flags2 |= OBJFLAG2_INVISIBLE;
|
|
|
|
func0f0926bc(prop, 1, 0xffff);
|
|
}
|
|
}
|
|
|
|
GLOBAL_ASM(
|
|
glabel func0f19e44c
|
|
.late_rodata
|
|
glabel var7f1b9420
|
|
.word 0x459c4000
|
|
glabel var7f1b9424
|
|
.word 0x40490fdb
|
|
.text
|
|
/* f19e44c: 27bdfec0 */ addiu $sp,$sp,-320
|
|
/* f19e450: f7bc0038 */ sdc1 $f28,0x38($sp)
|
|
/* f19e454: 3c017f1c */ lui $at,%hi(var7f1b9420)
|
|
/* f19e458: c43c9420 */ lwc1 $f28,%lo(var7f1b9420)($at)
|
|
/* f19e45c: f7ba0030 */ sdc1 $f26,0x30($sp)
|
|
/* f19e460: 3c01bf80 */ lui $at,0xbf80
|
|
/* f19e464: 4481d000 */ mtc1 $at,$f26
|
|
/* f19e468: f7b80028 */ sdc1 $f24,0x28($sp)
|
|
/* f19e46c: 3c017f1c */ lui $at,%hi(var7f1b9424)
|
|
/* f19e470: c4389424 */ lwc1 $f24,%lo(var7f1b9424)($at)
|
|
/* f19e474: afbe0060 */ sw $s8,0x60($sp)
|
|
/* f19e478: afb00040 */ sw $s0,0x40($sp)
|
|
/* f19e47c: f7b60020 */ sdc1 $f22,0x20($sp)
|
|
/* f19e480: f7b40018 */ sdc1 $f20,0x18($sp)
|
|
/* f19e484: 3c0140c0 */ lui $at,0x40c0
|
|
/* f19e488: afb7005c */ sw $s7,0x5c($sp)
|
|
/* f19e48c: afb60058 */ sw $s6,0x58($sp)
|
|
/* f19e490: afb50054 */ sw $s5,0x54($sp)
|
|
/* f19e494: afb40050 */ sw $s4,0x50($sp)
|
|
/* f19e498: afb3004c */ sw $s3,0x4c($sp)
|
|
/* f19e49c: 3c10800b */ lui $s0,%hi(g_FiringRangeData)
|
|
/* f19e4a0: 3c1e800b */ lui $s8,%hi(g_FiringRangeData)
|
|
/* f19e4a4: 4481a000 */ mtc1 $at,$f20
|
|
/* f19e4a8: 4480b000 */ mtc1 $zero,$f22
|
|
/* f19e4ac: afbf0064 */ sw $ra,0x64($sp)
|
|
/* f19e4b0: afb20048 */ sw $s2,0x48($sp)
|
|
/* f19e4b4: afb10044 */ sw $s1,0x44($sp)
|
|
/* f19e4b8: 0000b025 */ or $s6,$zero,$zero
|
|
/* f19e4bc: 27decd20 */ addiu $s8,$s8,%lo(g_FiringRangeData)
|
|
/* f19e4c0: 2610cd20 */ addiu $s0,$s0,%lo(g_FiringRangeData)
|
|
/* f19e4c4: 00009825 */ or $s3,$zero,$zero
|
|
/* f19e4c8: 27b40090 */ addiu $s4,$sp,0x90
|
|
/* f19e4cc: 3c150008 */ lui $s5,0x8
|
|
/* f19e4d0: 27b7006c */ addiu $s7,$sp,0x6c
|
|
.L0f19e4d4:
|
|
/* f19e4d4: 8e120014 */ lw $s2,0x14($s0)
|
|
/* f19e4d8: 00002825 */ or $a1,$zero,$zero
|
|
/* f19e4dc: 52400073 */ beqzl $s2,.L0f19e6ac
|
|
/* f19e4e0: 26730001 */ addiu $s3,$s3,0x1
|
|
/* f19e4e4: 8e510004 */ lw $s1,0x4($s2)
|
|
/* f19e4e8: 24060001 */ addiu $a2,$zero,0x1
|
|
/* f19e4ec: 0fc1ab4b */ jal setupParseObject
|
|
/* f19e4f0: 02202025 */ or $a0,$s1,$zero
|
|
/* f19e4f4: a620004c */ sh $zero,0x4c($s1)
|
|
/* f19e4f8: a6400002 */ sh $zero,0x2($s2)
|
|
/* f19e4fc: 8e0e0010 */ lw $t6,0x10($s0)
|
|
/* f19e500: 3c048009 */ lui $a0,%hi(g_FrPads)
|
|
/* f19e504: 000e7fc2 */ srl $t7,$t6,0x1f
|
|
/* f19e508: 51e0003b */ beqzl $t7,.L0f19e5f8
|
|
/* f19e50c: 8e2d000c */ lw $t5,0xc($s1)
|
|
/* f19e510: 92180010 */ lbu $t8,0x10($s0)
|
|
/* f19e514: 3308ffef */ andi $t0,$t8,0xffef
|
|
/* f19e518: a2080010 */ sb $t0,0x10($s0)
|
|
/* f19e51c: 310900df */ andi $t1,$t0,0xdf
|
|
/* f19e520: a2090010 */ sb $t1,0x10($s0)
|
|
/* f19e524: 93ca0000 */ lbu $t2,0x0($s8)
|
|
/* f19e528: 02ca082a */ slt $at,$s6,$t2
|
|
/* f19e52c: 5020000b */ beqzl $at,.L0f19e55c
|
|
/* f19e530: 8e38000c */ lw $t8,0xc($s1)
|
|
/* f19e534: 8e2b000c */ lw $t3,0xc($s1)
|
|
/* f19e538: 3c01fff7 */ lui $at,0xfff7
|
|
/* f19e53c: 3421ffff */ ori $at,$at,0xffff
|
|
/* f19e540: 01616024 */ and $t4,$t3,$at
|
|
/* f19e544: ae2c000c */ sw $t4,0xc($s1)
|
|
/* f19e548: 920e0010 */ lbu $t6,0x10($s0)
|
|
/* f19e54c: 35cf0040 */ ori $t7,$t6,0x40
|
|
/* f19e550: 10000007 */ b .L0f19e570
|
|
/* f19e554: a20f0010 */ sb $t7,0x10($s0)
|
|
/* f19e558: 8e38000c */ lw $t8,0xc($s1)
|
|
.L0f19e55c:
|
|
/* f19e55c: 0315c825 */ or $t9,$t8,$s5
|
|
/* f19e560: ae39000c */ sw $t9,0xc($s1)
|
|
/* f19e564: 92080010 */ lbu $t0,0x10($s0)
|
|
/* f19e568: 3109ffbf */ andi $t1,$t0,0xffbf
|
|
/* f19e56c: a2090010 */ sb $t1,0x10($s0)
|
|
.L0f19e570:
|
|
/* f19e570: 920a0010 */ lbu $t2,0x10($s0)
|
|
/* f19e574: 24050002 */ addiu $a1,$zero,0x2
|
|
/* f19e578: 27a600dc */ addiu $a2,$sp,0xdc
|
|
/* f19e57c: 314b0003 */ andi $t3,$t2,0x3
|
|
/* f19e580: 000b6040 */ sll $t4,$t3,0x1
|
|
/* f19e584: 008c2021 */ addu $a0,$a0,$t4
|
|
/* f19e588: 0fc456ac */ jal padUnpack
|
|
/* f19e58c: 94848814 */ lhu $a0,%lo(g_FrPads)($a0)
|
|
/* f19e590: 44935000 */ mtc1 $s3,$f10
|
|
/* f19e594: c7a400dc */ lwc1 $f4,0xdc($sp)
|
|
/* f19e598: c7a800e4 */ lwc1 $f8,0xe4($sp)
|
|
/* f19e59c: 46805420 */ cvt.s.w $f16,$f10
|
|
/* f19e5a0: e7a400d0 */ swc1 $f4,0xd0($sp)
|
|
/* f19e5a4: c7a600e0 */ lwc1 $f6,0xe0($sp)
|
|
/* f19e5a8: 02602025 */ or $a0,$s3,$zero
|
|
/* f19e5ac: e7a600d4 */ swc1 $f6,0xd4($sp)
|
|
/* f19e5b0: 4610a482 */ mul.s $f18,$f20,$f16
|
|
/* f19e5b4: 46124100 */ add.s $f4,$f8,$f18
|
|
/* f19e5b8: 0fc67824 */ jal func0f19e090
|
|
/* f19e5bc: e7a400d8 */ swc1 $f4,0xd8($sp)
|
|
/* f19e5c0: c606002c */ lwc1 $f6,0x2c($s0)
|
|
/* f19e5c4: 4606d032 */ c.eq.s $f26,$f6
|
|
/* f19e5c8: 00000000 */ nop
|
|
/* f19e5cc: 45000007 */ bc1f .L0f19e5ec
|
|
/* f19e5d0: 00000000 */ nop
|
|
/* f19e5d4: c60a0018 */ lwc1 $f10,0x18($s0)
|
|
/* f19e5d8: c610001c */ lwc1 $f16,0x1c($s0)
|
|
/* f19e5dc: c6080020 */ lwc1 $f8,0x20($s0)
|
|
/* f19e5e0: e7aa00d0 */ swc1 $f10,0xd0($sp)
|
|
/* f19e5e4: e7b000d4 */ swc1 $f16,0xd4($sp)
|
|
/* f19e5e8: e7a800d8 */ swc1 $f8,0xd8($sp)
|
|
.L0f19e5ec:
|
|
/* f19e5ec: 10000004 */ b .L0f19e600
|
|
/* f19e5f0: 26d60001 */ addiu $s6,$s6,0x1
|
|
/* f19e5f4: 8e2d000c */ lw $t5,0xc($s1)
|
|
.L0f19e5f8:
|
|
/* f19e5f8: 01b57025 */ or $t6,$t5,$s5
|
|
/* f19e5fc: ae2e000c */ sw $t6,0xc($s1)
|
|
.L0f19e600:
|
|
/* f19e600: 8e2f000c */ lw $t7,0xc($s1)
|
|
/* f19e604: 02802825 */ or $a1,$s4,$zero
|
|
/* f19e608: 01f5c024 */ and $t8,$t7,$s5
|
|
/* f19e60c: 53000008 */ beqzl $t8,.L0f19e630
|
|
/* f19e610: 92190040 */ lbu $t9,0x40($s0)
|
|
/* f19e614: 44939000 */ mtc1 $s3,$f18
|
|
/* f19e618: e7b600d0 */ swc1 $f22,0xd0($sp)
|
|
/* f19e61c: e7bc00d4 */ swc1 $f28,0xd4($sp)
|
|
/* f19e620: 46809120 */ cvt.s.w $f4,$f18
|
|
/* f19e624: 46142182 */ mul.s $f6,$f4,$f20
|
|
/* f19e628: e7a600d8 */ swc1 $f6,0xd8($sp)
|
|
/* f19e62c: 92190040 */ lbu $t9,0x40($s0)
|
|
.L0f19e630:
|
|
/* f19e630: 33280010 */ andi $t0,$t9,0x10
|
|
/* f19e634: 11000006 */ beqz $t0,.L0f19e650
|
|
/* f19e638: 00000000 */ nop
|
|
/* f19e63c: 4600b306 */ mov.s $f12,$f22
|
|
/* f19e640: 0c0058dd */ jal func00016374
|
|
/* f19e644: 02802825 */ or $a1,$s4,$zero
|
|
/* f19e648: 10000003 */ b .L0f19e658
|
|
/* f19e64c: e6180038 */ swc1 $f24,0x38($s0)
|
|
.L0f19e650:
|
|
/* f19e650: 0c0058dd */ jal func00016374
|
|
/* f19e654: 4600c306 */ mov.s $f12,$f24
|
|
.L0f19e658:
|
|
/* f19e658: 8e290018 */ lw $t1,0x18($s1)
|
|
/* f19e65c: 02802825 */ or $a1,$s4,$zero
|
|
/* f19e660: 0c0057c1 */ jal func00015f04
|
|
/* f19e664: c52c0014 */ lwc1 $f12,0x14($t1)
|
|
/* f19e668: 02802025 */ or $a0,$s4,$zero
|
|
/* f19e66c: 0c005768 */ jal func00015da0
|
|
/* f19e670: 02e02825 */ or $a1,$s7,$zero
|
|
/* f19e674: 02e02025 */ or $a0,$s7,$zero
|
|
/* f19e678: 0c005736 */ jal func00015cd8
|
|
/* f19e67c: 2625001c */ addiu $a1,$s1,0x1c
|
|
/* f19e680: c7aa00d0 */ lwc1 $f10,0xd0($sp)
|
|
/* f19e684: 02202025 */ or $a0,$s1,$zero
|
|
/* f19e688: 24050001 */ addiu $a1,$zero,0x1
|
|
/* f19e68c: e64a0008 */ swc1 $f10,0x8($s2)
|
|
/* f19e690: c7b000d4 */ lwc1 $f16,0xd4($sp)
|
|
/* f19e694: 00003025 */ or $a2,$zero,$zero
|
|
/* f19e698: e650000c */ swc1 $f16,0xc($s2)
|
|
/* f19e69c: c7a800d8 */ lwc1 $f8,0xd8($sp)
|
|
/* f19e6a0: 0fc1a71c */ jal func0f069c70
|
|
/* f19e6a4: e6480010 */ swc1 $f8,0x10($s2)
|
|
/* f19e6a8: 26730001 */ addiu $s3,$s3,0x1
|
|
.L0f19e6ac:
|
|
/* f19e6ac: 24010012 */ addiu $at,$zero,0x12
|
|
/* f19e6b0: 1661ff88 */ bne $s3,$at,.L0f19e4d4
|
|
/* f19e6b4: 2610003c */ addiu $s0,$s0,0x3c
|
|
/* f19e6b8: 8fbf0064 */ lw $ra,0x64($sp)
|
|
/* f19e6bc: d7b40018 */ ldc1 $f20,0x18($sp)
|
|
/* f19e6c0: d7b60020 */ ldc1 $f22,0x20($sp)
|
|
/* f19e6c4: d7b80028 */ ldc1 $f24,0x28($sp)
|
|
/* f19e6c8: d7ba0030 */ ldc1 $f26,0x30($sp)
|
|
/* f19e6cc: d7bc0038 */ ldc1 $f28,0x38($sp)
|
|
/* f19e6d0: 8fb00040 */ lw $s0,0x40($sp)
|
|
/* f19e6d4: 8fb10044 */ lw $s1,0x44($sp)
|
|
/* f19e6d8: 8fb20048 */ lw $s2,0x48($sp)
|
|
/* f19e6dc: 8fb3004c */ lw $s3,0x4c($sp)
|
|
/* f19e6e0: 8fb40050 */ lw $s4,0x50($sp)
|
|
/* f19e6e4: 8fb50054 */ lw $s5,0x54($sp)
|
|
/* f19e6e8: 8fb60058 */ lw $s6,0x58($sp)
|
|
/* f19e6ec: 8fb7005c */ lw $s7,0x5c($sp)
|
|
/* f19e6f0: 8fbe0060 */ lw $s8,0x60($sp)
|
|
/* f19e6f4: 03e00008 */ jr $ra
|
|
/* f19e6f8: 27bd0140 */ addiu $sp,$sp,0x140
|
|
);
|
|
|
|
void frCloseAndLockDoor(void)
|
|
{
|
|
struct defaultobj *obj = objFindByTagId(0x91);
|
|
|
|
if (obj && obj->prop && obj->prop->type == PROPTYPE_DOOR) {
|
|
struct doorobj *door = (struct doorobj *)obj;
|
|
door->keyflags |= 0x40;
|
|
doorActivate(door, DOORMODE_CLOSING);
|
|
}
|
|
}
|
|
|
|
void frUnlockDoor(void)
|
|
{
|
|
struct defaultobj *obj = objFindByTagId(0x91);
|
|
|
|
if (obj && obj->prop && obj->prop->type == PROPTYPE_DOOR) {
|
|
struct doorobj *door = (struct doorobj *)obj;
|
|
door->keyflags &= ~0x40;
|
|
}
|
|
}
|
|
|
|
GLOBAL_ASM(
|
|
glabel func0f19e7a8
|
|
/* f19e7a8: 3c028009 */ lui $v0,%hi(var80088808)
|
|
/* f19e7ac: 24428808 */ addiu $v0,$v0,%lo(var80088808)
|
|
/* f19e7b0: 904e0000 */ lbu $t6,0x0($v0)
|
|
/* f19e7b4: 27bdffd0 */ addiu $sp,$sp,-48
|
|
/* f19e7b8: afbf0014 */ sw $ra,0x14($sp)
|
|
/* f19e7bc: 15c0004c */ bnez $t6,.L0f19e8f0
|
|
/* f19e7c0: 3c0f007f */ lui $t7,0x7f
|
|
/* f19e7c4: 3c18007f */ lui $t8,0x7f
|
|
/* f19e7c8: 27189d20 */ addiu $t8,$t8,-25312
|
|
/* f19e7cc: 25efb270 */ addiu $t7,$t7,-19856
|
|
/* f19e7d0: 01f82023 */ subu $a0,$t7,$t8
|
|
/* f19e7d4: 24070001 */ addiu $a3,$zero,0x1
|
|
/* f19e7d8: 24190001 */ addiu $t9,$zero,0x1
|
|
/* f19e7dc: a0590000 */ sb $t9,0x0($v0)
|
|
/* f19e7e0: afa70020 */ sw $a3,0x20($sp)
|
|
/* f19e7e4: afa40018 */ sw $a0,0x18($sp)
|
|
/* f19e7e8: afa4002c */ sw $a0,0x2c($sp)
|
|
/* f19e7ec: 0fc67558 */ jal frLoadRomData
|
|
/* f19e7f0: afa00028 */ sw $zero,0x28($sp)
|
|
/* f19e7f4: 8faa0018 */ lw $t2,0x18($sp)
|
|
/* f19e7f8: 8fa60028 */ lw $a2,0x28($sp)
|
|
/* f19e7fc: 8fa70020 */ lw $a3,0x20($sp)
|
|
/* f19e800: 2d410013 */ sltiu $at,$t2,0x13
|
|
/* f19e804: 8fa9002c */ lw $t1,0x2c($sp)
|
|
/* f19e808: 1420000c */ bnez $at,.L0f19e83c
|
|
/* f19e80c: 24030012 */ addiu $v1,$zero,0x12
|
|
/* f19e810: 3c028009 */ lui $v0,%hi(g_FrRomData)
|
|
/* f19e814: 8c428810 */ lw $v0,%lo(g_FrRomData)($v0)
|
|
/* f19e818: 240800fe */ addiu $t0,$zero,0xfe
|
|
/* f19e81c: 24420012 */ addiu $v0,$v0,0x12
|
|
.L0f19e820:
|
|
/* f19e820: 904b0000 */ lbu $t3,0x0($v0)
|
|
/* f19e824: 24630001 */ addiu $v1,$v1,0x1
|
|
/* f19e828: 150b0002 */ bne $t0,$t3,.L0f19e834
|
|
/* f19e82c: 00000000 */ nop
|
|
/* f19e830: 24e70001 */ addiu $a3,$a3,0x1
|
|
.L0f19e834:
|
|
/* f19e834: 1469fffa */ bne $v1,$t1,.L0f19e820
|
|
/* f19e838: 24420001 */ addiu $v0,$v0,0x1
|
|
.L0f19e83c:
|
|
/* f19e83c: 00072040 */ sll $a0,$a3,0x1
|
|
/* f19e840: 2484000f */ addiu $a0,$a0,0xf
|
|
/* f19e844: 348c000f */ ori $t4,$a0,0xf
|
|
/* f19e848: 3984000f */ xori $a0,$t4,0xf
|
|
/* f19e84c: 24050004 */ addiu $a1,$zero,0x4
|
|
/* f19e850: afa60028 */ sw $a2,0x28($sp)
|
|
/* f19e854: afa70020 */ sw $a3,0x20($sp)
|
|
/* f19e858: 0c0048f2 */ jal malloc
|
|
/* f19e85c: afa9002c */ sw $t1,0x2c($sp)
|
|
/* f19e860: 3c048009 */ lui $a0,%hi(var80088800)
|
|
/* f19e864: 24848800 */ addiu $a0,$a0,%lo(var80088800)
|
|
/* f19e868: ac820000 */ sw $v0,0x0($a0)
|
|
/* f19e86c: 8fa60028 */ lw $a2,0x28($sp)
|
|
/* f19e870: 240800fe */ addiu $t0,$zero,0xfe
|
|
/* f19e874: 10400015 */ beqz $v0,.L0f19e8cc
|
|
/* f19e878: 8fa9002c */ lw $t1,0x2c($sp)
|
|
/* f19e87c: 8faf0018 */ lw $t7,0x18($sp)
|
|
/* f19e880: 3c028009 */ lui $v0,%hi(g_FrRomData)
|
|
/* f19e884: 24428810 */ addiu $v0,$v0,%lo(g_FrRomData)
|
|
/* f19e888: 2de10013 */ sltiu $at,$t7,0x13
|
|
/* f19e88c: 1420000f */ bnez $at,.L0f19e8cc
|
|
/* f19e890: 24030012 */ addiu $v1,$zero,0x12
|
|
/* f19e894: 8c580000 */ lw $t8,0x0($v0)
|
|
.L0f19e898:
|
|
/* f19e898: 246b0001 */ addiu $t3,$v1,0x1
|
|
/* f19e89c: 0303c821 */ addu $t9,$t8,$v1
|
|
/* f19e8a0: 932a0000 */ lbu $t2,0x0($t9)
|
|
/* f19e8a4: 550a0007 */ bnel $t0,$t2,.L0f19e8c4
|
|
/* f19e8a8: 24630001 */ addiu $v1,$v1,0x1
|
|
/* f19e8ac: 8c8c0000 */ lw $t4,0x0($a0)
|
|
/* f19e8b0: 00066840 */ sll $t5,$a2,0x1
|
|
/* f19e8b4: 24c60001 */ addiu $a2,$a2,0x1
|
|
/* f19e8b8: 018d7021 */ addu $t6,$t4,$t5
|
|
/* f19e8bc: a5cb0000 */ sh $t3,0x0($t6)
|
|
/* f19e8c0: 24630001 */ addiu $v1,$v1,0x1
|
|
.L0f19e8c4:
|
|
/* f19e8c4: 5469fff4 */ bnel $v1,$t1,.L0f19e898
|
|
/* f19e8c8: 8c580000 */ lw $t8,0x0($v0)
|
|
.L0f19e8cc:
|
|
/* f19e8cc: 0fc67789 */ jal func0f19de24
|
|
/* f19e8d0: 00000000 */ nop
|
|
/* f19e8d4: 3c02800b */ lui $v0,%hi(g_FiringRangeData)
|
|
/* f19e8d8: 2442cd20 */ addiu $v0,$v0,%lo(g_FiringRangeData)
|
|
/* f19e8dc: 904f0465 */ lbu $t7,0x465($v0)
|
|
/* f19e8e0: a4400456 */ sh $zero,0x456($v0)
|
|
/* f19e8e4: a0400448 */ sb $zero,0x448($v0)
|
|
/* f19e8e8: 31f8ffef */ andi $t8,$t7,0xffef
|
|
/* f19e8ec: a0580465 */ sb $t8,0x465($v0)
|
|
.L0f19e8f0:
|
|
/* f19e8f0: 8fbf0014 */ lw $ra,0x14($sp)
|
|
/* f19e8f4: 27bd0030 */ addiu $sp,$sp,0x30
|
|
/* f19e8f8: 03e00008 */ jr $ra
|
|
/* f19e8fc: 00000000 */ nop
|
|
);
|
|
|
|
//void func0f19e7a8(void)
|
|
//{
|
|
// // 7bc
|
|
// if (var80088808 == false) {
|
|
// u32 len = (u32)&_frdataSegmentRomEnd - (u32)&_frdataSegmentRomStart;
|
|
// u32 index = 0;
|
|
// s32 i;
|
|
// s32 count = 1;
|
|
// s32 j;
|
|
// u32 len2 = (u32)&_frdataSegmentRomEnd - (u32)&_frdataSegmentRomStart;
|
|
//
|
|
// var80088808 = true;
|
|
//
|
|
// // 7ec
|
|
// frLoadRomData(len2);
|
|
//
|
|
// if (len > 0x12) {
|
|
// for (i = 0x12; i != len2; i++) {
|
|
// if (g_FrRomData[i] == 0xfe) {
|
|
// count++;
|
|
// }
|
|
// }
|
|
// }
|
|
//
|
|
// // 83c
|
|
// var80088800 = malloc(ALIGN16(count * 2), 4);
|
|
//
|
|
// // 860
|
|
// if (var80088800) {
|
|
// if (len > 0x12) {
|
|
// for (j = 0x12; j != len; j++) {
|
|
// if (g_FrRomData[j] == 0xfe) {
|
|
// var80088800[index++] = j + 1;
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
//
|
|
// // 8cc
|
|
// func0f19de24();
|
|
//
|
|
// g_FiringRangeData.slot = 0;
|
|
// g_FiringRangeData.difficulty = FRDIFFICULTY_BRONZE;
|
|
// g_FiringRangeData.donelighting = false;
|
|
// }
|
|
//}
|
|
|
|
u32 frInitAmmo(s32 weaponnum)
|
|
{
|
|
u32 weaponindex;
|
|
u32 ammotype = weaponGetAmmoType(weaponnum, 0);
|
|
u32 capacity = ammotypeGetMaxCapacity(ammotype);
|
|
|
|
func0f19d5f4();
|
|
weaponindex = func0f19cdf0(weaponnum);
|
|
func0f19d90c(weaponindex);
|
|
|
|
if (g_FiringRangeData.ammolimit == 255) {
|
|
currentPlayerSetAmmoQuantity(ammotype, capacity);
|
|
} else {
|
|
currentPlayerSetAmmoQuantity(ammotype, g_FiringRangeData.ammolimit);
|
|
}
|
|
|
|
if (weaponnum == WEAPON_SUPERDRAGON) {
|
|
if (g_FiringRangeData.sdgrenadelimit == 255) {
|
|
currentPlayerSetAmmoQuantity(AMMOTYPE_DEVASTATOR, capacity);
|
|
} else {
|
|
currentPlayerSetAmmoQuantity(AMMOTYPE_DEVASTATOR, g_FiringRangeData.sdgrenadelimit);
|
|
}
|
|
}
|
|
|
|
return weaponindex;
|
|
}
|
|
|
|
void frBeginSession(s32 weapon)
|
|
{
|
|
s32 i;
|
|
struct defaultobj *obj = objFindByTagId(0x7f); // computer
|
|
|
|
if (obj) {
|
|
obj->flags |= OBJFLAG_CANNOT_ACTIVATE;
|
|
}
|
|
|
|
frCloseAndLockDoor();
|
|
|
|
for (i = 0; i < 2; i++) {
|
|
if (g_Vars.currentplayer->equippedammotypes[i] >= 0) {
|
|
g_Vars.currentplayer->hands[0].loadedammo[i] = 0;
|
|
g_Vars.currentplayer->hands[1].loadedammo[i] = 0;
|
|
}
|
|
}
|
|
|
|
g_FrIsValidWeapon = frInitAmmo(weapon) == 0 ? false : true;
|
|
func0f19e44c();
|
|
playersSetPassiveMode(false);
|
|
}
|
|
|
|
char *frGetWeaponDescription(void)
|
|
{
|
|
u32 weapon = frGetWeaponBySlot(g_FiringRangeData.slot);
|
|
|
|
switch (weapon) {
|
|
case WEAPON_FALCON2: return langGet(L_MISC(377));
|
|
case WEAPON_FALCON2_SCOPE: return langGet(L_MISC(378));
|
|
case WEAPON_FALCON2_SILENCER: return langGet(L_MISC(379));
|
|
case WEAPON_MAGSEC4: return langGet(L_MISC(380));
|
|
case WEAPON_MAULER: return langGet(L_MISC(381));
|
|
case WEAPON_PHOENIX: return langGet(L_MISC(382));
|
|
case WEAPON_DY357MAGNUM: return langGet(L_MISC(383));
|
|
case WEAPON_DY357LX: return langGet(L_MISC(384));
|
|
case WEAPON_CMP150: return langGet(L_MISC(385));
|
|
case WEAPON_CYCLONE: return langGet(L_MISC(386));
|
|
case WEAPON_CALLISTONTG: return langGet(L_MISC(387));
|
|
case WEAPON_RCP120: return langGet(L_MISC(388));
|
|
case WEAPON_LAPTOPGUN: return langGet(L_MISC(389));
|
|
case WEAPON_DRAGON: return langGet(L_MISC(390));
|
|
case WEAPON_K7AVENGER: return langGet(L_MISC(391));
|
|
case WEAPON_AR34: return langGet(L_MISC(392));
|
|
case WEAPON_SUPERDRAGON: return langGet(L_MISC(393));
|
|
case WEAPON_SHOTGUN: return langGet(L_MISC(394));
|
|
case WEAPON_SNIPERRIFLE: return langGet(L_MISC(395));
|
|
case WEAPON_FARSIGHTXR20: return langGet(L_MISC(396));
|
|
case WEAPON_CROSSBOW: return langGet(L_MISC(397));
|
|
case WEAPON_TRANQUILIZER: return langGet(L_MISC(398));
|
|
case WEAPON_REAPER: return langGet(L_MISC(399));
|
|
case WEAPON_DEVASTATOR: return langGet(L_MISC(400));
|
|
case WEAPON_ROCKETLAUNCHER: return langGet(L_MISC(401));
|
|
case WEAPON_SLAYER: return langGet(L_MISC(402));
|
|
case WEAPON_COMBATKNIFE: return langGet(L_MISC(403));
|
|
case WEAPON_LASER: return langGet(L_MISC(404));
|
|
case WEAPON_GRENADE: return langGet(L_MISC(405));
|
|
case WEAPON_NBOMB: return langGet(L_MISC(406));
|
|
case WEAPON_TIMEDMINE: return langGet(L_MISC(407));
|
|
case WEAPON_PROXIMITYMINE: return langGet(L_MISC(408));
|
|
case WEAPON_REMOTEMINE: return langGet(L_MISC(409));
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
void frEndSession(bool hidetargets)
|
|
{
|
|
s32 i;
|
|
s32 j;
|
|
s16 propnums[256];
|
|
s16 *propnumptr;
|
|
s16 rooms[20];
|
|
u32 stack1;
|
|
s16 rooms2[10];
|
|
u32 stack2;
|
|
|
|
if (var80088808) {
|
|
struct defaultobj *terminal = objFindByTagId(0x7f);
|
|
|
|
if (terminal) {
|
|
terminal->flags &= ~OBJFLAG_CANNOT_ACTIVATE;
|
|
}
|
|
|
|
frUnlockDoor();
|
|
|
|
if (g_Vars.currentplayer->visionmode == VISIONMODE_SLAYERROCKET) {
|
|
g_Vars.currentplayer->visionmode = VISIONMODE_NORMAL;
|
|
}
|
|
|
|
playersSetPassiveMode(true);
|
|
|
|
g_FrIsValidWeapon = 0;
|
|
|
|
frRestoreLighting();
|
|
|
|
if (hidetargets) {
|
|
frHideAllTargets();
|
|
}
|
|
|
|
if (g_ThrownLaptops->base.prop) {
|
|
setupParseObjectWithArg2False(g_ThrownLaptops, true);
|
|
}
|
|
|
|
roomsCopy(g_Vars.currentplayer->prop->rooms, rooms);
|
|
|
|
for (i = 0; g_Vars.currentplayer->prop->rooms[i] != -1; i++) {
|
|
func0f1645a8(g_Vars.currentplayer->prop->rooms[i], rooms2, 10);
|
|
func0f0657d8(rooms2, rooms, 20);
|
|
}
|
|
|
|
// Remove projectiles and throwables
|
|
roomGetProps(rooms, propnums, 256);
|
|
|
|
propnumptr = propnums;
|
|
|
|
while (*propnumptr >= 0) {
|
|
struct prop *prop = &g_Vars.props[*propnumptr];
|
|
|
|
if (prop) {
|
|
struct defaultobj *obj = prop->obj;
|
|
|
|
if (prop->type == PROPTYPE_WEAPON) {
|
|
if (obj->type == OBJTYPE_AUTOGUN) {
|
|
setupParseObjectWithArg2False(obj, true);
|
|
}
|
|
|
|
if (obj->type == OBJTYPE_WEAPON) {
|
|
struct weaponobj *weapon = (struct weaponobj *)obj;
|
|
|
|
if (weapon->weaponnum == WEAPON_NBOMB
|
|
|| weapon->weaponnum == WEAPON_BOLT
|
|
|| weapon->weaponnum == WEAPON_COMBATKNIFE
|
|
|| weapon->weaponnum == WEAPON_HOMINGROCKET
|
|
|| weapon->weaponnum == WEAPON_GRENADE
|
|
|| weapon->weaponnum == WEAPON_GRENADEROUND
|
|
|| weapon->weaponnum == WEAPON_PROXIMITYMINE
|
|
|| weapon->weaponnum == WEAPON_REMOTEMINE
|
|
|| weapon->weaponnum == WEAPON_ROCKET
|
|
|| weapon->weaponnum == WEAPON_TIMEDMINE
|
|
|| weapon->weaponnum == WEAPON_ROCKET2
|
|
|| (weapon->weaponnum == WEAPON_DRAGON && weapon->thrown == true)
|
|
|| (weapon->weaponnum == WEAPON_LAPTOPGUN && weapon->thrown == true)) {
|
|
setupParseObjectWithArg2False(obj, true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
propnumptr++;
|
|
}
|
|
|
|
// Remove explosions
|
|
for (i = 0; i < g_NumExplosions; i++) {
|
|
g_Explosions[i].age = 256;
|
|
|
|
for (j = 0; j < 40; j++) {
|
|
g_Explosions[i].unk08[j].unk14 = 0;
|
|
}
|
|
}
|
|
|
|
// Remove smoke
|
|
for (i = 0; i < g_NumSmokes; i++) {
|
|
g_Smokes[i].age = 256;
|
|
|
|
for (j = 0; j < 10; j++) {
|
|
g_Smokes[i].smokebits[j].size = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
func0f0bb69c();
|
|
|
|
g_Vars.currentplayer->bondhealth = 1;
|
|
}
|
|
|
|
bool frWasTooInaccurate(void)
|
|
{
|
|
f32 sum = (g_FiringRangeData.numhitstype4 +
|
|
+ g_FiringRangeData.numhitstype1
|
|
+ g_FiringRangeData.numhitstype2
|
|
+ g_FiringRangeData.numhitstype3) * 100.0f;
|
|
|
|
if (g_FiringRangeData.numshots) {
|
|
f32 accuracy = sum / g_FiringRangeData.numshots;
|
|
|
|
if (accuracy < g_FiringRangeData.goalaccuracy) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
void frSetFailReason(s32 failreason)
|
|
{
|
|
frEndSession(false);
|
|
|
|
g_FiringRangeData.failreason = frWasTooInaccurate() ? FRFAILREASON_INACCURATE : failreason;
|
|
g_FiringRangeData.unk465_00 = 2;
|
|
g_FiringRangeData.unk464 = 60;
|
|
}
|
|
|
|
void func0f19f18c(void)
|
|
{
|
|
frEndSession(false);
|
|
|
|
if (frWasTooInaccurate()) {
|
|
g_FiringRangeData.failreason = FRFAILREASON_INACCURATE;
|
|
g_FiringRangeData.unk465_00 = 2;
|
|
} else {
|
|
u32 frweaponindex = frGetWeaponIndexByWeapon(frGetWeaponBySlot(g_FiringRangeData.slot));
|
|
frSaveScoreIfBest(frweaponindex, g_FiringRangeData.difficulty + 1);
|
|
g_FiringRangeData.unk465_00 = 3;
|
|
}
|
|
|
|
g_FiringRangeData.unk464 = 60;
|
|
}
|
|
|
|
bool func0f19f220(struct prop *prop)
|
|
{
|
|
s32 i;
|
|
|
|
for (i = 0; i < 18; i++) {
|
|
if (g_FiringRangeData.targets[i].unk00_01
|
|
&& g_FiringRangeData.targets[i].unk00_03 == 0
|
|
&& g_FiringRangeData.targets[i].unk00_02
|
|
&& prop == g_FiringRangeData.targets[i].prop) {
|
|
if (g_FiringRangeData.targets[i].flags & FRTARGETFLAG_20) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
f32 func0f19f294(struct coord *a, f32 argangle, struct coord *b)
|
|
{
|
|
f32 xdiff = a->x - b->x;
|
|
f32 zdiff = a->z - b->z;
|
|
f32 calcedangle = func0f096750(xdiff, zdiff);
|
|
f32 diffangle = calcedangle - argangle;
|
|
|
|
if (calcedangle < argangle) {
|
|
diffangle += M_BADTAU;
|
|
}
|
|
|
|
return diffangle;
|
|
}
|
|
|
|
bool func0f19f2ec(struct prop *prop, struct coord *pos)
|
|
{
|
|
s32 i;
|
|
|
|
for (i = 0; i < 18; i++) {
|
|
if (prop == g_FiringRangeData.targets[i].prop) {
|
|
f32 angle;
|
|
|
|
if (g_FiringRangeData.targets[i].unk00_03) {
|
|
return false;
|
|
}
|
|
|
|
angle = func0f19f294(&prop->pos, g_FiringRangeData.targets[i].angle, pos);
|
|
|
|
//if (angle > DEG2RAD(90) && angle < DEG2RAD(270)) {
|
|
if (angle > 1.5707963705063f && angle < 4.7116389274597f) {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
GLOBAL_ASM(
|
|
glabel frChooseAutogunTarget
|
|
.late_rodata
|
|
glabel var7f1b94b8
|
|
.word 0x4096c5bf
|
|
glabel var7f1b94bc
|
|
.word 0x3fc90fdb
|
|
.text
|
|
/* f19f39c: 27bdff30 */ addiu $sp,$sp,-208
|
|
/* f19f3a0: f7b60018 */ sdc1 $f22,0x18($sp)
|
|
/* f19f3a4: 3c014e00 */ lui $at,0x4e00
|
|
/* f19f3a8: 4481b000 */ mtc1 $at,$f22
|
|
/* f19f3ac: f7b80020 */ sdc1 $f24,0x20($sp)
|
|
/* f19f3b0: 3c017f1c */ lui $at,%hi(var7f1b94b8)
|
|
/* f19f3b4: afb10030 */ sw $s1,0x30($sp)
|
|
/* f19f3b8: c43894b8 */ lwc1 $f24,%lo(var7f1b94b8)($at)
|
|
/* f19f3bc: afb50040 */ sw $s5,0x40($sp)
|
|
/* f19f3c0: afb4003c */ sw $s4,0x3c($sp)
|
|
/* f19f3c4: afb30038 */ sw $s3,0x38($sp)
|
|
/* f19f3c8: afb20034 */ sw $s2,0x34($sp)
|
|
/* f19f3cc: afb0002c */ sw $s0,0x2c($sp)
|
|
/* f19f3d0: f7b40010 */ sdc1 $f20,0x10($sp)
|
|
/* f19f3d4: 3c017f1c */ lui $at,%hi(var7f1b94bc)
|
|
/* f19f3d8: 3c11800b */ lui $s1,%hi(g_FiringRangeData)
|
|
/* f19f3dc: 00809825 */ or $s3,$a0,$zero
|
|
/* f19f3e0: afbf0044 */ sw $ra,0x44($sp)
|
|
/* f19f3e4: 00009025 */ or $s2,$zero,$zero
|
|
/* f19f3e8: 0000a825 */ or $s5,$zero,$zero
|
|
/* f19f3ec: 2631cd20 */ addiu $s1,$s1,%lo(g_FiringRangeData)
|
|
/* f19f3f0: c43494bc */ lwc1 $f20,%lo(var7f1b94bc)($at)
|
|
/* f19f3f4: 00008025 */ or $s0,$zero,$zero
|
|
/* f19f3f8: 27b40084 */ addiu $s4,$sp,0x84
|
|
.L0f19f3fc:
|
|
/* f19f3fc: 8e220010 */ lw $v0,0x10($s1)
|
|
/* f19f400: 000277c2 */ srl $t6,$v0,0x1f
|
|
/* f19f404: 11c00014 */ beqz $t6,.L0f19f458
|
|
/* f19f408: 0002c080 */ sll $t8,$v0,0x2
|
|
/* f19f40c: 07000012 */ bltz $t8,.L0f19f458
|
|
/* f19f410: 00024040 */ sll $t0,$v0,0x1
|
|
/* f19f414: 05010010 */ bgez $t0,.L0f19f458
|
|
/* f19f418: 02603025 */ or $a2,$s3,$zero
|
|
/* f19f41c: 8e240014 */ lw $a0,0x14($s1)
|
|
/* f19f420: 8e250038 */ lw $a1,0x38($s1)
|
|
/* f19f424: 0fc67ca5 */ jal func0f19f294
|
|
/* f19f428: 24840008 */ addiu $a0,$a0,0x8
|
|
/* f19f42c: 4600a03c */ c.lt.s $f20,$f0
|
|
/* f19f430: 00124880 */ sll $t1,$s2,0x2
|
|
/* f19f434: 02895021 */ addu $t2,$s4,$t1
|
|
/* f19f438: 45020006 */ bc1fl .L0f19f454
|
|
/* f19f43c: ad500000 */ sw $s0,0x0($t2)
|
|
/* f19f440: 4618003c */ c.lt.s $f0,$f24
|
|
/* f19f444: 00000000 */ nop
|
|
/* f19f448: 45030004 */ bc1tl .L0f19f45c
|
|
/* f19f44c: 26100001 */ addiu $s0,$s0,0x1
|
|
/* f19f450: ad500000 */ sw $s0,0x0($t2)
|
|
.L0f19f454:
|
|
/* f19f454: 26520001 */ addiu $s2,$s2,0x1
|
|
.L0f19f458:
|
|
/* f19f458: 26100001 */ addiu $s0,$s0,0x1
|
|
.L0f19f45c:
|
|
/* f19f45c: 2a010012 */ slti $at,$s0,0x12
|
|
/* f19f460: 1420ffe6 */ bnez $at,.L0f19f3fc
|
|
/* f19f464: 2631003c */ addiu $s1,$s1,0x3c
|
|
/* f19f468: 1a400021 */ blez $s2,.L0f19f4f0
|
|
/* f19f46c: 00008025 */ or $s0,$zero,$zero
|
|
/* f19f470: 3c04800b */ lui $a0,%hi(g_FiringRangeData)
|
|
/* f19f474: 2484cd20 */ addiu $a0,$a0,%lo(g_FiringRangeData)
|
|
/* f19f478: 27a30084 */ addiu $v1,$sp,0x84
|
|
/* f19f47c: c6700000 */ lwc1 $f16,0x0($s3)
|
|
/* f19f480: c6720004 */ lwc1 $f18,0x4($s3)
|
|
/* f19f484: c6740008 */ lwc1 $f20,0x8($s3)
|
|
/* f19f488: 2405003c */ addiu $a1,$zero,0x3c
|
|
.L0f19f48c:
|
|
/* f19f48c: 8c6b0000 */ lw $t3,0x0($v1)
|
|
/* f19f490: 26100001 */ addiu $s0,$s0,0x1
|
|
/* f19f494: 01650019 */ multu $t3,$a1
|
|
/* f19f498: 00006012 */ mflo $t4
|
|
/* f19f49c: 008c6821 */ addu $t5,$a0,$t4
|
|
/* f19f4a0: 8da20014 */ lw $v0,0x14($t5)
|
|
/* f19f4a4: c4440008 */ lwc1 $f4,0x8($v0)
|
|
/* f19f4a8: c446000c */ lwc1 $f6,0xc($v0)
|
|
/* f19f4ac: c4480010 */ lwc1 $f8,0x10($v0)
|
|
/* f19f4b0: 46102001 */ sub.s $f0,$f4,$f16
|
|
/* f19f4b4: 46123081 */ sub.s $f2,$f6,$f18
|
|
/* f19f4b8: 46000282 */ mul.s $f10,$f0,$f0
|
|
/* f19f4bc: 46144301 */ sub.s $f12,$f8,$f20
|
|
/* f19f4c0: 46021102 */ mul.s $f4,$f2,$f2
|
|
/* f19f4c4: 46045180 */ add.s $f6,$f10,$f4
|
|
/* f19f4c8: 460c6202 */ mul.s $f8,$f12,$f12
|
|
/* f19f4cc: 46083380 */ add.s $f14,$f6,$f8
|
|
/* f19f4d0: 4616703c */ c.lt.s $f14,$f22
|
|
/* f19f4d4: 00000000 */ nop
|
|
/* f19f4d8: 45000003 */ bc1f .L0f19f4e8
|
|
/* f19f4dc: 00000000 */ nop
|
|
/* f19f4e0: 46007586 */ mov.s $f22,$f14
|
|
/* f19f4e4: 0040a825 */ or $s5,$v0,$zero
|
|
.L0f19f4e8:
|
|
/* f19f4e8: 1612ffe8 */ bne $s0,$s2,.L0f19f48c
|
|
/* f19f4ec: 24630004 */ addiu $v1,$v1,0x4
|
|
.L0f19f4f0:
|
|
/* f19f4f0: 8fbf0044 */ lw $ra,0x44($sp)
|
|
/* f19f4f4: 02a01025 */ or $v0,$s5,$zero
|
|
/* f19f4f8: 8fb50040 */ lw $s5,0x40($sp)
|
|
/* f19f4fc: d7b40010 */ ldc1 $f20,0x10($sp)
|
|
/* f19f500: d7b60018 */ ldc1 $f22,0x18($sp)
|
|
/* f19f504: d7b80020 */ ldc1 $f24,0x20($sp)
|
|
/* f19f508: 8fb0002c */ lw $s0,0x2c($sp)
|
|
/* f19f50c: 8fb10030 */ lw $s1,0x30($sp)
|
|
/* f19f510: 8fb20034 */ lw $s2,0x34($sp)
|
|
/* f19f514: 8fb30038 */ lw $s3,0x38($sp)
|
|
/* f19f518: 8fb4003c */ lw $s4,0x3c($sp)
|
|
/* f19f51c: 03e00008 */ jr $ra
|
|
/* f19f520: 27bd00d0 */ addiu $sp,$sp,0xd0
|
|
);
|
|
|
|
// Regalloc: s3 and s4 are swapped.
|
|
// s3 should be autogunpos and s4 should be facingtargets.
|
|
//struct prop *frChooseAutogunTarget(struct coord *autogunpos)
|
|
//{
|
|
// f32 closestdist = 0x20000000;
|
|
// s32 facingtargets[ARRAYCOUNT(g_FiringRangeData.targets)];
|
|
// s32 len = 0;
|
|
// struct prop *closesttarget = NULL;
|
|
// s32 i;
|
|
//
|
|
// // Make list of targets which are facing the laptop gun
|
|
// for (i = 0; i < ARRAYCOUNT(g_FiringRangeData.targets); i++) {
|
|
// if (g_FiringRangeData.targets[i].unk00_01
|
|
// && g_FiringRangeData.targets[i].unk00_03 == 0
|
|
// && g_FiringRangeData.targets[i].unk00_02) {
|
|
// f32 angle = func0f19f294(&g_FiringRangeData.targets[i].prop->pos, g_FiringRangeData.targets[i].angle, autogunpos);
|
|
//
|
|
// //if (!(angle > BADDEG2RAD(90) && angle < BADDEG2RAD(270))) {
|
|
// if (!(angle > 1.5707963705063f && angle < 4.7116389274597f)) {
|
|
// facingtargets[len++] = i;
|
|
// }
|
|
// }
|
|
// }
|
|
//
|
|
// // Determine which of the facing targets is closest
|
|
// for (i = 0; i < len; i++) {
|
|
// struct prop *prop = g_FiringRangeData.targets[facingtargets[i]].prop;
|
|
// f32 xdiff = prop->pos.x - autogunpos->x;
|
|
// f32 ydiff = prop->pos.y - autogunpos->y;
|
|
// f32 zdiff = prop->pos.z - autogunpos->z;
|
|
// f32 dist = xdiff * xdiff + ydiff * ydiff + zdiff * zdiff;
|
|
//
|
|
// if (dist < closestdist) {
|
|
// closestdist = dist;
|
|
// closesttarget = prop;
|
|
// }
|
|
// }
|
|
//
|
|
// return closesttarget;
|
|
//}
|
|
|
|
GLOBAL_ASM(
|
|
glabel func0f19f524
|
|
/* f19f524: 27bdfd40 */ addiu $sp,$sp,-704
|
|
/* f19f528: afbf0014 */ sw $ra,0x14($sp)
|
|
/* f19f52c: 3c04800b */ lui $a0,%hi(g_FiringRangeData+0x456)
|
|
/* f19f530: 0fc6749a */ jal frGetWeaponBySlot
|
|
/* f19f534: 9484d176 */ lhu $a0,%lo(g_FiringRangeData+0x456)($a0)
|
|
/* f19f538: afa202bc */ sw $v0,0x2bc($sp)
|
|
/* f19f53c: 00402025 */ or $a0,$v0,$zero
|
|
/* f19f540: 0fc2a685 */ jal weaponGetAmmoType
|
|
/* f19f544: 00002825 */ or $a1,$zero,$zero
|
|
/* f19f548: afa202b4 */ sw $v0,0x2b4($sp)
|
|
/* f19f54c: 8fa402bc */ lw $a0,0x2bc($sp)
|
|
/* f19f550: 0fc2a685 */ jal weaponGetAmmoType
|
|
/* f19f554: 24050001 */ addiu $a1,$zero,0x1
|
|
/* f19f558: 3c03800a */ lui $v1,%hi(g_Vars+0x284)
|
|
/* f19f55c: 8c63a244 */ lw $v1,%lo(g_Vars+0x284)($v1)
|
|
/* f19f560: 8fae02bc */ lw $t6,0x2bc($sp)
|
|
/* f19f564: 2401001d */ addiu $at,$zero,0x1d
|
|
/* f19f568: 00403825 */ or $a3,$v0,$zero
|
|
/* f19f56c: 24650638 */ addiu $a1,$v1,0x638
|
|
/* f19f570: 15c10003 */ bne $t6,$at,.L0f19f580
|
|
/* f19f574: 24660ddc */ addiu $a2,$v1,0xddc
|
|
/* f19f578: 10000102 */ b .L0f19f984
|
|
/* f19f57c: 00001025 */ or $v0,$zero,$zero
|
|
.L0f19f580:
|
|
/* f19f580: 8ccf0220 */ lw $t7,0x220($a2)
|
|
/* f19f584: 8cb80220 */ lw $t8,0x220($a1)
|
|
/* f19f588: 8fa402b4 */ lw $a0,0x2b4($sp)
|
|
/* f19f58c: 01f8c821 */ addu $t9,$t7,$t8
|
|
/* f19f590: afb902a0 */ sw $t9,0x2a0($sp)
|
|
/* f19f594: 8caf0224 */ lw $t7,0x224($a1)
|
|
/* f19f598: 8cce0224 */ lw $t6,0x224($a2)
|
|
/* f19f59c: afa702b0 */ sw $a3,0x2b0($sp)
|
|
/* f19f5a0: 01cfc021 */ addu $t8,$t6,$t7
|
|
/* f19f5a4: 0fc2a5dc */ jal ammoGetQuantity
|
|
/* f19f5a8: afb802a4 */ sw $t8,0x2a4($sp)
|
|
/* f19f5ac: 8fb902a0 */ lw $t9,0x2a0($sp)
|
|
/* f19f5b0: 8fa402b0 */ lw $a0,0x2b0($sp)
|
|
/* f19f5b4: 03227021 */ addu $t6,$t9,$v0
|
|
/* f19f5b8: 0fc2a5dc */ jal ammoGetQuantity
|
|
/* f19f5bc: afae0298 */ sw $t6,0x298($sp)
|
|
/* f19f5c0: 8fb80298 */ lw $t8,0x298($sp)
|
|
/* f19f5c4: 8faf02a4 */ lw $t7,0x2a4($sp)
|
|
/* f19f5c8: 1f0000ed */ bgtz $t8,.L0f19f980
|
|
/* f19f5cc: 01e21821 */ addu $v1,$t7,$v0
|
|
/* f19f5d0: 1c6000eb */ bgtz $v1,.L0f19f980
|
|
/* f19f5d4: afa3029c */ sw $v1,0x29c($sp)
|
|
/* f19f5d8: 3c06800b */ lui $a2,%hi(g_FiringRangeData)
|
|
/* f19f5dc: 24c6cd20 */ addiu $a2,$a2,%lo(g_FiringRangeData)
|
|
/* f19f5e0: 8cd90464 */ lw $t9,0x464($a2)
|
|
/* f19f5e4: 00001025 */ or $v0,$zero,$zero
|
|
/* f19f5e8: 3c03800a */ lui $v1,%hi(g_Explosions)
|
|
/* f19f5ec: 00197b40 */ sll $t7,$t9,0xd
|
|
/* f19f5f0: 05e10006 */ bgez $t7,.L0f19f60c
|
|
/* f19f5f4: 24041ad0 */ addiu $a0,$zero,0x1ad0
|
|
/* f19f5f8: 90d80465 */ lbu $t8,0x465($a2)
|
|
/* f19f5fc: 00001025 */ or $v0,$zero,$zero
|
|
/* f19f600: 3319fffb */ andi $t9,$t8,0xfffb
|
|
/* f19f604: 100000df */ b .L0f19f984
|
|
/* f19f608: a0d90465 */ sb $t9,0x465($a2)
|
|
.L0f19f60c:
|
|
/* f19f60c: 8c633430 */ lw $v1,%lo(g_Explosions)($v1)
|
|
.L0f19f610:
|
|
/* f19f610: 8c6e0000 */ lw $t6,0x0($v1)
|
|
/* f19f614: 24420478 */ addiu $v0,$v0,0x478
|
|
/* f19f618: 11c00003 */ beqz $t6,.L0f19f628
|
|
/* f19f61c: 00000000 */ nop
|
|
/* f19f620: 100000d8 */ b .L0f19f984
|
|
/* f19f624: 00001025 */ or $v0,$zero,$zero
|
|
.L0f19f628:
|
|
/* f19f628: 1444fff9 */ bne $v0,$a0,.L0f19f610
|
|
/* f19f62c: 24630478 */ addiu $v1,$v1,1144
|
|
/* f19f630: 8fa202bc */ lw $v0,0x2bc($sp)
|
|
/* f19f634: 24010018 */ addiu $at,$zero,0x18
|
|
/* f19f638: 3c0f800a */ lui $t7,%hi(g_Vars+0x284)
|
|
/* f19f63c: 10410015 */ beq $v0,$at,.L0f19f694
|
|
/* f19f640: 24010019 */ addiu $at,$zero,0x19
|
|
/* f19f644: 10410013 */ beq $v0,$at,.L0f19f694
|
|
/* f19f648: 24010017 */ addiu $at,$zero,0x17
|
|
/* f19f64c: 10410011 */ beq $v0,$at,.L0f19f694
|
|
/* f19f650: 24010012 */ addiu $at,$zero,0x12
|
|
/* f19f654: 1041000f */ beq $v0,$at,.L0f19f694
|
|
/* f19f658: 2401001a */ addiu $at,$zero,0x1a
|
|
/* f19f65c: 1041000d */ beq $v0,$at,.L0f19f694
|
|
/* f19f660: 2401001b */ addiu $at,$zero,0x1b
|
|
/* f19f664: 1041000b */ beq $v0,$at,.L0f19f694
|
|
/* f19f668: 2401001e */ addiu $at,$zero,0x1e
|
|
/* f19f66c: 10410009 */ beq $v0,$at,.L0f19f694
|
|
/* f19f670: 2401001f */ addiu $at,$zero,0x1f
|
|
/* f19f674: 10410007 */ beq $v0,$at,.L0f19f694
|
|
/* f19f678: 24010020 */ addiu $at,$zero,0x20
|
|
/* f19f67c: 10410005 */ beq $v0,$at,.L0f19f694
|
|
/* f19f680: 24010021 */ addiu $at,$zero,0x21
|
|
/* f19f684: 10410003 */ beq $v0,$at,.L0f19f694
|
|
/* f19f688: 24010022 */ addiu $at,$zero,0x22
|
|
/* f19f68c: 144100ba */ bne $v0,$at,.L0f19f978
|
|
/* f19f690: 00000000 */ nop
|
|
.L0f19f694:
|
|
/* f19f694: 8defa244 */ lw $t7,%lo(g_Vars+0x284)($t7)
|
|
/* f19f698: 27a50064 */ addiu $a1,$sp,0x64
|
|
/* f19f69c: 8de400bc */ lw $a0,0xbc($t7)
|
|
/* f19f6a0: 0fc195e9 */ jal roomsCopy
|
|
/* f19f6a4: 24840028 */ addiu $a0,$a0,0x0028
|
|
/* f19f6a8: 3c18800a */ lui $t8,%hi(g_Vars+0x284)
|
|
/* f19f6ac: 8f18a244 */ lw $t8,%lo(g_Vars+0x284)($t8)
|
|
/* f19f6b0: 2401ffff */ addiu $at,$zero,-1
|
|
/* f19f6b4: 00001825 */ or $v1,$zero,$zero
|
|
/* f19f6b8: 8f0200bc */ lw $v0,0xbc($t8)
|
|
/* f19f6bc: 84590028 */ lh $t9,0x28($v0)
|
|
/* f19f6c0: 53210015 */ beql $t9,$at,.L0f19f718
|
|
/* f19f6c4: 27a40064 */ addiu $a0,$sp,0x64
|
|
/* f19f6c8: 84440028 */ lh $a0,0x28($v0)
|
|
/* f19f6cc: 27a5004c */ addiu $a1,$sp,0x4c
|
|
.L0f19f6d0:
|
|
/* f19f6d0: 2406000a */ addiu $a2,$zero,0xa
|
|
/* f19f6d4: 0fc5916a */ jal func0f1645a8
|
|
/* f19f6d8: afa30020 */ sw $v1,0x20($sp)
|
|
/* f19f6dc: 27a4004c */ addiu $a0,$sp,0x4c
|
|
/* f19f6e0: 27a50064 */ addiu $a1,$sp,0x64
|
|
/* f19f6e4: 0fc195f6 */ jal func0f0657d8
|
|
/* f19f6e8: 24060014 */ addiu $a2,$zero,0x14
|
|
/* f19f6ec: 3c0e800a */ lui $t6,%hi(g_Vars+0x284)
|
|
/* f19f6f0: 8dcea244 */ lw $t6,%lo(g_Vars+0x284)($t6)
|
|
/* f19f6f4: 8fa30020 */ lw $v1,0x20($sp)
|
|
/* f19f6f8: 2401ffff */ addiu $at,$zero,-1
|
|
/* f19f6fc: 8dcf00bc */ lw $t7,0xbc($t6)
|
|
/* f19f700: 24630002 */ addiu $v1,$v1,0x2
|
|
/* f19f704: 01e3c021 */ addu $t8,$t7,$v1
|
|
/* f19f708: 87040028 */ lh $a0,0x28($t8)
|
|
/* f19f70c: 5481fff0 */ bnel $a0,$at,.L0f19f6d0
|
|
/* f19f710: 27a5004c */ addiu $a1,$sp,0x4c
|
|
/* f19f714: 27a40064 */ addiu $a0,$sp,0x64
|
|
.L0f19f718:
|
|
/* f19f718: 27a50090 */ addiu $a1,$sp,0x90
|
|
/* f19f71c: 0fc197e0 */ jal roomGetProps
|
|
/* f19f720: 24060100 */ addiu $a2,$zero,0x100
|
|
/* f19f724: 87ae0090 */ lh $t6,0x90($sp)
|
|
/* f19f728: 27b90090 */ addiu $t9,$sp,0x90
|
|
/* f19f72c: 03203025 */ or $a2,$t9,$zero
|
|
/* f19f730: 05c00091 */ bltz $t6,.L0f19f978
|
|
/* f19f734: 3c0f800a */ lui $t7,%hi(g_Vars+0x338)
|
|
/* f19f738: 8defa2f8 */ lw $t7,%lo(g_Vars+0x338)($t7)
|
|
/* f19f73c: 87230000 */ lh $v1,0x0($t9)
|
|
/* f19f740: 241f0056 */ addiu $ra,$zero,0x56
|
|
/* f19f744: 240d0054 */ addiu $t5,$zero,0x54
|
|
/* f19f748: 240c0053 */ addiu $t4,$zero,0x53
|
|
/* f19f74c: 240b0048 */ addiu $t3,$zero,0x48
|
|
/* f19f750: 240a0021 */ addiu $t2,$zero,0x21
|
|
/* f19f754: 24090020 */ addiu $t1,$zero,0x20
|
|
/* f19f758: 24080022 */ addiu $t0,$zero,0x22
|
|
/* f19f75c: 24070055 */ addiu $a3,$zero,0x55
|
|
/* f19f760: 24050004 */ addiu $a1,$zero,0x4
|
|
/* f19f764: afaf0020 */ sw $t7,0x20($sp)
|
|
.L0f19f768:
|
|
/* f19f768: 006b0019 */ multu $v1,$t3
|
|
/* f19f76c: 8fae0020 */ lw $t6,0x20($sp)
|
|
/* f19f770: 0000c012 */ mflo $t8
|
|
/* f19f774: 030e2021 */ addu $a0,$t8,$t6
|
|
/* f19f778: 8c82001c */ lw $v0,0x1c($a0)
|
|
/* f19f77c: 10400008 */ beqz $v0,.L0f19f7a0
|
|
/* f19f780: 00000000 */ nop
|
|
/* f19f784: 90590000 */ lbu $t9,0x0($v0)
|
|
/* f19f788: 14b90005 */ bne $a1,$t9,.L0f19f7a0
|
|
/* f19f78c: 00000000 */ nop
|
|
/* f19f790: 8c4f0004 */ lw $t7,0x4($v0)
|
|
/* f19f794: 91f8005c */ lbu $t8,0x5c($t7)
|
|
/* f19f798: 1138001c */ beq $t1,$t8,.L0f19f80c
|
|
/* f19f79c: 00000000 */ nop
|
|
.L0f19f7a0:
|
|
/* f19f7a0: 10400008 */ beqz $v0,.L0f19f7c4
|
|
/* f19f7a4: 00000000 */ nop
|
|
/* f19f7a8: 904e0000 */ lbu $t6,0x0($v0)
|
|
/* f19f7ac: 14ae0005 */ bne $a1,$t6,.L0f19f7c4
|
|
/* f19f7b0: 00000000 */ nop
|
|
/* f19f7b4: 8c590004 */ lw $t9,0x4($v0)
|
|
/* f19f7b8: 932f005c */ lbu $t7,0x5c($t9)
|
|
/* f19f7bc: 110f0013 */ beq $t0,$t7,.L0f19f80c
|
|
/* f19f7c0: 00000000 */ nop
|
|
.L0f19f7c4:
|
|
/* f19f7c4: 10400008 */ beqz $v0,.L0f19f7e8
|
|
/* f19f7c8: 00000000 */ nop
|
|
/* f19f7cc: 90580000 */ lbu $t8,0x0($v0)
|
|
/* f19f7d0: 14b80005 */ bne $a1,$t8,.L0f19f7e8
|
|
/* f19f7d4: 00000000 */ nop
|
|
/* f19f7d8: 8c4e0004 */ lw $t6,0x4($v0)
|
|
/* f19f7dc: 91d9005c */ lbu $t9,0x5c($t6)
|
|
/* f19f7e0: 1159000a */ beq $t2,$t9,.L0f19f80c
|
|
/* f19f7e4: 00000000 */ nop
|
|
.L0f19f7e8:
|
|
/* f19f7e8: 5040000b */ beqzl $v0,.L0f19f818
|
|
/* f19f7ec: 90990000 */ lbu $t9,0x0($a0)
|
|
/* f19f7f0: 904f0000 */ lbu $t7,0x0($v0)
|
|
/* f19f7f4: 54af0008 */ bnel $a1,$t7,.L0f19f818
|
|
/* f19f7f8: 90990000 */ lbu $t9,0x0($a0)
|
|
/* f19f7fc: 8c580004 */ lw $t8,0x4($v0)
|
|
/* f19f800: 930e005c */ lbu $t6,0x5c($t8)
|
|
/* f19f804: 54ee0004 */ bnel $a3,$t6,.L0f19f818
|
|
/* f19f808: 90990000 */ lbu $t9,0x0($a0)
|
|
.L0f19f80c:
|
|
/* f19f80c: 1000005d */ b .L0f19f984
|
|
/* f19f810: 00001025 */ or $v0,$zero,$zero
|
|
/* f19f814: 90990000 */ lbu $t9,0x0($a0)
|
|
.L0f19f818:
|
|
/* f19f818: 2401001e */ addiu $at,$zero,0x1e
|
|
/* f19f81c: 54b90053 */ bnel $a1,$t9,.L0f19f96c
|
|
/* f19f820: 84c30002 */ lh $v1,0x2($a2)
|
|
/* f19f824: 8c830004 */ lw $v1,0x4($a0)
|
|
/* f19f828: 9062005c */ lbu $v0,0x5c($v1)
|
|
/* f19f82c: 11820007 */ beq $t4,$v0,.L0f19f84c
|
|
/* f19f830: 00000000 */ nop
|
|
/* f19f834: 11a20005 */ beq $t5,$v0,.L0f19f84c
|
|
/* f19f838: 00000000 */ nop
|
|
/* f19f83c: 10410003 */ beq $v0,$at,.L0f19f84c
|
|
/* f19f840: 00000000 */ nop
|
|
/* f19f844: 14e20003 */ bne $a3,$v0,.L0f19f854
|
|
/* f19f848: 2401001a */ addiu $at,$zero,0x1a
|
|
.L0f19f84c:
|
|
/* f19f84c: 1000004d */ b .L0f19f984
|
|
/* f19f850: 00001025 */ or $v0,$zero,$zero
|
|
.L0f19f854:
|
|
/* f19f854: 53e20004 */ beql $ra,$v0,.L0f19f868
|
|
/* f19f858: 8c6f0040 */ lw $t7,0x40($v1)
|
|
/* f19f85c: 14410007 */ bne $v0,$at,.L0f19f87c
|
|
/* f19f860: 00000000 */ nop
|
|
/* f19f864: 8c6f0040 */ lw $t7,0x40($v1)
|
|
.L0f19f868:
|
|
/* f19f868: 31f80080 */ andi $t8,$t7,0x80
|
|
/* f19f86c: 5300003f */ beqzl $t8,.L0f19f96c
|
|
/* f19f870: 84c30002 */ lh $v1,0x2($a2)
|
|
/* f19f874: 10000043 */ b .L0f19f984
|
|
/* f19f878: 00001025 */ or $v0,$zero,$zero
|
|
.L0f19f87c:
|
|
/* f19f87c: 11220003 */ beq $t1,$v0,.L0f19f88c
|
|
/* f19f880: 00000000 */ nop
|
|
/* f19f884: 15020003 */ bne $t0,$v0,.L0f19f894
|
|
/* f19f888: 00000000 */ nop
|
|
.L0f19f88c:
|
|
/* f19f88c: 1000003d */ b .L0f19f984
|
|
/* f19f890: 00001025 */ or $v0,$zero,$zero
|
|
.L0f19f894:
|
|
/* f19f894: 55420035 */ bnel $t2,$v0,.L0f19f96c
|
|
/* f19f898: 84c30002 */ lh $v1,0x2($a2)
|
|
/* f19f89c: 3c06800b */ lui $a2,%hi(g_FiringRangeData)
|
|
/* f19f8a0: 24c6cd20 */ addiu $a2,$a2,%lo(g_FiringRangeData)
|
|
/* f19f8a4: 84c20474 */ lh $v0,0x474($a2)
|
|
/* f19f8a8: 2405ff01 */ addiu $a1,$zero,-255
|
|
/* f19f8ac: 14a20003 */ bne $a1,$v0,.L0f19f8bc
|
|
/* f19f8b0: 00000000 */ nop
|
|
/* f19f8b4: 10000033 */ b .L0f19f984
|
|
/* f19f8b8: 00001025 */ or $v0,$zero,$zero
|
|
.L0f19f8bc:
|
|
/* f19f8bc: 14400014 */ bnez $v0,.L0f19f910
|
|
/* f19f8c0: 3c0f800a */ lui $t7,%hi(g_Menus+0x2220)
|
|
/* f19f8c4: 8fa402bc */ lw $a0,0x2bc($sp)
|
|
/* f19f8c8: 0fc2a685 */ jal weaponGetAmmoType
|
|
/* f19f8cc: 00002825 */ or $a1,$zero,$zero
|
|
/* f19f8d0: 3c0e800a */ lui $t6,%hi(g_Vars+0x284)
|
|
/* f19f8d4: 8dcea244 */ lw $t6,%lo(g_Vars+0x284)($t6)
|
|
/* f19f8d8: 00402025 */ or $a0,$v0,$zero
|
|
/* f19f8dc: 25d90638 */ addiu $t9,$t6,0x638
|
|
/* f19f8e0: 0fc2a5dc */ jal ammoGetQuantity
|
|
/* f19f8e4: afb90034 */ sw $t9,0x34($sp)
|
|
/* f19f8e8: 8faf0034 */ lw $t7,0x34($sp)
|
|
/* f19f8ec: 2419012c */ addiu $t9,$zero,0x12c
|
|
/* f19f8f0: 3c01800b */ lui $at,%hi(g_FiringRangeData+0x474)
|
|
/* f19f8f4: 8df80220 */ lw $t8,%lo(g_Menus+0x2220)($t7)
|
|
/* f19f8f8: 03027021 */ addu $t6,$t8,$v0
|
|
/* f19f8fc: 15c00002 */ bnez $t6,.L0f19f908
|
|
/* f19f900: 00000000 */ nop
|
|
/* f19f904: a439d194 */ sh $t9,%lo(g_FiringRangeData+0x474)($at)
|
|
.L0f19f908:
|
|
/* f19f908: 1000001e */ b .L0f19f984
|
|
/* f19f90c: 00001025 */ or $v0,$zero,$zero
|
|
.L0f19f910:
|
|
/* f19f910: 8def9ff8 */ lw $t7,-0x6008($t7)
|
|
/* f19f914: 3c04800a */ lui $a0,%hi(var8009ce38)
|
|
/* f19f918: 2484ce38 */ addiu $a0,$a0,%lo(var8009ce38)
|
|
/* f19f91c: 004fc023 */ subu $t8,$v0,$t7
|
|
/* f19f920: a4d80474 */ sh $t8,0x474($a2)
|
|
/* f19f924: 84ce0474 */ lh $t6,0x474($a2)
|
|
/* f19f928: 3c02800a */ lui $v0,%hi(var8009cdc0)
|
|
/* f19f92c: 2442cdc0 */ addiu $v0,$v0,%lo(var8009cdc0)
|
|
/* f19f930: 1dc0000b */ bgtz $t6,.L0f19f960
|
|
/* f19f934: 00000000 */ nop
|
|
/* f19f938: 8c430000 */ lw $v1,0x0($v0)
|
|
.L0f19f93c:
|
|
/* f19f93c: 24420004 */ addiu $v0,$v0,0x4
|
|
/* f19f940: 10600002 */ beqz $v1,.L0f19f94c
|
|
/* f19f944: 00000000 */ nop
|
|
/* f19f948: a4600062 */ sh $zero,0x62($v1)
|
|
.L0f19f94c:
|
|
/* f19f94c: 5444fffb */ bnel $v0,$a0,.L0f19f93c
|
|
/* f19f950: 8c430000 */ lw $v1,0x0($v0)
|
|
/* f19f954: a4c50474 */ sh $a1,0x474($a2)
|
|
/* f19f958: 1000000a */ b .L0f19f984
|
|
/* f19f95c: 24020001 */ addiu $v0,$zero,0x1
|
|
.L0f19f960:
|
|
/* f19f960: 10000008 */ b .L0f19f984
|
|
/* f19f964: 00001025 */ or $v0,$zero,$zero
|
|
/* f19f968: 84c30002 */ lh $v1,0x2($a2)
|
|
.L0f19f96c:
|
|
/* f19f96c: 24c60002 */ addiu $a2,$a2,0x2
|
|
/* f19f970: 0461ff7d */ bgez $v1,.L0f19f768
|
|
/* f19f974: 00000000 */ nop
|
|
.L0f19f978:
|
|
/* f19f978: 10000002 */ b .L0f19f984
|
|
/* f19f97c: 24020001 */ addiu $v0,$zero,0x1
|
|
.L0f19f980:
|
|
/* f19f980: 00001025 */ or $v0,$zero,$zero
|
|
.L0f19f984:
|
|
/* f19f984: 8fbf0014 */ lw $ra,0x14($sp)
|
|
/* f19f988: 27bd02c0 */ addiu $sp,$sp,0x2c0
|
|
/* f19f98c: 03e00008 */ jr $ra
|
|
/* f19f990: 00000000 */ nop
|
|
);
|
|
|
|
GLOBAL_ASM(
|
|
glabel frTick
|
|
.late_rodata
|
|
glabel var7f1b94c0
|
|
.word 0x4012a974
|
|
glabel var7f1b94c4
|
|
.word 0x407f7642
|
|
glabel var7f1b94c8
|
|
.word 0x40490fdb
|
|
glabel var7f1b94cc
|
|
.word 0xc59c4000
|
|
glabel var7f1b94d0
|
|
.word 0x40c907a9
|
|
glabel var7f1b94d4
|
|
.word 0x40490fdb
|
|
glabel var7f1b94d8
|
|
.word 0xbd0efa35
|
|
glabel var7f1b94dc
|
|
.word 0x40490fdb
|
|
glabel var7f1b94e0
|
|
.word 0x3d0efa35
|
|
glabel var7f1b94e4
|
|
.word 0x40490fdb
|
|
.text
|
|
/* f19f994: 27bdfe90 */ addiu $sp,$sp,-368
|
|
/* f19f998: 3c0e8009 */ lui $t6,%hi(g_FrIsValidWeapon)
|
|
/* f19f99c: 91ce8804 */ lbu $t6,%lo(g_FrIsValidWeapon)($t6)
|
|
/* f19f9a0: afbf007c */ sw $ra,0x7c($sp)
|
|
/* f19f9a4: afb60078 */ sw $s6,0x78($sp)
|
|
/* f19f9a8: afb50074 */ sw $s5,0x74($sp)
|
|
/* f19f9ac: afb40070 */ sw $s4,0x70($sp)
|
|
/* f19f9b0: afb3006c */ sw $s3,0x6c($sp)
|
|
/* f19f9b4: afb20068 */ sw $s2,0x68($sp)
|
|
/* f19f9b8: afb10064 */ sw $s1,0x64($sp)
|
|
/* f19f9bc: afb00060 */ sw $s0,0x60($sp)
|
|
/* f19f9c0: f7b80058 */ sdc1 $f24,0x58($sp)
|
|
/* f19f9c4: f7b60050 */ sdc1 $f22,0x50($sp)
|
|
/* f19f9c8: 11c00014 */ beqz $t6,.L0f19fa1c
|
|
/* f19f9cc: f7b40048 */ sdc1 $f20,0x48($sp)
|
|
/* f19f9d0: 3c16800a */ lui $s6,%hi(g_Vars)
|
|
/* f19f9d4: 26d69fc0 */ addiu $s6,$s6,%lo(g_Vars)
|
|
/* f19f9d8: 8ecf0284 */ lw $t7,0x284($s6)
|
|
/* f19f9dc: 3c15800b */ lui $s5,%hi(g_FiringRangeData)
|
|
/* f19f9e0: 26b5cd20 */ addiu $s5,$s5,%lo(g_FiringRangeData)
|
|
/* f19f9e4: 8df81580 */ lw $t8,0x1580($t7)
|
|
/* f19f9e8: 00184f00 */ sll $t1,$t8,0x1c
|
|
/* f19f9ec: 0520000b */ bltz $t1,.L0f19fa1c
|
|
/* f19f9f0: 00000000 */ nop
|
|
/* f19f9f4: 0fc6749a */ jal frGetWeaponBySlot
|
|
/* f19f9f8: 96a40456 */ lhu $a0,0x456($s5)
|
|
/* f19f9fc: 0fc44727 */ jal currentPlayerCanHaveWeapon
|
|
/* f19fa00: 00402025 */ or $a0,$v0,$zero
|
|
/* f19fa04: 10400005 */ beqz $v0,.L0f19fa1c
|
|
/* f19fa08: 00000000 */ nop
|
|
/* f19fa0c: 0fc6749a */ jal frGetWeaponBySlot
|
|
/* f19fa10: 96a40456 */ lhu $a0,0x456($s5)
|
|
/* f19fa14: 0fc2865b */ jal currentPlayerEquipWeapon
|
|
/* f19fa18: 00402025 */ or $a0,$v0,$zero
|
|
.L0f19fa1c:
|
|
/* f19fa1c: 3c15800b */ lui $s5,%hi(g_FiringRangeData)
|
|
/* f19fa20: 26b5cd20 */ addiu $s5,$s5,%lo(g_FiringRangeData)
|
|
/* f19fa24: 82a30464 */ lb $v1,0x464($s5)
|
|
/* f19fa28: 3c16800a */ lui $s6,%hi(g_Vars)
|
|
/* f19fa2c: 26d69fc0 */ addiu $s6,$s6,%lo(g_Vars)
|
|
/* f19fa30: 5060006e */ beqzl $v1,.L0f19fbec
|
|
/* f19fa34: 8ec20284 */ lw $v0,0x284($s6)
|
|
/* f19fa38: 8eca0038 */ lw $t2,0x38($s6)
|
|
/* f19fa3c: 3c10800b */ lui $s0,%hi(g_FiringRangeData)
|
|
/* f19fa40: 3c11800b */ lui $s1,%hi(g_FiringRangeData+0x438)
|
|
/* f19fa44: 006a5823 */ subu $t3,$v1,$t2
|
|
/* f19fa48: a2ab0464 */ sb $t3,0x464($s5)
|
|
/* f19fa4c: 82a30464 */ lb $v1,0x464($s5)
|
|
/* f19fa50: 2631d158 */ addiu $s1,$s1,%lo(g_FiringRangeData+0x438)
|
|
/* f19fa54: 2610cd20 */ addiu $s0,$s0,%lo(g_FiringRangeData)
|
|
/* f19fa58: 1c60000f */ bgtz $v1,.L0f19fa98
|
|
/* f19fa5c: 00000000 */ nop
|
|
/* f19fa60: 92a20465 */ lbu $v0,0x465($s5)
|
|
/* f19fa64: 24010002 */ addiu $at,$zero,0x2
|
|
/* f19fa68: 00026142 */ srl $t4,$v0,0x5
|
|
/* f19fa6c: 11810003 */ beq $t4,$at,.L0f19fa7c
|
|
/* f19fa70: 24010003 */ addiu $at,$zero,0x3
|
|
/* f19fa74: 15810008 */ bne $t4,$at,.L0f19fa98
|
|
/* f19fa78: 00000000 */ nop
|
|
.L0f19fa7c:
|
|
/* f19fa7c: 8ecd0284 */ lw $t5,0x284($s6)
|
|
/* f19fa80: 24130001 */ addiu $s3,$zero,0x1
|
|
/* f19fa84: 91ae0638 */ lbu $t6,0x638($t5)
|
|
/* f19fa88: 126e0003 */ beq $s3,$t6,.L0f19fa98
|
|
/* f19fa8c: 00000000 */ nop
|
|
/* f19fa90: a2b30464 */ sb $s3,0x464($s5)
|
|
/* f19fa94: 82a30464 */ lb $v1,0x464($s5)
|
|
.L0f19fa98:
|
|
/* f19fa98: 1c600395 */ bgtz $v1,.L0f1a08f0
|
|
/* f19fa9c: 24130001 */ addiu $s3,$zero,0x1
|
|
/* f19faa0: a2a00464 */ sb $zero,0x464($s5)
|
|
/* f19faa4: 8e040014 */ lw $a0,0x14($s0)
|
|
.L0f19faa8:
|
|
/* f19faa8: 02602825 */ or $a1,$s3,$zero
|
|
/* f19faac: 50800004 */ beqzl $a0,.L0f19fac0
|
|
/* f19fab0: 2610003c */ addiu $s0,$s0,0x3c
|
|
/* f19fab4: 0fc249af */ jal func0f0926bc
|
|
/* f19fab8: 3406ffff */ dli $a2,0xffff
|
|
/* f19fabc: 2610003c */ addiu $s0,$s0,0x3c
|
|
.L0f19fac0:
|
|
/* f19fac0: 5611fff9 */ bnel $s0,$s1,.L0f19faa8
|
|
/* f19fac4: 8e040014 */ lw $a0,0x14($s0)
|
|
/* f19fac8: 3c02800b */ lui $v0,%hi(g_FiringRangeData+0x465)
|
|
/* f19facc: 9042d185 */ lbu $v0,%lo(g_FiringRangeData+0x465)($v0)
|
|
/* f19fad0: 00027942 */ srl $t7,$v0,0x5
|
|
/* f19fad4: 11e0000b */ beqz $t7,.L0f19fb04
|
|
/* f19fad8: 00000000 */ nop
|
|
/* f19fadc: 11f30010 */ beq $t7,$s3,.L0f19fb20
|
|
/* f19fae0: 3c048009 */ lui $a0,%hi(var80095200)
|
|
/* f19fae4: 24010002 */ addiu $at,$zero,0x2
|
|
/* f19fae8: 11e10012 */ beq $t7,$at,.L0f19fb34
|
|
/* f19faec: 3c048009 */ lui $a0,%hi(var80095200)
|
|
/* f19faf0: 24010003 */ addiu $at,$zero,0x3
|
|
/* f19faf4: 11e10023 */ beq $t7,$at,.L0f19fb84
|
|
/* f19faf8: 3c048009 */ lui $a0,%hi(menudialog_frtraininginfo2)
|
|
/* f19fafc: 1000037d */ b .L0f1a08f4
|
|
/* f19fb00: 8fbf007c */ lw $ra,0x7c($sp)
|
|
.L0f19fb04:
|
|
/* f19fb04: 0fc69d55 */ jal ciGetFrWeaponListMenuDialog
|
|
/* f19fb08: 00000000 */ nop
|
|
/* f19fb0c: 00402025 */ or $a0,$v0,$zero
|
|
/* f19fb10: 0fc3e178 */ jal func0f0f85e0
|
|
/* f19fb14: 2405000d */ addiu $a1,$zero,0xd
|
|
/* f19fb18: 10000376 */ b .L0f1a08f4
|
|
/* f19fb1c: 8fbf007c */ lw $ra,0x7c($sp)
|
|
.L0f19fb20:
|
|
/* f19fb20: 24848f60 */ addiu $a0,$a0,%lo(menudialog_frtraininginfo2)
|
|
/* f19fb24: 0fc3e178 */ jal func0f0f85e0
|
|
/* f19fb28: 2405000d */ addiu $a1,$zero,0xd
|
|
/* f19fb2c: 10000371 */ b .L0f1a08f4
|
|
/* f19fb30: 8fbf007c */ lw $ra,0x7c($sp)
|
|
.L0f19fb34:
|
|
/* f19fb34: 3c01bf80 */ lui $at,0xbf80
|
|
/* f19fb38: 4481c000 */ mtc1 $at,$f24
|
|
/* f19fb3c: 2418ffff */ addiu $t8,$zero,-1
|
|
/* f19fb40: 2419ffff */ addiu $t9,$zero,-1
|
|
/* f19fb44: 2409ffff */ addiu $t1,$zero,-1
|
|
/* f19fb48: afa9001c */ sw $t1,0x1c($sp)
|
|
/* f19fb4c: afb90018 */ sw $t9,0x18($sp)
|
|
/* f19fb50: afb80010 */ sw $t8,0x10($sp)
|
|
/* f19fb54: 8c845200 */ lw $a0,%lo(var80095200)($a0)
|
|
/* f19fb58: 240505db */ addiu $a1,$zero,0x5db
|
|
/* f19fb5c: 00003025 */ or $a2,$zero,$zero
|
|
/* f19fb60: 2407ffff */ addiu $a3,$zero,-1
|
|
/* f19fb64: 0c004241 */ jal audioStart
|
|
/* f19fb68: e7b80014 */ swc1 $f24,0x14($sp)
|
|
/* f19fb6c: 3c048009 */ lui $a0,%hi(menudialog_frtrainingstats2)
|
|
/* f19fb70: 24849198 */ addiu $a0,$a0,%lo(menudialog_frtrainingstats2)
|
|
/* f19fb74: 0fc3e178 */ jal func0f0f85e0
|
|
/* f19fb78: 2405000d */ addiu $a1,$zero,0xd
|
|
/* f19fb7c: 1000035d */ b .L0f1a08f4
|
|
/* f19fb80: 8fbf007c */ lw $ra,0x7c($sp)
|
|
.L0f19fb84:
|
|
/* f19fb84: 3c01bf80 */ lui $at,0xbf80
|
|
/* f19fb88: 4481c000 */ mtc1 $at,$f24
|
|
/* f19fb8c: 240affff */ addiu $t2,$zero,-1
|
|
/* f19fb90: 240bffff */ addiu $t3,$zero,-1
|
|
/* f19fb94: 240cffff */ addiu $t4,$zero,-1
|
|
/* f19fb98: afac001c */ sw $t4,0x1c($sp)
|
|
/* f19fb9c: afab0018 */ sw $t3,0x18($sp)
|
|
/* f19fba0: afaa0010 */ sw $t2,0x10($sp)
|
|
/* f19fba4: 8c845200 */ lw $a0,%lo(var80095200)($a0)
|
|
/* f19fba8: 240505dc */ addiu $a1,$zero,0x5dc
|
|
/* f19fbac: 00003025 */ or $a2,$zero,$zero
|
|
/* f19fbb0: 2407ffff */ addiu $a3,$zero,-1
|
|
/* f19fbb4: 0c004241 */ jal audioStart
|
|
/* f19fbb8: e7b80014 */ swc1 $f24,0x14($sp)
|
|
/* f19fbbc: 3c048009 */ lui $a0,%hi(menudialog_frtrainingstats)
|
|
/* f19fbc0: 2484907c */ addiu $a0,$a0,%lo(menudialog_frtrainingstats)
|
|
/* f19fbc4: 0fc3e178 */ jal func0f0f85e0
|
|
/* f19fbc8: 2405000d */ addiu $a1,$zero,0xd
|
|
/* f19fbcc: 3c04800a */ lui $a0,%hi(var800a22c0)
|
|
/* f19fbd0: 248422c0 */ addiu $a0,$a0,%lo(var800a22c0)
|
|
/* f19fbd4: 00002825 */ or $a1,$zero,$zero
|
|
/* f19fbd8: 0fc42539 */ jal func0f1094e4
|
|
/* f19fbdc: 00003025 */ or $a2,$zero,$zero
|
|
/* f19fbe0: 10000344 */ b .L0f1a08f4
|
|
/* f19fbe4: 8fbf007c */ lw $ra,0x7c($sp)
|
|
/* f19fbe8: 8ec20284 */ lw $v0,0x284($s6)
|
|
.L0f19fbec:
|
|
/* f19fbec: 3c038009 */ lui $v1,%hi(g_FrIsValidWeapon)
|
|
/* f19fbf0: 2401000a */ addiu $at,$zero,0xa
|
|
/* f19fbf4: 8c4d00bc */ lw $t5,0xbc($v0)
|
|
/* f19fbf8: 90638804 */ lbu $v1,%lo(g_FrIsValidWeapon)($v1)
|
|
/* f19fbfc: 85ae0028 */ lh $t6,0x28($t5)
|
|
/* f19fc00: 11c10024 */ beq $t6,$at,.L0f19fc94
|
|
/* f19fc04: 00000000 */ nop
|
|
/* f19fc08: 10600339 */ beqz $v1,.L0f1a08f0
|
|
/* f19fc0c: 3c10800b */ lui $s0,%hi(g_FiringRangeData)
|
|
/* f19fc10: 3c11800b */ lui $s1,%hi(g_FiringRangeData+0x438)
|
|
/* f19fc14: 2631d158 */ addiu $s1,$s1,%lo(g_FiringRangeData+0x438)
|
|
/* f19fc18: 2610cd20 */ addiu $s0,$s0,%lo(g_FiringRangeData)
|
|
/* f19fc1c: 8e020010 */ lw $v0,0x10($s0)
|
|
.L0f19fc20:
|
|
/* f19fc20: 00027fc2 */ srl $t7,$v0,0x1f
|
|
/* f19fc24: 11e0000e */ beqz $t7,.L0f19fc60
|
|
/* f19fc28: 0002c880 */ sll $t9,$v0,0x2
|
|
/* f19fc2c: 0722000d */ bltzl $t9,.L0f19fc64
|
|
/* f19fc30: 2610003c */ addiu $s0,$s0,0x3c
|
|
/* f19fc34: 92090041 */ lbu $t1,0x41($s0)
|
|
/* f19fc38: 5520000a */ bnezl $t1,.L0f19fc64
|
|
/* f19fc3c: 2610003c */ addiu $s0,$s0,0x3c
|
|
/* f19fc40: 920a0043 */ lbu $t2,0x43($s0)
|
|
/* f19fc44: 240b0001 */ addiu $t3,$zero,0x1
|
|
/* f19fc48: 24050001 */ addiu $a1,$zero,0x1
|
|
/* f19fc4c: 11400004 */ beqz $t2,.L0f19fc60
|
|
/* f19fc50: 3406ffff */ dli $a2,0xffff
|
|
/* f19fc54: a20b0041 */ sb $t3,0x41($s0)
|
|
/* f19fc58: 0fc249af */ jal func0f0926bc
|
|
/* f19fc5c: 8e040014 */ lw $a0,0x14($s0)
|
|
.L0f19fc60:
|
|
/* f19fc60: 2610003c */ addiu $s0,$s0,0x3c
|
|
.L0f19fc64:
|
|
/* f19fc64: 5611ffee */ bnel $s0,$s1,.L0f19fc20
|
|
/* f19fc68: 8e020010 */ lw $v0,0x10($s0)
|
|
/* f19fc6c: 3c02800a */ lui $v0,%hi(g_Vars+0x284)
|
|
/* f19fc70: 8c42a244 */ lw $v0,%lo(g_Vars+0x284)($v0)
|
|
/* f19fc74: 24040001 */ addiu $a0,$zero,0x1
|
|
/* f19fc78: 0fc67b37 */ jal frEndSession
|
|
/* f19fc7c: ac401c08 */ sw $zero,0x1c08($v0)
|
|
/* f19fc80: 00002025 */ or $a0,$zero,$zero
|
|
/* f19fc84: 0fc127d2 */ jal chrUnsetStageFlag
|
|
/* f19fc88: 24050001 */ addiu $a1,$zero,0x1
|
|
/* f19fc8c: 10000319 */ b .L0f1a08f4
|
|
/* f19fc90: 8fbf007c */ lw $ra,0x7c($sp)
|
|
.L0f19fc94:
|
|
/* f19fc94: 50600317 */ beqzl $v1,.L0f1a08f4
|
|
/* f19fc98: 8fbf007c */ lw $ra,0x7c($sp)
|
|
/* f19fc9c: 8c4c00d8 */ lw $t4,0xd8($v0)
|
|
/* f19fca0: 51800004 */ beqzl $t4,.L0f19fcb4
|
|
/* f19fca4: 8ecd0034 */ lw $t5,0x34($s6)
|
|
/* f19fca8: 0fc67b37 */ jal frEndSession
|
|
/* f19fcac: 00002025 */ or $a0,$zero,$zero
|
|
/* f19fcb0: 8ecd0034 */ lw $t5,0x34($s6)
|
|
.L0f19fcb4:
|
|
/* f19fcb4: 3c10800b */ lui $s0,%hi(g_FiringRangeData)
|
|
/* f19fcb8: 2610cd20 */ addiu $s0,$s0,%lo(g_FiringRangeData)
|
|
/* f19fcbc: 15a00018 */ bnez $t5,.L0f19fd20
|
|
/* f19fcc0: 3c11800b */ lui $s1,%hi(g_FiringRangeData+0x438)
|
|
/* f19fcc4: 2631d158 */ addiu $s1,$s1,%lo(g_FiringRangeData+0x438)
|
|
/* f19fcc8: 8e020010 */ lw $v0,0x10($s0)
|
|
.L0f19fccc:
|
|
/* f19fccc: 000277c2 */ srl $t6,$v0,0x1f
|
|
/* f19fcd0: 11c0000e */ beqz $t6,.L0f19fd0c
|
|
/* f19fcd4: 0002c080 */ sll $t8,$v0,0x2
|
|
/* f19fcd8: 0702000d */ bltzl $t8,.L0f19fd10
|
|
/* f19fcdc: 2610003c */ addiu $s0,$s0,0x3c
|
|
/* f19fce0: 92190041 */ lbu $t9,0x41($s0)
|
|
/* f19fce4: 5720000a */ bnezl $t9,.L0f19fd10
|
|
/* f19fce8: 2610003c */ addiu $s0,$s0,0x3c
|
|
/* f19fcec: 92090043 */ lbu $t1,0x43($s0)
|
|
/* f19fcf0: 240a0001 */ addiu $t2,$zero,0x1
|
|
/* f19fcf4: 24050001 */ addiu $a1,$zero,0x1
|
|
/* f19fcf8: 11200004 */ beqz $t1,.L0f19fd0c
|
|
/* f19fcfc: 3406ffff */ dli $a2,0xffff
|
|
/* f19fd00: a20a0041 */ sb $t2,0x41($s0)
|
|
/* f19fd04: 0fc249af */ jal func0f0926bc
|
|
/* f19fd08: 8e040014 */ lw $a0,0x14($s0)
|
|
.L0f19fd0c:
|
|
/* f19fd0c: 2610003c */ addiu $s0,$s0,0x3c
|
|
.L0f19fd10:
|
|
/* f19fd10: 5611ffee */ bnel $s0,$s1,.L0f19fccc
|
|
/* f19fd14: 8e020010 */ lw $v0,0x10($s0)
|
|
/* f19fd18: 100002f6 */ b .L0f1a08f4
|
|
/* f19fd1c: 8fbf007c */ lw $ra,0x7c($sp)
|
|
.L0f19fd20:
|
|
/* f19fd20: 8ecc0284 */ lw $t4,0x284($s6)
|
|
/* f19fd24: 240b0001 */ addiu $t3,$zero,0x1
|
|
/* f19fd28: 0fc677d6 */ jal func0f19df58
|
|
/* f19fd2c: ad8b1c08 */ sw $t3,0x1c08($t4)
|
|
/* f19fd30: 92ad045a */ lbu $t5,0x45a($s5)
|
|
/* f19fd34: 51a0004b */ beqzl $t5,.L0f19fe64
|
|
/* f19fd38: 8eab044c */ lw $t3,0x44c($s5)
|
|
/* f19fd3c: 0fc6749a */ jal frGetWeaponBySlot
|
|
/* f19fd40: 96a40456 */ lhu $a0,0x456($s5)
|
|
/* f19fd44: 00409025 */ or $s2,$v0,$zero
|
|
/* f19fd48: 00402025 */ or $a0,$v0,$zero
|
|
/* f19fd4c: 0fc2a685 */ jal weaponGetAmmoType
|
|
/* f19fd50: 00002825 */ or $a1,$zero,$zero
|
|
/* f19fd54: 00408825 */ or $s1,$v0,$zero
|
|
/* f19fd58: 0fc2a63d */ jal ammotypeGetMaxCapacity
|
|
/* f19fd5c: 00402025 */ or $a0,$v0,$zero
|
|
/* f19fd60: 00408025 */ or $s0,$v0,$zero
|
|
/* f19fd64: 02402025 */ or $a0,$s2,$zero
|
|
/* f19fd68: 0fc2c47b */ jal weaponGetAmmoByFunction
|
|
/* f19fd6c: 00002825 */ or $a1,$zero,$zero
|
|
/* f19fd70: 10400003 */ beqz $v0,.L0f19fd80
|
|
/* f19fd74: 00001825 */ or $v1,$zero,$zero
|
|
/* f19fd78: 10000001 */ b .L0f19fd80
|
|
/* f19fd7c: 84430008 */ lh $v1,0x8($v0)
|
|
.L0f19fd80:
|
|
/* f19fd80: 86a20476 */ lh $v0,0x476($s5)
|
|
/* f19fd84: 02038023 */ subu $s0,$s0,$v1
|
|
/* f19fd88: 2401ffff */ addiu $at,$zero,-1
|
|
/* f19fd8c: 18400011 */ blez $v0,.L0f19fdd4
|
|
/* f19fd90: 00000000 */ nop
|
|
/* f19fd94: 0fc2a5dc */ jal ammoGetQuantity
|
|
/* f19fd98: 02202025 */ or $a0,$s1,$zero
|
|
/* f19fd9c: 92a3045a */ lbu $v1,0x45a($s5)
|
|
/* f19fda0: 86ae0476 */ lh $t6,0x476($s5)
|
|
/* f19fda4: 00403025 */ or $a2,$v0,$zero
|
|
/* f19fda8: 00662821 */ addu $a1,$v1,$a2
|
|
/* f19fdac: 01c37823 */ subu $t7,$t6,$v1
|
|
/* f19fdb0: a6af0476 */ sh $t7,0x476($s5)
|
|
/* f19fdb4: 86b80476 */ lh $t8,0x476($s5)
|
|
/* f19fdb8: 07010002 */ bgez $t8,.L0f19fdc4
|
|
/* f19fdbc: 00000000 */ nop
|
|
/* f19fdc0: a6a00476 */ sh $zero,0x476($s5)
|
|
.L0f19fdc4:
|
|
/* f19fdc4: 0fc2a58a */ jal currentPlayerSetAmmoQuantity
|
|
/* f19fdc8: 02202025 */ or $a0,$s1,$zero
|
|
/* f19fdcc: 10000006 */ b .L0f19fde8
|
|
/* f19fdd0: 24010012 */ addiu $at,$zero,0x12
|
|
.L0f19fdd4:
|
|
/* f19fdd4: 14410003 */ bne $v0,$at,.L0f19fde4
|
|
/* f19fdd8: 02202025 */ or $a0,$s1,$zero
|
|
/* f19fddc: 0fc2a58a */ jal currentPlayerSetAmmoQuantity
|
|
/* f19fde0: 02002825 */ or $a1,$s0,$zero
|
|
.L0f19fde4:
|
|
/* f19fde4: 24010012 */ addiu $at,$zero,0x12
|
|
.L0f19fde8:
|
|
/* f19fde8: 5641001d */ bnel $s2,$at,.L0f19fe60
|
|
/* f19fdec: a2a0045a */ sb $zero,0x45a($s5)
|
|
/* f19fdf0: 0fc2a63d */ jal ammotypeGetMaxCapacity
|
|
/* f19fdf4: 2404000b */ addiu $a0,$zero,0xb
|
|
/* f19fdf8: 86a30478 */ lh $v1,0x478($s5)
|
|
/* f19fdfc: 00408025 */ or $s0,$v0,$zero
|
|
/* f19fe00: 2401ffff */ addiu $at,$zero,-1
|
|
/* f19fe04: 18600011 */ blez $v1,.L0f19fe4c
|
|
/* f19fe08: 00000000 */ nop
|
|
/* f19fe0c: 0fc2a5dc */ jal ammoGetQuantity
|
|
/* f19fe10: 2404000b */ addiu $a0,$zero,0xb
|
|
/* f19fe14: 92a3045a */ lbu $v1,0x45a($s5)
|
|
/* f19fe18: 86b90478 */ lh $t9,0x478($s5)
|
|
/* f19fe1c: 00403025 */ or $a2,$v0,$zero
|
|
/* f19fe20: 00662821 */ addu $a1,$v1,$a2
|
|
/* f19fe24: 03234823 */ subu $t1,$t9,$v1
|
|
/* f19fe28: a6a90478 */ sh $t1,0x478($s5)
|
|
/* f19fe2c: 86aa0478 */ lh $t2,0x478($s5)
|
|
/* f19fe30: 05410002 */ bgez $t2,.L0f19fe3c
|
|
/* f19fe34: 00000000 */ nop
|
|
/* f19fe38: a6a00478 */ sh $zero,0x478($s5)
|
|
.L0f19fe3c:
|
|
/* f19fe3c: 0fc2a58a */ jal currentPlayerSetAmmoQuantity
|
|
/* f19fe40: 2404000b */ addiu $a0,$zero,0xb
|
|
/* f19fe44: 10000006 */ b .L0f19fe60
|
|
/* f19fe48: a2a0045a */ sb $zero,0x45a($s5)
|
|
.L0f19fe4c:
|
|
/* f19fe4c: 14610003 */ bne $v1,$at,.L0f19fe5c
|
|
/* f19fe50: 2404000b */ addiu $a0,$zero,0xb
|
|
/* f19fe54: 0fc2a58a */ jal currentPlayerSetAmmoQuantity
|
|
/* f19fe58: 02002825 */ or $a1,$s0,$zero
|
|
.L0f19fe5c:
|
|
/* f19fe5c: a2a0045a */ sb $zero,0x45a($s5)
|
|
.L0f19fe60:
|
|
/* f19fe60: 8eab044c */ lw $t3,0x44c($s5)
|
|
.L0f19fe64:
|
|
/* f19fe64: 8ecc0038 */ lw $t4,0x38($s6)
|
|
/* f19fe68: 016c6821 */ addu $t5,$t3,$t4
|
|
/* f19fe6c: 05a10032 */ bgez $t5,.L0f19ff38
|
|
/* f19fe70: aead044c */ sw $t5,0x44c($s5)
|
|
/* f19fe74: 96ae0458 */ lhu $t6,0x458($s5)
|
|
/* f19fe78: 55c00026 */ bnezl $t6,.L0f19ff14
|
|
/* f19fe7c: 8eb90464 */ lw $t9,0x464($s5)
|
|
/* f19fe80: 8ea30464 */ lw $v1,0x464($s5)
|
|
/* f19fe84: 29a1ff4d */ slti $at,$t5,-179
|
|
/* f19fe88: 0003c300 */ sll $t8,$v1,0xc
|
|
/* f19fe8c: 07020016 */ bltzl $t8,.L0f19fee8
|
|
/* f19fe90: 00037ac0 */ sll $t7,$v1,0xb
|
|
/* f19fe94: 14200013 */ bnez $at,.L0f19fee4
|
|
/* f19fe98: 3c048009 */ lui $a0,%hi(var80095200)
|
|
/* f19fe9c: 92a90465 */ lbu $t1,0x465($s5)
|
|
/* f19fea0: 3c01bf80 */ lui $at,0xbf80
|
|
/* f19fea4: 4481c000 */ mtc1 $at,$f24
|
|
/* f19fea8: 352a0008 */ ori $t2,$t1,0x8
|
|
/* f19feac: a2aa0465 */ sb $t2,0x465($s5)
|
|
/* f19feb0: 240bffff */ addiu $t3,$zero,-1
|
|
/* f19feb4: 240cffff */ addiu $t4,$zero,-1
|
|
/* f19feb8: 240dffff */ addiu $t5,$zero,-1
|
|
/* f19febc: afad001c */ sw $t5,0x1c($sp)
|
|
/* f19fec0: afac0018 */ sw $t4,0x18($sp)
|
|
/* f19fec4: afab0010 */ sw $t3,0x10($sp)
|
|
/* f19fec8: 8c845200 */ lw $a0,%lo(var80095200)($a0)
|
|
/* f19fecc: 240505d4 */ addiu $a1,$zero,0x5d4
|
|
/* f19fed0: 00003025 */ or $a2,$zero,$zero
|
|
/* f19fed4: 2407ffff */ addiu $a3,$zero,-1
|
|
/* f19fed8: 0c004241 */ jal audioStart
|
|
/* f19fedc: e7b80014 */ swc1 $f24,0x14($sp)
|
|
/* f19fee0: 8ea30464 */ lw $v1,0x464($s5)
|
|
.L0f19fee4:
|
|
/* f19fee4: 00037ac0 */ sll $t7,$v1,0xb
|
|
.L0f19fee8:
|
|
/* f19fee8: 05e20282 */ bltzl $t7,.L0f1a08f4
|
|
/* f19feec: 8fbf007c */ lw $ra,0x7c($sp)
|
|
/* f19fef0: 8eb8044c */ lw $t8,0x44c($s5)
|
|
/* f19fef4: 2b01ff20 */ slti $at,$t8,-224
|
|
/* f19fef8: 5420027e */ bnezl $at,.L0f1a08f4
|
|
/* f19fefc: 8fbf007c */ lw $ra,0x7c($sp)
|
|
/* f19ff00: 0fc674ce */ jal frInitLighting
|
|
/* f19ff04: 00000000 */ nop
|
|
/* f19ff08: 1000027a */ b .L0f1a08f4
|
|
/* f19ff0c: 8fbf007c */ lw $ra,0x7c($sp)
|
|
/* f19ff10: 8eb90464 */ lw $t9,0x464($s5)
|
|
.L0f19ff14:
|
|
/* f19ff14: 001952c0 */ sll $t2,$t9,0xb
|
|
/* f19ff18: 05420004 */ bltzl $t2,.L0f19ff2c
|
|
/* f19ff1c: 92ac0465 */ lbu $t4,0x465($s5)
|
|
/* f19ff20: 0fc674ce */ jal frInitLighting
|
|
/* f19ff24: 00000000 */ nop
|
|
/* f19ff28: 92ac0465 */ lbu $t4,0x465($s5)
|
|
.L0f19ff2c:
|
|
/* f19ff2c: aea0044c */ sw $zero,0x44c($s5)
|
|
/* f19ff30: 358d0008 */ ori $t5,$t4,0x8
|
|
/* f19ff34: a2ad0465 */ sb $t5,0x465($s5)
|
|
.L0f19ff38:
|
|
/* f19ff38: 3c01bf80 */ lui $at,0xbf80
|
|
/* f19ff3c: 4481c000 */ mtc1 $at,$f24
|
|
/* f19ff40: 3c017f1c */ lui $at,%hi(var7f1b94c0)
|
|
/* f19ff44: 3c10800b */ lui $s0,%hi(g_FiringRangeData)
|
|
/* f19ff48: 3c14800b */ lui $s4,%hi(g_FiringRangeData+0x438)
|
|
/* f19ff4c: 4480b000 */ mtc1 $zero,$f22
|
|
/* f19ff50: 2694d158 */ addiu $s4,$s4,%lo(g_FiringRangeData+0x438)
|
|
/* f19ff54: 2610cd20 */ addiu $s0,$s0,%lo(g_FiringRangeData)
|
|
/* f19ff58: c43494c0 */ lwc1 $f20,%lo(var7f1b94c0)($at)
|
|
/* f19ff5c: 8e020010 */ lw $v0,0x10($s0)
|
|
.L0f19ff60:
|
|
/* f19ff60: 000277c2 */ srl $t6,$v0,0x1f
|
|
/* f19ff64: 11c000d5 */ beqz $t6,.L0f1a02bc
|
|
/* f19ff68: 0002c080 */ sll $t8,$v0,0x2
|
|
/* f19ff6c: 070000d3 */ bltz $t8,.L0f1a02bc
|
|
/* f19ff70: 00024840 */ sll $t1,$v0,0x1
|
|
/* f19ff74: 052100d1 */ bgez $t1,.L0f1a02bc
|
|
/* f19ff78: 00009025 */ or $s2,$zero,$zero
|
|
/* f19ff7c: a3a00123 */ sb $zero,0x123($sp)
|
|
/* f19ff80: 0fc6749a */ jal frGetWeaponBySlot
|
|
/* f19ff84: 96a40456 */ lhu $a0,0x456($s5)
|
|
/* f19ff88: 8e110014 */ lw $s1,0x14($s0)
|
|
/* f19ff8c: 304300ff */ andi $v1,$v0,0xff
|
|
/* f19ff90: 2401001e */ addiu $at,$zero,0x1e
|
|
/* f19ff94: 10610003 */ beq $v1,$at,.L0f19ffa4
|
|
/* f19ff98: 8e330004 */ lw $s3,0x4($s1)
|
|
/* f19ff9c: 24010021 */ addiu $at,$zero,0x21
|
|
/* f19ffa0: 14610003 */ bne $v1,$at,.L0f19ffb0
|
|
.L0f19ffa4:
|
|
/* f19ffa4: 26240008 */ addiu $a0,$s1,0x8
|
|
/* f19ffa8: 0fc22af5 */ jal func0f08abd4
|
|
/* f19ffac: 24050001 */ addiu $a1,$zero,0x1
|
|
.L0f19ffb0:
|
|
/* f19ffb0: 920a0043 */ lbu $t2,0x43($s0)
|
|
/* f19ffb4: 5140001c */ beqzl $t2,.L0f1a0028
|
|
/* f19ffb8: c6000038 */ lwc1 $f0,0x38($s0)
|
|
/* f19ffbc: 920b0041 */ lbu $t3,0x41($s0)
|
|
/* f19ffc0: 51600019 */ beqzl $t3,.L0f1a0028
|
|
/* f19ffc4: c6000038 */ lwc1 $f0,0x38($s0)
|
|
/* f19ffc8: c604002c */ lwc1 $f4,0x2c($s0)
|
|
/* f19ffcc: 00002025 */ or $a0,$zero,$zero
|
|
/* f19ffd0: 240605d9 */ addiu $a2,$zero,0x5d9
|
|
/* f19ffd4: 4604c032 */ c.eq.s $f24,$f4
|
|
/* f19ffd8: 2407ffff */ addiu $a3,$zero,-1
|
|
/* f19ffdc: 240cffff */ addiu $t4,$zero,-1
|
|
/* f19ffe0: 240dffff */ addiu $t5,$zero,-1
|
|
/* f19ffe4: 45030010 */ bc1tl .L0f1a0028
|
|
/* f19ffe8: c6000038 */ lwc1 $f0,0x38($s0)
|
|
/* f19ffec: a2000041 */ sb $zero,0x41($s0)
|
|
/* f19fff0: 8e050014 */ lw $a1,0x14($s0)
|
|
/* f19fff4: afac0010 */ sw $t4,0x10($sp)
|
|
/* f19fff8: afa00014 */ sw $zero,0x14($sp)
|
|
/* f19fffc: afa00018 */ sw $zero,0x18($sp)
|
|
/* f1a0000: afa0001c */ sw $zero,0x1c($sp)
|
|
/* f1a0004: afa00020 */ sw $zero,0x20($sp)
|
|
/* f1a0008: e7b80024 */ swc1 $f24,0x24($sp)
|
|
/* f1a000c: afa00028 */ sw $zero,0x28($sp)
|
|
/* f1a0010: afad002c */ sw $t5,0x2c($sp)
|
|
/* f1a0014: e7b80030 */ swc1 $f24,0x30($sp)
|
|
/* f1a0018: e7b80034 */ swc1 $f24,0x34($sp)
|
|
/* f1a001c: 0fc24e7e */ jal func0f0939f8
|
|
/* f1a0020: e7b80038 */ swc1 $f24,0x38($sp)
|
|
/* f1a0024: c6000038 */ lwc1 $f0,0x38($s0)
|
|
.L0f1a0028:
|
|
/* f1a0028: 3c017f1c */ lui $at,%hi(var7f1b94c4)
|
|
/* f1a002c: 4600a03c */ c.lt.s $f20,$f0
|
|
/* f1a0030: 00000000 */ nop
|
|
/* f1a0034: 45020008 */ bc1fl .L0f1a0058
|
|
/* f1a0038: 920e0040 */ lbu $t6,0x40($s0)
|
|
/* f1a003c: c42694c4 */ lwc1 $f6,%lo(var7f1b94c4)($at)
|
|
/* f1a0040: 4606003c */ c.lt.s $f0,$f6
|
|
/* f1a0044: 00000000 */ nop
|
|
/* f1a0048: 45020003 */ bc1fl .L0f1a0058
|
|
/* f1a004c: 920e0040 */ lbu $t6,0x40($s0)
|
|
/* f1a0050: a660004c */ sh $zero,0x4c($s3)
|
|
/* f1a0054: 920e0040 */ lbu $t6,0x40($s0)
|
|
.L0f1a0058:
|
|
/* f1a0058: 31cf0080 */ andi $t7,$t6,0x80
|
|
/* f1a005c: 51e0000a */ beqzl $t7,.L0f1a0088
|
|
/* f1a0060: 8662004c */ lh $v0,0x4c($s3)
|
|
/* f1a0064: 8e020048 */ lw $v0,0x48($s0)
|
|
/* f1a0068: 2841012c */ slti $at,$v0,0x12c
|
|
/* f1a006c: 50200006 */ beqzl $at,.L0f1a0088
|
|
/* f1a0070: 8662004c */ lh $v0,0x4c($s3)
|
|
/* f1a0074: 8ed80038 */ lw $t8,0x38($s6)
|
|
/* f1a0078: 24120001 */ addiu $s2,$zero,0x1
|
|
/* f1a007c: 0058c821 */ addu $t9,$v0,$t8
|
|
/* f1a0080: ae190048 */ sw $t9,0x48($s0)
|
|
/* f1a0084: 8662004c */ lh $v0,0x4c($s3)
|
|
.L0f1a0088:
|
|
/* f1a0088: 58400025 */ blezl $v0,.L0f1a0120
|
|
/* f1a008c: 93aa0123 */ lbu $t2,0x123($sp)
|
|
/* f1a0090: 16400007 */ bnez $s2,.L0f1a00b0
|
|
/* f1a0094: 3c017f1c */ lui $at,%hi(var7f1b94c8)
|
|
/* f1a0098: c42894c8 */ lwc1 $f8,%lo(var7f1b94c8)($at)
|
|
/* f1a009c: c60a0038 */ lwc1 $f10,0x38($s0)
|
|
/* f1a00a0: 460a4032 */ c.eq.s $f8,$f10
|
|
/* f1a00a4: 00000000 */ nop
|
|
/* f1a00a8: 45020004 */ bc1fl .L0f1a00bc
|
|
/* f1a00ac: 92090040 */ lbu $t1,0x40($s0)
|
|
.L0f1a00b0:
|
|
/* f1a00b0: 1000001a */ b .L0f1a011c
|
|
/* f1a00b4: a660004c */ sh $zero,0x4c($s3)
|
|
/* f1a00b8: 92090040 */ lbu $t1,0x40($s0)
|
|
.L0f1a00bc:
|
|
/* f1a00bc: 312a0020 */ andi $t2,$t1,0x20
|
|
/* f1a00c0: 5540000b */ bnezl $t2,.L0f1a00f0
|
|
/* f1a00c4: 96ac045c */ lhu $t4,0x45c($s5)
|
|
/* f1a00c8: 866b004e */ lh $t3,0x4e($s3)
|
|
/* f1a00cc: 004b082a */ slt $at,$v0,$t3
|
|
/* f1a00d0: 50200007 */ beqzl $at,.L0f1a00f0
|
|
/* f1a00d4: 96ac045c */ lhu $t4,0x45c($s5)
|
|
/* f1a00d8: 0fc6749a */ jal frGetWeaponBySlot
|
|
/* f1a00dc: 96a40456 */ lhu $a0,0x456($s5)
|
|
/* f1a00e0: 24010007 */ addiu $at,$zero,0x7
|
|
/* f1a00e4: 5441000e */ bnel $v0,$at,.L0f1a0120
|
|
/* f1a00e8: 93aa0123 */ lbu $t2,0x123($sp)
|
|
/* f1a00ec: 96ac045c */ lhu $t4,0x45c($s5)
|
|
.L0f1a00f0:
|
|
/* f1a00f0: 8eae0450 */ lw $t6,0x450($s5)
|
|
/* f1a00f4: 24180001 */ addiu $t8,$zero,0x1
|
|
/* f1a00f8: 2419003c */ addiu $t9,$zero,0x3c
|
|
/* f1a00fc: 2409000b */ addiu $t1,$zero,0xb
|
|
/* f1a0100: 258d0001 */ addiu $t5,$t4,0x1
|
|
/* f1a0104: 25cf000a */ addiu $t7,$t6,0xa
|
|
/* f1a0108: a6ad045c */ sh $t5,0x45c($s5)
|
|
/* f1a010c: aeaf0450 */ sw $t7,0x450($s5)
|
|
/* f1a0110: a3b80123 */ sb $t8,0x123($sp)
|
|
/* f1a0114: a2b90472 */ sb $t9,0x472($s5)
|
|
/* f1a0118: a2a90471 */ sb $t1,0x471($s5)
|
|
.L0f1a011c:
|
|
/* f1a011c: 93aa0123 */ lbu $t2,0x123($sp)
|
|
.L0f1a0120:
|
|
/* f1a0120: 02602025 */ or $a0,$s3,$zero
|
|
/* f1a0124: 26320008 */ addiu $s2,$s1,0x8
|
|
/* f1a0128: 15400009 */ bnez $t2,.L0f1a0150
|
|
/* f1a012c: 00000000 */ nop
|
|
/* f1a0130: 92020011 */ lbu $v0,0x11($s0)
|
|
/* f1a0134: 240100ff */ addiu $at,$zero,0xff
|
|
/* f1a0138: 10410060 */ beq $v0,$at,.L0f1a02bc
|
|
/* f1a013c: 00000000 */ nop
|
|
/* f1a0140: 920b0030 */ lbu $t3,0x30($s0)
|
|
/* f1a0144: 0162082a */ slt $at,$t3,$v0
|
|
/* f1a0148: 1420005c */ bnez $at,.L0f1a02bc
|
|
/* f1a014c: 00000000 */ nop
|
|
.L0f1a0150:
|
|
/* f1a0150: 0fc1a2bd */ jal func0f068af4
|
|
/* f1a0154: 00001025 */ or $v0,$zero,$zero
|
|
/* f1a0158: 3c038009 */ lui $v1,%hi(var8008880c)
|
|
/* f1a015c: 9063880c */ lbu $v1,%lo(var8008880c)($v1)
|
|
/* f1a0160: 00404025 */ or $t0,$v0,$zero
|
|
/* f1a0164: 5060000d */ beqzl $v1,.L0f1a019c
|
|
/* f1a0168: c5100004 */ lwc1 $f16,0x4($t0)
|
|
/* f1a016c: 920c0043 */ lbu $t4,0x43($s0)
|
|
/* f1a0170: 246dffff */ addiu $t5,$v1,-1
|
|
/* f1a0174: 3c018009 */ lui $at,%hi(var8008880c)
|
|
/* f1a0178: 11800007 */ beqz $t4,.L0f1a0198
|
|
/* f1a017c: 02202025 */ or $a0,$s1,$zero
|
|
/* f1a0180: a02d880c */ sb $t5,%lo(var8008880c)($at)
|
|
/* f1a0184: 24050001 */ addiu $a1,$zero,0x1
|
|
/* f1a0188: 3406ffff */ dli $a2,0xffff
|
|
/* f1a018c: 0fc249af */ jal func0f0926bc
|
|
/* f1a0190: afa20118 */ sw $v0,0x118($sp)
|
|
/* f1a0194: 8fa80118 */ lw $t0,0x118($sp)
|
|
.L0f1a0198:
|
|
/* f1a0198: c5100004 */ lwc1 $f16,0x4($t0)
|
|
.L0f1a019c:
|
|
/* f1a019c: 240e0002 */ addiu $t6,$zero,0x2
|
|
/* f1a01a0: 02402025 */ or $a0,$s2,$zero
|
|
/* f1a01a4: e7b00010 */ swc1 $f16,0x10($sp)
|
|
/* f1a01a8: c5120008 */ lwc1 $f18,0x8($t0)
|
|
/* f1a01ac: 2665001c */ addiu $a1,$s3,0x1c
|
|
/* f1a01b0: 26660028 */ addiu $a2,$s3,0x28
|
|
/* f1a01b4: e7b20014 */ swc1 $f18,0x14($sp)
|
|
/* f1a01b8: c504000c */ lwc1 $f4,0xc($t0)
|
|
/* f1a01bc: 26670034 */ addiu $a3,$s3,0x34
|
|
/* f1a01c0: e7a40018 */ swc1 $f4,0x18($sp)
|
|
/* f1a01c4: c5060010 */ lwc1 $f6,0x10($t0)
|
|
/* f1a01c8: afb10024 */ sw $s1,0x24($sp)
|
|
/* f1a01cc: afae0020 */ sw $t6,0x20($sp)
|
|
/* f1a01d0: 0fc54208 */ jal func0f150820
|
|
/* f1a01d4: e7a6001c */ swc1 $f6,0x1c($sp)
|
|
/* f1a01d8: 92af0455 */ lbu $t7,0x455($s5)
|
|
/* f1a01dc: 24070005 */ addiu $a3,$zero,0x5
|
|
/* f1a01e0: 25f80001 */ addiu $t8,$t7,0x1
|
|
/* f1a01e4: a2b80455 */ sb $t8,0x455($s5)
|
|
/* f1a01e8: 92190040 */ lbu $t9,0x40($s0)
|
|
/* f1a01ec: 33290020 */ andi $t1,$t9,0x20
|
|
/* f1a01f0: 51200008 */ beqzl $t1,.L0f1a0214
|
|
/* f1a01f4: 920b0010 */ lbu $t3,0x10($s0)
|
|
/* f1a01f8: 8e040014 */ lw $a0,0x14($s0)
|
|
/* f1a01fc: 240a0001 */ addiu $t2,$zero,0x1
|
|
/* f1a0200: afaa0010 */ sw $t2,0x10($sp)
|
|
/* f1a0204: 24850008 */ addiu $a1,$a0,0x8
|
|
/* f1a0208: 0fc4a640 */ jal explosionCreateSimple
|
|
/* f1a020c: 24860028 */ addiu $a2,$a0,0x28
|
|
/* f1a0210: 920b0010 */ lbu $t3,0x10($s0)
|
|
.L0f1a0214:
|
|
/* f1a0214: a2000043 */ sb $zero,0x43($s0)
|
|
/* f1a0218: 3c010008 */ lui $at,0x8
|
|
/* f1a021c: 316effbf */ andi $t6,$t3,0xffbf
|
|
/* f1a0220: a20e0010 */ sb $t6,0x10($s0)
|
|
/* f1a0224: 35cf0020 */ ori $t7,$t6,0x20
|
|
/* f1a0228: a20f0010 */ sb $t7,0x10($s0)
|
|
/* f1a022c: 8e78000c */ lw $t8,0xc($s3)
|
|
/* f1a0230: 02602025 */ or $a0,$s3,$zero
|
|
/* f1a0234: 24050001 */ addiu $a1,$zero,0x1
|
|
/* f1a0238: 0301c825 */ or $t9,$t8,$at
|
|
/* f1a023c: ae79000c */ sw $t9,0xc($s3)
|
|
/* f1a0240: e6360008 */ swc1 $f22,0x8($s1)
|
|
/* f1a0244: 3c017f1c */ lui $at,%hi(var7f1b94cc)
|
|
/* f1a0248: c42894cc */ lwc1 $f8,%lo(var7f1b94cc)($at)
|
|
/* f1a024c: e6360010 */ swc1 $f22,0x10($s1)
|
|
/* f1a0250: 00003025 */ or $a2,$zero,$zero
|
|
/* f1a0254: 0fc1a71c */ jal func0f069c70
|
|
/* f1a0258: e628000c */ swc1 $f8,0xc($s1)
|
|
/* f1a025c: 3c03800b */ lui $v1,%hi(g_FiringRangeData)
|
|
/* f1a0260: 2463cd20 */ addiu $v1,$v1,%lo(g_FiringRangeData)
|
|
/* f1a0264: 8c620010 */ lw $v0,0x10($v1)
|
|
.L0f1a0268:
|
|
/* f1a0268: 00025080 */ sll $t2,$v0,0x2
|
|
/* f1a026c: 05400010 */ bltz $t2,.L0f1a02b0
|
|
/* f1a0270: 00025fc2 */ srl $t3,$v0,0x1f
|
|
/* f1a0274: 1160000e */ beqz $t3,.L0f1a02b0
|
|
/* f1a0278: 00026840 */ sll $t5,$v0,0x1
|
|
/* f1a027c: 05a2000d */ bltzl $t5,.L0f1a02b4
|
|
/* f1a0280: 2463003c */ addiu $v1,$v1,60
|
|
/* f1a0284: 8c6e0014 */ lw $t6,0x14($v1)
|
|
/* f1a0288: 90780010 */ lbu $t8,0x10($v1)
|
|
/* f1a028c: 3c01fff7 */ lui $at,0xfff7
|
|
/* f1a0290: 8dc20004 */ lw $v0,0x4($t6)
|
|
/* f1a0294: 37190040 */ ori $t9,$t8,0x40
|
|
/* f1a0298: a0790010 */ sb $t9,0x10($v1)
|
|
/* f1a029c: 8c49000c */ lw $t1,0xc($v0)
|
|
/* f1a02a0: 3421ffff */ ori $at,$at,0xffff
|
|
/* f1a02a4: 01215024 */ and $t2,$t1,$at
|
|
/* f1a02a8: 10000004 */ b .L0f1a02bc
|
|
/* f1a02ac: ac4a000c */ sw $t2,0xc($v0)
|
|
.L0f1a02b0:
|
|
/* f1a02b0: 2463003c */ addiu $v1,$v1,60
|
|
.L0f1a02b4:
|
|
/* f1a02b4: 5474ffec */ bnel $v1,$s4,.L0f1a0268
|
|
/* f1a02b8: 8c620010 */ lw $v0,0x10($v1)
|
|
.L0f1a02bc:
|
|
/* f1a02bc: 3c0b800b */ lui $t3,%hi(g_FiringRangeData+0x438)
|
|
/* f1a02c0: 256bd158 */ addiu $t3,$t3,%lo(g_FiringRangeData+0x438)
|
|
/* f1a02c4: 2610003c */ addiu $s0,$s0,0x3c
|
|
/* f1a02c8: 020b082b */ sltu $at,$s0,$t3
|
|
/* f1a02cc: 5420ff24 */ bnezl $at,.L0f19ff60
|
|
/* f1a02d0: 8e020010 */ lw $v0,0x10($s0)
|
|
/* f1a02d4: 92a30004 */ lbu $v1,0x4($s5)
|
|
/* f1a02d8: 240100ff */ addiu $at,$zero,0xff
|
|
/* f1a02dc: 5461000f */ bnel $v1,$at,.L0f1a031c
|
|
/* f1a02e0: 92a20455 */ lbu $v0,0x455($s5)
|
|
/* f1a02e4: 96a20002 */ lhu $v0,0x2($s5)
|
|
/* f1a02e8: 10400009 */ beqz $v0,.L0f1a0310
|
|
/* f1a02ec: 00000000 */ nop
|
|
/* f1a02f0: 8eac0450 */ lw $t4,0x450($s5)
|
|
/* f1a02f4: 0182082a */ slt $at,$t4,$v0
|
|
/* f1a02f8: 14200005 */ bnez $at,.L0f1a0310
|
|
/* f1a02fc: 00000000 */ nop
|
|
/* f1a0300: 0fc67c63 */ jal func0f19f18c
|
|
/* f1a0304: 00000000 */ nop
|
|
/* f1a0308: 1000017a */ b .L0f1a08f4
|
|
/* f1a030c: 8fbf007c */ lw $ra,0x7c($sp)
|
|
.L0f1a0310:
|
|
/* f1a0310: 10000010 */ b .L0f1a0354
|
|
/* f1a0314: 92a20455 */ lbu $v0,0x455($s5)
|
|
/* f1a0318: 92a20455 */ lbu $v0,0x455($s5)
|
|
.L0f1a031c:
|
|
/* f1a031c: 0043082a */ slt $at,$v0,$v1
|
|
/* f1a0320: 5420000d */ bnezl $at,.L0f1a0358
|
|
/* f1a0324: 92ae0454 */ lbu $t6,0x454($s5)
|
|
/* f1a0328: 96a30002 */ lhu $v1,0x2($s5)
|
|
/* f1a032c: 10600005 */ beqz $v1,.L0f1a0344
|
|
/* f1a0330: 00000000 */ nop
|
|
/* f1a0334: 8ead0450 */ lw $t5,0x450($s5)
|
|
/* f1a0338: 01a3082a */ slt $at,$t5,$v1
|
|
/* f1a033c: 54200006 */ bnezl $at,.L0f1a0358
|
|
/* f1a0340: 92ae0454 */ lbu $t6,0x454($s5)
|
|
.L0f1a0344:
|
|
/* f1a0344: 0fc67c63 */ jal func0f19f18c
|
|
/* f1a0348: 00000000 */ nop
|
|
/* f1a034c: 10000169 */ b .L0f1a08f4
|
|
/* f1a0350: 8fbf007c */ lw $ra,0x7c($sp)
|
|
.L0f1a0354:
|
|
/* f1a0354: 92ae0454 */ lbu $t6,0x454($s5)
|
|
.L0f1a0358:
|
|
/* f1a0358: 004e082a */ slt $at,$v0,$t6
|
|
/* f1a035c: 14200005 */ bnez $at,.L0f1a0374
|
|
/* f1a0360: 00000000 */ nop
|
|
/* f1a0364: 0fc67c49 */ jal frSetFailReason
|
|
/* f1a0368: 24040003 */ addiu $a0,$zero,0x3
|
|
/* f1a036c: 10000161 */ b .L0f1a08f4
|
|
/* f1a0370: 8fbf007c */ lw $ra,0x7c($sp)
|
|
.L0f1a0374:
|
|
/* f1a0374: 0fc67d49 */ jal func0f19f524
|
|
/* f1a0378: 00000000 */ nop
|
|
/* f1a037c: 50400006 */ beqzl $v0,.L0f1a0398
|
|
/* f1a0380: 92a20005 */ lbu $v0,0x5($s5)
|
|
/* f1a0384: 0fc67c49 */ jal frSetFailReason
|
|
/* f1a0388: 24040001 */ addiu $a0,$zero,0x1
|
|
/* f1a038c: 10000159 */ b .L0f1a08f4
|
|
/* f1a0390: 8fbf007c */ lw $ra,0x7c($sp)
|
|
/* f1a0394: 92a20005 */ lbu $v0,0x5($s5)
|
|
.L0f1a0398:
|
|
/* f1a0398: 240100ff */ addiu $at,$zero,0xff
|
|
/* f1a039c: 00009025 */ or $s2,$zero,$zero
|
|
/* f1a03a0: 1041000b */ beq $v0,$at,.L0f1a03d0
|
|
/* f1a03a4: 0002c100 */ sll $t8,$v0,0x4
|
|
/* f1a03a8: 8eaf044c */ lw $t7,0x44c($s5)
|
|
/* f1a03ac: 0302c023 */ subu $t8,$t8,$v0
|
|
/* f1a03b0: 0018c080 */ sll $t8,$t8,0x2
|
|
/* f1a03b4: 01f8082a */ slt $at,$t7,$t8
|
|
/* f1a03b8: 14200005 */ bnez $at,.L0f1a03d0
|
|
/* f1a03bc: 00000000 */ nop
|
|
/* f1a03c0: 0fc67c49 */ jal frSetFailReason
|
|
/* f1a03c4: 24040002 */ addiu $a0,$zero,0x2
|
|
/* f1a03c8: 1000014a */ b .L0f1a08f4
|
|
/* f1a03cc: 8fbf007c */ lw $ra,0x7c($sp)
|
|
.L0f1a03d0:
|
|
/* f1a03d0: 3c10800b */ lui $s0,%hi(g_FiringRangeData)
|
|
/* f1a03d4: 3c017f1c */ lui $at,%hi(var7f1b94d0)
|
|
/* f1a03d8: c43494d0 */ lwc1 $f20,%lo(var7f1b94d0)($at)
|
|
/* f1a03dc: 2610cd20 */ addiu $s0,$s0,%lo(g_FiringRangeData)
|
|
/* f1a03e0: 27b50098 */ addiu $s5,$sp,0x98
|
|
/* f1a03e4: 27b400bc */ addiu $s4,$sp,0xbc
|
|
.L0f1a03e8:
|
|
/* f1a03e8: 8e020010 */ lw $v0,0x10($s0)
|
|
/* f1a03ec: 0002cfc2 */ srl $t9,$v0,0x1f
|
|
/* f1a03f0: 1320013b */ beqz $t9,.L0f1a08e0
|
|
/* f1a03f4: 00025080 */ sll $t2,$v0,0x2
|
|
/* f1a03f8: 05400139 */ bltz $t2,.L0f1a08e0
|
|
/* f1a03fc: 00026040 */ sll $t4,$v0,0x1
|
|
/* f1a0400: 05830138 */ bgezl $t4,.L0f1a08e4
|
|
/* f1a0404: 26520001 */ addiu $s2,$s2,0x1
|
|
/* f1a0408: 920d0043 */ lbu $t5,0x43($s0)
|
|
/* f1a040c: 8e110014 */ lw $s1,0x14($s0)
|
|
/* f1a0410: 11a00089 */ beqz $t5,.L0f1a0638
|
|
/* f1a0414: 8e330004 */ lw $s3,0x4($s1)
|
|
/* f1a0418: c60a002c */ lwc1 $f10,0x2c($s0)
|
|
/* f1a041c: 3c013f80 */ lui $at,0x3f80
|
|
/* f1a0420: 44817000 */ mtc1 $at,$f14
|
|
/* f1a0424: 460ac032 */ c.eq.s $f24,$f10
|
|
/* f1a0428: 240e0001 */ addiu $t6,$zero,0x1
|
|
/* f1a042c: 3c01c000 */ lui $at,0xc000
|
|
/* f1a0430: 45020006 */ bc1fl .L0f1a044c
|
|
/* f1a0434: c6100018 */ lwc1 $f16,0x18($s0)
|
|
/* f1a0438: 44816000 */ mtc1 $at,$f12
|
|
/* f1a043c: a20e0042 */ sb $t6,0x42($s0)
|
|
/* f1a0440: 10000043 */ b .L0f1a0550
|
|
/* f1a0444: a2000043 */ sb $zero,0x43($s0)
|
|
/* f1a0448: c6100018 */ lwc1 $f16,0x18($s0)
|
|
.L0f1a044c:
|
|
/* f1a044c: c6320008 */ lwc1 $f18,0x8($s1)
|
|
/* f1a0450: c606001c */ lwc1 $f6,0x1c($s0)
|
|
/* f1a0454: 46128101 */ sub.s $f4,$f16,$f18
|
|
/* f1a0458: c6100020 */ lwc1 $f16,0x20($s0)
|
|
/* f1a045c: e7a40158 */ swc1 $f4,0x158($sp)
|
|
/* f1a0460: c628000c */ lwc1 $f8,0xc($s1)
|
|
/* f1a0464: 46083281 */ sub.s $f10,$f6,$f8
|
|
/* f1a0468: c7a60158 */ lwc1 $f6,0x158($sp)
|
|
/* f1a046c: e7aa015c */ swc1 $f10,0x15c($sp)
|
|
/* f1a0470: c6320010 */ lwc1 $f18,0x10($s1)
|
|
/* f1a0474: 46063202 */ mul.s $f8,$f6,$f6
|
|
/* f1a0478: c7aa015c */ lwc1 $f10,0x15c($sp)
|
|
/* f1a047c: 46128101 */ sub.s $f4,$f16,$f18
|
|
/* f1a0480: e7ae0110 */ swc1 $f14,0x110($sp)
|
|
/* f1a0484: 460a5402 */ mul.s $f16,$f10,$f10
|
|
/* f1a0488: e7a40160 */ swc1 $f4,0x160($sp)
|
|
/* f1a048c: c7a40160 */ lwc1 $f4,0x160($sp)
|
|
/* f1a0490: 46042182 */ mul.s $f6,$f4,$f4
|
|
/* f1a0494: 46104480 */ add.s $f18,$f8,$f16
|
|
/* f1a0498: 0c012974 */ jal sqrtf
|
|
/* f1a049c: 46123300 */ add.s $f12,$f6,$f18
|
|
/* f1a04a0: 46160032 */ c.eq.s $f0,$f22
|
|
/* f1a04a4: c7ae0110 */ lwc1 $f14,0x110($sp)
|
|
/* f1a04a8: 46000306 */ mov.s $f12,$f0
|
|
/* f1a04ac: 3c01c000 */ lui $at,0xc000
|
|
/* f1a04b0: 45030026 */ bc1tl .L0f1a054c
|
|
/* f1a04b4: 44816000 */ mtc1 $at,$f12
|
|
/* f1a04b8: 3c013e80 */ lui $at,0x3e80
|
|
/* f1a04bc: 44813000 */ mtc1 $at,$f6
|
|
/* f1a04c0: 3c013f80 */ lui $at,0x3f80
|
|
/* f1a04c4: 44819000 */ mtc1 $at,$f18
|
|
/* f1a04c8: 8ecf0034 */ lw $t7,0x34($s6)
|
|
/* f1a04cc: c60a002c */ lwc1 $f10,0x2c($s0)
|
|
/* f1a04d0: 46009083 */ div.s $f2,$f18,$f0
|
|
/* f1a04d4: 448f4000 */ mtc1 $t7,$f8
|
|
/* f1a04d8: 00000000 */ nop
|
|
/* f1a04dc: 46804420 */ cvt.s.w $f16,$f8
|
|
/* f1a04e0: c7a80158 */ lwc1 $f8,0x158($sp)
|
|
/* f1a04e4: 46105102 */ mul.s $f4,$f10,$f16
|
|
/* f1a04e8: c7b0015c */ lwc1 $f16,0x15c($sp)
|
|
/* f1a04ec: 46062382 */ mul.s $f14,$f4,$f6
|
|
/* f1a04f0: c7a60160 */ lwc1 $f6,0x160($sp)
|
|
/* f1a04f4: 46024282 */ mul.s $f10,$f8,$f2
|
|
/* f1a04f8: 00000000 */ nop
|
|
/* f1a04fc: 46028102 */ mul.s $f4,$f16,$f2
|
|
/* f1a0500: 00000000 */ nop
|
|
/* f1a0504: 46023482 */ mul.s $f18,$f6,$f2
|
|
/* f1a0508: e7aa0158 */ swc1 $f10,0x158($sp)
|
|
/* f1a050c: 460e5202 */ mul.s $f8,$f10,$f14
|
|
/* f1a0510: e7a4015c */ swc1 $f4,0x15c($sp)
|
|
/* f1a0514: 460e2282 */ mul.s $f10,$f4,$f14
|
|
/* f1a0518: e7b20160 */ swc1 $f18,0x160($sp)
|
|
/* f1a051c: c6300008 */ lwc1 $f16,0x8($s1)
|
|
/* f1a0520: 46104180 */ add.s $f6,$f8,$f16
|
|
/* f1a0524: e7a6014c */ swc1 $f6,0x14c($sp)
|
|
/* f1a0528: c628000c */ lwc1 $f8,0xc($s1)
|
|
/* f1a052c: 460e9182 */ mul.s $f6,$f18,$f14
|
|
/* f1a0530: 46085400 */ add.s $f16,$f10,$f8
|
|
/* f1a0534: e7b00150 */ swc1 $f16,0x150($sp)
|
|
/* f1a0538: c6240010 */ lwc1 $f4,0x10($s1)
|
|
/* f1a053c: 46043280 */ add.s $f10,$f6,$f4
|
|
/* f1a0540: 10000003 */ b .L0f1a0550
|
|
/* f1a0544: e7aa0154 */ swc1 $f10,0x154($sp)
|
|
/* f1a0548: 44816000 */ mtc1 $at,$f12
|
|
.L0f1a054c:
|
|
/* f1a054c: 00000000 */ nop
|
|
.L0f1a0550:
|
|
/* f1a0550: 460e603e */ c.le.s $f12,$f14
|
|
/* f1a0554: 00000000 */ nop
|
|
/* f1a0558: 4502002d */ bc1fl .L0f1a0610
|
|
/* f1a055c: c7a6014c */ lwc1 $f6,0x14c($sp)
|
|
/* f1a0560: 92190010 */ lbu $t9,0x10($s0)
|
|
/* f1a0564: 920a0042 */ lbu $t2,0x42($s0)
|
|
/* f1a0568: c6080018 */ lwc1 $f8,0x18($s0)
|
|
/* f1a056c: c610001c */ lwc1 $f16,0x1c($s0)
|
|
/* f1a0570: c6120020 */ lwc1 $f18,0x20($s0)
|
|
/* f1a0574: 37290010 */ ori $t1,$t9,0x10
|
|
/* f1a0578: a2090010 */ sb $t1,0x10($s0)
|
|
/* f1a057c: a2000043 */ sb $zero,0x43($s0)
|
|
/* f1a0580: e7a8014c */ swc1 $f8,0x14c($sp)
|
|
/* f1a0584: e7b00150 */ swc1 $f16,0x150($sp)
|
|
/* f1a0588: 15400020 */ bnez $t2,.L0f1a060c
|
|
/* f1a058c: e7b20154 */ swc1 $f18,0x154($sp)
|
|
/* f1a0590: 3c028009 */ lui $v0,%hi(var8008880c)
|
|
/* f1a0594: 2442880c */ addiu $v0,$v0,%lo(var8008880c)
|
|
/* f1a0598: 90430000 */ lbu $v1,0x0($v0)
|
|
/* f1a059c: 240b0001 */ addiu $t3,$zero,0x1
|
|
/* f1a05a0: a20b0042 */ sb $t3,0x42($s0)
|
|
/* f1a05a4: 10600003 */ beqz $v1,.L0f1a05b4
|
|
/* f1a05a8: 02202025 */ or $a0,$s1,$zero
|
|
/* f1a05ac: 246cffff */ addiu $t4,$v1,-1
|
|
/* f1a05b0: a04c0000 */ sb $t4,0x0($v0)
|
|
.L0f1a05b4:
|
|
/* f1a05b4: 24050001 */ addiu $a1,$zero,0x1
|
|
/* f1a05b8: 0fc249af */ jal func0f0926bc
|
|
/* f1a05bc: 3406ffff */ dli $a2,0xffff
|
|
/* f1a05c0: 240dffff */ addiu $t5,$zero,-1
|
|
/* f1a05c4: 240e0400 */ addiu $t6,$zero,0x400
|
|
/* f1a05c8: 240fffff */ addiu $t7,$zero,-1
|
|
/* f1a05cc: afaf002c */ sw $t7,0x2c($sp)
|
|
/* f1a05d0: afae0014 */ sw $t6,0x14($sp)
|
|
/* f1a05d4: afad0010 */ sw $t5,0x10($sp)
|
|
/* f1a05d8: 00002025 */ or $a0,$zero,$zero
|
|
/* f1a05dc: 02202825 */ or $a1,$s1,$zero
|
|
/* f1a05e0: 240605da */ addiu $a2,$zero,0x5da
|
|
/* f1a05e4: 2407ffff */ addiu $a3,$zero,-1
|
|
/* f1a05e8: afa00018 */ sw $zero,0x18($sp)
|
|
/* f1a05ec: afa0001c */ sw $zero,0x1c($sp)
|
|
/* f1a05f0: afa00020 */ sw $zero,0x20($sp)
|
|
/* f1a05f4: e7b80024 */ swc1 $f24,0x24($sp)
|
|
/* f1a05f8: afa00028 */ sw $zero,0x28($sp)
|
|
/* f1a05fc: e7b80030 */ swc1 $f24,0x30($sp)
|
|
/* f1a0600: e7b80034 */ swc1 $f24,0x34($sp)
|
|
/* f1a0604: 0fc24e7e */ jal func0f0939f8
|
|
/* f1a0608: e7b80038 */ swc1 $f24,0x38($sp)
|
|
.L0f1a060c:
|
|
/* f1a060c: c7a6014c */ lwc1 $f6,0x14c($sp)
|
|
.L0f1a0610:
|
|
/* f1a0610: 02602025 */ or $a0,$s3,$zero
|
|
/* f1a0614: 24050001 */ addiu $a1,$zero,0x1
|
|
/* f1a0618: e6260008 */ swc1 $f6,0x8($s1)
|
|
/* f1a061c: c7a40150 */ lwc1 $f4,0x150($sp)
|
|
/* f1a0620: 00003025 */ or $a2,$zero,$zero
|
|
/* f1a0624: e624000c */ swc1 $f4,0xc($s1)
|
|
/* f1a0628: c7aa0154 */ lwc1 $f10,0x154($sp)
|
|
/* f1a062c: 0fc1a71c */ jal func0f069c70
|
|
/* f1a0630: e62a0010 */ swc1 $f10,0x10($s1)
|
|
/* f1a0634: 8e020010 */ lw $v0,0x10($s0)
|
|
.L0f1a0638:
|
|
/* f1a0638: 0002c940 */ sll $t9,$v0,0x5
|
|
/* f1a063c: 07210033 */ bgez $t9,.L0f1a070c
|
|
/* f1a0640: 00025100 */ sll $t2,$v0,0x4
|
|
/* f1a0644: 05420032 */ bltzl $t2,.L0f1a0710
|
|
/* f1a0648: 00027100 */ sll $t6,$v0,0x4
|
|
/* f1a064c: 8e020028 */ lw $v0,0x28($s0)
|
|
/* f1a0650: 54400025 */ bnezl $v0,.L0f1a06e8
|
|
/* f1a0654: 8ed80038 */ lw $t8,0x38($s6)
|
|
/* f1a0658: 8ecb0284 */ lw $t3,0x284($s6)
|
|
/* f1a065c: 3c017f1c */ lui $at,%hi(var7f1b94d4)
|
|
/* f1a0660: 8d6c00bc */ lw $t4,0xbc($t3)
|
|
/* f1a0664: 8d820004 */ lw $v0,0x4($t4)
|
|
/* f1a0668: 8c430014 */ lw $v1,0x14($v0)
|
|
/* f1a066c: 00036880 */ sll $t5,$v1,0x2
|
|
/* f1a0670: 05a3000f */ bgezl $t5,.L0f1a06b0
|
|
/* f1a0674: c6060038 */ lwc1 $f6,0x38($s0)
|
|
/* f1a0678: c42894d4 */ lwc1 $f8,%lo(var7f1b94d4)($at)
|
|
/* f1a067c: c6100038 */ lwc1 $f16,0x38($s0)
|
|
/* f1a0680: 240e003c */ addiu $t6,$zero,0x3c
|
|
/* f1a0684: 3c017f1c */ lui $at,%hi(var7f1b94d8)
|
|
/* f1a0688: 46104032 */ c.eq.s $f8,$f16
|
|
/* f1a068c: 00000000 */ nop
|
|
/* f1a0690: 4500001c */ bc1f .L0f1a0704
|
|
/* f1a0694: 00000000 */ nop
|
|
/* f1a0698: ae0e0028 */ sw $t6,0x28($s0)
|
|
/* f1a069c: e616003c */ swc1 $f22,0x3c($s0)
|
|
/* f1a06a0: c43294d8 */ lwc1 $f18,%lo(var7f1b94d8)($at)
|
|
/* f1a06a4: 10000017 */ b .L0f1a0704
|
|
/* f1a06a8: e6120034 */ swc1 $f18,0x34($s0)
|
|
/* f1a06ac: c6060038 */ lwc1 $f6,0x38($s0)
|
|
.L0f1a06b0:
|
|
/* f1a06b0: 240f003c */ addiu $t7,$zero,0x3c
|
|
/* f1a06b4: 3c017f1c */ lui $at,%hi(var7f1b94dc)
|
|
/* f1a06b8: 4606b032 */ c.eq.s $f22,$f6
|
|
/* f1a06bc: 00000000 */ nop
|
|
/* f1a06c0: 45000010 */ bc1f .L0f1a0704
|
|
/* f1a06c4: 00000000 */ nop
|
|
/* f1a06c8: ae0f0028 */ sw $t7,0x28($s0)
|
|
/* f1a06cc: c42494dc */ lwc1 $f4,%lo(var7f1b94dc)($at)
|
|
/* f1a06d0: 3c017f1c */ lui $at,%hi(var7f1b94e0)
|
|
/* f1a06d4: e604003c */ swc1 $f4,0x3c($s0)
|
|
/* f1a06d8: c42a94e0 */ lwc1 $f10,%lo(var7f1b94e0)($at)
|
|
/* f1a06dc: 10000009 */ b .L0f1a0704
|
|
/* f1a06e0: e60a0034 */ swc1 $f10,0x34($s0)
|
|
/* f1a06e4: 8ed80038 */ lw $t8,0x38($s6)
|
|
.L0f1a06e8:
|
|
/* f1a06e8: 0058c823 */ subu $t9,$v0,$t8
|
|
/* f1a06ec: 1f200005 */ bgtz $t9,.L0f1a0704
|
|
/* f1a06f0: ae190028 */ sw $t9,0x28($s0)
|
|
/* f1a06f4: 920b0010 */ lbu $t3,0x10($s0)
|
|
/* f1a06f8: ae000028 */ sw $zero,0x28($s0)
|
|
/* f1a06fc: 356c0008 */ ori $t4,$t3,0x8
|
|
/* f1a0700: a20c0010 */ sb $t4,0x10($s0)
|
|
.L0f1a0704:
|
|
/* f1a0704: 10000054 */ b .L0f1a0858
|
|
/* f1a0708: 8e020010 */ lw $v0,0x10($s0)
|
|
.L0f1a070c:
|
|
/* f1a070c: 00027100 */ sll $t6,$v0,0x4
|
|
.L0f1a0710:
|
|
/* f1a0710: 05c30052 */ bgezl $t6,.L0f1a085c
|
|
/* f1a0714: 0002c0c0 */ sll $t8,$v0,0x3
|
|
/* f1a0718: c60c003c */ lwc1 $f12,0x3c($s0)
|
|
/* f1a071c: c6000038 */ lwc1 $f0,0x38($s0)
|
|
/* f1a0720: c60e0034 */ lwc1 $f14,0x34($s0)
|
|
/* f1a0724: 00001025 */ or $v0,$zero,$zero
|
|
/* f1a0728: 460c003c */ c.lt.s $f0,$f12
|
|
/* f1a072c: 46006086 */ mov.s $f2,$f12
|
|
/* f1a0730: 45020003 */ bc1fl .L0f1a0740
|
|
/* f1a0734: 8ed80034 */ lw $t8,0x34($s6)
|
|
/* f1a0738: 24020001 */ addiu $v0,$zero,0x1
|
|
/* f1a073c: 8ed80034 */ lw $t8,0x34($s6)
|
|
.L0f1a0740:
|
|
/* f1a0740: 3c013e80 */ lui $at,0x3e80
|
|
/* f1a0744: 44813000 */ mtc1 $at,$f6
|
|
/* f1a0748: 44984000 */ mtc1 $t8,$f8
|
|
/* f1a074c: 304f00ff */ andi $t7,$v0,0xff
|
|
/* f1a0750: 01e01025 */ or $v0,$t7,$zero
|
|
/* f1a0754: 46804420 */ cvt.s.w $f16,$f8
|
|
/* f1a0758: 00001825 */ or $v1,$zero,$zero
|
|
/* f1a075c: 3c017f1c */ lui $at,%hi(var7f1b94e4)
|
|
/* f1a0760: 46107482 */ mul.s $f18,$f14,$f16
|
|
/* f1a0764: 00000000 */ nop
|
|
/* f1a0768: 46069102 */ mul.s $f4,$f18,$f6
|
|
/* f1a076c: 46040280 */ add.s $f10,$f0,$f4
|
|
/* f1a0770: e60a0038 */ swc1 $f10,0x38($s0)
|
|
/* f1a0774: c6000038 */ lwc1 $f0,0x38($s0)
|
|
/* f1a0778: 4602003c */ c.lt.s $f0,$f2
|
|
/* f1a077c: 00000000 */ nop
|
|
/* f1a0780: 45000002 */ bc1f .L0f1a078c
|
|
/* f1a0784: 00000000 */ nop
|
|
/* f1a0788: 24030001 */ addiu $v1,$zero,0x1
|
|
.L0f1a078c:
|
|
/* f1a078c: 307900ff */ andi $t9,$v1,0xff
|
|
/* f1a0790: 57220006 */ bnel $t9,$v0,.L0f1a07ac
|
|
/* f1a0794: 92090010 */ lbu $t1,0x10($s0)
|
|
/* f1a0798: 46001032 */ c.eq.s $f2,$f0
|
|
/* f1a079c: 00000000 */ nop
|
|
/* f1a07a0: 4500001e */ bc1f .L0f1a081c
|
|
/* f1a07a4: 00000000 */ nop
|
|
/* f1a07a8: 92090010 */ lbu $t1,0x10($s0)
|
|
.L0f1a07ac:
|
|
/* f1a07ac: 460ca03c */ c.lt.s $f20,$f12
|
|
/* f1a07b0: e60c0038 */ swc1 $f12,0x38($s0)
|
|
/* f1a07b4: 312cfff7 */ andi $t4,$t1,0xfff7
|
|
/* f1a07b8: a20c0010 */ sb $t4,0x10($s0)
|
|
/* f1a07bc: 358d0010 */ ori $t5,$t4,0x10
|
|
/* f1a07c0: a20d0010 */ sb $t5,0x10($s0)
|
|
/* f1a07c4: 45000009 */ bc1f .L0f1a07ec
|
|
/* f1a07c8: ae000024 */ sw $zero,0x24($s0)
|
|
/* f1a07cc: c6000038 */ lwc1 $f0,0x38($s0)
|
|
/* f1a07d0: 46140201 */ sub.s $f8,$f0,$f20
|
|
.L0f1a07d4:
|
|
/* f1a07d4: e6080038 */ swc1 $f8,0x38($s0)
|
|
/* f1a07d8: c6000038 */ lwc1 $f0,0x38($s0)
|
|
/* f1a07dc: 4600a03c */ c.lt.s $f20,$f0
|
|
/* f1a07e0: 00000000 */ nop
|
|
/* f1a07e4: 4503fffb */ bc1tl .L0f1a07d4
|
|
/* f1a07e8: 46140201 */ sub.s $f8,$f0,$f20
|
|
.L0f1a07ec:
|
|
/* f1a07ec: c6000038 */ lwc1 $f0,0x38($s0)
|
|
/* f1a07f0: 4616003c */ c.lt.s $f0,$f22
|
|
/* f1a07f4: 00000000 */ nop
|
|
/* f1a07f8: 45000008 */ bc1f .L0f1a081c
|
|
/* f1a07fc: 00000000 */ nop
|
|
/* f1a0800: 46140400 */ add.s $f16,$f0,$f20
|
|
.L0f1a0804:
|
|
/* f1a0804: e6100038 */ swc1 $f16,0x38($s0)
|
|
/* f1a0808: c6000038 */ lwc1 $f0,0x38($s0)
|
|
/* f1a080c: 4616003c */ c.lt.s $f0,$f22
|
|
/* f1a0810: 00000000 */ nop
|
|
/* f1a0814: 4503fffb */ bc1tl .L0f1a0804
|
|
/* f1a0818: 46140400 */ add.s $f16,$f0,$f20
|
|
.L0f1a081c:
|
|
/* f1a081c: c43294e4 */ lwc1 $f18,%lo(var7f1b94e4)($at)
|
|
/* f1a0820: 02802825 */ or $a1,$s4,$zero
|
|
/* f1a0824: 0c0058dd */ jal func00016374
|
|
/* f1a0828: 46120300 */ add.s $f12,$f0,$f18
|
|
/* f1a082c: 8e6e0018 */ lw $t6,0x18($s3)
|
|
/* f1a0830: 02802825 */ or $a1,$s4,$zero
|
|
/* f1a0834: 0c0057c1 */ jal func00015f04
|
|
/* f1a0838: c5cc0014 */ lwc1 $f12,0x14($t6)
|
|
/* f1a083c: 02802025 */ or $a0,$s4,$zero
|
|
/* f1a0840: 0c005768 */ jal func00015da0
|
|
/* f1a0844: 02a02825 */ or $a1,$s5,$zero
|
|
/* f1a0848: 02a02025 */ or $a0,$s5,$zero
|
|
/* f1a084c: 0c005736 */ jal func00015cd8
|
|
/* f1a0850: 2665001c */ addiu $a1,$s3,0x1c
|
|
/* f1a0854: 8e020010 */ lw $v0,0x10($s0)
|
|
.L0f1a0858:
|
|
/* f1a0858: 0002c0c0 */ sll $t8,$v0,0x3
|
|
.L0f1a085c:
|
|
/* f1a085c: 07030021 */ bgezl $t8,.L0f1a08e4
|
|
/* f1a0860: 26520001 */ addiu $s2,$s2,0x1
|
|
/* f1a0864: 8e020024 */ lw $v0,0x24($s0)
|
|
/* f1a0868: 24013bc4 */ addiu $at,$zero,0x3bc4
|
|
/* f1a086c: 5041001d */ beql $v0,$at,.L0f1a08e4
|
|
/* f1a0870: 26520001 */ addiu $s2,$s2,0x1
|
|
/* f1a0874: 8ed90038 */ lw $t9,0x38($s6)
|
|
/* f1a0878: 00594823 */ subu $t1,$v0,$t9
|
|
/* f1a087c: 1d200018 */ bgtz $t1,.L0f1a08e0
|
|
/* f1a0880: ae090024 */ sw $t1,0x24($s0)
|
|
/* f1a0884: 920b0010 */ lbu $t3,0x10($s0)
|
|
/* f1a0888: 02402025 */ or $a0,$s2,$zero
|
|
/* f1a088c: 316cffef */ andi $t4,$t3,0xffef
|
|
/* f1a0890: 0fc67824 */ jal func0f19e090
|
|
/* f1a0894: a20c0010 */ sb $t4,0x10($s0)
|
|
/* f1a0898: 14400005 */ bnez $v0,.L0f1a08b0
|
|
/* f1a089c: 00000000 */ nop
|
|
.L0f1a08a0:
|
|
/* f1a08a0: 0fc67824 */ jal func0f19e090
|
|
/* f1a08a4: 02402025 */ or $a0,$s2,$zero
|
|
/* f1a08a8: 1040fffd */ beqz $v0,.L0f1a08a0
|
|
/* f1a08ac: 00000000 */ nop
|
|
.L0f1a08b0:
|
|
/* f1a08b0: 0fc677bd */ jal func0f19def4
|
|
/* f1a08b4: 02402025 */ or $a0,$s2,$zero
|
|
/* f1a08b8: 5040000a */ beqzl $v0,.L0f1a08e4
|
|
/* f1a08bc: 26520001 */ addiu $s2,$s2,0x1
|
|
/* f1a08c0: 0fc67824 */ jal func0f19e090
|
|
/* f1a08c4: 02402025 */ or $a0,$s2,$zero
|
|
/* f1a08c8: 54400006 */ bnezl $v0,.L0f1a08e4
|
|
/* f1a08cc: 26520001 */ addiu $s2,$s2,0x1
|
|
.L0f1a08d0:
|
|
/* f1a08d0: 0fc67824 */ jal func0f19e090
|
|
/* f1a08d4: 02402025 */ or $a0,$s2,$zero
|
|
/* f1a08d8: 1040fffd */ beqz $v0,.L0f1a08d0
|
|
/* f1a08dc: 00000000 */ nop
|
|
.L0f1a08e0:
|
|
/* f1a08e0: 26520001 */ addiu $s2,$s2,0x1
|
|
.L0f1a08e4:
|
|
/* f1a08e4: 24010012 */ addiu $at,$zero,0x12
|
|
/* f1a08e8: 1641febf */ bne $s2,$at,.L0f1a03e8
|
|
/* f1a08ec: 2610003c */ addiu $s0,$s0,0x3c
|
|
.L0f1a08f0:
|
|
/* f1a08f0: 8fbf007c */ lw $ra,0x7c($sp)
|
|
.L0f1a08f4:
|
|
/* f1a08f4: d7b40048 */ ldc1 $f20,0x48($sp)
|
|
/* f1a08f8: d7b60050 */ ldc1 $f22,0x50($sp)
|
|
/* f1a08fc: d7b80058 */ ldc1 $f24,0x58($sp)
|
|
/* f1a0900: 8fb00060 */ lw $s0,0x60($sp)
|
|
/* f1a0904: 8fb10064 */ lw $s1,0x64($sp)
|
|
/* f1a0908: 8fb20068 */ lw $s2,0x68($sp)
|
|
/* f1a090c: 8fb3006c */ lw $s3,0x6c($sp)
|
|
/* f1a0910: 8fb40070 */ lw $s4,0x70($sp)
|
|
/* f1a0914: 8fb50074 */ lw $s5,0x74($sp)
|
|
/* f1a0918: 8fb60078 */ lw $s6,0x78($sp)
|
|
/* f1a091c: 03e00008 */ jr $ra
|
|
/* f1a0920: 27bd0170 */ addiu $sp,$sp,0x170
|
|
);
|
|
|
|
void func0f1a0924(struct prop *prop)
|
|
{
|
|
struct defaultobj *obj = prop->obj;
|
|
s32 i;
|
|
|
|
if (obj->modelnum == MODEL_TARGET) {
|
|
f32 sp68;
|
|
f32 sp64;
|
|
f32 sp60;
|
|
f32 sp56;
|
|
|
|
sp64 = -1;
|
|
sp68 = -1;
|
|
sp56 = -2;
|
|
sp60 = -2;
|
|
|
|
modelSetRedBox(obj->model, &sp56, &sp64, &sp60, &sp68);
|
|
|
|
for (i = 0; i < 4; i++) {
|
|
if (g_Vars.currentplayer->cmpfollowprops[i].prop == prop) {
|
|
return;
|
|
}
|
|
|
|
if (g_Vars.currentplayer->cmpfollowprops[i].prop == NULL) {
|
|
g_Vars.currentplayer->cmpfollowprops[i].prop = prop;
|
|
|
|
g_Vars.currentplayer->cmpfollowprops[i].unk04 = sp64 - 2;
|
|
g_Vars.currentplayer->cmpfollowprops[i].unk08 = sp56 + 2;
|
|
g_Vars.currentplayer->cmpfollowprops[i].unk06 = sp68 - 2;
|
|
g_Vars.currentplayer->cmpfollowprops[i].unk0a = sp60 + 2;
|
|
g_Vars.currentplayer->unk1b90[i] = 0;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
GLOBAL_ASM(
|
|
glabel frChooseFarsightTarget
|
|
/* f1a0a70: 27bdffa0 */ addiu $sp,$sp,-96
|
|
/* f1a0a74: f7bc0030 */ sdc1 $f28,0x30($sp)
|
|
/* f1a0a78: 3c013f80 */ lui $at,0x3f80
|
|
/* f1a0a7c: 4481e000 */ mtc1 $at,$f28
|
|
/* f1a0a80: f7be0038 */ sdc1 $f30,0x38($sp)
|
|
/* f1a0a84: 3c01bf80 */ lui $at,0xbf80
|
|
/* f1a0a88: afbf005c */ sw $ra,0x5c($sp)
|
|
/* f1a0a8c: afb50058 */ sw $s5,0x58($sp)
|
|
/* f1a0a90: afb40054 */ sw $s4,0x54($sp)
|
|
/* f1a0a94: 4481f000 */ mtc1 $at,$f30
|
|
/* f1a0a98: afb30050 */ sw $s3,0x50($sp)
|
|
/* f1a0a9c: afb2004c */ sw $s2,0x4c($sp)
|
|
/* f1a0aa0: afb10048 */ sw $s1,0x48($sp)
|
|
/* f1a0aa4: afb00044 */ sw $s0,0x44($sp)
|
|
/* f1a0aa8: f7ba0028 */ sdc1 $f26,0x28($sp)
|
|
/* f1a0aac: f7b80020 */ sdc1 $f24,0x20($sp)
|
|
/* f1a0ab0: f7b60018 */ sdc1 $f22,0x18($sp)
|
|
/* f1a0ab4: f7b40010 */ sdc1 $f20,0x10($sp)
|
|
/* f1a0ab8: 0000a025 */ or $s4,$zero,$zero
|
|
/* f1a0abc: 0000a825 */ or $s5,$zero,$zero
|
|
/* f1a0ac0: 0fc2866a */ jal getCurrentPlayerWeaponId
|
|
/* f1a0ac4: 00002025 */ or $a0,$zero,$zero
|
|
/* f1a0ac8: 24010016 */ addiu $at,$zero,0x16
|
|
/* f1a0acc: 14410042 */ bne $v0,$at,.L0f1a0bd8
|
|
/* f1a0ad0: 3c11800b */ lui $s1,%hi(g_FiringRangeData)
|
|
/* f1a0ad4: 3c13800b */ lui $s3,%hi(g_FiringRangeData+0x438)
|
|
/* f1a0ad8: 3c12800a */ lui $s2,%hi(g_Vars)
|
|
/* f1a0adc: 4480d000 */ mtc1 $zero,$f26
|
|
/* f1a0ae0: 26529fc0 */ addiu $s2,$s2,%lo(g_Vars)
|
|
/* f1a0ae4: 2673d158 */ addiu $s3,$s3,%lo(g_FiringRangeData+0x438)
|
|
/* f1a0ae8: 2631cd20 */ addiu $s1,$s1,%lo(g_FiringRangeData)
|
|
/* f1a0aec: 8e220010 */ lw $v0,0x10($s1)
|
|
.L0f1a0af0:
|
|
/* f1a0af0: 000277c2 */ srl $t6,$v0,0x1f
|
|
/* f1a0af4: 11c00035 */ beqz $t6,.L0f1a0bcc
|
|
/* f1a0af8: 0002c080 */ sll $t8,$v0,0x2
|
|
/* f1a0afc: 07000033 */ bltz $t8,.L0f1a0bcc
|
|
/* f1a0b00: 00024040 */ sll $t0,$v0,0x1
|
|
/* f1a0b04: 05030032 */ bgezl $t0,.L0f1a0bd0
|
|
/* f1a0b08: 2631003c */ addiu $s1,$s1,0x3c
|
|
/* f1a0b0c: 92290040 */ lbu $t1,0x40($s1)
|
|
/* f1a0b10: 312a0040 */ andi $t2,$t1,0x40
|
|
/* f1a0b14: 5140002e */ beqzl $t2,.L0f1a0bd0
|
|
/* f1a0b18: 2631003c */ addiu $s1,$s1,0x3c
|
|
/* f1a0b1c: 8e300014 */ lw $s0,0x14($s1)
|
|
/* f1a0b20: 8e420284 */ lw $v0,0x284($s2)
|
|
/* f1a0b24: c6060008 */ lwc1 $f6,0x8($s0)
|
|
/* f1a0b28: c444037c */ lwc1 $f4,0x37c($v0)
|
|
/* f1a0b2c: c60a000c */ lwc1 $f10,0xc($s0)
|
|
/* f1a0b30: c4480380 */ lwc1 $f8,0x380($v0)
|
|
/* f1a0b34: 46062501 */ sub.s $f20,$f4,$f6
|
|
/* f1a0b38: c6120010 */ lwc1 $f18,0x10($s0)
|
|
/* f1a0b3c: c4500384 */ lwc1 $f16,0x384($v0)
|
|
/* f1a0b40: 460a4581 */ sub.s $f22,$f8,$f10
|
|
/* f1a0b44: 4614a102 */ mul.s $f4,$f20,$f20
|
|
/* f1a0b48: 46128601 */ sub.s $f24,$f16,$f18
|
|
/* f1a0b4c: 4616b182 */ mul.s $f6,$f22,$f22
|
|
/* f1a0b50: 46062200 */ add.s $f8,$f4,$f6
|
|
/* f1a0b54: 4618c282 */ mul.s $f10,$f24,$f24
|
|
/* f1a0b58: 0c012974 */ jal sqrtf
|
|
/* f1a0b5c: 460a4300 */ add.s $f12,$f8,$f10
|
|
/* f1a0b60: 4600d03c */ c.lt.s $f26,$f0
|
|
/* f1a0b64: 00000000 */ nop
|
|
/* f1a0b68: 45020019 */ bc1fl .L0f1a0bd0
|
|
/* f1a0b6c: 2631003c */ addiu $s1,$s1,0x3c
|
|
/* f1a0b70: 8e420284 */ lw $v0,0x284($s2)
|
|
/* f1a0b74: c4500388 */ lwc1 $f16,0x388($v0)
|
|
/* f1a0b78: c444038c */ lwc1 $f4,0x38c($v0)
|
|
/* f1a0b7c: c44a0390 */ lwc1 $f10,0x390($v0)
|
|
/* f1a0b80: 4610a482 */ mul.s $f18,$f20,$f16
|
|
/* f1a0b84: 00000000 */ nop
|
|
/* f1a0b88: 4604b182 */ mul.s $f6,$f22,$f4
|
|
/* f1a0b8c: 46069200 */ add.s $f8,$f18,$f6
|
|
/* f1a0b90: 46185402 */ mul.s $f16,$f10,$f24
|
|
/* f1a0b94: 46088100 */ add.s $f4,$f16,$f8
|
|
/* f1a0b98: 46002083 */ div.s $f2,$f4,$f0
|
|
/* f1a0b9c: 461a103c */ c.lt.s $f2,$f26
|
|
/* f1a0ba0: 00000000 */ nop
|
|
/* f1a0ba4: 45000009 */ bc1f .L0f1a0bcc
|
|
/* f1a0ba8: 00000000 */ nop
|
|
/* f1a0bac: 461c103c */ c.lt.s $f2,$f28
|
|
/* f1a0bb0: 00000000 */ nop
|
|
/* f1a0bb4: 45020006 */ bc1fl .L0f1a0bd0
|
|
/* f1a0bb8: 2631003c */ addiu $s1,$s1,0x3c
|
|
/* f1a0bbc: 46001706 */ mov.s $f28,$f2
|
|
/* f1a0bc0: 0200a025 */ or $s4,$s0,$zero
|
|
/* f1a0bc4: 46000786 */ mov.s $f30,$f0
|
|
/* f1a0bc8: 24150001 */ addiu $s5,$zero,0x1
|
|
.L0f1a0bcc:
|
|
/* f1a0bcc: 2631003c */ addiu $s1,$s1,0x3c
|
|
.L0f1a0bd0:
|
|
/* f1a0bd0: 5633ffc7 */ bnel $s1,$s3,.L0f1a0af0
|
|
/* f1a0bd4: 8e220010 */ lw $v0,0x10($s1)
|
|
.L0f1a0bd8:
|
|
/* f1a0bd8: 3c12800a */ lui $s2,%hi(g_Vars)
|
|
/* f1a0bdc: 26529fc0 */ addiu $s2,$s2,%lo(g_Vars)
|
|
/* f1a0be0: 8e4b0284 */ lw $t3,0x284($s2)
|
|
/* f1a0be4: 02a01025 */ or $v0,$s5,$zero
|
|
/* f1a0be8: e57e0258 */ swc1 $f30,0x258($t3)
|
|
/* f1a0bec: 8e4c0284 */ lw $t4,0x284($s2)
|
|
/* f1a0bf0: ad94025c */ sw $s4,0x25c($t4)
|
|
/* f1a0bf4: 8fbf005c */ lw $ra,0x5c($sp)
|
|
/* f1a0bf8: 8fb50058 */ lw $s5,0x58($sp)
|
|
/* f1a0bfc: 8fb40054 */ lw $s4,0x54($sp)
|
|
/* f1a0c00: 8fb30050 */ lw $s3,0x50($sp)
|
|
/* f1a0c04: 8fb2004c */ lw $s2,0x4c($sp)
|
|
/* f1a0c08: 8fb10048 */ lw $s1,0x48($sp)
|
|
/* f1a0c0c: 8fb00044 */ lw $s0,0x44($sp)
|
|
/* f1a0c10: d7be0038 */ ldc1 $f30,0x38($sp)
|
|
/* f1a0c14: d7bc0030 */ ldc1 $f28,0x30($sp)
|
|
/* f1a0c18: d7ba0028 */ ldc1 $f26,0x28($sp)
|
|
/* f1a0c1c: d7b80020 */ ldc1 $f24,0x20($sp)
|
|
/* f1a0c20: d7b60018 */ ldc1 $f22,0x18($sp)
|
|
/* f1a0c24: d7b40010 */ ldc1 $f20,0x10($sp)
|
|
/* f1a0c28: 03e00008 */ jr $ra
|
|
/* f1a0c2c: 27bd0060 */ addiu $sp,$sp,0x60
|
|
);
|
|
|
|
// Mismatch because f26 and f28 are swapped and the multiplication order for
|
|
// unk1c is different. f26 should be constant 0 (used in dist > 0 and value < 0
|
|
// checks) and f28 should be bestvalue.
|
|
//bool frChooseFarsightTarget(void)
|
|
//{
|
|
// f32 bestvalue = 1;
|
|
// f32 bestdist = -1;
|
|
// struct prop *bestprop = NULL;
|
|
// bool found = false;
|
|
// s32 i;
|
|
//
|
|
// if (getCurrentPlayerWeaponId(0) == WEAPON_FARSIGHTXR20) {
|
|
// for (i = 0; i < ARRAYCOUNT(g_FiringRangeData.targets); i++) {
|
|
// if (g_FiringRangeData.targets[i].unk00_01
|
|
// && g_FiringRangeData.targets[i].unk00_03 == 0
|
|
// && g_FiringRangeData.targets[i].unk00_02
|
|
// && g_FiringRangeData.targets[i].flags & FRTARGETFLAG_40) {
|
|
// struct prop *prop = g_FiringRangeData.targets[i].prop;
|
|
// f32 xdiff = g_Vars.currentplayer->bond2.unk10.x - prop->pos.x;
|
|
// f32 ydiff = g_Vars.currentplayer->bond2.unk10.y - prop->pos.y;
|
|
// f32 zdiff = g_Vars.currentplayer->bond2.unk10.z - prop->pos.z;
|
|
// f32 dist = sqrtf(xdiff * xdiff + ydiff * ydiff + zdiff * zdiff);
|
|
//
|
|
// if (dist > 0) {
|
|
// f32 value = (
|
|
// g_Vars.currentplayer->bond2.unk1c.x * xdiff +
|
|
// g_Vars.currentplayer->bond2.unk1c.y * ydiff +
|
|
// g_Vars.currentplayer->bond2.unk1c.z * zdiff) / dist;
|
|
//
|
|
// if (value < 0 && value < bestvalue) {
|
|
// bestvalue = value;
|
|
// bestprop = prop;
|
|
// bestdist = dist;
|
|
// found = true;
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
//
|
|
// g_Vars.currentplayer->autoeraserdist = bestdist;
|
|
// g_Vars.currentplayer->autoerasertarget = bestprop;
|
|
//
|
|
// return found;
|
|
//}
|
|
|
|
s32 frIsInTraining(void)
|
|
{
|
|
if (g_FiringRangeData.unk464 > 0 &&
|
|
(g_FiringRangeData.unk465_00 == 2 || g_FiringRangeData.unk465_00 == 3)) {
|
|
return true;
|
|
}
|
|
|
|
return g_Vars.currentplayer->prop->rooms[0] == CIROOM_FIRINGRANGE
|
|
&& g_FrIsValidWeapon
|
|
&& getCurrentStageId() == STAGE_CITRAINING;
|
|
}
|
|
|
|
GLOBAL_ASM(
|
|
glabel func0f1a0cc0
|
|
.late_rodata
|
|
glabel var7f1b94e8
|
|
.word 0x3dcccccd
|
|
.text
|
|
/* f1a0cc0: 27bdff90 */ addiu $sp,$sp,-112
|
|
/* f1a0cc4: 3c0e8009 */ lui $t6,%hi(g_FrIsValidWeapon)
|
|
/* f1a0cc8: 91ce8804 */ lbu $t6,%lo(g_FrIsValidWeapon)($t6)
|
|
/* f1a0ccc: f7be0040 */ sdc1 $f30,0x40($sp)
|
|
/* f1a0cd0: 4486f000 */ mtc1 $a2,$f30
|
|
/* f1a0cd4: afb20050 */ sw $s2,0x50($sp)
|
|
/* f1a0cd8: 00a09025 */ or $s2,$a1,$zero
|
|
/* f1a0cdc: afbf006c */ sw $ra,0x6c($sp)
|
|
/* f1a0ce0: afbe0068 */ sw $s8,0x68($sp)
|
|
/* f1a0ce4: afb70064 */ sw $s7,0x64($sp)
|
|
/* f1a0ce8: afb60060 */ sw $s6,0x60($sp)
|
|
/* f1a0cec: afb5005c */ sw $s5,0x5c($sp)
|
|
/* f1a0cf0: afb40058 */ sw $s4,0x58($sp)
|
|
/* f1a0cf4: afb30054 */ sw $s3,0x54($sp)
|
|
/* f1a0cf8: afb1004c */ sw $s1,0x4c($sp)
|
|
/* f1a0cfc: afb00048 */ sw $s0,0x48($sp)
|
|
/* f1a0d00: f7bc0038 */ sdc1 $f28,0x38($sp)
|
|
/* f1a0d04: f7ba0030 */ sdc1 $f26,0x30($sp)
|
|
/* f1a0d08: f7b80028 */ sdc1 $f24,0x28($sp)
|
|
/* f1a0d0c: f7b60020 */ sdc1 $f22,0x20($sp)
|
|
/* f1a0d10: f7b40018 */ sdc1 $f20,0x18($sp)
|
|
/* f1a0d14: 11c0009a */ beqz $t6,.L0f1a0f80
|
|
/* f1a0d18: afa40070 */ sw $a0,0x70($sp)
|
|
/* f1a0d1c: 3c017f1c */ lui $at,%hi(var7f1b94e8)
|
|
/* f1a0d20: c43c94e8 */ lwc1 $f28,%lo(var7f1b94e8)($at)
|
|
/* f1a0d24: 3c014260 */ lui $at,0x4260
|
|
/* f1a0d28: 4481d000 */ mtc1 $at,$f26
|
|
/* f1a0d2c: 3c014214 */ lui $at,0x4214
|
|
/* f1a0d30: 4481c000 */ mtc1 $at,$f24
|
|
/* f1a0d34: 3c014190 */ lui $at,0x4190
|
|
/* f1a0d38: 3c11800b */ lui $s1,%hi(g_FiringRangeData)
|
|
/* f1a0d3c: 3c15800b */ lui $s5,%hi(g_FiringRangeData+0x438)
|
|
/* f1a0d40: 3c10800b */ lui $s0,%hi(g_FiringRangeData)
|
|
/* f1a0d44: 4481b000 */ mtc1 $at,$f22
|
|
/* f1a0d48: 2610cd20 */ addiu $s0,$s0,%lo(g_FiringRangeData)
|
|
/* f1a0d4c: 26b5d158 */ addiu $s5,$s5,%lo(g_FiringRangeData+0x438)
|
|
/* f1a0d50: 2631cd20 */ addiu $s1,$s1,%lo(g_FiringRangeData)
|
|
/* f1a0d54: 241e0001 */ addiu $s8,$zero,0x1
|
|
/* f1a0d58: 24170002 */ addiu $s7,$zero,0x2
|
|
/* f1a0d5c: 24160005 */ addiu $s6,$zero,0x5
|
|
/* f1a0d60: 2414003c */ addiu $s4,$zero,0x3c
|
|
/* f1a0d64: 2413000a */ addiu $s3,$zero,0xa
|
|
/* f1a0d68: 8e220014 */ lw $v0,0x14($s1)
|
|
.L0f1a0d6c:
|
|
/* f1a0d6c: 8faf0070 */ lw $t7,0x70($sp)
|
|
/* f1a0d70: 8c580004 */ lw $t8,0x4($v0)
|
|
/* f1a0d74: 55f80080 */ bnel $t7,$t8,.L0f1a0f78
|
|
/* f1a0d78: 2631003c */ addiu $s1,$s1,0x3c
|
|
/* f1a0d7c: c6440000 */ lwc1 $f4,0x0($s2)
|
|
/* f1a0d80: c4460008 */ lwc1 $f6,0x8($v0)
|
|
/* f1a0d84: c6480004 */ lwc1 $f8,0x4($s2)
|
|
/* f1a0d88: c44a000c */ lwc1 $f10,0xc($v0)
|
|
/* f1a0d8c: 46062001 */ sub.s $f0,$f4,$f6
|
|
/* f1a0d90: c6500008 */ lwc1 $f16,0x8($s2)
|
|
/* f1a0d94: c4520010 */ lwc1 $f18,0x10($v0)
|
|
/* f1a0d98: 460a4081 */ sub.s $f2,$f8,$f10
|
|
/* f1a0d9c: 46000102 */ mul.s $f4,$f0,$f0
|
|
/* f1a0da0: 46128381 */ sub.s $f14,$f16,$f18
|
|
/* f1a0da4: 46021182 */ mul.s $f6,$f2,$f2
|
|
/* f1a0da8: 46062200 */ add.s $f8,$f4,$f6
|
|
/* f1a0dac: 460e7282 */ mul.s $f10,$f14,$f14
|
|
/* f1a0db0: 0c012974 */ jal sqrtf
|
|
/* f1a0db4: 460a4300 */ add.s $f12,$f8,$f10
|
|
/* f1a0db8: 92390040 */ lbu $t9,0x40($s1)
|
|
/* f1a0dbc: 46000506 */ mov.s $f20,$f0
|
|
/* f1a0dc0: 33280020 */ andi $t0,$t9,0x20
|
|
/* f1a0dc4: 11000004 */ beqz $t0,.L0f1a0dd8
|
|
/* f1a0dc8: 00000000 */ nop
|
|
/* f1a0dcc: 92290011 */ lbu $t1,0x11($s1)
|
|
/* f1a0dd0: 10000044 */ b .L0f1a0ee4
|
|
/* f1a0dd4: a2290030 */ sb $t1,0x30($s1)
|
|
.L0f1a0dd8:
|
|
/* f1a0dd8: 0fc6749a */ jal frGetWeaponBySlot
|
|
/* f1a0ddc: 96040456 */ lhu $a0,0x456($s0)
|
|
/* f1a0de0: 24010006 */ addiu $at,$zero,0x6
|
|
/* f1a0de4: 54410035 */ bnel $v0,$at,.L0f1a0ebc
|
|
/* f1a0de8: 92380040 */ lbu $t8,0x40($s1)
|
|
/* f1a0dec: 461cf182 */ mul.s $f6,$f30,$f28
|
|
/* f1a0df0: 922a0030 */ lbu $t2,0x30($s1)
|
|
/* f1a0df4: 3c014f80 */ lui $at,0x4f80
|
|
/* f1a0df8: 448a8000 */ mtc1 $t2,$f16
|
|
/* f1a0dfc: 4600320d */ trunc.w.s $f8,$f6
|
|
/* f1a0e00: 05410004 */ bgez $t2,.L0f1a0e14
|
|
/* f1a0e04: 468084a0 */ cvt.s.w $f18,$f16
|
|
/* f1a0e08: 44812000 */ mtc1 $at,$f4
|
|
/* f1a0e0c: 00000000 */ nop
|
|
/* f1a0e10: 46049480 */ add.s $f18,$f18,$f4
|
|
.L0f1a0e14:
|
|
/* f1a0e14: 440c4000 */ mfc1 $t4,$f8
|
|
/* f1a0e18: 240f0001 */ addiu $t7,$zero,0x1
|
|
/* f1a0e1c: 3c014f00 */ lui $at,0x4f00
|
|
/* f1a0e20: 258d0001 */ addiu $t5,$t4,0x1
|
|
/* f1a0e24: 448d5000 */ mtc1 $t5,$f10
|
|
/* f1a0e28: 00000000 */ nop
|
|
/* f1a0e2c: 46805420 */ cvt.s.w $f16,$f10
|
|
/* f1a0e30: 46109100 */ add.s $f4,$f18,$f16
|
|
/* f1a0e34: 444ef800 */ cfc1 $t6,$31
|
|
/* f1a0e38: 44cff800 */ ctc1 $t7,$31
|
|
/* f1a0e3c: 00000000 */ nop
|
|
/* f1a0e40: 460021a4 */ cvt.w.s $f6,$f4
|
|
/* f1a0e44: 444ff800 */ cfc1 $t7,$31
|
|
/* f1a0e48: 00000000 */ nop
|
|
/* f1a0e4c: 31ef0078 */ andi $t7,$t7,0x78
|
|
/* f1a0e50: 51e00013 */ beqzl $t7,.L0f1a0ea0
|
|
/* f1a0e54: 440f3000 */ mfc1 $t7,$f6
|
|
/* f1a0e58: 44813000 */ mtc1 $at,$f6
|
|
/* f1a0e5c: 240f0001 */ addiu $t7,$zero,0x1
|
|
/* f1a0e60: 46062181 */ sub.s $f6,$f4,$f6
|
|
/* f1a0e64: 44cff800 */ ctc1 $t7,$31
|
|
/* f1a0e68: 00000000 */ nop
|
|
/* f1a0e6c: 460031a4 */ cvt.w.s $f6,$f6
|
|
/* f1a0e70: 444ff800 */ cfc1 $t7,$31
|
|
/* f1a0e74: 00000000 */ nop
|
|
/* f1a0e78: 31ef0078 */ andi $t7,$t7,0x78
|
|
/* f1a0e7c: 15e00005 */ bnez $t7,.L0f1a0e94
|
|
/* f1a0e80: 00000000 */ nop
|
|
/* f1a0e84: 440f3000 */ mfc1 $t7,$f6
|
|
/* f1a0e88: 3c018000 */ lui $at,0x8000
|
|
/* f1a0e8c: 10000007 */ b .L0f1a0eac
|
|
/* f1a0e90: 01e17825 */ or $t7,$t7,$at
|
|
.L0f1a0e94:
|
|
/* f1a0e94: 10000005 */ b .L0f1a0eac
|
|
/* f1a0e98: 240fffff */ addiu $t7,$zero,-1
|
|
/* f1a0e9c: 440f3000 */ mfc1 $t7,$f6
|
|
.L0f1a0ea0:
|
|
/* f1a0ea0: 00000000 */ nop
|
|
/* f1a0ea4: 05e0fffb */ bltz $t7,.L0f1a0e94
|
|
/* f1a0ea8: 00000000 */ nop
|
|
.L0f1a0eac:
|
|
/* f1a0eac: 44cef800 */ ctc1 $t6,$31
|
|
/* f1a0eb0: 1000000c */ b .L0f1a0ee4
|
|
/* f1a0eb4: a22f0030 */ sb $t7,0x30($s1)
|
|
/* f1a0eb8: 92380040 */ lbu $t8,0x40($s1)
|
|
.L0f1a0ebc:
|
|
/* f1a0ebc: 33190080 */ andi $t9,$t8,0x80
|
|
/* f1a0ec0: 53200006 */ beqzl $t9,.L0f1a0edc
|
|
/* f1a0ec4: 92290030 */ lbu $t1,0x30($s1)
|
|
/* f1a0ec8: 8e280048 */ lw $t0,0x48($s1)
|
|
/* f1a0ecc: 2901012c */ slti $at,$t0,0x12c
|
|
/* f1a0ed0: 54200005 */ bnezl $at,.L0f1a0ee8
|
|
/* f1a0ed4: 4616a03c */ c.lt.s $f20,$f22
|
|
/* f1a0ed8: 92290030 */ lbu $t1,0x30($s1)
|
|
.L0f1a0edc:
|
|
/* f1a0edc: 252a0001 */ addiu $t2,$t1,0x1
|
|
/* f1a0ee0: a22a0030 */ sb $t2,0x30($s1)
|
|
.L0f1a0ee4:
|
|
/* f1a0ee4: 4616a03c */ c.lt.s $f20,$f22
|
|
.L0f1a0ee8:
|
|
/* f1a0ee8: 00000000 */ nop
|
|
/* f1a0eec: 45020007 */ bc1fl .L0f1a0f0c
|
|
/* f1a0ef0: 4618a03c */ c.lt.s $f20,$f24
|
|
/* f1a0ef4: 960b045c */ lhu $t3,0x45c($s0)
|
|
/* f1a0ef8: a2130471 */ sb $s3,0x471($s0)
|
|
/* f1a0efc: 256c0001 */ addiu $t4,$t3,0x1
|
|
/* f1a0f00: 10000017 */ b .L0f1a0f60
|
|
/* f1a0f04: a60c045c */ sh $t4,0x45c($s0)
|
|
/* f1a0f08: 4618a03c */ c.lt.s $f20,$f24
|
|
.L0f1a0f0c:
|
|
/* f1a0f0c: 00000000 */ nop
|
|
/* f1a0f10: 45020007 */ bc1fl .L0f1a0f30
|
|
/* f1a0f14: 461aa03c */ c.lt.s $f20,$f26
|
|
/* f1a0f18: 960d045e */ lhu $t5,0x45e($s0)
|
|
/* f1a0f1c: a2160471 */ sb $s6,0x471($s0)
|
|
/* f1a0f20: 25ae0001 */ addiu $t6,$t5,0x1
|
|
/* f1a0f24: 1000000e */ b .L0f1a0f60
|
|
/* f1a0f28: a60e045e */ sh $t6,0x45e($s0)
|
|
/* f1a0f2c: 461aa03c */ c.lt.s $f20,$f26
|
|
.L0f1a0f30:
|
|
/* f1a0f30: 00000000 */ nop
|
|
/* f1a0f34: 45020007 */ bc1fl .L0f1a0f54
|
|
/* f1a0f38: 96190462 */ lhu $t9,0x462($s0)
|
|
/* f1a0f3c: 960f0460 */ lhu $t7,0x460($s0)
|
|
/* f1a0f40: a2170471 */ sb $s7,0x471($s0)
|
|
/* f1a0f44: 25f80001 */ addiu $t8,$t7,0x1
|
|
/* f1a0f48: 10000005 */ b .L0f1a0f60
|
|
/* f1a0f4c: a6180460 */ sh $t8,0x460($s0)
|
|
/* f1a0f50: 96190462 */ lhu $t9,0x462($s0)
|
|
.L0f1a0f54:
|
|
/* f1a0f54: a21e0471 */ sb $s8,0x471($s0)
|
|
/* f1a0f58: 27280001 */ addiu $t0,$t9,0x1
|
|
/* f1a0f5c: a6080462 */ sh $t0,0x462($s0)
|
|
.L0f1a0f60:
|
|
/* f1a0f60: 8e090450 */ lw $t1,0x450($s0)
|
|
/* f1a0f64: 920a0471 */ lbu $t2,0x471($s0)
|
|
/* f1a0f68: a2140472 */ sb $s4,0x472($s0)
|
|
/* f1a0f6c: 012a5821 */ addu $t3,$t1,$t2
|
|
/* f1a0f70: ae0b0450 */ sw $t3,0x450($s0)
|
|
/* f1a0f74: 2631003c */ addiu $s1,$s1,0x3c
|
|
.L0f1a0f78:
|
|
/* f1a0f78: 5635ff7c */ bnel $s1,$s5,.L0f1a0d6c
|
|
/* f1a0f7c: 8e220014 */ lw $v0,0x14($s1)
|
|
.L0f1a0f80:
|
|
/* f1a0f80: 8fbf006c */ lw $ra,0x6c($sp)
|
|
/* f1a0f84: d7b40018 */ ldc1 $f20,0x18($sp)
|
|
/* f1a0f88: d7b60020 */ ldc1 $f22,0x20($sp)
|
|
/* f1a0f8c: d7b80028 */ ldc1 $f24,0x28($sp)
|
|
/* f1a0f90: d7ba0030 */ ldc1 $f26,0x30($sp)
|
|
/* f1a0f94: d7bc0038 */ ldc1 $f28,0x38($sp)
|
|
/* f1a0f98: d7be0040 */ ldc1 $f30,0x40($sp)
|
|
/* f1a0f9c: 8fb00048 */ lw $s0,0x48($sp)
|
|
/* f1a0fa0: 8fb1004c */ lw $s1,0x4c($sp)
|
|
/* f1a0fa4: 8fb20050 */ lw $s2,0x50($sp)
|
|
/* f1a0fa8: 8fb30054 */ lw $s3,0x54($sp)
|
|
/* f1a0fac: 8fb40058 */ lw $s4,0x58($sp)
|
|
/* f1a0fb0: 8fb5005c */ lw $s5,0x5c($sp)
|
|
/* f1a0fb4: 8fb60060 */ lw $s6,0x60($sp)
|
|
/* f1a0fb8: 8fb70064 */ lw $s7,0x64($sp)
|
|
/* f1a0fbc: 8fbe0068 */ lw $s8,0x68($sp)
|
|
/* f1a0fc0: 03e00008 */ jr $ra
|
|
/* f1a0fc4: 27bd0070 */ addiu $sp,$sp,0x70
|
|
);
|
|
|
|
void func0f1a0fc8(void)
|
|
{
|
|
g_FiringRangeData.numshots++;
|
|
g_FiringRangeData.unk45a++;
|
|
}
|
|
|
|
bool ciIsChrBioUnlocked(u32 bodynum)
|
|
{
|
|
switch (bodynum) {
|
|
case BODY_DARK_COMBAT:
|
|
case BODY_CARRINGTON:
|
|
return true;
|
|
case BODY_CASSANDRA:
|
|
return stageIsComplete(SOLOSTAGEINDEX_DEFECTION);
|
|
case BODY_DRCAROLL:
|
|
return stageIsComplete(SOLOSTAGEINDEX_INVESTIGATION);
|
|
case BODY_MRBLONDE:
|
|
return stageIsComplete(SOLOSTAGEINDEX_EXTRACTION);
|
|
case BODY_TRENT:
|
|
return stageIsComplete(SOLOSTAGEINDEX_G5BUILDING);
|
|
case BODY_JONATHAN:
|
|
return stageIsComplete(SOLOSTAGEINDEX_INFILTRATION);
|
|
case BODY_THEKING:
|
|
return stageIsComplete(SOLOSTAGEINDEX_RESCUE);
|
|
case BODY_PRESIDENT:
|
|
return stageIsComplete(SOLOSTAGEINDEX_AIRFORCEONE);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
u8 var800888a0 = 0;
|
|
|
|
struct chrbio *ciGetChrBioByBodynum(u32 bodynum)
|
|
{
|
|
struct chrbio bios[] = {
|
|
// name, race, age, profile
|
|
/*0*/ { L_MISC(219), L_MISC(220), L_MISC(221), L_MISC(222) }, // Joanna Dark
|
|
/*1*/ { L_MISC(223), L_MISC(224), L_MISC(225), L_MISC(226) }, // Jonathan
|
|
/*2*/ { L_MISC(227), L_MISC(228), L_MISC(229), L_MISC(230) }, // Daniel Carrington
|
|
/*3*/ { L_MISC(231), L_MISC(232), L_MISC(233), L_MISC(234) }, // Cassandra De Vries
|
|
/*4*/ { L_MISC(235), L_MISC(236), L_MISC(237), L_MISC(238) }, // Trent Easton
|
|
/*5*/ { L_MISC(239), L_MISC(240), L_MISC(241), L_MISC(242) }, // Dr. Caroll
|
|
/*6*/ { L_MISC(243), L_MISC(244), L_MISC(245), L_MISC(246) }, // Elvis
|
|
/*7*/ { L_MISC(247), L_MISC(248), L_MISC(249), L_MISC(250) }, // Mr. Blonde
|
|
/*8*/ { L_MISC(251), L_MISC(252), L_MISC(253), L_MISC(254) }, // Mr. Blonde (repeat)
|
|
/*9*/ { L_MISC(255), L_MISC(256), L_MISC(257), L_MISC(258) }, // The U.S. President
|
|
};
|
|
|
|
switch (bodynum) {
|
|
case BODY_DARK_COMBAT:
|
|
return &bios[0];
|
|
case BODY_JONATHAN:
|
|
return &bios[1];
|
|
case BODY_CARRINGTON:
|
|
return &bios[2];
|
|
case BODY_CASSANDRA:
|
|
return &bios[3];
|
|
case BODY_TRENT:
|
|
return &bios[4];
|
|
case BODY_DRCAROLL:
|
|
return &bios[5];
|
|
case BODY_THEKING:
|
|
return &bios[6];
|
|
case BODY_MRBLONDE:
|
|
if (stageIsComplete(SOLOSTAGEINDEX_CRASHSITE)) {
|
|
return &bios[8];
|
|
}
|
|
return &bios[7];
|
|
case BODY_PRESIDENT:
|
|
return &bios[9];
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
char *ciGetChrBioDescription(void)
|
|
{
|
|
struct chrbio *bio = ciGetChrBioByBodynum(ciGetChrBioIndexBySlot(var800888a0));
|
|
return langGet(bio->description);
|
|
}
|
|
|
|
s32 ciGetNumUnlockedChrBios(void)
|
|
{
|
|
s32 count = 0;
|
|
s32 bodynum;
|
|
|
|
for (bodynum = 0; bodynum < NUM_BODIES; bodynum++) {
|
|
if (ciIsChrBioUnlocked(bodynum)) {
|
|
count++;
|
|
}
|
|
}
|
|
|
|
return count;
|
|
}
|
|
|
|
s32 ciGetChrBioIndexBySlot(s32 slot)
|
|
{
|
|
s32 index = -1;
|
|
s32 bodynum;
|
|
|
|
for (bodynum = 0; bodynum < NUM_BODIES; bodynum++) {
|
|
if (ciIsChrBioUnlocked(bodynum)) {
|
|
index++;
|
|
}
|
|
|
|
if (index == slot) {
|
|
return bodynum;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
struct miscbio *ciGetMiscBio(s32 index)
|
|
{
|
|
struct miscbio bios[] = {
|
|
// name, description
|
|
{ L_MISC(259), L_MISC(260) },
|
|
{ L_MISC(261), L_MISC(262) },
|
|
{ L_MISC(263), L_MISC(264) },
|
|
{ L_MISC(265), L_MISC(266) },
|
|
};
|
|
|
|
switch (index) {
|
|
case MISCBIO_MAIANS: return &bios[0];
|
|
case MISCBIO_SKEDAR: return &bios[1];
|
|
case MISCBIO_BACKGROUND: return &bios[2];
|
|
case MISCBIO_STORY: return &bios[3];
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
bool ciIsMiscBioUnlocked(s32 index)
|
|
{
|
|
switch (index) {
|
|
case MISCBIO_MAIANS:
|
|
return stageIsComplete(SOLOSTAGEINDEX_RESCUE);
|
|
case MISCBIO_SKEDAR:
|
|
return stageIsComplete(SOLOSTAGEINDEX_ATTACKSHIP);
|
|
case MISCBIO_BACKGROUND:
|
|
case MISCBIO_STORY:
|
|
return stageIsComplete(SOLOSTAGEINDEX_MBR);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
s32 ciGetNumUnlockedMiscBios(void)
|
|
{
|
|
s32 count = 0;
|
|
s32 i;
|
|
|
|
for (i = 0; i < 4; i++) {
|
|
if (ciIsMiscBioUnlocked(i)) {
|
|
count++;
|
|
}
|
|
}
|
|
|
|
return count;
|
|
}
|
|
|
|
s32 ciGetMiscBioIndexBySlot(s32 slot)
|
|
{
|
|
s32 index = -1;
|
|
s32 i;
|
|
|
|
for (i = 0; i < 4; i++) {
|
|
if (ciIsMiscBioUnlocked(i)) {
|
|
index++;
|
|
}
|
|
|
|
if (index == slot) {
|
|
return i;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
char *ciGetMiscBioDescription(void)
|
|
{
|
|
s32 index = ciGetMiscBioIndexBySlot(var800888a0 - ciGetNumUnlockedChrBios());
|
|
struct miscbio *bio = ciGetMiscBio(index);
|
|
|
|
return langGet(bio->description);
|
|
}
|
|
|
|
bool ciIsHangarBioAVehicle(s32 index)
|
|
{
|
|
return index >= HANGARBIO_JUMPSHIP;
|
|
}
|
|
|
|
u8 g_HangarBioSlot = 0;
|
|
|
|
struct hangarbio *ciGetHangarBio(s32 index)
|
|
{
|
|
struct hangarbio bios[] = {
|
|
// name, description
|
|
{ L_MISC(290), L_MISC(313) }, // Carrington Institute
|
|
{ L_MISC(291), L_MISC(314) }, // Lucerne Tower
|
|
{ L_MISC(292), L_MISC(315) }, // Laboratory Basement
|
|
{ L_MISC(293), L_MISC(316) }, // Carrington Villa
|
|
{ L_MISC(294), L_MISC(317) }, // Chicago
|
|
{ L_MISC(295), L_MISC(318) }, // G5 Building
|
|
{ L_MISC(296), L_MISC(319) }, // Area 51
|
|
{ L_MISC(297), L_MISC(320) }, // Alaskan Air Base
|
|
{ L_MISC(298), L_MISC(321) }, // Air Force One
|
|
{ L_MISC(299), L_MISC(322) }, // Crash Site
|
|
{ L_MISC(300), L_MISC(323) }, // Pelagic II
|
|
{ L_MISC(301), L_MISC(324) }, // Cetan Ship
|
|
{ L_MISC(302), L_MISC(325) }, // Skedar Assault Ship
|
|
{ L_MISC(303), L_MISC(326) }, // Skedar Homeworld
|
|
{ L_MISC(304), L_MISC(327) }, // Jumpship
|
|
{ L_MISC(305), L_MISC(328) }, // HoverCrate
|
|
{ L_MISC(306), L_MISC(329) }, // HoverBike
|
|
{ L_MISC(307), L_MISC(330) }, // Cleaning Hovbot
|
|
{ L_MISC(308), L_MISC(331) }, // Hovercopter
|
|
{ L_MISC(309), L_MISC(332) }, // G5 Robot
|
|
{ L_MISC(310), L_MISC(333) }, // A51 Interceptor
|
|
{ L_MISC(311), L_MISC(334) }, // Maian Vessel
|
|
{ L_MISC(312), L_MISC(335) }, // Skedar Shuttle
|
|
};
|
|
|
|
switch (index) {
|
|
case HANGARBIO_INSTITUTE: return &bios[0];
|
|
case HANGARBIO_DDTOWER: return &bios[1];
|
|
case HANGARBIO_LABBASEMENT: return &bios[2];
|
|
case HANGARBIO_VILLA: return &bios[3];
|
|
case HANGARBIO_CHICAGO: return &bios[4];
|
|
case HANGARBIO_G5: return &bios[5];
|
|
case HANGARBIO_AREA51: return &bios[6];
|
|
case HANGARBIO_AIRBASE: return &bios[7];
|
|
case HANGARBIO_AIRFORCEONE: return &bios[8];
|
|
case HANGARBIO_CRASHSITE: return &bios[9];
|
|
case HANGARBIO_PELAGIC: return &bios[10];
|
|
case HANGARBIO_DEEPSEA: return &bios[11];
|
|
case HANGARBIO_ATTACKSHIP: return &bios[12];
|
|
case HANGARBIO_SKEDARRUINS: return &bios[13];
|
|
case HANGARBIO_JUMPSHIP: return &bios[14];
|
|
case HANGARBIO_HOVERCRATE: return &bios[15];
|
|
case HANGARBIO_HOVERBIKE: return &bios[16];
|
|
case HANGARBIO_HOVERBOT: return &bios[17];
|
|
case HANGARBIO_HOVERCOPTER: return &bios[18];
|
|
case HANGARBIO_G5ROBOT: return &bios[19];
|
|
case HANGARBIO_A51INTERCEPTOR: return &bios[20];
|
|
case HANGARBIO_MAIANVESSEL: return &bios[21];
|
|
case HANGARBIO_SKEDARSHUTTLE: return &bios[22];
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
u8 var80088ad8 = 0;
|
|
u8 var80088adc = 0;
|
|
|
|
bool ciIsHangarBioUnlocked(u32 bioindex)
|
|
{
|
|
u32 stage;
|
|
|
|
switch (bioindex) {
|
|
case HANGARBIO_INSTITUTE:
|
|
case HANGARBIO_HOVERCRATE:
|
|
return true;
|
|
case HANGARBIO_DDTOWER:
|
|
stage = SOLOSTAGEINDEX_DEFECTION;
|
|
break;
|
|
case HANGARBIO_LABBASEMENT:
|
|
case HANGARBIO_HOVERBOT:
|
|
stage = SOLOSTAGEINDEX_INVESTIGATION;
|
|
break;
|
|
case HANGARBIO_HOVERCOPTER:
|
|
stage = SOLOSTAGEINDEX_EXTRACTION;
|
|
break;
|
|
case HANGARBIO_VILLA:
|
|
case HANGARBIO_JUMPSHIP:
|
|
stage = SOLOSTAGEINDEX_VILLA;
|
|
break;
|
|
case HANGARBIO_CHICAGO:
|
|
stage = SOLOSTAGEINDEX_CHICAGO;
|
|
break;
|
|
case HANGARBIO_G5:
|
|
case HANGARBIO_G5ROBOT:
|
|
stage = SOLOSTAGEINDEX_G5BUILDING;
|
|
break;
|
|
case HANGARBIO_AREA51:
|
|
case HANGARBIO_HOVERBIKE:
|
|
case HANGARBIO_A51INTERCEPTOR:
|
|
stage = SOLOSTAGEINDEX_INFILTRATION;
|
|
break;
|
|
case HANGARBIO_AIRBASE:
|
|
stage = SOLOSTAGEINDEX_AIRBASE;
|
|
break;
|
|
case HANGARBIO_AIRFORCEONE:
|
|
stage = SOLOSTAGEINDEX_AIRFORCEONE;
|
|
break;
|
|
case HANGARBIO_CRASHSITE:
|
|
case HANGARBIO_MAIANVESSEL:
|
|
stage = SOLOSTAGEINDEX_CRASHSITE;
|
|
break;
|
|
case HANGARBIO_PELAGIC:
|
|
stage = SOLOSTAGEINDEX_PELAGIC;
|
|
break;
|
|
case HANGARBIO_DEEPSEA:
|
|
stage = SOLOSTAGEINDEX_DEEPSEA;
|
|
break;
|
|
case HANGARBIO_ATTACKSHIP:
|
|
case HANGARBIO_SKEDARSHUTTLE:
|
|
stage = SOLOSTAGEINDEX_DEFENSE;
|
|
break;
|
|
case HANGARBIO_SKEDARRUINS:
|
|
stage = SOLOSTAGEINDEX_ATTACKSHIP;
|
|
break;
|
|
default:
|
|
return false;
|
|
}
|
|
|
|
return stageIsComplete(stage);
|
|
}
|
|
|
|
s32 ciGetNumUnlockedLocationBios(void)
|
|
{
|
|
s32 count = 0;
|
|
s32 i;
|
|
|
|
for (i = 0; i < 23; i++) {
|
|
if (ciIsHangarBioAVehicle(i)) {
|
|
return count;
|
|
}
|
|
|
|
if (ciIsHangarBioUnlocked(i)) {
|
|
count++;
|
|
}
|
|
}
|
|
|
|
return count;
|
|
}
|
|
|
|
s32 ciGetNumUnlockedHangarBios(void)
|
|
{
|
|
s32 count = 0;
|
|
s32 i;
|
|
|
|
for (i = 0; i < 23; i++) {
|
|
if (ciIsHangarBioUnlocked(i)) {
|
|
count++;
|
|
}
|
|
}
|
|
|
|
return count;
|
|
}
|
|
|
|
s32 ciGetHangarBioIndexBySlot(s32 slot)
|
|
{
|
|
s32 index = -1;
|
|
s32 i;
|
|
|
|
for (i = 0; i < 23; i++) {
|
|
if (ciIsHangarBioUnlocked(i)) {
|
|
index++;
|
|
}
|
|
|
|
if (index == slot) {
|
|
return i;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
char *ciGetHangarBioDescription(void)
|
|
{
|
|
struct hangarbio *bio = ciGetHangarBio(ciGetHangarBioIndexBySlot(g_HangarBioSlot));
|
|
return langGet(bio->description);
|
|
}
|
|
|
|
struct trainingdata *getDeviceTrainingData(void)
|
|
{
|
|
return &g_DeviceTrainingData;
|
|
}
|
|
|
|
void dtRestorePlayer(void)
|
|
{
|
|
playersSetPassiveMode(true);
|
|
|
|
if (g_DeviceTrainingData.obj) {
|
|
setupParseObjectWithArg2False(g_DeviceTrainingData.obj, true);
|
|
}
|
|
|
|
g_DeviceTrainingData.obj = NULL;
|
|
|
|
if (dtGetWeaponByDeviceIndex(func0f1a1d68(var80088ad8)) == WEAPON_ECMMINE) {
|
|
currentPlayerSetAmmoQuantity(AMMOTYPE_ECM_MINE, 0);
|
|
}
|
|
|
|
if (g_Vars.currentplayer->eyespy) {
|
|
struct chrdata *chr = g_Vars.currentplayer->eyespy->prop->chr;
|
|
g_Vars.currentplayer->eyespy->initialised = false;
|
|
g_Vars.currentplayer->eyespy->init = true;
|
|
g_Vars.currentplayer->eyespy->active = false;
|
|
|
|
chr->chrflags |= CHRCFLAG_HIDDEN;
|
|
|
|
func0f0926bc(g_Vars.currentplayer->eyespy->prop, 1, 0xffff);
|
|
|
|
g_Vars.currentplayer->itemswitch &= ~0x04;
|
|
}
|
|
}
|
|
|
|
void dtPushEndscreen(void)
|
|
{
|
|
if (g_DeviceTrainingData.completed) {
|
|
func0f0f85e0(&g_DeviceTrainingStatsCompletedMenuDialog, MENUROOT_TRAINING);
|
|
} else if (g_DeviceTrainingData.failed) {
|
|
func0f0f85e0(&g_DeviceTrainingStatsFailedMenuDialog, MENUROOT_TRAINING);
|
|
}
|
|
|
|
g_DeviceTrainingData.timeleft = 0;
|
|
g_DeviceTrainingData.completed = false;
|
|
g_DeviceTrainingData.failed = false;
|
|
g_DeviceTrainingData.finished = false;
|
|
g_DeviceTrainingData.holographedpc = false;
|
|
}
|
|
|
|
void dtTick(void)
|
|
{
|
|
if (var80088adc) {
|
|
if (g_DeviceTrainingData.intraining) {
|
|
g_DeviceTrainingData.timetaken += g_Vars.lvupdate240_60;
|
|
|
|
if (g_Vars.currentplayer->isdead) {
|
|
dtEnd();
|
|
}
|
|
|
|
if (chrHasStageFlag(NULL, STAGEFLAG_CI_TRIGGER_DEVICE_FAILURE)) {
|
|
dtEnd();
|
|
g_DeviceTrainingData.failed = true;
|
|
g_DeviceTrainingData.timeleft = 1;
|
|
g_DeviceTrainingData.finished = true;
|
|
} else if (chrHasStageFlag(NULL, STAGEFLAG_CI_TRIGGER_DEVICE_SUCCESS)) {
|
|
dtEnd();
|
|
g_DeviceTrainingData.completed = true;
|
|
g_DeviceTrainingData.timeleft = 1;
|
|
g_DeviceTrainingData.finished = true;
|
|
}
|
|
} else if (g_DeviceTrainingData.finished) {
|
|
if (g_DeviceTrainingData.timeleft <= 0) {
|
|
dtPushEndscreen();
|
|
} else {
|
|
g_DeviceTrainingData.timeleft -= g_Vars.lvupdate240_60;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void func0f1a1ac0(void)
|
|
{
|
|
if (var80088adc == false) {
|
|
var80088adc = true;
|
|
g_DeviceTrainingData.intraining = false;
|
|
g_DeviceTrainingData.failed = false;
|
|
g_DeviceTrainingData.completed = false;
|
|
g_DeviceTrainingData.finished = false;
|
|
g_DeviceTrainingData.timeleft = 0;
|
|
g_DeviceTrainingData.holographedpc = false;
|
|
g_DeviceTrainingData.timetaken = 0;
|
|
g_DeviceTrainingData.obj = NULL;
|
|
chrUnsetStageFlag(NULL, STAGEFLAG_CI_DEVICE_ABORTING);
|
|
chrUnsetStageFlag(NULL, STAGEFLAG_CI_TRIGGER_DEVICE_SUCCESS);
|
|
chrUnsetStageFlag(NULL, STAGEFLAG_CI_TRIGGER_DEVICE_FAILURE);
|
|
}
|
|
}
|
|
|
|
void dtBegin(void)
|
|
{
|
|
g_DeviceTrainingData.intraining = true;
|
|
g_DeviceTrainingData.timetaken = 0;
|
|
chrUnsetStageFlag(NULL, STAGEFLAG_CI_DEVICE_ABORTING);
|
|
chrUnsetStageFlag(NULL, STAGEFLAG_CI_TRIGGER_DEVICE_SUCCESS);
|
|
chrUnsetStageFlag(NULL, STAGEFLAG_CI_TRIGGER_DEVICE_FAILURE);
|
|
chrSetStageFlag(NULL, ciGetStageFlagByDeviceIndex(func0f1a1d68(var80088ad8)));
|
|
g_Vars.currentplayer->training = true;
|
|
playersSetPassiveMode(false);
|
|
chrSetStageFlag(NULL, STAGEFLAG_CI_IN_TRAINING);
|
|
}
|
|
|
|
void dtEnd(void)
|
|
{
|
|
g_DeviceTrainingData.intraining = false;
|
|
dtRestorePlayer();
|
|
currentPlayerSetAmmoQuantity(AMMOTYPE_CLOAK, 0);
|
|
chrSetStageFlag(NULL, STAGEFLAG_CI_DEVICE_ABORTING);
|
|
chrUnsetStageFlag(NULL, STAGEFLAG_CI_TRIGGER_DEVICE_FAILURE);
|
|
chrUnsetStageFlag(NULL, ciGetStageFlagByDeviceIndex(func0f1a1d68(var80088ad8)));
|
|
g_Vars.currentplayer->training = false;
|
|
chrUnsetStageFlag(NULL, STAGEFLAG_CI_IN_TRAINING);
|
|
func0f0bb69c();
|
|
g_Vars.currentplayer->bondhealth = 1;
|
|
}
|
|
|
|
bool dtIsAvailable(s32 deviceindex)
|
|
{
|
|
u8 flags[] = {
|
|
SAVEFILEFLAG_CI_UPLINK_DONE,
|
|
SAVEFILEFLAG_CI_ECMMINE_DONE,
|
|
SAVEFILEFLAG_CI_CAMSPY_DONE,
|
|
SAVEFILEFLAG_CI_NIGHTVISION_DONE,
|
|
SAVEFILEFLAG_CI_DOORDECODER_DONE,
|
|
SAVEFILEFLAG_CI_RTRACKER_DONE,
|
|
SAVEFILEFLAG_CI_IR_DONE,
|
|
SAVEFILEFLAG_CI_XRAY_DONE,
|
|
SAVEFILEFLAG_CI_DISGUISE_DONE,
|
|
SAVEFILEFLAG_CI_CLOAK_DONE,
|
|
};
|
|
|
|
deviceindex--;
|
|
|
|
if (deviceindex >= 10) {
|
|
return true;
|
|
}
|
|
|
|
if (deviceindex < 0 || savefileHasFlag(flags[deviceindex])) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
s32 dtGetNumAvailable(void)
|
|
{
|
|
s32 count = 0;
|
|
s32 i;
|
|
|
|
for (i = 0; i < 10; i++) {
|
|
if (dtIsAvailable(i)) {
|
|
count++;
|
|
}
|
|
}
|
|
|
|
return count;
|
|
}
|
|
|
|
s32 func0f1a1d68(s32 wantindex)
|
|
{
|
|
s32 index = -1;
|
|
s32 i;
|
|
|
|
for (i = 0; i < 10; i++) {
|
|
if (dtIsAvailable(i)) {
|
|
index++;
|
|
}
|
|
|
|
if (index == wantindex) {
|
|
return i;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
u32 dtGetWeaponByDeviceIndex(s32 deviceindex)
|
|
{
|
|
u32 weapons[] = {
|
|
WEAPON_DATAUPLINK,
|
|
WEAPON_ECMMINE,
|
|
WEAPON_CAMSPY,
|
|
WEAPON_NIGHTVISION,
|
|
WEAPON_DOORDECODER,
|
|
WEAPON_RTRACKER,
|
|
WEAPON_IRSCANNER,
|
|
WEAPON_XRAYSCANNER,
|
|
WEAPON_DISGUISE41,
|
|
WEAPON_CLOAKINGDEVICE,
|
|
};
|
|
|
|
return weapons[deviceindex];
|
|
}
|
|
|
|
u32 ciGetStageFlagByDeviceIndex(u32 deviceindex)
|
|
{
|
|
u32 flags[] = {
|
|
STAGEFLAG_CI_TRIGGER_UPLINK,
|
|
STAGEFLAG_CI_TRIGGER_ECMMINE,
|
|
STAGEFLAG_CI_TRIGGER_CAMSPY,
|
|
STAGEFLAG_CI_TRIGGER_NIGHTVISION,
|
|
STAGEFLAG_CI_TRIGGER_DOORDECODER,
|
|
STAGEFLAG_CI_TRIGGER_RTRACKER,
|
|
STAGEFLAG_CI_TRIGGER_IR,
|
|
STAGEFLAG_CI_TRIGGER_XRAY,
|
|
STAGEFLAG_CI_TRIGGER_DISGUISE,
|
|
STAGEFLAG_CI_TRIGGER_CLOAK,
|
|
};
|
|
|
|
return flags[deviceindex];
|
|
}
|
|
|
|
char *dtGetDescription(void)
|
|
{
|
|
u32 texts[] = {
|
|
/*0*/ L_MISC(280), // Data uplink
|
|
/*1*/ L_MISC(279), // ECM mine
|
|
/*2*/ L_MISC(271), // CamSpy
|
|
/*3*/ L_MISC(272), // Night vision
|
|
/*4*/ L_MISC(273), // Door decoder
|
|
/*5*/ L_MISC(277), // R-tracker
|
|
/*6*/ L_MISC(276), // IR scanner
|
|
/*7*/ L_MISC(274), // X-ray scanner
|
|
/*8*/ L_MISC(275), // Disguise
|
|
/*9*/ L_MISC(278), // Cloak
|
|
};
|
|
|
|
return langGet(texts[func0f1a1d68(var80088ad8)]);
|
|
}
|
|
|
|
char *dtGetTip1(void)
|
|
{
|
|
u32 texts[] = {
|
|
/*0*/ L_MISC(357),
|
|
/*1*/ L_MISC(358),
|
|
/*2*/ L_MISC(359),
|
|
/*3*/ L_MISC(360),
|
|
/*4*/ L_MISC(361),
|
|
/*5*/ L_MISC(362),
|
|
/*6*/ L_MISC(363),
|
|
/*7*/ L_MISC(364),
|
|
/*8*/ L_MISC(365),
|
|
/*9*/ L_MISC(366),
|
|
};
|
|
|
|
return langGet(texts[func0f1a1d68(var80088ad8)]);
|
|
}
|
|
|
|
char *dtGetTip2(void)
|
|
{
|
|
u32 texts[] = {
|
|
/*0*/ L_MISC(367),
|
|
/*1*/ L_MISC(368),
|
|
/*2*/ L_MISC(369),
|
|
/*3*/ L_MISC(370),
|
|
/*4*/ L_MISC(371),
|
|
/*5*/ L_MISC(372),
|
|
/*6*/ L_MISC(373),
|
|
/*7*/ L_MISC(374),
|
|
/*8*/ L_MISC(375),
|
|
/*9*/ L_MISC(376),
|
|
};
|
|
|
|
return langGet(texts[func0f1a1d68(var80088ad8)]);
|
|
}
|
|
|
|
struct trainingdata *getHoloTrainingData(void)
|
|
{
|
|
return &g_HoloTrainingData;
|
|
}
|
|
|
|
void htPushEndscreen(void)
|
|
{
|
|
if (g_HoloTrainingData.completed) {
|
|
func0f0f85e0(&g_HoloTrainingStatsCompletedMenuDialog, MENUROOT_TRAINING);
|
|
} else if (g_HoloTrainingData.failed) {
|
|
func0f0f85e0(&g_HoloTrainingStatsFailedMenuDialog, MENUROOT_TRAINING);
|
|
}
|
|
|
|
g_HoloTrainingData.timeleft = 0;
|
|
g_HoloTrainingData.completed = false;
|
|
g_HoloTrainingData.failed = false;
|
|
g_HoloTrainingData.finished = false;
|
|
}
|
|
|
|
u8 var80088bb4 = 0;
|
|
u8 var80088bb8 = 0;
|
|
|
|
void htTick(void)
|
|
{
|
|
if (var80088bb8) {
|
|
if (g_HoloTrainingData.intraining) {
|
|
g_HoloTrainingData.timetaken += g_Vars.lvupdate240_60;
|
|
|
|
if (g_Vars.currentplayer->isdead) {
|
|
htEnd();
|
|
}
|
|
|
|
if (chrHasStageFlag(NULL, STAGEFLAG_CI_TRIGGER_HOLO_FAILURE)) {
|
|
htEnd();
|
|
g_HoloTrainingData.failed = true;
|
|
g_HoloTrainingData.timeleft = 1;
|
|
g_HoloTrainingData.finished = true;
|
|
} else if (chrHasStageFlag(NULL, STAGEFLAG_CI_TRIGGER_HOLO_SUCCESS)) {
|
|
htEnd();
|
|
g_HoloTrainingData.completed = true;
|
|
g_HoloTrainingData.timeleft = 1;
|
|
g_HoloTrainingData.finished = true;
|
|
}
|
|
} else if (g_HoloTrainingData.finished) {
|
|
if (g_HoloTrainingData.timeleft <= 0) {
|
|
htPushEndscreen();
|
|
} else {
|
|
g_HoloTrainingData.timeleft -= g_Vars.lvupdate240_60;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void func0f1a2198(void)
|
|
{
|
|
if (var80088bb8 == false) {
|
|
var80088bb8 = true;
|
|
g_HoloTrainingData.intraining = false;
|
|
g_HoloTrainingData.failed = false;
|
|
g_HoloTrainingData.completed = false;
|
|
g_HoloTrainingData.finished = false;
|
|
g_HoloTrainingData.timeleft = 0;
|
|
g_HoloTrainingData.timetaken = 0;
|
|
chrUnsetStageFlag(NULL, STAGEFLAG_CI_HOLO_ABORTING);
|
|
chrUnsetStageFlag(NULL, STAGEFLAG_CI_TRIGGER_HOLO_SUCCESS);
|
|
chrUnsetStageFlag(NULL, STAGEFLAG_CI_TRIGGER_HOLO_FAILURE);
|
|
}
|
|
}
|
|
|
|
void htBegin(void)
|
|
{
|
|
struct stagesetup00 *setup00 = g_StageSetup.unk00;
|
|
|
|
g_HoloTrainingData.intraining = true;
|
|
g_HoloTrainingData.timetaken = 0;
|
|
chrUnsetStageFlag(NULL, STAGEFLAG_CI_HOLO_ABORTING);
|
|
chrUnsetStageFlag(NULL, STAGEFLAG_CI_TRIGGER_HOLO_SUCCESS);
|
|
chrUnsetStageFlag(NULL, STAGEFLAG_CI_TRIGGER_HOLO_FAILURE);
|
|
chrSetStageFlag(NULL, func0f1a25c0(htGetIndexBySlot(var80088bb4)));
|
|
func0f115a48(&setup00->unk200, &setup00->unk310);
|
|
g_Vars.currentplayer->training = true;
|
|
playersSetPassiveMode(false);
|
|
chrSetStageFlag(NULL, STAGEFLAG_CI_IN_TRAINING);
|
|
}
|
|
|
|
void htEnd(void)
|
|
{
|
|
struct prop *prop;
|
|
s16 *propnum;
|
|
s16 propnums[256];
|
|
s16 rooms[5] = { 0x0016, 0x0017, 0x0018, 0x0019, -1 };
|
|
struct stagesetup00 *setup00 = g_StageSetup.unk00;
|
|
|
|
g_HoloTrainingData.intraining = false;
|
|
chrSetStageFlag(NULL, STAGEFLAG_CI_HOLO_ABORTING);
|
|
chrUnsetStageFlag(NULL, STAGEFLAG_CI_TRIGGER_HOLO_FAILURE);
|
|
chrUnsetStageFlag(NULL, func0f1a25c0(htGetIndexBySlot(var80088bb4)));
|
|
func0f115a78(&setup00->unk200, &setup00->unk310);
|
|
g_Vars.currentplayer->training = false;
|
|
roomGetProps(rooms, propnums, 256);
|
|
propnum = &propnums[0];
|
|
|
|
// Remove dropped weapons
|
|
while (*propnum >= 0) {
|
|
prop = &g_Vars.props[*propnum];
|
|
|
|
if (prop && prop->type == PROPTYPE_WEAPON) {
|
|
struct defaultobj *obj = prop->obj;
|
|
|
|
if (obj->type == OBJTYPE_WEAPON) {
|
|
setupParseObjectWithArg2False(obj, true);
|
|
}
|
|
}
|
|
|
|
propnum++;
|
|
}
|
|
|
|
playersSetPassiveMode(true);
|
|
chrUnsetStageFlag(NULL, STAGEFLAG_CI_IN_TRAINING);
|
|
func0f0bb69c();
|
|
g_Vars.currentplayer->bondhealth = 1;
|
|
}
|
|
|
|
bool htIsUnlocked(u32 value)
|
|
{
|
|
switch (value) {
|
|
case 0:
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
s32 htGetNumUnlocked(void)
|
|
{
|
|
s32 count = 0;
|
|
s32 i;
|
|
|
|
for (i = 0; i < 7; i++) {
|
|
if (htIsUnlocked(i)) {
|
|
count++;
|
|
}
|
|
}
|
|
|
|
return count;
|
|
}
|
|
|
|
s32 htGetIndexBySlot(s32 slot)
|
|
{
|
|
s32 index = -1;
|
|
s32 i;
|
|
|
|
for (i = 0; i < 7; i++) {
|
|
if (htIsUnlocked(i)) {
|
|
index++;
|
|
}
|
|
|
|
if (index == slot) {
|
|
return i;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
char *htGetName(s32 index)
|
|
{
|
|
u32 texts[] = {
|
|
L_MISC(410), // "Holo 1 - Looking Around"
|
|
L_MISC(411), // "Holo 2 - Movement 1"
|
|
L_MISC(412), // "Holo 3 - Movement 2"
|
|
L_MISC(413), // "Holo 4 - Unarmed Combat 1"
|
|
L_MISC(414), // "Holo 5 - Unarmed Combat 2"
|
|
L_MISC(415), // "Holo 6 - Live Combat 1"
|
|
L_MISC(416), // "Holo 7 - Live Combat 2"
|
|
};
|
|
|
|
return langGet(texts[index]);
|
|
}
|
|
|
|
u32 func0f1a25c0(s32 index)
|
|
{
|
|
u32 flags[] = {
|
|
STAGEFLAG_CI_IN_HOLO1,
|
|
STAGEFLAG_CI_IN_HOLO2,
|
|
STAGEFLAG_CI_IN_HOLO3,
|
|
STAGEFLAG_CI_IN_HOLO4,
|
|
STAGEFLAG_CI_IN_HOLO5,
|
|
STAGEFLAG_CI_IN_HOLO6,
|
|
STAGEFLAG_CI_IN_HOLO7,
|
|
STAGEFLAG_CI_GENERAL_PURPOSE,
|
|
};
|
|
|
|
return flags[index];
|
|
}
|
|
|
|
char *htGetDescription(void)
|
|
{
|
|
u32 texts[] = {
|
|
L_MISC(336),
|
|
L_MISC(337),
|
|
L_MISC(338),
|
|
L_MISC(339),
|
|
L_MISC(340),
|
|
L_MISC(341),
|
|
L_MISC(342),
|
|
};
|
|
|
|
return langGet(texts[htGetIndexBySlot(var80088bb4)]);
|
|
}
|
|
|
|
char *htGetTip1(void)
|
|
{
|
|
u32 texts[] = {
|
|
L_MISC(343), // "For greater precision..."
|
|
L_MISC(344), // "Think about where you want to go..."
|
|
L_MISC(345), // "Ducking enables you to..."
|
|
L_MISC(346), // "Attacking opponents from behind..."
|
|
L_MISC(347), // "Only stay close long enough..."
|
|
L_MISC(348), // "Don't hang around and wait..."
|
|
L_MISC(349), // "Go for the armed opponents..."
|
|
};
|
|
|
|
return langGet(texts[htGetIndexBySlot(var80088bb4)]);
|
|
}
|
|
|
|
char *htGetTip2(void)
|
|
{
|
|
u32 texts[] = {
|
|
L_MISC(350), // "For greater precision..."
|
|
L_MISC(351), // "Sidestepping and strafing..."
|
|
L_MISC(352), // "Ducking enables you to..."
|
|
L_MISC(353), // "Attacking opponents from behind..."
|
|
L_MISC(354), // "Only stay close long enough..."
|
|
L_MISC(355), // "Don't hang around and wait..."
|
|
L_MISC(356), // "Go for the armed opponents..."
|
|
};
|
|
|
|
return langGet(texts[htGetIndexBySlot(var80088bb4)]);
|
|
}
|
|
|
|
void frGetGoalTargetsText(char *buffer)
|
|
{
|
|
// "GOAL TARGETS:"
|
|
sprintf(buffer, "%s %d\n", langGet(L_MISC(417)), g_FiringRangeData.goaltargets);
|
|
}
|
|
|
|
void frGetTargetsDestroyedValue(char *buffer)
|
|
{
|
|
sprintf(buffer, "%02d\n", g_FiringRangeData.targetsdestroyed);
|
|
}
|
|
|
|
void frGetScoreValue(char *buffer)
|
|
{
|
|
sprintf(buffer, "%03d\n", g_FiringRangeData.score);
|
|
}
|
|
|
|
void frGetGoalScoreText(char *buffer)
|
|
{
|
|
if (g_FiringRangeData.goalscore) {
|
|
// "GOAL SCORE:"
|
|
sprintf(buffer, "%s %d\n", langGet(L_MISC(418)), g_FiringRangeData.goalscore);
|
|
} else {
|
|
sprintf(buffer, "");
|
|
}
|
|
}
|
|
|
|
f32 frGetAccuracy(char *buffer)
|
|
{
|
|
f32 sum = (g_FiringRangeData.numhitstype4
|
|
+ g_FiringRangeData.numhitstype1
|
|
+ g_FiringRangeData.numhitstype2
|
|
+ g_FiringRangeData.numhitstype3) * 100.0f;
|
|
f32 accuracy = 100.0f;
|
|
|
|
if (g_FiringRangeData.numshots) {
|
|
accuracy = sum / (f32)g_FiringRangeData.numshots;
|
|
}
|
|
|
|
if (accuracy > 100.0f) {
|
|
accuracy = 100.0f;
|
|
}
|
|
|
|
sprintf(buffer, "%s%s%.2f%%\n", "", "", accuracy);
|
|
|
|
return accuracy;
|
|
}
|
|
|
|
bool frGetMinAccuracy(char *buffer, f32 accuracy)
|
|
{
|
|
// "MIN ACCURACY:"
|
|
sprintf(buffer, "%s %d%%\n", langGet(L_MISC(419)), g_FiringRangeData.goalaccuracy);
|
|
|
|
return accuracy < g_FiringRangeData.goalaccuracy;
|
|
}
|
|
|
|
/**
|
|
* Formats either the time taken or time limit into buffer, and returns true if
|
|
* the time should induce a failure.
|
|
*
|
|
* The time limit will be used if it exists and the time take exceeds it,
|
|
* otherwise time taken will be used.
|
|
*
|
|
* Negative time taken (such as when the player aborts before the challenge
|
|
* starts) is wrapped to positive and will induce a failure.
|
|
*/
|
|
bool frFormatTime(char *buffer)
|
|
{
|
|
s32 mins = 0;
|
|
s32 mult = 1;
|
|
f32 secs = g_FiringRangeData.timetaken / 60.0f;
|
|
u8 failed = false;
|
|
|
|
if (g_FiringRangeData.timelimit != 255 && secs >= g_FiringRangeData.timelimit) {
|
|
failed = true;
|
|
secs = g_FiringRangeData.timelimit;
|
|
} else if (g_FiringRangeData.timetaken < 0) {
|
|
failed = true;
|
|
}
|
|
|
|
if (secs < 0) {
|
|
mult = -1;
|
|
secs = -secs;
|
|
}
|
|
|
|
if (secs >= 60) {
|
|
while (secs >= 60) {
|
|
secs -= 60;
|
|
mins++;
|
|
}
|
|
}
|
|
|
|
sprintf(buffer, "%02d:%02d\n", mult * mins, (s32)secs);
|
|
|
|
return failed;
|
|
}
|
|
|
|
bool frGetHudMiddleSubtext(char *buffer)
|
|
{
|
|
s32 secs;
|
|
s32 mins;
|
|
|
|
if (g_FiringRangeData.timetaken < -180) {
|
|
sprintf(buffer, "%s", langGet(L_MISC(420))); // "FIRE TO START"
|
|
return false;
|
|
}
|
|
|
|
if (g_FiringRangeData.timetaken < 0) {
|
|
sprintf(buffer, "%s", langGet(L_MISC(421))); // "GET READY!"
|
|
return true;
|
|
}
|
|
|
|
if (g_FiringRangeData.timelimit == 255) {
|
|
return false;
|
|
}
|
|
|
|
secs = g_FiringRangeData.timelimit;
|
|
mins = 0;
|
|
|
|
if (secs >= 60) {
|
|
while (secs >= 60) {
|
|
secs -= 60;
|
|
mins++;
|
|
}
|
|
}
|
|
|
|
sprintf(buffer, "%s %02d:%02d\n", langGet(L_MISC(422)), mins, secs); // "LIMIT:"
|
|
return true;
|
|
}
|
|
|
|
bool frGetFeedback(char *scorebuffer, char *zonebuffer)
|
|
{
|
|
u32 texts[] = {
|
|
L_MISC(423), // "ZONE 3"
|
|
L_MISC(424), // "ZONE 2"
|
|
L_MISC(425), // "ZONE 1"
|
|
L_MISC(426), // "BULL'S-EYE"
|
|
L_MISC(427), // "EXPLODED"
|
|
};
|
|
|
|
if (g_FiringRangeData.feedbackzone) {
|
|
g_FiringRangeData.feedbackttl -= g_Vars.lvupdate240_60;
|
|
|
|
if (g_FiringRangeData.feedbackttl <= 0) {
|
|
g_FiringRangeData.feedbackzone = 0;
|
|
g_FiringRangeData.feedbackttl = 0;
|
|
return false;
|
|
}
|
|
|
|
if (g_FiringRangeData.feedbackzone == FRZONE_EXPLODE) {
|
|
sprintf(scorebuffer, "010\n");
|
|
} else {
|
|
sprintf(scorebuffer, "%03d\n", g_FiringRangeData.feedbackzone);
|
|
}
|
|
|
|
switch (g_FiringRangeData.feedbackzone) {
|
|
case FRZONE_RING3:
|
|
sprintf(zonebuffer, "%s", langGet(texts[0]));
|
|
return true;
|
|
case FRZONE_RING2:
|
|
sprintf(zonebuffer, "%s", langGet(texts[1]));
|
|
return true;
|
|
case FRZONE_RING1:
|
|
sprintf(zonebuffer, "%s", langGet(texts[2]));
|
|
return true;
|
|
case FRZONE_BULLSEYE:
|
|
sprintf(zonebuffer, "%s", langGet(texts[3]));
|
|
return true;
|
|
case FRZONE_EXPLODE:
|
|
sprintf(zonebuffer, "%s", langGet(texts[4]));
|
|
return true;
|
|
}
|
|
|
|
sprintf(zonebuffer, "\n");
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
GLOBAL_ASM(
|
|
glabel func0f1a2d88
|
|
/* f1a2d88: 27bdff98 */ addiu $sp,$sp,-104
|
|
/* f1a2d8c: afa60070 */ sw $a2,0x70($sp)
|
|
/* f1a2d90: 3c0e8008 */ lui $t6,%hi(var8007fb14)
|
|
/* f1a2d94: 8dcefb14 */ lw $t6,%lo(var8007fb14)($t6)
|
|
/* f1a2d98: afb00038 */ sw $s0,0x38($sp)
|
|
/* f1a2d9c: afa70074 */ sw $a3,0x74($sp)
|
|
/* f1a2da0: 00e03025 */ or $a2,$a3,$zero
|
|
/* f1a2da4: 00808025 */ or $s0,$a0,$zero
|
|
/* f1a2da8: afbf003c */ sw $ra,0x3c($sp)
|
|
/* f1a2dac: afa5006c */ sw $a1,0x6c($sp)
|
|
/* f1a2db0: 3c078008 */ lui $a3,%hi(var8007fb18)
|
|
/* f1a2db4: 8ce7fb18 */ lw $a3,%lo(var8007fb18)($a3)
|
|
/* f1a2db8: 27a50060 */ addiu $a1,$sp,0x60
|
|
/* f1a2dbc: 27a40064 */ addiu $a0,$sp,0x64
|
|
/* f1a2dc0: afa00014 */ sw $zero,0x14($sp)
|
|
/* f1a2dc4: 0fc55cbe */ jal textMeasure
|
|
/* f1a2dc8: afae0010 */ sw $t6,0x10($sp)
|
|
/* f1a2dcc: 8fb80060 */ lw $t8,0x60($sp)
|
|
/* f1a2dd0: 8faf006c */ lw $t7,0x6c($sp)
|
|
/* f1a2dd4: 8fab0070 */ lw $t3,0x70($sp)
|
|
/* f1a2dd8: 0018c843 */ sra $t9,$t8,0x1
|
|
/* f1a2ddc: 27ac0064 */ addiu $t4,$sp,0x64
|
|
/* f1a2de0: 01f95023 */ subu $t2,$t7,$t9
|
|
/* f1a2de4: afaa005c */ sw $t2,0x5c($sp)
|
|
/* f1a2de8: afac0010 */ sw $t4,0x10($sp)
|
|
/* f1a2dec: 02002025 */ or $a0,$s0,$zero
|
|
/* f1a2df0: 27a5005c */ addiu $a1,$sp,0x5c
|
|
/* f1a2df4: 27a60058 */ addiu $a2,$sp,0x58
|
|
/* f1a2df8: 27a70060 */ addiu $a3,$sp,0x60
|
|
/* f1a2dfc: 0fc54e16 */ jal func0f153858
|
|
/* f1a2e00: afab0058 */ sw $t3,0x58($sp)
|
|
/* f1a2e04: 0c002f02 */ jal viGetX
|
|
/* f1a2e08: 00408025 */ or $s0,$v0,$zero
|
|
/* f1a2e0c: 0c002f06 */ jal viGetY
|
|
/* f1a2e10: a7a2004c */ sh $v0,0x4c($sp)
|
|
/* f1a2e14: 93a30083 */ lbu $v1,0x83($sp)
|
|
/* f1a2e18: 8fb8007c */ lw $t8,0x7c($sp)
|
|
/* f1a2e1c: 3c0d8008 */ lui $t5,%hi(var8007fb18)
|
|
/* f1a2e20: 3c0e8008 */ lui $t6,%hi(var8007fb14)
|
|
/* f1a2e24: 2401ff00 */ addiu $at,$zero,-256
|
|
/* f1a2e28: 8dcefb14 */ lw $t6,%lo(var8007fb14)($t6)
|
|
/* f1a2e2c: 8dadfb18 */ lw $t5,%lo(var8007fb18)($t5)
|
|
/* f1a2e30: 87b9004c */ lh $t9,0x4c($sp)
|
|
/* f1a2e34: 03017824 */ and $t7,$t8,$at
|
|
/* f1a2e38: 01e34825 */ or $t1,$t7,$v1
|
|
/* f1a2e3c: 00034043 */ sra $t0,$v1,0x1
|
|
/* f1a2e40: afa8001c */ sw $t0,0x1c($sp)
|
|
/* f1a2e44: afa80048 */ sw $t0,0x48($sp)
|
|
/* f1a2e48: afa90018 */ sw $t1,0x18($sp)
|
|
/* f1a2e4c: afa90044 */ sw $t1,0x44($sp)
|
|
/* f1a2e50: 02002025 */ or $a0,$s0,$zero
|
|
/* f1a2e54: 27a5005c */ addiu $a1,$sp,0x5c
|
|
/* f1a2e58: 27a60058 */ addiu $a2,$sp,0x58
|
|
/* f1a2e5c: 8fa70074 */ lw $a3,0x74($sp)
|
|
/* f1a2e60: afa20024 */ sw $v0,0x24($sp)
|
|
/* f1a2e64: afa00028 */ sw $zero,0x28($sp)
|
|
/* f1a2e68: afa0002c */ sw $zero,0x2c($sp)
|
|
/* f1a2e6c: afae0014 */ sw $t6,0x14($sp)
|
|
/* f1a2e70: afad0010 */ sw $t5,0x10($sp)
|
|
/* f1a2e74: 0fc55b92 */ jal textRender
|
|
/* f1a2e78: afb90020 */ sw $t9,0x20($sp)
|
|
/* f1a2e7c: 8fa60078 */ lw $a2,0x78($sp)
|
|
/* f1a2e80: 00408025 */ or $s0,$v0,$zero
|
|
/* f1a2e84: 27a40064 */ addiu $a0,$sp,0x64
|
|
/* f1a2e88: 10c00030 */ beqz $a2,.L0f1a2f4c
|
|
/* f1a2e8c: 27a50060 */ addiu $a1,$sp,0x60
|
|
/* f1a2e90: 3c0a8008 */ lui $t2,%hi(var8007fb04)
|
|
/* f1a2e94: 8d4afb04 */ lw $t2,%lo(var8007fb04)($t2)
|
|
/* f1a2e98: 3c078008 */ lui $a3,%hi(var8007fb08)
|
|
/* f1a2e9c: 8ce7fb08 */ lw $a3,%lo(var8007fb08)($a3)
|
|
/* f1a2ea0: afa00014 */ sw $zero,0x14($sp)
|
|
/* f1a2ea4: 0fc55cbe */ jal textMeasure
|
|
/* f1a2ea8: afaa0010 */ sw $t2,0x10($sp)
|
|
/* f1a2eac: 8fac0060 */ lw $t4,0x60($sp)
|
|
/* f1a2eb0: 8fab006c */ lw $t3,0x6c($sp)
|
|
/* f1a2eb4: 8fb80070 */ lw $t8,0x70($sp)
|
|
/* f1a2eb8: 000c6843 */ sra $t5,$t4,0x1
|
|
/* f1a2ebc: 27b90064 */ addiu $t9,$sp,0x64
|
|
/* f1a2ec0: 016d7023 */ subu $t6,$t3,$t5
|
|
/* f1a2ec4: 270f0011 */ addiu $t7,$t8,0x11
|
|
/* f1a2ec8: afae005c */ sw $t6,0x5c($sp)
|
|
/* f1a2ecc: afaf0058 */ sw $t7,0x58($sp)
|
|
/* f1a2ed0: afb90010 */ sw $t9,0x10($sp)
|
|
/* f1a2ed4: 02002025 */ or $a0,$s0,$zero
|
|
/* f1a2ed8: 27a5005c */ addiu $a1,$sp,0x5c
|
|
/* f1a2edc: 27a60058 */ addiu $a2,$sp,0x58
|
|
/* f1a2ee0: 0fc54e16 */ jal func0f153858
|
|
/* f1a2ee4: 27a70060 */ addiu $a3,$sp,0x60
|
|
/* f1a2ee8: 0c002f02 */ jal viGetX
|
|
/* f1a2eec: 00408025 */ or $s0,$v0,$zero
|
|
/* f1a2ef0: 0c002f06 */ jal viGetY
|
|
/* f1a2ef4: a7a2004c */ sh $v0,0x4c($sp)
|
|
/* f1a2ef8: 3c0a8008 */ lui $t2,%hi(var8007fb08)
|
|
/* f1a2efc: 3c0c8008 */ lui $t4,%hi(var8007fb04)
|
|
/* f1a2f00: 8d8cfb04 */ lw $t4,%lo(var8007fb04)($t4)
|
|
/* f1a2f04: 8d4afb08 */ lw $t2,%lo(var8007fb08)($t2)
|
|
/* f1a2f08: 8fab0044 */ lw $t3,0x44($sp)
|
|
/* f1a2f0c: 8fad0048 */ lw $t5,0x48($sp)
|
|
/* f1a2f10: 87ae004c */ lh $t6,0x4c($sp)
|
|
/* f1a2f14: 02002025 */ or $a0,$s0,$zero
|
|
/* f1a2f18: 27a5005c */ addiu $a1,$sp,0x5c
|
|
/* f1a2f1c: 27a60058 */ addiu $a2,$sp,0x58
|
|
/* f1a2f20: 8fa70078 */ lw $a3,0x78($sp)
|
|
/* f1a2f24: afa20024 */ sw $v0,0x24($sp)
|
|
/* f1a2f28: afa00028 */ sw $zero,0x28($sp)
|
|
/* f1a2f2c: afa0002c */ sw $zero,0x2c($sp)
|
|
/* f1a2f30: afac0014 */ sw $t4,0x14($sp)
|
|
/* f1a2f34: afaa0010 */ sw $t2,0x10($sp)
|
|
/* f1a2f38: afab0018 */ sw $t3,0x18($sp)
|
|
/* f1a2f3c: afad001c */ sw $t5,0x1c($sp)
|
|
/* f1a2f40: 0fc55b92 */ jal textRender
|
|
/* f1a2f44: afae0020 */ sw $t6,0x20($sp)
|
|
/* f1a2f48: 00408025 */ or $s0,$v0,$zero
|
|
.L0f1a2f4c:
|
|
/* f1a2f4c: 8fbf003c */ lw $ra,0x3c($sp)
|
|
/* f1a2f50: 02001025 */ or $v0,$s0,$zero
|
|
/* f1a2f54: 8fb00038 */ lw $s0,0x38($sp)
|
|
/* f1a2f58: 03e00008 */ jr $ra
|
|
/* f1a2f5c: 27bd0068 */ addiu $sp,$sp,0x68
|
|
);
|
|
|
|
GLOBAL_ASM(
|
|
glabel func0f1a2f60
|
|
.late_rodata
|
|
glabel var7f1b97cc
|
|
.word 0x4019999a
|
|
.text
|
|
/* f1a2f60: 27bdfea8 */ addiu $sp,$sp,-344
|
|
/* f1a2f64: afbf0024 */ sw $ra,0x24($sp)
|
|
/* f1a2f68: 240e00a0 */ addiu $t6,$zero,0xa0
|
|
/* f1a2f6c: afa40158 */ sw $a0,0x158($sp)
|
|
/* f1a2f70: 0c002f22 */ jal viGetViewX
|
|
/* f1a2f74: afae004c */ sw $t6,0x4c($sp)
|
|
/* f1a2f78: 28410191 */ slti $at,$v0,0x191
|
|
/* f1a2f7c: 14200005 */ bnez $at,.L0f1a2f94
|
|
/* f1a2f80: 3c0f8009 */ lui $t7,%hi(g_FrIsValidWeapon)
|
|
/* f1a2f84: 3c014000 */ lui $at,0x4000
|
|
/* f1a2f88: 44812000 */ mtc1 $at,$f4
|
|
/* f1a2f8c: 10000005 */ b .L0f1a2fa4
|
|
/* f1a2f90: e7a40048 */ swc1 $f4,0x48($sp)
|
|
.L0f1a2f94:
|
|
/* f1a2f94: 3c013f80 */ lui $at,0x3f80
|
|
/* f1a2f98: 44813000 */ mtc1 $at,$f6
|
|
/* f1a2f9c: 00000000 */ nop
|
|
/* f1a2fa0: e7a60048 */ swc1 $f6,0x48($sp)
|
|
.L0f1a2fa4:
|
|
/* f1a2fa4: 91ef8804 */ lbu $t7,%lo(g_FrIsValidWeapon)($t7)
|
|
/* f1a2fa8: 3c18800b */ lui $t8,%hi(g_FiringRangeData+0x464)
|
|
/* f1a2fac: 3c02800b */ lui $v0,%hi(g_FiringRangeData+0x464)
|
|
/* f1a2fb0: 15e00006 */ bnez $t7,.L0f1a2fcc
|
|
/* f1a2fb4: 00000000 */ nop
|
|
/* f1a2fb8: 8318d184 */ lb $t8,%lo(g_FiringRangeData+0x464)($t8)
|
|
/* f1a2fbc: 1f000003 */ bgtz $t8,.L0f1a2fcc
|
|
/* f1a2fc0: 00000000 */ nop
|
|
/* f1a2fc4: 100000d9 */ b .L0f1a332c
|
|
/* f1a2fc8: 8fa20158 */ lw $v0,0x158($sp)
|
|
.L0f1a2fcc:
|
|
/* f1a2fcc: 8042d184 */ lb $v0,%lo(g_FiringRangeData+0x464)($v0)
|
|
/* f1a2fd0: 1040000c */ beqz $v0,.L0f1a3004
|
|
/* f1a2fd4: 0002c880 */ sll $t9,$v0,0x2
|
|
/* f1a2fd8: 0322c821 */ addu $t9,$t9,$v0
|
|
/* f1a2fdc: 0019c940 */ sll $t9,$t9,0x5
|
|
/* f1a2fe0: 44994000 */ mtc1 $t9,$f8
|
|
/* f1a2fe4: 3c014270 */ lui $at,0x4270
|
|
/* f1a2fe8: 44818000 */ mtc1 $at,$f16
|
|
/* f1a2fec: 468042a0 */ cvt.s.w $f10,$f8
|
|
/* f1a2ff0: 46105483 */ div.s $f18,$f10,$f16
|
|
/* f1a2ff4: 4600910d */ trunc.w.s $f4,$f18
|
|
/* f1a2ff8: 440b2000 */ mfc1 $t3,$f4
|
|
/* f1a2ffc: 00000000 */ nop
|
|
/* f1a3000: afab004c */ sw $t3,0x4c($sp)
|
|
.L0f1a3004:
|
|
/* f1a3004: 0fc54d8a */ jal func0f153628
|
|
/* f1a3008: 8fa40158 */ lw $a0,0x158($sp)
|
|
/* f1a300c: afa20158 */ sw $v0,0x158($sp)
|
|
/* f1a3010: 0fc68a6e */ jal frFormatTime
|
|
/* f1a3014: 27a400d8 */ addiu $a0,$sp,0xd8
|
|
/* f1a3018: afa20054 */ sw $v0,0x54($sp)
|
|
/* f1a301c: 0fc68ab4 */ jal frGetHudMiddleSubtext
|
|
/* f1a3020: 27a40058 */ addiu $a0,$sp,0x58
|
|
/* f1a3024: 0c002f22 */ jal viGetViewX
|
|
/* f1a3028: afa20050 */ sw $v0,0x50($sp)
|
|
/* f1a302c: 0c002f44 */ jal viGetViewTop
|
|
/* f1a3030: a7a2003c */ sh $v0,0x3c($sp)
|
|
/* f1a3034: 8fad0050 */ lw $t5,0x50($sp)
|
|
/* f1a3038: 00021c00 */ sll $v1,$v0,0x10
|
|
/* f1a303c: 00036403 */ sra $t4,$v1,0x10
|
|
/* f1a3040: 11a00003 */ beqz $t5,.L0f1a3050
|
|
/* f1a3044: 01801825 */ or $v1,$t4,$zero
|
|
/* f1a3048: 10000002 */ b .L0f1a3054
|
|
/* f1a304c: 27a80058 */ addiu $t0,$sp,0x58
|
|
.L0f1a3050:
|
|
/* f1a3050: 00004025 */ or $t0,$zero,$zero
|
|
.L0f1a3054:
|
|
/* f1a3054: 8fae0054 */ lw $t6,0x54($sp)
|
|
/* f1a3058: 87a5003c */ lh $a1,0x3c($sp)
|
|
/* f1a305c: 8fa40158 */ lw $a0,0x158($sp)
|
|
/* f1a3060: 11c00004 */ beqz $t6,.L0f1a3074
|
|
/* f1a3064: 00057843 */ sra $t7,$a1,0x1
|
|
/* f1a3068: 3c02ff00 */ lui $v0,0xff00
|
|
/* f1a306c: 10000003 */ b .L0f1a307c
|
|
/* f1a3070: 344200a0 */ ori $v0,$v0,0xa0
|
|
.L0f1a3074:
|
|
/* f1a3074: 3c0200ff */ lui $v0,0xff
|
|
/* f1a3078: 344200a0 */ ori $v0,$v0,0xa0
|
|
.L0f1a307c:
|
|
/* f1a307c: 93a9004f */ lbu $t1,0x4f($sp)
|
|
/* f1a3080: 01e02825 */ or $a1,$t7,$zero
|
|
/* f1a3084: 2466000c */ addiu $a2,$v1,0xc
|
|
/* f1a3088: 27a700d8 */ addiu $a3,$sp,0xd8
|
|
/* f1a308c: afa80010 */ sw $t0,0x10($sp)
|
|
/* f1a3090: afa20014 */ sw $v0,0x14($sp)
|
|
/* f1a3094: afa90018 */ sw $t1,0x18($sp)
|
|
/* f1a3098: 0fc68b62 */ jal func0f1a2d88
|
|
/* f1a309c: afa90030 */ sw $t1,0x30($sp)
|
|
/* f1a30a0: afa20158 */ sw $v0,0x158($sp)
|
|
/* f1a30a4: 0fc689fe */ jal frGetScoreValue
|
|
/* f1a30a8: 27a400d8 */ addiu $a0,$sp,0xd8
|
|
/* f1a30ac: 0fc68a09 */ jal frGetGoalScoreText
|
|
/* f1a30b0: 27a40058 */ addiu $a0,$sp,0x58
|
|
/* f1a30b4: 0c002f40 */ jal viGetViewLeft
|
|
/* f1a30b8: 00000000 */ nop
|
|
/* f1a30bc: 0c002f44 */ jal viGetViewTop
|
|
/* f1a30c0: a7a2003c */ sh $v0,0x3c($sp)
|
|
/* f1a30c4: 87b8003c */ lh $t8,0x3c($sp)
|
|
/* f1a30c8: 3c014282 */ lui $at,0x4282
|
|
/* f1a30cc: 44813000 */ mtc1 $at,$f6
|
|
/* f1a30d0: c7a80048 */ lwc1 $f8,0x48($sp)
|
|
/* f1a30d4: 44985000 */ mtc1 $t8,$f10
|
|
/* f1a30d8: 8fac0030 */ lw $t4,0x30($sp)
|
|
/* f1a30dc: 46083002 */ mul.s $f0,$f6,$f8
|
|
/* f1a30e0: 3c0b00ff */ lui $t3,0xff
|
|
/* f1a30e4: 356b00a0 */ ori $t3,$t3,0xa0
|
|
/* f1a30e8: 27aa0058 */ addiu $t2,$sp,0x58
|
|
/* f1a30ec: afaa0010 */ sw $t2,0x10($sp)
|
|
/* f1a30f0: afab0014 */ sw $t3,0x14($sp)
|
|
/* f1a30f4: 46805420 */ cvt.s.w $f16,$f10
|
|
/* f1a30f8: e7a0002c */ swc1 $f0,0x2c($sp)
|
|
/* f1a30fc: 8fa40158 */ lw $a0,0x158($sp)
|
|
/* f1a3100: 2446000c */ addiu $a2,$v0,0xc
|
|
/* f1a3104: 27a700d8 */ addiu $a3,$sp,0xd8
|
|
/* f1a3108: afac0018 */ sw $t4,0x18($sp)
|
|
/* f1a310c: 46008480 */ add.s $f18,$f16,$f0
|
|
/* f1a3110: 4600910d */ trunc.w.s $f4,$f18
|
|
/* f1a3114: 44052000 */ mfc1 $a1,$f4
|
|
/* f1a3118: 0fc68b62 */ jal func0f1a2d88
|
|
/* f1a311c: 00000000 */ nop
|
|
/* f1a3120: afa20158 */ sw $v0,0x158($sp)
|
|
/* f1a3124: 27a400d8 */ addiu $a0,$sp,0xd8
|
|
/* f1a3128: 0fc68af1 */ jal frGetFeedback
|
|
/* f1a312c: 27a50058 */ addiu $a1,$sp,0x58
|
|
/* f1a3130: 10400019 */ beqz $v0,.L0f1a3198
|
|
/* f1a3134: 00000000 */ nop
|
|
/* f1a3138: 0c002f40 */ jal viGetViewLeft
|
|
/* f1a313c: 00000000 */ nop
|
|
/* f1a3140: 0c002f44 */ jal viGetViewTop
|
|
/* f1a3144: a7a2003c */ sh $v0,0x3c($sp)
|
|
/* f1a3148: 87ad003c */ lh $t5,0x3c($sp)
|
|
/* f1a314c: c7aa002c */ lwc1 $f10,0x2c($sp)
|
|
/* f1a3150: 8fb90030 */ lw $t9,0x30($sp)
|
|
/* f1a3154: 448d3000 */ mtc1 $t5,$f6
|
|
/* f1a3158: 3c1800ff */ lui $t8,0xff
|
|
/* f1a315c: 371800a0 */ ori $t8,$t8,0xa0
|
|
/* f1a3160: 46803220 */ cvt.s.w $f8,$f6
|
|
/* f1a3164: 27af0058 */ addiu $t7,$sp,0x58
|
|
/* f1a3168: afaf0010 */ sw $t7,0x10($sp)
|
|
/* f1a316c: afb80014 */ sw $t8,0x14($sp)
|
|
/* f1a3170: 8fa40158 */ lw $a0,0x158($sp)
|
|
/* f1a3174: 24460028 */ addiu $a2,$v0,0x28
|
|
/* f1a3178: 460a4400 */ add.s $f16,$f8,$f10
|
|
/* f1a317c: 27a700d8 */ addiu $a3,$sp,0xd8
|
|
/* f1a3180: afb90018 */ sw $t9,0x18($sp)
|
|
/* f1a3184: 4600848d */ trunc.w.s $f18,$f16
|
|
/* f1a3188: 44059000 */ mfc1 $a1,$f18
|
|
/* f1a318c: 0fc68b62 */ jal func0f1a2d88
|
|
/* f1a3190: 00000000 */ nop
|
|
/* f1a3194: afa20158 */ sw $v0,0x158($sp)
|
|
.L0f1a3198:
|
|
/* f1a3198: 3c02800b */ lui $v0,%hi(g_FiringRangeData)
|
|
/* f1a319c: 2442cd20 */ addiu $v0,$v0,%lo(g_FiringRangeData)
|
|
/* f1a31a0: 904a0008 */ lbu $t2,0x8($v0)
|
|
/* f1a31a4: 5940002f */ blezl $t2,.L0f1a3264
|
|
/* f1a31a8: 904b0004 */ lbu $t3,0x4($v0)
|
|
/* f1a31ac: 0fc68a22 */ jal frGetAccuracy
|
|
/* f1a31b0: 27a400d8 */ addiu $a0,$sp,0xd8
|
|
/* f1a31b4: 44050000 */ mfc1 $a1,$f0
|
|
/* f1a31b8: 0fc68a4f */ jal frGetMinAccuracy
|
|
/* f1a31bc: 27a40058 */ addiu $a0,$sp,0x58
|
|
/* f1a31c0: 0c002f40 */ jal viGetViewLeft
|
|
/* f1a31c4: afa20054 */ sw $v0,0x54($sp)
|
|
/* f1a31c8: 0c002f22 */ jal viGetViewX
|
|
/* f1a31cc: a7a20036 */ sh $v0,0x36($sp)
|
|
/* f1a31d0: 0c002f44 */ jal viGetViewTop
|
|
/* f1a31d4: a7a2003c */ sh $v0,0x3c($sp)
|
|
/* f1a31d8: 8fac0054 */ lw $t4,0x54($sp)
|
|
/* f1a31dc: 00021c00 */ sll $v1,$v0,0x10
|
|
/* f1a31e0: 00035c03 */ sra $t3,$v1,0x10
|
|
/* f1a31e4: 11800004 */ beqz $t4,.L0f1a31f8
|
|
/* f1a31e8: 01601825 */ or $v1,$t3,$zero
|
|
/* f1a31ec: 3c02ff00 */ lui $v0,0xff00
|
|
/* f1a31f0: 10000003 */ b .L0f1a3200
|
|
/* f1a31f4: 344200a0 */ ori $v0,$v0,0xa0
|
|
.L0f1a31f8:
|
|
/* f1a31f8: 3c0200ff */ lui $v0,0xff
|
|
/* f1a31fc: 344200a0 */ ori $v0,$v0,0xa0
|
|
.L0f1a3200:
|
|
/* f1a3200: 87ad003c */ lh $t5,0x3c($sp)
|
|
/* f1a3204: 87ae0036 */ lh $t6,0x36($sp)
|
|
/* f1a3208: 3c01428c */ lui $at,0x428c
|
|
/* f1a320c: 44814000 */ mtc1 $at,$f8
|
|
/* f1a3210: c7aa0048 */ lwc1 $f10,0x48($sp)
|
|
/* f1a3214: 01ae7821 */ addu $t7,$t5,$t6
|
|
/* f1a3218: 448f2000 */ mtc1 $t7,$f4
|
|
/* f1a321c: 460a4402 */ mul.s $f16,$f8,$f10
|
|
/* f1a3220: 8faa0030 */ lw $t2,0x30($sp)
|
|
/* f1a3224: 27b90058 */ addiu $t9,$sp,0x58
|
|
/* f1a3228: afb90010 */ sw $t9,0x10($sp)
|
|
/* f1a322c: 8fa40158 */ lw $a0,0x158($sp)
|
|
/* f1a3230: 2466000c */ addiu $a2,$v1,0xc
|
|
/* f1a3234: 468021a0 */ cvt.s.w $f6,$f4
|
|
/* f1a3238: 27a700d8 */ addiu $a3,$sp,0xd8
|
|
/* f1a323c: afa20014 */ sw $v0,0x14($sp)
|
|
/* f1a3240: afaa0018 */ sw $t2,0x18($sp)
|
|
/* f1a3244: 46103481 */ sub.s $f18,$f6,$f16
|
|
/* f1a3248: 4600910d */ trunc.w.s $f4,$f18
|
|
/* f1a324c: 44052000 */ mfc1 $a1,$f4
|
|
/* f1a3250: 0fc68b62 */ jal func0f1a2d88
|
|
/* f1a3254: 00000000 */ nop
|
|
/* f1a3258: 10000032 */ b .L0f1a3324
|
|
/* f1a325c: afa20158 */ sw $v0,0x158($sp)
|
|
/* f1a3260: 904b0004 */ lbu $t3,0x4($v0)
|
|
.L0f1a3264:
|
|
/* f1a3264: 240100ff */ addiu $at,$zero,0xff
|
|
/* f1a3268: 1161002e */ beq $t3,$at,.L0f1a3324
|
|
/* f1a326c: 00000000 */ nop
|
|
/* f1a3270: 0fc689f3 */ jal frGetTargetsDestroyedValue
|
|
/* f1a3274: 27a400d8 */ addiu $a0,$sp,0xd8
|
|
/* f1a3278: 0fc689e3 */ jal frGetGoalTargetsText
|
|
/* f1a327c: 27a40058 */ addiu $a0,$sp,0x58
|
|
/* f1a3280: 3c014000 */ lui $at,0x4000
|
|
/* f1a3284: 44815000 */ mtc1 $at,$f10
|
|
/* f1a3288: c7a80048 */ lwc1 $f8,0x48($sp)
|
|
/* f1a328c: 3c017f1c */ lui $at,%hi(var7f1b97cc)
|
|
/* f1a3290: 460a4032 */ c.eq.s $f8,$f10
|
|
/* f1a3294: 00000000 */ nop
|
|
/* f1a3298: 45000003 */ bc1f .L0f1a32a8
|
|
/* f1a329c: 00000000 */ nop
|
|
/* f1a32a0: c42697cc */ lwc1 $f6,%lo(var7f1b97cc)($at)
|
|
/* f1a32a4: e7a60048 */ swc1 $f6,0x48($sp)
|
|
.L0f1a32a8:
|
|
/* f1a32a8: 0c002f40 */ jal viGetViewLeft
|
|
/* f1a32ac: 00000000 */ nop
|
|
/* f1a32b0: 0c002f22 */ jal viGetViewX
|
|
/* f1a32b4: a7a20036 */ sh $v0,0x36($sp)
|
|
/* f1a32b8: 0c002f44 */ jal viGetViewTop
|
|
/* f1a32bc: a7a2003c */ sh $v0,0x3c($sp)
|
|
/* f1a32c0: 87ac003c */ lh $t4,0x3c($sp)
|
|
/* f1a32c4: 87ad0036 */ lh $t5,0x36($sp)
|
|
/* f1a32c8: 3c01428c */ lui $at,0x428c
|
|
/* f1a32cc: 44812000 */ mtc1 $at,$f4
|
|
/* f1a32d0: c7a80048 */ lwc1 $f8,0x48($sp)
|
|
/* f1a32d4: 018d7021 */ addu $t6,$t4,$t5
|
|
/* f1a32d8: 448e8000 */ mtc1 $t6,$f16
|
|
/* f1a32dc: 46082282 */ mul.s $f10,$f4,$f8
|
|
/* f1a32e0: 8faa0030 */ lw $t2,0x30($sp)
|
|
/* f1a32e4: 3c1900ff */ lui $t9,0xff
|
|
/* f1a32e8: 373900a0 */ ori $t9,$t9,0xa0
|
|
/* f1a32ec: 27b80058 */ addiu $t8,$sp,0x58
|
|
/* f1a32f0: afb80010 */ sw $t8,0x10($sp)
|
|
/* f1a32f4: 468084a0 */ cvt.s.w $f18,$f16
|
|
/* f1a32f8: afb90014 */ sw $t9,0x14($sp)
|
|
/* f1a32fc: 8fa40158 */ lw $a0,0x158($sp)
|
|
/* f1a3300: 2446000c */ addiu $a2,$v0,0xc
|
|
/* f1a3304: 27a700d8 */ addiu $a3,$sp,0xd8
|
|
/* f1a3308: afaa0018 */ sw $t2,0x18($sp)
|
|
/* f1a330c: 460a9181 */ sub.s $f6,$f18,$f10
|
|
/* f1a3310: 4600340d */ trunc.w.s $f16,$f6
|
|
/* f1a3314: 44058000 */ mfc1 $a1,$f16
|
|
/* f1a3318: 0fc68b62 */ jal func0f1a2d88
|
|
/* f1a331c: 00000000 */ nop
|
|
/* f1a3320: afa20158 */ sw $v0,0x158($sp)
|
|
.L0f1a3324:
|
|
/* f1a3324: 0fc54de0 */ jal func0f153780
|
|
/* f1a3328: 8fa40158 */ lw $a0,0x158($sp)
|
|
.L0f1a332c:
|
|
/* f1a332c: 8fbf0024 */ lw $ra,0x24($sp)
|
|
/* f1a3330: 27bd0158 */ addiu $sp,$sp,0x158
|
|
/* f1a3334: 03e00008 */ jr $ra
|
|
/* f1a3338: 00000000 */ nop
|
|
/* f1a333c: 00000000 */ nop
|
|
);
|