mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-01 08:16:03 -05:00
Split+data hints_menu
This commit is contained in:
parent
c6bc80e6d8
commit
b888afb5d9
|
|
@ -99,59 +99,4 @@ gWindowBGRedString: @ 80DC08C
|
|||
|
||||
.global gWindowBGGreenString
|
||||
gWindowBGGreenString: @ 80DC090
|
||||
.string "Green\0"
|
||||
|
||||
@ hints_menu #1
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80DC0A0
|
||||
gUnknown_80DC0A0: @ 80DC0A0
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global Data_80DC0B8
|
||||
Data_80DC0B8:
|
||||
.byte 0x01, 0x00, 0x08, 0x00
|
||||
|
||||
.global gUnknown_80DC0BC
|
||||
gUnknown_80DC0BC: @ 80DC0BC
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x06, 0x00, 0x00, 0x00
|
||||
.byte 0x02, 0x00, 0x02, 0x00
|
||||
.byte 0x18, 0x00, 0x0E, 0x00
|
||||
.byte 0x0E, 0x00, 0x00, 0x00
|
||||
|
||||
.4byte Data_80DC0B8
|
||||
|
||||
.global gUnknown_80DC0D4
|
||||
gUnknown_80DC0D4: @ 80DC0D4
|
||||
.string "Hints\0"
|
||||
|
||||
@ hints_menu #2
|
||||
.align 2,0
|
||||
.string "pksdir0\0"
|
||||
.align 2,0
|
||||
|
||||
.global gUnknown_80DC0E4
|
||||
gUnknown_80DC0E4: @ 80DC0E4
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x03, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.global gUnknown_80DC0FC
|
||||
gUnknown_80DC0FC: @ 80DC0FC
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x06, 0x00, 0x00, 0x00
|
||||
.byte 0x02, 0x00, 0x02, 0x00
|
||||
.byte 0x1a, 0x00, 0x10, 0x00
|
||||
.byte 0x10, 0x00, 0x00, 0x00
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.string "Green\0"
|
||||
23
include/hints_menu1.h
Normal file
23
include/hints_menu1.h
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
#ifndef GUARD_HINTS_MENU1_H
|
||||
#define GUARD_HINTS_MENU1_H
|
||||
|
||||
#include "input.h"
|
||||
#include "structs/str_text.h"
|
||||
|
||||
// size: 0x9C
|
||||
struct unkStruct_203B264
|
||||
{
|
||||
MenuInputStruct input;
|
||||
u32 unk34;
|
||||
UnkTextStruct2 *unk38;
|
||||
UnkTextStruct2 unk3C[4];
|
||||
};
|
||||
|
||||
void CreateHintSelectionScreen(bool8 cursorSprite);
|
||||
s32 GetChosenHintIndex(void);
|
||||
|
||||
bool8 sub_801E3F0(u32);
|
||||
u32 sub_801E474(bool8);
|
||||
void sub_801E54C(void);
|
||||
|
||||
#endif // GUARD_HINTS_MENU1_H
|
||||
21
include/hints_menu2.h
Normal file
21
include/hints_menu2.h
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
#ifndef GUARD_HINTS_MENU2_H
|
||||
#define GUARD_HINTS_MENU2_H
|
||||
|
||||
#include "input.h"
|
||||
#include "structs/str_text.h"
|
||||
|
||||
// size: 0xA0
|
||||
struct unkStruct_203B268
|
||||
{
|
||||
MenuInputStruct input;
|
||||
u32 unk34;
|
||||
UnkTextStruct2 *unk38;
|
||||
UnkTextStruct2 unk3C[4];
|
||||
u8 unk9C[4];
|
||||
};
|
||||
|
||||
bool8 CreateHintDisplayScreen(u32 index);
|
||||
void DestroyHintDisplayScreen(void);
|
||||
u32 HandleHintDisplayScreenInput(void);
|
||||
|
||||
#endif // GUARD_HINTS_MENU2_H
|
||||
|
|
@ -113,7 +113,8 @@ SECTIONS {
|
|||
src/code_801D014.o(.text);
|
||||
src/code_801D9E4.o(.text);
|
||||
src/options_menu.o(.text);
|
||||
src/hints_menu.o(.text);
|
||||
src/hints_menu1.o(.text);
|
||||
src/hints_menu2.o(.text);
|
||||
src/gulpin_shop.o(.text);
|
||||
src/code_801EE10.o(.text);
|
||||
asm/code_801EE10.o(.text);
|
||||
|
|
@ -431,6 +432,8 @@ SECTIONS {
|
|||
src/code_801D014.o(.rodata);
|
||||
src/code_801D9E4.o(.rodata);
|
||||
data/data_80DBD98.o(.rodata);
|
||||
src/hints_menu1.o(.rodata);
|
||||
src/hints_menu2.o(.rodata);
|
||||
src/gulpin_shop.o(.rodata);
|
||||
data/data_80DC240.o(.rodata);
|
||||
src/gulpin_shop_801FB50.o(.rodata);
|
||||
|
|
|
|||
22
src/data/hints_menu1.h
Normal file
22
src/data/hints_menu1.h
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
ALIGNED(4) static const u8 sFill[] = _("pksdir0");
|
||||
|
||||
static const UnkTextStruct2 sUnknown_80DC0A0 = {
|
||||
0, 0, 0, 0,
|
||||
3,
|
||||
0, 0,
|
||||
0, 0,
|
||||
0, 0,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const u8 sUnknown_80DC0B8[] = {1, 0, 8, 0};
|
||||
static const UnkTextStruct2 sUnknown_80DC0BC = {
|
||||
0, 0, 0, 0,
|
||||
6,
|
||||
2, 2,
|
||||
24, 14,
|
||||
14, 0,
|
||||
sUnknown_80DC0B8
|
||||
};
|
||||
|
||||
ALIGNED(4) static const u8 sHints[] = _("Hints");
|
||||
19
src/data/hints_menu2.h
Normal file
19
src/data/hints_menu2.h
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
ALIGNED(4) static const u8 sFill[] = _("pksdir0");
|
||||
|
||||
static const UnkTextStruct2 sUnknown_80DC0E4 = {
|
||||
0, 0, 0, 0,
|
||||
3,
|
||||
0, 0,
|
||||
0, 0,
|
||||
0, 0,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const UnkTextStruct2 sUnknown_80DC0FC = {
|
||||
0, 0, 0, 0,
|
||||
6,
|
||||
2, 2,
|
||||
26, 16,
|
||||
16, 0,
|
||||
NULL
|
||||
};
|
||||
259
src/hints_menu.c
259
src/hints_menu.c
|
|
@ -1,259 +0,0 @@
|
|||
#include "global.h"
|
||||
#include "code_80118A4.h"
|
||||
#include "common_strings.h"
|
||||
#include "memory.h"
|
||||
#include "menu_input.h"
|
||||
#include "text1.h"
|
||||
#include "text2.h"
|
||||
#include "input.h"
|
||||
|
||||
struct unkStruct_203B268
|
||||
{
|
||||
// size: 0xA0
|
||||
MenuInputStruct input;
|
||||
u32 unk34;
|
||||
UnkTextStruct2 *unk38;
|
||||
UnkTextStruct2 unk3C[4];
|
||||
u8 unk9C[4];
|
||||
};
|
||||
|
||||
struct unkStruct_203B264
|
||||
{
|
||||
// size: 0x9C
|
||||
MenuInputStruct input;
|
||||
u32 unk34;
|
||||
UnkTextStruct2 *unk38;
|
||||
UnkTextStruct2 unk3C[4];
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B264 *gUnknown_203B264;
|
||||
|
||||
extern struct unkStruct_203B268 *gUnknown_203B268;
|
||||
|
||||
extern UnkTextStruct2 gUnknown_80DC0A0;
|
||||
extern UnkTextStruct2 gUnknown_80DC0BC;
|
||||
extern UnkTextStruct2 gUnknown_80DC0E4;
|
||||
extern UnkTextStruct2 gUnknown_80DC0FC;
|
||||
extern u8 gUnknown_80DC0D4[MAX_HINTS];
|
||||
|
||||
extern void sub_801E714(void);
|
||||
extern void sub_801E714(void);
|
||||
extern void sub_801E76C(void);
|
||||
extern void DisplayChosenHint(void);
|
||||
void DrawHintSelectionMenu(void);
|
||||
void sub_801E594(void);
|
||||
|
||||
u32 sub_801E3F0(u32 r0)
|
||||
{
|
||||
if(gUnknown_203B264 == NULL)
|
||||
gUnknown_203B264 = MemoryAlloc(sizeof(struct unkStruct_203B264), 8);
|
||||
gUnknown_203B264->unk34 = r0;
|
||||
gUnknown_203B264->unk38 = &gUnknown_203B264->unk3C[r0];
|
||||
sub_8006518(gUnknown_203B264->unk3C);
|
||||
gUnknown_203B264->unk3C[gUnknown_203B264->unk34] = gUnknown_80DC0BC;
|
||||
sub_8012D08(gUnknown_203B264->unk38, 0xA);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B264->unk3C, TRUE, TRUE);
|
||||
sub_8013818(&gUnknown_203B264->input, 0x5, 0xA, r0);
|
||||
sub_801E594();
|
||||
DrawHintSelectionMenu();
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_801E474(u8 r0)
|
||||
{
|
||||
if(r0 == 0)
|
||||
{
|
||||
sub_8013660(&gUnknown_203B264->input);
|
||||
return 0;
|
||||
}
|
||||
switch(GetKeyPress(&gUnknown_203B264->input))
|
||||
{
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
case 4:
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
default:
|
||||
if(sub_80138B8(&gUnknown_203B264->input, 1))
|
||||
{
|
||||
sub_801E594();
|
||||
DrawHintSelectionMenu();
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
s32 GetChosenHintIndex(void)
|
||||
{
|
||||
return (gUnknown_203B264->input.unk1E * gUnknown_203B264->input.unk1C) + gUnknown_203B264->input.menuIndex;
|
||||
}
|
||||
|
||||
void CreateHintSelectionScreen(u8 r0)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B264->unk3C, FALSE, FALSE);
|
||||
sub_8013984(&gUnknown_203B264->input);
|
||||
sub_801E594();
|
||||
DrawHintSelectionMenu();
|
||||
if(r0)
|
||||
AddMenuCursorSprite(&gUnknown_203B264->input);
|
||||
}
|
||||
|
||||
void sub_801E54C(void)
|
||||
{
|
||||
if(gUnknown_203B264 != NULL)
|
||||
{
|
||||
gUnknown_203B264->unk3C[gUnknown_203B264->unk34] = gUnknown_80DC0A0;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B264->unk3C, TRUE, TRUE);
|
||||
MemoryFree(gUnknown_203B264);
|
||||
gUnknown_203B264 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
NAKED // sub_80095E4 memes
|
||||
void sub_801E594(void)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4,lr}\n"
|
||||
"\tldr r4, _0801E5E4\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tmovs r1, 0x1A\n"
|
||||
"\tldrsh r0, [r0, r1]\n"
|
||||
"\tmovs r1, 0xC\n"
|
||||
"\tbl sub_80095E4\n"
|
||||
"\tadds r0, 0x2\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tldr r2, [r4]\n"
|
||||
"\tldr r3, [r2, 0x34]\n"
|
||||
"\tlsls r1, r3, 1\n"
|
||||
"\tadds r1, r3\n"
|
||||
"\tlsls r1, 3\n"
|
||||
"\tadds r1, r2, r1\n"
|
||||
"\tadds r1, 0x4A\n"
|
||||
"\tasrs r3, r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tldr r1, [r2, 0x34]\n"
|
||||
"\tlsls r0, r1, 1\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tlsls r0, 3\n"
|
||||
"\tadds r2, r0\n"
|
||||
"\tadds r3, 0x2\n"
|
||||
"\tadds r2, 0x4C\n"
|
||||
"\tstrh r3, [r2]\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x3C\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tbl sub_800641C\n"
|
||||
"\tpop {r4}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0801E5E4: .4byte gUnknown_203B264");
|
||||
}
|
||||
|
||||
void DrawHintSelectionMenu(void)
|
||||
{
|
||||
s32 hintIndex;
|
||||
s32 y;
|
||||
|
||||
sub_8008C54(gUnknown_203B264->unk34);
|
||||
sub_80073B8(gUnknown_203B264->unk34);
|
||||
xxx_call_draw_string(16, 0, gUnknown_80DC0D4, gUnknown_203B264->unk34, 0);
|
||||
for(hintIndex = 0; hintIndex < MAX_HINTS; hintIndex++)
|
||||
{
|
||||
y = sub_8013800(&gUnknown_203B264->input, hintIndex);
|
||||
xxx_call_draw_string(10, y, gCommonHints[hintIndex].heading, gUnknown_203B264->unk34, 0);
|
||||
}
|
||||
sub_80073E0(gUnknown_203B264->unk34);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// THIS IS A NEW FILE
|
||||
|
||||
|
||||
|
||||
|
||||
u32 CreateHintDisplayScreen(u32 index)
|
||||
{
|
||||
gUnknown_203B268 = MemoryAlloc(sizeof(struct unkStruct_203B268), 8);
|
||||
gUnknown_203B268->unk34 = 0;
|
||||
gUnknown_203B268->unk38 = gUnknown_203B268->unk3C;
|
||||
sub_8006518(gUnknown_203B268->unk3C);
|
||||
gUnknown_203B268->unk3C[gUnknown_203B268->unk34] = gUnknown_80DC0FC;
|
||||
gUnknown_203B268->unk38->unk14 = gUnknown_203B268->unk9C;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B268->unk3C, TRUE, TRUE);
|
||||
sub_8013818(&gUnknown_203B268->input, 5, 1, gUnknown_203B268->unk34);
|
||||
gUnknown_203B268->input.unk1E = index;
|
||||
sub_801E714();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 HandleHintDisplayScreenInput(void)
|
||||
{
|
||||
switch(GetKeyPress(&gUnknown_203B268->input))
|
||||
{
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
default:
|
||||
if(sub_8013938(&gUnknown_203B268->input)){
|
||||
sub_801E714();
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801E714(void)
|
||||
{
|
||||
sub_801E76C();
|
||||
DisplayChosenHint();
|
||||
}
|
||||
|
||||
void DestroyHintDisplayScreen(void)
|
||||
{
|
||||
if(gUnknown_203B268 != NULL)
|
||||
{
|
||||
gUnknown_203B268->unk3C[gUnknown_203B268->unk34] = gUnknown_80DC0E4;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B268->unk3C, TRUE, TRUE);
|
||||
MemoryFree(gUnknown_203B268);
|
||||
gUnknown_203B268 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_801E76C(void)
|
||||
{
|
||||
gUnknown_203B268->unk9C[0] = gUnknown_203B268->input.unk20;
|
||||
gUnknown_203B268->unk9C[1] = gUnknown_203B268->input.unk1E;
|
||||
gUnknown_203B268->unk9C[2] = 0xF;
|
||||
gUnknown_203B268->unk9C[3] = 0;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B268->unk3C, TRUE, TRUE);
|
||||
}
|
||||
|
||||
void DisplayChosenHint(void)
|
||||
{
|
||||
sub_80073B8(gUnknown_203B268->unk34);
|
||||
xxx_call_draw_string((gUnknown_203B268->input.unk1E << 3) + 0x10, 0, gCommonHints[gUnknown_203B268->input.unk1E].heading, gUnknown_203B268->unk34, 0);
|
||||
xxx_call_draw_string(0xA, 0x14, gCommonHints[gUnknown_203B268->input.unk1E].body, gUnknown_203B268->unk34, 0);
|
||||
sub_80073E0(gUnknown_203B268->unk34);
|
||||
}
|
||||
153
src/hints_menu1.c
Normal file
153
src/hints_menu1.c
Normal file
|
|
@ -0,0 +1,153 @@
|
|||
#include "global.h"
|
||||
#include "code_80118A4.h"
|
||||
#include "common_strings.h"
|
||||
#include "hints_menu1.h"
|
||||
#include "memory.h"
|
||||
#include "menu_input.h"
|
||||
#include "text1.h"
|
||||
#include "text2.h"
|
||||
|
||||
static EWRAM_DATA_2 struct unkStruct_203B264 *sUnknown_203B264 = {0};
|
||||
|
||||
#include "data/hints_menu1.h"
|
||||
|
||||
static void DrawHintSelectionMenu(void);
|
||||
|
||||
static void sub_801E594(void);
|
||||
|
||||
bool8 sub_801E3F0(u32 a0)
|
||||
{
|
||||
if (sUnknown_203B264 == NULL)
|
||||
sUnknown_203B264 = MemoryAlloc(sizeof(struct unkStruct_203B264), 8);
|
||||
|
||||
sUnknown_203B264->unk34 = a0;
|
||||
sUnknown_203B264->unk38 = &sUnknown_203B264->unk3C[a0];
|
||||
sub_8006518(sUnknown_203B264->unk3C);
|
||||
sUnknown_203B264->unk3C[sUnknown_203B264->unk34] = sUnknown_80DC0BC;
|
||||
sub_8012D08(sUnknown_203B264->unk38, 10);
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sUnknown_203B264->unk3C, TRUE, TRUE);
|
||||
sub_8013818(&sUnknown_203B264->input, 5, 10, a0);
|
||||
sub_801E594();
|
||||
DrawHintSelectionMenu();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 sub_801E474(bool8 a0)
|
||||
{
|
||||
if (a0 == 0) {
|
||||
sub_8013660(&sUnknown_203B264->input);
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch(GetKeyPress(&sUnknown_203B264->input))
|
||||
{
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
case 4:
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
default:
|
||||
if(sub_80138B8(&sUnknown_203B264->input, 1))
|
||||
{
|
||||
sub_801E594();
|
||||
DrawHintSelectionMenu();
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
s32 GetChosenHintIndex(void)
|
||||
{
|
||||
return (sUnknown_203B264->input.unk1E * sUnknown_203B264->input.unk1C) + sUnknown_203B264->input.menuIndex;
|
||||
}
|
||||
|
||||
void CreateHintSelectionScreen(bool8 cursorSprite)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sUnknown_203B264->unk3C, FALSE, FALSE);
|
||||
sub_8013984(&sUnknown_203B264->input);
|
||||
sub_801E594();
|
||||
DrawHintSelectionMenu();
|
||||
|
||||
if (cursorSprite)
|
||||
AddMenuCursorSprite(&sUnknown_203B264->input);
|
||||
}
|
||||
|
||||
void sub_801E54C(void)
|
||||
{
|
||||
if (sUnknown_203B264 != NULL) {
|
||||
sUnknown_203B264->unk3C[sUnknown_203B264->unk34] = sUnknown_80DC0A0;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sUnknown_203B264->unk3C, TRUE, TRUE);
|
||||
MemoryFree(sUnknown_203B264);
|
||||
sUnknown_203B264 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
NAKED // sub_80095E4 memes
|
||||
static void sub_801E594(void)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4,lr}\n"
|
||||
"\tldr r4, _0801E5E4\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tmovs r1, 0x1A\n"
|
||||
"\tldrsh r0, [r0, r1]\n"
|
||||
"\tmovs r1, 0xC\n"
|
||||
"\tbl sub_80095E4\n"
|
||||
"\tadds r0, 0x2\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tldr r2, [r4]\n"
|
||||
"\tldr r3, [r2, 0x34]\n"
|
||||
"\tlsls r1, r3, 1\n"
|
||||
"\tadds r1, r3\n"
|
||||
"\tlsls r1, 3\n"
|
||||
"\tadds r1, r2, r1\n"
|
||||
"\tadds r1, 0x4A\n"
|
||||
"\tasrs r3, r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tldr r1, [r2, 0x34]\n"
|
||||
"\tlsls r0, r1, 1\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tlsls r0, 3\n"
|
||||
"\tadds r2, r0\n"
|
||||
"\tadds r3, 0x2\n"
|
||||
"\tadds r2, 0x4C\n"
|
||||
"\tstrh r3, [r2]\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x3C\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tbl sub_800641C\n"
|
||||
"\tpop {r4}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_0801E5E4: .4byte sUnknown_203B264");
|
||||
}
|
||||
|
||||
static void DrawHintSelectionMenu(void)
|
||||
{
|
||||
s32 hintIndex;
|
||||
s32 y;
|
||||
|
||||
sub_8008C54(sUnknown_203B264->unk34);
|
||||
sub_80073B8(sUnknown_203B264->unk34);
|
||||
xxx_call_draw_string(16, 0, sHints, sUnknown_203B264->unk34, 0);
|
||||
|
||||
for (hintIndex = 0; hintIndex < MAX_HINTS; hintIndex++) {
|
||||
y = sub_8013800(&sUnknown_203B264->input, hintIndex);
|
||||
xxx_call_draw_string(10, y, gCommonHints[hintIndex].heading, sUnknown_203B264->unk34, 0);
|
||||
}
|
||||
|
||||
sub_80073E0(sUnknown_203B264->unk34);
|
||||
}
|
||||
87
src/hints_menu2.c
Normal file
87
src/hints_menu2.c
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
#include "global.h"
|
||||
#include "code_80118A4.h"
|
||||
#include "common_strings.h"
|
||||
#include "hints_menu2.h"
|
||||
#include "memory.h"
|
||||
#include "menu_input.h"
|
||||
#include "text1.h"
|
||||
#include "text2.h"
|
||||
|
||||
static EWRAM_DATA_2 struct unkStruct_203B268 *sUnknown_203B268 = {0};
|
||||
|
||||
#include "data/hints_menu2.h"
|
||||
|
||||
static void DisplayChosenHint(void);
|
||||
|
||||
static void sub_801E714(void);
|
||||
static void sub_801E76C(void);
|
||||
|
||||
bool8 CreateHintDisplayScreen(u32 index)
|
||||
{
|
||||
sUnknown_203B268 = MemoryAlloc(sizeof(struct unkStruct_203B268), 8);
|
||||
sUnknown_203B268->unk34 = 0;
|
||||
sUnknown_203B268->unk38 = sUnknown_203B268->unk3C;
|
||||
sub_8006518(sUnknown_203B268->unk3C);
|
||||
sUnknown_203B268->unk3C[sUnknown_203B268->unk34] = sUnknown_80DC0FC;
|
||||
sUnknown_203B268->unk38->unk14 = sUnknown_203B268->unk9C;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sUnknown_203B268->unk3C, TRUE, TRUE);
|
||||
sub_8013818(&sUnknown_203B268->input, 5, 1, sUnknown_203B268->unk34);
|
||||
sUnknown_203B268->input.unk1E = index;
|
||||
sub_801E714();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 HandleHintDisplayScreenInput(void)
|
||||
{
|
||||
switch (GetKeyPress(&sUnknown_203B268->input)) {
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
default:
|
||||
if (sub_8013938(&sUnknown_203B268->input)) {
|
||||
sub_801E714();
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_801E714(void)
|
||||
{
|
||||
sub_801E76C();
|
||||
DisplayChosenHint();
|
||||
}
|
||||
|
||||
void DestroyHintDisplayScreen(void)
|
||||
{
|
||||
if (sUnknown_203B268 != NULL) {
|
||||
sUnknown_203B268->unk3C[sUnknown_203B268->unk34] = sUnknown_80DC0E4;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sUnknown_203B268->unk3C, TRUE, TRUE);
|
||||
MemoryFree(sUnknown_203B268);
|
||||
sUnknown_203B268 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_801E76C(void)
|
||||
{
|
||||
sUnknown_203B268->unk9C[0] = sUnknown_203B268->input.unk20;
|
||||
sUnknown_203B268->unk9C[1] = sUnknown_203B268->input.unk1E;
|
||||
sUnknown_203B268->unk9C[2] = 15;
|
||||
sUnknown_203B268->unk9C[3] = 0;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(sUnknown_203B268->unk3C, TRUE, TRUE);
|
||||
}
|
||||
|
||||
static void DisplayChosenHint(void)
|
||||
{
|
||||
sub_80073B8(sUnknown_203B268->unk34);
|
||||
xxx_call_draw_string((sUnknown_203B268->input.unk1E * 8) + 16, 0, gCommonHints[sUnknown_203B268->input.unk1E].heading, sUnknown_203B268->unk34, 0);
|
||||
xxx_call_draw_string(10, 20, gCommonHints[sUnknown_203B268->input.unk1E].body, sUnknown_203B268->unk34, 0);
|
||||
sub_80073E0(sUnknown_203B268->unk34);
|
||||
}
|
||||
|
|
@ -6,6 +6,8 @@
|
|||
#include "constants/colors.h"
|
||||
#include "constants/input.h"
|
||||
#include "game_options.h"
|
||||
#include "hints_menu1.h"
|
||||
#include "hints_menu2.h"
|
||||
#include "memory.h"
|
||||
#include "menu_input.h"
|
||||
#include "options_menu.h"
|
||||
|
|
@ -66,15 +68,7 @@ extern void HandleChangeSettingsMenu();
|
|||
extern void sub_801DD84();
|
||||
extern void sub_801DED0();
|
||||
extern bool8 sub_801E198(GameOptions *);
|
||||
extern void CreateHintDisplayScreen(u32);
|
||||
extern void sub_801E3F0(u32);
|
||||
extern void CreateHintSelectionScreen(u32);
|
||||
extern void CreateChangeSettingsConfirmMenu(void);
|
||||
extern u32 sub_801E474(u32);
|
||||
extern u32 GetChosenHintIndex(void);
|
||||
extern void sub_801E54C(void);
|
||||
extern u32 HandleHintDisplayScreenInput(void);
|
||||
extern void DestroyHintDisplayScreen(void);
|
||||
extern u32 sub_801E218(void);
|
||||
extern void sub_801E2C4(void);
|
||||
|
||||
|
|
@ -285,8 +279,7 @@ void HandleOthersMenu(void)
|
|||
|
||||
void sub_801E088(void)
|
||||
{
|
||||
|
||||
switch(sub_801E474(1))
|
||||
switch(sub_801E474(TRUE))
|
||||
{
|
||||
case 3:
|
||||
case 4:
|
||||
|
|
|
|||
|
|
@ -159,12 +159,8 @@ gUnknown_203B25C: /* 203B25C (sub_801DCC4 - HandleChangeSettingsMenu) */
|
|||
gUnknown_203B260: /* 203B260 (sub_801E198 - CreateOptionsMenu) */
|
||||
.space 0x4
|
||||
|
||||
gUnknown_203B264: /* 203B264 (sub_801E3F0 - DrawHintSelectionMenu) */
|
||||
.space 0x4
|
||||
|
||||
gUnknown_203B268: /* 203B268 (CreateHintDisplayScreen - DisplayChosenHint) */
|
||||
.space 0x4
|
||||
|
||||
.include "src/hints_menu1.o"
|
||||
.include "src/hints_menu2.o"
|
||||
.include "src/gulpin_shop.o"
|
||||
|
||||
gUnknown_203B270: /* 203B270 */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user