This commit is contained in:
TakaRikka
2022-06-01 04:23:39 -07:00
parent 3f22fa4483
commit 32cea78625
121 changed files with 1936 additions and 4957 deletions
+39 -19
View File
@@ -4,8 +4,8 @@
//
#include "JSystem/JParticle/JPADynamicsBlock.h"
#include "JSystem/JParticle/JPAParticle.h"
#include "JSystem/JMath/JMATrigonometric.h"
#include "JSystem/JParticle/JPAParticle.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -64,7 +64,8 @@ SECTION_SDATA2 static f32 lit_2289[1 + 1 /* padding */] = {
// bug in diff.py preventing me from seeing what's wrong
void JPAVolumePoint(JPAEmitterWorkData* work) {
work->mVolumePos.zero();
work->mVelOmni.set(work->mpEmtr->get_r_zh(), work->mpEmtr->get_r_zh(), work->mpEmtr->get_r_zh());
work->mVelOmni.set(work->mpEmtr->get_r_zh(), work->mpEmtr->get_r_zh(),
work->mpEmtr->get_r_zh());
work->mVelAxis.set(work->mVelOmni.x, 0.0f, work->mVelOmni.z);
}
@@ -91,7 +92,9 @@ SECTION_SDATA2 static f64 lit_2321 = 4503601774854144.0 /* cast s32 to float */;
// bug in diff.py preventing me from seeing what's wrong
void JPAVolumeLine(JPAEmitterWorkData* work) {
if (work->mpEmtr->checkFlag(JPADynFlag_FixedInterval)) {
work->mVolumePos.set(0.0f, 0.0f, work->mVolumeSize * (s32)((work->mVolumeEmitIdx / (work->mEmitCount - 1.0f) - 0.5f)));
work->mVolumePos.set(0.0f, 0.0f,
work->mVolumeSize *
(s32)((work->mVolumeEmitIdx / (work->mEmitCount - 1.0f) - 0.5f)));
work->mVolumeEmitIdx++;
} else {
work->mVolumePos.set(0.0f, 0.0f, work->mVolumeSize * work->mpEmtr->get_r_zh());
@@ -158,7 +161,8 @@ static asm void JPAVolumeCircle(JPAEmitterWorkData* param_0) {
// bug in diff.py preventing me from seeing what's wrong
void JPAVolumeCube(JPAEmitterWorkData* work) {
f32 size = work->mVolumeSize;
work->mVolumePos.set(size * work->mpEmtr->get_r_zh(), size * work->mpEmtr->get_r_zh(), size * work->mpEmtr->get_r_zh());
work->mVolumePos.set(size * work->mpEmtr->get_r_zh(), size * work->mpEmtr->get_r_zh(),
size * work->mpEmtr->get_r_zh());
work->mVelOmni.mul(work->mVolumePos, work->mGlobalScl);
work->mVelAxis.set(work->mVolumePos.x, 0.0f, work->mVolumePos.z);
}
@@ -224,25 +228,39 @@ JPADynamicsBlock::JPADynamicsBlock(u8 const* data) {
}
enum {
VOL_Cube = 0x00,
VOL_Sphere = 0x01,
VOL_Cube = 0x00,
VOL_Sphere = 0x01,
VOL_Cylinder = 0x02,
VOL_Torus = 0x03,
VOL_Point = 0x04,
VOL_Circle = 0x05,
VOL_Line = 0x06,
VOL_Torus = 0x03,
VOL_Point = 0x04,
VOL_Circle = 0x05,
VOL_Line = 0x06,
};
/* 8027BB4C-8027BBE8 27648C 009C+00 2/1 0/0 0/0 .text init__16JPADynamicsBlockFv */
void JPADynamicsBlock::init() {
switch (getVolumeType()) {
case VOL_Cube: mpCalcVolumeFunc = &JPAVolumeCube; break;
case VOL_Sphere: mpCalcVolumeFunc = &JPAVolumeSphere; break;
case VOL_Cylinder: mpCalcVolumeFunc = &JPAVolumeCylinder; break;
case VOL_Torus: mpCalcVolumeFunc = &JPAVolumeTorus; break;
case VOL_Point: mpCalcVolumeFunc = &JPAVolumePoint; break;
case VOL_Circle: mpCalcVolumeFunc = &JPAVolumeCircle; break;
case VOL_Line: mpCalcVolumeFunc = &JPAVolumeLine; break;
case VOL_Cube:
mpCalcVolumeFunc = &JPAVolumeCube;
break;
case VOL_Sphere:
mpCalcVolumeFunc = &JPAVolumeSphere;
break;
case VOL_Cylinder:
mpCalcVolumeFunc = &JPAVolumeCylinder;
break;
case VOL_Torus:
mpCalcVolumeFunc = &JPAVolumeTorus;
break;
case VOL_Point:
mpCalcVolumeFunc = &JPAVolumePoint;
break;
case VOL_Circle:
mpCalcVolumeFunc = &JPAVolumeCircle;
break;
case VOL_Line:
mpCalcVolumeFunc = &JPAVolumeLine;
break;
}
}
@@ -269,13 +287,15 @@ void JPADynamicsBlock::create(JPAEmitterWorkData* work) {
work->mVolumeEmitIdx = 0;
} else {
f32 newPtclCount = work->mpEmtr->mRate * (getRateRndm() * work->mpEmtr->get_r_zp() + 1.0f);
f32 newPtclCount =
work->mpEmtr->mRate * (getRateRndm() * work->mpEmtr->get_r_zp() + 1.0f);
f32 newEmitCount = work->mpEmtr->mEmitCount + newPtclCount;
work->mpEmtr->mEmitCount = newEmitCount;
emitCount = (s32)newEmitCount;
work->mpEmtr->mEmitCount -= emitCount;
if (work->mpEmtr->checkStatus(JPAEmtrStts_FirstEmit) && 0.0f < newPtclCount && newPtclCount < 1.0f)
if (work->mpEmtr->checkStatus(JPAEmtrStts_FirstEmit) && 0.0f < newPtclCount &&
newPtclCount < 1.0f)
emitCount = 1;
}
+25 -16
View File
@@ -4,9 +4,9 @@
//
#include "JSystem/JUtility/JUTGamePad.h"
#include "MSL_C/math.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "MSL_C/math.h"
//
// Forward References:
@@ -129,7 +129,7 @@ u8 JUTGamePad::mPadAssign[4];
JUTGamePad::JUTGamePad(EPadPort port) : mRumble(this), mLink(this) {
mPortNum = port;
if (mPortNum >= 0) {
mPadAssign[port]++;
mPadAssign[port]++;
}
initList();
@@ -224,8 +224,12 @@ u32 JUTGamePad::read() {
for (int i = 0; i < 4; i++) {
u32 mask_tmp = 0x80000000 >> i;
if (mPadStatus[i].error == 0) {
u32 m_stick = mPadMStick[i].update(mPadStatus[i].stick_x, mPadStatus[i].stick_y, sStickMode, WS_MAIN_STICK, mPadButton[i].mButton) << 0x18;
u32 s_stick = mPadSStick[i].update(mPadStatus[i].substick_x, mPadStatus[i].substick_y, sStickMode, WS_SUB_STICK, mPadButton[i].mButton) << 0x10;
u32 m_stick = mPadMStick[i].update(mPadStatus[i].stick_x, mPadStatus[i].stick_y,
sStickMode, WS_MAIN_STICK, mPadButton[i].mButton)
<< 0x18;
u32 s_stick = mPadSStick[i].update(mPadStatus[i].substick_x, mPadStatus[i].substick_y,
sStickMode, WS_SUB_STICK, mPadButton[i].mButton)
<< 0x10;
u32 tmp = m_stick | s_stick;
mPadButton[i].update(&mPadStatus[i], tmp);
} else if (mPadStatus[i].error == -1) {
@@ -248,8 +252,12 @@ u32 JUTGamePad::read() {
if (pad->getPadReplay() && pad->getPadReplay()->mActive) {
PADStatus status;
pad->getPadReplay()->unk1(&status);
u32 m_stick = pad->mMainStick.update(status.stick_x, status.stick_y, sStickMode, WS_MAIN_STICK, pad->mButton.mButton) << 0x18;
u32 s_stick = pad->mSubStick.update(status.substick_x, status.substick_y, sStickMode, WS_SUB_STICK, pad->mButton.mButton) << 0x10;
u32 m_stick = pad->mMainStick.update(status.stick_x, status.stick_y, sStickMode,
WS_MAIN_STICK, pad->mButton.mButton)
<< 0x18;
u32 s_stick = pad->mSubStick.update(status.substick_x, status.substick_y, sStickMode,
WS_SUB_STICK, pad->mButton.mButton)
<< 0x10;
pad->mButton.update(&status, m_stick | s_stick);
} else {
if (pad->mPortNum == -1) {
@@ -369,7 +377,8 @@ void JUTGamePad::update() {
mErrorStatus = mPadStatus[mPortNum].error;
}
if (field_0xa8 == 0 || (mButton.mButton & C3ButtonReset::sResetMaskPattern) != C3ButtonReset::sResetPattern) {
if (field_0xa8 == 0 ||
(mButton.mButton & C3ButtonReset::sResetMaskPattern) != C3ButtonReset::sResetPattern) {
mButtonReset.mReset = false;
} else if (!struct_80451501) {
if (mButtonReset.mReset == true) {
@@ -423,7 +432,7 @@ void JUTGamePad::checkResetSwitch() {
if (struct_80451500 == true) {
struct_80451501 = true;
C3ButtonReset::sResetOccurredPort = -1;
if (C3ButtonReset::sCallback != NULL) {
C3ButtonReset::sCallback(-1, C3ButtonReset::sCallbackArg);
}
@@ -465,21 +474,22 @@ void JUTGamePad::CButton::update(PADStatus const* padStatus, u32 stickStatus) {
} else {
buttons = 0;
}
buttons = stickStatus | buttons;
mRepeat = 0;
if (field_0x28 != 0 && field_0x24 != 0) {
u32 repeatButton = buttons & field_0x24;
mRepeat = 0;
if (repeatButton == 0) {
field_0x20 = 0;
field_0x1c = 0;
} else if (field_0x20 == repeatButton) {
field_0x1c++;
if (field_0x1c == field_0x28 || (field_0x1c > field_0x28 && (field_0x1c - field_0x28) % field_0x2c == 0)) {
if (field_0x1c == field_0x28 ||
(field_0x1c > field_0x28 && (field_0x1c - field_0x28) % field_0x2c == 0)) {
mRepeat = repeatButton;
}
} else {
@@ -521,7 +531,7 @@ void JUTGamePad::CStick::clear() {
/* 802E1238-802E1500 2DBB78 02C8+00 1/1 0/0 0/0 .text
* update__Q210JUTGamePad6CStickFScScQ210JUTGamePad10EStickModeQ210JUTGamePad11EWhichStickUl */
u32 JUTGamePad::CStick::update(s8 x_val, s8 y_val, JUTGamePad::EStickMode mode,
JUTGamePad::EWhichStick stick, u32 buttons) {
JUTGamePad::EWhichStick stick, u32 buttons) {
s32 clamp;
switch (sClampMode) {
case 1:
@@ -689,7 +699,7 @@ asm void JUTGamePad::CRumble::stopPatternedRumbleAtThePeriod() {
/* 802E199C-802E19D8 2DC2DC 003C+00 1/1 1/1 0/0 .text getGamePad__10JUTGamePadFi */
JUTGamePad* JUTGamePad::getGamePad(int padNo) {
JSUListIterator<JUTGamePad> pad(mPadList.getFirst());
for (; pad != mPadList.getEnd(); pad++) {
if (padNo == pad->mPortNum) {
return pad.getObject();
@@ -736,7 +746,6 @@ bool JUTGamePad::recalibrate(u32 mask) {
return PADRecalibrate((PADMask)mask);
}
/* 802E1AFC-802E1B60 2DC43C 0064+00 1/1 0/0 0/0 .text checkCallback__19JUTGamePadLongPressFiUl */
void JUTGamePadLongPress::checkCallback(int port, u32 timer) {
if (port >= 0 && timer >= field_0x1c) {
+1 -1
View File
@@ -409,7 +409,7 @@ asm bool Z2AudioMgr::hasReset() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
//asm void Z2AudioMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1,
// asm void Z2AudioMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1,
// JGeometry::TVec3<f32> const* param_2) {
extern "C" asm void func_802CDB1C() {
nofralloc
+7 -10
View File
@@ -130,15 +130,9 @@ SECTION_DATA static u16 sNewSong3[9] = {
/* 803CBCC0-803CBD08 -00001 0048+00 1/1 0/0 0/0 .data sGuideData */
SECTION_DATA static Z2WolfHowlData sGuideData[9] = {
{4, sHowlTobikusa},
{6, sHowlUmakusa},
{6, sHowlZeldaSong},
{6, sHealingSong},
{6, sHowlSoulRequiem},
{6, sHowlLightPrelude},
{7, sNewSong1},
{8, sNewSong2},
{9, sNewSong3},
{4, sHowlTobikusa}, {6, sHowlUmakusa}, {6, sHowlZeldaSong},
{6, sHealingSong}, {6, sHowlSoulRequiem}, {6, sHowlLightPrelude},
{7, sNewSong1}, {8, sNewSong2}, {9, sNewSong3},
};
/* 80450880-80450884 000300 0004+00 2/2 0/0 0/0 .sdata cPitchDown */
@@ -182,7 +176,10 @@ SECTION_SDATA static f32 sStickCenter = 1.0f / 5.0f;
/* 804508A0-804508A8 000320 0008+00 1/0 0/0 0/0 .sdata sHowlTobikusa */
SECTION_SDATA static u16 sHowlTobikusa[4] = {
0x011E, 0x031E, 0x011E, 0x031E,
0x011E,
0x031E,
0x011E,
0x031E,
};
/* 80455E60-80455E64 004460 0004+00 8/8 0/0 0/0 .sdata2 @3485 */