diff --git a/ld/gamefiles.inc b/ld/gamefiles.inc index 99c8e7718..8c353f713 100644 --- a/ld/gamefiles.inc +++ b/ld/gamefiles.inc @@ -26,6 +26,7 @@ build/ROMID/game/game_00c490.o (section); \ build/ROMID/game/game_0108d0.o (section); \ build/ROMID/game/game_0109d0.o (section); \ + build/ROMID/game/casing/reset.o (section); \ build/ROMID/game/game_010b20.o (section); \ build/ROMID/game/game_011110.o (section); \ build/ROMID/game/inventory/init.o (section); \ @@ -62,7 +63,7 @@ build/ROMID/game/weather/tick.o (section); \ build/ROMID/game/game_01d860.o (section); \ build/ROMID/game/game_01d990.o (section); \ - build/ROMID/game/game_01d9f0.o (section); \ + build/ROMID/game/casing/tick.o (section); \ build/ROMID/game/game_01de30.o (section); \ build/ROMID/game/sparks/tick.o (section); \ build/ROMID/game/chr/chr.o (section); \ diff --git a/src/game/casing/reset.c b/src/game/casing/reset.c new file mode 100644 index 000000000..bd5085a18 --- /dev/null +++ b/src/game/casing/reset.c @@ -0,0 +1,74 @@ +#include +#include "constants.h" +#include "gvars/gvars.h" +#include "types.h" + +GLOBAL_ASM( +glabel casingsReset +/* f010b20: 3c04800a */ lui $a0,%hi(var8009d0d0) +/* f010b24: 2484d0d0 */ addiu $a0,$a0,%lo(var8009d0d0) +/* f010b28: ac800000 */ sw $zero,0x0($a0) +/* f010b2c: ac800004 */ sw $zero,0x4($a0) +/* f010b30: 3c01800a */ lui $at,%hi(var8009d0d8) +/* f010b34: 3c03800a */ lui $v1,%hi(var8009d0e0) +/* f010b38: 3c02800a */ lui $v0,%hi(var8009d0f0) +/* f010b3c: ac20d0d8 */ sw $zero,%lo(var8009d0d8)($at) +/* f010b40: 2442d0f0 */ addiu $v0,$v0,%lo(var8009d0f0) +/* f010b44: 2463d0e0 */ addiu $v1,$v1,%lo(var8009d0e0) +.L0f010b48: +/* f010b48: 24630004 */ addiu $v1,$v1,0x4 +/* f010b4c: 1462fffe */ bne $v1,$v0,.L0f010b48 +/* f010b50: ac60fffc */ sw $zero,-0x4($v1) +/* f010b54: 3c02800a */ lui $v0,%hi(var8009da60) +/* f010b58: 3c03800a */ lui $v1,%hi(g_Casings) +/* f010b5c: 2442da60 */ addiu $v0,$v0,%lo(var8009da60) +/* f010b60: 2463d510 */ addiu $v1,$v1,%lo(g_Casings) +.L0f010b64: +/* f010b64: 24630044 */ addiu $v1,$v1,0x44 +/* f010b68: 0062082b */ sltu $at,$v1,$v0 +/* f010b6c: 1420fffd */ bnez $at,.L0f010b64 +/* f010b70: ac60fffc */ sw $zero,-0x4($v1) +/* f010b74: 3c018007 */ lui $at,%hi(g_CasingsActive) +/* f010b78: 3c03800a */ lui $v1,%hi(g_Fireslots) +/* f010b7c: 3c04800a */ lui $a0,%hi(g_Casings) +/* f010b80: ac200524 */ sw $zero,%lo(g_CasingsActive)($at) +/* f010b84: 2484d510 */ addiu $a0,$a0,%lo(g_Casings) +/* f010b88: 2463d150 */ addiu $v1,$v1,%lo(g_Fireslots) +/* f010b8c: 2402ffff */ addiu $v0,$zero,-1 +.L0f010b90: +/* f010b90: 24630030 */ addiu $v1,$v1,0x30 +/* f010b94: 1464fffe */ bne $v1,$a0,.L0f010b90 +/* f010b98: ac62ffd0 */ sw $v0,-0x30($v1) +/* f010b9c: 3c02800a */ lui $v0,%hi(g_Vars) +/* f010ba0: 24429fc0 */ addiu $v0,$v0,%lo(g_Vars) +/* f010ba4: ac4002b0 */ sw $zero,0x2b0($v0) +/* f010ba8: 03e00008 */ jr $ra +/* f010bac: ac4002b4 */ sw $zero,0x2b4($v0) +); + +// Mismatch: Two instructions are swapped +//void casingsReset(void) +//{ +// s32 i; +// +// var8009d0d0[0] = 0; +// var8009d0d0[1] = 0; +// var8009d0d8 = 0; +// +// for (i = 0; i != ARRAYCOUNT(var8009d0e0); i++) { +// var8009d0e0[i] = 0; +// } +// +// for (i = 0; i < ARRAYCOUNT(g_Casings); i++) { +// g_Casings[i].unk40 = 0; +// } +// +// g_CasingsActive = 0; +// +// for (i = 0; i < ARRAYCOUNT(g_Fireslots); i++) { +// g_Fireslots[i].unk00 = -1; +// } +// +// g_Vars.killcount = 0; +// g_Vars.knockoutcount = 0; +//} diff --git a/src/game/game_01d9f0.c b/src/game/casing/tick.c similarity index 99% rename from src/game/game_01d9f0.c rename to src/game/casing/tick.c index e3ed06a88..2e855b989 100644 --- a/src/game/game_01d9f0.c +++ b/src/game/casing/tick.c @@ -7,7 +7,7 @@ #include "game/data/data_01a3a0.h" #include "game/data/data_020df0.h" #include "game/data/data_02da90.h" -#include "game/game_01d9f0.h" +#include "game/casing.h" #include "gvars/gvars.h" #include "lib/lib_0e9d0.h" #include "lib/rng.h" diff --git a/src/game/core.c b/src/game/core.c index 03c434941..6d9455bf4 100644 --- a/src/game/core.c +++ b/src/game/core.c @@ -24,7 +24,7 @@ #include "game/game_00c490.h" #include "game/game_0108d0.h" #include "game/game_0109d0.h" -#include "game/game_010b20.h" +#include "game/casing.h" #include "game/game_011110.h" #include "game/inventory/init.h" #include "game/game_0125a0.h" @@ -56,7 +56,6 @@ #include "game/weather/tick.h" #include "game/game_01d860.h" #include "game/game_01d990.h" -#include "game/game_01d9f0.h" #include "game/game_01de30.h" #include "game/chr/chr.h" #include "game/game_0601b0.h" diff --git a/src/game/game_010b20.c b/src/game/game_010b20.c index f7a9a312f..9e1a662e4 100644 --- a/src/game/game_010b20.c +++ b/src/game/game_010b20.c @@ -14,76 +14,6 @@ #include "lib/memory.h" #include "types.h" -GLOBAL_ASM( -glabel casingsReset -/* f010b20: 3c04800a */ lui $a0,%hi(var8009d0d0) -/* f010b24: 2484d0d0 */ addiu $a0,$a0,%lo(var8009d0d0) -/* f010b28: ac800000 */ sw $zero,0x0($a0) -/* f010b2c: ac800004 */ sw $zero,0x4($a0) -/* f010b30: 3c01800a */ lui $at,%hi(var8009d0d8) -/* f010b34: 3c03800a */ lui $v1,%hi(var8009d0e0) -/* f010b38: 3c02800a */ lui $v0,%hi(var8009d0f0) -/* f010b3c: ac20d0d8 */ sw $zero,%lo(var8009d0d8)($at) -/* f010b40: 2442d0f0 */ addiu $v0,$v0,%lo(var8009d0f0) -/* f010b44: 2463d0e0 */ addiu $v1,$v1,%lo(var8009d0e0) -.L0f010b48: -/* f010b48: 24630004 */ addiu $v1,$v1,0x4 -/* f010b4c: 1462fffe */ bne $v1,$v0,.L0f010b48 -/* f010b50: ac60fffc */ sw $zero,-0x4($v1) -/* f010b54: 3c02800a */ lui $v0,%hi(var8009da60) -/* f010b58: 3c03800a */ lui $v1,%hi(g_Casings) -/* f010b5c: 2442da60 */ addiu $v0,$v0,%lo(var8009da60) -/* f010b60: 2463d510 */ addiu $v1,$v1,%lo(g_Casings) -.L0f010b64: -/* f010b64: 24630044 */ addiu $v1,$v1,0x44 -/* f010b68: 0062082b */ sltu $at,$v1,$v0 -/* f010b6c: 1420fffd */ bnez $at,.L0f010b64 -/* f010b70: ac60fffc */ sw $zero,-0x4($v1) -/* f010b74: 3c018007 */ lui $at,%hi(g_CasingsActive) -/* f010b78: 3c03800a */ lui $v1,%hi(g_Fireslots) -/* f010b7c: 3c04800a */ lui $a0,%hi(g_Casings) -/* f010b80: ac200524 */ sw $zero,%lo(g_CasingsActive)($at) -/* f010b84: 2484d510 */ addiu $a0,$a0,%lo(g_Casings) -/* f010b88: 2463d150 */ addiu $v1,$v1,%lo(g_Fireslots) -/* f010b8c: 2402ffff */ addiu $v0,$zero,-1 -.L0f010b90: -/* f010b90: 24630030 */ addiu $v1,$v1,0x30 -/* f010b94: 1464fffe */ bne $v1,$a0,.L0f010b90 -/* f010b98: ac62ffd0 */ sw $v0,-0x30($v1) -/* f010b9c: 3c02800a */ lui $v0,%hi(g_Vars) -/* f010ba0: 24429fc0 */ addiu $v0,$v0,%lo(g_Vars) -/* f010ba4: ac4002b0 */ sw $zero,0x2b0($v0) -/* f010ba8: 03e00008 */ jr $ra -/* f010bac: ac4002b4 */ sw $zero,0x2b4($v0) -); - -// Mismatch: Two instructions are swapped -//void casingsReset(void) -//{ -// s32 i; -// -// var8009d0d0[0] = 0; -// var8009d0d0[1] = 0; -// var8009d0d8 = 0; -// -// for (i = 0; i != ARRAYCOUNT(var8009d0e0); i++) { -// var8009d0e0[i] = 0; -// } -// -// for (i = 0; i < ARRAYCOUNT(g_Casings); i++) { -// g_Casings[i].unk40 = 0; -// } -// -// g_CasingsActive = 0; -// -// for (i = 0; i < ARRAYCOUNT(g_Fireslots); i++) { -// g_Fireslots[i].unk00 = -1; -// } -// -// g_Vars.killcount = 0; -// g_Vars.knockoutcount = 0; -//} - extern u32 var800700ac; void func0f010bb0(void) diff --git a/src/include/game/game_01d9f0.h b/src/include/game/casing.h similarity index 59% rename from src/include/game/game_01d9f0.h rename to src/include/game/casing.h index 59256b07a..99edc3302 100644 --- a/src/include/game/game_01d9f0.h +++ b/src/include/game/casing.h @@ -1,8 +1,9 @@ -#ifndef IN_GAME_GAME_01D9F0_H -#define IN_GAME_GAME_01D9F0_H +#ifndef IN_GAME_CASING_H +#define IN_GAME_CASING_H #include #include "types.h" +void casingsReset(void); void casingTick(struct casing *arg0); void casingsTick(void); diff --git a/src/include/game/game_010b20.h b/src/include/game/game_010b20.h index f77129267..bd66d82db 100644 --- a/src/include/game/game_010b20.h +++ b/src/include/game/game_010b20.h @@ -3,7 +3,6 @@ #include #include "types.h" -void casingsReset(void); void func0f010bb0(void); #endif