summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/trainer_tower.c1
-rw-r--r--src/unk_815EDDC.c132
2 files changed, 133 insertions, 0 deletions
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);
+}