summaryrefslogtreecommitdiff
path: root/src/m_Do/m_Do_machine_exception.cpp
blob: 183e64e5e56f1e7f83a4e32ecd02fd67b2a7e0fe (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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
//
// Generated By: dol2asm
// Translation Unit: m_Do/m_Do_machine_exception
//

#include "m_Do/m_Do_machine_exception.h"
#include "JSystem/JFramework/JFWSystem.h"
#include "JSystem/JKernel/JKRAram.h"
#include "JSystem/JUtility/JUTConsole.h"
#include "Runtime.PPCEABI.H/__va_arg.h"
#include "d/com/d_com_inf_game.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "m_Do/m_Do_ext.h"
#include "m_Do/m_Do_main.h"

//
// Types:
//

struct DynamicModuleControlBase {
    /* 80262470 */ void dump();
};

//
// External References:
//

extern "C" void dump__24DynamicModuleControlBaseFv();

//
// Declarations:
//

static JUTConsole* sConsole;

#pragma push
#pragma force_active on
u8 struct_80450C94[4];
#pragma pop

void print_f(char const* fmt, ...) {
    va_list args;
    va_start(args, fmt);
    JUTConsole_print_f_va_(sConsole, fmt, args);
    va_end(args);
}

void print(char const* string) {
    sConsole->print(string);
}

const char* stringBase_80374460 = "--------------------------------------\n";

void dispHeapInfo() {
    JKRExpHeap* zelda = zeldaHeap;
    JKRExpHeap* game = gameHeap;
    JKRExpHeap* archive = archiveHeap;

    u32 zeldaFree = zelda->getFreeSize();
    u32 gameFree = game->getFreeSize();
    u32 archiveFree = archive->getFreeSize();
    u32 zeldaTotal = zelda->getTotalFreeSize();
    u32 gameTotal = game->getTotalFreeSize();
    u32 archiveTotal = archive->getTotalFreeSize();

    print("-- Heap Free / TotalFree (KB) --\n");
    print_f("  Zelda %5d / %5d\n", zeldaFree / 1024, zeldaTotal / 1024);
    print_f("   Game %5d / %5d\n", gameFree / 1024, gameTotal / 1024);
    print_f("Archive %5d / %5d\n", archiveFree / 1024, archiveTotal / 1024);
    print("--------------------------------\n");

    if (JKRAram::getAramHeap()) {
        JKRAram::getAramHeap()->dump();
    }
    dump__24DynamicModuleControlBaseFv();
    g_dComIfG_gameInfo.mResControl.dump();

    zelda->dump_sort();
    game->dump_sort();
    archive->dump_sort();
}

void dispGameInfo() {
    print_f("Start StageName:RoomNo [%s:%d]\n", dComIfGp_getStartStageName(),
            dComIfGp_getStartStageRoomNo());
}

void dispDateInfo() {
    print("------------- Date Infomation ---------\n");
    print(" FINAL VERSION\n");
    print("COMPILE USER: FINAL\n");
    print_f("COPYDATE   : %17s\n", mDoMain::COPYDATE_STRING);

    OSCalendarTime time;
    OSTicksToCalendarTime(mDoMain::sPowerOnTime, &time);
    print_f("PowerOnTime: %04d/%2d/%2d %2d:%2d:%2d`%03d\"%03d\n", time.year, time.month,
            time.day_of_month, time.hours, time.minutes, time.seconds, time.milliseconds,
            time.microseconds);

    OSTicksToCalendarTime(mDoMain::sHungUpTime, &time);
    print_f("HungUpTime : %04d/%2d/%2d %2d:%2d:%2d`%03d\"%03d\n", time.year, time.month,
            time.day_of_month, time.hours, time.minutes, time.seconds, time.milliseconds,
            time.microseconds);

    OSTicksToCalendarTime(mDoMain::sHungUpTime - mDoMain::sPowerOnTime, &time);
    print_f("PlayTime   : %4d days, %2d:%2d:%2d`%03d\"%03d\n", time.year_day, time.hours,
            time.minutes, time.seconds, time.milliseconds, time.microseconds);
    print("---------------------------------------\n");
}

void dispConsoleToTerminal() {
    JFWSystem::getSystemConsole()->dumpToTerminal(0xFFFFFFFF);
}

void exception_addition(JUTConsole* pConsole) {
    sConsole = pConsole;
    dispHeapInfo();
    dispDateInfo();
    dispConsoleToTerminal();
    dispGameInfo();
}

/* ############################################################################################## */
/* 80450C98-80450C9C -00001 0004+00 0/0 0/0 50/50 .sbss            None */
/* 80450C98 0001+00 data_80450C98 None */
/* 80450C99 0001+00 data_80450C99 None */
/* 80450C9A 0001+00 data_80450C9A None */
/* 80450C9B 0001+00 data_80450C9B None */
extern u8 struct_80450C98[4];
u8 struct_80450C98[4];

/* 80450C9C-80450CA0 -00001 0004+00 0/0 0/0 6/6 .sbss            None */
/* 80450C9C 0001+00 data_80450C9C None */
/* 80450C9D 0001+00 data_80450C9D None */
/* 80450C9E 0001+00 data_80450C9E None */
/* 80450C9F 0001+00 data_80450C9F None */
extern u8 struct_80450C9C[4];
u8 struct_80450C9C[4];

/* 80374460-80374460 000AC0 0000+00 0/0 0/0 0/0 .rodata          @stringBase0 */