mirror of https://github.com/zeldaret/tp.git
Merge remote-tracking branch 'upstream/master' into docs
This commit is contained in:
commit
158a128fb3
|
|
@ -1,41 +0,0 @@
|
|||
lbl_80016F2C:
|
||||
/* 80016F2C 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 80016F30 7C 08 02 A6 */ mflr r0
|
||||
/* 80016F34 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 80016F38 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 80016F3C 93 C1 00 08 */ stw r30, 8(r1)
|
||||
/* 80016F40 7C 7E 1B 78 */ mr r30, r3
|
||||
/* 80016F44 3B E0 00 00 */ li r31, 0
|
||||
/* 80016F48 80 03 1F C8 */ lwz r0, 0x1fc8(r3)
|
||||
/* 80016F4C 2C 00 00 00 */ cmpwi r0, 0
|
||||
/* 80016F50 40 82 00 0C */ bne lbl_80016F5C
|
||||
/* 80016F54 38 60 00 00 */ li r3, 0
|
||||
/* 80016F58 48 00 00 48 */ b lbl_80016FA0
|
||||
lbl_80016F5C:
|
||||
/* 80016F5C 38 7E 1F CC */ addi r3, r30, 0x1fcc
|
||||
/* 80016F60 48 32 82 F5 */ bl OSTryLockMutex
|
||||
/* 80016F64 2C 03 00 00 */ cmpwi r3, 0
|
||||
/* 80016F68 41 82 00 34 */ beq lbl_80016F9C
|
||||
/* 80016F6C 80 1E 1F C4 */ lwz r0, 0x1fc4(r30)
|
||||
/* 80016F70 2C 00 00 0D */ cmpwi r0, 0xd
|
||||
/* 80016F74 41 82 00 20 */ beq lbl_80016F94
|
||||
/* 80016F78 2C 00 00 05 */ cmpwi r0, 5
|
||||
/* 80016F7C 40 82 00 14 */ bne lbl_80016F90
|
||||
/* 80016F80 38 00 00 02 */ li r0, 2
|
||||
/* 80016F84 90 1E 1F C4 */ stw r0, 0x1fc4(r30)
|
||||
/* 80016F88 3B E0 00 01 */ li r31, 1
|
||||
/* 80016F8C 48 00 00 08 */ b lbl_80016F94
|
||||
lbl_80016F90:
|
||||
/* 80016F90 3B E0 00 02 */ li r31, 2
|
||||
lbl_80016F94:
|
||||
/* 80016F94 38 7E 1F CC */ addi r3, r30, 0x1fcc
|
||||
/* 80016F98 48 32 81 85 */ bl OSUnlockMutex
|
||||
lbl_80016F9C:
|
||||
/* 80016F9C 7F E3 FB 78 */ mr r3, r31
|
||||
lbl_80016FA0:
|
||||
/* 80016FA0 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 80016FA4 83 C1 00 08 */ lwz r30, 8(r1)
|
||||
/* 80016FA8 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 80016FAC 7C 08 03 A6 */ mtlr r0
|
||||
/* 80016FB0 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 80016FB4 4E 80 00 20 */ blr
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
lbl_80016AB0:
|
||||
/* 80016AB0 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
/* 80016AB4 7C 08 02 A6 */ mflr r0
|
||||
/* 80016AB8 90 01 00 24 */ stw r0, 0x24(r1)
|
||||
/* 80016ABC 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 80016AC0 48 34 B7 15 */ bl _savegpr_27
|
||||
/* 80016AC4 7C 7B 1B 78 */ mr r27, r3
|
||||
/* 80016AC8 7C 9C 23 78 */ mr r28, r4
|
||||
/* 80016ACC 7C BD 2B 78 */ mr r29, r5
|
||||
/* 80016AD0 7C DE 33 78 */ mr r30, r6
|
||||
/* 80016AD4 3B E0 00 00 */ li r31, 0
|
||||
/* 80016AD8 80 03 1F C8 */ lwz r0, 0x1fc8(r3)
|
||||
/* 80016ADC 2C 00 00 00 */ cmpwi r0, 0
|
||||
/* 80016AE0 40 82 00 0C */ bne lbl_80016AEC
|
||||
/* 80016AE4 38 60 00 00 */ li r3, 0
|
||||
/* 80016AE8 48 00 00 58 */ b lbl_80016B40
|
||||
lbl_80016AEC:
|
||||
/* 80016AEC 38 7B 1F CC */ addi r3, r27, 0x1fcc
|
||||
/* 80016AF0 48 32 87 65 */ bl OSTryLockMutex
|
||||
/* 80016AF4 2C 03 00 00 */ cmpwi r3, 0
|
||||
/* 80016AF8 41 82 00 44 */ beq lbl_80016B3C
|
||||
/* 80016AFC 80 1B 1F C4 */ lwz r0, 0x1fc4(r27)
|
||||
/* 80016B00 2C 00 00 03 */ cmpwi r0, 3
|
||||
/* 80016B04 40 82 00 24 */ bne lbl_80016B28
|
||||
/* 80016B08 7F 83 E3 78 */ mr r3, r28
|
||||
/* 80016B0C 7C 9B F2 14 */ add r4, r27, r30
|
||||
/* 80016B10 7F A5 EB 78 */ mr r5, r29
|
||||
/* 80016B14 4B FE CA 2D */ bl memcpy
|
||||
/* 80016B18 38 00 00 01 */ li r0, 1
|
||||
/* 80016B1C 90 1B 1F C4 */ stw r0, 0x1fc4(r27)
|
||||
/* 80016B20 3B E0 00 01 */ li r31, 1
|
||||
/* 80016B24 48 00 00 10 */ b lbl_80016B34
|
||||
lbl_80016B28:
|
||||
/* 80016B28 38 00 00 02 */ li r0, 2
|
||||
/* 80016B2C 90 1B 1F C4 */ stw r0, 0x1fc4(r27)
|
||||
/* 80016B30 3B E0 00 02 */ li r31, 2
|
||||
lbl_80016B34:
|
||||
/* 80016B34 38 7B 1F CC */ addi r3, r27, 0x1fcc
|
||||
/* 80016B38 48 32 85 E5 */ bl OSUnlockMutex
|
||||
lbl_80016B3C:
|
||||
/* 80016B3C 7F E3 FB 78 */ mr r3, r31
|
||||
lbl_80016B40:
|
||||
/* 80016B40 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 80016B44 48 34 B6 DD */ bl _restgpr_27
|
||||
/* 80016B48 80 01 00 24 */ lwz r0, 0x24(r1)
|
||||
/* 80016B4C 7C 08 03 A6 */ mtlr r0
|
||||
/* 80016B50 38 21 00 20 */ addi r1, r1, 0x20
|
||||
/* 80016B54 4E 80 00 20 */ blr
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
lbl_80016CE0:
|
||||
/* 80016CE0 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 80016CE4 7C 08 02 A6 */ mflr r0
|
||||
/* 80016CE8 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 80016CEC 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 80016CF0 93 C1 00 08 */ stw r30, 8(r1)
|
||||
/* 80016CF4 7C 7E 1B 78 */ mr r30, r3
|
||||
/* 80016CF8 3B E0 00 00 */ li r31, 0
|
||||
/* 80016CFC 80 03 1F C8 */ lwz r0, 0x1fc8(r3)
|
||||
/* 80016D00 2C 00 00 00 */ cmpwi r0, 0
|
||||
/* 80016D04 40 82 00 0C */ bne lbl_80016D10
|
||||
/* 80016D08 38 60 00 00 */ li r3, 0
|
||||
/* 80016D0C 48 00 00 50 */ b lbl_80016D5C
|
||||
lbl_80016D10:
|
||||
/* 80016D10 38 7E 1F CC */ addi r3, r30, 0x1fcc
|
||||
/* 80016D14 48 32 85 41 */ bl OSTryLockMutex
|
||||
/* 80016D18 2C 03 00 00 */ cmpwi r3, 0
|
||||
/* 80016D1C 41 82 00 3C */ beq lbl_80016D58
|
||||
/* 80016D20 80 1E 1F C4 */ lwz r0, 0x1fc4(r30)
|
||||
/* 80016D24 2C 00 00 04 */ cmpwi r0, 4
|
||||
/* 80016D28 40 82 00 14 */ bne lbl_80016D3C
|
||||
/* 80016D2C 38 00 00 01 */ li r0, 1
|
||||
/* 80016D30 90 1E 1F C4 */ stw r0, 0x1fc4(r30)
|
||||
/* 80016D34 3B E0 00 01 */ li r31, 1
|
||||
/* 80016D38 48 00 00 18 */ b lbl_80016D50
|
||||
lbl_80016D3C:
|
||||
/* 80016D3C 2C 00 00 01 */ cmpwi r0, 1
|
||||
/* 80016D40 40 82 00 0C */ bne lbl_80016D4C
|
||||
/* 80016D44 3B E0 00 00 */ li r31, 0
|
||||
/* 80016D48 48 00 00 08 */ b lbl_80016D50
|
||||
lbl_80016D4C:
|
||||
/* 80016D4C 3B E0 00 02 */ li r31, 2
|
||||
lbl_80016D50:
|
||||
/* 80016D50 38 7E 1F CC */ addi r3, r30, 0x1fcc
|
||||
/* 80016D54 48 32 83 C9 */ bl OSUnlockMutex
|
||||
lbl_80016D58:
|
||||
/* 80016D58 7F E3 FB 78 */ mr r3, r31
|
||||
lbl_80016D5C:
|
||||
/* 80016D5C 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 80016D60 83 C1 00 08 */ lwz r30, 8(r1)
|
||||
/* 80016D64 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 80016D68 7C 08 03 A6 */ mtlr r0
|
||||
/* 80016D6C 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 80016D70 4E 80 00 20 */ blr
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
lbl_80016730:
|
||||
/* 80016730 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 80016734 7C 08 02 A6 */ mflr r0
|
||||
/* 80016738 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 8001673C 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 80016740 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 80016744 48 33 D3 85 */ bl CARDInit
|
||||
/* 80016748 38 60 00 00 */ li r3, 0
|
||||
/* 8001674C 98 7F 1F BD */ stb r3, 0x1fbd(r31)
|
||||
/* 80016750 38 00 00 02 */ li r0, 2
|
||||
/* 80016754 98 1F 1F BE */ stb r0, 0x1fbe(r31)
|
||||
/* 80016758 90 7F 1F C4 */ stw r3, 0x1fc4(r31)
|
||||
/* 8001675C 90 7F 1F C0 */ stw r3, 0x1fc0(r31)
|
||||
/* 80016760 98 7F 1F BC */ stb r3, 0x1fbc(r31)
|
||||
/* 80016764 38 7F 1F CC */ addi r3, r31, 0x1fcc
|
||||
/* 80016768 48 32 88 A1 */ bl OSInitMutex
|
||||
/* 8001676C 38 7F 1F E4 */ addi r3, r31, 0x1fe4
|
||||
/* 80016770 48 32 8B A1 */ bl OSInitCond
|
||||
/* 80016774 48 32 A5 11 */ bl OSGetCurrentThread
|
||||
/* 80016778 48 32 B6 E5 */ bl OSGetThreadPriority
|
||||
/* 8001677C 7C 68 1B 78 */ mr r8, r3
|
||||
/* 80016780 3C 60 80 3E */ lis r3, MemCardThread@ha /* 0x803E0C20@ha */
|
||||
/* 80016784 38 63 0C 20 */ addi r3, r3, MemCardThread@l /* 0x803E0C20@l */
|
||||
/* 80016788 3C 80 80 01 */ lis r4, mDoMemCd_main__FPv@ha /* 0x8001741C@ha */
|
||||
/* 8001678C 38 84 74 1C */ addi r4, r4, mDoMemCd_main__FPv@l /* 0x8001741C@l */
|
||||
/* 80016790 38 A0 00 00 */ li r5, 0
|
||||
/* 80016794 3C C0 80 3E */ lis r6, MemCardStack@ha /* 0x803DFC20@ha */
|
||||
/* 80016798 38 C6 FC 20 */ addi r6, r6, MemCardStack@l /* 0x803DFC20@l */
|
||||
/* 8001679C 38 C6 10 00 */ addi r6, r6, 0x1000
|
||||
/* 800167A0 38 E0 10 00 */ li r7, 0x1000
|
||||
/* 800167A4 39 08 00 01 */ addi r8, r8, 1
|
||||
/* 800167A8 39 20 00 01 */ li r9, 1
|
||||
/* 800167AC 48 32 AA E1 */ bl OSCreateThread
|
||||
/* 800167B0 3C 60 80 3E */ lis r3, MemCardThread@ha /* 0x803E0C20@ha */
|
||||
/* 800167B4 38 63 0C 20 */ addi r3, r3, MemCardThread@l /* 0x803E0C20@l */
|
||||
/* 800167B8 48 32 AF FD */ bl OSResumeThread
|
||||
/* 800167BC 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 800167C0 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 800167C4 7C 08 03 A6 */ mtlr r0
|
||||
/* 800167C8 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 800167CC 4E 80 00 20 */ blr
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
lbl_800170B8:
|
||||
/* 800170B8 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 800170BC 7C 08 02 A6 */ mflr r0
|
||||
/* 800170C0 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 800170C4 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 800170C8 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 800170CC 38 7F 1F CC */ addi r3, r31, 0x1fcc
|
||||
/* 800170D0 48 32 81 85 */ bl OSTryLockMutex
|
||||
/* 800170D4 2C 03 00 00 */ cmpwi r3, 0
|
||||
/* 800170D8 41 82 00 24 */ beq lbl_800170FC
|
||||
/* 800170DC 38 00 00 0D */ li r0, 0xd
|
||||
/* 800170E0 90 1F 1F C4 */ stw r0, 0x1fc4(r31)
|
||||
/* 800170E4 38 00 00 04 */ li r0, 4
|
||||
/* 800170E8 90 1F 1F C0 */ stw r0, 0x1fc0(r31)
|
||||
/* 800170EC 38 7F 1F CC */ addi r3, r31, 0x1fcc
|
||||
/* 800170F0 48 32 80 2D */ bl OSUnlockMutex
|
||||
/* 800170F4 38 7F 1F E4 */ addi r3, r31, 0x1fe4
|
||||
/* 800170F8 48 32 83 0D */ bl OSSignalCond
|
||||
lbl_800170FC:
|
||||
/* 800170FC 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 80017100 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 80017104 7C 08 03 A6 */ mtlr r0
|
||||
/* 80017108 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 8001710C 4E 80 00 20 */ blr
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
lbl_80016E58:
|
||||
/* 80016E58 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 80016E5C 7C 08 02 A6 */ mflr r0
|
||||
/* 80016E60 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 80016E64 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 80016E68 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 80016E6C 38 7F 1F CC */ addi r3, r31, 0x1fcc
|
||||
/* 80016E70 48 32 83 E5 */ bl OSTryLockMutex
|
||||
/* 80016E74 2C 03 00 00 */ cmpwi r3, 0
|
||||
/* 80016E78 41 82 00 1C */ beq lbl_80016E94
|
||||
/* 80016E7C 38 00 00 03 */ li r0, 3
|
||||
/* 80016E80 90 1F 1F C0 */ stw r0, 0x1fc0(r31)
|
||||
/* 80016E84 38 7F 1F CC */ addi r3, r31, 0x1fcc
|
||||
/* 80016E88 48 32 82 95 */ bl OSUnlockMutex
|
||||
/* 80016E8C 38 7F 1F E4 */ addi r3, r31, 0x1fe4
|
||||
/* 80016E90 48 32 85 75 */ bl OSSignalCond
|
||||
lbl_80016E94:
|
||||
/* 80016E94 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 80016E98 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 80016E9C 7C 08 03 A6 */ mtlr r0
|
||||
/* 80016EA0 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 80016EA4 4E 80 00 20 */ blr
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
lbl_80017110:
|
||||
/* 80017110 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 80017114 7C 08 02 A6 */ mflr r0
|
||||
/* 80017118 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 8001711C 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 80017120 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 80017124 88 63 1F BC */ lbz r3, 0x1fbc(r3)
|
||||
/* 80017128 48 34 02 B1 */ bl CARDUnmount
|
||||
/* 8001712C 38 00 00 00 */ li r0, 0
|
||||
/* 80017130 90 1F 1F C4 */ stw r0, 0x1fc4(r31)
|
||||
/* 80017134 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 80017138 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 8001713C 7C 08 03 A6 */ mtlr r0
|
||||
/* 80017140 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 80017144 4E 80 00 20 */ blr
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
lbl_80016EA8:
|
||||
/* 80016EA8 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 80016EAC 7C 08 02 A6 */ mflr r0
|
||||
/* 80016EB0 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 80016EB4 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 80016EB8 93 C1 00 08 */ stw r30, 8(r1)
|
||||
/* 80016EBC 7C 7E 1B 78 */ mr r30, r3
|
||||
/* 80016EC0 38 00 00 00 */ li r0, 0
|
||||
/* 80016EC4 90 03 1F C8 */ stw r0, 0x1fc8(r3)
|
||||
/* 80016EC8 88 63 1F BC */ lbz r3, 0x1fbc(r3)
|
||||
/* 80016ECC 48 34 0D 55 */ bl CARDFormat
|
||||
/* 80016ED0 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 80016ED4 38 7E 1F CC */ addi r3, r30, 0x1fcc
|
||||
/* 80016ED8 48 32 83 7D */ bl OSTryLockMutex
|
||||
/* 80016EDC 2C 03 00 00 */ cmpwi r3, 0
|
||||
/* 80016EE0 41 82 00 34 */ beq lbl_80016F14
|
||||
/* 80016EE4 2C 1F 00 00 */ cmpwi r31, 0
|
||||
/* 80016EE8 40 82 00 10 */ bne lbl_80016EF8
|
||||
/* 80016EEC 38 00 00 05 */ li r0, 5
|
||||
/* 80016EF0 90 1E 1F C4 */ stw r0, 0x1fc4(r30)
|
||||
/* 80016EF4 48 00 00 10 */ b lbl_80016F04
|
||||
lbl_80016EF8:
|
||||
/* 80016EF8 7F C3 F3 78 */ mr r3, r30
|
||||
/* 80016EFC 7F E4 FB 78 */ mr r4, r31
|
||||
/* 80016F00 48 00 04 61 */ bl setCardState__15mDoMemCd_Ctrl_cFl
|
||||
lbl_80016F04:
|
||||
/* 80016F04 38 00 00 01 */ li r0, 1
|
||||
/* 80016F08 90 1E 1F C8 */ stw r0, 0x1fc8(r30)
|
||||
/* 80016F0C 38 7E 1F CC */ addi r3, r30, 0x1fcc
|
||||
/* 80016F10 48 32 82 0D */ bl OSUnlockMutex
|
||||
lbl_80016F14:
|
||||
/* 80016F14 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 80016F18 83 C1 00 08 */ lwz r30, 8(r1)
|
||||
/* 80016F1C 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 80016F20 7C 08 03 A6 */ mtlr r0
|
||||
/* 80016F24 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 80016F28 4E 80 00 20 */ blr
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
lbl_80016D74:
|
||||
/* 80016D74 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 80016D78 7C 08 02 A6 */ mflr r0
|
||||
/* 80016D7C 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 80016D80 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 80016D84 93 C1 00 08 */ stw r30, 8(r1)
|
||||
/* 80016D88 7C 7E 1B 78 */ mr r30, r3
|
||||
/* 80016D8C 38 7E 1F CC */ addi r3, r30, 0x1fcc
|
||||
/* 80016D90 48 32 84 C5 */ bl OSTryLockMutex
|
||||
/* 80016D94 2C 03 00 00 */ cmpwi r3, 0
|
||||
/* 80016D98 41 82 00 A4 */ beq lbl_80016E3C
|
||||
/* 80016D9C 80 1E 1F C4 */ lwz r0, 0x1fc4(r30)
|
||||
/* 80016DA0 28 00 00 0D */ cmplwi r0, 0xd
|
||||
/* 80016DA4 41 81 00 88 */ bgt lbl_80016E2C
|
||||
/* 80016DA8 3C 60 80 3A */ lis r3, lit_3770@ha /* 0x803A34F8@ha */
|
||||
/* 80016DAC 38 63 34 F8 */ addi r3, r3, lit_3770@l /* 0x803A34F8@l */
|
||||
/* 80016DB0 54 00 10 3A */ slwi r0, r0, 2
|
||||
/* 80016DB4 7C 03 00 2E */ lwzx r0, r3, r0
|
||||
/* 80016DB8 7C 09 03 A6 */ mtctr r0
|
||||
/* 80016DBC 4E 80 04 20 */ bctr
|
||||
/* 80016DC0 3B E0 00 02 */ li r31, 2
|
||||
/* 80016DC4 48 00 00 68 */ b lbl_80016E2C
|
||||
/* 80016DC8 3B E0 00 01 */ li r31, 1
|
||||
/* 80016DCC 48 00 00 60 */ b lbl_80016E2C
|
||||
/* 80016DD0 3B E0 00 03 */ li r31, 3
|
||||
/* 80016DD4 48 00 00 58 */ b lbl_80016E2C
|
||||
/* 80016DD8 3B E0 00 04 */ li r31, 4
|
||||
/* 80016DDC 48 00 00 50 */ b lbl_80016E2C
|
||||
/* 80016DE0 3B E0 00 05 */ li r31, 5
|
||||
/* 80016DE4 48 00 00 48 */ b lbl_80016E2C
|
||||
/* 80016DE8 3B E0 00 00 */ li r31, 0
|
||||
/* 80016DEC 48 00 00 40 */ b lbl_80016E2C
|
||||
/* 80016DF0 3B E0 00 07 */ li r31, 7
|
||||
/* 80016DF4 48 00 00 38 */ b lbl_80016E2C
|
||||
/* 80016DF8 3B E0 00 06 */ li r31, 6
|
||||
/* 80016DFC 48 00 00 30 */ b lbl_80016E2C
|
||||
/* 80016E00 3B E0 00 0B */ li r31, 0xb
|
||||
/* 80016E04 48 00 00 28 */ b lbl_80016E2C
|
||||
/* 80016E08 3B E0 00 0C */ li r31, 0xc
|
||||
/* 80016E0C 48 00 00 20 */ b lbl_80016E2C
|
||||
/* 80016E10 3B E0 00 09 */ li r31, 9
|
||||
/* 80016E14 48 00 00 18 */ b lbl_80016E2C
|
||||
/* 80016E18 3B E0 00 0A */ li r31, 0xa
|
||||
/* 80016E1C 48 00 00 10 */ b lbl_80016E2C
|
||||
/* 80016E20 3B E0 00 08 */ li r31, 8
|
||||
/* 80016E24 48 00 00 08 */ b lbl_80016E2C
|
||||
/* 80016E28 3B E0 00 0E */ li r31, 0xe
|
||||
lbl_80016E2C:
|
||||
/* 80016E2C 38 7E 1F CC */ addi r3, r30, 0x1fcc
|
||||
/* 80016E30 48 32 82 ED */ bl OSUnlockMutex
|
||||
/* 80016E34 7F E3 FB 78 */ mr r3, r31
|
||||
/* 80016E38 48 00 00 08 */ b lbl_80016E40
|
||||
lbl_80016E3C:
|
||||
/* 80016E3C 38 60 00 0E */ li r3, 0xe
|
||||
lbl_80016E40:
|
||||
/* 80016E40 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 80016E44 83 C1 00 08 */ lwz r30, 8(r1)
|
||||
/* 80016E48 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 80016E4C 7C 08 03 A6 */ mtlr r0
|
||||
/* 80016E50 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 80016E54 4E 80 00 20 */ blr
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
lbl_800169B4:
|
||||
/* 800169B4 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 800169B8 7C 08 02 A6 */ mflr r0
|
||||
/* 800169BC 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 800169C0 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 800169C4 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 800169C8 38 7F 1F CC */ addi r3, r31, 0x1fcc
|
||||
/* 800169CC 48 32 88 89 */ bl OSTryLockMutex
|
||||
/* 800169D0 2C 03 00 00 */ cmpwi r3, 0
|
||||
/* 800169D4 41 82 00 24 */ beq lbl_800169F8
|
||||
/* 800169D8 38 00 00 00 */ li r0, 0
|
||||
/* 800169DC 90 1F 1F C8 */ stw r0, 0x1fc8(r31)
|
||||
/* 800169E0 38 00 00 01 */ li r0, 1
|
||||
/* 800169E4 90 1F 1F C0 */ stw r0, 0x1fc0(r31)
|
||||
/* 800169E8 38 7F 1F CC */ addi r3, r31, 0x1fcc
|
||||
/* 800169EC 48 32 87 31 */ bl OSUnlockMutex
|
||||
/* 800169F0 38 7F 1F E4 */ addi r3, r31, 0x1fe4
|
||||
/* 800169F4 48 32 8A 11 */ bl OSSignalCond
|
||||
lbl_800169F8:
|
||||
/* 800169F8 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 800169FC 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 80016A00 7C 08 03 A6 */ mtlr r0
|
||||
/* 80016A04 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 80016A08 4E 80 00 20 */ blr
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
lbl_80017274:
|
||||
/* 80017274 94 21 FF D0 */ stwu r1, -0x30(r1)
|
||||
/* 80017278 7C 08 02 A6 */ mflr r0
|
||||
/* 8001727C 90 01 00 34 */ stw r0, 0x34(r1)
|
||||
/* 80017280 93 E1 00 2C */ stw r31, 0x2c(r1)
|
||||
/* 80017284 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 80017288 88 63 1F BC */ lbz r3, 0x1fbc(r3)
|
||||
/* 8001728C 3C 80 80 37 */ lis r4, m_Do_m_Do_MemCard__stringBase0@ha /* 0x803743F8@ha */
|
||||
/* 80017290 38 84 43 F8 */ addi r4, r4, m_Do_m_Do_MemCard__stringBase0@l /* 0x803743F8@l */
|
||||
/* 80017294 38 A1 00 08 */ addi r5, r1, 8
|
||||
/* 80017298 48 34 0D 01 */ bl CARDOpen
|
||||
/* 8001729C 7C 64 1B 79 */ or. r4, r3, r3
|
||||
/* 800172A0 40 82 00 14 */ bne lbl_800172B4
|
||||
/* 800172A4 38 61 00 08 */ addi r3, r1, 8
|
||||
/* 800172A8 48 34 0E 0D */ bl CARDClose
|
||||
/* 800172AC 38 60 00 01 */ li r3, 1
|
||||
/* 800172B0 48 00 00 10 */ b lbl_800172C0
|
||||
lbl_800172B4:
|
||||
/* 800172B4 7F E3 FB 78 */ mr r3, r31
|
||||
/* 800172B8 48 00 00 A9 */ bl setCardState__15mDoMemCd_Ctrl_cFl
|
||||
/* 800172BC 38 60 00 00 */ li r3, 0
|
||||
lbl_800172C0:
|
||||
/* 800172C0 83 E1 00 2C */ lwz r31, 0x2c(r1)
|
||||
/* 800172C4 80 01 00 34 */ lwz r0, 0x34(r1)
|
||||
/* 800172C8 7C 08 03 A6 */ mtlr r0
|
||||
/* 800172CC 38 21 00 30 */ addi r1, r1, 0x30
|
||||
/* 800172D0 4E 80 00 20 */ blr
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
lbl_8001741C:
|
||||
/* 8001741C 94 21 FF 70 */ stwu r1, -0x90(r1)
|
||||
/* 80017420 7C 08 02 A6 */ mflr r0
|
||||
/* 80017424 90 01 00 94 */ stw r0, 0x94(r1)
|
||||
/* 80017428 48 32 98 5D */ bl OSGetCurrentThread
|
||||
/* 8001742C 7C 64 1B 78 */ mr r4, r3
|
||||
/* 80017430 38 61 00 08 */ addi r3, r1, 8
|
||||
/* 80017434 38 A0 00 00 */ li r5, 0
|
||||
/* 80017438 48 2B A2 81 */ bl __ct__9JKRThreadFP8OSThreadi
|
||||
/* 8001743C 38 61 00 08 */ addi r3, r1, 8
|
||||
/* 80017440 38 80 FF FF */ li r4, -1
|
||||
/* 80017444 48 2B A3 15 */ bl __dt__9JKRThreadFv
|
||||
/* 80017448 4B FF 78 9D */ bl mDoExt_getAssertHeap__Fv
|
||||
/* 8001744C 48 2B 6F ED */ bl becomeCurrentHeap__7JKRHeapFv
|
||||
/* 80017450 3C 60 80 3F */ lis r3, g_mDoMemCd_control@ha /* 0x803EAF40@ha */
|
||||
/* 80017454 38 63 AF 40 */ addi r3, r3, g_mDoMemCd_control@l /* 0x803EAF40@l */
|
||||
/* 80017458 4B FF F3 79 */ bl main__15mDoMemCd_Ctrl_cFv
|
||||
/* 8001745C 38 60 00 00 */ li r3, 0
|
||||
/* 80017460 80 01 00 94 */ lwz r0, 0x94(r1)
|
||||
/* 80017464 7C 08 03 A6 */ mtlr r0
|
||||
/* 80017468 38 21 00 90 */ addi r1, r1, 0x90
|
||||
/* 8001746C 4E 80 00 20 */ blr
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
lbl_800167D0:
|
||||
/* 800167D0 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 800167D4 7C 08 02 A6 */ mflr r0
|
||||
/* 800167D8 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 800167DC 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 800167E0 7C 7F 1B 78 */ mr r31, r3
|
||||
lbl_800167E4:
|
||||
/* 800167E4 38 7F 1F CC */ addi r3, r31, 0x1fcc
|
||||
/* 800167E8 48 32 88 59 */ bl OSLockMutex
|
||||
/* 800167EC 48 00 00 10 */ b lbl_800167FC
|
||||
lbl_800167F0:
|
||||
/* 800167F0 38 7F 1F E4 */ addi r3, r31, 0x1fe4
|
||||
/* 800167F4 38 9F 1F CC */ addi r4, r31, 0x1fcc
|
||||
/* 800167F8 48 32 8B 39 */ bl OSWaitCond
|
||||
lbl_800167FC:
|
||||
/* 800167FC 80 1F 1F C0 */ lwz r0, 0x1fc0(r31)
|
||||
/* 80016800 2C 00 00 00 */ cmpwi r0, 0
|
||||
/* 80016804 41 82 FF EC */ beq lbl_800167F0
|
||||
/* 80016808 38 7F 1F CC */ addi r3, r31, 0x1fcc
|
||||
/* 8001680C 48 32 89 11 */ bl OSUnlockMutex
|
||||
/* 80016810 80 1F 1F C0 */ lwz r0, 0x1fc0(r31)
|
||||
/* 80016814 2C 00 00 03 */ cmpwi r0, 3
|
||||
/* 80016818 41 82 00 40 */ beq lbl_80016858
|
||||
/* 8001681C 40 80 00 14 */ bge lbl_80016830
|
||||
/* 80016820 2C 00 00 01 */ cmpwi r0, 1
|
||||
/* 80016824 41 82 00 1C */ beq lbl_80016840
|
||||
/* 80016828 40 80 00 24 */ bge lbl_8001684C
|
||||
/* 8001682C 48 00 00 4C */ b lbl_80016878
|
||||
lbl_80016830:
|
||||
/* 80016830 2C 00 00 05 */ cmpwi r0, 5
|
||||
/* 80016834 41 82 00 3C */ beq lbl_80016870
|
||||
/* 80016838 40 80 00 40 */ bge lbl_80016878
|
||||
/* 8001683C 48 00 00 28 */ b lbl_80016864
|
||||
lbl_80016840:
|
||||
/* 80016840 7F E3 FB 78 */ mr r3, r31
|
||||
/* 80016844 48 00 01 C9 */ bl restore__15mDoMemCd_Ctrl_cFv
|
||||
/* 80016848 48 00 00 30 */ b lbl_80016878
|
||||
lbl_8001684C:
|
||||
/* 8001684C 7F E3 FB 78 */ mr r3, r31
|
||||
/* 80016850 48 00 03 85 */ bl store__15mDoMemCd_Ctrl_cFv
|
||||
/* 80016854 48 00 00 24 */ b lbl_80016878
|
||||
lbl_80016858:
|
||||
/* 80016858 7F E3 FB 78 */ mr r3, r31
|
||||
/* 8001685C 48 00 06 4D */ bl format__15mDoMemCd_Ctrl_cFv
|
||||
/* 80016860 48 00 00 18 */ b lbl_80016878
|
||||
lbl_80016864:
|
||||
/* 80016864 7F E3 FB 78 */ mr r3, r31
|
||||
/* 80016868 48 00 07 51 */ bl attach__15mDoMemCd_Ctrl_cFv
|
||||
/* 8001686C 48 00 00 0C */ b lbl_80016878
|
||||
lbl_80016870:
|
||||
/* 80016870 7F E3 FB 78 */ mr r3, r31
|
||||
/* 80016874 48 00 08 9D */ bl detach__15mDoMemCd_Ctrl_cFv
|
||||
lbl_80016878:
|
||||
/* 80016878 38 7F 1F CC */ addi r3, r31, 0x1fcc
|
||||
/* 8001687C 48 32 87 C5 */ bl OSLockMutex
|
||||
/* 80016880 38 00 00 00 */ li r0, 0
|
||||
/* 80016884 90 1F 1F C0 */ stw r0, 0x1fc0(r31)
|
||||
/* 80016888 38 7F 1F CC */ addi r3, r31, 0x1fcc
|
||||
/* 8001688C 48 32 88 91 */ bl OSUnlockMutex
|
||||
/* 80016890 4B FF FF 54 */ b lbl_800167E4
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
lbl_80016A0C:
|
||||
/* 80016A0C 94 21 FF D0 */ stwu r1, -0x30(r1)
|
||||
/* 80016A10 7C 08 02 A6 */ mflr r0
|
||||
/* 80016A14 90 01 00 34 */ stw r0, 0x34(r1)
|
||||
/* 80016A18 93 E1 00 2C */ stw r31, 0x2c(r1)
|
||||
/* 80016A1C 93 C1 00 28 */ stw r30, 0x28(r1)
|
||||
/* 80016A20 7C 7E 1B 78 */ mr r30, r3
|
||||
/* 80016A24 38 00 00 00 */ li r0, 0
|
||||
/* 80016A28 90 03 1F C8 */ stw r0, 0x1fc8(r3)
|
||||
/* 80016A2C 88 63 1F BC */ lbz r3, 0x1fbc(r3)
|
||||
/* 80016A30 3C 80 80 37 */ lis r4, m_Do_m_Do_MemCard__stringBase0@ha /* 0x803743F8@ha */
|
||||
/* 80016A34 38 84 43 F8 */ addi r4, r4, m_Do_m_Do_MemCard__stringBase0@l /* 0x803743F8@l */
|
||||
/* 80016A38 38 A1 00 08 */ addi r5, r1, 8
|
||||
/* 80016A3C 48 34 15 5D */ bl CARDOpen
|
||||
/* 80016A40 7C 7F 1B 79 */ or. r31, r3, r3
|
||||
/* 80016A44 40 82 00 40 */ bne lbl_80016A84
|
||||
/* 80016A48 38 61 00 08 */ addi r3, r1, 8
|
||||
/* 80016A4C 7F C4 F3 78 */ mr r4, r30
|
||||
/* 80016A50 38 A0 1F BC */ li r5, 0x1fbc
|
||||
/* 80016A54 48 00 0C 49 */ bl mDoMemCdRWm_Restore__FP12CARDFileInfoPvUl
|
||||
/* 80016A58 2C 03 00 00 */ cmpwi r3, 0
|
||||
/* 80016A5C 40 82 00 10 */ bne lbl_80016A6C
|
||||
/* 80016A60 38 00 00 03 */ li r0, 3
|
||||
/* 80016A64 90 1E 1F C4 */ stw r0, 0x1fc4(r30)
|
||||
/* 80016A68 48 00 00 10 */ b lbl_80016A78
|
||||
lbl_80016A6C:
|
||||
/* 80016A6C 7F C3 F3 78 */ mr r3, r30
|
||||
/* 80016A70 7F E4 FB 78 */ mr r4, r31
|
||||
/* 80016A74 48 00 08 ED */ bl setCardState__15mDoMemCd_Ctrl_cFl
|
||||
lbl_80016A78:
|
||||
/* 80016A78 38 61 00 08 */ addi r3, r1, 8
|
||||
/* 80016A7C 48 34 16 39 */ bl CARDClose
|
||||
/* 80016A80 48 00 00 10 */ b lbl_80016A90
|
||||
lbl_80016A84:
|
||||
/* 80016A84 7F C3 F3 78 */ mr r3, r30
|
||||
/* 80016A88 7F E4 FB 78 */ mr r4, r31
|
||||
/* 80016A8C 48 00 08 D5 */ bl setCardState__15mDoMemCd_Ctrl_cFl
|
||||
lbl_80016A90:
|
||||
/* 80016A90 38 00 00 01 */ li r0, 1
|
||||
/* 80016A94 90 1E 1F C8 */ stw r0, 0x1fc8(r30)
|
||||
/* 80016A98 83 E1 00 2C */ lwz r31, 0x2c(r1)
|
||||
/* 80016A9C 83 C1 00 28 */ lwz r30, 0x28(r1)
|
||||
/* 80016AA0 80 01 00 34 */ lwz r0, 0x34(r1)
|
||||
/* 80016AA4 7C 08 03 A6 */ mtlr r0
|
||||
/* 80016AA8 38 21 00 30 */ addi r1, r1, 0x30
|
||||
/* 80016AAC 4E 80 00 20 */ blr
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
lbl_80016B58:
|
||||
/* 80016B58 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
/* 80016B5C 7C 08 02 A6 */ mflr r0
|
||||
/* 80016B60 90 01 00 24 */ stw r0, 0x24(r1)
|
||||
/* 80016B64 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 80016B68 48 34 B6 71 */ bl _savegpr_28
|
||||
/* 80016B6C 7C 7C 1B 78 */ mr r28, r3
|
||||
/* 80016B70 7C 9D 23 78 */ mr r29, r4
|
||||
/* 80016B74 7C BE 2B 78 */ mr r30, r5
|
||||
/* 80016B78 7C DF 33 78 */ mr r31, r6
|
||||
/* 80016B7C 38 7C 1F CC */ addi r3, r28, 0x1fcc
|
||||
/* 80016B80 48 32 86 D5 */ bl OSTryLockMutex
|
||||
/* 80016B84 2C 03 00 00 */ cmpwi r3, 0
|
||||
/* 80016B88 41 82 00 34 */ beq lbl_80016BBC
|
||||
/* 80016B8C 7C 7C FA 14 */ add r3, r28, r31
|
||||
/* 80016B90 7F A4 EB 78 */ mr r4, r29
|
||||
/* 80016B94 7F C5 F3 78 */ mr r5, r30
|
||||
/* 80016B98 4B FE C9 A9 */ bl memcpy
|
||||
/* 80016B9C 38 00 00 00 */ li r0, 0
|
||||
/* 80016BA0 90 1C 1F C8 */ stw r0, 0x1fc8(r28)
|
||||
/* 80016BA4 38 00 00 02 */ li r0, 2
|
||||
/* 80016BA8 90 1C 1F C0 */ stw r0, 0x1fc0(r28)
|
||||
/* 80016BAC 38 7C 1F CC */ addi r3, r28, 0x1fcc
|
||||
/* 80016BB0 48 32 85 6D */ bl OSUnlockMutex
|
||||
/* 80016BB4 38 7C 1F E4 */ addi r3, r28, 0x1fe4
|
||||
/* 80016BB8 48 32 88 4D */ bl OSSignalCond
|
||||
lbl_80016BBC:
|
||||
/* 80016BBC 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 80016BC0 48 34 B6 65 */ bl _restgpr_28
|
||||
/* 80016BC4 80 01 00 24 */ lwz r0, 0x24(r1)
|
||||
/* 80016BC8 7C 08 03 A6 */ mtlr r0
|
||||
/* 80016BCC 38 21 00 20 */ addi r1, r1, 0x20
|
||||
/* 80016BD0 4E 80 00 20 */ blr
|
||||
|
|
@ -1,76 +0,0 @@
|
|||
lbl_80016BD4:
|
||||
/* 80016BD4 94 21 FF D0 */ stwu r1, -0x30(r1)
|
||||
/* 80016BD8 7C 08 02 A6 */ mflr r0
|
||||
/* 80016BDC 90 01 00 34 */ stw r0, 0x34(r1)
|
||||
/* 80016BE0 93 E1 00 2C */ stw r31, 0x2c(r1)
|
||||
/* 80016BE4 93 C1 00 28 */ stw r30, 0x28(r1)
|
||||
/* 80016BE8 7C 7E 1B 78 */ mr r30, r3
|
||||
/* 80016BEC 38 00 00 00 */ li r0, 0
|
||||
/* 80016BF0 90 03 1F C8 */ stw r0, 0x1fc8(r3)
|
||||
/* 80016BF4 80 03 1F C4 */ lwz r0, 0x1fc4(r3)
|
||||
/* 80016BF8 2C 00 00 02 */ cmpwi r0, 2
|
||||
/* 80016BFC 40 82 00 48 */ bne lbl_80016C44
|
||||
/* 80016C00 88 7E 1F BC */ lbz r3, 0x1fbc(r30)
|
||||
/* 80016C04 3C 80 80 37 */ lis r4, m_Do_m_Do_MemCard__stringBase0@ha /* 0x803743F8@ha */
|
||||
/* 80016C08 38 84 43 F8 */ addi r4, r4, m_Do_m_Do_MemCard__stringBase0@l /* 0x803743F8@l */
|
||||
/* 80016C0C 3C A0 00 01 */ lis r5, 0x0001 /* 0x00008000@ha */
|
||||
/* 80016C10 38 A5 80 00 */ addi r5, r5, 0x8000 /* 0x00008000@l */
|
||||
/* 80016C14 38 C1 00 08 */ addi r6, r1, 8
|
||||
/* 80016C18 48 34 18 41 */ bl CARDCreate
|
||||
/* 80016C1C 7C 7F 1B 79 */ or. r31, r3, r3
|
||||
/* 80016C20 41 82 00 0C */ beq lbl_80016C2C
|
||||
/* 80016C24 2C 1F FF F9 */ cmpwi r31, -7
|
||||
/* 80016C28 40 82 00 10 */ bne lbl_80016C38
|
||||
lbl_80016C2C:
|
||||
/* 80016C2C 38 00 00 01 */ li r0, 1
|
||||
/* 80016C30 90 1E 1F C4 */ stw r0, 0x1fc4(r30)
|
||||
/* 80016C34 48 00 00 10 */ b lbl_80016C44
|
||||
lbl_80016C38:
|
||||
/* 80016C38 7F C3 F3 78 */ mr r3, r30
|
||||
/* 80016C3C 7F E4 FB 78 */ mr r4, r31
|
||||
/* 80016C40 48 00 07 21 */ bl setCardState__15mDoMemCd_Ctrl_cFl
|
||||
lbl_80016C44:
|
||||
/* 80016C44 80 1E 1F C4 */ lwz r0, 0x1fc4(r30)
|
||||
/* 80016C48 2C 00 00 01 */ cmpwi r0, 1
|
||||
/* 80016C4C 40 82 00 68 */ bne lbl_80016CB4
|
||||
/* 80016C50 88 7E 1F BC */ lbz r3, 0x1fbc(r30)
|
||||
/* 80016C54 3C 80 80 37 */ lis r4, m_Do_m_Do_MemCard__stringBase0@ha /* 0x803743F8@ha */
|
||||
/* 80016C58 38 84 43 F8 */ addi r4, r4, m_Do_m_Do_MemCard__stringBase0@l /* 0x803743F8@l */
|
||||
/* 80016C5C 38 A1 00 08 */ addi r5, r1, 8
|
||||
/* 80016C60 48 34 13 39 */ bl CARDOpen
|
||||
/* 80016C64 7C 7F 1B 79 */ or. r31, r3, r3
|
||||
/* 80016C68 40 82 00 3C */ bne lbl_80016CA4
|
||||
/* 80016C6C 38 61 00 08 */ addi r3, r1, 8
|
||||
/* 80016C70 7F C4 F3 78 */ mr r4, r30
|
||||
/* 80016C74 38 A0 1F BC */ li r5, 0x1fbc
|
||||
/* 80016C78 48 00 08 21 */ bl mDoMemCdRWm_Store__FP12CARDFileInfoPvUl
|
||||
/* 80016C7C 7C 64 1B 79 */ or. r4, r3, r3
|
||||
/* 80016C80 41 82 00 10 */ beq lbl_80016C90
|
||||
/* 80016C84 7F C3 F3 78 */ mr r3, r30
|
||||
/* 80016C88 48 00 06 D9 */ bl setCardState__15mDoMemCd_Ctrl_cFl
|
||||
/* 80016C8C 48 00 00 0C */ b lbl_80016C98
|
||||
lbl_80016C90:
|
||||
/* 80016C90 38 00 00 04 */ li r0, 4
|
||||
/* 80016C94 90 1E 1F C4 */ stw r0, 0x1fc4(r30)
|
||||
lbl_80016C98:
|
||||
/* 80016C98 38 61 00 08 */ addi r3, r1, 8
|
||||
/* 80016C9C 48 34 14 19 */ bl CARDClose
|
||||
/* 80016CA0 48 00 00 20 */ b lbl_80016CC0
|
||||
lbl_80016CA4:
|
||||
/* 80016CA4 7F C3 F3 78 */ mr r3, r30
|
||||
/* 80016CA8 7F E4 FB 78 */ mr r4, r31
|
||||
/* 80016CAC 48 00 06 B5 */ bl setCardState__15mDoMemCd_Ctrl_cFl
|
||||
/* 80016CB0 48 00 00 10 */ b lbl_80016CC0
|
||||
lbl_80016CB4:
|
||||
/* 80016CB4 7F C3 F3 78 */ mr r3, r30
|
||||
/* 80016CB8 7F E4 FB 78 */ mr r4, r31
|
||||
/* 80016CBC 48 00 06 A5 */ bl setCardState__15mDoMemCd_Ctrl_cFl
|
||||
lbl_80016CC0:
|
||||
/* 80016CC0 38 00 00 01 */ li r0, 1
|
||||
/* 80016CC4 90 1E 1F C8 */ stw r0, 0x1fc8(r30)
|
||||
/* 80016CC8 83 E1 00 2C */ lwz r31, 0x2c(r1)
|
||||
/* 80016CCC 83 C1 00 28 */ lwz r30, 0x28(r1)
|
||||
/* 80016CD0 80 01 00 34 */ lwz r0, 0x34(r1)
|
||||
/* 80016CD4 7C 08 03 A6 */ mtlr r0
|
||||
/* 80016CD8 38 21 00 30 */ addi r1, r1, 0x30
|
||||
/* 80016CDC 4E 80 00 20 */ blr
|
||||
|
|
@ -1,76 +0,0 @@
|
|||
lbl_80016894:
|
||||
/* 80016894 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 80016898 7C 08 02 A6 */ mflr r0
|
||||
/* 8001689C 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 800168A0 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 800168A4 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 800168A8 80 8D 86 F8 */ lwz r4, mResetData__6mDoRst(r13)
|
||||
/* 800168AC 80 04 00 00 */ lwz r0, 0(r4)
|
||||
/* 800168B0 2C 00 00 00 */ cmpwi r0, 0
|
||||
/* 800168B4 41 82 00 30 */ beq lbl_800168E4
|
||||
/* 800168B8 38 7F 1F CC */ addi r3, r31, 0x1fcc
|
||||
/* 800168BC 48 32 87 85 */ bl OSLockMutex
|
||||
/* 800168C0 38 00 00 05 */ li r0, 5
|
||||
/* 800168C4 90 1F 1F C0 */ stw r0, 0x1fc0(r31)
|
||||
/* 800168C8 38 00 00 03 */ li r0, 3
|
||||
/* 800168CC 98 1F 1F BE */ stb r0, 0x1fbe(r31)
|
||||
/* 800168D0 38 7F 1F CC */ addi r3, r31, 0x1fcc
|
||||
/* 800168D4 48 32 88 49 */ bl OSUnlockMutex
|
||||
/* 800168D8 38 7F 1F E4 */ addi r3, r31, 0x1fe4
|
||||
/* 800168DC 48 32 8B 29 */ bl OSSignalCond
|
||||
/* 800168E0 48 00 00 C0 */ b lbl_800169A0
|
||||
lbl_800168E4:
|
||||
/* 800168E4 38 80 00 00 */ li r4, 0
|
||||
/* 800168E8 48 00 04 8D */ bl getStatus__15mDoMemCd_Ctrl_cFUl
|
||||
/* 800168EC 28 03 00 0E */ cmplwi r3, 0xe
|
||||
/* 800168F0 41 82 00 B0 */ beq lbl_800169A0
|
||||
/* 800168F4 38 60 00 00 */ li r3, 0
|
||||
/* 800168F8 48 34 01 1D */ bl CARDProbe
|
||||
/* 800168FC 2C 03 00 00 */ cmpwi r3, 0
|
||||
/* 80016900 41 82 00 4C */ beq lbl_8001694C
|
||||
/* 80016904 7F E3 FB 78 */ mr r3, r31
|
||||
/* 80016908 38 80 00 00 */ li r4, 0
|
||||
/* 8001690C 48 00 04 69 */ bl getStatus__15mDoMemCd_Ctrl_cFUl
|
||||
/* 80016910 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 80016914 40 82 00 38 */ bne lbl_8001694C
|
||||
/* 80016918 38 7F 1F CC */ addi r3, r31, 0x1fcc
|
||||
/* 8001691C 48 32 87 25 */ bl OSLockMutex
|
||||
/* 80016920 38 00 00 00 */ li r0, 0
|
||||
/* 80016924 98 1F 1F BE */ stb r0, 0x1fbe(r31)
|
||||
/* 80016928 38 00 00 0D */ li r0, 0xd
|
||||
/* 8001692C 90 1F 1F C4 */ stw r0, 0x1fc4(r31)
|
||||
/* 80016930 38 00 00 04 */ li r0, 4
|
||||
/* 80016934 90 1F 1F C0 */ stw r0, 0x1fc0(r31)
|
||||
/* 80016938 38 7F 1F CC */ addi r3, r31, 0x1fcc
|
||||
/* 8001693C 48 32 87 E1 */ bl OSUnlockMutex
|
||||
/* 80016940 38 7F 1F E4 */ addi r3, r31, 0x1fe4
|
||||
/* 80016944 48 32 8A C1 */ bl OSSignalCond
|
||||
/* 80016948 48 00 00 58 */ b lbl_800169A0
|
||||
lbl_8001694C:
|
||||
/* 8001694C 38 60 00 00 */ li r3, 0
|
||||
/* 80016950 48 34 00 C5 */ bl CARDProbe
|
||||
/* 80016954 2C 03 00 00 */ cmpwi r3, 0
|
||||
/* 80016958 40 82 00 48 */ bne lbl_800169A0
|
||||
/* 8001695C 7F E3 FB 78 */ mr r3, r31
|
||||
/* 80016960 38 80 00 00 */ li r4, 0
|
||||
/* 80016964 48 00 04 11 */ bl getStatus__15mDoMemCd_Ctrl_cFUl
|
||||
/* 80016968 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 8001696C 41 82 00 34 */ beq lbl_800169A0
|
||||
/* 80016970 38 7F 1F CC */ addi r3, r31, 0x1fcc
|
||||
/* 80016974 48 32 86 CD */ bl OSLockMutex
|
||||
/* 80016978 38 00 00 01 */ li r0, 1
|
||||
/* 8001697C 98 1F 1F BE */ stb r0, 0x1fbe(r31)
|
||||
/* 80016980 38 00 00 0D */ li r0, 0xd
|
||||
/* 80016984 90 1F 1F C4 */ stw r0, 0x1fc4(r31)
|
||||
/* 80016988 38 00 00 05 */ li r0, 5
|
||||
/* 8001698C 90 1F 1F C0 */ stw r0, 0x1fc0(r31)
|
||||
/* 80016990 38 7F 1F CC */ addi r3, r31, 0x1fcc
|
||||
/* 80016994 48 32 87 89 */ bl OSUnlockMutex
|
||||
/* 80016998 38 7F 1F E4 */ addi r3, r31, 0x1fe4
|
||||
/* 8001699C 48 32 8A 69 */ bl OSSignalCond
|
||||
lbl_800169A0:
|
||||
/* 800169A0 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 800169A4 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 800169A8 7C 08 03 A6 */ mtlr r0
|
||||
/* 800169AC 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 800169B0 4E 80 00 20 */ blr
|
||||
|
|
@ -1,91 +0,0 @@
|
|||
lbl_8001787C:
|
||||
/* 8001787C 94 21 FF C0 */ stwu r1, -0x40(r1)
|
||||
/* 80017880 7C 08 02 A6 */ mflr r0
|
||||
/* 80017884 90 01 00 44 */ stw r0, 0x44(r1)
|
||||
/* 80017888 39 61 00 40 */ addi r11, r1, 0x40
|
||||
/* 8001788C 48 34 A9 4D */ bl _savegpr_28
|
||||
/* 80017890 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 80017894 38 7F 24 00 */ addi r3, r31, 0x2400
|
||||
/* 80017898 38 80 00 20 */ li r4, 0x20
|
||||
/* 8001789C 3C A0 80 37 */ lis r5, m_Do_m_Do_MemCardRWmng__stringBase0@ha /* 0x80374408@ha */
|
||||
/* 800178A0 38 A5 44 08 */ addi r5, r5, m_Do_m_Do_MemCardRWmng__stringBase0@l /* 0x80374408@l */
|
||||
/* 800178A4 4C C6 31 82 */ crclr 6
|
||||
/* 800178A8 48 34 ED 15 */ bl snprintf
|
||||
/* 800178AC 48 32 AE 51 */ bl OSGetTime
|
||||
/* 800178B0 38 A1 00 08 */ addi r5, r1, 8
|
||||
/* 800178B4 48 32 B0 C1 */ bl OSTicksToCalendarTime
|
||||
/* 800178B8 38 7F 24 20 */ addi r3, r31, 0x2420
|
||||
/* 800178BC 38 80 00 20 */ li r4, 0x20
|
||||
/* 800178C0 3C A0 80 37 */ lis r5, m_Do_m_Do_MemCardRWmng__stringBase0@ha /* 0x80374408@ha */
|
||||
/* 800178C4 38 A5 44 08 */ addi r5, r5, m_Do_m_Do_MemCardRWmng__stringBase0@l /* 0x80374408@l */
|
||||
/* 800178C8 38 A5 00 19 */ addi r5, r5, 0x19
|
||||
/* 800178CC 80 C1 00 18 */ lwz r6, 0x18(r1)
|
||||
/* 800178D0 38 C6 00 01 */ addi r6, r6, 1
|
||||
/* 800178D4 80 E1 00 14 */ lwz r7, 0x14(r1)
|
||||
/* 800178D8 4C C6 31 82 */ crclr 6
|
||||
/* 800178DC 48 34 EC E1 */ bl snprintf
|
||||
/* 800178E0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */
|
||||
/* 800178E4 3B 83 61 C0 */ addi r28, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */
|
||||
/* 800178E8 80 7C 5C F0 */ lwz r3, 0x5cf0(r28)
|
||||
/* 800178EC 3C 80 80 37 */ lis r4, m_Do_m_Do_MemCardRWmng__stringBase0@ha /* 0x80374408@ha */
|
||||
/* 800178F0 38 84 44 08 */ addi r4, r4, m_Do_m_Do_MemCardRWmng__stringBase0@l /* 0x80374408@l */
|
||||
/* 800178F4 38 84 00 29 */ addi r4, r4, 0x29
|
||||
/* 800178F8 81 83 00 00 */ lwz r12, 0(r3)
|
||||
/* 800178FC 81 8C 00 14 */ lwz r12, 0x14(r12)
|
||||
/* 80017900 7D 89 03 A6 */ mtctr r12
|
||||
/* 80017904 4E 80 04 21 */ bctrl
|
||||
/* 80017908 7C 7D 1B 78 */ mr r29, r3
|
||||
/* 8001790C 80 7C 5C F0 */ lwz r3, 0x5cf0(r28)
|
||||
/* 80017910 3C 80 80 37 */ lis r4, m_Do_m_Do_MemCardRWmng__stringBase0@ha /* 0x80374408@ha */
|
||||
/* 80017914 38 84 44 08 */ addi r4, r4, m_Do_m_Do_MemCardRWmng__stringBase0@l /* 0x80374408@l */
|
||||
/* 80017918 38 84 00 3E */ addi r4, r4, 0x3e
|
||||
/* 8001791C 81 83 00 00 */ lwz r12, 0(r3)
|
||||
/* 80017920 81 8C 00 14 */ lwz r12, 0x14(r12)
|
||||
/* 80017924 7D 89 03 A6 */ mtctr r12
|
||||
/* 80017928 4E 80 04 21 */ bctrl
|
||||
/* 8001792C 7C 7E 1B 78 */ mr r30, r3
|
||||
/* 80017930 7F E3 FB 78 */ mr r3, r31
|
||||
/* 80017934 80 1D 00 1C */ lwz r0, 0x1c(r29)
|
||||
/* 80017938 7C 9D 02 14 */ add r4, r29, r0
|
||||
/* 8001793C A0 1D 00 0A */ lhz r0, 0xa(r29)
|
||||
/* 80017940 54 05 08 3C */ slwi r5, r0, 1
|
||||
/* 80017944 38 A5 0C 00 */ addi r5, r5, 0xc00
|
||||
/* 80017948 4B FE BB F9 */ bl memcpy
|
||||
/* 8001794C 38 7F 0E 00 */ addi r3, r31, 0xe00
|
||||
/* 80017950 80 1E 00 1C */ lwz r0, 0x1c(r30)
|
||||
/* 80017954 7C 9E 02 14 */ add r4, r30, r0
|
||||
/* 80017958 38 A0 04 00 */ li r5, 0x400
|
||||
/* 8001795C 4B FE BB E5 */ bl memcpy
|
||||
/* 80017960 38 7F 12 00 */ addi r3, r31, 0x1200
|
||||
/* 80017964 80 1E 00 1C */ lwz r0, 0x1c(r30)
|
||||
/* 80017968 7C 9E 02 14 */ add r4, r30, r0
|
||||
/* 8001796C 38 A0 04 00 */ li r5, 0x400
|
||||
/* 80017970 4B FE BB D1 */ bl memcpy
|
||||
/* 80017974 38 7F 16 00 */ addi r3, r31, 0x1600
|
||||
/* 80017978 80 1E 00 1C */ lwz r0, 0x1c(r30)
|
||||
/* 8001797C 7C 9E 02 14 */ add r4, r30, r0
|
||||
/* 80017980 38 A0 04 00 */ li r5, 0x400
|
||||
/* 80017984 4B FE BB BD */ bl memcpy
|
||||
/* 80017988 38 7F 1A 00 */ addi r3, r31, 0x1a00
|
||||
/* 8001798C 80 1E 00 1C */ lwz r0, 0x1c(r30)
|
||||
/* 80017990 7C 9E 02 14 */ add r4, r30, r0
|
||||
/* 80017994 38 A0 04 00 */ li r5, 0x400
|
||||
/* 80017998 4B FE BB A9 */ bl memcpy
|
||||
/* 8001799C 38 7F 1E 00 */ addi r3, r31, 0x1e00
|
||||
/* 800179A0 80 1E 00 1C */ lwz r0, 0x1c(r30)
|
||||
/* 800179A4 7C 9E 02 14 */ add r4, r30, r0
|
||||
/* 800179A8 A0 1E 00 0A */ lhz r0, 0xa(r30)
|
||||
/* 800179AC 54 05 08 3C */ slwi r5, r0, 1
|
||||
/* 800179B0 38 A5 04 00 */ addi r5, r5, 0x400
|
||||
/* 800179B4 4B FE BB 8D */ bl memcpy
|
||||
/* 800179B8 80 7C 5C F0 */ lwz r3, 0x5cf0(r28)
|
||||
/* 800179BC 81 83 00 00 */ lwz r12, 0(r3)
|
||||
/* 800179C0 81 8C 00 24 */ lwz r12, 0x24(r12)
|
||||
/* 800179C4 7D 89 03 A6 */ mtctr r12
|
||||
/* 800179C8 4E 80 04 21 */ bctrl
|
||||
/* 800179CC 39 61 00 40 */ addi r11, r1, 0x40
|
||||
/* 800179D0 48 34 A8 55 */ bl _restgpr_28
|
||||
/* 800179D4 80 01 00 44 */ lwz r0, 0x44(r1)
|
||||
/* 800179D8 7C 08 03 A6 */ mtlr r0
|
||||
/* 800179DC 38 21 00 40 */ addi r1, r1, 0x40
|
||||
/* 800179E0 4E 80 00 20 */ blr
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
lbl_80017D38:
|
||||
/* 80017D38 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 80017D3C 7C 08 02 A6 */ mflr r0
|
||||
/* 80017D40 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 80017D44 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 80017D48 54 80 06 3E */ clrlwi r0, r4, 0x18
|
||||
/* 80017D4C 1C 00 0A 94 */ mulli r0, r0, 0xa94
|
||||
/* 80017D50 7F E3 02 14 */ add r31, r3, r0
|
||||
/* 80017D54 7F E3 FB 78 */ mr r3, r31
|
||||
/* 80017D58 38 80 0A 8C */ li r4, 0xa8c
|
||||
/* 80017D5C 4B FF FF 59 */ bl mDoMemCdRWm_CalcCheckSumGameData__FPvUl
|
||||
/* 80017D60 90 9F 0A 90 */ stw r4, 0xa90(r31)
|
||||
/* 80017D64 90 7F 0A 8C */ stw r3, 0xa8c(r31)
|
||||
/* 80017D68 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 80017D6C 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 80017D70 7C 08 03 A6 */ mtlr r0
|
||||
/* 80017D74 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 80017D78 4E 80 00 20 */ blr
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
lbl_80017CEC:
|
||||
/* 80017CEC 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 80017CF0 7C 08 02 A6 */ mflr r0
|
||||
/* 80017CF4 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 80017CF8 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 80017CFC 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 80017D00 38 80 0A 8C */ li r4, 0xa8c
|
||||
/* 80017D04 4B FF FF B1 */ bl mDoMemCdRWm_CalcCheckSumGameData__FPvUl
|
||||
/* 80017D08 80 1F 0A 8C */ lwz r0, 0xa8c(r31)
|
||||
/* 80017D0C 80 BF 0A 90 */ lwz r5, 0xa90(r31)
|
||||
/* 80017D10 7C 84 2A 78 */ xor r4, r4, r5
|
||||
/* 80017D14 7C 60 02 78 */ xor r0, r3, r0
|
||||
/* 80017D18 7C 80 03 78 */ or r0, r4, r0
|
||||
/* 80017D1C 7C 00 00 34 */ cntlzw r0, r0
|
||||
/* 80017D20 54 03 DE 3E */ rlwinm r3, r0, 0x1b, 0x18, 0x1f
|
||||
/* 80017D24 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 80017D28 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 80017D2C 7C 08 03 A6 */ mtlr r0
|
||||
/* 80017D30 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 80017D34 4E 80 00 20 */ blr
|
||||
|
|
@ -28,8 +28,8 @@ struct ResTIMG { /* Acts as the header to image data. Usually texture data immed
|
|||
/* 0x18 */ u8 mipmapCount;
|
||||
/* 0x19 */ u8 unknown;
|
||||
/* 0x1A */ s16 LODBias;
|
||||
/* 0x1B */ u32 texDataOffset;
|
||||
}; // Size: 0x1C
|
||||
/* 0x1C */ u32 texDataOffset;
|
||||
}; // Size: 0x20
|
||||
|
||||
class JUTTexture {
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -0,0 +1,74 @@
|
|||
#ifndef CARD_H
|
||||
#define CARD_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#define CARD_ERROR_UNLOCKED 1
|
||||
#define CARD_ERROR_READY 0
|
||||
#define CARD_ERROR_BUSY -1
|
||||
#define CARD_ERROR_WRONGDEVICE -2
|
||||
#define CARD_ERROR_NOCARD -3
|
||||
#define CARD_ERROR_NOFILE -4
|
||||
#define CARD_ERROR_IOERROR -5
|
||||
#define CARD_ERROR_BROKEN -6
|
||||
#define CARD_ERROR_EXIST -7
|
||||
#define CARD_ERROR_NOENT -8
|
||||
#define CARD_ERROR_INSSPACE -9
|
||||
#define CARD_ERROR_NOPERM -10
|
||||
#define CARD_ERROR_LIMIT -11
|
||||
#define CARD_ERROR_NAMETOOLONG -12
|
||||
#define CARD_ERROR_ENCODING -13
|
||||
#define CARD_ERROR_CANCELED -14
|
||||
#define CARD_ERROR_FATAL_ERROR -128
|
||||
|
||||
struct CARDFileInfo {
|
||||
/* 0x00 */ s32 channel;
|
||||
/* 0x04 */ s32 fileNo;
|
||||
/* 0x08 */ u32 offset;
|
||||
/* 0x0C */ u16 iconIndex;
|
||||
/* 0x0E */ u16 commentIndex;
|
||||
/* 0x10 */ u16 field_0x10;
|
||||
}; // Size: 0x10
|
||||
|
||||
struct CARDStat {
|
||||
/* 0x00 */ char filename[32];
|
||||
/* 0x20 */ u32 length;
|
||||
/* 0x24 */ u32 time;
|
||||
/* 0x28 */ char gamecode[4];
|
||||
/* 0x2C */ char company[2];
|
||||
/* 0x2E */ u8 gameVersion;
|
||||
/* 0x2F */ u8 bannerFormat;
|
||||
/* 0x30 */ u32 iconAddress;
|
||||
/* 0x34 */ u16 iconFormat;
|
||||
/* 0x36 */ u16 iconSpeed;
|
||||
/* 0x38 */ u32 commentAddress;
|
||||
/* 0x3C */ u32 bannerOffset;
|
||||
/* 0x40 */ u32 bannerPalOffset;
|
||||
/* 0x44 */ u32 iconOffset[8];
|
||||
/* 0x64 */ u32 iconPalOffset;
|
||||
/* 0x68 */ u32 dataOffset;
|
||||
}; // Size: 0x6C
|
||||
|
||||
typedef void (*CARDCallback)(s32 channel, s32 result);
|
||||
|
||||
extern "C" {
|
||||
s32 CARDInit(void);
|
||||
s32 CARDFreeBlocks(s32 channel, s32* free_bytes, s32* free_files);
|
||||
s32 CARDCheck(s32 channel);
|
||||
s32 CARDProbe(s32 channel);
|
||||
s32 CARDProbeEx(s32 channel, s32* mem_size, s32* sect_size);
|
||||
s32 CARDMount(s32 channel, void* buffer, CARDCallback callback);
|
||||
s32 CARDUnmount(s32 channel);
|
||||
s32 CARDFormat(s32 channel);
|
||||
s32 CARDOpen(s32 channel, const char* filename, CARDFileInfo* file);
|
||||
s32 CARDClose(CARDFileInfo* file);
|
||||
s32 CARDCreate(s32 channel, const char* filename, u32 size, CARDFileInfo* file);
|
||||
s32 CARDRead(CARDFileInfo* file, void* buffer, u32 size, u32 offset);
|
||||
s32 CARDWrite(CARDFileInfo* file, void* buffer, u32 size, u32 offset);
|
||||
s32 CARDGetStatus(s32 channel, s32 fileNo, CARDStat* stat);
|
||||
s32 CARDSetStatus(s32 channel, s32 fileNo, CARDStat* stat);
|
||||
s32 CARDGetSerialNo(s32 channel, u32* serial1, u32* serial2);
|
||||
};
|
||||
|
||||
|
||||
#endif /* CARD_H */
|
||||
|
|
@ -1,38 +1,43 @@
|
|||
#ifndef MTX_H
|
||||
#define MTX_H
|
||||
|
||||
#include "dolphin/mtx/mtx44.h"
|
||||
#include "dolphin/mtx/quat.h"
|
||||
#include "dolphin/mtx/vec.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
typedef float Mtx[3][4];
|
||||
typedef float Mtx33[3][3];
|
||||
typedef float Mtx23[2][3];
|
||||
typedef f32 Mtx[3][4];
|
||||
typedef f32 Mtx33[3][3];
|
||||
typedef f32 Mtx23[2][3];
|
||||
typedef f32 (*MtxP)[4];
|
||||
typedef const f32 (*CMtxP)[4]; // Change name later?
|
||||
|
||||
extern "C" {
|
||||
void PSMTXIdentity(Mtx matrix);
|
||||
void PSMTXIdentity(Mtx m);
|
||||
void PSMTXCopy(const Mtx src, Mtx dst);
|
||||
void PSMTXConcat(const Mtx src_a, const Mtx src_b, Mtx dst);
|
||||
u32 PSMTXInverse(const Mtx src, Mtx dst);
|
||||
void PSMTXRotRad(Mtx matrix, u8 axis, float rad);
|
||||
void PSMTXRotTrig(Mtx matrix, u8 axis, float sin, float cos);
|
||||
double __PSMTXRotAxisRadInternal(double param_1, double param_2, int param_3, int param_4);
|
||||
void PSMTXRotAxisRad(Mtx matrix, const Vec* axis, float rad);
|
||||
void PSMTXTrans(Mtx matrix, float x_trans, float y_trans, float z_trans);
|
||||
void PSMTXTransApply(const Mtx src, Mtx dst, float x, float y, float z);
|
||||
void PSMTXScale(Mtx matrix, float x_scale, float y_scale, float z_scale);
|
||||
void PSMTXScaleApply(const Mtx src, Mtx dst, float x_scale, float y_scale, float z_scale);
|
||||
void PSMTXQuat(Mtx matrix, const Quaternion* quat);
|
||||
void PSMTXMultVec(const Mtx matrix, const Vec* src, Vec* dst);
|
||||
void PSMTXMultVecSR(const Mtx matrix, const Vec* src, Vec* dst);
|
||||
void PSMTXConcat(const Mtx a, const Mtx b, Mtx ab);
|
||||
u32 PSMTXInverse(const Mtx src, Mtx inv);
|
||||
void PSMTXRotRad(Mtx m, u8 axis, f32 rad);
|
||||
void PSMTXRotTrig(Mtx m, u8 axis, f32 sin, f32 cos);
|
||||
f64 __PSMTXRotAxisRadInternal(f64 param_1, f64 param_2, int param_3, int param_4);
|
||||
void PSMTXRotAxisRad(Mtx m, const Vec* axis, f32 rad);
|
||||
void PSMTXTrans(Mtx m, f32 x_trans, f32 y_trans, f32 z_trans);
|
||||
void PSMTXTransApply(const Mtx src, Mtx dst, f32 x, f32 y, f32 z);
|
||||
void PSMTXScale(Mtx m, f32 x_scale, f32 y_scale, f32 z_scale);
|
||||
void PSMTXScaleApply(const Mtx src, Mtx dst, f32 x_scale, f32 y_scale, f32 z_scale);
|
||||
void PSMTXQuat(Mtx m, const Quaternion* q);
|
||||
void PSMTXMultVec(const Mtx m, const Vec* src, Vec* dst);
|
||||
void PSMTXMultVecSR(const Mtx m, const Vec* src, Vec* dst);
|
||||
void PSMTXMultVec(const Mtx m, const Vec* src, Vec* dst);
|
||||
void PSMTXMultVecArray(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count);
|
||||
void PSMTXMultVecSR(const Mtx m, const Vec* src, Vec* dst);
|
||||
void PSMTXMultVecArraySR(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count);
|
||||
|
||||
void C_MTXLookAt(Mtx param_1, const Vec* param_2, const Vec* param_3, const Vec* param_4);
|
||||
void C_MTXLightPerspective(Mtx matrix, float fov_y, float aspect, float scale_s, float scale_t,
|
||||
float trans_s, float trans_t);
|
||||
void C_MTXLightOrtho(Mtx matrix, float top, float bottom, float left, float right, float scale_s,
|
||||
float scale_t, float trans_s, float trans_t);
|
||||
void C_MTXLookAt(Mtx m, const Vec* camPos, const Vec* camUp, const Vec* target);
|
||||
void C_MTXLightPerspective(Mtx m, f32 fovY, f32 aspect, f32 scale_s, f32 scale_t, f32 trans_s,
|
||||
f32 trans_t);
|
||||
void C_MTXLightOrtho(Mtx m, f32 top, f32 bottom, f32 left, f32 right, f32 scale_s, f32 scale_t,
|
||||
f32 trans_s, f32 trans_t);
|
||||
}
|
||||
|
||||
#endif /* MTX_H */
|
||||
|
|
|
|||
|
|
@ -6,10 +6,8 @@
|
|||
typedef float Mtx44[4][4];
|
||||
|
||||
extern "C" {
|
||||
|
||||
void C_MTXPerspective(Mtx44 matrix, float fov_y, float aspect, float near, float far);
|
||||
void C_MTXOrtho(Mtx44 matrix, float top, float bottom, float left, float right, float near,
|
||||
float far);
|
||||
void C_MTXPerspective(Mtx44 m, f32 fovy, f32 aspect, f32 near, f32 far);
|
||||
void C_MTXOrtho(Mtx44 m, f32 top, f32 bottom, f32 left, f32 right, f32 near, f32 far);
|
||||
}
|
||||
|
||||
#endif /* MTX44_H */
|
||||
|
|
|
|||
|
|
@ -5,13 +5,13 @@
|
|||
#include "dolphin/types.h"
|
||||
|
||||
struct Quaternion {
|
||||
float x, y, z, w;
|
||||
f32 x, y, z, w;
|
||||
};
|
||||
|
||||
extern "C" {
|
||||
void PSQUATMultiply(const Quaternion* src_a, const Quaternion* src_b, Quaternion* dst);
|
||||
void C_QUATRotAxisRad(Quaternion* quat, const Vec* axis, float rad);
|
||||
void C_QUATSlerp(const Quaternion* p, const Quaternion* q, Quaternion* r, float t);
|
||||
void C_QUATRotAxisRad(Quaternion* q, const Vec* axis, f32 rad);
|
||||
void C_QUATSlerp(const Quaternion* p, const Quaternion* q, Quaternion* r, f32 t);
|
||||
}
|
||||
|
||||
#endif /* QUAT_H */
|
||||
|
|
|
|||
|
|
@ -4,13 +4,13 @@
|
|||
#include "dolphin/types.h"
|
||||
|
||||
struct Vec {
|
||||
float x, y, z;
|
||||
float GetX() const { return x; }
|
||||
float GetY() const { return y; }
|
||||
float GetZ() const { return z; }
|
||||
float getXDiff(const Vec* other) const { return x - other->x; }
|
||||
float getYDiff(const Vec* other) const { return y - other->y; }
|
||||
float getZDiff(const Vec* other) const { return z - other->z; }
|
||||
f32 x, y, z;
|
||||
f32 GetX() const { return x; }
|
||||
f32 GetY() const { return y; }
|
||||
f32 GetZ() const { return z; }
|
||||
f32 getXDiff(const Vec* other) const { return x - other->x; }
|
||||
f32 getYDiff(const Vec* other) const { return y - other->y; }
|
||||
f32 getZDiff(const Vec* other) const { return z - other->z; }
|
||||
void set(f32 pX, f32 pY, f32 pZ) {
|
||||
x = pX;
|
||||
y = pY;
|
||||
|
|
@ -23,6 +23,10 @@ struct Vec {
|
|||
}
|
||||
};
|
||||
|
||||
typedef Vec* VecPtr;
|
||||
typedef Vec Point3d;
|
||||
typedef Vec* Point3dPtr;
|
||||
|
||||
struct SVec {
|
||||
s16 x, y, z;
|
||||
|
||||
|
|
@ -34,18 +38,19 @@ struct SVec {
|
|||
};
|
||||
|
||||
extern "C" {
|
||||
void PSVECAdd(const Vec* src_a, const Vec* src_b, Vec* dst);
|
||||
void PSVECSubtract(const Vec* a, const Vec* b, Vec* dst);
|
||||
void PSVECScale(const Vec* src, Vec* dst, float scale);
|
||||
void PSVECNormalize(const Vec* src, Vec* dst);
|
||||
float PSVECSquareMag(const Vec* vec);
|
||||
float PSVECMag(const Vec* data);
|
||||
float PSVECDotProduct(const Vec* a, const Vec* b);
|
||||
void PSVECCrossProduct(const Vec* src_a, const Vec* src_b, Vec* dst);
|
||||
void C_VECHalfAngle(const Vec* incident, const Vec* line_of_sight, Vec* out_half);
|
||||
void C_VECReflect(const Vec* src, const Vec* surface_normal, Vec* dst);
|
||||
float PSVECSquareDistance(const Vec* a, const Vec* b);
|
||||
float PSVECDistance(const Vec* a, const Vec* b);
|
||||
void PSVECAdd(const Vec* a, const Vec* b, Vec* ab);
|
||||
void PSVECSubtract(const Vec* a, const Vec* b, Vec* a_b);
|
||||
void PSVECScale(const Vec* src, Vec* dst, f32 scale);
|
||||
void PSVECNormalize(const Vec* src, Vec* unit);
|
||||
f32 PSVECSquareMag(const Vec* v);
|
||||
f32 PSVECMag(const Vec* v);
|
||||
f32 PSVECDotProduct(const Vec* a, const Vec* b);
|
||||
void PSVECCrossProduct(const Vec* a, const Vec* b, Vec* axb);
|
||||
f32 PSVECSquareDistance(const Vec* a, const Vec* b);
|
||||
f32 PSVECDistance(const Vec* a, const Vec* b);
|
||||
|
||||
void C_VECHalfAngle(const Vec* a, const Vec* b, Vec* half);
|
||||
void C_VECReflect(const Vec* src, const Vec* normal, Vec* dst);
|
||||
}
|
||||
|
||||
#endif /* VEC_H */
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ struct OSAlarmLink {
|
|||
/* 0x4 */ OSAlarm* next;
|
||||
};
|
||||
|
||||
typedef void (*OSAlarmHandler)(OSAlarm*, OSContext*);
|
||||
typedef void (*OSAlarmHandler)(OSAlarm* alarm, OSContext* context);
|
||||
|
||||
struct OSAlarm {
|
||||
/* 0x00 */ OSAlarmHandler handler;
|
||||
|
|
@ -157,13 +157,13 @@ OSThread* OSGetCurrentThread(void);
|
|||
s32 OSSuspendThread(OSThread* thread);
|
||||
s32 OSSetThreadPriority(OSThread* thread, u32 pri);
|
||||
s32 OSGetThreadPriority(OSThread* thread);
|
||||
s32 OSCreateThread(OSThread* thread, void* func, void* param, void* stack, u32 stackSize,
|
||||
int param_6, int param_7);
|
||||
BOOL OSCreateThread(OSThread* thread, void* func, void* param, void* stack, u32 stackSize,
|
||||
int priority, int attr);
|
||||
void OSCancelThread(OSThread* thread);
|
||||
void OSDetachThread(OSThread* thread);
|
||||
s32 OSResumeThread(OSThread* thread);
|
||||
void OSExitThread(void* exit_val);
|
||||
bool OSIsThreadSuspended(OSThread* thread);
|
||||
BOOL OSIsThreadSuspended(OSThread* thread);
|
||||
BOOL OSIsThreadTerminated(OSThread* thread);
|
||||
OSSwitchThreadCallback OSSetSwitchThreadCallback(OSSwitchThreadCallback callback);
|
||||
|
||||
|
|
@ -197,21 +197,19 @@ OSTick OSGetTick(void);
|
|||
|
||||
u32 OSGetArenaLo();
|
||||
u32 OSGetArenaHi();
|
||||
u32 OSInitAlloc(u32 low, u32 high, int param_3);
|
||||
void OSSetArenaLo(u32 param_1);
|
||||
void OSSetArenaHi(u32 param_1);
|
||||
u32 OSInitAlloc(u32 low, u32 high, int maxHeaps);
|
||||
void OSSetArenaLo(u32 newLo);
|
||||
void OSSetArenaHi(u32 newHi);
|
||||
void* OSAllocFromArenaLo(u32 size, int alignment);
|
||||
|
||||
// void OSCancelAlarm(OSAlarm *alarm);
|
||||
|
||||
void OSInitMutex(OSMutex* mutex);
|
||||
void OSLockMutex(OSMutex* mutex);
|
||||
void OSTryLockMutex(OSMutex* mutex);
|
||||
BOOL OSTryLockMutex(OSMutex* mutex);
|
||||
void OSUnlockMutex(OSMutex* mutex);
|
||||
|
||||
s32 OSDisableInterrupts();
|
||||
s32 OSEnableInterrupts();
|
||||
s32 OSRestoreInterrupts(s32 level);
|
||||
BOOL OSDisableInterrupts();
|
||||
BOOL OSEnableInterrupts();
|
||||
BOOL OSRestoreInterrupts(s32 level);
|
||||
|
||||
void OSResetSystem(s32 param_1, u32 param_2, s32 param_3);
|
||||
|
||||
|
|
@ -223,9 +221,13 @@ void OSReportInit__Fv(void); // needed for inline asm
|
|||
|
||||
u8* OSGetStackPointer(void);
|
||||
|
||||
void OSCreateAlarm(OSAlarm*);
|
||||
void OSCancelAlarm(OSAlarm*);
|
||||
void OSSetAlarm(OSAlarm*, OSTime, OSAlarmHandler);
|
||||
void OSCreateAlarm(OSAlarm* alarm);
|
||||
void OSCancelAlarm(OSAlarm* alarm);
|
||||
void OSSetAlarm(OSAlarm* alarm, OSTime time, OSAlarmHandler handler);
|
||||
|
||||
void OSInitCond(OSCond* cond);
|
||||
void OSWaitCond(OSCond* cond, OSMutex* mutex);
|
||||
void OSSignalCond(OSCond* cond);
|
||||
|
||||
inline s16 __OSf32tos16(register f32 inF) {
|
||||
register s16 out;
|
||||
|
|
|
|||
|
|
@ -4,47 +4,59 @@
|
|||
#include "dolphin/os/OS.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "global.h"
|
||||
#include "m_Do/m_Do_MemCardRWmng.h"
|
||||
|
||||
class mDoMemCd_Ctrl_c {
|
||||
public:
|
||||
enum CardCommand {
|
||||
CARD_NO_COMMAND,
|
||||
CARD_RESTORE,
|
||||
CARD_STORE,
|
||||
CARD_FORMAT,
|
||||
CARD_ATTACH,
|
||||
CARD_DETACH,
|
||||
};
|
||||
|
||||
/* 8001672C */ mDoMemCd_Ctrl_c();
|
||||
/* 80016730 */ void ThdInit();
|
||||
/* 800167D0 */ void main();
|
||||
/* 80016894 */ void update();
|
||||
/* 800169B4 */ void load();
|
||||
/* 80016A0C */ void restore();
|
||||
/* 80016AB0 */ void LoadSync(void*, u32, u32);
|
||||
/* 80016AB0 */ s32 LoadSync(void*, u32, u32);
|
||||
/* 80016B58 */ void save(void*, u32, u32);
|
||||
/* 80016BD4 */ void store();
|
||||
/* 80016CE0 */ void SaveSync();
|
||||
/* 80016D74 */ void getStatus(u32);
|
||||
/* 80016CE0 */ s32 SaveSync();
|
||||
/* 80016D74 */ u32 getStatus(u32);
|
||||
/* 80016E58 */ void command_format();
|
||||
/* 80016EA8 */ void format();
|
||||
/* 80016F2C */ void FormatSync();
|
||||
/* 80016F2C */ s32 FormatSync();
|
||||
/* 80016FB8 */ void attach();
|
||||
/* 800170B8 */ void command_attach();
|
||||
/* 80017110 */ void detach();
|
||||
/* 80017148 */ void mount();
|
||||
/* 80017274 */ void loadfile();
|
||||
/* 800172D4 */ void checkspace();
|
||||
/* 80017148 */ s32 mount();
|
||||
/* 80017274 */ s32 loadfile();
|
||||
/* 800172D4 */ s32 checkspace();
|
||||
/* 80017360 */ void setCardState(s32);
|
||||
|
||||
/* 0x0000 */ u8 field_0x0[0x1FBC];
|
||||
/* 0x1FBC */ u8 field_0x1fbc;
|
||||
/* 0x0000 */ u8 mData[0x1FBC];
|
||||
/* 0x1FBC */ u8 mChannel;
|
||||
/* 0x1FBD */ u8 mCopyToPos;
|
||||
/* 0x1FBE */ u8 mProbeStat;
|
||||
/* 0x1FC0 */ u32 field_0x1fc0;
|
||||
/* 0x1FC4 */ u32 field_0x1fc4;
|
||||
/* 0x1FC8 */ u32 field_0x1fc8;
|
||||
/* 0x1FCC */ OSMutex field_0x1fcc;
|
||||
/* 0x1FE4 */ OSCond field_0x1fe4;
|
||||
/* 0x1FC0 */ s32 mCardCommand;
|
||||
/* 0x1FC4 */ s32 mCardState;
|
||||
/* 0x1FC8 */ s32 field_0x1fc8;
|
||||
/* 0x1FCC */ OSMutex mMutex;
|
||||
/* 0x1FE4 */ OSCond mCond;
|
||||
/* 0x1FEC */ u32 mNandState;
|
||||
/* 0x1FF0 */ u64 field_0x1ff0;
|
||||
/* 0x1FF0 */ u64 mSerialNo;
|
||||
/* 0x1FF8 */ u32 mDataVersion;
|
||||
}; // Size: 0x2000
|
||||
|
||||
STATIC_ASSERT(sizeof(mDoMemCd_Ctrl_c) == 8192);
|
||||
|
||||
static int mDoMemCd_main(void*);
|
||||
|
||||
extern mDoMemCd_Ctrl_c g_mDoMemCd_control;
|
||||
|
||||
#endif /* M_DO_M_DO_MEMCARD_H */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,30 @@
|
|||
#ifndef M_DO_M_DO_MEMCARDRWMNG_H
|
||||
#define M_DO_M_DO_MEMCARDRWMNG_H
|
||||
|
||||
#include "dolphin/card/card.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
struct mDoMemCdRWm_HeaderData {
|
||||
/* 0x0000 */ u8 mBannerTexData[0xC00];
|
||||
/* 0x0C00 */ u8 mBannerPalData[0x200];
|
||||
/* 0x0E00 */ u8 mIconTexData0[0x400];
|
||||
/* 0x1200 */ u8 mIconTexData1[0x400];
|
||||
/* 0x1600 */ u8 mIconTexData2[0x400];
|
||||
/* 0x1A00 */ u8 mIconTexData3[0x400];
|
||||
/* 0x1E00 */ u8 mIconTexData4[0x400];
|
||||
/* 0x2200 */ u8 mIconPalData[0x200];
|
||||
/* 0x2400 */ char mTitle[0x20];
|
||||
/* 0x2420 */ char mComment[0x20];
|
||||
};
|
||||
|
||||
s32 mDoMemCdRWm_Restore(CARDFileInfo* param_0, void* param_1, u32 param_2);
|
||||
s32 mDoMemCdRWm_Store(CARDFileInfo* param_0, void* param_1, u32 param_2);
|
||||
static void mDoMemCdRWm_BuildHeader(mDoMemCdRWm_HeaderData* header);
|
||||
static void mDoMemCdRWm_SetCardStat(CARDFileInfo* file);
|
||||
static BOOL mDoMemCdRWm_CheckCardStat(CARDFileInfo* file);
|
||||
static u32 mDoMemCdRWm_CalcCheckSum(void* data, u32 size);
|
||||
static u64 mDoMemCdRWm_CalcCheckSumGameData(void* data, u32 size);
|
||||
BOOL mDoMemCdRWm_TestCheckSumGameData(void* data);
|
||||
void mDoMemCdRWm_SetCheckSumGameData(u8* data, u8 dataNum);
|
||||
|
||||
#endif /* M_DO_M_DO_MEMCARDRWMNG_H */
|
||||
|
|
|
|||
|
|
@ -114,7 +114,6 @@ extern "C" void setGX__12JPABaseShapeCFP18JPAEmitterWorkData();
|
|||
extern "C" void func_8027EEB0();
|
||||
extern "C" void alloc__7JKRHeapFUliP7JKRHeap();
|
||||
extern "C" void load__10JUTTextureF11_GXTexMapID();
|
||||
extern "C" void PSMTXMultVecArraySR();
|
||||
extern "C" void _savegpr_22();
|
||||
extern "C" void _savegpr_24();
|
||||
extern "C" void _savegpr_28();
|
||||
|
|
|
|||
|
|
@ -4,27 +4,12 @@
|
|||
//
|
||||
|
||||
#include "m_Do/m_Do_MemCard.h"
|
||||
#include "JSystem/JKernel/JKRThread.h"
|
||||
#include "MSL_C/MSL_Common/Src/string.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct mDoRst {
|
||||
static u8 mResetData[4 + 4 /* padding */];
|
||||
};
|
||||
|
||||
struct JKRThread {
|
||||
/* 802D16B8 */ JKRThread(OSThread*, int);
|
||||
/* 802D1758 */ ~JKRThread();
|
||||
};
|
||||
|
||||
struct JKRHeap {
|
||||
/* 802CE438 */ void becomeCurrentHeap();
|
||||
};
|
||||
|
||||
struct CARDFileInfo {};
|
||||
#include "m_Do/m_Do_Ext.h"
|
||||
#include "m_Do/m_Do_Reset.h"
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
|
|
@ -59,27 +44,12 @@ extern "C" extern char const* const m_Do_m_Do_MemCard__stringBase0;
|
|||
// External References:
|
||||
//
|
||||
|
||||
SECTION_INIT void memcpy();
|
||||
extern "C" void mDoExt_getAssertHeap__Fv();
|
||||
extern "C" void mDoMemCdRWm_Store__FP12CARDFileInfoPvUl();
|
||||
extern "C" void mDoMemCdRWm_Restore__FP12CARDFileInfoPvUl();
|
||||
extern "C" void becomeCurrentHeap__7JKRHeapFv();
|
||||
extern "C" void __ct__9JKRThreadFP8OSThreadi();
|
||||
extern "C" void __dt__9JKRThreadFv();
|
||||
extern "C" void OSInitCond();
|
||||
extern "C" void OSWaitCond();
|
||||
extern "C" void OSSignalCond();
|
||||
extern "C" void CARDInit();
|
||||
extern "C" void CARDFreeBlocks();
|
||||
extern "C" void CARDCheck();
|
||||
extern "C" void CARDProbe();
|
||||
extern "C" void CARDProbeEx();
|
||||
extern "C" void CARDMount();
|
||||
extern "C" void CARDUnmount();
|
||||
extern "C" void CARDFormat();
|
||||
extern "C" void CARDOpen();
|
||||
extern "C" void CARDClose();
|
||||
extern "C" void CARDCreate();
|
||||
extern "C" void _savegpr_27();
|
||||
extern "C" void _savegpr_28();
|
||||
extern "C" void _restgpr_27();
|
||||
|
|
@ -91,178 +61,359 @@ extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */];
|
|||
//
|
||||
|
||||
/* 8001672C-80016730 01106C 0004+00 1/1 0/0 0/0 .text __ct__15mDoMemCd_Ctrl_cFv */
|
||||
mDoMemCd_Ctrl_c::mDoMemCd_Ctrl_c() {
|
||||
/* empty function */
|
||||
}
|
||||
mDoMemCd_Ctrl_c::mDoMemCd_Ctrl_c() {}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803DFC20-803E0C20 00C940 1000+00 1/1 0/0 0/0 .bss MemCardStack */
|
||||
static u8 MemCardStack[4096];
|
||||
|
||||
/* 803E0C20-803E0F40 00D940 0318+08 1/1 0/0 0/0 .bss MemCardThread */
|
||||
static u8 MemCardThread[792 + 8 /* padding */];
|
||||
static OSThread MemCardThread;
|
||||
|
||||
/* 80016730-800167D0 011070 00A0+00 0/0 1/1 0/0 .text ThdInit__15mDoMemCd_Ctrl_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCd_Ctrl_c::ThdInit() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCard/ThdInit__15mDoMemCd_Ctrl_cFv.s"
|
||||
void mDoMemCd_Ctrl_c::ThdInit() {
|
||||
CARDInit();
|
||||
mCopyToPos = 0;
|
||||
mProbeStat = 2;
|
||||
mCardState = 0;
|
||||
mCardCommand = CARD_NO_COMMAND;
|
||||
mChannel = 0;
|
||||
|
||||
OSInitMutex(&mMutex);
|
||||
OSInitCond(&mCond);
|
||||
|
||||
int priority = OSGetThreadPriority(OSGetCurrentThread());
|
||||
OSCreateThread(&MemCardThread, mDoMemCd_main, NULL, MemCardStack + sizeof(MemCardStack),
|
||||
sizeof(MemCardStack), priority + 1, 1);
|
||||
OSResumeThread(&MemCardThread);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 800167D0-80016894 011110 00C4+00 1/1 0/0 0/0 .text main__15mDoMemCd_Ctrl_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCd_Ctrl_c::main() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCard/main__15mDoMemCd_Ctrl_cFv.s"
|
||||
void mDoMemCd_Ctrl_c::main() {
|
||||
do {
|
||||
OSLockMutex(&mMutex);
|
||||
while (mCardCommand == CARD_NO_COMMAND) {
|
||||
OSWaitCond(&mCond, &mMutex);
|
||||
}
|
||||
OSUnlockMutex(&mMutex);
|
||||
|
||||
switch (mCardCommand) {
|
||||
case CARD_RESTORE:
|
||||
restore();
|
||||
break;
|
||||
case CARD_STORE:
|
||||
store();
|
||||
break;
|
||||
case CARD_FORMAT:
|
||||
format();
|
||||
break;
|
||||
case CARD_ATTACH:
|
||||
attach();
|
||||
break;
|
||||
case CARD_DETACH:
|
||||
detach();
|
||||
break;
|
||||
}
|
||||
|
||||
OSLockMutex(&mMutex);
|
||||
mCardCommand = CARD_NO_COMMAND;
|
||||
OSUnlockMutex(&mMutex);
|
||||
} while (true);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80016894-800169B4 0111D4 0120+00 0/0 1/1 0/0 .text update__15mDoMemCd_Ctrl_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCd_Ctrl_c::update() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCard/update__15mDoMemCd_Ctrl_cFv.s"
|
||||
void mDoMemCd_Ctrl_c::update() {
|
||||
if (mDoRst::isReset()) {
|
||||
OSLockMutex(&mMutex);
|
||||
mCardCommand = CARD_DETACH;
|
||||
mProbeStat = 3;
|
||||
OSUnlockMutex(&mMutex);
|
||||
OSSignalCond(&mCond);
|
||||
} else if (getStatus(0) != 14) {
|
||||
if (CARDProbe(0) && getStatus(0) == 0) {
|
||||
OSLockMutex(&mMutex);
|
||||
mProbeStat = 0;
|
||||
mCardState = 13;
|
||||
mCardCommand = CARD_ATTACH;
|
||||
OSUnlockMutex(&mMutex);
|
||||
OSSignalCond(&mCond);
|
||||
} else if (!CARDProbe(0) && getStatus(0) != 0) {
|
||||
OSLockMutex(&mMutex);
|
||||
mProbeStat = 1;
|
||||
mCardState = 13;
|
||||
mCardCommand = CARD_DETACH;
|
||||
OSUnlockMutex(&mMutex);
|
||||
OSSignalCond(&mCond);
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 800169B4-80016A0C 0112F4 0058+00 0/0 2/2 0/0 .text load__15mDoMemCd_Ctrl_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCd_Ctrl_c::load() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCard/load__15mDoMemCd_Ctrl_cFv.s"
|
||||
void mDoMemCd_Ctrl_c::load() {
|
||||
if (OSTryLockMutex(&mMutex)) {
|
||||
field_0x1fc8 = 0;
|
||||
mCardCommand = CARD_RESTORE;
|
||||
OSUnlockMutex(&mMutex);
|
||||
OSSignalCond(&mCond);
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803743F8-803743F8 000A58 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DEAD static char const* const stringBase_803743F8 = "gczelda2";
|
||||
/* @stringBase0 padding */
|
||||
SECTION_DEAD static char const* const pad_80374401 = "\0\0\0\0\0\0";
|
||||
#pragma pop
|
||||
|
||||
/* 80016A0C-80016AB0 01134C 00A4+00 1/1 0/0 0/0 .text restore__15mDoMemCd_Ctrl_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCd_Ctrl_c::restore() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCard/restore__15mDoMemCd_Ctrl_cFv.s"
|
||||
void mDoMemCd_Ctrl_c::restore() {
|
||||
CARDFileInfo file;
|
||||
field_0x1fc8 = 0;
|
||||
|
||||
s32 card_state = CARDOpen(mChannel, "gczelda2", &file);
|
||||
if (card_state == CARD_ERROR_READY) {
|
||||
if (!mDoMemCdRWm_Restore(&file, this, sizeof(mData))) {
|
||||
mCardState = 3;
|
||||
} else {
|
||||
setCardState(card_state);
|
||||
}
|
||||
CARDClose(&file);
|
||||
} else {
|
||||
setCardState(card_state);
|
||||
}
|
||||
|
||||
field_0x1fc8 = 1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80016AB0-80016B58 0113F0 00A8+00 0/0 2/2 0/0 .text LoadSync__15mDoMemCd_Ctrl_cFPvUlUl
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCd_Ctrl_c::LoadSync(void* param_0, u32 param_1, u32 param_2) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCard/LoadSync__15mDoMemCd_Ctrl_cFPvUlUl.s"
|
||||
s32 mDoMemCd_Ctrl_c::LoadSync(void* buffer, u32 size, u32 index) {
|
||||
int ret = 0;
|
||||
|
||||
if (field_0x1fc8 == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (OSTryLockMutex(&mMutex)) {
|
||||
if (mCardState == 3) {
|
||||
memcpy(buffer, &mData[index], size);
|
||||
mCardState = 1;
|
||||
ret = 1;
|
||||
} else {
|
||||
mCardState = 2;
|
||||
ret = 2;
|
||||
}
|
||||
OSUnlockMutex(&mMutex);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80016B58-80016BD4 011498 007C+00 0/0 2/2 0/0 .text save__15mDoMemCd_Ctrl_cFPvUlUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCd_Ctrl_c::save(void* param_0, u32 param_1, u32 param_2) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCard/save__15mDoMemCd_Ctrl_cFPvUlUl.s"
|
||||
void mDoMemCd_Ctrl_c::save(void* buffer, u32 size, u32 index) {
|
||||
if (OSTryLockMutex(&mMutex)) {
|
||||
memcpy(&mData[index], buffer, size);
|
||||
field_0x1fc8 = 0;
|
||||
mCardCommand = CARD_STORE;
|
||||
OSUnlockMutex(&mMutex);
|
||||
OSSignalCond(&mCond);
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80016BD4-80016CE0 011514 010C+00 1/1 0/0 0/0 .text store__15mDoMemCd_Ctrl_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCd_Ctrl_c::store() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCard/store__15mDoMemCd_Ctrl_cFv.s"
|
||||
void mDoMemCd_Ctrl_c::store() {
|
||||
CARDFileInfo file;
|
||||
s32 card_state;
|
||||
field_0x1fc8 = 0;
|
||||
|
||||
if (mCardState == 2) {
|
||||
card_state = CARDCreate(mChannel, "gczelda2", 0x8000, &file);
|
||||
if (card_state == CARD_ERROR_READY || card_state == CARD_ERROR_EXIST) {
|
||||
mCardState = 1;
|
||||
} else {
|
||||
setCardState(card_state);
|
||||
}
|
||||
}
|
||||
|
||||
if (mCardState == 1) {
|
||||
card_state = CARDOpen(mChannel, "gczelda2", &file);
|
||||
if (card_state == CARD_ERROR_READY) {
|
||||
card_state = mDoMemCdRWm_Store(&file, this, sizeof(mData));
|
||||
if (card_state != CARD_ERROR_READY) {
|
||||
setCardState(card_state);
|
||||
} else {
|
||||
mCardState = 4;
|
||||
}
|
||||
CARDClose(&file);
|
||||
} else {
|
||||
setCardState(card_state);
|
||||
}
|
||||
} else {
|
||||
setCardState(card_state);
|
||||
}
|
||||
|
||||
field_0x1fc8 = 1;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80016CE0-80016D74 011620 0094+00 0/0 6/6 0/0 .text SaveSync__15mDoMemCd_Ctrl_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCd_Ctrl_c::SaveSync() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCard/SaveSync__15mDoMemCd_Ctrl_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
s32 mDoMemCd_Ctrl_c::SaveSync() {
|
||||
int ret = 0;
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803A34F8-803A3530 -00001 0038+00 1/1 0/0 0/0 .data @3770 */
|
||||
SECTION_DATA static void* lit_3770[14] = {
|
||||
(void*)(((char*)getStatus__15mDoMemCd_Ctrl_cFUl) + 0x74),
|
||||
(void*)(((char*)getStatus__15mDoMemCd_Ctrl_cFUl) + 0x4C),
|
||||
(void*)(((char*)getStatus__15mDoMemCd_Ctrl_cFUl) + 0x54),
|
||||
(void*)(((char*)getStatus__15mDoMemCd_Ctrl_cFUl) + 0x5C),
|
||||
(void*)(((char*)getStatus__15mDoMemCd_Ctrl_cFUl) + 0x64),
|
||||
(void*)(((char*)getStatus__15mDoMemCd_Ctrl_cFUl) + 0x6C),
|
||||
(void*)(((char*)getStatus__15mDoMemCd_Ctrl_cFUl) + 0x7C),
|
||||
(void*)(((char*)getStatus__15mDoMemCd_Ctrl_cFUl) + 0x84),
|
||||
(void*)(((char*)getStatus__15mDoMemCd_Ctrl_cFUl) + 0x8C),
|
||||
(void*)(((char*)getStatus__15mDoMemCd_Ctrl_cFUl) + 0x94),
|
||||
(void*)(((char*)getStatus__15mDoMemCd_Ctrl_cFUl) + 0x9C),
|
||||
(void*)(((char*)getStatus__15mDoMemCd_Ctrl_cFUl) + 0xA4),
|
||||
(void*)(((char*)getStatus__15mDoMemCd_Ctrl_cFUl) + 0xAC),
|
||||
(void*)(((char*)getStatus__15mDoMemCd_Ctrl_cFUl) + 0xB4),
|
||||
};
|
||||
if (field_0x1fc8 == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (OSTryLockMutex(&mMutex)) {
|
||||
if (mCardState == 4) {
|
||||
mCardState = 1;
|
||||
ret = 1;
|
||||
} else if (mCardState == 1) {
|
||||
ret = 0;
|
||||
} else {
|
||||
ret = 2;
|
||||
}
|
||||
OSUnlockMutex(&mMutex);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 80016D74-80016E58 0116B4 00E4+00 2/1 2/2 0/0 .text getStatus__15mDoMemCd_Ctrl_cFUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCd_Ctrl_c::getStatus(u32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCard/getStatus__15mDoMemCd_Ctrl_cFUl.s"
|
||||
u32 mDoMemCd_Ctrl_c::getStatus(u32) {
|
||||
u32 status;
|
||||
if (OSTryLockMutex(&mMutex)) {
|
||||
switch (mCardState) {
|
||||
case 1:
|
||||
status = 2;
|
||||
break;
|
||||
case 2:
|
||||
status = 1;
|
||||
break;
|
||||
case 3:
|
||||
status = 3;
|
||||
break;
|
||||
case 4:
|
||||
status = 4;
|
||||
break;
|
||||
case 5:
|
||||
status = 5;
|
||||
break;
|
||||
case 0:
|
||||
status = 0;
|
||||
break;
|
||||
case 6:
|
||||
status = 7;
|
||||
break;
|
||||
case 7:
|
||||
status = 6;
|
||||
break;
|
||||
case 8:
|
||||
status = 11;
|
||||
break;
|
||||
case 9:
|
||||
status = 12;
|
||||
break;
|
||||
case 10:
|
||||
status = 9;
|
||||
break;
|
||||
case 11:
|
||||
status = 10;
|
||||
break;
|
||||
case 12:
|
||||
status = 8;
|
||||
break;
|
||||
case 13:
|
||||
status = 14;
|
||||
break;
|
||||
}
|
||||
|
||||
OSUnlockMutex(&mMutex);
|
||||
return status;
|
||||
}
|
||||
|
||||
return 14;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80016E58-80016EA8 011798 0050+00 0/0 2/2 0/0 .text command_format__15mDoMemCd_Ctrl_cFv
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCd_Ctrl_c::command_format() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCard/command_format__15mDoMemCd_Ctrl_cFv.s"
|
||||
void mDoMemCd_Ctrl_c::command_format() {
|
||||
if (OSTryLockMutex(&mMutex)) {
|
||||
mCardCommand = CARD_FORMAT;
|
||||
OSUnlockMutex(&mMutex);
|
||||
OSSignalCond(&mCond);
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80016EA8-80016F2C 0117E8 0084+00 1/1 0/0 0/0 .text format__15mDoMemCd_Ctrl_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCd_Ctrl_c::format() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCard/format__15mDoMemCd_Ctrl_cFv.s"
|
||||
void mDoMemCd_Ctrl_c::format() {
|
||||
field_0x1fc8 = 0;
|
||||
|
||||
s32 card_state = CARDFormat(mChannel);
|
||||
if (OSTryLockMutex(&mMutex)) {
|
||||
if (card_state == CARD_ERROR_READY) {
|
||||
mCardState = 5;
|
||||
} else {
|
||||
setCardState(card_state);
|
||||
}
|
||||
|
||||
field_0x1fc8 = 1;
|
||||
OSUnlockMutex(&mMutex);
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80016F2C-80016FB8 01186C 008C+00 0/0 2/2 0/0 .text FormatSync__15mDoMemCd_Ctrl_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCd_Ctrl_c::FormatSync() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCard/FormatSync__15mDoMemCd_Ctrl_cFv.s"
|
||||
s32 mDoMemCd_Ctrl_c::FormatSync() {
|
||||
int ret = 0;
|
||||
|
||||
if (field_0x1fc8 == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (OSTryLockMutex(&mMutex)) {
|
||||
if (mCardState != 13) {
|
||||
if (mCardState == 5) {
|
||||
mCardState = 2;
|
||||
ret = 1;
|
||||
} else {
|
||||
ret = 2;
|
||||
}
|
||||
}
|
||||
OSUnlockMutex(&mMutex);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80016FB8-800170B8 0118F8 0100+00 1/1 0/0 0/0 .text attach__15mDoMemCd_Ctrl_cFv */
|
||||
// switch has case issues
|
||||
#ifdef NONMATCHING
|
||||
void mDoMemCd_Ctrl_c::attach() {
|
||||
s32 mem_size;
|
||||
s32 sect_size;
|
||||
|
||||
s32 card_state = CARDProbeEx(mChannel, &mem_size, §_size);
|
||||
if (card_state == CARD_ERROR_NOCARD) {
|
||||
mCardState = 0;
|
||||
} else if (card_state == CARD_ERROR_FATAL_ERROR) {
|
||||
mCardState = 12;
|
||||
} else if (card_state == CARD_ERROR_WRONGDEVICE) {
|
||||
mCardState = 10;
|
||||
} else if (sect_size != 0x2000) {
|
||||
mCardState = 11;
|
||||
} else {
|
||||
if (mount()) {
|
||||
if (loadfile()) {
|
||||
mCardState = 1;
|
||||
} else {
|
||||
switch (checkspace()) {
|
||||
case 0:
|
||||
mCardState = 2;
|
||||
break;
|
||||
case 1:
|
||||
mCardState = 8;
|
||||
break;
|
||||
case 2:
|
||||
mCardState = 9;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -271,27 +422,24 @@ asm void mDoMemCd_Ctrl_c::attach() {
|
|||
#include "asm/m_Do/m_Do_MemCard/attach__15mDoMemCd_Ctrl_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 800170B8-80017110 0119F8 0058+00 0/0 1/1 0/0 .text command_attach__15mDoMemCd_Ctrl_cFv
|
||||
*/
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCd_Ctrl_c::command_attach() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCard/command_attach__15mDoMemCd_Ctrl_cFv.s"
|
||||
void mDoMemCd_Ctrl_c::command_attach() {
|
||||
if (OSTryLockMutex(&mMutex)) {
|
||||
mCardState = 13;
|
||||
mCardCommand = CARD_ATTACH;
|
||||
OSUnlockMutex(&mMutex);
|
||||
OSSignalCond(&mCond);
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80017110-80017148 011A50 0038+00 1/1 0/0 0/0 .text detach__15mDoMemCd_Ctrl_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCd_Ctrl_c::detach() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCard/detach__15mDoMemCd_Ctrl_cFv.s"
|
||||
void mDoMemCd_Ctrl_c::detach() {
|
||||
CARDUnmount(mChannel);
|
||||
mCardState = 0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803A3530-803A3568 -00001 0038+00 1/1 0/0 0/0 .data @3850 */
|
||||
|
|
@ -313,33 +461,37 @@ SECTION_DATA static void* lit_3850[14] = {
|
|||
};
|
||||
|
||||
/* 803E0F40-803EAF40 00DC60 A000+00 1/1 0/0 0/0 .bss MemCardWorkArea0 */
|
||||
static u8 MemCardWorkArea0[40960];
|
||||
static u8 MemCardWorkArea0[5 * 8 * 1024] ALIGN_DECL(32);
|
||||
|
||||
/* 80017148-80017274 011A88 012C+00 2/1 0/0 0/0 .text mount__15mDoMemCd_Ctrl_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCd_Ctrl_c::mount() {
|
||||
asm s32 mDoMemCd_Ctrl_c::mount() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCard/mount__15mDoMemCd_Ctrl_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80017274-800172D4 011BB4 0060+00 1/1 0/0 0/0 .text loadfile__15mDoMemCd_Ctrl_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCd_Ctrl_c::loadfile() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCard/loadfile__15mDoMemCd_Ctrl_cFv.s"
|
||||
s32 mDoMemCd_Ctrl_c::loadfile() {
|
||||
CARDFileInfo file;
|
||||
|
||||
s32 card_state = CARDOpen(mChannel, "gczelda2", &file);
|
||||
if (card_state == CARD_ERROR_READY) {
|
||||
CARDClose(&file);
|
||||
return CARD_ERROR_UNLOCKED;
|
||||
} else {
|
||||
setCardState(card_state);
|
||||
return CARD_ERROR_READY;
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 800172D4-80017360 011C14 008C+00 1/1 0/0 0/0 .text checkspace__15mDoMemCd_Ctrl_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCd_Ctrl_c::checkspace() {
|
||||
asm s32 mDoMemCd_Ctrl_c::checkspace() {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCard/checkspace__15mDoMemCd_Ctrl_cFv.s"
|
||||
}
|
||||
|
|
@ -347,6 +499,31 @@ asm void mDoMemCd_Ctrl_c::checkspace() {
|
|||
|
||||
/* 80017360-8001741C 011CA0 00BC+00 5/5 0/0 0/0 .text setCardState__15mDoMemCd_Ctrl_cFl
|
||||
*/
|
||||
// cases aren't fully correct
|
||||
#ifdef NONMATCHING
|
||||
void mDoMemCd_Ctrl_c::setCardState(s32 param_0) {
|
||||
switch (param_0) {
|
||||
case CARD_ERROR_IOERROR:
|
||||
case CARD_ERROR_FATAL_ERROR:
|
||||
mCardState = 12;
|
||||
break;
|
||||
case CARD_ERROR_NOCARD:
|
||||
mCardState = 0;
|
||||
break;
|
||||
case CARD_ERROR_READY:
|
||||
if (CARDCheck(mChannel) != 0) {
|
||||
mCardState = 7;
|
||||
}
|
||||
break;
|
||||
case CARD_ERROR_ENCODING:
|
||||
mCardState = 6;
|
||||
break;
|
||||
case CARD_ERROR_BROKEN:
|
||||
mCardState = 2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -355,19 +532,20 @@ asm void mDoMemCd_Ctrl_c::setCardState(s32 param_0) {
|
|||
#include "asm/m_Do/m_Do_MemCard/setCardState__15mDoMemCd_Ctrl_cFl.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803EAF40-803ECF40 017C60 2000+00 2/2 27/27 0/0 .bss g_mDoMemCd_control */
|
||||
mDoMemCd_Ctrl_c g_mDoMemCd_control;
|
||||
|
||||
/* 8001741C-80017470 011D5C 0054+00 1/1 0/0 0/0 .text mDoMemCd_main__FPv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void mDoMemCd_main(void* param_0) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCard/mDoMemCd_main__FPv.s"
|
||||
static int mDoMemCd_main(void*) {
|
||||
{ JKRThread thread(OSGetCurrentThread(), 0); }
|
||||
|
||||
mDoExt_getAssertHeap()->becomeCurrentHeap();
|
||||
|
||||
g_mDoMemCd_control.main();
|
||||
return 0;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 803743F8-803743F8 000A58 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
|
|
|
|||
|
|
@ -4,16 +4,12 @@
|
|||
//
|
||||
|
||||
#include "m_Do/m_Do_MemCardRWmng.h"
|
||||
#include "MSL_C/MSL_Common/Src/printf.h"
|
||||
#include "MSL_C/MSL_Common/Src/string.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct mDoMemCdRWm_HeaderData {};
|
||||
|
||||
struct CARDFileInfo {};
|
||||
#include "m_Do/m_Do_MemCard.h"
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
|
|
@ -34,22 +30,10 @@ extern "C" extern char const* const m_Do_m_Do_MemCardRWmng__stringBase0;
|
|||
// External References:
|
||||
//
|
||||
|
||||
SECTION_INIT void memset();
|
||||
SECTION_INIT void memcpy();
|
||||
extern "C" void OSGetTime();
|
||||
extern "C" void OSTicksToCalendarTime();
|
||||
extern "C" void CARDRead();
|
||||
extern "C" void CARDWrite();
|
||||
extern "C" void CARDGetStatus();
|
||||
extern "C" void CARDSetStatus();
|
||||
extern "C" void CARDGetSerialNo();
|
||||
extern "C" void _savegpr_20();
|
||||
extern "C" void _savegpr_28();
|
||||
extern "C" void _restgpr_20();
|
||||
extern "C" void _restgpr_28();
|
||||
extern "C" void snprintf();
|
||||
extern "C" extern u8 g_mDoMemCd_control[8192];
|
||||
extern "C" extern u8 g_dComIfG_gameInfo[122384];
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
|
|
@ -57,50 +41,95 @@ extern "C" extern u8 g_dComIfG_gameInfo[122384];
|
|||
|
||||
/* ############################################################################################## */
|
||||
/* 803ECF40-803F0F40 019C60 4000+00 2/2 0/0 0/0 .bss sTmpBuf */
|
||||
static u8 sTmpBuf[16384];
|
||||
static u8 sTmpBuf[0x4000];
|
||||
|
||||
/* 80017498-8001769C 011DD8 0204+00 0/0 1/1 0/0 .text mDoMemCdRWm_Store__FP12CARDFileInfoPvUl */
|
||||
#ifdef NONMATCHING
|
||||
void mDoMemCdRWm_Store(CARDFileInfo* file, void* data, u32 length) {
|
||||
mDoMemCdRWm_BuildHeader((mDoMemCdRWm_HeaderData*)sTmpBuf);
|
||||
|
||||
s32 card_state = CARDWrite(file, sTmpBuf, sizeof(sTmpBuf), 0);
|
||||
if (card_state != CARD_ERROR_READY) {
|
||||
if (!mDoMemCdRWm_CheckCardStat(file)) {
|
||||
memset(sTmpBuf, 0, sizeof(sTmpBuf));
|
||||
|
||||
card_state = CARDWrite(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x4000);
|
||||
if (card_state == CARD_ERROR_READY) {
|
||||
return;
|
||||
}
|
||||
|
||||
card_state = CARDWrite(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x6000);
|
||||
if (card_state == CARD_ERROR_READY) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
memset(sTmpBuf, 0, sizeof(sTmpBuf));
|
||||
*(int*)(sTmpBuf + 4) = 6;
|
||||
memcpy(sTmpBuf + 8, data, length);
|
||||
*(int*)(sTmpBuf) = 0;
|
||||
u32 checksum = mDoMemCdRWm_CalcCheckSum(sTmpBuf, 0x1FFC);
|
||||
*(u32*)(sTmpBuf + 0x1FFC) = checksum;
|
||||
|
||||
if (CARDWrite(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x4000) == CARD_ERROR_READY &&
|
||||
CARDRead(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x4000) == CARD_ERROR_READY) {
|
||||
if (checksum == mDoMemCdRWm_CalcCheckSum(sTmpBuf, 0x1FFC)) {
|
||||
if (CARDWrite(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x6000) == CARD_ERROR_READY &&
|
||||
CARDRead(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x6000) == CARD_ERROR_READY) {
|
||||
if (checksum == mDoMemCdRWm_CalcCheckSum(sTmpBuf, 0x1FFC)) {
|
||||
mDoMemCdRWm_SetCardStat(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCdRWm_Store(CARDFileInfo* param_0, void* param_1, u32 param_2) {
|
||||
asm s32 mDoMemCdRWm_Store(CARDFileInfo* param_0, void* param_1, u32 param_2) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCardRWmng/mDoMemCdRWm_Store__FP12CARDFileInfoPvUl.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8001769C-8001787C 011FDC 01E0+00 0/0 1/1 0/0 .text mDoMemCdRWm_Restore__FP12CARDFileInfoPvUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCdRWm_Restore(CARDFileInfo* param_0, void* param_1, u32 param_2) {
|
||||
asm s32 mDoMemCdRWm_Restore(CARDFileInfo* param_0, void* param_1, u32 param_2) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCardRWmng/mDoMemCdRWm_Restore__FP12CARDFileInfoPvUl.s"
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80374408-80374408 000A68 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DEAD static char const* const stringBase_80374408 = "Zelda: Twilight Princess";
|
||||
SECTION_DEAD static char const* const stringBase_80374421 = "%d/%d Save Data";
|
||||
SECTION_DEAD static char const* const stringBase_80374431 = "zelda2_gc_banner.bti";
|
||||
SECTION_DEAD static char const* const stringBase_80374446 = "zelda2_gc_icon.bti";
|
||||
/* @stringBase0 padding */
|
||||
SECTION_DEAD static char const* const pad_80374459 = "\0\0\0\0\0\0";
|
||||
#pragma pop
|
||||
|
||||
/* 8001787C-800179E4 0121BC 0168+00 1/1 0/0 0/0 .text
|
||||
* mDoMemCdRWm_BuildHeader__FP22mDoMemCdRWm_HeaderData */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void mDoMemCdRWm_BuildHeader(mDoMemCdRWm_HeaderData* param_0) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCardRWmng/mDoMemCdRWm_BuildHeader__FP22mDoMemCdRWm_HeaderData.s"
|
||||
static void mDoMemCdRWm_BuildHeader(mDoMemCdRWm_HeaderData* header) {
|
||||
snprintf(header->mTitle, sizeof(header->mTitle), "Zelda: Twilight Princess");
|
||||
|
||||
OSCalendarTime time;
|
||||
OSTicksToCalendarTime(OSGetTime(), &time);
|
||||
snprintf(header->mComment, sizeof(header->mComment), "%d/%d Save Data", time.month + 1,
|
||||
time.day_of_month);
|
||||
|
||||
ResTIMG* banner_data =
|
||||
(ResTIMG*)g_dComIfG_gameInfo.play.mCardIconResArchive->getResource("zelda2_gc_banner.bti");
|
||||
ResTIMG* icon_data =
|
||||
(ResTIMG*)g_dComIfG_gameInfo.play.mCardIconResArchive->getResource("zelda2_gc_icon.bti");
|
||||
|
||||
memcpy(header->mBannerTexData, (u8*)banner_data + banner_data->texDataOffset,
|
||||
(banner_data->paletteCount * 2) + 0xC00);
|
||||
memcpy(header->mIconTexData0, (u8*)icon_data + icon_data->texDataOffset, 0x400);
|
||||
memcpy(header->mIconTexData1, (u8*)icon_data + icon_data->texDataOffset, 0x400);
|
||||
memcpy(header->mIconTexData2, (u8*)icon_data + icon_data->texDataOffset, 0x400);
|
||||
memcpy(header->mIconTexData3, (u8*)icon_data + icon_data->texDataOffset, 0x400);
|
||||
memcpy(header->mIconTexData4, (u8*)icon_data + icon_data->texDataOffset,
|
||||
(icon_data->paletteCount * 2) + 0x400);
|
||||
g_dComIfG_gameInfo.play.mCardIconResArchive->removeResourceAll();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 800179E4-80017B4C 012324 0168+00 1/1 0/0 0/0 .text mDoMemCdRWm_SetCardStat__FP12CARDFileInfo */
|
||||
#pragma push
|
||||
|
|
@ -117,50 +146,77 @@ static asm void mDoMemCdRWm_SetCardStat(CARDFileInfo* param_0) {
|
|||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void mDoMemCdRWm_CheckCardStat(CARDFileInfo* param_0) {
|
||||
static asm BOOL mDoMemCdRWm_CheckCardStat(CARDFileInfo* param_0) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCardRWmng/mDoMemCdRWm_CheckCardStat__FP12CARDFileInfo.s"
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80017C74-80017CB4 0125B4 0040+00 1/1 0/0 0/0 .text mDoMemCdRWm_CalcCheckSum__FPvUl */
|
||||
// matches except regalloc in the beginning
|
||||
#ifdef NONMATCHING
|
||||
static u32 mDoMemCdRWm_CalcCheckSum(void* data, u32 size) {
|
||||
u16 high = 0;
|
||||
u16 low = 0;
|
||||
|
||||
u16* d = (u16*)data;
|
||||
for (int i = 0; i < size / 2; i++) {
|
||||
high += *d;
|
||||
low += ~*d;
|
||||
d++;
|
||||
}
|
||||
|
||||
return high << 16 | low;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void mDoMemCdRWm_CalcCheckSum(void* param_0, u32 param_1) {
|
||||
static asm u32 mDoMemCdRWm_CalcCheckSum(void* param_0, u32 param_1) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCardRWmng/mDoMemCdRWm_CalcCheckSum__FPvUl.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 80017CB4-80017CEC 0125F4 0038+00 2/2 0/0 0/0 .text mDoMemCdRWm_CalcCheckSumGameData__FPvUl */
|
||||
// same beginning regalloc issue
|
||||
#ifdef NONMATCHING
|
||||
static u64 mDoMemCdRWm_CalcCheckSumGameData(void* data, u32 size) {
|
||||
u32 high = 0;
|
||||
u32 low = 0;
|
||||
|
||||
u8* d = (u8*)data;
|
||||
for (int i = 0; i < size; i++) {
|
||||
high += *d;
|
||||
low += ~*d;
|
||||
d++;
|
||||
}
|
||||
|
||||
return (u64)high << 32 | low;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void mDoMemCdRWm_CalcCheckSumGameData(void* param_0, u32 param_1) {
|
||||
static asm u64 mDoMemCdRWm_CalcCheckSumGameData(void* param_0, u32 param_1) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCardRWmng/mDoMemCdRWm_CalcCheckSumGameData__FPvUl.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 80017CEC-80017D38 01262C 004C+00 1/1 4/4 0/0 .text mDoMemCdRWm_TestCheckSumGameData__FPv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCdRWm_TestCheckSumGameData(void* param_0) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCardRWmng/mDoMemCdRWm_TestCheckSumGameData__FPv.s"
|
||||
BOOL mDoMemCdRWm_TestCheckSumGameData(void* data) {
|
||||
u64 checksum = mDoMemCdRWm_CalcCheckSumGameData(data, 0xA8C);
|
||||
return checksum == *(u64*)((u8*)data + 0xA8C);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80017D38-80017D7C 012678 0044+00 0/0 4/4 0/0 .text mDoMemCdRWm_SetCheckSumGameData__FPUcUc */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void mDoMemCdRWm_SetCheckSumGameData(u8* param_0, u8 param_1) {
|
||||
nofralloc
|
||||
#include "asm/m_Do/m_Do_MemCardRWmng/mDoMemCdRWm_SetCheckSumGameData__FPUcUc.s"
|
||||
void mDoMemCdRWm_SetCheckSumGameData(u8* data, u8 dataNum) {
|
||||
u8* file_ptr = data + (dataNum * 0xA94);
|
||||
|
||||
*(u64*)(file_ptr + 0xA8C) = mDoMemCdRWm_CalcCheckSumGameData(file_ptr, 0xA8C);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80374408-80374408 000A68 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
|
|
|
|||
Loading…
Reference in New Issue