Start decompiling menu_unknown

This commit is contained in:
Phlosioneer 2019-03-05 06:06:20 -05:00
parent 0e3fc4956b
commit 9bea9e1624
9 changed files with 207 additions and 346 deletions

View File

@ -6,326 +6,6 @@
.text
thumb_func_start sub_81D1C44
sub_81D1C44: @ 81D1C44
push {r4,lr}
lsls r0, 24
ldr r4, =gUnknown_0203CF4C
lsrs r0, 21
adds r0, 0x8
bl Alloc
str r0, [r4]
cmp r0, 0
bne _081D1C60
movs r0, 0
b _081D1C7A
.pool
_081D1C60:
movs r2, 0
ldr r4, =gUnknown_0203CF48
movs r3, 0xFF
_081D1C66:
adds r0, r2, r4
ldrb r1, [r0]
orrs r1, r3
strb r1, [r0]
adds r0, r2, 0x1
lsls r0, 24
lsrs r2, r0, 24
cmp r2, 0x2
bls _081D1C66
movs r0, 0x1
_081D1C7A:
pop {r4}
pop {r1}
bx r1
.pool
thumb_func_end sub_81D1C44
thumb_func_start sub_81D1C84
sub_81D1C84: @ 81D1C84
push {r4-r6,lr}
sub sp, 0x8
lsls r0, 24
lsrs r4, r0, 24
ldr r6, =gUnknown_0203CF48
adds r5, r4, r6
ldrb r0, [r5]
cmp r0, 0xFF
bne _081D1CEC
cmp r4, 0x2
bne _081D1CD4
ldr r0, =gUnknown_086253E8
ldr r1, [r0, 0x14]
ldr r0, [r0, 0x10]
str r0, [sp]
str r1, [sp, 0x4]
ldr r0, =gMailboxMailOptions
movs r1, 0x4
bl GetMaxWidthInMenuTable
lsls r0, 24
ldr r2, =0x00ffffff
ldr r1, [sp]
ands r1, r2
orrs r1, r0
str r1, [sp]
mov r0, sp
bl AddWindow
strb r0, [r6, 0x2]
b _081D1CE0
.pool
_081D1CD4:
lsls r0, r4, 3
ldr r1, =gUnknown_086253E8
adds r0, r1
bl AddWindow
strb r0, [r5]
_081D1CE0:
ldr r0, =gUnknown_0203CF48
adds r0, r4, r0
ldrb r0, [r0]
movs r1, 0
bl SetStandardWindowBorderStyle
_081D1CEC:
ldr r0, =gUnknown_0203CF48
adds r0, r4, r0
ldrb r0, [r0]
add sp, 0x8
pop {r4-r6}
pop {r1}
bx r1
.pool
thumb_func_end sub_81D1C84
thumb_func_start sub_81D1D04
sub_81D1D04: @ 81D1D04
push {r4,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r0, =gUnknown_0203CF48
adds r4, r0
ldrb r0, [r4]
movs r1, 0
bl sub_8198070
ldrb r0, [r4]
bl ClearWindowTilemap
ldrb r0, [r4]
bl RemoveWindow
movs r0, 0xFF
strb r0, [r4]
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_81D1D04
thumb_func_start sub_81D1D34
sub_81D1D34: @ 81D1D34
lsls r0, 24
lsrs r0, 24
ldr r1, =gUnknown_0203CF48
adds r0, r1
ldrb r0, [r0]
bx lr
.pool
thumb_func_end sub_81D1D34
thumb_func_start sub_81D1D44
sub_81D1D44: @ 81D1D44
push {r4,r5,lr}
sub sp, 0x34
adds r3, r1, 0
lsls r0, 24
lsrs r4, r0, 24
lsls r2, 24
lsrs r5, r2, 24
movs r0, 0x2
negs r0, r0
cmp r3, r0
beq _081D1DAC
ldr r0, =gSaveBlock1Ptr
lsls r1, r3, 3
adds r1, r3
lsls r1, 2
ldr r0, [r0]
adds r1, r0
ldr r0, =0x00002cca
adds r1, r0
add r0, sp, 0x14
bl StringCopy
add r0, sp, 0x14
bl sub_81DB52C
add r0, sp, 0x14
bl StringLength
lsls r0, 16
lsrs r0, 16
cmp r0, 0x5
bhi _081D1D8C
add r0, sp, 0x14
movs r1, 0x1
bl ConvertInternationalString
_081D1D8C:
movs r0, 0
str r0, [sp]
str r0, [sp, 0x4]
ldr r0, =gUnknown_08625400
str r0, [sp, 0x8]
movs r0, 0x1
negs r0, r0
str r0, [sp, 0xC]
add r0, sp, 0x14
str r0, [sp, 0x10]
adds r0, r4, 0
movs r1, 0x1
movs r2, 0x8
adds r3, r5, 0
bl AddTextPrinterParameterized4
_081D1DAC:
add sp, 0x34
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_81D1D44
thumb_func_start sub_81D1DC0
sub_81D1DC0: @ 81D1DC0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
adds r5, r0, 0
movs r3, 0
ldr r7, =gUnknown_0203CF4C
ldr r0, =gText_Cancel2
mov r12, r0
ldr r4, =gMultiuseListMenuTemplate
ldr r1, =gUnknown_0203CF48
mov r8, r1
ldr r2, =sub_81D1E7C
mov r9, r2
ldr r0, =sub_81D1D44
mov r10, r0
ldrb r1, [r5, 0x5]
cmp r3, r1
bcs _081D1E02
adds r6, r7, 0
ldr r2, =gUnknown_08625403
_081D1DEC:
ldr r1, [r6]
lsls r0, r3, 3
adds r0, r1
str r2, [r0]
str r3, [r0, 0x4]
adds r0, r3, 0x1
lsls r0, 16
lsrs r3, r0, 16
ldrb r0, [r5, 0x5]
cmp r3, r0
bcc _081D1DEC
_081D1E02:
ldr r2, [r7]
lsls r0, r3, 3
adds r0, r2
mov r1, r12
str r1, [r0]
movs r1, 0x2
negs r1, r1
str r1, [r0, 0x4]
str r2, [r4]
ldrb r0, [r5, 0x5]
adds r0, 0x1
movs r1, 0
strh r0, [r4, 0xC]
mov r2, r8
ldrb r0, [r2, 0x1]
strb r0, [r4, 0x10]
strb r1, [r4, 0x11]
movs r0, 0x8
strb r0, [r4, 0x12]
strb r1, [r4, 0x13]
strh r0, [r4, 0xE]
movs r0, 0x29
strb r0, [r4, 0x14]
movs r0, 0x31
strb r0, [r4, 0x15]
mov r0, r9
str r0, [r4, 0x4]
mov r1, r10
str r1, [r4, 0x8]
movs r0, 0x1
strb r0, [r4, 0x17]
movs r0, 0
strb r0, [r4, 0x16]
ldrh r1, [r5, 0x2]
ldrh r2, [r5]
adds r0, r4, 0
bl ListMenuInit
lsls r0, 24
lsrs r0, 24
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.pool
thumb_func_end sub_81D1DC0
thumb_func_start sub_81D1E7C
sub_81D1E7C: @ 81D1E7C
push {lr}
lsls r1, 24
lsrs r1, 24
cmp r1, 0x1
beq _081D1E8C
movs r0, 0x5
bl PlaySE
_081D1E8C:
pop {r0}
bx r0
thumb_func_end sub_81D1E7C
thumb_func_start sub_81D1E90
sub_81D1E90: @ 81D1E90
push {r4,lr}
sub sp, 0x10
adds r4, r0, 0
ldrb r0, [r4, 0x5]
ldrb r1, [r4, 0x4]
subs r0, r1
adds r0, 0x1
str r0, [sp]
movs r0, 0x6E
str r0, [sp, 0x4]
str r0, [sp, 0x8]
adds r0, r4, 0x2
str r0, [sp, 0xC]
movs r0, 0x2
movs r1, 0xC8
movs r2, 0xC
movs r3, 0x94
bl AddScrollIndicatorArrowPairParameterized
strb r0, [r4, 0x9]
add sp, 0x10
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_81D1E90
thumb_func_start sub_81D1EC0
sub_81D1EC0: @ 81D1EC0
push {lr}
ldr r0, =gUnknown_0203CF4C
ldr r0, [r0]
bl Free
pop {r0}
bx r0
.pool
thumb_func_end sub_81D1EC0
thumb_func_start sub_81D1ED4
sub_81D1ED4: @ 81D1ED4
push {r4-r7,lr}

View File

@ -3,20 +3,6 @@
.section .rodata
gUnknown_086253E8:: @ 86253E8
.4byte 0x8010100
.4byte 0x80F02
.4byte 0x8011500
.4byte 0x180F12
.4byte 0xB010100
.4byte 0x180F08
gUnknown_08625400:: @ 8625400
.byte 1, 2, 3
gUnknown_08625403:: @ 8625403
.byte 0xFF
@ ScanlineEffectParams
gUnknown_08625404:: @ 8625404
.4byte 0x04000040 @ REG_ADDR_WIN0H

View File

@ -31,7 +31,7 @@ u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed
void PrintPlayerNameOnWindow(u8, const u8*, u16, u16);
void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback);
void sub_8197434(u8 windowId, bool8 copyToVram);
void SetStandardWindowBorderStyle(u8 a0, u8 a1);
void SetStandardWindowBorderStyle(u8 windowId, bool8 copyToVram);
void DisplayYesNoMenu(void);
u32 GetPlayerTextSpeed(void);
u8 GetPlayerTextSpeedDelay(void);

15
include/menu_unknown.h Normal file
View File

@ -0,0 +1,15 @@
#ifndef GUARD_MENU_UNKNOWN_H
#define GUARD_MENU_UNKNOWN_H
#include "player_pc.h"
bool8 sub_81D1C44(u8 a0);
u8 sub_81D1C84(u8 a0);
u8 sub_81D1DC0(struct PlayerPCItemPageStruct *a0);
void sub_81D1E90(struct PlayerPCItemPageStruct *a0);
void sub_81D1EC0(void);
void sub_81D1D04(u8 a0);
void DrawLevelUpWindowPg1(u16 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5);
void DrawLevelUpWindowPg2(u16 arg0, void* statStoreLocation1, u8 arg2, u8 arg3, u8 arg4);
#endif // GUARD_MENU_UNKNOWN_H

View File

@ -1,6 +1,5 @@
#ifndef GUARD_POKENAV_H
#define GUARD_POKENAV_H
#include "player_pc.h"
#include "list_menu.h"
bool8 sub_81D20BC(void *arg0);
@ -13,12 +12,6 @@ void sub_81D3464(void *arg0);
void sub_81D3480(void *arg0, u8 arg1);
void sub_81D2754(void *arg0, void *arg1);
void sub_81D1F84(void *arg0, void *arg1, void *arg2);
u8 sub_81D1C84(u8);
u8 sub_81D1DC0(struct PlayerPCItemPageStruct *);
void sub_81D1E90(struct PlayerPCItemPageStruct *);
void sub_81D1EC0(void);
void sub_81D1D04(u8);
bool8 sub_81D1C44(u8);
bool8 sub_81D4A58(struct EventObject*);
void MoveRelearnerPrintText(u8 *);
u16 MoveRelearnerRunTextPrinters(void);
@ -28,7 +21,5 @@ void InitMoveRelearnerWindows(bool8 useContextWindow);
bool8 EventObjectIsFarawayIslandMew(struct EventObject *);
u32 sub_81D427C(void);
void sub_81D4998(void);
void DrawLevelUpWindowPg1(u16 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5);
void DrawLevelUpWindowPg2(u16 arg0, void* statStoreLocation1, u8 arg2, u8 arg3, u8 arg4);
#endif //GUARD_POKENAV_H

View File

@ -291,6 +291,7 @@ SECTIONS {
src/pokenav.o(.text);
asm/pokenav.o(.text);
src/pokenav_match_call.o(.text);
src/menu_unknown.o(.text);
asm/menu_unknown.o(.text);
asm/rom_81D1C44.o(.text);
src/trainer_hill.o(.text);
@ -595,6 +596,7 @@ SECTIONS {
src/pokenav.o(.rodata);
data/pokenav.o(.rodata);
src/pokenav_match_call.o(.rodata);
src/menu_unknown.o(.rodata);
data/menu_unknown.o(.rodata);
data/rom_81D1C44.o(.rodata);
src/trainer_hill.o(.rodata);

186
src/menu_unknown.c Normal file
View File

@ -0,0 +1,186 @@
#include "global.h"
#include "alloc.h"
#include "international_string_util.h"
#include "menu.h"
#include "menu_unknown.h"
#include "player_pc.h"
#include "sound.h"
#include "strings.h"
#include "string_util.h"
#include "window.h"
#include "constants/songs.h"
#define WINDOW_UNK_0 0
#define WINDOW_UNK_1 1
#define WINDOW_UNK_2 2
extern struct ListMenuItem *gUnknown_0203CF4C;
extern u8 gUnknown_0203CF48[3];
void sub_81D1E7C(s32 itemIndex, bool8 onInit, struct ListMenu *list);
const struct WindowTemplate gUnknown_086253E8[] =
{
[WINDOW_UNK_0] = {
//0x08010100,
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 1,
.width = 8,
//0x00080F02,
.height = 2,
.paletteNum = 0xF,
.baseBlock = 0x8
},
[WINDOW_UNK_1] = {
//0x08 01 15 00,
.bg = 0,
.tilemapLeft = 21,
.tilemapTop = 1,
.width = 8,
//0x0018 0F 12,
.height = 18,
.paletteNum = 0xF,
.baseBlock = 0x18
},
[WINDOW_UNK_2] = {
//0x0B 01 01 00
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 1,
.width = 11,
//0x0018 0F 08
.height = 8,
.paletteNum = 0xF,
.baseBlock = 0x18
}
};
const u8 gUnknown_08625400[] = {
1, 2, 3
};
static const u8 sEmptyItemName[] = _("");
bool8 sub_81D1C44(u8 count)
{
u32 i;
struct ListMenuItem **v1;
v1 = &gUnknown_0203CF4C;
*v1 = Alloc(count * sizeof(struct ListMenuItem) + sizeof(struct ListMenuItem));
if (gUnknown_0203CF4C == NULL)
return FALSE;
for (i = 0; i < ARRAY_COUNT(gUnknown_0203CF48); i = (u8)(i + 1))
{
gUnknown_0203CF48[i] |= 0xFF;
}
return TRUE;
}
u8 sub_81D1C84(u8 a0)
{
struct WindowTemplate template;
u8 windowId = gUnknown_0203CF48[a0];
if (windowId == 0xFF)
{
if (a0 == WINDOW_UNK_2)
{
u32 v1;
u32 v2;
s32 v3;
template = gUnknown_086253E8[WINDOW_UNK_2];
v3 = GetMaxWidthInMenuTable(&gMailboxMailOptions[0], 4);
template.width = v3;
gUnknown_0203CF48[WINDOW_UNK_2] = AddWindow(&template);
}
else
{
gUnknown_0203CF48[a0] = AddWindow(&gUnknown_086253E8[a0]);
}
SetStandardWindowBorderStyle(gUnknown_0203CF48[a0], 0);
}
return gUnknown_0203CF48[a0];
}
void sub_81D1D04(u8 a0)
{
sub_8198070(gUnknown_0203CF48[a0], 0);
ClearWindowTilemap(gUnknown_0203CF48[a0]);
RemoveWindow(gUnknown_0203CF48[a0]);
gUnknown_0203CF48[a0] = 0xFF;
}
u8 sub_81D1D34(u8 a0)
{
return gUnknown_0203CF48[a0];
}
void sub_81D1D44(u8 windowId, s32 itemId, u8 y)
{
u8 buffer[30];
u16 length;
if (itemId == LIST_CANCEL)
return;
StringCopy(buffer, gSaveBlock1Ptr->mail[6 + itemId].playerName);
sub_81DB52C(buffer);
length = StringLength(buffer);
if (length <= 5)
ConvertInternationalString(buffer, LANGUAGE_JAPANESE);
AddTextPrinterParameterized4(windowId, 1, 8, y, 0, 0, gUnknown_08625400, -1, buffer);
}
u8 sub_81D1DC0(struct PlayerPCItemPageStruct *page)
{
u16 i;
for (i = 0; i < page->count; i++)
{
gUnknown_0203CF4C[i].name = sEmptyItemName;
gUnknown_0203CF4C[i].id = i;
}
gUnknown_0203CF4C[i].name = gText_Cancel2;
gUnknown_0203CF4C[i].id = LIST_CANCEL;
gMultiuseListMenuTemplate.items = gUnknown_0203CF4C;
gMultiuseListMenuTemplate.totalItems = page->count + 1;
gMultiuseListMenuTemplate.windowId = gUnknown_0203CF48[1];
gMultiuseListMenuTemplate.header_X = 0;
gMultiuseListMenuTemplate.item_X = 8;
gMultiuseListMenuTemplate.cursor_X = 0;
gMultiuseListMenuTemplate.maxShowed = 8;
gMultiuseListMenuTemplate.upText_Y = 9;
gMultiuseListMenuTemplate.cursorPal = 2;
gMultiuseListMenuTemplate.fillValue = 1;
gMultiuseListMenuTemplate.cursorShadowPal = 3;
gMultiuseListMenuTemplate.moveCursorFunc = sub_81D1E7C;
gMultiuseListMenuTemplate.itemPrintFunc = sub_81D1D44;
gMultiuseListMenuTemplate.fontId = 1;
gMultiuseListMenuTemplate.cursorKind = 0;
gMultiuseListMenuTemplate.lettersSpacing = 0;
gMultiuseListMenuTemplate.itemVerticalPadding = 0;
gMultiuseListMenuTemplate.scrollMultiple = LIST_NO_MULTIPLE_SCROLL;
return ListMenuInit(&gMultiuseListMenuTemplate, page->itemsAbove, page->cursorPos);
}
void sub_81D1E7C(s32 itemIndex, bool8 onInit, struct ListMenu *list)
{
if (onInit != TRUE)
PlaySE(SE_SELECT);
}
void sub_81D1E90(struct PlayerPCItemPageStruct *page)
{
page->scrollIndicatorId = AddScrollIndicatorArrowPairParameterized(2, 0xC8, 12, 0x94, page->count - page->pageItems + 1, 0x6E, 0x6E, &page->itemsAbove);
}
void sub_81D1EC0(void)
{
Free(gUnknown_0203CF4C);
}

View File

@ -37,15 +37,16 @@
#include "main.h"
#include "menu.h"
#include "menu_helpers.h"
#include "menu_unknown.h"
#include "metatile_behavior.h"
#include "overworld.h"
#include "palette.h"
#include "party_menu.h"
#include "player_pc.h"
#include "pokemon.h"
#include "pokemon_icon.h"
#include "pokemon_storage_system.h"
#include "pokemon_summary_screen.h"
#include "pokenav.h"
#include "region_map.h"
#include "reshow_battle_screen.h"
#include "rom_8011DC0.h"

View File

@ -20,7 +20,6 @@
#include "overworld.h"
#include "palette.h"
#include "party_menu.h"
#include "pokenav.h"
#include "player_pc.h"
#include "script.h"
#include "sound.h"
@ -29,6 +28,7 @@
#include "strings.h"
#include "task.h"
#include "window.h"
#include "menu_unknown.h"
// structures
struct Struct203BCC4