Decompile func00001b98

This commit is contained in:
Ryan Dwyer
2019-10-29 23:24:14 +10:00
parent cdb84872b5
commit 1b58c34d27
9 changed files with 30 additions and 61 deletions
+5 -6
View File
@@ -26,7 +26,11 @@ SECTIONS
src/setup/setup_020df0.o (.data);
}
.game 0x0f000000 : AT(SIZEOF(.boot) + SIZEOF(.library) + SIZEOF(.setup)) {
.gvars 0x8008ae20 : AT(SIZEOF(.boot) + SIZEOF(.library) + SIZEOF(.setup)) {
src/gvars/gvars.o (.bss);
}
.game 0x0f000000 : AT(SIZEOF(.boot) + SIZEOF(.library) + SIZEOF(.setup) + SIZEOF(.gvars)) {
src/game/game_000000.o (.text);
src/game/chr/chrai.o (.text);
src/game/chr/chraicommands.o (.text);
@@ -43,11 +47,6 @@ SECTIONS
src/game/game_0601b0.o (.rodata);
}
.gvars 0x80099fc0 : {
src/gvars/gvars.o (.text);
src/gvars/gvars.o (.data);
}
/DISCARD/ : {
* (.MIPS.abiflags);
* (.options);
+1 -1
View File
@@ -35,7 +35,7 @@ SECTIONS
src/setup/setup_020df0.o (.data);
}
.gvars 0x80099fc0 : AT(SIZEOF(.game) + SIZEOF(.gamerodata) + SIZEOF(.library) + SIZEOF(.setup)) {
.gvars 0x8008ae20 : AT(SIZEOF(.game) + SIZEOF(.gamerodata) + SIZEOF(.library) + SIZEOF(.setup)) {
src/gvars/gvars.o (.text);
src/gvars/gvars.o (.data);
}
+1 -1
View File
@@ -35,7 +35,7 @@ SECTIONS
src/setup/setup_020df0.o (.data);
}
.gvars 0x80099fc0 : AT(SIZEOF(.game) + SIZEOF(.gamerodata) + SIZEOF(.library) + SIZEOF(.setup)) {
.gvars 0x8008ae20 : AT(SIZEOF(.game) + SIZEOF(.gamerodata) + SIZEOF(.library) + SIZEOF(.setup)) {
src/gvars/gvars.o (.text);
src/gvars/gvars.o (.data);
}
+1 -1
View File
@@ -3,7 +3,7 @@ OUTPUT_ARCH (mips)
SECTIONS
{
.gvars 0x80099fc0 : AT(0) {
.gvars 0x8008ae20 : AT(0) {
src/gvars/gvars.o (.text);
src/gvars/gvars.o (.data);
}
+1 -1
View File
@@ -28,7 +28,7 @@ SECTIONS
src/game/game_0601b0.o (.data);
}
.gvars 0x0e000000 : AT(SIZEOF(.library) + SIZEOF(.setup) + SIZEOF(.game)) {
.gvars 0x8008ae20 : AT(SIZEOF(.library) + SIZEOF(.setup) + SIZEOF(.game)) {
src/gvars/gvars.o (.text);
src/gvars/gvars.o (.data);
}
+1 -1
View File
@@ -28,7 +28,7 @@ SECTIONS
src/game/game_0601b0.o (.data);
}
.gvars 0x80099fc0 : AT(SIZEOF(.setup) + SIZEOF(.library) + SIZEOF(.game)) {
.gvars 0x8008ae20 : AT(SIZEOF(.setup) + SIZEOF(.library) + SIZEOF(.game)) {
src/gvars/gvars.o (.text);
src/gvars/gvars.o (.data);
}
+10 -43
View File
@@ -1,5 +1,6 @@
#include <ultra64.h>
#include "setup/setup_000000.h"
#include "gvars/gvars.h"
GLOBAL_ASM(
glabel func00001000
@@ -818,49 +819,15 @@ void func00001b40(void)
}
}
GLOBAL_ASM(
glabel func00001b98
/* 1b98: 27bdffe8 */ addiu $sp,$sp,-24
/* 1b9c: 308e000f */ andi $t6,$a0,0xf
/* 1ba0: 15c0001d */ bnez $t6,.L00001c18
/* 1ba4: afbf0014 */ sw $ra,0x14($sp)
/* 1ba8: 3c0f8006 */ lui $t7,0x8006
/* 1bac: 8defce68 */ lw $t7,-0x3198($t7)
/* 1bb0: 3c188006 */ lui $t8,0x8006
/* 1bb4: 3c198006 */ lui $t9,0x8006
/* 1bb8: 11e00004 */ beqz $t7,.L00001bcc
/* 1bbc: 00000000 */ sll $zero,$zero,0x0
/* 1bc0: 8f18ce64 */ lw $t8,-0x319c($t8)
/* 1bc4: 17000004 */ bnez $t8,.L00001bd8
/* 1bc8: 00000000 */ sll $zero,$zero,0x0
.L00001bcc:
/* 1bcc: 8f39ce60 */ lw $t9,-0x31a0($t9)
/* 1bd0: 53200012 */ beqzl $t9,.L00001c1c
/* 1bd4: 8fbf0014 */ lw $ra,0x14($sp)
.L00001bd8:
/* 1bd8: 0c012144 */ jal 0x48510
/* 1bdc: 00000000 */ sll $zero,$zero,0x0
/* 1be0: 3c098006 */ lui $t1,0x8006
/* 1be4: 8d29ce70 */ lw $t1,-0x3190($t1)
/* 1be8: 3c088006 */ lui $t0,0x8006
/* 1bec: 8d08ce6c */ lw $t0,-0x3194($t0)
/* 1bf0: 00495023 */ subu $t2,$v0,$t1
/* 1bf4: 3c04800a */ lui $a0,0x800a
/* 1bf8: 010a082b */ sltu $at,$t0,$t2
/* 1bfc: 50200007 */ beqzl $at,.L00001c1c
/* 1c00: 8fbf0014 */ lw $ra,0x14($sp)
/* 1c04: 0c0033d5 */ jal 0xcf54
/* 1c08: 8c84cac0 */ lw $a0,-0x3540($a0)
/* 1c0c: 3c04800a */ lui $a0,0x800a
/* 1c10: 0c0033d5 */ jal 0xcf54
/* 1c14: 8c84cac4 */ lw $a0,-0x353c($a0)
.L00001c18:
/* 1c18: 8fbf0014 */ lw $ra,0x14($sp)
.L00001c1c:
/* 1c1c: 27bd0018 */ addiu $sp,$sp,0x18
/* 1c20: 03e00008 */ jr $ra
/* 1c24: 00000000 */ sll $zero,$zero,0x0
);
void func00001b98(u32 value)
{
if ((value & 0xf) == 0 && ((var8005ce68 && var8005ce64) || var8005ce60)) {
if (func00048510() - var8005ce70 > var8005ce6c) {
func0000cf54(var8009cac0);
func0000cf54(var8009cac4);
}
}
}
GLOBAL_ASM(
glabel func00001c28
+8 -7
View File
@@ -1,17 +1,18 @@
#include <ultra64.h>
#include "gvars/gvars.h"
/**
* This is a workaround for me not being to figure out why ld is ignoring the
* memory address location in game.ld. It puts gvars immediately after setup,
* which means it comes 0xf1a0 earlier than it should. So we pad it out here.
*/
u8 padding8009ae20[0xf1a0];
// 8008ae20
u8 padding8008ae20[0xf1a0];
// 80099fc0
struct g_vars g_Vars; // ends at 8009a6c8
u8 padding8009a6c8[0x29fc];
u8 padding8009a6c8[0x23f8];
u32 var8009cac0;
u32 var8009cac4;
u8 padding8009cac8[0x5fc];
// 8009d0c4
s32 g_NumTags;
+2
View File
@@ -474,6 +474,8 @@ extern struct g_vars g_Vars;
extern s32 g_NumTags;
extern struct tag **g_TagPtrs;
extern u32 var8009cac0;
extern u32 var8009cac4;
extern u32 g_8009de24;
extern u32 g_EepromFlags;