summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/CaptureScreen.cpp30
-rw-r--r--src/JSystem/JKernel/JKRExpHeap.cpp4
-rw-r--r--src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/math.h2
-rw-r--r--src/c/c_dylink.cpp201
-rw-r--r--src/d/actor/d_a_alink_kandelaar.inc2
-rw-r--r--src/d/actor/d_a_balloon_2D.cpp2
-rw-r--r--src/d/actor/d_a_e_fk.cpp2
-rw-r--r--src/d/actor/d_a_e_fs.cpp2
-rw-r--r--src/d/actor/d_a_e_sm.cpp2
-rw-r--r--src/d/actor/d_a_mg_fshop.cpp1612
-rw-r--r--src/d/actor/d_a_mirror.cpp8
-rw-r--r--src/d/actor/d_a_movie_player.cpp4
-rw-r--r--src/d/actor/d_a_npc.cpp2
-rw-r--r--src/d/actor/d_a_npc_henna.cpp4
-rw-r--r--src/d/actor/d_a_obj_ari.cpp2
-rw-r--r--src/d/actor/d_a_obj_cho.cpp2
-rw-r--r--src/d/actor/d_a_obj_crvfence.cpp6
-rw-r--r--src/d/actor/d_a_obj_crvhahen.cpp2
-rw-r--r--src/d/actor/d_a_obj_dan.cpp2
-rw-r--r--src/d/actor/d_a_obj_gomikabe.cpp2
-rw-r--r--src/d/actor/d_a_obj_groundwater.cpp2
-rw-r--r--src/d/actor/d_a_obj_hhashi.cpp2
-rw-r--r--src/d/actor/d_a_obj_kabuto.cpp2
-rw-r--r--src/d/actor/d_a_obj_kamakiri.cpp8
-rw-r--r--src/d/actor/d_a_obj_katatsumuri.cpp6
-rw-r--r--src/d/actor/d_a_obj_kuwagata.cpp4
-rw-r--r--src/d/actor/d_a_obj_lv3Water2.cpp2
-rw-r--r--src/d/actor/d_a_obj_mhole.cpp2
-rw-r--r--src/d/actor/d_a_obj_mirror_chain.cpp459
-rw-r--r--src/d/actor/d_a_obj_octhashi.cpp4
-rw-r--r--src/d/actor/d_a_obj_rstair.cpp2
-rw-r--r--src/d/actor/d_a_obj_ten.cpp4
-rw-r--r--src/d/actor/d_a_obj_thashi.cpp4
-rw-r--r--src/d/actor/d_a_obj_tombo.cpp4
-rw-r--r--src/d/actor/d_a_obj_tp.cpp2
-rw-r--r--src/d/actor/d_a_obj_zra_freeze.cpp2
-rw-r--r--src/d/actor/d_a_tag_attack_item.cpp290
-rw-r--r--src/d/actor/d_a_title.cpp2
-rw-r--r--src/d/d_camera.cpp10
-rw-r--r--src/d/d_com_inf_game.cpp6
-rw-r--r--src/d/d_cursor_mng.cpp4
-rw-r--r--src/d/d_debug_camera.cpp2
-rw-r--r--src/d/d_error_msg.cpp42
-rw-r--r--src/d/d_file_select.cpp2
-rw-r--r--src/d/d_gameover.cpp12
-rw-r--r--src/d/d_home_button.cpp8
-rw-r--r--src/d/d_insect.cpp4
-rw-r--r--src/d/d_kankyo.cpp2
-rw-r--r--src/d/d_kankyo_debug.cpp6
-rw-r--r--src/d/d_kankyo_rain.cpp23
-rw-r--r--src/d/d_menu_collect.cpp2
-rw-r--r--src/d/d_menu_dmap.cpp6
-rw-r--r--src/d/d_menu_fishing.cpp2
-rw-r--r--src/d/d_menu_fmap.cpp4
-rw-r--r--src/d/d_menu_fmap2D.cpp8
-rw-r--r--src/d/d_menu_insect.cpp4
-rw-r--r--src/d/d_menu_item_explain.cpp2
-rw-r--r--src/d/d_menu_letter.cpp4
-rw-r--r--src/d/d_menu_option.cpp4
-rw-r--r--src/d/d_menu_skill.cpp4
-rw-r--r--src/d/d_menu_window.cpp6
-rw-r--r--src/d/d_meter_HIO.cpp650
-rw-r--r--src/d/d_msg_object.cpp4
-rw-r--r--src/d/d_msg_scrn_howl.cpp18
-rw-r--r--src/d/d_msg_scrn_item.cpp10
-rw-r--r--src/d/d_ovlp_fade2.cpp8
-rw-r--r--src/d/d_ovlp_fade3.cpp12
-rw-r--r--src/d/d_pane_class.cpp2
-rw-r--r--src/d/d_s_logo.cpp20
-rw-r--r--src/d/d_s_play.cpp15
-rw-r--r--src/m_Do/m_Do_graphic.cpp1601
-rw-r--r--src/m_Do/m_Do_lib.cpp9
-rw-r--r--src/m_Do/m_Do_machine.cpp58
73 files changed, 3430 insertions, 1838 deletions
diff --git a/src/CaptureScreen.cpp b/src/CaptureScreen.cpp
new file mode 100644
index 0000000000..f6b24e63bc
--- /dev/null
+++ b/src/CaptureScreen.cpp
@@ -0,0 +1,30 @@
+#include "CaptureScreen.h"
+
+CaptureScreen::CaptureScreen(const JFWDisplay* pDisplay) {
+ mpDisplay = pDisplay;
+ field_0x4 = 0;
+}
+
+int CaptureScreen::getAlignedWidthBytes(int param_0) {
+ return ROUND((param_0 * 4) - param_0, 4);
+}
+
+int CaptureScreen::getBmpBufferSize(int param_0, int param_1) {
+ return param_1 * getAlignedWidthBytes(param_0) + 0x36;
+}
+
+void CaptureScreen::makeBmpFromEfb(void* param_0, int param_1, int param_2, int param_3, int param_4, int param_5, int param_6) {
+ // NONMATCHING
+}
+
+void CaptureScreen::openBmp(int param_0, int param_1) {
+ // NONMATCHING
+}
+
+void CaptureScreen::closeBmp() {
+ // NONMATCHING
+}
+
+void CaptureScreen::saveBmp(void* param_0, u32 param_1) {
+ // NONMATCHING
+}
diff --git a/src/JSystem/JKernel/JKRExpHeap.cpp b/src/JSystem/JKernel/JKRExpHeap.cpp
index 9bbf37a505..143b05e21b 100644
--- a/src/JSystem/JKernel/JKRExpHeap.cpp
+++ b/src/JSystem/JKernel/JKRExpHeap.cpp
@@ -826,7 +826,7 @@ bool JKRExpHeap::dump() {
}
JUTReportConsole_f("%s %08x: %08x %3d %3d (%08x %08x)\n",
- block->_isTempMemBlock() ? " temp" : "alloc", block->getContent(),
+ block->isTempMemBlock() ? " temp" : "alloc", block->getContent(),
block->size, block->mGroupId, block->getAlignment(), block->mPrev,
block->mNext);
usedBytes += sizeof(CMemBlock) + block->size + block->getAlignment();
@@ -886,7 +886,7 @@ bool JKRExpHeap::dump_sort() {
int offset = block->getAlignment();
void* content = block->getContent();
- const char* type = block->_isTempMemBlock() ? " temp" : "alloc";
+ const char* type = block->isTempMemBlock() ? " temp" : "alloc";
JUTReportConsole_f("%s %08x: %08x %3d %3d (%08x %08x)\n", type, content, block->size,
block->getGroupId(), offset, block->mPrev, block->mNext);
usedBytes += sizeof(CMemBlock) + block->size + block->getAlignment();
diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/math.h b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/math.h
index 23dd1334e9..15465dc7a7 100644
--- a/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/math.h
+++ b/src/PowerPC_EABI_Support/MSL/MSL_C/MSL_Common/Include/math.h
@@ -70,7 +70,7 @@ double sqrt(double);
double tan(double);
float tanf(float);
-#if PLATFORM_SHIELD
+#if PLATFORM_WII || PLATFORM_SHIELD
inline float sqrtf(float mag) {
return sqrt(mag);
}
diff --git a/src/c/c_dylink.cpp b/src/c/c_dylink.cpp
index 17dd970f33..1670a38d51 100644
--- a/src/c/c_dylink.cpp
+++ b/src/c/c_dylink.cpp
@@ -10,6 +10,11 @@
#include "d/d_com_inf_game.h"
#include "m_Do/m_Do_ext.h"
+#if DEBUG
+#include "f_pc/f_pc_debug_sv.h"
+#include "m_Do/m_Do_ext2.h"
+#endif
+
/* 80374640-80375DE8 -00001 17A8+00 1/1 0/0 0/0 .rodata DynamicNameTable */
static DynamicNameTableEntry const DynamicNameTable[] = {
{PROC_ALLDIE, "d_a_alldie"},
@@ -17,6 +22,9 @@ static DynamicNameTableEntry const DynamicNameTable[] = {
{PROC_Obj_Swpush2, "d_a_obj_swpush2"},
{PROC_Obj_Swpush5, "d_a_obj_swpush5"},
{PROC_Tag_Gstart, "d_a_tag_gstart"},
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ {PROC_NO_CHG_ROOM, "d_a_no_chg_room"},
+ #endif
{PROC_Obj_Lv6ElevtA, "d_a_obj_lv6elevta"},
{PROC_OBJ_SO, "d_a_obj_so"},
{PROC_Obj_Movebox, "d_a_obj_movebox"},
@@ -91,7 +99,9 @@ static DynamicNameTableEntry const DynamicNameTable[] = {
{PROC_Obj_BkDoor, "d_a_obj_bkdoor"},
{PROC_Obj_Cboard, "d_a_obj_cboard"},
{PROC_Obj_MGate, "d_a_obj_mgate"},
+ #if !PLATFORM_SHIELD
{PROC_Obj_Ikada, "d_a_obj_ikada"},
+ #endif
{PROC_Obj_Ice_l, "d_a_obj_ice_l"},
{PROC_Obj_Ice_s, "d_a_obj_ice_s"},
{PROC_Obj_E_CREATE, "d_a_obj_enemy_create"},
@@ -530,14 +540,18 @@ static DynamicNameTableEntry const DynamicNameTable[] = {
{PROC_Obj_LifeContainer, "d_a_obj_life_container"},
{PROC_Obj_Shield, "d_a_obj_shield"},
{PROC_Demo_Item, "d_a_demo_item"},
+ #if !PLATFORM_SHIELD
{PROC_ShopItem, "d_a_shop_item"},
+ #endif
{PROC_Obj_Drop, "d_a_obj_drop"},
{PROC_OBJ_RW, "d_a_obj_rw"},
{PROC_NBOMB, "d_a_nbomb"},
{PROC_TAG_CSW, "d_a_tag_csw"},
{PROC_TAG_QS, "d_a_tag_qs"},
{PROC_HOZELDA, "d_a_hozelda"},
+ #if !PLATFORM_SHIELD
{PROC_SWC00, "d_a_swc00"},
+ #endif
{PROC_KNOB20, "d_a_door_knob00"},
{PROC_DBDOOR, "d_a_door_dbdoor00"},
{PROC_BOSS_DOOR, "d_a_door_boss"},
@@ -549,7 +563,9 @@ static DynamicNameTableEntry const DynamicNameTable[] = {
{PROC_Tag_ChgRestart, "d_a_tag_chgrestart"},
{PROC_Tag_Restart, "d_a_tag_setrestart"},
{PROC_ANDSW, "d_a_andsw"},
+ #if !PLATFORM_SHIELD
{PROC_ANDSW2, "d_a_andsw2"},
+ #endif
{PROC_MYNA, "d_a_myna"},
{PROC_NPC_GND, "d_a_npc_gnd"},
{PROC_NPC_GRA, "d_a_npc_gra"},
@@ -668,10 +684,14 @@ static DynamicNameTableEntry const DynamicNameTable[] = {
{PROC_NPC_CHIN, "d_a_npc_chin"},
{PROC_NPC_INS, "d_a_npc_ins"},
{PROC_NPC_SHOP0, "d_a_npc_shop0"},
+ #if !PLATFORM_SHIELD
{PROC_NPC_MK, "d_a_npc_mk"},
+ #endif
{PROC_NPC_P2, "d_a_npc_p2"},
{PROC_KYTAG00, "d_a_kytag00"},
+ #if !PLATFORM_SHIELD
{PROC_KYTAG01, "d_a_kytag01"},
+ #endif
{PROC_KYTAG02, "d_a_kytag02"},
{PROC_KYTAG03, "d_a_kytag03"},
{PROC_KYTAG04, "d_a_kytag04"},
@@ -709,11 +729,15 @@ static DynamicNameTableEntry const DynamicNameTable[] = {
{PROC_DEMO00, "d_a_demo00"},
{PROC_TAG_CAMERA, "d_a_tag_camera"},
{PROC_TAG_CHKPOINT, "d_a_tag_chkpoint"},
+ #if !PLATFORM_SHIELD
{PROC_TAG_EVENT, "d_a_tag_event"},
+ #endif
{PROC_TAG_EVT, "d_a_tag_evt"},
{PROC_TAG_TELOP, "d_a_tag_telop"},
{PROC_TAG_HOWL, "d_a_tag_howl"},
+ #if !PLATFORM_SHIELD
{PROC_TAG_MSG, "d_a_tag_msg"},
+ #endif
{PROC_TAG_LANTERN, "d_a_tag_lantern"},
{PROC_Tag_Mist, "d_a_tag_mist"},
{PROC_DMIDNA, "d_a_dmidna"},
@@ -724,7 +748,9 @@ static DynamicNameTableEntry const DynamicNameTable[] = {
{PROC_BG_OBJ, "d_a_bg_obj"},
{PROC_MIRROR, "d_a_mirror"},
{PROC_MOVIE_PLAYER, "d_a_movie_player"},
+ #if !PLATFORM_SHIELD
{PROC_TITLE, "d_a_title"},
+ #endif
{PROC_FR, "d_a_fr"},
{PROC_ECONT, "d_a_econt"},
{PROC_MG_ROD, "d_a_mg_rod"},
@@ -767,70 +793,134 @@ static DynamicNameTableEntry const DynamicNameTable[] = {
{PROC_Obj_Timer, "d_a_obj_timer"},
{PROC_SCENE_EXIT, "d_a_scene_exit"},
{PROC_SUSPEND, "d_a_suspend"},
+ #if !PLATFORM_SHIELD
{PROC_GRASS, "d_a_grass"},
+ #endif
{0xFFFF, NULL},
};
/* 803F0F50-803F1BB0 01DC70 0C60+00 4/4 0/0 0/0 .bss DMC */
-static DynamicModuleControlBase* DMC[792];
+static DynamicModuleControlBase* DMC[PROC_MAX_NUM];
/* 80450CA8-80450CAC 0001A8 0004+00 1/1 0/0 0/0 .sbss None */
static bool DMC_initialized;
+/* 80450CAC-80450CB0 0001AC 0004+00 2/2 0/0 0/0 .sbss cDyl_Initialized */
+static BOOL cDyl_Initialized;
+
/* 800183DC-80018544 012D1C 0168+00 1/1 0/0 0/0 .text cCc_Init__Fv */
-static int cCc_Init() {
- JKRHeap* arcHeap = mDoExt_getArchiveHeap();
- JKRSolidHeap* heap = JKRSolidHeap::create(0x8820, arcHeap, false);
- JKRHeap* prev = heap->becomeCurrentHeap();
+int cCc_Init() {
+ JUT_ASSERT(37, !DMC_initialized);
+
+ #if PLATFORM_GCN
+ JKRHeap* parentHeap = mDoExt_getArchiveHeap();
+ #else
+ JKRHeap* parentHeap = DynamicModuleControlBase::getHeap();
+ #endif
+ u32 dmcHeapSize = sizeof(DynamicModuleControl) * PROC_MAX_NUM;
+
+ JKRSolidHeap* dmcHeap = JKRCreateSolidHeap(dmcHeapSize, parentHeap, false);
+ JKRHeap* prevHeap = JKRSetCurrentHeap(dmcHeap);
memset(&DMC, 0, sizeof(DMC));
+
for (int i = 0; i < ARRAY_SIZEU(DynamicNameTable); i++) {
- const DynamicNameTableEntry* d = &DynamicNameTable[i];
+ const DynamicNameTableEntry& d = DynamicNameTable[i];
+
+ if (d.name != NULL) {
+ JUT_ASSERT(52, d.mKey < ARRAY_SIZEU(DMC));
+ JUT_ASSERT(53, DMC[d.mKey] == NULL);
- if (d->name != NULL) {
for (int j = 0; j < ARRAY_SIZEU(DMC); j++) {
if (DMC[j] != NULL) {
- if (!strcmp(d->name, DMC[j]->getModuleName())) {
- DMC[d->mKey] = DMC[j];
+ if (!strcmp(d.name, DMC[j]->getModuleName())) {
+ DMC[d.mKey] = DMC[j];
break;
}
}
}
- if (DMC[d->mKey] == NULL) {
- DMC[d->mKey] = new DynamicModuleControl(d->name);
+ if (DMC[d.mKey] == NULL) {
+ DMC[d.mKey] = new DynamicModuleControl(d.name);
}
}
}
- heap->adjustSize();
- prev->becomeCurrentHeap();
+ dmcHeap->adjustSize();
+ JKRSetCurrentHeap(prevHeap);
+
+ #if DEBUG
+ FixedMemoryCheck* check = FixedMemoryCheck::easyCreate(DMC, sizeof(DMC));
+ #endif
+
DMC_initialized = true;
return 1;
}
+BOOL cCc_Check() {
+ BOOL rt = TRUE;
+ for (int i = 0; i < ARRAY_SIZEU(DynamicNameTable); i++) {
+ uintptr_t ptr = (uintptr_t)DMC[i];
+ if (ptr != NULL) {
+ u32 ptr_hi_byte = ptr >> 0x18;
+ if (ptr_hi_byte < 0x80 || ptr_hi_byte > 0x83) {
+ // "cCc_Check invalid pointer detected"
+ OS_REPORT_ERROR("cCc_Check ポインタ破壊を発見 %d %08x\n", i, ptr);
+ rt = FALSE;
+ }
+ }
+ }
+
+ return rt;
+}
+
+BOOL cDyl_IsInitialized() {
+ return cDyl_Initialized;
+}
+
/* 80018544-8001857C 012E84 0038+00 0/0 1/1 0/0 .text cDyl_IsLinked__Fs */
BOOL cDyl_IsLinked(s16 i_ProfName) {
- if (DMC[i_ProfName] != NULL) {
- return DMC[i_ProfName]->isLinked();
+ JUT_ASSERT(183, cDyl_Initialized);
+
+
+ DynamicModuleControlBase* d = DMC[i_ProfName];
+ BOOL rt;
+ if (d != NULL) {
+ rt = d->isLinked();
+ } else {
+ rt = TRUE;
}
- return true;
+
+ return rt;
}
/* 8001857C-800185C0 012EBC 0044+00 1/1 1/1 0/0 .text cDyl_Unlink__Fs */
BOOL cDyl_Unlink(s16 i_ProfName) {
- if (DMC[i_ProfName] != NULL) {
- return DMC[i_ProfName]->unlink();
+ #if DEBUG
+ cCc_Check();
+ #endif
+
+ JUT_ASSERT(206, cDyl_Initialized);
+ JUT_ASSERT(207, i_ProfName < ARRAY_SIZEU(DMC));
+
+ DynamicModuleControlBase* d = DMC[i_ProfName];
+ if (d != NULL) {
+ return d->unlink();
}
- return false;
-}
-/* 80450CAC-80450CB0 0001AC 0004+00 2/2 0/0 0/0 .sbss cDyl_Initialized */
-static BOOL cDyl_Initialized;
+ return FALSE;
+}
/* 800185C0-80018688 012F00 00C8+00 1/1 1/1 0/0 .text cDyl_LinkASync__Fs */
int cDyl_LinkASync(s16 i_ProfName) {
- if (cDyl_Initialized == false) {
+ #if DEBUG
+ cCc_Check();
+ #endif
+
+ JUT_ASSERT(266, DMC_initialized);
+
+ if (!cDyl_Initialized) {
+ OS_REPORT_ERROR("初期化が終わってないのに呼んでもらっても困ります %d %s\n", i_ProfName, fpcDbSv_getNameString(i_ProfName));
return cPhs_INIT_e;
}
@@ -839,8 +929,12 @@ int cDyl_LinkASync(s16 i_ProfName) {
return cPhs_ERROR_e;
}
+ JUT_ASSERT(282, i_ProfName < ARRAY_SIZEU(DMC));
+
DynamicModuleControlBase* d = DMC[i_ProfName];
if (d != NULL) {
+ JUT_ASSERT(286, cDyl_Initialized);
+
if (d->load_async()) {
if (d->link()) {
return cPhs_COMPLEATE_e;
@@ -859,71 +953,85 @@ int cDyl_LinkASync(s16 i_ProfName) {
/* 80018688-80018764 012FC8 00DC+00 1/1 0/0 0/0 .text cDyl_InitCallback__FPv */
static int cDyl_InitCallback(void* param_0) {
- JKRExpHeap* heap = mDoExt_getArchiveHeap();
- JKRFileLoader* loader = JKRFileCache::mount("/", heap, NULL);
+ JUT_ASSERT(335, !cDyl_Initialized);
+
+ #if PLATFORM_GCN
+ JKRHeap* parentHeap = mDoExt_getArchiveHeap();
+ #else
+ JKRHeap* parentHeap = DynamicModuleControlBase::getHeap();
+ #endif
+
+ JKRFileCache* loader = JKRMountDvdDrive("/", parentHeap, NULL);
DynamicModuleControl::initialize();
- void* strTbl = JKRFileLoader::getGlbResource("/dvd/str/Final/Release/frameworkF.str");
- JKRFileLoader::detachResource(strTbl, loader);
- loader->unmount();
+ #if PLATFORM_GCN
+ void* strTbl = JKRGetResource("/dvd/str/Final/Release/frameworkF.str");
+ #elif PLATFORM_WII
+ void* strTbl = JKRGetResource("/dvd/str/Rfinal/Release/RframeworkF.str");
+ #else
+ void* strTbl = JKRGetResource("/dvd/str/Final/Release/frameworkF.str");
+ #endif
+
+ JKRDetachResource(strTbl, loader);
+ JKRUnmountDvdDrive(loader);
OSSetStringTable(strTbl);
DynamicModuleControl dmc("f_pc_profile_lst");
dmc.link();
cDyl_Initialized = true;
- fopScnM_CreateReq(PROC_LOGO_SCENE, 0x7FFF, 0, 0);
+ fopScnM_CreateReq(PROC_LOGO_SCENE, 0x7FFF, 0, 0);
return 1;
}
-/* ############################################################################################## */
/* 80450CB0-80450CB8 0001B0 0004+04 2/2 0/0 0/0 .sbss cDyl_DVD */
static mDoDvdThd_callback_c* cDyl_DVD;
/* 80018764-80018798 0130A4 0034+00 0/0 1/1 0/0 .text cDyl_InitAsync__Fv */
void cDyl_InitAsync() {
cCc_Init();
+ JUT_ASSERT(367, cDyl_DVD == NULL);
cDyl_DVD = mDoDvdThd_callback_c::create((mDoDvdThd_callback_func)cDyl_InitCallback, NULL);
}
/* 80018798-80018804 0130D8 006C+00 0/0 2/1 0/0 .text cDyl_InitAsyncIsDone__Fv */
-int cDyl_InitAsyncIsDone() {
+BOOL cDyl_InitAsyncIsDone() {
if (cDyl_DVD == NULL) {
- return 1;
+ return TRUE;
}
if (cDyl_DVD->sync()) {
cDyl_DVD->destroy();
cDyl_DVD = NULL;
- return 1;
+ return TRUE;
}
- return 0;
+ return FALSE;
}
/* 80018804-8001880C 013144 0008+00 1/0 0/0 0/0 .text phase_01__7cDylPhsFPv */
int cDylPhs::phase_01(void* param_0) {
- return 2;
+ return cPhs_NEXT_e;
}
/* 8001880C-80018844 01314C 0038+00 1/0 0/0 0/0 .text phase_02__7cDylPhsFPs */
int cDylPhs::phase_02(s16* p_profName) {
int ret = cDyl_LinkASync(*p_profName);
-
- if (ret != 4) {
- return ret;
+ if (ret == cPhs_COMPLEATE_e) {
+ return cPhs_NEXT_e;
}
- return 2;
+
+ return ret;
}
/* 80018844-8001884C 013184 0008+00 1/0 0/0 0/0 .text phase_03__7cDylPhsFPv */
int cDylPhs::phase_03(void* param_0) {
- return 0;
+ return cPhs_INIT_e;
}
/* 8001884C-80018890 01318C 0044+00 0/0 2/2 0/0 .text
* Link__7cDylPhsFP30request_of_phase_process_classs */
-int cDylPhs::Link(request_of_phase_process_class* i_phase, s16 param_1) {
+int cDylPhs::Link(request_of_phase_process_class* i_phase, s16 i_ProfName) {
static request_of_phase_process_fn l_method[3] = {
(request_of_phase_process_fn)cDylPhs::phase_01,
(request_of_phase_process_fn)cDylPhs::phase_02,
@@ -934,20 +1042,19 @@ int cDylPhs::Link(request_of_phase_process_class* i_phase, s16 param_1) {
return cPhs_COMPLEATE_e;
}
- return dComLbG_PhaseHandler(i_phase, l_method, &param_1);
+ return dComLbG_PhaseHandler(i_phase, l_method, &i_ProfName);
}
/* 80018890-800188DC 0131D0 004C+00 0/0 1/1 0/0 .text
* Unlink__7cDylPhsFP30request_of_phase_process_classs */
int cDylPhs::Unlink(request_of_phase_process_class* i_phase, s16 i_ProfName) {
- int ret;
+ JUT_ASSERT(460, i_phase->id != cPhs_LOADING_e);
if (i_phase->id == cPhs_NEXT_e) {
- ret = cDyl_Unlink(i_ProfName);
+ int ret = cDyl_Unlink(i_ProfName);
i_phase->id = cPhs_INIT_e;
- } else {
- ret = 0;
+ return ret;
}
- return ret;
+ return 0;
}
diff --git a/src/d/actor/d_a_alink_kandelaar.inc b/src/d/actor/d_a_alink_kandelaar.inc
index afea666b31..0a24d7516c 100644
--- a/src/d/actor/d_a_alink_kandelaar.inc
+++ b/src/d/actor/d_a_alink_kandelaar.inc
@@ -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;
diff --git a/src/d/actor/d_a_balloon_2D.cpp b/src/d/actor/d_a_balloon_2D.cpp
index c177fb2230..6a49136da8 100644
--- a/src/d/actor/d_a_balloon_2D.cpp
+++ b/src/d/actor/d_a_balloon_2D.cpp
@@ -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 {
diff --git a/src/d/actor/d_a_e_fk.cpp b/src/d/actor/d_a_e_fk.cpp
index 9fa0e46915..38c369b538 100644
--- a/src/d/actor/d_a_e_fk.cpp
+++ b/src/d/actor/d_a_e_fk.cpp
@@ -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 {
diff --git a/src/d/actor/d_a_e_fs.cpp b/src/d/actor/d_a_e_fs.cpp
index d8582fb900..d5b8edaaa8 100644
--- a/src/d/actor/d_a_e_fs.cpp
+++ b/src/d/actor/d_a_e_fs.cpp
@@ -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;
diff --git a/src/d/actor/d_a_e_sm.cpp b/src/d/actor/d_a_e_sm.cpp
index cdd670aefb..18125a1db4 100644
--- a/src/d/actor/d_a_e_sm.cpp
+++ b/src/d/actor/d_a_e_sm.cpp
@@ -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;
}
diff --git a/src/d/actor/d_a_mg_fshop.cpp b/src/d/actor/d_a_mg_fshop.cpp
index 8b0c6f5980..7e94d1bbf6 100644
--- a/src/d/actor/d_a_mg_fshop.cpp
+++ b/src/d/actor/d_a_mg_fshop.cpp
@@ -6,57 +6,62 @@
#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "d/actor/d_a_mg_fshop.h"
-#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "d/actor/d_a_npc_henna.h"
+#include "d/actor/d_a_mg_rod.h"
#include "d/actor/d_a_player.h"
-#include "d/d_bg_w.h"
-#include "d/d_kankyo.h"
-#include "f_op/f_op_actor_mng.h"
#include "f_op/f_op_camera_mng.h"
#include "d/d_timer.h"
-#include "dol2asm.h"
-#include "m_Do/m_Do_controller_pad.h"
-#include "SSystem/SComponent/c_math.h"
+#include "d/d_s_play.h"
#include "Z2AudioLib/Z2Instances.h"
/* 8086C06C-8086C08C 0000EC 0020+00 1/1 0/0 0/0 .text
* ride_call_back__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c */
-static void ride_call_back(dBgW* param_0, fopAc_ac_c* param_1, fopAc_ac_c* param_2) {
- if (param_2->field_0x567 == 0) {
- param_2->field_0x567 = 1;
- ((fshop_class*)param_2)->field_0x428c = 0;
+static void ride_call_back(dBgW* i_bgw, fopAc_ac_c* i_bgActor, fopAc_ac_c* i_rideActor) {
+ if (i_rideActor->field_0x567 == 0) {
+ i_rideActor->field_0x567 = 1;
+ ((fshop_class*)i_rideActor)->field_0x428c = 0;
}
}
/* 8086C08C-8086C140 00010C 00B4+00 1/1 0/0 0/0 .text Reel_CallBack__FP8J3DJointi */
-static int Reel_CallBack(J3DJoint* param_0, int param_1) {
+static int Reel_CallBack(J3DJoint* i_joint, int param_1) {
+ s32 userarea;
+ J3DJoint* var_r27;
+
if (param_1 == 0) {
- u16 uVar1 = param_0->getJntNo();
+ var_r27 = i_joint;
+ int jnt_no = var_r27->getJntNo();
J3DModel* model = j3dSys.getModel();
- s32 iVar2 = model->getUserArea();
- MTXCopy(model->getAnmMtx(uVar1), (MtxP)calc_mtx);
- cMtx_XrotM((MtxP)calc_mtx, (int)*(short*)(iVar2 + 0x58));
- model->setAnmMtx(uVar1, (MtxP)calc_mtx);
- PSMTXCopy((MtxP)calc_mtx, (MtxP) J3DSys::mCurrentMtx);
+ userarea = model->getUserArea();
+ MTXCopy(model->getAnmMtx(jnt_no), *calc_mtx);
+ cMtx_XrotM(*calc_mtx, *(s16*)(userarea + 0x58)); // fakematch, unknown type for userarea
+ model->setAnmMtx(jnt_no, *calc_mtx);
+ MTXCopy(*calc_mtx, J3DSys::mCurrentMtx);
}
+
return 1;
}
/* 8086C140-8086C214 0001C0 00D4+00 1/1 0/0 0/0 .text frog_CallBack__FP8J3DJointi */
-static int frog_CallBack(J3DJoint* param_0, int param_1) {
+static int frog_CallBack(J3DJoint* i_joint, int param_1) {
+ int userarea;
+ J3DJoint* var_r27;
+
if (param_1 == 0) {
- s32 sVar2 = param_0->getJntNo();
+ var_r27 = i_joint;
+ int jnt_no = var_r27->getJntNo();
J3DModel* model = j3dSys.getModel();
- model->getUserArea();
- if (sVar2 == 1) {
- MtxP uVar1 = model->getAnmMtx(sVar2);
- MTXCopy(uVar1, (MtxP)calc_mtx);
- cMtx_YrotM((MtxP)calc_mtx, -8800);
- MtxScale(2.0f, 1.0f, 1.5f, 1);
- model->setAnmMtx(sVar2, (MtxP)calc_mtx);
- MTXCopy((MtxP)calc_mtx, (MtxP)J3DSys::mCurrentMtx);
+ userarea = model->getUserArea(); // unknown type
+
+ if (jnt_no == 1) {
+ MTXCopy(model->getAnmMtx(jnt_no), *calc_mtx);
+ cMtx_YrotM(*calc_mtx, JREG_S(7) + -8800);
+ MtxScale(JREG_F(10) + 2.0f, JREG_F(11) + 1.0f, JREG_F(12) + 1.5f, 1);
+ model->setAnmMtx(jnt_no, *calc_mtx);
+ MTXCopy(*calc_mtx, J3DSys::mCurrentMtx);
}
}
+
return 1;
}
@@ -70,19 +75,23 @@ static cXyz BallEndPos;
static J3DModel* ArcIX_A_crwaku_model[1];
/* 8086C214-8086C310 000294 00FC+00 1/1 0/0 0/0 .text koro2_draw__FP11fshop_class */
-static void koro2_draw(fshop_class* param_1) {
+static void koro2_draw(fshop_class* i_this) {
+ fopAc_ac_c* actor = &i_this->actor;
- if (param_1->scale.x > 5.0f) {
+ if (actor->scale.x > 5.0f) {
dComIfGd_setListBG();
}
- g_env_light.setLightTevColorType_MAJI(ArcIX_A_crwaku_model[0], &param_1->tevStr);
+
+ g_env_light.setLightTevColorType_MAJI(ArcIX_A_crwaku_model[0], &actor->tevStr);
mDoExt_modelUpdateDL(ArcIX_A_crwaku_model[0]);
- for (s32 iVar1 = 0; iVar1 < ARRAY_SIZE(param_1->mKoro2); iVar1++) {
- if (param_1->mKoro2[iVar1].mpModel != NULL) {
- g_env_light.setLightTevColorType_MAJI(param_1->mKoro2[iVar1].mpModel, &param_1->tevStr);
- mDoExt_modelUpdateDL(param_1->mKoro2[iVar1].mpModel);
+
+ for (int i = 0; i < ARRAY_SIZE(i_this->mKoro2); i++) {
+ if (i_this->mKoro2[i].mpModel != NULL) {
+ g_env_light.setLightTevColorType_MAJI(i_this->mKoro2[i].mpModel, &actor->tevStr);
+ mDoExt_modelUpdateDL(i_this->mKoro2[i].mpModel);
}
}
+
dComIfGd_setList();
}
@@ -983,91 +992,94 @@ static J3DModel* ArcIX_A_crcurve_b_model[4];
static J3DModel* ArcIX_A_crsaka_model[8];
/* 80870704-8087071C -00001 0018+00 0/1 0/0 0/0 .data koro2_union_model */
-static void* koro2_union_model[6] = {
- (void*)&ArcIX_A_crstart_model, (void*)&ArcIX_A_crgoal_model, (void*)&ArcIX_A_crbox_model,
- (void*)&ArcIX_A_crcurve_a_model, (void*)&ArcIX_A_crcurve_b_model, (void*)&ArcIX_A_crsaka_model,
+static J3DModel** koro2_union_model[6] = {
+ ArcIX_A_crstart_model, ArcIX_A_crgoal_model, ArcIX_A_crbox_model,
+ ArcIX_A_crcurve_a_model, ArcIX_A_crcurve_b_model, ArcIX_A_crsaka_model,
};
-/* 8087071C-80870728 000498 000C+00 1/1 0/0 0/0 .data rod_color$3900 */
-static GXColor rod_color[3] = {
- {0x96, 0x50, 0x14, 0xFF}, {0x64, 0x96, 0x14, 0xFF}, {0x96, 0x14, 0x14, 0xFF},
-};
+/* 8086C310-8086C6E4 000390 03D4+00 1/0 0/0 0/0 .text daFshop_Draw__FP11fshop_class */
+static int daFshop_Draw(fshop_class* i_this) {
+ fopAc_ac_c* actor = &i_this->actor;
+ g_env_light.settingTevStruct(0x10, &actor->current.pos, &actor->tevStr);
-/* 80870728-8087072C 0004A4 0004+00 1/1 0/0 0/0 .data l_color$3912 */
-static GXColor l_color = {
- 0x32,
- 0x64,
- 0x1E,
- 0xFF,
-};
+ if (i_this->field_0x4070 != NULL) {
+ g_env_light.setLightTevColorType_MAJI(i_this->field_0x4070, &actor->tevStr);
-/* 8086C310-8086C6E4 000390 03D4+00 1/0 0/0 0/0 .text daFshop_Draw__FP11fshop_class */
-// NONMATCHING regalloc
-static int daFshop_Draw(fshop_class* param_0) {
- g_env_light.settingTevStruct(0x10, &param_0->current.pos, &param_0->tevStr);
-
- if (param_0->field_0x4070 != NULL) {
- g_env_light.setLightTevColorType_MAJI(param_0->field_0x4070, &param_0->tevStr);
- param_0->field_0x4070->getModelData()->getMaterialNodePointer(0)->getTevKColor(1)->r = 0;
- mDoExt_modelUpdateDL(param_0->field_0x4070);
+ J3DMaterial* sp1C = i_this->field_0x4070->getModelData()->getMaterialNodePointer(0);
+ sp1C->getTevKColor(1)->r = 0;
+
+ mDoExt_modelUpdateDL(i_this->field_0x4070);
dComIfGd_setSimpleShadow(
- &param_0->current.pos, param_0->field_0x40b4.GetGroundH(), 66.6f * param_0->scale.x,
- param_0->field_0x40b4.m_gnd, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
+ &actor->current.pos, i_this->field_0x40b4.GetGroundH(), (TREG_F(8) + 66.6f) * actor->scale.x,
+ i_this->field_0x40b4.m_gnd, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
return 1;
}
- if (param_0->field_0x400e != 0) {
- if (param_0->field_0x400d == 0) {
- koro2_draw(param_0);
- param_0->field_0x400d = 1;
+ if (i_this->field_0x400e != 0) {
+ if (i_this->field_0x400d == 0) {
+ koro2_draw(i_this);
+ i_this->field_0x400d = 1;
}
return 1;
}
- int cVar11 = fopAcM_GetRoomNo(param_0);
- camera_class* camera = dComIfGp_getCamera(0);
+ int roomNo = fopAcM_GetRoomNo(actor);
+ camera_class* camera = (camera_class*)dComIfGp_getCamera(0);
- for (int iVar12 = 0; iVar12 < 48; iVar12++) {
- f32 fVar4 = param_0->mLure[iVar12].field_0x00.x - camera->lookat.eye.x;
- f32 fVar5 = param_0->mLure[iVar12].field_0x00.z - camera->lookat.eye.z;
- if (fVar4 * fVar4 + fVar5 * fVar5 > 1200.0f) {
- g_env_light.setLightTevColorType_MAJI(param_0->mLure[iVar12].field_0x14, &param_0->tevStr);
- mDoExt_modelUpdateDL(param_0->mLure[iVar12].field_0x14);
- if (param_0->mLure[iVar12].field_0x24 != 3) {
- for (int local_50 = 0; local_50 < 2; local_50++) {
- dComIfGp_entrySimpleModel(param_0->mLure[iVar12].field_0x18[local_50], cVar11);
+ for (int i = 0; i < 48; i++) {
+ f32 fVar4 = i_this->mLure[i].field_0x00.x - camera->lookat.eye.x;
+ f32 fVar5 = i_this->mLure[i].field_0x00.z - camera->lookat.eye.z;
+ if (SQUARE(fVar4) + SQUARE(fVar5) > KREG_F(11) + 1200.0f) {
+ g_env_light.setLightTevColorType_MAJI(i_this->mLure[i].field_0x14, &actor->tevStr);
+ mDoExt_modelUpdateDL(i_this->mLure[i].field_0x14);
+
+ if (i_this->mLure[i].field_0x24 != 3) {
+ for (int j = 0; j < 2; j++) {
+ dComIfGp_entrySimpleModel(i_this->mLure[i].field_0x18[j], roomNo);
}
}
}
}
- for (int iVar9 = 0; iVar9 < 3; iVar9++) {
- g_env_light.setLightTevColorType_MAJI(param_0->mRod[iVar9].field_0x14, &param_0->tevStr);
- mDoExt_modelUpdateDL(param_0->mRod[iVar9].field_0x14);
- param_0->mRod[iVar9].line_mat.update(8, rod_color[iVar9], &param_0->tevStr);
- dComIfGd_set3DlineMat(&param_0->mRod[iVar9].line_mat);
- for (int local_54 = 0; local_54 < 6; local_54++) {
- dComIfGp_entrySimpleModel(param_0->mRod[iVar9].field_0x18[local_54], cVar11);
+ for (int i = 0; i < 3; i++) {
+ g_env_light.setLightTevColorType_MAJI(i_this->mRod[i].field_0x14, &actor->tevStr);
+ mDoExt_modelUpdateDL(i_this->mRod[i].field_0x14);
+
+ static GXColor rod_color[3] = {
+ {0x96, 0x50, 0x14, 0xFF},
+ {0x64, 0x96, 0x14, 0xFF},
+ {0x96, 0x14, 0x14, 0xFF},
+ };
+ i_this->mRod[i].line_mat.update(8, rod_color[i], &actor->tevStr);
+ dComIfGd_set3DlineMat(&i_this->mRod[i].line_mat);
+
+ for (int j = 0; j < 6; j++) {
+ dComIfGp_entrySimpleModel(i_this->mRod[i].field_0x18[j], roomNo);
}
}
- for (int local_58 = 0; local_58 < 2; local_58++) {
- g_env_light.setLightTevColorType_MAJI(param_0->mTsubo[local_58].field_0x14, &param_0->tevStr);
- mDoExt_modelUpdateDL(param_0->mTsubo[local_58].field_0x14);
+
+ for (int i = 0; i < 2; i++) {
+ g_env_light.setLightTevColorType_MAJI(i_this->mTsubo[i].field_0x14, &actor->tevStr);
+ mDoExt_modelUpdateDL(i_this->mTsubo[i].field_0x14);
}
- param_0->field_0x3f88.update(0xf, 1.2f, l_color, 2, &param_0->tevStr);
- dComIfGd_set3DlineMat(&param_0->field_0x3f88);
- g_env_light.setLightTevColorType_MAJI(param_0->field_0x6b30, &param_0->tevStr);
- mDoExt_modelUpdateDL(param_0->field_0x6b30);
- g_env_light.setLightTevColorType_MAJI(param_0->field_0x3ff4, &param_0->tevStr);
- mDoExt_modelUpdateDL(param_0->field_0x3ff4);
- if (param_0->field_0x4004 != NULL) {
+ static GXColor l_color = {0x32, 0x64, 0x1E, 0xFF};
+ i_this->field_0x3f88.update(15, TREG_F(11) + 1.2f, l_color, 2, &actor->tevStr);
+ dComIfGd_set3DlineMat(&i_this->field_0x3f88);
+
+ g_env_light.setLightTevColorType_MAJI(i_this->field_0x6b30, &actor->tevStr);
+ mDoExt_modelUpdateDL(i_this->field_0x6b30);
+
+ g_env_light.setLightTevColorType_MAJI(i_this->field_0x3ff4, &actor->tevStr);
+ mDoExt_modelUpdateDL(i_this->field_0x3ff4);
+
+ if (i_this->field_0x4004 != NULL) {
mDoMtx_stack_c::transS(0.0f, 0.0f, 0.0f);
- MtxP pfVar10 = mDoMtx_stack_c::get();
- param_0->field_0x4004->setBaseTRMtx(pfVar10);
- g_env_light.setLightTevColorType_MAJI(param_0->field_0x4004, &param_0->tevStr);
- mDoExt_modelUpdateDL(param_0->field_0x4004);
+ i_this->field_0x4004->setBaseTRMtx(mDoMtx_stack_c::get());
+ g_env_light.setLightTevColorType_MAJI(i_this->field_0x4004, &actor->tevStr);
+ mDoExt_modelUpdateDL(i_this->field_0x4004);
}
+
return 1;
}
@@ -1097,9 +1109,10 @@ static f32 hook_2_offy[3] = {
};
/* 8086C6E4-8086C9D0 000764 02EC+00 1/1 0/0 0/0 .text lure_set__FP11fshop_class */
-static void lure_set(fshop_class* param_0) {
+static void lure_set(fshop_class* i_this) {
static f32 lure_ofy[3] = {-12.0f, -10.0f, -14.0f};
- fs_lure_s* pLure = param_0->mLure;
+ fs_lure_s* pLure = i_this->mLure;
+
for (int i = 0; i < 48; i++, pLure++) {
if (daPy_getPlayerActorClass()->checkFrontRollCrash()) {
pLure->field_0x34 = cM_rndF(65536.0f);
@@ -1107,12 +1120,15 @@ static void lure_set(fshop_class* param_0) {
pLure->field_0x38 = cM_rndF(1000.0f) + 500.0f;
pLure->field_0x3c = cM_rndF(1000.0f) + 500.0f;
}
+
pLure->field_0x34 += 4000;
pLure->field_0x36 += 4000;
pLure->field_0x32 = pLure->field_0x3c * cM_ssin(pLure->field_0x36);
pLure->field_0x30 = pLure->field_0x38 * cM_ssin(pLure->field_0x34);
+
cLib_addCalc0(&pLure->field_0x3c, 1.0f, 40.0f);
cLib_addCalc0(&pLure->field_0x38, 1.0f, 40.0f);
+
f32 fVar1 = 0.0f;
f32 fVar2;
if (pLure->field_0x24 != 3) {
@@ -1121,6 +1137,7 @@ static void lure_set(fshop_class* param_0) {
} else {
fVar2 = 12.0f;
}
+
mDoMtx_stack_c::transS(
pLure->field_0x00.x,
pLure->field_0x00.y + fVar1,
@@ -1135,6 +1152,7 @@ static void lure_set(fshop_class* param_0) {
mDoMtx_stack_c::scaleM(pLure->field_0x2c, pLure->field_0x2c, pLure->field_0x28);
mDoMtx_stack_c::transM(0.0f, 0.0f, 0.0f);
pLure->field_0x14->setBaseTRMtx(mDoMtx_stack_c::get());
+
if (pLure->field_0x24 != 3) {
mDoMtx_stack_c::push();
mDoMtx_stack_c::transM(0.0f, hook_1_offy[pLure->field_0x24], 1.0f);
@@ -1150,9 +1168,10 @@ static void lure_set(fshop_class* param_0) {
}
/* 8086C9D0-8086CC30 000A50 0260+00 1/1 0/0 0/0 .text rod_set__FP11fshop_class */
-static void rod_set(fshop_class* param_0) {
- fs_rod_s* pRod = param_0->mRod;
- for (s32 i = 0; i < 3; i++, pRod++) {
+static void rod_set(fshop_class* i_this) {
+ fs_rod_s* pRod = i_this->mRod;
+
+ for (int i = 0; i < 3; i++, pRod++) {
mDoMtx_stack_c::transS(pRod->field_0x00.x, pRod->field_0x00.y, pRod->field_0x00.z);
if (i == 0) {
mDoMtx_stack_c::YrotM(-12000.0f);
@@ -1164,6 +1183,7 @@ static void rod_set(fshop_class* param_0) {
mDoMtx_stack_c::XrotM(1300);
mDoMtx_stack_c::YrotM(0);
pRod->field_0x14->setBaseTRMtx(mDoMtx_stack_c::get());
+
cXyz* local_64 = pRod->line_mat.getPos(0);
if (pRod->field_0x4c == 0) {
mDoMtx_stack_c::transM(0.0f, 15.0f, 0.0f);
@@ -1174,11 +1194,11 @@ static void rod_set(fshop_class* param_0) {
cXyz cStack_1c;
cXyz cStack_28;
cXyz local_34;
- for (s32 local_68 = 0; local_68 < 8; local_68++) {
+ for (int j = 0; j < 8; j++) {
mDoMtx_stack_c::multVecZero(local_64);
- if (local_68 == 0) {
+ if (j == 0) {
cStack_1c = *local_64;
- } else if (local_68 == 7) {
+ } else if (j == 7) {
cStack_28 = *local_64;
}
mDoMtx_stack_c::transM(0.0f, pRod->field_0x54, 0.0f);
@@ -1187,33 +1207,35 @@ static void rod_set(fshop_class* param_0) {
static f32 guide_p[6] = {0.0f, 0.1f, 0.22f, 0.36f, 0.52f, 0.7f};
static f32 guide_s[6] = {0.5f, 0.5f, 0.55f, 0.6f, 0.65f, 0.8f};
- for (s32 local_6c = 0; local_6c < 6; local_6c++) {
- cXyz local_34 = cStack_28 + (cStack_1c - cStack_28) * guide_p[local_6c];
+ for (int j = 0; j < 6; j++) {
+ cXyz local_34 = cStack_28 + (cStack_1c - cStack_28) * guide_p[j];
mDoMtx_stack_c::transS(local_34.x, local_34.y, local_34.z);
- mDoMtx_stack_c::scaleM(guide_s[local_6c], guide_s[local_6c], guide_s[local_6c]);
+ mDoMtx_stack_c::scaleM(guide_s[j], guide_s[j], guide_s[j]);
mDoMtx_stack_c::transM(0.0f, 4.0f, 0.0f);
mDoMtx_stack_c::YrotM(0x4000);
- pRod->field_0x18[local_6c]->setBaseTRMtx(mDoMtx_stack_c::get());
+ pRod->field_0x18[j]->setBaseTRMtx(mDoMtx_stack_c::get());
}
}
}
/* 8086CC6C-8086CD70 000CEC 0104+00 1/1 0/0 0/0 .text s_fish_sub__FPvPv */
-static void* s_fish_sub(void* param_0, void* param_1) {
- fopAc_ac_c* actor = (fopAc_ac_c*)param_0;
- fs_weed_s* weed = (fs_weed_s*)param_1;
- if (fopAcM_IsActor(param_0) && fopAcM_GetName(param_0) == PROC_MG_FISH && actor->speedF > 0.1f) {
- f32 dVar9 = actor->current.pos.x - weed->field_0x00[0].x;
- f32 dVar8 = actor->current.pos.y - weed->field_0x00[0].y;
- f32 dVar10 = actor->current.pos.z - weed->field_0x00[0].z;
- f32 dVar3 = ((f32*)actor)[0x16F];
+static void* s_fish_sub(void* i_actor, void* i_data) {
+ mg_fish_class* fish = (mg_fish_class*)i_actor;
+ fs_weed_s* weed = (fs_weed_s*)i_data;
+
+ if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_MG_FISH && fish->actor.speedF > 0.1f) {
+ f32 x_dist = fish->actor.current.pos.x - weed->field_0x00[0].x;
+ f32 y_dist = fish->actor.current.pos.y - weed->field_0x00[0].y;
+ f32 z_dist = fish->actor.current.pos.z - weed->field_0x00[0].z;
+
+ f32 dVar3 = fish->mJointScale;
if (dVar3 > 0.7f) {
dVar3 = 0.7f;
}
- if (fabsf(dVar8) < 60.0f * weed->field_0xb4 &&
- JMAFastSqrt(((dVar9 * dVar9) + (dVar10 * dVar10))) < dVar3 * 35.0f){
+
+ if (fabsf(y_dist) < 60.0f * weed->field_0xb4 && JMAFastSqrt(SQUARE(x_dist) + SQUARE(z_dist)) < dVar3 * 35.0f) {
cLib_addCalc2(&weed->field_0xb8, dVar3, 0.1f, 0.05f);
- return (fopAc_ac_c*)param_0;
+ return i_actor;
}
}
@@ -1221,132 +1243,148 @@ static void* s_fish_sub(void* param_0, void* param_1) {
}
/* 8086CD70-8086CF8C 000DF0 021C+00 1/1 0/0 0/0 .text tsubo_set__FP11fshop_class */
-static void tsubo_set(fshop_class* param_1) {
+static void tsubo_set(fshop_class* i_this) {
fopAc_ac_c* pfVar5 = dComIfGp_getPlayer(0);
- fs_tsubo_s* pTsubo = param_1->mTsubo;
+ fs_tsubo_s* pTsubo = i_this->mTsubo;
+
cXyz local_40;
s16 xrot;
s16 zrot;
- for (s32 local_48 = 0; local_48 < 2; local_48++, pTsubo++) {
+ for (int i = 0; i < 2; i++, pTsubo++) {
local_40.x = pTsubo->field_0x00.x - pfVar5->current.pos.x;
local_40.z = pTsubo->field_0x00.z - pfVar5->current.pos.z;
- if (daPy_getPlayerActorClass()->checkFrontRollCrash() &&
- JMAFastSqrt((local_40.x * local_40.x + local_40.z * local_40.z)) < 150.0f)
- {
- if (local_48 == 0) {
+ if (daPy_getPlayerActorClass()->checkFrontRollCrash() && JMAFastSqrt(SQUARE(local_40.x) + SQUARE(local_40.z)) < 150.0f) {
+ if (i == 0) {
pTsubo->field_0x1c = 1200.0f;
- pTsubo->field_0x24 = 0x708;
+ pTsubo->field_0x24 = 1800;
} else {
pTsubo->field_0x1c = 1800.0f;
- pTsubo->field_0x24 = 0xaf0;
+ pTsubo->field_0x24 = 2800;
}
pTsubo->field_0x20 = cM_rndF(65536.0f);
pTsubo->field_0x22 = cM_rndF(65536.0f);
+
npc_henna_class* henna = (npc_henna_class*)fopAcM_SearchByName(PROC_NPC_HENNA);
if (henna != NULL) {
- henna->field_0x7b5 = 0x3c;
+ henna->field_0x7b5 = 60;
}
}
+
xrot = cM_ssin(pTsubo->field_0x20) * pTsubo->field_0x1c;
zrot = cM_ssin(pTsubo->field_0x22) * pTsubo->field_0x1c;
pTsubo->field_0x20 += pTsubo->field_0x24;
pTsubo->field_0x22 += pTsubo->field_0x24 + 700;
cLib_addCalcAngleS2(&pTsubo->field_0x24, 9000, 1, 200);
+
mDoMtx_stack_c::transS(pTsubo->field_0x00.x, pTsubo->field_0x00.y, pTsubo->field_0x00.z);
mDoMtx_stack_c::XrotM(xrot);
mDoMtx_stack_c::ZrotM(zrot);
mDoMtx_stack_c::scaleM(1.0f, 1.0f, 1.0f);
pTsubo->field_0x14->setBaseTRMtx(mDoMtx_stack_c::get());
+
cLib_addCalc0(&pTsubo->field_0x1c, 1.0f, 50.0f);
}
}
/* 8086CF8C-8086D1A0 00100C 0214+00 1/1 0/0 0/0 .text weed_control__FP11fshop_classP9fs_weed_s */
-static void weed_control(fshop_class* param_1, fs_weed_s* param_2) {
- int iVar6;
+static void weed_control(fshop_class* i_this, fs_weed_s* i_weed) {
+ int i;
cXyz local_84;
cXyz local_90;
- cXyz* pfVar7 = param_2->field_0x00 + 1;
+ cXyz* pfVar7 = i_weed->field_0x00 + 1;
+
local_84.x = 0.0f;
local_84.y = 0.0f;
- local_84.z = param_2->field_0xb4 * 5.0f;
- f32 dVar11 = param_2->field_0xb8 + 0.5f;
- param_2->field_0xbc += (s16)(param_2->field_0xb8 * 600.0f + 200.0f);
- cLib_addCalc0(&param_2->field_0xb8, 0.05f, 0.02f);
- for (iVar6 = 1; iVar6 < 0xf; iVar6++, pfVar7++) {
- f32 dVar10 = dVar11 * cM_ssin(param_2->field_0xbc + iVar6 * -5000);
- f32 dVar8 = cM_ssin(param_2->field_0xbc + iVar6 * -5500);
- f32 dVar4 = dVar10 + (pfVar7[0].x - pfVar7[0 - 1].x);
- f32 dVar12 = (pfVar7[0].y - pfVar7[0 - 1].y) + 3.0f;
- f32 dVar6 = dVar11 * dVar8 + (pfVar7[0].z - pfVar7[0 - 1].z);
- mDoMtx_XrotS((MtxP)calc_mtx, -cM_atan2s(dVar12, dVar6));
- mDoMtx_YrotM((MtxP)calc_mtx, (s32)cM_atan2s(dVar4, JMAFastSqrt(dVar12 * dVar12 + dVar6 * dVar6)));
+ local_84.z = i_weed->field_0xb4 * 5.0f;
+
+ f32 dVar11 = i_weed->field_0xb8 + 0.5f;
+ i_weed->field_0xbc += (s16)(i_weed->field_0xb8 * 600.0f + 200.0f);
+ cLib_addCalc0(&i_weed->field_0xb8, 0.05f, 0.02f);
+
+ for (i = 1; i < 15; i++, pfVar7++) {
+ f32 dVar10 = dVar11 * cM_ssin(i_weed->field_0xbc + i * -5000);
+ f32 dVar8 = cM_ssin(i_weed->field_0xbc + i * -5500);
+ f32 dVar4 = dVar10 + (pfVar7[0].x - pfVar7[-1].x);
+ f32 dVar12 = (pfVar7[0].y - pfVar7[-1].y) + 3.0f;
+ f32 dVar6 = dVar11 * dVar8 + (pfVar7[0].z - pfVar7[-1].z);
+ cMtx_XrotS(*calc_mtx, -cM_atan2s(dVar12, dVar6));
+ cMtx_YrotM(*calc_mtx, (s16)cM_atan2s(dVar4, JMAFastSqrt(SQUARE(dVar12) + SQUARE(dVar6))));
MtxPosition(&local_84, &local_90);
- pfVar7[0].x = pfVar7[0 - 1].x + local_90.x;
- pfVar7[0].y = pfVar7[0 - 1].y + local_90.y;
- pfVar7[0].z = pfVar7[0 - 1].z + local_90.z;
+
+ pfVar7[0].x = pfVar7[-1].x + local_90.x;
+ pfVar7[0].y = pfVar7[-1].y + local_90.y;
+ pfVar7[0].z = pfVar7[-1].z + local_90.z;
}
}
/* 8086D1A0-8086D1EC 001220 004C+00 1/1 0/0 0/0 .text stage_copy__FP11fshop_classP11fshop_class */
-static void stage_copy(fshop_class* param_0, fshop_class* param_1) {
- param_0->field_0x4014 = param_1->field_0x4014;
- param_0->field_0x4020 = param_1->field_0x4020;
- param_0->scale = param_1->scale;
+static void stage_copy(fshop_class* i_dst, fshop_class* i_src) {
+ i_dst->field_0x4014 = i_src->field_0x4014;
+ i_dst->field_0x4020 = i_src->field_0x4020;
+ i_dst->actor.scale = i_src->actor.scale;
}
/* 8086D1EC-8086D48C 00126C 02A0+00 1/1 0/0 0/0 .text koro2_mtx_set__FP11fshop_class */
-// NONMATCHING float load order
-static void koro2_mtx_set(fshop_class* param_1) {
+static void koro2_mtx_set(fshop_class* i_this) {
+ fopAc_ac_c* actor = &i_this->actor;
+
cXyz cStack_44;
cXyz cStack_50;
- if (param_1->field_0x400d) {
+ if (i_this->field_0x400d) {
mDoMtx_stack_c::transS(0.0f, -10000.0f, 0.0f);
- MTXCopy(mDoMtx_stack_c::get(), param_1->field_0x4030);
- param_1->field_0x402c->Move();
- for (int local_58 = 0; local_58 < 100; local_58++) {
- fs_koro2_s* pmVar4 = &param_1->mKoro2[local_58];
- if (param_1->mKoro2[local_58].mpModel != NULL) {
- MTXCopy(mDoMtx_stack_c::get(), param_1->mKoro2[local_58].field_0x04);
- param_1->mKoro2[local_58].mpBgW->Move();
+ MTXCopy(mDoMtx_stack_c::get(), i_this->field_0x4030);
+ i_this->field_0x402c->Move();
+
+ for (int i = 0; i < 100; i++) {
+ if (i_this->mKoro2[i].mpModel != NULL) {
+ MTXCopy(mDoMtx_stack_c::get(), i_this->mKoro2[i].field_0x04);
+ i_this->mKoro2[i].mpBgW->Move();
}
}
} else {
- mDoMtx_stack_c::transS(param_1->field_0x4014.x, param_1->field_0x4014.y, param_1->field_0x4014.z);
- mDoMtx_stack_c::YrotM(param_1->field_0x4020.y);
- mDoMtx_stack_c::XrotM(param_1->field_0x4020.x);
- mDoMtx_stack_c::ZrotM(param_1->field_0x4020.z);
- mDoMtx_stack_c::scaleM(param_1->scale.x, param_1->scale.x, param_1->scale.x);
+ mDoMtx_stack_c::transS(i_this->field_0x4014.x, i_this->field_0x4014.y, i_this->field_0x4014.z);
+ mDoMtx_stack_c::YrotM(i_this->field_0x4020.y);
+ mDoMtx_stack_c::XrotM(i_this->field_0x4020.x);
+ mDoMtx_stack_c::ZrotM(i_this->field_0x4020.z);
+ mDoMtx_stack_c::scaleM(actor->scale.x, actor->scale.x, actor->scale.x);
mDoMtx_stack_c::push();
mDoMtx_stack_c::scaleM(0.01f, 0.01f, 0.01f);
- param_1->mpA_crwaku_model->setBaseTRMtx(mDoMtx_stack_c::get());
- MTXCopy(mDoMtx_stack_c::get(), param_1->field_0x4030);
- param_1->field_0x402c->Move();
+ i_this->mpA_crwaku_model->setBaseTRMtx(mDoMtx_stack_c::get());
+ MTXCopy(mDoMtx_stack_c::get(), i_this->field_0x4030);
+
+ i_this->field_0x402c->Move();
mDoMtx_stack_c::pop();
- for (int iVar8 = 0; iVar8 < 100; iVar8++) {
- if (param_1->mKoro2[iVar8].mpModel != NULL) {
+
+ f32 var_f31 = VREG_F(2) + -10.0f;
+ f32 var_f30 = VREG_F(4) + -18.0f;
+
+ for (int i = 0; i < 100; i++) {
+ if (i_this->mKoro2[i].mpModel != NULL) {
mDoMtx_stack_c::push();
- mDoMtx_stack_c::transM(param_1->mKoro2[iVar8].field_0x38.x + -10.0f,
- param_1->mKoro2[iVar8].field_0x38.y,
- param_1->mKoro2[iVar8].field_0x38.z + -18.0f);
- mDoMtx_stack_c::YrotM(param_1->mKoro2[iVar8].field_0x50);
- mDoMtx_stack_c::scaleM(param_1->mKoro2[iVar8].field_0x44.x,
- param_1->mKoro2[iVar8].field_0x44.y,
- param_1->mKoro2[iVar8].field_0x44.z);
+ mDoMtx_stack_c::transM(i_this->mKoro2[i].field_0x38.x + var_f31,
+ i_this->mKoro2[i].field_0x38.y,
+ i_this->mKoro2[i].field_0x38.z + var_f30);
+ mDoMtx_stack_c::YrotM(i_this->mKoro2[i].field_0x50);
+ mDoMtx_stack_c::scaleM(i_this->mKoro2[i].field_0x44.x,
+ i_this->mKoro2[i].field_0x44.y,
+ i_this->mKoro2[i].field_0x44.z);
mDoMtx_stack_c::push();
mDoMtx_stack_c::scaleM(0.01f, 0.01f, 0.01f);
- param_1->mKoro2[iVar8].mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
- MTXCopy(mDoMtx_stack_c::get(), param_1->mKoro2[iVar8].field_0x04);
- param_1->mKoro2[iVar8].mpBgW->Move();
+ i_this->mKoro2[i].mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
+ MTXCopy(mDoMtx_stack_c::get(), i_this->mKoro2[i].field_0x04);
+
+ i_this->mKoro2[i].mpBgW->Move();
mDoMtx_stack_c::pop();
- mDoMtx_stack_c::multVecZero(&param_1->mKoro2[iVar8].field_0x54);
- if (param_1->mKoro2[iVar8].field_0x34 == 6) {
+ mDoMtx_stack_c::multVecZero(&i_this->mKoro2[i].field_0x54);
+
+ if (i_this->mKoro2[i].field_0x34 == 6) {
cStack_44.set(0.0f, 0.0f, 2.5f);
mDoMtx_stack_c::multVec(&cStack_44, &BallStartPos);
- } else if (param_1->mKoro2[iVar8].field_0x34 == 7) {
+ } else if (i_this->mKoro2[i].field_0x34 == 7) {
cStack_44.set(0.0f, 0.0f, -2.0f);
mDoMtx_stack_c::multVec(&cStack_44, &BallEndPos);
}
+
mDoMtx_stack_c::pop();
}
}
@@ -1354,12 +1392,10 @@ static void koro2_mtx_set(fshop_class* param_1) {
}
/* 8086D48C-8086D500 00150C 0074+00 1/1 0/0 0/0 .text s_sel_sub__FPvPv */
-static void* s_sel_sub(void* param_1, void* param_2) {
- if (fopAcM_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_FSHOP) {
- u8 uVar1 = ((fshop_class*)param_1)->field_0x400e;
- u8 uVar2 = (((fshop_class*)param_2)->field_0x400c & 7) + 1;
- if (uVar1 == uVar2) {
- return param_1;
+static void* s_sel_sub(void* i_actor, void* i_data) {
+ if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_FSHOP) {
+ if (((fshop_class*)i_actor)->field_0x400e == (u8)((((fshop_class*)i_data)->field_0x400c & 7) + 1)) {
+ return i_actor;
}
}
@@ -1367,10 +1403,9 @@ static void* s_sel_sub(void* param_1, void* param_2) {
}
/* 8086D500-8086D55C 001580 005C+00 1/1 0/0 0/0 .text s_ball_sub__FPvPv */
-static void* s_ball_sub(void* param_1, void* param_2) {
- if (fopAcM_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_FSHOP &&
- (u8)fopAcM_GetParam(param_1) == 0x23) {
- return param_1;
+static void* s_ball_sub(void* i_actor, void* i_data) {
+ if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_FSHOP && (fopAcM_GetParam(i_actor) & 0xFF) == 0x23) {
+ return i_actor;
}
return NULL;
@@ -1378,9 +1413,11 @@ static void* s_ball_sub(void* param_1, void* param_2) {
/* 8086D55C-8086D854 0015DC 02F8+00 1/1 0/0 0/0 .text koro2_game__FP11fshop_class */
static void koro2_game(fshop_class* i_this) {
+ fopAc_ac_c* actor = &i_this->actor;
+
cXyz sp5C;
cXyz sp68;
- i_this->scale.x = 1.0f;
+ actor->scale.x = 1.0f;
switch (i_this->field_0x4010) {
case 0:
@@ -1399,7 +1436,7 @@ static void koro2_game(fshop_class* i_this) {
cLib_addCalcAngleS2(&i_this->field_0x4020.x, 0, 2, 0x200);
cLib_addCalcAngleS2(&i_this->field_0x4020.z, 0, 2, 0x200);
case 2:
- i_this->scale.x = 10.0f;
+ actor->scale.x = 10.0f;
if (i_this->field_0x4010 == 2) {
static f32 old_stick_x = 0.0f;
@@ -1460,151 +1497,165 @@ static void koro2_game(fshop_class* i_this) {
}
}
-/* 80870AC4-80870AC8 000174 0004+00 1/1 0/0 0/0 .bss None */
-static u8 data_80870AC4[4];
-
/* 8086D854-8086DA00 0018D4 01AC+00 1/1 0/0 0/0 .text ball_wall_check__FP11fshop_class */
-static int ball_wall_check(fshop_class* param_1) {
- if (!param_1->field_0x40b4.ChkWallHit()) {
+static int ball_wall_check(fshop_class* i_this) {
+ if (!i_this->field_0x40b4.ChkWallHit()) {
return 0;
}
- fopAc_ac_c* actor = param_1;
+ fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor;
dBgS_LinChk adStack_88;
cXyz cStack_94;
cXyz cStack_a0;
cXyz local_ac;
local_ac.y = 0.0f;
+
cStack_94 = actor->current.pos;
- cStack_94.y +=5.0f;
- for (int iVar1 = 0; iVar1 < 4; iVar1++) {
+ cStack_94.y += nREG_F(7) + 5.0f;
+
+ for (int i = 0; i < 4; i++) {
static f32 c_x[4] = {14.0f, -14.0f, 0.0f, 0.0f};
static f32 c_z[4] = {0.0f, 0.0f, 14.0f, -14.0f};
- local_ac.x = c_x[iVar1];
- local_ac.z = c_z[iVar1];
+ local_ac.x = c_x[i];
+ local_ac.z = c_z[i];
cStack_a0 = cStack_94 + local_ac;
+
adStack_88.Set(&cStack_94, &cStack_a0, actor);
if (dComIfG_Bgsp().LineCross(&adStack_88)) {
- if ((iVar1 == 0 && actor->speed.x > 0.0f) ||
- (iVar1 == 1 && actor->speed.x < 0.0f))
+ if ((i == 0 && actor->speed.x > 0.0f) ||
+ (i == 1 && actor->speed.x < 0.0f))
{
actor->speed.x = 0.0f;
}
- if ((iVar1 == 2 && actor->speed.z > 0.0f) ||
- (iVar1 == 3 && actor->speed.z < 0.0f))
+
+ if ((i == 2 && actor->speed.z > 0.0f) ||
+ (i == 3 && actor->speed.z < 0.0f))
{
actor->speed.z = 0.0f;
}
}
}
+
return 0;
}
/* 8086DA00-8086E6C4 001A80 0CC4+00 2/1 0/0 0/0 .text daFshop_Execute__FP11fshop_class */
-static int daFshop_Execute(fshop_class* param_1) {
+static int daFshop_Execute(fshop_class* i_this) {
+ fopAc_ac_c* actor = &i_this->actor;
fopAc_ac_c* pPlayer = dComIfGp_getPlayer(0);
cXyz local_c0;
- param_1->field_0x0570++;
- if (param_1->field_0x400e != 0) {
- if (param_1->field_0x428d != 0) {
- param_1->field_0x428d--;
+
+ i_this->field_0x0570++;
+
+ if (i_this->field_0x400e != 0) {
+ if (i_this->field_0x428d != 0) {
+ i_this->field_0x428d--;
}
- koro2_mtx_set(param_1);
+
+ koro2_mtx_set(i_this);
return 1;
}
- if (param_1->field_0x4070 != NULL) {
- param_1->scale.x = 0.024f;
+
+ if (i_this->field_0x4070 != NULL) {
+ actor->scale.x = 0.024f;
cXyz local_cc;
cXyz local_d8;
BOOL bVar5 = FALSE;
- if (param_1->field_0x428d != 0) {
- param_1->field_0x428d--;
+
+ if (i_this->field_0x428d != 0) {
+ i_this->field_0x428d--;
}
- switch (param_1->field_0x0572) {
+
+ switch (i_this->field_0x0572) {
case 0:
- param_1->current.pos = BallStartPos;
- param_1->current.pos.y += 4.0f;
- param_1->old.pos = param_1->current.pos;
- param_1->field_0x428d = 10;
+ actor->current.pos = BallStartPos;
+ actor->current.pos.y += 4.0f;
+ actor->old.pos = actor->current.pos;
+ i_this->field_0x428d = 10;
break;
case 1:
- param_1->current.pos = BallStartPos;
- param_1->current.pos.y += 4.0f;
- param_1->old.pos = param_1->current.pos;
- param_1->speed.zero();
- param_1->field_0x0572++;
- param_1->field_0x428c = 3;
- param_1->field_0x567 = 0;
- param_1->field_0x428d = 10;
+ actor->current.pos = BallStartPos;
+ actor->current.pos.y += 4.0f;
+ actor->old.pos = actor->current.pos;
+ actor->speed.zero();
+
+ i_this->field_0x0572++;
+ i_this->field_0x428c = 3;
+ actor->field_0x567 = 0;
+ i_this->field_0x428d = 10;
case 2:
bVar5 = TRUE;
- param_1->scale.x = 0.24000001f;
+ actor->scale.x = 0.24000001f;
break;
}
if (bVar5) {
- cMtx_YrotS((MtxP)calc_mtx, param_1->field_0x4020.y);
- cMtx_XrotM((MtxP)calc_mtx, param_1->field_0x4020.x);
- cMtx_ZrotM((MtxP)calc_mtx, param_1->field_0x4020.z);
- MtxPosition(&param_1->speed, &param_1->field_0x4064);
- param_1->field_0x4064 = param_1->speed;
- param_1->current.pos += param_1->field_0x4064;
- if (param_1->speed.x || param_1->speed.z) {
- param_1->current.angle.y = cM_atan2s(param_1->speed.x, param_1->speed.z);
+ cMtx_YrotS(*calc_mtx, i_this->field_0x4020.y);
+ cMtx_XrotM(*calc_mtx, i_this->field_0x4020.x);
+ cMtx_ZrotM(*calc_mtx, i_this->field_0x4020.z);
+ MtxPosition(&actor->speed, &i_this->field_0x4064);
+ i_this->field_0x4064 = actor->speed;
+ actor->current.pos += i_this->field_0x4064;
+
+ if (actor->speed.x || actor->speed.z) {
+ actor->current.angle.y = cM_atan2s(actor->speed.x, actor->speed.z);
}
- param_1->speed.y -= 3.5f;
- if (param_1->speed.y <= -15.0f) {
- param_1->speed.y = -15.0f;
+
+ actor->speed.y -= 3.5f;
+ if (actor->speed.y <= -15.0f) {
+ actor->speed.y = -15.0f;
}
- param_1->field_0x40b4.m_gnd.OffWall();
- param_1->field_0x40b4.CrrPos(dComIfG_Bgsp());
- ball_wall_check(param_1);
- fshop_class* iVar6 = param_1->field_0x4008;
- for (int local_124 = 0; local_124 < 100; local_124++) {
- if (iVar6->mKoro2[local_124].mpModel != NULL) {
- local_cc.x = iVar6->mKoro2[local_124].field_0x54.x - param_1->current.pos.x;
- local_cc.z = iVar6->mKoro2[local_124].field_0x54.z - param_1->current.pos.z;
+
+ i_this->field_0x40b4.m_gnd.OffWall();
+ i_this->field_0x40b4.CrrPos(dComIfG_Bgsp());
+ ball_wall_check(i_this);
+
+ fshop_class* iVar6 = i_this->field_0x4008;
+ for (int i = 0; i < 100; i++) {
+ if (iVar6->mKoro2[i].mpModel != NULL) {
+ local_cc.x = iVar6->mKoro2[i].field_0x54.x - actor->current.pos.x;
+ local_cc.z = iVar6->mKoro2[i].field_0x54.z - actor->current.pos.z;
if (JMAFastSqrt(local_cc.x * local_cc.x + local_cc.z * local_cc.z) < 40.0f) {
- iVar6->mKoro2[local_124].field_0x60 = 0;
+ iVar6->mKoro2[i].field_0x60 = 0;
}
}
}
- if (param_1->current.pos.y < -2500.0f) {
- param_1->field_0x567 = 1;
+
+ if (actor->current.pos.y < -2500.0f) {
+ actor->field_0x567 = 1;
}
npc_henna_class* henna = (npc_henna_class*)fopAcM_SearchByName(PROC_NPC_HENNA);
- if (henna != NULL && henna->field_0x7b9 != 0 &&
- (param_1->field_0x567 == 1 || dTimer_getRestTimeMs() == 0))
- {
+ if (henna != NULL && henna->field_0x7b9 != 0 && (actor->field_0x567 == 1 || dTimer_getRestTimeMs() == 0)) {
BOOL bVar5 = FALSE;
- for (int local_130 = 0; local_130 < 100; local_130++) {
- if (iVar6->mKoro2[local_130].mpModel != NULL && iVar6->mKoro2[local_130].field_0x60) {
+ for (int i = 0; i < 100; i++) {
+ if (iVar6->mKoro2[i].mpModel != NULL && iVar6->mKoro2[i].field_0x60) {
bVar5 = TRUE;
break;
}
}
+
if (!bVar5) {
henna->actor.health = 1;
- } else if (param_1->field_0x567 == 1) {
+ } else if (actor->field_0x567 == 1) {
henna->actor.health = 0;
} else {
henna->actor.health = 2;
}
- henna->cam_mode = 0x49;
+ henna->cam_mode = 73;
henna->field_0x754 = 0;
henna->field_0x7b9 = 0;
- param_1->field_0x567 = 2;
+ actor->field_0x567 = 2;
} else {
- if (param_1->field_0x567 == 0) {
- local_cc = BallEndPos - param_1->current.pos;
+ if (actor->field_0x567 == 0) {
+ local_cc = BallEndPos - actor->current.pos;
if (local_cc.abs() < 65.0f) {
npc_henna_class* henna = (npc_henna_class*)fopAcM_SearchByName(PROC_NPC_HENNA);
if (henna != NULL) {
BOOL bVar5 = FALSE;
- for (int local_13c = 0; local_13c < 100; local_13c++) {
- if (iVar6->mKoro2[local_13c].mpModel != NULL && iVar6->mKoro2[local_13c].field_0x60) {
+ for (int i = 0; i < 100; i++) {
+ if (iVar6->mKoro2[i].mpModel != NULL && iVar6->mKoro2[i].field_0x60) {
bVar5 = TRUE;
break;
}
@@ -1612,601 +1663,734 @@ static int daFshop_Execute(fshop_class* param_1) {
if (bVar5) {
henna->actor.health = 3;
- henna->cam_mode = 0x49;
+ henna->cam_mode = 73;
} else {
- henna->cam_mode = 0x4c;
+ henna->cam_mode = 76;
}
+
henna->field_0x754 = 0;
henna->field_0x7b9 = 0;
- param_1->field_0x567 = 2;
+ actor->field_0x567 = 2;
}
}
}
}
- if (param_1->field_0x40b4.ChkGroundHit()) {
- if (param_1->field_0x428c == 0) {
- param_1->speed.y = 7.0f;
- } else if (param_1->field_0x428c == 1) {
- param_1->speed.y = 2.5f;
- } else if (param_1->field_0x428c == 2) {
- param_1->speed.y = 1.0f;
+
+ if (i_this->field_0x40b4.ChkGroundHit()) {
+ if (i_this->field_0x428c == 0) {
+ actor->speed.y = 7.0f;
+ } else if (i_this->field_0x428c == 1) {
+ actor->speed.y = 2.5f;
+ } else if (i_this->field_0x428c == 2) {
+ actor->speed.y = 1.0f;
} else {
- param_1->speed.y = -5.0f;
- param_1->field_0x428c = 2;
+ actor->speed.y = -5.0f;
+ i_this->field_0x428c = 2;
}
- param_1->field_0x428c++;
+
+ i_this->field_0x428c++;
+
dBgS_GndChk adStack_b4;
- cXyz local_e4 = param_1->current.pos;
+ cXyz local_e4 = actor->current.pos;
local_e4.y += 10.0f;
local_e4.z += 1.0f;
adStack_b4.SetPos(&local_e4);
local_e4.y = dComIfG_Bgsp().GroundCross(&adStack_b4);
- s16 local_160 = -cM_atan2s(local_e4.y - param_1->current.pos.y,
- local_e4.z - param_1->current.pos.z);
+ s16 local_160 = -cM_atan2s(local_e4.y - actor->current.pos.y,
+ local_e4.z - actor->current.pos.z);
if (local_160 > 0x3000) {
local_160 = 0x3000;
} else if (local_160 < -0x3000) {
local_160 = -0x3000;
}
- local_e4 = param_1->current.pos;
+ local_e4 = actor->current.pos;
local_e4.y += 10.0f;
local_e4.x += 1.0f;
adStack_b4.SetPos(&local_e4);
local_e4.y = dComIfG_Bgsp().GroundCross(&adStack_b4);
- s16 local_162 = (s16)cM_atan2s(local_e4.y - param_1->current.pos.y,
- local_e4.x - param_1->current.pos.x);
+ s16 local_162 = (s16)cM_atan2s(local_e4.y - actor->current.pos.y,
+ local_e4.x - actor->current.pos.x);
if (local_162 > 0x3000) {
local_162 = 0x3000;
} else if (local_162 < -0x3000) {
local_162 = -0x3000;
}
- cMtx_XrotS((MtxP)calc_mtx, local_160);
- cMtx_ZrotM((MtxP)calc_mtx, local_162);
+
+ cMtx_XrotS(*calc_mtx, local_160);
+ cMtx_ZrotM(*calc_mtx, local_162);
local_cc.x = 0.0f;
local_cc.y = 30.0f;
local_cc.z = 0.0f;
MtxPosition(&local_cc, &local_d8);
- cLib_addCalc2(&param_1->speed.x, local_d8.x, 0.05f,
- (fabsf(local_d8.x) * 0.1f + 0.2f));
- cLib_addCalc2(&param_1->speed.z, local_d8.z, 0.05f,
- (fabsf(local_d8.z) * 0.1f + 0.2f));
+
+ cLib_addCalc2(&actor->speed.x, local_d8.x, 0.05f, fabsf(local_d8.x) * 0.1f + 0.2f);
+ cLib_addCalc2(&actor->speed.z, local_d8.z, 0.05f, fabsf(local_d8.z) * 0.1f + 0.2f);
}
}
camera_class* pmVar11 = (camera_class*)dComIfGp_getCamera(0);
- mDoMtx_stack_c::transS(param_1->current.pos.x, param_1->current.pos.y,
- param_1->current.pos.z);
- mDoMtx_stack_c::scaleM(param_1->scale.x, param_1->scale.x,
- param_1->scale.x);
- mDoMtx_stack_c::transM(0.0f, 190.0f * param_1->scale.x, 0.0f);
- local_cc = pmVar11->lookat.eye - param_1->current.pos;
+ mDoMtx_stack_c::transS(actor->current.pos.x, actor->current.pos.y,
+ actor->current.pos.z);
+ mDoMtx_stack_c::scaleM(actor->scale.x, actor->scale.x,
+ actor->scale.x);
+ mDoMtx_stack_c::transM(0.0f, 190.0f * actor->scale.x, 0.0f);
+ local_cc = pmVar11->lookat.eye - actor->current.pos;
mDoMtx_stack_c::YrotM(cM_atan2s(local_cc.x, local_cc.z));
mDoMtx_stack_c::XrotM(-cM_atan2s(local_cc.y, JMAFastSqrt((local_cc.x * local_cc.x + local_cc.z * local_cc.z))));
- param_1->field_0x4070->setBaseTRMtx(mDoMtx_stack_c::get());
+ i_this->field_0x4070->setBaseTRMtx(mDoMtx_stack_c::get());
return 1;
} else {
- lure_set(param_1);
- rod_set(param_1);
- tsubo_set(param_1);
- fs_weed_s* pWeed = param_1->mWeed;
- for (s32 local_14c = 0; local_14c < 60; local_14c++, pWeed++) {
- weed_control(param_1, pWeed);
- cXyz* local_148 = param_1->field_0x3f88.getPos(local_14c);
- for (s32 local_150 = 0; local_150 < 15; local_150++, local_148++) {
+ lure_set(i_this);
+ rod_set(i_this);
+ tsubo_set(i_this);
+
+ fs_weed_s* pWeed = i_this->mWeed;
+ for (int i = 0; i < 60; i++, pWeed++) {
+ weed_control(i_this, pWeed);
+ cXyz* local_148 = i_this->field_0x3f88.getPos(i);
+ for (int local_150 = 0; local_150 < 15; local_150++, local_148++) {
*local_148 = pWeed->field_0x00[local_150];
}
fpcM_Search(s_fish_sub, pWeed);
}
+
cXyz cStack_f0(-720.0f, 30.0f, 70.0f);
cXyz cStack_fc(0.5f, 0.5f, 0.5f);
- for (int local_154 = 0; local_154 < 2; local_154++) {
- if (local_154 == 0) {
+ for (int i = 0; i < 2; i++) {
+ if (i == 0) {
cStack_f0.z = -30.0f;
} else {
cStack_f0.z = 220.0f;
}
- param_1->field_0x6b6c[local_154] = dComIfGp_particle_set(
- param_1->field_0x6b6c[local_154], 0x1e8, &cStack_f0, 0, &cStack_fc);
+
+ i_this->field_0x6b6c[i] = dComIfGp_particle_set(i_this->field_0x6b6c[i], ID_ZI_J_LK_ABUKU_A, &cStack_f0, 0, &cStack_fc);
}
+
if (daPy_getPlayerActorClass()->checkFrontRollCrash()) {
- param_1->field_0x6b34 = 0x1e;
+ i_this->field_0x6b34 = 30;
}
- s16 iVar6 = param_1->field_0x6b34 * cM_ssin(param_1->field_0x6b34 * 5000) * 30.0f;
- if (param_1->field_0x6b34 != 0) {
- param_1->field_0x6b34--;
+
+ s16 iVar6 = i_this->field_0x6b34 * cM_ssin(i_this->field_0x6b34 * 5000) * 30.0f;
+ if (i_this->field_0x6b34 != 0) {
+ i_this->field_0x6b34--;
}
+
mDoMtx_stack_c::transS(-450.0f, 25.0f, -250.0f);
mDoMtx_stack_c::YrotM(0x4000);
mDoMtx_stack_c::ZrotM(iVar6 + 2000);
- param_1->field_0x6b30->setBaseTRMtx(mDoMtx_stack_c::get());
+ i_this->field_0x6b30->setBaseTRMtx(mDoMtx_stack_c::get());
mDoMtx_stack_c::transS(-450.0f, 0.0f, -250.0f);
mDoMtx_stack_c::scaleM(4.0f, 1.5f, 1.0f);
- MTXCopy(mDoMtx_stack_c::get(), param_1->field_0x6b38);
- param_1->field_0x6b68->Move();
+ MTXCopy(mDoMtx_stack_c::get(), i_this->field_0x6b38);
+
+ i_this->field_0x6b68->Move();
+
local_c0.x = 325.0f - pPlayer->current.pos.x;
local_c0.z = 237.0f - pPlayer->current.pos.z;
- if (daPy_getPlayerActorClass()->checkFrontRollCrash() &&
- JMAFastSqrt((local_c0.x * local_c0.x + local_c0.z * local_c0.z)) < 150.0f)
- {
- param_1->field_0x3ff8 = cM_rndF(65536.0f);
- param_1->field_0x3ffa = cM_rndF(65536.0f);
- param_1->field_0x3ffc = cM_rndF(600.0f) + 1300.0f;
- param_1->field_0x4000 = cM_rndF(600.0f) + 1300.0f;
+ if (daPy_getPlayerActorClass()->checkFrontRollCrash() && JMAFastSqrt(SQUARE(local_c0.x) + SQUARE(local_c0.z)) < 150.0f) {
+ i_this->field_0x3ff8 = cM_rndF(65536.0f);
+ i_this->field_0x3ffa = cM_rndF(65536.0f);
+ i_this->field_0x3ffc = cM_rndF(600.0f) + 1300.0f;
+ i_this->field_0x4000 = cM_rndF(600.0f) + 1300.0f;
}
- param_1->field_0x3ff8 += 4000;
- param_1->field_0x3ffa += 4000;
- s16 iVar10 = param_1->field_0x4000 * cM_ssin(param_1->field_0x3ffa);
- s16 iVar11 = param_1->field_0x3ffc * cM_ssin(param_1->field_0x3ff8);
- cLib_addCalc0(&param_1->field_0x3ffc, 1.0f, 40.0f);
- cLib_addCalc0(&param_1->field_0x4000, 1.0f, 40.0f);
+
+ i_this->field_0x3ff8 += 4000;
+ i_this->field_0x3ffa += 4000;
+ s16 iVar10 = i_this->field_0x4000 * cM_ssin(i_this->field_0x3ffa);
+ s16 iVar11 = i_this->field_0x3ffc * cM_ssin(i_this->field_0x3ff8);
+ cLib_addCalc0(&i_this->field_0x3ffc, 1.0f, 40.0f);
+ cLib_addCalc0(&i_this->field_0x4000, 1.0f, 40.0f);
+
mDoMtx_stack_c::transS(325.0f, 140.0f, 237.0f);
mDoMtx_stack_c::XrotM((s16)iVar10);
mDoMtx_stack_c::ZrotM(iVar11 + 15000);
mDoMtx_stack_c::transM(-10.0f, -7.0f, 0.0f);
- param_1->field_0x3ff4->setBaseTRMtx(mDoMtx_stack_c::get());
- koro2_game(param_1);
+ i_this->field_0x3ff4->setBaseTRMtx(mDoMtx_stack_c::get());
+
+ koro2_game(i_this);
}
+
return 1;
}
/* 8086E6C4-8086E6CC 002744 0008+00 1/0 0/0 0/0 .text daFshop_IsDelete__FP11fshop_class
*/
-static int daFshop_IsDelete(fshop_class* param_0) {
+static int daFshop_IsDelete(fshop_class* i_this) {
return 1;
}
/* 8086E6CC-8086E7F0 00274C 0124+00 1/0 0/0 0/0 .text daFshop_Delete__FP11fshop_class */
-static int daFshop_Delete(fshop_class* param_1) {
- fopAcM_GetID(param_1);
- if (param_1->field_0x6b7c != 0) {
+static int daFshop_Delete(fshop_class* i_this) {
+ fopAc_ac_c* actor = &i_this->actor;
+ fopAcM_GetID(i_this);
+
+ if (i_this->field_0x6b7c != 0) {
J3DModelData* pModelData = (J3DModelData*) dComIfG_getObjectRes("Fshop", 5);
- dComIfGp_removeSimpleModel(pModelData, fopAcM_GetRoomNo(param_1));
+ dComIfGp_removeSimpleModel(pModelData, fopAcM_GetRoomNo(actor));
pModelData = (J3DModelData*) dComIfG_getObjectRes("Fshop", 6);
- dComIfGp_removeSimpleModel(pModelData, fopAcM_GetRoomNo(param_1));
+ dComIfGp_removeSimpleModel(pModelData, fopAcM_GetRoomNo(actor));
}
- dComIfG_resDelete(&param_1->mPhase, "Fshop");
- dComIfG_Bgsp().Release(param_1->field_0x6b68);
- if (param_1->field_0x400e != 0) {
- dComIfG_Bgsp().Release(param_1->field_0x402c);
+
+ dComIfG_resDelete(&i_this->mPhase, "Fshop");
+ dComIfG_Bgsp().Release(i_this->field_0x6b68);
+
+ if (i_this->field_0x400e != 0) {
+ dComIfG_Bgsp().Release(i_this->field_0x402c);
for (int i = 0; i < 100; i++) {
- if (param_1->mKoro2[i].mpBgW != NULL) {
- dComIfG_Bgsp().Release(param_1->mKoro2[i].mpBgW);
+ if (i_this->mKoro2[i].mpBgW != NULL) {
+ dComIfG_Bgsp().Release(i_this->mKoro2[i].mpBgW);
}
}
}
+
return 1;
}
/* 8086E7F0-8086ECC8 002870 04D8+00 1/1 0/0 0/0 .text koro2_heapinit__FP10fopAc_ac_c */
-// NONMATCHING mapPtr definition and stack issue
-static int koro2_heapinit(fopAc_ac_c* param_1) {
- static s32 koro2_bmd[15] = {
+static int koro2_heapinit(fopAc_ac_c* actor) {
+ static int koro2_bmd[15] = {
0x0A, 0x0B, 0x0B, 0x0B, 0x0B, 0x0F, 0x0D, 0x0C,
0x0C, 0x0C, 0x0C, 0x0E, 0x0E, 0x0E, 0x0E,
};
+
static u32 koro2_dzb[15] = {
0x1F, 0x20, 0x20, 0x20, 0x20, 0x24, 0x22, 0x21,
0x21, 0x21, 0x21, 0x23, 0x23, 0x23, 0x23,
};
+
static u8 pande_d[16] = {
0x00, 0x01, 0x03, 0x02, 0x05, 0x04, 0x06, 0x07,
0x09, 0x08, 0x0B, 0x0A, 0x0C, 0x0D, 0x0F, 0x0E,
};
- fshop_class* pShop = (fshop_class*) param_1;
- pShop->field_0x402c = new dBgW();
- if (pShop->field_0x402c == NULL) {
+ fshop_class* i_this = (fshop_class*)actor;
+
+ i_this->field_0x402c = new dBgW();
+ if (i_this->field_0x402c == NULL) {
return 0;
}
- cBgD_t* pcVar3 = (cBgD_t*)dComIfG_getObjectRes("Fshop", 37);
- if (pShop->field_0x402c->Set(pcVar3, 1, &pShop->field_0x4030) == 1) {
+
+ cBgD_t* dzb = (cBgD_t*)dComIfG_getObjectRes("Fshop", 37);
+ if (i_this->field_0x402c->Set(dzb, 1, &i_this->field_0x4030) == 1) {
return 0;
}
- pShop->field_0x402c->SetCrrFunc(dBgS_MoveBGProc_Typical);
- pShop->field_0x402c->SetRideCallback(ride_call_back);
- pShop->mpA_crwaku_model = ArcIX_A_crwaku_model[0];
- int local_30 = 0;
- int flag567 = pShop->field_0x567 & 8;
+ i_this->field_0x402c->SetCrrFunc(dBgS_MoveBGProc_Typical);
+ i_this->field_0x402c->SetRideCallback(ride_call_back);
+ i_this->mpA_crwaku_model = ArcIX_A_crwaku_model[0];
+
+ int part_no = 0;
+ int flag567 = actor->field_0x567 & 8;
int r29 = 0;
int r28 = 0;
int r30 = 0;
int r27 = 0;
int r26 = 0;
int r25 = 0;
- s8* mapPtr = koro2_map_d[pShop->field_0x567 & 7];
- for (int local_5c = 0; local_5c < 9; local_5c++) {
+ s8* mapData = koro2_map_d[actor->field_0x567 & 7];
+
+ for (int i = 0; i < 9; i++) {
for (int local_60 = 0; local_60 < 15; local_60++) {
- int index = local_60 * 9 + local_5c;
- if (mapPtr[index] != 0) {
+ int index = local_60 * 9 + i;
+ if (mapData[index] != 0) {
if (flag567 != 0) {
- pShop->mKoro2[local_30].field_0x34 = pande_d[mapPtr[index]];
- pShop->mKoro2[local_30].field_0x38.x = 2.5f * (8 - local_5c);
+ i_this->mKoro2[part_no].field_0x34 = pande_d[mapData[index]];
+ i_this->mKoro2[part_no].field_0x38.x = 2.5f * (8 - i);
} else {
- pShop->mKoro2[local_30].field_0x34 = mapPtr[index];
- pShop->mKoro2[local_30].field_0x38.x = 2.5f * local_5c;
+ i_this->mKoro2[part_no].field_0x34 = mapData[index];
+ i_this->mKoro2[part_no].field_0x38.x = 2.5f * i;
}
- pShop->mKoro2[local_30].field_0x38.y = 2.0f;
- pShop->mKoro2[local_30].field_0x38.z = 2.5f * local_60;
- if (pShop->mKoro2[local_30].field_0x34 == 6) {
- pShop->mKoro2[local_30].field_0x38.z -= 2.5f;
- } else if (pShop->mKoro2[local_30].field_0x34 == 8) {
- pShop->mKoro2[local_30].field_0x38.z -= 2.5f;
- pShop->mKoro2[local_30].field_0x38.x -= 2.5f;
- } else if (pShop->mKoro2[local_30].field_0x34 == 11) {
- pShop->mKoro2[local_30].field_0x38.z += 2.5f;
- pShop->mKoro2[local_30].field_0x38.x += 2.5f;
+
+ i_this->mKoro2[part_no].field_0x38.y = 2.0f;
+ i_this->mKoro2[part_no].field_0x38.z = 2.5f * local_60;
+
+ if (i_this->mKoro2[part_no].field_0x34 == 6) {
+ i_this->mKoro2[part_no].field_0x38.z -= 2.5f;
+ } else if (i_this->mKoro2[part_no].field_0x34 == 8) {
+ i_this->mKoro2[part_no].field_0x38.z -= 2.5f;
+ i_this->mKoro2[part_no].field_0x38.x -= 2.5f;
+ } else if (i_this->mKoro2[part_no].field_0x34 == 11) {
+ i_this->mKoro2[part_no].field_0x38.z += 2.5f;
+ i_this->mKoro2[part_no].field_0x38.x += 2.5f;
}
- pShop->mKoro2[local_30].field_0x44.set(2.5f, 2.5f, 2.5f);
- if (pShop->mKoro2[local_30].field_0x34 == 2 ||
- pShop->mKoro2[local_30].field_0x34 == 8)
- {
- pShop->mKoro2[local_30].field_0x50 = -16384;
- } else if (pShop->mKoro2[local_30].field_0x34 == 4 ||
- pShop->mKoro2[local_30].field_0x34 == 10)
- {
- pShop->mKoro2[local_30].field_0x50 = -32768;
- } else if (pShop->mKoro2[local_30].field_0x34 == 5 ||
- pShop->mKoro2[local_30].field_0x34 == 11)
- {
- pShop->mKoro2[local_30].field_0x50 = 16384;
- } else if (pShop->mKoro2[local_30].field_0x34 == 12) {
- pShop->mKoro2[local_30].field_0x50 = -32768;
- } else if (pShop->mKoro2[local_30].field_0x34 == 14) {
- pShop->mKoro2[local_30].field_0x50 = -16384;
- } else if (pShop->mKoro2[local_30].field_0x34 == 15) {
- pShop->mKoro2[local_30].field_0x50 = 16384;
+
+ i_this->mKoro2[part_no].field_0x44.set(2.5f, 2.5f, 2.5f);
+
+ if (i_this->mKoro2[part_no].field_0x34 == 2 || i_this->mKoro2[part_no].field_0x34 == 8) {
+ i_this->mKoro2[part_no].field_0x50 = -0x4000;
+ } else if (i_this->mKoro2[part_no].field_0x34 == 4 || i_this->mKoro2[part_no].field_0x34 == 10) {
+ i_this->mKoro2[part_no].field_0x50 = -0x8000;
+ } else if (i_this->mKoro2[part_no].field_0x34 == 5 || i_this->mKoro2[part_no].field_0x34 == 11) {
+ i_this->mKoro2[part_no].field_0x50 = 0x4000;
+ } else if (i_this->mKoro2[part_no].field_0x34 == 12) {
+ i_this->mKoro2[part_no].field_0x50 = -0x8000;
+ } else if (i_this->mKoro2[part_no].field_0x34 == 14) {
+ i_this->mKoro2[part_no].field_0x50 = -0x4000;
+ } else if (i_this->mKoro2[part_no].field_0x34 == 15) {
+ i_this->mKoro2[part_no].field_0x50 = 0x4000;
}
- if (koro2_bmd[pShop->mKoro2[local_30].field_0x34 - 1] == 10) {
- pShop->mKoro2[local_30].mpModel = ArcIX_A_crbox_model[r30];
+ if (koro2_bmd[i_this->mKoro2[part_no].field_0x34 - 1] == 10) {
+ i_this->mKoro2[part_no].mpModel = ArcIX_A_crbox_model[r30];
r30++;
- } else if (koro2_bmd[pShop->mKoro2[local_30].field_0x34 - 1] == 15) {
- pShop->mKoro2[local_30].mpModel = ArcIX_A_crstart_model[r29];
+ } else if (koro2_bmd[i_this->mKoro2[part_no].field_0x34 - 1] == 15) {
+ i_this->mKoro2[part_no].mpModel = ArcIX_A_crstart_model[r29];
r29++;
- } else if (koro2_bmd[pShop->mKoro2[local_30].field_0x34 - 1] == 13) {
- pShop->mKoro2[local_30].mpModel = ArcIX_A_crgoal_model[r28];
+ } else if (koro2_bmd[i_this->mKoro2[part_no].field_0x34 - 1] == 13) {
+ i_this->mKoro2[part_no].mpModel = ArcIX_A_crgoal_model[r28];
r28++;
- } else if (koro2_bmd[pShop->mKoro2[local_30].field_0x34 - 1] == 11) {
- pShop->mKoro2[local_30].mpModel = ArcIX_A_crcurve_a_model[r27];
+ } else if (koro2_bmd[i_this->mKoro2[part_no].field_0x34 - 1] == 11) {
+ i_this->mKoro2[part_no].mpModel = ArcIX_A_crcurve_a_model[r27];
r27++;
- } else if (koro2_bmd[pShop->mKoro2[local_30].field_0x34 - 1] == 12) {
- pShop->mKoro2[local_30].mpModel = ArcIX_A_crcurve_b_model[r26];
+ } else if (koro2_bmd[i_this->mKoro2[part_no].field_0x34 - 1] == 12) {
+ i_this->mKoro2[part_no].mpModel = ArcIX_A_crcurve_b_model[r26];
r26++;
- } else if (koro2_bmd[pShop->mKoro2[local_30].field_0x34 - 1] == 14) {
- pShop->mKoro2[local_30].mpModel = ArcIX_A_crsaka_model[r25];
+ } else if (koro2_bmd[i_this->mKoro2[part_no].field_0x34 - 1] == 14) {
+ i_this->mKoro2[part_no].mpModel = ArcIX_A_crsaka_model[r25];
r25++;
}
- if (pShop->mKoro2[local_30].mpModel == NULL) {
+ if (i_this->mKoro2[part_no].mpModel == NULL) {
return 0;
}
- pShop->mKoro2[local_30].mpBgW = new dBgW();
- if (pShop->mKoro2[local_30].mpBgW == NULL) {
+ i_this->mKoro2[part_no].mpBgW = new dBgW();
+ if (i_this->mKoro2[part_no].mpBgW == NULL) {
return 0;
}
- cBgD_t* pcVar3 = (cBgD_t*)dComIfG_getObjectRes("Fshop",koro2_dzb[pShop->mKoro2[local_30].field_0x34 - 1]);
- if (pShop->mKoro2[local_30].mpBgW->Set(pcVar3, 1, &pShop->mKoro2[local_30].field_0x04) == 1) {
+
+ cBgD_t* dzb = (cBgD_t*)dComIfG_getObjectRes("Fshop",koro2_dzb[i_this->mKoro2[part_no].field_0x34 - 1]);
+ if (i_this->mKoro2[part_no].mpBgW->Set(dzb, 1, &i_this->mKoro2[part_no].field_0x04) == 1) {
return 0;
}
- pShop->mKoro2[local_30].mpBgW->SetCrrFunc(dBgS_MoveBGProc_Typical);
- local_30++;
- if (local_30 >= 100) {
+
+ i_this->mKoro2[part_no].mpBgW->SetCrrFunc(dBgS_MoveBGProc_Typical);
+
+ part_no++;
+ if (part_no >= 100) {
+ OS_REPORT("//////////////KORO2 PART MAX OVER !!\n");
return 0;
}
}
}
}
+
return 1;
}
-/* ############################################################################################## */
-/* 808701D4-808701D8 000140 0004+00 0/1 0/0 0/0 .rodata @5206 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5206 = -370.0f;
-COMPILER_STRIP_GATE(0x808701D4, &lit_5206);
-#pragma pop
-
-/* 808701D8-808701DC 000144 0004+00 0/1 0/0 0/0 .rodata @5207 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5207 = 16.0f;
-COMPILER_STRIP_GATE(0x808701D8, &lit_5207);
-#pragma pop
-
-/* 808701DC-808701E0 000148 0004+00 0/2 0/0 0/0 .rodata @5208 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5208 = 215.0f;
-COMPILER_STRIP_GATE(0x808701DC, &lit_5208);
-#pragma pop
-
-/* 808701E0-808701E4 00014C 0004+00 0/1 0/0 0/0 .rodata @5209 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5209 = 43.0f;
-COMPILER_STRIP_GATE(0x808701E0, &lit_5209);
-#pragma pop
-
-/* 808701E4-808701E8 000150 0004+00 0/1 0/0 0/0 .rodata @5210 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5210 = 593.0f;
-COMPILER_STRIP_GATE(0x808701E4, &lit_5210);
-#pragma pop
-
-/* 808701E8-808701EC 000154 0004+00 0/1 0/0 0/0 .rodata @5211 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5211 = 32768.0f;
-COMPILER_STRIP_GATE(0x808701E8, &lit_5211);
-#pragma pop
-
-/* 808701EC-808701F0 000158 0004+00 0/1 0/0 0/0 .rodata @5212 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5212 = 3.0f / 10.0f;
-COMPILER_STRIP_GATE(0x808701EC, &lit_5212);
-#pragma pop
-
-/* 808701F0-808701F4 00015C 0004+00 0/1 0/0 0/0 .rodata @5213 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_5213 = 0x403F5C29;
-COMPILER_STRIP_GATE(0x808701F0, &lit_5213);
-#pragma pop
-
-/* 808701F4-808701F8 000160 0004+00 0/1 0/0 0/0 .rodata @5214 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_5214 = 0x3F3851EB;
-COMPILER_STRIP_GATE(0x808701F4, &lit_5214);
-#pragma pop
-
-/* 808701F8-808701FC 000164 0004+00 0/1 0/0 0/0 .rodata @5215 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_5215 = 0x3FFEB852;
-COMPILER_STRIP_GATE(0x808701F8, &lit_5215);
-#pragma pop
-
-/* 808701FC-80870200 000168 0004+00 0/1 0/0 0/0 .rodata @5216 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5216 = -685.0f;
-COMPILER_STRIP_GATE(0x808701FC, &lit_5216);
-#pragma pop
-
-/* 80870200-80870204 00016C 0004+00 0/1 0/0 0/0 .rodata @5217 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5217 = 18.0f;
-COMPILER_STRIP_GATE(0x80870200, &lit_5217);
-#pragma pop
-
-/* 80870204-80870208 000170 0004+00 0/1 0/0 0/0 .rodata @5218 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5218 = 565.0f;
-COMPILER_STRIP_GATE(0x80870204, &lit_5218);
-#pragma pop
-
-/* 80870208-8087020C 000174 0004+00 0/1 0/0 0/0 .rodata @5219 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5219 = 177.0f;
-COMPILER_STRIP_GATE(0x80870208, &lit_5219);
-#pragma pop
-
-/* 8087020C-80870210 000178 0004+00 0/1 0/0 0/0 .rodata @5220 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5220 = 290.0f;
-COMPILER_STRIP_GATE(0x8087020C, &lit_5220);
-#pragma pop
-
-/* 80870210-80870214 00017C 0004+00 0/1 0/0 0/0 .rodata @5221 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5221 = 550.0f;
-COMPILER_STRIP_GATE(0x80870210, &lit_5221);
-#pragma pop
-
-/* 80870214-80870218 000180 0004+00 0/1 0/0 0/0 .rodata @5222 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5222 = 560.0f;
-COMPILER_STRIP_GATE(0x80870214, &lit_5222);
-#pragma pop
-
-/* 80870218-8087021C 000184 0004+00 0/1 0/0 0/0 .rodata @5223 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5223 = -16384.0f;
-COMPILER_STRIP_GATE(0x80870218, &lit_5223);
-#pragma pop
-
-/* 8087021C-80870220 000188 0004+00 0/2 0/0 0/0 .rodata @5224 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5224 = 2000.0f;
-COMPILER_STRIP_GATE(0x8087021C, &lit_5224);
-#pragma pop
-
-/* 8087084C-8087085C 0005C8 0010+00 0/1 0/0 0/0 .data lure_d$5019 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 lure_d[16] = {
- 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x14,
-};
-#pragma pop
+/* 8086ECC8-8086F5C8 002D48 0900+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
+static int useHeapInit(fopAc_ac_c* actor) {
+ fshop_class* i_this = (fshop_class*)actor;
+ cM_initRnd2(JREG_S(8) + 37, 123, 70);
+
+ void* modelData;
+ for (int i = 0; i < 48; i++) {
+ i_this->mLure[i].field_0x00.x = -370.0f + VREG_F(6) + (-(i & 15) * (16.0f + VREG_F(8))) + cM_rndFX(2.5f);
+ i_this->mLure[i].field_0x00.y = (215.0f + VREG_F(7)) - (((i >> 4) & 3) * (43.0f + VREG_F(9)));
+ i_this->mLure[i].field_0x00.z = 593.0f + JREG_F(1);
+
+ if (i >= 32 && i <= 33) {
+ i_this->mLure[i].field_0x24 = 3;
+ i_this->mLure[i].field_0x0c = JREG_S(4) - 0x4000;
+ i_this->mLure[i].field_0x0e = cM_rndFX2(32768.0f);
+ i_this->mLure[i].field_0x28 = 1.2f + JREG_F(0);
+ i_this->mLure[i].field_0x2c = 1.2f + JREG_F(0);
+ i_this->mLure[i].field_0x00.y += 13.0f;
+ } else {
+ if (cM_rndF2(1.0f) < 0.3f) {
+ i_this->mLure[i].field_0x24 = cM_rndF2(2.99f);
+ } else {
+ i_this->mLure[i].field_0x24 = i + (i >> 4);
+ i_this->mLure[i].field_0x24 &= 3;
+ if (i_this->mLure[i].field_0x24 == 3) {
+ i_this->mLure[i].field_0x24 = cM_rndF2(2.99f);
+ }
+ }
-/* 8087085C-80870864 0005D8 0008+00 0/1 0/0 0/0 .data rod_d$5056 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 rod_d[8] = {
- 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x18,
-};
-#pragma pop
-
-/* 80870864-80870884 0005E0 0020+00 0/1 0/0 0/0 .data rod_w$5087 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 rod_w[32] = {
- 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x66, 0x66, 0x66, 0x3F, 0x4C, 0xCC, 0xCD, 0x3F, 0x33, 0x33, 0x33,
- 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x00, 0x00, 0x00, 0x3E, 0xCC, 0xCC, 0xCD, 0x3E, 0x99, 0x99, 0x9A,
-};
-#pragma pop
-
-/* 80870884-8087089C 000600 0018+00 0/1 0/0 0/0 .data koro2_union_bmd$5117 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 koro2_union_bmd[24] = {
- 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0A,
- 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0E,
-};
-#pragma pop
-
-/* 8087089C-808708B4 000618 0018+00 0/1 0/0 0/0 .data koro2_union_no$5118 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 koro2_union_no[24] = {
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1F,
- 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08,
-};
-#pragma pop
+ i_this->mLure[i].field_0x0c = JREG_S(3) + 0x4000;
+ i_this->mLure[i].field_0x0e = cM_rndFX2(65536.0f);
+ i_this->mLure[i].field_0x28 = 0.8f + JREG_F(0) + cM_rndFX2(0.1f);
-/* 8086ECC8-8086F5C8 002D48 0900+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
-static void useHeapInit(fopAc_ac_c* param_0) {
- // NONMATCHING
+ if (i_this->mLure[i].field_0x24 == 2) {
+ i_this->mLure[i].field_0x2c = (0.71999997f + JREG_F(0)) - cM_rndF2(0.15f);
+ } else {
+ i_this->mLure[i].field_0x2c = 0.8f + JREG_F(0) + cM_rndFX2(0.1f);
+ }
+ }
+
+ static int lure_d[] = {0x16, 0x17, 0x1C, 0x14};
+ modelData = dComIfG_getObjectRes("Fshop", lure_d[i_this->mLure[i].field_0x24]);
+ JUT_ASSERT(2832, modelData != NULL);
+
+ i_this->mLure[i].field_0x14 = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000084);
+ if (i_this->mLure[i].field_0x14 == NULL) {
+ return 0;
+ }
+
+ if (i_this->mLure[i].field_0x24 == 3) {
+ i_this->mLure[i].field_0x14->setUserArea((uintptr_t)&i_this->mLure[i]);
+
+ for (u16 j = 0; j < ((J3DModelData*)modelData)->getJointNum(); j++) {
+ if (j == 1) {
+ ((J3DModelData*)modelData)->getJointNodePointer(j)->setCallBack(frog_CallBack);
+ }
+ }
+ } else {
+ modelData = dComIfG_getObjectRes("Fshop", 5);
+ JUT_ASSERT(2852, modelData != NULL);
+
+ for (int j = 0; j < 2; j++) {
+ i_this->mLure[i].field_0x18[j] = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x20000, 0x11000084);
+ if (i_this->mLure[i].field_0x18[j] == NULL) {
+ return 0;
+ }
+ }
+ }
+ }
+
+ cM_initRnd2(JREG_S(9) + 79, JREG_S(8) + 133, 70);
+
+ for (int i = 0; i < 3; i++) {
+ i_this->mRod[i].field_0x4c = cM_rndF2(1.99f);
+ i_this->mRod[i].field_0x00.x = -685.0f + YREG_F(2);
+ i_this->mRod[i].field_0x00.y = 18.0f + YREG_F(3);
+ i_this->mRod[i].field_0x00.z = 565.0f + YREG_F(4);
+
+ if (i == 1) {
+ i_this->mRod[i].field_0x00.x -= 15.0f;
+ } else if (i == 2) {
+ i_this->mRod[i].field_0x00.z += 15.0f;
+ }
+
+ if (i_this->mRod[i].field_0x4c == 0) {
+ i_this->mRod[i].field_0x54 = 30.0f * (1.2f + cM_rndF2(0.15f));
+ } else {
+ i_this->mRod[i].field_0x54 = 30.0f * (1.0f + cM_rndF2(0.15f));
+ }
+
+ static int rod_d[] = {0x19, 0x18,};
+ modelData = dComIfG_getObjectRes("Fshop", rod_d[i_this->mRod[i].field_0x4c]);
+ JUT_ASSERT(2903, modelData != NULL);
+ i_this->mRod[i].field_0x14 = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000084);
+ if (i_this->mRod[i].field_0x14 == NULL) {
+ return 0;
+ }
+
+ i_this->mRod[i].field_0x14->setUserArea((uintptr_t)&i_this->mRod[i]);
+ i_this->mRod[i].field_0x58 = cM_rndF2(65536.0f);
+
+ for (u16 j = 0; j < ((J3DModelData*)modelData)->getJointNum(); j++) {
+ if (j == 1) {
+ ((J3DModelData*)modelData)->getJointNodePointer(j)->setCallBack(Reel_CallBack);
+ }
+ }
+
+ modelData = dComIfG_getObjectRes("Fshop", 6);
+ JUT_ASSERT(2923, modelData != NULL);
+
+ for (int j = 0; j < 6; j++) {
+ i_this->mRod[i].field_0x18[j] = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x20000, 0x11000084);
+ if (i_this->mRod[i].field_0x18[j] == NULL) {
+ return 0;
+ }
+ }
+
+ if (!i_this->mRod[i].line_mat.init(1, 8, 1)) {
+ return 0;
+ }
+
+ f32* sp1C = i_this->mRod[i].line_mat.getSize(0);
+ for (int j = 0; j < 8; j++, sp1C++) {
+ static f32 rod_w[8] = {
+ 1.0f,
+ 0.89999998f,
+ 0.8f,
+ 0.69999999f,
+ 0.6f,
+ 0.5f,
+ 0.4f,
+ 0.3f,
+ };
+
+ *sp1C = rod_w[j];
+ }
+ }
+
+ for (int i = 0; i < 2; i++) {
+ if (i == 0) {
+ i_this->mTsubo[i].field_0x00.set(177.0f, 290.0f, 550.0f);
+ modelData = dComIfG_getObjectRes("Fshop", 0x1A);
+ } else {
+ i_this->mTsubo[i].field_0x00.set(40.0f, 290.0f, 560.0f);
+ modelData = dComIfG_getObjectRes("Fshop", 0x1B);
+ }
+
+ JUT_ASSERT(2969, modelData != NULL);
+
+ i_this->mTsubo[i].field_0x14 = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000084);
+ if (i_this->mTsubo[i].field_0x14 == NULL) {
+ return 0;
+ }
+ }
+
+ if (!i_this->field_0x3f88.init(60, 15, 0)) {
+ return 0;
+ }
+
+ modelData = dComIfG_getObjectRes("Fshop", 0x12);
+ JUT_ASSERT(3035, modelData != NULL);
+ i_this->field_0x6b30 = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000084);
+ if (i_this->field_0x6b30 == NULL) {
+ return 0;
+ }
+
+ i_this->field_0x6b68 = new dBgW();
+ if (i_this->field_0x6b68 == NULL) {
+ return 0;
+ }
+
+ if (i_this->field_0x6b68->Set((cBgD_t*)dComIfG_getObjectRes("Fshop", 0x26), 1, &i_this->field_0x6b38) == 1) {
+ return 0;
+ }
+
+ i_this->field_0x6b68->SetCrrFunc(dBgS_MoveBGProc_Typical);
+
+ modelData = dComIfG_getObjectRes("Fshop", 0x15);
+ JUT_ASSERT(3069, modelData != NULL);
+ i_this->field_0x3ff4 = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000084);
+ if (i_this->field_0x3ff4 == 0) {
+ return 0;
+ }
+
+ #if !PLATFORM_SHIELD
+ i_this->field_0x4020.y = cM_rndFX(2000.0f) + -16384.0f;
+
+ modelData = dComIfG_getObjectRes("Fshop", 16);
+ JUT_ASSERT(3069, modelData != NULL);
+ ArcIX_A_crwaku_model[0] = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000084);
+ if (ArcIX_A_crwaku_model[0] == NULL) {
+ return 0;
+ }
+
+ J3DModel** var_r24;
+ for (int i = 0; i < 6; i++) {
+ static int koro2_union_bmd[] = {
+ 0xF,
+ 0xD,
+ 0xA,
+ 0xB,
+ 0xC,
+ 0xE,
+ };
+
+ modelData = dComIfG_getObjectRes("Fshop", koro2_union_bmd[i]);
+
+ static int koro2_union_no[] = {
+ 1,
+ 1,
+ 31,
+ 16,
+ 4,
+ 8,
+ };
+
+ var_r24 = koro2_union_model[i];
+ for (int j = 0; j < koro2_union_no[i]; j++, var_r24++) {
+ *var_r24 = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000084);
+ if (*var_r24 == NULL) {
+ return 0;
+ }
+ }
+ }
+ #endif
+
+ #if PLATFORM_SHIELD
+ if (!koro2_heapinit(actor)) {
+ return 0;
+ }
+ #endif
+
+ if ((int)dComIfGs_getEventReg(0xF47F) >= 10) {
+ modelData = dComIfG_getObjectRes("Fshop", 0x11);
+ JUT_ASSERT(3137, modelData != NULL);
+ i_this->field_0x4004 = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000084);
+ if (i_this->field_0x4004 == 0) {
+ return 0;
+ }
+ }
+
+ return 1;
}
/* 8086F5C8-8086F634 003648 006C+00 1/1 0/0 0/0 .text BalluseHeapInit__FP10fopAc_ac_c */
-static void BalluseHeapInit(fopAc_ac_c* param_0) {
- // NONMATCHING
-}
+static int BalluseHeapInit(fopAc_ac_c* actor) {
+ fshop_class* i_this = (fshop_class*)actor;
-/* ############################################################################################## */
-/* 80870220-80870240 00018C 0020+00 0/0 0/0 0/0 .rodata @5249 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5249[32] = {
- 0x00, 0x00, 0x84, 0xA0, 0x00, 0x00, 0x9A, 0xC0, 0x00, 0x00, 0xB4, 0x40, 0x00, 0x00, 0xE1, 0x00,
- 0x00, 0x00, 0x82, 0x20, 0x00, 0x00, 0x9A, 0x40, 0x00, 0x00, 0x64, 0xE0, 0x00, 0x00, 0xA9, 0xE0,
-};
-COMPILER_STRIP_GATE(0x80870220, &lit_5249);
-#pragma pop
-
-/* 80870240-80870244 0001AC 0004+00 0/1 0/0 0/0 .rodata @5476 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5476 = 9.0f;
-COMPILER_STRIP_GATE(0x80870240, &lit_5476);
-#pragma pop
-
-/* 80870244-80870248 0001B0 0004+00 0/1 0/0 0/0 .rodata @5477 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5477 = 11.0f;
-COMPILER_STRIP_GATE(0x80870244, &lit_5477);
-#pragma pop
-
-/* 80870248-8087024C 0001B4 0004+00 0/1 0/0 0/0 .rodata @5478 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5478 = 20.0f;
-COMPILER_STRIP_GATE(0x80870248, &lit_5478);
-#pragma pop
-
-/* 8087024C-80870250 0001B8 0004+00 0/1 0/0 0/0 .rodata @5479 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5479 = 67.0f;
-COMPILER_STRIP_GATE(0x8087024C, &lit_5479);
-#pragma pop
-
-/* 80870250-80870254 0001BC 0004+00 0/1 0/0 0/0 .rodata @5480 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5480 = 9.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80870250, &lit_5480);
-#pragma pop
-
-/* 80870254-80870258 0001C0 0004+00 0/1 0/0 0/0 .rodata @5481 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5481 = 3.0f / 5.0f;
-COMPILER_STRIP_GATE(0x80870254, &lit_5481);
-#pragma pop
-
-/* 80870258-8087025C 0001C4 0004+00 0/1 0/0 0/0 .rodata @5482 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5482 = 127.0f / 50.0f;
-COMPILER_STRIP_GATE(0x80870258, &lit_5482);
-#pragma pop
-
-/* 8087025C-80870260 0001C8 0004+00 0/1 0/0 0/0 .rodata @5483 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5483 = -648.0f;
-COMPILER_STRIP_GATE(0x8087025C, &lit_5483);
-#pragma pop
-
-/* 80870260-80870264 0001CC 0004+00 0/1 0/0 0/0 .rodata @5484 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5484 = 380.0f;
-COMPILER_STRIP_GATE(0x80870260, &lit_5484);
-#pragma pop
-
-/* 80870264-80870268 0001D0 0004+00 0/1 0/0 0/0 .rodata @5485 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5485 = -131.0f;
-COMPILER_STRIP_GATE(0x80870264, &lit_5485);
-#pragma pop
-
-/* 80870268-8087026C 0001D4 0004+00 0/1 0/0 0/0 .rodata @5486 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5486 = 3000.0f;
-COMPILER_STRIP_GATE(0x80870268, &lit_5486);
-#pragma pop
-
-/* 8087026C-80870270 0001D8 0004+00 0/1 0/0 0/0 .rodata @5487 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5487 = -4500.0f;
-COMPILER_STRIP_GATE(0x8087026C, &lit_5487);
-#pragma pop
-
-/* 80870270-80870274 0001DC 0004+00 0/1 0/0 0/0 .rodata @5488 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5488 = -878.0f;
-COMPILER_STRIP_GATE(0x80870270, &lit_5488);
-#pragma pop
-
-/* 80870274-8087027C 0001E0 0008+00 0/1 0/0 0/0 .rodata @5490 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5490[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x80870274, &lit_5490);
-#pragma pop
+ void* modelData = dComIfG_getObjectRes("Fshop", 9);
+ JUT_ASSERT(3157, modelData != NULL);
+ i_this->field_0x4070 = mDoExt_J3DModel__create((J3DModelData*)modelData, 0x80000, 0x11000084);
+ if (i_this->field_0x4070 == 0) {
+ return 0;
+ }
-/* 808708B4-808708BC 000630 0008+00 1/1 0/0 0/0 .data check_kind$5285 */
-SECTION_DATA static u8 check_kind[8] = {
- 0xF5, 0x7F, 0xF4, 0x7F, 0xF3, 0x7F, 0xF2, 0x7F,
-};
+ return 1;
+}
/* 8086F634-8086FD78 0036B4 0744+00 1/0 0/0 0/0 .text daFshop_Create__FP10fopAc_ac_c */
-static void daFshop_Create(fopAc_ac_c* param_0) {
- // NONMATCHING
- fopAcM_ct(param_0, fshop_class);
+static int daFshop_Create(fopAc_ac_c* actor) {
+ fshop_class* i_this = (fshop_class*)actor;
+ fopAcM_ct(actor, fshop_class);
+
+ int sp3C = dComIfG_resLoad(&i_this->mPhase, "Fshop");
+ if (sp3C == cPhs_COMPLEATE_e) {
+ OS_REPORT("FSHOP PARAM %x\n", fopAcM_GetParam(actor));
+ if ((fopAcM_GetParam(actor) & 0xFF) == 0x23) {
+ if (!fopAcM_entrySolidHeap(actor, BalluseHeapInit, 0x800)) {
+ OS_REPORT("//////////////FSHOP BALL SET NON !!\n");
+ return 5;
+ }
+
+ i_this->field_0x40b4.Set(fopAcM_GetPosition_p(actor), fopAcM_GetOldPosition_p(actor), actor, 1, &i_this->field_0x4074, fopAcM_GetSpeed_p(actor), NULL, NULL);
+ i_this->field_0x4074.SetWall(9.0f, 11.0f);
+ i_this->field_0x40b4.OnWallSort();
+ return sp3C;
+ }
+
+ if ((s8)(fopAcM_GetParam(actor) & 0xFF) >= 100) {
+ i_this->field_0x400e = (fopAcM_GetParam(actor) & 0xFF) - 100;
+ actor->field_0x567 = ((i_this->field_0x400e - 1) | (dComIfGs_getEventReg(0xF63F) & 8));
+
+ u32 sp58[] = {
+ 0x84A0,
+ 0x9AC0,
+ 0xB440,
+ 0xE100,
+ 0x8220,
+ 0x9A40,
+ 0x64E0,
+ 0xA9E0,
+ };
+
+ if (!fopAcM_entrySolidHeap(actor, koro2_heapinit, sp58[i_this->field_0x400e - 1])) {
+ OS_REPORT("//////////////FSHOP KORO222 SET NON !!\n");
+ return 5;
+ }
+
+ if (i_this->field_0x402c != NULL && dComIfG_Bgsp().Regist(i_this->field_0x402c, actor)) {
+ return 5;
+ }
+
+ for (int i = 0; i < 100; i++) {
+ if (i_this->mKoro2[i].mpBgW != NULL && dComIfG_Bgsp().Regist(i_this->mKoro2[i].mpBgW, actor)) {
+ return 5;
+ }
+ }
+
+ i_this->field_0x428d = 30;
+ i_this->field_0x400d = 1;
+ return sp3C;
+ }
+
+ fopAcM_SetParam(actor, 0);
+ i_this->field_0x400c = dComIfGs_getEventReg(0xF63F) & 0xFF;
+
+ OS_REPORT("FSHOP//////////////FSHOP SET 1 !!\n");
+
+ if (!fopAcM_entrySolidHeap(actor, useHeapInit, 0x5B000)) {
+ OS_REPORT("//////////////FSHOP SET NON !!\n");
+ return 5;
+ }
+
+ OS_REPORT("//////////////FSHOP SET 2 !!\n");
+
+ if (i_this->field_0x6b68 != NULL && dComIfG_Bgsp().Regist(i_this->field_0x6b68, actor)) {
+ return 5;
+ }
+
+ for (int i = 0; i < 60; i++) {
+ if (i < 30) {
+ i_this->mWeed[i].field_0x00[0].z = -30.0f + cM_rndFX2(20.0f);
+ i_this->mWeed[i].field_0x00[0].y = 67.0f;
+ i_this->mWeed[i].field_0xb4 = 0.9f + cM_rndF2(0.6f);
+ } else {
+ i_this->mWeed[i].field_0x00[0].z = 220.0f + cM_rndFX2(20.0f);
+ i_this->mWeed[i].field_0x00[0].y = 67.0f;
+ i_this->mWeed[i].field_0xb4 = 0.9f + cM_rndF2(0.6f);
+ }
+
+ i_this->mWeed[i].field_0x00[0].x = -720.0f + cM_rndFX2(20.0f);
+ i_this->mWeed[i].field_0xbc = cM_rndF2(65536.0f);
+ }
+
+ daFshop_Execute(i_this);
+
+ void* modelData = dComIfG_getObjectRes("Fshop", 5);
+ JUT_ASSERT(3354, modelData != NULL);
+ if (dComIfGp_addSimpleModel((J3DModelData*)modelData, fopAcM_GetRoomNo(actor), 0) == -1) {
+ OS_REPORT("\x1B[43;30m針のシンプルモデル登録失敗しました。\n\x1B[m");
+ }
+
+ modelData = dComIfG_getObjectRes("Fshop", 6);
+ JUT_ASSERT(3362, modelData != NULL);
+ if (dComIfGp_addSimpleModel((J3DModelData*)modelData, fopAcM_GetRoomNo(actor), 0) == -1) {
+ OS_REPORT("\x1B[43;30mリングのシンプルモデル登録失敗しました。\n\x1B[m");
+ }
+
+ i_this->field_0x6b7c = 1;
+
+ for (int i = 0; i < 8; i++) {
+ fopAcM_createChild(PROC_FSHOP, fopAcM_GetID(actor), i - 155, &actor->current.pos, fopAcM_GetRoomNo(actor), NULL, NULL, -1, NULL);
+ }
+
+ fopAcM_createChild(PROC_FSHOP, fopAcM_GetID(actor), 0xFFFFFF23, &actor->current.pos, fopAcM_GetRoomNo(actor), NULL, NULL, -1, NULL);
+
+ u8 sp10 = 1;
+ #if VERSION == VERSION_GCN_PAL || VERSION == VERSION_WII_PAL || PLATFORM_SHIELD
+ if (dComIfGs_getPalLanguage() == 1) {
+ sp10 = 2;
+ } else {
+ sp10 = 0;
+ }
+ #endif
+
+ for (int i = 0; i <= 3; i++) {
+ static u16 check_kind[] = {
+ 0xF57F,
+ 0xF47F,
+ 0xF37F,
+ 0xF27F,
+ };
+
+ int sp24;
+ if (sp10 == 1) {
+ sp24 = 2.54f * dComIfGs_getEventReg(check_kind[i]);
+ } else {
+ sp24 = dComIfGs_getEventReg(check_kind[i]);
+ }
+
+ if (sp24 >= 0xA) {
+ u32 sp28 = (sp24 << 8) | 0xFFFF0000 | i;
+ fopAcM_create(PROC_MG_FISH, sp28, &actor->current.pos, fopAcM_GetRoomNo(actor), NULL, NULL, -1);
+ }
+ }
+
+ cXyz sp48(-648.0f + YREG_F(7), 215.0f + YREG_F(8), 380.0f + YREG_F(9));
+ csXyz sp40(0, 0, 0);
+ fopAcM_create(PROC_OBJ_KAGE, 0xFFFFFF01, &sp48, fopAcM_GetRoomNo(actor), &sp40, NULL, -1);
+
+ for (int i = 0; i < 8; i++) {
+ fopAcM_create(PROC_MG_FISH, 0xFFFF2005, &actor->current.pos, fopAcM_GetRoomNo(actor), NULL, NULL, -1);
+ }
+
+ sp48.set(-131.0f, 3000.0f + nREG_F(7), -4500.0f);
+ fopAcM_create(PROC_NPC_TK, -1, &sp48, fopAcM_GetRoomNo(actor), NULL, NULL, -1);
+
+ for (int i = 0; i < 5; i++) {
+ sp48.set(-450.0f, 0.0f, -878.0f);
+ fopAcM_create(PROC_BD, 0xFFFFFFFF, &sp48, fopAcM_GetRoomNo(actor), NULL, NULL, -1);
+ }
+ }
+
+ return sp3C;
}
/* 808708BC-808708DC -00001 0020+00 1/0 0/0 0/0 .data l_daFshop_Method */
diff --git a/src/d/actor/d_a_mirror.cpp b/src/d/actor/d_a_mirror.cpp
index 06812298a1..792f1e7fe9 100644
--- a/src/d/actor/d_a_mirror.cpp
+++ b/src/d/actor/d_a_mirror.cpp
@@ -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;
diff --git a/src/d/actor/d_a_movie_player.cpp b/src/d/actor/d_a_movie_player.cpp
index 97976d4e39..0a0b1ff8d3 100644
--- a/src/d/actor/d_a_movie_player.cpp
+++ b/src/d/actor/d_a_movie_player.cpp
@@ -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
diff --git a/src/d/actor/d_a_npc.cpp b/src/d/actor/d_a_npc.cpp
index 3e0835750c..5bbea1652e 100644
--- a/src/d/actor/d_a_npc.cpp
+++ b/src/d/actor/d_a_npc.cpp
@@ -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;
diff --git a/src/d/actor/d_a_npc_henna.cpp b/src/d/actor/d_a_npc_henna.cpp
index 5f123d08c7..ca7879f6f3 100644
--- a/src/d/actor/d_a_npc_henna.cpp
+++ b/src/d/actor/d_a_npc_henna.cpp
@@ -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;
diff --git a/src/d/actor/d_a_obj_ari.cpp b/src/d/actor/d_a_obj_ari.cpp
index e8e614956b..0a5a9044f7 100644
--- a/src/d/actor/d_a_obj_ari.cpp
+++ b/src/d/actor/d_a_obj_ari.cpp
@@ -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);
}
diff --git a/src/d/actor/d_a_obj_cho.cpp b/src/d/actor/d_a_obj_cho.cpp
index 3425ccf1ac..e41241cb7e 100644
--- a/src/d/actor/d_a_obj_cho.cpp
+++ b/src/d/actor/d_a_obj_cho.cpp
@@ -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);
}
diff --git a/src/d/actor/d_a_obj_crvfence.cpp b/src/d/actor/d_a_obj_crvfence.cpp
index 4803d1ddaa..2c80397efe 100644
--- a/src/d/actor/d_a_obj_crvfence.cpp
+++ b/src/d/actor/d_a_obj_crvfence.cpp
@@ -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
diff --git a/src/d/actor/d_a_obj_crvhahen.cpp b/src/d/actor/d_a_obj_crvhahen.cpp
index 20a6163d9a..f0e40a0b18 100644
--- a/src/d/actor/d_a_obj_crvhahen.cpp
+++ b/src/d/actor/d_a_obj_crvhahen.cpp
@@ -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;
}
diff --git a/src/d/actor/d_a_obj_dan.cpp b/src/d/actor/d_a_obj_dan.cpp
index 01fdcdee3a..33af5795ea 100644
--- a/src/d/actor/d_a_obj_dan.cpp
+++ b/src/d/actor/d_a_obj_dan.cpp
@@ -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);
}
diff --git a/src/d/actor/d_a_obj_gomikabe.cpp b/src/d/actor/d_a_obj_gomikabe.cpp
index ea19451152..590ae92c7e 100644
--- a/src/d/actor/d_a_obj_gomikabe.cpp
+++ b/src/d/actor/d_a_obj_gomikabe.cpp
@@ -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;
}
diff --git a/src/d/actor/d_a_obj_groundwater.cpp b/src/d/actor/d_a_obj_groundwater.cpp
index 1bc17a6c36..8ca9c0c65a 100644
--- a/src/d/actor/d_a_obj_groundwater.cpp
+++ b/src/d/actor/d_a_obj_groundwater.cpp
@@ -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);
}
diff --git a/src/d/actor/d_a_obj_hhashi.cpp b/src/d/actor/d_a_obj_hhashi.cpp
index 1f30fa0e73..0b2dbd0d7e 100644
--- a/src/d/actor/d_a_obj_hhashi.cpp
+++ b/src/d/actor/d_a_obj_hhashi.cpp
@@ -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;
diff --git a/src/d/actor/d_a_obj_kabuto.cpp b/src/d/actor/d_a_obj_kabuto.cpp
index a19eca796c..0d387d56d2 100644
--- a/src/d/actor/d_a_obj_kabuto.cpp
+++ b/src/d/actor/d_a_obj_kabuto.cpp
@@ -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);
}
diff --git a/src/d/actor/d_a_obj_kamakiri.cpp b/src/d/actor/d_a_obj_kamakiri.cpp
index 86e48c13fa..51ed44d686 100644
--- a/src/d/actor/d_a_obj_kamakiri.cpp
+++ b/src/d/actor/d_a_obj_kamakiri.cpp
@@ -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)
diff --git a/src/d/actor/d_a_obj_katatsumuri.cpp b/src/d/actor/d_a_obj_katatsumuri.cpp
index f65c412676..8493976d02 100644
--- a/src/d/actor/d_a_obj_katatsumuri.cpp
+++ b/src/d/actor/d_a_obj_katatsumuri.cpp
@@ -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)
diff --git a/src/d/actor/d_a_obj_kuwagata.cpp b/src/d/actor/d_a_obj_kuwagata.cpp
index 69354bbd35..484e3400c1 100644
--- a/src/d/actor/d_a_obj_kuwagata.cpp
+++ b/src/d/actor/d_a_obj_kuwagata.cpp
@@ -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);
}
diff --git a/src/d/actor/d_a_obj_lv3Water2.cpp b/src/d/actor/d_a_obj_lv3Water2.cpp
index db18100211..c6ce4fab6f 100644
--- a/src/d/actor/d_a_obj_lv3Water2.cpp
+++ b/src/d/actor/d_a_obj_lv3Water2.cpp
@@ -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
diff --git a/src/d/actor/d_a_obj_mhole.cpp b/src/d/actor/d_a_obj_mhole.cpp
index 53074c05ca..c7229120dd 100644
--- a/src/d/actor/d_a_obj_mhole.cpp
+++ b/src/d/actor/d_a_obj_mhole.cpp
@@ -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);
}
diff --git a/src/d/actor/d_a_obj_mirror_chain.cpp b/src/d/actor/d_a_obj_mirror_chain.cpp
index 3436a0d3b0..63368abb13 100644
--- a/src/d/actor/d_a_obj_mirror_chain.cpp
+++ b/src/d/actor/d_a_obj_mirror_chain.cpp
@@ -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];
+#if DEBUG
+static u8 l_begin;
+#endif
+
/* 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() {
- // NONMATCHING
-}
+ 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));
-// 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();
+ #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,
-};
diff --git a/src/d/actor/d_a_obj_octhashi.cpp b/src/d/actor/d_a_obj_octhashi.cpp
index b291664040..013ab862e4 100644
--- a/src/d/actor/d_a_obj_octhashi.cpp
+++ b/src/d/actor/d_a_obj_octhashi.cpp
@@ -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());
diff --git a/src/d/actor/d_a_obj_rstair.cpp b/src/d/actor/d_a_obj_rstair.cpp
index c5f90996f3..5b4d6c90da 100644
--- a/src/d/actor/d_a_obj_rstair.cpp
+++ b/src/d/actor/d_a_obj_rstair.cpp
@@ -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);
}
diff --git a/src/d/actor/d_a_obj_ten.cpp b/src/d/actor/d_a_obj_ten.cpp
index a6433d378d..ce6e576b2a 100644
--- a/src/d/actor/d_a_obj_ten.cpp
+++ b/src/d/actor/d_a_obj_ten.cpp
@@ -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);
}
diff --git a/src/d/actor/d_a_obj_thashi.cpp b/src/d/actor/d_a_obj_thashi.cpp
index a66b59c8c8..a01da21a5d 100644
--- a/src/d/actor/d_a_obj_thashi.cpp
+++ b/src/d/actor/d_a_obj_thashi.cpp
@@ -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
diff --git a/src/d/actor/d_a_obj_tombo.cpp b/src/d/actor/d_a_obj_tombo.cpp
index 22c837165a..fea30f10c7 100644
--- a/src/d/actor/d_a_obj_tombo.cpp
+++ b/src/d/actor/d_a_obj_tombo.cpp
@@ -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);
}
diff --git a/src/d/actor/d_a_obj_tp.cpp b/src/d/actor/d_a_obj_tp.cpp
index 7d1d3a4b1e..15beae19a7 100644
--- a/src/d/actor/d_a_obj_tp.cpp
+++ b/src/d/actor/d_a_obj_tp.cpp
@@ -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);
}
diff --git a/src/d/actor/d_a_obj_zra_freeze.cpp b/src/d/actor/d_a_obj_zra_freeze.cpp
index 24b1cff7d0..250bcf5d6e 100644
--- a/src/d/actor/d_a_obj_zra_freeze.cpp
+++ b/src/d/actor/d_a_obj_zra_freeze.cpp
@@ -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;
diff --git a/src/d/actor/d_a_tag_attack_item.cpp b/src/d/actor/d_a_tag_attack_item.cpp
index 5a7f51b3c0..23e42f479f 100644
--- a/src/d/actor/d_a_tag_attack_item.cpp
+++ b/src/d/actor/d_a_tag_attack_item.cpp
@@ -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
-}
-
-/* 805A2B5C-805A2BA4 00027C 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
-// cM3dGCyl::~cM3dGCyl() {
-extern "C" void __dt__8cM3dGCylFv() {
- // NONMATCHING
-}
+ fopAcM_ct(this, daTagAtkItem_c);
-/* 805A2BA4-805A2BEC 0002C4 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
-}
+ if (!Create()) {
+ return cPhs_ERROR_e;
+ }
-/* 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
-}
-
-/* 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
-}
+/* 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,
+};
-/* 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,
+};
diff --git a/src/d/actor/d_a_title.cpp b/src/d/actor/d_a_title.cpp
index a3c49be95a..98b7c1e9c0 100644
--- a/src/d/actor/d_a_title.cpp
+++ b/src/d/actor/d_a_title.cpp
@@ -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
diff --git a/src/d/d_camera.cpp b/src/d/d_camera.cpp
index 232eb6a3cf..b2239a9c4e 100644
--- a/src/d/d_camera.cpp
+++ b/src/d/d_camera.cpp
@@ -2127,10 +2127,10 @@ f32 dCamera_c::radiusActorInSight(fopAc_ac_c* i_actor1, fopAc_ac_c* i_actor2, cX
dDlst_window_c* window = get_window(field_0x0);
scissor_class* scissor = window->getScissor();
f32 dVar3 = cAngle::d2r(i_fovY) * 0.5f;
- f32 tmp = (scissor->height - mTrimHeight * 2.0f) / 448.0f * dVar3;
+ f32 tmp = (scissor->height - mTrimHeight * 2.0f) / FB_HEIGHT * dVar3;
f32 fVar8 = tmp * (mTrimHeight < 0.01f ? 0.95f : 1.0f);
dVar3 *= mWindowAspect;
- f32 fVar7 = dVar3 * (scissor->width / 608.0f) * 0.85f;
+ f32 fVar7 = dVar3 * (scissor->width / FB_WIDTH) * 0.85f;
cXyz pos1 = attentionPos(i_actor1);
pos1.y += (positionOf(i_actor1).y - attentionPos(i_actor1).y) * 0.5f;
@@ -7861,9 +7861,11 @@ bool dCamera_c::rideCamera(s32 param_0) {
cSAngle sp144 = cSAngle::_0;
+ #if WIDESCREEN_SUPPORT
if (mDoGph_gInf_c::isWide()) {
val22 *= WideTurnSaving;
}
+ #endif
RideData* wk = (RideData*)mWork;
@@ -9328,11 +9330,13 @@ bool dCamera_c::eventCamera(s32 param_0) {
}
getEvIntData(&sp1C, "WideMode", 0);
+ #if WIDESCREEN_SUPPORT
if (sp1C == 1) {
mDoGph_gInf_c::onWideZoom();
} else if (sp1C == 2) {
mDoGph_gInf_c::offWideZoom();
}
+ #endif
#if DEBUG
if (mCamSetup.CheckFlag(0x8000)) {
@@ -10039,7 +10043,7 @@ static int camera_draw(camera_process_class* i_this) {
int camera_id = get_camera_id(a_this);
int trim_height = body->TrimHeight();
- window->setScissor(0.0f, trim_height, 608.0f, 448.0f - trim_height * 2.0f);
+ window->setScissor(0.0f, trim_height, FB_WIDTH, FB_HEIGHT - trim_height * 2.0f);
C_MTXPerspective(i_this->projMtx, i_this->fovy, i_this->aspect, i_this->near, i_this->far);
mDoMtx_lookAt(i_this->viewMtx, &i_this->lookat.eye, &i_this->lookat.center,
&i_this->lookat.up, i_this->bank);
diff --git a/src/d/d_com_inf_game.cpp b/src/d/d_com_inf_game.cpp
index d7396fa1b2..87505ab40f 100644
--- a/src/d/d_com_inf_game.cpp
+++ b/src/d/d_com_inf_game.cpp
@@ -1936,12 +1936,12 @@ void dComIfG_playerStatusD() {
dComIfGs_onEventBit(0x5d80);
if (!mDoCPd_c::isConnect(PAD_3)) {
- g_fmapHIO.mRangeCheckInterval = 0;
+ g_fmapHIO.mAllRegionsUnlocked = 0;
} else {
- g_fmapHIO.mRangeCheckInterval = 1;
+ g_fmapHIO.mAllRegionsUnlocked = 1;
}
- g_fmapHIO.mRegionImageDebug = 1;
+ g_fmapHIO.mPortalWarpON = 1;
g_fmapHIO.update();
g_mwHIO.setArrowFlag(1);
diff --git a/src/d/d_cursor_mng.cpp b/src/d/d_cursor_mng.cpp
new file mode 100644
index 0000000000..8b39195217
--- /dev/null
+++ b/src/d/d_cursor_mng.cpp
@@ -0,0 +1,4 @@
+#include "d/d_cursor_mng.h"
+
+// TODO: putting this here until a more appropriate place is found
+u8 data_8053a730;
diff --git a/src/d/d_debug_camera.cpp b/src/d/d_debug_camera.cpp
index bb09f93724..a6682fd444 100644
--- a/src/d/d_debug_camera.cpp
+++ b/src/d/d_debug_camera.cpp
@@ -218,7 +218,7 @@ void dDbgCamSetup_c::genMessage(JORMContext* mctx) {
mctx->genLabel("- 情報表示", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
mctx->genCheckBox(" 有効", &mFlag, 0x8000, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
- mctx->genSlider(" 表示位置 X", &mPosX, 0, 640, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
+ mctx->genSlider(" 表示位置 X", &mPosX, 0, FB_WIDTH, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
mctx->genSlider(" Y", &mPosY, 0, 480, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
mctx->genLabel("-", 0, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
diff --git a/src/d/d_error_msg.cpp b/src/d/d_error_msg.cpp
index a179e1856c..ed314e1247 100644
--- a/src/d/d_error_msg.cpp
+++ b/src/d/d_error_msg.cpp
@@ -73,9 +73,9 @@ static void messageSet(u32 status, bool i_drawBg) {
JUT_ASSERT(102, strlen(msg_p)-1 < 512);
- J2DTextBox tpane('TEXT1', JGeometry::TBox2<f32>(0.0f, 0.0f, 608.0f, 200.0f), (ResFONT*)font_data, msg_p, 512, HBIND_CENTER, VBIND_CENTER);
- J2DTextBox spane('TEXT2', JGeometry::TBox2<f32>(0.0f, 0.0f, 608.0f, 200.0f), (ResFONT*)font_data, msg_p, 512, HBIND_CENTER, VBIND_CENTER);
- J2DPicture ppane('PICT1', JGeometry::TBox2<f32>(0.0f, 0.0f, 608.0f, 448.0f), (ResTIMG*)black_tex, NULL);
+ J2DTextBox tpane('TEXT1', JGeometry::TBox2<f32>(0.0f, 0.0f, FB_WIDTH, 200.0f), (ResFONT*)font_data, msg_p, 512, HBIND_CENTER, VBIND_CENTER);
+ J2DTextBox spane('TEXT2', JGeometry::TBox2<f32>(0.0f, 0.0f, FB_WIDTH, 200.0f), (ResFONT*)font_data, msg_p, 512, HBIND_CENTER, VBIND_CENTER);
+ J2DPicture ppane('PICT1', JGeometry::TBox2<f32>(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT), (ResTIMG*)black_tex, NULL);
JUTResFont font((ResFONT*)font_data, NULL);
JUTFont* pfont = (JUTFont*)&font;
@@ -146,36 +146,36 @@ static void messageSet(u32 status, bool i_drawBg) {
#if (VERSION == VERSION_GCN_JPN) || (VERSION == VERSION_WII_JPN)
f32 temp_0 = 0.0f; // fixes load order
- f32 y = temp_0 + ((448.0f - height) / 2);
+ f32 y = temp_0 + ((FB_HEIGHT - height) / 2);
if (i_drawBg) {
ppane.mAlpha = 0x82;
- ppane.draw(0.0f, 0.0f, 608.0f, 448.0f, false, false, false);
+ ppane.draw(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, false, false, false);
}
- spane.draw(2.0f, y + 10.0f + 2.0f, 608.0f, HBIND_CENTER);
- tpane.draw(0.0f, y + 10.0f, 608.0f, HBIND_CENTER);
+ spane.draw(2.0f, y + 10.0f + 2.0f, FB_WIDTH, HBIND_CENTER);
+ tpane.draw(0.0f, y + 10.0f, FB_WIDTH, HBIND_CENTER);
#else
f32 temp_0 = 0.0f; // fixes load order
- f32 x = temp_0 + ((608.0f - maxWidth) / 2);
- f32 y = temp_0 + ((448.0f - height) / 2);
+ f32 x = temp_0 + ((FB_WIDTH - maxWidth) / 2);
+ f32 y = temp_0 + ((FB_HEIGHT - height) / 2);
if (i_drawBg) {
ppane.mAlpha = 0x82;
- ppane.draw(0.0f, 0.0f, 608.0f, 448.0f, false, false, false);
+ ppane.draw(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, false, false, false);
}
#if VERSION == VERSION_GCN_PAL
if (dComIfGs_getPalLanguage() == dSv_player_config_c::LANGAUGE_ENGLISH) {
- spane.draw(x + 2.0f, y + 10.0f + 2.0f, 608.0f, HBIND_LEFT);
- tpane.draw(x, y + 10.0f, 608.0f, HBIND_LEFT);
+ spane.draw(x + 2.0f, y + 10.0f + 2.0f, FB_WIDTH, HBIND_LEFT);
+ tpane.draw(x, y + 10.0f, FB_WIDTH, HBIND_LEFT);
} else {
- spane.draw(2.0f, y + 10.0f + 2.0f, 608.0f, HBIND_CENTER);
- tpane.draw(0.0f, y + 10.0f, 608.0f, HBIND_CENTER);
+ spane.draw(2.0f, y + 10.0f + 2.0f, FB_WIDTH, HBIND_CENTER);
+ tpane.draw(0.0f, y + 10.0f, FB_WIDTH, HBIND_CENTER);
}
#else
- spane.draw(x + 2.0f, y + 10.0f + 2.0f, 608.0f, HBIND_LEFT);
- tpane.draw(x, y + 10.0f, 608.0f, HBIND_LEFT);
+ spane.draw(x + 2.0f, y + 10.0f + 2.0f, FB_WIDTH, HBIND_LEFT);
+ tpane.draw(x, y + 10.0f, FB_WIDTH, HBIND_LEFT);
#endif
#endif
}
@@ -188,8 +188,8 @@ void dDvdErrorMsg_c::draw(s32 status) {
GXSetAlphaUpdate(GX_FALSE);
j3dSys.drawInit();
- J2DOrthoGraph draw2D(0.0f, 0.0f, 608.0f, 448.0f, -1.0f, 1.0f);
- draw2D.setOrtho(0.0f, 0.0f, 608.0f, 448.0f, -1.0f, 1.0f);
+ J2DOrthoGraph draw2D(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, -1.0f, 1.0f);
+ draw2D.setOrtho(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, -1.0f, 1.0f);
draw2D.setPort();
dComIfGp_setCurrentGrafPort(&draw2D);
@@ -244,8 +244,8 @@ static void drawCapture(u8 alpha) {
static bool l_texCopied = false;
if (!l_texCopied) {
- GXSetTexCopySrc(0, 0, 608, 448);
- GXSetTexCopyDst(304, 224, (GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_TRUE);
+ GXSetTexCopySrc(0, 0, FB_WIDTH, FB_HEIGHT);
+ GXSetTexCopyDst(FB_WIDTH / 2, FB_HEIGHT / 2, (GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_TRUE);
GXCopyTex(mDoGph_gInf_c::getFrameBufferTex(), GX_FALSE);
l_texCopied = true;
}
@@ -255,7 +255,7 @@ static void drawCapture(u8 alpha) {
GXSetAlphaUpdate(GX_FALSE);
j3dSys.drawInit();
- GXInitTexObj(mDoGph_gInf_c::getFrameBufferTexObj(), mDoGph_gInf_c::getFrameBufferTex(), 304, 224, (GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_CLAMP, GX_CLAMP, GX_FALSE);
+ GXInitTexObj(mDoGph_gInf_c::getFrameBufferTexObj(), mDoGph_gInf_c::getFrameBufferTex(), FB_WIDTH / 2, FB_HEIGHT / 2, (GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXInitTexObjLOD(mDoGph_gInf_c::getFrameBufferTexObj(), GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1);
GXLoadTexObj(mDoGph_gInf_c::getFrameBufferTexObj(), GX_TEXMAP0);
GXSetNumChans(0);
diff --git a/src/d/d_file_select.cpp b/src/d/d_file_select.cpp
index 38f92626bd..2a523c5e5f 100644
--- a/src/d/d_file_select.cpp
+++ b/src/d/d_file_select.cpp
@@ -2585,7 +2585,7 @@ void dFile_select_c::screenSet() {
black.a = 0;
white.a = 0xff;
ResTIMG* uVar20 = (ResTIMG*)dComIfGp_getMain2DArchive()->getResource('TIMG', "tt_block8x8.bti");
- field_0x2378 = new J2DPicture('PICT01', JGeometry::TBox2<f32>(0.0f, 608.0f, 0.0f, 448.0f), uVar20, NULL);
+ field_0x2378 = new J2DPicture('PICT01', JGeometry::TBox2<f32>(0.0f, FB_WIDTH, 0.0f, FB_HEIGHT), uVar20, NULL);
field_0x2378->setBlackWhite(black, white);
field_0x2378->setAlpha(0);
}
diff --git a/src/d/d_gameover.cpp b/src/d/d_gameover.cpp
index eefe7bfd6d..9a79e2c12f 100644
--- a/src/d/d_gameover.cpp
+++ b/src/d/d_gameover.cpp
@@ -42,11 +42,11 @@ void dDlst_Gameover_CAPTURE_c::draw() {
GXTexObj tex_obj;
Mtx44 m;
- GXSetTexCopySrc(0, 0, 608, 448);
- GXSetTexCopyDst(304, 224, GX_TF_RGB565, 1);
+ GXSetTexCopySrc(0, 0, FB_WIDTH, FB_HEIGHT);
+ GXSetTexCopyDst(FB_WIDTH / 2, FB_HEIGHT / 2, GX_TF_RGB565, 1);
GXCopyTex(mDoGph_gInf_c::mZbufferTex, 0);
GXPixModeSync();
- GXInitTexObj(&tex_obj, mDoGph_gInf_c::mFrameBufferTex, 304, 224,
+ GXInitTexObj(&tex_obj, mDoGph_gInf_c::mFrameBufferTex, FB_WIDTH / 2, FB_HEIGHT / 2,
(GXTexFmt)mDoGph_gInf_c::mFrameBufferTimg->format, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXInitTexObjLOD(&tex_obj, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE,
GX_ANISO_1);
@@ -469,7 +469,7 @@ void dDlst_GameOverScrnDraw_c::draw() {
img_white.a = 255;
mpBackImg->setBlackWhite(img_black, img_white);
- mpBackImg->draw(0.0f, 0.0f, 608.0f, 448.0f, false, false, false);
+ mpBackImg->draw(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, false, false, false);
} else {
JUtility::TColor img_black;
JUtility::TColor img_white;
@@ -484,12 +484,12 @@ void dDlst_GameOverScrnDraw_c::draw() {
img_white.b = l_HIO.mWhite.b;
img_white.a = l_HIO.mWhite.a;
- mpBackImg->draw(0.0f, 0.0f, 608.0f, 448.0f, false, false, false);
+ mpBackImg->draw(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, false, false, false);
static f32 offset[8] = {-138.0f, -96.0f, -56.0f, -18.0f, 42.0f, 75.0f, 110.0f, 143.0f};
for (int i = 0; i < 8; i++) {
- mpLight->draw(&field_0x10, offset[i] + 304.0f, 224.0f, l_HIO.mScale, l_HIO.mScale,
+ mpLight->draw(&field_0x10, offset[i] + (FB_WIDTH / 2.0f), (FB_HEIGHT / 2), l_HIO.mScale, l_HIO.mScale,
l_HIO.mAlpha, l_HIO.mAnimSpeed, img_black, img_white);
}
}
diff --git a/src/d/d_home_button.cpp b/src/d/d_home_button.cpp
index 782b021696..194f5a3f86 100644
--- a/src/d/d_home_button.cpp
+++ b/src/d/d_home_button.cpp
@@ -26,7 +26,7 @@ void drawCallback(J2DOrthoGraph& param_0, void* param_1) {
if (mDoGph_gInf_c::isWide()) {
MTXOrtho(sp8, 228.0f, -228.0f, -416.0f, 416.0f, 0.0f, 500.0f);
} else {
- MTXOrtho(sp8, 228.0f, -228.0f, -304.0f, 304.0f, 0.0f, 500.0f);
+ MTXOrtho(sp8, 228.0f, -228.0f, -(FB_WIDTH / 2), (FB_WIDTH / 2), 0.0f, 500.0f);
}
GXSetProjection(sp8, GX_ORTHOGRAPHIC);
@@ -179,8 +179,8 @@ int dHomeButton_c::execute() {
// NONMATCHING
void dHomeButton_c::drawCapture(u8 param_0, void (*param_1)(J2DOrthoGraph&, void*), void* param_2) {
if (lbl_8053A725 == 0) {
- GXSetTexCopySrc(0, 0, 640, 456);
- GXSetTexCopyDst(640, 456, (GXTexFmt)mDoGph_gInf_c::m_fullFrameBufferTimg->format, GX_FALSE);
+ GXSetTexCopySrc(0, 0, FB_WIDTH, FB_HEIGHT);
+ GXSetTexCopyDst(FB_WIDTH, FB_HEIGHT, (GXTexFmt)mDoGph_gInf_c::m_fullFrameBufferTimg->format, GX_FALSE);
GXCopyTex(mDoGph_gInf_c::m_fullFrameBufferTex, GX_FALSE);
lbl_8053A725 = 1;
}
@@ -190,7 +190,7 @@ void dHomeButton_c::drawCapture(u8 param_0, void (*param_1)(J2DOrthoGraph&, void
GXSetAlphaUpdate(GX_DISABLE);
j3dSys.drawInit();
- J2DOrthoGraph sp30(0.0f, 0.0f, 640.0f, 456.0f, -1.0f, 1.0f);
+ J2DOrthoGraph sp30(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, -1.0f, 1.0f);
sp30.setOrtho(JGeometry::TBox2<f32>(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMinYF(),
mDoGph_gInf_c::getMinXF() + mDoGph_gInf_c::getWidthF(),
mDoGph_gInf_c::getMinYF() + mDoGph_gInf_c::getHeightF()),
diff --git a/src/d/d_insect.cpp b/src/d/d_insect.cpp
index 6bbaf990e3..c41ede21fd 100644
--- a/src/d/d_insect.cpp
+++ b/src/d/d_insect.cpp
@@ -113,8 +113,8 @@ void dInsect_c::CalcZBuffer(f32 param_0) {
camera_trim_height = 0.0f;
}
- if (pos_projected.x > 0.0f && pos_projected.x < 608.0f &&
- pos_projected.y > camera_trim_height && pos_projected.y < 448.0f - camera_trim_height)
+ if (pos_projected.x > 0.0f && pos_projected.x < FB_WIDTH &&
+ pos_projected.y > camera_trim_height && pos_projected.y < FB_HEIGHT - camera_trim_height)
{
dComIfGd_peekZ(pos_projected.x, pos_projected.y, &field_0x578);
} else {
diff --git a/src/d/d_kankyo.cpp b/src/d/d_kankyo.cpp
index 0b178c4342..b5c1818138 100644
--- a/src/d/d_kankyo.cpp
+++ b/src/d/d_kankyo.cpp
@@ -8493,7 +8493,7 @@ void dKy_depth_dist_set(void* process_p) {
if (var_f31 < 2000.0f && var_f31 < kankyo->field_0x1268) {
mDoLib_project(&actor_p->eyePos, &sp30);
- if ((sp30.x >= 0.0f && sp30.x < 608.0f) && (sp30.y >= 0.0f && sp30.y < 600.0f)) {
+ if ((sp30.x >= 0.0f && sp30.x < FB_WIDTH) && (sp30.y >= 0.0f && sp30.y < 600.0f)) {
cXyz sp18;
cXyz spC;
dKyr_get_vectle_calc(&camera_p->lookat.eye, &camera_p->lookat.center, &sp18);
diff --git a/src/d/d_kankyo_debug.cpp b/src/d/d_kankyo_debug.cpp
index 4bc97a4cb7..f7380be066 100644
--- a/src/d/d_kankyo_debug.cpp
+++ b/src/d/d_kankyo_debug.cpp
@@ -917,17 +917,17 @@ void dKydb_dungeonlight_draw() {
proj.x -= 30.0f;
}
- if (proj.x < 0.0f || proj.x > 640.0f || proj.y < 0.0f || proj.y > 456.0f) {
+ if (proj.x < 0.0f || proj.x > FB_WIDTH || proj.y < 0.0f || proj.y > FB_HEIGHT) {
if (proj.x < 0.0f) {
proj.x = 10.0f;
}
- if (proj.x > 640.0f) {
+ if (proj.x > FB_WIDTH) {
proj.x = 560.0f;
}
if (proj.y < 0.0f) {
proj.y = 40.0f;
}
- if (proj.y > 456.0f) {
+ if (proj.y > FB_HEIGHT) {
proj.y = 404.0f;
}
diff --git a/src/d/d_kankyo_rain.cpp b/src/d/d_kankyo_rain.cpp
index 298d782e56..8f2cfcf053 100644
--- a/src/d/d_kankyo_rain.cpp
+++ b/src/d/d_kankyo_rain.cpp
@@ -124,8 +124,8 @@ void dKyr_lenzflare_move() {
cXyz center;
mDoLib_project(lenz_packet->mPositions, &proj);
- center.x = 304.0f;
- center.y = 224.0f;
+ center.x = FB_WIDTH / 2;
+ center.y = FB_HEIGHT / 2;
center.z = 0.0f;
dKyr_get_vectle_calc(&center, &proj, &vect);
@@ -239,7 +239,7 @@ void dKyr_sun_move() {
chkpnt.x -= sun_chkpnt[i][0];
chkpnt.y -= sun_chkpnt[i][1];
- if (chkpnt.x > 0.0f && chkpnt.x < 608.0f && chkpnt.y > border_y && chkpnt.y < 458.0f - border_y) {
+ if (chkpnt.x > 0.0f && chkpnt.x < FB_WIDTH && chkpnt.y > border_y && chkpnt.y < 458.0f - border_y) {
if (sun_packet->field_0x44[i] >= 0xFFFFFF) {
numPointsVisible++;
if (i == 0) {
@@ -271,8 +271,8 @@ void dKyr_sun_move() {
lenz_packet->field_0x90 = 0.0f;
cXyz center;
- center.x = 304.0f;
- center.y = 224.0f;
+ center.x = FB_WIDTH / 2;
+ center.y = FB_HEIGHT / 2;
center.z = 0.0f;
lenz_packet->mDistFalloff = center.abs(proj);
@@ -4438,6 +4438,9 @@ void drawCloudShadow(Mtx drawMtx, u8** tex) {
f32 scale = 0.49f;
C_MTXLightPerspective(sp120, window_cam->fovy, window_cam->aspect, scale, -scale, 0.5f, 0.5f);
+ #if WIDESCREEN_SUPPORT
+ mDoGph_gInf_c::setWideZoomLightProjection(sp120);
+ #endif
cMtx_concat(sp120, j3dSys.getViewMtx(), spF0);
rot += 2.0f;
@@ -4674,7 +4677,7 @@ void drawVrkumo(Mtx drawMtx, GXColor& color, u8** tex) {
if (g_env_light.daytime > 105.0f && g_env_light.daytime < 240.0f && !dComIfGp_event_runCheck() && sun_packet != NULL && sun_packet->mSunAlpha > 0.0f) {
mDoLib_project(&sun_packet->mPos[0], &proj);
- if (proj.x > 0.0f && proj.x < 608.0f && proj.y > spC4 && proj.y < (458.0f - spC4)) {
+ if (proj.x > 0.0f && proj.x < FB_WIDTH && proj.y > spC4 && proj.y < (458.0f - spC4)) {
pass = 0;
}
}
@@ -4940,7 +4943,7 @@ void drawVrkumo(Mtx drawMtx, GXColor& color, u8** tex) {
z = 100.0f;
mDoLib_project(&spF0, &proj);
- if (proj.x > -x && proj.x < (608.0f + x) && proj.y > -y && proj.y < (458.0f + z)) {
+ if (proj.x > -x && proj.x < (FB_WIDTH + x) && proj.y > -y && proj.y < (458.0f + z)) {
break;
}
@@ -4990,7 +4993,7 @@ void drawVrkumo(Mtx drawMtx, GXColor& color, u8** tex) {
z = 100.0f;
mDoLib_project(&spE4, &proj);
- if (proj.x > -x && proj.x < (608.0f + x) && proj.y > -y && proj.y < (458.0f + z)) {
+ if (proj.x > -x && proj.x < (FB_WIDTH + x) && proj.y > -y && proj.y < (458.0f + z)) {
break;
}
@@ -6040,7 +6043,7 @@ static void dKyr_evil_draw2(Mtx drawMtx, u8** tex) {
mDoLib_project(&sp7C, &proj);
- if (!(proj.x > -sp34.x) || !(proj.x < (608.0f + sp34.x)) ||
+ if (!(proj.x > -sp34.x) || !(proj.x < (FB_WIDTH + sp34.x)) ||
!(proj.y > -sp34.y) || !(proj.y < (458.0f + sp34.z)))
{
continue;
@@ -6268,7 +6271,7 @@ void dKyr_evil_draw(Mtx drawMtx, u8** tex) {
mDoLib_project(&spA4, &proj);
- if (!(proj.x > -sp44.x) || !(proj.x < (608.0f + sp44.x)) ||
+ if (!(proj.x > -sp44.x) || !(proj.x < (FB_WIDTH + sp44.x)) ||
!(proj.y > -sp44.y) || !(proj.y < (458.0f + sp44.z)))
{
continue;
diff --git a/src/d/d_menu_collect.cpp b/src/d/d_menu_collect.cpp
index a9743414fa..9d84c4a134 100644
--- a/src/d/d_menu_collect.cpp
+++ b/src/d/d_menu_collect.cpp
@@ -2584,7 +2584,7 @@ f32 dMenu_Collect3D_c::mViewOffsetY = -100.0f;
/* 801B75E8-801B7660 1B1F28 0078+00 0/0 1/1 0/0 .text setupItem3D__17dMenu_Collect3D_cFPA4_f */
void dMenu_Collect3D_c::setupItem3D(Mtx param_0) {
- GXSetViewport(0.0f, mViewOffsetY, 608.0f, 448.0f, 0.0f, 1.0f);
+ GXSetViewport(0.0f, mViewOffsetY, FB_WIDTH, FB_HEIGHT, 0.0f, 1.0f);
mViewOffsetY = -100.0f;
Mtx44 projection;
C_MTXPerspective(projection, 45.0f, mDoGph_gInf_c::getAspect(), 1.0f, 100000.0f);
diff --git a/src/d/d_menu_dmap.cpp b/src/d/d_menu_dmap.cpp
index 8637c14c3a..f70d5d98e4 100644
--- a/src/d/d_menu_dmap.cpp
+++ b/src/d/d_menu_dmap.cpp
@@ -850,14 +850,14 @@ void dMenu_DmapBg_c::draw() {
grafContext->setup2D();
GXGetScissor(&scissor_left, &scissor_top, &scissor_width, &scissor_height);
- grafContext->scissor(field_0xd94, 0.0f, 608.0f, 448.0f);
+ grafContext->scissor(field_0xd94, 0.0f, FB_WIDTH, FB_HEIGHT);
grafContext->setScissor();
mBaseScreen->draw(field_0xd94, field_0xd98, grafContext);
dMenu_Dmap_c::myclass->drawFloorScreenBack(mFloorScreen, field_0xd94, field_0xd98, grafContext);
- f32 dVar21 = mDoGph_gInf_c::getWidthF() / 608.0f;
- f32 dVar16 = mDoGph_gInf_c::getHeightF() / 448.0f;
+ f32 dVar21 = mDoGph_gInf_c::getWidthF() / FB_WIDTH;
+ f32 dVar16 = mDoGph_gInf_c::getHeightF() / FB_HEIGHT;
mMapScreen[0]->draw(field_0xd94, field_0xd98, grafContext);
if (mpBackTexture != NULL) {
diff --git a/src/d/d_menu_fishing.cpp b/src/d/d_menu_fishing.cpp
index 849f2786c0..dc4f8c4dc3 100644
--- a/src/d/d_menu_fishing.cpp
+++ b/src/d/d_menu_fishing.cpp
@@ -121,7 +121,7 @@ void dMenu_Fishing_c::_draw() {
if (mpArchive) {
J2DGrafContext* grafPort = dComIfGp_getCurrentGrafPort();
mpBlackTex->setAlpha(0xff);
- mpBlackTex->draw(0.0f, 0.0f, 608.0f, 448.0f, 0, 0, 0);
+ mpBlackTex->draw(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, 0, 0, 0);
mpScreen->draw(0.0f, 0.0f, grafPort);
mpIconScreen->draw(0.0f, 0.0f, grafPort);
}
diff --git a/src/d/d_menu_fmap.cpp b/src/d/d_menu_fmap.cpp
index cb719c0bec..dfe8c9eba7 100644
--- a/src/d/d_menu_fmap.cpp
+++ b/src/d/d_menu_fmap.cpp
@@ -194,9 +194,9 @@ dMenu_Fmap_c::dMenu_Fmap_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i
mProcess = PROC_REGION_MAP;
strcpy(mMarkedStageName, "");
- if (g_fmapHIO.mpArchive != NULL && g_fmapHIO.mpArchive->isMounted()) {
+ if (g_fmapHIO.mpArcData != NULL && g_fmapHIO.mpArcData->isMounted()) {
mProcess = i_process;
- mpMapArchive = g_fmapHIO.mpArchive;
+ mpMapArchive = g_fmapHIO.mpArcData;
} else {
mpMapArchive = dComIfGp_getFieldMapArchive2();
}
diff --git a/src/d/d_menu_fmap2D.cpp b/src/d/d_menu_fmap2D.cpp
index d73ea252e0..62def86a56 100644
--- a/src/d/d_menu_fmap2D.cpp
+++ b/src/d/d_menu_fmap2D.cpp
@@ -282,7 +282,7 @@ void dMenu_Fmap2DBack_c::draw() {
u32 scissorLeft, scissorTop, scissorWidth, scissorHeight;
GXGetScissor(&scissorLeft, &scissorTop, &scissorWidth, &scissorHeight);
- grafPort->scissor(mTransX, 0.0f, 608.0f, 448.0f);
+ grafPort->scissor(mTransX, 0.0f, FB_WIDTH, FB_HEIGHT);
grafPort->setScissor();
mpBackTex->setBlackWhite(field_0x1208, field_0x120c);
@@ -299,8 +299,8 @@ void dMenu_Fmap2DBack_c::draw() {
Vec vec2 = mpMapArea->getGlobalVtx(&mtx, 3, false, 0);
- f32 width = mDoGph_gInf_c::getWidthF() / 608.0f;
- f32 height = mDoGph_gInf_c::getHeightF() / 448.0f;
+ f32 width = mDoGph_gInf_c::getWidthF() / FB_WIDTH;
+ f32 height = mDoGph_gInf_c::getHeightF() / FB_HEIGHT;
grafPort->scissor(mTransX + ((vec1.x - mDoGph_gInf_c::getMinXF()) / width),
mTransZ + (vec1.y / height), (vec2.x - vec1.x) / width,
@@ -2489,7 +2489,7 @@ void dMenu_Fmap2DTop_c::draw() {
J2DOrthoGraph* ctx = static_cast<J2DOrthoGraph*>(dComIfGp_getCurrentGrafPort());
ctx->setup2D();
GXGetScissor(&scissor_left, &scissor_top, &scissor_width, &scissor_height);
- ctx->scissor(mTransX, 0.0f, 608.0f, 448.0f);
+ ctx->scissor(mTransX, 0.0f, FB_WIDTH, FB_HEIGHT);
ctx->setScissor();
mpTitleScreen->draw(mTransX, mTransY, ctx);
ctx->scissor(scissor_left, scissor_top, scissor_width, scissor_height);
diff --git a/src/d/d_menu_insect.cpp b/src/d/d_menu_insect.cpp
index 2f1d8526d2..531ec43b5d 100644
--- a/src/d/d_menu_insect.cpp
+++ b/src/d/d_menu_insect.cpp
@@ -166,12 +166,12 @@ void dMenu_Insect_c::_draw() {
if (mpArchive != NULL) {
J2DGrafContext* grafPort = dComIfGp_getCurrentGrafPort();
mpBlackTex->setAlpha(0xff);
- mpBlackTex->draw(0.0f, 0.0f, 608.0f, 448.0f, 0, 0, 0);
+ mpBlackTex->draw(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, 0, 0, 0);
mpScreen->draw(0.0f, 0.0f, grafPort);
mpDrawCursor->draw();
field_0xfc = mpExpParent->getAlphaRate() * 150.0f;
mpBlackTex->setAlpha(field_0xfc);
- mpBlackTex->draw(0.0f, 0.0f, 608.0f, 448.0f, 0, 0, 0);
+ mpBlackTex->draw(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, 0, 0, 0);
mpExpScreen->draw(0.0f, 0.0f, grafPort);
mpSelect_c->setOffsetX(g_drawHIO.mInsectListScreen.mConfirmOptionPosX_4x3);
mpSelect_c->translate(g_drawHIO.mInsectListScreen.mConfirmOptionPosX_4x3 + 486.0f,
diff --git a/src/d/d_menu_item_explain.cpp b/src/d/d_menu_item_explain.cpp
index 7dda5b156f..06eb60dd17 100644
--- a/src/d/d_menu_item_explain.cpp
+++ b/src/d/d_menu_item_explain.cpp
@@ -315,7 +315,7 @@ void dMenu_ItemExplain_c::draw(J2DOrthoGraph* i_graph) {
mpLabel->scale(g_ringHIO.mItemDescTitleScale, g_ringHIO.mItemDescTitleScale);
mpLabel->paneTrans(g_ringHIO.mItemDescTitlePosX, g_ringHIO.mItemDescTitlePosY);
if (mpBackTex != NULL) {
- mpBackTex->draw(0.0f, 0.0f, 608.0f, 448.0f, false, false, false);
+ mpBackTex->draw(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, false, false, false);
}
if (field_0xc8 != field_0xd0) {
field_0xd0 = field_0xc8;
diff --git a/src/d/d_menu_letter.cpp b/src/d/d_menu_letter.cpp
index 549107a10d..277570ec79 100644
--- a/src/d/d_menu_letter.cpp
+++ b/src/d/d_menu_letter.cpp
@@ -233,8 +233,8 @@ void dMenu_Letter_c::_draw() {
f32 y1 = local_178.y;
Vec local_184;
local_184 = afStack_138.getGlobalVtx(field_0x1ec, &mtx, 3, false, 0);
- f32 dVar17 = mDoGph_gInf_c::getWidthF() / 608.0f;
- f32 dVar16 = mDoGph_gInf_c::getHeightF() / 448.0f;
+ f32 dVar17 = mDoGph_gInf_c::getWidthF() / FB_WIDTH;
+ f32 dVar16 = mDoGph_gInf_c::getHeightF() / FB_HEIGHT;
f32 fVar1 = (x1 - mDoGph_gInf_c::getMinXF()) / dVar17;
f32 fVar2 = y1 / dVar16;
grafContext->scissor(fVar1, fVar2,
diff --git a/src/d/d_menu_option.cpp b/src/d/d_menu_option.cpp
index 7d2ec85441..3351be53e8 100644
--- a/src/d/d_menu_option.cpp
+++ b/src/d/d_menu_option.cpp
@@ -497,11 +497,11 @@ void dMenu_Option_c::_draw() {
if (mpArchive != NULL) {
J2DGrafContext* ctx = dComIfGp_getCurrentGrafPort();
mpBlackTex->setAlpha(0xff);
- mpBlackTex->draw(0.0f, 0.0f, 608.0f, 448.0f, 0, 0, 0);
+ mpBlackTex->draw(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, 0, 0, 0);
mpBackScreen->draw(0.0f, 0.0f, ctx);
f32 alpha = (f32)g_drawHIO.mOptionScreen.mBackgroundAlpha * (f32)field_0x374;
mpBlackTex->setAlpha(alpha);
- mpBlackTex->draw(0.0f, 0.0f, 608.0f, 448.0f, 0, 0, 0);
+ mpBlackTex->draw(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, 0, 0, 0);
mpScreen->draw(0.0f, 0.0f, ctx);
mpClipScreen->draw(0.0f, 0.0f, ctx);
mpShadowScreen->draw(0.0f, 0.0f, ctx);
diff --git a/src/d/d_menu_skill.cpp b/src/d/d_menu_skill.cpp
index 07f725ac91..ffd17c812b 100644
--- a/src/d/d_menu_skill.cpp
+++ b/src/d/d_menu_skill.cpp
@@ -148,12 +148,12 @@ void dMenu_Skill_c::_draw() {
J2DGrafContext* context = dComIfGp_getCurrentGrafPort();
u8 alpha = mpBlackTex->mAlpha;
mpBlackTex->setAlpha(0xff);
- mpBlackTex->draw(0.0f, 0.0f, 608.0f, 448.0f, 0, 0, 0);
+ mpBlackTex->draw(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, 0, 0, 0);
mpBlackTex->setAlpha(alpha);
mpMenuScreen->draw(mPosX, 0.0f, context);
mpDrawCursor->draw();
if (mProcess == 1 || mProcess == 2 || mProcess == 3) {
- mpBlackTex->draw(0.0f, 0.0f, 608.0f, 448.0f, 0, 0, 0);
+ mpBlackTex->draw(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, 0, 0, 0);
mpLetterScreen->draw(0.0f, 0.0f, context);
if (mStringID != 0) {
mpString->getString(mStringID, (J2DTextBox*)mpTextPane->getPanePtr(), NULL, NULL,
diff --git a/src/d/d_menu_window.cpp b/src/d/d_menu_window.cpp
index b95d54042e..ed974af35f 100644
--- a/src/d/d_menu_window.cpp
+++ b/src/d/d_menu_window.cpp
@@ -32,13 +32,13 @@ public:
if (getDrawFlag() == 1) {
setDrawFlag();
dComIfGp_onPauseFlag();
- GXSetTexCopySrc(0, 0, 608, 448);
- GXSetTexCopyDst(304, 224, (GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_ENABLE);
+ GXSetTexCopySrc(0, 0, FB_WIDTH, FB_HEIGHT);
+ GXSetTexCopyDst(FB_WIDTH / 2, FB_HEIGHT / 2, (GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_ENABLE);
GXCopyTex(mDoGph_gInf_c::getFrameBufferTex(), GX_FALSE);
GXPixModeSync();
} else {
GXTexObj tex;
- GXInitTexObj(&tex, mDoGph_gInf_c::getFrameBufferTex(), 304, 224,
+ GXInitTexObj(&tex, mDoGph_gInf_c::getFrameBufferTex(), FB_WIDTH / 2, FB_HEIGHT / 2,
(GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXInitTexObjLOD(&tex, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1);
GXLoadTexObj(&tex, GX_TEXMAP0);
diff --git a/src/d/d_meter_HIO.cpp b/src/d/d_meter_HIO.cpp
index f83e93c17c..79d8ed4081 100644
--- a/src/d/d_meter_HIO.cpp
+++ b/src/d/d_meter_HIO.cpp
@@ -1,12 +1,6 @@
-//
-// Generated By: dol2asm
-// Translation Unit: d/d_meter_HIO
-//
-
#include "d/dolzel.h" // IWYU pragma: keep
#include "d/d_meter_HIO.h"
-#include "d/d_save.h"
#include "JSystem/JKernel/JKRAramArchive.h"
#include "JSystem/JKernel/JKRExpHeap.h"
#include "m_Do/m_Do_ext.h"
@@ -16,6 +10,12 @@ dMeter_menuHIO_c::dMeter_menuHIO_c() {
mGameover = 70;
}
+#if DEBUG
+void dMeter_menuHIO_c::genMessage(JORMContext* mctx) {
+ // NONMATCHING
+}
+#endif
+
/* 801FE348-801FE4EC 1F8C88 01A4+00 1/1 0/0 0/0 .text __ct__23dMeter_drawCollectHIO_cFv
*/
dMeter_drawCollectHIO_c::dMeter_drawCollectHIO_c() {
@@ -58,6 +58,12 @@ dMeter_drawCollectHIO_c::dMeter_drawCollectHIO_c() {
mVesselFront[VESSEL_DECOR].set(200, 190, 100, 175);
}
+#if DEBUG
+void dMeter_drawCollectHIO_c::genMessage(JORMContext* mctx) {
+ // NONMATCHING
+}
+#endif
+
/* 801FE4EC-801FE5CC 1F8E2C 00E0+00 1/1 0/0 0/0 .text __ct__22dMeter_drawOptionHIO_cFv */
dMeter_drawOptionHIO_c::dMeter_drawOptionHIO_c() {
mBarScale[0] = 1.02f;
@@ -88,6 +94,12 @@ dMeter_drawOptionHIO_c::dMeter_drawOptionHIO_c() {
mArrowOffsetX_4x3 = 4.0f;
}
+#if DEBUG
+void dMeter_drawOptionHIO_c::genMessage(JORMContext* mctx) {
+ // NONMATCHING
+}
+#endif
+
/* 801FE5CC-801FE730 1F8F0C 0164+00 1/1 0/0 0/0 .text __ct__22dMeter_drawLetterHIO_cFv */
dMeter_drawLetterHIO_c::dMeter_drawLetterHIO_c() {
for (int i = 0; i < 2; i++) {
@@ -126,6 +138,12 @@ dMeter_drawLetterHIO_c::dMeter_drawLetterHIO_c() {
mLetterTextFront.set(65, 55, 30, 255);
}
+#if DEBUG
+void dMeter_drawLetterHIO_c::genMessage(JORMContext* mctx) {
+ // NONMATCHING
+}
+#endif
+
/* 801FE730-801FE8DC 1F9070 01AC+00 1/1 0/0 0/0 .text __ct__23dMeter_drawFishingHIO_cFv
*/
dMeter_drawFishingHIO_c::dMeter_drawFishingHIO_c() {
@@ -133,10 +151,27 @@ dMeter_drawFishingHIO_c::dMeter_drawFishingHIO_c() {
static f32 const fipaPosX[6] = {1.3f, 6.6f, 0.0f, 3.96f, 4.0f, 27.5f};
static f32 const fipaPosY[6] = {-9.2f, -27.5f, -11.7f, -9.2f, -30.1f, -17.9f};
static f32 const finaScale[6] = {0.9f, 0.9f, 0.9f, 0.9f, 0.9f, 0.9f};
+
+#if PLATFORM_SHIELD
+ static f32 const finaPosX[6] = {0.0f, -4.0f, 0.0f, 0.0f, 0.0f, -4.0f};
+#else
static f32 const finaPosX[6] = {-25.0f, -4.0f, 0.0f, 0.0f, 0.0f, -4.0f};
+#endif
+
+#if PLATFORM_SHIELD
+ static f32 const finaPosY[6] = {-14.4f, -40.6, -24.0f, -11.7f, -37.9f, -13.0f};
+#else
static f32 const finaPosY[6] = {-16.0f, -40.6, -24.0f, -11.7f, -37.9f, -13.0f};
+#endif
+
static f32 const filiScale[6] = {0.65f, 0.65f, 0.65f, 0.65f, 0.65f, 0.65f};
+
+#if PLATFORM_SHIELD
+ static f32 const filiPosX[6] = {0.0f, -8.0f, 9.2f, 9.2f, 9.2f, -8.0f};
+#else
static f32 const filiPosX[6] = {-28.0f, -8.0f, 9.2f, 9.2f, 9.2f, -8.0f};
+#endif
+
static f32 const filiPosY[6] = {-6.6f, -14.0f, -14.4f, 24.9f, -11.7f, 24.9f};
static f32 const bboxScale[6] = {1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f};
static f32 const bboxPosX[6] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
@@ -145,18 +180,22 @@ dMeter_drawFishingHIO_c::dMeter_drawFishingHIO_c() {
static f32 const rboxPosX[6] = {1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
static f32 const rboxPosY[6] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
static f32 const finfoScale[6] = {0.87f, 0.87f, 0.88f, 0.87f, 0.87f, 0.87f};
+
#if VERSION == VERSION_GCN_JPN
static f32 const finfoPosX[6] = {-27.0f, 0.0f, -12.0f, 0.0f, -12.0f, -32.8f};
#else
static f32 const finfoPosX[6] = {-17.0f, 0.0f, -14.0f, 0.0f, -12.0f, -32.8f};
#endif
+
static f32 const finfoPosY[6] = {6.6f, 0.0f, 0.0f, 0.0f, 1.3f, 0.0f};
static f32 const fishnScale[6] = {1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f};
+
#if VERSION == VERSION_GCN_JPN
static f32 const fishnPosX[6] = {12.0f, -20.0f, 1.3f, 6.6f, 14.0f, -6.6f};
#else
static f32 const fishnPosX[6] = {4.0f, -20.0f, 1.3f, 6.6f, 1.3f, 9.2f};
#endif
+
static f32 const fishnPosY[6] = {-72.1f, 129.6f, 0.0f, 6.6f, 32.8f, 11.7f};
mOpenFrames = 10;
@@ -198,6 +237,12 @@ dMeter_drawFishingHIO_c::dMeter_drawFishingHIO_c() {
mCaughtNumPosX_4x3 = -188.0f;
}
+#if DEBUG
+void dMeter_drawFishingHIO_c::genMessage(JORMContext* mctx) {
+ // NONMATCHING
+}
+#endif
+
/* 801FE8DC-801FE954 1F921C 0078+00 1/1 0/0 0/0 .text __ct__22dMeter_drawInsectHIO_cFv */
dMeter_drawInsectHIO_c::dMeter_drawInsectHIO_c() {
mOpenFrame = 10;
@@ -225,6 +270,12 @@ dMeter_drawInsectHIO_c::dMeter_drawInsectHIO_c() {
mConfirmOptionPosY = 119.0f;
}
+#if DEBUG
+void dMeter_drawInsectHIO_c::genMessage(JORMContext* mctx) {
+ // NONMATCHING
+}
+#endif
+
/* 801FE954-801FE990 1F9294 003C+00 1/1 0/0 0/0 .text __ct__27dMeter_drawCalibrationHIO_cFv */
dMeter_drawCalibrationHIO_c::dMeter_drawCalibrationHIO_c() {
mOpenFrames = 10;
@@ -235,6 +286,12 @@ dMeter_drawCalibrationHIO_c::dMeter_drawCalibrationHIO_c() {
mCircleScale2 = 0.75f;
}
+#if DEBUG
+void dMeter_drawCalibrationHIO_c::genMessage(JORMContext* mctx) {
+ // NONMATCHING
+}
+#endif
+
/* 801FE990-801FEAF0 1F92D0 0160+00 1/1 0/0 0/0 .text __ct__21dMeter_drawSkillHIO_cFv */
dMeter_drawSkillHIO_c::dMeter_drawSkillHIO_c() {
for (int i = 0; i < 2; i++) {
@@ -271,21 +328,60 @@ dMeter_drawSkillHIO_c::dMeter_drawSkillHIO_c() {
mSkillTitleScale = 1.1f;
}
+#if DEBUG
+void dMeter_drawSkillHIO_c::genMessage(JORMContext* mctx) {
+ // NONMATCHING
+}
+#endif
+
/* 801FEAF0-801FEFF0 1F9430 0500+00 1/1 0/0 0/0 .text __ct__25dMeter_drawEmpButtonHIO_cFv
*/
dMeter_drawEmpButtonHIO_c::dMeter_drawEmpButtonHIO_c() {
mPikariScale = 2.5f;
- mPikariFrontInner.set(255, 255, 255, 185);
- mPikariFrontOuter.set(0, 155, 0, 0);
- mPikariBackInner.set(255, 255, 255, 87);
- mPikariBackOuter.set(0, 115, 0, 0);
- mPikariAnimSpeed = 0.772705f;
+ mPikariFrontInner.r = 255;
+ mPikariFrontInner.g = 255;
+ mPikariFrontInner.b = 255;
+ mPikariFrontInner.a = 185;
+
+ mPikariFrontOuter.r = 0;
+ mPikariFrontOuter.g = 155;
+ mPikariFrontOuter.b = 0;
+ mPikariFrontOuter.a = 0;
+
+ mPikariBackInner.r = 255;
+ mPikariBackInner.g = 255;
+ mPikariBackInner.b = 255;
+ mPikariBackInner.a = 87;
+
+ mPikariBackOuter.r = 0;
+ mPikariBackOuter.g = 115;
+ mPikariBackOuter.b = 0;
+ mPikariBackOuter.a = 0;
+
+ mPikariAnimSpeed = 0.772705f;
mPikariFastScale = 3.0f;
- mPikariFastFrontInner.set(255, 255, 255, 255);
- mPikariFastFrontOuter.set(220, 220, 215, 0);
- mPikariFastBackInner.set(255, 255, 190, 255);
- mPikariFastBackOuter.set(200, 200, 210, 0);
+
+ mPikariFastFrontInner.r = 255;
+ mPikariFastFrontInner.g = 255;
+ mPikariFastFrontInner.b = 255;
+ mPikariFastFrontInner.a = 255;
+
+ mPikariFastFrontOuter.r = 220;
+ mPikariFastFrontOuter.g = 220;
+ mPikariFastFrontOuter.b = 215;
+ mPikariFastFrontOuter.a = 0;
+
+ mPikariFastBackInner.r = 255;
+ mPikariFastBackInner.g = 255;
+ mPikariFastBackInner.b = 190;
+ mPikariFastBackInner.a = 255;
+
+ mPikariFastBackOuter.r = 200;
+ mPikariFastBackOuter.g = 200;
+ mPikariFastBackOuter.b = 210;
+ mPikariFastBackOuter.a = 0;
+
mPikariFastAnimSpeed = 2.0f;
mPikariListenScale = 1.0f;
@@ -308,7 +404,12 @@ dMeter_drawEmpButtonHIO_c::dMeter_drawEmpButtonHIO_c() {
mDebugDisplayButton[0] = 0;
}
+ #if PLATFORM_SHIELD
+ mDisplaySpace = 70.0f;
+ #else
mDisplaySpace = 35.0f;
+ #endif
+
mEmpButtonPosX = 0.0f;
mEmpButtonPosY = 175.0f;
mEmpButtonScale = 1.0f;
@@ -405,12 +506,9 @@ dMeter_drawEmpButtonHIO_c::dMeter_drawEmpButtonHIO_c() {
mViewChangePosY = 67.0f;
mViewChangeScale = 1.0f;
- mText2PosX = 2.0f;
- mText1PosX = 2.0f;
- mText2PosY = 3.0f;
- mText1PosY = 3.0f;
- mText2Scale = 1.0f;
- mText1Scale = 1.0f;
+ mText1PosX = mText2PosX = 2.0f;
+ mText1PosY = mText2PosY = 3.0f;
+ mText1Scale = mText2Scale = 1.0f;
mItemPosX = 12.0f;
mItemPosY = 0.0f;
@@ -435,11 +533,9 @@ dMeter_drawEmpButtonHIO_c::dMeter_drawEmpButtonHIO_c() {
mHawkeyeZoomPosY = 25.0f;
mHawkeyeZoomScale = 0.8f;
mHawkeyeZoomScale_4x3 = 0.9f;
- // fake match, fix later
for (int i = 0; i < 3; i++) {
- int* tmp = (int*)this + i;
- *(f32*)(tmp + 0x62) = 0.0f;
- *(f32*)(tmp + 0x6B) = 1.0f;
+ mHawkeyeIconPosX[i] = 0.0f;
+ mHawkeyeIconScale[i] = 1.0f;
}
mHawkeyeTextIconPosY = -6.0f;
mHawkeyeZoomTextPosY = -8.0f;
@@ -460,6 +556,12 @@ dMeter_drawEmpButtonHIO_c::dMeter_drawEmpButtonHIO_c() {
mPointerONAnimFrame = 30;
}
+#if DEBUG
+void dMeter_drawEmpButtonHIO_c::genMessage(JORMContext* mctx) {
+ // NONMATCHING
+}
+#endif
+
/* 801FEFF0-801FF31C 1F9930 032C+00 1/1 0/0 0/0 .text __ct__24dMeter_drawMiniGameHIO_cFv
*/
dMeter_drawMiniGameHIO_c::dMeter_drawMiniGameHIO_c() {
@@ -550,19 +652,53 @@ dMeter_drawMiniGameHIO_c::dMeter_drawMiniGameHIO_c() {
mGetInTextAlphaFrames = 10;
mGetInPikariAppearFrames = 30;
mGetInPikariScale = 1.8f;
- mGetInPikariFrontInner.set(255, 255, 167, 80);
- mGetInPikariFrontOuter.set(220, 110, 30, 0);
- mGetInPikariBackInner.set(255, 255, 190, 90);
- mGetInPikariBackOuter.set(170, 110, 0, 0);
+
+ mGetInPikariFrontInner.r = 255;
+ mGetInPikariFrontInner.g = 255;
+ mGetInPikariFrontInner.b = 167;
+ mGetInPikariFrontInner.a = 80;
+
+ mGetInPikariFrontOuter.r = 220;
+ mGetInPikariFrontOuter.g = 110;
+ mGetInPikariFrontOuter.b = 30;
+ mGetInPikariFrontOuter.a = 0;
+
+ mGetInPikariBackInner.r = 255;
+ mGetInPikariBackInner.g = 255;
+ mGetInPikariBackInner.b = 190;
+ mGetInPikariBackInner.a = 90;
+
+ mGetInPikariBackOuter.r = 170;
+ mGetInPikariBackOuter.g = 110;
+ mGetInPikariBackOuter.b = 0;
+ mGetInPikariBackOuter.a = 0;
+
mGetInPikariAnimSpeed = 0.6f;
mGetInTextLocation = 0;
mStartPikariAppearFrames = 30;
mStartPikariScale = 1.8f;
- mStartPikariFrontInner.set(255, 255, 167, 80);
- mStartPikariFrontOuter.set(220, 110, 30, 0);
- mStartPikariBackInner.set(255, 255, 190, 90);
- mStartPikariBackOuter.set(170, 110, 0, 0);
+
+ mStartPikariFrontInner.r = 255;
+ mStartPikariFrontInner.g = 255;
+ mStartPikariFrontInner.b = 167;
+ mStartPikariFrontInner.a = 80;
+
+ mStartPikariFrontOuter.r = 220;
+ mStartPikariFrontOuter.g = 110;
+ mStartPikariFrontOuter.b = 30;
+ mStartPikariFrontOuter.a = 0;
+
+ mStartPikariBackInner.r = 255;
+ mStartPikariBackInner.g = 255;
+ mStartPikariBackInner.b = 190;
+ mStartPikariBackInner.a = 90;
+
+ mStartPikariBackOuter.r = 170;
+ mStartPikariBackOuter.g = 110;
+ mStartPikariBackOuter.b = 0;
+ mStartPikariBackOuter.a = 0;
+
mStartPikariAnimSpeed = 0.6f;
mStartPikariDisplayFrames = 30;
@@ -575,13 +711,36 @@ dMeter_drawMiniGameHIO_c::dMeter_drawMiniGameHIO_c() {
field_0x172 = 10;
mReadyFightPikariAppearFrames = 30;
mReadyFightPikariScale = 1.8f;
- mReadyFightPikariFrontInner.set(255, 255, 167, 80);
- mReadyFightPikariFrontOuter.set(220, 110, 30, 0);
- mReadyFightPikariBackInner.set(255, 255, 190, 90);
- mReadyFightPikariBackOuter.set(170, 110, 0, 0);
+
+ mReadyFightPikariFrontInner.r = 255;
+ mReadyFightPikariFrontInner.g = 255;
+ mReadyFightPikariFrontInner.b = 167;
+ mReadyFightPikariFrontInner.a = 80;
+
+ mReadyFightPikariFrontOuter.r = 220;
+ mReadyFightPikariFrontOuter.g = 110;
+ mReadyFightPikariFrontOuter.b = 30;
+ mReadyFightPikariFrontOuter.a = 0;
+
+ mReadyFightPikariBackInner.r = 255;
+ mReadyFightPikariBackInner.g = 255;
+ mReadyFightPikariBackInner.b = 190;
+ mReadyFightPikariBackInner.a = 90;
+
+ mReadyFightPikariBackOuter.r = 170;
+ mReadyFightPikariBackOuter.g = 110;
+ mReadyFightPikariBackOuter.b = 0;
+ mReadyFightPikariBackOuter.a = 0;
+
mReadyFightPikariAnimSpeed = 0.6f;
}
+#if DEBUG
+void dMeter_drawMiniGameHIO_c::genMessage(JORMContext* mctx) {
+ // NONMATCHING
+}
+#endif
+
/* 801FF31C-801FF5B8 1F9C5C 029C+00 1/1 0/0 0/0 .text __ct__25dMeter_drawLightDropHIO_cFv
*/
dMeter_drawLightDropHIO_c::dMeter_drawLightDropHIO_c() {
@@ -624,10 +783,26 @@ dMeter_drawLightDropHIO_c::dMeter_drawLightDropHIO_c() {
mPikariLoopBackOuter[1].set(126, 238, 218, 0);
mPikariLoopBackStopFrame = 19.0f;
- mDropPikariFrontInner.set(255, 255, 255, 255);
- mDropPikariFrontOuter.set(0, 0, 0, 0);
- mDropPikariBackInner.set(255, 255, 255, 255);
- mDropPikariBackOuter.set(126, 238, 218, 0);
+ mDropPikariFrontInner.r = 255;
+ mDropPikariFrontInner.g = 255;
+ mDropPikariFrontInner.b = 255;
+ mDropPikariFrontInner.a = 255;
+
+ mDropPikariFrontOuter.r = 0;
+ mDropPikariFrontOuter.g = 0;
+ mDropPikariFrontOuter.b = 0;
+ mDropPikariFrontOuter.a = 0;
+
+ mDropPikariBackInner.r = 255;
+ mDropPikariBackInner.g = 255;
+ mDropPikariBackInner.b = 255;
+ mDropPikariBackInner.a = 255;
+
+ mDropPikariBackOuter.r = 126;
+ mDropPikariBackOuter.g = 238;
+ mDropPikariBackOuter.b = 218;
+ mDropPikariBackOuter.a = 0;
+
mDropPikariAnimSpeed = 0.1f;
mDropPikariAnimSpeed_Completed = 0.6f;
mPikariScaleNormal = 1.3f;
@@ -635,6 +810,12 @@ dMeter_drawLightDropHIO_c::dMeter_drawLightDropHIO_c() {
mAnimDebug = 0;
}
+#if DEBUG
+void dMeter_drawLightDropHIO_c::genMessage(JORMContext* mctx) {
+ // NONMATCHING
+}
+#endif
+
/* 801FF5B8-802001AC 1F9EF8 0BF4+00 1/1 0/0 0/0 .text __ct__16dMeter_drawHIO_cFv */
dMeter_drawHIO_c::dMeter_drawHIO_c() {
#ifdef DEBUG
@@ -880,27 +1061,42 @@ dMeter_drawHIO_c::dMeter_drawHIO_c() {
mButtonATextScale = 1.0f;
mButtonATextPosX = 0.0f;
mButtonATextPosY = 0.0f;
- mButtonATextColor.set(255, 255, 255, 255);
+ mButtonATextColor.r = 255;
+ mButtonATextColor.g = 255;
+ mButtonATextColor.b = 255;
+ mButtonATextColor.a = 255;
mButtonBFontScale = 1.0f;
mButtonBFontPosX = -8.0f;
mButtonBFontPosY = 4.0f;
- mButtonBFontColor.set(255, 255, 255, 255);
+ mButtonBFontColor.r = 255;
+ mButtonBFontColor.g = 255;
+ mButtonBFontColor.b = 255;
+ mButtonBFontColor.a = 255;
field_0x2e4 = 1.0f;
field_0x2e8 = 0.0f;
field_0x2ec = 0.0f;
- field_0x2f0.set(255, 255, 255, 255);
+ field_0x2f0.r = 255;
+ field_0x2f0.g = 255;
+ field_0x2f0.b = 255;
+ field_0x2f0.a = 255;
mButtonXYTextScale = 1.0f;
mButtonXYTextPosX = 0.0f;
mButtonXYTextPosY = 0.0f;
- mButtonXYTextColor.set(255, 255, 255, 255);
+ mButtonXYTextColor.r = 255;
+ mButtonXYTextColor.g = 255;
+ mButtonXYTextColor.b = 255;
+ mButtonXYTextColor.a = 255;
mButtonZFontScale = 1.0f;
mButtonZFontPosX = 0.0f;
mButtonZFontPosY = -4.7f;
- mButtonZFontColor.set(255, 255, 255, 255);
+ mButtonZFontColor.r = 255;
+ mButtonZFontColor.g = 255;
+ mButtonZFontColor.b = 255;
+ mButtonZFontColor.a = 255;
mRupeeKeyScale = 1.0f;
mRupeeKeyPosX = 9.2f;
@@ -980,66 +1176,226 @@ dMeter_drawHIO_c::dMeter_drawHIO_c() {
mMaxSpurAmount = 6;
- mSpurIconPikariFrontInner.set(255, 255, 255, 255);
- mSpurIconPikariFrontOuter.set(140, 232, 228, 0);
- mSpurIconPikariBackInner.set(255, 255, 190, 255);
- mSpurIconPikariBackOuter.set(55, 215, 90, 0);
+ mSpurIconPikariFrontInner.r = 255;
+ mSpurIconPikariFrontInner.g = 255;
+ mSpurIconPikariFrontInner.b = 255;
+ mSpurIconPikariFrontInner.a = 255;
+
+ mSpurIconPikariFrontOuter.r = 140;
+ mSpurIconPikariFrontOuter.g = 232;
+ mSpurIconPikariFrontOuter.b = 228;
+ mSpurIconPikariFrontOuter.a = 0;
+
+ mSpurIconPikariBackInner.r = 255;
+ mSpurIconPikariBackInner.g = 255;
+ mSpurIconPikariBackInner.b = 190;
+ mSpurIconPikariBackInner.a = 255;
+
+ mSpurIconPikariBackOuter.r = 55;
+ mSpurIconPikariBackOuter.g = 215;
+ mSpurIconPikariBackOuter.b = 90;
+ mSpurIconPikariBackOuter.a = 0;
+
mSpurIconPikariAnimSpeed = 1.5f;
- mSpurIconRevivePikariFrontInner.set(255, 255, 255, 255);
- mSpurIconRevivePikariFrontOuter.set(220, 110, 30, 0);
- mSpurIconRevivePikariBackInner.set(255, 255, 190, 255);
- mSpurIconRevivePikariBackOuter.set(170, 110, 0, 0);
+ mSpurIconRevivePikariFrontInner.r = 255;
+ mSpurIconRevivePikariFrontInner.g = 255;
+ mSpurIconRevivePikariFrontInner.b = 255;
+ mSpurIconRevivePikariFrontInner.a = 255;
+
+ mSpurIconRevivePikariFrontOuter.r = 220;
+ mSpurIconRevivePikariFrontOuter.g = 110;
+ mSpurIconRevivePikariFrontOuter.b = 30;
+ mSpurIconRevivePikariFrontOuter.a = 0;
+
+ mSpurIconRevivePikariBackInner.r = 255;
+ mSpurIconRevivePikariBackInner.g = 255;
+ mSpurIconRevivePikariBackInner.b = 190;
+ mSpurIconRevivePikariBackInner.a = 255;
+
+ mSpurIconRevivePikariBackOuter.r = 170;
+ mSpurIconRevivePikariBackOuter.g = 110;
+ mSpurIconRevivePikariBackOuter.b = 0;
+ mSpurIconRevivePikariBackOuter.a = 0;
+
mSpurIconRevivePikariAnimSpeed = 0.5f;
- mButtonZPikariFrontInner.set(255, 255, 255, 255);
- mButtonZPikariFrontOuter.set(0, 0, 0, 0);
- mButtonZPikariBackInner.set(255, 255, 255, 255);
- mButtonZPikariBackOuter.set(160, 160, 110, 0);
+ mButtonZPikariFrontInner.r = 255;
+ mButtonZPikariFrontInner.g = 255;
+ mButtonZPikariFrontInner.b = 255;
+ mButtonZPikariFrontInner.a = 255;
+
+ mButtonZPikariFrontOuter.r = 0;
+ mButtonZPikariFrontOuter.g = 0;
+ mButtonZPikariFrontOuter.b = 0;
+ mButtonZPikariFrontOuter.a = 0;
+
+ mButtonZPikariBackInner.r = 255;
+ mButtonZPikariBackInner.g = 255;
+ mButtonZPikariBackInner.b = 255;
+ mButtonZPikariBackInner.a = 255;
+
+ mButtonZPikariBackOuter.r = 160;
+ mButtonZPikariBackOuter.g = 160;
+ mButtonZPikariBackOuter.b = 110;
+ mButtonZPikariBackOuter.a = 0;
+
mButtonZPikariAnimSpeed = 0.4f;
- mButtonXYPikariFrontInner.set(255, 255, 255, 255);
- mButtonXYPikariFrontOuter.set(0, 0, 0, 0);
- mButtonXYPikariBackInner.set(255, 255, 255, 255);
- mButtonXYPikariBackOuter.set(160, 160, 110, 0);
+ mButtonXYPikariFrontInner.r = 255;
+ mButtonXYPikariFrontInner.g = 255;
+ mButtonXYPikariFrontInner.b = 255;
+ mButtonXYPikariFrontInner.a = 255;
+
+ mButtonXYPikariFrontOuter.r = 0;
+ mButtonXYPikariFrontOuter.g = 0;
+ mButtonXYPikariFrontOuter.b = 0;
+ mButtonXYPikariFrontOuter.a = 0;
+
+ mButtonXYPikariBackInner.r = 255;
+ mButtonXYPikariBackInner.g = 255;
+ mButtonXYPikariBackInner.b = 255;
+ mButtonXYPikariBackInner.a = 255;
+
+ mButtonXYPikariBackOuter.r = 160;
+ mButtonXYPikariBackOuter.g = 160;
+ mButtonXYPikariBackOuter.b = 110;
+ mButtonXYPikariBackOuter.a = 0;
+
mButtonXYPikariAnimSpeed = 0.4f;
- mButtonAPikariFrontInner.set(255, 255, 255, 160);
- mButtonAPikariFrontOuter.set(0, 0, 0, 0);
- mButtonAPikariBackInner.set(255, 255, 255, 128);
- mButtonAPikariBackOuter.set(0, 255, 0, 0);
+ mButtonAPikariFrontInner.r = 255;
+ mButtonAPikariFrontInner.g = 255;
+ mButtonAPikariFrontInner.b = 255;
+ mButtonAPikariFrontInner.a = 160;
+
+ mButtonAPikariFrontOuter.r = 0;
+ mButtonAPikariFrontOuter.g = 0;
+ mButtonAPikariFrontOuter.b = 0;
+ mButtonAPikariFrontOuter.a = 0;
+
+ mButtonAPikariBackInner.r = 255;
+ mButtonAPikariBackInner.g = 255;
+ mButtonAPikariBackInner.b = 255;
+ mButtonAPikariBackInner.a = 128;
+
+ mButtonAPikariBackOuter.r = 0;
+ mButtonAPikariBackOuter.g = 255;
+ mButtonAPikariBackOuter.b = 0;
+ mButtonAPikariBackOuter.a = 0;
+
mButtonAPikariAnimSpeed = 0.4f;
- mButtonBPikariFrontInner.set(255, 180, 180, 160);
- mButtonBPikariFrontOuter.set(0, 0, 0, 0);
- mButtonBPikariBackInner.set(255, 255, 255, 128);
- mButtonBPikariBackOuter.set(255, 0, 0, 0);
+ mButtonBPikariFrontInner.r = 255;
+ mButtonBPikariFrontInner.g = 180;
+ mButtonBPikariFrontInner.b = 180;
+ mButtonBPikariFrontInner.a = 160;
+
+ mButtonBPikariFrontOuter.r = 0;
+ mButtonBPikariFrontOuter.g = 0;
+ mButtonBPikariFrontOuter.b = 0;
+ mButtonBPikariFrontOuter.a = 0;
+
+ mButtonBPikariBackInner.r = 255;
+ mButtonBPikariBackInner.g = 255;
+ mButtonBPikariBackInner.b = 255;
+ mButtonBPikariBackInner.a = 128;
+
+ mButtonBPikariBackOuter.r = 255;
+ mButtonBPikariBackOuter.g = 0;
+ mButtonBPikariBackOuter.b = 0;
+ mButtonBPikariBackOuter.a = 0;
+
mButtonBPikariAnimSpeed = 0.4f;
- field_0x4a8.set(255, 180, 180, 160);
- field_0x4ac.set(0, 0, 0, 0);
- field_0x4b0.set(255, 255, 255, 128);
- field_0x4b4.set(255, 0, 0, 0);
+ field_0x4a8.r = 255;
+ field_0x4a8.g = 180;
+ field_0x4a8.b = 180;
+ field_0x4a8.a = 160;
+
+ field_0x4ac.r = 0;
+ field_0x4ac.g = 0;
+ field_0x4ac.b = 0;
+ field_0x4ac.a = 0;
+
+ field_0x4b0.r = 255;
+ field_0x4b0.g = 255;
+ field_0x4b0.b = 255;
+ field_0x4b0.a = 128;
+
+ field_0x4b4.r = 255;
+ field_0x4b4.g = 0;
+ field_0x4b4.b = 0;
+ field_0x4b4.a = 0;
+
field_0x4b8 = 0.4f;
- field_0x4bc.set(255, 180, 180, 160);
- field_0x4c0.set(0, 0, 0, 0);
- field_0x4c4.set(255, 255, 255, 128);
- field_0x4c8.set(255, 255, 255, 0);
+ field_0x4bc.r = 255;
+ field_0x4bc.g = 180;
+ field_0x4bc.b = 180;
+ field_0x4bc.a = 160;
+
+ field_0x4c0.r = 0;
+ field_0x4c0.g = 0;
+ field_0x4c0.b = 0;
+ field_0x4c0.a = 0;
+
+ field_0x4c4.r = 255;
+ field_0x4c4.g = 255;
+ field_0x4c4.b = 255;
+ field_0x4c4.a = 128;
+
+ field_0x4c8.r = 255;
+ field_0x4c8.g = 255;
+ field_0x4c8.b = 255;
+ field_0x4c8.a = 0;
+
field_0x4cc = 0.4f;
field_0x3d0 = 0.7f;
- field_0x4d0.set(255, 180, 180, 160);
- field_0x4d4.set(0, 0, 0, 0);
- field_0x4d8.set(255, 255, 255, 128);
- field_0x4dc.set(255, 255, 255, 0);
+ field_0x4d0.r = 255;
+ field_0x4d0.g = 180;
+ field_0x4d0.b = 180;
+ field_0x4d0.a = 160;
+
+ field_0x4d4.r = 0;
+ field_0x4d4.g = 0;
+ field_0x4d4.b = 0;
+ field_0x4d4.a = 0;
+
+ field_0x4d8.r = 255;
+ field_0x4d8.g = 255;
+ field_0x4d8.b = 255;
+ field_0x4d8.a = 128;
+
+ field_0x4dc.r = 255;
+ field_0x4dc.g = 255;
+ field_0x4dc.b = 255;
+ field_0x4dc.a = 0;
+
field_0x4e0 = 0.4f;
field_0x3d4 = 0.7f;
- mMidnaIconPikariFrontInner.set(200, 235, 255, 255);
- mMidnaIconPikariFrontOuter.set(0, 0, 0, 0);
- mMidnaIconPikariBackInner.set(255, 255, 255, 255);
- mMidnaIconPikariBackOuter.set(140, 200, 125, 0);
+ mMidnaIconPikariFrontInner.r = 200;
+ mMidnaIconPikariFrontInner.g = 235;
+ mMidnaIconPikariFrontInner.b = 255;
+ mMidnaIconPikariFrontInner.a = 255;
+
+ mMidnaIconPikariFrontOuter.r = 0;
+ mMidnaIconPikariFrontOuter.g = 0;
+ mMidnaIconPikariFrontOuter.b = 0;
+ mMidnaIconPikariFrontOuter.a = 0;
+
+ mMidnaIconPikariBackInner.r = 255;
+ mMidnaIconPikariBackInner.g = 255;
+ mMidnaIconPikariBackInner.b = 255;
+ mMidnaIconPikariBackInner.a = 255;
+
+ mMidnaIconPikariBackOuter.r = 140;
+ mMidnaIconPikariBackOuter.g = 200;
+ mMidnaIconPikariBackOuter.b = 125;
+ mMidnaIconPikariBackOuter.a = 0;
+
mMidnaIconPikariAnimSpeed = 0.5f;
mMidnaIconFlashRate = 50;
@@ -1106,6 +1462,22 @@ dMeter_drawHIO_c::dMeter_drawHIO_c() {
mLanternIconMeterSize = 1.0f;
}
+#if WIDESCREEN_SUPPORT
+void dMeter_drawHIO_c::updateOnWide() {}
+
+void dMeter_drawHIO_c::updateOffWide() {}
+#endif
+
+#if DEBUG
+void dMeter_drawHIO_c::genMessage(JORMContext* mctx) {
+ // NONMATCHING
+}
+
+void dMeter_drawHIO_c::updateFMsgDebug() {
+
+}
+#endif
+
/* 802001AC-802004B4 1FAAEC 0308+00 1/1 0/0 0/0 .text __ct__16dMeter_ringHIO_cFv */
dMeter_ringHIO_c::dMeter_ringHIO_c() {
mRingRadiusH = 175.0f;
@@ -1218,6 +1590,18 @@ dMeter_ringHIO_c::dMeter_ringHIO_c() {
mDirectSelectWaitFrames = 4;
}
+#if WIDESCREEN_SUPPORT
+void dMeter_ringHIO_c::updateOnWide() {}
+
+void dMeter_ringHIO_c::updateOffWide() {}
+#endif
+
+#if DEBUG
+void dMeter_ringHIO_c::genMessage(JORMContext* mctx) {
+ // NONMATCHING
+}
+#endif
+
/* 802004B4-802006C8 1FADF4 0214+00 1/1 0/0 0/0 .text __ct__19dMeter_mapIconHIO_cFv */
dMeter_mapIconHIO_c::dMeter_mapIconHIO_c() {
mPortalCursorScale = 0.5f;
@@ -1311,7 +1695,7 @@ dMeter_mapIconHIO_c::dMeter_mapIconHIO_c() {
mLV5DungeonItem = fpcNm_ITEM_NONE;
mIconDebug = false;
- for (int i = 0; i < ARRAY_SIZEU(mIconDisplay); i++) {
+ for (int i = 0; i < ARRAY_SIZE(mIconDisplay); i++) {
mIconDisplay[i] = true;
}
@@ -1326,11 +1710,21 @@ dMeter_mapIconHIO_c::dMeter_mapIconHIO_c() {
mLightDropFlashFrameNum = 10;
}
+#if DEBUG
+void dMeter_mapIconHIO_c::genMessage(JORMContext* mctx) {
+ // NONMATCHING
+}
+#endif
+
/* 802006C8-80200BCC 1FB008 0504+00 1/1 0/0 0/0 .text __ct__16dMeter_fmapHIO_cFv */
dMeter_fmapHIO_c::dMeter_fmapHIO_c() {
- field_0xc = NULL;
- field_0x10 = NULL;
- mpArchive = NULL;
+ mpArcFile = NULL;
+ mpDecompBuf = NULL;
+ mpArcData = NULL;
+
+ #if DEBUG
+ mpEvtCallBack = NULL;
+ #endif
mDisplayFrameNum = 8;
mUndisplayFrameNum = 6;
@@ -1362,17 +1756,18 @@ dMeter_fmapHIO_c::dMeter_fmapHIO_c() {
mScrollSpeedSlowBound = 0.2f;
mScrollSpeedFastBound = 1.0f;
- // fake match
for (int i = 0; i < 8; i++) {
- int* tmp = (int*)this + i;
- *(f32*)(tmp + 0x5B) = 0.0f;
- *(f32*)(tmp + 0x63) = 0.0f;
- *(f32*)(tmp + 0x6B) = 0.0f;
- *(f32*)(tmp + 0x73) = -300000.0f;
- *(f32*)(tmp + 0x7B) = -300000.0f;
- *(f32*)(tmp + 0x83) = 300000.0f;
- *(f32*)(tmp + 0x8B) = 300000.0f;
+ mRegionImagePosX[i] = 0.0f;
+ mRegionImagePosZ[i] = 0.0f;
+ mRegionImageScale[i] = 0.0f;
+
+ mRegionScrollRangeMinX[i] = -300000.0f;
+ mRegionScrollRangeMinZ[i] = -300000.0f;
+
+ mRegionScrollRangeMaxX[i] = 300000.0f;
+ mRegionScrollRangeMaxZ[i] = 300000.0f;
}
+
mScrollRangeDebugON = false;
mScrollRangeDisplay = false;
field_0x308 = true;
@@ -1500,30 +1895,59 @@ dMeter_fmapHIO_c::dMeter_fmapHIO_c() {
mMapBlink[ZOOM_VIEW].field_0x20.set(0, 0, 0, 0);
mMapBlink[ZOOM_VIEW].field_0x24.set(0, 0, 0, 255);
- for (int i = 0; i < ARRAY_SIZEU(mDebugRegionBits); i++) {
+ for (int i = 0; i < ARRAY_SIZE(mDebugRegionBits); i++) {
mDebugRegionBits[i] = 0;
}
}
/* 80200BCC-80200CD4 1FB50C 0108+00 2/1 0/0 0/0 .text __dt__16dMeter_fmapHIO_cFv */
dMeter_fmapHIO_c::~dMeter_fmapHIO_c() {
- if (field_0xc != NULL) {
- mDoExt_getGameHeap()->free(field_0xc);
- field_0xc = NULL;
+ if (mpArcFile != NULL) {
+ mDoExt_getGameHeap()->free(mpArcFile);
+ mpArcFile = NULL;
}
- if (field_0x10 != NULL) {
- mDoExt_getGameHeap()->free(field_0x10);
- field_0x10 = NULL;
+ if (mpDecompBuf != NULL) {
+ mDoExt_getGameHeap()->free(mpDecompBuf);
+ mpDecompBuf = NULL;
}
- if (mpArchive != NULL) {
- mpArchive->unmount();
- delete mpArchive;
- mpArchive = NULL;
+ if (mpArcData != NULL) {
+ JKRUnmountArchive(mpArcData);
+ delete mpArcData;
+ mpArcData = NULL;
}
+
+ #if DEBUG
+ if (mpEvtCallBack != NULL) {
+ delete mpEvtCallBack;
+ mpEvtCallBack = NULL;
+ }
+ #endif
+}
+
+#if DEBUG
+void dMeter_fmapHIO_c::genMessage(JORMContext* mctx) {
+ // NONMATCHING
+}
+
+void dMeter_fmapHIO_c::listenPropertyEvent(const JORPropertyEvent*) {
+
}
+void dMeter_fmapHIO_c::createEvtCallBackObject() {
+
+}
+
+void dMeter_fmapHIO_c::deleteEvtCallBackObject() {
+
+}
+
+void dMeter_fmapHIO_c::update() {
+
+}
+#endif
+
/* 80200CD4-80200D58 1FB614 0084+00 1/1 0/0 0/0 .text __ct__18dMeter_cursorHIO_cFv */
dMeter_cursorHIO_c::dMeter_cursorHIO_c() {
mShopCursorScale = 1.05f;
@@ -1538,6 +1962,12 @@ dMeter_cursorHIO_c::dMeter_cursorHIO_c() {
mMagicArmorObjZoomAngleX = -500;
}
+#if DEBUG
+void dMeter_cursorHIO_c::genMessage(JORMContext* mctx) {
+ // NONMATCHING
+}
+#endif
+
/* 804510B0-804510B8 0005B0 0008+00 1/1 1/1 0/0 .sbss g_menuHIO */
dMeter_menuHIO_c g_menuHIO;
diff --git a/src/d/d_msg_object.cpp b/src/d/d_msg_object.cpp
index 0180a3a703..98cb3cf055 100644
--- a/src/d/d_msg_object.cpp
+++ b/src/d/d_msg_object.cpp
@@ -1510,8 +1510,8 @@ void dMsgObject_c::fukiPosCalc(bool param_1) {
temp = cStack_48.y;
} else {
mDoLib_project(&field_0x100->pos, &local_3c);
- if (local_3c.x >= 0.0f && local_3c.x <= 608.0f && local_3c.y >= 0.0f &&
- local_3c.y <= 448.0f)
+ if (local_3c.x >= 0.0f && local_3c.x <= FB_WIDTH && local_3c.y >= 0.0f &&
+ local_3c.y <= FB_HEIGHT)
{
temp = 0.5f * (cStack_48.y + local_3c.y);
} else {
diff --git a/src/d/d_msg_scrn_howl.cpp b/src/d/d_msg_scrn_howl.cpp
index 7ee409442a..eeb27a5892 100644
--- a/src/d/d_msg_scrn_howl.cpp
+++ b/src/d/d_msg_scrn_howl.cpp
@@ -491,8 +491,8 @@ void dMsgScrnHowl_c::drawWave() {
s32 local_94 = 0;
Vec fVar12 = field_0x128;
Vec this_02 = field_0x140;
- f32 fVar1 = mDoGph_gInf_c::getWidthF() / 608.0f;
- f32 fVar2 = mDoGph_gInf_c::getHeightF() / 448.0f;
+ f32 fVar1 = mDoGph_gInf_c::getWidthF() / FB_WIDTH;
+ f32 fVar2 = mDoGph_gInf_c::getHeightF() / FB_HEIGHT;
grafContext->scissor(
(fVar12.x - mDoGph_gInf_c::getMinXF()) / fVar1 - 16.0f,
(fVar12.y / fVar2) / fVar2 - 16.0f,
@@ -596,8 +596,8 @@ void dMsgScrnHowl_c::drawGuide() {
Vec local_b0 = field_0x128;
Vec local_bc = field_0x140;
grafContext->scissor(
- (local_b0.x - mDoGph_gInf_c::getMinXF()) / (mDoGph_gInf_c::getWidthF() / 608.0f),
- field_0x2118, (local_bc.x - local_b0.x) / (mDoGph_gInf_c::getWidthF() / 608.0f),
+ (local_b0.x - mDoGph_gInf_c::getMinXF()) / (mDoGph_gInf_c::getWidthF() / FB_WIDTH),
+ field_0x2118, (local_bc.x - local_b0.x) / (mDoGph_gInf_c::getWidthF() / FB_WIDTH),
field_0x2120);
grafContext->setScissor();
f32 local_cc = mpLineH[0]->getGlobalPosX();
@@ -727,10 +727,10 @@ void dMsgScrnHowl_c::drawGuide2() {
}
Vec local_58 = field_0x128;
Vec local_64 = field_0x140;
- f32 local_70 = mDoGph_gInf_c::getHeightF() / 448.0f;
+ f32 local_70 = mDoGph_gInf_c::getHeightF() / FB_HEIGHT;
grafContext->scissor(
- (local_58.x - mDoGph_gInf_c::getMinXF()) / (mDoGph_gInf_c::getWidthF() / 608.0f),
- field_0x2118, (local_64.x - local_58.x) / (mDoGph_gInf_c::getWidthF() / 608.0f),
+ (local_58.x - mDoGph_gInf_c::getMinXF()) / (mDoGph_gInf_c::getWidthF() / FB_WIDTH),
+ field_0x2118, (local_64.x - local_58.x) / (mDoGph_gInf_c::getWidthF() / FB_WIDTH),
field_0x2120);
grafContext->setScissor();
f32 local_74 = mpLineH[0]->getGlobalPosX();
@@ -835,8 +835,8 @@ void dMsgScrnHowl_c::drawEffect() {
Vec vec2 = field_0x140;
mDoGph_gInf_c::getHeightF();
grafContext->scissor(
- (vec1.x - mDoGph_gInf_c::getMinXF()) / (mDoGph_gInf_c::getWidthF() / 608.0f), field_0x2118,
- 12.0f + ((vec2.x - vec1.x) / (mDoGph_gInf_c::getWidthF() / 608.0f)), field_0x2120);
+ (vec1.x - mDoGph_gInf_c::getMinXF()) / (mDoGph_gInf_c::getWidthF() / FB_WIDTH), field_0x2118,
+ 12.0f + ((vec2.x - vec1.x) / (mDoGph_gInf_c::getWidthF() / FB_WIDTH)), field_0x2120);
grafContext->setScissor();
u8 timer = daAlink_getAlinkActorClass()->getWolfHowlMgrP()->getReleaseTimer();
u8 screenAlpha = mpScreen->search('line00')->getAlpha();
diff --git a/src/d/d_msg_scrn_item.cpp b/src/d/d_msg_scrn_item.cpp
index 9443a01cde..7fb6a43e63 100644
--- a/src/d/d_msg_scrn_item.cpp
+++ b/src/d/d_msg_scrn_item.cpp
@@ -413,10 +413,14 @@ void dMsgScrnItem_c::drawSelf() {
}
f32 globalPosX = mpTm_c[0]->getGlobalPosX();
+
+ #if WIDESCREEN_SUPPORT
if (mDoGph_gInf_c::isWide()) {
drawOutFont(g_MsgObject_HIO_c.mBoxItemTextPosX + 7.0f + YREG_F(2),
g_MsgObject_HIO_c.mBoxItemTextPosY, 1.0f);
- } else {
+ } else
+ #endif
+ {
drawOutFont(g_MsgObject_HIO_c.mBoxItemTextPosX - 2.0f + YREG_F(2),
g_MsgObject_HIO_c.mBoxItemTextPosY, 1.0f);
}
@@ -577,8 +581,8 @@ void dMsgScrnItem_c::fukiPosCalc(u8 param_1) {
f3 = cStack_7c.y;
} else {
mDoLib_project(&iVar6->pos, &local_70);
- if (local_70.x >= 0.0f && local_70.x <= 608.0f && local_70.y >= 0.0f &&
- local_70.y <= 448.0f)
+ if (local_70.x >= 0.0f && local_70.x <= FB_WIDTH && local_70.y >= 0.0f &&
+ local_70.y <= FB_HEIGHT)
{
f3 = 0.5f * (cStack_7c.y + local_70.y);
} else {
diff --git a/src/d/d_ovlp_fade2.cpp b/src/d/d_ovlp_fade2.cpp
index 897971a64a..25c8bc9420 100644
--- a/src/d/d_ovlp_fade2.cpp
+++ b/src/d/d_ovlp_fade2.cpp
@@ -13,8 +13,8 @@
/* 8025247C-80252990 24CDBC 0514+00 1/0 0/0 0/0 .text draw__15dOvlpFd2_dlst_cFv */
void dOvlpFd2_dlst_c::draw() {
- GXSetViewport(0.0f, 0.0f, 608.0f, 448.0f, 0.0f, 1.0f);
- GXSetScissor(0, 0, 608, 448);
+ GXSetViewport(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, 0.0f, 1.0f);
+ GXSetScissor(0, 0, FB_WIDTH, FB_HEIGHT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGB, GX_RGBA4, 0);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
@@ -50,8 +50,8 @@ void dOvlpFd2_dlst_c::draw() {
C_MTXPerspective(m, 60.0f, mDoGph_gInf_c::getWidthF() / mDoGph_gInf_c::getHeightF(), 100.0f,
100000.0f);
GXSetProjection(m, GX_PERSPECTIVE);
- GXInitTexObj(mDoGph_gInf_c::getFrameBufferTexObj(), mDoGph_gInf_c::getFrameBufferTex(), 304,
- 224, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP, GX_FALSE);
+ GXInitTexObj(mDoGph_gInf_c::getFrameBufferTexObj(), mDoGph_gInf_c::getFrameBufferTex(), FB_WIDTH / 2,
+ FB_HEIGHT / 2, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXInitTexObjLOD(mDoGph_gInf_c::getFrameBufferTexObj(), GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f,
GX_FALSE, GX_FALSE, GX_ANISO_1);
GXLoadTexObj(mDoGph_gInf_c::getFrameBufferTexObj(), GX_TEXMAP0);
diff --git a/src/d/d_ovlp_fade3.cpp b/src/d/d_ovlp_fade3.cpp
index fff134b974..7752b8a0c8 100644
--- a/src/d/d_ovlp_fade3.cpp
+++ b/src/d/d_ovlp_fade3.cpp
@@ -14,16 +14,16 @@
/* 80252ED4-80252F28 24D814 0054+00 1/0 0/0 0/0 .text draw__16dDlst_snapShot_cFv */
void dDlst_snapShot_c::draw() {
- GXSetTexCopySrc(0, 0, 608, 448);
- GXSetTexCopyDst(608 / 2, 448 / 2, GX_TF_RGBA8, GX_TRUE);
+ GXSetTexCopySrc(0, 0, FB_WIDTH, FB_HEIGHT);
+ GXSetTexCopyDst(FB_WIDTH / 2, FB_HEIGHT / 2, GX_TF_RGBA8, GX_TRUE);
GXCopyTex(mDoGph_gInf_c::getFrameBufferTex(), GX_FALSE);
GXPixModeSync();
}
/* 80252F28-8025343C 24D868 0514+00 1/0 0/0 0/0 .text draw__15dOvlpFd3_dlst_cFv */
void dOvlpFd3_dlst_c::draw() {
- GXSetViewport(0.0f, 0.0f, 608.0f, 448.0f, 0.0f, 1.0f);
- GXSetScissor(0, 0, 608, 448);
+ GXSetViewport(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, 0.0f, 1.0f);
+ GXSetScissor(0, 0, FB_WIDTH, FB_HEIGHT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGB, GX_RGBA4, 0);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
@@ -59,8 +59,8 @@ void dOvlpFd3_dlst_c::draw() {
C_MTXPerspective(m, 60.0f, mDoGph_gInf_c::getWidthF() / mDoGph_gInf_c::getHeightF(), 100.0f,
100000.0f);
GXSetProjection(m, GX_PERSPECTIVE);
- GXInitTexObj(mDoGph_gInf_c::getFrameBufferTexObj(), mDoGph_gInf_c::getFrameBufferTex(), 304,
- 224, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP, GX_FALSE);
+ GXInitTexObj(mDoGph_gInf_c::getFrameBufferTexObj(), mDoGph_gInf_c::getFrameBufferTex(), FB_WIDTH / 2,
+ FB_HEIGHT / 2, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXInitTexObjLOD(mDoGph_gInf_c::getFrameBufferTexObj(), GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f,
GX_FALSE, GX_FALSE, GX_ANISO_1);
GXLoadTexObj(mDoGph_gInf_c::getFrameBufferTexObj(), GX_TEXMAP0);
diff --git a/src/d/d_pane_class.cpp b/src/d/d_pane_class.cpp
index 3ce2ed5fc2..031f1b3421 100644
--- a/src/d/d_pane_class.cpp
+++ b/src/d/d_pane_class.cpp
@@ -391,7 +391,7 @@ Vec CPaneMgr::getGlobalVtx(J2DPane* p_pane, Mtx* param_1, u8 param_2, bool param
MtxP mp = (MtxP)param_1;
J2DPane* parent = p_pane->getParentPane();
- J2DOrthoGraph ortho(0.0f, 0.0f, 608.0f, 448.0f, -1.0f, 1.0f);
+ J2DOrthoGraph ortho(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, -1.0f, 1.0f);
ortho.setOrtho(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMinYF(), mDoGph_gInf_c::getWidthF(), mDoGph_gInf_c::getHeightF(), -1.0f, 1.0f);
if (parent != NULL) {
diff --git a/src/d/d_s_logo.cpp b/src/d/d_s_logo.cpp
index 4709adc528..8e32ea4d3f 100644
--- a/src/d/d_s_logo.cpp
+++ b/src/d/d_s_logo.cpp
@@ -18,6 +18,10 @@
#include "m_Do/m_Do_graphic.h"
#include "m_Do/m_Do_machine.h"
+#if PLATFORM_WII
+#include "d/d_cursor_mng.h"
+#endif
+
#if VERSION == VERSION_GCN_JPN
#define LOGO_ARC "Logo"
#define MSG_PATH "/res/Msgjp/bmgres.arc"
@@ -532,6 +536,10 @@ dScnLogo_c::~dScnLogo_c() {
dDlst_shadowControl_c::setSimpleTex((ResTIMG*)dComIfG_getObjectRes("Always", 0x4A));
dTres_c::createWork();
dMpath_c::createWork();
+
+ #if PLATFORM_WII
+ data_8053a730 = 0;
+ #endif
}
/* 80257910-802579BC 252250 00AC+00 1/0 0/0 0/0 .text phase_0__FP10dScnLogo_c */
@@ -619,6 +627,10 @@ int dScnLogo_c::create() {
return phase_state;
}
+ #if PLATFORM_WII
+ data_8053a730 = 1;
+ #endif
+
mpHeap = mDoExt_setCurrentHeap(field_0x1d4);
logoInitGC();
mpHeap->becomeCurrentHeap();
@@ -730,10 +742,10 @@ void dScnLogo_c::logoInitGC() {
};
ResTIMG* warningImg = (ResTIMG*)mpPalLogoResCommand->getArchive()->getResource('DAT ', warning[language]);
- mWarning = new dDlst_2D_c(warningImg, 0, 0, 608, 448, 255);
+ mWarning = new dDlst_2D_c(warningImg, 0, 0, FB_WIDTH, FB_HEIGHT, 255);
ResTIMG* warnStartImg = (ResTIMG*)mpPalLogoResCommand->getArchive()->getResource('DAT ', warningPs[language]);
- mWarningStart = new dDlst_2D_c(warnStartImg, 0, 359, 608, 48, 255);
+ mWarningStart = new dDlst_2D_c(warnStartImg, 0, 359, FB_WIDTH, 48, 255);
ResTIMG* progChoiceImg = (ResTIMG*)mpPalLogoResCommand->getArchive()->getResource('DAT ', choice[language]);
mProgressiveChoice = new dDlst_2D_c(progChoiceImg, 113, 143, 416, 210, 255);
@@ -751,10 +763,10 @@ void dScnLogo_c::logoInitGC() {
mProgressiveSel = new dDlst_2D_c(mProgressivePro, 153, 309, 336, 88, 255);
#else
ResTIMG* warningImg = (ResTIMG*)dComIfG_getObjectRes(LOGO_ARC, 10);
- mWarning = new dDlst_2D_c(warningImg, 0, 0, 608, 448, 255);
+ mWarning = new dDlst_2D_c(warningImg, 0, 0, FB_WIDTH, FB_HEIGHT, 255);
ResTIMG* warnStartImg = (ResTIMG*)dComIfG_getObjectRes(LOGO_ARC, 11);
- mWarningStart = new dDlst_2D_c(warnStartImg, 0, 359, 608, 48, 255);
+ mWarningStart = new dDlst_2D_c(warnStartImg, 0, 359, FB_WIDTH, 48, 255);
ResTIMG* progChoiceImg = (ResTIMG*)dComIfG_getObjectRes(LOGO_ARC, 5);
mProgressiveChoice = new dDlst_2D_c(progChoiceImg, 113, 281, 416, 72, 255);
diff --git a/src/d/d_s_play.cpp b/src/d/d_s_play.cpp
index bced5bfc1f..9934e58114 100644
--- a/src/d/d_s_play.cpp
+++ b/src/d/d_s_play.cpp
@@ -27,6 +27,10 @@
#include "d/actor/d_a_suspend.h"
#include "d/actor/d_a_ykgr.h"
+#if PLATFORM_WII
+#include "d/d_cursor_mng.h"
+#endif
+
static void dScnPly_Create(scene_class*);
static int dScnPly_Delete(dScnPly_c*);
static int dScnPly_IsDelete(dScnPly_c);
@@ -293,6 +297,11 @@ static int dScnPly_Delete(dScnPly_c* i_this) {
}
dComIfGp_init();
+
+ #if PLATFORM_WII
+ data_8053a730 = 0;
+ #endif
+
JUTAssertion::setMessageCount(0);
return 1;
}
@@ -345,6 +354,10 @@ static int phase_00(dScnPly_c* i_this) {
if (!i_this->resetGame()) {
return cPhs_INIT_e;
} else {
+ #if PLATFORM_WII
+ data_8053a730 = 1;
+ #endif
+
mDoGph_gInf_c::offBlure();
return cPhs_NEXT_e;
}
@@ -613,7 +626,7 @@ static int phase_4(dScnPly_c* i_this) {
dComIfGp_setPlayerPtr(i, NULL);
}
- dComIfGp_setWindow(0, 0.0f, 0.0f, 608.0f, 448.0f, 0.0f, 1.0f, 0, 2);
+ dComIfGp_setWindow(0, 0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, 0.0f, 1.0f, 0, 2);
dComIfGp_setCameraInfo(0, NULL, 0, 0, -1);
dComIfGd_setWindow(NULL);
dComIfGd_setViewport(NULL);
diff --git a/src/m_Do/m_Do_graphic.cpp b/src/m_Do/m_Do_graphic.cpp
index 125bd63001..df35dce471 100644
--- a/src/m_Do/m_Do_graphic.cpp
+++ b/src/m_Do/m_Do_graphic.cpp
@@ -17,7 +17,7 @@
#include "d/actor/d_a_player.h"
#include "d/d_com_inf_game.h"
#include "d/d_menu_collect.h"
-#include "dolphin/base/PPCArch.h"
+#include <dolphin/base/PPCArch.h>
#include "f_ap/f_ap_game.h"
#include "f_op/f_op_camera_mng.h"
#include "m_Do/m_Do_controller_pad.h"
@@ -25,14 +25,206 @@
#include "m_Do/m_Do_machine.h"
#include "m_Do/m_Do_main.h"
#include "d/d_debug_viewer.h"
+#include "d/d_meter2_info.h"
+#include "d/d_s_play.h"
+#include "DynamicLink.h"
+
+#if PLATFORM_WII || PLATFORM_SHIELD
+#include <revolution/sc.h>
+#endif
+
+#if PLATFORM_WII
+#include "d/d_cursor_mng.h"
+#endif
+
+class mDoGph_HIO_c : public JORReflexible {
+public:
+ mDoGph_HIO_c() {
+ id = 0;
+ }
+
+ void entryHIO() {
+ if (id == 0) {
+ id = mDoHIO_CREATE_CHILD("グラフィック", this);
+ }
+ }
+
+ void listenPropertyEvent(const JORPropertyEvent*) {}
+ void genMessage(JORMContext*) {}
+
+ /* 0x4 */ s8 id;
+};
+
+static void drawQuad(f32 param_0, f32 param_1, f32 param_2, f32 param_3) {
+ GXBegin(GX_QUADS, GX_VTXFMT0, 4);
+ GXPosition2f32(param_0, param_1);
+ GXPosition2f32(param_2, param_1);
+ GXPosition2f32(param_2, param_3);
+ GXPosition2f32(param_0, param_3);
+ GXEnd();
+}
+
+#if DEBUG
+class dDlst_heapMap_c : public dDlst_base_c {
+public:
+ dDlst_heapMap_c() {
+ m_heap = NULL;
+ }
+
+ void set(JKRExpHeap*, f32, f32, f32, f32);
+
+ virtual void draw();
+
+ /* 0x04 */ JKRExpHeap* m_heap;
+ /* 0x08 */ f32 field_0x8;
+ /* 0x0C */ f32 field_0xc;
+ /* 0x10 */ f32 field_0x10;
+ /* 0x14 */ f32 field_0x14;
+};
+
+void dDlst_heapMap_c::draw() {
+ JUT_ASSERT(111, m_heap != NULL);
+
+ static const GXColor l_noUsedColor = {0x00, 0x00, 0x80, 0xC8};
+ static const GXColor l_usedColor = {0xFF, 0x00, 0x00, 0xC8};
+ static const GXColor l_tempColor = {0x00, 0xFF, 0x00, 0xC8};
+
+ GXClearVtxDesc();
+ GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
+ GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_F32, 0);
+ GXSetNumChans(1);
+ GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_NONE,
+ GX_AF_NONE);
+ GXSetNumTexGens(0);
+ GXSetNumTevStages(1);
+ GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0);
+ GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0);
+ GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_ENABLE, GX_TEVPREV);
+ GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0);
+ GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_ENABLE, GX_TEVPREV);
+ GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET);
+ GXSetZCompLoc(GX_ENABLE);
+ GXSetZMode(GX_DISABLE, GX_ALWAYS, GX_DISABLE);
+ GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0);
+ GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, g_clearColor);
+ GXSetCullMode(GX_CULL_NONE);
+ GXSetDither(GX_ENABLE);
+ GXSetClipMode(GX_CLIP_DISABLE);
+
+ GXLoadPosMtxImm(cMtx_getIdentity(), 0);
+ GXSetCurrentMtx(0);
+
+ GXSetTevColor(GX_TEVREG0, l_noUsedColor);
+ drawQuad(field_0x8, field_0xc, field_0x10, field_0x14);
+
+ f32 var_f29 = field_0x10 - field_0x8;
+ f32 sp4C = field_0x14 - field_0xc;
+ f32 sp48 = var_f29 * sp4C;
+
+ uintptr_t start_addr = (uintptr_t)m_heap->getStartAddr();
+ uintptr_t end_addr = (uintptr_t)m_heap->getEndAddr();
+ u32 sp40 = end_addr - start_addr;
+ f32 sp3C = sp48 / (f32)sp40;
+
+ for (JKRExpHeap::CMemBlock* block = m_heap->getUsedFirst(); block != NULL; block = block->getNextBlock()) {
+ JUT_ASSERT(162, block->isValid());
+
+ GXSetTevColor(GX_TEVREG0, block->isTempMemBlock() ? l_tempColor : l_usedColor);
+
+ u32 sp38 = (m_heap->getSize(block + 1) + block->getAlignment()) + 0x10;
+ f32 var_f30 = (f32)sp38 * sp3C;
+ uintptr_t sp34 = (uintptr_t)block - start_addr;
+ f32 sp30 = (f32)sp34 * sp3C;
+
+ f32 var_f28 = std::floor(sp30 / var_f29);
+
+ f32 sp2C = sp30 - (var_f29 * var_f28);
+ f32 sp28 = field_0x8 + sp2C;
+
+ f32 var_f31 = field_0xc + var_f28;
+ f32 var_f27 = 1.0f + var_f31;
+ f32 sp24 = var_f29 - sp2C;
+
+ if (var_f30 <= sp24) {
+ drawQuad(sp28, var_f31, sp28 + var_f30, var_f27);
+ } else {
+ if (sp24 > 0.0f) {
+ drawQuad(sp28, var_f31, field_0x10, var_f27);
+ var_f30 -= sp24;
+ var_f31 = var_f27;
+ }
+
+ var_f28 = std::floor(var_f30 / var_f29);
+ if (var_f28 > 0.0f) {
+ var_f27 = var_f31 + var_f28;
+ drawQuad(field_0x8, var_f31, field_0x10, var_f27);
+ var_f30 -= var_f29 * var_f28;
+ var_f31 = var_f27;
+ }
+ drawQuad(field_0x8, var_f31, field_0x8 + var_f30, 1.0f + var_f31);
+ }
+ }
+
+ dComIfGp_getCurrentGrafPort()->setup2D();
+}
+
+void dDlst_heapMap_c::set(JKRExpHeap* i_heap, f32 param_1, f32 param_2, f32 param_3, f32 param_4) {
+ m_heap = i_heap;
+ field_0x8 = param_1;
+ field_0xc = param_2;
+ field_0x10 = param_3;
+ field_0x14 = param_4;
+}
+
+static dDlst_heapMap_c l_heapMap;
+static int l_heapMapMode;
+
+static void drawHeapMap() {
+ if (mDoCPd_c::getHoldL(PAD_3) && mDoCPd_c::getHoldR(PAD_3) && mDoCPd_c::getTrigY(PAD_3)) {
+ l_heapMapMode = (l_heapMapMode + 1) % 7;
+ if (l_heapMapMode != 0) {
+ JKRExpHeap* heap = NULL;
+ if (l_heapMapMode == 1) {
+ heap = mDoExt_getArchiveHeap();
+ OSReport_Error("アーカイブヒープマップ表示\n");
+ } else if (l_heapMapMode == 3) {
+ heap = mDoExt_getGameHeap();
+ OSReport_Error("ゲームヒープマップ表示\n");
+ } else if (l_heapMapMode == 2) {
+ heap = (JKRExpHeap*)DynamicModuleControlBase::getHeap();
+ OSReport_Error("ダイナミックリンクヒープマップ表示\n");
+ } else if (l_heapMapMode == 4) {
+ heap = mDoExt_getZeldaHeap();
+ OSReport_Error("ゼルダヒープマップ表示\n");
+ } else if (l_heapMapMode == 5) {
+ heap = mDoExt_getJ2dHeap();
+ OSReport_Error("J2Dヒープマップ表示\n");
+ } else if (l_heapMapMode == 6) {
+ heap = mDoExt_getCommandHeap();
+ OSReport_Error("コマンドヒープマップ表示\n");
+ }
+
+ l_heapMap.set(heap, 300.0f, 300.0f, 600.0f, 390.0f);
+ }
+ }
+
+ if (l_heapMapMode != 0) {
+ dComIfGd_set2DXlu(&l_heapMap);
+ }
+}
+
+#endif
/* 80007D9C-80007E44 0026DC 00A8+00 1/1 0/0 0/0 .text createTimg__FUsUsUl */
static ResTIMG* createTimg(u16 width, u16 height, u32 format) {
u32 bufferSize = GXGetTexBufferSize(width, height, format, GX_FALSE, 0) + 0x20;
ResTIMG* timg;
- void* alloc_res = JKRHeap::alloc(bufferSize, 0x20, NULL);
- timg = (ResTIMG*)alloc_res;
+ #if PLATFORM_GCN
+ timg = (ResTIMG*)JKRAlloc(bufferSize, 0x20);
+ #else
+ timg = (ResTIMG*)JKRHeap::getRootHeap2()->alloc(bufferSize, 0x20);
+ #endif
if (timg == NULL) {
return NULL;
@@ -50,15 +242,14 @@ static ResTIMG* createTimg(u16 width, u16 height, u32 format) {
return timg;
}
-/* 80450590-80450594 000010 0004+00 2/2 1/1 0/0 .sdata mBackColor__13mDoGph_gInf_c */
-GXColor mDoGph_gInf_c::mBackColor = {0, 0, 0, 0};
-
-/* 80450594-80450598 000014 0004+00 4/4 3/3 0/0 .sdata mFadeColor__13mDoGph_gInf_c */
-GXColor mDoGph_gInf_c::mFadeColor = {0, 0, 0, 0};
-
/* 80450BC8-80450BCC 0000C8 0004+00 2/2 38/38 1/1 .sbss mFader__13mDoGph_gInf_c */
JUTFader* mDoGph_gInf_c::mFader;
+#if PLATFORM_WII || PLATFORM_SHIELD
+ResTIMG* mDoGph_gInf_c::m_fullFrameBufferTimg;
+void* mDoGph_gInf_c::m_fullFrameBufferTex;
+#endif
+
/* 80450BCC-80450BD0 0000CC 0004+00 3/3 8/8 1/1 .sbss mFrameBufferTimg__13mDoGph_gInf_c
*/
ResTIMG* mDoGph_gInf_c::mFrameBufferTimg;
@@ -78,12 +269,18 @@ f32 mDoGph_gInf_c::mFadeRate;
/* 80450BE0-80450BE4 0000E0 0004+00 3/3 0/0 0/0 .sbss mFadeSpeed__13mDoGph_gInf_c */
f32 mDoGph_gInf_c::mFadeSpeed;
+/* 80450590-80450594 000010 0004+00 2/2 1/1 0/0 .sdata mBackColor__13mDoGph_gInf_c */
+GXColor mDoGph_gInf_c::mBackColor = {0, 0, 0, 0};
+
+/* 80450594-80450598 000014 0004+00 4/4 3/3 0/0 .sdata mFadeColor__13mDoGph_gInf_c */
+GXColor mDoGph_gInf_c::mFadeColor = {0, 0, 0, 0};
+
/* 80450BE4-80450BE8 -00001 0004+00 8/8 9/9 11/11 .sbss None */
/* 80450BE4 0001+00 data_80450BE4 None */
/* 80450BE5 0001+00 data_80450BE5 None */
/* 80450BE6 0001+00 mFade__13mDoGph_gInf_c None */
/* 80450BE7 0001+00 data_80450BE7 None */
-bool mDoGph_gInf_c::mBlureFlag;
+u8 mDoGph_gInf_c::mBlureFlag;
u8 mDoGph_gInf_c::mBlureRate;
@@ -93,22 +290,40 @@ bool mDoGph_gInf_c::mAutoForcus;
/* 80007E44-80007F90 002784 014C+00 1/1 0/0 0/0 .text create__13mDoGph_gInf_cFv */
void mDoGph_gInf_c::create() {
- JFWDisplay::createManager(NULL, JKRHeap::sCurrentHeap, JUTXfb::UNK_2, true);
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ VISetTrapFilter(0);
+ #endif
+
+ #if PLATFORM_GCN
+ JFWDisplay::createManager(JKRHeap::sCurrentHeap, JUTXfb::UNK_2, true);
+ #else
+ JFWDisplay::createManager(JKRHeap::getRootHeap2(), JUTXfb::UNK_2, true);
+ #endif
+
JFWDisplay::getManager()->setDrawDoneMethod(JFWDisplay::UNK_METHOD_1);
JUTFader* faderPtr = new JUTFader(0, 0, JUTVideo::getManager()->getRenderMode()->fbWidth,
JUTVideo::getManager()->getRenderMode()->efbHeight,
JUtility::TColor(0, 0, 0, 0));
+ JUT_ASSERT(352, faderPtr != NULL);
setFader(faderPtr);
JFWDisplay::getManager()->setFader(faderPtr);
JUTProcBar::getManager()->setVisibleHeapBar(false);
JUTProcBar::getManager()->setVisible(false);
JUTDbPrint::getManager()->setVisible(false);
- mFrameBufferTimg = createTimg(304, 224, 6);
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ m_fullFrameBufferTimg = createTimg(FB_WIDTH, FB_HEIGHT, 6);
+ JUT_ASSERT(366, m_fullFrameBufferTimg != NULL);
+ m_fullFrameBufferTex = (char*)m_fullFrameBufferTimg + sizeof(ResTIMG);
+ #endif
+
+ mFrameBufferTimg = createTimg(FB_WIDTH / 2, FB_HEIGHT / 2, 6);
+ JUT_ASSERT(374, mFrameBufferTimg != NULL);
mFrameBufferTex = (char*)mFrameBufferTimg + sizeof(ResTIMG);
- mZbufferTimg = createTimg(304, 224, 3);
+ mZbufferTimg = createTimg(FB_WIDTH / 2, FB_HEIGHT / 2, 3);
+ JUT_ASSERT(381, mZbufferTimg != NULL);
mZbufferTex = (char*)mZbufferTimg + sizeof(ResTIMG);
J2DPrint::setBuffer(0x400);
@@ -118,6 +333,14 @@ void mDoGph_gInf_c::create() {
mBackColor = g_clearColor;
mFadeColor = g_clearColor;
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ if (SCGetAspectRatio() == 0) {
+ offWide();
+ } else {
+ onWide();
+ }
+ #endif
+
VISetBlack(TRUE);
}
@@ -126,24 +349,34 @@ static bool data_80450BE8;
/* 80007F90-80007FD8 0028D0 0048+00 1/1 2/2 0/0 .text beginRender__13mDoGph_gInf_cFv */
void mDoGph_gInf_c::beginRender() {
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ VISetTrapFilter(fapGmHIO_getTrapFilter() ? 1 : 0);
+ VISetGamma(fapGmHIO_getGamma());
+ #endif
+
if (data_80450BE8) {
JUTXfb::getManager()->setDrawingXfbIndex(-1);
}
JFWDisplay::getManager()->beginRender();
+
+ #if PLATFORM_WII || PLATFORM_SHIELD
+ VIEnableDimming(1);
+ #endif
+}
+
+#if PLATFORM_WII || PLATFORM_SHIELD
+void mDoGph_gInf_c::resetDimming() {
+ VIEnableDimming(0);
}
+#endif
/* 80007FD8-80008028 002918 0050+00 1/1 6/4 15/15 .text fadeOut__13mDoGph_gInf_cFfR8_GXColor */
void mDoGph_gInf_c::fadeOut(f32 fadeSpeed, GXColor& fadeColor) {
mFade = 1;
mFadeSpeed = fadeSpeed;
mFadeColor = fadeColor;
-
- if (fadeSpeed >= 0.0f) {
- mFadeRate = 0.0f;
- } else {
- mFadeRate = 1.0f;
- }
+ mFadeRate = fadeSpeed >= 0.0f ? 0.0f : 1.0f;
}
/* 80008028-80008078 002968 0050+00 0/0 0/0 2/2 .text fadeOut_f__13mDoGph_gInf_cFfR8_GXColor */
@@ -151,19 +384,18 @@ void mDoGph_gInf_c::fadeOut_f(f32 fadeSpeed, GXColor& fadeColor) {
mFade = 129;
mFadeSpeed = fadeSpeed;
mFadeColor = fadeColor;
-
- if (fadeSpeed >= 0.0f) {
- mFadeRate = 0.0f;
- } else {
- mFadeRate = 1.0f;
- }
+ mFadeRate = fadeSpeed >= 0.0f ? 0.0f : 1.0f;
}
/* 80008078-800080A0 0029B8 0028+00 0/0 1/1 8/8 .text onBlure__13mDoGph_gInf_cFv */
void mDoGph_gInf_c::onBlure() {
- onBlure(g_mDoMtx_identity);
+ onBlure(cMtx_getIdentity());
}
+#if PLATFORM_WII || PLATFORM_SHIELD
+GXTexObj mDoGph_gInf_c::m_fullFrameBufferTexObj;
+#endif
+
/* 803DD3E8-803DD408 00A108 0020+00 3/3 3/3 0/0 .bss mFrameBufferTexObj__13mDoGph_gInf_c
*/
GXTexObj mDoGph_gInf_c::mFrameBufferTexObj;
@@ -180,7 +412,7 @@ Mtx mDoGph_gInf_c::mBlureMtx;
/* 800080A0-800080D0 0029E0 0030+00 1/1 1/1 0/0 .text onBlure__13mDoGph_gInf_cFPA4_Cf */
void mDoGph_gInf_c::onBlure(const Mtx m) {
mBlureFlag = true;
- MTXCopy(m, mBlureMtx);
+ setBlureMtx(m);
}
/* 800080D0-800080F4 002A10 0024+00 0/0 3/3 7/7 .text fadeOut__13mDoGph_gInf_cFf */
@@ -189,7 +421,7 @@ void mDoGph_gInf_c::fadeOut(f32 fadeSpeed) {
}
/* 800080F4-80008330 002A34 023C+00 1/1 0/0 0/0 .text darwFilter__F8_GXColor */
-static void darwFilter(GXColor matColor) {
+void darwFilter(GXColor matColor) {
GXSetNumChans(1);
GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_NONE,
GX_AF_NONE);
@@ -213,7 +445,7 @@ static void darwFilter(GXColor matColor) {
Mtx44 mtx;
C_MTXOrtho(mtx, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 10.0f);
GXSetProjection(mtx, GX_ORTHOGRAPHIC);
- GXLoadPosMtxImm(g_mDoMtx_identity, GX_PNMTX0);
+ GXLoadPosMtxImm(cMtx_getIdentity(), GX_PNMTX0);
GXSetChanMatColor(GX_COLOR0A0, matColor);
GXSetCurrentMtx(0);
GXClearVtxDesc();
@@ -257,6 +489,205 @@ void mDoGph_gInf_c::calcFade() {
}
}
+#if PLATFORM_WII || PLATFORM_SHIELD
+u32 mDoGph_gInf_c::csr_c::m_blurID;
+
+void mDoGph_gInf_c::csr_c::particleExecute() {
+ dComIfGp_particle_levelExecute(m_blurID);
+}
+#endif
+
+#if WIDESCREEN_SUPPORT
+u8 mDoGph_gInf_c::mWideZoom;
+
+int mDoGph_gInf_c::m_minX;
+
+int mDoGph_gInf_c::m_minY;
+
+f32 mDoGph_gInf_c::m_minXF;
+
+f32 mDoGph_gInf_c::m_minYF;
+
+#if PLATFORM_WII || PLATFORM_SHIELD
+mDoGph_gInf_c::csr_c* mDoGph_gInf_c::m_baseCsr;
+
+mDoGph_gInf_c::csr_c* mDoGph_gInf_c::m_csr;
+#endif
+
+#if PLATFORM_SHIELD
+JKRHeap* mDoGph_gInf_c::m_heap;
+#endif
+
+u8 mDoGph_gInf_c::mWide = 1;
+
+f32 mDoGph_gInf_c::m_aspect = 1.3571428f;
+
+f32 mDoGph_gInf_c::m_scale = 1.0f;
+
+f32 mDoGph_gInf_c::m_invScale = 1.0f;
+
+int mDoGph_gInf_c::m_maxX = 608 - 1;
+
+int mDoGph_gInf_c::m_maxY = 448 - 1;
+
+int mDoGph_gInf_c::m_width = 608;
+
+int mDoGph_gInf_c::m_height = 448;
+
+f32 mDoGph_gInf_c::m_maxXF = 608.0f - 1;
+
+f32 mDoGph_gInf_c::m_maxYF = 448.0f - 1;
+
+f32 mDoGph_gInf_c::m_widthF = 608.0f;
+
+f32 mDoGph_gInf_c::m_heightF = 448.0f;
+
+struct tvSize {
+ u16 width;
+ u16 height;
+};
+const tvSize l_tvSize[2] = {
+ {608, 448},
+ {808, 448},
+};
+
+void mDoGph_gInf_c::setTvSize() {
+ const tvSize* tvsize = &l_tvSize[mWide];
+
+ m_width = tvsize->width;
+ m_height = tvsize->height;
+ m_minX = -((m_width - 608) / 2);
+ m_minY = -((m_height - 448) / 2);
+ m_maxX = m_minX + m_width;
+ m_maxY = m_minY + m_height;
+
+ m_widthF = m_width;
+ m_heightF = m_height;
+ m_minXF = m_minX;
+ m_minYF = m_minY;
+ m_maxXF = m_maxX;
+ m_maxYF = m_maxY;
+
+ m_aspect = m_widthF / m_heightF;
+ m_scale = m_aspect / 1.3571428f;
+ m_invScale = 1.0f / m_scale;
+}
+
+void mDoGph_gInf_c::onWide() {
+ mWide = TRUE;
+ setTvSize();
+ dMeter2Info_onWide2D();
+}
+
+void mDoGph_gInf_c::offWide() {
+ mWide = FALSE;
+ setTvSize();
+ dMeter2Info_offWide2D();
+}
+
+void mDoGph_gInf_c::onWideZoom() {
+ mWideZoom = TRUE;
+}
+
+void mDoGph_gInf_c::offWideZoom() {
+ mWideZoom = FALSE;
+}
+
+BOOL mDoGph_gInf_c::isWideZoom() {
+ return isWide() && mWideZoom;
+}
+
+u8 mDoGph_gInf_c::isWide() {
+ return mWide == TRUE;
+}
+
+void mDoGph_gInf_c::setWideZoomProjection(Mtx44& m) {
+ if (isWideZoom()) {
+ f32 sp20 = m[0][0];
+ f32 sp1C = m[0][2];
+ f32 sp18 = m[1][1];
+ f32 sp14 = m[1][2];
+ f32 sp10 = m[2][2];
+ f32 spC = m[2][3];
+
+ f32 temp_f31 = spC / (sp10 - 1.0f);
+ f32 sp8 = spC / sp10;
+
+ f32 temp_f30 = ((temp_f31 * (1.0f + sp14)) / sp18);
+ f32 temp_f29 = ((temp_f31 * (sp14 - 1.0f)) / sp18);
+ f32 temp_f28 = ((temp_f31 * (sp1C - 1.0f)) / sp20);
+ f32 temp_f27 = ((temp_f31 * (1.0f + sp1C)) / sp20);
+
+ temp_f30 *= getInvScale();
+ temp_f29 *= getInvScale();
+ temp_f28 *= getInvScale();
+ temp_f27 *= getInvScale();
+
+ m[0][0] = (2.0f * temp_f31) / (temp_f27 - temp_f28);
+ m[0][1] = 0.0f;
+ m[0][2] = (temp_f27 + temp_f28) / (temp_f27 - temp_f28);
+ m[0][3] = 0.0f;
+
+ m[1][0] = 0.0f;
+ m[1][1] = (2.0f * temp_f31) / (temp_f30 - temp_f29);
+ m[1][2] = (temp_f30 + temp_f29) / (temp_f30 - temp_f29);
+ m[1][3] = 0.0f;
+
+ m[2][0] = 0.0f;
+ m[2][1] = 0.0f;
+ m[2][2] = -temp_f31 / (sp8 - temp_f31);
+ m[2][3] = -(sp8 * temp_f31) / (sp8 - temp_f31);
+
+ m[3][0] = 0.0f;
+ m[3][1] = 0.0f;
+ m[3][2] = -1.0f;
+ m[3][3] = 0.0f;
+ }
+}
+
+void mDoGph_gInf_c::setWideZoomLightProjection(Mtx& m) {
+ if (isWideZoom()) {
+ f32 temp_f27 = m[0][0];
+ f32 temp_f26 = m[0][2];
+ f32 temp_f25 = m[1][1];
+ f32 temp_f24 = m[1][2];
+
+ f32 temp_f31 = (1.0f + temp_f24) / temp_f25;
+ f32 temp_f30 = (temp_f24 - 1.0f) / temp_f25;
+ f32 temp_f29 = (temp_f26 - 1.0f) / temp_f27;
+ f32 temp_f28 = (1.0f + temp_f26) / temp_f27;
+
+ temp_f31 *= getInvScale();
+ temp_f30 *= getInvScale();
+ temp_f29 *= getInvScale();
+ temp_f28 *= getInvScale();
+
+ m[0][0] = 2.0f / (temp_f28 - temp_f29);
+ m[0][1] = 0.0f;
+ m[0][2] = (temp_f28 + temp_f29) / (temp_f28 - temp_f29);
+ m[0][3] = 0.0f;
+
+ m[1][0] = 0.0f;
+ m[1][1] = 2.0f / (temp_f31 - temp_f30);
+ m[1][2] = (temp_f31 + temp_f30) / (temp_f31 - temp_f30);
+ m[1][3] = 0.0f;
+
+ m[2][0] = 0.0f;
+ m[2][1] = 0.0f;
+ m[2][2] = -1.0f;
+ m[2][3] = 0.0f;
+ }
+}
+#endif
+
+#if PLATFORM_WII || PLATFORM_SHIELD
+void mDoGph_gInf_c::entryBaseCsr(mDoGph_gInf_c::csr_c* i_entry) {
+ JUT_ASSERT(876, m_baseCsr == NULL);
+ m_baseCsr = i_entry;
+ m_csr = i_entry;
+}
+#endif
+
/* 8000841C-80008420 002D5C 0004+00 0/0 1/0 0/0 .text mDoGph_BlankingON__Fv */
void mDoGph_BlankingON() {}
@@ -313,229 +744,305 @@ int mDoGph_AfterOfDraw() {
GXSetDither(GX_ENABLE);
GXSetClipMode(GX_CLIP_ENABLE);
GXSetCullMode(GX_CULL_NONE);
+
+ #if WIDESCREEN_SUPPORT
+ struct viwidth {
+ u16 unk_0x0;
+ u16 unk_0x2;
+ };
+ static const viwidth l_viWidth[2] = {
+ {670, 666},
+ {686, 682},
+ };
+
+ const viwidth* viWidth = &l_viWidth[0];
+ if (mDoGph_gInf_c::isWide()) {
+ viWidth++;
+ }
+
+ GXRenderModeObj* renderObj = mDoMch_render_c::getRenderModeObj();
+ if (renderObj->viTVmode != VI_TVMODE_PAL_INT) {
+ renderObj->viWidth = viWidth->unk_0x0;
+ renderObj->viXOrigin = (720 - renderObj->viWidth) / 2;
+ } else {
+ renderObj->viWidth = viWidth->unk_0x2;
+ renderObj->viXOrigin = (720 - renderObj->viWidth) / 2;
+ }
+ #endif
+
JUTVideo::getManager()->setRenderMode(mDoMch_render_c::getRenderModeObj());
mDoGph_gInf_c::endFrame();
return 1;
}
+#if PLATFORM_WII
+void drawFilterQuad(s8 param_0, s8 param_1) {
+ GXBegin(GX_QUADS, GX_VTXFMT0, 4);
+ GXPosition3s8(0, 0, -5);
+ GXTexCoord2s8(0, 0);
+ GXPosition3s8(param_0, 0, -5);
+ GXTexCoord2s8(1, 0);
+ GXPosition3s8(param_0, param_1, -5);
+ GXTexCoord2s8(1, 1);
+ GXPosition3s8(0, param_1, -5);
+ GXTexCoord2s8(0, 1);
+ GXEnd();
+}
+
+// mapping to simplify call changes between wii / other platforms
+#define mDoGph_drawFilterQuad drawFilterQuad
+#endif
+
/* 80008630-80009184 002F70 0B54+00 1/1 0/0 0/0 .text
* drawDepth2__FP10view_classP15view_port_classi */
static void drawDepth2(view_class* param_0, view_port_class* param_1, int param_2) {
static GXColorS10 l_tevColor0 = {0, 0, 0, 0};
- s16 x_orig;
- s16 y_orig_pos;
- s16 y_orig;
- void* zBufferTex;
- s16 width;
- void* frameBufferTex;
- u16 halfWidth;
- u16 halfHeight;
- s16 height;
-
- f32* temp_r20;
-
if (daPy_getLinkPlayerActorClass() != NULL) {
- if (mDoGph_gInf_c::isAutoForcus()) {
- f32 sp4C[7];
- f32 sp34[6];
- f32 sp1C;
- f32 sp18;
- f32 sp14;
- GXGetProjectionv(sp4C);
- GXGetViewportv(sp34);
- GXProject(param_0->lookat.center.x, param_0->lookat.center.y,
- param_0->lookat.center.z, param_0->viewMtx, sp4C, sp34, &sp1C, &sp18,
- &sp14);
- }
-
- fopAc_ac_c* player_p = dComIfGp_getPlayer(0);
- camera_class* camera_p = (camera_class*)dComIfGp_getCamera(0);
- f32 var_f30 = -255.0f;
-
- if (dCam_getBody()->Mode() != 4 && dCam_getBody()->Mode() != 7) {
- camera_class* temp_r4 = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
- dAttention_c* attention = dComIfGp_getAttention();
-
- f32 temp_f31 = 60.0f / (temp_r4 ? fopCamM_GetFovy(temp_r4) : 48.0f);
- if (attention->LockonTruth()) {
- fopAc_ac_c* atn_actor =
- fopAcM_SearchByID(daPy_getLinkPlayerActorClass()->getAtnActorID());
+ u8 sp8 = 1;
+ #if DEBUG
+ if (g_envHIO.mOther.mDepthOfField) {
+ #endif
+ if (mDoGph_gInf_c::isAutoForcus()) {
+ f32 sp4C[7];
+ f32 sp34[6];
+ f32 sp1C;
+ f32 sp18;
+ f32 sp14;
+ GXGetProjectionv(sp4C);
+ GXGetViewportv(sp34);
+ GXProject(param_0->lookat.center.x, param_0->lookat.center.y,
+ param_0->lookat.center.z, param_0->viewMtx, sp4C, sp34, &sp1C, &sp18,
+ &sp14);
+
+ param_2 = (0xFF0000 - (int)(16777215.0f * sp14)) >> 8;
+ param_2 = cLib_minMaxLimit<int>(param_2, -0x400, 0);
+ }
- if (atn_actor != NULL) {
- cXyz sp28 = atn_actor->eyePos;
- if (std::fabs(sp28.y - camera_p->lookat.eye.y) < 400.0f) {
- sp28.y = camera_p->lookat.eye.y;
+ fopAc_ac_c* player_p = dComIfGp_getPlayer(0);
+ camera_class* camera_p = (camera_class*)dComIfGp_getCamera(0);
+ f32 var_f31;
+ f32 var_f29;
+ f32 var_f28 = -255.0f;
+
+ if (dCam_getBody()->Mode() != 4 && dCam_getBody()->Mode() != 7) {
+ int cam_id = dComIfGp_getPlayerCameraID(0);
+ camera_class* temp_r4 = dComIfGp_getCamera(cam_id);
+ dAttention_c* attention = dComIfGp_getAttention();
+
+ f32 var_f30;
+ if (temp_r4 != NULL) {
+ var_f30 = fopCamM_GetFovy(temp_r4);
+ } else {
+ var_f30 = 48.0f;
+ }
+ var_f30 = 60.0f / var_f30;
+
+ if (attention->LockonTruth()) {
+ fopAc_ac_c* atn_actor =
+ fopAcM_SearchByID(daPy_getLinkPlayerActorClass()->getAtnActorID());
+
+ if (atn_actor != NULL) {
+ cXyz sp28;
+ sp28 = atn_actor->eyePos;
+ if (std::fabs(sp28.y - camera_p->lookat.eye.y) < 400.0f) {
+ sp28.y = camera_p->lookat.eye.y;
+ }
+
+ var_f29 = atn_actor->current.pos.abs(camera_p->lookat.eye);
+ var_f31 = var_f29 / ((SREG_F(2) + 280.0f) * var_f30);
+ var_f31 -= 0.8f;
+ if (var_f31 < 0.0f) {
+ var_f31 = 0.0f;
+ } else if (var_f31 > 1.0f) {
+ var_f31 = 1.0f;
+ }
+ var_f28 = -180.0f - 75.0f * var_f31;
}
-
- f32 var_f2 =
- (atn_actor->current.pos.abs(camera_p->lookat.eye)) / (280.0f * temp_f31);
- var_f2 -= 0.8f;
- if (var_f2 < 0.0f) {
- var_f2 = 0.0f;
- } else if (var_f2 > 1.0f) {
- var_f2 = 1.0f;
+ } else if (dComIfGp_event_runCheck() && var_f30 < 3.0f &&
+ g_env_light.field_0x126c < 999999.0f)
+ {
+ var_f29 = g_env_light.field_0x126c;
+ var_f31 = var_f29 / ((SREG_F(2) + 80.0f) * var_f30);
+ var_f31 -= 0.8f;
+ if (var_f31 < 0.0f) {
+ var_f31 = 0.0f;
+ } else if (var_f31 > 1.0f) {
+ var_f31 = 1.0f;
}
- var_f30 = -180.0f - 75.0f * var_f2;
- }
- } else if (dComIfGp_event_runCheck() && temp_f31 < 3.0f &&
- g_env_light.field_0x126c < 999999.0f)
- {
- f32 var_f2 = g_env_light.field_0x126c / (80.0f * temp_f31);
- var_f2 -= 0.8f;
- if (var_f2 < 0.0f) {
- var_f2 = 0.0f;
- } else if (var_f2 > 1.0f) {
- var_f2 = 1.0f;
+ var_f28 = -180.0f - 75.0f * var_f31;
}
- var_f30 = -180.0f - 75.0f * var_f2;
}
- }
- cLib_addCalc(&g_env_light.field_0x1264, var_f30, 0.1f, 100.0f, 0.0001f);
- l_tevColor0.a = g_env_light.field_0x1264;
- if (l_tevColor0.a <= -254) {
- l_tevColor0.a = -255;
- }
+ cLib_addCalc(&g_env_light.field_0x1264, var_f28, SREG_F(5) + 0.1f, SREG_F(4) + 100.0f, 0.0001f);
+ l_tevColor0.a = g_env_light.field_0x1264;
+ if (l_tevColor0.a <= -254) {
+ l_tevColor0.a = -255;
+ }
- x_orig = (int)param_1->x_orig & ~7;
- y_orig = (int)param_1->y_orig & ~7;
- y_orig_pos = y_orig < 0 ? 0 : y_orig;
- width = (int)param_1->width & ~7;
- height = (int)param_1->height & ~7;
- zBufferTex = mDoGph_gInf_c::mZbufferTex;
- frameBufferTex = mDoGph_gInf_c::mFrameBufferTex;
+ s16 x_orig = (int)param_1->x_orig & ~7;
+ s16 y_orig = (int)param_1->y_orig & ~7;
+ s16 y_orig_pos = y_orig < 0 ? 0 : y_orig;
+
+ s16 width = (int)param_1->width & ~7;
+ s16 height = (int)param_1->height & ~7;
+
+ void* zBufferTex = (void*)mDoGph_gInf_c::getZbufferTex();
+ void* frameBufferTex = (void*)mDoGph_gInf_c::getFrameBufferTex();
+
+ if (y_orig < 0) {
+ height += y_orig;
+ y_orig = -y_orig >> 1;
+ zBufferTex =
+ (char*)zBufferTex + GXGetTexBufferSize(FB_WIDTH / 2, y_orig, GX_TF_IA8, GX_FALSE, 0);
+ frameBufferTex =
+ (char*)frameBufferTex +
+ GXGetTexBufferSize(FB_WIDTH / 2, y_orig, mDoGph_gInf_c::getFrameBufferTimg()->format,
+ GX_FALSE, 0);
+ }
- if (y_orig < 0) {
- height += y_orig;
- s16 tmp_y_orig = -y_orig >> 1;
- zBufferTex =
- (char*)zBufferTex + GXGetTexBufferSize(304, tmp_y_orig, GX_TF_IA8, GX_FALSE, 0);
- frameBufferTex =
- (char*)frameBufferTex +
- GXGetTexBufferSize(304, tmp_y_orig, mDoGph_gInf_c::getFrameBufferTimg()->format,
- GX_FALSE, 0);
- }
+ u16 halfWidth = width >> 1;
+ u16 halfHeight = height >> 1;
+ GXRenderModeObj* sp24 = JUTGetVideoManager()->getRenderMode();
+ GXSetCopyFilter(GX_FALSE, NULL, GX_TRUE, sp24->vfilter);
+ GXSetTexCopySrc(x_orig, y_orig_pos, width, height);
+ GXSetTexCopyDst(halfWidth, halfHeight, GX_TF_Z16, GX_TRUE);
+ GXCopyTex(zBufferTex, GX_FALSE);
+ GXSetTexCopySrc(x_orig, y_orig_pos, width, height);
+ GXSetTexCopyDst(halfWidth, halfHeight,
+ (GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_TRUE);
+ GXCopyTex(frameBufferTex, GX_FALSE);
+ GXInitTexObj(mDoGph_gInf_c::getZbufferTexObj(), zBufferTex, halfWidth, halfHeight,
+ GX_TF_IA8, GX_CLAMP, GX_CLAMP, GX_FALSE);
+ GXInitTexObjLOD(mDoGph_gInf_c::getZbufferTexObj(), GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f,
+ GX_FALSE, GX_FALSE, GX_ANISO_1);
+ GXInitTexObj(mDoGph_gInf_c::getFrameBufferTexObj(), frameBufferTex, halfWidth, halfHeight,
+ (GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_CLAMP, GX_CLAMP,
+ GX_FALSE);
+ GXInitTexObjLOD(mDoGph_gInf_c::getFrameBufferTexObj(), GX_LINEAR, GX_LINEAR, 0.0f, 0.0f,
+ 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1);
+ GXPixModeSync();
+ GXInvalidateTexAll();
+ GXLoadTexObj(mDoGph_gInf_c::getFrameBufferTexObj(), GX_TEXMAP1);
+ GXLoadTexObj(mDoGph_gInf_c::getZbufferTexObj(), GX_TEXMAP0);
+
+ if (0.0f != g_env_light.mDemoAttentionPoint) {
+ if (g_env_light.mDemoAttentionPoint >= 0.0f) {
+ l_tevColor0.a = -254.0f + 509.0f * g_env_light.mDemoAttentionPoint;
+ } else {
+ l_tevColor0.a = -254.0f + 509.0f * (1.0f + g_env_light.mDemoAttentionPoint);
+ }
+ }
- halfWidth = width >> 1;
- halfHeight = height >> 1;
- GXSetCopyFilter(GX_FALSE, NULL, GX_TRUE, JUTGetVideoManager()->getRenderMode()->vfilter);
- GXSetTexCopySrc(x_orig, y_orig_pos, width, height);
- GXSetTexCopyDst(halfWidth, halfHeight, GX_TF_Z16, GX_TRUE);
- GXCopyTex(zBufferTex, GX_FALSE);
- GXSetTexCopySrc(x_orig, y_orig_pos, width, height);
- GXSetTexCopyDst(halfWidth, halfHeight,
- (GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_TRUE);
- GXCopyTex(frameBufferTex, GX_FALSE);
- GXInitTexObj(mDoGph_gInf_c::getZbufferTexObj(), zBufferTex, halfWidth, halfHeight,
- GX_TF_IA8, GX_CLAMP, GX_CLAMP, GX_FALSE);
- GXInitTexObjLOD(mDoGph_gInf_c::getZbufferTexObj(), GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f,
- GX_FALSE, GX_FALSE, GX_ANISO_1);
- GXInitTexObj(mDoGph_gInf_c::getFrameBufferTexObj(), frameBufferTex, halfWidth, halfHeight,
- (GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_CLAMP, GX_CLAMP,
- GX_FALSE);
- GXInitTexObjLOD(mDoGph_gInf_c::getFrameBufferTexObj(), GX_LINEAR, GX_LINEAR, 0.0f, 0.0f,
- 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1);
- GXPixModeSync();
- GXInvalidateTexAll();
- GXLoadTexObj(mDoGph_gInf_c::getFrameBufferTexObj(), GX_TEXMAP1);
- GXLoadTexObj(mDoGph_gInf_c::getZbufferTexObj(), GX_TEXMAP0);
+ #if DEBUG
+ if (g_kankyoHIO.navy.demo_adjust_SW) {
+ l_tevColor0.a = g_kankyoHIO.navy.demo_focus_pos;
+ }
+ #endif
+
+ GXSetTevColorS10(GX_TEVREG0, l_tevColor0);
+ GXSetTevSwapModeTable(GX_TEV_SWAP3, GX_CH_ALPHA, GX_CH_GREEN, GX_CH_BLUE, GX_CH_RED);
+ GXSetTevSwapMode(GX_TEVSTAGE0, GX_TEV_SWAP0, GX_TEV_SWAP3);
+ GXSetTevKAlphaSel(GX_TEVSTAGE0, GX_TEV_KASEL_1);
+ GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
+ GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO);
+ GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
+ GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_TEXA, GX_CA_KONST, GX_CA_ZERO);
+ GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_COMP_A8_EQ, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE,
+ GX_TEVPREV);
- if (0.0f != g_env_light.mDemoAttentionPoint) {
+ GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
+ GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO);
+ GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
+ GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_APREV, GX_CA_TEXA, GX_CA_A0);
+ GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_4, GX_TRUE, GX_TEVPREV);
+
+ GXSetTevOrder(GX_TEVSTAGE2, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR_NULL);
+ GXSetTevColorIn(GX_TEVSTAGE2, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC);
+ GXSetTevColorOp(GX_TEVSTAGE2, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
+ GXSetTevAlphaIn(GX_TEVSTAGE2, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV);
+ GXSetTevAlphaOp(GX_TEVSTAGE2, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
+
+ GXSetTevOrder(GX_TEVSTAGE3, GX_TEXCOORD2, GX_TEXMAP1, GX_COLOR_NULL);
+ GXSetTevColorIn(GX_TEVSTAGE3, GX_CC_CPREV, GX_CC_TEXC, GX_CC_HALF, GX_CC_ZERO);
+ GXSetTevColorOp(GX_TEVSTAGE3, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
+ GXSetTevAlphaIn(GX_TEVSTAGE3, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV);
+ GXSetTevAlphaOp(GX_TEVSTAGE3, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
+
+ GXSetZCompLoc(GX_TRUE);
+ GXSetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE);
if (g_env_light.mDemoAttentionPoint >= 0.0f) {
- l_tevColor0.a = -254.0f + 509.0f * g_env_light.mDemoAttentionPoint;
+ GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR);
+ GXSetAlphaCompare(GX_GREATER, 0, GX_AOP_OR, GX_GREATER, 0);
} else {
- l_tevColor0.a = -254.0f + 509.0f * (1.0f + g_env_light.mDemoAttentionPoint);
+ GXSetBlendMode(GX_BM_BLEND, GX_BL_INVSRCALPHA, GX_BL_SRCALPHA, GX_LO_CLEAR);
+ GXSetAlphaCompare(GX_LESS, 0xff, GX_AOP_OR, GX_LESS, 0xff);
}
- }
- GXSetTevColorS10(GX_TEVREG0, l_tevColor0);
- GXSetTevSwapModeTable(GX_TEV_SWAP3, GX_CH_ALPHA, GX_CH_GREEN, GX_CH_BLUE, GX_CH_RED);
- GXSetTevSwapMode(GX_TEVSTAGE0, GX_TEV_SWAP0, GX_TEV_SWAP3);
- GXSetTevKAlphaSel(GX_TEVSTAGE0, GX_TEV_KASEL_1);
- GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
- GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO);
- GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
- GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_TEXA, GX_CA_KONST, GX_CA_ZERO);
- GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_COMP_A8_EQ, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE,
- GX_TEVPREV);
-
- GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
- GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO);
- GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
- GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_APREV, GX_CA_TEXA, GX_CA_A0);
- GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_4, GX_TRUE, GX_TEVPREV);
-
- GXSetTevOrder(GX_TEVSTAGE2, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR_NULL);
- GXSetTevColorIn(GX_TEVSTAGE2, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC);
- GXSetTevColorOp(GX_TEVSTAGE2, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
- GXSetTevAlphaIn(GX_TEVSTAGE2, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV);
- GXSetTevAlphaOp(GX_TEVSTAGE2, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
-
- GXSetTevOrder(GX_TEVSTAGE3, GX_TEXCOORD2, GX_TEXMAP1, GX_COLOR_NULL);
- GXSetTevColorIn(GX_TEVSTAGE3, GX_CC_CPREV, GX_CC_TEXC, GX_CC_HALF, GX_CC_ZERO);
- GXSetTevColorOp(GX_TEVSTAGE3, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
- GXSetTevAlphaIn(GX_TEVSTAGE3, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV);
- GXSetTevAlphaOp(GX_TEVSTAGE3, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
-
- GXSetZCompLoc(GX_TRUE);
- GXSetZMode(GX_FALSE, GX_ALWAYS, GX_FALSE);
- if (g_env_light.mDemoAttentionPoint >= 0.0f) {
- GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR);
- GXSetAlphaCompare(GX_GREATER, 0, GX_AOP_OR, GX_GREATER, 0);
- } else {
- GXSetBlendMode(GX_BM_BLEND, GX_BL_INVSRCALPHA, GX_BL_SRCALPHA, GX_LO_CLEAR);
- GXSetAlphaCompare(GX_LESS, 0xff, GX_AOP_OR, GX_LESS, 0xff);
- }
-
- GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, g_clearColor);
- GXSetCullMode(GX_CULL_NONE);
- GXSetDither(GX_TRUE);
- GXSetNumIndStages(0);
- Mtx44 ortho;
- C_MTXOrtho(ortho, param_1->y_orig, param_1->y_orig + param_1->height, param_1->x_orig,
- param_1->x_orig + param_1->width, 0.0f, 10.0f);
- GXLoadPosMtxImm(mDoMtx_getIdentity(), 0);
- mDoMtx_stack_c::transS(0.0025f, 0.0025f, 0.0f);
- GXLoadTexMtxImm(mDoMtx_stack_c::get(), 0x1e, GX_MTX2x4);
- mDoMtx_stack_c::transS(-0.0025f, -0.0025f, 0.0f);
- GXLoadTexMtxImm(mDoMtx_stack_c::get(), 0x21, GX_MTX2x4);
- GXClearVtxDesc();
- GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
- GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
- GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0);
- GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_POS_XYZ, GX_S8, 0);
- GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3c, GX_FALSE, 0x7d);
- GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX0, 0x1e, GX_FALSE, 0x7d);
- GXSetTexCoordGen2(GX_TEXCOORD2, GX_TG_MTX2x4, GX_TG_TEX0, 0x21, GX_FALSE, 0x7d);
- GXSetNumChans(0);
- GXSetNumTexGens(3);
- GXSetNumTevStages(4);
- GXSetProjection(ortho, GX_ORTHOGRAPHIC);
- GXSetCurrentMtx(0);
+ GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, g_clearColor);
+ GXSetCullMode(GX_CULL_NONE);
+ GXSetDither(GX_TRUE);
+ GXSetNumIndStages(0);
+ Mtx44 ortho;
+ C_MTXOrtho(ortho, param_1->y_orig, param_1->y_orig + param_1->height, param_1->x_orig,
+ param_1->x_orig + param_1->width, 0.0f, 10.0f);
+ GXLoadPosMtxImm(cMtx_getIdentity(), 0);
+
+ #if DEBUG
+ mDoMtx_stack_c::transS(g_kankyoHIO.navy.demo_focus_offset_x, g_kankyoHIO.navy.demo_focus_offset_y, 0.0f);
+ #else
+ mDoMtx_stack_c::transS(0.0025f, 0.0025f, 0.0f);
+ #endif
+ GXLoadTexMtxImm(mDoMtx_stack_c::get(), 0x1e, GX_MTX2x4);
+
+ #if DEBUG
+ mDoMtx_stack_c::transS(-g_kankyoHIO.navy.demo_focus_offset_x, -g_kankyoHIO.navy.demo_focus_offset_y, 0.0f);
+ #else
+ mDoMtx_stack_c::transS(-0.0025f, -0.0025f, 0.0f);
+ #endif
+ GXLoadTexMtxImm(mDoMtx_stack_c::get(), 0x21, GX_MTX2x4);
+
+ GXClearVtxDesc();
+ GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
+ GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
+ GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0);
+ GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_POS_XYZ, GX_S8, 0);
+ GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3c);
+ GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX0, 0x1e);
+ GXSetTexCoordGen(GX_TEXCOORD2, GX_TG_MTX2x4, GX_TG_TEX0, 0x21);
+ GXSetNumChans(0);
+ GXSetNumTexGens(3);
+ GXSetNumTevStages(4);
+ GXSetProjection(ortho, GX_ORTHOGRAPHIC);
+ GXSetCurrentMtx(0);
+
+ if (l_tevColor0.a > -255 && sp8 == 1) {
+ GXBegin(GX_QUADS, GX_VTXFMT0, 4);
+ GXPosition3s16(x_orig, y_orig_pos, -5);
+ GXTexCoord2s8(0, 0);
+ GXPosition3s16(width, y_orig_pos, -5);
+ GXTexCoord2s8(1, 0);
+ GXPosition3s16(width, height, -5);
+ GXTexCoord2s8(1, 1);
+ GXPosition3s16(x_orig, height, -5);
+ GXTexCoord2s8(0, 1);
+ GXEnd();
+ }
- if (l_tevColor0.a > -255) {
- GXBegin(GX_QUADS, GX_VTXFMT0, 4);
- GXPosition3s16(x_orig, y_orig_pos, -5);
- GXTexCoord2s8(0, 0);
- GXPosition3s16(width, y_orig_pos, -5);
- GXTexCoord2s8(1, 0);
- GXPosition3s16(width, height, -5);
- GXTexCoord2s8(1, 1);
- GXPosition3s16(x_orig, height, -5);
- GXTexCoord2s8(0, 1);
- GXEnd();
+ GXSetTevSwapModeTable(GX_TEV_SWAP3, GX_CH_BLUE, GX_CH_BLUE, GX_CH_BLUE, GX_CH_ALPHA);
+ GXSetTevSwapMode(GX_TEVSTAGE0, GX_TEV_SWAP0, GX_TEV_SWAP0);
+ GXSetProjection(param_0->projMtx, GX_PERSPECTIVE);
+ #if DEBUG
}
-
- GXSetTevSwapModeTable(GX_TEV_SWAP3, GX_CH_BLUE, GX_CH_BLUE, GX_CH_BLUE, GX_CH_ALPHA);
- GXSetTevSwapMode(GX_TEVSTAGE0, GX_TEV_SWAP0, GX_TEV_SWAP0);
- GXSetProjection(param_0->projMtx, GX_PERSPECTIVE);
+ #endif
}
}
/* 800091C0-800094B4 003B00 02F4+00 1/1 0/0 0/0 .text trimming__FP10view_classP15view_port_class
*/
static void trimming(view_class* param_0, view_port_class* param_1) {
+ (void)param_0;
+
s16 y_orig = (int)param_1->y_orig & ~7;
s16 y_orig_pos = y_orig < 0 ? 0 : y_orig;
if ((y_orig_pos == 0) && (param_1->scissor.y_orig != param_1->y_orig ||
@@ -561,8 +1068,8 @@ static void trimming(view_class* param_0, view_port_class* param_1) {
GXSetDither(GX_TRUE);
GXSetNumIndStages(0);
Mtx44 ortho;
- C_MTXOrtho(ortho, 0.0f, 448.0f, 0.0f, 608.0f, 0.0f, 10.0f);
- GXLoadPosMtxImm(mDoMtx_getIdentity(), 0);
+ C_MTXOrtho(ortho, 0.0f, FB_HEIGHT, 0.0f, FB_WIDTH, 0.0f, 10.0f);
+ GXLoadPosMtxImm(cMtx_getIdentity(), 0);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGBA4, 0);
@@ -570,13 +1077,13 @@ static void trimming(view_class* param_0, view_port_class* param_1) {
GXSetCurrentMtx(0);
GXBegin(GX_QUADS, GX_VTXFMT0, 8);
GXPosition3s16(0, 0, -5);
- GXPosition3s16(0x260, 0, -5);
- GXPosition3s16(0x260, sc_top, -5);
+ GXPosition3s16(FB_WIDTH, 0, -5);
+ GXPosition3s16(FB_WIDTH, sc_top, -5);
GXPosition3s16(0, sc_top, -5);
GXPosition3s16(0, sc_bottom, -5);
- GXPosition3s16(0x260, sc_bottom, -5);
- GXPosition3s16(0x260, 0x1c0, -5);
- GXPosition3s16(0, 0x1c0, -5);
+ GXPosition3s16(FB_WIDTH, sc_bottom, -5);
+ GXPosition3s16(FB_WIDTH, FB_HEIGHT, -5);
+ GXPosition3s16(0, FB_HEIGHT, -5);
GXEnd();
}
GXSetScissor(param_1->scissor.x_orig, param_1->scissor.y_orig, param_1->scissor.width,
@@ -584,6 +1091,7 @@ static void trimming(view_class* param_0, view_port_class* param_1) {
}
/* 800094B4-80009544 003DF4 0090+00 2/2 1/1 0/0 .text mDoGph_drawFilterQuad__FScSc */
+#if !PLATFORM_WII
void mDoGph_drawFilterQuad(s8 param_0, s8 param_1) {
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition2s8(0, 0);
@@ -596,13 +1104,16 @@ void mDoGph_drawFilterQuad(s8 param_0, s8 param_1) {
GXTexCoord2s8(0, 1);
GXEnd();
}
+#endif
/* 80009544-800095F8 003E84 00B4+00 0/0 1/1 0/0 .text create__Q213mDoGph_gInf_c7bloom_cFv
*/
void mDoGph_gInf_c::bloom_c::create() {
if (m_buffer == NULL) {
- u32 size = GXGetTexBufferSize(304, 224, 6, GX_FALSE, 0);
+ u32 size = GXGetTexBufferSize(FB_WIDTH / 2, FB_HEIGHT / 2, 6, GX_FALSE, 0);
m_buffer = mDoExt_getArchiveHeap()->alloc(size, -32);
+ JUT_ASSERT(1621, m_buffer != NULL);
+
mEnable = false;
mMode = 0;
mPoint = 128;
@@ -625,11 +1136,10 @@ void mDoGph_gInf_c::bloom_c::remove() {
/* 80009650-8000A160 003F90 0B10+00 1/1 0/0 0/0 .text draw__Q213mDoGph_gInf_c7bloom_cFv
*/
void mDoGph_gInf_c::bloom_c::draw() {
- bool enabled = false;
- enabled = mEnable && m_buffer != NULL;
+ bool enabled = mEnable && m_buffer != NULL;
if (mMonoColor.a != 0 || enabled) {
- GXSetViewport(0.0f, 0.0f, 608.0f, 448.0f, 0.0f, 1.0f);
- GXSetScissor(0, 0, 0x260, 0x1c0);
+ GXSetViewport(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, 0.0f, 1.0f);
+ GXSetScissor(0, 0, FB_WIDTH, FB_HEIGHT);
GXLoadTexObj(getFrameBufferTexObj(), GX_TEXMAP0);
GXSetNumChans(0);
GXSetNumTexGens(1);
@@ -645,13 +1155,17 @@ void mDoGph_gInf_c::bloom_c::draw() {
GXSetDither(1);
Mtx44 ortho;
C_MTXOrtho(ortho, 0.0f, 4.0f, 0.0f, 4.0f, 0.0f, 10.0f);
- GXLoadPosMtxImm(mDoMtx_getIdentity(), 0);
+ GXLoadPosMtxImm(cMtx_getIdentity(), 0);
GXSetProjection(ortho, GX_ORTHOGRAPHIC);
GXSetCurrentMtx(0);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
+ #if PLATFORM_WII
+ GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGB8, 0);
+ #else
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGB, GX_RGB8, 0);
+ #endif
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGB8, 0);
if (mMonoColor.a != 0) {
GXSetNumTevStages(1);
@@ -668,8 +1182,8 @@ void mDoGph_gInf_c::bloom_c::draw() {
mDoGph_drawFilterQuad(4, 4);
}
if (enabled) {
- GXSetTexCopySrc(0, 0, 0x130, 0xe0);
- GXSetTexCopyDst(0x130, 0xe0, GX_TF_RGBA8, 0);
+ GXSetTexCopySrc(0, 0, FB_WIDTH / 2, FB_HEIGHT / 2);
+ GXSetTexCopyDst(FB_WIDTH / 2, FB_HEIGHT / 2, GX_TF_RGBA8, 0);
GXCopyTex(m_buffer, 0);
GXSetNumTevStages(3);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
@@ -706,27 +1220,28 @@ void mDoGph_gInf_c::bloom_c::draw() {
GXSetTevSwapMode(GX_TEVSTAGE0, GX_TEV_SWAP0, GX_TEV_SWAP0);
GXSetTevSwapMode(GX_TEVSTAGE1, GX_TEV_SWAP0, GX_TEV_SWAP0);
void* zBufferTex = getZbufferTex();
- GXSetTexCopySrc(0, 0, 0x130, 0xe0);
- GXSetTexCopyDst(0x98, 0x70, GX_TF_RGBA8, GX_TRUE);
+ GXSetTexCopySrc(0, 0, FB_WIDTH / 2, FB_HEIGHT / 2);
+ GXSetTexCopyDst(FB_WIDTH / 4, FB_HEIGHT / 4, GX_TF_RGBA8, GX_TRUE);
GXCopyTex(zBufferTex, 0);
GXTexObj auStack_c0;
- GXInitTexObj(&auStack_c0, zBufferTex, 0x98, 0x70, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP,
+ GXInitTexObj(&auStack_c0, zBufferTex, FB_WIDTH / 4, FB_HEIGHT / 4, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP,
GX_FALSE);
GXInitTexObjLOD(&auStack_c0, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE,
GX_ANISO_1);
GXLoadTexObj(&auStack_c0, GX_TEXMAP0);
GXSetNumTexGens(8);
u32 iVar11 = 0x1e;
- s16 sVar10 = 0;
+ int sVar10 = 0;
GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3c);
- for (int texCoord = (int)GX_TEXCOORD1; texCoord < (int)GX_MAX_TEXCOORD;
- texCoord++, iVar11 += 3, sVar10 += 0x2492)
- {
+ for (int texCoord = (int)GX_TEXCOORD1; texCoord < (int)GX_MAX_TEXCOORD; texCoord++) {
GXSetTexCoordGen((GXTexCoordID)texCoord, GX_TG_MTX2x4, GX_TG_TEX0, iVar11);
f32 dVar15 = mBlureSize * (1.0f / 6400.0f);
mDoMtx_stack_c::transS((dVar15 * cM_scos(sVar10)) * getInvScale(),
dVar15 * cM_ssin(sVar10), 0.0f);
GXLoadTexMtxImm(mDoMtx_stack_c::get(), iVar11, GX_MTX2x4);
+
+ iVar11 += 3;
+ sVar10 += 0x2492;
}
GXSetNumTevStages(8);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
@@ -750,11 +1265,11 @@ void mDoGph_gInf_c::bloom_c::draw() {
}
GXPixModeSync();
mDoGph_drawFilterQuad(1, 1);
- GXSetTexCopySrc(0, 0, 0x98, 0x70);
- GXSetTexCopyDst(0x4c, 0x38, GX_TF_RGBA8, GX_TRUE);
+ GXSetTexCopySrc(0, 0, FB_WIDTH / 4, FB_HEIGHT / 4);
+ GXSetTexCopyDst(FB_WIDTH / 8, FB_HEIGHT / 8, GX_TF_RGBA8, GX_TRUE);
GXCopyTex(zBufferTex, GX_FALSE);
GXTexObj auStack_e0;
- GXInitTexObj(&auStack_e0, zBufferTex, 0x4c, 0x38, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP,
+ GXInitTexObj(&auStack_e0, zBufferTex, FB_WIDTH / 8, FB_HEIGHT / 8, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP,
GX_FALSE);
GXInitTexObjLOD(&auStack_c0, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE,
GX_ANISO_1);
@@ -763,10 +1278,10 @@ void mDoGph_gInf_c::bloom_c::draw() {
GXPixModeSync();
GXInvalidateTexAll();
mDoGph_drawFilterQuad(1, 1);
- GXSetTexCopySrc(0, 0, 0x98, 0x70);
- GXSetTexCopyDst(0x98, 0x70, GX_TF_RGBA8, GX_FALSE);
+ GXSetTexCopySrc(0, 0, FB_WIDTH / 4, FB_HEIGHT / 4);
+ GXSetTexCopyDst(FB_WIDTH / 4, FB_HEIGHT / 4, GX_TF_RGBA8, GX_FALSE);
GXCopyTex(zBufferTex, GX_FALSE);
- GXInitTexObj(&auStack_e0, m_buffer, 0x130, 0xe0, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP,
+ GXInitTexObj(&auStack_e0, m_buffer, FB_WIDTH / 2, FB_HEIGHT / 2, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP,
GX_FALSE);
GXInitTexObjLOD(&auStack_e0, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE,
GX_ANISO_1);
@@ -793,13 +1308,7 @@ void mDoGph_gInf_c::bloom_c::draw() {
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0);
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE,
GX_TEVPREV);
- GXBlendFactor blendFactor;
- if (mMode == 1) {
- blendFactor = GX_BL_INVDSTCLR;
- } else {
- blendFactor = GX_BL_ONE;
- }
- GXSetBlendMode(GX_BM_BLEND, blendFactor, GX_BL_SRCALPHA, GX_LO_OR);
+ GXSetBlendMode(GX_BM_BLEND, mMode == 1 ? GX_BL_INVDSTCLR : GX_BL_ONE, GX_BL_SRCALPHA, GX_LO_OR);
GXPixModeSync();
GXInvalidateTexAll();
mDoGph_drawFilterQuad(4, 4);
@@ -810,32 +1319,31 @@ void mDoGph_gInf_c::bloom_c::draw() {
/* 8000A160-8000A290 004AA0 0130+00 1/1 0/0 0/0 .text
* retry_captue_frame__FP10view_classP15view_port_classi */
static void retry_captue_frame(view_class* param_0, view_port_class* param_1, int param_2) {
- s16 x_orig;
- s16 y_orig;
- s16 y_orig_pos;
- s16 width;
- s16 height;
- void* tex;
-
- x_orig = (int)param_1->x_orig & 0xFFFFFFF8;
- y_orig = (int)param_1->y_orig & 0xFFFFFFF8;
- y_orig_pos = y_orig < 0 ? 0 : y_orig;
- width = (int)param_1->width & 0xFFFFFFF8;
- height = (int)param_1->height & 0xFFFFFFF8;
- tex = mDoGph_gInf_c::mFrameBufferTex;
+ (void)param_0;
+ (void)param_2;
+
+ s16 x_orig = (int)param_1->x_orig & 0xFFFFFFF8;
+ s16 y_orig = (int)param_1->y_orig & 0xFFFFFFF8;
+ s16 y_orig_pos = y_orig < 0 ? 0 : y_orig;
+ s16 width = (int)param_1->width & 0xFFFFFFF8;
+ s16 height = (int)param_1->height & 0xFFFFFFF8;
+ void* tex = (void*)mDoGph_gInf_c::getFrameBufferTex();
+ u16 var_r24;
+ u16 var_r23;
if (!dComIfGp_isPauseFlag()) {
if (y_orig < 0) {
height += y_orig;
y_orig = -y_orig >> 1;
- tex = (char*)tex + GXGetTexBufferSize(304, y_orig,
+ tex = (char*)tex + GXGetTexBufferSize(FB_WIDTH / 2, y_orig,
mDoGph_gInf_c::getFrameBufferTimg()->format,
GX_FALSE, 0);
}
+ var_r24 = width >> 1;
+ var_r23 = height >> 1;
GXSetTexCopySrc(x_orig, y_orig_pos, width, height);
- GXSetTexCopyDst(width >> 1, height >> 1,
- (GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_TRUE);
+ GXSetTexCopyDst(var_r24, var_r23, (GXTexFmt)mDoGph_gInf_c::getFrameBufferTimg()->format, GX_TRUE);
GXCopyTex(tex, GX_FALSE);
GXPixModeSync();
GXInvalidateTexAll();
@@ -867,14 +1375,18 @@ static void motionBlure(view_class* param_0) {
GXSetDither(GX_TRUE);
Mtx44 ortho;
C_MTXOrtho(ortho, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 10.0f);
- GXLoadPosMtxImm(mDoMtx_getIdentity(), 0);
+ GXLoadPosMtxImm(cMtx_getIdentity(), 0);
GXLoadTexMtxImm(mDoGph_gInf_c::getBlureMtx(), 0x1e, GX_MTX2x4);
GXSetProjection(ortho, GX_ORTHOGRAPHIC);
GXSetCurrentMtx(0);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
+ #if PLATFORM_WII
+ GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGB8, 0);
+ #else
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGB, GX_RGB8, 0);
+ #endif
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGB8, 0);
mDoGph_drawFilterQuad(1, 1);
GXSetProjection(param_0->projMtx, GX_PERSPECTIVE);
@@ -898,10 +1410,32 @@ static void setLight() {
GXLoadLightObjImm(&obj, GX_LIGHT0);
}
+static void captureScreenSetProjection(Mtx44& m) {
+ // NONMATCHING
+}
+
+static void captureScreenSetPort() {
+ Mtx44 m;
+ captureScreenSetProjection(m);
+}
+
+static void captureScreenSetScissor(scissor_class* scissor) {
+ // NONMATCHING
+}
+
+static void captureScreenPerspDrawInfo(JPADrawInfo&) {
+ // NONMATCHING
+}
+
/* 8000A58C-8000A604 004ECC 0078+00 1/1 0/0 0/0 .text drawItem3D__Fv */
static void drawItem3D() {
Mtx item_mtx;
dMenu_Collect3D_c::setupItem3D(item_mtx);
+
+ #if DEBUG
+ captureScreenSetPort();
+ #endif
+
setLight();
j3dSys.setViewMtx(item_mtx);
GXSetClipMode(GX_CLIP_DISABLE);
@@ -912,41 +1446,74 @@ static void drawItem3D() {
/* 8000A604-8000B118 004F44 0B14+00 0/0 1/0 0/0 .text mDoGph_Painter__Fv */
int mDoGph_Painter() {
+ #if DEBUG
+ drawHeapMap();
+ #endif
+
dComIfGp_particle_calcMenu();
JFWDisplay::getManager()->setFader(mDoGph_gInf_c::getFader());
mDoGph_gInf_c::setClearColor(mDoGph_gInf_c::getBackColor());
mDoGph_gInf_c::beginRender();
+
+ #if DEBUG
+ fapGm_HIO_c::startCpuTimer();
+ #endif
+
GXSetAlphaUpdate(GX_DISABLE);
mDoGph_gInf_c::setBackColor(g_clearColor);
j3dSys.drawInit();
GXSetDither(GX_ENABLE);
- J2DOrthoGraph ortho(0.0f, 0.0f, 608.0f, 448.0f, -1.0f, 1.0f);
- ortho.setOrtho(JGeometry::TBox2<f32>(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMinYF(),
- mDoGph_gInf_c::getWidthF(), mDoGph_gInf_c::getHeightF()),
+ J2DOrthoGraph ortho(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, -1.0f, 1.0f);
+ ortho.setOrtho(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMinYF(),
+ mDoGph_gInf_c::getWidthF(), mDoGph_gInf_c::getHeightF(),
-1.0f, 1.0f);
ortho.setPort();
+ #if DEBUG
+ captureScreenSetPort();
+ #endif
+
dComIfGp_setCurrentGrafPort(&ortho);
dComIfGd_drawCopy2D();
+ #if DEBUG
+ // "↓↓↓↓↓↓↓↓↓↓ CPU time measuring start ↓↓↓↓↓↓↓↓↓↓"
+ fapGm_HIO_c::printCpuTimer("\n↓↓↓↓↓↓↓↓↓↓ CPU時間計測開始 ↓↓↓↓↓↓↓↓↓↓\n");
+
+ // "drawing up to 2D drawing for screen capture (Rendering)"
+ fapGm_HIO_c::stopCpuTimer("画面キャプチャー用2D描画まで(レンダリング)");
+ #endif
+
if (dComIfGp_getWindowNum() != 0) {
dDlst_window_c* window_p = dComIfGp_getWindow(0);
int camera_id = window_p->getCameraID();
camera_class* camera_p = dComIfGp_getCamera(camera_id);
if (camera_p != NULL) {
+ #if DEBUG
+ fapGm_HIO_c::startCpuTimer();
+ #endif
+
dComIfGd_imageDrawShadow(camera_p->viewMtx);
+
+ #if DEBUG
+ // "drawing Shadow Texture (Rendering)"
+ fapGm_HIO_c::stopCpuTimer("影テクスチャー描画(レンダリング)");
+
+ fapGm_HIO_c::startCpuTimer();
+ #endif
+
view_port_class* view_port = window_p->getViewPort();
if (view_port->x_orig != 0.0f || view_port->y_orig != 0.0f) {
view_port_class new_port;
new_port.x_orig = 0.0f;
new_port.y_orig = 0.0f;
- new_port.width = 608.0f;
- new_port.height = 448.0f;
+ new_port.width = FB_WIDTH;
+ new_port.height = FB_HEIGHT;
new_port.near_z = view_port->near_z;
new_port.far_z = view_port->far_z;
new_port.scissor = view_port->scissor;
@@ -954,6 +1521,10 @@ int mDoGph_Painter() {
view_port = &new_port;
}
+ #if DEBUG
+ captureScreenSetScissor(&view_port->scissor);
+ #endif
+
GXSetViewport(view_port->x_orig, view_port->y_orig, view_port->width,
view_port->height, view_port->near_z, view_port->far_z);
GXSetScissor(view_port->x_orig, view_port->y_orig, view_port->width,
@@ -961,10 +1532,40 @@ int mDoGph_Painter() {
JPADrawInfo draw_info(camera_p->viewMtx, camera_p->fovy, camera_p->aspect);
+ #if WIDESCREEN_SUPPORT
+ if (mDoGph_gInf_c::isWideZoom()) {
+ Mtx44 sp140;
+ draw_info.getPrjMtx(sp140);
+
+ sp140[0][0] *= 2.0f;
+ sp140[0][2] = 0.0f;
+ sp140[1][1] *= -2.0f;
+ sp140[1][2] = 0.0f;
+ sp140[2][2] = -2.0f;
+ mDoGph_gInf_c::setWideZoomProjection(sp140);
+
+ sp140[0][0] *= 0.5f;
+ sp140[0][2] = (0.5f * sp140[0][2]) - 0.5f;
+ sp140[1][1] *= -0.5f;
+ sp140[1][2] = (-0.5f * sp140[1][2]) - 0.5f;
+ sp140[2][2] = 0.0f;
+ draw_info.setPrjMtx(sp140);
+ }
+ #endif
+
+ #if DEBUG
+ captureScreenPerspDrawInfo(draw_info);
+ #endif
+
dComIfGp_setCurrentWindow(window_p);
dComIfGp_setCurrentView(camera_p);
dComIfGp_setCurrentViewport(view_port);
GXSetProjection(camera_p->projMtx, GX_PERSPECTIVE);
+
+ #if DEBUG
+ captureScreenSetProjection(camera_p->projMtx);
+ #endif
+
PPCSync();
j3dSys.setViewMtx(camera_p->viewMtx);
@@ -973,91 +1574,285 @@ int mDoGph_Painter() {
dComIfGd_drawXluListSky();
GXSetClipMode(GX_CLIP_ENABLE);
+
+ #if DEBUG
+ // "drawing up to Background (Translucent) (Rendering)"
+ fapGm_HIO_c::stopCpuTimer("背景(半透明)描画まで(レンダリング)");
+
+ fapGm_HIO_c::startCpuTimer();
+ #endif
+
dComIfGd_drawOpaListBG();
dComIfGd_drawOpaListDarkBG();
dComIfGd_drawOpaListMiddle();
- dComIfGp_particle_drawFogPri0_B(&draw_info);
- dComIfGp_particle_drawNormalPri0_B(&draw_info);
+ #if DEBUG
+ if (fapGmHIO_getParticle())
+ #endif
+ {
+ dComIfGp_particle_drawFogPri0_B(&draw_info);
+ }
+
+ #if DEBUG
+ if (fapGmHIO_getParticle())
+ #endif
+ {
+ dComIfGp_particle_drawNormalPri0_B(&draw_info);
+ }
+
+ #if DEBUG
+ // "drawing up to Terrain (Opaque)"
+ fapGm_HIO_c::stopCpuTimer("地形(不透明)描画2まで(レンダリング)");
+
+ fapGm_HIO_c::startCpuTimer();
+ #endif
dComIfGd_drawShadow(camera_p->viewMtx);
+ #if DEBUG
+ // "shadow drawing (Rendering)"
+ fapGm_HIO_c::stopCpuTimer("影描画(レンダリング)");
+
+ fapGm_HIO_c::startCpuTimer();
+ #endif
+
dComIfGd_drawOpaList();
- dComIfGd_drawOpaListDark();
+
+ #if DEBUG
+ if (g_kankyoHIO.navy.field_0x30d) {
+ if (dKy_darkworld_check() != TRUE) {
+ dComIfGd_drawOpaListDark();
+ }
+ } else
+ #endif
+ {
+ dComIfGd_drawOpaListDark();
+ }
+
dComIfGd_drawOpaListPacket();
+
+ #if DEBUG
+ // "drawing up to special-use drawing (Opaque) except J3D (Rendering)"
+ fapGm_HIO_c::stopCpuTimer("J3D以外などの特殊用(不透明)描画まで(レンダリング)");
+
+ fapGm_HIO_c::startCpuTimer();
+ #endif
+
dComIfGd_drawXluListBG();
dComIfGd_drawXluListDarkBG();
- dComIfGp_particle_drawFogPri0_A(&draw_info);
- dComIfGp_particle_drawNormalPri0_A(&draw_info);
+ #if DEBUG
+ if (fapGmHIO_getParticle())
+ #endif
+ {
+ dComIfGp_particle_drawFogPri0_A(&draw_info);
+ dComIfGp_particle_drawNormalPri0_A(&draw_info);
+ }
+
+ #if DEBUG
+ // "drawing up to Terrain (Translucent)"
+ fapGm_HIO_c::stopCpuTimer("地形(半透明)描画2まで(レンダリング)");
+
+ fapGm_HIO_c::startCpuTimer();
+ #endif
dComIfGd_drawXluList();
- dComIfGd_drawXluListDark();
+
+ #if DEBUG
+ if (g_kankyoHIO.navy.field_0x30d) {
+ if (dKy_darkworld_check() != TRUE) {
+ dComIfGd_drawXluListDark();
+ }
+ } else
+ #endif
+ {
+ dComIfGd_drawXluListDark();
+ }
+
+ #if DEBUG
+ // "drawing up to Object (Translucent)"
+ fapGm_HIO_c::stopCpuTimer("オブジェクト(半透明)描画2まで(レンダリング)");
+ #endif
j3dSys.reinitGX();
GXSetClipMode(GX_CLIP_ENABLE);
if (!dComIfGp_isPauseFlag()) {
+ #if DEBUG
+ fapGm_HIO_c::startCpuTimer();
+ #endif
+
motionBlure(camera_p);
+
+ #if DEBUG
+ // "blur filter (Rendering)"
+ fapGm_HIO_c::stopCpuTimer("ブラーフィルター(レンダリング)");
+
+ fapGm_HIO_c::startCpuTimer();
+ #endif
+
drawDepth2(camera_p, view_port, dComIfGp_getCameraZoomForcus(camera_id));
GXInvalidateTexAll();
GXSetClipMode(GX_CLIP_ENABLE);
- if (g_env_light.is_blure == 0) {
- dComIfGd_drawOpaListInvisible();
- dComIfGd_drawXluListInvisible();
+ #if DEBUG
+ // "depth of field (Rendering)"
+ fapGm_HIO_c::stopCpuTimer("被写界深度フィルター(レンダリング)");
+
+ fapGm_HIO_c::startCpuTimer();
+ #endif
+
+ #if DEBUG
+ if (g_kankyoHIO.navy.field_0x30d == 0 || dKy_darkworld_check() != TRUE)
+ #endif
+ {
+ if (g_env_light.is_blure == 0) {
+ dComIfGd_drawOpaListInvisible();
+ dComIfGd_drawXluListInvisible();
+ }
}
+
- dComIfGp_particle_drawFogPri4(&draw_info);
- dComIfGp_particle_drawProjection(&draw_info);
+ #if DEBUG
+ // "drawing up to projection (Translucent)"
+ fapGm_HIO_c::stopCpuTimer("投影用(半透明)描画まで(レンダリング)");
+
+ fapGm_HIO_c::startCpuTimer();
+ #endif
+
+ #if DEBUG
+ if (fapGmHIO_getParticle())
+ #endif
+ {
+ dComIfGp_particle_drawFogPri4(&draw_info);
+ dComIfGp_particle_drawProjection(&draw_info);
+ }
+
+ #if DEBUG
+ // "drawing up to projection particle (Rendering)"
+ fapGm_HIO_c::stopCpuTimer("投影パーティクル描画まで(レンダリング)");
+
+ fapGm_HIO_c::startCpuTimer();
+ #endif
dComIfGd_drawListZxlu();
+
+ #if DEBUG
+ // "drawing up to 2-draw Z-update translucent (Rendering)"
+ fapGm_HIO_c::stopCpuTimer("2度描きZ更新半透明描画まで(レンダリング)");
+
+ fapGm_HIO_c::startCpuTimer();
+ #endif
+
GXSetClipMode(GX_CLIP_ENABLE);
- dComIfGd_drawOpaListFilter();
+ #if DEBUG
+ if (g_kankyoHIO.navy.field_0x30d) {
+ if (dKy_darkworld_check() != TRUE) {
+ dComIfGd_drawOpaListFilter();
+ }
+ } else
+ #endif
+ {
+ dComIfGd_drawOpaListFilter();
+ }
+
+ #if DEBUG
+ // "drawing up to filter draw (Rendering)"
+ fapGm_HIO_c::stopCpuTimer("フィルター用描画まで(レンダリング)");
+
+ fapGm_HIO_c::startCpuTimer();
+ #endif
+
GXSetClipMode(GX_CLIP_ENABLE);
- dComIfGp_particle_drawFogPri1(&draw_info);
- dComIfGp_particle_draw(&draw_info);
- dComIfGp_particle_drawFogPri2(&draw_info);
- dComIfGp_particle_drawFog(&draw_info);
- dComIfGp_particle_drawFogPri3(&draw_info);
- dComIfGp_particle_drawP1(&draw_info);
- dComIfGp_particle_drawDarkworld(&draw_info);
+ #if DEBUG
+ if (fapGmHIO_getParticle())
+ #endif
+ {
+ dComIfGp_particle_drawFogPri1(&draw_info);
+ dComIfGp_particle_draw(&draw_info);
+ dComIfGp_particle_drawFogPri2(&draw_info);
+ dComIfGp_particle_drawFog(&draw_info);
+ dComIfGp_particle_drawFogPri3(&draw_info);
+ dComIfGp_particle_drawP1(&draw_info);
+ dComIfGp_particle_drawDarkworld(&draw_info);
+ }
+
+ #if DEBUG
+ // "drawing up to dark world particle (Rendering)"
+ fapGm_HIO_c::stopCpuTimer("闇世界でもカラーのパーティクル描画まで(レンダリング)");
+
+ fapGm_HIO_c::startCpuTimer();
+ #endif
retry_captue_frame(camera_p, view_port, dComIfGp_getCameraZoomForcus(camera_id));
+
+ #if DEBUG
+ // "Frame Buffer capture 2nd time (Rendering)"
+ fapGm_HIO_c::stopCpuTimer("フレームバッファキャプチャー2回目(レンダリング)");
+
+ fapGm_HIO_c::startCpuTimer();
+ #endif
+
GXSetClipMode(GX_CLIP_ENABLE);
- if (g_env_light.is_blure == 1) {
- dComIfGd_drawOpaListInvisible();
- dComIfGd_drawXluListInvisible();
+ #if DEBUG
+ if (g_kankyoHIO.navy.field_0x30d == 0 || dKy_darkworld_check() != TRUE)
+ #endif
+ {
+ if (g_env_light.is_blure == 1) {
+ dComIfGd_drawOpaListInvisible();
+ dComIfGd_drawXluListInvisible();
+ }
}
- dComIfGp_particle_drawScreen(&draw_info);
+ #if DEBUG
+ if (fapGmHIO_getParticle())
+ #endif
+ {
+ dComIfGp_particle_drawScreen(&draw_info);
+ }
+
+ #if DEBUG
+ // "drawing up to full projection particle (Rendering)"
+ fapGm_HIO_c::stopCpuTimer("完全投影用パーティクル描画まで(レンダリング)");
+
+ fapGm_HIO_c::startCpuTimer();
+ #endif
+
GXSetClipMode(GX_CLIP_ENABLE);
dComIfGd_drawIndScreen();
- if (!strcmp(dComIfGp_getStartStageName(), "F_SP124")) {
+ if (strcmp(dComIfGp_getStartStageName(), "F_SP124") == 0) {
retry_captue_frame(camera_p, view_port,
dComIfGp_getCameraZoomForcus(camera_id));
}
- GXSetViewport(0.0f, 0.0f, 608.0f, 448.0f, 0.0f, 1.0f);
+ GXSetViewport(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT, 0.0f, 1.0f);
Mtx m2;
Mtx44 m;
- C_MTXPerspective(m, 60.0f, 1.3571428f, 1.0f, 100000.0f);
+ C_MTXPerspective(m, AREG_F(8) + 60.0f, mDoGph_gInf_c::getAspect(), 1.0f, 100000.0f);
GXSetProjection(m, GX_PERSPECTIVE);
- cXyz sp38c(0.0f, 0.0f, -2.0f);
+ cXyz sp38c(0.0f, 0.0f, AREG_F(7) + -2.0f);
cXyz sp398(0.0f, 1.0f, 0.0f);
- mDoMtx_lookAt(m2, &sp38c, &cXyz::Zero, &sp398, 0);
+ cMtx_lookAt(m2, &sp38c, &cXyz::Zero, &sp398, 0);
j3dSys.setViewMtx(m2);
dComIfGd_drawXluList2DScreen();
j3dSys.setViewMtx(camera_p->viewMtx);
GXSetProjection(camera_p->projMtx, GX_PERSPECTIVE);
+
+ #if DEBUG
+ // "drawing up to full projection screen (Rendering)"
+ fapGm_HIO_c::stopCpuTimer("完全投影用スクリーン描画まで(レンダリング)");
+
+ fapGm_HIO_c::startCpuTimer();
+ #endif
+
j3dSys.reinitGX();
if ((g_env_light.camera_water_in_status || !strcmp(dComIfGp_getStartStageName(), "D_MN08")))
@@ -1070,86 +1865,212 @@ int mDoGph_Painter() {
}
}
+ #if DEBUG
+ // "Frame Buffer capture 3rd time (Rendering)"
+ fapGm_HIO_c::stopCpuTimer("※フレームバッファキャプチャー3回目(レンダリング)");
+
+ fapGm_HIO_c::startCpuTimer();
+ #endif
+
mDoGph_gInf_c::getBloom()->draw();
j3dSys.setViewMtx(camera_p->viewMtx);
GXSetProjection(camera_p->projMtx, GX_PERSPECTIVE);
+ #if DEBUG
+ if (g_kankyoHIO.navy.field_0x30d != 0 && dKy_darkworld_check() == TRUE) {
+ dComIfGd_drawOpaListDark();
+ dComIfGd_drawXluListDark();
+ retry_captue_frame(camera_p, view_port,
+ dComIfGp_getCameraZoomForcus(camera_id));
+ dComIfGd_drawOpaListInvisible();
+ dComIfGd_drawXluListInvisible();
+ dComIfGd_drawOpaListFilter();
+ }
+ #endif
+
dComIfGd_drawOpaList3Dlast();
- ortho.setOrtho(
- JGeometry::TBox2<f32>(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMinYF(),
- mDoGph_gInf_c::getWidthF(), mDoGph_gInf_c::getHeightF()),
- 100000.0f, -100000.0f);
- ortho.setPort();
- Mtx m3;
- MTXTrans(m3, 304.0f, 224.0f, 0.0f);
- JPADrawInfo draw_info2(m3, 0.0f, 448.0f, 0.0f, 608.0f);
- dComIfGp_particle_draw2Dgame(&draw_info2);
+ #if DEBUG
+ // "saturation add filter (Rendering)"
+ fapGm_HIO_c::stopCpuTimer("飽和加算フィルター(レンダリング)");
+
+ fapGm_HIO_c::startCpuTimer();
+ #endif
+
+ #if DEBUG
+ if (fapGmHIO_getParticle())
+ #endif
+ {
+ #if WIDESCREEN_SUPPORT
+ if (mDoGph_gInf_c::isWideZoom()) {
+ ortho.setOrtho(0.0f, 0.0f, 608.0f, 448.0f, 100000.0f, -100000.0f);
+ } else
+ #endif
+ {
+ ortho.setOrtho(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMinYF(),
+ mDoGph_gInf_c::getWidthF(), mDoGph_gInf_c::getHeightF(),
+ 100000.0f, -100000.0f);
+ }
+ ortho.setPort();
+
+ Mtx m3;
+ MTXTrans(m3, FB_WIDTH / 2, FB_HEIGHT / 2, 0.0f);
+ JPADrawInfo draw_info2(m3, 0.0f, FB_HEIGHT, 0.0f, FB_WIDTH);
+ dComIfGp_particle_draw2Dgame(&draw_info2);
+ }
trimming(camera_p, view_port);
if (strcmp(dComIfGp_getStartStageName(), "F_SP127") != 0 &&
- (mDoGph_gInf_c::mFade & 0x80) == 0)
+ (mDoGph_gInf_c::isFade() & 0x80) == 0)
{
mDoGph_gInf_c::calcFade();
}
+
+ #if DEBUG
+ // "color fade draw (Rendering)"
+ fapGm_HIO_c::stopCpuTimer("カラーフェード描画(レンダリング)");
+ #endif
}
}
}
+ #if DEBUG
+ fapGm_HIO_c::startCpuTimer();
+ #endif
+
+ #if PLATFORM_WII
+ if (data_8053a730) {
+ GXSetTexCopySrc(0, 0, FB_WIDTH, FB_HEIGHT);
+ GXSetTexCopyDst(FB_WIDTH, FB_HEIGHT, (GXTexFmt)mDoGph_gInf_c::m_fullFrameBufferTimg->format, 0);
+ GXCopyTex(mDoGph_gInf_c::m_fullFrameBufferTex, 0);
+ GXPixModeSync();
+ GXInvalidateTexAll();
+
+ mDoLib_setResTimgObj(mDoGph_gInf_c::m_fullFrameBufferTimg, &mDoGph_gInf_c::m_fullFrameBufferTexObj, 0, NULL);
+ GXLoadTexObj(&mDoGph_gInf_c::m_fullFrameBufferTexObj, GX_TEXMAP0);
+
+ GXSetNumChans(0);
+ GXSetNumIndStages(0);
+ GXSetNumTexGens(1);
+ GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C);
+ GXSetNumTevStages(1);
+ GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
+ GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC);
+ GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_ENABLE, GX_TEVPREV);
+ GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO);
+ GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_ENABLE, GX_TEVPREV);
+ GXSetZCompLoc(GX_ENABLE);
+ GXSetZMode(GX_DISABLE, GX_ALWAYS, GX_DISABLE);
+ GXSetBlendMode(GX_BM_NONE, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_CLEAR);
+ GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0);
+ GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, g_clearColor);
+ GXSetFogRangeAdj(GX_DISABLE, 0, NULL);
+ GXSetCullMode(GX_CULL_NONE);
+ GXSetDither(GX_ENABLE);
+
+ Mtx44 mtx;
+ MTXOrtho(mtx, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 10.0f);
+ GXSetProjection(mtx, GX_ORTHOGRAPHIC);
+ GXLoadPosMtxImm(cMtx_getIdentity(), GX_PNMTX0);
+ GXSetCurrentMtx(0);
+ GXClearVtxDesc();
+ GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
+ GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
+ GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S8, 0);
+ GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGB8, 0);
+ drawFilterQuad(1, 1);
+ }
+ #endif
+
GXSetClipMode(GX_CLIP_ENABLE);
dDlst_list_c::calcWipe();
j3dSys.reinitGX();
- ortho.setOrtho(JGeometry::TBox2<f32>(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMinYF(),
- mDoGph_gInf_c::getWidthF(), mDoGph_gInf_c::getHeightF()),
+ ortho.setOrtho(mDoGph_gInf_c::getMinXF(), mDoGph_gInf_c::getMinYF(),
+ mDoGph_gInf_c::getWidthF(), mDoGph_gInf_c::getHeightF(),
100000.0f, -100000.0f);
ortho.setPort();
- Mtx m4;
- MTXCopy(j3dSys.getViewMtx(), m4);
+ #if DEBUG
+ captureScreenSetPort();
+ #endif
+
+ #if DEBUG
+ if (fapGmHIO_get2Ddraw())
+ #endif
+ {
+ Mtx m4;
+ cMtx_copy(j3dSys.getViewMtx(), m4);
- Mtx m5;
- MTXTrans(m5, 304.0f, 224.0f, 0.0f);
+ Mtx m5;
+ MTXTrans(m5, FB_WIDTH / 2, FB_HEIGHT / 2, 0.0f);
- JPADrawInfo draw_info3(m5, 0.0f, 448.0f, 0.0f, 608.0f);
+ JPADrawInfo draw_info3(m5, 0.0f, FB_HEIGHT, 0.0f, FB_WIDTH);
- if (!dComIfGp_isPauseFlag()) {
- dComIfGp_particle_draw2Dback(&draw_info3);
- }
+ if (!dComIfGp_isPauseFlag()) {
+ dComIfGp_particle_draw2Dback(&draw_info3);
+ }
- dComIfGp_particle_draw2DmenuBack(&draw_info3);
- ortho.setPort();
+ dComIfGp_particle_draw2DmenuBack(&draw_info3);
+ ortho.setPort();
- dComIfGd_draw2DOpa();
- drawItem3D();
- ortho.setPort();
+ dComIfGd_draw2DOpa();
+ drawItem3D();
+ ortho.setPort();
- dComIfGd_draw2DOpaTop();
- dComIfGd_draw2DXlu();
+ #if DEBUG
+ captureScreenSetPort();
+ #endif
- if (!dComIfGp_isPauseFlag()) {
- dComIfGp_particle_draw2Dfore(&draw_info3);
- }
+ dComIfGd_draw2DOpaTop();
+ dComIfGd_draw2DXlu();
- if (strcmp(dComIfGp_getStartStageName(), "F_SP127") == 0 || (mDoGph_gInf_c::mFade & 0x80) != 0)
- {
- mDoGph_gInf_c::calcFade();
+ if (!dComIfGp_isPauseFlag()) {
+ dComIfGp_particle_draw2Dfore(&draw_info3);
+ }
+
+ if (strcmp(dComIfGp_getStartStageName(), "F_SP127") == 0 || (mDoGph_gInf_c::isFade() & 0x80) != 0)
+ {
+ mDoGph_gInf_c::calcFade();
+ }
+
+ dComIfGp_particle_draw2DmenuFore(&draw_info3);
+ j3dSys.setViewMtx(m4);
}
- dComIfGp_particle_draw2DmenuFore(&draw_info3);
- j3dSys.setViewMtx(m4);
+ #if DEBUG
+ // "drawing up to 2D-fore particle (Rendering)"
+ fapGm_HIO_c::stopCpuTimer("2D前(?)パーティクル描画まで(レンダリング)");
+ #endif
mDoGph_gInf_c::endRender();
+
+ #if WIDESCREEN_SUPPORT
+ mDoGph_gInf_c::offWideZoom();
+ #endif
return 1;
}
+#if DEBUG
+mDoGph_HIO_c mDoGph_HIO;
+#endif
+
/* 8000B174-8000B1D0 005AB4 005C+00 0/0 2/1 0/0 .text mDoGph_Create__Fv */
int mDoGph_Create() {
JKRSolidHeap* heap = mDoExt_createSolidHeapToCurrent(0, NULL, 0);
mDoGph_gInf_c::create();
dComIfGd_init();
- mDoExt_adjustSolidHeap(heap);
+ u32 var_r30 = mDoExt_adjustSolidHeap(heap);
mDoExt_restoreCurrentHeap();
+
+ OS_REPORT("mDoGph_Create 使用ヒープサイズ=%08x\n", var_r30);
+ #if PLATFORM_SHIELD
+ mDoGph_gInf_c::setHeap(heap);
+ #endif
+
+ #if DEBUG
+ mDoGph_HIO.entryHIO();
+ #endif
return 1;
}
diff --git a/src/m_Do/m_Do_lib.cpp b/src/m_Do/m_Do_lib.cpp
index a4ef6c3f07..9407fd22b0 100644
--- a/src/m_Do/m_Do_lib.cpp
+++ b/src/m_Do/m_Do_lib.cpp
@@ -4,6 +4,7 @@
*/
#include "m_Do/m_Do_lib.h"
+#include "m_Do/m_Do_graphic.h"
#include "JSystem/J3DGraphBase/J3DMatBlock.h"
#include "SSystem/SComponent/c_math.h"
#include "d/d_com_inf_game.h"
@@ -95,16 +96,16 @@ void mDoLib_project(Vec* src, Vec* dst) {
float xSize;
float ySize;
if (viewPort->x_orig != 0.0f) {
- xOffset = (0.5f * ((2.0f * viewPort->x_orig) + viewPort->width)) - 304.0f;
- xSize = 608.0f;
+ xOffset = (0.5f * ((2.0f * viewPort->x_orig) + viewPort->width)) - (FB_WIDTH / 2);
+ xSize = FB_WIDTH;
} else {
xOffset = viewPort->x_orig;
xSize = viewPort->width;
}
if (viewPort->y_orig != 0.0f) {
- yOffset = (0.5f * ((2.0f * viewPort->y_orig) + viewPort->height)) - 224.0f;
- ySize = 448.0f;
+ yOffset = (0.5f * ((2.0f * viewPort->y_orig) + viewPort->height)) - (FB_HEIGHT / 2);
+ ySize = FB_HEIGHT;
} else {
yOffset = viewPort->y_orig;
ySize = viewPort->height;
diff --git a/src/m_Do/m_Do_machine.cpp b/src/m_Do/m_Do_machine.cpp
index 38cc4363be..a3c53ef74b 100644
--- a/src/m_Do/m_Do_machine.cpp
+++ b/src/m_Do/m_Do_machine.cpp
@@ -63,7 +63,7 @@ static int unknownHeapErrors;
/* 80450C0C-80450C10 00010C 0004+00 1/1 0/0 0/0 .sbss heapErrors */
static u32 heapErrors;
-#if VERSION != VERSION_GCN_PAL
+#if VERSION == VERSION_GCN_USA || VERSION == VERSION_GCN_JPN
/* 803A2F60-803A2F9C 000080 003C+00 1/0 0/0 0/0 .data g_ntscZeldaIntDf */
GXRenderModeObj g_ntscZeldaIntDf = {
VI_TVMODE_NTSC_INT,
@@ -119,7 +119,7 @@ GXRenderModeObj g_ntscZeldaProg = {
{6, 6}},
{0, 0, 21, 22, 21, 0, 0},
};
-#else
+#elif VERSION == VERSION_GCN_PAL
/* 803A2F60-803A2F9C 000080 003C+00 1/0 0/0 0/0 .data g_ntscZeldaIntDf */
GXRenderModeObj g_ntscZeldaIntDf = {
VI_TVMODE_PAL_INT,
@@ -175,6 +175,60 @@ GXRenderModeObj g_ntscZeldaProg = {
{6, 6}},
{8, 8, 10, 12, 10, 8, 8},
};
+#else
+GXRenderModeObj g_ntscZeldaIntDf = {
+ VI_TVMODE_NTSC_INT,
+ 640,
+ 456,
+ 456,
+ 25,
+ 12,
+ 670,
+ 456,
+ VI_XFBMODE_DF,
+ 0,
+ 0,
+ {{6, 6},
+ {6, 6},
+ {6, 6},
+ {6, 6},
+ {6, 6},
+ {6, 6},
+ {6, 6},
+ {6, 6},
+ {6, 6},
+ {6, 6},
+ {6, 6},
+ {6, 6}},
+ {8, 8, 10, 12, 10, 8, 8},
+};
+
+GXRenderModeObj g_ntscZeldaProg = {
+ VI_TVMODE_NTSC_PROG,
+ 640,
+ 456,
+ 456,
+ 25,
+ 12,
+ 670,
+ 456,
+ VI_XFBMODE_SF,
+ 0,
+ 0,
+ {{6, 6},
+ {6, 6},
+ {6, 6},
+ {6, 6},
+ {6, 6},
+ {6, 6},
+ {6, 6},
+ {6, 6},
+ {6, 6},
+ {6, 6},
+ {6, 6},
+ {6, 6}},
+ {0, 0, 21, 22, 21, 0, 0},
+};
#endif
#ifdef DEBUG