summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokemon_storage_system.s331
-rw-r--r--include/mon_markings.h1
-rw-r--r--include/pokemon_storage_system.h17
-rw-r--r--src/pokemon/pokemon_storage_system_2.c321
4 files changed, 292 insertions, 378 deletions
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index bd1007f5d..eaed44102 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -5,335 +5,6 @@
.text
- thumb_func_start sub_8097F58
-sub_8097F58: @ 8097F58
- push {r4,lr}
- ldr r1, _08097FA4 @ =0x0000dace
- movs r0, 0xD
- movs r2, 0
- bl sub_80F7940
- ldr r4, _08097FA8 @ =gSharedMem
- ldr r1, _08097FAC @ =0x000012ac
- adds r3, r4, r1
- str r0, [r3]
- ldrb r2, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- strb r1, [r0, 0x5]
- ldr r0, [r3]
- adds r0, 0x43
- movs r1, 0x1
- strb r1, [r0]
- ldr r1, [r3]
- movs r0, 0x28
- strh r0, [r1, 0x20]
- ldr r1, [r3]
- movs r0, 0x95
- strh r0, [r1, 0x22]
- movs r0, 0xD
- bl GetSpriteTileStartByTag
- ldr r1, _08097FB0 @ =0x000012b8
- adds r4, r1
- lsls r0, 16
- lsrs r0, 11
- ldr r1, _08097FB4 @ =0x06010000
- adds r0, r1
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08097FA4: .4byte 0x0000dace
-_08097FA8: .4byte gSharedMem
-_08097FAC: .4byte 0x000012ac
-_08097FB0: .4byte 0x000012b8
-_08097FB4: .4byte 0x06010000
- thumb_func_end sub_8097F58
-
- thumb_func_start sub_8097FB8
-sub_8097FB8: @ 8097FB8
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r0, _0809800C @ =gWaveformSpriteSheet
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- movs r4, 0
- ldr r5, _08098010 @ =gSharedMem + 0x12B0
-_08097FD0:
- lsls r1, r4, 6
- subs r1, r4
- adds r1, 0x8
- lsls r1, 16
- asrs r1, 16
- ldr r0, _08098014 @ =gSpriteTemplate_83B6EFC
- movs r2, 0x9
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r4, 2
- adds r2, r5
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08098018 @ =gSprites
- adds r1, r0
- str r1, [r2]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1
- bls _08097FD0
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809800C: .4byte gWaveformSpriteSheet
-_08098010: .4byte gSharedMem + 0x12B0
-_08098014: .4byte gSpriteTemplate_83B6EFC
-_08098018: .4byte gSprites
- thumb_func_end sub_8097FB8
-
- thumb_func_start sub_809801C
-sub_809801C: @ 809801C
- push {lr}
- ldr r1, _0809803C @ =gSharedMem
- ldr r2, _08098040 @ =0x000011f0
- adds r0, r1, r2
- ldrh r0, [r0]
- subs r2, 0x4
- adds r1, r2
- ldr r1, [r1]
- bl sub_80981F0
- bl sub_80982B4
- bl sub_8098350
- pop {r0}
- bx r0
- .align 2, 0
-_0809803C: .4byte gSharedMem
-_08098040: .4byte 0x000011f0
- thumb_func_end sub_809801C
-
- thumb_func_start BoxSetMosaic
-BoxSetMosaic: @ 8098044
- push {lr}
- bl sub_809801C
- ldr r0, _08098084 @ =gSharedMem
- movs r1, 0x9C
- lsls r1, 6
- adds r3, r0, r1
- ldr r2, [r3]
- cmp r2, 0
- beq _08098080
- ldrb r0, [r2, 0x1]
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldr r1, [r3]
- movs r0, 0xA
- strh r0, [r1, 0x2E]
- ldr r1, [r3]
- movs r0, 0x1
- strh r0, [r1, 0x30]
- ldr r1, [r3]
- ldr r0, _08098088 @ =sub_8098090
- str r0, [r1, 0x1C]
- ldr r2, _0809808C @ =REG_MOSAIC
- ldr r0, [r3]
- ldrh r0, [r0, 0x2E]
- lsls r1, r0, 12
- lsls r0, 8
- orrs r1, r0
- strh r1, [r2]
-_08098080:
- pop {r0}
- bx r0
- .align 2, 0
-_08098084: .4byte gSharedMem
-_08098088: .4byte sub_8098090
-_0809808C: .4byte REG_MOSAIC
- thumb_func_end BoxSetMosaic
-
- thumb_func_start sub_8098090
-sub_8098090: @ 8098090
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- ldrh r1, [r3, 0x30]
- subs r0, r1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bge _080980A6
- movs r0, 0
- strh r0, [r3, 0x2E]
-_080980A6:
- ldr r2, _080980CC @ =REG_MOSAIC
- ldrh r0, [r3, 0x2E]
- lsls r1, r0, 12
- lsls r0, 8
- orrs r1, r0
- strh r1, [r2]
- movs r1, 0x2E
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _080980C8
- ldrb r0, [r3, 0x1]
- movs r1, 0x11
- negs r1, r1
- ands r1, r0
- strb r1, [r3, 0x1]
- ldr r0, _080980D0 @ =SpriteCallbackDummy
- str r0, [r3, 0x1C]
-_080980C8:
- pop {r0}
- bx r0
- .align 2, 0
-_080980CC: .4byte REG_MOSAIC
-_080980D0: .4byte SpriteCallbackDummy
- thumb_func_end sub_8098090
-
- thumb_func_start sub_80980D4
-sub_80980D4: @ 80980D4
- push {r4,r5,lr}
- sub sp, 0x28
- ldr r0, _08098150 @ =gUnknown_083B6DCC
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x18]
- str r1, [sp, 0x1C]
- ldr r0, _08098154 @ =gUnknown_083B6DD4
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x20]
- str r1, [sp, 0x24]
- mov r1, sp
- ldr r0, _08098158 @ =gSpriteTemplate_83B6DDC
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- movs r1, 0
- add r5, sp, 0x18
- ldr r4, _0809815C @ =gSharedMem + 0x2784
- movs r3, 0
- ldr r2, _08098160 @ =0x000007ff
-_08098102:
- adds r0, r1, r4
- strb r3, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, r2
- bls _08098102
- movs r1, 0
- ldr r3, _08098164 @ =gSharedMem + 0x2704
- movs r2, 0
-_08098116:
- lsls r0, r1, 1
- adds r0, r3
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0xF
- bls _08098116
- ldr r0, _08098168 @ =gSharedMem
- movs r1, 0x9C
- lsls r1, 6
- adds r0, r1
- movs r1, 0
- str r1, [r0]
- adds r0, r5, 0
- bl LoadSpriteSheet
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- beq _080981C4
- add r0, sp, 0x20
- bl LoadSpritePalette
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xFF
- beq _080981C4
- b _080981B0
- .align 2, 0
-_08098150: .4byte gUnknown_083B6DCC
-_08098154: .4byte gUnknown_083B6DD4
-_08098158: .4byte gSpriteTemplate_83B6DDC
-_0809815C: .4byte gSharedMem + 0x2784
-_08098160: .4byte 0x000007ff
-_08098164: .4byte gSharedMem + 0x2704
-_08098168: .4byte gSharedMem
-_0809816C:
- ldr r2, _0809819C @ =gSharedMem
- movs r0, 0x9C
- lsls r0, 6
- adds r3, r2, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080981A0 @ =gSprites
- adds r0, r1
- str r0, [r3]
- lsls r0, r4, 4
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- ldr r3, _080981A4 @ =0x000026fa
- adds r1, r2, r3
- strh r0, [r1]
- ldr r4, _080981A8 @ =0x000026fc
- adds r2, r4
- lsls r0, r5, 5
- ldr r1, _080981AC @ =0x06010000
- adds r0, r1
- str r0, [r2]
- b _080981C4
- .align 2, 0
-_0809819C: .4byte gSharedMem
-_080981A0: .4byte gSprites
-_080981A4: .4byte 0x000026fa
-_080981A8: .4byte 0x000026fc
-_080981AC: .4byte 0x06010000
-_080981B0:
- mov r0, sp
- movs r1, 0x28
- movs r2, 0x30
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- bne _0809816C
-_080981C4:
- ldr r0, _080981E8 @ =gSharedMem
- movs r2, 0x9C
- lsls r2, 6
- adds r0, r2
- ldr r0, [r0]
- cmp r0, 0
- bne _080981DE
- movs r0, 0x2
- bl FreeSpriteTilesByTag
- ldr r0, _080981EC @ =0x0000dac7
- bl FreeSpritePaletteByTag
-_080981DE:
- add sp, 0x28
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080981E8: .4byte gSharedMem
-_080981EC: .4byte 0x0000dac7
- thumb_func_end sub_80980D4
-
thumb_func_start sub_80981F0
sub_80981F0: @ 80981F0
push {r4-r7,lr}
@@ -1291,6 +962,8 @@ _08098B32:
bx r0
thumb_func_end sub_8098AA8
+// File boundary
+
thumb_func_start get_preferred_box
get_preferred_box: @ 8098B3C
ldr r0, _08098B44 @ =gPokemonStorage
diff --git a/include/mon_markings.h b/include/mon_markings.h
index 3b4aa333c..5b6abf356 100644
--- a/include/mon_markings.h
+++ b/include/mon_markings.h
@@ -25,5 +25,6 @@ void sub_80F7404(void);
void sub_80F7418(u8 markings, s16 x, s16 y);
void sub_80F7470(void);
bool8 sub_80F7500(void);
+struct Sprite *sub_80F7940(u16 tileTag, u16 paletteTag, const u16 *palette);
#endif //POKERUBY_MON_MARKINGS_H
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index 51ebda88f..cbdec8999 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -85,14 +85,19 @@ struct PokemonStorageSystemData {
u8 filler_08b6[0x4a8];
s16 unk_0d5e;
s16 unk_0d60;
- u8 filler_0d62[0x490];
+ u8 filler_0d62[0x48a];
+ u32 unk_11ec;
+ u16 unk_11f0;
u16 unk_11f2;
u8 filler_11f4[2];
u8 unk_11f6;
u8 unk_11f7;
u8 unk_11f8;
u8 unk_11f9;
- u8 unk_11fa[0xc2];
+ u8 unk_11fa[0xb2];
+ struct Sprite *unk_12ac;
+ struct Sprite *unk_12b0[2];
+ u16 *unk_12b8;
struct PokemonMarkMenu unk_12bc;
struct UnkPSSStruct_2002370 unk_2370;
u8 filler_25b4[0xd8];
@@ -102,8 +107,12 @@ struct PokemonStorageSystemData {
struct Pokemon *unk_2690;
u8 unk_2694[18];
u8 unk_26a6[62];
- u8 unk_26e4[0x20];
- u16 unk_2704[0x40];
+ u8 unk_26e4[0x16];
+ u16 unk_26fa;
+ u16 *unk_26fc;
+ struct Sprite *unk_2700;
+ u16 unk_2704[0x10];
+ u8 filler_2724[0x60];
u8 unk_2784[0x800];
};
diff --git a/src/pokemon/pokemon_storage_system_2.c b/src/pokemon/pokemon_storage_system_2.c
index 5c72d02e9..f8ae1c013 100644
--- a/src/pokemon/pokemon_storage_system_2.c
+++ b/src/pokemon/pokemon_storage_system_2.c
@@ -66,9 +66,13 @@ void sub_8097E44(void);
void sub_8097E70(void);
void sub_8097F58(void);
void sub_8097FB8(void);
-void BoxSetMosaic(void);
void sub_809801C(void);
+void BoxSetMosaic(void);
+void sub_8098090(struct Sprite *sprite);
void sub_80980D4(void);
+void sub_80981F0(u16 species, u32 pid);
+void sub_80982B4(void);
+void sub_8098350(void);
void sub_8098400(void);
void add_to_c3_somehow(void);
bool8 sub_80985CC(void);
@@ -191,50 +195,6 @@ const struct SpritePalette gWaveformSpritePalette = {
WaveformPalette, 0xdacd
};
-const struct SpriteSheet gWaveformSpriteSheet = {
- WaveformTiles, 0x1c0, 0x0005
-};
-
-const struct SpriteSheet gUnknown_083B6DCC = {
- ePokemonStorageSystem.unk_2784, 0x800, 0x0002
-};
-
-const struct SpritePalette gUnknown_083B6DD4 = {
- ePokemonStorageSystem.unk_2704, 0xdac7
-};
-
-const struct OamData gOamData_83B6EAC;
-
-const struct SpriteTemplate gSpriteTemplate_83B6DDC = {
- 0x0002, 0xdac7, &gOamData_83B6EAC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-};
-
-const struct StorageAction gPCStorageActionTexts[] = {
- {PCText_ExitBox, 0},
- {PCText_WhatYouDo, 0},
- {PCText_PickATheme, 0},
- {PCText_PickAWallpaper, 0},
- {PCText_IsSelected, 1},
- {PCText_JumpToWhichBox, 0},
- {PCText_DepositInWhichBox, 0},
- {PCText_WasDeposited, 1},
- {PCText_BoxIsFull, 0},
- {PCText_ReleasePoke, 0},
- {PCText_WasReleased, 4},
- {PCText_ByeBye, 6},
- {PCText_MarkPoke, 0},
- {PCText_LastPoke, 0},
- {PCText_PartyFull, 0},
- {PCText_HoldingPoke, 0},
- {PCText_WhichOneWillTake, 0},
- {PCText_CantReleaseEgg, 0},
- {PCText_ContinueBox, 0},
- {PCText_CameBack, 1},
- {PCText_Worried, 0},
- {PCText_Surprise, 0},
- {PCText_PleaseRemoveMail, 0}
-};
-
// .text
@@ -1484,6 +1444,249 @@ void sub_8097E70(void)
sub_809801C();
}
+void sub_8097F58(void)
+{
+ gPokemonStorageSystemPtr->unk_12ac = sub_80F7940(0x000d, 0xdace, 0);
+ gPokemonStorageSystemPtr->unk_12ac->oam.priority = 0;
+ gPokemonStorageSystemPtr->unk_12ac->subpriority = 1;
+ gPokemonStorageSystemPtr->unk_12ac->pos1.x = 0x28;
+ gPokemonStorageSystemPtr->unk_12ac->pos1.y = 0x95;
+ gPokemonStorageSystemPtr->unk_12b8 = BG_CHAR_ADDR(4) + 32 * GetSpriteTileStartByTag(0x000d);
+}
+
+const struct SpriteTemplate gSpriteTemplate_83B6EFC;
+
+void sub_8097FB8(void)
+{
+ u16 i;
+ struct SpriteSheet sheet = {WaveformTiles, 0x1c0, 0x0005};
+
+ LoadSpriteSheet(&sheet);
+ for (i = 0; i < 2; i++)
+ {
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83B6EFC, i * 63 + 8, 9, 2);
+ gPokemonStorageSystemPtr->unk_12b0[i] = gSprites + spriteId;
+ }
+}
+
+void sub_809801C(void)
+{
+ sub_80981F0(gPokemonStorageSystemPtr->unk_11f0, gPokemonStorageSystemPtr->unk_11ec);
+ sub_80982B4();
+ sub_8098350();
+}
+
+void BoxSetMosaic(void)
+{
+ sub_809801C();
+ if (gPokemonStorageSystemPtr->unk_2700)
+ {
+ gPokemonStorageSystemPtr->unk_2700->oam.mosaic = TRUE;
+ gPokemonStorageSystemPtr->unk_2700->data[0] = 10;
+ gPokemonStorageSystemPtr->unk_2700->data[1] = 1;
+ gPokemonStorageSystemPtr->unk_2700->callback = sub_8098090;
+ REG_MOSAIC = (gPokemonStorageSystemPtr->unk_2700->data[0] << 12) | (gPokemonStorageSystemPtr->unk_2700->data[0] << 8);
+ }
+}
+
+void sub_8098090(struct Sprite *sprite)
+{
+ sprite->data[0] -= sprite->data[1];
+ if (sprite->data[0] < 0)
+ sprite->data[0] = 0;
+ REG_MOSAIC = (sprite->data[0] << 12) | (sprite->data[0] << 8);
+ if (sprite->data[0] == 0)
+ {
+ sprite->oam.mosaic = FALSE;
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+// sub_80980D4
+
+const struct OamData gOamData_83B6EAC;
+
+#ifdef NONMATCHING
+void sub_80980D4(void)
+{
+ u16 i;
+ u16 tileStart;
+ u8 palSlot;
+ u8 spriteId;
+ struct SpriteSheet sheet = {gPokemonStorageSystemPtr->unk_2784, 0x800, 0x0002};
+ struct SpritePalette palette = {gPokemonStorageSystemPtr->unk_2704, 0xdac7};
+ struct SpriteTemplate template = {
+ 0x0002, 0xdac7, &gOamData_83B6EAC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+ };
+
+ for (i = 0; i < 0x800; i++)
+ gPokemonStorageSystemPtr->unk_2784[i] = 0;
+ for (i = 0; i < 0x10; i++)
+ gPokemonStorageSystemPtr->unk_2704[i] = 0;
+
+ gPokemonStorageSystemPtr->unk_2700 = NULL;
+ if ((tileStart = LoadSpriteSheet(&sheet)) != 0
+ && (palSlot = LoadSpritePalette(&palette)) != 0xff
+ && (spriteId = CreateSprite(&template, 0x28, 0x30, 0)) != MAX_SPRITES)
+ {
+ // FIXME this gets compiled as a separate block between the palSlot check and the spriteId check
+ gPokemonStorageSystemPtr->unk_2700 = gSprites + spriteId;
+ gPokemonStorageSystemPtr->unk_26fa = palSlot * 16 + 0x100;
+ gPokemonStorageSystemPtr->unk_26fc = BG_CHAR_ADDR(4) + tileStart * 32;
+ }
+
+ if (gPokemonStorageSystemPtr->unk_2700 == NULL)
+ {
+ FreeSpriteTilesByTag(0x0002);
+ FreeSpritePaletteByTag(0xdac7);
+ }
+}
+#else
+
+const struct SpriteSheet gUnknown_083B6DCC = {ePokemonStorageSystem.unk_2784, 0x800, 0x0002};
+const struct SpritePalette gUnknown_083B6DD4 = {ePokemonStorageSystem.unk_2704, 0xdac7};
+const struct SpriteTemplate gSpriteTemplate_83B6DDC = {
+ 0x0002, 0xdac7, &gOamData_83B6EAC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+__attribute__((naked)) void sub_80980D4(void)
+{
+ asm_unified("\tpush {r4,r5,lr}\n"
+ "\tsub sp, 0x28\n"
+ "\tldr r0, _08098150 @ =gUnknown_083B6DCC\n"
+ "\tldr r1, [r0, 0x4]\n"
+ "\tldr r0, [r0]\n"
+ "\tstr r0, [sp, 0x18]\n"
+ "\tstr r1, [sp, 0x1C]\n"
+ "\tldr r0, _08098154 @ =gUnknown_083B6DD4\n"
+ "\tldr r1, [r0, 0x4]\n"
+ "\tldr r0, [r0]\n"
+ "\tstr r0, [sp, 0x20]\n"
+ "\tstr r1, [sp, 0x24]\n"
+ "\tmov r1, sp\n"
+ "\tldr r0, _08098158 @ =gSpriteTemplate_83B6DDC\n"
+ "\tldm r0!, {r2-r4}\n"
+ "\tstm r1!, {r2-r4}\n"
+ "\tldm r0!, {r2-r4}\n"
+ "\tstm r1!, {r2-r4}\n"
+ "\tmovs r1, 0\n"
+ "\tadd r5, sp, 0x18\n"
+ "\tldr r4, _0809815C @ =gSharedMem + 0x2784\n"
+ "\tmovs r3, 0\n"
+ "\tldr r2, _08098160 @ =0x000007ff\n"
+ "_08098102:\n"
+ "\tadds r0, r1, r4\n"
+ "\tstrb r3, [r0]\n"
+ "\tadds r0, r1, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r1, r0, 16\n"
+ "\tcmp r1, r2\n"
+ "\tbls _08098102\n"
+ "\tmovs r1, 0\n"
+ "\tldr r3, _08098164 @ =gSharedMem + 0x2704\n"
+ "\tmovs r2, 0\n"
+ "_08098116:\n"
+ "\tlsls r0, r1, 1\n"
+ "\tadds r0, r3\n"
+ "\tstrh r2, [r0]\n"
+ "\tadds r0, r1, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r1, r0, 16\n"
+ "\tcmp r1, 0xF\n"
+ "\tbls _08098116\n"
+ "\tldr r0, _08098168 @ =gSharedMem\n"
+ "\tmovs r1, 0x9C\n"
+ "\tlsls r1, 6\n"
+ "\tadds r0, r1\n"
+ "\tmovs r1, 0\n"
+ "\tstr r1, [r0]\n"
+ "\tadds r0, r5, 0\n"
+ "\tbl LoadSpriteSheet\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tcmp r5, 0\n"
+ "\tbeq _080981C4\n"
+ "\tadd r0, sp, 0x20\n"
+ "\tbl LoadSpritePalette\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tcmp r4, 0xFF\n"
+ "\tbeq _080981C4\n"
+ "\tb _080981B0\n"
+ "\t.align 2, 0\n"
+ "_08098150: .4byte gUnknown_083B6DCC\n"
+ "_08098154: .4byte gUnknown_083B6DD4\n"
+ "_08098158: .4byte gSpriteTemplate_83B6DDC\n"
+ "_0809815C: .4byte gSharedMem + 0x2784\n"
+ "_08098160: .4byte 0x000007ff\n"
+ "_08098164: .4byte gSharedMem + 0x2704\n"
+ "_08098168: .4byte gSharedMem\n"
+ "_0809816C:\n"
+ "\tldr r2, _0809819C @ =gSharedMem\n"
+ "\tmovs r0, 0x9C\n"
+ "\tlsls r0, 6\n"
+ "\tadds r3, r2, r0\n"
+ "\tlsls r0, r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _080981A0 @ =gSprites\n"
+ "\tadds r0, r1\n"
+ "\tstr r0, [r3]\n"
+ "\tlsls r0, r4, 4\n"
+ "\tmovs r1, 0x80\n"
+ "\tlsls r1, 1\n"
+ "\tadds r0, r1\n"
+ "\tldr r3, _080981A4 @ =0x000026fa\n"
+ "\tadds r1, r2, r3\n"
+ "\tstrh r0, [r1]\n"
+ "\tldr r4, _080981A8 @ =0x000026fc\n"
+ "\tadds r2, r4\n"
+ "\tlsls r0, r5, 5\n"
+ "\tldr r1, _080981AC @ =0x06010000\n"
+ "\tadds r0, r1\n"
+ "\tstr r0, [r2]\n"
+ "\tb _080981C4\n"
+ "\t.align 2, 0\n"
+ "_0809819C: .4byte gSharedMem\n"
+ "_080981A0: .4byte gSprites\n"
+ "_080981A4: .4byte 0x000026fa\n"
+ "_080981A8: .4byte 0x000026fc\n"
+ "_080981AC: .4byte 0x06010000\n"
+ "_080981B0:\n"
+ "\tmov r0, sp\n"
+ "\tmovs r1, 0x28\n"
+ "\tmovs r2, 0x30\n"
+ "\tmovs r3, 0\n"
+ "\tbl CreateSprite\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r1, r0, 24\n"
+ "\tcmp r1, 0x40\n"
+ "\tbne _0809816C\n"
+ "_080981C4:\n"
+ "\tldr r0, _080981E8 @ =gSharedMem\n"
+ "\tmovs r2, 0x9C\n"
+ "\tlsls r2, 6\n"
+ "\tadds r0, r2\n"
+ "\tldr r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080981DE\n"
+ "\tmovs r0, 0x2\n"
+ "\tbl FreeSpriteTilesByTag\n"
+ "\tldr r0, _080981EC @ =0x0000dac7\n"
+ "\tbl FreeSpritePaletteByTag\n"
+ "_080981DE:\n"
+ "\tadd sp, 0x28\n"
+ "\tpop {r4,r5}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_080981E8: .4byte gSharedMem\n"
+ "_080981EC: .4byte 0x0000dac7");
+}
+#endif
+
+extern const struct StorageAction gPCStorageActionTexts[];
+
asm(".section .text.8098898");
void PrintStorageActionText(u8 index) {
@@ -1564,3 +1767,31 @@ void PrintStorageActionText(u8 index) {
ptr[0] = EOS;
MenuPrint(gPokemonStorageSystemPtr->unk_2694, 11, 17);
}
+
+// FIXME: move this back
+
+const struct StorageAction gPCStorageActionTexts[] = {
+ {PCText_ExitBox, 0},
+ {PCText_WhatYouDo, 0},
+ {PCText_PickATheme, 0},
+ {PCText_PickAWallpaper, 0},
+ {PCText_IsSelected, 1},
+ {PCText_JumpToWhichBox, 0},
+ {PCText_DepositInWhichBox, 0},
+ {PCText_WasDeposited, 1},
+ {PCText_BoxIsFull, 0},
+ {PCText_ReleasePoke, 0},
+ {PCText_WasReleased, 4},
+ {PCText_ByeBye, 6},
+ {PCText_MarkPoke, 0},
+ {PCText_LastPoke, 0},
+ {PCText_PartyFull, 0},
+ {PCText_HoldingPoke, 0},
+ {PCText_WhichOneWillTake, 0},
+ {PCText_CantReleaseEgg, 0},
+ {PCText_ContinueBox, 0},
+ {PCText_CameBack, 1},
+ {PCText_Worried, 0},
+ {PCText_Surprise, 0},
+ {PCText_PleaseRemoveMail, 0}
+};