From df30e3d1959edd73343b2f0b898c6ab76434579e Mon Sep 17 00:00:00 2001 From: Noah McQueen <67965519+Yotona@users.noreply.github.com> Date: Sun, 28 May 2023 20:54:30 -0700 Subject: [PATCH] lib/TRK_MINNOW_DOLPHIN work (#341) --- Progress.md | 8 +- .../EXI2_DDH_GCN/main/ddh_cc_initinterrupts.s | 10 -- .../GCN/EXI2_DDH_GCN/main/ddh_cc_open.s | 11 -- .../GCN/EXI2_DDH_GCN/main/ddh_cc_post_stop.s | 10 -- .../EXI2_DDH_GCN/main/ddh_cc_pre_continue.s | 10 -- .../main/gdev_cc_initinterrupts.s | 10 -- .../GCN/EXI2_GDEV_GCN/main/gdev_cc_open.s | 11 -- .../EXI2_GDEV_GCN/main/gdev_cc_post_stop.s | 10 -- .../EXI2_GDEV_GCN/main/gdev_cc_pre_continue.s | 10 -- .../Portable/msghndlr/GetTRKConnected.s | 5 - .../Portable/msghndlr/SetTRKConnected.s | 4 - .../Portable/nubevent/TRKDestructEvent.s | 10 -- .../nubevent/TRKInitializeEventQueue.s | 23 ---- .../Portable/nubinit/TRKTerminateNub.s | 10 -- .../dolphin_trk/EnableMetroTRKInterrupts.s | 9 -- .../dolphin/dolphin_trk/TRKInitializeTarget.s | 20 --- .../dolphin/dolphin_trk/TRKTargetTranslate.s | 25 ---- .../CircleBuffer/CBGetBytesAvailableForRead.s | 3 - .../CircleBuffer/CircleBufferInitialize.s | 21 ---- .../CircleBuffer/CircleBufferReadBytes.s | 72 ----------- .../CircleBuffer/CircleBufferWriteBytes.s | 72 ----------- .../MWEnterCriticalSection.s | 13 -- .../MetroTRK/Portable/mutex_TRK.h | 4 + .../Os/dolphin/target_options.h | 3 + .../utils/common/CircleBuffer.h | 15 +++ .../utils/gc/MWCriticalSection_gc.h | 4 + include/amcstubs/AmcExi2Stubs.h | 9 ++ .../GCN/EXI2_DDH_GCN/main.c | 79 ++++-------- .../GCN/EXI2_GDEV_GCN/main.c | 68 ++++------ .../MetroTRK/Portable/msghndlr.c | 20 +-- .../MetroTRK/Portable/nubevent.c | 33 +++-- .../MetroTRK/Portable/nubinit.c | 16 +-- .../Os/dolphin/dolphin_trk.c | 56 ++++----- .../utils/common/CircleBuffer.c | 116 ++++++++++-------- .../utils/gc/MWCriticalSection_gc.c | 11 -- 35 files changed, 204 insertions(+), 607 deletions(-) delete mode 100644 asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main/ddh_cc_initinterrupts.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main/ddh_cc_open.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main/ddh_cc_post_stop.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main/ddh_cc_pre_continue.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main/gdev_cc_initinterrupts.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main/gdev_cc_open.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main/gdev_cc_post_stop.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main/gdev_cc_pre_continue.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/GetTRKConnected.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/SetTRKConnected.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent/TRKDestructEvent.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent/TRKInitializeEventQueue.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit/TRKTerminateNub.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/EnableMetroTRKInterrupts.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/TRKInitializeTarget.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/TRKTargetTranslate.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer/CBGetBytesAvailableForRead.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer/CircleBufferInitialize.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer/CircleBufferReadBytes.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer/CircleBufferWriteBytes.s delete mode 100644 asm/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc/MWEnterCriticalSection.s diff --git a/Progress.md b/Progress.md index 2dae7288b26..e6d82f93866 100644 --- a/Progress.md +++ b/Progress.md @@ -7,22 +7,22 @@ Section | Percentage | Decompiled (bytes) | Total (bytes) .init | 97.972973% | 9280 | 9472 .extab | 100.000000% | 96 | 96 .extabindex | 100.000000% | 96 | 96 -.text | 26.866903% | 966280 | 3596544 +.text | 26.904050% | 967616 | 3596544 .ctors | 100.000000% | 448 | 448 .dtors | 100.000000% | 32 | 32 .rodata | 100.000000% | 193856 | 193856 .data | 100.000000% | 197632 | 197632 .sdata | 100.000000% | 1408 | 1408 .sdata2 | 100.000000% | 20832 | 20832 -Total | 34.576708% | 1390216 | 4020672 +Total | 34.609936% | 1391552 | 4020672 ## Total Section | Percentage | Decompiled (bytes) | Total (bytes) ---|---|---|--- -main.dol | 34.576708% | 1390216 | 4020672 +main.dol | 34.609936% | 1391552 | 4020672 RELs | 33.600166% | 3864128 | 11500324 -Total | 33.853137% | 5254344 | 15520996 +Total | 33.861744% | 5255680 | 15520996 ## RELs diff --git a/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main/ddh_cc_initinterrupts.s b/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main/ddh_cc_initinterrupts.s deleted file mode 100644 index 0ec6b8480b4..00000000000 --- a/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main/ddh_cc_initinterrupts.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8037235C: -/* 8037235C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80372360 7C 08 02 A6 */ mflr r0 -/* 80372364 90 01 00 14 */ stw r0, 0x14(r1) -/* 80372368 48 00 09 99 */ bl EXI2_EnableInterrupts -/* 8037236C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80372370 38 60 00 00 */ li r3, 0 -/* 80372374 7C 08 03 A6 */ mtlr r0 -/* 80372378 38 21 00 10 */ addi r1, r1, 0x10 -/* 8037237C 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main/ddh_cc_open.s b/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main/ddh_cc_open.s deleted file mode 100644 index ce34737546c..00000000000 --- a/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main/ddh_cc_open.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_803725EC: -/* 803725EC 80 0D 94 40 */ lwz r0, gIsInitialized(r13) -/* 803725F0 2C 00 00 00 */ cmpwi r0, 0 -/* 803725F4 41 82 00 0C */ beq lbl_80372600 -/* 803725F8 38 60 D8 EB */ li r3, -10005 -/* 803725FC 4E 80 00 20 */ blr -lbl_80372600: -/* 80372600 38 00 00 01 */ li r0, 1 -/* 80372604 38 60 00 00 */ li r3, 0 -/* 80372608 90 0D 94 40 */ stw r0, gIsInitialized(r13) -/* 8037260C 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main/ddh_cc_post_stop.s b/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main/ddh_cc_post_stop.s deleted file mode 100644 index 2835a699f69..00000000000 --- a/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main/ddh_cc_post_stop.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_803723F0: -/* 803723F0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 803723F4 7C 08 02 A6 */ mflr r0 -/* 803723F8 90 01 00 14 */ stw r0, 0x14(r1) -/* 803723FC 48 00 09 21 */ bl EXI2_Reserve -/* 80372400 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80372404 38 60 00 00 */ li r3, 0 -/* 80372408 7C 08 03 A6 */ mtlr r0 -/* 8037240C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80372410 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main/ddh_cc_pre_continue.s b/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main/ddh_cc_pre_continue.s deleted file mode 100644 index 00e7074f3c2..00000000000 --- a/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main/ddh_cc_pre_continue.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_80372414: -/* 80372414 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80372418 7C 08 02 A6 */ mflr r0 -/* 8037241C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80372420 48 00 09 01 */ bl EXI2_Unreserve -/* 80372424 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80372428 38 60 00 00 */ li r3, 0 -/* 8037242C 7C 08 03 A6 */ mtlr r0 -/* 80372430 38 21 00 10 */ addi r1, r1, 0x10 -/* 80372434 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main/gdev_cc_initinterrupts.s b/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main/gdev_cc_initinterrupts.s deleted file mode 100644 index b48643919e0..00000000000 --- a/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main/gdev_cc_initinterrupts.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_80372908: -/* 80372908 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8037290C 7C 08 02 A6 */ mflr r0 -/* 80372910 90 01 00 14 */ stw r0, 0x14(r1) -/* 80372914 48 00 07 A9 */ bl DBInitInterrupts -/* 80372918 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8037291C 38 60 00 00 */ li r3, 0 -/* 80372920 7C 08 03 A6 */ mtlr r0 -/* 80372924 38 21 00 10 */ addi r1, r1, 0x10 -/* 80372928 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main/gdev_cc_open.s b/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main/gdev_cc_open.s deleted file mode 100644 index d579d3a4d41..00000000000 --- a/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main/gdev_cc_open.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_80372BA0: -/* 80372BA0 80 0D 94 48 */ lwz r0, gIsInitialized(r13) -/* 80372BA4 2C 00 00 00 */ cmpwi r0, 0 -/* 80372BA8 41 82 00 0C */ beq lbl_80372BB4 -/* 80372BAC 38 60 D8 EB */ li r3, -10005 -/* 80372BB0 4E 80 00 20 */ blr -lbl_80372BB4: -/* 80372BB4 38 00 00 01 */ li r0, 1 -/* 80372BB8 38 60 00 00 */ li r3, 0 -/* 80372BBC 90 0D 94 48 */ stw r0, gIsInitialized(r13) -/* 80372BC0 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main/gdev_cc_post_stop.s b/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main/gdev_cc_post_stop.s deleted file mode 100644 index b6ed4dda904..00000000000 --- a/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main/gdev_cc_post_stop.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8037299C: -/* 8037299C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 803729A0 7C 08 02 A6 */ mflr r0 -/* 803729A4 90 01 00 14 */ stw r0, 0x14(r1) -/* 803729A8 48 00 03 89 */ bl DBOpen -/* 803729AC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 803729B0 38 60 00 00 */ li r3, 0 -/* 803729B4 7C 08 03 A6 */ mtlr r0 -/* 803729B8 38 21 00 10 */ addi r1, r1, 0x10 -/* 803729BC 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main/gdev_cc_pre_continue.s b/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main/gdev_cc_pre_continue.s deleted file mode 100644 index 2385f625069..00000000000 --- a/asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main/gdev_cc_pre_continue.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_803729C0: -/* 803729C0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 803729C4 7C 08 02 A6 */ mflr r0 -/* 803729C8 90 01 00 14 */ stw r0, 0x14(r1) -/* 803729CC 48 00 03 61 */ bl DBClose -/* 803729D0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 803729D4 38 60 00 00 */ li r3, 0 -/* 803729D8 7C 08 03 A6 */ mtlr r0 -/* 803729DC 38 21 00 10 */ addi r1, r1, 0x10 -/* 803729E0 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/GetTRKConnected.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/GetTRKConnected.s deleted file mode 100644 index 0632f8eedf7..00000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/GetTRKConnected.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_8036ECCC: -/* 8036ECCC 3C 60 80 45 */ lis r3, IsTRKConnected@ha /* 0x8044F288@ha */ -/* 8036ECD0 38 63 F2 88 */ addi r3, r3, IsTRKConnected@l /* 0x8044F288@l */ -/* 8036ECD4 80 63 00 00 */ lwz r3, 0(r3) -/* 8036ECD8 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/SetTRKConnected.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/SetTRKConnected.s deleted file mode 100644 index 54617bf884f..00000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/SetTRKConnected.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_8036ECC0: -/* 8036ECC0 3C 80 80 45 */ lis r4, IsTRKConnected@ha /* 0x8044F288@ha */ -/* 8036ECC4 90 64 F2 88 */ stw r3, IsTRKConnected@l(r4) /* 0x8044F288@l */ -/* 8036ECC8 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent/TRKDestructEvent.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent/TRKDestructEvent.s deleted file mode 100644 index 9c85ccc3526..00000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent/TRKDestructEvent.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8036CC18: -/* 8036CC18 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8036CC1C 7C 08 02 A6 */ mflr r0 -/* 8036CC20 90 01 00 14 */ stw r0, 0x14(r1) -/* 8036CC24 80 63 00 08 */ lwz r3, 8(r3) -/* 8036CC28 48 00 0A 65 */ bl TRKReleaseBuffer -/* 8036CC2C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8036CC30 7C 08 03 A6 */ mtlr r0 -/* 8036CC34 38 21 00 10 */ addi r1, r1, 0x10 -/* 8036CC38 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent/TRKInitializeEventQueue.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent/TRKInitializeEventQueue.s deleted file mode 100644 index 9508ad76584..00000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent/TRKInitializeEventQueue.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_8036CDE8: -/* 8036CDE8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8036CDEC 7C 08 02 A6 */ mflr r0 -/* 8036CDF0 3C 60 80 45 */ lis r3, gTRKEventQueue@ha /* 0x8044D890@ha */ -/* 8036CDF4 90 01 00 14 */ stw r0, 0x14(r1) -/* 8036CDF8 38 63 D8 90 */ addi r3, r3, gTRKEventQueue@l /* 0x8044D890@l */ -/* 8036CDFC 48 00 26 AD */ bl TRKInitializeMutex -/* 8036CE00 3C 60 80 45 */ lis r3, gTRKEventQueue@ha /* 0x8044D890@ha */ -/* 8036CE04 38 63 D8 90 */ addi r3, r3, gTRKEventQueue@l /* 0x8044D890@l */ -/* 8036CE08 48 00 26 99 */ bl TRKAcquireMutex -/* 8036CE0C 3C 60 80 45 */ lis r3, gTRKEventQueue@ha /* 0x8044D890@ha */ -/* 8036CE10 38 80 00 00 */ li r4, 0 -/* 8036CE14 38 63 D8 90 */ addi r3, r3, gTRKEventQueue@l /* 0x8044D890@l */ -/* 8036CE18 38 00 01 00 */ li r0, 0x100 -/* 8036CE1C 90 83 00 04 */ stw r4, 4(r3) -/* 8036CE20 90 83 00 08 */ stw r4, 8(r3) -/* 8036CE24 90 03 00 24 */ stw r0, 0x24(r3) -/* 8036CE28 48 00 26 71 */ bl TRKReleaseMutex -/* 8036CE2C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8036CE30 38 60 00 00 */ li r3, 0 -/* 8036CE34 7C 08 03 A6 */ mtlr r0 -/* 8036CE38 38 21 00 10 */ addi r1, r1, 0x10 -/* 8036CE3C 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit/TRKTerminateNub.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit/TRKTerminateNub.s deleted file mode 100644 index a599ff252bf..00000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit/TRKTerminateNub.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8036CE68: -/* 8036CE68 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8036CE6C 7C 08 02 A6 */ mflr r0 -/* 8036CE70 90 01 00 14 */ stw r0, 0x14(r1) -/* 8036CE74 48 00 09 E5 */ bl TRKTerminateSerialHandler -/* 8036CE78 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8036CE7C 38 60 00 00 */ li r3, 0 -/* 8036CE80 7C 08 03 A6 */ mtlr r0 -/* 8036CE84 38 21 00 10 */ addi r1, r1, 0x10 -/* 8036CE88 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/EnableMetroTRKInterrupts.s b/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/EnableMetroTRKInterrupts.s deleted file mode 100644 index 60f5d6f9cf8..00000000000 --- a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/EnableMetroTRKInterrupts.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80371B7C: -/* 80371B7C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80371B80 7C 08 02 A6 */ mflr r0 -/* 80371B84 90 01 00 14 */ stw r0, 0x14(r1) -/* 80371B88 48 00 02 89 */ bl EnableEXI2Interrupts -/* 80371B8C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80371B90 7C 08 03 A6 */ mtlr r0 -/* 80371B94 38 21 00 10 */ addi r1, r1, 0x10 -/* 80371B98 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/TRKInitializeTarget.s b/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/TRKInitializeTarget.s deleted file mode 100644 index 6e4b9e9b9cd..00000000000 --- a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/TRKInitializeTarget.s +++ /dev/null @@ -1,20 +0,0 @@ -lbl_803719AC: -/* 803719AC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 803719B0 7C 08 02 A6 */ mflr r0 -/* 803719B4 3C 60 80 45 */ lis r3, gTRKState@ha /* 0x8044F294@ha */ -/* 803719B8 90 01 00 14 */ stw r0, 0x14(r1) -/* 803719BC 38 00 00 01 */ li r0, 1 -/* 803719C0 38 63 F2 94 */ addi r3, r3, gTRKState@l /* 0x8044F294@l */ -/* 803719C4 90 03 00 98 */ stw r0, 0x98(r3) -/* 803719C8 4B FF DC 71 */ bl __TRK_get_MSR -/* 803719CC 3C A0 80 45 */ lis r5, gTRKState@ha /* 0x8044F294@ha */ -/* 803719D0 3C 80 80 45 */ lis r4, lc_base@ha /* 0x8044F810@ha */ -/* 803719D4 38 A5 F2 94 */ addi r5, r5, gTRKState@l /* 0x8044F294@l */ -/* 803719D8 3C 00 E0 00 */ lis r0, 0xe000 -/* 803719DC 90 65 00 8C */ stw r3, 0x8c(r5) -/* 803719E0 38 60 00 00 */ li r3, 0 -/* 803719E4 90 04 F8 10 */ stw r0, lc_base@l(r4) /* 0x8044F810@l */ -/* 803719E8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 803719EC 7C 08 03 A6 */ mtlr r0 -/* 803719F0 38 21 00 10 */ addi r1, r1, 0x10 -/* 803719F4 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/TRKTargetTranslate.s b/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/TRKTargetTranslate.s deleted file mode 100644 index 0df6d57f9fe..00000000000 --- a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/TRKTargetTranslate.s +++ /dev/null @@ -1,25 +0,0 @@ -lbl_80371B24: -/* 80371B24 3C 80 80 45 */ lis r4, lc_base@ha /* 0x8044F810@ha */ -/* 80371B28 38 84 F8 10 */ addi r4, r4, lc_base@l /* 0x8044F810@l */ -/* 80371B2C 80 84 00 00 */ lwz r4, 0(r4) -/* 80371B30 7C 03 20 40 */ cmplw r3, r4 -/* 80371B34 41 80 00 24 */ blt lbl_80371B58 -/* 80371B38 38 04 40 00 */ addi r0, r4, 0x4000 -/* 80371B3C 7C 03 00 40 */ cmplw r3, r0 -/* 80371B40 40 80 00 18 */ bge lbl_80371B58 -/* 80371B44 3C 80 80 45 */ lis r4, gTRKCPUState@ha /* 0x8044F338@ha */ -/* 80371B48 38 84 F3 38 */ addi r4, r4, gTRKCPUState@l /* 0x8044F338@l */ -/* 80371B4C 80 04 02 38 */ lwz r0, 0x238(r4) -/* 80371B50 54 00 07 BF */ clrlwi. r0, r0, 0x1e -/* 80371B54 4C 82 00 20 */ bnelr -lbl_80371B58: -/* 80371B58 3C 00 7E 00 */ lis r0, 0x7e00 -/* 80371B5C 7C 03 00 40 */ cmplw r3, r0 -/* 80371B60 41 80 00 10 */ blt lbl_80371B70 -/* 80371B64 3C 00 80 00 */ lis r0, 0x8000 -/* 80371B68 7C 03 00 40 */ cmplw r3, r0 -/* 80371B6C 4C 81 00 20 */ blelr -lbl_80371B70: -/* 80371B70 54 60 00 BE */ clrlwi r0, r3, 2 -/* 80371B74 64 03 80 00 */ oris r3, r0, 0x8000 -/* 80371B78 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer/CBGetBytesAvailableForRead.s b/asm/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer/CBGetBytesAvailableForRead.s deleted file mode 100644 index 554fb3750fe..00000000000 --- a/asm/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer/CBGetBytesAvailableForRead.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_80372900: -/* 80372900 80 63 00 10 */ lwz r3, 0x10(r3) -/* 80372904 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer/CircleBufferInitialize.s b/asm/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer/CircleBufferInitialize.s deleted file mode 100644 index f4adbcbd9d9..00000000000 --- a/asm/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer/CircleBufferInitialize.s +++ /dev/null @@ -1,21 +0,0 @@ -lbl_803728B0: -/* 803728B0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 803728B4 7C 08 02 A6 */ mflr r0 -/* 803728B8 7C 66 1B 78 */ mr r6, r3 -/* 803728BC 90 01 00 14 */ stw r0, 0x14(r1) -/* 803728C0 38 00 00 00 */ li r0, 0 -/* 803728C4 90 83 00 08 */ stw r4, 8(r3) -/* 803728C8 38 66 00 18 */ addi r3, r6, 0x18 -/* 803728CC 90 A6 00 0C */ stw r5, 0xc(r6) -/* 803728D0 80 86 00 08 */ lwz r4, 8(r6) -/* 803728D4 90 86 00 00 */ stw r4, 0(r6) -/* 803728D8 80 86 00 08 */ lwz r4, 8(r6) -/* 803728DC 90 86 00 04 */ stw r4, 4(r6) -/* 803728E0 90 06 00 10 */ stw r0, 0x10(r6) -/* 803728E4 80 06 00 0C */ lwz r0, 0xc(r6) -/* 803728E8 90 06 00 14 */ stw r0, 0x14(r6) -/* 803728EC 48 00 04 0D */ bl MWInitializeCriticalSection -/* 803728F0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 803728F4 7C 08 03 A6 */ mtlr r0 -/* 803728F8 38 21 00 10 */ addi r1, r1, 0x10 -/* 803728FC 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer/CircleBufferReadBytes.s b/asm/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer/CircleBufferReadBytes.s deleted file mode 100644 index 542fdc5a645..00000000000 --- a/asm/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer/CircleBufferReadBytes.s +++ /dev/null @@ -1,72 +0,0 @@ -lbl_803726A0: -/* 803726A0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 803726A4 7C 08 02 A6 */ mflr r0 -/* 803726A8 90 01 00 24 */ stw r0, 0x24(r1) -/* 803726AC 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 803726B0 7C BF 2B 78 */ mr r31, r5 -/* 803726B4 93 C1 00 18 */ stw r30, 0x18(r1) -/* 803726B8 7C 7E 1B 78 */ mr r30, r3 -/* 803726BC 93 A1 00 14 */ stw r29, 0x14(r1) -/* 803726C0 93 81 00 10 */ stw r28, 0x10(r1) -/* 803726C4 7C 9C 23 78 */ mr r28, r4 -/* 803726C8 80 03 00 10 */ lwz r0, 0x10(r3) -/* 803726CC 7C 1F 00 40 */ cmplw r31, r0 -/* 803726D0 40 81 00 0C */ ble lbl_803726DC -/* 803726D4 38 60 FF FF */ li r3, -1 -/* 803726D8 48 00 00 B0 */ b lbl_80372788 -lbl_803726DC: -/* 803726DC 38 7E 00 18 */ addi r3, r30, 0x18 -/* 803726E0 48 00 05 E9 */ bl MWEnterCriticalSection -/* 803726E4 80 7E 00 08 */ lwz r3, 8(r30) -/* 803726E8 80 9E 00 00 */ lwz r4, 0(r30) -/* 803726EC 80 1E 00 0C */ lwz r0, 0xc(r30) -/* 803726F0 7C 63 20 50 */ subf r3, r3, r4 -/* 803726F4 7F A3 00 50 */ subf r29, r3, r0 -/* 803726F8 7C 1F E8 40 */ cmplw r31, r29 -/* 803726FC 40 80 00 20 */ bge lbl_8037271C -/* 80372700 7F 83 E3 78 */ mr r3, r28 -/* 80372704 7F E5 FB 78 */ mr r5, r31 -/* 80372708 4B C9 0E 39 */ bl memcpy -/* 8037270C 80 1E 00 00 */ lwz r0, 0(r30) -/* 80372710 7C 00 FA 14 */ add r0, r0, r31 -/* 80372714 90 1E 00 00 */ stw r0, 0(r30) -/* 80372718 48 00 00 30 */ b lbl_80372748 -lbl_8037271C: -/* 8037271C 7F 83 E3 78 */ mr r3, r28 -/* 80372720 7F A5 EB 78 */ mr r5, r29 -/* 80372724 4B C9 0E 1D */ bl memcpy -/* 80372728 80 9E 00 08 */ lwz r4, 8(r30) -/* 8037272C 7C 7C EA 14 */ add r3, r28, r29 -/* 80372730 7C BD F8 50 */ subf r5, r29, r31 -/* 80372734 4B C9 0E 0D */ bl memcpy -/* 80372738 80 1E 00 08 */ lwz r0, 8(r30) -/* 8037273C 7C 00 FA 14 */ add r0, r0, r31 -/* 80372740 7C 1D 00 50 */ subf r0, r29, r0 -/* 80372744 90 1E 00 00 */ stw r0, 0(r30) -lbl_80372748: -/* 80372748 80 9E 00 08 */ lwz r4, 8(r30) -/* 8037274C 80 1E 00 00 */ lwz r0, 0(r30) -/* 80372750 80 7E 00 0C */ lwz r3, 0xc(r30) -/* 80372754 7C 04 00 50 */ subf r0, r4, r0 -/* 80372758 7C 03 00 40 */ cmplw r3, r0 -/* 8037275C 40 82 00 08 */ bne lbl_80372764 -/* 80372760 90 9E 00 00 */ stw r4, 0(r30) -lbl_80372764: -/* 80372764 80 1E 00 14 */ lwz r0, 0x14(r30) -/* 80372768 38 7E 00 18 */ addi r3, r30, 0x18 -/* 8037276C 7C 00 FA 14 */ add r0, r0, r31 -/* 80372770 90 1E 00 14 */ stw r0, 0x14(r30) -/* 80372774 80 1E 00 10 */ lwz r0, 0x10(r30) -/* 80372778 7C 1F 00 50 */ subf r0, r31, r0 -/* 8037277C 90 1E 00 10 */ stw r0, 0x10(r30) -/* 80372780 48 00 05 25 */ bl MWExitCriticalSection -/* 80372784 38 60 00 00 */ li r3, 0 -lbl_80372788: -/* 80372788 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8037278C 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80372790 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80372794 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 80372798 83 81 00 10 */ lwz r28, 0x10(r1) -/* 8037279C 7C 08 03 A6 */ mtlr r0 -/* 803727A0 38 21 00 20 */ addi r1, r1, 0x20 -/* 803727A4 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer/CircleBufferWriteBytes.s b/asm/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer/CircleBufferWriteBytes.s deleted file mode 100644 index 8aba9630c0f..00000000000 --- a/asm/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer/CircleBufferWriteBytes.s +++ /dev/null @@ -1,72 +0,0 @@ -lbl_803727A8: -/* 803727A8 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 803727AC 7C 08 02 A6 */ mflr r0 -/* 803727B0 90 01 00 24 */ stw r0, 0x24(r1) -/* 803727B4 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 803727B8 7C BF 2B 78 */ mr r31, r5 -/* 803727BC 93 C1 00 18 */ stw r30, 0x18(r1) -/* 803727C0 7C 7E 1B 78 */ mr r30, r3 -/* 803727C4 93 A1 00 14 */ stw r29, 0x14(r1) -/* 803727C8 93 81 00 10 */ stw r28, 0x10(r1) -/* 803727CC 7C 9C 23 78 */ mr r28, r4 -/* 803727D0 80 03 00 14 */ lwz r0, 0x14(r3) -/* 803727D4 7C 1F 00 40 */ cmplw r31, r0 -/* 803727D8 40 81 00 0C */ ble lbl_803727E4 -/* 803727DC 38 60 FF FF */ li r3, -1 -/* 803727E0 48 00 00 B0 */ b lbl_80372890 -lbl_803727E4: -/* 803727E4 38 7E 00 18 */ addi r3, r30, 0x18 -/* 803727E8 48 00 04 E1 */ bl MWEnterCriticalSection -/* 803727EC 80 9E 00 08 */ lwz r4, 8(r30) -/* 803727F0 80 7E 00 04 */ lwz r3, 4(r30) -/* 803727F4 80 1E 00 0C */ lwz r0, 0xc(r30) -/* 803727F8 7C 84 18 50 */ subf r4, r4, r3 -/* 803727FC 7F A4 00 50 */ subf r29, r4, r0 -/* 80372800 7C 1D F8 40 */ cmplw r29, r31 -/* 80372804 41 80 00 20 */ blt lbl_80372824 -/* 80372808 7F 84 E3 78 */ mr r4, r28 -/* 8037280C 7F E5 FB 78 */ mr r5, r31 -/* 80372810 4B C9 0D 31 */ bl memcpy -/* 80372814 80 1E 00 04 */ lwz r0, 4(r30) -/* 80372818 7C 00 FA 14 */ add r0, r0, r31 -/* 8037281C 90 1E 00 04 */ stw r0, 4(r30) -/* 80372820 48 00 00 30 */ b lbl_80372850 -lbl_80372824: -/* 80372824 7F 84 E3 78 */ mr r4, r28 -/* 80372828 7F A5 EB 78 */ mr r5, r29 -/* 8037282C 4B C9 0D 15 */ bl memcpy -/* 80372830 80 7E 00 08 */ lwz r3, 8(r30) -/* 80372834 7C 9C EA 14 */ add r4, r28, r29 -/* 80372838 7C BD F8 50 */ subf r5, r29, r31 -/* 8037283C 4B C9 0D 05 */ bl memcpy -/* 80372840 80 1E 00 08 */ lwz r0, 8(r30) -/* 80372844 7C 00 FA 14 */ add r0, r0, r31 -/* 80372848 7C 1D 00 50 */ subf r0, r29, r0 -/* 8037284C 90 1E 00 04 */ stw r0, 4(r30) -lbl_80372850: -/* 80372850 80 9E 00 08 */ lwz r4, 8(r30) -/* 80372854 80 1E 00 04 */ lwz r0, 4(r30) -/* 80372858 80 7E 00 0C */ lwz r3, 0xc(r30) -/* 8037285C 7C 04 00 50 */ subf r0, r4, r0 -/* 80372860 7C 03 00 40 */ cmplw r3, r0 -/* 80372864 40 82 00 08 */ bne lbl_8037286C -/* 80372868 90 9E 00 04 */ stw r4, 4(r30) -lbl_8037286C: -/* 8037286C 80 1E 00 14 */ lwz r0, 0x14(r30) -/* 80372870 38 7E 00 18 */ addi r3, r30, 0x18 -/* 80372874 7C 1F 00 50 */ subf r0, r31, r0 -/* 80372878 90 1E 00 14 */ stw r0, 0x14(r30) -/* 8037287C 80 1E 00 10 */ lwz r0, 0x10(r30) -/* 80372880 7C 00 FA 14 */ add r0, r0, r31 -/* 80372884 90 1E 00 10 */ stw r0, 0x10(r30) -/* 80372888 48 00 04 1D */ bl MWExitCriticalSection -/* 8037288C 38 60 00 00 */ li r3, 0 -lbl_80372890: -/* 80372890 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80372894 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80372898 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 8037289C 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 803728A0 83 81 00 10 */ lwz r28, 0x10(r1) -/* 803728A4 7C 08 03 A6 */ mtlr r0 -/* 803728A8 38 21 00 20 */ addi r1, r1, 0x20 -/* 803728AC 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc/MWEnterCriticalSection.s b/asm/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc/MWEnterCriticalSection.s deleted file mode 100644 index ccf0f17aec5..00000000000 --- a/asm/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc/MWEnterCriticalSection.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80372CC8: -/* 80372CC8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80372CCC 7C 08 02 A6 */ mflr r0 -/* 80372CD0 90 01 00 14 */ stw r0, 0x14(r1) -/* 80372CD4 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80372CD8 7C 7F 1B 78 */ mr r31, r3 -/* 80372CDC 4B FC AA 19 */ bl OSDisableInterrupts -/* 80372CE0 90 7F 00 00 */ stw r3, 0(r31) -/* 80372CE4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80372CE8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80372CEC 7C 08 03 A6 */ mtlr r0 -/* 80372CF0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80372CF4 4E 80 00 20 */ blr diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h index d8863f3471f..9139673dc80 100644 --- a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h @@ -3,4 +3,8 @@ #include "dolphin/types.h" +u8 TRKReleaseMutex(); +u8 TRKAcquireMutex(); +u8 TRKInitializeMutex(); + #endif /* METROTRK_PORTABLE_MUTEX_TRK_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/Os/dolphin/target_options.h b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/target_options.h index 9f18712d1db..2e81c94a799 100644 --- a/include/TRK_MINNOW_DOLPHIN/Os/dolphin/target_options.h +++ b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/target_options.h @@ -3,4 +3,7 @@ #include "dolphin/types.h" +u8 GetUseSerialIO(); +void SetUseSerialIO(u8); + #endif /* OS_DOLPHIN_TARGET_OPTIONS_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer.h b/include/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer.h index 7466d146944..72693ecc25e 100644 --- a/include/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer.h +++ b/include/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer.h @@ -3,4 +3,19 @@ #include "dolphin/types.h" +typedef struct CircleBuffer { + int field_0x0; + int field_0x4; + int field_0x8; + u32 field_0xc; + s32 readBuf; + u32 field_0x14; + u32 criticalSection; +} CircleBuffer; + +s32 CircleBufferReadBytes(CircleBuffer*, u32, u32); +s32 CircleBufferWriteBytes(CircleBuffer* buf, s32 param_2, u32 param_3); +void CircleBufferInitialize(CircleBuffer* buf, s32 param_2, s32 param_3); +s32 CBGetBytesAvailableForRead(CircleBuffer* buf); + #endif /* UTILS_COMMON_CIRCLEBUFFER_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc.h b/include/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc.h index d8b3c0a9a58..b0193083558 100644 --- a/include/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc.h +++ b/include/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc.h @@ -3,4 +3,8 @@ #include "dolphin/types.h" +void MWExitCriticalSection(u32* section); +void MWEnterCriticalSection(u32* section); +void MWInitializeCriticalSection(); + #endif /* UTILS_GC_MWCRITICALSECTION_GC_H */ diff --git a/include/amcstubs/AmcExi2Stubs.h b/include/amcstubs/AmcExi2Stubs.h index 47cf965e4b3..707b3022e31 100644 --- a/include/amcstubs/AmcExi2Stubs.h +++ b/include/amcstubs/AmcExi2Stubs.h @@ -3,4 +3,13 @@ #include "dolphin/types.h" +void EXI2_Init(void); +void EXI2_EnableInterrupts(void); +u8 EXI2_Poll(void); +u8 EXI2_ReadN(void*, u32); +u8 EXI2_WriteN(void*, u32); +void EXI2_Reserve(void); +void EXI2_Unreserve(void); +u8 AMC_IsStub(void); + #endif /* AMCEXI2STUBS_H */ diff --git a/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main.c b/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main.c index 6e85dc39257..41396b26986 100644 --- a/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main.c +++ b/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main.c @@ -4,6 +4,9 @@ // #include "TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main.h" +#include "TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer.h" +#include "TRK_MINNOW_DOLPHIN/utils/common/MWTrace.h" +#include "amcstubs/AmcExi2Stubs.h" #include "dol2asm.h" #include "dolphin/types.h" @@ -11,34 +14,17 @@ // Forward References: // -void ddh_cc_initinterrupts(); +int ddh_cc_initinterrupts(); void ddh_cc_peek(); -void ddh_cc_post_stop(); -void ddh_cc_pre_continue(); +int ddh_cc_post_stop(); +int ddh_cc_pre_continue(); void ddh_cc_write(); void ddh_cc_read(); u8 ddh_cc_close(); -void ddh_cc_open(); +s32 ddh_cc_open(); u8 ddh_cc_shutdown(); void ddh_cc_initialize(); -// -// External References: -// - -void CircleBufferReadBytes(); -void CircleBufferWriteBytes(); -void CircleBufferInitialize(); -void CBGetBytesAvailableForRead(); -void MWTRACE(); -void EXI2_Init(); -void EXI2_EnableInterrupts(); -u8 EXI2_Poll(); -u8 EXI2_ReadN(); -u8 EXI2_WriteN(); -void EXI2_Reserve(); -void EXI2_Unreserve(); - // // Declarations: // @@ -48,23 +34,19 @@ void EXI2_Unreserve(); static u8 gRecvBuf[2048]; /* 80450030-80450050 07CD50 001C+04 3/3 0/0 0/0 .bss gRecvCB */ -static u8 gRecvCB[28 + 4 /* padding */]; +static CircleBuffer gRecvCB; // copied from pikmin2. should try to find a real fix static makeMainBSSOrderingWork() { - u8 buff[0x500]; - memcpy(buff, gRecvBuf, 0x500); + u8 buff[0x500]; + memcpy(buff, gRecvBuf, 0x500); } /* 8037235C-80372380 36CC9C 0024+00 0/0 1/1 0/0 .text ddh_cc_initinterrupts */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void ddh_cc_initinterrupts() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main/ddh_cc_initinterrupts.s" +int ddh_cc_initinterrupts() { + EXI2_EnableInterrupts(); + return 0; } -#pragma pop /* 80372380-803723F0 36CCC0 0070+00 0/0 1/1 0/0 .text ddh_cc_peek */ #pragma push @@ -77,24 +59,16 @@ asm void ddh_cc_peek() { #pragma pop /* 803723F0-80372414 36CD30 0024+00 0/0 1/1 0/0 .text ddh_cc_post_stop */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void ddh_cc_post_stop() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main/ddh_cc_post_stop.s" +int ddh_cc_post_stop() { + EXI2_Reserve(); + return 0; } -#pragma pop /* 80372414-80372438 36CD54 0024+00 0/0 1/1 0/0 .text ddh_cc_pre_continue */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void ddh_cc_pre_continue() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main/ddh_cc_pre_continue.s" +int ddh_cc_pre_continue() { + EXI2_Unreserve(); + return 0; } -#pragma pop /* ############################################################################################## */ /* 803A2D10-803A2D24 02F370 0014+00 1/1 0/0 0/0 .rodata @318 */ @@ -116,7 +90,7 @@ COMPILER_STRIP_GATE(0x803A2D50, &lit_320); #pragma pop /* 804519C0-804519C8 000EC0 0004+04 3/3 0/0 0/0 .sbss gIsInitialized */ -static u8 gIsInitialized[4 + 4 /* padding */]; +static BOOL gIsInitialized; /* 80372438-803724F8 36CD78 00C0+00 0/0 1/1 0/0 .text ddh_cc_write */ #pragma push @@ -153,14 +127,13 @@ u8 ddh_cc_close() { } /* 803725EC-80372610 36CF2C 0024+00 0/0 1/1 0/0 .text ddh_cc_open */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void ddh_cc_open() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main/ddh_cc_open.s" +s32 ddh_cc_open() { + if (gIsInitialized != FALSE) { + return -10005; + } + gIsInitialized = TRUE; + return 0; } -#pragma pop /* 80372610-80372618 36CF50 0008+00 0/0 1/1 0/0 .text ddh_cc_shutdown */ u8 ddh_cc_shutdown() { diff --git a/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main.c b/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main.c index d1d349c3cad..7e010d1ead0 100644 --- a/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main.c +++ b/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main.c @@ -4,6 +4,7 @@ // #include "TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main.h" +#include "TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer.h" #include "dol2asm.h" #include "dolphin/types.h" @@ -11,14 +12,14 @@ // Forward References: // -void gdev_cc_initinterrupts(); +u8 gdev_cc_initinterrupts(); void gdev_cc_peek(); -void gdev_cc_post_stop(); -void gdev_cc_pre_continue(); +u8 gdev_cc_post_stop(); +u8 gdev_cc_pre_continue(); void gdev_cc_write(); void gdev_cc_read(); u8 gdev_cc_close(); -void gdev_cc_open(); +s32 gdev_cc_open(); u8 gdev_cc_shutdown(); void gdev_cc_initialize(); @@ -26,16 +27,12 @@ void gdev_cc_initialize(); // External References: // -void CircleBufferReadBytes(); -void CircleBufferWriteBytes(); -void CircleBufferInitialize(); -void CBGetBytesAvailableForRead(); void MWTRACE(); void DBClose(); void DBOpen(); void DBWrite(); -void DBRead(); -void DBQueryData(); +int DBRead(); +int DBQueryData(); void DBInitInterrupts(); void DBInitComm(); @@ -48,23 +45,19 @@ void DBInitComm(); static u8 gRecvBuf[1280]; /* 80450550-8045056C 07D270 001C+00 3/3 0/0 0/0 .bss gRecvCB */ -static u8 gRecvCB[28]; +static CircleBuffer gRecvCB; // copied from pikmin2. should try to find a real fix static makeMainBSSOrderingWork() { - u8 buff[0x500]; - memcpy(buff, gRecvBuf, 0x500); + u8 buff[0x500]; + memcpy(buff, gRecvBuf, 0x500); } /* 80372908-8037292C 36D248 0024+00 0/0 1/1 0/0 .text gdev_cc_initinterrupts */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void gdev_cc_initinterrupts() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main/gdev_cc_initinterrupts.s" +u8 gdev_cc_initinterrupts() { + DBInitInterrupts(); + return 0; } -#pragma pop /* 8037292C-8037299C 36D26C 0070+00 0/0 1/1 0/0 .text gdev_cc_peek */ #pragma push @@ -77,24 +70,16 @@ asm void gdev_cc_peek() { #pragma pop /* 8037299C-803729C0 36D2DC 0024+00 0/0 1/1 0/0 .text gdev_cc_post_stop */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void gdev_cc_post_stop() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main/gdev_cc_post_stop.s" +u8 gdev_cc_post_stop() { + DBOpen(); + return 0; } -#pragma pop /* 803729C0-803729E4 36D300 0024+00 0/0 1/1 0/0 .text gdev_cc_pre_continue */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void gdev_cc_pre_continue() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main/gdev_cc_pre_continue.s" +u8 gdev_cc_pre_continue() { + DBClose(); + return 0; } -#pragma pop /* ############################################################################################## */ /* 803A2DF0-803A2E04 02F450 0014+00 1/1 0/0 0/0 .rodata @318 */ @@ -116,7 +101,7 @@ COMPILER_STRIP_GATE(0x803A2E30, &lit_320); #pragma pop /* 804519C8-804519D0 000EC8 0004+04 3/3 0/0 0/0 .sbss gIsInitialized */ -static u8 gIsInitialized[4 + 4 /* padding */]; +static BOOL gIsInitialized; /* 803729E4-80372AA4 36D324 00C0+00 0/0 1/1 0/0 .text gdev_cc_write */ #pragma push @@ -153,14 +138,13 @@ u8 gdev_cc_close() { } /* 80372BA0-80372BC4 36D4E0 0024+00 0/0 1/1 0/0 .text gdev_cc_open */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void gdev_cc_open() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main/gdev_cc_open.s" +s32 gdev_cc_open() { + if (gIsInitialized != FALSE) { + return -10005; + } + gIsInitialized = TRUE; + return 0; } -#pragma pop /* 80372BC4-80372BCC 36D504 0008+00 0/0 1/1 0/0 .text gdev_cc_shutdown */ u8 gdev_cc_shutdown() { diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.c b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.c index 0dc5b184d16..3ea7dc70cc2 100644 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.c +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.c @@ -268,7 +268,7 @@ asm s32 TRKDoReset(TRKBuffer*) { /* ############################################################################################## */ /* 8044F288-8044F290 07BFA8 0004+04 4/4 0/0 0/0 .bss IsTRKConnected */ -SECTION_BSS static u8 IsTRKConnected[4 + 4 /* padding */]; +SECTION_BSS static BOOL IsTRKConnected; /* 8036EBE4-8036EC5C 369524 0078+00 0/0 1/1 0/0 .text TRKDoDisconnect */ #pragma push @@ -291,24 +291,14 @@ asm s32 TRKDoConnect(TRKBuffer*) { #pragma pop /* 8036ECC0-8036ECCC 369600 000C+00 0/0 1/1 0/0 .text SetTRKConnected */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void SetTRKConnected(BOOL) { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/SetTRKConnected.s" +void SetTRKConnected(BOOL isTRKConnected) { + IsTRKConnected = isTRKConnected; } -#pragma pop /* 8036ECCC-8036ECDC 36960C 0010+00 0/0 3/3 0/0 .text GetTRKConnected */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm BOOL GetTRKConnected(void) { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/GetTRKConnected.s" +BOOL GetTRKConnected(void) { + return IsTRKConnected; } -#pragma pop /* ############################################################################################## */ /* 803A2AAC-803A2AB4 02F10C 0006+02 1/1 0/0 0/0 .rodata @573 */ diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.c b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.c index b812ae39b2b..8e486537ba1 100644 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.c +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.c @@ -4,6 +4,8 @@ // #include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h" #include "dol2asm.h" #include "dolphin/types.h" @@ -15,7 +17,7 @@ void TRKDestructEvent(); void TRKConstructEvent(); void TRKPostEvent(); void TRKGetNextEvent(); -void TRKInitializeEventQueue(); +u8 TRKInitializeEventQueue(); // // External References: @@ -23,23 +25,15 @@ void TRKInitializeEventQueue(); SECTION_INIT void TRK_memcpy(); void TRKReleaseBuffer(); -u8 TRKReleaseMutex(); -u8 TRKAcquireMutex(); -u8 TRKInitializeMutex(); // // Declarations: // /* 8036CC18-8036CC3C 367558 0024+00 0/0 1/1 0/0 .text TRKDestructEvent */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKDestructEvent() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent/TRKDestructEvent.s" +void TRKDestructEvent(TRKBuffer* buf) { + TRKReleaseBuffer(buf->_08); } -#pragma pop /* 8036CC3C-8036CC54 36757C 0018+00 0/0 5/5 0/0 .text TRKConstructEvent */ #pragma push @@ -53,7 +47,7 @@ asm void TRKConstructEvent() { /* ############################################################################################## */ /* 8044D890-8044D8B8 07A5B0 0028+00 3/3 0/0 0/0 .bss gTRKEventQueue */ -static u8 gTRKEventQueue[40]; +static s32 gTRKEventQueue[10]; /* 8036CC54-8036CD34 367594 00E0+00 0/0 5/5 0/0 .text TRKPostEvent */ #pragma push @@ -76,11 +70,12 @@ asm void TRKGetNextEvent() { #pragma pop /* 8036CDE8-8036CE40 367728 0058+00 0/0 1/1 0/0 .text TRKInitializeEventQueue */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKInitializeEventQueue() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent/TRKInitializeEventQueue.s" +u8 TRKInitializeEventQueue() { + TRKInitializeMutex(&gTRKEventQueue); + TRKAcquireMutex(&gTRKEventQueue); + gTRKEventQueue[1] = 0; + gTRKEventQueue[2] = 0; + gTRKEventQueue[9] = 0x100; + TRKReleaseMutex(); + return 0; } -#pragma pop diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.c b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.c index 5ccaf088b65..7ebb145e565 100644 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.c +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.c @@ -20,7 +20,7 @@ u8 TRKInitializeDispatcher(); void TRKTargetSetInputPendingPtr(); void TRKInitializeTarget(); void InitializeProgramEndTrap(); -void TRK_board_display(); +void TRK_board_display(const char*); void TRKInitializeIntDrivenUART(); void MWTRACE(); extern u8 gTRKInputPendingPtr[4 + 4 /* padding */]; @@ -45,14 +45,10 @@ asm void TRKNubWelcome(void) { #pragma pop /* 8036CE68-8036CE8C 3677A8 0024+00 0/0 1/1 0/0 .text TRKTerminateNub */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 TRKTerminateNub(void) { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit/TRKTerminateNub.s" +s32 TRKTerminateNub(void) { + TRKTerminateSerialHandler(); + return 0; } -#pragma pop /* ############################################################################################## */ /* 803A26A4-803A26B8 02ED04 0010+04 1/1 0/0 0/0 .rodata @154 */ @@ -60,8 +56,8 @@ SECTION_RODATA static char const lit_154[] = "Initialize NUB\n"; COMPILER_STRIP_GATE(0x803A26A4, &lit_154); /* 8044D8B8-8044D8C0 07A5D8 0004+04 1/1 4/4 0/0 .bss gTRKBigEndian */ -SECTION_BSS extern u8 gTRKBigEndian[4 + 4 /* padding */]; -SECTION_BSS u8 gTRKBigEndian[4 + 4 /* padding */]; +SECTION_BSS extern BOOL gTRKBigEndian; +SECTION_BSS BOOL gTRKBigEndian; /* 8036CE8C-8036CFD8 3677CC 014C+00 0/0 1/1 0/0 .text TRKInitializeNub */ #pragma push diff --git a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.c b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.c index c65da3b2b7a..f0f94d0809f 100644 --- a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.c +++ b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.c @@ -4,6 +4,7 @@ // #include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" #include "dol2asm.h" #include "dolphin/types.h" @@ -15,9 +16,9 @@ void InitMetroTRK(); void InitMetroTRK_BBA(); void TRK__write_aram(); void TRK__read_aram(); -void TRKInitializeTarget(); +int TRKInitializeTarget(); void __TRK_copy_vectors(); -void TRKTargetTranslate(); +u32 TRKTargetTranslate(); void EnableMetroTRKInterrupts(); // @@ -31,20 +32,19 @@ void ARStartDMA(); void __ARClearInterrupt(); void __ARGetInterruptStatus(); void TRK_flush_cache(); -void __TRK_get_MSR(); void TRKSaveExtended1Block(); void TRK_main(); void EnableEXI2Interrupts(); void InitMetroTRKCommTable(); -extern u8 gTRKState[164]; -extern u8 gTRKCPUState[1072]; +extern u32 gTRKState[41]; +extern u32 gTRKCPUState[268]; void regist__9daBgObj_cFP4dBgW(); // // Declarations: // -/* 80371560-803715F8 36BEA0 0098+00 0/0 1/1 0/0 .text InitMetroTRK */ +/* 80371560-803715F8 36BEA0 0098+00 0/0 1/1 0/0 .text InitMetroTRK */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -86,17 +86,15 @@ asm void TRK__read_aram() { /* ############################################################################################## */ /* 8044F810-8044F818 07C530 0004+04 3/3 0/0 0/0 .bss lc_base */ -SECTION_BSS static u8 lc_base[4 + 4 /* padding */]; +SECTION_BSS static u32 lc_base[1 + 1 /*padding*/]; -/* 803719AC-803719F8 36C2EC 004C+00 0/0 1/1 0/0 .text TRKInitializeTarget */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKInitializeTarget() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/TRKInitializeTarget.s" +/* 803719AC-803719F8 36C2EC 004C+00 0/0 1/1 0/0 .text TRKInitializeTarget */ +int TRKInitializeTarget() { + gTRKState[38] = 1; + gTRKState[35] = __TRK_get_MSR(); + *lc_base = 0xE0000000; + return 0; } -#pragma pop /* ############################################################################################## */ /* 803D3268-803D32A8 030388 003C+04 1/1 0/0 0/0 .data TRK_ISR_OFFSETS */ @@ -179,21 +177,19 @@ asm void __TRK_copy_vectors() { #pragma pop /* 80371B24-80371B7C 36C464 0058+00 0/0 1/1 0/0 .text TRKTargetTranslate */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKTargetTranslate() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/TRKTargetTranslate.s" +u32 TRKTargetTranslate(u32 param_0) { + if (param_0 >= *lc_base) { + if ((param_0 < *lc_base + 0x4000) && ((gTRKCPUState[142] & 3) != 0)) { + return param_0; + } + } + if ((0x7E000000 <= param_0) && (param_0 <= 0x80000000)) { + return param_0; + } + return param_0 & 0x3FFFFFFF | 0x80000000; } -#pragma pop -/* 80371B7C-80371B9C 36C4BC 0020+00 0/0 1/1 0/0 .text EnableMetroTRKInterrupts */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void EnableMetroTRKInterrupts() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk/EnableMetroTRKInterrupts.s" +/* 80371B7C-80371B9C 36C4BC 0020+00 0/0 1/1 0/0 .text EnableMetroTRKInterrupts */ +void EnableMetroTRKInterrupts() { + EnableEXI2Interrupts(); } -#pragma pop diff --git a/libs/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer.c b/libs/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer.c index 593a6012473..d8b43fe108f 100644 --- a/libs/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer.c +++ b/libs/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer.c @@ -1,70 +1,78 @@ -// -// Generated By: dol2asm // Translation Unit: utils/common/CircleBuffer -// #include "TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer.h" -#include "dol2asm.h" +#include "TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc.h" #include "dolphin/types.h" -// -// Forward References: -// - -void CircleBufferReadBytes(); -void CircleBufferWriteBytes(); -void CircleBufferInitialize(); -void CBGetBytesAvailableForRead(); - -// -// External References: -// - -SECTION_INIT void memcpy(); -void MWExitCriticalSection(); -void MWEnterCriticalSection(); -void MWInitializeCriticalSection(); - -// -// Declarations: -// - /* 803726A0-803727A8 36CFE0 0108+00 0/0 2/2 0/0 .text CircleBufferReadBytes */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void CircleBufferReadBytes() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer/CircleBufferReadBytes.s" +s32 CircleBufferReadBytes(CircleBuffer* buf, u32 param_2, u32 param_3) { + int temp; + if (param_3 > buf->readBuf) { + return -1; + } else { + MWEnterCriticalSection(&buf->criticalSection); + temp = buf->field_0xc - (buf->field_0x0 - buf->field_0x8); + if (param_3 < temp) { + memcpy(param_2, buf->field_0x0, param_3); + buf->field_0x0 += param_3; + } else { + memcpy(param_2, buf->field_0x0, temp); + memcpy(param_2 + temp, buf->field_0x8, param_3 - temp); + buf->field_0x0 = buf->field_0x8 + param_3 - temp; + } + + if (buf->field_0xc == (buf->field_0x0 - buf->field_0x8)) { + buf->field_0x0 = buf->field_0x8; + } + + buf->field_0x14 += param_3; + buf->readBuf -= param_3; + MWExitCriticalSection(&buf->criticalSection); + return 0; + } } -#pragma pop /* 803727A8-803728B0 36D0E8 0108+00 0/0 4/4 0/0 .text CircleBufferWriteBytes */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void CircleBufferWriteBytes() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer/CircleBufferWriteBytes.s" +s32 CircleBufferWriteBytes(CircleBuffer* buf, s32 param_2, u32 param_3) { + s32 temp; + + if (param_3 > buf->field_0x14) { + return -1; + } else { + MWEnterCriticalSection(&buf->criticalSection); + temp = buf->field_0xc - (buf->field_0x4 - buf->field_0x8); + if (temp >= param_3) { + memcpy(buf->field_0x4, param_2, param_3); + buf->field_0x4 += param_3; + } else { + memcpy(buf->field_0x4, param_2, temp); + memcpy(buf->field_0x8, param_2 + temp, param_3 - temp); + buf->field_0x4 = buf->field_0x8 + param_3 - temp; + } + + if (buf->field_0xc == (buf->field_0x4 - buf->field_0x8)) { + buf->field_0x4 = buf->field_0x8; + } + + buf->field_0x14 -= param_3; + buf->readBuf += param_3; + MWExitCriticalSection(&buf->criticalSection); + return 0; + } } -#pragma pop /* 803728B0-80372900 36D1F0 0050+00 0/0 2/2 0/0 .text CircleBufferInitialize */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void CircleBufferInitialize() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer/CircleBufferInitialize.s" +void CircleBufferInitialize(CircleBuffer* buf, s32 param_2, s32 param_3) { + buf->field_0x8 = param_2; + buf->field_0xc = param_3; + buf->field_0x0 = buf->field_0x8; + buf->field_0x4 = buf->field_0x8; + buf->readBuf = 0; + buf->field_0x14 = buf->field_0xc; + MWInitializeCriticalSection(&buf->criticalSection); } -#pragma pop /* 80372900-80372908 36D240 0008+00 0/0 2/2 0/0 .text CBGetBytesAvailableForRead */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void CBGetBytesAvailableForRead() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer/CBGetBytesAvailableForRead.s" +s32 CBGetBytesAvailableForRead(CircleBuffer* buf) { + return buf->readBuf; } -#pragma pop diff --git a/libs/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc.c b/libs/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc.c index 80fab2ebb7c..8e3633acff4 100644 --- a/libs/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc.c +++ b/libs/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc.c @@ -12,20 +12,9 @@ void MWExitCriticalSection(u32* section) { } /* 80372CC8-80372CF8 36D608 0030+00 0/0 2/2 0/0 .text MWEnterCriticalSection */ -#ifdef NONMATCHING void MWEnterCriticalSection(u32* section) { *section = OSDisableInterrupts(); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void MWEnterCriticalSection(u32* section) { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc/MWEnterCriticalSection.s" -} -#pragma pop -#endif /* 80372CF8-80372CFC 36D638 0004+00 0/0 1/1 0/0 .text MWInitializeCriticalSection */ void MWInitializeCriticalSection() {}