This commit is contained in:
Jcw87
2024-01-06 17:28:23 -08:00
parent 8373a486b6
commit 5b18e66000
2 changed files with 94 additions and 19 deletions
+42
View File
@@ -0,0 +1,42 @@
#ifndef JAIFX_H
#define JAIFX_H
#include "dolphin/types.h"
namespace JASystem {
namespace DSPInterface {
struct FxlineConfig_;
}
}
namespace JAInter {
namespace Fx {
struct initOnCodeFxScene_s {
u32 field_0x0;
u32 field_0x4;
u32 field_0x8;
u32 field_0xc;
u32 field_0x10;
u32 field_0x14[1];
};
void init();
void setSceneMax(u8 param_1);
void setBufferMax(u32 param_1, u32 param_2, u32 param_3, u32 param_4);
void setTablePointer(void** param_1);
void setBufferPointer(u8 param_1, short* param_2);
void setScenePointer(u8 param_1, void* param_2);
u8 getSceneMax();
u32 getBufferSizeMax(u8 param_1);
s16* getBufferPointer(u8 param_1);
JASystem::DSPInterface::FxlineConfig_** getFxconfigTable();
extern initOnCodeFxScene_s* initOnCodeFxScene;
extern u8 mSceneMax;
extern u32* mBufferSizeMax;
extern s16** mBufferPointer;
extern void** mFxconfigTable;
}
}
#endif /* JAIFX_H */
+52 -19
View File
@@ -4,54 +4,87 @@
//
#include "JSystem/JAudio/JAIFx.h"
#include "dolphin/types.h"
#include "JSystem/JAudio/JAIBasic.h"
#include "JSystem/JAudio/JASDSPInterface.h"
#include "JSystem/JKernel/JKRSolidHeap.h"
JAInter::Fx::initOnCodeFxScene_s* JAInter::Fx::initOnCodeFxScene;
u8 JAInter::Fx::mSceneMax;
u32* JAInter::Fx::mBufferSizeMax;
s16** JAInter::Fx::mBufferPointer;
void** JAInter::Fx::mFxconfigTable;
/* 80291CCC-80292068 .text init__Q27JAInter2FxFv */
void JAInter::Fx::init() {
/* Nonmatching */
if (initOnCodeFxScene) {
mBufferSizeMax = new (JAIBasic::getCurrentJAIHeap(), 4) u32[4];
mBufferPointer = new (JAIBasic::getCurrentJAIHeap(), 4) s16*[4];
initOnCodeFxScene_s* r31 = initOnCodeFxScene;
setSceneMax(r31->field_0x0);
setBufferMax(r31->field_0x4, r31->field_0x8, r31->field_0xc, r31->field_0x10);
void** _heap = new (JAIBasic::getCurrentJAIHeap(), 0x20) void*[getSceneMax()];
JUT_ASSERT_MSG(46, _heap, "JAIFx::initHeap Cannot Alloc Heap!!\n");
setTablePointer(_heap);
for (u8 i = 0; i < getSceneMax(); i++) {
setScenePointer(i, (u8*)initOnCodeFxScene + r31->field_0x14[i]);
}
for (u8 i = 0; i < 4; i++) {
if (getBufferSizeMax(i)) {
s16* _buf = new (JAIBasic::getCurrentJAIHeap(), 0x20) s16[ALIGN_PREV(getBufferSizeMax(i) * 160, 2) / 2];
JUT_ASSERT_MSG(57, _buf, "JAIFx::initHeap Cannot Alloc Heap!!\n");
setBufferPointer(i, _buf);
JASystem::DSPInterface::FxlineConfig_* config = &getFxconfigTable()[0][i];
JASystem::DSPInterface::getFXHandle(i)->setFXLine(getBufferPointer(i), config);
}
}
}
}
/* 80292068-80292070 .text setSceneMax__Q27JAInter2FxFUc */
void JAInter::Fx::setSceneMax(unsigned char) {
/* Nonmatching */
void JAInter::Fx::setSceneMax(u8 param_1) {
mSceneMax = param_1;
}
/* 80292070-80292094 .text setBufferMax__Q27JAInter2FxFUlUlUlUl */
void JAInter::Fx::setBufferMax(unsigned long, unsigned long, unsigned long, unsigned long) {
/* Nonmatching */
void JAInter::Fx::setBufferMax(u32 param_1, u32 param_2, u32 param_3, u32 param_4) {
mBufferSizeMax[0] = param_1;
mBufferSizeMax[1] = param_2;
mBufferSizeMax[2] = param_3;
mBufferSizeMax[3] = param_4;
}
/* 80292094-8029209C .text setTablePointer__Q27JAInter2FxFPPv */
void JAInter::Fx::setTablePointer(void**) {
/* Nonmatching */
void JAInter::Fx::setTablePointer(void** param_1) {
mFxconfigTable = param_1;
}
/* 8029209C-802920AC .text setBufferPointer__Q27JAInter2FxFUcPs */
void JAInter::Fx::setBufferPointer(unsigned char, short*) {
/* Nonmatching */
void JAInter::Fx::setBufferPointer(u8 param_1, s16* param_2) {
mBufferPointer[param_1] = param_2;
}
/* 802920AC-802920BC .text setScenePointer__Q27JAInter2FxFUcPv */
void JAInter::Fx::setScenePointer(unsigned char, void*) {
/* Nonmatching */
void JAInter::Fx::setScenePointer(u8 param_1, void* param_2) {
mFxconfigTable[param_1] = param_2;
}
/* 802920BC-802920C4 .text getSceneMax__Q27JAInter2FxFv */
void JAInter::Fx::getSceneMax() {
/* Nonmatching */
u8 JAInter::Fx::getSceneMax() {
return mSceneMax;
}
/* 802920C4-802920D4 .text getBufferSizeMax__Q27JAInter2FxFUc */
void JAInter::Fx::getBufferSizeMax(unsigned char) {
/* Nonmatching */
u32 JAInter::Fx::getBufferSizeMax(u8 param_1) {
return mBufferSizeMax[param_1];
}
/* 802920D4-802920E4 .text getBufferPointer__Q27JAInter2FxFUc */
void JAInter::Fx::getBufferPointer(unsigned char) {
/* Nonmatching */
s16* JAInter::Fx::getBufferPointer(u8 param_1) {
return mBufferPointer[param_1];
}
/* 802920E4-802920EC .text getFxconfigTable__Q27JAInter2FxFv */
void JAInter::Fx::getFxconfigTable() {
/* Nonmatching */
JASystem::DSPInterface::FxlineConfig_** JAInter::Fx::getFxconfigTable() {
return (JASystem::DSPInterface::FxlineConfig_**)mFxconfigTable;
}