summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-10-07 11:18:45 -0700
committerYamaArashi <shadow962@live.com>2016-10-07 11:18:45 -0700
commit9166c047d218ba20cfba72b8c1b1bcb05341c852 (patch)
tree5b11bcd0302a08e588484870f93f3827b220870e
parente917ff8398a731e83caf24b65d9fada0a1729fe3 (diff)
decompile more functions from rom4.s
-rw-r--r--asm/rom4.s399
-rw-r--r--src/rom4.c242
2 files changed, 242 insertions, 399 deletions
diff --git a/asm/rom4.s b/asm/rom4.s
index 4196762f8..ffd86fe2c 100644
--- a/asm/rom4.s
+++ b/asm/rom4.s
@@ -5,405 +5,6 @@
.text
- thumb_func_start sub_805483C
-sub_805483C: @ 805483C
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0xD
- bhi _08054934
- lsls r0, 2
- ldr r1, _08054850
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08054850: .4byte _08054854
- .align 2, 0
-_08054854:
- .4byte _0805488C
- .4byte _080548A2
- .4byte _080548AA
- .4byte _080548B2
- .4byte _080548C4
- .4byte _080548E4
- .4byte _080548EA
- .4byte _080548F8
- .4byte _08054908
- .4byte _08054918
- .4byte _0805491E
- .4byte _08054928
- .4byte _08054924
- .4byte _08054930
-_0805488C:
- bl FieldClearVBlankHBlankCallbacks
- bl ScriptContext1_Init
- bl ScriptContext2_Disable
- bl sub_8054F70
- bl sub_8054BA8
- b _08054928
-_080548A2:
- movs r0, 0x1
- bl sub_8053994
- b _08054928
-_080548AA:
- movs r0, 0x1
- bl sub_8054D4C
- b _08054928
-_080548B2:
- bl sub_8054E98
- bl sub_8054D90
- bl sub_8054EC8
- bl sub_8054E60
- b _08054928
-_080548C4:
- bl sub_8054814
- bl sub_8054C54
- ldr r0, _080548DC
- bl SetUpWindowConfig
- ldr r0, _080548E0
- bl InitMenuWindow
- b _08054928
- .align 2, 0
-_080548DC: .4byte gWindowConfig_81E6C3C
-_080548E0: .4byte gWindowConfig_81E6CE4
-_080548E4:
- bl move_tilemap_camera_to_upper_left_corner
- b _08054928
-_080548EA:
- ldr r0, _080548F4
- ldr r0, [r0]
- bl sub_8056D28
- b _08054928
- .align 2, 0
-_080548F4: .4byte gMapHeader
-_080548F8:
- ldr r0, _08054904
- ldr r0, [r0]
- bl sub_8056D38
- b _08054928
- .align 2, 0
-_08054904: .4byte gMapHeader
-_08054908:
- ldr r0, _08054914
- ldr r0, [r0]
- bl apply_map_tileset1_tileset2_palette
- b _08054928
- .align 2, 0
-_08054914: .4byte gMapHeader
-_08054918:
- bl DrawWholeMapView
- b _08054928
-_0805491E:
- bl cur_mapheader_run_tileset_funcs_after_some_cpuset
- b _08054928
-_08054924:
- bl sub_80543E8
-_08054928:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08054934
-_08054930:
- movs r0, 0x1
- b _08054936
-_08054934:
- movs r0, 0
-_08054936:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805483C
-
- thumb_func_start sub_805493C
-sub_805493C: @ 805493C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4]
- cmp r0, 0xD
- bls _0805494A
- b _08054A44
-_0805494A:
- lsls r0, 2
- ldr r1, _08054954
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08054954: .4byte _08054958
- .align 2, 0
-_08054958:
- .4byte _08054990
- .4byte _0805499C
- .4byte _080549A2
- .4byte _080549AA
- .4byte _080549B4
- .4byte _080549D4
- .4byte _080549DA
- .4byte _080549E8
- .4byte _080549F8
- .4byte _08054A08
- .4byte _08054A0E
- .4byte _08054A14
- .4byte _08054A34
- .4byte _08054A40
-_08054990:
- bl FieldClearVBlankHBlankCallbacks
- adds r0, r5, 0
- bl sub_8053994
- b _08054A38
-_0805499C:
- bl sub_8054BA8
- b _08054A38
-_080549A2:
- adds r0, r5, 0
- bl sub_8054D4C
- b _08054A38
-_080549AA:
- bl mli4_mapscripts_and_other
- bl sub_8054E34
- b _08054A38
-_080549B4:
- bl sub_8054814
- bl sub_8054C54
- ldr r0, _080549CC
- bl SetUpWindowConfig
- ldr r0, _080549D0
- bl InitMenuWindow
- b _08054A38
- .align 2, 0
-_080549CC: .4byte gWindowConfig_81E6C3C
-_080549D0: .4byte gWindowConfig_81E6CE4
-_080549D4:
- bl move_tilemap_camera_to_upper_left_corner
- b _08054A38
-_080549DA:
- ldr r0, _080549E4
- ldr r0, [r0]
- bl sub_8056D28
- b _08054A38
- .align 2, 0
-_080549E4: .4byte gMapHeader
-_080549E8:
- ldr r0, _080549F4
- ldr r0, [r0]
- bl sub_8056D38
- b _08054A38
- .align 2, 0
-_080549F4: .4byte gMapHeader
-_080549F8:
- ldr r0, _08054A04
- ldr r0, [r0]
- bl apply_map_tileset1_tileset2_palette
- b _08054A38
- .align 2, 0
-_08054A04: .4byte gMapHeader
-_08054A08:
- bl DrawWholeMapView
- b _08054A38
-_08054A0E:
- bl cur_mapheader_run_tileset_funcs_after_some_cpuset
- b _08054A38
-_08054A14:
- ldr r0, _08054A30
- ldrb r0, [r0, 0x1A]
- cmp r0, 0x1
- bne _08054A38
- bl sub_80BBB24
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08054A38
- bl AddMapNamePopUpWindowTask
- b _08054A38
- .align 2, 0
-_08054A30: .4byte gMapHeader
-_08054A34:
- bl sub_80543E8
-_08054A38:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08054A44
-_08054A40:
- movs r0, 0x1
- b _08054A46
-_08054A44:
- movs r0, 0
-_08054A46:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805493C
-
- thumb_func_start sub_8054A4C
-sub_8054A4C: @ 8054A4C
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0x1
- beq _08054A7E
- cmp r0, 0x1
- bgt _08054A60
- cmp r0, 0
- beq _08054A6A
- b _08054A94
-_08054A60:
- cmp r0, 0x2
- beq _08054A84
- cmp r0, 0x3
- beq _08054A90
- b _08054A94
-_08054A6A:
- bl sub_8054BA8
- movs r0, 0
- bl sub_8054D4C
- bl sub_8054E20
- bl sub_8054E34
- b _08054A88
-_08054A7E:
- bl sub_8054C2C
- b _08054A88
-_08054A84:
- bl sub_80543E8
-_08054A88:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08054A94
-_08054A90:
- movs r0, 0x1
- b _08054A96
-_08054A94:
- movs r0, 0
-_08054A96:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8054A4C
-
- thumb_func_start sub_8054A9C
-sub_8054A9C: @ 8054A9C
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0xD
- bhi _08054B86
- lsls r0, 2
- ldr r1, _08054AB0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08054AB0: .4byte _08054AB4
- .align 2, 0
-_08054AB4:
- .4byte _08054AEC
- .4byte _08054AF6
- .4byte _08054AFE
- .4byte _08054B0C
- .4byte _08054B2C
- .4byte _08054B32
- .4byte _08054B40
- .4byte _08054B50
- .4byte _08054B60
- .4byte _08054B66
- .4byte _08054B70
- .4byte _08054B70
- .4byte _08054B6C
- .4byte _08054B78
-_08054AEC:
- bl FieldClearVBlankHBlankCallbacks
- bl sub_8054BA8
- b _08054B70
-_08054AF6:
- movs r0, 0x1
- bl sub_8054D4C
- b _08054B70
-_08054AFE:
- bl sub_8054F48
- bl sub_8054E20
- bl sub_8054E7C
- b _08054B70
-_08054B0C:
- bl sub_8054814
- bl sub_8054C54
- ldr r0, _08054B24
- bl SetUpWindowConfig
- ldr r0, _08054B28
- bl InitMenuWindow
- b _08054B70
- .align 2, 0
-_08054B24: .4byte gWindowConfig_81E6C3C
-_08054B28: .4byte gWindowConfig_81E6CE4
-_08054B2C:
- bl move_tilemap_camera_to_upper_left_corner
- b _08054B70
-_08054B32:
- ldr r0, _08054B3C
- ldr r0, [r0]
- bl sub_8056D28
- b _08054B70
- .align 2, 0
-_08054B3C: .4byte gMapHeader
-_08054B40:
- ldr r0, _08054B4C
- ldr r0, [r0]
- bl sub_8056D38
- b _08054B70
- .align 2, 0
-_08054B4C: .4byte gMapHeader
-_08054B50:
- ldr r0, _08054B5C
- ldr r0, [r0]
- bl apply_map_tileset1_tileset2_palette
- b _08054B70
- .align 2, 0
-_08054B5C: .4byte gMapHeader
-_08054B60:
- bl DrawWholeMapView
- b _08054B70
-_08054B66:
- bl cur_mapheader_run_tileset_funcs_after_some_cpuset
- b _08054B70
-_08054B6C:
- bl sub_80543E8
-_08054B70:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08054B86
-_08054B78:
- bl SetFieldVBlankCallback
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- movs r0, 0x1
- b _08054B88
-_08054B86:
- movs r0, 0
-_08054B88:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8054A9C
-
- thumb_func_start do_load_map_stuff_loop
-do_load_map_stuff_loop: @ 8054B90
- push {r4,lr}
- adds r4, r0, 0
-_08054B94:
- adds r0, r4, 0
- movs r1, 0
- bl sub_805493C
- cmp r0, 0
- beq _08054B94
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end do_load_map_stuff_loop
-
thumb_func_start sub_8054BA8
sub_8054BA8: @ 8054BA8
push {r4-r7,lr}
diff --git a/src/rom4.c b/src/rom4.c
index 99b16ae84..e69702726 100644
--- a/src/rom4.c
+++ b/src/rom4.c
@@ -6,6 +6,7 @@
#include "rng.h"
#include "main.h"
#include "palette.h"
+#include "text.h"
#ifdef SAPPHIRE
#define LEGENDARY_MUSIC BGM_OOAME // Heavy Rain
@@ -122,6 +123,11 @@ void c2_exit_to_overworld_2_local(void);
void FieldClearVBlankHBlankCallbacks(void);
void SetFieldVBlankCallback(void);
void VBlankCB_Field(void);
+bool32 sub_805483C(u8 *);
+bool32 sub_805493C(u8 *, u32);
+bool32 sub_8054A4C(u8 *);
+bool32 sub_8054A9C(u8 *a1);
+void do_load_map_stuff_loop(u8 *a1);
void sub_8052F5C(void)
{
@@ -1328,3 +1334,239 @@ void sub_8054814(void)
sub_80895F8(gUnknown_08216694[0], gUnknown_08216694[1], gUnknown_08216694[2]);
}
}
+
+bool32 sub_805483C(u8 *a1)
+{
+ switch (*a1)
+ {
+ case 0:
+ FieldClearVBlankHBlankCallbacks();
+ ScriptContext1_Init();
+ ScriptContext2_Disable();
+ sub_8054F70();
+ sub_8054BA8();
+ (*a1)++;
+ break;
+ case 1:
+ sub_8053994(1);
+ (*a1)++;
+ break;
+ case 2:
+ sub_8054D4C(1);
+ (*a1)++;
+ break;
+ case 3:
+ sub_8054E98();
+ sub_8054D90();
+ sub_8054EC8();
+ sub_8054E60();
+ (*a1)++;
+ break;
+ case 4:
+ sub_8054814();
+ sub_8054C54();
+ SetUpWindowConfig(&gWindowConfig_81E6C3C);
+ InitMenuWindow(&gWindowConfig_81E6CE4);
+ (*a1)++;
+ break;
+ case 5:
+ move_tilemap_camera_to_upper_left_corner();
+ (*a1)++;
+ break;
+ case 6:
+ sub_8056D28(gMapHeader.mapData);
+ (*a1)++;
+ break;
+ case 7:
+ sub_8056D38(gMapHeader.mapData);
+ (*a1)++;
+ break;
+ case 8:
+ apply_map_tileset1_tileset2_palette(gMapHeader.mapData);
+ (*a1)++;
+ break;
+ case 9:
+ DrawWholeMapView();
+ (*a1)++;
+ break;
+ case 10:
+ cur_mapheader_run_tileset_funcs_after_some_cpuset();
+ (*a1)++;
+ break;
+ case 12:
+ sub_80543E8();
+ (*a1)++;
+ break;
+ case 11:
+ (*a1)++;
+ break;
+ case 13:
+ return 1;
+ }
+ return 0;
+}
+
+bool32 sub_805493C(u8 *a1, u32 a2)
+{
+ switch (*a1)
+ {
+ case 0:
+ FieldClearVBlankHBlankCallbacks();
+ sub_8053994(a2);
+ (*a1)++;
+ break;
+ case 1:
+ sub_8054BA8();
+ (*a1)++;
+ break;
+ case 2:
+ sub_8054D4C(a2);
+ (*a1)++;
+ break;
+ case 3:
+ mli4_mapscripts_and_other();
+ sub_8054E34();
+ (*a1)++;
+ break;
+ case 4:
+ sub_8054814();
+ sub_8054C54();
+ SetUpWindowConfig(&gWindowConfig_81E6C3C);
+ InitMenuWindow((u8 *)&gWindowConfig_81E6CE4);
+ (*a1)++;
+ break;
+ case 5:
+ move_tilemap_camera_to_upper_left_corner();
+ (*a1)++;
+ break;
+ case 6:
+ sub_8056D28(gMapHeader.mapData);
+ (*a1)++;
+ break;
+ case 7:
+ sub_8056D38(gMapHeader.mapData);
+ (*a1)++;
+ break;
+ case 8:
+ apply_map_tileset1_tileset2_palette(gMapHeader.mapData);
+ (*a1)++;
+ break;
+ case 9:
+ DrawWholeMapView();
+ (*a1)++;
+ break;
+ case 10:
+ cur_mapheader_run_tileset_funcs_after_some_cpuset();
+ (*a1)++;
+ break;
+ case 11:
+ if (gMapHeader.flags == 1 && sub_80BBB24() == 1)
+ AddMapNamePopUpWindowTask();
+ (*a1)++;
+ break;
+ case 12:
+ sub_80543E8();
+ (*a1)++;
+ break;
+ case 13:
+ return 1;
+ }
+ return 0;
+}
+
+bool32 sub_8054A4C(u8 *a1)
+{
+ switch (*a1)
+ {
+ case 0:
+ sub_8054BA8();
+ sub_8054D4C(0);
+ sub_8054E20();
+ sub_8054E34();
+ (*a1)++;
+ break;
+ case 1:
+ sub_8054C2C();
+ (*a1)++;
+ break;
+ case 2:
+ sub_80543E8();
+ (*a1)++;
+ break;
+ case 3:
+ return 1;
+ }
+ return 0;
+}
+
+bool32 sub_8054A9C(u8 *a1)
+{
+ switch (*a1)
+ {
+ case 0:
+ FieldClearVBlankHBlankCallbacks();
+ sub_8054BA8();
+ (*a1)++;
+ break;
+ case 1:
+ sub_8054D4C(1);
+ (*a1)++;
+ break;
+ case 2:
+ sub_8054F48();
+ sub_8054E20();
+ sub_8054E7C();
+ (*a1)++;
+ break;
+ case 3:
+ sub_8054814();
+ sub_8054C54();
+ SetUpWindowConfig(&gWindowConfig_81E6C3C);
+ InitMenuWindow(&gWindowConfig_81E6CE4);
+ (*a1)++;
+ break;
+ case 4:
+ move_tilemap_camera_to_upper_left_corner();
+ (*a1)++;
+ break;
+ case 5:
+ sub_8056D28(gMapHeader.mapData);
+ (*a1)++;
+ break;
+ case 6:
+ sub_8056D38(gMapHeader.mapData);
+ (*a1)++;
+ break;
+ case 7:
+ apply_map_tileset1_tileset2_palette(gMapHeader.mapData);
+ (*a1)++;
+ break;
+ case 8:
+ DrawWholeMapView();
+ (*a1)++;
+ break;
+ case 9:
+ cur_mapheader_run_tileset_funcs_after_some_cpuset();
+ (*a1)++;
+ break;
+ case 12:
+ sub_80543E8();
+ (*a1)++;
+ break;
+ case 10:
+ case 11:
+ (*a1)++;
+ break;
+ case 13:
+ SetFieldVBlankCallback();
+ (*a1)++;
+ return 1;
+ }
+ return 0;
+}
+
+void do_load_map_stuff_loop(u8 *a1)
+{
+ while (!sub_805493C(a1, 0))
+ ;
+}