mirror of
https://github.com/MonsterDruide1/OdysseyDecomp.git
synced 2024-11-23 13:29:49 +00:00
Fix diffs
This commit is contained in:
parent
0f1f1dbf7a
commit
6aef5db802
@ -1,12 +1,12 @@
|
||||
if (NOT DEFINED ENV{UKING_CLANG})
|
||||
message(FATAL_ERROR "Please define the UKING_CLANG env variable. It should point to a path such that $UKING_CLANG/bin/clang exists")
|
||||
if (NOT DEFINED ENV{ODYSSEY_CLANG})
|
||||
message(FATAL_ERROR "Please define the ODYSSEY_CLANG env variable. It should point to a path such that $ODYSSEY_CLANG/bin/clang exists")
|
||||
endif()
|
||||
|
||||
if (NOT DEFINED ENV{DEVKITA64})
|
||||
message(FATAL_ERROR "Please define the DEVKITA64 env variable.")
|
||||
endif()
|
||||
|
||||
set(UKING_CLANG "$ENV{UKING_CLANG}")
|
||||
set(ODYSSEY_CLANG "$ENV{ODYSSEY_CLANG}")
|
||||
set(DEVKITA64 "$ENV{DEVKITA64}")
|
||||
set(NX64_OPT_FLAGS "-O3 -g")
|
||||
set(triple aarch64-none-elf)
|
||||
@ -15,10 +15,10 @@ set(CMAKE_SYSTEM_NAME Generic)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
||||
|
||||
set(CMAKE_SYSROOT ${UKING_CLANG})
|
||||
set(CMAKE_C_COMPILER "${UKING_CLANG}/bin/clang")
|
||||
set(CMAKE_SYSROOT ${ODYSSEY_CLANG})
|
||||
set(CMAKE_C_COMPILER "${ODYSSEY_CLANG}/bin/clang")
|
||||
set(CMAKE_C_COMPILER_TARGET ${triple})
|
||||
set(CMAKE_CXX_COMPILER "${UKING_CLANG}/bin/clang++")
|
||||
set(CMAKE_CXX_COMPILER "${ODYSSEY_CLANG}/bin/clang++")
|
||||
set(CMAKE_CXX_COMPILER_TARGET ${triple})
|
||||
|
||||
set(CMAKE_C_FLAGS_RELEASE ${NX64_OPT_FLAGS})
|
||||
@ -28,7 +28,7 @@ set(CMAKE_CXX_FLAGS_RELWITHDEBINFO ${NX64_OPT_FLAGS})
|
||||
|
||||
set(ARCH "-mcpu=cortex-a57+fp+simd+crypto+crc")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${ARCH} -isystem ${DEVKITA64}/aarch64-none-elf/include")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem ${UKING_CLANG}/include/c++/v1 -D _LIBCPP_HAS_THREAD_API_PTHREAD ${CMAKE_C_FLAGS}")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem ${ODYSSEY_CLANG}/include/c++/v1 -D _LIBCPP_HAS_THREAD_API_PTHREAD ${CMAKE_C_FLAGS}")
|
||||
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -x assembler-with-cpp ${ARCH}")
|
||||
|
||||
add_compile_options(-fPIC -stdlib=libc++ -mno-implicit-float)
|
||||
|
Binary file not shown.
@ -58007,7 +58007,7 @@
|
||||
0x000000710090cc10,_ZN2al17HitReactionKeeper19tryFindReactionInfoEPKc,120,
|
||||
0x000000710090cc88,_ZN2al17HitReactionKeeperC1EPKcPKN4sead7Vector3IfEEPNS_16IUseEffectKeeperEPKNS_15IUseAudioKeeperEPKNS_10IUseCameraEPNS_17PadRumbleDirectorEPNS_13SceneStopCtrlEPNS_18RadialBlurDirectorEPKNS_12PlayerHolderEPKNS_8ResourceES2_,1592,
|
||||
0x000000710090d2c0,_ZNK2al17HitReactionKeeper19tryFindReactionInfoEPKc,120,
|
||||
0x000000710090d338,_ZN2al9LiveActorC2EPKc,304,_ZN2al9LiveActorC2EPKc
|
||||
0x000000710090d338,_ZN2al9LiveActorC2EPKc,304,
|
||||
0x000000710090d468,_ZN2al9LiveActorC1EPKc,148,
|
||||
0x000000710090d4fc,_ZN2al9LiveActor18initAfterPlacementEv,52,
|
||||
0x000000710090d530,_ZN2al9LiveActor6appearEv,12,
|
||||
@ -60072,16 +60072,16 @@
|
||||
0x0000007100959c8c,_ZN2al12getNerveStepEPKNS_9IUseNerveE,32,_ZN2al12getNerveStepEPKNS_9IUseNerveE
|
||||
0x0000007100959cac,_ZN2al15getCurrentNerveEPKNS_9IUseNerveE,28,_ZN2al15getCurrentNerveEPKNS_9IUseNerveE
|
||||
0x0000007100959cc8,_ZN2al11isFirstStepEPKNS_9IUseNerveE,40,_ZN2al11isFirstStepEPKNS_9IUseNerveE
|
||||
0x0000007100959cf0,_ZN2al10isLessStepEPKNS_9IUseNerveEi,52,_ZN2al15isLessEqualStepEPKNS_9IUseNerveEi
|
||||
0x0000007100959d24,_ZN2al15isLessEqualStepEPKNS_9IUseNerveEi,52,_ZN2al10isLessStepEPKNS_9IUseNerveEi
|
||||
0x0000007100959cf0,_ZN2al10isLessStepEPKNS_9IUseNerveEi,52,_ZN2al10isLessStepEPKNS_9IUseNerveEi
|
||||
0x0000007100959d24,_ZN2al15isLessEqualStepEPKNS_9IUseNerveEi,52,_ZN2al15isLessEqualStepEPKNS_9IUseNerveEi
|
||||
0x0000007100959d58,_ZN2al13isGreaterStepEPKNS_9IUseNerveEi,52,_ZN2al13isGreaterStepEPKNS_9IUseNerveEi
|
||||
0x0000007100959d8c,_ZN2al13isInRangeStepEPKNS_9IUseNerveEii,68,_ZN2al13isInRangeStepEPKNS_9IUseNerveEii
|
||||
0x0000007100959dd0,_ZN2al14isIntervalStepEPKNS_9IUseNerveEii,80,
|
||||
0x0000007100959e20,_ZN2al19isIntervalOnOffStepEPKNS_9IUseNerveEii,64,
|
||||
0x0000007100959e60,_ZN2al10isNewNerveEPKNS_9IUseNerveE,36,
|
||||
0x0000007100959e84,_ZN2al17calcNerveIntervalEPKNS_9IUseNerveEii,80,
|
||||
0x0000007100959e84,_ZN2al17calcNerveIntervalEPKNS_9IUseNerveEii,80,_ZN2al17calcNerveIntervalEPKNS_9IUseNerveEii
|
||||
0x0000007100959ed4,_ZN2al13calcNerveRateEPKNS_9IUseNerveEi,104,_ZN2al13calcNerveRateEPKNS_9IUseNerveEi
|
||||
0x0000007100959f3c,_ZN2al13calcNerveRateEPKNS_9IUseNerveEii,96,_ZN2al17calcNerveIntervalEPKNS_9IUseNerveEii
|
||||
0x0000007100959f3c,_ZN2al13calcNerveRateEPKNS_9IUseNerveEii,96,
|
||||
0x0000007100959f9c,_ZN2al19calcNerveEaseInRateEPKNS_9IUseNerveEi,104,
|
||||
0x000000710095a004,_ZN2al19calcNerveEaseInRateEPKNS_9IUseNerveEii,96,
|
||||
0x000000710095a064,_ZN2al20calcNerveEaseOutRateEPKNS_9IUseNerveEi,104,
|
||||
|
Can't render this file because it is too large.
|
@ -1 +1 @@
|
||||
Subproject commit 1838960fa158df935ae7f329cf1ebe062d80584a
|
||||
Subproject commit a840c04b1749fbdb4c554fc55d24b72e4033797c
|
@ -1,5 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <basis/seadTypes.h>
|
||||
|
||||
namespace al
|
||||
{
|
||||
class ByamlContainerHeader
|
||||
@ -8,6 +10,6 @@ namespace al
|
||||
int getType() const;
|
||||
int getCount(bool) const;
|
||||
|
||||
int mType; // _0
|
||||
u32 mType; // _0
|
||||
};
|
||||
};
|
@ -1,5 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <basis/seadTypes.h>
|
||||
|
||||
namespace al
|
||||
{
|
||||
class ByamlStringTableIter
|
||||
@ -9,7 +11,7 @@ namespace al
|
||||
ByamlStringTableIter(const unsigned char *, bool);
|
||||
|
||||
int getSize() const;
|
||||
const unsigned char* getAddressTable() const;
|
||||
const u32* getAddressTable() const;
|
||||
int getStringAddress(int) const;
|
||||
int getEndAddress() const;
|
||||
const char* getString(int) const;
|
||||
@ -17,7 +19,7 @@ namespace al
|
||||
int findStringIndex(const char *) const;
|
||||
bool isValidate() const;
|
||||
|
||||
const unsigned char* mData; // _0
|
||||
unsigned char _8;
|
||||
const u8* mData; // _0
|
||||
bool mReversed;
|
||||
};
|
||||
};
|
@ -8,8 +8,8 @@ namespace al
|
||||
{
|
||||
public:
|
||||
NerveStateBase(const char *);
|
||||
|
||||
virtual ~NerveStateBase();
|
||||
|
||||
virtual void init();
|
||||
virtual void appear();
|
||||
virtual void kill();
|
||||
|
@ -34,7 +34,7 @@ namespace al
|
||||
al::SensorHitGroup* mHitGroup; // _30
|
||||
bool mIsValidBySystem; // _38
|
||||
bool mIsValid; // _39
|
||||
unsigned int _3A;
|
||||
bool _3A[4]; // unknown type
|
||||
unsigned short _3E;
|
||||
al::LiveActor* mParentActor; // _40
|
||||
const sead::Vector3<float>* mFollowPos; // _48
|
||||
|
@ -4,11 +4,6 @@
|
||||
|
||||
namespace al
|
||||
{
|
||||
LiveActor::LiveActor(const char *pName)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
al::NerveKeeper* LiveActor::getNerveKeeper() const
|
||||
{
|
||||
return mNerveKeeper;
|
||||
|
@ -18,19 +18,12 @@ namespace al
|
||||
return count;
|
||||
}
|
||||
|
||||
void LiveActorGroup::removeActor(const al::LiveActor *pActor)
|
||||
{
|
||||
auto actorCount = mActorCount;
|
||||
|
||||
if (actorCount >= 1)
|
||||
{
|
||||
for (auto i = 0; i < actorCount; i++)
|
||||
{
|
||||
if (mActors[i] == pActor)
|
||||
{
|
||||
mActors[mActorCount] = mActors[mActorCount - 1];
|
||||
mActorCount--;
|
||||
}
|
||||
void LiveActorGroup::removeActor(const al::LiveActor *pActor) {
|
||||
for (int i = 0; i < mActorCount; i++) {
|
||||
if (mActors[i] == pActor) {
|
||||
mActors[i] = mActors[mActorCount - 1];
|
||||
mActorCount--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
#include "al/byaml/ByamlContainerHeader.h"
|
||||
#include <byteswap.h>
|
||||
|
||||
namespace al
|
||||
{
|
||||
@ -10,17 +11,9 @@ namespace al
|
||||
int ByamlContainerHeader::getCount(bool isRev) const
|
||||
{
|
||||
/* todo -- attempt to remove ASR instruction for the else block */
|
||||
int val;
|
||||
|
||||
if (isRev)
|
||||
{
|
||||
val = ((mType >> 24) & 0xFF) | ((mType >> 16) & 0xFF) << 8 | ((mType >> 8) & 0xFF) << 16;
|
||||
}
|
||||
else
|
||||
{
|
||||
val = mType >> 8;
|
||||
}
|
||||
return ((mType >> 24) & 0xFF) | ((mType >> 16) & 0xFF) << 8 | ((mType >> 8) & 0xFF) << 16;
|
||||
|
||||
return val;
|
||||
return (mType >> 8);
|
||||
}
|
||||
};
|
@ -22,14 +22,9 @@ namespace al
|
||||
|
||||
int ByamlHashPair::getValue(bool isSwap) const
|
||||
{
|
||||
int swap = __bswap_32(mData);
|
||||
int val;
|
||||
|
||||
if (isSwap)
|
||||
val = swap;
|
||||
if(isSwap)
|
||||
return __bswap_32(mValue);
|
||||
else
|
||||
val = mData;
|
||||
|
||||
return val;
|
||||
return mValue;
|
||||
}
|
||||
};
|
@ -4,43 +4,34 @@
|
||||
namespace al
|
||||
{
|
||||
ByamlStringTableIter::ByamlStringTableIter()
|
||||
: mData(0), _8(0) { }
|
||||
: mData(0), mReversed(0) { }
|
||||
|
||||
ByamlStringTableIter::ByamlStringTableIter(const unsigned char *pData, bool unk)
|
||||
ByamlStringTableIter::ByamlStringTableIter(const u8* pData, bool pReversed)
|
||||
{
|
||||
mData = pData;
|
||||
_8 = unk;
|
||||
mReversed = pReversed;
|
||||
}
|
||||
|
||||
int ByamlStringTableIter::getSize() const
|
||||
{
|
||||
/* todo -- why does this use different register numbers? */
|
||||
return _8 != 0 ? ((*mData >> 24) & 0xFF) | ((*mData >> 16) & 0xFF) << 8 | ((*mData >> 8) & 0xFF) << 16 : *mData >> 8;
|
||||
u32 type_and_size = *reinterpret_cast<const u32*>(mData);
|
||||
if(mReversed)
|
||||
return ((type_and_size >> 24) & 0xFF) | ((type_and_size >> 16) & 0xFF) << 8 | ((type_and_size >> 8) & 0xFF) << 16;
|
||||
return type_and_size >> 8;
|
||||
}
|
||||
|
||||
const unsigned char* ByamlStringTableIter::getAddressTable() const
|
||||
const u32* ByamlStringTableIter::getAddressTable() const
|
||||
{
|
||||
// mData is an integer pointer, so getting to the table is just increasing the pointer by 1 (which is + 4)
|
||||
return reinterpret_cast<const unsigned char *>(mData + 4);
|
||||
return reinterpret_cast<const u32*>(mData + 4);
|
||||
}
|
||||
|
||||
int ByamlStringTableIter::getStringAddress(int idx) const
|
||||
{
|
||||
/* todo -- scheduling issues */
|
||||
int offs = *((int*)(mData + idx) + 1);
|
||||
int offsRev = __bswap_32(offs);
|
||||
int ret;
|
||||
|
||||
if (_8)
|
||||
{
|
||||
ret = offsRev;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = offs;
|
||||
}
|
||||
|
||||
return ret;
|
||||
if (mReversed)
|
||||
return __bswap_32(getAddressTable()[idx]);
|
||||
|
||||
return getAddressTable()[idx];
|
||||
}
|
||||
|
||||
bool ByamlStringTableIter::isValidate() const
|
||||
|
@ -6,11 +6,7 @@ namespace al
|
||||
{
|
||||
mIsDead = true;
|
||||
}
|
||||
|
||||
NerveStateBase::~NerveStateBase()
|
||||
{
|
||||
delete this;
|
||||
}
|
||||
NerveStateBase::~NerveStateBase() = default;
|
||||
|
||||
void NerveStateBase::init()
|
||||
{
|
||||
|
@ -5,8 +5,12 @@ namespace al
|
||||
// todo -- some scheduling problems with mStateCount's incrementation
|
||||
// adds a state to the list of states in the controller
|
||||
void NerveStateCtrl::addState(al::NerveStateBase *pBase, const al::Nerve *pNerve, const char *pName)
|
||||
{
|
||||
mStates[mStateCount].mStateBase = pBase, mStates[mStateCount].mNerve = pNerve, mStates[mStateCount++].mName = pName;
|
||||
{
|
||||
auto& state = mStates[mStateCount];
|
||||
state.mStateBase = pBase;
|
||||
state.mNerve = pNerve;
|
||||
state.mName = pName;
|
||||
mStateCount++;
|
||||
}
|
||||
|
||||
// run the state's update function, if there is a current state active
|
||||
|
@ -21,9 +21,6 @@ namespace al
|
||||
Resource::Resource(const sead::SafeStringBase<char> &rPath, sead::ArchiveRes *pResource)
|
||||
: mArchive(nullptr), mDevice(nullptr), mName(rPath)
|
||||
{
|
||||
mArchive = 0;
|
||||
mDevice = 0;
|
||||
|
||||
mHeap = sead::HeapMgr::sInstancePtr->getCurrentHeap();
|
||||
_B0 = 0;
|
||||
mResFile = 0;
|
||||
@ -40,13 +37,17 @@ namespace al
|
||||
|
||||
unsigned int Resource::getFileSize(const sead::SafeStringBase<char> &rFileName) const
|
||||
{
|
||||
unsigned int ret;
|
||||
mDevice->tryGetFileSize(&ret, rFileName);
|
||||
auto device = mDevice;
|
||||
u32 ret = 0;
|
||||
device->tryGetFileSize(&ret, rFileName);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void Resource::cleanupResGraphicsFile()
|
||||
{
|
||||
if(!mResFile)
|
||||
return;
|
||||
|
||||
mResFile->ReleaseTexture();
|
||||
mResFile->Reset();
|
||||
agl::g3d::ResFile::Cleanup(mResFile);
|
||||
|
@ -4,7 +4,8 @@ namespace al
|
||||
{
|
||||
void HitSensor::setFollowPosPtr(const sead::Vector3<float> *pFollowPos)
|
||||
{
|
||||
mFollowPos = pFollowPos, mFollowMtx = nullptr;
|
||||
mFollowPos = pFollowPos;
|
||||
mFollowMtx = nullptr;
|
||||
}
|
||||
|
||||
void HitSensor::setFollowMtxPtr(const sead::Matrix34<float> *pFollowMtx)
|
||||
|
@ -2,11 +2,10 @@
|
||||
|
||||
namespace al
|
||||
{
|
||||
void SensorHitGroup::add(al::HitSensor *pSensor)
|
||||
void SensorHitGroup::add(al::HitSensor* pSensor)
|
||||
{
|
||||
// todo -- fix incrementation issue
|
||||
mSensors[mSensorCount] = pSensor;
|
||||
++mSensorCount;
|
||||
mSensorCount++;
|
||||
}
|
||||
|
||||
al::HitSensor* SensorHitGroup::getSensor(int idx) const
|
||||
|
@ -3,62 +3,37 @@
|
||||
namespace alByamlLocalUtil
|
||||
{
|
||||
/* doesn't match but it's close enough */
|
||||
const char* getDataTypeString(int type)
|
||||
{
|
||||
const char* str;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
const char* getDataTypeString(int type) {
|
||||
switch (type) {
|
||||
case 0x00:
|
||||
return "None";
|
||||
case 0xA0:
|
||||
str = "String";
|
||||
break;
|
||||
return "String";
|
||||
case 0xC0:
|
||||
str = "Array";
|
||||
break;
|
||||
return "Array";
|
||||
case 0xC1:
|
||||
str = "Hash";
|
||||
break;
|
||||
return "Hash";
|
||||
case 0xC2:
|
||||
str = "StringTable";
|
||||
break;
|
||||
return "StringTable";
|
||||
case 0xD0:
|
||||
str = "Bool";
|
||||
break;
|
||||
return "Bool";
|
||||
case 0xD1:
|
||||
str = "Int";
|
||||
break;
|
||||
return "Int";
|
||||
case 0xD2:
|
||||
str = "Float";
|
||||
break;
|
||||
return "Float";
|
||||
case 0xD3:
|
||||
str = "UInt";
|
||||
break;
|
||||
return "UInt";
|
||||
case 0xD4:
|
||||
str = "Int64";
|
||||
break;
|
||||
return "Int64";
|
||||
case 0xD5:
|
||||
str = "UInt64";
|
||||
break;
|
||||
return "UInt64";
|
||||
case 0xD6:
|
||||
str = "Double";
|
||||
break;
|
||||
return "Double";
|
||||
case 0xFF:
|
||||
str = "NULL";
|
||||
break;
|
||||
return "NULL";
|
||||
default:
|
||||
if (type)
|
||||
{
|
||||
str = "Unknown";
|
||||
}
|
||||
else
|
||||
{
|
||||
str = "None";
|
||||
}
|
||||
|
||||
break;
|
||||
return "Unknown";
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
};
|
||||
|
||||
@ -167,8 +142,7 @@ namespace al
|
||||
float y = 0;
|
||||
bool y_ret = rIter.tryGetFloatByKey(&y, "YZ");
|
||||
|
||||
pOut->x = x;
|
||||
pOut->y = y;
|
||||
*pOut = {x, y};
|
||||
return (x_ret | y_ret) & 0x1;
|
||||
}
|
||||
|
||||
|
@ -1,43 +1,19 @@
|
||||
#include "al/util/MathUtil.h"
|
||||
#include <cmath>
|
||||
#include <math/seadMathCalcCommon.h>
|
||||
|
||||
namespace al
|
||||
{
|
||||
float normalize(float var, float min, float max)
|
||||
{
|
||||
float v4;
|
||||
bool v5;
|
||||
float result;
|
||||
float v7;
|
||||
float normalize(float var, float min, float max) {
|
||||
if (sead::absf(max-min) < 0.001f) {
|
||||
if (var < min)
|
||||
return 0.0f;
|
||||
else
|
||||
return 1.0f;
|
||||
}
|
||||
|
||||
v4 = -(max - min);
|
||||
if ((max - min) > 0.0f)
|
||||
{
|
||||
v4 = max - min;
|
||||
}
|
||||
if (v4 >= 0.001f)
|
||||
{
|
||||
v7 = min;
|
||||
if (var >= min)
|
||||
{
|
||||
v7 = var;
|
||||
if (var > max)
|
||||
{
|
||||
v7 = max;
|
||||
}
|
||||
}
|
||||
result = (v7 - min) / (max - min);
|
||||
}
|
||||
else
|
||||
{
|
||||
v5 = var < min;
|
||||
result = 1.0f;
|
||||
if (v5)
|
||||
{
|
||||
result = 0.0f;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
float clamped = sead::clamp(var, min, max);
|
||||
return (clamped - min) / (max - min);
|
||||
}
|
||||
|
||||
|
||||
@ -47,34 +23,23 @@ namespace al
|
||||
float result;
|
||||
|
||||
if (var <= min)
|
||||
{
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
if (max - min <= 0)
|
||||
{
|
||||
if (max - min <= 0) {
|
||||
result = 1.0f;
|
||||
|
||||
if (var < min)
|
||||
{
|
||||
result = 0.0f;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (var <= max)
|
||||
{
|
||||
v3 = var;
|
||||
}
|
||||
else
|
||||
{
|
||||
v3 = max;
|
||||
}
|
||||
|
||||
if (var < min)
|
||||
{
|
||||
v3 = min;
|
||||
}
|
||||
|
||||
result = (static_cast<float>(v3 - min) / static_cast<float>(max - min));
|
||||
}
|
||||
@ -144,13 +109,10 @@ namespace al
|
||||
}
|
||||
|
||||
float lerpValue(float x, float y, float time) {
|
||||
if (time >= 0.0f)
|
||||
{
|
||||
if (time > 1.0f)
|
||||
time = 1.0f;
|
||||
} else {
|
||||
if(time < 0.0f)
|
||||
time = 0.0f;
|
||||
}
|
||||
else if(time > 1.0f)
|
||||
time = 1.0f;
|
||||
return (x * (1.0f - time)) + (time * y);
|
||||
}
|
||||
};
|
@ -1,6 +1,7 @@
|
||||
#include "al/util/NerveUtil.h"
|
||||
#include "al/nerve/NerveKeeper.h"
|
||||
#include "al/nerve/NerveStateCtrl.h"
|
||||
#include <algorithm>
|
||||
|
||||
namespace al
|
||||
{
|
||||
@ -75,51 +76,28 @@ namespace al
|
||||
return (step <= high) & (step >= low);
|
||||
}
|
||||
|
||||
// logic just won't add up for some reason
|
||||
int calcNerveInterval(const al::IUseNerve *pKeeper, int start, int end)
|
||||
{
|
||||
int calcNerveInterval(const al::IUseNerve *pKeeper, int start, int end) {
|
||||
al::NerveKeeper* keeper = pKeeper->getNerveKeeper();
|
||||
|
||||
int dist = keeper->mStep - end;
|
||||
|
||||
if (start >= -1)
|
||||
{
|
||||
int dist = keeper->mStep - end;
|
||||
if(start < 1 || dist < 1)
|
||||
return 0;
|
||||
|
||||
if (dist >= -1)
|
||||
{
|
||||
return dist / start;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return dist / start;
|
||||
}
|
||||
|
||||
float calcNerveRate(const al::IUseNerve *pKeeper, int step)
|
||||
{
|
||||
float ret;
|
||||
|
||||
float calcNerveRate(const al::IUseNerve *pKeeper, int step) {
|
||||
if (step < 1)
|
||||
{
|
||||
ret = 1.0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
float curStep = pKeeper->getNerveKeeper()->mStep;
|
||||
ret = curStep / step;
|
||||
return 1.0f;
|
||||
|
||||
float curStep = pKeeper->getNerveKeeper()->mStep;
|
||||
float ret = curStep / step;
|
||||
|
||||
// TODO -- technically the same code,
|
||||
// but this one uses B.GE and not B.PL
|
||||
if (ret >= 0)
|
||||
{
|
||||
if (ret > 1.0f)
|
||||
{
|
||||
ret = 1.0f;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = 0;
|
||||
}
|
||||
}
|
||||
if (ret < 0.0f)
|
||||
ret = 0.0f;
|
||||
else if (ret > 1.0f)
|
||||
ret = 1.0f;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -32,61 +32,32 @@ namespace al
|
||||
return strstr(pString_0, pString_1);
|
||||
}
|
||||
|
||||
/*bool isEqualSubString(const sead::SafeStringBase<char> &pString_0, const sead::SafeStringBase<char> &pString_1)
|
||||
{
|
||||
pString_0.assureTerminationImpl_();
|
||||
const char* str = pString_0.mStringTop;
|
||||
pString_1.assureTerminationImpl_();
|
||||
return strstr(str, pString_1.mStringTop);
|
||||
}*/
|
||||
|
||||
bool isStartWithString(const char *pString_0, const char *pString_1)
|
||||
{
|
||||
char val = *pString_1;
|
||||
|
||||
bool isStartWithString(const char *pString_0, const char *pString_1) {
|
||||
if (!*pString_1)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
const char* nextVal = pString_1 + 1;
|
||||
|
||||
while(*pString_0 && *pString_0 == val)
|
||||
{
|
||||
char e = *nextVal++;
|
||||
val = e;
|
||||
while(*pString_0 && *pString_0 == *pString_1) {
|
||||
++pString_0;
|
||||
++pString_1;
|
||||
|
||||
if (!e)
|
||||
{
|
||||
if (!*pString_1)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool isEqualString(const char *pString_0, const char *pString_1)
|
||||
{
|
||||
char val;
|
||||
bool isEqualString(const char *pString_0, const char *pString_1) {
|
||||
while (*pString_0 == *pString_1) {
|
||||
char val = *pString_0; //required to match
|
||||
|
||||
while (1)
|
||||
{
|
||||
val = *pString_0;
|
||||
if (val != *pString_1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
if (!*pString_0)
|
||||
return true;
|
||||
|
||||
++pString_1;
|
||||
++pString_0;
|
||||
|
||||
if (!val)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -96,12 +67,8 @@ namespace al
|
||||
int pString1_Len = strlen(pString_1);
|
||||
|
||||
if (pString0_Len < pString1_Len)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return isEqualString(&pString_0[pString0_Len - pString1_Len], pString_1);
|
||||
}
|
||||
|
||||
return isEqualString(&pString_0[pString0_Len - pString1_Len], pString_1);
|
||||
}
|
||||
};
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user