From 7abca37559d43cf540fdf3c4d738a46147f4b161 Mon Sep 17 00:00:00 2001 From: WhenGryphonsFly <84215159+WhenGryphonsFly@users.noreply.github.com> Date: Thu, 8 Jun 2023 20:05:09 -0500 Subject: [PATCH 1/8] Match sub_326F4 --- asm/rom_3219C.s | 49 --------------------------------------------- include/functions.h | 22 ++++++++++---------- include/global.h | 8 +++++++- src/rom_3219C.c | 26 ++++++++++++++++++++++++ 4 files changed, 44 insertions(+), 61 deletions(-) diff --git a/asm/rom_3219C.s b/asm/rom_3219C.s index 081b5d8..bc849d8 100755 --- a/asm/rom_3219C.s +++ b/asm/rom_3219C.s @@ -4,55 +4,6 @@ .text - thumb_func_start sub_326F4 -sub_326F4: @ 0x080326F4 - push {r4, lr} - ldr r4, _08032760 @ =gUnknown_020314E0 - ldr r0, [r4] - ldr r1, _08032764 @ =0x0000073D - adds r0, r0, r1 - movs r2, #0 - movs r1, #2 - strb r1, [r0] - ldr r0, [r4] - ldr r3, _08032768 @ =0x000001E5 - adds r0, r0, r3 - strb r2, [r0] - ldr r0, [r4] - movs r2, #0xf3 - lsls r2, r2, #1 - adds r1, r0, r2 - movs r0, #1 - strb r0, [r1] - bl sub_1F2A4 - bl sub_21B0C - bl sub_1F59C - bl sub_300D8 - bl sub_30178 - ldr r2, [r4] - movs r3, #0xec - lsls r3, r3, #1 - adds r0, r2, r3 - movs r1, #0x80 - lsls r1, r1, #1 - strh r1, [r0] - adds r3, #2 - adds r0, r2, r3 - strh r1, [r0] - bl sub_30480 - bl sub_304C8 - bl sub_31144 - bl sub_313A0 - bl sub_2E6AC - bl sub_31B30 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08032760: .4byte gUnknown_020314E0 -_08032764: .4byte 0x0000073D -_08032768: .4byte 0x000001E5 - thumb_func_start sub_3276C sub_3276C: @ 0x0803276C push {lr} diff --git a/include/functions.h b/include/functions.h index e5b0525..c8ebf34 100644 --- a/include/functions.h +++ b/include/functions.h @@ -486,8 +486,8 @@ extern void ClearSomeArray(void); //extern ? sub_1DDDC(); //extern ? sub_1EC48(); //extern ? sub_1F158(); -//extern ? sub_1F2A4(); -//extern ? sub_1F59C(); +extern void sub_1F2A4(); +extern void sub_1F59C(); //extern ? sub_1F698(); //extern ? sub_1FA48(); //extern ? sub_1FBC4(); @@ -503,7 +503,7 @@ extern void ClearSomeArray(void); //extern ? sub_216FC(); //extern ? sub_219A8(); //extern ? sub_219EC(); -//extern ? sub_21B0C(); +extern void sub_21B0C(); //extern ? sub_21D78(); //extern ? sub_21FBC(); //extern ? sub_225F0(); @@ -569,22 +569,22 @@ extern void ClearSomeArray(void); //extern ? sub_2DE54(); //extern ? sub_2E094(); //extern ? sub_2E67C(); -//extern ? sub_2E6AC(); +extern void sub_2E6AC(); //extern ? sub_2F140(); //extern ? sub_2F26C(); //extern ? sub_2F504(); //extern ? sub_2F79C(); //extern ? sub_2FCD0(); -//extern ? sub_300D8(); -//extern ? sub_30178(); -//extern ? sub_30480(); -//extern ? sub_304C8(); +extern void sub_300D8(); +extern void sub_30178(); +extern void sub_30480(); +extern void sub_304C8(); //extern ? sub_308DC(); //extern ? sub_30EB4(); -//extern ? sub_31144(); -//extern ? sub_313A0(); +extern void sub_31144(); +extern void sub_313A0(); //extern ? sub_31498(); -//extern ? sub_31B30(); +extern void sub_31B30(); //extern ? sub_31BE8(); //extern ? sub_31CF8(); //extern ? sub_31F6C(); diff --git a/include/global.h b/include/global.h index b9e034b..61fec9f 100755 --- a/include/global.h +++ b/include/global.h @@ -89,7 +89,13 @@ struct PinballGame /*0x12D*/ u8 filler12D; /*0x12E*/ s16 unk12E; /*0x130*/ s16 unk130[8]; - /*0x140*/ u8 filler140[0x458]; + /*0x140*/ u8 filler140[0x98]; + /*0x1D8*/ u16 unk1D8; + /*0x1DA*/ u16 unk1DA; + /*0x1DC*/ u8 filler1DC[0x9]; + /*0x1E5*/ u8 unk1E5; + /*0x1E6*/ u8 unk1E6; + /*0x1E7*/ u8 filler1E7[0x3B1]; /*0x598*/ u16 unk598; // Current catch/hatch mode species? /*0x59A*/ u8 filler59A[0x2]; /*0x59C*/ u16 unk59C; // Previous catch mode species? diff --git a/src/rom_3219C.c b/src/rom_3219C.c index 3f26104..d97a08e 100755 --- a/src/rom_3219C.c +++ b/src/rom_3219C.c @@ -1,6 +1,7 @@ #include "global.h" #include "main.h" #include "constants/species.h" +#include "functions.h" extern const u16 gWildMonLocations[][2][8]; extern const u16 gUnknown_086A4A38[2][26]; @@ -329,3 +330,28 @@ void sub_325E0(void) gUnknown_020314E0->unk59E = gUnknown_020314E0->unk598; } + +void sub_326F4(void) +{ + gUnknown_020314E0->unk73D = 2; + gUnknown_020314E0->unk1E5 = 0; + gUnknown_020314E0->unk1E6 = 1; + + sub_1F2A4(); + sub_21B0C(); + sub_1F59C(); + sub_300D8(); + sub_30178(); + + gUnknown_020314E0->unk1D8 = 0x100; + gUnknown_020314E0->unk1DA = 0x100; + + sub_30480(); + sub_304C8(); + sub_31144(); + sub_313A0(); + sub_2E6AC(); + sub_31B30(); + + return; +} From 1a0f9d57b20996cfa45e85dab2d3bdd7b4b4390e Mon Sep 17 00:00:00 2001 From: WhenGryphonsFly <84215159+WhenGryphonsFly@users.noreply.github.com> Date: Thu, 8 Jun 2023 20:27:53 -0500 Subject: [PATCH 2/8] Match sub_3276C --- asm/rom_3219C.s | 39 --------------------------------------- include/functions.h | 8 ++++---- include/global.h | 6 ++++-- src/rom_3219C.c | 24 +++++++++++++++++++++--- 4 files changed, 29 insertions(+), 48 deletions(-) diff --git a/asm/rom_3219C.s b/asm/rom_3219C.s index bc849d8..7abcd35 100755 --- a/asm/rom_3219C.s +++ b/asm/rom_3219C.s @@ -4,45 +4,6 @@ .text - thumb_func_start sub_3276C -sub_3276C: @ 0x0803276C - push {lr} - bl sub_19B90 - bl sub_327C0 - ldr r0, _080327B0 @ =gMain - ldrb r0, [r0, #0xf] - cmp r0, #0 - bne _08032782 - bl sub_328C8 -_08032782: - bl sub_32DF8 - ldr r0, _080327B4 @ =gUnknown_020314E0 - ldr r0, [r0] - movs r2, #0xa7 - lsls r2, r2, #2 - adds r1, r0, r2 - ldrh r0, [r1] - cmp r0, #0 - beq _080327AC - subs r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - cmp r0, #0 - bne _080327AC - ldr r0, _080327B8 @ =gMPlayInfo_BGM - ldr r1, _080327BC @ =0x0000FFFF - movs r2, #0x80 - lsls r2, r2, #1 - bl m4aMPlayVolumeControl -_080327AC: - pop {r0} - bx r0 - .align 2, 0 -_080327B0: .4byte gMain -_080327B4: .4byte gUnknown_020314E0 -_080327B8: .4byte gMPlayInfo_BGM -_080327BC: .4byte 0x0000FFFF - thumb_func_start sub_327C0 sub_327C0: @ 0x080327C0 push {r4, lr} diff --git a/include/functions.h b/include/functions.h index c8ebf34..56bb5c1 100644 --- a/include/functions.h +++ b/include/functions.h @@ -453,7 +453,7 @@ extern void ClearSomeArray(void); //extern ? sub_19A20(); //extern ? sub_19B10(); //extern ? sub_19B64(); -//extern ? sub_19B90(); +extern void sub_19B90(); //extern ? sub_19C04(); //extern ? sub_19CC8(); //extern ? sub_19D04(); @@ -595,15 +595,15 @@ extern void sub_31B30(); //extern ? sub_325E0(); //extern ? sub_326F4(); //extern ? sub_3276C(); -//extern ? sub_327C0(); -//extern ? sub_328C8(); +extern void sub_327C0(); +extern void sub_328C8(); //extern ? sub_32914(); //extern ? sub_32968(); //extern ? sub_329B0(); //extern ? sub_329F4(); //extern ? sub_32B74(); //extern ? sub_32BE4(); -//extern ? sub_32DF8(); +extern void sub_32DF8(); //extern ? sub_32F3C(); //extern ? sub_33130(); //extern ? sub_3342C(); diff --git a/include/global.h b/include/global.h index 61fec9f..4a48d46 100755 --- a/include/global.h +++ b/include/global.h @@ -95,8 +95,10 @@ struct PinballGame /*0x1DC*/ u8 filler1DC[0x9]; /*0x1E5*/ u8 unk1E5; /*0x1E6*/ u8 unk1E6; - /*0x1E7*/ u8 filler1E7[0x3B1]; - /*0x598*/ u16 unk598; // Current catch/hatch mode species? + /*0x1E7*/ u8 filler1E7[0xB5]; + /*0x29C*/ u16 unk29C; + /*0x29E*/ u8 filler29E[0x2FA]; + /*0x598*/ u16 unk598; // Current catch/hatch mode species? Is it evo mode as well? /*0x59A*/ u8 filler59A[0x2]; /*0x59C*/ u16 unk59C; // Previous catch mode species? /*0x59E*/ u16 unk59E; // Previous hatch mode species? diff --git a/src/rom_3219C.c b/src/rom_3219C.c index d97a08e..96d7494 100755 --- a/src/rom_3219C.c +++ b/src/rom_3219C.c @@ -1,7 +1,8 @@ #include "global.h" -#include "main.h" #include "constants/species.h" #include "functions.h" +#include "m4a.h" +#include "main.h" extern const u16 gWildMonLocations[][2][8]; extern const u16 gUnknown_086A4A38[2][26]; @@ -352,6 +353,23 @@ void sub_326F4(void) sub_313A0(); sub_2E6AC(); sub_31B30(); - - return; +} + +void sub_3276C(void) +{ + sub_19B90(); + sub_327C0(); + + if (!gMain.unkF) + sub_328C8(); + + sub_32DF8(); + + if (gUnknown_020314E0->unk29C) + { + // TODO: is this a fake match? Seems weird. + gUnknown_020314E0->unk29C--; + if (gUnknown_020314E0->unk29C == 0) + m4aMPlayVolumeControl(&gMPlayInfo_BGM,0xffff,0x100); + } } From 7d1259a5765f837dd25af59210e663ffc4c9c491 Mon Sep 17 00:00:00 2001 From: WhenGryphonsFly <84215159+WhenGryphonsFly@users.noreply.github.com> Date: Fri, 16 Jun 2023 15:38:56 -0500 Subject: [PATCH 3/8] Match sub_327C0 --- asm/rom_3219C.s | 122 -------------------------------------------- include/functions.h | 32 ++++++------ include/global.h | 20 ++++++-- src/rom_3219C.c | 74 +++++++++++++++++++++++++++ 4 files changed, 105 insertions(+), 143 deletions(-) diff --git a/asm/rom_3219C.s b/asm/rom_3219C.s index 7abcd35..3e34b2f 100755 --- a/asm/rom_3219C.s +++ b/asm/rom_3219C.s @@ -4,128 +4,6 @@ .text - thumb_func_start sub_327C0 -sub_327C0: @ 0x080327C0 - push {r4, lr} - bl sub_4F814 - bl sub_1A0F4 - bl sub_2CA9C - ldr r4, _0803280C @ =gUnknown_020314E0 - ldr r0, [r4] - adds r0, #0x68 - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #0x59 - bgt _080327E4 - bl sub_304C8 - bl sub_31498 -_080327E4: - ldr r2, [r4] - movs r0, #0x13 - ldrsb r0, [r2, r0] - cmp r0, #2 - bgt _08032814 - movs r1, #0xd1 - lsls r1, r1, #2 - adds r0, r2, r1 - ldr r0, [r0] - ldr r1, _08032810 @ =0x00FFFF00 - ands r0, r1 - movs r1, #0xc0 - lsls r1, r1, #2 - cmp r0, r1 - bne _08032814 - movs r0, #0xe5 - lsls r0, r0, #3 - adds r1, r2, r0 - movs r0, #1 - b _0803281C - .align 2, 0 -_0803280C: .4byte gUnknown_020314E0 -_08032810: .4byte 0x00FFFF00 -_08032814: - movs r0, #0xe5 - lsls r0, r0, #3 - adds r1, r2, r0 - movs r0, #0 -_0803281C: - strb r0, [r1] - ldr r4, _080328C4 @ =gUnknown_020314E0 - ldr r0, [r4] - adds r0, #0x68 - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #0x95 - bgt _08032834 - bl sub_2E6AC - bl sub_313A0 -_08032834: - ldr r0, [r4] - adds r0, #0x68 - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #0xc3 - bgt _08032848 - bl sub_30178 - bl sub_2F140 -_08032848: - ldr r0, [r4] - adds r0, #0x68 - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #0xc9 - bgt _08032858 - bl sub_2FCD0 -_08032858: - ldr r0, [r4] - adds r0, #0x68 - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #0xdb - bgt _08032868 - bl sub_1F59C -_08032868: - bl sub_308DC - ldr r0, [r4] - adds r0, #0x68 - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #0x76 - ble _08032880 - bl sub_2F504 - bl sub_30EB4 -_08032880: - bl sub_2CE80 - ldr r0, [r4] - adds r0, #0x68 - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #0xa8 - ble _08032894 - bl sub_2D104 -_08032894: - bl sub_203CC - bl sub_21B0C - bl sub_1D128 - bl sub_31B30 - ldr r0, [r4] - movs r1, #0xca - lsls r1, r1, #1 - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _080328BA - bl sub_225F0 -_080328BA: - bl sub_472E4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080328C4: .4byte gUnknown_020314E0 - thumb_func_start sub_328C8 sub_328C8: @ 0x080328C8 push {lr} diff --git a/include/functions.h b/include/functions.h index 56bb5c1..9376089 100644 --- a/include/functions.h +++ b/include/functions.h @@ -460,7 +460,7 @@ extern void sub_19B90(); //extern ? sub_19E10(); //extern ? sub_19F70(); //extern ? sub_19FA0(); -//extern ? sub_1A0F4(); +extern void sub_1A0F4(); //extern ? sub_1A2C0(); //extern ? sub_1A98C(); //extern ? sub_1A9E8(); @@ -477,7 +477,7 @@ extern void sub_19B90(); //extern ? sub_1C5AC(); //extern ? sub_1C73C(); //extern ? sub_1C7F4(); -//extern ? sub_1D128(); +extern void sub_1D128(); //extern ? sub_1D4D0(); //extern ? sub_1D5D8(); //extern ? sub_1DA74(); @@ -493,7 +493,7 @@ extern void sub_1F59C(); //extern ? sub_1FBC4(); //extern ? sub_1FF0C(); //extern ? sub_201B8(); -//extern ? sub_203CC(); +extern void sub_203CC(); //extern ? sub_20EC0(); //extern ? sub_21238(); //extern ? sub_21300(); @@ -506,8 +506,8 @@ extern void sub_1F59C(); extern void sub_21B0C(); //extern ? sub_21D78(); //extern ? sub_21FBC(); -//extern ? sub_225F0(); -//extern ? sub_22978(); +extern void sub_225F0(); +extern void sub_22978(); //extern ? sub_22A30(); //extern ? sub_22C6C(); //extern ? sub_22D54(); @@ -561,29 +561,29 @@ extern void sub_21B0C(); //extern ? sub_2C518(); //extern ? sub_2C538(); //extern ? sub_2C9A4(); -//extern ? sub_2CA9C(); +extern void sub_2CA9C(); //extern ? sub_2CD98(); -//extern ? sub_2CE80(); -//extern ? sub_2D104(); +extern void sub_2CE80(); +extern void sub_2D104(); //extern ? sub_2D204(); //extern ? sub_2DE54(); //extern ? sub_2E094(); //extern ? sub_2E67C(); extern void sub_2E6AC(); -//extern ? sub_2F140(); +extern void sub_2F140(); //extern ? sub_2F26C(); -//extern ? sub_2F504(); +extern void sub_2F504(); //extern ? sub_2F79C(); -//extern ? sub_2FCD0(); +extern void sub_2FCD0(); extern void sub_300D8(); extern void sub_30178(); extern void sub_30480(); extern void sub_304C8(); -//extern ? sub_308DC(); -//extern ? sub_30EB4(); +extern void sub_308DC(); +extern void sub_30EB4(); extern void sub_31144(); extern void sub_313A0(); -//extern ? sub_31498(); +extern void sub_31498(); extern void sub_31B30(); //extern ? sub_31BE8(); //extern ? sub_31CF8(); @@ -661,7 +661,7 @@ extern void sub_32DF8(); //extern ? sub_47100(); //extern ? sub_47110(); //extern ? sub_47160(); -//extern ? sub_472E4(); +extern void sub_472E4(); //extern ? sub_47344(); //extern ? sub_474F4(); //extern ? sub_47670(); @@ -733,7 +733,7 @@ extern void sub_32DF8(); //extern ? sub_4F30C(); //extern ? sub_4F4B4(); //extern ? sub_4F660(); -//extern ? sub_4F814(); +extern void sub_4F814(); //extern ? sub_4F95C(); //extern ? sub_4F9F0(); //extern ? sub_4FAC0(); diff --git a/include/global.h b/include/global.h index 4a48d46..dda07ca 100755 --- a/include/global.h +++ b/include/global.h @@ -81,15 +81,21 @@ enum struct PinballGame { - /*0x000*/ u8 filler0[0x35]; + /*0x000*/ u8 filler0[0x13]; + /*0x013*/ s8 unk13; + /*0x014*/ u8 filler14[0x21]; /*0x035*/ s8 area; - /*0x036*/ u8 filler36[0xF5]; + /*0x036*/ u8 filler36[0x32]; + /*0x068*/ s16 unk68; + /*0x06A*/ u8 filler6A[0xC1]; /*0x12B*/ s8 unk12B; /*0x12C*/ s8 unk12C; /*0x12D*/ u8 filler12D; /*0x12E*/ s16 unk12E; /*0x130*/ s16 unk130[8]; - /*0x140*/ u8 filler140[0x98]; + /*0x140*/ u8 filler140[0x54]; + /*0x194*/ s8 unk194; + /*0x195*/ u8 filler195[0x43]; /*0x1D8*/ u16 unk1D8; /*0x1DA*/ u16 unk1DA; /*0x1DC*/ u8 filler1DC[0x9]; @@ -97,14 +103,18 @@ struct PinballGame /*0x1E6*/ u8 unk1E6; /*0x1E7*/ u8 filler1E7[0xB5]; /*0x29C*/ u16 unk29C; - /*0x29E*/ u8 filler29E[0x2FA]; + /*0x29E*/ u8 filler29E[0xA6]; + /*0x344*/ u32 unk344; + /*0x348*/ u8 filler348[0x250]; /*0x598*/ u16 unk598; // Current catch/hatch mode species? Is it evo mode as well? /*0x59A*/ u8 filler59A[0x2]; /*0x59C*/ u16 unk59C; // Previous catch mode species? /*0x59E*/ u16 unk59E; // Previous hatch mode species? /*0x5A0*/ u8 filler5A0[0x50]; /*0x5F0*/ u16 unk5F0; - /*0x5F2*/ u8 filler5F2[0x14B]; + /*0x5F2*/ u8 filler5F2[0x136]; + /*0x728*/ u8 unk728; // TODO: unknown type + /*0x729*/ u8 filler729[0x14]; /*0x73D*/ s8 unk73D; }; diff --git a/src/rom_3219C.c b/src/rom_3219C.c index 96d7494..e86d75c 100755 --- a/src/rom_3219C.c +++ b/src/rom_3219C.c @@ -373,3 +373,77 @@ void sub_3276C(void) m4aMPlayVolumeControl(&gMPlayInfo_BGM,0xffff,0x100); } } + +void sub_327C0(void) +{ + s32 temp; + + sub_4F814(); + sub_1A0F4(); + sub_2CA9C(); + + if (gUnknown_020314E0->unk68 < 0x5a) + { + sub_304C8(); + sub_31498(); + } + + // TODO: if this is a false match, it will take a braver one than I to fix it. + if (gUnknown_020314E0->unk13 < 3) + { + if ((gUnknown_020314E0->unk344 & 0x00FFFF00) == 0x300) + { + gUnknown_020314E0->unk728 = 1; + } + else + { + gUnknown_020314E0->unk728 = 0; + } + } + else + { + gUnknown_020314E0->unk728 = 0; + } + + if (gUnknown_020314E0->unk68 < 0x96) + { + sub_2E6AC(); + sub_313A0(); + } + if (gUnknown_020314E0->unk68 < 0xC4) + { + sub_30178(); + sub_2F140(); + } + if (gUnknown_020314E0->unk68 < 0xCA) + { + sub_2FCD0(); + } + if (gUnknown_020314E0->unk68 < 0xDC) + { + sub_1F59C(); + } + + sub_308DC(); + + if (0x76 < gUnknown_020314E0->unk68) + { + sub_2F504(); + sub_30EB4(); + } + + sub_2CE80(); + + if (0xA8 < gUnknown_020314E0->unk68) + sub_2D104(); + + sub_203CC(); + sub_21B0C(); + sub_1D128(); + sub_31B30(); + + if (gUnknown_020314E0->unk194 != 0) // TODO: unsure of style here. It's not a bool8 (unless bool8 == s8), so I'm making the != 0 explicit for now. + sub_225F0(); + + sub_472E4(); +} From 752a189cb9a9b53899269d4f6bdb5d1fc14ef54e Mon Sep 17 00:00:00 2001 From: WhenGryphonsFly <84215159+WhenGryphonsFly@users.noreply.github.com> Date: Fri, 16 Jun 2023 15:48:22 -0500 Subject: [PATCH 4/8] Clean up sub_327C0 --- src/rom_3219C.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rom_3219C.c b/src/rom_3219C.c index e86d75c..010a4e4 100755 --- a/src/rom_3219C.c +++ b/src/rom_3219C.c @@ -388,10 +388,10 @@ void sub_327C0(void) sub_31498(); } - // TODO: if this is a false match, it will take a braver one than I to fix it. + // TODO: if this is a fake match, it will take a braver one than I to fix it. if (gUnknown_020314E0->unk13 < 3) { - if ((gUnknown_020314E0->unk344 & 0x00FFFF00) == 0x300) + if ((gUnknown_020314E0->unk344 & 0xFFFF00) == 0x300) { gUnknown_020314E0->unk728 = 1; } From f491370ff9f5d0b9dc63ec2a8fb1e707b66a65e0 Mon Sep 17 00:00:00 2001 From: WhenGryphonsFly <84215159+WhenGryphonsFly@users.noreply.github.com> Date: Fri, 16 Jun 2023 16:31:47 -0500 Subject: [PATCH 5/8] Match sub_328C8 --- asm/rom_3219C.s | 34 ---------------------------------- include/functions.h | 8 ++++---- include/global.h | 4 +++- src/rom_3219C.c | 17 +++++++++++++++++ 4 files changed, 24 insertions(+), 39 deletions(-) diff --git a/asm/rom_3219C.s b/asm/rom_3219C.s index 3e34b2f..c3d1429 100755 --- a/asm/rom_3219C.s +++ b/asm/rom_3219C.s @@ -4,40 +4,6 @@ .text - thumb_func_start sub_328C8 -sub_328C8: @ 0x080328C8 - push {lr} - bl sub_300D8 - bl sub_32968 - bl sub_1F2A4 - ldr r0, _0803290C @ =gUnknown_020314E0 - ldr r0, [r0] - movs r2, #0xc0 - lsls r2, r2, #3 - adds r1, r0, r2 - ldrh r0, [r1] - cmp r0, #0 - beq _080328EA - subs r0, #1 - strh r0, [r1] -_080328EA: - bl sub_2F26C - bl sub_2E67C - bl sub_31144 - ldr r0, _08032910 @ =gMain - ldrb r1, [r0, #0xf] - movs r0, #0x20 - ands r0, r1 - cmp r0, #0 - bne _08032906 - bl sub_2F79C -_08032906: - pop {r0} - bx r0 - .align 2, 0 -_0803290C: .4byte gUnknown_020314E0 -_08032910: .4byte gMain - thumb_func_start sub_32914 sub_32914: @ 0x08032914 push {lr} diff --git a/include/functions.h b/include/functions.h index 9376089..58ba32c 100644 --- a/include/functions.h +++ b/include/functions.h @@ -568,12 +568,12 @@ extern void sub_2D104(); //extern ? sub_2D204(); //extern ? sub_2DE54(); //extern ? sub_2E094(); -//extern ? sub_2E67C(); +extern void sub_2E67C(); extern void sub_2E6AC(); extern void sub_2F140(); -//extern ? sub_2F26C(); +extern void sub_2F26C(); extern void sub_2F504(); -//extern ? sub_2F79C(); +extern void sub_2F79C(); extern void sub_2FCD0(); extern void sub_300D8(); extern void sub_30178(); @@ -598,7 +598,7 @@ extern void sub_31B30(); extern void sub_327C0(); extern void sub_328C8(); //extern ? sub_32914(); -//extern ? sub_32968(); +extern void sub_32968(); //extern ? sub_329B0(); //extern ? sub_329F4(); //extern ? sub_32B74(); diff --git a/include/global.h b/include/global.h index dda07ca..a0f7bc0 100755 --- a/include/global.h +++ b/include/global.h @@ -112,7 +112,9 @@ struct PinballGame /*0x59E*/ u16 unk59E; // Previous hatch mode species? /*0x5A0*/ u8 filler5A0[0x50]; /*0x5F0*/ u16 unk5F0; - /*0x5F2*/ u8 filler5F2[0x136]; + /*0x5F2*/ u8 filler5F2[0xE]; + /*0x600*/ u16 unk600; + /*0x602*/ u8 filler602[0x126]; /*0x728*/ u8 unk728; // TODO: unknown type /*0x729*/ u8 filler729[0x14]; /*0x73D*/ s8 unk73D; diff --git a/src/rom_3219C.c b/src/rom_3219C.c index 010a4e4..32d8962 100755 --- a/src/rom_3219C.c +++ b/src/rom_3219C.c @@ -447,3 +447,20 @@ void sub_327C0(void) sub_472E4(); } + +void sub_328C8(void) +{ + sub_300D8(); + sub_32968(); + sub_1F2A4(); + + if (gUnknown_020314E0->unk600 != 0) + gUnknown_020314E0->unk600--; + + sub_2F26C(); + sub_2E67C(); + sub_31144(); + + if (!(gMain.unkF & 0x20)) + sub_2F79C(); +} From cae370588cc2fc937854b758684c1267c3e3d1d4 Mon Sep 17 00:00:00 2001 From: WhenGryphonsFly <84215159+WhenGryphonsFly@users.noreply.github.com> Date: Fri, 16 Jun 2023 19:18:03 -0500 Subject: [PATCH 6/8] Match sub_32914 --- asm/rom_3219C.s | 46 --------------------------------------------- include/functions.h | 6 +++--- include/global.h | 5 ++++- src/rom_3219C.c | 21 +++++++++++++++++++++ 4 files changed, 28 insertions(+), 50 deletions(-) diff --git a/asm/rom_3219C.s b/asm/rom_3219C.s index c3d1429..cdf6e5e 100755 --- a/asm/rom_3219C.s +++ b/asm/rom_3219C.s @@ -4,52 +4,6 @@ .text - thumb_func_start sub_32914 -sub_32914: @ 0x08032914 - push {lr} - ldr r0, _08032938 @ =gMain - ldrb r0, [r0, #0xf] - cmp r0, #0 - bne _0803295E - ldr r0, _0803293C @ =gUnknown_020314E0 - ldr r0, [r0] - adds r0, #0x25 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #3 - beq _0803294C - cmp r0, #3 - bgt _08032940 - cmp r0, #1 - beq _08032946 - b _08032956 - .align 2, 0 -_08032938: .4byte gMain -_0803293C: .4byte gUnknown_020314E0 -_08032940: - cmp r0, #4 - beq _08032952 - b _08032956 -_08032946: - bl sub_32B74 - b _08032956 -_0803294C: - bl sub_329B0 - b _08032956 -_08032952: - bl sub_1C560 -_08032956: - ldr r0, _08032964 @ =gUnknown_020314E0 - ldr r1, [r0] - movs r0, #0x3c - strh r0, [r1, #0x26] -_0803295E: - pop {r0} - bx r0 - .align 2, 0 -_08032964: .4byte gUnknown_020314E0 - thumb_func_start sub_32968 sub_32968: @ 0x08032968 push {lr} diff --git a/include/functions.h b/include/functions.h index 58ba32c..3507f67 100644 --- a/include/functions.h +++ b/include/functions.h @@ -473,7 +473,7 @@ extern void sub_1A0F4(); //extern ? sub_1B140(); //extern ? sub_1BB68(); //extern ? sub_1C544(); -//extern ? sub_1C560(); +extern void sub_1C560(); //extern ? sub_1C5AC(); //extern ? sub_1C73C(); //extern ? sub_1C7F4(); @@ -599,9 +599,9 @@ extern void sub_327C0(); extern void sub_328C8(); //extern ? sub_32914(); extern void sub_32968(); -//extern ? sub_329B0(); +extern void sub_329B0(); //extern ? sub_329F4(); -//extern ? sub_32B74(); +extern void sub_32B74(); //extern ? sub_32BE4(); extern void sub_32DF8(); //extern ? sub_32F3C(); diff --git a/include/global.h b/include/global.h index a0f7bc0..de5518e 100755 --- a/include/global.h +++ b/include/global.h @@ -83,7 +83,10 @@ struct PinballGame { /*0x000*/ u8 filler0[0x13]; /*0x013*/ s8 unk13; - /*0x014*/ u8 filler14[0x21]; + /*0x014*/ u8 filler14[0x11]; + /*0x025*/ s8 unk25; + /*0x026*/ u16 unk26; + /*0x026*/ u8 filler28[0xD]; /*0x035*/ s8 area; /*0x036*/ u8 filler36[0x32]; /*0x068*/ s16 unk68; diff --git a/src/rom_3219C.c b/src/rom_3219C.c index 32d8962..92e0708 100755 --- a/src/rom_3219C.c +++ b/src/rom_3219C.c @@ -464,3 +464,24 @@ void sub_328C8(void) if (!(gMain.unkF & 0x20)) sub_2F79C(); } + +void sub_32914(void) +{ + if (gMain.unkF == 0) + { + switch (gUnknown_020314E0->unk25) + { + case 1: + sub_32B74(); + break; + case 3: + sub_329B0(); + break; + case 4: + sub_1C560(); + break; + } + + gUnknown_020314E0->unk26 = 0x3C; + } +} From 16a924b3b0b700d3edcd397b3d36d5d6985dfbc7 Mon Sep 17 00:00:00 2001 From: WhenGryphonsFly <84215159+WhenGryphonsFly@users.noreply.github.com> Date: Fri, 16 Jun 2023 19:21:16 -0500 Subject: [PATCH 7/8] Match sub_32968 --- asm/rom_3219C.s | 41 ----------------------------------------- include/functions.h | 6 +++--- src/rom_3219C.c | 19 +++++++++++++++++++ 3 files changed, 22 insertions(+), 44 deletions(-) diff --git a/asm/rom_3219C.s b/asm/rom_3219C.s index cdf6e5e..01334ca 100755 --- a/asm/rom_3219C.s +++ b/asm/rom_3219C.s @@ -4,47 +4,6 @@ .text - thumb_func_start sub_32968 -sub_32968: @ 0x08032968 - push {lr} - ldr r2, _08032990 @ =gUnknown_020314E0 - ldr r1, [r2] - ldrh r0, [r1, #0x26] - cmp r0, #0 - beq _08032978 - subs r0, #1 - strh r0, [r1, #0x26] -_08032978: - ldr r0, [r2] - adds r0, #0x25 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #3 - beq _080329A0 - cmp r0, #3 - bgt _08032994 - cmp r0, #1 - beq _0803299A - b _080329AA - .align 2, 0 -_08032990: .4byte gUnknown_020314E0 -_08032994: - cmp r0, #4 - beq _080329A6 - b _080329AA -_0803299A: - bl sub_32BE4 - b _080329AA -_080329A0: - bl sub_329F4 - b _080329AA -_080329A6: - bl sub_1C5AC -_080329AA: - pop {r0} - bx r0 - thumb_func_start sub_329B0 sub_329B0: @ 0x080329B0 push {r4, lr} diff --git a/include/functions.h b/include/functions.h index 3507f67..b61f57a 100644 --- a/include/functions.h +++ b/include/functions.h @@ -474,7 +474,7 @@ extern void sub_1A0F4(); //extern ? sub_1BB68(); //extern ? sub_1C544(); extern void sub_1C560(); -//extern ? sub_1C5AC(); +extern void sub_1C5AC(); //extern ? sub_1C73C(); //extern ? sub_1C7F4(); extern void sub_1D128(); @@ -600,9 +600,9 @@ extern void sub_328C8(); //extern ? sub_32914(); extern void sub_32968(); extern void sub_329B0(); -//extern ? sub_329F4(); +extern void sub_329F4(); extern void sub_32B74(); -//extern ? sub_32BE4(); +extern void sub_32BE4(); extern void sub_32DF8(); //extern ? sub_32F3C(); //extern ? sub_33130(); diff --git a/src/rom_3219C.c b/src/rom_3219C.c index 92e0708..30b7f30 100755 --- a/src/rom_3219C.c +++ b/src/rom_3219C.c @@ -485,3 +485,22 @@ void sub_32914(void) gUnknown_020314E0->unk26 = 0x3C; } } + +void sub_32968(void) +{ + if (gUnknown_020314E0->unk26 != 0) + gUnknown_020314E0->unk26--; + + switch (gUnknown_020314E0->unk25) + { + case 1: + sub_32BE4(); + break; + case 3: + sub_329F4(); + break; + case 4: + sub_1C5AC(); + break; + } +} From 16f4dee6bf5741629fc104f11a7bd85ba443531f Mon Sep 17 00:00:00 2001 From: WhenGryphonsFly <84215159+WhenGryphonsFly@users.noreply.github.com> Date: Fri, 16 Jun 2023 19:49:08 -0500 Subject: [PATCH 8/8] Match sub_329B0 --- asm/rom_3219C.s | 33 --------------------------------- include/global.h | 15 +++++++++++---- src/rom_3219C.c | 10 ++++++++++ 3 files changed, 21 insertions(+), 37 deletions(-) diff --git a/asm/rom_3219C.s b/asm/rom_3219C.s index 01334ca..c7bef7a 100755 --- a/asm/rom_3219C.s +++ b/asm/rom_3219C.s @@ -4,39 +4,6 @@ .text - thumb_func_start sub_329B0 -sub_329B0: @ 0x080329B0 - push {r4, lr} - ldr r0, _080329E4 @ =gUnknown_020314E0 - ldr r2, [r0] - movs r3, #0 - movs r0, #0xb4 - strh r0, [r2, #0x28] - movs r4, #0xdd - lsls r4, r4, #1 - adds r1, r2, r4 - strh r0, [r1] - ldr r0, _080329E8 @ =0x0007A120 - str r0, [r2, #0x3c] - ldr r0, _080329EC @ =gMain - ldrh r1, [r0, #0x38] - movs r1, #0xce - strh r1, [r0, #0x38] - ldrh r1, [r0, #0x3c] - strh r3, [r0, #0x3c] - ldr r0, _080329F0 @ =0x000005F7 - adds r2, r2, r0 - movs r0, #1 - strb r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080329E4: .4byte gUnknown_020314E0 -_080329E8: .4byte 0x0007A120 -_080329EC: .4byte gMain -_080329F0: .4byte 0x000005F7 - thumb_func_start sub_329F4 sub_329F4: @ 0x080329F4 push {r4, r5, r6, r7, lr} diff --git a/include/global.h b/include/global.h index de5518e..130b963 100755 --- a/include/global.h +++ b/include/global.h @@ -86,9 +86,12 @@ struct PinballGame /*0x014*/ u8 filler14[0x11]; /*0x025*/ s8 unk25; /*0x026*/ u16 unk26; - /*0x026*/ u8 filler28[0xD]; + /*0x028*/ u16 unk28; + /*0x02A*/ u8 filler2A[0xB]; /*0x035*/ s8 area; - /*0x036*/ u8 filler36[0x32]; + /*0x036*/ u8 filler36[0x6]; + /*0x03C*/ u32 unk3C; + /*0x040*/ u8 filler40[0x28]; /*0x068*/ s16 unk68; /*0x06A*/ u8 filler6A[0xC1]; /*0x12B*/ s8 unk12B; @@ -98,7 +101,9 @@ struct PinballGame /*0x130*/ s16 unk130[8]; /*0x140*/ u8 filler140[0x54]; /*0x194*/ s8 unk194; - /*0x195*/ u8 filler195[0x43]; + /*0x195*/ u8 filler195[0x25]; + /*0x1BA*/ u16 unk1BA; + /*0x1BC*/ u8 filler1BC[0x1C]; /*0x1D8*/ u16 unk1D8; /*0x1DA*/ u16 unk1DA; /*0x1DC*/ u8 filler1DC[0x9]; @@ -115,7 +120,9 @@ struct PinballGame /*0x59E*/ u16 unk59E; // Previous hatch mode species? /*0x5A0*/ u8 filler5A0[0x50]; /*0x5F0*/ u16 unk5F0; - /*0x5F2*/ u8 filler5F2[0xE]; + /*0x5F2*/ u8 filler5F2[0x5]; + /*0x5F7*/ u8 unk5F7; + /*0x5F8*/ u8 filler5F8[0x8]; /*0x600*/ u16 unk600; /*0x602*/ u8 filler602[0x126]; /*0x728*/ u8 unk728; // TODO: unknown type diff --git a/src/rom_3219C.c b/src/rom_3219C.c index 30b7f30..763c451 100755 --- a/src/rom_3219C.c +++ b/src/rom_3219C.c @@ -504,3 +504,13 @@ void sub_32968(void) break; } } + +void sub_329B0(void) +{ + gUnknown_020314E0->unk28 = 0xB4; + gUnknown_020314E0->unk1BA = 0xB4; + gUnknown_020314E0->unk3C = 500000; + gMain.blendControl = 0xCE; + gMain.blendBrightness = 0; + gUnknown_020314E0->unk5F7 = 1; +}