mirror of
https://github.com/zeldaret/tmc
synced 2026-05-25 23:35:29 -04:00
97 lines
2.5 KiB
C
97 lines
2.5 KiB
C
/**
|
|
* @file subtaskLocalMapHint.c
|
|
* @ingroup Subtasks
|
|
*
|
|
* @brief Local Map Hint Subtask
|
|
*/
|
|
#include "menu.h"
|
|
#include "subtask.h"
|
|
#include "kinstone.h"
|
|
#include "functions.h"
|
|
#include "screen.h"
|
|
#include "sound.h"
|
|
#include "common.h"
|
|
|
|
void Subtask_LocalMapHint() {
|
|
extern void (*const gUnk_08128F1C[])(void);
|
|
const struct_gUnk_08128E94* ptr;
|
|
FlushSprites();
|
|
gUnk_08128F1C[gMenu.menuType]();
|
|
ptr = &gUnk_08128E94[gMenu.field_0x3];
|
|
gScreen.bg1.yOffset = -ptr->unk5;
|
|
gScreen.bg2.yOffset = gMenu.field_0xa - (s8)ptr->unk6;
|
|
CopyOAM();
|
|
}
|
|
|
|
void sub_080A6B04(void) {
|
|
u32 bVar1;
|
|
u32 uVar2;
|
|
u32 uVar3;
|
|
u32 uVar4;
|
|
int uVar6;
|
|
u32 uVar7;
|
|
const KinstoneWorldEvent* ptr;
|
|
const WorldEvent* ptr2;
|
|
const struct_gUnk_08128E94* ptr3;
|
|
|
|
sub_080A4D34();
|
|
sub_080A4DB8(6);
|
|
ptr = &gKinstoneWorldEvents[gFuseInfo.kinstoneId];
|
|
ptr2 = &gWorldEvents[ptr->worldEventId];
|
|
bVar1 = ptr->mapMarkerIcon;
|
|
uVar3 = ptr2->_c;
|
|
uVar4 = ptr2->_e;
|
|
uVar2 = GetOverworldLocation(uVar3, uVar4)->windcrestId;
|
|
gMenu.field_0x3 = uVar2;
|
|
gGenericMenu.unk2b = 1;
|
|
sub_080A67C4(uVar2);
|
|
ShowAreaName(uVar2, 2);
|
|
SetColor(0, 0x475f);
|
|
SetColor(0x5f, 0x475f);
|
|
MemFill16(0x5001, &gBG3Buffer, sizeof(gBG3Buffer));
|
|
if ((gPlayerState.flags & PL_NO_CAP) != 0) {
|
|
uVar7 = 101;
|
|
} else {
|
|
uVar7 = 100;
|
|
}
|
|
sub_080A698C(gRoomTransition.player_status.overworld_map_x, gRoomTransition.player_status.overworld_map_y,
|
|
DRAW_DIRECT_SPRITE_INDEX, uVar7 + 0x100);
|
|
sub_080A698C(uVar3, uVar4, DRAW_DIRECT_SPRITE_INDEX, bVar1 + 100);
|
|
uVar4 = sub_080A69E0(uVar3, uVar4) >> 0x10;
|
|
ptr3 = &gUnk_08128E94[gMenu.field_0x3];
|
|
gMenu.field_0xa = 0;
|
|
if (ptr3->unk2 != 0) {
|
|
uVar6 = uVar4 - 0x3c;
|
|
if (uVar6 > 0) {
|
|
if (ptr3->unk2 < uVar6) {
|
|
uVar6 = ptr3->unk2;
|
|
}
|
|
gMenu.field_0xa = uVar6;
|
|
}
|
|
}
|
|
gMenu.transitionTimer = 30;
|
|
SetMenuType(1);
|
|
SetFade(FADE_INSTANT, 8);
|
|
}
|
|
|
|
void sub_080A6C1C(void) {
|
|
if (!gFadeControl.active) {
|
|
switch (gMenu.transitionTimer) {
|
|
case 0:
|
|
sub_080A66D0();
|
|
switch (gInput.newKeys) {
|
|
case A_BUTTON:
|
|
case B_BUTTON:
|
|
case START_BUTTON:
|
|
Subtask_Exit();
|
|
break;
|
|
}
|
|
return;
|
|
case 1:
|
|
SoundReq(SFX_103);
|
|
break;
|
|
}
|
|
gMenu.transitionTimer--;
|
|
}
|
|
}
|