summaryrefslogtreecommitdiff
path: root/src/code
diff options
context:
space:
mode:
authorRandom <28494085+Random06457@users.noreply.github.com>2020-06-10 00:14:18 +0200
committerGitHub <noreply@github.com>2020-06-09 18:14:18 -0400
commita76356090b8e571935d861fc8780b5439673056b (patch)
treecb121b509a7983fd3d8d879023476d586af5c116 /src/code
parenta0ef48e98751f102f7aa1f57bf3f5dbb336ca316 (diff)
Decompile flg_set.c (#200)
* Decompile flg_set.c * Use a for loop and rename func_8002AAB0 * move the flag set array inside the function
Diffstat (limited to 'src/code')
-rw-r--r--src/code/flg_set.c190
-rw-r--r--src/code/game.c14
-rw-r--r--src/code/z_debug.c5
-rw-r--r--src/code/z_demo.c1
-rw-r--r--src/code/z_parameter.c2
5 files changed, 158 insertions, 54 deletions
diff --git a/src/code/flg_set.c b/src/code/flg_set.c
index 45b17178b..7d0ae5ae1 100644
--- a/src/code/flg_set.c
+++ b/src/code/flg_set.c
@@ -1,44 +1,150 @@
-#include <ultra64.h>
#include <global.h>
+#include <PR/os_cont.h>
-typedef struct {
- /* 0x0000 */ u16* flagsReferenced;
- /* 0x0004 */ char* name;
-} FlagReference;
-
-FlagReference D_80115DC0[53] = {
- { &gSaveContext.eventChkInf[0], "event_chk_inf[0]" }, { &gSaveContext.eventChkInf[1], "event_chk_inf[1]" },
- { &gSaveContext.eventChkInf[2], "event_chk_inf[2]" }, { &gSaveContext.eventChkInf[3], "event_chk_inf[3]" },
- { &gSaveContext.eventChkInf[4], "event_chk_inf[4]" }, { &gSaveContext.eventChkInf[5], "event_chk_inf[5]" },
- { &gSaveContext.eventChkInf[6], "event_chk_inf[6]" }, { &gSaveContext.eventChkInf[7], "event_chk_inf[7]" },
- { &gSaveContext.eventChkInf[8], "event_chk_inf[8]" }, { &gSaveContext.eventChkInf[9], "event_chk_inf[9]" },
- { &gSaveContext.eventChkInf[10], "event_chk_inf[10]" }, { &gSaveContext.eventChkInf[11], "event_chk_inf[11]" },
- { &gSaveContext.eventChkInf[12], "event_chk_inf[12]" }, { &gSaveContext.eventChkInf[13], "event_chk_inf[13]" },
- { &gSaveContext.itemGetInf[0], "item_get_inf[0]" }, { &gSaveContext.itemGetInf[1], "item_get_inf[1]" },
- { &gSaveContext.itemGetInf[2], "item_get_inf[2]" }, { &gSaveContext.itemGetInf[3], "item_get_inf[3]" },
- { &gSaveContext.infTable[0], "inf_table[0]" }, { &gSaveContext.infTable[1], "inf_table[1]" },
- { &gSaveContext.infTable[2], "inf_table[2]" }, { &gSaveContext.infTable[3], "inf_table[3]" },
- { &gSaveContext.infTable[4], "inf_table[4]" }, { &gSaveContext.infTable[5], "inf_table[5]" },
- { &gSaveContext.infTable[6], "inf_table[6]" }, { &gSaveContext.infTable[7], "inf_table[7]" },
- { &gSaveContext.infTable[8], "inf_table[8]" }, { &gSaveContext.infTable[9], "inf_table[9]" },
- { &gSaveContext.infTable[10], "inf_table[10]" }, { &gSaveContext.infTable[11], "inf_table[11]" },
- { &gSaveContext.infTable[12], "inf_table[12]" }, { &gSaveContext.infTable[13], "inf_table[13]" },
- { &gSaveContext.infTable[14], "inf_table[14]" }, { &gSaveContext.infTable[15], "inf_table[15]" },
- { &gSaveContext.infTable[16], "inf_table[16]" }, { &gSaveContext.infTable[17], "inf_table[17]" },
- { &gSaveContext.infTable[18], "inf_table[18]" }, { &gSaveContext.infTable[19], "inf_table[19]" },
- { &gSaveContext.infTable[20], "inf_table[20]" }, { &gSaveContext.infTable[21], "inf_table[21]" },
- { &gSaveContext.infTable[22], "inf_table[22]" }, { &gSaveContext.infTable[23], "inf_table[23]" },
- { &gSaveContext.infTable[24], "inf_table[24]" }, { &gSaveContext.infTable[25], "inf_table[25]" },
- { &gSaveContext.infTable[26], "inf_table[26]" }, { &gSaveContext.infTable[27], "inf_table[27]" },
- { &gSaveContext.infTable[28], "inf_table[28]" }, { &gSaveContext.infTable[29], "inf_table[29]" },
- { &gSaveContext.eventInf[0], "event_inf[0]" }, { &gSaveContext.eventInf[1], "event_inf[1]" },
- { &gSaveContext.eventInf[2], "event_inf[2]" }, { &gSaveContext.eventInf[3], "event_inf[3]" },
-};
-
-s32 D_80115F68 = 0;
-s32 D_80115F6C = 0;
-s32 D_80115F70 = 0;
-
-s32 D_8015BB90;
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/flg_set/func_8002AAB0.s")
+void FlagSet_Update(GlobalContext* globalCtx) {
+ static s32 entryIdx = 0;
+ static u32 curBit = 0;
+ static s32 timer = 0;
+ static s32 bitIdx; // ? this doesn't need to be static
+
+ FlagSetEntry entries[53] = {
+ { &gSaveContext.eventChkInf[0], "event_chk_inf[0]" }, { &gSaveContext.eventChkInf[1], "event_chk_inf[1]" },
+ { &gSaveContext.eventChkInf[2], "event_chk_inf[2]" }, { &gSaveContext.eventChkInf[3], "event_chk_inf[3]" },
+ { &gSaveContext.eventChkInf[4], "event_chk_inf[4]" }, { &gSaveContext.eventChkInf[5], "event_chk_inf[5]" },
+ { &gSaveContext.eventChkInf[6], "event_chk_inf[6]" }, { &gSaveContext.eventChkInf[7], "event_chk_inf[7]" },
+ { &gSaveContext.eventChkInf[8], "event_chk_inf[8]" }, { &gSaveContext.eventChkInf[9], "event_chk_inf[9]" },
+ { &gSaveContext.eventChkInf[10], "event_chk_inf[10]" }, { &gSaveContext.eventChkInf[11], "event_chk_inf[11]" },
+ { &gSaveContext.eventChkInf[12], "event_chk_inf[12]" }, { &gSaveContext.eventChkInf[13], "event_chk_inf[13]" },
+ { &gSaveContext.itemGetInf[0], "item_get_inf[0]" }, { &gSaveContext.itemGetInf[1], "item_get_inf[1]" },
+ { &gSaveContext.itemGetInf[2], "item_get_inf[2]" }, { &gSaveContext.itemGetInf[3], "item_get_inf[3]" },
+ { &gSaveContext.infTable[0], "inf_table[0]" }, { &gSaveContext.infTable[1], "inf_table[1]" },
+ { &gSaveContext.infTable[2], "inf_table[2]" }, { &gSaveContext.infTable[3], "inf_table[3]" },
+ { &gSaveContext.infTable[4], "inf_table[4]" }, { &gSaveContext.infTable[5], "inf_table[5]" },
+ { &gSaveContext.infTable[6], "inf_table[6]" }, { &gSaveContext.infTable[7], "inf_table[7]" },
+ { &gSaveContext.infTable[8], "inf_table[8]" }, { &gSaveContext.infTable[9], "inf_table[9]" },
+ { &gSaveContext.infTable[10], "inf_table[10]" }, { &gSaveContext.infTable[11], "inf_table[11]" },
+ { &gSaveContext.infTable[12], "inf_table[12]" }, { &gSaveContext.infTable[13], "inf_table[13]" },
+ { &gSaveContext.infTable[14], "inf_table[14]" }, { &gSaveContext.infTable[15], "inf_table[15]" },
+ { &gSaveContext.infTable[16], "inf_table[16]" }, { &gSaveContext.infTable[17], "inf_table[17]" },
+ { &gSaveContext.infTable[18], "inf_table[18]" }, { &gSaveContext.infTable[19], "inf_table[19]" },
+ { &gSaveContext.infTable[20], "inf_table[20]" }, { &gSaveContext.infTable[21], "inf_table[21]" },
+ { &gSaveContext.infTable[22], "inf_table[22]" }, { &gSaveContext.infTable[23], "inf_table[23]" },
+ { &gSaveContext.infTable[24], "inf_table[24]" }, { &gSaveContext.infTable[25], "inf_table[25]" },
+ { &gSaveContext.infTable[26], "inf_table[26]" }, { &gSaveContext.infTable[27], "inf_table[27]" },
+ { &gSaveContext.infTable[28], "inf_table[28]" }, { &gSaveContext.infTable[29], "inf_table[29]" },
+ { &gSaveContext.eventInf[0], "event_inf[0]" }, { &gSaveContext.eventInf[1], "event_inf[1]" },
+ { &gSaveContext.eventInf[2], "event_inf[2]" }, { &gSaveContext.eventInf[3], "event_inf[3]" },
+ };
+
+ GraphicsContext* gfxCtx;
+ u32 pad;
+ Gfx* gfx;
+ Gfx* polyOpa;
+ Gfx* dispRefs[5];
+ GfxPrint printer;
+ Input* input = &globalCtx->state.input[0];
+
+ gfxCtx = globalCtx->state.gfxCtx;
+ Graph_OpenDisps(dispRefs, gfxCtx, "../flg_set.c", 131);
+ polyOpa = gfxCtx->polyOpa.p;
+ gfx = Graph_GfxPlusOne(polyOpa);
+ gSPDisplayList(gfxCtx->overlay.p++, gfx);
+
+ GfxPrint_Ctor(&printer);
+ GfxPrint_Open(&printer, gfx);
+ GfxPrint_SetColor(&printer, 0xFA, 0x32, 0x32, 0xFF);
+ GfxPrint_SetPos(&printer, 4, 13);
+ GfxPrint_Printf(&printer, entries[entryIdx].name);
+ GfxPrint_SetPos(&printer, 4, 15);
+
+ for (bitIdx = 15; bitIdx >= 0; bitIdx--) {
+ if (bitIdx == curBit) {
+ GfxPrint_SetColor(&printer, 200, 200, 200, 255);
+ } else {
+ GfxPrint_SetColor(&printer, 100, 100, 100, 255);
+ }
+
+ if (*entries[entryIdx].value & (1 << bitIdx)) {
+ GfxPrint_Printf(&printer, "1");
+ } else {
+ GfxPrint_Printf(&printer, "0");
+ }
+
+ if ((bitIdx % 4) == 0) {
+ GfxPrint_Printf(&printer, " ");
+ }
+ }
+
+ if (CHECK_PAD(input->press, L_JPAD)) {
+ timer = 10;
+ curBit++;
+ }
+ if (CHECK_PAD(input->press, R_JPAD)) {
+ curBit--;
+ timer = 10;
+ }
+
+ if (timer == 0) {
+ if (CHECK_PAD(input->cur, L_JPAD)) {
+ curBit++;
+ timer = 2;
+ }
+ if (CHECK_PAD(input->cur, R_JPAD)) {
+ curBit--;
+ timer = 2;
+ }
+ }
+
+ curBit %= 16;
+ if (CHECK_PAD(input->press, U_JPAD)) {
+ entryIdx--;
+ if (entryIdx < 0) {
+ entryIdx = 0;
+ }
+ timer = 10;
+ }
+ if (CHECK_PAD(input->press, D_JPAD)) {
+ timer = 10;
+ entryIdx++;
+ if (!entries[entryIdx].value) {
+ entryIdx--;
+ }
+ }
+
+ if (timer == 0) {
+ if (CHECK_PAD(input->cur, U_JPAD)) {
+ entryIdx--;
+ timer = 2;
+ if (entryIdx < 0) {
+ entryIdx = 0;
+ }
+ }
+ if (CHECK_PAD(input->cur, D_JPAD)) {
+ timer = 2;
+ entryIdx++;
+ if (!entries[entryIdx].value) {
+ entryIdx--;
+ }
+ }
+ }
+
+ if (CHECK_PAD(input->press, A_BUTTON)) {
+ *entries[entryIdx].value ^= (1 << curBit);
+ }
+
+ if (timer != 0) {
+ timer--;
+ }
+
+ gfx = GfxPrint_Close(&printer);
+ GfxPrint_Dtor(&printer);
+ gSPEndDisplayList(gfx++);
+ Graph_BranchDlist(polyOpa, gfx);
+ gfxCtx->polyOpa.p = gfx;
+
+ if (CHECK_PAD(input->press, L_TRIG)) {
+ globalCtx->pauseCtx.flag = 0;
+ }
+
+ Graph_CloseDisps(dispRefs, gfxCtx, "../flg_set.c", 241);
+}
diff --git a/src/code/game.c b/src/code/game.c
index 7a29a081a..5144c4ac9 100644
--- a/src/code/game.c
+++ b/src/code/game.c
@@ -158,8 +158,8 @@ void GameState_Draw(GameState* gameState, GraphicsContext* gfxCtx) {
Gfx* newDList;
Gfx* polyOpaP;
Gfx* dispRefs[5];
- char pad[0x10];
- GfxPrint printChars[2];
+ char pad[0x8];
+ GfxPrint printChars;
Graph_OpenDisps(dispRefs, gfxCtx, "../game.c", 746);
newDList = Graph_GfxPlusOne(polyOpaP = gfxCtx->polyOpa.p);
@@ -175,11 +175,11 @@ void GameState_Draw(GameState* gameState, GraphicsContext* gfxCtx) {
}
if (R_ENABLE_AUDIO_DBG & 1) {
- GfxPrint_Ctor(printChars);
- GfxPrint_Open(printChars, newDList);
- func_800EEA50(printChars);
- newDList = GfxPrint_Close(printChars);
- GfxPrint_Dtor(printChars);
+ GfxPrint_Ctor(&printChars);
+ GfxPrint_Open(&printChars, newDList);
+ func_800EEA50(&printChars);
+ newDList = GfxPrint_Close(&printChars);
+ GfxPrint_Dtor(&printChars);
}
if (R_ENABLE_ARENA_DBG < 0) {
diff --git a/src/code/z_debug.c b/src/code/z_debug.c
index bcb40d16e..2d58b91ec 100644
--- a/src/code/z_debug.c
+++ b/src/code/z_debug.c
@@ -218,10 +218,9 @@ void func_80063C04(GfxPrint* gfxPrint) {
void func_80063D7C(GraphicsContext* gfxCtx) {
Gfx* sp7C;
Gfx* sp78;
- Gfx* tempRet;
- void* unk2[6];
GfxPrint gfxPrint;
- void* unk[2];
+ Gfx* tempRet;
+ u32 pad;
Gfx* dispRefs[4]; // stores state of GfxCtx next ptrs
Graph_OpenDisps(dispRefs, gfxCtx, "../z_debug.c", 628);
diff --git a/src/code/z_demo.c b/src/code/z_demo.c
index f30789f69..e047aca3b 100644
--- a/src/code/z_demo.c
+++ b/src/code/z_demo.c
@@ -56,7 +56,6 @@ u8 D_8015FCE4; // only written to, never read
void func_80068ECC(GlobalContext* globalCtx, CutsceneContext* csCtx);
void Cutscene_DrawDebugInfo(GlobalContext* globalCtx, Gfx** dlist, CutsceneContext* csCtx) {
- u8 pad[0x1C];
GfxPrint printer;
u8 pad2[8];
diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c
index 412303ffc..9aa14118b 100644
--- a/src/code/z_parameter.c
+++ b/src/code/z_parameter.c
@@ -3945,7 +3945,7 @@ void Interface_Draw(GlobalContext* globalCtx) {
}
if (pauseCtx->flag == 3) {
- func_8002AAB0(globalCtx);
+ FlagSet_Update(globalCtx);
}
if (interfaceCtx->unk_244 != 0) {