Merge branch 'main' into pjb-audio

This commit is contained in:
PJB3005
2026-03-27 17:18:11 +01:00
100 changed files with 2987 additions and 1076 deletions
+9 -9
View File
@@ -4453,7 +4453,7 @@ void daAlink_c::playerInit() {
mAtSph.StartCAt(current.pos);
mAnmHeap3.setBufferSize(0x20000);
mAnmHeap3.createHeap(daPy_anmHeap_c::HEAP_TYPE_4);
PLAYER_CREATE_ANM_HEAP(mAnmHeap3, daPy_anmHeap_c::HEAP_TYPE_4, "daAlink_c::mAnmHeap3");
if (checkWolf()) {
changeWolf();
@@ -4462,7 +4462,7 @@ void daAlink_c::playerInit() {
}
mAnmHeap4.setBufferSize(0xB00);
mAnmHeap4.createHeap(daPy_anmHeap_c::HEAP_TYPE_4);
PLAYER_CREATE_ANM_HEAP(mAnmHeap4, daPy_anmHeap_c::HEAP_TYPE_4, "daAlink_c::mAnmHeap4");
setShieldModel();
#if DEBUG
@@ -4507,24 +4507,24 @@ void daAlink_c::playerInit() {
for (i = 0; i < 3; i++) {
mUnderAnmHeap[i].setBuffer(mUnderAnmHeap[0].getBuffer() + (i * 0x2C00));
mUnderAnmHeap[i].createHeap(daPy_anmHeap_c::HEAP_TYPE_3);
PLAYER_CREATE_ANM_HEAP_F(mUnderAnmHeap[i], daPy_anmHeap_c::HEAP_TYPE_3, "daAlink_c::mUnderAnmHeap[%d]", i);
}
mUpperAnmHeap[0].setBuffer(mUnderAnmHeap[0].getBuffer() + 0x8400);
for (i = 0; i < 3; i++) {
mUpperAnmHeap[i].setBuffer(mUpperAnmHeap[0].getBuffer() + (i * 0x2C00));
mUpperAnmHeap[i].createHeap(daPy_anmHeap_c::HEAP_TYPE_3);
PLAYER_CREATE_ANM_HEAP_F(mUpperAnmHeap[i], daPy_anmHeap_c::HEAP_TYPE_3, "daAlink_c::mUpperAnmHeap[%d]", i);
}
mFaceBtpHeap.createHeap(daPy_anmHeap_c::HEAP_TYPE_1);
mFaceBtkHeap.createHeap(daPy_anmHeap_c::HEAP_TYPE_2);
mFaceBckHeap.createHeap(daPy_anmHeap_c::HEAP_TYPE_3);
PLAYER_CREATE_ANM_HEAP(mFaceBtpHeap, daPy_anmHeap_c::HEAP_TYPE_1, "daAlink_c::mFaceBtpHeap");
PLAYER_CREATE_ANM_HEAP(mFaceBtkHeap, daPy_anmHeap_c::HEAP_TYPE_2, "daAlink_c::mFaceBtkHeap");
PLAYER_CREATE_ANM_HEAP(mFaceBckHeap, daPy_anmHeap_c::HEAP_TYPE_3, "daAlink_c::mFaceBckHeap");
for (i = 0; i < 2; i++) {
mItemHeap[i].setBufferSize(0x13200);
mItemHeap[i].createHeap(daPy_anmHeap_c::HEAP_TYPE_4);
PLAYER_CREATE_ANM_HEAP_F(mItemHeap[i], daPy_anmHeap_c::HEAP_TYPE_4, "daAlink_c::mItemHeap[%d]", i);
}
mAnmHeap9.createHeap(daPy_anmHeap_c::HEAP_TYPE_3);
PLAYER_CREATE_ANM_HEAP(mAnmHeap9, daPy_anmHeap_c::HEAP_TYPE_3, "daAlink_c::mAnmHeap9");
resetBasAnime();
mZ2Link.init(&current.pos, &eyePos, &field_0x3720);
+1
View File
@@ -532,6 +532,7 @@ int daBg_c::create() {
if (room_heap != NULL) {
this->heap = JKRCreateSolidHeap(-1, room_heap, false);
JUT_ASSERT(471, heap != NULL);
JKRHEAP_NAME(heap, "d_a_bg Anms");
JKRHeap* old = mDoExt_setCurrentHeap(this->heap);
int rt = createHeap();
+6
View File
@@ -1578,11 +1578,17 @@ bool daE_DT_c::pointInSight(cXyz* i_point) {
f32 width = scissor->width;
f32 height = scissor->height;
mDoLib_project(i_point, &proj);
#if TARGET_PC
view_port_class* viewport = dComIfGp_getWindow(dComIfGp_getCameraWinID(idx))->getViewPort();
return proj.x > 0.0f && proj.x < width && proj.y > (30.0f * viewport->height / FB_HEIGHT) && -(30.0f * viewport->height / FB_HEIGHT) < height;
#else
if (proj.x > 0.0f && proj.x < width && proj.y > 30.0f && -30.0f < height) {
return true;
} else {
return false;
}
#endif
}
void daE_DT_c::executeOpening() {
+9 -1
View File
@@ -527,7 +527,7 @@ static void search_ground_1(e_yg_class* i_this) {
fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor;
dBgS_LinChk lin_chk;
cXyz start, end, work;
cXyz pos[16];
cXyz pos[16]{};
s16 y_rot = actor->shape_angle.y;
s8 line_cross_flag = false;
@@ -560,6 +560,14 @@ static void search_ground_1(e_yg_class* i_this) {
pos[i] = actor->current.pos;
pos[i].x += 10000.0f;
}
} else {
// Ensure all elements are initialized. This function is buggy and
// blows up if pos[0].x or pos[0].z is NaN, but for some reason this
// never happens on hardware - probably just dumb luck.
#if AVOID_UB
pos[i] = actor->current.pos;
pos[i].x += 10000.0f;
#endif
}
ANGLE_ADD(y_rot, 0x1000);
+4 -4
View File
@@ -565,12 +565,12 @@ cPhs_Step daMidna_c::create() {
mpFunc = &daMidna_c::checkMetamorphoseEnableBase;
for (u16 i = 0; i < 3; i++) {
mBckHeap[i].createHeap(daPy_anmHeap_c::HEAP_TYPE_3);
PLAYER_CREATE_ANM_HEAP_F(mBckHeap[i], daPy_anmHeap_c::HEAP_TYPE_3, "daMidna_c::mBckHeap[%d]", i);
}
mBtpHeap.createHeap(daPy_anmHeap_c::HEAP_TYPE_1);
mBtkHeap.createHeap(daPy_anmHeap_c::HEAP_TYPE_2);
PLAYER_CREATE_ANM_HEAP_F(mBtpHeap, daPy_anmHeap_c::HEAP_TYPE_1, "daMidna_c::mBtpHeap");
PLAYER_CREATE_ANM_HEAP_F(mBtkHeap, daPy_anmHeap_c::HEAP_TYPE_2, "daMidna_c::mBtkHeap");
mSound.init(&current.pos, &eyePos, 3, 1);
mpShadowModel = mpMorf->getModel();
mpShadowModel->setUserArea((uintptr_t)this);
+8
View File
@@ -823,7 +823,15 @@ void daNpcTks_c::playMotion() {
daNpcF_anmPlayData dat4a = {ANM_JUMP_S, 4.0f, 1};
daNpcF_anmPlayData dat4b = {ANM_FLY, 0.0f, 0};
daNpcF_anmPlayData* pDat4[2] = {&dat4a, &dat4b};
#if TARGET_PC
// Note: this fixes a crash in the cutscene after entering city and likely needs to be revisited as its
// unclear why this was 1 in the first place and unclear why this fixes it
daNpcF_anmPlayData dat5 = {ANM_JUMP_E, 0.0f, 0};
#else
daNpcF_anmPlayData dat5 = {ANM_JUMP_E, 0.0f, 1};
#endif
daNpcF_anmPlayData* pDat5[1] = {&dat5};
daNpcF_anmPlayData dat6a = {ANM_LAND, 0.0f, 1};
daNpcF_anmPlayData dat6b = {ANM_WAIT_A, 4.0f, 0};
+2
View File
@@ -1008,6 +1008,7 @@ int daPeru_c::_cutAppear_Init(int const& param_1) {
initTalk(mFlowNodeNo, NULL);
break;
case 140:
{
static cXyz see_pos;
see_pos.set(0.0f, -300.0f, 300.0f);
mDoMtx_stack_c::ZXYrotS(shape_angle);
@@ -1016,6 +1017,7 @@ int daPeru_c::_cutAppear_Init(int const& param_1) {
mJntAnm.lookPos(&see_pos, 0);
setCnt(80);
break;
}
case 150:
mJntAnm.lookNone(0);
setAction(&daPeru_c::demo_walk_to_window, 0);
+7 -3
View File
@@ -237,7 +237,11 @@ void* daPy_anmHeap_c::mallocBuffer() {
return mBuffer;
}
void daPy_anmHeap_c::createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE i_heapType) {
#if TARGET_PC
void daPy_anmHeap_c::createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE i_heapType, const char* name) {
#else
void daPy_anmHeap_c::createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE i_heapType, const char* name) {
#endif
u32 size;
if (i_heapType == 4) {
@@ -260,8 +264,8 @@ void daPy_anmHeap_c::createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE i_heapType) {
JKRHeap* tmp;
mAnimeHeap = mDoExt_createSolidHeapFromGameToCurrent(&tmp, size, 0x20);
JKRHEAP_NAMEF(mAnimeHeap, "Alink anime type %d", i_heapType);
JKRHEAP_NAME(mAnimeHeap, name);
if (i_heapType == 4) {
tmpWork = JKR_NEW_ARRAY(char, size);
JUT_ASSERT(669, tmpWork != NULL);
+7
View File
@@ -10997,7 +10997,14 @@ static int camera_draw(camera_process_class* i_this) {
#endif
int trim_height = body->TrimHeight();
#if TARGET_PC
trim_height *= viewport->height / FB_HEIGHT;
window->setScissor(0.0f, trim_height, viewport->width, viewport->height - trim_height * 2.0f);
#else
window->setScissor(0.0f, trim_height, FB_WIDTH, FB_HEIGHT - trim_height * 2.0f);
#endif
C_MTXPerspective(process->view.projMtx, process->view.fovy, process->view.aspect, process->view.near_, process->view.far_);
mDoMtx_lookAt(process->view.viewMtx, &process->view.lookat.eye, &process->view.lookat.center,
&process->view.lookat.up, process->view.bank);
+1
View File
@@ -5195,6 +5195,7 @@ void dFile_select3D_c::_create(u8 i_mirrorIdx, u8 i_maskIdx) {
if (mpSolidHeap == NULL) {
JUT_ASSERT(5189, mpSolidHeap != NULL);
}
JKRHEAP_NAME(mpSolidHeap, "dFile_select3D_c::mpSolidHeap");
field_0x03c4 = 0.0f;
field_0x03c8 = 0.0f;
+1
View File
@@ -35,6 +35,7 @@ int dkWmark_c::create() {
mpHeap = mDoExt_createSolidHeapFromGameToCurrent(0x880, 0x20);
if (mpHeap != NULL) {
JKRHEAP_NAME(mpHeap, "dkWmark_c::mpHeap");
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Alink", 0x23);
JUT_ASSERT(60, modelData != NULL);
+9 -1
View File
@@ -31,6 +31,9 @@
#include "JSystem/JKernel/JKRSolidHeap.h"
#include <cstdlib>
#include <cstring>
#if TARGET_PC
#include "dusk/imgui/ImGuiConsole.hpp"
#endif
static void GxXFog_set();
@@ -11376,7 +11379,12 @@ void dKy_bg_MAxx_proc(void* bg_model_p) {
Mtx sp1D8;
if (mat_name[6] == '2') {
C_MTXLightPerspective(sp1D8, dComIfGd_getView()->fovy,
camera_p->view.aspect, 1.0f, 1.0f, -0.01f, 0.0f);
camera_p->view.aspect, 1.0f, 1.0f,
#if TARGET_PC
dusk::g_imguiConsole.isWaterProjectionOffsetEnabled() ? -0.01f : 0.0f, 0.0f);
#else
-0.01f, 0.0f);
#endif
} else {
C_MTXLightPerspective(sp1D8, dComIfGd_getView()->fovy,
camera_p->view.aspect, 0.49f, -0.49f, 0.5f, 0.5f);
+2
View File
@@ -26,6 +26,8 @@ int dThunder_c::createHeap() {
if (mpHeap == NULL) {
return 0;
}
JKRHEAP_NAME(mpHeap, "dThunder_c::mpHeap");
}
return 1;
+1
View File
@@ -2222,6 +2222,7 @@ dMenu_Collect3D_c::~dMenu_Collect3D_c() {
void dMenu_Collect3D_c::_create() {
mpHeap->getTotalFreeSize();
mpSolidHeap = mDoExt_createSolidHeapToCurrent(0x25800, mpHeap, 0x20);
JKRHEAP_NAME(mpSolidHeap, "dMenu_Collect3D_c::mpSolidHeap");
mDoExt_setCurrentHeap((JKRHeap*)mpSolidHeap);
daAlink_c* linkActor = daAlink_getAlinkActorClass();
if (linkActor != NULL) {
+1
View File
@@ -1649,6 +1649,7 @@ void dMenu_Dmap_c::_create() {
mDmapHeap = JKRCreateExpHeap(field_0xe8->getFreeSize() - 0x10, field_0xe8, false);
JUT_ASSERT(3732, mDmapHeap != NULL);
JKRHEAP_NAME(mDmapHeap, "dMenu_Dmap_c::mDmapHeap");
JKRHeap* heap = mDoExt_setCurrentHeap(mDmapHeap);
u32 sp28 = mDmapHeap->getTotalFreeSize();
+2
View File
@@ -18,6 +18,7 @@ static void dSmplMdl_modelUpdateDL(J3DModel* i_model) {
dSmplMdl_draw_c::dSmplMdl_draw_c() {
for (int i = 0; i < 8; i++) {
mModel[i].init();
mModel[i].setIdx(i);
}
for (int i = 0; i < 500; i++) {
@@ -128,6 +129,7 @@ BOOL diff_model_c::create(J3DModelData* i_modelData, int roomNo, u8 drawBG) {
JUT_ASSERT(397, i_modelData != NULL);
if (mpHeap == NULL) {
mpHeap = mDoExt_createSolidHeapFromGameToCurrent(0x2000, 0x20);
JKRHEAP_NAMEF(mpHeap, "Simple model (%d)", idx);
if (mpHeap != NULL) {
mpModel = mDoExt_J3DModel__create(i_modelData, 0x80000, 0x11000084);
+1
View File
@@ -393,6 +393,7 @@ static void dummy1(dStage_roomControl_c* roomControl) {
JKRExpHeap* dStage_roomControl_c::createMemoryBlock(int i_blockIdx, u32 i_heapSize) {
if (mMemoryBlock[i_blockIdx] == NULL) {
mMemoryBlock[i_blockIdx] = JKRCreateExpHeap(i_heapSize, mDoExt_getArchiveHeap(), false);
JKRHEAP_NAMEF(mMemoryBlock[i_blockIdx], "Room control memory block %d", i_blockIdx);
}
return mMemoryBlock[i_blockIdx];
+1
View File
@@ -40,6 +40,7 @@ int dTimer_c::_create() {
dComIfGp_setAllMapArchive(resInfo->getArchive());
mp_heap = fopMsgM_createExpHeap(0x11000, NULL);
JKRHEAP_NAME(mp_heap, "dTimer_c::mp_heap");
JKRHeap* prev_heap = mDoExt_setCurrentHeap(mp_heap);
if (mp_heap != NULL) {
mp_heap->getTotalFreeSize();