diff options
author | Marijn van der Werf <marijn.vanderwerf@gmail.com> | 2017-05-08 22:06:49 +0200 |
---|---|---|
committer | YamaArashi <YamaArashi@users.noreply.github.com> | 2017-05-08 14:19:49 -0700 |
commit | 00c64ddd66d1cf733f71d4e2104ae9f12108486d (patch) | |
tree | 1f87eb353aa8891b218e021fc882f131695a62c7 | |
parent | 3cc8c2044525a483ba80f8730f8f6376e5f6c935 (diff) |
Decompile sub_803037C
-rw-r--r-- | asm/battle_6.s | 99 | ||||
-rw-r--r-- | include/asm.inc.h | 20 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/battle_6.c | 57 | ||||
-rw-r--r-- | src/pokemon_3.c | 4 |
5 files changed, 75 insertions, 107 deletions
diff --git a/asm/battle_6.s b/asm/battle_6.s index 0ba1783a1..f277fb7f2 100644 --- a/asm/battle_6.s +++ b/asm/battle_6.s @@ -3673,104 +3673,7 @@ _08030378: bx r0 thumb_func_end dp01t_11_1_message_for_player_only - thumb_func_start sub_803037C -sub_803037C: @ 803037C - push {r4,lr} - sub sp, 0x8 - ldr r1, _08030434 @ =gUnknown_030042A4 - movs r0, 0 - strh r0, [r1] - ldr r1, _08030438 @ =gUnknown_030042A0 - movs r0, 0xA0 - strh r0, [r1] - ldr r4, _0803043C @ =gUnknown_03004210 - movs r0, 0x1B - str r0, [sp] - movs r0, 0x12 - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r1, 0xA - movs r2, 0x2 - movs r3, 0xF - bl FillWindowRect - movs r0, 0x10 - str r0, [sp] - movs r0, 0x26 - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r1, 0xA - movs r2, 0x2 - movs r3, 0x23 - bl FillWindowRect - ldr r1, _08030440 @ =gUnknown_03004330 - ldr r0, _08030444 @ =gUnknown_02024A60 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08030448 @ =sub_802C098 - str r1, [r0] - ldr r1, _0803044C @ =gUnknown_08400CF3 - movs r2, 0xC8 - lsls r2, 1 - movs r0, 0x23 - str r0, [sp] - adds r0, r4, 0 - movs r3, 0x12 - bl InitWindow - adds r0, r4, 0 - bl sub_8002F44 - ldr r1, _08030450 @ =0x0000ffff - ldr r3, _08030454 @ =0x00002d9f - movs r0, 0 - str r0, [sp] - movs r2, 0xC - bl sub_814A5C0 - movs r4, 0 -_080303EC: - lsls r0, r4, 24 - lsrs r0, 24 - bl nullsub_8 - adds r4, 0x1 - cmp r4, 0x3 - ble _080303EC - ldr r1, _08030458 @ =gUnknown_02024E60 - ldr r0, _08030444 @ =gUnknown_02024A60 - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl sub_802E3E4 - ldr r0, _0803045C @ =gUnknown_08400CA8 - bl get_battle_strings_ - ldr r4, _0803043C @ =gUnknown_03004210 - ldr r1, _08030460 @ =gUnknown_020238CC - movs r2, 0xDC - lsls r2, 1 - movs r0, 0x23 - str r0, [sp] - adds r0, r4, 0 - movs r3, 0x2 - bl InitWindow - adds r0, r4, 0 - bl sub_8002F44 - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08030434: .4byte gUnknown_030042A4 -_08030438: .4byte gUnknown_030042A0 -_0803043C: .4byte gUnknown_03004210 -_08030440: .4byte gUnknown_03004330 -_08030444: .4byte gUnknown_02024A60 -_08030448: .4byte sub_802C098 -_0803044C: .4byte gUnknown_08400CF3 -_08030450: .4byte 0x0000ffff -_08030454: .4byte 0x00002d9f -_08030458: .4byte gUnknown_02024E60 -_0803045C: .4byte gUnknown_08400CA8 -_08030460: .4byte gUnknown_020238CC - thumb_func_end sub_803037C +.section .text_8030464 thumb_func_start nullsub_42 nullsub_42: @ 8030464 diff --git a/include/asm.inc.h b/include/asm.inc.h index da5c02113..582c3ebb7 100644 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -10,20 +10,23 @@ void sub_80157C4(u8 index); u8 sub_8015A98(u8, u8, u8); u8 sub_8018324(u8, u8, u8, u8, u16); +// asm/battle_5.o +void sub_802C098(); +void sub_802E3E4(u8, int); +void nullsub_8(u8); + // asm/battle_7.o void sub_8032AA8(u8 index, int i); // src/pokemon_3.o u16 SpeciesToNationalPokedexNum(u16); - -// asm/pokemon_3.o void DrawSpindaSpots(u16, u32, u8 *, u8); u8 sub_803FC58(u16); void AdjustFriendship(struct Pokemon *, u8); void sub_80408BC(); void current_map_music_set__default_for_battle(u16); -// asm/util.o +// src/util.o void StoreWordInTwoHalfwords(u16 *, u32); void LoadWordFromTwoHalfwords(u16 *, u32 *); @@ -157,7 +160,7 @@ void sub_806FA18(u8 taskId); // src/party_menu.o void sub_806E834(); -// asm/rom_8077ABC.o +// src/rom_8077ABC.o u8 battle_side_get_owner(u8); u8 battle_get_per_side_status(u8); u8 battle_get_side_with_given_state(u8); @@ -211,6 +214,9 @@ void sub_8089A70(void); void sub_808A004(); void sub_808AB90(void); +// asm/rom_8094928.o +u8 pokemon_order_func(u8); + // asm/pokemon_storage_system.o void sub_80961D8(void); @@ -354,7 +360,7 @@ s16 sub_810CAE4(u8, struct Pokeblock *); // asm/fldeff_flash.o void sub_810CC80(void); -// asm/time_events.o +// src/time_events.o u8 IsMirageIslandPresent(void); // asm/field_specials.o @@ -374,6 +380,10 @@ void sub_811AABC(u8); void sub_811AAD8(u8); u8 sub_811AAE8(void); +// asm/battle_message.o +void get_battle_strings_(u8 *); +void sub_8120FFC(const u8 *, u8 *); + // src/mystery_event_script.o u32 sub_812613C(u8 *); void sub_8126160(u8); diff --git a/ld_script.txt b/ld_script.txt index 0cbe9a8e7..7945d61a7 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -56,6 +56,8 @@ SECTIONS { asm/battle_4.o(.text); asm/battle_5.o(.text); asm/battle_6.o(.text); + src/battle_6.o(.text); + asm/battle_6.o(.text_8030464); asm/battle_7.o(.text); asm/battle_8.o(.text); asm/battle_9.o(.text); diff --git a/src/battle_6.c b/src/battle_6.c new file mode 100644 index 000000000..bc540ce72 --- /dev/null +++ b/src/battle_6.c @@ -0,0 +1,57 @@ +#include "global.h" +#include "asm.h" +#include "menu_cursor.h" +#include "text.h" + +extern u16 gUnknown_030042A4; +extern u16 gUnknown_030042A0; + +extern struct Window gUnknown_03004210; + +extern void (*gUnknown_03004330[])(void); + +extern u8 gUnknown_02024A60; +extern u8 gUnknown_02024E60[]; +extern u8 gUnknown_020238CC[]; + +extern u16 gUnknown_030042C0; +extern u16 gUnknown_030041B4; +extern u16 gUnknown_03004288; +extern u16 gUnknown_03004280; +extern u16 gUnknown_030041B0; +extern u16 gUnknown_030041B8; + +extern const u8 gUnknown_08400CA8[]; +extern const u8 gUnknown_08400CF3[]; + +#if ENGLISH +#define SUB_803037C_TILE_DATA_OFFSET 440 +#elif GERMAN +#define SUB_803037C_TILE_DATA_OFFSET 444 +#endif + +void sub_803037C(void) { + int r4; + + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 160; + FillWindowRect(&gUnknown_03004210, 10, 2, 15, 27, 18); + FillWindowRect(&gUnknown_03004210, 10, 2, 35, 16, 38); + + gUnknown_03004330[gUnknown_02024A60] = sub_802C098; + + InitWindow(&gUnknown_03004210, gUnknown_08400CF3, 400, 18, 35); + sub_8002F44(&gUnknown_03004210); + sub_814A5C0(0, 0xFFFF, 12, 11679, 0); + + for (r4 = 0; r4 < 4; r4++) + { + nullsub_8(r4); + } + + sub_802E3E4(gUnknown_02024E60[gUnknown_02024A60], 0); + + get_battle_strings_((u8 *) gUnknown_08400CA8); + InitWindow(&gUnknown_03004210, gUnknown_020238CC, SUB_803037C_TILE_DATA_OFFSET, 2, 35); + sub_8002F44(&gUnknown_03004210); +} diff --git a/src/pokemon_3.c b/src/pokemon_3.c index 899c9c713..422e603bc 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -53,10 +53,6 @@ struct SpindaSpot u16 image[16]; }; -extern void get_battle_strings_(u8 *); -extern void sub_8120FFC(const u8 *, u8 *); -extern u8 pokemon_order_func(u8); - extern u8 gPlayerPartyCount; extern struct Pokemon gPlayerParty[6]; extern u8 gEnemyPartyCount; |