through AddMenu

This commit is contained in:
PikalaxALT
2020-03-15 12:24:33 -04:00
parent 1e959e036d
commit 39ef2a31a4
8 changed files with 197 additions and 333 deletions
+6 -239
View File
@@ -5,245 +5,6 @@
.text
@ file boundary?
thumb_func_start InitMenu
InitMenu: @ 8094DA8
ldr r2, _08094DDC @ =sPSSData
ldr r0, [r2]
ldr r1, _08094DE0 @ =0x00000ca8
adds r0, r1
movs r1, 0
strb r1, [r0]
ldr r0, [r2]
ldr r3, _08094DE4 @ =0x00000ca9
adds r0, r3
strb r1, [r0]
ldr r0, [r2]
subs r3, 0x41
adds r0, r3
strb r1, [r0]
ldr r0, [r2]
ldr r1, _08094DE8 @ =0x00000c6d
adds r0, r1
movs r1, 0xF
strb r1, [r0]
ldr r0, [r2]
adds r3, 0x6
adds r0, r3
movs r1, 0x5C
strh r1, [r0]
bx lr
.align 2, 0
_08094DDC: .4byte sPSSData
_08094DE0: .4byte 0x00000ca8
_08094DE4: .4byte 0x00000ca9
_08094DE8: .4byte 0x00000c6d
thumb_func_end InitMenu
thumb_func_start SetMenuText
SetMenuText: @ 8094DEC
push {r4,r5,lr}
lsls r0, 24
lsrs r3, r0, 24
ldr r4, _08094E40 @ =sPSSData
ldr r2, [r4]
ldr r5, _08094E44 @ =0x00000ca8
adds r1, r2, r5
ldrb r0, [r1]
cmp r0, 0x6
bhi _08094E38
adds r1, r0, 0
lsls r1, 3
movs r0, 0xC7
lsls r0, 4
adds r1, r0
adds r1, r2, r1
ldr r2, _08094E48 @ =gUnknown_83D353C
lsls r0, r3, 2
adds r0, r2
ldr r0, [r0]
str r0, [r1]
str r3, [r1, 0x4]
bl StringLength
lsls r0, 24
lsrs r1, r0, 24
ldr r0, [r4]
ldr r2, _08094E4C @ =0x00000ca9
adds r0, r2
ldrb r2, [r0]
cmp r1, r2
bls _08094E2E
strb r1, [r0]
_08094E2E:
ldr r1, [r4]
adds r1, r5
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
_08094E38:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08094E40: .4byte sPSSData
_08094E44: .4byte 0x00000ca8
_08094E48: .4byte gUnknown_83D353C
_08094E4C: .4byte 0x00000ca9
thumb_func_end SetMenuText
thumb_func_start sub_8094E50
sub_8094E50: @ 8094E50
push {lr}
lsls r0, 24
lsrs r2, r0, 24
ldr r0, _08094E74 @ =sPSSData
ldr r1, [r0]
ldr r3, _08094E78 @ =0x00000ca8
adds r0, r1, r3
ldrb r0, [r0]
cmp r2, r0
bcs _08094E80
lsls r0, r2, 3
ldr r2, _08094E7C @ =0x00000c74
adds r1, r2
adds r1, r0
movs r0, 0
ldrsb r0, [r1, r0]
b _08094E84
.align 2, 0
_08094E74: .4byte sPSSData
_08094E78: .4byte 0x00000ca8
_08094E7C: .4byte 0x00000c74
_08094E80:
movs r0, 0x1
negs r0, r0
_08094E84:
pop {r1}
bx r1
thumb_func_end sub_8094E50
thumb_func_start AddMenu
AddMenu: @ 8094E88
push {r4-r6,lr}
mov r6, r10
mov r5, r9
mov r4, r8
push {r4-r6}
sub sp, 0xC
ldr r5, _08094F6C @ =sPSSData
ldr r1, [r5]
ldr r2, _08094F70 @ =0x00000ca9
adds r0, r1, r2
ldrb r0, [r0]
adds r0, 0x2
subs r2, 0x3E
adds r1, r2
movs r3, 0
mov r10, r3
strb r0, [r1]
ldr r1, [r5]
ldr r0, _08094F74 @ =0x00000ca8
mov r8, r0
adds r0, r1, r0
ldrb r0, [r0]
lsls r0, 1
ldr r3, _08094F78 @ =0x00000c6c
adds r1, r3
strb r0, [r1]
ldr r1, [r5]
adds r2, r1, r2
ldrb r2, [r2]
movs r0, 0x1D
subs r0, r2
ldr r2, _08094F7C @ =0x00000c69
adds r1, r2
strb r0, [r1]
ldr r1, [r5]
adds r3, r1, r3
ldrb r2, [r3]
movs r0, 0xF
subs r0, r2
ldr r3, _08094F80 @ =0x00000c6a
adds r1, r3
strb r0, [r1]
ldr r0, [r5]
ldr r1, _08094F84 @ =0x00000c68
adds r0, r1
bl AddWindow
ldr r1, [r5]
ldr r4, _08094F88 @ =0x00000cac
adds r1, r4
movs r2, 0
mov r9, r2
strh r0, [r1]
lsls r0, 24
lsrs r0, 24
bl ClearWindowTilemap
ldr r0, [r5]
adds r0, r4
ldrb r0, [r0]
movs r1, 0
movs r2, 0xB
movs r3, 0xE
bl DrawStdFrameWithCustomTileAndPalette
ldr r2, [r5]
adds r0, r2, r4
ldrb r0, [r0]
movs r6, 0x10
str r6, [sp]
mov r3, r8
adds r1, r2, r3
ldrb r1, [r1]
str r1, [sp, 0x4]
movs r1, 0xC7
lsls r1, 4
adds r2, r1
str r2, [sp, 0x8]
movs r1, 0x1
movs r2, 0x8
movs r3, 0x2
bl PrintTextArray
ldr r1, [r5]
adds r4, r1, r4
ldrb r0, [r4]
str r6, [sp]
add r1, r8
ldrb r1, [r1]
str r1, [sp, 0x4]
mov r2, r10
str r2, [sp, 0x8]
movs r1, 0x1
movs r2, 0
movs r3, 0x2
bl Menu_InitCursor
movs r0, 0
bl ScheduleBgCopyTilemapToVram
ldr r0, [r5]
ldr r3, _08094F8C @ =0x00000caa
adds r0, r3
mov r1, r9
strb r1, [r0]
add sp, 0xC
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08094F6C: .4byte sPSSData
_08094F70: .4byte 0x00000ca9
_08094F74: .4byte 0x00000ca8
_08094F78: .4byte 0x00000c6c
_08094F7C: .4byte 0x00000c69
_08094F80: .4byte 0x00000c6a
_08094F84: .4byte 0x00000c68
_08094F88: .4byte 0x00000cac
_08094F8C: .4byte 0x00000caa
thumb_func_end AddMenu
thumb_func_start sub_8094F90
sub_8094F90: @ 8094F90
movs r0, 0
@@ -345,6 +106,8 @@ _08095048: .4byte sPSSData
_0809504C: .4byte 0x00000cac
thumb_func_end sub_8095024
@ file boundary?
thumb_func_start sub_8095050
sub_8095050: @ 8095050
push {r4,lr}
@@ -1822,6 +1585,8 @@ _08095B4C:
bx r1
thumb_func_end sub_8095ABC
@ file boundary?
thumb_func_start sub_8095B5C
sub_8095B5C: @ 8095B5C
push {r4-r7,lr}
@@ -3977,6 +3742,8 @@ _08096BDC:
_08096BE0: .4byte SpriteCallbackDummy
thumb_func_end sub_8096BAC
@ file boundary?
thumb_func_start sub_8096BE4
sub_8096BE4: @ 8096BE4
ldr r3, _08096BF4 @ =gUnknown_203982C
-40
View File
@@ -6,46 +6,6 @@
.section .rodata
.align 2
gUnknown_83D353C:: @ 83D353C
.4byte gUnknown_8418468
.4byte gUnknown_841846F
.4byte gUnknown_8418475
.4byte gUnknown_8418484
.4byte gUnknown_841847E
.4byte gUnknown_8418489
.4byte gUnknown_841848F
.4byte gUnknown_8418497
.4byte gUnknown_841849F
.4byte gUnknown_84184A9
.4byte gUnknown_84184AE
.4byte gUnknown_84184A4
.4byte gUnknown_84184B8
.4byte gUnknown_84184BD
.4byte gUnknown_84184BD
.4byte gUnknown_84184C2
.4byte gUnknown_84184C9
.4byte gUnknown_84184CD
.4byte gUnknown_84184D2
.4byte gUnknown_84184DC
.4byte gUnknown_84184E6
.4byte gUnknown_84184F0
.4byte gUnknown_84184F9
.4byte gUnknown_8418500
.4byte gUnknown_8418505
.4byte gUnknown_841850C
.4byte gUnknown_8418514
.4byte gUnknown_8418519
.4byte gUnknown_8418521
.4byte gUnknown_8418526
.4byte gUnknown_841852B
.4byte gUnknown_8418531
.4byte gUnknown_841853A
.4byte gUnknown_8418540
.4byte gUnknown_8418544
.4byte gUnknown_841854A
.4byte gUnknown_8418555
.4byte gUnknown_841855B
gUnknown_83D35D4:: @ 83D35D4
.byte 0, 10, 3, 20, 18, 9
.2byte 0x000a
+3 -1
View File
@@ -9,6 +9,8 @@
#define MAX_MON_ICONS 40
#define MAX_MENU_ITEMS 7
enum
{
MODE_PARTY,
@@ -298,7 +300,7 @@ struct PokemonStorageSystemData
/* 0c66 */ u8 field_C6A;
/* 0c67 */ u8 field_C6B;
/* 0c68 */ struct WindowTemplate menuWindow;
/* 0c70 */ struct StorageMenu menuItems[7];
/* 0c70 */ struct StorageMenu menuItems[MAX_MENU_ITEMS];
/* 0ca8 */ u8 menuItemsCount;
/* 0ca9 */ u8 menuWidth;
/* 0caa */ u8 field_CAE;
+37
View File
@@ -1403,5 +1403,42 @@ extern const u8 gText_PutItemInBag[];
extern const u8 gText_ItemIsNowHeld[];
extern const u8 gText_ChangedToNewItem[];
extern const u8 gText_MailCantBeStored[];
extern const u8 gPCText_Cancel[];
extern const u8 gPCText_Store[];
extern const u8 gPCText_Withdraw[];
extern const u8 gPCText_Move[];
extern const u8 gPCText_Shift[];
extern const u8 gPCText_Place[];
extern const u8 gPCText_Summary[];
extern const u8 gPCText_Release[];
extern const u8 gPCText_Mark[];
extern const u8 gPCText_Jump[];
extern const u8 gPCText_Wallpaper[];
extern const u8 gPCText_Name[];
extern const u8 gPCText_Take[];
extern const u8 gPCText_Give[];
extern const u8 gPCText_Switch[];
extern const u8 gPCText_Bag[];
extern const u8 gPCText_Info[];
extern const u8 gPCText_Scenery1[];
extern const u8 gPCText_Scenery2[];
extern const u8 gPCText_Scenery3[];
extern const u8 gPCText_Etcetera[];
extern const u8 gPCText_Forest[];
extern const u8 gPCText_City[];
extern const u8 gPCText_Desert[];
extern const u8 gPCText_Savanna[];
extern const u8 gPCText_Crag[];
extern const u8 gPCText_Volcano[];
extern const u8 gPCText_Snow[];
extern const u8 gPCText_Cave[];
extern const u8 gPCText_Beach[];
extern const u8 gPCText_Seafloor[];
extern const u8 gPCText_River[];
extern const u8 gPCText_Sky[];
extern const u8 gPCText_PolkaDot[];
extern const u8 gPCText_Pokecenter[];
extern const u8 gPCText_Machine[];
extern const u8 gPCText_Simple[];
#endif //GUARD_STRINGS_H
+2
View File
@@ -133,6 +133,7 @@ SECTIONS {
src/pokemon_storage_system_3.o(.text);
src/pokemon_storage_system_4.o(.text);
src/pokemon_storage_system_5.o(.text);
src/pokemon_storage_system_6.o(.text);
asm/pokemon_storage_system.o(.text);
src/pokemon_icon.o(.text);
src/script_movement.o(.text);
@@ -457,6 +458,7 @@ SECTIONS {
src/pokemon_storage_system_3.o(.rodata);
src/pokemon_storage_system_4.o(.rodata);
src/pokemon_storage_system_5.o(.rodata);
src/pokemon_storage_system_6.o(.rodata);
data/pokemon_storage_system.o(.rodata);
src/pokemon_icon.o(.rodata);
src/fldeff_cut.o(.rodata);
+16 -16
View File
@@ -1241,21 +1241,21 @@ u8 InBoxInput_Normal(void)
{
switch (sub_8094E50(0))
{
case 1:
case PC_TEXT_STORE:
return 11;
case 2:
case PC_TEXT_WITHDRAW:
return 12;
case 3:
case PC_TEXT_MOVE:
return 13;
case 4:
case PC_TEXT_SHIFT:
return 14;
case 5:
case PC_TEXT_PLACE:
return 15;
case 12:
case PC_TEXT_TAKE:
return 16;
case 13:
case PC_TEXT_GIVE:
return 17;
case 15:
case PC_TEXT_SWITCH:
return 18;
}
}
@@ -1521,21 +1521,21 @@ u8 HandleInput_InParty(void)
switch (sub_8094E50(0))
{
case 1:
case PC_TEXT_STORE:
return 11;
case 2:
case PC_TEXT_WITHDRAW:
return 12;
case 3:
case PC_TEXT_MOVE:
return 13;
case 4:
case PC_TEXT_SHIFT:
return 14;
case 5:
case PC_TEXT_PLACE:
return 15;
case 12:
case PC_TEXT_TAKE:
return 16;
case 13:
case PC_TEXT_GIVE:
return 17;
case 15:
case PC_TEXT_SWITCH:
return 18;
}
}
+96
View File
@@ -0,0 +1,96 @@
#include "global.h"
#include "gflib.h"
#include "menu.h"
#include "new_menu_helpers.h"
#include "pokemon_storage_system_internal.h"
#include "strings.h"
void InitMenu(void)
{
sPSSData->menuItemsCount = 0;
sPSSData->menuWidth = 0;
sPSSData->menuWindow.bg = 0;
sPSSData->menuWindow.paletteNum = 15;
sPSSData->menuWindow.baseBlock = 92;
}
const u8 *const sMenuTexts[] = {
[PC_TEXT_CANCEL] = gPCText_Cancel,
[PC_TEXT_STORE] = gPCText_Store,
[PC_TEXT_WITHDRAW] = gPCText_Withdraw,
[PC_TEXT_MOVE] = gPCText_Move,
[PC_TEXT_SHIFT] = gPCText_Shift,
[PC_TEXT_PLACE] = gPCText_Place,
[PC_TEXT_SUMMARY] = gPCText_Summary,
[PC_TEXT_RELEASE] = gPCText_Release,
[PC_TEXT_MARK] = gPCText_Mark,
[PC_TEXT_JUMP] = gPCText_Jump,
[PC_TEXT_WALLPAPER] = gPCText_Wallpaper,
[PC_TEXT_NAME] = gPCText_Name,
[PC_TEXT_TAKE] = gPCText_Take,
[PC_TEXT_GIVE] = gPCText_Give,
[PC_TEXT_GIVE2] = gPCText_Give,
[PC_TEXT_SWITCH] = gPCText_Switch,
[PC_TEXT_BAG] = gPCText_Bag,
[PC_TEXT_INFO] = gPCText_Info,
[PC_TEXT_SCENERY1] = gPCText_Scenery1,
[PC_TEXT_SCENERY2] = gPCText_Scenery2,
[PC_TEXT_SCENERY3] = gPCText_Scenery3,
[PC_TEXT_ETCETERA] = gPCText_Etcetera,
[PC_TEXT_FOREST] = gPCText_Forest,
[PC_TEXT_CITY] = gPCText_City,
[PC_TEXT_DESERT] = gPCText_Desert,
[PC_TEXT_SAVANNA] = gPCText_Savanna,
[PC_TEXT_CRAG] = gPCText_Crag,
[PC_TEXT_VOLCANO] = gPCText_Volcano,
[PC_TEXT_SNOW] = gPCText_Snow,
[PC_TEXT_CAVE] = gPCText_Cave,
[PC_TEXT_BEACH] = gPCText_Beach,
[PC_TEXT_SEAFLOOR] = gPCText_Seafloor,
[PC_TEXT_RIVER] = gPCText_River,
[PC_TEXT_SKY] = gPCText_Sky,
[PC_TEXT_POLKADOT] = gPCText_PolkaDot,
[PC_TEXT_POKECENTER] = gPCText_Pokecenter,
[PC_TEXT_MACHINE] = gPCText_Machine,
[PC_TEXT_SIMPLE] = gPCText_Simple,
};
void SetMenuText(u8 textId)
{
if (sPSSData->menuItemsCount < MAX_MENU_ITEMS)
{
u8 len;
struct StorageMenu *menu = &sPSSData->menuItems[sPSSData->menuItemsCount];
menu->text = sMenuTexts[textId];
menu->textId = textId;
len = StringLength(menu->text);
if (len > sPSSData->menuWidth)
sPSSData->menuWidth = len;
sPSSData->menuItemsCount++;
}
}
s8 sub_8094E50(u8 arg0)
{
if (arg0 >= sPSSData->menuItemsCount)
return -1;
else
return sPSSData->menuItems[arg0].textId;
}
void AddMenu(void)
{
sPSSData->menuWindow.width = sPSSData->menuWidth + 2;
sPSSData->menuWindow.height = 2 * sPSSData->menuItemsCount;
sPSSData->menuWindow.tilemapLeft = 29 - sPSSData->menuWindow.width;
sPSSData->menuWindow.tilemapTop = 15 - sPSSData->menuWindow.height;
sPSSData->field_CB0 = AddWindow(&sPSSData->menuWindow);
ClearWindowTilemap(sPSSData->field_CB0);
DrawStdFrameWithCustomTileAndPalette(sPSSData->field_CB0, FALSE, 0x00b, 14);
PrintTextArray(sPSSData->field_CB0, 1, 8, 2, 16, sPSSData->menuItemsCount, (void*)sPSSData->menuItems);
Menu_InitCursor(sPSSData->field_CB0, 1, 0, 2, 16, sPSSData->menuItemsCount, 0);
ScheduleBgCopyTilemapToVram(0);
sPSSData->field_CAE = 0;
}
+37 -37
View File
@@ -631,43 +631,43 @@ const u8 gText_PutItemInBag[] = _("Put this item in the BAG?");
const u8 gText_ItemIsNowHeld[] = _("{DYNAMIC 0x00} is now held.");
const u8 gText_ChangedToNewItem[] = _("Changed to {DYNAMIC 0x00}.");
const u8 gText_MailCantBeStored[] = _("MAIL can't be stored!");
const u8 gUnknown_8418468[] = _("CANCEL");
const u8 gUnknown_841846F[] = _("STORE");
const u8 gUnknown_8418475[] = _("WITHDRAW");
const u8 gUnknown_841847E[] = _("SHIFT");
const u8 gUnknown_8418484[] = _("MOVE");
const u8 gUnknown_8418489[] = _("PLACE");
const u8 gUnknown_841848F[] = _("SUMMARY");
const u8 gUnknown_8418497[] = _("RELEASE");
const u8 gUnknown_841849F[] = _("MARK");
const u8 gUnknown_84184A4[] = _("NAME");
const u8 gUnknown_84184A9[] = _("JUMP");
const u8 gUnknown_84184AE[] = _("WALLPAPER");
const u8 gUnknown_84184B8[] = _("TAKE");
const u8 gUnknown_84184BD[] = _("GIVE");
const u8 gUnknown_84184C2[] = _("SWITCH");
const u8 gUnknown_84184C9[] = _("BAG");
const u8 gUnknown_84184CD[] = _("INFO");
const u8 gUnknown_84184D2[] = _("SCENERY 1");
const u8 gUnknown_84184DC[] = _("SCENERY 2");
const u8 gUnknown_84184E6[] = _("SCENERY 3");
const u8 gUnknown_84184F0[] = _("ETCETERA");
const u8 gUnknown_84184F9[] = _("FOREST");
const u8 gUnknown_8418500[] = _("CITY");
const u8 gUnknown_8418505[] = _("DESERT");
const u8 gUnknown_841850C[] = _("SAVANNA");
const u8 gUnknown_8418514[] = _("CRAG");
const u8 gUnknown_8418519[] = _("VOLCANO");
const u8 gUnknown_8418521[] = _("SNOW");
const u8 gUnknown_8418526[] = _("CAVE");
const u8 gUnknown_841852B[] = _("BEACH");
const u8 gUnknown_8418531[] = _("SEAFLOOR");
const u8 gUnknown_841853A[] = _("RIVER");
const u8 gUnknown_8418540[] = _("SKY");
const u8 gUnknown_8418544[] = _("STARS");
const u8 gUnknown_841854A[] = _("POKéCENTER");
const u8 gUnknown_8418555[] = _("TILES");
const u8 gUnknown_841855B[] = _("SIMPLE");
const u8 gPCText_Cancel[] = _("CANCEL");
const u8 gPCText_Store[] = _("STORE");
const u8 gPCText_Withdraw[] = _("WITHDRAW");
const u8 gPCText_Shift[] = _("SHIFT");
const u8 gPCText_Move[] = _("MOVE");
const u8 gPCText_Place[] = _("PLACE");
const u8 gPCText_Summary[] = _("SUMMARY");
const u8 gPCText_Release[] = _("RELEASE");
const u8 gPCText_Mark[] = _("MARK");
const u8 gPCText_Name[] = _("NAME");
const u8 gPCText_Jump[] = _("JUMP");
const u8 gPCText_Wallpaper[] = _("WALLPAPER");
const u8 gPCText_Take[] = _("TAKE");
const u8 gPCText_Give[] = _("GIVE");
const u8 gPCText_Switch[] = _("SWITCH");
const u8 gPCText_Bag[] = _("BAG");
const u8 gPCText_Info[] = _("INFO");
const u8 gPCText_Scenery1[] = _("SCENERY 1");
const u8 gPCText_Scenery2[] = _("SCENERY 2");
const u8 gPCText_Scenery3[] = _("SCENERY 3");
const u8 gPCText_Etcetera[] = _("ETCETERA");
const u8 gPCText_Forest[] = _("FOREST");
const u8 gPCText_City[] = _("CITY");
const u8 gPCText_Desert[] = _("DESERT");
const u8 gPCText_Savanna[] = _("SAVANNA");
const u8 gPCText_Crag[] = _("CRAG");
const u8 gPCText_Volcano[] = _("VOLCANO");
const u8 gPCText_Snow[] = _("SNOW");
const u8 gPCText_Cave[] = _("CAVE");
const u8 gPCText_Beach[] = _("BEACH");
const u8 gPCText_Seafloor[] = _("SEAFLOOR");
const u8 gPCText_River[] = _("RIVER");
const u8 gPCText_Sky[] = _("SKY");
const u8 gPCText_PolkaDot[] = _("STARS");
const u8 gPCText_Pokecenter[] = _("POKéCENTER");
const u8 gPCText_Machine[] = _("TILES");
const u8 gPCText_Simple[] = _("SIMPLE");
const u8 gUnknown_8418562[] = _("なにを しますか?");
const u8 gText_WithdrawPokemon[] = _("WITHDRAW POKéMON");
const u8 gText_DepositPokemon[] = _("DEPOSIT POKéMON");