summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarijn van der Werf <marijn.vanderwerf@gmail.com>2017-05-09 20:10:33 +0200
committerYamaArashi <YamaArashi@users.noreply.github.com>2017-05-09 16:05:24 -0700
commitec2abbf46a9037eac81a152bae408d026648561d (patch)
tree72f5a2ceedbacc6a983a88695ac6d17cd3e294cb
parentfbebe08ae94b8e165ba120d71959554765307ce3 (diff)
Decompile sub_8098898
-rw-r--r--asm/pokemon_storage_system.s191
-rw-r--r--ld_script.txt2
-rw-r--r--src/pokemon_storage_system.c93
3 files changed, 96 insertions, 190 deletions
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index cc82a2f8c..176a42124 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -5891,196 +5891,7 @@ _08098892:
bx r1
thumb_func_end sub_8098830
- thumb_func_start sub_8098898
-sub_8098898: @ 8098898
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0xA
- movs r1, 0x10
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r1, _080988C4 @ =gUnknown_083B6DF4
- lsls r0, r5, 3
- adds r0, r1
- ldrb r0, [r0, 0x4]
- cmp r0, 0x6
- bls _080988B8
- b _080989F4
-_080988B8:
- lsls r0, 2
- ldr r1, _080988C8 @ =_080988CC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080988C4: .4byte gUnknown_083B6DF4
-_080988C8: .4byte _080988CC
- .align 2, 0
-_080988CC:
- .4byte _080989F4
- .4byte _08098930
- .4byte _080988E8
- .4byte _08098974
- .4byte _08098954
- .4byte _08098910
- .4byte _080989B8
-_080988E8:
- ldr r4, _08098904 @ =0x02002694
- ldr r1, _08098908 @ =gUnknown_083B6DF4
- lsls r0, r5, 3
- adds r0, r1
- ldr r1, [r0]
- adds r0, r4, 0
- bl StringCopy
- adds r2, r0, 0
- ldr r0, _0809890C @ =0xffffeb66
- adds r4, r0
- adds r0, r2, 0
- adds r1, r4, 0
- b _080989FE
- .align 2, 0
-_08098904: .4byte 0x02002694
-_08098908: .4byte gUnknown_083B6DF4
-_0809890C: .4byte 0xffffeb66
-_08098910:
- ldr r4, _08098928 @ =0x02002694
- ldr r1, _0809892C @ =gUnknown_083B6DF4
- lsls r0, r5, 3
- adds r0, r1
- ldr r1, [r0]
- adds r0, r4, 0
- bl StringCopy
- adds r2, r0, 0
- adds r4, 0x50
- adds r1, r4, 0
- b _080989FE
- .align 2, 0
-_08098928: .4byte 0x02002694
-_0809892C: .4byte gUnknown_083B6DF4
-_08098930:
- ldr r0, _08098948 @ =0x02002694
- ldr r2, _0809894C @ =0xffffeb66
- adds r1, r0, r2
- bl StringCopy
- adds r2, r0, 0
- ldr r1, _08098950 @ =gUnknown_083B6DF4
- lsls r0, r5, 3
- adds r0, r1
- ldr r1, [r0]
- adds r0, r2, 0
- b _080989FE
- .align 2, 0
-_08098948: .4byte 0x02002694
-_0809894C: .4byte 0xffffeb66
-_08098950: .4byte gUnknown_083B6DF4
-_08098954:
- ldr r0, _0809896C @ =0x02002694
- adds r1, r0, 0
- adds r1, 0x50
- bl StringCopy
- adds r2, r0, 0
- ldr r1, _08098970 @ =gUnknown_083B6DF4
- lsls r0, r5, 3
- adds r0, r1
- ldr r1, [r0]
- adds r0, r2, 0
- b _080989FE
- .align 2, 0
-_0809896C: .4byte 0x02002694
-_08098970: .4byte gUnknown_083B6DF4
-_08098974:
- ldr r1, _080989AC @ =gUnknown_083B6DF4
- lsls r0, r5, 3
- adds r0, r1
- ldr r6, [r0]
- adds r0, r6, 0
- bl StringLength
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r4, r6, r4
- adds r4, 0x1
- ldr r5, _080989B0 @ =0x02002694
- adds r0, r5, 0
- adds r1, r6, 0
- bl StringCopy
- adds r2, r0, 0
- ldr r0, _080989B4 @ =0xffffeb66
- adds r5, r0
- adds r0, r2, 0
- adds r1, r5, 0
- bl StringCopy
- adds r2, r0, 0
- adds r1, r4, 0
- b _080989FE
- .align 2, 0
-_080989AC: .4byte gUnknown_083B6DF4
-_080989B0: .4byte 0x02002694
-_080989B4: .4byte 0xffffeb66
-_080989B8:
- ldr r1, _080989EC @ =gUnknown_083B6DF4
- lsls r0, r5, 3
- adds r0, r1
- ldr r6, [r0]
- adds r0, r6, 0
- bl StringLength
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r4, r6, r4
- subs r4, 0x1
- ldr r5, _080989F0 @ =0x02002694
- adds r0, r5, 0
- adds r1, r6, 0
- bl StringCopy
- adds r2, r0, 0
- subs r0, r2, 0x1
- adds r5, 0x50
- adds r1, r5, 0
- bl StringCopy
- adds r2, r0, 0
- adds r1, r4, 0
- b _080989FE
- .align 2, 0
-_080989EC: .4byte gUnknown_083B6DF4
-_080989F0: .4byte 0x02002694
-_080989F4:
- ldr r0, _08098A2C @ =0x02002694
- ldr r2, _08098A30 @ =gUnknown_083B6DF4
- lsls r1, r5, 3
- adds r1, r2
- ldr r1, [r1]
-_080989FE:
- bl StringCopy
- adds r2, r0, 0
- ldr r0, _08098A34 @ =0x020026a6
- adds r3, r0, 0
- subs r3, 0x12
- cmp r2, r0
- bcs _08098A18
- movs r1, 0
-_08098A10:
- strb r1, [r2]
- adds r2, 0x1
- cmp r2, r0
- bcc _08098A10
-_08098A18:
- movs r0, 0xFF
- strb r0, [r2]
- adds r0, r3, 0
- movs r1, 0xB
- movs r2, 0x11
- bl MenuPrint
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08098A2C: .4byte 0x02002694
-_08098A30: .4byte gUnknown_083B6DF4
-_08098A34: .4byte 0x020026a6
- thumb_func_end sub_8098898
+.section .text_8098A38
thumb_func_start sub_8098A38
sub_8098A38: @ 8098A38
diff --git a/ld_script.txt b/ld_script.txt
index c5ab999fe..c68da5bf3 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -146,6 +146,8 @@ SECTIONS {
asm/rom_8094928.o(.text);
src/battle_party_menu.o(.text);
asm/pokemon_storage_system.o(.text);
+ src/pokemon_storage_system.o(.text);
+ asm/pokemon_storage_system.o(.text_8098A38);
asm/pokemon_icon.o(.text);
asm/pokemon_summary_screen.o(.text);
src/pokemon_summary_screen.o(.text);
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
new file mode 100644
index 000000000..679ec0bc4
--- /dev/null
+++ b/src/pokemon_storage_system.c
@@ -0,0 +1,93 @@
+#include "global.h"
+#include "menu.h"
+#include "string_util.h"
+
+struct StorageAction {
+ u8 *text;
+ u8 format;
+};
+
+extern const struct StorageAction gUnknown_083B6DF4[];
+
+extern const u8 unk_2000000[];
+
+#define gUnk2002694 (u8 *)(&unk_2000000[0x2694])
+#define gUnk20026A6 (u8 *)(&unk_2000000[0x26a6])
+#define gUnk20011fa (u8 *)(&unk_2000000[0x11fa])
+#define gUnk20026e4 (u8 *)(&unk_2000000[0x26e4])
+
+void sub_8098898(u8 index) {
+ u8 *ptr;
+
+ MenuDrawTextWindow(10, 16, 29, 19);
+
+ switch (gUnknown_083B6DF4[index].format)
+ {
+
+ case 2:
+ ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text);
+ ptr = StringCopy(ptr, gUnk20011fa);
+ break;
+
+ case 5:
+ ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text);
+ ptr = StringCopy(ptr, gUnk20026e4);
+ break;
+
+ case 1:
+ // {var} + " is selected."
+ ptr = StringCopy(gUnk2002694, gUnk20011fa);
+ ptr = StringCopy(ptr, gUnknown_083B6DF4[index].text);
+ break;
+
+ case 4:
+ // TODO: fix for German
+ // {var} + " was released."
+ ptr = StringCopy(gUnk2002694, gUnk20026e4);
+ ptr = StringCopy(ptr, gUnknown_083B6DF4[index].text);
+ break;
+
+ case 3:
+ {
+ u8 *stringLength;
+ u8 *text;
+
+ text = gUnknown_083B6DF4[index].text;
+ stringLength = &text[StringLength(text)] + 1;
+
+ ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text);
+ ptr = StringCopy(ptr, gUnk20011fa);
+ ptr = StringCopy(ptr, stringLength);
+ }
+ break;
+
+ case 6:
+ // "Bye-bye, ".substr(0, -1) + {var} + "Bye-bye, !".substr(-1, 1)
+ {
+ u8 *stringLength;
+ u8 *text;
+
+ text = gUnknown_083B6DF4[index].text;
+ stringLength = &text[StringLength(text)] - 1;
+
+ ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text);
+ ptr = StringCopy(ptr - 1, gUnk20026e4);
+ ptr = StringCopy(ptr, stringLength);
+ }
+ break;
+
+ case 0:
+ default:
+ ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text);
+ break;
+ }
+
+ while (ptr < gUnk20026A6)
+ {
+ ptr[0] = CHAR_SPACE;
+ ptr++;
+ }
+
+ ptr[0] = EOS;
+ MenuPrint(gUnk2002694, 11, 17);
+}