wii building OK / m_Do_graphic debug work (#2815)

* wii building OK + m_Do_graphic debug work

* d_meter_HIO debug cleanup

* wii m_Do_graphic stuff

* tag_attack_item OK, mirror_chain almost

* fix build

* mg_fshop matching
This commit is contained in:
TakaRikka
2025-11-17 10:01:03 -08:00
committed by GitHub
parent 4350a38fe0
commit 540217c31b
99 changed files with 3837 additions and 1964 deletions
+1 -1
View File
@@ -207,7 +207,7 @@ void daAlink_c::preKandelaarDraw() {
var_f3 = 0.0f;
}
if (proj.x > 0.0f && proj.x < 608.0f && proj.y > var_f3 && proj.y < 448.0f - var_f3) {
if (proj.x > 0.0f && proj.x < FB_WIDTH && proj.y > var_f3 && proj.y < FB_HEIGHT - var_f3) {
dComIfGd_peekZ(proj.x, proj.y, &field_0x32c8);
} else {
field_0x32c8 = 0;
+1 -1
View File
@@ -567,7 +567,7 @@ void daBalloon2D_c::setHIO(bool param_1) {
field_0x5a0->paneTrans(l_HOSTIO.m.mBalloonSmallPosX, l_HOSTIO.m.mBalloonSmallPosY);
field_0x5a0->scale(l_HOSTIO.m.mBalloonSmallSize, l_HOSTIO.m.mBalloonSmallSize);
field_0x5a0->setAlphaRate(l_HOSTIO.m.mBalloonSmallAlpha * mAllAlpha);
#if DEBUG
#if WIDESCREEN_SUPPORT
if (mDoGph_gInf_c::isWide()) {
field_0x5a4->paneTrans(l_HOSTIO.m.m2DNumberCombo2PosX, l_HOSTIO.m.m2DNumberCombo2PosY);
} else {
+1 -1
View File
@@ -466,7 +466,7 @@ void daE_FK_c::DamageAction() {
bool daE_FK_c::checkViewArea() {
Vec proj;
mDoLib_project(&current.pos, &proj);
return (proj.x >= 0.0f && proj.x <= 608.0f) && (proj.y >= 0.0f && proj.y <= 448.0f);
return (proj.x >= 0.0f && proj.x <= FB_WIDTH) && (proj.y >= 0.0f && proj.y <= FB_HEIGHT);
}
namespace {
+1 -1
View File
@@ -480,7 +480,7 @@ static bool checkViewArea(cXyz* i_pos) {
Vec proj;
mDoLib_project(i_pos, &proj);
bool ret = false;
if (proj.x >= 0.0f && proj.x <= 608.0f && proj.y >= 0.0f && proj.y <= 448.0f) {
if (proj.x >= 0.0f && proj.x <= FB_WIDTH && proj.y >= 0.0f && proj.y <= FB_HEIGHT) {
ret = true;
}
return ret;
+1 -1
View File
@@ -1394,7 +1394,7 @@ bool daE_SM_c::CheckViewArea() {
mDoLib_project(&current.pos, &vec);
bool rv = false;
if (vec.x >= 0.0f && vec.x <= 608.0f && vec.y >= 0.0f && vec.y <= 448.0f) {
if (vec.x >= 0.0f && vec.x <= FB_WIDTH && vec.y >= 0.0f && vec.y <= FB_HEIGHT) {
rv = true;
}
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -342,16 +342,16 @@ void dMirror_packet_c::mainDraw() {
f32 var_f5;
f32 var_f6;
if (view_port->x_orig != 0.0f) {
var_f3 = (((view_port->x_orig * 2.0f) + view_port->width) * 0.5f) - (608.0f / 2);
var_f5 = 608.0f;
var_f3 = (((view_port->x_orig * 2.0f) + view_port->width) * 0.5f) - (FB_WIDTH / 2);
var_f5 = FB_WIDTH;
} else {
var_f3 = view_port->x_orig;
var_f5 = view_port->width;
}
if (view_port->y_orig != 0.0f) {
var_f4 = (((view_port->y_orig * 2.0f) + view_port->height) * 0.5f) - (448.0f / 2);
var_f6 = 448.0f;
var_f4 = (((view_port->y_orig * 2.0f) + view_port->height) * 0.5f) - (FB_HEIGHT / 2);
var_f6 = FB_HEIGHT;
} else {
var_f4 = view_port->y_orig;
var_f6 = view_port->height;
+2 -2
View File
@@ -2977,9 +2977,9 @@ static void daMP_THPGXYuv2RgbSetup(GXRenderModeObj const* param_0) {
int height = param_0->efbHeight;
f32 var_f31 = 0.0f;
#if PLATFORM_WII || PLATFORM_SHIELD
#if WIDESCREEN_SUPPORT
if (!mDoGph_gInf_c::isWide()) {
var_f31 = ((u16)height - (width * 808.0f) / 608.0f) * 0.5f;
var_f31 = ((u16)height - (width * 808.0f) / FB_WIDTH) * 0.5f;
}
#endif
+1 -1
View File
@@ -2646,7 +2646,7 @@ BOOL daNpcT_chkActorInScreen(fopAc_ac_c* i_ActorP, f32 param_1, f32 param_2, f32
for (int i = 0; i < 8; i++) {
mDoLib_project(&pos_array[i], &proj);
if (0.0f < proj.x && proj.x < 608.0f && 0.0f < proj.y && proj.y < 448.0f) {
if (0.0f < proj.x && proj.x < FB_WIDTH && 0.0f < proj.y && proj.y < FB_HEIGHT) {
continue;
}
return false;
+2 -2
View File
@@ -1868,14 +1868,14 @@ static void demo_camera_shop(npc_henna_class* i_this) {
}
case 73: {
koro_shop = (fshop_class*)fpcM_Search(s_koro2ball_sub, i_this);
unkXyz_54 = koro_shop->current.pos;
unkXyz_54 = koro_shop->actor.current.pos;
fshop = (fshop_class*)fpcM_Search(s_shop_sub, i_this);
cMtx_YrotS(*calc_mtx, fshop->field_0x4060);
unkXyz_78.x = -500.0f;
unkXyz_78.y = 600.0f;
unkXyz_78.z = 0.0f;
MtxPosition(&unkXyz_78, &unkXyz_60);
unkXyz_60 += koro_shop->current.pos;
unkXyz_60 += koro_shop->actor.current.pos;
if (koro2_reset != 0) {
koro2_reset = 0;
i_this->field_0x76c = unkXyz_54;
+1 -1
View File
@@ -531,7 +531,7 @@ void daObjARI_c::Z_BufferChk() {
} else {
trim_height = 0.0f;
}
if (vec2.x > 0.0f && vec2.x < 608.0f && vec2.y > trim_height && vec2.y < 448.0f - trim_height) {
if (vec2.x > 0.0f && vec2.x < FB_WIDTH && vec2.y > trim_height && vec2.y < FB_HEIGHT - trim_height) {
dComIfGd_peekZ(vec2.x, vec2.y, &mBufferZ);
}
+1 -1
View File
@@ -316,7 +316,7 @@ void daObjCHO_c::Z_BufferChk() {
} else {
trim_height = 0.0f;
}
if (vec2.x > 0.0f && vec2.x < 608.0f && vec2.y > trim_height && vec2.y < 448.0f - trim_height) {
if (vec2.x > 0.0f && vec2.x < FB_WIDTH && vec2.y > trim_height && vec2.y < FB_HEIGHT - trim_height) {
dComIfGd_peekZ(vec2.x, vec2.y, &mBufferZ);
}
+3 -3
View File
@@ -242,7 +242,7 @@ bool daObjCRVFENCE_c::checkViewArea(cXyz* param_1) {
#ifdef DEBUG
if (sp24.x >= 0.0f) {
if (sp24.y <= 640.0f) {
if (sp24.y <= FB_WIDTH) {
bVar1 = true;
}
}
@@ -251,7 +251,7 @@ bool daObjCRVFENCE_c::checkViewArea(cXyz* param_1) {
bVar1 = false;
if (sp24.y >= 0.0f) {
if (sp24.y <= 456.0f) {
if (sp24.y <= FB_HEIGHT) {
bVar1 = true;
}
}
@@ -261,7 +261,7 @@ bool daObjCRVFENCE_c::checkViewArea(cXyz* param_1) {
}
}
#else
if (sp24.x >= 0.0f && sp24.x <= 608.0f && sp24.y >= 0.0f && sp24.y <= 448.0f) {
if (sp24.x >= 0.0f && sp24.x <= FB_WIDTH && sp24.y >= 0.0f && sp24.y <= FB_HEIGHT) {
rv = true;
}
#endif
+1 -1
View File
@@ -151,7 +151,7 @@ bool daObjCRVHAHEN_c::checkViewArea(cXyz* i_this) {
bool ret = false;
if (proj.x >= 0.0f && proj.x <= 608.0f && proj.y >= 0.0f && proj.y <= 448.0f) {
if (proj.x >= 0.0f && proj.x <= FB_WIDTH && proj.y >= 0.0f && proj.y <= FB_HEIGHT) {
ret = true;
}
+1 -1
View File
@@ -292,7 +292,7 @@ void daObjDAN_c::Z_BufferChk() {
} else {
trim_height = 0.0f;
}
if (vec2.x > 0.0f && vec2.x < 608.0f && vec2.y > trim_height && vec2.y < 448.0f - trim_height) {
if (vec2.x > 0.0f && vec2.x < FB_WIDTH && vec2.y > trim_height && vec2.y < FB_HEIGHT - trim_height) {
dComIfGd_peekZ(vec2.x, vec2.y, &mBufferZ);
}
+1 -1
View File
@@ -219,7 +219,7 @@ bool daObjGOMIKABE_c::checkViewArea(cXyz param_1) {
Vec local_24;
mDoLib_project(&param_1, &local_24);
bool rv = false;
if (local_24.x >= 0.0f && local_24.x <= 608.0f && local_24.y >= 0.0f && local_24.y <= 448.0f) {
if (local_24.x >= 0.0f && local_24.x <= FB_WIDTH && local_24.y >= 0.0f && local_24.y <= FB_HEIGHT) {
rv = true;
}
+2
View File
@@ -324,7 +324,9 @@ int daGrdWater_c::Draw() {
Mtx afStack_50;
C_MTXLightPerspective(afStack_50, dComIfGd_getView()->fovy, dComIfGd_getView()->aspect,
1.0f, 1.0f, -0.01f, 0.0f);
#if WIDESCREEN_SUPPORT
mDoGph_gInf_c::setWideZoomLightProjection(afStack_50);
#endif
mtxInfo->setEffectMtx(afStack_50);
modelData2->simpleCalcMaterial(0, (MtxP)j3dDefaultMtx);
}
+1 -1
View File
@@ -229,7 +229,7 @@ bool daObjHHASHI_c::checkViewArea(int param_1) {
Vec local_20;
mDoLib_project(&field_0x5b0[param_1], &local_20);
bool rv = false;
if (local_20.x >= 0.0f && local_20.x <= 608.0f && local_20.y >= 0.0f && local_20.y <= 448.0f) {
if (local_20.x >= 0.0f && local_20.x <= FB_WIDTH && local_20.y >= 0.0f && local_20.y <= FB_HEIGHT) {
rv = true;
}
return rv;
+1 -1
View File
@@ -457,7 +457,7 @@ void daObjKABUTO_c::Z_BufferChk() {
} else {
trim_height = 0.0f;
}
if (vec2.x > 0.0f && vec2.x < 608.0f && vec2.y > trim_height && vec2.y < 448.0f - trim_height) {
if (vec2.x > 0.0f && vec2.x < FB_WIDTH && vec2.y > trim_height && vec2.y < FB_HEIGHT - trim_height) {
dComIfGd_peekZ(vec2.x, vec2.y, &mBufferZ);
}
+4 -4
View File
@@ -543,11 +543,11 @@ void daObjKAM_c::Z_BufferChk() {
cameraHeight = 0.0f;
}
#ifdef DEBUG
#define Z_BUFFERCHK_X_MAX 640.0f
#define Z_BUFFERCHK_Y_MAX 456.0f
#define Z_BUFFERCHK_X_MAX FB_WIDTH
#define Z_BUFFERCHK_Y_MAX FB_HEIGHT
#else
#define Z_BUFFERCHK_X_MAX 608.0f
#define Z_BUFFERCHK_Y_MAX 448.0f
#define Z_BUFFERCHK_X_MAX FB_WIDTH
#define Z_BUFFERCHK_Y_MAX FB_HEIGHT
#endif
if (currentProj.x > 0.0f && currentProj.x < Z_BUFFERCHK_X_MAX && currentProj.y > cameraHeight &&
currentProj.y < Z_BUFFERCHK_Y_MAX - cameraHeight)
+3 -3
View File
@@ -622,10 +622,10 @@ void daObjKAT_c::Z_BufferChk() {
#if DEBUG
#define KAT_Z_BUFFERCHK_MAX_X 640.0f
#define KAT_Z_BUFFERCHK_MAX_Y 456.0f
#define KAT_Z_BUFFERCHK_MAX_Y FB_HEIGHT
#else
#define KAT_Z_BUFFERCHK_MAX_X 608.0f
#define KAT_Z_BUFFERCHK_MAX_Y 448.0f
#define KAT_Z_BUFFERCHK_MAX_X FB_WIDTH
#define KAT_Z_BUFFERCHK_MAX_Y FB_HEIGHT
#endif
if (projected.x > 0.0f && projected.x < KAT_Z_BUFFERCHK_MAX_X && projected.y > unkFloat1 &&
projected.y < KAT_Z_BUFFERCHK_MAX_Y - unkFloat1)
+2 -2
View File
@@ -558,8 +558,8 @@ void daObjKUW_c::Z_BufferChk() {
trimHeight = 0.0f;
}
if (local_5c.x > 0.0f && local_5c.x < 608.0f &&
local_5c.y > trimHeight && local_5c.y < 448.0f - trimHeight) {
if (local_5c.x > 0.0f && local_5c.x < FB_WIDTH &&
local_5c.y > trimHeight && local_5c.y < FB_HEIGHT - trimHeight) {
dComIfGd_peekZ(local_5c.x, local_5c.y, &field_0x9bc);
}
+1 -1
View File
@@ -236,7 +236,7 @@ int daLv3Water2_c::Draw() {
Mtx lightProjMtx;
C_MTXLightPerspective(lightProjMtx, dComIfGd_getView()->fovy, dComIfGd_getView()->aspect, 1.0f, 1.0f, -0.01f, 0);
#ifdef DEBUG
#if WIDESCREEN_SUPPORT
mDoGph_gInf_c::setWideZoomLightProjection(lightProjMtx);
/* TODO: Handle screen capture perspective calculations */
#endif
+2
View File
@@ -342,7 +342,9 @@ int daObjMHole_c::draw() {
Mtx effect_mtx;
MTXLightPerspective(effect_mtx, dComIfGd_getView()->fovy,
dComIfGd_getView()->aspect, 1.0f, 1.0f, -0.01f, 0.0f);
#if WIDESCREEN_SUPPORT
mDoGph_gInf_c::setWideZoomLightProjection(effect_mtx);
#endif
tex_mtx_info->setEffectMtx(effect_mtx);
modelData->simpleCalcMaterial((MtxP)j3dDefaultMtx);
}
+251 -212
View File
@@ -7,186 +7,280 @@
#include "d/actor/d_a_obj_mirror_chain.h"
#include "d/d_com_inf_game.h"
#include "dol2asm.h"
/* 80C98080-80C98084 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */
static char const* l_arcName = "MR-Chain";
/* ############################################################################################## */
/* 80C98028-80C9802C 000000 0004+00 2/2 0/0 0/0 .rodata @3915 */
SECTION_RODATA static u32 const lit_3915 = 0x3C8EFA35;
COMPILER_STRIP_GATE(0x80C98028, &lit_3915);
/* 80C9802C-80C98030 000004 0004+00 0/1 0/0 0/0 .rodata @3916 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3916 = 0.5f;
COMPILER_STRIP_GATE(0x80C9802C, &lit_3916);
#pragma pop
/* 80C98034-80C98038 00000C 0004+00 0/1 0/0 0/0 .rodata @3918 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3918 = 2.0f;
COMPILER_STRIP_GATE(0x80C98034, &lit_3918);
#pragma pop
/* 80C98038-80C9803C 000010 0004+00 0/1 0/0 0/0 .rodata @3919 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3919 = 304.0f;
COMPILER_STRIP_GATE(0x80C98038, &lit_3919);
#pragma pop
/* 80C9803C-80C98040 000014 0004+00 0/1 0/0 0/0 .rodata @3920 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3920 = 608.0f;
COMPILER_STRIP_GATE(0x80C9803C, &lit_3920);
#pragma pop
/* 80C98040-80C98044 000018 0004+00 0/1 0/0 0/0 .rodata @3921 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3921 = 224.0f;
COMPILER_STRIP_GATE(0x80C98040, &lit_3921);
#pragma pop
/* 80C98044-80C98048 00001C 0004+00 0/1 0/0 0/0 .rodata @3922 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_3922 = 448.0f;
COMPILER_STRIP_GATE(0x80C98044, &lit_3922);
#pragma pop
/* 80C98048-80C98050 000020 0004+04 1/3 0/0 0/0 .rodata @3923 */
SECTION_RODATA static f32 const lit_3923[1 + 1 /* padding */] = {
1.0f,
/* padding */
0.0f,
};
COMPILER_STRIP_GATE(0x80C98048, &lit_3923);
/* 80C98050-80C98058 000028 0008+00 0/1 0/0 0/0 .rodata @3925 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3925[8] = {
0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80C98050, &lit_3925);
#pragma pop
/* 80C98138-80C98148 000000 0010+00 2/2 0/0 0/0 .bss l_scissor */
static u32 l_scissor[4];
/* 80C96698-80C96DAC 000078 0714+00 1/0 0/0 0/0 .text draw__22dScissorBegin_packet_cFv */
void dScissorBegin_packet_c::draw() {
// NONMATCHING
}
#if DEBUG
static u8 l_begin;
#endif
// Temporary fake function to make the cXyz destructor appear here
// delete once dScissorBegin_packet_c::draw() is matched
static void fake() {
cXyz vec;
vec.normalize();
/* 80C96698-80C96DAC 000078 0714+00 1/0 0/0 0/0 .text draw__22dScissorBegin_packet_cFv */
// NONMATCHING - slight stack order issue
void dScissorBegin_packet_c::draw() {
GXGetScissor(&l_scissor[0], &l_scissor[1], &l_scissor[2], &l_scissor[3]);
#if DEBUG
JUT_ASSERT(76, !l_begin);
l_begin = TRUE;
#endif
f32 var_f31 = FLT_MAX;
f32 var_f30 = FLT_MAX;
f32 sp7C = -FLT_MAX;
f32 sp78 = -FLT_MAX;
f32 sp74 = -FLT_MAX;
f32 sp70 = l_scissor[0];
f32 sp6C = sp70 + l_scissor[2];
f32 sp68 = l_scissor[1];
f32 sp64 = sp68 + l_scissor[3];
cXyz spEC[4];
cXyz sp11C;
int sp60 = 4;
view_class* view_p = dComIfGd_getView();
f32 sp58 = -view_p->near;
cXyz* sp54 = mQuad;
cXyz* var_r30 = spEC;
int sp50 = 0;
int sp4C = 0;
for (int i = 0; i < 4; i++) {
cMtx_multVec(view_p->viewMtx, sp54, var_r30);
if (var_r30->z >= sp58) {
sp50++;
} else {
sp4C = i;
}
sp54++;
var_r30++;
}
if (sp50 >= 4) {
GXSetScissor(FB_WIDTH + 1, FB_HEIGHT + 1, 0, 0);
return;
}
if (sp50 != 0) {
int sp44 = -1;
for (int i = 0; i < 4; i++) {
int sp3C = (sp4C + 1) % 4;
if (sp44 < 0) {
if (spEC[sp3C].z >= sp58) {
sp44 = sp3C;
}
} else if (spEC[sp3C].z < sp58) {
int sp38 = (sp44 + 3) % 4;
cXyz spE0 = spEC[sp44] - spEC[sp38];
f32 sp34 = (sp58 - spEC[sp38].z) / spE0.z;
spE0 *= sp34;
spEC[sp60] = spEC[sp38] + spE0;
sp60++;
spE0 = spEC[sp4C] - spEC[sp3C];
sp34 = (sp58 - spEC[sp3C].z) / spE0.z;
spE0 *= sp34;
spEC[sp4C] = spEC[sp3C] + spE0;
for (int sp30 = sp44; sp30 != sp4C; sp30 = (sp30 + 1) % 4) {
spEC[sp30] = spEC[sp4C];
}
break;
}
sp4C = (sp4C + 1) % 4;
}
}
f32 sp2C = view_p->fovy;
f32 sp28 = view_p->aspect;
f32 sp24 = std::tan(0.017453292f * (0.5f * sp2C));
f32 sp20, sp1C, sp18, sp14;
view_port_class* viewport_p = dComIfGd_getViewport();
if (0.0f != viewport_p->x_orig) {
sp20 = (0.5f * ((2.0f * viewport_p->x_orig) + viewport_p->width)) - (FB_WIDTH / 2);
sp18 = FB_WIDTH;
} else {
sp20 = viewport_p->x_orig;
sp18 = viewport_p->width;
}
if (0.0f != viewport_p->y_orig) {
sp1C = (0.5f * ((2.0f * viewport_p->y_orig) + viewport_p->height)) - (FB_HEIGHT / 2);
sp14 = FB_HEIGHT;
} else {
sp1C = viewport_p->y_orig;
sp14 = viewport_p->height;
}
var_r30 = spEC;
for (int i = 0; i < sp60; i++) {
var_r30->y = var_r30->y / (var_r30->z * sp24);
var_r30->x = var_r30->x / (sp28 * (-var_r30->z * sp24));
#if WIDESCREEN_SUPPORT
if (mDoGph_gInf_c::isWideZoom()) {
var_r30->x *= mDoGph_gInf_c::getScale();
var_r30->y *= mDoGph_gInf_c::getScale();
}
#endif
var_r30->x = sp20 + ((1.0f + var_r30->x) * (0.5f * sp18));
var_r30->y = sp1C + ((1.0f + var_r30->y) * (0.5f * sp14));
if (var_r30->x < var_f31) {
var_f31 = var_r30->x;
}
if (var_r30->x > sp7C) {
sp7C = var_r30->x;
}
if (var_r30->y < var_f30) {
var_f30 = var_r30->y;
}
if (var_r30->y > sp78) {
sp78 = var_r30->y;
}
if (var_r30->z > sp74) {
sp74 = var_r30->z;
}
var_r30++;
}
var_r30 = spEC;
cXyz spD4 = var_r30[1] - var_r30[0];
cXyz spC8;
cXyz spBC(0.0f, 0.0f, 1.0f);
for (int i = 0; i < 2; i++) {
var_r30++;
spC8 = var_r30[1] - var_r30[0];
if (!spD4.isZero()) {
spBC = spD4.outprod(spC8);
if (spBC.z < 0.0f) {
break;
}
}
spD4 = spC8;
}
if (spBC.z < 0.0f || var_f31 > sp6C || sp7C < sp70 || var_f30 > sp64 || sp78 < sp68) {
GXSetScissor(FB_WIDTH + 1, FB_HEIGHT + 1, 0, 0);
} else {
var_f31 = cLib_minLimit<f32>(var_f31, sp70);
sp7C = cLib_maxLimit<f32>(sp7C, sp6C);
var_f30 = cLib_minLimit<f32>(var_f30, sp68);
sp78 = cLib_maxLimit<f32>(sp78, sp64);
GXSetScissor((u32)var_f31, (u32)var_f30, (u32)(sp7C - var_f31), (u32)(sp78 - var_f30));
}
}
/* 80C96DE8-80C96E20 0007C8 0038+00 1/0 0/0 0/0 .text draw__20dScissorEnd_packet_cFv */
void dScissorEnd_packet_c::draw() {
#if DEBUG
JUT_ASSERT(246, l_begin);
l_begin = FALSE;
#endif
GXSetScissor(l_scissor[0], l_scissor[1], l_scissor[2], l_scissor[3]);
}
/* 80C96E20-80C96E40 000800 0020+00 1/1 0/0 0/0 .text createSolidHeap__FP10fopAc_ac_c */
static int createSolidHeap(fopAc_ac_c* i_this) {
return static_cast<daObjMirrorChain_c*>(i_this)->createHeap();
return ((daObjMirrorChain_c*)i_this)->createHeap();
}
/* ############################################################################################## */
/* 80C98058-80C98060 000030 0008+00 1/1 0/0 0/0 .rodata @4164 */
SECTION_RODATA static u8 const lit_4164[8] = {
0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80C98058, &lit_4164);
extern void* __vt__12J3DFrameCtrl[3];
/* 80C96E40-80C975A4 000820 0764+00 1/1 0/0 0/0 .text createHeap__18daObjMirrorChain_cFv
*/
int daObjMirrorChain_c::createHeap() {
J3DModelData* model_data;
J3DModelData* modelData;
/* dSv_event_flag_c::F_0354 - Cutscene - [cutscene] Mirror complete */
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[354])) {
model_data = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 16);
mpModel = mDoExt_J3DModel__create(model_data, 0x80000, 0x11000284);
modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 16);
JUT_ASSERT(306, modelData != NULL);
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000284);
J3DAnmTevRegKey* brk_anm = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 21);
J3DAnmTevRegKey* brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 21);
JUT_ASSERT(316, brk != NULL);
mpBrkAnm = new mDoExt_brkAnm();
if (mpBrkAnm == NULL || !mpBrkAnm->init(model_data, brk_anm, 1, 2, 1.0f, 0, -1)) {
if (mpBrkAnm == NULL || !mpBrkAnm->init(modelData, brk, 1, 2, 1.0f, 0, -1)) {
return 0;
}
} else {
model_data = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 15);
mpModel = mDoExt_J3DModel__create(model_data, 0x80000, 0x11000084);
modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 15);
JUT_ASSERT(323, modelData != NULL);
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
mpBrkAnm = NULL;
}
if (mpModel == NULL) {
return 0;
}
/* dSv_event_flag_c::F_0354 - Cutscene - [cutscene] Mirror complete */
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[354])) {
J3DModelData* portal_model_data = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 12);
mpPortalModel = mDoExt_J3DModel__create(portal_model_data, 0, 0x11000084);
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 12);
JUT_ASSERT(336, modelData != NULL);
mpPortalModel = mDoExt_J3DModel__create(modelData, 0, 0x11000084);
if (mpPortalModel == NULL) {
return 0;
}
J3DAnmTransform* bck_anm = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 9);
J3DAnmTransform* bck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 9);
JUT_ASSERT(344, bck != NULL);
mpBckAnm = new mDoExt_bckAnm();
if (mpBckAnm == NULL
|| !mpBckAnm->init(bck_anm, 1, 2, 1.0f, 0, -1, false))
{
if (mpBckAnm == NULL || !mpBckAnm->init(bck, 1, 2, 1.0f, 0, -1, false)) {
return 0;
}
mpBckAnm->setEndFrame(300);
J3DAnmTevRegKey* portal_brk_anm = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 20);
J3DAnmTevRegKey* brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 20);
JUT_ASSERT(353, brk != NULL);
mpPortalBrkAnm = new mDoExt_brkAnm();
if (mpPortalBrkAnm == NULL
|| !mpPortalBrkAnm->init(portal_model_data, portal_brk_anm, 1, 2, 1.0f, 0, -1))
if (mpPortalBrkAnm == NULL || !mpPortalBrkAnm->init(modelData, brk, 1, 0, 1.0f, 0, -1))
{
return 0;
}
mpPortalBrkAnm->setFrame(portal_brk_anm->getFrameMax());
mpPortalBrkAnm->setFrame(brk->getFrameMax());
cBgD_t* dzb = (cBgD_t*)dComIfG_getObjectRes(l_arcName, 26);
if (mBgW[1].Set(dzb, 1, &mMtx)) {
return 0;
}
mBgW[0] = mBgW[1];
} else {
J3DAnmTransform* bck_anm = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 8);
J3DAnmTransform* bck = (J3DAnmTransform*)dComIfG_getObjectRes(l_arcName, 8);
JUT_ASSERT(367, bck != NULL);
mpBckAnm = new mDoExt_bckAnm();
bool b = fopAcM_isSwitch(this, getSwitchNo())
/* dSv_event_flag_c::F_0361 - Arbiter's Grounds - Spun the spinning pillars */
|| dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[361]);
f32 rate = b ? 1.0f : 0.0f;
if (mpBckAnm == NULL
|| !mpBckAnm->init(bck_anm, 1, 0, rate, 0, -1, false))
/* dSv_event_flag_c::F_0361 - Arbiter's Grounds - Spun the spinning pillars */
f32 rate = (fopAcM_isSwitch(this, getSwitchNo()) || dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[361])) ? 1.0f : 0.0f;
if (mpBckAnm == NULL || !mpBckAnm->init(bck, 1, 0, rate, 0, -1, false))
{
return 0;
}
if (fopAcM_isSwitch(this, getSwitchNo())
/* dSv_event_flag_c::F_0361 - Arbiter's Grounds - Spun the spinning pillars */
|| dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[361]))
{
mpBckAnm->setFrame(bck_anm->getFrameMax());
/* dSv_event_flag_c::F_0361 - Arbiter's Grounds - Spun the spinning pillars */
if (fopAcM_isSwitch(this, getSwitchNo()) || dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[361])) {
mpBckAnm->setFrame(bck->getFrameMax());
}
J3DAnmTevRegKey* brk_anm = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 19);
J3DAnmTevRegKey* brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_arcName, 19);
JUT_ASSERT(381, brk != NULL);
mpBrkAnm = new mDoExt_brkAnm();
if (mpBrkAnm == NULL
|| !mpBrkAnm->init(model_data, brk_anm, 1, 0, 1.0f, 0, -1))
if (mpBrkAnm == NULL || !mpBrkAnm->init(modelData, brk, 1, 0, 0.0f, 0, -1))
{
return 0;
}
@@ -208,13 +302,6 @@ int daObjMirrorChain_c::createHeap() {
return 1;
}
/* 80C975A4-80C975EC 000F84 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
// J3DFrameCtrl::~J3DFrameCtrl() {
extern "C" void __dt__12J3DFrameCtrlFv() {
// NONMATCHING
}
/* 80C975EC-80C97618 000FCC 002C+00 1/1 0/0 0/0 .text initBaseMtx__18daObjMirrorChain_cFv
*/
void daObjMirrorChain_c::initBaseMtx() {
@@ -228,9 +315,11 @@ void daObjMirrorChain_c::setBaseMtx() {
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(shape_angle);
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
if (mpPortalModel != NULL) {
mpPortalModel->setBaseTRMtx(mDoMtx_stack_c::get());
}
MTXCopy(mDoMtx_stack_c::get(), mMtx);
mpActiveBgW->Move();
}
@@ -243,32 +332,40 @@ static int daObjMirrorChain_Draw(daObjMirrorChain_c* i_this) {
/* 80C976B8-80C97968 001098 02B0+00 1/1 0/0 0/0 .text draw__18daObjMirrorChain_cFv */
int daObjMirrorChain_c::draw() {
static f32 const SCISSOR_CENTER_X = 1799.2f;
static f32 const SCISSOR_CENTER_Y = 4779.58f;
static f32 const SCISSOR_CENTER_Z = -23024.53f;
static f32 const SCISSOR_SIZE = 984.0f;
static const f32 SCISSOR_CENTER_X = 1799.2f;
static const f32 SCISSOR_CENTER_Y = 4779.58f;
static const f32 SCISSOR_CENTER_Z = -23024.53f;
static const f32 SCISSOR_SIZE = 984.0f;
g_env_light.settingTevStruct(0x10, &current.pos, &tevStr);
g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr);
/* dSv_event_flag_c::F_0354 - Cutscene - [cutscene] Mirror complete */
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[354])) {
g_env_light.setLightTevColorType_MAJI(mpPortalModel, &tevStr);
if (mpBckAnm != NULL) {
mpBckAnm->entry(mpPortalModel->getModelData());
}
if (mpBrkAnm != NULL) {
mpBrkAnm->entry(mpModel->getModelData());
}
if (mpPortalBrkAnm != NULL) {
mpPortalBrkAnm->entry(mpPortalModel->getModelData());
}
dComIfGd_setListBG();
mDoExt_modelUpdateDL(mpModel);
static Vec l_offsetScissor[4] = {
{SCISSOR_CENTER_X - SCISSOR_SIZE / 2, SCISSOR_CENTER_Y + SCISSOR_SIZE, SCISSOR_CENTER_Z},
{SCISSOR_CENTER_X + SCISSOR_SIZE / 2, SCISSOR_CENTER_Y + SCISSOR_SIZE, SCISSOR_CENTER_Z},
{SCISSOR_CENTER_X + SCISSOR_SIZE / 2, SCISSOR_CENTER_Y, SCISSOR_CENTER_Z},
{SCISSOR_CENTER_X - SCISSOR_SIZE / 2, SCISSOR_CENTER_Y, SCISSOR_CENTER_Z},
};
cXyz* quad = mScissorBegin.getQuad();
PSMTXMultVecArray(mpModel->getBaseTRMtx(), l_offsetScissor, quad, 4);
j3dSys.setDrawBuffer(dComIfGd_getXluListBG(), 0);
@@ -276,12 +373,15 @@ int daObjMirrorChain_c::draw() {
mDoExt_modelUpdateDL(mpPortalModel);
mScissorBegin.entryPacket();
dComIfGd_setList();
if (mpBckAnm != NULL) {
mpBckAnm->remove(mpPortalModel->getModelData());
}
if (mpBrkAnm != NULL) {
mpBrkAnm->remove(mpModel->getModelData());
}
if (mpPortalBrkAnm != NULL) {
mpPortalBrkAnm->remove(mpPortalModel->getModelData());
}
@@ -289,19 +389,24 @@ int daObjMirrorChain_c::draw() {
if (mpBckAnm != NULL) {
mpBckAnm->entry(mpModel->getModelData());
}
if (mpBrkAnm != NULL) {
mpBrkAnm->entry(mpModel->getModelData());
}
dComIfGd_setListBG();
mDoExt_modelUpdateDL(mpModel);
dComIfGd_setList();
if (mpBckAnm != NULL) {
mpBckAnm->remove(mpModel->getModelData());
}
if (mpBrkAnm != NULL) {
mpBrkAnm->remove(mpModel->getModelData());
}
}
return 1;
}
@@ -311,83 +416,22 @@ static int daObjMirrorChain_Execute(daObjMirrorChain_c* i_this) {
return i_this->execute();
}
// this should come automatically from the static data in draw() but it does not
/* ############################################################################################## */
/* 80C98060-80C98064 000038 0004+00 0/0 0/0 0/0 .rodata
* SCISSOR_CENTER_X$localstatic3$draw__18daObjMirrorChain_cFv */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const data_80C98060[4] = {
0x44,
0xE0,
0xE6,
0x66,
};
COMPILER_STRIP_GATE(0x80C98060, &data_80C98060);
#pragma pop
/* 80C98064-80C98068 00003C 0004+00 0/0 0/0 0/0 .rodata
* SCISSOR_CENTER_Y$localstatic4$draw__18daObjMirrorChain_cFv */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const data_80C98064[4] = {
0x45,
0x95,
0x5C,
0xA4,
};
COMPILER_STRIP_GATE(0x80C98064, &data_80C98064);
#pragma pop
/* 80C98068-80C9806C 000040 0004+00 0/0 0/0 0/0 .rodata
* SCISSOR_CENTER_Z$localstatic5$draw__18daObjMirrorChain_cFv */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const data_80C98068[4] = {
0xC6,
0xB3,
0xE1,
0x0F,
};
COMPILER_STRIP_GATE(0x80C98068, &data_80C98068);
#pragma pop
/* 80C9806C-80C98070 000044 0004+00 0/0 0/0 0/0 .rodata
* SCISSOR_SIZE$localstatic6$draw__18daObjMirrorChain_cFv */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const data_80C9806C[4] = {
0x44,
0x76,
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x80C9806C, &data_80C9806C);
#pragma pop
/* 80C98070-80C98074 000048 0004+00 0/1 0/0 0/0 .rodata @4494 */
#pragma push
#pragma force_active on
SECTION_RODATA static f32 const lit_4494 = -1.0f;
COMPILER_STRIP_GATE(0x80C98070, &lit_4494);
#pragma pop
/* 80C97988-80C97BA4 001368 021C+00 1/1 0/0 0/0 .text execute__18daObjMirrorChain_cFv */
int daObjMirrorChain_c::execute() {
if (mpBckAnm != NULL) {
mpBckAnm->play();
}
if (mpBrkAnm != NULL) {
mpBrkAnm->play();
}
if (mpPortalBrkAnm != NULL) {
mpPortalBrkAnm->play();
}
/* dSv_event_flag_c::F_0354 - Cutscene - [cutscene] Mirror complete */
if (!dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[354])
&& mpBckAnm != NULL && mpBckAnm->getPlaySpeed() > 0.0f) {
/* dSv_event_flag_c::F_0354 - Cutscene - [cutscene] Mirror complete */
if (!dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[354]) && mpBckAnm != NULL && mpBckAnm->getPlaySpeed() > 0.0f) {
if (mpActiveBgW == &mBgW[0]) {
dComIfG_Bgsp().Release(&mBgW[0]);
dComIfG_Bgsp().Regist(&mBgW[1], this);
@@ -396,7 +440,7 @@ int daObjMirrorChain_c::execute() {
}
if (mpEmitter == NULL) {
mpEmitter = dComIfGp_particle_set(0x8acc, &current.pos, &shape_angle, NULL);
mpEmitter = dComIfGp_particle_set(dPa_RM(ID_ZF_S_D32_01_MONO02SAND), &current.pos, &shape_angle, NULL);
cXyz pos;
mDoMtx_stack_c::copy(mpModel->getAnmMtx(1));
mDoMtx_stack_c::multVecZero(&pos);
@@ -412,7 +456,6 @@ int daObjMirrorChain_c::execute() {
return 1;
}
/* 80C97BA4-80C97BAC 001584 0008+00 1/0 0/0 0/0 .text
* daObjMirrorChain_IsDelete__FP18daObjMirrorChain_c */
static int daObjMirrorChain_IsDelete(daObjMirrorChain_c* i_this) {
@@ -423,9 +466,11 @@ daObjMirrorChain_c::~daObjMirrorChain_c() {
if (mBgW[0].ChkUsed()) {
dComIfG_Bgsp().Release(&mBgW[0]);
}
if (mBgW[1].ChkUsed()) {
dComIfG_Bgsp().Release(&mBgW[1]);
}
dComIfG_resDelete(&mPhaseReq, l_arcName);
}
@@ -438,40 +483,41 @@ static int daObjMirrorChain_Delete(daObjMirrorChain_c* i_this) {
}
void daObjMirrorChain_c::create_init() {
if (mpBckAnm != NULL
/* dSv_event_flag_c::F_0354 - Cutscene - [cutscene] Mirror complete */
&& !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[354])) {
/* dSv_event_flag_c::F_0354 - Cutscene - [cutscene] Mirror complete */
if (mpBckAnm != NULL && !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[354])) {
mpBckAnm->setPlaySpeed(0.0f);
}
mpEmitter = NULL;
mBgW[0].SetCrrFunc(NULL);
mBgW[0].SetRoomId(fopAcM_GetRoomNo(this));
mBgW[1].SetCrrFunc(NULL);
mBgW[1].SetRoomId(fopAcM_GetRoomNo(this));
bool b = fopAcM_isSwitch(this, getSwitchNo())
/* dSv_event_flag_c::F_0361 - Arbiter's Grounds - Spun the spinning pillars */
|| dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[361]);
mpActiveBgW = b ? &mBgW[1] : &mBgW[0];
/* dSv_event_flag_c::F_0361 - Arbiter's Grounds - Spun the spinning pillars */
mpActiveBgW = (fopAcM_isSwitch(this, getSwitchNo()) || dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[361])) ? &mBgW[1] : &mBgW[0];
dComIfG_Bgsp().Regist(mpActiveBgW, this);
initBaseMtx();
}
cPhs__Step daObjMirrorChain_c::create() {
fopAcM_ct(this, daObjMirrorChain_c);
cPhs__Step step = (cPhs__Step)dComIfG_resLoad(&mPhaseReq, l_arcName);
if (step == cPhs_COMPLEATE_e) {
cPhs__Step phase_state = (cPhs__Step)dComIfG_resLoad(&mPhaseReq, l_arcName);
if (phase_state == cPhs_COMPLEATE_e) {
if (!fopAcM_entrySolidHeap(this, createSolidHeap, 0x71b0)) {
return cPhs_ERROR_e;
}
create_init();
}
return step;
return phase_state;
}
/* 80C97D24-80C97F3C 001704 0218+00 1/0 0/0 0/0 .text daObjMirrorChain_Create__FP10fopAc_ac_c */
static cPhs__Step daObjMirrorChain_Create(fopAc_ac_c* i_this) {
fopAcM_GetID(i_this);
return static_cast<daObjMirrorChain_c*>(i_this)->create();
return ((daObjMirrorChain_c*)i_this)->create();
}
/* 80C980B4-80C980D4 -00001 0020+00 1/0 0/0 0/0 .data l_daObjMirrorChain_Method */
@@ -500,10 +546,3 @@ extern actor_process_profile_definition g_profile_Obj_MirrorChain = {
fopAc_ACTOR_e,
fopAc_CULLBOX_CUSTOM_e,
};
/* 80C98104-80C98110 000084 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */
SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__12J3DFrameCtrlFv,
};
+2 -2
View File
@@ -187,8 +187,8 @@ void daObjOCTHASHI_c::SphAction() {
f32 fvals_3888[2] = {2.125f, 0.0f};
f32 fvals_3889[2] = {0.0f, 0.0f};
f32 fval_3890[1] = {2000.0f};
f32 fval_3903[1] = {608.0f};
f32 fval_3904[1] = {448.0f};
f32 fval_3903[1] = {FB_WIDTH};
f32 fval_3904[1] = {FB_HEIGHT};
for (int idx = 0; idx < mPieceNum; ++idx) {
if (mColliders[idx].ChkCoHit()) {
fopAc_ac_c* hit_actor = dCc_GetAc(mColliders[idx].GetCoHitObj()->GetAc());
+2
View File
@@ -346,7 +346,9 @@ int daObjRotStair_c::Draw() {
Mtx lightMtx;
C_MTXLightPerspective(lightMtx, dComIfGd_getView()->fovy,
dComIfGd_getView()->aspect, 1.0f, 1.0f, -0.01f, 0);
#if WIDESCREEN_SUPPORT
mDoGph_gInf_c::setWideZoomLightProjection(lightMtx);
#endif
texMtxInfo->setEffectMtx(lightMtx);
modelData->simpleCalcMaterial(0, (MtxP)j3dDefaultMtx);
}
+2 -2
View File
@@ -624,8 +624,8 @@ void daObjTEN_c::Z_BufferChk() {
} else {
trimHeight = 0.0f;
}
if (local_5c.x > 0.0f && local_5c.x < 608.0f && local_5c.y > trimHeight &&
local_5c.y < 448.0f - trimHeight)
if (local_5c.x > 0.0f && local_5c.x < FB_WIDTH && local_5c.y > trimHeight &&
local_5c.y < FB_HEIGHT - trimHeight)
{
dComIfGd_peekZ(local_5c.x, local_5c.y, &field_0x61c);
}
+2 -2
View File
@@ -90,8 +90,8 @@ static void dataStripping2() {
stripFloat(3.0f);
stripFloat(2000.0f);
stripFloat(608.0f);
stripFloat(448.0f);
stripFloat(FB_WIDTH);
stripFloat(FB_HEIGHT);
}
/* 80D0C298-80D0C2B8 0000D8 0020+00 1/0 0/0 0/0 .text daObjTHASHI_Create__FP10fopAc_ac_c
+2 -2
View File
@@ -543,8 +543,8 @@ void daObjTOMBO_c::Z_BufferChk() {
} else {
trimHeight = 0.0f;
}
if (local_5c.x > 0.0f && local_5c.x < 608.0f && local_5c.y > trimHeight &&
local_5c.y < 448.0f - trimHeight)
if (local_5c.x > 0.0f && local_5c.x < FB_WIDTH && local_5c.y > trimHeight &&
local_5c.y < FB_HEIGHT - trimHeight)
{
dComIfGd_peekZ(local_5c.x, local_5c.y, &field_0x754);
}
+2
View File
@@ -39,7 +39,9 @@ static int daObj_Tp_Draw(obj_tp_class* i_this) {
Mtx lightProjMtx;
C_MTXLightPerspective(lightProjMtx, dComIfGd_getView()->fovy,
dComIfGd_getView()->aspect, 1.0f, 1.0f, -0.01f, 0);
#if WIDESCREEN_SUPPORT
mDoGph_gInf_c::setWideZoomLightProjection(lightProjMtx);
#endif
texMtxInfo->setEffectMtx(lightProjMtx);
modelData->simpleCalcMaterial(0, (MtxP)j3dDefaultMtx);
}
+1 -1
View File
@@ -44,7 +44,7 @@ BOOL daZraFreeze_c::chkActorInScreen() {
PSMTXMultVecArray(mDoMtx_stack_c::get(), vec, vec, 8);
for (int i = 0; i < 8; i++) {
mDoLib_project(&vec[i], &proj);
if (0.0f < proj.x && proj.x < 608.0f && 0.0f < proj.y && proj.y < 448.0f) {
if (0.0f < proj.x && proj.x < FB_WIDTH && 0.0f < proj.y && proj.y < FB_HEIGHT) {
continue;
}
return false;
+34 -256
View File
@@ -1,114 +1,8 @@
//
// Generated By: dol2asm
// Translation Unit: d_a_tag_attack_item
//
#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "d/actor/d_a_tag_attack_item.h"
#include "SSystem/SComponent/c_math.h"
#include "d/actor/d_a_player.h"
#include "d/d_com_inf_game.h"
#include "d/d_event_lib.h"
#include "dol2asm.h"
// need to figure out how to use dEvLib_callback_c properly
class daTagAtkItem_c : public fopAc_ac_c , public dEvLib_callback_c {
public:
/* 805A2958 */ void setBaseMtx();
/* 805A2990 */ int Create();
/* 805A2A34 */ int create();
/* 805A2C48 */ int execute();
/* 805A2CA8 */ void action();
/* 805A2D58 */ BOOL checkHit();
/* 805A2F54 */ void createItem();
/* 805A3038 */ int _delete();
/* 805A3118 */ ~daTagAtkItem_c();
/* 805A2D10 */ bool eventStart();
/* 805A2D34 */ bool eventEnd();
u8 getEvId() { return fopAcM_GetParamBit(this, 0x18, 8); }
u8 getNum() { return fopAcM_GetParamBit(this, 8, 8); }
u8 getItemBit() { return fopAcM_GetParamBit(this, 0x10, 8); }
u8 getItemNo() { return fopAcM_GetParamBit(this, 0, 8); }
/* 0x568 */ u8 temp[0x57C - 0x568]; // remove when dEvLib_callback_c setup
/* 0x57C */ u8 field_0x57C[0x584 - 0x57C];
/* 0x584 */ dCcD_Stts mCcStts;
/* 0x5C0 */ dCcD_Cyl mCyl;
};
//
// Forward References:
//
extern "C" void setBaseMtx__14daTagAtkItem_cFv();
extern "C" void Create__14daTagAtkItem_cFv();
extern "C" void create__14daTagAtkItem_cFv();
extern "C" void __dt__8cM3dGCylFv();
extern "C" void __dt__8cM3dGAabFv();
extern "C" void __dt__10dCcD_GSttsFv();
extern "C" void execute__14daTagAtkItem_cFv();
extern "C" void action__14daTagAtkItem_cFv();
extern "C" void eventStart__14daTagAtkItem_cFv();
extern "C" void eventEnd__14daTagAtkItem_cFv();
extern "C" void checkHit__14daTagAtkItem_cFv();
extern "C" void createItem__14daTagAtkItem_cFv();
extern "C" bool _delete__14daTagAtkItem_cFv();
extern "C" static void daTagAtkItem_Execute__FP14daTagAtkItem_c();
extern "C" static void daTagAtkItem_Delete__FP14daTagAtkItem_c();
extern "C" static void daTagAtkItem_Create__FP14daTagAtkItem_c();
extern "C" void __dt__17dEvLib_callback_cFv();
extern "C" bool eventRun__17dEvLib_callback_cFv();
extern "C" bool eventStart__17dEvLib_callback_cFv();
extern "C" bool eventEnd__17dEvLib_callback_cFv();
extern "C" static void func_805A3100();
extern "C" static void func_805A3108();
extern "C" static void func_805A3110();
extern "C" void __dt__14daTagAtkItem_cFv();
extern "C" void __dt__10cCcD_GSttsFv();
//
// External References:
//
extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
extern "C" void __ct__10fopAc_ac_cFv();
extern "C" void __dt__10fopAc_ac_cFv();
extern "C" void fopAcM_delete__FP10fopAc_ac_c();
extern "C" void fopAcM_createItemFromTable__FPC4cXyziiiPC5csXyziPC4cXyzPfPfb();
extern "C" void eventUpdate__17dEvLib_callback_cFv();
extern "C" void orderEvent__17dEvLib_callback_cFiii();
extern "C" void __ct__10dCcD_GSttsFv();
extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
extern "C" void __ct__12dCcD_GObjInfFv();
extern "C" void __dt__12dCcD_GObjInfFv();
extern "C" void ChkTgHit__12dCcD_GObjInfFv();
extern "C" void GetTgHitObj__12dCcD_GObjInfFv();
extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
extern "C" void Set__4cCcSFP8cCcD_Obj();
extern "C" void __ct__5csXyzFsss();
extern "C" void cM_rndFX__Ff();
extern "C" void SetC__8cM3dGCylFRC4cXyz();
extern "C" void SetH__8cM3dGCylFf();
extern "C" void SetR__8cM3dGCylFf();
extern "C" void __dl__FPv();
extern "C" void _savegpr_27();
extern "C" void _savegpr_29();
extern "C" void _restgpr_27();
extern "C" void _restgpr_29();
extern "C" extern void* __vt__8dCcD_Cyl[36];
extern "C" extern void* __vt__9dCcD_Stts[11];
extern "C" extern void* __vt__12cCcD_CylAttr[25];
extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
extern "C" extern void* __vt__9cCcD_Stts[8];
//
// Declarations:
//
/* 805A2958-805A2990 000078 0038+00 1/1 0/0 0/0 .text setBaseMtx__14daTagAtkItem_cFv */
void daTagAtkItem_c::setBaseMtx() {
@@ -143,103 +37,16 @@ int daTagAtkItem_c::Create() {
return 1;
}
/* ############################################################################################## */
/* 805A3338-805A3358 -00001 0020+00 1/0 0/0 0/0 .data l_daTagAtkItem_Method */
SECTION_DATA static void* l_daTagAtkItem_Method[8] = {
(void*)daTagAtkItem_Create__FP14daTagAtkItem_c,
(void*)daTagAtkItem_Delete__FP14daTagAtkItem_c,
(void*)daTagAtkItem_Execute__FP14daTagAtkItem_c,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)NULL,
};
/* 805A3358-805A3388 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Tag_AttackItem */
SECTION_DATA extern void* g_profile_Tag_AttackItem[12] = {
(void*)0xFFFFFFFD, (void*)0x0007FFFD,
(void*)0x01AA0000, (void*)&g_fpcLf_Method,
(void*)0x000006FC, (void*)NULL,
(void*)NULL, (void*)&g_fopAc_Method,
(void*)0x02490000, (void*)&l_daTagAtkItem_Method,
(void*)0x00040000, (void*)0x000E0000,
};
/* 805A3388-805A33B4 000094 002C+00 2/2 0/0 0/0 .data __vt__14daTagAtkItem_c */
SECTION_DATA extern void* __vt__14daTagAtkItem_c[11] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)NULL,
(void*)NULL,
(void*)func_805A3110,
(void*)func_805A3108,
(void*)eventRun__17dEvLib_callback_cFv,
(void*)func_805A3100,
(void*)__dt__14daTagAtkItem_cFv,
(void*)eventStart__14daTagAtkItem_cFv,
(void*)eventEnd__14daTagAtkItem_cFv,
};
/* 805A33B4-805A33C0 0000C0 000C+00 3/3 0/0 0/0 .data __vt__10cCcD_GStts */
SECTION_DATA extern void* __vt__10cCcD_GStts[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__10cCcD_GSttsFv,
};
/* 805A33C0-805A33CC 0000CC 000C+00 2/2 0/0 0/0 .data __vt__10dCcD_GStts */
SECTION_DATA extern void* __vt__10dCcD_GStts[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__10dCcD_GSttsFv,
};
/* 805A33CC-805A33D8 0000D8 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGCyl */
SECTION_DATA extern void* __vt__8cM3dGCyl[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__8cM3dGCylFv,
};
/* 805A33D8-805A33E4 0000E4 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGAab */
SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__8cM3dGAabFv,
};
/* 805A33E4-805A33FC 0000F0 0018+00 3/3 0/0 0/0 .data __vt__17dEvLib_callback_c */
SECTION_DATA extern void* __vt__17dEvLib_callback_c[6] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__17dEvLib_callback_cFv,
(void*)eventStart__17dEvLib_callback_cFv,
(void*)eventRun__17dEvLib_callback_cFv,
(void*)eventEnd__17dEvLib_callback_cFv,
};
/* 805A2A34-805A2B5C 000154 0128+00 1/1 0/0 0/0 .text create__14daTagAtkItem_cFv */
int daTagAtkItem_c::create() {
// NONMATCHING
}
fopAcM_ct(this, daTagAtkItem_c);
/* 805A2B5C-805A2BA4 00027C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
// cM3dGCyl::~cM3dGCyl() {
extern "C" void __dt__8cM3dGCylFv() {
// NONMATCHING
}
if (!Create()) {
return cPhs_ERROR_e;
}
/* 805A2BA4-805A2BEC 0002C4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
// cM3dGAab::~cM3dGAab() {
extern "C" void __dt__8cM3dGAabFv() {
// NONMATCHING
}
/* 805A2BEC-805A2C48 00030C 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */
// dCcD_GStts::~dCcD_GStts() {
extern "C" void __dt__10dCcD_GSttsFv() {
// NONMATCHING
OS_REPORT("攻撃反応アイテム:<%x>\n", fopAcM_GetParam(this));
return cPhs_COMPLEATE_e;
}
/* 805A2C48-805A2CA8 000368 0060+00 1/1 0/0 0/0 .text execute__14daTagAtkItem_cFv */
@@ -285,10 +92,8 @@ BOOL daTagAtkItem_c::checkHit() {
if (hitobj_p != NULL &&
(hitobj_p->ChkAtType(AT_TYPE_IRON_BALL) || hitobj_p->ChkAtType(AT_TYPE_BOMB)))
{
#ifdef DEBUG
// "Attack Reaction Item: Rotate attack hit!\n"
OSReport("攻撃反応アイテム:回転アタックヒット!\n");
#endif
OS_REPORT("攻撃反応アイテム:回転アタックヒット!\n");
return true;
}
}
@@ -297,12 +102,10 @@ BOOL daTagAtkItem_c::checkHit() {
if ((player_p->checkFrontRollCrash() || player_p->checkWolfAttackReverse()) &&
player_p->current.pos.absXZ(current.pos) < scale.x * 50.0f &&
fabsf(player_p->current.pos.y - current.pos.y) < scale.y * 100.0f)
std::fabs(player_p->current.pos.y - current.pos.y) < scale.y * 100.0f)
{
#ifdef DEBUG
// "Attack Reaction Item: Rotate attack hit!\n"
OSReport("攻撃反応アイテム:回転アタックヒット!\n");
#endif
OS_REPORT("攻撃反応アイテム:回転アタックヒット!\n");
return true;
}
@@ -353,54 +156,29 @@ static int daTagAtkItem_Create(daTagAtkItem_c* i_this) {
return i_this->create();
}
/* 805A30A0-805A30E8 0007C0 0048+00 1/0 0/0 0/0 .text __dt__17dEvLib_callback_cFv */
// dEvLib_callback_c::~dEvLib_callback_c() {
extern "C" void __dt__17dEvLib_callback_cFv() {
// NONMATCHING
}
/* 805A3338-805A3358 -00001 0020+00 1/0 0/0 0/0 .data l_daTagAtkItem_Method */
static actor_method_class l_daTagAtkItem_Method = {
(process_method_func)daTagAtkItem_Create,
(process_method_func)daTagAtkItem_Delete,
(process_method_func)daTagAtkItem_Execute,
(process_method_func)NULL,
(process_method_func)NULL,
};
/* 805A30E8-805A30F0 000808 0008+00 2/0 0/0 0/0 .text eventRun__17dEvLib_callback_cFv */
// bool dEvLib_callback_c::eventRun() {
extern "C" bool eventRun__17dEvLib_callback_cFv() {
return true;
}
/* 805A30F0-805A30F8 000810 0008+00 1/0 0/0 0/0 .text eventStart__17dEvLib_callback_cFv
*/
// bool dEvLib_callback_c::eventStart()() {
extern "C" bool eventStart__17dEvLib_callback_cFv() {
return true;
}
/* 805A30F8-805A3100 000818 0008+00 1/0 0/0 0/0 .text eventEnd__17dEvLib_callback_cFv */
// bool dEvLib_callback_c::eventEnd() {
extern "C" bool eventEnd__17dEvLib_callback_cFv() {
return true;
}
/* 805A3100-805A3108 000820 0008+00 1/0 0/0 0/0 .text @1384@eventEnd__14daTagAtkItem_cFv
*/
static void func_805A3100() {
// NONMATCHING
}
/* 805A3108-805A3110 000828 0008+00 1/0 0/0 0/0 .text @1384@eventStart__14daTagAtkItem_cFv */
static void func_805A3108() {
// NONMATCHING
}
/* 805A3110-805A3118 000830 0008+00 1/0 0/0 0/0 .text @1384@__dt__14daTagAtkItem_cFv */
static void func_805A3110() {
// NONMATCHING
}
/* 805A3118-805A3278 000838 0160+00 2/1 0/0 0/0 .text __dt__14daTagAtkItem_cFv */
daTagAtkItem_c::~daTagAtkItem_c() {
// NONMATCHING
}
/* 805A3278-805A32C0 000998 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
// cCcD_GStts::~cCcD_GStts() {
extern "C" void __dt__10cCcD_GSttsFv() {
// NONMATCHING
}
/* 805A3358-805A3388 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Tag_AttackItem */
extern actor_process_profile_definition g_profile_Tag_AttackItem = {
fpcLy_CURRENT_e,
7,
fpcPi_CURRENT_e,
PROC_Tag_AttackItem,
&g_fpcLf_Method.base,
sizeof(daTagAtkItem_c),
0,
0,
&g_fopAc_Method.base,
585,
&l_daTagAtkItem_Method,
0x40000,
fopAc_ACTOR_e,
fopAc_CULLBOX_CUSTOM_e,
};
+1 -1
View File
@@ -68,7 +68,7 @@ daTit_HIO_c::daTit_HIO_c() {
mPSPosX = 303.0f;
break;
case OS_LANGUAGE_FRENCH:
mPSPosX = 304.0f;
mPSPosX = FB_WIDTH / 2;
break;
}
#else