mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-08-17 12:39:27 -04:00
Merge branch 'main' into pjb-audio
This commit is contained in:
@@ -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(¤t.pos, &eyePos, &field_0x3720);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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(¤t.pos, &eyePos, 3, 1);
|
||||
mpShadowModel = mpMorf->getModel();
|
||||
mpShadowModel->setUserArea((uintptr_t)this);
|
||||
|
||||
@@ -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};
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user