mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-05-26 07:18:47 -04:00
f9380b3e05
* d_a_obj_carry work, SETUP_ACTOR macro * rm headers, add script * progress * macro rename, consistent spacing
417 lines
13 KiB
C++
417 lines
13 KiB
C++
//
|
|
// Generated By: dol2asm
|
|
// Translation Unit: d/d_scope
|
|
//
|
|
|
|
#include "d/d_scope.h"
|
|
#include "JSystem/J2DGraph/J2DScreen.h"
|
|
#include "JSystem/JUtility/JUTTexture.h"
|
|
#include "d/com/d_com_inf_game.h"
|
|
#include "d/meter/d_meter2_info.h"
|
|
#include "dol2asm.h"
|
|
#include "global.h"
|
|
|
|
//
|
|
// Forward References:
|
|
//
|
|
|
|
extern "C" void __ct__8dScope_cFUc();
|
|
extern "C" void __ct__Q28JUtility6TColorFv();
|
|
extern "C" void __dt__8dScope_cFv();
|
|
extern "C" void _execute__8dScope_cFUl();
|
|
extern "C" void draw__8dScope_cFv();
|
|
extern "C" void isDead__8dScope_cFv();
|
|
extern "C" void open_init__8dScope_cFv();
|
|
extern "C" void open_proc__8dScope_cFv();
|
|
extern "C" void move_init__8dScope_cFv();
|
|
extern "C" void move_proc__8dScope_cFv();
|
|
extern "C" void close_init__8dScope_cFv();
|
|
extern "C" void close_proc__8dScope_cFv();
|
|
extern "C" void __dt__11dMeterSub_cFv();
|
|
extern "C" int _create__11dMeterSub_cFv();
|
|
extern "C" int _delete__11dMeterSub_cFv();
|
|
extern "C" void draw__11dMeterSub_cFv();
|
|
extern "C" int _execute__11dMeterSub_cFUl();
|
|
extern "C" int isDead__11dMeterSub_cFv();
|
|
extern "C" void __sinit_d_scope_cpp();
|
|
extern "C" extern char const* const d_d_scope__stringBase0;
|
|
|
|
//
|
|
// External References:
|
|
//
|
|
|
|
extern "C" void* __nw__FUl();
|
|
extern "C" void __dl__FPv();
|
|
extern "C" void J2DDrawLine__FffffQ28JUtility6TColori();
|
|
extern "C" void __ct__10J2DPictureFPC7ResTIMG();
|
|
extern "C" void __construct_array();
|
|
extern "C" void __ptmf_scall();
|
|
extern "C" void _savegpr_23();
|
|
extern "C" void _savegpr_29();
|
|
extern "C" void _restgpr_23();
|
|
extern "C" void _restgpr_29();
|
|
extern "C" extern void* __vt__12dDlst_base_c[3];
|
|
|
|
//
|
|
// Declarations:
|
|
//
|
|
|
|
/* 803BB618-803BB624 018738 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
|
|
SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
};
|
|
|
|
/* 803BB648-803BB66C 018768 0024+00 2/3 0/0 0/0 .data init_process */
|
|
typedef void (dScope_c::*initFunc)();
|
|
SECTION_DATA initFunc init_process[] = {
|
|
&dScope_c::open_init,
|
|
&dScope_c::move_init,
|
|
&dScope_c::close_init,
|
|
};
|
|
|
|
/* 803BB690-803BB6B4 0187B0 0024+00 1/2 0/0 0/0 .data move_process */
|
|
typedef void (dScope_c::*moveFunc)();
|
|
SECTION_DATA moveFunc move_process[] = {
|
|
&dScope_c::open_proc,
|
|
&dScope_c::move_proc,
|
|
&dScope_c::close_proc,
|
|
};
|
|
|
|
/* 80453A10-80453A14 002010 0004+00 4/4 0/0 0/0 .sdata2 @3756 */
|
|
SECTION_SDATA2 static f32 lit_3756 = 3.0f;
|
|
|
|
/* 80453A14-80453A18 002014 0004+00 4/4 0/0 0/0 .sdata2 @3757 */
|
|
SECTION_SDATA2 static u8 lit_3757[4] = {
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
};
|
|
|
|
extern void* __vt__11dMeterSub_c[8 + 3 /* padding */];
|
|
|
|
/* 80193690-80193960 18DFD0 02D0+00 0/0 1/1 0/0 .text __ct__8dScope_cFUc */
|
|
dScope_c::dScope_c(u8 param_0) : field_0x58(-1), field_0x5c(-1) {
|
|
field_0x8d = param_0;
|
|
ResTIMG* mp_image = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', "wipe_00.bti");
|
|
|
|
mHawkEyeScrn = NULL;
|
|
mHawkEyeRootPane = NULL;
|
|
mZoomInOutScrn = NULL;
|
|
mZoomInOutRootPane = NULL;
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
mHawkEyePanes[i] = NULL;
|
|
}
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
for (int j = 0; j < 2; j++) {
|
|
mZoomInOutPanes[i][j] = NULL;
|
|
}
|
|
}
|
|
|
|
mpWipeTex = new J2DPicture(mp_image);
|
|
mpWipeTex->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0, 0, 0, 255));
|
|
mWidth = mp_image->width;
|
|
mHeight = mp_image->height;
|
|
|
|
mp_image = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', "tt_block8x8.bti");
|
|
mpBlackTex = new J2DPicture(mp_image);
|
|
mpBlackTex->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0, 0, 0, 255));
|
|
mScale = lit_3756;
|
|
mAlpha = FLOAT_LABEL(lit_3757);
|
|
mOpenTimer = 0;
|
|
field_0x8a = 0;
|
|
mProcess = PROC_OPEN;
|
|
mIsDead = false;
|
|
(this->*init_process[mProcess])();
|
|
}
|
|
|
|
/* 803BB6B4-803BB6D4 0187D4 0020+00 2/2 0/0 0/0 .data __vt__8dScope_c */
|
|
SECTION_DATA extern void* __vt__8dScope_c[8] = {
|
|
(void*)NULL /* RTTI */, (void*)NULL,
|
|
(void*)draw__8dScope_cFv, (void*)__dt__8dScope_cFv,
|
|
(void*)_create__11dMeterSub_cFv, (void*)_execute__8dScope_cFUl,
|
|
(void*)_delete__11dMeterSub_cFv, (void*)isDead__8dScope_cFv,
|
|
};
|
|
|
|
/* 803BB6D4-803BB700 0187F4 0020+0C 3/3 6/6 0/0 .data __vt__11dMeterSub_c */
|
|
SECTION_DATA extern void* __vt__11dMeterSub_c[8 + 3 /* padding */] = {
|
|
(void*)NULL /* RTTI */,
|
|
(void*)NULL,
|
|
(void*)draw__11dMeterSub_cFv,
|
|
(void*)__dt__11dMeterSub_cFv,
|
|
(void*)_create__11dMeterSub_cFv,
|
|
(void*)_execute__11dMeterSub_cFUl,
|
|
(void*)_delete__11dMeterSub_cFv,
|
|
(void*)isDead__11dMeterSub_cFv,
|
|
/* padding */
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
};
|
|
|
|
/* 8019396C-80193B90 18E2AC 0224+00 1/0 0/0 0/0 .text __dt__8dScope_cFv */
|
|
dScope_c::~dScope_c() {
|
|
if (mHawkEyeScrn != NULL) {
|
|
delete mHawkEyeScrn;
|
|
mHawkEyeScrn = NULL;
|
|
}
|
|
|
|
if (mHawkEyeRootPane != NULL) {
|
|
delete mHawkEyeRootPane;
|
|
mHawkEyeRootPane = NULL;
|
|
}
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
if (mHawkEyePanes[i] != NULL) {
|
|
delete mHawkEyePanes[i];
|
|
mHawkEyePanes[i] = NULL;
|
|
}
|
|
}
|
|
|
|
if (mZoomInOutScrn != NULL) {
|
|
delete mZoomInOutScrn;
|
|
mZoomInOutScrn = NULL;
|
|
}
|
|
|
|
if (mZoomInOutRootPane != NULL) {
|
|
delete mZoomInOutRootPane;
|
|
mZoomInOutRootPane = NULL;
|
|
}
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
for (int j = 0; j < 2; j++) {
|
|
if (mZoomInOutPanes[i][j] != NULL) {
|
|
delete mZoomInOutPanes[i][j];
|
|
mZoomInOutPanes[i][j] = NULL;
|
|
}
|
|
}
|
|
}
|
|
|
|
delete mpWipeTex;
|
|
mpWipeTex = NULL;
|
|
|
|
delete mpBlackTex;
|
|
mpBlackTex = NULL;
|
|
|
|
dMeter2Info_setScopeZoomPointer(0);
|
|
}
|
|
|
|
/* 80193B90-80193C68 18E4D0 00D8+00 1/0 0/0 0/0 .text _execute__8dScope_cFUl */
|
|
int dScope_c::_execute(u32) {
|
|
u8 old_proc = mProcess;
|
|
(this->*move_process[mProcess])();
|
|
|
|
if (!dComIfGp_checkCameraAttentionStatus(0, 8)) {
|
|
mProcess = PROC_CLOSE;
|
|
}
|
|
|
|
if (mProcess != old_proc) {
|
|
(this->*init_process[mProcess])();
|
|
}
|
|
|
|
if (mProcess != PROC_CLOSE) {
|
|
dComIfGp_setCStickStatusForce(61, 10, 3);
|
|
|
|
if (i_dComIfGp_checkPlayerStatus0(0, 0x1000)) {
|
|
dComIfGp_setRStatusForce(0x11, 3);
|
|
}
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80453A20-80453A24 002020 0004+00 1/1 0/0 0/0 .sdata2 @3879 */
|
|
SECTION_SDATA2 static f32 lit_3879 = 255.0f;
|
|
|
|
/* 80453A24-80453A28 002024 0004+00 1/1 0/0 0/0 .sdata2 @3880 */
|
|
SECTION_SDATA2 static f32 lit_3880 = 304.0f;
|
|
|
|
/* 80453A28-80453A2C 002028 0004+00 1/1 0/0 0/0 .sdata2 @3881 */
|
|
SECTION_SDATA2 static f32 lit_3881 = 448.0f;
|
|
|
|
/* 80453A2C-80453A30 00202C 0004+00 1/1 0/0 0/0 .sdata2 @3882 */
|
|
SECTION_SDATA2 static f32 lit_3882 = 224.0f;
|
|
|
|
/* 80453A30-80453A34 002030 0004+00 1/1 0/0 0/0 .sdata2 @3883 */
|
|
SECTION_SDATA2 static f32 lit_3883 = 608.0f;
|
|
|
|
/* 80193C68-80193FA0 18E5A8 0338+00 1/0 0/0 0/0 .text draw__8dScope_cFv */
|
|
// matches with literals and when vtables in this TU are fixed
|
|
#ifdef NONMATCHING
|
|
void dScope_c::draw() {
|
|
dComIfGp_getCurrentGrafPort()->setup2D();
|
|
f32 temp_f1 = mScale;
|
|
f32 temp_f31 = mWidth * temp_f1;
|
|
f32 temp_f30 = mHeight * temp_f1;
|
|
u8 alpha = mAlpha * 255.0f;
|
|
|
|
if (i_dComIfGp_checkPlayerStatus0(0, 0x1000)) {
|
|
J2DDrawLine(304.0f, mDoGph_gInf_c::getMinYF(), 304.0f, mDoGph_gInf_c::getMaxYF(),
|
|
JUtility::TColor(255, 0, 0, alpha), 6);
|
|
J2DDrawLine(mDoGph_gInf_c::getMinXF(), 224.0f, mDoGph_gInf_c::getMaxXF(), 224.0f,
|
|
JUtility::TColor(255, 0, 0, alpha), 6);
|
|
}
|
|
|
|
mpWipeTex->setAlpha(alpha);
|
|
mpBlackTex->setAlpha(alpha);
|
|
|
|
f32 temp_f29 = 304.0f - temp_f31;
|
|
f32 temp_f28 = 304.0f + temp_f31;
|
|
f32 temp_f27 = 224.0f - temp_f30;
|
|
f32 temp_f26 = 224.0f + temp_f30;
|
|
|
|
mpWipeTex->draw(temp_f29, temp_f27, temp_f31, temp_f30, false, false, false);
|
|
mpWipeTex->draw(304.0f, temp_f27, temp_f31, temp_f30, true, false, false);
|
|
mpWipeTex->draw(temp_f29, 224.0f, temp_f31, temp_f30, false, true, false);
|
|
mpWipeTex->draw(304.0f, 224.0f, temp_f31, temp_f30, true, true, false);
|
|
|
|
mpBlackTex->draw(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMinYF(),
|
|
mDoGph_gInf_c::getWidthF(), temp_f27 - mDoGph_gInf_c::getMinYF(), false, false,
|
|
false);
|
|
mpBlackTex->draw(mDoGph_gInf_c::getMinXF(), temp_f26, mDoGph_gInf_c::getWidthF(),
|
|
mDoGph_gInf_c::getMaxYF() - temp_f26, false, false, false);
|
|
mpBlackTex->draw(mDoGph_gInf_c::getMinXF(), temp_f27, temp_f29 - mDoGph_gInf_c::getMinXF(),
|
|
temp_f26 - temp_f27, false, false, false);
|
|
mpBlackTex->draw(temp_f28, temp_f27, mDoGph_gInf_c::getMaxXF() - temp_f28, temp_f26 - temp_f27,
|
|
false, false, false);
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
// asm void dScope_c::draw() {
|
|
extern "C" asm void draw__8dScope_cFv() {
|
|
nofralloc
|
|
#include "asm/d/d_scope/draw__8dScope_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 80193FA0-80193FB4 18E8E0 0014+00 1/0 0/0 0/0 .text isDead__8dScope_cFv */
|
|
bool dScope_c::isDead() {
|
|
return mIsDead != false ? 1 : 0;
|
|
}
|
|
|
|
/* 80193FB4-80193FD0 18E8F4 001C+00 1/0 0/0 0/0 .text open_init__8dScope_cFv */
|
|
void dScope_c::open_init() {
|
|
mScale = lit_3756;
|
|
mAlpha = FLOAT_LABEL(lit_3757);
|
|
mOpenTimer = 0;
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 80453A34-80453A38 002034 0004+00 2/2 0/0 0/0 .sdata2 @3902 */
|
|
SECTION_SDATA2 static f32 lit_3902 = 1.5f;
|
|
|
|
/* 80453A38-80453A3C 002038 0004+00 2/2 0/0 0/0 .sdata2 @3903 */
|
|
SECTION_SDATA2 static f32 lit_3903 = 5.0f;
|
|
|
|
/* 80453A3C-80453A40 00203C 0004+00 2/2 0/0 0/0 .sdata2 @3904 */
|
|
SECTION_SDATA2 static f32 lit_3904 = 1.0f;
|
|
|
|
/* 80453A40-80453A48 002040 0008+00 2/2 0/0 0/0 .sdata2 @3906 */
|
|
SECTION_SDATA2 static f64 lit_3906 = 4503601774854144.0 /* cast s32 to float */;
|
|
|
|
/* 80193FD0-80194048 18E910 0078+00 1/0 0/0 0/0 .text open_proc__8dScope_cFv */
|
|
// matches with literals
|
|
#ifdef NONMATCHING
|
|
void dScope_c::open_proc() {
|
|
mOpenTimer++;
|
|
mScale = 3.0f - (mOpenTimer / 5.0f) * 1.5f;
|
|
mAlpha = 1.0f;
|
|
|
|
if (mOpenTimer >= 5) {
|
|
mScale = 1.5f;
|
|
mAlpha = 1.0f;
|
|
mProcess = PROC_MOVE;
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dScope_c::open_proc() {
|
|
nofralloc
|
|
#include "asm/d/d_scope/open_proc__8dScope_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 80194048-8019404C 18E988 0004+00 1/0 0/0 0/0 .text move_init__8dScope_cFv */
|
|
void dScope_c::move_init() {}
|
|
|
|
/* 8019404C-80194050 18E98C 0004+00 1/0 0/0 0/0 .text move_proc__8dScope_cFv */
|
|
void dScope_c::move_proc() {}
|
|
|
|
/* 80194050-80194054 18E990 0004+00 1/0 0/0 0/0 .text close_init__8dScope_cFv */
|
|
void dScope_c::close_init() {}
|
|
|
|
/* 80194054-801940D4 18E994 0080+00 1/0 0/0 0/0 .text close_proc__8dScope_cFv */
|
|
// matches with literals
|
|
#ifdef NONMATCHING
|
|
void dScope_c::close_proc() {
|
|
if (mOpenTimer > 0) {
|
|
mOpenTimer--;
|
|
mScale = 3.0f - (mOpenTimer / 5.0f) * 1.5f;
|
|
mAlpha = 1.0f;
|
|
} else {
|
|
mScale = 3.0f;
|
|
mAlpha = 0.0f;
|
|
mIsDead = true;
|
|
}
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void dScope_c::close_proc() {
|
|
nofralloc
|
|
#include "asm/d/d_scope/close_proc__8dScope_cFv.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 801940D4-8019411C 18EA14 0048+00 1/0 0/0 0/0 .text __dt__11dMeterSub_cFv */
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
// asm dMeterSub_c::~dMeterSub_c() {
|
|
extern "C" asm void __dt__11dMeterSub_cFv() {
|
|
nofralloc
|
|
#include "asm/d/d_scope/__dt__11dMeterSub_cFv.s"
|
|
}
|
|
#pragma pop
|
|
|
|
/* 8019411C-80194124 18EA5C 0008+00 2/0 0/0 0/0 .text _create__11dMeterSub_cFv */
|
|
// int dMeterSub_c::_create() {
|
|
extern "C" int _create__11dMeterSub_cFv() {
|
|
return false;
|
|
}
|
|
|
|
/* 80194124-8019412C 18EA64 0008+00 2/0 0/0 0/0 .text _delete__11dMeterSub_cFv */
|
|
// int dMeterSub_c::_delete() {
|
|
extern "C" int _delete__11dMeterSub_cFv() {
|
|
return false;
|
|
}
|
|
|
|
/* 8019412C-80194130 18EA6C 0004+00 1/0 0/0 0/0 .text draw__11dMeterSub_cFv */
|
|
// void dMeterSub_c::draw() {
|
|
extern "C" void draw__11dMeterSub_cFv() {
|
|
/* empty function */
|
|
}
|
|
|
|
/* 80194130-80194138 18EA70 0008+00 1/0 0/0 0/0 .text _execute__11dMeterSub_cFUl */
|
|
// int dMeterSub_c::_execute(u32 param_0) {
|
|
extern "C" int _execute__11dMeterSub_cFUl() {
|
|
return false;
|
|
}
|
|
|
|
/* 80194138-80194140 18EA78 0008+00 1/0 3/0 0/0 .text isDead__11dMeterSub_cFv */
|
|
// int dMeterSub_c::isDead() {
|
|
extern "C" int isDead__11dMeterSub_cFv() {
|
|
return false;
|
|
}
|