summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/modules/52/asm/module_52.s293
-rw-r--r--arm9/modules/52/include/module_52.h42
-rw-r--r--arm9/modules/52/src/module_52.c647
-rw-r--r--include/event_data.h2
4 files changed, 691 insertions, 293 deletions
diff --git a/arm9/modules/52/asm/module_52.s b/arm9/modules/52/asm/module_52.s
deleted file mode 100644
index 22824930..00000000
--- a/arm9/modules/52/asm/module_52.s
+++ /dev/null
@@ -1,293 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
- .section .text
- .balign 4, 0
-
- thumb_func_start MOD52_021D74E0
-MOD52_021D74E0: ; 0x021D74E0
- push {r3, lr}
- mov r2, #2
- mov r0, #3
- mov r1, #0x4d
- lsl r2, r2, #0x10
- bl FUN_0201681C
- bl InitializeMainRNG
- mov r0, #1
- pop {r3, pc}
- .align 2, 0
- thumb_func_end MOD52_021D74E0
-
- thumb_func_start MOD52_021D74F8
-MOD52_021D74F8: ; 0x021D74F8
- push {r3, lr}
- bl OverlayManager_GetField18
- ldr r1, [r0, #8]
- mov r0, #0x4d
- bl MOD52_021D769C
- mov r0, #1
- pop {r3, pc}
- .align 2, 0
- thumb_func_end MOD52_021D74F8
-
- thumb_func_start MOD52_021D750C
-MOD52_021D750C: ; 0x021D750C
- push {r3, lr}
- mov r0, #0x4d
- bl FUN_020168D0
- mov r0, #0
- ldr r1, _021D7524 ; =UNK_020FD144
- mvn r0, r0
- bl RegisterMainOverlay
- mov r0, #1
- pop {r3, pc}
- nop
-_021D7524: .word UNK_020FD144
- thumb_func_end MOD52_021D750C
-
- thumb_func_start MOD52_021D7528
-MOD52_021D7528: ; 0x021D7528
- push {r3, lr}
- mov r2, #2
- mov r0, #3
- mov r1, #0x4d
- lsl r2, r2, #0x10
- bl FUN_0201681C
- bl InitializeMainRNG
- mov r0, #1
- pop {r3, pc}
- .align 2, 0
- thumb_func_end MOD52_021D7528
-
- thumb_func_start MOD52_021D7540
-MOD52_021D7540: ; 0x021D7540
- push {r4, lr}
- bl OverlayManager_GetField18
- ldr r4, [r0, #8]
- mov r0, #0x4d
- add r1, r4, #0
- mov r2, #1
- bl MOD52_021D7604
- add r0, r4, #0
- bl Sav2_PlayerData_GetIGTAddr
- bl FUN_02015E3C
- mov r0, #1
- pop {r4, pc}
- thumb_func_end MOD52_021D7540
-
- thumb_func_start MOD52_021D7560
-MOD52_021D7560: ; 0x021D7560
- push {r3, lr}
- mov r0, #0x4d
- bl FUN_020168D0
- mov r0, #0
- ldr r1, _021D7578 ; =UNK_020F2B7C
- mvn r0, r0
- bl RegisterMainOverlay
- mov r0, #1
- pop {r3, pc}
- nop
-_021D7578: .word UNK_020F2B7C
- thumb_func_end MOD52_021D7560
-
- thumb_func_start MOD52_021D757C
-MOD52_021D757C: ; 0x021D757C
- push {r3, lr}
- mov r2, #2
- mov r0, #3
- mov r1, #0x4d
- lsl r2, r2, #0x10
- bl FUN_0201681C
- bl InitializeMainRNG
- mov r0, #1
- pop {r3, pc}
- .align 2, 0
- thumb_func_end MOD52_021D757C
-
- thumb_func_start MOD52_021D7594
-MOD52_021D7594: ; 0x021D7594
- push {r3, r4, r5, lr}
- bl OverlayManager_GetField18
- ldr r4, [r0, #8]
- add r0, r4, #0
- bl Sav2_SysInfo_get
- add r5, r0, #0
- mov r0, #0x4d
- add r1, r4, #0
- bl MOD52_021D7688
- add r0, r4, #0
- mov r1, #0
- bl Options_SetButtonModeOnMain
- add r0, r5, #0
- bl Sav2_SysInfo_MacAddressIsMine
- cmp r0, #0
- beq _021D75C8
- add r0, r5, #0
- bl Sav2_SysInfo_RTCOffsetIsMine
- cmp r0, #0
- bne _021D75D8
-_021D75C8:
- add r0, r4, #0
- bl Sav2_SysInfo_RTC_get
- bl FUN_020238A4
- add r0, r5, #0
- bl Sav2_SysInfo_InitFromSystem
-_021D75D8:
- add r0, r4, #0
- bl Sav2_PlayerData_GetIGTAddr
- bl FUN_02015E3C
- mov r0, #1
- pop {r3, r4, r5, pc}
- .align 2, 0
- thumb_func_end MOD52_021D7594
-
- thumb_func_start MOD52_021D75E8
-MOD52_021D75E8: ; 0x021D75E8
- push {r3, lr}
- mov r0, #0x4d
- bl FUN_020168D0
- mov r0, #0
- ldr r1, _021D7600 ; =UNK_020F2B8C
- mvn r0, r0
- bl RegisterMainOverlay
- mov r0, #1
- pop {r3, pc}
- nop
-_021D7600: .word UNK_020F2B8C
- thumb_func_end MOD52_021D75E8
-
- thumb_func_start MOD52_021D7604
-MOD52_021D7604: ; 0x021D7604
- push {r3, r4, r5, r6, r7, lr}
- add r5, r1, #0
- str r0, [sp]
- add r0, r5, #0
- add r6, r2, #0
- bl Sav2_SysInfo_get
- bl Sav2_SysInfo_InitFromSystem
- add r0, r5, #0
- bl Sav2_SysInfo_RTC_get
- bl Sav2_SysInfo_RTC_init
- add r0, r5, #0
- bl FUN_0202881C
- add r4, r0, #0
- bl MTRandom
- add r2, r0, #0
- add r0, r4, #0
- mov r1, #1
- bl FUN_02028788
- add r0, r5, #0
- bl FUN_0206007C
- add r0, r5, #0
- bl Sav2_PlayerData_GetProfileAddr
- add r4, r0, #0
- bl MTRandom
- add r7, r0, #0
- cmp r6, #0
- beq _021D7656
- add r0, r4, #0
- add r1, r7, #0
- bl PlayerProfile_SetTrainerID
-_021D7656:
- add r0, r4, #0
- bl PlayerProfile_GetTrainerGender
- add r1, r0, #0
- add r0, r7, #0
- mov r2, #0
- bl FUN_02053678
- add r1, r0, #0
- lsl r1, r1, #0x18
- add r0, r4, #0
- lsr r1, r1, #0x18
- bl PlayerProfile_SetAvatar
- add r0, r5, #0
- bl FUN_02024ECC
- ldr r1, [sp]
- ldr r2, _021D7684 ; =0x021D76F8
- mov r3, #0x76
- bl FUN_020250C4
- pop {r3, r4, r5, r6, r7, pc}
- .align 2, 0
-_021D7684: .word MOD52_021D76F8
- thumb_func_end MOD52_021D7604
-
- thumb_func_start MOD52_021D7688
-MOD52_021D7688: ; 0x021D7688
- push {r3, lr}
- add r0, r1, #0
- bl FUN_020226FC
- cmp r0, #0
- bne _021D769A
- mov r0, #0
- bl OS_ResetSystem
-_021D769A:
- pop {r3, pc}
- thumb_func_end MOD52_021D7688
-
- thumb_func_start MOD52_021D769C
-MOD52_021D769C: ; 0x021D769C
- push {r4, lr}
- add r4, r1, #0
- add r0, r4, #0
- bl Sav2_InitDynamicRegion
- add r0, r4, #0
- bl FUN_020377E0
- add r0, r4, #0
- bl Sav2_PlayerData_GetProfileAddr
- ldr r1, _021D76C4 ; =0x00000BB8
- bl PlayerProfile_SetMoney
- add r0, r4, #0
- bl SavArray_Flags_get
- bl FUN_0205ECD4
- pop {r4, pc}
- .align 2, 0
-_021D76C4: .word 0x00000BB8
- thumb_func_end MOD52_021D769C
-
- .rodata
- .global MOD52_021D76C8
-MOD52_021D76C8: ; 0x021D76C8
- .word MOD52_021D757C, MOD52_021D7594, MOD52_021D75E8, 0xFFFFFFFF
-
- .global MOD52_021D76D8
-MOD52_021D76D8: ; 0x021D76D8
- .word MOD52_021D7528, MOD52_021D7540, MOD52_021D7560, 0xFFFFFFFF
-
- .global MOD52_021D76E8
-MOD52_021D76E8: ; 0x021D76E8
- .word MOD52_021D74E0, MOD52_021D74F8, MOD52_021D750C, 0xFFFFFFFF
-
- .global MOD52_021D76F8
-MOD52_021D76F8: ; 0x021D76F8
- .byte 0x9B, 0x00, 0x01, 0x00, 0x95, 0x00, 0x01, 0x00, 0x96, 0x00, 0x01, 0x00, 0x97, 0x00, 0x01, 0x00
- .byte 0x9B, 0x00, 0x01, 0x00, 0x97, 0x00, 0x01, 0x00, 0xA4, 0x00, 0x02, 0x00, 0xA5, 0x00, 0x02, 0x00
- .byte 0x95, 0x00, 0x01, 0x00, 0x9B, 0x00, 0x02, 0x00, 0x9E, 0x00, 0x01, 0x00, 0xA7, 0x00, 0x02, 0x00
- .byte 0xA7, 0x00, 0x02, 0x00, 0xAA, 0x00, 0x01, 0x00, 0x95, 0x00, 0x01, 0x00, 0x97, 0x00, 0x01, 0x00
- .byte 0x9B, 0x00, 0x01, 0x00, 0x9B, 0x00, 0x01, 0x00, 0x98, 0x00, 0x01, 0x00, 0x98, 0x00, 0x01, 0x00
- .byte 0xA4, 0x00, 0x01, 0x00, 0xA4, 0x00, 0x01, 0x00, 0x95, 0x00, 0x01, 0x00, 0x9B, 0x00, 0x01, 0x00
- .byte 0x9B, 0x00, 0x01, 0x00, 0xA5, 0x00, 0x01, 0x00, 0xA6, 0x00, 0x02, 0x00, 0xA4, 0x00, 0x02, 0x00
- .byte 0xA5, 0x00, 0x02, 0x00, 0xA8, 0x00, 0x02, 0x00, 0x9A, 0x00, 0x01, 0x00, 0x96, 0x00, 0x01, 0x00
- .byte 0xA4, 0x00, 0x01, 0x00, 0xA4, 0x00, 0x01, 0x00, 0x9C, 0x00, 0x01, 0x00, 0xA6, 0x00, 0x01, 0x00
- .byte 0xA6, 0x00, 0x01, 0x00, 0x9F, 0x00, 0x01, 0x00, 0x99, 0x00, 0x01, 0x00, 0x99, 0x00, 0x01, 0x00
- .byte 0xA4, 0x00, 0x01, 0x00, 0xA8, 0x00, 0x01, 0x00, 0x9E, 0x00, 0x01, 0x00, 0x96, 0x00, 0x01, 0x00
- .byte 0xA0, 0x00, 0x01, 0x00, 0xA2, 0x00, 0x01, 0x00, 0x97, 0x00, 0x01, 0x00, 0x99, 0x00, 0x01, 0x00
- .byte 0xA3, 0x00, 0x01, 0x00, 0xAD, 0x00, 0x01, 0x00, 0x9E, 0x00, 0x01, 0x00, 0x99, 0x00, 0x01, 0x00
- .byte 0xAE, 0x00, 0x01, 0x00, 0x9D, 0x00, 0x01, 0x00, 0x97, 0x00, 0x01, 0x00, 0xA8, 0x00, 0x01, 0x00
- .byte 0xA8, 0x00, 0x01, 0x00, 0xA8, 0x00, 0x01, 0x00, 0x9C, 0x00, 0x01, 0x00, 0x9C, 0x00, 0x01, 0x00
- .byte 0xA6, 0x00, 0x01, 0x00, 0xA6, 0x00, 0x01, 0x00, 0xA2, 0x00, 0x01, 0x00, 0xA3, 0x00, 0x01, 0x00
- .byte 0x98, 0x00, 0x01, 0x00, 0x98, 0x00, 0x01, 0x00, 0x95, 0x00, 0x01, 0x00, 0x9E, 0x00, 0x01, 0x00
- .byte 0x96, 0x00, 0x01, 0x00, 0xA9, 0x00, 0x01, 0x00, 0x97, 0x00, 0x02, 0x00, 0xA5, 0x00, 0x02, 0x00
- .byte 0xA0, 0x00, 0x01, 0x00, 0xA1, 0x00, 0x01, 0x00, 0x98, 0x00, 0x01, 0x00, 0x9C, 0x00, 0x01, 0x00
- .byte 0x9F, 0x00, 0x01, 0x00, 0xA8, 0x00, 0x02, 0x00, 0x9A, 0x00, 0x01, 0x00, 0x97, 0x00, 0x01, 0x00
- .byte 0xA1, 0x00, 0x01, 0x00, 0xAC, 0x00, 0x01, 0x00, 0xA0, 0x00, 0x02, 0x00, 0xA1, 0x00, 0x02, 0x00
- .byte 0xA2, 0x00, 0x02, 0x00, 0xAB, 0x00, 0x01, 0x00, 0x9E, 0x00, 0x02, 0x00, 0xA5, 0x00, 0x03, 0x00
- .byte 0xA6, 0x00, 0x03, 0x00, 0xA7, 0x00, 0x03, 0x00, 0xA9, 0x00, 0x01, 0x00, 0xA9, 0x00, 0x01, 0x00
- .byte 0xAC, 0x00, 0x02, 0x00, 0xAC, 0x00, 0x02, 0x00, 0xAA, 0x00, 0x01, 0x00, 0xAA, 0x00, 0x01, 0x00
- .byte 0xAE, 0x00, 0x01, 0x00, 0xAE, 0x00, 0x01, 0x00, 0xAB, 0x00, 0x01, 0x00, 0xAB, 0x00, 0x01, 0x00
- .byte 0xA9, 0x00, 0x01, 0x00, 0xA9, 0x00, 0x01, 0x00, 0xAC, 0x00, 0x01, 0x00, 0xAC, 0x00, 0x01, 0x00
- .byte 0xAE, 0x00, 0x01, 0x00, 0xAE, 0x00, 0x01, 0x00, 0xAD, 0x00, 0x01, 0x00, 0xAD, 0x00, 0x01, 0x00
- .byte 0xAB, 0x00, 0x01, 0x00, 0xAB, 0x00, 0x01, 0x00, 0x9D, 0x00, 0x01, 0x00, 0x9A, 0x00, 0x01, 0x00
- .byte 0xAB, 0x00, 0x02, 0x00, 0xAD, 0x00, 0x02, 0x00, 0xAA, 0x00, 0x02, 0x00, 0xAA, 0x00, 0x02, 0x00
- .byte 0xAD, 0x00, 0x01, 0x00, 0xAD, 0x00, 0x01, 0x00
-
- .data
- .bss
diff --git a/arm9/modules/52/include/module_52.h b/arm9/modules/52/include/module_52.h
new file mode 100644
index 00000000..4c47a82d
--- /dev/null
+++ b/arm9/modules/52/include/module_52.h
@@ -0,0 +1,42 @@
+#ifndef POKEDIAMOND_MODULE_52_H
+#define POKEDIAMOND_MODULE_52_H
+
+#include "global.h"
+#include "event_data.h"
+#include "main.h"
+#include "math_util.h"
+#include "options.h"
+#include "overlay_manager.h"
+#include "player_data.h"
+#include "sav_system_info.h"
+#include "save_block_2.h"
+#include "unk_02024E64.h"
+#include "unk_020286F8.h"
+
+const u8 MOD52_021D76F8[];
+
+THUMB_FUNC int MOD52_021D74E0();
+THUMB_FUNC int MOD52_021D74F8(struct UnkStruct_02006234 *param0);
+THUMB_FUNC int MOD52_021D750C();
+
+THUMB_FUNC int MOD52_021D7528();
+THUMB_FUNC int MOD52_021D7540(struct UnkStruct_02006234 *param0);
+THUMB_FUNC int MOD52_021D7560();
+
+THUMB_FUNC int MOD52_021D757C();
+THUMB_FUNC int MOD52_021D7594(struct UnkStruct_02006234 *param0);
+THUMB_FUNC int MOD52_021D75E8();
+
+THUMB_FUNC void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *sav2, BOOL set_trainerid);
+THUMB_FUNC void MOD52_021D7688(u32 param0, struct SaveBlock2 *sav2);
+THUMB_FUNC void MOD52_021D769C(u32 param0, struct SaveBlock2 *sav2);
+
+struct MOD52_Struct
+{
+ int (*func1)(void);
+ int (*func2)(struct UnkStruct_02006234 *param0);
+ int (*func3)(void);
+ u32 terminator;
+};
+
+#endif // POKEDIAMOND_MODULE_52_H \ No newline at end of file
diff --git a/arm9/modules/52/src/module_52.c b/arm9/modules/52/src/module_52.c
new file mode 100644
index 00000000..8b00f613
--- /dev/null
+++ b/arm9/modules/52/src/module_52.c
@@ -0,0 +1,647 @@
+#include "module_52.h"
+
+extern struct Unk21DBE18 UNK_020FD144;
+extern struct Unk21DBE18 UNK_020F2B7C;
+extern struct Unk21DBE18 UNK_020F2B8C;
+
+extern void FUN_0201681C(u32 param0, u32 heap_id, u32 param2);
+extern int FUN_020168D0(u32 heap_id);
+extern void FUN_02015E3C(struct IGT *igt);
+extern void FUN_0206007C(struct SaveBlock2 *sav2);
+extern int FUN_02053678(u32 random, u32 gender, u32 param2);
+extern void FUN_020250C4(void *sav_ptr, u32 heap_id, const u8 param2[], u32 param3);
+extern void FUN_020377E0(struct SaveBlock2 *sav2);
+extern void FUN_0205ECD4(struct ScriptState *script_state);
+
+THUMB_FUNC int MOD52_021D74E0()
+{
+ FUN_0201681C(3, 0x4d, 2 << 16);
+ InitializeMainRNG();
+
+ return 1;
+}
+
+THUMB_FUNC int MOD52_021D74F8(struct UnkStruct_02006234 *param0)
+{
+ struct SaveBlock2 *sav2 = (struct SaveBlock2 *)OverlayManager_GetField18(param0)[2]; // weird
+
+ MOD52_021D769C(0x4d, sav2);
+
+ return 1;
+}
+
+THUMB_FUNC int MOD52_021D750C()
+{
+ FUN_020168D0(0x4d);
+ RegisterMainOverlay(0XFFFFFFFF, &UNK_020FD144);
+
+ return 1;
+}
+
+THUMB_FUNC int MOD52_021D7528()
+{
+ FUN_0201681C(3, 0x4d, 2 << 16);
+ InitializeMainRNG();
+
+ return 1;
+}
+
+THUMB_FUNC int MOD52_021D7540(struct UnkStruct_02006234 *param0)
+{
+ struct SaveBlock2 *sav2 = (struct SaveBlock2 *)OverlayManager_GetField18(param0)[2]; // weird
+
+ MOD52_021D7604(0x4d, sav2, 1);
+ struct IGT *igt = Sav2_PlayerData_GetIGTAddr(sav2);
+ FUN_02015E3C(igt);
+
+ return 1;
+}
+
+THUMB_FUNC int MOD52_021D7560()
+{
+ FUN_020168D0(0x4d);
+ RegisterMainOverlay(0xFFFFFFFF, &UNK_020F2B7C);
+
+ return 1;
+}
+
+THUMB_FUNC int MOD52_021D757C()
+{
+ FUN_0201681C(3, 0x4d, 2 << 16);
+ InitializeMainRNG();
+
+ return 1;
+}
+
+THUMB_FUNC int MOD52_021D7594(struct UnkStruct_02006234 *param0)
+{
+ struct SaveBlock2 *sav2 = (struct SaveBlock2 *)OverlayManager_GetField18(param0)[2]; // weird
+
+ struct SavSysInfo *sav2_info = Sav2_SysInfo_get(sav2);
+
+ MOD52_021D7688(0x4d, sav2);
+ Options_SetButtonModeOnMain(sav2, 0);
+
+ if (!Sav2_SysInfo_MacAddressIsMine(sav2_info) || !Sav2_SysInfo_RTCOffsetIsMine(sav2_info))
+ {
+ FUN_020238A4(Sav2_SysInfo_RTC_get(sav2));
+ Sav2_SysInfo_InitFromSystem(sav2_info);
+ }
+
+ FUN_02015E3C(Sav2_PlayerData_GetIGTAddr(sav2));
+
+ return 1;
+}
+
+THUMB_FUNC int MOD52_021D75E8()
+{
+ FUN_020168D0(0x4d);
+ RegisterMainOverlay(0XFFFFFFFF, &UNK_020F2B8C);
+
+ return 1;
+}
+
+THUMB_FUNC void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *sav2, BOOL set_trainerid)
+{
+ Sav2_SysInfo_InitFromSystem(Sav2_SysInfo_get(sav2));
+ Sav2_SysInfo_RTC_init(Sav2_SysInfo_RTC_get(sav2));
+
+ struct UnkSaveStruct_020286F8 *unk_sav2 = FUN_0202881C(sav2);
+
+ FUN_02028788(unk_sav2, 1, MTRandom());
+ FUN_0206007C(sav2);
+
+ struct PlayerData *player_data = Sav2_PlayerData_GetProfileAddr(sav2);
+ u32 trainerid = MTRandom();
+
+ if (set_trainerid)
+ {
+ PlayerProfile_SetTrainerID(player_data, trainerid);
+ }
+
+ u32 gender = PlayerProfile_GetTrainerGender(player_data);
+ int avatar = FUN_02053678(trainerid, gender, 0);
+
+ PlayerProfile_SetAvatar(player_data, (u8)avatar);
+
+ FUN_020250C4(FUN_02024ECC(sav2), heap_id, MOD52_021D76F8, 0x76);
+}
+
+THUMB_FUNC void MOD52_021D7688(u32 unused, struct SaveBlock2 *sav2)
+{
+#pragma unused(unused)
+
+ if (FUN_020226FC(sav2))
+ {
+ return;
+ }
+
+ OS_ResetSystem(0);
+}
+
+THUMB_FUNC void MOD52_021D769C(u32 unused, struct SaveBlock2 *sav2)
+{
+#pragma unused(unused)
+
+ Sav2_InitDynamicRegion(sav2);
+ FUN_020377E0(sav2);
+ struct PlayerData *player_data = Sav2_PlayerData_GetProfileAddr(sav2);
+ PlayerProfile_SetMoney(player_data, 3000);
+ FUN_0205ECD4(SavArray_Flags_get(sav2));
+}
+
+const struct MOD52_Struct MOD52_021D76C8 = {
+ MOD52_021D757C,
+ MOD52_021D7594,
+ MOD52_021D75E8,
+ 0xFFFFFFFF,
+};
+
+const struct MOD52_Struct MOD52_021D76D8 = {
+ MOD52_021D7528,
+ MOD52_021D7540,
+ MOD52_021D7560,
+ 0xFFFFFFFF,
+};
+
+const struct MOD52_Struct MOD52_021D76E8 = {
+ MOD52_021D74E0,
+ MOD52_021D74F8,
+ MOD52_021D750C,
+ 0xFFFFFFFF,
+};
+
+const u8 MOD52_021D76F8[] = {
+ 0x9B,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x95,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x96,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x97,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9B,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x97,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA4,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xA5,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0x95,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9B,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0x9E,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA7,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xA7,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xAA,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x95,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x97,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9B,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9B,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x98,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x98,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA4,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA4,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x95,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9B,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9B,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA5,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA6,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xA4,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xA5,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xA8,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0x9A,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x96,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA4,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA4,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9C,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA6,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA6,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9F,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x99,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x99,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA4,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA8,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9E,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x96,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA0,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA2,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x97,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x99,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA3,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAD,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9E,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x99,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAE,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9D,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x97,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA8,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA8,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA8,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9C,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9C,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA6,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA6,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA2,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA3,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x98,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x98,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x95,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9E,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x96,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA9,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x97,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xA5,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xA0,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA1,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x98,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9C,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9F,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA8,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0x9A,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x97,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA1,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAC,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA0,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xA1,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xA2,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xAB,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9E,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xA5,
+ 0x00,
+ 0x03,
+ 0x00,
+ 0xA6,
+ 0x00,
+ 0x03,
+ 0x00,
+ 0xA7,
+ 0x00,
+ 0x03,
+ 0x00,
+ 0xA9,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA9,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAC,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xAC,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xAA,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAA,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAE,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAE,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAB,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAB,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA9,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA9,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAC,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAC,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAE,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAE,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAD,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAD,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAB,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAB,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9D,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9A,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAB,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xAD,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xAA,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xAA,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xAD,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAD,
+ 0x00,
+ 0x01,
+ 0x00,
+}; \ No newline at end of file
diff --git a/include/event_data.h b/include/event_data.h
index e1d46348..1f0f090a 100644
--- a/include/event_data.h
+++ b/include/event_data.h
@@ -1,6 +1,8 @@
#ifndef GUARD_SCRIPT_STATE_H
#define GUARD_SCRIPT_STATE_H
+#include "save_block_2.h"
+
struct ScriptState
{
u16 vars[288];