mirror of https://github.com/PrimeDecomp/prime.git
parent
f69ab994dd
commit
1efd8da0b0
12
Makefile
12
Makefile
|
@ -104,7 +104,7 @@ LDFLAGS := $(MAPGEN) -fp fmadd -nodefaults -w off
|
||||||
endif
|
endif
|
||||||
CFLAGS_1.2 = -proc gekko -nodefaults -Cpp_exceptions off -RTTI off -fp fmadd -str reuse,pool,readonly -O4,p -maxerrors 1 -use_lmw_stmw on -enum int -inline auto -MMD $(INCLUDES)
|
CFLAGS_1.2 = -proc gekko -nodefaults -Cpp_exceptions off -RTTI off -fp fmadd -str reuse,pool,readonly -O4,p -maxerrors 1 -use_lmw_stmw on -enum int -inline auto -MMD $(INCLUDES)
|
||||||
CFLAGS_MUSYX = -proc gekko -nodefaults -Cpp_exceptions off -RTTI off -fp fmadd -str reuse,pool,readonly -O4,p -maxerrors 1 -enum int -inline auto -MMD $(INCLUDES)
|
CFLAGS_MUSYX = -proc gekko -nodefaults -Cpp_exceptions off -RTTI off -fp fmadd -str reuse,pool,readonly -O4,p -maxerrors 1 -enum int -inline auto -MMD $(INCLUDES)
|
||||||
CFLAGS = $(CFLAGS_1.2) -gccinc
|
CFLAGS = $(CFLAGS_1.2) -gccinc -inline deferred,noauto
|
||||||
|
|
||||||
ifeq ($(VERBOSE),0)
|
ifeq ($(VERBOSE),0)
|
||||||
# this set of ASFLAGS generates no warnings.
|
# this set of ASFLAGS generates no warnings.
|
||||||
|
@ -113,13 +113,23 @@ endif
|
||||||
|
|
||||||
$(BUILD_DIR)/src/os/__start.o: MWCC_VERSION := 1.2.5
|
$(BUILD_DIR)/src/os/__start.o: MWCC_VERSION := 1.2.5
|
||||||
$(BUILD_DIR)/src/os/__start.o: CFLAGS := $(CFLAGS_1.2)
|
$(BUILD_DIR)/src/os/__start.o: CFLAGS := $(CFLAGS_1.2)
|
||||||
|
$(BUILD_DIR)/src/MetroTRK/mslsupp.o: MWCC_VERSION := 1.2.5
|
||||||
|
$(BUILD_DIR)/src/MetroTRK/mslsupp.o: CFLAGS := $(CFLAGS_1.2)
|
||||||
$(BUILD_DIR)/src/Dolphin/PPCArch.o: MWCC_VERSION := 1.2.5
|
$(BUILD_DIR)/src/Dolphin/PPCArch.o: MWCC_VERSION := 1.2.5
|
||||||
$(BUILD_DIR)/src/Dolphin/PPCArch.o: CFLAGS := $(CFLAGS_1.2)
|
$(BUILD_DIR)/src/Dolphin/PPCArch.o: CFLAGS := $(CFLAGS_1.2)
|
||||||
$(BUILD_DIR)/src/Dolphin/os/OSAudioSystem.o: MWCC_VERSION := 1.2.5
|
$(BUILD_DIR)/src/Dolphin/os/OSAudioSystem.o: MWCC_VERSION := 1.2.5
|
||||||
$(BUILD_DIR)/src/Dolphin/os/OSAudioSystem.o: CFLAGS := $(CFLAGS_1.2)
|
$(BUILD_DIR)/src/Dolphin/os/OSAudioSystem.o: CFLAGS := $(CFLAGS_1.2)
|
||||||
|
$(BUILD_DIR)/src/Dolphin/os/OSReset.o: MWCC_VERSION := 1.2.5
|
||||||
|
$(BUILD_DIR)/src/Dolphin/os/OSReset.o: CFLAGS := $(CFLAGS_1.2)
|
||||||
$(BUILD_DIR)/src/Dolphin/dsp/dsp.o: MWCC_VERSION := 1.2.5
|
$(BUILD_DIR)/src/Dolphin/dsp/dsp.o: MWCC_VERSION := 1.2.5
|
||||||
$(BUILD_DIR)/src/Dolphin/dsp/dsp.o: CFLAGS := $(CFLAGS_1.2)
|
$(BUILD_DIR)/src/Dolphin/dsp/dsp.o: CFLAGS := $(CFLAGS_1.2)
|
||||||
|
$(BUILD_DIR)/src/musyx/seq_api.o: CFLAGS := $(CFLAGS_MUSYX)
|
||||||
|
$(BUILD_DIR)/src/musyx/synth_dbtab.o: CFLAGS := $(CFLAGS_MUSYX)
|
||||||
$(BUILD_DIR)/src/musyx/snd_service.o: CFLAGS := $(CFLAGS_MUSYX)
|
$(BUILD_DIR)/src/musyx/snd_service.o: CFLAGS := $(CFLAGS_MUSYX)
|
||||||
|
$(BUILD_DIR)/src/musyx/snd_init.o: CFLAGS := $(CFLAGS_MUSYX)
|
||||||
|
$(BUILD_DIR)/src/musyx/dsp_import.o: CFLAGS := $(CFLAGS_MUSYX)
|
||||||
|
$(BUILD_DIR)/src/musyx/hw_memory.o: CFLAGS := $(CFLAGS_MUSYX)
|
||||||
|
$(BUILD_DIR)/src/musyx/reverb_fx.o: CFLAGS := $(CFLAGS_MUSYX)
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
# Recipes
|
# Recipes
|
||||||
|
|
|
@ -529,7 +529,6 @@ lbl_805ADE04:
|
||||||
lbl_803D5E98:
|
lbl_803D5E98:
|
||||||
# ROM: 0x3D2E98
|
# ROM: 0x3D2E98
|
||||||
.asciz "CMDL_GameCube"
|
.asciz "CMDL_GameCube"
|
||||||
.byte 0x3F, 0x3F
|
.asciz "??(??)"
|
||||||
.asciz "(??)"
|
|
||||||
.balign 4
|
.balign 4
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
class CParticleGen;
|
class CParticleGen;
|
||||||
class IWeaponRenderer {
|
class IWeaponRenderer {
|
||||||
|
public:
|
||||||
virtual ~IWeaponRenderer() {}
|
virtual ~IWeaponRenderer() {}
|
||||||
virtual void AddParticleGen(const CParticleGen& gen) = 0;
|
virtual void AddParticleGen(const CParticleGen& gen) = 0;
|
||||||
|
|
||||||
|
@ -18,6 +19,4 @@ public:
|
||||||
void AddParticleGen(const CParticleGen& gen);
|
void AddParticleGen(const CParticleGen& gen);
|
||||||
};
|
};
|
||||||
|
|
||||||
static CDefaultRenderer sDefaultRenderer = CDefaultRenderer();;
|
|
||||||
|
|
||||||
#endif //__IWEAPONRENDERER_HPP__
|
#endif //__IWEAPONRENDERER_HPP__
|
||||||
|
|
|
@ -2,16 +2,10 @@
|
||||||
|
|
||||||
#include "Kyoto/Basics/COsContext.hpp"
|
#include "Kyoto/Basics/COsContext.hpp"
|
||||||
|
|
||||||
|
IAllocator::SMetrics::SMetrics(u32 heapSize, u32 unk1, u32 unk2, u32 unk3, u32 unk4, u32 heapSize2, u32 unk5, u32 unk6, u32 unk7, u32 unk8,
|
||||||
IAllocator::~IAllocator() {
|
u32 unk9, u32 smallAllocNumAllocs, u32 smallAllocAllocatedSize, u32 smallAllocRemainingSize,
|
||||||
|
u32 mediumAllocNumAllocs, u32 mediumAllocAllocatedSize, u32 mediumAllocBlocksAvailable, u32 unk10, u32 unk11,
|
||||||
}
|
u32 unk12, u32 mediumAllocTotalAllocated, u32 fakeStatics)
|
||||||
|
|
||||||
IAllocator::SMetrics::SMetrics(u32 heapSize, u32 unk1, u32 unk2, u32 unk3, u32 unk4, u32 heapSize2, u32 unk5, u32 unk6,
|
|
||||||
u32 unk7, u32 unk8, u32 unk9, u32 smallAllocNumAllocs, u32 smallAllocAllocatedSize,
|
|
||||||
u32 smallAllocRemainingSize, u32 mediumAllocNumAllocs, u32 mediumAllocAllocatedSize,
|
|
||||||
u32 mediumAllocBlocksAvailable, u32 unk10, u32 unk11, u32 unk12,
|
|
||||||
u32 mediumAllocTotalAllocated, u32 fakeStatics)
|
|
||||||
: x0_heapSize(heapSize)
|
: x0_heapSize(heapSize)
|
||||||
, x4_(unk1)
|
, x4_(unk1)
|
||||||
, x8_(unk2)
|
, x8_(unk2)
|
||||||
|
@ -34,3 +28,5 @@ IAllocator::SMetrics::SMetrics(u32 heapSize, u32 unk1, u32 unk2, u32 unk3, u32 u
|
||||||
, x4c_(unk12)
|
, x4c_(unk12)
|
||||||
, x50_mediumTotalAllocated(mediumAllocTotalAllocated)
|
, x50_mediumTotalAllocated(mediumAllocTotalAllocated)
|
||||||
, x54_fakeStatics(fakeStatics) {}
|
, x54_fakeStatics(fakeStatics) {}
|
||||||
|
|
||||||
|
IAllocator::~IAllocator() {}
|
||||||
|
|
|
@ -2,13 +2,6 @@
|
||||||
|
|
||||||
#include "Dolphin/os.h"
|
#include "Dolphin/os.h"
|
||||||
|
|
||||||
bool CStopwatch::CSWData::Initialize() {
|
|
||||||
x0_timerFreq = OS_TIMER_CLOCK;
|
|
||||||
x8_timerFreqO1M = x0_timerFreq / 1000000ll;
|
|
||||||
x10_timerPeriod = 1.f / static_cast<f32>(x0_timerFreq);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CStopwatch::CSWData::Wait(f32 v) const {
|
void CStopwatch::CSWData::Wait(f32 v) const {
|
||||||
OSTime duration = OSSecondsToTicks(v);
|
OSTime duration = OSSecondsToTicks(v);
|
||||||
OSTime end = OSGetTime() + duration;
|
OSTime end = OSGetTime() + duration;
|
||||||
|
@ -19,3 +12,10 @@ void CStopwatch::CSWData::Wait(f32 v) const {
|
||||||
diff = current - end;
|
diff = current - end;
|
||||||
} while (diff < 0);
|
} while (diff < 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CStopwatch::CSWData::Initialize() {
|
||||||
|
x0_timerFreq = OS_TIMER_CLOCK;
|
||||||
|
x8_timerFreqO1M = x0_timerFreq / 1000000ll;
|
||||||
|
x10_timerPeriod = 1.f / static_cast<f32>(x0_timerFreq);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
|
@ -4,37 +4,97 @@
|
||||||
|
|
||||||
#include "Kyoto/Alloc/CMemory.hpp"
|
#include "Kyoto/Alloc/CMemory.hpp"
|
||||||
|
|
||||||
static u8 c;
|
CInputStream::CInputStream(size_t len)
|
||||||
static u16 s;
|
: x4_blockOffset(0)
|
||||||
static u32 l;
|
, x8_blockLen(0)
|
||||||
static u64 ll;
|
, xc_len(len)
|
||||||
static f32 f;
|
, x10_ptr(new u8[len])
|
||||||
|
, x14_owned(true)
|
||||||
|
, x18_readPosition(0)
|
||||||
|
, x1c_bitWord(0)
|
||||||
|
, x20_bitOffset(0) {}
|
||||||
|
|
||||||
f32 CInputStream::ReadFloat() {
|
CInputStream::CInputStream(const void* ptr, size_t len, bool owned)
|
||||||
Get(&f, sizeof(f32));
|
: x4_blockOffset(0)
|
||||||
return f;
|
, x8_blockLen(len)
|
||||||
|
, xc_len(len)
|
||||||
|
, x10_ptr(const_cast< u8* >(reinterpret_cast< const u8* >(ptr)))
|
||||||
|
, x14_owned(owned)
|
||||||
|
, x18_readPosition(0)
|
||||||
|
, x1c_bitWord(0)
|
||||||
|
, x20_bitOffset(0) {}
|
||||||
|
|
||||||
|
CInputStream::~CInputStream() {
|
||||||
|
if (x14_owned) {
|
||||||
|
delete x10_ptr;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
u64 CInputStream::ReadLongLong() {
|
bool CInputStream::InternalReadNext() {
|
||||||
Get(&ll, sizeof(u64));
|
x8_blockLen = Read(x10_ptr, xc_len);
|
||||||
return ll;
|
x4_blockOffset = 0;
|
||||||
|
return x8_blockLen != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 CInputStream::ReadLong() {
|
bool CInputStream::GrabAnotherBlock() { return InternalReadNext(); }
|
||||||
Get(&l, sizeof(u32));
|
|
||||||
return l;
|
void CInputStream::Get(void* dest, unsigned long len) {
|
||||||
|
u32 remain = len;
|
||||||
|
u32 readCount = 0;
|
||||||
|
x20_bitOffset = 0;
|
||||||
|
|
||||||
|
while (remain != 0) {
|
||||||
|
u32 blockLen = x8_blockLen - x4_blockOffset;
|
||||||
|
blockLen = remain < blockLen ? remain : blockLen;
|
||||||
|
|
||||||
|
if (blockLen != 0) {
|
||||||
|
memcpy(reinterpret_cast< u8* >(dest) + readCount, x10_ptr + x4_blockOffset, blockLen);
|
||||||
|
remain -= blockLen;
|
||||||
|
readCount += blockLen;
|
||||||
|
x4_blockOffset += blockLen;
|
||||||
|
} else if (remain > 256) {
|
||||||
|
u32 readLen = Read(reinterpret_cast< u8* >(dest) + readCount, remain);
|
||||||
|
remain -= readLen;
|
||||||
|
readCount += readLen;
|
||||||
|
} else {
|
||||||
|
GrabAnotherBlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
x18_readPosition += readCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 CInputStream::ReadShort() {
|
u32 CInputStream::ReadBytes(void* dest, unsigned long len) {
|
||||||
Get(&s, sizeof(u16));
|
if (len == 0) {
|
||||||
return s;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CInputStream::ReadBool() { return static_cast< bool >(ReadChar()); }
|
if (x4_blockOffset == x8_blockLen) {
|
||||||
|
GrabAnotherBlock();
|
||||||
|
}
|
||||||
|
|
||||||
u8 CInputStream::ReadChar() {
|
u32 curLen = len;
|
||||||
Get(&c, sizeof(u8));
|
u32 curReadLen = 0;
|
||||||
return c;
|
|
||||||
|
while (curReadLen < len) {
|
||||||
|
u32 remain = x8_blockLen - x4_blockOffset;
|
||||||
|
if (remain == 0) {
|
||||||
|
if (InternalReadNext()) {
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
return curReadLen;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 sz = curLen < remain ? curLen : remain;
|
||||||
|
memcpy(reinterpret_cast< u8* >(dest) + curReadLen, x10_ptr + x4_blockOffset, sz);
|
||||||
|
curReadLen += sz;
|
||||||
|
curLen -= sz;
|
||||||
|
x4_blockOffset += sz;
|
||||||
|
}
|
||||||
|
|
||||||
|
x18_readPosition += curReadLen;
|
||||||
|
return curReadLen;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline u32 BitsToBytes(u32 bits) { return (bits / 8) + ((bits % 8) ? 1 : 0); }
|
static inline u32 BitsToBytes(u32 bits) { return (bits / 8) + ((bits % 8) ? 1 : 0); }
|
||||||
|
@ -84,95 +144,34 @@ u32 CInputStream::ReadBits(u32 bitCount) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 CInputStream::ReadBytes(void* dest, unsigned long len) {
|
u8 CInputStream::ReadChar() {
|
||||||
if (len == 0) {
|
static u8 c;
|
||||||
return 0;
|
Get(&c, sizeof(u8));
|
||||||
}
|
return c;
|
||||||
|
|
||||||
if (x4_blockOffset == x8_blockLen) {
|
|
||||||
GrabAnotherBlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
u32 curLen = len;
|
|
||||||
u32 curReadLen = 0;
|
|
||||||
|
|
||||||
while (curReadLen < len) {
|
|
||||||
u32 remain = x8_blockLen - x4_blockOffset;
|
|
||||||
if (remain == 0) {
|
|
||||||
if (InternalReadNext()) {
|
|
||||||
continue;
|
|
||||||
} else {
|
|
||||||
return curReadLen;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
u32 sz = curLen < remain ? curLen : remain;
|
|
||||||
memcpy(reinterpret_cast< u8* >(dest) + curReadLen, x10_ptr + x4_blockOffset, sz);
|
|
||||||
curReadLen += sz;
|
|
||||||
curLen -= sz;
|
|
||||||
x4_blockOffset += sz;
|
|
||||||
}
|
|
||||||
|
|
||||||
x18_readPosition += curReadLen;
|
|
||||||
return curReadLen;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CInputStream::Get(void* dest, unsigned long len) {
|
bool CInputStream::ReadBool() { return static_cast< bool >(ReadChar()); }
|
||||||
u32 remain = len;
|
|
||||||
u32 readCount = 0;
|
|
||||||
x20_bitOffset = 0;
|
|
||||||
|
|
||||||
while (remain != 0) {
|
u16 CInputStream::ReadShort() {
|
||||||
u32 blockLen = x8_blockLen - x4_blockOffset;
|
static u16 s;
|
||||||
blockLen = remain < blockLen ? remain : blockLen;
|
Get(&s, sizeof(u16));
|
||||||
|
return s;
|
||||||
if (blockLen != 0) {
|
|
||||||
memcpy(reinterpret_cast< u8* >(dest) + readCount, x10_ptr + x4_blockOffset, blockLen);
|
|
||||||
remain -= blockLen;
|
|
||||||
readCount += blockLen;
|
|
||||||
x4_blockOffset += blockLen;
|
|
||||||
} else if (remain > 256) {
|
|
||||||
u32 readLen = Read(reinterpret_cast< u8* >(dest) + readCount, remain);
|
|
||||||
remain -= readLen;
|
|
||||||
readCount += readLen;
|
|
||||||
} else {
|
|
||||||
GrabAnotherBlock();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
x18_readPosition += readCount;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CInputStream::GrabAnotherBlock() { return InternalReadNext(); }
|
u32 CInputStream::ReadLong() {
|
||||||
|
static u32 l;
|
||||||
bool CInputStream::InternalReadNext() {
|
Get(&l, sizeof(u32));
|
||||||
x8_blockLen = Read(x10_ptr, xc_len);
|
return l;
|
||||||
x4_blockOffset = 0;
|
|
||||||
return x8_blockLen != 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CInputStream::~CInputStream() {
|
u64 CInputStream::ReadLongLong() {
|
||||||
if (x14_owned) {
|
static u64 ll;
|
||||||
delete x10_ptr;
|
Get(&ll, sizeof(u64));
|
||||||
}
|
return ll;
|
||||||
}
|
}
|
||||||
|
|
||||||
CInputStream::CInputStream(const void* ptr, size_t len, bool owned)
|
f32 CInputStream::ReadFloat() {
|
||||||
: x4_blockOffset(0)
|
static f32 f;
|
||||||
, x8_blockLen(len)
|
Get(&f, sizeof(f32));
|
||||||
, xc_len(len)
|
return f;
|
||||||
, x10_ptr(const_cast< u8* >(reinterpret_cast< const u8* >(ptr)))
|
}
|
||||||
, x14_owned(owned)
|
|
||||||
, x18_readPosition(0)
|
|
||||||
, x1c_bitWord(0)
|
|
||||||
, x20_bitOffset(0) {}
|
|
||||||
|
|
||||||
CInputStream::CInputStream(size_t len)
|
|
||||||
: x4_blockOffset(0)
|
|
||||||
, x8_blockLen(0)
|
|
||||||
, xc_len(len)
|
|
||||||
, x10_ptr(new u8[len])
|
|
||||||
, x14_owned(true)
|
|
||||||
, x18_readPosition(0)
|
|
||||||
, x1c_bitWord(0)
|
|
||||||
, x20_bitOffset(0) {}
|
|
||||||
|
|
|
@ -1,11 +1,8 @@
|
||||||
#include "Kyoto/Streams/CMemoryInStream.hpp"
|
#include "Kyoto/Streams/CMemoryInStream.hpp"
|
||||||
|
|
||||||
u32 CMemoryInStream::Read(void* dest, u32 len) {
|
CMemoryInStream::CMemoryInStream(const void* ptr, unsigned long len, EOwnerShip ownership)
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
CMemoryInStream::CMemoryInStream(const void* ptr, unsigned long len)
|
|
||||||
: CInputStream(ptr, len, false) {}
|
|
||||||
|
|
||||||
CMemoryInStream::CMemoryInStream(const void* ptr, unsigned long len, EOwnerShip ownership)
|
|
||||||
: CInputStream(ptr, len, ownership == kOS_Owned) {}
|
: CInputStream(ptr, len, ownership == kOS_Owned) {}
|
||||||
|
|
||||||
|
CMemoryInStream::CMemoryInStream(const void* ptr, unsigned long len) : CInputStream(ptr, len, false) {}
|
||||||
|
|
||||||
|
u32 CMemoryInStream::Read(void* dest, u32 len) { return 0; }
|
||||||
|
|
|
@ -6,20 +6,7 @@
|
||||||
#include "Kyoto/CFactoryMgr.hpp"
|
#include "Kyoto/CFactoryMgr.hpp"
|
||||||
|
|
||||||
static FourCC mCurrentLanguage = 'ENGL';
|
static FourCC mCurrentLanguage = 'ENGL';
|
||||||
|
|
||||||
CFactoryFnReturn FStringTableFactory(const SObjectTag& tag, CInputStream& in, const CVParamTransfer& xfer) { return new CStringTable(in); }
|
|
||||||
|
|
||||||
template <>
|
|
||||||
CFactoryFnReturn::CFactoryFnReturn(CStringTable* ptr) : obj(TToken< CStringTable >::GetIObjObjectFor(ptr).release()) {}
|
|
||||||
|
|
||||||
static const wchar_t skInvalidString[] = L"Invalid";
|
static const wchar_t skInvalidString[] = L"Invalid";
|
||||||
const wchar_t* CStringTable::GetString(s32 idx) const {
|
|
||||||
if (idx < 0 || idx >= x0_stringCount) {
|
|
||||||
return skInvalidString;
|
|
||||||
}
|
|
||||||
s32 offset = *(reinterpret_cast< const s32* >(x4_data.get()) + idx);
|
|
||||||
return reinterpret_cast< const wchar_t* >(x4_data.get() + offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
CStringTable::CStringTable(CInputStream& in) : x0_stringCount(0), x4_data(NULL) {
|
CStringTable::CStringTable(CInputStream& in) : x0_stringCount(0), x4_data(NULL) {
|
||||||
in.ReadLong();
|
in.ReadLong();
|
||||||
|
@ -46,3 +33,16 @@ CStringTable::CStringTable(CInputStream& in) : x0_stringCount(0), x4_data(NULL)
|
||||||
x4_data = new u8[dataLen];
|
x4_data = new u8[dataLen];
|
||||||
in.ReadBytes(x4_data.get(), dataLen);
|
in.ReadBytes(x4_data.get(), dataLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const wchar_t* CStringTable::GetString(s32 idx) const {
|
||||||
|
if (idx < 0 || idx >= x0_stringCount) {
|
||||||
|
return skInvalidString;
|
||||||
|
}
|
||||||
|
s32 offset = *(reinterpret_cast< const s32* >(x4_data.get()) + idx);
|
||||||
|
return reinterpret_cast< const wchar_t* >(x4_data.get() + offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
CFactoryFnReturn::CFactoryFnReturn(CStringTable* ptr) : obj(TToken< CStringTable >::GetIObjObjectFor(ptr).release()) {}
|
||||||
|
|
||||||
|
CFactoryFnReturn FStringTableFactory(const SObjectTag& tag, CInputStream& in, const CVParamTransfer& xfer) { return new CStringTable(in); }
|
||||||
|
|
|
@ -97,7 +97,7 @@ void CMain::RefreshGameState() {
|
||||||
x128_gameGlobalObjects->GameState() = nullptr;
|
x128_gameGlobalObjects->GameState() = nullptr;
|
||||||
gpGameState = nullptr;
|
gpGameState = nullptr;
|
||||||
{
|
{
|
||||||
CMemoryInStream stream(backupBuf.data(), backupBuf.size(), CMemoryInStream::Owned);
|
CMemoryInStream stream(backupBuf.data(), backupBuf.size(), CMemoryInStream::kOS_Owned);
|
||||||
x128_gameGlobalObjects->GameState() = new CGameState(stream, saveIdx);
|
x128_gameGlobalObjects->GameState() = new CGameState(stream, saveIdx);
|
||||||
}
|
}
|
||||||
gpGameState = x128_gameGlobalObjects->GameState().get();
|
gpGameState = x128_gameGlobalObjects->GameState().get();
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
#include "Kyoto/Particles/CParticleGen.hpp"
|
#include "Kyoto/Particles/CParticleGen.hpp"
|
||||||
#include "Kyoto/Alloc/CMemory.hpp"
|
#include "Kyoto/Alloc/CMemory.hpp"
|
||||||
|
|
||||||
//CDefaultRenderer sDefaultRenderer = CDefaultRenderer();
|
static CDefaultRenderer sDefaultRenderer = CDefaultRenderer();
|
||||||
IWeaponRenderer* IWeaponRenderer::sWeaponRenderer = &sDefaultRenderer;
|
IWeaponRenderer* IWeaponRenderer::sWeaponRenderer = &sDefaultRenderer;
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue