Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 42 additions & 7 deletions include/Kameda/PrintWindow.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#ifndef PRINTWINDOW_H
#define PRINTWINDOW_H

#include "types.h"
#include <JSystem/J2D/J2DPrint.h>
#include <JSystem/J2D/J2DPane.h>
#include <JSystem/JKernel/JKRHeap.h>
Expand All @@ -25,13 +26,47 @@ class PrintWindow
static const u64 mVisibleTag[3]; // 0x80375f60

//private:
u8 _0[0x2e8];
u32 _2e8;
u32 _2ec;
u32 _2f0;
f32 _2f4;
u32 _2f8;
u8 _2fc[0x308 - 0x2fc];
struct UnknownContainer
{
J2DAnmBase* animation;
J2DPane* pane;
float funknown;
};

struct TextBoxContainer
{
J2DTextBox *mTextBox[4];
};

struct FontSizeContainer
{
J2DTextBox::TFontSize mFontSize[4];
};

struct VisibilityContainer
{
J2DPane* pane;
};

UnknownContainer mUnknownContainerA[2][13];
UnknownContainer mUnknownContainerB[2][4];
UnknownContainer mUnknownContainerC[2][9];
TextBoxContainer mTextBoxContainer[2];
FontSizeContainer mFontSizeContainer[2];
VisibilityContainer mVisibleContainer[2][3];

struct
{
s32 type; // _2e8;
u32 _2ec;
u32 _2f0;
f32 _2f4;
u32 _2f8;
} mInfo;

J2DGrafContext* mGrafContext; // 0x2fc
JKRArchive *mArchive; // 0x300
J2DScreen* mScreen; // 0x304
}; // Size: 0x308

#endif
10 changes: 5 additions & 5 deletions src/Kameda/PrintDvdError.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,11 @@ void PrintDvdError::init(int errorId) {
mColor = getColor(mColorFile, getDefaultColor(mBmgFile));

// Inline setters?
mPrintWindow->_2e8 = 1;
mPrintWindow->_2ec = 1;
mPrintWindow->_2f0 = 1;
mPrintWindow->_2f4 = 9.0f;
mPrintWindow->_2f8 = 2;
mPrintWindow->mInfo.type = 1;
mPrintWindow->mInfo._2ec = 1;
mPrintWindow->mInfo._2f0 = 1;
mPrintWindow->mInfo._2f4 = 9.0f;
mPrintWindow->mInfo._2f8 = 2;
mPrintWindow->calc();

char *msg = getMessage(mBmgFile, mBmgId);
Expand Down
209 changes: 204 additions & 5 deletions src/Kameda/PrintWindow.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
#include "Kameda/PrintWindow.h"
#include "JSystem/J2D/J2DAnmLoader.h"
#include "JSystem/J2D/J2DGrafContext.h"
#include "JSystem/J2D/J2DPane.h"
#include "JSystem/J2D/J2DScreen.h"
#include "JSystem/JKernel/JKRArchive.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "Osako/FontMgr.h"
#include "Osako/ResMgr.h"
#include "Osako/system.h"

const u64 PrintWindow::mBckTag[13] = {
'NGDcw1', 'GDEf_011', 'GDEf_021', 'GDEf_031',
Expand All @@ -25,14 +34,204 @@ const u64 PrintWindow::mVisibleTag[3] = {
'N_YN1', 'NGDNo1', 'NGDyes1'
};

PrintWindow::PrintWindow(JKRHeap *) {}
PrintWindow::PrintWindow(JKRHeap *heap)
{
mGrafContext = System::getJ2DOrtho();

void PrintWindow::init() {}
void *archive = ResMgr::getPtr(ResMgr::mcArcSystem, "Screen/window.arc");
JKRMountArchive(archive, heap, JKRArchive::MOUNT_DIRECTION_HEAD);
mArchive = (JKRArchive *)archive;

void PrintWindow::draw() {}
mScreen = new (heap, 0) J2DScreen();
mScreen->J2DScreen::set("Window.blo", 0x40000, mArchive);

for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < 13; ++j)
{
u64 id = mBckTag[j] + i;

J2DPane *pane = mScreen->search(id);
mUnknownContainerA[i][j].pane = pane;

void *resource = JKRFileLoader::getGlbResource("Window.bck", mArchive);
J2DAnmBase *animation = J2DAnmLoaderDataBase::load(resource);
mUnknownContainerA[i][j].animation = animation;

mUnknownContainerA[i][j].pane->setAnimation(
(J2DAnmTransform *)mUnknownContainerA[i][j].animation);
}
}

for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < 4; ++j)
{
u64 id = mBtkTag[j] + i;

J2DPane *pane = mScreen->search(id);
mUnknownContainerB[i][j].pane = pane;

void *resource = JKRFileLoader::getGlbResource("Window.btk", mArchive);
J2DAnmBase *animation = J2DAnmLoaderDataBase::load(resource);
mUnknownContainerB[i][j].animation = animation;

mUnknownContainerB[i][j].animation->searchUpdateMaterialID(mScreen);
mUnknownContainerB[i][j].pane->setAnimation(
(J2DAnmTextureSRTKey *)mUnknownContainerB[i][j].animation);
}
}

for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < 9; ++j)
{
u64 id = mBrkTag[j] + i;

J2DPane *pane = mScreen->search(id);
mUnknownContainerC[i][j].pane = pane;

void *resource = JKRFileLoader::getGlbResource("Window.brk", mArchive);
J2DAnmBase *animation = J2DAnmLoaderDataBase::load(resource);
mUnknownContainerC[i][j].animation = animation;

mUnknownContainerC[i][j].animation->searchUpdateMaterialID(mScreen);
mUnknownContainerC[i][j].pane->setAnimation(
(J2DAnmTevRegKey *)mUnknownContainerC[i][j].animation);
}
}

char buffer[512];
for (int i = 0; i < 512; ++i)
{
buffer[i] = ' ';
}
buffer[511] = '\0';

char shorterBuffer[32];
for (int i = 0; i < 32; ++i)
{
shorterBuffer[i] = ' ';
}
shorterBuffer[31] = '\0';

for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < 4; ++j)
{
u64 id = mTextBoxTag[j] + i;

J2DTextBox *pane = (J2DTextBox *)mScreen->search(id);
#line 116
JUT_ASSERT_F(pane->getTypeID() == 13, "%s", "pane->getTypeID() == J2DPane_TextBox");

mTextBoxContainer[i].mTextBox[j] = pane;

mTextBoxContainer[i].mTextBox[j]->setFont(FontMgr::mspResFont);

if (j < 2)
{
mTextBoxContainer[i].mTextBox[j]->setString(buffer);
}
else
{
mTextBoxContainer[i].mTextBox[j]->setString(shorterBuffer);
}

mFontSizeContainer[i].mFontSize[j] = mTextBoxContainer[i].mTextBox[j]->mFontSize;
}
}

for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < 3; ++j)
{
u64 id = mVisibleTag[j] + i;
J2DPane *pane = mScreen->search(id);

mVisibleContainer[i][j].pane = pane;
}
}

init();
}

void PrintWindow::init()
{
for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < 13; ++j)
{
mUnknownContainerA[i][j].funknown = 0.0f;
}

for (int j = 0; j < 4; ++j)
{
mUnknownContainerB[i][j].funknown = 0.0f;
}

for (int j = 0; j < 9; ++j)
{
mUnknownContainerC[i][j].funknown = 0.0f;
}
}

mInfo.type = 1;
mInfo._2ec = 1;
mInfo._2f0 = 1;
mInfo._2f4 = 0.0f;
mInfo._2f8 = 2;
}

void PrintWindow::draw()
{
mGrafContext->setPort();
mScreen->draw(0.0f, 0.0f, mGrafContext);
}

void PrintWindow::calc() {}

J2DTextBox *PrintWindow::getTextBox() {}
J2DTextBox *PrintWindow::getTextBox()
{
J2DTextBox *textBox;

#line 336
JUT_MINMAX_ASSERT(0, mInfo.type, 2);

switch (mInfo._2ec)
{
case 0:
textBox = mTextBoxContainer[mInfo.type].mTextBox[1];
break;
case 1:
textBox = mTextBoxContainer[mInfo.type].mTextBox[0];
break;
default:
#line 374
JUT_ASSERT(0);
}

return textBox;
}

J2DTextBox::TFontSize PrintWindow::getBaseFontSize()
{
J2DTextBox::TFontSize fontSize;

#line 363
JUT_MINMAX_ASSERT(0, mInfo.type, 2);

J2DTextBox::TFontSize PrintWindow::getBaseFontSize() {}
switch (mInfo._2ec)
{
case 0:
fontSize = mFontSizeContainer[mInfo.type].mFontSize[1];
break;
case 1:
fontSize = mFontSizeContainer[mInfo.type].mFontSize[0];
break;
default:
#line 374
JUT_ASSERT(0);
}
return fontSize;
}
10 changes: 5 additions & 5 deletions src/Shiraiwa/SecretScene.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,9 @@ void TAutoPWindow::reset() {
setType(1);
mPrintWindow->getTextBox()->hide();
_30->hide();
mPrintWindow->_2f0 = 0;
mPrintWindow->_2ec = 1;
mPrintWindow->_2f8 = 2;
mPrintWindow->mInfo._2f0 = 0;
mPrintWindow->mInfo._2ec = 1;
mPrintWindow->mInfo._2f8 = 2;
mTransform->setFrame(0.0f);
mScreen->animation();
setAudioIDs(0, 0);
Expand All @@ -92,7 +92,7 @@ void TAutoPWindow::setType(u32 type) {
_34 = _30;
}
else {
mPrintWindow->_2e8 = type;
mPrintWindow->mInfo.type = type;
_34 = mPrintWindow->getTextBox();
}
}
Expand All @@ -103,7 +103,7 @@ void TAutoPWindow::setAnimationFrame(f32 frame) {
mScreen->animation();
}
else {
mPrintWindow->_2f4 = frame;
mPrintWindow->mInfo._2f4 = frame;
}
}

Expand Down
Loading