From 8703f1315e5f03831fee964a6d39dc00bc1c76b1 Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Wed, 2 Dec 2020 19:38:32 -0800 Subject: [PATCH] d_a_horse_static (#12) * d_a_item_static ok * d_a_horse_static ok * typo Co-authored-by: Pheenoh --- asm/d/a/d_a_alink.s | 24 ++-- asm/d/a/horse/d_a_horse_static.s | 121 ------------------ .../d_a/d_a_horse_static/asm/func_80037C7C.s | 5 + .../d_a/d_a_horse_static/asm/func_80037CB0.s | 17 +++ .../d_a/d_a_horse_static/asm/func_80037CF4.s | 32 +++++ .../d/d_a/d_a_horse_static/d_a_horse_static.h | 21 +++ include/functions.h | 6 + obj_files.mk | 2 +- src/d/d_a/d_a_horse_static.cpp | 94 +++++++++++++- 9 files changed, 187 insertions(+), 135 deletions(-) delete mode 100644 asm/d/a/horse/d_a_horse_static.s create mode 100644 include/d/d_a/d_a_horse_static/asm/func_80037C7C.s create mode 100644 include/d/d_a/d_a_horse_static/asm/func_80037CB0.s create mode 100644 include/d/d_a/d_a_horse_static/asm/func_80037CF4.s create mode 100644 include/d/d_a/d_a_horse_static/d_a_horse_static.h diff --git a/asm/d/a/d_a_alink.s b/asm/d/a/d_a_alink.s index 2793ec84e42..b32fe8e55db 100644 --- a/asm/d/a/d_a_alink.s +++ b/asm/d/a/d_a_alink.s @@ -90103,7 +90103,7 @@ lbl_800ECAE4: /* 800ECB2C 000E9A6C 38 03 55 A4 */ addi r0, r3, lbl_804255A4@l /* 800ECB30 000E9A70 90 1E 38 4C */ stw r0, 0x384c(r30) /* 800ECB34 000E9A74 7F E3 FB 78 */ mr r3, r31 -/* 800ECB38 000E9A78 4B F4 B1 79 */ bl e_wb_class_NS_setPlayerRide +/* 800ECB38 000E9A78 4B F4 B1 79 */ bl setPlayerRide__10e_wb_classFv /* 800ECB3C 000E9A7C 38 60 00 01 */ li r3, 1 lbl_800ECB40: /* 800ECB40 000E9A80 83 E1 00 0C */ lwz r31, 0xc(r1) @@ -90183,7 +90183,7 @@ lbl_800ECC2C: /* 800ECC48 000E9B88 80 7F 28 18 */ lwz r3, 0x2818(r31) /* 800ECC4C 000E9B8C 28 03 00 00 */ cmplwi r3, 0 /* 800ECC50 000E9B90 41 82 00 D4 */ beq lbl_800ECD24 -/* 800ECC54 000E9B94 4B F4 B0 A1 */ bl e_wb_class_NS_getOff +/* 800ECC54 000E9B94 4B F4 B0 A1 */ bl getOff__10e_wb_classFv /* 800ECC58 000E9B98 48 00 00 CC */ b lbl_800ECD24 lbl_800ECC5C: /* 800ECC5C 000E9B9C 7F E3 FB 78 */ mr r3, r31 @@ -90802,7 +90802,7 @@ daAlink_c_NS_changeBoarRunRide: /* 800ED4BC 000EA3FC 7C 08 02 A6 */ mflr r0 /* 800ED4C0 000EA400 90 01 00 14 */ stw r0, 0x14(r1) /* 800ED4C4 000EA404 80 63 28 18 */ lwz r3, 0x2818(r3) -/* 800ED4C8 000EA408 4B F4 A8 F5 */ bl e_wb_class_NS_setRunRideMode +/* 800ED4C8 000EA408 4B F4 A8 F5 */ bl setRunRideMode__10e_wb_classFv /* 800ED4CC 000EA40C 80 01 00 14 */ lwz r0, 0x14(r1) /* 800ED4D0 000EA410 7C 08 03 A6 */ mtlr r0 /* 800ED4D4 000EA414 38 21 00 10 */ addi r1, r1, 0x10 @@ -91048,7 +91048,7 @@ lbl_800ED818: /* 800ED82C 000EA76C 28 1E 00 00 */ cmplwi r30, 0 /* 800ED830 000EA770 41 82 00 14 */ beq lbl_800ED844 /* 800ED834 000EA774 7F C3 F3 78 */ mr r3, r30 -/* 800ED838 000EA778 4B F4 A5 31 */ bl e_wb_class_NS_checkDownDamage +/* 800ED838 000EA778 4B F4 A5 31 */ bl checkDownDamage__10e_wb_classFv /* 800ED83C 000EA77C 2C 03 00 00 */ cmpwi r3, 0 /* 800ED840 000EA780 41 82 00 14 */ beq lbl_800ED854 lbl_800ED844: @@ -91058,7 +91058,7 @@ lbl_800ED844: /* 800ED850 000EA790 48 00 00 A4 */ b lbl_800ED8F4 lbl_800ED854: /* 800ED854 000EA794 7F C3 F3 78 */ mr r3, r30 -/* 800ED858 000EA798 4B F4 A5 3D */ bl e_wb_class_NS_checkNormalRideMode +/* 800ED858 000EA798 4B F4 A5 3D */ bl checkNormalRideMode__10e_wb_classCFv /* 800ED85C 000EA79C 2C 03 00 00 */ cmpwi r3, 0 /* 800ED860 000EA7A0 40 82 00 20 */ bne lbl_800ED880 /* 800ED864 000EA7A4 A0 1F 2F E8 */ lhz r0, 0x2fe8(r31) @@ -91118,7 +91118,7 @@ daAlink_c_NS_setSyncBoarRunPos: /* 800ED928 000EA868 28 1F 00 00 */ cmplwi r31, 0 /* 800ED92C 000EA86C 41 82 00 14 */ beq lbl_800ED940 /* 800ED930 000EA870 7F E3 FB 78 */ mr r3, r31 -/* 800ED934 000EA874 4B F4 A4 35 */ bl e_wb_class_NS_checkDownDamage +/* 800ED934 000EA874 4B F4 A4 35 */ bl checkDownDamage__10e_wb_classFv /* 800ED938 000EA878 2C 03 00 00 */ cmpwi r3, 0 /* 800ED93C 000EA87C 41 82 00 14 */ beq lbl_800ED950 lbl_800ED940: @@ -91128,7 +91128,7 @@ lbl_800ED940: /* 800ED94C 000EA88C 48 00 00 C0 */ b lbl_800EDA0C lbl_800ED950: /* 800ED950 000EA890 7F E3 FB 78 */ mr r3, r31 -/* 800ED954 000EA894 4B F4 A4 41 */ bl e_wb_class_NS_checkNormalRideMode +/* 800ED954 000EA894 4B F4 A4 41 */ bl checkNormalRideMode__10e_wb_classCFv /* 800ED958 000EA898 2C 03 00 00 */ cmpwi r3, 0 /* 800ED95C 000EA89C 41 82 00 14 */ beq lbl_800ED970 /* 800ED960 000EA8A0 7F C3 F3 78 */ mr r3, r30 @@ -92092,7 +92092,7 @@ lbl_800EE688: /* 800EE6B0 000EB5F0 FC 01 00 40 */ fcmpo cr0, f1, f0 /* 800EE6B4 000EB5F4 40 81 00 6C */ ble lbl_800EE720 /* 800EE6B8 000EB5F8 7F E3 FB 78 */ mr r3, r31 -/* 800EE6BC 000EB5FC 4B F4 95 C1 */ bl e_wb_class_NS_checkWait +/* 800EE6BC 000EB5FC 4B F4 95 C1 */ bl checkWait__10e_wb_classFv /* 800EE6C0 000EB600 2C 03 00 00 */ cmpwi r3, 0 /* 800EE6C4 000EB604 41 82 00 5C */ beq lbl_800EE720 /* 800EE6C8 000EB608 A0 1E 2F E8 */ lhz r0, 0x2fe8(r30) @@ -93494,7 +93494,7 @@ lbl_800EF9B8: /* 800EFA14 000EC954 48 00 00 3C */ b lbl_800EFA50 lbl_800EFA18: /* 800EFA18 000EC958 7F C3 F3 78 */ mr r3, r30 -/* 800EFA1C 000EC95C 4B F4 82 75 */ bl e_wb_class_NS_setPlayerRideNow +/* 800EFA1C 000EC95C 4B F4 82 75 */ bl setPlayerRideNow__10e_wb_classFv /* 800EFA20 000EC960 80 7E 05 E0 */ lwz r3, 0x5e0(r30) /* 800EFA24 000EC964 80 63 00 04 */ lwz r3, 4(r3) /* 800EFA28 000EC968 80 63 00 84 */ lwz r3, 0x84(r3) @@ -94029,7 +94029,7 @@ lbl_800F017C: /* 800F0200 000ED140 48 00 00 40 */ b lbl_800F0240 lbl_800F0204: /* 800F0204 000ED144 7F C3 F3 78 */ mr r3, r30 -/* 800F0208 000ED148 4B F4 7A A9 */ bl e_wb_class_NS_setPlayerRide +/* 800F0208 000ED148 4B F4 7A A9 */ bl setPlayerRide__10e_wb_classFv /* 800F020C 000ED14C C0 3F 00 14 */ lfs f1, 0x14(r31) /* 800F0210 000ED150 3C 60 80 42 */ lis r3, lbl_804255A4@ha /* 800F0214 000ED154 C4 03 55 A4 */ lfsu f0, lbl_804255A4@l(r3) @@ -94170,7 +94170,7 @@ lbl_800F03D8: /* 800F0408 000ED348 48 00 00 0C */ b lbl_800F0414 lbl_800F040C: /* 800F040C 000ED34C 7F E3 FB 78 */ mr r3, r31 -/* 800F0410 000ED350 4B F4 78 81 */ bl e_wb_class_NS_setPlayerRideNow +/* 800F0410 000ED350 4B F4 78 81 */ bl setPlayerRideNow__10e_wb_classFv lbl_800F0414: /* 800F0414 000ED354 C0 1F 04 D0 */ lfs f0, 0x4d0(r31) /* 800F0418 000ED358 D0 1E 37 D4 */ stfs f0, 0x37d4(r30) @@ -137654,7 +137654,7 @@ lbl_80116D5C: /* 80116D94 00113CD4 48 00 00 0C */ b lbl_80116DA0 lbl_80116D98: /* 80116D98 00113CD8 7F C3 F3 78 */ mr r3, r30 -/* 80116D9C 00113CDC 4B F2 0F 15 */ bl e_wb_class_NS_setPlayerRide +/* 80116D9C 00113CDC 4B F2 0F 15 */ bl setPlayerRide__10e_wb_classFv lbl_80116DA0: /* 80116DA0 00113CE0 7F A3 EB 78 */ mr r3, r29 /* 80116DA4 00113CE4 4B FD 86 AD */ bl daAlink_c_NS_checkNextActionHorse diff --git a/asm/d/a/horse/d_a_horse_static.s b/asm/d/a/horse/d_a_horse_static.s deleted file mode 100644 index fb5e42151b9..00000000000 --- a/asm/d/a/horse/d_a_horse_static.s +++ /dev/null @@ -1,121 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80037c7c - - -.global e_wb_class_NS_checkWait -e_wb_class_NS_checkWait: -/* 80037C7C 00034BBC A8 03 05 B4 */ lha r0, 0x5b4(r3) -/* 80037C80 00034BC0 20 00 00 2A */ subfic r0, r0, 0x2a -/* 80037C84 00034BC4 7C 00 00 34 */ cntlzw r0, r0 -/* 80037C88 00034BC8 54 03 DE 3E */ rlwinm r3, r0, 0x1b, 0x18, 0x1f -/* 80037C8C 00034BCC 4E 80 00 20 */ blr - -.global e_wb_class_NS_setPlayerRideNow -e_wb_class_NS_setPlayerRideNow: -/* 80037C90 00034BD0 38 00 00 67 */ li r0, 0x67 -/* 80037C94 00034BD4 B0 03 06 90 */ sth r0, 0x690(r3) -/* 80037C98 00034BD8 38 00 00 00 */ li r0, 0 -/* 80037C9C 00034BDC B0 03 05 B4 */ sth r0, 0x5b4(r3) -/* 80037CA0 00034BE0 A0 03 06 BE */ lhz r0, 0x6be(r3) -/* 80037CA4 00034BE4 60 00 00 03 */ ori r0, r0, 3 -/* 80037CA8 00034BE8 B0 03 06 BE */ sth r0, 0x6be(r3) -/* 80037CAC 00034BEC 4E 80 00 20 */ blr - -.global e_wb_class_NS_setPlayerRide -e_wb_class_NS_setPlayerRide: -/* 80037CB0 00034BF0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80037CB4 00034BF4 7C 08 02 A6 */ mflr r0 -/* 80037CB8 00034BF8 90 01 00 14 */ stw r0, 0x14(r1) -/* 80037CBC 00034BFC 38 00 00 65 */ li r0, 0x65 -/* 80037CC0 00034C00 B0 03 06 90 */ sth r0, 0x690(r3) -/* 80037CC4 00034C04 38 00 00 00 */ li r0, 0 -/* 80037CC8 00034C08 B0 03 05 B4 */ sth r0, 0x5b4(r3) -/* 80037CCC 00034C0C A0 03 06 BE */ lhz r0, 0x6be(r3) -/* 80037CD0 00034C10 60 00 00 03 */ ori r0, r0, 3 -/* 80037CD4 00034C14 B0 03 06 BE */ sth r0, 0x6be(r3) -/* 80037CD8 00034C18 38 80 00 01 */ li r4, 1 -/* 80037CDC 00034C1C 38 63 05 EC */ addi r3, r3, 0x5ec -/* 80037CE0 00034C20 48 28 D5 4D */ bl Z2CreatureRide_NS_setLinkRiding -/* 80037CE4 00034C24 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80037CE8 00034C28 7C 08 03 A6 */ mtlr r0 -/* 80037CEC 00034C2C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80037CF0 00034C30 4E 80 00 20 */ blr - -.global e_wb_class_NS_getOff -e_wb_class_NS_getOff: -/* 80037CF4 00034C34 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80037CF8 00034C38 7C 08 02 A6 */ mflr r0 -/* 80037CFC 00034C3C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80037D00 00034C40 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80037D04 00034C44 7C 7F 1B 78 */ mr r31, r3 -/* 80037D08 00034C48 48 00 00 61 */ bl e_wb_class_NS_checkDownDamage -/* 80037D0C 00034C4C 2C 03 00 00 */ cmpwi r3, 0 -/* 80037D10 00034C50 41 82 00 10 */ beq lbl_80037D20 -/* 80037D14 00034C54 A8 1F 06 90 */ lha r0, 0x690(r31) -/* 80037D18 00034C58 2C 00 00 67 */ cmpwi r0, 0x67 -/* 80037D1C 00034C5C 40 82 00 10 */ bne lbl_80037D2C -lbl_80037D20: -/* 80037D20 00034C60 38 00 00 00 */ li r0, 0 -/* 80037D24 00034C64 B0 1F 06 90 */ sth r0, 0x690(r31) -/* 80037D28 00034C68 48 00 00 0C */ b lbl_80037D34 -lbl_80037D2C: -/* 80037D2C 00034C6C 38 00 00 00 */ li r0, 0 -/* 80037D30 00034C70 B0 1F 06 92 */ sth r0, 0x692(r31) -lbl_80037D34: -/* 80037D34 00034C74 38 00 00 00 */ li r0, 0 -/* 80037D38 00034C78 B0 1F 05 B4 */ sth r0, 0x5b4(r31) -/* 80037D3C 00034C7C A0 1F 06 BE */ lhz r0, 0x6be(r31) -/* 80037D40 00034C80 54 00 04 3A */ rlwinm r0, r0, 0, 0x10, 0x1d -/* 80037D44 00034C84 B0 1F 06 BE */ sth r0, 0x6be(r31) -/* 80037D48 00034C88 38 7F 05 EC */ addi r3, r31, 0x5ec -/* 80037D4C 00034C8C 38 80 00 00 */ li r4, 0 -/* 80037D50 00034C90 48 28 D4 DD */ bl Z2CreatureRide_NS_setLinkRiding -/* 80037D54 00034C94 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80037D58 00034C98 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80037D5C 00034C9C 7C 08 03 A6 */ mtlr r0 -/* 80037D60 00034CA0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80037D64 00034CA4 4E 80 00 20 */ blr - -.global e_wb_class_NS_checkDownDamage -e_wb_class_NS_checkDownDamage: -/* 80037D68 00034CA8 38 00 00 00 */ li r0, 0 -/* 80037D6C 00034CAC A8 63 06 90 */ lha r3, 0x690(r3) -/* 80037D70 00034CB0 2C 03 00 65 */ cmpwi r3, 0x65 -/* 80037D74 00034CB4 41 82 00 18 */ beq lbl_80037D8C -/* 80037D78 00034CB8 2C 03 00 66 */ cmpwi r3, 0x66 -/* 80037D7C 00034CBC 41 82 00 10 */ beq lbl_80037D8C -/* 80037D80 00034CC0 2C 03 00 15 */ cmpwi r3, 0x15 -/* 80037D84 00034CC4 41 82 00 08 */ beq lbl_80037D8C -/* 80037D88 00034CC8 38 00 00 01 */ li r0, 1 -lbl_80037D8C: -/* 80037D8C 00034CCC 54 03 06 3E */ clrlwi r3, r0, 0x18 -/* 80037D90 00034CD0 4E 80 00 20 */ blr - -.global e_wb_class_NS_checkNormalRideMode -e_wb_class_NS_checkNormalRideMode: -/* 80037D94 00034CD4 38 80 00 00 */ li r4, 0 -/* 80037D98 00034CD8 A8 03 06 90 */ lha r0, 0x690(r3) -/* 80037D9C 00034CDC 2C 00 00 66 */ cmpwi r0, 0x66 -/* 80037DA0 00034CE0 40 82 00 10 */ bne lbl_80037DB0 -/* 80037DA4 00034CE4 A8 03 05 B4 */ lha r0, 0x5b4(r3) -/* 80037DA8 00034CE8 2C 00 00 01 */ cmpwi r0, 1 -/* 80037DAC 00034CEC 40 80 00 08 */ bge lbl_80037DB4 -lbl_80037DB0: -/* 80037DB0 00034CF0 38 80 00 01 */ li r4, 1 -lbl_80037DB4: -/* 80037DB4 00034CF4 54 83 06 3E */ clrlwi r3, r4, 0x18 -/* 80037DB8 00034CF8 4E 80 00 20 */ blr - -.global e_wb_class_NS_setRunRideMode -e_wb_class_NS_setRunRideMode: -/* 80037DBC 00034CFC A8 03 06 90 */ lha r0, 0x690(r3) -/* 80037DC0 00034D00 2C 00 00 65 */ cmpwi r0, 0x65 -/* 80037DC4 00034D04 4C 82 00 20 */ bnelr -/* 80037DC8 00034D08 38 00 00 00 */ li r0, 0 -/* 80037DCC 00034D0C B0 03 05 B4 */ sth r0, 0x5b4(r3) -/* 80037DD0 00034D10 38 00 00 15 */ li r0, 0x15 -/* 80037DD4 00034D14 B0 03 06 90 */ sth r0, 0x690(r3) -/* 80037DD8 00034D18 38 00 00 65 */ li r0, 0x65 -/* 80037DDC 00034D1C B0 03 06 92 */ sth r0, 0x692(r3) -/* 80037DE0 00034D20 4E 80 00 20 */ blr diff --git a/include/d/d_a/d_a_horse_static/asm/func_80037C7C.s b/include/d/d_a/d_a_horse_static/asm/func_80037C7C.s new file mode 100644 index 00000000000..e5eb9cb2f61 --- /dev/null +++ b/include/d/d_a/d_a_horse_static/asm/func_80037C7C.s @@ -0,0 +1,5 @@ +/* 80037C7C 00034BBC A8 03 05 B4 */ lha r0, 0x5b4(r3) +/* 80037C80 00034BC0 20 00 00 2A */ subfic r0, r0, 0x2a +/* 80037C84 00034BC4 7C 00 00 34 */ cntlzw r0, r0 +/* 80037C88 00034BC8 54 03 DE 3E */ rlwinm r3, r0, 0x1b, 0x18, 0x1f +/* 80037C8C 00034BCC 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/d/d_a/d_a_horse_static/asm/func_80037CB0.s b/include/d/d_a/d_a_horse_static/asm/func_80037CB0.s new file mode 100644 index 00000000000..f6a57a8a712 --- /dev/null +++ b/include/d/d_a/d_a_horse_static/asm/func_80037CB0.s @@ -0,0 +1,17 @@ +/* 80037CB0 00034BF0 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 80037CB4 00034BF4 7C 08 02 A6 */ mflr r0 +/* 80037CB8 00034BF8 90 01 00 14 */ stw r0, 0x14(r1) +/* 80037CBC 00034BFC 38 00 00 65 */ li r0, 0x65 +/* 80037CC0 00034C00 B0 03 06 90 */ sth r0, 0x690(r3) +/* 80037CC4 00034C04 38 00 00 00 */ li r0, 0 +/* 80037CC8 00034C08 B0 03 05 B4 */ sth r0, 0x5b4(r3) +/* 80037CCC 00034C0C A0 03 06 BE */ lhz r0, 0x6be(r3) +/* 80037CD0 00034C10 60 00 00 03 */ ori r0, r0, 3 +/* 80037CD4 00034C14 B0 03 06 BE */ sth r0, 0x6be(r3) +/* 80037CD8 00034C18 38 80 00 01 */ li r4, 1 +/* 80037CDC 00034C1C 38 63 05 EC */ addi r3, r3, 0x5ec +/* 80037CE0 00034C20 48 28 D5 4D */ bl Z2CreatureRide_NS_setLinkRiding +/* 80037CE4 00034C24 80 01 00 14 */ lwz r0, 0x14(r1) +/* 80037CE8 00034C28 7C 08 03 A6 */ mtlr r0 +/* 80037CEC 00034C2C 38 21 00 10 */ addi r1, r1, 0x10 +/* 80037CF0 00034C30 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/d/d_a/d_a_horse_static/asm/func_80037CF4.s b/include/d/d_a/d_a_horse_static/asm/func_80037CF4.s new file mode 100644 index 00000000000..00da373f98c --- /dev/null +++ b/include/d/d_a/d_a_horse_static/asm/func_80037CF4.s @@ -0,0 +1,32 @@ +/* 80037CF4 00034C34 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 80037CF8 00034C38 7C 08 02 A6 */ mflr r0 +/* 80037CFC 00034C3C 90 01 00 14 */ stw r0, 0x14(r1) +/* 80037D00 00034C40 93 E1 00 0C */ stw r31, 0xc(r1) +/* 80037D04 00034C44 7C 7F 1B 78 */ mr r31, r3 +/* 80037D08 00034C48 48 00 00 61 */ bl checkDownDamage__10e_wb_classFv +/* 80037D0C 00034C4C 2C 03 00 00 */ cmpwi r3, 0 +/* 80037D10 00034C50 41 82 00 10 */ beq lbl_80037D20 +/* 80037D14 00034C54 A8 1F 06 90 */ lha r0, 0x690(r31) +/* 80037D18 00034C58 2C 00 00 67 */ cmpwi r0, 0x67 +/* 80037D1C 00034C5C 40 82 00 10 */ bne lbl_80037D2C +lbl_80037D20: +/* 80037D20 00034C60 38 00 00 00 */ li r0, 0 +/* 80037D24 00034C64 B0 1F 06 90 */ sth r0, 0x690(r31) +/* 80037D28 00034C68 48 00 00 0C */ b lbl_80037D34 +lbl_80037D2C: +/* 80037D2C 00034C6C 38 00 00 00 */ li r0, 0 +/* 80037D30 00034C70 B0 1F 06 92 */ sth r0, 0x692(r31) +lbl_80037D34: +/* 80037D34 00034C74 38 00 00 00 */ li r0, 0 +/* 80037D38 00034C78 B0 1F 05 B4 */ sth r0, 0x5b4(r31) +/* 80037D3C 00034C7C A0 1F 06 BE */ lhz r0, 0x6be(r31) +/* 80037D40 00034C80 54 00 04 3A */ rlwinm r0, r0, 0, 0x10, 0x1d +/* 80037D44 00034C84 B0 1F 06 BE */ sth r0, 0x6be(r31) +/* 80037D48 00034C88 38 7F 05 EC */ addi r3, r31, 0x5ec +/* 80037D4C 00034C8C 38 80 00 00 */ li r4, 0 +/* 80037D50 00034C90 48 28 D4 DD */ bl Z2CreatureRide_NS_setLinkRiding +/* 80037D54 00034C94 83 E1 00 0C */ lwz r31, 0xc(r1) +/* 80037D58 00034C98 80 01 00 14 */ lwz r0, 0x14(r1) +/* 80037D5C 00034C9C 7C 08 03 A6 */ mtlr r0 +/* 80037D60 00034CA0 38 21 00 10 */ addi r1, r1, 0x10 +/* 80037D64 00034CA4 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/d/d_a/d_a_horse_static/d_a_horse_static.h b/include/d/d_a/d_a_horse_static/d_a_horse_static.h new file mode 100644 index 00000000000..470b71596e5 --- /dev/null +++ b/include/d/d_a/d_a_horse_static/d_a_horse_static.h @@ -0,0 +1,21 @@ +#include "dolphin/types.h" + +class e_wb_class{ + public: + u32 checkWait(void); + void setPlayerRideNow(void); + void setPlayerRide(void); + void getOff(void); + u8 checkDownDamage(void); + u8 checkNormalRideMode(void) const; + void setRunRideMode(void); + + private: + u8 unk0[0x5b4]; + s16 unk1460; + u8 unk1462[0xd9]; + s16 unk1680; + u16 unk1682; + u8 unk1684[0x2a]; + u16 unk1726; +}; \ No newline at end of file diff --git a/include/functions.h b/include/functions.h index 2f6ea5e1310..d062a3b5dfb 100644 --- a/include/functions.h +++ b/include/functions.h @@ -347,4 +347,10 @@ extern "C" { void getRandom_0_1__6Z2CalcFv(void); void getParamByExp__6Z2CalcFffffffQ26Z2Calc9CurveSign(void); void JMath_NS_TRandom_fast_(void); +} + +// d_a_horse_static +extern "C"{ + void Z2CreatureRide_NS_setLinkRiding(void); + void checkDownDamage__10e_wb_classFv(void); } \ No newline at end of file diff --git a/obj_files.mk b/obj_files.mk index 360ec37c7e3..d68d1144253 100644 --- a/obj_files.mk +++ b/obj_files.mk @@ -95,7 +95,7 @@ TEXT_O_FILES := \ $(BUILD_DIR)/asm/d/a/itembase/d_a_itembase_static.o \ $(BUILD_DIR)/src/d/d_a/d_a_item_static.o \ $(BUILD_DIR)/asm/d/a/shop/item/d_a_shop_item_static.o \ - $(BUILD_DIR)/asm/d/a/horse/d_a_horse_static.o \ + $(BUILD_DIR)/src/d/d_a/d_a_horse_static.o \ $(BUILD_DIR)/asm/d/d_demo.o \ $(BUILD_DIR)/asm/d/door/d_door_param2.o \ $(BUILD_DIR)/asm/d/d_resorce.o \ diff --git a/src/d/d_a/d_a_horse_static.cpp b/src/d/d_a/d_a_horse_static.cpp index 4bf93c8658d..6c2df70edb9 100644 --- a/src/d/d_a/d_a_horse_static.cpp +++ b/src/d/d_a/d_a_horse_static.cpp @@ -1 +1,93 @@ -// ok +#include "d/d_a/d_a_horse_static/d_a_horse_static.h" +#include "global.h" + +// 1 instruction off +#ifdef NONMATCHING +u32 e_wb_class::checkWait(void){ + u32 temp; + + temp = (0x2a - (this->unk1460)); // missing a cntlzw + return temp >> 5 & 0xff; +} +#else +asm u32 e_wb_class::checkWait(void) { + nofralloc + #include "d/d_a/d_a_horse_static/asm/func_80037C7C.s" +} +#endif + +void e_wb_class::setPlayerRideNow(void){ + this->unk1680 = 0x67; + this->unk1460 = 0; + this->unk1726 |= 3; +} + +// 2 instructions off +#ifdef NONMATCHING +void e_wb_class::setPlayerRide(void){ + this->unk1680 = 0x65; + this->unk1460 = 0; + this->unk1726 |= 3; + + setLinkRiding(true); // needs something else here +} +#else +asm void e_wb_class::setPlayerRide(void) { + nofralloc + #include "d/d_a/d_a_horse_static/asm/func_80037CB0.s" +} +#endif + +// 2 instructions off +#ifdef NONMATCHING +void e_wb_class::getOff(void){ + int temp; + + temp = checkDownDamage(); + if((temp == 0) || (this->unk1680 == 0x67)){ + this->unk1680 = 0; + } + else{ + this->unk1682 = 0; + } + this->unk1460 = 0; + this->unk1726 &= 0xfffc; + setLinkRiding(false); // same issue as above +} +#else +asm void e_wb_class::getOff(void) { + nofralloc + #include "d/d_a/d_a_horse_static/asm/func_80037CF4.s" +} +#endif + +u8 e_wb_class::checkDownDamage(){ + u8 temp1; + s16 temp2; + + temp1 = 0; + temp2 = this->unk1680; + if((temp2 != 0x65) && (temp2 != 0x66) && (temp2 != 0x15)){ + temp1 = 1; + } + return (u8)temp1; +} + +u8 e_wb_class::checkNormalRideMode(void) const{ + u8 temp; + + temp = 0; + if((this->unk1680 != 0x66) || (this->unk1460 < 1)){ + temp = 1; + } + + return (u8)temp; +} + +void e_wb_class::setRunRideMode(void){ + if(this->unk1680 == 0x65){ + this->unk1460 = 0; + this->unk1680 = 0x15; + this->unk1682 = 0x65; + } +} \ No newline at end of file