mirror of
https://github.com/zeldaret/tmc
synced 2026-08-28 08:48:54 -04:00
Merge branch 'master' into tilemap-docs
This commit is contained in:
+80
-80
@@ -57,24 +57,24 @@ extern const struct_08128AD8 gUnk_08128AD8[];
|
||||
Subtask FigurineMenu0_Type0;
|
||||
Subtask FigurineMenu0_Type1;
|
||||
Subtask FigurineMenu0_Type2;
|
||||
Subtask FigurineMenu0_Type3;
|
||||
Subtask FigurineMenu0_ViewFigurineAfterDrawing;
|
||||
Subtask FigurineMenu1_Type0;
|
||||
Subtask FigurineMenu1_Type1;
|
||||
Subtask FigurineMenu1_ViewAllFigurines;
|
||||
Subtask FigurineMenu1_Type2;
|
||||
Subtask FigurineMenu1_Type3;
|
||||
Subtask FigurineMenu1_ExitMenu;
|
||||
|
||||
void Subtask_FigurineMenu(void) {
|
||||
static Subtask* const figurineMenu1_Types[] = {
|
||||
FigurineMenu0_Type0,
|
||||
FigurineMenu0_Type1,
|
||||
FigurineMenu0_Type2,
|
||||
FigurineMenu0_Type3,
|
||||
FigurineMenu0_ViewFigurineAfterDrawing,
|
||||
};
|
||||
static Subtask* const figurineMenu0_Types[] = {
|
||||
FigurineMenu1_Type0,
|
||||
FigurineMenu1_Type1,
|
||||
FigurineMenu1_ViewAllFigurines,
|
||||
FigurineMenu1_Type2,
|
||||
FigurineMenu1_Type3,
|
||||
FigurineMenu1_ExitMenu,
|
||||
};
|
||||
#if !(defined(DEMO_USA) || defined(DEMO_JP))
|
||||
FlushSprites();
|
||||
@@ -94,7 +94,7 @@ void Subtask_FigurineMenu(void) {
|
||||
}
|
||||
|
||||
void FigurineMenu_080A4608(void) {
|
||||
s32 iVar2, r1, r2;
|
||||
s32 iVar2, r1, maxFigurines;
|
||||
|
||||
SetBgmVolume(0x80);
|
||||
sub_080A4DA8(3);
|
||||
@@ -112,15 +112,15 @@ void FigurineMenu_080A4608(void) {
|
||||
}
|
||||
|
||||
r1 = gUI.field_0x3;
|
||||
r2 = !gSave.saw_staffroll ? 0x82 : 0x88;
|
||||
if (r2 < r1) {
|
||||
maxFigurines = !gSave.saw_staffroll ? 130 : 136;
|
||||
if (maxFigurines < r1) {
|
||||
r1 = 1;
|
||||
}
|
||||
gFigurineMenu.figure_idx = r1;
|
||||
SetFade(FADE_INSTANT, 8);
|
||||
}
|
||||
|
||||
void FigurineMenu_080A46C0(void) {
|
||||
void FigurineMenu_ExitMenu(void) {
|
||||
SetBgmVolume(0x100);
|
||||
SoundReq(SFX_MENU_CANCEL);
|
||||
ClearRoomFlag(2);
|
||||
@@ -147,7 +147,7 @@ void FigurineMenu0_Type2(void) {
|
||||
gFigurineMenu.unk20++;
|
||||
switch (gFigurineMenu.unk20) {
|
||||
case 0x40:
|
||||
gFigurineMenu.duplicate = WriteBit(&gSave.stats.filler4[4], gFigurineMenu.figure_idx);
|
||||
gFigurineMenu.duplicate = WriteBit(gSave.figurines, gFigurineMenu.figure_idx);
|
||||
gMenu.column_idx = 1;
|
||||
default:
|
||||
bVar1 = gFigurineMenu.unk20 >> 2;
|
||||
@@ -175,32 +175,32 @@ void FigurineMenu0_Type2(void) {
|
||||
}
|
||||
}
|
||||
|
||||
void FigurineMenu0_Type3(void) {
|
||||
s32 uVar1;
|
||||
void FigurineMenu0_ViewFigurineAfterDrawing(void) {
|
||||
s32 infoY;
|
||||
s32 t;
|
||||
|
||||
uVar1 = gFigurineMenu.unk1f;
|
||||
infoY = gFigurineMenu.unk1f;
|
||||
switch (gInput.unk4) {
|
||||
case 2:
|
||||
case 8:
|
||||
FigurineMenu_080A46C0();
|
||||
case B_BUTTON:
|
||||
case START_BUTTON:
|
||||
FigurineMenu_ExitMenu();
|
||||
break;
|
||||
case 0x10:
|
||||
uVar1 += 8;
|
||||
case DPAD_RIGHT:
|
||||
infoY += 8;
|
||||
break;
|
||||
case 0x20:
|
||||
uVar1 -= 8;
|
||||
case DPAD_LEFT:
|
||||
infoY -= 8;
|
||||
break;
|
||||
}
|
||||
t = gFigurineMenu.unk1e;
|
||||
if (uVar1 < 0) {
|
||||
uVar1 = 0;
|
||||
if (infoY < 0) {
|
||||
infoY = 0;
|
||||
}
|
||||
if (t < uVar1) {
|
||||
uVar1 = t;
|
||||
if (t < infoY) {
|
||||
infoY = t;
|
||||
}
|
||||
gFigurineMenu.unk1f = uVar1;
|
||||
gScreen.bg1.yOffset = uVar1 - 0x70;
|
||||
gFigurineMenu.unk1f = infoY;
|
||||
gScreen.bg1.yOffset = infoY - 112;
|
||||
}
|
||||
|
||||
void FigurineMenu1_Type0(void) {
|
||||
@@ -211,85 +211,85 @@ void FigurineMenu1_Type0(void) {
|
||||
SetMenuType(1);
|
||||
}
|
||||
|
||||
void FigurineMenu1_Type1(void) {
|
||||
int r0, r1, r4, r5;
|
||||
void FigurineMenu1_ViewAllFigurines(void) {
|
||||
int prevFigurineIndex, maxFigurines, figurineIndex, infoY;
|
||||
|
||||
if (gFadeControl.active)
|
||||
return;
|
||||
|
||||
r5 = gFigurineMenu.unk1f;
|
||||
r4 = gFigurineMenu.figure_idx;
|
||||
infoY = gFigurineMenu.unk1f;
|
||||
figurineIndex = gFigurineMenu.figure_idx;
|
||||
switch (gInput.unk4) {
|
||||
case B_BUTTON:
|
||||
case START_BUTTON:
|
||||
SetMenuType(3);
|
||||
break;
|
||||
case L_BUTTON:
|
||||
r4 -= 5;
|
||||
figurineIndex -= 5;
|
||||
break;
|
||||
case R_BUTTON:
|
||||
r4 += 5;
|
||||
figurineIndex += 5;
|
||||
break;
|
||||
case DPAD_UP:
|
||||
r4--;
|
||||
figurineIndex--;
|
||||
break;
|
||||
case DPAD_DOWN:
|
||||
r4++;
|
||||
figurineIndex++;
|
||||
break;
|
||||
case DPAD_RIGHT:
|
||||
r5 += 8;
|
||||
infoY += 8;
|
||||
break;
|
||||
case DPAD_LEFT:
|
||||
r5 -= 8;
|
||||
infoY -= 8;
|
||||
break;
|
||||
case A_BUTTON:
|
||||
break;
|
||||
}
|
||||
r1 = !gSave.saw_staffroll ? 0x82 : 0x88;
|
||||
if (r4 <= 0) {
|
||||
r4 = 1;
|
||||
maxFigurines = !gSave.saw_staffroll ? 130 : 136;
|
||||
if (figurineIndex <= 0) {
|
||||
figurineIndex = 1;
|
||||
}
|
||||
if (r1 < r4) {
|
||||
r4 = r1;
|
||||
if (maxFigurines < figurineIndex) {
|
||||
figurineIndex = maxFigurines;
|
||||
}
|
||||
r0 = gFigurineMenu.figure_idx;
|
||||
if (r0 != r4) {
|
||||
gFigurineMenu.figure_idx = r4;
|
||||
prevFigurineIndex = gFigurineMenu.figure_idx;
|
||||
if (prevFigurineIndex != figurineIndex) {
|
||||
gFigurineMenu.figure_idx = figurineIndex;
|
||||
SoundReq(SFX_TEXTBOX_CHOICE);
|
||||
SetMenuType(2);
|
||||
r5 = 0;
|
||||
infoY = 0;
|
||||
}
|
||||
r0 = gFigurineMenu.unk1e;
|
||||
if (r5 < 0) {
|
||||
r5 = 0;
|
||||
prevFigurineIndex = gFigurineMenu.unk1e;
|
||||
if (infoY < 0) {
|
||||
infoY = 0;
|
||||
}
|
||||
if (r0 < r5) {
|
||||
r5 = r0;
|
||||
if (prevFigurineIndex < infoY) {
|
||||
infoY = prevFigurineIndex;
|
||||
}
|
||||
gFigurineMenu.unk1f = r5;
|
||||
gScreen.bg1.yOffset = r5 - 0x70;
|
||||
gFigurineMenu.unk1f = infoY;
|
||||
gScreen.bg1.yOffset = infoY - 112;
|
||||
}
|
||||
|
||||
void FigurineMenu1_Type2(void) {
|
||||
SetMenuType(1);
|
||||
}
|
||||
|
||||
void FigurineMenu1_Type3(void) {
|
||||
FigurineMenu_080A46C0();
|
||||
void FigurineMenu1_ExitMenu(void) {
|
||||
FigurineMenu_ExitMenu();
|
||||
}
|
||||
|
||||
u32 sub_080A4948(s32 param_1) {
|
||||
s32 iVar1;
|
||||
u32 uVar2;
|
||||
u32 FigurineMenu_isFigurineOwned(s32 figurineIndex) {
|
||||
s32 maxFigurines;
|
||||
u32 hasFigurine;
|
||||
|
||||
uVar2 = 0;
|
||||
iVar1 = !gSave.saw_staffroll ? 0x82 : 0x88;
|
||||
if ((0 < param_1) || (iVar1 >= param_1)) {
|
||||
if (ReadBit((u32*)&gSave.stats.filler4[4], param_1)) {
|
||||
uVar2 = 1;
|
||||
hasFigurine = 0;
|
||||
maxFigurines = !gSave.saw_staffroll ? 130 : 136;
|
||||
if ((0 < figurineIndex) || (maxFigurines >= figurineIndex)) {
|
||||
if (ReadBit(gSave.figurines, figurineIndex)) {
|
||||
hasFigurine = 1;
|
||||
}
|
||||
}
|
||||
return uVar2;
|
||||
return hasFigurine;
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
@@ -307,7 +307,7 @@ extern const Figurine gFigurines[];
|
||||
#define sub_080A4978_draw_constant 0x1fc
|
||||
#endif
|
||||
void FigurineMenu_080A4978(void) {
|
||||
int r0, r2, r4, r6;
|
||||
int r0, maxFigurines, r4, r6;
|
||||
|
||||
gOamCmd._4 = 0;
|
||||
gOamCmd._6 = 0;
|
||||
@@ -315,11 +315,11 @@ void FigurineMenu_080A4978(void) {
|
||||
gOamCmd.x = 0x9c;
|
||||
gOamCmd.y = 0x48;
|
||||
DrawDirect(sub_080A4978_draw_constant, 0);
|
||||
r2 = !gSave.saw_staffroll ? 0x82 : 0x88;
|
||||
maxFigurines = !gSave.saw_staffroll ? 130 : 136;
|
||||
if ((gMenu.column_idx & 2) != 0) {
|
||||
if (r2 >= (gFigurineMenu.figure_idx)) {
|
||||
if (maxFigurines >= (gFigurineMenu.figure_idx)) {
|
||||
gOamCmd.x = 0xe8;
|
||||
r0 = (0x5000 / r2) * (gFigurineMenu.figure_idx - 1);
|
||||
r0 = (0x5000 / maxFigurines) * (gFigurineMenu.figure_idx - 1);
|
||||
if (r0 < 0) {
|
||||
r0 += 0xff;
|
||||
}
|
||||
@@ -367,7 +367,7 @@ void FigurineMenu_080A4978(void) {
|
||||
}
|
||||
}
|
||||
if (gMenu.column_idx & 1) {
|
||||
if (sub_080A4948(gFigurineMenu.figure_idx)) {
|
||||
if (FigurineMenu_isFigurineOwned(gFigurineMenu.figure_idx)) {
|
||||
gOamCmd.x = 0x2c;
|
||||
gOamCmd.y = 0x48;
|
||||
gOamCmd._8 = 0xd4 << 7;
|
||||
@@ -447,7 +447,7 @@ extern void ShowTextBox(u32, const struct_0812816C*);
|
||||
|
||||
void sub_080A4BA0(u32 arg1, u32 arg2) {
|
||||
int r0, r5, r6;
|
||||
int tmp;
|
||||
int maxFigurines;
|
||||
|
||||
struct_0812816C s0;
|
||||
u8 buffer[0x30];
|
||||
@@ -465,13 +465,13 @@ void sub_080A4BA0(u32 arg1, u32 arg2) {
|
||||
s0.unk14 = arg2;
|
||||
}
|
||||
|
||||
tmp = !gSave.saw_staffroll ? 0x82 : 0x88;
|
||||
maxFigurines = !gSave.saw_staffroll ? 130 : 136;
|
||||
|
||||
if (r5 <= 0 || tmp < r5) {
|
||||
if (r5 <= 0 || maxFigurines < r5) {
|
||||
r5 = -1;
|
||||
} else {
|
||||
sub_08057044(r5, gUnk_020227E8, 0x303030);
|
||||
if (sub_080A4948(r5) == 0) {
|
||||
if (FigurineMenu_isFigurineOwned(r5) == 0) {
|
||||
r5 += 0x8000;
|
||||
} else {
|
||||
r5 += 0x800;
|
||||
@@ -526,18 +526,18 @@ const struct_0812816C gUnk_08128190 = {
|
||||
0x5u,
|
||||
};
|
||||
|
||||
u32 sub_080A4CBC(u32 param_1) {
|
||||
s32 iVar1;
|
||||
u32 sub_080A4CBC(u32 figurineIndex) {
|
||||
s32 ownsFigurine;
|
||||
const u16* psVar2;
|
||||
u32 uVar3;
|
||||
|
||||
if (gFigurineMenu.unk1a != param_1) {
|
||||
gFigurineMenu.unk1a = param_1;
|
||||
if (gFigurineMenu.unk1a != figurineIndex) {
|
||||
gFigurineMenu.unk1a = figurineIndex;
|
||||
MemClear(&gBG1Buffer, sizeof(gBG1Buffer));
|
||||
MemCopy(&gBG1Buffer, (void*)0x600e000, sizeof(gBG1Buffer));
|
||||
iVar1 = sub_080A4948(param_1);
|
||||
if (iVar1 != 0) {
|
||||
ShowTextBox(param_1 + 0x900, &gUnk_08128190);
|
||||
ownsFigurine = FigurineMenu_isFigurineOwned(figurineIndex);
|
||||
if (ownsFigurine != 0) {
|
||||
ShowTextBox(figurineIndex + 0x900, &gUnk_08128190);
|
||||
}
|
||||
gScreen.bg1.updated = 1;
|
||||
}
|
||||
|
||||
+37
-22
@@ -86,7 +86,7 @@ const ScreenTransitionData gUnk_08128024[] = {
|
||||
u32 sub_080A3B48(void) {
|
||||
u32 index;
|
||||
for (index = 0; index <= 0x12; index++) {
|
||||
if (gSave.kinstoneAmounts[index] == 0) {
|
||||
if (gSave.kinstones.amounts[index] == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -206,7 +206,7 @@ void KinstoneMenu_Type1(void) {
|
||||
case A_BUTTON:
|
||||
if (gMenu.column_idx == 2) {
|
||||
tmp3 = gGenericMenu.unk10.i / 0x10000;
|
||||
gGenericMenu.unk2a = gSave.kinstoneTypes[tmp3];
|
||||
gGenericMenu.unk2a = gSave.kinstones.types[tmp3];
|
||||
SetMenuType(3);
|
||||
}
|
||||
break;
|
||||
@@ -229,7 +229,7 @@ void KinstoneMenu_Type1(void) {
|
||||
void KinstoneMenu_Type2(void) {
|
||||
const KinstoneWorldEvent* ptr;
|
||||
if (gMenu.column_idx == 6) {
|
||||
gFuseInfo._0 = 6;
|
||||
gFuseInfo.fusionState = FUSION_STATE_6;
|
||||
ptr = &gKinstoneWorldEvents[gFuseInfo.kinstoneId];
|
||||
if (ptr->subtask != 0) {
|
||||
MenuFadeIn(ptr->subtask, ptr->worldEventId);
|
||||
@@ -237,7 +237,7 @@ void KinstoneMenu_Type2(void) {
|
||||
Subtask_Exit();
|
||||
}
|
||||
} else {
|
||||
gFuseInfo._0 = 5;
|
||||
gFuseInfo.fusionState = FUSION_STATE_5;
|
||||
Subtask_Exit();
|
||||
}
|
||||
}
|
||||
@@ -319,9 +319,9 @@ void KinstoneMenu_Type5(void) {
|
||||
|
||||
void KinstoneMenu_Type5_Overlay0(void) {
|
||||
gMenu.column_idx = 5;
|
||||
WriteBit(gSave.fusedKinstones, gFuseInfo.kinstoneId);
|
||||
if (++gSave.fusedKinstoneCount > 99) {
|
||||
gSave.didAllFusions = 1;
|
||||
WriteBit(gSave.kinstones.fusedKinstones, gFuseInfo.kinstoneId);
|
||||
if (++gSave.kinstones.fusedCount > 99) {
|
||||
gSave.kinstones.didAllFusions = 1;
|
||||
}
|
||||
KinstoneMenu_080A4468();
|
||||
SoundReq(SFX_TASK_COMPLETE);
|
||||
@@ -433,22 +433,36 @@ void KinstoneMenu_080A4080(void) {
|
||||
}
|
||||
}
|
||||
|
||||
NONMATCH("asm/non_matching/menu/kinstone_menu/KinstoneMenu_080A414C.inc", void KinstoneMenu_080A414C(void)) {
|
||||
void KinstoneMenu_080A414C(void) {
|
||||
s32 uVar1;
|
||||
s32 iVar2;
|
||||
s32 uVar3;
|
||||
s32 tmp1;
|
||||
s32 tmp2;
|
||||
s32 tmp3;
|
||||
s32 tmp4;
|
||||
const s16* ptr;
|
||||
OAMCommand* OamCmd;
|
||||
u16 tmp5;
|
||||
|
||||
s32 i;
|
||||
|
||||
gOamCmd._4 = 0;
|
||||
gOamCmd._6 = 0;
|
||||
uVar1 = gKinstoneMenu.unk10.HALF.LO / 0xb21;
|
||||
for (i = -3, uVar1 = -uVar1 - 0x45; i < 4; uVar1 += 0x17, i++) {
|
||||
gOamCmd.y = ((gSineTable[uVar1 & 0xff] * 0x44) / 0x100) + 0x4f;
|
||||
gOamCmd.x = ((gSineTable[(uVar1 + 0x40) & 0xff] * 0x42) / 0x100) - 0x10;
|
||||
tmp3 = (s32)(gKinstoneMenu.unk10.HALF_U.LO);
|
||||
tmp2 = 0xb21;
|
||||
tmp5 = (tmp3 / tmp2);
|
||||
i = -3;
|
||||
tmp1 = 0xff;
|
||||
OamCmd = &gOamCmd;
|
||||
ptr = gSineTable;
|
||||
uVar1 = -tmp5 - 0x45;
|
||||
while (i < 4) {
|
||||
OamCmd->y = ((ptr[uVar1 & tmp1] * 0x44) / 0x100) + 0x4f;
|
||||
OamCmd->x = ((ptr[((uVar1 & tmp1) + 0x40) & tmp1] * 0x42) / 0x100) - 0x10;
|
||||
iVar2 = gKinstoneMenu.unk10.WORD / 0x10000 + i;
|
||||
if (iVar2 >= 0) {
|
||||
uVar3 = gSave.kinstoneAmounts[iVar2];
|
||||
uVar3 = gSave.kinstones.amounts[iVar2];
|
||||
if (i == 0) {
|
||||
switch (gMenu.column_idx) {
|
||||
case 3:
|
||||
@@ -459,13 +473,14 @@ NONMATCH("asm/non_matching/menu/kinstone_menu/KinstoneMenu_080A414C.inc", void K
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (0 < uVar3) {
|
||||
sub_080A42E0(gSave.kinstoneTypes[iVar2], uVar3);
|
||||
if (uVar3 > 0) {
|
||||
sub_080A42E0(gSave.kinstones.types[iVar2], uVar3);
|
||||
}
|
||||
}
|
||||
uVar1 += 0x17;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
void KinstoneMenu_080A422C(void) {
|
||||
static const s8 gUnk_08128120[] = {
|
||||
@@ -625,9 +640,9 @@ u32 KinstoneMenu_080A4494(void) {
|
||||
psVar1->unk1 = 0;
|
||||
sub_080A44E0(psVar1, gSave.name, 0x80);
|
||||
#if NON_MATCHING
|
||||
ret = sub_080A44E0(psVar1, GetFuserId(gFuseInfo.ent) >> 0x20, 0xa0);
|
||||
ret = sub_080A44E0(psVar1, GetFuserId(gFuseInfo.entity) >> 0x20, 0xa0);
|
||||
#else
|
||||
GetFuserId(gFuseInfo.ent);
|
||||
GetFuserId(gFuseInfo.entity);
|
||||
asm("" : "=r"(r1));
|
||||
ret = sub_080A44E0(psVar1, r1, 0xa0);
|
||||
#endif
|
||||
@@ -652,13 +667,13 @@ u32 sub_080A44E0(WStruct* param_1, u8* param_2, u32 param_3) {
|
||||
void KinstoneMenu_080A4528(void) {
|
||||
Entity* entity;
|
||||
|
||||
if (gFuseInfo.ent->kind == NPC) {
|
||||
entity = CreateNPC(gFuseInfo.ent->id, gFuseInfo.ent->type, gFuseInfo.ent->type2);
|
||||
if (gFuseInfo.entity->kind == NPC) {
|
||||
entity = CreateNPC(gFuseInfo.entity->id, gFuseInfo.entity->type, gFuseInfo.entity->type2);
|
||||
} else {
|
||||
if (gFuseInfo.ent->kind != ENEMY) {
|
||||
if (gFuseInfo.entity->kind != ENEMY) {
|
||||
return;
|
||||
}
|
||||
entity = CreateEnemy(gFuseInfo.ent->id, gFuseInfo.ent->type);
|
||||
entity = CreateEnemy(gFuseInfo.entity->id, gFuseInfo.entity->type);
|
||||
}
|
||||
if (entity != NULL) {
|
||||
if (entity->kind == NPC) {
|
||||
|
||||
+36
-31
@@ -396,7 +396,7 @@ void PauseMenu_ItemMenu_Update(void) {
|
||||
}
|
||||
case B_BUTTON:
|
||||
if (gPauseMenu.items[menuSlot] != 0) {
|
||||
u32 slot = !!(gInput.newKeys ^ 1);
|
||||
u32 slot = !!(gInput.newKeys ^ A_BUTTON);
|
||||
ForceEquipItem(gPauseMenu.items[menuSlot], slot);
|
||||
SoundReq(SFX_TEXTBOX_SELECT);
|
||||
}
|
||||
@@ -429,7 +429,7 @@ void PauseMenu_ItemMenu_Update(void) {
|
||||
case MENU_SLOT_BOTTLE2:
|
||||
case MENU_SLOT_BOTTLE3:
|
||||
if (item != 0) {
|
||||
item = gSave.saved_status.field_0x24[item - 6];
|
||||
item = gSave.stats.bottles[item - ITEM_BOTTLE1];
|
||||
}
|
||||
break;
|
||||
case MENU_SLOT_SAVE_BUTTON:
|
||||
@@ -663,7 +663,7 @@ void sub_080A5594(void) {
|
||||
iVar5 = 0;
|
||||
if (GetInventoryValue(ITEM_KINSTONE_BAG) != 0) {
|
||||
for (i = 0; i < 0x13; i++) {
|
||||
iVar5 += gSave.kinstoneAmounts[i];
|
||||
iVar5 += gSave.kinstones.amounts[i];
|
||||
}
|
||||
|
||||
if (iVar5 >= 0x50) {
|
||||
@@ -902,37 +902,37 @@ void sub_080A59AC(void) {
|
||||
}
|
||||
|
||||
void sub_080A59C8(void) {
|
||||
u32 uVar2;
|
||||
u32 bVar3;
|
||||
u32 cursor_position;
|
||||
u32 select_option;
|
||||
|
||||
if (!sub_080A51F4()) {
|
||||
return;
|
||||
}
|
||||
uVar2 = gMenu.field_0x3;
|
||||
bVar3 = FALSE;
|
||||
cursor_position = gMenu.field_0x3;
|
||||
select_option = FALSE;
|
||||
|
||||
switch (gInput.newKeys) {
|
||||
case DPAD_UP:
|
||||
uVar2 = 0;
|
||||
cursor_position = 0;
|
||||
break;
|
||||
case B_BUTTON:
|
||||
if (gMenu.field_0x3 == 0) {
|
||||
uVar2 = 1;
|
||||
cursor_position = 1;
|
||||
} else {
|
||||
bVar3 = TRUE;
|
||||
select_option = TRUE;
|
||||
}
|
||||
break;
|
||||
case DPAD_DOWN:
|
||||
uVar2 = 1;
|
||||
cursor_position = 1;
|
||||
break;
|
||||
case A_BUTTON:
|
||||
bVar3 = TRUE;
|
||||
select_option = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
if (bVar3) {
|
||||
if (select_option) {
|
||||
gMenu.transitionTimer = 255;
|
||||
if (uVar2 == 0) {
|
||||
if (cursor_position == 0) {
|
||||
CreateDialogBox(8, 0);
|
||||
SetMenuType(2);
|
||||
SoundReq(SFX_TEXTBOX_SELECT);
|
||||
@@ -940,9 +940,9 @@ void sub_080A59C8(void) {
|
||||
SetMenuType(3);
|
||||
SoundReq(SFX_MENU_CANCEL);
|
||||
}
|
||||
} else if (gMenu.field_0x3 != uVar2) {
|
||||
gMenu.field_0x3 = uVar2;
|
||||
SetPopupState(0, uVar2);
|
||||
} else if (gMenu.field_0x3 != cursor_position) {
|
||||
gMenu.field_0x3 = cursor_position;
|
||||
SetPopupState(0, cursor_position);
|
||||
SoundReq(SFX_TEXTBOX_CHOICE);
|
||||
}
|
||||
}
|
||||
@@ -1232,7 +1232,7 @@ bool32 sub_080A5F24(void) {
|
||||
return result;
|
||||
}
|
||||
|
||||
void sub_080A5F48(u32 param_1, u32 param_2) {
|
||||
void sub_080A5F48(Item item, u32 param_2) {
|
||||
extern u32 gSprite_082E68F4[];
|
||||
u32 ammoCount;
|
||||
u32 tensDigit;
|
||||
@@ -1242,19 +1242,24 @@ void sub_080A5F48(u32 param_1, u32 param_2) {
|
||||
u32 temp3;
|
||||
register u32 rem asm("r1");
|
||||
|
||||
switch (param_1) {
|
||||
case 0x1c ... 0x1f:
|
||||
param_1 = (u32)gSave.saved_status.field_0x24[param_1 - 6];
|
||||
switch (item) {
|
||||
case ITEM_BOTTLE1:
|
||||
case ITEM_BOTTLE2:
|
||||
case ITEM_BOTTLE3:
|
||||
case ITEM_BOTTLE4:
|
||||
item = gSave.stats.bottles[item - ITEM_BOTTLE1];
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
temp1 = param_2 * 0x20 + 0x6010000;
|
||||
temp3 = gSpriteAnimations_322[param_1]->index;
|
||||
temp3 = gSpriteAnimations_322[item]->index;
|
||||
temp2 = &gMoreSpritePtrs[1][temp3 * 2];
|
||||
DmaCopy32(3, &gMoreSpritePtrs[2][temp2[1] * 0x10], temp1, 0x40 * 4);
|
||||
ammoCount = -1;
|
||||
|
||||
switch (param_1) {
|
||||
switch (item) {
|
||||
case 7:
|
||||
case 8:
|
||||
ammoCount = gSave.stats.bombCount;
|
||||
@@ -1267,12 +1272,12 @@ void sub_080A5F48(u32 param_1, u32 param_2) {
|
||||
|
||||
if (-1 < (int)ammoCount) {
|
||||
tensDigit = Div(ammoCount, 10);
|
||||
param_1 = rem;
|
||||
item = rem;
|
||||
if ((int)tensDigit >= 10) {
|
||||
tensDigit = 9;
|
||||
}
|
||||
DmaCopy32(3, gUnk_085C4620 + tensDigit * 0x8, temp1, 0x8 * 4);
|
||||
DmaCopy32(3, gUnk_085C4620 + (param_1 + 10) * 0x8, temp1 + 0x20, 0x8 * 4);
|
||||
DmaCopy32(3, gUnk_085C4620 + (item + 10) * 0x8, temp1 + 0x20, 0x8 * 4);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1300,11 +1305,11 @@ void sub_080A6044(void) {
|
||||
gOamCmd._6 = 0;
|
||||
uVar4 = 0;
|
||||
uVar2 = 0;
|
||||
uVar1 = gSave.kinstoneTypes[0];
|
||||
uVar1 = gSave.kinstones.types[0];
|
||||
while (uVar1 != 0) {
|
||||
gOamCmd.x = (uVar4 & 3) * 0x30 + 0x2b;
|
||||
gOamCmd.y = (uVar4 >> 2) * 0x24 + 0x34;
|
||||
uVar3 = gSave.kinstoneAmounts[uVar2];
|
||||
uVar3 = gSave.kinstones.amounts[uVar2];
|
||||
gMenu.column_idx = 0;
|
||||
sub_080A42E0(uVar1, uVar3);
|
||||
uVar4++;
|
||||
@@ -1315,7 +1320,7 @@ void sub_080A6044(void) {
|
||||
if (0x11 < uVar2) {
|
||||
return;
|
||||
}
|
||||
uVar1 = gSave.kinstoneTypes[uVar2];
|
||||
uVar1 = gSave.kinstones.types[uVar2];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1431,7 +1436,7 @@ void sub_080A62E0(void) {
|
||||
|
||||
switch (gInput.newKeys) {
|
||||
case A_BUTTON:
|
||||
if ((gSave.windcrests & (1 << gMenu.field_0x3)) != 0) {
|
||||
if (IS_BIT_SET(gSave.windcrests, gMenu.field_0x3)) {
|
||||
SoundReq(SFX_TEXTBOX_SELECT);
|
||||
sub_080A4E84(6);
|
||||
windcrest = -1;
|
||||
@@ -1495,7 +1500,7 @@ void sub_080A6438(void) {
|
||||
gOamCmd._4 = 0x400;
|
||||
gOamCmd._6 = 0;
|
||||
gOamCmd._8 = 0;
|
||||
uVar1 = gSave.field_0x20 & gGenericMenu.unk10.h[0];
|
||||
uVar1 = gSave.map_hints & gGenericMenu.unk10.h[0];
|
||||
for (pcVar2 = gUnk_08128F58, uVar3 = 0; pcVar2->frameIndex != 0; uVar3++, pcVar2++) {
|
||||
if ((1 << uVar3 & uVar1) != 0) {
|
||||
gOamCmd.x = pcVar2->unk1;
|
||||
@@ -1512,7 +1517,7 @@ void sub_080A6498(void) {
|
||||
gOamCmd._6 = 0;
|
||||
gOamCmd._8 = 0;
|
||||
for (i = 0; i <= 0x10; i++) {
|
||||
if ((gSave.windcrests & (1 << i)) == 0) {
|
||||
if (!IS_BIT_SET(gSave.windcrests, i)) {
|
||||
gUnk_08128DE8_struct* ptr = &gUnk_08128DE8[i];
|
||||
gOamCmd.x = ptr->unk6;
|
||||
gOamCmd.y = ptr->unk7;
|
||||
|
||||
@@ -196,7 +196,7 @@ void sub_080A68D4(void) {
|
||||
sub_080A698C(gRoomTransition.player_status.overworld_map_x, gRoomTransition.player_status.overworld_map_y,
|
||||
DRAW_DIRECT_SPRITE_INDEX, iVar6 + 0x100);
|
||||
uVar1 = sub_080A6F40();
|
||||
uVar1 &= gSave.field_0x20;
|
||||
uVar1 &= gSave.map_hints;
|
||||
|
||||
for (pcVar4 = gUnk_08128F58, i = 0; pcVar4->frameIndex != 0; i++, pcVar4++) {
|
||||
if (((1 << i) & uVar1) != 0) {
|
||||
|
||||
Reference in New Issue
Block a user