summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2018-12-30 12:32:42 -0500
committerscnorton <scnorton@biociphers.org>2018-12-30 12:32:42 -0500
commit0216888949983ec9fcc4649624723714a80db86f (patch)
tree783e6bc790ee57461184a5558ba9113930c6561a
parent220fe47299e9fd43ffd2cacfb0222ea4f5548998 (diff)
through sub_815D8F8
-rw-r--r--asm/trainer_tower.s95
-rw-r--r--data/data_8471F00.s11
-rw-r--r--include/constants/flags.h2
-rw-r--r--include/constants/vars.h2
-rw-r--r--src/trainer_tower.c53
5 files changed, 53 insertions, 110 deletions
diff --git a/asm/trainer_tower.s b/asm/trainer_tower.s
index a8c331cec..d884ba2f3 100644
--- a/asm/trainer_tower.s
+++ b/asm/trainer_tower.s
@@ -5,89 +5,6 @@
.text
- thumb_func_start sub_815D8C8
-sub_815D8C8: @ 815D8C8
- push {r4,lr}
- ldr r4, _0815D8F0 @ =0x00004023
- adds r0, r4, 0
- bl VarGet
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, _0815D8F4 @ =0x000005db
- cmp r1, r0
- bhi _0815D8E8
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
-_0815D8E8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815D8F0: .4byte 0x00004023
-_0815D8F4: .4byte 0x000005db
- thumb_func_end sub_815D8C8
-
- thumb_func_start sub_815D8F8
-sub_815D8F8: @ 815D8F8
- push {r4-r6,lr}
- movs r4, 0xFF
- movs r2, 0
- ldr r6, _0815D95C @ =gUnknown_8479D34
- ldr r0, _0815D960 @ =gSaveBlock1Ptr
- ldr r3, [r0]
- movs r5, 0x4
- ldrsb r5, [r3, r5]
-_0815D908:
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r1, r0, r6
- movs r0, 0
- ldrsb r0, [r1, r0]
- cmp r0, r5
- bne _0815D928
- ldrb r1, [r1, 0x1]
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x5
- ldrsb r0, [r3, r0]
- cmp r1, r0
- bne _0815D928
- adds r4, r2, 0
-_0815D928:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xE
- bls _0815D908
- cmp r4, 0xFF
- beq _0815D956
- ldr r4, _0815D964 @ =0x00004023
- adds r0, r4, 0
- bl VarGet
- lsls r0, 16
- ldr r1, _0815D968 @ =0x05db0000
- cmp r0, r1
- bls _0815D956
- adds r0, r4, 0
- movs r1, 0
- bl VarSet
- bl sub_815D838
- bl sub_815D96C
-_0815D956:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0815D95C: .4byte gUnknown_8479D34
-_0815D960: .4byte gSaveBlock1Ptr
-_0815D964: .4byte 0x00004023
-_0815D968: .4byte 0x05db0000
- thumb_func_end sub_815D8F8
-
thumb_func_start sub_815D96C
sub_815D96C: @ 815D96C
push {r4-r6,lr}
@@ -105,25 +22,25 @@ _0815D970:
lsls r0, r6, 3
subs r0, r6
lsls r0, 2
- ldr r1, _0815D990 @ =gUnknown_8479D38
+ ldr r1, _0815D990 @ =gUnknown_8479D34
b _0815D9B0
.align 2, 0
-_0815D990: .4byte gUnknown_8479D38
+_0815D990: .4byte gUnknown_8479D34 + 4
_0815D994:
cmp r0, 0x3B
bls _0815D9A8
lsls r0, r6, 3
subs r0, r6
lsls r0, 2
- ldr r1, _0815D9A4 @ =gUnknown_8479D40
+ ldr r1, _0815D9A4 @ =gUnknown_8479D34 + 12
b _0815D9B0
.align 2, 0
-_0815D9A4: .4byte gUnknown_8479D40
+_0815D9A4: .4byte gUnknown_8479D34 + 12
_0815D9A8:
lsls r0, r6, 3
subs r0, r6
lsls r0, 2
- ldr r1, _0815D9E4 @ =gUnknown_8479D48
+ ldr r1, _0815D9E4 @ =gUnknown_8479D34 + 20
_0815D9B0:
adds r5, r0, r1
movs r4, 0
@@ -153,7 +70,7 @@ _0815D9CC:
pop {r0}
bx r0
.align 2, 0
-_0815D9E4: .4byte gUnknown_8479D48
+_0815D9E4: .4byte gUnknown_8479D34 + 20
thumb_func_end sub_815D96C
thumb_func_start sub_815D9E8
diff --git a/data/data_8471F00.s b/data/data_8471F00.s
index f43d61cd2..9721cd5ed 100644
--- a/data/data_8471F00.s
+++ b/data/data_8471F00.s
@@ -268,16 +268,7 @@ gUnknown_8479D24:: @ 8479D24
// trainer_tower
gUnknown_8479D34:: @ 8479D34
- .incbin "baserom.gba", 0x479D34, 0x4
-
-gUnknown_8479D38:: @ 8479D38
- .incbin "baserom.gba", 0x479D38, 0x8
-
-gUnknown_8479D40:: @ 8479D40
- .incbin "baserom.gba", 0x479D40, 0x8
-
-gUnknown_8479D48:: @ 8479D48
- .incbin "baserom.gba", 0x479D48, 0x190
+ .incbin "baserom.gba", 0x479D34, 0x1A4
gUnknown_8479ED8:: @ 8479ED8
.incbin "baserom.gba", 0x479ED8, 0x14C
diff --git a/include/constants/flags.h b/include/constants/flags.h
index ea2d7d8bc..daa8b3132 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -1002,6 +1002,8 @@
#define FLAG_0x3E5 0x3E5
#define FLAG_0x3E6 0x3E6
#define FLAG_0x3E7 0x3E7
+
+#define FLAG_TRAINER_TOWER_START 1000 // 0x3E8
#define FLAG_0x3E8 0x3E8
#define FLAG_0x3E9 0x3E9
#define FLAG_0x3EA 0x3EA
diff --git a/include/constants/vars.h b/include/constants/vars.h
index c9340a3b4..886bae93c 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -38,7 +38,7 @@
#define VAR_RECYCLE_GOODS 0x4020
#define VAR_REPEL_STEP_COUNT 0x4021
#define VAR_ICE_STEP_COUNT 0x4022
-#define VAR_FIRST_POKE 0x4023
+#define VAR_0x4023 0x4023
#define VAR_MIRAGE_RND_H 0x4024
#define VAR_MIRAGE_RND_L 0x4025
#define VAR_SECRET_BASE_MAP 0x4026
diff --git a/src/trainer_tower.c b/src/trainer_tower.c
index f2726d59b..86b4639dd 100644
--- a/src/trainer_tower.c
+++ b/src/trainer_tower.c
@@ -1,19 +1,24 @@
#include "global.h"
+#include "constants/flags.h"
+#include "constants/vars.h"
#include "malloc.h"
#include "save.h"
#include "event_data.h"
#include "cereader_tool.h"
-struct UnkStruct_8479D38
+struct UnkStruct_8479D34
{
+ s8 mapGroup;
+ s8 mapNum;
+ u8 filler[2];
u8 flags1[8];
u8 flags2[8];
u8 flags3[8];
- u8 unk_24;
- u8 unk_25;
};
-extern const struct UnkStruct_8479D38 gUnknown_8479D38[15];
+extern const struct UnkStruct_8479D34 gUnknown_8479D34[15];
+
+void sub_815D96C(void);
bool32 sub_815D7BC(void * dest, void * buffer)
{
@@ -50,17 +55,45 @@ void sub_815D838(void)
for (i = 0; i < 15; i++)
{
- const u8 * flags1 = gUnknown_8479D38[i].flags1;
- const u8 * flags2 = gUnknown_8479D38[i].flags2;
- const u8 * flags3 = gUnknown_8479D38[i].flags3;
+ const u8 * flags1 = gUnknown_8479D34[i].flags1;
+ const u8 * flags2 = gUnknown_8479D34[i].flags2;
+ const u8 * flags3 = gUnknown_8479D34[i].flags3;
for (j = 0; j < 8; j++)
{
if (flags1[j] != 0xFF)
- FlagSet(1000 + flags1[j]);
+ FlagSet(FLAG_TRAINER_TOWER_START + flags1[j]);
if (flags2[j] != 0xFF)
- FlagSet(1000 + flags2[j]);
+ FlagSet(FLAG_TRAINER_TOWER_START + flags2[j]);
if (flags3[j] != 0xFF)
- FlagSet(1000 + flags3[j]);
+ FlagSet(FLAG_TRAINER_TOWER_START + flags3[j]);
}
}
}
+
+void sub_815D8C8(void)
+{
+ u16 var = VarGet(VAR_0x4023);
+ if (var < 1500) {
+ VarSet(VAR_0x4023, var + 1);
+ }
+}
+
+void sub_815D8F8(void)
+{
+ u8 i;
+ register u32 found_map asm("r4") = 0xFF;
+ for (i = 0; i < 15; i++)
+ {
+ if (gUnknown_8479D34[i].mapGroup == gSaveBlock1Ptr->location.mapGroup && gUnknown_8479D34[i].mapNum == gSaveBlock1Ptr->location.mapNum)
+ found_map = i;
+ }
+
+ if (found_map == 0xFF)
+ return;
+ if (VarGet(VAR_0x4023) >= 1500)
+ {
+ VarSet(VAR_0x4023, 0);
+ sub_815D838();
+ sub_815D96C();
+ }
+}