summaryrefslogtreecommitdiff
path: root/libs/JSystem/src/JFramework/JFWSystem.cpp
blob: c41f7ffc8f2b9f30778cd8d4508d65b82c4303d2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include "JSystem/JSystem.h" // IWYU pragma: keep

#include "JSystem/JFramework/JFWSystem.h"
#include "JSystem/JKernel/JKRExpHeap.h"
#include "JSystem/JUtility/JUTConsole.h"
#include "JSystem/JUtility/JUTGraphFifo.h"
#include "JSystem/JKernel/JKRAram.h"
#include "JSystem/JUtility/JUTVideo.h"
#include "JSystem/JUtility/JUTGamePad.h"
#include "JSystem/JUtility/JUTDirectPrint.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "JSystem/JUtility/JUTException.h"
#include "JSystem/JUtility/JUTResFont.h"
#include "JSystem/JUtility/JUTDbPrint.h"

s32 JFWSystem::CSetUpParam::maxStdHeaps = 2;

u32 JFWSystem::CSetUpParam::sysHeapSize = 0x400000;

JKRExpHeap* JFWSystem::rootHeap;

JKRExpHeap* JFWSystem::systemHeap;


u32 JFWSystem::CSetUpParam::fifoBufSize = 0x40000;

u32 JFWSystem::CSetUpParam::aramAudioBufSize = 0x800000;

u32 JFWSystem::CSetUpParam::aramGraphBufSize = 0x600000;

s32 JFWSystem::CSetUpParam::streamPriority = 8;

s32 JFWSystem::CSetUpParam::decompPriority = 7;

s32 JFWSystem::CSetUpParam::aPiecePriority = 6;

ResFONT* JFWSystem::CSetUpParam::systemFontRes = (ResFONT*)&JUTResFONT_Ascfont_fix12;

const GXRenderModeObj* JFWSystem::CSetUpParam::renderMode = &GXNtsc480IntDf;

u32 JFWSystem::CSetUpParam::exConsoleBufferSize = 0x24FC;

void JFWSystem::firstInit() {
    JUT_ASSERT(80, rootHeap == NULL);
    OSInit();
    DVDInit();
    rootHeap = JKRExpHeap::createRoot(CSetUpParam::maxStdHeaps, false);
    systemHeap = JKRExpHeap::create(CSetUpParam::sysHeapSize, rootHeap, false);
}

JKRThread* JFWSystem::mainThread;

JUTDbPrint* JFWSystem::debugPrint;

JUTResFont* JFWSystem::systemFont;

JUTConsoleManager* JFWSystem::systemConsoleManager;

JUTConsole* JFWSystem::systemConsole;

bool JFWSystem::sInitCalled = false;

void JFWSystem::init() {
    JUT_ASSERT(101, sInitCalled == false);

    if (rootHeap == NULL) {
        firstInit();
    }
    sInitCalled = true;

    JKRAram::create(CSetUpParam::aramAudioBufSize, CSetUpParam::aramGraphBufSize,
                    CSetUpParam::streamPriority, CSetUpParam::decompPriority,
                    CSetUpParam::aPiecePriority);
    mainThread = new JKRThread(OSGetCurrentThread(), 4);

    JUTVideo::createManager(CSetUpParam::renderMode);
    JUTCreateFifo(CSetUpParam::fifoBufSize);

    JUTGamePad::init();

    JUTDirectPrint* dbPrint = JUTDirectPrint::start();

    JUTAssertion::create();

    JUTException::create(dbPrint);

    systemFont = new JUTResFont(CSetUpParam::systemFontRes, NULL);

    debugPrint = JUTDbPrint::start(NULL, NULL);
    debugPrint->changeFont(systemFont);

    systemConsoleManager = JUTConsoleManager::createManager(NULL);

    systemConsole = JUTConsole::create(60, 200, NULL);
    systemConsole->setFont(systemFont);

    if (CSetUpParam::renderMode->efbHeight < 300) {
        systemConsole->setFontSize(systemFont->getWidth() * 0.85f, systemFont->getHeight() * 0.5f);
        systemConsole->setPosition(20, 25);
    } else {
        systemConsole->setFontSize(systemFont->getWidth(), systemFont->getHeight());
        systemConsole->setPosition(20, 50);
    }

    systemConsole->setHeight(25);
    systemConsole->setVisible(false);
    systemConsole->setOutput(JUTConsole::OUTPUT_OSREPORT | JUTConsole::OUTPUT_CONSOLE);
    JUTSetReportConsole(systemConsole);
    JUTSetWarningConsole(systemConsole);

    void* buffer = systemHeap->alloc(CSetUpParam::exConsoleBufferSize, 4);
    JUTException::createConsole(buffer, CSetUpParam::exConsoleBufferSize);
}