summaryrefslogtreecommitdiff
path: root/src/d/actor/d_a_sail.cpp
diff options
context:
space:
mode:
authorLagoLunatic <LagoLunatic@users.noreply.github.com>2024-10-19 15:39:43 -0400
committerLagoLunatic <LagoLunatic@users.noreply.github.com>2024-10-19 15:39:43 -0400
commita3560350c729be23c8ed294226fdf4bdd30a8dfd (patch)
treed483e64f16d4cd22831d86948a5e54e84bd5627d /src/d/actor/d_a_sail.cpp
parentde34ef5fb6c9b7ca7d5a358e7b20aa516b369cf3 (diff)
d_a_sail and d_a_pirate_flag cleanup
Diffstat (limited to 'src/d/actor/d_a_sail.cpp')
-rw-r--r--src/d/actor/d_a_sail.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/d/actor/d_a_sail.cpp b/src/d/actor/d_a_sail.cpp
index b57bdbb7..44dd18de 100644
--- a/src/d/actor/d_a_sail.cpp
+++ b/src/d/actor/d_a_sail.cpp
@@ -465,8 +465,8 @@ void daSail_packet_c::setNrmMtx() {
/* 00000398-00000424 .text setBackNrm__15daSail_packet_cFv */
void daSail_packet_c::setBackNrm() {
- cXyz* vtxNrm1 = m0C74 + (0x54 * m1C3A);
- cXyz* vtxNrm2 = m1454 + (0x54 * m1C3A);
+ cXyz* vtxNrm1 = getNrm();
+ cXyz* vtxNrm2 = m1454[m1C3A];
for (int i = 0; i < 0x54; i++) {
vtxNrm2->setall(0.0f);
*vtxNrm2 -= *vtxNrm1;
@@ -897,11 +897,13 @@ static void sail_move(sail_class* i_this) {
i_this->mSailPacket.setBackNrm();
#if VERSION == VERSION_JPN
- DCStoreRangeNoSync(i_this->mSailPacket.getPos(), 0x14ac0);
+ // Bug: The number of bytes (0x14AC0) passed here is way too large and causes an overflow.
+ // The below sizeof calculation is a guess as to what led the devs to arriving at this wrong number.
+ DCStoreRangeNoSync(i_this->mSailPacket.getPos(), sizeof(*i_this->mSailPacket.mPos) * sizeof(*i_this->mSailPacket.mNrm) / sizeof(cXyz));
#else
- DCStoreRangeNoSync(i_this->mSailPacket.getPos() + 0 * 0x54, 0x03f0);
- DCStoreRangeNoSync(i_this->mSailPacket.getPos() + 3 * 0x54, 0x03f0);
- DCStoreRangeNoSync(i_this->mSailPacket.getPos() + 5 * 0x54, 0x03f0);
+ DCStoreRangeNoSync(i_this->mSailPacket.getPos(), sizeof(*i_this->mSailPacket.mPos));
+ DCStoreRangeNoSync(i_this->mSailPacket.getNrm(), sizeof(*i_this->mSailPacket.mNrm));
+ DCStoreRangeNoSync(i_this->mSailPacket.getNrm() + sizeof(i_this->mSailPacket.mNrm) / sizeof(cXyz), sizeof(*i_this->mSailPacket.m1454)); // Fakematch?
#endif
}