summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/secret_base.s36
-rwxr-xr-xsrc/secret_base_80bb4ac.c75
2 files changed, 46 insertions, 65 deletions
diff --git a/asm/secret_base.s b/asm/secret_base.s
index 607e1644f..cd82ff213 100644
--- a/asm/secret_base.s
+++ b/asm/secret_base.s
@@ -6,42 +6,6 @@
.text
- thumb_func_start ResetSecretBase
-ResetSecretBase: @ 80BB594
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 5
- ldr r1, _080BB5B0 @ =gSaveBlock1 + 0x1A08
- adds r0, r1
- bl sub_80BB4AC
- pop {r0}
- bx r0
- .align 2, 0
-_080BB5B0: .4byte gSaveBlock1 + 0x1A08
- thumb_func_end ResetSecretBase
-
- thumb_func_start ResetSecretBases
-ResetSecretBases: @ 80BB5B4
- push {r4,lr}
- movs r4, 0
-_080BB5B8:
- lsls r0, r4, 24
- lsrs r0, 24
- bl ResetSecretBase
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x13
- bls _080BB5B8
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ResetSecretBases
-
thumb_func_start sub_80BB5D0
sub_80BB5D0: @ 80BB5D0
ldr r0, _080BB5DC @ =gUnknown_020387DC
diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c
index f3f3641fc..cc629d05a 100755
--- a/src/secret_base_80bb4ac.c
+++ b/src/secret_base_80bb4ac.c
@@ -1,32 +1,49 @@
#include "global.h"
-void sub_80BB4AC(struct SecretBaseRecord *record) {
- u16 i;
- u16 j;
- record->sbr_field_0 = 0;
- for (i=0; i<7; i++)
- record->sbr_field_2[i] = 0xff;
- for (i=0; i<4; i++)
- record->trainerId[i] = 0x00;
- record->sbr_field_e = 0;
- record->sbr_field_10 = 0;
- record->sbr_field_11 = 0;
- record->sbr_field_1_0 = 0;
- record->gender = 0;
- record->sbr_field_1_5 = 0;
- record->sbr_field_1_6 = 0;
- for (i=0; i<16; i++) {
- record->decorations[i] = 0;
- record->sbr_field_22[i] = 0;
- }
- for (i=0; i<6; i++) {
- for (j=0; j<4; j++) {
- record->partyMoves[i * 4 + j] = 0;
- }
- record->partyPersonality[i] = 0;
- record->partyEVs[i] = 0;
- record->partySpecies[i] = 0;
- record->partyHeldItems[i] = 0;
- record->partyLevels[i] = 0;
- }
+extern int gUnknown_020387DC;
+extern int gSpecialVar_0x8004;
+
+void sub_80BB4AC(struct SecretBaseRecord *record) { // 080bb4ac
+ u16 i;
+ u16 j;
+ record->sbr_field_0 = 0;
+ for (i=0; i<7; i++)
+ record->sbr_field_2[i] = 0xff;
+ for (i=0; i<4; i++)
+ record->trainerId[i] = 0x00;
+ record->sbr_field_e = 0;
+ record->sbr_field_10 = 0;
+ record->sbr_field_11 = 0;
+ record->sbr_field_1_0 = 0;
+ record->gender = 0;
+ record->sbr_field_1_5 = 0;
+ record->sbr_field_1_6 = 0;
+ for (i=0; i<16; i++) {
+ record->decorations[i] = 0;
+ record->sbr_field_22[i] = 0;
+ }
+ for (i=0; i<6; i++) {
+ for (j=0; j<4; j++) {
+ record->partyMoves[i * 4 + j] = 0;
+ }
+ record->partyPersonality[i] = 0;
+ record->partyEVs[i] = 0;
+ record->partySpecies[i] = 0;
+ record->partyHeldItems[i] = 0;
+ record->partyLevels[i] = 0;
+ }
+}
+
+void ResetSecretBase(u8 idx) { // 80bb594
+ sub_80BB4AC(&(gSaveBlock1.secretBases[idx]));
}
+
+void ResetSecretBases(void) { // 080bb5b4
+ u16 i;
+ for (i=0; i<20; i++)
+ ResetSecretBase(i);
+}
+
+// void sub_80BB5D0(void) { // 080bb5d0
+ // gUnknown_020387DC = gSpecialVar_0x8004;
+// }