diff options
author | scnorton <scnorton@biociphers.org> | 2018-12-30 12:32:42 -0500 |
---|---|---|
committer | scnorton <scnorton@biociphers.org> | 2018-12-30 12:32:42 -0500 |
commit | 0216888949983ec9fcc4649624723714a80db86f (patch) | |
tree | 783e6bc790ee57461184a5558ba9113930c6561a | |
parent | 220fe47299e9fd43ffd2cacfb0222ea4f5548998 (diff) |
through sub_815D8F8
-rw-r--r-- | asm/trainer_tower.s | 95 | ||||
-rw-r--r-- | data/data_8471F00.s | 11 | ||||
-rw-r--r-- | include/constants/flags.h | 2 | ||||
-rw-r--r-- | include/constants/vars.h | 2 | ||||
-rw-r--r-- | src/trainer_tower.c | 53 |
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(); + } +} |