summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-01-09 21:18:42 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2018-01-09 21:18:42 -0500
commitc4244f5bec27741c18a12611f245df5572b11d8b (patch)
treec347f774be8e357363c7fb6a4889f043e118d3c4
parentf361bbd3e63a0b342ddfbd4c4c8d9e5a7536d2cc (diff)
through sub_8098BF0
-rw-r--r--asm/pokemon_storage_system.s142
-rw-r--r--include/pokemon_storage_system.h21
-rw-r--r--ld_script.txt2
-rw-r--r--src/pokemon/pokemon_storage_system.c14
-rw-r--r--src/pokemon/pokemon_storage_system_2.c27
-rw-r--r--src/pokemon/pokemon_storage_system_3.c52
-rw-r--r--src/pokemon/pokemon_storage_system_4.c23
-rw-r--r--src/pokemon/pokemon_storage_system_5.c16
-rw-r--r--sym_ewram.txt7
9 files changed, 126 insertions, 178 deletions
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index a4cf34a2b..7e6f34d53 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -5,142 +5,6 @@
.text
- thumb_func_start get_preferred_box
-get_preferred_box: @ 8098B3C
- ldr r0, _08098B44 @ =gPokemonStorage
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_08098B44: .4byte gPokemonStorage
- thumb_func_end get_preferred_box
-
- thumb_func_start sub_8098B48
-sub_8098B48: @ 8098B48
- push {r4,r5,lr}
- bl sub_809D51C
- movs r2, 0
- ldr r1, _08098BD8 @ =gPokemonStorageSystemPtr
- ldr r0, [r1]
- ldr r4, _08098BDC @ =0x000010d0
- adds r3, r0, r4
- movs r4, 0
- adds r5, r1, 0
-_08098B5C:
- lsls r0, r2, 1
- adds r0, r3, r0
- strh r4, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x27
- bls _08098B5C
- movs r2, 0
- ldr r0, _08098BD8 @ =gPokemonStorageSystemPtr
- ldr r0, [r0]
- movs r1, 0x89
- lsls r1, 5
- adds r3, r0, r1
- movs r1, 0
-_08098B7A:
- lsls r0, r2, 1
- adds r0, r3, r0
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x27
- bls _08098B7A
- movs r2, 0
- ldr r0, _08098BD8 @ =gPokemonStorageSystemPtr
- ldr r0, [r0]
- ldr r4, _08098BE0 @ =0x00001038
- adds r3, r0, r4
- movs r1, 0
-_08098B96:
- lsls r0, r2, 2
- adds r0, r3, r0
- str r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x5
- bls _08098B96
- movs r2, 0
- ldr r0, _08098BD8 @ =gPokemonStorageSystemPtr
- ldr r0, [r0]
- ldr r1, _08098BE4 @ =0x00001050
- adds r3, r0, r1
- movs r1, 0
-_08098BB2:
- lsls r0, r2, 2
- adds r0, r3, r0
- str r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x1D
- bls _08098BB2
- ldr r0, [r5]
- ldr r2, _08098BE8 @ =0x00001034
- adds r1, r0, r2
- movs r2, 0
- str r2, [r1]
- ldr r4, _08098BEC @ =0x00000d5c
- adds r0, r4
- strh r2, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08098BD8: .4byte gPokemonStorageSystemPtr
-_08098BDC: .4byte 0x000010d0
-_08098BE0: .4byte 0x00001038
-_08098BE4: .4byte 0x00001050
-_08098BE8: .4byte 0x00001034
-_08098BEC: .4byte 0x00000d5c
- thumb_func_end sub_8098B48
-
- thumb_func_start sub_8098BF0
-sub_8098BF0: @ 8098BF0
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r0, _08098C38 @ =gPokemonStorageSystemPtr
- ldr r5, [r0]
- ldr r0, _08098C3C @ =0x000025b4
- adds r4, r5, r0
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- adds r6, r0, 0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0x7
- str r1, [sp, 0x4]
- adds r1, r6, 0
- movs r2, 0
- movs r3, 0
- bl sub_8099AFC
- ldr r1, _08098C40 @ =0x00001034
- adds r5, r1
- str r0, [r5]
- ldr r1, _08098C44 @ =sub_80999C4
- str r1, [r0, 0x1C]
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08098C38: .4byte gPokemonStorageSystemPtr
-_08098C3C: .4byte 0x000025b4
-_08098C40: .4byte 0x00001034
-_08098C44: .4byte sub_80999C4
- thumb_func_end sub_8098BF0
-
thumb_func_start sub_8098C48
sub_8098C48: @ 8098C48
push {r4-r7,lr}
@@ -2216,6 +2080,8 @@ sub_8099BE0: @ 8099BE0
bx r0
thumb_func_end sub_8099BE0
+// file boundary?
+
thumb_func_start sub_8099BF8
sub_8099BF8: @ 8099BF8
push {r4,lr}
@@ -6273,6 +6139,8 @@ _0809BB88: .4byte gPokemonStorageSystemPtr
_0809BB8C: .4byte 0x0000267d
thumb_func_end sub_809B960
+// file boundary at or before here
+
thumb_func_start sub_809BB90
sub_809BB90: @ 809BB90
push {lr}
@@ -8589,6 +8457,8 @@ _0809CDC4: .4byte gPokemonStorageSystemPtr
_0809CDC8: .4byte 0x000011e4
thumb_func_end sub_809CD88
+// file boundary here
+
thumb_func_start sub_809CDCC
sub_809CDCC: @ 809CDCC
ldr r0, _0809CDE0 @ =gPokemonStorageSystemPtr
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index ab2a14362..7f16b5d4f 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -90,10 +90,18 @@ struct PokemonStorageSystemData {
bool8 unk_08b1;
s16 unk_08b2;
u16 unk_08b4;
- u8 filler_08b6[0x4a8];
+ u8 filler_08b6[0x4a6];
+ u16 unk_0d5c;
s16 unk_0d5e;
s16 unk_0d60;
- u8 filler_0d62[0x486];
+ u8 filler_0d62[0x2d2];
+ struct Sprite *unk_1034;
+ u32 unk_1038[6];
+ u32 unk_1050[30];
+ u8 filler_10c8[8];
+ u16 unk_10d0[40];
+ u16 unk_1120[40];
+ u8 filler_1170[0x78];
u8 *unk_11e8;
u32 unk_11ec;
u16 unk_11f0;
@@ -113,7 +121,8 @@ struct PokemonStorageSystemData {
u16 *unk_12b8;
struct PokemonMarkMenu unk_12bc;
struct UnkPSSStruct_2002370 unk_2370;
- u8 filler_25b4[0xd8];
+ struct Pokemon unk_25b4;
+ u8 filler_2618[0x74];
u8 unk_268c;
u8 unk_268d;
u8 unk_268e;
@@ -131,11 +140,12 @@ struct PokemonStorageSystemData {
u8 unk_4784[0x800];
};
-extern EWRAM_DATA u16 gUnknown_02039760[0x600];
-
+extern u16 gUnknown_02039760[0x600];
+extern struct UnkPSSStruct_2002370 *gUnknown_02038478;
extern struct PokemonStorageSystemData *const gPokemonStorageSystemPtr;
extern u8 *const gUnknown_083B6DB8;
+u8 CountPokemonInBoxN(u8 boxId);
void sub_8096264(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3);
void sub_809634C(u8 curBox);
u8 sub_8096368(void);
@@ -145,6 +155,7 @@ void sub_80961A8(void);
void task_intro_29(u8 whichMenu);
void ResetPokemonStorageSystem(void);
void sub_8098B48(void);
+void sub_8099200(u8 a0);
void sub_8099310(void);
bool8 sub_8099374(void);
void sub_80994A8(s16 a0);
diff --git a/ld_script.txt b/ld_script.txt
index f81caa5bf..76f3ce9f9 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -130,6 +130,8 @@ SECTIONS {
src/pokemon/pokemon_storage_system.o(.text);
src/pokemon/pokemon_storage_system_2.o(.text);
src/pokemon/pokemon_storage_system_3.o(.text);
+ src/pokemon/pokemon_storage_system_4.o(.text);
+ src/pokemon/pokemon_storage_system_5.o(.text);
asm/pokemon_storage_system.o(.text);
src/pokemon/pokemon_icon.o(.text);
src/pokemon/pokemon_summary_screen.o(.text);
diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c
index c91e45d7a..aebd13498 100644
--- a/src/pokemon/pokemon_storage_system.c
+++ b/src/pokemon/pokemon_storage_system.c
@@ -22,6 +22,12 @@ void sub_809665C(void);
void sub_80966F4(const u8 *sourceString, u16 x, u16 y);
void sub_8096784(struct Sprite *sprite);
+EWRAM_DATA struct PokemonStorage gPokemonStorage = {0};
+EWRAM_DATA u8 gUnknown_02038470[3] = {};
+EWRAM_DATA u8 gUnknown_02038473 = 0;
+EWRAM_DATA u8 gUnknown_02038474 = 0;
+EWRAM_DATA struct UnkPSSStruct_2002370 *gUnknown_02038478 = NULL;
+
const struct PSS_MenuStringPtrs gUnknown_083B600C[] = {
{PCText_WithdrawPoke, PCText_MovePokeToParty},
{PCText_DepositPoke, PCText_StorePokeInBox},
@@ -71,13 +77,7 @@ const u8 gBoxSelectionPopupCenterTiles[] = INCBIN_U8("graphics/pokemon_storage/b
const u8 gBoxSelectionPopupSidesTiles[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_sides.4bpp");
-EWRAM_DATA struct PokemonStorage gPokemonStorage = {0};
-EWRAM_DATA u8 gUnknown_02038470[3] = {};
-EWRAM_DATA u8 gUnknown_02038473 = 0;
-EWRAM_DATA u8 gUnknown_02038474 = 0;
-EWRAM_DATA struct UnkPSSStruct_2002370 *gUnknown_02038478 = NULL;
-
-static u8 CountPokemonInBoxN(u8 boxId)
+u8 CountPokemonInBoxN(u8 boxId)
{
u16 i;
u16 count;
diff --git a/src/pokemon/pokemon_storage_system_2.c b/src/pokemon/pokemon_storage_system_2.c
index 474f16323..2947562d0 100644
--- a/src/pokemon/pokemon_storage_system_2.c
+++ b/src/pokemon/pokemon_storage_system_2.c
@@ -27,15 +27,6 @@ EWRAM_DATA u8 gUnknown_0203847C = 0;
EWRAM_DATA u8 gUnknown_0203847D = 0;
EWRAM_DATA u8 gUnknown_0203847E = 0;
EWRAM_DATA u8 gUnknown_0203847F = 0;
-EWRAM_DATA struct Pokemon gUnknown_02038480 = {};
-EWRAM_DATA u8 gUnknown_020384E4 = 0;
-EWRAM_DATA u8 gUnknown_020384E5 = 0;
-EWRAM_DATA u8 gUnknown_020384E6 = 0;
-EWRAM_DATA u8 gUnknown_020384E7 = 0;
-EWRAM_DATA u8 gUnknown_020384E8 = 0;
-EWRAM_DATA u8 gUnknown_020384E9 = 0;
-EWRAM_DATA u16 gUnknown_020384EA = 0;
-EWRAM_DATA u32 gUnknown_020384EC = 0;
// Static ROM declarations
@@ -80,7 +71,6 @@ void sub_8098400(void);
void add_to_c3_somehow(void);
void sub_8098780(void);
void sub_8098690(bool8 flag);
-void sub_8099200(u8 a0);
bool8 sub_80985CC(void);
void sub_80986E8(void);
void sub_8098710(void);
@@ -159,7 +149,6 @@ const struct SpritePalette gWaveformSpritePalette = {
// .text
-
void task_intro_29(u8 whichMenu)
{
gUnknown_0203847D = whichMenu;
@@ -2017,22 +2006,6 @@ const struct SpriteTemplate gSpriteTemplate_83B6EFC = {
SpriteCallbackDummy
};
-const struct OamData gOamData_83B6F2C;
-
-const struct SpriteTemplate gSpriteTemplate_83B6F14 = {
- 0x000f,
- 0xdac0,
- &gOamData_83B6F2C,
- gDummySpriteAnimTable,
- NULL,
- gDummySpriteAffineAnimTable,
- SpriteCallbackDummy
-};
-
-const struct OamData gOamData_83B6F2C = {
- .size = 2
-};
-
void sub_8098A38(s8 a0)
{
DisplayYesNoMenu(23, 10, 0);
diff --git a/src/pokemon/pokemon_storage_system_3.c b/src/pokemon/pokemon_storage_system_3.c
index 9e0052b89..eff542756 100644
--- a/src/pokemon/pokemon_storage_system_3.c
+++ b/src/pokemon/pokemon_storage_system_3.c
@@ -1,16 +1,64 @@
// Includes
#include "global.h"
+#include "sprite.h"
+#include "pokemon_icon.h"
#include "pokemon_storage_system.h"
// Static type declarations
// Static RAM declarations
-EWRAM_DATA u16 gUnknown_02039760[0x600] = {};
-
// Static ROM declarations
+void sub_80999C4(struct Sprite *sprite);
+struct Sprite *sub_8099AFC(u16 species, u32 personality, u16 a2, u16 a3, u8 a4, u8 a5);
+
// .rodata
+const struct OamData gOamData_83B6F2C;
+
+const struct SpriteTemplate gSpriteTemplate_83B6F14 = {
+ 0x000f,
+ 0xdac0,
+ &gOamData_83B6F2C,
+ gDummySpriteAnimTable,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
+
+const struct OamData gOamData_83B6F2C = {
+ .size = 2
+};
+
// .text
+
+u8 get_preferred_box(void)
+{
+ return gPokemonStorage.currentBox;
+}
+
+void sub_8098B48(void)
+{
+ u16 i;
+
+ sub_809D51C();
+ for (i = 0; i < 40; i++)
+ gPokemonStorageSystemPtr->unk_10d0[i] = 0;
+ for (i = 0; i < 40; i++)
+ gPokemonStorageSystemPtr->unk_1120[i] = 0;
+ for (i = 0; i < 6; i++)
+ gPokemonStorageSystemPtr->unk_1038[i] = 0;
+ for (i = 0; i < 30; i++)
+ gPokemonStorageSystemPtr->unk_1050[i] = 0;
+ gPokemonStorageSystemPtr->unk_1034 = NULL;
+ gPokemonStorageSystemPtr->unk_0d5c = 0;
+}
+
+void sub_8098BF0(void)
+{
+ u32 personality = GetMonData(&gPokemonStorageSystemPtr->unk_25b4, MON_DATA_PERSONALITY);
+ gPokemonStorageSystemPtr->unk_1034 = sub_8099AFC(GetMonData(&gPokemonStorageSystemPtr->unk_25b4, MON_DATA_SPECIES2), personality, 0, 0, 1, 7);
+ gPokemonStorageSystemPtr->unk_1034->callback = sub_80999C4;
+}
diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c
new file mode 100644
index 000000000..f7a008db2
--- /dev/null
+++ b/src/pokemon/pokemon_storage_system_4.c
@@ -0,0 +1,23 @@
+
+// Includes
+#include "global.h"
+#include "pokemon_storage_system.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+EWRAM_DATA struct Pokemon gUnknown_02038480 = {};
+EWRAM_DATA u8 gUnknown_020384E4 = 0;
+EWRAM_DATA u8 gUnknown_020384E5 = 0;
+EWRAM_DATA u8 gUnknown_020384E6 = 0;
+EWRAM_DATA u8 gUnknown_020384E7 = 0;
+EWRAM_DATA u8 gUnknown_020384E8 = 0;
+EWRAM_DATA u8 gUnknown_020384E9 = 0;
+EWRAM_DATA u16 gUnknown_020384EA = 0;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/pokemon/pokemon_storage_system_5.c b/src/pokemon/pokemon_storage_system_5.c
new file mode 100644
index 000000000..f809439ff
--- /dev/null
+++ b/src/pokemon/pokemon_storage_system_5.c
@@ -0,0 +1,16 @@
+
+// Includes
+#include "global.h"
+#include "pokemon_storage_system.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+EWRAM_DATA u32 gUnknown_020384EC = 0;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/sym_ewram.txt b/sym_ewram.txt
index ac9805f3e..4b5de3e85 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -379,6 +379,9 @@ gUnknown_0202FFA4: @ 202FFA4
.include "src/engine/trainer_card.o"
.include "src/pokemon/pokemon_storage_system.o"
.include "src/pokemon/pokemon_storage_system_2.o"
+ .include "src/pokemon/pokemon_storage_system_3.o"
+ .include "src/pokemon/pokemon_storage_system_4.o"
+ .include "src/pokemon/pokemon_storage_system_5.o"
@ pokemon_summary_screen
@@ -561,5 +564,7 @@ gTileBuffer: @ 2039360
gUnknown_02039460: @ 2039460
.space 0x300
- .include "src/pokemon/pokemon_storage_system_3.o"
+gUnknown_02039760: @ 2039760
+ .space 0xc00
+
.include "src/engine/menu_cursor.o"