summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/secret_base.s86
-rwxr-xr-xinclude/event_scripts.h1
-rw-r--r--src/secret_base.c30
3 files changed, 31 insertions, 86 deletions
diff --git a/asm/secret_base.s b/asm/secret_base.s
index 68e6aaa5c..9a02ea498 100644
--- a/asm/secret_base.s
+++ b/asm/secret_base.s
@@ -5,92 +5,6 @@
.text
- thumb_func_start sub_80E95D4
-sub_80E95D4: @ 80E95D4
- push {r4,r5,lr}
- ldr r5, =0x0000401f
- ldr r4, =gUnknown_0858D060
- ldr r0, =0x00004054
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- bl sub_80EA20C
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- ldrb r1, [r0]
- adds r0, r5, 0
- bl VarSet
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80E95D4
-
- thumb_func_start sub_80E9608
-sub_80E9608: @ 80E9608
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r3, 0
- ldrb r0, [r4, 0x3]
- cmp r3, r0
- bge _080E9660
- ldr r6, =sCurSecretBaseId
-_080E9618:
- lsls r3, 16
- asrs r1, r3, 16
- ldr r2, [r4, 0x10]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r2, r0, r2
- ldrb r0, [r2, 0x5]
- cmp r0, 0x8
- bne _080E9650
- movs r0, 0
- ldrsh r1, [r5, r0]
- ldrh r0, [r2]
- adds r0, 0x7
- cmp r1, r0
- bne _080E9650
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- ldrh r0, [r2, 0x2]
- adds r0, 0x7
- cmp r1, r0
- bne _080E9650
- ldr r0, [r2, 0x8]
- strb r0, [r6]
- b _080E9660
- .pool
-_080E9650:
- movs r1, 0x80
- lsls r1, 9
- adds r0, r3, r1
- lsrs r3, r0, 16
- asrs r0, 16
- ldrb r1, [r4, 0x3]
- cmp r0, r1
- blt _080E9618
-_080E9660:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80E9608
-
- thumb_func_start sub_80E9668
-sub_80E9668: @ 80E9668
- push {lr}
- bl sub_80E9608
- bl sub_80E8B6C
- ldr r0, =gUnknown_08275BB7
- bl ScriptContext1_SetupScript
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80E9668
-
thumb_func_start sub_80E9680
sub_80E9680: @ 80E9680
push {lr}
diff --git a/include/event_scripts.h b/include/event_scripts.h
index ff02a110a..74502541b 100755
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -6,6 +6,7 @@
#define GUARD_EVENT_SCRIPTS_H
extern const u8 gUnknown_0823B4E8[];
+extern const u8 gUnknown_08275BB7[];
extern const u8 gUnknown_08275D0C[];
extern const u8 gUnknown_08275D1F[];
extern const u8 gUnknown_08275D2E[];
diff --git a/src/secret_base.c b/src/secret_base.c
index 757066781..b5ed0f6ae 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -17,6 +17,7 @@
#include "text.h"
#include "string_util.h"
#include "script.h"
+#include "event_scripts.h"
#include "event_data.h"
#include "decoration.h"
#include "decoration_inventory.h"
@@ -36,6 +37,8 @@ EWRAM_DATA struct SecretBaseListMenuBuffer *gUnknown_0203A020 = NULL;
// Static ROM declarations
+u8 sub_80EA20C(u8 sbId);
+
// .rodata
extern const struct {
@@ -44,6 +47,7 @@ extern const struct {
} gUnknown_0858CFCC[7];
extern const u8 gUnknown_0858CFE8[];
+extern const u8 gUnknown_0858D060[];
// .text
@@ -486,3 +490,29 @@ void sub_80E9578(void)
}
}
}
+
+void sub_80E95D4(void)
+{
+ VarSet(VAR_0x401F, gUnknown_0858D060[sub_80EA20C(VarGet(VAR_0x4054))]);
+}
+
+void sub_80E9608(struct Coords16 *coords, struct MapEvents *events)
+{
+ s16 bgevtidx;
+
+ for (bgevtidx = 0; bgevtidx < events->bgEventCount; bgevtidx ++)
+ {
+ if (events->bgEvents[bgevtidx].kind == 8 && coords->x == events->bgEvents[bgevtidx].x + 7 && coords->y == events->bgEvents[bgevtidx].y + 7)
+ {
+ sCurSecretBaseId = events->bgEvents[bgevtidx].bgUnion.secretBaseId;
+ break;
+ }
+ }
+}
+
+void sub_80E9668(struct Coords16 *coords, struct MapEvents *events)
+{
+ sub_80E9608(coords, events);
+ sub_80E8B6C();
+ ScriptContext1_SetupScript(gUnknown_08275BB7);
+}