summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2017-01-21 15:03:39 -0800
committerYamaArashi <shadow962@live.com>2017-01-21 15:03:39 -0800
commita8b6cad54a9e0abadd61d3d71d5e9ee9f279382b (patch)
tree6d1761fbcfc82448f193685f2fea78659ef03ebc /src
parent07b268c400a7bc883a9192daa14d7a76760c7265 (diff)
decompile field_region_map
Diffstat (limited to 'src')
-rw-r--r--src/field_region_map.c134
1 files changed, 134 insertions, 0 deletions
diff --git a/src/field_region_map.c b/src/field_region_map.c
new file mode 100644
index 000000000..db12eb6a5
--- /dev/null
+++ b/src/field_region_map.c
@@ -0,0 +1,134 @@
+#include "global.h"
+#include "asm.h"
+#include "main.h"
+#include "menu.h"
+#include "palette.h"
+#include "sprite.h"
+#include "text.h"
+
+extern void sub_80FA8EC(u32, u8);
+extern void sub_80FAB10(void);
+extern u8 sub_80FAB60(void);
+extern void sub_80FBCF0(u32, u8);
+extern void sub_80FBB3C(u16, u16);
+
+struct RegionMapStruct
+{
+ u8 str[0x16];
+ u8 unk16;
+ u8 filler[0x869];
+};
+
+struct UnkStruct
+{
+ MainCallback callback;
+ u8 filler[4];
+ struct RegionMapStruct unk8;
+ u16 unk888;
+};
+
+extern struct UnkStruct unk_2000000;
+
+extern u8 gOtherText_Hoenn[];
+
+void CB2_FieldInitRegionMap(void);
+void CB2_FieldRegionMap(void);
+void VBlankCB_FieldRegionMap(void);
+void sub_813EFDC(void);
+void sub_813F0C8(void);
+
+void FieldInitRegionMap(MainCallback callback)
+{
+ SetVBlankCallback(NULL);
+ unk_2000000.unk888 = 0;
+ unk_2000000.callback = callback;
+ SetMainCallback2(CB2_FieldInitRegionMap);
+}
+
+void CB2_FieldInitRegionMap(void)
+{
+ REG_DISPCNT = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ sub_80FA8EC((u32)&unk_2000000.unk8, 0);
+ sub_80FBCF0(0, 0);
+ sub_80FBB3C(1, 1);
+ SetUpWindowConfig(&gWindowConfig_81E709C);
+ InitMenuWindow(&gWindowConfig_81E709C);
+ MenuZeroFillScreen();
+ REG_BG0CNT = 7936;
+ MenuDrawTextWindow(21, 0, 29, 3);
+ sub_8072BD8(gOtherText_Hoenn, 0x16, 1, 0x38);
+ MenuDrawTextWindow(16, 16, 29, 19);
+ sub_813F0C8();
+ SetMainCallback2(CB2_FieldRegionMap);
+ SetVBlankCallback(VBlankCB_FieldRegionMap);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+}
+
+void VBlankCB_FieldRegionMap(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void CB2_FieldRegionMap(void)
+{
+ sub_813EFDC();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void sub_813EFDC(void)
+{
+ switch (unk_2000000.unk888)
+ {
+ case 0:
+ REG_DISPCNT = 5441;
+ unk_2000000.unk888++;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ unk_2000000.unk888++;
+ break;
+ case 2:
+ switch (sub_80FAB60())
+ {
+ case 3:
+ sub_813F0C8();
+ break;
+ case 4:
+ case 5:
+ unk_2000000.unk888++;
+ }
+ break;
+ case 3:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ unk_2000000.unk888++;
+ break;
+ case 4:
+ if (!gPaletteFade.active)
+ {
+ sub_80FAB10();
+ SetMainCallback2(unk_2000000.callback);
+ }
+ break;
+ }
+}
+
+void sub_813F0C8(void)
+{
+ MenuFillWindowRectWithBlankTile(17, 17, 28, 18);
+ if (unk_2000000.unk8.unk16)
+ MenuPrint(unk_2000000.unk8.str, 17, 17);
+}