through sub_815D8F8

This commit is contained in:
scnorton
2018-12-30 12:32:42 -05:00
parent 220fe47299
commit 0216888949
5 changed files with 53 additions and 110 deletions
+6 -89
View File
@@ -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
+1 -10
View File
@@ -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
+2
View File
@@ -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
+1 -1
View File
@@ -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
+43 -10
View File
@@ -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();
}
}