Add status page and merge private

This commit is contained in:
kholdfuzion
2020-12-30 11:42:28 -06:00
parent 3858440e14
commit 045df04316
826 changed files with 25643 additions and 246762 deletions
+18 -10
View File
@@ -952,8 +952,10 @@
//=============================================================================
// note: uses chr->visionrange while checking for bond. once bond has been spotted,
// check if bond and guard are within line of sight (ignores facing direction).
// injured guards will also set spotted Bond state (won't work with invincible/armored guards).
// if bond breaks line of sight, do not goto label. if bond has broken line of
// sight for more than 10 seconds, reset spotted bond state
// sight for more than 10 seconds, reset spotted bond state. when using with
// command 3E, make sure 32 takes priority over command 3E
//===========================================================================*/
#define if_guard_sees_bond_ID 0x32
#define if_guard_sees_bond_LENGTH 0x02
@@ -1112,16 +1114,22 @@
label,
/*=============================================================================
// name: if_guard_was_shot_within_last_10_secs
// name: if_guard_was_shot_or_seen_bond_within_last_10_secs
// command id: 3E
// info: if guard was shot (from anyone) within the last 10 seconds, goto label
// info: if guard was shot (from anyone) or saw Bond within the last 10 seconds, goto label
//=============================================================================
// note: command will not count guard as shot if they are invincible/have armour
// note: command will not count guard as shot if they are invincible/have armour.
// if guard saw Bond (using command 32) in the last 10 seconds, goto label. when
// using with command 32, make sure 32 takes priority over command 3E. if guard
// was injured within the last 10 seconds, goto label when finished injury reaction
// animation (will not work with invincible/armored guards).
// to check if guard was hit/damaged use commands 7E/F8 instead, or check if
// guard flags CHRFLAG_WAS_DAMAGED/CHRFLAG_WAS_HIT are set using command 9F/A2
//===========================================================================*/
#define if_guard_was_shot_within_last_10_secs_ID 0x3E
#define if_guard_was_shot_within_last_10_secs_LENGTH 0x02
#define if_guard_was_shot_within_last_10_secs(label) \
if_guard_was_shot_within_last_10_secs_ID, \
#define if_guard_was_shot_or_seen_bond_within_last_10_secs_ID 0x3E
#define if_guard_was_shot_or_seen_bond_within_last_10_secs_LENGTH 0x02
#define if_guard_was_shot_or_seen_bond_within_last_10_secs(label) \
if_guard_was_shot_or_seen_bond_within_last_10_secs_ID, \
label,
/*=============================================================================
@@ -2436,7 +2444,7 @@
/*=============================================================================
// name: if_guard_bitfield_is_set_on
// command id: 96
// info: if bits is set on in chr->BITFIELD, goto label
// info: if any bits in argument are set on in chr->BITFIELD, goto label
//=============================================================================
// note: can be used by obj ai lists, obj lists are free to utilize the entire
// spectrum of flags
@@ -2483,7 +2491,7 @@
/*=============================================================================
// name: if_chr_bitfield_is_set_on
// command id: 99
// info: if bits is set on in chr->BITFIELD, goto label
// info: if any bits in argument are set on in chr->BITFIELD, goto label
//===========================================================================*/
#define if_chr_bitfield_is_set_on_ID 0x99
#define if_chr_bitfield_is_set_on_LENGTH 0x04
+15 -2
View File
@@ -44,6 +44,17 @@ typedef enum MISSION_BRIEFING {
BRIEF_MONEYPENNY
} MISSION_BRIEFING;
typedef enum OPTIONS {
PLAYER_OPTION_LOOK = 0,
PLAYER_OPTION_AUTOAIM,
PLAYER_OPTION_AIM,
PLAYER_OPTION_SIGHT,
PLAYER_OPTION_LOOKAHEAD,
PLAYER_OPTION_AMMODISPLAY,
PLAYER_OPTION_SCREEN,
PLAYER_OPTION_RATIO
} OPTIONS;
typedef enum DIFFICULTY {
DIFFICULTY_AGENT = 0,
DIFFICULTY_SECRET,
@@ -1282,7 +1293,7 @@ typedef enum ACT_TYPE {
#define CHRFLAG_INIT 0x00000001 // initialize chr
#define CHRFLAG_CLONE 0x00000002 // clone on heard gunfire (used by GLIST_DETECT_BOND_SPAWN_CLONE_ON_HEARD_GUNFIRE)
#define CHRFLAG_NEAR_MISS 0x00000004 // chr was just nearly shot (sometimes set on direct hit)
#define CHRFLAG_NEAR_MISS 0x00000004 // chr was just nearly shot (sometimes set on direct hit) - resets every tick
#define CHRFLAG_HAS_BEEN_ON_SCREEN 0x00000008 // chr has been on screen before
#define CHRFLAG_INVINCIBLE 0x00000010 // invincible
#define CHRFLAG_00000020 0x00000020 // unknown
@@ -1428,7 +1439,9 @@ typedef enum ACT_TYPE {
#define OBJECTTYPE_35 0x35
#define OBJECTTYPE_36 0x36
#define CROUCH_SQUAT 0
#define CROUCH_HALF 1
#define CROUCH_STAND 2
#endif
+3 -4
View File
@@ -1,9 +1,8 @@
#ifndef _BOND_H_
#define _BOND_H_
#ifndef _BONDGAME_H_
#define _BONDGAME_H_
#include "ultra64.h"
extern u8 cfb_16_a[];
extern u8 cfb_16_b[];
extern u8 cfb_16[2][320*240*2];
extern u32 *_codeSegmentStart;
extern u32 *_codeSegmentEnd;
+5 -5
View File
@@ -2,6 +2,8 @@
#define _BONDTYPES_H_
#include "ultra64.h"
#include "bondconstants.h"
#include "structs.h"
struct rgba_val{
u8 r;
u8 g;
@@ -46,10 +48,8 @@ typedef struct PropRecord
} Entityp;
} PropRecord;
typedef struct CHRdata CHRdata, *PCHRdata;
/* unfinished struct, WIP */
struct CHRdata {
struct chrdata {
u16 chrnum;
s8 accuracyrating;
s8 speedrating;
@@ -70,7 +70,7 @@ struct CHRdata {
s8 flinchcnt;
s16 hidden;
s32 chrflags;
void * pad;
struct prop* posdata;
void * model;
/* 0x0020 */
void * field_20;
@@ -154,7 +154,7 @@ struct CHRdata {
u8 random;
/* 0x0110 */
s32 timer60;
u16 padpreset1; /* ID PAD_PRESET */
s16 padpreset1; /* ID PAD_PRESET */
u16 chrpreset1; /* ID CHR_PRESET */
u16 chrseeshot; /* ID CHR_SEE_SHOT - ignores invincible/armoured guards */
u16 chrseedie; /* ID CHR_SEE_DIE */
+4 -4
View File
@@ -484,7 +484,7 @@ loop_29:
if (current_stage_num != 0x5a)
{
phi_s1_2 = 0;
if (get_num_players() > 0)
if (getPlayerCount() > 0)
{
loop_44:
set_cur_player(sub_GAME_7F09B528(phi_s1_2));
@@ -493,7 +493,7 @@ loop_44:
sub_GAME_7F0BF800();
temp_s1 = phi_s1_2 + 1;
phi_s1_2 = temp_s1;
if (temp_s1 < get_num_players())
if (temp_s1 < getPlayerCount())
{
goto loop_44;
}
@@ -1013,7 +1013,7 @@ glabel mainloop
/* 0071A8 700065A8 2401005A */ li $at, 90
/* 0071AC 700065AC 13210018 */ beq $t9, $at, .L70006610
/* 0071B0 700065B0 00000000 */ nop
/* 0071B4 700065B4 0FC26919 */ jal get_num_players
/* 0071B4 700065B4 0FC26919 */ jal getPlayerCount
/* 0071B8 700065B8 00008825 */ move $s1, $zero
/* 0071BC 700065BC 18400014 */ blez $v0, .L70006610
/* 0071C0 700065C0 00000000 */ nop
@@ -1032,7 +1032,7 @@ glabel mainloop
/* 0071F0 700065F0 860507F6 */ lh $a1, 0x7f6($s0)
/* 0071F4 700065F4 0FC2FE00 */ jal sub_GAME_7F0BF800
/* 0071F8 700065F8 00000000 */ nop
/* 0071FC 700065FC 0FC26919 */ jal get_num_players
/* 0071FC 700065FC 0FC26919 */ jal getPlayerCount
/* 007200 70006600 26310001 */ addiu $s1, $s1, 1
/* 007204 70006604 0222082A */ slt $at, $s1, $v0
/* 007208 70006608 1420FFEE */ bnez $at, .L700065C4
+1 -2
View File
@@ -1,5 +1,4 @@
#include "ultra64.h"
#include "bondgame.h"
u8 cfb_16_a[320*240*2];
u8 cfb_16_b[320*240*2];
u8 cfb_16[2][320*240*2];
+1 -1
View File
@@ -590,7 +590,7 @@ void set_ptr_video_buffers(s32 arg0, s32 arg1) {
* calls 70005984: A0=803B5000, A1=803DA800
*/
void set_video_buffer_pointers(void) {
set_ptr_video_buffers(&cfb_16_a, &cfb_16_b);
set_ptr_video_buffers(&cfb_16[0], &cfb_16[1]);
}
+58 -90
View File
@@ -1028,7 +1028,7 @@ glabel sub_GAME_7F0B3C8C
/* 0E8880 7F0B3D50 56B90049 */ bnel $s5, $t9, .L7F0B3E78
/* 0E8884 7F0B3D54 26730001 */ addiu $s3, $s3, 1
/* 0E8888 7F0B3D58 26100008 */ addiu $s0, $s0, 8
/* 0E888C 7F0B3D5C 0FC1E0DD */ jal get_BONDdata_field_10D8
/* 0E888C 7F0B3D5C 0FC1E0DD */ jal currentPlayerGetProjectionMatrix
/* 0E8890 7F0B3D60 AE340000 */ sw $s4, ($s1)
/* 0E8894 7F0B3D64 0C003A2C */ jal osVirtualToPhysical
/* 0E8898 7F0B3D68 00402025 */ move $a0, $v0
@@ -1081,7 +1081,7 @@ glabel sub_GAME_7F0B3C8C
/* 0E8948 7F0B3E18 02008825 */ move $s1, $s0
.L7F0B3E1C:
/* 0E894C 7F0B3E1C AE340000 */ sw $s4, ($s1)
/* 0E8950 7F0B3E20 0FC1E0DD */ jal get_BONDdata_field_10D8
/* 0E8950 7F0B3E20 0FC1E0DD */ jal currentPlayerGetProjectionMatrix
/* 0E8954 7F0B3E24 26100008 */ addiu $s0, $s0, 8
/* 0E8958 7F0B3E28 0C003A2C */ jal osVirtualToPhysical
/* 0E895C 7F0B3E2C 00402025 */ move $a0, $v0
@@ -1183,7 +1183,7 @@ glabel sub_GAME_7F0B3C8C
/* 0E8ABC 7F0B3F8C 02008825 */ move $s1, $s0
.L7F0B3F90:
/* 0E8AC0 7F0B3F90 AE340000 */ sw $s4, ($s1)
/* 0E8AC4 7F0B3F94 0FC1E0DD */ jal get_BONDdata_field_10D8
/* 0E8AC4 7F0B3F94 0FC1E0DD */ jal currentPlayerGetProjectionMatrix
/* 0E8AC8 7F0B3F98 26100008 */ addiu $s0, $s0, 8
/* 0E8ACC 7F0B3F9C 0C003A2C */ jal osVirtualToPhysical
/* 0E8AD0 7F0B3FA0 00402025 */ move $a0, $v0
@@ -1235,32 +1235,25 @@ glabel sub_GAME_7F0B3C8C
#ifdef NONMATCHING
s32 sub_GAME_7F0B4034(s32 arg0) {
s32 temp_v1;
void *phi_a0;
s32 phi_v1;
s32 phi_v1_2;
int sub_GAME_7F0B4034(int room)
// Node 0
phi_v1 = arg0;
if ((ptr_bgdata_room_fileposition_list + (arg0 * 0x18))->unk4 == 0)
{
bg_room_data *pbVar1;
f32 fVar2;
if (ptr_bgdata_room_fileposition_list[room].ypos == 0.00000000)
{
fVar2 = (ptr_bgdata_room_fileposition_list[room+1].ypos;
pbVar1 = ptr_bgdata_room_fileposition_list + room;
while( true )
{
// Node 1
phi_a0 = (ptr_bgdata_room_fileposition_list + (arg0 * 0x18));
phi_v1_2 = arg0;
loop_2:
// Node 2
temp_v1 = (phi_v1_2 + 1);
phi_a0 = (phi_a0 + 0x18);
phi_v1 = temp_v1;
phi_v1_2 = temp_v1;
if (phi_a0->unk1C == 0)
{
goto loop_2;
}
room = room + 1;
if (fVar2 != 0.00000000) break;
fVar2 = pbVar1[2].ypos;
pbVar1 = pbVar1 + 1;
}
// Node 3
return phi_v1;
}
return room;
}
#else
GLOBAL_ASM(
@@ -1538,7 +1531,7 @@ glabel load_bg_file
/* 0E8DFC 7F0B42CC 01F40019 */ multu $t7, $s4
/* 0E8E00 7F0B42D0 0000C012 */ mflo $t8
/* 0E8E04 7F0B42D4 0238C821 */ addu $t9, $s1, $t8
/* 0E8E08 7F0B42D8 0FC2CA54 */ jal sub_GAME_7F0B2950
/* 0E8E08 7F0B42D8 0FC2CA54 */ jal setLevelScale
/* 0E8E0C 7F0B42DC C72C000C */ lwc1 $f12, 0xc($t9)
/* 0E8E10 7F0B42E0 8E480000 */ lw $t0, ($s2)
/* 0E8E14 7F0B42E4 01140019 */ multu $t0, $s4
@@ -1562,7 +1555,7 @@ glabel load_bg_file
/* 0E8E5C 7F0B432C E6040000 */ swc1 $f4, ($s0)
/* 0E8E60 7F0B4330 0FC225DB */ jal sub_GAME_7F08976C
/* 0E8E64 7F0B4334 C60C0000 */ lwc1 $f12, ($s0)
/* 0E8E68 7F0B4338 0FC16313 */ jal sub_GAME_7F058C4C
/* 0E8E68 7F0B4338 0FC16313 */ jal matrix_4x4_7F058C4C
/* 0E8E6C 7F0B433C C60C0000 */ lwc1 $f12, ($s0)
/* 0E8E70 7F0B4340 8EE20000 */ lw $v0, ($s7)
/* 0E8E74 7F0B4344 3C038008 */ lui $v1, %hi(dword_CODE_bss_8007BF98)
@@ -1900,7 +1893,7 @@ glabel load_bg_file
#ifdef NONMATCHING
void sub_GAME_7F0B47E0(void) {
sub_GAME_7F0B667C();
sub_GAME_7F058C4C(1.0);
matrix_4x4_7F058C4C(1.0);
}
#else
GLOBAL_ASM(
@@ -1912,7 +1905,7 @@ glabel sub_GAME_7F0B47E0
/* 0E931C 7F0B47EC 00000000 */ nop
/* 0E9320 7F0B47F0 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 0E9324 7F0B47F4 44816000 */ mtc1 $at, $f12
/* 0E9328 7F0B47F8 0FC16313 */ jal sub_GAME_7F058C4C
/* 0E9328 7F0B47F8 0FC16313 */ jal matrix_4x4_7F058C4C
/* 0E932C 7F0B47FC 00000000 */ nop
/* 0E9330 7F0B4800 8FBF0014 */ lw $ra, 0x14($sp)
/* 0E9334 7F0B4804 27BD0018 */ addiu $sp, $sp, 0x18
@@ -2137,47 +2130,22 @@ def_7F0B490C:
void addToByteSetMaxSize15(u8* set, u8 newElement) {
s32 i = 0;
while (i < 0x10 && set[i] != 0xFF) {
if (newElement == set[i]) {
return;
}
i++;
}
#ifdef NONMATCHING
void sub_GAME_7F0B4A50(void) {
if (i < 0xF) {
set[i] = newElement;
set[i+1] = -1;
}
return;
}
#else
GLOBAL_ASM(
.text
glabel sub_GAME_7F0B4A50
/* 0E9580 7F0B4A50 AFA50004 */ sw $a1, 4($sp)
/* 0E9584 7F0B4A54 908E0000 */ lbu $t6, ($a0)
/* 0E9588 7F0B4A58 240800FF */ li $t0, 255
/* 0E958C 7F0B4A5C 30A600FF */ andi $a2, $a1, 0xff
/* 0E9590 7F0B4A60 110E000C */ beq $t0, $t6, .L7F0B4A94
/* 0E9594 7F0B4A64 00001025 */ move $v0, $zero
/* 0E9598 7F0B4A68 00801821 */ addu $v1, $a0, $zero
/* 0E959C 7F0B4A6C 90850000 */ lbu $a1, ($a0)
/* 0E95A0 7F0B4A70 00C03825 */ move $a3, $a2
.L7F0B4A74:
/* 0E95A4 7F0B4A74 10E5000D */ beq $a3, $a1, .L7F0B4AAC
/* 0E95A8 7F0B4A78 24420001 */ addiu $v0, $v0, 1
/* 0E95AC 7F0B4A7C 28410010 */ slti $at, $v0, 0x10
/* 0E95B0 7F0B4A80 10200004 */ beqz $at, .L7F0B4A94
/* 0E95B4 7F0B4A84 24630001 */ addiu $v1, $v1, 1
/* 0E95B8 7F0B4A88 90650000 */ lbu $a1, ($v1)
/* 0E95BC 7F0B4A8C 1505FFF9 */ bne $t0, $a1, .L7F0B4A74
/* 0E95C0 7F0B4A90 00000000 */ nop
.L7F0B4A94:
/* 0E95C4 7F0B4A94 2841000F */ slti $at, $v0, 0xf
/* 0E95C8 7F0B4A98 10200004 */ beqz $at, .L7F0B4AAC
/* 0E95CC 7F0B4A9C 00821821 */ addu $v1, $a0, $v0
/* 0E95D0 7F0B4AA0 240F00FF */ li $t7, 255
/* 0E95D4 7F0B4AA4 A0660000 */ sb $a2, ($v1)
/* 0E95D8 7F0B4AA8 A06F0001 */ sb $t7, 1($v1)
.L7F0B4AAC:
/* 0E95DC 7F0B4AAC 03E00008 */ jr $ra
/* 0E95E0 7F0B4AB0 00000000 */ nop
)
#endif
@@ -2297,12 +2265,12 @@ glabel sub_GAME_7F0B4AB4
/* 0E975C 7F0B4C2C 02602025 */ move $a0, $s3
/* 0E9760 7F0B4C30 156C000C */ bne $t3, $t4, .L7F0B4C64
/* 0E9764 7F0B4C34 00000000 */ nop
/* 0E9768 7F0B4C38 0FC2D294 */ jal sub_GAME_7F0B4A50
/* 0E9768 7F0B4C38 0FC2D294 */ jal addToByteSetMaxSize15
/* 0E976C 7F0B4C3C 90650005 */ lbu $a1, 5($v1)
/* 0E9770 7F0B4C40 8EAD0000 */ lw $t5, ($s5)
/* 0E9774 7F0B4C44 02802025 */ move $a0, $s4
/* 0E9778 7F0B4C48 01B27021 */ addu $t6, $t5, $s2
/* 0E977C 7F0B4C4C 0FC2D294 */ jal sub_GAME_7F0B4A50
/* 0E977C 7F0B4C4C 0FC2D294 */ jal addToByteSetMaxSize15
/* 0E9780 7F0B4C50 91C50005 */ lbu $a1, 5($t6)
/* 0E9784 7F0B4C54 8EA80000 */ lw $t0, ($s5)
/* 0E9788 7F0B4C58 A2200000 */ sb $zero, ($s1)
@@ -2316,12 +2284,12 @@ glabel sub_GAME_7F0B4AB4
/* 0E97A4 7F0B4C74 02602025 */ move $a0, $s3
/* 0E97A8 7F0B4C78 55F8000C */ bnel $t7, $t8, .L7F0B4CAC
/* 0E97AC 7F0B4C7C 920A0001 */ lbu $t2, 1($s0)
/* 0E97B0 7F0B4C80 0FC2D294 */ jal sub_GAME_7F0B4A50
/* 0E97B0 7F0B4C80 0FC2D294 */ jal addToByteSetMaxSize15
/* 0E97B4 7F0B4C84 90650004 */ lbu $a1, 4($v1)
/* 0E97B8 7F0B4C88 8EB90000 */ lw $t9, ($s5)
/* 0E97BC 7F0B4C8C 02802025 */ move $a0, $s4
/* 0E97C0 7F0B4C90 03324821 */ addu $t1, $t9, $s2
/* 0E97C4 7F0B4C94 0FC2D294 */ jal sub_GAME_7F0B4A50
/* 0E97C4 7F0B4C94 0FC2D294 */ jal addToByteSetMaxSize15
/* 0E97C8 7F0B4C98 91250004 */ lbu $a1, 4($t1)
/* 0E97CC 7F0B4C9C 8EA80000 */ lw $t0, ($s5)
/* 0E97D0 7F0B4CA0 A2200000 */ sb $zero, ($s1)
@@ -2576,8 +2544,8 @@ glabel sub_GAME_7F0B4E40
/* 0E9A9C 7F0B4F6C 35080040 */ ori $t0, (0x01030040 & 0xFFFF) # ori $t0, $t0, 0x40
/* 0E9AA0 7F0B4F70 00801025 */ move $v0, $a0
/* 0E9AA4 7F0B4F74 AC480000 */ sw $t0, ($v0)
/* 0E9AA8 7F0B4F78 3C098006 */ lui $t1, %hi(m)
/* 0E9AAC 7F0B4F7C 8D290820 */ lw $t1, %lo(m)($t1)
/* 0E9AA8 7F0B4F78 3C098006 */ lui $t1, %hi(projectionMatrix)
/* 0E9AAC 7F0B4F7C 8D290820 */ lw $t1, %lo(projectionMatrix)($t1)
/* 0E9AB0 7F0B4F80 24840008 */ addiu $a0, $a0, 8
/* 0E9AB4 7F0B4F84 0FC22F3D */ jal sub_GAME_7F08BCF4
/* 0E9AB8 7F0B4F88 AC490004 */ sw $t1, 4($v0)
@@ -2593,7 +2561,7 @@ glabel sub_GAME_7F0B4E40
#ifdef NONMATCHING
void sub_GAME_7F0B4F9C(s32 arg0) {
s32 sub_GAME_7F0B4F9C(u8 arg0) {
return (dword_CODE_bss_8007FF94 + (arg0 * 4))->unk4;
}
#else
@@ -3287,7 +3255,7 @@ void sub_GAME_7F0B5488(void *arg0, void *arg1) {
*arg1 = (f32) (*arg0 * room_data_float2);
arg1->unk4 = (f32) (arg0->unk4 * room_data_float2);
arg1->unk8 = (f32) (arg0->unk8 * room_data_float2);
matrix_4x4_transform_vector_in_place(get_BONDdata_field_10CC(), arg1, arg0);
matrix_4x4_transform_vector_in_place(currentPlayerGetMatrix10CC(), arg1, arg0);
sub_GAME_7F078060(arg1, arg1);
if (0.0f < arg1->unk8)
{
@@ -3304,7 +3272,7 @@ glabel sub_GAME_7F0B5488
/* 0E9FBC 7F0B548C AFBF001C */ sw $ra, 0x1c($sp)
/* 0E9FC0 7F0B5490 AFB00018 */ sw $s0, 0x18($sp)
/* 0E9FC4 7F0B5494 00A08025 */ move $s0, $a1
/* 0E9FC8 7F0B5498 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 0E9FC8 7F0B5498 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 0E9FCC 7F0B549C AFA40020 */ sw $a0, 0x20($sp)
/* 0E9FD0 7F0B54A0 8FA60020 */ lw $a2, 0x20($sp)
/* 0E9FD4 7F0B54A4 3C038004 */ lui $v1, %hi(room_data_float2)
@@ -3375,7 +3343,7 @@ glabel sub_GAME_7F0B5528
/* 0EA08C 7F0B555C AFB00030 */ sw $s0, 0x30($sp)
/* 0EA090 7F0B5560 F7B80028 */ sdc1 $f24, 0x28($sp)
/* 0EA094 7F0B5564 F7B60020 */ sdc1 $f22, 0x20($sp)
/* 0EA098 7F0B5568 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 0EA098 7F0B5568 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 0EA09C 7F0B556C AFA400B0 */ sw $a0, 0xb0($sp)
/* 0EA0A0 7F0B5570 AFA200AC */ sw $v0, 0xac($sp)
/* 0EA0A4 7F0B5574 241E0001 */ li $fp, 1
@@ -9794,7 +9762,7 @@ f32 sub_GAME_7F0B908C(void) {
sp24 = (f32) D_80041404.unk4;
sp28 = (f32) ((f32) D_8004140C + (f32) get_video2_settings_txtClipW());
sp20 = (f32) ((f32) D_80041410 + (f32) get_video2_settings_txtClipH());
pPlayer->unk1118 = (f32) get_video2_settings_ulx();
pPlayer->unk1118 = (f32) viGetViewLeft();
if (pPlayer->unk1118 < sp2C)
{
// Node 1
@@ -9807,7 +9775,7 @@ f32 sub_GAME_7F0B908C(void) {
pPlayer->unk1118 = sp28;
}
// Node 4
pPlayer->unk111C = (f32) get_video2_settings_uly(sp28, &pPlayer);
pPlayer->unk111C = (f32) viGetViewTop(sp28, &pPlayer);
if (pPlayer->unk111C < sp24)
{
// Node 5
@@ -9820,8 +9788,8 @@ f32 sub_GAME_7F0B908C(void) {
pPlayer->unk111C = sp20;
}
// Node 8
sp1E = get_video2_settings_ulx(sp20, &pPlayer);
pPlayer->unk1120 = (f32) (get_video2_settings_width() + sp1E);
sp1E = viGetViewLeft(sp20, &pPlayer);
pPlayer->unk1120 = (f32) (viGetViewWidth() + sp1E);
if (pPlayer->unk1120 < sp2C)
{
// Node 9
@@ -9834,8 +9802,8 @@ f32 sub_GAME_7F0B908C(void) {
pPlayer->unk1120 = sp28;
}
// Node 12
sp1E = get_video2_settings_uly(&pPlayer);
pPlayer->unk1124 = (f32) (get_video2_settings_height() + sp1E);
sp1E = viGetViewTop(&pPlayer);
pPlayer->unk1124 = (f32) (viGetViewHeight() + sp1E);
if (pPlayer->unk1124 < sp24)
{
// Node 13
@@ -9883,7 +9851,7 @@ glabel sub_GAME_7F0B908C
/* 0EDC24 7F0B90F4 468024A0 */ cvt.s.w $f18, $f4
/* 0EDC28 7F0B90F8 46805420 */ cvt.s.w $f16, $f10
/* 0EDC2C 7F0B90FC 46128180 */ add.s $f6, $f16, $f18
/* 0EDC30 7F0B9100 0C001145 */ jal get_video2_settings_ulx
/* 0EDC30 7F0B9100 0C001145 */ jal viGetViewLeft
/* 0EDC34 7F0B9104 E7A60020 */ swc1 $f6, 0x20($sp)
/* 0EDC38 7F0B9108 44824000 */ mtc1 $v0, $f8
/* 0EDC3C 7F0B910C 3C048008 */ lui $a0, %hi(pPlayer)
@@ -9909,7 +9877,7 @@ glabel sub_GAME_7F0B908C
/* 0EDC88 7F0B9158 00000000 */ nop
/* 0EDC8C 7F0B915C E46C1118 */ swc1 $f12, 0x1118($v1)
.L7F0B9160:
/* 0EDC90 7F0B9160 0C001149 */ jal get_video2_settings_uly
/* 0EDC90 7F0B9160 0C001149 */ jal viGetViewTop
/* 0EDC94 7F0B9164 00000000 */ nop
/* 0EDC98 7F0B9168 44822000 */ mtc1 $v0, $f4
/* 0EDC9C 7F0B916C 3C048008 */ lui $a0, %hi(pPlayer)
@@ -9935,9 +9903,9 @@ glabel sub_GAME_7F0B908C
/* 0EDCE8 7F0B91B8 00000000 */ nop
/* 0EDCEC 7F0B91BC E46C111C */ swc1 $f12, 0x111c($v1)
.L7F0B91C0:
/* 0EDCF0 7F0B91C0 0C001145 */ jal get_video2_settings_ulx
/* 0EDCF0 7F0B91C0 0C001145 */ jal viGetViewLeft
/* 0EDCF4 7F0B91C4 00000000 */ nop
/* 0EDCF8 7F0B91C8 0C001127 */ jal get_video2_settings_width
/* 0EDCF8 7F0B91C8 0C001127 */ jal viGetViewWidth
/* 0EDCFC 7F0B91CC A7A2001E */ sh $v0, 0x1e($sp)
/* 0EDD00 7F0B91D0 87AA001E */ lh $t2, 0x1e($sp)
/* 0EDD04 7F0B91D4 3C048008 */ lui $a0, %hi(pPlayer)
@@ -9965,9 +9933,9 @@ glabel sub_GAME_7F0B908C
/* 0EDD58 7F0B9228 00000000 */ nop
/* 0EDD5C 7F0B922C E46A1120 */ swc1 $f10, 0x1120($v1)
.L7F0B9230:
/* 0EDD60 7F0B9230 0C001149 */ jal get_video2_settings_uly
/* 0EDD60 7F0B9230 0C001149 */ jal viGetViewTop
/* 0EDD64 7F0B9234 00000000 */ nop
/* 0EDD68 7F0B9238 0C00112B */ jal get_video2_settings_height
/* 0EDD68 7F0B9238 0C00112B */ jal viGetViewHeight
/* 0EDD6C 7F0B923C A7A2001E */ sh $v0, 0x1e($sp)
/* 0EDD70 7F0B9240 87AD001E */ lh $t5, 0x1e($sp)
/* 0EDD74 7F0B9244 3C048008 */ lui $a0, %hi(pPlayer)
+3
View File
@@ -42,4 +42,7 @@ typedef struct s_room_info {
void bgInitDebugNoticeList(void);
s32 sub_GAME_7F0B8FD0(u8 roomA, u8 roomB);
s32 sub_GAME_7F0B4F9C(u8 room); // u8 not s32 for sub_GAME_7F0B2FE0
#endif
+8 -8
View File
@@ -737,15 +737,15 @@ glabel sub_GAME_7F01C670
/* 051384 7F01C854 AC6F0004 */ sw $t7, 4($v1)
/* 051388 7F01C858 26100008 */ addiu $s0, $s0, 8
/* 05138C 7F01C85C AFB00040 */ sw $s0, 0x40($sp)
/* 051390 7F01C860 0C001127 */ jal get_video2_settings_width
/* 051390 7F01C860 0C001127 */ jal viGetViewWidth
/* 051394 7F01C864 26100008 */ addiu $s0, $s0, 8
/* 051398 7F01C868 0C001145 */ jal get_video2_settings_ulx
/* 051398 7F01C868 0C001145 */ jal viGetViewLeft
/* 05139C 7F01C86C A7A20026 */ sh $v0, 0x26($sp)
/* 0513A0 7F01C870 0C001149 */ jal get_video2_settings_uly
/* 0513A0 7F01C870 0C001149 */ jal viGetViewTop
/* 0513A4 7F01C874 A7A20028 */ sh $v0, 0x28($sp)
/* 0513A8 7F01C878 00028C00 */ sll $s1, $v0, 0x10
/* 0513AC 7F01C87C 0011C403 */ sra $t8, $s1, 0x10
/* 0513B0 7F01C880 0C00112B */ jal get_video2_settings_height
/* 0513B0 7F01C880 0C00112B */ jal viGetViewHeight
/* 0513B4 7F01C884 03008825 */ move $s1, $t8
/* 0513B8 7F01C888 87B90028 */ lh $t9, 0x28($sp)
/* 0513BC 7F01C88C 87A80026 */ lh $t0, 0x26($sp)
@@ -762,11 +762,11 @@ glabel sub_GAME_7F01C670
/* 0513E8 7F01C8B8 03214025 */ or $t0, $t9, $at
/* 0513EC 7F01C8BC 000C6B00 */ sll $t5, $t4, 0xc
/* 0513F0 7F01C8C0 010D4825 */ or $t1, $t0, $t5
/* 0513F4 7F01C8C4 0C001145 */ jal get_video2_settings_ulx
/* 0513F4 7F01C8C4 0C001145 */ jal viGetViewLeft
/* 0513F8 7F01C8C8 AD490000 */ sw $t1, ($t2)
/* 0513FC 7F01C8CC 00028C00 */ sll $s1, $v0, 0x10
/* 051400 7F01C8D0 00115C03 */ sra $t3, $s1, 0x10
/* 051404 7F01C8D4 0C001149 */ jal get_video2_settings_uly
/* 051404 7F01C8D4 0C001149 */ jal viGetViewTop
/* 051408 7F01C8D8 01608825 */ move $s1, $t3
/* 05140C 7F01C8DC 00117880 */ sll $t7, $s1, 2
/* 051410 7F01C8E0 8FAD0040 */ lw $t5, 0x40($sp)
@@ -785,11 +785,11 @@ glabel sub_GAME_7F01C670
/* 051444 7F01C914 3C0AB300 */ lui $t2, 0xb300
/* 051448 7F01C918 AC8A0000 */ sw $t2, ($a0)
/* 05144C 7F01C91C AFA40038 */ sw $a0, 0x38($sp)
/* 051450 7F01C920 0C001127 */ jal get_video2_settings_width
/* 051450 7F01C920 0C001127 */ jal viGetViewWidth
/* 051454 7F01C924 26100008 */ addiu $s0, $s0, 8
/* 051458 7F01C928 00028C00 */ sll $s1, $v0, 0x10
/* 05145C 7F01C92C 00115C03 */ sra $t3, $s1, 0x10
/* 051460 7F01C930 0C00112B */ jal get_video2_settings_height
/* 051460 7F01C930 0C00112B */ jal viGetViewHeight
/* 051464 7F01C934 01608825 */ move $s1, $t3
/* 051468 7F01C938 3C0C0001 */ lui $t4, (0x00014000 >> 16) # lui $t4, 1
/* 05146C 7F01C93C 358C4000 */ ori $t4, (0x00014000 & 0xFFFF) # ori $t4, $t4, 0x4000
+834 -3037
View File
File diff suppressed because it is too large Load Diff
+102 -132
View File
@@ -3,8 +3,10 @@
#include "ultra64.h"
#include "game/chr.h"
#include "game/matrixmath.h"
#include "structs.h"
struct xyzpoint
struct coord
{
f32 x;
f32 y;
@@ -299,31 +301,27 @@ typedef struct textoverride {
} textoverride;
struct Player
struct player
{
s32 unknown;
s32 xpos;
s32 ypos;
s32 zpos;
s32 xpos2;
s32 ypos2;
s32 zpos2;
s32 xoffset;
s32 yoffset;
s32 zoffset;
s32 xpos3;
s32 ypos3;
s32 zpos3;
f32 xpos;
f32 ypos;
f32 zpos;
f32 xpos2;
f32 ypos2;
f32 zpos2;
f32 xoffset;
f32 yoffset;
f32 zoffset;
f32 xpos3;
f32 ypos3;
f32 zpos3;
s32 room_pointer;
s32 current_model_xpos;
s32 current_model_ypos;
s32 current_model_zpos;
s32 previous_model_xpos;
s32 previous_model_ypos;
s32 previous_model_zpos;
s32 current_room_xpos;
s32 current_room_ypos;
s32 current_room_zpos;
vec3 current_model_pos;
vec3 previous_model_pos;
f32 current_room_xpos;
f32 current_room_ypos;
f32 current_room_zpos;
s32 field_5C;
s32 field_60;
s32 field_64;
@@ -334,16 +332,16 @@ struct Player
s32 field_78;
s32 field_7C;
s32 field_80;
s32 field_84;
s32 field_88;
f32 field_84;
f32 field_88;
s32 field_8C;
s32 field_90;
f32 field_90;
s32 field_94;
s32 field_98;
s32 crouchposition;
s32 ducking_height_offset;
s32 field_A4;
s32 position_data_pointer;
f32 field_98;
s32 crouchpos;
f32 ducking_height_offset;
f32 field_A4;
struct prop* prop;
s32 field_AC;
s32 field_B0;
s32 zpos_0;
@@ -356,12 +354,12 @@ struct Player
s32 field_D0;
s32 ptr_char_objectinstance;
s32 bonddead;
s32 bondhealth;
f32 bondhealth;
f32 bondarmour;
s32 oldhealth;
s32 oldarmour;
s32 apparenthealth;
s32 apparentarmour;
f32 oldhealth;
f32 oldarmour;
f32 apparenthealth;
f32 apparentarmour;
s32 damageshowtime;
s32 healthshowtime;
s32 healthshowmode;
@@ -385,26 +383,26 @@ struct Player
s32 autoxaimtime60;
f32 vv_theta;
f32 speedtheta;
s32 vv_costheta;
s32 vv_sintheta;
f32 vv_costheta;
f32 vv_sintheta;
f32 vv_verta;
s32 vv_verta360;
f32 vv_verta360;
f32 speedverta;
s32 vv_cosverta;
s32 vv_sinverta;
f32 vv_cosverta;
f32 vv_sinverta;
f32 speedsideways;
f32 speedstrafe;
f32 speedforwards;
s32 speedboost;
f32 speedboost;
s32 speedmaxtime60;
s32 boost_factor_x;
s32 boost_factor_y;
s32 boost_factor_z;
s32 viewport_alpha;
s32 bondfadetime60;
s32 bondfadetimemax;
s32 bondfadefracold;
f32 boost_factor_x;
f32 boost_factor_y;
f32 boost_factor_z;
f32 bondfadetime60;
f32 bondfadetimemax60;
f32 bondfadefracold;
f32 bondfadefracnew;
f32 field_19C;
s32 field_1A0;
s32 field_1A4;
s32 field_1A8;
@@ -431,14 +429,14 @@ struct Player
s32 field_1FC;
s32 pausing_flag;
f32 pause_starting_angle;
s32 field_208;
s32 pause_target_angle;
f32 field_208;
f32 pause_target_angle;
f32 field_210;
f32 field_214;
s32 field_218;
s32 field_21C;
s32 step_in_view_watch_animation;
s32 pause_animation_counter;
f32 pause_animation_counter;
s32 field_228;
s32 field_22C;
s32 something_with_watch_object_instance;
@@ -543,23 +541,23 @@ struct Player
s32 field_3B8;
s32 field_3BC;
s32 field_3C0;
s32 field_3C4;
s32 field_3C8;
s32 field_3CC;
s32 tint_red;
s32 tint_green;
s32 tint_blue;
f32 tint_alpha;
s32 screen_fade_timer;
f32 screen_fade_max_time;
s32 field_3E8;
s32 field_3EC;
s32 field_3F0;
s32 field_3F4;
s32 field_3F8;
s32 field_3FC;
s32 field_400;
s32 field_404;
f32 field_3C4;
f32 field_3C8;
f32 field_3CC;
s32 colourscreenred;
s32 colourscreengreen;
s32 colourscreenblue;
f32 colourscreenfrac;
f32 colourfadetime60;
f32 colourfadetimemax60;
s32 colourfaderedold;
s32 colourfaderednew;
s32 colourfadegreenold;
s32 colourfadegreennew;
s32 colourfadeblueold;
s32 colourfadebluenew;
f32 colourfadefracold;
f32 colourfadefracnew;
s32 field_408;
s32 field_40C;
s32 field_410;
@@ -613,32 +611,20 @@ struct Player
s32 field_4D0;
s32 field_4D4;
s32 current_tile_ptr_for_portals;
s32 field_4DC;
s32 field_4E0;
u32 resetheadpos; // bool
u32 resetheadrot; // bool
s32 field_4E4;
s32 field_4E8;
f32 field_4EC;
f32 headdamp;
s32 field_4F0;
s32 field_4F4;
s32 field_4F8;
struct xyzpoint scaled_velocity;
//f32 field_500;
//f32 field_504;
struct xyzpoint field_508;
//s32 field_50C;
//s32 field_510;
struct xyzpoint field_514;
//s32 field_518;
//s32 field_51C;
struct xyzpoint velocity;
//f32 field_524;
//f32 field_528;
struct xyzpoint field_52C;
//s32 field_530;
//s32 field_534;
struct xyzpoint field_538;
//s32 field_53C;
//s32 field_540;
vec3 headpos;
vec3 headlook;
vec3 headup;
vec3 headpossum;
vec3 headlooksum;
vec3 headupsum;
s32 field_544;
s32 field_548;
s32 field_54C;
@@ -647,19 +633,9 @@ struct Player
s32 field_558;
s32 field_55C;
s32 field_560;
s32 field_564;
s32 field_568;
s32 field_56C;
s32 field_570;
s32 field_574;
s32 field_578;
s32 field_57C;
s32 field_580;
s32 field_584;
s32 field_588;
s32 field_58C;
s32 field_590;
s32 field_594;
vec3 standlook[2];
vec3 standup[2];
s32 standcnt;
s32 field_598;
s32 field_59C;
s32 field_5A0;
@@ -805,14 +781,7 @@ struct Player
s32 field_7C4;
s32 field_7C8;
s32 field_7CC;
s32 field_7D0;
s32 field_7D4;
s32 field_7D8;
s32 field_7DC;
s32 field_7E0;
s32 field_7E4;
s32 field_7E8;
s32 field_7EC;
Vp viewports[2];
s16 viewx;
s16 viewy;
s16 viewleft;
@@ -899,24 +868,23 @@ struct Player
f32 c_scaley;
f32 c_recipscalex;
f32 c_recipscaley;
s32 field_10C4;
s32 field_10C8;
s32 field_10CC;
s32 field_10D0;
s32 field_10D4;
s32 field_10D8;
s32 field_10DC;
s32 field_10E0;
s32 field_10E4;
s32 field_10E8;
s32 field_10EC;
Mtx* field_10C4;
Mtx* field_10C8;
Mtxf* field_10CC;
s32 field_10D0; // ptr
Mtxf* field_10D4;
Mtx* projmatrix;
Mtxf* projmatrixf;
s32 field_10E0; // ptr
s32 field_10E4; // ptr
Mtxf* field_10E8;
Mtxf* field_10EC;
f32 c_scalelod60;
f32 c_scalelod;
f32 c_lodscalez;
u32 c_lodscalezu32;
struct xyzpoint c_cameratopnorm;
struct xyzpoint c_cameraleftnorm;
struct coord c_cameratopnorm;
struct coord c_cameraleftnorm;
f32 screenxminf;
f32 screenyminf;
f32 screenxmaxf;
@@ -1004,9 +972,9 @@ struct Player
s32 field_1268;
s32 field_126C;
s32 field_1270;
s32 field_1274;
s32 field_1278;
s32 field_127C;
f32 swaytarget;
f32 field_1278;
f32 field_127C;
s32 field_1280;
s32 players_cur_animation;
s32 field_1288;
@@ -2498,7 +2466,7 @@ struct Player
s32 field_29B4;
s32 field_29B8;
s32 field_29BC;
s32 field_29C0;
f32 field_29C0;
s32 mpmenuon;
s32 mpmenumode;
s32 mpquitconfirm;
@@ -2513,11 +2481,11 @@ struct Player
s32 field_29F0;
s32 field_29F4;
s32 field_29F8;
s32 field_29FC;
s32 autocrouchpos;
s32 healthdisplaytime;
s16 field_2A04;
s32 field_2A08;
s32 field_2A0C;
f32 field_2A08;
f32 field_2A0C;
s32 ptr_text_first_mp_award;
s32 ptr_text_second_mp_award;
s32 field_2A18;
@@ -2873,4 +2841,6 @@ void sub_GAME_7F07E46C(f32 param);
void trigger_watch_zoom(f32 final, f32 time);
struct prop* get_curplayer_positiondata(void);
#endif
+8 -8
View File
@@ -288,7 +288,7 @@ s32 check_if_item_for_hand_available(ITEM_IDS item,int hand)
{
#ifdef VERSION_US
if (((pPlayer->equipallguns && (item < ITEM_BOMBCASE)) &&
(item == hand)) && ((get_num_players() == 1 &&
(item == hand)) && ((getPlayerCount() == 1 &&
(bondwalkItemCheckBitflags(item,0x100000) != 0))))
{
return 1;
@@ -303,7 +303,7 @@ s32 check_if_item_for_hand_available(ITEM_IDS item,int hand)
else
{
if ((((pPlayer->equipallguns != 0) && (item < ITEM_BOMBCASE)) &&
(item == hand)) && (((get_num_players() == 1 &&
(item == hand)) && (((getPlayerCount() == 1 &&
(bondwalkItemCheckBitflags(item,0x100000) != 0)) &&
((j_text_trigger == 0 || (item != ITEM_KNIFE))))))
{
@@ -716,7 +716,7 @@ glabel sub_GAME_7F08C86C
/* 0C14CC 7F08C99C 8FA90028 */ lw $t1, 0x28($sp)
/* 0C14D0 7F08C9A0 51000051 */ beql $t0, $zero, .L7F08CAE8
/* 0C14D4 7F08C9A4 8FAB0028 */ lw $t3, 0x28($sp)
/* 0C14D8 7F08C9A8 0FC26919 */ jal get_num_players
/* 0C14D8 7F08C9A8 0FC26919 */ jal getPlayerCount
/* 0C14DC 7F08C9AC 8D300000 */ lw $s0, ($t1)
/* 0C14E0 7F08C9B0 24010001 */ li $at, 1
/* 0C14E4 7F08C9B4 5441001E */ bnel $v0, $at, .L7F08CA30
@@ -914,7 +914,7 @@ glabel sub_GAME_7F08C86C
/* 0C1E04 7F08D294 8FA90028 */ lw $t1, 0x28($sp)
/* 0C1E08 7F08D298 5100005E */ beql $t0, $zero, .Ljp7F08D414
/* 0C1E0C 7F08D29C 8FAD0028 */ lw $t5, 0x28($sp)
/* 0C1E10 7F08D2A0 0FC26C01 */ jal get_num_players
/* 0C1E10 7F08D2A0 0FC26C01 */ jal getPlayerCount
/* 0C1E14 7F08D2A4 8D300000 */ lw $s0, ($t1)
/* 0C1E18 7F08D2A8 24010001 */ li $at, 1
/* 0C1E1C 7F08D2AC 14410023 */ bne $v0, $at, .Ljp7F08D33C
@@ -1183,7 +1183,7 @@ glabel sub_GAME_7F08CB10
.L7F08CCE4:
/* 0C1814 7F08CCE4 1611001E */ bne $s0, $s1, .L7F08CD60
/* 0C1818 7F08CCE8 00000000 */ nop
/* 0C181C 7F08CCEC 0FC26919 */ jal get_num_players
/* 0C181C 7F08CCEC 0FC26919 */ jal getPlayerCount
/* 0C1820 7F08CCF0 00000000 */ nop
/* 0C1824 7F08CCF4 24010001 */ li $at, 1
/* 0C1828 7F08CCF8 14410052 */ bne $v0, $at, .L7F08CE44
@@ -1222,7 +1222,7 @@ glabel sub_GAME_7F08CB10
/* 0C18A0 7F08CD70 10400018 */ beqz $v0, .L7F08CDD4
/* 0C18A4 7F08CD74 24030021 */ li $v1, 33
.L7F08CD78:
/* 0C18A8 7F08CD78 0FC26919 */ jal get_num_players
/* 0C18A8 7F08CD78 0FC26919 */ jal getPlayerCount
/* 0C18AC 7F08CD7C 00000000 */ nop
/* 0C18B0 7F08CD80 24010001 */ li $at, 1
/* 0C18B4 7F08CD84 14410010 */ bne $v0, $at, .L7F08CDC8
@@ -1436,7 +1436,7 @@ glabel sub_GAME_7F08CB10
.Ljp7F08D614:
/* 0C2184 7F08D614 16110024 */ bne $s0, $s1, .Ljp7F08D6A8
/* 0C2188 7F08D618 00000000 */ nop
/* 0C218C 7F08D61C 0FC26C01 */ jal get_num_players
/* 0C218C 7F08D61C 0FC26C01 */ jal getPlayerCount
/* 0C2190 7F08D620 00000000 */ nop
/* 0C2194 7F08D624 24010001 */ li $at, 1
/* 0C2198 7F08D628 1441005F */ bne $v0, $at, .Ljp7F08D7A8
@@ -1490,7 +1490,7 @@ glabel sub_GAME_7F08CB10
/* 0C2244 7F08D6D4 52010019 */ beql $s0, $at, .Ljp7F08D73C
/* 0C2248 7F08D6D8 260E0020 */ addiu $t6, $s0, 0x20
.Ljp7F08D6DC:
/* 0C224C 7F08D6DC 0FC26C01 */ jal get_num_players
/* 0C224C 7F08D6DC 0FC26C01 */ jal getPlayerCount
/* 0C2250 7F08D6E0 00000000 */ nop
/* 0C2254 7F08D6E4 24010001 */ li $at, 1
/* 0C2258 7F08D6E8 14410010 */ bne $v0, $at, .Ljp7F08D72C
+120 -120
View File
@@ -2201,7 +2201,7 @@ glabel likely_change_weapon_in_hand
/* 092064 7F05D534 8C4F0890 */ lw $t7, 0x890($v0)
/* 092068 7F05D538 AC4F08B0 */ sw $t7, 0x8b0($v0)
/* 09206C 7F05D53C AFA7001C */ sw $a3, 0x1c($sp)
/* 092070 7F05D540 0FC26919 */ jal get_num_players
/* 092070 7F05D540 0FC26919 */ jal getPlayerCount
/* 092074 7F05D544 AFA40020 */ sw $a0, 0x20($sp)
/* 092078 7F05D548 3C088008 */ lui $t0, %hi(pPlayer)
/* 09207C 7F05D54C 24010001 */ li $at, 1
@@ -2650,7 +2650,7 @@ glabel remove_hands_item
/* 092740 7F05DC10 01706021 */ addu $t4, $t3, $s0
/* 092744 7F05DC14 AD860878 */ sw $a2, 0x878($t4)
.L7F05DC18:
/* 092748 7F05DC18 0FC26919 */ jal get_num_players
/* 092748 7F05DC18 0FC26919 */ jal getPlayerCount
/* 09274C 7F05DC1C 00000000 */ nop
/* 092750 7F05DC20 28410002 */ slti $at, $v0, 2
/* 092754 7F05DC24 14200003 */ bnez $at, .L7F05DC34
@@ -3846,7 +3846,7 @@ glabel sub_GAME_7F05EE24
/* 093990 7F05EE60 27A50088 */ addiu $a1, $sp, 0x88
/* 093994 7F05EE64 0FC1A073 */ jal sub_GAME_7F0681CC
/* 093998 7F05EE68 8FA60140 */ lw $a2, 0x140($sp)
/* 09399C 7F05EE6C 0FC1E111 */ jal sub_GAME_7F078444
/* 09399C 7F05EE6C 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 0939A0 7F05EE70 00000000 */ nop
/* 0939A4 7F05EE74 00402025 */ move $a0, $v0
/* 0939A8 7F05EE78 0FC160F6 */ jal matrix_4x4_rotate_vector_in_place
@@ -4028,7 +4028,7 @@ glabel sub_GAME_7F05F09C
/* 093BF8 7F05F0C8 27A50078 */ addiu $a1, $sp, 0x78
/* 093BFC 7F05F0CC 0FC1A073 */ jal sub_GAME_7F0681CC
/* 093C00 7F05F0D0 8FA60130 */ lw $a2, 0x130($sp)
/* 093C04 7F05F0D4 0FC1E111 */ jal sub_GAME_7F078444
/* 093C04 7F05F0D4 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 093C08 7F05F0D8 00000000 */ nop
/* 093C0C 7F05F0DC 00402025 */ move $a0, $v0
/* 093C10 7F05F0E0 0FC160F6 */ jal matrix_4x4_rotate_vector_in_place
@@ -4319,7 +4319,7 @@ glabel generate_player_thrown_object
/* 093EE8 7F05F3B8 27A50088 */ addiu $a1, $sp, 0x88
/* 093EEC 7F05F3BC 0FC1A073 */ jal sub_GAME_7F0681CC
/* 093EF0 7F05F3C0 8FA60140 */ lw $a2, 0x140($sp)
/* 093EF4 7F05F3C4 0FC1E111 */ jal sub_GAME_7F078444
/* 093EF4 7F05F3C4 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 093EF8 7F05F3C8 00000000 */ nop
/* 093EFC 7F05F3CC 00402025 */ move $a0, $v0
/* 093F00 7F05F3D0 0FC160F6 */ jal matrix_4x4_rotate_vector_in_place
@@ -4464,7 +4464,7 @@ create_instance:
/* 0940F8 7F05F5C8 01200008 */ jr $t1
/* 0940FC 7F05F5CC 00000000 */ nop
generate_temp_remote_mine:
/* 094100 7F05F5D0 0FC26919 */ jal get_num_players
/* 094100 7F05F5D0 0FC26919 */ jal getPlayerCount
/* 094104 7F05F5D4 00000000 */ nop
/* 094108 7F05F5D8 24010001 */ li $at, 1
/* 09410C 7F05F5DC 14410004 */ bne $v0, $at, .L7F05F5F0
@@ -4476,7 +4476,7 @@ generate_temp_remote_mine:
/* 094120 7F05F5F0 10000024 */ b .L7F05F684
/* 094124 7F05F5F4 A60B0082 */ sh $t3, 0x82($s0)
generate_temp_proximity_mine:
/* 094128 7F05F5F8 0FC26919 */ jal get_num_players
/* 094128 7F05F5F8 0FC26919 */ jal getPlayerCount
/* 09412C 7F05F5FC 00000000 */ nop
/* 094130 7F05F600 24010001 */ li $at, 1
/* 094134 7F05F604 14410004 */ bne $v0, $at, .L7F05F618
@@ -4488,7 +4488,7 @@ generate_temp_proximity_mine:
/* 094148 7F05F618 1000001A */ b .L7F05F684
/* 09414C 7F05F61C A60D0082 */ sh $t5, 0x82($s0)
generate_temp_timed_mine:
/* 094150 7F05F620 0FC26919 */ jal get_num_players
/* 094150 7F05F620 0FC26919 */ jal getPlayerCount
/* 094154 7F05F624 00000000 */ nop
/* 094158 7F05F628 24010001 */ li $at, 1
/* 09415C 7F05F62C 14410004 */ bne $v0, $at, .L7F05F640
@@ -4500,7 +4500,7 @@ generate_temp_timed_mine:
/* 094170 7F05F640 10000010 */ b .L7F05F684
/* 094174 7F05F644 A60F0082 */ sh $t7, 0x82($s0)
generate_temp_bombcase:
/* 094178 7F05F648 0FC26919 */ jal get_num_players
/* 094178 7F05F648 0FC26919 */ jal getPlayerCount
/* 09417C 7F05F64C 00000000 */ nop
/* 094180 7F05F650 24010001 */ li $at, 1
/* 094184 7F05F654 14410004 */ bne $v0, $at, .L7F05F668
@@ -4616,7 +4616,7 @@ glabel sub_GAME_7F05F73C
/* 0942C8 7F05F798 27A50038 */ addiu $a1, $sp, 0x38
/* 0942CC 7F05F79C 0FC1A073 */ jal sub_GAME_7F0681CC
/* 0942D0 7F05F7A0 8FA600E8 */ lw $a2, 0xe8($sp)
/* 0942D4 7F05F7A4 0FC1E111 */ jal sub_GAME_7F078444
/* 0942D4 7F05F7A4 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 0942D8 7F05F7A8 00000000 */ nop
/* 0942DC 7F05F7AC 00402025 */ move $a0, $v0
/* 0942E0 7F05F7B0 0FC160F6 */ jal matrix_4x4_rotate_vector_in_place
@@ -4792,7 +4792,7 @@ glabel sub_GAME_7F05F928
/* 094540 7F05FA10 26040058 */ addiu $a0, $s0, 0x58
/* 094544 7F05FA14 0FC16266 */ jal matrix_4x4_set_position
/* 094548 7F05FA18 02402825 */ move $a1, $s2
/* 09454C 7F05FA1C 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 09454C 7F05FA1C 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 094550 7F05FA20 00000000 */ nop
/* 094554 7F05FA24 00402025 */ move $a0, $v0
/* 094558 7F05FA28 02402825 */ move $a1, $s2
@@ -4975,7 +4975,7 @@ glabel sub_GAME_7F05FB64
.L7F05FC10:
/* 094740 7F05FC10 0FC1A064 */ jal sub_GAME_7F068190
/* 094744 7F05FC14 27A5004C */ addiu $a1, $sp, 0x4c
/* 094748 7F05FC18 0FC1E111 */ jal sub_GAME_7F078444
/* 094748 7F05FC18 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 09474C 7F05FC1C 00000000 */ nop
/* 094750 7F05FC20 00402025 */ move $a0, $v0
/* 094754 7F05FC24 0FC160F6 */ jal matrix_4x4_rotate_vector_in_place
@@ -5038,7 +5038,7 @@ glabel sub_GAME_7F05FB64
/* 094830 7F05FD00 8C480014 */ lw $t0, 0x14($v0)
/* 094834 7F05FD04 8D09000C */ lw $t1, 0xc($t0)
/* 094838 7F05FD08 C52A0138 */ lwc1 $f10, 0x138($t1)
/* 09483C 7F05FD0C 0FC1E111 */ jal sub_GAME_7F078444
/* 09483C 7F05FD0C 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 094840 7F05FD10 E7AA003C */ swc1 $f10, 0x3c($sp)
/* 094844 7F05FD14 00402025 */ move $a0, $v0
/* 094848 7F05FD18 0FC1611D */ jal matrix_4x4_transform_vector_in_place
@@ -5060,7 +5060,7 @@ glabel sub_GAME_7F05FB64
.L7F05FD50:
/* 094880 7F05FD50 0FC1A073 */ jal sub_GAME_7F0681CC
/* 094884 7F05FD54 8FA60108 */ lw $a2, 0x108($sp)
/* 094888 7F05FD58 0FC1E111 */ jal sub_GAME_7F078444
/* 094888 7F05FD58 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 09488C 7F05FD5C 00000000 */ nop
/* 094890 7F05FD60 00402025 */ move $a0, $v0
/* 094894 7F05FD64 0FC160F6 */ jal matrix_4x4_rotate_vector_in_place
@@ -6077,7 +6077,7 @@ glabel handles_firing_or_throwing_weapon_in_hand
/* 095674 7F060B44 C60600DC */ lwc1 $f6, 0xdc($s0)
/* 095678 7F060B48 E7A60020 */ swc1 $f6, 0x20($sp)
/* 09567C 7F060B4C C60A00E0 */ lwc1 $f10, 0xe0($s0)
/* 095680 7F060B50 0FC16642 */ jal sub_GAME_7F059908
/* 095680 7F060B50 0FC16642 */ jal matrix_4x4_7F059908
/* 095684 7F060B54 E7AA0024 */ swc1 $f10, 0x24($sp)
/* 095688 7F060B58 27A401A4 */ addiu $a0, $sp, 0x1a4
/* 09568C 7F060B5C 0FC16026 */ jal matrix_4x4_multiply_homogeneous_in_place
@@ -6114,7 +6114,7 @@ glabel handles_firing_or_throwing_weapon_in_hand
/* 095708 7F060BD8 AFA40040 */ sw $a0, 0x40($sp)
/* 09570C 7F060BDC 0FC16008 */ jal matrix_4x4_copy
/* 095710 7F060BE0 260502A8 */ addiu $a1, $s0, 0x2a8
/* 095714 7F060BE4 0FC1E111 */ jal sub_GAME_7F078444
/* 095714 7F060BE4 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 095718 7F060BE8 00000000 */ nop
/* 09571C 7F060BEC 00402025 */ move $a0, $v0
/* 095720 7F060BF0 8FA50044 */ lw $a1, 0x44($sp)
@@ -6466,7 +6466,7 @@ glabel handles_firing_or_throwing_weapon_in_hand
/* 095C2C 7F0610FC C7B20258 */ lwc1 $f18, 0x258($sp)
/* 095C30 7F061100 E61202EC */ swc1 $f18, 0x2ec($s0)
/* 095C34 7F061104 C7AA025C */ lwc1 $f10, 0x25c($sp)
/* 095C38 7F061108 0FC1E111 */ jal sub_GAME_7F078444
/* 095C38 7F061108 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 095C3C 7F06110C E60A02F0 */ swc1 $f10, 0x2f0($s0)
/* 095C40 7F061110 00402025 */ move $a0, $v0
/* 095C44 7F061114 0FC1611D */ jal matrix_4x4_transform_vector_in_place
@@ -6577,7 +6577,7 @@ glabel handles_firing_or_throwing_weapon_in_hand
/* 095DE0 7F0612B0 46128281 */ sub.s $f10, $f16, $f18
/* 095DE4 7F0612B4 44074000 */ mfc1 $a3, $f8
/* 095DE8 7F0612B8 24050000 */ li $a1, 0
/* 095DEC 7F0612BC 0FC166D6 */ jal sub_GAME_7F059B58
/* 095DEC 7F0612BC 0FC166D6 */ jal matrix_4x4_7F059B58
/* 095DF0 7F0612C0 E7AA0010 */ swc1 $f10, 0x10($sp)
/* 095DF4 7F0612C4 27A40114 */ addiu $a0, $sp, 0x114
/* 095DF8 7F0612C8 0FC1601A */ jal matrix_4x4_multiply_in_place
@@ -6700,7 +6700,7 @@ glabel handles_firing_or_throwing_weapon_in_hand
/* 095FC4 7F061494 46088101 */ sub.s $f4, $f16, $f8
/* 095FC8 7F061498 44073000 */ mfc1 $a3, $f6
/* 095FCC 7F06149C 24050000 */ li $a1, 0
/* 095FD0 7F0614A0 0FC166D6 */ jal sub_GAME_7F059B58
/* 095FD0 7F0614A0 0FC166D6 */ jal matrix_4x4_7F059B58
/* 095FD4 7F0614A4 E7A40010 */ swc1 $f4, 0x10($sp)
/* 095FD8 7F0614A8 27A40114 */ addiu $a0, $sp, 0x114
/* 095FDC 7F0614AC 0FC1601A */ jal matrix_4x4_multiply_in_place
@@ -7861,7 +7861,7 @@ glabel handles_firing_or_throwing_weapon_in_hand
/* 095BD4 7F061064 C60600DC */ lwc1 $f6, 0xdc($s0)
/* 095BD8 7F061068 E7A60020 */ swc1 $f6, 0x20($sp)
/* 095BDC 7F06106C C60A00E0 */ lwc1 $f10, 0xe0($s0)
/* 095BE0 7F061070 0FC1678A */ jal sub_GAME_7F059908
/* 095BE0 7F061070 0FC1678A */ jal matrix_4x4_7F059908
/* 095BE4 7F061074 E7AA0024 */ swc1 $f10, 0x24($sp)
/* 095BE8 7F061078 27A401A4 */ addiu $a0, $sp, 0x1a4
/* 095BEC 7F06107C 0FC1616E */ jal matrix_4x4_multiply_homogeneous_in_place
@@ -7898,7 +7898,7 @@ glabel handles_firing_or_throwing_weapon_in_hand
/* 095C68 7F0610F8 AFA40040 */ sw $a0, 0x40($sp)
/* 095C6C 7F0610FC 0FC16150 */ jal matrix_4x4_copy
/* 095C70 7F061100 260502A8 */ addiu $a1, $s0, 0x2a8
/* 095C74 7F061104 0FC1E28D */ jal sub_GAME_7F078444
/* 095C74 7F061104 0FC1E28D */ jal currentPlayerGetMatrix10D4
/* 095C78 7F061108 00000000 */ nop
/* 095C7C 7F06110C 00402025 */ move $a0, $v0
/* 095C80 7F061110 8FA50044 */ lw $a1, 0x44($sp)
@@ -8250,7 +8250,7 @@ glabel handles_firing_or_throwing_weapon_in_hand
/* 09618C 7F06161C C7B20258 */ lwc1 $f18, 0x258($sp)
/* 096190 7F061620 E61202EC */ swc1 $f18, 0x2ec($s0)
/* 096194 7F061624 C7AA025C */ lwc1 $f10, 0x25c($sp)
/* 096198 7F061628 0FC1E28D */ jal sub_GAME_7F078444
/* 096198 7F061628 0FC1E28D */ jal currentPlayerGetMatrix10D4
/* 09619C 7F06162C E60A02F0 */ swc1 $f10, 0x2f0($s0)
/* 0961A0 7F061630 00402025 */ move $a0, $v0
/* 0961A4 7F061634 0FC16265 */ jal matrix_4x4_transform_vector_in_place
@@ -8361,7 +8361,7 @@ glabel handles_firing_or_throwing_weapon_in_hand
/* 096340 7F0617D0 46128281 */ sub.s $f10, $f16, $f18
/* 096344 7F0617D4 44074000 */ mfc1 $a3, $f8
/* 096348 7F0617D8 24050000 */ li $a1, 0
/* 09634C 7F0617DC 0FC1681E */ jal sub_GAME_7F059B58
/* 09634C 7F0617DC 0FC1681E */ jal matrix_4x4_7F059B58
/* 096350 7F0617E0 E7AA0010 */ swc1 $f10, 0x10($sp)
/* 096354 7F0617E4 27A40114 */ addiu $a0, $sp, 0x114
/* 096358 7F0617E8 0FC16162 */ jal matrix_4x4_multiply_in_place
@@ -8484,7 +8484,7 @@ glabel handles_firing_or_throwing_weapon_in_hand
/* 096524 7F0619B4 46088101 */ sub.s $f4, $f16, $f8
/* 096528 7F0619B8 44073000 */ mfc1 $a3, $f6
/* 09652C 7F0619BC 24050000 */ li $a1, 0
/* 096530 7F0619C0 0FC1681E */ jal sub_GAME_7F059B58
/* 096530 7F0619C0 0FC1681E */ jal matrix_4x4_7F059B58
/* 096534 7F0619C4 E7A40010 */ swc1 $f4, 0x10($sp)
/* 096538 7F0619C8 27A40114 */ addiu $a0, $sp, 0x114
/* 09653C 7F0619CC 0FC16162 */ jal matrix_4x4_multiply_in_place
@@ -9063,7 +9063,7 @@ glabel sub_GAME_7F061BF4
/* 096754 7F061C24 AFB10018 */ sw $s1, 0x18($sp)
/* 096758 7F061C28 01CF8021 */ addu $s0, $t6, $t7
/* 09675C 7F061C2C 00808825 */ move $s1, $a0
/* 096760 7F061C30 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 096760 7F061C30 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 096764 7F061C34 26100870 */ addiu $s0, $s0, 0x870
/* 096768 7F061C38 C604039C */ lwc1 $f4, 0x39c($s0)
/* 09676C 7F061C3C C4460008 */ lwc1 $f6, 8($v0)
@@ -9098,7 +9098,7 @@ glabel sub_GAME_7F061BF4
/* 0967E0 7F061CB0 8F280004 */ lw $t0, 4($t9)
/* 0967E4 7F061CB4 51000054 */ beql $t0, $zero, .L7F061E08
/* 0967E8 7F061CB8 8FBF001C */ lw $ra, 0x1c($sp)
/* 0967EC 7F061CBC 0FC26919 */ jal get_num_players
/* 0967EC 7F061CBC 0FC26919 */ jal getPlayerCount
/* 0967F0 7F061CC0 00000000 */ nop
/* 0967F4 7F061CC4 28410002 */ slti $at, $v0, 2
/* 0967F8 7F061CC8 1420004E */ bnez $at, .L7F061E04
@@ -9272,7 +9272,7 @@ glabel sub_GAME_7F061E18
/* 096A00 7F061ED0 8D8CD0D0 */ lw $t4, %lo(flareimage3)($t4)
/* 096A04 7F061ED4 E7A000E8 */ swc1 $f0, 0xe8($sp)
/* 096A08 7F061ED8 E7A400B4 */ swc1 $f4, 0xb4($sp)
/* 096A0C 7F061EDC 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 096A0C 7F061EDC 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 096A10 7F061EE0 AFAC00B0 */ sw $t4, 0xb0($sp)
/* 096A14 7F061EE4 AFA200A8 */ sw $v0, 0xa8($sp)
/* 096A18 7F061EE8 82230001 */ lb $v1, 1($s1)
@@ -9644,7 +9644,7 @@ glabel sub_GAME_7F061E18
/* 096F98 7F062468 E7AC00A0 */ swc1 $f12, 0xa0($sp)
/* 096F9C 7F06246C E7AE00A4 */ swc1 $f14, 0xa4($sp)
.L7F062470:
/* 096FA0 7F062470 0FC1E111 */ jal sub_GAME_7F078444
/* 096FA0 7F062470 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 096FA4 7F062474 00000000 */ nop
/* 096FA8 7F062478 00402025 */ move $a0, $v0
/* 096FAC 7F06247C 0FC1611D */ jal matrix_4x4_transform_vector_in_place
@@ -10417,7 +10417,7 @@ glabel sub_GAME_7F062BE4
/* 0979C4 7F062E94 01EA5825 */ or $t3, $t7, $t2
/* 0979C8 7F062E98 AFAB00C0 */ sw $t3, 0xc0($sp)
/* 0979CC 7F062E9C AFA00090 */ sw $zero, 0x90($sp)
/* 0979D0 7F062EA0 0FC16319 */ jal sub_GAME_7F058C64
/* 0979D0 7F062EA0 0FC16319 */ jal matrix_4x4_7F058C64
/* 0979D4 7F062EA4 267102F8 */ addiu $s1, $s3, 0x2f8
/* 0979D8 7F062EA8 24010019 */ li $at, 25
/* 0979DC 7F062EAC 56810011 */ bnel $s4, $at, .L7F062EF4
@@ -10476,7 +10476,7 @@ glabel sub_GAME_7F062BE4
/* 097AA0 7F062F70 8E640304 */ lw $a0, 0x304($s3)
/* 097AA4 7F062F74 0FC22F52 */ jal sub_GAME_7F08BD48
/* 097AA8 7F062F78 85A5000E */ lh $a1, 0xe($t5)
/* 097AAC 7F062F7C 0FC16322 */ jal sub_GAME_7F058C88
/* 097AAC 7F062F7C 0FC16322 */ jal matrix_4x4_7F058C88
/* 097AB0 7F062F80 00000000 */ nop
/* 097AB4 7F062F84 3C0CBC00 */ lui $t4, (0xBC00000E >> 16) # lui $t4, 0xbc00
/* 097AB8 7F062F88 358C000E */ ori $t4, (0xBC00000E & 0xFFFF) # ori $t4, $t4, 0xe
@@ -10828,7 +10828,7 @@ glabel set_enviro_fog_for_items_in_solo_watch_menu
/* 097F80 7F063450 0FC1D1A1 */ jal subdraw
/* 097F84 7F063454 02602825 */ move $a1, $s3
/* 097F88 7F063458 8FAF0164 */ lw $t7, 0x164($sp)
/* 097F8C 7F06345C 0FC16319 */ jal sub_GAME_7F058C64
/* 097F8C 7F06345C 0FC16319 */ jal matrix_4x4_7F058C64
/* 097F90 7F063460 AFAF0198 */ sw $t7, 0x198($sp)
/* 097F94 7F063464 864E000E */ lh $t6, 0xe($s2)
/* 097F98 7F063468 00008025 */ move $s0, $zero
@@ -10851,7 +10851,7 @@ glabel set_enviro_fog_for_items_in_solo_watch_menu
/* 097FD8 7F0634A8 5420FFF3 */ bnezl $at, .L7F063478
/* 097FDC 7F0634AC 8FA90144 */ lw $t1, 0x144($sp)
.L7F0634B0:
/* 097FE0 7F0634B0 0FC16322 */ jal sub_GAME_7F058C88
/* 097FE0 7F0634B0 0FC16322 */ jal matrix_4x4_7F058C88
/* 097FE4 7F0634B4 00000000 */ nop
.L7F0634B8:
/* 097FE8 7F0634B8 8FA20198 */ lw $v0, 0x198($sp)
@@ -11174,7 +11174,7 @@ glabel sub_GAME_7F06359C
/* 098324 7F0637F4 0FC1D1A1 */ jal subdraw
/* 098328 7F0637F8 27A504D8 */ addiu $a1, $sp, 0x4d8
/* 09832C 7F0637FC 8FB90504 */ lw $t9, 0x504($sp)
/* 098330 7F063800 0FC16319 */ jal sub_GAME_7F058C64
/* 098330 7F063800 0FC16319 */ jal matrix_4x4_7F058C64
/* 098334 7F063804 AFB90538 */ sw $t9, 0x538($sp)
/* 098338 7F063808 8FB803D8 */ lw $t8, 0x3d8($sp)
/* 09833C 7F06380C 00008825 */ move $s1, $zero
@@ -11200,7 +11200,7 @@ glabel sub_GAME_7F06359C
/* 098388 7F063858 5420FFF2 */ bnezl $at, .L7F063824
/* 09838C 7F06385C 8FAF04E4 */ lw $t7, 0x4e4($sp)
.L7F063860:
/* 098390 7F063860 0FC16322 */ jal sub_GAME_7F058C88
/* 098390 7F063860 0FC16322 */ jal matrix_4x4_7F058C88
/* 098394 7F063864 00000000 */ nop
/* 098398 7F063868 126002AE */ beqz $s3, .L7F064324
/* 09839C 7F06386C 8FAC03D8 */ lw $t4, 0x3d8($sp)
@@ -11247,7 +11247,7 @@ glabel sub_GAME_7F06359C
/* 098438 7F063908 E7B80020 */ swc1 $f24, 0x20($sp)
/* 09843C 7F06390C E7A00010 */ swc1 $f0, 0x10($sp)
/* 098440 7F063910 E7A20018 */ swc1 $f2, 0x18($sp)
/* 098444 7F063914 0FC165A5 */ jal sub_GAME_7F059694
/* 098444 7F063914 0FC165A5 */ jal matrix_4x4_7F059694
/* 098448 7F063918 E7B00024 */ swc1 $f16, 0x24($sp)
/* 09844C 7F06391C 3C01C0A0 */ li $at, 0xC0A00000 # -5.000000
/* 098450 7F063920 44810000 */ mtc1 $at, $f0
@@ -11264,7 +11264,7 @@ glabel sub_GAME_7F06359C
/* 09847C 7F06394C E7B80020 */ swc1 $f24, 0x20($sp)
/* 098480 7F063950 E7A00010 */ swc1 $f0, 0x10($sp)
/* 098484 7F063954 E7A20018 */ swc1 $f2, 0x18($sp)
/* 098488 7F063958 0FC165A5 */ jal sub_GAME_7F059694
/* 098488 7F063958 0FC165A5 */ jal matrix_4x4_7F059694
/* 09848C 7F06395C E7B20024 */ swc1 $f18, 0x24($sp)
/* 098490 7F063960 0FC15FF4 */ jal matrix_4x4_set_identity
/* 098494 7F063964 02602025 */ move $a0, $s3
@@ -11894,7 +11894,7 @@ glabel sub_GAME_7F06359C
/* 098DE0 7F0642B0 0FC1D1A1 */ jal subdraw
/* 098DE4 7F0642B4 AFA90504 */ sw $t1, 0x504($sp)
/* 098DE8 7F0642B8 8FAE0504 */ lw $t6, 0x504($sp)
/* 098DEC 7F0642BC 0FC16319 */ jal sub_GAME_7F058C64
/* 098DEC 7F0642BC 0FC16319 */ jal matrix_4x4_7F058C64
/* 098DF0 7F0642C0 AFAE0538 */ sw $t6, 0x538($sp)
/* 098DF4 7F0642C4 8FAB03D8 */ lw $t3, 0x3d8($sp)
/* 098DF8 7F0642C8 00008825 */ move $s1, $zero
@@ -11920,7 +11920,7 @@ glabel sub_GAME_7F06359C
/* 098E44 7F064314 5420FFF2 */ bnezl $at, .L7F0642E0
/* 098E48 7F064318 8FB904E4 */ lw $t9, 0x4e4($sp)
.L7F06431C:
/* 098E4C 7F06431C 0FC16322 */ jal sub_GAME_7F058C88
/* 098E4C 7F06431C 0FC16322 */ jal matrix_4x4_7F058C88
/* 098E50 7F064320 00000000 */ nop
.L7F064324:
/* 098E54 7F064324 8FA20538 */ lw $v0, 0x538($sp)
@@ -13571,7 +13571,7 @@ Weapon_function_camera:
/* 09992C 7F064DFC 00002825 */ move $a1, $zero
/* 099930 7F064E00 15800005 */ bnez $t4, .L7F064E18
/* 099934 7F064E04 00003025 */ move $a2, $zero
/* 099938 7F064E08 0FC201EC */ jal set_rgba_tint
/* 099938 7F064E08 0FC201EC */ jal currentPlayerSetFadeColour
/* 09993C 7F064E0C 3C073F80 */ lui $a3, 0x3f80
/* 099940 7F064E10 10000063 */ b .L7F064FA0
/* 099944 7F064E14 AE000398 */ sw $zero, 0x398($s0)
@@ -13584,7 +13584,7 @@ Weapon_function_camera:
/* 09995C 7F064E2C 44802000 */ mtc1 $zero, $f4
/* 099960 7F064E30 44816000 */ mtc1 $at, $f12
/* 099964 7F064E34 00003825 */ move $a3, $zero
/* 099968 7F064E38 0FC201F8 */ jal sub_GAME_7F0807E0
/* 099968 7F064E38 0FC201F8 */ jal currentPlayerAdjustFade
/* 09996C 7F064E3C E7A40010 */ swc1 $f4, 0x10($sp)
/* 099970 7F064E40 240F0002 */ li $t7, 2
/* 099974 7F064E44 AE0F0024 */ sw $t7, 0x24($s0)
@@ -13739,7 +13739,7 @@ Weapon_shooting_pistol:
/* 099B68 7F065038 24190003 */ li $t9, 3
/* 099B6C 7F06503C 5560001E */ bnezl $t3, .L7F0650B8
/* 099B70 7F065040 AE190024 */ sw $t9, 0x24($s0)
/* 099B74 7F065044 0FC26919 */ jal get_num_players
/* 099B74 7F065044 0FC26919 */ jal getPlayerCount
/* 099B78 7F065048 00000000 */ nop
/* 099B7C 7F06504C 24010001 */ li $at, 1
/* 099B80 7F065050 50410009 */ beql $v0, $at, .L7F065078
@@ -13816,7 +13816,7 @@ Weapon_shooting_machinegun:
.L7F065150:
/* 099C80 7F065150 5700004F */ bnezl $t8, .L7F065290
/* 099C84 7F065154 820F000C */ lb $t7, 0xc($s0)
/* 099C88 7F065158 0FC26919 */ jal get_num_players
/* 099C88 7F065158 0FC26919 */ jal getPlayerCount
/* 099C8C 7F06515C 00000000 */ nop
/* 099C90 7F065160 24010001 */ li $at, 1
/* 099C94 7F065164 50410009 */ beql $v0, $at, .L7F06518C
@@ -13926,7 +13926,7 @@ Weapon_shooting_throwable:
/* 099DFC 7F0652CC 8E18002C */ lw $t8, 0x2c($s0)
/* 099E00 7F0652D0 0FC26C54 */ jal get_cur_playernum
/* 099E04 7F0652D4 00000000 */ nop
/* 099E08 7F0652D8 0FC26919 */ jal get_num_players
/* 099E08 7F0652D8 0FC26919 */ jal getPlayerCount
/* 099E0C 7F0652DC AFA20048 */ sw $v0, 0x48($sp)
/* 099E10 7F0652E0 8FAE0048 */ lw $t6, 0x48($sp)
/* 099E14 7F0652E4 3C053DCC */ lui $a1, (0x3DCCCCCD >> 16) # lui $a1, 0x3dcc
@@ -13979,7 +13979,7 @@ Weapon_shooting_throwable:
/* 099EC4 7F065394 00000000 */ nop
/* 099EC8 7F065398 AFB901B4 */ sw $t9, 0x1b4($sp)
.L7F06539C:
/* 099ECC 7F06539C 0FC26919 */ jal get_num_players
/* 099ECC 7F06539C 0FC26919 */ jal getPlayerCount
/* 099ED0 7F0653A0 00000000 */ nop
/* 099ED4 7F0653A4 24010001 */ li $at, 1
/* 099ED8 7F0653A8 5041000A */ beql $v0, $at, .L7F0653D4
@@ -14081,7 +14081,7 @@ Weapon_shooting_throwable:
/* 09A03C 7F06550C AE190024 */ sw $t9, 0x24($s0)
.L7F065510:
/* 09A040 7F065510 AE000020 */ sw $zero, 0x20($s0)
/* 09A044 7F065514 0FC26919 */ jal get_num_players
/* 09A044 7F065514 0FC26919 */ jal getPlayerCount
/* 09A048 7F065518 AE00001C */ sw $zero, 0x1c($s0)
/* 09A04C 7F06551C 24010001 */ li $at, 1
/* 09A050 7F065520 10410004 */ beq $v0, $at, .L7F065534
@@ -14441,7 +14441,7 @@ Weapon_shooting_throwable:
/* 09A584 7F065A54 24040010 */ li $a0, 16
/* 09A588 7F065A58 54A2005E */ bnel $a1, $v0, .L7F065BD4
/* 09A58C 7F065A5C 24060006 */ li $a2, 6
/* 09A590 7F065A60 0FC26919 */ jal get_num_players
/* 09A590 7F065A60 0FC26919 */ jal getPlayerCount
/* 09A594 7F065A64 AFA40188 */ sw $a0, 0x188($sp)
/* 09A598 7F065A68 28410002 */ slti $at, $v0, 2
/* 09A59C 7F065A6C 14200002 */ bnez $at, .L7F065A78
@@ -14451,7 +14451,7 @@ Weapon_shooting_throwable:
/* 09A5A8 7F065A78 8E19001C */ lw $t9, 0x1c($s0)
/* 09A5AC 7F065A7C 5720000C */ bnezl $t9, .L7F065AB0
/* 09A5B0 7F065A80 8E030020 */ lw $v1, 0x20($s0)
/* 09A5B4 7F065A84 0FC26919 */ jal get_num_players
/* 09A5B4 7F065A84 0FC26919 */ jal getPlayerCount
/* 09A5B8 7F065A88 AFA40188 */ sw $a0, 0x188($sp)
/* 09A5BC 7F065A8C 24010001 */ li $at, 1
/* 09A5C0 7F065A90 14410004 */ bne $v0, $at, .L7F065AA4
@@ -14478,7 +14478,7 @@ Weapon_shooting_throwable:
/* 09A608 7F065AD8 8C6F1130 */ lw $t7, 0x1130($v1)
/* 09A60C 7F065ADC 01F8C821 */ addu $t9, $t7, $t8
/* 09A610 7F065AE0 AC791130 */ sw $t9, 0x1130($v1)
/* 09A614 7F065AE4 0FC26919 */ jal get_num_players
/* 09A614 7F065AE4 0FC26919 */ jal getPlayerCount
/* 09A618 7F065AE8 AE00002C */ sw $zero, 0x2c($s0)
/* 09A61C 7F065AEC 28410002 */ slti $at, $v0, 2
/* 09A620 7F065AF0 14200003 */ bnez $at, .L7F065B00
@@ -14661,7 +14661,7 @@ Weapon_shooting_throwable:
.L7F065D78:
/* 09A8A8 7F065D78 14410088 */ bne $v0, $at, .L7F065F9C
/* 09A8AC 7F065D7C 240C0017 */ li $t4, 23
/* 09A8B0 7F065D80 0FC26919 */ jal get_num_players
/* 09A8B0 7F065D80 0FC26919 */ jal getPlayerCount
/* 09A8B4 7F065D84 AFAC0178 */ sw $t4, 0x178($sp)
/* 09A8B8 7F065D88 28410002 */ slti $at, $v0, 2
/* 09A8BC 7F065D8C 14200002 */ bnez $at, .L7F065D98
@@ -14671,7 +14671,7 @@ Weapon_shooting_throwable:
/* 09A8C8 7F065D98 8E0E001C */ lw $t6, 0x1c($s0)
/* 09A8CC 7F065D9C 55C00048 */ bnezl $t6, .L7F065EC0
/* 09A8D0 7F065DA0 8E0E0020 */ lw $t6, 0x20($s0)
/* 09A8D4 7F065DA4 0FC26919 */ jal get_num_players
/* 09A8D4 7F065DA4 0FC26919 */ jal getPlayerCount
/* 09A8D8 7F065DA8 00000000 */ nop
/* 09A8DC 7F065DAC 28410002 */ slti $at, $v0, 2
/* 09A8E0 7F065DB0 14200003 */ bnez $at, .L7F065DC0
@@ -15245,7 +15245,7 @@ weapon_reload_none_sfx:
/* 09B0EC 7F0665BC 8E0D0020 */ lw $t5, 0x20($s0)
/* 09B0F0 7F0665C0 5020000E */ beql $at, $zero, .L7F0665FC
/* 09B0F4 7F0665C4 8E0D0020 */ lw $t5, 0x20($s0)
/* 09B0F8 7F0665C8 0FC26919 */ jal get_num_players
/* 09B0F8 7F0665C8 0FC26919 */ jal getPlayerCount
/* 09B0FC 7F0665CC 00000000 */ nop
/* 09B100 7F0665D0 28410002 */ slti $at, $v0, 2
/* 09B104 7F0665D4 14200003 */ bnez $at, .L7F0665E4
@@ -16417,7 +16417,7 @@ Weapon_function_camera:
/* 099F00 7F065390 00002825 */ move $a1, $zero
/* 099F04 7F065394 15C00005 */ bnez $t6, .Ljp7F0653AC
/* 099F08 7F065398 00003025 */ move $a2, $zero
/* 099F0C 7F06539C 0FC20370 */ jal set_rgba_tint
/* 099F0C 7F06539C 0FC20370 */ jal currentPlayerSetFadeColour
/* 099F10 7F0653A0 3C073F80 */ lui $a3, 0x3f80
/* 099F14 7F0653A4 10000063 */ b .Ljp7F065534
/* 099F18 7F0653A8 AE000398 */ sw $zero, 0x398($s0)
@@ -16430,7 +16430,7 @@ Weapon_function_camera:
/* 099F30 7F0653C0 44802000 */ mtc1 $zero, $f4
/* 099F34 7F0653C4 44816000 */ mtc1 $at, $f12
/* 099F38 7F0653C8 00003825 */ move $a3, $zero
/* 099F3C 7F0653CC 0FC2037C */ jal sub_GAME_7F0807E0
/* 099F3C 7F0653CC 0FC2037C */ jal currentPlayerAdjustFade
/* 099F40 7F0653D0 E7A40010 */ swc1 $f4, 0x10($sp)
/* 099F44 7F0653D4 240F0002 */ li $t7, 2
/* 099F48 7F0653D8 AE0F0024 */ sw $t7, 0x24($s0)
@@ -16584,7 +16584,7 @@ Weapon_shooting_pistol:
/* 09A13C 7F0655CC 24190003 */ li $t9, 3
/* 09A140 7F0655D0 5700001E */ bnezl $t8, .Ljp7F06564C
/* 09A144 7F0655D4 AE190024 */ sw $t9, 0x24($s0)
/* 09A148 7F0655D8 0FC26C01 */ jal get_num_players
/* 09A148 7F0655D8 0FC26C01 */ jal getPlayerCount
/* 09A14C 7F0655DC 00000000 */ nop
/* 09A150 7F0655E0 24010001 */ li $at, 1
/* 09A154 7F0655E4 50410009 */ beql $v0, $at, .Ljp7F06560C
@@ -16661,7 +16661,7 @@ Weapon_shooting_machinegun:
.Ljp7F0656E4:
/* 09A254 7F0656E4 5700004F */ bnezl $t8, .Ljp7F065824
/* 09A258 7F0656E8 820F000C */ lb $t7, 0xc($s0)
/* 09A25C 7F0656EC 0FC26C01 */ jal get_num_players
/* 09A25C 7F0656EC 0FC26C01 */ jal getPlayerCount
/* 09A260 7F0656F0 00000000 */ nop
/* 09A264 7F0656F4 24010001 */ li $at, 1
/* 09A268 7F0656F8 50410009 */ beql $v0, $at, .Ljp7F065720
@@ -16770,7 +16770,7 @@ Weapon_shooting_throwable:
/* 09A3D0 7F065860 8E0E002C */ lw $t6, 0x2c($s0)
/* 09A3D4 7F065864 0FC26F3C */ jal get_cur_playernum
/* 09A3D8 7F065868 00000000 */ nop
/* 09A3DC 7F06586C 0FC26C01 */ jal get_num_players
/* 09A3DC 7F06586C 0FC26C01 */ jal getPlayerCount
/* 09A3E0 7F065870 AFA2004C */ sw $v0, 0x4c($sp)
/* 09A3E4 7F065874 8FB8004C */ lw $t8, 0x4c($sp)
/* 09A3E8 7F065878 3C053DCC */ lui $a1, (0x3DCCCCCD >> 16) # lui $a1, 0x3dcc
@@ -16823,7 +16823,7 @@ Weapon_shooting_throwable:
/* 09A498 7F065928 00000000 */ nop
/* 09A49C 7F06592C AFB801C4 */ sw $t8, 0x1c4($sp)
.Ljp7F065930:
/* 09A4A0 7F065930 0FC26C01 */ jal get_num_players
/* 09A4A0 7F065930 0FC26C01 */ jal getPlayerCount
/* 09A4A4 7F065934 00000000 */ nop
/* 09A4A8 7F065938 24010001 */ li $at, 1
/* 09A4AC 7F06593C 5041000A */ beql $v0, $at, .Ljp7F065968
@@ -16925,7 +16925,7 @@ Weapon_shooting_throwable:
/* 09A610 7F065AA0 AE0F0024 */ sw $t7, 0x24($s0)
.Ljp7F065AA4:
/* 09A614 7F065AA4 AE000020 */ sw $zero, 0x20($s0)
/* 09A618 7F065AA8 0FC26C01 */ jal get_num_players
/* 09A618 7F065AA8 0FC26C01 */ jal getPlayerCount
/* 09A61C 7F065AAC AE00001C */ sw $zero, 0x1c($s0)
/* 09A620 7F065AB0 24010001 */ li $at, 1
/* 09A624 7F065AB4 10410008 */ beq $v0, $at, .Ljp7F065AD8
@@ -17289,7 +17289,7 @@ Weapon_shooting_throwable:
/* 09AB68 7F065FF8 24040010 */ li $a0, 16
/* 09AB6C 7F065FFC 54A2005E */ bnel $a1, $v0, .Ljp7F066178
/* 09AB70 7F066000 24060006 */ li $a2, 6
/* 09AB74 7F066004 0FC26C01 */ jal get_num_players
/* 09AB74 7F066004 0FC26C01 */ jal getPlayerCount
/* 09AB78 7F066008 AFA4018C */ sw $a0, 0x18c($sp)
/* 09AB7C 7F06600C 28410002 */ slti $at, $v0, 2
/* 09AB80 7F066010 14200002 */ bnez $at, .Ljp7F06601C
@@ -17299,7 +17299,7 @@ Weapon_shooting_throwable:
/* 09AB8C 7F06601C 8E18001C */ lw $t8, 0x1c($s0)
/* 09AB90 7F066020 5700000C */ bnezl $t8, .Ljp7F066054
/* 09AB94 7F066024 8E030020 */ lw $v1, 0x20($s0)
/* 09AB98 7F066028 0FC26C01 */ jal get_num_players
/* 09AB98 7F066028 0FC26C01 */ jal getPlayerCount
/* 09AB9C 7F06602C AFA4018C */ sw $a0, 0x18c($sp)
/* 09ABA0 7F066030 24010001 */ li $at, 1
/* 09ABA4 7F066034 14410004 */ bne $v0, $at, .Ljp7F066048
@@ -17326,7 +17326,7 @@ Weapon_shooting_throwable:
/* 09ABEC 7F06607C 8C6E1130 */ lw $t6, 0x1130($v1)
/* 09ABF0 7F066080 01CFC821 */ addu $t9, $t6, $t7
/* 09ABF4 7F066084 AC791130 */ sw $t9, 0x1130($v1)
/* 09ABF8 7F066088 0FC26C01 */ jal get_num_players
/* 09ABF8 7F066088 0FC26C01 */ jal getPlayerCount
/* 09ABFC 7F06608C AE00002C */ sw $zero, 0x2c($s0)
/* 09AC00 7F066090 28410002 */ slti $at, $v0, 2
/* 09AC04 7F066094 14200003 */ bnez $at, .Ljp7F0660A4
@@ -17509,7 +17509,7 @@ Weapon_shooting_throwable:
.Ljp7F06631C:
/* 09AE8C 7F06631C 1441008D */ bne $v0, $at, .Ljp7F066554
/* 09AE90 7F066320 24190017 */ li $t9, 23
/* 09AE94 7F066324 0FC26C01 */ jal get_num_players
/* 09AE94 7F066324 0FC26C01 */ jal getPlayerCount
/* 09AE98 7F066328 AFB9017C */ sw $t9, 0x17c($sp)
/* 09AE9C 7F06632C 28410002 */ slti $at, $v0, 2
/* 09AEA0 7F066330 14200002 */ bnez $at, .Ljp7F06633C
@@ -17519,7 +17519,7 @@ Weapon_shooting_throwable:
/* 09AEAC 7F06633C 8E0E001C */ lw $t6, 0x1c($s0)
/* 09AEB0 7F066340 55C0004D */ bnezl $t6, .Ljp7F066478
/* 09AEB4 7F066344 8E0F0020 */ lw $t7, 0x20($s0)
/* 09AEB8 7F066348 0FC26C01 */ jal get_num_players
/* 09AEB8 7F066348 0FC26C01 */ jal getPlayerCount
/* 09AEBC 7F06634C 00000000 */ nop
/* 09AEC0 7F066350 28410002 */ slti $at, $v0, 2
/* 09AEC4 7F066354 14200003 */ bnez $at, .Ljp7F066364
@@ -18103,7 +18103,7 @@ weapon_reload_none_sfx:
/* 09B704 7F066B94 8E0F0020 */ lw $t7, 0x20($s0)
/* 09B708 7F066B98 5020000E */ beql $at, $zero, .Ljp7F066BD4
/* 09B70C 7F066B9C 8E0F0020 */ lw $t7, 0x20($s0)
/* 09B710 7F066BA0 0FC26C01 */ jal get_num_players
/* 09B710 7F066BA0 0FC26C01 */ jal getPlayerCount
/* 09B714 7F066BA4 00000000 */ nop
/* 09B718 7F066BA8 28410002 */ slti $at, $v0, 2
/* 09B71C 7F066BAC 14200003 */ bnez $at, .Ljp7F066BBC
@@ -19612,7 +19612,7 @@ void sub_GAME_7F067AA4(s32 param_1)
}
void sub_GAME_7F067AB4(struct xyzpoint *param_1)
void sub_GAME_7F067AB4(struct coord *param_1)
{
pPlayer->hands[RIGHT_HAND].field_A38 = sub_GAME_7F05DCB8(RIGHT_HAND) + param_1->x;
pPlayer->hands[RIGHT_HAND].field_A3C = param_1->y;
@@ -20219,7 +20219,7 @@ void sub_GAME_7F0681CC(void *arg0, s32 arg1, s32 arg2) {
}
}
// Node 3
sp24 = (f32) ((120.0f * sp28) / video_related_23());
sp24 = (f32) ((120.0f * sp28) / viGetFovY());
sp1C = get_random_value();
temp_ret = get_random_value();
temp_f10 = (f32) sp1C;
@@ -20312,7 +20312,7 @@ glabel sub_GAME_7F0681CC
/* 09CD8C 7F06825C 46083282 */ mul.s $f10, $f6, $f8
/* 09CD90 7F068260 E7AA0028 */ swc1 $f10, 0x28($sp)
.L7F068264:
/* 09CD94 7F068264 0C001177 */ jal video_related_23
/* 09CD94 7F068264 0C001177 */ jal viGetFovY
/* 09CD98 7F068268 00000000 */ nop
/* 09CD9C 7F06826C 3C0142F0 */ li $at, 0x42F00000 # 120.000000
/* 09CDA0 7F068270 44818000 */ mtc1 $at, $f16
@@ -20624,7 +20624,7 @@ glabel sub_GAME_7F068508
/* 09D060 7F068530 8C430028 */ lw $v1, 0x28($v0)
/* 09D064 7F068534 506001F6 */ beql $v1, $zero, .L7F068D10
/* 09D068 7F068538 8FBF001C */ lw $ra, 0x1c($sp)
/* 09D06C 7F06853C 0FC26919 */ jal get_num_players
/* 09D06C 7F06853C 0FC26919 */ jal getPlayerCount
/* 09D070 7F068540 AFA30070 */ sw $v1, 0x70($sp)
/* 09D074 7F068544 28410002 */ slti $at, $v0, 2
/* 09D078 7F068548 102001F0 */ beqz $at, .L7F068D0C
@@ -21469,7 +21469,7 @@ glabel sub_GAME_7F068EC4
/* 09DAB0 7F068F80 27A5003C */ addiu $a1, $sp, 0x3c
/* 09DAB4 7F068F84 0FC16266 */ jal matrix_4x4_set_position
/* 09DAB8 7F068F88 24840004 */ addiu $a0, $a0, 4
/* 09DABC 7F068F8C 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 09DABC 7F068F8C 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 09DAC0 7F068F90 00000000 */ nop
/* 09DAC4 7F068F94 00402025 */ move $a0, $v0
/* 09DAC8 7F068F98 27A5003C */ addiu $a1, $sp, 0x3c
@@ -22949,7 +22949,7 @@ s32 generate_ammo_total_microcode(s32 arg0) {
// Node 2
sp64 = get_item_in_hand(1);
sp60 = get_item_in_hand(0);
if (get_num_players() < 3)
if (getPlayerCount() < 3)
{
// Node 3
sp58 = 0x3b;
@@ -22998,8 +22998,8 @@ s32 generate_ammo_total_microcode(s32 arg0) {
sp48 = (void *) (temp_v1->unk4 + globalbank_rdram_offset);
sp30 = getPlayer_c_screenleft();
sp34 = getPlayer_c_screenwidth();
sp38 = get_video2_settings_uly();
arg0 = set_rgba_redirect_generate_microcode(arg0, sp48, ((sp34 + sp30) - (f32) sp54), 0xbf800000, (f32) ((get_video2_settings_height() + sp38) + -0x14), 0, (f32) sp28->unk8, 1);
sp38 = viGetViewTop();
arg0 = set_rgba_redirect_generate_microcode(arg0, sp48, ((sp34 + sp30) - (f32) sp54), 0xbf800000, (f32) ((viGetViewHeight() + sp38) + -0x14), 0, (f32) sp28->unk8, 1);
sp44 = (s32) sp48->unk4;
}
// Node 14
@@ -23028,10 +23028,10 @@ s32 generate_ammo_total_microcode(s32 arg0) {
if (bondwalkItemCheckBitflags(sp60, 0x400000) == 0)
{
// Node 20
sp2C = get_video2_settings_ulx();
sp2E = get_video2_settings_width();
sp38 = get_video2_settings_uly();
get_video2_settings_height();
sp2C = viGetViewLeft();
sp2E = viGetViewWidth();
sp38 = viGetViewTop();
viGetViewHeight();
phi_t9 = (sp44 >> 1);
if (sp44 < 0)
{
@@ -23045,10 +23045,10 @@ s32 generate_ammo_total_microcode(s32 arg0) {
if ((sp50 > 0) || (bondwalkItemCheckBitflags(sp60, 0x400000) != 0))
{
// Node 25
sp2C = get_video2_settings_ulx();
sp2E = get_video2_settings_width();
sp38 = get_video2_settings_uly();
get_video2_settings_height();
sp2C = viGetViewLeft();
sp2E = viGetViewWidth();
sp38 = viGetViewTop();
viGetViewHeight();
temp_t3 = (sp44 + 1);
phi_t0 = (temp_t3 >> 1);
if (temp_t3 < 0)
@@ -23096,8 +23096,8 @@ s32 generate_ammo_total_microcode(s32 arg0) {
sp28 = temp_v1_2;
sp40 = (void *) (temp_v1_2->unk4 + globalbank_rdram_offset);
sp34 = getPlayer_c_screenleft();
sp38 = get_video2_settings_uly();
get_video2_settings_height();
sp38 = viGetViewTop();
viGetViewHeight();
arg0 = set_rgba_redirect_generate_microcode(sp28->unk8, arg0, sp40, (sp34 + (f32) sp58), 0xbf800000, 1, 1);
sp3C = (s32) sp40->unk4;
}
@@ -23127,9 +23127,9 @@ s32 generate_ammo_total_microcode(s32 arg0) {
if (bondwalkItemCheckBitflags(sp64, 0x400000) == 0)
{
// Node 42
sp2E = get_video2_settings_ulx();
sp38 = get_video2_settings_uly();
get_video2_settings_height();
sp2E = viGetViewLeft();
sp38 = viGetViewTop();
viGetViewHeight();
phi_t3 = (sp3C >> 1);
if (sp3C < 0)
{
@@ -23143,9 +23143,9 @@ s32 generate_ammo_total_microcode(s32 arg0) {
if ((sp50 > 0) || (bondwalkItemCheckBitflags(sp64, 0x400000) != 0))
{
// Node 47
sp2E = get_video2_settings_ulx();
sp38 = get_video2_settings_uly();
get_video2_settings_height();
sp2E = viGetViewLeft();
sp38 = viGetViewTop();
viGetViewHeight();
temp_t1 = (sp3C + 1);
phi_t0_2 = (temp_t1 >> 1);
if (temp_t1 < 0)
@@ -23192,7 +23192,7 @@ glabel generate_ammo_total_microcode
/* 09E858 7F069D28 AFA20064 */ sw $v0, 0x64($sp)
/* 09E85C 7F069D2C 0FC17674 */ jal get_item_in_hand
/* 09E860 7F069D30 00002025 */ move $a0, $zero
/* 09E864 7F069D34 0FC26919 */ jal get_num_players
/* 09E864 7F069D34 0FC26919 */ jal getPlayerCount
/* 09E868 7F069D38 AFA20060 */ sw $v0, 0x60($sp)
/* 09E86C 7F069D3C 28410003 */ slti $at, $v0, 3
/* 09E870 7F069D40 10200005 */ beqz $at, .L7F069D58
@@ -23254,9 +23254,9 @@ glabel generate_ammo_total_microcode
/* 09E944 7F069E14 AFA20048 */ sw $v0, 0x48($sp)
/* 09E948 7F069E18 0FC1E129 */ jal getPlayer_c_screenwidth
/* 09E94C 7F069E1C E7A00030 */ swc1 $f0, 0x30($sp)
/* 09E950 7F069E20 0C001149 */ jal get_video2_settings_uly
/* 09E950 7F069E20 0C001149 */ jal viGetViewTop
/* 09E954 7F069E24 E7A00034 */ swc1 $f0, 0x34($sp)
/* 09E958 7F069E28 0C00112B */ jal get_video2_settings_height
/* 09E958 7F069E28 0C00112B */ jal viGetViewHeight
/* 09E95C 7F069E2C A7A20038 */ sh $v0, 0x38($sp)
/* 09E960 7F069E30 8FAA0054 */ lw $t2, 0x54($sp)
/* 09E964 7F069E34 87AB0038 */ lh $t3, 0x38($sp)
@@ -23327,13 +23327,13 @@ glabel generate_ammo_total_microcode
/* 09EA58 7F069F28 8FA40060 */ lw $a0, 0x60($sp)
/* 09EA5C 7F069F2C 54400023 */ bnezl $v0, .L7F069FBC
/* 09EA60 7F069F30 8FAD0050 */ lw $t5, 0x50($sp)
/* 09EA64 7F069F34 0C001145 */ jal get_video2_settings_ulx
/* 09EA64 7F069F34 0C001145 */ jal viGetViewLeft
/* 09EA68 7F069F38 00000000 */ nop
/* 09EA6C 7F069F3C 0C001127 */ jal get_video2_settings_width
/* 09EA6C 7F069F3C 0C001127 */ jal viGetViewWidth
/* 09EA70 7F069F40 A7A2002C */ sh $v0, 0x2c($sp)
/* 09EA74 7F069F44 0C001149 */ jal get_video2_settings_uly
/* 09EA74 7F069F44 0C001149 */ jal viGetViewTop
/* 09EA78 7F069F48 A7A2002E */ sh $v0, 0x2e($sp)
/* 09EA7C 7F069F4C 0C00112B */ jal get_video2_settings_height
/* 09EA7C 7F069F4C 0C00112B */ jal viGetViewHeight
/* 09EA80 7F069F50 A7A20038 */ sh $v0, 0x38($sp)
/* 09EA84 7F069F54 87A8002E */ lh $t0, 0x2e($sp)
/* 09EA88 7F069F58 87AC002C */ lh $t4, 0x2c($sp)
@@ -23371,13 +23371,13 @@ glabel generate_ammo_total_microcode
/* 09EB00 7F069FD0 10400023 */ beqz $v0, .L7F06A060
/* 09EB04 7F069FD4 00000000 */ nop
.L7F069FD8:
/* 09EB08 7F069FD8 0C001145 */ jal get_video2_settings_ulx
/* 09EB08 7F069FD8 0C001145 */ jal viGetViewLeft
/* 09EB0C 7F069FDC 00000000 */ nop
/* 09EB10 7F069FE0 0C001127 */ jal get_video2_settings_width
/* 09EB10 7F069FE0 0C001127 */ jal viGetViewWidth
/* 09EB14 7F069FE4 A7A2002C */ sh $v0, 0x2c($sp)
/* 09EB18 7F069FE8 0C001149 */ jal get_video2_settings_uly
/* 09EB18 7F069FE8 0C001149 */ jal viGetViewTop
/* 09EB1C 7F069FEC A7A2002E */ sh $v0, 0x2e($sp)
/* 09EB20 7F069FF0 0C00112B */ jal get_video2_settings_height
/* 09EB20 7F069FF0 0C00112B */ jal viGetViewHeight
/* 09EB24 7F069FF4 A7A20038 */ sh $v0, 0x38($sp)
/* 09EB28 7F069FF8 87AE002E */ lh $t6, 0x2e($sp)
/* 09EB2C 7F069FFC 87B8002C */ lh $t8, 0x2c($sp)
@@ -23447,9 +23447,9 @@ glabel generate_ammo_total_microcode
/* 09EC1C 7F06A0EC 004C1021 */ addu $v0, $v0, $t4
/* 09EC20 7F06A0F0 0FC1E131 */ jal getPlayer_c_screenleft
/* 09EC24 7F06A0F4 AFA20040 */ sw $v0, 0x40($sp)
/* 09EC28 7F06A0F8 0C001149 */ jal get_video2_settings_uly
/* 09EC28 7F06A0F8 0C001149 */ jal viGetViewTop
/* 09EC2C 7F06A0FC E7A00034 */ swc1 $f0, 0x34($sp)
/* 09EC30 7F06A100 0C00112B */ jal get_video2_settings_height
/* 09EC30 7F06A100 0C00112B */ jal viGetViewHeight
/* 09EC34 7F06A104 A7A20038 */ sh $v0, 0x38($sp)
/* 09EC38 7F06A108 8FAD0058 */ lw $t5, 0x58($sp)
/* 09EC3C 7F06A10C 87AE0038 */ lh $t6, 0x38($sp)
@@ -23519,11 +23519,11 @@ glabel generate_ammo_total_microcode
/* 09ED2C 7F06A1FC 8FA40064 */ lw $a0, 0x64($sp)
/* 09ED30 7F06A200 5440001F */ bnezl $v0, .L7F06A280
/* 09ED34 7F06A204 8FAC0050 */ lw $t4, 0x50($sp)
/* 09ED38 7F06A208 0C001145 */ jal get_video2_settings_ulx
/* 09ED38 7F06A208 0C001145 */ jal viGetViewLeft
/* 09ED3C 7F06A20C 00000000 */ nop
/* 09ED40 7F06A210 0C001149 */ jal get_video2_settings_uly
/* 09ED40 7F06A210 0C001149 */ jal viGetViewTop
/* 09ED44 7F06A214 A7A2002E */ sh $v0, 0x2e($sp)
/* 09ED48 7F06A218 0C00112B */ jal get_video2_settings_height
/* 09ED48 7F06A218 0C00112B */ jal viGetViewHeight
/* 09ED4C 7F06A21C A7A20038 */ sh $v0, 0x38($sp)
/* 09ED50 7F06A220 87AC002E */ lh $t4, 0x2e($sp)
/* 09ED54 7F06A224 8FAF0058 */ lw $t7, 0x58($sp)
@@ -23559,11 +23559,11 @@ glabel generate_ammo_total_microcode
/* 09EDC4 7F06A294 1040001F */ beqz $v0, .L7F06A314
/* 09EDC8 7F06A298 00000000 */ nop
.L7F06A29C:
/* 09EDCC 7F06A29C 0C001145 */ jal get_video2_settings_ulx
/* 09EDCC 7F06A29C 0C001145 */ jal viGetViewLeft
/* 09EDD0 7F06A2A0 00000000 */ nop
/* 09EDD4 7F06A2A4 0C001149 */ jal get_video2_settings_uly
/* 09EDD4 7F06A2A4 0C001149 */ jal viGetViewTop
/* 09EDD8 7F06A2A8 A7A2002E */ sh $v0, 0x2e($sp)
/* 09EDDC 7F06A2AC 0C00112B */ jal get_video2_settings_height
/* 09EDDC 7F06A2AC 0C00112B */ jal viGetViewHeight
/* 09EDE0 7F06A2B0 A7A20038 */ sh $v0, 0x38($sp)
/* 09EDE4 7F06A2B4 87AF002E */ lh $t7, 0x2e($sp)
/* 09EDE8 7F06A2B8 8FAA0058 */ lw $t2, 0x58($sp)
@@ -23669,9 +23669,9 @@ s32 sub_GAME_7F06A334(s32 arg0) {
{
// Node 6
sp40 = (void *) (sp40 + globalbank_rdram_offset);
sp34 = get_video2_settings_uly();
sp34 = viGetViewTop();
sp3C = (s32) sp40->unk4;
phi_s0 = set_rgba_redirect_generate_microcode(arg0, sp40, 0x43480000, 0x43340000, (f32) ((get_video2_settings_height() + sp34) + -0x14), 0, (f32) sp30->unk8, 1);
phi_s0 = set_rgba_redirect_generate_microcode(arg0, sp40, 0x43480000, 0x43340000, (f32) ((viGetViewHeight() + sp34) + -0x14), 0, (f32) sp30->unk8, 1);
}
// Node 7
temp_s0 = microcode_constructor(phi_s0);
@@ -23787,9 +23787,9 @@ glabel sub_GAME_7F06A334
/* 09EF10 7F06A3E0 00000000 */ nop
/* 09EF14 7F06A3E4 8D4AD0B0 */ lw $t2, %lo(globalbank_rdram_offset)($t2)
/* 09EF18 7F06A3E8 006A1821 */ addu $v1, $v1, $t2
/* 09EF1C 7F06A3EC 0C001149 */ jal get_video2_settings_uly
/* 09EF1C 7F06A3EC 0C001149 */ jal viGetViewTop
/* 09EF20 7F06A3F0 AFA30040 */ sw $v1, 0x40($sp)
/* 09EF24 7F06A3F4 0C00112B */ jal get_video2_settings_height
/* 09EF24 7F06A3F4 0C00112B */ jal viGetViewHeight
/* 09EF28 7F06A3F8 A7A20034 */ sh $v0, 0x34($sp)
/* 09EF2C 7F06A3FC 87AB0034 */ lh $t3, 0x34($sp)
/* 09EF30 7F06A400 8FAE0030 */ lw $t6, 0x30($sp)
@@ -24201,7 +24201,7 @@ void *increment_num_kills_display_text_in_MP(void) {
// Node 0
pPlayersPerm->killcount = (s32) (pPlayersPerm->killcount + 1);
pPlayer->field_29F8 = (s32) (pPlayer->field_29F8 + 1);
temp_ret = get_num_players();
temp_ret = getPlayerCount();
phi_return_reg = temp_ret;
if (temp_ret >= 2)
{
@@ -24292,7 +24292,7 @@ glabel increment_num_kills_display_text_in_MP
/* 09F2D8 7F06A7A8 8E020000 */ lw $v0, ($s0)
/* 09F2DC 7F06A7AC 8C5829F8 */ lw $t8, 0x29f8($v0)
/* 09F2E0 7F06A7B0 27190001 */ addiu $t9, $t8, 1
/* 09F2E4 7F06A7B4 0FC26919 */ jal get_num_players
/* 09F2E4 7F06A7B4 0FC26919 */ jal getPlayerCount
/* 09F2E8 7F06A7B8 AC5929F8 */ sw $t9, 0x29f8($v0)
/* 09F2EC 7F06A7BC 28410002 */ slti $at, $v0, 2
/* 09F2F0 7F06A7C0 54200054 */ bnezl $at, .L7F06A914
@@ -24407,7 +24407,7 @@ glabel increment_num_kills_display_text_in_MP
/* 09F2D8 7F06A7A8 8E020000 */ lw $v0, ($s0)
/* 09F2DC 7F06A7AC 8C5829F8 */ lw $t8, 0x29f8($v0)
/* 09F2E0 7F06A7B0 27190001 */ addiu $t9, $t8, 1
/* 09F2E4 7F06A7B4 0FC26919 */ jal get_num_players
/* 09F2E4 7F06A7B4 0FC26919 */ jal getPlayerCount
/* 09F2E8 7F06A7B8 AC5929F8 */ sw $t9, 0x29f8($v0)
/* 09F2EC 7F06A7BC 28410002 */ slti $at, $v0, 2
/* 09F2F0 7F06A7C0 54200054 */ bnezl $at, .L7F06A914
@@ -24524,7 +24524,7 @@ void increment_num_deaths(void)
{
char acStack256 [256]
pPlayer->deathcount = (s32) (pPlayer->deathcount + 1);
if (get_num_players() >= 2)
if (getPlayerCount() >= 2)
{
if (pPlayer->deathcount == 1)
{
@@ -24548,7 +24548,7 @@ glabel increment_num_deaths
/* 09F498 7F06A968 AFBF001C */ sw $ra, 0x1c($sp)
/* 09F49C 7F06A96C 8C4E29D8 */ lw $t6, 0x29d8($v0)
/* 09F4A0 7F06A970 25CF0001 */ addiu $t7, $t6, 1
/* 09F4A4 7F06A974 0FC26919 */ jal get_num_players
/* 09F4A4 7F06A974 0FC26919 */ jal getPlayerCount
/* 09F4A8 7F06A978 AC4F29D8 */ sw $t7, 0x29d8($v0)
/* 09F4AC 7F06A97C 28410002 */ slti $at, $v0, 2
/* 09F4B0 7F06A980 1420001D */ bnez $at, .L7F06A9F8
@@ -24600,7 +24600,7 @@ glabel increment_num_deaths
/* 09F498 7F06A968 AFBF001C */ sw $ra, 0x1c($sp)
/* 09F49C 7F06A96C 8C4E29D8 */ lw $t6, 0x29d8($v0)
/* 09F4A0 7F06A970 25CF0001 */ addiu $t7, $t6, 1
/* 09F4A4 7F06A974 0FC26919 */ jal get_num_players
/* 09F4A4 7F06A974 0FC26919 */ jal getPlayerCount
/* 09F4A8 7F06A978 AC4F29D8 */ sw $t7, 0x29d8($v0)
/* 09F4AC 7F06A97C 28410002 */ slti $at, $v0, 2
/* 09F4B0 7F06A980 1420001D */ bnez $at, .L7F06A9F8
@@ -24660,7 +24660,7 @@ void *increment_num_suicides_display_MP(void) {
// Node 0
pPlayer->num_suicides = (s32) (pPlayer->num_suicides + 1);
temp_ret = get_num_players();
temp_ret = getPlayerCount();
phi_return_reg = temp_ret;
if (temp_ret >= 2)
{
@@ -24747,7 +24747,7 @@ glabel increment_num_suicides_display_MP
/* 09F55C 7F06AA2C AFBF001C */ sw $ra, 0x1c($sp)
/* 09F560 7F06AA30 8C4E29DC */ lw $t6, 0x29dc($v0)
/* 09F564 7F06AA34 25CF0001 */ addiu $t7, $t6, 1
/* 09F568 7F06AA38 0FC26919 */ jal get_num_players
/* 09F568 7F06AA38 0FC26919 */ jal getPlayerCount
/* 09F56C 7F06AA3C AC4F29DC */ sw $t7, 0x29dc($v0)
/* 09F570 7F06AA40 28410002 */ slti $at, $v0, 2
/* 09F574 7F06AA44 54200052 */ bnezl $at, .L7F06AB90
@@ -24856,7 +24856,7 @@ glabel increment_num_suicides_display_MP
/* 09F55C 7F06AA2C AFBF001C */ sw $ra, 0x1c($sp)
/* 09F560 7F06AA30 8C4E29DC */ lw $t6, 0x29dc($v0)
/* 09F564 7F06AA34 25CF0001 */ addiu $t7, $t6, 1
/* 09F568 7F06AA38 0FC26919 */ jal get_num_players
/* 09F568 7F06AA38 0FC26919 */ jal getPlayerCount
/* 09F56C 7F06AA3C AC4F29DC */ sw $t7, 0x29dc($v0)
/* 09F570 7F06AA40 28410002 */ slti $at, $v0, 2
/* 09F574 7F06AA44 54200052 */ bnezl $at, .L7F06AB90
+15 -15
View File
@@ -262,7 +262,7 @@ glabel cheatButton_7F09177C
/* 0C62E4 7F0917B4 10000008 */ b .L7F0917D8
/* 0C62E8 7F0917B8 24130001 */ li $s3, 1
.L7F0917BC:
/* 0C62EC 7F0917BC 0FC26919 */ jal get_num_players
/* 0C62EC 7F0917BC 0FC26919 */ jal getPlayerCount
/* 0C62F0 7F0917C0 00000000 */ nop
/* 0C62F4 7F0917C4 24010001 */ li $at, 1
/* 0C62F8 7F0917C8 14410003 */ bne $v0, $at, .L7F0917D8
@@ -521,7 +521,7 @@ void turn_on_cheat_for_players(u32 cheatindex)
uVar1 = D_8003F80C[cheatindex];
playernum = get_cur_playernum();
numplayers = get_num_players();
numplayers = getPlayerCount();
if (numplayers == 1) {
handle_cheats_turned_on(cheatindex);
}
@@ -565,7 +565,7 @@ glabel turn_on_cheat_for_players
/* 0C65FC 7F091ACC AFB1001C */ sw $s1, 0x1c($sp)
/* 0C6600 7F091AD0 0FC26C54 */ jal get_cur_playernum
/* 0C6604 7F091AD4 8E10F808 */ lw $s0, %lo(D_8003F808)($s0)
/* 0C6608 7F091AD8 0FC26919 */ jal get_num_players
/* 0C6608 7F091AD8 0FC26919 */ jal getPlayerCount
/* 0C660C 7F091ADC AFA20028 */ sw $v0, 0x28($sp)
/* 0C6610 7F091AE0 24010001 */ li $at, 1
/* 0C6614 7F091AE4 14410005 */ bne $v0, $at, .L7F091AFC
@@ -638,7 +638,7 @@ void handle_cheats_turned_on(CHEAT_IDS cheat)
uVar1 = (&D_8003F808)[cheat * 4];
playernum = get_cur_playernum();
numplayers = get_num_players();
numplayers = getPlayerCount();
if ((uVar1 & 0x10) == 0) {
if ((uVar1 & 0x20) == 0) {
cheatl_ARRAY_80079e30[cheat] = cheatl_ARRAY_80079e30[cheat] | (byte)(1 << (playernum & 0x1f));
@@ -792,7 +792,7 @@ void handle_cheats_turned_on(CHEAT_IDS cheat)
}
break;
case cheats_cheat_invisibility_mp:
set_curplayer_fade(300.00000000, 0.5f);
currentPlayerStartChrFade(300.00000000, 0.5f);
break;
case cheats_cheat_fast:
if (get_debug_fast_bond_flag() == FALSE)
@@ -1022,7 +1022,7 @@ glabel handle_cheats_turned_on
/* 0C66AC 7F091B7C AFA40040 */ sw $a0, 0x40($sp)
/* 0C66B0 7F091B80 0FC26C54 */ jal get_cur_playernum
/* 0C66B4 7F091B84 AFAF003C */ sw $t7, 0x3c($sp)
/* 0C66B8 7F091B88 0FC26919 */ jal get_num_players
/* 0C66B8 7F091B88 0FC26919 */ jal getPlayerCount
/* 0C66BC 7F091B8C AFA20038 */ sw $v0, 0x38($sp)
/* 0C66C0 7F091B90 8FA3003C */ lw $v1, 0x3c($sp)
/* 0C66C4 7F091B94 8FA60040 */ lw $a2, 0x40($sp)
@@ -1421,7 +1421,7 @@ cheats_cheat_invisibility_mp:
/* 0C6C74 7F092144 3C014396 */ li $at, 0x43960000 # 300.000000
/* 0C6C78 7F092148 44816000 */ mtc1 $at, $f12
/* 0C6C7C 7F09214C 3C018005 */ lui $at, %hi(finalamount)
/* 0C6C80 7F092150 0FC20284 */ jal set_curplayer_fade
/* 0C6C80 7F092150 0FC20284 */ jal currentPlayerStartChrFade
/* 0C6C84 7F092154 C42E73D8 */ lwc1 $f14, %lo(finalamount)($at)
/* 0C6C88 7F092158 100000B4 */ b .L7F09242C
/* 0C6C8C 7F09215C 8FBF0014 */ lw $ra, 0x14($sp)
@@ -1723,7 +1723,7 @@ glabel handle_cheats_turned_on
/* 0C71CC 7F09265C AFA40040 */ sw $a0, 0x40($sp)
/* 0C71D0 7F092660 0FC26F3C */ jal get_cur_playernum
/* 0C71D4 7F092664 AFAF003C */ sw $t7, 0x3c($sp)
/* 0C71D8 7F092668 0FC26C01 */ jal get_num_players
/* 0C71D8 7F092668 0FC26C01 */ jal getPlayerCount
/* 0C71DC 7F09266C AFA20038 */ sw $v0, 0x38($sp)
/* 0C71E0 7F092670 8FA3003C */ lw $v1, 0x3c($sp)
/* 0C71E4 7F092674 8FA60040 */ lw $a2, 0x40($sp)
@@ -2122,7 +2122,7 @@ cheats_cheat_invisibility_mp:
/* 0C7794 7F092C24 3C014396 */ li $at, 0x43960000 # 300.000000
/* 0C7798 7F092C28 44816000 */ mtc1 $at, $f12
/* 0C779C 7F092C2C 3C018005 */ lui $at, %hi(finalamount) # $at, 0x8005
/* 0C77A0 7F092C30 0FC20408 */ jal set_curplayer_fade
/* 0C77A0 7F092C30 0FC20408 */ jal currentPlayerStartChrFade
/* 0C77A4 7F092C34 C42E7408 */ lwc1 $f14, %lo(finalamount)($at)
/* 0C77A8 7F092C38 100000DC */ b .Ljp7F092FAC
/* 0C77AC 7F092C3C 8FBF0014 */ lw $ra, 0x14($sp)
@@ -2470,7 +2470,7 @@ glabel cheatDisplayMessageActivateCheat
/* 0C6F80 7F092450 AFA40020 */ sw $a0, 0x20($sp)
/* 0C6F84 7F092454 0FC26C54 */ jal get_cur_playernum
/* 0C6F88 7F092458 AFAF001C */ sw $t7, 0x1c($sp)
/* 0C6F8C 7F09245C 0FC26919 */ jal get_num_players
/* 0C6F8C 7F09245C 0FC26919 */ jal getPlayerCount
/* 0C6F90 7F092460 AFA20018 */ sw $v0, 0x18($sp)
/* 0C6F94 7F092464 8FA3001C */ lw $v1, 0x1c($sp)
/* 0C6F98 7F092468 8FA40020 */ lw $a0, 0x20($sp)
@@ -2608,7 +2608,7 @@ cheat_button_mp_invis:
/* 0C717C 7F09264C 44816000 */ mtc1 $at, $f12
/* 0C7180 7F092650 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 0C7184 7F092654 44817000 */ mtc1 $at, $f14
/* 0C7188 7F092658 0FC20284 */ jal set_curplayer_fade
/* 0C7188 7F092658 0FC20284 */ jal currentPlayerStartChrFade
/* 0C718C 7F09265C 00000000 */ nop
/* 0C7190 7F092660 10000014 */ b .L7F0926B4
/* 0C7194 7F092664 8FBF0014 */ lw $ra, 0x14($sp)
@@ -2732,7 +2732,7 @@ glabel cheatDisplayMessageActivateCheat
/* 0C6F80 7F092450 AFA40020 */ sw $a0, 0x20($sp)
/* 0C6F84 7F092454 0FC26C54 */ jal get_cur_playernum
/* 0C6F88 7F092458 AFAF001C */ sw $t7, 0x1c($sp)
/* 0C6F8C 7F09245C 0FC26919 */ jal get_num_players
/* 0C6F8C 7F09245C 0FC26919 */ jal getPlayerCount
/* 0C6F90 7F092460 AFA20018 */ sw $v0, 0x18($sp)
/* 0C6F94 7F092464 8FA3001C */ lw $v1, 0x1c($sp)
/* 0C6F98 7F092468 8FA40020 */ lw $a0, 0x20($sp)
@@ -2870,7 +2870,7 @@ cheat_button_mp_invis:
/* 0C717C 7F09264C 44816000 */ mtc1 $at, $f12
/* 0C7180 7F092650 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 0C7184 7F092654 44817000 */ mtc1 $at, $f14
/* 0C7188 7F092658 0FC20284 */ jal set_curplayer_fade
/* 0C7188 7F092658 0FC20284 */ jal currentPlayerStartChrFade
/* 0C718C 7F09265C 00000000 */ nop
/* 0C7190 7F092660 10000014 */ b .L7F0926B4
/* 0C7194 7F092664 8FBF0014 */ lw $ra, 0x14($sp)
@@ -2920,7 +2920,7 @@ void cheatDisableAllCheats(void) {
s32 phi_s0;
// Node 0
temp_s4 = get_num_players();
temp_s4 = getPlayerCount();
sp30 = get_cur_playernum();
if (temp_s4 > 0)
{
@@ -2994,7 +2994,7 @@ glabel cheatDisableAllCheats
/* 0C71FC 7F0926CC AFB30024 */ sw $s3, 0x24($sp)
/* 0C7200 7F0926D0 AFB20020 */ sw $s2, 0x20($sp)
/* 0C7204 7F0926D4 AFB1001C */ sw $s1, 0x1c($sp)
/* 0C7208 7F0926D8 0FC26919 */ jal get_num_players
/* 0C7208 7F0926D8 0FC26919 */ jal getPlayerCount
/* 0C720C 7F0926DC AFB00018 */ sw $s0, 0x18($sp)
/* 0C7210 7F0926E0 0FC26C54 */ jal get_cur_playernum
/* 0C7214 7F0926E4 0040A025 */ move $s4, $v0
+44 -138
View File
@@ -36,8 +36,8 @@ struct animation_something D_8002CC2C = {0xFFFFFFFF, 0, 0, 0.0, 0, 0, 0.0, NULL,
s32 D_8002CC58 = 0;
s32 show_patrols_flag = FALSE;
s32 player1_guardID = 0x1388;
s32 ptr_guard_data = 0;
s32 player1_guardID = 5000;
struct chrdata *ptr_guard_data = 0;
s32 num_guards = 0;
s32 D_8002CC6C[] = {0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
s32 D_8002CCA8 = 0;
@@ -1219,7 +1219,7 @@ glabel sub_GAME_7F01F614
.L7F01F708:
/* 054238 7F01F708 AFA0004C */ sw $zero, 0x4c($sp)
/* 05423C 7F01F70C 27A40078 */ addiu $a0, $sp, 0x78
/* 054240 7F01F710 0FC2CA2C */ jal sub_GAME_7F0B28B0
/* 054240 7F01F710 0FC2CA2C */ jal getCollisionEdge_maybe
/* 054244 7F01F714 27A5006C */ addiu $a1, $sp, 0x6c
/* 054248 7F01F718 50400130 */ beql $v0, $zero, .L7F01FBDC
/* 05424C 7F01F71C 8FA40098 */ lw $a0, 0x98($sp)
@@ -2201,139 +2201,45 @@ glabel sub_GAME_7F01FC10
#endif
#endif
s32 chrGetNumFree(void)
{
s32 count = 0;
s32 i;
#ifdef NONMATCHING
void get_next_available_guardID(void) {
for (i = 0; i < num_guards; i++) {
if (ptr_guard_data[i].model == 0) {
count++;
}
}
return count;
}
#else
GLOBAL_ASM(
.text
glabel get_next_available_guardID
/* 054AF0 7F01FFC0 3C048003 */ lui $a0, %hi(num_guards)
/* 054AF4 7F01FFC4 8C84CC68 */ lw $a0, %lo(num_guards)($a0)
/* 054AF8 7F01FFC8 00001825 */ move $v1, $zero
/* 054AFC 7F01FFCC 00001025 */ move $v0, $zero
/* 054B00 7F01FFD0 1880000F */ blez $a0, .L7F020010
/* 054B04 7F01FFD4 3C058003 */ lui $a1, %hi(ptr_guard_data)
/* 054B08 7F01FFD8 00043100 */ sll $a2, $a0, 4
/* 054B0C 7F01FFDC 00C43023 */ subu $a2, $a2, $a0
/* 054B10 7F01FFE0 000630C0 */ sll $a2, $a2, 3
/* 054B14 7F01FFE4 00C43023 */ subu $a2, $a2, $a0
/* 054B18 7F01FFE8 00063080 */ sll $a2, $a2, 2
/* 054B1C 7F01FFEC 8CA5CC64 */ lw $a1, %lo(ptr_guard_data)($a1)
.L7F01FFF0:
/* 054B20 7F01FFF0 8CAE001C */ lw $t6, 0x1c($a1)
/* 054B24 7F01FFF4 244201DC */ addiu $v0, $v0, 0x1dc
/* 054B28 7F01FFF8 0046082A */ slt $at, $v0, $a2
/* 054B2C 7F01FFFC 15C00002 */ bnez $t6, .L7F020008
/* 054B30 7F020000 00000000 */ nop
/* 054B34 7F020004 24630001 */ addiu $v1, $v1, 1
.L7F020008:
/* 054B38 7F020008 1420FFF9 */ bnez $at, .L7F01FFF0
/* 054B3C 7F02000C 24A501DC */ addiu $a1, $a1, 0x1dc
.L7F020010:
/* 054B40 7F020010 03E00008 */ jr $ra
/* 054B44 7F020014 00601025 */ move $v0, $v1
)
#endif
f32 get_007_health_mod(void);
#ifdef NONMATCHING
void sub_GAME_7F020018(void) {
void chrSetMaxDamage(struct chrdata *chr, f32 maxdamage)
{
chr->maxdamage = (get_007_health_mod() * maxdamage);
}
#else
GLOBAL_ASM(
.text
glabel sub_GAME_7F020018
/* 054B48 7F020018 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 054B4C 7F02001C AFBF0014 */ sw $ra, 0x14($sp)
/* 054B50 7F020020 AFA40018 */ sw $a0, 0x18($sp)
/* 054B54 7F020024 0FC074BA */ jal get_007_health_mod
/* 054B58 7F020028 AFA5001C */ sw $a1, 0x1c($sp)
/* 054B5C 7F02002C C7A4001C */ lwc1 $f4, 0x1c($sp)
/* 054B60 7F020030 8FAE0018 */ lw $t6, 0x18($sp)
/* 054B64 7F020034 46040182 */ mul.s $f6, $f0, $f4
/* 054B68 7F020038 E5C60100 */ swc1 $f6, 0x100($t6)
/* 054B6C 7F02003C 8FBF0014 */ lw $ra, 0x14($sp)
/* 054B70 7F020040 27BD0018 */ addiu $sp, $sp, 0x18
/* 054B74 7F020044 03E00008 */ jr $ra
/* 054B78 7F020048 00000000 */ nop
)
#endif
#ifdef NONMATCHING
void sub_GAME_7F02004C(void) {
f32 chrGetMaxDamage(struct chrdata *chr)
{
return chr->maxdamage;
}
#else
GLOBAL_ASM(
.text
glabel sub_GAME_7F02004C
/* 054B7C 7F02004C 03E00008 */ jr $ra
/* 054B80 7F020050 C4800100 */ lwc1 $f0, 0x100($a0)
)
#endif
#ifdef NONMATCHING
void sub_GAME_7F020054(void) {
void chrAddHealth(struct chrdata *chr, f32 health)
{
chr->damage -= (health * get_007_health_mod());
}
#else
GLOBAL_ASM(
.text
glabel sub_GAME_7F020054
/* 054B84 7F020054 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 054B88 7F020058 AFBF0014 */ sw $ra, 0x14($sp)
/* 054B8C 7F02005C AFA40018 */ sw $a0, 0x18($sp)
/* 054B90 7F020060 0FC074BA */ jal get_007_health_mod
/* 054B94 7F020064 AFA5001C */ sw $a1, 0x1c($sp)
/* 054B98 7F020068 C7A6001C */ lwc1 $f6, 0x1c($sp)
/* 054B9C 7F02006C 8FA20018 */ lw $v0, 0x18($sp)
/* 054BA0 7F020070 46003202 */ mul.s $f8, $f6, $f0
/* 054BA4 7F020074 C44400FC */ lwc1 $f4, 0xfc($v0)
/* 054BA8 7F020078 46082281 */ sub.s $f10, $f4, $f8
/* 054BAC 7F02007C E44A00FC */ swc1 $f10, 0xfc($v0)
/* 054BB0 7F020080 8FBF0014 */ lw $ra, 0x14($sp)
/* 054BB4 7F020084 27BD0018 */ addiu $sp, $sp, 0x18
/* 054BB8 7F020088 03E00008 */ jr $ra
/* 054BBC 7F02008C 00000000 */ nop
)
#endif
f32 chrGetArmor(struct chrdata *chr)
{
if (chr->damage < 0) {
return -chr->damage;
}
#ifdef NONMATCHING
void sub_GAME_7F020090(void) {
return 0;
}
#else
GLOBAL_ASM(
.text
glabel sub_GAME_7F020090
/* 054BC0 7F020090 44806000 */ mtc1 $zero, $f12
/* 054BC4 7F020094 C48200FC */ lwc1 $f2, 0xfc($a0)
/* 054BC8 7F020098 460C103C */ c.lt.s $f2, $f12
/* 054BCC 7F02009C 00000000 */ nop
/* 054BD0 7F0200A0 45020004 */ bc1fl .L7F0200B4
/* 054BD4 7F0200A4 46006006 */ mov.s $f0, $f12
/* 054BD8 7F0200A8 03E00008 */ jr $ra
/* 054BDC 7F0200AC 46001007 */ neg.s $f0, $f2
/* 054BE0 7F0200B0 46006006 */ mov.s $f0, $f12
.L7F0200B4:
/* 054BE4 7F0200B4 03E00008 */ jr $ra
/* 054BE8 7F0200B8 00000000 */ nop
)
#endif
#ifdef NONMATCHING
void init_GUARDdata_with_set_values(void) {
@@ -3338,7 +3244,7 @@ glabel sub_GAME_7F02083C
/* 055720 7F020BF0 460A6300 */ add.s $f12, $f12, $f10
/* 055724 7F020BF4 E7AC008C */ swc1 $f12, 0x8c($sp)
.L7F020BF8:
/* 055728 7F020BF8 0FC1E111 */ jal sub_GAME_7F078444
/* 055728 7F020BF8 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 05572C 7F020BFC E7AE0090 */ swc1 $f14, 0x90($sp)
/* 055730 7F020C00 00402025 */ move $a0, $v0
/* 055734 7F020C04 0FC16026 */ jal matrix_4x4_multiply_homogeneous_in_place
@@ -3439,7 +3345,7 @@ glabel sub_GAME_7F02083C
/* 055894 7F020D64 C7A80078 */ lwc1 $f8, 0x78($sp)
/* 055898 7F020D68 E5080034 */ swc1 $f8, 0x34($t0)
/* 05589C 7F020D6C C7A4007C */ lwc1 $f4, 0x7c($sp)
/* 0558A0 7F020D70 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 0558A0 7F020D70 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 0558A4 7F020D74 E5040038 */ swc1 $f4, 0x38($t0)
/* 0558A8 7F020D78 00402025 */ move $a0, $v0
/* 0558AC 7F020D7C 0FC16026 */ jal matrix_4x4_multiply_homogeneous_in_place
@@ -3732,7 +3638,7 @@ glabel sub_GAME_7F02083C
/* 0559F8 7F020E88 460A6300 */ add.s $f12, $f12, $f10
/* 0559FC 7F020E8C E7AC008C */ swc1 $f12, 0x8c($sp)
.L7F020E90:
/* 055A00 7F020E90 0FC1E28D */ jal sub_GAME_7F078444
/* 055A00 7F020E90 0FC1E28D */ jal currentPlayerGetMatrix10D4
/* 055A04 7F020E94 E7AE0090 */ swc1 $f14, 0x90($sp)
/* 055A08 7F020E98 00402025 */ move $a0, $v0
/* 055A0C 7F020E9C 0FC1616E */ jal matrix_4x4_multiply_homogeneous_in_place
@@ -3833,7 +3739,7 @@ glabel sub_GAME_7F02083C
/* 055B6C 7F020FFC C7A80078 */ lwc1 $f8, 0x78($sp)
/* 055B70 7F021000 E5280034 */ swc1 $f8, 0x34($t1)
/* 055B74 7F021004 C7A4007C */ lwc1 $f4, 0x7c($sp)
/* 055B78 7F021008 0FC1E26D */ jal get_BONDdata_field_10CC
/* 055B78 7F021008 0FC1E26D */ jal currentPlayerGetMatrix10CC
/* 055B7C 7F02100C E5240038 */ swc1 $f4, 0x38($t1)
/* 055B80 7F021010 00402025 */ move $a0, $v0
/* 055B84 7F021014 0FC1616E */ jal matrix_4x4_multiply_homogeneous_in_place
@@ -4113,9 +4019,9 @@ glabel sub_GAME_7F020EF0
/* 055C18 7F0210E8 0FC26C57 */ jal sub_GAME_7F09B15C
/* 055C1C 7F0210EC 01802025 */ move $a0, $t4
/* 055C20 7F0210F0 0002C880 */ sll $t9, $v0, 2
/* 055C24 7F0210F4 3C188008 */ lui $t8, %hi(ptr_BONDdata_p1)
/* 055C24 7F0210F4 3C188008 */ lui $t8, %hi(players)
/* 055C28 7F0210F8 0319C021 */ addu $t8, $t8, $t9
/* 055C2C 7F0210FC 8F189EE0 */ lw $t8, %lo(ptr_BONDdata_p1)($t8)
/* 055C2C 7F0210FC 8F189EE0 */ lw $t8, %lo(players)($t8)
/* 055C30 7F021100 24010001 */ li $at, 1
/* 055C34 7F021104 8F080000 */ lw $t0, ($t8)
/* 055C38 7F021108 51010005 */ beql $t0, $at, .L7F021120
@@ -4369,7 +4275,7 @@ glabel sub_GAME_7F020EF0
/* 055FA8 7F021478 3C018003 */ lui $at, %hi(D_80036090)
/* 055FAC 7F02147C AC2A6090 */ sw $t2, %lo(D_80036090)($at)
/* 055FB0 7F021480 3C018007 */ lui $at, %hi(dword_CODE_bss_80069B60)
/* 055FB4 7F021484 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 055FB4 7F021484 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 055FB8 7F021488 AC309B60 */ sw $s0, %lo(dword_CODE_bss_80069B60)($at)
/* 055FBC 7F02148C 8FAB0110 */ lw $t3, 0x110($sp)
/* 055FC0 7F021490 AFA20118 */ sw $v0, 0x118($sp)
@@ -4965,9 +4871,9 @@ glabel sub_GAME_7F020EF0
/* 055EF0 7F021380 0FC26F3F */ jal sub_GAME_7F09B15C
/* 055EF4 7F021384 01802025 */ move $a0, $t4
/* 055EF8 7F021388 0002C880 */ sll $t9, $v0, 2
/* 055EFC 7F02138C 3C188008 */ lui $t8, %hi(ptr_BONDdata_p1)
/* 055EFC 7F02138C 3C188008 */ lui $t8, %hi(players)
/* 055F00 7F021390 0319C021 */ addu $t8, $t8, $t9
/* 055F04 7F021394 8F189F50 */ lw $t8, %lo(ptr_BONDdata_p1)($t8)
/* 055F04 7F021394 8F189F50 */ lw $t8, %lo(players)($t8)
/* 055F08 7F021398 24010001 */ li $at, 1
/* 055F0C 7F02139C 8F080000 */ lw $t0, ($t8)
/* 055F10 7F0213A0 51010005 */ beql $t0, $at, .Ljp7F0213B8
@@ -5241,7 +5147,7 @@ glabel sub_GAME_7F020EF0
/* 0562D0 7F021760 3C018003 */ lui $at, %hi(D_80036090) # $at, 0x8003
/* 0562D4 7F021764 AC2D60D0 */ sw $t5, %lo(D_80036090)($at)
/* 0562D8 7F021768 3C018007 */ lui $at, %hi(dword_CODE_bss_80069B60) # $at, 0x8007
/* 0562DC 7F02176C 0FC1E26D */ jal get_BONDdata_field_10CC
/* 0562DC 7F02176C 0FC1E26D */ jal currentPlayerGetMatrix10CC
/* 0562E0 7F021770 AC309BA0 */ sw $s0, %lo(dword_CODE_bss_80069B60)($at)
/* 0562E4 7F021774 8FAC0110 */ lw $t4, 0x110($sp)
/* 0562E8 7F021778 AFA20118 */ sw $v0, 0x118($sp)
@@ -6195,7 +6101,7 @@ glabel sub_GAME_7F022078
/* 056C98 7F022168 E7B00040 */ swc1 $f16, 0x40($sp)
/* 056C9C 7F02216C C4D20008 */ lwc1 $f18, 8($a2)
/* 056CA0 7F022170 46029102 */ mul.s $f4, $f18, $f2
/* 056CA4 7F022174 0FC1E111 */ jal sub_GAME_7F078444
/* 056CA4 7F022174 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 056CA8 7F022178 E7A40044 */ swc1 $f4, 0x44($sp)
/* 056CAC 7F02217C 00402025 */ move $a0, $v0
/* 056CB0 7F022180 0FC1611D */ jal matrix_4x4_transform_vector_in_place
@@ -6691,7 +6597,7 @@ glabel sub_GAME_7F022648
/* 057360 7F022830 C6520010 */ lwc1 $f18, 0x10($s2)
/* 057364 7F022834 E7B20078 */ swc1 $f18, 0x78($sp)
/* 057368 7F022838 C6440014 */ lwc1 $f4, 0x14($s2)
/* 05736C 7F02283C 0FC1E111 */ jal sub_GAME_7F078444
/* 05736C 7F02283C 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 057370 7F022840 E7A4007C */ swc1 $f4, 0x7c($sp)
/* 057374 7F022844 00402025 */ move $a0, $v0
/* 057378 7F022848 0FC160F6 */ jal matrix_4x4_rotate_vector_in_place
@@ -6846,7 +6752,7 @@ glabel sub_GAME_7F022980
/* 057590 7F022A60 46023202 */ mul.s $f8, $f6, $f2
/* 057594 7F022A64 E7A400A8 */ swc1 $f4, 0xa8($sp)
/* 057598 7F022A68 E7B000AC */ swc1 $f16, 0xac($sp)
/* 05759C 7F022A6C 0FC1E111 */ jal sub_GAME_7F078444
/* 05759C 7F022A6C 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 0575A0 7F022A70 E7A800B0 */ swc1 $f8, 0xb0($sp)
/* 0575A4 7F022A74 27B000A8 */ addiu $s0, $sp, 0xa8
/* 0575A8 7F022A78 02002825 */ move $a1, $s0
@@ -7072,7 +6978,7 @@ glabel sub_GAME_7F022980
/* 0578E8 7F022DB8 02002025 */ move $a0, $s0
/* 0578EC 7F022DBC 46082402 */ mul.s $f16, $f4, $f8
/* 0578F0 7F022DC0 46105181 */ sub.s $f6, $f10, $f16
/* 0578F4 7F022DC4 0FC16799 */ jal sub_GAME_7F059E64
/* 0578F4 7F022DC4 0FC16799 */ jal matrix_4x4_7F059E64
/* 0578F8 7F022DC8 E7A60078 */ swc1 $f6, 0x78($sp)
/* 0578FC 7F022DCC 27B00070 */ addiu $s0, $sp, 0x70
/* 057900 7F022DD0 02002825 */ move $a1, $s0
@@ -7252,7 +7158,7 @@ glabel sub_GAME_7F022EEC
/* 057A7C 7F022F4C 44812000 */ mtc1 $at, $f4
/* 057A80 7F022F50 02302021 */ addu $a0, $s1, $s0
/* 057A84 7F022F54 4604B502 */ mul.s $f20, $f22, $f4
/* 057A88 7F022F58 0FC0CB79 */ jal sub_GAME_7F032DE4
/* 057A88 7F022F58 0FC0CB79 */ jal distToBond3D
/* 057A8C 7F022F5C 00000000 */ nop
/* 057A90 7F022F60 8E700000 */ lw $s0, ($s3)
/* 057A94 7F022F64 0211C821 */ addu $t9, $s0, $s1
+7 -5
View File
@@ -2,10 +2,12 @@
#define _CHR_H_
#include "ultra64.h"
#include "bondgame.h"
#include "chrai.h"
#include "bondtypes.h" // chrdata
struct animation_something
{
s32 anonymous_0;
struct animation_something
{
s32 anonymous_0;
s32 field_4;
s32 field_8;
f32 field_C;
@@ -16,7 +18,7 @@ struct animation_something
s32 field_20;
struct struck_animation_table *field_24;
s32 field_28;
};
};
struct struck_animation_table
{
@@ -173,7 +175,7 @@ extern s32 D_8002C910;
extern s32 D_8002CC58;
extern s32 show_patrols_flag;
extern s32 player1_guardID;
extern s32 ptr_guard_data;
extern struct chrdata *ptr_guard_data;
extern s32 num_guards;
extern s32 D_8002CC6C[];
extern s32 D_8002CCA8;
+84 -124
View File
@@ -2,6 +2,8 @@
#include "bondgame.h"
#include "game/chr.h"
#include "game/bondwalk.h"
#include "game/lvl.h"
#include "bondconstants.h"
#ifdef NONMATCHING
void load_body_head_if_not_loaded(void) {
@@ -4032,7 +4034,7 @@ glabel sub_GAME_7F02624C
/* 05AD88 7F026258 AFA5003C */ sw $a1, 0x3c($sp)
/* 05AD8C 7F02625C AFA60040 */ sw $a2, 0x40($sp)
/* 05AD90 7F026260 27A50020 */ addiu $a1, $sp, 0x20
/* 05AD94 7F026264 0FC2CA2C */ jal sub_GAME_7F0B28B0
/* 05AD94 7F026264 0FC2CA2C */ jal getCollisionEdge_maybe
/* 05AD98 7F026268 27A4002C */ addiu $a0, $sp, 0x2c
/* 05AD9C 7F02626C 8FAE0040 */ lw $t6, 0x40($sp)
/* 05ADA0 7F026270 27A4002C */ addiu $a0, $sp, 0x2c
@@ -4064,7 +4066,7 @@ glabel sub_GAME_7F026298
/* 05ADD4 7F0262A4 AFA5003C */ sw $a1, 0x3c($sp)
/* 05ADD8 7F0262A8 27A50020 */ addiu $a1, $sp, 0x20
/* 05ADDC 7F0262AC 27A4002C */ addiu $a0, $sp, 0x2c
/* 05ADE0 7F0262B0 0FC2CA2C */ jal sub_GAME_7F0B28B0
/* 05ADE0 7F0262B0 0FC2CA2C */ jal getCollisionEdge_maybe
/* 05ADE4 7F0262B4 AFA60040 */ sw $a2, 0x40($sp)
/* 05ADE8 7F0262B8 8FA30038 */ lw $v1, 0x38($sp)
/* 05ADEC 7F0262BC C7A40020 */ lwc1 $f4, 0x20($sp)
@@ -4291,7 +4293,7 @@ glabel triggered_on_shot_hit
/* 05B078 7F026548 57010009 */ bnel $t8, $at, .L7F026570
/* 05B07C 7F02654C 82020007 */ lb $v0, 7($s0)
/* 05B080 7F026550 AFA700AC */ sw $a3, 0xac($sp)
/* 05B084 7F026554 0FC26919 */ jal get_num_players
/* 05B084 7F026554 0FC26919 */ jal getPlayerCount
/* 05B088 7F026558 E7AC00A8 */ swc1 $f12, 0xa8($sp)
/* 05B08C 7F02655C 28410002 */ slti $at, $v0, 2
/* 05B090 7F026560 8FA700AC */ lw $a3, 0xac($sp)
@@ -5079,9 +5081,9 @@ glabel play_sound_for_shot_actor
/* 05BBB8 7F027088 0FC26C57 */ jal sub_GAME_7F09B15C
/* 05BBBC 7F02708C AFA00060 */ sw $zero, 0x60($sp)
/* 05BBC0 7F027090 0002C080 */ sll $t8, $v0, 2
/* 05BBC4 7F027094 3C198008 */ lui $t9, %hi(ptr_BONDdata_p1)
/* 05BBC4 7F027094 3C198008 */ lui $t9, %hi(players)
/* 05BBC8 7F027098 0338C821 */ addu $t9, $t9, $t8
/* 05BBCC 7F02709C 8F399EE0 */ lw $t9, %lo(ptr_BONDdata_p1)($t9)
/* 05BBCC 7F02709C 8F399EE0 */ lw $t9, %lo(players)($t9)
/* 05BBD0 7F0270A0 8FA30060 */ lw $v1, 0x60($sp)
/* 05BBD4 7F0270A4 8F2800D8 */ lw $t0, 0xd8($t9)
/* 05BBD8 7F0270A8 55000071 */ bnezl $t0, .L7F027270
@@ -5094,7 +5096,7 @@ glabel play_sound_for_shot_actor
/* 05BBF0 7F0270C0 914B0000 */ lbu $t3, ($t2)
/* 05BBF4 7F0270C4 5561001D */ bnel $t3, $at, .L7F02713C
/* 05BBF8 7F0270C8 8328000F */ lb $t0, 0xf($t9)
/* 05BBFC 7F0270CC 0FC26919 */ jal get_num_players
/* 05BBFC 7F0270CC 0FC26919 */ jal getPlayerCount
/* 05BC00 7F0270D0 AFA30060 */ sw $v1, 0x60($sp)
/* 05BC04 7F0270D4 24010001 */ li $at, 1
/* 05BC08 7F0270D8 1441000D */ bne $v0, $at, .L7F027110
@@ -5359,7 +5361,7 @@ glabel handles_shot_actors
/* 05BF70 7F027440 46000086 */ mov.s $f2, $f0
/* 05BF74 7F027444 51A0000B */ beql $t5, $zero, .L7F027474
/* 05BF78 7F027448 8FA20070 */ lw $v0, 0x70($sp)
/* 05BF7C 7F02744C 0FC26919 */ jal get_num_players
/* 05BF7C 7F02744C 0FC26919 */ jal getPlayerCount
/* 05BF80 7F027450 E7A2003C */ swc1 $f2, 0x3c($sp)
/* 05BF84 7F027454 24010001 */ li $at, 1
/* 05BF88 7F027458 14410005 */ bne $v0, $at, .L7F027470
@@ -7808,20 +7810,11 @@ glabel set_actor_on_path
#ifdef NONMATCHING
void update_GUARDdata_timer_to_current(void) {
void setSeenBondTimeToNow(struct chrdata *guardData)
{
guardData->timeshooter = global_timer;
return;
}
#else
GLOBAL_ASM(
.text
glabel update_GUARDdata_timer_to_current
/* 05DDC8 7F029298 3C0E8005 */ lui $t6, %hi(global_timer)
/* 05DDCC 7F02929C 8DCE837C */ lw $t6, %lo(global_timer)($t6)
/* 05DDD0 7F0292A0 03E00008 */ jr $ra
/* 05DDD4 7F0292A4 AC8E00E8 */ sw $t6, 0xe8($a0)
)
#endif
@@ -7901,7 +7894,7 @@ glabel sub_GAME_7F0292A8
/* 05DED4 7F0293A4 8FAF0040 */ lw $t7, 0x40($sp)
/* 05DED8 7F0293A8 15CF0005 */ bne $t6, $t7, .L7F0293C0
/* 05DEDC 7F0293AC 00000000 */ nop
/* 05DEE0 7F0293B0 0FC0A4A6 */ jal update_GUARDdata_timer_to_current
/* 05DEE0 7F0293B0 0FC0A4A6 */ jal setSeenBondTimeToNow
/* 05DEE4 7F0293B4 8FA40050 */ lw $a0, 0x50($sp)
/* 05DEE8 7F0293B8 24180001 */ li $t8, 1
/* 05DEEC 7F0293BC AFB8004C */ sw $t8, 0x4c($sp)
@@ -8039,7 +8032,7 @@ glabel sub_GAME_7F0294BC
/* 05E0B0 7F029580 8D2A0014 */ lw $t2, 0x14($t1)
/* 05E0B4 7F029584 550A0006 */ bnel $t0, $t2, .L7F0295A0
/* 05E0B8 7F029588 02002025 */ move $a0, $s0
/* 05E0BC 7F02958C 0FC0A4A6 */ jal update_GUARDdata_timer_to_current
/* 05E0BC 7F02958C 0FC0A4A6 */ jal setSeenBondTimeToNow
/* 05E0C0 7F029590 02002025 */ move $a0, $s0
/* 05E0C4 7F029594 240B0001 */ li $t3, 1
/* 05E0C8 7F029598 AFAB004C */ sw $t3, 0x4c($sp)
@@ -9110,7 +9103,7 @@ glabel sub_GAME_7F02A1E8
s32 true_if_actor_dying_fading_limping_shot(PCHRdata chr) {
s32 true_if_actor_dying_fading_limping_shot(struct chrdata *chr) {
s8 currentaction = chr->actiontype;
if ((currentaction == ACT_DIE) || (currentaction == ACT_DEAD) || (currentaction == ACT_PREARGH) || (currentaction == ACT_ARGH) && !(chr->chrflags & CHRFLAG_00000200))
@@ -9120,7 +9113,7 @@ s32 true_if_actor_dying_fading_limping_shot(PCHRdata chr) {
s32 true_if_actor_dying_fading(PCHRdata chr) {
s32 true_if_actor_dying_fading(struct chrdata *chr) {
s8 currentaction = chr->actiontype;
return ((currentaction == ACT_DIE) || (currentaction == ACT_DEAD));
@@ -9922,7 +9915,7 @@ glabel actor_moves_to_preset_at_speed
/* 05F71C 7F02ABEC 29C1000A */ slti $at, $t6, 0xa
/* 05F720 7F02ABF0 50200053 */ beql $at, $zero, .L7F02AD40
/* 05F724 7F02ABF4 00001025 */ move $v0, $zero
/* 05F728 7F02ABF8 0FC0CBE5 */ jal sub_GAME_7F032F94
/* 05F728 7F02ABF8 0FC0CBE5 */ jal convertPadIf9000
/* 05F72C 7F02ABFC 02002825 */ move $a1, $s0
/* 05F730 7F02AC00 28412710 */ slti $at, $v0, 0x2710
/* 05F734 7F02AC04 1020000A */ beqz $at, .L7F02AC30
@@ -10584,7 +10577,7 @@ glabel sub_GAME_7F02AD98
void actor_reset_sleep(PCHRdata actor) {
void actor_reset_sleep(struct chrdata *actor) {
actor->sleep = 0;
}
@@ -10645,7 +10638,7 @@ glabel sub_GAME_7F02B4E8
/* 0600C4 7F02B594 314B0001 */ andi $t3, $t2, 1
/* 0600C8 7F02B598 55600012 */ bnezl $t3, .L7F02B5E4
/* 0600CC 7F02B59C 8E0C0014 */ lw $t4, 0x14($s0)
/* 0600D0 7F02B5A0 0FC0CB79 */ jal sub_GAME_7F032DE4
/* 0600D0 7F02B5A0 0FC0CB79 */ jal distToBond3D
/* 0600D4 7F02B5A4 02002025 */ move $a0, $s0
/* 0600D8 7F02B5A8 3C014448 */ li $at, 0x44480000 # 800.000000
/* 0600DC 7F02B5AC 44814000 */ mtc1 $at, $f8
@@ -12658,7 +12651,7 @@ glabel sub_GAME_7F02C4C0
/* 061788 7F02CC58 8F290004 */ lw $t1, 4($t9)
/* 06178C 7F02CC5C 0FC1639E */ jal sub_GAME_7F058E78
/* 061790 7F02CC60 AFA900B8 */ sw $t1, 0xb8($sp)
/* 061794 7F02CC64 0FC1E115 */ jal sub_GAME_7F078454
/* 061794 7F02CC64 0FC1E115 */ jal currentPlayerGetMatrix10EC
/* 061798 7F02CC68 00000000 */ nop
/* 06179C 7F02CC6C 00402025 */ move $a0, $v0
/* 0617A0 7F02CC70 0FC16026 */ jal matrix_4x4_multiply_homogeneous_in_place
@@ -12692,7 +12685,7 @@ glabel sub_GAME_7F02C4C0
/* 06180C 7F02CCDC 00402025 */ move $a0, $v0
/* 061810 7F02CCE0 0FC1639E */ jal sub_GAME_7F058E78
/* 061814 7F02CCE4 27A50068 */ addiu $a1, $sp, 0x68
/* 061818 7F02CCE8 0FC1E115 */ jal sub_GAME_7F078454
/* 061818 7F02CCE8 0FC1E115 */ jal currentPlayerGetMatrix10EC
/* 06181C 7F02CCEC 00000000 */ nop
/* 061820 7F02CCF0 00402025 */ move $a0, $v0
/* 061824 7F02CCF4 0FC16026 */ jal matrix_4x4_multiply_homogeneous_in_place
@@ -13760,7 +13753,7 @@ glabel sub_GAME_7F02D630
/* 0621D0 7F02D6A0 C4660004 */ lwc1 $f6, 4($v1)
/* 0621D4 7F02D6A4 E6060004 */ swc1 $f6, 4($s0)
/* 0621D8 7F02D6A8 C4680008 */ lwc1 $f8, 8($v1)
/* 0621DC 7F02D6AC 0FC1E111 */ jal sub_GAME_7F078444
/* 0621DC 7F02D6AC 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 0621E0 7F02D6B0 E6080008 */ swc1 $f8, 8($s0)
/* 0621E4 7F02D6B4 00402025 */ move $a0, $v0
/* 0621E8 7F02D6B8 8FA500B4 */ lw $a1, 0xb4($sp)
@@ -13777,7 +13770,7 @@ glabel sub_GAME_7F02D630
/* 062210 7F02D6E0 8FBF001C */ lw $ra, 0x1c($sp)
/* 062214 7F02D6E4 0FC1B198 */ jal sub_GAME_7F06C660
/* 062218 7F02D6E8 00003025 */ move $a2, $zero
/* 06221C 7F02D6EC 0FC1E111 */ jal sub_GAME_7F078444
/* 06221C 7F02D6EC 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 062220 7F02D6F0 AFA2006C */ sw $v0, 0x6c($sp)
/* 062224 7F02D6F4 00402025 */ move $a0, $v0
/* 062228 7F02D6F8 8FA5006C */ lw $a1, 0x6c($sp)
@@ -14443,7 +14436,7 @@ glabel sub_GAME_7F02D734
/* 062B44 7F02E014 8FA80230 */ lw $t0, 0x230($sp)
.L7F02E018:
/* 062B48 7F02E018 8FA50270 */ lw $a1, 0x270($sp)
/* 062B4C 7F02E01C 3C038008 */ lui $v1, %hi(dword_CODE_bss_8007BA04)
/* 062B4C 7F02E01C 3C038008 */ lui $v1, %hi(stanSavedColl_posData)
/* 062B50 7F02E020 1100000F */ beqz $t0, .L7F02E060
/* 062B54 7F02E024 00000000 */ nop
/* 062B58 7F02E028 C4A60008 */ lwc1 $f6, 8($a1)
@@ -14461,7 +14454,7 @@ glabel sub_GAME_7F02D734
/* 062B88 7F02E058 10000012 */ b .L7F02E0A4
/* 062B8C 7F02E05C 8FAC022C */ lw $t4, 0x22c($sp)
.L7F02E060:
/* 062B90 7F02E060 8C63BA04 */ lw $v1, %lo(dword_CODE_bss_8007BA04)($v1)
/* 062B90 7F02E060 8C63BA04 */ lw $v1, %lo(stanSavedColl_posData)($v1)
/* 062B94 7F02E064 C7A8020C */ lwc1 $f8, 0x20c($sp)
/* 062B98 7F02E068 10600006 */ beqz $v1, .L7F02E084
/* 062B9C 7F02E06C 00000000 */ nop
@@ -14491,8 +14484,8 @@ glabel sub_GAME_7F02D734
/* 062BF0 7F02E0C0 0FC28F87 */ jal sub_GAME_7F0A3E1C
/* 062BF4 7F02E0C4 91A70003 */ lbu $a3, 3($t5)
.L7F02E0C8:
/* 062BF8 7F02E0C8 3C058008 */ lui $a1, %hi(dword_CODE_bss_8007BA04)
/* 062BFC 7F02E0CC 8CA5BA04 */ lw $a1, %lo(dword_CODE_bss_8007BA04)($a1)
/* 062BF8 7F02E0C8 3C058008 */ lui $a1, %hi(stanSavedColl_posData)
/* 062BFC 7F02E0CC 8CA5BA04 */ lw $a1, %lo(stanSavedColl_posData)($a1)
/* 062C00 7F02E0D0 8FAE0274 */ lw $t6, 0x274($sp)
/* 062C04 7F02E0D4 2406FFFF */ li $a2, -1
/* 062C08 7F02E0D8 10A0002D */ beqz $a1, .L7F02E190
@@ -14500,8 +14493,8 @@ glabel sub_GAME_7F02D734
/* 062C10 7F02E0E0 00E02025 */ move $a0, $a3
/* 062C14 7F02E0E4 0FC19107 */ jal recall_joy2_hits_edit_detail_edit_flag
/* 062C18 7F02E0E8 2406FFFF */ li $a2, -1
/* 062C1C 7F02E0EC 3C038008 */ lui $v1, %hi(dword_CODE_bss_8007BA04)
/* 062C20 7F02E0F0 8C63BA04 */ lw $v1, %lo(dword_CODE_bss_8007BA04)($v1)
/* 062C1C 7F02E0EC 3C038008 */ lui $v1, %hi(stanSavedColl_posData)
/* 062C20 7F02E0F0 8C63BA04 */ lw $v1, %lo(stanSavedColl_posData)($v1)
/* 062C24 7F02E0F4 24010003 */ li $at, 3
/* 062C28 7F02E0F8 8FAF0288 */ lw $t7, 0x288($sp)
/* 062C2C 7F02E0FC 90620000 */ lbu $v0, ($v1)
@@ -14532,8 +14525,8 @@ glabel sub_GAME_7F02D734
/* 062C88 7F02E158 81240080 */ lb $a0, 0x80($t1)
/* 062C8C 7F02E15C 0FC26C54 */ jal get_cur_playernum
/* 062C90 7F02E160 E7A0004C */ swc1 $f0, 0x4c($sp)
/* 062C94 7F02E164 3C0B8008 */ lui $t3, %hi(dword_CODE_bss_8007BA04)
/* 062C98 7F02E168 8D6BBA04 */ lw $t3, %lo(dword_CODE_bss_8007BA04)($t3)
/* 062C94 7F02E164 3C0B8008 */ lui $t3, %hi(stanSavedColl_posData)
/* 062C98 7F02E168 8D6BBA04 */ lw $t3, %lo(stanSavedColl_posData)($t3)
/* 062C9C 7F02E16C 8FAA0274 */ lw $t2, 0x274($sp)
/* 062CA0 7F02E170 8FA5004C */ lw $a1, 0x4c($sp)
/* 062CA4 7F02E174 8D640004 */ lw $a0, 4($t3)
@@ -17853,7 +17846,7 @@ glabel sub_GAME_7F03081C
/* 065588 7F030A58 24080001 */ li $t0, 1
/* 06558C 7F030A5C AFA80088 */ sw $t0, 0x88($sp)
/* 065590 7F030A60 27A40078 */ addiu $a0, $sp, 0x78
/* 065594 7F030A64 0FC2CA2C */ jal sub_GAME_7F0B28B0
/* 065594 7F030A64 0FC2CA2C */ jal getCollisionEdge_maybe
/* 065598 7F030A68 27A5006C */ addiu $a1, $sp, 0x6c
/* 06559C 7F030A6C 27A40078 */ addiu $a0, $sp, 0x78
/* 0655A0 7F030A70 27A5006C */ addiu $a1, $sp, 0x6c
@@ -17928,7 +17921,7 @@ glabel sub_GAME_7F03081C
/* 0656AC 7F030B7C 240C0001 */ li $t4, 1
/* 0656B0 7F030B80 AFAC0084 */ sw $t4, 0x84($sp)
/* 0656B4 7F030B84 27A40060 */ addiu $a0, $sp, 0x60
/* 0656B8 7F030B88 0FC2CA2C */ jal sub_GAME_7F0B28B0
/* 0656B8 7F030B88 0FC2CA2C */ jal getCollisionEdge_maybe
/* 0656BC 7F030B8C 27A50054 */ addiu $a1, $sp, 0x54
/* 0656C0 7F030B90 27A40060 */ addiu $a0, $sp, 0x60
/* 0656C4 7F030B94 27A50054 */ addiu $a1, $sp, 0x54
@@ -18040,7 +18033,7 @@ glabel sub_GAME_7F03081C
/* 06585C 7F030D2C AFAB0050 */ sw $t3, 0x50($sp)
.L7F030D30:
/* 065860 7F030D30 8FA400C0 */ lw $a0, 0xc0($sp)
/* 065864 7F030D34 0FC2CA2C */ jal sub_GAME_7F0B28B0
/* 065864 7F030D34 0FC2CA2C */ jal getCollisionEdge_maybe
/* 065868 7F030D38 8FA500C4 */ lw $a1, 0xc4($sp)
/* 06586C 7F030D3C 8FA400C0 */ lw $a0, 0xc0($sp)
/* 065870 7F030D40 8FA500C4 */ lw $a1, 0xc4($sp)
@@ -18228,14 +18221,14 @@ glabel sub_GAME_7F030D70
/* 065ADC 7F030FAC 24080001 */ li $t0, 1
/* 065AE0 7F030FB0 AFA80090 */ sw $t0, 0x90($sp)
/* 065AE4 7F030FB4 27A40080 */ addiu $a0, $sp, 0x80
/* 065AE8 7F030FB8 0FC2CA2C */ jal sub_GAME_7F0B28B0
/* 065AE8 7F030FB8 0FC2CA2C */ jal getCollisionEdge_maybe
/* 065AEC 7F030FBC 27A50074 */ addiu $a1, $sp, 0x74
/* 065AF0 7F030FC0 27A40080 */ addiu $a0, $sp, 0x80
/* 065AF4 7F030FC4 27A50074 */ addiu $a1, $sp, 0x74
/* 065AF8 7F030FC8 0FC0C1D3 */ jal sub_GAME_7F03074C
/* 065AFC 7F030FCC 27A600A8 */ addiu $a2, $sp, 0xa8
/* 065B00 7F030FD0 3C018008 */ lui $at, %hi(flt_CODE_bss_8007BA00)
/* 065B04 7F030FD4 C42ABA00 */ lwc1 $f10, %lo(flt_CODE_bss_8007BA00)($at)
/* 065B00 7F030FD0 3C018008 */ lui $at, %hi(stanSavedColl_someMin)
/* 065B04 7F030FD4 C42ABA00 */ lwc1 $f10, %lo(stanSavedColl_someMin)($at)
/* 065B08 7F030FD8 E7AA0054 */ swc1 $f10, 0x54($sp)
.L7F030FDC:
/* 065B0C 7F030FDC 8FA900C0 */ lw $t1, 0xc0($sp)
@@ -18306,14 +18299,14 @@ glabel sub_GAME_7F030D70
/* 065C0C 7F0310DC 240C0001 */ li $t4, 1
/* 065C10 7F0310E0 AFAC008C */ sw $t4, 0x8c($sp)
/* 065C14 7F0310E4 27A40068 */ addiu $a0, $sp, 0x68
/* 065C18 7F0310E8 0FC2CA2C */ jal sub_GAME_7F0B28B0
/* 065C18 7F0310E8 0FC2CA2C */ jal getCollisionEdge_maybe
/* 065C1C 7F0310EC 27A5005C */ addiu $a1, $sp, 0x5c
/* 065C20 7F0310F0 27A40068 */ addiu $a0, $sp, 0x68
/* 065C24 7F0310F4 27A5005C */ addiu $a1, $sp, 0x5c
/* 065C28 7F0310F8 0FC0C1D3 */ jal sub_GAME_7F03074C
/* 065C2C 7F0310FC 27A600A8 */ addiu $a2, $sp, 0xa8
/* 065C30 7F031100 3C018008 */ lui $at, %hi(flt_CODE_bss_8007BA00)
/* 065C34 7F031104 C428BA00 */ lwc1 $f8, %lo(flt_CODE_bss_8007BA00)($at)
/* 065C30 7F031100 3C018008 */ lui $at, %hi(stanSavedColl_someMin)
/* 065C34 7F031104 C428BA00 */ lwc1 $f8, %lo(stanSavedColl_someMin)($at)
/* 065C38 7F031108 E7A80050 */ swc1 $f8, 0x50($sp)
.L7F03110C:
/* 065C3C 7F03110C 8FAD0090 */ lw $t5, 0x90($sp)
@@ -18434,7 +18427,7 @@ glabel sub_GAME_7F030D70
/* 065DF8 7F0312C8 AFAB0058 */ sw $t3, 0x58($sp)
.L7F0312CC:
/* 065DFC 7F0312CC 8FA400C8 */ lw $a0, 0xc8($sp)
/* 065E00 7F0312D0 0FC2CA2C */ jal sub_GAME_7F0B28B0
/* 065E00 7F0312D0 0FC2CA2C */ jal getCollisionEdge_maybe
/* 065E04 7F0312D4 8FA500CC */ lw $a1, 0xcc($sp)
/* 065E08 7F0312D8 8FA400C8 */ lw $a0, 0xc8($sp)
/* 065E0C 7F0312DC 8FA500CC */ lw $a1, 0xcc($sp)
@@ -20449,7 +20442,7 @@ glabel sub_GAME_7F032C78
/* 067800 7F032CD0 30A90008 */ andi $t1, $a1, 8
/* 067804 7F032CD4 1120001C */ beqz $t1, .L7F032D48
/* 067808 7F032CD8 00000000 */ nop
/* 06780C 7F032CDC 0FC0CBE5 */ jal sub_GAME_7F032F94
/* 06780C 7F032CDC 0FC0CBE5 */ jal convertPadIf9000
/* 067810 7F032CE0 00C02825 */ move $a1, $a2
/* 067814 7F032CE4 28412710 */ slti $at, $v0, 0x2710
/* 067818 7F032CE8 1020000A */ beqz $at, .L7F032D14
@@ -20540,43 +20533,21 @@ glabel get_angle_between_actor_cur_player
#endif
#ifdef NONMATCHING
void sub_GAME_7F032DE4(void) {
float distToBond3D(struct chrdata *guardData)
{
struct prop *guardPosData;
struct prop *playerPosData;
float xDiff;
float yDiff;
float zDiff;
guardPosData = guardData->posdata;
playerPosData = get_curplayer_positiondata();
xDiff = (playerPosData->position).x - (guardPosData->position).x;
yDiff = (playerPosData->position).y - (guardPosData->position).y;
zDiff = (playerPosData->position).z - (guardPosData->position).z;
return sqrtf(xDiff * xDiff + yDiff * yDiff + zDiff * zDiff);
}
#else
GLOBAL_ASM(
.text
glabel sub_GAME_7F032DE4
/* 067914 7F032DE4 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 067918 7F032DE8 AFBF0014 */ sw $ra, 0x14($sp)
/* 06791C 7F032DEC 8C830018 */ lw $v1, 0x18($a0)
/* 067920 7F032DF0 0FC225E6 */ jal get_curplayer_positiondata
/* 067924 7F032DF4 AFA3001C */ sw $v1, 0x1c($sp)
/* 067928 7F032DF8 8FA3001C */ lw $v1, 0x1c($sp)
/* 06792C 7F032DFC C4440008 */ lwc1 $f4, 8($v0)
/* 067930 7F032E00 C448000C */ lwc1 $f8, 0xc($v0)
/* 067934 7F032E04 C4660008 */ lwc1 $f6, 8($v1)
/* 067938 7F032E08 C46A000C */ lwc1 $f10, 0xc($v1)
/* 06793C 7F032E0C C4500010 */ lwc1 $f16, 0x10($v0)
/* 067940 7F032E10 46062001 */ sub.s $f0, $f4, $f6
/* 067944 7F032E14 C4720010 */ lwc1 $f18, 0x10($v1)
/* 067948 7F032E18 460A4081 */ sub.s $f2, $f8, $f10
/* 06794C 7F032E1C 46000102 */ mul.s $f4, $f0, $f0
/* 067950 7F032E20 46128381 */ sub.s $f14, $f16, $f18
/* 067954 7F032E24 46021182 */ mul.s $f6, $f2, $f2
/* 067958 7F032E28 46062200 */ add.s $f8, $f4, $f6
/* 06795C 7F032E2C 460E7282 */ mul.s $f10, $f14, $f14
/* 067960 7F032E30 0C007DF8 */ jal sqrtf
/* 067964 7F032E34 460A4300 */ add.s $f12, $f8, $f10
/* 067968 7F032E38 8FBF0014 */ lw $ra, 0x14($sp)
/* 06796C 7F032E3C 27BD0020 */ addiu $sp, $sp, 0x20
/* 067970 7F032E40 03E00008 */ jr $ra
/* 067974 7F032E44 00000000 */ nop
)
#endif
#ifdef NONMATCHING
@@ -20590,7 +20561,7 @@ glabel sub_GAME_7F032E48
/* 067978 7F032E48 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 06797C 7F032E4C AFBF0014 */ sw $ra, 0x14($sp)
/* 067980 7F032E50 8C860018 */ lw $a2, 0x18($a0)
/* 067984 7F032E54 0FC0CBE5 */ jal sub_GAME_7F032F94
/* 067984 7F032E54 0FC0CBE5 */ jal convertPadIf9000
/* 067988 7F032E58 AFA6001C */ sw $a2, 0x1c($sp)
/* 06798C 7F032E5C 28412710 */ slti $at, $v0, 0x2710
/* 067990 7F032E60 1020000A */ beqz $at, .L7F032E8C
@@ -20649,7 +20620,7 @@ GLOBAL_ASM(
glabel check_if_room_for_preset_loaded
/* 067A2C 7F032EFC 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 067A30 7F032F00 AFBF0014 */ sw $ra, 0x14($sp)
/* 067A34 7F032F04 0FC0CBE5 */ jal sub_GAME_7F032F94
/* 067A34 7F032F04 0FC0CBE5 */ jal convertPadIf9000
/* 067A38 7F032F08 00000000 */ nop
/* 067A3C 7F032F0C 28412710 */ slti $at, $v0, 0x2710
/* 067A40 7F032F10 1020000A */ beqz $at, .L7F032F3C
@@ -20677,7 +20648,7 @@ glabel check_if_room_for_preset_loaded
/* 067A90 7F032F60 00001025 */ move $v0, $zero
/* 067A94 7F032F64 10800007 */ beqz $a0, .L7F032F84
/* 067A98 7F032F68 00000000 */ nop
/* 067A9C 7F032F6C 0FC2CBF6 */ jal sub_GAME_7F0B2FD8
/* 067A9C 7F032F6C 0FC2CBF6 */ jal getTileRoom
/* 067AA0 7F032F70 00000000 */ nop
/* 067AA4 7F032F74 0FC2D794 */ jal sub_GAME_7F0B5E50
/* 067AA8 7F032F78 00402025 */ move $a0, $v0
@@ -20693,25 +20664,14 @@ glabel check_if_room_for_preset_loaded
#endif
#ifdef NONMATCHING
void sub_GAME_7F032F94(void) {
s32 convertPadIf9000(struct chrdata *guardData,s32 padNo)
{
// Guard's target pad.
if (padNo == PAD_PRESET) {
padNo = (s32)guardData->padpreset1;
}
return padNo;
}
#else
GLOBAL_ASM(
.text
glabel sub_GAME_7F032F94
/* 067AC4 7F032F94 24012328 */ li $at, 9000
/* 067AC8 7F032F98 14A10002 */ bne $a1, $at, .L7F032FA4
/* 067ACC 7F032F9C 00000000 */ nop
/* 067AD0 7F032FA0 84850114 */ lh $a1, 0x114($a0)
.L7F032FA4:
/* 067AD4 7F032FA4 03E00008 */ jr $ra
/* 067AD8 7F032FA8 00A01025 */ move $v0, $a1
)
#endif
#ifdef NONMATCHING
@@ -20891,7 +20851,7 @@ glabel get_distance_between_actor_and_preset
/* 067C94 7F033164 AFA50024 */ sw $a1, 0x24($sp)
/* 067C98 7F033168 8FA40020 */ lw $a0, 0x20($sp)
/* 067C9C 7F03316C 8FA50024 */ lw $a1, 0x24($sp)
/* 067CA0 7F033170 0FC0CBE5 */ jal sub_GAME_7F032F94
/* 067CA0 7F033170 0FC0CBE5 */ jal convertPadIf9000
/* 067CA4 7F033174 AFA2001C */ sw $v0, 0x1c($sp)
/* 067CA8 7F033178 28412710 */ slti $at, $v0, 0x2710
/* 067CAC 7F03317C 1020000A */ beqz $at, .L7F0331A8
@@ -21277,7 +21237,7 @@ glabel sub_GAME_7F0333F8
/* 067F68 7F033438 8FA40044 */ lw $a0, 0x44($sp)
/* 067F6C 7F03343C 0FC1B2E6 */ jal getsuboffset
/* 067F70 7F033440 27A50020 */ addiu $a1, $sp, 0x20
/* 067F74 7F033444 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 067F74 7F033444 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 067F78 7F033448 00000000 */ nop
/* 067F7C 7F03344C 00402025 */ move $a0, $v0
/* 067F80 7F033450 0FC1611D */ jal matrix_4x4_transform_vector_in_place
@@ -22205,7 +22165,7 @@ GLOBAL_ASM(
glabel sub_GAME_7F033D5C
/* 06888C 7F033D5C 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 068890 7F033D60 AFBF0014 */ sw $ra, 0x14($sp)
/* 068894 7F033D64 0FC0CBE5 */ jal sub_GAME_7F032F94
/* 068894 7F033D64 0FC0CBE5 */ jal convertPadIf9000
/* 068898 7F033D68 AFA40018 */ sw $a0, 0x18($sp)
/* 06889C 7F033D6C 8FAE0018 */ lw $t6, 0x18($sp)
/* 0688A0 7F033D70 A5C20114 */ sh $v0, 0x114($t6)
@@ -22234,7 +22194,7 @@ glabel sub_GAME_7F033D84
/* 0688C8 7F033D98 10400006 */ beqz $v0, .L7F033DB4
/* 0688CC 7F033D9C 8FA40020 */ lw $a0, 0x20($sp)
/* 0688D0 7F033DA0 8FA50028 */ lw $a1, 0x28($sp)
/* 0688D4 7F033DA4 0FC0CBE5 */ jal sub_GAME_7F032F94
/* 0688D4 7F033DA4 0FC0CBE5 */ jal convertPadIf9000
/* 0688D8 7F033DA8 AFA2001C */ sw $v0, 0x1c($sp)
/* 0688DC 7F033DAC 8FA3001C */ lw $v1, 0x1c($sp)
/* 0688E0 7F033DB0 A4620114 */ sh $v0, 0x114($v1)
@@ -22280,7 +22240,7 @@ glabel sub_GAME_7F033DC4
/* 068948 7F033E18 1000001F */ b .L7F033E98
/* 06894C 7F033E1C 00001025 */ move $v0, $zero
.L7F033E20:
/* 068950 7F033E20 0FC2CA2C */ jal sub_GAME_7F0B28B0
/* 068950 7F033E20 0FC2CA2C */ jal getCollisionEdge_maybe
/* 068954 7F033E24 27A5003C */ addiu $a1, $sp, 0x3c
/* 068958 7F033E28 8E060014 */ lw $a2, 0x14($s0)
/* 06895C 7F033E2C 26230008 */ addiu $v1, $s1, 8
@@ -22336,7 +22296,7 @@ glabel sub_GAME_7F033EAC
/* 0689E8 7F033EB8 240E0001 */ li $t6, 1
/* 0689EC 7F033EBC AFA50034 */ sw $a1, 0x34($sp)
/* 0689F0 7F033EC0 AFAE002C */ sw $t6, 0x2c($sp)
/* 0689F4 7F033EC4 0FC2CBF6 */ jal sub_GAME_7F0B2FD8
/* 0689F4 7F033EC4 0FC2CBF6 */ jal getTileRoom
/* 0689F8 7F033EC8 00A02025 */ move $a0, $a1
/* 0689FC 7F033ECC 0FC2D794 */ jal sub_GAME_7F0B5E50
/* 068A00 7F033ED0 00402025 */ move $a0, $v0
@@ -22346,7 +22306,7 @@ glabel sub_GAME_7F033EAC
/* 068A10 7F033EE0 24050000 */ li $a1, 0
/* 068A14 7F033EE4 50400014 */ beql $v0, $zero, .L7F033F38
/* 068A18 7F033EE8 8FBF0014 */ lw $ra, 0x14($sp)
/* 068A1C 7F033EEC 0FC2CBF6 */ jal sub_GAME_7F0B2FD8
/* 068A1C 7F033EEC 0FC2CBF6 */ jal getTileRoom
/* 068A20 7F033EF0 8FA40034 */ lw $a0, 0x34($sp)
/* 068A24 7F033EF4 00402025 */ move $a0, $v0
/* 068A28 7F033EF8 0FC2CF03 */ jal sub_GAME_7F0B3C0C
@@ -22549,7 +22509,7 @@ glabel actionblock_guard_constructor_BDBE
/* 068C94 7F034164 AFA40040 */ sw $a0, 0x40($sp)
/* 068C98 7F034168 AFA50044 */ sw $a1, 0x44($sp)
/* 068C9C 7F03416C AFA60048 */ sw $a2, 0x48($sp)
/* 068CA0 7F034170 0FC07FF0 */ jal get_next_available_guardID
/* 068CA0 7F034170 0FC07FF0 */ jal chrGetNumFree
/* 068CA4 7F034174 AFA7004C */ sw $a3, 0x4c($sp)
/* 068CA8 7F034178 28410003 */ slti $at, $v0, 3
/* 068CAC 7F03417C 14200031 */ bnez $at, .L7F034244
@@ -22627,7 +22587,7 @@ glabel guard_constructor_BD
/* 068D8C 7F03425C AFBF0024 */ sw $ra, 0x24($sp)
/* 068D90 7F034260 AFA50034 */ sw $a1, 0x34($sp)
/* 068D94 7F034264 AFA60038 */ sw $a2, 0x38($sp)
/* 068D98 7F034268 0FC0CBE5 */ jal sub_GAME_7F032F94
/* 068D98 7F034268 0FC0CBE5 */ jal convertPadIf9000
/* 068D9C 7F03426C 00E02825 */ move $a1, $a3
/* 068DA0 7F034270 28412710 */ slti $at, $v0, 0x2710
/* 068DA4 7F034274 1020000A */ beqz $at, .L7F0342A0
@@ -22736,7 +22696,7 @@ glabel check_if_actorID_is_at_preset
/* 068EC8 7F034398 AFA60028 */ sw $a2, 0x28($sp)
/* 068ECC 7F03439C 8FA40020 */ lw $a0, 0x20($sp)
/* 068ED0 7F0343A0 8FA50028 */ lw $a1, 0x28($sp)
/* 068ED4 7F0343A4 0FC0CBE5 */ jal sub_GAME_7F032F94
/* 068ED4 7F0343A4 0FC0CBE5 */ jal convertPadIf9000
/* 068ED8 7F0343A8 AFA20018 */ sw $v0, 0x18($sp)
/* 068EDC 7F0343AC 28412710 */ slti $at, $v0, 0x2710
/* 068EE0 7F0343B0 1020000A */ beqz $at, .L7F0343DC
@@ -22801,7 +22761,7 @@ glabel check_if_actor_is_at_preset
/* 068F8C 7F03445C AFA50024 */ sw $a1, 0x24($sp)
/* 068F90 7F034460 AFA2001C */ sw $v0, 0x1c($sp)
/* 068F94 7F034464 8FA40020 */ lw $a0, 0x20($sp)
/* 068F98 7F034468 0FC0CBE5 */ jal sub_GAME_7F032F94
/* 068F98 7F034468 0FC0CBE5 */ jal convertPadIf9000
/* 068F9C 7F03446C 8FA50024 */ lw $a1, 0x24($sp)
/* 068FA0 7F034470 28412710 */ slti $at, $v0, 0x2710
/* 068FA4 7F034474 1020000A */ beqz $at, .L7F0344A0
@@ -22883,7 +22843,7 @@ glabel removed_animation_routine_2B
{
s32 temp_ret;
arg1 = sub_GAME_7F032F94();
arg1 = convertPadIf9000();
if (true_if_actor_dying_fading_limping_shot(arg0) != 0)
{
temp_ret = scan_position_data_table_for_normal_object_at_preset(arg1);
@@ -22904,7 +22864,7 @@ GLOBAL_ASM(
glabel sub_GAME_7F034514
/* 069044 7F034514 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 069048 7F034518 AFBF0014 */ sw $ra, 0x14($sp)
/* 06904C 7F03451C 0FC0CBE5 */ jal sub_GAME_7F032F94
/* 06904C 7F03451C 0FC0CBE5 */ jal convertPadIf9000
/* 069050 7F034520 AFA40018 */ sw $a0, 0x18($sp)
/* 069054 7F034524 AFA2001C */ sw $v0, 0x1c($sp)
/* 069058 7F034528 0FC0A896 */ jal true_if_actor_dying_fading_limping_shot
@@ -22950,7 +22910,7 @@ glabel sub_GAME_7F034514
{
return 0;
}
if (sub_GAME_7F032DE4(arg0) < 10.0f)
if (distToBond3D(arg0) < 10.0f)
{
return 0;
}
@@ -23022,7 +22982,7 @@ glabel actor_draws_throws_grenade_at_player_if_possible
/* 0690DC 7F0345AC 1000004E */ b .L7F0346E8
/* 0690E0 7F0345B0 00001025 */ move $v0, $zero
.L7F0345B4:
/* 0690E4 7F0345B4 0FC0CB79 */ jal sub_GAME_7F032DE4
/* 0690E4 7F0345B4 0FC0CB79 */ jal distToBond3D
/* 0690E8 7F0345B8 02002025 */ move $a0, $s0
/* 0690EC 7F0345BC 3C014120 */ li $at, 0x41200000 # 10.000000
/* 0690F0 7F0345C0 44812000 */ mtc1 $at, $f4
@@ -23132,7 +23092,7 @@ glabel actor_draws_throws_grenade_at_player_if_possible
temp_a0 = temp_ret->unk14;
sp1C = temp_ret;
set_obj_instance_controller_scale(temp_a0, temp_a0->unk14);
sub_GAME_7F03A5A4(sp1C->unk10, arg0->unk18);
attachNewChild(sp1C->unk10, arg0->unk18);
sp1C->unk82 = (u16)0xb4;
sub_GAME_7F04BFD0(sp1C->unk10, 1);
arg0->unk12 = (s16) (arg0->unk12 | 1);
@@ -23165,7 +23125,7 @@ glabel actor_drops_itemtype_setting_timer
/* 069270 7F034740 8FA3001C */ lw $v1, 0x1c($sp)
/* 069274 7F034744 8FB80020 */ lw $t8, 0x20($sp)
/* 069278 7F034748 8C640010 */ lw $a0, 0x10($v1)
/* 06927C 7F03474C 0FC0E969 */ jal sub_GAME_7F03A5A4
/* 06927C 7F03474C 0FC0E969 */ jal attachNewChild
/* 069280 7F034750 8F050018 */ lw $a1, 0x18($t8)
/* 069284 7F034754 8FA3001C */ lw $v1, 0x1c($sp)
/* 069288 7F034758 241900B4 */ li $t9, 180
+88 -71
View File
@@ -140,7 +140,7 @@ char dword_CODE_bss_80075C10[0x78];
char dword_CODE_bss_80075C88[0x78];
//CODE.bss:80075D00
void * ptr_setup_path_tbl;
struct Pad * ptr_setup_path_tbl;
//CODE.bss:80075D04
void * ptr_setup_path_link;
//CODE.bss:80075D08
@@ -4023,7 +4023,7 @@ action42_If_Current_Guard_On_Screen_In_Loaded_Room_RVL_2:
/* 06B0E0 7F0365B0 26310002 */ addiu $s1, $s1, 2
action43_If_Guard_In_A_Room_Currently_Loaded_RVL_2:
/* 06B0E4 7F0365B4 8EEC0018 */ lw $t4, 0x18($s7)
/* 06B0E8 7F0365B8 0FC2CBF6 */ jal sub_GAME_7F0B2FD8
/* 06B0E8 7F0365B8 0FC2CBF6 */ jal getTileRoom
/* 06B0EC 7F0365BC 8D840014 */ lw $a0, 0x14($t4)
/* 06B0F0 7F0365C0 0FC2D794 */ jal sub_GAME_7F0B5E50
/* 06B0F4 7F0365C4 00402025 */ move $a0, $v0
@@ -4227,7 +4227,7 @@ action4B_RVL_If_In_Proximity_Of_Bond_4:
/* 06B3BC 7F03688C 00000000 */ nop
/* 06B3C0 7F036890 468042A0 */ cvt.s.w $f10, $f8
/* 06B3C4 7F036894 46185402 */ mul.s $f16, $f10, $f24
/* 06B3C8 7F036898 0FC0CB79 */ jal sub_GAME_7F032DE4
/* 06B3C8 7F036898 0FC0CB79 */ jal distToBond3D
/* 06B3CC 7F03689C E7B005FC */ swc1 $f16, 0x5fc($sp)
/* 06B3D0 7F0368A0 C7B205FC */ lwc1 $f18, 0x5fc($sp)
/* 06B3D4 7F0368A4 02C02025 */ move $a0, $s6
@@ -4255,7 +4255,7 @@ action4C_RVL_If_Not_In_Proximity_Of_Bond_4:
/* 06B424 7F0368F4 00000000 */ nop
/* 06B428 7F0368F8 468021A0 */ cvt.s.w $f6, $f4
/* 06B42C 7F0368FC 46183202 */ mul.s $f8, $f6, $f24
/* 06B430 7F036900 0FC0CB79 */ jal sub_GAME_7F032DE4
/* 06B430 7F036900 0FC0CB79 */ jal distToBond3D
/* 06B434 7F036904 E7A805F4 */ swc1 $f8, 0x5f4($sp)
/* 06B438 7F036908 C7AA05F4 */ lwc1 $f10, 0x5f4($sp)
/* 06B43C 7F03690C 02C02025 */ move $a0, $s6
@@ -4932,7 +4932,7 @@ action64_Type_16_Object_Equipped_On_Guard_3:
/* 06BDB4 7F037284 26520003 */ addiu $s2, $s2, 3
/* 06BDB8 7F037288 8E040010 */ lw $a0, 0x10($s0)
.L7F03728C:
/* 06BDBC 7F03728C 0FC0E969 */ jal sub_GAME_7F03A5A4
/* 06BDBC 7F03728C 0FC0E969 */ jal attachNewChild
/* 06BDC0 7F037290 8E650018 */ lw $a1, 0x18($s3)
.L7F037294:
/* 06BDC4 7F037294 26520003 */ addiu $s2, $s2, 3
@@ -4994,7 +4994,7 @@ action65_Object_Moved_To_Preset_4:
/* 06BE94 7F037364 C60A0010 */ lwc1 $f10, 0x10($s0)
/* 06BE98 7F037368 E7AA0020 */ swc1 $f10, 0x20($sp)
/* 06BE9C 7F03736C C6100014 */ lwc1 $f16, 0x14($s0)
/* 06BEA0 7F037370 0FC16642 */ jal sub_GAME_7F059908
/* 06BEA0 7F037370 0FC16642 */ jal matrix_4x4_7F059908
/* 06BEA4 7F037374 E7B00024 */ swc1 $f16, 0x24($sp)
/* 06BEA8 7F037378 8E620014 */ lw $v0, 0x14($s3)
/* 06BEAC 7F03737C 27A504B8 */ addiu $a1, $sp, 0x4b8
@@ -5881,7 +5881,7 @@ action8F_Set_Guard_Health_3:
/* 06CAF8 7F037FC8 468054A0 */ cvt.s.w $f18, $f10
/* 06CAFC 7F037FCC 46069002 */ mul.s $f0, $f18, $f6
/* 06CB00 7F037FD0 44050000 */ mfc1 $a1, $f0
/* 06CB04 7F037FD4 0FC08006 */ jal sub_GAME_7F020018
/* 06CB04 7F037FD4 0FC08006 */ jal chrSetMaxDamage
/* 06CB08 7F037FD8 00000000 */ nop
/* 06CB0C 7F037FDC 26520003 */ addiu $s2, $s2, 3
/* 06CB10 7F037FE0 1000F56A */ b GetByteS1_ParseCommandByte_SwitchCase
@@ -5898,7 +5898,7 @@ action90_Set_Guard_Armor_Amount_3:
/* 06CB38 7F038008 46808220 */ cvt.s.w $f8, $f16
/* 06CB3C 7F03800C 46044002 */ mul.s $f0, $f8, $f4
/* 06CB40 7F038010 44050000 */ mfc1 $a1, $f0
/* 06CB44 7F038014 0FC08015 */ jal sub_GAME_7F020054
/* 06CB44 7F038014 0FC08015 */ jal chrAddHealth
/* 06CB48 7F038018 00000000 */ nop
/* 06CB4C 7F03801C 26520003 */ addiu $s2, $s2, 3
/* 06CB50 7F038020 1000F55A */ b GetByteS1_ParseCommandByte_SwitchCase
@@ -7560,7 +7560,7 @@ actionD9_GuardIDMovedToPresetReturnLoopIfSuccessful_5:
/* 06E2EC 7F0397BC 1040005E */ beqz $v0, .L7F039938
/* 06E2F0 7F0397C0 00408025 */ move $s0, $v0
/* 06E2F4 7F0397C4 02E02025 */ move $a0, $s7
/* 06E2F8 7F0397C8 0FC0CBE5 */ jal sub_GAME_7F032F94
/* 06E2F8 7F0397C8 0FC0CBE5 */ jal convertPadIf9000
/* 06E2FC 7F0397CC 02602825 */ move $a1, $s3
/* 06E300 7F0397D0 28412710 */ slti $at, $v0, 0x2710
/* 06E304 7F0397D4 1020000A */ beqz $at, .L7F039800
@@ -7676,11 +7676,11 @@ actionDA_Fade_Out_From_Cut_Scene_1:
/* 06E4A4 7F039974 11A10008 */ beq $t5, $at, .L7F039998
/* 06E4A8 7F039978 00002825 */ move $a1, $zero
/* 06E4AC 7F03997C 4407A000 */ mfc1 $a3, $f20
/* 06E4B0 7F039980 0FC201EC */ jal set_rgba_tint
/* 06E4B0 7F039980 0FC201EC */ jal currentPlayerSetFadeColour
/* 06E4B4 7F039984 00003025 */ move $a2, $zero
/* 06E4B8 7F039988 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 06E4BC 7F03998C 44817000 */ mtc1 $at, $f14
/* 06E4C0 7F039990 0FC20216 */ jal fade_to_over_seconds
/* 06E4C0 7F039990 0FC20216 */ jal currentPlayerSetFadeFrac
/* 06E4C4 7F039994 4600B306 */ mov.s $f12, $f22
.L7F039998:
/* 06E4C8 7F039998 26520001 */ addiu $s2, $s2, 1
@@ -7694,10 +7694,10 @@ actionDB_Fade_In_From_Black_Reset_DA_1:
/* 06E4E4 7F0399B4 11C10007 */ beq $t6, $at, .L7F0399D4
/* 06E4E8 7F0399B8 00002825 */ move $a1, $zero
/* 06E4EC 7F0399BC 00003025 */ move $a2, $zero
/* 06E4F0 7F0399C0 0FC201EC */ jal set_rgba_tint
/* 06E4F0 7F0399C0 0FC201EC */ jal currentPlayerSetFadeColour
/* 06E4F4 7F0399C4 3C073F80 */ li $a3, 0x3F800000 # 1.000000
/* 06E4F8 7F0399C8 4600B306 */ mov.s $f12, $f22
/* 06E4FC 7F0399CC 0FC20216 */ jal fade_to_over_seconds
/* 06E4FC 7F0399CC 0FC20216 */ jal currentPlayerSetFadeFrac
/* 06E500 7F0399D0 4600A386 */ mov.s $f14, $f20
.L7F0399D4:
/* 06E504 7F0399D4 26520001 */ addiu $s2, $s2, 1
@@ -7812,7 +7812,7 @@ actionE0_Guard_ID_Draws_Weapon_num_3:
/* 06E680 7F039B50 1000EE8E */ b GetByteS1_ParseCommandByte_SwitchCase
/* 06E684 7F039B54 26310003 */ addiu $s1, $s1, 3
actionE1_If_Fewer_than_This_Many_Players_Playing_RVL_3:
/* 06E688 7F039B58 0FC26919 */ jal get_num_players
/* 06E688 7F039B58 0FC26919 */ jal getPlayerCount
/* 06E68C 7F039B5C 00000000 */ nop
/* 06E690 7F039B60 822A0001 */ lb $t2, 1($s1)
/* 06E694 7F039B64 02C02025 */ move $a0, $s6
@@ -9890,7 +9890,7 @@ action42_If_Current_Guard_On_Screen_In_Loaded_Room_RVL_2:
/* 06B0E0 7F0365B0 26310002 */ addiu $s1, $s1, 2
action43_If_Guard_In_A_Room_Currently_Loaded_RVL_2:
/* 06B0E4 7F0365B4 8EEC0018 */ lw $t4, 0x18($s7)
/* 06B0E8 7F0365B8 0FC2CBF6 */ jal sub_GAME_7F0B2FD8
/* 06B0E8 7F0365B8 0FC2CBF6 */ jal getTileRoom
/* 06B0EC 7F0365BC 8D840014 */ lw $a0, 0x14($t4)
/* 06B0F0 7F0365C0 0FC2D794 */ jal sub_GAME_7F0B5E50
/* 06B0F4 7F0365C4 00402025 */ move $a0, $v0
@@ -10094,7 +10094,7 @@ action4B_RVL_If_In_Proximity_Of_Bond_4:
/* 06B3BC 7F03688C 00000000 */ nop
/* 06B3C0 7F036890 468042A0 */ cvt.s.w $f10, $f8
/* 06B3C4 7F036894 46185402 */ mul.s $f16, $f10, $f24
/* 06B3C8 7F036898 0FC0CB79 */ jal sub_GAME_7F032DE4
/* 06B3C8 7F036898 0FC0CB79 */ jal distToBond3D
/* 06B3CC 7F03689C E7B005FC */ swc1 $f16, 0x5fc($sp)
/* 06B3D0 7F0368A0 C7B205FC */ lwc1 $f18, 0x5fc($sp)
/* 06B3D4 7F0368A4 02C02025 */ move $a0, $s6
@@ -10122,7 +10122,7 @@ action4C_RVL_If_Not_In_Proximity_Of_Bond_4:
/* 06B424 7F0368F4 00000000 */ nop
/* 06B428 7F0368F8 468021A0 */ cvt.s.w $f6, $f4
/* 06B42C 7F0368FC 46183202 */ mul.s $f8, $f6, $f24
/* 06B430 7F036900 0FC0CB79 */ jal sub_GAME_7F032DE4
/* 06B430 7F036900 0FC0CB79 */ jal distToBond3D
/* 06B434 7F036904 E7A805F4 */ swc1 $f8, 0x5f4($sp)
/* 06B438 7F036908 C7AA05F4 */ lwc1 $f10, 0x5f4($sp)
/* 06B43C 7F03690C 02C02025 */ move $a0, $s6
@@ -10799,7 +10799,7 @@ action64_Type_16_Object_Equipped_On_Guard_3:
/* 06BDB4 7F037284 26520003 */ addiu $s2, $s2, 3
/* 06BDB8 7F037288 8E040010 */ lw $a0, 0x10($s0)
.L7F03728C:
/* 06BDBC 7F03728C 0FC0E969 */ jal sub_GAME_7F03A5A4
/* 06BDBC 7F03728C 0FC0E969 */ jal attachNewChild
/* 06BDC0 7F037290 8E650018 */ lw $a1, 0x18($s3)
.L7F037294:
/* 06BDC4 7F037294 26520003 */ addiu $s2, $s2, 3
@@ -10861,7 +10861,7 @@ action65_Object_Moved_To_Preset_4:
/* 06BE94 7F037364 C60A0010 */ lwc1 $f10, 0x10($s0)
/* 06BE98 7F037368 E7AA0020 */ swc1 $f10, 0x20($sp)
/* 06BE9C 7F03736C C6100014 */ lwc1 $f16, 0x14($s0)
/* 06BEA0 7F037370 0FC16642 */ jal sub_GAME_7F059908
/* 06BEA0 7F037370 0FC16642 */ jal matrix_4x4_7F059908
/* 06BEA4 7F037374 E7B00024 */ swc1 $f16, 0x24($sp)
/* 06BEA8 7F037378 8E620014 */ lw $v0, 0x14($s3)
/* 06BEAC 7F03737C 27A504B8 */ addiu $a1, $sp, 0x4b8
@@ -11748,7 +11748,7 @@ action8F_Set_Guard_Health_3:
/* 06CAF8 7F037FC8 468054A0 */ cvt.s.w $f18, $f10
/* 06CAFC 7F037FCC 46069002 */ mul.s $f0, $f18, $f6
/* 06CB00 7F037FD0 44050000 */ mfc1 $a1, $f0
/* 06CB04 7F037FD4 0FC08006 */ jal sub_GAME_7F020018
/* 06CB04 7F037FD4 0FC08006 */ jal chrSetMaxDamage
/* 06CB08 7F037FD8 00000000 */ nop
/* 06CB0C 7F037FDC 26520003 */ addiu $s2, $s2, 3
/* 06CB10 7F037FE0 1000F56A */ b GetByteS1_ParseCommandByte_SwitchCase
@@ -11765,7 +11765,7 @@ action90_Set_Guard_Armor_Amount_3:
/* 06CB38 7F038008 46808220 */ cvt.s.w $f8, $f16
/* 06CB3C 7F03800C 46044002 */ mul.s $f0, $f8, $f4
/* 06CB40 7F038010 44050000 */ mfc1 $a1, $f0
/* 06CB44 7F038014 0FC08015 */ jal sub_GAME_7F020054
/* 06CB44 7F038014 0FC08015 */ jal chrAddHealth
/* 06CB48 7F038018 00000000 */ nop
/* 06CB4C 7F03801C 26520003 */ addiu $s2, $s2, 3
/* 06CB50 7F038020 1000F55A */ b GetByteS1_ParseCommandByte_SwitchCase
@@ -13427,7 +13427,7 @@ actionD9_GuardIDMovedToPresetReturnLoopIfSuccessful_5:
/* 06E2EC 7F0397BC 1040005E */ beqz $v0, .L7F039938
/* 06E2F0 7F0397C0 00408025 */ move $s0, $v0
/* 06E2F4 7F0397C4 02E02025 */ move $a0, $s7
/* 06E2F8 7F0397C8 0FC0CBE5 */ jal sub_GAME_7F032F94
/* 06E2F8 7F0397C8 0FC0CBE5 */ jal convertPadIf9000
/* 06E2FC 7F0397CC 02602825 */ move $a1, $s3
/* 06E300 7F0397D0 28412710 */ slti $at, $v0, 0x2710
/* 06E304 7F0397D4 1020000A */ beqz $at, .L7F039800
@@ -13543,11 +13543,11 @@ actionDA_Fade_Out_From_Cut_Scene_1:
/* 06E4A4 7F039974 11A10008 */ beq $t5, $at, .L7F039998
/* 06E4A8 7F039978 00002825 */ move $a1, $zero
/* 06E4AC 7F03997C 4407A000 */ mfc1 $a3, $f20
/* 06E4B0 7F039980 0FC201EC */ jal set_rgba_tint
/* 06E4B0 7F039980 0FC201EC */ jal currentPlayerSetFadeColour
/* 06E4B4 7F039984 00003025 */ move $a2, $zero
/* 06E4B8 7F039988 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 06E4BC 7F03998C 44817000 */ mtc1 $at, $f14
/* 06E4C0 7F039990 0FC20216 */ jal fade_to_over_seconds
/* 06E4C0 7F039990 0FC20216 */ jal currentPlayerSetFadeFrac
/* 06E4C4 7F039994 4600B306 */ mov.s $f12, $f22
.L7F039998:
/* 06E4C8 7F039998 26520001 */ addiu $s2, $s2, 1
@@ -13561,10 +13561,10 @@ actionDB_Fade_In_From_Black_Reset_DA_1:
/* 06E4E4 7F0399B4 11C10007 */ beq $t6, $at, .L7F0399D4
/* 06E4E8 7F0399B8 00002825 */ move $a1, $zero
/* 06E4EC 7F0399BC 00003025 */ move $a2, $zero
/* 06E4F0 7F0399C0 0FC201EC */ jal set_rgba_tint
/* 06E4F0 7F0399C0 0FC201EC */ jal currentPlayerSetFadeColour
/* 06E4F4 7F0399C4 3C073F80 */ li $a3, 0x3F800000 # 1.000000
/* 06E4F8 7F0399C8 4600B306 */ mov.s $f12, $f22
/* 06E4FC 7F0399CC 0FC20216 */ jal fade_to_over_seconds
/* 06E4FC 7F0399CC 0FC20216 */ jal currentPlayerSetFadeFrac
/* 06E500 7F0399D0 4600A386 */ mov.s $f14, $f20
.L7F0399D4:
/* 06E504 7F0399D4 26520001 */ addiu $s2, $s2, 1
@@ -13679,7 +13679,7 @@ actionE0_Guard_ID_Draws_Weapon_num_3:
/* 06E680 7F039B50 1000EE8E */ b GetByteS1_ParseCommandByte_SwitchCase
/* 06E684 7F039B54 26310003 */ addiu $s1, $s1, 3
actionE1_If_Fewer_than_This_Many_Players_Playing_RVL_3:
/* 06E688 7F039B58 0FC26919 */ jal get_num_players
/* 06E688 7F039B58 0FC26919 */ jal getPlayerCount
/* 06E68C 7F039B5C 00000000 */ nop
/* 06E690 7F039B60 822A0001 */ lb $t2, 1($s1)
/* 06E694 7F039B64 02C02025 */ move $a0, $s6
@@ -14540,28 +14540,22 @@ glabel sub_GAME_7F03A538
#ifdef NONMATCHING
void sub_GAME_7F03A5A4(void) {
void attachNewChild(struct prop *newChild,struct prop *host)
{
newChild->host = host;
// Link the newChild into its siblings
if (host->child) {
host->child->prevSibling = newChild;
}
newChild->nextSibling = host->child;
newChild->prevSibling = 0x0;
newChild->standTile = 0x0;
host->child = newChild;
return;
}
#else
GLOBAL_ASM(
.text
glabel sub_GAME_7F03A5A4
/* 06F0D4 7F03A5A4 AC85001C */ sw $a1, 0x1c($a0)
/* 06F0D8 7F03A5A8 8CA20020 */ lw $v0, 0x20($a1)
/* 06F0DC 7F03A5AC 50400004 */ beql $v0, $zero, .L7F03A5C0
/* 06F0E0 7F03A5B0 AC820024 */ sw $v0, 0x24($a0)
/* 06F0E4 7F03A5B4 AC440028 */ sw $a0, 0x28($v0)
/* 06F0E8 7F03A5B8 8CA20020 */ lw $v0, 0x20($a1)
/* 06F0EC 7F03A5BC AC820024 */ sw $v0, 0x24($a0)
.L7F03A5C0:
/* 06F0F0 7F03A5C0 AC800028 */ sw $zero, 0x28($a0)
/* 06F0F4 7F03A5C4 AC800014 */ sw $zero, 0x14($a0)
/* 06F0F8 7F03A5C8 03E00008 */ jr $ra
/* 06F0FC 7F03A5CC ACA40020 */ sw $a0, 0x20($a1)
)
#endif
@@ -15549,7 +15543,7 @@ glabel sub_GAME_7F03B15C
/* 06FD54 7F03B224 C7AA019C */ lwc1 $f10, 0x19c($sp)
/* 06FD58 7F03B228 E7A601B0 */ swc1 $f6, 0x1b0($sp)
/* 06FD5C 7F03B22C E7A801B4 */ swc1 $f8, 0x1b4($sp)
/* 06FD60 7F03B230 0FC1E111 */ jal sub_GAME_7F078444
/* 06FD60 7F03B230 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 06FD64 7F03B234 E7AA01B8 */ swc1 $f10, 0x1b8($sp)
/* 06FD68 7F03B238 00402025 */ move $a0, $v0
/* 06FD6C 7F03B23C 0FC1611D */ jal matrix_4x4_transform_vector_in_place
@@ -15559,7 +15553,7 @@ glabel sub_GAME_7F03B15C
/* 06FD7C 7F03B24C C7A401A8 */ lwc1 $f4, 0x1a8($sp)
/* 06FD80 7F03B250 E7B001BC */ swc1 $f16, 0x1bc($sp)
/* 06FD84 7F03B254 E7B201C0 */ swc1 $f18, 0x1c0($sp)
/* 06FD88 7F03B258 0FC1E111 */ jal sub_GAME_7F078444
/* 06FD88 7F03B258 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 06FD8C 7F03B25C E7A401C4 */ swc1 $f4, 0x1c4($sp)
/* 06FD90 7F03B260 00402025 */ move $a0, $v0
/* 06FD94 7F03B264 0FC160F6 */ jal matrix_4x4_rotate_vector_in_place
@@ -15645,7 +15639,7 @@ glabel sub_GAME_7F03B15C
/* 06FECC 7F03B39C C6080008 */ lwc1 $f8, 8($s0)
/* 06FED0 7F03B3A0 AFA4055C */ sw $a0, 0x55c($sp)
/* 06FED4 7F03B3A4 46004402 */ mul.s $f16, $f8, $f0
/* 06FED8 7F03B3A8 0FC2CBF6 */ jal sub_GAME_7F0B2FD8
/* 06FED8 7F03B3A8 0FC2CBF6 */ jal getTileRoom
/* 06FEDC 7F03B3AC E7B00084 */ swc1 $f16, 0x84($sp)
/* 06FEE0 7F03B3B0 00408825 */ move $s1, $v0
/* 06FEE4 7F03B3B4 27A2018C */ addiu $v0, $sp, 0x18c
@@ -15678,7 +15672,7 @@ glabel sub_GAME_7F03B15C
/* 06FF48 7F03B418 00000000 */ nop
/* 06FF4C 7F03B41C 0FC225E6 */ jal get_curplayer_positiondata
/* 06FF50 7F03B420 00000000 */ nop
/* 06FF54 7F03B424 0FC2CBF6 */ jal sub_GAME_7F0B2FD8
/* 06FF54 7F03B424 0FC2CBF6 */ jal getTileRoom
/* 06FF58 7F03B428 8C440014 */ lw $a0, 0x14($v0)
/* 06FF5C 7F03B42C 27AC007C */ addiu $t4, $sp, 0x7c
/* 06FF60 7F03B430 27AD008C */ addiu $t5, $sp, 0x8c
@@ -15696,7 +15690,7 @@ glabel sub_GAME_7F03B15C
.L7F03B460:
/* 06FF90 7F03B460 0FC225E6 */ jal get_curplayer_positiondata
/* 06FF94 7F03B464 00000000 */ nop
/* 06FF98 7F03B468 0FC2CBF6 */ jal sub_GAME_7F0B2FD8
/* 06FF98 7F03B468 0FC2CBF6 */ jal getTileRoom
/* 06FF9C 7F03B46C 8C440014 */ lw $a0, 0x14($v0)
/* 06FFA0 7F03B470 27AF007C */ addiu $t7, $sp, 0x7c
/* 06FFA4 7F03B474 27B8008C */ addiu $t8, $sp, 0x8c
@@ -15774,7 +15768,7 @@ glabel sub_GAME_7F03B15C
/* 0700B0 7F03B580 5300000B */ beql $t8, $zero, .L7F03B5B0
/* 0700B4 7F03B584 8FB901AC */ lw $t9, 0x1ac($sp)
.L7F03B588:
/* 0700B8 7F03B588 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 0700B8 7F03B588 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 0700BC 7F03B58C 00000000 */ nop
/* 0700C0 7F03B590 00402025 */ move $a0, $v0
/* 0700C4 7F03B594 0FC1611D */ jal matrix_4x4_transform_vector_in_place
@@ -16528,7 +16522,7 @@ glabel sub_GAME_7F03BDEC
/* 070B14 7F03BFE4 8E090014 */ lw $t1, 0x14($s0)
/* 070B18 7F03BFE8 15090024 */ bne $t0, $t1, .L7F03C07C
/* 070B1C 7F03BFEC 00000000 */ nop
/* 070B20 7F03BFF0 0FC1E67C */ jal sub_GAME_7F0799F0
/* 070B20 7F03BFF0 0FC1E67C */ jal currentPlayerGetCrouchPos
/* 070B24 7F03BFF4 2411000F */ li $s1, 15
/* 070B28 7F03BFF8 24010001 */ li $at, 1
/* 070B2C 7F03BFFC 14410003 */ bne $v0, $at, .L7F03C00C
@@ -16536,7 +16530,7 @@ glabel sub_GAME_7F03BDEC
/* 070B34 7F03C004 10000006 */ b .L7F03C020
/* 070B38 7F03C008 241100C8 */ li $s1, 200
.L7F03C00C:
/* 070B3C 7F03C00C 0FC1E67C */ jal sub_GAME_7F0799F0
/* 070B3C 7F03C00C 0FC1E67C */ jal currentPlayerGetCrouchPos
/* 070B40 7F03C010 00000000 */ nop
/* 070B44 7F03C014 54400003 */ bnezl $v0, .L7F03C024
/* 070B48 7F03C018 27A40084 */ addiu $a0, $sp, 0x84
@@ -16547,7 +16541,7 @@ glabel sub_GAME_7F03BDEC
/* 070B54 7F03C024 02A02825 */ move $a1, $s5
/* 070B58 7F03C028 0FC1A073 */ jal sub_GAME_7F0681CC
/* 070B5C 7F03C02C 8FA600C8 */ lw $a2, 0xc8($sp)
/* 070B60 7F03C030 0FC1E111 */ jal sub_GAME_7F078444
/* 070B60 7F03C030 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 070B64 7F03C034 00000000 */ nop
/* 070B68 7F03C038 00402025 */ move $a0, $v0
/* 070B6C 7F03C03C 0FC160F6 */ jal matrix_4x4_rotate_vector_in_place
@@ -16847,7 +16841,7 @@ glabel sub_GAME_7F03C2BC
/* 070F04 7F03C3D4 0FC225E6 */ jal get_curplayer_positiondata
/* 070F08 7F03C3D8 00000000 */ nop
/* 070F0C 7F03C3DC 02002025 */ move $a0, $s0
/* 070F10 7F03C3E0 0FC0E969 */ jal sub_GAME_7F03A5A4
/* 070F10 7F03C3E0 0FC0E969 */ jal attachNewChild
/* 070F14 7F03C3E4 00402825 */ move $a1, $v0
/* 070F18 7F03C3E8 8FBF001C */ lw $ra, 0x1c($sp)
.L7F03C3EC:
@@ -17025,7 +17019,7 @@ glabel sub_GAME_7F03C574
/* 0710B4 7F03C584 AFB30028 */ sw $s3, 0x28($sp)
/* 0710B8 7F03C588 AFB10020 */ sw $s1, 0x20($sp)
/* 0710BC 7F03C58C AFB0001C */ sw $s0, 0x1c($sp)
/* 0710C0 7F03C590 0FC26919 */ jal get_num_players
/* 0710C0 7F03C590 0FC26919 */ jal getPlayerCount
/* 0710C4 7F03C594 F7B40010 */ sdc1 $f20, 0x10($sp)
/* 0710C8 7F03C598 240E0001 */ li $t6, 1
/* 0710CC 7F03C59C 00409825 */ move $s3, $v0
@@ -17033,9 +17027,9 @@ glabel sub_GAME_7F03C574
/* 0710D4 7F03C5A4 1840001F */ blez $v0, .L7F03C624
/* 0710D8 7F03C5A8 00008025 */ move $s0, $zero
/* 0710DC 7F03C5AC 3C0143C8 */ li $at, 0x43C80000 # 400.000000
/* 0710E0 7F03C5B0 3C118008 */ lui $s1, %hi(ptr_BONDdata_p1)
/* 0710E0 7F03C5B0 3C118008 */ lui $s1, %hi(players)
/* 0710E4 7F03C5B4 4481A000 */ mtc1 $at, $f20
/* 0710E8 7F03C5B8 26319EE0 */ addiu $s1, %lo(ptr_BONDdata_p1) # addiu $s1, $s1, -0x6120
/* 0710E8 7F03C5B8 26319EE0 */ addiu $s1, %lo(players) # addiu $s1, $s1, -0x6120
.L7F03C5BC:
/* 0710EC 7F03C5BC 8E2F0000 */ lw $t7, ($s1)
/* 0710F0 7F03C5C0 C6460008 */ lwc1 $f6, 8($s2)
@@ -17219,7 +17213,7 @@ glabel handle_mp_respawn_and_some_things
/* 071354 7F03C824 AFA20028 */ sw $v0, 0x28($sp)
/* 071358 7F03C828 8FA30028 */ lw $v1, 0x28($sp)
/* 07135C 7F03C82C 8E040010 */ lw $a0, 0x10($s0)
/* 071360 7F03C830 0FC0E969 */ jal sub_GAME_7F03A5A4
/* 071360 7F03C830 0FC0E969 */ jal attachNewChild
/* 071364 7F03C834 8C650010 */ lw $a1, 0x10($v1)
/* 071368 7F03C838 1000001C */ b .L7F03C8AC
/* 07136C 7F03C83C 24130001 */ li $s3, 1
@@ -17305,23 +17299,23 @@ glabel handle_mp_respawn_and_some_things
/* 07147C 7F03C94C 0FC26C57 */ jal sub_GAME_7F09B15C
/* 071480 7F03C950 02202025 */ move $a0, $s1
/* 071484 7F03C954 00024080 */ sll $t0, $v0, 2
/* 071488 7F03C958 3C048008 */ lui $a0, %hi(ptr_BONDdata_p1)
/* 071488 7F03C958 3C048008 */ lui $a0, %hi(players)
/* 07148C 7F03C95C 00882021 */ addu $a0, $a0, $t0
/* 071490 7F03C960 8C849EE0 */ lw $a0, %lo(ptr_BONDdata_p1)($a0)
/* 071490 7F03C960 8C849EE0 */ lw $a0, %lo(players)($a0)
/* 071494 7F03C964 0FC18AC0 */ jal sub_GAME_7F062B00
/* 071498 7F03C968 24840A54 */ addiu $a0, $a0, 0xa54
/* 07149C 7F03C96C 0FC26C57 */ jal sub_GAME_7F09B15C
/* 0714A0 7F03C970 02202025 */ move $a0, $s1
/* 0714A4 7F03C974 00024880 */ sll $t1, $v0, 2
/* 0714A8 7F03C978 3C048008 */ lui $a0, %hi(ptr_BONDdata_p1)
/* 0714A8 7F03C978 3C048008 */ lui $a0, %hi(players)
/* 0714AC 7F03C97C 00892021 */ addu $a0, $a0, $t1
/* 0714B0 7F03C980 8C849EE0 */ lw $a0, %lo(ptr_BONDdata_p1)($a0)
/* 0714B0 7F03C980 8C849EE0 */ lw $a0, %lo(players)($a0)
/* 0714B4 7F03C984 0FC18AC0 */ jal sub_GAME_7F062B00
/* 0714B8 7F03C988 24840DFC */ addiu $a0, $a0, 0xdfc
/* 0714BC 7F03C98C 8E2A0004 */ lw $t2, 4($s1)
/* 0714C0 7F03C990 5140000C */ beql $t2, $zero, .L7F03C9C4
/* 0714C4 7F03C994 24010005 */ li $at, 5
/* 0714C8 7F03C998 0FC26919 */ jal get_num_players
/* 0714C8 7F03C998 0FC26919 */ jal getPlayerCount
/* 0714CC 7F03C99C 00000000 */ nop
/* 0714D0 7F03C9A0 28410002 */ slti $at, $v0, 2
/* 0714D4 7F03C9A4 54200007 */ bnezl $at, .L7F03C9C4
@@ -17904,10 +17898,10 @@ glabel sub_GAME_7F03CFE8
/* 071B4C 7F03D01C 0FC26C57 */ jal sub_GAME_7F09B15C
/* 071B50 7F03D020 00000000 */ nop
/* 071B54 7F03D024 00027080 */ sll $t6, $v0, 2
/* 071B58 7F03D028 3C048008 */ lui $a0, %hi(ptr_BONDdata_p1)
/* 071B58 7F03D028 3C048008 */ lui $a0, %hi(players)
/* 071B5C 7F03D02C 008E2021 */ addu $a0, $a0, $t6
/* 071B60 7F03D030 0FC225DE */ jal sub_GAME_7F089778
/* 071B64 7F03D034 8C849EE0 */ lw $a0, %lo(ptr_BONDdata_p1)($a0)
/* 071B64 7F03D034 8C849EE0 */ lw $a0, %lo(players)($a0)
/* 071B68 7F03D038 10000004 */ b .L7F03D04C
/* 071B6C 7F03D03C 8FBF0014 */ lw $ra, 0x14($sp)
/* 071B70 7F03D040 44800000 */ mtc1 $zero, $f0
@@ -18199,7 +18193,7 @@ glabel sub_GAME_7F03D188
/* 071EBC 7F03D38C 44814000 */ mtc1 $at, $f8
/* 071EC0 7F03D390 00000000 */ nop
/* 071EC4 7F03D394 46083282 */ mul.s $f10, $f6, $f8
/* 071EC8 7F03D398 0FC26919 */ jal get_num_players
/* 071EC8 7F03D398 0FC26919 */ jal getPlayerCount
/* 071ECC 7F03D39C E7AA0058 */ swc1 $f10, 0x58($sp)
/* 071ED0 7F03D3A0 24010001 */ li $at, 1
/* 071ED4 7F03D3A4 14410005 */ bne $v0, $at, .L7F03D3BC
@@ -19334,7 +19328,7 @@ glabel sub_GAME_7F03E134
#ifdef NONMATCHING
void sub_GAME_7F03E18C(void) {
// Duplicate of the below function with a small extension.
}
#else
GLOBAL_ASM(
@@ -19384,8 +19378,31 @@ glabel sub_GAME_7F03E18C
#ifdef NONMATCHING
void sub_GAME_7F03E210(void) {
/*
Main missing these kinds of instructions:
- sll $a1, $s0, 0x10
- sra $t6, $a1, 0x10
..
- sll $a1, $s0, 0x10
So it looks like a conversion from u32 to u16, but we're reading a u8?
I tried u32 room but no joy.
*/
void sub_GAME_7F03E210(struct prop *posData)
{
u8 room;
u8 *roomIter;
roomIter = posData->rooms;
room = roomIter[0];
while (room != 0xff) {
FUN_7f03dd9c(posData,(u16)room);
roomIter += 1;
room = *roomIter;
}
return;
}
#else
GLOBAL_ASM(
+8
View File
@@ -71,6 +71,14 @@ struct struct_20 {
void * anonymous_19;
};
struct Pad {
u32 padNumber;
s32* neighbours;
u32 pathSetIndex;
s32 dist_tmp;
};
extern struct Pad * ptr_setup_path_tbl;
extern u32 D_800312A0[];
extern u32 D_800312B4[];
extern u32 D_800312C8[];
+3 -3
View File
@@ -27,7 +27,7 @@ u8 dword_D_80037084[] = { // GLIST_DETECT_BOND_SPAWN_CLONE_ON_HEARD_GUNFIRE: wai
goto_loop_repeat(0x01)
label(0x06)
if_guard_sees_bond(0x07)
if_guard_was_shot_within_last_10_secs(0x0D)
if_guard_was_shot_or_seen_bond_within_last_10_secs(0x0D)
if_guard_heard_bond_within_last_10_secs(0x0E)
if_guard_shot_from_bond_missed(0x10)
if_guard_see_another_guard_shot(0x0D)
@@ -113,7 +113,7 @@ u8 dword_D_8003717C[] = { // GLIST_DETECT_BOND_DEAF_NO_CLONE_NO_IDLE_ANIM: wait
goto_loop_repeat(0x01)
label(0x06)
if_guard_sees_bond(0x07)
if_guard_was_shot_within_last_10_secs(0x0D)
if_guard_was_shot_or_seen_bond_within_last_10_secs(0x0D)
if_guard_shot_from_bond_missed(0x10)
if_guard_see_another_guard_shot(0x0D)
if_guard_see_another_guard_die(0x0D)
@@ -212,7 +212,7 @@ u8 dword_D_80037248[] = { // GLIST_RUN_TO_BOND_AND_FIRE: run to bond and fire
u8 dword_D_80037250[] = { // GLIST_DETECT_BOND_NO_CLONE_NO_IDLE_ANIM: wait for bond detection (no clones/no idling)
goto_loop_start(0x01) // wait for guard to stop moving before branching to next logic
if_guard_sees_bond(0x07)
if_guard_was_shot_within_last_10_secs(0x0D)
if_guard_was_shot_or_seen_bond_within_last_10_secs(0x0D)
if_guard_heard_bond_within_last_10_secs(0x0D)
if_guard_shot_from_bond_missed(0x0D)
if_guard_see_another_guard_shot(0x0D)
+79 -79
View File
@@ -2493,7 +2493,7 @@ glabel sub_GAME_7F041160
/* 075DCC 7F04129C 02202025 */ move $a0, $s1
/* 075DD0 7F0412A0 0FC1611D */ jal matrix_4x4_transform_vector_in_place
/* 075DD4 7F0412A4 E4A80008 */ swc1 $f8, 8($a1)
/* 075DD8 7F0412A8 0FC1E111 */ jal sub_GAME_7F078444
/* 075DD8 7F0412A8 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 075DDC 7F0412AC 00000000 */ nop
/* 075DE0 7F0412B0 00402025 */ move $a0, $v0
/* 075DE4 7F0412B4 0FC1611D */ jal matrix_4x4_transform_vector_in_place
@@ -2531,7 +2531,7 @@ glabel sub_GAME_7F041160
/* 075E64 7F041334 E60A0004 */ swc1 $f10, 4($s0)
/* 075E68 7F041338 E6120008 */ swc1 $f18, 8($s0)
.L7F04133C:
/* 075E6C 7F04133C 0FC1E111 */ jal sub_GAME_7F078444
/* 075E6C 7F04133C 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 075E70 7F041340 00000000 */ nop
/* 075E74 7F041344 00402025 */ move $a0, $v0
/* 075E78 7F041348 0FC160F6 */ jal matrix_4x4_rotate_vector_in_place
@@ -3401,7 +3401,7 @@ glabel sub_GAME_7F041E0C
/* 076A44 7F041F14 C6880004 */ lwc1 $f8, 4($s4)
/* 076A48 7F041F18 E7A8008C */ swc1 $f8, 0x8c($sp)
/* 076A4C 7F041F1C C68A0008 */ lwc1 $f10, 8($s4)
/* 076A50 7F041F20 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 076A50 7F041F20 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 076A54 7F041F24 E7AA0090 */ swc1 $f10, 0x90($sp)
/* 076A58 7F041F28 00402025 */ move $a0, $v0
/* 076A5C 7F041F2C 0FC1611D */ jal matrix_4x4_transform_vector_in_place
@@ -3411,7 +3411,7 @@ glabel sub_GAME_7F041E0C
/* 076A6C 7F041F3C C7B000A0 */ lwc1 $f16, 0xa0($sp)
/* 076A70 7F041F40 E7A6007C */ swc1 $f6, 0x7c($sp)
/* 076A74 7F041F44 E7B20080 */ swc1 $f18, 0x80($sp)
/* 076A78 7F041F48 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 076A78 7F041F48 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 076A7C 7F041F4C E7B00084 */ swc1 $f16, 0x84($sp)
/* 076A80 7F041F50 00402025 */ move $a0, $v0
/* 076A84 7F041F54 0FC160F6 */ jal matrix_4x4_rotate_vector_in_place
@@ -3513,9 +3513,9 @@ glabel sub_GAME_7F041E0C
/* 076BE8 7F0420B8 0FC26C57 */ jal sub_GAME_7F09B15C
/* 076BEC 7F0420BC 02002025 */ move $a0, $s0
/* 076BF0 7F0420C0 00025880 */ sll $t3, $v0, 2
/* 076BF4 7F0420C4 3C0C8008 */ lui $t4, %hi(ptr_BONDdata_p1)
/* 076BF4 7F0420C4 3C0C8008 */ lui $t4, %hi(players)
/* 076BF8 7F0420C8 018B6021 */ addu $t4, $t4, $t3
/* 076BFC 7F0420CC 8D8C9EE0 */ lw $t4, %lo(ptr_BONDdata_p1)($t4)
/* 076BFC 7F0420CC 8D8C9EE0 */ lw $t4, %lo(players)($t4)
/* 076C00 7F0420D0 324E0004 */ andi $t6, $s2, 4
/* 076C04 7F0420D4 8D8D00AC */ lw $t5, 0xac($t4)
/* 076C08 7F0420D8 51A00037 */ beql $t5, $zero, .L7F0421B8
@@ -3560,9 +3560,9 @@ glabel sub_GAME_7F041E0C
/* 076C94 7F042164 0FC26C57 */ jal sub_GAME_7F09B15C
/* 076C98 7F042168 02002025 */ move $a0, $s0
/* 076C9C 7F04216C 00025880 */ sll $t3, $v0, 2
/* 076CA0 7F042170 3C0C8008 */ lui $t4, %hi(ptr_BONDdata_p1)
/* 076CA0 7F042170 3C0C8008 */ lui $t4, %hi(players)
/* 076CA4 7F042174 018B6021 */ addu $t4, $t4, $t3
/* 076CA8 7F042178 8D8C9EE0 */ lw $t4, %lo(ptr_BONDdata_p1)($t4)
/* 076CA8 7F042178 8D8C9EE0 */ lw $t4, %lo(players)($t4)
/* 076CAC 7F04217C 02002025 */ move $a0, $s0
/* 076CB0 7F042180 02802825 */ move $a1, $s4
/* 076CB4 7F042184 8D8D00AC */ lw $t5, 0xac($t4)
@@ -4319,7 +4319,7 @@ glabel sub_GAME_7F042A0C
/* 077734 7F042C04 E440005C */ swc1 $f0, 0x5c($v0)
.L7F042C08:
/* 077738 7F042C08 27A40080 */ addiu $a0, $sp, 0x80
/* 07773C 7F042C0C 0FC2CA2C */ jal sub_GAME_7F0B28B0
/* 07773C 7F042C0C 0FC2CA2C */ jal getCollisionEdge_maybe
/* 077740 7F042C10 27A50074 */ addiu $a1, $sp, 0x74
/* 077744 7F042C14 C7A8007C */ lwc1 $f8, 0x7c($sp)
/* 077748 7F042C18 C7B00088 */ lwc1 $f16, 0x88($sp)
@@ -5479,7 +5479,7 @@ glabel sub_GAME_7F043A6C
/* 078624 7F043AF4 8E0C0014 */ lw $t4, 0x14($s0)
/* 078628 7F043AF8 8FAB00FC */ lw $t3, 0xfc($sp)
/* 07862C 7F043AFC AD8B001C */ sw $t3, 0x1c($t4)
/* 078630 7F043B00 0FC0E969 */ jal sub_GAME_7F03A5A4
/* 078630 7F043B00 0FC0E969 */ jal attachNewChild
/* 078634 7F043B04 8FA500F4 */ lw $a1, 0xf4($sp)
/* 078638 7F043B08 27B100AC */ addiu $s1, $sp, 0xac
/* 07863C 7F043B0C 02202825 */ move $a1, $s1
@@ -5488,7 +5488,7 @@ glabel sub_GAME_7F043A6C
/* 078648 7F043B18 26040058 */ addiu $a0, $s0, 0x58
/* 07864C 7F043B1C 0FC16266 */ jal matrix_4x4_set_position
/* 078650 7F043B20 02202825 */ move $a1, $s1
/* 078654 7F043B24 0FC1E111 */ jal sub_GAME_7F078444
/* 078654 7F043B24 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 078658 7F043B28 00000000 */ nop
/* 07865C 7F043B2C 00402025 */ move $a0, $v0
/* 078660 7F043B30 8FA50028 */ lw $a1, 0x28($sp)
@@ -5570,7 +5570,7 @@ glabel generate_explosion_at_position
/* 07873C 7F043C0C C4460034 */ lwc1 $f6, 0x34($v0)
/* 078740 7F043C10 E7A60048 */ swc1 $f6, 0x48($sp)
/* 078744 7F043C14 C4480038 */ lwc1 $f8, 0x38($v0)
/* 078748 7F043C18 0FC1E111 */ jal sub_GAME_7F078444
/* 078748 7F043C18 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 07874C 7F043C1C E7A8004C */ swc1 $f8, 0x4c($sp)
/* 078750 7F043C20 27B00044 */ addiu $s0, $sp, 0x44
/* 078754 7F043C24 02002825 */ move $a1, $s0
@@ -5710,7 +5710,7 @@ glabel generate_explosion_at_position
/* 078A7C 7F043F0C C4460034 */ lwc1 $f6, 0x34($v0)
/* 078A80 7F043F10 E7A60044 */ swc1 $f6, 0x44($sp)
/* 078A84 7F043F14 C4480038 */ lwc1 $f8, 0x38($v0)
/* 078A88 7F043F18 0FC1E28D */ jal sub_GAME_7F078444
/* 078A88 7F043F18 0FC1E28D */ jal currentPlayerGetMatrix10D4
/* 078A8C 7F043F1C E7A80048 */ swc1 $f8, 0x48($sp)
/* 078A90 7F043F20 27B00040 */ addiu $s0, $sp, 0x40
/* 078A94 7F043F24 02002825 */ move $a1, $s0
@@ -7055,13 +7055,13 @@ glabel sub_GAME_7F044718
/* 07930C 7F0447DC 46000507 */ neg.s $f20, $f0
/* 079310 7F0447E0 C62C0000 */ lwc1 $f12, ($s1)
.L7F0447E4:
/* 079314 7F0447E4 0FC2C5E5 */ jal sub_GAME_7F0B1794
/* 079314 7F0447E4 0FC2C5E5 */ jal distBetweenPoints2d
/* 079318 7F0447E8 C62E0004 */ lwc1 $f14, 4($s1)
/* 07931C 7F0447EC 4406B000 */ mfc1 $a2, $f22
/* 079320 7F0447F0 4407C000 */ mfc1 $a3, $f24
/* 079324 7F0447F4 46000686 */ mov.s $f26, $f0
/* 079328 7F0447F8 C60C0000 */ lwc1 $f12, ($s0)
/* 07932C 7F0447FC 0FC2C5E5 */ jal sub_GAME_7F0B1794
/* 07932C 7F0447FC 0FC2C5E5 */ jal distBetweenPoints2d
/* 079330 7F044800 C60E0004 */ lwc1 $f14, 4($s0)
/* 079334 7F044804 461CA03C */ c.lt.s $f20, $f28
/* 079338 7F044808 00000000 */ nop
@@ -7999,7 +7999,7 @@ glabel object_interaction
/* 079E34 7F045304 8E340014 */ lw $s4, 0x14($s1)
/* 079E38 7F045308 AFA00690 */ sw $zero, 0x690($sp)
/* 079E3C 7F04530C AFA00680 */ sw $zero, 0x680($sp)
/* 079E40 7F045310 0FC26919 */ jal get_num_players
/* 079E40 7F045310 0FC26919 */ jal getPlayerCount
/* 079E44 7F045314 E7B6067C */ swc1 $f22, 0x67c($sp)
/* 079E48 7F045318 240C0001 */ li $t4, 1
/* 079E4C 7F04531C AFA20674 */ sw $v0, 0x674($sp)
@@ -8578,7 +8578,7 @@ glabel object_interaction
/* 07A6C0 7F045B90 00409025 */ move $s2, $v0
/* 07A6C4 7F045B94 E7A605CC */ swc1 $f6, 0x5cc($sp)
/* 07A6C8 7F045B98 E7A805D0 */ swc1 $f8, 0x5d0($sp)
/* 07A6CC 7F045B9C 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 07A6CC 7F045B9C 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 07A6D0 7F045BA0 E7A405D4 */ swc1 $f4, 0x5d4($sp)
/* 07A6D4 7F045BA4 00402025 */ move $a0, $v0
/* 07A6D8 7F045BA8 0FC1611D */ jal matrix_4x4_transform_vector_in_place
@@ -8646,7 +8646,7 @@ glabel object_interaction
/* 07A7D0 7F045CA0 27A5058C */ addiu $a1, $sp, 0x58c
/* 07A7D4 7F045CA4 46045182 */ mul.s $f6, $f10, $f4
/* 07A7D8 7F045CA8 46064281 */ sub.s $f10, $f8, $f6
/* 07A7DC 7F045CAC 0FC16799 */ jal sub_GAME_7F059E64
/* 07A7DC 7F045CAC 0FC16799 */ jal matrix_4x4_7F059E64
/* 07A7E0 7F045CB0 E7AA05D4 */ swc1 $f10, 0x5d4($sp)
/* 07A7E4 7F045CB4 27A4058C */ addiu $a0, $sp, 0x58c
/* 07A7E8 7F045CB8 0FC1611D */ jal matrix_4x4_transform_vector_in_place
@@ -11399,7 +11399,7 @@ glabel object_interaction
/* 07CFB0 7F048480 00402825 */ move $a1, $v0
/* 07CFB4 7F048484 0FC149BB */ jal sub_GAME_7F0526EC
/* 07CFB8 7F048488 AFA4039C */ sw $a0, 0x39c($sp)
/* 07CFBC 7F04848C 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 07CFBC 7F04848C 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 07CFC0 7F048490 00000000 */ nop
/* 07CFC4 7F048494 00402025 */ move $a0, $v0
/* 07CFC8 7F048498 0FC16026 */ jal matrix_4x4_multiply_homogeneous_in_place
@@ -11579,7 +11579,7 @@ glabel object_interaction
/* 07D26C 7F04873C 8FA40070 */ lw $a0, 0x70($sp)
/* 07D270 7F048740 0FC16266 */ jal matrix_4x4_set_position
/* 07D274 7F048744 27A503A4 */ addiu $a1, $sp, 0x3a4
/* 07D278 7F048748 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 07D278 7F048748 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 07D27C 7F04874C 00000000 */ nop
/* 07D280 7F048750 00402025 */ move $a0, $v0
/* 07D284 7F048754 27A503A4 */ addiu $a1, $sp, 0x3a4
@@ -11628,7 +11628,7 @@ glabel object_interaction
/* 07D328 7F0487F8 02402025 */ move $a0, $s2
/* 07D32C 7F0487FC 0FC16266 */ jal matrix_4x4_set_position
/* 07D330 7F048800 8FA5006C */ lw $a1, 0x6c($sp)
/* 07D334 7F048804 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 07D334 7F048804 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 07D338 7F048808 00000000 */ nop
/* 07D33C 7F04880C 00402025 */ move $a0, $v0
/* 07D340 7F048810 0FC16026 */ jal matrix_4x4_multiply_homogeneous_in_place
@@ -11679,7 +11679,7 @@ glabel object_interaction
/* 07D3EC 7F0488BC 8D4E0014 */ lw $t6, 0x14($t2)
/* 07D3F0 7F0488C0 0FC1629F */ jal matrix_scalar_multiply
/* 07D3F4 7F0488C4 C5CC0014 */ lwc1 $f12, 0x14($t6)
/* 07D3F8 7F0488C8 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 07D3F8 7F0488C8 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 07D3FC 7F0488CC 00000000 */ nop
/* 07D400 7F0488D0 00402025 */ move $a0, $v0
/* 07D404 7F0488D4 0FC16026 */ jal matrix_4x4_multiply_homogeneous_in_place
@@ -12107,7 +12107,7 @@ glabel object_interaction
/* 07DA38 7F048F08 15EBFFF8 */ bne $t7, $t3, .L7F048EEC
/* 07DA3C 7F048F0C AD21FFFC */ sw $at, -4($t1)
/* 07DA40 7F048F10 8DE10000 */ lw $at, ($t7)
/* 07DA44 7F048F14 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 07DA44 7F048F14 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 07DA48 7F048F18 AD210000 */ sw $at, ($t1)
/* 07DA4C 7F048F1C AFA201B0 */ sw $v0, 0x1b0($sp)
/* 07DA50 7F048F20 AFB201C0 */ sw $s2, 0x1c0($sp)
@@ -12258,7 +12258,7 @@ glabel object_interaction
/* 07DC74 7F049144 8FA4006C */ lw $a0, 0x6c($sp)
/* 07DC78 7F049148 0FC16026 */ jal matrix_4x4_multiply_homogeneous_in_place
/* 07DC7C 7F04914C 8FA50068 */ lw $a1, 0x68($sp)
/* 07DC80 7F049150 0FC1E111 */ jal sub_GAME_7F078444
/* 07DC80 7F049150 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 07DC84 7F049154 00000000 */ nop
/* 07DC88 7F049158 27B0016C */ addiu $s0, $sp, 0x16c
/* 07DC8C 7F04915C 02003025 */ move $a2, $s0
@@ -12522,7 +12522,7 @@ glabel object_interaction
/* 07E04C 7F04951C C4660004 */ lwc1 $f6, 4($v1)
/* 07E050 7F049520 E7A60130 */ swc1 $f6, 0x130($sp)
/* 07E054 7F049524 C4680008 */ lwc1 $f8, 8($v1)
/* 07E058 7F049528 0FC1E111 */ jal sub_GAME_7F078444
/* 07E058 7F049528 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 07E05C 7F04952C E7A80134 */ swc1 $f8, 0x134($sp)
/* 07E060 7F049530 27B100B8 */ addiu $s1, $sp, 0xb8
/* 07E064 7F049534 02203025 */ move $a2, $s1
@@ -13092,7 +13092,7 @@ glabel object_interaction
/* 07A248 7F0456D8 8E340014 */ lw $s4, 0x14($s1)
/* 07A24C 7F0456DC AFA00698 */ sw $zero, 0x698($sp)
/* 07A250 7F0456E0 AFA00688 */ sw $zero, 0x688($sp)
/* 07A254 7F0456E4 0FC26C01 */ jal get_num_players
/* 07A254 7F0456E4 0FC26C01 */ jal getPlayerCount
/* 07A258 7F0456E8 E7B60684 */ swc1 $f22, 0x684($sp)
/* 07A25C 7F0456EC 240F0001 */ li $t7, 1
/* 07A260 7F0456F0 AFA2067C */ sw $v0, 0x67c($sp)
@@ -13675,7 +13675,7 @@ glabel object_interaction
/* 07AAE4 7F045F74 00409025 */ move $s2, $v0
/* 07AAE8 7F045F78 E7A605D4 */ swc1 $f6, 0x5d4($sp)
/* 07AAEC 7F045F7C E7A805D8 */ swc1 $f8, 0x5d8($sp)
/* 07AAF0 7F045F80 0FC1E26D */ jal get_BONDdata_field_10CC
/* 07AAF0 7F045F80 0FC1E26D */ jal currentPlayerGetMatrix10CC
/* 07AAF4 7F045F84 E7A405DC */ swc1 $f4, 0x5dc($sp)
/* 07AAF8 7F045F88 00402025 */ move $a0, $v0
/* 07AAFC 7F045F8C 0FC16265 */ jal matrix_4x4_transform_vector_in_place
@@ -13743,7 +13743,7 @@ glabel object_interaction
/* 07ABF4 7F046084 27A50594 */ addiu $a1, $sp, 0x594
/* 07ABF8 7F046088 46045182 */ mul.s $f6, $f10, $f4
/* 07ABFC 7F04608C 46064281 */ sub.s $f10, $f8, $f6
/* 07AC00 7F046090 0FC168E1 */ jal sub_GAME_7F059E64
/* 07AC00 7F046090 0FC168E1 */ jal matrix_4x4_7F059E64
/* 07AC04 7F046094 E7AA05DC */ swc1 $f10, 0x5dc($sp)
/* 07AC08 7F046098 27A40594 */ addiu $a0, $sp, 0x594
/* 07AC0C 7F04609C 0FC16265 */ jal matrix_4x4_transform_vector_in_place
@@ -16505,7 +16505,7 @@ glabel object_interaction
/* 07D3F4 7F048884 00402825 */ move $a1, $v0
/* 07D3F8 7F048888 0FC14AFA */ jal sub_GAME_7F0526EC
/* 07D3FC 7F04888C AFA403A0 */ sw $a0, 0x3a0($sp)
/* 07D400 7F048890 0FC1E26D */ jal get_BONDdata_field_10CC
/* 07D400 7F048890 0FC1E26D */ jal currentPlayerGetMatrix10CC
/* 07D404 7F048894 00000000 */ nop
/* 07D408 7F048898 00402025 */ move $a0, $v0
/* 07D40C 7F04889C 0FC1616E */ jal matrix_4x4_multiply_homogeneous_in_place
@@ -16685,7 +16685,7 @@ glabel object_interaction
/* 07D6B0 7F048B40 8FA40074 */ lw $a0, 0x74($sp)
/* 07D6B4 7F048B44 0FC163AE */ jal matrix_4x4_set_position
/* 07D6B8 7F048B48 27A503A8 */ addiu $a1, $sp, 0x3a8
/* 07D6BC 7F048B4C 0FC1E26D */ jal get_BONDdata_field_10CC
/* 07D6BC 7F048B4C 0FC1E26D */ jal currentPlayerGetMatrix10CC
/* 07D6C0 7F048B50 00000000 */ nop
/* 07D6C4 7F048B54 00402025 */ move $a0, $v0
/* 07D6C8 7F048B58 27A503A8 */ addiu $a1, $sp, 0x3a8
@@ -16734,7 +16734,7 @@ glabel object_interaction
/* 07D76C 7F048BFC 02402025 */ move $a0, $s2
/* 07D770 7F048C00 0FC163AE */ jal matrix_4x4_set_position
/* 07D774 7F048C04 8FA50070 */ lw $a1, 0x70($sp)
/* 07D778 7F048C08 0FC1E26D */ jal get_BONDdata_field_10CC
/* 07D778 7F048C08 0FC1E26D */ jal currentPlayerGetMatrix10CC
/* 07D77C 7F048C0C 00000000 */ nop
/* 07D780 7F048C10 00402025 */ move $a0, $v0
/* 07D784 7F048C14 0FC1616E */ jal matrix_4x4_multiply_homogeneous_in_place
@@ -16785,7 +16785,7 @@ glabel object_interaction
/* 07D830 7F048CC0 8F090014 */ lw $t1, 0x14($t8)
/* 07D834 7F048CC4 0FC163E7 */ jal matrix_scalar_multiply
/* 07D838 7F048CC8 C52C0014 */ lwc1 $f12, 0x14($t1)
/* 07D83C 7F048CCC 0FC1E26D */ jal get_BONDdata_field_10CC
/* 07D83C 7F048CCC 0FC1E26D */ jal currentPlayerGetMatrix10CC
/* 07D840 7F048CD0 00000000 */ nop
/* 07D844 7F048CD4 00402025 */ move $a0, $v0
/* 07D848 7F048CD8 0FC1616E */ jal matrix_4x4_multiply_homogeneous_in_place
@@ -17213,7 +17213,7 @@ glabel object_interaction
/* 07DE7C 7F04930C 158FFFF8 */ bne $t4, $t7, .Ljp7F0492F0
/* 07DE80 7F049310 ADA1FFFC */ sw $at, -4($t5)
/* 07DE84 7F049314 8D810000 */ lw $at, ($t4)
/* 07DE88 7F049318 0FC1E26D */ jal get_BONDdata_field_10CC
/* 07DE88 7F049318 0FC1E26D */ jal currentPlayerGetMatrix10CC
/* 07DE8C 7F04931C ADA10000 */ sw $at, ($t5)
/* 07DE90 7F049320 AFA201B4 */ sw $v0, 0x1b4($sp)
/* 07DE94 7F049324 AFB201C4 */ sw $s2, 0x1c4($sp)
@@ -17364,7 +17364,7 @@ glabel object_interaction
/* 07E0B8 7F049548 8FA40070 */ lw $a0, 0x70($sp)
/* 07E0BC 7F04954C 0FC1616E */ jal matrix_4x4_multiply_homogeneous_in_place
/* 07E0C0 7F049550 8FA5006C */ lw $a1, 0x6c($sp)
/* 07E0C4 7F049554 0FC1E28D */ jal sub_GAME_7F078444
/* 07E0C4 7F049554 0FC1E28D */ jal currentPlayerGetMatrix10D4
/* 07E0C8 7F049558 00000000 */ nop
/* 07E0CC 7F04955C 27B00170 */ addiu $s0, $sp, 0x170
/* 07E0D0 7F049560 02003025 */ move $a2, $s0
@@ -17628,7 +17628,7 @@ glabel object_interaction
/* 07E490 7F049920 C4660004 */ lwc1 $f6, 4($v1)
/* 07E494 7F049924 E7A60134 */ swc1 $f6, 0x134($sp)
/* 07E498 7F049928 C4680008 */ lwc1 $f8, 8($v1)
/* 07E49C 7F04992C 0FC1E28D */ jal sub_GAME_7F078444
/* 07E49C 7F04992C 0FC1E28D */ jal currentPlayerGetMatrix10D4
/* 07E4A0 7F049930 E7A80138 */ swc1 $f8, 0x138($sp)
/* 07E4A4 7F049934 27B100BC */ addiu $s1, $sp, 0xbc
/* 07E4A8 7F049938 02203025 */ move $a2, $s1
@@ -20656,7 +20656,7 @@ glabel sub_GAME_7F04AC20
/* 07FBD4 7F04B0A4 24E70008 */ addiu $a3, $a3, 8
/* 07FBD8 7F04B0A8 AC790000 */ sw $t9, ($v1)
/* 07FBDC 7F04B0AC AFA70064 */ sw $a3, 0x64($sp)
/* 07FBE0 7F04B0B0 0FC1E0DD */ jal get_BONDdata_field_10D8
/* 07FBE0 7F04B0B0 0FC1E0DD */ jal currentPlayerGetProjectionMatrix
/* 07FBE4 7F04B0B4 AFA3002C */ sw $v1, 0x2c($sp)
/* 07FBE8 7F04B0B8 8FA3002C */ lw $v1, 0x2c($sp)
/* 07FBEC 7F04B0BC 8FA70064 */ lw $a3, 0x64($sp)
@@ -21791,7 +21791,7 @@ glabel sub_GAME_7F04BCDC
/* 080A8C 7F04BF5C C4520004 */ lwc1 $f18, 4($v0)
/* 080A90 7F04BF60 E7B20048 */ swc1 $f18, 0x48($sp)
/* 080A94 7F04BF64 C4440008 */ lwc1 $f4, 8($v0)
/* 080A98 7F04BF68 0FC1E111 */ jal sub_GAME_7F078444
/* 080A98 7F04BF68 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 080A9C 7F04BF6C E7A4004C */ swc1 $f4, 0x4c($sp)
/* 080AA0 7F04BF70 00402025 */ move $a0, $v0
/* 080AA4 7F04BF74 0FC160F6 */ jal matrix_4x4_rotate_vector_in_place
@@ -22496,7 +22496,7 @@ glabel sub_GAME_7F04C130
/* 081374 7F04C844 8FA400F8 */ lw $a0, 0xf8($sp)
/* 081378 7F04C848 240E001F */ li $t6, 31
/* 08137C 7F04C84C AFA20058 */ sw $v0, 0x58($sp)
/* 081380 7F04C850 0FC1E111 */ jal sub_GAME_7F078444
/* 081380 7F04C850 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 081384 7F04C854 AFAE0054 */ sw $t6, 0x54($sp)
/* 081388 7F04C858 00402025 */ move $a0, $v0
/* 08138C 7F04C85C 8FA50058 */ lw $a1, 0x58($sp)
@@ -24256,7 +24256,7 @@ glabel sub_GAME_7F04DE18
/* 082988 7F04DE58 8D230004 */ lw $v1, 4($t1)
/* 08298C 7F04DE5C 0FC1B198 */ jal sub_GAME_7F06C660
/* 082990 7F04DE60 AFA30088 */ sw $v1, 0x88($sp)
/* 082994 7F04DE64 0FC1E111 */ jal sub_GAME_7F078444
/* 082994 7F04DE64 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 082998 7F04DE68 AFA20084 */ sw $v0, 0x84($sp)
/* 08299C 7F04DE6C 00402025 */ move $a0, $v0
/* 0829A0 7F04DE70 8FA50084 */ lw $a1, 0x84($sp)
@@ -24818,7 +24818,7 @@ glabel maybe_detonate_object
/* 08303C 7F04E50C AFA600C0 */ sw $a2, 0xc0($sp)
/* 083040 7F04E510 8FA600C0 */ lw $a2, 0xc0($sp)
/* 083044 7F04E514 8E050010 */ lw $a1, 0x10($s0)
/* 083048 7F04E518 0FC0E969 */ jal sub_GAME_7F03A5A4
/* 083048 7F04E518 0FC0E969 */ jal attachNewChild
/* 08304C 7F04E51C 8CC40010 */ lw $a0, 0x10($a2)
/* 083050 7F04E520 10000008 */ b .L7F04E544
/* 083054 7F04E524 92020003 */ lbu $v0, 3($s0)
@@ -25288,7 +25288,7 @@ glabel sub_GAME_7F04EA68
/* 083660 7F04EB30 AFA3005C */ sw $v1, 0x5c($sp)
/* 083664 7F04EB34 46080482 */ mul.s $f18, $f0, $f8
/* 083668 7F04EB38 46123281 */ sub.s $f10, $f6, $f18
/* 08366C 7F04EB3C 0FC1E111 */ jal sub_GAME_7F078444
/* 08366C 7F04EB3C 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 083670 7F04EB40 E7AA0068 */ swc1 $f10, 0x68($sp)
/* 083674 7F04EB44 00402025 */ move $a0, $v0
/* 083678 7F04EB48 0FC1611D */ jal matrix_4x4_transform_vector_in_place
@@ -26492,14 +26492,14 @@ void prepare_ammo_type_collection_text(u8 *finaltext, AMMOTYPES ammotype, u32 qu
if (j_text_trigger != 0)
{
apped_text_ammotype(finaltext,ammotype,quantity);
if (get_num_players() < 3)
if (getPlayerCount() < 3)
{
append_text_picked_up(finaltext, ammotype, quantity);
}
string_append_from_obseg_textbank(finaltext, (char *)D_800529D0);
return;
}
if (get_num_players() < 3)
if (getPlayerCount() < 3)
{
append_text_picked_up(finaltext, ammotype, quantity);
append_text_ammo_amount_word(finaltext, ammotype, quantity);
@@ -26527,7 +26527,7 @@ glabel prepare_ammo_type_collection_text
/* 08447C 7F04F94C 00C09025 */ move $s2, $a2
/* 084480 7F04F950 0FC13D03 */ jal apped_text_ammotype
/* 084484 7F04F954 00000000 */ nop
/* 084488 7F04F958 0FC26919 */ jal get_num_players
/* 084488 7F04F958 0FC26919 */ jal getPlayerCount
/* 08448C 7F04F95C 00000000 */ nop
/* 084490 7F04F960 28410003 */ slti $at, $v0, 3
/* 084494 7F04F964 10200004 */ beqz $at, .L7F04F978
@@ -26543,7 +26543,7 @@ glabel prepare_ammo_type_collection_text
/* 0844B8 7F04F988 10000016 */ b .L7F04F9E4
/* 0844BC 7F04F98C 8FBF0024 */ lw $ra, 0x24($sp)
.L7F04F990:
/* 0844C0 7F04F990 0FC26919 */ jal get_num_players
/* 0844C0 7F04F990 0FC26919 */ jal getPlayerCount
/* 0844C4 7F04F994 00000000 */ nop
/* 0844C8 7F04F998 28410003 */ slti $at, $v0, 3
/* 0844CC 7F04F99C 10200008 */ beqz $at, .L7F04F9C0
@@ -26791,7 +26791,7 @@ magazine_has_default_ammo_rounds:
/* 0847D4 7F04FCA4 28610002 */ slti $at, $v1, 2
/* 0847D8 7F04FCA8 5420000F */ bnezl $at, .L7F04FCE8
/* 0847DC 7F04FCAC 8FBF0014 */ lw $ra, 0x14($sp)
/* 0847E0 7F04FCB0 0FC26919 */ jal get_num_players
/* 0847E0 7F04FCB0 0FC26919 */ jal getPlayerCount
/* 0847E4 7F04FCB4 AFA3001C */ sw $v1, 0x1c($sp)
/* 0847E8 7F04FCB8 24010001 */ li $at, 1
/* 0847EC 7F04FCBC 14410009 */ bne $v0, $at, .L7F04FCE4
@@ -26895,7 +26895,7 @@ weapon_has_default_ammo:
/* 0848BC 7F04FD8C 28610002 */ slti $at, $v1, 2
/* 0848C0 7F04FD90 5420000F */ bnezl $at, .L7F04FDD0
/* 0848C4 7F04FD94 00601025 */ move $v0, $v1
/* 0848C8 7F04FD98 0FC26919 */ jal get_num_players
/* 0848C8 7F04FD98 0FC26919 */ jal getPlayerCount
/* 0848CC 7F04FD9C AFA30018 */ sw $v1, 0x18($sp)
/* 0848D0 7F04FDA0 24010001 */ li $at, 1
/* 0848D4 7F04FDA4 14410009 */ bne $v0, $at, .L7F04FDCC
@@ -26933,7 +26933,7 @@ void generate_language_specific_text_for_weapon(char *finalstring,ITEM_IDS itemt
morethan2players = false;
if (j_text_trigger == 0) {
numplayers = get_num_players();
numplayers = getPlayerCount();
if ((int)numplayers < 3) {
textfiletext = get_textptr_for_textID(0xa400);
textpointer_load_parse_something(finalstring,textfiletext);
@@ -26941,7 +26941,7 @@ void generate_language_specific_text_for_weapon(char *finalstring,ITEM_IDS itemt
}
else {
textpointer_load_parse_something(finalstring,"");
numplayers = get_num_players();
numplayers = getPlayerCount();
if (2 < (int)numplayers) {
morethan2players = true;
}
@@ -27194,7 +27194,7 @@ glabel generate_language_specific_text_for_weapon
/* 084934 7F04FE04 3C058005 */ lui $a1, %hi(D_80052A3C)
/* 084938 7F04FE08 0C0029DC */ jal textpointer_load_parse_something
/* 08493C 7F04FE0C 24A52A3C */ addiu $a1, %lo(D_80052A3C) # addiu $a1, $a1, 0x2a3c
/* 084940 7F04FE10 0FC26919 */ jal get_num_players
/* 084940 7F04FE10 0FC26919 */ jal getPlayerCount
/* 084944 7F04FE14 00000000 */ nop
/* 084948 7F04FE18 28410003 */ slti $at, $v0, 3
/* 08494C 7F04FE1C 1420000D */ bnez $at, .L7F04FE54
@@ -27202,7 +27202,7 @@ glabel generate_language_specific_text_for_weapon
/* 084954 7F04FE24 1000000B */ b .L7F04FE54
/* 084958 7F04FE28 AFAF0024 */ sw $t7, 0x24($sp)
.L7F04FE2C:
/* 08495C 7F04FE2C 0FC26919 */ jal get_num_players
/* 08495C 7F04FE2C 0FC26919 */ jal getPlayerCount
/* 084960 7F04FE30 00000000 */ nop
/* 084964 7F04FE34 28410003 */ slti $at, $v0, 3
/* 084968 7F04FE38 50200007 */ beql $at, $zero, .L7F04FE58
@@ -27652,7 +27652,7 @@ interact_ammobox_object:
/* 084E84 7F050354 96050082 */ lhu $a1, 0x82($s0)
/* 084E88 7F050358 AFA4004C */ sw $a0, 0x4c($sp)
/* 084E8C 7F05035C AFA30020 */ sw $v1, 0x20($sp)
/* 084E90 7F050360 0FC26919 */ jal get_num_players
/* 084E90 7F050360 0FC26919 */ jal getPlayerCount
/* 084E94 7F050364 AFA50050 */ sw $a1, 0x50($sp)
/* 084E98 7F050368 24010001 */ li $at, 1
/* 084E9C 7F05036C 8FA30020 */ lw $v1, 0x20($sp)
@@ -27830,7 +27830,7 @@ interact_bodyarmor_object:
/* 085110 7F0505E0 8FA4006C */ lw $a0, 0x6c($sp)
/* 085114 7F0505E4 1440000D */ bnez $v0, .L7F05061C
/* 085118 7F0505E8 00402025 */ move $a0, $v0
/* 08511C 7F0505EC 0FC26919 */ jal get_num_players
/* 08511C 7F0505EC 0FC26919 */ jal getPlayerCount
/* 085120 7F0505F0 00000000 */ nop
/* 085124 7F0505F4 28410003 */ slti $at, $v0, 3
/* 085128 7F0505F8 10200005 */ beqz $at, .L7F050610
@@ -28032,7 +28032,7 @@ interact_ammobox_object:
/* 084E84 7F050354 96050082 */ lhu $a1, 0x82($s0)
/* 084E88 7F050358 AFA4004C */ sw $a0, 0x4c($sp)
/* 084E8C 7F05035C AFA30020 */ sw $v1, 0x20($sp)
/* 084E90 7F050360 0FC26919 */ jal get_num_players
/* 084E90 7F050360 0FC26919 */ jal getPlayerCount
/* 084E94 7F050364 AFA50050 */ sw $a1, 0x50($sp)
/* 084E98 7F050368 24010001 */ li $at, 1
/* 084E9C 7F05036C 8FA30020 */ lw $v1, 0x20($sp)
@@ -28210,7 +28210,7 @@ interact_bodyarmor_object:
/* 085110 7F0505E0 8FA4006C */ lw $a0, 0x6c($sp)
/* 085114 7F0505E4 1440000D */ bnez $v0, .L7F05061C
/* 085118 7F0505E8 00402025 */ move $a0, $v0
/* 08511C 7F0505EC 0FC26919 */ jal get_num_players
/* 08511C 7F0505EC 0FC26919 */ jal getPlayerCount
/* 085120 7F0505F0 00000000 */ nop
/* 085124 7F0505F4 28410003 */ slti $at, $v0, 3
/* 085128 7F0505F8 10200005 */ beqz $at, .L7F050610
@@ -28566,7 +28566,7 @@ glabel object_collectability_routines
/* 0855A0 7F050A70 1000001A */ b .L7F050ADC
/* 0855A4 7F050A74 AFB9005C */ sw $t9, 0x5c($sp)
.L7F050A78:
/* 0855A8 7F050A78 0FC26919 */ jal get_num_players
/* 0855A8 7F050A78 0FC26919 */ jal getPlayerCount
/* 0855AC 7F050A7C 00000000 */ nop
/* 0855B0 7F050A80 28410002 */ slti $at, $v0, 2
/* 0855B4 7F050A84 54200016 */ bnezl $at, .L7F050AE0
@@ -29108,7 +29108,7 @@ glabel object_collectability_routines
/* 085AE4 7F050F74 10000019 */ b .Ljp7F050FDC
/* 085AE8 7F050F78 AFAF0064 */ sw $t7, 0x64($sp)
.Ljp7F050F7C:
/* 085AEC 7F050F7C 0FC26C01 */ jal get_num_players
/* 085AEC 7F050F7C 0FC26C01 */ jal getPlayerCount
/* 085AF0 7F050F80 00000000 */ nop
/* 085AF4 7F050F84 28410002 */ slti $at, $v0, 2
/* 085AF8 7F050F88 54200015 */ bnezl $at, .Ljp7F050FE0
@@ -29534,7 +29534,7 @@ glabel sub_GAME_7F050F50
/* 085B24 7F050FF4 8D090008 */ lw $t1, 8($t0)
/* 085B28 7F050FF8 8D2A0018 */ lw $t2, 0x18($t1)
/* 085B2C 7F050FFC AD6A001C */ sw $t2, 0x1c($t3)
/* 085B30 7F051000 0FC0E969 */ jal sub_GAME_7F03A5A4
/* 085B30 7F051000 0FC0E969 */ jal attachNewChild
/* 085B34 7F051004 8C450018 */ lw $a1, 0x18($v0)
/* 085B38 7F051008 8FAC0024 */ lw $t4, 0x24($sp)
/* 085B3C 7F05100C AD9101D8 */ sw $s1, 0x1d8($t4)
@@ -30883,7 +30883,7 @@ glabel sub_GAME_7F051E1C
/* 086A3C 7F051F0C 10000004 */ b .L7F051F20
/* 086A40 7F051F10 00001025 */ move $v0, $zero
.L7F051F14:
/* 086A44 7F051F14 0FC0E969 */ jal sub_GAME_7F03A5A4
/* 086A44 7F051F14 0FC0E969 */ jal attachNewChild
/* 086A48 7F051F18 8CE50018 */ lw $a1, 0x18($a3)
/* 086A4C 7F051F1C 24020001 */ li $v0, 1
.L7F051F20:
@@ -33004,11 +33004,11 @@ glabel sub_GAME_7F053894
/* 0883E0 7F0538B0 AFB20024 */ sw $s2, 0x24($sp)
/* 0883E4 7F0538B4 AFB0001C */ sw $s0, 0x1c($sp)
/* 0883E8 7F0538B8 AFA50034 */ sw $a1, 0x34($sp)
/* 0883EC 7F0538BC 0FC26919 */ jal get_num_players
/* 0883EC 7F0538BC 0FC26919 */ jal getPlayerCount
/* 0883F0 7F0538C0 C7B40038 */ lwc1 $f20, 0x38($sp)
/* 0883F4 7F0538C4 1840001D */ blez $v0, .L7F05393C
/* 0883F8 7F0538C8 3C0E8008 */ lui $t6, %hi(ptr_BONDdata_p1)
/* 0883FC 7F0538CC 25D09EE0 */ addiu $s0, $t6, %lo(ptr_BONDdata_p1)
/* 0883F8 7F0538C8 3C0E8008 */ lui $t6, %hi(players)
/* 0883FC 7F0538CC 25D09EE0 */ addiu $s0, $t6, %lo(players)
/* 088400 7F0538D0 00027880 */ sll $t7, $v0, 2
/* 088404 7F0538D4 01F09021 */ addu $s2, $t7, $s0
/* 088408 7F0538D8 8E180000 */ lw $t8, ($s0)
@@ -34777,7 +34777,7 @@ glabel sub_GAME_7F054C58
/* 0897A8 7F054C78 8FBF0014 */ lw $ra, 0x14($sp)
/* 0897AC 7F054C7C 0FC227F5 */ jal get_BONDdata_position
/* 0897B0 7F054C80 AFA20030 */ sw $v0, 0x30($sp)
/* 0897B4 7F054C84 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 0897B4 7F054C84 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 0897B8 7F054C88 AFA2001C */ sw $v0, 0x1c($sp)
/* 0897BC 7F054C8C 8FA3001C */ lw $v1, 0x1c($sp)
/* 0897C0 7F054C90 8FA50038 */ lw $a1, 0x38($sp)
@@ -36718,11 +36718,11 @@ glabel sub_GAME_7F056210
/* 08AE3C 7F05630C AFA8003C */ sw $t0, 0x3c($sp)
/* 08AE40 7F056310 0FC2B366 */ jal microcode_constructor
/* 08AE44 7F056314 02202025 */ move $a0, $s1
/* 08AE48 7F056318 0C001149 */ jal get_video2_settings_uly
/* 08AE48 7F056318 0C001149 */ jal viGetViewTop
/* 08AE4C 7F05631C 00408825 */ move $s1, $v0
/* 08AE50 7F056320 00028400 */ sll $s0, $v0, 0x10
/* 08AE54 7F056324 00105403 */ sra $t2, $s0, 0x10
/* 08AE58 7F056328 0C00112B */ jal get_video2_settings_height
/* 08AE58 7F056328 0C00112B */ jal viGetViewHeight
/* 08AE5C 7F05632C 01408025 */ move $s0, $t2
/* 08AE60 7F056330 8FA50044 */ lw $a1, 0x44($sp)
/* 08AE64 7F056334 24010064 */ li $at, 100
@@ -36742,11 +36742,11 @@ glabel sub_GAME_7F056210
/* 08AE9C 7F05636C 24060082 */ li $a2, 130
/* 08AEA0 7F056370 0FC1A723 */ jal display_ammo_total_in_a1
/* 08AEA4 7F056374 24070002 */ li $a3, 2
/* 08AEA8 7F056378 0C001149 */ jal get_video2_settings_uly
/* 08AEA8 7F056378 0C001149 */ jal viGetViewTop
/* 08AEAC 7F05637C 00408825 */ move $s1, $v0
/* 08AEB0 7F056380 00028400 */ sll $s0, $v0, 0x10
/* 08AEB4 7F056384 0010C403 */ sra $t8, $s0, 0x10
/* 08AEB8 7F056388 0C00112B */ jal get_video2_settings_height
/* 08AEB8 7F056388 0C00112B */ jal viGetViewHeight
/* 08AEBC 7F05638C 03008025 */ move $s0, $t8
/* 08AEC0 7F056390 8FA50044 */ lw $a1, 0x44($sp)
/* 08AEC4 7F056394 2401000A */ li $at, 10
@@ -36763,11 +36763,11 @@ glabel sub_GAME_7F056210
/* 08AEF0 7F0563C0 2406008A */ li $a2, 138
/* 08AEF4 7F0563C4 0FC1A723 */ jal display_ammo_total_in_a1
/* 08AEF8 7F0563C8 24070002 */ li $a3, 2
/* 08AEFC 7F0563CC 0C001149 */ jal get_video2_settings_uly
/* 08AEFC 7F0563CC 0C001149 */ jal viGetViewTop
/* 08AF00 7F0563D0 00408825 */ move $s1, $v0
/* 08AF04 7F0563D4 00028400 */ sll $s0, $v0, 0x10
/* 08AF08 7F0563D8 00107403 */ sra $t6, $s0, 0x10
/* 08AF0C 7F0563DC 0C00112B */ jal get_video2_settings_height
/* 08AF0C 7F0563DC 0C00112B */ jal viGetViewHeight
/* 08AF10 7F0563E0 01C08025 */ move $s0, $t6
/* 08AF14 7F0563E4 00506821 */ addu $t5, $v0, $s0
/* 08AF18 7F0563E8 25AFFFEE */ addiu $t7, $t5, -0x12
@@ -36782,11 +36782,11 @@ glabel sub_GAME_7F056210
/* 08AF3C 7F05640C 24060093 */ li $a2, 147
/* 08AF40 7F056410 0FC1A694 */ jal some_kind_of_display_routine
/* 08AF44 7F056414 24070002 */ li $a3, 2
/* 08AF48 7F056418 0C001149 */ jal get_video2_settings_uly
/* 08AF48 7F056418 0C001149 */ jal viGetViewTop
/* 08AF4C 7F05641C 00408825 */ move $s1, $v0
/* 08AF50 7F056420 00028400 */ sll $s0, $v0, 0x10
/* 08AF54 7F056424 00104C03 */ sra $t1, $s0, 0x10
/* 08AF58 7F056428 0C00112B */ jal get_video2_settings_height
/* 08AF58 7F056428 0C00112B */ jal viGetViewHeight
/* 08AF5C 7F05642C 01208025 */ move $s0, $t1
/* 08AF60 7F056430 8FA50040 */ lw $a1, 0x40($sp)
/* 08AF64 7F056434 2401003C */ li $at, 60
@@ -36806,11 +36806,11 @@ glabel sub_GAME_7F056210
/* 08AF9C 7F05646C 2406009C */ li $a2, 156
/* 08AFA0 7F056470 0FC1A723 */ jal display_ammo_total_in_a1
/* 08AFA4 7F056474 24070002 */ li $a3, 2
/* 08AFA8 7F056478 0C001149 */ jal get_video2_settings_uly
/* 08AFA8 7F056478 0C001149 */ jal viGetViewTop
/* 08AFAC 7F05647C 00408825 */ move $s1, $v0
/* 08AFB0 7F056480 00028400 */ sll $s0, $v0, 0x10
/* 08AFB4 7F056484 00107C03 */ sra $t7, $s0, 0x10
/* 08AFB8 7F056488 0C00112B */ jal get_video2_settings_height
/* 08AFB8 7F056488 0C00112B */ jal viGetViewHeight
/* 08AFBC 7F05648C 01E08025 */ move $s0, $t7
/* 08AFC0 7F056490 8FA50040 */ lw $a1, 0x40($sp)
/* 08AFC4 7F056494 2401000A */ li $at, 10
@@ -36827,11 +36827,11 @@ glabel sub_GAME_7F056210
/* 08AFF0 7F0564C0 240600A4 */ li $a2, 164
/* 08AFF4 7F0564C4 0FC1A723 */ jal display_ammo_total_in_a1
/* 08AFF8 7F0564C8 24070002 */ li $a3, 2
/* 08AFFC 7F0564CC 0C001149 */ jal get_video2_settings_uly
/* 08AFFC 7F0564CC 0C001149 */ jal viGetViewTop
/* 08B000 7F0564D0 00408825 */ move $s1, $v0
/* 08B004 7F0564D4 00028400 */ sll $s0, $v0, 0x10
/* 08B008 7F0564D8 00105C03 */ sra $t3, $s0, 0x10
/* 08B00C 7F0564DC 0C00112B */ jal get_video2_settings_height
/* 08B00C 7F0564DC 0C00112B */ jal viGetViewHeight
/* 08B010 7F0564E0 01608025 */ move $s0, $t3
/* 08B014 7F0564E4 00506021 */ addu $t4, $v0, $s0
/* 08B018 7F0564E8 258EFFEE */ addiu $t6, $t4, -0x12
@@ -36846,11 +36846,11 @@ glabel sub_GAME_7F056210
/* 08B03C 7F05650C 240600AD */ li $a2, 173
/* 08B040 7F056510 0FC1A694 */ jal some_kind_of_display_routine
/* 08B044 7F056514 24070002 */ li $a3, 2
/* 08B048 7F056518 0C001149 */ jal get_video2_settings_uly
/* 08B048 7F056518 0C001149 */ jal viGetViewTop
/* 08B04C 7F05651C 00408825 */ move $s1, $v0
/* 08B050 7F056520 00028400 */ sll $s0, $v0, 0x10
/* 08B054 7F056524 0010CC03 */ sra $t9, $s0, 0x10
/* 08B058 7F056528 0C00112B */ jal get_video2_settings_height
/* 08B058 7F056528 0C00112B */ jal viGetViewHeight
/* 08B05C 7F05652C 03208025 */ move $s0, $t9
/* 08B060 7F056530 8FA5003C */ lw $a1, 0x3c($sp)
/* 08B064 7F056534 24010064 */ li $at, 100
@@ -36870,11 +36870,11 @@ glabel sub_GAME_7F056210
/* 08B09C 7F05656C 240600B6 */ li $a2, 182
/* 08B0A0 7F056570 0FC1A723 */ jal display_ammo_total_in_a1
/* 08B0A4 7F056574 24070002 */ li $a3, 2
/* 08B0A8 7F056578 0C001149 */ jal get_video2_settings_uly
/* 08B0A8 7F056578 0C001149 */ jal viGetViewTop
/* 08B0AC 7F05657C 00408825 */ move $s1, $v0
/* 08B0B0 7F056580 00028400 */ sll $s0, $v0, 0x10
/* 08B0B4 7F056584 00107403 */ sra $t6, $s0, 0x10
/* 08B0B8 7F056588 0C00112B */ jal get_video2_settings_height
/* 08B0B8 7F056588 0C00112B */ jal viGetViewHeight
/* 08B0BC 7F05658C 01C08025 */ move $s0, $t6
/* 08B0C0 7F056590 8FA5003C */ lw $a1, 0x3c($sp)
/* 08B0C4 7F056594 2401000A */ li $at, 10
+4 -4
View File
@@ -760,7 +760,7 @@ debug_collisions:
/* 0C540C 7F0908DC 10000166 */ b .L7F090E78
/* 0C5410 7F0908E0 8FB80018 */ lw $t8, 0x18($sp)
debug_allguns:
/* 0C5414 7F0908E4 0FC26919 */ jal get_num_players
/* 0C5414 7F0908E4 0FC26919 */ jal getPlayerCount
/* 0C5418 7F0908E8 AFA0005C */ sw $zero, 0x5c($sp)
/* 0C541C 7F0908EC 58400162 */ blezl $v0, .L7F090E78
/* 0C5420 7F0908F0 8FB80018 */ lw $t8, 0x18($sp)
@@ -773,7 +773,7 @@ debug_allguns:
/* 0C5438 7F090908 2C440001 */ sltiu $a0, $v0, 1
/* 0C543C 7F09090C 8FAA005C */ lw $t2, 0x5c($sp)
/* 0C5440 7F090910 254B0001 */ addiu $t3, $t2, 1
/* 0C5444 7F090914 0FC26919 */ jal get_num_players
/* 0C5444 7F090914 0FC26919 */ jal getPlayerCount
/* 0C5448 7F090918 AFAB005C */ sw $t3, 0x5c($sp)
/* 0C544C 7F09091C 8FAC005C */ lw $t4, 0x5c($sp)
/* 0C5450 7F090920 0182082A */ slt $at, $t4, $v0
@@ -785,7 +785,7 @@ debug_maxammo:
/* 0C5464 7F090934 0FC26C54 */ jal get_cur_playernum
/* 0C5468 7F090938 00000000 */ nop
/* 0C546C 7F09093C AFA20054 */ sw $v0, 0x54($sp)
/* 0C5470 7F090940 0FC26919 */ jal get_num_players
/* 0C5470 7F090940 0FC26919 */ jal getPlayerCount
/* 0C5474 7F090944 AFA00058 */ sw $zero, 0x58($sp)
/* 0C5478 7F090948 1840000D */ blez $v0, .L7F090980
/* 0C547C 7F09094C 00000000 */ nop
@@ -796,7 +796,7 @@ debug_maxammo:
/* 0C548C 7F09095C 00000000 */ nop
/* 0C5490 7F090960 8FAD0058 */ lw $t5, 0x58($sp)
/* 0C5494 7F090964 25AE0001 */ addiu $t6, $t5, 1
/* 0C5498 7F090968 0FC26919 */ jal get_num_players
/* 0C5498 7F090968 0FC26919 */ jal getPlayerCount
/* 0C549C 7F09096C AFAE0058 */ sw $t6, 0x58($sp)
/* 0C54A0 7F090970 8FAF0058 */ lw $t7, 0x58($sp)
/* 0C54A4 7F090974 01E2082A */ slt $at, $t7, $v0
+15 -15
View File
@@ -52,20 +52,20 @@ void set_vtx_gfx_mem_alloc(void) {
if (check_token(1, "-mgfx") != 0)
{
dyn_c_debug_notice_list_entry[get_num_players()] = strtol(check_token(1, "-mgfx"), 0, 0) << 0xa;
dyn_c_debug_notice_list_entry[getPlayerCount()] = strtol(check_token(1, "-mgfx"), 0, 0) << 0xa;
}
if (check_token(1, "-mvtx") != 0)
{
D_800482F0[get_num_players()] = strtol(check_token(1, "-mvtx"), 0, 0) << 0xa;
D_800482F0[getPlayerCount()] = strtol(check_token(1, "-mvtx"), 0, 0) << 0xa;
}
mempAllocBytesInBank(dyn_c_debug_notice_list_entry[sVar1] << 1, 4);
ptr_mgfx0_alloc_start.unk4 = (s32) ((0x80050000 + (get_num_players() * 4))->unk-7D20 + ptr_mgfx0_alloc_start);
ptr_mgfx0_alloc_start.unk8 = (s32) ((0x80050000 + (get_num_players() * 4))->unk-7D20 + ptr_mgfx0_alloc_start.unk4);
ptr_mvtx0_alloc_start = mempAllocBytesInBank(((0x80050000 + (get_num_players() * 4))->unk-7D10 * 2), 4);
ptr_mvtx0_alloc_start.unk4 = (s32) ((0x80050000 + (get_num_players() * 4))->unk-7D10 + ptr_mvtx0_alloc_start);
temp_ret = get_num_players();
ptr_mgfx0_alloc_start.unk4 = (s32) ((0x80050000 + (getPlayerCount() * 4))->unk-7D20 + ptr_mgfx0_alloc_start);
ptr_mgfx0_alloc_start.unk8 = (s32) ((0x80050000 + (getPlayerCount() * 4))->unk-7D20 + ptr_mgfx0_alloc_start.unk4);
ptr_mvtx0_alloc_start = mempAllocBytesInBank(((0x80050000 + (getPlayerCount() * 4))->unk-7D10 * 2), 4);
ptr_mvtx0_alloc_start.unk4 = (s32) ((0x80050000 + (getPlayerCount() * 4))->unk-7D10 + ptr_mvtx0_alloc_start);
temp_ret = getPlayerCount();
ptr_mvtx0_alloc_start.unk8 = (s32) ((0x80050000 + (temp_ret * 4))->unk-7D10 + ptr_mvtx0_alloc_start.unk4);
bank_in_mgfx_alloc_table = (u8)0;
dword_CODE_bss_8008C254 = 0;
@@ -105,7 +105,7 @@ glabel set_vtx_gfx_mem_alloc
/* 0F1FD0 7F0BD4A0 24040001 */ li $a0, 1
/* 0F1FD4 7F0BD4A4 10400012 */ beqz $v0, .L7F0BD4F0
/* 0F1FD8 7F0BD4A8 00000000 */ nop
/* 0F1FDC 7F0BD4AC 0FC26919 */ jal get_num_players
/* 0F1FDC 7F0BD4AC 0FC26919 */ jal getPlayerCount
/* 0F1FE0 7F0BD4B0 00000000 */ nop
/* 0F1FE4 7F0BD4B4 3C058006 */ lui $a1, %hi(aMgfx_1)
/* 0F1FE8 7F0BD4B8 24A5B694 */ addiu $a1, %lo(aMgfx_1) # addiu $a1, $a1, -0x496c
@@ -129,7 +129,7 @@ glabel set_vtx_gfx_mem_alloc
/* 0F202C 7F0BD4FC 24040001 */ li $a0, 1
/* 0F2030 7F0BD500 10400012 */ beqz $v0, .L7F0BD54C
/* 0F2034 7F0BD504 00000000 */ nop
/* 0F2038 7F0BD508 0FC26919 */ jal get_num_players
/* 0F2038 7F0BD508 0FC26919 */ jal getPlayerCount
/* 0F203C 7F0BD50C 00000000 */ nop
/* 0F2040 7F0BD510 3C058006 */ lui $a1, %hi(aMvtx_0)
/* 0F2044 7F0BD514 24A5B6A4 */ addiu $a1, %lo(aMvtx_0) # addiu $a1, $a1, -0x495c
@@ -147,7 +147,7 @@ glabel set_vtx_gfx_mem_alloc
/* 0F2074 7F0BD544 00290821 */ addu $at, $at, $t1
/* 0F2078 7F0BD548 AC3982F0 */ sw $t9, %lo(D_800482F0)($at)
.L7F0BD54C:
/* 0F207C 7F0BD54C 0FC26919 */ jal get_num_players
/* 0F207C 7F0BD54C 0FC26919 */ jal getPlayerCount
/* 0F2080 7F0BD550 00000000 */ nop
/* 0F2084 7F0BD554 00025080 */ sll $t2, $v0, 2
/* 0F2088 7F0BD558 3C048005 */ lui $a0, %hi(D_800482E0)
@@ -158,7 +158,7 @@ glabel set_vtx_gfx_mem_alloc
/* 0F209C 7F0BD56C 0C0025C8 */ jal mempAllocBytesInBank
/* 0F20A0 7F0BD570 01602025 */ move $a0, $t3
/* 0F20A4 7F0BD574 3C018009 */ lui $at, %hi(ptr_mgfx0_alloc_start)
/* 0F20A8 7F0BD578 0FC26919 */ jal get_num_players
/* 0F20A8 7F0BD578 0FC26919 */ jal getPlayerCount
/* 0F20AC 7F0BD57C AC22C230 */ sw $v0, %lo(ptr_mgfx0_alloc_start)($at)
/* 0F20B0 7F0BD580 3C038009 */ lui $v1, %hi(ptr_mgfx0_alloc_start)
/* 0F20B4 7F0BD584 00026080 */ sll $t4, $v0, 2
@@ -168,7 +168,7 @@ glabel set_vtx_gfx_mem_alloc
/* 0F20C4 7F0BD594 8C6F0000 */ lw $t7, ($v1)
/* 0F20C8 7F0BD598 8DAD82E0 */ lw $t5, %lo(D_800482E0)($t5)
/* 0F20CC 7F0BD59C 01AF7021 */ addu $t6, $t5, $t7
/* 0F20D0 7F0BD5A0 0FC26919 */ jal get_num_players
/* 0F20D0 7F0BD5A0 0FC26919 */ jal getPlayerCount
/* 0F20D4 7F0BD5A4 AC6E0004 */ sw $t6, 4($v1)
/* 0F20D8 7F0BD5A8 3C038009 */ lui $v1, %hi(ptr_mgfx0_alloc_start)
/* 0F20DC 7F0BD5AC 0002C080 */ sll $t8, $v0, 2
@@ -178,7 +178,7 @@ glabel set_vtx_gfx_mem_alloc
/* 0F20EC 7F0BD5BC 8C790004 */ lw $t9, 4($v1)
/* 0F20F0 7F0BD5C0 8D0882E0 */ lw $t0, %lo(D_800482E0)($t0)
/* 0F20F4 7F0BD5C4 01194821 */ addu $t1, $t0, $t9
/* 0F20F8 7F0BD5C8 0FC26919 */ jal get_num_players
/* 0F20F8 7F0BD5C8 0FC26919 */ jal getPlayerCount
/* 0F20FC 7F0BD5CC AC690008 */ sw $t1, 8($v1)
/* 0F2100 7F0BD5D0 00025080 */ sll $t2, $v0, 2
/* 0F2104 7F0BD5D4 3C048005 */ lui $a0, %hi(D_800482F0)
@@ -190,7 +190,7 @@ glabel set_vtx_gfx_mem_alloc
/* 0F211C 7F0BD5EC 01602025 */ move $a0, $t3
/* 0F2120 7F0BD5F0 3C038009 */ lui $v1, %hi(ptr_mvtx0_alloc_start)
/* 0F2124 7F0BD5F4 2463C240 */ addiu $v1, %lo(ptr_mvtx0_alloc_start) # addiu $v1, $v1, -0x3dc0
/* 0F2128 7F0BD5F8 0FC26919 */ jal get_num_players
/* 0F2128 7F0BD5F8 0FC26919 */ jal getPlayerCount
/* 0F212C 7F0BD5FC AC620000 */ sw $v0, ($v1)
/* 0F2130 7F0BD600 3C038009 */ lui $v1, %hi(ptr_mvtx0_alloc_start)
/* 0F2134 7F0BD604 00026080 */ sll $t4, $v0, 2
@@ -200,7 +200,7 @@ glabel set_vtx_gfx_mem_alloc
/* 0F2144 7F0BD614 8C6F0000 */ lw $t7, ($v1)
/* 0F2148 7F0BD618 8DAD82F0 */ lw $t5, %lo(D_800482F0)($t5)
/* 0F214C 7F0BD61C 01AF7021 */ addu $t6, $t5, $t7
/* 0F2150 7F0BD620 0FC26919 */ jal get_num_players
/* 0F2150 7F0BD620 0FC26919 */ jal getPlayerCount
/* 0F2154 7F0BD624 AC6E0004 */ sw $t6, 4($v1)
/* 0F2158 7F0BD628 3C038009 */ lui $v1, %hi(ptr_mvtx0_alloc_start)
/* 0F215C 7F0BD62C 0002C080 */ sll $t8, $v0, 2
+2 -2
View File
@@ -476,7 +476,7 @@ glabel load_enviroment
/* 0EF598 7F0BAA68 AFBF0014 */ sw $ra, 0x14($sp)
/* 0EF59C 7F0BAA6C AFA5002C */ sw $a1, 0x2c($sp)
/* 0EF5A0 7F0BAA70 AFA0001C */ sw $zero, 0x1c($sp)
/* 0EF5A4 7F0BAA74 0FC26919 */ jal get_num_players
/* 0EF5A4 7F0BAA74 0FC26919 */ jal getPlayerCount
/* 0EF5A8 7F0BAA78 AFA40028 */ sw $a0, 0x28($sp)
/* 0EF5AC 7F0BAA7C 24010001 */ li $at, 1
/* 0EF5B0 7F0BAA80 8FA6001C */ lw $a2, 0x1c($sp)
@@ -1126,7 +1126,7 @@ glabel sub_GAME_7F0BB2C8
.L7F0BB2E8:
/* 0EFE18 7F0BB2E8 0FC227F5 */ jal get_BONDdata_position
/* 0EFE1C 7F0BB2EC AFA40030 */ sw $a0, 0x30($sp)
/* 0EFE20 7F0BB2F0 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 0EFE20 7F0BB2F0 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 0EFE24 7F0BB2F4 AFA2001C */ sw $v0, 0x1c($sp)
/* 0EFE28 7F0BB2F8 8FA3001C */ lw $v1, 0x1c($sp)
/* 0EFE2C 7F0BB2FC 8FA40030 */ lw $a0, 0x30($sp)
+42 -117
View File
@@ -111,34 +111,23 @@ f32 get_007_accuracy_mod(void)
#ifdef NONMATCHING
void end_of_mission_briefing(void)
{
short sVar1;
int iVar3;
save_file *folder;
ulonglong uVar2;
if (((-1 < briefingpage) && (selected_difficulty != DIFFICULTY_007)) && (append_cheat_sp == FALSE)
) {
sVar1 = (&solo_target_times_ARRAY_8002b564
[mission_folder_setup_entries[briefingpage].mission_num].agent_time)
[selected_difficulty];
if (((-1 < briefingpage) && (selected_difficulty != DIFFICULTY_007)) && (append_cheat_sp == FALSE))
{
unlock_stage_in_folder_on_difficulty(selected_folder_num, mission_folder_setup_entries[briefingpage].mission_num, selected_difficulty, get_mission_timer() / 0x3c);
unlock_stage_in_folder_on_difficulty
(selected_folder_num,(longlong)mission_folder_setup_entries[briefingpage].mission_num,
(longlong)selected_difficulty,getMissiontime() / 0x3c);
if ((longlong)(getMissiontime() / 0x3c) <= (longlong)sVar1) {
folder = getEEPROMforFoldernum(selected_folder_num);
if (check_if_cheat_unlocked(folder,(longlong)mission_folder_setup_entries[briefingpage].mission_num) == 0) {
proc_7F01E760(selected_folder_num,(longlong)mission_folder_setup_entries[briefingpage].mission_num);
newcheatunlocked = 1;
return;
}
if ((get_mission_timer() / 0x3c) <= (&solo_target_time_array[mission_folder_setup_entries[briefingpage].mission_num].agent_time)[selected_difficulty])
{
if (check_if_cheat_unlocked(get_save_folder_ptr(selected_folder_num), mission_folder_setup_entries[briefingpage].mission_num) == 0)
{
sub_GAME_7F01E760(selected_folder_num, mission_folder_setup_entries[briefingpage].mission_num);
newcheatunlocked = 1;
return;
}
}
newcheatunlocked = 0;
}
newcheatunlocked = 0;
}
return;
return;
}
#else
@@ -363,115 +352,51 @@ void set_selected_folder_num(u32 foldernum)
selected_folder_num = foldernum;
}
#ifdef NONMATCHING
void set_selected_difficulty(DIFFICULTY difficulty)
{
if (difficulty != DIFFICULTY_AGENT)
{
if (difficulty == DIFFICULTY_SECRET)
switch(difficulty)
{
selected_difficulty = DIFFICULTY_SECRET;
return;
case DIFFICULTY_AGENT:
default:
selected_difficulty = DIFFICULTY_AGENT;
return;
case DIFFICULTY_SECRET:
selected_difficulty = DIFFICULTY_SECRET;
return;
case DIFFICULTY_00:
selected_difficulty = DIFFICULTY_00;
return;
case DIFFICULTY_007:
selected_difficulty = DIFFICULTY_007;
return;
}
if (difficulty == DIFFICULTY_00)
{
selected_difficulty = DIFFICULTY_00;
return;
}
if (difficulty == DIFFICULTY_007)
{
selected_difficulty = DIFFICULTY_007;
return;
}
}
else
{
selected_difficulty = DIFFICULTY_AGENT;
}
}
#else
GLOBAL_ASM(
.text
glabel set_selected_difficulty
/* 0520CC 7F01D59C 10800009 */ beqz $a0, .L7F01D5C4
/* 0520D0 7F01D5A0 24020001 */ li $v0, 1
/* 0520D4 7F01D5A4 1082000A */ beq $a0, $v0, .L7F01D5D0
/* 0520D8 7F01D5A8 3C018003 */ lui $at, %hi(selected_difficulty)
/* 0520DC 7F01D5AC 24020002 */ li $v0, 2
/* 0520E0 7F01D5B0 10820009 */ beq $a0, $v0, .L7F01D5D8
/* 0520E4 7F01D5B4 3C018003 */ lui $at, %hi(selected_difficulty)
/* 0520E8 7F01D5B8 24020003 */ li $v0, 3
/* 0520EC 7F01D5BC 10820008 */ beq $a0, $v0, .L7F01D5E0
/* 0520F0 7F01D5C0 3C018003 */ lui $at, %hi(selected_difficulty)
.L7F01D5C4:
/* 0520F4 7F01D5C4 3C018003 */ lui $at, %hi(selected_difficulty)
/* 0520F8 7F01D5C8 03E00008 */ jr $ra
/* 0520FC 7F01D5CC AC20A8FC */ sw $zero, %lo(selected_difficulty)($at)
.L7F01D5D0:
/* 052100 7F01D5D0 03E00008 */ jr $ra
/* 052104 7F01D5D4 AC22A8FC */ sw $v0, %lo(selected_difficulty)($at)
.L7F01D5D8:
/* 052108 7F01D5D8 03E00008 */ jr $ra
/* 05210C 7F01D5DC AC22A8FC */ sw $v0, %lo(selected_difficulty)($at)
.L7F01D5E0:
/* 052110 7F01D5E0 AC22A8FC */ sw $v0, %lo(selected_difficulty)($at)
/* 052114 7F01D5E4 03E00008 */ jr $ra
/* 052118 7F01D5E8 00000000 */ nop
)
#endif
void set_solo_and_ptr_briefing(LEVELID stage)
{
gamemode = GAMEMODE_SOLO;
selected_stage = stage;
briefingpage = pull_and_display_text_for_folder_a0(stage);
gamemode = GAMEMODE_SOLO;
selected_stage = stage;
briefingpage = pull_and_display_text_for_folder_a0(stage);
}
void sub_GAME_7F01D61C(struct save_file *savefile)
{
copy_eeprom_from_to(selected_folder_num,savefile);
copy_eeprom_from_to(selected_folder_num,savefile);
}
#ifdef NONMATCHING
//this feels fake, generated with a permuter session i forgot was running
void sub_GAME_7F01D644(struct save_file *eeprom)
{
selected_folder_num_copy = selected_folder_num;
selected_folder_num = 100;
copy_eepromfile_a0_from_a1_to_buffer(100,eeprom);
return;
int new_var;
long long new_var2;
new_var2 = (long long) 0x64;
new_var = new_var2;
selected_folder_num_copy = (s32) selected_folder_num;
selected_folder_num = new_var;
copy_eepromfile_a0_from_a1_to_buffer(new_var, eeprom);
}
#else
GLOBAL_ASM(
.text
glabel sub_GAME_7F01D644
/* 052174 7F01D644 3C028003 */ lui $v0, %hi(selected_folder_num)
/* 052178 7F01D648 2442A8E8 */ addiu $v0, %lo(selected_folder_num) # addiu $v0, $v0, -0x5718
/* 05217C 7F01D64C 8C4E0000 */ lw $t6, ($v0)
/* 052180 7F01D650 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 052184 7F01D654 00802825 */ move $a1, $a0
/* 052188 7F01D658 3C018003 */ lui $at, %hi(selected_folder_num_copy)
/* 05218C 7F01D65C AFBF0014 */ sw $ra, 0x14($sp)
/* 052190 7F01D660 24040064 */ li $a0, 100
/* 052194 7F01D664 AC2EA8EC */ sw $t6, %lo(selected_folder_num_copy)($at)
/* 052198 7F01D668 0FC07D17 */ jal copy_eepromfile_a0_from_a1_to_buffer
/* 05219C 7F01D66C AC440000 */ sw $a0, ($v0)
/* 0521A0 7F01D670 8FBF0014 */ lw $ra, 0x14($sp)
/* 0521A4 7F01D674 27BD0018 */ addiu $sp, $sp, 0x18
/* 0521A8 7F01D678 03E00008 */ jr $ra
/* 0521AC 7F01D67C 00000000 */ nop
)
#endif
void store_favorite_weapon_current_player(u32 right,u32 left)
@@ -479,6 +404,6 @@ void store_favorite_weapon_current_player(u32 right,u32 left)
u32 playerNum;
playerNum = get_cur_playernum();
array_favweapon[playerNum][0] = right;
array_favweapon[playerNum][1] = left;
array_favweapon[playerNum][RIGHT_HAND] = right;
array_favweapon[playerNum][LEFT_HAND] = left;
}
+1 -1
View File
@@ -6,7 +6,7 @@ struct save_data
{
int chksum1;
int chksum2;
char completion_bitflags;
u8 completion_bitflags;
char flag_007;
char music_vol;
char sfx_vol;
+38 -105
View File
@@ -188,21 +188,11 @@ glabel sub_GAME_7F01D840
#endif
#ifdef NONMATCHING
void get_foldernum_of_eeprom(void) {
u32 get_foldernum_of_eeprom(struct save_data *eeprom)
{
return eeprom->completion_bitflags & 7;
}
#else
GLOBAL_ASM(
.text
glabel get_foldernum_of_eeprom
/* 0523F8 7F01D8C8 90820008 */ lbu $v0, 8($a0)
/* 0523FC 7F01D8CC 304E0007 */ andi $t6, $v0, 7
/* 052400 7F01D8D0 03E00008 */ jr $ra
/* 052404 7F01D8D4 01C01025 */ move $v0, $t6
)
#endif
@@ -225,21 +215,11 @@ glabel set_eeprom_to_folder_num
#endif
#ifdef NONMATCHING
void set_eeprom_flag_0x18(void) {
u32 set_eeprom_flag_0x18(struct save_data *folder)
{
return (folder->completion_bitflags & 0x18) >> 3;
}
#else
GLOBAL_ASM(
.text
glabel set_eeprom_flag_0x18
/* 052424 7F01D8F4 90820008 */ lbu $v0, 8($a0)
/* 052428 7F01D8F8 304E0018 */ andi $t6, $v0, 0x18
/* 05242C 7F01D8FC 03E00008 */ jr $ra
/* 052430 7F01D900 000E10C3 */ sra $v0, $t6, 3
)
#endif
@@ -264,20 +244,12 @@ glabel reset_eeprom_flag_0x18
#ifdef NONMATCHING
void get_selected_bond(void) {
u32 get_selected_bond(struct save_data *folder)
{
return (folder->completion_bitflags & 0x60) >> 5;
}
#else
GLOBAL_ASM(
.text
glabel get_selected_bond
/* 052454 7F01D924 90820008 */ lbu $v0, 8($a0)
/* 052458 7F01D928 304E0060 */ andi $t6, $v0, 0x60
/* 05245C 7F01D92C 03E00008 */ jr $ra
/* 052460 7F01D930 000E1143 */ sra $v0, $t6, 5
)
#endif
@@ -302,46 +274,23 @@ glabel set_selected_bond
#ifdef NONMATCHING
void check_if_eeprom_flag_set_0x80(void) {
u32 check_if_eeprom_flag_set_0x80(struct save_data *folder)
{
return ((folder->completion_bitflags & 0x80) != 0);
}
#else
GLOBAL_ASM(
.text
glabel check_if_eeprom_flag_set_0x80
/* 052484 7F01D954 90820008 */ lbu $v0, 8($a0)
/* 052488 7F01D958 304E0080 */ andi $t6, $v0, 0x80
/* 05248C 7F01D95C 03E00008 */ jr $ra
/* 052490 7F01D960 000E102B */ sltu $v0, $zero, $t6
)
#endif
#ifdef NONMATCHING
void toggle_eeprom_flag_set_0x80(void) {
void toggle_eeprom_flag_set_0x80(struct save_data *folder,u32 mode)
{
if (mode != 0) {
folder->completion_bitflags = folder->completion_bitflags | 0x80;
return;
}
folder->completion_bitflags = folder->completion_bitflags & 0xff7f;
return;
}
#else
GLOBAL_ASM(
.text
glabel toggle_eeprom_flag_set_0x80
/* 052494 7F01D964 50A00006 */ beql $a1, $zero, .L7F01D980
/* 052498 7F01D968 90980008 */ lbu $t8, 8($a0)
/* 05249C 7F01D96C 908E0008 */ lbu $t6, 8($a0)
/* 0524A0 7F01D970 35CF0080 */ ori $t7, $t6, 0x80
/* 0524A4 7F01D974 03E00008 */ jr $ra
/* 0524A8 7F01D978 A08F0008 */ sb $t7, 8($a0)
/* 0524AC 7F01D97C 90980008 */ lbu $t8, 8($a0)
.L7F01D980:
/* 0524B0 7F01D980 3319FF7F */ andi $t9, $t8, 0xff7f
/* 0524B4 7F01D984 A0990008 */ sb $t9, 8($a0)
/* 0524B8 7F01D988 03E00008 */ jr $ra
/* 0524BC 7F01D98C 00000000 */ nop
)
#endif
@@ -649,7 +598,7 @@ glabel sub_GAME_7F01DCB0
#ifdef NONMATCHING
void check_if_cheat_unlocked(void) {
u32 check_if_cheat_unlocked(save_file *folder,s32 cheat) {
}
#else
@@ -1105,34 +1054,18 @@ glabel sub_GAME_7F01DF90
#ifdef NONMATCHING
void check_if_valid_folder_num(void) {
s32 check_if_valid_folder_num(s32 folder)
{
if ((folder >= 0) && (folder < 4))
{
return 1;
}
if (folder == 100)
{
return 1;
}
return 0;
}
#else
GLOBAL_ASM(
.text
glabel check_if_valid_folder_num
/* 052DBC 7F01E28C 04800005 */ bltz $a0, .L7F01E2A4
/* 052DC0 7F01E290 28810004 */ slti $at, $a0, 4
/* 052DC4 7F01E294 50200004 */ beql $at, $zero, .L7F01E2A8
/* 052DC8 7F01E298 24010064 */ li $at, 100
/* 052DCC 7F01E29C 03E00008 */ jr $ra
/* 052DD0 7F01E2A0 24020001 */ li $v0, 1
.L7F01E2A4:
/* 052DD4 7F01E2A4 24010064 */ li $at, 100
.L7F01E2A8:
/* 052DD8 7F01E2A8 14810003 */ bne $a0, $at, .L7F01E2B8
/* 052DDC 7F01E2AC 00001025 */ move $v0, $zero
/* 052DE0 7F01E2B0 03E00008 */ jr $ra
/* 052DE4 7F01E2B4 24020001 */ li $v0, 1
.L7F01E2B8:
/* 052DE8 7F01E2B8 03E00008 */ jr $ra
/* 052DEC 7F01E2BC 00000000 */ nop
)
#endif
@@ -2187,7 +2120,7 @@ glabel update_eeprom_to_current_solo_watch_settings
/* 053A44 7F01EF14 AFBF001C */ sw $ra, 0x1c($sp)
/* 053A48 7F01EF18 AFB00018 */ sw $s0, 0x18($sp)
/* 053A4C 7F01EF1C AFA40020 */ sw $a0, 0x20($sp)
/* 053A50 7F01EF20 0FC2A4D6 */ jal sub_GAME_7F0A9358
/* 053A50 7F01EF20 0FC2A4D6 */ jal get_mTrack2Vol
/* 053A54 7F01EF24 00008025 */ move $s0, $zero
/* 053A58 7F01EF28 8FAF0020 */ lw $t7, 0x20($sp)
/* 053A5C 7F01EF2C 000271C3 */ sra $t6, $v0, 7
@@ -2289,7 +2222,7 @@ glabel get_screen_ratio_settings_for_mpgame_from_folder
/* 053B84 7F01F054 00027843 */ sra $t7, $v0, 1
/* 053B88 7F01F058 01CF2025 */ or $a0, $t6, $t7
/* 053B8C 7F01F05C 3098FFFF */ andi $t8, $a0, 0xffff
/* 053B90 7F01F060 0FC2A4D9 */ jal sub_GAME_7F0A9364
/* 053B90 7F01F060 0FC2A4D9 */ jal set_mTrack2Vol
/* 053B94 7F01F064 03002025 */ move $a0, $t8
/* 053B98 7F01F068 8FB00024 */ lw $s0, 0x24($sp)
/* 053B9C 7F01F06C 9202000B */ lbu $v0, 0xb($s0)
@@ -2300,7 +2233,7 @@ glabel get_screen_ratio_settings_for_mpgame_from_folder
/* 053BB0 7F01F080 0FC2A468 */ jal sub_GAME_7F0A91A0
/* 053BB4 7F01F084 01202025 */ move $a0, $t1
/* 053BB8 7F01F088 960A000C */ lhu $t2, 0xc($s0)
/* 053BBC 7F01F08C 0FC26919 */ jal get_num_players
/* 053BBC 7F01F08C 0FC26919 */ jal getPlayerCount
/* 053BC0 7F01F090 A7AA0020 */ sh $t2, 0x20($sp)
/* 053BC4 7F01F094 24010001 */ li $at, 1
/* 053BC8 7F01F098 14410007 */ bne $v0, $at, .L7F01F0B8
+1 -1
View File
@@ -58,7 +58,7 @@ glabel init_player_BONDdata_stats
/* 039C50 7F005120 3C108008 */ lui $s0, %hi(pPlayer)
/* 039C54 7F005124 2610A0B0 */ addiu $s0, %lo(pPlayer) # addiu $s0, $s0, -0x5f50
/* 039C58 7F005128 8E090000 */ lw $t1, ($s0)
/* 039C5C 7F00512C 0FC26919 */ jal get_num_players
/* 039C5C 7F00512C 0FC26919 */ jal getPlayerCount
/* 039C60 7F005130 AD220808 */ sw $v0, 0x808($t1)
/* 039C64 7F005134 24010001 */ li $at, 1
/* 039C68 7F005138 14410006 */ bne $v0, $at, .L7F005154
+6 -6
View File
@@ -347,11 +347,11 @@ glabel sets_a_bunch_of_BONDdata_values_to_default
/* 03B2A4 7F006774 0FC1BF7A */ jal sub_GAME_7F06FDE8
/* 03B2A8 7F006778 8DC50008 */ lw $a1, 8($t6)
/* 03B2AC 7F00677C 8E240000 */ lw $a0, ($s1)
/* 03B2B0 7F006780 3C057F09 */ lui $a1, %hi(sub_GAME_7F08DBB0) # $a1, 0x7f09
/* 03B2B4 7F006784 24A5DBB0 */ addiu $a1, %lo(sub_GAME_7F08DBB0) # addiu $a1, $a1, -0x2450
/* 03B2B0 7F006780 3C057F09 */ lui $a1, %hi(currentPlayerToggle5BC) # $a1, 0x7f09
/* 03B2B4 7F006784 24A5DBB0 */ addiu $a1, %lo(currentPlayerToggle5BC) # addiu $a1, $a1, -0x2450
/* 03B2B8 7F006788 0FC1BF8F */ jal sub_GAME_7F06FE3C
/* 03B2BC 7F00678C 24840598 */ addiu $a0, $a0, 0x598
/* 03B2C0 7F006790 0FC236F2 */ jal sub_GAME_7F08DBC8
/* 03B2C0 7F006790 0FC236F2 */ jal currentPlayerUpdateIdleHeadRoll
/* 03B2C4 7F006794 00000000 */ nop
/* 03B2C8 7F006798 8FBF0044 */ lw $ra, 0x44($sp)
/* 03B2CC 7F00679C D7B40020 */ ldc1 $f20, 0x20($sp)
@@ -640,11 +640,11 @@ glabel sets_a_bunch_of_BONDdata_values_to_default
/* 03B300 7F006790 0FC1C0F6 */ jal sub_GAME_7F06FDE8
/* 03B304 7F006794 8DC50008 */ lw $a1, 8($t6)
/* 03B308 7F006798 8E240000 */ lw $a0, ($s1)
/* 03B30C 7F00679C 3C057F09 */ lui $a1, %hi(sub_GAME_7F08DBB0) # $a1, 0x7f09
/* 03B310 7F0067A0 24A5E690 */ addiu $a1, %lo(sub_GAME_7F08DBB0) # addiu $a1, $a1, -0x1970
/* 03B30C 7F00679C 3C057F09 */ lui $a1, %hi(currentPlayerToggle5BC) # $a1, 0x7f09
/* 03B310 7F0067A0 24A5E690 */ addiu $a1, %lo(currentPlayerToggle5BC) # addiu $a1, $a1, -0x1970
/* 03B314 7F0067A4 0FC1C10B */ jal sub_GAME_7F06FE3C
/* 03B318 7F0067A8 24840598 */ addiu $a0, $a0, 0x598
/* 03B31C 7F0067AC 0FC239AA */ jal sub_GAME_7F08DBC8
/* 03B31C 7F0067AC 0FC239AA */ jal currentPlayerUpdateIdleHeadRoll
/* 03B320 7F0067B0 00000000 */ nop
/* 03B324 7F0067B4 8FBF0044 */ lw $ra, 0x44($sp)
/* 03B328 7F0067B8 D7B40020 */ ldc1 $f20, 0x20($sp)
+4 -4
View File
@@ -644,7 +644,7 @@ def_7F005A74:
/* 03A9C8 7F005E98 8D089C68 */ lw $t0, %lo(dword_CODE_bss_80079C68)($t0)
/* 03A9CC 7F005E9C 5900002C */ blezl $t0, .L7F005F50
/* 03A9D0 7F005EA0 27A4008C */ addiu $a0, $sp, 0x8c
/* 03A9D4 7F005EA4 0FC26919 */ jal get_num_players
/* 03A9D4 7F005EA4 0FC26919 */ jal getPlayerCount
/* 03A9D8 7F005EA8 00000000 */ nop
/* 03A9DC 7F005EAC 28410002 */ slti $at, $v0, 2
/* 03A9E0 7F005EB0 14200008 */ bnez $at, .L7F005ED4
@@ -813,7 +813,7 @@ def_7F005A74:
/* 03AC58 7F006128 8E420000 */ lw $v0, ($s2)
/* 03AC5C 7F00612C C45204BC */ lwc1 $f18, 0x4bc($v0)
/* 03AC60 7F006130 46009103 */ div.s $f4, $f18, $f0
/* 03AC64 7F006134 0FC26919 */ jal get_num_players
/* 03AC64 7F006134 0FC26919 */ jal getPlayerCount
/* 03AC68 7F006138 E44403C0 */ swc1 $f4, 0x3c0($v0)
/* 03AC6C 7F00613C 24010001 */ li $at, 1
/* 03AC70 7F006140 14410005 */ bne $v0, $at, .L7F006158
@@ -1406,7 +1406,7 @@ def_7F005A74:
/* 03AA04 7F005E94 8F399CD8 */ lw $t9, %lo(dword_CODE_bss_80079C68)($t9)
/* 03AA08 7F005E98 5B20002C */ blezl $t9, .L7F005F4C
/* 03AA0C 7F005E9C 27A40094 */ addiu $a0, $sp, 0x94
/* 03AA10 7F005EA0 0FC26C01 */ jal get_num_players
/* 03AA10 7F005EA0 0FC26C01 */ jal getPlayerCount
/* 03AA14 7F005EA4 00000000 */ nop
/* 03AA18 7F005EA8 28410002 */ slti $at, $v0, 2
/* 03AA1C 7F005EAC 14200008 */ bnez $at, .L7F005ED0
@@ -1574,7 +1574,7 @@ def_7F005A74:
/* 03AC90 7F006120 8E420000 */ lw $v0, ($s2)
/* 03AC94 7F006124 C45204BC */ lwc1 $f18, 0x4bc($v0)
/* 03AC98 7F006128 46009203 */ div.s $f8, $f18, $f0
/* 03AC9C 7F00612C 0FC26C01 */ jal get_num_players
/* 03AC9C 7F00612C 0FC26C01 */ jal getPlayerCount
/* 03ACA0 7F006130 E44803C0 */ swc1 $f8, 0x3c0($v0)
/* 03ACA4 7F006134 24010001 */ li $at, 1
/* 03ACA8 7F006138 14410005 */ bne $v0, $at, .L7F006150
+2 -2
View File
@@ -161,7 +161,7 @@ glabel alloc_explosion_smoke_casing_scorch_impact_buffers
/* 03BB00 7F006FD0 28810014 */ slti $at, $a0, 0x14
/* 03BB04 7F006FD4 1420FFB7 */ bnez $at, .L7F006EB4
/* 03BB08 7F006FD8 24C60198 */ addiu $a2, $a2, 0x198
/* 03BB0C 7F006FDC 0FC26919 */ jal get_num_players
/* 03BB0C 7F006FDC 0FC26919 */ jal getPlayerCount
/* 03BB10 7F006FE0 00000000 */ nop
/* 03BB14 7F006FE4 24010001 */ li $at, 1
/* 03BB18 7F006FE8 14410017 */ bne $v0, $at, .L7F007048
@@ -205,7 +205,7 @@ glabel alloc_explosion_smoke_casing_scorch_impact_buffers
/* 03BBA4 7F007074 28611F40 */ slti $at, $v1, 0x1f40
/* 03BBA8 7F007078 1420FFFB */ bnez $at, .L7F007068
/* 03BBAC 7F00707C A5E60000 */ sh $a2, ($t7)
/* 03BBB0 7F007080 0FC26919 */ jal get_num_players
/* 03BBB0 7F007080 0FC26919 */ jal getPlayerCount
/* 03BBB4 7F007084 00000000 */ nop
/* 03BBB8 7F007088 241800C8 */ li $t8, 200
/* 03BBBC 7F00708C 0302001A */ div $zero, $t8, $v0
+1 -1
View File
@@ -24,7 +24,7 @@ glabel init_pathtable_something
/* 03B314 7F0067E4 AE220000 */ sw $v0, ($s1)
/* 03B318 7F0067E8 00402025 */ move $a0, $v0
/* 03B31C 7F0067EC 8E050000 */ lw $a1, ($s0)
/* 03B320 7F0067F0 0FC2C0DB */ jal sub_GAME_7F0B036C
/* 03B320 7F0067F0 0FC2C0DB */ jal isPointInsideTriStandTileUnscaled_Maybe
/* 03B324 7F0067F4 8E060008 */ lw $a2, 8($s0)
/* 03B328 7F0067F8 5440001D */ bnezl $v0, .L7F006870
/* 03B32C 7F0067FC 24020001 */ li $v0, 1
+1 -1
View File
@@ -14,7 +14,7 @@ glabel sub_GAME_7F007180
/* 03BCB4 7F007184 AFBF0014 */ sw $ra, 0x14($sp)
/* 03BCB8 7F007188 0FC2F7C1 */ jal sub_GAME_7F0BDF04
/* 03BCBC 7F00718C 00000000 */ nop
/* 03BCC0 7F007190 0FC26919 */ jal get_num_players
/* 03BCC0 7F007190 0FC26919 */ jal getPlayerCount
/* 03BCC4 7F007194 AFA20018 */ sw $v0, 0x18($sp)
/* 03BCC8 7F007198 240E00C8 */ li $t6, 200
/* 03BCCC 7F00719C 01C2001A */ div $zero, $t6, $v0
+1 -1
View File
@@ -880,7 +880,7 @@ glabel insert_bond_eye_intro
/* 03CFB8 7F008488 27A40060 */ addiu $a0, $sp, 0x60
/* 03CFBC 7F00848C E7B00020 */ swc1 $f16, 0x20($sp)
/* 03CFC0 7F008490 E7B20024 */ swc1 $f18, 0x24($sp)
/* 03CFC4 7F008494 0FC165A5 */ jal sub_GAME_7F059694
/* 03CFC4 7F008494 0FC165A5 */ jal matrix_4x4_7F059694
/* 03CFC8 7F008498 E7AA001C */ swc1 $f10, 0x1c($sp)
/* 03CFCC 7F00849C 02002025 */ move $a0, $s0
/* 03CFD0 7F0084A0 24050002 */ li $a1, 2
+49 -101
View File
@@ -1,5 +1,6 @@
#include "ultra64.h"
#include "game/lightfixture.h"
#include "assets/images/image_externs.h"
// bss
//CODE.bss:80082660
@@ -19,50 +20,57 @@ s32 dword_CODE_bss_80083318;
//D:80046030
s32 D_80046030[] = {0, 0, 0, 0, 0, 0, 0, 0};
//this mostly matches 4 bytes different
#ifdef NONMATCHING
void init_lightfixture_tables(void)
{
s32 i;
for (i=0;i<0x64;i++)
{
light_fixture_table[i].index = 0;
}
for (i=0;i<0x400;i=i+8)
{
word_CODE_bss_80082B18[i+2] = 0;
word_CODE_bss_80082B18[i+4] = 0;
word_CODE_bss_80082B18[i+6] = 0;
word_CODE_bss_80082B18[i+0] = 0;
}
for (i=0;i<0x64;i++) {light_fixture_table[i].index = 0;}
for (i=0;i<0x400;i++) {word_CODE_bss_80082B18[i] = 0;}
D_80046030[0] = 0;
}
#else
GLOBAL_ASM(
.text
glabel init_lightfixture_tables
/* 0F0000 7F0BB4D0 3C038008 */ lui $v1, %hi(light_fixture_table)
/* 0F0004 7F0BB4D4 3C028008 */ lui $v0, %hi(cur_entry_lightfixture_table)
/* 0F0008 7F0BB4D8 24422B10 */ addiu $v0, %lo(cur_entry_lightfixture_table) # addiu $v0, $v0, 0x2b10
/* 0F000C 7F0BB4DC 24632660 */ addiu $v1, %lo(light_fixture_table) # addiu $v1, $v1, 0x2660
.L7F0BB4E0:
/* 0F0010 7F0BB4E0 2463000C */ addiu $v1, $v1, 0xc
/* 0F0014 7F0BB4E4 0062082B */ sltu $at, $v1, $v0
/* 0F0018 7F0BB4E8 1420FFFD */ bnez $at, .L7F0BB4E0
/* 0F001C 7F0BB4EC A460FFF4 */ sh $zero, -0xc($v1)
/* 0F0020 7F0BB4F0 3C038008 */ lui $v1, %hi(word_CODE_bss_80082B18)
/* 0F0024 7F0BB4F4 3C028008 */ lui $v0, %hi(dword_CODE_bss_80083318)
/* 0F0028 7F0BB4F8 24423318 */ addiu $v0, %lo(dword_CODE_bss_80083318) # addiu $v0, $v0, 0x3318
/* 0F002C 7F0BB4FC 24632B18 */ addiu $v1, %lo(word_CODE_bss_80082B18) # addiu $v1, $v1, 0x2b18
.L7F0BB500:
/*v1 offsets don't match*/
/* 0F0030 7F0BB500 24630010 */ addiu $v1, $v1, 0x10
/* 0F0034 7F0BB504 A460FFF4 */ sh $zero, -0xc($v1)
/* 0F0038 7F0BB508 A460FFF8 */ sh $zero, -8($v1)
/* 0F003C 7F0BB50C A460FFFC */ sh $zero, -4($v1)
/* 0F0040 7F0BB510 1462FFFB */ bne $v1, $v0, .L7F0BB500
/* 0F0044 7F0BB514 A460FFF0 */ sh $zero, -0x10($v1)
/* 0F0048 7F0BB518 3C018004 */ lui $at, %hi(D_80046030)
/* 0F004C 7F0BB51C 03E00008 */ jr $ra
/* 0F0050 7F0BB520 AC206030 */ sw $zero, %lo(D_80046030)($at)
)
#endif
s32 get_index_of_current_entry_in_init_lightfixture_table(void)
{
s32 i;
for (i = 0; i != 0x64; i+=4)
for (i = 0; i != 0x64; i++)
{
if (light_fixture_table[i].index == 0)
{
return i;
}
if (light_fixture_table[i+1].index == 0)
{
return i + 1;
}
if (light_fixture_table[i+2].index == 0)
{
return i + 2;
}
if (light_fixture_table[i+3].index == 0)
{
return i + 3;
}
}
return 0x64;
}
@@ -86,87 +94,27 @@ void save_ptrDL_enpoint_to_current_init_lightfixture_table(Gfx *param_1)
}
#ifdef NONMATCHING
s32 check_if_imageID_is_light(s32 imageID)
{
if (imageID == 0xC9)
if ((imageID == _image201_ID_LIGHT) ||
(imageID == _image203_ID_LIGHT) ||
(imageID == _image205_ID_LIGHT) ||
(imageID == _image252_ID_LIGHT) ||
(imageID == _image254_ID_LIGHT) ||
(imageID == _image255_ID_LIGHT) ||
(imageID == _image256_ID_LIGHT) ||
(imageID == _image428_ID_LIGHT) ||
(imageID == _image982_ID_LIGHT) ||
(imageID == _image1383_ID_LIGHT))
{
return 1;
}
if (imageID == 0xCB)
}
else
{
return 1;
return 0;
}
if (imageID == 0xCD)
{
return 1;
}
if (imageID == 0xFC)
{
return 1;
}
if (imageID == 0xFE)
{
return 1;
}
if (imageID == 0xFF)
{
return 1;
}
if (imageID == 0x100)
{
return 1;
}
if (imageID == 0x1AC)
{
return 1;
}
if (imageID == 0x3D6)
{
return 1;
}
if (imageID == 0x567)
{
return 1;
}
return 0;
}
#else
GLOBAL_ASM(
.text
glabel check_if_imageID_is_light
/* 0F0160 7F0BB630 240100C9 */ li $at, 201
/* 0F0164 7F0BB634 10810013 */ beq $a0, $at, .L7F0BB684
/* 0F0168 7F0BB638 240100CB */ li $at, 203
/* 0F016C 7F0BB63C 10810011 */ beq $a0, $at, .L7F0BB684
/* 0F0170 7F0BB640 240100CD */ li $at, 205
/* 0F0174 7F0BB644 1081000F */ beq $a0, $at, .L7F0BB684
/* 0F0178 7F0BB648 240100FC */ li $at, 252
/* 0F017C 7F0BB64C 1081000D */ beq $a0, $at, .L7F0BB684
/* 0F0180 7F0BB650 240100FE */ li $at, 254
/* 0F0184 7F0BB654 1081000B */ beq $a0, $at, .L7F0BB684
/* 0F0188 7F0BB658 240100FF */ li $at, 255
/* 0F018C 7F0BB65C 10810009 */ beq $a0, $at, .L7F0BB684
/* 0F0190 7F0BB660 24010100 */ li $at, 256
/* 0F0194 7F0BB664 10810007 */ beq $a0, $at, .L7F0BB684
/* 0F0198 7F0BB668 240101AC */ li $at, 428
/* 0F019C 7F0BB66C 10810005 */ beq $a0, $at, .L7F0BB684
/* 0F01A0 7F0BB670 240103D6 */ li $at, 982
/* 0F01A4 7F0BB674 10810003 */ beq $a0, $at, .L7F0BB684
/* 0F01A8 7F0BB678 24010567 */ li $at, 1383
/* 0F01AC 7F0BB67C 14810003 */ bne $a0, $at, .L7F0BB68C
/* 0F01B0 7F0BB680 00001025 */ move $v0, $zero
.L7F0BB684:
/* 0F01B4 7F0BB684 03E00008 */ jr $ra
/* 0F01B8 7F0BB688 24020001 */ li $v0, 1
.L7F0BB68C:
/* 0F01BC 7F0BB68C 03E00008 */ jr $ra
/* 0F01C0 7F0BB690 00000000 */ nop
)
#endif
+46 -46
View File
@@ -490,7 +490,7 @@ glabel stage_load
/* 0F27BC 7F0BDC8C 0240A025 */ move $s4, $s2
/* 0F27C0 7F0BDC90 24130004 */ li $s3, 4
.L7F0BDC94:
/* 0F27C4 7F0BDC94 0FC26919 */ jal get_num_players
/* 0F27C4 7F0BDC94 0FC26919 */ jal getPlayerCount
/* 0F27C8 7F0BDC98 00000000 */ nop
/* 0F27CC 7F0BDC9C 24010001 */ li $at, 1
/* 0F27D0 7F0BDCA0 14410009 */ bne $v0, $at, .L7F0BDCC8
@@ -605,7 +605,7 @@ glabel stage_load
/* 0F2968 7F0BDE38 00000000 */ nop
/* 0F296C 7F0BDE3C 0FC01410 */ jal something_with_ejected_cartridges
/* 0F2970 7F0BDE40 00000000 */ nop
/* 0F2974 7F0BDE44 0FC26919 */ jal get_num_players
/* 0F2974 7F0BDE44 0FC26919 */ jal getPlayerCount
/* 0F2978 7F0BDE48 00008025 */ move $s0, $zero
/* 0F297C 7F0BDE4C 18400016 */ blez $v0, .L7F0BDEA8
/* 0F2980 7F0BDE50 00000000 */ nop
@@ -626,7 +626,7 @@ glabel stage_load
/* 0F29B8 7F0BDE88 00000000 */ nop
/* 0F29BC 7F0BDE8C 0FC01CBE */ jal disable_onscreen_cheat_text
/* 0F29C0 7F0BDE90 00000000 */ nop
/* 0F29C4 7F0BDE94 0FC26919 */ jal get_num_players
/* 0F29C4 7F0BDE94 0FC26919 */ jal getPlayerCount
/* 0F29C8 7F0BDE98 26100001 */ addiu $s0, $s0, 1
/* 0F29CC 7F0BDE9C 0202082A */ slt $at, $s0, $v0
/* 0F29D0 7F0BDEA0 1420FFEC */ bnez $at, .L7F0BDE54
@@ -637,7 +637,7 @@ glabel stage_load
.L7F0BDEB0:
/* 0F29E0 7F0BDEB0 0FC0154D */ jal set_contents_of_80036078
/* 0F29E4 7F0BDEB4 00002025 */ move $a0, $zero
/* 0F29E8 7F0BDEB8 0FC348E0 */ jal remove_viewport_buffer
/* 0F29E8 7F0BDEB8 0FC348E0 */ jal zbufDeallocate
/* 0F29EC 7F0BDEBC 00000000 */ nop
/* 0F29F0 7F0BDEC0 0C000EEC */ jal setVideoWidthHeightToMode
/* 0F29F4 7F0BDEC4 24040001 */ li $a0, 1
@@ -795,7 +795,7 @@ glabel stage_load
/* 0F33BC 7F0BE84C 0240A025 */ move $s4, $s2
/* 0F33C0 7F0BE850 24130004 */ li $s3, 4
.Ljp7F0BE854:
/* 0F33C4 7F0BE854 0FC26C01 */ jal get_num_players
/* 0F33C4 7F0BE854 0FC26C01 */ jal getPlayerCount
/* 0F33C8 7F0BE858 00000000 */ nop
/* 0F33CC 7F0BE85C 24010001 */ li $at, 1
/* 0F33D0 7F0BE860 14410009 */ bne $v0, $at, .Ljp7F0BE888
@@ -910,7 +910,7 @@ glabel stage_load
/* 0F3568 7F0BE9F8 00000000 */ nop
/* 0F356C 7F0BE9FC 0FC01418 */ jal something_with_ejected_cartridges
/* 0F3570 7F0BEA00 00000000 */ nop
/* 0F3574 7F0BEA04 0FC26C01 */ jal get_num_players
/* 0F3574 7F0BEA04 0FC26C01 */ jal getPlayerCount
/* 0F3578 7F0BEA08 00008025 */ move $s0, $zero
/* 0F357C 7F0BEA0C 18400016 */ blez $v0, .Ljp7F0BEA68
/* 0F3580 7F0BEA10 00000000 */ nop
@@ -931,7 +931,7 @@ glabel stage_load
/* 0F35B8 7F0BEA48 00000000 */ nop
/* 0F35BC 7F0BEA4C 0FC01CC6 */ jal disable_onscreen_cheat_text
/* 0F35C0 7F0BEA50 00000000 */ nop
/* 0F35C4 7F0BEA54 0FC26C01 */ jal get_num_players
/* 0F35C4 7F0BEA54 0FC26C01 */ jal getPlayerCount
/* 0F35C8 7F0BEA58 26100001 */ addiu $s0, $s0, 1
/* 0F35CC 7F0BEA5C 0202082A */ slt $at, $s0, $v0
/* 0F35D0 7F0BEA60 1420FFEC */ bnez $at, .Ljp7F0BEA14
@@ -942,7 +942,7 @@ glabel stage_load
.Ljp7F0BEA70:
/* 0F35E0 7F0BEA70 0FC01555 */ jal set_contents_of_80036078
/* 0F35E4 7F0BEA74 00002025 */ move $a0, $zero
/* 0F35E8 7F0BEA78 0FC34C18 */ jal remove_viewport_buffer
/* 0F35E8 7F0BEA78 0FC34C18 */ jal zbufDeallocate
/* 0F35EC 7F0BEA7C 00000000 */ nop
/* 0F35F0 7F0BEA80 0C000EEC */ jal setVideoWidthHeightToMode
/* 0F35F4 7F0BEA84 24040001 */ li $a0, 1
@@ -1348,7 +1348,7 @@ glabel sub_GAME_7F0BE30C
/* 0F2F68 7F0BE438 10000102 */ b .L7F0BE844
/* 0F2F6C 7F0BE43C AFA20060 */ sw $v0, 0x60($sp)
.L7F0BE440:
/* 0F2F70 7F0BE440 0FC26919 */ jal get_num_players
/* 0F2F70 7F0BE440 0FC26919 */ jal getPlayerCount
/* 0F2F74 7F0BE444 00000000 */ nop
/* 0F2F78 7F0BE448 8FAA0060 */ lw $t2, 0x60($sp)
/* 0F2F7C 7F0BE44C AFA20044 */ sw $v0, 0x44($sp)
@@ -1402,7 +1402,7 @@ glabel sub_GAME_7F0BE30C
/* 0F3038 7F0BE508 0C001151 */ jal setvideo_far
/* 0F303C 7F0BE50C C5CC11D0 */ lwc1 $f12, 0x11d0($t6)
/* 0F3040 7F0BE510 8E0F0000 */ lw $t7, ($s0)
/* 0F3044 7F0BE514 0C001164 */ jal video_related_21
/* 0F3044 7F0BE514 0C001164 */ jal set_page_aspect
/* 0F3048 7F0BE518 C5EC11D4 */ lwc1 $f12, 0x11d4($t7)
/* 0F304C 7F0BE51C 0C000FAD */ jal video_related_10
/* 0F3050 7F0BE520 8FA40060 */ lw $a0, 0x60($sp)
@@ -1741,7 +1741,7 @@ glabel sub_GAME_7F0BE30C
/* 0F3B68 7F0BEFF8 1000010B */ b .Ljp7F0BF428
/* 0F3B6C 7F0BEFFC AFA20060 */ sw $v0, 0x60($sp)
.Ljp7F0BF000:
/* 0F3B70 7F0BF000 0FC26C01 */ jal get_num_players
/* 0F3B70 7F0BF000 0FC26C01 */ jal getPlayerCount
/* 0F3B74 7F0BF004 00000000 */ nop
/* 0F3B78 7F0BF008 8FAA0060 */ lw $t2, 0x60($sp)
/* 0F3B7C 7F0BF00C AFA20044 */ sw $v0, 0x44($sp)
@@ -1795,7 +1795,7 @@ glabel sub_GAME_7F0BE30C
/* 0F3C38 7F0BF0C8 0C001151 */ jal setvideo_far
/* 0F3C3C 7F0BF0CC C5CC11D0 */ lwc1 $f12, 0x11d0($t6)
/* 0F3C40 7F0BF0D0 8E0F0000 */ lw $t7, ($s0)
/* 0F3C44 7F0BF0D4 0C001164 */ jal video_related_21
/* 0F3C44 7F0BF0D4 0C001164 */ jal set_page_aspect
/* 0F3C48 7F0BF0D8 C5EC11D4 */ lwc1 $f12, 0x11d4($t7)
/* 0F3C4C 7F0BF0DC 0C000FAD */ jal video_related_10
/* 0F3C50 7F0BF0E0 8FA40060 */ lw $a0, 0x60($sp)
@@ -2581,7 +2581,7 @@ glabel manage_mp_game
/* 0F37CC 7F0BEC9C 1481FFEF */ bne $a0, $at, .L7F0BEC5C
/* 0F37D0 7F0BECA0 24630001 */ addiu $v1, $v1, 1
.L7F0BECA4:
/* 0F37D4 7F0BECA4 0FC26919 */ jal get_num_players
/* 0F37D4 7F0BECA4 0FC26919 */ jal getPlayerCount
/* 0F37D8 7F0BECA8 00000000 */ nop
/* 0F37DC 7F0BECAC 28410002 */ slti $at, $v0, 2
/* 0F37E0 7F0BECB0 1420014B */ bnez $at, .L7F0BF1E0
@@ -2597,14 +2597,14 @@ glabel manage_mp_game
/* 0F3808 7F0BECD8 00000000 */ nop
/* 0F380C 7F0BECDC AFA00190 */ sw $zero, 0x190($sp)
/* 0F3810 7F0BECE0 AFA0018C */ sw $zero, 0x18c($sp)
/* 0F3814 7F0BECE4 0FC26919 */ jal get_num_players
/* 0F3814 7F0BECE4 0FC26919 */ jal getPlayerCount
/* 0F3818 7F0BECE8 AFA00188 */ sw $zero, 0x188($sp)
/* 0F381C 7F0BECEC 8FA30190 */ lw $v1, 0x190($sp)
/* 0F3820 7F0BECF0 8FA5018C */ lw $a1, 0x18c($sp)
/* 0F3824 7F0BECF4 1840001B */ blez $v0, .L7F0BED64
/* 0F3828 7F0BECF8 8FA60188 */ lw $a2, 0x188($sp)
/* 0F382C 7F0BECFC 3C0E8008 */ lui $t6, %hi(ptr_BONDdata_p1)
/* 0F3830 7F0BED00 25CE9EE0 */ addiu $t6, %lo(ptr_BONDdata_p1) # addiu $t6, $t6, -0x6120
/* 0F382C 7F0BECFC 3C0E8008 */ lui $t6, %hi(players)
/* 0F3830 7F0BED00 25CE9EE0 */ addiu $t6, %lo(players) # addiu $t6, $t6, -0x6120
/* 0F3834 7F0BED04 0003C880 */ sll $t9, $v1, 2
/* 0F3838 7F0BED08 032E2021 */ addu $a0, $t9, $t6
.L7F0BED0C:
@@ -2623,7 +2623,7 @@ glabel manage_mp_game
.L7F0BED3C:
/* 0F386C 7F0BED3C AFA4001C */ sw $a0, 0x1c($sp)
/* 0F3870 7F0BED40 AFA5018C */ sw $a1, 0x18c($sp)
/* 0F3874 7F0BED44 0FC26919 */ jal get_num_players
/* 0F3874 7F0BED44 0FC26919 */ jal getPlayerCount
/* 0F3878 7F0BED48 AFA60188 */ sw $a2, 0x188($sp)
/* 0F387C 7F0BED4C 8FA30190 */ lw $v1, 0x190($sp)
/* 0F3880 7F0BED50 8FA4001C */ lw $a0, 0x1c($sp)
@@ -2656,7 +2656,7 @@ glabel manage_mp_game
/* 0F38E4 7F0BEDB4 01C4082A */ slt $at, $t6, $a0
/* 0F38E8 7F0BEDB8 14200012 */ bnez $at, .L7F0BEE04
/* 0F38EC 7F0BEDBC 00000000 */ nop
/* 0F38F0 7F0BEDC0 0FC26919 */ jal get_num_players
/* 0F38F0 7F0BEDC0 0FC26919 */ jal getPlayerCount
/* 0F38F4 7F0BEDC4 AFA0017C */ sw $zero, 0x17c($sp)
/* 0F38F8 7F0BEDC8 1840000E */ blez $v0, .L7F0BEE04
/* 0F38FC 7F0BEDCC 00000000 */ nop
@@ -2668,7 +2668,7 @@ glabel manage_mp_game
/* 0F3910 7F0BEDE0 2484B704 */ addiu $a0, %lo(aOneMinuteLeft) # addiu $a0, $a0, -0x48fc
/* 0F3914 7F0BEDE4 8FAF017C */ lw $t7, 0x17c($sp)
/* 0F3918 7F0BEDE8 25F80001 */ addiu $t8, $t7, 1
/* 0F391C 7F0BEDEC 0FC26919 */ jal get_num_players
/* 0F391C 7F0BEDEC 0FC26919 */ jal getPlayerCount
/* 0F3920 7F0BEDF0 AFB8017C */ sw $t8, 0x17c($sp)
/* 0F3924 7F0BEDF4 8FB9017C */ lw $t9, 0x17c($sp)
/* 0F3928 7F0BEDF8 0322082A */ slt $at, $t9, $v0
@@ -2730,16 +2730,16 @@ glabel manage_mp_game
/* 0F39F8 7F0BEEC8 8F398374 */ lw $t9, %lo(clock_timer)($t9)
/* 0F39FC 7F0BEECC 1320003A */ beqz $t9, .L7F0BEFB8
/* 0F3A00 7F0BEED0 00000000 */ nop
/* 0F3A04 7F0BEED4 0FC26919 */ jal get_num_players
/* 0F3A04 7F0BEED4 0FC26919 */ jal getPlayerCount
/* 0F3A08 7F0BEED8 00000000 */ nop
/* 0F3A0C 7F0BEEDC 00403825 */ move $a3, $v0
/* 0F3A10 7F0BEEE0 00002825 */ move $a1, $zero
/* 0F3A14 7F0BEEE4 00003025 */ move $a2, $zero
/* 0F3A18 7F0BEEE8 18400029 */ blez $v0, .L7F0BEF90
/* 0F3A1C 7F0BEEEC 00002025 */ move $a0, $zero
/* 0F3A20 7F0BEEF0 3C038008 */ lui $v1, %hi(ptr_BONDdata_p1)
/* 0F3A20 7F0BEEF0 3C038008 */ lui $v1, %hi(players)
/* 0F3A24 7F0BEEF4 44800000 */ mtc1 $zero, $f0
/* 0F3A28 7F0BEEF8 24639EE0 */ addiu $v1, %lo(ptr_BONDdata_p1) # addiu $v1, $v1, -0x6120
/* 0F3A28 7F0BEEF8 24639EE0 */ addiu $v1, %lo(players) # addiu $v1, $v1, -0x6120
.L7F0BEEFC:
/* 0F3A2C 7F0BEEFC 8C620000 */ lw $v0, ($v1)
/* 0F3A30 7F0BEF00 8C4F00D8 */ lw $t7, 0xd8($v0)
@@ -2802,7 +2802,7 @@ glabel manage_mp_game
/* 0F3AFC 7F0BEFCC 8DEF8374 */ lw $t7, %lo(clock_timer)($t7)
/* 0F3B00 7F0BEFD0 11E00083 */ beqz $t7, .L7F0BF1E0
/* 0F3B04 7F0BEFD4 00000000 */ nop
/* 0F3B08 7F0BEFD8 0FC26919 */ jal get_num_players
/* 0F3B08 7F0BEFD8 0FC26919 */ jal getPlayerCount
/* 0F3B0C 7F0BEFDC 00000000 */ nop
/* 0F3B10 7F0BEFE0 44800000 */ mtc1 $zero, $f0
/* 0F3B14 7F0BEFE4 00405025 */ move $t2, $v0
@@ -2818,8 +2818,8 @@ glabel manage_mp_game
/* 0F3B38 7F0BF008 30490003 */ andi $t1, $v0, 3
/* 0F3B3C 7F0BF00C 11200019 */ beqz $t1, .L7F0BF074
/* 0F3B40 7F0BF010 000C5880 */ sll $t3, $t4, 2
/* 0F3B44 7F0BF014 3C188008 */ lui $t8, %hi(ptr_BONDdata_p1)
/* 0F3B48 7F0BF018 27189EE0 */ addiu $t8, %lo(ptr_BONDdata_p1) # addiu $t8, $t8, -0x6120
/* 0F3B44 7F0BF014 3C188008 */ lui $t8, %hi(players)
/* 0F3B48 7F0BF018 27189EE0 */ addiu $t8, %lo(players) # addiu $t8, $t8, -0x6120
/* 0F3B4C 7F0BF01C 00007080 */ sll $t6, $zero, 2
/* 0F3B50 7F0BF020 0000C8C0 */ sll $t9, $zero, 3
/* 0F3B54 7F0BF024 0320C823 */ subu $t9, $t9, $zero
@@ -2845,10 +2845,10 @@ glabel manage_mp_game
/* 0F3B9C 7F0BF06C 00AF2821 */ addu $a1, $a1, $t7
/* 0F3BA0 7F0BF070 10E2002C */ beq $a3, $v0, .L7F0BF124
.L7F0BF074:
/* 0F3BA4 7F0BF074 3C188008 */ lui $t8, %hi(ptr_BONDdata_p1)
/* 0F3BA4 7F0BF074 3C188008 */ lui $t8, %hi(players)
/* 0F3BA8 7F0BF078 0007C8C0 */ sll $t9, $a3, 3
/* 0F3BAC 7F0BF07C 0327C823 */ subu $t9, $t9, $a3
/* 0F3BB0 7F0BF080 27189EE0 */ addiu $t8, %lo(ptr_BONDdata_p1) # addiu $t8, $t8, -0x6120
/* 0F3BB0 7F0BF080 27189EE0 */ addiu $t8, %lo(players) # addiu $t8, $t8, -0x6120
/* 0F3BB4 7F0BF084 00077080 */ sll $t6, $a3, 2
/* 0F3BB8 7F0BF088 01D81821 */ addu $v1, $t6, $t8
/* 0F3BBC 7F0BF08C 0019C900 */ sll $t9, $t9, 4
@@ -2904,8 +2904,8 @@ glabel manage_mp_game
/* 0F3C6C 7F0BF13C 000F7900 */ sll $t7, $t7, 4
/* 0F3C70 7F0BF140 01EE1821 */ addu $v1, $t7, $t6
/* 0F3C74 7F0BF144 906F0068 */ lbu $t7, 0x68($v1)
/* 0F3C78 7F0BF148 3C188008 */ lui $t8, %hi(ptr_BONDdata_p1)
/* 0F3C7C 7F0BF14C 27189EE0 */ addiu $t8, %lo(ptr_BONDdata_p1) # addiu $t8, $t8, -0x6120
/* 0F3C78 7F0BF148 3C188008 */ lui $t8, %hi(players)
/* 0F3C7C 7F0BF14C 27189EE0 */ addiu $t8, %lo(players) # addiu $t8, $t8, -0x6120
/* 0F3C80 7F0BF150 000CC880 */ sll $t9, $t4, 2
/* 0F3C84 7F0BF154 15E00003 */ bnez $t7, .L7F0BF164
/* 0F3C88 7F0BF158 03382021 */ addu $a0, $t9, $t8
@@ -3458,7 +3458,7 @@ glabel manage_mp_game
/* 0F4440 7F0BF8D0 1481FFEF */ bne $a0, $at, .Ljp7F0BF890
/* 0F4444 7F0BF8D4 24630001 */ addiu $v1, $v1, 1
.Ljp7F0BF8D8:
/* 0F4448 7F0BF8D8 0FC26C01 */ jal get_num_players
/* 0F4448 7F0BF8D8 0FC26C01 */ jal getPlayerCount
/* 0F444C 7F0BF8DC 00000000 */ nop
/* 0F4450 7F0BF8E0 28410002 */ slti $at, $v0, 2
/* 0F4454 7F0BF8E4 1420014C */ bnez $at, .Ljp7F0BFE18
@@ -3474,14 +3474,14 @@ glabel manage_mp_game
/* 0F447C 7F0BF90C 00000000 */ nop
/* 0F4480 7F0BF910 AFA00190 */ sw $zero, 0x190($sp)
/* 0F4484 7F0BF914 AFA0018C */ sw $zero, 0x18c($sp)
/* 0F4488 7F0BF918 0FC26C01 */ jal get_num_players
/* 0F4488 7F0BF918 0FC26C01 */ jal getPlayerCount
/* 0F448C 7F0BF91C AFA00188 */ sw $zero, 0x188($sp)
/* 0F4490 7F0BF920 8FA30190 */ lw $v1, 0x190($sp)
/* 0F4494 7F0BF924 8FA5018C */ lw $a1, 0x18c($sp)
/* 0F4498 7F0BF928 1840001B */ blez $v0, .Ljp7F0BF998
/* 0F449C 7F0BF92C 8FA60188 */ lw $a2, 0x188($sp)
/* 0F44A0 7F0BF930 3C0E8008 */ lui $t6, %hi(ptr_BONDdata_p1) # $t6, 0x8008
/* 0F44A4 7F0BF934 25CE9F50 */ addiu $t6, %lo(ptr_BONDdata_p1) # addiu $t6, $t6, -0x60b0
/* 0F44A0 7F0BF930 3C0E8008 */ lui $t6, %hi(players) # $t6, 0x8008
/* 0F44A4 7F0BF934 25CE9F50 */ addiu $t6, %lo(players) # addiu $t6, $t6, -0x60b0
/* 0F44A8 7F0BF938 0003C880 */ sll $t9, $v1, 2
/* 0F44AC 7F0BF93C 032E2021 */ addu $a0, $t9, $t6
.Ljp7F0BF940:
@@ -3500,7 +3500,7 @@ glabel manage_mp_game
.Ljp7F0BF970:
/* 0F44E0 7F0BF970 AFA4001C */ sw $a0, 0x1c($sp)
/* 0F44E4 7F0BF974 AFA5018C */ sw $a1, 0x18c($sp)
/* 0F44E8 7F0BF978 0FC26C01 */ jal get_num_players
/* 0F44E8 7F0BF978 0FC26C01 */ jal getPlayerCount
/* 0F44EC 7F0BF97C AFA60188 */ sw $a2, 0x188($sp)
/* 0F44F0 7F0BF980 8FA30190 */ lw $v1, 0x190($sp)
/* 0F44F4 7F0BF984 8FA4001C */ lw $a0, 0x1c($sp)
@@ -3533,7 +3533,7 @@ glabel manage_mp_game
/* 0F4558 7F0BF9E8 01C4082A */ slt $at, $t6, $a0
/* 0F455C 7F0BF9EC 14200013 */ bnez $at, .Ljp7F0BFA3C
/* 0F4560 7F0BF9F0 00000000 */ nop
/* 0F4564 7F0BF9F4 0FC26C01 */ jal get_num_players
/* 0F4564 7F0BF9F4 0FC26C01 */ jal getPlayerCount
/* 0F4568 7F0BF9F8 AFA0017C */ sw $zero, 0x17c($sp)
/* 0F456C 7F0BF9FC 1840000F */ blez $v0, .Ljp7F0BFA3C
/* 0F4570 7F0BFA00 00000000 */ nop
@@ -3546,7 +3546,7 @@ glabel manage_mp_game
/* 0F4588 7F0BFA18 00402025 */ move $a0, $v0
/* 0F458C 7F0BFA1C 8FAF017C */ lw $t7, 0x17c($sp)
/* 0F4590 7F0BFA20 25F80001 */ addiu $t8, $t7, 1
/* 0F4594 7F0BFA24 0FC26C01 */ jal get_num_players
/* 0F4594 7F0BFA24 0FC26C01 */ jal getPlayerCount
/* 0F4598 7F0BFA28 AFB8017C */ sw $t8, 0x17c($sp)
/* 0F459C 7F0BFA2C 8FB9017C */ lw $t9, 0x17c($sp)
/* 0F45A0 7F0BFA30 0322082A */ slt $at, $t9, $v0
@@ -3608,16 +3608,16 @@ glabel manage_mp_game
/* 0F4670 7F0BFB00 8F3983A4 */ lw $t9, %lo(clock_timer)($t9)
/* 0F4674 7F0BFB04 1320003A */ beqz $t9, .Ljp7F0BFBF0
/* 0F4678 7F0BFB08 00000000 */ nop
/* 0F467C 7F0BFB0C 0FC26C01 */ jal get_num_players
/* 0F467C 7F0BFB0C 0FC26C01 */ jal getPlayerCount
/* 0F4680 7F0BFB10 00000000 */ nop
/* 0F4684 7F0BFB14 00403825 */ move $a3, $v0
/* 0F4688 7F0BFB18 00002825 */ move $a1, $zero
/* 0F468C 7F0BFB1C 00003025 */ move $a2, $zero
/* 0F4690 7F0BFB20 18400029 */ blez $v0, .Ljp7F0BFBC8
/* 0F4694 7F0BFB24 00002025 */ move $a0, $zero
/* 0F4698 7F0BFB28 3C038008 */ lui $v1, %hi(ptr_BONDdata_p1) # $v1, 0x8008
/* 0F4698 7F0BFB28 3C038008 */ lui $v1, %hi(players) # $v1, 0x8008
/* 0F469C 7F0BFB2C 44800000 */ mtc1 $zero, $f0
/* 0F46A0 7F0BFB30 24639F50 */ addiu $v1, %lo(ptr_BONDdata_p1) # addiu $v1, $v1, -0x60b0
/* 0F46A0 7F0BFB30 24639F50 */ addiu $v1, %lo(players) # addiu $v1, $v1, -0x60b0
.Ljp7F0BFB34:
/* 0F46A4 7F0BFB34 8C620000 */ lw $v0, ($v1)
/* 0F46A8 7F0BFB38 8C4F00D8 */ lw $t7, 0xd8($v0)
@@ -3680,7 +3680,7 @@ glabel manage_mp_game
/* 0F4774 7F0BFC04 8DEF83A4 */ lw $t7, %lo(clock_timer)($t7)
/* 0F4778 7F0BFC08 11E00083 */ beqz $t7, .Ljp7F0BFE18
/* 0F477C 7F0BFC0C 00000000 */ nop
/* 0F4780 7F0BFC10 0FC26C01 */ jal get_num_players
/* 0F4780 7F0BFC10 0FC26C01 */ jal getPlayerCount
/* 0F4784 7F0BFC14 00000000 */ nop
/* 0F4788 7F0BFC18 44800000 */ mtc1 $zero, $f0
/* 0F478C 7F0BFC1C 00405025 */ move $t2, $v0
@@ -3696,8 +3696,8 @@ glabel manage_mp_game
/* 0F47B0 7F0BFC40 30490003 */ andi $t1, $v0, 3
/* 0F47B4 7F0BFC44 11200019 */ beqz $t1, .Ljp7F0BFCAC
/* 0F47B8 7F0BFC48 000C5880 */ sll $t3, $t4, 2
/* 0F47BC 7F0BFC4C 3C188008 */ lui $t8, %hi(ptr_BONDdata_p1) # $t8, 0x8008
/* 0F47C0 7F0BFC50 27189F50 */ addiu $t8, %lo(ptr_BONDdata_p1) # addiu $t8, $t8, -0x60b0
/* 0F47BC 7F0BFC4C 3C188008 */ lui $t8, %hi(players) # $t8, 0x8008
/* 0F47C0 7F0BFC50 27189F50 */ addiu $t8, %lo(players) # addiu $t8, $t8, -0x60b0
/* 0F47C4 7F0BFC54 00007080 */ sll $t6, $zero, 2
/* 0F47C8 7F0BFC58 0000C8C0 */ sll $t9, $zero, 3
/* 0F47CC 7F0BFC5C 0320C823 */ subu $t9, $t9, $zero
@@ -3723,10 +3723,10 @@ glabel manage_mp_game
/* 0F4814 7F0BFCA4 00AF2821 */ addu $a1, $a1, $t7
/* 0F4818 7F0BFCA8 10E2002C */ beq $a3, $v0, .Ljp7F0BFD5C
.Ljp7F0BFCAC:
/* 0F481C 7F0BFCAC 3C188008 */ lui $t8, %hi(ptr_BONDdata_p1) # $t8, 0x8008
/* 0F481C 7F0BFCAC 3C188008 */ lui $t8, %hi(players) # $t8, 0x8008
/* 0F4820 7F0BFCB0 0007C8C0 */ sll $t9, $a3, 3
/* 0F4824 7F0BFCB4 0327C823 */ subu $t9, $t9, $a3
/* 0F4828 7F0BFCB8 27189F50 */ addiu $t8, %lo(ptr_BONDdata_p1) # addiu $t8, $t8, -0x60b0
/* 0F4828 7F0BFCB8 27189F50 */ addiu $t8, %lo(players) # addiu $t8, $t8, -0x60b0
/* 0F482C 7F0BFCBC 00077080 */ sll $t6, $a3, 2
/* 0F4830 7F0BFCC0 01D81821 */ addu $v1, $t6, $t8
/* 0F4834 7F0BFCC4 0019C900 */ sll $t9, $t9, 4
@@ -3782,8 +3782,8 @@ glabel manage_mp_game
/* 0F48E4 7F0BFD74 000F7900 */ sll $t7, $t7, 4
/* 0F48E8 7F0BFD78 01EE1821 */ addu $v1, $t7, $t6
/* 0F48EC 7F0BFD7C 906F0068 */ lbu $t7, 0x68($v1)
/* 0F48F0 7F0BFD80 3C188008 */ lui $t8, %hi(ptr_BONDdata_p1) # $t8, 0x8008
/* 0F48F4 7F0BFD84 27189F50 */ addiu $t8, %lo(ptr_BONDdata_p1) # addiu $t8, $t8, -0x60b0
/* 0F48F0 7F0BFD80 3C188008 */ lui $t8, %hi(players) # $t8, 0x8008
/* 0F48F4 7F0BFD84 27189F50 */ addiu $t8, %lo(players) # addiu $t8, $t8, -0x60b0
/* 0F48F8 7F0BFD88 000CC880 */ sll $t9, $t4, 2
/* 0F48FC 7F0BFD8C 15E00003 */ bnez $t7, .Ljp7F0BFD9C
/* 0F4900 7F0BFD90 03382021 */ addu $a0, $t9, $t8
+247 -418
View File
File diff suppressed because it is too large Load Diff
+14 -26
View File
@@ -361,29 +361,14 @@ extern u8 cheat_activated_78;
//CODE.bss:800696F0
extern s32 array_favweapon[4][2];
//CODE.bss:80069710
extern s32 mp_char_cur_select_player1;
//CODE.bss:80069714
extern s32 mp_char_cur_select_player2;
//CODE.bss:80069718
extern s32 mp_char_cur_select_player3;
//CODE.bss:8006971C
extern s32 mp_char_cur_select_player4;
extern s32 mp_char_cur_select_player[4];
//CODE.bss:80069720
extern s32 mp_char_prev_select_player1;
//CODE.bss:80069724
extern s32 mp_char_prev_select_player2;
//CODE.bss:80069728
extern s32 mp_char_prev_select_player3;
//CODE.bss:8006972C
extern s32 mp_char_prev_select_player4;
extern s32 mp_char_prev_select_player[4];
//CODE.bss:80069730
extern s32 dword_CODE_bss_80069730;
//CODE.bss:80069734
extern s32 dword_CODE_bss_80069734;
//CODE.bss:80069738
extern s32 dword_CODE_bss_80069738;
//CODE.bss:8006973C
extern s32 dword_CODE_bss_8006973C;
extern s32 dword_CODE_bss_80069730[4];
//CODE.bss:80069740
extern s32 has_selected_char_player1;
//CODE.bss:80069744
@@ -472,9 +457,9 @@ extern s32 highlight_aimadjustment;
CODE.bss:800697F0 dword_CODE_bss_800697F0:.space 0x130
*/
extern s32 current_menu;
extern s32 menu_update;
extern s32 maybe_prev_menu;
extern MENU current_menu;
extern MENU menu_update;
extern MENU maybe_prev_menu;
extern s32 menu_timer;
extern s32 tab_1_selected;
extern s32 tab_2_selected;
@@ -489,7 +474,7 @@ extern f32 tab2_bottom_y_coord;
extern s32 selected_folder_num;
extern s32 selected_folder_num_copy;
extern s32 gamemode;
extern GAMEMODE gamemode;
extern s32 selected_stage;
extern s32 briefingpage;
extern DIFFICULTY selected_difficulty;
@@ -538,6 +523,8 @@ extern f32 slider_007_mode_health;
extern f32 slider_007_mode_damage;
extern f32 slider_007_mode_accuracy;
extern struct mission_folder_setup mission_folder_setup_entries[];
/*
dword_D_8002A9B0:.word 0xA0000000
dword_D_8002A9B4:.word 0x96000000
@@ -760,6 +747,7 @@ extern s32 unlock_weapon_select;
extern s32 unlock_handicap;
extern s32 unlock_control_style;
extern s32 unlock_aim_sight;
extern struct solo_target_times solo_target_time_array[];
/*
dword_D_8002B560:.word 0
solo_target_times <0, 160, 0>
@@ -792,6 +780,6 @@ extern u32 intro_animation_count;
extern u32 objinstance;
extern u32 ptrobjinstance;
extern u32 full_actor_intro;
void set_menu_to_mode(MENU menu, u32 mode);
void set_menu_to_mode(MENU menu, s32 mode);
#endif
+782 -896
View File
File diff suppressed because it is too large Load Diff
+19
View File
@@ -0,0 +1,19 @@
#ifndef MATRIXMATH_H
#define MATRIXMATH_H
#include "ultra64.h"
typedef f32 vec3[3];
// Float version of a graphics matrix, which has higher precision than an Mtx.
// Matrices are stored as Mtxfs then converted to an Mtx when passed to the GPU.
// Mtxs use a union and a long long int to force alignments. Mtxfs are not
// aligned but still use the union for consistency with Mtx.
typedef union {
f32 m[4][4];
s32 unused;
} Mtxf;
void matrix_4x4_rotate_vector_in_place(Mtxf *matrix, vec3 vector);
#endif
+181 -181
View File
File diff suppressed because it is too large Load Diff
+9 -32
View File
@@ -1,4 +1,5 @@
#include "ultra64.h"
#include "structs.h"
//D:80054600
const char aGetsubmatrixNoObjinst[] = "getsubmatrix: no objinst!\n";
@@ -1072,38 +1073,14 @@ glabel getinstsize
#ifdef NONMATCHING
void sub_GAME_7F06D07C(void) {
// Also matches with float*s
void interpolate3dVectors(struct float3 *v,struct float3 *w,float k)
{
v->x += (w->x - v->x) * k;
v->y += (w->y - v->y) * k;
v->z += (w->z - v->z) * k;
return;
}
#else
GLOBAL_ASM(
.text
glabel sub_GAME_7F06D07C
/* 0A1BAC 7F06D07C C4800000 */ lwc1 $f0, ($a0)
/* 0A1BB0 7F06D080 C4A40000 */ lwc1 $f4, ($a1)
/* 0A1BB4 7F06D084 44866000 */ mtc1 $a2, $f12
/* 0A1BB8 7F06D088 C4820004 */ lwc1 $f2, 4($a0)
/* 0A1BBC 7F06D08C 46002181 */ sub.s $f6, $f4, $f0
/* 0A1BC0 7F06D090 C48E0008 */ lwc1 $f14, 8($a0)
/* 0A1BC4 7F06D094 460C3202 */ mul.s $f8, $f6, $f12
/* 0A1BC8 7F06D098 46080280 */ add.s $f10, $f0, $f8
/* 0A1BCC 7F06D09C E48A0000 */ swc1 $f10, ($a0)
/* 0A1BD0 7F06D0A0 C4B00004 */ lwc1 $f16, 4($a1)
/* 0A1BD4 7F06D0A4 46028481 */ sub.s $f18, $f16, $f2
/* 0A1BD8 7F06D0A8 460C9102 */ mul.s $f4, $f18, $f12
/* 0A1BDC 7F06D0AC 46041180 */ add.s $f6, $f2, $f4
/* 0A1BE0 7F06D0B0 E4860004 */ swc1 $f6, 4($a0)
/* 0A1BE4 7F06D0B4 C4A80008 */ lwc1 $f8, 8($a1)
/* 0A1BE8 7F06D0B8 460E4281 */ sub.s $f10, $f8, $f14
/* 0A1BEC 7F06D0BC 460C5402 */ mul.s $f16, $f10, $f12
/* 0A1BF0 7F06D0C0 46107480 */ add.s $f18, $f14, $f16
/* 0A1BF4 7F06D0C4 03E00008 */ jr $ra
/* 0A1BF8 7F06D0C8 E4920008 */ swc1 $f18, 8($a0)
)
#endif
@@ -1485,7 +1462,7 @@ glabel sub_GAME_7F06D490
/* 0A2028 7F06D4F8 51E0000B */ beql $t7, $zero, .L7F06D528
/* 0A202C 7F06D4FC 8E380054 */ lw $t8, 0x54($s1)
/* 0A2030 7F06D500 44060000 */ mfc1 $a2, $f0
/* 0A2034 7F06D504 0FC1B41F */ jal sub_GAME_7F06D07C
/* 0A2034 7F06D504 0FC1B41F */ jal interpolate3dVectors
/* 0A2038 7F06D508 24450024 */ addiu $a1, $v0, 0x24
/* 0A203C 7F06D50C C60C0030 */ lwc1 $f12, 0x30($s0)
/* 0A2040 7F06D510 C60E0020 */ lwc1 $f14, 0x20($s0)
+1 -1
View File
@@ -15,7 +15,7 @@ glabel sub_GAME_7F007770
/* 03C2A8 7F007778 AFB30020 */ sw $s3, 0x20($sp)
/* 03C2AC 7F00777C AFB2001C */ sw $s2, 0x1c($sp)
/* 03C2B0 7F007780 AFB10018 */ sw $s1, 0x18($sp)
/* 03C2B4 7F007784 0FC26919 */ jal get_num_players
/* 03C2B4 7F007784 0FC26919 */ jal getPlayerCount
/* 03C2B8 7F007788 AFB00014 */ sw $s0, 0x14($sp)
/* 03C2BC 7F00778C 0FC26C54 */ jal get_cur_playernum
/* 03C2C0 7F007790 00409825 */ move $s3, $v0
+23 -23
View File
@@ -286,7 +286,7 @@ glabel prepare_load_objects
/* 036938 7F001E08 00000000 */ nop
/* 03693C 7F001E0C 468041A0 */ cvt.s.w $f6, $f8
/* 036940 7F001E10 460A3103 */ div.s $f4, $f6, $f10
/* 036944 7F001E14 0FC26919 */ jal get_num_players
/* 036944 7F001E14 0FC26919 */ jal getPlayerCount
/* 036948 7F001E18 E6240074 */ swc1 $f4, 0x74($s1)
/* 03694C 7F001E1C 28410002 */ slti $at, $v0, 2
/* 036950 7F001E20 1420001B */ bnez $at, .L7F001E90
@@ -407,7 +407,7 @@ glabel prepare_load_objects
/* 036AF8 7F001FC8 00000000 */ nop
/* 036AFC 7F001FCC 8FAE006C */ lw $t6, 0x6c($sp)
/* 036B00 7F001FD0 02002025 */ move $a0, $s0
/* 036B04 7F001FD4 0FC0E969 */ jal sub_GAME_7F03A5A4
/* 036B04 7F001FD4 0FC0E969 */ jal attachNewChild
/* 036B08 7F001FD8 8DC50018 */ lw $a1, 0x18($t6)
/* 036B0C 7F001FDC 100001D2 */ b .L7F002728
/* 036B10 7F001FE0 8FBF0034 */ lw $ra, 0x34($sp)
@@ -445,7 +445,7 @@ glabel prepare_load_objects
/* 036B8C 7F00205C E7A60020 */ swc1 $f6, 0x20($sp)
/* 036B90 7F002060 C44A0014 */ lwc1 $f10, 0x14($v0)
/* 036B94 7F002064 AFA20064 */ sw $v0, 0x64($sp)
/* 036B98 7F002068 0FC16642 */ jal sub_GAME_7F059908
/* 036B98 7F002068 0FC16642 */ jal matrix_4x4_7F059908
/* 036B9C 7F00206C E7AA0024 */ swc1 $f10, 0x24($sp)
/* 036BA0 7F002070 8FA20064 */ lw $v0, 0x64($sp)
/* 036BA4 7F002074 C4440000 */ lwc1 $f4, ($v0)
@@ -503,7 +503,7 @@ glabel prepare_load_objects
/* 036C68 7F002138 C6040010 */ lwc1 $f4, 0x10($s0)
/* 036C6C 7F00213C E7A40020 */ swc1 $f4, 0x20($sp)
/* 036C70 7F002140 C6080014 */ lwc1 $f8, 0x14($s0)
/* 036C74 7F002144 0FC16642 */ jal sub_GAME_7F059908
/* 036C74 7F002144 0FC16642 */ jal matrix_4x4_7F059908
/* 036C78 7F002148 E7A80024 */ swc1 $f8, 0x24($sp)
/* 036C7C 7F00214C 8E2C000C */ lw $t4, 0xc($s1)
/* 036C80 7F002150 02002025 */ move $a0, $s0
@@ -1025,7 +1025,7 @@ glabel expand_08_obj_set_guard_MP_weapons
/* 037330 7F002800 24050001 */ li $a1, 1
.L7F002804:
/* 037334 7F002804 AFA50018 */ sw $a1, 0x18($sp)
/* 037338 7F002808 0FC26919 */ jal get_num_players
/* 037338 7F002808 0FC26919 */ jal getPlayerCount
/* 03733C 7F00280C AFA7002C */ sw $a3, 0x2c($sp)
/* 037340 7F002810 28410002 */ slti $at, $v0, 2
/* 037344 7F002814 8FA50018 */ lw $a1, 0x18($sp)
@@ -1327,7 +1327,7 @@ glabel sub_GAME_7F002A3C
/* 037698 7F002B68 46062281 */ sub.s $f10, $f4, $f6
/* 03769C 7F002B6C E7A0001C */ swc1 $f0, 0x1c($sp)
/* 0376A0 7F002B70 E7A80020 */ swc1 $f8, 0x20($sp)
/* 0376A4 7F002B74 0FC16642 */ jal sub_GAME_7F059908
/* 0376A4 7F002B74 0FC16642 */ jal matrix_4x4_7F059908
/* 0376A8 7F002B78 E7AA0018 */ swc1 $f10, 0x18($sp)
/* 0376AC 7F002B7C 8E0F0014 */ lw $t7, 0x14($s0)
/* 0376B0 7F002B80 8FA5003C */ lw $a1, 0x3c($sp)
@@ -1597,7 +1597,7 @@ glabel sub_GAME_7F002E3C
/* 037A5C 7F002F2C 00000000 */ nop
/* 037A60 7F002F30 46809120 */ cvt.s.w $f4, $f18
/* 037A64 7F002F34 46082183 */ div.s $f6, $f4, $f8
/* 037A68 7F002F38 0FC26919 */ jal get_num_players
/* 037A68 7F002F38 0FC26919 */ jal getPlayerCount
/* 037A6C 7F002F3C E6060074 */ swc1 $f6, 0x74($s0)
/* 037A70 7F002F40 28410002 */ slti $at, $v0, 2
/* 037A74 7F002F44 14200004 */ bnez $at, .L7F002F58
@@ -1670,7 +1670,7 @@ glabel sub_GAME_7F002E3C
/* 037B70 7F003040 ADAC001C */ sw $t4, 0x1c($t5)
.L7F003044:
/* 037B74 7F003044 8FA40024 */ lw $a0, 0x24($sp)
/* 037B78 7F003048 0FC0E969 */ jal sub_GAME_7F03A5A4
/* 037B78 7F003048 0FC0E969 */ jal attachNewChild
/* 037B7C 7F00304C 8E250010 */ lw $a1, 0x10($s1)
/* 037B80 7F003050 8E05006C */ lw $a1, 0x6c($s0)
/* 037B84 7F003054 3C018005 */ lui $at, %hi(D_8004EF58)
@@ -2178,7 +2178,7 @@ glabel sub_GAME_7F003480
/* 03828C 7F00375C C6040010 */ lwc1 $f4, 0x10($s0)
/* 038290 7F003760 E7A40020 */ swc1 $f4, 0x20($sp)
/* 038294 7F003764 C6080014 */ lwc1 $f8, 0x14($s0)
/* 038298 7F003768 0FC16642 */ jal sub_GAME_7F059908
/* 038298 7F003768 0FC16642 */ jal matrix_4x4_7F059908
/* 03829C 7F00376C E7A80024 */ swc1 $f8, 0x24($sp)
/* 0382A0 7F003770 8FA801D0 */ lw $t0, 0x1d0($sp)
/* 0382A4 7F003774 3C0A8004 */ lui $t2, %hi(PitemZ_entries)
@@ -2687,7 +2687,7 @@ glabel proplvreset2
/* 03884C 7F003D1C AD410000 */ sw $at, ($t2)
/* 038850 7F003D20 904B0000 */ lbu $t3, ($v0)
/* 038854 7F003D24 A3A00175 */ sb $zero, 0x175($sp)
/* 038858 7F003D28 0FC26919 */ jal get_num_players
/* 038858 7F003D28 0FC26919 */ jal getPlayerCount
/* 03885C 7F003D2C A3AB0174 */ sb $t3, 0x174($sp)
/* 038860 7F003D30 28410002 */ slti $at, $v0, 2
/* 038864 7F003D34 14200004 */ bnez $at, .L7F003D48
@@ -3069,7 +3069,7 @@ glabel proplvreset2
/* 038DD8 7F0042A8 02602025 */ move $a0, $s3
/* 038DDC 7F0042AC 0FC01589 */ jal sub_GAME_7F005624
/* 038DE0 7F0042B0 02802025 */ move $a0, $s4
/* 038DE4 7F0042B4 0FC26919 */ jal get_num_players
/* 038DE4 7F0042B4 0FC26919 */ jal getPlayerCount
/* 038DE8 7F0042B8 00008025 */ move $s0, $zero
/* 038DEC 7F0042BC 1840000C */ blez $v0, .L7F0042F0
/* 038DF0 7F0042C0 00000000 */ nop
@@ -3080,7 +3080,7 @@ glabel proplvreset2
/* 038E00 7F0042D0 2404000E */ li $a0, 14
/* 038E04 7F0042D4 0FC01897 */ jal alloc_additional_item_slots
/* 038E08 7F0042D8 00402025 */ move $a0, $v0
/* 038E0C 7F0042DC 0FC26919 */ jal get_num_players
/* 038E0C 7F0042DC 0FC26919 */ jal getPlayerCount
/* 038E10 7F0042E0 26100001 */ addiu $s0, $s0, 1
/* 038E14 7F0042E4 0202082A */ slt $at, $s0, $v0
/* 038E18 7F0042E8 1420FFF6 */ bnez $at, .L7F0042C4
@@ -3094,12 +3094,12 @@ glabel proplvreset2
/* 038E34 7F004304 00000000 */ nop
/* 038E38 7F004308 244C0004 */ addiu $t4, $v0, 4
/* 038E3C 7F00430C 240D0001 */ li $t5, 1
/* 038E40 7F004310 0FC26919 */ jal get_num_players
/* 038E40 7F004310 0FC26919 */ jal getPlayerCount
/* 038E44 7F004314 018DA004 */ sllv $s4, $t5, $t4
/* 038E48 7F004318 28410002 */ slti $at, $v0, 2
/* 038E4C 7F00431C 14200007 */ bnez $at, .L7F00433C
/* 038E50 7F004320 00000000 */ nop
/* 038E54 7F004324 0FC26919 */ jal get_num_players
/* 038E54 7F004324 0FC26919 */ jal getPlayerCount
/* 038E58 7F004328 00000000 */ nop
/* 038E5C 7F00432C 244E0014 */ addiu $t6, $v0, 0x14
/* 038E60 7F004330 240F0001 */ li $t7, 1
@@ -3390,7 +3390,7 @@ obj_03_expand:
/* 039288 7F004758 100000E8 */ b other_obj_expand
/* 03928C 7F00475C 00000000 */ nop
ammo_box_expand:
/* 039290 7F004760 0FC26919 */ jal get_num_players
/* 039290 7F004760 0FC26919 */ jal getPlayerCount
/* 039294 7F004764 24100001 */ li $s0, 1
/* 039298 7F004768 28410002 */ slti $at, $v0, 2
/* 03929C 7F00476C 1420000E */ bnez $at, .L7F0047A8
@@ -3694,7 +3694,7 @@ other_obj_expand:
/* 0396EC 7F004BBC 0FC1B39E */ jal set_obj_instance_controller_scale
/* 0396F0 7F004BC0 8C850014 */ lw $a1, 0x14($a0)
/* 0396F4 7F004BC4 8E440010 */ lw $a0, 0x10($s2)
/* 0396F8 7F004BC8 0FC0E969 */ jal sub_GAME_7F03A5A4
/* 0396F8 7F004BC8 0FC0E969 */ jal attachNewChild
/* 0396FC 7F004BCC 8E050010 */ lw $a1, 0x10($s0)
/* 039700 7F004BD0 10000084 */ b .L7F004DE4
/* 039704 7F004BD4 00000000 */ nop
@@ -4080,7 +4080,7 @@ glabel jpt_8004F02C
/* 03888C 7F003D1C AD410000 */ sw $at, ($t2)
/* 038890 7F003D20 904B0000 */ lbu $t3, ($v0)
/* 038894 7F003D24 A3A00175 */ sb $zero, 0x175($sp)
/* 038898 7F003D28 0FC26C01 */ jal get_num_players
/* 038898 7F003D28 0FC26C01 */ jal getPlayerCount
/* 03889C 7F003D2C A3AB0174 */ sb $t3, 0x174($sp)
/* 0388A0 7F003D30 28410002 */ slti $at, $v0, 2
/* 0388A4 7F003D34 14200004 */ bnez $at, .L7F003D48
@@ -4462,7 +4462,7 @@ glabel jpt_8004F02C
/* 038E18 7F0042A8 02602025 */ move $a0, $s3
/* 038E1C 7F0042AC 0FC01591 */ jal sub_GAME_7F005624
/* 038E20 7F0042B0 02802025 */ move $a0, $s4
/* 038E24 7F0042B4 0FC26C01 */ jal get_num_players
/* 038E24 7F0042B4 0FC26C01 */ jal getPlayerCount
/* 038E28 7F0042B8 00008025 */ move $s0, $zero
/* 038E2C 7F0042BC 1840000C */ blez $v0, .L7F0042F0
/* 038E30 7F0042C0 00000000 */ nop
@@ -4473,7 +4473,7 @@ glabel jpt_8004F02C
/* 038E40 7F0042D0 2404000E */ li $a0, 14
/* 038E44 7F0042D4 0FC01897 */ jal alloc_additional_item_slots
/* 038E48 7F0042D8 00402025 */ move $a0, $v0
/* 038E4C 7F0042DC 0FC26C01 */ jal get_num_players
/* 038E4C 7F0042DC 0FC26C01 */ jal getPlayerCount
/* 038E50 7F0042E0 26100001 */ addiu $s0, $s0, 1
/* 038E54 7F0042E4 0202082A */ slt $at, $s0, $v0
/* 038E58 7F0042E8 1420FFF6 */ bnez $at, .L7F0042C4
@@ -4487,12 +4487,12 @@ glabel jpt_8004F02C
/* 038E74 7F004304 00000000 */ nop
/* 038E78 7F004308 244C0004 */ addiu $t4, $v0, 4
/* 038E7C 7F00430C 240D0001 */ li $t5, 1
/* 038E80 7F004310 0FC26C01 */ jal get_num_players
/* 038E80 7F004310 0FC26C01 */ jal getPlayerCount
/* 038E84 7F004314 018DA004 */ sllv $s4, $t5, $t4
/* 038E88 7F004318 28410002 */ slti $at, $v0, 2
/* 038E8C 7F00431C 14200007 */ bnez $at, .L7F00433C
/* 038E90 7F004320 00000000 */ nop
/* 038E94 7F004324 0FC26C01 */ jal get_num_players
/* 038E94 7F004324 0FC26C01 */ jal getPlayerCount
/* 038E98 7F004328 00000000 */ nop
/* 038E9C 7F00432C 244E0014 */ addiu $t6, $v0, 0x14
/* 038EA0 7F004330 240F0001 */ li $t7, 1
@@ -4788,7 +4788,7 @@ obj_03_expand:
/* 0392D8 7F004768 100000E8 */ b other_obj_expand
/* 0392DC 7F00476C 00000000 */ nop
ammo_box_expand:
/* 0392E0 7F004770 0FC26C01 */ jal get_num_players
/* 0392E0 7F004770 0FC26C01 */ jal getPlayerCount
/* 0392E4 7F004774 24100001 */ li $s0, 1
/* 0392E8 7F004778 28410002 */ slti $at, $v0, 2
/* 0392EC 7F00477C 1420000E */ bnez $at, .L7F0047B8
@@ -5092,7 +5092,7 @@ other_obj_expand:
/* 03973C 7F004BCC 0FC1B51A */ jal set_obj_instance_controller_scale
/* 039740 7F004BD0 8C850014 */ lw $a1, 0x14($a0)
/* 039744 7F004BD4 8E440010 */ lw $a0, 0x10($s2)
/* 039748 7F004BD8 0FC0EA29 */ jal sub_GAME_7F03A5A4
/* 039748 7F004BD8 0FC0EA29 */ jal attachNewChild
/* 03974C 7F004BDC 8E050010 */ lw $a1, 0x10($s0)
/* 039750 7F004BE0 10000084 */ b .L7F004DF4
/* 039754 7F004BE4 00000000 */ nop
+6 -6
View File
@@ -37,7 +37,7 @@ glabel display_red_blue_on_radar
/* 0FAC04 7F0C60D4 AFA40088 */ sw $a0, 0x88($sp)
/* 0FAC08 7F0C60D8 0FC26C54 */ jal get_cur_playernum
/* 0FAC0C 7F0C60DC 0040A025 */ move $s4, $v0
/* 0FAC10 7F0C60E0 0FC26919 */ jal get_num_players
/* 0FAC10 7F0C60E0 0FC26919 */ jal getPlayerCount
/* 0FAC14 7F0C60E4 AFA20070 */ sw $v0, 0x70($sp)
/* 0FAC18 7F0C60E8 24010001 */ li $at, 1
/* 0FAC1C 7F0C60EC 14410003 */ bne $v0, $at, .L7F0C60FC
@@ -65,14 +65,14 @@ glabel display_red_blue_on_radar
/* 0FAC68 7F0C6138 10000113 */ b .L7F0C6588
/* 0FAC6C 7F0C613C 8FA20088 */ lw $v0, 0x88($sp)
.L7F0C6140:
/* 0FAC70 7F0C6140 0C001145 */ jal get_video2_settings_ulx
/* 0FAC70 7F0C6140 0C001145 */ jal viGetViewLeft
/* 0FAC74 7F0C6144 00000000 */ nop
/* 0FAC78 7F0C6148 00028400 */ sll $s0, $v0, 0x10
/* 0FAC7C 7F0C614C 0010C403 */ sra $t8, $s0, 0x10
/* 0FAC80 7F0C6150 0C001127 */ jal get_video2_settings_width
/* 0FAC80 7F0C6150 0C001127 */ jal viGetViewWidth
/* 0FAC84 7F0C6154 03008025 */ move $s0, $t8
/* 0FAC88 7F0C6158 0050A821 */ addu $s5, $v0, $s0
/* 0FAC8C 7F0C615C 0C001149 */ jal get_video2_settings_uly
/* 0FAC8C 7F0C615C 0C001149 */ jal viGetViewTop
/* 0FAC90 7F0C6160 26B5FFD7 */ addiu $s5, $s5, -0x29
/* 0FAC94 7F0C6164 8FB90074 */ lw $t9, 0x74($sp)
/* 0FAC98 7F0C6168 2456001A */ addiu $s6, $v0, 0x1a
@@ -217,10 +217,10 @@ glabel display_red_blue_on_radar
/* 0FAEA8 7F0C6378 8FAA0070 */ lw $t2, 0x70($sp)
.L7F0C637C:
/* 0FAEAC 7F0C637C 00135880 */ sll $t3, $s3, 2
/* 0FAEB0 7F0C6380 3C048008 */ lui $a0, %hi(ptr_BONDdata_p1)
/* 0FAEB0 7F0C6380 3C048008 */ lui $a0, %hi(players)
/* 0FAEB4 7F0C6384 126A007A */ beq $s3, $t2, .L7F0C6570
/* 0FAEB8 7F0C6388 008B2021 */ addu $a0, $a0, $t3
/* 0FAEBC 7F0C638C 8C849EE0 */ lw $a0, %lo(ptr_BONDdata_p1)($a0)
/* 0FAEBC 7F0C638C 8C849EE0 */ lw $a0, %lo(players)($a0)
/* 0FAEC0 7F0C6390 8C8C00D8 */ lw $t4, 0xd8($a0)
/* 0FAEC4 7F0C6394 55800077 */ bnezl $t4, .L7F0C6574
/* 0FAEC8 7F0C6398 8FB80074 */ lw $t8, 0x74($sp)
+985 -1502
View File
File diff suppressed because it is too large Load Diff
+59
View File
@@ -2,6 +2,65 @@
#define _STAN_H_
#include "ultra64.h"
struct StandTilePoint {
s16 x;
s16 y;
s16 z;
u16 link;
};
struct StandTileHeaderTail {
s16 pointCount : 4; // seen lh, not lhu. Also seen with an explicit unnecessary '& 0xF'
s16 headerC : 4;
s16 headerD : 4;
s16 headerE : 4;
};
struct StandTile {
u16 name1;
u8 name2;
u8 room; // compared to 0xFF, not -1 in a function. Seen LBUs.
s16 headerMid;
/* 0x06 */
// They appear to have performed the bit field work themselves here,
// but we provide the StandTileHeaderTail member for clarity - it should be unused I believe.
s16 hdrTail;
/* 0x08 */
struct StandTilePoint points[1];
};
// RGB? I've called them 'triple' because I don't really know what RGB is
// No parens around params
#define STAN_TRIPLE_TO_PNT_INDEX(tile, tripleIndex) (tile->hdrTail >> (8 - 4*tripleIndex) & 0xF)
#define STAN_POINT_COUNT(tile) (tile->hdrTail >> 0xC & 0xF)
// May be internal only, nice here.
struct StandTileWalkCallbackRecord {
s32 * roomBuf;
s32 count;
s32 bufMax;
s32 lastRoom;
};
typedef void (*standTileWalkCallback_t)(struct StandTile*, struct StandTile*, struct StandTileWalkCallbackRecord*);
// Necessary forward declaration
void noteTileRoomIfDifferentToPrev(struct StandTile *tile, struct StandTile *unused, struct StandTileWalkCallbackRecord *data);
// Very similar but definitely different to the above?
struct StandTileLocusCallbackRecord {
s32 * roomBuf;
s32 count;
s32 bufMax;
s32 nearEdgeCount;
};
typedef s32 (*standTileLocusCallback_A_t)(struct StandTile*, struct StandTileLocusCallbackRecord*);
typedef s32 (*standTileLocusCallback_B_t)(struct StandTile*, s32, float, float, void, float*); // 5th parameter uncertain
typedef s32 (*standTileLocusCallback_C_t)(struct StandTile**, s32, struct StandTileLocusCallbackRecord*);
typedef s32 (*tilePredicate_t)(struct StandTile*);
void stanInitDebugNoticeList(void);
#endif
+7 -7
View File
@@ -16,12 +16,12 @@ void cleanupplayersoundrelated(void) {
? phi_return;
// Node 0
temp_ret = get_num_players();
temp_ret = getPlayerCount();
phi_return = temp_ret;
if (temp_ret > 0)
{
// Node 1
phi_s2 = ((0 * 4) + &ptr_BONDdata_p1);
phi_s2 = ((0 * 4) + &players);
phi_s4 = 0;
loop_2:
// Node 2
@@ -47,7 +47,7 @@ loop_3:
}
// Node 7
temp_s4 = (phi_s4 + 1);
temp_ret_2 = get_num_players();
temp_ret_2 = getPlayerCount();
phi_s2 = (phi_s2 + 4);
phi_s4 = temp_s4;
phi_return = temp_ret_2;
@@ -71,12 +71,12 @@ glabel cleanupplayersoundrelated
/* 03C4C0 7F007990 AFB20020 */ sw $s2, 0x20($sp)
/* 03C4C4 7F007994 AFB1001C */ sw $s1, 0x1c($sp)
/* 03C4C8 7F007998 AFB00018 */ sw $s0, 0x18($sp)
/* 03C4CC 7F00799C 0FC26919 */ jal get_num_players
/* 03C4CC 7F00799C 0FC26919 */ jal getPlayerCount
/* 03C4D0 7F0079A0 0000A025 */ move $s4, $zero
/* 03C4D4 7F0079A4 1840001B */ blez $v0, .L7F007A14
/* 03C4D8 7F0079A8 00147080 */ sll $t6, $s4, 2
/* 03C4DC 7F0079AC 3C0F8008 */ lui $t7, %hi(ptr_BONDdata_p1)
/* 03C4E0 7F0079B0 25EF9EE0 */ addiu $t7, %lo(ptr_BONDdata_p1) # addiu $t7, $t7, -0x6120
/* 03C4DC 7F0079AC 3C0F8008 */ lui $t7, %hi(players)
/* 03C4E0 7F0079B0 25EF9EE0 */ addiu $t7, %lo(players) # addiu $t7, $t7, -0x6120
/* 03C4E4 7F0079B4 01CF9021 */ addu $s2, $t6, $t7
/* 03C4E8 7F0079B8 24130750 */ li $s3, 1872
/* 03C4EC 7F0079BC 00008825 */ move $s1, $zero
@@ -99,7 +99,7 @@ glabel cleanupplayersoundrelated
/* 03C524 7F0079F4 5633FFF3 */ bnel $s1, $s3, .L7F0079C4
/* 03C528 7F0079F8 8E580000 */ lw $t8, ($s2)
/* 03C52C 7F0079FC 26940001 */ addiu $s4, $s4, 1
/* 03C530 7F007A00 0FC26919 */ jal get_num_players
/* 03C530 7F007A00 0FC26919 */ jal getPlayerCount
/* 03C534 7F007A04 26520004 */ addiu $s2, $s2, 4
/* 03C538 7F007A08 0282082A */ slt $at, $s4, $v0
/* 03C53C 7F007A0C 5420FFEC */ bnezl $at, .L7F0079C0
+134 -391
View File
@@ -1,6 +1,7 @@
#include "ultra64.h"
#include "game/lvl.h"
#include "game/unk_093880.h"
#include "game/chrai.h"
// data
//D:80036AD0
@@ -60,388 +61,98 @@ u32 D_80036B6C = 0;
// rodata
void currentPlayerToggle5BC() {
pPlayer->field_5BC = !pPlayer->field_5BC;
}
u32 get_random_value();
#define U32_MAX 4294967295
void currentPlayerUpdateIdleHeadRoll() {
f32 mult = 1.0f / U32_MAX;
#ifdef NONMATCHING//
void sub_GAME_7F08DBB0(void)
pPlayer->standlook[pPlayer->standcnt][0] = ((f32)get_random_value() * mult - 0.5f) * 0.02f;
pPlayer->standlook[pPlayer->standcnt][2] = 1;
pPlayer->standup[pPlayer->standcnt][0] = ((f32)get_random_value() * mult - 0.5f) * 0.02f;
pPlayer->standup[pPlayer->standcnt][1] = 1;
if (pPlayer->standcnt) {
pPlayer->standlook[pPlayer->standcnt][1] = (f32)get_random_value() * mult * 0.01f;
pPlayer->standup[pPlayer->standcnt][2] = (f32)get_random_value() * mult * -0.01f;
} else {
pPlayer->standlook[pPlayer->standcnt][1] = (f32)get_random_value() * mult * -0.01f;
pPlayer->standup[pPlayer->standcnt][2] = (f32)get_random_value() * mult * 0.01f;
}
pPlayer->standcnt = 1 - pPlayer->standcnt;
}
void currentPlayerUpdateHeadPos(vec3 vel) {
s32 i;
if (pPlayer->resetheadpos) {
pPlayer->headpossum[0] = 0.0f;
pPlayer->headpossum[1] = (vel[1] / (1.0f - 0.93f));
pPlayer->headpossum[2] = 0.0f;
pPlayer->resetheadpos = FALSE;
}
for (i = 0; i < clock_timer; i++) {
pPlayer->headpossum[0] = ((0.93f * pPlayer->headpossum[0]) + vel[0]);
pPlayer->headpossum[1] = ((0.93f * pPlayer->headpossum[1]) + vel[1]);
pPlayer->headpossum[2] = ((0.93f * pPlayer->headpossum[2]) + vel[2]);
}
pPlayer->headpos[0] = (pPlayer->headpossum[0] * (1.0f - 0.93f));
pPlayer->headpos[1] = (pPlayer->headpossum[1] * (1.0f - 0.93f));
pPlayer->headpos[2] = (pPlayer->headpossum[2] * (1.0f - 0.93f));
}
void currentPlayerUpdateHeadRot(vec3 lookvel, vec3 upvel)
{
pPlayer->field_5BC = (pPlayer->field_5BC == 0);
s32 i;
if (pPlayer->resetheadrot) {
pPlayer->headlooksum[0] = lookvel[0] / (1.0f - pPlayer->headdamp);
pPlayer->headlooksum[1] = lookvel[1] / (1.0f - pPlayer->headdamp);
pPlayer->headlooksum[2] = lookvel[2] / (1.0f - pPlayer->headdamp);
pPlayer->headupsum[0] = upvel[0] / (1.0f - pPlayer->headdamp);
pPlayer->headupsum[1] = upvel[1] / (1.0f - pPlayer->headdamp);
pPlayer->headupsum[2] = upvel[2] / (1.0f - pPlayer->headdamp);
pPlayer->resetheadrot = FALSE;
}
for (i = 0; i < clock_timer; i++) {
pPlayer->headlooksum[0] = pPlayer->headdamp * pPlayer->headlooksum[0] + lookvel[0];
pPlayer->headlooksum[1] = pPlayer->headdamp * pPlayer->headlooksum[1] + lookvel[1];
pPlayer->headlooksum[2] = pPlayer->headdamp * pPlayer->headlooksum[2] + lookvel[2];
pPlayer->headupsum[0] = pPlayer->headdamp * pPlayer->headupsum[0] + upvel[0];
pPlayer->headupsum[1] = pPlayer->headdamp * pPlayer->headupsum[1] + upvel[1];
pPlayer->headupsum[2] = pPlayer->headdamp * pPlayer->headupsum[2] + upvel[2];
}
pPlayer->headlook[0] = pPlayer->headlooksum[0] * (1.0f - pPlayer->headdamp);
pPlayer->headlook[1] = pPlayer->headlooksum[1] * (1.0f - pPlayer->headdamp);
pPlayer->headlook[2] = pPlayer->headlooksum[2] * (1.0f - pPlayer->headdamp);
pPlayer->headup[0] = pPlayer->headupsum[0] * (1.0f - pPlayer->headdamp);
pPlayer->headup[1] = pPlayer->headupsum[1] * (1.0f - pPlayer->headdamp);
pPlayer->headup[2] = pPlayer->headupsum[2] * (1.0f - pPlayer->headdamp);
}
#else
GLOBAL_ASM(
.text
glabel sub_GAME_7F08DBB0
/* 0C26E0 7F08DBB0 3C038008 */ lui $v1, %hi(pPlayer)
/* 0C26E4 7F08DBB4 8C63A0B0 */ lw $v1, %lo(pPlayer)($v1)
/* 0C26E8 7F08DBB8 806205BC */ lb $v0, 0x5bc($v1)
/* 0C26EC 7F08DBBC 2C4E0001 */ sltiu $t6, $v0, 1
/* 0C26F0 7F08DBC0 03E00008 */ jr $ra
/* 0C26F4 7F08DBC4 A06E05BC */ sb $t6, 0x5bc($v1)
)
#endif
#ifdef NONMATCHING
void sub_GAME_7F08DBC8(void) {
}
#else
GLOBAL_ASM(
.late_rodata
glabel D_800552E0
.word 0x3ca3d70a /*0.02*/
glabel D_800552E4
.word 0x3ca3d70a /*0.02*/
glabel D_800552E8
.word 0x3c23d70a /*0.0099999998*/
glabel D_800552EC
.word 0xbc23d70a /*-0.0099999998*/
glabel D_800552F0
.word 0xbc23d70a /*-0.0099999998*/
glabel D_800552F4
.word 0x3c23d70a /*0.0099999998*/
.text
glabel sub_GAME_7F08DBC8
/* 0C26F8 7F08DBC8 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 0C26FC 7F08DBCC AFBF002C */ sw $ra, 0x2c($sp)
/* 0C2700 7F08DBD0 AFB20028 */ sw $s2, 0x28($sp)
/* 0C2704 7F08DBD4 AFB10024 */ sw $s1, 0x24($sp)
/* 0C2708 7F08DBD8 AFB00020 */ sw $s0, 0x20($sp)
/* 0C270C 7F08DBDC 0C002914 */ jal get_random_value
/* 0C2710 7F08DBE0 F7B40018 */ sdc1 $f20, 0x18($sp)
/* 0C2714 7F08DBE4 44822000 */ mtc1 $v0, $f4
/* 0C2718 7F08DBE8 3C118008 */ lui $s1, %hi(pPlayer)
/* 0C271C 7F08DBEC 3C012F80 */ li $at, 0x2F800000 # 0.000000
/* 0C2720 7F08DBF0 4481A000 */ mtc1 $at, $f20
/* 0C2724 7F08DBF4 2631A0B0 */ addiu $s1, %lo(pPlayer) # addiu $s1, $s1, -0x5f50
/* 0C2728 7F08DBF8 8E300000 */ lw $s0, ($s1)
/* 0C272C 7F08DBFC 2412000C */ li $s2, 12
/* 0C2730 7F08DC00 04410005 */ bgez $v0, .L7F08DC18
/* 0C2734 7F08DC04 468021A0 */ cvt.s.w $f6, $f4
/* 0C2738 7F08DC08 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000
/* 0C273C 7F08DC0C 44814000 */ mtc1 $at, $f8
/* 0C2740 7F08DC10 00000000 */ nop
/* 0C2744 7F08DC14 46083180 */ add.s $f6, $f6, $f8
.L7F08DC18:
/* 0C2748 7F08DC18 46143282 */ mul.s $f10, $f6, $f20
/* 0C274C 7F08DC1C 8E0E0594 */ lw $t6, 0x594($s0)
/* 0C2750 7F08DC20 3C013F00 */ li $at, 0x3F000000 # 0.500000
/* 0C2754 7F08DC24 44818000 */ mtc1 $at, $f16
/* 0C2758 7F08DC28 01D20019 */ multu $t6, $s2
/* 0C275C 7F08DC2C 3C018005 */ lui $at, %hi(D_800552E0)
/* 0C2760 7F08DC30 C42452E0 */ lwc1 $f4, %lo(D_800552E0)($at)
/* 0C2764 7F08DC34 46105481 */ sub.s $f18, $f10, $f16
/* 0C2768 7F08DC38 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 0C276C 7F08DC3C 44813000 */ mtc1 $at, $f6
/* 0C2770 7F08DC40 46049202 */ mul.s $f8, $f18, $f4
/* 0C2774 7F08DC44 00007812 */ mflo $t7
/* 0C2778 7F08DC48 020FC021 */ addu $t8, $s0, $t7
/* 0C277C 7F08DC4C E7080564 */ swc1 $f8, 0x564($t8)
/* 0C2780 7F08DC50 8E300000 */ lw $s0, ($s1)
/* 0C2784 7F08DC54 8E190594 */ lw $t9, 0x594($s0)
/* 0C2788 7F08DC58 03320019 */ multu $t9, $s2
/* 0C278C 7F08DC5C 00004012 */ mflo $t0
/* 0C2790 7F08DC60 02084821 */ addu $t1, $s0, $t0
/* 0C2794 7F08DC64 0C002914 */ jal get_random_value
/* 0C2798 7F08DC68 E526056C */ swc1 $f6, 0x56c($t1)
/* 0C279C 7F08DC6C 44825000 */ mtc1 $v0, $f10
/* 0C27A0 7F08DC70 8E300000 */ lw $s0, ($s1)
/* 0C27A4 7F08DC74 04410005 */ bgez $v0, .L7F08DC8C
/* 0C27A8 7F08DC78 46805420 */ cvt.s.w $f16, $f10
/* 0C27AC 7F08DC7C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000
/* 0C27B0 7F08DC80 44819000 */ mtc1 $at, $f18
/* 0C27B4 7F08DC84 00000000 */ nop
/* 0C27B8 7F08DC88 46128400 */ add.s $f16, $f16, $f18
.L7F08DC8C:
/* 0C27BC 7F08DC8C 46148102 */ mul.s $f4, $f16, $f20
/* 0C27C0 7F08DC90 8E0A0594 */ lw $t2, 0x594($s0)
/* 0C27C4 7F08DC94 3C013F00 */ li $at, 0x3F000000 # 0.500000
/* 0C27C8 7F08DC98 44814000 */ mtc1 $at, $f8
/* 0C27CC 7F08DC9C 01520019 */ multu $t2, $s2
/* 0C27D0 7F08DCA0 3C018005 */ lui $at, %hi(D_800552E4)
/* 0C27D4 7F08DCA4 C42A52E4 */ lwc1 $f10, %lo(D_800552E4)($at)
/* 0C27D8 7F08DCA8 46082181 */ sub.s $f6, $f4, $f8
/* 0C27DC 7F08DCAC 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 0C27E0 7F08DCB0 44818000 */ mtc1 $at, $f16
/* 0C27E4 7F08DCB4 460A3482 */ mul.s $f18, $f6, $f10
/* 0C27E8 7F08DCB8 00005812 */ mflo $t3
/* 0C27EC 7F08DCBC 020B6021 */ addu $t4, $s0, $t3
/* 0C27F0 7F08DCC0 E592057C */ swc1 $f18, 0x57c($t4)
/* 0C27F4 7F08DCC4 8E300000 */ lw $s0, ($s1)
/* 0C27F8 7F08DCC8 8E0D0594 */ lw $t5, 0x594($s0)
/* 0C27FC 7F08DCCC 01B20019 */ multu $t5, $s2
/* 0C2800 7F08DCD0 00007012 */ mflo $t6
/* 0C2804 7F08DCD4 020E7821 */ addu $t7, $s0, $t6
/* 0C2808 7F08DCD8 E5F00580 */ swc1 $f16, 0x580($t7)
/* 0C280C 7F08DCDC 8E380000 */ lw $t8, ($s1)
/* 0C2810 7F08DCE0 8F190594 */ lw $t9, 0x594($t8)
/* 0C2814 7F08DCE4 13200027 */ beqz $t9, .L7F08DD84
/* 0C2818 7F08DCE8 00000000 */ nop
/* 0C281C 7F08DCEC 0C002914 */ jal get_random_value
/* 0C2820 7F08DCF0 00000000 */ nop
/* 0C2824 7F08DCF4 44822000 */ mtc1 $v0, $f4
/* 0C2828 7F08DCF8 8E300000 */ lw $s0, ($s1)
/* 0C282C 7F08DCFC 04410005 */ bgez $v0, .L7F08DD14
/* 0C2830 7F08DD00 46802220 */ cvt.s.w $f8, $f4
/* 0C2834 7F08DD04 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000
/* 0C2838 7F08DD08 44813000 */ mtc1 $at, $f6
/* 0C283C 7F08DD0C 00000000 */ nop
/* 0C2840 7F08DD10 46064200 */ add.s $f8, $f8, $f6
.L7F08DD14:
/* 0C2844 7F08DD14 8E080594 */ lw $t0, 0x594($s0)
/* 0C2848 7F08DD18 46144282 */ mul.s $f10, $f8, $f20
/* 0C284C 7F08DD1C 3C018005 */ lui $at, %hi(D_800552E8)
/* 0C2850 7F08DD20 01120019 */ multu $t0, $s2
/* 0C2854 7F08DD24 C43252E8 */ lwc1 $f18, %lo(D_800552E8)($at)
/* 0C2858 7F08DD28 46125402 */ mul.s $f16, $f10, $f18
/* 0C285C 7F08DD2C 00004812 */ mflo $t1
/* 0C2860 7F08DD30 02095021 */ addu $t2, $s0, $t1
/* 0C2864 7F08DD34 0C002914 */ jal get_random_value
/* 0C2868 7F08DD38 E5500568 */ swc1 $f16, 0x568($t2)
/* 0C286C 7F08DD3C 44822000 */ mtc1 $v0, $f4
/* 0C2870 7F08DD40 8E300000 */ lw $s0, ($s1)
/* 0C2874 7F08DD44 04410005 */ bgez $v0, .L7F08DD5C
/* 0C2878 7F08DD48 468021A0 */ cvt.s.w $f6, $f4
/* 0C287C 7F08DD4C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000
/* 0C2880 7F08DD50 44814000 */ mtc1 $at, $f8
/* 0C2884 7F08DD54 00000000 */ nop
/* 0C2888 7F08DD58 46083180 */ add.s $f6, $f6, $f8
.L7F08DD5C:
/* 0C288C 7F08DD5C 8E0B0594 */ lw $t3, 0x594($s0)
/* 0C2890 7F08DD60 46143282 */ mul.s $f10, $f6, $f20
/* 0C2894 7F08DD64 3C018005 */ lui $at, %hi(D_800552EC)
/* 0C2898 7F08DD68 01720019 */ multu $t3, $s2
/* 0C289C 7F08DD6C C43252EC */ lwc1 $f18, %lo(D_800552EC)($at)
/* 0C28A0 7F08DD70 46125402 */ mul.s $f16, $f10, $f18
/* 0C28A4 7F08DD74 00006012 */ mflo $t4
/* 0C28A8 7F08DD78 020C6821 */ addu $t5, $s0, $t4
/* 0C28AC 7F08DD7C 10000026 */ b .L7F08DE18
/* 0C28B0 7F08DD80 E5B00584 */ swc1 $f16, 0x584($t5)
.L7F08DD84:
/* 0C28B4 7F08DD84 0C002914 */ jal get_random_value
/* 0C28B8 7F08DD88 00000000 */ nop
/* 0C28BC 7F08DD8C 44822000 */ mtc1 $v0, $f4
/* 0C28C0 7F08DD90 8E300000 */ lw $s0, ($s1)
/* 0C28C4 7F08DD94 04410005 */ bgez $v0, .L7F08DDAC
/* 0C28C8 7F08DD98 46802220 */ cvt.s.w $f8, $f4
/* 0C28CC 7F08DD9C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000
/* 0C28D0 7F08DDA0 44813000 */ mtc1 $at, $f6
/* 0C28D4 7F08DDA4 00000000 */ nop
/* 0C28D8 7F08DDA8 46064200 */ add.s $f8, $f8, $f6
.L7F08DDAC:
/* 0C28DC 7F08DDAC 8E0E0594 */ lw $t6, 0x594($s0)
/* 0C28E0 7F08DDB0 46144282 */ mul.s $f10, $f8, $f20
/* 0C28E4 7F08DDB4 3C018005 */ lui $at, %hi(D_800552F0)
/* 0C28E8 7F08DDB8 01D20019 */ multu $t6, $s2
/* 0C28EC 7F08DDBC C43252F0 */ lwc1 $f18, %lo(D_800552F0)($at)
/* 0C28F0 7F08DDC0 46125402 */ mul.s $f16, $f10, $f18
/* 0C28F4 7F08DDC4 00007812 */ mflo $t7
/* 0C28F8 7F08DDC8 020FC021 */ addu $t8, $s0, $t7
/* 0C28FC 7F08DDCC 0C002914 */ jal get_random_value
/* 0C2900 7F08DDD0 E7100568 */ swc1 $f16, 0x568($t8)
/* 0C2904 7F08DDD4 44822000 */ mtc1 $v0, $f4
/* 0C2908 7F08DDD8 8E300000 */ lw $s0, ($s1)
/* 0C290C 7F08DDDC 04410005 */ bgez $v0, .L7F08DDF4
/* 0C2910 7F08DDE0 468021A0 */ cvt.s.w $f6, $f4
/* 0C2914 7F08DDE4 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000
/* 0C2918 7F08DDE8 44814000 */ mtc1 $at, $f8
/* 0C291C 7F08DDEC 00000000 */ nop
/* 0C2920 7F08DDF0 46083180 */ add.s $f6, $f6, $f8
.L7F08DDF4:
/* 0C2924 7F08DDF4 8E190594 */ lw $t9, 0x594($s0)
/* 0C2928 7F08DDF8 46143282 */ mul.s $f10, $f6, $f20
/* 0C292C 7F08DDFC 3C018005 */ lui $at, %hi(D_800552F4)
/* 0C2930 7F08DE00 03320019 */ multu $t9, $s2
/* 0C2934 7F08DE04 C43252F4 */ lwc1 $f18, %lo(D_800552F4)($at)
/* 0C2938 7F08DE08 46125402 */ mul.s $f16, $f10, $f18
/* 0C293C 7F08DE0C 00004012 */ mflo $t0
/* 0C2940 7F08DE10 02084821 */ addu $t1, $s0, $t0
/* 0C2944 7F08DE14 E5300584 */ swc1 $f16, 0x584($t1)
.L7F08DE18:
/* 0C2948 7F08DE18 8E300000 */ lw $s0, ($s1)
/* 0C294C 7F08DE1C 240B0001 */ li $t3, 1
/* 0C2950 7F08DE20 8E0A0594 */ lw $t2, 0x594($s0)
/* 0C2954 7F08DE24 016A6023 */ subu $t4, $t3, $t2
/* 0C2958 7F08DE28 AE0C0594 */ sw $t4, 0x594($s0)
/* 0C295C 7F08DE2C 8FBF002C */ lw $ra, 0x2c($sp)
/* 0C2960 7F08DE30 8FB20028 */ lw $s2, 0x28($sp)
/* 0C2964 7F08DE34 8FB10024 */ lw $s1, 0x24($sp)
/* 0C2968 7F08DE38 8FB00020 */ lw $s0, 0x20($sp)
/* 0C296C 7F08DE3C D7B40018 */ ldc1 $f20, 0x18($sp)
/* 0C2970 7F08DE40 03E00008 */ jr $ra
/* 0C2974 7F08DE44 27BD0030 */ addiu $sp, $sp, 0x30
)
#endif
#ifdef NONMATCHING
void sub_GAME_7F08DE48(struct xyzpoint *param_1)
void currentPlayerSetHeadDamp(f32 headdamp)
{
int i;
if (pPlayer->field_4DC != 0)
{
(pPlayer->velocity).x = 0.00000000f;
(pPlayer->velocity).y = param_1->y / 0.06999999f;
(pPlayer->velocity).z = 0.00000000f;
pPlayer->field_4DC = 0;
}
for (i = 0; i < clock_timer; ++i)
{
//wrong register allocation for mult
(pPlayer->velocity).x = param_1->x + ((pPlayer->velocity).x * 0.93f);
(pPlayer->velocity).y = param_1->y + ((pPlayer->velocity).y * 0.93f);
(pPlayer->velocity).z = param_1->z + ((pPlayer->velocity).z * 0.93f);
}
(pPlayer->scaled_velocity).x = (pPlayer->velocity).x * 0.06999999f;
(pPlayer->scaled_velocity).y = (pPlayer->velocity).y * 0.06999999f;
(pPlayer->scaled_velocity).z = (pPlayer->velocity).z * 0.06999999f;
if (headdamp != pPlayer->headdamp) {
f32 divisor = 1.0f - headdamp;
pPlayer->headlooksum[0] = (pPlayer->headlooksum[0] * (1.0f - pPlayer->headdamp)) / divisor;
pPlayer->headlooksum[1] = (pPlayer->headlooksum[1] * (1.0f - pPlayer->headdamp)) / divisor;
pPlayer->headlooksum[2] = (pPlayer->headlooksum[2] * (1.0f - pPlayer->headdamp)) / divisor;
pPlayer->headupsum[0] = (pPlayer->headupsum[0] * (1.0f - pPlayer->headdamp)) / divisor;
pPlayer->headupsum[1] = (pPlayer->headupsum[1] * (1.0f - pPlayer->headdamp)) / divisor;
pPlayer->headupsum[2] = (pPlayer->headupsum[2] * (1.0f - pPlayer->headdamp)) / divisor;
pPlayer->headdamp = headdamp;
}
}
#else
GLOBAL_ASM(
.late_rodata
glabel D_800552F8
.word 0x3d8f5c28 /*0.069999993*/
glabel master_player_perspective
.word 0x3d8f5c28 /*0.069999993*/
glabel D_80055300
.word 0x3f6e147b /*0.93000001*/
.text
glabel sub_GAME_7F08DE48
/* 0C2978 7F08DE48 3C058008 */ lui $a1, %hi(pPlayer)
/* 0C297C 7F08DE4C 24A5A0B0 */ addiu $a1, %lo(pPlayer) # addiu $a1, $a1, -0x5f50
/* 0C2980 7F08DE50 8CA20000 */ lw $v0, ($a1)
/* 0C2984 7F08DE54 3C068005 */ lui $a2, %hi(clock_timer)
/* 0C2988 7F08DE58 24C68374 */ addiu $a2, %lo(clock_timer) # addiu $a2, $a2, -0x7c8c
/* 0C298C 7F08DE5C 8C4E04DC */ lw $t6, 0x4dc($v0)
/* 0C2990 7F08DE60 51C0000E */ beql $t6, $zero, .L7F08DE9C
/* 0C2994 7F08DE64 8CC80000 */ lw $t0, ($a2)
/* 0C2998 7F08DE68 44800000 */ mtc1 $zero, $f0
/* 0C299C 7F08DE6C 3C018005 */ lui $at, %hi(D_800552F8)
/* 0C29A0 7F08DE70 C42252F8 */ lwc1 $f2, %lo(D_800552F8)($at)
/* 0C29A4 7F08DE74 E4400520 */ swc1 $f0, 0x520($v0)
/* 0C29A8 7F08DE78 C4840004 */ lwc1 $f4, 4($a0)
/* 0C29AC 7F08DE7C 8CAF0000 */ lw $t7, ($a1)
/* 0C29B0 7F08DE80 46022183 */ div.s $f6, $f4, $f2
/* 0C29B4 7F08DE84 E5E60524 */ swc1 $f6, 0x524($t7)
/* 0C29B8 7F08DE88 8CB80000 */ lw $t8, ($a1)
/* 0C29BC 7F08DE8C E7000528 */ swc1 $f0, 0x528($t8)
/* 0C29C0 7F08DE90 8CB90000 */ lw $t9, ($a1)
/* 0C29C4 7F08DE94 AF2004DC */ sw $zero, 0x4dc($t9)
/* 0C29C8 7F08DE98 8CC80000 */ lw $t0, ($a2)
.L7F08DE9C:
/* 0C29CC 7F08DE9C 3C018005 */ lui $at, %hi(master_player_perspective)
/* 0C29D0 7F08DEA0 C42252FC */ lwc1 $f2, %lo(master_player_perspective)($at)
/* 0C29D4 7F08DEA4 1900001A */ blez $t0, .L7F08DF10
/* 0C29D8 7F08DEA8 00001825 */ move $v1, $zero
/* 0C29DC 7F08DEAC 3C018005 */ lui $at, %hi(D_80055300)
/* 0C29E0 7F08DEB0 C4205300 */ lwc1 $f0, %lo(D_80055300)($at)
/* 0C29E4 7F08DEB4 8CA20000 */ lw $v0, ($a1)
.L7F08DEB8:
/* 0C29E8 7F08DEB8 C4880000 */ lwc1 $f8, ($a0)
/* 0C29EC 7F08DEBC 24630001 */ addiu $v1, $v1, 1
/* 0C29F0 7F08DEC0 C44A0520 */ lwc1 $f10, 0x520($v0)
/* 0C29F4 7F08DEC4 460A0402 */ mul.s $f16, $f0, $f10
/* 0C29F8 7F08DEC8 46104480 */ add.s $f18, $f8, $f16
/* 0C29FC 7F08DECC E4520520 */ swc1 $f18, 0x520($v0)
/* 0C2A00 7F08DED0 8CA20000 */ lw $v0, ($a1)
/* 0C2A04 7F08DED4 C4840004 */ lwc1 $f4, 4($a0)
/* 0C2A08 7F08DED8 C4460524 */ lwc1 $f6, 0x524($v0)
/* 0C2A0C 7F08DEDC 46060282 */ mul.s $f10, $f0, $f6
/* 0C2A10 7F08DEE0 460A2200 */ add.s $f8, $f4, $f10
/* 0C2A14 7F08DEE4 E4480524 */ swc1 $f8, 0x524($v0)
/* 0C2A18 7F08DEE8 8CA20000 */ lw $v0, ($a1)
/* 0C2A1C 7F08DEEC C4900008 */ lwc1 $f16, 8($a0)
/* 0C2A20 7F08DEF0 C4520528 */ lwc1 $f18, 0x528($v0)
/* 0C2A24 7F08DEF4 46120182 */ mul.s $f6, $f0, $f18
/* 0C2A28 7F08DEF8 46068100 */ add.s $f4, $f16, $f6
/* 0C2A2C 7F08DEFC E4440528 */ swc1 $f4, 0x528($v0)
/* 0C2A30 7F08DF00 8CC90000 */ lw $t1, ($a2)
/* 0C2A34 7F08DF04 0069082A */ slt $at, $v1, $t1
/* 0C2A38 7F08DF08 5420FFEB */ bnezl $at, .L7F08DEB8
/* 0C2A3C 7F08DF0C 8CA20000 */ lw $v0, ($a1)
.L7F08DF10:
/* 0C2A40 7F08DF10 8CA20000 */ lw $v0, ($a1)
/* 0C2A44 7F08DF14 C44A0520 */ lwc1 $f10, 0x520($v0)
/* 0C2A48 7F08DF18 46025202 */ mul.s $f8, $f10, $f2
/* 0C2A4C 7F08DF1C E44804FC */ swc1 $f8, 0x4fc($v0)
/* 0C2A50 7F08DF20 8CA20000 */ lw $v0, ($a1)
/* 0C2A54 7F08DF24 C4520524 */ lwc1 $f18, 0x524($v0)
/* 0C2A58 7F08DF28 46029402 */ mul.s $f16, $f18, $f2
/* 0C2A5C 7F08DF2C E4500500 */ swc1 $f16, 0x500($v0)
/* 0C2A60 7F08DF30 8CA20000 */ lw $v0, ($a1)
/* 0C2A64 7F08DF34 C4460528 */ lwc1 $f6, 0x528($v0)
/* 0C2A68 7F08DF38 46023102 */ mul.s $f4, $f6, $f2
/* 0C2A6C 7F08DF3C 03E00008 */ jr $ra
/* 0C2A70 7F08DF40 E4440504 */ swc1 $f4, 0x504($v0)
)
#endif
void sub_GAME_7F08DF44(struct xyzpoint *param_1, struct xyzpoint *param_2)
{
int i;
if (pPlayer->field_4E0 != 0)
{
(pPlayer->field_52C).x = param_1->x / (1.0f - pPlayer->field_4EC);
(pPlayer->field_52C).y = param_1->y / (1.0f - pPlayer->field_4EC);
(pPlayer->field_52C).z = param_1->z / (1.0f - pPlayer->field_4EC);
(pPlayer->field_538).x = param_2->x / (1.0f - pPlayer->field_4EC);
(pPlayer->field_538).y = param_2->y / (1.0f - pPlayer->field_4EC);
(pPlayer->field_538).z = param_2->z / (1.0f - pPlayer->field_4EC);
pPlayer->field_4E0 = 0;
}
for (i = 0; i < clock_timer; ++i)
{
(pPlayer->field_52C).x = param_1->x + pPlayer->field_4EC * (pPlayer->field_52C).x;
(pPlayer->field_52C).y = param_1->y + pPlayer->field_4EC * (pPlayer->field_52C).y;
(pPlayer->field_52C).z = param_1->z + pPlayer->field_4EC * (pPlayer->field_52C).z;
(pPlayer->field_538).x = param_2->x + pPlayer->field_4EC * (pPlayer->field_538).x;
(pPlayer->field_538).y = param_2->y + pPlayer->field_4EC * (pPlayer->field_538).y;
(pPlayer->field_538).z = param_2->z + pPlayer->field_4EC * (pPlayer->field_538).z;
}
(pPlayer->field_508).x = (pPlayer->field_52C).x * (1.0f - pPlayer->field_4EC);
(pPlayer->field_508).y = (pPlayer->field_52C).y * (1.0f - pPlayer->field_4EC);
(pPlayer->field_508).z = (pPlayer->field_52C).z * (1.0f - pPlayer->field_4EC);
(pPlayer->field_514).x = (pPlayer->field_538).x * (1.0f - pPlayer->field_4EC);
(pPlayer->field_514).y = (pPlayer->field_538).y * (1.0f - pPlayer->field_4EC);
(pPlayer->field_514).z = (pPlayer->field_538).z * (1.0f - pPlayer->field_4EC);
}
void sub_GAME_7F08E164(float param_1)
{
float fVar1;
if (param_1 != pPlayer->field_4EC) {
fVar1 = 1.0f - param_1;
(pPlayer->field_52C).x = ((pPlayer->field_52C).x * (1.0f - pPlayer->field_4EC)) / fVar1;
(pPlayer->field_52C).y = ((pPlayer->field_52C).y * (1.0f - pPlayer->field_4EC)) / fVar1;
(pPlayer->field_52C).z = ((pPlayer->field_52C).z * (1.0f - pPlayer->field_4EC)) / fVar1;
(pPlayer->field_538).x = ((pPlayer->field_538).x * (1.0f - pPlayer->field_4EC)) / fVar1;
(pPlayer->field_538).y = ((pPlayer->field_538).y * (1.0f - pPlayer->field_4EC)) / fVar1;
(pPlayer->field_538).z = ((pPlayer->field_538).z * (1.0f - pPlayer->field_4EC)) / fVar1;
pPlayer->field_4EC = param_1;
}
}
#ifdef NONMATCHING
void sub_GAME_7F08E240(void) {
@@ -745,13 +456,13 @@ glabel sub_GAME_7F08E240
/* 0C3174 7F08E644 2B01003D */ slti $at, $t8, 0x3d
/* 0C3178 7F08E648 14200005 */ bnez $at, .L7F08E660
/* 0C317C 7F08E64C 3C018005 */ lui $at, %hi(D_80055320)
/* 0C3180 7F08E650 0FC23859 */ jal sub_GAME_7F08E164
/* 0C3180 7F08E650 0FC23859 */ jal currentPlayerSetHeadDamp
/* 0C3184 7F08E654 C42C5320 */ lwc1 $f12, %lo(D_80055320)($at)
/* 0C3188 7F08E658 1000008E */ b .L7F08E894
/* 0C318C 7F08E65C 00000000 */ nop
.L7F08E660:
/* 0C3190 7F08E660 3C018005 */ lui $at, %hi(D_80055324)
/* 0C3194 7F08E664 0FC23859 */ jal sub_GAME_7F08E164
/* 0C3194 7F08E664 0FC23859 */ jal currentPlayerSetHeadDamp
/* 0C3198 7F08E668 C42C5324 */ lwc1 $f12, %lo(D_80055324)($at)
/* 0C319C 7F08E66C 10000089 */ b .L7F08E894
/* 0C31A0 7F08E670 00000000 */ nop
@@ -769,7 +480,7 @@ glabel sub_GAME_7F08E240
/* 0C31CC 7F08E69C C44806E4 */ lwc1 $f8, 0x6e4($v0)
/* 0C31D0 7F08E6A0 E7A800C8 */ swc1 $f8, 0xc8($sp)
/* 0C31D4 7F08E6A4 C44A06E8 */ lwc1 $f10, 0x6e8($v0)
/* 0C31D8 7F08E6A8 0FC23859 */ jal sub_GAME_7F08E164
/* 0C31D8 7F08E6A8 0FC23859 */ jal currentPlayerSetHeadDamp
/* 0C31DC 7F08E6AC E7AA00CC */ swc1 $f10, 0xcc($sp)
/* 0C31E0 7F08E6B0 10000078 */ b .L7F08E894
/* 0C31E4 7F08E6B4 00000000 */ nop
@@ -790,7 +501,7 @@ glabel sub_GAME_7F08E240
/* 0C321C 7F08E6EC E7A000E4 */ swc1 $f0, 0xe4($sp)
/* 0C3220 7F08E6F0 E7A600E0 */ swc1 $f6, 0xe0($sp)
/* 0C3224 7F08E6F4 AC4004F0 */ sw $zero, 0x4f0($v0)
/* 0C3228 7F08E6F8 0FC23859 */ jal sub_GAME_7F08E164
/* 0C3228 7F08E6F8 0FC23859 */ jal currentPlayerSetHeadDamp
/* 0C322C 7F08E6FC C42C532C */ lwc1 $f12, %lo(D_8005532C)($at)
/* 0C3230 7F08E700 0FC227B5 */ jal get_BONDdata_bondfadefracnew
/* 0C3234 7F08E704 00000000 */ nop
@@ -816,7 +527,7 @@ glabel sub_GAME_7F08E240
/* 0C3284 7F08E754 00000000 */ nop
/* 0C3288 7F08E758 4502000C */ bc1fl .L7F08E78C
/* 0C328C 7F08E75C 8C430594 */ lw $v1, 0x594($v0)
/* 0C3290 7F08E760 0FC236F2 */ jal sub_GAME_7F08DBC8
/* 0C3290 7F08E760 0FC236F2 */ jal currentPlayerUpdateIdleHeadRoll
/* 0C3294 7F08E764 00000000 */ nop
/* 0C3298 7F08E768 8E020000 */ lw $v0, ($s0)
/* 0C329C 7F08E76C 3C013F80 */ li $at, 0x3F800000 # 1.000000
@@ -895,10 +606,10 @@ glabel sub_GAME_7F08E240
/* 0C33BC 7F08E88C 46049282 */ mul.s $f10, $f18, $f4
/* 0C33C0 7F08E890 E7AA00CC */ swc1 $f10, 0xcc($sp)
.L7F08E894:
/* 0C33C4 7F08E894 0FC23792 */ jal sub_GAME_7F08DE48
/* 0C33C4 7F08E894 0FC23792 */ jal currentPlayerUpdateHeadPos
/* 0C33C8 7F08E898 27A400DC */ addiu $a0, $sp, 0xdc
/* 0C33CC 7F08E89C 27A400D0 */ addiu $a0, $sp, 0xd0
/* 0C33D0 7F08E8A0 0FC237D1 */ jal sub_GAME_7F08DF44
/* 0C33D0 7F08E8A0 0FC237D1 */ jal currentPlayerUpdateHeadRot
/* 0C33D4 7F08E8A4 27A500C4 */ addiu $a1, $sp, 0xc4
/* 0C33D8 7F08E8A8 8FBF001C */ lw $ra, 0x1c($sp)
/* 0C33DC 7F08E8AC 8FB00018 */ lw $s0, 0x18($sp)
@@ -990,8 +701,8 @@ glabel sub_GAME_7F08E8BC
/* 0C34F0 7F08E9C0 24840598 */ addiu $a0, $a0, 0x598
/* 0C34F4 7F08E9C4 3C048008 */ lui $a0, %hi(pPlayer)
/* 0C34F8 7F08E9C8 8C84A0B0 */ lw $a0, %lo(pPlayer)($a0)
/* 0C34FC 7F08E9CC 3C057F09 */ lui $a1, %hi(sub_GAME_7F08DBB0) # $a1, 0x7f09
/* 0C3500 7F08E9D0 24A5DBB0 */ addiu $a1, %lo(sub_GAME_7F08DBB0) # addiu $a1, $a1, -0x2450
/* 0C34FC 7F08E9CC 3C057F09 */ lui $a1, %hi(currentPlayerToggle5BC) # $a1, 0x7f09
/* 0C3500 7F08E9D0 24A5DBB0 */ addiu $a1, %lo(currentPlayerToggle5BC) # addiu $a1, $a1, -0x2450
/* 0C3504 7F08E9D4 0FC1BF8F */ jal sub_GAME_7F06FE3C
/* 0C3508 7F08E9D8 24840598 */ addiu $a0, $a0, 0x598
/* 0C350C 7F08E9DC 3C198008 */ lui $t9, %hi(pPlayer)
@@ -1637,12 +1348,28 @@ glabel sub_GAME_7F08EFA0
#endif
#ifdef NONMATCHING
void sub_GAME_7F08F090(void) {
struct Pad* sub_GAME_7F08F090(s32 *padNumList,s32 desiredDist, u32 setIndex) // findPadWithDistAndSet
{
s32 padNum;
struct Pad *currPad;
padNum = padNumList[0];
while (padNum >= 0)
{
currPad = ptr_setup_path_tbl + padNum;
if (setIndex == currPad->pathSetIndex) {
if (desiredDist == currPad->dist_tmp) {
return currPad;
}
}
padNumList += 1;
padNum = *padNumList;
}
return (struct Pad*)0;
}
#else
GLOBAL_ASM(
@@ -1680,7 +1407,6 @@ glabel sub_GAME_7F08F090
#ifdef NONMATCHING
void sub_GAME_7F08F0E8(void) {
@@ -1859,9 +1585,26 @@ glabel sub_GAME_7F08F1D8
#ifdef NONMATCHING
void sub_GAME_7F08F2CC(void) {
#ifdef NONMATCHING
void sub_GAME_7F08F2CC(struct Pad *startPad,struct Pad *endPad)
{
s32 dist;
sub_GAME_7F08F1D8(startPad,endPad,0); // do_BFS_withinPathSet
dist = endPad->dist_tmp + -1;
while (dist >= 0) {
endPad->dist_tmp = endPad->dist_tmp + 10000;
endPad = sub_GAME_7F08F090(endPad->neighbours,dist,startPad->pathSetIndex); // findPadWithDistAndSet
dist = dist + -1;
}
dist = endPad->dist_tmp;
endPad->dist_tmp = dist + 10000;
return;
}
#else
GLOBAL_ASM(
+1 -1
View File
@@ -610,7 +610,7 @@ glabel sub_GAME_7F09166C
#ifdef NONMATCHING
void sub_GAME_7F0916F4(void)
{
struct xyzpoint *pos;
struct coord *pos;
pos = get_BONDdata_position();
stanbondx.x = pos->x;
+98 -147
View File
@@ -8,17 +8,14 @@
s32 copyof_stagenum;
s32 dword_CODE_bss_80079E94;
char dword_CODE_bss_80079E98[0x48];
u32 *ptr_BONDdata_p1;
u32 *ptr_BONDdata_p2;
u32 *ptr_BONDdata_p3;
u32 *ptr_BONDdata_p4;
struct player *players[4];
struct player_data player1_player_data;
struct player_data player2_player_data;
struct player_data player3_player_data;
struct player_data player4_player_data;
struct Player *pPlayer;
struct player *pPlayer;
struct player_data *pPlayersPerm;
s32 player_num;
s32 random_byte;
@@ -38,7 +35,7 @@ void sub_GAME_7F093880(f32 arg0, f32 arg1, ? arg2) {
s32 sp24;
// Node 0
sp24 = sub_GAME_7F078444();
sp24 = currentPlayerGetMatrix10D4();
sp1C = (f32) (getPlayer_c_screenleft() + arg0);
sp18 = getPlayer_c_screentop();
sp20 = (f32) (get_ptr_currentdata()->unk38 + (arg1 + sp18));
@@ -54,7 +51,7 @@ glabel sub_GAME_7F093880
/* 0C83B4 7F093884 AFBF0014 */ sw $ra, 0x14($sp)
/* 0C83B8 7F093888 E7AC0028 */ swc1 $f12, 0x28($sp)
/* 0C83BC 7F09388C E7AE002C */ swc1 $f14, 0x2c($sp)
/* 0C83C0 7F093890 0FC1E111 */ jal sub_GAME_7F078444
/* 0C83C0 7F093890 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 0C83C4 7F093894 AFA60030 */ sw $a2, 0x30($sp)
/* 0C83C8 7F093898 0FC1E131 */ jal getPlayer_c_screenleft
/* 0C83CC 7F09389C AFA20024 */ sw $v0, 0x24($sp)
@@ -1178,7 +1175,7 @@ glabel sub_GAME_7F094488
/* 0C9004 7F0944D4 8FA406B0 */ lw $a0, 0x6b0($sp)
/* 0C9008 7F0944D8 55C0007B */ bnezl $t6, .L7F0946C8
/* 0C900C 7F0944DC 92050008 */ lbu $a1, 8($s0)
/* 0C9010 7F0944E0 0FC26919 */ jal get_num_players
/* 0C9010 7F0944E0 0FC26919 */ jal getPlayerCount
/* 0C9014 7F0944E4 00000000 */ nop
/* 0C9018 7F0944E8 24010001 */ li $at, 1
/* 0C901C 7F0944EC 1441003B */ bne $v0, $at, .L7F0945DC
@@ -1198,15 +1195,15 @@ glabel sub_GAME_7F094488
/* 0C9054 7F094524 8FA406B0 */ lw $a0, 0x6b0($sp)
/* 0C9058 7F094528 244B0008 */ addiu $t3, $v0, 8
/* 0C905C 7F09452C AFAB06B0 */ sw $t3, 0x6b0($sp)
/* 0C9060 7F094530 0C001127 */ jal get_video2_settings_width
/* 0C9060 7F094530 0C001127 */ jal viGetViewWidth
/* 0C9064 7F094534 00408825 */ move $s1, $v0
/* 0C9068 7F094538 0C001145 */ jal get_video2_settings_ulx
/* 0C9068 7F094538 0C001145 */ jal viGetViewLeft
/* 0C906C 7F09453C A7A2007A */ sh $v0, 0x7a($sp)
/* 0C9070 7F094540 0C001149 */ jal get_video2_settings_uly
/* 0C9070 7F094540 0C001149 */ jal viGetViewTop
/* 0C9074 7F094544 A7A2007C */ sh $v0, 0x7c($sp)
/* 0C9078 7F094548 00028400 */ sll $s0, $v0, 0x10
/* 0C907C 7F09454C 00106403 */ sra $t4, $s0, 0x10
/* 0C9080 7F094550 0C00112B */ jal get_video2_settings_height
/* 0C9080 7F094550 0C00112B */ jal viGetViewHeight
/* 0C9084 7F094554 01808025 */ move $s0, $t4
/* 0C9088 7F094558 87AD007C */ lh $t5, 0x7c($sp)
/* 0C908C 7F09455C 87AE007A */ lh $t6, 0x7a($sp)
@@ -1221,11 +1218,11 @@ glabel sub_GAME_7F094488
/* 0C90B0 7F094580 01C17825 */ or $t7, $t6, $at
/* 0C90B4 7F094584 00195380 */ sll $t2, $t9, 0xe
/* 0C90B8 7F094588 01EAC025 */ or $t8, $t7, $t2
/* 0C90BC 7F09458C 0C001145 */ jal get_video2_settings_ulx
/* 0C90BC 7F09458C 0C001145 */ jal viGetViewLeft
/* 0C90C0 7F094590 AE380000 */ sw $t8, ($s1)
/* 0C90C4 7F094594 00028400 */ sll $s0, $v0, 0x10
/* 0C90C8 7F094598 0010CC03 */ sra $t9, $s0, 0x10
/* 0C90CC 7F09459C 0C001149 */ jal get_video2_settings_uly
/* 0C90CC 7F09459C 0C001149 */ jal viGetViewTop
/* 0C90D0 7F0945A0 03208025 */ move $s0, $t9
/* 0C90D4 7F0945A4 304B03FF */ andi $t3, $v0, 0x3ff
/* 0C90D8 7F0945A8 320D03FF */ andi $t5, $s0, 0x3ff
@@ -2409,9 +2406,9 @@ def_7F094A38:
.L7F0957AC:
/* 0CA2DC 7F0957AC 5A20018E */ blezl $s1, .L7F095DE8
/* 0CA2E0 7F0957B0 8FAA005C */ lw $t2, 0x5c($sp)
/* 0CA2E4 7F0957B4 0FC1E0F9 */ jal get_BONDdata_field_10DC
/* 0CA2E4 7F0957B4 0FC1E0F9 */ jal currentPlayerGetProjectionMatrixF
/* 0CA2E8 7F0957B8 00000000 */ nop
/* 0CA2EC 7F0957BC 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 0CA2EC 7F0957BC 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 0CA2F0 7F0957C0 00408025 */ move $s0, $v0
/* 0CA2F4 7F0957C4 02002025 */ move $a0, $s0
/* 0CA2F8 7F0957C8 00402825 */ move $a1, $v0
@@ -3939,9 +3936,9 @@ def_7F095E0C:
/* 0CBA18 7F096EE8 3739FE81 */ ori $t9, (0xFC40FE81 & 0xFFFF) # ori $t9, $t9, 0xfe81
/* 0CBA1C 7F096EEC 35ADF97C */ ori $t5, (0x55FEF97C & 0xFFFF) # ori $t5, $t5, 0xf97c
/* 0CBA20 7F096EF0 ADED0004 */ sw $t5, 4($t7)
/* 0CBA24 7F096EF4 0FC1E0F9 */ jal get_BONDdata_field_10DC
/* 0CBA24 7F096EF4 0FC1E0F9 */ jal currentPlayerGetProjectionMatrixF
/* 0CBA28 7F096EF8 ADF90000 */ sw $t9, ($t7)
/* 0CBA2C 7F096EFC 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 0CBA2C 7F096EFC 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 0CBA30 7F096F00 00408025 */ move $s0, $v0
/* 0CBA34 7F096F04 02002025 */ move $a0, $s0
/* 0CBA38 7F096F08 00402825 */ move $a1, $v0
@@ -7516,10 +7513,10 @@ glabel default_player_perspective_and_height
#ifdef NONMATCHING
void reset_play_data_ptrs(void)
{
ptr_BONDdata_p1[0] = NULL;
ptr_BONDdata_p1[1] = NULL;
ptr_BONDdata_p1[2] = NULL;
ptr_BONDdata_p1[3] = NULL;
players[0] = NULL;
players[1] = NULL;
players[2] = NULL;
players[3] = NULL;
pPlayer = NULL;
pPlayersPerm = NULL;
player_num = 0;
@@ -7533,8 +7530,8 @@ void reset_play_data_ptrs(void)
GLOBAL_ASM(
.text
glabel reset_play_data_ptrs
/* 0CEE5C 7F09A32C 3C028008 */ lui $v0, %hi(ptr_BONDdata_p1)
/* 0CEE60 7F09A330 24429EE0 */ addiu $v0, %lo(ptr_BONDdata_p1) # addiu $v0, $v0, -0x6120
/* 0CEE5C 7F09A32C 3C028008 */ lui $v0, %hi(players)
/* 0CEE60 7F09A330 24429EE0 */ addiu $v0, %lo(players) # addiu $v0, $v0, -0x6120
/* 0CEE64 7F09A334 AC400000 */ sw $zero, ($v0)
/* 0CEE68 7F09A338 AC400004 */ sw $zero, 4($v0)
/* 0CEE6C 7F09A33C AC400008 */ sw $zero, 8($v0)
@@ -7568,17 +7565,17 @@ void init_player_data_ptrs_construct_viewports(int playercount)
{
int player;
ptr_BONDdata_p1[0] = NULL;
ptr_BONDdata_p1[1] = NULL;
ptr_BONDdata_p1[2] = NULL;
ptr_BONDdata_p1[3] = NULL;
players[0] = NULL;
players[1] = NULL;
players[2] = NULL;
players[3] = NULL;
random_byte = get_random_value() & 0xff;
if (playercount < 1) {
initBONDdataforPlayer(0);
set_cur_player(0);
set_cur_player_screen_size( get_video2_settings_width(), get_video2_settings_height() );
set_cur_player_viewport_size( get_video2_settings_ulx(), get_video2_settings_uly() );
set_cur_player_screen_size( viGetViewWidth(), viGetViewHeight() );
set_cur_player_viewport_size( viGetViewLeft(), viGetViewTop() );
}
else {
for (player = 0; player != playercount; player++)
@@ -7593,8 +7590,8 @@ void init_player_data_ptrs_construct_viewports(int playercount)
GLOBAL_ASM(
.text
glabel init_player_data_ptrs_construct_viewports
/* 0CEEBC 7F09A38C 3C028008 */ lui $v0, %hi(ptr_BONDdata_p1)
/* 0CEEC0 7F09A390 24429EE0 */ addiu $v0, %lo(ptr_BONDdata_p1) # addiu $v0, $v0, -0x6120
/* 0CEEBC 7F09A38C 3C028008 */ lui $v0, %hi(players)
/* 0CEEC0 7F09A390 24429EE0 */ addiu $v0, %lo(players) # addiu $v0, $v0, -0x6120
/* 0CEEC4 7F09A394 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0CEEC8 7F09A398 AFBF001C */ sw $ra, 0x1c($sp)
/* 0CEECC 7F09A39C AFB10018 */ sw $s1, 0x18($sp)
@@ -7627,20 +7624,20 @@ glabel init_player_data_ptrs_construct_viewports
/* 0CEF2C 7F09A3FC 00002025 */ move $a0, $zero
/* 0CEF30 7F09A400 0FC26C43 */ jal set_cur_player
/* 0CEF34 7F09A404 00002025 */ move $a0, $zero
/* 0CEF38 7F09A408 0C001127 */ jal get_video2_settings_width
/* 0CEF38 7F09A408 0C001127 */ jal viGetViewWidth
/* 0CEF3C 7F09A40C 00000000 */ nop
/* 0CEF40 7F09A410 00028400 */ sll $s0, $v0, 0x10
/* 0CEF44 7F09A414 00107C03 */ sra $t7, $s0, 0x10
/* 0CEF48 7F09A418 0C00112B */ jal get_video2_settings_height
/* 0CEF48 7F09A418 0C00112B */ jal viGetViewHeight
/* 0CEF4C 7F09A41C 01E08025 */ move $s0, $t7
/* 0CEF50 7F09A420 02002025 */ move $a0, $s0
/* 0CEF54 7F09A424 0FC26C77 */ jal set_cur_player_screen_size
/* 0CEF58 7F09A428 00402825 */ move $a1, $v0
/* 0CEF5C 7F09A42C 0C001145 */ jal get_video2_settings_ulx
/* 0CEF5C 7F09A42C 0C001145 */ jal viGetViewLeft
/* 0CEF60 7F09A430 00000000 */ nop
/* 0CEF64 7F09A434 00028400 */ sll $s0, $v0, 0x10
/* 0CEF68 7F09A438 0010C403 */ sra $t8, $s0, 0x10
/* 0CEF6C 7F09A43C 0C001149 */ jal get_video2_settings_uly
/* 0CEF6C 7F09A43C 0C001149 */ jal viGetViewTop
/* 0CEF70 7F09A440 03008025 */ move $s0, $t8
/* 0CEF74 7F09A444 02002025 */ move $a0, $s0
/* 0CEF78 7F09A448 0FC26C7E */ jal set_cur_player_viewport_size
@@ -7654,74 +7651,28 @@ glabel init_player_data_ptrs_construct_viewports
)
#endif
#ifdef NONMATCHING
u32 get_num_players(void)
s32 getPlayerCount(void)
{
u32 uVar1;
uVar1 = (u32)(ptr_BONDdata_p1[0] != NULL);
if (ptr_BONDdata_p1[1] != NULL) {
uVar1 = (uint)(ptr_BONDdata_p1[0] != NULL) + 1;
s32 count = 0;
s32 i;
for (i = 0; i < 4; i++) {
if (players[i] != NULL) {
count++;
}
}
if (ptr_BONDdata_p1[2] != NULL) {
uVar1 = uVar1 + 1;
}
if (ptr_BONDdata_p1[3] != NULL) {
uVar1 = uVar1 + 1;
}
return uVar1;
return count;
}
#else
GLOBAL_ASM(
.text
glabel get_num_players
/* 0CEF94 7F09A464 3C0E8008 */ lui $t6, %hi(ptr_BONDdata_p1)
/* 0CEF98 7F09A468 8DCE9EE0 */ lw $t6, %lo(ptr_BONDdata_p1)($t6)
/* 0CEF9C 7F09A46C 00001825 */ move $v1, $zero
/* 0CEFA0 7F09A470 3C0F8008 */ lui $t7, %hi(ptr_BONDdata_p2)
/* 0CEFA4 7F09A474 11C00002 */ beqz $t6, .L7F09A480
/* 0CEFA8 7F09A478 3C188008 */ lui $t8, %hi(ptr_BONDdata_p3)
/* 0CEFAC 7F09A47C 24030001 */ li $v1, 1
.L7F09A480:
/* 0CEFB0 7F09A480 8DEF9EE4 */ lw $t7, %lo(ptr_BONDdata_p2)($t7)
/* 0CEFB4 7F09A484 3C198008 */ lui $t9, %hi(ptr_BONDdata_p4)
/* 0CEFB8 7F09A488 11E00002 */ beqz $t7, .L7F09A494
/* 0CEFBC 7F09A48C 00000000 */ nop
/* 0CEFC0 7F09A490 24630001 */ addiu $v1, $v1, 1
.L7F09A494:
/* 0CEFC4 7F09A494 8F189EE8 */ lw $t8, %lo(ptr_BONDdata_p3)($t8)
/* 0CEFC8 7F09A498 13000002 */ beqz $t8, .L7F09A4A4
/* 0CEFCC 7F09A49C 00000000 */ nop
/* 0CEFD0 7F09A4A0 24630001 */ addiu $v1, $v1, 1
.L7F09A4A4:
/* 0CEFD4 7F09A4A4 8F399EEC */ lw $t9, %lo(ptr_BONDdata_p4)($t9)
/* 0CEFD8 7F09A4A8 13200002 */ beqz $t9, .L7F09A4B4
/* 0CEFDC 7F09A4AC 00000000 */ nop
/* 0CEFE0 7F09A4B0 24630001 */ addiu $v1, $v1, 1
.L7F09A4B4:
/* 0CEFE4 7F09A4B4 03E00008 */ jr $ra
/* 0CEFE8 7F09A4B8 00601025 */ move $v0, $v1
)
#endif
#ifdef NONMATCHING
void initBONDdataforPlayer(PLAYER_ID player)
{
int iVar1;
int iVar2;
Player **ppPVar3;
player **ppPVar3;
int *dest;
int *src;
int *src_next;
Player *pPVar4;
player *pPVar4;
int array234undefined4 [234];
int iStack4;
f32 temp_3f36e15f8e;
@@ -7736,8 +7687,8 @@ void initBONDdataforPlayer(PLAYER_ID player)
src = src_next;
dest = dest + 3;
} while (src_next != (int *)0x80040148);
pPVar4 = (Player *)mempAllocBytesInBank(0x2a80,4);
ppPVar3 = ptr_BONDdata_p1 + player;
pPVar4 = (player *)mempAllocBytesInBank(0x2a80,4);
ppPVar3 = players + player;
*ppPVar3 = pPVar4;
pPVar4->unknown = 0;
(*ppPVar3)->xpos = 0.00000000;
@@ -7774,14 +7725,14 @@ void initBONDdataforPlayer(PLAYER_ID player)
(*ppPVar3)->field_90 = 0.00000000;
(*ppPVar3)->field_94 = 0;
(*ppPVar3)->field_98 = 0.00000000;
(*ppPVar3)->field_1274 = 0.00000000;
(*ppPVar3)->swaytarget = 0.00000000;
(*ppPVar3)->field_1278 = 0.00000000;
(*ppPVar3)->field_127C = 0.00000000;
(*ppPVar3)->crouchposition = 2;
(*ppPVar3)->field_29FC = 2;
(*ppPVar3)->crouchpos = 2;
(*ppPVar3)->autocrouchpos = 2;
(*ppPVar3)->ducking_height_offset = 0.00000000;
(*ppPVar3)->field_A4 = 0.00000000;
(*ppPVar3)->position_data_pointer = 0;
(*ppPVar3)->prop = 0;
(*ppPVar3)->field_AC = 1;
(*ppPVar3)->field_D0 = 0;
(*ppPVar3)->ptr_char_objectinstance = 0;
@@ -7828,11 +7779,11 @@ void initBONDdataforPlayer(PLAYER_ID player)
(*ppPVar3)->boost_factor_x = 0.00000000;
(*ppPVar3)->boost_factor_y = 0.00000000;
(*ppPVar3)->boost_factor_z = 0.00000000;
(*ppPVar3)->viewport_alpha = -1.00000000;
(*ppPVar3)->bondfadetime60 = -1.00000000;
(*ppPVar3)->bondfadetimemax = 0.00000000;
(*ppPVar3)->bondfadetimemax60 = -1.00000000;
(*ppPVar3)->bondfadefracold = 0.00000000;
(*ppPVar3)->bondfadefracnew = 0.00000000;
(*ppPVar3)->field_19C = 0.00000000;
(*ppPVar3)->field_1A0 = 0;
(*ppPVar3)->field_1C0 = 0;
(*ppPVar3)->field_1C4 = 0;
@@ -7866,20 +7817,20 @@ void initBONDdataforPlayer(PLAYER_ID player)
(*ppPVar3)->field_3C4 = 0.00000000;
(*ppPVar3)->field_3C8 = 0.00000000;
(*ppPVar3)->field_3CC = 1.00000000;
(*ppPVar3)->tint_red = 0xff;
(*ppPVar3)->tint_green = 0xff;
(*ppPVar3)->tint_blue = 0xff;
(*ppPVar3)->tint_alpha = 0.00000000;
(*ppPVar3)->colourscreenred = 0xff;
(*ppPVar3)->colourscreengreen = 0xff;
(*ppPVar3)->colourscreenblue = 0xff;
(*ppPVar3)->colourscreenfrac = 0.00000000;
(*ppPVar3)->field_3E0 = -1.00000000;
(*ppPVar3)->timer_for_fade = -1.00000000;
(*ppPVar3)->field_3E8 = 0xff;
(*ppPVar3)->field_3EC = 0xff;
(*ppPVar3)->field_3F0 = 0xff;
(*ppPVar3)->field_3F4 = 0xff;
(*ppPVar3)->field_3F8 = 0xff;
(*ppPVar3)->field_3FC = 0xff;
(*ppPVar3)->field_400 = 0.00000000;
(*ppPVar3)->field_404 = 0.00000000;
(*ppPVar3)->colourfaderedold = 0xff;
(*ppPVar3)->colourfaderednew = 0xff;
(*ppPVar3)->colourfadegreenold = 0xff;
(*ppPVar3)->colourfadegreennew = 0xff;
(*ppPVar3)->colourfadeblueold = 0xff;
(*ppPVar3)->colourfadebluenew = 0xff;
(*ppPVar3)->colourfadefracold = 0.00000000;
(*ppPVar3)->colourfadefracnew = 0.00000000;
(*ppPVar3)->cuff_value = CUFF_BLUE;
(*ppPVar3)->field_420 = 1;
(*ppPVar3)->field_424 = 0;
@@ -7894,7 +7845,7 @@ void initBONDdataforPlayer(PLAYER_ID player)
(*ppPVar3)->field_4F0 = 0;
(*ppPVar3)->field_4F4 = 1.00000000;
(*ppPVar3)->field_4F8 = 1.00000000;
(*ppPVar3)->scaled_velocity = 0.00000000;
(*ppPVar3)->headpos = 0.00000000;
(*ppPVar3)->field_500 = 0.00000000;
(*ppPVar3)->field_504 = 0.00000000;
(*ppPVar3)->field_508 = 0.00000000;
@@ -7903,7 +7854,7 @@ void initBONDdataforPlayer(PLAYER_ID player)
(*ppPVar3)->field_514 = 0.00000000;
(*ppPVar3)->field_518 = 1.00000000;
(*ppPVar3)->field_51C = 0.00000000;
(*ppPVar3)->velocity = 0.00000000;
(*ppPVar3)->headpossum = 0.00000000;
(*ppPVar3)->field_524 = 0.00000000;
(*ppPVar3)->field_528 = 0.00000000;
(*ppPVar3)->field_52C = 0.00000000;
@@ -7932,7 +7883,7 @@ void initBONDdataforPlayer(PLAYER_ID player)
(*ppPVar3)->field_588 = 0.00000000;
(*ppPVar3)->field_58C = 1.00000000;
(*ppPVar3)->field_590 = 0.00000000;
(*ppPVar3)->field_594 = 0;
(*ppPVar3)->standcnt = 0;
iVar1 = 0;
do {
*(undefined2 *)((int)&((*ppPVar3)->field_7D0).field_7D0 + iVar1) = 0x280;
@@ -7967,7 +7918,7 @@ void initBONDdataforPlayer(PLAYER_ID player)
pPVar4->right_weapon = *src;
pPVar4->right_weapon_attack = src[1];
pPVar4->previous_right_weapon = src[2];
pPVar4 = (Player *)&pPVar4->zpos;
pPVar4 = (player *)&pPVar4->zpos;
src = dest;
} while (dest != &iStack4);
src = array234undefined4;
@@ -7978,7 +7929,7 @@ void initBONDdataforPlayer(PLAYER_ID player)
pPVar4->left_weapon_attack = src[1];
pPVar4->left_weapon_previous = src[2];
src = dest;
pPVar4 = (Player *)&pPVar4->zpos;
pPVar4 = (player *)&pPVar4->zpos;
} while (dest != &iStack4);
(*ppPVar3)->field_FC0 = 1.00000000;
(*ppPVar3)->field_FC4 = 1.00000000;
@@ -8036,8 +7987,8 @@ void initBONDdataforPlayer(PLAYER_ID player)
(*ppPVar3)->field_10CC = 0;
(*ppPVar3)->field_10D0 = 0;
(*ppPVar3)->field_10D4 = 0;
(*ppPVar3)->field_10D8 = 0;
(*ppPVar3)->field_10DC = 0;
(*ppPVar3)->projmatrix = 0;
(*ppPVar3)->projmatrixf = 0;
(*ppPVar3)->field_10E0 = 0;
(*ppPVar3)->field_10E4 = 0;
(*ppPVar3)->field_10E8 = 0;
@@ -8142,8 +8093,8 @@ glabel initBONDdataforPlayer
/* 0CF030 7F09A500 0C0025C8 */ jal mempAllocBytesInBank
/* 0CF034 7F09A504 24050004 */ li $a1, 4
/* 0CF038 7F09A508 8FAC03D0 */ lw $t4, 0x3d0($sp)
/* 0CF03C 7F09A50C 3C198008 */ lui $t9, %hi(ptr_BONDdata_p1)
/* 0CF040 7F09A510 27399EE0 */ addiu $t9, %lo(ptr_BONDdata_p1) # addiu $t9, $t9, -0x6120
/* 0CF03C 7F09A50C 3C198008 */ lui $t9, %hi(players)
/* 0CF040 7F09A510 27399EE0 */ addiu $t9, %lo(players) # addiu $t9, $t9, -0x6120
/* 0CF044 7F09A514 000C6880 */ sll $t5, $t4, 2
/* 0CF048 7F09A518 01B91821 */ addu $v1, $t5, $t9
/* 0CF04C 7F09A51C AC620000 */ sw $v0, ($v1)
@@ -8956,8 +8907,8 @@ glabel initBONDdataforPlayer
/* 0CFC10 7F09B0A0 0C0025CC */ jal mempAllocBytesInBank
/* 0CFC14 7F09B0A4 24050004 */ li $a1, 4
/* 0CFC18 7F09B0A8 8FAC03D0 */ lw $t4, 0x3d0($sp)
/* 0CFC1C 7F09B0AC 3C198008 */ lui $t9, %hi(ptr_BONDdata_p1) # $t9, 0x8008
/* 0CFC20 7F09B0B0 27399F50 */ addiu $t9, %lo(ptr_BONDdata_p1) # addiu $t9, $t9, -0x60b0
/* 0CFC1C 7F09B0AC 3C198008 */ lui $t9, %hi(players) # $t9, 0x8008
/* 0CFC20 7F09B0B0 27399F50 */ addiu $t9, %lo(players) # addiu $t9, $t9, -0x60b0
/* 0CFC24 7F09B0B4 000C6880 */ sll $t5, $t4, 2
/* 0CFC28 7F09B0B8 01B91821 */ addu $v1, $t5, $t9
/* 0CFC2C 7F09B0BC AC620000 */ sw $v0, ($v1)
@@ -9737,7 +9688,7 @@ glabel initBONDdataforPlayer
#ifdef NONMATCHING
void set_cur_player(PLAYER_ID playernum)
{
pPlayer = ptr_BONDdata_p1[playernum];
pPlayer = players[playernum];
pPlayersPerm = player1_playerdata[playernum];
player_num = playernum;
return;
@@ -9747,9 +9698,9 @@ GLOBAL_ASM(
.text
glabel set_cur_player
/* 0CFC3C 7F09B10C 00047080 */ sll $t6, $a0, 2
/* 0CFC40 7F09B110 3C0F8008 */ lui $t7, %hi(ptr_BONDdata_p1)
/* 0CFC40 7F09B110 3C0F8008 */ lui $t7, %hi(players)
/* 0CFC44 7F09B114 01EE7821 */ addu $t7, $t7, $t6
/* 0CFC48 7F09B118 8DEF9EE0 */ lw $t7, %lo(ptr_BONDdata_p1)($t7)
/* 0CFC48 7F09B118 8DEF9EE0 */ lw $t7, %lo(players)($t7)
/* 0CFC4C 7F09B11C 3C018008 */ lui $at, %hi(player_num)
/* 0CFC50 7F09B120 AC24A0B8 */ sw $a0, %lo(player_num)($at)
/* 0CFC54 7F09B124 0004C0C0 */ sll $t8, $a0, 3
@@ -9779,21 +9730,21 @@ s32 get_cur_playernum(void) {
#ifdef NONMATCHING
void proc_7F09B15C(int position_data_pointer)
void proc_7F09B15C(int prop)
{
Player *pPVar1;
player *pPVar1;
s32 numplayers;
Player **ppPVar2;
player **ppPVar2;
int i;
i = 0;
numplayers = get_num_players();
numplayers = getPlayerCount();
if (0 < numplayers) {
ppPVar2 = ptr_BONDdata_p1;
pPVar1 = ptr_BONDdata_p1[0];
while (ppPVar2 = ppPVar2 + 1, position_data_pointer != pPVar1->position_data_pointer) {
ppPVar2 = players;
pPVar1 = players[0];
while (ppPVar2 = ppPVar2 + 1, prop != pPVar1->prop) {
i = i + 1;
numplayers = get_num_players();
numplayers = getPlayerCount();
if (numplayers <= i) {
return;
}
@@ -9812,12 +9763,12 @@ glabel sub_GAME_7F09B15C
/* 0CFC98 7F09B168 AFB1001C */ sw $s1, 0x1c($sp)
/* 0CFC9C 7F09B16C 00809025 */ move $s2, $a0
/* 0CFCA0 7F09B170 AFB00018 */ sw $s0, 0x18($sp)
/* 0CFCA4 7F09B174 0FC26919 */ jal get_num_players
/* 0CFCA4 7F09B174 0FC26919 */ jal getPlayerCount
/* 0CFCA8 7F09B178 00008825 */ move $s1, $zero
/* 0CFCAC 7F09B17C 18400010 */ blez $v0, .L7F09B1C0
/* 0CFCB0 7F09B180 00117080 */ sll $t6, $s1, 2
/* 0CFCB4 7F09B184 3C0F8008 */ lui $t7, %hi(ptr_BONDdata_p1)
/* 0CFCB8 7F09B188 25EF9EE0 */ addiu $t7, %lo(ptr_BONDdata_p1) # addiu $t7, $t7, -0x6120
/* 0CFCB4 7F09B184 3C0F8008 */ lui $t7, %hi(players)
/* 0CFCB8 7F09B188 25EF9EE0 */ addiu $t7, %lo(players) # addiu $t7, $t7, -0x6120
/* 0CFCBC 7F09B18C 01CF8021 */ addu $s0, $t6, $t7
/* 0CFCC0 7F09B190 8E180000 */ lw $t8, ($s0)
.L7F09B194:
@@ -9828,7 +9779,7 @@ glabel sub_GAME_7F09B15C
/* 0CFCD4 7F09B1A4 10000007 */ b .L7F09B1C4
/* 0CFCD8 7F09B1A8 02201025 */ move $v0, $s1
.L7F09B1AC:
/* 0CFCDC 7F09B1AC 0FC26919 */ jal get_num_players
/* 0CFCDC 7F09B1AC 0FC26919 */ jal getPlayerCount
/* 0CFCE0 7F09B1B0 26310001 */ addiu $s1, $s1, 1
/* 0CFCE4 7F09B1B4 0222082A */ slt $at, $s1, $v0
/* 0CFCE8 7F09B1B8 5420FFF6 */ bnezl $at, .L7F09B194
@@ -10284,7 +10235,7 @@ loop_1:
{
// Node 2
phi_v1_2 = phi_v1_3;
if (*(&ptr_BONDdata_p1 + (temp_v0 * 4)) != 0)
if (*(&players + (temp_v0 * 4)) != 0)
{
// Node 3
phi_v1_2 = (phi_v1_3 + 1);
@@ -10307,9 +10258,9 @@ GLOBAL_ASM(
glabel sub_GAME_7F09B4D8
/* 0D0008 7F09B4D8 3C058008 */ lui $a1, %hi(dword_CODE_bss_8007A0C0)
/* 0D000C 7F09B4DC 3C078008 */ lui $a3, %hi(dword_CODE_bss_8007A0D0)
/* 0D0010 7F09B4E0 3C068008 */ lui $a2, %hi(ptr_BONDdata_p1)
/* 0D0010 7F09B4E0 3C068008 */ lui $a2, %hi(players)
/* 0D0014 7F09B4E4 00001825 */ move $v1, $zero
/* 0D0018 7F09B4E8 24C69EE0 */ addiu $a2, %lo(ptr_BONDdata_p1) # addiu $a2, $a2, -0x6120
/* 0D0018 7F09B4E8 24C69EE0 */ addiu $a2, %lo(players) # addiu $a2, $a2, -0x6120
/* 0D001C 7F09B4EC 24E7A0D0 */ addiu $a3, %lo(dword_CODE_bss_8007A0D0) # addiu $a3, $a3, -0x5f30
/* 0D0020 7F09B4F0 24A5A0C0 */ addiu $a1, %lo(dword_CODE_bss_8007A0C0) # addiu $a1, $a1, -0x5f40
/* 0D0024 7F09B4F4 8CA20000 */ lw $v0, ($a1)
@@ -10338,25 +10289,25 @@ glabel sub_GAME_7F09B4D8
#ifdef NONMATCHING
int proc_7F09B528(int param_1)
{
if (ptr_BONDdata_p1[dword_CODE_bss_8007A0C0] != NULL) {
if (players[dword_CODE_bss_8007A0C0] != NULL) {
if (param_1 == 0) {
return dword_CODE_bss_8007A0C0;
}
param_1--;
}
if (ptr_BONDdata_p1[dword_CODE_bss_8007A0C4] != NULL) {
if (players[dword_CODE_bss_8007A0C4] != NULL) {
if (param_1 == 0) {
return dword_CODE_bss_8007A0C4;
}
param_1--;
}
if (ptr_BONDdata_p1[dword_CODE_bss_8007A0C8] != NULL) {
if (players[dword_CODE_bss_8007A0C8] != NULL) {
if (param_1 == 0) {
return dword_CODE_bss_8007A0C8;
}
param_1--;
}
if ((ptr_BONDdata_p1[dword_CODE_bss_8007A0CC] != NULL) && (param_1 == 0)) {
if ((players[dword_CODE_bss_8007A0CC] != NULL) && (param_1 == 0)) {
return dword_CODE_bss_8007A0CC;
}
return 0;
@@ -10367,8 +10318,8 @@ GLOBAL_ASM(
glabel sub_GAME_7F09B528
/* 0D0058 7F09B528 3C038008 */ lui $v1, %hi(dword_CODE_bss_8007A0C0)
/* 0D005C 7F09B52C 8C63A0C0 */ lw $v1, %lo(dword_CODE_bss_8007A0C0)($v1)
/* 0D0060 7F09B530 3C028008 */ lui $v0, %hi(ptr_BONDdata_p1)
/* 0D0064 7F09B534 24429EE0 */ addiu $v0, %lo(ptr_BONDdata_p1) # addiu $v0, $v0, -0x6120
/* 0D0060 7F09B530 3C028008 */ lui $v0, %hi(players)
/* 0D0064 7F09B534 24429EE0 */ addiu $v0, %lo(players) # addiu $v0, $v0, -0x6120
/* 0D0068 7F09B538 00037080 */ sll $t6, $v1, 2
/* 0D006C 7F09B53C 004E7821 */ addu $t7, $v0, $t6
/* 0D0070 7F09B540 8DF80000 */ lw $t8, ($t7)
+3 -1
View File
@@ -37,11 +37,13 @@ struct player_data {
int killed_civilians;
};
extern struct player *players[4];
extern struct player_data player1_player_data;
extern struct player_data player2_player_data;
extern struct player_data player3_player_data;
extern struct player_data player4_player_data;
extern struct Player * pPlayer;
extern struct player *pPlayer;
extern struct player_data *pPlayersPerm;
#endif
+1 -1
View File
@@ -105,7 +105,7 @@ GLOBAL_ASM(
glabel sub_GAME_7F09B820
/* 0D0350 7F09B820 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 0D0354 7F09B824 AFBF0014 */ sw $ra, 0x14($sp)
/* 0D0358 7F09B828 0FC26919 */ jal get_num_players
/* 0D0358 7F09B828 0FC26919 */ jal getPlayerCount
/* 0D035C 7F09B82C 00000000 */ nop
/* 0D0360 7F09B830 28410002 */ slti $at, $v0, 2
/* 0D0364 7F09B834 1420000F */ bnez $at, .L7F09B874
+17 -17
View File
@@ -345,7 +345,7 @@ glabel sub_GAME_7F09C250
/* 0D0FBC 7F09C48C E51203D4 */ swc1 $f18, 0x3d4($t0)
/* 0D0FC0 7F09C490 C5240010 */ lwc1 $f4, 0x10($t1)
/* 0D0FC4 7F09C494 E50403D8 */ swc1 $f4, 0x3d8($t0)
/* 0D0FC8 7F09C498 0FC2CBF6 */ jal sub_GAME_7F0B2FD8
/* 0D0FC8 7F09C498 0FC2CBF6 */ jal getTileRoom
/* 0D0FCC 7F09C49C 8D240014 */ lw $a0, 0x14($t1)
/* 0D0FD0 7F09C4A0 8FA80040 */ lw $t0, 0x40($sp)
/* 0D0FD4 7F09C4A4 10000016 */ b .L7F09C500
@@ -365,7 +365,7 @@ glabel sub_GAME_7F09C250
/* 0D1008 7F09C4D8 E50A03D4 */ swc1 $f10, 0x3d4($t0)
/* 0D100C 7F09C4DC C6700008 */ lwc1 $f16, 8($s3)
/* 0D1010 7F09C4E0 E51003D8 */ swc1 $f16, 0x3d8($t0)
/* 0D1014 7F09C4E4 0FC2CBF6 */ jal sub_GAME_7F0B2FD8
/* 0D1014 7F09C4E4 0FC2CBF6 */ jal getTileRoom
/* 0D1018 7F09C4E8 8FA40050 */ lw $a0, 0x50($sp)
/* 0D101C 7F09C4EC 8FA80040 */ lw $t0, 0x40($sp)
/* 0D1020 7F09C4F0 10000003 */ b .L7F09C500
@@ -450,7 +450,7 @@ glabel sub_GAME_7F09C250
/* 0D1148 7F09C618 5420FFF5 */ bnezl $at, .L7F09C5F0
/* 0D114C 7F09C61C C6280028 */ lwc1 $f8, 0x28($s1)
.L7F09C620:
/* 0D1150 7F09C620 0FC26919 */ jal get_num_players
/* 0D1150 7F09C620 0FC26919 */ jal getPlayerCount
/* 0D1154 7F09C624 00000000 */ nop
/* 0D1158 7F09C628 28410002 */ slti $at, $v0, 2
/* 0D115C 7F09C62C 14200058 */ bnez $at, .L7F09C790
@@ -714,7 +714,7 @@ glabel sub_GAME_7F09C250
/* 0D1B7C 7F09D00C E69203D4 */ swc1 $f18, 0x3d4($s4)
/* 0D1B80 7F09D010 C5040010 */ lwc1 $f4, 0x10($t0)
/* 0D1B84 7F09D014 E68403D8 */ swc1 $f4, 0x3d8($s4)
/* 0D1B88 7F09D018 0FC2CEE2 */ jal sub_GAME_7F0B2FD8
/* 0D1B88 7F09D018 0FC2CEE2 */ jal getTileRoom
/* 0D1B8C 7F09D01C 8D040014 */ lw $a0, 0x14($t0)
/* 0D1B90 7F09D020 10000014 */ b .Ljp7F09D074
/* 0D1B94 7F09D024 A68203DC */ sh $v0, 0x3dc($s4)
@@ -732,7 +732,7 @@ glabel sub_GAME_7F09C250
/* 0D1BC0 7F09D050 E68A03D4 */ swc1 $f10, 0x3d4($s4)
/* 0D1BC4 7F09D054 C6700008 */ lwc1 $f16, 8($s3)
/* 0D1BC8 7F09D058 E69003D8 */ swc1 $f16, 0x3d8($s4)
/* 0D1BCC 7F09D05C 0FC2CEE2 */ jal sub_GAME_7F0B2FD8
/* 0D1BCC 7F09D05C 0FC2CEE2 */ jal getTileRoom
/* 0D1BD0 7F09D060 8FA40058 */ lw $a0, 0x58($sp)
/* 0D1BD4 7F09D064 10000003 */ b .Ljp7F09D074
/* 0D1BD8 7F09D068 A68203DC */ sh $v0, 0x3dc($s4)
@@ -814,7 +814,7 @@ glabel sub_GAME_7F09C250
/* 0D1CF4 7F09D184 5420FFF5 */ bnezl $at, .Ljp7F09D15C
/* 0D1CF8 7F09D188 C6280028 */ lwc1 $f8, 0x28($s1)
.Ljp7F09D18C:
/* 0D1CFC 7F09D18C 0FC26C01 */ jal get_num_players
/* 0D1CFC 7F09D18C 0FC26C01 */ jal getPlayerCount
/* 0D1D00 7F09D190 00000000 */ nop
/* 0D1D04 7F09D194 28410002 */ slti $at, $v0, 2
/* 0D1D08 7F09D198 14200058 */ bnez $at, .Ljp7F09D2FC
@@ -1568,7 +1568,7 @@ glabel sub_GAME_7F09C9D8
/* 0D195C 7F09CE2C 02002025 */ move $a0, $s0
/* 0D1960 7F09CE30 0FC26C43 */ jal set_cur_player
/* 0D1964 7F09CE34 00402025 */ move $a0, $v0
/* 0D1968 7F09CE38 0FC26919 */ jal get_num_players
/* 0D1968 7F09CE38 0FC26919 */ jal getPlayerCount
/* 0D196C 7F09CE3C 00000000 */ nop
/* 0D1970 7F09CE40 14540004 */ bne $v0, $s4, .L7F09CE54
/* 0D1974 7F09CE44 3C018004 */ lui $at, %hi(D_80040178)
@@ -2066,7 +2066,7 @@ GLOBAL_ASM(
glabel sub_GAME_7F09D4EC
/* 0D201C 7F09D4EC 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 0D2020 7F09D4F0 AFBF0014 */ sw $ra, 0x14($sp)
/* 0D2024 7F09D4F4 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 0D2024 7F09D4F4 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 0D2028 7F09D4F8 AFA40018 */ sw $a0, 0x18($sp)
/* 0D202C 7F09D4FC 8FA40018 */ lw $a0, 0x18($sp)
/* 0D2030 7F09D500 C4440008 */ lwc1 $f4, 8($v0)
@@ -2244,7 +2244,7 @@ glabel sub_GAME_7F09D5A0
/* 0D227C 7F09D74C 37180040 */ ori $t8, (0x01030040 & 0xFFFF) # ori $t8, $t8, 0x40
/* 0D2280 7F09D750 02809025 */ move $s2, $s4
/* 0D2284 7F09D754 AE580000 */ sw $t8, ($s2)
/* 0D2288 7F09D758 0FC1E0DD */ jal get_BONDdata_field_10D8
/* 0D2288 7F09D758 0FC1E0DD */ jal currentPlayerGetProjectionMatrix
/* 0D228C 7F09D75C 26940008 */ addiu $s4, $s4, 8
/* 0D2290 7F09D760 0C003A2C */ jal osVirtualToPhysical
/* 0D2294 7F09D764 00402025 */ move $a0, $v0
@@ -2336,7 +2336,7 @@ glabel sub_GAME_7F09D82C
/* 0D2398 7F09D868 00C08825 */ move $s1, $a2
/* 0D239C 7F09D86C 00A09025 */ move $s2, $a1
/* 0D23A0 7F09D870 ADC8000C */ sw $t0, 0xc($t6)
/* 0D23A4 7F09D874 0FC1E111 */ jal sub_GAME_7F078444
/* 0D23A4 7F09D874 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 0D23A8 7F09D878 ADC10008 */ sw $at, 8($t6)
/* 0D23AC 7F09D87C 0FC227F5 */ jal get_BONDdata_position
/* 0D23B0 7F09D880 AFA2009C */ sw $v0, 0x9c($sp)
@@ -2716,7 +2716,7 @@ glabel sub_GAME_7F09DDA4
/* 0D2924 7F09DDF4 00809025 */ move $s2, $a0
/* 0D2928 7F09DDF8 00E09825 */ move $s3, $a3
/* 0D292C 7F09DDFC ADC8000C */ sw $t0, 0xc($t6)
/* 0D2930 7F09DE00 0FC1E111 */ jal sub_GAME_7F078444
/* 0D2930 7F09DE00 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 0D2934 7F09DE04 ADC10008 */ sw $at, 8($t6)
/* 0D2938 7F09DE08 0FC227F5 */ jal get_BONDdata_position
/* 0D293C 7F09DE0C AFA200BC */ sw $v0, 0xbc($sp)
@@ -3328,7 +3328,7 @@ glabel sub_GAME_7F09E700
/* 0D323C 7F09E70C AFA50034 */ sw $a1, 0x34($sp)
/* 0D3240 7F09E710 AFA60038 */ sw $a2, 0x38($sp)
/* 0D3244 7F09E714 AFA7003C */ sw $a3, 0x3c($sp)
/* 0D3248 7F09E718 0FC26919 */ jal get_num_players
/* 0D3248 7F09E718 0FC26919 */ jal getPlayerCount
/* 0D324C 7F09E71C AFA0002C */ sw $zero, 0x2c($sp)
/* 0D3250 7F09E720 3C0B8004 */ lui $t3, %hi(D_8004017C)
/* 0D3254 7F09E724 3C078008 */ lui $a3, %hi(ptr_smoke_buf)
@@ -3962,7 +3962,7 @@ GLOBAL_ASM(
glabel sub_GAME_7F09EF9C
/* 0D3ACC 7F09EF9C 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 0D3AD0 7F09EFA0 AFBF0014 */ sw $ra, 0x14($sp)
/* 0D3AD4 7F09EFA4 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 0D3AD4 7F09EFA4 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 0D3AD8 7F09EFA8 AFA40018 */ sw $a0, 0x18($sp)
/* 0D3ADC 7F09EFAC 8FA40018 */ lw $a0, 0x18($sp)
/* 0D3AE0 7F09EFB0 C4440008 */ lwc1 $f4, 8($v0)
@@ -4140,7 +4140,7 @@ glabel sub_GAME_7F09F03C
/* 0D3D38 7F09F208 35EF0040 */ ori $t7, (0x01030040 & 0xFFFF) # ori $t7, $t7, 0x40
/* 0D3D3C 7F09F20C 02408025 */ move $s0, $s2
/* 0D3D40 7F09F210 AE0F0000 */ sw $t7, ($s0)
/* 0D3D44 7F09F214 0FC1E0DD */ jal get_BONDdata_field_10D8
/* 0D3D44 7F09F214 0FC1E0DD */ jal currentPlayerGetProjectionMatrix
/* 0D3D48 7F09F218 26520008 */ addiu $s2, $s2, 8
/* 0D3D4C 7F09F21C 0C003A2C */ jal osVirtualToPhysical
/* 0D3D50 7F09F220 00402025 */ move $a0, $v0
@@ -5213,7 +5213,7 @@ glabel sub_GAME_7F0A0034
/* 0D4C64 7F0A0134 00000000 */ nop
/* 0D4C68 7F0A0138 0FC1624B */ jal matrix_4x4_set_position_and_rotation_around_xyz
/* 0D4C6C 7F0A013C 02803025 */ move $a2, $s4
/* 0D4C70 7F0A0140 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 0D4C70 7F0A0140 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 0D4C74 7F0A0144 00000000 */ nop
/* 0D4C78 7F0A0148 00402025 */ move $a0, $v0
/* 0D4C7C 7F0A014C 0FC16026 */ jal matrix_4x4_multiply_homogeneous_in_place
@@ -5364,7 +5364,7 @@ glabel sub_GAME_7F0A027C
/* 0D4E5C 7F0A032C A3AA004B */ sb $t2, 0x4b($sp)
/* 0D4E60 7F0A0330 0FC2F285 */ jal sub_GAME_7F0BCA14
/* 0D4E64 7F0A0334 87A40072 */ lh $a0, 0x72($sp)
/* 0D4E68 7F0A0338 0FC26919 */ jal get_num_players
/* 0D4E68 7F0A0338 0FC26919 */ jal getPlayerCount
/* 0D4E6C 7F0A033C 00408025 */ move $s0, $v0
/* 0D4E70 7F0A0340 28410002 */ slti $at, $v0, 2
/* 0D4E74 7F0A0344 102001D2 */ beqz $at, .L7F0A0A90
@@ -5872,7 +5872,7 @@ glabel sub_GAME_7F0A0AB4
/* 0D5604 7F0A0AD4 AFB10020 */ sw $s1, 0x20($sp)
/* 0D5608 7F0A0AD8 AFB0001C */ sw $s0, 0x1c($sp)
/* 0D560C 7F0A0ADC AFA40040 */ sw $a0, 0x40($sp)
/* 0D5610 7F0A0AE0 0FC26919 */ jal get_num_players
/* 0D5610 7F0A0AE0 0FC26919 */ jal getPlayerCount
/* 0D5614 7F0A0AE4 2413FFFF */ li $s3, -1
/* 0D5618 7F0A0AE8 28410002 */ slti $at, $v0, 2
/* 0D561C 7F0A0AEC 14200003 */ bnez $at, .L7F0A0AFC
+7 -7
View File
@@ -41,8 +41,8 @@ u32 D_80040988 = 0;
u32 D_8004098C = 0;
u32 D_80040990 = 0;
u32 watch_screen_index = 0;
u32 D_80040998 = 0;
u32 D_8004099C = 0;
u32 controller_options_index = 0;
u32 game_options_index = 0;
// rodata
@@ -1264,7 +1264,7 @@ glabel sub_GAME_7F0A2C44
/* 0D79F4 7F0A2EC4 356B0040 */ ori $t3, (0x01030040 & 0xFFFF) # ori $t3, $t3, 0x40
/* 0D79F8 7F0A2EC8 260A0008 */ addiu $t2, $s0, 8
/* 0D79FC 7F0A2ECC AFAA00D0 */ sw $t2, 0xd0($sp)
/* 0D7A00 7F0A2ED0 0FC1E0DD */ jal get_BONDdata_field_10D8
/* 0D7A00 7F0A2ED0 0FC1E0DD */ jal currentPlayerGetProjectionMatrix
/* 0D7A04 7F0A2ED4 AE0B0000 */ sw $t3, ($s0)
/* 0D7A08 7F0A2ED8 AE020004 */ sw $v0, 4($s0)
/* 0D7A0C 7F0A2EDC 8FB100D0 */ lw $s1, 0xd0($sp)
@@ -1272,7 +1272,7 @@ glabel sub_GAME_7F0A2C44
/* 0D7A14 7F0A2EE4 35CE0040 */ ori $t6, (0x01020040 & 0xFFFF) # ori $t6, $t6, 0x40
/* 0D7A18 7F0A2EE8 262D0008 */ addiu $t5, $s1, 8
/* 0D7A1C 7F0A2EEC AFAD00D0 */ sw $t5, 0xd0($sp)
/* 0D7A20 7F0A2EF0 0FC1E0D5 */ jal get_BONDdata_field_10C8
/* 0D7A20 7F0A2EF0 0FC1E0D5 */ jal currentPlayerGetMatrix10C8
/* 0D7A24 7F0A2EF4 AE2E0000 */ sw $t6, ($s1)
/* 0D7A28 7F0A2EF8 AE220004 */ sw $v0, 4($s1)
/* 0D7A2C 7F0A2EFC 8FBF0044 */ lw $ra, 0x44($sp)
@@ -2595,7 +2595,7 @@ glabel sub_GAME_7F0A3F04
/* 0D8A98 7F0A3F68 8F29000C */ lw $t1, 0xc($t9)
/* 0D8A9C 7F0A3F6C 8F210008 */ lw $at, 8($t9)
/* 0D8AA0 7F0A3F70 AF09000C */ sw $t1, 0xc($t8)
/* 0D8AA4 7F0A3F74 0FC1E111 */ jal sub_GAME_7F078444
/* 0D8AA4 7F0A3F74 0FC1E111 */ jal currentPlayerGetMatrix10D4
/* 0D8AA8 7F0A3F78 AF010008 */ sw $at, 8($t8)
/* 0D8AAC 7F0A3F7C 8FAA00BC */ lw $t2, 0xbc($sp)
/* 0D8AB0 7F0A3F80 24040004 */ li $a0, 4
@@ -2946,7 +2946,7 @@ glabel sub_GAME_7F0A3F04
/* 0D9014 7F0A44E4 358C0040 */ ori $t4, (0x01030040 & 0xFFFF) # ori $t4, $t4, 0x40
/* 0D9018 7F0A44E8 262D0008 */ addiu $t5, $s1, 8
/* 0D901C 7F0A44EC AFAD00A0 */ sw $t5, 0xa0($sp)
/* 0D9020 7F0A44F0 0FC1E0DD */ jal get_BONDdata_field_10D8
/* 0D9020 7F0A44F0 0FC1E0DD */ jal currentPlayerGetProjectionMatrix
/* 0D9024 7F0A44F4 AE2C0000 */ sw $t4, ($s1)
/* 0D9028 7F0A44F8 0C003A2C */ jal osVirtualToPhysical
/* 0D902C 7F0A44FC 00402025 */ move $a0, $v0
@@ -3027,7 +3027,7 @@ glabel sub_GAME_7F0A4594
/* 0D90D4 7F0A45A4 C4860014 */ lwc1 $f6, 0x14($a0)
/* 0D90D8 7F0A45A8 E7A60020 */ swc1 $f6, 0x20($sp)
/* 0D90DC 7F0A45AC C4880018 */ lwc1 $f8, 0x18($a0)
/* 0D90E0 7F0A45B0 0FC1E0F1 */ jal get_BONDdata_field_10CC
/* 0D90E0 7F0A45B0 0FC1E0F1 */ jal currentPlayerGetMatrix10CC
/* 0D90E4 7F0A45B4 E7A80024 */ swc1 $f8, 0x24($sp)
/* 0D90E8 7F0A45B8 00402025 */ move $a0, $v0
/* 0D90EC 7F0A45BC 0FC1611D */ jal matrix_4x4_transform_vector_in_place
+2 -2
View File
@@ -10,7 +10,7 @@ extern u32 D_80040988;
extern u32 D_8004098C;
extern u32 D_80040990;
extern u32 watch_screen_index;
extern u32 D_80040998;
extern u32 D_8004099C;
extern u32 controller_options_index;
extern u32 game_options_index;
#endif
+1 -1
View File
@@ -90,7 +90,7 @@ glabel sub_GAME_7F0B3200
#ifdef NONMATCHING
f32 sub_GAME_7F0B32D8(struct xyzpoint *param_1,struct xyzpoint *param_2,struct xyzpoint *param_3)
f32 sub_GAME_7F0B32D8(struct coord *param_1,struct coord *param_2,struct coord *param_3)
{
+4 -4
View File
@@ -22,19 +22,19 @@ glabel sub_GAME_7F0BC530
/* 0F1068 7F0BC538 AFB00018 */ sw $s0, 0x18($sp)
/* 0F106C 7F0BC53C AFB20020 */ sw $s2, 0x20($sp)
/* 0F1070 7F0BC540 AFB1001C */ sw $s1, 0x1c($sp)
/* 0F1074 7F0BC544 0FC26919 */ jal get_num_players
/* 0F1074 7F0BC544 0FC26919 */ jal getPlayerCount
/* 0F1078 7F0BC548 00008025 */ move $s0, $zero
/* 0F107C 7F0BC54C 1840000D */ blez $v0, .L7F0BC584
/* 0F1080 7F0BC550 00107080 */ sll $t6, $s0, 2
/* 0F1084 7F0BC554 3C0F8008 */ lui $t7, %hi(ptr_BONDdata_p1)
/* 0F1088 7F0BC558 25EF9EE0 */ addiu $t7, %lo(ptr_BONDdata_p1) # addiu $t7, $t7, -0x6120
/* 0F1084 7F0BC554 3C0F8008 */ lui $t7, %hi(players)
/* 0F1088 7F0BC558 25EF9EE0 */ addiu $t7, %lo(players) # addiu $t7, $t7, -0x6120
/* 0F108C 7F0BC55C 01CF8821 */ addu $s1, $t6, $t7
/* 0F1090 7F0BC560 2412FFFF */ li $s2, -1
/* 0F1094 7F0BC564 8E380000 */ lw $t8, ($s1)
.L7F0BC568:
/* 0F1098 7F0BC568 26100001 */ addiu $s0, $s0, 1
/* 0F109C 7F0BC56C 26310004 */ addiu $s1, $s1, 4
/* 0F10A0 7F0BC570 0FC26919 */ jal get_num_players
/* 0F10A0 7F0BC570 0FC26919 */ jal getPlayerCount
/* 0F10A4 7F0BC574 AF12108C */ sw $s2, 0x108c($t8)
/* 0F10A8 7F0BC578 0202082A */ slt $at, $s0, $v0
/* 0F10AC 7F0BC57C 5420FFFA */ bnezl $at, .L7F0BC568
+1 -1
View File
@@ -207,7 +207,7 @@ void sub_GAME_7F0C0BE4(s32 arg0) {
}
void sub_GAME_7F0C0BF0(void) {
sub_GAME_7F0A9358();
get_mTrack2Vol();
}
+67 -284
View File
@@ -2,298 +2,81 @@
#include "game/bond.h"
// bss
s32 viewport_img_width;
s32 viewport_img_height;
s32 z_buffer_width;
s32 z_buffer_height;
// data
s32 viewport_img = 0;
s32 z_buffer = 0;
void remove_viewport_buffer(void) {
viewport_img = 0;
void zbufDeallocate(void) {
z_buffer = 0;
}
#ifdef NONMATCHING
void allocate_viewport_buffer(void) {
}
#else
GLOBAL_ASM(
.text
glabel allocate_viewport_buffer
/* 106EBC 7F0D238C 3C0E8003 */ lui $t6, %hi(resolution)
/* 106EC0 7F0D2390 8DCE6428 */ lw $t6, %lo(resolution)($t6)
/* 106EC4 7F0D2394 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 106EC8 7F0D2398 AFBF0014 */ sw $ra, 0x14($sp)
/* 106ECC 7F0D239C 11C00008 */ beqz $t6, .L7F0D23C0
/* 106ED0 7F0D23A0 3C028009 */ lui $v0, %hi(viewport_img_height)
/* 106ED4 7F0D23A4 240F01B8 */ li $t7, 440
/* 106ED8 7F0D23A8 3C018009 */ lui $at, %hi(viewport_img_width)
/* 106EDC 7F0D23AC 2442E314 */ addiu $v0, %lo(viewport_img_height) # addiu $v0, $v0, -0x1cec
/* 106EE0 7F0D23B0 AC2FE310 */ sw $t7, %lo(viewport_img_width)($at)
/* 106EE4 7F0D23B4 2418014A */ li $t8, 330
/* 106EE8 7F0D23B8 10000010 */ b .L7F0D23FC
/* 106EEC 7F0D23BC AC580000 */ sw $t8, ($v0)
.L7F0D23C0:
/* 106EF0 7F0D23C0 24190140 */ li $t9, 320
/* 106EF4 7F0D23C4 3C018009 */ lui $at, %hi(viewport_img_width)
/* 106EF8 7F0D23C8 0FC26919 */ jal get_num_players
/* 106EFC 7F0D23CC AC39E310 */ sw $t9, %lo(viewport_img_width)($at)
/* 106F00 7F0D23D0 24010001 */ li $at, 1
/* 106F04 7F0D23D4 14410005 */ bne $v0, $at, .L7F0D23EC
/* 106F08 7F0D23D8 3C028009 */ lui $v0, %hi(viewport_img_height)
/* 106F0C 7F0D23DC 2442E314 */ addiu $v0, %lo(viewport_img_height) # addiu $v0, $v0, -0x1cec
/* 106F10 7F0D23E0 240800F0 */ li $t0, 240
/* 106F14 7F0D23E4 10000005 */ b .L7F0D23FC
/* 106F18 7F0D23E8 AC480000 */ sw $t0, ($v0)
.L7F0D23EC:
/* 106F1C 7F0D23EC 3C028009 */ lui $v0, %hi(viewport_img_height)
/* 106F20 7F0D23F0 2442E314 */ addiu $v0, %lo(viewport_img_height) # addiu $v0, $v0, -0x1cec
/* 106F24 7F0D23F4 24090078 */ li $t1, 120
/* 106F28 7F0D23F8 AC490000 */ sw $t1, ($v0)
.L7F0D23FC:
/* 106F2C 7F0D23FC 3C0A8009 */ lui $t2, %hi(viewport_img_width)
/* 106F30 7F0D2400 8D4AE310 */ lw $t2, %lo(viewport_img_width)($t2)
/* 106F34 7F0D2404 8C4B0000 */ lw $t3, ($v0)
/* 106F38 7F0D2408 24050004 */ li $a1, 4
/* 106F3C 7F0D240C 014B0019 */ multu $t2, $t3
/* 106F40 7F0D2410 00002012 */ mflo $a0
/* 106F44 7F0D2414 00046040 */ sll $t4, $a0, 1
/* 106F48 7F0D2418 0C0025C8 */ jal mempAllocBytesInBank
/* 106F4C 7F0D241C 25840040 */ addiu $a0, $t4, 0x40
/* 106F50 7F0D2420 8FBF0014 */ lw $ra, 0x14($sp)
/* 106F54 7F0D2424 3C038005 */ lui $v1, %hi(viewport_img)
/* 106F58 7F0D2428 2463EB00 */ addiu $v1, %lo(viewport_img) # addiu $v1, $v1, -0x1500
/* 106F5C 7F0D242C 244E003F */ addiu $t6, $v0, 0x3f
/* 106F60 7F0D2430 2401FFC0 */ li $at, -64
/* 106F64 7F0D2434 AC620000 */ sw $v0, ($v1)
/* 106F68 7F0D2438 01C17824 */ and $t7, $t6, $at
/* 106F6C 7F0D243C AC6F0000 */ sw $t7, ($v1)
/* 106F70 7F0D2440 03E00008 */ jr $ra
/* 106F74 7F0D2444 27BD0018 */ addiu $sp, $sp, 0x18
)
#endif
void sub_GAME_7F0D2448(s32 vp_image, s32 vp_width, s32 vp_height) {
viewport_img = vp_image;
viewport_img_width = vp_width;
viewport_img_height = vp_height;
#define ALIGN64(val) (((val) + 0x3F) & ~0x3F)
u32 mempAllocBytesInBank(u32 bytes,u8 bank);
s32 getPlayerCount(void);
void zbufAllocate(void) {
if (resolution != 0) {
z_buffer_width = 440;
z_buffer_height = 330;
} else {
z_buffer_width = 320;
if (getPlayerCount() == 1) {
z_buffer_height = 240;
} else {
z_buffer_height = 120;
}
}
z_buffer = mempAllocBytesInBank((z_buffer_width * z_buffer_height * 2) + 64, 4);
z_buffer = ALIGN64(z_buffer);
}
#ifdef NONMATCHING
void sub_GAME_7F0D2464(void) {
void zbufSetBuffer(s32 buffer, s32 width, s32 height) {
z_buffer = buffer;
z_buffer_width = width;
z_buffer_height = height;
}
#else
GLOBAL_ASM(
.text
glabel sub_GAME_7F0D2464
/* 106F94 7F0D2464 3C0E8005 */ lui $t6, %hi(viewport_img)
/* 106F98 7F0D2468 8DCEEB00 */ lw $t6, %lo(viewport_img)($t6)
/* 106F9C 7F0D246C 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 106FA0 7F0D2470 AFBF0014 */ sw $ra, 0x14($sp)
/* 106FA4 7F0D2474 15C00004 */ bnez $t6, .L7F0D2488
/* 106FA8 7F0D2478 00803025 */ move $a2, $a0
/* 106FAC 7F0D247C 0FC348E3 */ jal allocate_viewport_buffer
/* 106FB0 7F0D2480 AFA40018 */ sw $a0, 0x18($sp)
/* 106FB4 7F0D2484 8FA60018 */ lw $a2, 0x18($sp)
.L7F0D2488:
/* 106FB8 7F0D2488 0FC26C54 */ jal get_cur_playernum
/* 106FBC 7F0D248C AFA60018 */ sw $a2, 0x18($sp)
/* 106FC0 7F0D2490 28410002 */ slti $at, $v0, 2
/* 106FC4 7F0D2494 1020000B */ beqz $at, .L7F0D24C4
/* 106FC8 7F0D2498 8FA60018 */ lw $a2, 0x18($sp)
/* 106FCC 7F0D249C 0FC26919 */ jal get_num_players
/* 106FD0 7F0D24A0 AFA60018 */ sw $a2, 0x18($sp)
/* 106FD4 7F0D24A4 24010002 */ li $at, 2
/* 106FD8 7F0D24A8 14410009 */ bne $v0, $at, .L7F0D24D0
/* 106FDC 7F0D24AC 8FA60018 */ lw $a2, 0x18($sp)
/* 106FE0 7F0D24B0 0FC26C54 */ jal get_cur_playernum
/* 106FE4 7F0D24B4 AFA60018 */ sw $a2, 0x18($sp)
/* 106FE8 7F0D24B8 24010001 */ li $at, 1
/* 106FEC 7F0D24BC 14410004 */ bne $v0, $at, .L7F0D24D0
/* 106FF0 7F0D24C0 8FA60018 */ lw $a2, 0x18($sp)
.L7F0D24C4:
/* 106FF4 7F0D24C4 3C070001 */ lui $a3, (0x00012C00 >> 16) # lui $a3, 1
/* 106FF8 7F0D24C8 10000002 */ b .L7F0D24D4
/* 106FFC 7F0D24CC 34E72C00 */ ori $a3, (0x00012C00 & 0xFFFF) # ori $a3, $a3, 0x2c00
.L7F0D24D0:
/* 107000 7F0D24D0 00003825 */ move $a3, $zero
.L7F0D24D4:
/* 107004 7F0D24D4 3C0F8005 */ lui $t7, %hi(viewport_img)
/* 107008 7F0D24D8 8DEFEB00 */ lw $t7, %lo(viewport_img)($t7)
/* 10700C 7F0D24DC 3C19E700 */ lui $t9, 0xe700
/* 107010 7F0D24E0 2401FFC0 */ li $at, -64
/* 107014 7F0D24E4 ACD90000 */ sw $t9, ($a2)
/* 107018 7F0D24E8 ACC00004 */ sw $zero, 4($a2)
/* 10701C 7F0D24EC 24C50008 */ addiu $a1, $a2, 8
/* 107020 7F0D24F0 01E71823 */ subu $v1, $t7, $a3
/* 107024 7F0D24F4 0061C024 */ and $t8, $v1, $at
/* 107028 7F0D24F8 3C08FE00 */ lui $t0, 0xfe00
/* 10702C 7F0D24FC ACA80000 */ sw $t0, ($a1)
/* 107030 7F0D2500 ACB80004 */ sw $t8, 4($a1)
/* 107034 7F0D2504 8FBF0014 */ lw $ra, 0x14($sp)
/* 107038 7F0D2508 24A20008 */ addiu $v0, $a1, 8
/* 10703C 7F0D250C 27BD0018 */ addiu $sp, $sp, 0x18
/* 107040 7F0D2510 03E00008 */ jr $ra
/* 107044 7F0D2514 00000000 */ nop
)
#endif
#ifdef NONMATCHING
void sub_GAME_7F0D2518(void) {
Gfx *zbufInit(Gfx *gdl) {
s32 phi_a3;
s32 test;
if (z_buffer == 0) {
zbufAllocate();
}
if (!(get_cur_playernum() < 2) || ((getPlayerCount() == 2) && (get_cur_playernum() == 1))) {
phi_a3 = 320 * 240;
} else {
phi_a3 = 0;
}
test = (z_buffer - phi_a3);
test = test & ~0x3F;
gDPPipeSync(gdl++);
gDPSetDepthImage(gdl++, test);
return gdl;
}
#else
GLOBAL_ASM(
.text
glabel sub_GAME_7F0D2518
/* 107048 7F0D2518 27BDFFB0 */ addiu $sp, $sp, -0x50
/* 10704C 7F0D251C AFB00018 */ sw $s0, 0x18($sp)
/* 107050 7F0D2520 AFBF001C */ sw $ra, 0x1c($sp)
/* 107054 7F0D2524 24900008 */ addiu $s0, $a0, 8
/* 107058 7F0D2528 3C0EE700 */ lui $t6, 0xe700
/* 10705C 7F0D252C AC8E0000 */ sw $t6, ($a0)
/* 107060 7F0D2530 AC800004 */ sw $zero, 4($a0)
/* 107064 7F0D2534 02001825 */ move $v1, $s0
/* 107068 7F0D2538 3C0FB900 */ lui $t7, (0xB900031D >> 16) # lui $t7, 0xb900
/* 10706C 7F0D253C 35EF031D */ ori $t7, (0xB900031D & 0xFFFF) # ori $t7, $t7, 0x31d
/* 107070 7F0D2540 AC6F0000 */ sw $t7, ($v1)
/* 107074 7F0D2544 AC600004 */ sw $zero, 4($v1)
/* 107078 7F0D2548 3C188009 */ lui $t8, %hi(viewport_img_width)
/* 10707C 7F0D254C 8F18E310 */ lw $t8, %lo(viewport_img_width)($t8)
/* 107080 7F0D2550 26100008 */ addiu $s0, $s0, 8
/* 107084 7F0D2554 3C01FF10 */ lui $at, 0xff10
/* 107088 7F0D2558 2719FFFF */ addiu $t9, $t8, -1
/* 10708C 7F0D255C 33280FFF */ andi $t0, $t9, 0xfff
/* 107090 7F0D2560 01014825 */ or $t1, $t0, $at
/* 107094 7F0D2564 02002825 */ move $a1, $s0
/* 107098 7F0D2568 ACA90000 */ sw $t1, ($a1)
/* 10709C 7F0D256C 3C0A8005 */ lui $t2, %hi(viewport_img)
/* 1070A0 7F0D2570 8D4AEB00 */ lw $t2, %lo(viewport_img)($t2)
/* 1070A4 7F0D2574 26100008 */ addiu $s0, $s0, 8
/* 1070A8 7F0D2578 3C018000 */ lui $at, 0x8000
/* 1070AC 7F0D257C 02003025 */ move $a2, $s0
/* 1070B0 7F0D2580 01415821 */ addu $t3, $t2, $at
/* 1070B4 7F0D2584 ACAB0004 */ sw $t3, 4($a1)
/* 1070B8 7F0D2588 26100008 */ addiu $s0, $s0, 8
/* 1070BC 7F0D258C 3C0CBA00 */ lui $t4, (0xBA001402 >> 16) # lui $t4, 0xba00
/* 1070C0 7F0D2590 358C1402 */ ori $t4, (0xBA001402 & 0xFFFF) # ori $t4, $t4, 0x1402
/* 1070C4 7F0D2594 3C0D0030 */ lui $t5, 0x30
/* 1070C8 7F0D2598 02003825 */ move $a3, $s0
/* 1070CC 7F0D259C ACCD0004 */ sw $t5, 4($a2)
/* 1070D0 7F0D25A0 ACCC0000 */ sw $t4, ($a2)
/* 1070D4 7F0D25A4 3C0FFFFC */ lui $t7, (0xFFFCFFFC >> 16) # lui $t7, 0xfffc
/* 1070D8 7F0D25A8 35EFFFFC */ ori $t7, (0xFFFCFFFC & 0xFFFF) # ori $t7, $t7, 0xfffc
/* 1070DC 7F0D25AC 26100008 */ addiu $s0, $s0, 8
/* 1070E0 7F0D25B0 3C0EF700 */ lui $t6, 0xf700
/* 1070E4 7F0D25B4 ACEE0000 */ sw $t6, ($a3)
/* 1070E8 7F0D25B8 ACEF0004 */ sw $t7, 4($a3)
/* 1070EC 7F0D25BC 02001025 */ move $v0, $s0
/* 1070F0 7F0D25C0 3C18ED00 */ lui $t8, 0xed00
/* 1070F4 7F0D25C4 AC580000 */ sw $t8, ($v0)
/* 1070F8 7F0D25C8 AFA20030 */ sw $v0, 0x30($sp)
/* 1070FC 7F0D25CC 0C001107 */ jal get_video2_settings_txtClipW
/* 107100 7F0D25D0 26100008 */ addiu $s0, $s0, 8
/* 107104 7F0D25D4 0C00110B */ jal get_video2_settings_txtClipH
/* 107108 7F0D25D8 A7A20026 */ sh $v0, 0x26($sp)
/* 10710C 7F0D25DC 44822000 */ mtc1 $v0, $f4
/* 107110 7F0D25E0 87AA0026 */ lh $t2, 0x26($sp)
/* 107114 7F0D25E4 3C014080 */ li $at, 0x40800000 # 4.000000
/* 107118 7F0D25E8 468021A0 */ cvt.s.w $f6, $f4
/* 10711C 7F0D25EC 448A8000 */ mtc1 $t2, $f16
/* 107120 7F0D25F0 44810000 */ mtc1 $at, $f0
/* 107124 7F0D25F4 8FB80030 */ lw $t8, 0x30($sp)
/* 107128 7F0D25F8 468084A0 */ cvt.s.w $f18, $f16
/* 10712C 7F0D25FC 46003202 */ mul.s $f8, $f6, $f0
/* 107130 7F0D2600 00000000 */ nop
/* 107134 7F0D2604 46009102 */ mul.s $f4, $f18, $f0
/* 107138 7F0D2608 4600428D */ trunc.w.s $f10, $f8
/* 10713C 7F0D260C 4600218D */ trunc.w.s $f6, $f4
/* 107140 7F0D2610 44085000 */ mfc1 $t0, $f10
/* 107144 7F0D2614 440C3000 */ mfc1 $t4, $f6
/* 107148 7F0D2618 31090FFF */ andi $t1, $t0, 0xfff
/* 10714C 7F0D261C 318D0FFF */ andi $t5, $t4, 0xfff
/* 107150 7F0D2620 000D7300 */ sll $t6, $t5, 0xc
/* 107154 7F0D2624 012E7825 */ or $t7, $t1, $t6
/* 107158 7F0D2628 0FC26919 */ jal get_num_players
/* 10715C 7F0D262C AF0F0004 */ sw $t7, 4($t8)
/* 107160 7F0D2630 28410003 */ slti $at, $v0, 3
/* 107164 7F0D2634 10200005 */ beqz $at, .L7F0D264C
/* 107168 7F0D2638 00000000 */ nop
/* 10716C 7F0D263C 0C001107 */ jal get_video2_settings_txtClipW
/* 107170 7F0D2640 AFA0004C */ sw $zero, 0x4c($sp)
/* 107174 7F0D2644 1000001B */ b .L7F0D26B4
/* 107178 7F0D2648 2445FFFF */ addiu $a1, $v0, -1
.L7F0D264C:
/* 10717C 7F0D264C 0FC26C54 */ jal get_cur_playernum
/* 107180 7F0D2650 00000000 */ nop
/* 107184 7F0D2654 10400006 */ beqz $v0, .L7F0D2670
/* 107188 7F0D2658 00000000 */ nop
/* 10718C 7F0D265C 0FC26C54 */ jal get_cur_playernum
/* 107190 7F0D2660 00000000 */ nop
/* 107194 7F0D2664 24010002 */ li $at, 2
/* 107198 7F0D2668 14410009 */ bne $v0, $at, .L7F0D2690
/* 10719C 7F0D266C 00000000 */ nop
.L7F0D2670:
/* 1071A0 7F0D2670 0C001107 */ jal get_video2_settings_txtClipW
/* 1071A4 7F0D2674 AFA0004C */ sw $zero, 0x4c($sp)
/* 1071A8 7F0D2678 04410003 */ bgez $v0, .L7F0D2688
/* 1071AC 7F0D267C 00022843 */ sra $a1, $v0, 1
/* 1071B0 7F0D2680 24410001 */ addiu $at, $v0, 1
/* 1071B4 7F0D2684 00012843 */ sra $a1, $at, 1
.L7F0D2688:
/* 1071B8 7F0D2688 1000000A */ b .L7F0D26B4
/* 1071BC 7F0D268C 24A5FFFF */ addiu $a1, $a1, -1
.L7F0D2690:
/* 1071C0 7F0D2690 0C001107 */ jal get_video2_settings_txtClipW
/* 1071C4 7F0D2694 00000000 */ nop
/* 1071C8 7F0D2698 04410003 */ bgez $v0, .L7F0D26A8
/* 1071CC 7F0D269C 0002C843 */ sra $t9, $v0, 1
/* 1071D0 7F0D26A0 24410001 */ addiu $at, $v0, 1
/* 1071D4 7F0D26A4 0001C843 */ sra $t9, $at, 1
.L7F0D26A8:
/* 1071D8 7F0D26A8 0C001107 */ jal get_video2_settings_txtClipW
/* 1071DC 7F0D26AC AFB9004C */ sw $t9, 0x4c($sp)
/* 1071E0 7F0D26B0 2445FFFF */ addiu $a1, $v0, -1
.L7F0D26B4:
/* 1071E4 7F0D26B4 3C0C8009 */ lui $t4, %hi(viewport_img_height)
/* 1071E8 7F0D26B8 8D8CE314 */ lw $t4, %lo(viewport_img_height)($t4)
/* 1071EC 7F0D26BC 30A803FF */ andi $t0, $a1, 0x3ff
/* 1071F0 7F0D26C0 00085380 */ sll $t2, $t0, 0xe
/* 1071F4 7F0D26C4 258DFFFF */ addiu $t5, $t4, -1
/* 1071F8 7F0D26C8 31A903FF */ andi $t1, $t5, 0x3ff
/* 1071FC 7F0D26CC 3C01F600 */ lui $at, 0xf600
/* 107200 7F0D26D0 01415825 */ or $t3, $t2, $at
/* 107204 7F0D26D4 00097080 */ sll $t6, $t1, 2
/* 107208 7F0D26D8 016E7825 */ or $t7, $t3, $t6
/* 10720C 7F0D26DC 02001825 */ move $v1, $s0
/* 107210 7F0D26E0 AC6F0000 */ sw $t7, ($v1)
/* 107214 7F0D26E4 8FB8004C */ lw $t8, 0x4c($sp)
/* 107218 7F0D26E8 26100008 */ addiu $s0, $s0, 8
/* 10721C 7F0D26EC 02002025 */ move $a0, $s0
/* 107220 7F0D26F0 331903FF */ andi $t9, $t8, 0x3ff
/* 107224 7F0D26F4 00194380 */ sll $t0, $t9, 0xe
/* 107228 7F0D26F8 AC680004 */ sw $t0, 4($v1)
/* 10722C 7F0D26FC 3C0AE700 */ lui $t2, 0xe700
/* 107230 7F0D2700 AC8A0000 */ sw $t2, ($a0)
/* 107234 7F0D2704 AC800004 */ sw $zero, 4($a0)
/* 107238 7F0D2708 8FBF001C */ lw $ra, 0x1c($sp)
/* 10723C 7F0D270C 26020008 */ addiu $v0, $s0, 8
/* 107240 7F0D2710 8FB00018 */ lw $s0, 0x18($sp)
/* 107244 7F0D2714 03E00008 */ jr $ra
/* 107248 7F0D2718 27BD0050 */ addiu $sp, $sp, 0x50
)
#endif
s16 get_video2_settings_txtClipW(void);
s16 get_video2_settings_txtClipH(void);
Gfx *zbufClearCurrentPlayer(Gfx *gdl) {
s32 start_x;
s32 end_x;
gDPPipeSync(gdl++);
gDPSetRenderMode(gdl++, G_RM_NOOP, G_RM_NOOP2);
gDPSetColorImage(gdl++, G_IM_FMT_RGBA, G_IM_SIZ_16b, z_buffer_width, (z_buffer + 0x80000000));
gDPSetCycleType(gdl++, G_CYC_FILL);
gDPSetFillColor(gdl++, (GPACK_ZDZ(G_MAXFBZ, 0) << 16 | GPACK_ZDZ(G_MAXFBZ, 0)));
gDPSetScissor(gdl++, G_SC_NON_INTERLACE, 0, 0, get_video2_settings_txtClipW(), get_video2_settings_txtClipH());
if (getPlayerCount() < 3) {
start_x = 0;
end_x = get_video2_settings_txtClipW() - 1;
} else if ((get_cur_playernum() == 0) || (get_cur_playernum() == 2)) {
start_x = 0;
end_x = (get_video2_settings_txtClipW() / 2) - 1;
} else {
start_x = get_video2_settings_txtClipW() / 2;
end_x = get_video2_settings_txtClipW() - 1;
}
gDPFillRectangle(gdl++, start_x, 0, end_x, (z_buffer_height - 1));
gDPPipeSync(gdl++);
return gdl;
}
+959 -2247
View File
File diff suppressed because it is too large Load Diff
+47 -2
View File
@@ -2,12 +2,57 @@
#define _WATCH_H_
#include "ultra64.h"
void zero_D_80040998();
typedef enum WATCH_INDEX {
WATCH_INDEX_MISSION_STATUS = 0,
WATCH_INDEX_INVENTORY,
WATCH_INDEX_CONTROL_OPTIONS,
WATCH_INDEX_GAME_OPTIONS,
WATCH_INDEX_MISSION_BRIEFING
} WATCH_INDEX;
void zero_D_8004099C();
typedef enum WATCH_CONTROLLER_OPTIONS_INDEX {
CONTROLLER_OPTIONS_INDEX_STYLE = 0,
CONTROLLER_OPTIONS_INDEX_INPUTS
} WATCH_CONTROLLER_OPTIONS_INDEX;
typedef enum WATCH_GAME_OPTIONS_INDEX {
GAME_OPTIONS_INDEX_MUSIC = 0,
GAME_OPTIONS_INDEX_FX,
GAME_OPTIONS_INDEX_LOOK_UPDOWN,
GAME_OPTIONS_INDEX_AUTO_AIM,
GAME_OPTIONS_INDEX_AIM_CONTROL,
GAME_OPTIONS_INDEX_SIGHT_ONSCREEN,
GAME_OPTIONS_INDEX_LOOK_AHEAD,
GAME_OPTIONS_INDEX_AMMO_ONSCREEN,
GAME_OPTIONS_INDEX_SCREEN_SIZE,
GAME_OPTIONS_INDEX_RATIO
} WATCH_GAME_OPTIONS_INDEX;
typedef enum WATCH_BRIEF_INDEX {
BRIEF_INDEX_BACKGROUND = 0,
BRIEF_INDEX_M,
BRIEF_INDEX_Q,
BRIEF_INDEX_MONEYPENNY,
BRIEF_INDEX_OBJECTIVES
} WATCH_BRIEF_INDEX;
struct game_options {
u16 text[4];
u32 current_value;
};
extern struct game_options game_options_entries[];
void reset_controller_options_index();
void reset_game_options_index();
void zero_D_800409A4();
f32 sub_GAME_7F0A6A2C(f32 arg0);
f32 sub_GAME_7F0A95C4(f32 param_1, f32 param_2, f32 param_3);
#endif
+1 -1
View File
@@ -1909,7 +1909,7 @@ glabel get_controller_buttons_held
#ifdef NONMATCHING
s32 get_controller_buttons_pressed(s32 arg0, s32 arg1) {
s32 get_controller_buttons_pressed(s8 arg0, s32 arg1) {
s32 temp_t7;
void *temp_v1;
+1 -1
View File
@@ -4,6 +4,6 @@
#include "ultra64.h"
void *joyInitDebugNoticeList(void);
s32 get_attached_controller_count(void);
s32 get_controller_buttons_pressed(s32 arg0, s32 arg1);
s32 get_controller_buttons_pressed(s8 arg0, s32 arg1);
#endif
+11
View File
@@ -0,0 +1,11 @@
#include "libultra_internal.h"
#include "hardware.h"
s32 __osAiDeviceBusy(void) {
register s32 status = HW_REG(AI_STATUS_REG, u32);
if ((status & AI_STATUS_AI_FULL) != 0) {
return 1;
} else {
return 0;
}
}
-28
View File
@@ -1,28 +0,0 @@
# Goldeneye 007 (U) disassembly and split file
# generated by n64split v0.4a - N64 ROM splitter
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64
.include "macros.inc"
.section .text, "ax"
.section .text
glabel __osAiDeviceBusy
/* 019CF0 700190F0 3C0EA450 */ lui $t6, %hi(AI_STATUS_REG) # $t6, 0xa450
/* 019CF4 700190F4 8DC4000C */ lw $a0, %lo(AI_STATUS_REG)($t6)
/* 019CF8 700190F8 3C018000 */ lui $at, 0x8000
/* 019CFC 700190FC 27BDFFF8 */ addiu $sp, $sp, -8
/* 019D00 70019100 00817824 */ and $t7, $a0, $at
/* 019D04 70019104 11E00003 */ beqz $t7, .L70019114
/* 019D08 70019108 00000000 */ nop
/* 019D0C 7001910C 10000002 */ b .L70019118
/* 019D10 70019110 24020001 */ li $v0, 1
.L70019114:
/* 019D14 70019114 00001025 */ move $v0, $zero
.L70019118:
/* 019D18 70019118 03E00008 */ jr $ra
/* 019D1C 7001911C 27BD0008 */ addiu $sp, $sp, 8
+7
View File
@@ -0,0 +1,7 @@
#include "libultra_internal.h"
#include "osAi.h"
#include "hardware.h"
u32 osAiGetLength() {
return HW_REG(AI_LEN_REG, u32);
}
-15
View File
@@ -1,15 +0,0 @@
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64
.include "macros.inc"
.section .text, "ax"
glabel osAiGetLength
/* 00FBB0 7000EFB0 3C0EA450 */ lui $t6, 0xa450
/* 00FBB4 7000EFB4 03E00008 */ jr $ra
/* 00FBB8 7000EFB8 8DC20004 */ lw $v0, 4($t6)
+30
View File
@@ -0,0 +1,30 @@
#include "libultra_internal.h"
#include "osAi.h"
#include "hardware.h"
extern s32 osViClock;
s32 osAiSetFrequency(u32 freq) {
register u32 a1;
register s32 a2;
register float ftmp;
ftmp = osViClock / (float) freq + .5f;
a1 = ftmp;
if (a1 < 0x84) {
return -1;
}
a2 = (a1 / 66) & 0xff;
if (a2 > 16) {
a2 = 16;
}
HW_REG(AI_DACRATE_REG, u32) = a1 - 1;
HW_REG(AI_BITRATE_REG, u32) = a2 - 1;
HW_REG(AI_CONTROL_REG, u32) = 1; // enable dma
return osViClock / (s32) a1;
}
-106
View File
@@ -1,106 +0,0 @@
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64
.include "macros.inc"
.section .text, "ax"
glabel osAiSetFrequency
/* 00F530 7000E930 3C0E8003 */ lui $t6, %hi(osViClock)#%hi(osViClock)
/* 00F534 7000E934 8DCE804C */ lw $t6, %lo(osViClock)($t6)#%lo(osViClock)($t6)
/* 00F538 7000E938 44844000 */ mtc1 $a0, $f8
/* 00F53C 7000E93C 27BDFFF0 */ addiu $sp, $sp, -0x10
/* 00F540 7000E940 448E2000 */ mtc1 $t6, $f4
/* 00F544 7000E944 468042A0 */ cvt.s.w $f10, $f8
/* 00F548 7000E948 04810005 */ bgez $a0, .L7000E960
/* 00F54C 7000E94C 468021A0 */ cvt.s.w $f6, $f4
/* 00F550 7000E950 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000
/* 00F554 7000E954 44818000 */ mtc1 $at, $f16
/* 00F558 7000E958 00000000 */ nop
/* 00F55C 7000E95C 46105280 */ add.s $f10, $f10, $f16
.L7000E960:
/* 00F560 7000E960 460A3483 */ div.s $f18, $f6, $f10
/* 00F564 7000E964 3C013F00 */ li $at, 0x3F000000 # 0.500000
/* 00F568 7000E968 44812000 */ mtc1 $at, $f4
/* 00F56C 7000E96C 24050001 */ li $a1, 1
/* 00F570 7000E970 46049300 */ add.s $f12, $f18, $f4
/* 00F574 7000E974 444FF800 */ cfc1 $t7, $31
/* 00F578 7000E978 44C5F800 */ ctc1 $a1, $31
/* 00F57C 7000E97C 00000000 */ nop
/* 00F580 7000E980 46006224 */ cvt.w.s $f8, $f12
/* 00F584 7000E984 4445F800 */ cfc1 $a1, $31
/* 00F588 7000E988 00000000 */ nop
/* 00F58C 7000E98C 30A10004 */ andi $at, $a1, 4
/* 00F590 7000E990 30A50078 */ andi $a1, $a1, 0x78
/* 00F594 7000E994 10A00013 */ beqz $a1, .L7000E9E4
/* 00F598 7000E998 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000
/* 00F59C 7000E99C 44814000 */ mtc1 $at, $f8
/* 00F5A0 7000E9A0 24050001 */ li $a1, 1
/* 00F5A4 7000E9A4 46086201 */ sub.s $f8, $f12, $f8
/* 00F5A8 7000E9A8 44C5F800 */ ctc1 $a1, $31
/* 00F5AC 7000E9AC 00000000 */ nop
/* 00F5B0 7000E9B0 46004224 */ cvt.w.s $f8, $f8
/* 00F5B4 7000E9B4 4445F800 */ cfc1 $a1, $31
/* 00F5B8 7000E9B8 00000000 */ nop
/* 00F5BC 7000E9BC 30A10004 */ andi $at, $a1, 4
/* 00F5C0 7000E9C0 30A50078 */ andi $a1, $a1, 0x78
/* 00F5C4 7000E9C4 14A00005 */ bnez $a1, .L7000E9DC
/* 00F5C8 7000E9C8 00000000 */ nop
/* 00F5CC 7000E9CC 44054000 */ mfc1 $a1, $f8
/* 00F5D0 7000E9D0 3C018000 */ lui $at, 0x8000
/* 00F5D4 7000E9D4 10000007 */ b .L7000E9F4
/* 00F5D8 7000E9D8 00A12825 */ or $a1, $a1, $at
.L7000E9DC:
/* 00F5DC 7000E9DC 10000005 */ b .L7000E9F4
/* 00F5E0 7000E9E0 2405FFFF */ li $a1, -1
.L7000E9E4:
/* 00F5E4 7000E9E4 44054000 */ mfc1 $a1, $f8
/* 00F5E8 7000E9E8 00000000 */ nop
/* 00F5EC 7000E9EC 04A0FFFB */ bltz $a1, .L7000E9DC
/* 00F5F0 7000E9F0 00000000 */ nop
.L7000E9F4:
/* 00F5F4 7000E9F4 44CFF800 */ ctc1 $t7, $31
/* 00F5F8 7000E9F8 2CA10084 */ sltiu $at, $a1, 0x84
/* 00F5FC 7000E9FC 10200003 */ beqz $at, .L7000EA0C
/* 00F600 7000EA00 00000000 */ nop
/* 00F604 7000EA04 10000020 */ b .L7000EA88
/* 00F608 7000EA08 2402FFFF */ li $v0, -1
.L7000EA0C:
/* 00F60C 7000EA0C 24010042 */ li $at, 66
/* 00F610 7000EA10 00A1001B */ divu $zero, $a1, $at
/* 00F614 7000EA14 00003012 */ mflo $a2
/* 00F618 7000EA18 30D800FF */ andi $t8, $a2, 0xff
/* 00F61C 7000EA1C 03003025 */ move $a2, $t8
/* 00F620 7000EA20 28C10011 */ slti $at, $a2, 0x11
/* 00F624 7000EA24 14200002 */ bnez $at, .L7000EA30
/* 00F628 7000EA28 00000000 */ nop
/* 00F62C 7000EA2C 24060010 */ li $a2, 16
.L7000EA30:
/* 00F630 7000EA30 24B9FFFF */ addiu $t9, $a1, -1
/* 00F634 7000EA34 3C08A450 */ lui $t0, %hi(AI_DACRATE_REG) # $t0, 0xa450
/* 00F638 7000EA38 AD190010 */ sw $t9, %lo(AI_DACRATE_REG)($t0)
/* 00F63C 7000EA3C 24C9FFFF */ addiu $t1, $a2, -1
/* 00F640 7000EA40 3C0AA450 */ lui $t2, %hi(AI_BITRATE_REG) # $t2, 0xa450
/* 00F644 7000EA44 AD490014 */ sw $t1, %lo(AI_BITRATE_REG)($t2)
/* 00F648 7000EA48 240B0001 */ li $t3, 1
/* 00F64C 7000EA4C 3C0CA450 */ lui $t4, %hi(AI_CONTROL_REG) # $t4, 0xa450
/* 00F650 7000EA50 AD8B0008 */ sw $t3, %lo(AI_CONTROL_REG)($t4)
/* 00F654 7000EA54 3C0D8003 */ lui $t5, %hi(osViClock) #osViClock
/* 00F658 7000EA58 8DAD804C */ lw $t5, %lo(osViClock)($t5) #osViClock
/* 00F65C 7000EA5C 01A5001A */ div $zero, $t5, $a1
/* 00F660 7000EA60 00001012 */ mflo $v0
/* 00F664 7000EA64 14A00002 */ bnez $a1, .L7000EA70
/* 00F668 7000EA68 00000000 */ nop
/* 00F66C 7000EA6C 0007000D */ break 7
.L7000EA70:
/* 00F670 7000EA70 2401FFFF */ li $at, -1
/* 00F674 7000EA74 14A10004 */ bne $a1, $at, .L7000EA88
/* 00F678 7000EA78 3C018000 */ lui $at, 0x8000
/* 00F67C 7000EA7C 15A10002 */ bne $t5, $at, .L7000EA88
/* 00F680 7000EA80 00000000 */ nop
/* 00F684 7000EA84 0006000D */ break 6
.L7000EA88:
/* 00F688 7000EA88 03E00008 */ jr $ra
/* 00F68C 7000EA8C 27BD0010 */ addiu $sp, $sp, 0x10
+40
View File
@@ -0,0 +1,40 @@
#include "libultra_internal.h"
#include "osAi.h"
#include "hardware.h"
u8 D_80334820 = 0;
/**
* It is worth noting that a previous hardware bug has been fixed by a software
* patch in osAiSetNextBuffer. This bug occurred when the address of the end of the
* buffer specified by osAiSetNextBuffer was at a specific value. This value
* occurred when the following was true:
*
* (vaddr + nbytes) & 0x00003FFF == 0x00002000
*
* (when the buffer ends with address of lower 14 bits 0x2000) In this case, the
* DMA transfer does not complete successfully. This can cause clicks and pops in
* the audio output. This bug no longer requires special handling by the application
* because it is now patched by osAiSetNextBuffer.
*/
s32 osAiSetNextBuffer(void *buff, u32 len) {
u8 *sp1c = buff;
if (D_80334820 != 0) {
sp1c -= 0x2000;
}
if ((((uintptr_t) buff + len) & 0x3fff) == 0x2000) {
D_80334820 = 1;
} else {
D_80334820 = 0;
}
if (__osAiDeviceBusy()) {
return -1;
}
HW_REG(AI_DRAM_ADDR_REG, void *) = (void *) osVirtualToPhysical(sp1c);
HW_REG(AI_LEN_REG, u32) = len;
return 0;
}
-63
View File
@@ -1,63 +0,0 @@
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64
.include "macros.inc"
.section .text, "ax"
glabel osAiSetNextBuffer
/* 00FB00 7000EF00 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 00FB04 7000EF04 3C0F8002 */ lui $t7, %hi(B_800276F0)
/* 00FB08 7000EF08 91EF76F0 */ lbu $t7, %lo(B_800276F0)($t7)
/* 00FB0C 7000EF0C AFA40020 */ sw $a0, 0x20($sp)
/* 00FB10 7000EF10 8FAE0020 */ lw $t6, 0x20($sp)
/* 00FB14 7000EF14 AFBF0014 */ sw $ra, 0x14($sp)
/* 00FB18 7000EF18 AFA50024 */ sw $a1, 0x24($sp)
/* 00FB1C 7000EF1C 11E00003 */ beqz $t7, .L7000EF2C
/* 00FB20 7000EF20 AFAE001C */ sw $t6, 0x1c($sp)
/* 00FB24 7000EF24 25D8E000 */ addiu $t8, $t6, -0x2000
/* 00FB28 7000EF28 AFB8001C */ sw $t8, 0x1c($sp)
.L7000EF2C:
/* 00FB2C 7000EF2C 8FB90020 */ lw $t9, 0x20($sp)
/* 00FB30 7000EF30 8FA80024 */ lw $t0, 0x24($sp)
/* 00FB34 7000EF34 24012000 */ li $at, 8192
/* 00FB38 7000EF38 03284821 */ addu $t1, $t9, $t0
/* 00FB3C 7000EF3C 312A3FFF */ andi $t2, $t1, 0x3fff
/* 00FB40 7000EF40 15410005 */ bne $t2, $at, .L7000EF58
/* 00FB44 7000EF44 00000000 */ nop
/* 00FB48 7000EF48 240B0001 */ li $t3, 1
/* 00FB4C 7000EF4C 3C018002 */ lui $at, %hi(B_800276F0)
/* 00FB50 7000EF50 10000003 */ b .L7000EF60
/* 00FB54 7000EF54 A02B76F0 */ sb $t3, %lo(B_800276F0)($at)
.L7000EF58:
/* 00FB58 7000EF58 3C018002 */ lui $at, %hi(B_800276F0)
/* 00FB5C 7000EF5C A02076F0 */ sb $zero, %lo(B_800276F0)($at)
.L7000EF60:
/* 00FB60 7000EF60 0C00643C */ jal __osAiDeviceBusy
/* 00FB64 7000EF64 00000000 */ nop
/* 00FB68 7000EF68 10400003 */ beqz $v0, .L7000EF78
/* 00FB6C 7000EF6C 00000000 */ nop
/* 00FB70 7000EF70 10000009 */ b .L7000EF98
/* 00FB74 7000EF74 2402FFFF */ li $v0, -1
.L7000EF78:
/* 00FB78 7000EF78 0C003A2C */ jal osVirtualToPhysical
/* 00FB7C 7000EF7C 8FA4001C */ lw $a0, 0x1c($sp)
/* 00FB80 7000EF80 3C0CA450 */ lui $t4, 0xa450
/* 00FB84 7000EF84 AD820000 */ sw $v0, ($t4)
/* 00FB88 7000EF88 8FAD0024 */ lw $t5, 0x24($sp)
/* 00FB8C 7000EF8C 3C0FA450 */ lui $t7, %hi(AI_LEN_REG) # $t7, 0xa450
/* 00FB90 7000EF90 00001025 */ move $v0, $zero
/* 00FB94 7000EF94 ADED0004 */ sw $t5, %lo(AI_LEN_REG)($t7)
.L7000EF98:
/* 00FB98 7000EF98 8FBF0014 */ lw $ra, 0x14($sp)
/* 00FB9C 7000EF9C 27BD0020 */ addiu $sp, $sp, 0x20
/* 00FBA0 7000EFA0 03E00008 */ jr $ra
/* 00FBA4 7000EFA4 00000000 */ nop
/* 00FBA8 7000EFA8 00000000 */ nop
/* 00FBAC 7000EFAC 00000000 */ nop
.section .data
glabel B_800276F0
.byte 0
+36
View File
@@ -0,0 +1,36 @@
#ifndef __BSTRING_H__
#define __BSTRING_H__
#ifdef __cplusplus
extern "C" {
#endif
/*
* bstring(3C) -- byte string operations
*
* Copyright 1990, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
* the contents of this file may not be disclosed to third parties, copied or
* duplicated in any form, in whole or in part, without the prior written
* permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to restrictions
* as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
* and Computer Software clause at DFARS 252.227-7013, and/or in similar or
* successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
* rights reserved under the Copyright Laws of the United States.
*/
#ident "$Revision: 1.4 $"
extern void bcopy(const void *, void *, size_t);
extern int bcmp(const void *, const void *, int);
extern void bzero(void *, size_t);
extern void blkclr(void *, int);
#ifdef __cplusplus
}
#endif
#endif /* !__BSTRING_H__ */
+208
View File
@@ -0,0 +1,208 @@
#ifndef _CONTROLLER_H
#define _CONTROLLER_H
#include "PR/os_internal.h"
#include "os.h"
#include "PR/rcp.h"
//should go somewhere else but
#define ARRLEN(x) ((s32)(sizeof(x) / sizeof(x[0])))
#define CHNL_ERR(format) ((format.rxsize & CHNL_ERR_MASK) >> 4)
typedef struct
{
/* 0x0 */ u32 ramarray[15];
/* 0x3C */ u32 pifstatus;
} OSPifRam;
typedef struct
{
/* 0x0 */ u8 dummy;
/* 0x1 */ u8 txsize;
/* 0x2 */ u8 rxsize;
/* 0x3 */ u8 cmd;
/* 0x4 */ u16 button;
/* 0x6 */ s8 stick_x;
/* 0x7 */ s8 stick_y;
} __OSContReadFormat;
typedef struct
{
/* 0x0 */ u8 dummy;
/* 0x1 */ u8 txsize;
/* 0x2 */ u8 rxsize;
/* 0x3 */ u8 cmd;
/* 0x4 */ u8 typeh;
/* 0x5 */ u8 typel;
/* 0x6 */ u8 status;
/* 0x7 */ u8 dummy1;
} __OSContRequesFormat;
typedef struct
{
/* 0x0 */ u8 txsize;
/* 0x1 */ u8 rxsize;
/* 0x2 */ u8 cmd;
/* 0x3 */ u8 typeh;
/* 0x4 */ u8 typel;
/* 0x5 */ u8 status;
} __OSContRequesFormatShort;
typedef struct
{
/* 0x0 */ u8 dummy;
/* 0x1 */ u8 txsize;
/* 0x2 */ u8 rxsize;
/* 0x3 */ u8 cmd;
/* 0x4 */ u16 address;
/* 0x6 */ u8 data[BLOCKSIZE];
/* 0x26 */ u8 datacrc;
} __OSContRamReadFormat;
typedef union {
/* 0x0 */ struct
{
/* 0x0 */ u8 bank;
/* 0x1 */ u8 page;
} inode_t;
/* 0x0 */ u16 ipage;
} __OSInodeUnit;
typedef struct
{
/* 0x0 */ u32 game_code;
/* 0x4 */ u16 company_code;
/* 0x6 */ __OSInodeUnit start_page;
/* 0x8 */ u8 status;
/* 0x9 */ s8 reserved;
/* 0xA */ u16 data_sum;
/* 0xC */ u8 ext_name[PFS_FILE_EXT_LEN];
/* 0x10 */ u8 game_name[PFS_FILE_NAME_LEN];
} __OSDir;
typedef struct
{
/* 0x0 */ __OSInodeUnit inode_page[128];
} __OSInode;
typedef struct
{
/* 0x0 */ u32 repaired;
/* 0x4 */ u32 random;
/* 0x8 */ u64 serial_mid;
/* 0x10 */ u64 serial_low;
/* 0x18 */ u16 deviceid;
/* 0x1A */ u8 banks;
/* 0x1B */ u8 version;
/* 0x1C */ u16 checksum;
/* 0x1E */ u16 inverted_checksum;
} __OSPackId;
typedef struct
{
/* 0x0 */ u8 txsize;
/* 0x1 */ u8 rxsize;
/* 0x2 */ u8 cmd;
/* 0x3 */ u8 address;
/* 0x4 */ u8 data[EEPROM_BLOCK_SIZE];
} __OSContEepromFormat;
//from: http://en64.shoutwiki.com/wiki/SI_Registers_Detailed#CONT_CMD_Usage
#define CONT_CMD_REQUEST_STATUS 0
#define CONT_CMD_READ_BUTTON 1
#define CONT_CMD_READ_MEMPACK 2
#define CONT_CMD_WRITE_MEMPACK 3
#define CONT_CMD_READ_EEPROM 4
#define CONT_CMD_WRITE_EEPROM 5
#define CONT_CMD_RESET 0xff
#define CONT_CMD_REQUEST_STATUS_TX 1
#define CONT_CMD_READ_BUTTON_TX 1
#define CONT_CMD_READ_MEMPACK_TX 3
#define CONT_CMD_WRITE_MEMPACK_TX 35
#define CONT_CMD_READ_EEPROM_TX 2
#define CONT_CMD_WRITE_EEPROM_TX 10
#define CONT_CMD_RESET_TX 1
#define CONT_CMD_REQUEST_STATUS_RX 3
#define CONT_CMD_READ_BUTTON_RX 4
#define CONT_CMD_READ_MEMPACK_RX 33
#define CONT_CMD_WRITE_MEMPACK_RX 1
#define CONT_CMD_READ_EEPROM_RX 8
#define CONT_CMD_WRITE_EEPROM_RX 1
#define CONT_CMD_RESET_RX 3
#define CONT_CMD_NOP 0xff
#define CONT_CMD_END 0xfe //indicates end of a command
#define CONT_CMD_EXE 1 //set pif ram status byte to this to do a command
#define DIR_STATUS_EMPTY 0
#define DIR_STATUS_UNKNOWN 1
#define DIR_STATUS_OCCUPIED 2
typedef struct
{
/* 0x0 */ __OSInode inode;
/* 0x100 */ u8 bank;
/* 0x101 */ u8 map[256];
} __OSInodeCache;
extern s32 __osEepStatus(OSMesgQueue *, OSContStatus *);
u16 __osSumcalc(u8 *ptr, int length);
s32 __osIdCheckSum(u16 *ptr, u16 *csum, u16 *icsum);
s32 __osRepairPackId(OSPfs *pfs, __OSPackId *badid, __OSPackId *newid);
s32 __osCheckPackId(OSPfs *pfs, __OSPackId *temp);
s32 __osGetId(OSPfs *pfs);
s32 __osCheckId(OSPfs *pfs);
s32 __osPfsRWInode(OSPfs *pfs, __OSInode *inode, u8 flag, u8 bank);
s32 __osPfsSelectBank(OSPfs *pfs);
s32 __osPfsDeclearPage(OSPfs *pfs, __OSInode *inode, int file_size_in_pages, int *first_page, u8 bank, int *decleared, int *last_page);
s32 __osPfsReleasePages(OSPfs *pfs, __OSInode *inode, u8 start_page, u16 *sum, u8 bank, __OSInodeUnit *last_page, int flag);
s32 __osBlockSum(OSPfs *pfs, u8 page_no, u16 *sum, u8 bank);
s32 __osContRamRead(OSMesgQueue *mq, int channel, u16 address, u8 *buffer);
s32 __osContRamWrite(OSMesgQueue *mq, int channel, u16 address, u8 *buffer, int force);
void __osContGetInitData(u8 *pattern, OSContStatus *data);
void __osPackRequestData(u8 cmd);
void __osPfsRequestData(u8 cmd);
void __osPfsGetInitData(u8* pattern, OSContStatus* data);
u8 __osContAddressCrc(u16 addr);
u8 __osContDataCrc(u8 *data);
s32 __osPfsGetStatus(OSMesgQueue *queue, int channel);
extern u8 __osContLastCmd;
extern OSTimer __osEepromTimer;
extern OSMesg __osEepromTimerMsg;
extern OSMesgQueue __osEepromTimerQ;
extern OSPifRam __osEepPifRam;
extern OSPifRam __osContPifRam;
extern OSPifRam __osPfsPifRam;
extern u8 _osContNumControllers;
//some version of this almost certainly existed since there's plenty of times where it's used right before a return 0
#define ERRCK(fn) \
ret = fn; \
if (ret != 0) \
return ret;
#define SET_ACTIVEBANK_TO_ZERO \
if (pfs->activebank != 0) \
{ \
pfs->activebank = 0; \
ERRCK(__osPfsSelectBank(pfs)) \
}
#define PFS_CHECK_ID \
if (__osCheckId(pfs) == PFS_ERR_NEW_PACK) \
return PFS_ERR_NEW_PACK;
#endif
#define PFS_CHECK_STATUS \
if ((pfs->status & PFS_INITIALIZED) == 0) \
return PFS_ERR_INVALID;
#define PFS_GET_STATUS \
__osSiGetAccess(); \
ret = __osPfsGetStatus(queue, channel); \
__osSiRelAccess(); \
if (ret != 0) \
return ret;
+47
View File
@@ -0,0 +1,47 @@
#include "libultra_internal.h"
u8 __osContAddressCrc(u16 addr) {
u8 temp;
u8 temp2;
int i;
temp = 0;
for (i = 0; i < 16; i++) {
if (temp & 0x10) {
temp2 = 21;
} else {
temp2 = 0;
}
temp <<= 1;
temp |= (u8)((addr & 0x400) ? 1 : 0);
addr <<= 1;
temp ^= temp2;
}
return temp & 0x1f;
}
u8 __osContDataCrc(u8 *data) {
u8 temp;
u8 temp2;
int i;
int j;
temp = 0;
for (i = 0; i <= 32; i++, data++) {
for (j = 7; j >= 0; j--) {
if (temp & 0x80) {
temp2 = 133;
} else {
temp2 = 0;
}
temp <<= 1;
if (i == 32) {
temp &= -1;
} else {
temp |= ((*data & (1 << j)) ? 1 : 0);
}
temp ^= temp2;
}
}
return temp;
}
-125
View File
@@ -1,125 +0,0 @@
# Goldeneye 007 (U) disassembly and split file
# generated by n64split v0.4a - N64 ROM splitter
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64
.include "macros.inc"
.section .text, "ax"
.section .text
glabel __osContAddressCrc
/* 016B80 70015F80 27BDFFF0 */ addiu $sp, $sp, -0x10
/* 016B84 70015F84 3084FFFF */ andi $a0, $a0, 0xffff
/* 016B88 70015F88 A3A0000F */ sb $zero, 0xf($sp)
/* 016B8C 70015F8C AFA00008 */ sw $zero, 8($sp)
.L70015F90:
/* 016B90 70015F90 93AE000F */ lbu $t6, 0xf($sp)
/* 016B94 70015F94 31CF0010 */ andi $t7, $t6, 0x10
/* 016B98 70015F98 11E00004 */ beqz $t7, .L70015FAC
/* 016B9C 70015F9C 00000000 */ nop
/* 016BA0 70015FA0 24180015 */ li $t8, 21
/* 016BA4 70015FA4 10000002 */ b .L70015FB0
/* 016BA8 70015FA8 A3B8000E */ sb $t8, 0xe($sp)
.L70015FAC:
/* 016BAC 70015FAC A3A0000E */ sb $zero, 0xe($sp)
.L70015FB0:
/* 016BB0 70015FB0 93B9000F */ lbu $t9, 0xf($sp)
/* 016BB4 70015FB4 30890400 */ andi $t1, $a0, 0x400
/* 016BB8 70015FB8 00194040 */ sll $t0, $t9, 1
/* 016BBC 70015FBC 11200003 */ beqz $t1, .L70015FCC
/* 016BC0 70015FC0 A3A8000F */ sb $t0, 0xf($sp)
/* 016BC4 70015FC4 10000002 */ b .L70015FD0
/* 016BC8 70015FC8 24050001 */ li $a1, 1
.L70015FCC:
/* 016BCC 70015FCC 00002825 */ move $a1, $zero
.L70015FD0:
/* 016BD0 70015FD0 93AA000F */ lbu $t2, 0xf($sp)
/* 016BD4 70015FD4 8FA80008 */ lw $t0, 8($sp)
/* 016BD8 70015FD8 93AF000E */ lbu $t7, 0xe($sp)
/* 016BDC 70015FDC 30AB00FF */ andi $t3, $a1, 0xff
/* 016BE0 70015FE0 00046840 */ sll $t5, $a0, 1
/* 016BE4 70015FE4 014B6025 */ or $t4, $t2, $t3
/* 016BE8 70015FE8 01A02025 */ move $a0, $t5
/* 016BEC 70015FEC 319800FF */ andi $t8, $t4, 0xff
/* 016BF0 70015FF0 25090001 */ addiu $t1, $t0, 1
/* 016BF4 70015FF4 29210010 */ slti $at, $t1, 0x10
/* 016BF8 70015FF8 A3AC000F */ sb $t4, 0xf($sp)
/* 016BFC 70015FFC 308EFFFF */ andi $t6, $a0, 0xffff
/* 016C00 70016000 030FC826 */ xor $t9, $t8, $t7
/* 016C04 70016004 AFA90008 */ sw $t1, 8($sp)
/* 016C08 70016008 01C02025 */ move $a0, $t6
/* 016C0C 7001600C 1420FFE0 */ bnez $at, .L70015F90
/* 016C10 70016010 A3B9000F */ sb $t9, 0xf($sp)
/* 016C14 70016014 93A2000F */ lbu $v0, 0xf($sp)
/* 016C18 70016018 27BD0010 */ addiu $sp, $sp, 0x10
/* 016C1C 7001601C 304A001F */ andi $t2, $v0, 0x1f
/* 016C20 70016020 01401025 */ move $v0, $t2
/* 016C24 70016024 304B00FF */ andi $t3, $v0, 0xff
/* 016C28 70016028 03E00008 */ jr $ra
/* 016C2C 7001602C 01601025 */ move $v0, $t3
glabel __osContDataCrc
/* 016C30 70016030 27BDFFF0 */ addiu $sp, $sp, -0x10
/* 016C34 70016034 A3A0000F */ sb $zero, 0xf($sp)
/* 016C38 70016038 AFA00008 */ sw $zero, 8($sp)
.L7001603C:
/* 016C3C 7001603C 240E0007 */ li $t6, 7
/* 016C40 70016040 AFAE0004 */ sw $t6, 4($sp)
.L70016044:
/* 016C44 70016044 93AF000F */ lbu $t7, 0xf($sp)
/* 016C48 70016048 31F80080 */ andi $t8, $t7, 0x80
/* 016C4C 7001604C 13000004 */ beqz $t8, .L70016060
/* 016C50 70016050 00000000 */ nop
/* 016C54 70016054 24190085 */ li $t9, 133
/* 016C58 70016058 10000002 */ b .L70016064
/* 016C5C 7001605C A3B9000E */ sb $t9, 0xe($sp)
.L70016060:
/* 016C60 70016060 A3A0000E */ sb $zero, 0xe($sp)
.L70016064:
/* 016C64 70016064 93A8000F */ lbu $t0, 0xf($sp)
/* 016C68 70016068 8FAA0008 */ lw $t2, 8($sp)
/* 016C6C 7001606C 24010020 */ li $at, 32
/* 016C70 70016070 00084840 */ sll $t1, $t0, 1
/* 016C74 70016074 15410004 */ bne $t2, $at, .L70016088
/* 016C78 70016078 A3A9000F */ sb $t1, 0xf($sp)
/* 016C7C 7001607C 312B00FF */ andi $t3, $t1, 0xff
/* 016C80 70016080 1000000E */ b .L700160BC
/* 016C84 70016084 A3AB000F */ sb $t3, 0xf($sp)
.L70016088:
/* 016C88 70016088 8FAD0004 */ lw $t5, 4($sp)
/* 016C8C 7001608C 908C0000 */ lbu $t4, ($a0)
/* 016C90 70016090 240E0001 */ li $t6, 1
/* 016C94 70016094 01AE7804 */ sllv $t7, $t6, $t5
/* 016C98 70016098 018FC024 */ and $t8, $t4, $t7
/* 016C9C 7001609C 13000003 */ beqz $t8, .L700160AC
/* 016CA0 700160A0 00000000 */ nop
/* 016CA4 700160A4 10000002 */ b .L700160B0
/* 016CA8 700160A8 24050001 */ li $a1, 1
.L700160AC:
/* 016CAC 700160AC 00002825 */ move $a1, $zero
.L700160B0:
/* 016CB0 700160B0 93B9000F */ lbu $t9, 0xf($sp)
/* 016CB4 700160B4 03254025 */ or $t0, $t9, $a1
/* 016CB8 700160B8 A3A8000F */ sb $t0, 0xf($sp)
.L700160BC:
/* 016CBC 700160BC 8FAE0004 */ lw $t6, 4($sp)
/* 016CC0 700160C0 93AA000F */ lbu $t2, 0xf($sp)
/* 016CC4 700160C4 93A9000E */ lbu $t1, 0xe($sp)
/* 016CC8 700160C8 25CDFFFF */ addiu $t5, $t6, -1
/* 016CCC 700160CC AFAD0004 */ sw $t5, 4($sp)
/* 016CD0 700160D0 01495826 */ xor $t3, $t2, $t1
/* 016CD4 700160D4 05A1FFDB */ bgez $t5, .L70016044
/* 016CD8 700160D8 A3AB000F */ sb $t3, 0xf($sp)
/* 016CDC 700160DC 8FAC0008 */ lw $t4, 8($sp)
/* 016CE0 700160E0 24840001 */ addiu $a0, $a0, 1
/* 016CE4 700160E4 258F0001 */ addiu $t7, $t4, 1
/* 016CE8 700160E8 29E10021 */ slti $at, $t7, 0x21
/* 016CEC 700160EC 1420FFD3 */ bnez $at, .L7001603C
/* 016CF0 700160F0 AFAF0008 */ sw $t7, 8($sp)
/* 016CF4 700160F4 93A2000F */ lbu $v0, 0xf($sp)
/* 016CF8 700160F8 03E00008 */ jr $ra
/* 016CFC 700160FC 27BD0010 */ addiu $sp, $sp, 0x10
+8
View File
@@ -0,0 +1,8 @@
#include "libultra_internal.h"
OSPri osGetThreadPri(OSThread *thread) {
if (thread == NULL) {
thread = __osRunningThread;
}
return thread->priority;
}
-24
View File
@@ -1,24 +0,0 @@
# Goldeneye 007 (U) disassembly and split file
# generated by n64split v0.4a - N64 ROM splitter
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64
.include "macros.inc"
.section .text, "ax"
.section .text
glabel osGetThreadPri
/* 019630 70018A30 14800003 */ bnez $a0, .L70018A40
/* 019634 70018A34 00000000 */ nop
/* 019638 70018A38 3C048002 */ lui $a0, %hi(__osRunningThread)
/* 01963C 70018A3C 8C847730 */ lw $a0, %lo(__osRunningThread)($a0)
.L70018A40:
/* 019640 70018A40 03E00008 */ jr $ra
/* 019644 70018A44 8C820004 */ lw $v0, 4($a0)
/* 019648 70018A48 00000000 */ nop
/* 01964C 70018A4C 00000000 */ nop
+127
View File
@@ -0,0 +1,127 @@
#ifndef _HARDWARE_H_
#define _HARDWARE_H_
#define HW_REG(reg, type) *(volatile type *)(uintptr_t)(reg | 0xa0000000)
#define AI_DRAM_ADDR_REG 0x04500000
#define AI_LEN_REG 0x04500004
#define AI_CONTROL_REG 0x04500008
#define AI_STATUS_REG 0x0450000C
#define AI_STATUS_AI_FULL (1 << 31)
#define AI_STATUS_AI_BUSY (1 << 30)
#define AI_DACRATE_REG 0x04500010
#define AI_BITRATE_REG 0x04500014
#define VI_STATUS_REG 0x04400000
#define VI_CONTROL_REG 0x04400000
#define VI_ORIGIN_REG 0x04400004
#define VI_DRAM_ADDR_REG 0x04400004
#define VI_WIDTH_REG 0x04400008
#define VI_H_WIDTH_REG 0x04400008
#define VI_INTR_REG 0x0440000C
#define VI_V_INTER_REG 0x0440000C
#define VI_CURRENT_REG 0x04400010
#define VI_V_CURRENT_LINE_REG 0x04400010
#define VI_BURST_REG 0x04400014
#define VI_TIMING_REG 0x04400014
#define VI_V_SYNC_REG 0x04400018 //VI vertical sync
#define VI_H_SYNC_REG 0x0440001C //VI horizontal sync
#define VI_LEAP_REG 0x04400020 //VI horizontal sync leap
#define VI_H_SYNC_LEAP_REG 0x04400020
#define VI_H_START_REG 0x04400024 //VI horizontal video
#define VI_H_VIDEO_REG 0x04400024
#define VI_V_START_REG 0x04400028 //VI vertical video
#define VI_V_VIDEO_REG 0x04400028
#define VI_V_BURST_REG 0x0440002C //VI vertical burst
#define VI_X_SCALE_REG 0x04400030 //VI x-scale
#define VI_Y_SCALE_REG 0x04400034 //VI y-scale
#define SP_IMEM_START 0x04001000
#define SP_DMEM_START 0x04000000
#define SP_MEM_ADDR_REG 0x04040000
#define SP_DRAM_ADDR_REG 0x04040004
#define SP_RD_LEN_REG 0x04040008
#define SP_WR_LEN_REG 0x0404000C
#define SP_STATUS_REG 0x04040010
#define SP_PC_REG 0x04080000
#define PI_DRAM_ADDR_REG 0x04600000 //PI DRAM address
#define PI_CART_ADDR_REG 0x04600004 //PI pbus (cartridge) address
#define PI_RD_LEN_REG 0x04600008 //PI read length
#define PI_WR_LEN_REG 0x0460000C //PI write length
#define PI_STATUS_REG 0x04600010 //PI status
#define PI_BSD_DOM1_LAT_REG 0x04600014 //PI dom1 latency
#define PI_DOMAIN1_REG 0x04600014
#define PI_BSD_DOM1_PWD_REG 0x04600018 //PI dom1 pulse width
#define PI_BSD_DOM1_PGS_REG 0x0460001C //PI dom1 page size
#define PI_BSD_DOM1_RLS_REG 0x04600020 //PI dom1 release
#define PI_BSD_DOM2_LAT_REG 0x04600024 //PI dom2 latency
#define PI_DOMAIN2_REG 0x04600024
#define PI_BSD_DOM2_PWD_REG 0x04600028 //PI dom2 pulse width
#define PI_BSD_DOM2_PGS_REG 0x0460002C //PI dom2 page size
#define PI_BSD_DOM2_RLS_REG 0x04600030 //PI dom2 release
#define PI_STATUS_BUSY 0x1
#define PI_STATUS_IOBUSY 0x2
#define PI_STATUS_ERROR 0x3
#define PI_STATUS_RESET_CONTROLLER 0x1
#define PI_STATUS_CLEAR_INTR 0x2
#define SI_DRAM_ADDR_REG 0x04800000
#define SI_PIF_ADDR_RD64B_REG 0x04800004
#define SI_PIF_ADDR_WR64B_REG 0x04800010
#define SI_STATUS_REG 0x04800018
#define SI_STATUS_DMA_BUSY 0x1
#define SI_STATUS_IO_READ_BUSY 0x2
#define SI_STATUS_DMA_ERROR 0x8
#define SI_STATUS_INTERRUPT (1 << 12)
#define MI_INIT_MODE_REG 0x04300000
#define MI_MODE_REG MI_INIT_MODE_REG
#define MI_VERSION_REG 0x04300004
#define MI_INTR_REG 0x04300008
#define MI_INTR_MASK_REG 0x0430000C
//https://github.com/LuigiBlood/64dd/wiki/Registers
#define ASIC_STATUS 0x05000508
#define DATA_REQUEST 0x40000000
#define C2_TRANSFER 0x10000000
#define BUFFER_MANAGER_ERROR 0x08000000
#define BUFFER_MANAGER_INTERRUPT 0x04000000
#define MECHANIC_INTERRUPT 0x02000000
#define DISK_PRESENT 0x01000000
#define BUSY_STATE 0x00800000
#define RESET_STATE 0x00400000
#define MOTOR_NOT_SPINNING 0x00100000
#define HEAD_RETRACTED 0x00080000
#define WRITE_PROTECT_ERROR 0x00040000
#define MECHANIC_ERROR 0x00020000
#define DISK_CHANGE 0x00010000
#define _64DD_PRESENT_MASK 0xFFFF
//ro
#define ASIC_BM_STATUS 0x05000510
#define MICRO_STATUS 0x02000000
#define C1_DOUBLE 0x00400000
#define C1_SINGLE 0x00200000
//wo
#define ASIC_BM_CTL 0x05000510
#define BUFFER_MANAGER_RESET 0x10000000
#define MECHANIC_INTERRUPT_RESET 0x01000000
/*- Start Buffer Manager (0x80000000)
- Buffer Manager Mode (0x40000000)
- BM Interrupt Mask (0x20000000)
- Buffer Manager Reset (0x10000000)
- Disable OR Check? (0x08000000)
- Disable C1 Correction (0x04000000)
- Block Transfer (0x02000000)
- Mechanic Interrupt Reset (0x01000000)*/
#endif
+127
View File
@@ -0,0 +1,127 @@
#ifndef _LIBAUDIO_INTERNAL_H_
#define _LIBAUDIO_INTERNAL_H_
#include <ultra64.h>
#define AL_BANK_VERSION 0x4231 /* 'B1' */
typedef u8 ALPan;
typedef s32 ALMicroTime;
/* Possible wavetable types */
enum
{
AL_ADPCM_WAVE = 0,
AL_RAW16_WAVE
};
typedef struct
{
u32 start;
u32 end;
u32 count;
} ALRawLoop;
typedef struct
{
u32 start;
u32 end;
u32 count;
ADPCM_STATE state;
} ALADPCMloop;
typedef struct
{
s32 order;
s32 npredictors;
s16 book[1]; // variable size, 8-byte aligned
} ALADPCMBook;
typedef struct
{
ALMicroTime attackTime;
ALMicroTime decayTime;
ALMicroTime releaseTime;
u8 attackVolume;
u8 decayVolume;
} ALEnvelope;
typedef struct
{
u8 velocityMin;
u8 velocityMax;
u8 keyMin;
u8 keyMax;
u8 keyBase;
s8 detune;
} ALKeyMap;
typedef struct
{
ALADPCMloop *loop;
ALADPCMBook *book;
} ALADPCMWaveInfo;
typedef struct
{
ALRawLoop *loop;
} ALRAWWaveInfo;
typedef struct ALWaveTable_s
{
u8 *base; /* ptr to start of wave data */
s32 len; /* length of data in bytes */
u8 type; /* compression type */
u8 flags; /* offset/address flags */
union {
ALADPCMWaveInfo adpcmWave;
ALRAWWaveInfo rawWave;
} waveInfo;
} ALWaveTable;
typedef struct ALSound_s
{
ALEnvelope *envelope;
ALKeyMap *keyMap;
ALWaveTable *wavetable; /* offset to wavetable struct */
ALPan samplePan;
u8 sampleVolume;
u8 flags;
} ALSound;
typedef struct
{
u8 volume; /* overall volume for this instrument */
ALPan pan; /* 0 = hard left, 127 = hard right */
u8 priority; /* voice priority for this instrument */
u8 flags;
u8 tremType; /* the type of tremelo osc. to use */
u8 tremRate; /* the rate of the tremelo osc. */
u8 tremDepth; /* the depth of the tremelo osc */
u8 tremDelay; /* the delay for the tremelo osc */
u8 vibType; /* the type of tremelo osc. to use */
u8 vibRate; /* the rate of the tremelo osc. */
u8 vibDepth; /* the depth of the tremelo osc */
u8 vibDelay; /* the delay for the tremelo osc */
s16 bendRange; /* pitch bend range in cents */
s16 soundCount; /* number of sounds in this array */
ALSound *soundArray[1];
} ALInstrument;
typedef struct ALBank_s
{
s16 instCount; /* number of programs in this bank */
u8 flags;
u8 pad;
s32 sampleRate; /* e.g. 44100, 22050, etc... */
ALInstrument *percussion; /* default percussion for GM */
ALInstrument *instArray[1]; /* ARRAY of instruments */
} ALBank;
typedef struct
{ /* Note: sizeof won't be correct */
s16 revision; /* format revision of this file */
s16 bankCount; /* number of banks */
ALBank *bankArray[1]; /* ARRAY of bank offsets */
} ALBankFile;
void alBnkfNew(ALBankFile *f, u8 *table);
#endif
+99
View File
@@ -0,0 +1,99 @@
#ifndef _LIBULTRA_INTERNAL_H_
#define _LIBULTRA_INTERNAL_H_
#include <ultra64.h>
/*
* This define is needed because the original definitions in __osDequeueThread.c are declared
* seperately instead of part of a single struct, however some code alises over this memory
* assuming a unified structure. To fix this, we declare the full type here and then alias the
* symbol names to the correct members in AVOID_UB.
*/
#ifdef AVOID_UB
typedef struct OSThread_ListHead_s
{
/*0x00*/ struct OSThread_s *next;
/*0x04*/ OSPri priority;
/*0x08*/ struct OSThread_s *queue;
/*0x0C*/ struct OSThread_s *tlnext;
/*0x10*/ struct OSThread_s *unk10;
/*0x14*/ u32 unk14;
} OSThread_ListHead;
// Now fix the symbols to the new one.
extern OSThread_ListHead D_80334890_fix;
#define D_80334890 D_80334890_fix.next
#define D_80334894 D_80334890_fix.priority
#define __osRunQueue D_80334890_fix.queue
#define D_8033489C D_80334890_fix.tlnext
#define D_803348A0 D_80334890_fix.unk10
// Fix for the EEPROM array.
extern u32 D_80365E00[16];
// alias the last array element correctly
#define D_80365E3C D_80365E00[15]
#else
// Original OSThread_ListHead definitions
extern OSThread *D_80334890;
extern u32 D_80334894;
extern OSThread *__osRunQueue;
extern OSThread *D_8033489C;
extern OSThread *__osRunningThread;
// Original EEPROM definitions
extern u32 D_80365E00[15];
extern u32 D_80365E3C;
#endif
typedef struct {
u32 initialized; // probably something like initialized?
OSThread *mgrThread;
OSMesgQueue *cmdQueue;
OSMesgQueue *eventQueue;
OSMesgQueue *accessQueue;
s32 (*dma_func)(s32, u32, void *, size_t);
#if defined(VERSION_EU) || defined(VERSION_SH)
s32 (*edma_func)(OSPiHandle*, s32, u32, void *, size_t);
#else
u64 force_align;
#endif
} OSMgrArgs;
s32 __osDisableInt(void);
void __osRestoreInt(s32);
void __osEnqueueAndYield(OSThread **);
void __osDequeueThread(OSThread **, OSThread *);
void __osEnqueueThread(OSThread **, OSThread *);
OSThread *__osPopThread(OSThread **);
s32 __osSiRawStartDma(s32, void *);
void __osSiCreateAccessQueue(void);
void __osSiGetAccess(void);
void __osSiRelAccess(void);
u32 __osProbeTLB(void *);
void __osPiCreateAccessQueue(void);
void __osPiGetAccess(void);
void __osSetSR(u32);
u32 __osGetSR(void);
void __osSetFpcCsr(u32);
s32 __osSiRawReadIo(void *, u32 *);
s32 __osSiRawWriteIo(void *, u32);
s32 osPiRawReadIo(u32 a0, u32 *a1);
void __osSpSetStatus(u32);
u32 __osSpGetStatus(void);
s32 __osSpSetPc(void *);
s32 __osSpDeviceBusy(void);
s32 __osSiDeviceBusy(void);
s32 __osSpRawStartDma(u32 dir, void *sp_ptr, void *dram_ptr, size_t size);
void __osViInit(void);
OSViContext *__osViGetCurrentContext(void);
OSViContext *__osViGetCurrentContext2(void);
void __osViSwapContext(void);
void __osSetTimerIntr(u64);
u64 __osInsertTimer(OSTimer *);
void __osSetCompare(u32);
s32 __osAiDeviceBusy(void);
void __osDispatchThread(void);
u32 __osGetCause(void);
s32 __osAtomicDec(u32 *);
#endif
+28
View File
@@ -0,0 +1,28 @@
#ifndef NEW_FUNC_H
#define NEW_FUNC_H
#include "libultra_internal.h"
#include "hardware.h"
#define WAIT_ON_IOBUSY(var) \
var = HW_REG(PI_STATUS_REG, u32); \
while (var & PI_STATUS_IOBUSY) \
var = HW_REG(PI_STATUS_REG, u32);
extern u32 EU_D_80302090;
extern OSPiHandle *__osDiskHandle; //possibly __osPiTable
extern volatile u32 __OSGlobalIntMask;
s32 osEPiRawStartDma(OSPiHandle *arg0, s32 dir, u32 cart_addr, void *dram_addr, u32 size);
void func_802F4B08(void);
void func_802F4A20(void);
void __osResetGlobalIntMask(u32 mask);
void __osEPiRawWriteIo(OSPiHandle*, u32, u32);
void func_802F71F0(void);
#ifdef VERSION_SH
void __osSetGlobalIntMask(s32 arg0);
s32 __osEPiRawReadIo(OSPiHandle *arg0, u32 devAddr, u32 *arg2);
#endif
#endif
+800
View File
@@ -0,0 +1,800 @@
/*====================================================================
* os.h
*
* Copyright 1995, Silicon Graphics, Inc.
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
* Inc.; the contents of this file may not be disclosed to third
* parties, copied or duplicated in any form, in whole or in part,
* without the prior written permission of Silicon Graphics, Inc.
*
* RESTRICTED RIGHTS LEGEND:
* Use, duplication or disclosure by the Government is subject to
* restrictions as set forth in subdivision (c)(1)(ii) of the Rights
* in Technical Data and Computer Software clause at DFARS
* 252.227-7013, and/or in similar or successor clauses in the FAR,
* DOD or NASA FAR Supplement. Unpublished - rights reserved under the
* Copyright Laws of the United States.
*====================================================================*/
/**************************************************************************
*
* $Revision: 1.149 $
* $Date: 1997/12/15 04:30:52 $
* $Source: /disk6/Master/cvsmdev2/PR/include/os.h,v $
*
**************************************************************************/
#ifndef _OS_H_
#define _OS_H_
#ifdef _LANGUAGE_C_PLUS_PLUS
extern "C" {
#endif
#include <PR/ultratypes.h>
#include "PR/os_message.h"
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Type definitions
*
*/
/*
* Structure for device manager block
*/
typedef struct {
s32 active; /* Status flag */
OSThread *thread; /* Calling thread */
OSMesgQueue *cmdQueue; /* Command queue */
OSMesgQueue *evtQueue; /* Event queue */
OSMesgQueue *acsQueue; /* Access queue */
/* Raw DMA routine */
s32 (*dma)(s32, u32, void *, u32);
s32 (*edma)(OSPiHandle *, s32, u32, void *, u32);
} OSDevMgr;
/*
* Structure for file system
*/
typedef struct {
int status;
OSMesgQueue *queue;
int channel;
u8 id[32];
u8 label[32];
int version;
int dir_size;
int inode_table; /* block location */
int minode_table; /* mirrioring inode_table */
int dir_table; /* block location */
int inode_start_page; /* page # */
u8 banks;
u8 activebank;
} OSPfs;
typedef struct {
u32 file_size; /* bytes */
u32 game_code;
u16 company_code;
char ext_name[4];
char game_name[16];
} OSPfsState;
/*
* Structure for Profiler
*/
typedef struct {
u16 *histo_base; /* histogram base */
u32 histo_size; /* histogram size */
u32 *text_start; /* start of text segment */
u32 *text_end; /* end of text segment */
} OSProf;
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
/**************************************************************************
*
* Global definitions
*
*/
/* Thread states */
#define OS_STATE_STOPPED 1
#define OS_STATE_RUNNABLE 2
#define OS_STATE_RUNNING 4
#define OS_STATE_WAITING 8
/* Events */
#ifdef _FINALROM
#define OS_NUM_EVENTS 15
#else
#define OS_NUM_EVENTS 23
#endif
#define OS_EVENT_SW1 0 /* CPU SW1 interrupt */
#define OS_EVENT_SW2 1 /* CPU SW2 interrupt */
#define OS_EVENT_CART 2 /* Cartridge interrupt: used by rmon */
#define OS_EVENT_COUNTER 3 /* Counter int: used by VI/Timer Mgr */
#define OS_EVENT_SP 4 /* SP task done interrupt */
#define OS_EVENT_SI 5 /* SI (controller) interrupt */
#define OS_EVENT_AI 6 /* AI interrupt */
#define OS_EVENT_VI 7 /* VI interrupt: used by VI/Timer Mgr */
#define OS_EVENT_PI 8 /* PI interrupt: used by PI Manager */
#define OS_EVENT_DP 9 /* DP full sync interrupt */
#define OS_EVENT_CPU_BREAK 10 /* CPU breakpoint: used by rmon */
#define OS_EVENT_SP_BREAK 11 /* SP breakpoint: used by rmon */
#define OS_EVENT_FAULT 12 /* CPU fault event: used by rmon */
#define OS_EVENT_THREADSTATUS 13 /* CPU thread status: used by rmon */
#define OS_EVENT_PRENMI 14 /* Pre NMI interrupt */
#ifndef _FINALROM
#define OS_EVENT_RDB_READ_DONE 15 /* RDB read ok event: used by rmon */
#define OS_EVENT_RDB_LOG_DONE 16 /* read of log data complete */
#define OS_EVENT_RDB_DATA_DONE 17 /* read of hostio data complete */
#define OS_EVENT_RDB_REQ_RAMROM 18 /* host needs ramrom access */
#define OS_EVENT_RDB_FREE_RAMROM 19 /* host is done with ramrom access */
#define OS_EVENT_RDB_DBG_DONE 20
#define OS_EVENT_RDB_FLUSH_PROF 21
#define OS_EVENT_RDB_ACK_PROF 22
#endif
/* Flags for debugging purpose */
#define OS_FLAG_CPU_BREAK 1 /* Break exception has occurred */
#define OS_FLAG_FAULT 2 /* CPU fault has occurred */
/* Interrupt masks */
#define OS_IM_NONE 0x00000001
#define OS_IM_SW1 0x00000501
#define OS_IM_SW2 0x00000601
#define OS_IM_CART 0x00000c01
#define OS_IM_PRENMI 0x00001401
#define OS_IM_RDBWRITE 0x00002401
#define OS_IM_RDBREAD 0x00004401
#define OS_IM_COUNTER 0x00008401
#define OS_IM_CPU 0x0000ff01
#define OS_IM_SP 0x00010401
#define OS_IM_SI 0x00020401
#define OS_IM_AI 0x00040401
#define OS_IM_VI 0x00080401
#define OS_IM_PI 0x00100401
#define OS_IM_DP 0x00200401
#define OS_IM_ALL 0x003fff01
#define RCP_IMASK 0x003f0000
#define RCP_IMASKSHIFT 16
/* Recommended thread priorities for the system threads */
#define OS_PRIORITY_MAX 255
#define OS_PRIORITY_VIMGR 254
#define OS_PRIORITY_RMON 250
#define OS_PRIORITY_RMONSPIN 200
#define OS_PRIORITY_PIMGR 150
#define OS_PRIORITY_SIMGR 140
#define OS_PRIORITY_APPMAX 127
#define OS_PRIORITY_IDLE 0 /* Must be 0 */
/* Flags to turn blocking on/off when sending/receiving message */
#define OS_MESG_NOBLOCK 0
#define OS_MESG_BLOCK 1
/* Flags to indicate direction of data transfer */
#define OS_READ 0 /* device -> RDRAM */
#define OS_WRITE 1 /* device <- RDRAM */
#define OS_OTHERS 2 /* for Leo disk only */
/*
* I/O message types
*/
#define OS_MESG_TYPE_BASE (10)
#define OS_MESG_TYPE_LOOPBACK (OS_MESG_TYPE_BASE+0)
#define OS_MESG_TYPE_DMAREAD (OS_MESG_TYPE_BASE+1)
#define OS_MESG_TYPE_DMAWRITE (OS_MESG_TYPE_BASE+2)
#define OS_MESG_TYPE_VRETRACE (OS_MESG_TYPE_BASE+3)
#define OS_MESG_TYPE_COUNTER (OS_MESG_TYPE_BASE+4)
#define OS_MESG_TYPE_EDMAREAD (OS_MESG_TYPE_BASE+5)
#define OS_MESG_TYPE_EDMAWRITE (OS_MESG_TYPE_BASE+6)
/*
* I/O message priority
*/
#define OS_MESG_PRI_NORMAL 0
#define OS_MESG_PRI_HIGH 1
/*
* Page size argument for TLB routines
*/
#define OS_PM_4K 0x0000000
#define OS_PM_16K 0x0006000
#define OS_PM_64K 0x001e000
#define OS_PM_256K 0x007e000
#define OS_PM_1M 0x01fe000
#define OS_PM_4M 0x07fe000
#define OS_PM_16M 0x1ffe000
/*
* Stack size for I/O device managers: PIM (PI Manager), VIM (VI Manager),
* SIM (SI Manager)
*
*/
#define OS_PIM_STACKSIZE 4096
#define OS_VIM_STACKSIZE 4096
#define OS_SIM_STACKSIZE 4096
#define OS_MIN_STACKSIZE 72
/*
* Values for osTvType
*/
#define OS_TV_PAL 0
#define OS_TV_NTSC 1
#define OS_TV_MPAL 2
/*
* Video Interface (VI) mode type
*/
#define OS_VI_NTSC_LPN1 0 /* NTSC */
#define OS_VI_NTSC_LPF1 1
#define OS_VI_NTSC_LAN1 2
#define OS_VI_NTSC_LAF1 3
#define OS_VI_NTSC_LPN2 4
#define OS_VI_NTSC_LPF2 5
#define OS_VI_NTSC_LAN2 6
#define OS_VI_NTSC_LAF2 7
#define OS_VI_NTSC_HPN1 8
#define OS_VI_NTSC_HPF1 9
#define OS_VI_NTSC_HAN1 10
#define OS_VI_NTSC_HAF1 11
#define OS_VI_NTSC_HPN2 12
#define OS_VI_NTSC_HPF2 13
#define OS_VI_PAL_LPN1 14 /* PAL */
#define OS_VI_PAL_LPF1 15
#define OS_VI_PAL_LAN1 16
#define OS_VI_PAL_LAF1 17
#define OS_VI_PAL_LPN2 18
#define OS_VI_PAL_LPF2 19
#define OS_VI_PAL_LAN2 20
#define OS_VI_PAL_LAF2 21
#define OS_VI_PAL_HPN1 22
#define OS_VI_PAL_HPF1 23
#define OS_VI_PAL_HAN1 24
#define OS_VI_PAL_HAF1 25
#define OS_VI_PAL_HPN2 26
#define OS_VI_PAL_HPF2 27
#define OS_VI_MPAL_LPN1 28 /* MPAL - mainly Brazil */
#define OS_VI_MPAL_LPF1 29
#define OS_VI_MPAL_LAN1 30
#define OS_VI_MPAL_LAF1 31
#define OS_VI_MPAL_LPN2 32
#define OS_VI_MPAL_LPF2 33
#define OS_VI_MPAL_LAN2 34
#define OS_VI_MPAL_LAF2 35
#define OS_VI_MPAL_HPN1 36
#define OS_VI_MPAL_HPF1 37
#define OS_VI_MPAL_HAN1 38
#define OS_VI_MPAL_HAF1 39
#define OS_VI_MPAL_HPN2 40
#define OS_VI_MPAL_HPF2 41
/*
* Video Interface (VI) special features
*/
#define OS_VI_GAMMA_ON 0x0001
#define OS_VI_GAMMA_OFF 0x0002
#define OS_VI_GAMMA_DITHER_ON 0x0004
#define OS_VI_GAMMA_DITHER_OFF 0x0008
#define OS_VI_DIVOT_ON 0x0010
#define OS_VI_DIVOT_OFF 0x0020
#define OS_VI_DITHER_FILTER_ON 0x0040
#define OS_VI_DITHER_FILTER_OFF 0x0080
/*
* Video Interface (VI) mode attribute bit
*/
#define OS_VI_BIT_NONINTERLACE 0x0001 /* lo-res */
#define OS_VI_BIT_INTERLACE 0x0002 /* lo-res */
#define OS_VI_BIT_NORMALINTERLACE 0x0004 /* hi-res */
#define OS_VI_BIT_DEFLICKINTERLACE 0x0008 /* hi-res */
#define OS_VI_BIT_ANTIALIAS 0x0010
#define OS_VI_BIT_POINTSAMPLE 0x0020
#define OS_VI_BIT_16PIXEL 0x0040
#define OS_VI_BIT_32PIXEL 0x0080
#define OS_VI_BIT_LORES 0x0100
#define OS_VI_BIT_HIRES 0x0200
#define OS_VI_BIT_NTSC 0x0400
#define OS_VI_BIT_PAL 0x0800
/*
* Leo Disk
*/
/* transfer mode */
#define LEO_BLOCK_MODE 1
#define LEO_TRACK_MODE 2
#define LEO_SECTOR_MODE 3
/*
* Controllers number
*/
#ifndef _HW_VERSION_1
#define MAXCONTROLLERS 4
#else
#define MAXCONTROLLERS 6
#endif
/* controller errors */
#define CONT_NO_RESPONSE_ERROR 0x8
#define CONT_OVERRUN_ERROR 0x4
#ifdef _HW_VERSION_1
#define CONT_FRAME_ERROR 0x2
#define CONT_COLLISION_ERROR 0x1
#endif
/* Controller type */
#define CONT_ABSOLUTE 0x0001
#define CONT_RELATIVE 0x0002
#define CONT_JOYPORT 0x0004
#define CONT_EEPROM 0x8000
#define CONT_EEP16K 0x4000
#define CONT_TYPE_MASK 0x1f07
#define CONT_TYPE_NORMAL 0x0005
#define CONT_TYPE_MOUSE 0x0002
/* Controller status */
#define CONT_CARD_ON 0x01
#define CONT_CARD_PULL 0x02
#define CONT_ADDR_CRC_ER 0x04
#define CONT_EEPROM_BUSY 0x80
/* EEPROM TYPE */
#define EEPROM_TYPE_4K 0x01
#define EEPROM_TYPE_16K 0x02
/* Buttons */
#define CONT_A 0x8000
#define CONT_B 0x4000
#define CONT_G 0x2000
#define CONT_START 0x1000
#define CONT_UP 0x0800
#define CONT_DOWN 0x0400
#define CONT_LEFT 0x0200
#define CONT_RIGHT 0x0100
#define CONT_L 0x0020
#define CONT_R 0x0010
#define CONT_E 0x0008
#define CONT_D 0x0004
#define CONT_C 0x0002
#define CONT_F 0x0001
/* Nintendo's official button names */
#define A_BUTTON CONT_A
#define B_BUTTON CONT_B
#define L_TRIG CONT_L
#define R_TRIG CONT_R
#define Z_TRIG CONT_G
#define START_BUTTON CONT_START
#define U_JPAD CONT_UP
#define L_JPAD CONT_LEFT
#define R_JPAD CONT_RIGHT
#define D_JPAD CONT_DOWN
#define U_CBUTTONS CONT_E
#define L_CBUTTONS CONT_C
#define R_CBUTTONS CONT_F
#define D_CBUTTONS CONT_D
/* File System size */
#define OS_PFS_VERSION 0x0200
#define OS_PFS_VERSION_HI (OS_PFS_VERSION >> 8)
#define OS_PFS_VERSION_LO (OS_PFS_VERSION & 255)
#define PFS_FILE_NAME_LEN 16
#define PFS_FILE_EXT_LEN 4
#define BLOCKSIZE 32 /* bytes */
#define PFS_ONE_PAGE 8 /* blocks */
#define PFS_MAX_BANKS 62
/* File System flag */
#define PFS_READ 0
#define PFS_WRITE 1
#define PFS_CREATE 2
/* File System status */
#define PFS_INITIALIZED 0x1
#define PFS_CORRUPTED 0x2 /* File system was corrupted */
/* File System error number */
#define PFS_ERR_NOPACK 1 /* no memory card is plugged or */
#define PFS_ERR_NEW_PACK 2 /* ram pack has been changed to a */
/* different one */
#define PFS_ERR_INCONSISTENT 3 /* need to run Pfschecker */
#define PFS_ERR_CONTRFAIL CONT_OVERRUN_ERROR
#define PFS_ERR_INVALID 5 /* invalid parameter or file not exist*/
#define PFS_ERR_BAD_DATA 6 /* the data read from pack are bad*/
#define PFS_DATA_FULL 7 /* no free pages on ram pack */
#define PFS_DIR_FULL 8 /* no free directories on ram pack*/
#define PFS_ERR_EXIST 9 /* file exists */
#define PFS_ERR_ID_FATAL 10 /* dead ram pack */
#define PFS_ERR_DEVICE 11 /* wrong device type*/
/* definition for EEPROM */
#define EEPROM_MAXBLOCKS 64
#define EEP16K_MAXBLOCKS 256
#define EEPROM_BLOCK_SIZE 8
/*
* PI/EPI
*/
#define PI_DOMAIN1 0
#define PI_DOMAIN2 1
/*
* Profiler constants
*/
#define PROF_MIN_INTERVAL 50 /* microseconds */
/*
* Boot addresses
*/
#define BOOT_ADDRESS_ULTRA 0x80000400
#define BOOT_ADDRESS_COSIM 0x80002000
#define BOOT_ADDRESS_EMU 0x20010000
#define BOOT_ADDRESS_INDY 0x88100000
/*
* Size of buffer the retains contents after NMI
*/
#define OS_APP_NMI_BUFSIZE 64
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
/**************************************************************************
*
* Macro definitions
*
*/
/* PARTNER-N64 */
#ifdef PTN64
#define osReadHost osReadHost_pt
#define osWriteHost osWriteHost_pt
#endif
/* Get count of valid messages in queue */
#define MQ_GET_COUNT(mq) ((mq)->validCount)
/* Figure out if message queue is empty or full */
#define MQ_IS_EMPTY(mq) (MQ_GET_COUNT(mq) == 0)
#define MQ_IS_FULL(mq) (MQ_GET_COUNT(mq) >= (mq)->msgCount)
/*
* CPU counter increments at 3/4 of bus clock rate:
*
* Bus Clock Proc Clock Counter (1/2 Proc Clock)
* --------- ---------- ------------------------
* 62.5 Mhz 93.75 Mhz 46.875 Mhz
*/
extern u64 osClockRate;
#define OS_CLOCK_RATE 62500000LL
#define OS_CPU_COUNTER (OS_CLOCK_RATE*3/4)
#define OS_NSEC_TO_CYCLES(n) (((u64)(n)*(OS_CPU_COUNTER/15625000LL))/(1000000000LL/15625000LL))
#define OS_USEC_TO_CYCLES(n) (((u64)(n)*(OS_CPU_COUNTER/15625LL))/(1000000LL/15625LL))
#define OS_CYCLES_TO_NSEC(c) (((u64)(c)*(1000000000LL/15625000LL))/(OS_CPU_COUNTER/15625000LL))
#define OS_CYCLES_TO_USEC(c) (((u64)(c)*(1000000LL/15625LL))/(OS_CPU_COUNTER/15625LL))
/**************************************************************************
*
* Extern variables
*
*/
extern OSViMode osViModeTable[]; /* Global VI mode table */
extern OSViMode osViModeNtscLpn1; /* Individual VI NTSC modes */
extern OSViMode osViModeNtscLpf1;
extern OSViMode osViModeNtscLan1;
extern OSViMode osViModeNtscLaf1;
extern OSViMode osViModeNtscLpn2;
extern OSViMode osViModeNtscLpf2;
extern OSViMode osViModeNtscLan2;
extern OSViMode osViModeNtscLaf2;
extern OSViMode osViModeNtscHpn1;
extern OSViMode osViModeNtscHpf1;
extern OSViMode osViModeNtscHan1;
extern OSViMode osViModeNtscHaf1;
extern OSViMode osViModeNtscHpn2;
extern OSViMode osViModeNtscHpf2;
extern OSViMode osViModePalLpn1; /* Individual VI PAL modes */
extern OSViMode osViModePalLpf1;
extern OSViMode osViModePalLan1;
extern OSViMode osViModePalLaf1;
extern OSViMode osViModePalLpn2;
extern OSViMode osViModePalLpf2;
extern OSViMode osViModePalLan2;
extern OSViMode osViModePalLaf2;
extern OSViMode osViModePalHpn1;
extern OSViMode osViModePalHpf1;
extern OSViMode osViModePalHan1;
extern OSViMode osViModePalHaf1;
extern OSViMode osViModePalHpn2;
extern OSViMode osViModePalHpf2;
extern OSViMode osViModeMpalLpn1; /* Individual VI MPAL modes */
extern OSViMode osViModeMpalLpf1;
extern OSViMode osViModeMpalLan1;
extern OSViMode osViModeMpalLaf1;
extern OSViMode osViModeMpalLpn2;
extern OSViMode osViModeMpalLpf2;
extern OSViMode osViModeMpalLan2;
extern OSViMode osViModeMpalLaf2;
extern OSViMode osViModeMpalHpn1;
extern OSViMode osViModeMpalHpf1;
extern OSViMode osViModeMpalHan1;
extern OSViMode osViModeMpalHaf1;
extern OSViMode osViModeMpalHpn2;
extern OSViMode osViModeMpalHpf2;
extern s32 osRomType; /* Bulk or cartridge ROM. 0=cartridge 1=bulk */
extern u32 osRomBase; /* Rom base address of the game image */
extern u32 osTvType; /* 0 = PAL, 1 = NTSC, 2 = MPAL */
extern u32 osResetType; /* 0 = cold reset, 1 = NMI */
extern s32 osCicId;
extern s32 osVersion;
extern u32 osMemSize; /* Memory Size */
extern s32 osAppNMIBuffer[];
extern OSIntMask __OSGlobalIntMask; /* global interrupt mask */
extern OSPiHandle *__osPiTable; /* The head of OSPiHandle link list */
extern OSPiHandle *__osDiskHandle; /* For exceptasm to get disk info*/
/**************************************************************************
*
* Function prototypes
*
*/
/* Thread operations */
extern void osCreateThread(OSThread *, OSId, void (*)(void *),
void *, void *, OSPri);
extern void osDestroyThread(OSThread *);
extern void osYieldThread(void);
extern void osStartThread(OSThread *);
extern void osStopThread(OSThread *);
extern OSId osGetThreadId(OSThread *);
extern void osSetThreadPri(OSThread *, OSPri);
extern OSPri osGetThreadPri(OSThread *);
/* Message operations */
extern void osCreateMesgQueue(OSMesgQueue *, OSMesg *, s32);
extern s32 osSendMesg(OSMesgQueue *, OSMesg, s32);
extern s32 osJamMesg(OSMesgQueue *, OSMesg, s32);
extern s32 osRecvMesg(OSMesgQueue *, OSMesg *, s32);
/* Event operations */
extern void osSetEventMesg(OSEvent, OSMesgQueue *, OSMesg);
/* Interrupt operations */
extern OSIntMask osGetIntMask(void);
extern OSIntMask osSetIntMask(OSIntMask);
/* RDB port operations */
extern void osInitRdb(u8 *sendBuf, u32 sendSize);
/* Cache operations and macros */
extern void osInvalDCache(void *, size_t);
extern void osInvalICache(void *, size_t);
extern void osWritebackDCache(void *, size_t);
extern void osWritebackDCacheAll(void);
#define OS_DCACHE_ROUNDUP_ADDR(x) (void *)(((((u32)(x)+0xf)/0x10)*0x10))
#define OS_DCACHE_ROUNDUP_SIZE(x) (u32)(((((u32)(x)+0xf)/0x10)*0x10))
/* TLB management routines */
extern void osMapTLB(s32, OSPageMask, void *, u32, u32, s32);
extern void osMapTLBRdb(void);
extern void osUnmapTLB(s32);
extern void osUnmapTLBAll(void);
extern void osSetTLBASID(s32);
/* Address translation routines and macros */
extern u32 osVirtualToPhysical(void *);
extern void * osPhysicalToVirtual(u32);
#define OS_K0_TO_PHYSICAL(x) (u32)(((char *)(x)-0x80000000))
#define OS_K1_TO_PHYSICAL(x) (u32)(((char *)(x)-0xa0000000))
#define OS_PHYSICAL_TO_K0(x) (void *)(((u32)(x)+0x80000000))
#define OS_PHYSICAL_TO_K1(x) (void *)(((u32)(x)+0xa0000000))
/* I/O operations */
/* Audio interface (Ai) */
extern u32 osAiGetStatus(void);
extern u32 osAiGetLength(void);
extern s32 osAiSetFrequency(u32);
extern s32 osAiSetNextBuffer(void *, u32);
/* Display processor interface (Dp) */
extern u32 osDpGetStatus(void);
extern void osDpSetStatus(u32);
extern void osDpGetCounters(u32 *);
extern s32 osDpSetNextBuffer(void *, u64);
/* Peripheral interface (Pi) */
extern u32 osPiGetStatus(void);
extern s32 osPiGetDeviceType(void);
extern s32 osPiRawWriteIo(u32, u32);
extern s32 osPiRawReadIo(u32, u32 *);
extern s32 osPiRawStartDma(s32, u32, void *, u32);
extern s32 osPiWriteIo(u32, u32);
extern s32 osPiReadIo(u32, u32 *);
extern s32 osPiStartDma(OSIoMesg *, s32, s32, u32, void *, u32,
OSMesgQueue *);
extern void osCreatePiManager(OSPri, OSMesgQueue *, OSMesg *, s32);
/* Video interface (Vi) */
extern u32 osViGetStatus(void);
extern u32 osViGetCurrentMode(void);
extern u32 osViGetCurrentLine(void);
extern u32 osViGetCurrentField(void);
extern void *osViGetCurrentFramebuffer(void);
extern void *osViGetNextFramebuffer(void);
extern void osViSetXScale(f32);
extern void osViSetYScale(f32);
extern void osViSetSpecialFeatures(u32);
extern void osViSetMode(OSViMode *);
extern void osViSetEvent(OSMesgQueue *, OSMesg, u32);
extern void osViSwapBuffer(void *);
extern void osViBlack(u8);
extern void osViFade(u8, u16);
extern void osViRepeatLine(u8);
extern void osCreateViManager(OSPri);
/* Timer interface */
extern OSTime osGetTime(void);
extern void osSetTime(OSTime);
extern u32 osSetTimer(OSTimer *, OSTime, OSTime,
OSMesgQueue *, OSMesg);
extern int osStopTimer(OSTimer *);
/* Controller interface */
extern s32 osContInit(OSMesgQueue *, u8 *, OSContStatus *);
extern s32 osContReset(OSMesgQueue *, OSContStatus *);
extern s32 osContStartQuery(OSMesgQueue *);
extern s32 osContStartReadData(OSMesgQueue *);
#ifndef _HW_VERSION_1
extern s32 osContSetCh(u8);
#endif
extern void osContGetQuery(OSContStatus *);
extern void osContGetReadData(OSContPad *);
/* file system interface */
extern s32 osPfsInitPak(OSMesgQueue *, OSPfs *, int);
extern s32 osPfsRepairId(OSPfs *);
extern s32 osPfsInit(OSMesgQueue *, OSPfs *, int);
extern s32 osPfsReFormat(OSPfs *, OSMesgQueue *, int);
extern s32 osPfsChecker(OSPfs *);
extern s32 osPfsAllocateFile(OSPfs *, u16, u32, u8 *, u8 *, int, s32 *);
extern s32 osPfsFindFile(OSPfs *, u16, u32, u8 *, u8 *, s32 *);
extern s32 osPfsDeleteFile(OSPfs *, u16, u32, u8 *, u8 *);
extern s32 osPfsReadWriteFile(OSPfs *, s32, u8, int, int, u8 *);
extern s32 osPfsFileState(OSPfs *, s32, OSPfsState *);
extern s32 osPfsGetLabel(OSPfs *, u8 *, int *);
extern s32 osPfsSetLabel(OSPfs *, u8 *);
extern s32 osPfsIsPlug(OSMesgQueue *, u8 *);
extern s32 osPfsFreeBlocks(OSPfs *, s32 *);
extern s32 osPfsNumFiles(OSPfs *, s32 *, s32 *);
/* EEPROM interface */
extern s32 osEepromProbe(OSMesgQueue *);
extern s32 osEepromRead(OSMesgQueue *, u8, u8 *);
extern s32 osEepromWrite(OSMesgQueue *, u8, u8 *);
extern s32 osEepromLongRead(OSMesgQueue *, u8, u8 *, int);
extern s32 osEepromLongWrite(OSMesgQueue *, u8, u8 *, int);
/* MOTOR interface */
extern s32 osMotorInit(OSMesgQueue *, OSPfs *, int);
extern s32 osMotorStop(OSPfs *);
extern s32 osMotorStart(OSPfs *);
/* Enhanced PI interface */
extern OSPiHandle *osCartRomInit(void);
extern OSPiHandle *osLeoDiskInit(void);
extern OSPiHandle *osDriveRomInit(void);
extern s32 osEPiDeviceType(OSPiHandle *, OSPiInfo *);
extern s32 osEPiRawWriteIo(OSPiHandle *, u32 , u32);
extern s32 osEPiRawReadIo(OSPiHandle *, u32 , u32 *);
extern s32 osEPiRawStartDma(OSPiHandle *, s32 , u32 , void *, u32 );
extern s32 osEPiWriteIo(OSPiHandle *, u32 , u32 );
extern s32 osEPiReadIo(OSPiHandle *, u32 , u32 *);
extern s32 osEPiStartDma(OSPiHandle *, OSIoMesg *, s32);
extern s32 osEPiLinkHandle(OSPiHandle *);
/* Profiler Interface */
extern void osProfileInit(OSProf *, u32 profcnt);
extern void osProfileStart(u32);
extern void osProfileFlush(void);
extern void osProfileStop(void);
/* Game <> Host data transfer functions */
extern s32 osTestHost(void);
extern void osReadHost(void *, u32);
extern void osWriteHost(void *, u32);
extern void osAckRamromRead(void);
extern void osAckRamromWrite(void);
/* byte string operations */
extern void bcopy(const void *, void *, size_t);
extern int bcmp(const void *, const void *, int);
extern void bzero(void *, size_t);
/* Miscellaneous operations */
extern void osInitialize(void);
extern u32 osGetCount(void);
extern void osExit(void);
extern u32 osGetMemSize(void);
/* Printf */
extern int sprintf(char *s, const char *fmt, ...);
extern void osSyncPrintf(const char *fmt, ...);
extern void osAsyncPrintf(const char *fmt, ...);
extern int osSyncGetChars(char *buf);
extern int osAsyncGetChars(char *buf);
#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */
#ifdef _LANGUAGE_C_PLUS_PLUS
}
#endif
#endif /* !_OS_H */
+7
View File
@@ -0,0 +1,7 @@
#ifndef _OSAI_H_
#define _OSAI_H_
s32 osAiSetFrequency(u32);
s32 osAiSetNextBuffer(void *, u32);
u32 osAiGetLength(void);
#endif
+47
View File
@@ -0,0 +1,47 @@
#ifndef _ULTRA64_CONTROLLER_INTERNAL_H_
#define _ULTRA64_CONTROLLER_INTERNAL_H_
#include <types.h>
typedef struct
{
u8 padOrEnd;
u8 txLen;
u8 rxLen; //includes errno
u8 command;
u16 button;
s8 rawStickX;
s8 rawStickY;
} OSContPackedRead;
typedef struct
{
u8 padOrEnd;
u8 txLen;
u8 rxLen;
u8 command;
u8 data1;
u8 data2;
u8 data3;
u8 data4;
} OSContPackedRequest;
typedef union {
OSContPackedRead read;
OSContPackedRequest request;
u32 as_raw[2];
} OSContPackedStruct;
#ifdef AVOID_UB
// Fix the OSContPackedStruct array
extern OSContPackedStruct _osContCmdBuf[8];
// And fix the last element
#define _osContPifCtrl _osContCmdBuf[7].as_raw[1]
#else
// Original OSContPackedStruct definitions
extern OSContPackedStruct _osContCmdBuf[7];
extern u32 _osContPifCtrl;
#endif
#endif
+53
View File
@@ -0,0 +1,53 @@
#ifndef _OSINT_H
#define _OSINT_H
#include "libultra_internal.h"
typedef struct __OSEventState
{
OSMesgQueue *messageQueue;
OSMesg message;
} __OSEventState;
extern struct __osThreadTail
{
OSThread *next;
OSPri priority;
} __osThreadTail;
//maybe should be in exceptasm.h?
extern void __osEnqueueAndYield(OSThread **);
extern void __osDequeueThread(OSThread **, OSThread *);
extern void __osEnqueueThread(OSThread **, OSThread *);
extern OSThread *__osPopThread(OSThread **);
extern void __osDispatchThread(void);
extern void __osSetTimerIntr(OSTime);
extern OSTime __osInsertTimer(OSTimer *);
extern void __osTimerInterrupt(void);
extern u32 __osProbeTLB(void *);
extern int __osSpDeviceBusy(void);
#ifdef AVOID_UB
extern OSThread_ListHead D_80334890_fix;
#else
extern OSThread *__osRunningThread;
extern OSThread *D_8033489C;
extern OSThread *__osFaultedThread;
extern OSThread *__osRunQueue;
#endif
extern OSTimer *__osTimerList;
extern OSTimer __osBaseTimer;
extern OSTime __osCurrentTime;
extern u32 __osBaseCounter;
extern u32 __osViIntrCount;
extern u32 __osTimerCounter;
extern __OSEventState __osEventStateTab[OS_NUM_EVENTS];
//not sure if this should be here
extern s32 osViClock;
extern void __osTimerServicesInit(void);
extern s32 __osAiDeviceBusy(void);
extern int __osDpDeviceBusy(void);
#endif
+147
View File
@@ -0,0 +1,147 @@
#ifndef _PIINT_H
#define _PIINT_H
#include "PR/os_internal.h"
#include "PR/rcp.h"
#include "PR/os_pi.h"
#include "os.h"
//https://github.com/LuigiBlood/64dd/wiki/Memory-Map
#define LEO_BASE_REG 0x05000000
#define LEO_CMD (LEO_BASE_REG + 0x508)
#define LEO_STATUS (LEO_BASE_REG + 0x508)
#define LEO_BM_CTL (LEO_BASE_REG + 0x510)
#define LEO_BM_STATUS (LEO_BASE_REG + 0x510)
#define LEO_SEQ_CTL (LEO_BASE_REG + 0x518)
#define LEO_SEQ_STATUS (LEO_BASE_REG + 0x518)
#define LEO_C2_BUFF (LEO_BASE_REG + 0x000) //C2 Sector Buffer
#define LEO_SECTOR_BUFF (LEO_BASE_REG + 0x400) //Data Sector Buffer
#define LEO_DATA (LEO_BASE_REG + 0x500) //Data
#define LEO_MISC_REG (LEO_BASE_REG + 0x504) //Misc Register
#define LEO_CUR_TK (LEO_BASE_REG + 0x50C) //Current Track
#define LEO_ERR_SECTOR (LEO_BASE_REG + 0x514) //Sector Error Status
#define LEO_CUR_SECTOR (LEO_BASE_REG + 0x51C) //Current Sector
#define LEO_HARD_RESET (LEO_BASE_REG + 0x520) //Hard Reset
#define LEO_C1_S0 (LEO_BASE_REG + 0x524) //C1
#define LEO_HOST_SECBYTE (LEO_BASE_REG + 0x528) //Sector Size (in bytes)
#define LEO_C1_S2 (LEO_BASE_REG + 0x52C) //C1
#define LEO_SEC_BYTE (LEO_BASE_REG + 0x530) //Sectors per Block, Full Size
#define LEO_C1_S4 (LEO_BASE_REG + 0x534) //C1
#define LEO_C1_S6 (LEO_BASE_REG + 0x538) //C1
#define LEO_CUR_ADDR (LEO_BASE_REG + 0x53C) //Current Address?
#define LEO_ID_REG (LEO_BASE_REG + 0x540) //ID
#define LEO_TEST_REG (LEO_BASE_REG + 0x544) //Test Read
#define LEO_TEST_PIN_SEL (LEO_BASE_REG + 0x548) //Test Write
#define LEO_RAM_ADDR (LEO_BASE_REG + 0x580) //Microsequencer RAM
#define LEO_STATUS_PRESENCE_MASK 0xFFFF
#define LEO_STATUS_DATA_REQUEST 0x40000000
#define LEO_STATUS_C2_TRANSFER 0x10000000
#define LEO_STATUS_BUFFER_MANAGER_ERROR 0x08000000
#define LEO_STATUS_BUFFER_MANAGER_INTERRUPT 0x04000000
#define LEO_STATUS_MECHANIC_INTERRUPT 0x02000000
#define LEO_STATUS_DISK_PRESENT 0x01000000
#define LEO_STATUS_BUSY_STATE 0x00800000
#define LEO_STATUS_RESET_STATE 0x00400000
#define LEO_STATUS_MOTOR_NOT_SPINNING 0x00100000
#define LEO_STATUS_HEAD_RETRACTED 0x00080000
#define LEO_STATUS_WRITE_PROTECT_ERROR 0x00040000
#define LEO_STATUS_MECHANIC_ERROR 0x00020000
#define LEO_STATUS_DISK_CHANGE 0x00010000
#define LEO_STATUS_MODE_MASK (LEO_STATUS_MOTOR_NOT_SPINNING | LEO_STATUS_HEAD_RETRACTED)
#define LEO_STATUS_MODE_SLEEP (LEO_STATUS_MOTOR_NOT_SPINNING | LEO_STATUS_HEAD_RETRACTED)
#define LEO_STATUS_MODE_STANDBY (LEO_STATUS_HEAD_RETRACTED)
#define LEO_STATUS_MODE_ACTIVE 0
#define LEO_CUR_TK_INDEX_LOCK 0x60000000
#define LEO_BM_STATUS_RUNNING 0x80000000 //Running
#define LEO_BM_STATUS_ERROR 0x04000000 //Error
#define LEO_BM_STATUS_MICRO 0x02000000 //Micro Status?
#define LEO_BM_STATUS_BLOCK 0x01000000 //Block Transfer
#define LEO_BM_STATUS_C1CORRECTION 0x00800000 //C1 Correction
#define LEO_BM_STATUS_C1DOUBLE 0x00400000 //C1 Double
#define LEO_BM_STATUS_C1SINGLE 0x00200000 //C1 Single
#define LEO_BM_STATUS_C1ERROR 0x00010000 //C1 Error
#define LEO_BM_CTL_START 0x80000000 //Start Buffer Manager
#define LEO_BM_CTL_MODE 0x40000000 //Buffer Manager Mode
#define LEO_BM_CTL_IMASK 0x20000000 //BM Interrupt Mask
#define LEO_BM_CTL_RESET 0x10000000 //Buffer Manager Reset
#define LEO_BM_CTL_DISABLE_OR 0x08000000 //Disable OR Check?
#define LEO_BM_CTL_DISABLE_C1 0x04000000 //Disable C1 Correction
#define LEO_BM_CTL_BLOCK 0x02000000 //Block Transfer
#define LEO_BM_CTL_CLR_MECHANIC_INTR 0x01000000 //Mechanic Interrupt Reset
#define LEO_BM_CTL_CONTROL_MASK 0xFF000000
#define LEO_BM_CTL_SECTOR_MASK 0x00FF0000
#define LEO_BM_CTL_SECTOR_SHIFT 16
#define LEO_CMD_TYPE_0 0 //TODO: name
#define LEO_CMD_TYPE_1 1 //TODO: name
#define LEO_CMD_TYPE_2 2 //TODO: name
#define LEO_ERROR_GOOD 0
#define LEO_ERROR_4 4 //maybe busy?
#define LEO_ERROR_22 22 //
#define LEO_ERROR_23 23 //unrecovered read error?
#define LEO_ERROR_24 24 //no reference position found?
#define LEO_ERROR_29 29 //
extern OSDevMgr __osPiDevMgr;
extern OSPiHandle *__osCurrentHandle[2];
extern OSPiHandle CartRomHandle;
extern OSPiHandle LeoDiskHandle;
extern OSMesgQueue __osPiAccessQueue;
extern u32 __osPiAccessQueueEnabled;
int __osPiDeviceBusy(void);
void __osDevMgrMain(void *);
void __osPiCreateAccessQueue(void);
void __osPiRelAccess(void);
void __osPiGetAccess(void);
OSMesgQueue *osPiGetCmdQueue(void);
#define OS_RAMROM_STACKSIZE 1024
#define WAIT_ON_IOBUSY(stat) \
stat = IO_READ(PI_STATUS_REG); \
while (stat & (PI_STATUS_IO_BUSY | PI_STATUS_DMA_BUSY)) \
stat = IO_READ(PI_STATUS_REG);
#define UPDATE_REG(reg, var) \
if (cHandle->var != pihandle->var) \
IO_WRITE(reg, pihandle->var);
#define EPI_SYNC(pihandle, stat, domain) \
\
WAIT_ON_IOBUSY(stat) \
\
domain = pihandle->domain; \
if (__osCurrentHandle[domain] != pihandle) \
{ \
OSPiHandle *cHandle = __osCurrentHandle[domain]; \
if (domain == PI_DOMAIN1) \
{ \
UPDATE_REG(PI_BSD_DOM1_LAT_REG, latency); \
UPDATE_REG(PI_BSD_DOM1_PGS_REG, pageSize); \
UPDATE_REG(PI_BSD_DOM1_RLS_REG, relDuration); \
UPDATE_REG(PI_BSD_DOM1_PWD_REG, pulse); \
} \
else \
{ \
UPDATE_REG(PI_BSD_DOM2_LAT_REG, latency); \
UPDATE_REG(PI_BSD_DOM2_PGS_REG, pageSize); \
UPDATE_REG(PI_BSD_DOM2_RLS_REG, relDuration); \
UPDATE_REG(PI_BSD_DOM2_PWD_REG, pulse); \
} \
__osCurrentHandle[domain] = pihandle; \
}
#endif
+36
View File
@@ -0,0 +1,36 @@
#ifndef _PRINTF_H_
#define _PRINTF_H_
#include <stdarg.h>
typedef struct
{
union {
/* 00 */ s64 s64;
u64 u64;
f64 f64;
u32 u32;
u16 u16;
} value;
/* 08 */ char *buff;
/* 0c */ s32 part1_len;
/* 10 */ s32 num_leading_zeros;
/* 14 */ s32 part2_len;
/* 18 */ s32 num_mid_zeros;
/* 1c */ s32 part3_len;
/* 20 */ s32 num_trailing_zeros;
/* 24 */ s32 precision;
/* 28 */ s32 width;
/* 2c */ u32 size;
/* 30 */ u32 flags;
/* 34 */ u8 length;
} printf_struct;
#define FLAGS_SPACE 1
#define FLAGS_PLUS 2
#define FLAGS_MINUS 4
#define FLAGS_HASH 8
#define FLAGS_ZERO 16
s32 _Printf(char *(*prout)(char *, const char *, size_t), char *dst, const char *fmt, va_list args);
void _Litob(printf_struct *args, u8 type);
void _Ldtob(printf_struct *args, u8 type);
#endif
+18
View File
@@ -0,0 +1,18 @@
#include "libultra_internal.h"
typedef struct OSEventMessageStruct_0_s {
OSMesgQueue *queue;
OSMesg msg;
} OSEventMessageStruct_0;
OSEventMessageStruct_0 __osEventStateTab[16];
void osSetEventMesg(OSEvent e, OSMesgQueue *mq, OSMesg msg) {
register u32 int_disabled;
OSEventMessageStruct_0 *msgs;
int_disabled = __osDisableInt();
msgs = __osEventStateTab + e;
msgs->queue = mq;
msgs->msg = msg;
__osRestoreInt(int_disabled);
}
-162
View File
@@ -1,162 +0,0 @@
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64
.include "macros.inc"
.section .text, "ax"
glabel osSetEventMesg
/* 00E850 7000DC50 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 00E854 7000DC54 AFBF001C */ sw $ra, 0x1c($sp)
/* 00E858 7000DC58 AFA40028 */ sw $a0, 0x28($sp)
/* 00E85C 7000DC5C AFA5002C */ sw $a1, 0x2c($sp)
/* 00E860 7000DC60 AFA60030 */ sw $a2, 0x30($sp)
/* 00E864 7000DC64 0C00617C */ jal __osDisableInt
/* 00E868 7000DC68 AFB00018 */ sw $s0, 0x18($sp)
/* 00E86C 7000DC6C 8FAE0028 */ lw $t6, 0x28($sp)
/* 00E870 7000DC70 3C188006 */ lui $t8, %hi(__osEventStateTab)
/* 00E874 7000DC74 8FA8002C */ lw $t0, 0x2c($sp)
/* 00E878 7000DC78 27186A10 */ addiu $t8, %lo(__osEventStateTab) # addiu $t8, $t8, 0x6a10
/* 00E87C 7000DC7C 000E78C0 */ sll $t7, $t6, 3
/* 00E880 7000DC80 01F8C821 */ addu $t9, $t7, $t8
/* 00E884 7000DC84 AFB90020 */ sw $t9, 0x20($sp)
/* 00E888 7000DC88 AF280000 */ sw $t0, ($t9)
/* 00E88C 7000DC8C 8FAA0020 */ lw $t2, 0x20($sp)
/* 00E890 7000DC90 8FA90030 */ lw $t1, 0x30($sp)
/* 00E894 7000DC94 00408025 */ move $s0, $v0
/* 00E898 7000DC98 02002025 */ move $a0, $s0
/* 00E89C 7000DC9C 0C006184 */ jal __osRestoreInt
/* 00E8A0 7000DCA0 AD490004 */ sw $t1, 4($t2)
/* 00E8A4 7000DCA4 8FBF001C */ lw $ra, 0x1c($sp)
/* 00E8A8 7000DCA8 8FB00018 */ lw $s0, 0x18($sp)
/* 00E8AC 7000DCAC 27BD0028 */ addiu $sp, $sp, 0x28
/* 00E8B0 7000DCB0 03E00008 */ jr $ra
/* 00E8B4 7000DCB4 00000000 */ nop
.section .bss
glabel __osEventStateTab
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
+24
View File
@@ -0,0 +1,24 @@
#include "libultra_internal.h"
void osSetThreadPri(OSThread *thread, OSPri pri) {
register u32 int_disabled = __osDisableInt();
if (thread == NULL) {
thread = __osRunningThread;
}
if (thread->priority != pri) {
thread->priority = pri;
if (thread != __osRunningThread) {
if (thread->state != OS_STATE_STOPPED) {
__osDequeueThread(thread->queue, thread);
__osEnqueueThread(thread->queue, thread);
}
}
if (__osRunningThread->priority < __osRunQueue->priority) {
__osRunningThread->state = OS_STATE_RUNNABLE;
__osEnqueueAndYield(&__osRunQueue);
}
}
__osRestoreInt(int_disabled);
}
-70
View File
@@ -1,70 +0,0 @@
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64
.include "macros.inc"
.section .text, "ax"
glabel osSetThreadPri
/* 00E400 7000D800 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 00E404 7000D804 AFBF001C */ sw $ra, 0x1c($sp)
/* 00E408 7000D808 AFA40028 */ sw $a0, 0x28($sp)
/* 00E40C 7000D80C AFA5002C */ sw $a1, 0x2c($sp)
/* 00E410 7000D810 0C00617C */ jal __osDisableInt
/* 00E414 7000D814 AFB00018 */ sw $s0, 0x18($sp)
/* 00E418 7000D818 8FAE0028 */ lw $t6, 0x28($sp)
/* 00E41C 7000D81C 00408025 */ move $s0, $v0
/* 00E420 7000D820 15C00004 */ bnez $t6, .L7000D834
/* 00E424 7000D824 00000000 */ nop
/* 00E428 7000D828 3C0F8002 */ lui $t7, %hi(__osRunningThread)
/* 00E42C 7000D82C 8DEF7730 */ lw $t7, %lo(__osRunningThread)($t7)
/* 00E430 7000D830 AFAF0028 */ sw $t7, 0x28($sp)
.L7000D834:
/* 00E434 7000D834 8FB80028 */ lw $t8, 0x28($sp)
/* 00E438 7000D838 8FA8002C */ lw $t0, 0x2c($sp)
/* 00E43C 7000D83C 8F190004 */ lw $t9, 4($t8)
/* 00E440 7000D840 13280020 */ beq $t9, $t0, .L7000D8C4
/* 00E444 7000D844 00000000 */ nop
/* 00E448 7000D848 AF080004 */ sw $t0, 4($t8)
/* 00E44C 7000D84C 3C0A8002 */ lui $t2, %hi(__osRunningThread)
/* 00E450 7000D850 8D4A7730 */ lw $t2, %lo(__osRunningThread)($t2)
/* 00E454 7000D854 8FA90028 */ lw $t1, 0x28($sp)
/* 00E458 7000D858 112A000C */ beq $t1, $t2, .L7000D88C
/* 00E45C 7000D85C 00000000 */ nop
/* 00E460 7000D860 952B0010 */ lhu $t3, 0x10($t1)
/* 00E464 7000D864 24010001 */ li $at, 1
/* 00E468 7000D868 11610008 */ beq $t3, $at, .L7000D88C
/* 00E46C 7000D86C 00000000 */ nop
/* 00E470 7000D870 8D240008 */ lw $a0, 8($t1)
/* 00E474 7000D874 0C0042A4 */ jal __osDequeueThread
/* 00E478 7000D878 01202825 */ move $a1, $t1
/* 00E47C 7000D87C 8FAC0028 */ lw $t4, 0x28($sp)
/* 00E480 7000D880 8D840008 */ lw $a0, 8($t4)
/* 00E484 7000D884 0C00422B */ jal __osEnqueueThread
/* 00E488 7000D888 01802825 */ move $a1, $t4
.L7000D88C:
/* 00E48C 7000D88C 3C0D8002 */ lui $t5, %hi(__osRunningThread)
/* 00E490 7000D890 3C0F8002 */ lui $t7, %hi(__osRunQueue)
/* 00E494 7000D894 8DEF7728 */ lw $t7, %lo(__osRunQueue)($t7)
/* 00E498 7000D898 8DAD7730 */ lw $t5, %lo(__osRunningThread)($t5)
/* 00E49C 7000D89C 8DF90004 */ lw $t9, 4($t7)
/* 00E4A0 7000D8A0 8DAE0004 */ lw $t6, 4($t5)
/* 00E4A4 7000D8A4 01D9082A */ slt $at, $t6, $t9
/* 00E4A8 7000D8A8 10200006 */ beqz $at, .L7000D8C4
/* 00E4AC 7000D8AC 00000000 */ nop
/* 00E4B0 7000D8B0 24080002 */ li $t0, 2
/* 00E4B4 7000D8B4 3C048002 */ lui $a0, %hi(__osRunQueue)
/* 00E4B8 7000D8B8 A5A80010 */ sh $t0, 0x10($t5)
/* 00E4BC 7000D8BC 0C0041EB */ jal __osEnqueueAndYield
/* 00E4C0 7000D8C0 24847728 */ addiu $a0, %lo(__osRunQueue) # addiu $a0, $a0, 0x7728
.L7000D8C4:
/* 00E4C4 7000D8C4 0C006184 */ jal __osRestoreInt
/* 00E4C8 7000D8C8 02002025 */ move $a0, $s0
/* 00E4CC 7000D8CC 8FBF001C */ lw $ra, 0x1c($sp)
/* 00E4D0 7000D8D0 8FB00018 */ lw $s0, 0x18($sp)
/* 00E4D4 7000D8D4 27BD0028 */ addiu $sp, $sp, 0x28
/* 00E4D8 7000D8D8 03E00008 */ jr $ra
/* 00E4DC 7000D8DC 00000000 */ nop
+23
View File
@@ -0,0 +1,23 @@
#include "libultra_internal.h"
extern OSTimer *__osTimerList;
extern u64 __osInsertTimer(OSTimer *);
u32 osSetTimer(OSTimer *a0, OSTime a1, u64 a2, OSMesgQueue *a3, OSMesg a4) {
u64 sp18;
a0->next = NULL;
a0->prev = NULL;
a0->interval = a2;
if (a1 != 0) {
a0->remaining = a1;
} else {
a0->remaining = a2;
}
a0->mq = a3;
a0->msg = a4;
sp18 = __osInsertTimer(a0);
if (__osTimerList->next == a0) {
__osSetTimerIntr(sp18);
}
return 0;
}
-67
View File
@@ -1,67 +0,0 @@
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64
.include "macros.inc"
.section .text, "ax"
glabel osSetTimer
/* 011850 70010C50 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 011854 70010C54 AFA40020 */ sw $a0, 0x20($sp)
/* 011858 70010C58 8FAE0020 */ lw $t6, 0x20($sp)
/* 01185C 70010C5C AFBF0014 */ sw $ra, 0x14($sp)
/* 011860 70010C60 AFA60028 */ sw $a2, 0x28($sp)
/* 011864 70010C64 AFA7002C */ sw $a3, 0x2c($sp)
/* 011868 70010C68 ADC00000 */ sw $zero, ($t6)
/* 01186C 70010C6C 8FAF0020 */ lw $t7, 0x20($sp)
/* 011870 70010C70 ADE00004 */ sw $zero, 4($t7)
/* 011874 70010C74 8FA80020 */ lw $t0, 0x20($sp)
/* 011878 70010C78 8FB90034 */ lw $t9, 0x34($sp)
/* 01187C 70010C7C 8FB80030 */ lw $t8, 0x30($sp)
/* 011880 70010C80 AD19000C */ sw $t9, 0xc($t0)
/* 011884 70010C84 AD180008 */ sw $t8, 8($t0)
/* 011888 70010C88 8FAA0028 */ lw $t2, 0x28($sp)
/* 01188C 70010C8C 8FAB002C */ lw $t3, 0x2c($sp)
/* 011890 70010C90 15400003 */ bnez $t2, .L70010CA0
/* 011894 70010C94 00000000 */ nop
/* 011898 70010C98 11600005 */ beqz $t3, .L70010CB0
/* 01189C 70010C9C 00000000 */ nop
.L70010CA0:
/* 0118A0 70010CA0 8FA90020 */ lw $t1, 0x20($sp)
/* 0118A4 70010CA4 AD2A0010 */ sw $t2, 0x10($t1)
/* 0118A8 70010CA8 10000006 */ b .L70010CC4
/* 0118AC 70010CAC AD2B0014 */ sw $t3, 0x14($t1)
.L70010CB0:
/* 0118B0 70010CB0 8FAE0020 */ lw $t6, 0x20($sp)
/* 0118B4 70010CB4 8FAC0030 */ lw $t4, 0x30($sp)
/* 0118B8 70010CB8 8FAD0034 */ lw $t5, 0x34($sp)
/* 0118BC 70010CBC ADCC0010 */ sw $t4, 0x10($t6)
/* 0118C0 70010CC0 ADCD0014 */ sw $t5, 0x14($t6)
.L70010CC4:
/* 0118C4 70010CC4 8FAF0038 */ lw $t7, 0x38($sp)
/* 0118C8 70010CC8 8FB80020 */ lw $t8, 0x20($sp)
/* 0118CC 70010CCC AF0F0018 */ sw $t7, 0x18($t8)
/* 0118D0 70010CD0 8FA80020 */ lw $t0, 0x20($sp)
/* 0118D4 70010CD4 8FB9003C */ lw $t9, 0x3c($sp)
/* 0118D8 70010CD8 AD19001C */ sw $t9, 0x1c($t0)
/* 0118DC 70010CDC 0C00622A */ jal __osInsertTimer
/* 0118E0 70010CE0 8FA40020 */ lw $a0, 0x20($sp)
/* 0118E4 70010CE4 3C0A8002 */ lui $t2, %hi(__osTimerList)
/* 0118E8 70010CE8 8D4A7FD0 */ lw $t2, %lo(__osTimerList)($t2)
/* 0118EC 70010CEC AFA20018 */ sw $v0, 0x18($sp)
/* 0118F0 70010CF0 AFA3001C */ sw $v1, 0x1c($sp)
/* 0118F4 70010CF4 8FA90020 */ lw $t1, 0x20($sp)
/* 0118F8 70010CF8 8D4B0000 */ lw $t3, ($t2)
/* 0118FC 70010CFC 15690004 */ bne $t3, $t1, .L70010D10
/* 011900 70010D00 00000000 */ nop
/* 011904 70010D04 8FA40018 */ lw $a0, 0x18($sp)
/* 011908 70010D08 0C00620D */ jal __osSetTimerIntr
/* 01190C 70010D0C 8FA5001C */ lw $a1, 0x1c($sp)
.L70010D10:
/* 011910 70010D10 8FBF0014 */ lw $ra, 0x14($sp)
/* 011914 70010D14 27BD0020 */ addiu $sp, $sp, 0x20
/* 011918 70010D18 00001025 */ move $v0, $zero
/* 01191C 70010D1C 03E00008 */ jr $ra
/* 011920 70010D20 00000000 */ nop
+5
View File
@@ -0,0 +1,5 @@
#include "libultra_internal.h"
void osSpTaskYield(void) {
__osSpSetStatus(SPSTATUS_SET_SIGNAL0);
}
-18
View File
@@ -1,18 +0,0 @@
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64
.include "macros.inc"
.section .text, "ax"
glabel osSpTaskYield
/* 00F460 7000E860 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 00F464 7000E864 AFBF0014 */ sw $ra, 0x14($sp)
/* 00F468 7000E868 0C0063B8 */ jal __osSpSetStatus
/* 00F46C 7000E86C 24040400 */ li $a0, 1024
/* 00F470 7000E870 8FBF0014 */ lw $ra, 0x14($sp)
/* 00F474 7000E874 27BD0018 */ addiu $sp, $sp, 0x18
/* 00F478 7000E878 03E00008 */ jr $ra
/* 00F47C 7000E87C 00000000 */ nop
+17
View File
@@ -0,0 +1,17 @@
#include "libultra_internal.h"
OSYieldResult osSpTaskYielded(OSTask *task) {
s32 status;
u32 int_disabledult;
status = __osSpGetStatus();
if (status & SPSTATUS_SIGNAL1_SET) {
int_disabledult = 1;
} else {
int_disabledult = 0;
}
if (status & SPSTATUS_SIGNAL0_SET) {
task->t.flags |= int_disabledult;
task->t.flags &= ~(M_TASK_FLAG1);
}
return int_disabledult;
}
-46
View File
@@ -1,46 +0,0 @@
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64
.include "macros.inc"
.section .text, "ax"
glabel osSpTaskYielded
/* 00EF40 7000E340 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 00EF44 7000E344 AFBF0014 */ sw $ra, 0x14($sp)
/* 00EF48 7000E348 0C0063B4 */ jal __osSpGetStatus
/* 00EF4C 7000E34C AFA40020 */ sw $a0, 0x20($sp)
/* 00EF50 7000E350 AFA2001C */ sw $v0, 0x1c($sp)
/* 00EF54 7000E354 8FAE001C */ lw $t6, 0x1c($sp)
/* 00EF58 7000E358 31CF0100 */ andi $t7, $t6, 0x100
/* 00EF5C 7000E35C 11E00004 */ beqz $t7, .L7000E370
/* 00EF60 7000E360 00000000 */ nop
/* 00EF64 7000E364 24180001 */ li $t8, 1
/* 00EF68 7000E368 10000002 */ b .L7000E374
/* 00EF6C 7000E36C AFB80018 */ sw $t8, 0x18($sp)
.L7000E370:
/* 00EF70 7000E370 AFA00018 */ sw $zero, 0x18($sp)
.L7000E374:
/* 00EF74 7000E374 8FB9001C */ lw $t9, 0x1c($sp)
/* 00EF78 7000E378 33280080 */ andi $t0, $t9, 0x80
/* 00EF7C 7000E37C 1100000B */ beqz $t0, .L7000E3AC
/* 00EF80 7000E380 00000000 */ nop
/* 00EF84 7000E384 8FA90020 */ lw $t1, 0x20($sp)
/* 00EF88 7000E388 8FAB0018 */ lw $t3, 0x18($sp)
/* 00EF8C 7000E38C 2401FFFD */ li $at, -3
/* 00EF90 7000E390 8D2A0004 */ lw $t2, 4($t1)
/* 00EF94 7000E394 014B6025 */ or $t4, $t2, $t3
/* 00EF98 7000E398 AD2C0004 */ sw $t4, 4($t1)
/* 00EF9C 7000E39C 8FAD0020 */ lw $t5, 0x20($sp)
/* 00EFA0 7000E3A0 8DAE0004 */ lw $t6, 4($t5)
/* 00EFA4 7000E3A4 01C17824 */ and $t7, $t6, $at
/* 00EFA8 7000E3A8 ADAF0004 */ sw $t7, 4($t5)
.L7000E3AC:
/* 00EFAC 7000E3AC 8FBF0014 */ lw $ra, 0x14($sp)
/* 00EFB0 7000E3B0 8FA20018 */ lw $v0, 0x18($sp)
/* 00EFB4 7000E3B4 27BD0020 */ addiu $sp, $sp, 0x20
/* 00EFB8 7000E3B8 03E00008 */ jr $ra
/* 00EFBC 7000E3BC 00000000 */ nop
+37
View File
@@ -0,0 +1,37 @@
#include "libultra_internal.h"
void osStartThread(OSThread *thread) {
register u32 int_disabled;
register uintptr_t state;
int_disabled = __osDisableInt();
state = thread->state;
if (state != OS_STATE_STOPPED) {
if (state == OS_STATE_WAITING) {
do {
} while (0);
thread->state = OS_STATE_RUNNABLE;
__osEnqueueThread(&__osRunQueue, thread);
}
} else {
if (thread->queue == NULL || thread->queue == &__osRunQueue) {
thread->state = OS_STATE_RUNNABLE;
__osEnqueueThread(&__osRunQueue, thread);
} else {
thread->state = OS_STATE_WAITING;
__osEnqueueThread(thread->queue, thread);
state = (uintptr_t) __osPopThread(thread->queue);
__osEnqueueThread(&__osRunQueue, (OSThread *) state);
}
}
if (__osRunningThread == NULL) {
__osDispatchThread();
} else {
if (__osRunningThread->priority < __osRunQueue->priority) {
__osRunningThread->state = OS_STATE_RUNNABLE;
__osEnqueueAndYield(&__osRunQueue);
}
}
__osRestoreInt(int_disabled);
}

Some files were not shown because too many files have changed in this diff Show More