summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-06-15 12:56:14 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-06-15 12:56:14 -0400
commitdecd15a45876549a117df8e8594865cb42aa7b1a (patch)
treeddd30d83e0e8a40ddb7bb73696d8ac0e7c66d424
parente07368e90b1c0804dc4e4f2269ce9dc5fb632999 (diff)
unk_815EDDC
-rw-r--r--asm/unk_815EDDC.s407
-rw-r--r--data/data_83FECCC.s10
-rw-r--r--include/load_save.h1
-rw-r--r--include/strings.h2
-rw-r--r--ld_script.txt2
-rw-r--r--src/trainer_tower.c1
-rw-r--r--src/unk_815EDDC.c132
-rw-r--r--sym_ewram.txt8
8 files changed, 145 insertions, 418 deletions
diff --git a/asm/unk_815EDDC.s b/asm/unk_815EDDC.s
deleted file mode 100644
index 16db54083..000000000
--- a/asm/unk_815EDDC.s
+++ /dev/null
@@ -1,407 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_815EE3C
-sub_815EE3C: @ 815EE3C
- ldr r1, _0815EE50 @ =gSaveBlock2Ptr
- ldr r1, [r1]
- movs r2, 0xF2
- lsls r2, 4
- adds r1, r2
- ldr r0, [r0]
- ldr r1, [r1]
- eors r0, r1
- bx lr
- .align 2, 0
-_0815EE50: .4byte gSaveBlock2Ptr
- thumb_func_end sub_815EE3C
-
- thumb_func_start sub_815EE54
-sub_815EE54: @ 815EE54
- ldr r2, _0815EE68 @ =gSaveBlock2Ptr
- ldr r2, [r2]
- movs r3, 0xF2
- lsls r3, 4
- adds r2, r3
- ldr r2, [r2]
- eors r2, r1
- str r2, [r0]
- bx lr
- .align 2, 0
-_0815EE68: .4byte gSaveBlock2Ptr
- thumb_func_end sub_815EE54
-
- thumb_func_start sub_815EE6C
-sub_815EE6C: @ 815EE6C
- push {lr}
- adds r1, r0, 0
- ldr r0, _0815EE80 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r2, _0815EE84 @ =0x00000af8
- adds r0, r2
- bl ApplyNewEncryptionKeyToWord
- pop {r0}
- bx r0
- .align 2, 0
-_0815EE80: .4byte gSaveBlock2Ptr
-_0815EE84: .4byte 0x00000af8
- thumb_func_end sub_815EE6C
-
- thumb_func_start sub_815EE88
-sub_815EE88: @ 815EE88
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _0815EEA0 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _0815EEA4 @ =0x00000af8
- adds r0, r1
- bl sub_815EE3C
- cmp r0, r4
- bcc _0815EEA8
- movs r0, 0x1
- b _0815EEAA
- .align 2, 0
-_0815EEA0: .4byte gSaveBlock2Ptr
-_0815EEA4: .4byte 0x00000af8
-_0815EEA8:
- movs r0, 0
-_0815EEAA:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_815EE88
-
- thumb_func_start sub_815EEB0
-sub_815EEB0: @ 815EEB0
- push {lr}
- ldr r0, _0815EECC @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _0815EED0 @ =0x00000af8
- adds r0, r1
- bl sub_815EE3C
- ldr r1, _0815EED4 @ =gSpecialVar_0x8004
- ldrh r1, [r1]
- cmp r0, r1
- bcc _0815EED8
- movs r0, 0x1
- b _0815EEDA
- .align 2, 0
-_0815EECC: .4byte gSaveBlock2Ptr
-_0815EED0: .4byte 0x00000af8
-_0815EED4: .4byte gSpecialVar_0x8004
-_0815EED8:
- movs r0, 0
-_0815EEDA:
- pop {r1}
- bx r1
- thumb_func_end sub_815EEB0
-
- thumb_func_start sub_815EEE0
-sub_815EEE0: @ 815EEE0
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r0, _0815EF04 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _0815EF08 @ =0x00000af8
- adds r5, r0, r1
- adds r0, r5, 0
- bl sub_815EE3C
- adds r1, r0, r4
- ldr r2, _0815EF0C @ =0x0001869f
- cmp r1, r2
- bhi _0815EF10
- adds r0, r5, 0
- bl sub_815EE54
- movs r0, 0x1
- b _0815EF1A
- .align 2, 0
-_0815EF04: .4byte gSaveBlock2Ptr
-_0815EF08: .4byte 0x00000af8
-_0815EF0C: .4byte 0x0001869f
-_0815EF10:
- adds r0, r5, 0
- adds r1, r2, 0
- bl sub_815EE54
- movs r0, 0
-_0815EF1A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_815EEE0
-
- thumb_func_start sub_815EF20
-sub_815EF20: @ 815EF20
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _0815EF4C @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _0815EF50 @ =0x00000af8
- adds r4, r0, r1
- adds r0, r5, 0
- bl sub_815EE88
- lsls r0, 24
- cmp r0, 0
- beq _0815EF54
- adds r0, r4, 0
- bl sub_815EE3C
- adds r1, r0, 0
- subs r1, r5
- adds r0, r4, 0
- bl sub_815EE54
- movs r0, 0x1
- b _0815EF56
- .align 2, 0
-_0815EF4C: .4byte gSaveBlock2Ptr
-_0815EF50: .4byte 0x00000af8
-_0815EF54:
- movs r0, 0
-_0815EF56:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_815EF20
-
- thumb_func_start sub_815EF5C
-sub_815EF5C: @ 815EF5C
- push {r4,r5,lr}
- ldr r0, _0815EF8C @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _0815EF90 @ =0x00000af8
- adds r4, r0, r1
- ldr r5, _0815EF94 @ =gSpecialVar_0x8004
- ldrh r0, [r5]
- bl sub_815EE88
- lsls r0, 24
- cmp r0, 0
- beq _0815EF98
- adds r0, r4, 0
- bl sub_815EE3C
- adds r1, r0, 0
- ldrh r0, [r5]
- subs r1, r0
- adds r0, r4, 0
- bl sub_815EE54
- movs r0, 0x1
- b _0815EF9A
- .align 2, 0
-_0815EF8C: .4byte gSaveBlock2Ptr
-_0815EF90: .4byte 0x00000af8
-_0815EF94: .4byte gSpecialVar_0x8004
-_0815EF98:
- movs r0, 0
-_0815EF9A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_815EF5C
-
- thumb_func_start sub_815EFA0
-sub_815EFA0: @ 815EFA0
- push {lr}
- ldr r0, _0815EFB4 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r1, _0815EFB8 @ =0x00000af8
- adds r0, r1
- bl sub_815EE3C
- pop {r1}
- bx r1
- .align 2, 0
-_0815EFB4: .4byte gSaveBlock2Ptr
-_0815EFB8: .4byte 0x00000af8
- thumb_func_end sub_815EFA0
-
- thumb_func_start sub_815EFBC
-sub_815EFBC: @ 815EFBC
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0xC
- adds r6, r0, 0
- mov r8, r2
- adds r4, r3, 0
- ldr r5, [sp, 0x24]
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _0815F010 @ =gStringVar1
- mov r9, r0
- movs r2, 0x1
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0
- mov r2, r9
- mov r3, r8
- bl AddTextPrinterParameterized
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0815F010: .4byte gStringVar1
- thumb_func_end sub_815EFBC
-
- thumb_func_start sub_815F014
-sub_815F014: @ 815F014
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0xC
- adds r6, r0, 0
- adds r4, r1, 0
- adds r5, r2, 0
- mov r8, r3
- lsls r6, 24
- lsrs r6, 24
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- adds r0, r6, 0
- movs r1, 0
- adds r2, r4, 0
- adds r3, r5, 0
- bl SetWindowBorderStyle
- ldr r2, _0815F06C @ =gUnknown_8416655
- movs r4, 0
- str r4, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0
- movs r3, 0
- bl AddTextPrinterParameterized
- str r4, [sp]
- adds r0, r6, 0
- mov r1, r8
- movs r2, 0x27
- movs r3, 0xC
- bl sub_815EFBC
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0815F06C: .4byte gUnknown_8416655
- thumb_func_end sub_815F014
-
- thumb_func_start sub_815F070
-sub_815F070: @ 815F070
- push {lr}
- sub sp, 0x4
- bl sub_815EFA0
- adds r1, r0, 0
- ldr r0, _0815F090 @ =gUnknown_203F464
- ldrb r0, [r0]
- movs r2, 0
- str r2, [sp]
- movs r2, 0x27
- movs r3, 0xC
- bl sub_815EFBC
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0815F090: .4byte gUnknown_203F464
- thumb_func_end sub_815F070
-
- thumb_func_start sub_815F094
-sub_815F094: @ 815F094
- push {r4,r5,lr}
- sub sp, 0x20
- ldr r0, _0815F108 @ =sub_809D6D4
- bl sub_81119D4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0815F100
- movs r0, 0x8
- str r0, [sp]
- movs r0, 0x3
- str r0, [sp, 0x4]
- movs r0, 0xF
- str r0, [sp, 0x8]
- movs r0, 0x20
- str r0, [sp, 0xC]
- add r0, sp, 0x10
- movs r1, 0
- movs r2, 0x1
- movs r3, 0x1
- bl SetWindowTemplateFields
- ldr r0, [sp, 0x10]
- ldr r1, [sp, 0x14]
- str r0, [sp, 0x18]
- str r1, [sp, 0x1C]
- ldr r4, _0815F10C @ =gUnknown_203F464
- add r0, sp, 0x18
- bl AddWindow
- strb r0, [r4]
- ldrb r0, [r4]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldrb r0, [r4]
- bl PutWindowTilemap
- ldrb r0, [r4]
- ldr r5, _0815F110 @ =0x0000021d
- adds r1, r5, 0
- movs r2, 0xD0
- bl sub_814FF2C
- ldrb r4, [r4]
- bl sub_815EFA0
- adds r3, r0, 0
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0xD
- bl sub_815F014
-_0815F100:
- add sp, 0x20
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0815F108: .4byte sub_809D6D4
-_0815F10C: .4byte gUnknown_203F464
-_0815F110: .4byte 0x0000021d
- thumb_func_end sub_815F094
-
- thumb_func_start sub_815F114
-sub_815F114: @ 815F114
- push {r4,lr}
- ldr r4, _0815F134 @ =gUnknown_203F464
- ldrb r0, [r4]
- bl ClearWindowTilemap
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_810F4D8
- ldrb r0, [r4]
- bl RemoveWindow
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815F134: .4byte gUnknown_203F464
- thumb_func_end sub_815F114
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s
index 1d6d7d95f..000339fdf 100644
--- a/data/data_83FECCC.s
+++ b/data/data_83FECCC.s
@@ -970,16 +970,18 @@ gUnknown_8416644:: @ 8416644
.incbin "baserom.gba", 0x416644, 0x11
gUnknown_8416655:: @ 8416655
- .incbin "baserom.gba", 0x416655, 0x7
+ .string "POWDER$"
gUnknown_841665C:: @ 841665C
- .incbin "baserom.gba", 0x41665C, 0x34
+ .string "Played the POKé FLUTE.\p"
+ .string "Now, that's a catchy tune!{PAUSE_UNTIL_PRESS}$"
gUnknown_8416690:: @ 8416690
- .incbin "baserom.gba", 0x416690, 0x17
+ .string "Played the POKé FLUTE.$"
gUnknown_84166A7:: @ 84166A7
- .incbin "baserom.gba", 0x4166A7, 0x2C
+ .string "The POKé FLUTE awakened sleeping\n"
+ .string "POKéMON.{PAUSE_UNTIL_PRESS}$"
gText_TMCase:: @ 84166D3
.string "TM CASE$"
diff --git a/include/load_save.h b/include/load_save.h
index 064e6dff2..f62bc05aa 100644
--- a/include/load_save.h
+++ b/include/load_save.h
@@ -24,5 +24,6 @@ void SetSaveBlocksPointers(void);
void MoveSaveBlocks_ResetHeap(void);
void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey);
void ApplyNewEncryptionKeyToBagItems(u32 encryptionKey);
+void ApplyNewEncryptionKeyToWord(u32 * word, u32 encryptionKey);
#endif // GUARD_LOAD_SAVE_H
diff --git a/include/strings.h b/include/strings.h
index 8a10f02d5..0a8af28d1 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -148,4 +148,6 @@ extern const u8 gString_Someone[];
extern const u8 gString_Help[];
extern const u8 gString_HelpSystem_ClearTo8[];
+extern const u8 gUnknown_8416655[];
+
#endif //GUARD_STRINGS_H
diff --git a/ld_script.txt b/ld_script.txt
index f342d0b98..1ae51f0c1 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -283,7 +283,7 @@ SECTIONS {
src/ss_anne.o(.text);
src/cereader_tool.o(.text);
src/trainer_tower.o(.text);
- asm/unk_815EDDC.o(.text);
+ src/unk_815EDDC.o(.text);
asm/unk_815F138.o(.text);
asm/berry_fix_program.o(.text);
} =0
diff --git a/src/trainer_tower.c b/src/trainer_tower.c
index 46c112030..5711bff94 100644
--- a/src/trainer_tower.c
+++ b/src/trainer_tower.c
@@ -77,6 +77,7 @@ struct UnkStruct_847A074
EWRAM_DATA struct UnkStruct_203F458 * gUnknown_203F458 = NULL;
EWRAM_DATA struct UnkStruct_203F45C * gUnknown_203F45C = NULL;
+EWRAM_DATA u8 unused_variable = 0;
void sub_815D96C(void);
void sub_815DC8C(void); // setup
diff --git a/src/unk_815EDDC.c b/src/unk_815EDDC.c
new file mode 100644
index 000000000..d5da946fc
--- /dev/null
+++ b/src/unk_815EDDC.c
@@ -0,0 +1,132 @@
+#include "global.h"
+#include "event_data.h"
+#include "load_save.h"
+#include "menu.h"
+#include "quest_log.h"
+#include "script_menu.h"
+#include "string_util.h"
+#include "strings.h"
+#include "text.h"
+#include "text_window.h"
+
+EWRAM_DATA u8 gUnknown_203F464 = 0;
+
+u32 sub_815EE3C(u32 * a0)
+{
+ return *a0 ^ gSaveBlock2Ptr->encryptionKey;
+}
+
+void sub_815EE54(u32 * a0, u32 a1)
+{
+ *a0 = gSaveBlock2Ptr->encryptionKey ^ a1;
+}
+
+void sub_815EE6C(u32 a0)
+{
+ ApplyNewEncryptionKeyToWord(&gSaveBlock2Ptr->berryCrush.berryPowderAmount, a0);
+}
+
+bool8 sub_815EE88(u32 a0)
+{
+ if (sub_815EE3C(&gSaveBlock2Ptr->berryCrush.berryPowderAmount) < a0)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+bool8 sub_815EEB0(void)
+{
+ if (sub_815EE3C(&gSaveBlock2Ptr->berryCrush.berryPowderAmount) < gSpecialVar_0x8004)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+bool8 sub_815EEE0(u32 a0)
+{
+ u32 * ptr = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
+ u32 amount = sub_815EE3C(ptr) + a0;
+ if (amount > 99999)
+ {
+ sub_815EE54(ptr, 99999);
+ return FALSE;
+ }
+ else
+ {
+ sub_815EE54(ptr, amount);
+ return TRUE;
+ }
+}
+
+bool8 sub_815EF20(u32 a0)
+{
+ u32 * ptr = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
+ if (!sub_815EE88(a0))
+ return FALSE;
+ else
+ {
+ u32 amount = sub_815EE3C(ptr);
+ sub_815EE54(ptr, amount - a0);
+ return TRUE;
+ }
+}
+
+bool8 sub_815EF5C(void)
+{
+ u32 * ptr = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
+ if (!sub_815EE88(gSpecialVar_0x8004))
+ return FALSE;
+ else
+ {
+ u32 amount = sub_815EE3C(ptr);
+ sub_815EE54(ptr, amount - gSpecialVar_0x8004);
+ return TRUE;
+ }
+}
+
+u32 sub_815EFA0(void)
+{
+ return sub_815EE3C(&gSaveBlock2Ptr->berryCrush.berryPowderAmount);
+}
+
+void sub_815EFBC(u8 windowId, u32 powder, u8 x, u8 y, u8 speed)
+{
+ ConvertIntToDecimalStringN(gStringVar1, powder, STR_CONV_MODE_RIGHT_ALIGN, 5);
+ AddTextPrinterParameterized(windowId, 0, gStringVar1, x, y, speed, NULL);
+}
+
+void sub_815F014(u8 windowId, u16 baseBlock, u8 palette, u32 powder)
+{
+ SetWindowBorderStyle(windowId, FALSE, baseBlock, palette);
+ AddTextPrinterParameterized(windowId, 0, gUnknown_8416655, 0, 0, -1, NULL);
+ sub_815EFBC(windowId, powder, 39, 12, 0);
+}
+
+void sub_815F070(void)
+{
+ sub_815EFBC(gUnknown_203F464, sub_815EFA0(), 39, 12, 0);
+}
+
+void sub_815F094(void)
+{
+ struct WindowTemplate template;
+ struct WindowTemplate template2;
+
+ if (sub_81119D4(sub_809D6D4) != TRUE)
+ {
+ SetWindowTemplateFields(&template, 0, 1, 1, 8, 3, 15, 32);
+ template2 = template;
+ gUnknown_203F464 = AddWindow(&template2);
+ FillWindowPixelBuffer(gUnknown_203F464, 0);
+ PutWindowTilemap(gUnknown_203F464);
+ sub_814FF2C(gUnknown_203F464, 0x21D, 0xD0);
+ sub_815F014(gUnknown_203F464, 0x21D, 0xD, sub_815EFA0());
+ }
+}
+
+void sub_815F114(void)
+{
+ ClearWindowTilemap(gUnknown_203F464);
+ sub_810F4D8(gUnknown_203F464, 1);
+ RemoveWindow(gUnknown_203F464);
+}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index a260f5772..d06fb5c5a 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1598,9 +1598,5 @@ gUnknown_203F440: @ 203F440
.include "src/unk_815C980.o"
.align 2
.include "src/trainer_tower.o"
-
-gUnknown_203F460: @ 203F460
- .space 0x4
-
-gUnknown_203F464: @ 203F464
- .space 0x1
+ .align 2
+ .include "src/unk_815EDDC.o"