diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-06-15 12:56:14 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-06-15 12:56:14 -0400 |
commit | decd15a45876549a117df8e8594865cb42aa7b1a (patch) | |
tree | ddd30d83e0e8a40ddb7bb73696d8ac0e7c66d424 | |
parent | e07368e90b1c0804dc4e4f2269ce9dc5fb632999 (diff) |
unk_815EDDC
-rw-r--r-- | asm/unk_815EDDC.s | 407 | ||||
-rw-r--r-- | data/data_83FECCC.s | 10 | ||||
-rw-r--r-- | include/load_save.h | 1 | ||||
-rw-r--r-- | include/strings.h | 2 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/trainer_tower.c | 1 | ||||
-rw-r--r-- | src/unk_815EDDC.c | 132 | ||||
-rw-r--r-- | sym_ewram.txt | 8 |
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" |