summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/trainer_tower.s543
-rw-r--r--asm/unk_815EDDC.s55
-rw-r--r--data/trainer_tower.s20
-rw-r--r--include/global.h8
-rw-r--r--include/item.h1
-rw-r--r--include/main.h1
-rw-r--r--src/trainer_tower.c93
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;
+}