diff options
-rw-r--r-- | asm/help_system_812B1E0.s | 115 | ||||
-rw-r--r-- | data/data_83FECCC.s | 66 | ||||
-rw-r--r-- | include/help_system.h | 23 | ||||
-rw-r--r-- | include/list_menu.h | 1 | ||||
-rw-r--r-- | src/help_system_812B1E0.c | 56 |
5 files changed, 114 insertions, 147 deletions
diff --git a/asm/help_system_812B1E0.s b/asm/help_system_812B1E0.s index a6036015e..77c196c4e 100644 --- a/asm/help_system_812B1E0.s +++ b/asm/help_system_812B1E0.s @@ -5,121 +5,6 @@ .text - thumb_func_start sub_812B520 -sub_812B520: @ 812B520 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r6, r0, 0 - adds r5, r1, 0 - movs r4, 0 - movs r3, 0 - ldr r0, _0812B598 @ =gUnknown_845C4B0 - mov r9, r0 - ldr r1, _0812B59C @ =gUnknown_203B0EC - mov r8, r1 - ldr r0, _0812B5A0 @ =gUnknown_845C4B6 - mov r12, r0 - ldr r7, _0812B5A4 @ =gUnknown_845B080 -_0812B53E: - mov r1, r9 - adds r0, r3, r1 - ldrb r2, [r0] - mov r0, r8 - ldrh r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 1 - adds r0, r2, r0 - add r0, r12 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0812B56C - lsls r1, r4, 3 - adds r1, r5 - lsls r0, r2, 2 - adds r0, r7 - ldr r0, [r0] - str r0, [r1] - str r2, [r1, 0x4] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0812B56C: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x5 - bls _0812B53E - lsls r0, r4, 3 - adds r0, r5 - subs r0, 0x8 - movs r1, 0x2 - negs r1, r1 - str r1, [r0, 0x4] - movs r0, 0 - strh r4, [r6, 0x4] - strh r4, [r6, 0x6] - strb r0, [r6, 0x8] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812B598: .4byte gUnknown_845C4B0 -_0812B59C: .4byte gUnknown_203B0EC -_0812B5A0: .4byte gUnknown_845C4B6 -_0812B5A4: .4byte gUnknown_845B080 - thumb_func_end sub_812B520 - - thumb_func_start sub_812B5A8 -sub_812B5A8: @ 812B5A8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - bl sub_813BDE8 - movs r0, 0 - bl sub_813BFC0 - movs r0, 0x1 - bl sub_813BE78 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_812B4C4 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_812B614 - ldr r0, _0812B608 @ =gUnknown_841DFC9 - bl sub_812BF74 - ldrb r1, [r4, 0xC] - ldrb r2, [r4, 0xD] - adds r0, r4, 0 - bl sub_813C64C - ldr r1, _0812B60C @ =gUnknown_845B080 - ldr r0, _0812B610 @ =gUnknown_3005E9C - ldrb r0, [r0, 0x1] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - movs r2, 0 - bl sub_813C4CC - movs r0, 0x1 - bl sub_813BDA4 - movs r0, 0x1 - bl sub_813BD5C - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0812B608: .4byte gUnknown_841DFC9 -_0812B60C: .4byte gUnknown_845B080 -_0812B610: .4byte gUnknown_3005E9C - thumb_func_end sub_812B5A8 - thumb_func_start sub_812B614 sub_812B614: @ 812B614 push {r4-r7,lr} diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index bc4bdc6ed..ffdaa8a67 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -2136,37 +2136,79 @@ gUnknown_841DFA0:: @ 841DFA0 .string "GOLD$" gUnknown_841DFA5:: @ 841DFA5 - .incbin "baserom.gba", 0x41DFA5, 0x7 + .string "{KEYGFX_A_BUTTON}NEXT$" gUnknown_841DFAC:: @ 841DFAC - .incbin "baserom.gba", 0x41DFAC, 0x12 + .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}OK {KEYGFX_B_BUTTON}END$" gUnknown_841DFBE:: @ 841DFBE - .incbin "baserom.gba", 0x41DFBE, 0xB + .string "{KEYGFX_A_BUTTON}{KEYGFX_B_BUTTON}CANCEL$" gUnknown_841DFC9:: @ 841DFC9 - .incbin "baserom.gba", 0x41DFC9, 0xCA - + .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}OK {KEYGFX_B_BUTTON}CANCEL$" + + @ easy chat categories + .string "POKéMON$" + .string "TRAINER$" + .string "STATUS$" + .string "BATTLE$" + .string "GREETINGS$" + .string "PEOPLE$" + .string "VOICES$" + .string "SPEECH$" + .string "ENDINGS$" + .string "FEELINGS$" + .string "CONDITIONS$" + .string "ACTIONS$" + .string "LIFESTYLE$" + .string "HOBBIES$" + .string "TIME$" + .string "MISC.$" + .string "ADJECTIVES$" + .string "EVENTS$" + .string "MOVE 1$" + .string "MOVE 2$" + .string "TRENDY SAYING$" + .string "POKéMON2$" + + @ trade-related gUnknown_841E093:: @ 841E093 - .incbin "baserom.gba", 0x41E093, 0xC + .string "???$" + .string "$" + .string "Lv$" + .string "---$" gUnknown_841E09F:: @ 841E09F - .incbin "baserom.gba", 0x41E09F, 0x6 + .string "????$" + .string "$" gUnknown_841E0A5:: @ 841E0A5 - .incbin "baserom.gba", 0x41E0A5, 0x144 + .string "Is this trade okay?$" + .string "CANCEL$" + .string "Choose a POKéMON.$" + .string "SUMMARY$" + .string "TRADE$" + .string "Cancel trade?$" + .string "Press the B Button to exit.$" + .string "SUMMARY$" + .string "TRADE$" + .string "{COLOR RED}{HIGHLIGHT DARK_GREY}{SHADOW GREEN}Communication standby…\nPlease wait.$" + .string "{COLOR RED}{HIGHLIGHT DARK_GREY}{SHADOW GREEN}The trade has been canceled.$" + .string "{COLOR RED}{HIGHLIGHT DARK_GREY}{SHADOW GREEN}That's your only POKéMON\nfor battle.$" + .string "{COLOR RED}{HIGHLIGHT DARK_GREY}{SHADOW GREEN}Waiting for your friend\nto finish…$" + .string "Your friend wants\nto trade POKéMON.$" gUnknown_841E1E9:: @ 841E1E9 - .incbin "baserom.gba", 0x41E1E9, 0x17 + .string "{STR_VAR_2} will be\nsent to {STR_VAR_1}.$" gUnknown_841E200:: @ 841E200 - .incbin "baserom.gba", 0x41E200, 0xD + .string "Bye-bye, {STR_VAR_2}!$" gUnknown_841E20D:: @ 841E20D - .incbin "baserom.gba", 0x41E20D, 0x11 + .string "{STR_VAR_1} sent over {STR_VAR_3}.$" gUnknown_841E21E:: @ 841E21E - .incbin "baserom.gba", 0x41E21E, 0x16 + .string "Take good care of {STR_VAR_3}!$" gUnknown_841E234:: @ 841E234 .string "From $" diff --git a/include/help_system.h b/include/help_system.h index 6eee0dcb3..f9aaba907 100644 --- a/include/help_system.h +++ b/include/help_system.h @@ -2,30 +2,27 @@ #define GUARD_HELP_SYSTEM_H #include "global.h" - -struct HelpSystemStruct_203F1AC -{ - -}; +#include "list_menu.h" struct HelpSystemStruct_203F190_sub { - struct HelpSystemStruct_203F1AC * field_00; + struct ListMenuItem * field_00; u16 field_04; u16 field_06; u8 field_08; u8 field_09; - }; struct HelpSystemStruct_203F190 { - struct HelpSystemStruct_203F190_sub field_00; - u8 filler_0C[0x10]; + struct HelpSystemStruct_203F190_sub sub; + u8 field_0C; + u8 field_0D; + u8 filler_10[0xC]; }; extern struct HelpSystemStruct_203F190 gUnknown_203F190; -extern struct HelpSystemStruct_203F1AC gUnknown_203F1AC; +extern struct ListMenuItem gUnknown_203F1AC[]; extern bool8 gUnknown_3005ECC; extern u8 gUnknown_203F175; @@ -33,8 +30,12 @@ void sub_812B1E0(u8); void sub_812B484(void); void HelpSystem_SetSomeVariable2(u8); void sub_812B478(void); -void sub_813C64C(struct HelpSystemStruct_203F190_sub *, u8, u8); +void sub_813C64C(struct HelpSystemStruct_203F190 *, u8, u8); +void sub_813C4CC(const u8 *, u8, u8); void sub_813BDA4(u8); void sub_813BD5C(u8); +void sub_813BDE8(u8); +void sub_813BFC0(u8); +void sub_813BE78(u8); #endif //GUARD_HELP_SYSTEM_H diff --git a/include/list_menu.h b/include/list_menu.h index 79dc3ec3f..6116ee39a 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -2,6 +2,7 @@ #define GUARD_LIST_MENU_H #include "global.h" +#include "window.h" // Exported type declarations diff --git a/src/help_system_812B1E0.c b/src/help_system_812B1E0.c index 2b64a3ab3..68ca6adb6 100644 --- a/src/help_system_812B1E0.c +++ b/src/help_system_812B1E0.c @@ -17,13 +17,18 @@ u16 gUnknown_3005EA0; bool32 sub_812B27C(const u16 * mapIdxs); void sub_812B4B8(void); -void sub_812B520(struct HelpSystemStruct_203F190_sub * a0, struct HelpSystemStruct_203F1AC * a1); -void sub_812BF9C(struct HelpSystemStruct_203F190_sub * a0, struct HelpSystemStruct_203F1AC * a1); +void sub_812B520(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1); +void sub_812B614(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1); +void sub_812BF9C(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1); void sub_812BF74(const u8 *); // strings.h extern const u8 gUnknown_841DFAC[]; +extern const u8 gUnknown_841DFC9[]; +extern const u8 *const gUnknown_845B080[]; +extern const u8 gUnknown_845C4B0[]; +extern const u8 gUnknown_845C4B6[][6]; extern const u16 gUnknown_845C594[]; // marts extern const u16 gUnknown_845C5BC[]; // gyms extern const u8 gUnknown_845C5CE[][3]; @@ -179,16 +184,16 @@ void sub_812B4B8(void) gUnknown_203F175 = 0; } -void sub_812B4C4(struct HelpSystemStruct_203F190_sub * a0, struct HelpSystemStruct_203F1AC * a1) +void sub_812B4C4(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1) { - a0->field_00 = a1; - a0->field_04 = 1; - a0->field_06 = 1; - a0->field_08 = 1; - a0->field_09 = 4; + a0->sub.field_00 = a1; + a0->sub.field_04 = 1; + a0->sub.field_06 = 1; + a0->sub.field_08 = 1; + a0->sub.field_09 = 4; } -void sub_812B4D8(struct HelpSystemStruct_203F190_sub * a0, struct HelpSystemStruct_203F1AC * a1) +void sub_812B4D8(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1) { sub_812B4C4(a0, a1); sub_812B520(a0, a1); @@ -198,3 +203,36 @@ void sub_812B4D8(struct HelpSystemStruct_203F190_sub * a0, struct HelpSystemStru sub_813BDA4(1); sub_813BD5C(1); } + +void sub_812B520(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1) +{ + u8 i; + u8 r4 = 0; + for (i = 0; i < 6; i++) + { + if (gUnknown_845C4B6[gUnknown_203B0EC][gUnknown_845C4B0[i]] == 1) + { + a1[r4].label = gUnknown_845B080[gUnknown_845C4B0[i]]; + a1[r4].index = gUnknown_845C4B0[i]; + r4++; + } + } + a1[r4 - 1].index = -2; + a0->sub.field_04 = r4; + a0->sub.field_06 = r4; + a0->sub.field_08 = 0; +} + +void sub_812B5A8(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1) +{ + sub_813BDE8(0); + sub_813BFC0(0); + sub_813BE78(1); + sub_812B4C4(a0, a1); + sub_812B614(a0, a1); + sub_812BF74(gUnknown_841DFC9); + sub_813C64C(a0, a0->field_0C, a0->field_0D); + sub_813C4CC(gUnknown_845B080[gUnknown_3005E9C[1]], 0, 0); + sub_813BDA4(1); + sub_813BD5C(1); +} |