summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/secret_base.s78
-rw-r--r--include/vars.h1
-rwxr-xr-xsrc/secret_base_80bb4ac.c19
3 files changed, 20 insertions, 78 deletions
diff --git a/asm/secret_base.s b/asm/secret_base.s
index e36ee9791..a42f1d75b 100644
--- a/asm/secret_base.s
+++ b/asm/secret_base.s
@@ -6,84 +6,6 @@
.section .text_b
- thumb_func_start sub_80BBFA4
-sub_80BBFA4: @ 80BBFA4
- push {r4,r5,lr}
- ldr r0, _080BBFCC @ =0x00004054
- bl VarGet
- ldr r5, _080BBFD0 @ =0x0000401f
- ldr r4, _080BBFD4 @ =gUnknown_083D13EC
- lsls r0, 24
- lsrs r0, 24
- bl sub_80BCCA4
- 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
- .align 2, 0
-_080BBFCC: .4byte 0x00004054
-_080BBFD0: .4byte 0x0000401f
-_080BBFD4: .4byte gUnknown_083D13EC
- thumb_func_end sub_80BBFA4
-
- thumb_func_start sub_80BBFD8
-sub_80BBFD8: @ 80BBFD8
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r3, 0
- ldrb r0, [r4, 0x3]
- cmp r3, r0
- bge _080BC030
- ldr r6, _080BC01C @ =gUnknown_020387DC
-_080BBFE8:
- 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 _080BC020
- movs r0, 0
- ldrsh r1, [r5, r0]
- ldrh r0, [r2]
- adds r0, 0x7
- cmp r1, r0
- bne _080BC020
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- ldrh r0, [r2, 0x2]
- adds r0, 0x7
- cmp r1, r0
- bne _080BC020
- ldr r0, [r2, 0x8]
- strb r0, [r6]
- b _080BC030
- .align 2, 0
-_080BC01C: .4byte gUnknown_020387DC
-_080BC020:
- 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 _080BBFE8
-_080BC030:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80BBFD8
-
thumb_func_start sub_80BC038
sub_80BC038: @ 80BC038
push {lr}
diff --git a/include/vars.h b/include/vars.h
index c2bddeedc..9a90a9468 100644
--- a/include/vars.h
+++ b/include/vars.h
@@ -1,6 +1,7 @@
#ifndef GUARD_VARS_H
#define GUARD_VARS_H
+#define VAR_0x401F 0x401F
#define VAR_RECYCLE_GOODS 0x4020
#define VAR_REPEL_STEP_COUNT 0x4021
#define VAR_ICE_STEP_COUNT 0x4022
diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c
index 2c0b7a388..4989ec40f 100755
--- a/src/secret_base_80bb4ac.c
+++ b/src/secret_base_80bb4ac.c
@@ -29,6 +29,8 @@ extern const struct
extern const u8 gUnknown_083D1374[4 * 16];
extern void *gUnknown_0300485C;
extern u8 sub_807D770(void);
+extern u8 gUnknown_083D13EC[12];
+extern u8 sub_80BCCA4(u8);
void sub_80BB4AC(struct SecretBaseRecord *record) // 080bb4ac
@@ -740,3 +742,20 @@ _080BBFA0: .4byte gDecorations + 0x1C\n\
.syntax divided\n");
}
#endif
+
+void sub_80BBFA4(void)
+{
+ int curBase = VarGet(VAR_0x4054);
+ VarSet(VAR_0x401F, gUnknown_083D13EC[sub_80BCCA4(curBase)]);
+}
+
+void sub_80BBFD8(s16 *position, struct MapEvents *events)
+{
+ s16 bgevtidx;
+ for (bgevtidx=0; bgevtidx<events->bgEventCount; bgevtidx++) {
+ if (events->bgEvents[bgevtidx].kind == 8 && position[0] == events->bgEvents[bgevtidx].x + 7 && position[1] == events->bgEvents[bgevtidx].y + 7) {
+ gUnknown_020387DC = events->bgEvents[bgevtidx].bgUnion.secretBaseId;
+ break;
+ }
+ }
+}