summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2017-01-04 19:24:48 -0800
committerYamaArashi <shadow962@live.com>2017-01-04 19:38:14 -0800
commitef6bf02e7039a8e6f3b249ca3491987c42ca2d46 (patch)
treeaf8d1a62baf80d9dee6306ce9b7a370e96977c85
parent4b16d04dccb8013712d9f8853f13a21084718635 (diff)
decompile more summary screen functions
-rw-r--r--asm/pokemon_summary_screen.s151
-rw-r--r--include/menu.h2
-rw-r--r--src/menu.c2
-rw-r--r--src/pokemon_summary_screen.c72
4 files changed, 74 insertions, 153 deletions
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index c1f0fab6d..bfbafc4be 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -5739,157 +5739,6 @@ _080A065C: .4byte 0x0000044c
_080A0660: .4byte 0x0000103d
thumb_func_end sub_80A057C
- thumb_func_start PokemonSummaryScreen_CheckOT
-PokemonSummaryScreen_CheckOT: @ 80A0664
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r0, _080A06A0 @ =0x02018000
- ldr r1, [r0]
- ldr r0, _080A06A4 @ =gEnemyParty
- cmp r1, r0
- bne _080A06B0
- bl GetMultiplayerId
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080A06A8 @ =gLinkPlayers
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r0, r2, 0x4
- adds r0, r1, r0
- ldrh r5, [r0]
- ldr r4, _080A06AC @ =gStringVar1
- adds r2, 0x8
- adds r1, r2
- adds r0, r4, 0
- bl StringCopy
- adds r0, r4, 0
- bl StripExtCtrlCodes
- b _080A06C2
- .align 2, 0
-_080A06A0: .4byte 0x02018000
-_080A06A4: .4byte gEnemyParty
-_080A06A8: .4byte gLinkPlayers
-_080A06AC: .4byte gStringVar1
-_080A06B0:
- bl GetPlayerTrainerId
- adds r5, r0, 0
- ldr r0, _080A06F0 @ =0x0000ffff
- ands r5, r0
- ldr r0, _080A06F4 @ =gStringVar1
- ldr r1, _080A06F8 @ =gSaveBlock2
- bl StringCopy
-_080A06C2:
- adds r0, r6, 0
- movs r1, 0x1
- bl GetMonData
- ldr r1, _080A06F0 @ =0x0000ffff
- ands r1, r0
- cmp r5, r1
- bne _080A06EA
- ldr r4, _080A06FC @ =gStringVar2
- adds r0, r6, 0
- movs r1, 0x7
- adds r2, r4, 0
- bl GetMonData
- ldr r0, _080A06F4 @ =gStringVar1
- adds r1, r4, 0
- bl StringCompareWithoutExtCtrlCodes
- cmp r0, 0
- beq _080A0700
-_080A06EA:
- movs r0, 0
- b _080A0702
- .align 2, 0
-_080A06F0: .4byte 0x0000ffff
-_080A06F4: .4byte gStringVar1
-_080A06F8: .4byte gSaveBlock2
-_080A06FC: .4byte gStringVar2
-_080A0700:
- movs r0, 0x1
-_080A0702:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end PokemonSummaryScreen_CheckOT
-
- thumb_func_start sub_80A0708
-sub_80A0708: @ 80A0708
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- mov r9, r5
- lsls r2, 24
- lsrs r6, r2, 24
- mov r8, r6
- movs r1, 0x25
- bl GetMonData
- lsls r0, 24
- movs r1, 0xFF
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x2
- bls _080A073C
- ldr r0, _080A0738 @ =gOtherText_EggObtainedInTrade
- b _080A076E
- .align 2, 0
-_080A0738: .4byte gOtherText_EggObtainedInTrade
-_080A073C:
- adds r0, r4, 0
- movs r1, 0x23
- bl GetMonData
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0xFF
- bne _080A0754
- ldr r0, _080A0750 @ =gOtherText_EggNicePlace
- b _080A076E
- .align 2, 0
-_080A0750: .4byte gOtherText_EggNicePlace
-_080A0754:
- adds r0, r4, 0
- bl PokemonSummaryScreen_CheckOT
- lsls r0, 24
- cmp r0, 0
- bne _080A0768
- ldr r0, _080A0764 @ =gOtherText_EggObtainedInTrade
- b _080A076E
- .align 2, 0
-_080A0764: .4byte gOtherText_EggObtainedInTrade
-_080A0768:
- cmp r7, 0xFD
- bne _080A077C
- ldr r0, _080A0778 @ =gOtherText_EggHotSprings
-_080A076E:
- adds r1, r5, 0
- adds r2, r6, 0
- bl MenuPrint
- b _080A0786
- .align 2, 0
-_080A0778: .4byte gOtherText_EggHotSprings
-_080A077C:
- ldr r0, _080A0794 @ =gOtherText_EggDayCare
- mov r1, r9
- mov r2, r8
- bl MenuPrint
-_080A0786:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080A0794: .4byte gOtherText_EggDayCare
- thumb_func_end sub_80A0708
-
.section .text_80A0958
thumb_func_start sub_80A0958
diff --git a/include/menu.h b/include/menu.h
index 05c675097..0e4860791 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -18,7 +18,7 @@ void unref_sub_8071DA4(struct WindowConfig *, u16);
void MenuLoadTextWindowGraphics_OverrideFrameType(u8);
void MenuLoadTextWindowGraphics(void);
void BasicInitMenuWindow(const struct WindowConfig *);
-void MenuPrint(u8 *, u8, u8);
+void MenuPrint(const u8 *, u8, u8);
void MenuZeroFillWindowRect(u8, u8, u8, u8);
void MenuFillWindowRectWithBlankTile(u8, u8, u8, u8);
void MenuZeroFillScreen(void);
diff --git a/src/menu.c b/src/menu.c
index 4bb4dbec2..31841146d 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -143,7 +143,7 @@ void BasicInitMenuWindow(const struct WindowConfig *winConfig)
gMenuWindowPtr->tileDataStartOffset = gMenuTextTileOffset;
}
-void MenuPrint(u8 *str, u8 left, u8 top)
+void MenuPrint(const u8 *str, u8 left, u8 top)
{
sub_8003460(gMenuWindowPtr, str, gMenuTextTileOffset, left, top);
}
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 58573e97e..7ac26fc72 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -3,10 +3,13 @@
#include "menu.h"
#include "pokemon.h"
#include "string_util.h"
+#include "link.h"
extern u8 gStringVar1[];
extern u8 gStringVar4[];
+extern struct Pokemon *unk_2018000;
+
extern u8 *(gNatureNames[]);
extern const u8 gOtherText_Terminator4[];
extern const u8 gOtherText_Nature[];
@@ -16,10 +19,79 @@ extern const u8 gOtherText_Egg2[];
extern const u8 gOtherText_ObtainedInTrade[];
extern const u8 gOtherText_FatefulEncounter[];
extern const u8 gOtherText_Met2[];
+extern const u8 gOtherText_EggDayCare[];
+extern const u8 gOtherText_EggNicePlace[];
+extern const u8 gOtherText_EggObtainedInTrade[];
+extern const u8 gOtherText_EggHotSprings[];
u8 *sub_80A1E9C(u8 *dest, u8 *src, u8);
u8 PokemonSummaryScreen_CheckOT(struct Pokemon *pokemon);
u8 *PokemonSummaryScreen_CopyPokemonLevel(u8 *dest, u8 level);
+u32 GetPlayerTrainerId(void);
+
+bool8 PokemonSummaryScreen_CheckOT(struct Pokemon *mon)
+{
+ u32 trainerId;
+
+ if (unk_2018000 == gEnemyParty)
+ {
+ u8 enemyId = GetMultiplayerId() ^ 1;
+ trainerId = gLinkPlayers[enemyId].trainerId & 0xFFFF;
+ StringCopy(gStringVar1, gLinkPlayers[enemyId].name);
+ StripExtCtrlCodes(gStringVar1);
+ }
+ else
+ {
+ trainerId = GetPlayerTrainerId() & 0xFFFF;
+ StringCopy(gStringVar1, gSaveBlock2.playerName);
+ }
+
+ if (trainerId != (GetMonData(mon, MON_DATA_OT_ID) & 0xFFFF))
+ return FALSE;
+
+ GetMonData(mon, MON_DATA_OT_NAME, gStringVar2);
+
+ if (!StringCompareWithoutExtCtrlCodes(gStringVar1, gStringVar2))
+ return TRUE;
+
+ return FALSE;
+}
+
+void sub_80A0708(struct Pokemon *mon, u8 left, u8 top)
+{
+ u8 locationMet;
+ u8 gameMet = GetMonData(mon, MON_DATA_MET_GAME);
+
+ if (!(gameMet == VERSION_RUBY || gameMet == VERSION_SAPPHIRE || gameMet == VERSION_EMERALD))
+ {
+ MenuPrint(gOtherText_EggObtainedInTrade, left, top);
+ return;
+ }
+
+ locationMet = GetMonData(mon, MON_DATA_MET_LOCATION);
+
+ if (locationMet == 255)
+ {
+ MenuPrint(gOtherText_EggNicePlace, left, top);
+ return;
+ }
+
+ if (!PokemonSummaryScreen_CheckOT(mon))
+ {
+ MenuPrint(gOtherText_EggObtainedInTrade, left, top);
+ return;
+ }
+
+ asm(""); // needed to match for some reason
+
+ if (locationMet == 253)
+ {
+ MenuPrint(gOtherText_EggHotSprings, left, top);
+ return;
+ }
+
+ MenuPrint(gOtherText_EggDayCare, left, top);
+}
void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *pokemon, u8 left, u8 top) {
u8 locationMet;