diff --git a/data/match_call.s b/data/match_call.s index 15f28bc7a..61355b17c 100644 --- a/data/match_call.s +++ b/data/match_call.s @@ -3,135 +3,6 @@ .section .rodata -gUnknown_08624D1C:: @ 8624D1C - .4byte gText_MrStone_Pokenav_2B60C0 - .2byte 0xFFFF - .byte 0x58 - .byte 1 - .4byte gText_MrStone_Pokenav_2B61E6 - .byte 0x58 - .byte 1 - .2byte 0xFFFF - .4byte gText_MrStone_Pokenav_2B6302 - .byte 0xBD - .byte 0 - .2byte 0xFFFF - .4byte gText_MrStone_Pokenav_2B63A0 - .byte 16 - .byte 1 - .2byte 0xFFFF - .4byte gText_MrStone_Pokenav_2B64A2 - .byte 0x6A - .byte 0 - .2byte 0xFFFF - .4byte gText_MrStone_Pokenav_2B6526 - .byte 0xF4 - .byte 4 - .2byte 0xFFFF - .4byte gText_MrStone_Pokenav_2B65BB - .byte 0x97 - .byte 0 - .2byte 0xFFFF - .4byte gText_MrStone_Pokenav_2B6664 - .byte 0x6f - .byte 0 - .2byte 0xFFFF - .4byte gText_MrStone_Pokenav_2B66B1 - .byte 0x70 - .byte 0 - .2byte 0xFFFF - .4byte gText_MrStone_Pokenav_2B6703 - .byte 0xf7 - .byte 4 - .2byte 0xFFFF - .4byte gText_MrStone_Pokenav_2B67ED - .byte 0x64 - .byte 8 - .2byte 0xFFFF - .4byte NULL - .4byte 0xFFFFFFFF - -gUnknown_08624D7C:: @ 8624D7C - .byte 0 - .byte 10 - .2byte 0xFFFF - .4byte gUnknown_085EFAEF - .4byte gUnknown_085EFAFA - .4byte gUnknown_08624D1C - -gUnknown_08624D8C:: @ 8624D8C - .4byte gText_Norman_Pokenav_2B5719 - .byte 0x32 - .byte 1 - .2byte 0xFFFF - .4byte gText_Norman_Pokenav_2B5795 - .byte 0xF1 - .byte 4 - .2byte 0xFFFF - .4byte gText_Norman_Pokenav_2B584D - .byte 0xF3 - .byte 4 - .2byte 0xFFFF - .4byte gText_Norman_Pokenav_2B58E3 - .byte 0xF4 - .byte 4 - .2byte 0xFFFF - .4byte gText_Norman_Pokenav_2B5979 - .byte 0xD4 - .byte 0 - .2byte 0xFFFF - .4byte gText_Norman_Pokenav_2B5A07 - .byte 0xFE - .byte 0xFF - .2byte 0xFFFF - .4byte gText_Norman_Pokenav_2B5A69 - .byte 0x64 - .byte 8 - .2byte 0xFFFF - .4byte gText_Norman_Pokenav_2B5ACF - .byte 0x64 - .byte 8 - .2byte 0xFFFF - .4byte gText_Norman_Pokenav_2B5B5E - .byte 0x64 - .byte 8 - .2byte 0xFFFF - .4byte NULL - .4byte 0xFFFFFFFF - -gUnknown_08624DDC:: @ 8624DDC - .byte 5, 7, 0x32, 1, 0x45, 0, 0, 0 - .4byte gUnknown_085EFB25 - .4byte gUnknown_085EFB47 - .4byte gUnknown_08624D8C - -gUnknown_08624DF0:: @ 8624DF0 - .byte 3, 0, 0x19, 1 - .4byte gUnknown_085EFBC9 - .4byte gUnknown_085E8270 - -gUnknown_08624DFC:: @ 8624DFC - .4byte gText_Mom_Pokenav_2B227B - .byte 0xFF - .byte 0xFF - .2byte 0xFFFF - .4byte gText_Mom_Pokenav_2B2310 - .byte 0xF4 - .byte 0x4 - .2byte 0xFFFF - .4byte gText_Mom_Pokenav_2B23F3 - .byte 0x64 - .byte 8 - .2byte 0xFFFF - .4byte NULL - .4byte 0xFFFFFFFF - -gUnknown_08624E1C:: @ 8624E1C - .byte 0, 0, 0xD8, 0 - .4byte gUnknown_085EFB32 - .4byte gUnknown_085EFB4B - .4byte gUnknown_08624DFC - gUnknown_08624E2C:: @ 8624E2C .4byte gText_Steven_Pokenav_2B5B95 .byte 0xFF diff --git a/ld_script.txt b/ld_script.txt index 07960bcf1..5bd3c6b03 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -537,6 +537,7 @@ SECTIONS { src/berry_fix_program.o(.rodata); data/pokemon_summary_screen.o(.rodata); data/pokenav.o(.rodata); + src/match_call.o(.rodata); data/match_call.o(.rodata); data/pokenav.o(.rodata.after.match.call); src/rayquaza_scene.o(.rodata); diff --git a/src/match_call.c b/src/match_call.c index 431379017..b13e7e949 100644 --- a/src/match_call.c +++ b/src/match_call.c @@ -86,6 +86,12 @@ struct MatchCallStruct5 { const match_call_sub0_t *v10; }; +#define MATCHCALLDEF(name, type_, ...) \ +const struct MatchCallStruct##type_ name = { \ + .type = type_, \ + __VA_ARGS__ \ +}; + typedef union { struct MatchCallStructCommon *common; struct MatchCallStruct0 *type0; @@ -112,8 +118,89 @@ void sub_81D199C(const match_call_sub0_t *, u16, u8 *); void sub_8197080(u8 *); void sub_81D1B0C(u32, const u8 **, const u8 **); +extern const u8 gText_MrStone_Pokenav_2B60C0[]; +extern const u8 gText_MrStone_Pokenav_2B61E6[]; +extern const u8 gText_MrStone_Pokenav_2B6302[]; +extern const u8 gText_MrStone_Pokenav_2B63A0[]; +extern const u8 gText_MrStone_Pokenav_2B64A2[]; +extern const u8 gText_MrStone_Pokenav_2B6526[]; +extern const u8 gText_MrStone_Pokenav_2B65BB[]; +extern const u8 gText_MrStone_Pokenav_2B6664[]; +extern const u8 gText_MrStone_Pokenav_2B66B1[]; +extern const u8 gText_MrStone_Pokenav_2B6703[]; +extern const u8 gText_MrStone_Pokenav_2B67ED[]; + +extern const u8 gUnknown_085EFAEF[]; +extern const u8 gUnknown_085EFAFA[]; + +extern const u8 gText_Norman_Pokenav_2B5719[]; +extern const u8 gText_Norman_Pokenav_2B5795[]; +extern const u8 gText_Norman_Pokenav_2B584D[]; +extern const u8 gText_Norman_Pokenav_2B58E3[]; +extern const u8 gText_Norman_Pokenav_2B5979[]; +extern const u8 gText_Norman_Pokenav_2B5A07[]; +extern const u8 gText_Norman_Pokenav_2B5A69[]; +extern const u8 gText_Norman_Pokenav_2B5ACF[]; +extern const u8 gText_Norman_Pokenav_2B5B5E[]; + +extern const u8 gUnknown_085EFB25[]; +extern const u8 gUnknown_085EFB47[]; + +extern const u8 gUnknown_085EFBC9[]; +extern const u8 gUnknown_085E8270[]; + +extern const u8 gText_Mom_Pokenav_2B227B[]; +extern const u8 gText_Mom_Pokenav_2B2310[]; +extern const u8 gText_Mom_Pokenav_2B23F3[]; + +extern const u8 gUnknown_085EFB32[]; +extern const u8 gUnknown_085EFB4B[]; + // .rodata +const match_call_sub0_t gUnknown_08624D1C[] = { + { gText_MrStone_Pokenav_2B60C0, 0xFFFF, FLAG_0x158 }, + { gText_MrStone_Pokenav_2B61E6, FLAG_0x158, 0xFFFF }, + { gText_MrStone_Pokenav_2B6302, FLAG_0x0BD, 0xFFFF }, + { gText_MrStone_Pokenav_2B63A0, FLAG_0x110, 0xFFFF }, + { gText_MrStone_Pokenav_2B64A2, FLAG_0x06A, 0xFFFF }, + { gText_MrStone_Pokenav_2B6526, FLAG_0x4F4, 0xFFFF }, + { gText_MrStone_Pokenav_2B65BB, FLAG_0x097, 0xFFFF }, + { gText_MrStone_Pokenav_2B6664, FLAG_0x06F, 0xFFFF }, + { gText_MrStone_Pokenav_2B66B1, FLAG_0x070, 0xFFFF }, + { gText_MrStone_Pokenav_2B6703, FLAG_0x4F7, 0xFFFF }, + { gText_MrStone_Pokenav_2B67ED, FLAG_SYS_GAME_CLEAR, 0xFFFF }, + { NULL, 0xFFFF, 0xFFFF } +}; + +MATCHCALLDEF(gUnknown_08624D7C, 0, 10, 0xffff, gUnknown_085EFAEF, gUnknown_085EFAFA, gUnknown_08624D1C); + +const match_call_sub0_t gUnknown_08624D8C[] = { + { gText_Norman_Pokenav_2B5719, FLAG_0x132, 0xFFFF }, + { gText_Norman_Pokenav_2B5795, FLAG_0x4F1, 0xFFFF }, + { gText_Norman_Pokenav_2B584D, FLAG_0x4F3, 0xFFFF }, + { gText_Norman_Pokenav_2B58E3, FLAG_0x4F4, 0xFFFF }, + { gText_Norman_Pokenav_2B5979, FLAG_0x0D4, 0xFFFF }, + { gText_Norman_Pokenav_2B5A07, 0xFFFE, 0xFFFF }, + { gText_Norman_Pokenav_2B5A69, FLAG_SYS_GAME_CLEAR, 0xFFFF }, + { gText_Norman_Pokenav_2B5ACF, FLAG_SYS_GAME_CLEAR, 0xFFFF }, + { gText_Norman_Pokenav_2B5B5E, FLAG_SYS_GAME_CLEAR, 0xFFFF }, + { NULL, 0xFFFF, 0xFFFF } +}; + +MATCHCALLDEF(gUnknown_08624DDC, 5, 7, FLAG_0x132, 0x45, gUnknown_085EFB25, gUnknown_085EFB47, gUnknown_08624D8C); + +MATCHCALLDEF(gUnknown_08624DF0, 3, 0, FLAG_0x119, gUnknown_085EFBC9, gUnknown_085E8270) + +const match_call_sub0_t gUnknown_08624DFC[] = { + { gText_Mom_Pokenav_2B227B, 0xffff, 0xffff }, + { gText_Mom_Pokenav_2B2310, FLAG_0x4F4, 0xffff }, + { gText_Mom_Pokenav_2B23F3, FLAG_SYS_GAME_CLEAR, 0xffff }, + { NULL, 0xffff, 0xffff } +}; + +MATCHCALLDEF(gUnknown_08624E1C, 0, 0, FLAG_0x0D8, gUnknown_085EFB32, gUnknown_085EFB4B, gUnknown_08624DFC); + extern const match_call_t gUnknown_086252A8[]; extern bool32 (*const gUnknown_086252FC[])(const match_call_t); extern u8 (*const gUnknown_08625310[])(const match_call_t);