mirror of https://github.com/PrimeDecomp/prime.git
Match and link CPASParmInfo
This commit is contained in:
parent
534d415da3
commit
a04a2267f4
|
@ -98,41 +98,6 @@ lbl_802E5888:
|
|||
/* 802E58A0 002E2800 38 21 00 30 */ addi r1, r1, 0x30
|
||||
/* 802E58A4 002E2804 4E 80 00 20 */ blr
|
||||
|
||||
.global PutTo__10CPrimitiveCFR13COutputStream
|
||||
PutTo__10CPrimitiveCFR13COutputStream:
|
||||
/* 802E58A8 002E2808 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
/* 802E58AC 002E280C 7C 08 02 A6 */ mflr r0
|
||||
/* 802E58B0 002E2810 90 01 00 24 */ stw r0, 0x24(r1)
|
||||
/* 802E58B4 002E2814 93 E1 00 1C */ stw r31, 0x1c(r1)
|
||||
/* 802E58B8 002E2818 7C 9F 23 78 */ mr r31, r4
|
||||
/* 802E58BC 002E281C 93 C1 00 18 */ stw r30, 0x18(r1)
|
||||
/* 802E58C0 002E2820 7C 7E 1B 78 */ mr r30, r3
|
||||
/* 802E58C4 002E2824 80 03 00 00 */ lwz r0, 0(r3)
|
||||
/* 802E58C8 002E2828 7F E3 FB 78 */ mr r3, r31
|
||||
/* 802E58CC 002E282C 90 01 00 0C */ stw r0, 0xc(r1)
|
||||
/* 802E58D0 002E2830 48 05 9B E9 */ bl FlushShiftRegister__13COutputStreamFv
|
||||
/* 802E58D4 002E2834 7F E3 FB 78 */ mr r3, r31
|
||||
/* 802E58D8 002E2838 38 81 00 0C */ addi r4, r1, 0xc
|
||||
/* 802E58DC 002E283C 38 A0 00 04 */ li r5, 4
|
||||
/* 802E58E0 002E2840 48 05 9C C9 */ bl DoPut__13COutputStreamFPCvUl
|
||||
/* 802E58E4 002E2844 80 1E 00 04 */ lwz r0, 4(r30)
|
||||
/* 802E58E8 002E2848 7F E3 FB 78 */ mr r3, r31
|
||||
/* 802E58EC 002E284C 90 01 00 08 */ stw r0, 8(r1)
|
||||
/* 802E58F0 002E2850 48 05 9B C9 */ bl FlushShiftRegister__13COutputStreamFv
|
||||
/* 802E58F4 002E2854 7F E3 FB 78 */ mr r3, r31
|
||||
/* 802E58F8 002E2858 38 81 00 08 */ addi r4, r1, 8
|
||||
/* 802E58FC 002E285C 38 A0 00 04 */ li r5, 4
|
||||
/* 802E5900 002E2860 48 05 9C A9 */ bl DoPut__13COutputStreamFPCvUl
|
||||
/* 802E5904 002E2864 7F E4 FB 78 */ mr r4, r31
|
||||
/* 802E5908 002E2868 38 7E 00 08 */ addi r3, r30, 8
|
||||
/* 802E590C 002E286C 48 05 83 A9 */ bl "PutTo__Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>CFR13COutputStream"
|
||||
/* 802E5910 002E2870 80 01 00 24 */ lwz r0, 0x24(r1)
|
||||
/* 802E5914 002E2874 83 E1 00 1C */ lwz r31, 0x1c(r1)
|
||||
/* 802E5918 002E2878 83 C1 00 18 */ lwz r30, 0x18(r1)
|
||||
/* 802E591C 002E287C 7C 08 03 A6 */ mtlr r0
|
||||
/* 802E5920 002E2880 38 21 00 20 */ addi r1, r1, 0x20
|
||||
/* 802E5924 002E2884 4E 80 00 20 */ blr
|
||||
|
||||
.section .sdata2, "a"
|
||||
.balign 8
|
||||
.global lbl_805AE300
|
||||
|
@ -140,4 +105,3 @@ lbl_805AE300:
|
|||
# ROM: 0x3FABA0
|
||||
.4byte 0
|
||||
.4byte 0
|
||||
|
||||
|
|
|
@ -2,6 +2,41 @@
|
|||
|
||||
.section .text, "ax"
|
||||
|
||||
.global PutTo__10CPrimitiveCFR13COutputStream
|
||||
PutTo__10CPrimitiveCFR13COutputStream:
|
||||
/* 802E58A8 002E2808 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
/* 802E58AC 002E280C 7C 08 02 A6 */ mflr r0
|
||||
/* 802E58B0 002E2810 90 01 00 24 */ stw r0, 0x24(r1)
|
||||
/* 802E58B4 002E2814 93 E1 00 1C */ stw r31, 0x1c(r1)
|
||||
/* 802E58B8 002E2818 7C 9F 23 78 */ mr r31, r4
|
||||
/* 802E58BC 002E281C 93 C1 00 18 */ stw r30, 0x18(r1)
|
||||
/* 802E58C0 002E2820 7C 7E 1B 78 */ mr r30, r3
|
||||
/* 802E58C4 002E2824 80 03 00 00 */ lwz r0, 0(r3)
|
||||
/* 802E58C8 002E2828 7F E3 FB 78 */ mr r3, r31
|
||||
/* 802E58CC 002E282C 90 01 00 0C */ stw r0, 0xc(r1)
|
||||
/* 802E58D0 002E2830 48 05 9B E9 */ bl FlushShiftRegister__13COutputStreamFv
|
||||
/* 802E58D4 002E2834 7F E3 FB 78 */ mr r3, r31
|
||||
/* 802E58D8 002E2838 38 81 00 0C */ addi r4, r1, 0xc
|
||||
/* 802E58DC 002E283C 38 A0 00 04 */ li r5, 4
|
||||
/* 802E58E0 002E2840 48 05 9C C9 */ bl DoPut__13COutputStreamFPCvUl
|
||||
/* 802E58E4 002E2844 80 1E 00 04 */ lwz r0, 4(r30)
|
||||
/* 802E58E8 002E2848 7F E3 FB 78 */ mr r3, r31
|
||||
/* 802E58EC 002E284C 90 01 00 08 */ stw r0, 8(r1)
|
||||
/* 802E58F0 002E2850 48 05 9B C9 */ bl FlushShiftRegister__13COutputStreamFv
|
||||
/* 802E58F4 002E2854 7F E3 FB 78 */ mr r3, r31
|
||||
/* 802E58F8 002E2858 38 81 00 08 */ addi r4, r1, 8
|
||||
/* 802E58FC 002E285C 38 A0 00 04 */ li r5, 4
|
||||
/* 802E5900 002E2860 48 05 9C A9 */ bl DoPut__13COutputStreamFPCvUl
|
||||
/* 802E5904 002E2864 7F E4 FB 78 */ mr r4, r31
|
||||
/* 802E5908 002E2868 38 7E 00 08 */ addi r3, r30, 8
|
||||
/* 802E590C 002E286C 48 05 83 A9 */ bl "PutTo__Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>CFR13COutputStream"
|
||||
/* 802E5910 002E2870 80 01 00 24 */ lwz r0, 0x24(r1)
|
||||
/* 802E5914 002E2874 83 E1 00 1C */ lwz r31, 0x1c(r1)
|
||||
/* 802E5918 002E2878 83 C1 00 18 */ lwz r30, 0x18(r1)
|
||||
/* 802E591C 002E287C 7C 08 03 A6 */ mtlr r0
|
||||
/* 802E5920 002E2880 38 21 00 20 */ addi r1, r1, 0x20
|
||||
/* 802E5924 002E2884 4E 80 00 20 */ blr
|
||||
|
||||
.global __ct__10CPrimitiveFR12CInputStream
|
||||
__ct__10CPrimitiveFR12CInputStream:
|
||||
/* 802E5928 002E2888 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
|
|
|
@ -496,7 +496,7 @@ LIBS = [
|
|||
["Kyoto/Animation/CPASAnimParm", True],
|
||||
"Kyoto/Animation/CPASAnimState",
|
||||
"Kyoto/Animation/CPASDatabase",
|
||||
"Kyoto/Animation/CPASParmInfo",
|
||||
["Kyoto/Animation/CPASParmInfo", True],
|
||||
["Kyoto/Animation/CPrimitive", True],
|
||||
"Kyoto/Animation/CSequenceHelper",
|
||||
["Kyoto/Animation/CTransition", True],
|
||||
|
|
|
@ -36,6 +36,8 @@ public:
|
|||
bool GetBoolValue() const;
|
||||
int GetEnumValue() const;
|
||||
|
||||
UParmValue GetParameter() { return x0_value; }
|
||||
|
||||
private:
|
||||
UParmValue x0_value;
|
||||
EParmType x4_type;
|
||||
|
|
|
@ -3,29 +3,13 @@
|
|||
|
||||
#include "types.h"
|
||||
|
||||
#include "Kyoto/Animation/CharacterCommon.hpp"
|
||||
#include "Kyoto/Animation/CPASAnimParm.hpp"
|
||||
#include "Kyoto/Animation/CPASParmInfo.hpp"
|
||||
#include "Kyoto/Animation/CharacterCommon.hpp"
|
||||
|
||||
#include "rstl/reserved_vector.hpp"
|
||||
#include "rstl/vector.hpp"
|
||||
|
||||
class CPASParmInfo {
|
||||
public:
|
||||
enum EWeightFunction {
|
||||
kWF_ExactMatch,
|
||||
kWF_PercentError,
|
||||
kWF_AngularPercent,
|
||||
kWF_NoWeight,
|
||||
};
|
||||
|
||||
private:
|
||||
CPASAnimParm::EParmType x0_type;
|
||||
EWeightFunction x4_weightFunction;
|
||||
float x8_weight;
|
||||
CPASAnimParm::UParmValue xc_min;
|
||||
CPASAnimParm::UParmValue x10_max;
|
||||
};
|
||||
|
||||
class CPASAnimInfo {
|
||||
private:
|
||||
uint x0_id;
|
||||
|
@ -37,7 +21,7 @@ public:
|
|||
CPASAnimParm GetAnimParmData(int, unsigned int) const;
|
||||
|
||||
pas::EAnimationState GetStateId() const { return x0_id; }
|
||||
bool HasAnims() const { return static_cast<uint>(x14_anims.size()) != 0; }
|
||||
bool HasAnims() const { return static_cast< uint >(x14_anims.size()) != 0; }
|
||||
|
||||
private:
|
||||
pas::EAnimationState x0_id;
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
#ifndef _CPASPARMINFO
|
||||
#define _CPASPARMINFO
|
||||
|
||||
#include "Kyoto/Animation/CPASAnimParm.hpp"
|
||||
|
||||
class CInputStream;
|
||||
class CPASParmInfo {
|
||||
public:
|
||||
enum EWeightFunction {
|
||||
kWF_Invalid = -1,
|
||||
kWF_ExactMatch,
|
||||
kWF_PercentError,
|
||||
kWF_AngularPercent,
|
||||
kWF_NoWeight,
|
||||
};
|
||||
|
||||
CPASParmInfo(CInputStream& in);
|
||||
private:
|
||||
CPASAnimParm::EParmType x0_type;
|
||||
EWeightFunction x4_weightFunction;
|
||||
float x8_weight;
|
||||
CPASAnimParm::UParmValue xc_min;
|
||||
CPASAnimParm::UParmValue x10_max;
|
||||
};
|
||||
|
||||
#endif // _CPASPARMINFO
|
|
@ -6,9 +6,11 @@
|
|||
#include "rstl/string.hpp"
|
||||
|
||||
class CInputStream;
|
||||
class COutputStream;
|
||||
class CPrimitive {
|
||||
public:
|
||||
CPrimitive(CInputStream& in);
|
||||
void PutTo(COutputStream& out) const;
|
||||
CAssetId GetAnimResId() const { return x0_animId; }
|
||||
|
||||
private:
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include "rstl/rmemory_allocator.hpp"
|
||||
|
||||
class CInputStream;
|
||||
class COutputStream;
|
||||
|
||||
namespace rstl {
|
||||
template < typename _CharTp >
|
||||
|
@ -112,6 +113,7 @@ public:
|
|||
bool operator<(const basic_string& other) const;
|
||||
|
||||
const char* data() const { return x0_ptr; }
|
||||
void PutTo(COutputStream& out) const;
|
||||
};
|
||||
|
||||
template < typename _CharTp, typename Traits, typename Alloc >
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
#include "Kyoto/Animation/CPASParmInfo.hpp"
|
||||
|
||||
#include "Kyoto/Streams/CInputStream.hpp"
|
||||
|
||||
CPASParmInfo::CPASParmInfo(CInputStream& in)
|
||||
: x0_type(CPASAnimParm::kPT_None)
|
||||
, x4_weightFunction(kWF_Invalid)
|
||||
, x8_weight(0.f)
|
||||
, xc_min(CPASAnimParm::FromInt32(0).GetParameter())
|
||||
, x10_max(CPASAnimParm::FromInt32(0).GetParameter()) {
|
||||
|
||||
CPASAnimParm::EParmType type = CPASAnimParm::EParmType(in.ReadInt32());
|
||||
x0_type = type;
|
||||
x4_weightFunction = EWeightFunction(in.ReadInt32());
|
||||
x8_weight = in.ReadFloat();
|
||||
|
||||
switch (type) {
|
||||
case CPASAnimParm::kPT_Int32:
|
||||
xc_min.m_int = in.ReadInt32();
|
||||
x10_max.m_int = in.ReadInt32();
|
||||
break;
|
||||
case CPASAnimParm::kPT_UInt32:
|
||||
xc_min.m_uint = in.ReadLong();
|
||||
x10_max.m_uint = in.ReadLong();
|
||||
break;
|
||||
case CPASAnimParm::kPT_Float:
|
||||
xc_min.m_float = in.ReadFloat();
|
||||
x10_max.m_float = in.ReadFloat();
|
||||
break;
|
||||
case CPASAnimParm::kPT_Bool:
|
||||
xc_min.m_bool = in.ReadBool();
|
||||
x10_max.m_bool = in.ReadBool();
|
||||
break;
|
||||
case CPASAnimParm::kPT_Enum:
|
||||
xc_min.m_int = in.ReadInt32();
|
||||
x10_max.m_int = in.ReadInt32();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
|
@ -1,10 +1,13 @@
|
|||
#include "Kyoto/Animation/CPrimitive.hpp"
|
||||
|
||||
#include "Kyoto/Streams/CInputStream.hpp"
|
||||
#include "Kyoto/Streams/COutputStream.hpp"
|
||||
|
||||
CPrimitive::CPrimitive(CInputStream& in)
|
||||
: x0_animId(in.Get<CAssetId>())
|
||||
, x4_animIdx(in.Get<int>())
|
||||
, x8_animName(in) {
|
||||
: x0_animId(in.Get< CAssetId >()), x4_animIdx(in.Get< int >()), x8_animName(in) {}
|
||||
|
||||
void CPrimitive::PutTo(COutputStream& out) const {
|
||||
out.Put(x0_animId);
|
||||
out.Put(x4_animIdx);
|
||||
out.Put(x8_animName);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue