mirror of https://github.com/zeldaret/tp.git
JUTConsole, JUTException (#1938)
This commit is contained in:
parent
febfd40837
commit
540a9ef64e
28
Progress.md
28
Progress.md
|
|
@ -7,22 +7,22 @@ Section | Percentage | Decompiled (bytes) | Total (bytes)
|
|||
.init | 97.972973% | 9280 | 9472
|
||||
.extab | 100.000000% | 96 | 96
|
||||
.extabindex | 100.000000% | 96 | 96
|
||||
.text | 31.880161% | 1146584 | 3596544
|
||||
.text | 33.360248% | 1199816 | 3596544
|
||||
.ctors | 100.000000% | 448 | 448
|
||||
.dtors | 100.000000% | 32 | 32
|
||||
.rodata | 100.000000% | 193856 | 193856
|
||||
.data | 100.000000% | 197632 | 197632
|
||||
.sdata | 100.000000% | 1408 | 1408
|
||||
.sdata2 | 100.000000% | 20832 | 20832
|
||||
Total | 39.061132% | 1570520 | 4020672
|
||||
Total | 40.385090% | 1623752 | 4020672
|
||||
|
||||
## Total
|
||||
|
||||
Section | Percentage | Decompiled (bytes) | Total (bytes)
|
||||
---|---|---|---
|
||||
main.dol | 39.061132% | 1570520 | 4020672
|
||||
RELs | 34.410518% | 3957288 | 11500228
|
||||
Total | 35.615254% | 5527808 | 15520900
|
||||
main.dol | 40.385090% | 1623752 | 4020672
|
||||
RELs | 34.516071% | 3969460 | 11500324
|
||||
Total | 36.036424% | 5593212 | 15520996
|
||||
|
||||
## RELs
|
||||
|
||||
|
|
@ -54,7 +54,7 @@ d_a_b_yo | 25.613486% | 14404 | 56236
|
|||
d_a_b_yo_ice | 28.297953% | 5972 | 21104
|
||||
d_a_b_zant | 22.203940% | 19432 | 87516
|
||||
d_a_b_zant_magic | 42.453480% | 2464 | 5804
|
||||
d_a_b_zant_mobile | 35.841270% | 4516 | 12600
|
||||
d_a_b_zant_mobile | 36.326402% | 4612 | 12696
|
||||
d_a_b_zant_sima | 100.000000% | 4020 | 4020
|
||||
d_a_balloon_2D | 29.886212% | 3572 | 11952
|
||||
d_a_bd | 31.115418% | 5780 | 18576
|
||||
|
|
@ -184,7 +184,7 @@ d_a_econt | 100.000000% | 1464 | 1464
|
|||
d_a_ep | 30.950696% | 5248 | 16956
|
||||
d_a_formation_mng | 27.806286% | 3468 | 12472
|
||||
d_a_fr | 34.866377% | 4488 | 12872
|
||||
d_a_grass | 49.074395% | 28312 | 57692
|
||||
d_a_grass | 54.690425% | 31552 | 57692
|
||||
d_a_guard_mng | 100.000000% | 1504 | 1504
|
||||
d_a_hitobj | 100.000000% | 1640 | 1640
|
||||
d_a_horse | 22.301298% | 15668 | 70256
|
||||
|
|
@ -488,7 +488,7 @@ d_a_obj_lv3Candle | 45.638126% | 2260 | 4952
|
|||
d_a_obj_lv3Water | 44.263566% | 4568 | 10320
|
||||
d_a_obj_lv3Water2 | 41.786571% | 2788 | 6672
|
||||
d_a_obj_lv3WaterB | 46.278317% | 1716 | 3708
|
||||
d_a_obj_lv3saka00 | 50.576369% | 1404 | 2776
|
||||
d_a_obj_lv3saka00 | 100.000000% | 2776 | 2776
|
||||
d_a_obj_lv3waterEff | 100.000000% | 1704 | 1704
|
||||
d_a_obj_lv4CandleDemoTag | 80.688935% | 3092 | 3832
|
||||
d_a_obj_lv4CandleTag | 50.114416% | 1752 | 3496
|
||||
|
|
@ -502,7 +502,7 @@ d_a_obj_lv4bridge | 47.146866% | 2016 | 4276
|
|||
d_a_obj_lv4chandelier | 26.284971% | 4848 | 18444
|
||||
d_a_obj_lv4digsand | 43.888433% | 2140 | 4876
|
||||
d_a_obj_lv4floor | 100.000000% | 2804 | 2804
|
||||
d_a_obj_lv4gear | 42.242704% | 1100 | 2604
|
||||
d_a_obj_lv4gear | 100.000000% | 2604 | 2604
|
||||
d_a_obj_lv4prelvtr | 48.664688% | 1312 | 2696
|
||||
d_a_obj_lv4prwall | 38.593750% | 1976 | 5120
|
||||
d_a_obj_lv4sand | 46.461825% | 1996 | 4296
|
||||
|
|
@ -626,7 +626,7 @@ d_a_obj_swpropeller | 98.552722% | 5720 | 5804
|
|||
d_a_obj_swpush | 31.657104% | 3752 | 11852
|
||||
d_a_obj_swpush2 | 34.150019% | 3624 | 10612
|
||||
d_a_obj_swpush5 | 39.210384% | 2900 | 7396
|
||||
d_a_obj_swspinner | 39.141631% | 1824 | 4660
|
||||
d_a_obj_swspinner | 100.000000% | 4660 | 4660
|
||||
d_a_obj_swturn | 31.295716% | 2396 | 7656
|
||||
d_a_obj_syRock | 38.458961% | 4592 | 11940
|
||||
d_a_obj_szbridge | 43.280632% | 1752 | 4048
|
||||
|
|
@ -673,7 +673,7 @@ d_a_obj_wind_stone | 37.702265% | 1864 | 4944
|
|||
d_a_obj_window | 42.655602% | 2056 | 4820
|
||||
d_a_obj_wood_pendulum | 44.455748% | 1748 | 3932
|
||||
d_a_obj_wood_statue | 36.601579% | 3524 | 9628
|
||||
d_a_obj_wsword | 48.936170% | 1380 | 2820
|
||||
d_a_obj_wsword | 77.021277% | 2172 | 2820
|
||||
d_a_obj_yel_bag | 33.773087% | 3584 | 10612
|
||||
d_a_obj_yobikusa | 39.095993% | 3356 | 8584
|
||||
d_a_obj_yousei | 27.926623% | 4628 | 16572
|
||||
|
|
@ -741,7 +741,7 @@ d_a_tag_lv2prchk | 100.000000% | 2776 | 2776
|
|||
d_a_tag_lv5soup | 100.000000% | 1908 | 1908
|
||||
d_a_tag_lv6CstaSw | 100.000000% | 2560 | 2560
|
||||
d_a_tag_magne | 100.000000% | 928 | 928
|
||||
d_a_tag_mhint | 35.576923% | 1332 | 3744
|
||||
d_a_tag_mhint | 55.128205% | 2064 | 3744
|
||||
d_a_tag_mist | 100.000000% | 2072 | 2072
|
||||
d_a_tag_mmsg | 100.000000% | 1960 | 1960
|
||||
d_a_tag_msg | 37.563971% | 1468 | 3908
|
||||
|
|
@ -754,7 +754,7 @@ d_a_tag_poFire | 100.000000% | 1688 | 1688
|
|||
d_a_tag_push | 41.000000% | 1148 | 2800
|
||||
d_a_tag_qs | 34.804270% | 1956 | 5620
|
||||
d_a_tag_ret_room | 100.000000% | 1684 | 1684
|
||||
d_a_tag_river_back | 45.725916% | 1348 | 2948
|
||||
d_a_tag_river_back | 100.000000% | 2948 | 2948
|
||||
d_a_tag_rmbit_sw | 100.000000% | 2204 | 2204
|
||||
d_a_tag_schedule | 100.000000% | 712 | 712
|
||||
d_a_tag_setBall | 100.000000% | 880 | 880
|
||||
|
|
@ -785,4 +785,4 @@ d_a_vrbox2 | 44.907111% | 2804 | 6244
|
|||
d_a_warp_bug | 100.000000% | 2024 | 2024
|
||||
d_a_ykgr | 44.400631% | 2252 | 5072
|
||||
f_pc_profile_lst | 100.000000% | 28156 | 28156
|
||||
Total | 34.410518% | 3957288 | 11500228
|
||||
Total | 34.516071% | 3969460 | 11500324
|
||||
|
|
|
|||
|
|
@ -1,78 +0,0 @@
|
|||
lbl_802E1EA8:
|
||||
/* 802E1EA8 94 21 FF D0 */ stwu r1, -0x30(r1)
|
||||
/* 802E1EAC 7C 08 02 A6 */ mflr r0
|
||||
/* 802E1EB0 90 01 00 34 */ stw r0, 0x34(r1)
|
||||
/* 802E1EB4 39 61 00 30 */ addi r11, r1, 0x30
|
||||
/* 802E1EB8 48 08 03 15 */ bl _savegpr_25
|
||||
/* 802E1EBC 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 802E1EC0 48 05 7E 01 */ bl PPCMfmsr
|
||||
/* 802E1EC4 38 00 F6 FF */ li r0, -2305
|
||||
/* 802E1EC8 7C 63 00 38 */ and r3, r3, r0
|
||||
/* 802E1ECC 48 05 7D FD */ bl PPCMtmsr
|
||||
/* 802E1ED0 3C 60 80 3D */ lis r3, sMessageQueue__12JUTException@ha /* 0x803CC620@ha */
|
||||
/* 802E1ED4 38 63 C6 20 */ addi r3, r3, sMessageQueue__12JUTException@l /* 0x803CC620@l */
|
||||
/* 802E1ED8 38 8D 83 70 */ la r4, sMessageBuffer__12JUTException(r13) /* 804508F0-_SDA_BASE_ */
|
||||
/* 802E1EDC 38 A0 00 01 */ li r5, 1
|
||||
/* 802E1EE0 48 05 CA B5 */ bl OSInitMessageQueue
|
||||
/* 802E1EE4 3C 60 80 3D */ lis r3, sMessageQueue__12JUTException@ha /* 0x803CC620@ha */
|
||||
/* 802E1EE8 3B C3 C6 20 */ addi r30, r3, sMessageQueue__12JUTException@l /* 0x803CC620@l */
|
||||
lbl_802E1EEC:
|
||||
/* 802E1EEC 7F C3 F3 78 */ mr r3, r30
|
||||
/* 802E1EF0 38 81 00 08 */ addi r4, r1, 8
|
||||
/* 802E1EF4 38 A0 00 01 */ li r5, 1
|
||||
/* 802E1EF8 48 05 CB C5 */ bl OSReceiveMessage
|
||||
/* 802E1EFC 38 60 00 00 */ li r3, 0
|
||||
/* 802E1F00 48 06 A2 E1 */ bl VISetPreRetraceCallback
|
||||
/* 802E1F04 38 60 00 00 */ li r3, 0
|
||||
/* 802E1F08 48 06 A3 1D */ bl VISetPostRetraceCallback
|
||||
/* 802E1F0C 80 61 00 08 */ lwz r3, 8(r1)
|
||||
/* 802E1F10 83 A3 00 00 */ lwz r29, 0(r3)
|
||||
/* 802E1F14 A3 83 00 04 */ lhz r28, 4(r3)
|
||||
/* 802E1F18 83 63 00 08 */ lwz r27, 8(r3)
|
||||
/* 802E1F1C 83 43 00 0C */ lwz r26, 0xc(r3)
|
||||
/* 802E1F20 83 23 00 10 */ lwz r25, 0x10(r3)
|
||||
/* 802E1F24 28 1C 00 11 */ cmplwi r28, 0x11
|
||||
/* 802E1F28 40 80 00 0C */ bge lbl_802E1F34
|
||||
/* 802E1F2C 80 1B 00 04 */ lwz r0, 4(r27)
|
||||
/* 802E1F30 90 1F 00 A0 */ stw r0, 0xa0(r31)
|
||||
lbl_802E1F34:
|
||||
/* 802E1F34 48 06 B9 05 */ bl VIGetCurrentFrameBuffer
|
||||
/* 802E1F38 90 7F 00 7C */ stw r3, 0x7c(r31)
|
||||
/* 802E1F3C 80 1F 00 7C */ lwz r0, 0x7c(r31)
|
||||
/* 802E1F40 28 00 00 00 */ cmplwi r0, 0
|
||||
/* 802E1F44 40 82 00 0C */ bne lbl_802E1F50
|
||||
/* 802E1F48 80 6D 8F 88 */ lwz r3, sErrorManager__12JUTException(r13)
|
||||
/* 802E1F4C 48 00 1A BD */ bl createFB__12JUTExceptionFv
|
||||
lbl_802E1F50:
|
||||
/* 802E1F50 80 6D 8F 88 */ lwz r3, sErrorManager__12JUTException(r13)
|
||||
/* 802E1F54 80 63 00 80 */ lwz r3, 0x80(r3)
|
||||
/* 802E1F58 80 9F 00 7C */ lwz r4, 0x7c(r31)
|
||||
/* 802E1F5C A0 A3 00 04 */ lhz r5, 4(r3)
|
||||
/* 802E1F60 A0 C3 00 06 */ lhz r6, 6(r3)
|
||||
/* 802E1F64 48 00 26 09 */ bl changeFrameBuffer__14JUTDirectPrintFPvUsUs
|
||||
/* 802E1F68 28 1D 00 00 */ cmplwi r29, 0
|
||||
/* 802E1F6C 41 82 00 20 */ beq lbl_802E1F8C
|
||||
/* 802E1F70 7F 83 E3 78 */ mr r3, r28
|
||||
/* 802E1F74 7F 64 DB 78 */ mr r4, r27
|
||||
/* 802E1F78 7F 45 D3 78 */ mr r5, r26
|
||||
/* 802E1F7C 7F 26 CB 78 */ mr r6, r25
|
||||
/* 802E1F80 7F AC EB 78 */ mr r12, r29
|
||||
/* 802E1F84 7D 89 03 A6 */ mtctr r12
|
||||
/* 802E1F88 4E 80 04 21 */ bctrl
|
||||
lbl_802E1F8C:
|
||||
/* 802E1F8C 48 05 B7 69 */ bl OSDisableInterrupts
|
||||
/* 802E1F90 48 06 B8 A9 */ bl VIGetCurrentFrameBuffer
|
||||
/* 802E1F94 90 7F 00 7C */ stw r3, 0x7c(r31)
|
||||
/* 802E1F98 80 6D 8F 88 */ lwz r3, sErrorManager__12JUTException(r13)
|
||||
/* 802E1F9C 80 63 00 80 */ lwz r3, 0x80(r3)
|
||||
/* 802E1FA0 80 9F 00 7C */ lwz r4, 0x7c(r31)
|
||||
/* 802E1FA4 A0 A3 00 04 */ lhz r5, 4(r3)
|
||||
/* 802E1FA8 A0 C3 00 06 */ lhz r6, 6(r3)
|
||||
/* 802E1FAC 48 00 25 C1 */ bl changeFrameBuffer__14JUTDirectPrintFPvUsUs
|
||||
/* 802E1FB0 80 6D 8F 88 */ lwz r3, sErrorManager__12JUTException(r13)
|
||||
/* 802E1FB4 7F 84 E3 78 */ mr r4, r28
|
||||
/* 802E1FB8 7F 65 DB 78 */ mr r5, r27
|
||||
/* 802E1FBC 7F 46 D3 78 */ mr r6, r26
|
||||
/* 802E1FC0 7F 27 CB 78 */ mr r7, r25
|
||||
/* 802E1FC4 48 00 14 FD */ bl printContext__12JUTExceptionFUsP9OSContextUlUl
|
||||
/* 802E1FC8 4B FF FF 24 */ b lbl_802E1EEC
|
||||
|
|
@ -67,6 +67,7 @@ public:
|
|||
bool isVisible() const { return mVisible; }
|
||||
void setVisible(bool visible) { mVisible = visible; }
|
||||
|
||||
u8 getLineAttr(int param_0) { return mBuf[(field_0x20 + 2) * param_0]; }
|
||||
void setLineAttr(int param_0, u8 param_1) { mBuf[(field_0x20 + 2) * param_0] = param_1; }
|
||||
u8* getLinePtr(int param_0) const { return &mBuf[(field_0x20 + 2) * param_0] + 1; }
|
||||
int diffIndex(int param_0, int param_1) const {
|
||||
|
|
@ -77,13 +78,12 @@ public:
|
|||
return diff += mMaxLines;
|
||||
}
|
||||
|
||||
int nextIndex(int param_0) const {
|
||||
int index = param_0 + 1;
|
||||
if (mMaxLines <= index) {
|
||||
index = 0;
|
||||
}
|
||||
int prevIndex(int index) const {
|
||||
return --index < 0 ? index = mMaxLines - 1 : index;
|
||||
}
|
||||
|
||||
return index;
|
||||
int nextIndex(int index) const {
|
||||
return ++index >= mMaxLines ? 0 : index;
|
||||
}
|
||||
|
||||
void scrollToLastLine() { scroll(mMaxLines); }
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ public:
|
|||
|
||||
bool isActive() const { return field_0x00 != 0; }
|
||||
JUtility::TColor getCharColor() const { return mCharColor; }
|
||||
void changeFrameBuffer(void *param_0) { changeFrameBuffer(param_0, mFrameBufferWidth, mFrameBufferHeight); }
|
||||
|
||||
static JUTDirectPrint* getManager() { return sDirectPrint; }
|
||||
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ private:
|
|||
static OSMessageQueue sMessageQueue;
|
||||
static const char* sCpuExpName[17];
|
||||
static JSUList<JUTException::JUTExMapFile> sMapFileList;
|
||||
static u8 sMessageBuffer[4 + 4 /* padding */];
|
||||
static OSMessage sMessageBuffer[1 + 1 /* padding */];
|
||||
static JUTException* sErrorManager;
|
||||
static OSErrorHandler sPreUserCallback;
|
||||
static OSErrorHandler sPostUserCallback;
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
#include "JSystem/JUtility/JUTConsole.h"
|
||||
#include "JSystem/J2DGraph/J2DOrthoGraph.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
#include "JSystem/JUtility/JUTDirectPrint.h"
|
||||
#include "JSystem/JUtility/JUTVideo.h"
|
||||
#include "MSL_C/stdio.h"
|
||||
|
|
@ -164,7 +165,7 @@ void JUTConsole::clear() {
|
|||
field_0x38 = 0;
|
||||
field_0x3c = 0;
|
||||
|
||||
for (int i = 0; i < mMaxLines; i++) {
|
||||
for (u32 i = 0; i < mMaxLines; i++) {
|
||||
setLineAttr(i, 0);
|
||||
}
|
||||
setLineAttr(0, -1);
|
||||
|
|
@ -261,6 +262,74 @@ void JUTConsole::print_f(char const* fmt, ...) {
|
|||
}
|
||||
|
||||
/* 802E7C38-802E7F30 2E2578 02F8+00 2/2 10/10 0/0 .text print__10JUTConsoleFPCc */
|
||||
// signed/unsigned
|
||||
#ifdef NONMATCHING
|
||||
void JUTConsole::print(char const* param_0) {
|
||||
if (mOutput & 2) {
|
||||
#if DEBUG
|
||||
OSReport("%s", param_0);
|
||||
#endif
|
||||
}
|
||||
if (mOutput & 1) {
|
||||
const u8* r29 = (const u8*)param_0;
|
||||
u8* r28 = getLinePtr(field_0x38) + field_0x3c;
|
||||
while (*r29 != 0) {
|
||||
if (field_0x6a && field_0x34 == nextIndex(field_0x38)) {
|
||||
break;
|
||||
}
|
||||
if (*r29 == '\n') {
|
||||
r29++;
|
||||
field_0x3c = field_0x20;
|
||||
} else if (*r29 == '\t') {
|
||||
r29++;
|
||||
while (field_0x3c < field_0x20) {
|
||||
*(r28++) = ' ';
|
||||
field_0x3c++;
|
||||
if (field_0x3c % field_0x64 == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (mFont && mFont->isLeadByte(*r29)) {
|
||||
if (field_0x3c + 1 < field_0x20) {
|
||||
*(r28++) = *(r29++);
|
||||
*(r28++) = *(r29++);
|
||||
field_0x3c++;
|
||||
field_0x3c++;
|
||||
} else {
|
||||
*(r28++) = 0;
|
||||
field_0x3c++;
|
||||
}
|
||||
} else {
|
||||
*(r28++) = *(r29++);
|
||||
field_0x3c++;
|
||||
}
|
||||
if (field_0x3c < field_0x20) {
|
||||
continue;
|
||||
}
|
||||
*r28 = 0;
|
||||
field_0x38 = nextIndex(field_0x38);
|
||||
field_0x3c = 0;
|
||||
setLineAttr(field_0x38, 0xff);
|
||||
r28 = getLinePtr(field_0x38);
|
||||
*r28 = 0;
|
||||
int local_28 = diffIndex(field_0x30, field_0x38);
|
||||
if (local_28 == mHeight) {
|
||||
field_0x30 = nextIndex(field_0x30);
|
||||
}
|
||||
if (field_0x38 == field_0x34) {
|
||||
field_0x34 = nextIndex(field_0x34);
|
||||
}
|
||||
if (field_0x38 == field_0x30) {
|
||||
field_0x30 = nextIndex(field_0x30);
|
||||
}
|
||||
if (field_0x6b) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
*r28 = 0;
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -269,6 +338,7 @@ asm void JUTConsole::print(char const* param_0) {
|
|||
#include "asm/JSystem/JUtility/JUTConsole/print__10JUTConsoleFPCc.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 802E7F30-802E7F7C 2E2870 004C+00 1/1 1/1 0/0 .text JUTConsole_print_f_va_ */
|
||||
extern "C" void JUTConsole_print_f_va_(JUTConsole* console, const char* fmt, va_list args) {
|
||||
|
|
@ -286,6 +356,50 @@ SECTION_DEAD static char const* const stringBase_8039D9B3 = "%s\n";
|
|||
#pragma pop
|
||||
|
||||
/* 802E7F7C-802E80A8 2E28BC 012C+00 0/0 2/2 0/0 .text dumpToTerminal__10JUTConsoleFUi */
|
||||
// signed/unsigned, instruction order
|
||||
#ifdef NONMATCHING
|
||||
void JUTConsole::dumpToTerminal(unsigned int param_0) {
|
||||
if (param_0 == 0) {
|
||||
return;
|
||||
}
|
||||
u32 r29 = field_0x34;
|
||||
if (param_0 != -1) {
|
||||
r29 = field_0x38;
|
||||
for (int i = 0; i != param_0; i++) {
|
||||
int r25 = prevIndex(r29);
|
||||
if (getLineAttr(r25) == 0) {
|
||||
break;
|
||||
}
|
||||
r29 = r25;
|
||||
if (r25 == field_0x34) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int r27 = 0;
|
||||
#if DEBUG
|
||||
OSReport("\n:::dump of console[%x]--------------------------------\n",this);
|
||||
#endif
|
||||
do {
|
||||
u8* r28 = getLinePtr(r29);
|
||||
u8 r24 = r28[-1];
|
||||
if (r24 == 0) {
|
||||
break;
|
||||
}
|
||||
if (field_0x69) {
|
||||
OSReport("[%03d] %s\n", r27, r28);
|
||||
} else {
|
||||
OSReport("%s\n", r28);
|
||||
}
|
||||
r29 = nextIndex(r29);
|
||||
r27++;
|
||||
} while (r27 != field_0x34);
|
||||
#if DEBUG
|
||||
OSReport(":::dump of console[%x] END----------------------------\n",this);
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -294,6 +408,7 @@ asm void JUTConsole::dumpToTerminal(unsigned int param_0) {
|
|||
#include "asm/JSystem/JUtility/JUTConsole/dumpToTerminal__10JUTConsoleFUi.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 802E80A8-802E8184 2E29E8 00DC+00 0/0 3/3 0/0 .text scroll__10JUTConsoleFi */
|
||||
void JUTConsole::scroll(int scrollAmnt) {
|
||||
|
|
@ -357,10 +472,11 @@ JUTConsoleManager* JUTConsoleManager::createManager(JKRHeap* pHeap) {
|
|||
/* 802E8240-802E82B0 2E2B80 0070+00 3/3 0/0 0/0 .text
|
||||
* appendConsole__17JUTConsoleManagerFP10JUTConsole */
|
||||
#ifdef NONMATCHING
|
||||
void JUTConsoleManager::appendConsole(JUTConsole* param_0) {
|
||||
mLinkList.Push_back(param_0);
|
||||
void JUTConsoleManager::appendConsole(JUTConsole* console) {
|
||||
JUT_ASSERT(961, sManager != 0 && console != 0);
|
||||
mLinkList.Push_back(console);
|
||||
if (mActiveConsole == NULL) {
|
||||
mActiveConsole = param_0;
|
||||
mActiveConsole = console;
|
||||
}
|
||||
}
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -10,7 +10,9 @@
|
|||
#include "MSL_C/stdio.h"
|
||||
#include "MSL_C/stdlib.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/base/PPCArch.h"
|
||||
#include "dolphin/os/OS.h"
|
||||
#include "dolphin/vi/vi.h"
|
||||
#include "global.h"
|
||||
|
||||
//
|
||||
|
|
@ -38,11 +40,6 @@ extern "C" u8 sConsole__12JUTException[4];
|
|||
//
|
||||
|
||||
extern "C" void changeFrameBuffer__14JUTDirectPrintFPvUsUs();
|
||||
extern "C" void* VIGetCurrentFrameBuffer();
|
||||
extern "C" void VISetPreRetraceCallback(void*);
|
||||
extern "C" void VISetPostRetraceCallback(void*);
|
||||
extern "C" void PPCMtmsr();
|
||||
extern "C" u32 PPCMfmsr();
|
||||
extern "C" void _savegpr_25();
|
||||
extern "C" void _restgpr_25();
|
||||
extern "C" void _savegpr_28();
|
||||
|
|
@ -51,12 +48,7 @@ extern "C" void OSYieldThread();
|
|||
extern "C" void OSFillFPUContext(OSContext*);
|
||||
extern "C" void print_f__10JUTConsoleFPCce();
|
||||
extern "C" OSContext* OSGetCurrentContext();
|
||||
extern "C" void VIFlush();
|
||||
extern "C" void VISetBlack(BOOL);
|
||||
extern "C" u32 VIGetRetraceCount();
|
||||
extern "C" extern _GXRenderModeObj GXNtsc480Int;
|
||||
extern "C" void VIConfigure(_GXRenderModeObj*);
|
||||
extern "C" void VISetNextFrameBuffer(void*);
|
||||
extern "C" void _restgpr_16();
|
||||
extern "C" void fopen__13JUTDirectFileFPCc();
|
||||
extern "C" void fclose__13JUTDirectFileFv();
|
||||
|
|
@ -143,33 +135,11 @@ JUTException* JUTException::create(JUTDirectPrint* directPrint) {
|
|||
|
||||
/* ############################################################################################## */
|
||||
/* 804508F0-804508F8 000370 0004+04 1/1 0/0 0/0 .sdata sMessageBuffer__12JUTException */
|
||||
SECTION_SDATA u8 JUTException::sMessageBuffer[4 + 4 /* padding */] = {
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
/* padding */
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
};
|
||||
SECTION_SDATA OSMessage JUTException::sMessageBuffer[1 + 1 /* padding */] = {0};
|
||||
|
||||
/* 802E1EA8-802E1FCC 2DC7E8 0124+00 1/0 0/0 0/0 .text run__12JUTExceptionFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void* JUTException::run() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JUtility/JUTException/run__12JUTExceptionFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80434578-8043458C 061298 0014+00 2/2 0/0 0/0 .bss exCallbackObject */
|
||||
struct CallbackObject {
|
||||
/* 0x00 */ OSErrorHandler callback;
|
||||
/* 0x04 */ s16 error;
|
||||
/* 0x04 */ u16 error;
|
||||
/* 0x06 */ u16 pad_0x06;
|
||||
/* 0x08 */ OSContext* context;
|
||||
/* 0x0C */ int param_3;
|
||||
|
|
@ -177,6 +147,42 @@ struct CallbackObject {
|
|||
/* 0x14 */
|
||||
};
|
||||
|
||||
/* 802E1EA8-802E1FCC 2DC7E8 0124+00 1/0 0/0 0/0 .text run__12JUTExceptionFv */
|
||||
void* JUTException::run() {
|
||||
PPCMtmsr(PPCMfmsr() & ~0x0900);
|
||||
OSInitMessageQueue(&sMessageQueue, sMessageBuffer, 1);
|
||||
OSMessage message;
|
||||
while (true) {
|
||||
OSReceiveMessage(&sMessageQueue, &message, OS_MESSAGE_BLOCK);
|
||||
VISetPreRetraceCallback(NULL);
|
||||
VISetPostRetraceCallback(NULL);
|
||||
CallbackObject* cb = (CallbackObject*)message;
|
||||
OSErrorHandler callback = cb->callback;
|
||||
u16 error = cb->error;
|
||||
OSContext* context = cb->context;
|
||||
int r24 = cb->param_3;
|
||||
int r23 = cb->param_4;
|
||||
if (error < 17) {
|
||||
mStackPointer = context->gpr[1];
|
||||
}
|
||||
mFrameMemory = (JUTExternalFB*)VIGetCurrentFrameBuffer();
|
||||
if (!mFrameMemory) {
|
||||
sErrorManager->createFB();
|
||||
}
|
||||
sErrorManager->mDirectPrint->changeFrameBuffer(mFrameMemory);
|
||||
if (callback) {
|
||||
callback(error, context, r24, r23);
|
||||
}
|
||||
OSDisableInterrupts();
|
||||
mFrameMemory = (JUTExternalFB*)VIGetCurrentFrameBuffer();
|
||||
sErrorManager->mDirectPrint->changeFrameBuffer(mFrameMemory);
|
||||
sErrorManager->printContext(error, context, r24, r23);
|
||||
}
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80434578-8043458C 061298 0014+00 2/2 0/0 0/0 .bss exCallbackObject */
|
||||
|
||||
STATIC_ASSERT(sizeof(CallbackObject) == 0x14);
|
||||
static CallbackObject exCallbackObject;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue