m_Do_Reset: OK (#35)

* m_Do_Reset: split and (some) decomp

decompiles:
- my_OSCancelAlarmAll()
- destroyVideo()

* mDoRst::reset(): decompile, plus some supporting code

* split DVD* functions to dvd.h

* mDoRst::resetCallBack(): decompile
This commit is contained in:
Erin Moon
2020-12-25 19:59:52 -06:00
committed by GitHub
parent 22bda03652
commit 58fc83c4f8
37 changed files with 383 additions and 287 deletions
+7 -7
View File
@@ -61,16 +61,16 @@ lbl_80007A0C:
/* 80007A14 00004954 90 03 00 08 */ stw r0, 8(r3)
/* 80007A18 00004958 90 03 00 0C */ stw r0, 0xc(r3)
lbl_80007A1C:
/* 80007A1C 0000495C 80 6D 86 F8 */ lwz r3, lbl_80450C78-_SDA_BASE_(r13)
/* 80007A1C 0000495C 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13)
/* 80007A20 00004960 80 03 00 00 */ lwz r0, 0(r3)
/* 80007A24 00004964 2C 00 00 00 */ cmpwi r0, 0
/* 80007A28 00004968 40 82 00 1C */ bne lbl_80007A44
/* 80007A2C 0000496C 38 80 00 00 */ li r4, 0
/* 80007A30 00004970 98 8D 8F 81 */ stb r4, lbl_80451501-_SDA_BASE_(r13)
.global mDoRst_resetCallBack
/* 80007A34 00004974 3C 60 80 01 */ lis r3, mDoRst_resetCallBack@ha
.global mDoRst_resetCallBack
/* 80007A38 00004978 38 03 57 4C */ addi r0, r3, mDoRst_resetCallBack@l
.global resetCallBack__6mDoRstFiPv
/* 80007A34 00004974 3C 60 80 01 */ lis r3, resetCallBack__6mDoRstFiPv@ha
.global resetCallBack__6mDoRstFiPv
/* 80007A38 00004978 38 03 57 4C */ addi r0, r3, resetCallBack__6mDoRstFiPv@l
/* 80007A3C 0000497C 90 0D 8F 6C */ stw r0, lbl_804514EC-_SDA_BASE_(r13)
/* 80007A40 00004980 90 8D 8F 70 */ stw r4, lbl_804514F0-_SDA_BASE_(r13)
lbl_80007A44:
@@ -104,7 +104,7 @@ mDoCPd_c_NS_read:
/* 80007AA0 000049E0 39 61 00 20 */ addi r11, r1, 0x20
/* 80007AA4 000049E4 48 35 A7 39 */ bl _savegpr_29
/* 80007AA8 000049E8 48 2D 8E 3D */ bl JUTGamePad_NS_read
/* 80007AAC 000049EC 80 6D 86 F8 */ lwz r3, lbl_80450C78-_SDA_BASE_(r13)
/* 80007AAC 000049EC 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13)
/* 80007AB0 000049F0 80 03 00 00 */ lwz r0, 0(r3)
/* 80007AB4 000049F4 2C 00 00 00 */ cmpwi r0, 0
/* 80007AB8 000049F8 40 82 00 4C */ bne lbl_80007B04
@@ -125,7 +125,7 @@ lbl_80007AF0:
/* 80007AF0 00004A30 54 80 06 3F */ clrlwi. r0, r4, 0x18
/* 80007AF4 00004A34 40 82 00 10 */ bne lbl_80007B04
/* 80007AF8 00004A38 38 00 00 00 */ li r0, 0
/* 80007AFC 00004A3C 80 6D 86 F8 */ lwz r3, lbl_80450C78-_SDA_BASE_(r13)
/* 80007AFC 00004A3C 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13)
/* 80007B00 00004A40 90 03 00 08 */ stw r0, 8(r3)
lbl_80007B04:
/* 80007B04 00004A44 3C 60 80 3E */ lis r3, lbl_803DD2D8@ha
+1 -1
View File
@@ -121,7 +121,7 @@ mDoMemCd_Ctrl_c_NS_update:
/* 8001689C 000137DC 90 01 00 14 */ stw r0, 0x14(r1)
/* 800168A0 000137E0 93 E1 00 0C */ stw r31, 0xc(r1)
/* 800168A4 000137E4 7C 7F 1B 78 */ mr r31, r3
/* 800168A8 000137E8 80 8D 86 F8 */ lwz r4, lbl_80450C78-_SDA_BASE_(r13)
/* 800168A8 000137E8 80 8D 86 F8 */ lwz r4, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13)
/* 800168AC 000137EC 80 04 00 00 */ lwz r0, 0(r4)
/* 800168B0 000137F0 2C 00 00 00 */ cmpwi r0, 0
/* 800168B4 000137F4 41 82 00 30 */ beq lbl_800168E4
-171
View File
@@ -1,171 +0,0 @@
.include "macros.inc"
.section .text, "ax" # 800155d8
.global my_OSCancelAlarmAll
my_OSCancelAlarmAll:
/* 800155D8 00012518 4E 80 00 20 */ blr
.global destroyVideo
destroyVideo:
/* 800155DC 0001251C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800155E0 00012520 7C 08 02 A6 */ mflr r0
/* 800155E4 00012524 90 01 00 14 */ stw r0, 0x14(r1)
/* 800155E8 00012528 48 2C F6 C5 */ bl JUTVideo_NS_destroyManager
/* 800155EC 0001252C 38 60 00 00 */ li r3, 0
/* 800155F0 00012530 48 34 6F BD */ bl GXSetDrawDoneCallback
/* 800155F4 00012534 38 60 00 01 */ li r3, 1
/* 800155F8 00012538 48 33 82 49 */ bl VISetBlack
/* 800155FC 0001253C 48 33 80 99 */ bl VIFlush
/* 80015600 00012540 48 33 73 C5 */ bl VIWaitForRetrace
/* 80015604 00012544 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80015608 00012548 7C 08 03 A6 */ mtlr r0
/* 8001560C 0001254C 38 21 00 10 */ addi r1, r1, 0x10
/* 80015610 00012550 4E 80 00 20 */ blr
.global mDoRst_reset
mDoRst_reset:
/* 80015614 00012554 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80015618 00012558 7C 08 02 A6 */ mflr r0
/* 8001561C 0001255C 90 01 00 24 */ stw r0, 0x24(r1)
/* 80015620 00012560 39 61 00 20 */ addi r11, r1, 0x20
/* 80015624 00012564 48 34 CB B1 */ bl _savegpr_27
/* 80015628 00012568 7C 7B 1B 78 */ mr r27, r3
/* 8001562C 0001256C 7C 9C 23 78 */ mr r28, r4
/* 80015630 00012570 7C BD 2B 78 */ mr r29, r5
/* 80015634 00012574 80 6D 8F D0 */ lwz r3, lbl_80451550-_SDA_BASE_(r13)
/* 80015638 00012578 48 2C FB DD */ bl JUTXfb_NS_clearIndex
/* 8001563C 0001257C 48 00 10 21 */ bl mDoDvdErr_ThdCleanup
/* 80015640 00012580 48 24 DC 4D */ bl cAPICPad_recalibrate
/* 80015644 00012584 88 0D 86 38 */ lbz r0, lbl_80450BB8-_SDA_BASE_(r13)
/* 80015648 00012588 28 00 00 00 */ cmplwi r0, 0
/* 8001564C 0001258C 41 82 00 14 */ beq lbl_80015660
lbl_80015650:
/* 80015650 00012590 80 6D 8D E8 */ lwz r3, lbl_80451368-_SDA_BASE_(r13)
/* 80015654 00012594 48 2B 84 19 */ bl Z2AudioMgr_NS_hasReset
/* 80015658 00012598 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 8001565C 0001259C 41 82 FF F4 */ beq lbl_80015650
lbl_80015660:
/* 80015660 000125A0 48 33 5B 69 */ bl DVDGetDriveStatus
/* 80015664 000125A4 2C 03 00 01 */ cmpwi r3, 1
/* 80015668 000125A8 40 82 00 14 */ bne lbl_8001567C
/* 8001566C 000125AC 3C 60 80 37 */ lis r3, lbl_80374198@ha
/* 80015670 000125B0 38 63 41 98 */ addi r3, r3, lbl_80374198@l
/* 80015674 000125B4 4C C6 31 82 */ crclr 6
/* 80015678 000125B8 4B FF 11 9D */ bl OSAttention
lbl_8001567C:
/* 8001567C 000125BC 48 27 A8 81 */ bl JASDvd_NS_getThreadPointer
/* 80015680 000125C0 7C 7F 1B 79 */ or. r31, r3, r3
/* 80015684 000125C4 41 82 00 30 */ beq lbl_800156B4
/* 80015688 000125C8 38 80 00 01 */ li r4, 1
/* 8001568C 000125CC 48 27 A7 FD */ bl JASTaskThread_NS_pause
/* 80015690 000125D0 83 FF 00 2C */ lwz r31, 0x2c(r31)
/* 80015694 000125D4 28 1F 00 00 */ cmplwi r31, 0
/* 80015698 000125D8 41 82 00 1C */ beq lbl_800156B4
/* 8001569C 000125DC 7F E3 FB 78 */ mr r3, r31
/* 800156A0 000125E0 48 32 C3 9D */ bl OSSuspendThread
/* 800156A4 000125E4 7F E3 FB 78 */ mr r3, r31
/* 800156A8 000125E8 48 32 C0 6D */ bl OSDetachThread
/* 800156AC 000125EC 7F E3 FB 78 */ mr r3, r31
/* 800156B0 000125F0 48 32 BE A9 */ bl OSCancelThread
lbl_800156B4:
/* 800156B4 000125F4 48 33 73 11 */ bl VIWaitForRetrace
/* 800156B8 000125F8 48 33 73 0D */ bl VIWaitForRetrace
/* 800156BC 000125FC 48 34 57 E5 */ bl GXGetCurrentGXThread
/* 800156C0 00012600 7C 7F 1B 78 */ mr r31, r3
/* 800156C4 00012604 48 32 80 31 */ bl __RAS_OSDisableInterrupts_begin
/* 800156C8 00012608 7C 7E 1B 78 */ mr r30, r3
/* 800156CC 0001260C 48 32 B5 B9 */ bl OSGetCurrentThread
/* 800156D0 00012610 7C 1F 18 40 */ cmplw r31, r3
/* 800156D4 00012614 41 82 00 10 */ beq lbl_800156E4
/* 800156D8 00012618 7F E3 FB 78 */ mr r3, r31
/* 800156DC 0001261C 48 32 BE 7D */ bl OSCancelThread
/* 800156E0 00012620 48 34 57 75 */ bl GXSetCurrentGXThread
lbl_800156E4:
/* 800156E4 00012624 48 34 67 E9 */ bl GXFlush
/* 800156E8 00012628 48 34 69 AD */ bl GXAbortFrame
/* 800156EC 0001262C 48 34 6C 09 */ bl GXDrawDone
/* 800156F0 00012630 7F C3 F3 78 */ mr r3, r30
/* 800156F4 00012634 48 32 80 29 */ bl OSRestoreInterrupts
/* 800156F8 00012638 4B FF FE E5 */ bl destroyVideo
/* 800156FC 0001263C 3C 60 80 3F */ lis r3, lbl_803EAF40@ha
/* 80015700 00012640 3B E3 AF 40 */ addi r31, r3, lbl_803EAF40@l
/* 80015704 00012644 48 00 00 08 */ b lbl_8001570C
lbl_80015708:
/* 80015708 00012648 48 33 72 BD */ bl VIWaitForRetrace
lbl_8001570C:
/* 8001570C 0001264C 80 1F 1F C0 */ lwz r0, 0x1fc0(r31)
/* 80015710 00012650 2C 00 00 00 */ cmpwi r0, 0
/* 80015714 00012654 40 82 FF F4 */ bne lbl_80015708
/* 80015718 00012658 4B FF FE C1 */ bl my_OSCancelAlarmAll
/* 8001571C 0001265C 48 32 60 D1 */ bl LCDisable
/* 80015720 00012660 80 6D 86 F8 */ lwz r3, lbl_80450C78-_SDA_BASE_(r13)
.global mDoRst_NS_getResetData
/* 80015724 00012664 3C 80 80 01 */ lis r4, mDoRst_NS_getResetData@ha
.global mDoRst_NS_getResetData
/* 80015728 00012668 38 84 57 F4 */ addi r4, r4, mDoRst_NS_getResetData@l
/* 8001572C 0001266C 38 84 00 18 */ addi r4, r4, 0x18
/* 80015730 00012670 48 32 9F 11 */ bl OSSetSaveRegion
/* 80015734 00012674 7F 63 DB 78 */ mr r3, r27
/* 80015738 00012678 7F 84 E3 78 */ mr r4, r28
/* 8001573C 0001267C 7F A5 EB 78 */ mr r5, r29
/* 80015740 00012680 48 32 A1 6D */ bl OSResetSystem
lbl_80015744:
/* 80015744 00012684 48 33 72 81 */ bl VIWaitForRetrace
/* 80015748 00012688 4B FF FF FC */ b lbl_80015744
.global mDoRst_resetCallBack
mDoRst_resetCallBack:
/* 8001574C 0001268C 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80015750 00012690 7C 08 02 A6 */ mflr r0
/* 80015754 00012694 90 01 00 14 */ stw r0, 0x14(r1)
/* 80015758 00012698 80 8D 86 F8 */ lwz r4, lbl_80450C78-_SDA_BASE_(r13)
/* 8001575C 0001269C 80 04 00 00 */ lwz r0, 0(r4)
/* 80015760 000126A0 2C 00 00 00 */ cmpwi r0, 0
/* 80015764 000126A4 40 82 00 80 */ bne lbl_800157E4
/* 80015768 000126A8 2C 03 FF FF */ cmpwi r3, -1
/* 8001576C 000126AC 40 82 00 0C */ bne lbl_80015778
/* 80015770 000126B0 48 24 DB 1D */ bl cAPICPad_recalibrate
/* 80015774 000126B4 48 00 00 40 */ b lbl_800157B4
lbl_80015778:
/* 80015778 000126B8 80 04 00 08 */ lwz r0, 8(r4)
/* 8001577C 000126BC 2C 00 00 00 */ cmpwi r0, 0
/* 80015780 000126C0 41 82 00 20 */ beq lbl_800157A0
/* 80015784 000126C4 38 80 00 00 */ li r4, 0
/* 80015788 000126C8 98 8D 8F 81 */ stb r4, lbl_80451501-_SDA_BASE_(r13)
.global mDoRst_resetCallBack
/* 8001578C 000126CC 3C 60 80 01 */ lis r3, mDoRst_resetCallBack@ha
.global mDoRst_resetCallBack
/* 80015790 000126D0 38 03 57 4C */ addi r0, r3, mDoRst_resetCallBack@l
/* 80015794 000126D4 90 0D 8F 6C */ stw r0, lbl_804514EC-_SDA_BASE_(r13)
/* 80015798 000126D8 90 8D 8F 70 */ stw r4, lbl_804514F0-_SDA_BASE_(r13)
/* 8001579C 000126DC 48 00 00 48 */ b lbl_800157E4
lbl_800157A0:
/* 800157A0 000126E0 38 00 00 01 */ li r0, 1
/* 800157A4 000126E4 90 04 00 08 */ stw r0, 8(r4)
/* 800157A8 000126E8 80 8D 86 F8 */ lwz r4, lbl_80450C78-_SDA_BASE_(r13)
/* 800157AC 000126EC 90 64 00 0C */ stw r3, 0xc(r4)
/* 800157B0 000126F0 48 24 DA DD */ bl cAPICPad_recalibrate
lbl_800157B4:
/* 800157B4 000126F4 48 33 5E 75 */ bl DVDCheckDisk
/* 800157B8 000126F8 2C 03 00 00 */ cmpwi r3, 0
/* 800157BC 000126FC 40 82 00 1C */ bne lbl_800157D8
/* 800157C0 00012700 48 33 5A 09 */ bl DVDGetDriveStatus
/* 800157C4 00012704 2C 03 FF FF */ cmpwi r3, -1
/* 800157C8 00012708 41 82 00 10 */ beq lbl_800157D8
/* 800157CC 0001270C 38 00 00 01 */ li r0, 1
/* 800157D0 00012710 80 6D 86 F8 */ lwz r3, lbl_80450C78-_SDA_BASE_(r13)
/* 800157D4 00012714 98 03 00 11 */ stb r0, 0x11(r3)
lbl_800157D8:
/* 800157D8 00012718 38 00 00 01 */ li r0, 1
/* 800157DC 0001271C 80 6D 86 F8 */ lwz r3, lbl_80450C78-_SDA_BASE_(r13)
/* 800157E0 00012720 90 03 00 00 */ stw r0, 0(r3)
lbl_800157E4:
/* 800157E4 00012724 80 01 00 14 */ lwz r0, 0x14(r1)
/* 800157E8 00012728 7C 08 03 A6 */ mtlr r0
/* 800157EC 0001272C 38 21 00 10 */ addi r1, r1, 0x10
/* 800157F0 00012730 4E 80 00 20 */ blr
.global mDoRst_NS_getResetData
mDoRst_NS_getResetData:
/* 800157F4 00012734 80 6D 86 F8 */ lwz r3, lbl_80450C78-_SDA_BASE_(r13)
/* 800157F8 00012738 4E 80 00 20 */ blr
+1 -1
View File
@@ -132,7 +132,7 @@ mDoAud_Execute:
/* 80007170 000040B0 88 0D 86 38 */ lbz r0, lbl_80450BB8-_SDA_BASE_(r13)
/* 80007174 000040B4 28 00 00 00 */ cmplwi r0, 0
/* 80007178 000040B8 40 82 00 28 */ bne lbl_800071A0
/* 8000717C 000040BC 80 6D 86 F8 */ lwz r3, lbl_80450C78-_SDA_BASE_(r13)
/* 8000717C 000040BC 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13)
/* 80007180 000040C0 88 03 00 10 */ lbz r0, 0x10(r3)
/* 80007184 000040C4 2C 00 00 00 */ cmpwi r0, 0
/* 80007188 000040C8 40 82 00 24 */ bne lbl_800071AC
+2 -2
View File
@@ -431,7 +431,7 @@ exceptionRestart:
/* 8000B7A4 000086E4 38 60 00 00 */ li r3, 0
/* 8000B7A8 000086E8 38 80 00 00 */ li r4, 0
/* 8000B7AC 000086EC 38 A0 00 00 */ li r5, 0
/* 8000B7B0 000086F0 48 00 9E 65 */ bl mDoRst_reset
/* 8000B7B0 000086F0 48 00 9E 65 */ bl reset__6mDoRstFlUll
/* 8000B7B4 000086F4 38 60 00 00 */ li r3, 0
/* 8000B7B8 000086F8 38 80 00 00 */ li r4, 0
/* 8000B7BC 000086FC 38 A0 00 00 */ li r5, 0
@@ -908,7 +908,7 @@ lbl_8000BDF4:
/* 8000BE48 00008D88 48 33 48 DD */ bl OSSetProgressiveMode
/* 8000BE4C 00008D8C 48 00 00 38 */ b lbl_8000BE84
lbl_8000BE50:
/* 8000BE50 00008D90 80 6D 86 F8 */ lwz r3, lbl_80450C78-_SDA_BASE_(r13)
/* 8000BE50 00008D90 80 6D 86 F8 */ lwz r3, m_Do_Reset_NS_mDoRst_NS_mResetData-_SDA_BASE_(r13)
/* 8000BE54 00008D94 88 03 00 13 */ lbz r0, 0x13(r3)
/* 8000BE58 00008D98 28 00 00 00 */ cmplwi r0, 0
/* 8000BE5C 00008D9C 41 82 00 28 */ beq lbl_8000BE84