mirror of https://github.com/zeldaret/tp.git
JKRAramHeap and JKRAramPiece (#53)
* renamed func_XXX to _savegpr_XX * renamed func_XXX to _restgpr_XX * renamed func_XXX to _savefpr_XX * renamed func_XXX to _restfpr_XX * cleanup functions.h and moved intrisics to mwcc.h * formatting * cleanup functions.h * Added include/ar/ARQ.h * renamed func_XXX to _savegpr_25 * removed JKRAramPiece asm files * JKRAramHeap OK, JKRAramPiece OK * formatting * more formatting * Added const and removed explicit this-> * fixed merge problems * changed mMessages[1] to mMessage * foramatting Co-authored-by: Julgodis <> Co-authored-by: Pheenoh <pheenoh@gmail.com>
This commit is contained in:
parent
ab8dee5c14
commit
4309c3db5b
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -13,13 +13,15 @@ public:
|
|||
JKRAramBlock* allocHead(u32, u8, JKRAramHeap*);
|
||||
JKRAramBlock* allocTail(u32, u8, JKRAramHeap*);
|
||||
|
||||
void* getAddress() { return (void*)this->mAddress; }
|
||||
void* getAddress() const { return (void*)mAddress; }
|
||||
|
||||
u32 getSize() { return this->mSize; }
|
||||
u32 getSize() const { return mSize; }
|
||||
|
||||
bool isTempMemory() { return this->mIsTempMemory; }
|
||||
u32 getFreeSize() const { return mFreeSize; }
|
||||
|
||||
void newGroupID(u8 groupId) { this->mGroupId = groupId; }
|
||||
bool isTempMemory() const { return mIsTempMemory; }
|
||||
|
||||
void newGroupID(u8 groupId) { mGroupId = groupId; }
|
||||
|
||||
public:
|
||||
JSULink<JKRAramBlock> mBlockLink;
|
||||
|
|
|
|||
|
|
@ -10,33 +10,38 @@ public:
|
|||
enum EAllocMode {
|
||||
HEAD = 0,
|
||||
TAIL = 1,
|
||||
|
||||
__EALLOCMODE_FORCE_ENUM_S32 = INT32_MAX,
|
||||
__EALLOCMODE_FORCE_ENUM_SIGNED = -1,
|
||||
};
|
||||
|
||||
public:
|
||||
JKRAramHeap(u32, u32);
|
||||
virtual ~JKRAramHeap(void);
|
||||
virtual ~JKRAramHeap();
|
||||
|
||||
void alloc(u32, EAllocMode);
|
||||
void allocFromHead(u32);
|
||||
void allocFromTail(u32);
|
||||
void getFreeSize(void);
|
||||
void getTotalFreeSize(void);
|
||||
JKRAramBlock* alloc(u32, EAllocMode);
|
||||
JKRAramBlock* allocFromHead(u32);
|
||||
JKRAramBlock* allocFromTail(u32);
|
||||
u32 getFreeSize(void);
|
||||
u32 getTotalFreeSize(void);
|
||||
// u32 getUsedSize(void);
|
||||
void dump(void);
|
||||
|
||||
u8 getCurrentGroupID() { return this->mGroupId; }
|
||||
u8 getCurrentGroupID() const { return mGroupId; }
|
||||
|
||||
JKRHeap* getMgrHeap() { return this->mHeap; }
|
||||
JKRHeap* getMgrHeap() const { return mHeap; }
|
||||
|
||||
void lock() { OSLockMutex(&this->mMutex); }
|
||||
private:
|
||||
void lock() { OSLockMutex(&mMutex); }
|
||||
|
||||
void unlock() { OSUnlockMutex(&this->mMutex); }
|
||||
void unlock() { OSUnlockMutex(&mMutex); }
|
||||
|
||||
public:
|
||||
OSMutex mMutex;
|
||||
JKRHeap* mHeap;
|
||||
u32 field_0x34;
|
||||
u32 field_0x38;
|
||||
u32 field_0x3c;
|
||||
u32 mHeadAddress;
|
||||
u32 mTailAddress;
|
||||
u32 mSize;
|
||||
u8 mGroupId;
|
||||
u8 padding_0x41[3];
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,55 +0,0 @@
|
|||
/* __ct__11JKRAramHeapFUlUl __ct__11JKRAramHeapFUlUl::__ct(unsigned long, unsigned long) */
|
||||
/* JKRAramHeap */
|
||||
/* 802D2E44 002CFD84 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
/* 802D2E48 002CFD88 7C 08 02 A6 */ mflr r0
|
||||
/* 802D2E4C 002CFD8C 90 01 00 24 */ stw r0, 0x24(r1)
|
||||
/* 802D2E50 002CFD90 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 802D2E54 002CFD94 48 08 F3 89 */ bl _savegpr_29
|
||||
/* 802D2E58 002CFD98 7C 7D 1B 78 */ mr r29, r3
|
||||
/* 802D2E5C 002CFD9C 7C 9E 23 78 */ mr r30, r4
|
||||
/* 802D2E60 002CFDA0 7C BF 2B 78 */ mr r31, r5
|
||||
/* 802D2E64 002CFDA4 4B FF E6 19 */ bl __ct__11JKRDisposerFv
|
||||
/* 802D2E68 002CFDA8 3C 60 80 3D */ lis r3, lbl_803CC168@ha
|
||||
/* 802D2E6C 002CFDAC 38 03 C1 68 */ addi r0, r3, lbl_803CC168@l
|
||||
/* 802D2E70 002CFDB0 90 1D 00 00 */ stw r0, 0(r29)
|
||||
/* 802D2E74 002CFDB4 38 7D 00 18 */ addi r3, r29, 0x18
|
||||
/* 802D2E78 002CFDB8 48 06 C1 91 */ bl OSInitMutex
|
||||
/* 802D2E7C 002CFDBC 7F A3 EB 78 */ mr r3, r29
|
||||
/* 802D2E80 002CFDC0 4B FF B9 BD */ bl findFromRoot__7JKRHeapFPv
|
||||
/* 802D2E84 002CFDC4 90 7D 00 30 */ stw r3, 0x30(r29)
|
||||
/* 802D2E88 002CFDC8 57 E0 00 34 */ rlwinm r0, r31, 0, 0, 0x1a
|
||||
/* 802D2E8C 002CFDCC 90 1D 00 3C */ stw r0, 0x3c(r29)
|
||||
/* 802D2E90 002CFDD0 38 1E 00 1F */ addi r0, r30, 0x1f
|
||||
/* 802D2E94 002CFDD4 54 00 00 34 */ rlwinm r0, r0, 0, 0, 0x1a
|
||||
/* 802D2E98 002CFDD8 90 1D 00 34 */ stw r0, 0x34(r29)
|
||||
/* 802D2E9C 002CFDDC 80 7D 00 34 */ lwz r3, 0x34(r29)
|
||||
/* 802D2EA0 002CFDE0 80 1D 00 3C */ lwz r0, 0x3c(r29)
|
||||
/* 802D2EA4 002CFDE4 7C 03 02 14 */ add r0, r3, r0
|
||||
/* 802D2EA8 002CFDE8 90 1D 00 38 */ stw r0, 0x38(r29)
|
||||
/* 802D2EAC 002CFDEC 38 00 00 FF */ li r0, 0xff
|
||||
/* 802D2EB0 002CFDF0 98 1D 00 40 */ stb r0, 0x40(r29)
|
||||
/* 802D2EB4 002CFDF4 38 60 00 24 */ li r3, 0x24
|
||||
/* 802D2EB8 002CFDF8 80 9D 00 30 */ lwz r4, 0x30(r29)
|
||||
/* 802D2EBC 002CFDFC 38 A0 00 00 */ li r5, 0
|
||||
/* 802D2EC0 002CFE00 4B FF BD D9 */ bl __nw__FUlP7JKRHeapi
|
||||
/* 802D2EC4 002CFE04 7C 64 1B 79 */ or. r4, r3, r3
|
||||
/* 802D2EC8 002CFE08 41 82 00 20 */ beq lbl_802D2EE8
|
||||
/* 802D2ECC 002CFE0C 80 9D 00 34 */ lwz r4, 0x34(r29)
|
||||
/* 802D2ED0 002CFE10 38 A0 00 00 */ li r5, 0
|
||||
/* 802D2ED4 002CFE14 80 DD 00 3C */ lwz r6, 0x3c(r29)
|
||||
/* 802D2ED8 002CFE18 38 E0 00 FF */ li r7, 0xff
|
||||
/* 802D2EDC 002CFE1C 39 00 00 00 */ li r8, 0
|
||||
/* 802D2EE0 002CFE20 48 00 04 25 */ bl __ct__12JKRAramBlockFUlUlUlUcb
|
||||
/* 802D2EE4 002CFE24 7C 64 1B 78 */ mr r4, r3
|
||||
lbl_802D2EE8:
|
||||
/* 802D2EE8 002CFE28 3C 60 80 43 */ lis r3, lbl_8043430C@ha
|
||||
/* 802D2EEC 002CFE2C 38 63 43 0C */ addi r3, r3, lbl_8043430C@l
|
||||
/* 802D2EF0 002CFE30 38 84 00 04 */ addi r4, r4, 4
|
||||
/* 802D2EF4 002CFE34 48 00 90 59 */ bl append__10JSUPtrListFP10JSUPtrLink
|
||||
/* 802D2EF8 002CFE38 7F A3 EB 78 */ mr r3, r29
|
||||
/* 802D2EFC 002CFE3C 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 802D2F00 002CFE40 48 08 F3 29 */ bl _restgpr_29
|
||||
/* 802D2F04 002CFE44 80 01 00 24 */ lwz r0, 0x24(r1)
|
||||
/* 802D2F08 002CFE48 7C 08 03 A6 */ mtlr r0
|
||||
/* 802D2F0C 002CFE4C 38 21 00 20 */ addi r1, r1, 0x20
|
||||
/* 802D2F10 002CFE50 4E 80 00 20 */ blr
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
/* alloc__11JKRAramHeapFUlQ211JKRAramHeap10EAllocMode __ct__11JKRAramHeapFUlUl::alloc(unsigned long, __ct__11JKRAramHeapFUlUl::EAllocMode) */
|
||||
/* JKRAramHeap_NS_alloc */
|
||||
/* 802D2FBC 002CFEFC 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
/* 802D2FC0 002CFF00 7C 08 02 A6 */ mflr r0
|
||||
/* 802D2FC4 002CFF04 90 01 00 24 */ stw r0, 0x24(r1)
|
||||
/* 802D2FC8 002CFF08 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 802D2FCC 002CFF0C 48 08 F2 11 */ bl _savegpr_29
|
||||
/* 802D2FD0 002CFF10 7C 7D 1B 78 */ mr r29, r3
|
||||
/* 802D2FD4 002CFF14 7C 9E 23 78 */ mr r30, r4
|
||||
/* 802D2FD8 002CFF18 7C BF 2B 78 */ mr r31, r5
|
||||
/* 802D2FDC 002CFF1C 38 7D 00 18 */ addi r3, r29, 0x18
|
||||
/* 802D2FE0 002CFF20 48 06 C0 61 */ bl OSLockMutex
|
||||
/* 802D2FE4 002CFF24 2C 1F 00 00 */ cmpwi r31, 0
|
||||
/* 802D2FE8 002CFF28 40 82 00 18 */ bne lbl_802D3000
|
||||
/* 802D2FEC 002CFF2C 7F A3 EB 78 */ mr r3, r29
|
||||
/* 802D2FF0 002CFF30 7F C4 F3 78 */ mr r4, r30
|
||||
/* 802D2FF4 002CFF34 48 00 00 41 */ bl allocFromHead__11JKRAramHeapFUl
|
||||
/* 802D2FF8 002CFF38 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 802D2FFC 002CFF3C 48 00 00 14 */ b lbl_802D3010
|
||||
lbl_802D3000:
|
||||
/* 802D3000 002CFF40 7F A3 EB 78 */ mr r3, r29
|
||||
/* 802D3004 002CFF44 7F C4 F3 78 */ mr r4, r30
|
||||
/* 802D3008 002CFF48 48 00 00 B5 */ bl allocFromTail__11JKRAramHeapFUl
|
||||
/* 802D300C 002CFF4C 7C 7F 1B 78 */ mr r31, r3
|
||||
lbl_802D3010:
|
||||
/* 802D3010 002CFF50 38 7D 00 18 */ addi r3, r29, 0x18
|
||||
/* 802D3014 002CFF54 48 06 C1 09 */ bl OSUnlockMutex
|
||||
/* 802D3018 002CFF58 7F E3 FB 78 */ mr r3, r31
|
||||
/* 802D301C 002CFF5C 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 802D3020 002CFF60 48 08 F2 09 */ bl _restgpr_29
|
||||
/* 802D3024 002CFF64 80 01 00 24 */ lwz r0, 0x24(r1)
|
||||
/* 802D3028 002CFF68 7C 08 03 A6 */ mtlr r0
|
||||
/* 802D302C 002CFF6C 38 21 00 20 */ addi r1, r1, 0x20
|
||||
/* 802D3030 002CFF70 4E 80 00 20 */ blr
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
/* allocFromHead__11JKRAramHeapFUl __ct__11JKRAramHeapFUlUl::allocFromHead(unsigned long) */
|
||||
/* JKRAramHeap_NS_allocFromHead */
|
||||
/* 802D3034 002CFF74 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 802D3038 002CFF78 7C 08 02 A6 */ mflr r0
|
||||
/* 802D303C 002CFF7C 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 802D3040 002CFF80 7C 66 1B 78 */ mr r6, r3
|
||||
/* 802D3044 002CFF84 38 04 00 1F */ addi r0, r4, 0x1f
|
||||
/* 802D3048 002CFF88 54 04 00 34 */ rlwinm r4, r0, 0, 0, 0x1a
|
||||
/* 802D304C 002CFF8C 39 00 FF FF */ li r8, -1
|
||||
/* 802D3050 002CFF90 38 60 00 00 */ li r3, 0
|
||||
/* 802D3054 002CFF94 3C A0 80 43 */ lis r5, lbl_8043430C@ha
|
||||
/* 802D3058 002CFF98 80 E5 43 0C */ lwz r7, lbl_8043430C@l(r5)
|
||||
/* 802D305C 002CFF9C 48 00 00 30 */ b lbl_802D308C
|
||||
lbl_802D3060:
|
||||
/* 802D3060 002CFFA0 80 A7 00 00 */ lwz r5, 0(r7)
|
||||
/* 802D3064 002CFFA4 80 05 00 1C */ lwz r0, 0x1c(r5)
|
||||
/* 802D3068 002CFFA8 7C 00 20 40 */ cmplw r0, r4
|
||||
/* 802D306C 002CFFAC 41 80 00 1C */ blt lbl_802D3088
|
||||
/* 802D3070 002CFFB0 7C 08 00 40 */ cmplw r8, r0
|
||||
/* 802D3074 002CFFB4 40 81 00 14 */ ble lbl_802D3088
|
||||
/* 802D3078 002CFFB8 7C 08 03 78 */ mr r8, r0
|
||||
/* 802D307C 002CFFBC 7C A3 2B 78 */ mr r3, r5
|
||||
/* 802D3080 002CFFC0 7C 00 20 40 */ cmplw r0, r4
|
||||
/* 802D3084 002CFFC4 41 82 00 10 */ beq lbl_802D3094
|
||||
lbl_802D3088:
|
||||
/* 802D3088 002CFFC8 80 E7 00 0C */ lwz r7, 0xc(r7)
|
||||
lbl_802D308C:
|
||||
/* 802D308C 002CFFCC 28 07 00 00 */ cmplwi r7, 0
|
||||
/* 802D3090 002CFFD0 40 82 FF D0 */ bne lbl_802D3060
|
||||
lbl_802D3094:
|
||||
/* 802D3094 002CFFD4 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 802D3098 002CFFD8 41 82 00 10 */ beq lbl_802D30A8
|
||||
/* 802D309C 002CFFDC 88 A6 00 40 */ lbz r5, 0x40(r6)
|
||||
/* 802D30A0 002CFFE0 48 00 03 95 */ bl allocHead__12JKRAramBlockFUlUcP11JKRAramHeap
|
||||
/* 802D30A4 002CFFE4 48 00 00 08 */ b lbl_802D30AC
|
||||
lbl_802D30A8:
|
||||
/* 802D30A8 002CFFE8 38 60 00 00 */ li r3, 0
|
||||
lbl_802D30AC:
|
||||
/* 802D30AC 002CFFEC 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 802D30B0 002CFFF0 7C 08 03 A6 */ mtlr r0
|
||||
/* 802D30B4 002CFFF4 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 802D30B8 002CFFF8 4E 80 00 20 */ blr
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
/* allocFromTail__11JKRAramHeapFUl __ct__11JKRAramHeapFUlUl::allocFromTail(unsigned long) */
|
||||
/* JKRAramHeap_NS_allocFromTail */
|
||||
/* 802D30BC 002CFFFC 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 802D30C0 002D0000 7C 08 02 A6 */ mflr r0
|
||||
/* 802D30C4 002D0004 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 802D30C8 002D0008 7C 66 1B 78 */ mr r6, r3
|
||||
/* 802D30CC 002D000C 38 04 00 1F */ addi r0, r4, 0x1f
|
||||
/* 802D30D0 002D0010 54 04 00 34 */ rlwinm r4, r0, 0, 0, 0x1a
|
||||
/* 802D30D4 002D0014 38 60 00 00 */ li r3, 0
|
||||
/* 802D30D8 002D0018 3C A0 80 43 */ lis r5, lbl_8043430C@ha
|
||||
/* 802D30DC 002D001C 38 A5 43 0C */ addi r5, r5, lbl_8043430C@l
|
||||
/* 802D30E0 002D0020 80 E5 00 04 */ lwz r7, 4(r5)
|
||||
/* 802D30E4 002D0024 48 00 00 20 */ b lbl_802D3104
|
||||
lbl_802D30E8:
|
||||
/* 802D30E8 002D0028 80 A7 00 00 */ lwz r5, 0(r7)
|
||||
/* 802D30EC 002D002C 80 05 00 1C */ lwz r0, 0x1c(r5)
|
||||
/* 802D30F0 002D0030 7C 00 20 40 */ cmplw r0, r4
|
||||
/* 802D30F4 002D0034 41 80 00 0C */ blt lbl_802D3100
|
||||
/* 802D30F8 002D0038 7C A3 2B 78 */ mr r3, r5
|
||||
/* 802D30FC 002D003C 48 00 00 10 */ b lbl_802D310C
|
||||
lbl_802D3100:
|
||||
/* 802D3100 002D0040 80 E7 00 08 */ lwz r7, 8(r7)
|
||||
lbl_802D3104:
|
||||
/* 802D3104 002D0044 28 07 00 00 */ cmplwi r7, 0
|
||||
/* 802D3108 002D0048 40 82 FF E0 */ bne lbl_802D30E8
|
||||
lbl_802D310C:
|
||||
/* 802D310C 002D004C 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 802D3110 002D0050 41 82 00 10 */ beq lbl_802D3120
|
||||
/* 802D3114 002D0054 88 A6 00 40 */ lbz r5, 0x40(r6)
|
||||
/* 802D3118 002D0058 48 00 03 B9 */ bl allocTail__12JKRAramBlockFUlUcP11JKRAramHeap
|
||||
/* 802D311C 002D005C 48 00 00 08 */ b lbl_802D3124
|
||||
lbl_802D3120:
|
||||
/* 802D3120 002D0060 38 60 00 00 */ li r3, 0
|
||||
lbl_802D3124:
|
||||
/* 802D3124 002D0064 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 802D3128 002D0068 7C 08 03 A6 */ mtlr r0
|
||||
/* 802D312C 002D006C 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 802D3130 002D0070 4E 80 00 20 */ blr
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
/* getFreeSize__11JKRAramHeapFv __ct__11JKRAramHeapFUlUl::getFreeSize(void) */
|
||||
/* JKRAramHeap_NS_getFreeSize */
|
||||
/* 802D3134 002D0074 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 802D3138 002D0078 7C 08 02 A6 */ mflr r0
|
||||
/* 802D313C 002D007C 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 802D3140 002D0080 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 802D3144 002D0084 93 C1 00 08 */ stw r30, 8(r1)
|
||||
/* 802D3148 002D0088 7C 7E 1B 78 */ mr r30, r3
|
||||
/* 802D314C 002D008C 3B E0 00 00 */ li r31, 0
|
||||
/* 802D3150 002D0090 38 7E 00 18 */ addi r3, r30, 0x18
|
||||
/* 802D3154 002D0094 48 06 BE ED */ bl OSLockMutex
|
||||
/* 802D3158 002D0098 3C 60 80 43 */ lis r3, lbl_8043430C@ha
|
||||
/* 802D315C 002D009C 38 63 43 0C */ addi r3, r3, lbl_8043430C@l
|
||||
/* 802D3160 002D00A0 80 63 00 00 */ lwz r3, 0(r3)
|
||||
/* 802D3164 002D00A4 48 00 00 1C */ b lbl_802D3180
|
||||
lbl_802D3168:
|
||||
/* 802D3168 002D00A8 80 83 00 00 */ lwz r4, 0(r3)
|
||||
/* 802D316C 002D00AC 80 04 00 1C */ lwz r0, 0x1c(r4)
|
||||
/* 802D3170 002D00B0 7C 00 F8 40 */ cmplw r0, r31
|
||||
/* 802D3174 002D00B4 40 81 00 08 */ ble lbl_802D317C
|
||||
/* 802D3178 002D00B8 7C 1F 03 78 */ mr r31, r0
|
||||
lbl_802D317C:
|
||||
/* 802D317C 002D00BC 80 63 00 0C */ lwz r3, 0xc(r3)
|
||||
lbl_802D3180:
|
||||
/* 802D3180 002D00C0 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 802D3184 002D00C4 40 82 FF E4 */ bne lbl_802D3168
|
||||
/* 802D3188 002D00C8 38 7E 00 18 */ addi r3, r30, 0x18
|
||||
/* 802D318C 002D00CC 48 06 BF 91 */ bl OSUnlockMutex
|
||||
/* 802D3190 002D00D0 7F E3 FB 78 */ mr r3, r31
|
||||
/* 802D3194 002D00D4 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 802D3198 002D00D8 83 C1 00 08 */ lwz r30, 8(r1)
|
||||
/* 802D319C 002D00DC 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 802D31A0 002D00E0 7C 08 03 A6 */ mtlr r0
|
||||
/* 802D31A4 002D00E4 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 802D31A8 002D00E8 4E 80 00 20 */ blr
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
/* getTotalFreeSize__11JKRAramHeapFv __ct__11JKRAramHeapFUlUl::getTotalFreeSize(void) */
|
||||
/* JKRAramHeap_NS_getTotalFreeSize */
|
||||
/* 802D31AC 002D00EC 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 802D31B0 002D00F0 7C 08 02 A6 */ mflr r0
|
||||
/* 802D31B4 002D00F4 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 802D31B8 002D00F8 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 802D31BC 002D00FC 93 C1 00 08 */ stw r30, 8(r1)
|
||||
/* 802D31C0 002D0100 7C 7E 1B 78 */ mr r30, r3
|
||||
/* 802D31C4 002D0104 3B E0 00 00 */ li r31, 0
|
||||
/* 802D31C8 002D0108 38 7E 00 18 */ addi r3, r30, 0x18
|
||||
/* 802D31CC 002D010C 48 06 BE 75 */ bl OSLockMutex
|
||||
/* 802D31D0 002D0110 3C 60 80 43 */ lis r3, lbl_8043430C@ha
|
||||
/* 802D31D4 002D0114 80 83 43 0C */ lwz r4, lbl_8043430C@l(r3)
|
||||
/* 802D31D8 002D0118 48 00 00 14 */ b lbl_802D31EC
|
||||
lbl_802D31DC:
|
||||
/* 802D31DC 002D011C 80 64 00 00 */ lwz r3, 0(r4)
|
||||
/* 802D31E0 002D0120 80 03 00 1C */ lwz r0, 0x1c(r3)
|
||||
/* 802D31E4 002D0124 7F FF 02 14 */ add r31, r31, r0
|
||||
/* 802D31E8 002D0128 80 84 00 0C */ lwz r4, 0xc(r4)
|
||||
lbl_802D31EC:
|
||||
/* 802D31EC 002D012C 28 04 00 00 */ cmplwi r4, 0
|
||||
/* 802D31F0 002D0130 40 82 FF EC */ bne lbl_802D31DC
|
||||
/* 802D31F4 002D0134 38 7E 00 18 */ addi r3, r30, 0x18
|
||||
/* 802D31F8 002D0138 48 06 BF 25 */ bl OSUnlockMutex
|
||||
/* 802D31FC 002D013C 7F E3 FB 78 */ mr r3, r31
|
||||
/* 802D3200 002D0140 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 802D3204 002D0144 83 C1 00 08 */ lwz r30, 8(r1)
|
||||
/* 802D3208 002D0148 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 802D320C 002D014C 7C 08 03 A6 */ mtlr r0
|
||||
/* 802D3210 002D0150 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 802D3214 002D0154 4E 80 00 20 */ blr
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
/* dump__11JKRAramHeapFv __ct__11JKRAramHeapFUlUl::dump(void) */
|
||||
/* JKRAramHeap_NS_dump */
|
||||
/* 802D3218 002D0158 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 802D321C 002D015C 7C 08 02 A6 */ mflr r0
|
||||
/* 802D3220 002D0160 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 802D3224 002D0164 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 802D3228 002D0168 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 802D322C 002D016C 38 7F 00 18 */ addi r3, r31, 0x18
|
||||
/* 802D3230 002D0170 48 06 BE 11 */ bl OSLockMutex
|
||||
/* 802D3234 002D0174 3C 60 80 43 */ lis r3, lbl_8043430C@ha
|
||||
/* 802D3238 002D0178 38 63 43 0C */ addi r3, r3, lbl_8043430C@l
|
||||
/* 802D323C 002D017C 80 63 00 00 */ lwz r3, 0(r3)
|
||||
/* 802D3240 002D0180 48 00 00 08 */ b lbl_802D3248
|
||||
lbl_802D3244:
|
||||
/* 802D3244 002D0184 80 63 00 0C */ lwz r3, 0xc(r3)
|
||||
lbl_802D3248:
|
||||
/* 802D3248 002D0188 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 802D324C 002D018C 40 82 FF F8 */ bne lbl_802D3244
|
||||
/* 802D3250 002D0190 38 7F 00 18 */ addi r3, r31, 0x18
|
||||
/* 802D3254 002D0194 48 06 BE C9 */ bl OSUnlockMutex
|
||||
/* 802D3258 002D0198 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 802D325C 002D019C 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 802D3260 002D01A0 7C 08 03 A6 */ mtlr r0
|
||||
/* 802D3264 002D01A4 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 802D3268 002D01A8 4E 80 00 20 */ blr
|
||||
|
|
@ -1,25 +1,65 @@
|
|||
#ifndef __JKRARAMPIECE_H__
|
||||
#define __JKRARAMPIECE_H__
|
||||
|
||||
#include "JSystem/JSupport/JSUList/JSUList.h"
|
||||
#include "ar/ARQ.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "os/OS.h"
|
||||
|
||||
class JKRAMCommand {
|
||||
public:
|
||||
JKRAMCommand(void);
|
||||
~JKRAMCommand();
|
||||
};
|
||||
extern OSMutex lbl_80434330;
|
||||
|
||||
class JKRAramBlock;
|
||||
class JKRDecompCommand;
|
||||
class JKRAMCommand {
|
||||
public:
|
||||
typedef void (*AsyncCallback)(u32);
|
||||
|
||||
JKRAMCommand();
|
||||
~JKRAMCommand();
|
||||
|
||||
public:
|
||||
/* 0x00 */ ARQRequest mRequest;
|
||||
/* 0x20 */ JSULink<JKRAMCommand> mPieceLink;
|
||||
/* 0x30 */ JSULink<JKRAMCommand> field_0x30;
|
||||
|
||||
/* 0x40 */ s32 mTransferDirection;
|
||||
/* 0x44 */ u32 mDataLength;
|
||||
/* 0x48 */ u32 mSrc;
|
||||
/* 0x4C */ u32 mDst;
|
||||
/* 0x50 */ JKRAramBlock* mAramBlock;
|
||||
/* 0x54 */ u32 field_0x54;
|
||||
/* 0x58 */ AsyncCallback mCallback;
|
||||
/* 0x5C */ OSMessageQueue* field_0x5C;
|
||||
/* 0x60 */ s32 field_0x60;
|
||||
/* 0x64 */ JKRDecompCommand* mDecompCommand;
|
||||
/* 0x68 */ OSMessageQueue mMessageQueue;
|
||||
/* 0x88 */ OSMessage mMessage;
|
||||
/* 0x8C */ void* field_0x8C;
|
||||
/* 0x90 */ void* field_0x90;
|
||||
/* 0x94 */ void* field_0x94;
|
||||
};
|
||||
|
||||
class JKRAramPiece {
|
||||
public:
|
||||
static void prepareCommand(int, u32, u32, u32, JKRAramBlock*, void (*)(u32));
|
||||
struct Message {
|
||||
s32 field_0x00;
|
||||
JKRAMCommand* command;
|
||||
};
|
||||
|
||||
public:
|
||||
static JKRAMCommand* prepareCommand(int, u32, u32, u32, JKRAramBlock*,
|
||||
JKRAMCommand::AsyncCallback);
|
||||
static void sendCommand(JKRAMCommand*);
|
||||
|
||||
static void orderAsync(int, u32, u32, u32, JKRAramBlock*, void (*)(u32));
|
||||
static void sync(JKRAMCommand*, int);
|
||||
static void orderSync(int, u32, u32, u32, JKRAramBlock*);
|
||||
static JKRAMCommand* orderAsync(int, u32, u32, u32, JKRAramBlock*, JKRAMCommand::AsyncCallback);
|
||||
static BOOL sync(JKRAMCommand*, int);
|
||||
static BOOL orderSync(int, u32, u32, u32, JKRAramBlock*);
|
||||
static void startDMA(JKRAMCommand*);
|
||||
static void doneDMA(u32);
|
||||
|
||||
private:
|
||||
static void lock() { OSLockMutex(&lbl_80434330); }
|
||||
static void unlock() { OSUnlockMutex(&lbl_80434330); }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,35 +0,0 @@
|
|||
/* prepareCommand__12JKRAramPieceFiUlUlUlP12JKRAramBlockPFUl_v JKRAramPiece::prepareCommand(int, unsigned long, unsigned long, unsigned long, JKRAramBlock *, void (*)(unsigned long)) */
|
||||
/* JKRAramPiece_NS_prepareCommand */
|
||||
/* 802D3574 002D04B4 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
/* 802D3578 002D04B8 7C 08 02 A6 */ mflr r0
|
||||
/* 802D357C 002D04BC 90 01 00 24 */ stw r0, 0x24(r1)
|
||||
/* 802D3580 002D04C0 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 802D3584 002D04C4 48 08 EC 4D */ bl _savegpr_26
|
||||
/* 802D3588 002D04C8 7C 7A 1B 78 */ mr r26, r3
|
||||
/* 802D358C 002D04CC 7C 9B 23 78 */ mr r27, r4
|
||||
/* 802D3590 002D04D0 7C BC 2B 78 */ mr r28, r5
|
||||
/* 802D3594 002D04D4 7C DD 33 78 */ mr r29, r6
|
||||
/* 802D3598 002D04D8 7C FE 3B 78 */ mr r30, r7
|
||||
/* 802D359C 002D04DC 7D 1F 43 78 */ mr r31, r8
|
||||
/* 802D35A0 002D04E0 38 60 00 98 */ li r3, 0x98
|
||||
/* 802D35A4 002D04E4 80 8D 8D F0 */ lwz r4, lbl_80451370-_SDA_BASE_(r13)
|
||||
/* 802D35A8 002D04E8 38 A0 FF FC */ li r5, -4
|
||||
/* 802D35AC 002D04EC 4B FF B6 ED */ bl __nw__FUlP7JKRHeapi
|
||||
/* 802D35B0 002D04F0 7C 64 1B 79 */ or. r4, r3, r3
|
||||
/* 802D35B4 002D04F4 41 82 00 0C */ beq lbl_802D35C0
|
||||
/* 802D35B8 002D04F8 48 00 04 35 */ bl __ct__12JKRAMCommandFv
|
||||
/* 802D35BC 002D04FC 7C 64 1B 78 */ mr r4, r3
|
||||
lbl_802D35C0:
|
||||
/* 802D35C0 002D0500 93 44 00 40 */ stw r26, 0x40(r4)
|
||||
/* 802D35C4 002D0504 93 64 00 48 */ stw r27, 0x48(r4)
|
||||
/* 802D35C8 002D0508 93 84 00 4C */ stw r28, 0x4c(r4)
|
||||
/* 802D35CC 002D050C 93 C4 00 50 */ stw r30, 0x50(r4)
|
||||
/* 802D35D0 002D0510 93 A4 00 44 */ stw r29, 0x44(r4)
|
||||
/* 802D35D4 002D0514 93 E4 00 58 */ stw r31, 0x58(r4)
|
||||
/* 802D35D8 002D0518 7C 83 23 78 */ mr r3, r4
|
||||
/* 802D35DC 002D051C 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 802D35E0 002D0520 48 08 EC 3D */ bl _restgpr_26
|
||||
/* 802D35E4 002D0524 80 01 00 24 */ lwz r0, 0x24(r1)
|
||||
/* 802D35E8 002D0528 7C 08 03 A6 */ mtlr r0
|
||||
/* 802D35EC 002D052C 38 21 00 20 */ addi r1, r1, 0x20
|
||||
/* 802D35F0 002D0530 4E 80 00 20 */ blr
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
/* sendCommand__12JKRAramPieceFP12JKRAMCommand JKRAramPiece::sendCommand(JKRAMCommand *) */
|
||||
/* JKRAramPiece_NS_sendCommand */
|
||||
/* 802D35F4 002D0534 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 802D35F8 002D0538 7C 08 02 A6 */ mflr r0
|
||||
/* 802D35FC 002D053C 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 802D3600 002D0540 48 00 02 CD */ bl startDMA__12JKRAramPieceFP12JKRAMCommand
|
||||
/* 802D3604 002D0544 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 802D3608 002D0548 7C 08 03 A6 */ mtlr r0
|
||||
/* 802D360C 002D054C 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 802D3610 002D0550 4E 80 00 20 */ blr
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
/* sync__12JKRAramPieceFP12JKRAMCommandi JKRAramPiece::sync(JKRAMCommand *, int) */
|
||||
/* JKRAramPiece_NS_sync */
|
||||
/* 802D3770 002D06B0 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
/* 802D3774 002D06B4 7C 08 02 A6 */ mflr r0
|
||||
/* 802D3778 002D06B8 90 01 00 24 */ stw r0, 0x24(r1)
|
||||
/* 802D377C 002D06BC 93 E1 00 1C */ stw r31, 0x1c(r1)
|
||||
/* 802D3780 002D06C0 93 C1 00 18 */ stw r30, 0x18(r1)
|
||||
/* 802D3784 002D06C4 7C 7E 1B 78 */ mr r30, r3
|
||||
/* 802D3788 002D06C8 7C 9F 23 78 */ mr r31, r4
|
||||
/* 802D378C 002D06CC 3C 60 80 43 */ lis r3, lbl_80434330@ha
|
||||
/* 802D3790 002D06D0 38 63 43 30 */ addi r3, r3, lbl_80434330@l
|
||||
/* 802D3794 002D06D4 48 06 B8 AD */ bl OSLockMutex
|
||||
/* 802D3798 002D06D8 2C 1F 00 00 */ cmpwi r31, 0
|
||||
/* 802D379C 002D06DC 40 82 00 38 */ bne lbl_802D37D4
|
||||
/* 802D37A0 002D06E0 38 7E 00 68 */ addi r3, r30, 0x68
|
||||
/* 802D37A4 002D06E4 38 81 00 08 */ addi r4, r1, 8
|
||||
/* 802D37A8 002D06E8 38 A0 00 01 */ li r5, 1
|
||||
/* 802D37AC 002D06EC 48 06 B3 11 */ bl OSReceiveMessage
|
||||
/* 802D37B0 002D06F0 3C 60 80 43 */ lis r3, lbl_80434324@ha
|
||||
/* 802D37B4 002D06F4 38 63 43 24 */ addi r3, r3, lbl_80434324@l
|
||||
/* 802D37B8 002D06F8 38 9E 00 20 */ addi r4, r30, 0x20
|
||||
/* 802D37BC 002D06FC 48 00 89 A1 */ bl remove__10JSUPtrListFP10JSUPtrLink
|
||||
/* 802D37C0 002D0700 3C 60 80 43 */ lis r3, lbl_80434330@ha
|
||||
/* 802D37C4 002D0704 38 63 43 30 */ addi r3, r3, lbl_80434330@l
|
||||
/* 802D37C8 002D0708 48 06 B9 55 */ bl OSUnlockMutex
|
||||
/* 802D37CC 002D070C 38 60 00 01 */ li r3, 1
|
||||
/* 802D37D0 002D0710 48 00 00 50 */ b lbl_802D3820
|
||||
lbl_802D37D4:
|
||||
/* 802D37D4 002D0714 38 7E 00 68 */ addi r3, r30, 0x68
|
||||
/* 802D37D8 002D0718 38 81 00 08 */ addi r4, r1, 8
|
||||
/* 802D37DC 002D071C 38 A0 00 00 */ li r5, 0
|
||||
/* 802D37E0 002D0720 48 06 B2 DD */ bl OSReceiveMessage
|
||||
/* 802D37E4 002D0724 2C 03 00 00 */ cmpwi r3, 0
|
||||
/* 802D37E8 002D0728 40 82 00 18 */ bne lbl_802D3800
|
||||
/* 802D37EC 002D072C 3C 60 80 43 */ lis r3, lbl_80434330@ha
|
||||
/* 802D37F0 002D0730 38 63 43 30 */ addi r3, r3, lbl_80434330@l
|
||||
/* 802D37F4 002D0734 48 06 B9 29 */ bl OSUnlockMutex
|
||||
/* 802D37F8 002D0738 38 60 00 00 */ li r3, 0
|
||||
/* 802D37FC 002D073C 48 00 00 24 */ b lbl_802D3820
|
||||
lbl_802D3800:
|
||||
/* 802D3800 002D0740 3C 60 80 43 */ lis r3, lbl_80434324@ha
|
||||
/* 802D3804 002D0744 38 63 43 24 */ addi r3, r3, lbl_80434324@l
|
||||
/* 802D3808 002D0748 38 9E 00 20 */ addi r4, r30, 0x20
|
||||
/* 802D380C 002D074C 48 00 89 51 */ bl remove__10JSUPtrListFP10JSUPtrLink
|
||||
/* 802D3810 002D0750 3C 60 80 43 */ lis r3, lbl_80434330@ha
|
||||
/* 802D3814 002D0754 38 63 43 30 */ addi r3, r3, lbl_80434330@l
|
||||
/* 802D3818 002D0758 48 06 B9 05 */ bl OSUnlockMutex
|
||||
/* 802D381C 002D075C 38 60 00 01 */ li r3, 1
|
||||
lbl_802D3820:
|
||||
/* 802D3820 002D0760 83 E1 00 1C */ lwz r31, 0x1c(r1)
|
||||
/* 802D3824 002D0764 83 C1 00 18 */ lwz r30, 0x18(r1)
|
||||
/* 802D3828 002D0768 80 01 00 24 */ lwz r0, 0x24(r1)
|
||||
/* 802D382C 002D076C 7C 08 03 A6 */ mtlr r0
|
||||
/* 802D3830 002D0770 38 21 00 20 */ addi r1, r1, 0x20
|
||||
/* 802D3834 002D0774 4E 80 00 20 */ blr
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
/* orderSync__12JKRAramPieceFiUlUlUlP12JKRAramBlock JKRAramPiece::orderSync(int, unsigned long, unsigned long, unsigned long, JKRAramBlock *) */
|
||||
/* JKRAramPiece_NS_orderSync */
|
||||
/* 802D3838 002D0778 94 21 FF E0 */ stwu r1, -0x20(r1)
|
||||
/* 802D383C 002D077C 7C 08 02 A6 */ mflr r0
|
||||
/* 802D3840 002D0780 90 01 00 24 */ stw r0, 0x24(r1)
|
||||
/* 802D3844 002D0784 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 802D3848 002D0788 48 08 E9 8D */ bl _savegpr_27
|
||||
/* 802D384C 002D078C 7C 7B 1B 78 */ mr r27, r3
|
||||
/* 802D3850 002D0790 7C 9C 23 78 */ mr r28, r4
|
||||
/* 802D3854 002D0794 7C BD 2B 78 */ mr r29, r5
|
||||
/* 802D3858 002D0798 7C DF 33 78 */ mr r31, r6
|
||||
/* 802D385C 002D079C 7C FE 3B 78 */ mr r30, r7
|
||||
/* 802D3860 002D07A0 3C 60 80 43 */ lis r3, lbl_80434330@ha
|
||||
/* 802D3864 002D07A4 38 63 43 30 */ addi r3, r3, lbl_80434330@l
|
||||
/* 802D3868 002D07A8 48 06 B7 D9 */ bl OSLockMutex
|
||||
/* 802D386C 002D07AC 7F 63 DB 78 */ mr r3, r27
|
||||
/* 802D3870 002D07B0 7F 84 E3 78 */ mr r4, r28
|
||||
/* 802D3874 002D07B4 7F A5 EB 78 */ mr r5, r29
|
||||
/* 802D3878 002D07B8 7F E6 FB 78 */ mr r6, r31
|
||||
/* 802D387C 002D07BC 7F C7 F3 78 */ mr r7, r30
|
||||
/* 802D3880 002D07C0 39 00 00 00 */ li r8, 0
|
||||
/* 802D3884 002D07C4 4B FF FD 91 */ bl orderAsync__12JKRAramPieceFiUlUlUlP12JKRAramBlockPFUl_v
|
||||
/* 802D3888 002D07C8 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 802D388C 002D07CC 38 80 00 00 */ li r4, 0
|
||||
/* 802D3890 002D07D0 4B FF FE E1 */ bl sync__12JKRAramPieceFP12JKRAMCommandi
|
||||
/* 802D3894 002D07D4 7C 7E 1B 78 */ mr r30, r3
|
||||
/* 802D3898 002D07D8 7F E3 FB 78 */ mr r3, r31
|
||||
/* 802D389C 002D07DC 38 80 00 01 */ li r4, 1
|
||||
/* 802D38A0 002D07E0 48 00 01 BD */ bl __dt__12JKRAMCommandFv
|
||||
/* 802D38A4 002D07E4 3C 60 80 43 */ lis r3, lbl_80434330@ha
|
||||
/* 802D38A8 002D07E8 38 63 43 30 */ addi r3, r3, lbl_80434330@l
|
||||
/* 802D38AC 002D07EC 48 06 B8 71 */ bl OSUnlockMutex
|
||||
/* 802D38B0 002D07F0 7F C3 F3 78 */ mr r3, r30
|
||||
/* 802D38B4 002D07F4 39 61 00 20 */ addi r11, r1, 0x20
|
||||
/* 802D38B8 002D07F8 48 08 E9 69 */ bl _restgpr_27
|
||||
/* 802D38BC 002D07FC 80 01 00 24 */ lwz r0, 0x24(r1)
|
||||
/* 802D38C0 002D0800 7C 08 03 A6 */ mtlr r0
|
||||
/* 802D38C4 002D0804 38 21 00 20 */ addi r1, r1, 0x20
|
||||
/* 802D38C8 002D0808 4E 80 00 20 */ blr
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
/* startDMA__12JKRAramPieceFP12JKRAMCommand JKRAramPiece::startDMA(JKRAMCommand *) */
|
||||
/* JKRAramPiece_NS_startDMA */
|
||||
/* 802D38CC 002D080C 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 802D38D0 002D0810 7C 08 02 A6 */ mflr r0
|
||||
/* 802D38D4 002D0814 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 802D38D8 002D0818 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 802D38DC 002D081C 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 802D38E0 002D0820 80 03 00 40 */ lwz r0, 0x40(r3)
|
||||
/* 802D38E4 002D0824 2C 00 00 01 */ cmpwi r0, 1
|
||||
/* 802D38E8 002D0828 40 82 00 14 */ bne lbl_802D38FC
|
||||
/* 802D38EC 002D082C 80 7F 00 4C */ lwz r3, 0x4c(r31)
|
||||
/* 802D38F0 002D0830 80 9F 00 44 */ lwz r4, 0x44(r31)
|
||||
/* 802D38F4 002D0834 48 06 7C 8D */ bl DCInvalidateRange
|
||||
/* 802D38F8 002D0838 48 00 00 10 */ b lbl_802D3908
|
||||
lbl_802D38FC:
|
||||
/* 802D38FC 002D083C 80 7F 00 48 */ lwz r3, 0x48(r31)
|
||||
/* 802D3900 002D0840 80 9F 00 44 */ lwz r4, 0x44(r31)
|
||||
/* 802D3904 002D0844 48 06 7C D9 */ bl DCStoreRange
|
||||
lbl_802D3908:
|
||||
/* 802D3908 002D0848 7F E3 FB 78 */ mr r3, r31
|
||||
/* 802D390C 002D084C 38 80 00 00 */ li r4, 0
|
||||
/* 802D3910 002D0850 80 BF 00 40 */ lwz r5, 0x40(r31)
|
||||
/* 802D3914 002D0854 38 C0 00 00 */ li r6, 0
|
||||
/* 802D3918 002D0858 80 FF 00 48 */ lwz r7, 0x48(r31)
|
||||
/* 802D391C 002D085C 81 1F 00 4C */ lwz r8, 0x4c(r31)
|
||||
/* 802D3920 002D0860 81 3F 00 44 */ lwz r9, 0x44(r31)
|
||||
/* 802D3924 002D0864 3D 40 80 2D */ lis r10, doneDMA__12JKRAramPieceFUl@ha
|
||||
/* 802D3928 002D0868 39 4A 39 44 */ addi r10, r10, doneDMA__12JKRAramPieceFUl@l
|
||||
/* 802D392C 002D086C 48 07 E9 A9 */ bl ARQPostRequest
|
||||
/* 802D3930 002D0870 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 802D3934 002D0874 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 802D3938 002D0878 7C 08 03 A6 */ mtlr r0
|
||||
/* 802D393C 002D087C 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 802D3940 002D0880 4E 80 00 20 */ blr
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
/* doneDMA__12JKRAramPieceFUl JKRAramPiece::doneDMA(unsigned long) */
|
||||
/* JKRAramPiece_NS_doneDMA */
|
||||
/* 802D3944 002D0884 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 802D3948 002D0888 7C 08 02 A6 */ mflr r0
|
||||
/* 802D394C 002D088C 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 802D3950 002D0890 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 802D3954 002D0894 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 802D3958 002D0898 80 03 00 40 */ lwz r0, 0x40(r3)
|
||||
/* 802D395C 002D089C 2C 00 00 01 */ cmpwi r0, 1
|
||||
/* 802D3960 002D08A0 40 82 00 10 */ bne lbl_802D3970
|
||||
/* 802D3964 002D08A4 80 7F 00 4C */ lwz r3, 0x4c(r31)
|
||||
/* 802D3968 002D08A8 80 9F 00 44 */ lwz r4, 0x44(r31)
|
||||
/* 802D396C 002D08AC 48 06 7C 15 */ bl DCInvalidateRange
|
||||
lbl_802D3970:
|
||||
/* 802D3970 002D08B0 80 1F 00 60 */ lwz r0, 0x60(r31)
|
||||
/* 802D3974 002D08B4 2C 00 00 00 */ cmpwi r0, 0
|
||||
/* 802D3978 002D08B8 41 82 00 18 */ beq lbl_802D3990
|
||||
/* 802D397C 002D08BC 2C 00 00 02 */ cmpwi r0, 2
|
||||
/* 802D3980 002D08C0 40 82 00 58 */ bne lbl_802D39D8
|
||||
/* 802D3984 002D08C4 80 7F 00 64 */ lwz r3, 0x64(r31)
|
||||
/* 802D3988 002D08C8 48 00 7F 49 */ bl sendCommand__9JKRDecompFP16JKRDecompCommand
|
||||
/* 802D398C 002D08CC 48 00 00 4C */ b lbl_802D39D8
|
||||
lbl_802D3990:
|
||||
/* 802D3990 002D08D0 81 9F 00 58 */ lwz r12, 0x58(r31)
|
||||
/* 802D3994 002D08D4 28 0C 00 00 */ cmplwi r12, 0
|
||||
/* 802D3998 002D08D8 41 82 00 14 */ beq lbl_802D39AC
|
||||
/* 802D399C 002D08DC 7F E3 FB 78 */ mr r3, r31
|
||||
/* 802D39A0 002D08E0 7D 89 03 A6 */ mtctr r12
|
||||
/* 802D39A4 002D08E4 4E 80 04 21 */ bctrl
|
||||
/* 802D39A8 002D08E8 48 00 00 30 */ b lbl_802D39D8
|
||||
lbl_802D39AC:
|
||||
/* 802D39AC 002D08EC 80 7F 00 5C */ lwz r3, 0x5c(r31)
|
||||
/* 802D39B0 002D08F0 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 802D39B4 002D08F4 41 82 00 14 */ beq lbl_802D39C8
|
||||
/* 802D39B8 002D08F8 7F E4 FB 78 */ mr r4, r31
|
||||
/* 802D39BC 002D08FC 38 A0 00 00 */ li r5, 0
|
||||
/* 802D39C0 002D0900 48 06 B0 35 */ bl OSSendMessage
|
||||
/* 802D39C4 002D0904 48 00 00 14 */ b lbl_802D39D8
|
||||
lbl_802D39C8:
|
||||
/* 802D39C8 002D0908 38 7F 00 68 */ addi r3, r31, 0x68
|
||||
/* 802D39CC 002D090C 7F E4 FB 78 */ mr r4, r31
|
||||
/* 802D39D0 002D0910 38 A0 00 00 */ li r5, 0
|
||||
/* 802D39D4 002D0914 48 06 B0 21 */ bl OSSendMessage
|
||||
lbl_802D39D8:
|
||||
/* 802D39D8 002D0918 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 802D39DC 002D091C 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 802D39E0 002D0920 7C 08 03 A6 */ mtlr r0
|
||||
/* 802D39E4 002D0924 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 802D39E8 002D0928 4E 80 00 20 */ blr
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
/* __ct__12JKRAMCommandFv __ct__12JKRAMCommandFv::__ct(void) */
|
||||
/* JKRAMCommand */
|
||||
/* 802D39EC 002D092C 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 802D39F0 002D0930 7C 08 02 A6 */ mflr r0
|
||||
/* 802D39F4 002D0934 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 802D39F8 002D0938 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 802D39FC 002D093C 7C 7F 1B 78 */ mr r31, r3
|
||||
/* 802D3A00 002D0940 7F E4 FB 78 */ mr r4, r31
|
||||
/* 802D3A04 002D0944 38 64 00 20 */ addi r3, r4, 0x20
|
||||
/* 802D3A08 002D0948 48 00 83 F5 */ bl __ct__10JSUPtrLinkFPv
|
||||
/* 802D3A0C 002D094C 38 7F 00 30 */ addi r3, r31, 0x30
|
||||
/* 802D3A10 002D0950 7F E4 FB 78 */ mr r4, r31
|
||||
/* 802D3A14 002D0954 48 00 83 E9 */ bl __ct__10JSUPtrLinkFPv
|
||||
/* 802D3A18 002D0958 38 7F 00 68 */ addi r3, r31, 0x68
|
||||
/* 802D3A1C 002D095C 38 9F 00 88 */ addi r4, r31, 0x88
|
||||
/* 802D3A20 002D0960 38 A0 00 01 */ li r5, 1
|
||||
/* 802D3A24 002D0964 48 06 AF 71 */ bl OSInitMessageQueue
|
||||
/* 802D3A28 002D0968 38 00 00 00 */ li r0, 0
|
||||
/* 802D3A2C 002D096C 90 1F 00 58 */ stw r0, 0x58(r31)
|
||||
/* 802D3A30 002D0970 90 1F 00 5C */ stw r0, 0x5c(r31)
|
||||
/* 802D3A34 002D0974 90 1F 00 60 */ stw r0, 0x60(r31)
|
||||
/* 802D3A38 002D0978 90 1F 00 8C */ stw r0, 0x8c(r31)
|
||||
/* 802D3A3C 002D097C 90 1F 00 90 */ stw r0, 0x90(r31)
|
||||
/* 802D3A40 002D0980 90 1F 00 94 */ stw r0, 0x94(r31)
|
||||
/* 802D3A44 002D0984 7F E3 FB 78 */ mr r3, r31
|
||||
/* 802D3A48 002D0988 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 802D3A4C 002D098C 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 802D3A50 002D0990 7C 08 03 A6 */ mtlr r0
|
||||
/* 802D3A54 002D0994 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 802D3A58 002D0998 4E 80 00 20 */ blr
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
/* __dt__12JKRAMCommandFv __ct__12JKRAMCommandFv::__dt(void) */
|
||||
/* JKRAMCommand_NS_dtor */
|
||||
/* 802D3A5C 002D099C 94 21 FF F0 */ stwu r1, -0x10(r1)
|
||||
/* 802D3A60 002D09A0 7C 08 02 A6 */ mflr r0
|
||||
/* 802D3A64 002D09A4 90 01 00 14 */ stw r0, 0x14(r1)
|
||||
/* 802D3A68 002D09A8 93 E1 00 0C */ stw r31, 0xc(r1)
|
||||
/* 802D3A6C 002D09AC 93 C1 00 08 */ stw r30, 8(r1)
|
||||
/* 802D3A70 002D09B0 7C 7E 1B 79 */ or. r30, r3, r3
|
||||
/* 802D3A74 002D09B4 7C 9F 23 78 */ mr r31, r4
|
||||
/* 802D3A78 002D09B8 41 82 00 70 */ beq lbl_802D3AE8
|
||||
/* 802D3A7C 002D09BC 80 7E 00 8C */ lwz r3, 0x8c(r30)
|
||||
/* 802D3A80 002D09C0 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 802D3A84 002D09C4 41 82 00 08 */ beq lbl_802D3A8C
|
||||
/* 802D3A88 002D09C8 4B FF B2 B5 */ bl __dl__FPv
|
||||
lbl_802D3A8C:
|
||||
/* 802D3A8C 002D09CC 80 7E 00 90 */ lwz r3, 0x90(r30)
|
||||
/* 802D3A90 002D09D0 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 802D3A94 002D09D4 41 82 00 08 */ beq lbl_802D3A9C
|
||||
/* 802D3A98 002D09D8 4B FF B2 A5 */ bl __dl__FPv
|
||||
lbl_802D3A9C:
|
||||
/* 802D3A9C 002D09DC 80 7E 00 94 */ lwz r3, 0x94(r30)
|
||||
/* 802D3AA0 002D09E0 28 03 00 00 */ cmplwi r3, 0
|
||||
/* 802D3AA4 002D09E4 41 82 00 0C */ beq lbl_802D3AB0
|
||||
/* 802D3AA8 002D09E8 38 80 00 00 */ li r4, 0
|
||||
/* 802D3AAC 002D09EC 4B FF AA 55 */ bl free__7JKRHeapFPvP7JKRHeap
|
||||
lbl_802D3AB0:
|
||||
/* 802D3AB0 002D09F0 34 1E 00 30 */ addic. r0, r30, 0x30
|
||||
/* 802D3AB4 002D09F4 41 82 00 10 */ beq lbl_802D3AC4
|
||||
/* 802D3AB8 002D09F8 38 7E 00 30 */ addi r3, r30, 0x30
|
||||
/* 802D3ABC 002D09FC 38 80 00 00 */ li r4, 0
|
||||
/* 802D3AC0 002D0A00 48 00 83 55 */ bl __dt__10JSUPtrLinkFv
|
||||
lbl_802D3AC4:
|
||||
/* 802D3AC4 002D0A04 34 1E 00 20 */ addic. r0, r30, 0x20
|
||||
/* 802D3AC8 002D0A08 41 82 00 10 */ beq lbl_802D3AD8
|
||||
/* 802D3ACC 002D0A0C 38 7E 00 20 */ addi r3, r30, 0x20
|
||||
/* 802D3AD0 002D0A10 38 80 00 00 */ li r4, 0
|
||||
/* 802D3AD4 002D0A14 48 00 83 41 */ bl __dt__10JSUPtrLinkFv
|
||||
lbl_802D3AD8:
|
||||
/* 802D3AD8 002D0A18 7F E0 07 35 */ extsh. r0, r31
|
||||
/* 802D3ADC 002D0A1C 40 81 00 0C */ ble lbl_802D3AE8
|
||||
/* 802D3AE0 002D0A20 7F C3 F3 78 */ mr r3, r30
|
||||
/* 802D3AE4 002D0A24 4B FF B2 59 */ bl __dl__FPv
|
||||
lbl_802D3AE8:
|
||||
/* 802D3AE8 002D0A28 7F C3 F3 78 */ mr r3, r30
|
||||
/* 802D3AEC 002D0A2C 83 E1 00 0C */ lwz r31, 0xc(r1)
|
||||
/* 802D3AF0 002D0A30 83 C1 00 08 */ lwz r30, 8(r1)
|
||||
/* 802D3AF4 002D0A34 80 01 00 14 */ lwz r0, 0x14(r1)
|
||||
/* 802D3AF8 002D0A38 7C 08 03 A6 */ mtlr r0
|
||||
/* 802D3AFC 002D0A3C 38 21 00 10 */ addi r1, r1, 0x10
|
||||
/* 802D3B00 002D0A40 4E 80 00 20 */ blr
|
||||
|
|
@ -135,6 +135,17 @@ public:
|
|||
return *this;
|
||||
}
|
||||
|
||||
JSUListIterator<T> operator--(int) {
|
||||
JSUListIterator<T> prev = *this;
|
||||
this->mLink = this->mLink->getPrev();
|
||||
return prev;
|
||||
}
|
||||
|
||||
JSUListIterator<T>& operator--() {
|
||||
this->mLink = this->mLink->getPrev();
|
||||
return *this;
|
||||
}
|
||||
|
||||
T& operator*() { return *this->getObject(); }
|
||||
|
||||
T* operator->() { return this->getObject(); }
|
||||
|
|
|
|||
|
|
@ -0,0 +1,25 @@
|
|||
#ifndef __ARQ_H__
|
||||
#define __ARQ_H__
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
typedef void (*ARQCallback)(u32 request_address);
|
||||
|
||||
struct ARQRequest {
|
||||
ARQRequest* next;
|
||||
u32 owner;
|
||||
u32 type;
|
||||
u32 priority;
|
||||
u32 source;
|
||||
u32 destination;
|
||||
u32 length;
|
||||
ARQCallback callback;
|
||||
};
|
||||
|
||||
extern "C" {
|
||||
void ARQInit(void);
|
||||
void ARQPostRequest(ARQRequest* task, u32 owner, u32 type, u32 priority, u32 source,
|
||||
u32 destination, u32 length, ARQCallback callback);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -32,5 +32,6 @@ typedef int BOOL;
|
|||
#define NULL (0)
|
||||
|
||||
#define INT32_MAX (0x7fffffff)
|
||||
#define UINT32_MAX (0xffffffff)
|
||||
|
||||
#endif
|
||||
|
|
@ -1,3 +1,5 @@
|
|||
#include "os/OS.h"
|
||||
|
||||
extern "C" {
|
||||
void read__8mDoCPd_cFv(void);
|
||||
void create__8mDoCPd_cFv(void);
|
||||
|
|
@ -20,11 +22,9 @@ void PSMTXScale(void);
|
|||
void screenSet__12dFile_info_cFv(void);
|
||||
void dFile_info_c_NS_screenSet(void);
|
||||
void mDoExt_removeMesgFont(void);
|
||||
|
||||
void JKRAramHeap_NS_getTotalFreeSize(void);
|
||||
void JKRAramHeap_NS_getFreeSize(void);
|
||||
void heapDisplay__9HeapCheckCFv(void);
|
||||
|
||||
void init__20dSv_player_collect_cFv(void);
|
||||
void dComIfGp_setSelectItem(int);
|
||||
void getUsedCount__9HeapCheckCFv(void);
|
||||
|
|
@ -32,11 +32,9 @@ void isEventBit__11dSv_event_cCFUs(void);
|
|||
char* strcpy(char*, const char*);
|
||||
int strcmp(char*, char*);
|
||||
void setBombNum__21dSv_player_item_max_cFUcUc(void);
|
||||
|
||||
void func_803620AC(void);
|
||||
void func_803626BC(void);
|
||||
void func_803664DC(void);
|
||||
|
||||
void JKRAramHeap_NS_dump(void);
|
||||
void dRes_control_c_NS_dump(void);
|
||||
void JUTConsole_NS_getLineOffset(void);
|
||||
|
|
@ -46,7 +44,6 @@ void JUTConsole_NS_clear(void);
|
|||
void JUTReport_X1_(void);
|
||||
void JUTAssertion_NS_setMessageCount(void);
|
||||
void DynamicModuleControlBase_NS_dump(void);
|
||||
|
||||
unsigned int getSelectItemIndex__21dSv_player_status_a_cCFi(int);
|
||||
void setLineUpItem__17dSv_player_item_cFv(void);
|
||||
void dMeter2Info_c_NS_setHotSpringTimer(void);
|
||||
|
|
@ -89,17 +86,13 @@ void isItem__12dSv_memBit_cCFi(void);
|
|||
void isItem__12dSv_danBit_cCFi(void);
|
||||
void off__15dSv_zoneActor_cFi(void);
|
||||
void is__15dSv_zoneActor_cCFi(void);
|
||||
|
||||
void onEventBit__11dSv_event_cFUs(void);
|
||||
void func_8036687C(void);
|
||||
void func_80003540(void);
|
||||
void func_80362324(void);
|
||||
|
||||
void countUsed__FP10JKRExpHeap(void);
|
||||
void JUTReport(void);
|
||||
|
||||
void offEventBit__11dSv_event_cFUs(void);
|
||||
|
||||
void dMeter2Info_c_NS_setSaveStageName(void);
|
||||
void dComIfG_play_c_NS_setNowVibration(void);
|
||||
void getVibration__19dSv_player_config_cFv(void);
|
||||
|
|
@ -161,19 +154,15 @@ void JUTConsole_NS_clear(void);
|
|||
void JUTReportConsole_f(void);
|
||||
void JUTWarningConsole(void);
|
||||
void JUTWarningConsole_f(void);
|
||||
|
||||
void VIWaitForRetrace(void);
|
||||
void func_80361C24(void);
|
||||
|
||||
void func_80003540(void);
|
||||
void func_80365470(void);
|
||||
void func_803688DC(void);
|
||||
void func_80368ABC(void);
|
||||
void func_80368BE4(void);
|
||||
void JKRArchive_NS_getDirEntry(void);
|
||||
|
||||
void func_80361C24(void);
|
||||
|
||||
void JKRArchive_NS_findDirectory(void);
|
||||
void JKRArchive_NS_findFsResource(void);
|
||||
void JKRArchive_NS_findIdResource(void);
|
||||
|
|
@ -182,49 +171,34 @@ void JKRArchive_NS_findNameResource(void);
|
|||
void JKRArchive_NS_findPtrResource(void);
|
||||
void JKRArchive_NS_findTypeResource(void);
|
||||
void JKRCompArchive(void);
|
||||
|
||||
void func_80365470(void);
|
||||
|
||||
void DCInvalidateRange(void);
|
||||
void DCStoreRange(void*, u32);
|
||||
void DCInvalidateRange(void*, u32);
|
||||
void DCStoreRangeNoSync(void);
|
||||
void JKRDvdRipper_NS_loadToMainRAM_X1_(void);
|
||||
void func_80003458(void);
|
||||
|
||||
void func_803650D0(void);
|
||||
|
||||
void JKRDecomp_NS_orderSync(void);
|
||||
void func_80003540(void);
|
||||
|
||||
void JKRAramHeap_NS_alloc(void);
|
||||
void JKRAram_NS_aramToMainRam(void);
|
||||
void JKRDvdAramRipper_NS_loadToAram(void);
|
||||
void JKRAram_NS_mainRamToAram(void);
|
||||
void JKRAramPiece_NS_sendCommand(void);
|
||||
|
||||
void DCInvalidateRange(void);
|
||||
void DCStoreRangeNoSync(void);
|
||||
void __RAS_OSDisableInterrupts_begin(void);
|
||||
void func_80003540(void);
|
||||
void func_80361C24(void);
|
||||
|
||||
void ARQPostRequest(void);
|
||||
void DCStoreRange(void);
|
||||
|
||||
void JSUInputStream_NS_read(void);
|
||||
void JSURandomInputStream_NS_seek(void);
|
||||
|
||||
void DCInvalidateRange(void);
|
||||
void JSUInputStream_NS_dtor(void);
|
||||
void JSUFileInputStream_ct(void);
|
||||
|
||||
void ARAlloc(void);
|
||||
void ARGetSize(void);
|
||||
void ARInit(void);
|
||||
void ARQInit(void);
|
||||
void DCStoreRangeNoSync(void);
|
||||
void __RAS_OSDisableInterrupts_begin(void);
|
||||
u8 dComIfGs_getBottleMax(void);
|
||||
}
|
||||
#include "os/OS.h"
|
||||
|
||||
extern "C" {
|
||||
u32 OSGetResetSwitchState(void);
|
||||
|
|
@ -258,7 +232,6 @@ void PSMTXScale(void);
|
|||
void screenSet__12dFile_info_cFv(void);
|
||||
void dFile_info_c_NS_screenSet(void);
|
||||
void mDoExt_removeMesgFont(void);
|
||||
|
||||
void JKRAramHeap_NS_getTotalFreeSize(void);
|
||||
void JKRAramHeap_NS_getFreeSize(void);
|
||||
void heapDisplay__9HeapCheckCFv(void);
|
||||
|
|
@ -273,7 +246,6 @@ void dComIfGs_getMixItemIndex(int);
|
|||
char* strcpy(char*, const char*);
|
||||
int strcmp(char*, char*);
|
||||
void setBombNum__21dSv_player_item_max_cFUcUc(void);
|
||||
|
||||
void func_803620AC(void);
|
||||
void func_803626BC(void);
|
||||
void func_803664DC(void);
|
||||
|
|
@ -429,10 +401,8 @@ void JKRCompArchive(void);
|
|||
|
||||
void func_80365470(void);
|
||||
|
||||
void DCInvalidateRange(void);
|
||||
void JKRDvdRipper_NS_loadToMainRAM_X1_(void);
|
||||
void func_80003458(void);
|
||||
|
||||
void func_803650D0(void);
|
||||
|
||||
void JKRDecomp_NS_orderSync(void);
|
||||
|
|
@ -444,26 +414,19 @@ void JKRDvdAramRipper_NS_loadToAram(void);
|
|||
void JKRAram_NS_mainRamToAram(void);
|
||||
void JKRAramPiece_NS_sendCommand(void);
|
||||
|
||||
void DCInvalidateRange(void);
|
||||
void DCStoreRangeNoSync(void);
|
||||
void __RAS_OSDisableInterrupts_begin(void);
|
||||
void func_80003540(void);
|
||||
void func_80361C24(void);
|
||||
|
||||
void ARQPostRequest(void);
|
||||
void DCStoreRange(void);
|
||||
|
||||
void JSUInputStream_NS_read(void);
|
||||
void JSURandomInputStream_NS_seek(void);
|
||||
|
||||
void DCInvalidateRange(void);
|
||||
void JSUInputStream_NS_dtor(void);
|
||||
void JSUFileInputStream_ct(void);
|
||||
|
||||
void ARAlloc(void);
|
||||
void ARGetSize(void);
|
||||
void ARInit(void);
|
||||
void ARQInit(void);
|
||||
void DCStoreRangeNoSync(void);
|
||||
void __RAS_OSDisableInterrupts_begin(void);
|
||||
u8 dComIfGs_getBottleMax(void);
|
||||
|
|
@ -732,12 +695,10 @@ void item_func_BEE_CHILD(void);
|
|||
int func_80368954(char*, char*, u32);
|
||||
void dComIfG_play_c_NS_getLayerNo(int);
|
||||
u32 isMagicFlag__21dSv_player_status_a_cCFUc(u8);
|
||||
|
||||
void dComIfG_play_c_NS_setItemBombNumCount(u8, s16);
|
||||
void setEmptyBombBagItemIn__17dSv_player_item_cFUcUcb(u8, bool);
|
||||
u32 getBombNum__21dSv_player_item_max_cCFUc(u8);
|
||||
u8 getBombNum__24dSv_player_item_record_cCFUc(u8);
|
||||
|
||||
int checkItemGet__FUci(u8, int);
|
||||
}
|
||||
|
||||
|
|
@ -1188,7 +1149,6 @@ void dAttention_c_NS_stockAttention(void);
|
|||
void distace_angle_adjust(void);
|
||||
void dAttDraw_c_NS_draw(void);
|
||||
void dAttCatch_c_NS_convPId(void);
|
||||
|
||||
void dAttDraw_c_NS_setAnm(void);
|
||||
void dAttention_c_NS_lockSoundStart(void);
|
||||
void fopAcM_searchActorDistance(void);
|
||||
|
|
@ -1273,6 +1233,7 @@ void dAttDraw_c_NS_alphaAnm(void);
|
|||
void dAttention_c_NS_LockonReleaseDistanse(void);
|
||||
void dAttention_c_NS_runDebugDisp(void);
|
||||
|
||||
// void dAttParam_c(void);
|
||||
void dAttention_c_NS_judgementStatus4Hold(void);
|
||||
void dAttention_c_NS_calcWeight(void);
|
||||
void dAttHint_c_NS_getPId(void);
|
||||
|
|
@ -1331,7 +1292,6 @@ void func_801119D8(void);
|
|||
void daAlink_c_NS_setLandPassiveData(void);
|
||||
void func_800D0290(void);
|
||||
void daAlink_c_NS_setCutTurnEffect(void);
|
||||
|
||||
void func_8014190C(void);
|
||||
void daAlink_c_NS_checkHorseGetOffDirection(void);
|
||||
void func_80101534(void);
|
||||
|
|
@ -1592,7 +1552,6 @@ void daAlink_c_NS_getSwimMaxFallSpeed(void);
|
|||
void JPAParticleCallBack_NS_dtor(void);
|
||||
void func_801417D4(void);
|
||||
void func_8011E960(void);
|
||||
|
||||
void setLinkBootsType__14Z2CreatureLinkFl(void);
|
||||
void cM_atan2s(void);
|
||||
void daAlink_c_NS_setLastSceneMode(void);
|
||||
|
|
@ -1928,7 +1887,6 @@ void dStage_stagInfo_GetSaveTbl(void);
|
|||
void daAlink_c_NS_setWolfScreamWaitAnime(void);
|
||||
void daObjSwHang_c_NS_getHangPos(void);
|
||||
void func_800C4514(void);
|
||||
|
||||
void daAlink_c_NS_checkAtnWaitAnime(void);
|
||||
void dKy_plight_cut(void);
|
||||
void Z2Creature_NS_updateAnime(void);
|
||||
|
|
@ -2127,7 +2085,6 @@ void func_800D0688(void);
|
|||
void daAlink_c_NS_checkHangStartSideWall(void);
|
||||
void daAlink_c_NS_setDrawHand(void);
|
||||
void cM_rnd(void);
|
||||
|
||||
void dCcD_GObjInf_NS_GetAtHitGObj(void);
|
||||
void dBgS_RoofChk(void);
|
||||
void daAlink_c_NS_getCutDirection(void);
|
||||
|
|
@ -2225,7 +2182,6 @@ void func_801391DC(void);
|
|||
void daAlink_c_NS_setWolfAnmVoice(void);
|
||||
void func_80362018(void);
|
||||
void daAlink_c_NS_resetWolfAtCollision(void);
|
||||
|
||||
void func_800EA4CC(void);
|
||||
void daAlink_c_NS_getLadderMoveAnmSpeed(void);
|
||||
void daAlink_c_NS_checkBoomerangCatchAction(void);
|
||||
|
|
@ -2853,7 +2809,6 @@ void func_80140038(void);
|
|||
void daAlink_c_NS_seStartSwordCut(void);
|
||||
void daAlink_c_NS_checkItemButtonChange(void);
|
||||
void daAlink_c_NS_setOctaIealHangPos(void);
|
||||
|
||||
void daAlink_c_NS_procCutJumpInit(void);
|
||||
void func_8011A5CC(void);
|
||||
void daAlink_c_NS_checkWolfComboCnt(void);
|
||||
|
|
@ -4135,7 +4090,6 @@ void dComIfGs_setWarpItemData_X1_(void);
|
|||
void dMeter2Info_setNewLetterSender(void);
|
||||
void dMeter2Info_getNewLetterNum(void);
|
||||
void dMsgFlow_c_NS_getMsgNo(void);
|
||||
|
||||
void func_8021C11C(void);
|
||||
void dMeter2Info_c_NS_isFloatingMessageVisible(void);
|
||||
void dMeter2Info_c_NS_changeWater(void);
|
||||
|
|
@ -4162,7 +4116,6 @@ void dMeter2Info_c_NS_resetMeterString(void);
|
|||
void offFirstBit__21dSv_player_get_item_cFUc(void);
|
||||
void dComIfGs_setWarpMarkFlag(void);
|
||||
void func_8021C7F4(void);
|
||||
|
||||
void dMeter2Info_c_NS_decMsgKeyWaitTimer(void);
|
||||
void dMeter2Info_c_NS_getItemType(void);
|
||||
void isLetterGetFlag__17dSv_letter_info_cCFi(void);
|
||||
|
|
@ -4702,7 +4655,6 @@ void dKy_efplight_cut(void);
|
|||
void forward_overhead_bg_chk(void);
|
||||
void dKy_set_bgcol_ratio(void);
|
||||
void dKy_GxFog_set(void);
|
||||
|
||||
void GXSetZCompLoc(void);
|
||||
void dKyr_moon_arrival_check(void);
|
||||
void PSVECAdd(Vec*, Vec*, Vec*);
|
||||
|
|
@ -4710,7 +4662,6 @@ void dKy_set_vrboxcol_ratio(void);
|
|||
void func_8036C590(void);
|
||||
void dBgS_CamGndChk_Wtr_NS_dtor(void);
|
||||
void func_8006F160(void);
|
||||
|
||||
void dBgS_ObjGndChk_All_NS_dtor(void);
|
||||
void dKy_bg_addcol_amb_set(void);
|
||||
void dKy_set_fogcol_ratio(void);
|
||||
|
|
@ -4734,7 +4685,6 @@ void vectle_calc_X1_(void);
|
|||
void dKy_vrbox_addcol_sky0_set(void);
|
||||
void dKy_efplight_set(void);
|
||||
void dKy_set_actcol_ratio(void);
|
||||
|
||||
void PSMTXRotRad(void);
|
||||
void daPy_py_c_NS_checkNowWolfEyeUp(void);
|
||||
void dKyr_near_bosslight_check(void);
|
||||
|
|
@ -4884,7 +4834,6 @@ void func_801A7814(void);
|
|||
void func_801A789C(void);
|
||||
void dKy_bg3_addcol_amb_set(void);
|
||||
void dScnKy_env_light_c_NS_Eflight_flush_proc(void);
|
||||
|
||||
void func_801A441C(void);
|
||||
void BOSS_LIGHT_NS_dtor(void);
|
||||
void dKy_Outdoor_check(void);
|
||||
|
|
@ -4901,7 +4850,6 @@ void dKy_ParticleColor_get_base(void);
|
|||
void dScnKy_env_light_c_NS_setSunpos(void);
|
||||
void dKy_ParticleColor_get_actor(void);
|
||||
void dKy_pol_eff2_ratio_get(void);
|
||||
|
||||
void dKy_darkworld_Area_set(void);
|
||||
void dKy_shadow_mode_check(void);
|
||||
void mDoGph_gInf_c_NS_bloom_c_NS_create(void);
|
||||
|
|
|
|||
|
|
@ -3,11 +3,18 @@
|
|||
|
||||
#define ARRAY_SIZE(o) (sizeof((o)) / sizeof(*(o)))
|
||||
|
||||
// Align X to the previous N bytes (N must be power of two)
|
||||
#define ALIGN_PREV(X, N) ((X) & ~((N)-1))
|
||||
// Align X to the next N bytes (N must be power of two)
|
||||
#define ALIGN_NEXT(X, N) ALIGN_PREV(((X) + (N)-1), N)
|
||||
|
||||
struct Vec {
|
||||
float x, y, z;
|
||||
};
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#include "ar/ARQ.h"
|
||||
#include "functions.h"
|
||||
#include "mwcc.h"
|
||||
#include "os/OS.h"
|
||||
|
|
|
|||
|
|
@ -8,6 +8,9 @@
|
|||
|
||||
/* TODO: more structs, and get rid of the ones that are faked! */
|
||||
|
||||
#define OS_MESSAGE_NON_BLOCKING 0
|
||||
#define OS_MESSAGE_BLOCKING 1
|
||||
|
||||
struct OSMutex {
|
||||
u8 unk[24];
|
||||
};
|
||||
|
|
@ -99,7 +102,7 @@ bool OSIsThreadTerminated(OSThread* thread);
|
|||
OSSwitchThreadCallback OSSetSwitchThreadCallback(OSSwitchThreadCallback* callback);
|
||||
|
||||
void OSInitMessageQueue(OSMessageQueue* queue, OSMessage* messages, int message_count);
|
||||
void OSReceiveMessage(OSMessageQueue* queue, OSMessage message, int flags);
|
||||
BOOL OSReceiveMessage(OSMessageQueue* queue, OSMessage message, int flags);
|
||||
void OSSendMessage(OSMessageQueue* queue, OSMessage message, int flags);
|
||||
|
||||
s32 OSGetConsoleType(void);
|
||||
|
|
|
|||
|
|
@ -307,12 +307,13 @@ extern u8 lbl_803CC168; // JKRAramHeap::__vt
|
|||
extern u8 lbl_80434300; // JKernel::@297 (global destructor chain)
|
||||
class JKRAramBlock;
|
||||
extern JSUList<JKRAramBlock> lbl_8043430C; // JKRAramHeap::sAramList
|
||||
class JKRAMCommand;
|
||||
extern JSUList<JKRAMCommand> lbl_80434324; // JKRAramPiece::sAramPieceCommandList
|
||||
extern OSMutex lbl_80434330; // JKRAramPiece::mMutex
|
||||
extern char lbl_8039D0B8[]; // "direction = %x\n"
|
||||
|
||||
extern u8 lbl_80434324; // JKRAramPiece::sAramPieceCommandList
|
||||
extern u8 lbl_80434330; // JKRAramPiece::mMutex
|
||||
extern u8 lbl_8039D0B8; // "direction = %x\n"
|
||||
extern u8 lbl_80434318; // JKernel::@492 (global destructor chain)
|
||||
extern u8 lbl_803CC138; // JKRAram::sMessageQueue
|
||||
extern u8 lbl_80434318; // JKernel::@492 (global destructor chain)
|
||||
extern OSMessageQueue lbl_803CC138; // JKRAram::sMessageQueue
|
||||
|
||||
extern u8 lbl_80451408; // JKRAramStream::sAramStreamObject
|
||||
extern u8 lbl_80451414; // JKRAramStream::transHeap
|
||||
|
|
@ -371,7 +372,6 @@ extern u8 lbl_80451404; // JKernel::tsArea (static?)
|
|||
extern u8 lbl_803CC158; // JKRAram::__vt
|
||||
extern u8 lbl_8039D078; // "JKRAram.cpp"
|
||||
extern u8 lbl_804342D0; // JKernel::@492 (global destructor chain)
|
||||
extern u8 lbl_803CC138; // JKRAram::sMessageQueue
|
||||
extern u8 lbl_804342DC; // JKRAram::sAramCommandList
|
||||
extern u8 lbl_804342E8; // JKernel::decompMutex (static?)
|
||||
extern u8 lbl_804508B8; // JKRAram::sSZSBufferSize
|
||||
|
|
@ -404,7 +404,6 @@ extern u8 lbl_80451404; // JKernel::tsArea (static?)
|
|||
extern u8 lbl_803CC158; // JKRAram::__vt
|
||||
extern u8 lbl_8039D078; // "JKRAram.cpp"
|
||||
extern u8 lbl_804342D0; // JKernel::@492 (global destructor chain)
|
||||
extern u8 lbl_803CC138; // JKRAram::sMessageQueue
|
||||
extern u8 lbl_804342DC; // JKRAram::sAramCommandList
|
||||
extern u8 lbl_804342E8; // JKernel::decompMutex (static?)
|
||||
extern u8 lbl_804508B8; // JKRAram::sSZSBufferSize
|
||||
|
|
|
|||
|
|
@ -5,56 +5,56 @@
|
|||
|
||||
JKRAramBlock::JKRAramBlock(u32 address, u32 size, u32 freeSize, u8 groupId, bool isTempMemory)
|
||||
: mBlockLink(this) {
|
||||
this->mAddress = address;
|
||||
this->mSize = size;
|
||||
this->mFreeSize = freeSize;
|
||||
this->mGroupId = groupId;
|
||||
this->mIsTempMemory = isTempMemory;
|
||||
mAddress = address;
|
||||
mSize = size;
|
||||
mFreeSize = freeSize;
|
||||
mGroupId = groupId;
|
||||
mIsTempMemory = isTempMemory;
|
||||
}
|
||||
|
||||
JKRAramBlock::~JKRAramBlock() {
|
||||
JSUList<JKRAramBlock>* list = this->mBlockLink.getSupervisor();
|
||||
JSULink<JKRAramBlock>* prev = this->mBlockLink.getPrev();
|
||||
JSUList<JKRAramBlock>* list = mBlockLink.getSupervisor();
|
||||
JSULink<JKRAramBlock>* prev = mBlockLink.getPrev();
|
||||
if (prev) {
|
||||
JKRAramBlock* block = prev->getObject();
|
||||
block->mFreeSize = this->mSize + this->mFreeSize + block->mFreeSize;
|
||||
list->remove(&this->mBlockLink);
|
||||
block->mFreeSize = mSize + mFreeSize + block->mFreeSize;
|
||||
list->remove(&mBlockLink);
|
||||
} else {
|
||||
this->mFreeSize = this->mFreeSize + this->mSize;
|
||||
this->mSize = 0;
|
||||
mFreeSize = mFreeSize + mSize;
|
||||
mSize = 0;
|
||||
}
|
||||
}
|
||||
|
||||
JKRAramBlock* JKRAramBlock::allocHead(u32 size, u8 groupId, JKRAramHeap* aramHeap) {
|
||||
u32 address = this->mAddress;
|
||||
u32 usedSize = this->mSize;
|
||||
u32 address = mAddress;
|
||||
u32 usedSize = mSize;
|
||||
u32 nextAddress = address + usedSize;
|
||||
u32 freeSize = this->mFreeSize;
|
||||
u32 freeSize = mFreeSize;
|
||||
u32 nextFreeSize = freeSize - size;
|
||||
|
||||
JKRAramBlock* block = new (aramHeap->getMgrHeap(), 0)
|
||||
JKRAramBlock(nextAddress, size, nextFreeSize, groupId, false);
|
||||
|
||||
this->mFreeSize = 0;
|
||||
JSULink<JKRAramBlock>* next = this->mBlockLink.getNext();
|
||||
JSUList<JKRAramBlock>* list = this->mBlockLink.getSupervisor();
|
||||
mFreeSize = 0;
|
||||
JSULink<JKRAramBlock>* next = mBlockLink.getNext();
|
||||
JSUList<JKRAramBlock>* list = mBlockLink.getSupervisor();
|
||||
list->insert(next, &block->mBlockLink);
|
||||
return block;
|
||||
}
|
||||
|
||||
JKRAramBlock* JKRAramBlock::allocTail(u32 size, u8 groupId, JKRAramHeap* aramHeap) {
|
||||
u32 freeSize = this->mFreeSize;
|
||||
u32 address = this->mAddress;
|
||||
u32 usedSize = this->mSize;
|
||||
u32 freeSize = mFreeSize;
|
||||
u32 address = mAddress;
|
||||
u32 usedSize = mSize;
|
||||
u32 endAddress = address + usedSize + freeSize;
|
||||
u32 tailAddress = endAddress - size;
|
||||
|
||||
JKRAramBlock* block =
|
||||
new (aramHeap->getMgrHeap(), 0) JKRAramBlock(tailAddress, size, 0, groupId, true);
|
||||
|
||||
this->mFreeSize -= size;
|
||||
JSULink<JKRAramBlock>* next = this->mBlockLink.getNext();
|
||||
JSUList<JKRAramBlock>* list = this->mBlockLink.getSupervisor();
|
||||
mFreeSize -= size;
|
||||
JSULink<JKRAramBlock>* next = mBlockLink.getNext();
|
||||
JSUList<JKRAramBlock>* list = mBlockLink.getSupervisor();
|
||||
list->insert(next, &block->mBlockLink);
|
||||
return block;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,44 +1,145 @@
|
|||
#include "JSystem/JKernel/JKRAramHeap/JKRAramHeap.h"
|
||||
#include "global.h"
|
||||
|
||||
asm JKRAramHeap::JKRAramHeap(u32, u32) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRAramHeap/asm/func_802D2E44.s"
|
||||
#include "JSystem/JKernel/JKRAramBlock/JKRAramBlock.h"
|
||||
|
||||
JKRAramHeap::JKRAramHeap(u32 startAddress, u32 size) {
|
||||
OSInitMutex(&mMutex);
|
||||
|
||||
mHeap = JKRHeap::findFromRoot(this);
|
||||
mSize = ALIGN_PREV(size, 0x20);
|
||||
mHeadAddress = ALIGN_NEXT(startAddress, 0x20);
|
||||
mTailAddress = mHeadAddress + mSize;
|
||||
mGroupId = -1;
|
||||
|
||||
JKRAramBlock* block = new (mHeap, 0) JKRAramBlock(mHeadAddress, 0, mSize, -1, false);
|
||||
lbl_8043430C.append(&block->mBlockLink);
|
||||
}
|
||||
|
||||
asm JKRAramHeap::~JKRAramHeap(void) {
|
||||
// close match, regalloc problem in the beginning of the while loop
|
||||
#if NONMATCHING
|
||||
JKRAramHeap::~JKRAramHeap() {
|
||||
JSUList<JKRAramBlock>* list = &lbl_8043430C;
|
||||
JSUListIterator<JKRAramBlock> iterator = list;
|
||||
|
||||
while (iterator != list->getEnd()) {
|
||||
JSUListIterator<JKRAramBlock> prev = iterator;
|
||||
JKRAramBlock* block = prev.getObject();
|
||||
delete block;
|
||||
}
|
||||
}
|
||||
#else
|
||||
asm JKRAramHeap::~JKRAramHeap() {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRAramHeap/asm/func_802D2F14.s"
|
||||
}
|
||||
#endif
|
||||
|
||||
asm void JKRAramHeap::alloc(u32, JKRAramHeap::EAllocMode) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRAramHeap/asm/func_802D2FBC.s"
|
||||
JKRAramBlock* JKRAramHeap::alloc(u32 size, JKRAramHeap::EAllocMode allocationMode) {
|
||||
lock();
|
||||
|
||||
JKRAramBlock* block;
|
||||
if (allocationMode == JKRAramHeap::HEAD) {
|
||||
block = allocFromHead(size);
|
||||
} else {
|
||||
block = allocFromTail(size);
|
||||
}
|
||||
|
||||
unlock();
|
||||
return block;
|
||||
}
|
||||
|
||||
asm void JKRAramHeap::allocFromHead(u32) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRAramHeap/asm/func_802D3034.s"
|
||||
JKRAramBlock* JKRAramHeap::allocFromHead(u32 size) {
|
||||
u32 alignedSize = ALIGN_NEXT(size, 0x20);
|
||||
u32 bestFreeSize = UINT32_MAX;
|
||||
JKRAramBlock* bestBlock = NULL;
|
||||
|
||||
JSUList<JKRAramBlock>* list = &lbl_8043430C;
|
||||
for (JSUListIterator<JKRAramBlock> iterator = list; iterator != list->getEnd(); ++iterator) {
|
||||
JKRAramBlock* block = iterator.getObject();
|
||||
if (block->mFreeSize < alignedSize)
|
||||
continue;
|
||||
if (bestFreeSize <= block->mFreeSize)
|
||||
continue;
|
||||
|
||||
bestFreeSize = block->mFreeSize;
|
||||
bestBlock = block;
|
||||
|
||||
if (block->mFreeSize == alignedSize) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (bestBlock) {
|
||||
return bestBlock->allocHead(alignedSize, mGroupId, this);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
asm void JKRAramHeap::allocFromTail(u32) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRAramHeap/asm/func_802D30BC.s"
|
||||
JKRAramBlock* JKRAramHeap::allocFromTail(u32 size) {
|
||||
u32 alignedSize = ALIGN_NEXT(size, 0x20);
|
||||
JKRAramBlock* tailBlock = NULL;
|
||||
|
||||
JSUList<JKRAramBlock>* list = &lbl_8043430C;
|
||||
JSUListIterator<JKRAramBlock> iterator = list->getLast();
|
||||
for (; iterator != list->getEnd(); --iterator) {
|
||||
JKRAramBlock* block = iterator.getObject();
|
||||
if (block->mFreeSize >= alignedSize) {
|
||||
tailBlock = block;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (tailBlock) {
|
||||
return tailBlock->allocTail(alignedSize, mGroupId, this);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
asm void JKRAramHeap::getFreeSize(void) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRAramHeap/asm/func_802D3134.s"
|
||||
u32 JKRAramHeap::getFreeSize(void) {
|
||||
u32 maxFreeSize = 0;
|
||||
|
||||
lock();
|
||||
|
||||
JSUList<JKRAramBlock>* list = &lbl_8043430C;
|
||||
JSUListIterator<JKRAramBlock> iterator = list;
|
||||
for (; iterator != list->getEnd(); ++iterator) {
|
||||
if (iterator->mFreeSize > maxFreeSize) {
|
||||
maxFreeSize = iterator->mFreeSize;
|
||||
}
|
||||
}
|
||||
|
||||
unlock();
|
||||
return maxFreeSize;
|
||||
}
|
||||
|
||||
asm void JKRAramHeap::getTotalFreeSize(void) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRAramHeap/asm/func_802D31AC.s"
|
||||
u32 JKRAramHeap::getTotalFreeSize(void) {
|
||||
u32 totalFreeSize = 0;
|
||||
|
||||
lock();
|
||||
|
||||
JSUList<JKRAramBlock>* list = &lbl_8043430C;
|
||||
JSUListIterator<JKRAramBlock> iterator = list;
|
||||
for (; iterator != list->getEnd(); ++iterator) {
|
||||
totalFreeSize += iterator->mFreeSize;
|
||||
}
|
||||
|
||||
unlock();
|
||||
return totalFreeSize;
|
||||
}
|
||||
|
||||
asm void JKRAramHeap::dump(void) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRAramHeap/asm/func_802D3218.s"
|
||||
void JKRAramHeap::dump(void) {
|
||||
lock();
|
||||
|
||||
JSUList<JKRAramBlock>* list = &lbl_8043430C;
|
||||
JSUListIterator<JKRAramBlock> iterator = list;
|
||||
for (; iterator != list->getEnd(); ++iterator) {
|
||||
// The debug version calls OSReport
|
||||
}
|
||||
|
||||
unlock();
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
|
|
|||
|
|
@ -1,49 +1,142 @@
|
|||
#include "JSystem/JKernel/JKRAramPiece/JKRAramPiece.h"
|
||||
#include "global.h"
|
||||
|
||||
asm void JKRAramPiece::prepareCommand(int, u32, u32, u32, JKRAramBlock*, void (*)(u32)) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRAramPiece/asm/func_802D3574.s"
|
||||
#include "JSystem/JKernel/JKRDecomp/JKRDecomp.h"
|
||||
|
||||
JKRAMCommand* JKRAramPiece::prepareCommand(int direction, u32 src, u32 dst, u32 length,
|
||||
JKRAramBlock* block,
|
||||
JKRAMCommand::AsyncCallback callback) {
|
||||
JKRAMCommand* command = new (JKRHeap::getSystemHeap(), -4) JKRAMCommand();
|
||||
command->mTransferDirection = direction;
|
||||
command->mSrc = src;
|
||||
command->mDst = dst;
|
||||
command->mAramBlock = block;
|
||||
command->mDataLength = length;
|
||||
command->mCallback = callback;
|
||||
return command;
|
||||
}
|
||||
|
||||
asm void JKRAramPiece::sendCommand(JKRAMCommand*) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRAramPiece/asm/func_802D35F4.s"
|
||||
void JKRAramPiece::sendCommand(JKRAMCommand* command) {
|
||||
startDMA(command);
|
||||
}
|
||||
|
||||
asm void JKRAramPiece::orderAsync(int, u32, u32, u32, JKRAramBlock*, void (*)(u32)) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRAramPiece/asm/func_802D3614.s"
|
||||
JKRAMCommand* JKRAramPiece::orderAsync(int direction, u32 source, u32 destination, u32 length,
|
||||
JKRAramBlock* block, JKRAMCommand::AsyncCallback callback) {
|
||||
lock();
|
||||
if (((source & 0x1f) != 0) || ((destination & 0x1f) != 0)) {
|
||||
OSReport(lbl_8039D0B8, direction); // "direction = %x\n"
|
||||
OSReport(lbl_8039D0B8 + 0x10, source); // "source = %x\n"
|
||||
OSReport(lbl_8039D0B8 + 0x1D, destination); // "destination = %x\n"
|
||||
OSReport(lbl_8039D0B8 + 0x2F, length); // "length = %x\n"
|
||||
|
||||
const char* filename = lbl_8039D0B8 + 0x3C; // "JKRAramPiece.cpp"§
|
||||
const char* format = lbl_8039D0B8 + 0x3C + 0x11; // "%s"
|
||||
const char* arg1 = lbl_8039D0B8 + 0x3C + 0x14; // "illegal address. abort."
|
||||
JUTException_NS_panic_f(filename, 0x6c, format, arg1);
|
||||
}
|
||||
|
||||
Message* message = new (JKRHeap::getSystemHeap(), -4) Message();
|
||||
JKRAMCommand* command =
|
||||
JKRAramPiece::prepareCommand(direction, source, destination, length, block, callback);
|
||||
message->field_0x00 = 1;
|
||||
message->command = command;
|
||||
|
||||
OSSendMessage(&lbl_803CC138, message, OS_MESSAGE_BLOCKING);
|
||||
if (command->mCallback != NULL) {
|
||||
lbl_80434324.append(&command->mPieceLink);
|
||||
}
|
||||
|
||||
unlock();
|
||||
return command;
|
||||
}
|
||||
|
||||
asm void JKRAramPiece::sync(JKRAMCommand*, int) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRAramPiece/asm/func_802D3770.s"
|
||||
BOOL JKRAramPiece::sync(JKRAMCommand* command, int is_non_blocking) {
|
||||
OSMessage* message;
|
||||
|
||||
lock();
|
||||
if (is_non_blocking == 0) {
|
||||
OSReceiveMessage(&command->mMessageQueue, &message, OS_MESSAGE_BLOCKING);
|
||||
lbl_80434324.remove(&command->mPieceLink);
|
||||
unlock();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL result = OSReceiveMessage(&command->mMessageQueue, &message, OS_MESSAGE_NON_BLOCKING);
|
||||
if (!result) {
|
||||
unlock();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
lbl_80434324.remove(&command->mPieceLink);
|
||||
unlock();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
asm void JKRAramPiece::orderSync(int, u32, u32, u32, JKRAramBlock*) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRAramPiece/asm/func_802D3838.s"
|
||||
BOOL JKRAramPiece::orderSync(int direction, u32 source, u32 destination, u32 length,
|
||||
JKRAramBlock* block) {
|
||||
lock();
|
||||
|
||||
JKRAMCommand* command =
|
||||
JKRAramPiece::orderAsync(direction, source, destination, length, block, NULL);
|
||||
BOOL result = JKRAramPiece::sync(command, 0);
|
||||
delete command;
|
||||
|
||||
unlock();
|
||||
return result;
|
||||
}
|
||||
|
||||
asm void JKRAramPiece::startDMA(JKRAMCommand*) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRAramPiece/asm/func_802D38CC.s"
|
||||
void JKRAramPiece::startDMA(JKRAMCommand* command) {
|
||||
if (command->mTransferDirection == 1) {
|
||||
DCInvalidateRange((void*)command->mDst, command->mDataLength);
|
||||
} else {
|
||||
DCStoreRange((void*)command->mSrc, command->mDataLength);
|
||||
}
|
||||
|
||||
ARQPostRequest(&command->mRequest, 0, command->mTransferDirection, 0, command->mSrc,
|
||||
command->mDst, command->mDataLength, JKRAramPiece::doneDMA);
|
||||
}
|
||||
|
||||
asm void JKRAramPiece::doneDMA(u32) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRAramPiece/asm/func_802D3944.s"
|
||||
void JKRAramPiece::doneDMA(u32 requestAddress) {
|
||||
JKRAMCommand* command = (JKRAMCommand*)requestAddress;
|
||||
|
||||
if (command->mTransferDirection == 1) {
|
||||
DCInvalidateRange((void*)command->mDst, command->mDataLength);
|
||||
}
|
||||
|
||||
if (command->field_0x60 != 0) {
|
||||
if (command->field_0x60 == 2) {
|
||||
JKRDecomp::sendCommand(command->mDecompCommand);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (command->mCallback) {
|
||||
(*command->mCallback)(requestAddress);
|
||||
} else if (command->field_0x5C) {
|
||||
OSSendMessage(command->field_0x5C, command, OS_MESSAGE_NON_BLOCKING);
|
||||
} else {
|
||||
OSSendMessage(&command->mMessageQueue, command, OS_MESSAGE_NON_BLOCKING);
|
||||
}
|
||||
}
|
||||
|
||||
asm JKRAMCommand::JKRAMCommand(void) {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRAramPiece/asm/func_802D39EC.s"
|
||||
JKRAMCommand::JKRAMCommand() : mPieceLink(this), field_0x30(this) {
|
||||
OSInitMessageQueue(&mMessageQueue, &mMessage, 1);
|
||||
mCallback = NULL;
|
||||
field_0x5C = NULL;
|
||||
field_0x60 = 0;
|
||||
field_0x8C = NULL;
|
||||
field_0x90 = NULL;
|
||||
field_0x94 = NULL;
|
||||
}
|
||||
|
||||
asm JKRAMCommand::~JKRAMCommand() {
|
||||
nofralloc
|
||||
#include "JSystem/JKernel/JKRAramPiece/asm/func_802D3A5C.s"
|
||||
JKRAMCommand::~JKRAMCommand() {
|
||||
if (field_0x8C)
|
||||
delete field_0x8C;
|
||||
if (field_0x90)
|
||||
delete field_0x90;
|
||||
|
||||
if (field_0x94)
|
||||
JKRHeap::free(field_0x94, NULL);
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
|
|
|||
Loading…
Reference in New Issue