mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-08-19 05:22:21 -04:00
Decompile func00001b98
This commit is contained in:
+5
-6
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user