summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokemon_storage_system.s284
-rwxr-xr-xinclude/ewram.h1
-rw-r--r--include/pc_screen_effect.h2
-rw-r--r--src/pokemon/pokemon_storage_system.c130
-rw-r--r--src/scene/hall_of_fame.c35
5 files changed, 143 insertions, 309 deletions
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index c282ebecd..85e29b183 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -5,290 +5,6 @@
.text
- thumb_func_start sub_8097A64
-sub_8097A64: @ 8097A64
- push {r4,r5,lr}
- ldr r5, _08097A78 @ =gSharedMem
- ldrb r0, [r5, 0x4]
- cmp r0, 0x1
- beq _08097AB0
- cmp r0, 0x1
- bgt _08097A7C
- cmp r0, 0
- beq _08097A86
- b _08097B32
- .align 2, 0
-_08097A78: .4byte gSharedMem
-_08097A7C:
- cmp r0, 0x2
- beq _08097B00
- cmp r0, 0x3
- beq _08097B18
- b _08097B32
-_08097A86:
- movs r0, 0x5
- bl PrintStorageActionText
- ldr r1, _08097AA4 @ =0x00002370
- adds r0, r5, r1
- ldr r2, _08097AA8 @ =0x0000daca
- movs r1, 0x7
- movs r3, 0x3
- bl sub_8096264
- ldr r0, _08097AAC @ =gPokemonStorage
- ldrb r0, [r0]
- bl sub_809634C
- b _08097B0A
- .align 2, 0
-_08097AA4: .4byte 0x00002370
-_08097AA8: .4byte 0x0000daca
-_08097AAC: .4byte gPokemonStorage
-_08097AB0:
- bl sub_8096368
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08097AF4 @ =0x000008b2
- adds r4, r5, r2
- strh r0, [r4]
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0xC8
- beq _08097B32
- bl sub_8098A5C
- bl sub_809635C
- bl sub_8096310
- movs r2, 0
- ldrsh r0, [r4, r2]
- cmp r0, 0xC9
- beq _08097AE4
- adds r1, r0, 0
- ldr r0, _08097AF8 @ =gPokemonStorage
- ldrb r0, [r0]
- cmp r1, r0
- bne _08097B0A
-_08097AE4:
- movs r0, 0x1
- bl sub_809A860
- ldr r0, _08097AFC @ =sub_8096C84
- bl SetPSSCallback
- b _08097B32
- .align 2, 0
-_08097AF4: .4byte 0x000008b2
-_08097AF8: .4byte gPokemonStorage
-_08097AFC: .4byte sub_8096C84
-_08097B00:
- ldr r1, _08097B14 @ =0x000008b2
- adds r0, r5, r1
- ldrb r0, [r0]
- bl sub_8099C70
-_08097B0A:
- ldrb r0, [r5, 0x4]
- adds r0, 0x1
- strb r0, [r5, 0x4]
- b _08097B32
- .align 2, 0
-_08097B14: .4byte 0x000008b2
-_08097B18:
- bl sub_8099D34
- lsls r0, 24
- cmp r0, 0
- bne _08097B32
- ldr r1, _08097B38 @ =gPokemonStorage
- ldr r2, _08097B3C @ =0x000008b2
- adds r0, r5, r2
- ldrh r0, [r0]
- strb r0, [r1]
- ldr r0, _08097B40 @ =sub_8096C84
- bl SetPSSCallback
-_08097B32:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08097B38: .4byte gPokemonStorage
-_08097B3C: .4byte 0x000008b2
-_08097B40: .4byte sub_8096C84
- thumb_func_end sub_8097A64
-
- thumb_func_start sub_8097B44
-sub_8097B44: @ 8097B44
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, _08097B58 @ =gSharedMem
- ldrb r4, [r5, 0x4]
- cmp r4, 0
- beq _08097B5C
- cmp r4, 0x1
- beq _08097B78
- b _08097B8E
- .align 2, 0
-_08097B58: .4byte gSharedMem
-_08097B5C:
- bl sub_809BB90
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldrb r0, [r5, 0x4]
- adds r0, 0x1
- strb r0, [r5, 0x4]
- b _08097B8E
-_08097B78:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _08097B8E
- ldr r0, _08097B98 @ =gUnknown_0203847F
- strb r4, [r0]
- strb r4, [r5, 0x6]
- ldr r0, _08097B9C @ =sub_8096B5C
- bl SetMainCallback2
-_08097B8E:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08097B98: .4byte gUnknown_0203847F
-_08097B9C: .4byte sub_8096B5C
- thumb_func_end sub_8097B44
-
- thumb_func_start sub_8097BA0
-sub_8097BA0: @ 8097BA0
- push {r4,lr}
- ldr r0, _08097BB8 @ =gSharedMem
- ldrb r1, [r0, 0x4]
- adds r4, r0, 0
- cmp r1, 0x4
- bls _08097BAE
- b _08097CB0
-_08097BAE:
- lsls r0, r1, 2
- ldr r1, _08097BBC @ =_08097BC0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08097BB8: .4byte gSharedMem
-_08097BBC: .4byte _08097BC0
- .align 2, 0
-_08097BC0:
- .4byte _08097BD4
- .4byte _08097C18
- .4byte _08097C2C
- .4byte _08097C74
- .4byte _08097C98
-_08097BD4:
- bl sub_809BF20
- lsls r0, 24
- cmp r0, 0
- beq _08097BF8
- movs r0, 0x20
- bl PlaySE
- movs r0, 0xF
- bl PrintStorageActionText
- ldr r1, _08097BF4 @ =gSharedMem
- movs r0, 0x1
- strb r0, [r1, 0x4]
- b _08097CB0
- .align 2, 0
-_08097BF4: .4byte gSharedMem
-_08097BF8:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl PrintStorageActionText
- movs r0, 0
- bl sub_8098A38
- ldr r1, _08097C14 @ =gSharedMem
- movs r0, 0x2
- strb r0, [r1, 0x4]
- b _08097CB0
- .align 2, 0
-_08097C14: .4byte gSharedMem
-_08097C18:
- ldr r0, _08097C28 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0xF3
- ands r0, r1
- cmp r0, 0
- beq _08097CB0
- b _08097C4A
- .align 2, 0
-_08097C28: .4byte gMain
-_08097C2C:
- bl ProcessMenuInputNoWrap
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _08097C5C
- cmp r1, 0
- bgt _08097C46
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08097C4A
- b _08097CB0
-_08097C46:
- cmp r1, 0x1
- bne _08097CB0
-_08097C4A:
- bl sub_8098A5C
- ldr r0, _08097C58 @ =sub_8096C84
- bl SetPSSCallback
- b _08097CB0
- .align 2, 0
-_08097C58: .4byte sub_8096C84
-_08097C5C:
- movs r0, 0x3
- bl PlaySE
- bl sub_8098A5C
- ldr r1, _08097C70 @ =gSharedMem
- ldrb r0, [r1, 0x4]
- adds r0, 0x1
- strb r0, [r1, 0x4]
- b _08097CB0
- .align 2, 0
-_08097C70: .4byte gSharedMem
-_08097C74:
- movs r1, 0
- movs r0, 0xE
- strh r0, [r4, 0xC]
- ldr r0, _08097C94 @ =0x0000dad0
- strh r0, [r4, 0xE]
- movs r0, 0x14
- strh r0, [r4, 0x10]
- strh r1, [r4, 0x12]
- adds r0, r4, 0
- adds r0, 0xC
- bl sub_80C5E38
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _08097CB0
- .align 2, 0
-_08097C94: .4byte 0x0000dad0
-_08097C98:
- bl sub_80C5F98
- lsls r0, 24
- cmp r0, 0
- beq _08097CB0
- bl CalculatePlayerPartyCount
- ldr r1, _08097CB8 @ =gPlayerPartyCount
- strb r0, [r1]
- ldr r0, _08097CBC @ =sub_80961A8
- bl SetMainCallback2
-_08097CB0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08097CB8: .4byte gPlayerPartyCount
-_08097CBC: .4byte sub_80961A8
- thumb_func_end sub_8097BA0
-
thumb_func_start sub_8097CC0
sub_8097CC0: @ 8097CC0
push {r4,lr}
diff --git a/include/ewram.h b/include/ewram.h
index f24f089f6..3f627878f 100755
--- a/include/ewram.h
+++ b/include/ewram.h
@@ -241,6 +241,7 @@ extern u8 gSharedMem[];
#define ewram1C000 (*(struct Unk201C000 *)(gSharedMem + 0x1C000))
#define ewram1c000 (*(struct Unk201C000 *)(gSharedMem + 0x1C000)) // FIXME, names too similar
#define eHallOfFameMons1 (struct HallofFameMons*)(&gSharedMem[0x1C000])
+#define eHOFPCScreenEffect (*(struct PCScreenEffectStruct *)(gSharedMem + 0x1c000))
#define EWRAM_1C800 (*(struct Unk201C800 *)(gSharedMem + 0x1C800))
#define ewram1D000 ((struct Pokemon *)(gSharedMem + 0x1D000))
#define ewram1D000_2 ((u16 *)(gSharedMem + 0x1D000))
diff --git a/include/pc_screen_effect.h b/include/pc_screen_effect.h
index a791fc66f..36661bc3b 100644
--- a/include/pc_screen_effect.h
+++ b/include/pc_screen_effect.h
@@ -15,5 +15,7 @@ struct PCScreenEffectStruct
void sub_80C5CD4(struct PCScreenEffectStruct *unkStruct);
bool8 sub_80C5DCC(void);
+void sub_80C5E38(struct PCScreenEffectStruct *unkStruct);
+bool8 sub_80C5F98(void);
#endif //POKERUBY_PC_SCREEN_EFFECT_H
diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c
index 0f2350df2..daae82df6 100644
--- a/src/pokemon/pokemon_storage_system.c
+++ b/src/pokemon/pokemon_storage_system.c
@@ -177,6 +177,7 @@ void sub_8099310(void);
bool8 sub_8099374(void);
void sub_8099958(void);
bool8 sub_8099990(void);
+void sub_809BB90(void);
void sub_8099BF8(u8 a0);
void sub_8099C70(u8 whichBox);
bool8 sub_8099D34(void);
@@ -670,7 +671,7 @@ void ShowPokemonStorageSystem(void)
ScriptContext2_Enable();
}
-void sub_8096130(void)
+void FieldCB_ReturnToOverworld(void)
{
u8 taskId = CreateTask(Task_PokemonStorageSystem, 80);
gTasks[taskId].data[0] = 0;
@@ -688,7 +689,7 @@ void StorageSystemCreatePrimaryMenu(u8 whichMenu)
void sub_80961A8(void)
{
gUnknown_02038474 = gPokemonStorageSystemPtr->unk_0005;
- gFieldCallback = sub_8096130;
+ gFieldCallback = FieldCB_ReturnToOverworld;
SetMainCallback2(c2_exit_to_overworld_2_switch);
}
@@ -1947,6 +1948,131 @@ void sub_8097974(void)
}
}
+void sub_8097A64(void)
+{
+ switch (ePokemonStorageSystem.unk_0004)
+ {
+ case 0:
+ PrintStorageActionText(PC_TEXT_JUMP_TO_WHICH_BOX);
+ sub_8096264(&ePokemonStorageSystem.unk_2370, 0x0007, 0xdaca, 3);
+ sub_809634C(gPokemonStorage.currentBox);
+ ePokemonStorageSystem.unk_0004++;
+ break;
+ case 1:
+ ePokemonStorageSystem.unk_08b2 = sub_8096368();
+ switch (ePokemonStorageSystem.unk_08b2)
+ {
+ case 200:
+ break;
+ default:
+ sub_8098A5C();
+ sub_809635C();
+ sub_8096310();
+ if (ePokemonStorageSystem.unk_08b2 == 201 || ePokemonStorageSystem.unk_08b2 == gPokemonStorage.currentBox)
+ {
+ sub_809A860(1);
+ SetPSSCallback(sub_8096C84);
+ }
+ else
+ {
+ ePokemonStorageSystem.unk_0004++;
+ }
+ break;
+ }
+ break;
+ case 2:
+ sub_8099C70(ePokemonStorageSystem.unk_08b2);
+ ePokemonStorageSystem.unk_0004++;
+ break;
+ case 3:
+ if (!sub_8099D34())
+ {
+ gPokemonStorage.currentBox = ePokemonStorageSystem.unk_08b2;
+ SetPSSCallback(sub_8096C84);
+ }
+ break;
+ }
+}
+
+void sub_8097B44(void)
+{
+ switch (ePokemonStorageSystem.unk_0004)
+ {
+ case 0:
+ sub_809BB90();
+ BeginNormalPaletteFade(0xffffffff, 0, 0, 16, 0);
+ ePokemonStorageSystem.unk_0004++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ gUnknown_0203847F = 1;
+ ePokemonStorageSystem.unk_0006 = 1;
+ SetMainCallback2(sub_8096B5C);
+ }
+ break;
+ }
+}
+
+void sub_8097BA0(void)
+{
+ switch (ePokemonStorageSystem.unk_0004)
+ {
+ case 0:
+ if (sub_809BF20())
+ {
+ PlaySE(SE_HAZURE);
+ PrintStorageActionText(PC_TEXT_HOLDING_POKE);
+ ePokemonStorageSystem.unk_0004 = 1;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ PrintStorageActionText(PC_TEXT_EXIT_BOX);
+ sub_8098A38(0);
+ ePokemonStorageSystem.unk_0004 = 2;
+ }
+ break;
+ case 1:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ {
+ sub_8098A5C();
+ SetPSSCallback(sub_8096C84);
+ }
+ break;
+ case 2:
+ switch (ProcessMenuInputNoWrap())
+ {
+ case 1:
+ case -1:
+ sub_8098A5C();
+ SetPSSCallback(sub_8096C84);
+ break;
+ case 0:
+ PlaySE(SE_PC_OFF);
+ sub_8098A5C();
+ ePokemonStorageSystem.unk_0004++;
+ break;
+ }
+ break;
+ case 3:
+ ePokemonStorageSystem.unk_000c.tileTag = 0x000e;
+ ePokemonStorageSystem.unk_000c.paletteTag = 0xdad0;
+ ePokemonStorageSystem.unk_000c.unk04 = 20;
+ ePokemonStorageSystem.unk_000c.unk06 = 0;
+ sub_80C5E38(&ePokemonStorageSystem.unk_000c);
+ ePokemonStorageSystem.unk_0004++;
+ break;
+ case 4:
+ if (sub_80C5F98())
+ {
+ gPlayerPartyCount = CalculatePlayerPartyCount();
+ SetMainCallback2(sub_80961A8);
+ }
+ break;
+ }
+}
+
asm(".section .text.8098898");
void PrintStorageActionText(u8 index) {
diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c
index 812c28137..ef5e6f873 100644
--- a/src/scene/hall_of_fame.c
+++ b/src/scene/hall_of_fame.c
@@ -90,11 +90,7 @@ static bool8 sub_81438C4(void);
// functions from different files
void sub_81439D0(void);
-void sub_80C5E38(void*); // ?
-bool8 sub_80C5DCC(void);
-bool8 sub_80C5F98(void);
void ReturnFromHallOfFamePC(void);
-u16 SpeciesToPokedexNum(u16 species);
void remove_some_task(void);
// data and gfx
@@ -130,9 +126,10 @@ static const s16 sHallOfFame_MonsHalfTeamPositions[3][4] =
{-41, 214, 184, 64}
};
-static const struct HallofFameMon sDummyFameMon =
+static const struct PCScreenEffectStruct sDummyFameMon =
{
- 0x3EA03EA, 0, 0, 0, {0}
+ .tileTag = 0x3ea,
+ .paletteTag = 0x3ea
};
static const u8 sUnused2[6] = {2, 1, 3, 6, 4, 5};
@@ -800,20 +797,15 @@ void sub_81428CC(void)
}
break;
case 3:
- {
- struct HallofFameMons* fameMons;
-
- REG_BLDCNT = 0;
- REG_BLDALPHA = 0;
- REG_BLDY = 0;
- sub_81435B8();
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+ sub_81435B8();
- fameMons = eHallOfFameMons1;
- fameMons->mons[0] = sDummyFameMon;
+ eHOFPCScreenEffect = sDummyFameMon;
- sub_80C5CD4((struct PCScreenEffectStruct *)fameMons);
- gMain.state++;
- }
+ sub_80C5CD4(&eHOFPCScreenEffect);
+ gMain.state++;
break;
case 4:
AnimateSprites();
@@ -1022,12 +1014,9 @@ static void sub_8142DF4(u8 taskID)
static void sub_8142F78(u8 taskID)
{
- struct HallofFameMons* fameMons;
-
CpuSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x200);
- fameMons = eHallOfFameMons1;
- fameMons->mons[0] = sDummyFameMon;
- sub_80C5E38(fameMons);
+ eHOFPCScreenEffect = sDummyFameMon;
+ sub_80C5E38(&eHOFPCScreenEffect);
gTasks[taskID].func = sub_8142FCC;
}