summaryrefslogtreecommitdiff
path: root/include/egg
diff options
context:
space:
mode:
authorelijah-thomas774 <elijahthomas774@gmail.com>2025-06-08 12:54:43 -0400
committerelijah-thomas774 <elijahthomas774@gmail.com>2025-06-08 12:54:43 -0400
commit5ecc9708a2c2517dcc12245c38deb6c50b55d555 (patch)
treebd4a4b2ad9fbd4174623b589ddc98075748eee5e /include/egg
parent3c364000e91601da2d20976794d8c4b95820515e (diff)
parent5f65ed3866d88973965ca6bd1c3750877d4fd2d7 (diff)
Merge remote-tracking branch 'upstream/main' into blurpalette_mgr
Diffstat (limited to 'include/egg')
-rw-r--r--include/egg/audio/eggAudioArcPlayerMgr.h31
-rw-r--r--include/egg/audio/eggAudioHeapMgr.h39
-rw-r--r--include/egg/audio/eggAudioUtility.h2
-rw-r--r--include/egg/core/eggDvdRipper.h24
-rw-r--r--include/egg/gfx/eggCamera.h19
-rw-r--r--include/egg/math/eggMatrix.h9
6 files changed, 98 insertions, 26 deletions
diff --git a/include/egg/audio/eggAudioArcPlayerMgr.h b/include/egg/audio/eggAudioArcPlayerMgr.h
index 49673250..f9b982c0 100644
--- a/include/egg/audio/eggAudioArcPlayerMgr.h
+++ b/include/egg/audio/eggAudioArcPlayerMgr.h
@@ -26,12 +26,20 @@ public:
void stopAllSound();
u32 changeNameToId(const char *name) {
- return mOpenSndArchive->ConvertLabelStringToSoundId(name);
+ u32 id = -1;
+ if (mOpenSndArchive != nullptr) {
+ id = mOpenSndArchive->ConvertLabelStringToSoundId(name);
+ }
+ return id;
}
nw4r::snd::SoundArchivePlayer *getPlayer() {
return mActiveSndArchivePlayer;
}
+ nw4r::snd::SoundArchive *getArchive() {
+ return mOpenSndArchive;
+ }
+
void setLoadStringLabels(bool bLoad) {
mLoadLabelStringData = bLoad;
}
@@ -65,12 +73,7 @@ public:
virtual bool startSound(nw4r::snd::SoundHandle *handle, const char *name) // at 0x40
{
- u32 id = -1;
- if (mOpenSndArchive) {
- id = changeNameToId(name);
- }
-
- return ArcPlayer::startSound(handle, id);
+ return ArcPlayer::startSound(handle, changeNameToId(name));
}
virtual bool prepareSound(nw4r::snd::SoundHandle *handle, u32 id) // at 0x44
@@ -85,12 +88,7 @@ public:
virtual bool prepareSound(nw4r::snd::SoundHandle *handle, const char *name) // at 0x4C
{
- u32 id = -1;
- if (mOpenSndArchive) {
- id = changeNameToId(name);
- }
-
- return ArcPlayer::prepareSound(handle, id);
+ return ArcPlayer::prepareSound(handle, changeNameToId(name));
}
virtual bool holdSound(nw4r::snd::SoundHandle *handle, u32 id) // at 0x50
@@ -105,12 +103,7 @@ public:
virtual bool holdSound(nw4r::snd::SoundHandle *handle, const char *name) // at 0x58
{
- u32 id = -1;
- if (mOpenSndArchive) {
- id = changeNameToId(name);
- }
-
- return ArcPlayer::holdSound(handle, id);
+ return ArcPlayer::holdSound(handle, changeNameToId(name));
}
private:
diff --git a/include/egg/audio/eggAudioHeapMgr.h b/include/egg/audio/eggAudioHeapMgr.h
index fa8ef361..9fd269cc 100644
--- a/include/egg/audio/eggAudioHeapMgr.h
+++ b/include/egg/audio/eggAudioHeapMgr.h
@@ -21,9 +21,38 @@ public:
~SoundHeapMgr() {
destroySoundHeap();
}
- virtual bool loadState(s32 id) {}
- virtual int getCurrentLevel() {}
- virtual void stateProc() {}
+ int saveState() {
+ return mSoundHeap.SaveState();
+ }
+ virtual bool loadState(s32 id) {
+ s32 level = mSoundHeap.GetCurrentLevel();
+ if (id > 0 && level >= id) {
+ mSoundHeap.LoadState(id);
+ return true;
+ } else {
+ return false;
+ }
+ }
+ virtual int getCurrentLevel() {
+ return mSoundHeap.GetCurrentLevel();
+ }
+ virtual void stateProc() {
+ OSMessage msg;
+ if (OSReceiveMessage(&mQueue1.mQueue, &msg, 0)) {
+ bool ok = loadState((s32)msg);
+ OSSendMessage(&mQueue3.mQueue, (OSMessage)ok, 0);
+ }
+
+ if (OSReceiveMessage(&mQueue2.mQueue, &msg, 0)) {
+ int ok = mSoundHeap.SaveState();
+ OSSendMessage(&mQueue3.mQueue, (OSMessage)ok, 0);
+ }
+
+ if (OSReceiveMessage(&mQueue, &msg, 0)) {
+ int level = getCurrentLevel();
+ OSSendMessage(&mQueue3.mQueue, (OSMessage)level, 0);
+ }
+ }
void createSoundHeap(Allocator *allocator, u32 size);
void destroySoundHeap();
@@ -34,7 +63,9 @@ public:
private:
nw4r::snd::SoundHeap mSoundHeap;
- u8 unk[0x68 - 0x38];
+ // I guess we're not initializing this queue?
+ OSMessageQueue mQueue;
+ OSMessage mBuffer[4];
SoundMessageQueue mQueue1;
SoundMessageQueue mQueue2;
SoundMessageQueue mQueue3;
diff --git a/include/egg/audio/eggAudioUtility.h b/include/egg/audio/eggAudioUtility.h
index 6a56ea66..7abb95b9 100644
--- a/include/egg/audio/eggAudioUtility.h
+++ b/include/egg/audio/eggAudioUtility.h
@@ -12,7 +12,7 @@ namespace EGG {
struct MultiArcSimpleAudioMgr {
u8 field_0x000[0x0FC - 0x000];
s32 field_0x0FC;
- ArcPlayer players[];
+ ArcPlayer players[1];
nw4r::snd::SoundArchivePlayer *getPlayer(int i) {
return players[i].getPlayer();
diff --git a/include/egg/core/eggDvdRipper.h b/include/egg/core/eggDvdRipper.h
index 82fd09b2..8f4b4b48 100644
--- a/include/egg/core/eggDvdRipper.h
+++ b/include/egg/core/eggDvdRipper.h
@@ -6,7 +6,6 @@
#include "egg/core/eggHeap.h"
#include "egg/core/eggStreamDecomp.h"
-
namespace EGG {
class DvdRipper {
@@ -28,6 +27,29 @@ public:
typedef void (*UnkCallback)(void *);
public:
+ // Not sure
+ struct Arg {
+ Arg(const char *path, u8 *pOut, Heap *pHeap, EAllocDirection allocDir, u32 offset, u32 *pRead, u32 *fileSize)
+ : path(path),
+ pOut(pOut),
+ pHeap(pHeap),
+ allocDir(allocDir),
+ offset(offset),
+ pRead(pRead),
+ fileSize(fileSize) {}
+ const char *path;
+ u8 *pOut;
+ Heap *pHeap;
+ EAllocDirection allocDir;
+ u32 offset;
+ u32 *pRead;
+ u32 *fileSize;
+ };
+
+ static u8 *loadToMainRAM(Arg &arg) {
+ return loadToMainRAM(arg.path, arg.pOut, arg.pHeap, arg.allocDir, arg.offset, arg.pRead, arg.fileSize);
+ }
+
static u8 *
loadToMainRAM(s32 entryNum, u8 *pOut, Heap *pHeap, EAllocDirection allocDir, u32 offset, u32 *pRead, u32 *fileSize);
diff --git a/include/egg/gfx/eggCamera.h b/include/egg/gfx/eggCamera.h
index c3104fb7..67c3853d 100644
--- a/include/egg/gfx/eggCamera.h
+++ b/include/egg/gfx/eggCamera.h
@@ -35,6 +35,15 @@ protected:
class LookAtCamera : public BaseCamera {
public:
LookAtCamera() : mPos(0.0f, 10.0f, 0.0f), mAt(0.0f, 0.0f, 0.0f), mUp(0.0f, 1.0f, 0.0f) {}
+
+ LookAtCamera& operator=(const LookAtCamera &other) {
+ mViewMtx.copyFrom(other.mViewMtx);
+ mOtherMtx.copyFrom(other.mOtherMtx);
+ mPos = other.mPos;
+ mAt = other.mAt;
+ mUp = other.mUp;
+ return *this;
+ }
// Which way around?
virtual Matrix34f &getViewMatrix() override {
return mViewMtx;
@@ -53,7 +62,15 @@ public:
virtual void doDraw() override;
virtual Matrix34f &getViewMatrixOld() override;
-protected:
+ Vector3f getDirection() const {
+ return mAt - mPos;
+ }
+
+ Vector3f getOtherDirection() const {
+ return mPos - mAt;
+ }
+
+public:
/* 0x64 */ Vector3f mPos;
/* 0x70 */ Vector3f mAt;
/* 0x7C */ Vector3f mUp;
diff --git a/include/egg/math/eggMatrix.h b/include/egg/math/eggMatrix.h
index a99a0698..d16f2865 100644
--- a/include/egg/math/eggMatrix.h
+++ b/include/egg/math/eggMatrix.h
@@ -4,6 +4,7 @@
#include "common.h"
#include "egg/math/eggQuat.h"
#include "egg/math/eggVector.h"
+#include "nw4r/math/math_types.h"
namespace EGG {
@@ -55,6 +56,14 @@ struct Matrix34f {
void multiplyTo(const Matrix34f &m2, Matrix34f &to) const;
void dump();
+ operator nw4r::math::MTX34 *() {
+ return (nw4r::math::MTX34 *)this;
+ }
+
+ operator const nw4r::math::MTX34 *() const {
+ return (nw4r::math::MTX34 *)this;
+ }
+
public:
void concat(const Matrix34f &, Matrix34f &) const;
void rotate(const Vector3f &rpy) const;