Files
tww/src/d/d_picture_box.cpp
T
LagoLunatic e389a9b814 demo work (#1172)
* Some d_message demo matches

* More demo matches

* fix jpn
2026-08-16 18:05:17 -04:00

2458 lines
80 KiB
C++

//
// Generated by dtk
// Translation Unit: d_picture_box.cpp
//
#include "d/dolzel.h" // IWYU pragma: keep
#include "d/d_picture_box.h"
#include "d/d_s_play.h"
#include "f_op/f_op_msg.h"
#include "d/d_com_inf_game.h"
#include "m_Do/m_Do_graphic.h"
#include "m_Do/m_Do_controller_pad.h"
#include "m_Do/m_Do_MemCardRWmng.h"
#include "m_Do/m_Do_dvd_thread.h"
#include "f_op/f_op_camera.h"
#include "JSystem/JKernel/JKRExpHeap.h"
#include "JSystem/JKernel/JKRAram.h"
#include "JSystem/J2DGraph/J2DOrthoGraph.h"
#include "d/actor/d_a_player.h"
#include "d/d_meter.h"
#include "d/d_snap.h"
#include <stdio.h>
const static u8 photo_idx[] = {
0x88,
0xce,
0x85,
0x53,
0x86,
0xa9,
0x9b,
};
const char* photo_data[7] = {
"/res/Photo/KOKUOU.DDS",
"/res/Photo/GANONDROF.DDS",
"/res/Photo/DAIYOUSEI.DDS",
"/res/Photo/JAV.DDS",
"/res/Photo/CHOUYOUSEI.DDS",
"/res/Photo/KAZEKENJA.DDS",
"/res/Photo/TIKENJA.DDS",
};
/* 802258C8-80225954 .text dPb_erasePicture__Fv */
void dPb_erasePicture() {
u8 selectPicture = dComIfGp_getSelectPicture();
u8 evReg = dComIfGs_getEventReg(dSv_event_flag_c::UNK_89FF);
if (selectPicture < 3) {
u8 evReg2 = evReg | (1 << selectPicture);
dComIfGs_setEventReg(dSv_event_flag_c::UNK_89FF, evReg2);
dComIfGp_setItemPictureNumCount(-1);
}
// !@bug: This function does not set the picture flags, meaning the removing pictures are never cleared from the memcard.
// This was fixed for PAL.
#if VERSION >= VERSION_PAL
dComIfGp_onPictureFlag(0);
dComIfGp_onPictureFlag(1);
dComIfGp_onPictureFlag(2);
#endif
}
/* 80225954-80225E88 .text screenSet__9dJle_Pb_cFv */
void dJle_Pb_c::screenSet() {
static const u32 sb_l[] = { 'sb01', 'sb02', 'sb03', 'sb04', 'sb05', 'sb06', 'sb07', 'sb08', 'sb09', 'sb10', 'sb11', 'sb12' };
static const u32 st_l[] = { 'st01', 'st02', 'st03', 'st04', 'st05', 'st06', 'st07', 'st08', 'st09', 'st10', 'st11', 'st12' };
static const u32 icn_l[] = { 'icn1', 'icn2', 'icn3' };
static const u32 emp_l[] = { 'emp1', 'emp2', 'emp3' };
static const u32 sp_l[] = { 'sp00', 'sp01', 'sp02', 'sp03', 'sp04', 'sp05', 'sp06', 'sp07' };
static const u32 no_l[] = { 'no1', 'no2', 'no3' };
static const u32 nob_l[] = { 'no1b', 'no2b', 'no3b' };
static const u32 nok_l[] = { 'no1k', 'no2k', 'no3k' };
for (s32 i = 0; i < 12; i++) {
fopMsgM_setPaneData(&pane_sb[i], scrn1, sb_l[i]);
fopMsgM_setPaneData(&pane_st[i], scrn1, st_l[i]);
pane_sb[i].mUserArea = pane_sb[i].pane->getRotate();
}
fopMsgM_setPaneData(&pane_ylig, scrn, 'ylig');
fopMsgM_setPaneData(&pane_ylef, scrn, 'ylef');
for (s32 i = 0; i < 3; i++) {
fopMsgM_setPaneData(&pane_icn[i], scrn, icn_l[i]);
fopMsgM_setPaneData(&pane_emp[i], scrn, emp_l[i]);
}
fopMsgM_setPaneData(&pane_ct1, scrn, 'ct1');
fopMsgM_setPaneData(&pane_ct2, scrn, 'ct2');
for (s32 i = 0; i < 8; i++) {
fopMsgM_setPaneData(&pane_sp[i], scrn, sp_l[i]);
}
for (s32 i = 0; i < 3; i++) {
fopMsgM_setPaneData(&pane_no[i], scrn, no_l[i]);
fopMsgM_setPaneData(&pane_nob[i], scrn, nob_l[i]);
fopMsgM_setPaneData(&pane_nok[i], scrn, nok_l[i]);
}
fopMsgM_setPaneData(&pane_b1, scrn, 'b1');
fopMsgM_setPaneData(&pane_b2, scrn, 'b2');
fopMsgM_setPaneData(&pane_wnum, scrn, 'wnum');
fopMsgM_setPaneData(&pane_wnuk, scrn, 'wnuk');
fopMsgM_setPaneData(&pane_wpba, scrn, 'wpba');
fopMsgM_setPaneData(&pane_wbap, scrn, 'wbap');
fopMsgM_setPaneData(&pane_wpsc, scrn, 'wpsc');
fopMsgM_setPaneData(&pane_yrtn, scrn, 'yrtn');
fopMsgM_setPaneData(&pane_yzom, scrn, 'yzom');
fopMsgM_setPaneData(&pane_crtn, scrn, 'crtn');
fopMsgM_setPaneData(&pane_czom, scrn, 'czom');
fopMsgM_setPaneData(&pane_lrtn, scrn, 'lrtn');
fopMsgM_setPaneData(&pane_rzom, scrn, 'rzom');
fopMsgM_setPaneData(&pane_shut, scrn, 'shut');
fopMsgM_setPaneData(&pane_fd00, scrn, 'fd00');
fopMsgM_setPaneData(&pane_wp03, scrn, 'wp03');
fopMsgM_setPaneData(&pane_wp02, scrn, 'wp02');
fopMsgM_setPaneData(&pane_wp01, scrn, 'wp01');
fopMsgM_setPaneData(&pane_wp04, scrn, 'wp04');
icn_white.set(((J2DPicture*) pane_icn[0].pane)->getWhite());
icn_black.set(((J2DPicture*) pane_icn[0].pane)->getBlack());
emp_white.set(((J2DPicture*) pane_emp[0].pane)->getWhite());
emp_black.set(((J2DPicture*) pane_emp[0].pane)->getBlack());
#if VERSION >= VERSION_PAL
if (dComIfGs_getPalLanguage() != 0) {
char buf[0x10];
sprintf(buf, "wipe_in2_%d.bti", dComIfGs_getPalLanguage());
((J2DPicture*)pane_rzom.pane)->changeTexture(buf, 0);
sprintf(buf, "wipe_out2_%d.bti", dComIfGs_getPalLanguage());
((J2DPicture*)pane_lrtn.pane)->changeTexture(buf, 0);
}
#endif
#if VERSION > VERSION_JPN
pane_yrtn.mPosCenterOrig.x -= 12.0f;
fopMsgM_paneTrans(&pane_yrtn, 0.0f, 0.0f);
pane_yzom.mPosCenterOrig.x -= 12.0f;
fopMsgM_paneTrans(&pane_yzom,0.0f, 0.0f);
pane_crtn.mPosCenterOrig.x -= 12.0f;
fopMsgM_paneTrans(&pane_crtn,0.0f, 0.0f);
pane_czom.mPosCenterOrig.x -= 12.0f;
fopMsgM_paneTrans(&pane_czom,0.0, 0.0);
#endif
shutterHide();
fopMsgM_blendInit(&pane_crtn,"font_09_02.bti");
fopMsgM_blendInit(&pane_czom,"font_09_02.bti");
pane_czom.pane->rotate(pane_czom.mSizeOrig.x / 2.0f, pane_czom.mSizeOrig.y / 2.0f, ROTATE_Z, 180.0f);
fopMsgM_blendInit(&pane_ylig, "cursor_00_02.bti");
fopMsgM_blendInit(&pane_ylef, "cursor_00_02.bti");
fopMsgM_blendInit(&pane_yrtn, "cursor_00_02.bti");
fopMsgM_blendInit(&pane_yzom, "cursor_00_02.bti");
}
/* 80225E88-8022616C .text screenSet2__9dJle_Pb_cFv */
void dJle_Pb_c::screenSet2() {
scrn2->search('yz80')->hide();
scrn2->search('dt80')->hide();
fopMsgM_setPaneData(&pane_tx[0], scrn2->search('tx82'));
fopMsgM_setPaneData(&pane_tx[1], scrn2->search('tx83'));
fopMsgM_setPaneData(&pane_tx[2], scrn2->search('tx80'));
fopMsgM_setPaneData(&pane_tx[3], scrn2->search('tx81'));
#if VERSION < VERSION_PAL
if(dComIfGs_getOptRuby()) {
pane_tx[0].pane->move(pane_tx[0].pane->getBounds().i.x, pane_tx[0].pane->getBounds().i.y - 4.0f);
pane_tx[2].pane->move(pane_tx[2].pane->getBounds().i.x, pane_tx[2].pane->getBounds().i.y - 4.0f);
}
#else
if(dComIfGs_getOptRuby()) {
pane_tx[0].pane->move(pane_tx[0].pane->getBounds().i.x, pane_tx[0].pane->getBounds().i.y - 14.0f);
pane_tx[2].pane->move(pane_tx[2].pane->getBounds().i.x, pane_tx[2].pane->getBounds().i.y - 14.0f);
}
else {
pane_tx[0].pane->move(pane_tx[0].pane->getBounds().i.x, pane_tx[0].pane->getBounds().i.y - 10.0f);
pane_tx[2].pane->move(pane_tx[2].pane->getBounds().i.x, pane_tx[2].pane->getBounds().i.y - 10.0f);
}
#endif
pane_tx[1].pane->move(pane_tx[1].pane->getBounds().i.x, pane_tx[1].pane->getBounds().i.y - 3.0f);
pane_tx[3].pane->move(pane_tx[3].pane->getBounds().i.x, pane_tx[3].pane->getBounds().i.y - 3.0f);
((J2DTextBox *)(pane_tx[0].pane))->setFont(font0);
((J2DTextBox *)(pane_tx[1].pane))->setFont(font1);
((J2DTextBox *)(pane_tx[2].pane))->setFont(font0);
((J2DTextBox *)(pane_tx[3].pane))->setFont(font1);
J2DTextBox::TFontSize fontSize;
J2DTextBox::TFontSize rubySize;
#if VERSION <= VERSION_JPN
if (g_msgDHIO.field_0x08 == 0) {
fontSize.mSizeX = fontSize.mSizeY = (int)g_msgHIO.field_0x58;
rubySize.mSizeX = rubySize.mSizeY = g_msgHIO.field_0x68;
((J2DTextBox *)(pane_tx[0].pane))->setFontSize(fontSize);
((J2DTextBox *)(pane_tx[1].pane))->setFontSize(rubySize);
((J2DTextBox *)(pane_tx[2].pane))->setFontSize(fontSize);
((J2DTextBox *)(pane_tx[3].pane))->setFontSize(rubySize);
} else {
fontSize.mSizeX = fontSize.mSizeY = g_msgHIO.field_0x70;
((J2DTextBox *)(pane_tx[0].pane))->setFontSize(fontSize);
((J2DTextBox *)(pane_tx[2].pane))->setFontSize(fontSize);
}
#else
fontSize.mSizeX = fontSize.mSizeY = g_msgHIO.field_0x70;
((J2DTextBox *)(pane_tx[0].pane))->setFontSize(fontSize);
((J2DTextBox *)(pane_tx[2].pane))->setFontSize(fontSize);
#endif
#if VERSION <= VERSION_JPN
((J2DTextBox *)(pane_tx[0].pane))->setCharSpace(-2.0f);
((J2DTextBox *)(pane_tx[1].pane))->setCharSpace(-1.0f);
((J2DTextBox *)(pane_tx[2].pane))->setCharSpace(-2.0f);
((J2DTextBox *)(pane_tx[3].pane))->setCharSpace(-1.0f);
#else
((J2DTextBox *)(pane_tx[0].pane))->setCharSpace(0.0f);
((J2DTextBox *)(pane_tx[1].pane))->setCharSpace(0.0f);
((J2DTextBox *)(pane_tx[2].pane))->setCharSpace(0.0f);
((J2DTextBox *)(pane_tx[3].pane))->setCharSpace(0.0f);
#endif
#if VERSION <= VERSION_JPN
if (g_msgDHIO.field_0x08 == 0) {
((J2DTextBox *)(pane_tx[0].pane))->setLineSpace(42.0f);
((J2DTextBox *)(pane_tx[1].pane))->setLineSpace(42.0f);
((J2DTextBox *)(pane_tx[2].pane))->setLineSpace(42.0f);
((J2DTextBox *)(pane_tx[3].pane))->setLineSpace(42.0f);
} else {
((J2DTextBox *)(pane_tx[0].pane))->setLineSpace(g_msgHIO.field_0x5e);
((J2DTextBox *)(pane_tx[2].pane))->setLineSpace(g_msgHIO.field_0x5e);
}
#else
((J2DTextBox *)(pane_tx[0].pane))->setLineSpace(28.0f);
((J2DTextBox *)(pane_tx[2].pane))->setLineSpace(28.0f);
#endif
}
/* 8022616C-802262CC .text cameraAlphaInc__9dJle_Pb_cFf */
void dJle_Pb_c::cameraAlphaInc(f32 alpha) {
for (s32 i = 0; i < 12; i++) {
fopMsgM_setNowAlpha(&pane_sb[i], alpha);
fopMsgM_setNowAlpha(&pane_st[i], alpha);
}
fopMsgM_setNowAlpha(&pane_wnum, alpha);
fopMsgM_setNowAlpha(&pane_wnuk, alpha);
fopMsgM_setNowAlpha(&pane_wpba, alpha);
fopMsgM_setNowAlpha(&pane_wbap, alpha);
fopMsgM_setNowAlpha(&pane_wpsc, alpha);
fopMsgM_setNowAlpha(&pane_yrtn, alpha);
fopMsgM_setNowAlpha(&pane_yzom, alpha);
fopMsgM_setNowAlpha(&pane_crtn, alpha);
fopMsgM_setNowAlpha(&pane_czom, alpha);
fopMsgM_setNowAlpha(&pane_lrtn, alpha);
fopMsgM_setNowAlpha(&pane_rzom, alpha);
fopMsgM_setNowAlpha(&pane_fd00, alpha);
fopMsgM_setNowAlpha(&pane_wp03, alpha);
fopMsgM_setNowAlpha(&pane_wp02, alpha);
fopMsgM_setNowAlpha(&pane_wp01, alpha);
fopMsgM_setNowAlpha(&pane_wp04, alpha);
fopMsgM_setNowAlpha(&pane_tx[0], alpha);
fopMsgM_setNowAlpha(&pane_tx[1], alpha);
fopMsgM_setNowAlpha(&pane_tx[2], alpha);
fopMsgM_setNowAlpha(&pane_tx[3], alpha);
}
/* 802262CC-802264A0 .text browseAlphaInc__9dJle_Pb_cFf */
void dJle_Pb_c::browseAlphaInc(f32 alpha) {
for (s32 i = 0; i < 12; i++) {
fopMsgM_setNowAlpha(&pane_sb[i], alpha);
fopMsgM_setNowAlpha(&pane_st[i], alpha);
}
fopMsgM_setNowAlpha(&pane_ylig, alpha);
fopMsgM_setNowAlpha(&pane_ylef, alpha);
for (s32 i = 0; i < 3; i++) {
if (mPhotoSlotOccupied[i]) {
fopMsgM_setNowAlpha(&pane_icn[i], alpha);
}
fopMsgM_setNowAlpha(&pane_emp[i], alpha);
}
fopMsgM_setNowAlpha(&pane_ct1, alpha);
fopMsgM_setNowAlpha(&pane_ct2, alpha);
for (s32 i = 0; i < 8; i++) {
fopMsgM_setNowAlpha(&pane_sp[i], alpha);
}
for(s32 i = 0; i < 3; i++) {
fopMsgM_setNowAlpha(&pane_no[i], alpha);
fopMsgM_setNowAlpha(&pane_nob[i], alpha);
fopMsgM_setNowAlpha(&pane_nok[i], alpha);
}
fopMsgM_setNowAlpha(&pane_b1, alpha);
fopMsgM_setNowAlpha(&pane_b2, alpha);
fopMsgM_setNowAlpha(&pane_shut, alpha);
fopMsgM_setNowAlpha(&pane_wp03, alpha);
fopMsgM_setNowAlpha(&pane_wp02, alpha);
fopMsgM_setNowAlpha(&pane_wp01, alpha);
fopMsgM_setNowAlpha(&pane_wp04, alpha);
fopMsgM_setNowAlpha(&pane_tx[0], alpha);
fopMsgM_setNowAlpha(&pane_tx[1], alpha);
fopMsgM_setNowAlpha(&pane_tx[2], alpha);
fopMsgM_setNowAlpha(&pane_tx[3], alpha);
}
/* 802264A0-802265C0 .text getAlphaInc__9dJle_Pb_cFf */
void dJle_Pb_c::getAlphaInc(f32 alpha) {
fopMsgM_setNowAlpha(&pane_ct1, alpha);
fopMsgM_setNowAlpha(&pane_ct2, alpha);
for (s32 i = 0; i < 8; i++) {
fopMsgM_setNowAlpha(&pane_sp[i], alpha);
}
fopMsgM_setNowAlpha(pane_no, alpha);
fopMsgM_setNowAlpha(pane_nob, alpha);
fopMsgM_setNowAlpha(pane_nok, alpha);
fopMsgM_setNowAlpha(&pane_b1, alpha);
fopMsgM_setNowAlpha(&pane_b2, alpha);
fopMsgM_setNowAlpha(&pane_shut, alpha);
fopMsgM_setNowAlpha(&pane_wp03, alpha);
fopMsgM_setNowAlpha(&pane_wp02, alpha);
fopMsgM_setNowAlpha(&pane_wp01, alpha);
fopMsgM_setNowAlpha(&pane_wp04, alpha);
fopMsgM_setNowAlpha(&pane_tx[0], alpha);
fopMsgM_setNowAlpha(&pane_tx[1], alpha);
fopMsgM_setNowAlpha(&pane_tx[2], alpha);
fopMsgM_setNowAlpha(&pane_tx[3], alpha);
}
/* 802265C0-80226A40 .text alphaDec__9dJle_Pb_cFf */
void dJle_Pb_c::alphaDec(f32 scale) {
for (s32 i = 0; i < 12; i++) {
pane_sb[i].pane->setAlpha(pane_sb[i].mNowAlpha * scale);
pane_st[i].pane->setAlpha(pane_st[i].mNowAlpha * scale);
}
pane_ylig.pane->setAlpha(pane_ylig.mNowAlpha * scale);
pane_ylef.pane->setAlpha(pane_ylef.mNowAlpha * scale);
pane_wnum.pane->setAlpha(pane_wnum.mNowAlpha * scale);
pane_wnuk.pane->setAlpha(pane_wnuk.mNowAlpha * scale);
pane_wpba.pane->setAlpha(pane_wpba.mNowAlpha * scale);
pane_wbap.pane->setAlpha(pane_wbap.mNowAlpha * scale);
pane_wpsc.pane->setAlpha(pane_wpsc.mNowAlpha * scale);
pane_yrtn.pane->setAlpha(pane_yrtn.mNowAlpha * scale);
pane_yzom.pane->setAlpha(pane_yzom.mNowAlpha * scale);
pane_crtn.pane->setAlpha(pane_crtn.mNowAlpha * scale);
pane_czom.pane->setAlpha(pane_czom.mNowAlpha * scale);
pane_lrtn.pane->setAlpha(pane_lrtn.mNowAlpha * scale);
pane_rzom.pane->setAlpha(pane_rzom.mNowAlpha * scale);
pane_shut.pane->setAlpha(pane_shut.mNowAlpha * scale);
pane_fd00.pane->setAlpha(pane_fd00.mNowAlpha * scale);
pane_wp03.pane->setAlpha(pane_wp03.mNowAlpha * scale);
pane_wp02.pane->setAlpha(pane_wp02.mNowAlpha * scale);
pane_wp01.pane->setAlpha(pane_wp01.mNowAlpha * scale);
pane_wp04.pane->setAlpha(pane_wp04.mNowAlpha * scale);
pane_tx[0].pane->setAlpha(pane_tx[0].mNowAlpha * scale);
pane_tx[1].pane->setAlpha(pane_tx[1].mNowAlpha * scale);
pane_tx[2].pane->setAlpha(pane_tx[2].mNowAlpha * scale);
pane_tx[3].pane->setAlpha(pane_tx[3].mNowAlpha * scale);
}
/* 80226A40-80226B7C .text zoomScale__9dJle_Pb_cFv */
void dJle_Pb_c::zoomScale() {
f32 cameraZoomScale = dComIfGp_getCameraZoomScale(0);
if (dComIfGp_getCameraZoomScale(0) < 1.0f) {
cameraZoomScale = 1.0f;
}
if (cameraZoomScale > 9.0f) {
cameraZoomScale = 9.0f;
}
if (cameraZoomScale != mZoomScale) {
bool tmp = true;
if (mZoomScale == 0.0f) {
tmp = false;
}
mZoomScale = cameraZoomScale;
changeScale(mZoomScale);
if (mZoomScale == 1.0f || mZoomScale == 9.0f) {
if (tmp) {
mDoAud_seStart(JA_SE_TELESCOPE_STOP);
}
}
else {
f32 cameraZoomForcus = dComIfGp_getCameraZoomForcus(0);
mDoAud_seStart(JA_SE_TELESCOPE_ZOOM, NULL, cameraZoomForcus * 0x8000 + 0.5f);
}
}
}
/* 80226B7C-80226C68 .text changeScale__9dJle_Pb_cFi */
void dJle_Pb_c::changeScale(int scale) {
static const char* number[] = {
"rupy_num_01.bti",
"rupy_num_02.bti",
"rupy_num_03.bti",
"rupy_num_04.bti",
"rupy_num_05.bti",
"rupy_num_06.bti",
"rupy_num_07.bti",
"rupy_num_08.bti",
"rupy_num_09.bti",
};
f32 a = (pane_wpsc.mPosTopLeftOrig.y + pane_wbap.mSizeOrig.y / 2.0f) - pane_wbap.mPosCenterOrig.y;
f32 b = ((pane_wpsc.mPosTopLeftOrig.y + pane_wpsc.mSizeOrig.y) - pane_wbap.mSizeOrig.y / 2.0f) - pane_wbap.mPosCenterOrig.y;
((J2DPicture*)pane_wnum.pane)->changeTexture(number[scale - 1], 0);
((J2DPicture*)pane_wnuk.pane)->changeTexture(number[scale - 1], 0);
f32 transY;
if (mZoomScale < 5.0f) {
transY = (5.0f - mZoomScale) / 4.0f * b;
} else {
transY = (mZoomScale - 5.0f) / 4.0f * a;
}
fopMsgM_paneTrans(&pane_wbap, 0.0f, transY);
}
/* 80226C68-80227158 .text up_downIconMove__9dJle_Pb_cFv */
void dJle_Pb_c::up_downIconMove() {
f32 f31;
pane_crtn.mUserArea++;
if (pane_crtn.mUserArea < 10) {
f31 = fopMsgM_valueIncrease(20, pane_crtn.mUserArea, 0);
((J2DPicture *)(pane_yrtn.pane))->setBlendRatio(0.0f, 1.0f, 1.0f, 1.0f);
((J2DPicture *)(pane_yzom.pane))->setBlendRatio(0.0f, 1.0f, 1.0f, 1.0f);
if(dComIfGp_getCameraZoomScale(0) != 1.0f && pane_yrtn.mUserArea == 0) {
((J2DPicture *)(pane_crtn.pane))->setBlendRatio(f31, 1.0f - f31, 1.0f, 1.0f);
fopMsgM_paneTrans(&pane_yrtn, 0.0f, 7.0f);
}
if (dComIfGp_getCameraZoomScale(0) != 9.0f && pane_yzom.mUserArea == 0) {
((J2DPicture *)(pane_czom.pane))->setBlendRatio(f31, 1.0f - f31, 1.0f, 1.0f);
fopMsgM_paneTrans(&pane_yzom, 0.0f, -7.0f);
}
}
else {
f31 = fopMsgM_valueIncrease(20, pane_crtn.mUserArea - 10, 0);
((J2DPicture *)(pane_yrtn.pane))->setBlendRatio(1.0f, 0.0f, 1.0f, 1.0f);
((J2DPicture *)(pane_yzom.pane))->setBlendRatio(1.0f, 0.0f, 1.0f, 1.0f);
if (dComIfGp_getCameraZoomScale(0) == 1.0f) {
if (pane_yrtn.mUserArea == 0) {
((J2DPicture *)(pane_crtn.pane))->setBlendRatio(1.0f - f31, f31, 1.0f, 1.0f);
fopMsgM_paneTrans(&pane_yrtn, 0.0f, 0.0f);
}
if (pane_crtn.mUserArea == 20) {
pane_yrtn.mUserArea = 1;
}
}
else if (pane_yrtn.mUserArea == 0) {
((J2DPicture *)(pane_crtn.pane))->setBlendRatio(1.0f - f31, f31, 1.0f, 1.0f);
fopMsgM_paneTrans(&pane_yrtn, 0.0f, 0.0f);
}
else if (pane_crtn.mUserArea == 20) {
pane_yrtn.mUserArea = 0;
}
if (dComIfGp_getCameraZoomScale(0) == 9.0f) {
if (pane_yzom.mUserArea == 0) {
((J2DPicture *)(pane_czom.pane))->setBlendRatio(1.0f - f31, f31, 1.0f, 1.0f);
fopMsgM_paneTrans(&pane_yzom, 0.0f, 0.0f);
}
if (pane_crtn.mUserArea == 20) {
pane_yzom.mUserArea = 1;
}
}
else if (pane_yzom.mUserArea == 0) {
((J2DPicture *)(pane_czom.pane))->setBlendRatio(1.0f - f31, f31, 1.0f, 1.0f);
fopMsgM_paneTrans(&pane_yzom, 0.0f, 0.0f);
}
else if (pane_crtn.mUserArea == 20) {
pane_yzom.mUserArea = 0;
}
}
if (dComIfGp_getCameraZoomScale(0) == 1.0f) {
pane_yrtn.pane->hide();
pane_yzom.pane->show();
}
else if (dComIfGp_getCameraZoomScale(0) == 9.0f) {
pane_yrtn.pane->show();
pane_yzom.pane->hide();
}
else {
pane_yrtn.pane->show();
pane_yzom.pane->show();
}
if (pane_crtn.mUserArea >= 20) {
pane_crtn.mUserArea = 0;
}
}
/* 80227158-80227338 .text left_rightIconMove__9dJle_Pb_cFv */
void dJle_Pb_c::left_rightIconMove() {
pane_ylig.mUserArea++;
if (pane_ylig.mUserArea < 10) {
if (mSelectedPhotoSlot != 2) {
((J2DPicture *)(pane_ylig.pane))->setBlendRatio(0.0F, 1.0f, 1.0f, 1.0f);
fopMsgM_paneTrans(&pane_ylig, 7.0f, 0.0f);
}
if (mSelectedPhotoSlot != 1) {
((J2DPicture *)(pane_ylef.pane))->setBlendRatio(0.0F, 1.0f, 1.0f, 1.0f);
fopMsgM_paneTrans(&pane_ylef, -7.0f, 0.0f);
}
}
else {
if (mSelectedPhotoSlot != 2) {
((J2DPicture *)(pane_ylig.pane))->setBlendRatio(1.0f, 0.0f, 1.0f, 1.0f);
fopMsgM_paneTrans(&pane_ylig, 0.0f, 0.0f);
}
if (mSelectedPhotoSlot != 1) {
((J2DPicture *)(pane_ylef.pane))->setBlendRatio(1.0f, 0.0f, 1.0f, 1.0f);
fopMsgM_paneTrans(&pane_ylef, 0.0f, 0.0f);
}
}
if (pane_ylig.mUserArea >= 20) {
pane_ylig.mUserArea = 0;
}
}
/* 80227338-80227520 .text clickShutterMode__9dJle_Pb_cFv */
void dJle_Pb_c::clickShutterMode() {
int iVar3;
short iVar7;
f32 dVar8;
iVar3 = g_meterHIO.field_0x124;
iVar7 = iVar3 << 1;
if (mShutterCounter < iVar3) {
mShutterCounter++;
dVar8 = fopMsgM_valueIncrease(iVar3, mShutterCounter, 0);
}
else if (mShutterCounter == iVar3) {
if (mDoGph_getCaptureStep() == 5) {
mShutterCounter++;
dMenu_flagSet(1);
}
dVar8 = 1.0f;
}
else {
mShutterCounter++;
dVar8 = fopMsgM_valueIncrease(iVar3, iVar7 - mShutterCounter, 0);
}
for(int i = 0; i < 12; i++) {
f32 rotateAngle = pane_sb[i].mUserArea + g_meterHIO.field_0x24 * dVar8;
pane_sb[i].pane->rotate(pane_sb[i].mSizeOrig.x / 2.0f, pane_sb[i].mSizeOrig.y / 2.0f, ROTATE_Z, rotateAngle);
fopMsgM_paneTrans(&pane_st[i], 0.0f, dVar8 * -(pane_st[i].mPosTopLeftOrig.y - pane_sb[i].mSizeOrig.y / 2.0f));
shutterLineRotateCenter(rotateAngle, i);
}
shutterLineMove();
if (mShutterCounter == iVar7) {
mModeSubState = PB_SUB_SHIFT_1_TO_0_e;
shutterHide();
messageSet(0xedd);
}
}
/* 80227520-802277A0 .text selectMode__9dJle_Pb_cFv */
void dJle_Pb_c::selectMode() {
u8 pictureNum;
u8 selection = mMsgDataProc.selectCheckYoko(mMsgSelectArrowPic, mChoiceCursorX0, mChoiceCursorY, mChoiceCursorX1 - mChoiceCursorX0);
if (selection != mSelectedChoiceIndex) {
mSelectedChoiceIndex = selection;
mDoAud_seStart(JA_SE_TALK_CURSOR);
}
if (CPad_CHECK_TRIG_A(0)) {
if (mDoGph_getCaptureStep() == 5) {
mDoGph_setCaptureStep(6);
if (selection == 0) {
pictureNum = dComIfGs_getPictureNum();
card_pictdata* pict = mPhotoBuffer[pictureNum];
#if VERSION <= VERSION_JPN
dComIfGp_onPictureFlag(pictureNum);
#else
dComIfGp_onPictureFlag(0);
dComIfGp_onPictureFlag(1);
dComIfGp_onPictureFlag(2);
#endif
pict->snap_result = dSnap_GetResult();
pict->snap_result_detail = dSnap_GetResultDetail();
pict->capture_format = mCaptureFormat;
memcpy(pict->tex_buffer, mDoGph_getCaptureTextureBuffer(), sizeof(pict->tex_buffer));
#if VERSION <= VERSION_JPN
DCFlushRangeNoSync(pict->tex_buffer, sizeof(pict->tex_buffer));
#else
DCStoreRangeNoSync(pict->tex_buffer, sizeof(pict->tex_buffer));
#endif
dComIfGp_setItemPictureNumCount(1);
pictureNum = dComIfGs_getPictureNum() + 1;
mPhotoSlotOccupied[dComIfGs_getPictureNum()] = 1;
mDoAud_seStart(JA_SE_UTUSHIE_SAVE_PIC);
} else {
pictureNum = dComIfGs_getPictureNum();
mDoAud_seStart(JA_SE_UTUSHIE_DEL_PIC);
}
remainMessageSet(pictureNum);
mModeSubState = PB_SUB_IDLE_e;
dComIfGp_setScopeMesgStatus(fopMsgStts_SCOPE_ACTIVE_e);
dMenu_flagSet(0);
}
} else if (CPad_CHECK_TRIG_B(0) && mDoGph_getCaptureStep() == 5) {
mDoGph_setCaptureStep(6);
remainMessageSet(dComIfGs_getPictureNum());
mDoAud_seStart(JA_SE_UTUSHIE_DEL_PIC);
mModeSubState = PB_SUB_IDLE_e;
dComIfGp_setScopeMesgStatus(fopMsgStts_SCOPE_ACTIVE_e);
dMenu_flagSet(0);
}
}
/* 802277A0-80227944 .text cameraMode__9dJle_Pb_cFv */
void dJle_Pb_c::cameraMode() {
if (CPad_CHECK_TRIG_A(0)) {
if (mDoGph_getCaptureStep() == 0 && dComIfGs_getPictureNum() < 3) {
mShutterCounter = 0;
mModeSubState = PB_SUB_CONFIRM_e;
if (dComIfGs_getItem(8) == dItemNo_PICTO_BOX_e) {
mCaptureFormat = GX_TF_I8;
}
else {
mCaptureFormat = GX_TF_RGB565;
}
mDoGph_setCaptureCaptureFormat(mCaptureFormat);
mDoGph_setCaptureTextureFormat(GX_TF_CMPR);
mDoGph_setCaptureStep(1);
dComIfGp_setScopeMesgStatus(fopMsgStts_STOP_e);
shutterShow();
mDoAud_seStart(JA_SE_UTSUSHIE_SHUTTER);
dSnap_ReleaseShutter();
}
}
else if (CPad_CHECK_TRIG_R(0)) {
mModeSwapActive = 1;
mShutterCounter = 0;
shutterShow();
mSelectedPhotoSlot = 0;
mDoAud_seStart(JA_SE_UTUSHIE_CHANGE_MODE);
}
else if (!dComIfGp_checkCameraAttentionStatus(0, dCamAttnStts_PICTO_BOX_AIM_e)) {
mExecState = PB_EXEC_CLOSE_e;
}
#if VERSION > VERSION_JPN
else if (mDoGph_getCaptureStep() == -1) {
daPy_getPlayerActorClass()->onPhotoBoxCancel();
mExecState = PB_EXEC_CLOSE_e;
}
#endif
else {
zoomScale();
}
up_downIconMove();
}
/* 80227944-80227D34 .text pictureDraw__9dJle_Pb_cFUci */
void dJle_Pb_c::pictureDraw(u8 mono_color_1_alpha, int img_index) {
s32 r30, r29;
u32 left, top, width, height;
f32 projv[7];
f32 viewv[6];
Mtx44 mtx;
GXTexObj tex_obj;
card_pictdata* pict = mPhotoBuffer[img_index];
u32 index = (img_index == 3) ? 0 : img_index;
f32 f2 = pane_no[index].mPosTopLeft.x + REG6_F(0);
f32 f3 = pane_no[index].mPosTopLeft.y + REG6_F(1);
r30 = (f2 + (f2 + pane_no[index].mSizeOrig.x)) / 2.0f;
r29 = (f3 + (f3 + pane_no[index].mSizeOrig.y)) / 2.0f;
static const GXColor mCaptureMonoColor0 = {0x00, 0x00, 0x00, 0x00};
static GXColor mCaptureMonoColor1 = {0xFF, 0xFF, 0xFF, mono_color_1_alpha};
GXGetProjectionv(projv);
GXGetViewportv(viewv);
GXGetScissor(&left, &top, &width, &height);
GXSetViewport(0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
GXSetNumChans(0);
GXSetNumTexGens(1);
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, false, GX_PTIDENTITY);
GXSetNumTevStages(1);
GXSetTevColor(GX_TEVREG0, mCaptureMonoColor0);
GXSetTevColor(GX_TEVREG1, mCaptureMonoColor1);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_C0, GX_CC_C1, GX_CC_TEXC, GX_CC_ZERO);
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, true, GX_TEVPREV);
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST);
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, true, GX_TEVPREV);
GXSetZCompLoc(1);
GXSetZMode(false, GX_ALWAYS, false);
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_COPY);
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0);
GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, g_clearColor);
GXSetClipMode(GX_CLIP_DISABLE);
GXSetCullMode(GX_CULL_NONE);
GXSetDither(1);
GXSetNumIndStages(0);
GXSetTevDirect(GX_TEVSTAGE0);
C_MTXOrtho(mtx, -21.0f, 503.0f, -9.0f, 650.0f, 0.0f, 10.0f);
GXSetProjection(mtx, GX_ORTHOGRAPHIC);
GXLoadPosMtxImm(mDoMtx_getIdentity(), 0);
GXSetCurrentMtx(0);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGBA4, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGB8, 0);
GXInitTexObj(&tex_obj, pict->tex_buffer, 0x98, 0x68, GX_TF_CMPR, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXLoadTexObj(&tex_obj, GX_TEXMAP0);
s32 r31 = (s32)r30 - 0x98;
s32 r28 = (s32)r29 - 0x68;
s32 r30new = (s32)r30 + 0x98;
s32 r29new = (s32)r29 + 0x68;
{
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition3s16(r31, r28, 0);
GXTexCoord2s8(0, 0);
GXPosition3s16(r30new, r28, 0);
GXTexCoord2s8(1, 0);
GXPosition3s16(r30new, r29new, 0);
GXTexCoord2s8(1, 1);
GXPosition3s16(r31, r29new, 0);
GXTexCoord2s8(0, 1);
GXEnd();
}
GXSetProjectionv(projv);
GXSetViewport(viewv[0], viewv[1], viewv[2], viewv[3], viewv[4], viewv[5]);
GXSetScissor(left, top, width, height);
GXSetClipMode(GX_CLIP_ENABLE);
GXDrawDone();
}
/* 80227D34-80227ED8 .text pictureEraseWait__9dJle_Pb_cFv */
void dJle_Pb_c::pictureEraseWait() {
u8 bVar1 = mMsgDataProc.selectCheckYoko(mMsgSelectArrowPic, mChoiceCursorX0, mChoiceCursorY, mChoiceCursorX1 - mChoiceCursorX0);
if (bVar1 != mSelectedChoiceIndex) {
mSelectedChoiceIndex = bVar1;
mDoAud_seStart(JA_SE_TALK_CURSOR);
}
if (CPad_CHECK_TRIG_A(0)) {
if (bVar1 == 0) {
pictureErase();
mDoAud_seStart(JA_SE_UTUSHIE_B_DEL_PIC);
}
else {
existMessageSet(dComIfGs_getPictureNum());
mDoAud_seStart(JA_SE_UTUSHIE_B_LEAVE_PIC);
}
mModeSubState = PB_SUB_IDLE_e;
dComIfGp_setScopeMesgStatus(fopMsgStts_SCOPE_ACTIVE_e);
}
else if (CPad_CHECK_TRIG_B(0)) {
existMessageSet(dComIfGs_getPictureNum());
mDoAud_seStart(JA_SE_UTUSHIE_B_LEAVE_PIC);
mModeSubState = PB_SUB_IDLE_e;
dComIfGp_setScopeMesgStatus(fopMsgStts_SCOPE_ACTIVE_e);
}
}
/* 80227ED8-802280C8 .text pictureDecide__9dJle_Pb_cFv */
void dJle_Pb_c::pictureDecide() {
u8 bVar2 = mMsgDataProc.selectCheckYoko(mMsgSelectArrowPic, mChoiceCursorX0, mChoiceCursorY, mChoiceCursorX1 - mChoiceCursorX0);
if (bVar2 != mSelectedChoiceIndex) {
mSelectedChoiceIndex = bVar2;
mDoAud_seStart(JA_SE_TALK_CURSOR);
}
if (CPad_CHECK_TRIG_A(0)) {
if (bVar2 == 0) {
card_pictdata* pict = mPhotoBuffer[mSelectedPhotoSlot];
dComIfGp_setSelectPicture(mSelectedPhotoSlot);
dComIfGp_setPictureFormat(pict->capture_format);
dComIfGp_setPictureStatus(1);
dComIfGp_setPictureResult(pict->snap_result);
dComIfGp_setPictureResultDetail(pict->snap_result_detail);
#if VERSION <= VERSION_JPN
mDoAud_seStart(JA_SE_UTUSHIE_B_DEL_PIC);
#endif
daPy_getPlayerActorClass()->onPhotoBoxCancel();
mExecState = PB_EXEC_CLOSE_e;
#if VERSION <= VERSION_JPN
mDoAud_seStart(JA_SE_UTUSHIE_B_DEL_PIC);
#else
mDoAud_seStart(JA_SE_UTUSHIE_B_SHOW);
#endif
}
else {
existMessageSet(dComIfGs_getPictureNum());
mDoAud_seStart(JA_SE_UTUSHIE_B_LEAVE_PIC);
}
mModeSubState = PB_SUB_IDLE_e;
dComIfGp_setScopeMesgStatus(fopMsgStts_SCOPE_ACTIVE_e);
}
else if (CPad_CHECK_TRIG_B(0)) {
existMessageSet(dComIfGs_getPictureNum());
mDoAud_seStart(JA_SE_UTUSHIE_B_LEAVE_PIC);
mModeSubState = PB_SUB_IDLE_e;
dComIfGp_setScopeMesgStatus(fopMsgStts_SCOPE_ACTIVE_e);
}
}
/* 802280C8-80228184 .text pictureErase__9dJle_Pb_cFv */
void dJle_Pb_c::pictureErase() {
if (mPhotoSlotOccupied[mSelectedPhotoSlot]) {
mPhotoDeletedFlag = 1;
mPhotoSlotOccupied[mSelectedPhotoSlot] = 0;
fopMsgM_setNowAlphaZero(&pane_icn[mSelectedPhotoSlot]);
dComIfGp_setItemPictureNumCount(-1);
dComIfGp_onPictureFlag(0);
dComIfGp_onPictureFlag(1);
dComIfGp_onPictureFlag(2);
}
existMessageSet(dComIfGs_getPictureNum() - 1);
}
/* 80228184-80228284 .text pictureTransX__9dJle_Pb_cFfffff */
void dJle_Pb_c::pictureTransX(f32 param_1, f32 param_2, f32 param_3, f32 param_4, f32 param_5) {
f32 y = param_5;
for (int i = 0; i < 3; i++) {
fopMsgM_paneTrans(&pane_no[i], param_1, 0.0f);
fopMsgM_paneTrans(&pane_nob[i], param_1, 0.0f);
}
fopMsgM_paneTrans(&pane_nok[0], param_2, -y);
fopMsgM_paneTrans(&pane_nok[1], param_3, y);
fopMsgM_paneTrans(&pane_nok[2], param_4, y);
}
/* 80228284-80228470 .text changePicture__9dJle_Pb_cFv */
void dJle_Pb_c::changePicture() {
s16 r31 = g_meterHIO.field_0x124 << 1;
f32 f31 = pane_no[0].mPosCenterOrig.x - pane_no[1].mPosCenterOrig.x;
f32 f30 = pane_nok[0].mPosCenterOrig.y - pane_nok[1].mPosCenterOrig.y;
mShutterCounter++;
u8 r0 = mModeSubState;
f32 f1;
f32 f3;
f32 f4;
f32 f1_2;
f32 f3_2;
f32 f4_2;
f32 f5;
if (r0 == PB_SUB_SHIFT_1_TO_0_e) {
f1 = fopMsgM_valueIncrease(r31, r31 - mShutterCounter, 0);
f3 = (pane_nok[2].mPosCenterOrig.x - pane_nok[0].mPosCenterOrig.x);
f4 = (pane_nok[0].mPosCenterOrig.x - pane_nok[1].mPosCenterOrig.x);
f1_2 = f31 * f1;
f3_2 = f3 * f1;
f4_2 = f4 * f1;
f5 = f30 * f1;
pictureTransX(f1_2, f3_2, f4_2, f3_2, f5);
}
else if (r0 == PB_SUB_SHIFT_0_TO_2_e) {
f1 = fopMsgM_valueIncrease(r31, mShutterCounter, 0);
f3 = (pane_nok[1].mPosCenterOrig.x - pane_nok[0].mPosCenterOrig.x);
f4 = (pane_nok[0].mPosCenterOrig.x - pane_nok[2].mPosCenterOrig.x);
f1_2 = -f31 * f1;
f3_2 = f3 * f1;
f4_2 = f4 * f1;
f5 = f30 * f1;
pictureTransX(f1_2, f3_2, f3_2, f4_2, f5);
}
else if (r0 == PB_SUB_SHIFT_0_TO_1_e) {
f1 = fopMsgM_valueIncrease(r31, mShutterCounter, 0);
f3 = (pane_nok[2].mPosCenterOrig.x - pane_nok[0].mPosCenterOrig.x);
f4 = (pane_nok[0].mPosCenterOrig.x - pane_nok[1].mPosCenterOrig.x);
f1_2 = f31 * f1;
f3_2 = f3 * f1;
f4_2 = f4 * f1;
f5 = f30 * f1;
pictureTransX(f1_2, f3_2, f4_2, f3_2, f5);
}
else if (r0 == PB_SUB_SHIFT_2_TO_0_e) {
f1 = fopMsgM_valueIncrease(r31, r31 - mShutterCounter, 0);
f3 = (pane_nok[1].mPosCenterOrig.x - pane_nok[0].mPosCenterOrig.x);
f4 = (pane_nok[0].mPosCenterOrig.x - pane_nok[2].mPosCenterOrig.x);
f1_2 = -f31 * f1;
f3_2 = f3 * f1;
f4_2 = f4 * f1;
f5 = f30 * f1;
pictureTransX(f1_2, f3_2, f3_2, f4_2, f5);
}
if (mShutterCounter == r31) {
mModeSubState = PB_SUB_IDLE_e;
}
}
/* 80228470-80228650 .text shutterChange__9dJle_Pb_cFv */
void dJle_Pb_c::shutterChange() {
s16 shutterTime = g_meterHIO.field_0x124;
s16 shutterTime2 = shutterTime << 1;
s16 shutterCounter = mShutterCounter;
f32 f29;
if (shutterCounter < shutterTime) {
mShutterCounter = shutterCounter + 1;
f29 = fopMsgM_valueIncrease(shutterTime, mShutterCounter, 0);
} else if (shutterCounter == shutterTime) {
mShutterCounter = shutterCounter + 1;
f29 = 1.0f;
if (mViewMode == PB_VIEW_CAMERA_e) {
changeCameraToBrowse();
} else {
changeBrowseToCamera();
}
} else {
mShutterCounter = shutterCounter + 1;
f29 = fopMsgM_valueIncrease(shutterTime, shutterTime2 - mShutterCounter, 0);
if (mShutterCounter == shutterTime2) {
shutterHide();
mModeSwapActive = 0;
}
}
for (int i = 0; i < 12; i++) {
f32 rotateAngle = pane_sb[i].mUserArea + g_meterHIO.field_0x24 * f29;
pane_sb[i].pane->rotate(
pane_sb[i].mSizeOrig.x / 2.0f,
pane_sb[i].mSizeOrig.y / 2.0f,
ROTATE_Z,
rotateAngle
);
fopMsgM_paneTrans(
&pane_st[i],
0.0f,
f29 * -(pane_st[i].mPosTopLeftOrig.y - pane_sb[i].mSizeOrig.y / 2.0f)
);
shutterLineRotateInitPos(rotateAngle, i);
}
shutterLineMove();
}
/* 80228650-80228788 .text moveCamera__9dJle_Pb_cFv */
void dJle_Pb_c::moveCamera() {
camera_class* camera = dComIfGp_getCamera(0);
if (mModeSubState == PB_SUB_CONFIRM_e) {
camera->mCamera.Stay();
clickShutterMode();
dComIfGp_setAStatusForce(dActStts_BLANK_e);
dComIfGp_setDoStatusForce(dActStts_BLANK_e);
if (dComIfGp_getPictureStatus() != 2 && dComIfGp_getPictureStatus() != 3) {
dComIfGp_setRStatusForce(dActStts_BLANK_e);
}
dComIfGp_setRStatus(dActStts_BLANK_e);
}
else if (mModeSubState == PB_SUB_SHIFT_1_TO_0_e) {
camera->mCamera.Stay();
selectMode();
dComIfGp_setDoStatusForce(dActStts_CHOOSE_e);
dComIfGp_setAStatusForce(dActStts_RETURN_e);
}
else {
cameraMode();
#if VERSION > VERSION_DEMO
if (mModeSubState == PB_SUB_CONFIRM_e) {
camera->mCamera.Stay();
}
#endif
if (dComIfGs_getPictureNum() < 3) {
dComIfGp_setDoStatusForce(dActStts_TAKE_PHOTO_e);
}
else {
dComIfGp_setDoStatusForce(dActStts_BLANK_e);
}
dComIfGp_setAStatusForce(dActStts_RETURN_e);
if (dComIfGp_getPictureStatus() != 2 && dComIfGp_getPictureStatus() != 3) {
dComIfGp_setRStatusForce(dActStts_SWAP_MODES_e);
}
}
}
/* 80228788-80228BA8 .text moveBrowse__9dJle_Pb_cFv */
void dJle_Pb_c::moveBrowse() {
stick->checkTrigger();
if (mModeSubState == PB_SUB_IDLE_e) {
if (CPad_CHECK_TRIG_R(0)) {
mModeSwapActive = 1;
mShutterCounter = 0;
shutterShow();
mDoAud_seStart(JA_SE_UTUSHIE_CHANGE_MODE);
} else if (CPad_CHECK_TRIG_A(0)) {
if (mPhotoSlotOccupied[mSelectedPhotoSlot] != 0) {
mModeSubState = PB_SUB_CONFIRM_e;
messageSet(0xee2);
dComIfGp_setScopeMesgStatus(fopMsgStts_STOP_e);
mDoAud_seStart(JA_SE_UTUSHIE_PIC_OK);
}
} else if (stick->checkRightTrigger()) {
if (mSelectedPhotoSlot == 1) {
setColorInit(mSelectedPhotoSlot);
mSelectedPhotoSlot = 0;
mShutterCounter = 0;
mModeSubState = PB_SUB_SHIFT_1_TO_0_e;
mDoAud_seStart(JA_SE_UTUSHIE_SWITCH_PIC);
} else if (mSelectedPhotoSlot == 0) {
setColorInit(mSelectedPhotoSlot);
mSelectedPhotoSlot = 2;
mShutterCounter = 0;
mModeSubState = PB_SUB_SHIFT_0_TO_2_e;
mDoAud_seStart(JA_SE_UTUSHIE_SWITCH_PIC);
}
} else if (stick->checkLeftTrigger()) {
if (mSelectedPhotoSlot == 0) {
setColorInit(mSelectedPhotoSlot);
mSelectedPhotoSlot = 1;
mShutterCounter = 0;
mModeSubState = PB_SUB_SHIFT_0_TO_1_e;
mDoAud_seStart(JA_SE_UTUSHIE_SWITCH_PIC);
} else if (mSelectedPhotoSlot == 2) {
setColorInit(mSelectedPhotoSlot);
mSelectedPhotoSlot = 0;
mShutterCounter = 0;
mModeSubState = PB_SUB_SHIFT_2_TO_0_e;
mDoAud_seStart(JA_SE_UTUSHIE_SWITCH_PIC);
}
} else if (
CPad_CHECK_TRIG_B(0) ||
(CPad_CHECK_TRIG_X(0) && dComIfGs_getSelectItem(0) == dInvSlot_CAMERA_e) ||
(CPad_CHECK_TRIG_Y(0) && dComIfGs_getSelectItem(1) == dInvSlot_CAMERA_e) ||
(CPad_CHECK_TRIG_Z(0) && dComIfGs_getSelectItem(2) == dInvSlot_CAMERA_e)
) {
daPy_getPlayerActorClass()->onNoResetFlg0(
daPy_py_c::daPyFlg0_PHOTO_BOX_CANCEL
);
mExecState = PB_EXEC_CLOSE_e;
mDoAud_seStart(JA_SE_ITM_SUBMENU_OUT);
} else {
left_rightIconMove();
}
if (dComIfGs_getPictureNum()) {
dComIfGp_setDoStatusForce(dActStts_CHOOSE_e);
} else {
dComIfGp_setDoStatusForce(dActStts_BLANK_e);
}
dComIfGp_setAStatusForce(dActStts_RETURN_e);
#if VERSION == VERSION_DEMO
dComIfGp_setRStatusForce(dActStts_SWAP_MODES_e);
#else
if (dComIfGp_getPictureStatus() != 2 && dComIfGp_getPictureStatus() != 3) {
dComIfGp_setRStatusForce(dActStts_SWAP_MODES_e);
}
#endif
} else if (mModeSubState == PB_SUB_CONFIRM_e) {
pictureEraseWait();
if (dComIfGs_getPictureNum()) {
dComIfGp_setDoStatusForce(dActStts_CHOOSE_e);
} else {
dComIfGp_setDoStatusForce(dActStts_BLANK_e);
}
dComIfGp_setAStatusForce(dActStts_RETURN_e);
} else {
changePicture();
dComIfGp_setDoStatusForce(dActStts_BLANK_e);
}
setColorAnime(mSelectedPhotoSlot);
}
/* 80228BA8-80228F40 .text selectBrowse__9dJle_Pb_cFv */
void dJle_Pb_c::selectBrowse() {
stick->checkTrigger();
if (mModeSubState == PB_SUB_IDLE_e) {
if (CPad_CHECK_TRIG_A(0)) {
if (mPhotoSlotOccupied[mSelectedPhotoSlot] != 0) {
messageSet(0xee3);
mModeSubState = PB_SUB_CONFIRM_e;
}
} else if (
CPad_CHECK_TRIG_B(0) ||
(CPad_CHECK_TRIG_X(0) && dComIfGs_getSelectItem(0) == dInvSlot_CAMERA_e) ||
(CPad_CHECK_TRIG_Y(0) && dComIfGs_getSelectItem(1) == dInvSlot_CAMERA_e) ||
(CPad_CHECK_TRIG_Z(0) && dComIfGs_getSelectItem(2) == dInvSlot_CAMERA_e)
) {
daPy_getPlayerActorClass()->onPhotoBoxCancel();
dComIfGp_setPictureStatus(0);
mDoAud_seStart(JA_SE_UTUSHIE_B_LEAVE_PIC);
mExecState = PB_EXEC_CLOSE_e;
mDoAud_seStart(JA_SE_ITM_SUBMENU_OUT);
} else if (stick->checkRightTrigger()) {
if (mSelectedPhotoSlot == 1) {
setColorInit(mSelectedPhotoSlot);
mSelectedPhotoSlot = 0;
mShutterCounter = 0;
mModeSubState = PB_SUB_SHIFT_1_TO_0_e;
mDoAud_seStart(JA_SE_UTUSHIE_SWITCH_PIC);
} else if (mSelectedPhotoSlot == 0) {
setColorInit(mSelectedPhotoSlot);
mSelectedPhotoSlot = 2;
mShutterCounter = 0;
mModeSubState = PB_SUB_SHIFT_0_TO_2_e;
mDoAud_seStart(JA_SE_UTUSHIE_SWITCH_PIC);
}
} else if (stick->checkLeftTrigger()) {
if (mSelectedPhotoSlot == 0) {
setColorInit(mSelectedPhotoSlot);
mSelectedPhotoSlot = 1;
mShutterCounter = 0;
mModeSubState = PB_SUB_SHIFT_0_TO_1_e;
mDoAud_seStart(JA_SE_UTUSHIE_SWITCH_PIC);
} else if (mSelectedPhotoSlot == 2) {
setColorInit(mSelectedPhotoSlot);
mSelectedPhotoSlot = 0;
mShutterCounter = 0;
mModeSubState = PB_SUB_SHIFT_2_TO_0_e;
mDoAud_seStart(JA_SE_UTUSHIE_SWITCH_PIC);
}
} else {
left_rightIconMove();
}
if (dComIfGs_getPictureNum()) {
dComIfGp_setDoStatusForce(dActStts_CHOOSE_e);
} else {
dComIfGp_setDoStatusForce(dActStts_BLANK_e);
}
dComIfGp_setAStatusForce(dActStts_RETURN_e);
if (dComIfGp_getPictureStatus() != 2 && dComIfGp_getPictureStatus() != 3) {
dComIfGp_setRStatusForce(dActStts_SWAP_MODES_e);
}
} else if (mModeSubState == PB_SUB_CONFIRM_e) {
pictureDecide();
dComIfGp_setDoStatusForce(dActStts_CHOOSE_e);
dComIfGp_setAStatusForce(dActStts_RETURN_e);
} else {
changePicture();
dComIfGp_setDoStatusForce(dActStts_BLANK_e);
}
setColorAnime(mSelectedPhotoSlot);
}
/* 80228F40-80229100 .text getBrowse__9dJle_Pb_cFv */
void dJle_Pb_c::getBrowse() {
if (CPad_CHECK_TRIG_A(0) || CPad_CHECK_TRIG_B(0) ||
(CPad_CHECK_TRIG_X(0) && dComIfGs_getSelectItem(0) == dInvSlot_CAMERA_e) ||
(CPad_CHECK_TRIG_Y(0) && dComIfGs_getSelectItem(1) == dInvSlot_CAMERA_e) ||
(CPad_CHECK_TRIG_Z(0) && dComIfGs_getSelectItem(2) == dInvSlot_CAMERA_e)
) {
#if VERSION <= VERSION_JPN
u8 pictureNum = dComIfGs_getPictureNum();
dComIfGp_onPictureFlag(pictureNum);
#else
dComIfGp_onPictureFlag(0);
dComIfGp_onPictureFlag(1);
dComIfGp_onPictureFlag(2);
#endif
memcpy(mPhotoBuffer[dComIfGs_getPictureNum()], mPhotoBuffer[3], sizeof(card_pictdata));
#if VERSION <= VERSION_JPN
DCFlushRangeNoSync(mPhotoBuffer[dComIfGs_getPictureNum()], sizeof(card_pictdata));
#else
DCStoreRangeNoSync(mPhotoBuffer[dComIfGs_getPictureNum()], sizeof(card_pictdata));
#endif
dComIfGp_setItemPictureNumCount(1);
mPhotoSlotOccupied[dComIfGs_getPictureNum()] = 1;
daPy_getPlayerActorClass()->onPhotoBoxCancel();
dComIfGp_setPictureStatus(0);
mDoAud_seStart(JA_SE_UTUSHIE_B_LEAVE_PIC);
mExecState = PB_EXEC_CLOSE_e;
mDoAud_seStart(JA_SE_ITM_SUBMENU_OUT);
}
dComIfGp_setDoStatusForce(dActStts_NEXT_e);
dComIfGp_setAStatusForce(dActStts_RETURN_e);
}
/* 80229100-8022929C .text changeBrowseToCamera__9dJle_Pb_cFv */
void dJle_Pb_c::changeBrowseToCamera() {
mViewMode = PB_VIEW_CAMERA_e;
setColorInit(mSelectedPhotoSlot);
pictureTransX(0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
fopMsgM_setNowAlphaZero(&pane_ylef);
fopMsgM_setNowAlphaZero(&pane_ylig);
for(int i = 0; i < 3; i++) {
fopMsgM_setNowAlphaZero(&pane_icn[i]);
fopMsgM_setNowAlphaZero(&pane_emp[i]);
}
fopMsgM_setNowAlphaZero(&pane_ct1);
fopMsgM_setNowAlphaZero(&pane_ct2);
for(int i = 0; i < 8; i++) {
fopMsgM_setNowAlphaZero(&pane_sp[i]);
}
for(int i = 0; i < 3; i++) {
fopMsgM_setNowAlphaZero(&pane_no[i]);
fopMsgM_setNowAlphaZero(&pane_nob[i]);
fopMsgM_setNowAlphaZero(&pane_nok[i]);
}
fopMsgM_setNowAlphaZero(&pane_b1);
fopMsgM_setNowAlphaZero(&pane_b2);
fopMsgM_setNowAlphaZero(&pane_shut);
fopMsgM_setInitAlpha(&pane_wnum);
fopMsgM_setInitAlpha(&pane_wnuk);
fopMsgM_setInitAlpha(&pane_wpba);
fopMsgM_setInitAlpha(&pane_wbap);
fopMsgM_setInitAlpha(&pane_wpsc);
fopMsgM_setInitAlpha(&pane_yrtn);
fopMsgM_setInitAlpha(&pane_yzom);
fopMsgM_setInitAlpha(&pane_crtn);
fopMsgM_setInitAlpha(&pane_czom);
fopMsgM_setInitAlpha(&pane_lrtn);
fopMsgM_setInitAlpha(&pane_rzom);
fopMsgM_setInitAlpha(&pane_fd00);
changeData();
remainMessageSet(dComIfGs_getPictureNum());
dMenu_flagSet(0);
}
/* 8022929C-80229430 .text changeCameraToBrowse__9dJle_Pb_cFv */
void dJle_Pb_c::changeCameraToBrowse() {
mViewMode = PB_VIEW_BROWSE_e;
fopMsgM_setNowAlphaZero(&pane_wnum);
fopMsgM_setNowAlphaZero(&pane_wnuk);
fopMsgM_setNowAlphaZero(&pane_wpba);
fopMsgM_setNowAlphaZero(&pane_wbap);
fopMsgM_setNowAlphaZero(&pane_wpsc);
fopMsgM_setNowAlphaZero(&pane_yrtn);
fopMsgM_setNowAlphaZero(&pane_yzom);
fopMsgM_setNowAlphaZero(&pane_crtn);
fopMsgM_setNowAlphaZero(&pane_czom);
fopMsgM_setNowAlphaZero(&pane_lrtn);
fopMsgM_setNowAlphaZero(&pane_rzom);
fopMsgM_setNowAlphaZero(&pane_fd00);
fopMsgM_setInitAlpha(&pane_ylef);
fopMsgM_setInitAlpha(&pane_ylig);
for(int i = 0; i < 3; i++) {
if(mPhotoSlotOccupied[i]) {
fopMsgM_setInitAlpha(&pane_icn[i]);
} else {
fopMsgM_setNowAlphaZero(&pane_icn[i]);
}
fopMsgM_setInitAlpha(&pane_emp[i]);
}
fopMsgM_setInitAlpha(&pane_ct1);
fopMsgM_setInitAlpha(&pane_ct2);
for(int i = 0; i < 8; i++) {
fopMsgM_setInitAlpha(&pane_sp[i]);
}
for(int i = 0; i < 3; i++) {
fopMsgM_setInitAlpha(&pane_no[i]);
fopMsgM_setInitAlpha(&pane_nob[i]);
fopMsgM_setInitAlpha(&pane_nok[i]);
}
fopMsgM_setInitAlpha(&pane_b1);
fopMsgM_setInitAlpha(&pane_b2);
fopMsgM_setInitAlpha(&pane_shut);
existMessageSet(dComIfGs_getPictureNum());
dMenu_flagSet(1);
}
/* 80229430-80229520 .text setColorInit__9dJle_Pb_cFUc */
void dJle_Pb_c::setColorInit(u8 param_1) {
((J2DPicture *)pane_icn[param_1].pane)->setWhite(icn_white);
((J2DPicture *)pane_emp[param_1].pane)->setWhite(emp_white);
((J2DPicture *)pane_emp[param_1].pane)->setBlack(emp_black);
pane_icn[param_1].mUserArea = 0;
if (mPhotoSlotOccupied[param_1] != 0) {
fopMsgM_setInitAlpha(&pane_icn[param_1]);
}
fopMsgM_setInitAlpha(&pane_emp[param_1]);
}
/* 80229520-80229980 .text setColorAnime__9dJle_Pb_cFUc */
void dJle_Pb_c::setColorAnime(u8 param_1) {
JUtility::TColor icnWhite, empWhite, empBlack;
pane_icn[param_1].mUserArea++;
if (pane_icn[param_1].mUserArea >= 0x28) {
pane_icn[param_1].mUserArea = 0;
}
int frame = pane_icn[param_1].mUserArea;
f32 t;
if (frame < 20) {
t = fopMsgM_valueIncrease(20, frame, 0);
} else {
t = fopMsgM_valueIncrease(20, 0x28 - frame, 0);
}
icnWhite.r = (icn_white.r - t * (icn_white.r - 255.0f));
icnWhite.g = (icn_white.g - t * (icn_white.g - 60.0f));
icnWhite.b = (icn_white.b - t * (icn_white.b - 60.0f));
icnWhite.a = 0xFF;
empWhite.r = (emp_white.r - t * (emp_white.r - 255.0f));
empWhite.g = (emp_white.g - t * (emp_white.g - 60.0f));
empWhite.b = (emp_white.b - t * (emp_white.b - 60.0f));
empWhite.a = 0xFF;
empBlack.r = (emp_black.r - t * (emp_black.r - 255.0f));
empBlack.g = (emp_black.g - t * (emp_black.g - 60.0f));
empBlack.b = (emp_black.b - t * (emp_black.b - 60.0f));
empBlack.a = 0;
((J2DPicture*)pane_icn[param_1].pane)->setWhite(icnWhite);
((J2DPicture*)pane_emp[param_1].pane)->setWhite(empWhite);
((J2DPicture*)pane_emp[param_1].pane)->setBlack(empBlack);
if (mPhotoSlotOccupied[param_1] != 0) {
fopMsgM_setNowAlpha(&pane_icn[param_1], (pane_icn[param_1].mInitAlpha - (pane_icn[param_1].mInitAlpha - 100.0f) * t) / pane_icn[param_1].mInitAlpha);
}
fopMsgM_setNowAlpha(&pane_emp[param_1], (pane_emp[param_1].mInitAlpha - (pane_emp[param_1].mInitAlpha - 100.0f) * t) / pane_emp[param_1].mInitAlpha);
}
/* 80229980-80229A7C .text changeData__9dJle_Pb_cFv */
void dJle_Pb_c::changeData() {
int j = 0;
for(int i = 0; i < 3; i++) {
if (mPhotoSlotOccupied[i] != 0) {
if(i != j) {
mPhotoSlotOccupied[i] = 0;
mPhotoSlotOccupied[j] = 1;
memcpy(mPhotoBuffer[j], mPhotoBuffer[i], sizeof(card_pictdata));
#if VERSION <= VERSION_JPN
DCFlushRangeNoSync(mPhotoBuffer[j], sizeof(card_pictdata));
#else
DCStoreRangeNoSync(mPhotoBuffer[j], sizeof(card_pictdata));
#endif
}
mDoMemCdRWm_SetCheckSumPictData((u8*)mPhotoBuffer[i]);
JKRMainRamToAram((u8*)mPhotoBuffer[i], dComIfGp_getPictureBoxData(j), sizeof(card_pictdata), EXPAND_SWITCH_UNKNOWN0, 0, NULL, -1);
j++;
}
}
dComIfGs_setEventReg(dSv_event_flag_c::UNK_89FF, 0);
}
/* 80229A7C-80229AF4 .text label_sort__9dJle_Pb_cFv */
bool dJle_Pb_c::label_sort() {
u8 count = 0;
for (int i = 0; i < 3; i++) {
mPictureSlotSortMap[i] = -1;
if (!getPicLabelData(i)) {
mPictureSlotSortMap[count] = i;
count++;
}
}
return true;
}
/* 80229AF4-80229B58 .text getPicLabelData__9dJle_Pb_cFUc */
u8 dJle_Pb_c::getPicLabelData(u8 param_1) {
u8 eventReg = dComIfGs_getEventReg(dSv_event_flag_c::UNK_89FF);
u8 result = 0;
if (param_1 < 3) {
result = eventReg & (1 << param_1);
}
return result;
}
/* 80229B58-80229D48 .text shutterLineRotateCenter__9dJle_Pb_cFfi */
void dJle_Pb_c::shutterLineRotateCenter(f32 param_1, int param_2) {
f32 sin1;
f32 cos1;
f32 cos2;
f32 sin2;
f32 sin3;
f32 cos3;
f32 cos4;
f32 sin4;
f32 angle;
f32 x1;
f32 y;
f32 x2;
x1 = pane_st[param_2].mPosTopLeftOrig.x + pane_sb[param_2].mSizeOrig.x / 2.0f;
y = pane_st[param_2].mPosTopLeft.y - pane_sb[param_2].mSizeOrig.y / 2.0f;
x2 = x1 + pane_st[param_2].mSizeOrig.x;
angle = M_PI * (param_1 / 180.0f);
sin1 = sin(angle);
cos1 = cos(angle);
f32 f26 = x1 * cos1 - y * sin1;
cos2 = cos(angle);
sin2 = sin(angle);
f32 f25 = x1 * sin2 + y * cos2;
sin3 = sin(angle);
cos3 = cos(angle);
f32 f27 = x2 * cos3 - y * sin3;
cos4 = cos(angle);
sin4 = sin(angle);
f32 f1 = x2 * sin4 + y * cos4;
mShutterLineX1[param_2] = f26 + pane_no[0].mPosCenterOrig.x;
mShutterLineY1[param_2] = f25 + pane_no[0].mPosCenterOrig.y;
mShutterLineX2[param_2] = f27 + pane_no[0].mPosCenterOrig.x;
mShutterLineY2[param_2] = f1 + pane_no[0].mPosCenterOrig.y;
}
/* 80229D48-80229F3C .text shutterLineRotateInitPos__9dJle_Pb_cFfi */
void dJle_Pb_c::shutterLineRotateInitPos(f32 param_1, int param_2) {
f32 sin1;
f32 cos1;
f32 cos2;
f32 sin2;
f32 sin3;
f32 cos3;
f32 cos4;
f32 sin4;
f32 angle;
f32 x1;
f32 y;
f32 x2;
x1 = pane_st[param_2].mPosTopLeftOrig.x + pane_sb[param_2].mSizeOrig.x / 2.0f;
y = pane_st[param_2].mPosTopLeft.y - pane_sb[param_2].mSizeOrig.y / 2.0f;
x2 = x1 + pane_st[param_2].mSizeOrig.x;
angle = M_PI * (param_1 / 180.0f);
sin1 = sin(angle);
cos1 = cos(angle);
f32 f26 = x1 * cos1 - y * sin1;
cos2 = cos(angle);
sin2 = sin(angle);
f32 f25 = x1 * sin2 + y * cos2;
sin3 = sin(angle);
cos3 = cos(angle);
f32 f27 = x2 * cos3 - y * sin3;
cos4 = cos(angle);
sin4 = sin(angle);
f32 f1 = x2 * sin4 + y * cos4;
mShutterLineX1[param_2] = f26 + pane_sb[param_2].mPosCenterOrig.x;
mShutterLineY1[param_2] = f25 + pane_sb[param_2].mPosCenterOrig.y;
mShutterLineX2[param_2] = f27 + pane_sb[param_2].mPosCenterOrig.x;
mShutterLineY2[param_2] = f1 + pane_sb[param_2].mPosCenterOrig.y;
}
/* 80229F3C-8022A09C .text shutterLineMove__9dJle_Pb_cFv */
void dJle_Pb_c::shutterLineMove() {
f32 intersectionX[12];
f32 intersectionY[12];
f32 x1;
f32 xNext;
f32 determinant;
f32 a1;
f32 b1;
f32 b2;
f32 c1;
f32 x2OrA2;
for (int i = 0; i < 12; i++) {
u32 next = (i == 11) ? 0 : i + 1;
x1 = mShutterLineX1[i];
x2OrA2 = mShutterLineX2[i];
if (x1 != x2OrA2) {
f32 y1 = mShutterLineY1[i];
a1 = -(y1 - mShutterLineY2[i]) /
(x1 - x2OrA2);
b1 = 1.0f;
c1 = y1 + a1 * x1;
} else {
a1 = 1.0f;
b1 = 0.0f;
c1 = x1;
}
xNext = mShutterLineX1[next];
x2OrA2 = mShutterLineX2[next];
if (xNext != x2OrA2) {
f32 nextY = mShutterLineY1[next];
x2OrA2 = -(nextY - mShutterLineY2[next]) /
(xNext - x2OrA2);
b2 = 1.0f;
xNext = nextY + x2OrA2 * xNext;
} else {
x2OrA2 = 1.0f;
b2 = 0.0f;
}
determinant = a1 * b2 - x2OrA2 * b1;
if (determinant) {
f32 temp1 = (b2 * c1 - b1 * xNext) / determinant;
f32 temp2 = (-x2OrA2 * c1 + a1 * xNext) / determinant;;
intersectionX[i] = temp1;
intersectionY[i] = temp2;
} else {
intersectionX[i] = x1;
intersectionY[i] = mShutterLineY1[i];
}
}
for (int i = 0; i < 12; i++) {
mShutterLineX1[i] = intersectionX[i];
mShutterLineY1[i] = intersectionY[i];
}
}
/* 8022A09C-8022A120 .text shutterLineDraw__9dJle_Pb_cFUc */
void dJle_Pb_c::shutterLineDraw(u8 shutter_alpha) {
JUtility::TColor shutterLineColor(0xFF, 0xFF, 0xFF, shutter_alpha);
for (int i = 0; i < 12; i++) {
J2DDrawLine(mShutterLineX1[i], mShutterLineY1[i], mShutterLineX2[i], mShutterLineY2[i], shutterLineColor, 0xc);
}
}
/* 8022A120-8022A7A8 .text messageSet__9dJle_Pb_cFUl */
void dJle_Pb_c::messageSet(u32 msgNo) {
fopMsgM_msgGet_c msgGet;
char colorTag[0x1C];
char whiteTag[0x1C];
msgGet.mMsgIdx = 0;
msgGet.mGroupID = 0;
msgGet.mMsgNo = 0;
msgGet.mResMsgNo = 0;
u32 color = fopMsgM_getColorTable(0);
u8 firstChoiceSeen = 0;
mSelectedChoiceIndex = 0;
f32 tx0FontSizeX = ((J2DTextBox*)pane_tx[0].pane)->mFontSizeX;
f32 tx1FontSizeX = ((J2DTextBox*)pane_tx[1].pane)->mFontSizeX;
mMsgIconFontMainPic->hide();
mMsgIconFontSubPic->hide();
mMsgSelectArrowPic->hide();
mMsgIconFontMainPic->setAlpha(0);
mMsgIconFontSubPic->setAlpha(0);
mMsgSelectArrowPic->setAlpha(0);
mChoiceArrowIconIdx = 0xFF;
mMsgIconDrawState = -1;
if (head_p != NULL) {
JKRFileLoader::removeResource(head_p, NULL);
head_p = NULL;
}
head_p = msgGet.getMesgHeader(msgNo);
JUT_ASSERT(VERSION_SELECT(1841, 1836, 1881, 1908), head_p);
const char* text = msgGet.getMessage(head_p);
mMsgEntry = msgGet.getMesgEntry(head_p);
sprintf(colorTag, "\x1b" "CC[%08x]" "\x1b" "GM[0]", color);
sprintf(whiteTag, "\x1b" "CC[000000FF]" "\x1b" "GM[0]");
strcpy(mMsgTextBuffer[0], colorTag);
strcpy(mMsgTextBuffer[1], colorTag);
strcpy(mMsgTextBuffer[2], whiteTag);
strcpy(mMsgTextBuffer[3], whiteTag);
mMsgDataProc.dataInit();
mMsgDataProc.setBmgData((char*)text);
mMsgDataProc.setOutMessage(mMsgTextBuffer[0], mMsgTextBuffer[1], mMsgTextBuffer[2], mMsgTextBuffer[3]);
mMsgDataProc.setFont(font0);
mMsgDataProc.setRubyFont(font1);
mMsgDataProc.setCharSpace(((J2DTextBox*)pane_tx[0].pane)->mCharSpace);
mMsgDataProc.setRubyCharSpace(((J2DTextBox*)pane_tx[1].pane)->mCharSpace);
mMsgDataProc.setLineSpace(((J2DTextBox*)pane_tx[0].pane)->getLineSpace());
mMsgDataProc.setMesgEntry(&mMsgEntry);
mMsgDataProc.setFontSize(tx0FontSizeX);
mMsgDataProc.setRubyFontSize(tx1FontSizeX);
mMsgDataProc.setLineWidth(0x1F7);
mMsgDataProc.setCenterLineWidth(0x1E6);
mMsgDataProc.setSendSpeed(g_msgHIO.field_0x82);
mMsgDataProc.setSpaceTimer(g_msgHIO.field_0x6c);
mMsgDataProc.field_0x299 = 1;
if (g_msgHIO.field_0x83 != 0) {
mMsgDataProc.setSpaceFlagOn();
} else {
mMsgDataProc.setSpaceFlagOff();
}
mMsgDataProc.stringLength();
mMsgDataProc.stringShift();
mMsgDataProc.iconIdxRefresh();
mMsgLineCount = mMsgDataProc.getLineCount();
mMsgDataProc.setLineCount(0);
f32 yShift = ((VERSION_SELECT(1, 1, 2, 2) - mMsgLineCount) * (((J2DTextBox*)pane_tx[0].pane)->getLineSpace() / 2.0f));
for (int i = 0; i < 4; i++) {
((J2DTextBox*)pane_tx[i].pane)->shiftSet(0.0f, yShift);
}
mMsgDataProc.stringSet();
for (int i = 0; i < 4; i++) {
((J2DTextBox*)pane_tx[i].pane)->setString(mMsgTextBuffer[i]);
}
for (int i = 0; i < 15; i++) {
int halfLine = ((J2DTextBox*)pane_tx[0].pane)->getLineSpace() / 2.0f;
u8 icon = mMsgDataProc.getIconNum(i);
u32 fontColor = mMsgDataProc.getStringColor();
if (icon == fopMsgM_Icon_SELECT_YOKO_LEFT_e) {
mChoiceCursorX0 = (int)(
((J2DTextBox*)pane_tx[0].pane)->mBounds.i.x +
(f32)mMsgDataProc.getIconPosX(i)
);
mChoiceCursorY = (int)(
((J2DTextBox*)pane_tx[0].pane)->mBounds.i.y +
(f32)(
halfLine *
((VERSION_SELECT(1, 1, 2, 2) - mMsgLineCount) +
mMsgDataProc.getIconPosY(i) * 2)
)
);
mMsgSelectArrowPic->show();
mMsgSelectArrowPic->setAlpha(0xFF);
mChoiceArrowIconIdx = i;
if (firstChoiceSeen == 0) {
firstChoiceSeen = 1;
mSelectedChoiceIndex = 1;
} else {
firstChoiceSeen = 0;
mSelectedChoiceIndex = 0;
}
} else if (icon == fopMsgM_Icon_SELECT_YOKO_RIGHT_e) {
mChoiceCursorX1 = (int)(
((J2DTextBox*)pane_tx[0].pane)->mBounds.i.x +
(f32)mMsgDataProc.getIconPosX(i)
);
mChoiceCursorYAlt = (int)(
((J2DTextBox*)pane_tx[0].pane)->mBounds.i.y +
(f32)(
halfLine *
((1 - mMsgLineCount) +
mMsgDataProc.getIconPosY(i) * 2)
)
);
mMsgSelectArrowPic->show();
mMsgSelectArrowPic->setAlpha(0xFF);
mChoiceArrowIconIdx = i;
if (firstChoiceSeen != 0) {
mSelectedChoiceIndex = 1;
} else {
mSelectedChoiceIndex = 0;
}
} else if (icon != 0xFF && mMsgIconDrawState == -1) {
fopMsgM_outFontSet(
mMsgIconFontMainPic,
mMsgIconFontSubPic,
&mMsgIconDrawState,
fontColor,
icon
);
}
}
if (dComIfGs_getOptRuby()) {
pane_tx[1].pane->hide();
pane_tx[3].pane->hide();
} else {
if (pane_tx[1].pane->isVisible()) {
pane_tx[1].pane->show();
}
if (pane_tx[3].pane->isVisible()) {
pane_tx[3].pane->show();
}
}
}
/* 8022A7A8-8022A810 .text remainMessageSet__9dJle_Pb_cFUc */
void dJle_Pb_c::remainMessageSet(u8 param_1) {
if (param_1 == 0) {
messageSet(0xed9);
}
else if (param_1 == 1) {
messageSet(0xeda);
}
else if (param_1 == 2) {
messageSet(0xedb);
}
else if (param_1 == 3) {
messageSet(0xedc);
}
}
/* 8022A810-8022A878 .text existMessageSet__9dJle_Pb_cFUc */
void dJle_Pb_c::existMessageSet(u8 param_1) {
if (param_1 == 0) {
messageSet(0xee1);
}
else if (param_1 == 1) {
messageSet(0xee0);
}
else if (param_1 == 2) {
messageSet(0xedf);
}
else if (param_1 == 3) {
messageSet(0xede);
}
}
/* 8022A878-8022A8A8 .text shutterShow__9dJle_Pb_cFv */
void dJle_Pb_c::shutterShow() {
for(int i = 0; i < 12; i++) {
pane_sb[i].pane->show();
pane_st[i].pane->show();
}
}
/* 8022A8A8-8022A8DC .text shutterHide__9dJle_Pb_cFv */
void dJle_Pb_c::shutterHide() {
for(int i = 0; i < 12; i++) {
pane_sb[i].pane->hide();
pane_st[i].pane->hide();
}
}
/* 8022A8DC-8022AF44 .text _create__9dJle_Pb_cFP10JKRExpHeap */
void dJle_Pb_c::_create(JKRExpHeap* i_heap) {
int j = 0;
int k = 0;
scrn = new J2DScreen();
JUT_ASSERT(VERSION_SELECT(2038, 2033, 2086, 2113), scrn != NULL);
scrn->set("wipe_01_01.blo", dComIfGp_getCameraResArchive());
scrn1 = new J2DScreen();
JUT_ASSERT(VERSION_SELECT(2042, 2037, 2090, 2117), scrn1 != NULL);
scrn1->set("wipe_01_02.blo", dComIfGp_getCameraResArchive());
scrn2 = new J2DScreen();
JUT_ASSERT(VERSION_SELECT(2046, 2041, 2094, 2121), scrn2 != NULL);
scrn2->set("hukidashi_08.blo", dComIfGp_getMsgArchive());
font0 = mDoExt_getMesgFont();
JUT_ASSERT(VERSION_SELECT(2050, 2045, 2098, 2125), font0 != NULL);
font1 = mDoExt_getRubyFont();
JUT_ASSERT(VERSION_SELECT(2053, 2048, 2102, 2129), font1 != NULL);
stick = new STControl(5, 2, 3, 2);
JUT_ASSERT(VERSION_SELECT(2056, 2051, 2107, 2134), stick != NULL);
mMsgIconFontMainPic = new J2DPicture("font_07_02.bti");
mMsgIconFontSubPic = new J2DPicture("font_07_02.bti");
mMsgSelectArrowPic = new J2DPicture("font_10.bti");
mImportedPhotoLoadReq = NULL;
fopMsgM_blendInit(mMsgIconFontMainPic, "font_00.bti");
fopMsgM_blendInit(mMsgIconFontSubPic, "font_00.bti");
fopMsgM_blendInit(mMsgSelectArrowPic, "font_10.bti");
mMsgIconFontMainPic->hide();
mMsgIconFontSubPic->hide();
mMsgSelectArrowPic->hide();
mMsgIconFontMainPic->setAlpha(0);
mMsgIconFontSubPic->setAlpha(0);
mMsgSelectArrowPic->setAlpha(0);
mMsgIconDrawState = -1;
screenSet();
screenSet2();
mZoomScale = 0.0f;
mFadeTimer = 0;
mShutterCounter = 0;
mModeSwapActive = 0;
mChoiceArrowIconIdx = -1;
if (dComIfGp_getPictureStatus() == 2) {
mExecState = PB_EXEC_BROWSE_OPEN_e;
mViewMode = PB_VIEW_BROWSE_e;
}
else if (dComIfGp_getPictureStatus() == 3) {
mExecState = PB_EXEC_GET_OPEN_e;
mImportedPhotoLoadReq = mDoDvdThd_toMainRam_c::create(photo_data[dComIfGp_getGetPictureNum()], 0, i_heap);
mViewMode = PB_VIEW_GET_e;
}
else {
mExecState = PB_EXEC_CAMERA_OPEN_e;
mViewMode = PB_VIEW_CAMERA_e;
}
mModeSubState = PB_SUB_IDLE_e;
zoomScale();
mSelectedPhotoSlot = 0;
head_p = NULL;
mPhotoDeletedFlag = 0;
mCaptureFormat = GX_TF_I8;
mMsgLineCount = 0;
mChoiceCursorYAlt = 0;
mChoiceCursorY = 0;
mChoiceCursorX1 = 0;
mChoiceCursorX0 = 0;
label_sort();
for (int i = 0; i < 3; i++) {
mPhotoSlotOccupied[i] = 0;
if (i < dComIfGs_getPictureNum() && mPictureSlotSortMap[i] != 0xFF) {
mPhotoSlotOccupied[j] = 1;
JKRAramToMainRam(
dComIfGp_getPictureBoxData(mPictureSlotSortMap[i]),
(u8*)mPhotoBuffer[k],
sizeof(card_pictdata)
);
j++;
k++;
}
}
for(int i = 0; i < 12; i++) {
shutterLineRotateInitPos(pane_sb[i].mUserArea, i);
}
}
/* 8022AF44-8022B018 .text _copen__9dJle_Pb_cFv */
void dJle_Pb_c::_copen() {
if (mFadeTimer == 0) {
remainMessageSet(dComIfGs_getPictureNum());
}
mFadeTimer++;
cameraAlphaInc(fopMsgM_valueIncrease(10, mFadeTimer, 0));
if (mFadeTimer == 10) {
dComIfGp_setScopeMesgStatus(fopMsgStts_SCOPE_ACTIVE_e);
mExecState = PB_EXEC_CAMERA_MOVE_e;
mDoAud_seStart(JA_SE_ITM_SUBMENU_IN_2);
}
dComIfGp_setDoStatusForce(dActStts_BLANK_e);
#if VERSION > VERSION_DEMO
dComIfGp_setAStatusForce(dActStts_BLANK_e);
#endif
up_downIconMove();
}
/* 8022B018-8022B0F8 .text _bopen__9dJle_Pb_cFv */
void dJle_Pb_c::_bopen() {
if (mFadeTimer == 0) {
if(!dComIfGs_getPictureNum()) {
messageSet(0xee4);
}
else {
existMessageSet(dComIfGs_getPictureNum());
}
}
mFadeTimer++;
browseAlphaInc(fopMsgM_valueIncrease(10, mFadeTimer, 0));
if (mFadeTimer == 10) {
dComIfGp_setScopeMesgStatus(fopMsgStts_SCOPE_ACTIVE_e);
mExecState = PB_EXEC_BROWSE_MOVE_e;
mDoAud_seStart(JA_SE_ITM_SUBMENU_IN_2);
}
dComIfGp_setDoStatusForce(dActStts_BLANK_e);
#if VERSION > VERSION_DEMO
dComIfGp_setAStatusForce(dActStts_BLANK_e);
#endif
}
/* 8022B0F8-8022B214 .text _gopen__9dJle_Pb_cFv */
void dJle_Pb_c::_gopen() {
if (mFadeTimer == 0) {
messageSet(0xee5);
}
if (mFadeTimer >= 10) {
if (mImportedPhotoLoadReq->sync() != 0) {
card_pictdata* pict = mPhotoBuffer[3];
memcpy(pict->tex_buffer, mImportedPhotoLoadReq->getMemAddress(), sizeof(pict->tex_buffer));
#if VERSION <= VERSION_JPN
DCFlushRangeNoSync(pict->tex_buffer, sizeof(pict->tex_buffer));
#else
DCStoreRangeNoSync(pict->tex_buffer, sizeof(pict->tex_buffer));
#endif
u8 picNo = dComIfGp_getGetPictureNum();
pict->snap_result = photo_idx[picNo];
pict->snap_result_detail = 0;
pict->capture_format = GX_TF_CMPR;
dComIfGp_setScopeMesgStatus(fopMsgStts_SCOPE_ACTIVE_e);
mExecState = PB_EXEC_GET_MOVE_e;
mDoAud_seStart(JA_SE_ITM_SUBMENU_IN_2);
}
} else {
mFadeTimer++;
getAlphaInc(fopMsgM_valueIncrease(10, mFadeTimer, 0));
}
dComIfGp_setDoStatusForce(dActStts_BLANK_e);
dComIfGp_setAStatusForce(dActStts_BLANK_e);
}
/* 8022B214-8022B298 .text _close__9dJle_Pb_cFv */
void dJle_Pb_c::_close() {
mFadeTimer--;
alphaDec(fopMsgM_valueIncrease(10, mFadeTimer, 0));
if (mFadeTimer == 0) {
changeData();
mExecState = PB_EXEC_CLOSED_e;
dMenu_flagSet(0);
}
#if VERSION > VERSION_DEMO
dComIfGp_setDoStatusForce(dActStts_BLANK_e);
dComIfGp_setAStatusForce(dActStts_BLANK_e);
#endif
}
/* 8022B298-8022B2E0 .text _cmove__9dJle_Pb_cFv */
void dJle_Pb_c::_cmove() {
if (mModeSwapActive == 0) {
if (mViewMode == PB_VIEW_CAMERA_e) {
moveCamera();
}
else {
moveBrowse();
}
}
else {
shutterChange();
}
}
/* 8022B2E0-8022B300 .text _bmove__9dJle_Pb_cFv */
void dJle_Pb_c::_bmove() {
selectBrowse();
}
/* 8022B300-8022B320 .text _gmove__9dJle_Pb_cFv */
void dJle_Pb_c::_gmove() {
getBrowse();
}
/* 8022B320-8022B9E8 .text draw__9dJle_Pb_cFv */
void dJle_Pb_c::draw() {
/* Nonmatching - retail-only regalloc */
if (mExecState != PB_EXEC_CLOSE_e && mExecState != PB_EXEC_CLOSED_e) {
for (int i = 0; i < 12; i++) {
fopMsgM_setAlpha(&pane_sb[i]);
fopMsgM_setAlpha(&pane_st[i]);
}
fopMsgM_setAlpha(&pane_ylig);
fopMsgM_setAlpha(&pane_ylef);
for (int i = 0; i < 3; i++) {
fopMsgM_setAlpha(&pane_icn[i]);
fopMsgM_setAlpha(&pane_emp[i]);
}
fopMsgM_setAlpha(&pane_ct1);
fopMsgM_setAlpha(&pane_ct2);
for (int i = 0; i < 8; i++) {
fopMsgM_setAlpha(&pane_sp[i]);
}
for (int i = 0; i < 3; i++) {
fopMsgM_setAlpha(&pane_no[i]);
fopMsgM_setAlpha(&pane_nob[i]);
fopMsgM_setAlpha(&pane_nok[i]);
}
fopMsgM_setAlpha(&pane_b1);
fopMsgM_setAlpha(&pane_b2);
fopMsgM_setAlpha(&pane_wnum);
fopMsgM_setAlpha(&pane_wnuk);
fopMsgM_setAlpha(&pane_wpba);
fopMsgM_setAlpha(&pane_wbap);
fopMsgM_setAlpha(&pane_wpsc);
fopMsgM_setAlpha(&pane_yrtn);
fopMsgM_setAlpha(&pane_yzom);
fopMsgM_setAlpha(&pane_crtn);
fopMsgM_setAlpha(&pane_czom);
fopMsgM_setAlpha(&pane_lrtn);
fopMsgM_setAlpha(&pane_rzom);
fopMsgM_setAlpha(&pane_shut);
fopMsgM_setAlpha(&pane_fd00);
fopMsgM_setAlpha(&pane_wp03);
fopMsgM_setAlpha(&pane_wp02);
fopMsgM_setAlpha(&pane_wp01);
fopMsgM_setAlpha(&pane_wp04);
fopMsgM_setAlpha(&pane_tx[0]);
fopMsgM_setAlpha(&pane_tx[1]);
fopMsgM_setAlpha(&pane_tx[2]);
fopMsgM_setAlpha(&pane_tx[3]);
}
J2DOrthoGraph* graph = dComIfGp_getCurrentGrafPort();
graph->setPort();
if (mModeSwapActive == 0) {
scrn1->draw(0.0f, 0.0f, graph);
shutterLineDraw(g_meterHIO.field_0x120);
scrn->draw(0.0f, 0.0f, graph);
scrn2->draw(0.0f, 0.0f, graph);
if (mExecState != PB_EXEC_CLOSED_e) {
if (mViewMode == PB_VIEW_GET_e) {
#if VERSION == VERSION_DEMO
pictureDraw(pane_tx[0].mNowAlpha, 3);
#else
if ((mExecState == PB_EXEC_GET_MOVE_e || mExecState == PB_EXEC_CLOSE_e) && mImportedPhotoLoadReq->sync() != 0) {
pictureDraw(pane_tx[0].mNowAlpha, 3);
}
#endif
} else if (mViewMode == PB_VIEW_BROWSE_e) {
for (int i = 0; i < 3; i++) {
if (mPhotoSlotOccupied[i] != 0) {
pictureDraw(pane_tx[0].mNowAlpha, i);
}
}
}
}
dComIfGp_getCurrentGrafPort()->setPort();
for (int idx = 0; idx < 15; idx++) {
if (idx == mChoiceArrowIconIdx) {
mMsgDataProc.selectArrow(
mMsgSelectArrowPic,
mChoiceCursorX0 + mSelectedChoiceIndex * (mChoiceCursorX1 - mChoiceCursorX0),
mChoiceCursorY,
VERSION_SELECT(29.0f, 29.0f, g_msgHIO.field_0x70, g_msgHIO.field_0x70),
VERSION_SELECT(29.0f, 29.0f, g_msgHIO.field_0x70, g_msgHIO.field_0x70)
);
} else {
u8 iconNo = mMsgDataProc.getIconNum(idx);
if (iconNo != fopMsgM_Icon_NONE_e && iconNo != fopMsgM_Icon_SELECT_YOKO_LEFT_e && iconNo != fopMsgM_Icon_SELECT_YOKO_RIGHT_e) {
int posX = mMsgDataProc.getIconPosX(idx);
int posY = mMsgDataProc.getIconPosY(idx);
int scale = mMsgDataProc.getIconScale(idx);
J2DTextBox* base = (J2DTextBox*)pane_tx[0].pane;
f32 lineSpace = base->getLineSpace();
int r9 = (int)(lineSpace / 2.0f);
int r5 = posX + base->mBounds.i.x;
f32 f1 = r9 * ((VERSION_SELECT(1, 1, 2, 2) - mMsgLineCount) + posY * 2);
int r6 = f1 + base->mBounds.i.y;
u8 alpha = base->getAlpha();
fopMsgM_outFontDraw(
mMsgIconFontMainPic,
mMsgIconFontSubPic,
r5,
r6,
scale,
&mMsgIconDrawState,
alpha,
iconNo
);
}
}
}
} else {
scrn->draw(0.0f, 0.0f, graph);
scrn2->draw(0.0f, 0.0f, graph);
if (mExecState != PB_EXEC_CLOSED_e) {
if (mViewMode == PB_VIEW_GET_e) {
#if VERSION == VERSION_DEMO
pictureDraw(pane_tx[0].mNowAlpha, 3);
#else
if ((mExecState == PB_EXEC_GET_MOVE_e || mExecState == PB_EXEC_CLOSE_e) && mImportedPhotoLoadReq->sync() != 0) {
pictureDraw(pane_tx[0].mNowAlpha, 3);
}
#endif
} else if (mViewMode == PB_VIEW_BROWSE_e) {
for (int i = 0; i < 3; i++) {
if (mPhotoSlotOccupied[i] != 0) {
pictureDraw(pane_tx[0].mNowAlpha, i);
}
}
}
}
graph = dComIfGp_getCurrentGrafPort();
graph->setPort();
for (int idx = 0; idx < 15; idx++) {
if (idx == mChoiceArrowIconIdx) {
mMsgDataProc.selectArrow(
mMsgSelectArrowPic,
mChoiceCursorX0 + mSelectedChoiceIndex * (mChoiceCursorX1 - mChoiceCursorX0),
mChoiceCursorY,
VERSION_SELECT(29.0f, 29.0f, g_msgHIO.field_0x70, g_msgHIO.field_0x70),
VERSION_SELECT(29.0f, 29.0f, g_msgHIO.field_0x70, g_msgHIO.field_0x70)
);
} else {
u8 iconNo = mMsgDataProc.getIconNum(idx);
if (iconNo != fopMsgM_Icon_NONE_e && iconNo != fopMsgM_Icon_SELECT_YOKO_LEFT_e && iconNo != fopMsgM_Icon_SELECT_YOKO_RIGHT_e) {
int posX = mMsgDataProc.getIconPosX(idx);
int posY = mMsgDataProc.getIconPosY(idx);
int scale = mMsgDataProc.getIconScale(idx);
J2DTextBox* base = (J2DTextBox*)pane_tx[0].pane;
f32 lineSpace = base->getLineSpace();
int r9 = (int)(lineSpace / 2.0f);
int r5 = posX + base->mBounds.i.x;
f32 f1 = r9 * ((VERSION_SELECT(1, 1, 2, 2) - mMsgLineCount) + posY * 2);
int r6 = f1 + base->mBounds.i.y;
u8 alpha = base->getAlpha();
fopMsgM_outFontDraw(
mMsgIconFontMainPic,
mMsgIconFontSubPic,
r5,
r6,
scale,
&mMsgIconDrawState,
alpha,
iconNo
);
}
}
}
scrn1->draw(0.0f, 0.0f, graph);
shutterLineDraw(g_meterHIO.field_0x120);
}
}
/* 8022B9E8-8022BB3C .text _delete__9dJle_Pb_cFP10JKRExpHeap */
void dJle_Pb_c::_delete(JKRExpHeap* i_heap) {
if (head_p != NULL) {
JKRFileLoader::removeResource(head_p, NULL);
}
if (mDoGph_getCaptureStep()) {
#if VERSION == VERSION_DEMO
mDoGph_setCaptureStep(6);
#else
mDoGph_CaptureCansel();
#endif
}
mDoExt_removeMesgFont();
mDoExt_removeRubyFont();
for(int i = 0; i < 4; i++) {
i_heap->free(mMsgTextBuffer[i]);
}
if (mImportedPhotoLoadReq != NULL) {
delete mImportedPhotoLoadReq;
}
delete scrn;
delete scrn2;
delete stick;
delete mMsgIconFontMainPic;
delete mMsgIconFontSubPic;
delete mMsgSelectArrowPic;
}
/* 8022BB3C-8022BB7C .text dPb_Draw__FP12sub_pb_class */
static BOOL dPb_Draw(sub_pb_class* i_this) {
dComIfGd_set2DOpa(i_this->dPb_c);
return TRUE;
}
/* 8022BB7C-8022BC84 .text dPb_Execute__FP12sub_pb_class */
static BOOL dPb_Execute(sub_pb_class* i_this) {
JKRHeap* oldHeap = mDoExt_setCurrentHeap(i_this->heap);
dJle_Pb_c* a_this = i_this->dPb_c;
if (a_this->getStatus() == PB_EXEC_CAMERA_OPEN_e) {
a_this->_copen();
}
else if (a_this->getStatus() == PB_EXEC_BROWSE_OPEN_e) {
a_this->_bopen();
}
else if (a_this->getStatus() == PB_EXEC_GET_OPEN_e) {
a_this->_gopen();
}
else if (a_this->getStatus() == PB_EXEC_CAMERA_MOVE_e) {
a_this->_cmove();
dComIfGp_onCameraAttentionStatus(0, dCamAttnStts_SUBJECT_e);
}
else if (a_this->getStatus() == PB_EXEC_BROWSE_MOVE_e) {
a_this->_bmove();
}
else if (a_this->getStatus() == PB_EXEC_GET_MOVE_e) {
a_this->_gmove();
}
else if (a_this->getStatus() == PB_EXEC_CLOSE_e) {
a_this->_close();
if (i_this->dPb_c->getStatus() == PB_EXEC_CLOSED_e) {
i_this->mStatus = fopMsgStts_BOX_CLOSED_e;
}
}
else if (a_this->getStatus() == PB_EXEC_CLOSED_e && i_this->mStatus == fopMsgStts_MSG_DESTROYED_e) {
fopMsgM_Delete(i_this);
}
mDoExt_setCurrentHeap(oldHeap);
return TRUE;
}
/* 8022BC84-8022BC8C .text dPb_IsDelete__FP12sub_pb_class */
static BOOL dPb_IsDelete(sub_pb_class*) {
return TRUE;
}
/* 8022BC8C-8022BD8C .text dPb_Delete__FP12sub_pb_class */
static BOOL dPb_Delete(sub_pb_class* i_this) {
JKRHeap* oldHeap = mDoExt_setCurrentHeap(i_this->heap);
i_this->dPb_c->_delete(i_this->heap);
delete i_this->dPb_c;
for(int i = 0; i < 4; i++) {
i_this->heap->free(i_this->buffer[i]);
}
dComIfGp_getMsgArchive()->removeResourceAll();
dComIfGp_getCameraResArchive()->removeResourceAll();
i_this->heap->freeAll();
mDoExt_setCurrentHeap(oldHeap);
dComIfGp_setHeapLockFlag(0);
dComIfGp_setScopeMesgStatus(fopMsgStts_MSG_UNK0_e);
dComIfGp_setDoStatusForce(dActStts_BLANK_e);
dComIfGp_setAStatusForce(dActStts_BLANK_e);
dComIfGp_setRStatusForce(dActStts_BLANK_e);
dComIfGp_setRStatus(dActStts_BLANK_e);
return TRUE;
}
/* 8022BD8C-8022C03C .text dPb_Create__FP9msg_class */
static cPhs_State dPb_Create(msg_class* i_this) {
sub_pb_class* i_Pb = (sub_pb_class*)i_this;
if ((dComIfGp_isHeapLockFlag() != 0) && (dComIfGp_isHeapLockFlag() != 6)) {
return cPhs_INIT_e;
}
if (dComIfGs_getPictureNum() > 3) {
dComIfGs_setPictureNum(0);
}
i_Pb->heap = dComIfGp_getExpHeap2D();
dComIfGp_setHeapLockFlag(6);
JUT_ASSERT(VERSION_SELECT(2716, 2725, 2796, 2823), i_Pb->heap != NULL);
JKRHeap* oldHeap = mDoExt_setCurrentHeap(i_Pb->heap);
i_Pb->dPb_c = new dJle_Pb_c();
for(int i = 0; i < 4; i++) {
i_Pb->buffer[i] = (card_pictdata*)i_Pb->heap->alloc(sizeof(card_pictdata), 0x20);
JUT_ASSERT(VERSION_SELECT(2725, 2734, 2805, 2832), i_Pb->buffer[i] != NULL);
i_Pb->dPb_c->getMemory(i_Pb->buffer[i], i);
}
for(int i = 0; i < 4; i++) {
char* buffer = (char*)i_Pb->heap->alloc(1000, 4);
i_Pb->dPb_c->setTextArea(buffer, i);
JUT_ASSERT(VERSION_SELECT(2732, 2741, 2812, 2839), buffer != NULL);
}
i_Pb->dPb_c->_create(i_Pb->heap);
mDoExt_setCurrentHeap(oldHeap);
dComIfGp_setScopeMesgStatus(fopMsgStts_MSG_UNK0_e);
if (dComIfGs_getPictureNum() < 3) {
dComIfGp_setDoStatusForce(dActStts_TAKE_PHOTO_e);
}
else {
dComIfGp_setDoStatusForce(dActStts_BLANK_e);
}
if (dComIfGp_getPictureStatus() == 2) {
dComIfGp_setAStatusForce(dActStts_RETURN_e);
dComIfGp_setRStatusForce(dActStts_HIDDEN_e);
}
else if (dComIfGp_getPictureStatus() == 3) {
dComIfGp_setAStatusForce(dActStts_HIDDEN_e);
dComIfGp_setRStatusForce(dActStts_HIDDEN_e);
}
else {
dComIfGp_setAStatusForce(dActStts_RETURN_e);
dComIfGp_setRStatusForce(dActStts_SWAP_MODES_e);
}
return cPhs_COMPLEATE_e;
}
static msg_method_class l_dPb_Method = {
(process_method_func)dPb_Create,
(process_method_func)dPb_Delete,
(process_method_func)dPb_Execute,
(process_method_func)dPb_IsDelete,
(process_method_func)dPb_Draw,
};
msg_process_profile_definition g_profile_PB = {
/* Layer ID */ fpcLy_CURRENT_e,
/* List ID */ 0x000C,
/* List Prio */ fpcPi_CURRENT_e,
/* Proc Name */ fpcNm_PB_e,
/* Proc SubMtd */ &g_fpcLf_Method.base,
/* Size */ sizeof(sub_pb_class),
/* Size Other */ 0,
/* Parameters */ 0,
/* Leaf SubMtd */ &g_fopMsg_Method,
/* Draw Prio */ fpcDwPi_PB_e,
/* Msg SubMtd */ &l_dPb_Method,
};