From 4e843fd58d887c5b6795d516b447d93c5e56798a Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 30 Jan 2021 15:03:39 +1000 Subject: [PATCH] Decompile proutSprintf --- ld/libfiles.inc | 3 +- src/game/activemenu/activemenu.c | 1 - src/game/activemenu/tick.c | 1 - src/game/bondeyespy.c | 1 - src/game/bondview.c | 1 - src/game/cheats.c | 1 - src/game/endscreen.c | 1 - src/game/game_01b0a0.c | 1 - src/game/game_095320.c | 1 - src/game/game_097ba0.c | 1 - src/game/game_0b0fd0.c | 1 - src/game/game_0d4690.c | 1 - src/game/game_0dcdb0.c | 1 - src/game/game_0f09f0.c | 1 - src/game/game_102240.c | 1 - src/game/game_107fb0.c | 1 - src/game/game_166e40.c | 1 - src/game/game_1a7560.c | 1 - src/game/gamefile.c | 1 - src/game/gfxmemory.c | 1 - src/game/menu/items.c | 1 - src/game/mplayer/ingame.c | 1 - src/game/mplayer/mplayer.c | 1 - src/game/mplayer/options.c | 1 - src/game/mplayer/scenarios.c | 1 - src/game/mplayer/setup.c | 1 - src/game/mpstats.c | 1 - src/game/pak/pak.c | 1 - src/game/propobj.c | 1 - src/game/training/menus.c | 1 - src/game/training/training.c | 1 - src/include/lib/{lib_13130.h => str.h} | 5 +-- src/lib/lib_0e9d0.c | 1 - src/lib/lib_12dc0.c | 1 - src/lib/main.c | 1 - src/lib/{lib_13130.c => str.c} | 52 -------------------------- src/lib/ultra/libc/sprintf.c | 34 +++++++++++++++++ 37 files changed, 38 insertions(+), 89 deletions(-) rename src/include/lib/{lib_13130.h => str.h} (78%) rename src/lib/{lib_13130.c => str.c} (83%) create mode 100644 src/lib/ultra/libc/sprintf.c diff --git a/ld/libfiles.inc b/ld/libfiles.inc index b5bff31a2..a5ad51b80 100644 --- a/ld/libfiles.inc +++ b/ld/libfiles.inc @@ -33,7 +33,8 @@ build/ROMID/lib/memory.o (section); \ build/ROMID/lib/lib_126b0.o (section); \ build/ROMID/lib/lib_12dc0.o (section); \ - build/ROMID/lib/lib_13130.o (section); \ + build/ROMID/lib/str.o (section); \ + build/ROMID/lib/ultra/libc/sprintf.o (section); \ build/ROMID/lib/lib_13710.o (section); \ build/ROMID/lib/lib_13750.o (section); \ build/ROMID/lib/lib_13790.o (section); \ diff --git a/src/game/activemenu/activemenu.c b/src/game/activemenu/activemenu.c index 5f2980314..3e22bfaf8 100644 --- a/src/game/activemenu/activemenu.c +++ b/src/game/activemenu/activemenu.c @@ -29,7 +29,6 @@ #include "gvars/gvars.h" #include "lib/lib_09660.h" #include "lib/main.h" -#include "lib/lib_13130.h" #include "lib/lib_16110.h" #include "types.h" diff --git a/src/game/activemenu/tick.c b/src/game/activemenu/tick.c index 2f60695fb..308d22e12 100644 --- a/src/game/activemenu/tick.c +++ b/src/game/activemenu/tick.c @@ -16,7 +16,6 @@ #include "game/pdoptions.h" #include "gvars/gvars.h" #include "lib/controller.h" -#include "lib/lib_13130.h" #include "types.h" void amTick(void) diff --git a/src/game/bondeyespy.c b/src/game/bondeyespy.c index 350f5ee0e..dcb851034 100644 --- a/src/game/bondeyespy.c +++ b/src/game/bondeyespy.c @@ -24,7 +24,6 @@ #include "gvars/gvars.h" #include "lib/main.h" #include "lib/lib_0e9d0.h" -#include "lib/lib_13130.h" #include "lib/lib_16110.h" #include "lib/lib_233c0.h" #include "types.h" diff --git a/src/game/bondview.c b/src/game/bondview.c index 656527b41..63a0d5204 100644 --- a/src/game/bondview.c +++ b/src/game/bondview.c @@ -21,7 +21,6 @@ #include "lib/lib_09660.h" #include "lib/main.h" #include "lib/lib_12dc0.h" -#include "lib/lib_13130.h" #include "lib/lib_16110.h" #include "types.h" #include "gbiex.h" diff --git a/src/game/cheats.c b/src/game/cheats.c index b44844fc3..b56eee7f5 100644 --- a/src/game/cheats.c +++ b/src/game/cheats.c @@ -16,7 +16,6 @@ #include "game/lang.h" #include "game/pak/pak.h" #include "gvars/gvars.h" -#include "lib/lib_13130.h" #include "types.h" struct cheat g_Cheats[NUM_CHEATS] = { diff --git a/src/game/endscreen.c b/src/game/endscreen.c index eb85ca513..5d7b41a73 100644 --- a/src/game/endscreen.c +++ b/src/game/endscreen.c @@ -32,7 +32,6 @@ #include "gvars/gvars.h" #include "lib/lib_09660.h" #include "lib/main.h" -#include "lib/lib_13130.h" #include "types.h" s32 menuhandlerDeclineMission(u32 operation, struct menuitem *item, union handlerdata *data) diff --git a/src/game/game_01b0a0.c b/src/game/game_01b0a0.c index 422fc32c7..2613095a1 100644 --- a/src/game/game_01b0a0.c +++ b/src/game/game_01b0a0.c @@ -14,7 +14,6 @@ #include "game/game_127910.h" #include "game/pdoptions.h" #include "gvars/gvars.h" -#include "lib/lib_13130.h" #include "types.h" f32 pdmodeGetReaction(void) diff --git a/src/game/game_095320.c b/src/game/game_095320.c index adc8cba7f..0deb1b2a5 100644 --- a/src/game/game_095320.c +++ b/src/game/game_095320.c @@ -24,7 +24,6 @@ #include "lib/lib_0d0a0.h" #include "lib/memory.h" #include "lib/lib_12dc0.h" -#include "lib/lib_13130.h" #include "lib/lib_159b0.h" #include "types.h" diff --git a/src/game/game_097ba0.c b/src/game/game_097ba0.c index 86d3078a0..b32ecf7eb 100644 --- a/src/game/game_097ba0.c +++ b/src/game/game_097ba0.c @@ -48,7 +48,6 @@ #include "lib/main.h" #include "lib/lib_0e9d0.h" #include "lib/lib_12dc0.h" -#include "lib/lib_13130.h" #include "lib/lib_159b0.h" #include "lib/lib_16110.h" #include "lib/lib_233c0.h" diff --git a/src/game/game_0b0fd0.c b/src/game/game_0b0fd0.c index 86601e6fb..cb28b02f2 100644 --- a/src/game/game_0b0fd0.c +++ b/src/game/game_0b0fd0.c @@ -20,7 +20,6 @@ #include "game/mplayer/mplayer.h" #include "game/pdoptions.h" #include "gvars/gvars.h" -#include "lib/lib_13130.h" #include "types.h" struct weapon *weaponFindById(s32 itemid) diff --git a/src/game/game_0d4690.c b/src/game/game_0d4690.c index 498a8a11b..282498375 100644 --- a/src/game/game_0d4690.c +++ b/src/game/game_0d4690.c @@ -14,7 +14,6 @@ #include "gvars/gvars.h" #include "lib/lib_09660.h" #include "lib/main.h" -#include "lib/lib_13130.h" #include "lib/lib_159b0.h" #include "lib/lib_16110.h" #include "types.h" diff --git a/src/game/game_0dcdb0.c b/src/game/game_0dcdb0.c index 9ba0bb760..72acbe0a1 100644 --- a/src/game/game_0dcdb0.c +++ b/src/game/game_0dcdb0.c @@ -24,7 +24,6 @@ #include "lib/lib_09660.h" #include "lib/lib_0e9d0.h" #include "lib/memory.h" -#include "lib/lib_13130.h" #include "lib/lib_16110.h" #include "types.h" diff --git a/src/game/game_0f09f0.c b/src/game/game_0f09f0.c index 769b7e399..9f7b9b0b1 100644 --- a/src/game/game_0f09f0.c +++ b/src/game/game_0f09f0.c @@ -43,7 +43,6 @@ #include "lib/lib_0e9d0.h" #include "lib/memory.h" #include "lib/lib_12dc0.h" -#include "lib/lib_13130.h" #include "lib/lib_159b0.h" #include "lib/lib_16110.h" #include "lib/lib_317f0.h" diff --git a/src/game/game_102240.c b/src/game/game_102240.c index 72fded63a..e5414f6fb 100644 --- a/src/game/game_102240.c +++ b/src/game/game_102240.c @@ -36,7 +36,6 @@ #include "lib/lib_09660.h" #include "lib/main.h" #include "lib/lib_0e9d0.h" -#include "lib/lib_13130.h" #include "types.h" char *menuTextCurrentStageName(struct menuitem *item) diff --git a/src/game/game_107fb0.c b/src/game/game_107fb0.c index c34563a13..c0f566a31 100644 --- a/src/game/game_107fb0.c +++ b/src/game/game_107fb0.c @@ -20,7 +20,6 @@ #include "gvars/gvars.h" #include "lib/lib_09660.h" #include "lib/lib_126b0.h" -#include "lib/lib_13130.h" #include "types.h" char *filemgrGetDeviceName(s32 index) diff --git a/src/game/game_166e40.c b/src/game/game_166e40.c index 02b10ce80..6d15961fb 100644 --- a/src/game/game_166e40.c +++ b/src/game/game_166e40.c @@ -14,7 +14,6 @@ #include "lib/lib_0d0a0.h" #include "lib/memory.h" #include "lib/lib_12dc0.h" -#include "lib/lib_13130.h" #include "types.h" void *fileGetRomAddress(s32 filenum) diff --git a/src/game/game_1a7560.c b/src/game/game_1a7560.c index d58ffd93d..9c089122d 100644 --- a/src/game/game_1a7560.c +++ b/src/game/game_1a7560.c @@ -28,7 +28,6 @@ #include "gvars/gvars.h" #include "lib/lib_09660.h" #include "lib/main.h" -#include "lib/lib_13130.h" #include "types.h" GLOBAL_ASM( diff --git a/src/game/gamefile.c b/src/game/gamefile.c index 88a66ff9d..8f2330b72 100644 --- a/src/game/gamefile.c +++ b/src/game/gamefile.c @@ -24,7 +24,6 @@ #include "lib/lib_0bfb0.h" #include "lib/lib_0e9d0.h" #include "lib/lib_126b0.h" -#include "lib/lib_13130.h" #include "lib/lib_4b170.h" #include "types.h" diff --git a/src/game/gfxmemory.c b/src/game/gfxmemory.c index 14e7dd684..371d74ede 100644 --- a/src/game/gfxmemory.c +++ b/src/game/gfxmemory.c @@ -14,7 +14,6 @@ #include "lib/lib_0d0a0.h" #include "lib/memory.h" #include "lib/lib_12dc0.h" -#include "lib/lib_13130.h" #include "types.h" /** diff --git a/src/game/menu/items.c b/src/game/menu/items.c index 923988ddb..9f1e9959b 100644 --- a/src/game/menu/items.c +++ b/src/game/menu/items.c @@ -25,7 +25,6 @@ #include "gvars/gvars.h" #include "lib/lib_09660.h" #include "lib/main.h" -#include "lib/lib_13130.h" #include "types.h" const char var7f1adfa0[] = "brcol"; diff --git a/src/game/mplayer/ingame.c b/src/game/mplayer/ingame.c index d2f562b59..489f4e19e 100644 --- a/src/game/mplayer/ingame.c +++ b/src/game/mplayer/ingame.c @@ -23,7 +23,6 @@ #include "game/pdoptions.h" #include "gvars/gvars.h" #include "lib/main.h" -#include "lib/lib_13130.h" #include "types.h" const char var7f1b7e80[] = ""; diff --git a/src/game/mplayer/mplayer.c b/src/game/mplayer/mplayer.c index f496a63f2..4b51ce067 100644 --- a/src/game/mplayer/mplayer.c +++ b/src/game/mplayer/mplayer.c @@ -31,7 +31,6 @@ #include "lib/lib_09660.h" #include "lib/main.h" #include "lib/lib_12dc0.h" -#include "lib/lib_13130.h" #include "lib/lib_317f0.h" #include "types.h" diff --git a/src/game/mplayer/options.c b/src/game/mplayer/options.c index fc06cdb38..322f358b9 100644 --- a/src/game/mplayer/options.c +++ b/src/game/mplayer/options.c @@ -37,7 +37,6 @@ #include "lib/lib_0e9d0.h" #include "lib/memory.h" #include "lib/lib_12dc0.h" -#include "lib/lib_13130.h" #include "lib/lib_159b0.h" #include "lib/lib_16110.h" #include "lib/lib_233c0.h" diff --git a/src/game/mplayer/scenarios.c b/src/game/mplayer/scenarios.c index ef6dd7e00..0e40aafe5 100644 --- a/src/game/mplayer/scenarios.c +++ b/src/game/mplayer/scenarios.c @@ -37,7 +37,6 @@ #include "lib/lib_0e9d0.h" #include "lib/memory.h" #include "lib/lib_12dc0.h" -#include "lib/lib_13130.h" #include "lib/lib_159b0.h" #include "lib/lib_16110.h" #include "lib/lib_233c0.h" diff --git a/src/game/mplayer/setup.c b/src/game/mplayer/setup.c index db26a7f6b..bd3ab9551 100644 --- a/src/game/mplayer/setup.c +++ b/src/game/mplayer/setup.c @@ -24,7 +24,6 @@ #include "gvars/gvars.h" #include "lib/lib_09660.h" #include "lib/lib_12dc0.h" -#include "lib/lib_13130.h" #include "types.h" s32 menuhandlerMpDropOut(u32 operation, struct menuitem *item, union handlerdata *data) diff --git a/src/game/mpstats.c b/src/game/mpstats.c index 331b45480..b89d3db91 100644 --- a/src/game/mpstats.c +++ b/src/game/mpstats.c @@ -20,7 +20,6 @@ #include "game/mplayer/mplayer.h" #include "game/pdoptions.h" #include "gvars/gvars.h" -#include "lib/lib_13130.h" #include "types.h" void mpstatsIncrementPlayerShotCount(struct hand *hand, s32 region) diff --git a/src/game/pak/pak.c b/src/game/pak/pak.c index a4e1555b8..a8b6bb49b 100644 --- a/src/game/pak/pak.c +++ b/src/game/pak/pak.c @@ -22,7 +22,6 @@ #include "lib/main.h" #include "lib/memory.h" #include "lib/lib_12dc0.h" -#include "lib/lib_13130.h" #include "lib/lib_4cc10.h" #include "lib/lib_4ce60.h" #include "lib/lib_4d000.h" diff --git a/src/game/propobj.c b/src/game/propobj.c index 2cc05544a..2da3ac279 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -72,7 +72,6 @@ #include "lib/memory.h" #include "lib/model.h" #include "lib/lib_12dc0.h" -#include "lib/lib_13130.h" #include "lib/lib_159b0.h" #include "lib/lib_16110.h" #include "lib/lib_233c0.h" diff --git a/src/game/training/menus.c b/src/game/training/menus.c index f8cee1e64..ae99e7da6 100644 --- a/src/game/training/menus.c +++ b/src/game/training/menus.c @@ -29,7 +29,6 @@ #include "gvars/gvars.h" #include "lib/lib_09660.h" #include "lib/main.h" -#include "lib/lib_13130.h" #include "types.h" s32 frDetailsOkMenuHandler(u32 operation, struct menuitem *item, union handlerdata *data) diff --git a/src/game/training/training.c b/src/game/training/training.c index fa1100023..b0abc127e 100644 --- a/src/game/training/training.c +++ b/src/game/training/training.c @@ -40,7 +40,6 @@ #include "lib/lib_0e9d0.h" #include "lib/memory.h" #include "lib/lib_12dc0.h" -#include "lib/lib_13130.h" #include "lib/lib_159b0.h" #include "lib/lib_16110.h" #include "types.h" diff --git a/src/include/lib/lib_13130.h b/src/include/lib/str.h similarity index 78% rename from src/include/lib/lib_13130.h rename to src/include/lib/str.h index 3abea8180..8afc3f01a 100644 --- a/src/include/lib/lib_13130.h +++ b/src/include/lib/str.h @@ -1,5 +1,5 @@ -#ifndef _IN_LIB_LIB_13130_H -#define _IN_LIB_LIB_13130_H +#ifndef _IN_LIB_STR_H +#define _IN_LIB_STR_H #include #include "types.h" @@ -13,6 +13,5 @@ s32 isdigit(char c); s32 isalpha(char c); s32 isspace(char c); s32 func00013408(char *arg0, s32 *arg1, s32 arg2); -int sprintf(char *dest, const char *format, ...); #endif diff --git a/src/lib/lib_0e9d0.c b/src/lib/lib_0e9d0.c index 8cc285019..4b418b078 100644 --- a/src/lib/lib_0e9d0.c +++ b/src/lib/lib_0e9d0.c @@ -16,7 +16,6 @@ #include "lib/lib_0e9d0.h" #include "lib/memory.h" #include "lib/lib_12dc0.h" -#include "lib/lib_13130.h" #include "lib/lib_2faf0.h" #include "lib/lib_2fc60.h" #include "lib/lib_317f0.h" diff --git a/src/lib/lib_12dc0.c b/src/lib/lib_12dc0.c index aadbc8cb5..b00cea040 100644 --- a/src/lib/lib_12dc0.c +++ b/src/lib/lib_12dc0.c @@ -9,7 +9,6 @@ #include "game/data/data_02da90.h" #include "gvars/gvars.h" #include "lib/lib_12dc0.h" -#include "lib/lib_13130.h" #include "lib/lib_2fa00.h" #include "types.h" diff --git a/src/lib/main.c b/src/lib/main.c index c97849f7c..b362d8fb5 100644 --- a/src/lib/main.c +++ b/src/lib/main.c @@ -58,7 +58,6 @@ #include "lib/memory.h" #include "lib/lib_126b0.h" #include "lib/lib_12dc0.h" -#include "lib/lib_13130.h" #include "lib/lib_13750.h" #include "lib/lib_13790.h" #include "lib/lib_233c0.h" diff --git a/src/lib/lib_13130.c b/src/lib/str.c similarity index 83% rename from src/lib/lib_13130.c rename to src/lib/str.c index 02b644c59..528e82431 100644 --- a/src/lib/lib_13130.c +++ b/src/lib/str.c @@ -1,16 +1,5 @@ #include -#include "constants.h" -#include "game/data/data_000000.h" -#include "game/data/data_0083d0.h" -#include "game/data/data_00e460.h" -#include "game/data/data_0160b0.h" -#include "game/data/data_01a3a0.h" -#include "game/data/data_020df0.h" -#include "game/data/data_02da90.h" -#include "gvars/gvars.h" #include "lib/lib_0bfb0.h" -#include "lib/lib_13130.h" -#include "types.h" char *strcpy(char *dst, char *src) { @@ -342,44 +331,3 @@ glabel func00013408 /* 13688: 27bd0060 */ addiu $sp,$sp,0x60 /* 1368c: 00000000 */ nop ); - -GLOBAL_ASM( -glabel proutSprintf -/* 13690: 27bdffe8 */ addiu $sp,$sp,-24 -/* 13694: afbf0014 */ sw $ra,0x14($sp) -/* 13698: 0c012978 */ jal memcpy -/* 1369c: afa60020 */ sw $a2,0x20($sp) -/* 136a0: 8fbf0014 */ lw $ra,0x14($sp) -/* 136a4: 8fae0020 */ lw $t6,0x20($sp) -/* 136a8: 27bd0018 */ addiu $sp,$sp,0x18 -/* 136ac: 03e00008 */ jr $ra -/* 136b0: 004e1021 */ addu $v0,$v0,$t6 -); - -GLOBAL_ASM( -glabel sprintf -/* 136b4: 27bdffe0 */ addiu $sp,$sp,-32 -/* 136b8: afa40020 */ sw $a0,0x20($sp) -/* 136bc: afbf0014 */ sw $ra,0x14($sp) -/* 136c0: afa50024 */ sw $a1,0x24($sp) -/* 136c4: afa60028 */ sw $a2,0x28($sp) -/* 136c8: afa7002c */ sw $a3,0x2c($sp) -/* 136cc: 3c047001 */ lui $a0,%hi(proutSprintf) -/* 136d0: 24843690 */ addiu $a0,$a0,%lo(proutSprintf) -/* 136d4: 27a70028 */ addiu $a3,$sp,0x28 -/* 136d8: 8fa60024 */ lw $a2,0x24($sp) -/* 136dc: 0c013b40 */ jal _Printf -/* 136e0: 8fa50020 */ lw $a1,0x20($sp) -/* 136e4: 04400004 */ bltz $v0,.L000136f8 -/* 136e8: 00401825 */ or $v1,$v0,$zero -/* 136ec: 8fae0020 */ lw $t6,0x20($sp) -/* 136f0: 01c27821 */ addu $t7,$t6,$v0 -/* 136f4: a1e00000 */ sb $zero,0x0($t7) -.L000136f8: -/* 136f8: 8fbf0014 */ lw $ra,0x14($sp) -/* 136fc: 27bd0020 */ addiu $sp,$sp,0x20 -/* 13700: 03e00008 */ jr $ra -/* 13704: 00000000 */ nop -/* 13708: 00000000 */ nop -/* 1370c: 00000000 */ nop -); diff --git a/src/lib/ultra/libc/sprintf.c b/src/lib/ultra/libc/sprintf.c new file mode 100644 index 000000000..956188ca8 --- /dev/null +++ b/src/lib/ultra/libc/sprintf.c @@ -0,0 +1,34 @@ +#include + +char *proutSprintf(char *dst, const char *src, size_t count) +{ + return (char *)memcpy((u8 *)dst, (u8 *)src, count) + count; +} + +GLOBAL_ASM( +glabel sprintf +/* 136b4: 27bdffe0 */ addiu $sp,$sp,-32 +/* 136b8: afa40020 */ sw $a0,0x20($sp) +/* 136bc: afbf0014 */ sw $ra,0x14($sp) +/* 136c0: afa50024 */ sw $a1,0x24($sp) +/* 136c4: afa60028 */ sw $a2,0x28($sp) +/* 136c8: afa7002c */ sw $a3,0x2c($sp) +/* 136cc: 3c047001 */ lui $a0,%hi(proutSprintf) +/* 136d0: 24843690 */ addiu $a0,$a0,%lo(proutSprintf) +/* 136d4: 27a70028 */ addiu $a3,$sp,0x28 +/* 136d8: 8fa60024 */ lw $a2,0x24($sp) +/* 136dc: 0c013b40 */ jal _Printf +/* 136e0: 8fa50020 */ lw $a1,0x20($sp) +/* 136e4: 04400004 */ bltz $v0,.L000136f8 +/* 136e8: 00401825 */ or $v1,$v0,$zero +/* 136ec: 8fae0020 */ lw $t6,0x20($sp) +/* 136f0: 01c27821 */ addu $t7,$t6,$v0 +/* 136f4: a1e00000 */ sb $zero,0x0($t7) +.L000136f8: +/* 136f8: 8fbf0014 */ lw $ra,0x14($sp) +/* 136fc: 27bd0020 */ addiu $sp,$sp,0x20 +/* 13700: 03e00008 */ jr $ra +/* 13704: 00000000 */ nop +/* 13708: 00000000 */ nop +/* 1370c: 00000000 */ nop +);