From d92be5f9cc1323949a3109396cd81bd39eeafb5f Mon Sep 17 00:00:00 2001 From: theo3 Date: Mon, 15 Jun 2020 21:19:18 -0700 Subject: [PATCH] begin rem --- asm/beedle.s | 4 +- asm/carpenter.s | 4 +- asm/castleMaid.s | 2 +- asm/code_0806FA6C.s | 4 +- asm/dog.s | 2 +- asm/farmers.s | 4 +- asm/forestMinish.s | 4 +- asm/gorman.s | 4 +- asm/guardWithSpear.s | 4 +- asm/hurdyGurdyMan.s | 4 +- asm/kid.s | 6 +- asm/mama.s | 2 +- asm/melari.s | 6 +- asm/minishEzlo.s | 2 +- asm/mountainMinish.s | 6 +- asm/mutoh.s | 4 +- asm/non_matching/syrup/sub_0806A26C.inc | 43 +++++++++ asm/npc58.s | 2 +- asm/percy.s | 6 +- asm/rem.s | 62 ------------- asm/sittingPerson.s | 4 +- asm/smith.s | 6 +- asm/sturgeon.s | 6 +- asm/syrup.s | 115 ------------------------ asm/teachers.s | 4 +- asm/townMinish.s | 4 +- asm/townsperson.s | 6 +- asm/windTribespeople.s | 4 +- include/functions.h | 26 +++++- include/npc.h | 2 +- include/textbox.h | 1 + linker.ld | 2 + src/bladeBrothers.c | 44 ++------- src/bladeTrap.c | 3 +- src/rem.c | 37 ++++++++ src/syrup.c | 77 ++++++++++++++++ src/talon.c | 6 +- src/townMinish.c | 8 +- 38 files changed, 252 insertions(+), 278 deletions(-) create mode 100644 asm/non_matching/syrup/sub_0806A26C.inc create mode 100644 src/rem.c create mode 100644 src/syrup.c diff --git a/asm/beedle.s b/asm/beedle.s index 187acbc5..1015821a 100644 --- a/asm/beedle.s +++ b/asm/beedle.s @@ -44,7 +44,7 @@ sub_080632E0: @ 0x080632E0 push {r4, lr} adds r4, r0, #0 ldr r1, _08063310 @ =gUnk_0810C8D4 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _0806330E adds r0, r4, #0 @@ -205,7 +205,7 @@ sub_08063410: @ 0x08063410 cmp r5, #0 bne _08063442 ldr r1, _08063464 @ =gUnk_0810C8D4 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _08063462 ldrb r0, [r4, #0xc] diff --git a/asm/carpenter.s b/asm/carpenter.s index b4b900c6..bb2a5228 100644 --- a/asm/carpenter.s +++ b/asm/carpenter.s @@ -35,7 +35,7 @@ _0806717E: ldr r0, _080671EC @ =gUnk_08110CA8 adds r1, r1, r0 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _08067224 movs r0, #1 @@ -247,7 +247,7 @@ sub_0806732C: @ 0x0806732C ldr r0, _08067374 @ =gUnk_08110CA8 adds r1, r1, r0 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _0806737E ldrb r0, [r4, #0xc] diff --git a/asm/castleMaid.s b/asm/castleMaid.s index 9ba02461..6a779128 100644 --- a/asm/castleMaid.s +++ b/asm/castleMaid.s @@ -93,7 +93,7 @@ _0806458A: ldr r0, _080645D0 @ =gUnk_0810F874 adds r1, r1, r0 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _0806463C ldrb r0, [r4, #0xc] diff --git a/asm/code_0806FA6C.s b/asm/code_0806FA6C.s index 608ef198..bac62bba 100644 --- a/asm/code_0806FA6C.s +++ b/asm/code_0806FA6C.s @@ -515,8 +515,8 @@ _0806FDDC: _0806FDEA: pop {r4, pc} - thumb_func_start sub_0806FDEC -sub_0806FDEC: @ 0x0806FDEC + thumb_func_start LoadExtraSpriteData +LoadExtraSpriteData: @ 0x0806FDEC push {r4, r5, r6, r7, lr} mov r7, r8 push {r7} diff --git a/asm/dog.s b/asm/dog.s index 87b25169..ea27ad5c 100644 --- a/asm/dog.s +++ b/asm/dog.s @@ -517,7 +517,7 @@ sub_08069EF0: @ 0x08069EF0 ldr r0, _08069F20 @ =gUnk_08111D58 adds r1, r1, r0 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _08069F28 movs r0, #1 diff --git a/asm/farmers.s b/asm/farmers.s index 2b8c6c88..31e8ad7a 100644 --- a/asm/farmers.s +++ b/asm/farmers.s @@ -21,7 +21,7 @@ sub_0806BBE4: @ 0x0806BBE4 ldr r0, _0806BC28 @ =gUnk_08113140 adds r1, r1, r0 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _0806BC54 ldrb r0, [r4, #0xc] @@ -174,7 +174,7 @@ sub_0806BCFC: @ 0x0806BCFC ldr r0, _0806BD48 @ =gUnk_08113140 adds r1, r1, r0 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _0806BD52 ldrb r0, [r4, #0xc] diff --git a/asm/forestMinish.s b/asm/forestMinish.s index e2fcd3c8..7916b1aa 100644 --- a/asm/forestMinish.s +++ b/asm/forestMinish.s @@ -25,7 +25,7 @@ _0805FFEC: _0805FFF2: ldr r1, _0806003C @ =gUnk_0810A348 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _0806008C movs r2, #1 @@ -532,7 +532,7 @@ sub_080603B4: @ 0x080603B4 bne _080603F4 ldr r1, _080603F0 @ =gUnk_0810A348 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _080603FA ldrb r0, [r4, #0xc] diff --git a/asm/gorman.s b/asm/gorman.s index fceb812b..8899e257 100644 --- a/asm/gorman.s +++ b/asm/gorman.s @@ -48,7 +48,7 @@ sub_080697C4: @ 0x080697C4 push {r4, lr} adds r4, r0, #0 ldr r1, _080697E8 @ =gUnk_08111C3C - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _080697E4 movs r0, #1 @@ -112,7 +112,7 @@ sub_08069838: @ 0x08069838 cmp r5, #0 bne _08069862 ldr r1, _08069884 @ =gUnk_08111C3C - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _08069880 ldrb r0, [r4, #0xc] diff --git a/asm/guardWithSpear.s b/asm/guardWithSpear.s index 532def17..d8039fd2 100644 --- a/asm/guardWithSpear.s +++ b/asm/guardWithSpear.s @@ -67,7 +67,7 @@ sub_08063D44: @ 0x08063D44 ldr r0, _08063DA4 @ =gUnk_0810F524 adds r1, r1, r0 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _08063DC6 adds r0, r4, #0 @@ -228,7 +228,7 @@ sub_08063E90: @ 0x08063E90 ldr r0, _08063EC8 @ =gUnk_0810F524 adds r1, r1, r0 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _08063F1E ldrb r0, [r4, #0xc] diff --git a/asm/hurdyGurdyMan.s b/asm/hurdyGurdyMan.s index f130c1fd..86b68c29 100644 --- a/asm/hurdyGurdyMan.s +++ b/asm/hurdyGurdyMan.s @@ -25,7 +25,7 @@ _0806E31C: _0806E322: ldr r1, _0806E348 @ =gUnk_081144F0 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _0806E3E0 movs r0, #1 @@ -180,7 +180,7 @@ sub_0806E458: @ 0x0806E458 bne _0806E498 ldr r1, _0806E494 @ =gUnk_081144F0 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _0806E49E ldrb r0, [r4, #0xc] diff --git a/asm/kid.s b/asm/kid.s index 666b8885..76f20da2 100644 --- a/asm/kid.s +++ b/asm/kid.s @@ -42,7 +42,7 @@ sub_080620F4: @ 0x080620F4 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _0806212A movs r1, #0 @@ -158,7 +158,7 @@ _080621CE: adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 bne _080621E4 b _080622F2 @@ -1262,7 +1262,7 @@ sub_08062A60: @ 0x08062A60 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _08062AB6 ldrb r0, [r4, #0xc] diff --git a/asm/mama.s b/asm/mama.s index 263ee365..9534021f 100644 --- a/asm/mama.s +++ b/asm/mama.s @@ -102,7 +102,7 @@ sub_0806C454: @ 0x0806C454 push {r4, lr} adds r4, r0, #0 ldr r1, _0806C470 @ =gUnk_08113754 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _0806C474 adds r0, r4, #0 diff --git a/asm/melari.s b/asm/melari.s index f32ce956..e10ec0e4 100644 --- a/asm/melari.s +++ b/asm/melari.s @@ -39,7 +39,7 @@ sub_08068708: @ 0x08068708 push {r4, lr} adds r4, r0, #0 ldr r1, _0806872C @ =gUnk_08111520 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _08068728 movs r0, #1 @@ -116,7 +116,7 @@ _08068794: _0806879A: ldr r1, _080687CC @ =gUnk_08111520 adds r0, r5, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _0806887A movs r2, #1 @@ -355,7 +355,7 @@ sub_0806897C: @ 0x0806897C bne _080689B4 ldr r1, _080689B0 @ =gUnk_08111520 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _080689BA ldrb r0, [r4, #0xc] diff --git a/asm/minishEzlo.s b/asm/minishEzlo.s index ecdfe2f9..02ae6ce4 100644 --- a/asm/minishEzlo.s +++ b/asm/minishEzlo.s @@ -16,7 +16,7 @@ sub_08062F70: @ 0x08062F70 bne _08062FA0 ldr r1, _08062FE8 @ =gUnk_0810C48C adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _08062FE4 ldrb r0, [r4, #0xc] diff --git a/asm/mountainMinish.s b/asm/mountainMinish.s index f5e21073..728ae0f3 100644 --- a/asm/mountainMinish.s +++ b/asm/mountainMinish.s @@ -39,7 +39,7 @@ sub_08067E60: @ 0x08067E60 push {r4, lr} adds r4, r0, #0 ldr r1, _08067E84 @ =gUnk_08111358 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _08067E80 movs r0, #1 @@ -136,7 +136,7 @@ _08067F0E: _08067F10: ldr r1, _08067F50 @ =gUnk_08111358 adds r0, r5, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 bne _08067F1E b _080680F0 @@ -561,7 +561,7 @@ sub_08068270: @ 0x08068270 bne _080682A8 ldr r1, _080682A4 @ =gUnk_08111358 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _080682AE ldrb r0, [r4, #0xc] diff --git a/asm/mutoh.s b/asm/mutoh.s index 7d3761f2..3b1c9de5 100644 --- a/asm/mutoh.s +++ b/asm/mutoh.s @@ -32,7 +32,7 @@ _08066FF8: _08066FFE: ldr r1, _0806702C @ =gUnk_08110C00 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _0806707C movs r2, #1 @@ -176,7 +176,7 @@ sub_08067118: @ 0x08067118 bne _08067150 ldr r1, _0806714C @ =gUnk_08110C00 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _08067156 ldrb r0, [r4, #0xc] diff --git a/asm/non_matching/syrup/sub_0806A26C.inc b/asm/non_matching/syrup/sub_0806A26C.inc new file mode 100644 index 00000000..c905a9dc --- /dev/null +++ b/asm/non_matching/syrup/sub_0806A26C.inc @@ -0,0 +1,43 @@ + .include "asm/macros.inc" + + .include "constants/constants.inc" + + .syntax unified + + .text + + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0xf + movs r1, #0x2f + movs r2, #0 + bl CreateObject + adds r4, r0, #0 + cmp r4, #0 + beq _0806A2AE + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA30 + bl Random + adds r5, r0, #0 + ldr r2, _0806A2B0 @ =gUnk_081121DC + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + adds r3, r4, #0 + adds r3, #0x62 + strb r0, [r3] + lsrs r0, r5, #8 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + subs r0, #8 + adds r1, r4, #0 + adds r1, #0x63 + strb r0, [r1] +_0806A2AE: + pop {r4, r5, pc} + .align 2, 0 +_0806A2B0: .4byte gUnk_081121DC + .syntax divided \ No newline at end of file diff --git a/asm/npc58.s b/asm/npc58.s index 454ee62b..87deac68 100644 --- a/asm/npc58.s +++ b/asm/npc58.s @@ -15,7 +15,7 @@ sub_0806EAF4: @ 0x0806EAF4 bne _0806EB48 ldr r1, _0806EBA0 @ =gUnk_081146D0 adds r0, r6, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _0806EBA8 ldrb r0, [r6, #0xc] diff --git a/asm/percy.s b/asm/percy.s index 5bf4bc93..77e89d1f 100644 --- a/asm/percy.s +++ b/asm/percy.s @@ -35,7 +35,7 @@ sub_0806B3CC: @ 0x0806B3CC bne _0806B3F4 ldr r1, _0806B418 @ =gUnk_08112E1C adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _0806B414 movs r0, #1 @@ -84,7 +84,7 @@ _0806B430: _0806B436: ldr r1, _0806B46C @ =gUnk_08112E1C adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _0806B4EC movs r2, #1 @@ -335,7 +335,7 @@ sub_0806B624: @ 0x0806B624 bne _0806B65C ldr r1, _0806B658 @ =gUnk_08112E1C adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _0806B662 ldrb r0, [r4, #0xc] diff --git a/asm/rem.s b/asm/rem.s index 2ac27770..5d410c2d 100644 --- a/asm/rem.s +++ b/asm/rem.s @@ -6,68 +6,6 @@ .text - - thumb_func_start sub_0806A358 -sub_0806A358: @ 0x0806A358 - push {lr} - ldr r2, _0806A36C @ =gUnk_08112260 - ldrb r1, [r0, #0xa] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0806A36C: .4byte gUnk_08112260 - - thumb_func_start sub_0806A370 -sub_0806A370: @ 0x0806A370 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _0806A3D0 @ =gUnk_08112278 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - movs r1, #0 - bl sub_0807DDAC - adds r0, r4, #0 - bl sub_0807DDE4 - adds r0, r4, #0 - bl UpdateAnimationSingleFrame - adds r0, r4, #0 - bl sub_0806ED78 - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - cmp r0, #0xf - bne _0806A3CC - adds r4, #0x5a - ldrb r0, [r4] - cmp r0, #1 - bne _0806A3BC - movs r0, #0 - strb r0, [r4] - movs r0, #0x86 - lsls r0, r0, #2 - bl PlaySFX -_0806A3BC: - ldrb r0, [r4] - cmp r0, #2 - bne _0806A3CC - movs r0, #0 - strb r0, [r4] - ldr r0, _0806A3D4 @ =0x00000219 - bl PlaySFX -_0806A3CC: - pop {r4, pc} - .align 2, 0 -_0806A3D0: .4byte gUnk_08112278 -_0806A3D4: .4byte 0x00000219 - thumb_func_start sub_0806A3D8 sub_0806A3D8: @ 0x0806A3D8 push {r4, lr} diff --git a/asm/sittingPerson.s b/asm/sittingPerson.s index 5436cbbb..37d3ebce 100644 --- a/asm/sittingPerson.s +++ b/asm/sittingPerson.s @@ -31,7 +31,7 @@ sub_08063758: @ 0x08063758 ldr r0, _08063794 @ =gUnk_0810CB78 adds r1, r1, r0 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _080637B4 movs r2, #1 @@ -365,7 +365,7 @@ sub_080639E8: @ 0x080639E8 ldr r0, _08063A3C @ =gUnk_0810CB78 adds r1, r1, r0 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _08063A5C ldrb r0, [r4, #0xc] diff --git a/asm/smith.s b/asm/smith.s index 2a955a16..06e9bd05 100644 --- a/asm/smith.s +++ b/asm/smith.s @@ -159,7 +159,7 @@ sub_080660EC: @ 0x080660EC push {r4, lr} adds r4, r0, #0 ldr r1, _08066114 @ =gUnk_08110354 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _08066112 movs r0, #1 @@ -237,7 +237,7 @@ sub_08066178: @ 0x08066178 push {r4, lr} adds r4, r0, #0 ldr r1, _080661AC @ =gUnk_08110354 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _080661A8 movs r2, #1 @@ -399,7 +399,7 @@ sub_08066298: @ 0x08066298 bne _080662D0 ldr r1, _080662CC @ =gUnk_08110354 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _080662D6 ldrb r0, [r4, #0xc] diff --git a/asm/sturgeon.s b/asm/sturgeon.s index 511884f3..778fd0ec 100644 --- a/asm/sturgeon.s +++ b/asm/sturgeon.s @@ -35,7 +35,7 @@ _08064ABC: bne _08064AE4 ldr r1, _08064AE0 @ =gUnk_0810FA38 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _08064B42 movs r0, #1 @@ -97,7 +97,7 @@ sub_08064B44: @ 0x08064B44 push {r4, lr} adds r4, r0, #0 ldr r1, _08064B80 @ =gUnk_0810FA38 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _08064B7E adds r0, r4, #0 @@ -349,7 +349,7 @@ sub_08064D18: @ 0x08064D18 bne _08064D50 ldr r1, _08064D4C @ =gUnk_0810FA38 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _08064D56 ldrb r0, [r4, #0xc] diff --git a/asm/syrup.s b/asm/syrup.s index d405f903..9f1ca446 100644 --- a/asm/syrup.s +++ b/asm/syrup.s @@ -6,121 +6,6 @@ .text - - thumb_func_start sub_0806A1D8 -sub_0806A1D8: @ 0x0806A1D8 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _0806A1F4 @ =gUnk_081121D4 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl sub_0806ED78 - pop {r4, pc} - .align 2, 0 -_0806A1F4: .4byte gUnk_081121D4 - - thumb_func_start sub_0806A1F8 -sub_0806A1F8: @ 0x0806A1F8 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xa] - ldr r1, _0806A22C @ =gUnk_081121C4 - cmp r0, #0 - bne _0806A206 - ldr r1, _0806A230 @ =gUnk_081121B4 -_0806A206: - adds r0, r4, #0 - bl sub_0806FDEC - cmp r0, #0 - beq _0806A22A - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 - adds r0, r4, #0 - bl sub_0807DD50 - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation -_0806A22A: - pop {r4, pc} - .align 2, 0 -_0806A22C: .4byte gUnk_081121C4 -_0806A230: .4byte gUnk_081121B4 - - thumb_func_start sub_0806A234 -sub_0806A234: @ 0x0806A234 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0 - bl sub_0807DD94 - adds r0, r4, #0 - adds r0, #0x82 - ldrh r1, [r0] - movs r0, #4 - ands r0, r1 - cmp r0, #0 - beq _0806A266 - ldr r0, _0806A268 @ =gUnk_030010A0 - ldr r0, [r0] - movs r1, #7 - ands r0, r1 - cmp r0, #0 - bne _0806A25E - adds r0, r4, #0 - bl sub_0806A26C -_0806A25E: - adds r0, r4, #0 - movs r1, #2 - bl sub_080042BA -_0806A266: - pop {r4, pc} - .align 2, 0 -_0806A268: .4byte gUnk_030010A0 - - thumb_func_start sub_0806A26C -sub_0806A26C: @ 0x0806A26C - push {r4, r5, lr} - adds r5, r0, #0 - movs r0, #0xf - movs r1, #0x2f - movs r2, #0 - bl CreateObject - adds r4, r0, #0 - cmp r4, #0 - beq _0806A2AE - adds r0, r5, #0 - adds r1, r4, #0 - bl sub_0806FA30 - bl Random - adds r5, r0, #0 - ldr r2, _0806A2B0 @ =gUnk_081121DC - movs r1, #7 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - adds r3, r4, #0 - adds r3, #0x62 - strb r0, [r3] - lsrs r0, r5, #8 - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - subs r0, #8 - adds r1, r4, #0 - adds r1, #0x63 - strb r0, [r1] -_0806A2AE: - pop {r4, r5, pc} - .align 2, 0 -_0806A2B0: .4byte gUnk_081121DC - thumb_func_start sub_0806A2B4 sub_0806A2B4: @ 0x0806A2B4 push {r4, r5, r6, lr} diff --git a/asm/teachers.s b/asm/teachers.s index 47f2519e..e9760575 100644 --- a/asm/teachers.s +++ b/asm/teachers.s @@ -29,7 +29,7 @@ _0806C5C2: ldr r0, _0806C600 @ =gUnk_08113910 adds r1, r1, r0 adds r0, r5, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _0806C670 movs r2, #1 @@ -214,7 +214,7 @@ sub_0806C738: @ 0x0806C738 ldr r0, _0806C774 @ =gUnk_08113910 adds r1, r1, r0 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _0806C77E ldrb r0, [r4, #0xc] diff --git a/asm/townMinish.s b/asm/townMinish.s index ccd5f25a..5fbc8ae9 100644 --- a/asm/townMinish.s +++ b/asm/townMinish.s @@ -103,7 +103,7 @@ _0806ACE4: ldr r0, _0806AD24 @ =gUnk_08112674 adds r1, r1, r0 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 bne _0806ACF8 b _0806ADFA @@ -714,7 +714,7 @@ sub_0806B184: @ 0x0806B184 ldr r0, _0806B1C0 @ =gUnk_08112674 adds r1, r1, r0 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _0806B1CA ldrb r0, [r4, #0xc] diff --git a/asm/townsperson.s b/asm/townsperson.s index f3c805ea..a6461932 100644 --- a/asm/townsperson.s +++ b/asm/townsperson.s @@ -49,7 +49,7 @@ sub_08061BC8: @ 0x08061BC8 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _08061BF8 movs r0, #2 @@ -199,7 +199,7 @@ sub_08061CEC: @ 0x08061CEC adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _08061D62 movs r2, #1 @@ -687,7 +687,7 @@ sub_08062088: @ 0x08062088 adds r0, r0, r1 ldr r1, [r0] adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _080620C2 ldrb r0, [r4, #0xc] diff --git a/asm/windTribespeople.s b/asm/windTribespeople.s index 054b7d0d..e6d1b78a 100644 --- a/asm/windTribespeople.s +++ b/asm/windTribespeople.s @@ -29,7 +29,7 @@ sub_0806C798: @ 0x0806C798 ldr r0, _0806C7D0 @ =gUnk_08113A1C adds r1, r1, r0 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _0806C7CE movs r2, #1 @@ -433,7 +433,7 @@ sub_0806CA94: @ 0x0806CA94 ldr r0, _0806CAD0 @ =gUnk_08113A1C adds r1, r1, r0 adds r0, r4, #0 - bl sub_0806FDEC + bl LoadExtraSpriteData cmp r0, #0 beq _0806CADA ldrb r0, [r4, #0xc] diff --git a/include/functions.h b/include/functions.h index f1ecae39..bf269c1f 100644 --- a/include/functions.h +++ b/include/functions.h @@ -12,17 +12,19 @@ extern void UpdateSpriteOrderAndFlip(Entity*); extern void InitAnimationForceUpdate(Entity*, u32); extern void ShowNPCDialogue(Entity*, u32*); extern u32 UpdateFuseInteraction(); -extern void CopyPosition(Entity*, Entity*); -extern void PositionRelative(Entity*, Entity*, u32, u32); extern void InitializeAnimation(Entity*, u32); extern void DeleteEntity(Entity*); extern u32 __modsi3(u32, u32); extern void DoFade(u32, u32); extern void UpdateAnimationSingleFrame(Entity*); extern u32 GetInventoryValue(u32); -extern void TextboxNoOverlapFollow(u32 index); extern Entity* CreateFx(Entity*, u32, u32); extern u32 CheckKinstoneFused(u32); +extern void ForceEquipItem(u8, u8); +extern void LoadRoomEntityList(); +void ModHealth(s32); +void PositionRelative(Entity*, Entity*, u32, u32); +void CopyPosition(Entity*, Entity*); // Unidentified extern void sub_0806ED78(Entity*); @@ -56,7 +58,7 @@ extern void sub_0807DD50(Entity*); extern void sub_0807DD94(Entity*, u32); extern Entity* sub_0805EB00(u32, u32, u32); extern Entity* sub_0805EB2C(u32, u32, u32, u32, u32); -extern u32 sub_0806FDEC(Entity*, u32*); +extern u32 LoadExtraSpriteData(Entity*, u32*); extern s32 sub_0806ED9C(Entity*, u32, u32); extern s32* sub_0807DAD0(Entity*, u8*); extern void sub_0806FF60(Entity*, u32, u32); @@ -65,4 +67,20 @@ extern void sub_0807000C(Entity*); extern void sub_0805E47C(Entity*); extern void sub_0805E584(Entity*); extern void sub_0806FAB0(Entity*, Entity*); +extern void sub_0806ED78(Entity*); +extern void sub_08068BEC(Entity*, u32); +extern void sub_08078778(Entity*); +extern s32 sub_0806ED9C(Entity*, u32, u32); +extern s32 sub_0806F078(Entity*, s32); +extern void sub_08004274(Entity*); +extern void sub_0801D2B4(Entity*, u32); +extern void sub_0806FD3C(Entity*); +extern u32 sub_0801E99C(Entity*); +extern void sub_0807DD50(Entity*); +extern u32 sub_080045C4(Entity*, Entity*); +extern void sub_0806F118(Entity*); +extern void sub_0807DD94(Entity*, u32); +extern void sub_0805ED14(u32*); +extern void sub_080A7C18(u32, u32, u32); +extern void sub_08068BEC(Entity*, u32); #endif diff --git a/include/npc.h b/include/npc.h index 0dbd696c..4ba6ea86 100644 --- a/include/npc.h +++ b/include/npc.h @@ -8,6 +8,6 @@ typedef struct { u16 palette; u8 animIndex; u8 unk; -} SpriteLoadThing; +} SpriteLoadData; #endif \ No newline at end of file diff --git a/include/textbox.h b/include/textbox.h index a15867b6..82d7e818 100644 --- a/include/textbox.h +++ b/include/textbox.h @@ -20,4 +20,5 @@ extern TextBox gTextBox; void TextboxNoOverlap(u32 index, Entity* ent); +void extern TextboxNoOverlapFollow(u32 index); #endif \ No newline at end of file diff --git a/linker.ld b/linker.ld index d6a4b66c..a8e261b3 100644 --- a/linker.ld +++ b/linker.ld @@ -516,7 +516,9 @@ SECTIONS { asm/goronMerchant.o(.text); asm/gorman.o(.text); asm/dog.o(.text); + src/syrup.o(.text); asm/syrup.o(.text); + src/rem.o(.text); asm/rem.o(.text); src/townMinish.o(.text); asm/townMinish.o(.text); diff --git a/src/bladeBrothers.c b/src/bladeBrothers.c index 4358c488..6ae0fede 100644 --- a/src/bladeBrothers.c +++ b/src/bladeBrothers.c @@ -1,7 +1,11 @@ #include "global.h" #include "entity.h" +#include "functions.h" +#include "flags.h" #include "link.h" #include "room.h" +#include "textbox.h" + typedef struct { /*0x00*/ u8 filler[0x2C]; /*0x2C*/ u8 unk; @@ -12,39 +16,6 @@ typedef struct { Stats stats; } struct_02002A40; -extern void sub_0806ED78(Entity*); -extern void sub_08068BEC(Entity*, u32); -extern void sub_08078778(Entity*); -extern void InitializeAnimation(Entity*, u32); -extern s32 sub_0806ED9C(Entity*, u32, u32); -extern s32 sub_0806F078(Entity*, s32); -extern void sub_08004274(Entity*); -extern void TextboxNoOverlapFollow(u32); -extern void sub_0801D2B4(Entity*, u32); -extern void sub_0806FD3C(Entity*); -extern u32 sub_0801E99C(Entity*); -extern void sub_08078784(Entity*, u8); -extern void sub_0807DD50(Entity*); -extern void sub_080045C4(Entity*, Entity*); -extern u32 sub_0806F5A4(void); -extern void InitAnimationForceUpdate(Entity*, u32); -extern void sub_0806F118(Entity*); -extern void sub_0807DD94(Entity*, u32); -extern u32 UpdateFuseInteraction(); -extern void ForceEquipItem(u8, u8); -extern void sub_0805ED14(u32*); -extern Entity* CreateFx(Entity*, u32, u32); -extern void PositionRelative(Entity*, Entity*, u32, u32); -extern void PlaySFX(u32); -extern u32 GetInventoryValue(u32); -extern void sub_080A7C18(u32, u32, u32); -extern u32 CheckLocalFlag(u32); -extern void TextboxNoOverlap(u32, Entity*); -extern void LoadRoomEntityList(); -extern void ModHealth(s32); -extern void InitAnimationForceUpdate(Entity*, u32); -extern void UpdateAnimationSingleFrame(Entity*); -extern void sub_08068BEC(Entity*, u32); extern void (*gUnk_081115C0[])(Entity*); extern void (*gUnk_081115D0[])(Entity*); @@ -164,8 +135,7 @@ void FUN_08068b2c(Entity* this) { if (this->interactType == '\x02') { this->action = 2; this->interactType = '\0'; - sub_080045C4(this, &gLinkEntity); - uVar1 = sub_0806F5A4(); + uVar1 = sub_0806F5A4(sub_080045C4(this, &gLinkEntity)); InitAnimationForceUpdate(this, uVar1); sub_0806F118(this); } else { @@ -347,18 +317,22 @@ switchD_08068d12_caseD_0: *(u32*)¶m_2->animationState = 1; } +//Introduction dialoague void sub_08068DB8(Entity* this) { TextboxNoOverlap(gUnk_08111664[this->parameter3], this); } +//Ask to teach dialoague void sub_08068DD0(Entity* this) { TextboxNoOverlap(gUnk_0811167A[this->parameter3], this); } +//Technique Dialogue void sub_08068DE8(Entity* this) { TextboxNoOverlap(gUnk_08111690[this->parameter3], this); } +//Posession dialogue void sub_08068E00(Entity* this) { TextboxNoOverlap(gUnk_081116A6[this->parameter3], this); } diff --git a/src/bladeTrap.c b/src/bladeTrap.c index e04081a5..51bbc053 100644 --- a/src/bladeTrap.c +++ b/src/bladeTrap.c @@ -1,7 +1,6 @@ #include "global.h" #include "entity.h" #include "room.h" - extern void sub_080A2CC0(); extern void sub_0806F69C(); extern void sub_08004488(); @@ -20,7 +19,7 @@ void BladeTrap(Entity* ent) { if ((ent->direction & 0x80) == 0) { sub_0806F69C(ent); } - (u32) puVar3 = &(ent->heldObjectPtr); + puVar3 = (u16*)&(ent->heldObjectPtr); uVar1 = *puVar3; *puVar3 = uVar1 - 1; if ((u16)(*puVar3) == 0) { diff --git a/src/rem.c b/src/rem.c new file mode 100644 index 00000000..6602e399 --- /dev/null +++ b/src/rem.c @@ -0,0 +1,37 @@ +#include "global.h" +#include "functions.h" +#include "entity.h" + +extern void sub_0807DDAC(Entity*, u32); +extern void sub_0807DDE4(Entity*); +extern void UpdateAnimationSingleFrame(Entity*); +extern void sub_0806ED78(Entity*); +extern void PlaySFX(u32); + +extern void (*gUnk_08112260[])(Entity*); +extern void (*gUnk_08112278[])(Entity*); + +void sub_0806A358(Entity* this) { + gUnk_08112260[this->entityType.parameter1](this); +} + +void sub_0806a370(Entity* this) { + u8* pbVar1; + + gUnk_08112278[this->action](this); + sub_0807DDAC(this, 0); + sub_0807DDE4(this); + UpdateAnimationSingleFrame(this); + sub_0806ED78(this); + if (this->field_0x58 == 0xf) { + pbVar1 = &this->frames.all; + if (*pbVar1 == 1) { + *pbVar1 = 0; + PlaySFX(0x218); + } + if (*pbVar1 == 2) { + *pbVar1 = 0; + PlaySFX(0x219); + } + } +} \ No newline at end of file diff --git a/src/syrup.c b/src/syrup.c new file mode 100644 index 00000000..929b6015 --- /dev/null +++ b/src/syrup.c @@ -0,0 +1,77 @@ +#include "global.h" +#include "entity.h" +#include "npc.h" + + +extern void sub_0807DD50(Entity*); +extern Entity* LoadExtraSpriteData(Entity*, SpriteLoadData*); +extern void sub_0806ED78(Entity*); +extern void sub_0805E3A0(Entity*, u32); +extern void InitializeAnimation(Entity*, u32); + +extern void (*gUnk_081121D4[])(Entity*); + +extern SpriteLoadData gUnk_081121C4; +extern SpriteLoadData gUnk_081121B4; +extern u32 gUnk_030010A0; +extern void sub_0807DD94(Entity*, u32); +extern void sub_0806A26C(Entity*); +extern void sub_080042BA(Entity*, u32); + +void Syrup(Entity *this) +{ + gUnk_081121D4[this->action](this); + sub_0806ED78(this); +} + +void sub_0806A1F8(Entity *this) +{ + Entity *iVar1; + SpriteLoadData *paVar2; + + (this->entityType).parameter1 == 0 ? (paVar2 = &gUnk_081121B4) : (paVar2 = &gUnk_081121C4); + + iVar1 = LoadExtraSpriteData(this,paVar2); + if (iVar1) { + this->action = 1; + sub_0805E3A0(this,2); + sub_0807DD50(this); + InitializeAnimation(this,0); + } +} + +void sub_0806A234(Entity *this) +{ + sub_0807DD94(this, 0); + if ((this->field_0x82 & 4) != 0) { + if ((gUnk_030010A0 & 7) == 0) { + sub_0806A26C(this); + } + sub_080042BA(this, 2); + } +} + +#ifdef NON_MATCHING +void sub_0806A26C(Entity *this) +{ + u8 unk; + u32 uVar2; + Entity *pEVar1; + pEVar1 = CreateObject(0xf,0x2f,0); + if (pEVar1 != NULL) { + sub_0806FA30(this, pEVar1); + if (uVar2 = Random(), uVar2) + { + unk = -unk; // wtf?! + } + pEVar1->spriteOffsetX = gUnk_081121DC[uVar2 & 7]; + pEVar1->spriteOffsetY = gUnk_081121DC[(uVar2 / 256) & 7] - 8; + } +} +#else +NAKED +void sub_0806A26C(Entity *this) +{ + asm(".include \"asm/non_matching/syrup/sub_0806A26C.inc\""); +} +#endif \ No newline at end of file diff --git a/src/talon.c b/src/talon.c index 2262d66d..401c7dd3 100644 --- a/src/talon.c +++ b/src/talon.c @@ -23,7 +23,7 @@ void sub_08065534(Entity* this) { } void sub_08065570(Entity* this) { - if (sub_0806FDEC(this, &gUnk_0810FEB0) != 0) { + if (LoadExtraSpriteData(this, &gUnk_0810FEB0) != 0) { InitializeAnimation(this, 0); sub_08078778(this); this->action = 1; @@ -63,7 +63,7 @@ void sub_0806559C(Entity* this) { } void sub_08065608(Entity* this) { - if (sub_0806FDEC(this, &gUnk_0810FEB0) != 0) { + if (LoadExtraSpriteData(this, &gUnk_0810FEB0) != 0) { this->action = 1; this->spriteSettings.b.ss0 = 1; this->field_0x68 = sub_0801E99C(this); @@ -152,7 +152,7 @@ void sub_080657A8(Entity* this) { void sub_080657DC(Entity* this) { if (this->action == 0) { - if (sub_0806FDEC(this, &gUnk_0810FEB0) != 0) { + if (LoadExtraSpriteData(this, &gUnk_0810FEB0) != 0) { this->action++; this->spriteSettings.b.ss0 = 1; InitializeAnimation(this, 6); diff --git a/src/townMinish.c b/src/townMinish.c index 14a87904..14f0ce8e 100644 --- a/src/townMinish.c +++ b/src/townMinish.c @@ -9,8 +9,8 @@ extern void sub_0806ED78(Entity *); extern void (*gUnk_081126E8[])(); extern void sub_0806ACC4(Entity *); -extern u32 sub_0806FDEC(Entity *, SpriteLoadThing *); -extern SpriteLoadThing gUnk_08112674[]; +extern u32 LoadExtraSpriteData(Entity *, SpriteLoadData *); +extern SpriteLoadData gUnk_08112674[]; void sub_0806ABC8(Entity *this) { @@ -27,8 +27,8 @@ void sub_0806ABFC(Entity *this) { u8 animationState; - SpriteLoadThing* spriteLoadThing = &gUnk_08112674[this->entityType.parameter1 << 2]; - if (!sub_0806FDEC(this, spriteLoadThing)) + SpriteLoadData* SpriteLoadData = &gUnk_08112674[this->entityType.parameter1 << 2]; + if (!LoadExtraSpriteData(this, SpriteLoadData)) { return; }