From 87533ab13638601691af548ed72387ba9e06b76f Mon Sep 17 00:00:00 2001 From: gamemasterplc Date: Thu, 8 Aug 2024 12:17:19 -0500 Subject: [PATCH] Finish ztardll --- configure.py | 4 +- src/REL/ztardll/main.c | 2 + src/REL/ztardll/select.c | 291 +++++++++++++++++++-------------------- 3 files changed, 144 insertions(+), 153 deletions(-) diff --git a/configure.py b/configure.py index 3b55f9a3..7a3274bc 100644 --- a/configure.py +++ b/configure.py @@ -1569,9 +1569,9 @@ config.libs = [ "ztardll", objects={ Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/ztardll/main.c"), + Object(Matching, "REL/ztardll/main.c"), Object(Matching, "REL/ztardll/font.c"), - Object(NonMatching, "REL/ztardll/select.c"), + Object(Matching, "REL/ztardll/select.c"), }, ), ] diff --git a/src/REL/ztardll/main.c b/src/REL/ztardll/main.c index 6cc5c2c0..0bd3da51 100644 --- a/src/REL/ztardll/main.c +++ b/src/REL/ztardll/main.c @@ -33,6 +33,8 @@ Process *lbl_1_bss_68; s32 lbl_1_bss_64; s32 lbl_1_bss_60; s16 lbl_1_bss_5E; +s16 lbl_1_bss_5C; + s16 lbl_1_bss_5A; s16 lbl_1_bss_58; s32 lbl_1_bss_54; diff --git a/src/REL/ztardll/select.c b/src/REL/ztardll/select.c index 5f0bd977..c12887fe 100644 --- a/src/REL/ztardll/select.c +++ b/src/REL/ztardll/select.c @@ -97,12 +97,12 @@ s32 lbl_1_data_3E8[8] = { 0x800000, }; -Process *lbl_1_bss_70; -s32 lbl_1_bss_74; -s32 lbl_1_bss_78[5]; -ZtarDllUnkStruct2 lbl_1_bss_8C[4]; -ZtarDllUnkStruct2 lbl_1_bss_20C; s32 lbl_1_bss_26C[0x1B]; +ZtarDllUnkStruct2 lbl_1_bss_20C; +ZtarDllUnkStruct2 lbl_1_bss_8C[4]; +s32 lbl_1_bss_78[5]; +s32 lbl_1_bss_74; +Process *lbl_1_bss_70; void fn_1_7C00(void) { @@ -266,7 +266,7 @@ s32 fn_1_8030(s32 arg0, s32 arg1) } while (TRUE) { fn_1_10FBC(1); - if ((lbl_1_bss_8C->unk_08 == 0) && (HuPadBtnDown[0] & PAD_BUTTON_B) != 0) { + if ((lbl_1_bss_8C[0].unk_08 == 0) && (HuPadBtnDown[0] & PAD_BUTTON_B) != 0) { HuAudFXPlay(3); if (lbl_1_bss_20C.unk_10 == 1) { lbl_1_bss_20C.unk_10 = 0; @@ -372,7 +372,7 @@ s32 fn_1_8338(s32 arg0, s32 arg1) } while (TRUE) { fn_1_10FBC(1); - if (((HuPadBtnDown[lbl_1_bss_8C->unk_58] & 0x200) != 0) && (lbl_1_bss_8C[var_r30].unk_08 == 0) && (lbl_1_bss_20C.unk_30 == 0)) { + if (((HuPadBtnDown[lbl_1_bss_8C[0].unk_58] & 0x200) != 0) && (lbl_1_bss_8C[var_r30].unk_08 == 0) && (lbl_1_bss_20C.unk_30 == 0)) { HuAudFXPlay(3); if (var_r27 == -1) { var_r29 = 0; @@ -590,7 +590,7 @@ s32 fn_1_8B94(s32 arg0) } while (TRUE) { fn_1_10FBC(1); - if ((lbl_1_bss_8C->unk_08 == 0) && ((*HuPadBtnDown & 0x200) != 0)) { + if ((lbl_1_bss_8C[0].unk_08 == 0) && ((*HuPadBtnDown & 0x200) != 0)) { HuAudFXPlay(3); if (lbl_1_bss_20C.unk_10 == 1) { lbl_1_bss_20C.unk_10 = 0; @@ -688,7 +688,7 @@ s32 fn_1_8E50(s32 arg0) } while (TRUE) { fn_1_10FBC(1); - if ((HuPadBtnDown[lbl_1_bss_8C->unk_58] & PAD_BUTTON_B) && (lbl_1_bss_8C[var_r30].unk_08 == 0) && (lbl_1_bss_20C.unk_30 == 0)) { + if ((HuPadBtnDown[lbl_1_bss_8C[0].unk_58] & PAD_BUTTON_B) && (lbl_1_bss_8C[var_r30].unk_08 == 0) && (lbl_1_bss_20C.unk_30 == 0)) { HuAudFXPlay(3); if (var_r27 == -1) { var_r29 = 0; @@ -2051,46 +2051,49 @@ void fn_1_D280(omObjData *arg0, ZtarDllUnkStruct2 *arg1) } if (arg1->unk_5C != var_r25) { if (lbl_1_bss_74 != 0) { - loop_54: - var_r25 = var_r30 + (var_r29 * 6); - for (var_r28 = 0; var_r28 < 4; var_r28++) { - if (((var_r28 != arg1->unk_48) && (lbl_1_bss_8C[var_r28].unk_50 == 0) && (var_r25 == lbl_1_bss_8C[var_r28].unk_5C)) || (var_r25 == 0) - || (var_r25 == 5) || (var_r25 == 6) || (var_r25 == 0xB)) { - if ((var_r27 == 0) || (var_r26 == 0)) { - if (((var_r30 + var_r27) > 5) || ((var_r30 + var_r27) < 0)) { - var_r30 = var_r23; - } - else { - var_r30 += var_r27; - } - if (((var_r29 + var_r26) > 2) || ((var_r29 + var_r26) < 0)) { - var_r29 = var_r22; - } - else { - var_r29 += var_r26; - } - } - else if (((var_r30 + var_r27) <= 5) && ((var_r30 + var_r27) >= 0)) { - var_r30 += var_r27; - } - else if (((var_r29 + var_r26) <= 2) && ((var_r29 + var_r26) >= 0)) { - var_r29 += var_r26; - } - else { - var_r30 = var_r23; - var_r29 = var_r22; - } - } - else { - } - } - if (var_r28 != 4) { - goto loop_54; - } + while(1) { + var_r25 = var_r30 + (var_r29 * 6); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if (((var_r28 != arg1->unk_48) && (lbl_1_bss_8C[var_r28].unk_50 == 0) && (var_r25 == lbl_1_bss_8C[var_r28].unk_5C)) || (var_r25 == 0) + || (var_r25 == 5) || (var_r25 == 6) || (var_r25 == 0xB)) { + if ((var_r27 == 0) || (var_r26 == 0)) { + if (((var_r30 + var_r27) > 5) || ((var_r30 + var_r27) < 0)) { + var_r30 = var_r23; + } + else { + var_r30 += var_r27; + } + if (((var_r29 + var_r26) > 2) || ((var_r29 + var_r26) < 0)) { + var_r29 = var_r22; + } + else { + var_r29 += var_r26; + } + } + else if (((var_r30 + var_r27) <= 5) && ((var_r30 + var_r27) >= 0)) { + var_r30 += var_r27; + } + else if (((var_r29 + var_r26) <= 2) && ((var_r29 + var_r26) >= 0)) { + var_r29 += var_r26; + } + else { + var_r30 = var_r23; + var_r29 = var_r22; + } + break; + } + else { + + } + } + if(var_r28 == 4) { + break; + } + } } else { - do { - var_r25 = var_r30 + (var_r29 * 4); + while(1) { + var_r25 = var_r30 + (var_r29 * 4); for (var_r28 = 0; var_r28 < 4; var_r28++) { if ((var_r28 != arg1->unk_48) && (lbl_1_bss_8C[var_r28].unk_50 == 0) && (var_r25 == lbl_1_bss_8C[var_r28].unk_5C)) { if ((var_r27 == 0) || (var_r26 == 0)) { @@ -2102,11 +2105,10 @@ void fn_1_D280(omObjData *arg0, ZtarDllUnkStruct2 *arg1) } if (((var_r29 + var_r26) > 1) || ((var_r29 + var_r26) < 0)) { var_r29 = var_r22; - } - else { + } else { var_r29 += var_r26; - break; } + break; } else if (((var_r30 + var_r27) <= 3) && ((var_r30 + var_r27) >= 0)) { var_r30 += var_r27; @@ -2123,10 +2125,13 @@ void fn_1_D280(omObjData *arg0, ZtarDllUnkStruct2 *arg1) } } else { - break; + continue; } } - } while (var_r28 != 4); + if(var_r28 == 4) { + break; + } + } } if (lbl_1_bss_74 != 0) { var_r25 = var_r30 + (var_r29 * 6); @@ -2259,7 +2264,7 @@ void fn_1_E548(omObjData *arg0, ZtarDllUnkStruct2 *arg1) var_r22 = var_r29; } if (arg1->unk_08 == 0) { - if (HuPadBtnDown[lbl_1_bss_8C->unk_58] & PAD_BUTTON_A) { + if (HuPadBtnDown[lbl_1_bss_8C[0].unk_58] & PAD_BUTTON_A) { arg1->unk_08 = 1; HuSprBankSet(var_r27, arg1->unk_48 + 0x26, 1); HuSprBankSet(var_r27, arg1->unk_48 + 0x2A, 1); @@ -2352,7 +2357,7 @@ void fn_1_E548(omObjData *arg0, ZtarDllUnkStruct2 *arg1) } } } - else if (HuPadBtnDown[lbl_1_bss_8C->unk_58] & PAD_BUTTON_B) { + else if (HuPadBtnDown[lbl_1_bss_8C[0].unk_58] & PAD_BUTTON_B) { arg1->unk_08 = arg1->unk_10 = 0; if (lbl_1_bss_74 != 0) { var_r20 = 0; @@ -2383,8 +2388,8 @@ void fn_1_E548(omObjData *arg0, ZtarDllUnkStruct2 *arg1) } if (arg1->unk_5C != var_r24) { if (lbl_1_bss_74 != 0) { - do { - fn_1_10FBC(1); + while(1) { + fn_1_10FBC(1); var_r24 = var_r30 + (var_r29 * 6); for (var_r28 = 0; var_r28 < 4; var_r28++) { if (((var_r28 != arg1->unk_48) && (lbl_1_bss_8C[var_r28].unk_08 == 1) && (var_r24 == lbl_1_bss_8C[var_r28].unk_5C)) @@ -2416,7 +2421,10 @@ void fn_1_E548(omObjData *arg0, ZtarDllUnkStruct2 *arg1) break; } } - } while (var_r28 != 4); + if(var_r28 == 4) { + break; + } + } } else { do { @@ -2498,100 +2506,81 @@ s32 fn_1_F214(ZtarDllUnkStruct2 *arg0) var_r28 = 0; var_r29 = lbl_1_bss_26C[1]; -loop_1: - fn_1_10FBC(1); - var_r28 = 0; - var_r26 = arg0->unk_54; - if (HuPadStkX[lbl_1_bss_8C->unk_58] >= 5) { - block_3: - if (((GWGameStat.story_continue >> 4) & 1) == 1) { - arg0->unk_54++; - var_r28 = 1; - if (arg0->unk_54 > 3) { - arg0->unk_54 = 0; - } - } - else { - arg0->unk_54++; - var_r28 = 1; - if (arg0->unk_54 > 2) { - arg0->unk_54 = 0; - } - } - block_19: - if (arg0->unk_54 != var_r26) { - HuAudFXPlay(0); - for (var_r30 = 0; var_r30 <= 5; var_r30++) { - fn_1_10FBC(1); - if (lbl_1_bss_74 != 0) { - var_f31 = fn_1_10E38(lbl_1_data_584[arg0->unk_5C][0], lbl_1_data_584[arg0->unk_5C][0] + (var_r28 * 0xA), var_r30, 5.0f); - HuSprPosSet(var_r29, arg0->unk_48 + 0x2E, var_f31, lbl_1_data_584[arg0->unk_5C][1] + 0x23); - } - else { - var_f31 = fn_1_10E38(lbl_1_data_4D4[arg0->unk_5C % 4][0], lbl_1_data_4D4[arg0->unk_5C % 4][0] + (var_r28 * 0xA), var_r30, 5.0f); - HuSprPosSet(var_r29, arg0->unk_48 + 0x2E, var_f31, lbl_1_data_4D4[(arg0->unk_5C / 4) * 4][1] + 0x23); - } - } - HuSprBankSet(var_r29, arg0->unk_48 + 0x2E, arg0->unk_54); - for (var_r30 = 0; var_r30 <= 5; var_r30++) { - fn_1_10FBC(1); - if (lbl_1_bss_74 != 0) { - var_f31 = fn_1_10E38(lbl_1_data_584[arg0->unk_5C][0] + (var_r28 * 0xA), lbl_1_data_584[arg0->unk_5C][0], var_r30, 5.0f); - HuSprPosSet(var_r29, arg0->unk_48 + 0x2E, var_f31, lbl_1_data_584[arg0->unk_5C][1] + 0x23); - } - else { - var_f31 = fn_1_10E38(lbl_1_data_4D4[arg0->unk_5C % 4][0] + (var_r28 * 0xA), lbl_1_data_4D4[arg0->unk_5C % 4][0], var_r30, 5.0f); - HuSprPosSet(var_r29, arg0->unk_48 + 0x2E, var_f31, lbl_1_data_4D4[(arg0->unk_5C / 4) * 4][1] + 0x23); - } - } - } - goto loop_1; - } - if (HuPadBtn[lbl_1_bss_8C->unk_58] & PAD_BUTTON_RIGHT) { - goto block_3; - } - if (HuPadStkX[lbl_1_bss_8C->unk_58] <= -5) { - block_10: - if (((GWGameStat.story_continue >> 4) & 1) == 1) { - arg0->unk_54--; - var_r28 = -1; - if (arg0->unk_54 < 0) { - arg0->unk_54 = 3; - } - } - else { - arg0->unk_54--; - var_r28 = -1; - if (arg0->unk_54 < 0) { - arg0->unk_54 = 2; - } - } - goto block_19; - } - if (HuPadBtn[lbl_1_bss_8C->unk_58] & PAD_BUTTON_LEFT) { - goto block_10; - } - if (HuPadBtnDown[0] & PAD_BUTTON_A) { - var_r27 = 1; - } - else if (HuPadBtnDown[0] & PAD_BUTTON_B) { - var_r27 = 0; - HuAudFXPlay(3); - } - else { - goto block_19; - } - if (var_r27 == 1) { - if (lbl_1_bss_74 != 0) { - HuSprPosSet(var_r29, arg0->unk_48 + 0x32, lbl_1_data_584[arg0->unk_5C][0], lbl_1_data_584[arg0->unk_5C][1] + 0x23); - } - else { - HuSprPosSet(var_r29, arg0->unk_48 + 0x32, lbl_1_data_4D4[arg0->unk_5C % 4][0], lbl_1_data_4D4[(arg0->unk_5C / 4) * 4][1] + 0x23); - } - HuSprBankSet(var_r29, arg0->unk_48 + 0x32, arg0->unk_54); - HuSprAttrReset(var_r29, arg0->unk_48 + 0x32, 4); - HuSprAttrSet(var_r29, arg0->unk_48 + 0x2E, 4); - } + while(1) { + fn_1_10FBC(1); + var_r28 = 0; + var_r26 = arg0->unk_54; + if(HuPadStkX[lbl_1_bss_8C[0].unk_58] >= 5 || (HuPadBtn[lbl_1_bss_8C[0].unk_58] & PAD_BUTTON_RIGHT)) { + if(GWGameStat.field10E_bit4 == 1) { + arg0->unk_54++; + var_r28 = 1; + if(arg0->unk_54 > 3) { + arg0->unk_54 = 0; + } + } else { + arg0->unk_54++; + var_r28 = 1; + if(arg0->unk_54 > 2) { + arg0->unk_54 = 0; + } + } + } else if(HuPadStkX[lbl_1_bss_8C[0].unk_58] <= -5 || (HuPadBtn[lbl_1_bss_8C[0].unk_58] & PAD_BUTTON_LEFT)) { + if(GWGameStat.field10E_bit4 == 1) { + arg0->unk_54--; + var_r28 = -1; + if(arg0->unk_54 < 0) { + arg0->unk_54 = 3; + } + } else { + arg0->unk_54--; + var_r28 = -1; + if(arg0->unk_54 < 0) { + arg0->unk_54 = 2; + } + } + } else if(HuPadBtnDown[0] & PAD_BUTTON_A) { + var_r27 = 1; + break; + } else if(HuPadBtnDown[0] & PAD_BUTTON_B) { + var_r27 = 0; + HuAudFXPlay(3); + break; + } + if(arg0->unk_54 != var_r26) { + HuAudFXPlay(0); + for(var_r30=0; var_r30<=5; var_r30++) { + fn_1_10FBC(1); + if(lbl_1_bss_74) { + var_f31 = fn_1_10E38(lbl_1_data_584[arg0->unk_5C][0], lbl_1_data_584[arg0->unk_5C][0]+(var_r28*10), var_r30, 5.0f); + HuSprPosSet(var_r29, arg0->unk_48+46, var_f31, lbl_1_data_584[arg0->unk_5C][1]+35); + } else { + var_f31 = fn_1_10E38(lbl_1_data_4D4[arg0->unk_5C%4][0], lbl_1_data_4D4[arg0->unk_5C%4][0]+(var_r28*10), var_r30, 5.0f); + HuSprPosSet(var_r29, arg0->unk_48+46, var_f31, lbl_1_data_4D4[(arg0->unk_5C/4)*4][1]+35); + } + } + HuSprBankSet(var_r29, arg0->unk_48+46, arg0->unk_54); + for(var_r30=0; var_r30<=5; var_r30++) { + fn_1_10FBC(1); + if(lbl_1_bss_74) { + var_f31 = fn_1_10E38(lbl_1_data_584[arg0->unk_5C][0]+(var_r28*10), lbl_1_data_584[arg0->unk_5C][0], var_r30, 5.0f); + HuSprPosSet(var_r29, arg0->unk_48+46, var_f31, lbl_1_data_584[arg0->unk_5C][1]+35); + } else { + var_f31 = fn_1_10E38(lbl_1_data_4D4[arg0->unk_5C%4][0]+(var_r28*10), lbl_1_data_4D4[arg0->unk_5C%4][0], var_r30, 5.0f); + HuSprPosSet(var_r29, arg0->unk_48+46, var_f31, lbl_1_data_4D4[(arg0->unk_5C/4)*4][1]+35); + } + } + } + } + if(var_r27 == 1) { + if(lbl_1_bss_74) { + HuSprPosSet(var_r29, arg0->unk_48+50, lbl_1_data_584[arg0->unk_5C][0], lbl_1_data_584[arg0->unk_5C][1]+35); + } else { + HuSprPosSet(var_r29, arg0->unk_48+50, lbl_1_data_4D4[arg0->unk_5C%4][0], lbl_1_data_4D4[(arg0->unk_5C/4)*4][1]+35); + } + HuSprBankSet(var_r29, arg0->unk_48+50, arg0->unk_54); + HuSprAttrReset(var_r29, arg0->unk_48+50, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(var_r29, arg0->unk_48+46, HUSPR_ATTR_DISPOFF); + } return var_r27; }