diff options
author | YamaArashi <shadow962@live.com> | 2016-10-07 11:18:45 -0700 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-10-07 11:18:45 -0700 |
commit | 9166c047d218ba20cfba72b8c1b1bcb05341c852 (patch) | |
tree | 5b11bcd0302a08e588484870f93f3827b220870e | |
parent | e917ff8398a731e83caf24b65d9fada0a1729fe3 (diff) |
decompile more functions from rom4.s
-rw-r--r-- | asm/rom4.s | 399 | ||||
-rw-r--r-- | src/rom4.c | 242 |
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)) + ; +} |