summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-05-15 18:43:04 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-05-15 18:43:04 -0400
commita1943d4990aa268a33594eeee4124ebaa15c8210 (patch)
tree8caef886eb50ee5997d68d94fd5ccf4003ba2200 /src
parenta3169debddc9bc8168ae79f96178a7f68732da13 (diff)
parentd8ca3a6b9dbe429d87b78ee5bf6e02f430b74d5a (diff)
Merge github.com:pikalaxalt/pokeruby
Diffstat (limited to 'src')
-rw-r--r--src/secret_base.c16
-rwxr-xr-xsrc/secret_base_80bb4ac.c146
2 files changed, 156 insertions, 6 deletions
diff --git a/src/secret_base.c b/src/secret_base.c
index 572dfaa1d..63c08d629 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -2,6 +2,9 @@
#include "string_util.h"
#include "strings.h"
#include "text.h"
+#include "event_data.h"
+
+extern u8 gUnknown_020387DC;
u8 sub_80BB8A8(void *);
@@ -16,3 +19,16 @@ u8 *sub_80BC190(u8 *dest, u8 arg1) {
return StringAppend(dest, gOtherText_PlayersBase);
}
+
+u8 *GetSecretBaseMapName(u8 *dest) {
+ gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(0x4054)].sbr_field_0;
+ return sub_80BC190(dest, VarGet(0x4054));
+}
+
+void sub_80BC224(void) {
+ u8 *var0 = gSaveBlock1.secretBases[(u8)VarGet(0x4054)].sbr_field_2;
+ u8 *var1 = gStringVar1;
+ u8 var2 = sub_80BB8A8(var0);
+ u8 *var3 = StringCopyN(var1, var0, var2);
+ *var3 = EOS;
+}
diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c
index 9bf6d216a..cdf609cbc 100755
--- a/src/secret_base_80bb4ac.c
+++ b/src/secret_base_80bb4ac.c
@@ -1,9 +1,11 @@
#include "global.h"
#include "event_data.h"
-#include "vars.h"
+#include "asm.h"
+#include "field_player_avatar.h"
extern u8 gUnknown_020387DC;
extern u16 gSpecialVar_0x8004;
+extern u16 gSpecialVar_0x8007;
extern u16 gScriptResult;
void sub_80BB4AC(struct SecretBaseRecord *record) { // 080bb4ac
@@ -55,10 +57,142 @@ void sub_80BB5E4(void) { // 80bb5e4
u16 idx;
gScriptResult = 0;
for (idx=0; idx<20; idx++) {
- if (gUnknown_020387DC == gSaveBlock1.secretBases[idx].sbr_field_0) {
- gScriptResult = 1;
- VarSet(0x4054, idx);
- return;
- }
+ if (gUnknown_020387DC != gSaveBlock1.secretBases[idx].sbr_field_0)
+ continue;
+ gScriptResult = 1;
+ VarSet(0x4054, idx);
+ break;
+ }
+}
+
+void sub_80BB63C(void) { // 80bb63c
+ if (gSaveBlock1.secretBases[0].sbr_field_0)
+ gScriptResult = 1;
+ else
+ gScriptResult = 0;
+}
+
+#ifdef NONMATCHING
+u8 sub_80BB66C(void) { // 80bb66c
+ s16 x, y;
+ u16 v0;
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ v0 = MapGridGetMetatileBehaviorAt(x, y) & 0xFFF;
+ if (v0 == 0x90 || v0 == 0x91)
+ return 1;
+ else if (v0 == 0x92 || v0 == 0x93)
+ return 2;
+ else if (v0 == 0x9a || v0 == 0x9b)
+ return 3;
+ else if (v0 == 0x94 || v0 == 0x95)
+ return 4;
+ else if (v0 == 0x96 || v0 == 0x97 || v0 == 0x9c || v0 == 0x9d)
+ return 5;
+ else if (v0 == 0x98 || v0 == 0x99)
+ return 6;
+ return 0;
+}
+#else
+__attribute__((naked))
+u8 sub_80BB66C(void) {
+ asm(".syntax unified\n\
+ push {r4,lr}\n\
+ sub sp, 0x4\n\
+ mov r4, sp\n\
+ adds r4, 0x2\n\
+ mov r0, sp\n\
+ adds r1, r4, 0\n\
+ bl GetXYCoordsOneStepInFrontOfPlayer\n\
+ mov r0, sp\n\
+ movs r1, 0\n\
+ ldrsh r0, [r0, r1]\n\
+ movs r2, 0\n\
+ ldrsh r1, [r4, r2]\n\
+ bl MapGridGetMetatileBehaviorAt\n\
+ adds r1, r0, 0\n\
+ ldr r2, _080BB6A4 @ =0x00000fff\n\
+ adds r0, r2, 0\n\
+ ands r1, r0\n\
+ adds r0, r1, 0\n\
+ subs r0, 0x90\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bhi _080BB6A8\n\
+ movs r0, 0x1\n\
+ b _080BB702\n\
+ .align 2, 0\n\
+ _080BB6A4: .4byte 0x00000fff\n\
+ _080BB6A8:\n\
+ adds r0, r1, 0\n\
+ subs r0, 0x92\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bhi _080BB6B8\n\
+ movs r0, 0x2\n\
+ b _080BB702\n\
+ _080BB6B8:\n\
+ adds r0, r1, 0\n\
+ subs r0, 0x9A\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bhi _080BB6C8\n\
+ movs r0, 0x3\n\
+ b _080BB702\n\
+ _080BB6C8:\n\
+ adds r0, r1, 0\n\
+ subs r0, 0x94\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bhi _080BB6D8\n\
+ movs r0, 0x4\n\
+ b _080BB702\n\
+ _080BB6D8:\n\
+ adds r0, r1, 0\n\
+ subs r0, 0x96\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bls _080BB6EC\n\
+ cmp r1, 0x9C\n\
+ beq _080BB6EC\n\
+ cmp r1, 0x9D\n\
+ bne _080BB6F0\n\
+ _080BB6EC:\n\
+ movs r0, 0x5\n\
+ b _080BB702\n\
+ _080BB6F0:\n\
+ adds r0, r1, 0\n\
+ subs r0, 0x98\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bls _080BB700\n\
+ movs r0, 0\n\
+ b _080BB702\n\
+ _080BB700:\n\
+ movs r0, 0x6\n\
+ _080BB702:\n\
+ add sp, 0x4\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .syntax divided\n");
+}
+#endif
+
+void sub_80BB70C(void) { // 80bb70c
+ gSpecialVar_0x8007 = sub_80BB66C();
+}
+
+s16 unref_sub_80BB724(u16 *a0, u8 a1) {
+ u16 v2;
+ for (v2=0; v2<0x200; v2++) {
+ if ((a0[v2] & 0xFFF) == a1)
+ return (s16)v2;
}
+ return -1;
}