diff options
-rw-r--r-- | asm/trainer_tower.s | 543 | ||||
-rw-r--r-- | asm/unk_815EDDC.s | 55 | ||||
-rw-r--r-- | data/trainer_tower.s | 20 | ||||
-rw-r--r-- | include/global.h | 8 | ||||
-rw-r--r-- | include/item.h | 1 | ||||
-rw-r--r-- | include/main.h | 1 | ||||
-rw-r--r-- | src/trainer_tower.c | 93 |
7 files changed, 173 insertions, 548 deletions
diff --git a/asm/trainer_tower.s b/asm/trainer_tower.s index b12a636c7..a1ca0da57 100644 --- a/asm/trainer_tower.s +++ b/asm/trainer_tower.s @@ -5,494 +5,6 @@ .text - thumb_func_start sub_815E218 -sub_815E218: @ 815E218 - push {lr} - ldr r0, _0815E260 @ =gMapHeader - ldrh r0, [r0, 0x12] - mov r12, r0 - ldr r3, _0815E264 @ =0xfffffed6 - add r3, r12 - ldr r0, _0815E268 @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r2, _0815E26C @ =0x00003d34 - adds r0, r1, r2 - ldr r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - movs r0, 0xF5 - lsls r0, 6 - adds r1, r0 - ldrb r1, [r1] - cmp r3, r1 - bne _0815E27C - ldr r3, _0815E270 @ =0xfffffed7 - add r3, r12 - ldr r0, _0815E274 @ =gUnknown_203F458 - ldr r1, [r0] - ldrb r2, [r1] - lsls r0, r2, 5 - subs r0, r2 - lsls r0, 5 - adds r1, r0 - ldrb r1, [r1, 0xD] - cmp r3, r1 - bgt _0815E27C - ldr r1, _0815E278 @ =gSpecialVar_Result - movs r0, 0 - b _0815E280 - .align 2, 0 -_0815E260: .4byte gMapHeader -_0815E264: .4byte 0xfffffed6 -_0815E268: .4byte gSaveBlock1Ptr -_0815E26C: .4byte 0x00003d34 -_0815E270: .4byte 0xfffffed7 -_0815E274: .4byte gUnknown_203F458 -_0815E278: .4byte gSpecialVar_Result -_0815E27C: - ldr r1, _0815E288 @ =gSpecialVar_Result - movs r0, 0x1 -_0815E280: - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0815E288: .4byte gSpecialVar_Result - thumb_func_end sub_815E218 - - thumb_func_start sub_815E28C -sub_815E28C: @ 815E28C - push {r4-r6,lr} - mov r6, r8 - push {r6} - ldr r4, _0815E2D0 @ =gSaveBlock1Ptr - ldr r0, [r4] - ldr r5, _0815E2D4 @ =0x00003d34 - adds r1, r0, r5 - ldr r0, _0815E2D8 @ =gSpecialVar_0x8005 - ldrh r0, [r0] - str r0, [r1] - cmp r0, 0x3 - bls _0815E2A8 - movs r0, 0 - str r0, [r1] -_0815E2A8: - bl sub_815EC0C - bl sub_815D834 - cmp r0, 0 - bne _0815E2E0 - ldr r1, [r4] - adds r0, r1, r5 - ldr r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - ldr r0, _0815E2DC @ =0x00003d42 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x20 - orrs r0, r2 - b _0815E2FA - .align 2, 0 -_0815E2D0: .4byte gSaveBlock1Ptr -_0815E2D4: .4byte 0x00003d34 -_0815E2D8: .4byte gSpecialVar_0x8005 -_0815E2DC: .4byte 0x00003d42 -_0815E2E0: - ldr r1, [r4] - adds r0, r1, r5 - ldr r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - ldr r0, _0815E384 @ =0x00003d42 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x21 - negs r0, r0 - ands r0, r2 -_0815E2FA: - strb r0, [r1] - ldr r6, _0815E388 @ =gSaveBlock1Ptr - ldr r2, [r6] - ldr r5, _0815E38C @ =0x00003d34 - adds r0, r2, r5 - ldr r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r2, r0 - movs r0, 0xF5 - lsls r0, 6 - adds r2, r0 - movs r0, 0 - mov r8, r0 - mov r0, r8 - strb r0, [r2] - ldr r0, [r6] - adds r1, r0, r5 - ldr r2, [r1] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - ldr r4, _0815E390 @ =0x00003d38 - adds r1, r4 - adds r0, r1 - bl SetVBlankCounter1Ptr - ldr r2, [r6] - adds r3, r2, r5 - ldr r1, [r3] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r4, r2, r4 - adds r4, r0 - mov r0, r8 - str r0, [r4] - ldr r1, [r3] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r2, r0 - ldr r3, _0815E384 @ =0x00003d42 - adds r2, r3 - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldr r1, [r6] - adds r5, r1, r5 - ldr r2, [r5] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - adds r1, r3 - ldrb r2, [r1] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0815E384: .4byte 0x00003d42 -_0815E388: .4byte gSaveBlock1Ptr -_0815E38C: .4byte 0x00003d34 -_0815E390: .4byte 0x00003d38 - thumb_func_end sub_815E28C - - thumb_func_start sub_815E394 -sub_815E394: @ 815E394 - push {lr} - bl DisableVBlankCounter1 - ldr r3, _0815E3F8 @ =gSpecialVar_Result - movs r0, 0 - strh r0, [r3] - ldr r0, _0815E3FC @ =gSaveBlock1Ptr - ldr r2, [r0] - ldr r1, _0815E400 @ =0x00003d34 - adds r0, r2, r1 - ldr r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r2, r0 - ldr r0, _0815E404 @ =0x00003d42 - adds r2, r0 - ldrb r0, [r2] - lsls r0, 29 - cmp r0, 0 - bge _0815E3C2 - movs r0, 0x1 - strh r0, [r3] -_0815E3C2: - ldrb r2, [r2] - lsls r0, r2, 31 - cmp r0, 0 - beq _0815E3D6 - lsls r0, r2, 30 - cmp r0, 0 - bge _0815E3D6 - ldrh r0, [r3] - adds r0, 0x1 - strh r0, [r3] -_0815E3D6: - ldr r0, _0815E3FC @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r2, _0815E400 @ =0x00003d34 - adds r0, r1, r2 - ldr r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - ldr r0, _0815E404 @ =0x00003d42 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_0815E3F8: .4byte gSpecialVar_Result -_0815E3FC: .4byte gSaveBlock1Ptr -_0815E400: .4byte 0x00003d34 -_0815E404: .4byte 0x00003d42 - thumb_func_end sub_815E394 - - thumb_func_start sub_815E408 -sub_815E408: @ 815E408 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r1, _0815E444 @ =gUnknown_847A2B4 - ldr r0, _0815E448 @ =gUnknown_203F458 - ldr r0, [r0] - ldrb r0, [r0, 0xF] - lsls r0, 1 - adds r0, r1 - ldrh r4, [r0] - ldr r0, _0815E44C @ =gSaveBlock1Ptr - mov r8, r0 - ldr r2, [r0] - ldr r7, _0815E450 @ =0x00003d34 - adds r0, r2, r7 - ldr r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r2, r0 - ldr r6, _0815E454 @ =0x00003d42 - adds r2, r6 - ldrb r0, [r2] - lsls r0, 31 - lsrs r5, r0, 31 - cmp r5, 0 - beq _0815E45C - ldr r1, _0815E458 @ =gSpecialVar_Result - movs r0, 0x2 - b _0815E4A0 - .align 2, 0 -_0815E444: .4byte gUnknown_847A2B4 -_0815E448: .4byte gUnknown_203F458 -_0815E44C: .4byte gSaveBlock1Ptr -_0815E450: .4byte 0x00003d34 -_0815E454: .4byte 0x00003d42 -_0815E458: .4byte gSpecialVar_Result -_0815E45C: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_809A084 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0815E49C - ldr r1, _0815E494 @ =gStringVar2 - adds r0, r4, 0 - bl sub_8099E90 - mov r0, r8 - ldr r1, [r0] - adds r0, r1, r7 - ldr r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - adds r1, r6 - ldrb r0, [r1] - movs r2, 0x1 - orrs r0, r2 - strb r0, [r1] - ldr r0, _0815E498 @ =gSpecialVar_Result - strh r5, [r0] - b _0815E4A2 - .align 2, 0 -_0815E494: .4byte gStringVar2 -_0815E498: .4byte gSpecialVar_Result -_0815E49C: - ldr r1, _0815E4AC @ =gSpecialVar_Result - movs r0, 0x1 -_0815E4A0: - strh r0, [r1] -_0815E4A2: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0815E4AC: .4byte gSpecialVar_Result - thumb_func_end sub_815E408 - - thumb_func_start sub_815E4B0 -sub_815E4B0: @ 815E4B0 - push {r4-r6,lr} - ldr r6, _0815E4D8 @ =gSaveBlock1Ptr - ldr r2, [r6] - ldr r1, _0815E4DC @ =0x00003d34 - adds r0, r2, r1 - ldr r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r1, r0, 2 - adds r0, r2, r1 - ldr r3, _0815E4E0 @ =0x00003d42 - adds r0, r3 - ldrb r0, [r0] - lsls r0, 30 - lsrs r5, r0, 31 - cmp r5, 0 - beq _0815E4E8 - ldr r1, _0815E4E4 @ =gSpecialVar_Result - movs r0, 0x2 - b _0815E534 - .align 2, 0 -_0815E4D8: .4byte gSaveBlock1Ptr -_0815E4DC: .4byte 0x00003d34 -_0815E4E0: .4byte 0x00003d42 -_0815E4E4: .4byte gSpecialVar_Result -_0815E4E8: - ldr r4, _0815E520 @ =0x00003d38 - adds r0, r1, r4 - adds r0, r2, r0 - adds r0, 0x4 - bl sub_815EDDC - ldr r3, [r6] - ldr r2, _0815E524 @ =0x00003d34 - adds r1, r3, r2 - ldr r2, [r1] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r4, r3, r4 - adds r4, r1 - ldr r4, [r4] - cmp r0, r4 - bls _0815E530 - adds r0, r1, r3 - ldr r3, _0815E528 @ =0x00003d3c - adds r0, r3 - adds r1, r4, 0 - bl sub_815EDF4 - ldr r0, _0815E52C @ =gSpecialVar_Result - strh r5, [r0] - b _0815E536 - .align 2, 0 -_0815E520: .4byte 0x00003d38 -_0815E524: .4byte 0x00003d34 -_0815E528: .4byte 0x00003d3c -_0815E52C: .4byte gSpecialVar_Result -_0815E530: - ldr r1, _0815E55C @ =gSpecialVar_Result - movs r0, 0x1 -_0815E534: - strh r0, [r1] -_0815E536: - ldr r0, _0815E560 @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r2, _0815E564 @ =0x00003d34 - adds r0, r1, r2 - ldr r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - ldr r3, _0815E568 @ =0x00003d42 - adds r1, r3 - ldrb r0, [r1] - movs r2, 0x2 - orrs r0, r2 - strb r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0815E55C: .4byte gSpecialVar_Result -_0815E560: .4byte gSaveBlock1Ptr -_0815E564: .4byte 0x00003d34 -_0815E568: .4byte 0x00003d42 - thumb_func_end sub_815E4B0 - - thumb_func_start sub_815E56C -sub_815E56C: @ 815E56C - push {r4,lr} - ldr r0, _0815E5A0 @ =gSaveBlock1Ptr - ldr r4, [r0] - ldr r1, _0815E5A4 @ =0x00003d34 - adds r0, r4, r1 - ldr r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r3, r0, 2 - adds r0, r4, r3 - ldr r1, _0815E5A8 @ =0x00003d42 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - blt _0815E5BA - subs r1, 0xA - adds r0, r4, r1 - adds r2, r0, r3 - ldr r1, [r2] - ldr r0, _0815E5AC @ =0x00034bbe - cmp r1, r0 - bls _0815E5B0 - adds r0, 0x1 - str r0, [r2] - b _0815E5BA - .align 2, 0 -_0815E5A0: .4byte gSaveBlock1Ptr -_0815E5A4: .4byte 0x00003d34 -_0815E5A8: .4byte 0x00003d42 -_0815E5AC: .4byte 0x00034bbe -_0815E5B0: - ldr r1, _0815E5C0 @ =0x00003d38 - adds r0, r3, r1 - adds r0, r4, r0 - bl SetVBlankCounter1Ptr -_0815E5BA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0815E5C0: .4byte 0x00003d38 - thumb_func_end sub_815E56C - - thumb_func_start sub_815E5C4 -sub_815E5C4: @ 815E5C4 - ldr r0, _0815E5E4 @ =gSaveBlock1Ptr - ldr r1, [r0] - ldr r2, _0815E5E8 @ =0x00003d34 - adds r0, r1, r2 - ldr r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r1, r0 - ldr r0, _0815E5EC @ =0x00003d42 - adds r1, r0 - ldrb r0, [r1] - movs r2, 0x8 - orrs r0, r2 - strb r0, [r1] - bx lr - .align 2, 0 -_0815E5E4: .4byte gSaveBlock1Ptr -_0815E5E8: .4byte 0x00003d34 -_0815E5EC: .4byte 0x00003d42 - thumb_func_end sub_815E5C4 - thumb_func_start sub_815E5F0 sub_815E5F0: @ 815E5F0 push {lr} @@ -1450,4 +962,59 @@ _0815EDD4: .4byte gUnknown_83FE998 _0815EDD8: .4byte gUnknown_83FE9C4 thumb_func_end sub_815EC8C + thumb_func_start sub_815EDDC +sub_815EDDC: @ 815EDDC + ldr r1, _0815EDF0 @ =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 +_0815EDF0: .4byte gSaveBlock2Ptr + thumb_func_end sub_815EDDC + + thumb_func_start sub_815EDF4 +sub_815EDF4: @ 815EDF4 + ldr r2, _0815EE08 @ =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 +_0815EE08: .4byte gSaveBlock2Ptr + thumb_func_end sub_815EDF4 + + thumb_func_start sub_815EE0C +sub_815EE0C: @ 815EE0C + push {r4-r6,lr} + ldr r6, _0815EE30 @ =gSaveBlock1Ptr + ldr r5, _0815EE34 @ =0x00003d38 + movs r4, 0x3 +_0815EE14: + ldr r0, [r6] + adds r0, r5 + adds r0, 0x4 + ldr r1, _0815EE38 @ =0x00034bbf + bl sub_815EDF4 + adds r5, 0xC + subs r4, 0x1 + cmp r4, 0 + bge _0815EE14 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815EE30: .4byte gSaveBlock1Ptr +_0815EE34: .4byte 0x00003d38 +_0815EE38: .4byte 0x00034bbf + thumb_func_end sub_815EE0C + .align 2, 0 @ Don't pad with nop. diff --git a/asm/unk_815EDDC.s b/asm/unk_815EDDC.s index 116458940..16db54083 100644 --- a/asm/unk_815EDDC.s +++ b/asm/unk_815EDDC.s @@ -5,61 +5,6 @@ .text - thumb_func_start sub_815EDDC -sub_815EDDC: @ 815EDDC - ldr r1, _0815EDF0 @ =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 -_0815EDF0: .4byte gSaveBlock2Ptr - thumb_func_end sub_815EDDC - - thumb_func_start sub_815EDF4 -sub_815EDF4: @ 815EDF4 - ldr r2, _0815EE08 @ =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 -_0815EE08: .4byte gSaveBlock2Ptr - thumb_func_end sub_815EDF4 - - thumb_func_start sub_815EE0C -sub_815EE0C: @ 815EE0C - push {r4-r6,lr} - ldr r6, _0815EE30 @ =gSaveBlock1Ptr - ldr r5, _0815EE34 @ =0x00003d38 - movs r4, 0x3 -_0815EE14: - ldr r0, [r6] - adds r0, r5 - adds r0, 0x4 - ldr r1, _0815EE38 @ =0x00034bbf - bl sub_815EDF4 - adds r5, 0xC - subs r4, 0x1 - cmp r4, 0 - bge _0815EE14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0815EE30: .4byte gSaveBlock1Ptr -_0815EE34: .4byte 0x00003d38 -_0815EE38: .4byte 0x00034bbf - thumb_func_end sub_815EE0C - thumb_func_start sub_815EE3C sub_815EE3C: @ 815EE3C ldr r1, _0815EE50 @ =gSaveBlock2Ptr diff --git a/data/trainer_tower.s b/data/trainer_tower.s index f90d1dd2b..6065500b5 100644 --- a/data/trainer_tower.s +++ b/data/trainer_tower.s @@ -1,5 +1,7 @@ +#include "constants/items.h" .include "asm/macros.inc" - .include "constants/constants.inc" + .include "constants/gba_constants.inc" + .include "constants/misc_constants.inc" .section .rodata @@ -562,7 +564,21 @@ gUnknown_847A284:: @ 847A284 .2byte 0x0131, 0x0175, 0x017d gUnknown_847A2B4:: @ 847A2B4 - .2byte 0x3f, 0x40, 0x41, 0x42, 0x43, 0x46, 0xb3, 0xb4, 0xb9, 0xba, 0xbb, 0xc6, 0xc7, 0xc9, 0xda + .2byte ITEM_HP_UP + .2byte ITEM_PROTEIN + .2byte ITEM_IRON + .2byte ITEM_CARBOS + .2byte ITEM_CALCIUM + .2byte ITEM_ZINC + .2byte ITEM_BRIGHT_POWDER + .2byte ITEM_WHITE_HERB + .2byte ITEM_MENTAL_HERB + .2byte ITEM_CHOICE_BAND + .2byte ITEM_KINGS_ROCK + .2byte ITEM_SCOPE_LENS + .2byte ITEM_METAL_COAT + .2byte ITEM_DRAGON_SCALE + .2byte ITEM_UP_GRADE gUnknown_847A2D2:: @ 847A2D2 .2byte 0x011d diff --git a/include/global.h b/include/global.h index 0ff9d67df..f418ff757 100644 --- a/include/global.h +++ b/include/global.h @@ -714,6 +714,14 @@ struct TrainerTowerLog u32 unk0; u32 unk4; u8 unk8; + u8 unk9; + u8 unkA_0:1; + u8 unkA_1:1; + u8 unkA_2:1; + u8 unkA_3:1; + u8 unkA_4:1; + u8 unkA_5:1; + u8 unkA_6:2; }; struct SaveBlock1 diff --git a/include/item.h b/include/item.h index 75c56c94d..bc1a49766 100644 --- a/include/item.h +++ b/include/item.h @@ -63,5 +63,6 @@ u16 itemid_get_market_price(u16 itemId); void sub_809A2DC(void); void sub_809A2A4(void); void sub_8099E90(u16, u8 *); +bool8 sub_809A084(u16 itemId, u16 amount); #endif // ITEM_H diff --git a/include/main.h b/include/main.h index 3fb254c95..6e9d2a25d 100644 --- a/include/main.h +++ b/include/main.h @@ -66,6 +66,7 @@ void DoSoftReset(void); void ClearPokemonCrySongs(void); void RestoreSerialTimer3IntrHandlers(void); void SetVBlankCounter1Ptr(u32 *ptr); +void DisableVBlankCounter1(void); extern const char RomHeaderGameCode[4]; extern const char RomHeaderSoftwareVersion; diff --git a/src/trainer_tower.c b/src/trainer_tower.c index eb9637b71..b196c49f7 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -17,6 +17,7 @@ #include "battle.h" #include "battle_2.h" #include "overworld.h" +#include "item.h" struct UnkStruct_8479D34 { @@ -42,7 +43,8 @@ struct UnkSubstruct_203F458_000C_004 struct UnkSubstruct_203F458_000C { - /* 0x000 */ u8 filler_000[2]; + /* 0x000 */ u8 unk_000; + /* 0x000 */ u8 unk_001; /* 0x002 */ u8 unk_002; /* 0x003 */ u8 unk_003; /* 0x004 */ struct UnkSubstruct_203F458_000C_004 unk_004[3]; @@ -128,14 +130,17 @@ void sub_815E948(void); void sub_815E9C8(void); void sub_815E9FC(void); void sub_815EC0C(void); +u32 sub_815EDDC(u32 *); +void sub_815EDF4(u32 *, u32); extern const struct UnkStruct_8479D34 gUnknown_8479D34[15]; +extern const struct UnkStruct_8479ED8 gUnknown_8479ED8[83]; +extern const struct UnkStruct_847A024 gUnknown_847A024[10]; extern void (*const gUnknown_847A230[])(void); extern const struct Unk_203F458_Header gUnknown_84827AC; extern const struct UnkSubstruct_203F458_000C *const gUnknown_84827B4[][8]; extern const u16 gUnknown_847A284[8][3]; -extern const struct UnkStruct_8479ED8 gUnknown_8479ED8[83]; -extern const struct UnkStruct_847A024 gUnknown_847A024[10]; +extern const u16 gUnknown_847A2B4[]; bool32 sub_815D7BC(void * dest, void * buffer) { @@ -771,3 +776,85 @@ void sub_815E1F0(void) { gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk8++; } + +void sub_815E218(void) +{ + u16 mapDataId = gMapHeader.mapDataId; + if (mapDataId - 0x12A == gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk8 && mapDataId - 0x129 <= gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_001) + gSpecialVar_Result = FALSE; + else + gSpecialVar_Result = TRUE; +} + +void sub_815E28C(void) +{ + gSaveBlock1Ptr->unkArrayIdx = gSpecialVar_0x8005; + if (gSaveBlock1Ptr->unkArrayIdx >= NELEMS(gSaveBlock1Ptr->unkArray)) + gSaveBlock1Ptr->unkArrayIdx = 0; + sub_815EC0C(); + if (!sub_815D834()) + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_5 = TRUE; + else + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_5 = FALSE; + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk8 = 0; + SetVBlankCounter1Ptr(&gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0); + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0 = 0; + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_2 = FALSE; + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_1 = FALSE; +} + +void sub_815E394(void) +{ + DisableVBlankCounter1(); + gSpecialVar_Result = 0; + if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_2) + gSpecialVar_Result++; + if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_0 && gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_1) + gSpecialVar_Result++; + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_2 = TRUE; +} + +void sub_815E408(void) +{ + u16 itemId = gUnknown_847A2B4[gUnknown_203F458->unk_0004.unk_0008->unk_003]; + if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_0) + gSpecialVar_Result = 2; + else if (sub_809A084(itemId, 1) == 1) + { + sub_8099E90(itemId, gStringVar2); + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_0 = TRUE; + gSpecialVar_Result = 0; + } + else + gSpecialVar_Result = 1; +} + +void sub_815E4B0(void) +{ + if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_1) + gSpecialVar_Result = 2; + else if (sub_815EDDC(&gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk4) > gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0) + { + sub_815EDF4(&gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk4, gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0); + gSpecialVar_Result = 0; + } + else + gSpecialVar_Result = 1; + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_1 = TRUE; +} + +void sub_815E56C(void) +{ + if (!gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_2) + { + if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0 >= 215999) + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0 = 215999; + else + SetVBlankCounter1Ptr(&gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0); + } +} + +void sub_815E5C4(void) +{ + gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_3 = 1; +} |