summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2017-05-08 11:28:28 -0700
committerYamaArashi <shadow962@live.com>2017-05-08 11:28:28 -0700
commit3cc8c2044525a483ba80f8730f8f6376e5f6c935 (patch)
tree186fcef8ab0a3a522fe990853f673fbe9bbcef30
parent71f9479b00adf175cc43e704c27a9d50749f5d67 (diff)
decompile birch_pc
-rw-r--r--asm/birch_pc.s265
-rw-r--r--include/field_message_box.h8
-rw-r--r--ld_script.txt2
-rw-r--r--src/birch_pc.c114
-rw-r--r--src/field_message_box.c12
5 files changed, 125 insertions, 276 deletions
diff --git a/asm/birch_pc.s b/asm/birch_pc.s
deleted file mode 100644
index 2687f29b5..000000000
--- a/asm/birch_pc.s
+++ /dev/null
@@ -1,265 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start ScriptGetPokedexInfo
-ScriptGetPokedexInfo: @ 810D43C
- push {lr}
- ldr r0, _0810D458 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- bne _0810D460
- movs r0, 0
- bl GetHoennPokedexCount
- ldr r1, _0810D45C @ =gSpecialVar_0x8005
- strh r0, [r1]
- movs r0, 0x1
- bl GetHoennPokedexCount
- b _0810D470
- .align 2, 0
-_0810D458: .4byte gSpecialVar_0x8004
-_0810D45C: .4byte gSpecialVar_0x8005
-_0810D460:
- movs r0, 0
- bl GetNationalPokedexCount
- ldr r1, _0810D480 @ =gSpecialVar_0x8005
- strh r0, [r1]
- movs r0, 0x1
- bl GetNationalPokedexCount
-_0810D470:
- ldr r1, _0810D484 @ =gSpecialVar_0x8006
- strh r0, [r1]
- bl IsNationalPokedexEnabled
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- .align 2, 0
-_0810D480: .4byte gSpecialVar_0x8005
-_0810D484: .4byte gSpecialVar_0x8006
- thumb_func_end ScriptGetPokedexInfo
-
- thumb_func_start GetPokedexRatingText
-GetPokedexRatingText: @ 810D488
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x9
- bhi _0810D494
- b _0810D5EC
-_0810D494:
- cmp r0, 0x13
- bhi _0810D4A0
- ldr r0, _0810D49C @ =gUnknown_081C456A
- b _0810D5F6
- .align 2, 0
-_0810D49C: .4byte gUnknown_081C456A
-_0810D4A0:
- cmp r0, 0x1D
- bhi _0810D4AC
- ldr r0, _0810D4A8 @ =gUnknown_081C45B0
- b _0810D5F6
- .align 2, 0
-_0810D4A8: .4byte gUnknown_081C45B0
-_0810D4AC:
- cmp r0, 0x27
- bhi _0810D4B8
- ldr r0, _0810D4B4 @ =gUnknown_081C45F9
- b _0810D5F6
- .align 2, 0
-_0810D4B4: .4byte gUnknown_081C45F9
-_0810D4B8:
- cmp r0, 0x31
- bhi _0810D4C4
- ldr r0, _0810D4C0 @ =gUnknown_081C4648
- b _0810D5F6
- .align 2, 0
-_0810D4C0: .4byte gUnknown_081C4648
-_0810D4C4:
- cmp r0, 0x3B
- bhi _0810D4D0
- ldr r0, _0810D4CC @ =gUnknown_081C467E
- b _0810D5F6
- .align 2, 0
-_0810D4CC: .4byte gUnknown_081C467E
-_0810D4D0:
- cmp r0, 0x45
- bhi _0810D4DC
- ldr r0, _0810D4D8 @ =gUnknown_081C46B9
- b _0810D5F6
- .align 2, 0
-_0810D4D8: .4byte gUnknown_081C46B9
-_0810D4DC:
- cmp r0, 0x4F
- bhi _0810D4E8
- ldr r0, _0810D4E4 @ =gUnknown_081C46FE
- b _0810D5F6
- .align 2, 0
-_0810D4E4: .4byte gUnknown_081C46FE
-_0810D4E8:
- cmp r0, 0x59
- bhi _0810D4F4
- ldr r0, _0810D4F0 @ =gUnknown_081C4747
- b _0810D5F6
- .align 2, 0
-_0810D4F0: .4byte gUnknown_081C4747
-_0810D4F4:
- cmp r0, 0x63
- bhi _0810D500
- ldr r0, _0810D4FC @ =gUnknown_081C4780
- b _0810D5F6
- .align 2, 0
-_0810D4FC: .4byte gUnknown_081C4780
-_0810D500:
- cmp r0, 0x6D
- bhi _0810D50C
- ldr r0, _0810D508 @ =gUnknown_081C47DF
- b _0810D5F6
- .align 2, 0
-_0810D508: .4byte gUnknown_081C47DF
-_0810D50C:
- cmp r0, 0x77
- bhi _0810D518
- ldr r0, _0810D514 @ =gUnknown_081C4828
- b _0810D5F6
- .align 2, 0
-_0810D514: .4byte gUnknown_081C4828
-_0810D518:
- cmp r0, 0x81
- bhi _0810D524
- ldr r0, _0810D520 @ =gUnknown_081C4863
- b _0810D5F6
- .align 2, 0
-_0810D520: .4byte gUnknown_081C4863
-_0810D524:
- cmp r0, 0x8B
- bhi _0810D530
- ldr r0, _0810D52C @ =gUnknown_081C489C
- b _0810D5F6
- .align 2, 0
-_0810D52C: .4byte gUnknown_081C489C
-_0810D530:
- cmp r0, 0x95
- bhi _0810D53C
- ldr r0, _0810D538 @ =gUnknown_081C48EB
- b _0810D5F6
- .align 2, 0
-_0810D538: .4byte gUnknown_081C48EB
-_0810D53C:
- cmp r0, 0x9F
- bhi _0810D548
- ldr r0, _0810D544 @ =gUnknown_081C4936
- b _0810D5F6
- .align 2, 0
-_0810D544: .4byte gUnknown_081C4936
-_0810D548:
- cmp r0, 0xA9
- bhi _0810D554
- ldr r0, _0810D550 @ =gUnknown_081C49A2
- b _0810D5F6
- .align 2, 0
-_0810D550: .4byte gUnknown_081C49A2
-_0810D554:
- cmp r0, 0xB3
- bhi _0810D560
- ldr r0, _0810D55C @ =gUnknown_081C4A06
- b _0810D5F6
- .align 2, 0
-_0810D55C: .4byte gUnknown_081C4A06
-_0810D560:
- cmp r0, 0xBD
- bhi _0810D56C
- ldr r0, _0810D568 @ =gUnknown_081C4A4F
- b _0810D5F6
- .align 2, 0
-_0810D568: .4byte gUnknown_081C4A4F
-_0810D56C:
- cmp r0, 0xC7
- bls _0810D5DA
- cmp r0, 0xC8
- bne _0810D5A8
- ldr r0, _0810D5A4 @ =0x00000199
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl sub_8090D90
- lsls r0, 24
- cmp r0, 0
- bne _0810D5DA
- movs r0, 0xCD
- lsls r0, 1
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl sub_8090D90
- lsls r0, 24
- cmp r0, 0
- bne _0810D5DA
- b _0810D5F4
- .align 2, 0
-_0810D5A4: .4byte 0x00000199
-_0810D5A8:
- cmp r0, 0xC9
- bne _0810D5E8
- ldr r0, _0810D5E0 @ =0x00000199
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl sub_8090D90
- lsls r0, 24
- cmp r0, 0
- beq _0810D5F4
- movs r0, 0xCD
- lsls r0, 1
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl sub_8090D90
- lsls r0, 24
- cmp r0, 0
- beq _0810D5F4
-_0810D5DA:
- ldr r0, _0810D5E4 @ =gUnknown_081C4A91
- b _0810D5F6
- .align 2, 0
-_0810D5E0: .4byte 0x00000199
-_0810D5E4: .4byte gUnknown_081C4A91
-_0810D5E8:
- cmp r0, 0xCA
- beq _0810D5F4
-_0810D5EC:
- ldr r0, _0810D5F0 @ =gUnknown_081C4520
- b _0810D5F6
- .align 2, 0
-_0810D5F0: .4byte gUnknown_081C4520
-_0810D5F4:
- ldr r0, _0810D5FC @ =gUnknown_081C4ADA
-_0810D5F6:
- pop {r1}
- bx r1
- .align 2, 0
-_0810D5FC: .4byte gUnknown_081C4ADA
- thumb_func_end GetPokedexRatingText
-
- thumb_func_start ShowPokedexRatingMessage
-ShowPokedexRatingMessage: @ 810D600
- push {lr}
- ldr r0, _0810D614 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- bl GetPokedexRatingText
- bl ShowFieldMessage
- pop {r0}
- bx r0
- .align 2, 0
-_0810D614: .4byte gSpecialVar_0x8004
- thumb_func_end ShowPokedexRatingMessage
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/include/field_message_box.h b/include/field_message_box.h
index 50d96ccd1..c35aaf595 100644
--- a/include/field_message_box.h
+++ b/include/field_message_box.h
@@ -10,10 +10,10 @@ enum
};
void InitFieldMessageBox(void);
-bool8 ShowFieldMessage(u8 *message);
-bool8 ShowFieldAutoScrollMessage(u8 *message);
-bool8 unref_sub_8064BB8(u8 *message);
-bool8 unref_sub_8064BD0(u8 *message);
+bool8 ShowFieldMessage(const u8 *message);
+bool8 ShowFieldAutoScrollMessage(const u8 *message);
+bool8 unref_sub_8064BB8(const u8 *message);
+bool8 unref_sub_8064BD0(const u8 *message);
void HideFieldMessageBox(void);
u8 GetFieldMessageBoxMode(void);
bool8 IsFieldMessageBoxHidden(void);
diff --git a/ld_script.txt b/ld_script.txt
index d294a4db4..0cbe9a8e7 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -215,7 +215,7 @@ SECTIONS {
asm/fldeff_flash.o(.text);
src/post_battle_event_funcs.o(.text);
src/time_events.o(.text);
- asm/birch_pc.o(.text);
+ src/birch_pc.o(.text);
src/hof_pc.o(.text);
src/field_specials.o(.text);
asm/field_specials.o(.text);
diff --git a/src/birch_pc.c b/src/birch_pc.c
new file mode 100644
index 000000000..89eafc0ce
--- /dev/null
+++ b/src/birch_pc.c
@@ -0,0 +1,114 @@
+#include "global.h"
+#include "asm.h"
+#include "event_data.h"
+#include "field_message_box.h"
+#include "pokedex.h"
+#include "species.h"
+
+extern u16 gSpecialVar_0x8004;
+extern u16 gSpecialVar_0x8005;
+extern u16 gSpecialVar_0x8006;
+
+extern const u8 gUnknown_081C4520[];
+extern const u8 gUnknown_081C456A[];
+extern const u8 gUnknown_081C45B0[];
+extern const u8 gUnknown_081C45F9[];
+extern const u8 gUnknown_081C4648[];
+extern const u8 gUnknown_081C467E[];
+extern const u8 gUnknown_081C46B9[];
+extern const u8 gUnknown_081C46FE[];
+extern const u8 gUnknown_081C4747[];
+extern const u8 gUnknown_081C4780[];
+extern const u8 gUnknown_081C47DF[];
+extern const u8 gUnknown_081C4828[];
+extern const u8 gUnknown_081C4863[];
+extern const u8 gUnknown_081C489C[];
+extern const u8 gUnknown_081C48EB[];
+extern const u8 gUnknown_081C4936[];
+extern const u8 gUnknown_081C49A2[];
+extern const u8 gUnknown_081C4A06[];
+extern const u8 gUnknown_081C4A4F[];
+extern const u8 gUnknown_081C4A91[];
+extern const u8 gUnknown_081C4ADA[];
+
+bool16 ScriptGetPokedexInfo(void)
+{
+ if (!gSpecialVar_0x8004)
+ {
+ gSpecialVar_0x8005 = GetHoennPokedexCount(0);
+ gSpecialVar_0x8006 = GetHoennPokedexCount(1);
+ }
+ else
+ {
+ gSpecialVar_0x8005 = GetNationalPokedexCount(0);
+ gSpecialVar_0x8006 = GetNationalPokedexCount(1);
+ }
+
+ return IsNationalPokedexEnabled();
+}
+
+const u8 *GetPokedexRatingText(u16 count)
+{
+ if (count < 10)
+ return gUnknown_081C4520;
+ if (count < 20)
+ return gUnknown_081C456A;
+ if (count < 30)
+ return gUnknown_081C45B0;
+ if (count < 40)
+ return gUnknown_081C45F9;
+ if (count < 50)
+ return gUnknown_081C4648;
+ if (count < 60)
+ return gUnknown_081C467E;
+ if (count < 70)
+ return gUnknown_081C46B9;
+ if (count < 80)
+ return gUnknown_081C46FE;
+ if (count < 90)
+ return gUnknown_081C4747;
+ if (count < 100)
+ return gUnknown_081C4780;
+ if (count < 110)
+ return gUnknown_081C47DF;
+ if (count < 120)
+ return gUnknown_081C4828;
+ if (count < 130)
+ return gUnknown_081C4863;
+ if (count < 140)
+ return gUnknown_081C489C;
+ if (count < 150)
+ return gUnknown_081C48EB;
+ if (count < 160)
+ return gUnknown_081C4936;
+ if (count < 170)
+ return gUnknown_081C49A2;
+ if (count < 180)
+ return gUnknown_081C4A06;
+ if (count < 190)
+ return gUnknown_081C4A4F;
+ if (count < 200)
+ return gUnknown_081C4A91;
+ if (count == 200)
+ {
+ if (sub_8090D90(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1)
+ || sub_8090D90(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1))
+ return gUnknown_081C4A91;
+ return gUnknown_081C4ADA;
+ }
+ if (count == 201)
+ {
+ if (sub_8090D90(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1)
+ && sub_8090D90(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1))
+ return gUnknown_081C4A91;
+ return gUnknown_081C4ADA;
+ }
+ if (count == 202)
+ return gUnknown_081C4ADA;
+ return gUnknown_081C4520;
+}
+
+void ShowPokedexRatingMessage(void)
+{
+ ShowFieldMessage(GetPokedexRatingText(gSpecialVar_0x8004));
+}
diff --git a/src/field_message_box.c b/src/field_message_box.c
index 2a5f90d15..798725540 100644
--- a/src/field_message_box.c
+++ b/src/field_message_box.c
@@ -15,7 +15,7 @@ static u8 sMessageBoxMode;
static void Task_FieldMessageBox(u8 taskId);
static void CreateFieldMessageBoxTask(void);
static void DestroyFieldMessageBoxTask(void);
-static void PrintFieldMessage(u8 *message);
+static void PrintFieldMessage(const u8 *message);
static void PrintFieldMessageFromStringVar4(void);
void InitFieldMessageBox(void)
@@ -67,7 +67,7 @@ static void DestroyFieldMessageBoxTask(void)
DestroyTask(taskId);
}
-bool8 ShowFieldMessage(u8 *message)
+bool8 ShowFieldMessage(const u8 *message)
{
if (sMessageBoxMode != FIELD_MESSAGE_BOX_HIDDEN)
{
@@ -81,7 +81,7 @@ bool8 ShowFieldMessage(u8 *message)
}
}
-bool8 ShowFieldAutoScrollMessage(u8 *message)
+bool8 ShowFieldAutoScrollMessage(const u8 *message)
{
if (sMessageBoxMode != FIELD_MESSAGE_BOX_HIDDEN)
{
@@ -95,14 +95,14 @@ bool8 ShowFieldAutoScrollMessage(u8 *message)
}
}
-bool8 unref_sub_8064BB8(u8 *message)
+bool8 unref_sub_8064BB8(const u8 *message)
{
sMessageBoxMode = FIELD_MESSAGE_BOX_AUTO_SCROLL;
PrintFieldMessage(message);
return TRUE;
}
-bool8 unref_sub_8064BD0(u8 *message)
+bool8 unref_sub_8064BD0(const u8 *message)
{
if (sMessageBoxMode != FIELD_MESSAGE_BOX_HIDDEN)
{
@@ -116,7 +116,7 @@ bool8 unref_sub_8064BD0(u8 *message)
}
}
-static void PrintFieldMessage(u8 *message)
+static void PrintFieldMessage(const u8 *message)
{
StringExpandPlaceholders(gStringVar4, message);
sub_8002EB0(&gFieldMessageBoxWindow, gStringVar4, gMenuTextTileOffset, 2, 15);