diff --git a/Progress.md b/Progress.md index fc8be3633d..a1cb743343 100644 --- a/Progress.md +++ b/Progress.md @@ -7,22 +7,22 @@ Section | Percentage | Decompiled (bytes) | Total (bytes) .init | 91.849662% | 8700 | 9472 .extab | 100.000000% | 96 | 96 .extabindex | 100.000000% | 96 | 96 -.text | 16.356925% | 588284 | 3596544 +.text | 17.786186% | 639688 | 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 | 25.160968% | 1011640 | 4020672 +Total | 26.439461% | 1063044 | 4020672 ## Total Section | Percentage | Decompiled (bytes) | Total (bytes) ---|---|---|--- -main.dol | 25.160968% | 1011640 | 4020672 -RELs | 33.217047% | 3820068 | 11500324 -Total | 31.130141% | 4831708 | 15520996 +main.dol | 26.439461% | 1063044 | 4020672 +RELs | 33.257498% | 3824720 | 11500324 +Total | 31.491304% | 4887764 | 15520996 ## RELs @@ -39,7 +39,7 @@ d_a_ppolamp | 42.341463% | 1736 | 4100 d_a_demo_item | 33.863165% | 3920 | 11576 d_a_cstaf | 100.000000% | 11860 | 11860 d_a_bg | 35.526882% | 3304 | 9300 -d_a_tboxSw | 66.141732% | 672 | 1016 +d_a_tboxSw | 100.000000% | 1016 | 1016 d_a_title | 39.558574% | 2796 | 7068 d_a_L7low_dr | 38.905775% | 1536 | 3948 d_a_andsw2 | 29.472774% | 1364 | 4628 @@ -70,7 +70,7 @@ d_a_izumi_gate | 57.729941% | 1180 | 2044 d_a_mirror | 32.707993% | 3208 | 9808 d_a_cow | 22.936702% | 12784 | 55736 d_a_disappear | 45.091514% | 1084 | 2404 -d_a_swc00 | 42.329545% | 1788 | 4224 +d_a_swc00 | 43.087121% | 1820 | 4224 d_a_spinner | 27.874187% | 5140 | 18440 d_a_swLBall | 33.651805% | 1268 | 3768 d_a_suspend | 68.303571% | 612 | 896 @@ -78,7 +78,7 @@ d_a_coach_fire | 44.050104% | 1688 | 3832 d_a_bg_obj | 32.434657% | 6304 | 19436 d_a_warp_bug | 54.940711% | 1112 | 2024 d_a_vrbox2 | 34.977578% | 2184 | 6244 -d_a_alldie | 39.885496% | 836 | 2096 +d_a_alldie | 100.000000% | 2096 | 2096 d_a_bd | 31.115418% | 5780 | 18576 d_a_scene_exit2 | 44.782034% | 1356 | 3028 d_a_swhit0 | 35.577421% | 2748 | 7724 @@ -139,7 +139,7 @@ d_a_tag_evtarea | 37.091319% | 1316 | 3548 d_a_tag_Lv8Gate | 43.347193% | 1668 | 3848 d_a_tag_ret_room | 49.168646% | 828 | 1684 d_a_tag_waterfall | 46.361502% | 1580 | 3408 -d_a_tag_gstart | 57.615894% | 696 | 1208 +d_a_tag_gstart | 100.000000% | 1208 | 1208 d_a_tag_mstop | 36.151961% | 1180 | 3264 d_a_tag_escape | 100.000000% | 712 | 712 d_a_tag_setrestart | 49.130435% | 904 | 1840 @@ -162,10 +162,10 @@ d_a_tag_howl | 46.934461% | 888 | 1892 d_a_tag_chkpoint | 39.852399% | 864 | 2168 d_a_tag_firewall | 35.325132% | 1608 | 4552 d_a_tag_lv6CstaSw | 51.406250% | 1316 | 2560 -d_a_tag_instruction | 82.022472% | 584 | 712 +d_a_tag_instruction | 100.000000% | 712 | 712 d_a_tag_mwait | 35.082873% | 1016 | 2896 d_a_tag_ajnot | 56.493506% | 696 | 1232 -d_a_tag_hstop | 46.962617% | 1608 | 3424 +d_a_tag_hstop | 100.000000% | 3424 | 3424 d_a_tag_chgrestart | 48.868778% | 864 | 1768 d_a_tag_cstasw | 100.000000% | 2560 | 2560 d_a_tag_lv5soup | 100.000000% | 1908 | 1908 @@ -195,7 +195,7 @@ d_a_kytag01 | 35.156250% | 1260 | 3584 d_a_kytag08 | 31.379026% | 1520 | 4844 d_a_kytag00 | 33.522084% | 2368 | 7064 d_a_kytag02 | 54.888889% | 988 | 1800 -d_a_kytag14 | 60.227273% | 848 | 1408 +d_a_kytag14 | 100.000000% | 1408 | 1408 d_a_kytag11 | 52.643172% | 956 | 1816 d_a_kytag05 | 100.000000% | 816 | 816 d_a_kytag13 | 30.696576% | 2080 | 6776 @@ -785,4 +785,4 @@ d_a_b_oh2 | 37.960954% | 2100 | 5532 d_a_b_bq | 28.033347% | 11164 | 39824 d_a_b_zant_sima | 40.995025% | 1648 | 4020 d_a_b_gm | 30.376176% | 11628 | 38280 -Total | 33.217047% | 3820068 | 11500324 +Total | 33.257498% | 3824720 | 11500324 diff --git a/README.md b/README.md index 96dfa63e6c..6d753df2cd 100644 --- a/README.md +++ b/README.md @@ -19,13 +19,13 @@ Project Setup 1. Clone down project ```bash -$ git clone https://github.com/zeldaret/tp +git clone https://github.com/zeldaret/tp ``` 2. Setup compiler directory ```bash -$ mkdir -p tools/mwcc_compiler/ +mkdir -p tools/mwcc_compiler/ ``` 3. Download `GC_COMPILERS.zip` from the [Discord](https://discord.gg/Nshw5pHS4h) server. See the pins in the `#tp-decomp` channel under the Twilight Princess group. @@ -33,7 +33,7 @@ $ mkdir -p tools/mwcc_compiler/ 4. Extract `GC_COMPILERS.zip` into the previously created `mwcc_compiler` directory ```bash -$ unzip GC_COMPILERS.zip -d tools/mwcc_compiler/ +unzip GC_COMPILERS.zip -d tools/mwcc_compiler/ ``` 5. Place a copy of NTSC-U GCN Twilight Princess in the root directory and call it `gz2e01.iso` (find this on your own) @@ -41,7 +41,7 @@ $ unzip GC_COMPILERS.zip -d tools/mwcc_compiler/ 6. Setup the project ```bash -$ ./tp setup +./tp setup ``` Building The Game @@ -50,7 +50,7 @@ Building The Game 1. To build a playable game, complete the [Project Setup](#project-setup) steps, then run ```bash -$ make game +make game ``` The completed build is under `build/dolzel2/game/sys/main.dol` @@ -58,7 +58,7 @@ The completed build is under `build/dolzel2/game/sys/main.dol` Build DOL ```bash -$ make +make ``` (Note that any time you run make you can add the -j# argument where # is the amount of threads your system has in order to greatly speed up build times) @@ -66,7 +66,7 @@ $ make Build RELs ```bash -$ make rels +make rels ``` The completed RELs will be under `build/dolzel2/rel` @@ -74,7 +74,7 @@ The completed RELs will be under `build/dolzel2/rel` Extract Game Assets ```bash -$ make assets +make assets ``` Create Expected Directory @@ -83,7 +83,7 @@ Create Expected Directory 2. Run: ```bash -$ ./tp expected +./tp expected ``` @@ -93,25 +93,25 @@ Clean Directories Clean RELs ```bash -$ make clean_rels +make clean_rels ``` Clean Game Directory ```bash -$ make clean_game +make clean_game ``` Clean Build Directory ```bash -$ make clean_all +make clean_all ``` Clean Dol ```bash -$ make clean +make clean ``` diff --git a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/__sinit_J3DDrawBuffer_cpp.s b/asm/JSystem/J3DGraphBase/J3DDrawBuffer/__sinit_J3DDrawBuffer_cpp.s deleted file mode 100644 index 9aaa286798..0000000000 --- a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/__sinit_J3DDrawBuffer_cpp.s +++ /dev/null @@ -1,54 +0,0 @@ -lbl_803255F0: -/* 803255F0 3C 60 80 3D */ lis r3, lit_992@ha /* 0x803CEBE8@ha */ -/* 803255F4 38 A3 EB E8 */ addi r5, r3, lit_992@l /* 0x803CEBE8@l */ -/* 803255F8 80 65 00 00 */ lwz r3, 0(r5) -/* 803255FC 80 05 00 04 */ lwz r0, 4(r5) -/* 80325600 90 65 00 48 */ stw r3, 0x48(r5) -/* 80325604 90 05 00 4C */ stw r0, 0x4c(r5) -/* 80325608 80 05 00 08 */ lwz r0, 8(r5) -/* 8032560C 90 05 00 50 */ stw r0, 0x50(r5) -/* 80325610 38 85 00 48 */ addi r4, r5, 0x48 -/* 80325614 80 65 00 0C */ lwz r3, 0xc(r5) -/* 80325618 80 05 00 10 */ lwz r0, 0x10(r5) -/* 8032561C 90 64 00 0C */ stw r3, 0xc(r4) -/* 80325620 90 04 00 10 */ stw r0, 0x10(r4) -/* 80325624 80 05 00 14 */ lwz r0, 0x14(r5) -/* 80325628 90 04 00 14 */ stw r0, 0x14(r4) -/* 8032562C 80 65 00 18 */ lwz r3, 0x18(r5) -/* 80325630 80 05 00 1C */ lwz r0, 0x1c(r5) -/* 80325634 90 64 00 18 */ stw r3, 0x18(r4) -/* 80325638 90 04 00 1C */ stw r0, 0x1c(r4) -/* 8032563C 80 05 00 20 */ lwz r0, 0x20(r5) -/* 80325640 90 04 00 20 */ stw r0, 0x20(r4) -/* 80325644 80 65 00 24 */ lwz r3, 0x24(r5) -/* 80325648 80 05 00 28 */ lwz r0, 0x28(r5) -/* 8032564C 90 64 00 24 */ stw r3, 0x24(r4) -/* 80325650 90 04 00 28 */ stw r0, 0x28(r4) -/* 80325654 80 05 00 2C */ lwz r0, 0x2c(r5) -/* 80325658 90 04 00 2C */ stw r0, 0x2c(r4) -/* 8032565C 80 65 00 30 */ lwz r3, 0x30(r5) -/* 80325660 80 05 00 34 */ lwz r0, 0x34(r5) -/* 80325664 90 64 00 30 */ stw r3, 0x30(r4) -/* 80325668 90 04 00 34 */ stw r0, 0x34(r4) -/* 8032566C 80 05 00 38 */ lwz r0, 0x38(r5) -/* 80325670 90 04 00 38 */ stw r0, 0x38(r4) -/* 80325674 80 65 00 3C */ lwz r3, 0x3c(r5) -/* 80325678 80 05 00 40 */ lwz r0, 0x40(r5) -/* 8032567C 90 64 00 3C */ stw r3, 0x3c(r4) -/* 80325680 90 04 00 40 */ stw r0, 0x40(r4) -/* 80325684 80 05 00 44 */ lwz r0, 0x44(r5) -/* 80325688 90 04 00 44 */ stw r0, 0x44(r4) -/* 8032568C 80 65 00 90 */ lwz r3, 0x90(r5) -/* 80325690 80 05 00 94 */ lwz r0, 0x94(r5) -/* 80325694 90 65 00 A8 */ stw r3, 0xa8(r5) -/* 80325698 90 05 00 AC */ stw r0, 0xac(r5) -/* 8032569C 80 05 00 98 */ lwz r0, 0x98(r5) -/* 803256A0 90 05 00 B0 */ stw r0, 0xb0(r5) -/* 803256A4 38 85 00 A8 */ addi r4, r5, 0xa8 -/* 803256A8 80 65 00 9C */ lwz r3, 0x9c(r5) -/* 803256AC 80 05 00 A0 */ lwz r0, 0xa0(r5) -/* 803256B0 90 64 00 0C */ stw r3, 0xc(r4) -/* 803256B4 90 04 00 10 */ stw r0, 0x10(r4) -/* 803256B8 80 05 00 A4 */ lwz r0, 0xa4(r5) -/* 803256BC 90 04 00 14 */ stw r0, 0x14(r4) -/* 803256C0 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/drawHead__13J3DDrawBufferCFv.s b/asm/JSystem/J3DGraphBase/J3DDrawBuffer/drawHead__13J3DDrawBufferCFv.s deleted file mode 100644 index ea41a9ebd0..0000000000 --- a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/drawHead__13J3DDrawBufferCFv.s +++ /dev/null @@ -1,35 +0,0 @@ -lbl_80325500: -/* 80325500 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80325504 7C 08 02 A6 */ mflr r0 -/* 80325508 90 01 00 24 */ stw r0, 0x24(r1) -/* 8032550C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80325510 48 03 CC C5 */ bl _savegpr_27 -/* 80325514 83 C3 00 04 */ lwz r30, 4(r3) -/* 80325518 83 A3 00 00 */ lwz r29, 0(r3) -/* 8032551C 3B 80 00 00 */ li r28, 0 -/* 80325520 3B E0 00 00 */ li r31, 0 -/* 80325524 48 00 00 34 */ b lbl_80325558 -lbl_80325528: -/* 80325528 7F 7D F8 2E */ lwzx r27, r29, r31 -/* 8032552C 48 00 00 1C */ b lbl_80325548 -lbl_80325530: -/* 80325530 7F 63 DB 78 */ mr r3, r27 -/* 80325534 81 9B 00 00 */ lwz r12, 0(r27) -/* 80325538 81 8C 00 0C */ lwz r12, 0xc(r12) -/* 8032553C 7D 89 03 A6 */ mtctr r12 -/* 80325540 4E 80 04 21 */ bctrl -/* 80325544 83 7B 00 04 */ lwz r27, 4(r27) -lbl_80325548: -/* 80325548 28 1B 00 00 */ cmplwi r27, 0 -/* 8032554C 40 82 FF E4 */ bne lbl_80325530 -/* 80325550 3B 9C 00 01 */ addi r28, r28, 1 -/* 80325554 3B FF 00 04 */ addi r31, r31, 4 -lbl_80325558: -/* 80325558 7C 1C F0 40 */ cmplw r28, r30 -/* 8032555C 41 80 FF CC */ blt lbl_80325528 -/* 80325560 39 61 00 20 */ addi r11, r1, 0x20 -/* 80325564 48 03 CC BD */ bl _restgpr_27 -/* 80325568 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8032556C 7C 08 03 A6 */ mtlr r0 -/* 80325570 38 21 00 20 */ addi r1, r1, 0x20 -/* 80325574 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/drawTail__13J3DDrawBufferCFv.s b/asm/JSystem/J3DGraphBase/J3DDrawBuffer/drawTail__13J3DDrawBufferCFv.s deleted file mode 100644 index 4d23047e70..0000000000 --- a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/drawTail__13J3DDrawBufferCFv.s +++ /dev/null @@ -1,35 +0,0 @@ -lbl_80325578: -/* 80325578 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8032557C 7C 08 02 A6 */ mflr r0 -/* 80325580 90 01 00 24 */ stw r0, 0x24(r1) -/* 80325584 39 61 00 20 */ addi r11, r1, 0x20 -/* 80325588 48 03 CC 51 */ bl _savegpr_28 -/* 8032558C 80 83 00 04 */ lwz r4, 4(r3) -/* 80325590 3B A4 FF FF */ addi r29, r4, -1 -/* 80325594 83 C3 00 00 */ lwz r30, 0(r3) -/* 80325598 57 BF 10 3A */ slwi r31, r29, 2 -/* 8032559C 48 00 00 34 */ b lbl_803255D0 -lbl_803255A0: -/* 803255A0 7F 9E F8 2E */ lwzx r28, r30, r31 -/* 803255A4 48 00 00 1C */ b lbl_803255C0 -lbl_803255A8: -/* 803255A8 7F 83 E3 78 */ mr r3, r28 -/* 803255AC 81 9C 00 00 */ lwz r12, 0(r28) -/* 803255B0 81 8C 00 0C */ lwz r12, 0xc(r12) -/* 803255B4 7D 89 03 A6 */ mtctr r12 -/* 803255B8 4E 80 04 21 */ bctrl -/* 803255BC 83 9C 00 04 */ lwz r28, 4(r28) -lbl_803255C0: -/* 803255C0 28 1C 00 00 */ cmplwi r28, 0 -/* 803255C4 40 82 FF E4 */ bne lbl_803255A8 -/* 803255C8 3B BD FF FF */ addi r29, r29, -1 -/* 803255CC 3B FF FF FC */ addi r31, r31, -4 -lbl_803255D0: -/* 803255D0 2C 1D 00 00 */ cmpwi r29, 0 -/* 803255D4 40 80 FF CC */ bge lbl_803255A0 -/* 803255D8 39 61 00 20 */ addi r11, r1, 0x20 -/* 803255DC 48 03 CC 49 */ bl _restgpr_28 -/* 803255E0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 803255E4 7C 08 03 A6 */ mtlr r0 -/* 803255E8 38 21 00 20 */ addi r1, r1, 0x20 -/* 803255EC 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/draw__13J3DDrawBufferCFv.s b/asm/JSystem/J3DGraphBase/J3DDrawBuffer/draw__13J3DDrawBufferCFv.s deleted file mode 100644 index 902b793454..0000000000 --- a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/draw__13J3DDrawBufferCFv.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_803254AC: -/* 803254AC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 803254B0 7C 08 02 A6 */ mflr r0 -/* 803254B4 90 01 00 24 */ stw r0, 0x24(r1) -/* 803254B8 80 03 00 08 */ lwz r0, 8(r3) -/* 803254BC 1C A0 00 0C */ mulli r5, r0, 0xc -/* 803254C0 3C 80 80 3D */ lis r4, drawFuncTable__13J3DDrawBuffer@ha /* 0x803CEC90@ha */ -/* 803254C4 38 04 EC 90 */ addi r0, r4, drawFuncTable__13J3DDrawBuffer@l /* 0x803CEC90@l */ -/* 803254C8 7C A0 2A 14 */ add r5, r0, r5 -/* 803254CC 80 85 00 00 */ lwz r4, 0(r5) -/* 803254D0 80 05 00 04 */ lwz r0, 4(r5) -/* 803254D4 90 81 00 08 */ stw r4, 8(r1) -/* 803254D8 90 01 00 0C */ stw r0, 0xc(r1) -/* 803254DC 80 05 00 08 */ lwz r0, 8(r5) -/* 803254E0 90 01 00 10 */ stw r0, 0x10(r1) -/* 803254E4 39 81 00 08 */ addi r12, r1, 8 -/* 803254E8 48 03 CB 9D */ bl __ptmf_scall -/* 803254EC 60 00 00 00 */ nop -/* 803254F0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 803254F4 7C 08 03 A6 */ mtlr r0 -/* 803254F8 38 21 00 20 */ addi r1, r1, 0x20 -/* 803254FC 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryInvalidSort__13J3DDrawBufferFP12J3DMatPacket.s b/asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryInvalidSort__13J3DDrawBufferFP12J3DMatPacket.s deleted file mode 100644 index 7dce118592..0000000000 --- a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryInvalidSort__13J3DDrawBufferFP12J3DMatPacket.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_80325404: -/* 80325404 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80325408 7C 08 02 A6 */ mflr r0 -/* 8032540C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80325410 38 00 00 00 */ li r0, 0 -/* 80325414 90 04 00 04 */ stw r0, 4(r4) -/* 80325418 90 04 00 08 */ stw r0, 8(r4) -/* 8032541C 80 A4 00 2C */ lwz r5, 0x2c(r4) -/* 80325420 90 05 00 04 */ stw r0, 4(r5) -/* 80325424 90 05 00 08 */ stw r0, 8(r5) -/* 80325428 80 63 00 20 */ lwz r3, 0x20(r3) -/* 8032542C 28 03 00 00 */ cmplwi r3, 0 -/* 80325430 41 82 00 14 */ beq lbl_80325444 -/* 80325434 80 84 00 2C */ lwz r4, 0x2c(r4) -/* 80325438 4B FE D3 21 */ bl addChildPacket__9J3DPacketFP9J3DPacket -/* 8032543C 38 60 00 01 */ li r3, 1 -/* 80325440 48 00 00 08 */ b lbl_80325448 -lbl_80325444: -/* 80325444 38 60 00 00 */ li r3, 0 -lbl_80325448: -/* 80325448 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8032544C 7C 08 03 A6 */ mtlr r0 -/* 80325450 38 21 00 10 */ addi r1, r1, 0x10 -/* 80325454 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryModelSort__13J3DDrawBufferFP12J3DMatPacket.s b/asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryModelSort__13J3DDrawBufferFP12J3DMatPacket.s deleted file mode 100644 index 024a7f4b6c..0000000000 --- a/asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryModelSort__13J3DDrawBufferFP12J3DMatPacket.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_803253B4: -/* 803253B4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 803253B8 7C 08 02 A6 */ mflr r0 -/* 803253BC 90 01 00 14 */ stw r0, 0x14(r1) -/* 803253C0 38 00 00 00 */ li r0, 0 -/* 803253C4 90 04 00 04 */ stw r0, 4(r4) -/* 803253C8 90 04 00 08 */ stw r0, 8(r4) -/* 803253CC 80 A4 00 2C */ lwz r5, 0x2c(r4) -/* 803253D0 90 05 00 04 */ stw r0, 4(r5) -/* 803253D4 90 05 00 08 */ stw r0, 8(r5) -/* 803253D8 80 63 00 20 */ lwz r3, 0x20(r3) -/* 803253DC 28 03 00 00 */ cmplwi r3, 0 -/* 803253E0 41 82 00 10 */ beq lbl_803253F0 -/* 803253E4 4B FE D3 75 */ bl addChildPacket__9J3DPacketFP9J3DPacket -/* 803253E8 38 60 00 01 */ li r3, 1 -/* 803253EC 48 00 00 08 */ b lbl_803253F4 -lbl_803253F0: -/* 803253F0 38 60 00 00 */ li r3, 0 -lbl_803253F4: -/* 803253F4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 803253F8 7C 08 03 A6 */ mtlr r0 -/* 803253FC 38 21 00 10 */ addi r1, r1, 0x10 -/* 80325400 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphBase/J3DPacket/entry__12J3DMatPacketFP13J3DDrawBuffer.s b/asm/JSystem/J3DGraphBase/J3DPacket/entry__12J3DMatPacketFP13J3DDrawBuffer.s deleted file mode 100644 index 8ae797a67f..0000000000 --- a/asm/JSystem/J3DGraphBase/J3DPacket/entry__12J3DMatPacketFP13J3DDrawBuffer.s +++ /dev/null @@ -1,25 +0,0 @@ -lbl_80313048: -/* 80313048 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8031304C 7C 08 02 A6 */ mflr r0 -/* 80313050 90 01 00 24 */ stw r0, 0x24(r1) -/* 80313054 7C 66 1B 78 */ mr r6, r3 -/* 80313058 80 04 00 0C */ lwz r0, 0xc(r4) -/* 8031305C 1C A0 00 0C */ mulli r5, r0, 0xc -/* 80313060 3C 60 80 3D */ lis r3, sortFuncTable__13J3DDrawBuffer@ha /* 0x803CEC30@ha */ -/* 80313064 38 03 EC 30 */ addi r0, r3, sortFuncTable__13J3DDrawBuffer@l /* 0x803CEC30@l */ -/* 80313068 7C A0 2A 14 */ add r5, r0, r5 -/* 8031306C 80 65 00 00 */ lwz r3, 0(r5) -/* 80313070 80 05 00 04 */ lwz r0, 4(r5) -/* 80313074 90 61 00 08 */ stw r3, 8(r1) -/* 80313078 90 01 00 0C */ stw r0, 0xc(r1) -/* 8031307C 80 05 00 08 */ lwz r0, 8(r5) -/* 80313080 90 01 00 10 */ stw r0, 0x10(r1) -/* 80313084 7C 83 23 78 */ mr r3, r4 -/* 80313088 7C C4 33 78 */ mr r4, r6 -/* 8031308C 39 81 00 08 */ addi r12, r1, 8 -/* 80313090 48 04 EF F5 */ bl __ptmf_scall -/* 80313094 60 00 00 00 */ nop -/* 80313098 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8031309C 7C 08 03 A6 */ mtlr r0 -/* 803130A0 38 21 00 20 */ addi r1, r1, 0x20 -/* 803130A4 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphLoader/J3DJointFactory/__ct__15J3DJointFactoryFRC13J3DJointBlock.s b/asm/JSystem/J3DGraphLoader/J3DJointFactory/__ct__15J3DJointFactoryFRC13J3DJointBlock.s deleted file mode 100644 index f798834a78..0000000000 --- a/asm/JSystem/J3DGraphLoader/J3DJointFactory/__ct__15J3DJointFactoryFRC13J3DJointBlock.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_80337178: -/* 80337178 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8033717C 7C 08 02 A6 */ mflr r0 -/* 80337180 90 01 00 14 */ stw r0, 0x14(r1) -/* 80337184 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80337188 93 C1 00 08 */ stw r30, 8(r1) -/* 8033718C 7C 7E 1B 78 */ mr r30, r3 -/* 80337190 7C 9F 23 78 */ mr r31, r4 -/* 80337194 7F E3 FB 78 */ mr r3, r31 -/* 80337198 80 84 00 0C */ lwz r4, 0xc(r4) -/* 8033719C 48 00 01 9D */ bl func_80337338 -/* 803371A0 90 7E 00 00 */ stw r3, 0(r30) -/* 803371A4 7F E3 FB 78 */ mr r3, r31 -/* 803371A8 80 9F 00 10 */ lwz r4, 0x10(r31) -/* 803371AC 4B FF F5 D1 */ bl func_8033677C -/* 803371B0 90 7E 00 04 */ stw r3, 4(r30) -/* 803371B4 7F C3 F3 78 */ mr r3, r30 -/* 803371B8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 803371BC 83 C1 00 08 */ lwz r30, 8(r1) -/* 803371C0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 803371C4 7C 08 03 A6 */ mtlr r0 -/* 803371C8 38 21 00 10 */ addi r1, r1, 0x10 -/* 803371CC 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphLoader/J3DJointFactory/create__15J3DJointFactoryFi.s b/asm/JSystem/J3DGraphLoader/J3DJointFactory/create__15J3DJointFactoryFi.s deleted file mode 100644 index ae2e6929e8..0000000000 --- a/asm/JSystem/J3DGraphLoader/J3DJointFactory/create__15J3DJointFactoryFi.s +++ /dev/null @@ -1,93 +0,0 @@ -lbl_803371D0: -/* 803371D0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 803371D4 7C 08 02 A6 */ mflr r0 -/* 803371D8 90 01 00 14 */ stw r0, 0x14(r1) -/* 803371DC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 803371E0 93 C1 00 08 */ stw r30, 8(r1) -/* 803371E4 7C 7F 1B 78 */ mr r31, r3 -/* 803371E8 7C 9E 23 78 */ mr r30, r4 -/* 803371EC 38 60 00 5C */ li r3, 0x5c -/* 803371F0 4B F9 7A 5D */ bl __nw__FUl -/* 803371F4 7C 64 1B 79 */ or. r4, r3, r3 -/* 803371F8 41 82 00 0C */ beq lbl_80337204 -/* 803371FC 4B FF 7F 75 */ bl __ct__8J3DJointFv -/* 80337200 7C 64 1B 78 */ mr r4, r3 -lbl_80337204: -/* 80337204 B3 C4 00 14 */ sth r30, 0x14(r4) -/* 80337208 80 BF 00 00 */ lwz r5, 0(r31) -/* 8033720C 80 7F 00 04 */ lwz r3, 4(r31) -/* 80337210 57 C0 08 3C */ slwi r0, r30, 1 -/* 80337214 7C 63 02 2E */ lhzx r3, r3, r0 -/* 80337218 54 63 30 32 */ slwi r3, r3, 6 -/* 8033721C 7C 65 1A 2E */ lhzx r3, r5, r3 -/* 80337220 98 64 00 16 */ stb r3, 0x16(r4) -/* 80337224 80 BF 00 00 */ lwz r5, 0(r31) -/* 80337228 80 7F 00 04 */ lwz r3, 4(r31) -/* 8033722C 7C 63 02 2E */ lhzx r3, r3, r0 -/* 80337230 54 63 30 32 */ slwi r3, r3, 6 -/* 80337234 7C 65 1A 14 */ add r3, r5, r3 -/* 80337238 88 63 00 02 */ lbz r3, 2(r3) -/* 8033723C 98 64 00 17 */ stb r3, 0x17(r4) -/* 80337240 80 BF 00 00 */ lwz r5, 0(r31) -/* 80337244 80 7F 00 04 */ lwz r3, 4(r31) -/* 80337248 7C 63 02 2E */ lhzx r3, r3, r0 -/* 8033724C 54 63 30 32 */ slwi r3, r3, 6 -/* 80337250 38 C3 00 04 */ addi r6, r3, 4 -/* 80337254 7C C5 32 14 */ add r6, r5, r6 -/* 80337258 E0 06 00 00 */ psq_l f0, 0(r6), 0, 0 /* qr0 */ -/* 8033725C F0 04 00 18 */ psq_st f0, 24(r4), 0, 0 /* qr0 */ -/* 80337260 C0 06 00 08 */ lfs f0, 8(r6) -/* 80337264 D0 04 00 20 */ stfs f0, 0x20(r4) -/* 80337268 80 66 00 0C */ lwz r3, 0xc(r6) -/* 8033726C 90 64 00 24 */ stw r3, 0x24(r4) -/* 80337270 A8 66 00 10 */ lha r3, 0x10(r6) -/* 80337274 B0 64 00 28 */ sth r3, 0x28(r4) -/* 80337278 E0 06 00 14 */ psq_l f0, 20(r6), 0, 0 /* qr0 */ -/* 8033727C F0 04 00 2C */ psq_st f0, 44(r4), 0, 0 /* qr0 */ -/* 80337280 C0 06 00 1C */ lfs f0, 0x1c(r6) -/* 80337284 D0 04 00 34 */ stfs f0, 0x34(r4) -/* 80337288 80 BF 00 00 */ lwz r5, 0(r31) -/* 8033728C 80 7F 00 04 */ lwz r3, 4(r31) -/* 80337290 7C 63 02 2E */ lhzx r3, r3, r0 -/* 80337294 54 63 30 32 */ slwi r3, r3, 6 -/* 80337298 7C 65 1A 14 */ add r3, r5, r3 -/* 8033729C C0 03 00 24 */ lfs f0, 0x24(r3) -/* 803372A0 D0 04 00 38 */ stfs f0, 0x38(r4) -/* 803372A4 80 BF 00 00 */ lwz r5, 0(r31) -/* 803372A8 80 7F 00 04 */ lwz r3, 4(r31) -/* 803372AC 7C 63 02 2E */ lhzx r3, r3, r0 -/* 803372B0 54 63 30 32 */ slwi r3, r3, 6 -/* 803372B4 38 63 00 28 */ addi r3, r3, 0x28 -/* 803372B8 7C 65 1A 14 */ add r3, r5, r3 -/* 803372BC C0 03 00 00 */ lfs f0, 0(r3) -/* 803372C0 D0 04 00 3C */ stfs f0, 0x3c(r4) -/* 803372C4 C0 03 00 04 */ lfs f0, 4(r3) -/* 803372C8 D0 04 00 40 */ stfs f0, 0x40(r4) -/* 803372CC C0 03 00 08 */ lfs f0, 8(r3) -/* 803372D0 D0 04 00 44 */ stfs f0, 0x44(r4) -/* 803372D4 80 BF 00 00 */ lwz r5, 0(r31) -/* 803372D8 80 7F 00 04 */ lwz r3, 4(r31) -/* 803372DC 7C 03 02 2E */ lhzx r0, r3, r0 -/* 803372E0 54 03 30 32 */ slwi r3, r0, 6 -/* 803372E4 38 63 00 34 */ addi r3, r3, 0x34 -/* 803372E8 7C 65 1A 14 */ add r3, r5, r3 -/* 803372EC C0 03 00 00 */ lfs f0, 0(r3) -/* 803372F0 D0 04 00 48 */ stfs f0, 0x48(r4) -/* 803372F4 C0 03 00 04 */ lfs f0, 4(r3) -/* 803372F8 D0 04 00 4C */ stfs f0, 0x4c(r4) -/* 803372FC C0 03 00 08 */ lfs f0, 8(r3) -/* 80337300 D0 04 00 50 */ stfs f0, 0x50(r4) -/* 80337304 38 60 00 00 */ li r3, 0 -/* 80337308 90 64 00 54 */ stw r3, 0x54(r4) -/* 8033730C 88 04 00 17 */ lbz r0, 0x17(r4) -/* 80337310 28 00 00 FF */ cmplwi r0, 0xff -/* 80337314 40 82 00 08 */ bne lbl_8033731C -/* 80337318 98 64 00 17 */ stb r3, 0x17(r4) -lbl_8033731C: -/* 8033731C 7C 83 23 78 */ mr r3, r4 -/* 80337320 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80337324 83 C1 00 08 */ lwz r30, 8(r1) -/* 80337328 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8033732C 7C 08 03 A6 */ mtlr r0 -/* 80337330 38 21 00 10 */ addi r1, r1, 0x10 -/* 80337334 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphLoader/J3DJointFactory/func_80337338.s b/asm/JSystem/J3DGraphLoader/J3DJointFactory/func_80337338.s deleted file mode 100644 index 8c8dd696c0..0000000000 --- a/asm/JSystem/J3DGraphLoader/J3DJointFactory/func_80337338.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_80337338: -/* 80337338 28 04 00 00 */ cmplwi r4, 0 -/* 8033733C 40 82 00 0C */ bne lbl_80337348 -/* 80337340 38 60 00 00 */ li r3, 0 -/* 80337344 4E 80 00 20 */ blr -lbl_80337348: -/* 80337348 7C 63 22 14 */ add r3, r3, r4 -/* 8033734C 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/__ct__15J3DShapeFactoryFRC13J3DShapeBlock.s b/asm/JSystem/J3DGraphLoader/J3DShapeFactory/__ct__15J3DShapeFactoryFRC13J3DShapeBlock.s deleted file mode 100644 index 868871177c..0000000000 --- a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/__ct__15J3DShapeFactoryFRC13J3DShapeBlock.s +++ /dev/null @@ -1,45 +0,0 @@ -lbl_80337350: -/* 80337350 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80337354 7C 08 02 A6 */ mflr r0 -/* 80337358 90 01 00 14 */ stw r0, 0x14(r1) -/* 8033735C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80337360 93 C1 00 08 */ stw r30, 8(r1) -/* 80337364 7C 7E 1B 78 */ mr r30, r3 -/* 80337368 7C 9F 23 78 */ mr r31, r4 -/* 8033736C 7F E3 FB 78 */ mr r3, r31 -/* 80337370 80 84 00 0C */ lwz r4, 0xc(r4) -/* 80337374 4B FF F3 F1 */ bl func_80336764 -/* 80337378 90 7E 00 00 */ stw r3, 0(r30) -/* 8033737C 7F E3 FB 78 */ mr r3, r31 -/* 80337380 80 9F 00 10 */ lwz r4, 0x10(r31) -/* 80337384 4B FF F3 F9 */ bl func_8033677C -/* 80337388 90 7E 00 04 */ stw r3, 4(r30) -/* 8033738C 7F E3 FB 78 */ mr r3, r31 -/* 80337390 80 9F 00 18 */ lwz r4, 0x18(r31) -/* 80337394 48 00 07 95 */ bl func_80337B28 -/* 80337398 90 7E 00 08 */ stw r3, 8(r30) -/* 8033739C 7F E3 FB 78 */ mr r3, r31 -/* 803373A0 80 9F 00 1C */ lwz r4, 0x1c(r31) -/* 803373A4 4B FF F3 D9 */ bl func_8033677C -/* 803373A8 90 7E 00 0C */ stw r3, 0xc(r30) -/* 803373AC 7F E3 FB 78 */ mr r3, r31 -/* 803373B0 80 9F 00 20 */ lwz r4, 0x20(r31) -/* 803373B4 48 00 07 5D */ bl func_80337B10 -/* 803373B8 90 7E 00 10 */ stw r3, 0x10(r30) -/* 803373BC 7F E3 FB 78 */ mr r3, r31 -/* 803373C0 80 9F 00 24 */ lwz r4, 0x24(r31) -/* 803373C4 48 00 07 35 */ bl func_80337AF8 -/* 803373C8 90 7E 00 14 */ stw r3, 0x14(r30) -/* 803373CC 7F E3 FB 78 */ mr r3, r31 -/* 803373D0 80 9F 00 28 */ lwz r4, 0x28(r31) -/* 803373D4 48 00 07 0D */ bl func_80337AE0 -/* 803373D8 90 7E 00 18 */ stw r3, 0x18(r30) -/* 803373DC 38 00 00 00 */ li r0, 0 -/* 803373E0 90 1E 00 1C */ stw r0, 0x1c(r30) -/* 803373E4 7F C3 F3 78 */ mr r3, r30 -/* 803373E8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 803373EC 83 C1 00 08 */ lwz r30, 8(r1) -/* 803373F0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 803373F4 7C 08 03 A6 */ mtlr r0 -/* 803373F8 38 21 00 10 */ addi r1, r1, 0x10 -/* 803373FC 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/allocVcdVatCmdBuffer__15J3DShapeFactoryFUl.s b/asm/JSystem/J3DGraphLoader/J3DShapeFactory/allocVcdVatCmdBuffer__15J3DShapeFactoryFUl.s deleted file mode 100644 index 38f6609f1b..0000000000 --- a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/allocVcdVatCmdBuffer__15J3DShapeFactoryFUl.s +++ /dev/null @@ -1,30 +0,0 @@ -lbl_803378D8: -/* 803378D8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 803378DC 7C 08 02 A6 */ mflr r0 -/* 803378E0 90 01 00 14 */ stw r0, 0x14(r1) -/* 803378E4 93 E1 00 0C */ stw r31, 0xc(r1) -/* 803378E8 93 C1 00 08 */ stw r30, 8(r1) -/* 803378EC 7C 7E 1B 78 */ mr r30, r3 -/* 803378F0 1F E4 00 C0 */ mulli r31, r4, 0xc0 -/* 803378F4 7F E3 FB 78 */ mr r3, r31 -/* 803378F8 38 80 00 20 */ li r4, 0x20 -/* 803378FC 4B F9 73 F1 */ bl __nwa__FUli -/* 80337900 90 7E 00 1C */ stw r3, 0x1c(r30) -/* 80337904 38 60 00 00 */ li r3, 0 -/* 80337908 57 E4 F0 BE */ srwi r4, r31, 2 -/* 8033790C 7C 60 1B 78 */ mr r0, r3 -/* 80337910 7C 89 03 A6 */ mtctr r4 -/* 80337914 28 04 00 00 */ cmplwi r4, 0 -/* 80337918 40 81 00 14 */ ble lbl_8033792C -lbl_8033791C: -/* 8033791C 80 9E 00 1C */ lwz r4, 0x1c(r30) -/* 80337920 7C 04 19 2E */ stwx r0, r4, r3 -/* 80337924 38 63 00 04 */ addi r3, r3, 4 -/* 80337928 42 00 FF F4 */ bdnz lbl_8033791C -lbl_8033792C: -/* 8033792C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80337930 83 C1 00 08 */ lwz r30, 8(r1) -/* 80337934 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80337938 7C 08 03 A6 */ mtlr r0 -/* 8033793C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80337940 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/calcSizeShapeMtx__15J3DShapeFactoryCFUlii.s b/asm/JSystem/J3DGraphLoader/J3DShapeFactory/calcSizeShapeMtx__15J3DShapeFactoryCFUlii.s deleted file mode 100644 index 7e23882c4f..0000000000 --- a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/calcSizeShapeMtx__15J3DShapeFactoryCFUlii.s +++ /dev/null @@ -1,75 +0,0 @@ -lbl_803379E8: -/* 803379E8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 803379EC 7C 08 02 A6 */ mflr r0 -/* 803379F0 90 01 00 14 */ stw r0, 0x14(r1) -/* 803379F4 93 E1 00 0C */ stw r31, 0xc(r1) -/* 803379F8 80 C3 00 00 */ lwz r6, 0(r3) -/* 803379FC 80 63 00 04 */ lwz r3, 4(r3) -/* 80337A00 54 A0 08 3C */ slwi r0, r5, 1 -/* 80337A04 7C 03 02 2E */ lhzx r0, r3, r0 -/* 80337A08 1C 00 00 28 */ mulli r0, r0, 0x28 -/* 80337A0C 3B E0 00 00 */ li r31, 0 -/* 80337A10 54 83 06 F6 */ rlwinm r3, r4, 0, 0x1b, 0x1b -/* 80337A14 2C 03 00 10 */ cmpwi r3, 0x10 -/* 80337A18 41 82 00 14 */ beq lbl_80337A2C -/* 80337A1C 40 80 00 70 */ bge lbl_80337A8C -/* 80337A20 2C 03 00 00 */ cmpwi r3, 0 -/* 80337A24 41 82 00 68 */ beq lbl_80337A8C -/* 80337A28 48 00 00 64 */ b lbl_80337A8C -lbl_80337A2C: -/* 80337A2C 7C 06 00 AE */ lbzx r0, r6, r0 -/* 80337A30 2C 00 00 02 */ cmpwi r0, 2 -/* 80337A34 41 82 00 34 */ beq lbl_80337A68 -/* 80337A38 40 80 00 14 */ bge lbl_80337A4C -/* 80337A3C 2C 00 00 00 */ cmpwi r0, 0 -/* 80337A40 41 82 00 18 */ beq lbl_80337A58 -/* 80337A44 40 80 00 1C */ bge lbl_80337A60 -/* 80337A48 48 00 00 30 */ b lbl_80337A78 -lbl_80337A4C: -/* 80337A4C 2C 00 00 04 */ cmpwi r0, 4 -/* 80337A50 40 80 00 28 */ bge lbl_80337A78 -/* 80337A54 48 00 00 1C */ b lbl_80337A70 -lbl_80337A58: -/* 80337A58 3B E0 00 08 */ li r31, 8 -/* 80337A5C 48 00 00 6C */ b lbl_80337AC8 -lbl_80337A60: -/* 80337A60 3B E0 00 08 */ li r31, 8 -/* 80337A64 48 00 00 64 */ b lbl_80337AC8 -lbl_80337A68: -/* 80337A68 3B E0 00 08 */ li r31, 8 -/* 80337A6C 48 00 00 5C */ b lbl_80337AC8 -lbl_80337A70: -/* 80337A70 3B E0 00 10 */ li r31, 0x10 -/* 80337A74 48 00 00 54 */ b lbl_80337AC8 -lbl_80337A78: -/* 80337A78 3C 60 80 3A */ lis r3, J3DShapeFactory__stringBase0@ha /* 0x803A2100@ha */ -/* 80337A7C 38 63 21 00 */ addi r3, r3, J3DShapeFactory__stringBase0@l /* 0x803A2100@l */ -/* 80337A80 4C C6 31 82 */ crclr 6 -/* 80337A84 4B CC F0 39 */ bl OSReport -/* 80337A88 48 00 00 40 */ b lbl_80337AC8 -lbl_80337A8C: -/* 80337A8C 7C 06 00 AE */ lbzx r0, r6, r0 -/* 80337A90 2C 00 00 03 */ cmpwi r0, 3 -/* 80337A94 41 82 00 1C */ beq lbl_80337AB0 -/* 80337A98 40 80 00 20 */ bge lbl_80337AB8 -/* 80337A9C 2C 00 00 00 */ cmpwi r0, 0 -/* 80337AA0 40 80 00 08 */ bge lbl_80337AA8 -/* 80337AA4 48 00 00 14 */ b lbl_80337AB8 -lbl_80337AA8: -/* 80337AA8 3B E0 00 08 */ li r31, 8 -/* 80337AAC 48 00 00 1C */ b lbl_80337AC8 -lbl_80337AB0: -/* 80337AB0 3B E0 00 10 */ li r31, 0x10 -/* 80337AB4 48 00 00 14 */ b lbl_80337AC8 -lbl_80337AB8: -/* 80337AB8 3C 60 80 3A */ lis r3, J3DShapeFactory__stringBase0@ha /* 0x803A2100@ha */ -/* 80337ABC 38 63 21 00 */ addi r3, r3, J3DShapeFactory__stringBase0@l /* 0x803A2100@l */ -/* 80337AC0 4C C6 31 82 */ crclr 6 -/* 80337AC4 4B CC EF F9 */ bl OSReport -lbl_80337AC8: -/* 80337AC8 7F E3 FB 78 */ mr r3, r31 -/* 80337ACC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80337AD0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80337AD4 7C 08 03 A6 */ mtlr r0 -/* 80337AD8 38 21 00 10 */ addi r1, r1, 0x10 -/* 80337ADC 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/calcSizeVcdVatCmdBuffer__15J3DShapeFactoryFUl.s b/asm/JSystem/J3DGraphLoader/J3DShapeFactory/calcSizeVcdVatCmdBuffer__15J3DShapeFactoryFUl.s deleted file mode 100644 index 99ee9b638e..0000000000 --- a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/calcSizeVcdVatCmdBuffer__15J3DShapeFactoryFUl.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_803379D8: -/* 803379D8 1C 64 00 C0 */ mulli r3, r4, 0xc0 -/* 803379DC 38 03 00 1F */ addi r0, r3, 0x1f -/* 803379E0 54 03 00 34 */ rlwinm r3, r0, 0, 0, 0x1a -/* 803379E4 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/create__15J3DShapeFactoryFiUlP14_GXVtxDescList.s b/asm/JSystem/J3DGraphLoader/J3DShapeFactory/create__15J3DShapeFactoryFiUlP14_GXVtxDescList.s deleted file mode 100644 index 8b6e9fb73c..0000000000 --- a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/create__15J3DShapeFactoryFiUlP14_GXVtxDescList.s +++ /dev/null @@ -1,115 +0,0 @@ -lbl_80337400: -/* 80337400 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80337404 7C 08 02 A6 */ mflr r0 -/* 80337408 90 01 00 24 */ stw r0, 0x24(r1) -/* 8033740C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80337410 48 02 AD C1 */ bl _savegpr_26 -/* 80337414 7C 7B 1B 78 */ mr r27, r3 -/* 80337418 7C 9C 23 78 */ mr r28, r4 -/* 8033741C 7C BD 2B 78 */ mr r29, r5 -/* 80337420 38 60 00 68 */ li r3, 0x68 -/* 80337424 4B F9 78 29 */ bl __nw__FUl -/* 80337428 7C 7F 1B 79 */ or. r31, r3, r3 -/* 8033742C 41 82 00 2C */ beq lbl_80337458 -/* 80337430 3C 80 80 3D */ lis r4, __vt__8J3DShape@ha /* 0x803CDC78@ha */ -/* 80337434 38 04 DC 78 */ addi r0, r4, __vt__8J3DShape@l /* 0x803CDC78@l */ -/* 80337438 90 1F 00 00 */ stw r0, 0(r31) -/* 8033743C 3C 80 3C F4 */ lis r4, 0x3CF4 /* 0x3CF3CF00@ha */ -/* 80337440 38 04 CF 00 */ addi r0, r4, 0xCF00 /* 0x3CF3CF00@l */ -/* 80337444 90 1F 00 40 */ stw r0, 0x40(r31) -/* 80337448 3C 80 00 F4 */ lis r4, 0x00F4 /* 0x00F3CF3C@ha */ -/* 8033744C 38 04 CF 3C */ addi r0, r4, 0xCF3C /* 0x00F3CF3C@l */ -/* 80337450 90 1F 00 44 */ stw r0, 0x44(r31) -/* 80337454 4B FD D6 F5 */ bl initialize__8J3DShapeFv -lbl_80337458: -/* 80337458 80 9B 00 00 */ lwz r4, 0(r27) -/* 8033745C 80 7B 00 04 */ lwz r3, 4(r27) -/* 80337460 57 9E 08 3C */ slwi r30, r28, 1 -/* 80337464 7C 03 F2 2E */ lhzx r0, r3, r30 -/* 80337468 1C 00 00 28 */ mulli r0, r0, 0x28 -/* 8033746C 7C 64 02 14 */ add r3, r4, r0 -/* 80337470 A0 03 00 02 */ lhz r0, 2(r3) -/* 80337474 B0 1F 00 0A */ sth r0, 0xa(r31) -/* 80337478 80 9B 00 00 */ lwz r4, 0(r27) -/* 8033747C 80 7B 00 04 */ lwz r3, 4(r27) -/* 80337480 7C 03 F2 2E */ lhzx r0, r3, r30 -/* 80337484 1C 00 00 28 */ mulli r0, r0, 0x28 -/* 80337488 7C 64 02 14 */ add r3, r4, r0 -/* 8033748C C0 03 00 0C */ lfs f0, 0xc(r3) -/* 80337490 D0 1F 00 10 */ stfs f0, 0x10(r31) -/* 80337494 80 BB 00 08 */ lwz r5, 8(r27) -/* 80337498 80 9B 00 00 */ lwz r4, 0(r27) -/* 8033749C 80 7B 00 04 */ lwz r3, 4(r27) -/* 803374A0 7C 03 F2 2E */ lhzx r0, r3, r30 -/* 803374A4 1C 00 00 28 */ mulli r0, r0, 0x28 -/* 803374A8 7C 64 02 14 */ add r3, r4, r0 -/* 803374AC A0 03 00 04 */ lhz r0, 4(r3) -/* 803374B0 7C 05 02 14 */ add r0, r5, r0 -/* 803374B4 90 1F 00 30 */ stw r0, 0x30(r31) -/* 803374B8 A0 1F 00 0A */ lhz r0, 0xa(r31) -/* 803374BC 54 03 10 3A */ slwi r3, r0, 2 -/* 803374C0 4B F9 78 05 */ bl __nwa__FUl -/* 803374C4 90 7F 00 38 */ stw r3, 0x38(r31) -/* 803374C8 A0 1F 00 0A */ lhz r0, 0xa(r31) -/* 803374CC 54 03 10 3A */ slwi r3, r0, 2 -/* 803374D0 4B F9 77 F5 */ bl __nwa__FUl -/* 803374D4 90 7F 00 3C */ stw r3, 0x3c(r31) -/* 803374D8 80 9B 00 00 */ lwz r4, 0(r27) -/* 803374DC 80 7B 00 04 */ lwz r3, 4(r27) -/* 803374E0 7C 03 F2 2E */ lhzx r0, r3, r30 -/* 803374E4 1C 60 00 28 */ mulli r3, r0, 0x28 -/* 803374E8 38 63 00 10 */ addi r3, r3, 0x10 -/* 803374EC 7C 64 1A 14 */ add r3, r4, r3 -/* 803374F0 C0 03 00 00 */ lfs f0, 0(r3) -/* 803374F4 D0 1F 00 14 */ stfs f0, 0x14(r31) -/* 803374F8 C0 03 00 04 */ lfs f0, 4(r3) -/* 803374FC D0 1F 00 18 */ stfs f0, 0x18(r31) -/* 80337500 C0 03 00 08 */ lfs f0, 8(r3) -/* 80337504 D0 1F 00 1C */ stfs f0, 0x1c(r31) -/* 80337508 80 9B 00 00 */ lwz r4, 0(r27) -/* 8033750C 80 7B 00 04 */ lwz r3, 4(r27) -/* 80337510 7C 03 F2 2E */ lhzx r0, r3, r30 -/* 80337514 1C 60 00 28 */ mulli r3, r0, 0x28 -/* 80337518 38 63 00 1C */ addi r3, r3, 0x1c -/* 8033751C 7C 64 1A 14 */ add r3, r4, r3 -/* 80337520 C0 03 00 00 */ lfs f0, 0(r3) -/* 80337524 D0 1F 00 20 */ stfs f0, 0x20(r31) -/* 80337528 C0 03 00 04 */ lfs f0, 4(r3) -/* 8033752C D0 1F 00 24 */ stfs f0, 0x24(r31) -/* 80337530 C0 03 00 08 */ lfs f0, 8(r3) -/* 80337534 D0 1F 00 28 */ stfs f0, 0x28(r31) -/* 80337538 80 7B 00 1C */ lwz r3, 0x1c(r27) -/* 8033753C 1C 1C 00 C0 */ mulli r0, r28, 0xc0 -/* 80337540 7C 03 02 14 */ add r0, r3, r0 -/* 80337544 90 1F 00 2C */ stw r0, 0x2c(r31) -/* 80337548 3B 40 00 00 */ li r26, 0 -/* 8033754C 3B C0 00 00 */ li r30, 0 -/* 80337550 48 00 00 40 */ b lbl_80337590 -lbl_80337554: -/* 80337554 7F 63 DB 78 */ mr r3, r27 -/* 80337558 7F A4 EB 78 */ mr r4, r29 -/* 8033755C 7F 85 E3 78 */ mr r5, r28 -/* 80337560 7F 46 D3 78 */ mr r6, r26 -/* 80337564 48 00 00 59 */ bl newShapeMtx__15J3DShapeFactoryCFUlii -/* 80337568 80 9F 00 38 */ lwz r4, 0x38(r31) -/* 8033756C 7C 64 F1 2E */ stwx r3, r4, r30 -/* 80337570 7F 63 DB 78 */ mr r3, r27 -/* 80337574 7F 84 E3 78 */ mr r4, r28 -/* 80337578 7F 45 D3 78 */ mr r5, r26 -/* 8033757C 48 00 02 D1 */ bl newShapeDraw__15J3DShapeFactoryCFii -/* 80337580 80 9F 00 3C */ lwz r4, 0x3c(r31) -/* 80337584 7C 64 F1 2E */ stwx r3, r4, r30 -/* 80337588 3B 5A 00 01 */ addi r26, r26, 1 -/* 8033758C 3B DE 00 04 */ addi r30, r30, 4 -lbl_80337590: -/* 80337590 A0 1F 00 0A */ lhz r0, 0xa(r31) -/* 80337594 7C 1A 00 00 */ cmpw r26, r0 -/* 80337598 41 80 FF BC */ blt lbl_80337554 -/* 8033759C B3 9F 00 08 */ sth r28, 8(r31) -/* 803375A0 7F E3 FB 78 */ mr r3, r31 -/* 803375A4 39 61 00 20 */ addi r11, r1, 0x20 -/* 803375A8 48 02 AC 75 */ bl _restgpr_26 -/* 803375AC 80 01 00 24 */ lwz r0, 0x24(r1) -/* 803375B0 7C 08 03 A6 */ mtlr r0 -/* 803375B4 38 21 00 20 */ addi r1, r1, 0x20 -/* 803375B8 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/func_80337AE0.s b/asm/JSystem/J3DGraphLoader/J3DShapeFactory/func_80337AE0.s deleted file mode 100644 index e354378686..0000000000 --- a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/func_80337AE0.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_80337AE0: -/* 80337AE0 28 04 00 00 */ cmplwi r4, 0 -/* 80337AE4 40 82 00 0C */ bne lbl_80337AF0 -/* 80337AE8 38 60 00 00 */ li r3, 0 -/* 80337AEC 4E 80 00 20 */ blr -lbl_80337AF0: -/* 80337AF0 7C 63 22 14 */ add r3, r3, r4 -/* 80337AF4 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/func_80337AF8.s b/asm/JSystem/J3DGraphLoader/J3DShapeFactory/func_80337AF8.s deleted file mode 100644 index 6e38d3acd2..0000000000 --- a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/func_80337AF8.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_80337AF8: -/* 80337AF8 28 04 00 00 */ cmplwi r4, 0 -/* 80337AFC 40 82 00 0C */ bne lbl_80337B08 -/* 80337B00 38 60 00 00 */ li r3, 0 -/* 80337B04 4E 80 00 20 */ blr -lbl_80337B08: -/* 80337B08 7C 63 22 14 */ add r3, r3, r4 -/* 80337B0C 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/func_80337B10.s b/asm/JSystem/J3DGraphLoader/J3DShapeFactory/func_80337B10.s deleted file mode 100644 index 32f0712377..0000000000 --- a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/func_80337B10.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_80337B10: -/* 80337B10 28 04 00 00 */ cmplwi r4, 0 -/* 80337B14 40 82 00 0C */ bne lbl_80337B20 -/* 80337B18 38 60 00 00 */ li r3, 0 -/* 80337B1C 4E 80 00 20 */ blr -lbl_80337B20: -/* 80337B20 7C 63 22 14 */ add r3, r3, r4 -/* 80337B24 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/func_80337B28.s b/asm/JSystem/J3DGraphLoader/J3DShapeFactory/func_80337B28.s deleted file mode 100644 index 910957e694..0000000000 --- a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/func_80337B28.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_80337B28: -/* 80337B28 28 04 00 00 */ cmplwi r4, 0 -/* 80337B2C 40 82 00 0C */ bne lbl_80337B38 -/* 80337B30 38 60 00 00 */ li r3, 0 -/* 80337B34 4E 80 00 20 */ blr -lbl_80337B38: -/* 80337B38 7C 63 22 14 */ add r3, r3, r4 -/* 80337B3C 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/newShapeDraw__15J3DShapeFactoryCFii.s b/asm/JSystem/J3DGraphLoader/J3DShapeFactory/newShapeDraw__15J3DShapeFactoryCFii.s deleted file mode 100644 index 8866bfd809..0000000000 --- a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/newShapeDraw__15J3DShapeFactoryCFii.s +++ /dev/null @@ -1,37 +0,0 @@ -lbl_8033784C: -/* 8033784C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80337850 7C 08 02 A6 */ mflr r0 -/* 80337854 90 01 00 14 */ stw r0, 0x14(r1) -/* 80337858 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8033785C 93 C1 00 08 */ stw r30, 8(r1) -/* 80337860 7C 7E 1B 78 */ mr r30, r3 -/* 80337864 80 E3 00 18 */ lwz r7, 0x18(r3) -/* 80337868 80 C3 00 00 */ lwz r6, 0(r3) -/* 8033786C 80 63 00 04 */ lwz r3, 4(r3) -/* 80337870 54 80 08 3C */ slwi r0, r4, 1 -/* 80337874 7C 03 02 2E */ lhzx r0, r3, r0 -/* 80337878 1C 60 00 28 */ mulli r3, r0, 0x28 -/* 8033787C 38 03 00 08 */ addi r0, r3, 8 -/* 80337880 7C 06 02 2E */ lhzx r0, r6, r0 -/* 80337884 54 03 18 38 */ slwi r3, r0, 3 -/* 80337888 54 A0 18 38 */ slwi r0, r5, 3 -/* 8033788C 7F E3 02 14 */ add r31, r3, r0 -/* 80337890 7F E7 FA 14 */ add r31, r7, r31 -/* 80337894 38 60 00 0C */ li r3, 0xc -/* 80337898 4B F9 73 B5 */ bl __nw__FUl -/* 8033789C 7C 60 1B 79 */ or. r0, r3, r3 -/* 803378A0 41 82 00 1C */ beq lbl_803378BC -/* 803378A4 80 9E 00 10 */ lwz r4, 0x10(r30) -/* 803378A8 80 1F 00 04 */ lwz r0, 4(r31) -/* 803378AC 7C 84 02 14 */ add r4, r4, r0 -/* 803378B0 80 BF 00 00 */ lwz r5, 0(r31) -/* 803378B4 4B FD D2 09 */ bl __ct__12J3DShapeDrawFPCUcUl -/* 803378B8 7C 60 1B 78 */ mr r0, r3 -lbl_803378BC: -/* 803378BC 7C 03 03 78 */ mr r3, r0 -/* 803378C0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 803378C4 83 C1 00 08 */ lwz r30, 8(r1) -/* 803378C8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 803378CC 7C 08 03 A6 */ mtlr r0 -/* 803378D0 38 21 00 10 */ addi r1, r1, 0x10 -/* 803378D4 4E 80 00 20 */ blr diff --git a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/newShapeMtx__15J3DShapeFactoryCFUlii.s b/asm/JSystem/J3DGraphLoader/J3DShapeFactory/newShapeMtx__15J3DShapeFactoryCFUlii.s deleted file mode 100644 index 67319b7256..0000000000 --- a/asm/JSystem/J3DGraphLoader/J3DShapeFactory/newShapeMtx__15J3DShapeFactoryCFUlii.s +++ /dev/null @@ -1,183 +0,0 @@ -lbl_803375BC: -/* 803375BC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 803375C0 7C 08 02 A6 */ mflr r0 -/* 803375C4 90 01 00 24 */ stw r0, 0x24(r1) -/* 803375C8 39 61 00 20 */ addi r11, r1, 0x20 -/* 803375CC 48 02 AC 11 */ bl _savegpr_29 -/* 803375D0 7C 7D 1B 78 */ mr r29, r3 -/* 803375D4 3B E0 00 00 */ li r31, 0 -/* 803375D8 80 E3 00 00 */ lwz r7, 0(r3) -/* 803375DC 80 63 00 04 */ lwz r3, 4(r3) -/* 803375E0 54 A0 08 3C */ slwi r0, r5, 1 -/* 803375E4 7C 03 02 2E */ lhzx r0, r3, r0 -/* 803375E8 1C 00 00 28 */ mulli r0, r0, 0x28 -/* 803375EC 7C E7 02 14 */ add r7, r7, r0 -/* 803375F0 80 BD 00 14 */ lwz r5, 0x14(r29) -/* 803375F4 A0 07 00 06 */ lhz r0, 6(r7) -/* 803375F8 54 03 18 38 */ slwi r3, r0, 3 -/* 803375FC 54 C0 18 38 */ slwi r0, r6, 3 -/* 80337600 7F C3 02 14 */ add r30, r3, r0 -/* 80337604 7F C5 F2 14 */ add r30, r5, r30 -/* 80337608 54 80 06 F6 */ rlwinm r0, r4, 0, 0x1b, 0x1b -/* 8033760C 2C 00 00 10 */ cmpwi r0, 0x10 -/* 80337610 41 82 00 14 */ beq lbl_80337624 -/* 80337614 40 80 01 70 */ bge lbl_80337784 -/* 80337618 2C 00 00 00 */ cmpwi r0, 0 -/* 8033761C 41 82 01 68 */ beq lbl_80337784 -/* 80337620 48 00 01 64 */ b lbl_80337784 -lbl_80337624: -/* 80337624 88 07 00 00 */ lbz r0, 0(r7) -/* 80337628 2C 00 00 02 */ cmpwi r0, 2 -/* 8033762C 41 82 00 A0 */ beq lbl_803376CC -/* 80337630 40 80 00 14 */ bge lbl_80337644 -/* 80337634 2C 00 00 00 */ cmpwi r0, 0 -/* 80337638 41 82 00 18 */ beq lbl_80337650 -/* 8033763C 40 80 00 4C */ bge lbl_80337688 -/* 80337640 48 00 01 30 */ b lbl_80337770 -lbl_80337644: -/* 80337644 2C 00 00 04 */ cmpwi r0, 4 -/* 80337648 40 80 01 28 */ bge lbl_80337770 -/* 8033764C 48 00 00 C4 */ b lbl_80337710 -lbl_80337650: -/* 80337650 38 60 00 08 */ li r3, 8 -/* 80337654 4B F9 75 F9 */ bl __nw__FUl -/* 80337658 28 03 00 00 */ cmplwi r3, 0 -/* 8033765C 41 82 00 24 */ beq lbl_80337680 -/* 80337660 A0 BE 00 00 */ lhz r5, 0(r30) -/* 80337664 3C 80 80 3D */ lis r4, __vt__11J3DShapeMtx@ha /* 0x803CDC44@ha */ -/* 80337668 38 04 DC 44 */ addi r0, r4, __vt__11J3DShapeMtx@l /* 0x803CDC44@l */ -/* 8033766C 90 03 00 00 */ stw r0, 0(r3) -/* 80337670 B0 A3 00 04 */ sth r5, 4(r3) -/* 80337674 3C 80 80 3D */ lis r4, __vt__21J3DShapeMtxConcatView@ha /* 0x803CDC1C@ha */ -/* 80337678 38 04 DC 1C */ addi r0, r4, __vt__21J3DShapeMtxConcatView@l /* 0x803CDC1C@l */ -/* 8033767C 90 03 00 00 */ stw r0, 0(r3) -lbl_80337680: -/* 80337680 7C 7F 1B 78 */ mr r31, r3 -/* 80337684 48 00 01 AC */ b lbl_80337830 -lbl_80337688: -/* 80337688 38 60 00 08 */ li r3, 8 -/* 8033768C 4B F9 75 C1 */ bl __nw__FUl -/* 80337690 28 03 00 00 */ cmplwi r3, 0 -/* 80337694 41 82 00 30 */ beq lbl_803376C4 -/* 80337698 A0 BE 00 00 */ lhz r5, 0(r30) -/* 8033769C 3C 80 80 3D */ lis r4, __vt__11J3DShapeMtx@ha /* 0x803CDC44@ha */ -/* 803376A0 38 04 DC 44 */ addi r0, r4, __vt__11J3DShapeMtx@l /* 0x803CDC44@l */ -/* 803376A4 90 03 00 00 */ stw r0, 0(r3) -/* 803376A8 B0 A3 00 04 */ sth r5, 4(r3) -/* 803376AC 3C 80 80 3D */ lis r4, __vt__21J3DShapeMtxConcatView@ha /* 0x803CDC1C@ha */ -/* 803376B0 38 04 DC 1C */ addi r0, r4, __vt__21J3DShapeMtxConcatView@l /* 0x803CDC1C@l */ -/* 803376B4 90 03 00 00 */ stw r0, 0(r3) -/* 803376B8 3C 80 80 3D */ lis r4, __vt__27J3DShapeMtxBBoardConcatView@ha /* 0x803CDBAC@ha */ -/* 803376BC 38 04 DB AC */ addi r0, r4, __vt__27J3DShapeMtxBBoardConcatView@l /* 0x803CDBAC@l */ -/* 803376C0 90 03 00 00 */ stw r0, 0(r3) -lbl_803376C4: -/* 803376C4 7C 7F 1B 78 */ mr r31, r3 -/* 803376C8 48 00 01 68 */ b lbl_80337830 -lbl_803376CC: -/* 803376CC 38 60 00 08 */ li r3, 8 -/* 803376D0 4B F9 75 7D */ bl __nw__FUl -/* 803376D4 28 03 00 00 */ cmplwi r3, 0 -/* 803376D8 41 82 00 30 */ beq lbl_80337708 -/* 803376DC A0 BE 00 00 */ lhz r5, 0(r30) -/* 803376E0 3C 80 80 3D */ lis r4, __vt__11J3DShapeMtx@ha /* 0x803CDC44@ha */ -/* 803376E4 38 04 DC 44 */ addi r0, r4, __vt__11J3DShapeMtx@l /* 0x803CDC44@l */ -/* 803376E8 90 03 00 00 */ stw r0, 0(r3) -/* 803376EC B0 A3 00 04 */ sth r5, 4(r3) -/* 803376F0 3C 80 80 3D */ lis r4, __vt__21J3DShapeMtxConcatView@ha /* 0x803CDC1C@ha */ -/* 803376F4 38 04 DC 1C */ addi r0, r4, __vt__21J3DShapeMtxConcatView@l /* 0x803CDC1C@l */ -/* 803376F8 90 03 00 00 */ stw r0, 0(r3) -/* 803376FC 3C 80 80 3D */ lis r4, __vt__28J3DShapeMtxYBBoardConcatView@ha /* 0x803CDB84@ha */ -/* 80337700 38 04 DB 84 */ addi r0, r4, __vt__28J3DShapeMtxYBBoardConcatView@l /* 0x803CDB84@l */ -/* 80337704 90 03 00 00 */ stw r0, 0(r3) -lbl_80337708: -/* 80337708 7C 7F 1B 78 */ mr r31, r3 -/* 8033770C 48 00 01 24 */ b lbl_80337830 -lbl_80337710: -/* 80337710 38 60 00 10 */ li r3, 0x10 -/* 80337714 4B F9 75 39 */ bl __nw__FUl -/* 80337718 28 03 00 00 */ cmplwi r3, 0 -/* 8033771C 41 82 00 4C */ beq lbl_80337768 -/* 80337720 80 9D 00 0C */ lwz r4, 0xc(r29) -/* 80337724 80 1E 00 04 */ lwz r0, 4(r30) -/* 80337728 54 00 08 3C */ slwi r0, r0, 1 -/* 8033772C 7C E4 02 14 */ add r7, r4, r0 -/* 80337730 A0 DE 00 02 */ lhz r6, 2(r30) -/* 80337734 A0 BE 00 00 */ lhz r5, 0(r30) -/* 80337738 3C 80 80 3D */ lis r4, __vt__11J3DShapeMtx@ha /* 0x803CDC44@ha */ -/* 8033773C 38 04 DC 44 */ addi r0, r4, __vt__11J3DShapeMtx@l /* 0x803CDC44@l */ -/* 80337740 90 03 00 00 */ stw r0, 0(r3) -/* 80337744 B0 A3 00 04 */ sth r5, 4(r3) -/* 80337748 3C 80 80 3D */ lis r4, __vt__21J3DShapeMtxConcatView@ha /* 0x803CDC1C@ha */ -/* 8033774C 38 04 DC 1C */ addi r0, r4, __vt__21J3DShapeMtxConcatView@l /* 0x803CDC1C@l */ -/* 80337750 90 03 00 00 */ stw r0, 0(r3) -/* 80337754 3C 80 80 3D */ lis r4, __vt__26J3DShapeMtxMultiConcatView@ha /* 0x803CDBD4@ha */ -/* 80337758 38 04 DB D4 */ addi r0, r4, __vt__26J3DShapeMtxMultiConcatView@l /* 0x803CDBD4@l */ -/* 8033775C 90 03 00 00 */ stw r0, 0(r3) -/* 80337760 B0 C3 00 08 */ sth r6, 8(r3) -/* 80337764 90 E3 00 0C */ stw r7, 0xc(r3) -lbl_80337768: -/* 80337768 7C 7F 1B 78 */ mr r31, r3 -/* 8033776C 48 00 00 C4 */ b lbl_80337830 -lbl_80337770: -/* 80337770 3C 60 80 3A */ lis r3, J3DShapeFactory__stringBase0@ha /* 0x803A2100@ha */ -/* 80337774 38 63 21 00 */ addi r3, r3, J3DShapeFactory__stringBase0@l /* 0x803A2100@l */ -/* 80337778 4C C6 31 82 */ crclr 6 -/* 8033777C 4B CC F3 41 */ bl OSReport -/* 80337780 48 00 00 B0 */ b lbl_80337830 -lbl_80337784: -/* 80337784 88 07 00 00 */ lbz r0, 0(r7) -/* 80337788 2C 00 00 03 */ cmpwi r0, 3 -/* 8033778C 41 82 00 40 */ beq lbl_803377CC -/* 80337790 40 80 00 90 */ bge lbl_80337820 -/* 80337794 2C 00 00 00 */ cmpwi r0, 0 -/* 80337798 40 80 00 08 */ bge lbl_803377A0 -/* 8033779C 48 00 00 84 */ b lbl_80337820 -lbl_803377A0: -/* 803377A0 38 60 00 08 */ li r3, 8 -/* 803377A4 4B F9 74 A9 */ bl __nw__FUl -/* 803377A8 28 03 00 00 */ cmplwi r3, 0 -/* 803377AC 41 82 00 18 */ beq lbl_803377C4 -/* 803377B0 A0 BE 00 00 */ lhz r5, 0(r30) -/* 803377B4 3C 80 80 3D */ lis r4, __vt__11J3DShapeMtx@ha /* 0x803CDC44@ha */ -/* 803377B8 38 04 DC 44 */ addi r0, r4, __vt__11J3DShapeMtx@l /* 0x803CDC44@l */ -/* 803377BC 90 03 00 00 */ stw r0, 0(r3) -/* 803377C0 B0 A3 00 04 */ sth r5, 4(r3) -lbl_803377C4: -/* 803377C4 7C 7F 1B 78 */ mr r31, r3 -/* 803377C8 48 00 00 68 */ b lbl_80337830 -lbl_803377CC: -/* 803377CC 38 60 00 10 */ li r3, 0x10 -/* 803377D0 4B F9 74 7D */ bl __nw__FUl -/* 803377D4 28 03 00 00 */ cmplwi r3, 0 -/* 803377D8 41 82 00 40 */ beq lbl_80337818 -/* 803377DC 80 9D 00 0C */ lwz r4, 0xc(r29) -/* 803377E0 80 1E 00 04 */ lwz r0, 4(r30) -/* 803377E4 54 00 08 3C */ slwi r0, r0, 1 -/* 803377E8 7C E4 02 14 */ add r7, r4, r0 -/* 803377EC A0 DE 00 02 */ lhz r6, 2(r30) -/* 803377F0 A0 BE 00 00 */ lhz r5, 0(r30) -/* 803377F4 3C 80 80 3D */ lis r4, __vt__11J3DShapeMtx@ha /* 0x803CDC44@ha */ -/* 803377F8 38 04 DC 44 */ addi r0, r4, __vt__11J3DShapeMtx@l /* 0x803CDC44@l */ -/* 803377FC 90 03 00 00 */ stw r0, 0(r3) -/* 80337800 B0 A3 00 04 */ sth r5, 4(r3) -/* 80337804 3C 80 80 3D */ lis r4, __vt__16J3DShapeMtxMulti@ha /* 0x803CDBFC@ha */ -/* 80337808 38 04 DB FC */ addi r0, r4, __vt__16J3DShapeMtxMulti@l /* 0x803CDBFC@l */ -/* 8033780C 90 03 00 00 */ stw r0, 0(r3) -/* 80337810 B0 C3 00 08 */ sth r6, 8(r3) -/* 80337814 90 E3 00 0C */ stw r7, 0xc(r3) -lbl_80337818: -/* 80337818 7C 7F 1B 78 */ mr r31, r3 -/* 8033781C 48 00 00 14 */ b lbl_80337830 -lbl_80337820: -/* 80337820 3C 60 80 3A */ lis r3, J3DShapeFactory__stringBase0@ha /* 0x803A2100@ha */ -/* 80337824 38 63 21 00 */ addi r3, r3, J3DShapeFactory__stringBase0@l /* 0x803A2100@l */ -/* 80337828 4C C6 31 82 */ crclr 6 -/* 8033782C 4B CC F2 91 */ bl OSReport -lbl_80337830: -/* 80337830 7F E3 FB 78 */ mr r3, r31 -/* 80337834 39 61 00 20 */ addi r11, r1, 0x20 -/* 80337838 48 02 A9 F1 */ bl _restgpr_29 -/* 8033783C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80337840 7C 08 03 A6 */ mtlr r0 -/* 80337844 38 21 00 20 */ addi r1, r1, 0x20 -/* 80337848 4E 80 00 20 */ blr diff --git a/asm/MSL_C/MSL_Common/Src/abort_exit/abort.s b/asm/MSL_C/MSL_Common/Src/abort_exit/abort.s deleted file mode 100644 index c388224c33..0000000000 --- a/asm/MSL_C/MSL_Common/Src/abort_exit/abort.s +++ /dev/null @@ -1,43 +0,0 @@ -lbl_80362ABC: -/* 80362ABC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80362AC0 7C 08 02 A6 */ mflr r0 -/* 80362AC4 38 60 00 01 */ li r3, 1 -/* 80362AC8 90 01 00 14 */ stw r0, 0x14(r1) -/* 80362ACC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80362AD0 48 00 5D 4D */ bl raise -/* 80362AD4 38 00 00 01 */ li r0, 1 -/* 80362AD8 38 60 00 00 */ li r3, 0 -/* 80362ADC 90 0D 94 10 */ stw r0, __aborting(r13) -/* 80362AE0 48 00 29 89 */ bl __begin_critical_region -/* 80362AE4 3C 60 80 45 */ lis r3, __atexit_funcs@ha /* 0x8044D440@ha */ -/* 80362AE8 3B E3 D4 40 */ addi r31, r3, __atexit_funcs@l /* 0x8044D440@l */ -/* 80362AEC 48 00 00 20 */ b lbl_80362B0C -lbl_80362AF0: -/* 80362AF0 80 6D 94 14 */ lwz r3, __atexit_curr_func(r13) -/* 80362AF4 38 63 FF FF */ addi r3, r3, -1 -/* 80362AF8 54 60 10 3A */ slwi r0, r3, 2 -/* 80362AFC 90 6D 94 14 */ stw r3, __atexit_curr_func(r13) -/* 80362B00 7D 9F 00 2E */ lwzx r12, r31, r0 -/* 80362B04 7D 89 03 A6 */ mtctr r12 -/* 80362B08 4E 80 04 21 */ bctrl -lbl_80362B0C: -/* 80362B0C 80 0D 94 14 */ lwz r0, __atexit_curr_func(r13) -/* 80362B10 2C 00 00 00 */ cmpwi r0, 0 -/* 80362B14 41 81 FF DC */ bgt lbl_80362AF0 -/* 80362B18 38 60 00 00 */ li r3, 0 -/* 80362B1C 48 00 29 49 */ bl __end_critical_region -/* 80362B20 48 00 29 4D */ bl __kill_critical_regions -/* 80362B24 81 8D 94 1C */ lwz r12, __console_exit(r13) -/* 80362B28 28 0C 00 00 */ cmplwi r12, 0 -/* 80362B2C 41 82 00 14 */ beq lbl_80362B40 -/* 80362B30 7D 89 03 A6 */ mtctr r12 -/* 80362B34 4E 80 04 21 */ bctrl -/* 80362B38 38 00 00 00 */ li r0, 0 -/* 80362B3C 90 0D 94 1C */ stw r0, __console_exit(r13) -lbl_80362B40: -/* 80362B40 4B FE 00 AD */ bl _ExitProcess -/* 80362B44 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80362B48 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80362B4C 7C 08 03 A6 */ mtlr r0 -/* 80362B50 38 21 00 10 */ addi r1, r1, 0x10 -/* 80362B54 4E 80 00 20 */ blr diff --git a/asm/MSL_C/MSL_Common/Src/abort_exit/exit.s b/asm/MSL_C/MSL_Common/Src/abort_exit/exit.s deleted file mode 100644 index b7cb01a0bc..0000000000 --- a/asm/MSL_C/MSL_Common/Src/abort_exit/exit.s +++ /dev/null @@ -1,67 +0,0 @@ -lbl_803629CC: -/* 803629CC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 803629D0 7C 08 02 A6 */ mflr r0 -/* 803629D4 90 01 00 14 */ stw r0, 0x14(r1) -/* 803629D8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 803629DC 80 0D 94 10 */ lwz r0, __aborting(r13) -/* 803629E0 2C 00 00 00 */ cmpwi r0, 0 -/* 803629E4 40 82 00 5C */ bne lbl_80362A40 -/* 803629E8 38 60 00 00 */ li r3, 0 -/* 803629EC 48 00 2A 7D */ bl __begin_critical_region -/* 803629F0 38 60 00 00 */ li r3, 0 -/* 803629F4 48 00 2A 71 */ bl __end_critical_region -/* 803629F8 4B FF F1 E5 */ bl __destroy_global_chain -/* 803629FC 3C 60 80 37 */ lis r3, __destroy_global_chain_reference@ha /* 0x80373980@ha */ -/* 80362A00 38 03 39 80 */ addi r0, r3, __destroy_global_chain_reference@l /* 0x80373980@l */ -/* 80362A04 7C 1F 03 78 */ mr r31, r0 -/* 80362A08 48 00 00 10 */ b lbl_80362A18 -lbl_80362A0C: -/* 80362A0C 7D 89 03 A6 */ mtctr r12 -/* 80362A10 4E 80 04 21 */ bctrl -/* 80362A14 3B FF 00 04 */ addi r31, r31, 4 -lbl_80362A18: -/* 80362A18 81 9F 00 00 */ lwz r12, 0(r31) -/* 80362A1C 28 0C 00 00 */ cmplwi r12, 0 -/* 80362A20 40 82 FF EC */ bne lbl_80362A0C -/* 80362A24 81 8D 94 18 */ lwz r12, __stdio_exit(r13) -/* 80362A28 28 0C 00 00 */ cmplwi r12, 0 -/* 80362A2C 41 82 00 14 */ beq lbl_80362A40 -/* 80362A30 7D 89 03 A6 */ mtctr r12 -/* 80362A34 4E 80 04 21 */ bctrl -/* 80362A38 38 00 00 00 */ li r0, 0 -/* 80362A3C 90 0D 94 18 */ stw r0, __stdio_exit(r13) -lbl_80362A40: -/* 80362A40 38 60 00 00 */ li r3, 0 -/* 80362A44 48 00 2A 25 */ bl __begin_critical_region -/* 80362A48 3C 60 80 45 */ lis r3, __atexit_funcs@ha /* 0x8044D440@ha */ -/* 80362A4C 3B E3 D4 40 */ addi r31, r3, __atexit_funcs@l /* 0x8044D440@l */ -/* 80362A50 48 00 00 20 */ b lbl_80362A70 -lbl_80362A54: -/* 80362A54 80 6D 94 14 */ lwz r3, __atexit_curr_func(r13) -/* 80362A58 38 63 FF FF */ addi r3, r3, -1 -/* 80362A5C 54 60 10 3A */ slwi r0, r3, 2 -/* 80362A60 90 6D 94 14 */ stw r3, __atexit_curr_func(r13) -/* 80362A64 7D 9F 00 2E */ lwzx r12, r31, r0 -/* 80362A68 7D 89 03 A6 */ mtctr r12 -/* 80362A6C 4E 80 04 21 */ bctrl -lbl_80362A70: -/* 80362A70 80 0D 94 14 */ lwz r0, __atexit_curr_func(r13) -/* 80362A74 2C 00 00 00 */ cmpwi r0, 0 -/* 80362A78 41 81 FF DC */ bgt lbl_80362A54 -/* 80362A7C 38 60 00 00 */ li r3, 0 -/* 80362A80 48 00 29 E5 */ bl __end_critical_region -/* 80362A84 48 00 29 E9 */ bl __kill_critical_regions -/* 80362A88 81 8D 94 1C */ lwz r12, __console_exit(r13) -/* 80362A8C 28 0C 00 00 */ cmplwi r12, 0 -/* 80362A90 41 82 00 14 */ beq lbl_80362AA4 -/* 80362A94 7D 89 03 A6 */ mtctr r12 -/* 80362A98 4E 80 04 21 */ bctrl -/* 80362A9C 38 00 00 00 */ li r0, 0 -/* 80362AA0 90 0D 94 1C */ stw r0, __console_exit(r13) -lbl_80362AA4: -/* 80362AA4 4B FE 01 49 */ bl _ExitProcess -/* 80362AA8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80362AAC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80362AB0 7C 08 03 A6 */ mtlr r0 -/* 80362AB4 38 21 00 10 */ addi r1, r1, 0x10 -/* 80362AB8 4E 80 00 20 */ blr diff --git a/asm/MSL_C/Math/Double_precision/e_acos/__ieee754_acos.s b/asm/MSL_C/Math/Double_precision/e_acos/__ieee754_acos.s deleted file mode 100644 index 319d9622c8..0000000000 --- a/asm/MSL_C/Math/Double_precision/e_acos/__ieee754_acos.s +++ /dev/null @@ -1,151 +0,0 @@ -lbl_80369274: -/* 80369274 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 80369278 7C 08 02 A6 */ mflr r0 -/* 8036927C 90 01 00 34 */ stw r0, 0x34(r1) -/* 80369280 DB E1 00 20 */ stfd f31, 0x20(r1) -/* 80369284 F3 E1 00 28 */ psq_st f31, 40(r1), 0, 0 /* qr0 */ -/* 80369288 D8 21 00 08 */ stfd f1, 8(r1) -/* 8036928C 3C 00 3F F0 */ lis r0, 0x3ff0 -/* 80369290 80 81 00 08 */ lwz r4, 8(r1) -/* 80369294 54 83 00 7E */ clrlwi r3, r4, 1 -/* 80369298 7C 03 00 00 */ cmpw r3, r0 -/* 8036929C 41 80 00 38 */ blt lbl_803692D4 -/* 803692A0 80 01 00 0C */ lwz r0, 0xc(r1) -/* 803692A4 3C 63 C0 10 */ addis r3, r3, 0xc010 -/* 803692A8 7C 60 03 79 */ or. r0, r3, r0 -/* 803692AC 40 82 00 1C */ bne lbl_803692C8 -/* 803692B0 2C 04 00 00 */ cmpwi r4, 0 -/* 803692B4 40 81 00 0C */ ble lbl_803692C0 -/* 803692B8 C8 22 CC 78 */ lfd f1, lit_83(r2) -/* 803692BC 48 00 01 DC */ b lbl_80369498 -lbl_803692C0: -/* 803692C0 C8 22 CC 80 */ lfd f1, lit_84(r2) -/* 803692C4 48 00 01 D4 */ b lbl_80369498 -lbl_803692C8: -/* 803692C8 3C 60 80 45 */ lis r3, __float_nan@ha /* 0x80450AE0@ha */ -/* 803692CC C0 23 0A E0 */ lfs f1, __float_nan@l(r3) /* 0x80450AE0@l */ -/* 803692D0 48 00 01 C8 */ b lbl_80369498 -lbl_803692D4: -/* 803692D4 3C 00 3F E0 */ lis r0, 0x3fe0 -/* 803692D8 7C 03 00 00 */ cmpw r3, r0 -/* 803692DC 40 80 00 8C */ bge lbl_80369368 -/* 803692E0 3C 00 3C 60 */ lis r0, 0x3c60 -/* 803692E4 7C 03 00 00 */ cmpw r3, r0 -/* 803692E8 41 81 00 0C */ bgt lbl_803692F4 -/* 803692EC C8 22 CC 88 */ lfd f1, lit_85(r2) -/* 803692F0 48 00 01 A8 */ b lbl_80369498 -lbl_803692F4: -/* 803692F4 FD 41 00 72 */ fmul f10, f1, f1 -/* 803692F8 C8 42 CC C0 */ lfd f2, lit_92(r2) -/* 803692FC C8 02 CC B8 */ lfd f0, lit_91(r2) -/* 80369300 C8 62 CC B0 */ lfd f3, lit_90(r2) -/* 80369304 C9 02 CC A8 */ lfd f8, lit_89(r2) -/* 80369308 FC 82 02 BA */ fmadd f4, f2, f10, f0 -/* 8036930C C8 42 CC E8 */ lfd f2, lit_97(r2) -/* 80369310 C8 02 CC E0 */ lfd f0, lit_96(r2) -/* 80369314 C8 E2 CC A0 */ lfd f7, lit_88(r2) -/* 80369318 FD 2A 19 3A */ fmadd f9, f10, f4, f3 -/* 8036931C C8 82 CC D8 */ lfd f4, lit_95(r2) -/* 80369320 C8 C2 CC 98 */ lfd f6, lit_87(r2) -/* 80369324 FC A2 02 BA */ fmadd f5, f2, f10, f0 -/* 80369328 C8 62 CC D0 */ lfd f3, lit_94(r2) -/* 8036932C C8 42 CC C8 */ lfd f2, lit_93(r2) -/* 80369330 FD 0A 42 7A */ fmadd f8, f10, f9, f8 -/* 80369334 C8 02 CC 90 */ lfd f0, lit_86(r2) -/* 80369338 C9 22 CC 88 */ lfd f9, lit_85(r2) -/* 8036933C FC 8A 21 7A */ fmadd f4, f10, f5, f4 -/* 80369340 FC AA 3A 3A */ fmadd f5, f10, f8, f7 -/* 80369344 FC 6A 19 3A */ fmadd f3, f10, f4, f3 -/* 80369348 FC 8A 31 7A */ fmadd f4, f10, f5, f6 -/* 8036934C FC 4A 10 FA */ fmadd f2, f10, f3, f2 -/* 80369350 FC 6A 01 32 */ fmul f3, f10, f4 -/* 80369354 FC 43 10 24 */ fdiv f2, f3, f2 -/* 80369358 FC 01 00 BC */ fnmsub f0, f1, f2, f0 -/* 8036935C FC 01 00 28 */ fsub f0, f1, f0 -/* 80369360 FC 29 00 28 */ fsub f1, f9, f0 -/* 80369364 48 00 01 34 */ b lbl_80369498 -lbl_80369368: -/* 80369368 2C 04 00 00 */ cmpwi r4, 0 -/* 8036936C 40 80 00 90 */ bge lbl_803693FC -/* 80369370 C8 02 CC C8 */ lfd f0, lit_93(r2) -/* 80369374 C8 42 CC F0 */ lfd f2, lit_98(r2) -/* 80369378 FC 00 08 2A */ fadd f0, f0, f1 -/* 8036937C FF E2 00 32 */ fmul f31, f2, f0 -/* 80369380 FC 20 F8 90 */ fmr f1, f31 -/* 80369384 48 00 36 D1 */ bl sqrt -/* 80369388 C8 62 CC C0 */ lfd f3, lit_92(r2) -/* 8036938C C8 42 CC B8 */ lfd f2, lit_91(r2) -/* 80369390 C8 02 CC B0 */ lfd f0, lit_90(r2) -/* 80369394 FC 83 17 FA */ fmadd f4, f3, f31, f2 -/* 80369398 C8 A2 CC A8 */ lfd f5, lit_89(r2) -/* 8036939C C8 62 CC E8 */ lfd f3, lit_97(r2) -/* 803693A0 C8 42 CC E0 */ lfd f2, lit_96(r2) -/* 803693A4 C8 E2 CC A0 */ lfd f7, lit_88(r2) -/* 803693A8 FD 1F 01 3A */ fmadd f8, f31, f4, f0 -/* 803693AC C8 02 CC D8 */ lfd f0, lit_95(r2) -/* 803693B0 FC 43 17 FA */ fmadd f2, f3, f31, f2 -/* 803693B4 C8 C2 CC 98 */ lfd f6, lit_87(r2) -/* 803693B8 C8 82 CC D0 */ lfd f4, lit_94(r2) -/* 803693BC FD 1F 2A 3A */ fmadd f8, f31, f8, f5 -/* 803693C0 C8 62 CC C8 */ lfd f3, lit_93(r2) -/* 803693C4 FC BF 00 BA */ fmadd f5, f31, f2, f0 -/* 803693C8 C8 42 CC 90 */ lfd f2, lit_86(r2) -/* 803693CC FC FF 3A 3A */ fmadd f7, f31, f8, f7 -/* 803693D0 C9 02 CC F8 */ lfd f8, lit_99(r2) -/* 803693D4 C8 02 CC 80 */ lfd f0, lit_84(r2) -/* 803693D8 FC 9F 21 7A */ fmadd f4, f31, f5, f4 -/* 803693DC FC BF 31 FA */ fmadd f5, f31, f7, f6 -/* 803693E0 FC 7F 19 3A */ fmadd f3, f31, f4, f3 -/* 803693E4 FC 9F 01 72 */ fmul f4, f31, f5 -/* 803693E8 FC 64 18 24 */ fdiv f3, f4, f3 -/* 803693EC FC 43 10 78 */ fmsub f2, f3, f1, f2 -/* 803693F0 FC 21 10 2A */ fadd f1, f1, f2 -/* 803693F4 FC 28 00 7C */ fnmsub f1, f8, f1, f0 -/* 803693F8 48 00 00 A0 */ b lbl_80369498 -lbl_803693FC: -/* 803693FC C8 02 CC C8 */ lfd f0, lit_93(r2) -/* 80369400 C8 42 CC F0 */ lfd f2, lit_98(r2) -/* 80369404 FC 00 08 28 */ fsub f0, f0, f1 -/* 80369408 FF E2 00 32 */ fmul f31, f2, f0 -/* 8036940C FC 20 F8 90 */ fmr f1, f31 -/* 80369410 48 00 36 45 */ bl sqrt -/* 80369414 C8 42 CC C0 */ lfd f2, lit_92(r2) -/* 80369418 38 00 00 00 */ li r0, 0 -/* 8036941C C8 02 CC B8 */ lfd f0, lit_91(r2) -/* 80369420 D8 21 00 10 */ stfd f1, 0x10(r1) -/* 80369424 FC 62 07 FA */ fmadd f3, f2, f31, f0 -/* 80369428 C8 02 CC B0 */ lfd f0, lit_90(r2) -/* 8036942C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80369430 C8 42 CC A8 */ lfd f2, lit_89(r2) -/* 80369434 C9 21 00 10 */ lfd f9, 0x10(r1) -/* 80369438 FC BF 00 FA */ fmadd f5, f31, f3, f0 -/* 8036943C C8 82 CC E8 */ lfd f4, lit_97(r2) -/* 80369440 C8 02 CC E0 */ lfd f0, lit_96(r2) -/* 80369444 FC 69 FA 7C */ fnmsub f3, f9, f9, f31 -/* 80369448 C8 E2 CC A0 */ lfd f7, lit_88(r2) -/* 8036944C FD 1F 11 7A */ fmadd f8, f31, f5, f2 -/* 80369450 C8 42 CC D8 */ lfd f2, lit_95(r2) -/* 80369454 FC A4 07 FA */ fmadd f5, f4, f31, f0 -/* 80369458 C8 C2 CC 98 */ lfd f6, lit_87(r2) -/* 8036945C C8 02 CC D0 */ lfd f0, lit_94(r2) -/* 80369460 FC FF 3A 3A */ fmadd f7, f31, f8, f7 -/* 80369464 C8 82 CC C8 */ lfd f4, lit_93(r2) -/* 80369468 FC BF 11 7A */ fmadd f5, f31, f5, f2 -/* 8036946C C8 42 CC F8 */ lfd f2, lit_99(r2) -/* 80369470 FC DF 31 FA */ fmadd f6, f31, f7, f6 -/* 80369474 FC BF 01 7A */ fmadd f5, f31, f5, f0 -/* 80369478 FC 01 48 2A */ fadd f0, f1, f9 -/* 8036947C FC DF 01 B2 */ fmul f6, f31, f6 -/* 80369480 FC 9F 21 7A */ fmadd f4, f31, f5, f4 -/* 80369484 FC 03 00 24 */ fdiv f0, f3, f0 -/* 80369488 FC 66 20 24 */ fdiv f3, f6, f4 -/* 8036948C FC 03 00 7A */ fmadd f0, f3, f1, f0 -/* 80369490 FC 09 00 2A */ fadd f0, f9, f0 -/* 80369494 FC 22 00 32 */ fmul f1, f2, f0 -lbl_80369498: -/* 80369498 E3 E1 00 28 */ psq_l f31, 40(r1), 0, 0 /* qr0 */ -/* 8036949C 80 01 00 34 */ lwz r0, 0x34(r1) -/* 803694A0 CB E1 00 20 */ lfd f31, 0x20(r1) -/* 803694A4 7C 08 03 A6 */ mtlr r0 -/* 803694A8 38 21 00 30 */ addi r1, r1, 0x30 -/* 803694AC 4E 80 00 20 */ blr diff --git a/asm/MSL_C/Math/Double_precision/e_asin/__ieee754_asin.s b/asm/MSL_C/Math/Double_precision/e_asin/__ieee754_asin.s deleted file mode 100644 index ac05089eb9..0000000000 --- a/asm/MSL_C/Math/Double_precision/e_asin/__ieee754_asin.s +++ /dev/null @@ -1,152 +0,0 @@ -lbl_803694B0: -/* 803694B0 94 21 FF B0 */ stwu r1, -0x50(r1) -/* 803694B4 7C 08 02 A6 */ mflr r0 -/* 803694B8 90 01 00 54 */ stw r0, 0x54(r1) -/* 803694BC DB E1 00 40 */ stfd f31, 0x40(r1) -/* 803694C0 F3 E1 00 48 */ psq_st f31, 72(r1), 0, 0 /* qr0 */ -/* 803694C4 DB C1 00 30 */ stfd f30, 0x30(r1) -/* 803694C8 F3 C1 00 38 */ psq_st f30, 56(r1), 0, 0 /* qr0 */ -/* 803694CC DB A1 00 20 */ stfd f29, 0x20(r1) -/* 803694D0 F3 A1 00 28 */ psq_st f29, 40(r1), 0, 0 /* qr0 */ -/* 803694D4 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 803694D8 93 C1 00 18 */ stw r30, 0x18(r1) -/* 803694DC D8 21 00 08 */ stfd f1, 8(r1) -/* 803694E0 3C 00 3F F0 */ lis r0, 0x3ff0 -/* 803694E4 83 E1 00 08 */ lwz r31, 8(r1) -/* 803694E8 57 FE 00 7E */ clrlwi r30, r31, 1 -/* 803694EC 7C 1E 00 00 */ cmpw r30, r0 -/* 803694F0 41 80 00 34 */ blt lbl_80369524 -/* 803694F4 80 01 00 0C */ lwz r0, 0xc(r1) -/* 803694F8 3C 7E C0 10 */ addis r3, r30, 0xc010 -/* 803694FC 7C 60 03 79 */ or. r0, r3, r0 -/* 80369500 40 82 00 18 */ bne lbl_80369518 -/* 80369504 C8 02 CD 08 */ lfd f0, lit_95(r2) -/* 80369508 C8 42 CD 00 */ lfd f2, lit_94(r2) -/* 8036950C FC 00 00 72 */ fmul f0, f0, f1 -/* 80369510 FC 22 00 7A */ fmadd f1, f2, f1, f0 -/* 80369514 48 00 01 A4 */ b lbl_803696B8 -lbl_80369518: -/* 80369518 3C 60 80 45 */ lis r3, __float_nan@ha /* 0x80450AE0@ha */ -/* 8036951C C0 23 0A E0 */ lfs f1, __float_nan@l(r3) /* 0x80450AE0@l */ -/* 80369520 48 00 01 98 */ b lbl_803696B8 -lbl_80369524: -/* 80369524 3C 00 3F E0 */ lis r0, 0x3fe0 -/* 80369528 7C 1E 00 00 */ cmpw r30, r0 -/* 8036952C 40 80 00 94 */ bge lbl_803695C0 -/* 80369530 3C 00 3E 40 */ lis r0, 0x3e40 -/* 80369534 7C 1E 00 00 */ cmpw r30, r0 -/* 80369538 40 80 00 1C */ bge lbl_80369554 -/* 8036953C C8 42 CD 10 */ lfd f2, lit_96(r2) -/* 80369540 C8 02 CD 18 */ lfd f0, lit_97(r2) -/* 80369544 FC 42 08 2A */ fadd f2, f2, f1 -/* 80369548 FC 02 00 40 */ fcmpo cr0, f2, f0 -/* 8036954C 40 81 00 0C */ ble lbl_80369558 -/* 80369550 48 00 01 68 */ b lbl_803696B8 -lbl_80369554: -/* 80369554 FF E1 00 72 */ fmul f31, f1, f1 -lbl_80369558: -/* 80369558 C8 22 CD 48 */ lfd f1, lit_103(r2) -/* 8036955C C8 02 CD 40 */ lfd f0, lit_102(r2) -/* 80369560 C8 42 CD 38 */ lfd f2, lit_101(r2) -/* 80369564 FC 61 07 FA */ fmadd f3, f1, f31, f0 -/* 80369568 C8 C2 CD 30 */ lfd f6, lit_100(r2) -/* 8036956C C8 22 CD 68 */ lfd f1, lit_107(r2) -/* 80369570 C8 02 CD 60 */ lfd f0, lit_106(r2) -/* 80369574 C8 A2 CD 28 */ lfd f5, lit_99(r2) -/* 80369578 FC FF 10 FA */ fmadd f7, f31, f3, f2 -/* 8036957C C8 42 CD 58 */ lfd f2, lit_105(r2) -/* 80369580 FC 61 07 FA */ fmadd f3, f1, f31, f0 -/* 80369584 C8 82 CD 20 */ lfd f4, lit_98(r2) -/* 80369588 C8 22 CD 50 */ lfd f1, lit_104(r2) -/* 8036958C FC DF 31 FA */ fmadd f6, f31, f7, f6 -/* 80369590 C8 02 CD 18 */ lfd f0, lit_97(r2) -/* 80369594 FC 5F 10 FA */ fmadd f2, f31, f3, f2 -/* 80369598 C8 E1 00 08 */ lfd f7, 8(r1) -/* 8036959C FC 7F 29 BA */ fmadd f3, f31, f6, f5 -/* 803695A0 FC 3F 08 BA */ fmadd f1, f31, f2, f1 -/* 803695A4 FC 5F 20 FA */ fmadd f2, f31, f3, f4 -/* 803695A8 FC 1F 00 7A */ fmadd f0, f31, f1, f0 -/* 803695AC FC 3F 00 B2 */ fmul f1, f31, f2 -/* 803695B0 FC 01 00 24 */ fdiv f0, f1, f0 -/* 803695B4 FC 27 38 3A */ fmadd f1, f7, f0, f7 -/* 803695B8 D8 01 00 10 */ stfd f0, 0x10(r1) -/* 803695BC 48 00 00 FC */ b lbl_803696B8 -lbl_803695C0: -/* 803695C0 FC 20 0A 10 */ fabs f1, f1 -/* 803695C4 C9 22 CD 18 */ lfd f9, lit_97(r2) -/* 803695C8 C8 02 CD 70 */ lfd f0, lit_108(r2) -/* 803695CC C8 E2 CD 48 */ lfd f7, lit_103(r2) -/* 803695D0 FD 09 08 28 */ fsub f8, f9, f1 -/* 803695D4 C8 62 CD 40 */ lfd f3, lit_102(r2) -/* 803695D8 C8 C2 CD 38 */ lfd f6, lit_101(r2) -/* 803695DC C8 A2 CD 30 */ lfd f5, lit_100(r2) -/* 803695E0 FF E0 02 32 */ fmul f31, f0, f8 -/* 803695E4 C8 42 CD 68 */ lfd f2, lit_107(r2) -/* 803695E8 C8 02 CD 60 */ lfd f0, lit_106(r2) -/* 803695EC C8 82 CD 28 */ lfd f4, lit_99(r2) -/* 803695F0 C8 22 CD 58 */ lfd f1, lit_105(r2) -/* 803695F4 FC E7 1F FA */ fmadd f7, f7, f31, f3 -/* 803695F8 C8 62 CD 20 */ lfd f3, lit_98(r2) -/* 803695FC FC 42 07 FA */ fmadd f2, f2, f31, f0 -/* 80369600 C8 02 CD 50 */ lfd f0, lit_104(r2) -/* 80369604 D9 01 00 10 */ stfd f8, 0x10(r1) -/* 80369608 FC DF 31 FA */ fmadd f6, f31, f7, f6 -/* 8036960C FC 3F 08 BA */ fmadd f1, f31, f2, f1 -/* 80369610 FC 5F 29 BA */ fmadd f2, f31, f6, f5 -/* 80369614 FC 1F 00 7A */ fmadd f0, f31, f1, f0 -/* 80369618 FC 3F 20 BA */ fmadd f1, f31, f2, f4 -/* 8036961C FF BF 48 3A */ fmadd f29, f31, f0, f9 -/* 80369620 FC 1F 18 7A */ fmadd f0, f31, f1, f3 -/* 80369624 FC 20 F8 90 */ fmr f1, f31 -/* 80369628 FF DF 00 32 */ fmul f30, f31, f0 -/* 8036962C 48 00 34 29 */ bl sqrt -/* 80369630 3C 60 3F EF */ lis r3, 0x3FEF /* 0x3FEF3333@ha */ -/* 80369634 38 03 33 33 */ addi r0, r3, 0x3333 /* 0x3FEF3333@l */ -/* 80369638 7C 1E 00 00 */ cmpw r30, r0 -/* 8036963C 41 80 00 28 */ blt lbl_80369664 -/* 80369640 FC 9E E8 24 */ fdiv f4, f30, f29 -/* 80369644 C8 42 CD 78 */ lfd f2, lit_109(r2) -/* 80369648 C8 02 CD 08 */ lfd f0, lit_95(r2) -/* 8036964C C8 62 CD 00 */ lfd f3, lit_94(r2) -/* 80369650 FC 21 09 3A */ fmadd f1, f1, f4, f1 -/* 80369654 D8 81 00 10 */ stfd f4, 0x10(r1) -/* 80369658 FC 02 00 78 */ fmsub f0, f2, f1, f0 -/* 8036965C FC 23 00 28 */ fsub f1, f3, f0 -/* 80369660 48 00 00 48 */ b lbl_803696A8 -lbl_80369664: -/* 80369664 D8 21 00 10 */ stfd f1, 0x10(r1) -/* 80369668 38 00 00 00 */ li r0, 0 -/* 8036966C C8 E2 CD 78 */ lfd f7, lit_109(r2) -/* 80369670 FC BE E8 24 */ fdiv f5, f30, f29 -/* 80369674 90 01 00 14 */ stw r0, 0x14(r1) -/* 80369678 C8 02 CD 08 */ lfd f0, lit_95(r2) -/* 8036967C C9 01 00 10 */ lfd f8, 0x10(r1) -/* 80369680 C8 42 CD 80 */ lfd f2, lit_110(r2) -/* 80369684 FC 88 FA 3C */ fnmsub f4, f8, f8, f31 -/* 80369688 FC 61 40 2A */ fadd f3, f1, f8 -/* 8036968C FC C7 00 72 */ fmul f6, f7, f1 -/* 80369690 FC 24 18 24 */ fdiv f1, f4, f3 -/* 80369694 FC 27 00 7C */ fnmsub f1, f7, f1, f0 -/* 80369698 FC 07 12 3C */ fnmsub f0, f7, f8, f2 -/* 8036969C FC 26 09 78 */ fmsub f1, f6, f5, f1 -/* 803696A0 FC 01 00 28 */ fsub f0, f1, f0 -/* 803696A4 FC 22 00 28 */ fsub f1, f2, f0 -lbl_803696A8: -/* 803696A8 2C 1F 00 00 */ cmpwi r31, 0 -/* 803696AC 40 81 00 08 */ ble lbl_803696B4 -/* 803696B0 48 00 00 08 */ b lbl_803696B8 -lbl_803696B4: -/* 803696B4 FC 20 08 50 */ fneg f1, f1 -lbl_803696B8: -/* 803696B8 E3 E1 00 48 */ psq_l f31, 72(r1), 0, 0 /* qr0 */ -/* 803696BC CB E1 00 40 */ lfd f31, 0x40(r1) -/* 803696C0 E3 C1 00 38 */ psq_l f30, 56(r1), 0, 0 /* qr0 */ -/* 803696C4 CB C1 00 30 */ lfd f30, 0x30(r1) -/* 803696C8 E3 A1 00 28 */ psq_l f29, 40(r1), 0, 0 /* qr0 */ -/* 803696CC CB A1 00 20 */ lfd f29, 0x20(r1) -/* 803696D0 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 803696D4 80 01 00 54 */ lwz r0, 0x54(r1) -/* 803696D8 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 803696DC 7C 08 03 A6 */ mtlr r0 -/* 803696E0 38 21 00 50 */ addi r1, r1, 0x50 -/* 803696E4 4E 80 00 20 */ blr diff --git a/asm/MSL_C/Math/Double_precision/e_atan2/__ieee754_atan2.s b/asm/MSL_C/Math/Double_precision/e_atan2/__ieee754_atan2.s deleted file mode 100644 index 447321e248..0000000000 --- a/asm/MSL_C/Math/Double_precision/e_atan2/__ieee754_atan2.s +++ /dev/null @@ -1,197 +0,0 @@ -lbl_803696E8: -/* 803696E8 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 803696EC 7C 08 02 A6 */ mflr r0 -/* 803696F0 3C 60 7F F0 */ lis r3, 0x7ff0 -/* 803696F4 D8 41 00 10 */ stfd f2, 0x10(r1) -/* 803696F8 81 01 00 14 */ lwz r8, 0x14(r1) -/* 803696FC 90 01 00 34 */ stw r0, 0x34(r1) -/* 80369700 7C 08 00 D0 */ neg r0, r8 -/* 80369704 80 81 00 10 */ lwz r4, 0x10(r1) -/* 80369708 7D 00 03 78 */ or r0, r8, r0 -/* 8036970C D8 21 00 08 */ stfd f1, 8(r1) -/* 80369710 54 86 00 7E */ clrlwi r6, r4, 1 -/* 80369714 54 00 0F FE */ srwi r0, r0, 0x1f -/* 80369718 80 A1 00 08 */ lwz r5, 8(r1) -/* 8036971C 7C C0 03 78 */ or r0, r6, r0 -/* 80369720 93 E1 00 2C */ stw r31, 0x2c(r1) -/* 80369724 7C 00 18 40 */ cmplw r0, r3 -/* 80369728 81 21 00 0C */ lwz r9, 0xc(r1) -/* 8036972C 54 A7 00 7E */ clrlwi r7, r5, 1 -/* 80369730 41 81 00 1C */ bgt lbl_8036974C -/* 80369734 7C 09 00 D0 */ neg r0, r9 -/* 80369738 7D 20 03 78 */ or r0, r9, r0 -/* 8036973C 54 00 0F FE */ srwi r0, r0, 0x1f -/* 80369740 7C E0 03 78 */ or r0, r7, r0 -/* 80369744 7C 00 18 40 */ cmplw r0, r3 -/* 80369748 40 81 00 14 */ ble lbl_8036975C -lbl_8036974C: -/* 8036974C C8 21 00 10 */ lfd f1, 0x10(r1) -/* 80369750 C8 01 00 08 */ lfd f0, 8(r1) -/* 80369754 FC 21 00 2A */ fadd f1, f1, f0 -/* 80369758 48 00 02 0C */ b lbl_80369964 -lbl_8036975C: -/* 8036975C 3C 04 C0 10 */ addis r0, r4, 0xc010 -/* 80369760 7C 00 43 79 */ or. r0, r0, r8 -/* 80369764 40 82 00 0C */ bne lbl_80369770 -/* 80369768 48 00 25 3D */ bl atan -/* 8036976C 48 00 01 F8 */ b lbl_80369964 -lbl_80369770: -/* 80369770 7C E0 4B 79 */ or. r0, r7, r9 -/* 80369774 54 80 17 BC */ rlwinm r0, r4, 2, 0x1e, 0x1e -/* 80369778 7C 1F 03 78 */ mr r31, r0 -/* 8036977C 50 BF 0F FE */ rlwimi r31, r5, 1, 0x1f, 0x1f -/* 80369780 40 82 00 3C */ bne lbl_803697BC -/* 80369784 2C 1F 00 02 */ cmpwi r31, 2 -/* 80369788 41 82 00 24 */ beq lbl_803697AC -/* 8036978C 40 80 00 10 */ bge lbl_8036979C -/* 80369790 2C 1F 00 00 */ cmpwi r31, 0 -/* 80369794 40 80 01 D0 */ bge lbl_80369964 -/* 80369798 48 00 00 24 */ b lbl_803697BC -lbl_8036979C: -/* 8036979C 2C 1F 00 04 */ cmpwi r31, 4 -/* 803697A0 40 80 00 1C */ bge lbl_803697BC -/* 803697A4 48 00 00 10 */ b lbl_803697B4 -/* 803697A8 48 00 01 BC */ b lbl_80369964 -lbl_803697AC: -/* 803697AC C8 22 CD 88 */ lfd f1, lit_145(r2) -/* 803697B0 48 00 01 B4 */ b lbl_80369964 -lbl_803697B4: -/* 803697B4 C8 22 CD 90 */ lfd f1, lit_146(r2) -/* 803697B8 48 00 01 AC */ b lbl_80369964 -lbl_803697BC: -/* 803697BC 7C C0 43 79 */ or. r0, r6, r8 -/* 803697C0 40 82 00 1C */ bne lbl_803697DC -/* 803697C4 2C 05 00 00 */ cmpwi r5, 0 -/* 803697C8 40 80 00 0C */ bge lbl_803697D4 -/* 803697CC C8 22 CD 98 */ lfd f1, lit_147(r2) -/* 803697D0 48 00 01 94 */ b lbl_80369964 -lbl_803697D4: -/* 803697D4 C8 22 CD A0 */ lfd f1, lit_148(r2) -/* 803697D8 48 00 01 8C */ b lbl_80369964 -lbl_803697DC: -/* 803697DC 3C 06 80 10 */ addis r0, r6, 0x8010 -/* 803697E0 28 00 00 00 */ cmplwi r0, 0 -/* 803697E4 40 82 00 A0 */ bne lbl_80369884 -/* 803697E8 3C 07 80 10 */ addis r0, r7, 0x8010 -/* 803697EC 28 00 00 00 */ cmplwi r0, 0 -/* 803697F0 40 82 00 4C */ bne lbl_8036983C -/* 803697F4 2C 1F 00 02 */ cmpwi r31, 2 -/* 803697F8 41 82 00 34 */ beq lbl_8036982C -/* 803697FC 40 80 00 14 */ bge lbl_80369810 -/* 80369800 2C 1F 00 00 */ cmpwi r31, 0 -/* 80369804 41 82 00 18 */ beq lbl_8036981C -/* 80369808 40 80 00 1C */ bge lbl_80369824 -/* 8036980C 48 00 00 78 */ b lbl_80369884 -lbl_80369810: -/* 80369810 2C 1F 00 04 */ cmpwi r31, 4 -/* 80369814 40 80 00 70 */ bge lbl_80369884 -/* 80369818 48 00 00 1C */ b lbl_80369834 -lbl_8036981C: -/* 8036981C C8 22 CD A8 */ lfd f1, lit_149(r2) -/* 80369820 48 00 01 44 */ b lbl_80369964 -lbl_80369824: -/* 80369824 C8 22 CD B0 */ lfd f1, lit_150(r2) -/* 80369828 48 00 01 3C */ b lbl_80369964 -lbl_8036982C: -/* 8036982C C8 22 CD B8 */ lfd f1, lit_151(r2) -/* 80369830 48 00 01 34 */ b lbl_80369964 -lbl_80369834: -/* 80369834 C8 22 CD C0 */ lfd f1, lit_152(r2) -/* 80369838 48 00 01 2C */ b lbl_80369964 -lbl_8036983C: -/* 8036983C 2C 1F 00 02 */ cmpwi r31, 2 -/* 80369840 41 82 00 34 */ beq lbl_80369874 -/* 80369844 40 80 00 14 */ bge lbl_80369858 -/* 80369848 2C 1F 00 00 */ cmpwi r31, 0 -/* 8036984C 41 82 00 18 */ beq lbl_80369864 -/* 80369850 40 80 00 1C */ bge lbl_8036986C -/* 80369854 48 00 00 30 */ b lbl_80369884 -lbl_80369858: -/* 80369858 2C 1F 00 04 */ cmpwi r31, 4 -/* 8036985C 40 80 00 28 */ bge lbl_80369884 -/* 80369860 48 00 00 1C */ b lbl_8036987C -lbl_80369864: -/* 80369864 C8 22 CD C8 */ lfd f1, lit_153(r2) -/* 80369868 48 00 00 FC */ b lbl_80369964 -lbl_8036986C: -/* 8036986C C8 22 CD D0 */ lfd f1, lit_154(r2) -/* 80369870 48 00 00 F4 */ b lbl_80369964 -lbl_80369874: -/* 80369874 C8 22 CD 88 */ lfd f1, lit_145(r2) -/* 80369878 48 00 00 EC */ b lbl_80369964 -lbl_8036987C: -/* 8036987C C8 22 CD 90 */ lfd f1, lit_146(r2) -/* 80369880 48 00 00 E4 */ b lbl_80369964 -lbl_80369884: -/* 80369884 3C 07 80 10 */ addis r0, r7, 0x8010 -/* 80369888 28 00 00 00 */ cmplwi r0, 0 -/* 8036988C 40 82 00 1C */ bne lbl_803698A8 -/* 80369890 2C 05 00 00 */ cmpwi r5, 0 -/* 80369894 40 80 00 0C */ bge lbl_803698A0 -/* 80369898 C8 22 CD 98 */ lfd f1, lit_147(r2) -/* 8036989C 48 00 00 C8 */ b lbl_80369964 -lbl_803698A0: -/* 803698A0 C8 22 CD A0 */ lfd f1, lit_148(r2) -/* 803698A4 48 00 00 C0 */ b lbl_80369964 -lbl_803698A8: -/* 803698A8 7C 06 38 50 */ subf r0, r6, r7 -/* 803698AC 7C 00 A6 70 */ srawi r0, r0, 0x14 -/* 803698B0 2C 00 00 3C */ cmpwi r0, 0x3c -/* 803698B4 40 81 00 10 */ ble lbl_803698C4 -/* 803698B8 C8 02 CD A0 */ lfd f0, lit_148(r2) -/* 803698BC D8 01 00 18 */ stfd f0, 0x18(r1) -/* 803698C0 48 00 00 38 */ b lbl_803698F8 -lbl_803698C4: -/* 803698C4 2C 04 00 00 */ cmpwi r4, 0 -/* 803698C8 40 80 00 18 */ bge lbl_803698E0 -/* 803698CC 2C 00 FF C4 */ cmpwi r0, -60 -/* 803698D0 40 80 00 10 */ bge lbl_803698E0 -/* 803698D4 C8 02 CD C8 */ lfd f0, lit_153(r2) -/* 803698D8 D8 01 00 18 */ stfd f0, 0x18(r1) -/* 803698DC 48 00 00 1C */ b lbl_803698F8 -lbl_803698E0: -/* 803698E0 C8 21 00 08 */ lfd f1, 8(r1) -/* 803698E4 C8 01 00 10 */ lfd f0, 0x10(r1) -/* 803698E8 FC 01 00 24 */ fdiv f0, f1, f0 -/* 803698EC FC 20 02 10 */ fabs f1, f0 -/* 803698F0 48 00 23 B5 */ bl atan -/* 803698F4 D8 21 00 18 */ stfd f1, 0x18(r1) -lbl_803698F8: -/* 803698F8 2C 1F 00 01 */ cmpwi r31, 1 -/* 803698FC 41 82 00 28 */ beq lbl_80369924 -/* 80369900 40 80 00 10 */ bge lbl_80369910 -/* 80369904 2C 1F 00 00 */ cmpwi r31, 0 -/* 80369908 40 80 00 14 */ bge lbl_8036991C -/* 8036990C 48 00 00 44 */ b lbl_80369950 -lbl_80369910: -/* 80369910 2C 1F 00 03 */ cmpwi r31, 3 -/* 80369914 40 80 00 3C */ bge lbl_80369950 -/* 80369918 48 00 00 20 */ b lbl_80369938 -lbl_8036991C: -/* 8036991C C8 21 00 18 */ lfd f1, 0x18(r1) -/* 80369920 48 00 00 44 */ b lbl_80369964 -lbl_80369924: -/* 80369924 80 01 00 18 */ lwz r0, 0x18(r1) -/* 80369928 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8036992C 90 01 00 18 */ stw r0, 0x18(r1) -/* 80369930 C8 21 00 18 */ lfd f1, 0x18(r1) -/* 80369934 48 00 00 30 */ b lbl_80369964 -lbl_80369938: -/* 80369938 C8 21 00 18 */ lfd f1, 0x18(r1) -/* 8036993C C8 02 CD D8 */ lfd f0, lit_155(r2) -/* 80369940 C8 42 CD 88 */ lfd f2, lit_145(r2) -/* 80369944 FC 01 00 28 */ fsub f0, f1, f0 -/* 80369948 FC 22 00 28 */ fsub f1, f2, f0 -/* 8036994C 48 00 00 18 */ b lbl_80369964 -lbl_80369950: -/* 80369950 C8 41 00 18 */ lfd f2, 0x18(r1) -/* 80369954 C8 22 CD D8 */ lfd f1, lit_155(r2) -/* 80369958 C8 02 CD 88 */ lfd f0, lit_145(r2) -/* 8036995C FC 22 08 28 */ fsub f1, f2, f1 -/* 80369960 FC 21 00 28 */ fsub f1, f1, f0 -lbl_80369964: -/* 80369964 80 01 00 34 */ lwz r0, 0x34(r1) -/* 80369968 83 E1 00 2C */ lwz r31, 0x2c(r1) -/* 8036996C 7C 08 03 A6 */ mtlr r0 -/* 80369970 38 21 00 30 */ addi r1, r1, 0x30 -/* 80369974 4E 80 00 20 */ blr diff --git a/asm/MSL_C/Math/Double_precision/e_exp/__ieee754_exp.s b/asm/MSL_C/Math/Double_precision/e_exp/__ieee754_exp.s deleted file mode 100644 index c0f78013f5..0000000000 --- a/asm/MSL_C/Math/Double_precision/e_exp/__ieee754_exp.s +++ /dev/null @@ -1,151 +0,0 @@ -lbl_80369978: -/* 80369978 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8036997C 3C 60 40 86 */ lis r3, 0x4086 /* 0x40862E42@ha */ -/* 80369980 3C 80 80 3A */ lis r4, halF@ha /* 0x803A2340@ha */ -/* 80369984 D8 21 00 08 */ stfd f1, 8(r1) -/* 80369988 38 03 2E 42 */ addi r0, r3, 0x2E42 /* 0x40862E42@l */ -/* 8036998C 38 A4 23 40 */ addi r5, r4, halF@l /* 0x803A2340@l */ -/* 80369990 81 01 00 08 */ lwz r8, 8(r1) -/* 80369994 55 04 00 7E */ clrlwi r4, r8, 1 -/* 80369998 55 07 0F FE */ srwi r7, r8, 0x1f -/* 8036999C 7C 04 00 40 */ cmplw r4, r0 -/* 803699A0 41 80 00 64 */ blt lbl_80369A04 -/* 803699A4 3C 00 7F F0 */ lis r0, 0x7ff0 -/* 803699A8 7C 04 00 40 */ cmplw r4, r0 -/* 803699AC 41 80 00 30 */ blt lbl_803699DC -/* 803699B0 80 01 00 0C */ lwz r0, 0xc(r1) -/* 803699B4 55 03 03 3E */ clrlwi r3, r8, 0xc -/* 803699B8 7C 60 03 79 */ or. r0, r3, r0 -/* 803699BC 41 82 00 0C */ beq lbl_803699C8 -/* 803699C0 FC 21 08 2A */ fadd f1, f1, f1 -/* 803699C4 48 00 01 D0 */ b lbl_80369B94 -lbl_803699C8: -/* 803699C8 2C 07 00 00 */ cmpwi r7, 0 -/* 803699CC 40 82 00 08 */ bne lbl_803699D4 -/* 803699D0 48 00 01 C4 */ b lbl_80369B94 -lbl_803699D4: -/* 803699D4 C8 22 CD E0 */ lfd f1, lit_115(r2) -/* 803699D8 48 00 01 BC */ b lbl_80369B94 -lbl_803699DC: -/* 803699DC C8 02 CD E8 */ lfd f0, lit_116(r2) -/* 803699E0 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 803699E4 40 81 00 0C */ ble lbl_803699F0 -/* 803699E8 C8 22 CD F0 */ lfd f1, lit_117(r2) -/* 803699EC 48 00 01 A8 */ b lbl_80369B94 -lbl_803699F0: -/* 803699F0 C8 02 CD F8 */ lfd f0, lit_118(r2) -/* 803699F4 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 803699F8 40 80 00 0C */ bge lbl_80369A04 -/* 803699FC C8 22 CD E0 */ lfd f1, lit_115(r2) -/* 80369A00 48 00 01 94 */ b lbl_80369B94 -lbl_80369A04: -/* 80369A04 3C 60 3F D6 */ lis r3, 0x3FD6 /* 0x3FD62E42@ha */ -/* 80369A08 38 03 2E 42 */ addi r0, r3, 0x2E42 /* 0x3FD62E42@l */ -/* 80369A0C 7C 04 00 40 */ cmplw r4, r0 -/* 80369A10 40 81 00 98 */ ble lbl_80369AA8 -/* 80369A14 3C 60 3F F1 */ lis r3, 0x3FF1 /* 0x3FF0A2B2@ha */ -/* 80369A18 38 03 A2 B2 */ addi r0, r3, 0xA2B2 /* 0x3FF0A2B2@l */ -/* 80369A1C 7C 04 00 40 */ cmplw r4, r0 -/* 80369A20 40 80 00 2C */ bge lbl_80369A4C -/* 80369A24 54 E6 18 38 */ slwi r6, r7, 3 -/* 80369A28 38 85 00 10 */ addi r4, r5, 0x10 -/* 80369A2C C8 21 00 08 */ lfd f1, 8(r1) -/* 80369A30 38 65 00 20 */ addi r3, r5, 0x20 -/* 80369A34 7C 04 34 AE */ lfdx f0, r4, r6 -/* 80369A38 20 07 00 01 */ subfic r0, r7, 1 -/* 80369A3C 7D 03 34 AE */ lfdx f8, r3, r6 -/* 80369A40 7C C7 00 50 */ subf r6, r7, r0 -/* 80369A44 FC E1 00 28 */ fsub f7, f1, f0 -/* 80369A48 48 00 00 54 */ b lbl_80369A9C -lbl_80369A4C: -/* 80369A4C 54 E4 18 38 */ slwi r4, r7, 3 -/* 80369A50 38 65 00 00 */ addi r3, r5, 0 -/* 80369A54 C8 22 CE 00 */ lfd f1, lit_119(r2) -/* 80369A58 3C 00 43 30 */ lis r0, 0x4330 -/* 80369A5C C8 81 00 08 */ lfd f4, 8(r1) -/* 80369A60 7C 03 24 AE */ lfdx f0, r3, r4 -/* 80369A64 90 01 00 20 */ stw r0, 0x20(r1) -/* 80369A68 FC 41 01 3A */ fmadd f2, f1, f4, f0 -/* 80369A6C C8 62 CE 50 */ lfd f3, lit_131(r2) -/* 80369A70 C8 25 00 10 */ lfd f1, 0x10(r5) -/* 80369A74 C8 05 00 20 */ lfd f0, 0x20(r5) -/* 80369A78 FC 40 10 1E */ fctiwz f2, f2 -/* 80369A7C D8 41 00 18 */ stfd f2, 0x18(r1) -/* 80369A80 80 C1 00 1C */ lwz r6, 0x1c(r1) -/* 80369A84 6C C0 80 00 */ xoris r0, r6, 0x8000 -/* 80369A88 90 01 00 24 */ stw r0, 0x24(r1) -/* 80369A8C C8 41 00 20 */ lfd f2, 0x20(r1) -/* 80369A90 FC 42 18 28 */ fsub f2, f2, f3 -/* 80369A94 FC E2 20 7C */ fnmsub f7, f2, f1, f4 -/* 80369A98 FD 02 00 32 */ fmul f8, f2, f0 -lbl_80369A9C: -/* 80369A9C FC 07 40 28 */ fsub f0, f7, f8 -/* 80369AA0 D8 01 00 08 */ stfd f0, 8(r1) -/* 80369AA4 48 00 00 34 */ b lbl_80369AD8 -lbl_80369AA8: -/* 80369AA8 3C 00 3E 30 */ lis r0, 0x3e30 -/* 80369AAC 7C 04 00 40 */ cmplw r4, r0 -/* 80369AB0 40 80 00 24 */ bge lbl_80369AD4 -/* 80369AB4 C8 22 CE 08 */ lfd f1, lit_120(r2) -/* 80369AB8 C8 41 00 08 */ lfd f2, 8(r1) -/* 80369ABC C8 02 CE 10 */ lfd f0, lit_121(r2) -/* 80369AC0 FC 21 10 2A */ fadd f1, f1, f2 -/* 80369AC4 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 80369AC8 40 81 00 10 */ ble lbl_80369AD8 -/* 80369ACC FC 20 10 2A */ fadd f1, f0, f2 -/* 80369AD0 48 00 00 C4 */ b lbl_80369B94 -lbl_80369AD4: -/* 80369AD4 38 C0 00 00 */ li r6, 0 -lbl_80369AD8: -/* 80369AD8 C8 A1 00 08 */ lfd f5, 8(r1) -/* 80369ADC 2C 06 00 00 */ cmpwi r6, 0 -/* 80369AE0 C8 82 CE 38 */ lfd f4, lit_126(r2) -/* 80369AE4 FC C5 01 72 */ fmul f6, f5, f5 -/* 80369AE8 C8 62 CE 30 */ lfd f3, lit_125(r2) -/* 80369AEC C8 42 CE 28 */ lfd f2, lit_124(r2) -/* 80369AF0 C8 22 CE 20 */ lfd f1, lit_123(r2) -/* 80369AF4 C8 02 CE 18 */ lfd f0, lit_122(r2) -/* 80369AF8 FC 64 19 BA */ fmadd f3, f4, f6, f3 -/* 80369AFC FC 46 10 FA */ fmadd f2, f6, f3, f2 -/* 80369B00 FC 26 08 BA */ fmadd f1, f6, f2, f1 -/* 80369B04 FC 06 00 7A */ fmadd f0, f6, f1, f0 -/* 80369B08 FC 66 28 3C */ fnmsub f3, f6, f0, f5 -/* 80369B0C 40 82 00 24 */ bne lbl_80369B30 -/* 80369B10 C8 02 CE 40 */ lfd f0, lit_127(r2) -/* 80369B14 FC 25 00 F2 */ fmul f1, f5, f3 -/* 80369B18 C8 42 CE 10 */ lfd f2, lit_121(r2) -/* 80369B1C FC 03 00 28 */ fsub f0, f3, f0 -/* 80369B20 FC 01 00 24 */ fdiv f0, f1, f0 -/* 80369B24 FC 00 28 28 */ fsub f0, f0, f5 -/* 80369B28 FC 22 00 28 */ fsub f1, f2, f0 -/* 80369B2C 48 00 00 68 */ b lbl_80369B94 -lbl_80369B30: -/* 80369B30 C8 02 CE 40 */ lfd f0, lit_127(r2) -/* 80369B34 FC 25 00 F2 */ fmul f1, f5, f3 -/* 80369B38 C8 42 CE 10 */ lfd f2, lit_121(r2) -/* 80369B3C 2C 06 FC 03 */ cmpwi r6, -1021 -/* 80369B40 FC 00 18 28 */ fsub f0, f0, f3 -/* 80369B44 FC 01 00 24 */ fdiv f0, f1, f0 -/* 80369B48 FC 08 00 28 */ fsub f0, f8, f0 -/* 80369B4C FC 00 38 28 */ fsub f0, f0, f7 -/* 80369B50 FC 02 00 28 */ fsub f0, f2, f0 -/* 80369B54 D8 01 00 10 */ stfd f0, 0x10(r1) -/* 80369B58 41 80 00 1C */ blt lbl_80369B74 -/* 80369B5C 80 61 00 10 */ lwz r3, 0x10(r1) -/* 80369B60 54 C0 A0 16 */ slwi r0, r6, 0x14 -/* 80369B64 7C 03 02 14 */ add r0, r3, r0 -/* 80369B68 90 01 00 10 */ stw r0, 0x10(r1) -/* 80369B6C C8 21 00 10 */ lfd f1, 0x10(r1) -/* 80369B70 48 00 00 24 */ b lbl_80369B94 -lbl_80369B74: -/* 80369B74 38 06 03 E8 */ addi r0, r6, 0x3e8 -/* 80369B78 80 61 00 10 */ lwz r3, 0x10(r1) -/* 80369B7C 54 00 A0 16 */ slwi r0, r0, 0x14 -/* 80369B80 C8 22 CE 48 */ lfd f1, lit_128(r2) -/* 80369B84 7C 03 02 14 */ add r0, r3, r0 -/* 80369B88 90 01 00 10 */ stw r0, 0x10(r1) -/* 80369B8C C8 01 00 10 */ lfd f0, 0x10(r1) -/* 80369B90 FC 21 00 32 */ fmul f1, f1, f0 -lbl_80369B94: -/* 80369B94 38 21 00 30 */ addi r1, r1, 0x30 -/* 80369B98 4E 80 00 20 */ blr diff --git a/asm/MSL_C/Math/Double_precision/e_pow/__ieee754_pow.s b/asm/MSL_C/Math/Double_precision/e_pow/__ieee754_pow.s deleted file mode 100644 index e1cf0ed03c..0000000000 --- a/asm/MSL_C/Math/Double_precision/e_pow/__ieee754_pow.s +++ /dev/null @@ -1,571 +0,0 @@ -lbl_80369ED8: -/* 80369ED8 94 21 FF 50 */ stwu r1, -0xb0(r1) -/* 80369EDC 7C 08 02 A6 */ mflr r0 -/* 80369EE0 90 01 00 B4 */ stw r0, 0xb4(r1) -/* 80369EE4 DB E1 00 A0 */ stfd f31, 0xa0(r1) -/* 80369EE8 F3 E1 00 A8 */ psq_st f31, 168(r1), 0, 0 /* qr0 */ -/* 80369EEC DB C1 00 90 */ stfd f30, 0x90(r1) -/* 80369EF0 F3 C1 00 98 */ psq_st f30, 152(r1), 0, 0 /* qr0 */ -/* 80369EF4 DB A1 00 80 */ stfd f29, 0x80(r1) -/* 80369EF8 F3 A1 00 88 */ psq_st f29, 136(r1), 0, 0 /* qr0 */ -/* 80369EFC DB 81 00 70 */ stfd f28, 0x70(r1) -/* 80369F00 F3 81 00 78 */ psq_st f28, 120(r1), 0, 0 /* qr0 */ -/* 80369F04 DB 61 00 60 */ stfd f27, 0x60(r1) -/* 80369F08 F3 61 00 68 */ psq_st f27, 104(r1), 0, 0 /* qr0 */ -/* 80369F0C D8 41 00 10 */ stfd f2, 0x10(r1) -/* 80369F10 3C 60 80 3A */ lis r3, bp@ha /* 0x803A2380@ha */ -/* 80369F14 38 63 23 80 */ addi r3, r3, bp@l /* 0x803A2380@l */ -/* 80369F18 80 A1 00 10 */ lwz r5, 0x10(r1) -/* 80369F1C D8 21 00 08 */ stfd f1, 8(r1) -/* 80369F20 81 61 00 14 */ lwz r11, 0x14(r1) -/* 80369F24 54 A7 00 7E */ clrlwi r7, r5, 1 -/* 80369F28 80 01 00 08 */ lwz r0, 8(r1) -/* 80369F2C 7C E4 5B 79 */ or. r4, r7, r11 -/* 80369F30 81 41 00 0C */ lwz r10, 0xc(r1) -/* 80369F34 54 06 00 7E */ clrlwi r6, r0, 1 -/* 80369F38 40 82 00 0C */ bne lbl_80369F44 -/* 80369F3C C8 22 CE 58 */ lfd f1, lit_336(r2) -/* 80369F40 48 00 07 90 */ b lbl_8036A6D0 -lbl_80369F44: -/* 80369F44 3C 80 7F F0 */ lis r4, 0x7ff0 -/* 80369F48 7C 06 20 00 */ cmpw r6, r4 -/* 80369F4C 41 81 00 38 */ bgt lbl_80369F84 -/* 80369F50 3C 86 80 10 */ addis r4, r6, 0x8010 -/* 80369F54 28 04 00 00 */ cmplwi r4, 0 -/* 80369F58 40 82 00 0C */ bne lbl_80369F64 -/* 80369F5C 28 0A 00 00 */ cmplwi r10, 0 -/* 80369F60 40 82 00 24 */ bne lbl_80369F84 -lbl_80369F64: -/* 80369F64 3C 80 7F F0 */ lis r4, 0x7ff0 -/* 80369F68 7C 07 20 00 */ cmpw r7, r4 -/* 80369F6C 41 81 00 18 */ bgt lbl_80369F84 -/* 80369F70 3C 87 80 10 */ addis r4, r7, 0x8010 -/* 80369F74 28 04 00 00 */ cmplwi r4, 0 -/* 80369F78 40 82 00 1C */ bne lbl_80369F94 -/* 80369F7C 28 0B 00 00 */ cmplwi r11, 0 -/* 80369F80 41 82 00 14 */ beq lbl_80369F94 -lbl_80369F84: -/* 80369F84 C8 21 00 08 */ lfd f1, 8(r1) -/* 80369F88 C8 01 00 10 */ lfd f0, 0x10(r1) -/* 80369F8C FC 21 00 2A */ fadd f1, f1, f0 -/* 80369F90 48 00 07 40 */ b lbl_8036A6D0 -lbl_80369F94: -/* 80369F94 2C 00 00 00 */ cmpwi r0, 0 -/* 80369F98 38 80 00 00 */ li r4, 0 -/* 80369F9C 40 80 00 78 */ bge lbl_8036A014 -/* 80369FA0 3D 00 43 40 */ lis r8, 0x4340 -/* 80369FA4 7C 07 40 00 */ cmpw r7, r8 -/* 80369FA8 41 80 00 0C */ blt lbl_80369FB4 -/* 80369FAC 38 80 00 02 */ li r4, 2 -/* 80369FB0 48 00 00 64 */ b lbl_8036A014 -lbl_80369FB4: -/* 80369FB4 3D 00 3F F0 */ lis r8, 0x3ff0 -/* 80369FB8 7C 07 40 00 */ cmpw r7, r8 -/* 80369FBC 41 80 00 58 */ blt lbl_8036A014 -/* 80369FC0 7C E8 A6 70 */ srawi r8, r7, 0x14 -/* 80369FC4 39 08 FC 01 */ addi r8, r8, -1023 -/* 80369FC8 2C 08 00 14 */ cmpwi r8, 0x14 -/* 80369FCC 40 81 00 24 */ ble lbl_80369FF0 -/* 80369FD0 21 08 00 34 */ subfic r8, r8, 0x34 -/* 80369FD4 7D 69 44 30 */ srw r9, r11, r8 -/* 80369FD8 7D 28 40 30 */ slw r8, r9, r8 -/* 80369FDC 7C 0B 40 40 */ cmplw r11, r8 -/* 80369FE0 40 82 00 34 */ bne lbl_8036A014 -/* 80369FE4 55 24 07 FE */ clrlwi r4, r9, 0x1f -/* 80369FE8 20 84 00 02 */ subfic r4, r4, 2 -/* 80369FEC 48 00 00 28 */ b lbl_8036A014 -lbl_80369FF0: -/* 80369FF0 28 0B 00 00 */ cmplwi r11, 0 -/* 80369FF4 40 82 00 20 */ bne lbl_8036A014 -/* 80369FF8 21 08 00 14 */ subfic r8, r8, 0x14 -/* 80369FFC 7C E9 46 30 */ sraw r9, r7, r8 -/* 8036A000 7D 28 40 30 */ slw r8, r9, r8 -/* 8036A004 7C 07 40 00 */ cmpw r7, r8 -/* 8036A008 40 82 00 0C */ bne lbl_8036A014 -/* 8036A00C 55 24 07 FE */ clrlwi r4, r9, 0x1f -/* 8036A010 20 84 00 02 */ subfic r4, r4, 2 -lbl_8036A014: -/* 8036A014 28 0B 00 00 */ cmplwi r11, 0 -/* 8036A018 40 82 00 CC */ bne lbl_8036A0E4 -/* 8036A01C 3D 07 80 10 */ addis r8, r7, 0x8010 -/* 8036A020 28 08 00 00 */ cmplwi r8, 0 -/* 8036A024 40 82 00 5C */ bne lbl_8036A080 -/* 8036A028 3C 06 C0 10 */ addis r0, r6, 0xc010 -/* 8036A02C 7C 00 53 79 */ or. r0, r0, r10 -/* 8036A030 40 82 00 10 */ bne lbl_8036A040 -/* 8036A034 C8 01 00 10 */ lfd f0, 0x10(r1) -/* 8036A038 FC 20 00 28 */ fsub f1, f0, f0 -/* 8036A03C 48 00 06 94 */ b lbl_8036A6D0 -lbl_8036A040: -/* 8036A040 3C 00 3F F0 */ lis r0, 0x3ff0 -/* 8036A044 7C 06 00 00 */ cmpw r6, r0 -/* 8036A048 41 80 00 1C */ blt lbl_8036A064 -/* 8036A04C 2C 05 00 00 */ cmpwi r5, 0 -/* 8036A050 41 80 00 0C */ blt lbl_8036A05C -/* 8036A054 C8 21 00 10 */ lfd f1, 0x10(r1) -/* 8036A058 48 00 06 78 */ b lbl_8036A6D0 -lbl_8036A05C: -/* 8036A05C C8 22 CE 60 */ lfd f1, lit_337(r2) -/* 8036A060 48 00 06 70 */ b lbl_8036A6D0 -lbl_8036A064: -/* 8036A064 2C 05 00 00 */ cmpwi r5, 0 -/* 8036A068 40 80 00 10 */ bge lbl_8036A078 -/* 8036A06C C8 01 00 10 */ lfd f0, 0x10(r1) -/* 8036A070 FC 20 00 50 */ fneg f1, f0 -/* 8036A074 48 00 06 5C */ b lbl_8036A6D0 -lbl_8036A078: -/* 8036A078 C8 22 CE 60 */ lfd f1, lit_337(r2) -/* 8036A07C 48 00 06 54 */ b lbl_8036A6D0 -lbl_8036A080: -/* 8036A080 3D 07 C0 10 */ addis r8, r7, 0xc010 -/* 8036A084 28 08 00 00 */ cmplwi r8, 0 -/* 8036A088 40 82 00 24 */ bne lbl_8036A0AC -/* 8036A08C 2C 05 00 00 */ cmpwi r5, 0 -/* 8036A090 40 80 00 14 */ bge lbl_8036A0A4 -/* 8036A094 C8 22 CE 58 */ lfd f1, lit_336(r2) -/* 8036A098 C8 01 00 08 */ lfd f0, 8(r1) -/* 8036A09C FC 21 00 24 */ fdiv f1, f1, f0 -/* 8036A0A0 48 00 06 30 */ b lbl_8036A6D0 -lbl_8036A0A4: -/* 8036A0A4 C8 21 00 08 */ lfd f1, 8(r1) -/* 8036A0A8 48 00 06 28 */ b lbl_8036A6D0 -lbl_8036A0AC: -/* 8036A0AC 3D 05 C0 00 */ addis r8, r5, 0xc000 -/* 8036A0B0 28 08 00 00 */ cmplwi r8, 0 -/* 8036A0B4 40 82 00 10 */ bne lbl_8036A0C4 -/* 8036A0B8 C8 01 00 08 */ lfd f0, 8(r1) -/* 8036A0BC FC 20 00 32 */ fmul f1, f0, f0 -/* 8036A0C0 48 00 06 10 */ b lbl_8036A6D0 -lbl_8036A0C4: -/* 8036A0C4 3D 05 C0 20 */ addis r8, r5, 0xc020 -/* 8036A0C8 28 08 00 00 */ cmplwi r8, 0 -/* 8036A0CC 40 82 00 18 */ bne lbl_8036A0E4 -/* 8036A0D0 2C 00 00 00 */ cmpwi r0, 0 -/* 8036A0D4 41 80 00 10 */ blt lbl_8036A0E4 -/* 8036A0D8 C8 21 00 08 */ lfd f1, 8(r1) -/* 8036A0DC 48 00 29 79 */ bl sqrt -/* 8036A0E0 48 00 05 F0 */ b lbl_8036A6D0 -lbl_8036A0E4: -/* 8036A0E4 C8 01 00 08 */ lfd f0, 8(r1) -/* 8036A0E8 28 0A 00 00 */ cmplwi r10, 0 -/* 8036A0EC FC 20 02 10 */ fabs f1, f0 -/* 8036A0F0 D8 21 00 48 */ stfd f1, 0x48(r1) -/* 8036A0F4 40 82 00 80 */ bne lbl_8036A174 -/* 8036A0F8 3D 06 80 10 */ addis r8, r6, 0x8010 -/* 8036A0FC 28 08 00 00 */ cmplwi r8, 0 -/* 8036A100 41 82 00 18 */ beq lbl_8036A118 -/* 8036A104 2C 06 00 00 */ cmpwi r6, 0 -/* 8036A108 41 82 00 10 */ beq lbl_8036A118 -/* 8036A10C 3D 06 C0 10 */ addis r8, r6, 0xc010 -/* 8036A110 28 08 00 00 */ cmplwi r8, 0 -/* 8036A114 40 82 00 60 */ bne lbl_8036A174 -lbl_8036A118: -/* 8036A118 2C 05 00 00 */ cmpwi r5, 0 -/* 8036A11C D8 21 00 50 */ stfd f1, 0x50(r1) -/* 8036A120 40 80 00 10 */ bge lbl_8036A130 -/* 8036A124 C8 02 CE 58 */ lfd f0, lit_336(r2) -/* 8036A128 FC 00 08 24 */ fdiv f0, f0, f1 -/* 8036A12C D8 01 00 50 */ stfd f0, 0x50(r1) -lbl_8036A130: -/* 8036A130 2C 00 00 00 */ cmpwi r0, 0 -/* 8036A134 40 80 00 38 */ bge lbl_8036A16C -/* 8036A138 3C 06 C0 10 */ addis r0, r6, 0xc010 -/* 8036A13C 7C 00 23 79 */ or. r0, r0, r4 -/* 8036A140 40 82 00 18 */ bne lbl_8036A158 -/* 8036A144 C8 01 00 50 */ lfd f0, 0x50(r1) -/* 8036A148 FC 00 00 28 */ fsub f0, f0, f0 -/* 8036A14C FC 00 00 24 */ fdiv f0, f0, f0 -/* 8036A150 D8 01 00 50 */ stfd f0, 0x50(r1) -/* 8036A154 48 00 00 18 */ b lbl_8036A16C -lbl_8036A158: -/* 8036A158 2C 04 00 01 */ cmpwi r4, 1 -/* 8036A15C 40 82 00 10 */ bne lbl_8036A16C -/* 8036A160 C8 01 00 50 */ lfd f0, 0x50(r1) -/* 8036A164 FC 00 00 50 */ fneg f0, f0 -/* 8036A168 D8 01 00 50 */ stfd f0, 0x50(r1) -lbl_8036A16C: -/* 8036A16C C8 21 00 50 */ lfd f1, 0x50(r1) -/* 8036A170 48 00 05 60 */ b lbl_8036A6D0 -lbl_8036A174: -/* 8036A174 7C 08 FE 70 */ srawi r8, r0, 0x1f -/* 8036A178 38 08 00 01 */ addi r0, r8, 1 -/* 8036A17C 7C 08 23 79 */ or. r8, r0, r4 -/* 8036A180 40 82 00 18 */ bne lbl_8036A198 -/* 8036A184 3C 60 80 45 */ lis r3, __float_nan@ha /* 0x80450AE0@ha */ -/* 8036A188 38 00 00 21 */ li r0, 0x21 -/* 8036A18C 90 0D 94 28 */ stw r0, errno(r13) -/* 8036A190 C0 23 0A E0 */ lfs f1, __float_nan@l(r3) /* 0x80450AE0@l */ -/* 8036A194 48 00 05 3C */ b lbl_8036A6D0 -lbl_8036A198: -/* 8036A198 3D 00 41 E0 */ lis r8, 0x41e0 -/* 8036A19C 7C 07 40 00 */ cmpw r7, r8 -/* 8036A1A0 40 81 01 04 */ ble lbl_8036A2A4 -/* 8036A1A4 3C 60 43 F0 */ lis r3, 0x43f0 -/* 8036A1A8 7C 07 18 00 */ cmpw r7, r3 -/* 8036A1AC 40 81 00 4C */ ble lbl_8036A1F8 -/* 8036A1B0 3C 60 3F F0 */ lis r3, 0x3FF0 /* 0x3FEFFFFF@ha */ -/* 8036A1B4 38 E3 FF FF */ addi r7, r3, 0xFFFF /* 0x3FEFFFFF@l */ -/* 8036A1B8 7C 06 38 00 */ cmpw r6, r7 -/* 8036A1BC 41 81 00 1C */ bgt lbl_8036A1D8 -/* 8036A1C0 2C 05 00 00 */ cmpwi r5, 0 -/* 8036A1C4 40 80 00 0C */ bge lbl_8036A1D0 -/* 8036A1C8 C8 22 CE 68 */ lfd f1, lit_338(r2) -/* 8036A1CC 48 00 05 04 */ b lbl_8036A6D0 -lbl_8036A1D0: -/* 8036A1D0 C8 22 CE 60 */ lfd f1, lit_337(r2) -/* 8036A1D4 48 00 04 FC */ b lbl_8036A6D0 -lbl_8036A1D8: -/* 8036A1D8 7C 06 18 00 */ cmpw r6, r3 -/* 8036A1DC 41 80 00 1C */ blt lbl_8036A1F8 -/* 8036A1E0 2C 05 00 00 */ cmpwi r5, 0 -/* 8036A1E4 40 81 00 0C */ ble lbl_8036A1F0 -/* 8036A1E8 C8 22 CE 68 */ lfd f1, lit_338(r2) -/* 8036A1EC 48 00 04 E4 */ b lbl_8036A6D0 -lbl_8036A1F0: -/* 8036A1F0 C8 22 CE 60 */ lfd f1, lit_337(r2) -/* 8036A1F4 48 00 04 DC */ b lbl_8036A6D0 -lbl_8036A1F8: -/* 8036A1F8 3C 60 3F F0 */ lis r3, 0x3FF0 /* 0x3FEFFFFF@ha */ -/* 8036A1FC 38 E3 FF FF */ addi r7, r3, 0xFFFF /* 0x3FEFFFFF@l */ -/* 8036A200 7C 06 38 00 */ cmpw r6, r7 -/* 8036A204 40 80 00 1C */ bge lbl_8036A220 -/* 8036A208 2C 05 00 00 */ cmpwi r5, 0 -/* 8036A20C 40 80 00 0C */ bge lbl_8036A218 -/* 8036A210 C8 22 CE 68 */ lfd f1, lit_338(r2) -/* 8036A214 48 00 04 BC */ b lbl_8036A6D0 -lbl_8036A218: -/* 8036A218 C8 22 CE 60 */ lfd f1, lit_337(r2) -/* 8036A21C 48 00 04 B4 */ b lbl_8036A6D0 -lbl_8036A220: -/* 8036A220 7C 06 18 00 */ cmpw r6, r3 -/* 8036A224 40 81 00 1C */ ble lbl_8036A240 -/* 8036A228 2C 05 00 00 */ cmpwi r5, 0 -/* 8036A22C 40 81 00 0C */ ble lbl_8036A238 -/* 8036A230 C8 22 CE 68 */ lfd f1, lit_338(r2) -/* 8036A234 48 00 04 9C */ b lbl_8036A6D0 -lbl_8036A238: -/* 8036A238 C8 22 CE 60 */ lfd f1, lit_337(r2) -/* 8036A23C 48 00 04 94 */ b lbl_8036A6D0 -lbl_8036A240: -/* 8036A240 C8 41 00 08 */ lfd f2, 8(r1) -/* 8036A244 38 60 00 00 */ li r3, 0 -/* 8036A248 C8 02 CE 58 */ lfd f0, lit_336(r2) -/* 8036A24C C8 22 CE 80 */ lfd f1, lit_341(r2) -/* 8036A250 FC C2 00 28 */ fsub f6, f2, f0 -/* 8036A254 C8 02 CE 78 */ lfd f0, lit_340(r2) -/* 8036A258 C8 42 CE 88 */ lfd f2, lit_342(r2) -/* 8036A25C C8 62 CE 70 */ lfd f3, lit_339(r2) -/* 8036A260 FC 81 01 BC */ fnmsub f4, f1, f6, f0 -/* 8036A264 C8 02 CE 98 */ lfd f0, lit_344(r2) -/* 8036A268 C8 22 CE 90 */ lfd f1, lit_343(r2) -/* 8036A26C FC A6 01 B2 */ fmul f5, f6, f6 -/* 8036A270 D8 C1 00 28 */ stfd f6, 0x28(r1) -/* 8036A274 FC 66 19 3C */ fnmsub f3, f6, f4, f3 -/* 8036A278 FC 42 01 B2 */ fmul f2, f2, f6 -/* 8036A27C FC 65 00 F2 */ fmul f3, f5, f3 -/* 8036A280 FC 00 00 F2 */ fmul f0, f0, f3 -/* 8036A284 FC 21 01 B8 */ fmsub f1, f1, f6, f0 -/* 8036A288 FC 02 08 2A */ fadd f0, f2, f1 -/* 8036A28C D8 01 00 30 */ stfd f0, 0x30(r1) -/* 8036A290 90 61 00 34 */ stw r3, 0x34(r1) -/* 8036A294 C8 01 00 30 */ lfd f0, 0x30(r1) -/* 8036A298 FC 00 10 28 */ fsub f0, f0, f2 -/* 8036A29C FC 01 00 28 */ fsub f0, f1, f0 -/* 8036A2A0 48 00 01 EC */ b lbl_8036A48C -lbl_8036A2A4: -/* 8036A2A4 3C A0 00 10 */ lis r5, 0x10 -/* 8036A2A8 39 40 00 00 */ li r10, 0 -/* 8036A2AC 7C 06 28 00 */ cmpw r6, r5 -/* 8036A2B0 40 80 00 1C */ bge lbl_8036A2CC -/* 8036A2B4 C8 21 00 48 */ lfd f1, 0x48(r1) -/* 8036A2B8 39 40 FF CB */ li r10, -53 -/* 8036A2BC C8 02 CE A0 */ lfd f0, lit_345(r2) -/* 8036A2C0 FC 01 00 32 */ fmul f0, f1, f0 -/* 8036A2C4 D8 01 00 48 */ stfd f0, 0x48(r1) -/* 8036A2C8 80 C1 00 48 */ lwz r6, 0x48(r1) -lbl_8036A2CC: -/* 8036A2CC 3C A0 00 04 */ lis r5, 0x0004 /* 0x0003988E@ha */ -/* 8036A2D0 54 C8 03 3E */ clrlwi r8, r6, 0xc -/* 8036A2D4 38 A5 98 8E */ addi r5, r5, 0x988E /* 0x0003988E@l */ -/* 8036A2D8 7C C6 A6 70 */ srawi r6, r6, 0x14 -/* 8036A2DC 7C 08 28 00 */ cmpw r8, r5 -/* 8036A2E0 65 07 3F F0 */ oris r7, r8, 0x3ff0 -/* 8036A2E4 7D 46 52 14 */ add r10, r6, r10 -/* 8036A2E8 39 4A FC 01 */ addi r10, r10, -1023 -/* 8036A2EC 41 81 00 0C */ bgt lbl_8036A2F8 -/* 8036A2F0 39 60 00 00 */ li r11, 0 -/* 8036A2F4 48 00 00 28 */ b lbl_8036A31C -lbl_8036A2F8: -/* 8036A2F8 3C A0 00 0C */ lis r5, 0x000C /* 0x000BB67A@ha */ -/* 8036A2FC 38 A5 B6 7A */ addi r5, r5, 0xB67A /* 0x000BB67A@l */ -/* 8036A300 7C 08 28 00 */ cmpw r8, r5 -/* 8036A304 40 80 00 0C */ bge lbl_8036A310 -/* 8036A308 39 60 00 01 */ li r11, 1 -/* 8036A30C 48 00 00 10 */ b lbl_8036A31C -lbl_8036A310: -/* 8036A310 3C E7 FF F0 */ addis r7, r7, 0xfff0 -/* 8036A314 39 60 00 00 */ li r11, 0 -/* 8036A318 39 4A 00 01 */ addi r10, r10, 1 -lbl_8036A31C: -/* 8036A31C 90 E1 00 48 */ stw r7, 0x48(r1) -/* 8036A320 7C E5 0E 70 */ srawi r5, r7, 1 -/* 8036A324 55 69 18 38 */ slwi r9, r11, 3 -/* 8036A328 38 C3 00 00 */ addi r6, r3, 0 -/* 8036A32C CB C1 00 48 */ lfd f30, 0x48(r1) -/* 8036A330 64 A8 20 00 */ oris r8, r5, 0x2000 -/* 8036A334 7C A6 4C AE */ lfdx f5, r6, r9 -/* 8036A338 38 E3 00 20 */ addi r7, r3, 0x20 -/* 8036A33C C8 22 CE 60 */ lfd f1, lit_337(r2) -/* 8036A340 6D 46 80 00 */ xoris r6, r10, 0x8000 -/* 8036A344 FC 1E 28 2A */ fadd f0, f30, f5 -/* 8036A348 C8 42 CE 58 */ lfd f2, lit_336(r2) -/* 8036A34C 3C A0 43 30 */ lis r5, 0x4330 -/* 8036A350 39 43 00 10 */ addi r10, r3, 0x10 -/* 8036A354 FF FE 28 28 */ fsub f31, f30, f5 -/* 8036A358 C8 82 CE D0 */ lfd f4, lit_351(r2) -/* 8036A35C FF 82 00 24 */ fdiv f28, f2, f0 -/* 8036A360 C8 02 CE C8 */ lfd f0, lit_350(r2) -/* 8036A364 C8 62 CE C0 */ lfd f3, lit_349(r2) -/* 8036A368 3D 08 00 08 */ addis r8, r8, 8 -/* 8036A36C 55 63 90 1A */ slwi r3, r11, 0x12 -/* 8036A370 D8 21 00 18 */ stfd f1, 0x18(r1) -/* 8036A374 FC 3F 07 32 */ fmul f1, f31, f28 -/* 8036A378 7C 68 1A 14 */ add r3, r8, r3 -/* 8036A37C 90 61 00 18 */ stw r3, 0x18(r1) -/* 8036A380 38 60 00 00 */ li r3, 0 -/* 8036A384 C8 42 CE B8 */ lfd f2, lit_348(r2) -/* 8036A388 C9 81 00 18 */ lfd f12, 0x18(r1) -/* 8036A38C FF 61 00 72 */ fmul f27, f1, f1 -/* 8036A390 D8 21 00 20 */ stfd f1, 0x20(r1) -/* 8036A394 C9 62 CE B0 */ lfd f11, lit_347(r2) -/* 8036A398 90 61 00 24 */ stw r3, 0x24(r1) -/* 8036A39C FD AC 28 28 */ fsub f13, f12, f5 -/* 8036A3A0 C9 22 CE A8 */ lfd f9, lit_346(r2) -/* 8036A3A4 FC 84 06 FA */ fmadd f4, f4, f27, f0 -/* 8036A3A8 CB A1 00 20 */ lfd f29, 0x20(r1) -/* 8036A3AC C9 42 CE D8 */ lfd f10, lit_352(r2) -/* 8036A3B0 FC 1D 07 72 */ fmul f0, f29, f29 -/* 8036A3B4 C8 A2 CE F0 */ lfd f5, lit_355(r2) -/* 8036A3B8 C8 C2 CE E8 */ lfd f6, lit_354(r2) -/* 8036A3BC FC 7B 19 3A */ fmadd f3, f27, f4, f3 -/* 8036A3C0 C9 02 CE E0 */ lfd f8, lit_353(r2) -/* 8036A3C4 7C E7 4C AE */ lfdx f7, r7, r9 -/* 8036A3C8 FF FD FB 3C */ fnmsub f31, f29, f12, f31 -/* 8036A3CC 90 C1 00 5C */ stw r6, 0x5c(r1) -/* 8036A3D0 C8 82 CF 60 */ lfd f4, lit_370(r2) -/* 8036A3D4 FD 9B 10 FA */ fmadd f12, f27, f3, f2 -/* 8036A3D8 90 A1 00 58 */ stw r5, 0x58(r1) -/* 8036A3DC 7C 4A 4C AE */ lfdx f2, r10, r9 -/* 8036A3E0 FF DE 68 28 */ fsub f30, f30, f13 -/* 8036A3E4 C8 61 00 58 */ lfd f3, 0x58(r1) -/* 8036A3E8 FD BB 06 F2 */ fmul f13, f27, f27 -/* 8036A3EC FD 7B 5B 3A */ fmadd f11, f27, f12, f11 -/* 8036A3F0 FD 9D FF BC */ fnmsub f12, f29, f30, f31 -/* 8036A3F4 FD 3B 4A FA */ fmadd f9, f27, f11, f9 -/* 8036A3F8 FF 7C 03 32 */ fmul f27, f28, f12 -/* 8036A3FC FD 8D 02 72 */ fmul f12, f13, f9 -/* 8036A400 FD 7D 08 2A */ fadd f11, f29, f1 -/* 8036A404 FD 2A 00 2A */ fadd f9, f10, f0 -/* 8036A408 FC 63 20 28 */ fsub f3, f3, f4 -/* 8036A40C FD 9B 62 FA */ fmadd f12, f27, f11, f12 -/* 8036A410 D8 61 00 28 */ stfd f3, 0x28(r1) -/* 8036A414 FC 89 60 2A */ fadd f4, f9, f12 -/* 8036A418 D8 81 00 18 */ stfd f4, 0x18(r1) -/* 8036A41C 90 61 00 1C */ stw r3, 0x1c(r1) -/* 8036A420 C9 21 00 18 */ lfd f9, 0x18(r1) -/* 8036A424 FC 89 50 28 */ fsub f4, f9, f10 -/* 8036A428 FD 5D 02 72 */ fmul f10, f29, f9 -/* 8036A42C FC 04 00 28 */ fsub f0, f4, f0 -/* 8036A430 FC 0C 00 28 */ fsub f0, f12, f0 -/* 8036A434 FC 00 00 72 */ fmul f0, f0, f1 -/* 8036A438 FC 9B 02 7A */ fmadd f4, f27, f9, f0 -/* 8036A43C FC 0A 20 2A */ fadd f0, f10, f4 -/* 8036A440 D8 01 00 40 */ stfd f0, 0x40(r1) -/* 8036A444 90 61 00 44 */ stw r3, 0x44(r1) -/* 8036A448 C8 21 00 40 */ lfd f1, 0x40(r1) -/* 8036A44C FC 01 50 28 */ fsub f0, f1, f10 -/* 8036A450 FD 08 00 72 */ fmul f8, f8, f1 -/* 8036A454 FC 04 00 28 */ fsub f0, f4, f0 -/* 8036A458 FC 05 00 32 */ fmul f0, f5, f0 -/* 8036A45C FC 06 00 7A */ fmadd f0, f6, f1, f0 -/* 8036A460 FC 27 00 2A */ fadd f1, f7, f0 -/* 8036A464 FC 08 08 2A */ fadd f0, f8, f1 -/* 8036A468 FC 00 10 2A */ fadd f0, f0, f2 -/* 8036A46C FC 03 00 2A */ fadd f0, f3, f0 -/* 8036A470 D8 01 00 30 */ stfd f0, 0x30(r1) -/* 8036A474 90 61 00 34 */ stw r3, 0x34(r1) -/* 8036A478 C8 01 00 30 */ lfd f0, 0x30(r1) -/* 8036A47C FC 00 18 28 */ fsub f0, f0, f3 -/* 8036A480 FC 00 10 28 */ fsub f0, f0, f2 -/* 8036A484 FC 00 40 28 */ fsub f0, f0, f8 -/* 8036A488 FC 01 00 28 */ fsub f0, f1, f0 -lbl_8036A48C: -/* 8036A48C 38 64 FF FF */ addi r3, r4, -1 -/* 8036A490 CB E2 CE 58 */ lfd f31, lit_336(r2) -/* 8036A494 7C 00 1B 79 */ or. r0, r0, r3 -/* 8036A498 40 82 00 08 */ bne lbl_8036A4A0 -/* 8036A49C CB E2 CE F8 */ lfd f31, lit_356(r2) -lbl_8036A4A0: -/* 8036A4A0 C8 21 00 10 */ lfd f1, 0x10(r1) -/* 8036A4A4 38 60 00 00 */ li r3, 0 -/* 8036A4A8 C8 61 00 30 */ lfd f3, 0x30(r1) -/* 8036A4AC 3C 00 40 90 */ lis r0, 0x4090 -/* 8036A4B0 D8 21 00 38 */ stfd f1, 0x38(r1) -/* 8036A4B4 FC 01 00 32 */ fmul f0, f1, f0 -/* 8036A4B8 90 61 00 3C */ stw r3, 0x3c(r1) -/* 8036A4BC C8 41 00 38 */ lfd f2, 0x38(r1) -/* 8036A4C0 FC 21 10 28 */ fsub f1, f1, f2 -/* 8036A4C4 FC 42 00 F2 */ fmul f2, f2, f3 -/* 8036A4C8 FD 83 00 7A */ fmadd f12, f3, f1, f0 -/* 8036A4CC D8 41 00 40 */ stfd f2, 0x40(r1) -/* 8036A4D0 FC 0C 10 2A */ fadd f0, f12, f2 -/* 8036A4D4 D8 01 00 50 */ stfd f0, 0x50(r1) -/* 8036A4D8 80 C1 00 50 */ lwz r6, 0x50(r1) -/* 8036A4DC 80 A1 00 54 */ lwz r5, 0x54(r1) -/* 8036A4E0 7C 06 00 00 */ cmpw r6, r0 -/* 8036A4E4 41 80 00 44 */ blt lbl_8036A528 -/* 8036A4E8 3C 06 BF 70 */ addis r0, r6, 0xbf70 -/* 8036A4EC 7C 00 2B 79 */ or. r0, r0, r5 -/* 8036A4F0 41 82 00 14 */ beq lbl_8036A504 -/* 8036A4F4 C8 22 CF 00 */ lfd f1, lit_357(r2) -/* 8036A4F8 FC 01 07 F2 */ fmul f0, f1, f31 -/* 8036A4FC FC 21 00 32 */ fmul f1, f1, f0 -/* 8036A500 48 00 01 D0 */ b lbl_8036A6D0 -lbl_8036A504: -/* 8036A504 C8 22 CF 08 */ lfd f1, lit_358(r2) -/* 8036A508 FC 00 10 28 */ fsub f0, f0, f2 -/* 8036A50C FC 21 60 2A */ fadd f1, f1, f12 -/* 8036A510 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 8036A514 40 81 00 68 */ ble lbl_8036A57C -/* 8036A518 C8 22 CF 00 */ lfd f1, lit_357(r2) -/* 8036A51C FC 01 07 F2 */ fmul f0, f1, f31 -/* 8036A520 FC 21 00 32 */ fmul f1, f1, f0 -/* 8036A524 48 00 01 AC */ b lbl_8036A6D0 -lbl_8036A528: -/* 8036A528 3C 60 40 91 */ lis r3, 0x4091 /* 0x4090CC00@ha */ -/* 8036A52C 54 C4 00 7E */ clrlwi r4, r6, 1 -/* 8036A530 38 03 CC 00 */ addi r0, r3, 0xCC00 /* 0x4090CC00@l */ -/* 8036A534 7C 04 00 00 */ cmpw r4, r0 -/* 8036A538 41 80 00 44 */ blt lbl_8036A57C -/* 8036A53C 3C 66 3F 6F */ addis r3, r6, 0x3f6f -/* 8036A540 38 03 34 00 */ addi r0, r3, 0x3400 -/* 8036A544 7C 00 2B 79 */ or. r0, r0, r5 -/* 8036A548 41 82 00 14 */ beq lbl_8036A55C -/* 8036A54C C8 22 CF 10 */ lfd f1, lit_359(r2) -/* 8036A550 FC 01 07 F2 */ fmul f0, f1, f31 -/* 8036A554 FC 21 00 32 */ fmul f1, f1, f0 -/* 8036A558 48 00 01 78 */ b lbl_8036A6D0 -lbl_8036A55C: -/* 8036A55C FC 00 10 28 */ fsub f0, f0, f2 -/* 8036A560 FC 0C 00 40 */ fcmpo cr0, f12, f0 -/* 8036A564 4C 40 13 82 */ cror 2, 0, 2 -/* 8036A568 40 82 00 14 */ bne lbl_8036A57C -/* 8036A56C C8 22 CF 10 */ lfd f1, lit_359(r2) -/* 8036A570 FC 01 07 F2 */ fmul f0, f1, f31 -/* 8036A574 FC 21 00 32 */ fmul f1, f1, f0 -/* 8036A578 48 00 01 58 */ b lbl_8036A6D0 -lbl_8036A57C: -/* 8036A57C 54 C3 00 7E */ clrlwi r3, r6, 1 -/* 8036A580 3C 00 3F E0 */ lis r0, 0x3fe0 -/* 8036A584 7C 03 00 00 */ cmpw r3, r0 -/* 8036A588 54 C4 65 7E */ rlwinm r4, r6, 0xc, 0x15, 0x1f -/* 8036A58C 38 60 00 00 */ li r3, 0 -/* 8036A590 40 81 00 64 */ ble lbl_8036A5F4 -/* 8036A594 3C 60 00 10 */ lis r3, 0x0010 /* 0x000FFFFF@ha */ -/* 8036A598 38 04 FC 02 */ addi r0, r4, -1022 -/* 8036A59C 7C 60 06 30 */ sraw r0, r3, r0 -/* 8036A5A0 C8 02 CE 60 */ lfd f0, lit_337(r2) -/* 8036A5A4 7C E6 02 14 */ add r7, r6, r0 -/* 8036A5A8 38 63 FF FF */ addi r3, r3, 0xFFFF /* 0x000FFFFF@l */ -/* 8036A5AC 54 E0 00 7E */ clrlwi r0, r7, 1 -/* 8036A5B0 D8 01 00 28 */ stfd f0, 0x28(r1) -/* 8036A5B4 7C 04 A6 70 */ srawi r4, r0, 0x14 -/* 8036A5B8 54 E0 03 3E */ clrlwi r0, r7, 0xc -/* 8036A5BC 38 A4 FC 01 */ addi r5, r4, -1023 -/* 8036A5C0 2C 06 00 00 */ cmpwi r6, 0 -/* 8036A5C4 7C 64 2E 30 */ sraw r4, r3, r5 -/* 8036A5C8 64 03 00 10 */ oris r3, r0, 0x10 -/* 8036A5CC 7C E4 20 78 */ andc r4, r7, r4 -/* 8036A5D0 20 05 00 14 */ subfic r0, r5, 0x14 -/* 8036A5D4 90 81 00 28 */ stw r4, 0x28(r1) -/* 8036A5D8 7C 63 06 30 */ sraw r3, r3, r0 -/* 8036A5DC 40 80 00 08 */ bge lbl_8036A5E4 -/* 8036A5E0 7C 63 00 D0 */ neg r3, r3 -lbl_8036A5E4: -/* 8036A5E4 C8 21 00 40 */ lfd f1, 0x40(r1) -/* 8036A5E8 C8 01 00 28 */ lfd f0, 0x28(r1) -/* 8036A5EC FC 01 00 28 */ fsub f0, f1, f0 -/* 8036A5F0 D8 01 00 40 */ stfd f0, 0x40(r1) -lbl_8036A5F4: -/* 8036A5F4 C8 41 00 40 */ lfd f2, 0x40(r1) -/* 8036A5F8 38 00 00 00 */ li r0, 0 -/* 8036A5FC C8 22 CF 28 */ lfd f1, lit_362(r2) -/* 8036A600 54 64 A0 16 */ slwi r4, r3, 0x14 -/* 8036A604 FC 0C 10 2A */ fadd f0, f12, f2 -/* 8036A608 C9 42 CF 18 */ lfd f10, lit_360(r2) -/* 8036A60C C9 22 CF 20 */ lfd f9, lit_361(r2) -/* 8036A610 C8 C2 CF 50 */ lfd f6, lit_367(r2) -/* 8036A614 D8 01 00 28 */ stfd f0, 0x28(r1) -/* 8036A618 C8 A2 CF 48 */ lfd f5, lit_366(r2) -/* 8036A61C 90 01 00 2C */ stw r0, 0x2c(r1) -/* 8036A620 C8 02 CF 40 */ lfd f0, lit_365(r2) -/* 8036A624 C9 61 00 28 */ lfd f11, 0x28(r1) -/* 8036A628 C8 82 CF 38 */ lfd f4, lit_364(r2) -/* 8036A62C FD 0B 10 28 */ fsub f8, f11, f2 -/* 8036A630 C8 62 CF 30 */ lfd f3, lit_363(r2) -/* 8036A634 FC E1 02 F2 */ fmul f7, f1, f11 -/* 8036A638 C8 42 CF 58 */ lfd f2, lit_368(r2) -/* 8036A63C C8 22 CE 58 */ lfd f1, lit_336(r2) -/* 8036A640 FD 0C 40 28 */ fsub f8, f12, f8 -/* 8036A644 FD 4A 02 F2 */ fmul f10, f10, f11 -/* 8036A648 FD 69 3A 3A */ fmadd f11, f9, f8, f7 -/* 8036A64C FD 2A 58 2A */ fadd f9, f10, f11 -/* 8036A650 FC E9 02 72 */ fmul f7, f9, f9 -/* 8036A654 D9 21 00 50 */ stfd f9, 0x50(r1) -/* 8036A658 FD 09 50 28 */ fsub f8, f9, f10 -/* 8036A65C FC A6 29 FA */ fmadd f5, f6, f7, f5 -/* 8036A660 D8 E1 00 28 */ stfd f7, 0x28(r1) -/* 8036A664 FC CB 40 28 */ fsub f6, f11, f8 -/* 8036A668 FC A7 01 7A */ fmadd f5, f7, f5, f0 -/* 8036A66C FC 09 31 BA */ fmadd f0, f9, f6, f6 -/* 8036A670 FC 87 21 7A */ fmadd f4, f7, f5, f4 -/* 8036A674 FC 67 19 3A */ fmadd f3, f7, f4, f3 -/* 8036A678 FC 67 00 F2 */ fmul f3, f7, f3 -/* 8036A67C FC 89 18 28 */ fsub f4, f9, f3 -/* 8036A680 FC 69 01 32 */ fmul f3, f9, f4 -/* 8036A684 D8 81 00 30 */ stfd f4, 0x30(r1) -/* 8036A688 FC 44 10 28 */ fsub f2, f4, f2 -/* 8036A68C FC 43 10 24 */ fdiv f2, f3, f2 -/* 8036A690 FC 02 00 28 */ fsub f0, f2, f0 -/* 8036A694 FC 00 48 28 */ fsub f0, f0, f9 -/* 8036A698 FC 21 00 28 */ fsub f1, f1, f0 -/* 8036A69C D8 21 00 50 */ stfd f1, 0x50(r1) -/* 8036A6A0 80 01 00 50 */ lwz r0, 0x50(r1) -/* 8036A6A4 7C 00 22 14 */ add r0, r0, r4 -/* 8036A6A8 7C 00 A6 71 */ srawi. r0, r0, 0x14 -/* 8036A6AC 41 81 00 10 */ bgt lbl_8036A6BC -/* 8036A6B0 48 00 1C 21 */ bl ldexp -/* 8036A6B4 D8 21 00 50 */ stfd f1, 0x50(r1) -/* 8036A6B8 48 00 00 10 */ b lbl_8036A6C8 -lbl_8036A6BC: -/* 8036A6BC 80 01 00 50 */ lwz r0, 0x50(r1) -/* 8036A6C0 7C 00 22 14 */ add r0, r0, r4 -/* 8036A6C4 90 01 00 50 */ stw r0, 0x50(r1) -lbl_8036A6C8: -/* 8036A6C8 C8 01 00 50 */ lfd f0, 0x50(r1) -/* 8036A6CC FC 3F 00 32 */ fmul f1, f31, f0 -lbl_8036A6D0: -/* 8036A6D0 E3 E1 00 A8 */ psq_l f31, 168(r1), 0, 0 /* qr0 */ -/* 8036A6D4 CB E1 00 A0 */ lfd f31, 0xa0(r1) -/* 8036A6D8 E3 C1 00 98 */ psq_l f30, 152(r1), 0, 0 /* qr0 */ -/* 8036A6DC CB C1 00 90 */ lfd f30, 0x90(r1) -/* 8036A6E0 E3 A1 00 88 */ psq_l f29, 136(r1), 0, 0 /* qr0 */ -/* 8036A6E4 CB A1 00 80 */ lfd f29, 0x80(r1) -/* 8036A6E8 E3 81 00 78 */ psq_l f28, 120(r1), 0, 0 /* qr0 */ -/* 8036A6EC CB 81 00 70 */ lfd f28, 0x70(r1) -/* 8036A6F0 E3 61 00 68 */ psq_l f27, 104(r1), 0, 0 /* qr0 */ -/* 8036A6F4 80 01 00 B4 */ lwz r0, 0xb4(r1) -/* 8036A6F8 CB 61 00 60 */ lfd f27, 0x60(r1) -/* 8036A6FC 7C 08 03 A6 */ mtlr r0 -/* 8036A700 38 21 00 B0 */ addi r1, r1, 0xb0 -/* 8036A704 4E 80 00 20 */ blr diff --git a/asm/MSL_C/Math/Double_precision/e_rem_pio2/__ieee754_rem_pio2.s b/asm/MSL_C/Math/Double_precision/e_rem_pio2/__ieee754_rem_pio2.s deleted file mode 100644 index 1049368940..0000000000 --- a/asm/MSL_C/Math/Double_precision/e_rem_pio2/__ieee754_rem_pio2.s +++ /dev/null @@ -1,247 +0,0 @@ -lbl_8036A708: -/* 8036A708 94 21 FF A0 */ stwu r1, -0x60(r1) -/* 8036A70C 7C 08 02 A6 */ mflr r0 -/* 8036A710 3C 80 3F E9 */ lis r4, 0x3FE9 /* 0x3FE921FB@ha */ -/* 8036A714 90 01 00 64 */ stw r0, 0x64(r1) -/* 8036A718 38 04 21 FB */ addi r0, r4, 0x21FB /* 0x3FE921FB@l */ -/* 8036A71C 93 E1 00 5C */ stw r31, 0x5c(r1) -/* 8036A720 D8 21 00 08 */ stfd f1, 8(r1) -/* 8036A724 83 E1 00 08 */ lwz r31, 8(r1) -/* 8036A728 93 C1 00 58 */ stw r30, 0x58(r1) -/* 8036A72C 7C 7E 1B 78 */ mr r30, r3 -/* 8036A730 57 E6 00 7E */ clrlwi r6, r31, 1 -/* 8036A734 7C 06 00 00 */ cmpw r6, r0 -/* 8036A738 41 81 00 18 */ bgt lbl_8036A750 -/* 8036A73C D8 3E 00 00 */ stfd f1, 0(r30) -/* 8036A740 38 60 00 00 */ li r3, 0 -/* 8036A744 C8 02 CF 68 */ lfd f0, lit_145(r2) -/* 8036A748 D8 1E 00 08 */ stfd f0, 8(r30) -/* 8036A74C 48 00 03 44 */ b lbl_8036AA90 -lbl_8036A750: -/* 8036A750 3C 60 40 03 */ lis r3, 0x4003 /* 0x4002D97C@ha */ -/* 8036A754 38 03 D9 7C */ addi r0, r3, 0xD97C /* 0x4002D97C@l */ -/* 8036A758 7C 06 00 00 */ cmpw r6, r0 -/* 8036A75C 40 80 00 DC */ bge lbl_8036A838 -/* 8036A760 2C 1F 00 00 */ cmpwi r31, 0 -/* 8036A764 40 81 00 6C */ ble lbl_8036A7D0 -/* 8036A768 C8 02 CF 70 */ lfd f0, lit_146(r2) -/* 8036A76C 3C 06 C0 07 */ addis r0, r6, 0xc007 -/* 8036A770 28 00 21 FB */ cmplwi r0, 0x21fb -/* 8036A774 FC 41 00 28 */ fsub f2, f1, f0 -/* 8036A778 D8 41 00 10 */ stfd f2, 0x10(r1) -/* 8036A77C 41 82 00 24 */ beq lbl_8036A7A0 -/* 8036A780 C8 22 CF 78 */ lfd f1, lit_147(r2) -/* 8036A784 FC 02 08 28 */ fsub f0, f2, f1 -/* 8036A788 D8 1E 00 00 */ stfd f0, 0(r30) -/* 8036A78C C8 1E 00 00 */ lfd f0, 0(r30) -/* 8036A790 FC 02 00 28 */ fsub f0, f2, f0 -/* 8036A794 FC 00 08 28 */ fsub f0, f0, f1 -/* 8036A798 D8 1E 00 08 */ stfd f0, 8(r30) -/* 8036A79C 48 00 00 2C */ b lbl_8036A7C8 -lbl_8036A7A0: -/* 8036A7A0 C8 02 CF 80 */ lfd f0, lit_148(r2) -/* 8036A7A4 C8 22 CF 88 */ lfd f1, lit_149(r2) -/* 8036A7A8 FC 42 00 28 */ fsub f2, f2, f0 -/* 8036A7AC FC 02 08 28 */ fsub f0, f2, f1 -/* 8036A7B0 D8 41 00 10 */ stfd f2, 0x10(r1) -/* 8036A7B4 D8 1E 00 00 */ stfd f0, 0(r30) -/* 8036A7B8 C8 1E 00 00 */ lfd f0, 0(r30) -/* 8036A7BC FC 02 00 28 */ fsub f0, f2, f0 -/* 8036A7C0 FC 00 08 28 */ fsub f0, f0, f1 -/* 8036A7C4 D8 1E 00 08 */ stfd f0, 8(r30) -lbl_8036A7C8: -/* 8036A7C8 38 60 00 01 */ li r3, 1 -/* 8036A7CC 48 00 02 C4 */ b lbl_8036AA90 -lbl_8036A7D0: -/* 8036A7D0 C8 02 CF 70 */ lfd f0, lit_146(r2) -/* 8036A7D4 3C 06 C0 07 */ addis r0, r6, 0xc007 -/* 8036A7D8 28 00 21 FB */ cmplwi r0, 0x21fb -/* 8036A7DC FC 40 08 2A */ fadd f2, f0, f1 -/* 8036A7E0 D8 41 00 10 */ stfd f2, 0x10(r1) -/* 8036A7E4 41 82 00 24 */ beq lbl_8036A808 -/* 8036A7E8 C8 22 CF 78 */ lfd f1, lit_147(r2) -/* 8036A7EC FC 01 10 2A */ fadd f0, f1, f2 -/* 8036A7F0 D8 1E 00 00 */ stfd f0, 0(r30) -/* 8036A7F4 C8 1E 00 00 */ lfd f0, 0(r30) -/* 8036A7F8 FC 02 00 28 */ fsub f0, f2, f0 -/* 8036A7FC FC 01 00 2A */ fadd f0, f1, f0 -/* 8036A800 D8 1E 00 08 */ stfd f0, 8(r30) -/* 8036A804 48 00 00 2C */ b lbl_8036A830 -lbl_8036A808: -/* 8036A808 C8 02 CF 80 */ lfd f0, lit_148(r2) -/* 8036A80C C8 22 CF 88 */ lfd f1, lit_149(r2) -/* 8036A810 FC 42 00 2A */ fadd f2, f2, f0 -/* 8036A814 FC 01 10 2A */ fadd f0, f1, f2 -/* 8036A818 D8 41 00 10 */ stfd f2, 0x10(r1) -/* 8036A81C D8 1E 00 00 */ stfd f0, 0(r30) -/* 8036A820 C8 1E 00 00 */ lfd f0, 0(r30) -/* 8036A824 FC 02 00 28 */ fsub f0, f2, f0 -/* 8036A828 FC 01 00 2A */ fadd f0, f1, f0 -/* 8036A82C D8 1E 00 08 */ stfd f0, 8(r30) -lbl_8036A830: -/* 8036A830 38 60 FF FF */ li r3, -1 -/* 8036A834 48 00 02 5C */ b lbl_8036AA90 -lbl_8036A838: -/* 8036A838 3C 60 41 39 */ lis r3, 0x4139 /* 0x413921FB@ha */ -/* 8036A83C 38 03 21 FB */ addi r0, r3, 0x21FB /* 0x413921FB@l */ -/* 8036A840 7C 06 00 00 */ cmpw r6, r0 -/* 8036A844 41 81 01 3C */ bgt lbl_8036A980 -/* 8036A848 FC 80 0A 10 */ fabs f4, f1 -/* 8036A84C 3C 00 43 30 */ lis r0, 0x4330 -/* 8036A850 C8 22 CF 98 */ lfd f1, lit_151(r2) -/* 8036A854 C8 02 CF 90 */ lfd f0, lit_150(r2) -/* 8036A858 90 01 00 38 */ stw r0, 0x38(r1) -/* 8036A85C FC 41 01 3A */ fmadd f2, f1, f4, f0 -/* 8036A860 C8 62 CF B8 */ lfd f3, lit_157(r2) -/* 8036A864 C8 22 CF 70 */ lfd f1, lit_146(r2) -/* 8036A868 C8 02 CF 78 */ lfd f0, lit_147(r2) -/* 8036A86C FC 40 10 1E */ fctiwz f2, f2 -/* 8036A870 D8 41 00 30 */ stfd f2, 0x30(r1) -/* 8036A874 80 61 00 34 */ lwz r3, 0x34(r1) -/* 8036A878 6C 60 80 00 */ xoris r0, r3, 0x8000 -/* 8036A87C 2C 03 00 20 */ cmpwi r3, 0x20 -/* 8036A880 90 01 00 3C */ stw r0, 0x3c(r1) -/* 8036A884 C8 41 00 38 */ lfd f2, 0x38(r1) -/* 8036A888 FC A2 18 28 */ fsub f5, f2, f3 -/* 8036A88C FC 81 21 7C */ fnmsub f4, f1, f5, f4 -/* 8036A890 FC 20 01 72 */ fmul f1, f0, f5 -/* 8036A894 40 80 00 2C */ bge lbl_8036A8C0 -/* 8036A898 3C 80 80 3A */ lis r4, npio2_hw@ha /* 0x803A24B8@ha */ -/* 8036A89C 54 60 10 3A */ slwi r0, r3, 2 -/* 8036A8A0 38 84 24 B8 */ addi r4, r4, npio2_hw@l /* 0x803A24B8@l */ -/* 8036A8A4 7C 84 02 14 */ add r4, r4, r0 -/* 8036A8A8 80 04 FF FC */ lwz r0, -4(r4) -/* 8036A8AC 7C 06 00 00 */ cmpw r6, r0 -/* 8036A8B0 41 82 00 10 */ beq lbl_8036A8C0 -/* 8036A8B4 FC 04 08 28 */ fsub f0, f4, f1 -/* 8036A8B8 D8 1E 00 00 */ stfd f0, 0(r30) -/* 8036A8BC 48 00 00 88 */ b lbl_8036A944 -lbl_8036A8C0: -/* 8036A8C0 FC 04 08 28 */ fsub f0, f4, f1 -/* 8036A8C4 7C C4 A6 70 */ srawi r4, r6, 0x14 -/* 8036A8C8 D8 1E 00 00 */ stfd f0, 0(r30) -/* 8036A8CC 80 1E 00 00 */ lwz r0, 0(r30) -/* 8036A8D0 54 00 65 7E */ rlwinm r0, r0, 0xc, 0x15, 0x1f -/* 8036A8D4 7C 00 20 50 */ subf r0, r0, r4 -/* 8036A8D8 2C 00 00 10 */ cmpwi r0, 0x10 -/* 8036A8DC 40 81 00 68 */ ble lbl_8036A944 -/* 8036A8E0 C8 02 CF 80 */ lfd f0, lit_148(r2) -/* 8036A8E4 FC 60 20 90 */ fmr f3, f4 -/* 8036A8E8 C8 22 CF 88 */ lfd f1, lit_149(r2) -/* 8036A8EC FC 40 01 72 */ fmul f2, f0, f5 -/* 8036A8F0 FC 84 10 28 */ fsub f4, f4, f2 -/* 8036A8F4 FC 03 20 28 */ fsub f0, f3, f4 -/* 8036A8F8 FC 00 10 28 */ fsub f0, f0, f2 -/* 8036A8FC FC 21 01 78 */ fmsub f1, f1, f5, f0 -/* 8036A900 FC 04 08 28 */ fsub f0, f4, f1 -/* 8036A904 D8 1E 00 00 */ stfd f0, 0(r30) -/* 8036A908 80 1E 00 00 */ lwz r0, 0(r30) -/* 8036A90C 54 00 65 7E */ rlwinm r0, r0, 0xc, 0x15, 0x1f -/* 8036A910 7C 00 20 50 */ subf r0, r0, r4 -/* 8036A914 2C 00 00 31 */ cmpwi r0, 0x31 -/* 8036A918 40 81 00 2C */ ble lbl_8036A944 -/* 8036A91C C8 02 CF A0 */ lfd f0, lit_152(r2) -/* 8036A920 FC 40 20 90 */ fmr f2, f4 -/* 8036A924 C8 22 CF A8 */ lfd f1, lit_153(r2) -/* 8036A928 FC 60 01 72 */ fmul f3, f0, f5 -/* 8036A92C FC 84 18 28 */ fsub f4, f4, f3 -/* 8036A930 FC 02 20 28 */ fsub f0, f2, f4 -/* 8036A934 FC 00 18 28 */ fsub f0, f0, f3 -/* 8036A938 FC 21 01 78 */ fmsub f1, f1, f5, f0 -/* 8036A93C FC 04 08 28 */ fsub f0, f4, f1 -/* 8036A940 D8 1E 00 00 */ stfd f0, 0(r30) -lbl_8036A944: -/* 8036A944 C8 1E 00 00 */ lfd f0, 0(r30) -/* 8036A948 2C 1F 00 00 */ cmpwi r31, 0 -/* 8036A94C FC 04 00 28 */ fsub f0, f4, f0 -/* 8036A950 FC 00 08 28 */ fsub f0, f0, f1 -/* 8036A954 D8 1E 00 08 */ stfd f0, 8(r30) -/* 8036A958 40 80 01 38 */ bge lbl_8036AA90 -/* 8036A95C C8 1E 00 00 */ lfd f0, 0(r30) -/* 8036A960 7C 63 00 D0 */ neg r3, r3 -/* 8036A964 FC 00 00 50 */ fneg f0, f0 -/* 8036A968 D8 1E 00 00 */ stfd f0, 0(r30) -/* 8036A96C C8 1E 00 08 */ lfd f0, 8(r30) -/* 8036A970 FC 00 00 50 */ fneg f0, f0 -/* 8036A974 D8 1E 00 08 */ stfd f0, 8(r30) -/* 8036A978 48 00 01 18 */ b lbl_8036AA90 -/* 8036A97C 48 00 01 14 */ b lbl_8036AA90 -lbl_8036A980: -/* 8036A980 3C 00 7F F0 */ lis r0, 0x7ff0 -/* 8036A984 7C 06 00 00 */ cmpw r6, r0 -/* 8036A988 41 80 00 18 */ blt lbl_8036A9A0 -/* 8036A98C FC 01 08 28 */ fsub f0, f1, f1 -/* 8036A990 38 60 00 00 */ li r3, 0 -/* 8036A994 D8 1E 00 08 */ stfd f0, 8(r30) -/* 8036A998 D8 1E 00 00 */ stfd f0, 0(r30) -/* 8036A99C 48 00 00 F4 */ b lbl_8036AA90 -lbl_8036A9A0: -/* 8036A9A0 7C C3 A6 70 */ srawi r3, r6, 0x14 -/* 8036A9A4 3C 00 43 30 */ lis r0, 0x4330 -/* 8036A9A8 38 A3 FB EA */ addi r5, r3, -1046 -/* 8036A9AC 80 81 00 0C */ lwz r4, 0xc(r1) -/* 8036A9B0 54 A3 A0 16 */ slwi r3, r5, 0x14 -/* 8036A9B4 90 01 00 30 */ stw r0, 0x30(r1) -/* 8036A9B8 7C 63 30 50 */ subf r3, r3, r6 -/* 8036A9BC C8 A2 CF B8 */ lfd f5, lit_157(r2) -/* 8036A9C0 90 81 00 14 */ stw r4, 0x14(r1) -/* 8036A9C4 38 81 00 30 */ addi r4, r1, 0x30 -/* 8036A9C8 C8 82 CF B0 */ lfd f4, lit_154(r2) -/* 8036A9CC 38 C0 00 03 */ li r6, 3 -/* 8036A9D0 90 61 00 10 */ stw r3, 0x10(r1) -/* 8036A9D4 C8 22 CF 68 */ lfd f1, lit_145(r2) -/* 8036A9D8 C8 61 00 10 */ lfd f3, 0x10(r1) -/* 8036A9DC 90 01 00 48 */ stw r0, 0x48(r1) -/* 8036A9E0 FC 00 18 1E */ fctiwz f0, f3 -/* 8036A9E4 D8 01 00 38 */ stfd f0, 0x38(r1) -/* 8036A9E8 80 01 00 3C */ lwz r0, 0x3c(r1) -/* 8036A9EC 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8036A9F0 90 01 00 34 */ stw r0, 0x34(r1) -/* 8036A9F4 C8 01 00 30 */ lfd f0, 0x30(r1) -/* 8036A9F8 FC 40 28 28 */ fsub f2, f0, f5 -/* 8036A9FC FC 03 10 28 */ fsub f0, f3, f2 -/* 8036AA00 D8 41 00 18 */ stfd f2, 0x18(r1) -/* 8036AA04 FC 64 00 32 */ fmul f3, f4, f0 -/* 8036AA08 FC 00 18 1E */ fctiwz f0, f3 -/* 8036AA0C D8 61 00 10 */ stfd f3, 0x10(r1) -/* 8036AA10 D8 01 00 40 */ stfd f0, 0x40(r1) -/* 8036AA14 80 01 00 44 */ lwz r0, 0x44(r1) -/* 8036AA18 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8036AA1C 90 01 00 4C */ stw r0, 0x4c(r1) -/* 8036AA20 C8 01 00 48 */ lfd f0, 0x48(r1) -/* 8036AA24 FC 40 28 28 */ fsub f2, f0, f5 -/* 8036AA28 FC 03 10 28 */ fsub f0, f3, f2 -/* 8036AA2C D8 41 00 20 */ stfd f2, 0x20(r1) -/* 8036AA30 FC 04 00 32 */ fmul f0, f4, f0 -/* 8036AA34 D8 01 00 10 */ stfd f0, 0x10(r1) -/* 8036AA38 D8 01 00 28 */ stfd f0, 0x28(r1) -/* 8036AA3C 48 00 00 0C */ b lbl_8036AA48 -lbl_8036AA40: -/* 8036AA40 38 84 FF F8 */ addi r4, r4, -8 -/* 8036AA44 38 C6 FF FF */ addi r6, r6, -1 -lbl_8036AA48: -/* 8036AA48 C8 04 FF F8 */ lfd f0, -8(r4) -/* 8036AA4C FC 01 00 00 */ fcmpu cr0, f1, f0 -/* 8036AA50 41 82 FF F0 */ beq lbl_8036AA40 -/* 8036AA54 3C 60 80 3A */ lis r3, two_over_pi@ha /* 0x803A23B0@ha */ -/* 8036AA58 7F C4 F3 78 */ mr r4, r30 -/* 8036AA5C 39 03 23 B0 */ addi r8, r3, two_over_pi@l /* 0x803A23B0@l */ -/* 8036AA60 38 E0 00 02 */ li r7, 2 -/* 8036AA64 38 61 00 18 */ addi r3, r1, 0x18 -/* 8036AA68 48 00 01 35 */ bl __kernel_rem_pio2 -/* 8036AA6C 2C 1F 00 00 */ cmpwi r31, 0 -/* 8036AA70 40 80 00 20 */ bge lbl_8036AA90 -/* 8036AA74 C8 1E 00 00 */ lfd f0, 0(r30) -/* 8036AA78 7C 63 00 D0 */ neg r3, r3 -/* 8036AA7C FC 00 00 50 */ fneg f0, f0 -/* 8036AA80 D8 1E 00 00 */ stfd f0, 0(r30) -/* 8036AA84 C8 1E 00 08 */ lfd f0, 8(r30) -/* 8036AA88 FC 00 00 50 */ fneg f0, f0 -/* 8036AA8C D8 1E 00 08 */ stfd f0, 8(r30) -lbl_8036AA90: -/* 8036AA90 80 01 00 64 */ lwz r0, 0x64(r1) -/* 8036AA94 83 E1 00 5C */ lwz r31, 0x5c(r1) -/* 8036AA98 83 C1 00 58 */ lwz r30, 0x58(r1) -/* 8036AA9C 7C 08 03 A6 */ mtlr r0 -/* 8036AAA0 38 21 00 60 */ addi r1, r1, 0x60 -/* 8036AAA4 4E 80 00 20 */ blr diff --git a/asm/MSL_C/Math/Double_precision/e_sqrt/__ieee754_sqrt.s b/asm/MSL_C/Math/Double_precision/e_sqrt/__ieee754_sqrt.s deleted file mode 100644 index e95674b038..0000000000 --- a/asm/MSL_C/Math/Double_precision/e_sqrt/__ieee754_sqrt.s +++ /dev/null @@ -1,160 +0,0 @@ -lbl_8036C7A0: -/* 8036C7A0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8036C7A4 D8 21 00 08 */ stfd f1, 8(r1) -/* 8036C7A8 80 C1 00 08 */ lwz r6, 8(r1) -/* 8036C7AC 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8036C7B0 54 C3 00 56 */ rlwinm r3, r6, 0, 1, 0xb -/* 8036C7B4 3C 63 80 10 */ addis r3, r3, 0x8010 -/* 8036C7B8 28 03 00 00 */ cmplwi r3, 0 -/* 8036C7BC 40 82 00 14 */ bne lbl_8036C7D0 -/* 8036C7C0 FC 21 08 7A */ fmadd f1, f1, f1, f1 -/* 8036C7C4 38 00 00 21 */ li r0, 0x21 -/* 8036C7C8 90 0D 94 28 */ stw r0, errno(r13) -/* 8036C7CC 48 00 01 F0 */ b lbl_8036C9BC -lbl_8036C7D0: -/* 8036C7D0 2C 06 00 00 */ cmpwi r6, 0 -/* 8036C7D4 41 81 00 30 */ bgt lbl_8036C804 -/* 8036C7D8 54 C3 00 7E */ clrlwi r3, r6, 1 -/* 8036C7DC 7C 03 1B 79 */ or. r3, r0, r3 -/* 8036C7E0 40 82 00 08 */ bne lbl_8036C7E8 -/* 8036C7E4 48 00 01 D8 */ b lbl_8036C9BC -lbl_8036C7E8: -/* 8036C7E8 2C 06 00 00 */ cmpwi r6, 0 -/* 8036C7EC 40 80 00 18 */ bge lbl_8036C804 -/* 8036C7F0 3C 60 80 45 */ lis r3, __float_nan@ha /* 0x80450AE0@ha */ -/* 8036C7F4 38 00 00 21 */ li r0, 0x21 -/* 8036C7F8 90 0D 94 28 */ stw r0, errno(r13) -/* 8036C7FC C0 23 0A E0 */ lfs f1, __float_nan@l(r3) /* 0x80450AE0@l */ -/* 8036C800 48 00 01 BC */ b lbl_8036C9BC -lbl_8036C804: -/* 8036C804 7C C3 A6 71 */ srawi. r3, r6, 0x14 -/* 8036C808 40 82 00 50 */ bne lbl_8036C858 -/* 8036C80C 48 00 00 14 */ b lbl_8036C820 -lbl_8036C810: -/* 8036C810 54 04 AA FE */ srwi r4, r0, 0xb -/* 8036C814 54 00 A8 14 */ slwi r0, r0, 0x15 -/* 8036C818 7C C6 23 78 */ or r6, r6, r4 -/* 8036C81C 38 63 FF EB */ addi r3, r3, -21 -lbl_8036C820: -/* 8036C820 2C 06 00 00 */ cmpwi r6, 0 -/* 8036C824 41 82 FF EC */ beq lbl_8036C810 -/* 8036C828 38 E0 00 00 */ li r7, 0 -/* 8036C82C 48 00 00 0C */ b lbl_8036C838 -lbl_8036C830: -/* 8036C830 54 C6 08 3C */ slwi r6, r6, 1 -/* 8036C834 38 E7 00 01 */ addi r7, r7, 1 -lbl_8036C838: -/* 8036C838 54 C4 02 D7 */ rlwinm. r4, r6, 0, 0xb, 0xb -/* 8036C83C 41 82 FF F4 */ beq lbl_8036C830 -/* 8036C840 20 87 00 20 */ subfic r4, r7, 0x20 -/* 8036C844 38 A7 FF FF */ addi r5, r7, -1 -/* 8036C848 7C 04 24 30 */ srw r4, r0, r4 -/* 8036C84C 7C 00 38 30 */ slw r0, r0, r7 -/* 8036C850 7C 65 18 50 */ subf r3, r5, r3 -/* 8036C854 7C C6 23 78 */ or r6, r6, r4 -lbl_8036C858: -/* 8036C858 38 83 FC 01 */ addi r4, r3, -1023 -/* 8036C85C 54 C5 03 3E */ clrlwi r5, r6, 0xc -/* 8036C860 54 84 07 FF */ clrlwi. r4, r4, 0x1f -/* 8036C864 64 A5 00 10 */ oris r5, r5, 0x10 -/* 8036C868 41 82 00 14 */ beq lbl_8036C87C -/* 8036C86C 54 04 0F FE */ srwi r4, r0, 0x1f -/* 8036C870 7C 00 02 14 */ add r0, r0, r0 -/* 8036C874 7C 84 2A 14 */ add r4, r4, r5 -/* 8036C878 7C A5 22 14 */ add r5, r5, r4 -lbl_8036C87C: -/* 8036C87C 54 04 0F FE */ srwi r4, r0, 0x1f -/* 8036C880 7C 00 02 14 */ add r0, r0, r0 -/* 8036C884 7C 84 2A 14 */ add r4, r4, r5 -/* 8036C888 39 20 00 00 */ li r9, 0 -/* 8036C88C 7C A5 22 14 */ add r5, r5, r4 -/* 8036C890 39 60 00 00 */ li r11, 0 -/* 8036C894 39 40 00 00 */ li r10, 0 -/* 8036C898 39 80 00 00 */ li r12, 0 -/* 8036C89C 3C C0 00 20 */ lis r6, 0x20 -/* 8036C8A0 48 00 00 30 */ b lbl_8036C8D0 -lbl_8036C8A4: -/* 8036C8A4 7C 8B 32 14 */ add r4, r11, r6 -/* 8036C8A8 7C 04 28 00 */ cmpw r4, r5 -/* 8036C8AC 41 81 00 10 */ bgt lbl_8036C8BC -/* 8036C8B0 7D 64 32 14 */ add r11, r4, r6 -/* 8036C8B4 7C A4 28 50 */ subf r5, r4, r5 -/* 8036C8B8 7D 8C 32 14 */ add r12, r12, r6 -lbl_8036C8BC: -/* 8036C8BC 54 04 0F FE */ srwi r4, r0, 0x1f -/* 8036C8C0 7C 00 02 14 */ add r0, r0, r0 -/* 8036C8C4 7C 84 2A 14 */ add r4, r4, r5 -/* 8036C8C8 54 C6 F8 7E */ srwi r6, r6, 1 -/* 8036C8CC 7C A5 22 14 */ add r5, r5, r4 -lbl_8036C8D0: -/* 8036C8D0 28 06 00 00 */ cmplwi r6, 0 -/* 8036C8D4 40 82 FF D0 */ bne lbl_8036C8A4 -/* 8036C8D8 3C C0 80 00 */ lis r6, 0x8000 -/* 8036C8DC 48 00 00 6C */ b lbl_8036C948 -lbl_8036C8E0: -/* 8036C8E0 7C 0B 28 00 */ cmpw r11, r5 -/* 8036C8E4 7D 67 5B 78 */ mr r7, r11 -/* 8036C8E8 7D 09 32 14 */ add r8, r9, r6 -/* 8036C8EC 41 80 00 10 */ blt lbl_8036C8FC -/* 8036C8F0 40 82 00 44 */ bne lbl_8036C934 -/* 8036C8F4 7C 08 00 40 */ cmplw r8, r0 -/* 8036C8F8 41 81 00 3C */ bgt lbl_8036C934 -lbl_8036C8FC: -/* 8036C8FC 55 04 00 00 */ rlwinm r4, r8, 0, 0, 0 -/* 8036C900 7D 28 32 14 */ add r9, r8, r6 -/* 8036C904 3C 84 80 00 */ addis r4, r4, 0x8000 -/* 8036C908 28 04 00 00 */ cmplwi r4, 0 -/* 8036C90C 40 82 00 10 */ bne lbl_8036C91C -/* 8036C910 55 24 00 01 */ rlwinm. r4, r9, 0, 0, 0 -/* 8036C914 40 82 00 08 */ bne lbl_8036C91C -/* 8036C918 39 6B 00 01 */ addi r11, r11, 1 -lbl_8036C91C: -/* 8036C91C 7C 00 40 40 */ cmplw r0, r8 -/* 8036C920 7C A7 28 50 */ subf r5, r7, r5 -/* 8036C924 40 80 00 08 */ bge lbl_8036C92C -/* 8036C928 38 A5 FF FF */ addi r5, r5, -1 -lbl_8036C92C: -/* 8036C92C 7C 08 00 50 */ subf r0, r8, r0 -/* 8036C930 7D 4A 32 14 */ add r10, r10, r6 -lbl_8036C934: -/* 8036C934 54 04 0F FE */ srwi r4, r0, 0x1f -/* 8036C938 7C 00 02 14 */ add r0, r0, r0 -/* 8036C93C 7C 84 2A 14 */ add r4, r4, r5 -/* 8036C940 54 C6 F8 7E */ srwi r6, r6, 1 -/* 8036C944 7C A5 22 14 */ add r5, r5, r4 -lbl_8036C948: -/* 8036C948 28 06 00 00 */ cmplwi r6, 0 -/* 8036C94C 40 82 FF 94 */ bne lbl_8036C8E0 -/* 8036C950 7C A0 03 79 */ or. r0, r5, r0 -/* 8036C954 41 82 00 30 */ beq lbl_8036C984 -/* 8036C958 C8 02 D1 48 */ lfd f0, lit_164(r2) -/* 8036C95C 3C 0A 00 01 */ addis r0, r10, 1 -/* 8036C960 28 00 FF FF */ cmplwi r0, 0xffff -/* 8036C964 D8 01 00 10 */ stfd f0, 0x10(r1) -/* 8036C968 D8 01 00 10 */ stfd f0, 0x10(r1) -/* 8036C96C 40 82 00 10 */ bne lbl_8036C97C -/* 8036C970 39 40 00 00 */ li r10, 0 -/* 8036C974 39 8C 00 01 */ addi r12, r12, 1 -/* 8036C978 48 00 00 0C */ b lbl_8036C984 -lbl_8036C97C: -/* 8036C97C 55 40 07 FE */ clrlwi r0, r10, 0x1f -/* 8036C980 7D 4A 02 14 */ add r10, r10, r0 -lbl_8036C984: -/* 8036C984 55 80 07 FE */ clrlwi r0, r12, 0x1f -/* 8036C988 7D 84 0E 70 */ srawi r4, r12, 1 -/* 8036C98C 2C 00 00 01 */ cmpwi r0, 1 -/* 8036C990 55 45 F8 7E */ srwi r5, r10, 1 -/* 8036C994 3C 84 3F E0 */ addis r4, r4, 0x3fe0 -/* 8036C998 40 82 00 08 */ bne lbl_8036C9A0 -/* 8036C99C 64 A5 80 00 */ oris r5, r5, 0x8000 -lbl_8036C9A0: -/* 8036C9A0 38 03 FC 01 */ addi r0, r3, -1023 -/* 8036C9A4 90 A1 00 14 */ stw r5, 0x14(r1) -/* 8036C9A8 7C 00 0E 70 */ srawi r0, r0, 1 -/* 8036C9AC 54 00 A0 16 */ slwi r0, r0, 0x14 -/* 8036C9B0 7C 84 02 14 */ add r4, r4, r0 -/* 8036C9B4 90 81 00 10 */ stw r4, 0x10(r1) -/* 8036C9B8 C8 21 00 10 */ lfd f1, 0x10(r1) -lbl_8036C9BC: -/* 8036C9BC 38 21 00 20 */ addi r1, r1, 0x20 -/* 8036C9C0 4E 80 00 20 */ blr diff --git a/asm/MSL_C/Math/Double_precision/k_cos/__kernel_cos.s b/asm/MSL_C/Math/Double_precision/k_cos/__kernel_cos.s deleted file mode 100644 index c270538ddf..0000000000 --- a/asm/MSL_C/Math/Double_precision/k_cos/__kernel_cos.s +++ /dev/null @@ -1,67 +0,0 @@ -lbl_8036AAA8: -/* 8036AAA8 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8036AAAC 3C 00 3E 40 */ lis r0, 0x3e40 -/* 8036AAB0 D8 21 00 08 */ stfd f1, 8(r1) -/* 8036AAB4 80 61 00 08 */ lwz r3, 8(r1) -/* 8036AAB8 54 64 00 7E */ clrlwi r4, r3, 1 -/* 8036AABC 7C 04 00 00 */ cmpw r4, r0 -/* 8036AAC0 40 80 00 20 */ bge lbl_8036AAE0 -/* 8036AAC4 FC 00 08 1E */ fctiwz f0, f1 -/* 8036AAC8 D8 01 00 18 */ stfd f0, 0x18(r1) -/* 8036AACC 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8036AAD0 2C 00 00 00 */ cmpwi r0, 0 -/* 8036AAD4 40 82 00 0C */ bne lbl_8036AAE0 -/* 8036AAD8 C8 22 CF C0 */ lfd f1, lit_65(r2) -/* 8036AADC 48 00 00 B8 */ b lbl_8036AB94 -lbl_8036AAE0: -/* 8036AAE0 C8 C1 00 08 */ lfd f6, 8(r1) -/* 8036AAE4 3C 60 3F D3 */ lis r3, 0x3FD3 /* 0x3FD33333@ha */ -/* 8036AAE8 38 03 33 33 */ addi r0, r3, 0x3333 /* 0x3FD33333@l */ -/* 8036AAEC C8 A2 CF F0 */ lfd f5, lit_71(r2) -/* 8036AAF0 FC E6 01 B2 */ fmul f7, f6, f6 -/* 8036AAF4 C8 02 CF E8 */ lfd f0, lit_70(r2) -/* 8036AAF8 C8 82 CF E0 */ lfd f4, lit_69(r2) -/* 8036AAFC 7C 04 00 00 */ cmpw r4, r0 -/* 8036AB00 C8 62 CF D8 */ lfd f3, lit_68(r2) -/* 8036AB04 C8 22 CF D0 */ lfd f1, lit_67(r2) -/* 8036AB08 FC A5 01 FA */ fmadd f5, f5, f7, f0 -/* 8036AB0C C8 02 CF C8 */ lfd f0, lit_66(r2) -/* 8036AB10 FC 87 21 7A */ fmadd f4, f7, f5, f4 -/* 8036AB14 FC 67 19 3A */ fmadd f3, f7, f4, f3 -/* 8036AB18 FC 27 08 FA */ fmadd f1, f7, f3, f1 -/* 8036AB1C FC 07 00 7A */ fmadd f0, f7, f1, f0 -/* 8036AB20 FC 87 00 32 */ fmul f4, f7, f0 -/* 8036AB24 40 80 00 20 */ bge lbl_8036AB44 -/* 8036AB28 FC 06 00 B2 */ fmul f0, f6, f2 -/* 8036AB2C C8 22 CF F8 */ lfd f1, lit_72(r2) -/* 8036AB30 C8 42 CF C0 */ lfd f2, lit_65(r2) -/* 8036AB34 FC 07 01 38 */ fmsub f0, f7, f4, f0 -/* 8036AB38 FC 01 01 F8 */ fmsub f0, f1, f7, f0 -/* 8036AB3C FC 22 00 28 */ fsub f1, f2, f0 -/* 8036AB40 48 00 00 54 */ b lbl_8036AB94 -lbl_8036AB44: -/* 8036AB44 3C 00 3F E9 */ lis r0, 0x3fe9 -/* 8036AB48 7C 04 00 00 */ cmpw r4, r0 -/* 8036AB4C 40 81 00 10 */ ble lbl_8036AB5C -/* 8036AB50 C8 02 D0 00 */ lfd f0, lit_73(r2) -/* 8036AB54 D8 01 00 10 */ stfd f0, 0x10(r1) -/* 8036AB58 48 00 00 14 */ b lbl_8036AB6C -lbl_8036AB5C: -/* 8036AB5C 3C 64 FF E0 */ addis r3, r4, 0xffe0 -/* 8036AB60 38 00 00 00 */ li r0, 0 -/* 8036AB64 90 61 00 10 */ stw r3, 0x10(r1) -/* 8036AB68 90 01 00 14 */ stw r0, 0x14(r1) -lbl_8036AB6C: -/* 8036AB6C C8 01 00 08 */ lfd f0, 8(r1) -/* 8036AB70 C8 61 00 10 */ lfd f3, 0x10(r1) -/* 8036AB74 FC 00 00 B2 */ fmul f0, f0, f2 -/* 8036AB78 C8 22 CF F8 */ lfd f1, lit_72(r2) -/* 8036AB7C C8 42 CF C0 */ lfd f2, lit_65(r2) -/* 8036AB80 FC 21 19 F8 */ fmsub f1, f1, f7, f3 -/* 8036AB84 FC 07 01 38 */ fmsub f0, f7, f4, f0 -/* 8036AB88 FC 42 18 28 */ fsub f2, f2, f3 -/* 8036AB8C FC 01 00 28 */ fsub f0, f1, f0 -/* 8036AB90 FC 22 00 28 */ fsub f1, f2, f0 -lbl_8036AB94: -/* 8036AB94 38 21 00 20 */ addi r1, r1, 0x20 -/* 8036AB98 4E 80 00 20 */ blr diff --git a/asm/MSL_C/Math/Double_precision/k_rem_pio2/__kernel_rem_pio2.s b/asm/MSL_C/Math/Double_precision/k_rem_pio2/__kernel_rem_pio2.s deleted file mode 100644 index 42ace5cbd8..0000000000 --- a/asm/MSL_C/Math/Double_precision/k_rem_pio2/__kernel_rem_pio2.s +++ /dev/null @@ -1,1007 +0,0 @@ -lbl_8036AB9C: -/* 8036AB9C 94 21 FD 30 */ stwu r1, -0x2d0(r1) -/* 8036ABA0 7C 08 02 A6 */ mflr r0 -/* 8036ABA4 90 01 02 D4 */ stw r0, 0x2d4(r1) -/* 8036ABA8 39 61 02 D0 */ addi r11, r1, 0x2d0 -/* 8036ABAC 4B FF 75 89 */ bl _savefpr_25 -/* 8036ABB0 BE 01 02 58 */ stmw r16, 0x258(r1) -/* 8036ABB4 3D 20 2A AB */ lis r9, 0x2AAB /* 0x2AAAAAAB@ha */ -/* 8036ABB8 7C F7 3B 78 */ mr r23, r7 -/* 8036ABBC 38 05 FF FD */ addi r0, r5, -3 -/* 8036ABC0 3D 40 80 3A */ lis r10, init_jk@ha /* 0x803A2538@ha */ -/* 8036ABC4 38 E9 AA AB */ addi r7, r9, 0xAAAB /* 0x2AAAAAAB@l */ -/* 8036ABC8 56 E9 10 3A */ slwi r9, r23, 2 -/* 8036ABCC 7C 07 00 96 */ mulhw r0, r7, r0 -/* 8036ABD0 38 EA 25 38 */ addi r7, r10, init_jk@l /* 0x803A2538@l */ -/* 8036ABD4 7F 87 48 2E */ lwzx r28, r7, r9 -/* 8036ABD8 7C 75 1B 78 */ mr r21, r3 -/* 8036ABDC 7C 96 23 78 */ mr r22, r4 -/* 8036ABE0 7D 18 43 78 */ mr r24, r8 -/* 8036ABE4 7C 00 16 70 */ srawi r0, r0, 2 -/* 8036ABE8 3B C6 FF FF */ addi r30, r6, -1 -/* 8036ABEC 54 03 0F FE */ srwi r3, r0, 0x1f -/* 8036ABF0 7F A0 1A 15 */ add. r29, r0, r3 -/* 8036ABF4 40 80 00 08 */ bge lbl_8036ABFC -/* 8036ABF8 3B A0 00 00 */ li r29, 0 -lbl_8036ABFC: -/* 8036ABFC 38 1D 00 01 */ addi r0, r29, 1 -/* 8036AC00 7C FE E2 15 */ add. r7, r30, r28 -/* 8036AC04 1C 80 00 18 */ mulli r4, r0, 0x18 -/* 8036AC08 7C DE E8 50 */ subf r6, r30, r29 -/* 8036AC0C C8 22 D0 40 */ lfd f1, lit_445(r2) -/* 8036AC10 54 C3 10 3A */ slwi r3, r6, 2 -/* 8036AC14 7F 44 28 50 */ subf r26, r4, r5 -/* 8036AC18 38 07 00 01 */ addi r0, r7, 1 -/* 8036AC1C 7C 98 1A 14 */ add r4, r24, r3 -/* 8036AC20 38 A1 01 98 */ addi r5, r1, 0x198 -/* 8036AC24 3C 60 43 30 */ lis r3, 0x4330 -/* 8036AC28 7C 09 03 A6 */ mtctr r0 -/* 8036AC2C 41 80 00 40 */ blt lbl_8036AC6C -lbl_8036AC30: -/* 8036AC30 2C 06 00 00 */ cmpwi r6, 0 -/* 8036AC34 40 80 00 0C */ bge lbl_8036AC40 -/* 8036AC38 C8 02 D0 08 */ lfd f0, lit_436(r2) -/* 8036AC3C 48 00 00 1C */ b lbl_8036AC58 -lbl_8036AC40: -/* 8036AC40 80 04 00 00 */ lwz r0, 0(r4) -/* 8036AC44 90 61 02 38 */ stw r3, 0x238(r1) -/* 8036AC48 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8036AC4C 90 01 02 3C */ stw r0, 0x23c(r1) -/* 8036AC50 C8 01 02 38 */ lfd f0, 0x238(r1) -/* 8036AC54 FC 00 08 28 */ fsub f0, f0, f1 -lbl_8036AC58: -/* 8036AC58 D8 05 00 00 */ stfd f0, 0(r5) -/* 8036AC5C 38 A5 00 08 */ addi r5, r5, 8 -/* 8036AC60 38 84 00 04 */ addi r4, r4, 4 -/* 8036AC64 38 C6 00 01 */ addi r6, r6, 1 -/* 8036AC68 42 00 FF C8 */ bdnz lbl_8036AC30 -lbl_8036AC6C: -/* 8036AC6C 38 A1 00 58 */ addi r5, r1, 0x58 -/* 8036AC70 38 E0 00 00 */ li r7, 0 -/* 8036AC74 48 00 01 5C */ b lbl_8036ADD0 -lbl_8036AC78: -/* 8036AC78 2C 1E 00 00 */ cmpwi r30, 0 -/* 8036AC7C C8 82 D0 08 */ lfd f4, lit_436(r2) -/* 8036AC80 38 C0 00 00 */ li r6, 0 -/* 8036AC84 41 80 01 40 */ blt lbl_8036ADC4 -/* 8036AC88 38 1E 00 01 */ addi r0, r30, 1 -/* 8036AC8C 39 3E FF F8 */ addi r9, r30, -8 -/* 8036AC90 2C 00 00 08 */ cmpwi r0, 8 -/* 8036AC94 40 81 00 EC */ ble lbl_8036AD80 -/* 8036AC98 39 09 00 08 */ addi r8, r9, 8 -/* 8036AC9C 7E A4 AB 78 */ mr r4, r21 -/* 8036ACA0 55 08 E8 FE */ srwi r8, r8, 3 -/* 8036ACA4 7C 1E 3A 14 */ add r0, r30, r7 -/* 8036ACA8 38 61 01 98 */ addi r3, r1, 0x198 -/* 8036ACAC 7D 09 03 A6 */ mtctr r8 -/* 8036ACB0 2C 09 00 00 */ cmpwi r9, 0 -/* 8036ACB4 41 80 00 CC */ blt lbl_8036AD80 -lbl_8036ACB8: -/* 8036ACB8 7D 06 00 50 */ subf r8, r6, r0 -/* 8036ACBC 39 26 00 01 */ addi r9, r6, 1 -/* 8036ACC0 55 0A 18 38 */ slwi r10, r8, 3 -/* 8036ACC4 C8 24 00 00 */ lfd f1, 0(r4) -/* 8036ACC8 7C 03 54 AE */ lfdx f0, r3, r10 -/* 8036ACCC 7D 29 00 50 */ subf r9, r9, r0 -/* 8036ACD0 55 2A 18 38 */ slwi r10, r9, 3 -/* 8036ACD4 39 06 00 02 */ addi r8, r6, 2 -/* 8036ACD8 FC 81 20 3A */ fmadd f4, f1, f0, f4 -/* 8036ACDC 7D 28 00 50 */ subf r9, r8, r0 -/* 8036ACE0 39 06 00 03 */ addi r8, r6, 3 -/* 8036ACE4 C8 24 00 08 */ lfd f1, 8(r4) -/* 8036ACE8 7C 03 54 AE */ lfdx f0, r3, r10 -/* 8036ACEC 7D 08 00 50 */ subf r8, r8, r0 -/* 8036ACF0 FC 81 20 3A */ fmadd f4, f1, f0, f4 -/* 8036ACF4 55 29 18 38 */ slwi r9, r9, 3 -/* 8036ACF8 C8 24 00 10 */ lfd f1, 0x10(r4) -/* 8036ACFC 55 0A 18 38 */ slwi r10, r8, 3 -/* 8036AD00 7C 03 4C AE */ lfdx f0, r3, r9 -/* 8036AD04 39 06 00 04 */ addi r8, r6, 4 -/* 8036AD08 FC 81 20 3A */ fmadd f4, f1, f0, f4 -/* 8036AD0C C8 24 00 18 */ lfd f1, 0x18(r4) -/* 8036AD10 7C 03 54 AE */ lfdx f0, r3, r10 -/* 8036AD14 7D 28 00 50 */ subf r9, r8, r0 -/* 8036AD18 55 2A 18 38 */ slwi r10, r9, 3 -/* 8036AD1C 39 06 00 05 */ addi r8, r6, 5 -/* 8036AD20 FC 81 20 3A */ fmadd f4, f1, f0, f4 -/* 8036AD24 C8 44 00 20 */ lfd f2, 0x20(r4) -/* 8036AD28 7C 03 54 AE */ lfdx f0, r3, r10 -/* 8036AD2C 7D 08 00 50 */ subf r8, r8, r0 -/* 8036AD30 55 0A 18 38 */ slwi r10, r8, 3 -/* 8036AD34 39 26 00 06 */ addi r9, r6, 6 -/* 8036AD38 FC 82 20 3A */ fmadd f4, f2, f0, f4 -/* 8036AD3C 7D 29 00 50 */ subf r9, r9, r0 -/* 8036AD40 55 29 18 38 */ slwi r9, r9, 3 -/* 8036AD44 C8 24 00 28 */ lfd f1, 0x28(r4) -/* 8036AD48 7C 03 54 AE */ lfdx f0, r3, r10 -/* 8036AD4C 39 06 00 07 */ addi r8, r6, 7 -/* 8036AD50 FC 81 20 3A */ fmadd f4, f1, f0, f4 -/* 8036AD54 7D 08 00 50 */ subf r8, r8, r0 -/* 8036AD58 55 08 18 38 */ slwi r8, r8, 3 -/* 8036AD5C C8 64 00 30 */ lfd f3, 0x30(r4) -/* 8036AD60 7C 43 4C AE */ lfdx f2, r3, r9 -/* 8036AD64 38 C6 00 08 */ addi r6, r6, 8 -/* 8036AD68 C8 24 00 38 */ lfd f1, 0x38(r4) -/* 8036AD6C FC 83 20 BA */ fmadd f4, f3, f2, f4 -/* 8036AD70 7C 03 44 AE */ lfdx f0, r3, r8 -/* 8036AD74 38 84 00 40 */ addi r4, r4, 0x40 -/* 8036AD78 FC 81 20 3A */ fmadd f4, f1, f0, f4 -/* 8036AD7C 42 00 FF 3C */ bdnz lbl_8036ACB8 -lbl_8036AD80: -/* 8036AD80 38 1E 00 01 */ addi r0, r30, 1 -/* 8036AD84 54 C3 18 38 */ slwi r3, r6, 3 -/* 8036AD88 7C 06 00 50 */ subf r0, r6, r0 -/* 8036AD8C 7D 1E 3A 14 */ add r8, r30, r7 -/* 8036AD90 7C 95 1A 14 */ add r4, r21, r3 -/* 8036AD94 38 61 01 98 */ addi r3, r1, 0x198 -/* 8036AD98 7C 09 03 A6 */ mtctr r0 -/* 8036AD9C 7C 06 F0 00 */ cmpw r6, r30 -/* 8036ADA0 41 81 00 24 */ bgt lbl_8036ADC4 -lbl_8036ADA4: -/* 8036ADA4 7C 06 40 50 */ subf r0, r6, r8 -/* 8036ADA8 C8 24 00 00 */ lfd f1, 0(r4) -/* 8036ADAC 54 00 18 38 */ slwi r0, r0, 3 -/* 8036ADB0 38 84 00 08 */ addi r4, r4, 8 -/* 8036ADB4 7C 03 04 AE */ lfdx f0, r3, r0 -/* 8036ADB8 38 C6 00 01 */ addi r6, r6, 1 -/* 8036ADBC FC 81 20 3A */ fmadd f4, f1, f0, f4 -/* 8036ADC0 42 00 FF E4 */ bdnz lbl_8036ADA4 -lbl_8036ADC4: -/* 8036ADC4 D8 85 00 00 */ stfd f4, 0(r5) -/* 8036ADC8 38 A5 00 08 */ addi r5, r5, 8 -/* 8036ADCC 38 E7 00 01 */ addi r7, r7, 1 -lbl_8036ADD0: -/* 8036ADD0 7C 07 E0 00 */ cmpw r7, r28 -/* 8036ADD4 40 81 FE A4 */ ble lbl_8036AC78 -/* 8036ADD8 22 5A 00 18 */ subfic r18, r26, 0x18 -/* 8036ADDC CB 42 D0 10 */ lfd f26, lit_437(r2) -/* 8036ADE0 CB 62 D0 40 */ lfd f27, lit_445(r2) -/* 8036ADE4 3A 01 00 08 */ addi r16, r1, 8 -/* 8036ADE8 CB 82 D0 18 */ lfd f28, lit_438(r2) -/* 8036ADEC 7F 9F E3 78 */ mr r31, r28 -/* 8036ADF0 CB A2 D0 28 */ lfd f29, lit_440(r2) -/* 8036ADF4 22 3A 00 17 */ subfic r17, r26, 0x17 -/* 8036ADF8 CB C2 D0 20 */ lfd f30, lit_439(r2) -/* 8036ADFC 3A 81 01 98 */ addi r20, r1, 0x198 -/* 8036AE00 CB E2 D0 08 */ lfd f31, lit_436(r2) -/* 8036AE04 3E 60 43 30 */ lis r19, 0x4330 -lbl_8036AE08: -/* 8036AE08 57 E0 18 38 */ slwi r0, r31, 3 -/* 8036AE0C 38 A1 00 58 */ addi r5, r1, 0x58 -/* 8036AE10 7C A5 02 14 */ add r5, r5, r0 -/* 8036AE14 2C 1F 00 00 */ cmpwi r31, 0 -/* 8036AE18 C8 25 00 00 */ lfd f1, 0(r5) -/* 8036AE1C 7E 04 83 78 */ mr r4, r16 -/* 8036AE20 7F E3 FB 78 */ mr r3, r31 -/* 8036AE24 40 81 00 EC */ ble lbl_8036AF10 -/* 8036AE28 57 E0 F8 7F */ rlwinm. r0, r31, 0x1f, 1, 0x1f -/* 8036AE2C 7C 09 03 A6 */ mtctr r0 -/* 8036AE30 41 82 00 94 */ beq lbl_8036AEC4 -lbl_8036AE34: -/* 8036AE34 FC 7A 00 72 */ fmul f3, f26, f1 -/* 8036AE38 92 61 02 40 */ stw r19, 0x240(r1) -/* 8036AE3C C8 05 FF F8 */ lfd f0, -8(r5) -/* 8036AE40 FC 40 18 1E */ fctiwz f2, f3 -/* 8036AE44 D8 41 02 38 */ stfd f2, 0x238(r1) -/* 8036AE48 80 01 02 3C */ lwz r0, 0x23c(r1) -/* 8036AE4C 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8036AE50 90 01 02 44 */ stw r0, 0x244(r1) -/* 8036AE54 C8 41 02 40 */ lfd f2, 0x240(r1) -/* 8036AE58 FC 62 D8 28 */ fsub f3, f2, f27 -/* 8036AE5C 92 61 02 40 */ stw r19, 0x240(r1) -/* 8036AE60 FC 5C 08 FC */ fnmsub f2, f28, f3, f1 -/* 8036AE64 FC 23 00 2A */ fadd f1, f3, f0 -/* 8036AE68 CC 05 FF F0 */ lfdu f0, -0x10(r5) -/* 8036AE6C FC 40 10 1E */ fctiwz f2, f2 -/* 8036AE70 FC 7A 00 72 */ fmul f3, f26, f1 -/* 8036AE74 D8 41 02 48 */ stfd f2, 0x248(r1) -/* 8036AE78 FC 40 18 1E */ fctiwz f2, f3 -/* 8036AE7C 80 01 02 4C */ lwz r0, 0x24c(r1) -/* 8036AE80 90 04 00 00 */ stw r0, 0(r4) -/* 8036AE84 D8 41 02 38 */ stfd f2, 0x238(r1) -/* 8036AE88 80 01 02 3C */ lwz r0, 0x23c(r1) -/* 8036AE8C 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8036AE90 90 01 02 44 */ stw r0, 0x244(r1) -/* 8036AE94 C8 41 02 40 */ lfd f2, 0x240(r1) -/* 8036AE98 FC 62 D8 28 */ fsub f3, f2, f27 -/* 8036AE9C FC 5C 08 FC */ fnmsub f2, f28, f3, f1 -/* 8036AEA0 FC 23 00 2A */ fadd f1, f3, f0 -/* 8036AEA4 FC 40 10 1E */ fctiwz f2, f2 -/* 8036AEA8 D8 41 02 48 */ stfd f2, 0x248(r1) -/* 8036AEAC 80 01 02 4C */ lwz r0, 0x24c(r1) -/* 8036AEB0 90 04 00 04 */ stw r0, 4(r4) -/* 8036AEB4 38 84 00 08 */ addi r4, r4, 8 -/* 8036AEB8 42 00 FF 7C */ bdnz lbl_8036AE34 -/* 8036AEBC 70 63 00 01 */ andi. r3, r3, 1 -/* 8036AEC0 41 82 00 50 */ beq lbl_8036AF10 -lbl_8036AEC4: -/* 8036AEC4 7C 69 03 A6 */ mtctr r3 -lbl_8036AEC8: -/* 8036AEC8 FC 7A 00 72 */ fmul f3, f26, f1 -/* 8036AECC 92 61 02 40 */ stw r19, 0x240(r1) -/* 8036AED0 CC 05 FF F8 */ lfdu f0, -8(r5) -/* 8036AED4 FC 40 18 1E */ fctiwz f2, f3 -/* 8036AED8 D8 41 02 38 */ stfd f2, 0x238(r1) -/* 8036AEDC 80 01 02 3C */ lwz r0, 0x23c(r1) -/* 8036AEE0 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8036AEE4 90 01 02 44 */ stw r0, 0x244(r1) -/* 8036AEE8 C8 41 02 40 */ lfd f2, 0x240(r1) -/* 8036AEEC FC 62 D8 28 */ fsub f3, f2, f27 -/* 8036AEF0 FC 5C 08 FC */ fnmsub f2, f28, f3, f1 -/* 8036AEF4 FC 23 00 2A */ fadd f1, f3, f0 -/* 8036AEF8 FC 40 10 1E */ fctiwz f2, f2 -/* 8036AEFC D8 41 02 48 */ stfd f2, 0x248(r1) -/* 8036AF00 80 01 02 4C */ lwz r0, 0x24c(r1) -/* 8036AF04 90 04 00 00 */ stw r0, 0(r4) -/* 8036AF08 38 84 00 04 */ addi r4, r4, 4 -/* 8036AF0C 42 00 FF BC */ bdnz lbl_8036AEC8 -lbl_8036AF10: -/* 8036AF10 7F 43 D3 78 */ mr r3, r26 -/* 8036AF14 48 00 13 BD */ bl ldexp -/* 8036AF18 FF 20 08 90 */ fmr f25, f1 -/* 8036AF1C FC 3D 06 72 */ fmul f1, f29, f25 -/* 8036AF20 48 00 11 DD */ bl floor -/* 8036AF24 FF 3E C8 7C */ fnmsub f25, f30, f1, f25 -/* 8036AF28 92 61 02 40 */ stw r19, 0x240(r1) -/* 8036AF2C 2C 1A 00 00 */ cmpwi r26, 0 -/* 8036AF30 3B 20 00 00 */ li r25, 0 -/* 8036AF34 FC 00 C8 1E */ fctiwz f0, f25 -/* 8036AF38 D8 01 02 48 */ stfd f0, 0x248(r1) -/* 8036AF3C 83 61 02 4C */ lwz r27, 0x24c(r1) -/* 8036AF40 6F 60 80 00 */ xoris r0, r27, 0x8000 -/* 8036AF44 90 01 02 44 */ stw r0, 0x244(r1) -/* 8036AF48 C8 01 02 40 */ lfd f0, 0x240(r1) -/* 8036AF4C FC 00 D8 28 */ fsub f0, f0, f27 -/* 8036AF50 FF 39 00 28 */ fsub f25, f25, f0 -/* 8036AF54 40 81 00 34 */ ble lbl_8036AF88 -/* 8036AF58 57 E3 10 3A */ slwi r3, r31, 2 -/* 8036AF5C 38 81 00 08 */ addi r4, r1, 8 -/* 8036AF60 38 A3 FF FC */ addi r5, r3, -4 -/* 8036AF64 7C 64 28 2E */ lwzx r3, r4, r5 -/* 8036AF68 7C 66 96 30 */ sraw r6, r3, r18 -/* 8036AF6C 7C C0 90 30 */ slw r0, r6, r18 -/* 8036AF70 7C 00 18 50 */ subf r0, r0, r3 -/* 8036AF74 7F 7B 32 14 */ add r27, r27, r6 -/* 8036AF78 7C 04 29 2E */ stwx r0, r4, r5 -/* 8036AF7C 7C 04 28 2E */ lwzx r0, r4, r5 -/* 8036AF80 7C 19 8E 30 */ sraw r25, r0, r17 -/* 8036AF84 48 00 00 34 */ b lbl_8036AFB8 -lbl_8036AF88: -/* 8036AF88 40 82 00 1C */ bne lbl_8036AFA4 -/* 8036AF8C 57 E4 10 3A */ slwi r4, r31, 2 -/* 8036AF90 38 61 00 08 */ addi r3, r1, 8 -/* 8036AF94 38 04 FF FC */ addi r0, r4, -4 -/* 8036AF98 7C 03 00 2E */ lwzx r0, r3, r0 -/* 8036AF9C 7C 19 BE 70 */ srawi r25, r0, 0x17 -/* 8036AFA0 48 00 00 18 */ b lbl_8036AFB8 -lbl_8036AFA4: -/* 8036AFA4 C8 02 D0 30 */ lfd f0, lit_441(r2) -/* 8036AFA8 FC 19 00 40 */ fcmpo cr0, f25, f0 -/* 8036AFAC 4C 41 13 82 */ cror 2, 1, 2 -/* 8036AFB0 40 82 00 08 */ bne lbl_8036AFB8 -/* 8036AFB4 3B 20 00 02 */ li r25, 2 -lbl_8036AFB8: -/* 8036AFB8 2C 19 00 00 */ cmpwi r25, 0 -/* 8036AFBC 40 81 00 D0 */ ble lbl_8036B08C -/* 8036AFC0 3C A0 01 00 */ lis r5, 0x0100 /* 0x00FFFFFF@ha */ -/* 8036AFC4 7E 06 83 78 */ mr r6, r16 -/* 8036AFC8 38 00 00 00 */ li r0, 0 -/* 8036AFCC 38 85 FF FF */ addi r4, r5, 0xFFFF /* 0x00FFFFFF@l */ -/* 8036AFD0 7F E9 03 A6 */ mtctr r31 -/* 8036AFD4 2C 1F 00 00 */ cmpwi r31, 0 -/* 8036AFD8 3B 7B 00 01 */ addi r27, r27, 1 -/* 8036AFDC 40 81 00 38 */ ble lbl_8036B014 -lbl_8036AFE0: -/* 8036AFE0 2C 00 00 00 */ cmpwi r0, 0 -/* 8036AFE4 80 66 00 00 */ lwz r3, 0(r6) -/* 8036AFE8 40 82 00 1C */ bne lbl_8036B004 -/* 8036AFEC 2C 03 00 00 */ cmpwi r3, 0 -/* 8036AFF0 41 82 00 1C */ beq lbl_8036B00C -/* 8036AFF4 7C 63 28 50 */ subf r3, r3, r5 -/* 8036AFF8 38 00 00 01 */ li r0, 1 -/* 8036AFFC 90 66 00 00 */ stw r3, 0(r6) -/* 8036B000 48 00 00 0C */ b lbl_8036B00C -lbl_8036B004: -/* 8036B004 7C 63 20 50 */ subf r3, r3, r4 -/* 8036B008 90 66 00 00 */ stw r3, 0(r6) -lbl_8036B00C: -/* 8036B00C 38 C6 00 04 */ addi r6, r6, 4 -/* 8036B010 42 00 FF D0 */ bdnz lbl_8036AFE0 -lbl_8036B014: -/* 8036B014 2C 1A 00 00 */ cmpwi r26, 0 -/* 8036B018 40 81 00 50 */ ble lbl_8036B068 -/* 8036B01C 2C 1A 00 02 */ cmpwi r26, 2 -/* 8036B020 41 82 00 30 */ beq lbl_8036B050 -/* 8036B024 40 80 00 44 */ bge lbl_8036B068 -/* 8036B028 2C 1A 00 01 */ cmpwi r26, 1 -/* 8036B02C 40 80 00 08 */ bge lbl_8036B034 -/* 8036B030 48 00 00 38 */ b lbl_8036B068 -lbl_8036B034: -/* 8036B034 57 E3 10 3A */ slwi r3, r31, 2 -/* 8036B038 38 A1 00 08 */ addi r5, r1, 8 -/* 8036B03C 38 83 FF FC */ addi r4, r3, -4 -/* 8036B040 7C 65 20 2E */ lwzx r3, r5, r4 -/* 8036B044 54 63 02 7E */ clrlwi r3, r3, 9 -/* 8036B048 7C 65 21 2E */ stwx r3, r5, r4 -/* 8036B04C 48 00 00 1C */ b lbl_8036B068 -lbl_8036B050: -/* 8036B050 57 E3 10 3A */ slwi r3, r31, 2 -/* 8036B054 38 A1 00 08 */ addi r5, r1, 8 -/* 8036B058 38 83 FF FC */ addi r4, r3, -4 -/* 8036B05C 7C 65 20 2E */ lwzx r3, r5, r4 -/* 8036B060 54 63 02 BE */ clrlwi r3, r3, 0xa -/* 8036B064 7C 65 21 2E */ stwx r3, r5, r4 -lbl_8036B068: -/* 8036B068 2C 19 00 02 */ cmpwi r25, 2 -/* 8036B06C 40 82 00 20 */ bne lbl_8036B08C -/* 8036B070 C8 22 D0 38 */ lfd f1, lit_442(r2) -/* 8036B074 2C 00 00 00 */ cmpwi r0, 0 -/* 8036B078 FF 21 C8 28 */ fsub f25, f1, f25 -/* 8036B07C 41 82 00 10 */ beq lbl_8036B08C -/* 8036B080 7F 43 D3 78 */ mr r3, r26 -/* 8036B084 48 00 12 4D */ bl ldexp -/* 8036B088 FF 39 08 28 */ fsub f25, f25, f1 -lbl_8036B08C: -/* 8036B08C FC 1F C8 00 */ fcmpu cr0, f31, f25 -/* 8036B090 40 82 02 64 */ bne lbl_8036B2F4 -/* 8036B094 38 7F FF FF */ addi r3, r31, -1 -/* 8036B098 38 81 00 08 */ addi r4, r1, 8 -/* 8036B09C 7C 03 E0 00 */ cmpw r3, r28 -/* 8036B0A0 38 A0 00 00 */ li r5, 0 -/* 8036B0A4 54 60 10 3A */ slwi r0, r3, 2 -/* 8036B0A8 38 63 00 01 */ addi r3, r3, 1 -/* 8036B0AC 7C 84 02 14 */ add r4, r4, r0 -/* 8036B0B0 7C 7C 18 50 */ subf r3, r28, r3 -/* 8036B0B4 41 80 00 74 */ blt lbl_8036B128 -/* 8036B0B8 54 60 E8 FF */ rlwinm. r0, r3, 0x1d, 3, 0x1f -/* 8036B0BC 7C 09 03 A6 */ mtctr r0 -/* 8036B0C0 41 82 00 54 */ beq lbl_8036B114 -lbl_8036B0C4: -/* 8036B0C4 80 04 00 00 */ lwz r0, 0(r4) -/* 8036B0C8 7C A5 03 78 */ or r5, r5, r0 -/* 8036B0CC 80 04 FF FC */ lwz r0, -4(r4) -/* 8036B0D0 7C A5 03 78 */ or r5, r5, r0 -/* 8036B0D4 80 04 FF F8 */ lwz r0, -8(r4) -/* 8036B0D8 7C A5 03 78 */ or r5, r5, r0 -/* 8036B0DC 80 04 FF F4 */ lwz r0, -0xc(r4) -/* 8036B0E0 7C A5 03 78 */ or r5, r5, r0 -/* 8036B0E4 80 04 FF F0 */ lwz r0, -0x10(r4) -/* 8036B0E8 7C A5 03 78 */ or r5, r5, r0 -/* 8036B0EC 80 04 FF EC */ lwz r0, -0x14(r4) -/* 8036B0F0 7C A5 03 78 */ or r5, r5, r0 -/* 8036B0F4 80 04 FF E8 */ lwz r0, -0x18(r4) -/* 8036B0F8 7C A5 03 78 */ or r5, r5, r0 -/* 8036B0FC 80 04 FF E4 */ lwz r0, -0x1c(r4) -/* 8036B100 38 84 FF E0 */ addi r4, r4, -32 -/* 8036B104 7C A5 03 78 */ or r5, r5, r0 -/* 8036B108 42 00 FF BC */ bdnz lbl_8036B0C4 -/* 8036B10C 70 63 00 07 */ andi. r3, r3, 7 -/* 8036B110 41 82 00 18 */ beq lbl_8036B128 -lbl_8036B114: -/* 8036B114 7C 69 03 A6 */ mtctr r3 -lbl_8036B118: -/* 8036B118 80 04 00 00 */ lwz r0, 0(r4) -/* 8036B11C 38 84 FF FC */ addi r4, r4, -4 -/* 8036B120 7C A5 03 78 */ or r5, r5, r0 -/* 8036B124 42 00 FF F4 */ bdnz lbl_8036B118 -lbl_8036B128: -/* 8036B128 2C 05 00 00 */ cmpwi r5, 0 -/* 8036B12C 40 82 01 C8 */ bne lbl_8036B2F4 -/* 8036B130 39 40 00 01 */ li r10, 1 -/* 8036B134 48 00 00 08 */ b lbl_8036B13C -lbl_8036B138: -/* 8036B138 39 4A 00 01 */ addi r10, r10, 1 -lbl_8036B13C: -/* 8036B13C 7C 0A E0 50 */ subf r0, r10, r28 -/* 8036B140 54 00 10 3A */ slwi r0, r0, 2 -/* 8036B144 7C 10 00 2E */ lwzx r0, r16, r0 -/* 8036B148 2C 00 00 00 */ cmpwi r0, 0 -/* 8036B14C 41 82 FF EC */ beq lbl_8036B138 -/* 8036B150 39 3F 00 01 */ addi r9, r31, 1 -/* 8036B154 38 A1 00 58 */ addi r5, r1, 0x58 -/* 8036B158 55 20 18 38 */ slwi r0, r9, 3 -/* 8036B15C 7C DF 52 14 */ add r6, r31, r10 -/* 8036B160 7C A5 02 14 */ add r5, r5, r0 -/* 8036B164 48 00 01 80 */ b lbl_8036B2E4 -lbl_8036B168: -/* 8036B168 7C 1D 4A 14 */ add r0, r29, r9 -/* 8036B16C 7C FE 4A 14 */ add r7, r30, r9 -/* 8036B170 54 00 10 3A */ slwi r0, r0, 2 -/* 8036B174 92 61 02 48 */ stw r19, 0x248(r1) -/* 8036B178 7C 78 00 2E */ lwzx r3, r24, r0 -/* 8036B17C 2C 1E 00 00 */ cmpwi r30, 0 -/* 8036B180 54 E0 18 38 */ slwi r0, r7, 3 -/* 8036B184 C8 82 D0 08 */ lfd f4, lit_436(r2) -/* 8036B188 6C 63 80 00 */ xoris r3, r3, 0x8000 -/* 8036B18C 39 00 00 00 */ li r8, 0 -/* 8036B190 90 61 02 4C */ stw r3, 0x24c(r1) -/* 8036B194 C8 01 02 48 */ lfd f0, 0x248(r1) -/* 8036B198 FC 00 D8 28 */ fsub f0, f0, f27 -/* 8036B19C 7C 14 05 AE */ stfdx f0, r20, r0 -/* 8036B1A0 41 80 01 38 */ blt lbl_8036B2D8 -/* 8036B1A4 38 1E 00 01 */ addi r0, r30, 1 -/* 8036B1A8 39 7E FF F8 */ addi r11, r30, -8 -/* 8036B1AC 2C 00 00 08 */ cmpwi r0, 8 -/* 8036B1B0 40 81 00 E8 */ ble lbl_8036B298 -/* 8036B1B4 38 0B 00 08 */ addi r0, r11, 8 -/* 8036B1B8 7E A4 AB 78 */ mr r4, r21 -/* 8036B1BC 54 00 E8 FE */ srwi r0, r0, 3 -/* 8036B1C0 38 61 01 98 */ addi r3, r1, 0x198 -/* 8036B1C4 7C 09 03 A6 */ mtctr r0 -/* 8036B1C8 2C 0B 00 00 */ cmpwi r11, 0 -/* 8036B1CC 41 80 00 CC */ blt lbl_8036B298 -lbl_8036B1D0: -/* 8036B1D0 7D 68 38 50 */ subf r11, r8, r7 -/* 8036B1D4 38 08 00 01 */ addi r0, r8, 1 -/* 8036B1D8 55 6C 18 38 */ slwi r12, r11, 3 -/* 8036B1DC C8 24 00 00 */ lfd f1, 0(r4) -/* 8036B1E0 7C 03 64 AE */ lfdx f0, r3, r12 -/* 8036B1E4 7C 00 38 50 */ subf r0, r0, r7 -/* 8036B1E8 39 68 00 02 */ addi r11, r8, 2 -/* 8036B1EC C8 44 00 20 */ lfd f2, 0x20(r4) -/* 8036B1F0 FC 81 20 3A */ fmadd f4, f1, f0, f4 -/* 8036B1F4 7D 8B 38 50 */ subf r12, r11, r7 -/* 8036B1F8 54 00 18 38 */ slwi r0, r0, 3 -/* 8036B1FC 39 68 00 03 */ addi r11, r8, 3 -/* 8036B200 7C 03 04 AE */ lfdx f0, r3, r0 -/* 8036B204 55 99 18 38 */ slwi r25, r12, 3 -/* 8036B208 C8 24 00 08 */ lfd f1, 8(r4) -/* 8036B20C 7D 6B 38 50 */ subf r11, r11, r7 -/* 8036B210 55 6C 18 38 */ slwi r12, r11, 3 -/* 8036B214 38 08 00 04 */ addi r0, r8, 4 -/* 8036B218 FC 81 20 3A */ fmadd f4, f1, f0, f4 -/* 8036B21C C8 24 00 10 */ lfd f1, 0x10(r4) -/* 8036B220 7C 03 CC AE */ lfdx f0, r3, r25 -/* 8036B224 7D 60 38 50 */ subf r11, r0, r7 -/* 8036B228 38 08 00 05 */ addi r0, r8, 5 -/* 8036B22C C8 64 00 30 */ lfd f3, 0x30(r4) -/* 8036B230 FC 81 20 3A */ fmadd f4, f1, f0, f4 -/* 8036B234 7C 03 64 AE */ lfdx f0, r3, r12 -/* 8036B238 C8 24 00 18 */ lfd f1, 0x18(r4) -/* 8036B23C 55 6C 18 38 */ slwi r12, r11, 3 -/* 8036B240 39 68 00 06 */ addi r11, r8, 6 -/* 8036B244 7C 00 38 50 */ subf r0, r0, r7 -/* 8036B248 FC 81 20 3A */ fmadd f4, f1, f0, f4 -/* 8036B24C 7C 03 64 AE */ lfdx f0, r3, r12 -/* 8036B250 54 0C 18 38 */ slwi r12, r0, 3 -/* 8036B254 C8 24 00 28 */ lfd f1, 0x28(r4) -/* 8036B258 38 08 00 07 */ addi r0, r8, 7 -/* 8036B25C 7D 6B 38 50 */ subf r11, r11, r7 -/* 8036B260 FC 82 20 3A */ fmadd f4, f2, f0, f4 -/* 8036B264 7C 03 64 AE */ lfdx f0, r3, r12 -/* 8036B268 55 6B 18 38 */ slwi r11, r11, 3 -/* 8036B26C 7C 00 38 50 */ subf r0, r0, r7 -/* 8036B270 7C 43 5C AE */ lfdx f2, r3, r11 -/* 8036B274 54 00 18 38 */ slwi r0, r0, 3 -/* 8036B278 FC 81 20 3A */ fmadd f4, f1, f0, f4 -/* 8036B27C C8 24 00 38 */ lfd f1, 0x38(r4) -/* 8036B280 7C 03 04 AE */ lfdx f0, r3, r0 -/* 8036B284 38 84 00 40 */ addi r4, r4, 0x40 -/* 8036B288 39 08 00 08 */ addi r8, r8, 8 -/* 8036B28C FC 83 20 BA */ fmadd f4, f3, f2, f4 -/* 8036B290 FC 81 20 3A */ fmadd f4, f1, f0, f4 -/* 8036B294 42 00 FF 3C */ bdnz lbl_8036B1D0 -lbl_8036B298: -/* 8036B298 38 1E 00 01 */ addi r0, r30, 1 -/* 8036B29C 55 04 18 38 */ slwi r4, r8, 3 -/* 8036B2A0 7C 08 00 50 */ subf r0, r8, r0 -/* 8036B2A4 38 61 01 98 */ addi r3, r1, 0x198 -/* 8036B2A8 7C 95 22 14 */ add r4, r21, r4 -/* 8036B2AC 7C 09 03 A6 */ mtctr r0 -/* 8036B2B0 7C 08 F0 00 */ cmpw r8, r30 -/* 8036B2B4 41 81 00 24 */ bgt lbl_8036B2D8 -lbl_8036B2B8: -/* 8036B2B8 7C 08 38 50 */ subf r0, r8, r7 -/* 8036B2BC C8 24 00 00 */ lfd f1, 0(r4) -/* 8036B2C0 54 00 18 38 */ slwi r0, r0, 3 -/* 8036B2C4 38 84 00 08 */ addi r4, r4, 8 -/* 8036B2C8 7C 03 04 AE */ lfdx f0, r3, r0 -/* 8036B2CC 39 08 00 01 */ addi r8, r8, 1 -/* 8036B2D0 FC 81 20 3A */ fmadd f4, f1, f0, f4 -/* 8036B2D4 42 00 FF E4 */ bdnz lbl_8036B2B8 -lbl_8036B2D8: -/* 8036B2D8 D8 85 00 00 */ stfd f4, 0(r5) -/* 8036B2DC 38 A5 00 08 */ addi r5, r5, 8 -/* 8036B2E0 39 29 00 01 */ addi r9, r9, 1 -lbl_8036B2E4: -/* 8036B2E4 7C 09 30 00 */ cmpw r9, r6 -/* 8036B2E8 40 81 FE 80 */ ble lbl_8036B168 -/* 8036B2EC 7F FF 52 14 */ add r31, r31, r10 -/* 8036B2F0 4B FF FB 18 */ b lbl_8036AE08 -lbl_8036B2F4: -/* 8036B2F4 C8 02 D0 08 */ lfd f0, lit_436(r2) -/* 8036B2F8 FC 00 C8 00 */ fcmpu cr0, f0, f25 -/* 8036B2FC 40 82 00 38 */ bne lbl_8036B334 -/* 8036B300 3B FF FF FF */ addi r31, r31, -1 -/* 8036B304 38 61 00 08 */ addi r3, r1, 8 -/* 8036B308 57 E0 10 3A */ slwi r0, r31, 2 -/* 8036B30C 3B 5A FF E8 */ addi r26, r26, -24 -/* 8036B310 7C 63 02 14 */ add r3, r3, r0 -/* 8036B314 48 00 00 10 */ b lbl_8036B324 -lbl_8036B318: -/* 8036B318 38 63 FF FC */ addi r3, r3, -4 -/* 8036B31C 3B FF FF FF */ addi r31, r31, -1 -/* 8036B320 3B 5A FF E8 */ addi r26, r26, -24 -lbl_8036B324: -/* 8036B324 80 03 00 00 */ lwz r0, 0(r3) -/* 8036B328 2C 00 00 00 */ cmpwi r0, 0 -/* 8036B32C 41 82 FF EC */ beq lbl_8036B318 -/* 8036B330 48 00 00 A4 */ b lbl_8036B3D4 -lbl_8036B334: -/* 8036B334 FC 20 C8 90 */ fmr f1, f25 -/* 8036B338 7C 7A 00 D0 */ neg r3, r26 -/* 8036B33C 48 00 0F 95 */ bl ldexp -/* 8036B340 C8 62 D0 18 */ lfd f3, lit_438(r2) -/* 8036B344 FC 01 18 40 */ fcmpo cr0, f1, f3 -/* 8036B348 4C 41 13 82 */ cror 2, 1, 2 -/* 8036B34C 40 82 00 70 */ bne lbl_8036B3BC -/* 8036B350 C8 02 D0 10 */ lfd f0, lit_437(r2) -/* 8036B354 3C 00 43 30 */ lis r0, 0x4330 -/* 8036B358 57 E5 10 3A */ slwi r5, r31, 2 -/* 8036B35C 90 01 02 40 */ stw r0, 0x240(r1) -/* 8036B360 FC 00 00 72 */ fmul f0, f0, f1 -/* 8036B364 3B FF 00 01 */ addi r31, r31, 1 -/* 8036B368 C8 42 D0 40 */ lfd f2, lit_445(r2) -/* 8036B36C 38 81 00 08 */ addi r4, r1, 8 -/* 8036B370 57 E0 10 3A */ slwi r0, r31, 2 -/* 8036B374 3B 5A 00 18 */ addi r26, r26, 0x18 -/* 8036B378 FC 00 00 1E */ fctiwz f0, f0 -/* 8036B37C D8 01 02 48 */ stfd f0, 0x248(r1) -/* 8036B380 80 61 02 4C */ lwz r3, 0x24c(r1) -/* 8036B384 6C 63 80 00 */ xoris r3, r3, 0x8000 -/* 8036B388 90 61 02 44 */ stw r3, 0x244(r1) -/* 8036B38C C8 01 02 40 */ lfd f0, 0x240(r1) -/* 8036B390 FC 00 10 28 */ fsub f0, f0, f2 -/* 8036B394 FC 23 08 3C */ fnmsub f1, f3, f0, f1 -/* 8036B398 FC 00 00 1E */ fctiwz f0, f0 -/* 8036B39C FC 20 08 1E */ fctiwz f1, f1 -/* 8036B3A0 D8 01 02 50 */ stfd f0, 0x250(r1) -/* 8036B3A4 D8 21 02 38 */ stfd f1, 0x238(r1) -/* 8036B3A8 80 61 02 54 */ lwz r3, 0x254(r1) -/* 8036B3AC 80 C1 02 3C */ lwz r6, 0x23c(r1) -/* 8036B3B0 7C C4 29 2E */ stwx r6, r4, r5 -/* 8036B3B4 7C 64 01 2E */ stwx r3, r4, r0 -/* 8036B3B8 48 00 00 1C */ b lbl_8036B3D4 -lbl_8036B3BC: -/* 8036B3BC FC 00 08 1E */ fctiwz f0, f1 -/* 8036B3C0 57 E0 10 3A */ slwi r0, r31, 2 -/* 8036B3C4 38 61 00 08 */ addi r3, r1, 8 -/* 8036B3C8 D8 01 02 50 */ stfd f0, 0x250(r1) -/* 8036B3CC 80 81 02 54 */ lwz r4, 0x254(r1) -/* 8036B3D0 7C 83 01 2E */ stwx r4, r3, r0 -lbl_8036B3D4: -/* 8036B3D4 C8 22 D0 38 */ lfd f1, lit_442(r2) -/* 8036B3D8 7F 43 D3 78 */ mr r3, r26 -/* 8036B3DC 48 00 0E F5 */ bl ldexp -/* 8036B3E0 2C 1F 00 00 */ cmpwi r31, 0 -/* 8036B3E4 57 E0 10 3A */ slwi r0, r31, 2 -/* 8036B3E8 38 C1 00 08 */ addi r6, r1, 8 -/* 8036B3EC 57 E8 18 38 */ slwi r8, r31, 3 -/* 8036B3F0 38 E1 00 58 */ addi r7, r1, 0x58 -/* 8036B3F4 C8 A2 D0 40 */ lfd f5, lit_445(r2) -/* 8036B3F8 C8 02 D0 10 */ lfd f0, lit_437(r2) -/* 8036B3FC 7C C6 02 14 */ add r6, r6, r0 -/* 8036B400 7C E7 42 14 */ add r7, r7, r8 -/* 8036B404 38 7F 00 01 */ addi r3, r31, 1 -/* 8036B408 3C 80 43 30 */ lis r4, 0x4330 -/* 8036B40C 41 80 00 E8 */ blt lbl_8036B4F4 -/* 8036B410 54 60 F0 BF */ rlwinm. r0, r3, 0x1e, 2, 0x1f -/* 8036B414 7C 09 03 A6 */ mtctr r0 -/* 8036B418 41 82 00 A8 */ beq lbl_8036B4C0 -lbl_8036B41C: -/* 8036B41C 80 A6 00 00 */ lwz r5, 0(r6) -/* 8036B420 90 81 02 50 */ stw r4, 0x250(r1) -/* 8036B424 6C A0 80 00 */ xoris r0, r5, 0x8000 -/* 8036B428 80 A6 FF FC */ lwz r5, -4(r6) -/* 8036B42C 90 01 02 54 */ stw r0, 0x254(r1) -/* 8036B430 6C A0 80 00 */ xoris r0, r5, 0x8000 -/* 8036B434 80 A6 FF F8 */ lwz r5, -8(r6) -/* 8036B438 C8 81 02 50 */ lfd f4, 0x250(r1) -/* 8036B43C 90 01 02 54 */ stw r0, 0x254(r1) -/* 8036B440 FC 64 28 28 */ fsub f3, f4, f5 -/* 8036B444 6C A0 80 00 */ xoris r0, r5, 0x8000 -/* 8036B448 80 A6 FF F4 */ lwz r5, -0xc(r6) -/* 8036B44C 90 81 02 50 */ stw r4, 0x250(r1) -/* 8036B450 38 C6 FF F0 */ addi r6, r6, -16 -/* 8036B454 FC 41 00 F2 */ fmul f2, f1, f3 -/* 8036B458 C8 81 02 50 */ lfd f4, 0x250(r1) -/* 8036B45C FC 21 00 32 */ fmul f1, f1, f0 -/* 8036B460 90 01 02 54 */ stw r0, 0x254(r1) -/* 8036B464 6C A0 80 00 */ xoris r0, r5, 0x8000 -/* 8036B468 FC 64 28 28 */ fsub f3, f4, f5 -/* 8036B46C 90 81 02 50 */ stw r4, 0x250(r1) -/* 8036B470 C8 81 02 50 */ lfd f4, 0x250(r1) -/* 8036B474 D8 47 00 00 */ stfd f2, 0(r7) -/* 8036B478 FC 41 00 F2 */ fmul f2, f1, f3 -/* 8036B47C FC 21 00 32 */ fmul f1, f1, f0 -/* 8036B480 90 01 02 54 */ stw r0, 0x254(r1) -/* 8036B484 90 81 02 50 */ stw r4, 0x250(r1) -/* 8036B488 FC 64 28 28 */ fsub f3, f4, f5 -/* 8036B48C D8 47 FF F8 */ stfd f2, -8(r7) -/* 8036B490 FC 41 00 F2 */ fmul f2, f1, f3 -/* 8036B494 C8 81 02 50 */ lfd f4, 0x250(r1) -/* 8036B498 FC 21 00 32 */ fmul f1, f1, f0 -/* 8036B49C FC 64 28 28 */ fsub f3, f4, f5 -/* 8036B4A0 D8 47 FF F0 */ stfd f2, -0x10(r7) -/* 8036B4A4 FC 41 00 F2 */ fmul f2, f1, f3 -/* 8036B4A8 FC 21 00 32 */ fmul f1, f1, f0 -/* 8036B4AC D8 47 FF E8 */ stfd f2, -0x18(r7) -/* 8036B4B0 38 E7 FF E0 */ addi r7, r7, -32 -/* 8036B4B4 42 00 FF 68 */ bdnz lbl_8036B41C -/* 8036B4B8 70 63 00 03 */ andi. r3, r3, 3 -/* 8036B4BC 41 82 00 38 */ beq lbl_8036B4F4 -lbl_8036B4C0: -/* 8036B4C0 7C 69 03 A6 */ mtctr r3 -lbl_8036B4C4: -/* 8036B4C4 80 A6 00 00 */ lwz r5, 0(r6) -/* 8036B4C8 38 C6 FF FC */ addi r6, r6, -4 -/* 8036B4CC 90 81 02 50 */ stw r4, 0x250(r1) -/* 8036B4D0 6C A0 80 00 */ xoris r0, r5, 0x8000 -/* 8036B4D4 90 01 02 54 */ stw r0, 0x254(r1) -/* 8036B4D8 C8 81 02 50 */ lfd f4, 0x250(r1) -/* 8036B4DC FC 64 28 28 */ fsub f3, f4, f5 -/* 8036B4E0 FC 41 00 F2 */ fmul f2, f1, f3 -/* 8036B4E4 FC 21 00 32 */ fmul f1, f1, f0 -/* 8036B4E8 D8 47 00 00 */ stfd f2, 0(r7) -/* 8036B4EC 38 E7 FF F8 */ addi r7, r7, -8 -/* 8036B4F0 42 00 FF D4 */ bdnz lbl_8036B4C4 -lbl_8036B4F4: -/* 8036B4F4 3C 60 80 3A */ lis r3, PIo2@ha /* 0x803A2548@ha */ -/* 8036B4F8 38 1F 00 01 */ addi r0, r31, 1 -/* 8036B4FC 7F E9 FB 78 */ mr r9, r31 -/* 8036B500 38 81 00 58 */ addi r4, r1, 0x58 -/* 8036B504 38 A3 25 48 */ addi r5, r3, PIo2@l /* 0x803A2548@l */ -/* 8036B508 38 61 00 F8 */ addi r3, r1, 0xf8 -/* 8036B50C 7C 09 03 A6 */ mtctr r0 -/* 8036B510 2C 1F 00 00 */ cmpwi r31, 0 -/* 8036B514 41 80 00 54 */ blt lbl_8036B568 -lbl_8036B518: -/* 8036B518 C8 42 D0 08 */ lfd f2, lit_436(r2) -/* 8036B51C 7C A6 2B 78 */ mr r6, r5 -/* 8036B520 7C E9 F8 50 */ subf r7, r9, r31 -/* 8036B524 39 40 00 00 */ li r10, 0 -/* 8036B528 48 00 00 20 */ b lbl_8036B548 -lbl_8036B52C: -/* 8036B52C 7C 09 52 14 */ add r0, r9, r10 -/* 8036B530 C8 26 00 00 */ lfd f1, 0(r6) -/* 8036B534 54 00 18 38 */ slwi r0, r0, 3 -/* 8036B538 38 C6 00 08 */ addi r6, r6, 8 -/* 8036B53C 7C 04 04 AE */ lfdx f0, r4, r0 -/* 8036B540 39 4A 00 01 */ addi r10, r10, 1 -/* 8036B544 FC 41 10 3A */ fmadd f2, f1, f0, f2 -lbl_8036B548: -/* 8036B548 7C 0A E0 00 */ cmpw r10, r28 -/* 8036B54C 41 81 00 0C */ bgt lbl_8036B558 -/* 8036B550 7C 0A 38 00 */ cmpw r10, r7 -/* 8036B554 40 81 FF D8 */ ble lbl_8036B52C -lbl_8036B558: -/* 8036B558 54 E0 18 38 */ slwi r0, r7, 3 -/* 8036B55C 39 29 FF FF */ addi r9, r9, -1 -/* 8036B560 7C 43 05 AE */ stfdx f2, r3, r0 -/* 8036B564 42 00 FF B4 */ bdnz lbl_8036B518 -lbl_8036B568: -/* 8036B568 2C 17 00 03 */ cmpwi r23, 3 -/* 8036B56C 41 82 02 24 */ beq lbl_8036B790 -/* 8036B570 40 80 04 60 */ bge lbl_8036B9D0 -/* 8036B574 2C 17 00 00 */ cmpwi r23, 0 -/* 8036B578 41 82 00 0C */ beq lbl_8036B584 -/* 8036B57C 40 80 00 A8 */ bge lbl_8036B624 -/* 8036B580 48 00 04 50 */ b lbl_8036B9D0 -lbl_8036B584: -/* 8036B584 2C 1F 00 00 */ cmpwi r31, 0 -/* 8036B588 38 81 00 F8 */ addi r4, r1, 0xf8 -/* 8036B58C C8 22 D0 08 */ lfd f1, lit_436(r2) -/* 8036B590 7C 84 42 14 */ add r4, r4, r8 -/* 8036B594 38 7F 00 01 */ addi r3, r31, 1 -/* 8036B598 41 80 00 74 */ blt lbl_8036B60C -/* 8036B59C 54 60 E8 FF */ rlwinm. r0, r3, 0x1d, 3, 0x1f -/* 8036B5A0 7C 09 03 A6 */ mtctr r0 -/* 8036B5A4 41 82 00 54 */ beq lbl_8036B5F8 -lbl_8036B5A8: -/* 8036B5A8 C8 04 00 00 */ lfd f0, 0(r4) -/* 8036B5AC FC 21 00 2A */ fadd f1, f1, f0 -/* 8036B5B0 C8 04 FF F8 */ lfd f0, -8(r4) -/* 8036B5B4 FC 21 00 2A */ fadd f1, f1, f0 -/* 8036B5B8 C8 04 FF F0 */ lfd f0, -0x10(r4) -/* 8036B5BC FC 21 00 2A */ fadd f1, f1, f0 -/* 8036B5C0 C8 04 FF E8 */ lfd f0, -0x18(r4) -/* 8036B5C4 FC 21 00 2A */ fadd f1, f1, f0 -/* 8036B5C8 C8 04 FF E0 */ lfd f0, -0x20(r4) -/* 8036B5CC FC 21 00 2A */ fadd f1, f1, f0 -/* 8036B5D0 C8 04 FF D8 */ lfd f0, -0x28(r4) -/* 8036B5D4 FC 21 00 2A */ fadd f1, f1, f0 -/* 8036B5D8 C8 04 FF D0 */ lfd f0, -0x30(r4) -/* 8036B5DC FC 21 00 2A */ fadd f1, f1, f0 -/* 8036B5E0 C8 04 FF C8 */ lfd f0, -0x38(r4) -/* 8036B5E4 38 84 FF C0 */ addi r4, r4, -64 -/* 8036B5E8 FC 21 00 2A */ fadd f1, f1, f0 -/* 8036B5EC 42 00 FF BC */ bdnz lbl_8036B5A8 -/* 8036B5F0 70 63 00 07 */ andi. r3, r3, 7 -/* 8036B5F4 41 82 00 18 */ beq lbl_8036B60C -lbl_8036B5F8: -/* 8036B5F8 7C 69 03 A6 */ mtctr r3 -lbl_8036B5FC: -/* 8036B5FC C8 04 00 00 */ lfd f0, 0(r4) -/* 8036B600 38 84 FF F8 */ addi r4, r4, -8 -/* 8036B604 FC 21 00 2A */ fadd f1, f1, f0 -/* 8036B608 42 00 FF F4 */ bdnz lbl_8036B5FC -lbl_8036B60C: -/* 8036B60C 2C 19 00 00 */ cmpwi r25, 0 -/* 8036B610 40 82 00 08 */ bne lbl_8036B618 -/* 8036B614 48 00 00 08 */ b lbl_8036B61C -lbl_8036B618: -/* 8036B618 FC 20 08 50 */ fneg f1, f1 -lbl_8036B61C: -/* 8036B61C D8 36 00 00 */ stfd f1, 0(r22) -/* 8036B620 48 00 03 B0 */ b lbl_8036B9D0 -lbl_8036B624: -/* 8036B624 2C 1F 00 00 */ cmpwi r31, 0 -/* 8036B628 38 81 00 F8 */ addi r4, r1, 0xf8 -/* 8036B62C C8 42 D0 08 */ lfd f2, lit_436(r2) -/* 8036B630 7C 84 42 14 */ add r4, r4, r8 -/* 8036B634 38 7F 00 01 */ addi r3, r31, 1 -/* 8036B638 41 80 00 74 */ blt lbl_8036B6AC -/* 8036B63C 54 60 E8 FF */ rlwinm. r0, r3, 0x1d, 3, 0x1f -/* 8036B640 7C 09 03 A6 */ mtctr r0 -/* 8036B644 41 82 00 54 */ beq lbl_8036B698 -lbl_8036B648: -/* 8036B648 C8 04 00 00 */ lfd f0, 0(r4) -/* 8036B64C FC 42 00 2A */ fadd f2, f2, f0 -/* 8036B650 C8 04 FF F8 */ lfd f0, -8(r4) -/* 8036B654 FC 42 00 2A */ fadd f2, f2, f0 -/* 8036B658 C8 04 FF F0 */ lfd f0, -0x10(r4) -/* 8036B65C FC 42 00 2A */ fadd f2, f2, f0 -/* 8036B660 C8 04 FF E8 */ lfd f0, -0x18(r4) -/* 8036B664 FC 42 00 2A */ fadd f2, f2, f0 -/* 8036B668 C8 04 FF E0 */ lfd f0, -0x20(r4) -/* 8036B66C FC 42 00 2A */ fadd f2, f2, f0 -/* 8036B670 C8 04 FF D8 */ lfd f0, -0x28(r4) -/* 8036B674 FC 42 00 2A */ fadd f2, f2, f0 -/* 8036B678 C8 04 FF D0 */ lfd f0, -0x30(r4) -/* 8036B67C FC 42 00 2A */ fadd f2, f2, f0 -/* 8036B680 C8 04 FF C8 */ lfd f0, -0x38(r4) -/* 8036B684 38 84 FF C0 */ addi r4, r4, -64 -/* 8036B688 FC 42 00 2A */ fadd f2, f2, f0 -/* 8036B68C 42 00 FF BC */ bdnz lbl_8036B648 -/* 8036B690 70 63 00 07 */ andi. r3, r3, 7 -/* 8036B694 41 82 00 18 */ beq lbl_8036B6AC -lbl_8036B698: -/* 8036B698 7C 69 03 A6 */ mtctr r3 -lbl_8036B69C: -/* 8036B69C C8 04 00 00 */ lfd f0, 0(r4) -/* 8036B6A0 38 84 FF F8 */ addi r4, r4, -8 -/* 8036B6A4 FC 42 00 2A */ fadd f2, f2, f0 -/* 8036B6A8 42 00 FF F4 */ bdnz lbl_8036B69C -lbl_8036B6AC: -/* 8036B6AC 2C 19 00 00 */ cmpwi r25, 0 -/* 8036B6B0 40 82 00 0C */ bne lbl_8036B6BC -/* 8036B6B4 FC 20 10 90 */ fmr f1, f2 -/* 8036B6B8 48 00 00 08 */ b lbl_8036B6C0 -lbl_8036B6BC: -/* 8036B6BC FC 20 10 50 */ fneg f1, f2 -lbl_8036B6C0: -/* 8036B6C0 C8 01 00 F8 */ lfd f0, 0xf8(r1) -/* 8036B6C4 2C 1F 00 01 */ cmpwi r31, 1 -/* 8036B6C8 D8 36 00 00 */ stfd f1, 0(r22) -/* 8036B6CC 38 A0 00 01 */ li r5, 1 -/* 8036B6D0 FC C0 10 28 */ fsub f6, f0, f2 -/* 8036B6D4 41 80 00 A4 */ blt lbl_8036B778 -/* 8036B6D8 2C 1F 00 08 */ cmpwi r31, 8 -/* 8036B6DC 38 7F FF F8 */ addi r3, r31, -8 -/* 8036B6E0 40 81 00 68 */ ble lbl_8036B748 -/* 8036B6E4 38 03 00 07 */ addi r0, r3, 7 -/* 8036B6E8 38 81 01 00 */ addi r4, r1, 0x100 -/* 8036B6EC 54 00 E8 FE */ srwi r0, r0, 3 -/* 8036B6F0 7C 09 03 A6 */ mtctr r0 -/* 8036B6F4 2C 03 00 01 */ cmpwi r3, 1 -/* 8036B6F8 41 80 00 50 */ blt lbl_8036B748 -lbl_8036B6FC: -/* 8036B6FC C8 24 00 00 */ lfd f1, 0(r4) -/* 8036B700 38 A5 00 08 */ addi r5, r5, 8 -/* 8036B704 C8 04 00 08 */ lfd f0, 8(r4) -/* 8036B708 FC C6 08 2A */ fadd f6, f6, f1 -/* 8036B70C C8 A4 00 10 */ lfd f5, 0x10(r4) -/* 8036B710 C8 84 00 18 */ lfd f4, 0x18(r4) -/* 8036B714 C8 64 00 20 */ lfd f3, 0x20(r4) -/* 8036B718 FC C6 00 2A */ fadd f6, f6, f0 -/* 8036B71C C8 44 00 28 */ lfd f2, 0x28(r4) -/* 8036B720 C8 24 00 30 */ lfd f1, 0x30(r4) -/* 8036B724 C8 04 00 38 */ lfd f0, 0x38(r4) -/* 8036B728 38 84 00 40 */ addi r4, r4, 0x40 -/* 8036B72C FC C6 28 2A */ fadd f6, f6, f5 -/* 8036B730 FC C6 20 2A */ fadd f6, f6, f4 -/* 8036B734 FC C6 18 2A */ fadd f6, f6, f3 -/* 8036B738 FC C6 10 2A */ fadd f6, f6, f2 -/* 8036B73C FC C6 08 2A */ fadd f6, f6, f1 -/* 8036B740 FC C6 00 2A */ fadd f6, f6, f0 -/* 8036B744 42 00 FF B8 */ bdnz lbl_8036B6FC -lbl_8036B748: -/* 8036B748 38 1F 00 01 */ addi r0, r31, 1 -/* 8036B74C 54 A3 18 38 */ slwi r3, r5, 3 -/* 8036B750 38 81 00 F8 */ addi r4, r1, 0xf8 -/* 8036B754 7C 05 00 50 */ subf r0, r5, r0 -/* 8036B758 7C 84 1A 14 */ add r4, r4, r3 -/* 8036B75C 7C 09 03 A6 */ mtctr r0 -/* 8036B760 7C 05 F8 00 */ cmpw r5, r31 -/* 8036B764 41 81 00 14 */ bgt lbl_8036B778 -lbl_8036B768: -/* 8036B768 C8 04 00 00 */ lfd f0, 0(r4) -/* 8036B76C 38 84 00 08 */ addi r4, r4, 8 -/* 8036B770 FC C6 00 2A */ fadd f6, f6, f0 -/* 8036B774 42 00 FF F4 */ bdnz lbl_8036B768 -lbl_8036B778: -/* 8036B778 2C 19 00 00 */ cmpwi r25, 0 -/* 8036B77C 40 82 00 08 */ bne lbl_8036B784 -/* 8036B780 48 00 00 08 */ b lbl_8036B788 -lbl_8036B784: -/* 8036B784 FC C0 30 50 */ fneg f6, f6 -lbl_8036B788: -/* 8036B788 D8 D6 00 08 */ stfd f6, 8(r22) -/* 8036B78C 48 00 02 44 */ b lbl_8036B9D0 -lbl_8036B790: -/* 8036B790 38 A1 00 F8 */ addi r5, r1, 0xf8 -/* 8036B794 2C 1F 00 00 */ cmpwi r31, 0 -/* 8036B798 7C A5 42 14 */ add r5, r5, r8 -/* 8036B79C 7F E3 FB 78 */ mr r3, r31 -/* 8036B7A0 7C A4 2B 78 */ mr r4, r5 -/* 8036B7A4 40 81 00 B0 */ ble lbl_8036B854 -/* 8036B7A8 57 E0 F0 BF */ rlwinm. r0, r31, 0x1e, 2, 0x1f -/* 8036B7AC 7C 09 03 A6 */ mtctr r0 -/* 8036B7B0 41 82 00 80 */ beq lbl_8036B830 -lbl_8036B7B4: -/* 8036B7B4 C8 04 FF F8 */ lfd f0, -8(r4) -/* 8036B7B8 C8 24 00 00 */ lfd f1, 0(r4) -/* 8036B7BC FC 40 08 2A */ fadd f2, f0, f1 -/* 8036B7C0 FC 00 10 28 */ fsub f0, f0, f2 -/* 8036B7C4 FC 01 00 2A */ fadd f0, f1, f0 -/* 8036B7C8 D8 04 00 00 */ stfd f0, 0(r4) -/* 8036B7CC D8 44 FF F8 */ stfd f2, -8(r4) -/* 8036B7D0 C8 04 FF F0 */ lfd f0, -0x10(r4) -/* 8036B7D4 C8 24 FF F8 */ lfd f1, -8(r4) -/* 8036B7D8 FC 40 08 2A */ fadd f2, f0, f1 -/* 8036B7DC FC 00 10 28 */ fsub f0, f0, f2 -/* 8036B7E0 FC 01 00 2A */ fadd f0, f1, f0 -/* 8036B7E4 D8 04 FF F8 */ stfd f0, -8(r4) -/* 8036B7E8 D8 44 FF F0 */ stfd f2, -0x10(r4) -/* 8036B7EC C8 04 FF E8 */ lfd f0, -0x18(r4) -/* 8036B7F0 C8 24 FF F0 */ lfd f1, -0x10(r4) -/* 8036B7F4 FC 40 08 2A */ fadd f2, f0, f1 -/* 8036B7F8 FC 00 10 28 */ fsub f0, f0, f2 -/* 8036B7FC FC 01 00 2A */ fadd f0, f1, f0 -/* 8036B800 D8 04 FF F0 */ stfd f0, -0x10(r4) -/* 8036B804 D8 44 FF E8 */ stfd f2, -0x18(r4) -/* 8036B808 C8 04 FF E0 */ lfd f0, -0x20(r4) -/* 8036B80C C8 24 FF E8 */ lfd f1, -0x18(r4) -/* 8036B810 FC 40 08 2A */ fadd f2, f0, f1 -/* 8036B814 FC 00 10 28 */ fsub f0, f0, f2 -/* 8036B818 FC 01 00 2A */ fadd f0, f1, f0 -/* 8036B81C D8 04 FF E8 */ stfd f0, -0x18(r4) -/* 8036B820 DC 44 FF E0 */ stfdu f2, -0x20(r4) -/* 8036B824 42 00 FF 90 */ bdnz lbl_8036B7B4 -/* 8036B828 70 63 00 03 */ andi. r3, r3, 3 -/* 8036B82C 41 82 00 28 */ beq lbl_8036B854 -lbl_8036B830: -/* 8036B830 7C 69 03 A6 */ mtctr r3 -lbl_8036B834: -/* 8036B834 C8 04 FF F8 */ lfd f0, -8(r4) -/* 8036B838 C8 24 00 00 */ lfd f1, 0(r4) -/* 8036B83C FC 40 08 2A */ fadd f2, f0, f1 -/* 8036B840 FC 00 10 28 */ fsub f0, f0, f2 -/* 8036B844 FC 01 00 2A */ fadd f0, f1, f0 -/* 8036B848 D8 04 00 00 */ stfd f0, 0(r4) -/* 8036B84C DC 44 FF F8 */ stfdu f2, -8(r4) -/* 8036B850 42 00 FF E4 */ bdnz lbl_8036B834 -lbl_8036B854: -/* 8036B854 2C 1F 00 01 */ cmpwi r31, 1 -/* 8036B858 7C A4 2B 78 */ mr r4, r5 -/* 8036B85C 38 7F FF FF */ addi r3, r31, -1 -/* 8036B860 40 81 00 B0 */ ble lbl_8036B910 -/* 8036B864 54 60 F0 BF */ rlwinm. r0, r3, 0x1e, 2, 0x1f -/* 8036B868 7C 09 03 A6 */ mtctr r0 -/* 8036B86C 41 82 00 80 */ beq lbl_8036B8EC -lbl_8036B870: -/* 8036B870 C8 04 FF F8 */ lfd f0, -8(r4) -/* 8036B874 C8 24 00 00 */ lfd f1, 0(r4) -/* 8036B878 FC 40 08 2A */ fadd f2, f0, f1 -/* 8036B87C FC 00 10 28 */ fsub f0, f0, f2 -/* 8036B880 FC 01 00 2A */ fadd f0, f1, f0 -/* 8036B884 D8 04 00 00 */ stfd f0, 0(r4) -/* 8036B888 D8 44 FF F8 */ stfd f2, -8(r4) -/* 8036B88C C8 04 FF F0 */ lfd f0, -0x10(r4) -/* 8036B890 C8 24 FF F8 */ lfd f1, -8(r4) -/* 8036B894 FC 40 08 2A */ fadd f2, f0, f1 -/* 8036B898 FC 00 10 28 */ fsub f0, f0, f2 -/* 8036B89C FC 01 00 2A */ fadd f0, f1, f0 -/* 8036B8A0 D8 04 FF F8 */ stfd f0, -8(r4) -/* 8036B8A4 D8 44 FF F0 */ stfd f2, -0x10(r4) -/* 8036B8A8 C8 04 FF E8 */ lfd f0, -0x18(r4) -/* 8036B8AC C8 24 FF F0 */ lfd f1, -0x10(r4) -/* 8036B8B0 FC 40 08 2A */ fadd f2, f0, f1 -/* 8036B8B4 FC 00 10 28 */ fsub f0, f0, f2 -/* 8036B8B8 FC 01 00 2A */ fadd f0, f1, f0 -/* 8036B8BC D8 04 FF F0 */ stfd f0, -0x10(r4) -/* 8036B8C0 D8 44 FF E8 */ stfd f2, -0x18(r4) -/* 8036B8C4 C8 04 FF E0 */ lfd f0, -0x20(r4) -/* 8036B8C8 C8 24 FF E8 */ lfd f1, -0x18(r4) -/* 8036B8CC FC 40 08 2A */ fadd f2, f0, f1 -/* 8036B8D0 FC 00 10 28 */ fsub f0, f0, f2 -/* 8036B8D4 FC 01 00 2A */ fadd f0, f1, f0 -/* 8036B8D8 D8 04 FF E8 */ stfd f0, -0x18(r4) -/* 8036B8DC DC 44 FF E0 */ stfdu f2, -0x20(r4) -/* 8036B8E0 42 00 FF 90 */ bdnz lbl_8036B870 -/* 8036B8E4 70 63 00 03 */ andi. r3, r3, 3 -/* 8036B8E8 41 82 00 28 */ beq lbl_8036B910 -lbl_8036B8EC: -/* 8036B8EC 7C 69 03 A6 */ mtctr r3 -lbl_8036B8F0: -/* 8036B8F0 C8 04 FF F8 */ lfd f0, -8(r4) -/* 8036B8F4 C8 24 00 00 */ lfd f1, 0(r4) -/* 8036B8F8 FC 40 08 2A */ fadd f2, f0, f1 -/* 8036B8FC FC 00 10 28 */ fsub f0, f0, f2 -/* 8036B900 FC 01 00 2A */ fadd f0, f1, f0 -/* 8036B904 D8 04 00 00 */ stfd f0, 0(r4) -/* 8036B908 DC 44 FF F8 */ stfdu f2, -8(r4) -/* 8036B90C 42 00 FF E4 */ bdnz lbl_8036B8F0 -lbl_8036B910: -/* 8036B910 2C 1F 00 02 */ cmpwi r31, 2 -/* 8036B914 C8 62 D0 08 */ lfd f3, lit_436(r2) -/* 8036B918 38 7F FF FF */ addi r3, r31, -1 -/* 8036B91C 41 80 00 74 */ blt lbl_8036B990 -/* 8036B920 54 60 E8 FF */ rlwinm. r0, r3, 0x1d, 3, 0x1f -/* 8036B924 7C 09 03 A6 */ mtctr r0 -/* 8036B928 41 82 00 54 */ beq lbl_8036B97C -lbl_8036B92C: -/* 8036B92C C8 05 00 00 */ lfd f0, 0(r5) -/* 8036B930 FC 63 00 2A */ fadd f3, f3, f0 -/* 8036B934 C8 05 FF F8 */ lfd f0, -8(r5) -/* 8036B938 FC 63 00 2A */ fadd f3, f3, f0 -/* 8036B93C C8 05 FF F0 */ lfd f0, -0x10(r5) -/* 8036B940 FC 63 00 2A */ fadd f3, f3, f0 -/* 8036B944 C8 05 FF E8 */ lfd f0, -0x18(r5) -/* 8036B948 FC 63 00 2A */ fadd f3, f3, f0 -/* 8036B94C C8 05 FF E0 */ lfd f0, -0x20(r5) -/* 8036B950 FC 63 00 2A */ fadd f3, f3, f0 -/* 8036B954 C8 05 FF D8 */ lfd f0, -0x28(r5) -/* 8036B958 FC 63 00 2A */ fadd f3, f3, f0 -/* 8036B95C C8 05 FF D0 */ lfd f0, -0x30(r5) -/* 8036B960 FC 63 00 2A */ fadd f3, f3, f0 -/* 8036B964 C8 05 FF C8 */ lfd f0, -0x38(r5) -/* 8036B968 38 A5 FF C0 */ addi r5, r5, -64 -/* 8036B96C FC 63 00 2A */ fadd f3, f3, f0 -/* 8036B970 42 00 FF BC */ bdnz lbl_8036B92C -/* 8036B974 70 63 00 07 */ andi. r3, r3, 7 -/* 8036B978 41 82 00 18 */ beq lbl_8036B990 -lbl_8036B97C: -/* 8036B97C 7C 69 03 A6 */ mtctr r3 -lbl_8036B980: -/* 8036B980 C8 05 00 00 */ lfd f0, 0(r5) -/* 8036B984 38 A5 FF F8 */ addi r5, r5, -8 -/* 8036B988 FC 63 00 2A */ fadd f3, f3, f0 -/* 8036B98C 42 00 FF F4 */ bdnz lbl_8036B980 -lbl_8036B990: -/* 8036B990 2C 19 00 00 */ cmpwi r25, 0 -/* 8036B994 40 82 00 1C */ bne lbl_8036B9B0 -/* 8036B998 C8 21 00 F8 */ lfd f1, 0xf8(r1) -/* 8036B99C C8 01 01 00 */ lfd f0, 0x100(r1) -/* 8036B9A0 D8 36 00 00 */ stfd f1, 0(r22) -/* 8036B9A4 D8 16 00 08 */ stfd f0, 8(r22) -/* 8036B9A8 D8 76 00 10 */ stfd f3, 0x10(r22) -/* 8036B9AC 48 00 00 24 */ b lbl_8036B9D0 -lbl_8036B9B0: -/* 8036B9B0 C8 41 00 F8 */ lfd f2, 0xf8(r1) -/* 8036B9B4 FC 00 18 50 */ fneg f0, f3 -/* 8036B9B8 C8 21 01 00 */ lfd f1, 0x100(r1) -/* 8036B9BC FC 40 10 50 */ fneg f2, f2 -/* 8036B9C0 FC 20 08 50 */ fneg f1, f1 -/* 8036B9C4 D8 56 00 00 */ stfd f2, 0(r22) -/* 8036B9C8 D8 36 00 08 */ stfd f1, 8(r22) -/* 8036B9CC D8 16 00 10 */ stfd f0, 0x10(r22) -lbl_8036B9D0: -/* 8036B9D0 57 63 07 7E */ clrlwi r3, r27, 0x1d -/* 8036B9D4 39 61 02 D0 */ addi r11, r1, 0x2d0 -/* 8036B9D8 4B FF 67 A9 */ bl _restfpr_25 -/* 8036B9DC BA 01 02 58 */ lmw r16, 0x258(r1) -/* 8036B9E0 80 01 02 D4 */ lwz r0, 0x2d4(r1) -/* 8036B9E4 7C 08 03 A6 */ mtlr r0 -/* 8036B9E8 38 21 02 D0 */ addi r1, r1, 0x2d0 -/* 8036B9EC 4E 80 00 20 */ blr diff --git a/asm/MSL_C/Math/Double_precision/k_sin/__kernel_sin.s b/asm/MSL_C/Math/Double_precision/k_sin/__kernel_sin.s deleted file mode 100644 index e319f3ae2c..0000000000 --- a/asm/MSL_C/Math/Double_precision/k_sin/__kernel_sin.s +++ /dev/null @@ -1,44 +0,0 @@ -lbl_8036B9F0: -/* 8036B9F0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8036B9F4 3C 00 3E 40 */ lis r0, 0x3e40 -/* 8036B9F8 D8 21 00 08 */ stfd f1, 8(r1) -/* 8036B9FC 80 81 00 08 */ lwz r4, 8(r1) -/* 8036BA00 54 84 00 7E */ clrlwi r4, r4, 1 -/* 8036BA04 7C 04 00 00 */ cmpw r4, r0 -/* 8036BA08 40 80 00 1C */ bge lbl_8036BA24 -/* 8036BA0C FC 00 08 1E */ fctiwz f0, f1 -/* 8036BA10 D8 01 00 10 */ stfd f0, 0x10(r1) -/* 8036BA14 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8036BA18 2C 00 00 00 */ cmpwi r0, 0 -/* 8036BA1C 40 82 00 08 */ bne lbl_8036BA24 -/* 8036BA20 48 00 00 68 */ b lbl_8036BA88 -lbl_8036BA24: -/* 8036BA24 C8 C1 00 08 */ lfd f6, 8(r1) -/* 8036BA28 2C 03 00 00 */ cmpwi r3, 0 -/* 8036BA2C C8 A2 D0 68 */ lfd f5, lit_64(r2) -/* 8036BA30 FC E6 01 B2 */ fmul f7, f6, f6 -/* 8036BA34 C8 82 D0 60 */ lfd f4, lit_63(r2) -/* 8036BA38 C8 62 D0 58 */ lfd f3, lit_62(r2) -/* 8036BA3C C8 22 D0 50 */ lfd f1, lit_61(r2) -/* 8036BA40 C8 02 D0 48 */ lfd f0, lit_60(r2) -/* 8036BA44 FC 85 21 FA */ fmadd f4, f5, f7, f4 -/* 8036BA48 FC A7 01 B2 */ fmul f5, f7, f6 -/* 8036BA4C FC 67 19 3A */ fmadd f3, f7, f4, f3 -/* 8036BA50 FC 27 08 FA */ fmadd f1, f7, f3, f1 -/* 8036BA54 FC 27 00 7A */ fmadd f1, f7, f1, f0 -/* 8036BA58 40 82 00 14 */ bne lbl_8036BA6C -/* 8036BA5C C8 02 D0 70 */ lfd f0, lit_65(r2) -/* 8036BA60 FC 07 00 7A */ fmadd f0, f7, f1, f0 -/* 8036BA64 FC 25 30 3A */ fmadd f1, f5, f0, f6 -/* 8036BA68 48 00 00 20 */ b lbl_8036BA88 -lbl_8036BA6C: -/* 8036BA6C FC 05 00 72 */ fmul f0, f5, f1 -/* 8036BA70 C8 22 D0 78 */ lfd f1, lit_66(r2) -/* 8036BA74 C8 62 D0 70 */ lfd f3, lit_65(r2) -/* 8036BA78 FC 01 00 B8 */ fmsub f0, f1, f2, f0 -/* 8036BA7C FC 07 10 38 */ fmsub f0, f7, f0, f2 -/* 8036BA80 FC 03 01 7C */ fnmsub f0, f3, f5, f0 -/* 8036BA84 FC 26 00 28 */ fsub f1, f6, f0 -lbl_8036BA88: -/* 8036BA88 38 21 00 20 */ addi r1, r1, 0x20 -/* 8036BA8C 4E 80 00 20 */ blr diff --git a/asm/MSL_C/Math/Double_precision/k_tan/__kernel_tan.s b/asm/MSL_C/Math/Double_precision/k_tan/__kernel_tan.s deleted file mode 100644 index 91f7f06a75..0000000000 --- a/asm/MSL_C/Math/Double_precision/k_tan/__kernel_tan.s +++ /dev/null @@ -1,142 +0,0 @@ -lbl_8036BA90: -/* 8036BA90 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 8036BA94 DB E1 00 30 */ stfd f31, 0x30(r1) -/* 8036BA98 F3 E1 00 38 */ psq_st f31, 56(r1), 0, 0 /* qr0 */ -/* 8036BA9C D8 21 00 08 */ stfd f1, 8(r1) -/* 8036BAA0 3C 00 3E 30 */ lis r0, 0x3e30 -/* 8036BAA4 80 E1 00 08 */ lwz r7, 8(r1) -/* 8036BAA8 54 E6 00 7E */ clrlwi r6, r7, 1 -/* 8036BAAC 7C 06 00 00 */ cmpw r6, r0 -/* 8036BAB0 40 80 00 54 */ bge lbl_8036BB04 -/* 8036BAB4 FC 00 08 1E */ fctiwz f0, f1 -/* 8036BAB8 D8 01 00 20 */ stfd f0, 0x20(r1) -/* 8036BABC 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8036BAC0 2C 00 00 00 */ cmpwi r0, 0 -/* 8036BAC4 40 82 00 40 */ bne lbl_8036BB04 -/* 8036BAC8 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8036BACC 38 83 00 01 */ addi r4, r3, 1 -/* 8036BAD0 7C C0 03 78 */ or r0, r6, r0 -/* 8036BAD4 7C 80 03 79 */ or. r0, r4, r0 -/* 8036BAD8 40 82 00 14 */ bne lbl_8036BAEC -/* 8036BADC FC 20 0A 10 */ fabs f1, f1 -/* 8036BAE0 C8 02 D0 80 */ lfd f0, lit_94(r2) -/* 8036BAE4 FC 20 08 24 */ fdiv f1, f0, f1 -/* 8036BAE8 48 00 01 AC */ b lbl_8036BC94 -lbl_8036BAEC: -/* 8036BAEC 2C 03 00 01 */ cmpwi r3, 1 -/* 8036BAF0 40 82 00 08 */ bne lbl_8036BAF8 -/* 8036BAF4 48 00 01 A0 */ b lbl_8036BC94 -lbl_8036BAF8: -/* 8036BAF8 C8 02 D0 88 */ lfd f0, lit_95(r2) -/* 8036BAFC FC 20 08 24 */ fdiv f1, f0, f1 -/* 8036BB00 48 00 01 94 */ b lbl_8036BC94 -lbl_8036BB04: -/* 8036BB04 3C 80 3F E6 */ lis r4, 0x3FE6 /* 0x3FE59428@ha */ -/* 8036BB08 38 04 94 28 */ addi r0, r4, 0x9428 /* 0x3FE59428@l */ -/* 8036BB0C 7C 06 00 00 */ cmpw r6, r0 -/* 8036BB10 41 80 00 40 */ blt lbl_8036BB50 -/* 8036BB14 2C 07 00 00 */ cmpwi r7, 0 -/* 8036BB18 40 80 00 14 */ bge lbl_8036BB2C -/* 8036BB1C C8 01 00 08 */ lfd f0, 8(r1) -/* 8036BB20 FC 40 10 50 */ fneg f2, f2 -/* 8036BB24 FC 00 00 50 */ fneg f0, f0 -/* 8036BB28 D8 01 00 08 */ stfd f0, 8(r1) -lbl_8036BB2C: -/* 8036BB2C C8 02 D0 98 */ lfd f0, lit_97(r2) -/* 8036BB30 C8 62 D0 90 */ lfd f3, lit_96(r2) -/* 8036BB34 C8 21 00 08 */ lfd f1, 8(r1) -/* 8036BB38 FC 00 10 28 */ fsub f0, f0, f2 -/* 8036BB3C C8 42 D0 A0 */ lfd f2, lit_98(r2) -/* 8036BB40 FC 23 08 28 */ fsub f1, f3, f1 -/* 8036BB44 FC 01 00 2A */ fadd f0, f1, f0 -/* 8036BB48 D8 21 00 18 */ stfd f1, 0x18(r1) -/* 8036BB4C D8 01 00 08 */ stfd f0, 8(r1) -lbl_8036BB50: -/* 8036BB50 C8 01 00 08 */ lfd f0, 8(r1) -/* 8036BB54 3C 80 80 3A */ lis r4, T@ha /* 0x803A2588@ha */ -/* 8036BB58 38 A4 25 88 */ addi r5, r4, T@l /* 0x803A2588@l */ -/* 8036BB5C 3C 80 3F E6 */ lis r4, 0x3FE6 /* 0x3FE59428@ha */ -/* 8036BB60 FD A0 00 32 */ fmul f13, f0, f0 -/* 8036BB64 38 04 94 28 */ addi r0, r4, 0x9428 /* 0x3FE59428@l */ -/* 8036BB68 C8 A5 00 60 */ lfd f5, 0x60(r5) -/* 8036BB6C 7C 06 00 00 */ cmpw r6, r0 -/* 8036BB70 C8 85 00 50 */ lfd f4, 0x50(r5) -/* 8036BB74 C9 25 00 58 */ lfd f9, 0x58(r5) -/* 8036BB78 FF ED 03 72 */ fmul f31, f13, f13 -/* 8036BB7C C9 05 00 48 */ lfd f8, 0x48(r5) -/* 8036BB80 C8 65 00 40 */ lfd f3, 0x40(r5) -/* 8036BB84 C9 65 00 38 */ lfd f11, 0x38(r5) -/* 8036BB88 FC 2D 00 32 */ fmul f1, f13, f0 -/* 8036BB8C C8 C5 00 30 */ lfd f6, 0x30(r5) -/* 8036BB90 FC FF 21 7A */ fmadd f7, f31, f5, f4 -/* 8036BB94 C9 45 00 28 */ lfd f10, 0x28(r5) -/* 8036BB98 C8 A5 00 20 */ lfd f5, 0x20(r5) -/* 8036BB9C FD 9F 42 7A */ fmadd f12, f31, f9, f8 -/* 8036BBA0 C9 25 00 18 */ lfd f9, 0x18(r5) -/* 8036BBA4 C8 85 00 10 */ lfd f4, 0x10(r5) -/* 8036BBA8 FC FF 19 FA */ fmadd f7, f31, f7, f3 -/* 8036BBAC C9 05 00 08 */ lfd f8, 8(r5) -/* 8036BBB0 C8 65 00 00 */ lfd f3, 0(r5) -/* 8036BBB4 FD 7F 5B 3A */ fmadd f11, f31, f12, f11 -/* 8036BBB8 D9 A1 00 18 */ stfd f13, 0x18(r1) -/* 8036BBBC FC DF 31 FA */ fmadd f6, f31, f7, f6 -/* 8036BBC0 FC FF 52 FA */ fmadd f7, f31, f11, f10 -/* 8036BBC4 FC BF 29 BA */ fmadd f5, f31, f6, f5 -/* 8036BBC8 FC DF 49 FA */ fmadd f6, f31, f7, f9 -/* 8036BBCC FC 9F 21 7A */ fmadd f4, f31, f5, f4 -/* 8036BBD0 FC BF 41 BA */ fmadd f5, f31, f6, f8 -/* 8036BBD4 FC 8D 01 32 */ fmul f4, f13, f4 -/* 8036BBD8 FC 85 20 2A */ fadd f4, f5, f4 -/* 8036BBDC FC 81 11 3A */ fmadd f4, f1, f4, f2 -/* 8036BBE0 FC CD 11 3A */ fmadd f6, f13, f4, f2 -/* 8036BBE4 FC C3 30 7A */ fmadd f6, f3, f1, f6 -/* 8036BBE8 FC 20 30 2A */ fadd f1, f0, f6 -/* 8036BBEC 41 80 00 60 */ blt lbl_8036BC4C -/* 8036BBF0 3C 80 43 30 */ lis r4, 0x4330 -/* 8036BBF4 6C 60 80 00 */ xoris r0, r3, 0x8000 -/* 8036BBF8 90 01 00 24 */ stw r0, 0x24(r1) -/* 8036BBFC 54 E0 17 BC */ rlwinm r0, r7, 2, 0x1e, 0x1e -/* 8036BC00 20 00 00 01 */ subfic r0, r0, 1 -/* 8036BC04 C8 A2 D0 B0 */ lfd f5, lit_101(r2) -/* 8036BC08 90 81 00 20 */ stw r4, 0x20(r1) -/* 8036BC0C 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8036BC10 FC 41 00 72 */ fmul f2, f1, f1 -/* 8036BC14 C8 62 D0 A8 */ lfd f3, lit_99(r2) -/* 8036BC18 C8 81 00 20 */ lfd f4, 0x20(r1) -/* 8036BC1C 90 01 00 2C */ stw r0, 0x2c(r1) -/* 8036BC20 FC E4 28 28 */ fsub f7, f4, f5 -/* 8036BC24 90 81 00 28 */ stw r4, 0x28(r1) -/* 8036BC28 FC 21 38 2A */ fadd f1, f1, f7 -/* 8036BC2C C8 81 00 28 */ lfd f4, 0x28(r1) -/* 8036BC30 FC 84 28 28 */ fsub f4, f4, f5 -/* 8036BC34 FC 22 08 24 */ fdiv f1, f2, f1 -/* 8036BC38 FC 21 30 28 */ fsub f1, f1, f6 -/* 8036BC3C FC 00 08 28 */ fsub f0, f0, f1 -/* 8036BC40 FC 03 38 3C */ fnmsub f0, f3, f0, f7 -/* 8036BC44 FC 24 00 32 */ fmul f1, f4, f0 -/* 8036BC48 48 00 00 4C */ b lbl_8036BC94 -lbl_8036BC4C: -/* 8036BC4C 2C 03 00 01 */ cmpwi r3, 1 -/* 8036BC50 40 82 00 08 */ bne lbl_8036BC58 -/* 8036BC54 48 00 00 40 */ b lbl_8036BC94 -lbl_8036BC58: -/* 8036BC58 C8 42 D0 88 */ lfd f2, lit_95(r2) -/* 8036BC5C 38 00 00 00 */ li r0, 0 -/* 8036BC60 D8 21 00 18 */ stfd f1, 0x18(r1) -/* 8036BC64 FC 82 08 24 */ fdiv f4, f2, f1 -/* 8036BC68 C8 22 D0 80 */ lfd f1, lit_94(r2) -/* 8036BC6C 90 01 00 1C */ stw r0, 0x1c(r1) -/* 8036BC70 C8 41 00 18 */ lfd f2, 0x18(r1) -/* 8036BC74 D8 81 00 10 */ stfd f4, 0x10(r1) -/* 8036BC78 FC 02 00 28 */ fsub f0, f2, f0 -/* 8036BC7C 90 01 00 14 */ stw r0, 0x14(r1) -/* 8036BC80 FC 06 00 28 */ fsub f0, f6, f0 -/* 8036BC84 C8 61 00 10 */ lfd f3, 0x10(r1) -/* 8036BC88 FC 23 08 BA */ fmadd f1, f3, f2, f1 -/* 8036BC8C FC 03 08 3A */ fmadd f0, f3, f0, f1 -/* 8036BC90 FC 24 18 3A */ fmadd f1, f4, f0, f3 -lbl_8036BC94: -/* 8036BC94 E3 E1 00 38 */ psq_l f31, 56(r1), 0, 0 /* qr0 */ -/* 8036BC98 CB E1 00 30 */ lfd f31, 0x30(r1) -/* 8036BC9C 38 21 00 40 */ addi r1, r1, 0x40 -/* 8036BCA0 4E 80 00 20 */ blr diff --git a/asm/MSL_C/Math/Double_precision/s_atan/atan.s b/asm/MSL_C/Math/Double_precision/s_atan/atan.s deleted file mode 100644 index 8dd1b7c8cc..0000000000 --- a/asm/MSL_C/Math/Double_precision/s_atan/atan.s +++ /dev/null @@ -1,147 +0,0 @@ -lbl_8036BCA4: -/* 8036BCA4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8036BCA8 3C 60 80 3A */ lis r3, atanhi@ha /* 0x803A25F0@ha */ -/* 8036BCAC 3C 00 44 10 */ lis r0, 0x4410 -/* 8036BCB0 D8 21 00 08 */ stfd f1, 8(r1) -/* 8036BCB4 38 A3 25 F0 */ addi r5, r3, atanhi@l /* 0x803A25F0@l */ -/* 8036BCB8 80 C1 00 08 */ lwz r6, 8(r1) -/* 8036BCBC 54 C4 00 7E */ clrlwi r4, r6, 1 -/* 8036BCC0 7C 04 00 00 */ cmpw r4, r0 -/* 8036BCC4 41 80 00 70 */ blt lbl_8036BD34 -/* 8036BCC8 3C 00 7F F0 */ lis r0, 0x7ff0 -/* 8036BCCC 7C 04 00 00 */ cmpw r4, r0 -/* 8036BCD0 41 81 00 1C */ bgt lbl_8036BCEC -/* 8036BCD4 3C 04 80 10 */ addis r0, r4, 0x8010 -/* 8036BCD8 28 00 00 00 */ cmplwi r0, 0 -/* 8036BCDC 40 82 00 1C */ bne lbl_8036BCF8 -/* 8036BCE0 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8036BCE4 2C 00 00 00 */ cmpwi r0, 0 -/* 8036BCE8 41 82 00 10 */ beq lbl_8036BCF8 -lbl_8036BCEC: -/* 8036BCEC C8 01 00 08 */ lfd f0, 8(r1) -/* 8036BCF0 FC 20 00 2A */ fadd f1, f0, f0 -/* 8036BCF4 48 00 01 C0 */ b lbl_8036BEB4 -lbl_8036BCF8: -/* 8036BCF8 2C 06 00 00 */ cmpwi r6, 0 -/* 8036BCFC 40 81 00 1C */ ble lbl_8036BD18 -/* 8036BD00 38 85 00 00 */ addi r4, r5, 0 -/* 8036BD04 38 65 00 20 */ addi r3, r5, 0x20 -/* 8036BD08 C8 24 00 18 */ lfd f1, 0x18(r4) -/* 8036BD0C C8 03 00 18 */ lfd f0, 0x18(r3) -/* 8036BD10 FC 21 00 2A */ fadd f1, f1, f0 -/* 8036BD14 48 00 01 A0 */ b lbl_8036BEB4 -lbl_8036BD18: -/* 8036BD18 38 85 00 00 */ addi r4, r5, 0 -/* 8036BD1C 38 65 00 20 */ addi r3, r5, 0x20 -/* 8036BD20 C8 24 00 18 */ lfd f1, 0x18(r4) -/* 8036BD24 C8 03 00 18 */ lfd f0, 0x18(r3) -/* 8036BD28 FC 20 08 50 */ fneg f1, f1 -/* 8036BD2C FC 21 00 28 */ fsub f1, f1, f0 -/* 8036BD30 48 00 01 84 */ b lbl_8036BEB4 -lbl_8036BD34: -/* 8036BD34 3C 00 3F DC */ lis r0, 0x3fdc -/* 8036BD38 7C 04 00 00 */ cmpw r4, r0 -/* 8036BD3C 40 80 00 30 */ bge lbl_8036BD6C -/* 8036BD40 3C 00 3E 20 */ lis r0, 0x3e20 -/* 8036BD44 7C 04 00 00 */ cmpw r4, r0 -/* 8036BD48 40 80 00 1C */ bge lbl_8036BD64 -/* 8036BD4C C8 42 D0 B8 */ lfd f2, lit_115(r2) -/* 8036BD50 C8 02 D0 C0 */ lfd f0, lit_116(r2) -/* 8036BD54 FC 42 08 2A */ fadd f2, f2, f1 -/* 8036BD58 FC 02 00 40 */ fcmpo cr0, f2, f0 -/* 8036BD5C 40 81 00 08 */ ble lbl_8036BD64 -/* 8036BD60 48 00 01 54 */ b lbl_8036BEB4 -lbl_8036BD64: -/* 8036BD64 38 00 FF FF */ li r0, -1 -/* 8036BD68 48 00 00 A0 */ b lbl_8036BE08 -lbl_8036BD6C: -/* 8036BD6C FC 60 0A 10 */ fabs f3, f1 -/* 8036BD70 3C 00 3F F3 */ lis r0, 0x3ff3 -/* 8036BD74 7C 04 00 00 */ cmpw r4, r0 -/* 8036BD78 D8 61 00 08 */ stfd f3, 8(r1) -/* 8036BD7C 40 80 00 4C */ bge lbl_8036BDC8 -/* 8036BD80 3C 00 3F E6 */ lis r0, 0x3fe6 -/* 8036BD84 7C 04 00 00 */ cmpw r4, r0 -/* 8036BD88 40 80 00 24 */ bge lbl_8036BDAC -/* 8036BD8C C8 42 D0 C8 */ lfd f2, lit_117(r2) -/* 8036BD90 38 00 00 00 */ li r0, 0 -/* 8036BD94 C8 22 D0 C0 */ lfd f1, lit_116(r2) -/* 8036BD98 FC 02 18 2A */ fadd f0, f2, f3 -/* 8036BD9C FC 22 08 F8 */ fmsub f1, f2, f3, f1 -/* 8036BDA0 FC 01 00 24 */ fdiv f0, f1, f0 -/* 8036BDA4 D8 01 00 08 */ stfd f0, 8(r1) -/* 8036BDA8 48 00 00 60 */ b lbl_8036BE08 -lbl_8036BDAC: -/* 8036BDAC C8 02 D0 C0 */ lfd f0, lit_116(r2) -/* 8036BDB0 38 00 00 01 */ li r0, 1 -/* 8036BDB4 FC 23 00 28 */ fsub f1, f3, f0 -/* 8036BDB8 FC 00 18 2A */ fadd f0, f0, f3 -/* 8036BDBC FC 01 00 24 */ fdiv f0, f1, f0 -/* 8036BDC0 D8 01 00 08 */ stfd f0, 8(r1) -/* 8036BDC4 48 00 00 44 */ b lbl_8036BE08 -lbl_8036BDC8: -/* 8036BDC8 3C 60 40 04 */ lis r3, 0x4004 /* 0x40038000@ha */ -/* 8036BDCC 38 03 80 00 */ addi r0, r3, 0x8000 /* 0x40038000@l */ -/* 8036BDD0 7C 04 00 00 */ cmpw r4, r0 -/* 8036BDD4 40 80 00 24 */ bge lbl_8036BDF8 -/* 8036BDD8 C8 42 D0 D0 */ lfd f2, lit_118(r2) -/* 8036BDDC 38 00 00 02 */ li r0, 2 -/* 8036BDE0 C8 02 D0 C0 */ lfd f0, lit_116(r2) -/* 8036BDE4 FC 23 10 28 */ fsub f1, f3, f2 -/* 8036BDE8 FC 02 00 FA */ fmadd f0, f2, f3, f0 -/* 8036BDEC FC 01 00 24 */ fdiv f0, f1, f0 -/* 8036BDF0 D8 01 00 08 */ stfd f0, 8(r1) -/* 8036BDF4 48 00 00 14 */ b lbl_8036BE08 -lbl_8036BDF8: -/* 8036BDF8 C8 02 D0 D8 */ lfd f0, lit_119(r2) -/* 8036BDFC 38 00 00 03 */ li r0, 3 -/* 8036BE00 FC 00 18 24 */ fdiv f0, f0, f3 -/* 8036BE04 D8 01 00 08 */ stfd f0, 8(r1) -lbl_8036BE08: -/* 8036BE08 C9 21 00 08 */ lfd f9, 8(r1) -/* 8036BE0C 38 65 00 40 */ addi r3, r5, 0x40 -/* 8036BE10 C8 83 00 50 */ lfd f4, 0x50(r3) -/* 8036BE14 2C 00 00 00 */ cmpwi r0, 0 -/* 8036BE18 FD 69 02 72 */ fmul f11, f9, f9 -/* 8036BE1C C8 23 00 40 */ lfd f1, 0x40(r3) -/* 8036BE20 C8 E3 00 30 */ lfd f7, 0x30(r3) -/* 8036BE24 C8 63 00 48 */ lfd f3, 0x48(r3) -/* 8036BE28 C8 03 00 38 */ lfd f0, 0x38(r3) -/* 8036BE2C FD 4B 02 F2 */ fmul f10, f11, f11 -/* 8036BE30 C8 C3 00 20 */ lfd f6, 0x20(r3) -/* 8036BE34 C8 43 00 28 */ lfd f2, 0x28(r3) -/* 8036BE38 C8 A3 00 10 */ lfd f5, 0x10(r3) -/* 8036BE3C FD 0A 09 3A */ fmadd f8, f10, f4, f1 -/* 8036BE40 C8 23 00 18 */ lfd f1, 0x18(r3) -/* 8036BE44 C8 85 00 40 */ lfd f4, 0x40(r5) -/* 8036BE48 FC 6A 00 FA */ fmadd f3, f10, f3, f0 -/* 8036BE4C C8 03 00 08 */ lfd f0, 8(r3) -/* 8036BE50 FC EA 3A 3A */ fmadd f7, f10, f8, f7 -/* 8036BE54 FC 4A 10 FA */ fmadd f2, f10, f3, f2 -/* 8036BE58 FC 6A 31 FA */ fmadd f3, f10, f7, f6 -/* 8036BE5C FC 2A 08 BA */ fmadd f1, f10, f2, f1 -/* 8036BE60 FC 4A 28 FA */ fmadd f2, f10, f3, f5 -/* 8036BE64 FC 0A 00 7A */ fmadd f0, f10, f1, f0 -/* 8036BE68 FC 2A 20 BA */ fmadd f1, f10, f2, f4 -/* 8036BE6C FC 4A 00 32 */ fmul f2, f10, f0 -/* 8036BE70 FC 0B 00 72 */ fmul f0, f11, f1 -/* 8036BE74 40 80 00 10 */ bge lbl_8036BE84 -/* 8036BE78 FC 00 10 2A */ fadd f0, f0, f2 -/* 8036BE7C FC 29 48 3C */ fnmsub f1, f9, f0, f9 -/* 8036BE80 48 00 00 34 */ b lbl_8036BEB4 -lbl_8036BE84: -/* 8036BE84 54 00 18 38 */ slwi r0, r0, 3 -/* 8036BE88 38 65 00 20 */ addi r3, r5, 0x20 -/* 8036BE8C FC 20 10 2A */ fadd f1, f0, f2 -/* 8036BE90 7C 03 04 AE */ lfdx f0, r3, r0 -/* 8036BE94 38 65 00 00 */ addi r3, r5, 0 -/* 8036BE98 2C 06 00 00 */ cmpwi r6, 0 -/* 8036BE9C 7C 43 04 AE */ lfdx f2, r3, r0 -/* 8036BEA0 FC 09 00 78 */ fmsub f0, f9, f1, f0 -/* 8036BEA4 FC 00 48 28 */ fsub f0, f0, f9 -/* 8036BEA8 FC 22 00 28 */ fsub f1, f2, f0 -/* 8036BEAC 40 80 00 08 */ bge lbl_8036BEB4 -/* 8036BEB0 FC 20 08 50 */ fneg f1, f1 -lbl_8036BEB4: -/* 8036BEB4 38 21 00 10 */ addi r1, r1, 0x10 -/* 8036BEB8 4E 80 00 20 */ blr diff --git a/asm/MSL_C/Math/Double_precision/s_ldexp/ldexp.s b/asm/MSL_C/Math/Double_precision/s_ldexp/ldexp.s deleted file mode 100644 index 879479cc56..0000000000 --- a/asm/MSL_C/Math/Double_precision/s_ldexp/ldexp.s +++ /dev/null @@ -1,131 +0,0 @@ -lbl_8036C2D0: -/* 8036C2D0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8036C2D4 7C 08 02 A6 */ mflr r0 -/* 8036C2D8 D8 21 00 10 */ stfd f1, 0x10(r1) -/* 8036C2DC 80 A1 00 10 */ lwz r5, 0x10(r1) -/* 8036C2E0 90 01 00 24 */ stw r0, 0x24(r1) -/* 8036C2E4 3C 00 7F F0 */ lis r0, 0x7ff0 -/* 8036C2E8 54 A4 00 56 */ rlwinm r4, r5, 0, 1, 0xb -/* 8036C2EC 7C 04 00 00 */ cmpw r4, r0 -/* 8036C2F0 D8 21 00 08 */ stfd f1, 8(r1) -/* 8036C2F4 41 82 00 14 */ beq lbl_8036C308 -/* 8036C2F8 40 80 00 58 */ bge lbl_8036C350 -/* 8036C2FC 2C 04 00 00 */ cmpwi r4, 0 -/* 8036C300 41 82 00 2C */ beq lbl_8036C32C -/* 8036C304 48 00 00 4C */ b lbl_8036C350 -lbl_8036C308: -/* 8036C308 54 A0 03 3F */ clrlwi. r0, r5, 0xc -/* 8036C30C 40 82 00 10 */ bne lbl_8036C31C -/* 8036C310 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8036C314 2C 00 00 00 */ cmpwi r0, 0 -/* 8036C318 41 82 00 0C */ beq lbl_8036C324 -lbl_8036C31C: -/* 8036C31C 38 00 00 01 */ li r0, 1 -/* 8036C320 48 00 00 34 */ b lbl_8036C354 -lbl_8036C324: -/* 8036C324 38 00 00 02 */ li r0, 2 -/* 8036C328 48 00 00 2C */ b lbl_8036C354 -lbl_8036C32C: -/* 8036C32C 54 A0 03 3F */ clrlwi. r0, r5, 0xc -/* 8036C330 40 82 00 10 */ bne lbl_8036C340 -/* 8036C334 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8036C338 2C 00 00 00 */ cmpwi r0, 0 -/* 8036C33C 41 82 00 0C */ beq lbl_8036C348 -lbl_8036C340: -/* 8036C340 38 00 00 05 */ li r0, 5 -/* 8036C344 48 00 00 10 */ b lbl_8036C354 -lbl_8036C348: -/* 8036C348 38 00 00 03 */ li r0, 3 -/* 8036C34C 48 00 00 08 */ b lbl_8036C354 -lbl_8036C350: -/* 8036C350 38 00 00 04 */ li r0, 4 -lbl_8036C354: -/* 8036C354 2C 00 00 02 */ cmpwi r0, 2 -/* 8036C358 40 81 01 2C */ ble lbl_8036C484 -/* 8036C35C C8 02 D1 10 */ lfd f0, lit_91(r2) -/* 8036C360 FC 00 08 00 */ fcmpu cr0, f0, f1 -/* 8036C364 40 82 00 08 */ bne lbl_8036C36C -/* 8036C368 48 00 01 1C */ b lbl_8036C484 -lbl_8036C36C: -/* 8036C36C 80 A1 00 08 */ lwz r5, 8(r1) -/* 8036C370 80 C1 00 0C */ lwz r6, 0xc(r1) -/* 8036C374 54 A4 65 7F */ rlwinm. r4, r5, 0xc, 0x15, 0x1f -/* 8036C378 40 82 00 4C */ bne lbl_8036C3C4 -/* 8036C37C 54 A0 00 7E */ clrlwi r0, r5, 1 -/* 8036C380 7C C0 03 79 */ or. r0, r6, r0 -/* 8036C384 40 82 00 08 */ bne lbl_8036C38C -/* 8036C388 48 00 00 FC */ b lbl_8036C484 -lbl_8036C38C: -/* 8036C38C C8 21 00 08 */ lfd f1, 8(r1) -/* 8036C390 3C 80 FF FF */ lis r4, 0xFFFF /* 0xFFFF3CB0@ha */ -/* 8036C394 C8 02 D1 18 */ lfd f0, lit_92(r2) -/* 8036C398 38 04 3C B0 */ addi r0, r4, 0x3CB0 /* 0xFFFF3CB0@l */ -/* 8036C39C 7C 03 00 00 */ cmpw r3, r0 -/* 8036C3A0 FC 21 00 32 */ fmul f1, f1, f0 -/* 8036C3A4 D8 21 00 08 */ stfd f1, 8(r1) -/* 8036C3A8 80 A1 00 08 */ lwz r5, 8(r1) -/* 8036C3AC 54 A4 65 7E */ rlwinm r4, r5, 0xc, 0x15, 0x1f -/* 8036C3B0 38 84 FF CA */ addi r4, r4, -54 -/* 8036C3B4 40 80 00 10 */ bge lbl_8036C3C4 -/* 8036C3B8 C8 02 D1 20 */ lfd f0, lit_93(r2) -/* 8036C3BC FC 20 00 72 */ fmul f1, f0, f1 -/* 8036C3C0 48 00 00 C4 */ b lbl_8036C484 -lbl_8036C3C4: -/* 8036C3C4 2C 04 07 FF */ cmpwi r4, 0x7ff -/* 8036C3C8 40 82 00 10 */ bne lbl_8036C3D8 -/* 8036C3CC C8 01 00 08 */ lfd f0, 8(r1) -/* 8036C3D0 FC 20 00 2A */ fadd f1, f0, f0 -/* 8036C3D4 48 00 00 B0 */ b lbl_8036C484 -lbl_8036C3D8: -/* 8036C3D8 7C 84 1A 14 */ add r4, r4, r3 -/* 8036C3DC 2C 04 07 FE */ cmpwi r4, 0x7fe -/* 8036C3E0 40 81 00 1C */ ble lbl_8036C3FC -/* 8036C3E4 C8 22 D1 28 */ lfd f1, lit_94(r2) -/* 8036C3E8 C8 41 00 08 */ lfd f2, 8(r1) -/* 8036C3EC 4B FF FC 15 */ bl copysign -/* 8036C3F0 C8 02 D1 28 */ lfd f0, lit_94(r2) -/* 8036C3F4 FC 20 00 72 */ fmul f1, f0, f1 -/* 8036C3F8 48 00 00 8C */ b lbl_8036C484 -lbl_8036C3FC: -/* 8036C3FC 2C 04 00 00 */ cmpwi r4, 0 -/* 8036C400 40 81 00 1C */ ble lbl_8036C41C -/* 8036C404 54 A3 03 00 */ rlwinm r3, r5, 0, 0xc, 0 -/* 8036C408 54 80 A0 16 */ slwi r0, r4, 0x14 -/* 8036C40C 7C 60 03 78 */ or r0, r3, r0 -/* 8036C410 90 01 00 08 */ stw r0, 8(r1) -/* 8036C414 C8 21 00 08 */ lfd f1, 8(r1) -/* 8036C418 48 00 00 6C */ b lbl_8036C484 -lbl_8036C41C: -/* 8036C41C 2C 04 FF CA */ cmpwi r4, -54 -/* 8036C420 41 81 00 44 */ bgt lbl_8036C464 -/* 8036C424 3C 80 00 01 */ lis r4, 0x0001 /* 0x0000C350@ha */ -/* 8036C428 38 04 C3 50 */ addi r0, r4, 0xC350 /* 0x0000C350@l */ -/* 8036C42C 7C 03 00 00 */ cmpw r3, r0 -/* 8036C430 40 81 00 1C */ ble lbl_8036C44C -/* 8036C434 C8 22 D1 28 */ lfd f1, lit_94(r2) -/* 8036C438 C8 41 00 08 */ lfd f2, 8(r1) -/* 8036C43C 4B FF FB C5 */ bl copysign -/* 8036C440 C8 02 D1 28 */ lfd f0, lit_94(r2) -/* 8036C444 FC 20 00 72 */ fmul f1, f0, f1 -/* 8036C448 48 00 00 3C */ b lbl_8036C484 -lbl_8036C44C: -/* 8036C44C C8 22 D1 20 */ lfd f1, lit_93(r2) -/* 8036C450 C8 41 00 08 */ lfd f2, 8(r1) -/* 8036C454 4B FF FB AD */ bl copysign -/* 8036C458 C8 02 D1 20 */ lfd f0, lit_93(r2) -/* 8036C45C FC 20 00 72 */ fmul f1, f0, f1 -/* 8036C460 48 00 00 24 */ b lbl_8036C484 -lbl_8036C464: -/* 8036C464 38 04 00 36 */ addi r0, r4, 0x36 -/* 8036C468 54 A3 03 00 */ rlwinm r3, r5, 0, 0xc, 0 -/* 8036C46C 54 00 A0 16 */ slwi r0, r0, 0x14 -/* 8036C470 C8 22 D1 30 */ lfd f1, lit_95(r2) -/* 8036C474 7C 60 03 78 */ or r0, r3, r0 -/* 8036C478 90 01 00 08 */ stw r0, 8(r1) -/* 8036C47C C8 01 00 08 */ lfd f0, 8(r1) -/* 8036C480 FC 21 00 32 */ fmul f1, f1, f0 -lbl_8036C484: -/* 8036C484 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8036C488 7C 08 03 A6 */ mtlr r0 -/* 8036C48C 38 21 00 20 */ addi r1, r1, 0x20 -/* 8036C490 4E 80 00 20 */ blr diff --git a/asm/Runtime.PPCEABI.H/CPlusLibPPC/__copy.s b/asm/Runtime.PPCEABI.H/CPlusLibPPC/__copy.s deleted file mode 100644 index 1bec8150c0..0000000000 --- a/asm/Runtime.PPCEABI.H/CPlusLibPPC/__copy.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_80361C3C: -/* 80361C3C 28 03 00 00 */ cmplwi r3, 0 -/* 80361C40 4D 82 00 20 */ beqlr -/* 80361C44 28 05 00 00 */ cmplwi r5, 0 -/* 80361C48 4D 82 00 20 */ beqlr -/* 80361C4C 7C 66 1B 78 */ mr r6, r3 -lbl_80361C50: -/* 80361C50 88 04 00 00 */ lbz r0, 0(r4) -/* 80361C54 34 A5 FF FF */ addic. r5, r5, -1 -/* 80361C58 38 84 00 01 */ addi r4, r4, 1 -/* 80361C5C 98 06 00 00 */ stb r0, 0(r6) -/* 80361C60 38 C6 00 01 */ addi r6, r6, 1 -/* 80361C64 40 82 FF EC */ bne lbl_80361C50 -/* 80361C68 4E 80 00 20 */ blr diff --git a/asm/Runtime.PPCEABI.H/GCN_mem_alloc/__sys_free.s b/asm/Runtime.PPCEABI.H/GCN_mem_alloc/__sys_free.s deleted file mode 100644 index fbd7967735..0000000000 --- a/asm/Runtime.PPCEABI.H/GCN_mem_alloc/__sys_free.s +++ /dev/null @@ -1,48 +0,0 @@ -lbl_80362914: -/* 80362914 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80362918 7C 08 02 A6 */ mflr r0 -/* 8036291C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80362920 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80362924 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80362928 93 A1 00 14 */ stw r29, 0x14(r1) -/* 8036292C 7C 7D 1B 78 */ mr r29, r3 -/* 80362930 80 0D 84 10 */ lwz r0, __OSCurrHeap(r13) -/* 80362934 2C 00 FF FF */ cmpwi r0, -1 -/* 80362938 40 82 00 6C */ bne lbl_803629A4 -/* 8036293C 3C 60 80 3A */ lis r3, lit_55@ha /* 0x803A21A8@ha */ -/* 80362940 38 63 21 A8 */ addi r3, r3, lit_55@l /* 0x803A21A8@l */ -/* 80362944 4C C6 31 82 */ crclr 6 -/* 80362948 4B CA 41 75 */ bl OSReport -/* 8036294C 3C 60 80 3A */ lis r3, lit_56@ha /* 0x803A21E0@ha */ -/* 80362950 38 63 21 E0 */ addi r3, r3, lit_56@l /* 0x803A21E0@l */ -/* 80362954 4C C6 31 82 */ crclr 6 -/* 80362958 4B CA 41 65 */ bl OSReport -/* 8036295C 4B FD 89 39 */ bl OSGetArenaLo -/* 80362960 7C 7F 1B 78 */ mr r31, r3 -/* 80362964 4B FD 89 29 */ bl OSGetArenaHi -/* 80362968 7C 7E 1B 78 */ mr r30, r3 -/* 8036296C 7F E3 FB 78 */ mr r3, r31 -/* 80362970 38 A0 00 01 */ li r5, 1 -/* 80362974 7F C4 F3 78 */ mr r4, r30 -/* 80362978 4B FD 88 39 */ bl OSInitAlloc -/* 8036297C 7C 7F 1B 78 */ mr r31, r3 -/* 80362980 4B FD 89 25 */ bl OSSetArenaLo -/* 80362984 38 1F 00 1F */ addi r0, r31, 0x1f -/* 80362988 57 DE 00 34 */ rlwinm r30, r30, 0, 0, 0x1a -/* 8036298C 54 03 00 34 */ rlwinm r3, r0, 0, 0, 0x1a -/* 80362990 7F C4 F3 78 */ mr r4, r30 -/* 80362994 4B FD 88 8D */ bl OSCreateHeap -/* 80362998 4B FD 88 09 */ bl OSSetCurrentHeap -/* 8036299C 7F C3 F3 78 */ mr r3, r30 -/* 803629A0 4B FD 89 05 */ bl OSSetArenaLo -lbl_803629A4: -/* 803629A4 80 6D 84 10 */ lwz r3, __OSCurrHeap(r13) -/* 803629A8 7F A4 EB 78 */ mr r4, r29 -/* 803629AC 4B FD 87 79 */ bl OSFreeToHeap -/* 803629B0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 803629B4 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 803629B8 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 803629BC 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 803629C0 7C 08 03 A6 */ mtlr r0 -/* 803629C4 38 21 00 20 */ addi r1, r1, 0x20 -/* 803629C8 4E 80 00 20 */ blr diff --git a/asm/Runtime.PPCEABI.H/__va_arg/__va_arg.s b/asm/Runtime.PPCEABI.H/__va_arg/__va_arg.s deleted file mode 100644 index ad552a5d9f..0000000000 --- a/asm/Runtime.PPCEABI.H/__va_arg/__va_arg.s +++ /dev/null @@ -1,57 +0,0 @@ -lbl_80361B14: -/* 80361B14 88 E3 00 00 */ lbz r7, 0(r3) -/* 80361B18 2C 04 00 03 */ cmpwi r4, 3 -/* 80361B1C 7C 66 1B 78 */ mr r6, r3 -/* 80361B20 38 00 00 08 */ li r0, 8 -/* 80361B24 39 00 00 04 */ li r8, 4 -/* 80361B28 7C E7 07 74 */ extsb r7, r7 -/* 80361B2C 39 20 00 01 */ li r9, 1 -/* 80361B30 38 A0 00 00 */ li r5, 0 -/* 80361B34 39 40 00 00 */ li r10, 0 -/* 80361B38 39 60 00 04 */ li r11, 4 -/* 80361B3C 40 82 00 1C */ bne lbl_80361B58 -/* 80361B40 88 E3 00 01 */ lbz r7, 1(r3) -/* 80361B44 38 C3 00 01 */ addi r6, r3, 1 -/* 80361B48 39 00 00 08 */ li r8, 8 -/* 80361B4C 39 40 00 20 */ li r10, 0x20 -/* 80361B50 7C E7 07 74 */ extsb r7, r7 -/* 80361B54 39 60 00 08 */ li r11, 8 -lbl_80361B58: -/* 80361B58 2C 04 00 02 */ cmpwi r4, 2 -/* 80361B5C 40 82 00 1C */ bne lbl_80361B78 -/* 80361B60 54 E0 07 FF */ clrlwi. r0, r7, 0x1f -/* 80361B64 39 00 00 08 */ li r8, 8 -/* 80361B68 38 00 00 07 */ li r0, 7 -/* 80361B6C 41 82 00 08 */ beq lbl_80361B74 -/* 80361B70 38 A0 00 01 */ li r5, 1 -lbl_80361B74: -/* 80361B74 39 20 00 02 */ li r9, 2 -lbl_80361B78: -/* 80361B78 7C 07 00 00 */ cmpw r7, r0 -/* 80361B7C 40 80 00 24 */ bge lbl_80361BA0 -/* 80361B80 7C E7 2A 14 */ add r7, r7, r5 -/* 80361B84 80 A3 00 08 */ lwz r5, 8(r3) -/* 80361B88 7C 67 59 D6 */ mullw r3, r7, r11 -/* 80361B8C 7C 07 4A 14 */ add r0, r7, r9 -/* 80361B90 98 06 00 00 */ stb r0, 0(r6) -/* 80361B94 7C CA 1A 14 */ add r6, r10, r3 -/* 80361B98 7C C5 32 14 */ add r6, r5, r6 -/* 80361B9C 48 00 00 2C */ b lbl_80361BC8 -lbl_80361BA0: -/* 80361BA0 38 A0 00 08 */ li r5, 8 -/* 80361BA4 38 08 FF FF */ addi r0, r8, -1 -/* 80361BA8 98 A6 00 00 */ stb r5, 0(r6) -/* 80361BAC 7C 06 00 F8 */ nor r6, r0, r0 -/* 80361BB0 80 03 00 04 */ lwz r0, 4(r3) -/* 80361BB4 7C A8 02 14 */ add r5, r8, r0 -/* 80361BB8 38 05 FF FF */ addi r0, r5, -1 -/* 80361BBC 7C C6 00 38 */ and r6, r6, r0 -/* 80361BC0 7C 06 42 14 */ add r0, r6, r8 -/* 80361BC4 90 03 00 04 */ stw r0, 4(r3) -lbl_80361BC8: -/* 80361BC8 2C 04 00 00 */ cmpwi r4, 0 -/* 80361BCC 40 82 00 08 */ bne lbl_80361BD4 -/* 80361BD0 80 C6 00 00 */ lwz r6, 0(r6) -lbl_80361BD4: -/* 80361BD4 7C C3 33 78 */ mr r3, r6 -/* 80361BD8 4E 80 00 20 */ blr diff --git a/asm/Runtime.PPCEABI.H/ptmf/__ptmf_cmpr.s b/asm/Runtime.PPCEABI.H/ptmf/__ptmf_cmpr.s deleted file mode 100644 index 9bc0aaccba..0000000000 --- a/asm/Runtime.PPCEABI.H/ptmf/__ptmf_cmpr.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_80362048: -/* 80362048 80 A3 00 00 */ lwz r5, 0(r3) -/* 8036204C 80 C4 00 00 */ lwz r6, 0(r4) -/* 80362050 80 E3 00 04 */ lwz r7, 4(r3) -/* 80362054 81 04 00 04 */ lwz r8, 4(r4) -/* 80362058 81 23 00 08 */ lwz r9, 8(r3) -/* 8036205C 81 44 00 08 */ lwz r10, 8(r4) -/* 80362060 38 60 00 01 */ li r3, 1 -/* 80362064 7C 05 30 00 */ cmpw r5, r6 -/* 80362068 7F 07 40 00 */ cmpw cr6, r7, r8 -/* 8036206C 7F 89 50 00 */ cmpw cr7, r9, r10 -/* 80362070 4C 82 00 20 */ bnelr -/* 80362074 4C 9A 00 20 */ bnelr cr6 -/* 80362078 4C 9E 00 20 */ bnelr cr7 -/* 8036207C 38 60 00 00 */ li r3, 0 -/* 80362080 4E 80 00 20 */ blr diff --git a/asm/Runtime.PPCEABI.H/ptmf/__ptmf_scall.s b/asm/Runtime.PPCEABI.H/ptmf/__ptmf_scall.s deleted file mode 100644 index 8794d3979f..0000000000 --- a/asm/Runtime.PPCEABI.H/ptmf/__ptmf_scall.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80362084: -/* 80362084 80 0C 00 00 */ lwz r0, 0(r12) -/* 80362088 81 6C 00 04 */ lwz r11, 4(r12) -/* 8036208C 81 8C 00 08 */ lwz r12, 8(r12) -/* 80362090 7C 63 02 14 */ add r3, r3, r0 -/* 80362094 2C 0B 00 00 */ cmpwi r11, 0 -/* 80362098 41 80 00 0C */ blt lbl_803620A4 -/* 8036209C 7D 83 60 2E */ lwzx r12, r3, r12 -/* 803620A0 7D 8C 58 2E */ lwzx r12, r12, r11 -lbl_803620A4: -/* 803620A4 7D 89 03 A6 */ mtctr r12 -/* 803620A8 4E 80 04 20 */ bctr diff --git a/asm/Runtime.PPCEABI.H/ptmf/__ptmf_test.s b/asm/Runtime.PPCEABI.H/ptmf/__ptmf_test.s deleted file mode 100644 index f97fb34242..0000000000 --- a/asm/Runtime.PPCEABI.H/ptmf/__ptmf_test.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80362018: -/* 80362018 80 A3 00 00 */ lwz r5, 0(r3) -/* 8036201C 80 C3 00 04 */ lwz r6, 4(r3) -/* 80362020 80 E3 00 08 */ lwz r7, 8(r3) -/* 80362024 38 60 00 01 */ li r3, 1 -/* 80362028 2C 05 00 00 */ cmpwi r5, 0 -/* 8036202C 2F 06 00 00 */ cmpwi cr6, r6, 0 -/* 80362030 2F 87 00 00 */ cmpwi cr7, r7, 0 -/* 80362034 4C 82 00 20 */ bnelr -/* 80362038 4C 9A 00 20 */ bnelr cr6 -/* 8036203C 4C 9E 00 20 */ bnelr cr7 -/* 80362040 38 60 00 00 */ li r3, 0 -/* 80362044 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch/TRKDispatchMessage.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch/TRKDispatchMessage.s deleted file mode 100644 index e8c7e083e6..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch/TRKDispatchMessage.s +++ /dev/null @@ -1,94 +0,0 @@ -lbl_8036DB9C: -/* 8036DB9C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8036DBA0 7C 08 02 A6 */ mflr r0 -/* 8036DBA4 38 80 00 00 */ li r4, 0 -/* 8036DBA8 90 01 00 14 */ stw r0, 0x14(r1) -/* 8036DBAC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8036DBB0 3B E0 05 00 */ li r31, 0x500 -/* 8036DBB4 93 C1 00 08 */ stw r30, 8(r1) -/* 8036DBB8 7C 7E 1B 78 */ mr r30, r3 -/* 8036DBBC 4B FF FA 61 */ bl TRKSetBufferPosition -/* 8036DBC0 3C 60 80 3A */ lis r3, lit_126@ha /* 0x803A2890@ha */ -/* 8036DBC4 88 BE 00 14 */ lbz r5, 0x14(r30) -/* 8036DBC8 38 83 28 90 */ addi r4, r3, lit_126@l /* 0x803A2890@l */ -/* 8036DBCC 38 60 00 01 */ li r3, 1 -/* 8036DBD0 4C C6 31 82 */ crclr 6 -/* 8036DBD4 48 00 50 81 */ bl MWTRACE -/* 8036DBD8 88 1E 00 14 */ lbz r0, 0x14(r30) -/* 8036DBDC 28 00 00 1A */ cmplwi r0, 0x1a -/* 8036DBE0 41 81 00 F8 */ bgt lbl_8036DCD8 -/* 8036DBE4 3C 60 80 3D */ lis r3, lit_128@ha /* 0x803D3190@ha */ -/* 8036DBE8 54 00 10 3A */ slwi r0, r0, 2 -/* 8036DBEC 38 63 31 90 */ addi r3, r3, lit_128@l /* 0x803D3190@l */ -/* 8036DBF0 7C 03 00 2E */ lwzx r0, r3, r0 -/* 8036DBF4 7C 09 03 A6 */ mtctr r0 -/* 8036DBF8 4E 80 04 20 */ bctr -/* 8036DBFC 7F C3 F3 78 */ mr r3, r30 -/* 8036DC00 48 00 10 5D */ bl TRKDoConnect -/* 8036DC04 7C 7F 1B 78 */ mr r31, r3 -/* 8036DC08 48 00 00 D0 */ b lbl_8036DCD8 -/* 8036DC0C 7F C3 F3 78 */ mr r3, r30 -/* 8036DC10 48 00 0F D5 */ bl TRKDoDisconnect -/* 8036DC14 7C 7F 1B 78 */ mr r31, r3 -/* 8036DC18 48 00 00 C0 */ b lbl_8036DCD8 -/* 8036DC1C 7F C3 F3 78 */ mr r3, r30 -/* 8036DC20 48 00 0F 6D */ bl TRKDoReset -/* 8036DC24 7C 7F 1B 78 */ mr r31, r3 -/* 8036DC28 48 00 00 B0 */ b lbl_8036DCD8 -/* 8036DC2C 7F C3 F3 78 */ mr r3, r30 -/* 8036DC30 48 00 0F 05 */ bl TRKDoOverride -/* 8036DC34 7C 7F 1B 78 */ mr r31, r3 -/* 8036DC38 48 00 00 A0 */ b lbl_8036DCD8 -/* 8036DC3C 7F C3 F3 78 */ mr r3, r30 -/* 8036DC40 48 00 0E ED */ bl TRKDoVersions -/* 8036DC44 7C 7F 1B 78 */ mr r31, r3 -/* 8036DC48 48 00 00 90 */ b lbl_8036DCD8 -/* 8036DC4C 7F C3 F3 78 */ mr r3, r30 -/* 8036DC50 48 00 0E D5 */ bl TRKDoSupportMask -/* 8036DC54 7C 7F 1B 78 */ mr r31, r3 -/* 8036DC58 48 00 00 80 */ b lbl_8036DCD8 -/* 8036DC5C 7F C3 F3 78 */ mr r3, r30 -/* 8036DC60 48 00 0C 81 */ bl TRKDoReadMemory -/* 8036DC64 7C 7F 1B 78 */ mr r31, r3 -/* 8036DC68 48 00 00 70 */ b lbl_8036DCD8 -/* 8036DC6C 7F C3 F3 78 */ mr r3, r30 -/* 8036DC70 48 00 0A 35 */ bl TRKDoWriteMemory -/* 8036DC74 7C 7F 1B 78 */ mr r31, r3 -/* 8036DC78 48 00 00 60 */ b lbl_8036DCD8 -/* 8036DC7C 7F C3 F3 78 */ mr r3, r30 -/* 8036DC80 48 00 07 45 */ bl TRKDoReadRegisters -/* 8036DC84 7C 7F 1B 78 */ mr r31, r3 -/* 8036DC88 48 00 00 50 */ b lbl_8036DCD8 -/* 8036DC8C 7F C3 F3 78 */ mr r3, r30 -/* 8036DC90 48 00 04 A5 */ bl TRKDoWriteRegisters -/* 8036DC94 7C 7F 1B 78 */ mr r31, r3 -/* 8036DC98 48 00 00 40 */ b lbl_8036DCD8 -/* 8036DC9C 7F C3 F3 78 */ mr r3, r30 -/* 8036DCA0 48 00 03 E5 */ bl TRKDoContinue -/* 8036DCA4 7C 7F 1B 78 */ mr r31, r3 -/* 8036DCA8 48 00 00 30 */ b lbl_8036DCD8 -/* 8036DCAC 7F C3 F3 78 */ mr r3, r30 -/* 8036DCB0 48 00 01 B5 */ bl TRKDoStep -/* 8036DCB4 7C 7F 1B 78 */ mr r31, r3 -/* 8036DCB8 48 00 00 20 */ b lbl_8036DCD8 -/* 8036DCBC 7F C3 F3 78 */ mr r3, r30 -/* 8036DCC0 48 00 00 FD */ bl TRKDoStop -/* 8036DCC4 7C 7F 1B 78 */ mr r31, r3 -/* 8036DCC8 48 00 00 10 */ b lbl_8036DCD8 -/* 8036DCCC 7F C3 F3 78 */ mr r3, r30 -/* 8036DCD0 48 00 00 45 */ bl TRKDoSetOption -/* 8036DCD4 7C 7F 1B 78 */ mr r31, r3 -lbl_8036DCD8: -/* 8036DCD8 3C 60 80 3A */ lis r3, lit_127@ha /* 0x803A28AC@ha */ -/* 8036DCDC 7F E5 FB 78 */ mr r5, r31 -/* 8036DCE0 38 83 28 AC */ addi r4, r3, lit_127@l /* 0x803A28AC@l */ -/* 8036DCE4 38 60 00 01 */ li r3, 1 -/* 8036DCE8 4C C6 31 82 */ crclr 6 -/* 8036DCEC 48 00 4F 69 */ bl MWTRACE -/* 8036DCF0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8036DCF4 7F E3 FB 78 */ mr r3, r31 -/* 8036DCF8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8036DCFC 83 C1 00 08 */ lwz r30, 8(r1) -/* 8036DD00 7C 08 03 A6 */ mtlr r0 -/* 8036DD04 38 21 00 10 */ addi r1, r1, 0x10 -/* 8036DD08 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK/TRK_main.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK/TRK_main.s deleted file mode 100644 index 960ecfbcd2..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK/TRK_main.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_80371B9C: -/* 80371B9C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80371BA0 7C 08 02 A6 */ mflr r0 -/* 80371BA4 3C 80 80 3A */ lis r4, lit_80@ha /* 0x803A2BF8@ha */ -/* 80371BA8 38 60 00 01 */ li r3, 1 -/* 80371BAC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80371BB0 38 84 2B F8 */ addi r4, r4, lit_80@l /* 0x803A2BF8@l */ -/* 80371BB4 4C C6 31 82 */ crclr 6 -/* 80371BB8 48 00 10 9D */ bl MWTRACE -/* 80371BBC 4B FF B2 D1 */ bl TRKInitializeNub -/* 80371BC0 3C 80 80 45 */ lis r4, TRK_mainError@ha /* 0x8044F818@ha */ -/* 80371BC4 2C 03 00 00 */ cmpwi r3, 0 -/* 80371BC8 90 64 F8 18 */ stw r3, TRK_mainError@l(r4) /* 0x8044F818@l */ -/* 80371BCC 40 82 00 0C */ bne lbl_80371BD8 -/* 80371BD0 4B FF B2 71 */ bl TRKNubWelcome -/* 80371BD4 4B FF AF 4D */ bl TRKNubMainLoop -lbl_80371BD8: -/* 80371BD8 4B FF B2 91 */ bl TRKTerminateNub -/* 80371BDC 3C 80 80 45 */ lis r4, TRK_mainError@ha /* 0x8044F818@ha */ -/* 80371BE0 90 64 F8 18 */ stw r3, TRK_mainError@l(r4) /* 0x8044F818@l */ -/* 80371BE4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80371BE8 7C 08 03 A6 */ mtlr r0 -/* 80371BEC 38 21 00 10 */ addi r1, r1, 0x10 -/* 80371BF0 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK/TRK_fill_mem.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK/TRK_fill_mem.s deleted file mode 100644 index 5e48f4e2f9..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK/TRK_fill_mem.s +++ /dev/null @@ -1,56 +0,0 @@ -lbl_8036F580: -/* 8036F580 28 05 00 20 */ cmplwi r5, 0x20 -/* 8036F584 54 84 06 3E */ clrlwi r4, r4, 0x18 -/* 8036F588 38 C3 FF FF */ addi r6, r3, -1 -/* 8036F58C 7C 87 23 78 */ mr r7, r4 -/* 8036F590 41 80 00 90 */ blt lbl_8036F620 -/* 8036F594 7C C0 30 F8 */ nor r0, r6, r6 -/* 8036F598 54 03 07 BF */ clrlwi. r3, r0, 0x1e -/* 8036F59C 41 82 00 14 */ beq lbl_8036F5B0 -/* 8036F5A0 7C A3 28 50 */ subf r5, r3, r5 -lbl_8036F5A4: -/* 8036F5A4 34 63 FF FF */ addic. r3, r3, -1 -/* 8036F5A8 9C E6 00 01 */ stbu r7, 1(r6) -/* 8036F5AC 40 82 FF F8 */ bne lbl_8036F5A4 -lbl_8036F5B0: -/* 8036F5B0 28 07 00 00 */ cmplwi r7, 0 -/* 8036F5B4 41 82 00 1C */ beq lbl_8036F5D0 -/* 8036F5B8 54 E3 C0 0E */ slwi r3, r7, 0x18 -/* 8036F5BC 54 E0 80 1E */ slwi r0, r7, 0x10 -/* 8036F5C0 54 E4 40 2E */ slwi r4, r7, 8 -/* 8036F5C4 7C 60 03 78 */ or r0, r3, r0 -/* 8036F5C8 7C 80 03 78 */ or r0, r4, r0 -/* 8036F5CC 7C E7 03 78 */ or r7, r7, r0 -lbl_8036F5D0: -/* 8036F5D0 54 A4 D9 7F */ rlwinm. r4, r5, 0x1b, 5, 0x1f -/* 8036F5D4 38 66 FF FD */ addi r3, r6, -3 -/* 8036F5D8 41 82 00 2C */ beq lbl_8036F604 -lbl_8036F5DC: -/* 8036F5DC 90 E3 00 04 */ stw r7, 4(r3) -/* 8036F5E0 34 84 FF FF */ addic. r4, r4, -1 -/* 8036F5E4 90 E3 00 08 */ stw r7, 8(r3) -/* 8036F5E8 90 E3 00 0C */ stw r7, 0xc(r3) -/* 8036F5EC 90 E3 00 10 */ stw r7, 0x10(r3) -/* 8036F5F0 90 E3 00 14 */ stw r7, 0x14(r3) -/* 8036F5F4 90 E3 00 18 */ stw r7, 0x18(r3) -/* 8036F5F8 90 E3 00 1C */ stw r7, 0x1c(r3) -/* 8036F5FC 94 E3 00 20 */ stwu r7, 0x20(r3) -/* 8036F600 40 82 FF DC */ bne lbl_8036F5DC -lbl_8036F604: -/* 8036F604 54 A4 F7 7F */ rlwinm. r4, r5, 0x1e, 0x1d, 0x1f -/* 8036F608 41 82 00 10 */ beq lbl_8036F618 -lbl_8036F60C: -/* 8036F60C 34 84 FF FF */ addic. r4, r4, -1 -/* 8036F610 94 E3 00 04 */ stwu r7, 4(r3) -/* 8036F614 40 82 FF F8 */ bne lbl_8036F60C -lbl_8036F618: -/* 8036F618 38 C3 00 03 */ addi r6, r3, 3 -/* 8036F61C 54 A5 07 BE */ clrlwi r5, r5, 0x1e -lbl_8036F620: -/* 8036F620 28 05 00 00 */ cmplwi r5, 0 -/* 8036F624 4D 82 00 20 */ beqlr -lbl_8036F628: -/* 8036F628 34 A5 FF FF */ addic. r5, r5, -1 -/* 8036F62C 9C E6 00 01 */ stbu r7, 1(r6) -/* 8036F630 40 82 FF F8 */ bne lbl_8036F628 -/* 8036F634 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg/TRKMessageSend.s b/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg/TRKMessageSend.s deleted file mode 100644 index 262f7a82a6..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg/TRKMessageSend.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_8036CFD8: -/* 8036CFD8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8036CFDC 7C 08 02 A6 */ mflr r0 -/* 8036CFE0 90 01 00 14 */ stw r0, 0x14(r1) -/* 8036CFE4 80 83 00 08 */ lwz r4, 8(r3) -/* 8036CFE8 38 63 00 10 */ addi r3, r3, 0x10 -/* 8036CFEC 48 00 4D 7D */ bl TRKWriteUARTN -/* 8036CFF0 3C 80 80 3A */ lis r4, lit_98@ha /* 0x803A26B8@ha */ -/* 8036CFF4 7C 65 1B 78 */ mr r5, r3 -/* 8036CFF8 38 60 00 01 */ li r3, 1 -/* 8036CFFC 38 84 26 B8 */ addi r4, r4, lit_98@l /* 0x803A26B8@l */ -/* 8036D000 4C C6 31 82 */ crclr 6 -/* 8036D004 48 00 5C 51 */ bl MWTRACE -/* 8036D008 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8036D00C 38 60 00 00 */ li r3, 0 -/* 8036D010 7C 08 03 A6 */ mtlr r0 -/* 8036D014 38 21 00 10 */ addi r1, r1, 0x10 -/* 8036D018 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/targcont/TRKTargetContinue.s b/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/targcont/TRKTargetContinue.s deleted file mode 100644 index ca2d40d0a3..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/targcont/TRKTargetContinue.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_8037214C: -/* 8037214C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80372150 7C 08 02 A6 */ mflr r0 -/* 80372154 38 60 00 00 */ li r3, 0 -/* 80372158 90 01 00 14 */ stw r0, 0x14(r1) -/* 8037215C 4B FF D9 A5 */ bl TRKTargetSetStopped -/* 80372160 4B FF FB A9 */ bl UnreserveEXI2Port -/* 80372164 4B FF D7 51 */ bl TRKSwapAndGo -/* 80372168 4B FF FB D1 */ bl ReserveEXI2Port -/* 8037216C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80372170 38 60 00 00 */ li r3, 0 -/* 80372174 7C 08 03 A6 */ mtlr r0 -/* 80372178 38 21 00 10 */ addi r1, r1, 0x10 -/* 8037217C 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/target_options/GetUseSerialIO.s b/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/target_options/GetUseSerialIO.s deleted file mode 100644 index 8006ad0ea3..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/target_options/GetUseSerialIO.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_80372180: -/* 80372180 3C 60 80 45 */ lis r3, data_8044F828@ha /* 0x8044F828@ha */ -/* 80372184 38 63 F8 28 */ addi r3, r3, data_8044F828@l /* 0x8044F828@l */ -/* 80372188 88 63 00 00 */ lbz r3, 0(r3) -/* 8037218C 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/target_options/SetUseSerialIO.s b/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/target_options/SetUseSerialIO.s deleted file mode 100644 index 4c1967c55a..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/target_options/SetUseSerialIO.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_80372190: -/* 80372190 3C 80 80 45 */ lis r4, data_8044F828@ha /* 0x8044F828@ha */ -/* 80372194 98 64 F8 28 */ stb r3, data_8044F828@l(r4) /* 0x8044F828@l */ -/* 80372198 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put/usr_puts_serial.s b/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put/usr_puts_serial.s deleted file mode 100644 index ae4f1f9906..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put/usr_puts_serial.s +++ /dev/null @@ -1,38 +0,0 @@ -lbl_8036DB14: -/* 8036DB14 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8036DB18 7C 08 02 A6 */ mflr r0 -/* 8036DB1C 90 01 00 24 */ stw r0, 0x24(r1) -/* 8036DB20 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8036DB24 3B E0 00 00 */ li r31, 0 -/* 8036DB28 93 C1 00 18 */ stw r30, 0x18(r1) -/* 8036DB2C 93 A1 00 14 */ stw r29, 0x14(r1) -/* 8036DB30 7C 7D 1B 78 */ mr r29, r3 -/* 8036DB34 38 60 00 00 */ li r3, 0 -/* 8036DB38 48 00 00 30 */ b lbl_8036DB68 -lbl_8036DB3C: -/* 8036DB3C 48 00 11 91 */ bl GetTRKConnected -/* 8036DB40 9B C1 00 08 */ stb r30, 8(r1) -/* 8036DB44 7C 7E 1B 78 */ mr r30, r3 -/* 8036DB48 38 60 00 00 */ li r3, 0 -/* 8036DB4C 9B E1 00 09 */ stb r31, 9(r1) -/* 8036DB50 48 00 11 71 */ bl SetTRKConnected -/* 8036DB54 38 61 00 08 */ addi r3, r1, 8 -/* 8036DB58 4B C9 8F 65 */ bl OSReport -/* 8036DB5C 7F C3 F3 78 */ mr r3, r30 -/* 8036DB60 48 00 11 61 */ bl SetTRKConnected -/* 8036DB64 38 60 00 00 */ li r3, 0 -lbl_8036DB68: -/* 8036DB68 2C 03 00 00 */ cmpwi r3, 0 -/* 8036DB6C 40 82 00 14 */ bne lbl_8036DB80 -/* 8036DB70 88 1D 00 00 */ lbz r0, 0(r29) -/* 8036DB74 3B BD 00 01 */ addi r29, r29, 1 -/* 8036DB78 7C 1E 07 75 */ extsb. r30, r0 -/* 8036DB7C 40 82 FF C0 */ bne lbl_8036DB3C -lbl_8036DB80: -/* 8036DB80 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8036DB84 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8036DB88 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 8036DB8C 83 A1 00 14 */ lwz r29, 0x14(r1) -/* 8036DB90 7C 08 03 A6 */ mtlr r0 -/* 8036DB94 38 21 00 20 */ addi r1, r1, 0x20 -/* 8036DB98 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache/TRK_flush_cache.s b/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache/TRK_flush_cache.s deleted file mode 100644 index c816195046..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache/TRK_flush_cache.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_8036F548: -/* 8036F548 3C A0 FF FF */ lis r5, 0xFFFF /* 0xFFFFFFF1@h */ -/* 8036F54C 60 A5 FF F1 */ ori r5, r5, 0xFFF1 /* 0xFFFFFFF1@l */ -/* 8036F550 7C A5 18 38 */ and r5, r5, r3 -/* 8036F554 7C 65 18 50 */ subf r3, r5, r3 -/* 8036F558 7C 84 1A 14 */ add r4, r4, r3 -lbl_8036F55C: -/* 8036F55C 7C 00 28 6C */ dcbst 0, r5 -/* 8036F560 7C 00 28 AC */ dcbf 0, r5 -/* 8036F564 7C 00 04 AC */ sync -/* 8036F568 7C 00 2F AC */ icbi 0, r5 -/* 8036F56C 30 A5 00 08 */ addic r5, r5, 8 -/* 8036F570 34 84 FF F8 */ addic. r4, r4, -8 -/* 8036F574 40 80 FF E8 */ bge lbl_8036F55C -/* 8036F578 4C 00 01 2C */ isync -/* 8036F57C 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/utils/common/MWTrace/MWTRACE.s b/asm/TRK_MINNOW_DOLPHIN/utils/common/MWTrace/MWTRACE.s deleted file mode 100644 index 2f7ff4c4f3..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/utils/common/MWTrace/MWTRACE.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_80372C54: -/* 80372C54 94 21 FF 90 */ stwu r1, -0x70(r1) -/* 80372C58 40 86 00 24 */ bne cr1, lbl_80372C7C -/* 80372C5C D8 21 00 28 */ stfd f1, 0x28(r1) -/* 80372C60 D8 41 00 30 */ stfd f2, 0x30(r1) -/* 80372C64 D8 61 00 38 */ stfd f3, 0x38(r1) -/* 80372C68 D8 81 00 40 */ stfd f4, 0x40(r1) -/* 80372C6C D8 A1 00 48 */ stfd f5, 0x48(r1) -/* 80372C70 D8 C1 00 50 */ stfd f6, 0x50(r1) -/* 80372C74 D8 E1 00 58 */ stfd f7, 0x58(r1) -/* 80372C78 D9 01 00 60 */ stfd f8, 0x60(r1) -lbl_80372C7C: -/* 80372C7C 90 61 00 08 */ stw r3, 8(r1) -/* 80372C80 90 81 00 0C */ stw r4, 0xc(r1) -/* 80372C84 90 A1 00 10 */ stw r5, 0x10(r1) -/* 80372C88 90 C1 00 14 */ stw r6, 0x14(r1) -/* 80372C8C 90 E1 00 18 */ stw r7, 0x18(r1) -/* 80372C90 91 01 00 1C */ stw r8, 0x1c(r1) -/* 80372C94 91 21 00 20 */ stw r9, 0x20(r1) -/* 80372C98 91 41 00 24 */ stw r10, 0x24(r1) -/* 80372C9C 38 21 00 70 */ addi r1, r1, 0x70 -/* 80372CA0 4E 80 00 20 */ blr diff --git a/asm/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc/MWExitCriticalSection.s b/asm/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc/MWExitCriticalSection.s deleted file mode 100644 index b514e7799a..0000000000 --- a/asm/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc/MWExitCriticalSection.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_80372CA4: -/* 80372CA4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80372CA8 7C 08 02 A6 */ mflr r0 -/* 80372CAC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80372CB0 80 63 00 00 */ lwz r3, 0(r3) -/* 80372CB4 4B FC AA 69 */ bl OSRestoreInterrupts -/* 80372CB8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80372CBC 7C 08 03 A6 */ mtlr r0 -/* 80372CC0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80372CC4 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/allAnimePlay__9daAlink_cFv.s b/asm/d/a/d_a_alink/allAnimePlay__9daAlink_cFv.s deleted file mode 100644 index af9b08489a..0000000000 --- a/asm/d/a/d_a_alink/allAnimePlay__9daAlink_cFv.s +++ /dev/null @@ -1,101 +0,0 @@ -lbl_800AD170: -/* 800AD170 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 800AD174 7C 08 02 A6 */ mflr r0 -/* 800AD178 90 01 00 34 */ stw r0, 0x34(r1) -/* 800AD17C 39 61 00 30 */ addi r11, r1, 0x30 -/* 800AD180 48 2B 50 49 */ bl _savegpr_24 -/* 800AD184 7C 7F 1B 78 */ mr r31, r3 -/* 800AD188 83 83 1F 2C */ lwz r28, 0x1f2c(r3) -/* 800AD18C 83 63 1F 34 */ lwz r27, 0x1f34(r3) -/* 800AD190 83 43 1F 44 */ lwz r26, 0x1f44(r3) -/* 800AD194 83 23 1F 4C */ lwz r25, 0x1f4c(r3) -/* 800AD198 80 03 05 74 */ lwz r0, 0x574(r3) -/* 800AD19C 54 00 01 8D */ rlwinm. r0, r0, 0, 6, 6 -/* 800AD1A0 41 82 00 08 */ beq lbl_800AD1A8 -/* 800AD1A4 48 07 F9 69 */ bl setWolfAnmVoice__9daAlink_cFv -lbl_800AD1A8: -/* 800AD1A8 3B 00 00 00 */ li r24, 0 -/* 800AD1AC 3B C0 00 00 */ li r30, 0 -/* 800AD1B0 3B A0 00 00 */ li r29, 0 -lbl_800AD1B4: -/* 800AD1B4 7F E3 FB 78 */ mr r3, r31 -/* 800AD1B8 38 1D 1F 2C */ addi r0, r29, 0x1f2c -/* 800AD1BC 7C 9F 00 2E */ lwzx r4, r31, r0 -/* 800AD1C0 38 BE 1F D0 */ addi r5, r30, 0x1fd0 -/* 800AD1C4 7C BF 2A 14 */ add r5, r31, r5 -/* 800AD1C8 4B FF FF 61 */ bl animePlay__9daAlink_cFP15J3DAnmTransformP16daPy_frameCtrl_c -/* 800AD1CC 3B 18 00 01 */ addi r24, r24, 1 -/* 800AD1D0 2C 18 00 03 */ cmpwi r24, 3 -/* 800AD1D4 3B DE 00 18 */ addi r30, r30, 0x18 -/* 800AD1D8 3B BD 00 08 */ addi r29, r29, 8 -/* 800AD1DC 41 80 FF D8 */ blt lbl_800AD1B4 -/* 800AD1E0 7C 1A E0 40 */ cmplw r26, r28 -/* 800AD1E4 41 82 00 14 */ beq lbl_800AD1F8 -/* 800AD1E8 7F E3 FB 78 */ mr r3, r31 -/* 800AD1EC 7F 44 D3 78 */ mr r4, r26 -/* 800AD1F0 38 BF 20 18 */ addi r5, r31, 0x2018 -/* 800AD1F4 4B FF FF 35 */ bl animePlay__9daAlink_cFP15J3DAnmTransformP16daPy_frameCtrl_c -lbl_800AD1F8: -/* 800AD1F8 7C 19 D8 40 */ cmplw r25, r27 -/* 800AD1FC 41 82 00 14 */ beq lbl_800AD210 -/* 800AD200 7F E3 FB 78 */ mr r3, r31 -/* 800AD204 7F 24 CB 78 */ mr r4, r25 -/* 800AD208 38 BF 20 30 */ addi r5, r31, 0x2030 -/* 800AD20C 4B FF FF 1D */ bl animePlay__9daAlink_cFP15J3DAnmTransformP16daPy_frameCtrl_c -lbl_800AD210: -/* 800AD210 7F E3 FB 78 */ mr r3, r31 -/* 800AD214 80 9F 1F 54 */ lwz r4, 0x1f54(r31) -/* 800AD218 38 BF 20 48 */ addi r5, r31, 0x2048 -/* 800AD21C 4B FF FF 0D */ bl animePlay__9daAlink_cFP15J3DAnmTransformP16daPy_frameCtrl_c -/* 800AD220 88 1F 2F 92 */ lbz r0, 0x2f92(r31) -/* 800AD224 28 00 00 FB */ cmplwi r0, 0xfb -/* 800AD228 40 82 00 14 */ bne lbl_800AD23C -/* 800AD22C 80 7F 06 A4 */ lwz r3, 0x6a4(r31) -/* 800AD230 28 03 00 00 */ cmplwi r3, 0 -/* 800AD234 41 82 00 08 */ beq lbl_800AD23C -/* 800AD238 4B F6 01 F1 */ bl play__14mDoExt_baseAnmFv -lbl_800AD23C: -/* 800AD23C 88 1F 2F 93 */ lbz r0, 0x2f93(r31) -/* 800AD240 28 00 00 FB */ cmplwi r0, 0xfb -/* 800AD244 40 82 00 14 */ bne lbl_800AD258 -/* 800AD248 80 7F 06 AC */ lwz r3, 0x6ac(r31) -/* 800AD24C 28 03 00 00 */ cmplwi r3, 0 -/* 800AD250 41 82 00 08 */ beq lbl_800AD258 -/* 800AD254 4B F6 01 D5 */ bl play__14mDoExt_baseAnmFv -lbl_800AD258: -/* 800AD258 80 1F 05 74 */ lwz r0, 0x574(r31) -/* 800AD25C 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b -/* 800AD260 41 82 00 40 */ beq lbl_800AD2A0 -/* 800AD264 80 7F 06 9C */ lwz r3, 0x69c(r31) -/* 800AD268 28 03 00 00 */ cmplwi r3, 0 -/* 800AD26C 41 82 00 14 */ beq lbl_800AD280 -/* 800AD270 80 63 00 14 */ lwz r3, 0x14(r3) -/* 800AD274 28 03 00 00 */ cmplwi r3, 0 -/* 800AD278 41 82 00 08 */ beq lbl_800AD280 -/* 800AD27C 4B FF BF CD */ bl simpleAnmPlay__9daAlink_cFP10J3DAnmBase -lbl_800AD280: -/* 800AD280 80 7F 06 8C */ lwz r3, 0x68c(r31) -/* 800AD284 28 03 00 00 */ cmplwi r3, 0 -/* 800AD288 41 82 00 08 */ beq lbl_800AD290 -/* 800AD28C 4B FF BF BD */ bl simpleAnmPlay__9daAlink_cFP10J3DAnmBase -lbl_800AD290: -/* 800AD290 80 7F 06 90 */ lwz r3, 0x690(r31) -/* 800AD294 28 03 00 00 */ cmplwi r3, 0 -/* 800AD298 41 82 00 08 */ beq lbl_800AD2A0 -/* 800AD29C 4B F6 01 8D */ bl play__14mDoExt_baseAnmFv -lbl_800AD2A0: -/* 800AD2A0 80 7F 06 B0 */ lwz r3, 0x6b0(r31) -/* 800AD2A4 28 03 00 00 */ cmplwi r3, 0 -/* 800AD2A8 41 82 00 08 */ beq lbl_800AD2B0 -/* 800AD2AC 4B F6 01 7D */ bl play__14mDoExt_baseAnmFv -lbl_800AD2B0: -/* 800AD2B0 80 7F 06 F4 */ lwz r3, 0x6f4(r31) -/* 800AD2B4 4B FF BF 95 */ bl simpleAnmPlay__9daAlink_cFP10J3DAnmBase -/* 800AD2B8 80 7F 06 F8 */ lwz r3, 0x6f8(r31) -/* 800AD2BC 4B FF BF 8D */ bl simpleAnmPlay__9daAlink_cFP10J3DAnmBase -/* 800AD2C0 39 61 00 30 */ addi r11, r1, 0x30 -/* 800AD2C4 48 2B 4F 51 */ bl _restgpr_24 -/* 800AD2C8 80 01 00 34 */ lwz r0, 0x34(r1) -/* 800AD2CC 7C 08 03 A6 */ mtlr r0 -/* 800AD2D0 38 21 00 30 */ addi r1, r1, 0x30 -/* 800AD2D4 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/checkAtnLeftAnime__9daAlink_cFv.s b/asm/d/a/d_a_alink/checkAtnLeftAnime__9daAlink_cFv.s deleted file mode 100644 index 4c10de82f4..0000000000 --- a/asm/d/a/d_a_alink/checkAtnLeftAnime__9daAlink_cFv.s +++ /dev/null @@ -1,42 +0,0 @@ -lbl_800ADC50: -/* 800ADC50 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800ADC54 7C 08 02 A6 */ mflr r0 -/* 800ADC58 90 01 00 14 */ stw r0, 0x14(r1) -/* 800ADC5C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800ADC60 93 C1 00 08 */ stw r30, 8(r1) -/* 800ADC64 7C 7E 1B 78 */ mr r30, r3 -/* 800ADC68 3B E0 00 00 */ li r31, 0 -/* 800ADC6C 38 80 00 10 */ li r4, 0x10 -/* 800ADC70 4B FF E8 E9 */ bl checkUnderMove0BckNoArc__9daAlink_cCFQ29daAlink_c11daAlink_ANM -/* 800ADC74 2C 03 00 00 */ cmpwi r3, 0 -/* 800ADC78 40 82 00 54 */ bne lbl_800ADCCC -/* 800ADC7C 7F C3 F3 78 */ mr r3, r30 -/* 800ADC80 38 80 00 06 */ li r4, 6 -/* 800ADC84 4B FF E8 D5 */ bl checkUnderMove0BckNoArc__9daAlink_cCFQ29daAlink_c11daAlink_ANM -/* 800ADC88 2C 03 00 00 */ cmpwi r3, 0 -/* 800ADC8C 40 82 00 40 */ bne lbl_800ADCCC -/* 800ADC90 7F C3 F3 78 */ mr r3, r30 -/* 800ADC94 38 80 00 0A */ li r4, 0xa -/* 800ADC98 4B FF E8 C1 */ bl checkUnderMove0BckNoArc__9daAlink_cCFQ29daAlink_c11daAlink_ANM -/* 800ADC9C 2C 03 00 00 */ cmpwi r3, 0 -/* 800ADCA0 40 82 00 2C */ bne lbl_800ADCCC -/* 800ADCA4 7F C3 F3 78 */ mr r3, r30 -/* 800ADCA8 38 80 00 07 */ li r4, 7 -/* 800ADCAC 4B FF E8 AD */ bl checkUnderMove0BckNoArc__9daAlink_cCFQ29daAlink_c11daAlink_ANM -/* 800ADCB0 2C 03 00 00 */ cmpwi r3, 0 -/* 800ADCB4 40 82 00 18 */ bne lbl_800ADCCC -/* 800ADCB8 7F C3 F3 78 */ mr r3, r30 -/* 800ADCBC 38 80 00 0B */ li r4, 0xb -/* 800ADCC0 4B FF E8 99 */ bl checkUnderMove0BckNoArc__9daAlink_cCFQ29daAlink_c11daAlink_ANM -/* 800ADCC4 2C 03 00 00 */ cmpwi r3, 0 -/* 800ADCC8 41 82 00 08 */ beq lbl_800ADCD0 -lbl_800ADCCC: -/* 800ADCCC 3B E0 00 01 */ li r31, 1 -lbl_800ADCD0: -/* 800ADCD0 57 E3 06 3E */ clrlwi r3, r31, 0x18 -/* 800ADCD4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800ADCD8 83 C1 00 08 */ lwz r30, 8(r1) -/* 800ADCDC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800ADCE0 7C 08 03 A6 */ mtlr r0 -/* 800ADCE4 38 21 00 10 */ addi r1, r1, 0x10 -/* 800ADCE8 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/checkAtnRightAnime__9daAlink_cFv.s b/asm/d/a/d_a_alink/checkAtnRightAnime__9daAlink_cFv.s deleted file mode 100644 index 1c132d3f32..0000000000 --- a/asm/d/a/d_a_alink/checkAtnRightAnime__9daAlink_cFv.s +++ /dev/null @@ -1,42 +0,0 @@ -lbl_800ADCEC: -/* 800ADCEC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800ADCF0 7C 08 02 A6 */ mflr r0 -/* 800ADCF4 90 01 00 14 */ stw r0, 0x14(r1) -/* 800ADCF8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800ADCFC 93 C1 00 08 */ stw r30, 8(r1) -/* 800ADD00 7C 7E 1B 78 */ mr r30, r3 -/* 800ADD04 3B E0 00 00 */ li r31, 0 -/* 800ADD08 38 80 00 11 */ li r4, 0x11 -/* 800ADD0C 4B FF E8 4D */ bl checkUnderMove0BckNoArc__9daAlink_cCFQ29daAlink_c11daAlink_ANM -/* 800ADD10 2C 03 00 00 */ cmpwi r3, 0 -/* 800ADD14 40 82 00 54 */ bne lbl_800ADD68 -/* 800ADD18 7F C3 F3 78 */ mr r3, r30 -/* 800ADD1C 38 80 00 08 */ li r4, 8 -/* 800ADD20 4B FF E8 39 */ bl checkUnderMove0BckNoArc__9daAlink_cCFQ29daAlink_c11daAlink_ANM -/* 800ADD24 2C 03 00 00 */ cmpwi r3, 0 -/* 800ADD28 40 82 00 40 */ bne lbl_800ADD68 -/* 800ADD2C 7F C3 F3 78 */ mr r3, r30 -/* 800ADD30 38 80 00 0C */ li r4, 0xc -/* 800ADD34 4B FF E8 25 */ bl checkUnderMove0BckNoArc__9daAlink_cCFQ29daAlink_c11daAlink_ANM -/* 800ADD38 2C 03 00 00 */ cmpwi r3, 0 -/* 800ADD3C 40 82 00 2C */ bne lbl_800ADD68 -/* 800ADD40 7F C3 F3 78 */ mr r3, r30 -/* 800ADD44 38 80 00 09 */ li r4, 9 -/* 800ADD48 4B FF E8 11 */ bl checkUnderMove0BckNoArc__9daAlink_cCFQ29daAlink_c11daAlink_ANM -/* 800ADD4C 2C 03 00 00 */ cmpwi r3, 0 -/* 800ADD50 40 82 00 18 */ bne lbl_800ADD68 -/* 800ADD54 7F C3 F3 78 */ mr r3, r30 -/* 800ADD58 38 80 00 0D */ li r4, 0xd -/* 800ADD5C 4B FF E7 FD */ bl checkUnderMove0BckNoArc__9daAlink_cCFQ29daAlink_c11daAlink_ANM -/* 800ADD60 2C 03 00 00 */ cmpwi r3, 0 -/* 800ADD64 41 82 00 08 */ beq lbl_800ADD6C -lbl_800ADD68: -/* 800ADD68 3B E0 00 01 */ li r31, 1 -lbl_800ADD6C: -/* 800ADD6C 57 E3 06 3E */ clrlwi r3, r31, 0x18 -/* 800ADD70 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800ADD74 83 C1 00 08 */ lwz r30, 8(r1) -/* 800ADD78 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800ADD7C 7C 08 03 A6 */ mtlr r0 -/* 800ADD80 38 21 00 10 */ addi r1, r1, 0x10 -/* 800ADD84 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/checkBoomerangChargeEnd__9daAlink_cFv.s b/asm/d/a/d_a_alink/checkBoomerangChargeEnd__9daAlink_cFv.s deleted file mode 100644 index 7d66f31322..0000000000 --- a/asm/d/a/d_a_alink/checkBoomerangChargeEnd__9daAlink_cFv.s +++ /dev/null @@ -1,33 +0,0 @@ -lbl_800E0244: -/* 800E0244 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800E0248 7C 08 02 A6 */ mflr r0 -/* 800E024C 90 01 00 14 */ stw r0, 0x14(r1) -/* 800E0250 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800E0254 93 C1 00 08 */ stw r30, 8(r1) -/* 800E0258 7C 7E 1B 78 */ mr r30, r3 -/* 800E025C 3B E0 00 00 */ li r31, 0 -/* 800E0260 A0 03 2F DC */ lhz r0, 0x2fdc(r3) -/* 800E0264 28 00 01 02 */ cmplwi r0, 0x102 -/* 800E0268 41 82 00 14 */ beq lbl_800E027C -/* 800E026C 48 00 01 D5 */ bl checkBoomerangAnime__9daAlink_cCFv -/* 800E0270 2C 03 00 00 */ cmpwi r3, 0 -/* 800E0274 41 82 00 08 */ beq lbl_800E027C -/* 800E0278 3B E0 00 01 */ li r31, 1 -lbl_800E027C: -/* 800E027C 57 E0 06 3F */ clrlwi. r0, r31, 0x18 -/* 800E0280 41 82 00 0C */ beq lbl_800E028C -/* 800E0284 38 60 00 01 */ li r3, 1 -/* 800E0288 48 00 00 18 */ b lbl_800E02A0 -lbl_800E028C: -/* 800E028C 7F C3 F3 78 */ mr r3, r30 -/* 800E0290 4B FF FF 81 */ bl getBoomerangActor__9daAlink_cFv -/* 800E0294 30 03 FF FF */ addic r0, r3, -1 -/* 800E0298 7C 00 19 10 */ subfe r0, r0, r3 -/* 800E029C 54 03 06 3E */ clrlwi r3, r0, 0x18 -lbl_800E02A0: -/* 800E02A0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800E02A4 83 C1 00 08 */ lwz r30, 8(r1) -/* 800E02A8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800E02AC 7C 08 03 A6 */ mtlr r0 -/* 800E02B0 38 21 00 10 */ addi r1, r1, 0x10 -/* 800E02B4 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/checkBoomerangThrowAnime__9daAlink_cCFv.s b/asm/d/a/d_a_alink/checkBoomerangThrowAnime__9daAlink_cCFv.s deleted file mode 100644 index cb76752cc6..0000000000 --- a/asm/d/a/d_a_alink/checkBoomerangThrowAnime__9daAlink_cCFv.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_800E04AC: -/* 800E04AC 38 80 00 00 */ li r4, 0 -/* 800E04B0 A0 A3 2F DC */ lhz r5, 0x2fdc(r3) -/* 800E04B4 28 05 00 40 */ cmplwi r5, 0x40 -/* 800E04B8 41 82 00 18 */ beq lbl_800E04D0 -/* 800E04BC 80 03 05 74 */ lwz r0, 0x574(r3) -/* 800E04C0 54 00 07 BD */ rlwinm. r0, r0, 0, 0x1e, 0x1e -/* 800E04C4 40 82 00 0C */ bne lbl_800E04D0 -/* 800E04C8 28 05 01 02 */ cmplwi r5, 0x102 -/* 800E04CC 40 82 00 14 */ bne lbl_800E04E0 -lbl_800E04D0: -/* 800E04D0 A0 03 1F BC */ lhz r0, 0x1fbc(r3) -/* 800E04D4 28 00 00 53 */ cmplwi r0, 0x53 -/* 800E04D8 40 82 00 08 */ bne lbl_800E04E0 -/* 800E04DC 38 80 00 01 */ li r4, 1 -lbl_800E04E0: -/* 800E04E0 54 83 06 3E */ clrlwi r3, r4, 0x18 -/* 800E04E4 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/checkDashAnime__9daAlink_cCFv.s b/asm/d/a/d_a_alink/checkDashAnime__9daAlink_cCFv.s deleted file mode 100644 index e9ba7a28bc..0000000000 --- a/asm/d/a/d_a_alink/checkDashAnime__9daAlink_cCFv.s +++ /dev/null @@ -1,27 +0,0 @@ -lbl_800A7A5C: -/* 800A7A5C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800A7A60 7C 08 02 A6 */ mflr r0 -/* 800A7A64 90 01 00 14 */ stw r0, 0x14(r1) -/* 800A7A68 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800A7A6C 93 C1 00 08 */ stw r30, 8(r1) -/* 800A7A70 7C 7E 1B 78 */ mr r30, r3 -/* 800A7A74 3B E0 00 00 */ li r31, 0 -/* 800A7A78 38 80 00 13 */ li r4, 0x13 -/* 800A7A7C 48 00 4A DD */ bl checkUnderMove0BckNoArc__9daAlink_cCFQ29daAlink_c11daAlink_ANM -/* 800A7A80 2C 03 00 00 */ cmpwi r3, 0 -/* 800A7A84 40 82 00 18 */ bne lbl_800A7A9C -/* 800A7A88 7F C3 F3 78 */ mr r3, r30 -/* 800A7A8C 38 80 00 1C */ li r4, 0x1c -/* 800A7A90 48 00 4A C9 */ bl checkUnderMove0BckNoArc__9daAlink_cCFQ29daAlink_c11daAlink_ANM -/* 800A7A94 2C 03 00 00 */ cmpwi r3, 0 -/* 800A7A98 41 82 00 08 */ beq lbl_800A7AA0 -lbl_800A7A9C: -/* 800A7A9C 3B E0 00 01 */ li r31, 1 -lbl_800A7AA0: -/* 800A7AA0 7F E3 FB 78 */ mr r3, r31 -/* 800A7AA4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800A7AA8 83 C1 00 08 */ lwz r30, 8(r1) -/* 800A7AAC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800A7AB0 7C 08 03 A6 */ mtlr r0 -/* 800A7AB4 38 21 00 10 */ addi r1, r1, 0x10 -/* 800A7AB8 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/checkDeadHP__9daAlink_cFv.s b/asm/d/a/d_a_alink/checkDeadHP__9daAlink_cFv.s deleted file mode 100644 index ad49f15918..0000000000 --- a/asm/d/a/d_a_alink/checkDeadHP__9daAlink_cFv.s +++ /dev/null @@ -1,63 +0,0 @@ -lbl_80118C98: -/* 80118C98 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80118C9C 7C 08 02 A6 */ mflr r0 -/* 80118CA0 90 01 00 24 */ stw r0, 0x24(r1) -/* 80118CA4 39 61 00 20 */ addi r11, r1, 0x20 -/* 80118CA8 48 24 95 31 */ bl _savegpr_28 -/* 80118CAC 7C 7C 1B 78 */ mr r28, r3 -/* 80118CB0 3B E0 00 01 */ li r31, 1 -/* 80118CB4 7F FE FB 78 */ mr r30, r31 -/* 80118CB8 3B A0 00 00 */ li r29, 0 -/* 80118CBC 7F A4 EB 78 */ mr r4, r29 -/* 80118CC0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80118CC4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80118CC8 A0 03 00 02 */ lhz r0, 2(r3) -/* 80118CCC 28 00 00 00 */ cmplwi r0, 0 -/* 80118CD0 40 82 00 14 */ bne lbl_80118CE4 -/* 80118CD4 80 1C 05 80 */ lwz r0, 0x580(r28) -/* 80118CD8 54 00 05 6B */ rlwinm. r0, r0, 0, 0x15, 0x15 -/* 80118CDC 40 82 00 08 */ bne lbl_80118CE4 -/* 80118CE0 7F E4 FB 78 */ mr r4, r31 -lbl_80118CE4: -/* 80118CE4 54 80 06 3F */ clrlwi. r0, r4, 0x18 -/* 80118CE8 41 82 00 24 */ beq lbl_80118D0C -/* 80118CEC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80118CF0 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80118CF4 38 63 00 9C */ addi r3, r3, 0x9c -/* 80118CF8 38 80 00 6C */ li r4, 0x6c -/* 80118CFC 4B F1 A9 E5 */ bl checkBottle__17dSv_player_item_cFUc -/* 80118D00 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80118D04 40 82 00 08 */ bne lbl_80118D0C -/* 80118D08 3B A0 00 01 */ li r29, 1 -lbl_80118D0C: -/* 80118D0C 57 A0 06 3F */ clrlwi. r0, r29, 0x18 -/* 80118D10 40 82 00 14 */ bne lbl_80118D24 -/* 80118D14 80 1C 05 78 */ lwz r0, 0x578(r28) -/* 80118D18 54 00 03 5B */ rlwinm. r0, r0, 0, 0xd, 0xd -/* 80118D1C 40 82 00 08 */ bne lbl_80118D24 -/* 80118D20 3B C0 00 00 */ li r30, 0 -lbl_80118D24: -/* 80118D24 57 C0 06 3F */ clrlwi. r0, r30, 0x18 -/* 80118D28 40 82 00 38 */ bne lbl_80118D60 -/* 80118D2C 38 80 00 00 */ li r4, 0 -/* 80118D30 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80118D34 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80118D38 88 03 5E B7 */ lbz r0, 0x5eb7(r3) -/* 80118D3C 28 00 00 00 */ cmplwi r0, 0 -/* 80118D40 41 82 00 14 */ beq lbl_80118D54 -/* 80118D44 80 03 5D E4 */ lwz r0, 0x5de4(r3) -/* 80118D48 2C 00 00 00 */ cmpwi r0, 0 -/* 80118D4C 40 82 00 08 */ bne lbl_80118D54 -/* 80118D50 38 80 00 01 */ li r4, 1 -lbl_80118D54: -/* 80118D54 54 80 06 3F */ clrlwi. r0, r4, 0x18 -/* 80118D58 40 82 00 08 */ bne lbl_80118D60 -/* 80118D5C 3B E0 00 00 */ li r31, 0 -lbl_80118D60: -/* 80118D60 57 E3 06 3E */ clrlwi r3, r31, 0x18 -/* 80118D64 39 61 00 20 */ addi r11, r1, 0x20 -/* 80118D68 48 24 94 BD */ bl _restgpr_28 -/* 80118D6C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80118D70 7C 08 03 A6 */ mtlr r0 -/* 80118D74 38 21 00 20 */ addi r1, r1, 0x20 -/* 80118D78 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/checkFinalBattle__9daAlink_cFv.s b/asm/d/a/d_a_alink/checkFinalBattle__9daAlink_cFv.s deleted file mode 100644 index c85fc10e49..0000000000 --- a/asm/d/a/d_a_alink/checkFinalBattle__9daAlink_cFv.s +++ /dev/null @@ -1,27 +0,0 @@ -lbl_80118AD0: -/* 80118AD0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80118AD4 7C 08 02 A6 */ mflr r0 -/* 80118AD8 90 01 00 14 */ stw r0, 0x14(r1) -/* 80118ADC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80118AE0 3B E0 00 00 */ li r31, 0 -/* 80118AE4 3C 60 80 39 */ lis r3, d_a_d_a_alink__stringBase0@ha /* 0x80392094@ha */ -/* 80118AE8 38 63 20 94 */ addi r3, r3, d_a_d_a_alink__stringBase0@l /* 0x80392094@l */ -/* 80118AEC 38 63 00 F6 */ addi r3, r3, 0xf6 -/* 80118AF0 4B F8 4F 71 */ bl checkStageName__9daAlink_cFPCc -/* 80118AF4 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80118AF8 41 82 00 24 */ beq lbl_80118B1C -/* 80118AFC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80118B00 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80118B04 38 63 09 78 */ addi r3, r3, 0x978 -/* 80118B08 38 80 00 01 */ li r4, 1 -/* 80118B0C 4B F1 C0 DD */ bl isSwitch__12dSv_danBit_cCFi -/* 80118B10 2C 03 00 00 */ cmpwi r3, 0 -/* 80118B14 41 82 00 08 */ beq lbl_80118B1C -/* 80118B18 3B E0 00 01 */ li r31, 1 -lbl_80118B1C: -/* 80118B1C 57 E3 06 3E */ clrlwi r3, r31, 0x18 -/* 80118B20 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80118B24 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80118B28 7C 08 03 A6 */ mtlr r0 -/* 80118B2C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80118B30 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/checkRequestTalkActor__9daAlink_cFP10dAttList_cP10fopAc_ac_c.s b/asm/d/a/d_a_alink/checkRequestTalkActor__9daAlink_cFP10dAttList_cP10fopAc_ac_c.s deleted file mode 100644 index edbde3341d..0000000000 --- a/asm/d/a/d_a_alink/checkRequestTalkActor__9daAlink_cFP10dAttList_cP10fopAc_ac_c.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_800B477C: -/* 800B477C 28 04 00 00 */ cmplwi r4, 0 -/* 800B4780 41 82 00 2C */ beq lbl_800B47AC -/* 800B4784 80 04 00 0C */ lwz r0, 0xc(r4) -/* 800B4788 28 00 00 03 */ cmplwi r0, 3 -/* 800B478C 41 82 00 18 */ beq lbl_800B47A4 -/* 800B4790 28 00 00 01 */ cmplwi r0, 1 -/* 800B4794 40 82 00 18 */ bne lbl_800B47AC -/* 800B4798 80 03 27 EC */ lwz r0, 0x27ec(r3) -/* 800B479C 7C 00 28 40 */ cmplw r0, r5 -/* 800B47A0 40 82 00 0C */ bne lbl_800B47AC -lbl_800B47A4: -/* 800B47A4 38 60 00 01 */ li r3, 1 -/* 800B47A8 4E 80 00 20 */ blr -lbl_800B47AC: -/* 800B47AC 38 60 00 00 */ li r3, 0 -/* 800B47B0 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/checkRestartDead__9daAlink_cFii.s b/asm/d/a/d_a_alink/checkRestartDead__9daAlink_cFii.s deleted file mode 100644 index c4cd966ddb..0000000000 --- a/asm/d/a/d_a_alink/checkRestartDead__9daAlink_cFii.s +++ /dev/null @@ -1,51 +0,0 @@ -lbl_80118B34: -/* 80118B34 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80118B38 7C 08 02 A6 */ mflr r0 -/* 80118B3C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80118B40 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80118B44 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80118B48 7C 7E 1B 78 */ mr r30, r3 -/* 80118B4C 7C 9F 23 78 */ mr r31, r4 -/* 80118B50 7C A4 2B 78 */ mr r4, r5 -/* 80118B54 38 A0 00 01 */ li r5, 1 -/* 80118B58 4B FB E6 B1 */ bl damageMagnification__9daAlink_cFii -/* 80118B5C FC 00 08 1E */ fctiwz f0, f1 -/* 80118B60 D8 01 00 08 */ stfd f0, 8(r1) -/* 80118B64 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80118B68 7F FF 01 D6 */ mullw r31, r31, r0 -/* 80118B6C A0 1E 2F E8 */ lhz r0, 0x2fe8(r30) -/* 80118B70 28 00 01 50 */ cmplwi r0, 0x150 -/* 80118B74 41 82 00 64 */ beq lbl_80118BD8 -/* 80118B78 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80118B7C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80118B80 A0 03 00 02 */ lhz r0, 2(r3) -/* 80118B84 7C 1F 00 00 */ cmpw r31, r0 -/* 80118B88 41 80 00 50 */ blt lbl_80118BD8 -/* 80118B8C 7F C3 F3 78 */ mr r3, r30 -/* 80118B90 4B FB EC 39 */ bl checkMagicArmorNoDamage__9daAlink_cFv -/* 80118B94 2C 03 00 00 */ cmpwi r3, 0 -/* 80118B98 40 82 00 40 */ bne lbl_80118BD8 -/* 80118B9C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80118BA0 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80118BA4 38 63 00 9C */ addi r3, r3, 0x9c -/* 80118BA8 38 80 00 6C */ li r4, 0x6c -/* 80118BAC 4B F1 AB 35 */ bl checkBottle__17dSv_player_item_cFUc -/* 80118BB0 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80118BB4 40 82 00 24 */ bne lbl_80118BD8 -/* 80118BB8 80 1E 05 78 */ lwz r0, 0x578(r30) -/* 80118BBC 64 00 00 04 */ oris r0, r0, 4 -/* 80118BC0 90 1E 05 78 */ stw r0, 0x578(r30) -/* 80118BC4 7F C3 F3 78 */ mr r3, r30 -/* 80118BC8 38 80 00 00 */ li r4, 0 -/* 80118BCC 48 00 32 89 */ bl procCoDeadInit__9daAlink_cFi -/* 80118BD0 38 60 00 01 */ li r3, 1 -/* 80118BD4 48 00 00 08 */ b lbl_80118BDC -lbl_80118BD8: -/* 80118BD8 38 60 00 00 */ li r3, 0 -lbl_80118BDC: -/* 80118BDC 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80118BE0 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80118BE4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80118BE8 7C 08 03 A6 */ mtlr r0 -/* 80118BEC 38 21 00 20 */ addi r1, r1, 0x20 -/* 80118BF0 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/checkUnderMove0BckNoArc__9daAlink_cCFQ29daAlink_c11daAlink_ANM.s b/asm/d/a/d_a_alink/checkUnderMove0BckNoArc__9daAlink_cCFQ29daAlink_c11daAlink_ANM.s deleted file mode 100644 index 79b25899c8..0000000000 --- a/asm/d/a/d_a_alink/checkUnderMove0BckNoArc__9daAlink_cCFQ29daAlink_c11daAlink_ANM.s +++ /dev/null @@ -1,25 +0,0 @@ -lbl_800AC558: -/* 800AC558 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800AC55C 7C 08 02 A6 */ mflr r0 -/* 800AC560 90 01 00 14 */ stw r0, 0x14(r1) -/* 800AC564 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800AC568 93 C1 00 08 */ stw r30, 8(r1) -/* 800AC56C 3B E0 00 00 */ li r31, 0 -/* 800AC570 A0 03 1F 5C */ lhz r0, 0x1f5c(r3) -/* 800AC574 28 00 FF FF */ cmplwi r0, 0xffff -/* 800AC578 40 82 00 20 */ bne lbl_800AC598 -/* 800AC57C A3 C3 1F 58 */ lhz r30, 0x1f58(r3) -/* 800AC580 4B FF FE D1 */ bl getMainBckData__9daAlink_cCFQ29daAlink_c11daAlink_ANM -/* 800AC584 A0 63 00 00 */ lhz r3, 0(r3) -/* 800AC588 57 C0 04 3E */ clrlwi r0, r30, 0x10 -/* 800AC58C 7C 00 18 40 */ cmplw r0, r3 -/* 800AC590 40 82 00 08 */ bne lbl_800AC598 -/* 800AC594 3B E0 00 01 */ li r31, 1 -lbl_800AC598: -/* 800AC598 57 E3 06 3E */ clrlwi r3, r31, 0x18 -/* 800AC59C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800AC5A0 83 C1 00 08 */ lwz r30, 8(r1) -/* 800AC5A4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800AC5A8 7C 08 03 A6 */ mtlr r0 -/* 800AC5AC 38 21 00 10 */ addi r1, r1, 0x10 -/* 800AC5B0 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/func_800AC5B4.s b/asm/d/a/d_a_alink/func_800AC5B4.s deleted file mode 100644 index 9a0e274287..0000000000 --- a/asm/d/a/d_a_alink/func_800AC5B4.s +++ /dev/null @@ -1,25 +0,0 @@ -lbl_800AC5B4: -/* 800AC5B4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800AC5B8 7C 08 02 A6 */ mflr r0 -/* 800AC5BC 90 01 00 14 */ stw r0, 0x14(r1) -/* 800AC5C0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800AC5C4 93 C1 00 08 */ stw r30, 8(r1) -/* 800AC5C8 3B E0 00 00 */ li r31, 0 -/* 800AC5CC A0 03 1F 70 */ lhz r0, 0x1f70(r3) -/* 800AC5D0 28 00 FF FF */ cmplwi r0, 0xffff -/* 800AC5D4 40 82 00 20 */ bne lbl_800AC5F4 -/* 800AC5D8 A3 C3 1F 6C */ lhz r30, 0x1f6c(r3) -/* 800AC5DC 4B FF FE 75 */ bl getMainBckData__9daAlink_cCFQ29daAlink_c11daAlink_ANM -/* 800AC5E0 A0 63 00 00 */ lhz r3, 0(r3) -/* 800AC5E4 57 C0 04 3E */ clrlwi r0, r30, 0x10 -/* 800AC5E8 7C 00 18 40 */ cmplw r0, r3 -/* 800AC5EC 40 82 00 08 */ bne lbl_800AC5F4 -/* 800AC5F0 3B E0 00 01 */ li r31, 1 -lbl_800AC5F4: -/* 800AC5F4 57 E3 06 3E */ clrlwi r3, r31, 0x18 -/* 800AC5F8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800AC5FC 83 C1 00 08 */ lwz r30, 8(r1) -/* 800AC600 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800AC604 7C 08 03 A6 */ mtlr r0 -/* 800AC608 38 21 00 10 */ addi r1, r1, 0x10 -/* 800AC60C 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/getAnimeResource__9daAlink_cFP14daPy_anmHeap_cUsUl.s b/asm/d/a/d_a_alink/getAnimeResource__9daAlink_cFP14daPy_anmHeap_cUsUl.s deleted file mode 100644 index ae5033135b..0000000000 --- a/asm/d/a/d_a_alink/getAnimeResource__9daAlink_cFP14daPy_anmHeap_cUsUl.s +++ /dev/null @@ -1,31 +0,0 @@ -lbl_800A3D0C: -/* 800A3D0C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 800A3D10 7C 08 02 A6 */ mflr r0 -/* 800A3D14 90 01 00 24 */ stw r0, 0x24(r1) -/* 800A3D18 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 800A3D1C 7C 9F 23 78 */ mr r31, r4 -/* 800A3D20 B0 A1 00 08 */ sth r5, 8(r1) -/* 800A3D24 90 C4 00 08 */ stw r6, 8(r4) -/* 800A3D28 3C 80 00 01 */ lis r4, 0x0001 /* 0x0000FFFF@ha */ -/* 800A3D2C 38 04 FF FF */ addi r0, r4, 0xFFFF /* 0x0000FFFF@l */ -/* 800A3D30 B0 01 00 0A */ sth r0, 0xa(r1) -/* 800A3D34 38 81 00 0A */ addi r4, r1, 0xa -/* 800A3D38 38 A1 00 08 */ addi r5, r1, 8 -/* 800A3D3C 4B FF FF A9 */ bl setIdxMask__9daAlink_cFPUsPUs -/* 800A3D40 A0 A1 00 0A */ lhz r5, 0xa(r1) -/* 800A3D44 28 05 FF FF */ cmplwi r5, 0xffff -/* 800A3D48 40 82 00 14 */ bne lbl_800A3D5C -/* 800A3D4C 7F E3 FB 78 */ mr r3, r31 -/* 800A3D50 A0 81 00 08 */ lhz r4, 8(r1) -/* 800A3D54 48 0B B3 15 */ bl loadDataIdx__14daPy_anmHeap_cFUs -/* 800A3D58 48 00 00 10 */ b lbl_800A3D68 -lbl_800A3D5C: -/* 800A3D5C 7F E3 FB 78 */ mr r3, r31 -/* 800A3D60 A0 81 00 08 */ lhz r4, 8(r1) -/* 800A3D64 48 0B B3 B5 */ bl loadDataDemoRID__14daPy_anmHeap_cFUsUs -lbl_800A3D68: -/* 800A3D68 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 800A3D6C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 800A3D70 7C 08 03 A6 */ mtlr r0 -/* 800A3D74 38 21 00 20 */ addi r1, r1, 0x20 -/* 800A3D78 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/getMainBckData__9daAlink_cCFQ29daAlink_c11daAlink_ANM.s b/asm/d/a/d_a_alink/getMainBckData__9daAlink_cCFQ29daAlink_c11daAlink_ANM.s deleted file mode 100644 index 9c60ada0a8..0000000000 --- a/asm/d/a/d_a_alink/getMainBckData__9daAlink_cCFQ29daAlink_c11daAlink_ANM.s +++ /dev/null @@ -1,75 +0,0 @@ -lbl_800AC450: -/* 800AC450 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 800AC454 7C 08 02 A6 */ mflr r0 -/* 800AC458 90 01 00 24 */ stw r0, 0x24(r1) -/* 800AC45C 39 61 00 20 */ addi r11, r1, 0x20 -/* 800AC460 48 2B 5D 7D */ bl _savegpr_29 -/* 800AC464 7C 7D 1B 78 */ mr r29, r3 -/* 800AC468 7C 9E 23 78 */ mr r30, r4 -/* 800AC46C 3C 60 80 39 */ lis r3, lit_3757@ha /* 0x8038D658@ha */ -/* 800AC470 3B E3 D6 58 */ addi r31, r3, lit_3757@l /* 0x8038D658@l */ -/* 800AC474 A0 1D 2F DC */ lhz r0, 0x2fdc(r29) -/* 800AC478 28 00 00 48 */ cmplwi r0, 0x48 -/* 800AC47C 40 82 00 28 */ bne lbl_800AC4A4 -/* 800AC480 2C 1E 00 19 */ cmpwi r30, 0x19 -/* 800AC484 40 82 00 0C */ bne lbl_800AC490 -/* 800AC488 38 62 98 78 */ la r3, kandelaarAnm(r2) /* 80453278-_SDA2_BASE_ */ -/* 800AC48C 48 00 00 B4 */ b lbl_800AC540 -lbl_800AC490: -/* 800AC490 2C 1E 00 48 */ cmpwi r30, 0x48 -/* 800AC494 40 82 00 10 */ bne lbl_800AC4A4 -/* 800AC498 38 62 98 78 */ la r3, kandelaarAnm(r2) /* 80453278-_SDA2_BASE_ */ -/* 800AC49C 38 63 00 04 */ addi r3, r3, 4 -/* 800AC4A0 48 00 00 A0 */ b lbl_800AC540 -lbl_800AC4A4: -/* 800AC4A4 7F A3 EB 78 */ mr r3, r29 -/* 800AC4A8 48 03 09 49 */ bl checkUpperGuardAnime__9daAlink_cCFv -/* 800AC4AC 2C 03 00 00 */ cmpwi r3, 0 -/* 800AC4B0 41 82 00 1C */ beq lbl_800AC4CC -/* 800AC4B4 2C 1E 00 14 */ cmpwi r30, 0x14 -/* 800AC4B8 40 80 00 14 */ bge lbl_800AC4CC -/* 800AC4BC 57 C0 10 3A */ slwi r0, r30, 2 -/* 800AC4C0 38 7F 25 7C */ addi r3, r31, 0x257c -/* 800AC4C4 7C 63 02 14 */ add r3, r3, r0 -/* 800AC4C8 48 00 00 78 */ b lbl_800AC540 -lbl_800AC4CC: -/* 800AC4CC A0 1D 2F DC */ lhz r0, 0x2fdc(r29) -/* 800AC4D0 28 00 01 03 */ cmplwi r0, 0x103 -/* 800AC4D4 40 82 00 14 */ bne lbl_800AC4E8 -/* 800AC4D8 2C 1E 00 15 */ cmpwi r30, 0x15 -/* 800AC4DC 40 80 00 0C */ bge lbl_800AC4E8 -/* 800AC4E0 2C 1E 00 10 */ cmpwi r30, 0x10 -/* 800AC4E4 40 80 00 14 */ bge lbl_800AC4F8 -lbl_800AC4E8: -/* 800AC4E8 2C 1E 00 14 */ cmpwi r30, 0x14 -/* 800AC4EC 40 82 00 20 */ bne lbl_800AC50C -/* 800AC4F0 28 00 00 FF */ cmplwi r0, 0xff -/* 800AC4F4 41 82 00 18 */ beq lbl_800AC50C -lbl_800AC4F8: -/* 800AC4F8 38 1E FF F0 */ addi r0, r30, -16 -/* 800AC4FC 54 00 10 3A */ slwi r0, r0, 2 -/* 800AC500 38 7F 25 CC */ addi r3, r31, 0x25cc -/* 800AC504 7C 63 02 14 */ add r3, r3, r0 -/* 800AC508 48 00 00 38 */ b lbl_800AC540 -lbl_800AC50C: -/* 800AC50C 7F A3 EB 78 */ mr r3, r29 -/* 800AC510 48 04 78 49 */ bl checkFishingRodAndLureItem__9daAlink_cCFv -/* 800AC514 2C 03 00 00 */ cmpwi r3, 0 -/* 800AC518 41 82 00 1C */ beq lbl_800AC534 -/* 800AC51C 2C 1E 00 1C */ cmpwi r30, 0x1c -/* 800AC520 40 80 00 14 */ bge lbl_800AC534 -/* 800AC524 57 C0 10 3A */ slwi r0, r30, 2 -/* 800AC528 38 7F 25 E0 */ addi r3, r31, 0x25e0 -/* 800AC52C 7C 63 02 14 */ add r3, r3, r0 -/* 800AC530 48 00 00 10 */ b lbl_800AC540 -lbl_800AC534: -/* 800AC534 1C 1E 00 0C */ mulli r0, r30, 0xc -/* 800AC538 38 7F 26 50 */ addi r3, r31, 0x2650 -/* 800AC53C 7C 63 02 14 */ add r3, r3, r0 -lbl_800AC540: -/* 800AC540 39 61 00 20 */ addi r11, r1, 0x20 -/* 800AC544 48 2B 5C E5 */ bl _restgpr_29 -/* 800AC548 80 01 00 24 */ lwz r0, 0x24(r1) -/* 800AC54C 7C 08 03 A6 */ mtlr r0 -/* 800AC550 38 21 00 20 */ addi r1, r1, 0x20 -/* 800AC554 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/getMoveGroundAngleSpeedRate__9daAlink_cFv.s b/asm/d/a/d_a_alink/getMoveGroundAngleSpeedRate__9daAlink_cFv.s deleted file mode 100644 index f2a370fcd2..0000000000 --- a/asm/d/a/d_a_alink/getMoveGroundAngleSpeedRate__9daAlink_cFv.s +++ /dev/null @@ -1,39 +0,0 @@ -lbl_800ADD88: -/* 800ADD88 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800ADD8C 7C 08 02 A6 */ mflr r0 -/* 800ADD90 90 01 00 14 */ stw r0, 0x14(r1) -/* 800ADD94 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800ADD98 7C 7F 1B 78 */ mr r31, r3 -/* 800ADD9C 80 03 31 74 */ lwz r0, 0x3174(r3) -/* 800ADDA0 2C 00 00 08 */ cmpwi r0, 8 -/* 800ADDA4 41 82 00 1C */ beq lbl_800ADDC0 -/* 800ADDA8 80 1F 05 70 */ lwz r0, 0x570(r31) -/* 800ADDAC 54 00 04 E7 */ rlwinm. r0, r0, 0, 0x13, 0x13 -/* 800ADDB0 40 82 00 10 */ bne lbl_800ADDC0 -/* 800ADDB4 80 1F 19 9C */ lwz r0, 0x199c(r31) -/* 800ADDB8 54 00 06 B5 */ rlwinm. r0, r0, 0, 0x1a, 0x1a -/* 800ADDBC 40 82 00 0C */ bne lbl_800ADDC8 -lbl_800ADDC0: -/* 800ADDC0 38 60 00 00 */ li r3, 0 -/* 800ADDC4 48 00 00 10 */ b lbl_800ADDD4 -lbl_800ADDC8: -/* 800ADDC8 38 9F 1A 60 */ addi r4, r31, 0x1a60 -/* 800ADDCC A8 BF 04 DE */ lha r5, 0x4de(r31) -/* 800ADDD0 48 00 22 C9 */ bl getGroundAngle__9daAlink_cFP13cBgS_PolyInfos -lbl_800ADDD4: -/* 800ADDD4 C0 3F 33 98 */ lfs f1, 0x3398(r31) -/* 800ADDD8 3C 80 80 44 */ lis r4, sincosTable___5JMath@ha /* 0x80439A20@ha */ -/* 800ADDDC 38 84 9A 20 */ addi r4, r4, sincosTable___5JMath@l /* 0x80439A20@l */ -/* 800ADDE0 54 60 04 38 */ rlwinm r0, r3, 0, 0x10, 0x1c -/* 800ADDE4 7C 64 02 14 */ add r3, r4, r0 -/* 800ADDE8 C0 03 00 04 */ lfs f0, 4(r3) -/* 800ADDEC EC 21 00 32 */ fmuls f1, f1, f0 -/* 800ADDF0 C0 1F 05 94 */ lfs f0, 0x594(r31) -/* 800ADDF4 EC 01 00 24 */ fdivs f0, f1, f0 -/* 800ADDF8 FC 00 02 10 */ fabs f0, f0 -/* 800ADDFC FC 20 00 18 */ frsp f1, f0 -/* 800ADE00 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800ADE04 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800ADE08 7C 08 03 A6 */ mtlr r0 -/* 800ADE0C 38 21 00 10 */ addi r1, r1, 0x10 -/* 800ADE10 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/getUnderUpperAnime__9daAlink_cFQ29daAlink_c11daAlink_ANMPP15J3DAnmTransformPP15J3DAnmTransformiUl.s b/asm/d/a/d_a_alink/getUnderUpperAnime__9daAlink_cFQ29daAlink_c11daAlink_ANMPP15J3DAnmTransformPP15J3DAnmTransformiUl.s deleted file mode 100644 index 2f2d2ce6ea..0000000000 --- a/asm/d/a/d_a_alink/getUnderUpperAnime__9daAlink_cFQ29daAlink_c11daAlink_ANMPP15J3DAnmTransformPP15J3DAnmTransformiUl.s +++ /dev/null @@ -1,82 +0,0 @@ -lbl_800AC610: -/* 800AC610 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 800AC614 7C 08 02 A6 */ mflr r0 -/* 800AC618 90 01 00 34 */ stw r0, 0x34(r1) -/* 800AC61C 39 61 00 30 */ addi r11, r1, 0x30 -/* 800AC620 48 2B 5B A9 */ bl _savegpr_24 -/* 800AC624 7C 7C 1B 78 */ mr r28, r3 -/* 800AC628 7C BF 2B 78 */ mr r31, r5 -/* 800AC62C 7C DD 33 78 */ mr r29, r6 -/* 800AC630 7C FE 3B 78 */ mr r30, r7 -/* 800AC634 7D 18 43 78 */ mr r24, r8 -/* 800AC638 4B FF FE 19 */ bl getMainBckData__9daAlink_cCFQ29daAlink_c11daAlink_ANM -/* 800AC63C 7C 7B 1B 78 */ mr r27, r3 -/* 800AC640 80 1C 05 70 */ lwz r0, 0x570(r28) -/* 800AC644 54 00 07 FA */ rlwinm r0, r0, 0, 0x1f, 0x1d -/* 800AC648 90 1C 05 70 */ stw r0, 0x570(r28) -/* 800AC64C 7F 83 E3 78 */ mr r3, r28 -/* 800AC650 1F 3E 00 14 */ mulli r25, r30, 0x14 -/* 800AC654 7F 5C CA 14 */ add r26, r28, r25 -/* 800AC658 38 9A 1F 58 */ addi r4, r26, 0x1f58 -/* 800AC65C A0 BB 00 00 */ lhz r5, 0(r27) -/* 800AC660 7F 06 C3 78 */ mr r6, r24 -/* 800AC664 4B FF 76 A9 */ bl getAnimeResource__9daAlink_cFP14daPy_anmHeap_cUsUl -/* 800AC668 90 7F 00 00 */ stw r3, 0(r31) -/* 800AC66C 80 1F 00 00 */ lwz r0, 0(r31) -/* 800AC670 28 00 00 00 */ cmplwi r0, 0 -/* 800AC674 41 82 00 0C */ beq lbl_800AC680 -/* 800AC678 3B E0 00 01 */ li r31, 1 -/* 800AC67C 48 00 00 18 */ b lbl_800AC694 -lbl_800AC680: -/* 800AC680 57 C0 18 38 */ slwi r0, r30, 3 -/* 800AC684 7C 7C 02 14 */ add r3, r28, r0 -/* 800AC688 80 03 1F 2C */ lwz r0, 0x1f2c(r3) -/* 800AC68C 90 1F 00 00 */ stw r0, 0(r31) -/* 800AC690 3B E0 00 00 */ li r31, 0 -lbl_800AC694: -/* 800AC694 A0 1B 00 00 */ lhz r0, 0(r27) -/* 800AC698 A0 BB 00 02 */ lhz r5, 2(r27) -/* 800AC69C 7C 00 28 40 */ cmplw r0, r5 -/* 800AC6A0 41 82 00 54 */ beq lbl_800AC6F4 -/* 800AC6A4 3C 18 FF FF */ addis r0, r24, 0xffff -/* 800AC6A8 28 00 08 00 */ cmplwi r0, 0x800 -/* 800AC6AC 40 82 00 0C */ bne lbl_800AC6B8 -/* 800AC6B0 20 1E 00 03 */ subfic r0, r30, 3 -/* 800AC6B4 1F 00 2C 00 */ mulli r24, r0, 0x2c00 -lbl_800AC6B8: -/* 800AC6B8 7F 83 E3 78 */ mr r3, r28 -/* 800AC6BC 38 9A 1F 94 */ addi r4, r26, 0x1f94 -/* 800AC6C0 7F 06 C3 78 */ mr r6, r24 -/* 800AC6C4 4B FF 76 49 */ bl getAnimeResource__9daAlink_cFP14daPy_anmHeap_cUsUl -/* 800AC6C8 90 7D 00 00 */ stw r3, 0(r29) -/* 800AC6CC 80 1D 00 00 */ lwz r0, 0(r29) -/* 800AC6D0 28 00 00 00 */ cmplwi r0, 0 -/* 800AC6D4 41 82 00 0C */ beq lbl_800AC6E0 -/* 800AC6D8 63 FF 00 01 */ ori r31, r31, 1 -/* 800AC6DC 48 00 00 40 */ b lbl_800AC71C -lbl_800AC6E0: -/* 800AC6E0 57 C0 18 38 */ slwi r0, r30, 3 -/* 800AC6E4 7C 7C 02 14 */ add r3, r28, r0 -/* 800AC6E8 80 03 1F 44 */ lwz r0, 0x1f44(r3) -/* 800AC6EC 90 1D 00 00 */ stw r0, 0(r29) -/* 800AC6F0 48 00 00 2C */ b lbl_800AC71C -lbl_800AC6F4: -/* 800AC6F4 7C 9C CA 14 */ add r4, r28, r25 -/* 800AC6F8 A0 04 1F 94 */ lhz r0, 0x1f94(r4) -/* 800AC6FC 28 00 FF FF */ cmplwi r0, 0xffff -/* 800AC700 41 82 00 08 */ beq lbl_800AC708 -/* 800AC704 63 FF 00 01 */ ori r31, r31, 1 -lbl_800AC708: -/* 800AC708 38 00 00 00 */ li r0, 0 -/* 800AC70C 90 1D 00 00 */ stw r0, 0(r29) -/* 800AC710 3C 60 00 01 */ lis r3, 0x0001 /* 0x0000FFFF@ha */ -/* 800AC714 38 03 FF FF */ addi r0, r3, 0xFFFF /* 0x0000FFFF@l */ -/* 800AC718 B0 04 1F 94 */ sth r0, 0x1f94(r4) -lbl_800AC71C: -/* 800AC71C 7F E3 FB 78 */ mr r3, r31 -/* 800AC720 39 61 00 30 */ addi r11, r1, 0x30 -/* 800AC724 48 2B 5A F1 */ bl _restgpr_24 -/* 800AC728 80 01 00 34 */ lwz r0, 0x34(r1) -/* 800AC72C 7C 08 03 A6 */ mtlr r0 -/* 800AC730 38 21 00 30 */ addi r1, r1, 0x30 -/* 800AC734 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/orderTalk__9daAlink_cFi.s b/asm/d/a/d_a_alink/orderTalk__9daAlink_cFi.s deleted file mode 100644 index 8a37359778..0000000000 --- a/asm/d/a/d_a_alink/orderTalk__9daAlink_cFi.s +++ /dev/null @@ -1,94 +0,0 @@ -lbl_800B7BF8: -/* 800B7BF8 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 800B7BFC 7C 08 02 A6 */ mflr r0 -/* 800B7C00 90 01 00 24 */ stw r0, 0x24(r1) -/* 800B7C04 39 61 00 20 */ addi r11, r1, 0x20 -/* 800B7C08 48 2A A5 D1 */ bl _savegpr_28 -/* 800B7C0C 7C 7C 1B 78 */ mr r28, r3 -/* 800B7C10 7C 9D 23 78 */ mr r29, r4 -/* 800B7C14 4B FF CD 3D */ bl notTalk__9daAlink_cFv -/* 800B7C18 2C 03 00 00 */ cmpwi r3, 0 -/* 800B7C1C 41 82 00 0C */ beq lbl_800B7C28 -/* 800B7C20 38 60 00 00 */ li r3, 0 -/* 800B7C24 48 00 01 10 */ b lbl_800B7D34 -lbl_800B7C28: -/* 800B7C28 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 800B7C2C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 800B7C30 88 03 5E 24 */ lbz r0, 0x5e24(r3) -/* 800B7C34 28 00 00 1C */ cmplwi r0, 0x1c -/* 800B7C38 41 82 00 2C */ beq lbl_800B7C64 -/* 800B7C3C 28 00 00 1B */ cmplwi r0, 0x1b -/* 800B7C40 41 82 00 24 */ beq lbl_800B7C64 -/* 800B7C44 28 00 00 80 */ cmplwi r0, 0x80 -/* 800B7C48 41 82 00 1C */ beq lbl_800B7C64 -/* 800B7C4C 28 00 00 3B */ cmplwi r0, 0x3b -/* 800B7C50 41 82 00 14 */ beq lbl_800B7C64 -/* 800B7C54 28 00 00 3C */ cmplwi r0, 0x3c -/* 800B7C58 41 82 00 0C */ beq lbl_800B7C64 -/* 800B7C5C 28 00 00 08 */ cmplwi r0, 8 -/* 800B7C60 40 82 00 2C */ bne lbl_800B7C8C -lbl_800B7C64: -/* 800B7C64 88 1C 2F 8D */ lbz r0, 0x2f8d(r28) -/* 800B7C68 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b -/* 800B7C6C 41 82 00 20 */ beq lbl_800B7C8C -/* 800B7C70 7F 83 E3 78 */ mr r3, r28 -/* 800B7C74 80 9C 27 F4 */ lwz r4, 0x27f4(r28) -/* 800B7C78 38 A0 00 00 */ li r5, 0 -/* 800B7C7C 38 C0 00 00 */ li r6, 0 -/* 800B7C80 4B F6 33 E9 */ bl fopAcM_orderTalkEvent__FP10fopAc_ac_cP10fopAc_ac_cUsUs -/* 800B7C84 38 60 00 01 */ li r3, 1 -/* 800B7C88 48 00 00 AC */ b lbl_800B7D34 -lbl_800B7C8C: -/* 800B7C8C 80 1C 05 74 */ lwz r0, 0x574(r28) -/* 800B7C90 54 00 01 8D */ rlwinm. r0, r0, 0, 6, 6 -/* 800B7C94 40 82 00 88 */ bne lbl_800B7D1C -/* 800B7C98 7F 83 E3 78 */ mr r3, r28 -/* 800B7C9C 80 9C 27 E8 */ lwz r4, 0x27e8(r28) -/* 800B7CA0 80 BC 27 F8 */ lwz r5, 0x27f8(r28) -/* 800B7CA4 4B FF CA D9 */ bl checkRequestTalkActor__9daAlink_cFP10dAttList_cP10fopAc_ac_c -/* 800B7CA8 2C 03 00 00 */ cmpwi r3, 0 -/* 800B7CAC 41 82 00 70 */ beq lbl_800B7D1C -/* 800B7CB0 3B C0 00 00 */ li r30, 0 -/* 800B7CB4 3B E0 00 01 */ li r31, 1 -lbl_800B7CB8: -/* 800B7CB8 7F C3 F3 78 */ mr r3, r30 -/* 800B7CBC 4B F7 62 61 */ bl dComIfGp_getSelectItem__Fi -/* 800B7CC0 54 63 06 3E */ clrlwi r3, r3, 0x18 -/* 800B7CC4 48 0A 6F 15 */ bl checkTradeItem__9daPy_py_cFi -/* 800B7CC8 2C 03 00 00 */ cmpwi r3, 0 -/* 800B7CCC 41 82 00 44 */ beq lbl_800B7D10 -/* 800B7CD0 7F 83 E3 78 */ mr r3, r28 -/* 800B7CD4 7F E0 F0 30 */ slw r0, r31, r30 -/* 800B7CD8 54 04 06 3E */ clrlwi r4, r0, 0x18 -/* 800B7CDC 4B FF A8 F1 */ bl itemTriggerCheck__9daAlink_cFUc -/* 800B7CE0 2C 03 00 00 */ cmpwi r3, 0 -/* 800B7CE4 41 82 00 2C */ beq lbl_800B7D10 -/* 800B7CE8 57 C0 08 3C */ slwi r0, r30, 1 -/* 800B7CEC 38 62 98 B0 */ la r3, itemTalkType(r2) /* 804532B0-_SDA2_BASE_ */ -/* 800B7CF0 7C 63 02 2E */ lhzx r3, r3, r0 -/* 800B7CF4 7F 84 E3 78 */ mr r4, r28 -/* 800B7CF8 80 BC 27 F8 */ lwz r5, 0x27f8(r28) -/* 800B7CFC 38 C0 00 00 */ li r6, 0 -/* 800B7D00 38 E0 00 00 */ li r7, 0 -/* 800B7D04 4B F6 33 F9 */ bl fopAcM_orderTalkItemBtnEvent__FUsP10fopAc_ac_cP10fopAc_ac_cUsUs -/* 800B7D08 38 60 00 01 */ li r3, 1 -/* 800B7D0C 48 00 00 28 */ b lbl_800B7D34 -lbl_800B7D10: -/* 800B7D10 3B DE 00 01 */ addi r30, r30, 1 -/* 800B7D14 2C 1E 00 02 */ cmpwi r30, 2 -/* 800B7D18 41 80 FF A0 */ blt lbl_800B7CB8 -lbl_800B7D1C: -/* 800B7D1C 2C 1D 00 00 */ cmpwi r29, 0 -/* 800B7D20 41 82 00 10 */ beq lbl_800B7D30 -/* 800B7D24 7F 83 E3 78 */ mr r3, r28 -/* 800B7D28 48 00 03 9D */ bl orderZTalk__9daAlink_cFv -/* 800B7D2C 48 00 00 08 */ b lbl_800B7D34 -lbl_800B7D30: -/* 800B7D30 38 60 00 00 */ li r3, 0 -lbl_800B7D34: -/* 800B7D34 39 61 00 20 */ addi r11, r1, 0x20 -/* 800B7D38 48 2A A4 ED */ bl _restgpr_28 -/* 800B7D3C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 800B7D40 7C 08 03 A6 */ mtlr r0 -/* 800B7D44 38 21 00 20 */ addi r1, r1, 0x20 -/* 800B7D48 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/procCoTwGate__9daAlink_cFv.s b/asm/d/a/d_a_alink/procCoTwGate__9daAlink_cFv.s deleted file mode 100644 index b7c63d1712..0000000000 --- a/asm/d/a/d_a_alink/procCoTwGate__9daAlink_cFv.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_8011D7D4: -/* 8011D7D4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8011D7D8 7C 08 02 A6 */ mflr r0 -/* 8011D7DC 90 01 00 14 */ stw r0, 0x14(r1) -/* 8011D7E0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8011D7E4 7C 7F 1B 78 */ mr r31, r3 -/* 8011D7E8 38 7F 1F D0 */ addi r3, r31, 0x1fd0 -/* 8011D7EC 48 04 0C E1 */ bl checkAnmEnd__16daPy_frameCtrl_cFv -/* 8011D7F0 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 8011D7F4 41 82 00 18 */ beq lbl_8011D80C -/* 8011D7F8 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8011D7FC 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8011D800 38 63 4F F8 */ addi r3, r3, 0x4ff8 -/* 8011D804 80 9F 31 84 */ lwz r4, 0x3184(r31) -/* 8011D808 4B F2 A9 75 */ bl cutEnd__16dEvent_manager_cFi -lbl_8011D80C: -/* 8011D80C 38 00 00 07 */ li r0, 7 -/* 8011D810 98 1F 2F 99 */ stb r0, 0x2f99(r31) -/* 8011D814 38 60 00 01 */ li r3, 1 -/* 8011D818 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8011D81C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8011D820 7C 08 03 A6 */ mtlr r0 -/* 8011D824 38 21 00 10 */ addi r1, r1, 0x10 -/* 8011D828 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/procCutFastReady__9daAlink_cFv.s b/asm/d/a/d_a_alink/procCutFastReady__9daAlink_cFv.s deleted file mode 100644 index 3e6eeed69d..0000000000 --- a/asm/d/a/d_a_alink/procCutFastReady__9daAlink_cFv.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_8011EB8C: -/* 8011EB8C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8011EB90 7C 08 02 A6 */ mflr r0 -/* 8011EB94 90 01 00 14 */ stw r0, 0x14(r1) -/* 8011EB98 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8011EB9C 7C 7F 1B 78 */ mr r31, r3 -/* 8011EBA0 38 7F 20 48 */ addi r3, r31, 0x2048 -/* 8011EBA4 48 03 F9 29 */ bl checkAnmEnd__16daPy_frameCtrl_cFv -/* 8011EBA8 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 8011EBAC 41 82 00 18 */ beq lbl_8011EBC4 -/* 8011EBB0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8011EBB4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8011EBB8 38 63 4F F8 */ addi r3, r3, 0x4ff8 -/* 8011EBBC 80 9F 31 84 */ lwz r4, 0x3184(r31) -/* 8011EBC0 4B F2 95 BD */ bl cutEnd__16dEvent_manager_cFi -lbl_8011EBC4: -/* 8011EBC4 38 60 00 01 */ li r3, 1 -/* 8011EBC8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8011EBCC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8011EBD0 7C 08 03 A6 */ mtlr r0 -/* 8011EBD4 38 21 00 10 */ addi r1, r1, 0x10 -/* 8011EBD8 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/procDemoCommon__9daAlink_cFv.s b/asm/d/a/d_a_alink/procDemoCommon__9daAlink_cFv.s deleted file mode 100644 index bd7768d01d..0000000000 --- a/asm/d/a/d_a_alink/procDemoCommon__9daAlink_cFv.s +++ /dev/null @@ -1,15 +0,0 @@ -lbl_801195C0: -/* 801195C0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 801195C4 7C 08 02 A6 */ mflr r0 -/* 801195C8 90 01 00 14 */ stw r0, 0x14(r1) -/* 801195CC 7C 64 1B 78 */ mr r4, r3 -/* 801195D0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 801195D4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 801195D8 38 63 4F F8 */ addi r3, r3, 0x4ff8 -/* 801195DC 80 84 31 84 */ lwz r4, 0x3184(r4) -/* 801195E0 4B F2 EB 9D */ bl cutEnd__16dEvent_manager_cFi -/* 801195E4 38 60 00 01 */ li r3, 1 -/* 801195E8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 801195EC 7C 08 03 A6 */ mtlr r0 -/* 801195F0 38 21 00 10 */ addi r1, r1, 0x10 -/* 801195F4 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/setDeadRideSyncPos__9daAlink_cFv.s b/asm/d/a/d_a_alink/setDeadRideSyncPos__9daAlink_cFv.s deleted file mode 100644 index 4d9b10983e..0000000000 --- a/asm/d/a/d_a_alink/setDeadRideSyncPos__9daAlink_cFv.s +++ /dev/null @@ -1,46 +0,0 @@ -lbl_80118BF4: -/* 80118BF4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80118BF8 7C 08 02 A6 */ mflr r0 -/* 80118BFC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80118C00 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80118C04 93 C1 00 08 */ stw r30, 8(r1) -/* 80118C08 7C 7E 1B 78 */ mr r30, r3 -/* 80118C0C 80 03 31 A0 */ lwz r0, 0x31a0(r3) -/* 80118C10 54 00 05 6B */ rlwinm. r0, r0, 0, 0x15, 0x15 -/* 80118C14 41 82 00 6C */ beq lbl_80118C80 -/* 80118C18 80 1E 28 18 */ lwz r0, 0x2818(r30) -/* 80118C1C 28 00 00 00 */ cmplwi r0, 0 -/* 80118C20 41 82 00 60 */ beq lbl_80118C80 -/* 80118C24 38 00 00 00 */ li r0, 0 -/* 80118C28 88 7E 2F AA */ lbz r3, 0x2faa(r30) -/* 80118C2C 28 03 00 01 */ cmplwi r3, 1 -/* 80118C30 41 82 00 0C */ beq lbl_80118C3C -/* 80118C34 28 03 00 02 */ cmplwi r3, 2 -/* 80118C38 40 82 00 08 */ bne lbl_80118C40 -lbl_80118C3C: -/* 80118C3C 38 00 00 01 */ li r0, 1 -lbl_80118C40: -/* 80118C40 54 00 06 3F */ clrlwi. r0, r0, 0x18 -/* 80118C44 41 82 00 10 */ beq lbl_80118C54 -/* 80118C48 7F C3 F3 78 */ mr r3, r30 -/* 80118C4C 4B FD 4D D9 */ bl setSyncRidePos__9daAlink_cFv -/* 80118C50 48 00 00 30 */ b lbl_80118C80 -lbl_80118C54: -/* 80118C54 7F C3 F3 78 */ mr r3, r30 -/* 80118C58 81 9E 06 28 */ lwz r12, 0x628(r30) -/* 80118C5C 81 8C 01 98 */ lwz r12, 0x198(r12) -/* 80118C60 7D 89 03 A6 */ mtctr r12 -/* 80118C64 4E 80 04 21 */ bctrl -/* 80118C68 28 03 00 00 */ cmplwi r3, 0 -/* 80118C6C 41 82 00 14 */ beq lbl_80118C80 -/* 80118C70 AB FE 04 E6 */ lha r31, 0x4e6(r30) -/* 80118C74 7F C3 F3 78 */ mr r3, r30 -/* 80118C78 4B FF 4F 51 */ bl setSpinnerSyncPos__9daAlink_cFv -/* 80118C7C B3 FE 04 E6 */ sth r31, 0x4e6(r30) -lbl_80118C80: -/* 80118C80 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80118C84 83 C1 00 08 */ lwz r30, 8(r1) -/* 80118C88 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80118C8C 7C 08 03 A6 */ mtlr r0 -/* 80118C90 38 21 00 10 */ addi r1, r1, 0x10 -/* 80118C94 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/setGetSubBgm__9daAlink_cFi.s b/asm/d/a/d_a_alink/setGetSubBgm__9daAlink_cFi.s deleted file mode 100644 index 953f8f2324..0000000000 --- a/asm/d/a/d_a_alink/setGetSubBgm__9daAlink_cFi.s +++ /dev/null @@ -1,32 +0,0 @@ -lbl_8011A688: -/* 8011A688 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8011A68C 7C 08 02 A6 */ mflr r0 -/* 8011A690 90 01 00 14 */ stw r0, 0x14(r1) -/* 8011A694 3C A0 80 39 */ lis r5, getSeType@ha /* 0x80391A5C@ha */ -/* 8011A698 38 A5 1A 5C */ addi r5, r5, getSeType@l /* 0x80391A5C@l */ -/* 8011A69C 7C 85 20 AE */ lbzx r4, r5, r4 -/* 8011A6A0 28 04 00 03 */ cmplwi r4, 3 -/* 8011A6A4 40 82 00 14 */ bne lbl_8011A6B8 -/* 8011A6A8 A8 03 30 10 */ lha r0, 0x3010(r3) -/* 8011A6AC 2C 00 00 00 */ cmpwi r0, 0 -/* 8011A6B0 40 82 00 08 */ bne lbl_8011A6B8 -/* 8011A6B4 38 80 00 07 */ li r4, 7 -lbl_8011A6B8: -/* 8011A6B8 28 04 00 08 */ cmplwi r4, 8 -/* 8011A6BC 41 82 00 30 */ beq lbl_8011A6EC -/* 8011A6C0 80 6D 8D E8 */ lwz r3, mAudioMgrPtr__10Z2AudioMgr(r13) -/* 8011A6C4 38 63 03 D0 */ addi r3, r3, 0x3d0 -/* 8011A6C8 54 80 10 3A */ slwi r0, r4, 2 -/* 8011A6CC 3C 80 80 39 */ lis r4, bgmLabel@ha /* 0x80391B5C@ha */ -/* 8011A6D0 38 84 1B 5C */ addi r4, r4, bgmLabel@l /* 0x80391B5C@l */ -/* 8011A6D4 7C 84 00 2E */ lwzx r4, r4, r0 -/* 8011A6D8 48 19 4D C5 */ bl subBgmStart__8Z2SeqMgrFUl -/* 8011A6DC 38 00 00 01 */ li r0, 1 -/* 8011A6E0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8011A6E4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8011A6E8 98 03 5E B4 */ stb r0, 0x5eb4(r3) -lbl_8011A6EC: -/* 8011A6EC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8011A6F0 7C 08 03 A6 */ mtlr r0 -/* 8011A6F4 38 21 00 10 */ addi r1, r1, 0x10 -/* 8011A6F8 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/setPlayerPosAndAngle__9daAlink_cFPC4cXyzsi.s b/asm/d/a/d_a_alink/setPlayerPosAndAngle__9daAlink_cFPC4cXyzsi.s deleted file mode 100644 index 89bce7069e..0000000000 --- a/asm/d/a/d_a_alink/setPlayerPosAndAngle__9daAlink_cFPC4cXyzsi.s +++ /dev/null @@ -1,129 +0,0 @@ -lbl_800B221C: -/* 800B221C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 800B2220 7C 08 02 A6 */ mflr r0 -/* 800B2224 90 01 00 24 */ stw r0, 0x24(r1) -/* 800B2228 39 61 00 20 */ addi r11, r1, 0x20 -/* 800B222C 48 2A FF AD */ bl _savegpr_28 -/* 800B2230 7C 7F 1B 78 */ mr r31, r3 -/* 800B2234 7C 9C 23 78 */ mr r28, r4 -/* 800B2238 7C BD 2B 78 */ mr r29, r5 -/* 800B223C 7C DE 33 78 */ mr r30, r6 -/* 800B2240 48 06 39 E1 */ bl checkEventRun__9daAlink_cCFv -/* 800B2244 2C 03 00 00 */ cmpwi r3, 0 -/* 800B2248 40 82 00 18 */ bne lbl_800B2260 -/* 800B224C 2C 1E 00 00 */ cmpwi r30, 0 -/* 800B2250 40 82 00 10 */ bne lbl_800B2260 -/* 800B2254 88 1F 05 6A */ lbz r0, 0x56a(r31) -/* 800B2258 28 00 00 00 */ cmplwi r0, 0 -/* 800B225C 41 82 01 88 */ beq lbl_800B23E4 -lbl_800B2260: -/* 800B2260 28 1C 00 00 */ cmplwi r28, 0 -/* 800B2264 41 82 00 78 */ beq lbl_800B22DC -/* 800B2268 C0 1C 00 00 */ lfs f0, 0(r28) -/* 800B226C D0 1F 04 D0 */ stfs f0, 0x4d0(r31) -/* 800B2270 C0 1C 00 04 */ lfs f0, 4(r28) -/* 800B2274 D0 1F 04 D4 */ stfs f0, 0x4d4(r31) -/* 800B2278 C0 1C 00 08 */ lfs f0, 8(r28) -/* 800B227C D0 1F 04 D8 */ stfs f0, 0x4d8(r31) -/* 800B2280 C0 1F 04 D0 */ lfs f0, 0x4d0(r31) -/* 800B2284 D0 1F 04 BC */ stfs f0, 0x4bc(r31) -/* 800B2288 C0 1F 04 D4 */ lfs f0, 0x4d4(r31) -/* 800B228C D0 1F 04 C0 */ stfs f0, 0x4c0(r31) -/* 800B2290 C0 1F 04 D8 */ lfs f0, 0x4d8(r31) -/* 800B2294 D0 1F 04 C4 */ stfs f0, 0x4c4(r31) -/* 800B2298 C0 1F 04 D0 */ lfs f0, 0x4d0(r31) -/* 800B229C D0 1F 37 98 */ stfs f0, 0x3798(r31) -/* 800B22A0 C0 1F 04 D4 */ lfs f0, 0x4d4(r31) -/* 800B22A4 D0 1F 37 9C */ stfs f0, 0x379c(r31) -/* 800B22A8 C0 1F 04 D8 */ lfs f0, 0x4d8(r31) -/* 800B22AC D0 1F 37 A0 */ stfs f0, 0x37a0(r31) -/* 800B22B0 80 1F 05 88 */ lwz r0, 0x588(r31) -/* 800B22B4 64 00 00 80 */ oris r0, r0, 0x80 -/* 800B22B8 90 1F 05 88 */ stw r0, 0x588(r31) -/* 800B22BC 80 1F 05 90 */ lwz r0, 0x590(r31) -/* 800B22C0 60 00 01 00 */ ori r0, r0, 0x100 -/* 800B22C4 90 1F 05 90 */ stw r0, 0x590(r31) -/* 800B22C8 80 1F 06 14 */ lwz r0, 0x614(r31) -/* 800B22CC 28 00 00 59 */ cmplwi r0, 0x59 -/* 800B22D0 41 82 00 0C */ beq lbl_800B22DC -/* 800B22D4 C0 02 92 C0 */ lfs f0, lit_6108(r2) -/* 800B22D8 D0 1F 04 FC */ stfs f0, 0x4fc(r31) -lbl_800B22DC: -/* 800B22DC B3 BF 04 E6 */ sth r29, 0x4e6(r31) -/* 800B22E0 B3 BF 04 DE */ sth r29, 0x4de(r31) -/* 800B22E4 A8 1F 04 E6 */ lha r0, 0x4e6(r31) -/* 800B22E8 B0 1F 2F E6 */ sth r0, 0x2fe6(r31) -/* 800B22EC A0 1F 2F E8 */ lhz r0, 0x2fe8(r31) -/* 800B22F0 28 00 01 45 */ cmplwi r0, 0x145 -/* 800B22F4 41 82 00 0C */ beq lbl_800B2300 -/* 800B22F8 28 00 00 E2 */ cmplwi r0, 0xe2 -/* 800B22FC 40 82 00 2C */ bne lbl_800B2328 -lbl_800B2300: -/* 800B2300 80 1F 05 74 */ lwz r0, 0x574(r31) -/* 800B2304 54 00 01 8D */ rlwinm. r0, r0, 0, 6, 6 -/* 800B2308 40 82 00 20 */ bne lbl_800B2328 -/* 800B230C 80 1F 31 98 */ lwz r0, 0x3198(r31) -/* 800B2310 2C 00 00 00 */ cmpwi r0, 0 -/* 800B2314 41 82 00 14 */ beq lbl_800B2328 -/* 800B2318 C0 1F 04 D0 */ lfs f0, 0x4d0(r31) -/* 800B231C D0 1F 37 C8 */ stfs f0, 0x37c8(r31) -/* 800B2320 C0 1F 04 D8 */ lfs f0, 0x4d8(r31) -/* 800B2324 D0 1F 37 D0 */ stfs f0, 0x37d0(r31) -lbl_800B2328: -/* 800B2328 80 1F 05 70 */ lwz r0, 0x570(r31) -/* 800B232C 54 00 04 E7 */ rlwinm. r0, r0, 0, 0x13, 0x13 -/* 800B2330 41 82 00 1C */ beq lbl_800B234C -/* 800B2334 C0 3F 36 AC */ lfs f1, 0x36ac(r31) -/* 800B2338 48 1B 5E AD */ bl cBgW_CheckBGround__Ff -/* 800B233C 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 800B2340 41 82 00 0C */ beq lbl_800B234C -/* 800B2344 A8 1F 04 E6 */ lha r0, 0x4e6(r31) -/* 800B2348 B0 1F 31 18 */ sth r0, 0x3118(r31) -lbl_800B234C: -/* 800B234C 7F E3 FB 78 */ mr r3, r31 -/* 800B2350 81 9F 06 28 */ lwz r12, 0x628(r31) -/* 800B2354 81 8C 01 88 */ lwz r12, 0x188(r12) -/* 800B2358 7D 89 03 A6 */ mtctr r12 -/* 800B235C 4E 80 04 21 */ bctrl -/* 800B2360 28 03 00 00 */ cmplwi r3, 0 -/* 800B2364 41 82 00 28 */ beq lbl_800B238C -/* 800B2368 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 800B236C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 800B2370 80 63 5D B8 */ lwz r3, 0x5db8(r3) -/* 800B2374 38 9F 04 D0 */ addi r4, r31, 0x4d0 -/* 800B2378 A8 BF 04 E6 */ lha r5, 0x4e6(r31) -/* 800B237C 39 83 18 E0 */ addi r12, r3, 0x18e0 -/* 800B2380 48 2A FD 05 */ bl __ptmf_scall -/* 800B2384 60 00 00 00 */ nop -/* 800B2388 48 00 00 54 */ b lbl_800B23DC -lbl_800B238C: -/* 800B238C 7F E3 FB 78 */ mr r3, r31 -/* 800B2390 81 9F 06 28 */ lwz r12, 0x628(r31) -/* 800B2394 81 8C 01 98 */ lwz r12, 0x198(r12) -/* 800B2398 7D 89 03 A6 */ mtctr r12 -/* 800B239C 4E 80 04 21 */ bctrl -/* 800B23A0 28 03 00 00 */ cmplwi r3, 0 -/* 800B23A4 41 82 00 38 */ beq lbl_800B23DC -/* 800B23A8 80 7F 28 18 */ lwz r3, 0x2818(r31) -/* 800B23AC C0 1F 04 D0 */ lfs f0, 0x4d0(r31) -/* 800B23B0 D0 03 04 D0 */ stfs f0, 0x4d0(r3) -/* 800B23B4 C0 1F 04 D4 */ lfs f0, 0x4d4(r31) -/* 800B23B8 D0 03 04 D4 */ stfs f0, 0x4d4(r3) -/* 800B23BC C0 1F 04 D8 */ lfs f0, 0x4d8(r31) -/* 800B23C0 D0 03 04 D8 */ stfs f0, 0x4d8(r3) -/* 800B23C4 A8 1F 04 E6 */ lha r0, 0x4e6(r31) -/* 800B23C8 B0 03 04 E6 */ sth r0, 0x4e6(r3) -/* 800B23CC A8 1F 04 E6 */ lha r0, 0x4e6(r31) -/* 800B23D0 B0 03 04 DE */ sth r0, 0x4de(r3) -/* 800B23D4 C0 02 92 C0 */ lfs f0, lit_6108(r2) -/* 800B23D8 D0 03 04 FC */ stfs f0, 0x4fc(r3) -lbl_800B23DC: -/* 800B23DC 38 7F 08 14 */ addi r3, r31, 0x814 -/* 800B23E0 48 1B 15 7D */ bl ClrCcMove__9cCcD_SttsFv -lbl_800B23E4: -/* 800B23E4 39 61 00 20 */ addi r11, r1, 0x20 -/* 800B23E8 48 2A FE 3D */ bl _restgpr_28 -/* 800B23EC 80 01 00 24 */ lwz r0, 0x24(r1) -/* 800B23F0 7C 08 03 A6 */ mtlr r0 -/* 800B23F4 38 21 00 20 */ addi r1, r1, 0x20 -/* 800B23F8 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/setSandDownBgCheckWallH__9daAlink_cFv.s b/asm/d/a/d_a_alink/setSandDownBgCheckWallH__9daAlink_cFv.s deleted file mode 100644 index 97b0490248..0000000000 --- a/asm/d/a/d_a_alink/setSandDownBgCheckWallH__9daAlink_cFv.s +++ /dev/null @@ -1,19 +0,0 @@ -lbl_800B172C: -/* 800B172C 80 03 31 A0 */ lwz r0, 0x31a0(r3) -/* 800B1730 54 00 05 6B */ rlwinm. r0, r0, 0, 0x15, 0x15 -/* 800B1734 4C 82 00 20 */ bnelr -/* 800B1738 38 80 00 00 */ li r4, 0 -/* 800B173C 38 A0 00 00 */ li r5, 0 -/* 800B1740 38 00 00 03 */ li r0, 3 -/* 800B1744 7C 09 03 A6 */ mtctr r0 -lbl_800B1748: -/* 800B1748 38 05 2B AC */ addi r0, r5, 0x2bac -/* 800B174C 7C 23 04 2E */ lfsx f1, r3, r0 -/* 800B1750 C0 03 2B A8 */ lfs f0, 0x2ba8(r3) -/* 800B1754 EC 01 00 2A */ fadds f0, f1, f0 -/* 800B1758 38 04 18 E0 */ addi r0, r4, 0x18e0 -/* 800B175C 7C 03 05 2E */ stfsx f0, r3, r0 -/* 800B1760 38 84 00 40 */ addi r4, r4, 0x40 -/* 800B1764 38 A5 00 04 */ addi r5, r5, 4 -/* 800B1768 42 00 FF E0 */ bdnz lbl_800B1748 -/* 800B176C 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/setSingleAnimeParam__9daAlink_cFQ29daAlink_c11daAlink_ANMPC16daAlinkHIO_anm_c.s b/asm/d/a/d_a_alink/setSingleAnimeParam__9daAlink_cFQ29daAlink_c11daAlink_ANMPC16daAlinkHIO_anm_c.s deleted file mode 100644 index 8184e0ecc6..0000000000 --- a/asm/d/a/d_a_alink/setSingleAnimeParam__9daAlink_cFQ29daAlink_c11daAlink_ANMPC16daAlinkHIO_anm_c.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_800AD0F4: -/* 800AD0F4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800AD0F8 7C 08 02 A6 */ mflr r0 -/* 800AD0FC 90 01 00 14 */ stw r0, 0x14(r1) -/* 800AD100 7C A6 2B 78 */ mr r6, r5 -/* 800AD104 C0 25 00 04 */ lfs f1, 4(r5) -/* 800AD108 C0 45 00 08 */ lfs f2, 8(r5) -/* 800AD10C A8 A5 00 00 */ lha r5, 0(r5) -/* 800AD110 C0 66 00 0C */ lfs f3, 0xc(r6) -/* 800AD114 4B FF FE F9 */ bl setSingleAnime__9daAlink_cFQ29daAlink_c11daAlink_ANMffsf -/* 800AD118 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800AD11C 7C 08 03 A6 */ mtlr r0 -/* 800AD120 38 21 00 10 */ addi r1, r1, 0x10 -/* 800AD124 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/setSingleAnime__9daAlink_cFQ29daAlink_c11daAlink_ANMffsf.s b/asm/d/a/d_a_alink/setSingleAnime__9daAlink_cFQ29daAlink_c11daAlink_ANMffsf.s deleted file mode 100644 index fcbb8b66a5..0000000000 --- a/asm/d/a/d_a_alink/setSingleAnime__9daAlink_cFQ29daAlink_c11daAlink_ANMffsf.s +++ /dev/null @@ -1,60 +0,0 @@ -lbl_800AD00C: -/* 800AD00C 94 21 FF B0 */ stwu r1, -0x50(r1) -/* 800AD010 7C 08 02 A6 */ mflr r0 -/* 800AD014 90 01 00 54 */ stw r0, 0x54(r1) -/* 800AD018 DB E1 00 40 */ stfd f31, 0x40(r1) -/* 800AD01C F3 E1 00 48 */ psq_st f31, 72(r1), 0, 0 /* qr0 */ -/* 800AD020 DB C1 00 30 */ stfd f30, 0x30(r1) -/* 800AD024 F3 C1 00 38 */ psq_st f30, 56(r1), 0, 0 /* qr0 */ -/* 800AD028 DB A1 00 20 */ stfd f29, 0x20(r1) -/* 800AD02C F3 A1 00 28 */ psq_st f29, 40(r1), 0, 0 /* qr0 */ -/* 800AD030 39 61 00 20 */ addi r11, r1, 0x20 -/* 800AD034 48 2B 51 A9 */ bl _savegpr_29 -/* 800AD038 7C 7D 1B 78 */ mr r29, r3 -/* 800AD03C 7C 9E 23 78 */ mr r30, r4 -/* 800AD040 FF A0 08 90 */ fmr f29, f1 -/* 800AD044 FF C0 10 90 */ fmr f30, f2 -/* 800AD048 7C BF 2B 78 */ mr r31, r5 -/* 800AD04C FF E0 18 90 */ fmr f31, f3 -/* 800AD050 38 A1 00 0C */ addi r5, r1, 0xc -/* 800AD054 38 C1 00 08 */ addi r6, r1, 8 -/* 800AD058 38 E0 00 00 */ li r7, 0 -/* 800AD05C 3D 00 00 01 */ lis r8, 0x0001 /* 0x00010800@ha */ -/* 800AD060 39 08 08 00 */ addi r8, r8, 0x0800 /* 0x00010800@l */ -/* 800AD064 4B FF F5 AD */ bl getUnderUpperAnime__9daAlink_cFQ29daAlink_c11daAlink_ANMPP15J3DAnmTransformPP15J3DAnmTransformiUl -/* 800AD068 7F A3 EB 78 */ mr r3, r29 -/* 800AD06C 80 81 00 0C */ lwz r4, 0xc(r1) -/* 800AD070 80 A1 00 08 */ lwz r5, 8(r1) -/* 800AD074 FC 20 E8 90 */ fmr f1, f29 -/* 800AD078 FC 40 F0 90 */ fmr f2, f30 -/* 800AD07C 7F E6 FB 78 */ mr r6, r31 -/* 800AD080 4B FF FC C1 */ bl commonSingleAnime__9daAlink_cFP15J3DAnmTransformP15J3DAnmTransformffs -/* 800AD084 C0 02 92 C0 */ lfs f0, lit_6108(r2) -/* 800AD088 FC 1F 00 40 */ fcmpo cr0, f31, f0 -/* 800AD08C 4C 41 13 82 */ cror 2, 1, 2 -/* 800AD090 40 82 00 18 */ bne lbl_800AD0A8 -/* 800AD094 80 7D 20 60 */ lwz r3, 0x2060(r29) -/* 800AD098 FC 20 F8 90 */ fmr f1, f31 -/* 800AD09C 38 80 00 00 */ li r4, 0 -/* 800AD0A0 38 A0 00 23 */ li r5, 0x23 -/* 800AD0A4 4B F6 27 A5 */ bl initOldFrameMorf__22mDoExt_MtxCalcOldFrameFfUsUs -lbl_800AD0A8: -/* 800AD0A8 7F A3 EB 78 */ mr r3, r29 -/* 800AD0AC 7F C4 F3 78 */ mr r4, r30 -/* 800AD0B0 4B FF D2 0D */ bl setHandIndex__9daAlink_cFQ29daAlink_c11daAlink_ANM -/* 800AD0B4 7F A3 EB 78 */ mr r3, r29 -/* 800AD0B8 7F C4 F3 78 */ mr r4, r30 -/* 800AD0BC 48 00 28 ED */ bl setFaceBasicAnime__9daAlink_cFQ29daAlink_c11daAlink_ANM -/* 800AD0C0 38 60 00 01 */ li r3, 1 -/* 800AD0C4 E3 E1 00 48 */ psq_l f31, 72(r1), 0, 0 /* qr0 */ -/* 800AD0C8 CB E1 00 40 */ lfd f31, 0x40(r1) -/* 800AD0CC E3 C1 00 38 */ psq_l f30, 56(r1), 0, 0 /* qr0 */ -/* 800AD0D0 CB C1 00 30 */ lfd f30, 0x30(r1) -/* 800AD0D4 E3 A1 00 28 */ psq_l f29, 40(r1), 0, 0 /* qr0 */ -/* 800AD0D8 CB A1 00 20 */ lfd f29, 0x20(r1) -/* 800AD0DC 39 61 00 20 */ addi r11, r1, 0x20 -/* 800AD0E0 48 2B 51 49 */ bl _restgpr_29 -/* 800AD0E4 80 01 00 54 */ lwz r0, 0x54(r1) -/* 800AD0E8 7C 08 03 A6 */ mtlr r0 -/* 800AD0EC 38 21 00 50 */ addi r1, r1, 0x50 -/* 800AD0F0 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/setTalkStatus__9daAlink_cFv.s b/asm/d/a/d_a_alink/setTalkStatus__9daAlink_cFv.s deleted file mode 100644 index 7fdd44885f..0000000000 --- a/asm/d/a/d_a_alink/setTalkStatus__9daAlink_cFv.s +++ /dev/null @@ -1,86 +0,0 @@ -lbl_800B4A08: -/* 800B4A08 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800B4A0C 7C 08 02 A6 */ mflr r0 -/* 800B4A10 90 01 00 14 */ stw r0, 0x14(r1) -/* 800B4A14 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800B4A18 7C 7F 1B 78 */ mr r31, r3 -/* 800B4A1C 80 03 05 88 */ lwz r0, 0x588(r3) -/* 800B4A20 54 00 02 53 */ rlwinm. r0, r0, 0, 9, 9 -/* 800B4A24 40 82 00 10 */ bne lbl_800B4A34 -/* 800B4A28 80 BF 27 F4 */ lwz r5, 0x27f4(r31) -/* 800B4A2C 28 05 00 00 */ cmplwi r5, 0 -/* 800B4A30 40 82 00 0C */ bne lbl_800B4A3C -lbl_800B4A34: -/* 800B4A34 38 60 00 00 */ li r3, 0 -/* 800B4A38 48 00 00 E0 */ b lbl_800B4B18 -lbl_800B4A3C: -/* 800B4A3C 80 9F 27 E4 */ lwz r4, 0x27e4(r31) -/* 800B4A40 4B FF FD 3D */ bl checkRequestTalkActor__9daAlink_cFP10dAttList_cP10fopAc_ac_c -/* 800B4A44 2C 03 00 00 */ cmpwi r3, 0 -/* 800B4A48 41 82 00 CC */ beq lbl_800B4B14 -/* 800B4A4C 7F E3 FB 78 */ mr r3, r31 -/* 800B4A50 4B FF FF 01 */ bl notTalk__9daAlink_cFv -/* 800B4A54 2C 03 00 00 */ cmpwi r3, 0 -/* 800B4A58 41 82 00 14 */ beq lbl_800B4A6C -/* 800B4A5C 7F E3 FB 78 */ mr r3, r31 -/* 800B4A60 38 80 00 90 */ li r4, 0x90 -/* 800B4A64 4B FF E7 ED */ bl setDoStatus__9daAlink_cFUc -/* 800B4A68 48 00 00 A4 */ b lbl_800B4B0C -lbl_800B4A6C: -/* 800B4A6C 80 9F 27 F4 */ lwz r4, 0x27f4(r31) -/* 800B4A70 80 64 05 5C */ lwz r3, 0x55c(r4) -/* 800B4A74 54 60 01 8D */ rlwinm. r0, r3, 0, 6, 6 -/* 800B4A78 41 82 00 0C */ beq lbl_800B4A84 -/* 800B4A7C 38 60 00 00 */ li r3, 0 -/* 800B4A80 48 00 00 98 */ b lbl_800B4B18 -lbl_800B4A84: -/* 800B4A84 54 60 02 11 */ rlwinm. r0, r3, 0, 8, 8 -/* 800B4A88 41 82 00 14 */ beq lbl_800B4A9C -/* 800B4A8C 7F E3 FB 78 */ mr r3, r31 -/* 800B4A90 38 80 00 3B */ li r4, 0x3b -/* 800B4A94 4B FF E7 BD */ bl setDoStatus__9daAlink_cFUc -/* 800B4A98 48 00 00 74 */ b lbl_800B4B0C -lbl_800B4A9C: -/* 800B4A9C 54 60 00 85 */ rlwinm. r0, r3, 0, 2, 2 -/* 800B4AA0 41 82 00 30 */ beq lbl_800B4AD0 -/* 800B4AA4 A8 04 00 08 */ lha r0, 8(r4) -/* 800B4AA8 2C 00 01 20 */ cmpwi r0, 0x120 -/* 800B4AAC 40 82 00 14 */ bne lbl_800B4AC0 -/* 800B4AB0 7F E3 FB 78 */ mr r3, r31 -/* 800B4AB4 38 80 00 3C */ li r4, 0x3c -/* 800B4AB8 4B FF E7 99 */ bl setDoStatus__9daAlink_cFUc -/* 800B4ABC 48 00 00 50 */ b lbl_800B4B0C -lbl_800B4AC0: -/* 800B4AC0 7F E3 FB 78 */ mr r3, r31 -/* 800B4AC4 38 80 00 08 */ li r4, 8 -/* 800B4AC8 4B FF E7 89 */ bl setDoStatus__9daAlink_cFUc -/* 800B4ACC 48 00 00 40 */ b lbl_800B4B0C -lbl_800B4AD0: -/* 800B4AD0 54 60 00 43 */ rlwinm. r0, r3, 0, 1, 1 -/* 800B4AD4 41 82 00 14 */ beq lbl_800B4AE8 -/* 800B4AD8 7F E3 FB 78 */ mr r3, r31 -/* 800B4ADC 38 80 00 80 */ li r4, 0x80 -/* 800B4AE0 4B FF E7 71 */ bl setDoStatus__9daAlink_cFUc -/* 800B4AE4 48 00 00 28 */ b lbl_800B4B0C -lbl_800B4AE8: -/* 800B4AE8 54 60 01 09 */ rlwinm. r0, r3, 0, 4, 4 -/* 800B4AEC 41 82 00 14 */ beq lbl_800B4B00 -/* 800B4AF0 7F E3 FB 78 */ mr r3, r31 -/* 800B4AF4 38 80 00 1B */ li r4, 0x1b -/* 800B4AF8 4B FF E7 59 */ bl setDoStatus__9daAlink_cFUc -/* 800B4AFC 48 00 00 10 */ b lbl_800B4B0C -lbl_800B4B00: -/* 800B4B00 7F E3 FB 78 */ mr r3, r31 -/* 800B4B04 38 80 00 1C */ li r4, 0x1c -/* 800B4B08 4B FF E7 49 */ bl setDoStatus__9daAlink_cFUc -lbl_800B4B0C: -/* 800B4B0C 38 60 00 01 */ li r3, 1 -/* 800B4B10 48 00 00 08 */ b lbl_800B4B18 -lbl_800B4B14: -/* 800B4B14 38 60 00 00 */ li r3, 0 -lbl_800B4B18: -/* 800B4B18 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800B4B1C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800B4B20 7C 08 03 A6 */ mtlr r0 -/* 800B4B24 38 21 00 10 */ addi r1, r1, 0x10 -/* 800B4B28 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/setUnderAnimeParam__9daAlink_cFUsQ29daAlink_c13daAlink_UNDERPC16daAlinkHIO_anm_c.s b/asm/d/a/d_a_alink/setUnderAnimeParam__9daAlink_cFUsQ29daAlink_c13daAlink_UNDERPC16daAlinkHIO_anm_c.s deleted file mode 100644 index 723d6697e6..0000000000 --- a/asm/d/a/d_a_alink/setUnderAnimeParam__9daAlink_cFUsQ29daAlink_c13daAlink_UNDERPC16daAlinkHIO_anm_c.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_800ADAB8: -/* 800ADAB8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800ADABC 7C 08 02 A6 */ mflr r0 -/* 800ADAC0 90 01 00 14 */ stw r0, 0x14(r1) -/* 800ADAC4 7C C7 33 78 */ mr r7, r6 -/* 800ADAC8 C0 26 00 04 */ lfs f1, 4(r6) -/* 800ADACC C0 46 00 08 */ lfs f2, 8(r6) -/* 800ADAD0 A8 C6 00 00 */ lha r6, 0(r6) -/* 800ADAD4 C0 67 00 0C */ lfs f3, 0xc(r7) -/* 800ADAD8 4B FF FE 8D */ bl setUnderAnime__9daAlink_cFUsQ29daAlink_c13daAlink_UNDERffsf -/* 800ADADC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800ADAE0 7C 08 03 A6 */ mtlr r0 -/* 800ADAE4 38 21 00 10 */ addi r1, r1, 0x10 -/* 800ADAE8 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_alink/throwBoomerang__9daAlink_cFv.s b/asm/d/a/d_a_alink/throwBoomerang__9daAlink_cFv.s index 009a9f0bc3..dc8922a68d 100644 --- a/asm/d/a/d_a_alink/throwBoomerang__9daAlink_cFv.s +++ b/asm/d/a/d_a_alink/throwBoomerang__9daAlink_cFv.s @@ -43,13 +43,13 @@ lbl_800E0734: /* 800E0758 64 03 00 40 */ oris r3, r0, 0x40 /* 800E075C 90 64 5F 18 */ stw r3, 0x5f18(r4) /* 800E0760 38 00 40 00 */ li r0, 0x4000 -/* 800E0764 B0 0D 8A 9C */ sth r0, struct_8045101C+0x0(r13) +/* 800E0764 B0 0D 8A 9C */ sth r0, m_dropAngleY__20daPy_boomerangMove_c+0x0(r13) /* 800E0768 54 60 03 56 */ rlwinm r0, r3, 0, 0xd, 0xb /* 800E076C 90 04 5F 18 */ stw r0, 0x5f18(r4) /* 800E0770 38 00 FF FF */ li r0, -1 /* 800E0774 B0 1D 30 8E */ sth r0, 0x308e(r29) /* 800E0778 38 00 00 00 */ li r0, 0 -/* 800E077C B0 0D 8A 9E */ sth r0, struct_8045101C+0x2(r13) +/* 800E077C B0 0D 8A 9E */ sth r0, m_dropAngleY__20daPy_boomerangMove_c+0x2(r13) /* 800E0780 48 00 00 44 */ b lbl_800E07C4 lbl_800E0784: /* 800E0784 3C 60 80 39 */ lis r3, m__20daAlinkHIO_pickUp_c0@ha /* 0x8038E840@ha */ diff --git a/asm/d/a/d_a_player/posMove__20daPy_boomerangMove_cFP4cXyzPsP10fopAc_ac_cs.s b/asm/d/a/d_a_player/posMove__20daPy_boomerangMove_cFP4cXyzPsP10fopAc_ac_cs.s deleted file mode 100644 index 0cff662c51..0000000000 --- a/asm/d/a/d_a_player/posMove__20daPy_boomerangMove_cFP4cXyzPsP10fopAc_ac_cs.s +++ /dev/null @@ -1,150 +0,0 @@ -lbl_8015E654: -/* 8015E654 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8015E658 7C 08 02 A6 */ mflr r0 -/* 8015E65C 90 01 00 34 */ stw r0, 0x34(r1) -/* 8015E660 39 61 00 30 */ addi r11, r1, 0x30 -/* 8015E664 48 20 3B 71 */ bl _savegpr_27 -/* 8015E668 7C 7E 1B 78 */ mr r30, r3 -/* 8015E66C 7C 9F 23 78 */ mr r31, r4 -/* 8015E670 7C BB 2B 78 */ mr r27, r5 -/* 8015E674 7C DC 33 78 */ mr r28, r6 -/* 8015E678 7C FD 3B 78 */ mr r29, r7 -/* 8015E67C 48 00 12 55 */ bl getThrowBoomerangActor__9daPy_py_cFv -/* 8015E680 A8 1E 00 02 */ lha r0, 2(r30) -/* 8015E684 7C 1D 00 50 */ subf r0, r29, r0 -/* 8015E688 B0 1E 00 02 */ sth r0, 2(r30) -/* 8015E68C A8 1B 00 00 */ lha r0, 0(r27) -/* 8015E690 7C 1D 00 50 */ subf r0, r29, r0 -/* 8015E694 B0 1B 00 00 */ sth r0, 0(r27) -/* 8015E698 C0 3E 00 08 */ lfs f1, 8(r30) -/* 8015E69C C0 02 9C 20 */ lfs f0, lit_4332(r2) -/* 8015E6A0 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 8015E6A4 40 81 00 08 */ ble lbl_8015E6AC -/* 8015E6A8 D0 1E 00 08 */ stfs f0, 8(r30) -lbl_8015E6AC: -/* 8015E6AC C0 3E 00 04 */ lfs f1, 4(r30) -/* 8015E6B0 C0 02 9C 24 */ lfs f0, lit_4333(r2) -/* 8015E6B4 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 8015E6B8 40 80 00 0C */ bge lbl_8015E6C4 -/* 8015E6BC D0 1E 00 04 */ stfs f0, 4(r30) -/* 8015E6C0 48 00 00 14 */ b lbl_8015E6D4 -lbl_8015E6C4: -/* 8015E6C4 C0 02 9C 18 */ lfs f0, lit_4249(r2) -/* 8015E6C8 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 8015E6CC 40 81 00 08 */ ble lbl_8015E6D4 -/* 8015E6D0 D0 1E 00 04 */ stfs f0, 4(r30) -lbl_8015E6D4: -/* 8015E6D4 28 03 00 00 */ cmplwi r3, 0 -/* 8015E6D8 41 82 00 BC */ beq lbl_8015E794 -/* 8015E6DC 88 03 09 56 */ lbz r0, 0x956(r3) -/* 8015E6E0 28 00 00 00 */ cmplwi r0, 0 -/* 8015E6E4 41 82 00 0C */ beq lbl_8015E6F0 -/* 8015E6E8 38 60 00 00 */ li r3, 0 -/* 8015E6EC 48 00 01 78 */ b lbl_8015E864 -lbl_8015E6F0: -/* 8015E6F0 3C 80 80 40 */ lis r4, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8015E6F4 38 84 61 C0 */ addi r4, r4, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8015E6F8 88 04 4F AD */ lbz r0, 0x4fad(r4) -/* 8015E6FC 28 00 00 00 */ cmplwi r0, 0 -/* 8015E700 41 82 00 10 */ beq lbl_8015E710 -/* 8015E704 38 00 00 01 */ li r0, 1 -/* 8015E708 98 1E 00 00 */ stb r0, 0(r30) -/* 8015E70C 48 00 00 24 */ b lbl_8015E730 -lbl_8015E710: -/* 8015E710 A8 0D 8A 9E */ lha r0, struct_8045101C+0x2(r13) -/* 8015E714 2C 00 00 00 */ cmpwi r0, 0 -/* 8015E718 41 82 00 18 */ beq lbl_8015E730 -/* 8015E71C 88 1E 00 00 */ lbz r0, 0(r30) -/* 8015E720 28 00 00 00 */ cmplwi r0, 0 -/* 8015E724 40 82 00 0C */ bne lbl_8015E730 -/* 8015E728 38 60 00 00 */ li r3, 0 -/* 8015E72C 48 00 01 38 */ b lbl_8015E864 -lbl_8015E730: -/* 8015E730 3C 80 80 44 */ lis r4, sincosTable___5JMath@ha /* 0x80439A20@ha */ -/* 8015E734 38 A4 9A 20 */ addi r5, r4, sincosTable___5JMath@l /* 0x80439A20@l */ -/* 8015E738 A8 1E 00 02 */ lha r0, 2(r30) -/* 8015E73C 54 00 04 38 */ rlwinm r0, r0, 0, 0x10, 0x1c -/* 8015E740 7C 85 02 14 */ add r4, r5, r0 -/* 8015E744 C0 04 00 04 */ lfs f0, 4(r4) -/* 8015E748 C0 23 04 D8 */ lfs f1, 0x4d8(r3) -/* 8015E74C C0 9E 00 08 */ lfs f4, 8(r30) -/* 8015E750 EC 04 00 32 */ fmuls f0, f4, f0 -/* 8015E754 EC 61 00 2A */ fadds f3, f1, f0 -/* 8015E758 C0 23 04 D4 */ lfs f1, 0x4d4(r3) -/* 8015E75C C0 1E 00 04 */ lfs f0, 4(r30) -/* 8015E760 EC 41 00 2A */ fadds f2, f1, f0 -/* 8015E764 7C 05 04 2E */ lfsx f0, r5, r0 -/* 8015E768 C0 23 04 D0 */ lfs f1, 0x4d0(r3) -/* 8015E76C EC 04 00 32 */ fmuls f0, f4, f0 -/* 8015E770 EC 01 00 2A */ fadds f0, f1, f0 -/* 8015E774 D0 1F 00 00 */ stfs f0, 0(r31) -/* 8015E778 D0 5F 00 04 */ stfs f2, 4(r31) -/* 8015E77C D0 7F 00 08 */ stfs f3, 8(r31) -/* 8015E780 80 03 09 64 */ lwz r0, 0x964(r3) -/* 8015E784 60 00 00 80 */ ori r0, r0, 0x80 -/* 8015E788 90 03 09 64 */ stw r0, 0x964(r3) -/* 8015E78C 38 60 00 01 */ li r3, 1 -/* 8015E790 48 00 00 D4 */ b lbl_8015E864 -lbl_8015E794: -/* 8015E794 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8015E798 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8015E79C 83 A3 5D B4 */ lwz r29, 0x5db4(r3) -/* 8015E7A0 28 1C 00 00 */ cmplwi r28, 0 -/* 8015E7A4 41 82 00 18 */ beq lbl_8015E7BC -/* 8015E7A8 7F A3 EB 78 */ mr r3, r29 -/* 8015E7AC 7F 84 E3 78 */ mr r4, r28 -/* 8015E7B0 4B F8 1B 09 */ bl checkBoomerangCarry__9daAlink_cFP10fopAc_ac_c -/* 8015E7B4 2C 03 00 00 */ cmpwi r3, 0 -/* 8015E7B8 40 82 00 A8 */ bne lbl_8015E860 -lbl_8015E7BC: -/* 8015E7BC A8 0D 8A 9E */ lha r0, struct_8045101C+0x2(r13) -/* 8015E7C0 2C 00 00 00 */ cmpwi r0, 0 -/* 8015E7C4 41 82 00 10 */ beq lbl_8015E7D4 -/* 8015E7C8 88 1E 00 00 */ lbz r0, 0(r30) -/* 8015E7CC 28 00 00 00 */ cmplwi r0, 0 -/* 8015E7D0 41 82 00 90 */ beq lbl_8015E860 -lbl_8015E7D4: -/* 8015E7D4 C0 22 9C 28 */ lfs f1, lit_4334(r2) -/* 8015E7D8 48 10 91 7D */ bl cM_rndF__Ff -/* 8015E7DC A8 6D 8A 9C */ lha r3, struct_8045101C+0x0(r13) -/* 8015E7E0 A8 1D 04 E6 */ lha r0, 0x4e6(r29) -/* 8015E7E4 7C 03 02 14 */ add r0, r3, r0 -/* 8015E7E8 C8 42 9C 08 */ lfd f2, lit_4237(r2) -/* 8015E7EC 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8015E7F0 90 01 00 0C */ stw r0, 0xc(r1) -/* 8015E7F4 3C 00 43 30 */ lis r0, 0x4330 -/* 8015E7F8 90 01 00 08 */ stw r0, 8(r1) -/* 8015E7FC C8 01 00 08 */ lfd f0, 8(r1) -/* 8015E800 EC 00 10 28 */ fsubs f0, f0, f2 -/* 8015E804 EC 00 08 2A */ fadds f0, f0, f1 -/* 8015E808 FC 00 00 1E */ fctiwz f0, f0 -/* 8015E80C D8 01 00 10 */ stfd f0, 0x10(r1) -/* 8015E810 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8015E814 C0 5D 04 D0 */ lfs f2, 0x4d0(r29) -/* 8015E818 C0 3E 00 08 */ lfs f1, 8(r30) -/* 8015E81C 54 00 04 38 */ rlwinm r0, r0, 0, 0x10, 0x1c -/* 8015E820 3C 60 80 44 */ lis r3, sincosTable___5JMath@ha /* 0x80439A20@ha */ -/* 8015E824 38 63 9A 20 */ addi r3, r3, sincosTable___5JMath@l /* 0x80439A20@l */ -/* 8015E828 7C 03 04 2E */ lfsx f0, r3, r0 -/* 8015E82C EC 01 00 32 */ fmuls f0, f1, f0 -/* 8015E830 EC 02 00 2A */ fadds f0, f2, f0 -/* 8015E834 D0 1F 00 00 */ stfs f0, 0(r31) -/* 8015E838 C0 5D 04 D8 */ lfs f2, 0x4d8(r29) -/* 8015E83C C0 3E 00 08 */ lfs f1, 8(r30) -/* 8015E840 7C 63 02 14 */ add r3, r3, r0 -/* 8015E844 C0 03 00 04 */ lfs f0, 4(r3) -/* 8015E848 EC 01 00 32 */ fmuls f0, f1, f0 -/* 8015E84C EC 02 00 2A */ fadds f0, f2, f0 -/* 8015E850 D0 1F 00 08 */ stfs f0, 8(r31) -/* 8015E854 A8 6D 8A 9C */ lha r3, struct_8045101C+0x0(r13) -/* 8015E858 38 03 20 00 */ addi r0, r3, 0x2000 -/* 8015E85C B0 0D 8A 9C */ sth r0, struct_8045101C+0x0(r13) -lbl_8015E860: -/* 8015E860 38 60 00 00 */ li r3, 0 -lbl_8015E864: -/* 8015E864 39 61 00 30 */ addi r11, r1, 0x30 -/* 8015E868 48 20 39 B9 */ bl _restgpr_27 -/* 8015E86C 80 01 00 34 */ lwz r0, 0x34(r1) -/* 8015E870 7C 08 03 A6 */ mtlr r0 -/* 8015E874 38 21 00 30 */ addi r1, r1, 0x30 -/* 8015E878 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_player/setFrameCtrl__16daPy_frameCtrl_cFUcssff.s b/asm/d/a/d_a_player/setFrameCtrl__16daPy_frameCtrl_cFUcssff.s deleted file mode 100644 index 0fac4d1310..0000000000 --- a/asm/d/a/d_a_player/setFrameCtrl__16daPy_frameCtrl_cFUcssff.s +++ /dev/null @@ -1,30 +0,0 @@ -lbl_8015E544: -/* 8015E544 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8015E548 98 83 00 04 */ stb r4, 4(r3) -/* 8015E54C B0 C3 00 08 */ sth r6, 8(r3) -/* 8015E550 D0 23 00 0C */ stfs f1, 0xc(r3) -/* 8015E554 B0 A3 00 06 */ sth r5, 6(r3) -/* 8015E558 7C A0 07 34 */ extsh r0, r5 -/* 8015E55C C8 62 9C 08 */ lfd f3, lit_4237(r2) -/* 8015E560 6C 00 80 00 */ xoris r0, r0, 0x8000 -/* 8015E564 90 01 00 0C */ stw r0, 0xc(r1) -/* 8015E568 3C 00 43 30 */ lis r0, 0x4330 -/* 8015E56C 90 01 00 08 */ stw r0, 8(r1) -/* 8015E570 C8 01 00 08 */ lfd f0, 8(r1) -/* 8015E574 EC 00 18 28 */ fsubs f0, f0, f3 -/* 8015E578 D0 03 00 10 */ stfs f0, 0x10(r3) -/* 8015E57C D0 43 00 10 */ stfs f2, 0x10(r3) -/* 8015E580 C0 02 9C 00 */ lfs f0, lit_4215(r2) -/* 8015E584 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 8015E588 4C 41 13 82 */ cror 2, 1, 2 -/* 8015E58C 40 82 00 0C */ bne lbl_8015E598 -/* 8015E590 B0 A3 00 0A */ sth r5, 0xa(r3) -/* 8015E594 48 00 00 08 */ b lbl_8015E59C -lbl_8015E598: -/* 8015E598 B0 C3 00 0A */ sth r6, 0xa(r3) -lbl_8015E59C: -/* 8015E59C 38 00 00 00 */ li r0, 0 -/* 8015E5A0 B0 03 00 14 */ sth r0, 0x14(r3) -/* 8015E5A4 B0 03 00 16 */ sth r0, 0x16(r3) -/* 8015E5A8 38 21 00 10 */ addi r1, r1, 0x10 -/* 8015E5AC 4E 80 00 20 */ blr diff --git a/asm/d/a/d_a_player/setSight__18daPy_sightPacket_cFv.s b/asm/d/a/d_a_player/setSight__18daPy_sightPacket_cFv.s deleted file mode 100644 index 0fea7caa18..0000000000 --- a/asm/d/a/d_a_player/setSight__18daPy_sightPacket_cFv.s +++ /dev/null @@ -1,35 +0,0 @@ -lbl_8015F2FC: -/* 8015F2FC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8015F300 7C 08 02 A6 */ mflr r0 -/* 8015F304 90 01 00 24 */ stw r0, 0x24(r1) -/* 8015F308 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8015F30C 7C 7F 1B 78 */ mr r31, r3 -/* 8015F310 38 7F 00 08 */ addi r3, r31, 8 -/* 8015F314 38 81 00 08 */ addi r4, r1, 8 -/* 8015F318 4B EB 5F F9 */ bl mDoLib_project__FP3VecP3Vec -/* 8015F31C 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 8015F320 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 8015F324 C0 21 00 08 */ lfs f1, 8(r1) -/* 8015F328 C0 41 00 0C */ lfs f2, 0xc(r1) -/* 8015F32C C0 61 00 10 */ lfs f3, 0x10(r1) -/* 8015F330 48 1E 75 B9 */ bl PSMTXTrans -/* 8015F334 C0 22 9C 80 */ lfs f1, lit_4699(r2) -/* 8015F338 FC 40 08 90 */ fmr f2, f1 -/* 8015F33C FC 60 08 90 */ fmr f3, f1 -/* 8015F340 4B EA DA F9 */ bl scaleM__14mDoMtx_stack_cFfff -/* 8015F344 3C 60 80 3E */ lis r3, now__14mDoMtx_stack_c@ha /* 0x803DD470@ha */ -/* 8015F348 38 63 D4 70 */ addi r3, r3, now__14mDoMtx_stack_c@l /* 0x803DD470@l */ -/* 8015F34C 38 9F 00 14 */ addi r4, r31, 0x14 -/* 8015F350 48 1E 71 61 */ bl PSMTXCopy -/* 8015F354 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8015F358 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8015F35C 38 63 5F 64 */ addi r3, r3, 0x5f64 -/* 8015F360 38 83 02 3C */ addi r4, r3, 0x23c -/* 8015F364 38 A3 02 40 */ addi r5, r3, 0x240 -/* 8015F368 7F E6 FB 78 */ mr r6, r31 -/* 8015F36C 4B EF 74 29 */ bl set__12dDlst_list_cFRPP12dDlst_base_cRPP12dDlst_base_cP12dDlst_base_c -/* 8015F370 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8015F374 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8015F378 7C 08 03 A6 */ mtlr r0 -/* 8015F37C 38 21 00 20 */ addi r1, r1, 0x20 -/* 8015F380 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/BlckConnect__4cBgWFPUsPii.s b/asm/d/bg/d_bg_w/BlckConnect__4cBgWFPUsPii.s deleted file mode 100644 index 737bf6aa53..0000000000 --- a/asm/d/bg/d_bg_w/BlckConnect__4cBgWFPUsPii.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_80079770: -/* 80079770 A0 04 00 00 */ lhz r0, 0(r4) -/* 80079774 28 00 FF FF */ cmplwi r0, 0xffff -/* 80079778 40 82 00 08 */ bne lbl_80079780 -/* 8007977C B0 C4 00 00 */ sth r6, 0(r4) -lbl_80079780: -/* 80079780 80 E5 00 00 */ lwz r7, 0(r5) -/* 80079784 3C 07 00 00 */ addis r0, r7, 0 -/* 80079788 28 00 FF FF */ cmplwi r0, 0xffff -/* 8007978C 41 82 00 10 */ beq lbl_8007979C -/* 80079790 80 83 00 98 */ lwz r4, 0x98(r3) -/* 80079794 54 E0 18 38 */ slwi r0, r7, 3 -/* 80079798 7C C4 03 2E */ sthx r6, r4, r0 -lbl_8007979C: -/* 8007979C 90 C5 00 00 */ stw r6, 0(r5) -/* 800797A0 3C 80 00 01 */ lis r4, 0x0001 /* 0x0000FFFF@ha */ -/* 800797A4 38 84 FF FF */ addi r4, r4, 0xFFFF /* 0x0000FFFF@l */ -/* 800797A8 80 63 00 98 */ lwz r3, 0x98(r3) -/* 800797AC 80 05 00 00 */ lwz r0, 0(r5) -/* 800797B0 54 00 18 38 */ slwi r0, r0, 3 -/* 800797B4 7C 83 03 2E */ sthx r4, r3, r0 -/* 800797B8 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/CalcPlane__4cBgWFv.s b/asm/d/bg/d_bg_w/CalcPlane__4cBgWFv.s deleted file mode 100644 index 95dec24ef5..0000000000 --- a/asm/d/bg/d_bg_w/CalcPlane__4cBgWFv.s +++ /dev/null @@ -1,72 +0,0 @@ -lbl_80079564: -/* 80079564 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80079568 7C 08 02 A6 */ mflr r0 -/* 8007956C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80079570 39 61 00 20 */ addi r11, r1, 0x20 -/* 80079574 48 2E 8C 61 */ bl _savegpr_27 -/* 80079578 7C 7F 1B 78 */ mr r31, r3 -/* 8007957C 80 63 00 A0 */ lwz r3, 0xa0(r3) -/* 80079580 83 83 00 0C */ lwz r28, 0xc(r3) -/* 80079584 80 1F 00 9C */ lwz r0, 0x9c(r31) -/* 80079588 28 00 00 00 */ cmplwi r0, 0 -/* 8007958C 41 82 00 C4 */ beq lbl_80079650 -/* 80079590 88 1F 00 89 */ lbz r0, 0x89(r31) -/* 80079594 28 00 00 00 */ cmplwi r0, 0 -/* 80079598 40 82 00 50 */ bne lbl_800795E8 -/* 8007959C 3B 80 00 00 */ li r28, 0 -/* 800795A0 3B A0 00 00 */ li r29, 0 -/* 800795A4 48 00 00 30 */ b lbl_800795D4 -lbl_800795A8: -/* 800795A8 80 1F 00 94 */ lwz r0, 0x94(r31) -/* 800795AC 7C 60 EA 14 */ add r3, r0, r29 -/* 800795B0 38 9F 00 7C */ addi r4, r31, 0x7c -/* 800795B4 48 2C DB E1 */ bl PSVECDotProduct -/* 800795B8 80 7F 00 94 */ lwz r3, 0x94(r31) -/* 800795BC 38 1D 00 0C */ addi r0, r29, 0xc -/* 800795C0 7C 03 04 2E */ lfsx f0, r3, r0 -/* 800795C4 EC 00 08 28 */ fsubs f0, f0, f1 -/* 800795C8 7C 03 05 2E */ stfsx f0, r3, r0 -/* 800795CC 3B 9C 00 01 */ addi r28, r28, 1 -/* 800795D0 3B BD 00 18 */ addi r29, r29, 0x18 -lbl_800795D4: -/* 800795D4 80 7F 00 A0 */ lwz r3, 0xa0(r31) -/* 800795D8 80 03 00 08 */ lwz r0, 8(r3) -/* 800795DC 7C 1C 00 00 */ cmpw r28, r0 -/* 800795E0 41 80 FF C8 */ blt lbl_800795A8 -/* 800795E4 48 00 00 6C */ b lbl_80079650 -lbl_800795E8: -/* 800795E8 3B 60 00 00 */ li r27, 0 -/* 800795EC 3B C0 00 00 */ li r30, 0 -/* 800795F0 3B A0 00 00 */ li r29, 0 -/* 800795F4 48 00 00 4C */ b lbl_80079640 -lbl_800795F8: -/* 800795F8 80 1F 00 94 */ lwz r0, 0x94(r31) -/* 800795FC 7C C0 EA 14 */ add r6, r0, r29 -/* 80079600 7C BC F2 14 */ add r5, r28, r30 -/* 80079604 80 FF 00 9C */ lwz r7, 0x9c(r31) -/* 80079608 A0 05 00 00 */ lhz r0, 0(r5) -/* 8007960C 1C 00 00 0C */ mulli r0, r0, 0xc -/* 80079610 7C 67 02 14 */ add r3, r7, r0 -/* 80079614 A0 05 00 02 */ lhz r0, 2(r5) -/* 80079618 1C 00 00 0C */ mulli r0, r0, 0xc -/* 8007961C 7C 87 02 14 */ add r4, r7, r0 -/* 80079620 A0 05 00 04 */ lhz r0, 4(r5) -/* 80079624 1C 00 00 0C */ mulli r0, r0, 0xc -/* 80079628 7C A7 02 14 */ add r5, r7, r0 -/* 8007962C 38 E6 00 0C */ addi r7, r6, 0xc -/* 80079630 48 1E F2 ED */ bl cM3d_CalcPla__FPC3VecPC3VecPC3VecP3VecPf -/* 80079634 3B 7B 00 01 */ addi r27, r27, 1 -/* 80079638 3B DE 00 0A */ addi r30, r30, 0xa -/* 8007963C 3B BD 00 18 */ addi r29, r29, 0x18 -lbl_80079640: -/* 80079640 80 7F 00 A0 */ lwz r3, 0xa0(r31) -/* 80079644 80 03 00 08 */ lwz r0, 8(r3) -/* 80079648 7C 1B 00 00 */ cmpw r27, r0 -/* 8007964C 41 80 FF AC */ blt lbl_800795F8 -lbl_80079650: -/* 80079650 39 61 00 20 */ addi r11, r1, 0x20 -/* 80079654 48 2E 8B CD */ bl _restgpr_27 -/* 80079658 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8007965C 7C 08 03 A6 */ mtlr r0 -/* 80079660 38 21 00 20 */ addi r1, r1, 0x20 -/* 80079664 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/CallRideCallBack__4dBgWFP10fopAc_ac_cP10fopAc_ac_c.s b/asm/d/bg/d_bg_w/CallRideCallBack__4dBgWFP10fopAc_ac_cP10fopAc_ac_c.s deleted file mode 100644 index 2b62f514fc..0000000000 --- a/asm/d/bg/d_bg_w/CallRideCallBack__4dBgWFP10fopAc_ac_cP10fopAc_ac_c.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_8007E444: -/* 8007E444 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007E448 7C 08 02 A6 */ mflr r0 -/* 8007E44C 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007E450 81 83 00 B4 */ lwz r12, 0xb4(r3) -/* 8007E454 28 0C 00 00 */ cmplwi r12, 0 -/* 8007E458 41 82 00 0C */ beq lbl_8007E464 -/* 8007E45C 7D 89 03 A6 */ mtctr r12 -/* 8007E460 4E 80 04 21 */ bctrl -lbl_8007E464: -/* 8007E464 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007E468 7C 08 03 A6 */ mtlr r0 -/* 8007E46C 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007E470 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/CaptPoly__4dBgWFR13dBgS_CaptPoly.s b/asm/d/bg/d_bg_w/CaptPoly__4dBgWFR13dBgS_CaptPoly.s deleted file mode 100644 index f98151939b..0000000000 --- a/asm/d/bg/d_bg_w/CaptPoly__4dBgWFR13dBgS_CaptPoly.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_8007DAF8: -/* 8007DAF8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007DAFC 7C 08 02 A6 */ mflr r0 -/* 8007DB00 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007DB04 A0 A3 00 92 */ lhz r5, 0x92(r3) -/* 8007DB08 38 C0 00 01 */ li r6, 1 -/* 8007DB0C 4B FF FE F9 */ bl CaptPolyGrpRp__4dBgWFR13dBgS_CaptPolyii -/* 8007DB10 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007DB14 7C 08 03 A6 */ mtlr r0 -/* 8007DB18 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007DB1C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/ChkLock__4cBgWCFv.s b/asm/d/bg/d_bg_w/ChkLock__4cBgWCFv.s deleted file mode 100644 index 2db12446f5..0000000000 --- a/asm/d/bg/d_bg_w/ChkLock__4cBgWCFv.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_8007B958: -/* 8007B958 88 03 00 88 */ lbz r0, 0x88(r3) -/* 8007B95C 54 03 CF FE */ rlwinm r3, r0, 0x19, 0x1f, 0x1f -/* 8007B960 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/ChkMemoryError__4cBgWFv.s b/asm/d/bg/d_bg_w/ChkMemoryError__4cBgWFv.s deleted file mode 100644 index a26c0f7ba7..0000000000 --- a/asm/d/bg/d_bg_w/ChkMemoryError__4cBgWFv.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_80079EEC: -/* 80079EEC 80 03 00 94 */ lwz r0, 0x94(r3) -/* 80079EF0 28 00 00 00 */ cmplwi r0, 0 -/* 80079EF4 41 82 00 34 */ beq lbl_80079F28 -/* 80079EF8 80 03 00 98 */ lwz r0, 0x98(r3) -/* 80079EFC 28 00 00 00 */ cmplwi r0, 0 -/* 80079F00 41 82 00 28 */ beq lbl_80079F28 -/* 80079F04 80 03 00 A4 */ lwz r0, 0xa4(r3) -/* 80079F08 28 00 00 00 */ cmplwi r0, 0 -/* 80079F0C 41 82 00 1C */ beq lbl_80079F28 -/* 80079F10 80 03 00 AC */ lwz r0, 0xac(r3) -/* 80079F14 28 00 00 00 */ cmplwi r0, 0 -/* 80079F18 41 82 00 10 */ beq lbl_80079F28 -/* 80079F1C 80 03 00 A8 */ lwz r0, 0xa8(r3) -/* 80079F20 28 00 00 00 */ cmplwi r0, 0 -/* 80079F24 40 82 00 0C */ bne lbl_80079F30 -lbl_80079F28: -/* 80079F28 38 60 00 01 */ li r3, 1 -/* 80079F2C 4E 80 00 20 */ blr -lbl_80079F30: -/* 80079F30 38 60 00 00 */ li r3, 0 -/* 80079F34 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/ChkMoveBg__4cBgWCFv.s b/asm/d/bg/d_bg_w/ChkMoveBg__4cBgWCFv.s deleted file mode 100644 index f57fc2e19a..0000000000 --- a/asm/d/bg/d_bg_w/ChkMoveBg__4cBgWCFv.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_8007B964: -/* 8007B964 88 03 00 88 */ lbz r0, 0x88(r3) -/* 8007B968 54 03 07 FE */ clrlwi r3, r0, 0x1f -/* 8007B96C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/ChkMoveFlag__4dBgWCFv.s b/asm/d/bg/d_bg_w/ChkMoveFlag__4dBgWCFv.s deleted file mode 100644 index 5faf239c92..0000000000 --- a/asm/d/bg/d_bg_w/ChkMoveFlag__4dBgWCFv.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_8007E4B4: -/* 8007E4B4 88 03 00 BC */ lbz r0, 0xbc(r3) -/* 8007E4B8 54 03 07 FE */ clrlwi r3, r0, 0x1f -/* 8007E4BC 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/ChkNotReady__4cBgWCFv.s b/asm/d/bg/d_bg_w/ChkNotReady__4cBgWCFv.s deleted file mode 100644 index 757ea556b9..0000000000 --- a/asm/d/bg/d_bg_w/ChkNotReady__4cBgWCFv.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_8007B948: -/* 8007B948 80 03 00 9C */ lwz r0, 0x9c(r3) -/* 8007B94C 7C 00 00 34 */ cntlzw r0, r0 -/* 8007B950 54 03 D9 7E */ srwi r3, r0, 5 -/* 8007B954 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/ChkShdwDrawThrough__4cBgWFiP16cBgS_PolyPassChk.s b/asm/d/bg/d_bg_w/ChkShdwDrawThrough__4cBgWFiP16cBgS_PolyPassChk.s deleted file mode 100644 index ab705e8049..0000000000 --- a/asm/d/bg/d_bg_w/ChkShdwDrawThrough__4cBgWFiP16cBgS_PolyPassChk.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8007B0B0: -/* 8007B0B0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B0B4 7C 08 02 A6 */ mflr r0 -/* 8007B0B8 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B0BC 81 83 00 04 */ lwz r12, 4(r3) -/* 8007B0C0 81 8C 00 F8 */ lwz r12, 0xf8(r12) -/* 8007B0C4 7D 89 03 A6 */ mtctr r12 -/* 8007B0C8 4E 80 04 21 */ bctrl -/* 8007B0CC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B0D0 7C 08 03 A6 */ mtlr r0 -/* 8007B0D4 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B0D8 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/ChkShdwDrawThrough__4dBgWFiP16cBgS_PolyPassChk.s b/asm/d/bg/d_bg_w/ChkShdwDrawThrough__4dBgWFiP16cBgS_PolyPassChk.s deleted file mode 100644 index e93f994ca0..0000000000 --- a/asm/d/bg/d_bg_w/ChkShdwDrawThrough__4dBgWFiP16cBgS_PolyPassChk.s +++ /dev/null @@ -1,33 +0,0 @@ -lbl_8007E360: -/* 8007E360 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007E364 7C 08 02 A6 */ mflr r0 -/* 8007E368 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007E36C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8007E370 93 C1 00 08 */ stw r30, 8(r1) -/* 8007E374 7C 7E 1B 78 */ mr r30, r3 -/* 8007E378 7C 9F 23 78 */ mr r31, r4 -/* 8007E37C 81 83 00 04 */ lwz r12, 4(r3) -/* 8007E380 81 8C 00 9C */ lwz r12, 0x9c(r12) -/* 8007E384 7D 89 03 A6 */ mtctr r12 -/* 8007E388 4E 80 04 21 */ bctrl -/* 8007E38C 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 8007E390 41 82 00 0C */ beq lbl_8007E39C -/* 8007E394 38 60 00 01 */ li r3, 1 -/* 8007E398 48 00 00 28 */ b lbl_8007E3C0 -lbl_8007E39C: -/* 8007E39C 7F C3 F3 78 */ mr r3, r30 -/* 8007E3A0 7F E4 FB 78 */ mr r4, r31 -/* 8007E3A4 81 9E 00 04 */ lwz r12, 4(r30) -/* 8007E3A8 81 8C 00 88 */ lwz r12, 0x88(r12) -/* 8007E3AC 7D 89 03 A6 */ mtctr r12 -/* 8007E3B0 4E 80 04 21 */ bctrl -/* 8007E3B4 30 03 FF FF */ addic r0, r3, -1 -/* 8007E3B8 7C 00 19 10 */ subfe r0, r0, r3 -/* 8007E3BC 54 03 06 3E */ clrlwi r3, r0, 0x18 -lbl_8007E3C0: -/* 8007E3C0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8007E3C4 83 C1 00 08 */ lwz r30, 8(r1) -/* 8007E3C8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007E3CC 7C 08 03 A6 */ mtlr r0 -/* 8007E3D0 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007E3D4 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/CopyOldMtx__4cBgWFv.s b/asm/d/bg/d_bg_w/CopyOldMtx__4cBgWFv.s deleted file mode 100644 index 57e8661554..0000000000 --- a/asm/d/bg/d_bg_w/CopyOldMtx__4cBgWFv.s +++ /dev/null @@ -1,21 +0,0 @@ -lbl_8007ABC4: -/* 8007ABC4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007ABC8 7C 08 02 A6 */ mflr r0 -/* 8007ABCC 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007ABD0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8007ABD4 7C 7F 1B 78 */ mr r31, r3 -/* 8007ABD8 80 03 00 18 */ lwz r0, 0x18(r3) -/* 8007ABDC 28 00 00 00 */ cmplwi r0, 0 -/* 8007ABE0 41 82 00 1C */ beq lbl_8007ABFC -/* 8007ABE4 38 7F 00 4C */ addi r3, r31, 0x4c -/* 8007ABE8 38 9F 00 1C */ addi r4, r31, 0x1c -/* 8007ABEC 48 2C B8 C5 */ bl PSMTXCopy -/* 8007ABF0 80 7F 00 18 */ lwz r3, 0x18(r31) -/* 8007ABF4 38 9F 00 4C */ addi r4, r31, 0x4c -/* 8007ABF8 48 2C B8 B9 */ bl PSMTXCopy -lbl_8007ABFC: -/* 8007ABFC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8007AC00 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007AC04 7C 08 03 A6 */ mtlr r0 -/* 8007AC08 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007AC0C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetAttackThrough__4dBgWFi.s b/asm/d/bg/d_bg_w/GetAttackThrough__4dBgWFi.s deleted file mode 100644 index 0f2cd81a1c..0000000000 --- a/asm/d/bg/d_bg_w/GetAttackThrough__4dBgWFi.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8007B800: -/* 8007B800 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B804 7C 08 02 A6 */ mflr r0 -/* 8007B808 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B80C 3C A0 02 00 */ lis r5, 0x200 -/* 8007B810 4B FF FF 7D */ bl GetMaskPolyInf1_NoShift__4cBgWCFiUl -/* 8007B814 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B818 7C 08 03 A6 */ mtlr r0 -/* 8007B81C 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B820 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetBnd__4cBgWCFv.s b/asm/d/bg/d_bg_w/GetBnd__4cBgWCFv.s deleted file mode 100644 index f010201fa4..0000000000 --- a/asm/d/bg/d_bg_w/GetBnd__4cBgWCFv.s +++ /dev/null @@ -1,7 +0,0 @@ -lbl_8007B164: -/* 8007B164 80 83 00 A8 */ lwz r4, 0xa8(r3) -/* 8007B168 A0 03 00 92 */ lhz r0, 0x92(r3) -/* 8007B16C 54 03 28 34 */ slwi r3, r0, 5 -/* 8007B170 38 63 00 04 */ addi r3, r3, 4 -/* 8007B174 7C 64 1A 14 */ add r3, r4, r3 -/* 8007B178 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetCamMoveBG__4dBgWFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w/GetCamMoveBG__4dBgWFRC13cBgS_PolyInfo.s deleted file mode 100644 index 6874e305e2..0000000000 --- a/asm/d/bg/d_bg_w/GetCamMoveBG__4dBgWFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8007B87C: -/* 8007B87C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B880 7C 08 02 A6 */ mflr r0 -/* 8007B884 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B888 A0 84 00 00 */ lhz r4, 0(r4) -/* 8007B88C 38 A0 00 FF */ li r5, 0xff -/* 8007B890 38 C0 00 00 */ li r6, 0 -/* 8007B894 4B FF FF 91 */ bl GetPolyInf2__4cBgWCFiUlUl -/* 8007B898 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B89C 7C 08 03 A6 */ mtlr r0 -/* 8007B8A0 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B8A4 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetExitId__4dBgWFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w/GetExitId__4dBgWFRC13cBgS_PolyInfo.s deleted file mode 100644 index 4e2f0f2f46..0000000000 --- a/asm/d/bg/d_bg_w/GetExitId__4dBgWFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8007B3AC: -/* 8007B3AC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B3B0 7C 08 02 A6 */ mflr r0 -/* 8007B3B4 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B3B8 A0 84 00 00 */ lhz r4, 0(r4) -/* 8007B3BC 38 A0 00 3F */ li r5, 0x3f -/* 8007B3C0 38 C0 00 00 */ li r6, 0 -/* 8007B3C4 4B FF FF 49 */ bl GetPolyInf0__4cBgWCFiUlUl -/* 8007B3C8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B3CC 7C 08 03 A6 */ mtlr r0 -/* 8007B3D0 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B3D4 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetGroundCode__4dBgWFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w/GetGroundCode__4dBgWFRC13cBgS_PolyInfo.s deleted file mode 100644 index e7b315933c..0000000000 --- a/asm/d/bg/d_bg_w/GetGroundCode__4dBgWFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8007B760: -/* 8007B760 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B764 7C 08 02 A6 */ mflr r0 -/* 8007B768 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B76C A0 84 00 00 */ lhz r4, 0(r4) -/* 8007B770 3C A0 00 F8 */ lis r5, 0xf8 -/* 8007B774 38 C0 00 13 */ li r6, 0x13 -/* 8007B778 4B FF FE DD */ bl GetPolyInf1__4cBgWCFiUlUl -/* 8007B77C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B780 7C 08 03 A6 */ mtlr r0 -/* 8007B784 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B788 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetGrpInf__4cBgWCFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w/GetGrpInf__4cBgWCFRC13cBgS_PolyInfo.s deleted file mode 100644 index d4bdd5a647..0000000000 --- a/asm/d/bg/d_bg_w/GetGrpInf__4cBgWCFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_8007B2B0: -/* 8007B2B0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B2B4 7C 08 02 A6 */ mflr r0 -/* 8007B2B8 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B2BC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8007B2C0 7C 7F 1B 78 */ mr r31, r3 -/* 8007B2C4 A0 84 00 00 */ lhz r4, 0(r4) -/* 8007B2C8 48 00 06 69 */ bl GetTriGrp__4cBgWCFi -/* 8007B2CC 80 9F 00 A0 */ lwz r4, 0xa0(r31) -/* 8007B2D0 80 84 00 24 */ lwz r4, 0x24(r4) -/* 8007B2D4 1C 03 00 34 */ mulli r0, r3, 0x34 -/* 8007B2D8 7C 64 02 14 */ add r3, r4, r0 -/* 8007B2DC 80 63 00 30 */ lwz r3, 0x30(r3) -/* 8007B2E0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8007B2E4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B2E8 7C 08 03 A6 */ mtlr r0 -/* 8007B2EC 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B2F0 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetGrpSoundId__4dBgWFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w/GetGrpSoundId__4dBgWFRC13cBgS_PolyInfo.s deleted file mode 100644 index 0b2cf9c1c7..0000000000 --- a/asm/d/bg/d_bg_w/GetGrpSoundId__4dBgWFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_8007DF58: -/* 8007DF58 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007DF5C 7C 08 02 A6 */ mflr r0 -/* 8007DF60 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007DF64 81 83 00 04 */ lwz r12, 4(r3) -/* 8007DF68 81 8C 00 2C */ lwz r12, 0x2c(r12) -/* 8007DF6C 7D 89 03 A6 */ mtctr r12 -/* 8007DF70 4E 80 04 21 */ bctrl -/* 8007DF74 54 63 AE 3E */ rlwinm r3, r3, 0x15, 0x18, 0x1f -/* 8007DF78 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007DF7C 7C 08 03 A6 */ mtlr r0 -/* 8007DF80 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007DF84 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetHorseNoEntry__4dBgWFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w/GetHorseNoEntry__4dBgWFRC13cBgS_PolyInfo.s deleted file mode 100644 index dc593bcdd6..0000000000 --- a/asm/d/bg/d_bg_w/GetHorseNoEntry__4dBgWFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8007B404: -/* 8007B404 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B408 7C 08 02 A6 */ mflr r0 -/* 8007B40C 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B410 A0 84 00 00 */ lhz r4, 0(r4) -/* 8007B414 3C A0 00 20 */ lis r5, 0x20 -/* 8007B418 38 C0 00 15 */ li r6, 0x15 -/* 8007B41C 4B FF FE F1 */ bl GetPolyInf0__4cBgWCFiUlUl -/* 8007B420 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B424 7C 08 03 A6 */ mtlr r0 -/* 8007B428 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B42C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetIronBallThrough__4dBgWFi.s b/asm/d/bg/d_bg_w/GetIronBallThrough__4dBgWFi.s deleted file mode 100644 index 2248124171..0000000000 --- a/asm/d/bg/d_bg_w/GetIronBallThrough__4dBgWFi.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8007B7DC: -/* 8007B7DC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B7E0 7C 08 02 A6 */ mflr r0 -/* 8007B7E4 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B7E8 3C A0 01 00 */ lis r5, 0x100 -/* 8007B7EC 4B FF FF A1 */ bl GetMaskPolyInf1_NoShift__4cBgWCFiUl -/* 8007B7F0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B7F4 7C 08 03 A6 */ mtlr r0 -/* 8007B7F8 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B7FC 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetLinkNo__4dBgWFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w/GetLinkNo__4dBgWFRC13cBgS_PolyInfo.s deleted file mode 100644 index bf7af6ea81..0000000000 --- a/asm/d/bg/d_bg_w/GetLinkNo__4dBgWFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8007B6AC: -/* 8007B6AC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B6B0 7C 08 02 A6 */ mflr r0 -/* 8007B6B4 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B6B8 A0 84 00 00 */ lhz r4, 0(r4) -/* 8007B6BC 38 A0 00 FF */ li r5, 0xff -/* 8007B6C0 38 C0 00 00 */ li r6, 0 -/* 8007B6C4 4B FF FF 91 */ bl GetPolyInf1__4cBgWCFiUlUl -/* 8007B6C8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B6CC 7C 08 03 A6 */ mtlr r0 -/* 8007B6D0 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B6D4 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetMagnetCode__4dBgWFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w/GetMagnetCode__4dBgWFRC13cBgS_PolyInfo.s deleted file mode 100644 index 2c93f836d7..0000000000 --- a/asm/d/bg/d_bg_w/GetMagnetCode__4dBgWFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8007B488: -/* 8007B488 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B48C 7C 08 02 A6 */ mflr r0 -/* 8007B490 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B494 A0 84 00 00 */ lhz r4, 0(r4) -/* 8007B498 3C A0 30 00 */ lis r5, 0x3000 -/* 8007B49C 38 C0 00 1C */ li r6, 0x1c -/* 8007B4A0 4B FF FE 6D */ bl GetPolyInf0__4cBgWCFiUlUl -/* 8007B4A4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B4A8 7C 08 03 A6 */ mtlr r0 -/* 8007B4AC 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B4B0 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetMaskPolyInf0_NoShift__4cBgWCFiUl.s b/asm/d/bg/d_bg_w/GetMaskPolyInf0_NoShift__4cBgWCFiUl.s deleted file mode 100644 index b3639b6043..0000000000 --- a/asm/d/bg/d_bg_w/GetMaskPolyInf0_NoShift__4cBgWCFiUl.s +++ /dev/null @@ -1,20 +0,0 @@ -lbl_8007B360: -/* 8007B360 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B364 7C 08 02 A6 */ mflr r0 -/* 8007B368 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B36C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8007B370 93 C1 00 08 */ stw r30, 8(r1) -/* 8007B374 7C 7E 1B 78 */ mr r30, r3 -/* 8007B378 7C BF 2B 78 */ mr r31, r5 -/* 8007B37C 4B FF FF 79 */ bl GetPolyInfId__4cBgWCFi -/* 8007B380 80 9E 00 A0 */ lwz r4, 0xa0(r30) -/* 8007B384 80 84 00 2C */ lwz r4, 0x2c(r4) -/* 8007B388 54 60 20 36 */ slwi r0, r3, 4 -/* 8007B38C 7C 04 00 2E */ lwzx r0, r4, r0 -/* 8007B390 7F E3 00 38 */ and r3, r31, r0 -/* 8007B394 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8007B398 83 C1 00 08 */ lwz r30, 8(r1) -/* 8007B39C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B3A0 7C 08 03 A6 */ mtlr r0 -/* 8007B3A4 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B3A8 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetMaskPolyInf1_NoShift__4cBgWCFiUl.s b/asm/d/bg/d_bg_w/GetMaskPolyInf1_NoShift__4cBgWCFiUl.s deleted file mode 100644 index 9c0d1f32c3..0000000000 --- a/asm/d/bg/d_bg_w/GetMaskPolyInf1_NoShift__4cBgWCFiUl.s +++ /dev/null @@ -1,21 +0,0 @@ -lbl_8007B78C: -/* 8007B78C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B790 7C 08 02 A6 */ mflr r0 -/* 8007B794 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B798 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8007B79C 93 C1 00 08 */ stw r30, 8(r1) -/* 8007B7A0 7C 7E 1B 78 */ mr r30, r3 -/* 8007B7A4 7C BF 2B 78 */ mr r31, r5 -/* 8007B7A8 4B FF FB 4D */ bl GetPolyInfId__4cBgWCFi -/* 8007B7AC 80 9E 00 A0 */ lwz r4, 0xa0(r30) -/* 8007B7B0 80 84 00 2C */ lwz r4, 0x2c(r4) -/* 8007B7B4 54 60 20 36 */ slwi r0, r3, 4 -/* 8007B7B8 7C 64 02 14 */ add r3, r4, r0 -/* 8007B7BC 80 03 00 04 */ lwz r0, 4(r3) -/* 8007B7C0 7F E3 00 38 */ and r3, r31, r0 -/* 8007B7C4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8007B7C8 83 C1 00 08 */ lwz r30, 8(r1) -/* 8007B7CC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B7D0 7C 08 03 A6 */ mtlr r0 -/* 8007B7D4 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B7D8 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetMonkeyBarsCode__4dBgWFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w/GetMonkeyBarsCode__4dBgWFRC13cBgS_PolyInfo.s deleted file mode 100644 index 8d6feaefba..0000000000 --- a/asm/d/bg/d_bg_w/GetMonkeyBarsCode__4dBgWFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8007B4B4: -/* 8007B4B4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B4B8 7C 08 02 A6 */ mflr r0 -/* 8007B4BC 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B4C0 A0 84 00 00 */ lhz r4, 0(r4) -/* 8007B4C4 3C A0 80 00 */ lis r5, 0x8000 -/* 8007B4C8 38 C0 00 1F */ li r6, 0x1f -/* 8007B4CC 4B FF FE 41 */ bl GetPolyInf0__4cBgWCFiUlUl -/* 8007B4D0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B4D4 7C 08 03 A6 */ mtlr r0 -/* 8007B4D8 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B4DC 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetPolyArrowThrough__4dBgWFi.s b/asm/d/bg/d_bg_w/GetPolyArrowThrough__4dBgWFi.s deleted file mode 100644 index 2c04a8ccef..0000000000 --- a/asm/d/bg/d_bg_w/GetPolyArrowThrough__4dBgWFi.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8007B550: -/* 8007B550 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B554 7C 08 02 A6 */ mflr r0 -/* 8007B558 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B55C 3C A0 00 02 */ lis r5, 2 -/* 8007B560 4B FF FE 01 */ bl GetMaskPolyInf0_NoShift__4cBgWCFiUl -/* 8007B564 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B568 7C 08 03 A6 */ mtlr r0 -/* 8007B56C 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B570 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetPolyAtt0__4dBgWFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w/GetPolyAtt0__4dBgWFRC13cBgS_PolyInfo.s deleted file mode 100644 index cb5bb49ad5..0000000000 --- a/asm/d/bg/d_bg_w/GetPolyAtt0__4dBgWFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_8007B704: -/* 8007B704 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B708 7C 08 02 A6 */ mflr r0 -/* 8007B70C 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B710 A0 84 00 00 */ lhz r4, 0(r4) -/* 8007B714 3C A0 00 01 */ lis r5, 0x0001 /* 0x0000F000@ha */ -/* 8007B718 38 A5 F0 00 */ addi r5, r5, 0xF000 /* 0x0000F000@l */ -/* 8007B71C 38 C0 00 0C */ li r6, 0xc -/* 8007B720 4B FF FF 35 */ bl GetPolyInf1__4cBgWCFiUlUl -/* 8007B724 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B728 7C 08 03 A6 */ mtlr r0 -/* 8007B72C 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B730 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetPolyAtt1__4dBgWFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w/GetPolyAtt1__4dBgWFRC13cBgS_PolyInfo.s deleted file mode 100644 index bed07d6e39..0000000000 --- a/asm/d/bg/d_bg_w/GetPolyAtt1__4dBgWFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8007B734: -/* 8007B734 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B738 7C 08 02 A6 */ mflr r0 -/* 8007B73C 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B740 A0 84 00 00 */ lhz r4, 0(r4) -/* 8007B744 3C A0 00 07 */ lis r5, 7 -/* 8007B748 38 C0 00 10 */ li r6, 0x10 -/* 8007B74C 4B FF FF 09 */ bl GetPolyInf1__4cBgWCFiUlUl -/* 8007B750 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B754 7C 08 03 A6 */ mtlr r0 -/* 8007B758 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B75C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetPolyBombThrough__4dBgWFi.s b/asm/d/bg/d_bg_w/GetPolyBombThrough__4dBgWFi.s deleted file mode 100644 index 75190d47c8..0000000000 --- a/asm/d/bg/d_bg_w/GetPolyBombThrough__4dBgWFi.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8007B5E0: -/* 8007B5E0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B5E4 7C 08 02 A6 */ mflr r0 -/* 8007B5E8 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B5EC 3C A0 00 80 */ lis r5, 0x80 -/* 8007B5F0 4B FF FD 71 */ bl GetMaskPolyInf0_NoShift__4cBgWCFiUl -/* 8007B5F4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B5F8 7C 08 03 A6 */ mtlr r0 -/* 8007B5FC 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B600 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetPolyBoomerangThrough__4dBgWFi.s b/asm/d/bg/d_bg_w/GetPolyBoomerangThrough__4dBgWFi.s deleted file mode 100644 index 135d087c2d..0000000000 --- a/asm/d/bg/d_bg_w/GetPolyBoomerangThrough__4dBgWFi.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8007B598: -/* 8007B598 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B59C 7C 08 02 A6 */ mflr r0 -/* 8007B5A0 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B5A4 3C A0 00 08 */ lis r5, 8 -/* 8007B5A8 4B FF FD B9 */ bl GetMaskPolyInf0_NoShift__4cBgWCFiUl -/* 8007B5AC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B5B0 7C 08 03 A6 */ mtlr r0 -/* 8007B5B4 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B5B8 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetPolyCamThrough__4dBgWFi.s b/asm/d/bg/d_bg_w/GetPolyCamThrough__4dBgWFi.s deleted file mode 100644 index 9cc1e7973e..0000000000 --- a/asm/d/bg/d_bg_w/GetPolyCamThrough__4dBgWFi.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_8007B504: -/* 8007B504 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B508 7C 08 02 A6 */ mflr r0 -/* 8007B50C 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B510 3C A0 00 01 */ lis r5, 0x0001 /* 0x00008000@ha */ -/* 8007B514 38 A5 80 00 */ addi r5, r5, 0x8000 /* 0x00008000@l */ -/* 8007B518 4B FF FE 49 */ bl GetMaskPolyInf0_NoShift__4cBgWCFiUl -/* 8007B51C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B520 7C 08 03 A6 */ mtlr r0 -/* 8007B524 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B528 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetPolyColor__4dBgWFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w/GetPolyColor__4dBgWFRC13cBgS_PolyInfo.s deleted file mode 100644 index 68c5444433..0000000000 --- a/asm/d/bg/d_bg_w/GetPolyColor__4dBgWFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8007B3D8: -/* 8007B3D8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B3DC 7C 08 02 A6 */ mflr r0 -/* 8007B3E0 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B3E4 A0 84 00 00 */ lhz r4, 0(r4) -/* 8007B3E8 38 A0 3F C0 */ li r5, 0x3fc0 -/* 8007B3EC 38 C0 00 06 */ li r6, 6 -/* 8007B3F0 4B FF FF 1D */ bl GetPolyInf0__4cBgWCFiUlUl -/* 8007B3F4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B3F8 7C 08 03 A6 */ mtlr r0 -/* 8007B3FC 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B400 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetPolyGrpRoomInfId__4dBgWFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w/GetPolyGrpRoomInfId__4dBgWFRC13cBgS_PolyInfo.s deleted file mode 100644 index 474f40f182..0000000000 --- a/asm/d/bg/d_bg_w/GetPolyGrpRoomInfId__4dBgWFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_8007DF28: -/* 8007DF28 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007DF2C 7C 08 02 A6 */ mflr r0 -/* 8007DF30 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007DF34 81 83 00 04 */ lwz r12, 4(r3) -/* 8007DF38 81 8C 00 2C */ lwz r12, 0x2c(r12) -/* 8007DF3C 7D 89 03 A6 */ mtctr r12 -/* 8007DF40 4E 80 04 21 */ bctrl -/* 8007DF44 54 63 06 3E */ clrlwi r3, r3, 0x18 -/* 8007DF48 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007DF4C 7C 08 03 A6 */ mtlr r0 -/* 8007DF50 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007DF54 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetPolyHSStick__4dBgWFi.s b/asm/d/bg/d_bg_w/GetPolyHSStick__4dBgWFi.s deleted file mode 100644 index 112478af8d..0000000000 --- a/asm/d/bg/d_bg_w/GetPolyHSStick__4dBgWFi.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8007B574: -/* 8007B574 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B578 7C 08 02 A6 */ mflr r0 -/* 8007B57C 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B580 3C A0 00 04 */ lis r5, 4 -/* 8007B584 4B FF FD DD */ bl GetMaskPolyInf0_NoShift__4cBgWCFiUl -/* 8007B588 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B58C 7C 08 03 A6 */ mtlr r0 -/* 8007B590 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B594 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetPolyInf0__4cBgWCFiUlUl.s b/asm/d/bg/d_bg_w/GetPolyInf0__4cBgWCFiUlUl.s deleted file mode 100644 index 0586622257..0000000000 --- a/asm/d/bg/d_bg_w/GetPolyInf0__4cBgWCFiUlUl.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_8007B30C: -/* 8007B30C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8007B310 7C 08 02 A6 */ mflr r0 -/* 8007B314 90 01 00 24 */ stw r0, 0x24(r1) -/* 8007B318 39 61 00 20 */ addi r11, r1, 0x20 -/* 8007B31C 48 2E 6E C1 */ bl _savegpr_29 -/* 8007B320 7C 7D 1B 78 */ mr r29, r3 -/* 8007B324 7C BE 2B 78 */ mr r30, r5 -/* 8007B328 7C DF 33 78 */ mr r31, r6 -/* 8007B32C 4B FF FF C9 */ bl GetPolyInfId__4cBgWCFi -/* 8007B330 80 9D 00 A0 */ lwz r4, 0xa0(r29) -/* 8007B334 80 84 00 2C */ lwz r4, 0x2c(r4) -/* 8007B338 54 60 20 36 */ slwi r0, r3, 4 -/* 8007B33C 7C 04 00 2E */ lwzx r0, r4, r0 -/* 8007B340 7F C0 00 38 */ and r0, r30, r0 -/* 8007B344 7C 03 FC 30 */ srw r3, r0, r31 -/* 8007B348 39 61 00 20 */ addi r11, r1, 0x20 -/* 8007B34C 48 2E 6E DD */ bl _restgpr_29 -/* 8007B350 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8007B354 7C 08 03 A6 */ mtlr r0 -/* 8007B358 38 21 00 20 */ addi r1, r1, 0x20 -/* 8007B35C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetPolyInf1__4cBgWCFiUlUl.s b/asm/d/bg/d_bg_w/GetPolyInf1__4cBgWCFiUlUl.s deleted file mode 100644 index 659675a115..0000000000 --- a/asm/d/bg/d_bg_w/GetPolyInf1__4cBgWCFiUlUl.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_8007B654: -/* 8007B654 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8007B658 7C 08 02 A6 */ mflr r0 -/* 8007B65C 90 01 00 24 */ stw r0, 0x24(r1) -/* 8007B660 39 61 00 20 */ addi r11, r1, 0x20 -/* 8007B664 48 2E 6B 79 */ bl _savegpr_29 -/* 8007B668 7C 7D 1B 78 */ mr r29, r3 -/* 8007B66C 7C BE 2B 78 */ mr r30, r5 -/* 8007B670 7C DF 33 78 */ mr r31, r6 -/* 8007B674 4B FF FC 81 */ bl GetPolyInfId__4cBgWCFi -/* 8007B678 80 9D 00 A0 */ lwz r4, 0xa0(r29) -/* 8007B67C 80 84 00 2C */ lwz r4, 0x2c(r4) -/* 8007B680 54 60 20 36 */ slwi r0, r3, 4 -/* 8007B684 7C 64 02 14 */ add r3, r4, r0 -/* 8007B688 80 03 00 04 */ lwz r0, 4(r3) -/* 8007B68C 7F C0 00 38 */ and r0, r30, r0 -/* 8007B690 7C 03 FC 30 */ srw r3, r0, r31 -/* 8007B694 39 61 00 20 */ addi r11, r1, 0x20 -/* 8007B698 48 2E 6B 91 */ bl _restgpr_29 -/* 8007B69C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8007B6A0 7C 08 03 A6 */ mtlr r0 -/* 8007B6A4 38 21 00 20 */ addi r1, r1, 0x20 -/* 8007B6A8 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetPolyInf2__4cBgWCFiUlUl.s b/asm/d/bg/d_bg_w/GetPolyInf2__4cBgWCFiUlUl.s deleted file mode 100644 index e367001df0..0000000000 --- a/asm/d/bg/d_bg_w/GetPolyInf2__4cBgWCFiUlUl.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_8007B824: -/* 8007B824 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8007B828 7C 08 02 A6 */ mflr r0 -/* 8007B82C 90 01 00 24 */ stw r0, 0x24(r1) -/* 8007B830 39 61 00 20 */ addi r11, r1, 0x20 -/* 8007B834 48 2E 69 A9 */ bl _savegpr_29 -/* 8007B838 7C 7D 1B 78 */ mr r29, r3 -/* 8007B83C 7C BE 2B 78 */ mr r30, r5 -/* 8007B840 7C DF 33 78 */ mr r31, r6 -/* 8007B844 4B FF FA B1 */ bl GetPolyInfId__4cBgWCFi -/* 8007B848 80 9D 00 A0 */ lwz r4, 0xa0(r29) -/* 8007B84C 80 84 00 2C */ lwz r4, 0x2c(r4) -/* 8007B850 54 60 20 36 */ slwi r0, r3, 4 -/* 8007B854 7C 64 02 14 */ add r3, r4, r0 -/* 8007B858 80 03 00 08 */ lwz r0, 8(r3) -/* 8007B85C 7F C0 00 38 */ and r0, r30, r0 -/* 8007B860 7C 03 FC 30 */ srw r3, r0, r31 -/* 8007B864 39 61 00 20 */ addi r11, r1, 0x20 -/* 8007B868 48 2E 69 C1 */ bl _restgpr_29 -/* 8007B86C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8007B870 7C 08 03 A6 */ mtlr r0 -/* 8007B874 38 21 00 20 */ addi r1, r1, 0x20 -/* 8007B878 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetPolyInfId__4cBgWCFi.s b/asm/d/bg/d_bg_w/GetPolyInfId__4cBgWCFi.s deleted file mode 100644 index 3998764fe4..0000000000 --- a/asm/d/bg/d_bg_w/GetPolyInfId__4cBgWCFi.s +++ /dev/null @@ -1,7 +0,0 @@ -lbl_8007B2F4: -/* 8007B2F4 80 63 00 A0 */ lwz r3, 0xa0(r3) -/* 8007B2F8 80 63 00 0C */ lwz r3, 0xc(r3) -/* 8007B2FC 1C 04 00 0A */ mulli r0, r4, 0xa -/* 8007B300 7C 63 02 14 */ add r3, r3, r0 -/* 8007B304 A0 63 00 06 */ lhz r3, 6(r3) -/* 8007B308 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetPolyLinkThrough__4dBgWFi.s b/asm/d/bg/d_bg_w/GetPolyLinkThrough__4dBgWFi.s deleted file mode 100644 index dc3d3ca652..0000000000 --- a/asm/d/bg/d_bg_w/GetPolyLinkThrough__4dBgWFi.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8007B52C: -/* 8007B52C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B530 7C 08 02 A6 */ mflr r0 -/* 8007B534 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B538 3C A0 00 01 */ lis r5, 1 -/* 8007B53C 4B FF FE 25 */ bl GetMaskPolyInf0_NoShift__4cBgWCFiUl -/* 8007B540 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B544 7C 08 03 A6 */ mtlr r0 -/* 8007B548 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B54C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetPolyObjThrough__4dBgWFi.s b/asm/d/bg/d_bg_w/GetPolyObjThrough__4dBgWFi.s deleted file mode 100644 index 2e5049b0ab..0000000000 --- a/asm/d/bg/d_bg_w/GetPolyObjThrough__4dBgWFi.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8007B4E0: -/* 8007B4E0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B4E4 7C 08 02 A6 */ mflr r0 -/* 8007B4E8 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B4EC 38 A0 40 00 */ li r5, 0x4000 -/* 8007B4F0 4B FF FE 71 */ bl GetMaskPolyInf0_NoShift__4cBgWCFiUl -/* 8007B4F4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B4F8 7C 08 03 A6 */ mtlr r0 -/* 8007B4FC 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B500 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetPolyRopeThrough__4dBgWFi.s b/asm/d/bg/d_bg_w/GetPolyRopeThrough__4dBgWFi.s deleted file mode 100644 index 70773531f2..0000000000 --- a/asm/d/bg/d_bg_w/GetPolyRopeThrough__4dBgWFi.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8007B5BC: -/* 8007B5BC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B5C0 7C 08 02 A6 */ mflr r0 -/* 8007B5C4 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B5C8 3C A0 00 10 */ lis r5, 0x10 -/* 8007B5CC 4B FF FD 95 */ bl GetMaskPolyInf0_NoShift__4cBgWCFiUl -/* 8007B5D0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B5D4 7C 08 03 A6 */ mtlr r0 -/* 8007B5D8 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B5DC 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetRoomCamId__4dBgWFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w/GetRoomCamId__4dBgWFRC13cBgS_PolyInfo.s deleted file mode 100644 index 467a2df807..0000000000 --- a/asm/d/bg/d_bg_w/GetRoomCamId__4dBgWFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_8007B8A8: -/* 8007B8A8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B8AC 7C 08 02 A6 */ mflr r0 -/* 8007B8B0 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B8B4 A0 84 00 00 */ lhz r4, 0(r4) -/* 8007B8B8 3C A0 00 01 */ lis r5, 0x0001 /* 0x0000FF00@ha */ -/* 8007B8BC 38 A5 FF 00 */ addi r5, r5, 0xFF00 /* 0x0000FF00@l */ -/* 8007B8C0 38 C0 00 08 */ li r6, 8 -/* 8007B8C4 4B FF FF 61 */ bl GetPolyInf2__4cBgWCFiUlUl -/* 8007B8C8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B8CC 7C 08 03 A6 */ mtlr r0 -/* 8007B8D0 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B8D4 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetRoomPathId__4dBgWFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w/GetRoomPathId__4dBgWFRC13cBgS_PolyInfo.s deleted file mode 100644 index eca28697ae..0000000000 --- a/asm/d/bg/d_bg_w/GetRoomPathId__4dBgWFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8007B8D8: -/* 8007B8D8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B8DC 7C 08 02 A6 */ mflr r0 -/* 8007B8E0 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B8E4 A0 84 00 00 */ lhz r4, 0(r4) -/* 8007B8E8 3C A0 00 FF */ lis r5, 0xff -/* 8007B8EC 38 C0 00 10 */ li r6, 0x10 -/* 8007B8F0 4B FF FF 35 */ bl GetPolyInf2__4cBgWCFiUlUl -/* 8007B8F4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B8F8 7C 08 03 A6 */ mtlr r0 -/* 8007B8FC 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B900 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetRoomPathPntNo__4dBgWFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w/GetRoomPathPntNo__4dBgWFRC13cBgS_PolyInfo.s deleted file mode 100644 index a4fb862212..0000000000 --- a/asm/d/bg/d_bg_w/GetRoomPathPntNo__4dBgWFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8007B904: -/* 8007B904 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B908 7C 08 02 A6 */ mflr r0 -/* 8007B90C 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B910 A0 84 00 00 */ lhz r4, 0(r4) -/* 8007B914 3C A0 FF 00 */ lis r5, 0xff00 -/* 8007B918 38 C0 00 18 */ li r6, 0x18 -/* 8007B91C 4B FF FF 09 */ bl GetPolyInf2__4cBgWCFiUlUl -/* 8007B920 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B924 7C 08 03 A6 */ mtlr r0 -/* 8007B928 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B92C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetShdwThrough__4dBgWFi.s b/asm/d/bg/d_bg_w/GetShdwThrough__4dBgWFi.s deleted file mode 100644 index 9f767bfe8b..0000000000 --- a/asm/d/bg/d_bg_w/GetShdwThrough__4dBgWFi.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8007B604: -/* 8007B604 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B608 7C 08 02 A6 */ mflr r0 -/* 8007B60C 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B610 3C A0 00 40 */ lis r5, 0x40 -/* 8007B614 4B FF FD 4D */ bl GetMaskPolyInf0_NoShift__4cBgWCFiUl -/* 8007B618 30 03 FF FF */ addic r0, r3, -1 -/* 8007B61C 7C 60 19 10 */ subfe r3, r0, r3 -/* 8007B620 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B624 7C 08 03 A6 */ mtlr r0 -/* 8007B628 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B62C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetSpecialCode__4dBgWFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w/GetSpecialCode__4dBgWFRC13cBgS_PolyInfo.s deleted file mode 100644 index 00f930da58..0000000000 --- a/asm/d/bg/d_bg_w/GetSpecialCode__4dBgWFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_8007B430: -/* 8007B430 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B434 7C 08 02 A6 */ mflr r0 -/* 8007B438 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B43C A0 84 00 00 */ lhz r4, 0(r4) -/* 8007B440 81 83 00 04 */ lwz r12, 4(r3) -/* 8007B444 81 8C 00 74 */ lwz r12, 0x74(r12) -/* 8007B448 7D 89 03 A6 */ mtctr r12 -/* 8007B44C 4E 80 04 21 */ bctrl -/* 8007B450 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B454 7C 08 03 A6 */ mtlr r0 -/* 8007B458 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B45C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetSpecialCode__4dBgWFi.s b/asm/d/bg/d_bg_w/GetSpecialCode__4dBgWFi.s deleted file mode 100644 index bdf534ede4..0000000000 --- a/asm/d/bg/d_bg_w/GetSpecialCode__4dBgWFi.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_8007B460: -/* 8007B460 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B464 7C 08 02 A6 */ mflr r0 -/* 8007B468 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B46C 3C A0 0F 00 */ lis r5, 0xf00 -/* 8007B470 38 C0 00 18 */ li r6, 0x18 -/* 8007B474 4B FF FE 99 */ bl GetPolyInf0__4cBgWCFiUlUl -/* 8007B478 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B47C 7C 08 03 A6 */ mtlr r0 -/* 8007B480 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B484 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetTopUnder__4cBgWCFPfPf.s b/asm/d/bg/d_bg_w/GetTopUnder__4cBgWCFPfPf.s deleted file mode 100644 index 98794dcba2..0000000000 --- a/asm/d/bg/d_bg_w/GetTopUnder__4cBgWCFPfPf.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_8007B240: -/* 8007B240 80 C3 00 A8 */ lwz r6, 0xa8(r3) -/* 8007B244 A0 03 00 92 */ lhz r0, 0x92(r3) -/* 8007B248 54 03 28 34 */ slwi r3, r0, 5 -/* 8007B24C 38 E3 00 04 */ addi r7, r3, 4 -/* 8007B250 7C E6 3A 14 */ add r7, r6, r7 -/* 8007B254 C0 07 00 04 */ lfs f0, 4(r7) -/* 8007B258 D0 05 00 00 */ stfs f0, 0(r5) -/* 8007B25C 38 63 00 10 */ addi r3, r3, 0x10 -/* 8007B260 7C 66 1A 14 */ add r3, r6, r3 -/* 8007B264 C0 03 00 04 */ lfs f0, 4(r3) -/* 8007B268 D0 04 00 00 */ stfs f0, 0(r4) -/* 8007B26C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetTrans__4cBgWCFP4cXyz.s b/asm/d/bg/d_bg_w/GetTrans__4cBgWCFP4cXyz.s deleted file mode 100644 index a786241bfa..0000000000 --- a/asm/d/bg/d_bg_w/GetTrans__4cBgWCFP4cXyz.s +++ /dev/null @@ -1,15 +0,0 @@ -lbl_8007B17C: -/* 8007B17C 80 A3 00 18 */ lwz r5, 0x18(r3) -/* 8007B180 C0 25 00 0C */ lfs f1, 0xc(r5) -/* 8007B184 C0 03 00 28 */ lfs f0, 0x28(r3) -/* 8007B188 EC 01 00 28 */ fsubs f0, f1, f0 -/* 8007B18C D0 04 00 00 */ stfs f0, 0(r4) -/* 8007B190 C0 25 00 1C */ lfs f1, 0x1c(r5) -/* 8007B194 C0 03 00 38 */ lfs f0, 0x38(r3) -/* 8007B198 EC 01 00 28 */ fsubs f0, f1, f0 -/* 8007B19C D0 04 00 04 */ stfs f0, 4(r4) -/* 8007B1A0 C0 25 00 2C */ lfs f1, 0x2c(r5) -/* 8007B1A4 C0 03 00 48 */ lfs f0, 0x48(r3) -/* 8007B1A8 EC 01 00 28 */ fsubs f0, f1, f0 -/* 8007B1AC D0 04 00 08 */ stfs f0, 8(r4) -/* 8007B1B0 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetTriGrp__4cBgWCFi.s b/asm/d/bg/d_bg_w/GetTriGrp__4cBgWCFi.s deleted file mode 100644 index 845fc29a68..0000000000 --- a/asm/d/bg/d_bg_w/GetTriGrp__4cBgWCFi.s +++ /dev/null @@ -1,7 +0,0 @@ -lbl_8007B930: -/* 8007B930 80 63 00 A0 */ lwz r3, 0xa0(r3) -/* 8007B934 80 63 00 0C */ lwz r3, 0xc(r3) -/* 8007B938 1C 04 00 0A */ mulli r0, r4, 0xa -/* 8007B93C 7C 63 02 14 */ add r3, r3, r0 -/* 8007B940 A0 63 00 08 */ lhz r3, 8(r3) -/* 8007B944 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetTriPla__4cBgWCFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w/GetTriPla__4cBgWCFRC13cBgS_PolyInfo.s deleted file mode 100644 index 2667b077f8..0000000000 --- a/asm/d/bg/d_bg_w/GetTriPla__4cBgWCFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_8007B270: -/* 8007B270 A0 05 00 00 */ lhz r0, 0(r5) -/* 8007B274 80 84 00 94 */ lwz r4, 0x94(r4) -/* 8007B278 1C 00 00 18 */ mulli r0, r0, 0x18 -/* 8007B27C 7C A4 02 14 */ add r5, r4, r0 -/* 8007B280 3C 80 80 3A */ lis r4, __vt__8cM3dGPla@ha /* 0x803A37C0@ha */ -/* 8007B284 38 04 37 C0 */ addi r0, r4, __vt__8cM3dGPla@l /* 0x803A37C0@l */ -/* 8007B288 90 03 00 10 */ stw r0, 0x10(r3) -/* 8007B28C C0 05 00 00 */ lfs f0, 0(r5) -/* 8007B290 D0 03 00 00 */ stfs f0, 0(r3) -/* 8007B294 C0 05 00 04 */ lfs f0, 4(r5) -/* 8007B298 D0 03 00 04 */ stfs f0, 4(r3) -/* 8007B29C C0 05 00 08 */ lfs f0, 8(r5) -/* 8007B2A0 D0 03 00 08 */ stfs f0, 8(r3) -/* 8007B2A4 C0 05 00 0C */ lfs f0, 0xc(r5) -/* 8007B2A8 D0 03 00 0C */ stfs f0, 0xc(r3) -/* 8007B2AC 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetTriPnt__4cBgWCFRC13cBgS_PolyInfoP4cXyzP4cXyzP4cXyz.s b/asm/d/bg/d_bg_w/GetTriPnt__4cBgWCFRC13cBgS_PolyInfoP4cXyzP4cXyzP4cXyz.s deleted file mode 100644 index 57fac51dfb..0000000000 --- a/asm/d/bg/d_bg_w/GetTriPnt__4cBgWCFRC13cBgS_PolyInfoP4cXyzP4cXyzP4cXyz.s +++ /dev/null @@ -1,36 +0,0 @@ -lbl_8007B1B4: -/* 8007B1B4 A0 04 00 00 */ lhz r0, 0(r4) -/* 8007B1B8 80 83 00 A0 */ lwz r4, 0xa0(r3) -/* 8007B1BC 80 84 00 0C */ lwz r4, 0xc(r4) -/* 8007B1C0 1C 00 00 0A */ mulli r0, r0, 0xa -/* 8007B1C4 7D 04 02 14 */ add r8, r4, r0 -/* 8007B1C8 80 63 00 9C */ lwz r3, 0x9c(r3) -/* 8007B1CC A0 08 00 00 */ lhz r0, 0(r8) -/* 8007B1D0 1C 00 00 0C */ mulli r0, r0, 0xc -/* 8007B1D4 7C 83 02 14 */ add r4, r3, r0 -/* 8007B1D8 C0 04 00 00 */ lfs f0, 0(r4) -/* 8007B1DC D0 05 00 00 */ stfs f0, 0(r5) -/* 8007B1E0 C0 04 00 04 */ lfs f0, 4(r4) -/* 8007B1E4 D0 05 00 04 */ stfs f0, 4(r5) -/* 8007B1E8 C0 04 00 08 */ lfs f0, 8(r4) -/* 8007B1EC D0 05 00 08 */ stfs f0, 8(r5) -/* 8007B1F0 A0 08 00 02 */ lhz r0, 2(r8) -/* 8007B1F4 1C 00 00 0C */ mulli r0, r0, 0xc -/* 8007B1F8 7C 83 02 14 */ add r4, r3, r0 -/* 8007B1FC C0 04 00 00 */ lfs f0, 0(r4) -/* 8007B200 D0 06 00 00 */ stfs f0, 0(r6) -/* 8007B204 C0 04 00 04 */ lfs f0, 4(r4) -/* 8007B208 D0 06 00 04 */ stfs f0, 4(r6) -/* 8007B20C C0 04 00 08 */ lfs f0, 8(r4) -/* 8007B210 D0 06 00 08 */ stfs f0, 8(r6) -/* 8007B214 A0 08 00 04 */ lhz r0, 4(r8) -/* 8007B218 1C 00 00 0C */ mulli r0, r0, 0xc -/* 8007B21C 7C 63 02 14 */ add r3, r3, r0 -/* 8007B220 C0 03 00 00 */ lfs f0, 0(r3) -/* 8007B224 D0 07 00 00 */ stfs f0, 0(r7) -/* 8007B228 C0 03 00 04 */ lfs f0, 4(r3) -/* 8007B22C D0 07 00 04 */ stfs f0, 4(r7) -/* 8007B230 C0 03 00 08 */ lfs f0, 8(r3) -/* 8007B234 D0 07 00 08 */ stfs f0, 8(r7) -/* 8007B238 38 60 00 01 */ li r3, 1 -/* 8007B23C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetUnderwaterRoofCode__4dBgWFi.s b/asm/d/bg/d_bg_w/GetUnderwaterRoofCode__4dBgWFi.s deleted file mode 100644 index 37ec1139e8..0000000000 --- a/asm/d/bg/d_bg_w/GetUnderwaterRoofCode__4dBgWFi.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8007B630: -/* 8007B630 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B634 7C 08 02 A6 */ mflr r0 -/* 8007B638 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B63C 3C A0 40 00 */ lis r5, 0x4000 -/* 8007B640 4B FF FD 21 */ bl GetMaskPolyInf0_NoShift__4cBgWCFiUl -/* 8007B644 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B648 7C 08 03 A6 */ mtlr r0 -/* 8007B64C 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B650 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GetWallCode__4dBgWFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w/GetWallCode__4dBgWFRC13cBgS_PolyInfo.s deleted file mode 100644 index bacd0384e2..0000000000 --- a/asm/d/bg/d_bg_w/GetWallCode__4dBgWFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8007B6D8: -/* 8007B6D8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B6DC 7C 08 02 A6 */ mflr r0 -/* 8007B6E0 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B6E4 A0 84 00 00 */ lhz r4, 0(r4) -/* 8007B6E8 38 A0 0F 00 */ li r5, 0xf00 -/* 8007B6EC 38 C0 00 08 */ li r6, 8 -/* 8007B6F0 4B FF FF 65 */ bl GetPolyInf1__4cBgWCFiUlUl -/* 8007B6F4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B6F8 7C 08 03 A6 */ mtlr r0 -/* 8007B6FC 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B700 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GlobalVtx__4cBgWFv.s b/asm/d/bg/d_bg_w/GlobalVtx__4cBgWFv.s deleted file mode 100644 index 198894c0ea..0000000000 --- a/asm/d/bg/d_bg_w/GlobalVtx__4cBgWFv.s +++ /dev/null @@ -1,55 +0,0 @@ -lbl_800793C4: -/* 800793C4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 800793C8 7C 08 02 A6 */ mflr r0 -/* 800793CC 90 01 00 24 */ stw r0, 0x24(r1) -/* 800793D0 39 61 00 20 */ addi r11, r1, 0x20 -/* 800793D4 48 2E 8E 09 */ bl _savegpr_29 -/* 800793D8 7C 7D 1B 78 */ mr r29, r3 -/* 800793DC 80 03 00 18 */ lwz r0, 0x18(r3) -/* 800793E0 28 00 00 00 */ cmplwi r0, 0 -/* 800793E4 41 82 00 88 */ beq lbl_8007946C -/* 800793E8 88 1D 00 89 */ lbz r0, 0x89(r29) -/* 800793EC 28 00 00 00 */ cmplwi r0, 0 -/* 800793F0 40 82 00 40 */ bne lbl_80079430 -/* 800793F4 3B C0 00 00 */ li r30, 0 -/* 800793F8 3B E0 00 00 */ li r31, 0 -/* 800793FC 48 00 00 20 */ b lbl_8007941C -lbl_80079400: -/* 80079400 80 1D 00 9C */ lwz r0, 0x9c(r29) -/* 80079404 7C 60 FA 14 */ add r3, r0, r31 -/* 80079408 38 9D 00 7C */ addi r4, r29, 0x7c -/* 8007940C 7C 65 1B 78 */ mr r5, r3 -/* 80079410 48 2C DC 81 */ bl PSVECAdd -/* 80079414 3B DE 00 01 */ addi r30, r30, 1 -/* 80079418 3B FF 00 0C */ addi r31, r31, 0xc -lbl_8007941C: -/* 8007941C 80 7D 00 A0 */ lwz r3, 0xa0(r29) -/* 80079420 80 03 00 00 */ lwz r0, 0(r3) -/* 80079424 7C 1E 00 00 */ cmpw r30, r0 -/* 80079428 41 80 FF D8 */ blt lbl_80079400 -/* 8007942C 48 00 00 40 */ b lbl_8007946C -lbl_80079430: -/* 80079430 3B C0 00 00 */ li r30, 0 -/* 80079434 3B E0 00 00 */ li r31, 0 -/* 80079438 48 00 00 24 */ b lbl_8007945C -lbl_8007943C: -/* 8007943C 80 7D 00 18 */ lwz r3, 0x18(r29) -/* 80079440 80 04 00 04 */ lwz r0, 4(r4) -/* 80079444 7C 80 FA 14 */ add r4, r0, r31 -/* 80079448 80 1D 00 9C */ lwz r0, 0x9c(r29) -/* 8007944C 7C A0 FA 14 */ add r5, r0, r31 -/* 80079450 48 2C D9 1D */ bl PSMTXMultVec -/* 80079454 3B DE 00 01 */ addi r30, r30, 1 -/* 80079458 3B FF 00 0C */ addi r31, r31, 0xc -lbl_8007945C: -/* 8007945C 80 9D 00 A0 */ lwz r4, 0xa0(r29) -/* 80079460 80 04 00 00 */ lwz r0, 0(r4) -/* 80079464 7C 1E 00 00 */ cmpw r30, r0 -/* 80079468 41 80 FF D4 */ blt lbl_8007943C -lbl_8007946C: -/* 8007946C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80079470 48 2E 8D B9 */ bl _restgpr_29 -/* 80079474 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80079478 7C 08 03 A6 */ mtlr r0 -/* 8007947C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80079480 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/GroundCross__4cBgWFP11cBgS_GndChk.s b/asm/d/bg/d_bg_w/GroundCross__4cBgWFP11cBgS_GndChk.s deleted file mode 100644 index 8134cc9e00..0000000000 --- a/asm/d/bg/d_bg_w/GroundCross__4cBgWFP11cBgS_GndChk.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_8007AB9C: -/* 8007AB9C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007ABA0 7C 08 02 A6 */ mflr r0 -/* 8007ABA4 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007ABA8 A0 A3 00 92 */ lhz r5, 0x92(r3) -/* 8007ABAC 38 C0 00 01 */ li r6, 1 -/* 8007ABB0 4B FF FE A1 */ bl GroundCrossGrpRp__4cBgWFP11cBgS_GndChkii -/* 8007ABB4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007ABB8 7C 08 03 A6 */ mtlr r0 -/* 8007ABBC 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007ABC0 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/LineCheck__4cBgWFP11cBgS_LinChk.s b/asm/d/bg/d_bg_w/LineCheck__4cBgWFP11cBgS_LinChk.s deleted file mode 100644 index 9342349e40..0000000000 --- a/asm/d/bg/d_bg_w/LineCheck__4cBgWFP11cBgS_LinChk.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_8007A658: -/* 8007A658 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007A65C 7C 08 02 A6 */ mflr r0 -/* 8007A660 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007A664 A0 A3 00 92 */ lhz r5, 0x92(r3) -/* 8007A668 38 C0 00 01 */ li r6, 1 -/* 8007A66C 4B FF FE C1 */ bl LineCheckGrpRp__4cBgWFP11cBgS_LinChkii -/* 8007A670 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007A674 7C 08 03 A6 */ mtlr r0 -/* 8007A678 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007A67C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/MakeBlckMinMax__4cBgWFiP4cXyzP4cXyz.s b/asm/d/bg/d_bg_w/MakeBlckMinMax__4cBgWFiP4cXyzP4cXyz.s deleted file mode 100644 index a413d0a96e..0000000000 --- a/asm/d/bg/d_bg_w/MakeBlckMinMax__4cBgWFiP4cXyzP4cXyz.s +++ /dev/null @@ -1,40 +0,0 @@ -lbl_800799E0: -/* 800799E0 80 63 00 9C */ lwz r3, 0x9c(r3) -/* 800799E4 1C 04 00 0C */ mulli r0, r4, 0xc -/* 800799E8 7C 63 02 14 */ add r3, r3, r0 -/* 800799EC C0 05 00 00 */ lfs f0, 0(r5) -/* 800799F0 C0 23 00 00 */ lfs f1, 0(r3) -/* 800799F4 FC 00 08 40 */ fcmpo cr0, f0, f1 -/* 800799F8 40 81 00 08 */ ble lbl_80079A00 -/* 800799FC D0 25 00 00 */ stfs f1, 0(r5) -lbl_80079A00: -/* 80079A00 C0 06 00 00 */ lfs f0, 0(r6) -/* 80079A04 C0 23 00 00 */ lfs f1, 0(r3) -/* 80079A08 FC 00 08 40 */ fcmpo cr0, f0, f1 -/* 80079A0C 40 80 00 08 */ bge lbl_80079A14 -/* 80079A10 D0 26 00 00 */ stfs f1, 0(r6) -lbl_80079A14: -/* 80079A14 C0 05 00 04 */ lfs f0, 4(r5) -/* 80079A18 C0 23 00 04 */ lfs f1, 4(r3) -/* 80079A1C FC 00 08 40 */ fcmpo cr0, f0, f1 -/* 80079A20 40 81 00 08 */ ble lbl_80079A28 -/* 80079A24 D0 25 00 04 */ stfs f1, 4(r5) -lbl_80079A28: -/* 80079A28 C0 06 00 04 */ lfs f0, 4(r6) -/* 80079A2C C0 23 00 04 */ lfs f1, 4(r3) -/* 80079A30 FC 00 08 40 */ fcmpo cr0, f0, f1 -/* 80079A34 40 80 00 08 */ bge lbl_80079A3C -/* 80079A38 D0 26 00 04 */ stfs f1, 4(r6) -lbl_80079A3C: -/* 80079A3C C0 05 00 08 */ lfs f0, 8(r5) -/* 80079A40 C0 23 00 08 */ lfs f1, 8(r3) -/* 80079A44 FC 00 08 40 */ fcmpo cr0, f0, f1 -/* 80079A48 40 81 00 08 */ ble lbl_80079A50 -/* 80079A4C D0 25 00 08 */ stfs f1, 8(r5) -lbl_80079A50: -/* 80079A50 C0 06 00 08 */ lfs f0, 8(r6) -/* 80079A54 C0 23 00 08 */ lfs f1, 8(r3) -/* 80079A58 FC 00 08 40 */ fcmpo cr0, f0, f1 -/* 80079A5C 4C 80 00 20 */ bgelr -/* 80079A60 D0 26 00 08 */ stfs f1, 8(r6) -/* 80079A64 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/MakeBlckTransMinMax__4cBgWFP4cXyzP4cXyz.s b/asm/d/bg/d_bg_w/MakeBlckTransMinMax__4cBgWFP4cXyzP4cXyz.s deleted file mode 100644 index 728ddfef49..0000000000 --- a/asm/d/bg/d_bg_w/MakeBlckTransMinMax__4cBgWFP4cXyzP4cXyz.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_8007998C: -/* 8007998C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80079990 7C 08 02 A6 */ mflr r0 -/* 80079994 90 01 00 14 */ stw r0, 0x14(r1) -/* 80079998 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8007999C 93 C1 00 08 */ stw r30, 8(r1) -/* 800799A0 7C 7E 1B 78 */ mr r30, r3 -/* 800799A4 7C 83 23 78 */ mr r3, r4 -/* 800799A8 7C BF 2B 78 */ mr r31, r5 -/* 800799AC 38 9E 00 7C */ addi r4, r30, 0x7c -/* 800799B0 7C 65 1B 78 */ mr r5, r3 -/* 800799B4 48 2C D6 DD */ bl PSVECAdd -/* 800799B8 7F E3 FB 78 */ mr r3, r31 -/* 800799BC 38 9E 00 7C */ addi r4, r30, 0x7c -/* 800799C0 7F E5 FB 78 */ mr r5, r31 -/* 800799C4 48 2C D6 CD */ bl PSVECAdd -/* 800799C8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800799CC 83 C1 00 08 */ lwz r30, 8(r1) -/* 800799D0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800799D4 7C 08 03 A6 */ mtlr r0 -/* 800799D8 38 21 00 10 */ addi r1, r1, 0x10 -/* 800799DC 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/MakeNodeTreeRp__4cBgWFi.s b/asm/d/bg/d_bg_w/MakeNodeTreeRp__4cBgWFi.s deleted file mode 100644 index 7f45164bd3..0000000000 --- a/asm/d/bg/d_bg_w/MakeNodeTreeRp__4cBgWFi.s +++ /dev/null @@ -1,63 +0,0 @@ -lbl_80079BDC: -/* 80079BDC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80079BE0 7C 08 02 A6 */ mflr r0 -/* 80079BE4 90 01 00 24 */ stw r0, 0x24(r1) -/* 80079BE8 39 61 00 20 */ addi r11, r1, 0x20 -/* 80079BEC 48 2E 85 E5 */ bl _savegpr_26 -/* 80079BF0 7C 7F 1B 78 */ mr r31, r3 -/* 80079BF4 80 A3 00 A0 */ lwz r5, 0xa0(r3) -/* 80079BF8 80 A5 00 1C */ lwz r5, 0x1c(r5) -/* 80079BFC 1C 04 00 14 */ mulli r0, r4, 0x14 -/* 80079C00 7F 65 02 14 */ add r27, r5, r0 -/* 80079C04 A0 1B 00 00 */ lhz r0, 0(r27) -/* 80079C08 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 80079C0C 41 82 00 30 */ beq lbl_80079C3C -/* 80079C10 A0 FB 00 04 */ lhz r7, 4(r27) -/* 80079C14 3C 07 00 00 */ addis r0, r7, 0 -/* 80079C18 28 00 FF FF */ cmplwi r0, 0xffff -/* 80079C1C 41 82 00 90 */ beq lbl_80079CAC -/* 80079C20 80 BF 00 AC */ lwz r5, 0xac(r31) -/* 80079C24 1C 04 00 1C */ mulli r0, r4, 0x1c -/* 80079C28 7C A5 02 14 */ add r5, r5, r0 -/* 80079C2C 38 C5 00 0C */ addi r6, r5, 0xc -/* 80079C30 7C E4 3B 78 */ mr r4, r7 -/* 80079C34 4B FF FE 35 */ bl MakeBlckBnd__4cBgWFiP4cXyzP4cXyz -/* 80079C38 48 00 00 74 */ b lbl_80079CAC -lbl_80079C3C: -/* 80079C3C 80 1F 00 AC */ lwz r0, 0xac(r31) -/* 80079C40 1F A4 00 1C */ mulli r29, r4, 0x1c -/* 80079C44 7C 60 EA 14 */ add r3, r0, r29 -/* 80079C48 48 1F 50 B1 */ bl ClearForMinMax__8cM3dGAabFv -/* 80079C4C 3B 40 00 00 */ li r26, 0 -/* 80079C50 3B C0 00 00 */ li r30, 0 -lbl_80079C54: -/* 80079C54 38 1E 00 04 */ addi r0, r30, 4 -/* 80079C58 7F 9B 02 2E */ lhzx r28, r27, r0 -/* 80079C5C 3C 1C 00 00 */ addis r0, r28, 0 -/* 80079C60 28 00 FF FF */ cmplwi r0, 0xffff -/* 80079C64 41 82 00 38 */ beq lbl_80079C9C -/* 80079C68 7F E3 FB 78 */ mr r3, r31 -/* 80079C6C 7F 84 E3 78 */ mr r4, r28 -/* 80079C70 4B FF FF 6D */ bl MakeNodeTreeRp__4cBgWFi -/* 80079C74 80 1F 00 AC */ lwz r0, 0xac(r31) -/* 80079C78 1F 9C 00 1C */ mulli r28, r28, 0x1c -/* 80079C7C 7C 80 E2 14 */ add r4, r0, r28 -/* 80079C80 7C 60 EA 14 */ add r3, r0, r29 -/* 80079C84 48 1F 50 99 */ bl SetMinMax__8cM3dGAabFRC4cXyz -/* 80079C88 80 1F 00 AC */ lwz r0, 0xac(r31) -/* 80079C8C 38 9C 00 0C */ addi r4, r28, 0xc -/* 80079C90 7C 80 22 14 */ add r4, r0, r4 -/* 80079C94 7C 60 EA 14 */ add r3, r0, r29 -/* 80079C98 48 1F 50 85 */ bl SetMinMax__8cM3dGAabFRC4cXyz -lbl_80079C9C: -/* 80079C9C 3B 5A 00 01 */ addi r26, r26, 1 -/* 80079CA0 2C 1A 00 08 */ cmpwi r26, 8 -/* 80079CA4 3B DE 00 02 */ addi r30, r30, 2 -/* 80079CA8 41 80 FF AC */ blt lbl_80079C54 -lbl_80079CAC: -/* 80079CAC 39 61 00 20 */ addi r11, r1, 0x20 -/* 80079CB0 48 2E 85 6D */ bl _restgpr_26 -/* 80079CB4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80079CB8 7C 08 03 A6 */ mtlr r0 -/* 80079CBC 38 21 00 20 */ addi r1, r1, 0x20 -/* 80079CC0 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/Move__4cBgWFv.s b/asm/d/bg/d_bg_w/Move__4cBgWFv.s deleted file mode 100644 index 21d74c1814..0000000000 --- a/asm/d/bg/d_bg_w/Move__4cBgWFv.s +++ /dev/null @@ -1,129 +0,0 @@ -lbl_8007AC10: -/* 8007AC10 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007AC14 7C 08 02 A6 */ mflr r0 -/* 8007AC18 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007AC1C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8007AC20 7C 7F 1B 78 */ mr r31, r3 -/* 8007AC24 81 83 00 04 */ lwz r12, 4(r3) -/* 8007AC28 81 8C 00 14 */ lwz r12, 0x14(r12) -/* 8007AC2C 7D 89 03 A6 */ mtctr r12 -/* 8007AC30 4E 80 04 21 */ bctrl -/* 8007AC34 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 8007AC38 40 82 01 A4 */ bne lbl_8007ADDC -/* 8007AC3C 88 7F 00 88 */ lbz r3, 0x88(r31) -/* 8007AC40 54 60 07 FF */ clrlwi. r0, r3, 0x1f -/* 8007AC44 41 82 01 98 */ beq lbl_8007ADDC -/* 8007AC48 54 60 07 BD */ rlwinm. r0, r3, 0, 0x1e, 0x1e -/* 8007AC4C 40 82 01 58 */ bne lbl_8007ADA4 -/* 8007AC50 88 1F 00 90 */ lbz r0, 0x90(r31) -/* 8007AC54 28 00 00 FF */ cmplwi r0, 0xff -/* 8007AC58 40 80 00 98 */ bge lbl_8007ACF0 -/* 8007AC5C C0 3F 00 4C */ lfs f1, 0x4c(r31) -/* 8007AC60 80 7F 00 18 */ lwz r3, 0x18(r31) -/* 8007AC64 C0 03 00 00 */ lfs f0, 0(r3) -/* 8007AC68 FC 01 00 00 */ fcmpu cr0, f1, f0 -/* 8007AC6C 40 82 00 84 */ bne lbl_8007ACF0 -/* 8007AC70 C0 3F 00 50 */ lfs f1, 0x50(r31) -/* 8007AC74 C0 03 00 04 */ lfs f0, 4(r3) -/* 8007AC78 FC 01 00 00 */ fcmpu cr0, f1, f0 -/* 8007AC7C 40 82 00 74 */ bne lbl_8007ACF0 -/* 8007AC80 C0 3F 00 54 */ lfs f1, 0x54(r31) -/* 8007AC84 C0 03 00 08 */ lfs f0, 8(r3) -/* 8007AC88 FC 01 00 00 */ fcmpu cr0, f1, f0 -/* 8007AC8C 40 82 00 64 */ bne lbl_8007ACF0 -/* 8007AC90 C0 3F 00 5C */ lfs f1, 0x5c(r31) -/* 8007AC94 C0 03 00 10 */ lfs f0, 0x10(r3) -/* 8007AC98 FC 01 00 00 */ fcmpu cr0, f1, f0 -/* 8007AC9C 40 82 00 54 */ bne lbl_8007ACF0 -/* 8007ACA0 C0 3F 00 60 */ lfs f1, 0x60(r31) -/* 8007ACA4 C0 03 00 14 */ lfs f0, 0x14(r3) -/* 8007ACA8 FC 01 00 00 */ fcmpu cr0, f1, f0 -/* 8007ACAC 40 82 00 44 */ bne lbl_8007ACF0 -/* 8007ACB0 C0 3F 00 64 */ lfs f1, 0x64(r31) -/* 8007ACB4 C0 03 00 18 */ lfs f0, 0x18(r3) -/* 8007ACB8 FC 01 00 00 */ fcmpu cr0, f1, f0 -/* 8007ACBC 40 82 00 34 */ bne lbl_8007ACF0 -/* 8007ACC0 C0 3F 00 6C */ lfs f1, 0x6c(r31) -/* 8007ACC4 C0 03 00 20 */ lfs f0, 0x20(r3) -/* 8007ACC8 FC 01 00 00 */ fcmpu cr0, f1, f0 -/* 8007ACCC 40 82 00 24 */ bne lbl_8007ACF0 -/* 8007ACD0 C0 3F 00 70 */ lfs f1, 0x70(r31) -/* 8007ACD4 C0 03 00 24 */ lfs f0, 0x24(r3) -/* 8007ACD8 FC 01 00 00 */ fcmpu cr0, f1, f0 -/* 8007ACDC 40 82 00 14 */ bne lbl_8007ACF0 -/* 8007ACE0 C0 3F 00 74 */ lfs f1, 0x74(r31) -/* 8007ACE4 C0 03 00 28 */ lfs f0, 0x28(r3) -/* 8007ACE8 FC 01 00 00 */ fcmpu cr0, f1, f0 -/* 8007ACEC 41 82 00 10 */ beq lbl_8007ACFC -lbl_8007ACF0: -/* 8007ACF0 38 00 00 01 */ li r0, 1 -/* 8007ACF4 98 1F 00 89 */ stb r0, 0x89(r31) -/* 8007ACF8 48 00 00 84 */ b lbl_8007AD7C -lbl_8007ACFC: -/* 8007ACFC C0 5F 00 58 */ lfs f2, 0x58(r31) -/* 8007AD00 C0 63 00 0C */ lfs f3, 0xc(r3) -/* 8007AD04 FC 02 18 00 */ fcmpu cr0, f2, f3 -/* 8007AD08 40 82 00 3C */ bne lbl_8007AD44 -/* 8007AD0C C0 3F 00 68 */ lfs f1, 0x68(r31) -/* 8007AD10 C0 03 00 1C */ lfs f0, 0x1c(r3) -/* 8007AD14 FC 01 00 00 */ fcmpu cr0, f1, f0 -/* 8007AD18 40 82 00 2C */ bne lbl_8007AD44 -/* 8007AD1C C0 3F 00 78 */ lfs f1, 0x78(r31) -/* 8007AD20 C0 03 00 2C */ lfs f0, 0x2c(r3) -/* 8007AD24 FC 01 00 00 */ fcmpu cr0, f1, f0 -/* 8007AD28 40 82 00 1C */ bne lbl_8007AD44 -/* 8007AD2C 38 9F 00 1C */ addi r4, r31, 0x1c -/* 8007AD30 48 2C B7 81 */ bl PSMTXCopy -/* 8007AD34 88 1F 00 91 */ lbz r0, 0x91(r31) -/* 8007AD38 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c -/* 8007AD3C 40 82 00 40 */ bne lbl_8007AD7C -/* 8007AD40 48 00 00 9C */ b lbl_8007ADDC -lbl_8007AD44: -/* 8007AD44 EC 03 10 28 */ fsubs f0, f3, f2 -/* 8007AD48 D0 1F 00 7C */ stfs f0, 0x7c(r31) -/* 8007AD4C 80 7F 00 18 */ lwz r3, 0x18(r31) -/* 8007AD50 C0 23 00 1C */ lfs f1, 0x1c(r3) -/* 8007AD54 C0 1F 00 68 */ lfs f0, 0x68(r31) -/* 8007AD58 EC 01 00 28 */ fsubs f0, f1, f0 -/* 8007AD5C D0 1F 00 80 */ stfs f0, 0x80(r31) -/* 8007AD60 80 7F 00 18 */ lwz r3, 0x18(r31) -/* 8007AD64 C0 23 00 2C */ lfs f1, 0x2c(r3) -/* 8007AD68 C0 1F 00 78 */ lfs f0, 0x78(r31) -/* 8007AD6C EC 01 00 28 */ fsubs f0, f1, f0 -/* 8007AD70 D0 1F 00 84 */ stfs f0, 0x84(r31) -/* 8007AD74 38 00 00 00 */ li r0, 0 -/* 8007AD78 98 1F 00 89 */ stb r0, 0x89(r31) -lbl_8007AD7C: -/* 8007AD7C 88 7F 00 90 */ lbz r3, 0x90(r31) -/* 8007AD80 28 03 00 FF */ cmplwi r3, 0xff -/* 8007AD84 41 80 00 10 */ blt lbl_8007AD94 -/* 8007AD88 38 00 00 00 */ li r0, 0 -/* 8007AD8C 98 1F 00 90 */ stb r0, 0x90(r31) -/* 8007AD90 48 00 00 0C */ b lbl_8007AD9C -lbl_8007AD94: -/* 8007AD94 38 03 00 01 */ addi r0, r3, 1 -/* 8007AD98 98 1F 00 90 */ stb r0, 0x90(r31) -lbl_8007AD9C: -/* 8007AD9C 7F E3 FB 78 */ mr r3, r31 -/* 8007ADA0 4B FF E6 25 */ bl GlobalVtx__4cBgWFv -lbl_8007ADA4: -/* 8007ADA4 7F E3 FB 78 */ mr r3, r31 -/* 8007ADA8 4B FF FE 1D */ bl CopyOldMtx__4cBgWFv -/* 8007ADAC 7F E3 FB 78 */ mr r3, r31 -/* 8007ADB0 81 9F 00 04 */ lwz r12, 4(r31) -/* 8007ADB4 81 8C 00 F0 */ lwz r12, 0xf0(r12) -/* 8007ADB8 7D 89 03 A6 */ mtctr r12 -/* 8007ADBC 4E 80 04 21 */ bctrl -/* 8007ADC0 7F E3 FB 78 */ mr r3, r31 -/* 8007ADC4 81 9F 00 04 */ lwz r12, 4(r31) -/* 8007ADC8 81 8C 00 F4 */ lwz r12, 0xf4(r12) -/* 8007ADCC 7D 89 03 A6 */ mtctr r12 -/* 8007ADD0 4E 80 04 21 */ bctrl -/* 8007ADD4 7F E3 FB 78 */ mr r3, r31 -/* 8007ADD8 4B FF F0 19 */ bl MakeNodeTree__4cBgWFv -lbl_8007ADDC: -/* 8007ADDC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8007ADE0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007ADE4 7C 08 03 A6 */ mtlr r0 -/* 8007ADE8 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007ADEC 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/Move__4dBgWFv.s b/asm/d/bg/d_bg_w/Move__4dBgWFv.s deleted file mode 100644 index 58dd27a5c1..0000000000 --- a/asm/d/bg/d_bg_w/Move__4dBgWFv.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8007B9C0: -/* 8007B9C0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B9C4 7C 08 02 A6 */ mflr r0 -/* 8007B9C8 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B9CC 88 03 00 BC */ lbz r0, 0xbc(r3) -/* 8007B9D0 60 00 00 01 */ ori r0, r0, 1 -/* 8007B9D4 98 03 00 BC */ stb r0, 0xbc(r3) -/* 8007B9D8 4B FF F2 39 */ bl Move__4cBgWFv -/* 8007B9DC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B9E0 7C 08 03 A6 */ mtlr r0 -/* 8007B9E4 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B9E8 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/OffMoveFlag__4dBgWFv.s b/asm/d/bg/d_bg_w/OffMoveFlag__4dBgWFv.s deleted file mode 100644 index c549a58bb5..0000000000 --- a/asm/d/bg/d_bg_w/OffMoveFlag__4dBgWFv.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_8007E4A4: -/* 8007E4A4 88 03 00 BC */ lbz r0, 0xbc(r3) -/* 8007E4A8 54 00 06 3C */ rlwinm r0, r0, 0, 0x18, 0x1e -/* 8007E4AC 98 03 00 BC */ stb r0, 0xbc(r3) -/* 8007E4B0 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/RoofChk__4dBgWFP12dBgS_RoofChk.s b/asm/d/bg/d_bg_w/RoofChk__4dBgWFP12dBgS_RoofChk.s deleted file mode 100644 index 4758b96dda..0000000000 --- a/asm/d/bg/d_bg_w/RoofChk__4dBgWFP12dBgS_RoofChk.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_8007D470: -/* 8007D470 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007D474 7C 08 02 A6 */ mflr r0 -/* 8007D478 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007D47C A0 A3 00 92 */ lhz r5, 0x92(r3) -/* 8007D480 38 C0 00 01 */ li r6, 1 -/* 8007D484 4B FF FE AD */ bl RoofChkGrpRp__4dBgWFP12dBgS_RoofChkii -/* 8007D488 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007D48C 7C 08 03 A6 */ mtlr r0 -/* 8007D490 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007D494 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/SetTri__4cBgWFv.s b/asm/d/bg/d_bg_w/SetTri__4cBgWFv.s deleted file mode 100644 index cee12537b7..0000000000 --- a/asm/d/bg/d_bg_w/SetTri__4cBgWFv.s +++ /dev/null @@ -1,39 +0,0 @@ -lbl_80079668: -/* 80079668 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007966C 7C 08 02 A6 */ mflr r0 -/* 80079670 90 01 00 14 */ stw r0, 0x14(r1) -/* 80079674 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80079678 93 C1 00 08 */ stw r30, 8(r1) -/* 8007967C 7C 7E 1B 78 */ mr r30, r3 -/* 80079680 80 63 00 A0 */ lwz r3, 0xa0(r3) -/* 80079684 83 E3 00 08 */ lwz r31, 8(r3) -/* 80079688 1C 7F 00 18 */ mulli r3, r31, 0x18 -/* 8007968C 38 63 00 10 */ addi r3, r3, 0x10 -/* 80079690 48 25 56 35 */ bl __nwa__FUl -/* 80079694 3C 80 80 08 */ lis r4, __ct__11cBgW_TriElmFv@ha /* 0x80079754@ha */ -/* 80079698 38 84 97 54 */ addi r4, r4, __ct__11cBgW_TriElmFv@l /* 0x80079754@l */ -/* 8007969C 3C A0 80 08 */ lis r5, __dt__11cBgW_TriElmFv@ha /* 0x800796F8@ha */ -/* 800796A0 38 A5 96 F8 */ addi r5, r5, __dt__11cBgW_TriElmFv@l /* 0x800796F8@l */ -/* 800796A4 38 C0 00 18 */ li r6, 0x18 -/* 800796A8 7F E7 FB 78 */ mr r7, r31 -/* 800796AC 48 2E 88 69 */ bl __construct_new_array -/* 800796B0 90 7E 00 94 */ stw r3, 0x94(r30) -/* 800796B4 80 1E 00 94 */ lwz r0, 0x94(r30) -/* 800796B8 28 00 00 00 */ cmplwi r0, 0 -/* 800796BC 40 82 00 0C */ bne lbl_800796C8 -/* 800796C0 38 60 00 01 */ li r3, 1 -/* 800796C4 48 00 00 1C */ b lbl_800796E0 -lbl_800796C8: -/* 800796C8 7F C3 F3 78 */ mr r3, r30 -/* 800796CC 81 9E 00 04 */ lwz r12, 4(r30) -/* 800796D0 81 8C 00 F0 */ lwz r12, 0xf0(r12) -/* 800796D4 7D 89 03 A6 */ mtctr r12 -/* 800796D8 4E 80 04 21 */ bctrl -/* 800796DC 38 60 00 00 */ li r3, 0 -lbl_800796E0: -/* 800796E0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800796E4 83 C1 00 08 */ lwz r30, 8(r1) -/* 800796E8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800796EC 7C 08 03 A6 */ mtlr r0 -/* 800796F0 38 21 00 10 */ addi r1, r1, 0x10 -/* 800796F4 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/Set__4cBgWFP6cBgD_tUlPA3_A4_f.s b/asm/d/bg/d_bg_w/Set__4cBgWFP6cBgD_tUlPA3_A4_f.s deleted file mode 100644 index 9d402eb0a0..0000000000 --- a/asm/d/bg/d_bg_w/Set__4cBgWFP6cBgD_tUlPA3_A4_f.s +++ /dev/null @@ -1,158 +0,0 @@ -lbl_80079F38: -/* 80079F38 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80079F3C 7C 08 02 A6 */ mflr r0 -/* 80079F40 90 01 00 24 */ stw r0, 0x24(r1) -/* 80079F44 39 61 00 20 */ addi r11, r1, 0x20 -/* 80079F48 48 2E 82 91 */ bl _savegpr_28 -/* 80079F4C 7C 7F 1B 78 */ mr r31, r3 -/* 80079F50 7C 9C 23 78 */ mr r28, r4 -/* 80079F54 7C BD 2B 78 */ mr r29, r5 -/* 80079F58 7C DE 33 78 */ mr r30, r6 -/* 80079F5C 38 00 00 20 */ li r0, 0x20 -/* 80079F60 98 03 00 88 */ stb r0, 0x88(r3) -/* 80079F64 38 00 00 00 */ li r0, 0 -/* 80079F68 90 03 00 9C */ stw r0, 0x9c(r3) -/* 80079F6C 90 03 00 94 */ stw r0, 0x94(r3) -/* 80079F70 90 03 00 98 */ stw r0, 0x98(r3) -/* 80079F74 90 03 00 A4 */ stw r0, 0xa4(r3) -/* 80079F78 90 03 00 AC */ stw r0, 0xac(r3) -/* 80079F7C 90 03 00 A8 */ stw r0, 0xa8(r3) -/* 80079F80 C0 22 8D 08 */ lfs f1, lit_4073(r2) -/* 80079F84 48 1E D9 D1 */ bl cM_rndF__Ff -/* 80079F88 FC 00 08 1E */ fctiwz f0, f1 -/* 80079F8C D8 01 00 08 */ stfd f0, 8(r1) -/* 80079F90 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80079F94 98 1F 00 90 */ stb r0, 0x90(r31) -/* 80079F98 28 1C 00 00 */ cmplwi r28, 0 -/* 80079F9C 40 82 00 0C */ bne lbl_80079FA8 -/* 80079FA0 38 60 00 01 */ li r3, 1 -/* 80079FA4 48 00 01 C8 */ b lbl_8007A16C -lbl_80079FA8: -/* 80079FA8 9B BF 00 88 */ stb r29, 0x88(r31) -/* 80079FAC 88 1F 00 88 */ lbz r0, 0x88(r31) -/* 80079FB0 54 00 06 B5 */ rlwinm. r0, r0, 0, 0x1a, 0x1a -/* 80079FB4 41 82 00 20 */ beq lbl_80079FD4 -/* 80079FB8 38 00 00 00 */ li r0, 0 -/* 80079FBC 90 1F 00 18 */ stw r0, 0x18(r31) -/* 80079FC0 38 7F 00 1C */ addi r3, r31, 0x1c -/* 80079FC4 48 2C C4 C1 */ bl PSMTXIdentity -/* 80079FC8 38 7F 00 4C */ addi r3, r31, 0x4c -/* 80079FCC 48 2C C4 B9 */ bl PSMTXIdentity -/* 80079FD0 48 00 00 20 */ b lbl_80079FF0 -lbl_80079FD4: -/* 80079FD4 93 DF 00 18 */ stw r30, 0x18(r31) -/* 80079FD8 80 7F 00 18 */ lwz r3, 0x18(r31) -/* 80079FDC 38 9F 00 1C */ addi r4, r31, 0x1c -/* 80079FE0 48 2C C4 D1 */ bl PSMTXCopy -/* 80079FE4 80 7F 00 18 */ lwz r3, 0x18(r31) -/* 80079FE8 38 9F 00 4C */ addi r4, r31, 0x4c -/* 80079FEC 48 2C C4 C5 */ bl PSMTXCopy -lbl_80079FF0: -/* 80079FF0 93 9F 00 A0 */ stw r28, 0xa0(r31) -/* 80079FF4 7F E3 FB 78 */ mr r3, r31 -/* 80079FF8 4B FF F4 8D */ bl SetVtx__4cBgWFv -/* 80079FFC 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 8007A000 40 82 00 14 */ bne lbl_8007A014 -/* 8007A004 7F E3 FB 78 */ mr r3, r31 -/* 8007A008 4B FF F6 61 */ bl SetTri__4cBgWFv -/* 8007A00C 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 8007A010 41 82 00 14 */ beq lbl_8007A024 -lbl_8007A014: -/* 8007A014 7F E3 FB 78 */ mr r3, r31 -/* 8007A018 4B FF F3 8D */ bl FreeArea__4cBgWFv -/* 8007A01C 38 60 00 01 */ li r3, 1 -/* 8007A020 48 00 01 4C */ b lbl_8007A16C -lbl_8007A024: -/* 8007A024 80 7F 00 A0 */ lwz r3, 0xa0(r31) -/* 8007A028 83 C3 00 08 */ lwz r30, 8(r3) -/* 8007A02C 57 C3 18 38 */ slwi r3, r30, 3 -/* 8007A030 38 63 00 10 */ addi r3, r3, 0x10 -/* 8007A034 48 25 4C 91 */ bl __nwa__FUl -/* 8007A038 3C 80 80 08 */ lis r4, __ct__11cBgW_RwgElmFv@ha /* 0x800791C4@ha */ -/* 8007A03C 38 84 91 C4 */ addi r4, r4, __ct__11cBgW_RwgElmFv@l /* 0x800791C4@l */ -/* 8007A040 3C A0 80 08 */ lis r5, __dt__11cBgW_RwgElmFv@ha /* 0x800791D4@ha */ -/* 8007A044 38 A5 91 D4 */ addi r5, r5, __dt__11cBgW_RwgElmFv@l /* 0x800791D4@l */ -/* 8007A048 38 C0 00 08 */ li r6, 8 -/* 8007A04C 7F C7 F3 78 */ mr r7, r30 -/* 8007A050 48 2E 7E C5 */ bl __construct_new_array -/* 8007A054 90 7F 00 98 */ stw r3, 0x98(r31) -/* 8007A058 80 1F 00 98 */ lwz r0, 0x98(r31) -/* 8007A05C 28 00 00 00 */ cmplwi r0, 0 -/* 8007A060 40 82 00 14 */ bne lbl_8007A074 -/* 8007A064 7F E3 FB 78 */ mr r3, r31 -/* 8007A068 4B FF F3 3D */ bl FreeArea__4cBgWFv -/* 8007A06C 38 60 00 01 */ li r3, 1 -/* 8007A070 48 00 00 FC */ b lbl_8007A16C -lbl_8007A074: -/* 8007A074 80 7F 00 A0 */ lwz r3, 0xa0(r31) -/* 8007A078 80 03 00 10 */ lwz r0, 0x10(r3) -/* 8007A07C 1C 60 00 06 */ mulli r3, r0, 6 -/* 8007A080 48 25 4C 45 */ bl __nwa__FUl -/* 8007A084 90 7F 00 A4 */ stw r3, 0xa4(r31) -/* 8007A088 80 1F 00 A4 */ lwz r0, 0xa4(r31) -/* 8007A08C 28 00 00 00 */ cmplwi r0, 0 -/* 8007A090 40 82 00 14 */ bne lbl_8007A0A4 -/* 8007A094 7F E3 FB 78 */ mr r3, r31 -/* 8007A098 4B FF F3 0D */ bl FreeArea__4cBgWFv -/* 8007A09C 38 60 00 01 */ li r3, 1 -/* 8007A0A0 48 00 00 CC */ b lbl_8007A16C -lbl_8007A0A4: -/* 8007A0A4 80 7F 00 A0 */ lwz r3, 0xa0(r31) -/* 8007A0A8 83 C3 00 18 */ lwz r30, 0x18(r3) -/* 8007A0AC 1C 7E 00 1C */ mulli r3, r30, 0x1c -/* 8007A0B0 38 63 00 10 */ addi r3, r3, 0x10 -/* 8007A0B4 48 25 4C 11 */ bl __nwa__FUl -/* 8007A0B8 3C 80 80 08 */ lis r4, __ct__13cBgW_NodeTreeFv@ha /* 0x8007921C@ha */ -/* 8007A0BC 38 84 92 1C */ addi r4, r4, __ct__13cBgW_NodeTreeFv@l /* 0x8007921C@l */ -/* 8007A0C0 3C A0 80 08 */ lis r5, __dt__13cBgW_NodeTreeFv@ha /* 0x80079238@ha */ -/* 8007A0C4 38 A5 92 38 */ addi r5, r5, __dt__13cBgW_NodeTreeFv@l /* 0x80079238@l */ -/* 8007A0C8 38 C0 00 1C */ li r6, 0x1c -/* 8007A0CC 7F C7 F3 78 */ mr r7, r30 -/* 8007A0D0 48 2E 7E 45 */ bl __construct_new_array -/* 8007A0D4 90 7F 00 AC */ stw r3, 0xac(r31) -/* 8007A0D8 80 1F 00 AC */ lwz r0, 0xac(r31) -/* 8007A0DC 28 00 00 00 */ cmplwi r0, 0 -/* 8007A0E0 40 82 00 14 */ bne lbl_8007A0F4 -/* 8007A0E4 7F E3 FB 78 */ mr r3, r31 -/* 8007A0E8 4B FF F2 BD */ bl FreeArea__4cBgWFv -/* 8007A0EC 38 60 00 01 */ li r3, 1 -/* 8007A0F0 48 00 00 7C */ b lbl_8007A16C -lbl_8007A0F4: -/* 8007A0F4 80 7F 00 A0 */ lwz r3, 0xa0(r31) -/* 8007A0F8 83 C3 00 20 */ lwz r30, 0x20(r3) -/* 8007A0FC 57 C3 28 34 */ slwi r3, r30, 5 -/* 8007A100 38 63 00 10 */ addi r3, r3, 0x10 -/* 8007A104 48 25 4B C1 */ bl __nwa__FUl -/* 8007A108 3C 80 80 08 */ lis r4, __ct__11cBgW_GrpElmFv@ha /* 0x8007A1E4@ha */ -/* 8007A10C 38 84 A1 E4 */ addi r4, r4, __ct__11cBgW_GrpElmFv@l /* 0x8007A1E4@l */ -/* 8007A110 3C A0 80 08 */ lis r5, __dt__11cBgW_GrpElmFv@ha /* 0x8007A184@ha */ -/* 8007A114 38 A5 A1 84 */ addi r5, r5, __dt__11cBgW_GrpElmFv@l /* 0x8007A184@l */ -/* 8007A118 38 C0 00 20 */ li r6, 0x20 -/* 8007A11C 7F C7 F3 78 */ mr r7, r30 -/* 8007A120 48 2E 7D F5 */ bl __construct_new_array -/* 8007A124 90 7F 00 A8 */ stw r3, 0xa8(r31) -/* 8007A128 80 1F 00 A8 */ lwz r0, 0xa8(r31) -/* 8007A12C 28 00 00 00 */ cmplwi r0, 0 -/* 8007A130 40 82 00 14 */ bne lbl_8007A144 -/* 8007A134 7F E3 FB 78 */ mr r3, r31 -/* 8007A138 4B FF F2 6D */ bl FreeArea__4cBgWFv -/* 8007A13C 38 60 00 01 */ li r3, 1 -/* 8007A140 48 00 00 2C */ b lbl_8007A16C -lbl_8007A144: -/* 8007A144 7F E3 FB 78 */ mr r3, r31 -/* 8007A148 81 9F 00 04 */ lwz r12, 4(r31) -/* 8007A14C 81 8C 00 F4 */ lwz r12, 0xf4(r12) -/* 8007A150 7D 89 03 A6 */ mtctr r12 -/* 8007A154 4E 80 04 21 */ bctrl -/* 8007A158 38 00 00 01 */ li r0, 1 -/* 8007A15C 98 1F 00 89 */ stb r0, 0x89(r31) -/* 8007A160 7F E3 FB 78 */ mr r3, r31 -/* 8007A164 4B FF FC 8D */ bl MakeNodeTree__4cBgWFv -/* 8007A168 38 60 00 00 */ li r3, 0 -lbl_8007A16C: -/* 8007A16C 39 61 00 20 */ addi r11, r1, 0x20 -/* 8007A170 48 2E 80 B5 */ bl _restgpr_28 -/* 8007A174 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8007A178 7C 08 03 A6 */ mtlr r0 -/* 8007A17C 38 21 00 20 */ addi r1, r1, 0x20 -/* 8007A180 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/ShdwDraw__4cBgWFP13cBgS_ShdwDraw.s b/asm/d/bg/d_bg_w/ShdwDraw__4cBgWFP13cBgS_ShdwDraw.s deleted file mode 100644 index 7e1e519e3d..0000000000 --- a/asm/d/bg/d_bg_w/ShdwDraw__4cBgWFP13cBgS_ShdwDraw.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8007B084: -/* 8007B084 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B088 7C 08 02 A6 */ mflr r0 -/* 8007B08C 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B090 A0 A3 00 92 */ lhz r5, 0x92(r3) -/* 8007B094 4B FF FF 2D */ bl ShdwDrawGrpRp__4cBgWFP13cBgS_ShdwDrawi -/* 8007B098 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B09C 7C 08 03 A6 */ mtlr r0 -/* 8007B0A0 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B0A4 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/SphChk__4dBgWFP11dBgS_SphChkPv.s b/asm/d/bg/d_bg_w/SphChk__4dBgWFP11dBgS_SphChkPv.s deleted file mode 100644 index c62f851efe..0000000000 --- a/asm/d/bg/d_bg_w/SphChk__4dBgWFP11dBgS_SphChkPv.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_8007DF00: -/* 8007DF00 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007DF04 7C 08 02 A6 */ mflr r0 -/* 8007DF08 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007DF0C A0 C3 00 92 */ lhz r6, 0x92(r3) -/* 8007DF10 38 E0 00 01 */ li r7, 1 -/* 8007DF14 4B FF FE CD */ bl SphChkGrpRp__4dBgWFP11dBgS_SphChkPvii -/* 8007DF18 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007DF1C 7C 08 03 A6 */ mtlr r0 -/* 8007DF20 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007DF24 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/SplGrpChk__4dBgWFP14dBgS_SplGrpChk.s b/asm/d/bg/d_bg_w/SplGrpChk__4dBgWFP14dBgS_SplGrpChk.s deleted file mode 100644 index c319d81575..0000000000 --- a/asm/d/bg/d_bg_w/SplGrpChk__4dBgWFP14dBgS_SplGrpChk.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_8007D830: -/* 8007D830 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007D834 7C 08 02 A6 */ mflr r0 -/* 8007D838 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007D83C A0 A3 00 92 */ lhz r5, 0x92(r3) -/* 8007D840 38 C0 00 01 */ li r6, 1 -/* 8007D844 4B FF FE AD */ bl SplGrpChkGrpRp__4dBgWFP14dBgS_SplGrpChkii -/* 8007D848 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007D84C 7C 08 03 A6 */ mtlr r0 -/* 8007D850 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007D854 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/WallCorrect__4dBgWFP9dBgS_Acch.s b/asm/d/bg/d_bg_w/WallCorrect__4dBgWFP9dBgS_Acch.s deleted file mode 100644 index 90fac500ee..0000000000 --- a/asm/d/bg/d_bg_w/WallCorrect__4dBgWFP9dBgS_Acch.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_8007C484: -/* 8007C484 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007C488 7C 08 02 A6 */ mflr r0 -/* 8007C48C 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007C490 A0 A3 00 92 */ lhz r5, 0x92(r3) -/* 8007C494 38 C0 00 01 */ li r6, 1 -/* 8007C498 4B FF FE C9 */ bl WallCorrectGrpRp__4dBgWFP9dBgS_Acchii -/* 8007C49C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007C4A0 7C 08 03 A6 */ mtlr r0 -/* 8007C4A4 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007C4A8 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/__ct__11cBgW_GrpElmFv.s b/asm/d/bg/d_bg_w/__ct__11cBgW_GrpElmFv.s deleted file mode 100644 index 1665fcc8ae..0000000000 --- a/asm/d/bg/d_bg_w/__ct__11cBgW_GrpElmFv.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_8007A1E4: -/* 8007A1E4 3C 80 80 3B */ lis r4, __vt__11cBgW_GrpElm@ha /* 0x803ABB90@ha */ -/* 8007A1E8 38 04 BB 90 */ addi r0, r4, __vt__11cBgW_GrpElm@l /* 0x803ABB90@l */ -/* 8007A1EC 90 03 00 00 */ stw r0, 0(r3) -/* 8007A1F0 3C 80 80 3A */ lis r4, __vt__8cM3dGAab@ha /* 0x803A7218@ha */ -/* 8007A1F4 38 04 72 18 */ addi r0, r4, __vt__8cM3dGAab@l /* 0x803A7218@l */ -/* 8007A1F8 90 03 00 1C */ stw r0, 0x1c(r3) -/* 8007A1FC 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/__ct__11cBgW_TriElmFv.s b/asm/d/bg/d_bg_w/__ct__11cBgW_TriElmFv.s deleted file mode 100644 index baf69e04e4..0000000000 --- a/asm/d/bg/d_bg_w/__ct__11cBgW_TriElmFv.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_80079754: -/* 80079754 3C 80 80 3B */ lis r4, __vt__11cBgW_TriElm@ha /* 0x803ABB9C@ha */ -/* 80079758 38 04 BB 9C */ addi r0, r4, __vt__11cBgW_TriElm@l /* 0x803ABB9C@l */ -/* 8007975C 90 03 00 14 */ stw r0, 0x14(r3) -/* 80079760 3C 80 80 3A */ lis r4, __vt__8cM3dGPla@ha /* 0x803A37C0@ha */ -/* 80079764 38 04 37 C0 */ addi r0, r4, __vt__8cM3dGPla@l /* 0x803A37C0@l */ -/* 80079768 90 03 00 10 */ stw r0, 0x10(r3) -/* 8007976C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/__ct__4dBgWFv.s b/asm/d/bg/d_bg_w/__ct__4dBgWFv.s deleted file mode 100644 index b83d646196..0000000000 --- a/asm/d/bg/d_bg_w/__ct__4dBgWFv.s +++ /dev/null @@ -1,21 +0,0 @@ -lbl_8007B970: -/* 8007B970 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007B974 7C 08 02 A6 */ mflr r0 -/* 8007B978 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007B97C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8007B980 7C 7F 1B 78 */ mr r31, r3 -/* 8007B984 4B FF D9 11 */ bl __ct__4cBgWFv -/* 8007B988 3C 60 80 3B */ lis r3, __vt__4dBgW@ha /* 0x803ABA80@ha */ -/* 8007B98C 38 03 BA 80 */ addi r0, r3, __vt__4dBgW@l /* 0x803ABA80@l */ -/* 8007B990 90 1F 00 04 */ stw r0, 4(r31) -/* 8007B994 38 00 00 00 */ li r0, 0 -/* 8007B998 90 1F 00 B0 */ stw r0, 0xb0(r31) -/* 8007B99C 90 1F 00 B4 */ stw r0, 0xb4(r31) -/* 8007B9A0 90 1F 00 B8 */ stw r0, 0xb8(r31) -/* 8007B9A4 98 1F 00 BC */ stb r0, 0xbc(r31) -/* 8007B9A8 7F E3 FB 78 */ mr r3, r31 -/* 8007B9AC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8007B9B0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007B9B4 7C 08 03 A6 */ mtlr r0 -/* 8007B9B8 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007B9BC 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w/dBgW_NewSet__FP6cBgD_tUlPA3_A4_f.s b/asm/d/bg/d_bg_w/dBgW_NewSet__FP6cBgD_tUlPA3_A4_f.s deleted file mode 100644 index 8ea3133d3c..0000000000 --- a/asm/d/bg/d_bg_w/dBgW_NewSet__FP6cBgD_tUlPA3_A4_f.s +++ /dev/null @@ -1,39 +0,0 @@ -lbl_8007E4C0: -/* 8007E4C0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8007E4C4 7C 08 02 A6 */ mflr r0 -/* 8007E4C8 90 01 00 24 */ stw r0, 0x24(r1) -/* 8007E4CC 39 61 00 20 */ addi r11, r1, 0x20 -/* 8007E4D0 48 2E 3D 09 */ bl _savegpr_28 -/* 8007E4D4 7C 7C 1B 78 */ mr r28, r3 -/* 8007E4D8 7C 9D 23 78 */ mr r29, r4 -/* 8007E4DC 7C BE 2B 78 */ mr r30, r5 -/* 8007E4E0 38 60 00 C0 */ li r3, 0xc0 -/* 8007E4E4 48 25 07 69 */ bl __nw__FUl -/* 8007E4E8 7C 7F 1B 79 */ or. r31, r3, r3 -/* 8007E4EC 41 82 00 0C */ beq lbl_8007E4F8 -/* 8007E4F0 4B FF D4 81 */ bl __ct__4dBgWFv -/* 8007E4F4 7C 7F 1B 78 */ mr r31, r3 -lbl_8007E4F8: -/* 8007E4F8 28 1F 00 00 */ cmplwi r31, 0 -/* 8007E4FC 40 82 00 0C */ bne lbl_8007E508 -/* 8007E500 38 60 00 00 */ li r3, 0 -/* 8007E504 48 00 00 2C */ b lbl_8007E530 -lbl_8007E508: -/* 8007E508 7F E3 FB 78 */ mr r3, r31 -/* 8007E50C 7F 84 E3 78 */ mr r4, r28 -/* 8007E510 7F A5 EB 78 */ mr r5, r29 -/* 8007E514 7F C6 F3 78 */ mr r6, r30 -/* 8007E518 4B FF BA 21 */ bl Set__4cBgWFP6cBgD_tUlPA3_A4_f -/* 8007E51C 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 8007E520 41 82 00 0C */ beq lbl_8007E52C -/* 8007E524 38 60 00 00 */ li r3, 0 -/* 8007E528 48 00 00 08 */ b lbl_8007E530 -lbl_8007E52C: -/* 8007E52C 7F E3 FB 78 */ mr r3, r31 -lbl_8007E530: -/* 8007E530 39 61 00 20 */ addi r11, r1, 0x20 -/* 8007E534 48 2E 3C F1 */ bl _restgpr_28 -/* 8007E538 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8007E53C 7C 08 03 A6 */ mtlr r0 -/* 8007E540 38 21 00 20 */ addi r1, r1, 0x20 -/* 8007E544 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/ChkNotReady__8dBgWKColCFv.s b/asm/d/bg/d_bg_w_kcol/ChkNotReady__8dBgWKColCFv.s deleted file mode 100644 index d5e3d84cd3..0000000000 --- a/asm/d/bg/d_bg_w_kcol/ChkNotReady__8dBgWKColCFv.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_8007E86C: -/* 8007E86C 80 03 00 18 */ lwz r0, 0x18(r3) -/* 8007E870 7C 00 00 34 */ cntlzw r0, r0 -/* 8007E874 54 03 D9 7E */ srwi r3, r0, 5 -/* 8007E878 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/ChkShdwDrawThrough__8dBgWKColFP5dBgPc.s b/asm/d/bg/d_bg_w_kcol/ChkShdwDrawThrough__8dBgWKColFP5dBgPc.s deleted file mode 100644 index 84c50e52ca..0000000000 --- a/asm/d/bg/d_bg_w_kcol/ChkShdwDrawThrough__8dBgWKColFP5dBgPc.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_8007FF00: -/* 8007FF00 80 64 00 00 */ lwz r3, 0(r4) -/* 8007FF04 54 60 02 53 */ rlwinm. r0, r3, 0, 9, 9 -/* 8007FF08 41 82 00 0C */ beq lbl_8007FF14 -/* 8007FF0C 38 60 00 01 */ li r3, 1 -/* 8007FF10 4E 80 00 20 */ blr -lbl_8007FF14: -/* 8007FF14 54 63 7F FE */ rlwinm r3, r3, 0xf, 0x1f, 0x1f -/* 8007FF18 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetAttackThrough__8dBgWKColFi.s b/asm/d/bg/d_bg_w_kcol/GetAttackThrough__8dBgWKColFi.s deleted file mode 100644 index e0cd2d6cf8..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetAttackThrough__8dBgWKColFi.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80082E40: -/* 80082E40 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082E44 7C 08 02 A6 */ mflr r0 -/* 80082E48 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082E4C 38 A1 00 08 */ addi r5, r1, 8 -/* 80082E50 4B FF BD 21 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082E54 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80082E58 54 03 01 8C */ rlwinm r3, r0, 0, 6, 6 -/* 80082E5C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082E60 7C 08 03 A6 */ mtlr r0 -/* 80082E64 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082E68 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetBnd__8dBgWKColCFv.s b/asm/d/bg/d_bg_w_kcol/GetBnd__8dBgWKColCFv.s deleted file mode 100644 index 8184aea011..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetBnd__8dBgWKColCFv.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_8007EB28: -/* 8007EB28 38 63 00 20 */ addi r3, r3, 0x20 -/* 8007EB2C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetCamMoveBG__8dBgWKColFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w_kcol/GetCamMoveBG__8dBgWKColFRC13cBgS_PolyInfo.s deleted file mode 100644 index 3d09b502f5..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetCamMoveBG__8dBgWKColFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80082E6C: -/* 80082E6C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082E70 7C 08 02 A6 */ mflr r0 -/* 80082E74 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082E78 A0 84 00 00 */ lhz r4, 0(r4) -/* 80082E7C 38 A1 00 08 */ addi r5, r1, 8 -/* 80082E80 4B FF BC F1 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082E84 80 01 00 10 */ lwz r0, 0x10(r1) -/* 80082E88 54 03 06 3E */ clrlwi r3, r0, 0x18 -/* 80082E8C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082E90 7C 08 03 A6 */ mtlr r0 -/* 80082E94 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082E98 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetExitId__8dBgWKColFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w_kcol/GetExitId__8dBgWKColFRC13cBgS_PolyInfo.s deleted file mode 100644 index 755f3bb3e3..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetExitId__8dBgWKColFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80082A20: -/* 80082A20 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082A24 7C 08 02 A6 */ mflr r0 -/* 80082A28 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082A2C A0 84 00 00 */ lhz r4, 0(r4) -/* 80082A30 38 A1 00 08 */ addi r5, r1, 8 -/* 80082A34 4B FF C1 3D */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082A38 80 01 00 08 */ lwz r0, 8(r1) -/* 80082A3C 54 03 06 BE */ clrlwi r3, r0, 0x1a -/* 80082A40 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082A44 7C 08 03 A6 */ mtlr r0 -/* 80082A48 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082A4C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetGroundCode__8dBgWKColFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w_kcol/GetGroundCode__8dBgWKColFRC13cBgS_PolyInfo.s deleted file mode 100644 index a8ba6158ac..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetGroundCode__8dBgWKColFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80082DE4: -/* 80082DE4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082DE8 7C 08 02 A6 */ mflr r0 -/* 80082DEC 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082DF0 A0 84 00 00 */ lhz r4, 0(r4) -/* 80082DF4 38 A1 00 08 */ addi r5, r1, 8 -/* 80082DF8 4B FF BD 79 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082DFC 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80082E00 54 03 6E FE */ rlwinm r3, r0, 0xd, 0x1b, 0x1f -/* 80082E04 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082E08 7C 08 03 A6 */ mtlr r0 -/* 80082E0C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082E10 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetGrpInf__8dBgWKColCFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w_kcol/GetGrpInf__8dBgWKColCFRC13cBgS_PolyInfo.s deleted file mode 100644 index b48c37bebc..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetGrpInf__8dBgWKColCFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_8007EB30: -/* 8007EB30 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007EB34 7C 08 02 A6 */ mflr r0 -/* 8007EB38 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007EB3C A0 04 00 00 */ lhz r0, 0(r4) -/* 8007EB40 80 83 00 18 */ lwz r4, 0x18(r3) -/* 8007EB44 80 84 00 08 */ lwz r4, 8(r4) -/* 8007EB48 54 00 20 36 */ slwi r0, r0, 4 -/* 8007EB4C 7C 84 02 14 */ add r4, r4, r0 -/* 8007EB50 A0 84 00 0E */ lhz r4, 0xe(r4) -/* 8007EB54 38 63 00 1C */ addi r3, r3, 0x1c -/* 8007EB58 4B FF 55 85 */ bl getGrpCode__6dBgPlcCFi -/* 8007EB5C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007EB60 7C 08 03 A6 */ mtlr r0 -/* 8007EB64 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007EB68 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetGrpRoomIndex__8dBgWKColCFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w_kcol/GetGrpRoomIndex__8dBgWKColCFRC13cBgS_PolyInfo.s deleted file mode 100644 index bd943dbff9..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetGrpRoomIndex__8dBgWKColCFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_800829F0: -/* 800829F0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 800829F4 7C 08 02 A6 */ mflr r0 -/* 800829F8 90 01 00 24 */ stw r0, 0x24(r1) -/* 800829FC A0 84 00 00 */ lhz r4, 0(r4) -/* 80082A00 38 A1 00 08 */ addi r5, r1, 8 -/* 80082A04 4B FF C1 6D */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082A08 80 01 00 18 */ lwz r0, 0x18(r1) -/* 80082A0C 54 03 66 3E */ rlwinm r3, r0, 0xc, 0x18, 0x1f -/* 80082A10 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082A14 7C 08 03 A6 */ mtlr r0 -/* 80082A18 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082A1C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetGrpSoundId__8dBgWKColFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w_kcol/GetGrpSoundId__8dBgWKColFRC13cBgS_PolyInfo.s deleted file mode 100644 index 9dbc1e738e..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetGrpSoundId__8dBgWKColFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80082F5C: -/* 80082F5C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082F60 7C 08 02 A6 */ mflr r0 -/* 80082F64 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082F68 A0 84 00 00 */ lhz r4, 0(r4) -/* 80082F6C 38 A1 00 08 */ addi r5, r1, 8 -/* 80082F70 4B FF BC 01 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082F74 80 01 00 18 */ lwz r0, 0x18(r1) -/* 80082F78 54 03 AE 3E */ rlwinm r3, r0, 0x15, 0x18, 0x1f -/* 80082F7C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082F80 7C 08 03 A6 */ mtlr r0 -/* 80082F84 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082F88 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetHorseNoEntry__8dBgWKColFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w_kcol/GetHorseNoEntry__8dBgWKColFRC13cBgS_PolyInfo.s deleted file mode 100644 index ba6137bf9d..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetHorseNoEntry__8dBgWKColFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80082A80: -/* 80082A80 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082A84 7C 08 02 A6 */ mflr r0 -/* 80082A88 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082A8C A0 84 00 00 */ lhz r4, 0(r4) -/* 80082A90 38 A1 00 08 */ addi r5, r1, 8 -/* 80082A94 4B FF C0 DD */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082A98 80 01 00 08 */ lwz r0, 8(r1) -/* 80082A9C 54 03 5F FE */ rlwinm r3, r0, 0xb, 0x1f, 0x1f -/* 80082AA0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082AA4 7C 08 03 A6 */ mtlr r0 -/* 80082AA8 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082AAC 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetIronBallThrough__8dBgWKColFi.s b/asm/d/bg/d_bg_w_kcol/GetIronBallThrough__8dBgWKColFi.s deleted file mode 100644 index a665ef3093..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetIronBallThrough__8dBgWKColFi.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80082E14: -/* 80082E14 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082E18 7C 08 02 A6 */ mflr r0 -/* 80082E1C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082E20 38 A1 00 08 */ addi r5, r1, 8 -/* 80082E24 4B FF BD 4D */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082E28 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80082E2C 54 03 01 CE */ rlwinm r3, r0, 0, 7, 7 -/* 80082E30 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082E34 7C 08 03 A6 */ mtlr r0 -/* 80082E38 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082E3C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetLinkNo__8dBgWKColFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w_kcol/GetLinkNo__8dBgWKColFRC13cBgS_PolyInfo.s deleted file mode 100644 index e2d016d2fe..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetLinkNo__8dBgWKColFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80082D24: -/* 80082D24 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082D28 7C 08 02 A6 */ mflr r0 -/* 80082D2C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082D30 A0 84 00 00 */ lhz r4, 0(r4) -/* 80082D34 38 A1 00 08 */ addi r5, r1, 8 -/* 80082D38 4B FF BE 39 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082D3C 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80082D40 54 03 06 3E */ clrlwi r3, r0, 0x18 -/* 80082D44 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082D48 7C 08 03 A6 */ mtlr r0 -/* 80082D4C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082D50 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetMagnetCode__8dBgWKColFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w_kcol/GetMagnetCode__8dBgWKColFRC13cBgS_PolyInfo.s deleted file mode 100644 index 379548df9e..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetMagnetCode__8dBgWKColFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80082B0C: -/* 80082B0C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082B10 7C 08 02 A6 */ mflr r0 -/* 80082B14 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082B18 A0 84 00 00 */ lhz r4, 0(r4) -/* 80082B1C 38 A1 00 08 */ addi r5, r1, 8 -/* 80082B20 4B FF C0 51 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082B24 80 01 00 08 */ lwz r0, 8(r1) -/* 80082B28 54 03 27 BE */ rlwinm r3, r0, 4, 0x1e, 0x1f -/* 80082B2C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082B30 7C 08 03 A6 */ mtlr r0 -/* 80082B34 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082B38 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetMonkeyBarsCode__8dBgWKColFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w_kcol/GetMonkeyBarsCode__8dBgWKColFRC13cBgS_PolyInfo.s deleted file mode 100644 index f9742229de..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetMonkeyBarsCode__8dBgWKColFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80082B3C: -/* 80082B3C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082B40 7C 08 02 A6 */ mflr r0 -/* 80082B44 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082B48 A0 84 00 00 */ lhz r4, 0(r4) -/* 80082B4C 38 A1 00 08 */ addi r5, r1, 8 -/* 80082B50 4B FF C0 21 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082B54 80 01 00 08 */ lwz r0, 8(r1) -/* 80082B58 54 03 0F FE */ srwi r3, r0, 0x1f -/* 80082B5C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082B60 7C 08 03 A6 */ mtlr r0 -/* 80082B64 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082B68 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetPolyArrowThrough__8dBgWKColFi.s b/asm/d/bg/d_bg_w_kcol/GetPolyArrowThrough__8dBgWKColFi.s deleted file mode 100644 index 4d14f7ae09..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetPolyArrowThrough__8dBgWKColFi.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80082BF0: -/* 80082BF0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082BF4 7C 08 02 A6 */ mflr r0 -/* 80082BF8 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082BFC 38 A1 00 08 */ addi r5, r1, 8 -/* 80082C00 4B FF BF 71 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082C04 80 01 00 08 */ lwz r0, 8(r1) -/* 80082C08 54 03 03 9C */ rlwinm r3, r0, 0, 0xe, 0xe -/* 80082C0C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082C10 7C 08 03 A6 */ mtlr r0 -/* 80082C14 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082C18 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetPolyAtt0__8dBgWKColFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w_kcol/GetPolyAtt0__8dBgWKColFRC13cBgS_PolyInfo.s deleted file mode 100644 index b58dfa1c81..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetPolyAtt0__8dBgWKColFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80082D84: -/* 80082D84 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082D88 7C 08 02 A6 */ mflr r0 -/* 80082D8C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082D90 A0 84 00 00 */ lhz r4, 0(r4) -/* 80082D94 38 A1 00 08 */ addi r5, r1, 8 -/* 80082D98 4B FF BD D9 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082D9C 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80082DA0 54 03 A7 3E */ rlwinm r3, r0, 0x14, 0x1c, 0x1f -/* 80082DA4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082DA8 7C 08 03 A6 */ mtlr r0 -/* 80082DAC 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082DB0 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetPolyAtt1__8dBgWKColFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w_kcol/GetPolyAtt1__8dBgWKColFRC13cBgS_PolyInfo.s deleted file mode 100644 index 331b8b059d..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetPolyAtt1__8dBgWKColFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80082DB4: -/* 80082DB4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082DB8 7C 08 02 A6 */ mflr r0 -/* 80082DBC 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082DC0 A0 84 00 00 */ lhz r4, 0(r4) -/* 80082DC4 38 A1 00 08 */ addi r5, r1, 8 -/* 80082DC8 4B FF BD A9 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082DCC 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80082DD0 54 03 87 7E */ rlwinm r3, r0, 0x10, 0x1d, 0x1f -/* 80082DD4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082DD8 7C 08 03 A6 */ mtlr r0 -/* 80082DDC 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082DE0 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetPolyBombThrough__8dBgWKColFi.s b/asm/d/bg/d_bg_w_kcol/GetPolyBombThrough__8dBgWKColFi.s deleted file mode 100644 index 2c2549f10b..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetPolyBombThrough__8dBgWKColFi.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80082CA0: -/* 80082CA0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082CA4 7C 08 02 A6 */ mflr r0 -/* 80082CA8 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082CAC 38 A1 00 08 */ addi r5, r1, 8 -/* 80082CB0 4B FF BE C1 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082CB4 80 01 00 08 */ lwz r0, 8(r1) -/* 80082CB8 54 03 02 10 */ rlwinm r3, r0, 0, 8, 8 -/* 80082CBC 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082CC0 7C 08 03 A6 */ mtlr r0 -/* 80082CC4 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082CC8 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetPolyBoomerangThrough__8dBgWKColFi.s b/asm/d/bg/d_bg_w_kcol/GetPolyBoomerangThrough__8dBgWKColFi.s deleted file mode 100644 index 12bf0bf823..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetPolyBoomerangThrough__8dBgWKColFi.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80082C48: -/* 80082C48 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082C4C 7C 08 02 A6 */ mflr r0 -/* 80082C50 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082C54 38 A1 00 08 */ addi r5, r1, 8 -/* 80082C58 4B FF BF 19 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082C5C 80 01 00 08 */ lwz r0, 8(r1) -/* 80082C60 54 03 03 18 */ rlwinm r3, r0, 0, 0xc, 0xc -/* 80082C64 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082C68 7C 08 03 A6 */ mtlr r0 -/* 80082C6C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082C70 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetPolyCamThrough__8dBgWKColFi.s b/asm/d/bg/d_bg_w_kcol/GetPolyCamThrough__8dBgWKColFi.s deleted file mode 100644 index 573819304d..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetPolyCamThrough__8dBgWKColFi.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80082B98: -/* 80082B98 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082B9C 7C 08 02 A6 */ mflr r0 -/* 80082BA0 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082BA4 38 A1 00 08 */ addi r5, r1, 8 -/* 80082BA8 4B FF BF C9 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082BAC 80 01 00 08 */ lwz r0, 8(r1) -/* 80082BB0 54 03 04 20 */ rlwinm r3, r0, 0, 0x10, 0x10 -/* 80082BB4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082BB8 7C 08 03 A6 */ mtlr r0 -/* 80082BBC 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082BC0 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetPolyColor__8dBgWKColFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w_kcol/GetPolyColor__8dBgWKColFRC13cBgS_PolyInfo.s deleted file mode 100644 index 9965b9db6d..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetPolyColor__8dBgWKColFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80082A50: -/* 80082A50 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082A54 7C 08 02 A6 */ mflr r0 -/* 80082A58 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082A5C A0 84 00 00 */ lhz r4, 0(r4) -/* 80082A60 38 A1 00 08 */ addi r5, r1, 8 -/* 80082A64 4B FF C1 0D */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082A68 80 01 00 08 */ lwz r0, 8(r1) -/* 80082A6C 54 03 D6 3E */ rlwinm r3, r0, 0x1a, 0x18, 0x1f -/* 80082A70 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082A74 7C 08 03 A6 */ mtlr r0 -/* 80082A78 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082A7C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetPolyGrpRoomInfId__8dBgWKColFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w_kcol/GetPolyGrpRoomInfId__8dBgWKColFRC13cBgS_PolyInfo.s deleted file mode 100644 index 64aa01e9dc..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetPolyGrpRoomInfId__8dBgWKColFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80082F2C: -/* 80082F2C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082F30 7C 08 02 A6 */ mflr r0 -/* 80082F34 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082F38 A0 84 00 00 */ lhz r4, 0(r4) -/* 80082F3C 38 A1 00 08 */ addi r5, r1, 8 -/* 80082F40 4B FF BC 31 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082F44 80 01 00 18 */ lwz r0, 0x18(r1) -/* 80082F48 54 03 06 3E */ clrlwi r3, r0, 0x18 -/* 80082F4C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082F50 7C 08 03 A6 */ mtlr r0 -/* 80082F54 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082F58 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetPolyHSStick__8dBgWKColFi.s b/asm/d/bg/d_bg_w_kcol/GetPolyHSStick__8dBgWKColFi.s deleted file mode 100644 index a8a9cc6d08..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetPolyHSStick__8dBgWKColFi.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80082C1C: -/* 80082C1C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082C20 7C 08 02 A6 */ mflr r0 -/* 80082C24 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082C28 38 A1 00 08 */ addi r5, r1, 8 -/* 80082C2C 4B FF BF 45 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082C30 80 01 00 08 */ lwz r0, 8(r1) -/* 80082C34 54 03 03 5A */ rlwinm r3, r0, 0, 0xd, 0xd -/* 80082C38 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082C3C 7C 08 03 A6 */ mtlr r0 -/* 80082C40 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082C44 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetPolyLinkThrough__8dBgWKColFi.s b/asm/d/bg/d_bg_w_kcol/GetPolyLinkThrough__8dBgWKColFi.s deleted file mode 100644 index 5a7166fd0e..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetPolyLinkThrough__8dBgWKColFi.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80082BC4: -/* 80082BC4 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082BC8 7C 08 02 A6 */ mflr r0 -/* 80082BCC 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082BD0 38 A1 00 08 */ addi r5, r1, 8 -/* 80082BD4 4B FF BF 9D */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082BD8 80 01 00 08 */ lwz r0, 8(r1) -/* 80082BDC 54 03 03 DE */ rlwinm r3, r0, 0, 0xf, 0xf -/* 80082BE0 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082BE4 7C 08 03 A6 */ mtlr r0 -/* 80082BE8 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082BEC 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetPolyObjThrough__8dBgWKColFi.s b/asm/d/bg/d_bg_w_kcol/GetPolyObjThrough__8dBgWKColFi.s deleted file mode 100644 index 893b932236..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetPolyObjThrough__8dBgWKColFi.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80082B6C: -/* 80082B6C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082B70 7C 08 02 A6 */ mflr r0 -/* 80082B74 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082B78 38 A1 00 08 */ addi r5, r1, 8 -/* 80082B7C 4B FF BF F5 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082B80 80 01 00 08 */ lwz r0, 8(r1) -/* 80082B84 54 03 04 62 */ rlwinm r3, r0, 0, 0x11, 0x11 -/* 80082B88 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082B8C 7C 08 03 A6 */ mtlr r0 -/* 80082B90 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082B94 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetPolyRopeThrough__8dBgWKColFi.s b/asm/d/bg/d_bg_w_kcol/GetPolyRopeThrough__8dBgWKColFi.s deleted file mode 100644 index efb3f9493f..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetPolyRopeThrough__8dBgWKColFi.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80082C74: -/* 80082C74 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082C78 7C 08 02 A6 */ mflr r0 -/* 80082C7C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082C80 38 A1 00 08 */ addi r5, r1, 8 -/* 80082C84 4B FF BE ED */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082C88 80 01 00 08 */ lwz r0, 8(r1) -/* 80082C8C 54 03 02 D6 */ rlwinm r3, r0, 0, 0xb, 0xb -/* 80082C90 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082C94 7C 08 03 A6 */ mtlr r0 -/* 80082C98 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082C9C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetRoomCamId__8dBgWKColFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w_kcol/GetRoomCamId__8dBgWKColFRC13cBgS_PolyInfo.s deleted file mode 100644 index b3c1672128..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetRoomCamId__8dBgWKColFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80082E9C: -/* 80082E9C 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082EA0 7C 08 02 A6 */ mflr r0 -/* 80082EA4 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082EA8 A0 84 00 00 */ lhz r4, 0(r4) -/* 80082EAC 38 A1 00 08 */ addi r5, r1, 8 -/* 80082EB0 4B FF BC C1 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082EB4 80 01 00 10 */ lwz r0, 0x10(r1) -/* 80082EB8 54 03 C6 3E */ rlwinm r3, r0, 0x18, 0x18, 0x1f -/* 80082EBC 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082EC0 7C 08 03 A6 */ mtlr r0 -/* 80082EC4 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082EC8 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetRoomPathId__8dBgWKColFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w_kcol/GetRoomPathId__8dBgWKColFRC13cBgS_PolyInfo.s deleted file mode 100644 index bd097f1c03..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetRoomPathId__8dBgWKColFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80082ECC: -/* 80082ECC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082ED0 7C 08 02 A6 */ mflr r0 -/* 80082ED4 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082ED8 A0 84 00 00 */ lhz r4, 0(r4) -/* 80082EDC 38 A1 00 08 */ addi r5, r1, 8 -/* 80082EE0 4B FF BC 91 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082EE4 80 01 00 10 */ lwz r0, 0x10(r1) -/* 80082EE8 54 03 86 3E */ rlwinm r3, r0, 0x10, 0x18, 0x1f -/* 80082EEC 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082EF0 7C 08 03 A6 */ mtlr r0 -/* 80082EF4 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082EF8 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetRoomPathPntNo__8dBgWKColFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w_kcol/GetRoomPathPntNo__8dBgWKColFRC13cBgS_PolyInfo.s deleted file mode 100644 index 377127f4fe..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetRoomPathPntNo__8dBgWKColFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80082EFC: -/* 80082EFC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082F00 7C 08 02 A6 */ mflr r0 -/* 80082F04 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082F08 A0 84 00 00 */ lhz r4, 0(r4) -/* 80082F0C 38 A1 00 08 */ addi r5, r1, 8 -/* 80082F10 4B FF BC 61 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082F14 80 01 00 10 */ lwz r0, 0x10(r1) -/* 80082F18 54 03 46 3E */ srwi r3, r0, 0x18 -/* 80082F1C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082F20 7C 08 03 A6 */ mtlr r0 -/* 80082F24 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082F28 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetShdwThrough__8dBgWKColFi.s b/asm/d/bg/d_bg_w_kcol/GetShdwThrough__8dBgWKColFi.s deleted file mode 100644 index 707dceac05..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetShdwThrough__8dBgWKColFi.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80082CF8: -/* 80082CF8 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082CFC 7C 08 02 A6 */ mflr r0 -/* 80082D00 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082D04 38 A1 00 08 */ addi r5, r1, 8 -/* 80082D08 4B FF BE 69 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082D0C 80 01 00 08 */ lwz r0, 8(r1) -/* 80082D10 54 03 57 FE */ rlwinm r3, r0, 0xa, 0x1f, 0x1f -/* 80082D14 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082D18 7C 08 03 A6 */ mtlr r0 -/* 80082D1C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082D20 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetSpecialCode__8dBgWKColFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w_kcol/GetSpecialCode__8dBgWKColFRC13cBgS_PolyInfo.s deleted file mode 100644 index 434909aea7..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetSpecialCode__8dBgWKColFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80082AB0: -/* 80082AB0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80082AB4 7C 08 02 A6 */ mflr r0 -/* 80082AB8 90 01 00 14 */ stw r0, 0x14(r1) -/* 80082ABC A0 84 00 00 */ lhz r4, 0(r4) -/* 80082AC0 81 83 00 04 */ lwz r12, 4(r3) -/* 80082AC4 81 8C 00 74 */ lwz r12, 0x74(r12) -/* 80082AC8 7D 89 03 A6 */ mtctr r12 -/* 80082ACC 4E 80 04 21 */ bctrl -/* 80082AD0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80082AD4 7C 08 03 A6 */ mtlr r0 -/* 80082AD8 38 21 00 10 */ addi r1, r1, 0x10 -/* 80082ADC 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetSpecialCode__8dBgWKColFi.s b/asm/d/bg/d_bg_w_kcol/GetSpecialCode__8dBgWKColFi.s deleted file mode 100644 index dbadd226c8..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetSpecialCode__8dBgWKColFi.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80082AE0: -/* 80082AE0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082AE4 7C 08 02 A6 */ mflr r0 -/* 80082AE8 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082AEC 38 A1 00 08 */ addi r5, r1, 8 -/* 80082AF0 4B FF C0 81 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082AF4 80 01 00 08 */ lwz r0, 8(r1) -/* 80082AF8 54 03 47 3E */ rlwinm r3, r0, 8, 0x1c, 0x1f -/* 80082AFC 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082B00 7C 08 03 A6 */ mtlr r0 -/* 80082B04 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082B08 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetTopUnder__8dBgWKColCFPfPf.s b/asm/d/bg/d_bg_w_kcol/GetTopUnder__8dBgWKColCFPfPf.s deleted file mode 100644 index 27a28b2d3b..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetTopUnder__8dBgWKColCFPfPf.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_800829AC: -/* 800829AC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800829B0 80 63 00 18 */ lwz r3, 0x18(r3) -/* 800829B4 C0 03 00 18 */ lfs f0, 0x18(r3) -/* 800829B8 D0 05 00 00 */ stfs f0, 0(r5) -/* 800829BC C0 45 00 00 */ lfs f2, 0(r5) -/* 800829C0 80 03 00 24 */ lwz r0, 0x24(r3) -/* 800829C4 7C 00 00 F8 */ nor r0, r0, r0 -/* 800829C8 C8 22 8D 50 */ lfd f1, lit_6099(r2) -/* 800829CC 90 01 00 0C */ stw r0, 0xc(r1) -/* 800829D0 3C 00 43 30 */ lis r0, 0x4330 -/* 800829D4 90 01 00 08 */ stw r0, 8(r1) -/* 800829D8 C8 01 00 08 */ lfd f0, 8(r1) -/* 800829DC EC 00 08 28 */ fsubs f0, f0, f1 -/* 800829E0 EC 02 00 2A */ fadds f0, f2, f0 -/* 800829E4 D0 04 00 00 */ stfs f0, 0(r4) -/* 800829E8 38 21 00 10 */ addi r1, r1, 0x10 -/* 800829EC 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetTriPla__8dBgWKColCFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w_kcol/GetTriPla__8dBgWKColCFRC13cBgS_PolyInfo.s deleted file mode 100644 index 6190fa78a6..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetTriPla__8dBgWKColCFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8007E894: -/* 8007E894 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007E898 7C 08 02 A6 */ mflr r0 -/* 8007E89C 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007E8A0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8007E8A4 A0 A5 00 00 */ lhz r5, 0(r5) -/* 8007E8A8 48 00 00 19 */ bl GetTriPla__8dBgWKColCFi -/* 8007E8AC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8007E8B0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007E8B4 7C 08 03 A6 */ mtlr r0 -/* 8007E8B8 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007E8BC 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetTriPla__8dBgWKColCFi.s b/asm/d/bg/d_bg_w_kcol/GetTriPla__8dBgWKColCFi.s deleted file mode 100644 index c01200447f..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetTriPla__8dBgWKColCFi.s +++ /dev/null @@ -1,49 +0,0 @@ -lbl_8007E8C0: -/* 8007E8C0 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8007E8C4 7C 08 02 A6 */ mflr r0 -/* 8007E8C8 90 01 00 34 */ stw r0, 0x34(r1) -/* 8007E8CC 39 61 00 30 */ addi r11, r1, 0x30 -/* 8007E8D0 48 2E 39 0D */ bl _savegpr_29 -/* 8007E8D4 7C 7D 1B 78 */ mr r29, r3 -/* 8007E8D8 7C 9E 23 78 */ mr r30, r4 -/* 8007E8DC 80 64 00 18 */ lwz r3, 0x18(r4) -/* 8007E8E0 80 63 00 08 */ lwz r3, 8(r3) -/* 8007E8E4 54 A0 20 36 */ slwi r0, r5, 4 -/* 8007E8E8 7F E3 02 14 */ add r31, r3, r0 -/* 8007E8EC 7F C3 F3 78 */ mr r3, r30 -/* 8007E8F0 7F E4 FB 78 */ mr r4, r31 -/* 8007E8F4 38 A1 00 08 */ addi r5, r1, 8 -/* 8007E8F8 4B FF FF 59 */ bl getTriNrm__8dBgWKColCFP12KC_PrismDataPP3Vec -/* 8007E8FC 80 7E 00 18 */ lwz r3, 0x18(r30) -/* 8007E900 80 63 00 00 */ lwz r3, 0(r3) -/* 8007E904 A0 1F 00 04 */ lhz r0, 4(r31) -/* 8007E908 1C 00 00 0C */ mulli r0, r0, 0xc -/* 8007E90C 7F E3 02 14 */ add r31, r3, r0 -/* 8007E910 80 61 00 08 */ lwz r3, 8(r1) -/* 8007E914 7F E4 FB 78 */ mr r4, r31 -/* 8007E918 48 2C 88 7D */ bl PSVECDotProduct -/* 8007E91C 3C 60 80 3A */ lis r3, __vt__8cM3dGPla@ha /* 0x803A37C0@ha */ -/* 8007E920 38 03 37 C0 */ addi r0, r3, __vt__8cM3dGPla@l /* 0x803A37C0@l */ -/* 8007E924 90 01 00 1C */ stw r0, 0x1c(r1) -/* 8007E928 38 61 00 0C */ addi r3, r1, 0xc -/* 8007E92C 80 81 00 08 */ lwz r4, 8(r1) -/* 8007E930 7F E5 FB 78 */ mr r5, r31 -/* 8007E934 48 1F 0B F9 */ bl SetupNP__8cM3dGPlaFRC3VecRC3Vec -/* 8007E938 3C 60 80 3A */ lis r3, __vt__8cM3dGPla@ha /* 0x803A37C0@ha */ -/* 8007E93C 38 03 37 C0 */ addi r0, r3, __vt__8cM3dGPla@l /* 0x803A37C0@l */ -/* 8007E940 90 1D 00 10 */ stw r0, 0x10(r29) -/* 8007E944 C0 01 00 0C */ lfs f0, 0xc(r1) -/* 8007E948 D0 1D 00 00 */ stfs f0, 0(r29) -/* 8007E94C C0 01 00 10 */ lfs f0, 0x10(r1) -/* 8007E950 D0 1D 00 04 */ stfs f0, 4(r29) -/* 8007E954 C0 01 00 14 */ lfs f0, 0x14(r1) -/* 8007E958 D0 1D 00 08 */ stfs f0, 8(r29) -/* 8007E95C C0 01 00 18 */ lfs f0, 0x18(r1) -/* 8007E960 D0 1D 00 0C */ stfs f0, 0xc(r29) -/* 8007E964 90 01 00 1C */ stw r0, 0x1c(r1) -/* 8007E968 39 61 00 30 */ addi r11, r1, 0x30 -/* 8007E96C 48 2E 38 BD */ bl _restgpr_29 -/* 8007E970 80 01 00 34 */ lwz r0, 0x34(r1) -/* 8007E974 7C 08 03 A6 */ mtlr r0 -/* 8007E978 38 21 00 30 */ addi r1, r1, 0x30 -/* 8007E97C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetTriPnt__8dBgWKColCFRC13cBgS_PolyInfoP4cXyzP4cXyzP4cXyz.s b/asm/d/bg/d_bg_w_kcol/GetTriPnt__8dBgWKColCFRC13cBgS_PolyInfoP4cXyzP4cXyzP4cXyz.s deleted file mode 100644 index b0709b0aa0..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetTriPnt__8dBgWKColCFRC13cBgS_PolyInfoP4cXyzP4cXyzP4cXyz.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8007E980: -/* 8007E980 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007E984 7C 08 02 A6 */ mflr r0 -/* 8007E988 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007E98C A0 84 00 00 */ lhz r4, 0(r4) -/* 8007E990 48 00 00 15 */ bl GetTriPnt__8dBgWKColCFiP3VecP3VecP3Vec -/* 8007E994 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007E998 7C 08 03 A6 */ mtlr r0 -/* 8007E99C 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007E9A0 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetTriPnt__8dBgWKColCFiP3VecP3VecP3Vec.s b/asm/d/bg/d_bg_w_kcol/GetTriPnt__8dBgWKColCFiP3VecP3VecP3Vec.s deleted file mode 100644 index 9221211c24..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetTriPnt__8dBgWKColCFiP3VecP3VecP3Vec.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_8007E9A4: -/* 8007E9A4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007E9A8 7C 08 02 A6 */ mflr r0 -/* 8007E9AC 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007E9B0 81 03 00 18 */ lwz r8, 0x18(r3) -/* 8007E9B4 81 08 00 08 */ lwz r8, 8(r8) -/* 8007E9B8 54 80 20 36 */ slwi r0, r4, 4 -/* 8007E9BC 7C 88 02 14 */ add r4, r8, r0 -/* 8007E9C0 48 00 00 15 */ bl GetTriPnt__8dBgWKColCFPC12KC_PrismDataP3VecP3VecP3Vec -/* 8007E9C4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007E9C8 7C 08 03 A6 */ mtlr r0 -/* 8007E9CC 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007E9D0 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetUnderwaterRoofCode__8dBgWKColFi.s b/asm/d/bg/d_bg_w_kcol/GetUnderwaterRoofCode__8dBgWKColFi.s deleted file mode 100644 index 96cdc529dc..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetUnderwaterRoofCode__8dBgWKColFi.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80082CCC: -/* 80082CCC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082CD0 7C 08 02 A6 */ mflr r0 -/* 80082CD4 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082CD8 38 A1 00 08 */ addi r5, r1, 8 -/* 80082CDC 4B FF BE 95 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082CE0 80 01 00 08 */ lwz r0, 8(r1) -/* 80082CE4 54 03 00 42 */ rlwinm r3, r0, 0, 1, 1 -/* 80082CE8 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082CEC 7C 08 03 A6 */ mtlr r0 -/* 80082CF0 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082CF4 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/GetWallCode__8dBgWKColFRC13cBgS_PolyInfo.s b/asm/d/bg/d_bg_w_kcol/GetWallCode__8dBgWKColFRC13cBgS_PolyInfo.s deleted file mode 100644 index f7cff369d6..0000000000 --- a/asm/d/bg/d_bg_w_kcol/GetWallCode__8dBgWKColFRC13cBgS_PolyInfo.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80082D54: -/* 80082D54 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80082D58 7C 08 02 A6 */ mflr r0 -/* 80082D5C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80082D60 A0 84 00 00 */ lhz r4, 0(r4) -/* 80082D64 38 A1 00 08 */ addi r5, r1, 8 -/* 80082D68 4B FF BE 09 */ bl getPolyCode__8dBgWKColCFiP5dBgPc -/* 80082D6C 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80082D70 54 03 C7 3E */ rlwinm r3, r0, 0x18, 0x1c, 0x1f -/* 80082D74 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80082D78 7C 08 03 A6 */ mtlr r0 -/* 80082D7C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80082D80 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/__ct__8dBgWKColFv.s b/asm/d/bg/d_bg_w_kcol/__ct__8dBgWKColFv.s deleted file mode 100644 index dcb98c06ce..0000000000 --- a/asm/d/bg/d_bg_w_kcol/__ct__8dBgWKColFv.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_8007E6F4: -/* 8007E6F4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007E6F8 7C 08 02 A6 */ mflr r0 -/* 8007E6FC 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007E700 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8007E704 7C 7F 1B 78 */ mr r31, r3 -/* 8007E708 4B FF FE A1 */ bl __ct__9dBgW_BaseFv -/* 8007E70C 3C 60 80 3B */ lis r3, __vt__8dBgWKCol@ha /* 0x803ABDC8@ha */ -/* 8007E710 38 03 BD C8 */ addi r0, r3, __vt__8dBgWKCol@l /* 0x803ABDC8@l */ -/* 8007E714 90 1F 00 04 */ stw r0, 4(r31) -/* 8007E718 38 7F 00 1C */ addi r3, r31, 0x1c -/* 8007E71C 4B FF 59 59 */ bl __ct__6dBgPlcFv -/* 8007E720 3C 60 80 3A */ lis r3, __vt__8cM3dGAab@ha /* 0x803A7218@ha */ -/* 8007E724 38 03 72 18 */ addi r0, r3, __vt__8cM3dGAab@l /* 0x803A7218@l */ -/* 8007E728 90 1F 00 38 */ stw r0, 0x38(r31) -/* 8007E72C 38 00 00 00 */ li r0, 0 -/* 8007E730 90 1F 00 18 */ stw r0, 0x18(r31) -/* 8007E734 7F E3 FB 78 */ mr r3, r31 -/* 8007E738 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8007E73C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007E740 7C 08 03 A6 */ mtlr r0 -/* 8007E744 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007E748 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/create__8dBgWKColFPvPv.s b/asm/d/bg/d_bg_w_kcol/create__8dBgWKColFPvPv.s deleted file mode 100644 index 0be2420ca9..0000000000 --- a/asm/d/bg/d_bg_w_kcol/create__8dBgWKColFPvPv.s +++ /dev/null @@ -1,20 +0,0 @@ -lbl_8007E804: -/* 8007E804 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8007E808 7C 08 02 A6 */ mflr r0 -/* 8007E80C 90 01 00 24 */ stw r0, 0x24(r1) -/* 8007E810 39 61 00 20 */ addi r11, r1, 0x20 -/* 8007E814 48 2E 39 C9 */ bl _savegpr_29 -/* 8007E818 7C 7D 1B 78 */ mr r29, r3 -/* 8007E81C 7C 9E 23 78 */ mr r30, r4 -/* 8007E820 7C BF 2B 78 */ mr r31, r5 -/* 8007E824 4B FF FE 79 */ bl ClrDBgWBase__9dBgW_BaseFv -/* 8007E828 93 DD 00 18 */ stw r30, 0x18(r29) -/* 8007E82C 38 7D 00 1C */ addi r3, r29, 0x1c -/* 8007E830 7F E4 FB 78 */ mr r4, r31 -/* 8007E834 4B FF 58 89 */ bl setBase__6dBgPlcFPv -/* 8007E838 39 61 00 20 */ addi r11, r1, 0x20 -/* 8007E83C 48 2E 39 ED */ bl _restgpr_29 -/* 8007E840 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8007E844 7C 08 03 A6 */ mtlr r0 -/* 8007E848 38 21 00 20 */ addi r1, r1, 0x20 -/* 8007E84C 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/getPolyCode__8dBgWKColCFiP5dBgPc.s b/asm/d/bg/d_bg_w_kcol/getPolyCode__8dBgWKColCFiP5dBgPc.s deleted file mode 100644 index b7985d0248..0000000000 --- a/asm/d/bg/d_bg_w_kcol/getPolyCode__8dBgWKColCFiP5dBgPc.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_8007EB70: -/* 8007EB70 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8007EB74 7C 08 02 A6 */ mflr r0 -/* 8007EB78 90 01 00 24 */ stw r0, 0x24(r1) -/* 8007EB7C 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8007EB80 7C BF 2B 78 */ mr r31, r5 -/* 8007EB84 80 A3 00 18 */ lwz r5, 0x18(r3) -/* 8007EB88 80 A5 00 08 */ lwz r5, 8(r5) -/* 8007EB8C 54 80 20 36 */ slwi r0, r4, 4 -/* 8007EB90 7C 85 02 14 */ add r4, r5, r0 -/* 8007EB94 A0 84 00 0E */ lhz r4, 0xe(r4) -/* 8007EB98 38 A1 00 08 */ addi r5, r1, 8 -/* 8007EB9C 38 63 00 1C */ addi r3, r3, 0x1c -/* 8007EBA0 4B FF 55 25 */ bl getCode__6dBgPlcCFiPP5sBgPc -/* 8007EBA4 7F E3 FB 78 */ mr r3, r31 -/* 8007EBA8 80 81 00 08 */ lwz r4, 8(r1) -/* 8007EBAC 4B FF 54 9D */ bl setCode__5dBgPcFR5sBgPc -/* 8007EBB0 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8007EBB4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8007EBB8 7C 08 03 A6 */ mtlr r0 -/* 8007EBBC 38 21 00 20 */ addi r1, r1, 0x20 -/* 8007EBC0 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_kcol/getTriNrm__8dBgWKColCFP12KC_PrismDataPP3Vec.s b/asm/d/bg/d_bg_w_kcol/getTriNrm__8dBgWKColCFP12KC_PrismDataPP3Vec.s deleted file mode 100644 index 11a11914c8..0000000000 --- a/asm/d/bg/d_bg_w_kcol/getTriNrm__8dBgWKColCFP12KC_PrismDataPP3Vec.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_8007E850: -/* 8007E850 80 63 00 18 */ lwz r3, 0x18(r3) -/* 8007E854 80 63 00 04 */ lwz r3, 4(r3) -/* 8007E858 A0 04 00 06 */ lhz r0, 6(r4) -/* 8007E85C 1C 00 00 0C */ mulli r0, r0, 0xc -/* 8007E860 7C 03 02 14 */ add r0, r3, r0 -/* 8007E864 90 05 00 00 */ stw r0, 0(r5) -/* 8007E868 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_sv/CopyBackVtx__6dBgWSvFv.s b/asm/d/bg/d_bg_w_sv/CopyBackVtx__6dBgWSvFv.s deleted file mode 100644 index 4d53eb37bc..0000000000 --- a/asm/d/bg/d_bg_w_sv/CopyBackVtx__6dBgWSvFv.s +++ /dev/null @@ -1,31 +0,0 @@ -lbl_80083020: -/* 80083020 80 03 00 C0 */ lwz r0, 0xc0(r3) -/* 80083024 28 00 00 00 */ cmplwi r0, 0 -/* 80083028 4D 82 00 20 */ beqlr -/* 8008302C 80 03 00 9C */ lwz r0, 0x9c(r3) -/* 80083030 28 00 00 00 */ cmplwi r0, 0 -/* 80083034 40 82 00 08 */ bne lbl_8008303C -/* 80083038 4E 80 00 20 */ blr -lbl_8008303C: -/* 8008303C 38 E0 00 00 */ li r7, 0 -/* 80083040 38 80 00 00 */ li r4, 0 -/* 80083044 48 00 00 34 */ b lbl_80083078 -lbl_80083048: -/* 80083048 80 03 00 9C */ lwz r0, 0x9c(r3) -/* 8008304C 7C C0 22 14 */ add r6, r0, r4 -/* 80083050 80 03 00 C0 */ lwz r0, 0xc0(r3) -/* 80083054 7C A0 22 14 */ add r5, r0, r4 -/* 80083058 C0 06 00 00 */ lfs f0, 0(r6) -/* 8008305C D0 05 00 00 */ stfs f0, 0(r5) -/* 80083060 C0 06 00 04 */ lfs f0, 4(r6) -/* 80083064 D0 05 00 04 */ stfs f0, 4(r5) -/* 80083068 C0 06 00 08 */ lfs f0, 8(r6) -/* 8008306C D0 05 00 08 */ stfs f0, 8(r5) -/* 80083070 38 E7 00 01 */ addi r7, r7, 1 -/* 80083074 38 84 00 0C */ addi r4, r4, 0xc -lbl_80083078: -/* 80083078 80 A3 00 A0 */ lwz r5, 0xa0(r3) -/* 8008307C 80 05 00 00 */ lwz r0, 0(r5) -/* 80083080 7C 07 00 00 */ cmpw r7, r0 -/* 80083084 41 80 FF C4 */ blt lbl_80083048 -/* 80083088 4E 80 00 20 */ blr diff --git a/asm/d/bg/d_bg_w_sv/Set__6dBgWSvFP6cBgD_tUl.s b/asm/d/bg/d_bg_w_sv/Set__6dBgWSvFP6cBgD_tUl.s deleted file mode 100644 index a549e8336e..0000000000 --- a/asm/d/bg/d_bg_w_sv/Set__6dBgWSvFP6cBgD_tUl.s +++ /dev/null @@ -1,38 +0,0 @@ -lbl_80082F98: -/* 80082F98 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80082F9C 7C 08 02 A6 */ mflr r0 -/* 80082FA0 90 01 00 14 */ stw r0, 0x14(r1) -/* 80082FA4 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80082FA8 93 C1 00 08 */ stw r30, 8(r1) -/* 80082FAC 7C 7E 1B 78 */ mr r30, r3 -/* 80082FB0 7C BF 2B 78 */ mr r31, r5 -/* 80082FB4 38 A0 00 63 */ li r5, 0x63 -/* 80082FB8 38 C0 00 00 */ li r6, 0 -/* 80082FBC 4B FF 6F 7D */ bl Set__4cBgWFP6cBgD_tUlPA3_A4_f -/* 80082FC0 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80082FC4 41 82 00 0C */ beq lbl_80082FD0 -/* 80082FC8 38 60 00 01 */ li r3, 1 -/* 80082FCC 48 00 00 3C */ b lbl_80083008 -lbl_80082FD0: -/* 80082FD0 9B FE 00 C4 */ stb r31, 0xc4(r30) -/* 80082FD4 88 1E 00 C4 */ lbz r0, 0xc4(r30) -/* 80082FD8 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 80082FDC 41 82 00 0C */ beq lbl_80082FE8 -/* 80082FE0 38 60 00 00 */ li r3, 0 -/* 80082FE4 48 00 00 24 */ b lbl_80083008 -lbl_80082FE8: -/* 80082FE8 80 7E 00 A0 */ lwz r3, 0xa0(r30) -/* 80082FEC 80 03 00 00 */ lwz r0, 0(r3) -/* 80082FF0 1C 60 00 0C */ mulli r3, r0, 0xc -/* 80082FF4 48 24 BC D1 */ bl __nwa__FUl -/* 80082FF8 90 7E 00 C0 */ stw r3, 0xc0(r30) -/* 80082FFC 80 1E 00 C0 */ lwz r0, 0xc0(r30) -/* 80083000 7C 00 00 34 */ cntlzw r0, r0 -/* 80083004 54 03 DE 3E */ rlwinm r3, r0, 0x1b, 0x18, 0x1f -lbl_80083008: -/* 80083008 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8008300C 83 C1 00 08 */ lwz r30, 8(r1) -/* 80083010 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80083014 7C 08 03 A6 */ mtlr r0 -/* 80083018 38 21 00 10 */ addi r1, r1, 0x10 -/* 8008301C 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/check__Q27daSus_c6data_cFP10fopAc_ac_c.s b/asm/d/com/d_com_static/check__Q27daSus_c6data_cFP10fopAc_ac_c.s deleted file mode 100644 index fae210cb09..0000000000 --- a/asm/d/com/d_com_static/check__Q27daSus_c6data_cFP10fopAc_ac_c.s +++ /dev/null @@ -1,39 +0,0 @@ -lbl_800310C8: -/* 800310C8 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 800310CC 7C 08 02 A6 */ mflr r0 -/* 800310D0 90 01 00 24 */ stw r0, 0x24(r1) -/* 800310D4 39 61 00 20 */ addi r11, r1, 0x20 -/* 800310D8 48 33 11 05 */ bl _savegpr_29 -/* 800310DC 7C 7D 1B 78 */ mr r29, r3 -/* 800310E0 7C 9E 23 78 */ mr r30, r4 -/* 800310E4 88 03 00 03 */ lbz r0, 3(r3) -/* 800310E8 28 00 00 00 */ cmplwi r0, 0 -/* 800310EC 41 82 00 0C */ beq lbl_800310F8 -/* 800310F0 38 60 00 80 */ li r3, 0x80 -/* 800310F4 48 00 00 44 */ b lbl_80031138 -lbl_800310F8: -/* 800310F8 3B E0 00 80 */ li r31, 0x80 -/* 800310FC 38 9E 04 A8 */ addi r4, r30, 0x4a8 -/* 80031100 4B FF FF 39 */ bl check__Q27daSus_c6data_cFRC4cXyz -/* 80031104 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80031108 41 82 00 0C */ beq lbl_80031114 -/* 8003110C 63 E0 00 01 */ ori r0, r31, 1 -/* 80031110 54 1F 06 3E */ clrlwi r31, r0, 0x18 -lbl_80031114: -/* 80031114 7F A3 EB 78 */ mr r3, r29 -/* 80031118 38 9E 04 D0 */ addi r4, r30, 0x4d0 -/* 8003111C 4B FF FF 1D */ bl check__Q27daSus_c6data_cFRC4cXyz -/* 80031120 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80031124 41 82 00 10 */ beq lbl_80031134 -/* 80031128 63 E0 00 02 */ ori r0, r31, 2 -/* 8003112C 54 03 06 3E */ clrlwi r3, r0, 0x18 -/* 80031130 48 00 00 08 */ b lbl_80031138 -lbl_80031134: -/* 80031134 7F E3 FB 78 */ mr r3, r31 -lbl_80031138: -/* 80031138 39 61 00 20 */ addi r11, r1, 0x20 -/* 8003113C 48 33 10 ED */ bl _restgpr_29 -/* 80031140 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80031144 7C 08 03 A6 */ mtlr r0 -/* 80031148 38 21 00 20 */ addi r1, r1, 0x20 -/* 8003114C 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/check__Q27daSus_c6data_cFRC4cXyz.s b/asm/d/com/d_com_static/check__Q27daSus_c6data_cFRC4cXyz.s deleted file mode 100644 index cf3c57d306..0000000000 --- a/asm/d/com/d_com_static/check__Q27daSus_c6data_cFRC4cXyz.s +++ /dev/null @@ -1,39 +0,0 @@ -lbl_80031038: -/* 80031038 88 03 00 03 */ lbz r0, 3(r3) -/* 8003103C 28 00 00 00 */ cmplwi r0, 0 -/* 80031040 41 82 00 0C */ beq lbl_8003104C -/* 80031044 38 60 00 00 */ li r3, 0 -/* 80031048 4E 80 00 20 */ blr -lbl_8003104C: -/* 8003104C C0 03 00 08 */ lfs f0, 8(r3) -/* 80031050 C0 24 00 00 */ lfs f1, 0(r4) -/* 80031054 FC 00 08 40 */ fcmpo cr0, f0, f1 -/* 80031058 4C 40 13 82 */ cror 2, 0, 2 -/* 8003105C 40 82 00 64 */ bne lbl_800310C0 -/* 80031060 C0 03 00 14 */ lfs f0, 0x14(r3) -/* 80031064 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 80031068 4C 40 13 82 */ cror 2, 0, 2 -/* 8003106C 40 82 00 54 */ bne lbl_800310C0 -/* 80031070 C0 03 00 0C */ lfs f0, 0xc(r3) -/* 80031074 C0 24 00 04 */ lfs f1, 4(r4) -/* 80031078 FC 00 08 40 */ fcmpo cr0, f0, f1 -/* 8003107C 4C 40 13 82 */ cror 2, 0, 2 -/* 80031080 40 82 00 40 */ bne lbl_800310C0 -/* 80031084 C0 03 00 18 */ lfs f0, 0x18(r3) -/* 80031088 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 8003108C 4C 40 13 82 */ cror 2, 0, 2 -/* 80031090 40 82 00 30 */ bne lbl_800310C0 -/* 80031094 C0 03 00 10 */ lfs f0, 0x10(r3) -/* 80031098 C0 24 00 08 */ lfs f1, 8(r4) -/* 8003109C FC 00 08 40 */ fcmpo cr0, f0, f1 -/* 800310A0 4C 40 13 82 */ cror 2, 0, 2 -/* 800310A4 40 82 00 1C */ bne lbl_800310C0 -/* 800310A8 C0 03 00 1C */ lfs f0, 0x1c(r3) -/* 800310AC FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 800310B0 4C 40 13 82 */ cror 2, 0, 2 -/* 800310B4 40 82 00 0C */ bne lbl_800310C0 -/* 800310B8 38 60 00 01 */ li r3, 1 -/* 800310BC 4E 80 00 20 */ blr -lbl_800310C0: -/* 800310C0 38 60 00 00 */ li r3, 0 -/* 800310C4 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/daMP_c_Get_MovieRestFrame__6daMP_cFv.s b/asm/d/com/d_com_static/daMP_c_Get_MovieRestFrame__6daMP_cFv.s deleted file mode 100644 index 645912b8bc..0000000000 --- a/asm/d/com/d_com_static/daMP_c_Get_MovieRestFrame__6daMP_cFv.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80031A78: -/* 80031A78 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80031A7C 7C 08 02 A6 */ mflr r0 -/* 80031A80 90 01 00 14 */ stw r0, 0x14(r1) -/* 80031A84 80 6D 88 38 */ lwz r3, m_myObj__6daMP_c(r13) -/* 80031A88 81 83 05 68 */ lwz r12, 0x568(r3) -/* 80031A8C 7D 89 03 A6 */ mtctr r12 -/* 80031A90 4E 80 04 21 */ bctrl -/* 80031A94 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80031A98 7C 08 03 A6 */ mtlr r0 -/* 80031A9C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80031AA0 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/daMP_c_Set_PercentMovieVolume__6daMP_cFf.s b/asm/d/com/d_com_static/daMP_c_Set_PercentMovieVolume__6daMP_cFf.s deleted file mode 100644 index f372d6c887..0000000000 --- a/asm/d/com/d_com_static/daMP_c_Set_PercentMovieVolume__6daMP_cFf.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80031AA4: -/* 80031AA4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80031AA8 7C 08 02 A6 */ mflr r0 -/* 80031AAC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80031AB0 80 6D 88 38 */ lwz r3, m_myObj__6daMP_c(r13) -/* 80031AB4 81 83 05 6C */ lwz r12, 0x56c(r3) -/* 80031AB8 7D 89 03 A6 */ mtctr r12 -/* 80031ABC 4E 80 04 21 */ bctrl -/* 80031AC0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80031AC4 7C 08 03 A6 */ mtlr r0 -/* 80031AC8 38 21 00 10 */ addi r1, r1, 0x10 -/* 80031ACC 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/daMP_c_THPPlayerPause__6daMP_cFv.s b/asm/d/com/d_com_static/daMP_c_THPPlayerPause__6daMP_cFv.s deleted file mode 100644 index 0a548689c6..0000000000 --- a/asm/d/com/d_com_static/daMP_c_THPPlayerPause__6daMP_cFv.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80031B24: -/* 80031B24 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80031B28 7C 08 02 A6 */ mflr r0 -/* 80031B2C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80031B30 80 6D 88 38 */ lwz r3, m_myObj__6daMP_c(r13) -/* 80031B34 81 83 05 7C */ lwz r12, 0x57c(r3) -/* 80031B38 7D 89 03 A6 */ mtctr r12 -/* 80031B3C 4E 80 04 21 */ bctrl -/* 80031B40 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80031B44 7C 08 03 A6 */ mtlr r0 -/* 80031B48 38 21 00 10 */ addi r1, r1, 0x10 -/* 80031B4C 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/daMP_c_THPPlayerPlay__6daMP_cFv.s b/asm/d/com/d_com_static/daMP_c_THPPlayerPlay__6daMP_cFv.s deleted file mode 100644 index 01fcecf6d4..0000000000 --- a/asm/d/com/d_com_static/daMP_c_THPPlayerPlay__6daMP_cFv.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_80031AD0: -/* 80031AD0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80031AD4 7C 08 02 A6 */ mflr r0 -/* 80031AD8 90 01 00 14 */ stw r0, 0x14(r1) -/* 80031ADC 80 6D 88 38 */ lwz r3, m_myObj__6daMP_c(r13) -/* 80031AE0 28 03 00 00 */ cmplwi r3, 0 -/* 80031AE4 40 82 00 18 */ bne lbl_80031AFC -/* 80031AE8 80 0D 88 BC */ lwz r0, m_status__7dDemo_c(r13) -/* 80031AEC 60 00 00 01 */ ori r0, r0, 1 -/* 80031AF0 90 0D 88 BC */ stw r0, m_status__7dDemo_c(r13) -/* 80031AF4 38 60 00 00 */ li r3, 0 -/* 80031AF8 48 00 00 1C */ b lbl_80031B14 -lbl_80031AFC: -/* 80031AFC 80 0D 88 BC */ lwz r0, m_status__7dDemo_c(r13) -/* 80031B00 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e -/* 80031B04 90 0D 88 BC */ stw r0, m_status__7dDemo_c(r13) -/* 80031B08 81 83 05 74 */ lwz r12, 0x574(r3) -/* 80031B0C 7D 89 03 A6 */ mtctr r12 -/* 80031B10 4E 80 04 21 */ bctrl -lbl_80031B14: -/* 80031B14 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80031B18 7C 08 03 A6 */ mtlr r0 -/* 80031B1C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80031B20 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/daNpcKakashi_chkSwdTutorialStage__Fv.s b/asm/d/com/d_com_static/daNpcKakashi_chkSwdTutorialStage__Fv.s deleted file mode 100644 index e972025345..0000000000 --- a/asm/d/com/d_com_static/daNpcKakashi_chkSwdTutorialStage__Fv.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_80031648: -/* 80031648 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8003164C 7C 08 02 A6 */ mflr r0 -/* 80031650 90 01 00 14 */ stw r0, 0x14(r1) -/* 80031654 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80031658 3B E0 00 00 */ li r31, 0 -/* 8003165C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80031660 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80031664 38 63 4E 00 */ addi r3, r3, 0x4e00 -/* 80031668 3C 80 80 38 */ lis r4, d_com_d_com_static__stringBase0@ha /* 0x803790B0@ha */ -/* 8003166C 38 84 90 B0 */ addi r4, r4, d_com_d_com_static__stringBase0@l /* 0x803790B0@l */ -/* 80031670 48 33 73 25 */ bl strcmp -/* 80031674 2C 03 00 00 */ cmpwi r3, 0 -/* 80031678 40 82 00 18 */ bne lbl_80031690 -/* 8003167C 38 60 00 00 */ li r3, 0 -/* 80031680 4B FF B2 FD */ bl getLayerNo__14dComIfG_play_cFi -/* 80031684 2C 03 00 08 */ cmpwi r3, 8 -/* 80031688 40 82 00 08 */ bne lbl_80031690 -/* 8003168C 3B E0 00 01 */ li r31, 1 -lbl_80031690: -/* 80031690 57 E3 06 3E */ clrlwi r3, r31, 0x18 -/* 80031694 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80031698 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8003169C 7C 08 03 A6 */ mtlr r0 -/* 800316A0 38 21 00 10 */ addi r1, r1, 0x10 -/* 800316A4 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/daNpcKakashi_clrSuccessCount__Fv.s b/asm/d/com/d_com_static/daNpcKakashi_clrSuccessCount__Fv.s deleted file mode 100644 index f535c3c899..0000000000 --- a/asm/d/com/d_com_static/daNpcKakashi_clrSuccessCount__Fv.s +++ /dev/null @@ -1,15 +0,0 @@ -lbl_80031838: -/* 80031838 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8003183C 7C 08 02 A6 */ mflr r0 -/* 80031840 90 01 00 14 */ stw r0, 0x14(r1) -/* 80031844 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80031848 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8003184C 38 63 0D D8 */ addi r3, r3, 0xdd8 -/* 80031850 3C 80 00 01 */ lis r4, 0x0001 /* 0x0000FEFF@ha */ -/* 80031854 38 84 FE FF */ addi r4, r4, 0xFEFF /* 0x0000FEFF@l */ -/* 80031858 38 A0 00 00 */ li r5, 0 -/* 8003185C 48 00 31 85 */ bl setEventReg__11dSv_event_cFUsUc -/* 80031860 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80031864 7C 08 03 A6 */ mtlr r0 -/* 80031868 38 21 00 10 */ addi r1, r1, 0x10 -/* 8003186C 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/daNpcKakashi_getSuccessCount__Fv.s b/asm/d/com/d_com_static/daNpcKakashi_getSuccessCount__Fv.s deleted file mode 100644 index 143d8de802..0000000000 --- a/asm/d/com/d_com_static/daNpcKakashi_getSuccessCount__Fv.s +++ /dev/null @@ -1,15 +0,0 @@ -lbl_800317A4: -/* 800317A4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800317A8 7C 08 02 A6 */ mflr r0 -/* 800317AC 90 01 00 14 */ stw r0, 0x14(r1) -/* 800317B0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 800317B4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 800317B8 38 63 0D D8 */ addi r3, r3, 0xdd8 -/* 800317BC 3C 80 00 01 */ lis r4, 0x0001 /* 0x0000FEFF@ha */ -/* 800317C0 38 84 FE FF */ addi r4, r4, 0xFEFF /* 0x0000FEFF@l */ -/* 800317C4 48 00 32 41 */ bl getEventReg__11dSv_event_cCFUs -/* 800317C8 54 63 06 3E */ clrlwi r3, r3, 0x18 -/* 800317CC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800317D0 7C 08 03 A6 */ mtlr r0 -/* 800317D4 38 21 00 10 */ addi r1, r1, 0x10 -/* 800317D8 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/daNpcKakashi_getSwdTutorialResult__Fv.s b/asm/d/com/d_com_static/daNpcKakashi_getSwdTutorialResult__Fv.s deleted file mode 100644 index 00bd1d9772..0000000000 --- a/asm/d/com/d_com_static/daNpcKakashi_getSwdTutorialResult__Fv.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_80031718: -/* 80031718 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8003171C 7C 08 02 A6 */ mflr r0 -/* 80031720 90 01 00 14 */ stw r0, 0x14(r1) -/* 80031724 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80031728 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8003172C 38 63 0D D8 */ addi r3, r3, 0xdd8 -/* 80031730 38 80 00 40 */ li r4, 0x40 -/* 80031734 48 00 32 89 */ bl isEventBit__11dSv_event_cCFUs -/* 80031738 30 03 FF FF */ addic r0, r3, -1 -/* 8003173C 7C 00 19 10 */ subfe r0, r0, r3 -/* 80031740 54 03 06 3E */ clrlwi r3, r0, 0x18 -/* 80031744 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80031748 7C 08 03 A6 */ mtlr r0 -/* 8003174C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80031750 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/daNpcKakashi_getSwdTutorialStep__Fv.s b/asm/d/com/d_com_static/daNpcKakashi_getSwdTutorialStep__Fv.s deleted file mode 100644 index 4c5c98f161..0000000000 --- a/asm/d/com/d_com_static/daNpcKakashi_getSwdTutorialStep__Fv.s +++ /dev/null @@ -1,15 +0,0 @@ -lbl_800316E0: -/* 800316E0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800316E4 7C 08 02 A6 */ mflr r0 -/* 800316E8 90 01 00 14 */ stw r0, 0x14(r1) -/* 800316EC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 800316F0 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 800316F4 38 63 0D D8 */ addi r3, r3, 0xdd8 -/* 800316F8 3C 80 00 01 */ lis r4, 0x0001 /* 0x0000FF0F@ha */ -/* 800316FC 38 84 FF 0F */ addi r4, r4, 0xFF0F /* 0x0000FF0F@l */ -/* 80031700 48 00 33 05 */ bl getEventReg__11dSv_event_cCFUs -/* 80031704 54 63 06 3E */ clrlwi r3, r3, 0x18 -/* 80031708 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8003170C 7C 08 03 A6 */ mtlr r0 -/* 80031710 38 21 00 10 */ addi r1, r1, 0x10 -/* 80031714 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/daNpcKakashi_incSuccessCount__Fv.s b/asm/d/com/d_com_static/daNpcKakashi_incSuccessCount__Fv.s deleted file mode 100644 index 890ab0effd..0000000000 --- a/asm/d/com/d_com_static/daNpcKakashi_incSuccessCount__Fv.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_800317DC: -/* 800317DC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800317E0 7C 08 02 A6 */ mflr r0 -/* 800317E4 90 01 00 14 */ stw r0, 0x14(r1) -/* 800317E8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800317EC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 800317F0 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 800317F4 3B E3 0D D8 */ addi r31, r3, 0xdd8 -/* 800317F8 7F E3 FB 78 */ mr r3, r31 -/* 800317FC 3C 80 00 01 */ lis r4, 0x0001 /* 0x0000FEFF@ha */ -/* 80031800 38 84 FE FF */ addi r4, r4, 0xFEFF /* 0x0000FEFF@l */ -/* 80031804 48 00 32 01 */ bl getEventReg__11dSv_event_cCFUs -/* 80031808 54 65 06 3E */ clrlwi r5, r3, 0x18 -/* 8003180C 7F E3 FB 78 */ mr r3, r31 -/* 80031810 3C 80 00 01 */ lis r4, 0x0001 /* 0x0000FEFF@ha */ -/* 80031814 38 84 FE FF */ addi r4, r4, 0xFEFF /* 0x0000FEFF@l */ -/* 80031818 38 05 00 01 */ addi r0, r5, 1 -/* 8003181C 54 05 06 3E */ clrlwi r5, r0, 0x18 -/* 80031820 48 00 31 C1 */ bl setEventReg__11dSv_event_cFUsUc -/* 80031824 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80031828 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8003182C 7C 08 03 A6 */ mtlr r0 -/* 80031830 38 21 00 10 */ addi r1, r1, 0x10 -/* 80031834 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/daNpcKakashi_setSwdTutorialResult__Fb.s b/asm/d/com/d_com_static/daNpcKakashi_setSwdTutorialResult__Fb.s deleted file mode 100644 index ecf8c7f415..0000000000 --- a/asm/d/com/d_com_static/daNpcKakashi_setSwdTutorialResult__Fb.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_80031754: -/* 80031754 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80031758 7C 08 02 A6 */ mflr r0 -/* 8003175C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80031760 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80031764 41 82 00 1C */ beq lbl_80031780 -/* 80031768 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8003176C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80031770 38 63 0D D8 */ addi r3, r3, 0xdd8 -/* 80031774 38 80 00 40 */ li r4, 0x40 -/* 80031778 48 00 32 15 */ bl onEventBit__11dSv_event_cFUs -/* 8003177C 48 00 00 18 */ b lbl_80031794 -lbl_80031780: -/* 80031780 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80031784 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80031788 38 63 0D D8 */ addi r3, r3, 0xdd8 -/* 8003178C 38 80 00 40 */ li r4, 0x40 -/* 80031790 48 00 32 15 */ bl offEventBit__11dSv_event_cFUs -lbl_80031794: -/* 80031794 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80031798 7C 08 03 A6 */ mtlr r0 -/* 8003179C 38 21 00 10 */ addi r1, r1, 0x10 -/* 800317A0 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/daNpcKakashi_setSwdTutorialStep__FUc.s b/asm/d/com/d_com_static/daNpcKakashi_setSwdTutorialStep__FUc.s deleted file mode 100644 index 2819944c33..0000000000 --- a/asm/d/com/d_com_static/daNpcKakashi_setSwdTutorialStep__FUc.s +++ /dev/null @@ -1,15 +0,0 @@ -lbl_800316A8: -/* 800316A8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800316AC 7C 08 02 A6 */ mflr r0 -/* 800316B0 90 01 00 14 */ stw r0, 0x14(r1) -/* 800316B4 7C 65 1B 78 */ mr r5, r3 -/* 800316B8 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 800316BC 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 800316C0 38 63 0D D8 */ addi r3, r3, 0xdd8 -/* 800316C4 3C 80 00 01 */ lis r4, 0x0001 /* 0x0000FF0F@ha */ -/* 800316C8 38 84 FF 0F */ addi r4, r4, 0xFF0F /* 0x0000FF0F@l */ -/* 800316CC 48 00 33 15 */ bl setEventReg__11dSv_event_cFUsUc -/* 800316D0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800316D4 7C 08 03 A6 */ mtlr r0 -/* 800316D8 38 21 00 10 */ addi r1, r1, 0x10 -/* 800316DC 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/daNpcMsg_setEvtNum__FUc.s b/asm/d/com/d_com_static/daNpcMsg_setEvtNum__FUc.s deleted file mode 100644 index 19b6cfdfe5..0000000000 --- a/asm/d/com/d_com_static/daNpcMsg_setEvtNum__FUc.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_8003160C: -/* 8003160C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80031610 7C 08 02 A6 */ mflr r0 -/* 80031614 90 01 00 14 */ stw r0, 0x14(r1) -/* 80031618 7C 65 1B 78 */ mr r5, r3 -/* 8003161C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80031620 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80031624 38 63 0D D8 */ addi r3, r3, 0xdd8 -/* 80031628 3C 80 00 01 */ lis r4, 0x0001 /* 0x0000FDFF@ha */ -/* 8003162C 38 84 FD FF */ addi r4, r4, 0xFDFF /* 0x0000FDFF@l */ -/* 80031630 48 00 33 B1 */ bl setEventReg__11dSv_event_cFUsUc -/* 80031634 38 60 00 01 */ li r3, 1 -/* 80031638 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8003163C 7C 08 03 A6 */ mtlr r0 -/* 80031640 38 21 00 10 */ addi r1, r1, 0x10 -/* 80031644 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/execute__Q27daSus_c6data_cFv.s b/asm/d/com/d_com_static/execute__Q27daSus_c6data_cFv.s deleted file mode 100644 index c669b16cab..0000000000 --- a/asm/d/com/d_com_static/execute__Q27daSus_c6data_cFv.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_80031150: -/* 80031150 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80031154 7C 08 02 A6 */ mflr r0 -/* 80031158 90 01 00 14 */ stw r0, 0x14(r1) -/* 8003115C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80031160 7C 7F 1B 78 */ mr r31, r3 -/* 80031164 4B FF FE 69 */ bl isSwitch__Q27daSus_c6data_cFv -/* 80031168 54 64 06 3E */ clrlwi r4, r3, 0x18 -/* 8003116C 88 1F 00 03 */ lbz r0, 3(r31) -/* 80031170 7C 04 00 40 */ cmplw r4, r0 -/* 80031174 41 82 00 08 */ beq lbl_8003117C -/* 80031178 98 7F 00 03 */ stb r3, 3(r31) -lbl_8003117C: -/* 8003117C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80031180 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80031184 7C 08 03 A6 */ mtlr r0 -/* 80031188 38 21 00 10 */ addi r1, r1, 0x10 -/* 8003118C 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/getArcName__12daSetBgObj_cFP10fopAc_ac_c.s b/asm/d/com/d_com_static/getArcName__12daSetBgObj_cFP10fopAc_ac_c.s deleted file mode 100644 index 15c26b25b2..0000000000 --- a/asm/d/com/d_com_static/getArcName__12daSetBgObj_cFP10fopAc_ac_c.s +++ /dev/null @@ -1,18 +0,0 @@ -lbl_80031870: -/* 80031870 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80031874 7C 08 02 A6 */ mflr r0 -/* 80031878 90 01 00 14 */ stw r0, 0x14(r1) -/* 8003187C 7C 65 1B 78 */ mr r5, r3 -/* 80031880 38 6D 88 1C */ la r3, arcName(r13) /* 80450D9C-_SDA_BASE_ */ -/* 80031884 3C 80 80 38 */ lis r4, d_com_d_com_static__stringBase0@ha /* 0x803790B0@ha */ -/* 80031888 38 84 90 B0 */ addi r4, r4, d_com_d_com_static__stringBase0@l /* 0x803790B0@l */ -/* 8003188C 38 84 00 08 */ addi r4, r4, 8 -/* 80031890 80 05 00 B0 */ lwz r0, 0xb0(r5) -/* 80031894 54 05 04 3E */ clrlwi r5, r0, 0x10 -/* 80031898 4C C6 31 82 */ crclr 6 -/* 8003189C 48 33 4C 41 */ bl sprintf -/* 800318A0 38 6D 88 1C */ la r3, arcName(r13) /* 80450D9C-_SDA_BASE_ */ -/* 800318A4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800318A8 7C 08 03 A6 */ mtlr r0 -/* 800318AC 38 21 00 10 */ addi r1, r1, 0x10 -/* 800318B0 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/getPlayerNo__11daTagMist_cFv.s b/asm/d/com/d_com_static/getPlayerNo__11daTagMist_cFv.s deleted file mode 100644 index 5b8bf7d38b..0000000000 --- a/asm/d/com/d_com_static/getPlayerNo__11daTagMist_cFv.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_80031CF0: -/* 80031CF0 88 6D 88 40 */ lbz r3, struct_80450DC0+0x0(r13) -/* 80031CF4 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/isSwitch__Q27daSus_c6data_cFv.s b/asm/d/com/d_com_static/isSwitch__Q27daSus_c6data_cFv.s deleted file mode 100644 index 5a5257b8e4..0000000000 --- a/asm/d/com/d_com_static/isSwitch__Q27daSus_c6data_cFv.s +++ /dev/null @@ -1,30 +0,0 @@ -lbl_80030FCC: -/* 80030FCC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80030FD0 7C 08 02 A6 */ mflr r0 -/* 80030FD4 90 01 00 14 */ stw r0, 0x14(r1) -/* 80030FD8 7C 65 1B 78 */ mr r5, r3 -/* 80030FDC 88 03 00 01 */ lbz r0, 1(r3) -/* 80030FE0 54 00 07 FF */ clrlwi. r0, r0, 0x1f -/* 80030FE4 41 82 00 24 */ beq lbl_80031008 -/* 80030FE8 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80030FEC 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80030FF0 88 85 00 02 */ lbz r4, 2(r5) -/* 80030FF4 88 A5 00 00 */ lbz r5, 0(r5) -/* 80030FF8 7C A5 07 74 */ extsb r5, r5 -/* 80030FFC 48 00 43 65 */ bl isSwitch__10dSv_info_cCFii -/* 80031000 54 63 06 3E */ clrlwi r3, r3, 0x18 -/* 80031004 48 00 00 24 */ b lbl_80031028 -lbl_80031008: -/* 80031008 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 8003100C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80031010 88 85 00 02 */ lbz r4, 2(r5) -/* 80031014 88 A5 00 00 */ lbz r5, 0(r5) -/* 80031018 7C A5 07 74 */ extsb r5, r5 -/* 8003101C 48 00 43 45 */ bl isSwitch__10dSv_info_cCFii -/* 80031020 7C 60 00 34 */ cntlzw r0, r3 -/* 80031024 54 03 DE 3E */ rlwinm r3, r0, 0x1b, 0x18, 0x1f -lbl_80031028: -/* 80031028 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8003102C 7C 08 03 A6 */ mtlr r0 -/* 80031030 38 21 00 10 */ addi r1, r1, 0x10 -/* 80031034 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/newData__7daSus_cFScRC4cXyzRC4cXyzUcUcUc.s b/asm/d/com/d_com_static/newData__7daSus_cFScRC4cXyzRC4cXyzUcUcUc.s index ae8464a9aa..7b3e4cec22 100644 --- a/asm/d/com/d_com_static/newData__7daSus_cFScRC4cXyzRC4cXyzUcUcUc.s +++ b/asm/d/com/d_com_static/newData__7daSus_cFScRC4cXyzRC4cXyzUcUcUc.s @@ -10,7 +10,7 @@ lbl_80031248: /* 80031268 7C CA 33 78 */ mr r10, r6 /* 8003126C 7C E0 3B 78 */ mr r0, r7 /* 80031270 7D 09 43 78 */ mr r9, r8 -/* 80031274 A8 AD 88 0A */ lha r5, struct_80450D88+0x2(r13) +/* 80031274 A8 AD 88 0A */ lha r5, m_count__9daArrow_c+0x2(r13) /* 80031278 1C 85 00 24 */ mulli r4, r5, 0x24 /* 8003127C 3C 60 80 42 */ lis r3, mData__7daSus_c@ha /* 0x80423FFC@ha */ /* 80031280 38 63 3F FC */ addi r3, r3, mData__7daSus_c@l /* 0x80423FFC@l */ @@ -42,7 +42,7 @@ lbl_80031290: /* 800312E4 7C 03 00 50 */ subf r0, r3, r0 /* 800312E8 54 00 28 3E */ rotlwi r0, r0, 5 /* 800312EC 7C 00 1A 14 */ add r0, r0, r3 -/* 800312F0 B0 0D 88 0A */ sth r0, struct_80450D88+0x2(r13) +/* 800312F0 B0 0D 88 0A */ sth r0, m_count__9daArrow_c+0x2(r13) /* 800312F4 38 60 00 01 */ li r3, 1 /* 800312F8 48 00 00 AC */ b lbl_800313A4 lbl_800312FC: @@ -81,7 +81,7 @@ lbl_80031320: /* 80031374 7C 03 00 50 */ subf r0, r3, r0 /* 80031378 54 00 28 3E */ rotlwi r0, r0, 5 /* 8003137C 7C 00 1A 14 */ add r0, r0, r3 -/* 80031380 B0 0D 88 0A */ sth r0, struct_80450D88+0x2(r13) +/* 80031380 B0 0D 88 0A */ sth r0, m_count__9daArrow_c+0x2(r13) /* 80031384 38 60 00 01 */ li r3, 1 /* 80031388 48 00 00 1C */ b lbl_800313A4 lbl_8003138C: diff --git a/asm/d/com/d_com_static/reset__Q27daSus_c6data_cFv.s b/asm/d/com/d_com_static/reset__Q27daSus_c6data_cFv.s deleted file mode 100644 index 83d4621e90..0000000000 --- a/asm/d/com/d_com_static/reset__Q27daSus_c6data_cFv.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_80030FBC: -/* 80030FBC 38 00 FF FF */ li r0, -1 -/* 80030FC0 98 03 00 00 */ stb r0, 0(r3) -/* 80030FC4 80 63 00 20 */ lwz r3, 0x20(r3) -/* 80030FC8 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/reset__Q27daSus_c6room_cFv.s b/asm/d/com/d_com_static/reset__Q27daSus_c6room_cFv.s deleted file mode 100644 index 495b213040..0000000000 --- a/asm/d/com/d_com_static/reset__Q27daSus_c6room_cFv.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_800311FC: -/* 800311FC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80031200 7C 08 02 A6 */ mflr r0 -/* 80031204 90 01 00 14 */ stw r0, 0x14(r1) -/* 80031208 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8003120C 7C 7F 1B 78 */ mr r31, r3 -/* 80031210 48 00 00 0C */ b lbl_8003121C -lbl_80031214: -/* 80031214 4B FF FD A9 */ bl reset__Q27daSus_c6data_cFv -/* 80031218 90 7F 00 00 */ stw r3, 0(r31) -lbl_8003121C: -/* 8003121C 80 7F 00 00 */ lwz r3, 0(r31) -/* 80031220 28 03 00 00 */ cmplwi r3, 0 -/* 80031224 41 82 00 10 */ beq lbl_80031234 -/* 80031228 88 03 00 04 */ lbz r0, 4(r3) -/* 8003122C 28 00 00 00 */ cmplwi r0, 0 -/* 80031230 41 82 FF E4 */ beq lbl_80031214 -lbl_80031234: -/* 80031234 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80031238 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8003123C 7C 08 03 A6 */ mtlr r0 -/* 80031240 38 21 00 10 */ addi r1, r1, 0x10 -/* 80031244 4E 80 00 20 */ blr diff --git a/asm/d/com/d_com_static/set__Q27daSus_c6data_cFScRC4cXyzRC4cXyzUcUcUc.s b/asm/d/com/d_com_static/set__Q27daSus_c6data_cFScRC4cXyzRC4cXyzUcUcUc.s deleted file mode 100644 index a40f753641..0000000000 --- a/asm/d/com/d_com_static/set__Q27daSus_c6data_cFScRC4cXyzRC4cXyzUcUcUc.s +++ /dev/null @@ -1,43 +0,0 @@ -lbl_80030F14: -/* 80030F14 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80030F18 7C 08 02 A6 */ mflr r0 -/* 80030F1C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80030F20 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80030F24 93 C1 00 08 */ stw r30, 8(r1) -/* 80030F28 7C 7E 1B 78 */ mr r30, r3 -/* 80030F2C 7D 3F 4B 78 */ mr r31, r9 -/* 80030F30 98 83 00 00 */ stb r4, 0(r3) -/* 80030F34 C0 85 00 08 */ lfs f4, 8(r5) -/* 80030F38 C0 66 00 08 */ lfs f3, 8(r6) -/* 80030F3C EC C4 18 28 */ fsubs f6, f4, f3 -/* 80030F40 C0 A5 00 04 */ lfs f5, 4(r5) -/* 80030F44 C0 45 00 00 */ lfs f2, 0(r5) -/* 80030F48 C0 26 00 00 */ lfs f1, 0(r6) -/* 80030F4C EC 02 08 28 */ fsubs f0, f2, f1 -/* 80030F50 D0 03 00 08 */ stfs f0, 8(r3) -/* 80030F54 D0 A3 00 0C */ stfs f5, 0xc(r3) -/* 80030F58 D0 C3 00 10 */ stfs f6, 0x10(r3) -/* 80030F5C EC 84 18 2A */ fadds f4, f4, f3 -/* 80030F60 C0 06 00 04 */ lfs f0, 4(r6) -/* 80030F64 EC 65 00 2A */ fadds f3, f5, f0 -/* 80030F68 EC 02 08 2A */ fadds f0, f2, f1 -/* 80030F6C D0 03 00 14 */ stfs f0, 0x14(r3) -/* 80030F70 D0 63 00 18 */ stfs f3, 0x18(r3) -/* 80030F74 D0 83 00 1C */ stfs f4, 0x1c(r3) -/* 80030F78 98 E3 00 02 */ stb r7, 2(r3) -/* 80030F7C 55 04 06 3E */ clrlwi r4, r8, 0x18 -/* 80030F80 30 04 FF FF */ addic r0, r4, -1 -/* 80030F84 7C 00 21 10 */ subfe r0, r0, r4 -/* 80030F88 98 03 00 01 */ stb r0, 1(r3) -/* 80030F8C 48 00 00 41 */ bl isSwitch__Q27daSus_c6data_cFv -/* 80030F90 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 80030F94 7C 00 00 34 */ cntlzw r0, r0 -/* 80030F98 54 00 DE 3E */ rlwinm r0, r0, 0x1b, 0x18, 0x1f -/* 80030F9C 98 1E 00 03 */ stb r0, 3(r30) -/* 80030FA0 9B FE 00 04 */ stb r31, 4(r30) -/* 80030FA4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80030FA8 83 C1 00 08 */ lwz r30, 8(r1) -/* 80030FAC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80030FB0 7C 08 03 A6 */ mtlr r0 -/* 80030FB4 38 21 00 10 */ addi r1, r1, 0x10 -/* 80030FB8 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/ActionTarget__12dAttention_cFl.s b/asm/d/d_attention/ActionTarget__12dAttention_cFl.s deleted file mode 100644 index a4e7fc91fe..0000000000 --- a/asm/d/d_attention/ActionTarget__12dAttention_cFl.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_80073734: -/* 80073734 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80073738 7C 08 02 A6 */ mflr r0 -/* 8007373C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80073740 7C 65 1B 78 */ mr r5, r3 -/* 80073744 80 63 04 30 */ lwz r3, 0x430(r3) -/* 80073748 7C 04 18 00 */ cmpw r4, r3 -/* 8007374C 41 80 00 0C */ blt lbl_80073758 -/* 80073750 38 60 00 00 */ li r3, 0 -/* 80073754 48 00 00 28 */ b lbl_8007377C -lbl_80073758: -/* 80073758 80 05 04 34 */ lwz r0, 0x434(r5) -/* 8007375C 7C 00 22 14 */ add r0, r0, r4 -/* 80073760 7C 00 18 00 */ cmpw r0, r3 -/* 80073764 41 80 00 08 */ blt lbl_8007376C -/* 80073768 7C 03 00 50 */ subf r0, r3, r0 -lbl_8007376C: -/* 8007376C 1C 60 00 14 */ mulli r3, r0, 0x14 -/* 80073770 38 63 03 E0 */ addi r3, r3, 0x3e0 -/* 80073774 7C 65 1A 14 */ add r3, r5, r3 -/* 80073778 48 00 00 ED */ bl getActor__10dAttList_cFv -lbl_8007377C: -/* 8007377C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80073780 7C 08 03 A6 */ mtlr r0 -/* 80073784 38 21 00 10 */ addi r1, r1, 0x10 -/* 80073788 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/CheckObjectTarget__12dAttention_cFl.s b/asm/d/d_attention/CheckObjectTarget__12dAttention_cFl.s deleted file mode 100644 index 55fda39bc7..0000000000 --- a/asm/d/d_attention/CheckObjectTarget__12dAttention_cFl.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_8007378C: -/* 8007378C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80073790 7C 08 02 A6 */ mflr r0 -/* 80073794 90 01 00 14 */ stw r0, 0x14(r1) -/* 80073798 7C 65 1B 78 */ mr r5, r3 -/* 8007379C 80 63 04 88 */ lwz r3, 0x488(r3) -/* 800737A0 7C 04 18 00 */ cmpw r4, r3 -/* 800737A4 41 80 00 0C */ blt lbl_800737B0 -/* 800737A8 38 60 00 00 */ li r3, 0 -/* 800737AC 48 00 00 28 */ b lbl_800737D4 -lbl_800737B0: -/* 800737B0 80 05 04 8C */ lwz r0, 0x48c(r5) -/* 800737B4 7C 00 22 14 */ add r0, r0, r4 -/* 800737B8 7C 00 18 00 */ cmpw r0, r3 -/* 800737BC 41 80 00 08 */ blt lbl_800737C4 -/* 800737C0 7C 03 00 50 */ subf r0, r3, r0 -lbl_800737C4: -/* 800737C4 1C 60 00 14 */ mulli r3, r0, 0x14 -/* 800737C8 38 63 04 38 */ addi r3, r3, 0x438 -/* 800737CC 7C 65 1A 14 */ add r3, r5, r3 -/* 800737D0 48 00 00 95 */ bl getActor__10dAttList_cFv -lbl_800737D4: -/* 800737D4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800737D8 7C 08 03 A6 */ mtlr r0 -/* 800737DC 38 21 00 10 */ addi r1, r1, 0x10 -/* 800737E0 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/GetLockonList__12dAttention_cFl.s b/asm/d/d_attention/GetLockonList__12dAttention_cFl.s deleted file mode 100644 index ebff00a25e..0000000000 --- a/asm/d/d_attention/GetLockonList__12dAttention_cFl.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_80070844: -/* 80070844 7C 66 1B 78 */ mr r6, r3 -/* 80070848 80 A3 03 D8 */ lwz r5, 0x3d8(r3) -/* 8007084C 2C 05 00 00 */ cmpwi r5, 0 -/* 80070850 41 82 00 28 */ beq lbl_80070878 -/* 80070854 80 06 03 DC */ lwz r0, 0x3dc(r6) -/* 80070858 7C 60 22 14 */ add r3, r0, r4 -/* 8007085C 7C 03 2B D6 */ divw r0, r3, r5 -/* 80070860 7C 00 29 D6 */ mullw r0, r0, r5 -/* 80070864 7C 00 18 50 */ subf r0, r0, r3 -/* 80070868 1C 60 00 14 */ mulli r3, r0, 0x14 -/* 8007086C 38 63 03 38 */ addi r3, r3, 0x338 -/* 80070870 7C 66 1A 14 */ add r3, r6, r3 -/* 80070874 4E 80 00 20 */ blr -lbl_80070878: -/* 80070878 38 60 00 00 */ li r3, 0 -/* 8007087C 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/LockonTargetPId__12dAttention_cFl.s b/asm/d/d_attention/LockonTargetPId__12dAttention_cFl.s deleted file mode 100644 index d835a9604e..0000000000 --- a/asm/d/d_attention/LockonTargetPId__12dAttention_cFl.s +++ /dev/null @@ -1,31 +0,0 @@ -lbl_800736CC: -/* 800736CC 3C A0 80 40 */ lis r5, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 800736D0 38 E5 61 C0 */ addi r7, r5, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 800736D4 80 C7 5F 18 */ lwz r6, 0x5f18(r7) -/* 800736D8 3C A0 36 A0 */ lis r5, 0x36A0 /* 0x36A02311@ha */ -/* 800736DC 38 05 23 11 */ addi r0, r5, 0x2311 /* 0x36A02311@l */ -/* 800736E0 7C C0 00 39 */ and. r0, r6, r0 -/* 800736E4 40 82 00 10 */ bne lbl_800736F4 -/* 800736E8 80 07 5F 1C */ lwz r0, 0x5f1c(r7) -/* 800736EC 70 00 00 11 */ andi. r0, r0, 0x11 -/* 800736F0 41 82 00 0C */ beq lbl_800736FC -lbl_800736F4: -/* 800736F4 38 60 FF FF */ li r3, -1 -/* 800736F8 4E 80 00 20 */ blr -lbl_800736FC: -/* 800736FC 80 A3 03 D8 */ lwz r5, 0x3d8(r3) -/* 80073700 7C 04 28 00 */ cmpw r4, r5 -/* 80073704 41 80 00 0C */ blt lbl_80073710 -/* 80073708 38 60 FF FF */ li r3, -1 -/* 8007370C 4E 80 00 20 */ blr -lbl_80073710: -/* 80073710 80 03 03 DC */ lwz r0, 0x3dc(r3) -/* 80073714 7C 00 22 14 */ add r0, r0, r4 -/* 80073718 7C 00 28 00 */ cmpw r0, r5 -/* 8007371C 41 80 00 08 */ blt lbl_80073724 -/* 80073720 7C 05 00 50 */ subf r0, r5, r0 -lbl_80073724: -/* 80073724 1C 00 00 14 */ mulli r0, r0, 0x14 -/* 80073728 7C 63 02 14 */ add r3, r3, r0 -/* 8007372C 80 63 03 48 */ lwz r3, 0x348(r3) -/* 80073730 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/LockonTarget__12dAttention_cFl.s b/asm/d/d_attention/LockonTarget__12dAttention_cFl.s deleted file mode 100644 index 010b6e9e5d..0000000000 --- a/asm/d/d_attention/LockonTarget__12dAttention_cFl.s +++ /dev/null @@ -1,47 +0,0 @@ -lbl_8007353C: -/* 8007353C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80073540 7C 08 02 A6 */ mflr r0 -/* 80073544 90 01 00 14 */ stw r0, 0x14(r1) -/* 80073548 7C 67 1B 78 */ mr r7, r3 -/* 8007354C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80073550 38 C3 61 C0 */ addi r6, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80073554 80 A6 5F 18 */ lwz r5, 0x5f18(r6) -/* 80073558 3C 60 36 A0 */ lis r3, 0x36A0 /* 0x36A02311@ha */ -/* 8007355C 38 03 23 11 */ addi r0, r3, 0x2311 /* 0x36A02311@l */ -/* 80073560 7C A0 00 39 */ and. r0, r5, r0 -/* 80073564 40 82 00 10 */ bne lbl_80073574 -/* 80073568 80 06 5F 1C */ lwz r0, 0x5f1c(r6) -/* 8007356C 70 00 00 11 */ andi. r0, r0, 0x11 -/* 80073570 41 82 00 0C */ beq lbl_8007357C -lbl_80073574: -/* 80073574 38 60 00 00 */ li r3, 0 -/* 80073578 48 00 00 54 */ b lbl_800735CC -lbl_8007357C: -/* 8007357C 80 67 03 D8 */ lwz r3, 0x3d8(r7) -/* 80073580 7C 04 18 00 */ cmpw r4, r3 -/* 80073584 41 80 00 0C */ blt lbl_80073590 -/* 80073588 38 60 00 00 */ li r3, 0 -/* 8007358C 48 00 00 40 */ b lbl_800735CC -lbl_80073590: -/* 80073590 80 07 03 DC */ lwz r0, 0x3dc(r7) -/* 80073594 7C 00 22 14 */ add r0, r0, r4 -/* 80073598 7C 00 18 00 */ cmpw r0, r3 -/* 8007359C 41 80 00 08 */ blt lbl_800735A4 -/* 800735A0 7C 03 00 50 */ subf r0, r3, r0 -lbl_800735A4: -/* 800735A4 1C 60 00 14 */ mulli r3, r0, 0x14 -/* 800735A8 38 63 03 38 */ addi r3, r3, 0x338 -/* 800735AC 7C 67 1A 14 */ add r3, r7, r3 -/* 800735B0 48 00 02 B5 */ bl getActor__10dAttList_cFv -/* 800735B4 28 03 00 00 */ cmplwi r3, 0 -/* 800735B8 41 82 00 10 */ beq lbl_800735C8 -/* 800735BC 80 03 05 5C */ lwz r0, 0x55c(r3) -/* 800735C0 54 00 07 7F */ clrlwi. r0, r0, 0x1d -/* 800735C4 40 82 00 08 */ bne lbl_800735CC -lbl_800735C8: -/* 800735C8 38 60 00 00 */ li r3, 0 -lbl_800735CC: -/* 800735CC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800735D0 7C 08 03 A6 */ mtlr r0 -/* 800735D4 38 21 00 10 */ addi r1, r1, 0x10 -/* 800735D8 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/LockonTruth__12dAttention_cFv.s b/asm/d/d_attention/LockonTruth__12dAttention_cFv.s deleted file mode 100644 index 1de8290ba4..0000000000 --- a/asm/d/d_attention/LockonTruth__12dAttention_cFv.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_800737E4: -/* 800737E4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800737E8 7C 08 02 A6 */ mflr r0 -/* 800737EC 90 01 00 14 */ stw r0, 0x14(r1) -/* 800737F0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800737F4 3B E0 00 00 */ li r31, 0 -/* 800737F8 88 03 03 29 */ lbz r0, 0x329(r3) -/* 800737FC 28 00 00 01 */ cmplwi r0, 1 -/* 80073800 41 82 00 0C */ beq lbl_8007380C -/* 80073804 28 00 00 02 */ cmplwi r0, 2 -/* 80073808 40 82 00 18 */ bne lbl_80073820 -lbl_8007380C: -/* 8007380C 38 80 00 00 */ li r4, 0 -/* 80073810 4B FF FD 2D */ bl LockonTarget__12dAttention_cFl -/* 80073814 28 03 00 00 */ cmplwi r3, 0 -/* 80073818 41 82 00 08 */ beq lbl_80073820 -/* 8007381C 3B E0 00 01 */ li r31, 1 -lbl_80073820: -/* 80073820 7F E3 FB 78 */ mr r3, r31 -/* 80073824 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80073828 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007382C 7C 08 03 A6 */ mtlr r0 -/* 80073830 38 21 00 10 */ addi r1, r1, 0x10 -/* 80073834 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/Run__12dAttention_cFv.s b/asm/d/d_attention/Run__12dAttention_cFv.s deleted file mode 100644 index 0caeeaac93..0000000000 --- a/asm/d/d_attention/Run__12dAttention_cFv.s +++ /dev/null @@ -1,189 +0,0 @@ -lbl_80072924: -/* 80072924 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80072928 7C 08 02 A6 */ mflr r0 -/* 8007292C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80072930 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80072934 7C 7F 1B 78 */ mr r31, r3 -/* 80072938 80 03 03 34 */ lwz r0, 0x334(r3) -/* 8007293C 54 00 00 12 */ rlwinm r0, r0, 0, 0, 9 -/* 80072940 90 03 03 34 */ stw r0, 0x334(r3) -/* 80072944 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80072948 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8007294C 88 03 01 E2 */ lbz r0, 0x1e2(r3) -/* 80072950 7C 00 00 34 */ cntlzw r0, r0 -/* 80072954 54 04 D9 7E */ srwi r4, r0, 5 -/* 80072958 88 6D 80 F0 */ lbz r3, data_80450670(r13) -/* 8007295C 54 00 DE 3E */ rlwinm r0, r0, 0x1b, 0x18, 0x1f -/* 80072960 7C 03 00 40 */ cmplw r3, r0 -/* 80072964 41 82 00 10 */ beq lbl_80072974 -/* 80072968 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 8007296C 64 00 00 01 */ oris r0, r0, 1 -/* 80072970 90 1F 03 34 */ stw r0, 0x334(r31) -lbl_80072974: -/* 80072974 98 8D 80 F0 */ stb r4, data_80450670(r13) -/* 80072978 80 7F 04 C4 */ lwz r3, 0x4c4(r31) -/* 8007297C 2C 03 00 00 */ cmpwi r3, 0 -/* 80072980 41 82 00 14 */ beq lbl_80072994 -/* 80072984 38 03 FF FF */ addi r0, r3, -1 -/* 80072988 90 1F 04 C4 */ stw r0, 0x4c4(r31) -/* 8007298C 38 60 00 01 */ li r3, 1 -/* 80072990 48 00 02 30 */ b lbl_80072BC0 -lbl_80072994: -/* 80072994 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072998 54 00 06 31 */ rlwinm. r0, r0, 0, 0x18, 0x18 -/* 8007299C 41 82 00 1C */ beq lbl_800729B8 -/* 800729A0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 800729A4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 800729A8 80 03 5D AC */ lwz r0, 0x5dac(r3) -/* 800729AC 90 1F 00 00 */ stw r0, 0(r31) -/* 800729B0 38 00 00 00 */ li r0, 0 -/* 800729B4 90 1F 00 0C */ stw r0, 0xc(r31) -lbl_800729B8: -/* 800729B8 7F E3 FB 78 */ mr r3, r31 -/* 800729BC 4B FF EA 69 */ bl setOwnerAttentionPos__12dAttention_cFv -/* 800729C0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 800729C4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 800729C8 88 03 4F AD */ lbz r0, 0x4fad(r3) -/* 800729CC 28 00 00 00 */ cmplwi r0, 0 -/* 800729D0 40 82 00 10 */ bne lbl_800729E0 -/* 800729D4 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 800729D8 54 00 03 DF */ rlwinm. r0, r0, 0, 0xf, 0xf -/* 800729DC 41 82 00 44 */ beq lbl_80072A20 -lbl_800729E0: -/* 800729E0 38 60 00 00 */ li r3, 0 -/* 800729E4 98 7F 03 29 */ stb r3, 0x329(r31) -/* 800729E8 38 00 00 04 */ li r0, 4 -/* 800729EC 98 1F 03 2B */ stb r0, 0x32b(r31) -/* 800729F0 98 7F 03 2C */ stb r3, 0x32c(r31) -/* 800729F4 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 800729F8 54 00 00 C2 */ rlwinm r0, r0, 0, 3, 1 -/* 800729FC 90 1F 03 34 */ stw r0, 0x334(r31) -/* 80072A00 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072A04 54 00 01 04 */ rlwinm r0, r0, 0, 4, 2 -/* 80072A08 90 1F 03 34 */ stw r0, 0x334(r31) -/* 80072A0C 38 00 FF FF */ li r0, -1 -/* 80072A10 90 1F 00 04 */ stw r0, 4(r31) -/* 80072A14 7F E3 FB 78 */ mr r3, r31 -/* 80072A18 4B FF F0 51 */ bl freeAttention__12dAttention_cFv -/* 80072A1C 48 00 01 18 */ b lbl_80072B34 -lbl_80072A20: -/* 80072A20 7F E3 FB 78 */ mr r3, r31 -/* 80072A24 4B FF F6 D5 */ bl checkButton__12dAttention_cFv -/* 80072A28 88 0D 80 F0 */ lbz r0, data_80450670(r13) -/* 80072A2C 28 00 00 00 */ cmplwi r0, 0 -/* 80072A30 41 82 00 10 */ beq lbl_80072A40 -/* 80072A34 7F E3 FB 78 */ mr r3, r31 -/* 80072A38 4B FF F9 0D */ bl judgementStatus4Hold__12dAttention_cFv -/* 80072A3C 48 00 00 0C */ b lbl_80072A48 -lbl_80072A40: -/* 80072A40 7F E3 FB 78 */ mr r3, r31 -/* 80072A44 4B FF FB AD */ bl judgementStatus4Switch__12dAttention_cFv -lbl_80072A48: -/* 80072A48 80 7F 03 34 */ lwz r3, 0x334(r31) -/* 80072A4C 54 60 4F FF */ rlwinm. r0, r3, 9, 0x1f, 0x1f -/* 80072A50 41 82 00 4C */ beq lbl_80072A9C -/* 80072A54 7F E3 FB 78 */ mr r3, r31 -/* 80072A58 4B FF F0 11 */ bl freeAttention__12dAttention_cFv -/* 80072A5C 7F E3 FB 78 */ mr r3, r31 -/* 80072A60 38 80 00 00 */ li r4, 0 -/* 80072A64 48 00 0A D9 */ bl LockonTarget__12dAttention_cFl -/* 80072A68 28 03 00 00 */ cmplwi r3, 0 -/* 80072A6C 40 82 00 14 */ bne lbl_80072A80 -/* 80072A70 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072A74 64 00 20 00 */ oris r0, r0, 0x2000 -/* 80072A78 60 00 00 20 */ ori r0, r0, 0x20 -/* 80072A7C 90 1F 03 34 */ stw r0, 0x334(r31) -lbl_80072A80: -/* 80072A80 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072A84 64 00 10 00 */ oris r0, r0, 0x1000 -/* 80072A88 90 1F 03 34 */ stw r0, 0x334(r31) -/* 80072A8C 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072A90 54 00 02 4E */ rlwinm r0, r0, 0, 9, 7 -/* 80072A94 90 1F 03 34 */ stw r0, 0x334(r31) -/* 80072A98 48 00 00 9C */ b lbl_80072B34 -lbl_80072A9C: -/* 80072A9C 54 60 00 C7 */ rlwinm. r0, r3, 0, 3, 3 -/* 80072AA0 41 82 00 48 */ beq lbl_80072AE8 -/* 80072AA4 80 7F 00 0C */ lwz r3, 0xc(r31) -/* 80072AA8 4B FF D5 71 */ bl func_80070018 -/* 80072AAC 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80072AB0 40 82 00 84 */ bne lbl_80072B34 -/* 80072AB4 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072AB8 54 00 00 85 */ rlwinm. r0, r0, 0, 2, 2 -/* 80072ABC 41 82 00 1C */ beq lbl_80072AD8 -/* 80072AC0 7F E3 FB 78 */ mr r3, r31 -/* 80072AC4 38 80 00 5A */ li r4, 0x5a -/* 80072AC8 48 00 02 B9 */ bl lockSoundStart__12dAttention_cFUl -/* 80072ACC 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072AD0 54 00 00 C2 */ rlwinm r0, r0, 0, 3, 1 -/* 80072AD4 90 1F 03 34 */ stw r0, 0x334(r31) -lbl_80072AD8: -/* 80072AD8 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072ADC 54 00 01 04 */ rlwinm r0, r0, 0, 4, 2 -/* 80072AE0 90 1F 03 34 */ stw r0, 0x334(r31) -/* 80072AE4 48 00 00 50 */ b lbl_80072B34 -lbl_80072AE8: -/* 80072AE8 80 7F 00 0C */ lwz r3, 0xc(r31) -/* 80072AEC 4B FF D5 2D */ bl func_80070018 -/* 80072AF0 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80072AF4 41 82 00 40 */ beq lbl_80072B34 -/* 80072AF8 7F E3 FB 78 */ mr r3, r31 -/* 80072AFC 38 80 00 00 */ li r4, 0 -/* 80072B00 48 00 0A 3D */ bl LockonTarget__12dAttention_cFl -/* 80072B04 28 03 00 00 */ cmplwi r3, 0 -/* 80072B08 40 82 00 20 */ bne lbl_80072B28 -/* 80072B0C 7F E3 FB 78 */ mr r3, r31 -/* 80072B10 38 80 00 59 */ li r4, 0x59 -/* 80072B14 48 00 02 6D */ bl lockSoundStart__12dAttention_cFUl -/* 80072B18 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072B1C 64 00 20 00 */ oris r0, r0, 0x2000 -/* 80072B20 60 00 00 20 */ ori r0, r0, 0x20 -/* 80072B24 90 1F 03 34 */ stw r0, 0x334(r31) -lbl_80072B28: -/* 80072B28 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072B2C 64 00 10 00 */ oris r0, r0, 0x1000 -/* 80072B30 90 1F 03 34 */ stw r0, 0x334(r31) -lbl_80072B34: -/* 80072B34 88 1F 03 29 */ lbz r0, 0x329(r31) -/* 80072B38 98 1F 03 2A */ stb r0, 0x32a(r31) -/* 80072B3C 7F E3 FB 78 */ mr r3, r31 -/* 80072B40 4B FF F2 AD */ bl runSoundProc__12dAttention_cFv -/* 80072B44 7F E3 FB 78 */ mr r3, r31 -/* 80072B48 4B FF F3 3D */ bl runDrawProc__12dAttention_cFv -/* 80072B4C 7F E3 FB 78 */ mr r3, r31 -/* 80072B50 4B FF F5 A5 */ bl runDebugDisp__12dAttention_cFv -/* 80072B54 88 1F 03 29 */ lbz r0, 0x329(r31) -/* 80072B58 28 00 00 01 */ cmplwi r0, 1 -/* 80072B5C 40 82 00 28 */ bne lbl_80072B84 -/* 80072B60 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80072B64 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80072B68 80 1F 00 0C */ lwz r0, 0xc(r31) -/* 80072B6C 1C 00 00 38 */ mulli r0, r0, 0x38 -/* 80072B70 7C 63 02 14 */ add r3, r3, r0 -/* 80072B74 80 03 5D 7C */ lwz r0, 0x5d7c(r3) -/* 80072B78 60 00 00 01 */ ori r0, r0, 1 -/* 80072B7C 90 03 5D 7C */ stw r0, 0x5d7c(r3) -/* 80072B80 48 00 00 24 */ b lbl_80072BA4 -lbl_80072B84: -/* 80072B84 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80072B88 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80072B8C 80 1F 00 0C */ lwz r0, 0xc(r31) -/* 80072B90 1C 00 00 38 */ mulli r0, r0, 0x38 -/* 80072B94 7C 63 02 14 */ add r3, r3, r0 -/* 80072B98 80 03 5D 7C */ lwz r0, 0x5d7c(r3) -/* 80072B9C 54 00 00 3C */ rlwinm r0, r0, 0, 0, 0x1e -/* 80072BA0 90 03 5D 7C */ stw r0, 0x5d7c(r3) -lbl_80072BA4: -/* 80072BA4 38 7F 04 90 */ addi r3, r31, 0x490 -/* 80072BA8 48 00 0D C9 */ bl proc__10dAttHint_cFv -/* 80072BAC 38 7F 04 9C */ addi r3, r31, 0x49c -/* 80072BB0 48 00 0E 2D */ bl proc__11dAttCatch_cFv -/* 80072BB4 38 7F 04 B4 */ addi r3, r31, 0x4b4 -/* 80072BB8 48 00 11 35 */ bl proc__10dAttLook_cFv -/* 80072BBC 38 60 00 01 */ li r3, 1 -lbl_80072BC0: -/* 80072BC0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80072BC4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80072BC8 7C 08 03 A6 */ mtlr r0 -/* 80072BCC 38 21 00 10 */ addi r1, r1, 0x10 -/* 80072BD0 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/__ct__11dAttParam_cFl.s b/asm/d/d_attention/__ct__11dAttParam_cFl.s index 07212d18ad..69accabe21 100644 --- a/asm/d/d_attention/__ct__11dAttParam_cFl.s +++ b/asm/d/d_attention/__ct__11dAttParam_cFl.s @@ -46,7 +46,7 @@ lbl_80070038: /* 800700E8 48 2F 88 AD */ bl strcmp /* 800700EC 7C 60 00 34 */ cntlzw r0, r3 /* 800700F0 54 00 D9 7E */ srwi r0, r0, 5 -/* 800700F4 98 0D 89 D8 */ stb r0, data_80450F58(r13) +/* 800700F4 98 0D 89 D8 */ stb r0, on_final_boss_stg(r13) /* 800700F8 7F E3 FB 78 */ mr r3, r31 /* 800700FC 83 E1 00 0C */ lwz r31, 0xc(r1) /* 80070100 80 01 00 14 */ lwz r0, 0x14(r1) diff --git a/asm/d/d_attention/__ct__15dAttDrawParam_cFv.s b/asm/d/d_attention/__ct__15dAttDrawParam_cFv.s deleted file mode 100644 index f19cb8b1c7..0000000000 --- a/asm/d/d_attention/__ct__15dAttDrawParam_cFv.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80070158: -/* 80070158 3C 80 80 3B */ lis r4, __vt__15dAttDrawParam_c@ha /* 0x803A9C54@ha */ -/* 8007015C 38 04 9C 54 */ addi r0, r4, __vt__15dAttDrawParam_c@l /* 0x803A9C54@l */ -/* 80070160 90 03 00 00 */ stw r0, 0(r3) -/* 80070164 C0 02 8C 5C */ lfs f0, lit_4084(r2) -/* 80070168 D0 03 00 08 */ stfs f0, 8(r3) -/* 8007016C C0 02 8C 60 */ lfs f0, lit_4085(r2) -/* 80070170 D0 03 00 0C */ stfs f0, 0xc(r3) -/* 80070174 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/__dt__11dAttParam_cFv.s b/asm/d/d_attention/__dt__11dAttParam_cFv.s deleted file mode 100644 index 3043b987ef..0000000000 --- a/asm/d/d_attention/__dt__11dAttParam_cFv.s +++ /dev/null @@ -1,20 +0,0 @@ -lbl_80070110: -/* 80070110 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80070114 7C 08 02 A6 */ mflr r0 -/* 80070118 90 01 00 14 */ stw r0, 0x14(r1) -/* 8007011C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80070120 7C 7F 1B 79 */ or. r31, r3, r3 -/* 80070124 41 82 00 1C */ beq lbl_80070140 -/* 80070128 3C A0 80 3B */ lis r5, __vt__11dAttParam_c@ha /* 0x803A9C60@ha */ -/* 8007012C 38 05 9C 60 */ addi r0, r5, __vt__11dAttParam_c@l /* 0x803A9C60@l */ -/* 80070130 90 1F 00 40 */ stw r0, 0x40(r31) -/* 80070134 7C 80 07 35 */ extsh. r0, r4 -/* 80070138 40 81 00 08 */ ble lbl_80070140 -/* 8007013C 48 25 EC 01 */ bl __dl__FPv -lbl_80070140: -/* 80070140 7F E3 FB 78 */ mr r3, r31 -/* 80070144 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80070148 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007014C 7C 08 03 A6 */ mtlr r0 -/* 80070150 38 21 00 10 */ addi r1, r1, 0x10 -/* 80070154 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/__dt__12dAttention_cFv.s b/asm/d/d_attention/__dt__12dAttention_cFv.s deleted file mode 100644 index 229fc0bbc3..0000000000 --- a/asm/d/d_attention/__dt__12dAttention_cFv.s +++ /dev/null @@ -1,55 +0,0 @@ -lbl_80070774: -/* 80070774 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80070778 7C 08 02 A6 */ mflr r0 -/* 8007077C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80070780 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80070784 93 C1 00 08 */ stw r30, 8(r1) -/* 80070788 7C 7E 1B 79 */ or. r30, r3, r3 -/* 8007078C 7C 9F 23 78 */ mr r31, r4 -/* 80070790 41 82 00 98 */ beq lbl_80070828 -/* 80070794 80 7E 00 18 */ lwz r3, 0x18(r30) -/* 80070798 28 03 00 00 */ cmplwi r3, 0 -/* 8007079C 41 82 00 10 */ beq lbl_800707AC -/* 800707A0 4B F9 E9 ED */ bl mDoExt_destroySolidHeap__FP12JKRSolidHeap -/* 800707A4 38 00 00 00 */ li r0, 0 -/* 800707A8 90 1E 00 18 */ stw r0, 0x18(r30) -lbl_800707AC: -/* 800707AC 38 7E 04 C8 */ addi r3, r30, 0x4c8 -/* 800707B0 38 80 FF FF */ li r4, -1 -/* 800707B4 4B FF F9 5D */ bl __dt__11dAttParam_cFv -/* 800707B8 38 7E 04 38 */ addi r3, r30, 0x438 -/* 800707BC 3C 80 80 03 */ lis r4, __dt__10dAttList_cFv@ha /* 0x800304D0@ha */ -/* 800707C0 38 84 04 D0 */ addi r4, r4, __dt__10dAttList_cFv@l /* 0x800304D0@l */ -/* 800707C4 38 A0 00 14 */ li r5, 0x14 -/* 800707C8 38 C0 00 04 */ li r6, 4 -/* 800707CC 48 2F 15 1D */ bl __destroy_arr -/* 800707D0 38 7E 03 E0 */ addi r3, r30, 0x3e0 -/* 800707D4 3C 80 80 03 */ lis r4, __dt__10dAttList_cFv@ha /* 0x800304D0@ha */ -/* 800707D8 38 84 04 D0 */ addi r4, r4, __dt__10dAttList_cFv@l /* 0x800304D0@l */ -/* 800707DC 38 A0 00 14 */ li r5, 0x14 -/* 800707E0 38 C0 00 04 */ li r6, 4 -/* 800707E4 48 2F 15 05 */ bl __destroy_arr -/* 800707E8 38 7E 03 38 */ addi r3, r30, 0x338 -/* 800707EC 3C 80 80 03 */ lis r4, __dt__10dAttList_cFv@ha /* 0x800304D0@ha */ -/* 800707F0 38 84 04 D0 */ addi r4, r4, __dt__10dAttList_cFv@l /* 0x800304D0@l */ -/* 800707F4 38 A0 00 14 */ li r5, 0x14 -/* 800707F8 38 C0 00 08 */ li r6, 8 -/* 800707FC 48 2F 14 ED */ bl __destroy_arr -/* 80070800 38 7E 00 28 */ addi r3, r30, 0x28 -/* 80070804 3C 80 80 03 */ lis r4, __dt__10dAttDraw_cFv@ha /* 0x8003054C@ha */ -/* 80070808 38 84 05 4C */ addi r4, r4, __dt__10dAttDraw_cFv@l /* 0x8003054C@l */ -/* 8007080C 38 A0 01 78 */ li r5, 0x178 -/* 80070810 38 C0 00 02 */ li r6, 2 -/* 80070814 48 2F 14 D5 */ bl __destroy_arr -/* 80070818 7F E0 07 35 */ extsh. r0, r31 -/* 8007081C 40 81 00 0C */ ble lbl_80070828 -/* 80070820 7F C3 F3 78 */ mr r3, r30 -/* 80070824 48 25 E5 19 */ bl __dl__FPv -lbl_80070828: -/* 80070828 7F C3 F3 78 */ mr r3, r30 -/* 8007082C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80070830 83 C1 00 08 */ lwz r30, 8(r1) -/* 80070834 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80070838 7C 08 03 A6 */ mtlr r0 -/* 8007083C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80070840 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/__dt__15dAttDrawParam_cFv.s b/asm/d/d_attention/__dt__15dAttDrawParam_cFv.s deleted file mode 100644 index 945a950dcf..0000000000 --- a/asm/d/d_attention/__dt__15dAttDrawParam_cFv.s +++ /dev/null @@ -1,20 +0,0 @@ -lbl_80073FC4: -/* 80073FC4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80073FC8 7C 08 02 A6 */ mflr r0 -/* 80073FCC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80073FD0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80073FD4 7C 7F 1B 79 */ or. r31, r3, r3 -/* 80073FD8 41 82 00 1C */ beq lbl_80073FF4 -/* 80073FDC 3C A0 80 3B */ lis r5, __vt__15dAttDrawParam_c@ha /* 0x803A9C54@ha */ -/* 80073FE0 38 05 9C 54 */ addi r0, r5, __vt__15dAttDrawParam_c@l /* 0x803A9C54@l */ -/* 80073FE4 90 1F 00 00 */ stw r0, 0(r31) -/* 80073FE8 7C 80 07 35 */ extsh. r0, r4 -/* 80073FEC 40 81 00 08 */ ble lbl_80073FF4 -/* 80073FF0 48 25 AD 4D */ bl __dl__FPv -lbl_80073FF4: -/* 80073FF4 7F E3 FB 78 */ mr r3, r31 -/* 80073FF8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80073FFC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80074000 7C 08 03 A6 */ mtlr r0 -/* 80074004 38 21 00 10 */ addi r1, r1, 0x10 -/* 80074008 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/checkButton__12dAttention_cFv.s b/asm/d/d_attention/checkButton__12dAttention_cFv.s deleted file mode 100644 index db3e953c46..0000000000 --- a/asm/d/d_attention/checkButton__12dAttention_cFv.s +++ /dev/null @@ -1,118 +0,0 @@ -lbl_800720F8: -/* 800720F8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800720FC 7C 08 02 A6 */ mflr r0 -/* 80072100 90 01 00 14 */ stw r0, 0x14(r1) -/* 80072104 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80072108 7C 7F 1B 78 */ mr r31, r3 -/* 8007210C 88 0D 89 D8 */ lbz r0, data_80450F58(r13) -/* 80072110 28 00 00 00 */ cmplwi r0, 0 -/* 80072114 41 82 00 60 */ beq lbl_80072174 -/* 80072118 88 0D 87 E4 */ lbz r0, mStayNo__20dStage_roomControl_c+0x0(r13) -/* 8007211C 7C 00 07 75 */ extsb. r0, r0 -/* 80072120 40 82 00 54 */ bne lbl_80072174 -/* 80072124 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80072128 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8007212C 38 63 09 78 */ addi r3, r3, 0x978 -/* 80072130 38 80 00 01 */ li r4, 1 -/* 80072134 4B FC 2A B5 */ bl isSwitch__12dSv_danBit_cCFi -/* 80072138 2C 03 00 00 */ cmpwi r3, 0 -/* 8007213C 40 82 00 38 */ bne lbl_80072174 -/* 80072140 88 1F 03 2B */ lbz r0, 0x32b(r31) -/* 80072144 28 00 00 01 */ cmplwi r0, 1 -/* 80072148 40 82 00 2C */ bne lbl_80072174 -/* 8007214C 7F E3 FB 78 */ mr r3, r31 -/* 80072150 38 80 00 00 */ li r4, 0 -/* 80072154 48 00 13 E9 */ bl LockonTarget__12dAttention_cFl -/* 80072158 28 03 00 00 */ cmplwi r3, 0 -/* 8007215C 41 82 00 18 */ beq lbl_80072174 -/* 80072160 80 7F 03 34 */ lwz r3, 0x334(r31) -/* 80072164 54 60 00 85 */ rlwinm. r0, r3, 0, 2, 2 -/* 80072168 41 82 00 0C */ beq lbl_80072174 -/* 8007216C 64 60 01 00 */ oris r0, r3, 0x100 -/* 80072170 90 1F 03 34 */ stw r0, 0x334(r31) -lbl_80072174: -/* 80072174 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80072178 38 A3 61 C0 */ addi r5, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 8007217C 80 85 5F 18 */ lwz r4, 0x5f18(r5) -/* 80072180 3C 60 36 A0 */ lis r3, 0x36A0 /* 0x36A02311@ha */ -/* 80072184 38 03 23 11 */ addi r0, r3, 0x2311 /* 0x36A02311@l */ -/* 80072188 7C 80 00 39 */ and. r0, r4, r0 -/* 8007218C 40 82 00 10 */ bne lbl_8007219C -/* 80072190 80 05 5F 1C */ lwz r0, 0x5f1c(r5) -/* 80072194 70 00 00 11 */ andi. r0, r0, 0x11 -/* 80072198 41 82 00 34 */ beq lbl_800721CC -lbl_8007219C: -/* 8007219C 88 1F 03 2B */ lbz r0, 0x32b(r31) -/* 800721A0 2C 00 00 02 */ cmpwi r0, 2 -/* 800721A4 40 80 00 E8 */ bge lbl_8007228C -/* 800721A8 2C 00 00 00 */ cmpwi r0, 0 -/* 800721AC 40 80 00 08 */ bge lbl_800721B4 -/* 800721B0 48 00 00 DC */ b lbl_8007228C -lbl_800721B4: -/* 800721B4 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 800721B8 54 00 02 0C */ rlwinm r0, r0, 0, 8, 6 -/* 800721BC 90 1F 03 34 */ stw r0, 0x334(r31) -/* 800721C0 38 00 00 04 */ li r0, 4 -/* 800721C4 98 1F 03 2B */ stb r0, 0x32b(r31) -/* 800721C8 48 00 00 C4 */ b lbl_8007228C -lbl_800721CC: -/* 800721CC 88 1F 03 2B */ lbz r0, 0x32b(r31) -/* 800721D0 2C 00 00 01 */ cmpwi r0, 1 -/* 800721D4 41 82 00 68 */ beq lbl_8007223C -/* 800721D8 40 80 00 10 */ bge lbl_800721E8 -/* 800721DC 2C 00 00 00 */ cmpwi r0, 0 -/* 800721E0 40 80 00 54 */ bge lbl_80072234 -/* 800721E4 48 00 00 A8 */ b lbl_8007228C -lbl_800721E8: -/* 800721E8 2C 00 00 04 */ cmpwi r0, 4 -/* 800721EC 41 82 00 08 */ beq lbl_800721F4 -/* 800721F0 48 00 00 9C */ b lbl_8007228C -lbl_800721F4: -/* 800721F4 80 7F 00 0C */ lwz r3, 0xc(r31) -/* 800721F8 4B FF DE 21 */ bl func_80070018 -/* 800721FC 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80072200 40 82 00 10 */ bne lbl_80072210 -/* 80072204 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072208 54 00 01 CF */ rlwinm. r0, r0, 0, 7, 7 -/* 8007220C 41 82 00 80 */ beq lbl_8007228C -lbl_80072210: -/* 80072210 38 00 00 00 */ li r0, 0 -/* 80072214 98 1F 03 2B */ stb r0, 0x32b(r31) -/* 80072218 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 8007221C 60 00 02 00 */ ori r0, r0, 0x200 -/* 80072220 90 1F 03 34 */ stw r0, 0x334(r31) -/* 80072224 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072228 54 00 02 0C */ rlwinm r0, r0, 0, 8, 6 -/* 8007222C 90 1F 03 34 */ stw r0, 0x334(r31) -/* 80072230 48 00 00 5C */ b lbl_8007228C -lbl_80072234: -/* 80072234 38 00 00 01 */ li r0, 1 -/* 80072238 98 1F 03 2B */ stb r0, 0x32b(r31) -lbl_8007223C: -/* 8007223C 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072240 54 00 01 CF */ rlwinm. r0, r0, 0, 7, 7 -/* 80072244 41 82 00 30 */ beq lbl_80072274 -/* 80072248 38 00 00 00 */ li r0, 0 -/* 8007224C 98 1F 03 2B */ stb r0, 0x32b(r31) -/* 80072250 38 00 00 3C */ li r0, 0x3c -/* 80072254 98 1F 03 2E */ stb r0, 0x32e(r31) -/* 80072258 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 8007225C 60 00 02 00 */ ori r0, r0, 0x200 -/* 80072260 90 1F 03 34 */ stw r0, 0x334(r31) -/* 80072264 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072268 54 00 02 0C */ rlwinm r0, r0, 0, 8, 6 -/* 8007226C 90 1F 03 34 */ stw r0, 0x334(r31) -/* 80072270 48 00 00 1C */ b lbl_8007228C -lbl_80072274: -/* 80072274 80 7F 00 0C */ lwz r3, 0xc(r31) -/* 80072278 4B FF DD A1 */ bl func_80070018 -/* 8007227C 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80072280 40 82 00 0C */ bne lbl_8007228C -/* 80072284 38 00 00 04 */ li r0, 4 -/* 80072288 98 1F 03 2B */ stb r0, 0x32b(r31) -lbl_8007228C: -/* 8007228C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80072290 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80072294 7C 08 03 A6 */ mtlr r0 -/* 80072298 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007229C 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/checkDistance__12dAttention_cFP4cXyzsP4cXyzffff.s b/asm/d/d_attention/checkDistance__12dAttention_cFP4cXyzsP4cXyzffff.s deleted file mode 100644 index 2c40001e4f..0000000000 --- a/asm/d/d_attention/checkDistance__12dAttention_cFP4cXyzsP4cXyzffff.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80073838: -/* 80073838 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8007383C 7C 08 02 A6 */ mflr r0 -/* 80073840 90 01 00 14 */ stw r0, 0x14(r1) -/* 80073844 7C 83 23 78 */ mr r3, r4 -/* 80073848 7C A4 2B 78 */ mr r4, r5 -/* 8007384C 7C C5 33 78 */ mr r5, r6 -/* 80073850 4B FF D4 51 */ bl check_distace__FP4cXyzsP4cXyzffff -/* 80073854 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80073858 7C 08 03 A6 */ mtlr r0 -/* 8007385C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80073860 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/check_event_condition__FUlUs.s b/asm/d/d_attention/check_event_condition__FUlUs.s deleted file mode 100644 index 6859e8055c..0000000000 --- a/asm/d/d_attention/check_event_condition__FUlUs.s +++ /dev/null @@ -1,33 +0,0 @@ -lbl_80070AC0: -/* 80070AC0 2C 03 00 04 */ cmpwi r3, 4 -/* 80070AC4 41 82 00 60 */ beq lbl_80070B24 -/* 80070AC8 40 80 00 1C */ bge lbl_80070AE4 -/* 80070ACC 2C 03 00 02 */ cmpwi r3, 2 -/* 80070AD0 41 82 00 54 */ beq lbl_80070B24 -/* 80070AD4 40 80 00 20 */ bge lbl_80070AF4 -/* 80070AD8 2C 03 00 01 */ cmpwi r3, 1 -/* 80070ADC 40 80 00 18 */ bge lbl_80070AF4 -/* 80070AE0 48 00 00 44 */ b lbl_80070B24 -lbl_80070AE4: -/* 80070AE4 2C 03 00 06 */ cmpwi r3, 6 -/* 80070AE8 41 82 00 2C */ beq lbl_80070B14 -/* 80070AEC 40 80 00 38 */ bge lbl_80070B24 -/* 80070AF0 48 00 00 14 */ b lbl_80070B04 -lbl_80070AF4: -/* 80070AF4 54 80 07 FF */ clrlwi. r0, r4, 0x1f -/* 80070AF8 40 82 00 2C */ bne lbl_80070B24 -/* 80070AFC 38 60 00 01 */ li r3, 1 -/* 80070B00 4E 80 00 20 */ blr -lbl_80070B04: -/* 80070B04 54 80 07 7B */ rlwinm. r0, r4, 0, 0x1d, 0x1d -/* 80070B08 40 82 00 1C */ bne lbl_80070B24 -/* 80070B0C 38 60 00 01 */ li r3, 1 -/* 80070B10 4E 80 00 20 */ blr -lbl_80070B14: -/* 80070B14 54 80 07 7B */ rlwinm. r0, r4, 0, 0x1d, 0x1d -/* 80070B18 40 82 00 0C */ bne lbl_80070B24 -/* 80070B1C 38 60 00 01 */ li r3, 1 -/* 80070B20 4E 80 00 20 */ blr -lbl_80070B24: -/* 80070B24 38 60 00 00 */ li r3, 0 -/* 80070B28 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/check_flontofplayer__FUlss.s b/asm/d/d_attention/check_flontofplayer__FUlss.s deleted file mode 100644 index 31912f9e7d..0000000000 --- a/asm/d/d_attention/check_flontofplayer__FUlss.s +++ /dev/null @@ -1,57 +0,0 @@ -lbl_80070B2C: -/* 80070B2C 7C 80 07 35 */ extsh. r0, r4 -/* 80070B30 40 80 00 0C */ bge lbl_80070B3C -/* 80070B34 7C 04 00 D0 */ neg r0, r4 -/* 80070B38 7C 04 07 34 */ extsh r4, r0 -lbl_80070B3C: -/* 80070B3C 7C A0 07 35 */ extsh. r0, r5 -/* 80070B40 40 80 00 0C */ bge lbl_80070B4C -/* 80070B44 7C 05 00 D0 */ neg r0, r5 -/* 80070B48 7C 05 07 34 */ extsh r5, r0 -lbl_80070B4C: -/* 80070B4C 38 C0 00 00 */ li r6, 0 -/* 80070B50 38 E0 00 00 */ li r7, 0 -/* 80070B54 3D 00 80 3B */ lis r8, ftp_table@ha /* 0x803A9C18@ha */ -/* 80070B58 39 28 9C 18 */ addi r9, r8, ftp_table@l /* 0x803A9C18@l */ -/* 80070B5C 7C 88 07 34 */ extsh r8, r4 -/* 80070B60 38 8D 80 F4 */ la r4, ang_table(r13) /* 80450674-_SDA_BASE_ */ -/* 80070B64 38 00 00 03 */ li r0, 3 -/* 80070B68 7C 09 03 A6 */ mtctr r0 -lbl_80070B6C: -/* 80070B6C 7C 09 38 2E */ lwzx r0, r9, r7 -/* 80070B70 7C 60 00 39 */ and. r0, r3, r0 -/* 80070B74 41 82 00 18 */ beq lbl_80070B8C -/* 80070B78 7C 04 32 AE */ lhax r0, r4, r6 -/* 80070B7C 7C 08 00 00 */ cmpw r8, r0 -/* 80070B80 40 81 00 0C */ ble lbl_80070B8C -/* 80070B84 38 60 00 01 */ li r3, 1 -/* 80070B88 4E 80 00 20 */ blr -lbl_80070B8C: -/* 80070B8C 38 C6 00 02 */ addi r6, r6, 2 -/* 80070B90 38 E7 00 04 */ addi r7, r7, 4 -/* 80070B94 42 00 FF D8 */ bdnz lbl_80070B6C -/* 80070B98 38 80 00 10 */ li r4, 0x10 -/* 80070B9C 38 C0 00 20 */ li r6, 0x20 -/* 80070BA0 3C E0 80 3B */ lis r7, ftp_table@ha /* 0x803A9C18@ha */ -/* 80070BA4 39 27 9C 18 */ addi r9, r7, ftp_table@l /* 0x803A9C18@l */ -/* 80070BA8 7C A8 07 34 */ extsh r8, r5 -/* 80070BAC 3C A0 80 3B */ lis r5, ang_table2@ha /* 0x803A9C3C@ha */ -/* 80070BB0 38 E5 9C 3C */ addi r7, r5, ang_table2@l /* 0x803A9C3C@l */ -/* 80070BB4 38 00 00 06 */ li r0, 6 -/* 80070BB8 7C 09 03 A6 */ mtctr r0 -lbl_80070BBC: -/* 80070BBC 7C 09 30 2E */ lwzx r0, r9, r6 -/* 80070BC0 7C 60 00 39 */ and. r0, r3, r0 -/* 80070BC4 41 82 00 1C */ beq lbl_80070BE0 -/* 80070BC8 7C A7 22 14 */ add r5, r7, r4 -/* 80070BCC A8 05 FF FA */ lha r0, -6(r5) -/* 80070BD0 7C 08 00 00 */ cmpw r8, r0 -/* 80070BD4 40 81 00 0C */ ble lbl_80070BE0 -/* 80070BD8 38 60 00 01 */ li r3, 1 -/* 80070BDC 4E 80 00 20 */ blr -lbl_80070BE0: -/* 80070BE0 38 84 FF FE */ addi r4, r4, -2 -/* 80070BE4 38 C6 FF FC */ addi r6, r6, -4 -/* 80070BE8 42 00 FF D4 */ bdnz lbl_80070BBC -/* 80070BEC 38 60 00 00 */ li r3, 0 -/* 80070BF0 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/chkAttMask__12dAttention_cFUlUl.s b/asm/d/d_attention/chkAttMask__12dAttention_cFUlUl.s deleted file mode 100644 index 618998eae9..0000000000 --- a/asm/d/d_attention/chkAttMask__12dAttention_cFUlUl.s +++ /dev/null @@ -1,24 +0,0 @@ -lbl_80070A70: -/* 80070A70 38 60 00 00 */ li r3, 0 -/* 80070A74 80 0D 80 E0 */ lwz r0, loc_type_num__12dAttention_c(r13) -/* 80070A78 3C C0 80 3B */ lis r6, loc_type_tbl__12dAttention_c@ha /* 0x803A9BF8@ha */ -/* 80070A7C 38 C6 9B F8 */ addi r6, r6, loc_type_tbl__12dAttention_c@l /* 0x803A9BF8@l */ -/* 80070A80 7C 09 03 A6 */ mtctr r0 -/* 80070A84 2C 00 00 00 */ cmpwi r0, 0 -/* 80070A88 40 81 00 30 */ ble lbl_80070AB8 -lbl_80070A8C: -/* 80070A8C 7C 06 1A AE */ lhax r0, r6, r3 -/* 80070A90 7C 04 00 40 */ cmplw r4, r0 -/* 80070A94 40 82 00 1C */ bne lbl_80070AB0 -/* 80070A98 3C 80 80 3B */ lis r4, loc_type_tbl__12dAttention_c@ha /* 0x803A9BF8@ha */ -/* 80070A9C 38 04 9B F8 */ addi r0, r4, loc_type_tbl__12dAttention_c@l /* 0x803A9BF8@l */ -/* 80070AA0 7C 60 1A 14 */ add r3, r0, r3 -/* 80070AA4 A0 03 00 02 */ lhz r0, 2(r3) -/* 80070AA8 7C A3 00 38 */ and r3, r5, r0 -/* 80070AAC 4E 80 00 20 */ blr -lbl_80070AB0: -/* 80070AB0 38 63 00 04 */ addi r3, r3, 4 -/* 80070AB4 42 00 FF D8 */ bdnz lbl_80070A8C -lbl_80070AB8: -/* 80070AB8 38 60 00 01 */ li r3, 1 -/* 80070ABC 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/convPId__10dAttHint_cFUi.s b/asm/d/d_attention/convPId__10dAttHint_cFUi.s deleted file mode 100644 index 7cdf377991..0000000000 --- a/asm/d/d_attention/convPId__10dAttHint_cFUi.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_800738CC: -/* 800738CC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800738D0 7C 08 02 A6 */ mflr r0 -/* 800738D4 90 01 00 14 */ stw r0, 0x14(r1) -/* 800738D8 90 81 00 08 */ stw r4, 8(r1) -/* 800738DC 3C 60 80 02 */ lis r3, fpcSch_JudgeByID__FPvPv@ha /* 0x80023590@ha */ -/* 800738E0 38 63 35 90 */ addi r3, r3, fpcSch_JudgeByID__FPvPv@l /* 0x80023590@l */ -/* 800738E4 38 81 00 08 */ addi r4, r1, 8 -/* 800738E8 4B FA 5F 11 */ bl fopAcIt_Judge__FPFPvPv_PvPv -/* 800738EC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800738F0 7C 08 03 A6 */ mtlr r0 -/* 800738F4 38 21 00 10 */ addi r1, r1, 0x10 -/* 800738F8 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/convPId__10dAttLook_cFUi.s b/asm/d/d_attention/convPId__10dAttLook_cFUi.s deleted file mode 100644 index 41ea43ba11..0000000000 --- a/asm/d/d_attention/convPId__10dAttLook_cFUi.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80073CA4: -/* 80073CA4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80073CA8 7C 08 02 A6 */ mflr r0 -/* 80073CAC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80073CB0 90 81 00 08 */ stw r4, 8(r1) -/* 80073CB4 3C 60 80 02 */ lis r3, fpcSch_JudgeByID__FPvPv@ha /* 0x80023590@ha */ -/* 80073CB8 38 63 35 90 */ addi r3, r3, fpcSch_JudgeByID__FPvPv@l /* 0x80023590@l */ -/* 80073CBC 38 81 00 08 */ addi r4, r1, 8 -/* 80073CC0 4B FA 5B 39 */ bl fopAcIt_Judge__FPFPvPv_PvPv -/* 80073CC4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80073CC8 7C 08 03 A6 */ mtlr r0 -/* 80073CCC 38 21 00 10 */ addi r1, r1, 0x10 -/* 80073CD0 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/convPId__11dAttCatch_cFUi.s b/asm/d/d_attention/convPId__11dAttCatch_cFUi.s deleted file mode 100644 index 62535a9ac3..0000000000 --- a/asm/d/d_attention/convPId__11dAttCatch_cFUi.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_8007398C: -/* 8007398C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80073990 7C 08 02 A6 */ mflr r0 -/* 80073994 90 01 00 14 */ stw r0, 0x14(r1) -/* 80073998 90 81 00 08 */ stw r4, 8(r1) -/* 8007399C 3C 60 80 02 */ lis r3, fpcSch_JudgeByID__FPvPv@ha /* 0x80023590@ha */ -/* 800739A0 38 63 35 90 */ addi r3, r3, fpcSch_JudgeByID__FPvPv@l /* 0x80023590@l */ -/* 800739A4 38 81 00 08 */ addi r4, r1, 8 -/* 800739A8 4B FA 5E 51 */ bl fopAcIt_Judge__FPFPvPv_PvPv -/* 800739AC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800739B0 7C 08 03 A6 */ mtlr r0 -/* 800739B4 38 21 00 10 */ addi r1, r1, 0x10 -/* 800739B8 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/freeAttention__12dAttention_cFv.s b/asm/d/d_attention/freeAttention__12dAttention_cFv.s deleted file mode 100644 index 70fede49ab..0000000000 --- a/asm/d/d_attention/freeAttention__12dAttention_cFv.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80071A68: -/* 80071A68 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80071A6C 7C 08 02 A6 */ mflr r0 -/* 80071A70 90 01 00 14 */ stw r0, 0x14(r1) -/* 80071A74 38 00 FF FF */ li r0, -1 -/* 80071A78 90 03 00 04 */ stw r0, 4(r3) -/* 80071A7C 38 80 FF FF */ li r4, -1 -/* 80071A80 4B FF F7 C1 */ bl initList__12dAttention_cFUl -/* 80071A84 38 60 00 00 */ li r3, 0 -/* 80071A88 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80071A8C 7C 08 03 A6 */ mtlr r0 -/* 80071A90 38 21 00 10 */ addi r1, r1, 0x10 -/* 80071A94 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/func_80070018.s b/asm/d/d_attention/func_80070018.s deleted file mode 100644 index 61d1f69ee0..0000000000 --- a/asm/d/d_attention/func_80070018.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80070018: -/* 80070018 54 64 30 32 */ slwi r4, r3, 6 -/* 8007001C 3C 60 80 3E */ lis r3, m_cpadInfo__8mDoCPd_c@ha /* 0x803DD2E8@ha */ -/* 80070020 38 03 D2 E8 */ addi r0, r3, m_cpadInfo__8mDoCPd_c@l /* 0x803DD2E8@l */ -/* 80070024 7C 60 22 14 */ add r3, r0, r4 -/* 80070028 88 63 00 39 */ lbz r3, 0x39(r3) -/* 8007002C 30 03 FF FF */ addic r0, r3, -1 -/* 80070030 7C 60 19 10 */ subfe r3, r0, r3 -/* 80070034 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/getActionBtnB__12dAttention_cFv.s b/asm/d/d_attention/getActionBtnB__12dAttention_cFv.s deleted file mode 100644 index bf10c5233c..0000000000 --- a/asm/d/d_attention/getActionBtnB__12dAttention_cFv.s +++ /dev/null @@ -1,69 +0,0 @@ -lbl_80070880: -/* 80070880 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80070884 7C 08 02 A6 */ mflr r0 -/* 80070888 90 01 00 24 */ stw r0, 0x24(r1) -/* 8007088C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80070890 48 2F 19 49 */ bl _savegpr_28 -/* 80070894 7C 7C 1B 78 */ mr r28, r3 -/* 80070898 38 80 00 00 */ li r4, 0 -/* 8007089C 4B FF FF A9 */ bl GetLockonList__12dAttention_cFl -/* 800708A0 7C 7D 1B 79 */ or. r29, r3, r3 -/* 800708A4 41 82 00 48 */ beq lbl_800708EC -/* 800708A8 48 00 2F BD */ bl getActor__10dAttList_cFv -/* 800708AC 28 03 00 00 */ cmplwi r3, 0 -/* 800708B0 41 82 00 3C */ beq lbl_800708EC -/* 800708B4 80 1D 00 0C */ lwz r0, 0xc(r29) -/* 800708B8 28 00 00 01 */ cmplwi r0, 1 -/* 800708BC 40 82 00 30 */ bne lbl_800708EC -/* 800708C0 7F 83 E3 78 */ mr r3, r28 -/* 800708C4 48 00 2F 21 */ bl LockonTruth__12dAttention_cFv -/* 800708C8 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 800708CC 41 82 00 20 */ beq lbl_800708EC -/* 800708D0 7F A3 EB 78 */ mr r3, r29 -/* 800708D4 48 00 2F 91 */ bl getActor__10dAttList_cFv -/* 800708D8 80 03 05 5C */ lwz r0, 0x55c(r3) -/* 800708DC 54 00 01 8D */ rlwinm. r0, r0, 0, 6, 6 -/* 800708E0 40 82 00 0C */ bne lbl_800708EC -/* 800708E4 7F A3 EB 78 */ mr r3, r29 -/* 800708E8 48 00 00 74 */ b lbl_8007095C -lbl_800708EC: -/* 800708EC 80 1C 04 30 */ lwz r0, 0x430(r28) -/* 800708F0 2C 00 00 00 */ cmpwi r0, 0 -/* 800708F4 40 82 00 0C */ bne lbl_80070900 -/* 800708F8 38 60 00 00 */ li r3, 0 -/* 800708FC 48 00 00 60 */ b lbl_8007095C -lbl_80070900: -/* 80070900 3B A0 00 00 */ li r29, 0 -/* 80070904 3B E0 00 00 */ li r31, 0 -/* 80070908 48 00 00 44 */ b lbl_8007094C -lbl_8007090C: -/* 8007090C 7C 7C FA 14 */ add r3, r28, r31 -/* 80070910 80 03 03 EC */ lwz r0, 0x3ec(r3) -/* 80070914 28 00 00 03 */ cmplwi r0, 3 -/* 80070918 40 82 00 24 */ bne lbl_8007093C -/* 8007091C 3B C3 03 E0 */ addi r30, r3, 0x3e0 -/* 80070920 7F C3 F3 78 */ mr r3, r30 -/* 80070924 48 00 2F 41 */ bl getActor__10dAttList_cFv -/* 80070928 80 03 05 5C */ lwz r0, 0x55c(r3) -/* 8007092C 54 00 01 8D */ rlwinm. r0, r0, 0, 6, 6 -/* 80070930 40 82 00 14 */ bne lbl_80070944 -/* 80070934 7F C3 F3 78 */ mr r3, r30 -/* 80070938 48 00 00 24 */ b lbl_8007095C -lbl_8007093C: -/* 8007093C 38 63 03 E0 */ addi r3, r3, 0x3e0 -/* 80070940 48 00 00 1C */ b lbl_8007095C -lbl_80070944: -/* 80070944 3B BD 00 01 */ addi r29, r29, 1 -/* 80070948 3B FF 00 14 */ addi r31, r31, 0x14 -lbl_8007094C: -/* 8007094C 80 1C 04 30 */ lwz r0, 0x430(r28) -/* 80070950 7C 1D 00 00 */ cmpw r29, r0 -/* 80070954 41 80 FF B8 */ blt lbl_8007090C -/* 80070958 38 60 00 00 */ li r3, 0 -lbl_8007095C: -/* 8007095C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80070960 48 2F 18 C5 */ bl _restgpr_28 -/* 80070964 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80070968 7C 08 03 A6 */ mtlr r0 -/* 8007096C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80070970 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/getActionBtnXY__12dAttention_cFv.s b/asm/d/d_attention/getActionBtnXY__12dAttention_cFv.s deleted file mode 100644 index 7a236eae4a..0000000000 --- a/asm/d/d_attention/getActionBtnXY__12dAttention_cFv.s +++ /dev/null @@ -1,71 +0,0 @@ -lbl_80070974: -/* 80070974 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80070978 7C 08 02 A6 */ mflr r0 -/* 8007097C 90 01 00 24 */ stw r0, 0x24(r1) -/* 80070980 39 61 00 20 */ addi r11, r1, 0x20 -/* 80070984 48 2F 18 55 */ bl _savegpr_28 -/* 80070988 7C 7C 1B 78 */ mr r28, r3 -/* 8007098C 38 80 00 00 */ li r4, 0 -/* 80070990 4B FF FE B5 */ bl GetLockonList__12dAttention_cFl -/* 80070994 7C 7D 1B 79 */ or. r29, r3, r3 -/* 80070998 41 82 00 54 */ beq lbl_800709EC -/* 8007099C 48 00 2E C9 */ bl getActor__10dAttList_cFv -/* 800709A0 28 03 00 00 */ cmplwi r3, 0 -/* 800709A4 41 82 00 48 */ beq lbl_800709EC -/* 800709A8 80 1D 00 0C */ lwz r0, 0xc(r29) -/* 800709AC 28 00 00 01 */ cmplwi r0, 1 -/* 800709B0 40 82 00 3C */ bne lbl_800709EC -/* 800709B4 7F 83 E3 78 */ mr r3, r28 -/* 800709B8 48 00 2E 2D */ bl LockonTruth__12dAttention_cFv -/* 800709BC 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 800709C0 41 82 00 2C */ beq lbl_800709EC -/* 800709C4 7F A3 EB 78 */ mr r3, r29 -/* 800709C8 48 00 2E 9D */ bl getActor__10dAttList_cFv -/* 800709CC A0 03 00 FA */ lhz r0, 0xfa(r3) -/* 800709D0 54 00 06 B4 */ rlwinm r0, r0, 0, 0x1a, 0x1a -/* 800709D4 2C 00 00 20 */ cmpwi r0, 0x20 -/* 800709D8 40 82 00 0C */ bne lbl_800709E4 -/* 800709DC 7F A3 EB 78 */ mr r3, r29 -/* 800709E0 48 00 00 78 */ b lbl_80070A58 -lbl_800709E4: -/* 800709E4 38 60 00 00 */ li r3, 0 -/* 800709E8 48 00 00 70 */ b lbl_80070A58 -lbl_800709EC: -/* 800709EC 80 1C 04 30 */ lwz r0, 0x430(r28) -/* 800709F0 2C 00 00 00 */ cmpwi r0, 0 -/* 800709F4 40 82 00 0C */ bne lbl_80070A00 -/* 800709F8 38 60 00 00 */ li r3, 0 -/* 800709FC 48 00 00 5C */ b lbl_80070A58 -lbl_80070A00: -/* 80070A00 3B A0 00 00 */ li r29, 0 -/* 80070A04 3B E0 00 00 */ li r31, 0 -/* 80070A08 48 00 00 40 */ b lbl_80070A48 -lbl_80070A0C: -/* 80070A0C 7C 7C FA 14 */ add r3, r28, r31 -/* 80070A10 80 03 03 EC */ lwz r0, 0x3ec(r3) -/* 80070A14 28 00 00 03 */ cmplwi r0, 3 -/* 80070A18 40 82 00 28 */ bne lbl_80070A40 -/* 80070A1C 3B C3 03 E0 */ addi r30, r3, 0x3e0 -/* 80070A20 7F C3 F3 78 */ mr r3, r30 -/* 80070A24 48 00 2E 41 */ bl getActor__10dAttList_cFv -/* 80070A28 A0 03 00 FA */ lhz r0, 0xfa(r3) -/* 80070A2C 54 00 06 B4 */ rlwinm r0, r0, 0, 0x1a, 0x1a -/* 80070A30 2C 00 00 20 */ cmpwi r0, 0x20 -/* 80070A34 40 82 00 0C */ bne lbl_80070A40 -/* 80070A38 7F C3 F3 78 */ mr r3, r30 -/* 80070A3C 48 00 00 1C */ b lbl_80070A58 -lbl_80070A40: -/* 80070A40 3B BD 00 01 */ addi r29, r29, 1 -/* 80070A44 3B FF 00 14 */ addi r31, r31, 0x14 -lbl_80070A48: -/* 80070A48 80 1C 04 30 */ lwz r0, 0x430(r28) -/* 80070A4C 7C 1D 00 00 */ cmpw r29, r0 -/* 80070A50 41 80 FF BC */ blt lbl_80070A0C -/* 80070A54 38 60 00 00 */ li r3, 0 -lbl_80070A58: -/* 80070A58 39 61 00 20 */ addi r11, r1, 0x20 -/* 80070A5C 48 2F 17 C9 */ bl _restgpr_28 -/* 80070A60 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80070A64 7C 08 03 A6 */ mtlr r0 -/* 80070A68 38 21 00 20 */ addi r1, r1, 0x20 -/* 80070A6C 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/getActor__10dAttList_cFv.s b/asm/d/d_attention/getActor__10dAttList_cFv.s deleted file mode 100644 index 24b7acdaa7..0000000000 --- a/asm/d/d_attention/getActor__10dAttList_cFv.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_80073864: -/* 80073864 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80073868 7C 08 02 A6 */ mflr r0 -/* 8007386C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80073870 80 03 00 10 */ lwz r0, 0x10(r3) -/* 80073874 90 01 00 08 */ stw r0, 8(r1) -/* 80073878 3C 60 80 02 */ lis r3, fpcSch_JudgeByID__FPvPv@ha /* 0x80023590@ha */ -/* 8007387C 38 63 35 90 */ addi r3, r3, fpcSch_JudgeByID__FPvPv@l /* 0x80023590@l */ -/* 80073880 38 81 00 08 */ addi r4, r1, 8 -/* 80073884 4B FA 5F 75 */ bl fopAcIt_Judge__FPFPvPv_PvPv -/* 80073888 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007388C 7C 08 03 A6 */ mtlr r0 -/* 80073890 38 21 00 10 */ addi r1, r1, 0x10 -/* 80073894 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/getPId__10dAttHint_cFPv.s b/asm/d/d_attention/getPId__10dAttHint_cFPv.s deleted file mode 100644 index 0916ea26f0..0000000000 --- a/asm/d/d_attention/getPId__10dAttHint_cFPv.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_800738B4: -/* 800738B4 28 04 00 00 */ cmplwi r4, 0 -/* 800738B8 41 82 00 0C */ beq lbl_800738C4 -/* 800738BC 80 64 00 04 */ lwz r3, 4(r4) -/* 800738C0 4E 80 00 20 */ blr -lbl_800738C4: -/* 800738C4 38 60 FF FF */ li r3, -1 -/* 800738C8 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/init__10dAttHint_cFv.s b/asm/d/d_attention/init__10dAttHint_cFv.s deleted file mode 100644 index bec7ea59b6..0000000000 --- a/asm/d/d_attention/init__10dAttHint_cFv.s +++ /dev/null @@ -1,7 +0,0 @@ -lbl_80073958: -/* 80073958 38 00 FF FF */ li r0, -1 -/* 8007395C 90 03 00 00 */ stw r0, 0(r3) -/* 80073960 90 03 00 08 */ stw r0, 8(r3) -/* 80073964 38 00 02 00 */ li r0, 0x200 -/* 80073968 90 03 00 04 */ stw r0, 4(r3) -/* 8007396C 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/init__10dAttLook_cFv.s b/asm/d/d_attention/init__10dAttLook_cFv.s deleted file mode 100644 index 183f84e507..0000000000 --- a/asm/d/d_attention/init__10dAttLook_cFv.s +++ /dev/null @@ -1,7 +0,0 @@ -lbl_80073CD4: -/* 80073CD4 38 00 FF FF */ li r0, -1 -/* 80073CD8 90 03 00 00 */ stw r0, 0(r3) -/* 80073CDC 90 03 00 0C */ stw r0, 0xc(r3) -/* 80073CE0 38 00 00 03 */ li r0, 3 -/* 80073CE4 90 03 00 04 */ stw r0, 4(r3) -/* 80073CE8 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/init__11dAttCatch_cFv.s b/asm/d/d_attention/init__11dAttCatch_cFv.s deleted file mode 100644 index 4e8cc29935..0000000000 --- a/asm/d/d_attention/init__11dAttCatch_cFv.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_800739BC: -/* 800739BC 38 00 00 67 */ li r0, 0x67 -/* 800739C0 98 03 00 0C */ stb r0, 0xc(r3) -/* 800739C4 38 00 FF FF */ li r0, -1 -/* 800739C8 90 03 00 00 */ stw r0, 0(r3) -/* 800739CC 90 03 00 10 */ stw r0, 0x10(r3) -/* 800739D0 38 00 00 03 */ li r0, 3 -/* 800739D4 90 03 00 04 */ stw r0, 4(r3) -/* 800739D8 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/judgementStatus4Hold__12dAttention_cFv.s b/asm/d/d_attention/judgementStatus4Hold__12dAttention_cFv.s deleted file mode 100644 index 216dbe9184..0000000000 --- a/asm/d/d_attention/judgementStatus4Hold__12dAttention_cFv.s +++ /dev/null @@ -1,188 +0,0 @@ -lbl_80072344: -/* 80072344 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80072348 7C 08 02 A6 */ mflr r0 -/* 8007234C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80072350 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80072354 7C 7F 1B 78 */ mr r31, r3 -/* 80072358 88 03 03 29 */ lbz r0, 0x329(r3) -/* 8007235C 2C 00 00 01 */ cmpwi r0, 1 -/* 80072360 41 82 00 68 */ beq lbl_800723C8 -/* 80072364 40 80 00 10 */ bge lbl_80072374 -/* 80072368 2C 00 00 00 */ cmpwi r0, 0 -/* 8007236C 40 80 00 14 */ bge lbl_80072380 -/* 80072370 48 00 02 34 */ b lbl_800725A4 -lbl_80072374: -/* 80072374 2C 00 00 03 */ cmpwi r0, 3 -/* 80072378 40 80 02 2C */ bge lbl_800725A4 -/* 8007237C 48 00 01 30 */ b lbl_800724AC -lbl_80072380: -/* 80072380 38 00 00 00 */ li r0, 0 -/* 80072384 98 1F 03 2F */ stb r0, 0x32f(r31) -/* 80072388 98 1F 03 2E */ stb r0, 0x32e(r31) -/* 8007238C 38 00 FF FF */ li r0, -1 -/* 80072390 90 1F 00 04 */ stw r0, 4(r31) -/* 80072394 4B FF F5 11 */ bl stockAttention__12dAttention_cFv -/* 80072398 88 1F 03 2B */ lbz r0, 0x32b(r31) -/* 8007239C 28 00 00 00 */ cmplwi r0, 0 -/* 800723A0 40 82 02 04 */ bne lbl_800725A4 -/* 800723A4 7F E3 FB 78 */ mr r3, r31 -/* 800723A8 4B FF FE F9 */ bl triggerProc__12dAttention_cFv -/* 800723AC 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 800723B0 41 82 01 F4 */ beq lbl_800725A4 -/* 800723B4 38 00 00 01 */ li r0, 1 -/* 800723B8 98 1F 03 29 */ stb r0, 0x329(r31) -/* 800723BC 38 00 00 0F */ li r0, 0xf -/* 800723C0 98 1F 03 2E */ stb r0, 0x32e(r31) -/* 800723C4 48 00 01 E0 */ b lbl_800725A4 -lbl_800723C8: -/* 800723C8 38 80 00 00 */ li r4, 0 -/* 800723CC 48 00 13 01 */ bl LockonTargetPId__12dAttention_cFl -/* 800723D0 90 7F 00 04 */ stw r3, 4(r31) -/* 800723D4 38 00 00 00 */ li r0, 0 -/* 800723D8 98 1F 03 2F */ stb r0, 0x32f(r31) -/* 800723DC 7F E3 FB 78 */ mr r3, r31 -/* 800723E0 4B FF FF 0D */ bl lostCheck__12dAttention_cFv -/* 800723E4 2C 03 00 00 */ cmpwi r3, 0 -/* 800723E8 41 82 00 50 */ beq lbl_80072438 -/* 800723EC 38 00 FF FF */ li r0, -1 -/* 800723F0 90 1F 00 04 */ stw r0, 4(r31) -/* 800723F4 7F E3 FB 78 */ mr r3, r31 -/* 800723F8 4B FF F4 AD */ bl stockAttention__12dAttention_cFv -/* 800723FC 7F E3 FB 78 */ mr r3, r31 -/* 80072400 4B FF FE A1 */ bl triggerProc__12dAttention_cFv -/* 80072404 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80072408 41 82 00 10 */ beq lbl_80072418 -/* 8007240C 38 00 00 01 */ li r0, 1 -/* 80072410 98 1F 03 29 */ stb r0, 0x329(r31) -/* 80072414 48 00 00 80 */ b lbl_80072494 -lbl_80072418: -/* 80072418 38 00 00 00 */ li r0, 0 -/* 8007241C 98 1F 03 29 */ stb r0, 0x329(r31) -/* 80072420 7F E3 FB 78 */ mr r3, r31 -/* 80072424 4B FF F6 45 */ bl freeAttention__12dAttention_cFv -/* 80072428 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 8007242C 64 00 00 80 */ oris r0, r0, 0x80 -/* 80072430 90 1F 03 34 */ stw r0, 0x334(r31) -/* 80072434 48 00 00 60 */ b lbl_80072494 -lbl_80072438: -/* 80072438 88 1F 03 2B */ lbz r0, 0x32b(r31) -/* 8007243C 28 00 00 04 */ cmplwi r0, 4 -/* 80072440 40 82 00 24 */ bne lbl_80072464 -/* 80072444 38 00 00 02 */ li r0, 2 -/* 80072448 98 1F 03 29 */ stb r0, 0x329(r31) -/* 8007244C 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072450 60 00 00 10 */ ori r0, r0, 0x10 -/* 80072454 90 1F 03 34 */ stw r0, 0x334(r31) -/* 80072458 38 00 00 0A */ li r0, 0xa -/* 8007245C 98 1F 03 2F */ stb r0, 0x32f(r31) -/* 80072460 48 00 00 34 */ b lbl_80072494 -lbl_80072464: -/* 80072464 88 1F 03 2E */ lbz r0, 0x32e(r31) -/* 80072468 28 00 00 00 */ cmplwi r0, 0 -/* 8007246C 40 82 00 28 */ bne lbl_80072494 -/* 80072470 7F E3 FB 78 */ mr r3, r31 -/* 80072474 38 80 FF FF */ li r4, -1 -/* 80072478 4B FF ED C9 */ bl initList__12dAttention_cFUl -/* 8007247C 7F E3 FB 78 */ mr r3, r31 -/* 80072480 4B FF EF 4D */ bl makeList__12dAttention_cFv -/* 80072484 2C 03 00 00 */ cmpwi r3, 0 -/* 80072488 41 82 00 0C */ beq lbl_80072494 -/* 8007248C 7F E3 FB 78 */ mr r3, r31 -/* 80072490 4B FF F2 29 */ bl sortList__12dAttention_cFv -lbl_80072494: -/* 80072494 88 7F 03 2E */ lbz r3, 0x32e(r31) -/* 80072498 28 03 00 00 */ cmplwi r3, 0 -/* 8007249C 41 82 01 08 */ beq lbl_800725A4 -/* 800724A0 38 03 FF FF */ addi r0, r3, -1 -/* 800724A4 98 1F 03 2E */ stb r0, 0x32e(r31) -/* 800724A8 48 00 00 FC */ b lbl_800725A4 -lbl_800724AC: -/* 800724AC 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 800724B0 60 00 00 40 */ ori r0, r0, 0x40 -/* 800724B4 90 1F 03 34 */ stw r0, 0x334(r31) -/* 800724B8 4B FF FE 35 */ bl lostCheck__12dAttention_cFv -/* 800724BC 2C 03 00 00 */ cmpwi r3, 0 -/* 800724C0 41 82 00 50 */ beq lbl_80072510 -/* 800724C4 38 00 FF FF */ li r0, -1 -/* 800724C8 90 1F 00 04 */ stw r0, 4(r31) -/* 800724CC 7F E3 FB 78 */ mr r3, r31 -/* 800724D0 4B FF F3 D5 */ bl stockAttention__12dAttention_cFv -/* 800724D4 7F E3 FB 78 */ mr r3, r31 -/* 800724D8 4B FF FD C9 */ bl triggerProc__12dAttention_cFv -/* 800724DC 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 800724E0 41 82 00 10 */ beq lbl_800724F0 -/* 800724E4 38 00 00 01 */ li r0, 1 -/* 800724E8 98 1F 03 29 */ stb r0, 0x329(r31) -/* 800724EC 48 00 00 A4 */ b lbl_80072590 -lbl_800724F0: -/* 800724F0 38 00 00 00 */ li r0, 0 -/* 800724F4 98 1F 03 29 */ stb r0, 0x329(r31) -/* 800724F8 7F E3 FB 78 */ mr r3, r31 -/* 800724FC 4B FF F5 6D */ bl freeAttention__12dAttention_cFv -/* 80072500 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072504 64 00 00 80 */ oris r0, r0, 0x80 -/* 80072508 90 1F 03 34 */ stw r0, 0x334(r31) -/* 8007250C 48 00 00 84 */ b lbl_80072590 -lbl_80072510: -/* 80072510 88 1F 03 2B */ lbz r0, 0x32b(r31) -/* 80072514 28 00 00 00 */ cmplwi r0, 0 -/* 80072518 40 82 00 48 */ bne lbl_80072560 -/* 8007251C 7F E3 FB 78 */ mr r3, r31 -/* 80072520 4B FF F4 41 */ bl nextAttention__12dAttention_cFv -/* 80072524 28 03 00 00 */ cmplwi r3, 0 -/* 80072528 41 82 00 24 */ beq lbl_8007254C -/* 8007252C 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072530 60 00 00 08 */ ori r0, r0, 8 -/* 80072534 90 1F 03 34 */ stw r0, 0x334(r31) -/* 80072538 38 00 00 01 */ li r0, 1 -/* 8007253C 98 1F 03 29 */ stb r0, 0x329(r31) -/* 80072540 38 00 00 0F */ li r0, 0xf -/* 80072544 98 1F 03 2E */ stb r0, 0x32e(r31) -/* 80072548 48 00 00 48 */ b lbl_80072590 -lbl_8007254C: -/* 8007254C 38 00 00 00 */ li r0, 0 -/* 80072550 98 1F 03 29 */ stb r0, 0x329(r31) -/* 80072554 7F E3 FB 78 */ mr r3, r31 -/* 80072558 4B FF F5 11 */ bl freeAttention__12dAttention_cFv -/* 8007255C 48 00 00 34 */ b lbl_80072590 -lbl_80072560: -/* 80072560 7F E3 FB 78 */ mr r3, r31 -/* 80072564 38 80 00 00 */ li r4, 0 -/* 80072568 48 00 0F D5 */ bl LockonTarget__12dAttention_cFl -/* 8007256C 28 03 00 00 */ cmplwi r3, 0 -/* 80072570 41 82 00 10 */ beq lbl_80072580 -/* 80072574 88 1F 03 2F */ lbz r0, 0x32f(r31) -/* 80072578 28 00 00 00 */ cmplwi r0, 0 -/* 8007257C 40 82 00 14 */ bne lbl_80072590 -lbl_80072580: -/* 80072580 38 00 00 00 */ li r0, 0 -/* 80072584 98 1F 03 29 */ stb r0, 0x329(r31) -/* 80072588 7F E3 FB 78 */ mr r3, r31 -/* 8007258C 4B FF F4 DD */ bl freeAttention__12dAttention_cFv -lbl_80072590: -/* 80072590 88 7F 03 2F */ lbz r3, 0x32f(r31) -/* 80072594 28 03 00 00 */ cmplwi r3, 0 -/* 80072598 41 82 00 0C */ beq lbl_800725A4 -/* 8007259C 38 03 FF FF */ addi r0, r3, -1 -/* 800725A0 98 1F 03 2F */ stb r0, 0x32f(r31) -lbl_800725A4: -/* 800725A4 80 7F 03 34 */ lwz r3, 0x334(r31) -/* 800725A8 54 60 04 E7 */ rlwinm. r0, r3, 0, 0x13, 0x13 -/* 800725AC 40 82 00 30 */ bne lbl_800725DC -/* 800725B0 60 60 40 00 */ ori r0, r3, 0x4000 -/* 800725B4 90 1F 03 34 */ stw r0, 0x334(r31) -/* 800725B8 7F E3 FB 78 */ mr r3, r31 -/* 800725BC 38 80 FF FF */ li r4, -1 -/* 800725C0 4B FF EC 81 */ bl initList__12dAttention_cFUl -/* 800725C4 7F E3 FB 78 */ mr r3, r31 -/* 800725C8 4B FF EE 05 */ bl makeList__12dAttention_cFv -/* 800725CC 2C 03 00 00 */ cmpwi r3, 0 -/* 800725D0 41 82 00 0C */ beq lbl_800725DC -/* 800725D4 7F E3 FB 78 */ mr r3, r31 -/* 800725D8 4B FF F0 E1 */ bl sortList__12dAttention_cFv -lbl_800725DC: -/* 800725DC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800725E0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800725E4 7C 08 03 A6 */ mtlr r0 -/* 800725E8 38 21 00 10 */ addi r1, r1, 0x10 -/* 800725EC 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/judgementStatus4Switch__12dAttention_cFv.s b/asm/d/d_attention/judgementStatus4Switch__12dAttention_cFv.s deleted file mode 100644 index 451fa944aa..0000000000 --- a/asm/d/d_attention/judgementStatus4Switch__12dAttention_cFv.s +++ /dev/null @@ -1,225 +0,0 @@ -lbl_800725F0: -/* 800725F0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800725F4 7C 08 02 A6 */ mflr r0 -/* 800725F8 90 01 00 14 */ stw r0, 0x14(r1) -/* 800725FC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80072600 7C 7F 1B 78 */ mr r31, r3 -/* 80072604 88 03 03 29 */ lbz r0, 0x329(r3) -/* 80072608 2C 00 00 01 */ cmpwi r0, 1 -/* 8007260C 41 82 00 6C */ beq lbl_80072678 -/* 80072610 40 80 00 10 */ bge lbl_80072620 -/* 80072614 2C 00 00 00 */ cmpwi r0, 0 -/* 80072618 40 80 00 14 */ bge lbl_8007262C -/* 8007261C 48 00 02 BC */ b lbl_800728D8 -lbl_80072620: -/* 80072620 2C 00 00 03 */ cmpwi r0, 3 -/* 80072624 40 80 02 B4 */ bge lbl_800728D8 -/* 80072628 48 00 01 E0 */ b lbl_80072808 -lbl_8007262C: -/* 8007262C 38 00 FF FF */ li r0, -1 -/* 80072630 90 1F 00 04 */ stw r0, 4(r31) -/* 80072634 4B FF F2 71 */ bl stockAttention__12dAttention_cFv -/* 80072638 38 00 00 00 */ li r0, 0 -/* 8007263C 98 1F 03 2F */ stb r0, 0x32f(r31) -/* 80072640 98 1F 03 2E */ stb r0, 0x32e(r31) -/* 80072644 88 1F 03 2B */ lbz r0, 0x32b(r31) -/* 80072648 28 00 00 00 */ cmplwi r0, 0 -/* 8007264C 40 82 02 8C */ bne lbl_800728D8 -/* 80072650 7F E3 FB 78 */ mr r3, r31 -/* 80072654 4B FF FC 4D */ bl triggerProc__12dAttention_cFv -/* 80072658 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 8007265C 41 82 02 7C */ beq lbl_800728D8 -/* 80072660 38 00 00 01 */ li r0, 1 -/* 80072664 98 1F 03 29 */ stb r0, 0x329(r31) -/* 80072668 38 00 00 0F */ li r0, 0xf -/* 8007266C 98 1F 03 2E */ stb r0, 0x32e(r31) -/* 80072670 98 1F 03 2F */ stb r0, 0x32f(r31) -/* 80072674 48 00 02 64 */ b lbl_800728D8 -lbl_80072678: -/* 80072678 38 80 00 00 */ li r4, 0 -/* 8007267C 48 00 10 51 */ bl LockonTargetPId__12dAttention_cFl -/* 80072680 90 7F 00 04 */ stw r3, 4(r31) -/* 80072684 88 1F 03 2F */ lbz r0, 0x32f(r31) -/* 80072688 28 00 00 00 */ cmplwi r0, 0 -/* 8007268C 40 82 00 18 */ bne lbl_800726A4 -/* 80072690 38 00 00 00 */ li r0, 0 -/* 80072694 98 1F 03 29 */ stb r0, 0x329(r31) -/* 80072698 7F E3 FB 78 */ mr r3, r31 -/* 8007269C 4B FF F3 CD */ bl freeAttention__12dAttention_cFv -/* 800726A0 48 00 01 18 */ b lbl_800727B8 -lbl_800726A4: -/* 800726A4 7F E3 FB 78 */ mr r3, r31 -/* 800726A8 4B FF FC 45 */ bl lostCheck__12dAttention_cFv -/* 800726AC 2C 03 00 00 */ cmpwi r3, 0 -/* 800726B0 41 82 00 50 */ beq lbl_80072700 -/* 800726B4 38 00 FF FF */ li r0, -1 -/* 800726B8 90 1F 00 04 */ stw r0, 4(r31) -/* 800726BC 7F E3 FB 78 */ mr r3, r31 -/* 800726C0 4B FF F1 E5 */ bl stockAttention__12dAttention_cFv -/* 800726C4 7F E3 FB 78 */ mr r3, r31 -/* 800726C8 4B FF FB D9 */ bl triggerProc__12dAttention_cFv -/* 800726CC 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 800726D0 41 82 00 10 */ beq lbl_800726E0 -/* 800726D4 38 00 00 01 */ li r0, 1 -/* 800726D8 98 1F 03 29 */ stb r0, 0x329(r31) -/* 800726DC 48 00 00 DC */ b lbl_800727B8 -lbl_800726E0: -/* 800726E0 38 00 00 00 */ li r0, 0 -/* 800726E4 98 1F 03 29 */ stb r0, 0x329(r31) -/* 800726E8 7F E3 FB 78 */ mr r3, r31 -/* 800726EC 4B FF F3 7D */ bl freeAttention__12dAttention_cFv -/* 800726F0 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 800726F4 64 00 00 80 */ oris r0, r0, 0x80 -/* 800726F8 90 1F 03 34 */ stw r0, 0x334(r31) -/* 800726FC 48 00 00 BC */ b lbl_800727B8 -lbl_80072700: -/* 80072700 88 1F 03 2B */ lbz r0, 0x32b(r31) -/* 80072704 28 00 00 00 */ cmplwi r0, 0 -/* 80072708 40 82 00 80 */ bne lbl_80072788 -/* 8007270C 80 1F 00 0C */ lwz r0, 0xc(r31) -/* 80072710 54 04 30 32 */ slwi r4, r0, 6 -/* 80072714 3C 60 80 3E */ lis r3, m_cpadInfo__8mDoCPd_c@ha /* 0x803DD2E8@ha */ -/* 80072718 38 03 D2 E8 */ addi r0, r3, m_cpadInfo__8mDoCPd_c@l /* 0x803DD2E8@l */ -/* 8007271C 7C 60 22 14 */ add r3, r0, r4 -/* 80072720 C0 23 00 04 */ lfs f1, 4(r3) -/* 80072724 C0 02 8C 34 */ lfs f0, lit_4064(r2) -/* 80072728 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 8007272C 40 80 00 18 */ bge lbl_80072744 -/* 80072730 38 00 00 00 */ li r0, 0 -/* 80072734 98 1F 03 29 */ stb r0, 0x329(r31) -/* 80072738 7F E3 FB 78 */ mr r3, r31 -/* 8007273C 4B FF F3 2D */ bl freeAttention__12dAttention_cFv -/* 80072740 48 00 00 78 */ b lbl_800727B8 -lbl_80072744: -/* 80072744 7F E3 FB 78 */ mr r3, r31 -/* 80072748 4B FF F2 19 */ bl nextAttention__12dAttention_cFv -/* 8007274C 28 03 00 00 */ cmplwi r3, 0 -/* 80072750 41 82 00 24 */ beq lbl_80072774 -/* 80072754 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072758 60 00 00 08 */ ori r0, r0, 8 -/* 8007275C 90 1F 03 34 */ stw r0, 0x334(r31) -/* 80072760 38 00 00 01 */ li r0, 1 -/* 80072764 98 1F 03 29 */ stb r0, 0x329(r31) -/* 80072768 38 00 00 0F */ li r0, 0xf -/* 8007276C 98 1F 03 2E */ stb r0, 0x32e(r31) -/* 80072770 48 00 00 48 */ b lbl_800727B8 -lbl_80072774: -/* 80072774 38 00 00 00 */ li r0, 0 -/* 80072778 98 1F 03 29 */ stb r0, 0x329(r31) -/* 8007277C 7F E3 FB 78 */ mr r3, r31 -/* 80072780 4B FF F2 E9 */ bl freeAttention__12dAttention_cFv -/* 80072784 48 00 00 34 */ b lbl_800727B8 -lbl_80072788: -/* 80072788 88 1F 03 2E */ lbz r0, 0x32e(r31) -/* 8007278C 28 00 00 00 */ cmplwi r0, 0 -/* 80072790 40 82 00 28 */ bne lbl_800727B8 -/* 80072794 7F E3 FB 78 */ mr r3, r31 -/* 80072798 38 80 FF FF */ li r4, -1 -/* 8007279C 4B FF EA A5 */ bl initList__12dAttention_cFUl -/* 800727A0 7F E3 FB 78 */ mr r3, r31 -/* 800727A4 4B FF EC 29 */ bl makeList__12dAttention_cFv -/* 800727A8 2C 03 00 00 */ cmpwi r3, 0 -/* 800727AC 41 82 00 0C */ beq lbl_800727B8 -/* 800727B0 7F E3 FB 78 */ mr r3, r31 -/* 800727B4 4B FF EF 05 */ bl sortList__12dAttention_cFv -lbl_800727B8: -/* 800727B8 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 800727BC 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c -/* 800727C0 40 82 00 18 */ bne lbl_800727D8 -/* 800727C4 88 7F 03 2E */ lbz r3, 0x32e(r31) -/* 800727C8 28 03 00 00 */ cmplwi r3, 0 -/* 800727CC 41 82 00 0C */ beq lbl_800727D8 -/* 800727D0 38 03 FF FF */ addi r0, r3, -1 -/* 800727D4 98 1F 03 2E */ stb r0, 0x32e(r31) -lbl_800727D8: -/* 800727D8 88 1F 03 2B */ lbz r0, 0x32b(r31) -/* 800727DC 28 00 00 01 */ cmplwi r0, 1 -/* 800727E0 40 82 00 1C */ bne lbl_800727FC -/* 800727E4 88 7F 03 2F */ lbz r3, 0x32f(r31) -/* 800727E8 28 03 00 00 */ cmplwi r3, 0 -/* 800727EC 41 82 00 EC */ beq lbl_800728D8 -/* 800727F0 38 03 FF FF */ addi r0, r3, -1 -/* 800727F4 98 1F 03 2F */ stb r0, 0x32f(r31) -/* 800727F8 48 00 00 E0 */ b lbl_800728D8 -lbl_800727FC: -/* 800727FC 38 00 00 0F */ li r0, 0xf -/* 80072800 98 1F 03 2F */ stb r0, 0x32f(r31) -/* 80072804 48 00 00 D4 */ b lbl_800728D8 -lbl_80072808: -/* 80072808 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 8007280C 60 00 00 40 */ ori r0, r0, 0x40 -/* 80072810 90 1F 03 34 */ stw r0, 0x334(r31) -/* 80072814 4B FF FA D9 */ bl lostCheck__12dAttention_cFv -/* 80072818 2C 03 00 00 */ cmpwi r3, 0 -/* 8007281C 41 82 00 50 */ beq lbl_8007286C -/* 80072820 38 00 FF FF */ li r0, -1 -/* 80072824 90 1F 00 04 */ stw r0, 4(r31) -/* 80072828 7F E3 FB 78 */ mr r3, r31 -/* 8007282C 4B FF F0 79 */ bl stockAttention__12dAttention_cFv -/* 80072830 7F E3 FB 78 */ mr r3, r31 -/* 80072834 4B FF FA 6D */ bl triggerProc__12dAttention_cFv -/* 80072838 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 8007283C 41 82 00 10 */ beq lbl_8007284C -/* 80072840 38 00 00 01 */ li r0, 1 -/* 80072844 98 1F 03 29 */ stb r0, 0x329(r31) -/* 80072848 48 00 00 90 */ b lbl_800728D8 -lbl_8007284C: -/* 8007284C 38 00 00 00 */ li r0, 0 -/* 80072850 98 1F 03 29 */ stb r0, 0x329(r31) -/* 80072854 7F E3 FB 78 */ mr r3, r31 -/* 80072858 4B FF F2 11 */ bl freeAttention__12dAttention_cFv -/* 8007285C 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072860 64 00 00 80 */ oris r0, r0, 0x80 -/* 80072864 90 1F 03 34 */ stw r0, 0x334(r31) -/* 80072868 48 00 00 70 */ b lbl_800728D8 -lbl_8007286C: -/* 8007286C 88 1F 03 2B */ lbz r0, 0x32b(r31) -/* 80072870 28 00 00 00 */ cmplwi r0, 0 -/* 80072874 40 82 00 34 */ bne lbl_800728A8 -/* 80072878 38 00 00 00 */ li r0, 0 -/* 8007287C 98 1F 03 29 */ stb r0, 0x329(r31) -/* 80072880 7F E3 FB 78 */ mr r3, r31 -/* 80072884 4B FF FA 1D */ bl triggerProc__12dAttention_cFv -/* 80072888 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 8007288C 41 82 00 4C */ beq lbl_800728D8 -/* 80072890 38 00 00 01 */ li r0, 1 -/* 80072894 98 1F 03 29 */ stb r0, 0x329(r31) -/* 80072898 38 00 00 0F */ li r0, 0xf -/* 8007289C 98 1F 03 2E */ stb r0, 0x32e(r31) -/* 800728A0 98 1F 03 2F */ stb r0, 0x32f(r31) -/* 800728A4 48 00 00 34 */ b lbl_800728D8 -lbl_800728A8: -/* 800728A8 7F E3 FB 78 */ mr r3, r31 -/* 800728AC 38 80 00 00 */ li r4, 0 -/* 800728B0 48 00 0C 8D */ bl LockonTarget__12dAttention_cFl -/* 800728B4 28 03 00 00 */ cmplwi r3, 0 -/* 800728B8 41 82 00 10 */ beq lbl_800728C8 -/* 800728BC 88 1F 03 2F */ lbz r0, 0x32f(r31) -/* 800728C0 28 00 00 00 */ cmplwi r0, 0 -/* 800728C4 40 82 00 14 */ bne lbl_800728D8 -lbl_800728C8: -/* 800728C8 38 00 00 00 */ li r0, 0 -/* 800728CC 98 1F 03 29 */ stb r0, 0x329(r31) -/* 800728D0 7F E3 FB 78 */ mr r3, r31 -/* 800728D4 4B FF F1 95 */ bl freeAttention__12dAttention_cFv -lbl_800728D8: -/* 800728D8 80 7F 03 34 */ lwz r3, 0x334(r31) -/* 800728DC 54 60 04 E7 */ rlwinm. r0, r3, 0, 0x13, 0x13 -/* 800728E0 40 82 00 30 */ bne lbl_80072910 -/* 800728E4 60 60 40 00 */ ori r0, r3, 0x4000 -/* 800728E8 90 1F 03 34 */ stw r0, 0x334(r31) -/* 800728EC 7F E3 FB 78 */ mr r3, r31 -/* 800728F0 38 80 FF FF */ li r4, -1 -/* 800728F4 4B FF E9 4D */ bl initList__12dAttention_cFUl -/* 800728F8 7F E3 FB 78 */ mr r3, r31 -/* 800728FC 4B FF EA D1 */ bl makeList__12dAttention_cFv -/* 80072900 2C 03 00 00 */ cmpwi r3, 0 -/* 80072904 41 82 00 0C */ beq lbl_80072910 -/* 80072908 7F E3 FB 78 */ mr r3, r31 -/* 8007290C 4B FF ED AD */ bl sortList__12dAttention_cFv -lbl_80072910: -/* 80072910 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80072914 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80072918 7C 08 03 A6 */ mtlr r0 -/* 8007291C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80072920 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/lostCheck__12dAttention_cFv.s b/asm/d/d_attention/lostCheck__12dAttention_cFv.s deleted file mode 100644 index 27227559bd..0000000000 --- a/asm/d/d_attention/lostCheck__12dAttention_cFv.s +++ /dev/null @@ -1,25 +0,0 @@ -lbl_800722EC: -/* 800722EC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800722F0 7C 08 02 A6 */ mflr r0 -/* 800722F4 90 01 00 14 */ stw r0, 0x14(r1) -/* 800722F8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800722FC 7C 7F 1B 78 */ mr r31, r3 -/* 80072300 4B FF F7 99 */ bl chaseAttention__12dAttention_cFv -/* 80072304 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 80072308 41 82 00 0C */ beq lbl_80072314 -/* 8007230C 38 60 00 00 */ li r3, 0 -/* 80072310 48 00 00 20 */ b lbl_80072330 -lbl_80072314: -/* 80072314 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072318 60 00 00 10 */ ori r0, r0, 0x10 -/* 8007231C 90 1F 03 34 */ stw r0, 0x334(r31) -/* 80072320 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072324 60 00 00 40 */ ori r0, r0, 0x40 -/* 80072328 90 1F 03 34 */ stw r0, 0x334(r31) -/* 8007232C 38 60 00 01 */ li r3, 1 -lbl_80072330: -/* 80072330 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80072334 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80072338 7C 08 03 A6 */ mtlr r0 -/* 8007233C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80072340 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/makeList__12dAttention_cFv.s b/asm/d/d_attention/makeList__12dAttention_cFv.s deleted file mode 100644 index 07c7947638..0000000000 --- a/asm/d/d_attention/makeList__12dAttention_cFv.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_800713CC: -/* 800713CC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800713D0 7C 08 02 A6 */ mflr r0 -/* 800713D4 90 01 00 14 */ stw r0, 0x14(r1) -/* 800713D8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800713DC 7C 7F 1B 78 */ mr r31, r3 -/* 800713E0 3C 60 80 07 */ lis r3, select_attention__FP10fopAc_ac_cPv@ha /* 0x8007138C@ha */ -/* 800713E4 38 63 13 8C */ addi r3, r3, select_attention__FP10fopAc_ac_cPv@l /* 0x8007138C@l */ -/* 800713E8 7F E4 FB 78 */ mr r4, r31 -/* 800713EC 4B FA 83 D1 */ bl fopAcIt_Executor__FPFPvPv_iPv -/* 800713F0 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 800713F4 60 00 20 00 */ ori r0, r0, 0x2000 -/* 800713F8 90 1F 03 34 */ stw r0, 0x334(r31) -/* 800713FC 80 7F 04 88 */ lwz r3, 0x488(r31) -/* 80071400 80 9F 03 D8 */ lwz r4, 0x3d8(r31) -/* 80071404 80 1F 04 30 */ lwz r0, 0x430(r31) -/* 80071408 7C 60 1A 14 */ add r3, r0, r3 -/* 8007140C 7C 64 1A 14 */ add r3, r4, r3 -/* 80071410 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80071414 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80071418 7C 08 03 A6 */ mtlr r0 -/* 8007141C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80071420 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/nextAttention__12dAttention_cFv.s b/asm/d/d_attention/nextAttention__12dAttention_cFv.s deleted file mode 100644 index a358058ba4..0000000000 --- a/asm/d/d_attention/nextAttention__12dAttention_cFv.s +++ /dev/null @@ -1,73 +0,0 @@ -lbl_80071960: -/* 80071960 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80071964 7C 08 02 A6 */ mflr r0 -/* 80071968 90 01 00 24 */ stw r0, 0x24(r1) -/* 8007196C 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80071970 93 C1 00 18 */ stw r30, 0x18(r1) -/* 80071974 7C 7E 1B 78 */ mr r30, r3 -/* 80071978 88 0D 80 F0 */ lbz r0, data_80450670(r13) -/* 8007197C 28 00 00 00 */ cmplwi r0, 0 -/* 80071980 40 82 00 20 */ bne lbl_800719A0 -/* 80071984 80 1E 03 D8 */ lwz r0, 0x3d8(r30) -/* 80071988 2C 00 00 01 */ cmpwi r0, 1 -/* 8007198C 40 82 00 14 */ bne lbl_800719A0 -/* 80071990 38 00 00 00 */ li r0, 0 -/* 80071994 98 1E 03 2E */ stb r0, 0x32e(r30) -/* 80071998 38 60 00 00 */ li r3, 0 -/* 8007199C 48 00 00 B4 */ b lbl_80071A50 -lbl_800719A0: -/* 800719A0 88 1E 03 2E */ lbz r0, 0x32e(r30) -/* 800719A4 28 00 00 00 */ cmplwi r0, 0 -/* 800719A8 41 82 00 38 */ beq lbl_800719E0 -/* 800719AC 80 7E 03 DC */ lwz r3, 0x3dc(r30) -/* 800719B0 38 03 00 01 */ addi r0, r3, 1 -/* 800719B4 90 1E 03 DC */ stw r0, 0x3dc(r30) -/* 800719B8 80 7E 03 DC */ lwz r3, 0x3dc(r30) -/* 800719BC 80 1E 03 D8 */ lwz r0, 0x3d8(r30) -/* 800719C0 7C 03 00 00 */ cmpw r3, r0 -/* 800719C4 41 80 00 0C */ blt lbl_800719D0 -/* 800719C8 38 00 00 00 */ li r0, 0 -/* 800719CC 90 1E 03 DC */ stw r0, 0x3dc(r30) -lbl_800719D0: -/* 800719D0 7F C3 F3 78 */ mr r3, r30 -/* 800719D4 38 80 00 00 */ li r4, 0 -/* 800719D8 48 00 1B 65 */ bl LockonTarget__12dAttention_cFl -/* 800719DC 48 00 00 74 */ b lbl_80071A50 -lbl_800719E0: -/* 800719E0 80 1E 00 04 */ lwz r0, 4(r30) -/* 800719E4 90 01 00 08 */ stw r0, 8(r1) -/* 800719E8 3C 60 80 02 */ lis r3, fpcSch_JudgeByID__FPvPv@ha /* 0x80023590@ha */ -/* 800719EC 38 63 35 90 */ addi r3, r3, fpcSch_JudgeByID__FPvPv@l /* 0x80023590@l */ -/* 800719F0 38 81 00 08 */ addi r4, r1, 8 -/* 800719F4 4B FA 7E 05 */ bl fopAcIt_Judge__FPFPvPv_PvPv -/* 800719F8 7C 7F 1B 78 */ mr r31, r3 -/* 800719FC 7F C3 F3 78 */ mr r3, r30 -/* 80071A00 38 80 FF FF */ li r4, -1 -/* 80071A04 4B FF F8 3D */ bl initList__12dAttention_cFUl -/* 80071A08 7F C3 F3 78 */ mr r3, r30 -/* 80071A0C 4B FF F9 C1 */ bl makeList__12dAttention_cFv -/* 80071A10 2C 03 00 00 */ cmpwi r3, 0 -/* 80071A14 41 82 00 0C */ beq lbl_80071A20 -/* 80071A18 7F C3 F3 78 */ mr r3, r30 -/* 80071A1C 4B FF FC 9D */ bl sortList__12dAttention_cFv -lbl_80071A20: -/* 80071A20 38 7E 03 38 */ addi r3, r30, 0x338 -/* 80071A24 48 00 1E 41 */ bl getActor__10dAttList_cFv -/* 80071A28 7C 1F 18 40 */ cmplw r31, r3 -/* 80071A2C 40 82 00 18 */ bne lbl_80071A44 -/* 80071A30 80 1E 03 D8 */ lwz r0, 0x3d8(r30) -/* 80071A34 2C 00 00 01 */ cmpwi r0, 1 -/* 80071A38 40 81 00 0C */ ble lbl_80071A44 -/* 80071A3C 38 00 00 01 */ li r0, 1 -/* 80071A40 90 1E 03 DC */ stw r0, 0x3dc(r30) -lbl_80071A44: -/* 80071A44 7F C3 F3 78 */ mr r3, r30 -/* 80071A48 38 80 00 00 */ li r4, 0 -/* 80071A4C 48 00 1A F1 */ bl LockonTarget__12dAttention_cFl -lbl_80071A50: -/* 80071A50 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80071A54 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 80071A58 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80071A5C 7C 08 03 A6 */ mtlr r0 -/* 80071A60 38 21 00 20 */ addi r1, r1, 0x20 -/* 80071A64 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/proc__10dAttHint_cFv.s b/asm/d/d_attention/proc__10dAttHint_cFv.s deleted file mode 100644 index 0fdaf963fc..0000000000 --- a/asm/d/d_attention/proc__10dAttHint_cFv.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_80073970: -/* 80073970 80 03 00 00 */ lwz r0, 0(r3) -/* 80073974 90 03 00 08 */ stw r0, 8(r3) -/* 80073978 38 00 FF FF */ li r0, -1 -/* 8007397C 90 03 00 00 */ stw r0, 0(r3) -/* 80073980 38 00 02 00 */ li r0, 0x200 -/* 80073984 90 03 00 04 */ stw r0, 4(r3) -/* 80073988 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/proc__10dAttLook_cFv.s b/asm/d/d_attention/proc__10dAttLook_cFv.s deleted file mode 100644 index 5992a34e35..0000000000 --- a/asm/d/d_attention/proc__10dAttLook_cFv.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_80073CEC: -/* 80073CEC 80 03 00 00 */ lwz r0, 0(r3) -/* 80073CF0 90 03 00 0C */ stw r0, 0xc(r3) -/* 80073CF4 38 00 FF FF */ li r0, -1 -/* 80073CF8 90 03 00 00 */ stw r0, 0(r3) -/* 80073CFC 38 00 00 03 */ li r0, 3 -/* 80073D00 90 03 00 04 */ stw r0, 4(r3) -/* 80073D04 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/proc__11dAttCatch_cFv.s b/asm/d/d_attention/proc__11dAttCatch_cFv.s deleted file mode 100644 index a1c1548d71..0000000000 --- a/asm/d/d_attention/proc__11dAttCatch_cFv.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_800739DC: -/* 800739DC 80 03 00 00 */ lwz r0, 0(r3) -/* 800739E0 90 03 00 10 */ stw r0, 0x10(r3) -/* 800739E4 88 03 00 0C */ lbz r0, 0xc(r3) -/* 800739E8 98 03 00 14 */ stb r0, 0x14(r3) -/* 800739EC 38 00 FF FF */ li r0, -1 -/* 800739F0 90 03 00 00 */ stw r0, 0(r3) -/* 800739F4 38 00 00 03 */ li r0, 3 -/* 800739F8 90 03 00 04 */ stw r0, 4(r3) -/* 800739FC 38 00 00 67 */ li r0, 0x67 -/* 80073A00 98 03 00 0C */ stb r0, 0xc(r3) -/* 80073A04 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/request__10dAttHint_cFP10fopAc_ac_ci.s b/asm/d/d_attention/request__10dAttHint_cFP10fopAc_ac_ci.s deleted file mode 100644 index 16d2b74d50..0000000000 --- a/asm/d/d_attention/request__10dAttHint_cFP10fopAc_ac_ci.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_800738FC: -/* 800738FC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80073900 7C 08 02 A6 */ mflr r0 -/* 80073904 90 01 00 14 */ stw r0, 0x14(r1) -/* 80073908 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8007390C 93 C1 00 08 */ stw r30, 8(r1) -/* 80073910 7C 7E 1B 78 */ mr r30, r3 -/* 80073914 7C BF 2B 79 */ or. r31, r5, r5 -/* 80073918 40 80 00 08 */ bge lbl_80073920 -/* 8007391C 3B E0 01 FF */ li r31, 0x1ff -lbl_80073920: -/* 80073920 80 1E 00 04 */ lwz r0, 4(r30) -/* 80073924 7C 1F 00 00 */ cmpw r31, r0 -/* 80073928 41 81 00 14 */ bgt lbl_8007393C -/* 8007392C 7F C3 F3 78 */ mr r3, r30 -/* 80073930 4B FF FF 85 */ bl getPId__10dAttHint_cFPv -/* 80073934 90 7E 00 00 */ stw r3, 0(r30) -/* 80073938 93 FE 00 04 */ stw r31, 4(r30) -lbl_8007393C: -/* 8007393C 38 60 00 01 */ li r3, 1 -/* 80073940 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80073944 83 C1 00 08 */ lwz r30, 8(r1) -/* 80073948 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007394C 7C 08 03 A6 */ mtlr r0 -/* 80073950 38 21 00 10 */ addi r1, r1, 0x10 -/* 80073954 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/runDrawProc__12dAttention_cFv.s b/asm/d/d_attention/runDrawProc__12dAttention_cFv.s deleted file mode 100644 index c482c7b91c..0000000000 --- a/asm/d/d_attention/runDrawProc__12dAttention_cFv.s +++ /dev/null @@ -1,167 +0,0 @@ -lbl_80071E84: -/* 80071E84 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80071E88 7C 08 02 A6 */ mflr r0 -/* 80071E8C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80071E90 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80071E94 7C 7F 1B 78 */ mr r31, r3 -/* 80071E98 80 63 03 34 */ lwz r3, 0x334(r3) -/* 80071E9C 54 60 EF FF */ rlwinm. r0, r3, 0x1d, 0x1f, 0x1f -/* 80071EA0 41 82 00 7C */ beq lbl_80071F1C -/* 80071EA4 38 7F 00 28 */ addi r3, r31, 0x28 -/* 80071EA8 88 9F 04 FC */ lbz r4, 0x4fc(r31) -/* 80071EAC 38 A0 00 00 */ li r5, 0 -/* 80071EB0 48 00 11 39 */ bl setAlphaAnm__10dAttDraw_cFUcUc -/* 80071EB4 38 7F 00 28 */ addi r3, r31, 0x28 -/* 80071EB8 38 80 00 01 */ li r4, 1 -/* 80071EBC C0 3F 05 04 */ lfs f1, 0x504(r31) -/* 80071EC0 48 00 0F 19 */ bl setAnm__10dAttDraw_cFUcf -/* 80071EC4 C0 1F 04 EC */ lfs f0, 0x4ec(r31) -/* 80071EC8 D0 1F 01 8C */ stfs f0, 0x18c(r31) -/* 80071ECC C0 1F 04 F0 */ lfs f0, 0x4f0(r31) -/* 80071ED0 D0 1F 01 90 */ stfs f0, 0x190(r31) -/* 80071ED4 C0 1F 04 F8 */ lfs f0, 0x4f8(r31) -/* 80071ED8 D0 1F 01 94 */ stfs f0, 0x194(r31) -/* 80071EDC 38 00 00 01 */ li r0, 1 -/* 80071EE0 98 1F 01 9D */ stb r0, 0x19d(r31) -/* 80071EE4 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80071EE8 38 A3 61 C0 */ addi r5, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80071EEC 80 85 5F 18 */ lwz r4, 0x5f18(r5) -/* 80071EF0 3C 60 36 A0 */ lis r3, 0x36A0 /* 0x36A02311@ha */ -/* 80071EF4 38 03 23 11 */ addi r0, r3, 0x2311 /* 0x36A02311@l */ -/* 80071EF8 7C 80 00 39 */ and. r0, r4, r0 -/* 80071EFC 41 82 00 10 */ beq lbl_80071F0C -/* 80071F00 80 05 5F 1C */ lwz r0, 0x5f1c(r5) -/* 80071F04 70 00 00 11 */ andi. r0, r0, 0x11 -/* 80071F08 41 82 01 80 */ beq lbl_80072088 -lbl_80071F0C: -/* 80071F0C 7F E3 FB 78 */ mr r3, r31 -/* 80071F10 38 80 00 57 */ li r4, 0x57 -/* 80071F14 48 00 0E 6D */ bl lockSoundStart__12dAttention_cFUl -/* 80071F18 48 00 01 70 */ b lbl_80072088 -lbl_80071F1C: -/* 80071F1C 54 60 06 F7 */ rlwinm. r0, r3, 0, 0x1b, 0x1b -/* 80071F20 41 82 00 6C */ beq lbl_80071F8C -/* 80071F24 38 7F 00 28 */ addi r3, r31, 0x28 -/* 80071F28 88 9F 04 FD */ lbz r4, 0x4fd(r31) -/* 80071F2C 38 A0 00 01 */ li r5, 1 -/* 80071F30 48 00 10 B9 */ bl setAlphaAnm__10dAttDraw_cFUcUc -/* 80071F34 88 1F 03 28 */ lbz r0, 0x328(r31) -/* 80071F38 7C 00 07 75 */ extsb. r0, r0 -/* 80071F3C 41 80 00 18 */ blt lbl_80071F54 -/* 80071F40 38 00 00 01 */ li r0, 1 -/* 80071F44 98 1F 03 28 */ stb r0, 0x328(r31) -/* 80071F48 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80071F4C 64 00 40 00 */ oris r0, r0, 0x4000 -/* 80071F50 90 1F 03 34 */ stw r0, 0x334(r31) -lbl_80071F54: -/* 80071F54 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80071F58 38 A3 61 C0 */ addi r5, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80071F5C 80 85 5F 18 */ lwz r4, 0x5f18(r5) -/* 80071F60 3C 60 36 A0 */ lis r3, 0x36A0 /* 0x36A02311@ha */ -/* 80071F64 38 03 23 11 */ addi r0, r3, 0x2311 /* 0x36A02311@l */ -/* 80071F68 7C 80 00 39 */ and. r0, r4, r0 -/* 80071F6C 41 82 00 10 */ beq lbl_80071F7C -/* 80071F70 80 05 5F 1C */ lwz r0, 0x5f1c(r5) -/* 80071F74 70 00 00 11 */ andi. r0, r0, 0x11 -/* 80071F78 41 82 01 10 */ beq lbl_80072088 -lbl_80071F7C: -/* 80071F7C 7F E3 FB 78 */ mr r3, r31 -/* 80071F80 38 80 00 58 */ li r4, 0x58 -/* 80071F84 48 00 0D FD */ bl lockSoundStart__12dAttention_cFUl -/* 80071F88 48 00 01 00 */ b lbl_80072088 -lbl_80071F8C: -/* 80071F8C 54 60 07 FF */ clrlwi. r0, r3, 0x1f -/* 80071F90 41 82 00 54 */ beq lbl_80071FE4 -/* 80071F94 38 7F 00 28 */ addi r3, r31, 0x28 -/* 80071F98 38 80 00 00 */ li r4, 0 -/* 80071F9C C0 3F 05 00 */ lfs f1, 0x500(r31) -/* 80071FA0 48 00 0E 39 */ bl setAnm__10dAttDraw_cFUcf -/* 80071FA4 38 7F 00 28 */ addi r3, r31, 0x28 -/* 80071FA8 88 9F 04 FC */ lbz r4, 0x4fc(r31) -/* 80071FAC 38 A0 00 00 */ li r5, 0 -/* 80071FB0 48 00 10 39 */ bl setAlphaAnm__10dAttDraw_cFUcUc -/* 80071FB4 C0 1F 04 E4 */ lfs f0, 0x4e4(r31) -/* 80071FB8 D0 1F 01 8C */ stfs f0, 0x18c(r31) -/* 80071FBC C0 1F 04 E8 */ lfs f0, 0x4e8(r31) -/* 80071FC0 D0 1F 01 90 */ stfs f0, 0x190(r31) -/* 80071FC4 C0 1F 04 F4 */ lfs f0, 0x4f4(r31) -/* 80071FC8 D0 1F 01 94 */ stfs f0, 0x194(r31) -/* 80071FCC 38 00 00 00 */ li r0, 0 -/* 80071FD0 98 1F 01 9D */ stb r0, 0x19d(r31) -/* 80071FD4 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80071FD8 64 00 40 00 */ oris r0, r0, 0x4000 -/* 80071FDC 90 1F 03 34 */ stw r0, 0x334(r31) -/* 80071FE0 48 00 00 A8 */ b lbl_80072088 -lbl_80071FE4: -/* 80071FE4 54 60 07 BD */ rlwinm. r0, r3, 0, 0x1e, 0x1e -/* 80071FE8 41 82 00 64 */ beq lbl_8007204C -/* 80071FEC 38 7F 00 28 */ addi r3, r31, 0x28 -/* 80071FF0 88 9F 04 FC */ lbz r4, 0x4fc(r31) -/* 80071FF4 38 A0 00 00 */ li r5, 0 -/* 80071FF8 48 00 0F F1 */ bl setAlphaAnm__10dAttDraw_cFUcUc -/* 80071FFC 38 7F 01 A0 */ addi r3, r31, 0x1a0 -/* 80072000 38 80 00 00 */ li r4, 0 -/* 80072004 C0 3F 05 00 */ lfs f1, 0x500(r31) -/* 80072008 48 00 0D D1 */ bl setAnm__10dAttDraw_cFUcf -/* 8007200C 38 7F 01 A0 */ addi r3, r31, 0x1a0 -/* 80072010 88 9F 04 FD */ lbz r4, 0x4fd(r31) -/* 80072014 38 A0 00 01 */ li r5, 1 -/* 80072018 48 00 0F D1 */ bl setAlphaAnm__10dAttDraw_cFUcUc -/* 8007201C C0 1F 04 E4 */ lfs f0, 0x4e4(r31) -/* 80072020 D0 1F 03 04 */ stfs f0, 0x304(r31) -/* 80072024 C0 1F 04 E8 */ lfs f0, 0x4e8(r31) -/* 80072028 D0 1F 03 08 */ stfs f0, 0x308(r31) -/* 8007202C C0 1F 04 F4 */ lfs f0, 0x4f4(r31) -/* 80072030 D0 1F 03 0C */ stfs f0, 0x30c(r31) -/* 80072034 38 00 00 00 */ li r0, 0 -/* 80072038 98 1F 03 15 */ stb r0, 0x315(r31) -/* 8007203C 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072040 64 00 40 00 */ oris r0, r0, 0x4000 -/* 80072044 90 1F 03 34 */ stw r0, 0x334(r31) -/* 80072048 48 00 00 40 */ b lbl_80072088 -lbl_8007204C: -/* 8007204C 80 1F 03 D8 */ lwz r0, 0x3d8(r31) -/* 80072050 2C 00 00 00 */ cmpwi r0, 0 -/* 80072054 41 81 00 34 */ bgt lbl_80072088 -/* 80072058 88 1F 03 28 */ lbz r0, 0x328(r31) -/* 8007205C 7C 00 07 75 */ extsb. r0, r0 -/* 80072060 40 82 00 28 */ bne lbl_80072088 -/* 80072064 38 7F 00 28 */ addi r3, r31, 0x28 -/* 80072068 88 9F 04 FD */ lbz r4, 0x4fd(r31) -/* 8007206C 38 A0 00 01 */ li r5, 1 -/* 80072070 48 00 0F 79 */ bl setAlphaAnm__10dAttDraw_cFUcUc -/* 80072074 38 00 00 01 */ li r0, 1 -/* 80072078 98 1F 03 28 */ stb r0, 0x328(r31) -/* 8007207C 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80072080 64 00 40 00 */ oris r0, r0, 0x4000 -/* 80072084 90 1F 03 34 */ stw r0, 0x334(r31) -lbl_80072088: -/* 80072088 88 1F 03 29 */ lbz r0, 0x329(r31) -/* 8007208C 28 00 00 01 */ cmplwi r0, 1 -/* 80072090 40 82 00 28 */ bne lbl_800720B8 -/* 80072094 88 1F 01 9B */ lbz r0, 0x19b(r31) -/* 80072098 28 00 00 03 */ cmplwi r0, 3 -/* 8007209C 40 82 00 44 */ bne lbl_800720E0 -/* 800720A0 38 00 00 04 */ li r0, 4 -/* 800720A4 98 1F 01 9B */ stb r0, 0x19b(r31) -/* 800720A8 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 800720AC 54 00 00 80 */ rlwinm r0, r0, 0, 2, 0 -/* 800720B0 90 1F 03 34 */ stw r0, 0x334(r31) -/* 800720B4 48 00 00 2C */ b lbl_800720E0 -lbl_800720B8: -/* 800720B8 88 1F 01 9B */ lbz r0, 0x19b(r31) -/* 800720BC 28 00 00 03 */ cmplwi r0, 3 -/* 800720C0 40 82 00 20 */ bne lbl_800720E0 -/* 800720C4 38 00 00 04 */ li r0, 4 -/* 800720C8 98 1F 01 9B */ stb r0, 0x19b(r31) -/* 800720CC 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 800720D0 54 00 00 80 */ rlwinm r0, r0, 0, 2, 0 -/* 800720D4 90 1F 03 34 */ stw r0, 0x334(r31) -/* 800720D8 38 00 FF FF */ li r0, -1 -/* 800720DC 98 1F 03 28 */ stb r0, 0x328(r31) -lbl_800720E0: -/* 800720E0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800720E4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800720E8 7C 08 03 A6 */ mtlr r0 -/* 800720EC 38 21 00 10 */ addi r1, r1, 0x10 -/* 800720F0 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/runSoundProc__12dAttention_cFv.s b/asm/d/d_attention/runSoundProc__12dAttention_cFv.s deleted file mode 100644 index 16479c87f2..0000000000 --- a/asm/d/d_attention/runSoundProc__12dAttention_cFv.s +++ /dev/null @@ -1,40 +0,0 @@ -lbl_80071DEC: -/* 80071DEC 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 80071DF0 7C 08 02 A6 */ mflr r0 -/* 80071DF4 90 01 00 24 */ stw r0, 0x24(r1) -/* 80071DF8 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 80071DFC 7C 7F 1B 78 */ mr r31, r3 -/* 80071E00 38 00 FF FF */ li r0, -1 -/* 80071E04 90 03 05 14 */ stw r0, 0x514(r3) -/* 80071E08 C0 02 8C 98 */ lfs f0, lit_5137(r2) -/* 80071E0C D0 03 05 18 */ stfs f0, 0x518(r3) -/* 80071E10 80 03 03 34 */ lwz r0, 0x334(r3) -/* 80071E14 54 00 00 01 */ rlwinm. r0, r0, 0, 0, 0 -/* 80071E18 40 82 00 58 */ bne lbl_80071E70 -/* 80071E1C 3C 60 80 07 */ lis r3, sound_attention__FP10fopAc_ac_cPv@ha /* 0x80071D6C@ha */ -/* 80071E20 38 63 1D 6C */ addi r3, r3, sound_attention__FP10fopAc_ac_cPv@l /* 0x80071D6C@l */ -/* 80071E24 7F E4 FB 78 */ mr r4, r31 -/* 80071E28 4B FA 79 95 */ bl fopAcIt_Executor__FPFPvPv_iPv -/* 80071E2C 80 1F 05 14 */ lwz r0, 0x514(r31) -/* 80071E30 90 01 00 08 */ stw r0, 8(r1) -/* 80071E34 3C 60 80 02 */ lis r3, fpcSch_JudgeByID__FPvPv@ha /* 0x80023590@ha */ -/* 80071E38 38 63 35 90 */ addi r3, r3, fpcSch_JudgeByID__FPvPv@l /* 0x80023590@l */ -/* 80071E3C 38 81 00 08 */ addi r4, r1, 8 -/* 80071E40 4B FA 79 B9 */ bl fopAcIt_Judge__FPFPvPv_PvPv -/* 80071E44 28 03 00 00 */ cmplwi r3, 0 -/* 80071E48 41 82 00 28 */ beq lbl_80071E70 -/* 80071E4C 80 6D 8D E8 */ lwz r3, mAudioMgrPtr__10Z2AudioMgr(r13) -/* 80071E50 38 63 03 D0 */ addi r3, r3, 0x3d0 -/* 80071E54 C0 22 8C 9C */ lfs f1, lit_5138(r2) -/* 80071E58 C0 1F 05 18 */ lfs f0, 0x518(r31) -/* 80071E5C EC 21 00 32 */ fmuls f1, f1, f0 -/* 80071E60 48 24 40 29 */ bl bgmNowBattle__8Z2SeqMgrFf -/* 80071E64 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 80071E68 60 00 01 00 */ ori r0, r0, 0x100 -/* 80071E6C 90 1F 03 34 */ stw r0, 0x334(r31) -lbl_80071E70: -/* 80071E70 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 80071E74 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80071E78 7C 08 03 A6 */ mtlr r0 -/* 80071E7C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80071E80 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/select_attention__FP10fopAc_ac_cPv.s b/asm/d/d_attention/select_attention__FP10fopAc_ac_cPv.s deleted file mode 100644 index 18275a87ff..0000000000 --- a/asm/d/d_attention/select_attention__FP10fopAc_ac_cPv.s +++ /dev/null @@ -1,19 +0,0 @@ -lbl_8007138C: -/* 8007138C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80071390 7C 08 02 A6 */ mflr r0 -/* 80071394 90 01 00 14 */ stw r0, 0x14(r1) -/* 80071398 7C 65 1B 78 */ mr r5, r3 -/* 8007139C 80 03 05 5C */ lwz r0, 0x55c(r3) -/* 800713A0 28 00 00 00 */ cmplwi r0, 0 -/* 800713A4 40 82 00 0C */ bne lbl_800713B0 -/* 800713A8 38 60 00 00 */ li r3, 0 -/* 800713AC 48 00 00 10 */ b lbl_800713BC -lbl_800713B0: -/* 800713B0 7C 83 23 78 */ mr r3, r4 -/* 800713B4 7C A4 2B 78 */ mr r4, r5 -/* 800713B8 48 00 00 D1 */ bl SelectAttention__12dAttention_cFP10fopAc_ac_c -lbl_800713BC: -/* 800713BC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800713C0 7C 08 03 A6 */ mtlr r0 -/* 800713C4 38 21 00 10 */ addi r1, r1, 0x10 -/* 800713C8 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/setActor__10dAttList_cFP10fopAc_ac_c.s b/asm/d/d_attention/setActor__10dAttList_cFP10fopAc_ac_c.s deleted file mode 100644 index 9a3caceee1..0000000000 --- a/asm/d/d_attention/setActor__10dAttList_cFP10fopAc_ac_c.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_80073898: -/* 80073898 28 04 00 00 */ cmplwi r4, 0 -/* 8007389C 41 82 00 0C */ beq lbl_800738A8 -/* 800738A0 80 04 00 04 */ lwz r0, 4(r4) -/* 800738A4 48 00 00 08 */ b lbl_800738AC -lbl_800738A8: -/* 800738A8 38 00 FF FF */ li r0, -1 -lbl_800738AC: -/* 800738AC 90 03 00 10 */ stw r0, 0x10(r3) -/* 800738B0 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/setAlphaAnm__10dAttDraw_cFUcUc.s b/asm/d/d_attention/setAlphaAnm__10dAttDraw_cFUcUc.s deleted file mode 100644 index 8e29f9fd32..0000000000 --- a/asm/d/d_attention/setAlphaAnm__10dAttDraw_cFUcUc.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_80072FE8: -/* 80072FE8 98 83 01 71 */ stb r4, 0x171(r3) -/* 80072FEC 38 00 00 00 */ li r0, 0 -/* 80072FF0 98 03 01 72 */ stb r0, 0x172(r3) -/* 80072FF4 38 00 00 02 */ li r0, 2 -/* 80072FF8 98 03 01 73 */ stb r0, 0x173(r3) -/* 80072FFC 98 A3 01 74 */ stb r5, 0x174(r3) -/* 80073000 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/setOwnerAttentionPos__12dAttention_cFv.s b/asm/d/d_attention/setOwnerAttentionPos__12dAttention_cFv.s deleted file mode 100644 index 59af1e84f2..0000000000 --- a/asm/d/d_attention/setOwnerAttentionPos__12dAttention_cFv.s +++ /dev/null @@ -1,27 +0,0 @@ -lbl_80071424: -/* 80071424 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80071428 7C 08 02 A6 */ mflr r0 -/* 8007142C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80071430 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80071434 7C 7F 1B 78 */ mr r31, r3 -/* 80071438 80 63 00 00 */ lwz r3, 0(r3) -/* 8007143C C0 03 05 50 */ lfs f0, 0x550(r3) -/* 80071440 D0 1F 03 1C */ stfs f0, 0x31c(r31) -/* 80071444 C0 03 05 54 */ lfs f0, 0x554(r3) -/* 80071448 D0 1F 03 20 */ stfs f0, 0x320(r31) -/* 8007144C C0 03 05 58 */ lfs f0, 0x558(r3) -/* 80071450 D0 1F 03 24 */ stfs f0, 0x324(r31) -/* 80071454 80 7F 00 00 */ lwz r3, 0(r31) -/* 80071458 A8 03 00 08 */ lha r0, 8(r3) -/* 8007145C 2C 00 00 FD */ cmpwi r0, 0xfd -/* 80071460 40 82 00 14 */ bne lbl_80071474 -/* 80071464 48 0E DF 99 */ bl getAttentionOffsetY__9daPy_py_cFv -/* 80071468 C0 1F 03 20 */ lfs f0, 0x320(r31) -/* 8007146C EC 00 08 28 */ fsubs f0, f0, f1 -/* 80071470 D0 1F 03 20 */ stfs f0, 0x320(r31) -lbl_80071474: -/* 80071474 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80071478 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8007147C 7C 08 03 A6 */ mtlr r0 -/* 80071480 38 21 00 10 */ addi r1, r1, 0x10 -/* 80071484 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/stockAttention__12dAttention_cFv.s b/asm/d/d_attention/stockAttention__12dAttention_cFv.s deleted file mode 100644 index 395ba0bfad..0000000000 --- a/asm/d/d_attention/stockAttention__12dAttention_cFv.s +++ /dev/null @@ -1,52 +0,0 @@ -lbl_800718A4: -/* 800718A4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800718A8 7C 08 02 A6 */ mflr r0 -/* 800718AC 90 01 00 14 */ stw r0, 0x14(r1) -/* 800718B0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800718B4 93 C1 00 08 */ stw r30, 8(r1) -/* 800718B8 7C 7E 1B 78 */ mr r30, r3 -/* 800718BC 38 80 00 00 */ li r4, 0 -/* 800718C0 48 00 1C 7D */ bl LockonTarget__12dAttention_cFl -/* 800718C4 7C 7F 1B 78 */ mr r31, r3 -/* 800718C8 7F C3 F3 78 */ mr r3, r30 -/* 800718CC 38 80 FF FF */ li r4, -1 -/* 800718D0 4B FF F9 71 */ bl initList__12dAttention_cFUl -/* 800718D4 7F C3 F3 78 */ mr r3, r30 -/* 800718D8 4B FF FA F5 */ bl makeList__12dAttention_cFv -/* 800718DC 2C 03 00 00 */ cmpwi r3, 0 -/* 800718E0 41 82 00 0C */ beq lbl_800718EC -/* 800718E4 7F C3 F3 78 */ mr r3, r30 -/* 800718E8 4B FF FD D1 */ bl sortList__12dAttention_cFv -lbl_800718EC: -/* 800718EC 38 7E 03 38 */ addi r3, r30, 0x338 -/* 800718F0 48 00 1F 75 */ bl getActor__10dAttList_cFv -/* 800718F4 7C 1F 18 40 */ cmplw r31, r3 -/* 800718F8 41 82 00 44 */ beq lbl_8007193C -/* 800718FC 28 1F 00 00 */ cmplwi r31, 0 -/* 80071900 41 82 00 24 */ beq lbl_80071924 -/* 80071904 38 7E 03 38 */ addi r3, r30, 0x338 -/* 80071908 48 00 1F 5D */ bl getActor__10dAttList_cFv -/* 8007190C 28 03 00 00 */ cmplwi r3, 0 -/* 80071910 41 82 00 20 */ beq lbl_80071930 -/* 80071914 80 1E 03 34 */ lwz r0, 0x334(r30) -/* 80071918 60 00 00 02 */ ori r0, r0, 2 -/* 8007191C 90 1E 03 34 */ stw r0, 0x334(r30) -/* 80071920 48 00 00 10 */ b lbl_80071930 -lbl_80071924: -/* 80071924 80 1E 03 34 */ lwz r0, 0x334(r30) -/* 80071928 60 00 00 01 */ ori r0, r0, 1 -/* 8007192C 90 1E 03 34 */ stw r0, 0x334(r30) -lbl_80071930: -/* 80071930 80 1E 03 34 */ lwz r0, 0x334(r30) -/* 80071934 60 00 00 04 */ ori r0, r0, 4 -/* 80071938 90 1E 03 34 */ stw r0, 0x334(r30) -lbl_8007193C: -/* 8007193C 7F C3 F3 78 */ mr r3, r30 -/* 80071940 38 80 00 00 */ li r4, 0 -/* 80071944 48 00 1B F9 */ bl LockonTarget__12dAttention_cFl -/* 80071948 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8007194C 83 C1 00 08 */ lwz r30, 8(r1) -/* 80071950 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80071954 7C 08 03 A6 */ mtlr r0 -/* 80071958 38 21 00 10 */ addi r1, r1, 0x10 -/* 8007195C 4E 80 00 20 */ blr diff --git a/asm/d/d_attention/triggerProc__12dAttention_cFv.s b/asm/d/d_attention/triggerProc__12dAttention_cFv.s deleted file mode 100644 index 20714c99d6..0000000000 --- a/asm/d/d_attention/triggerProc__12dAttention_cFv.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_800722A0: -/* 800722A0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800722A4 7C 08 02 A6 */ mflr r0 -/* 800722A8 90 01 00 14 */ stw r0, 0x14(r1) -/* 800722AC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800722B0 7C 7F 1B 78 */ mr r31, r3 -/* 800722B4 4B FF F7 E5 */ bl chaseAttention__12dAttention_cFv -/* 800722B8 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 800722BC 41 82 00 18 */ beq lbl_800722D4 -/* 800722C0 80 1F 03 34 */ lwz r0, 0x334(r31) -/* 800722C4 60 00 00 08 */ ori r0, r0, 8 -/* 800722C8 90 1F 03 34 */ stw r0, 0x334(r31) -/* 800722CC 38 60 00 01 */ li r3, 1 -/* 800722D0 48 00 00 08 */ b lbl_800722D8 -lbl_800722D4: -/* 800722D4 38 60 00 00 */ li r3, 0 -lbl_800722D8: -/* 800722D8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 800722DC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800722E0 7C 08 03 A6 */ mtlr r0 -/* 800722E4 38 21 00 10 */ addi r1, r1, 0x10 -/* 800722E8 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGFindNodeID__13dDemo_actor_cCFPCc.s b/asm/d/d_demo/JSGFindNodeID__13dDemo_actor_cCFPCc.s deleted file mode 100644 index 0e8e14359b..0000000000 --- a/asm/d/d_demo/JSGFindNodeID__13dDemo_actor_cCFPCc.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8003A05C: -/* 8003A05C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8003A060 7C 08 02 A6 */ mflr r0 -/* 8003A064 90 01 00 14 */ stw r0, 0x14(r1) -/* 8003A068 80 63 00 48 */ lwz r3, 0x48(r3) -/* 8003A06C 80 63 00 04 */ lwz r3, 4(r3) -/* 8003A070 80 63 00 54 */ lwz r3, 0x54(r3) -/* 8003A074 48 2A 49 E5 */ bl getIndex__10JUTNameTabCFPCc -/* 8003A078 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8003A07C 7C 08 03 A6 */ mtlr r0 -/* 8003A080 38 21 00 10 */ addi r1, r1, 0x10 -/* 8003A084 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGGetAnimationFrameMax__13dDemo_actor_cCFv.s b/asm/d/d_demo/JSGGetAnimationFrameMax__13dDemo_actor_cCFv.s deleted file mode 100644 index dabfe1e0e2..0000000000 --- a/asm/d/d_demo/JSGGetAnimationFrameMax__13dDemo_actor_cCFv.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_8003A0C8: -/* 8003A0C8 C0 23 00 38 */ lfs f1, 0x38(r3) -/* 8003A0CC 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGGetNodeTransformation__13dDemo_actor_cCFUlPA4_f.s b/asm/d/d_demo/JSGGetNodeTransformation__13dDemo_actor_cCFUlPA4_f.s deleted file mode 100644 index 8e15163172..0000000000 --- a/asm/d/d_demo/JSGGetNodeTransformation__13dDemo_actor_cCFUlPA4_f.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_8003A088: -/* 8003A088 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8003A08C 7C 08 02 A6 */ mflr r0 -/* 8003A090 90 01 00 14 */ stw r0, 0x14(r1) -/* 8003A094 80 63 00 48 */ lwz r3, 0x48(r3) -/* 8003A098 80 63 00 84 */ lwz r3, 0x84(r3) -/* 8003A09C 80 63 00 0C */ lwz r3, 0xc(r3) -/* 8003A0A0 54 80 04 3E */ clrlwi r0, r4, 0x10 -/* 8003A0A4 1C 00 00 30 */ mulli r0, r0, 0x30 -/* 8003A0A8 7C 63 02 14 */ add r3, r3, r0 -/* 8003A0AC 7C A4 2B 78 */ mr r4, r5 -/* 8003A0B0 48 30 C4 01 */ bl PSMTXCopy -/* 8003A0B4 38 60 00 01 */ li r3, 1 -/* 8003A0B8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8003A0BC 7C 08 03 A6 */ mtlr r0 -/* 8003A0C0 38 21 00 10 */ addi r1, r1, 0x10 -/* 8003A0C4 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGGetProjectionAspect__14dDemo_camera_cCFv.s b/asm/d/d_demo/JSGGetProjectionAspect__14dDemo_camera_cCFv.s deleted file mode 100644 index 10bb005a74..0000000000 --- a/asm/d/d_demo/JSGGetProjectionAspect__14dDemo_camera_cCFv.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_80038B9C: -/* 80038B9C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80038BA0 7C 08 02 A6 */ mflr r0 -/* 80038BA4 90 01 00 14 */ stw r0, 0x14(r1) -/* 80038BA8 4B FF FE E9 */ bl getView__Fv -/* 80038BAC 28 03 00 00 */ cmplwi r3, 0 -/* 80038BB0 40 82 00 0C */ bne lbl_80038BBC -/* 80038BB4 C0 22 83 D4 */ lfs f1, lit_4655(r2) -/* 80038BB8 48 00 00 08 */ b lbl_80038BC0 -lbl_80038BBC: -/* 80038BBC C0 23 00 D4 */ lfs f1, 0xd4(r3) -lbl_80038BC0: -/* 80038BC0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80038BC4 7C 08 03 A6 */ mtlr r0 -/* 80038BC8 38 21 00 10 */ addi r1, r1, 0x10 -/* 80038BCC 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGGetProjectionFar__14dDemo_camera_cCFv.s b/asm/d/d_demo/JSGGetProjectionFar__14dDemo_camera_cCFv.s deleted file mode 100644 index f0c8596aa2..0000000000 --- a/asm/d/d_demo/JSGGetProjectionFar__14dDemo_camera_cCFv.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_80038B0C: -/* 80038B0C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80038B10 7C 08 02 A6 */ mflr r0 -/* 80038B14 90 01 00 14 */ stw r0, 0x14(r1) -/* 80038B18 4B FF FF 79 */ bl getView__Fv -/* 80038B1C 28 03 00 00 */ cmplwi r3, 0 -/* 80038B20 40 82 00 0C */ bne lbl_80038B2C -/* 80038B24 C0 22 83 B4 */ lfs f1, lit_4041(r2) -/* 80038B28 48 00 00 08 */ b lbl_80038B30 -lbl_80038B2C: -/* 80038B2C C0 23 00 CC */ lfs f1, 0xcc(r3) -lbl_80038B30: -/* 80038B30 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80038B34 7C 08 03 A6 */ mtlr r0 -/* 80038B38 38 21 00 10 */ addi r1, r1, 0x10 -/* 80038B3C 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGGetProjectionFovy__14dDemo_camera_cCFv.s b/asm/d/d_demo/JSGGetProjectionFovy__14dDemo_camera_cCFv.s deleted file mode 100644 index e64a2919a0..0000000000 --- a/asm/d/d_demo/JSGGetProjectionFovy__14dDemo_camera_cCFv.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_80038B54: -/* 80038B54 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80038B58 7C 08 02 A6 */ mflr r0 -/* 80038B5C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80038B60 4B FF FF 31 */ bl getView__Fv -/* 80038B64 28 03 00 00 */ cmplwi r3, 0 -/* 80038B68 40 82 00 0C */ bne lbl_80038B74 -/* 80038B6C C0 22 83 D0 */ lfs f1, lit_4642(r2) -/* 80038B70 48 00 00 08 */ b lbl_80038B78 -lbl_80038B74: -/* 80038B74 C0 23 00 D0 */ lfs f1, 0xd0(r3) -lbl_80038B78: -/* 80038B78 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80038B7C 7C 08 03 A6 */ mtlr r0 -/* 80038B80 38 21 00 10 */ addi r1, r1, 0x10 -/* 80038B84 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGGetProjectionNear__14dDemo_camera_cCFv.s b/asm/d/d_demo/JSGGetProjectionNear__14dDemo_camera_cCFv.s deleted file mode 100644 index 745a4aa61c..0000000000 --- a/asm/d/d_demo/JSGGetProjectionNear__14dDemo_camera_cCFv.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_80038AC4: -/* 80038AC4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80038AC8 7C 08 02 A6 */ mflr r0 -/* 80038ACC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80038AD0 4B FF FF C1 */ bl getView__Fv -/* 80038AD4 28 03 00 00 */ cmplwi r3, 0 -/* 80038AD8 40 82 00 0C */ bne lbl_80038AE4 -/* 80038ADC C0 22 83 B0 */ lfs f1, lit_4040(r2) -/* 80038AE0 48 00 00 08 */ b lbl_80038AE8 -lbl_80038AE4: -/* 80038AE4 C0 23 00 C8 */ lfs f1, 0xc8(r3) -lbl_80038AE8: -/* 80038AE8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80038AEC 7C 08 03 A6 */ mtlr r0 -/* 80038AF0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80038AF4 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGGetScaling__13dDemo_actor_cCFP3Vec.s b/asm/d/d_demo/JSGGetScaling__13dDemo_actor_cCFP3Vec.s deleted file mode 100644 index 958a7e11e0..0000000000 --- a/asm/d/d_demo/JSGGetScaling__13dDemo_actor_cCFP3Vec.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_8003A0F4: -/* 8003A0F4 C0 03 00 14 */ lfs f0, 0x14(r3) -/* 8003A0F8 D0 04 00 00 */ stfs f0, 0(r4) -/* 8003A0FC C0 03 00 18 */ lfs f0, 0x18(r3) -/* 8003A100 D0 04 00 04 */ stfs f0, 4(r4) -/* 8003A104 C0 03 00 1C */ lfs f0, 0x1c(r3) -/* 8003A108 D0 04 00 08 */ stfs f0, 8(r4) -/* 8003A10C 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGGetTextureAnimationFrameMax__13dDemo_actor_cCFv.s b/asm/d/d_demo/JSGGetTextureAnimationFrameMax__13dDemo_actor_cCFv.s deleted file mode 100644 index ebb72b16be..0000000000 --- a/asm/d/d_demo/JSGGetTextureAnimationFrameMax__13dDemo_actor_cCFv.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_8003A0D0: -/* 8003A0D0 C0 23 00 44 */ lfs f1, 0x44(r3) -/* 8003A0D4 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGGetTranslation__13dDemo_actor_cCFP3Vec.s b/asm/d/d_demo/JSGGetTranslation__13dDemo_actor_cCFP3Vec.s deleted file mode 100644 index 4826a2dd8b..0000000000 --- a/asm/d/d_demo/JSGGetTranslation__13dDemo_actor_cCFP3Vec.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_8003A0D8: -/* 8003A0D8 C0 03 00 08 */ lfs f0, 8(r3) -/* 8003A0DC D0 04 00 00 */ stfs f0, 0(r4) -/* 8003A0E0 C0 03 00 0C */ lfs f0, 0xc(r3) -/* 8003A0E4 D0 04 00 04 */ stfs f0, 4(r4) -/* 8003A0E8 C0 03 00 10 */ lfs f0, 0x10(r3) -/* 8003A0EC D0 04 00 08 */ stfs f0, 8(r4) -/* 8003A0F0 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGGetViewPosition__14dDemo_camera_cCFP3Vec.s b/asm/d/d_demo/JSGGetViewPosition__14dDemo_camera_cCFP3Vec.s deleted file mode 100644 index 9ec805f719..0000000000 --- a/asm/d/d_demo/JSGGetViewPosition__14dDemo_camera_cCFP3Vec.s +++ /dev/null @@ -1,27 +0,0 @@ -lbl_80038BE4: -/* 80038BE4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80038BE8 7C 08 02 A6 */ mflr r0 -/* 80038BEC 90 01 00 14 */ stw r0, 0x14(r1) -/* 80038BF0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80038BF4 7C 9F 23 78 */ mr r31, r4 -/* 80038BF8 4B FF FE 99 */ bl getView__Fv -/* 80038BFC 28 03 00 00 */ cmplwi r3, 0 -/* 80038C00 40 82 00 18 */ bne lbl_80038C18 -/* 80038C04 C0 02 83 B0 */ lfs f0, lit_4040(r2) -/* 80038C08 D0 1F 00 00 */ stfs f0, 0(r31) -/* 80038C0C D0 1F 00 04 */ stfs f0, 4(r31) -/* 80038C10 D0 1F 00 08 */ stfs f0, 8(r31) -/* 80038C14 48 00 00 1C */ b lbl_80038C30 -lbl_80038C18: -/* 80038C18 C0 03 00 D8 */ lfs f0, 0xd8(r3) -/* 80038C1C D0 1F 00 00 */ stfs f0, 0(r31) -/* 80038C20 C0 03 00 DC */ lfs f0, 0xdc(r3) -/* 80038C24 D0 1F 00 04 */ stfs f0, 4(r31) -/* 80038C28 C0 03 00 E0 */ lfs f0, 0xe0(r3) -/* 80038C2C D0 1F 00 08 */ stfs f0, 8(r31) -lbl_80038C30: -/* 80038C30 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80038C34 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80038C38 7C 08 03 A6 */ mtlr r0 -/* 80038C3C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80038C40 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGGetViewTargetPosition__14dDemo_camera_cCFP3Vec.s b/asm/d/d_demo/JSGGetViewTargetPosition__14dDemo_camera_cCFP3Vec.s deleted file mode 100644 index f3df2c82dd..0000000000 --- a/asm/d/d_demo/JSGGetViewTargetPosition__14dDemo_camera_cCFP3Vec.s +++ /dev/null @@ -1,28 +0,0 @@ -lbl_80038CF8: -/* 80038CF8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80038CFC 7C 08 02 A6 */ mflr r0 -/* 80038D00 90 01 00 14 */ stw r0, 0x14(r1) -/* 80038D04 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80038D08 7C 9F 23 78 */ mr r31, r4 -/* 80038D0C 4B FF FD 85 */ bl getView__Fv -/* 80038D10 28 03 00 00 */ cmplwi r3, 0 -/* 80038D14 40 82 00 1C */ bne lbl_80038D30 -/* 80038D18 C0 02 83 B0 */ lfs f0, lit_4040(r2) -/* 80038D1C D0 1F 00 00 */ stfs f0, 0(r31) -/* 80038D20 D0 1F 00 04 */ stfs f0, 4(r31) -/* 80038D24 C0 02 83 B4 */ lfs f0, lit_4041(r2) -/* 80038D28 D0 1F 00 08 */ stfs f0, 8(r31) -/* 80038D2C 48 00 00 1C */ b lbl_80038D48 -lbl_80038D30: -/* 80038D30 C0 03 00 E4 */ lfs f0, 0xe4(r3) -/* 80038D34 D0 1F 00 00 */ stfs f0, 0(r31) -/* 80038D38 C0 03 00 E8 */ lfs f0, 0xe8(r3) -/* 80038D3C D0 1F 00 04 */ stfs f0, 4(r31) -/* 80038D40 C0 03 00 EC */ lfs f0, 0xec(r3) -/* 80038D44 D0 1F 00 08 */ stfs f0, 8(r31) -lbl_80038D48: -/* 80038D48 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80038D4C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80038D50 7C 08 03 A6 */ mtlr r0 -/* 80038D54 38 21 00 10 */ addi r1, r1, 0x10 -/* 80038D58 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGGetViewUpVector__14dDemo_camera_cCFP3Vec.s b/asm/d/d_demo/JSGGetViewUpVector__14dDemo_camera_cCFP3Vec.s deleted file mode 100644 index 16f63a0f07..0000000000 --- a/asm/d/d_demo/JSGGetViewUpVector__14dDemo_camera_cCFP3Vec.s +++ /dev/null @@ -1,28 +0,0 @@ -lbl_80038C6C: -/* 80038C6C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80038C70 7C 08 02 A6 */ mflr r0 -/* 80038C74 90 01 00 14 */ stw r0, 0x14(r1) -/* 80038C78 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80038C7C 7C 9F 23 78 */ mr r31, r4 -/* 80038C80 4B FF FE 11 */ bl getView__Fv -/* 80038C84 28 03 00 00 */ cmplwi r3, 0 -/* 80038C88 40 82 00 1C */ bne lbl_80038CA4 -/* 80038C8C C0 22 83 B0 */ lfs f1, lit_4040(r2) -/* 80038C90 D0 3F 00 00 */ stfs f1, 0(r31) -/* 80038C94 C0 02 83 B4 */ lfs f0, lit_4041(r2) -/* 80038C98 D0 1F 00 04 */ stfs f0, 4(r31) -/* 80038C9C D0 3F 00 08 */ stfs f1, 8(r31) -/* 80038CA0 48 00 00 1C */ b lbl_80038CBC -lbl_80038CA4: -/* 80038CA4 C0 03 00 F0 */ lfs f0, 0xf0(r3) -/* 80038CA8 D0 1F 00 00 */ stfs f0, 0(r31) -/* 80038CAC C0 03 00 F4 */ lfs f0, 0xf4(r3) -/* 80038CB0 D0 1F 00 04 */ stfs f0, 4(r31) -/* 80038CB4 C0 03 00 F8 */ lfs f0, 0xf8(r3) -/* 80038CB8 D0 1F 00 08 */ stfs f0, 8(r31) -lbl_80038CBC: -/* 80038CBC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80038CC0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80038CC4 7C 08 03 A6 */ mtlr r0 -/* 80038CC8 38 21 00 10 */ addi r1, r1, 0x10 -/* 80038CCC 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetAngleAttenuation__13dDemo_light_cFf9_GXSpotFn.s b/asm/d/d_demo/JSGSetAngleAttenuation__13dDemo_light_cFf9_GXSpotFn.s deleted file mode 100644 index c40534bbc3..0000000000 --- a/asm/d/d_demo/JSGSetAngleAttenuation__13dDemo_light_cFf9_GXSpotFn.s +++ /dev/null @@ -1,7 +0,0 @@ -lbl_80038EA8: -/* 80038EA8 D0 23 00 2C */ stfs f1, 0x2c(r3) -/* 80038EAC 90 83 00 10 */ stw r4, 0x10(r3) -/* 80038EB0 88 03 00 04 */ lbz r0, 4(r3) -/* 80038EB4 60 00 00 10 */ ori r0, r0, 0x10 -/* 80038EB8 98 03 00 04 */ stb r0, 4(r3) -/* 80038EBC 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetAnimationFrame__13dDemo_actor_cFf.s b/asm/d/d_demo/JSGSetAnimationFrame__13dDemo_actor_cFf.s deleted file mode 100644 index a73591f8bf..0000000000 --- a/asm/d/d_demo/JSGSetAnimationFrame__13dDemo_actor_cFf.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_80038A40: -/* 80038A40 D0 23 00 30 */ stfs f1, 0x30(r3) -/* 80038A44 A0 03 00 04 */ lhz r0, 4(r3) -/* 80038A48 60 00 00 40 */ ori r0, r0, 0x40 -/* 80038A4C B0 03 00 04 */ sth r0, 4(r3) -/* 80038A50 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetAnimationTransition__13dDemo_actor_cFf.s b/asm/d/d_demo/JSGSetAnimationTransition__13dDemo_actor_cFf.s deleted file mode 100644 index 81990888bf..0000000000 --- a/asm/d/d_demo/JSGSetAnimationTransition__13dDemo_actor_cFf.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_80038A54: -/* 80038A54 D0 23 00 34 */ stfs f1, 0x34(r3) -/* 80038A58 A0 03 00 04 */ lhz r0, 4(r3) -/* 80038A5C 60 00 00 80 */ ori r0, r0, 0x80 -/* 80038A60 B0 03 00 04 */ sth r0, 4(r3) -/* 80038A64 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetAnimation__13dDemo_actor_cFUl.s b/asm/d/d_demo/JSGSetAnimation__13dDemo_actor_cFUl.s deleted file mode 100644 index 9e9ac2b2f4..0000000000 --- a/asm/d/d_demo/JSGSetAnimation__13dDemo_actor_cFUl.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80038A20: -/* 80038A20 90 83 00 2C */ stw r4, 0x2c(r3) -/* 80038A24 3C 80 80 45 */ lis r4, __float_max@ha /* 0x80450AE8@ha */ -/* 80038A28 C0 04 0A E8 */ lfs f0, __float_max@l(r4) /* 0x80450AE8@l */ -/* 80038A2C D0 03 00 38 */ stfs f0, 0x38(r3) -/* 80038A30 A0 03 00 04 */ lhz r0, 4(r3) -/* 80038A34 60 00 00 20 */ ori r0, r0, 0x20 -/* 80038A38 B0 03 00 04 */ sth r0, 4(r3) -/* 80038A3C 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetColor__11dDemo_fog_cF8_GXColor.s b/asm/d/d_demo/JSGSetColor__11dDemo_fog_cF8_GXColor.s deleted file mode 100644 index 8be966aa07..0000000000 --- a/asm/d/d_demo/JSGSetColor__11dDemo_fog_cF8_GXColor.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80038F24: -/* 80038F24 88 04 00 00 */ lbz r0, 0(r4) -/* 80038F28 98 03 00 10 */ stb r0, 0x10(r3) -/* 80038F2C 88 04 00 01 */ lbz r0, 1(r4) -/* 80038F30 98 03 00 11 */ stb r0, 0x11(r3) -/* 80038F34 88 04 00 02 */ lbz r0, 2(r4) -/* 80038F38 98 03 00 12 */ stb r0, 0x12(r3) -/* 80038F3C 88 04 00 03 */ lbz r0, 3(r4) -/* 80038F40 98 03 00 13 */ stb r0, 0x13(r3) -/* 80038F44 88 03 00 04 */ lbz r0, 4(r3) -/* 80038F48 60 00 00 08 */ ori r0, r0, 8 -/* 80038F4C 98 03 00 04 */ stb r0, 4(r3) -/* 80038F50 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetColor__13dDemo_light_cF8_GXColor.s b/asm/d/d_demo/JSGSetColor__13dDemo_light_cF8_GXColor.s deleted file mode 100644 index e0a49a85a7..0000000000 --- a/asm/d/d_demo/JSGSetColor__13dDemo_light_cF8_GXColor.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80038E5C: -/* 80038E5C 88 04 00 00 */ lbz r0, 0(r4) -/* 80038E60 98 03 00 20 */ stb r0, 0x20(r3) -/* 80038E64 88 04 00 01 */ lbz r0, 1(r4) -/* 80038E68 98 03 00 21 */ stb r0, 0x21(r3) -/* 80038E6C 88 04 00 02 */ lbz r0, 2(r4) -/* 80038E70 98 03 00 22 */ stb r0, 0x22(r3) -/* 80038E74 88 04 00 03 */ lbz r0, 3(r4) -/* 80038E78 98 03 00 23 */ stb r0, 0x23(r3) -/* 80038E7C 88 03 00 04 */ lbz r0, 4(r3) -/* 80038E80 60 00 00 04 */ ori r0, r0, 4 -/* 80038E84 98 03 00 04 */ stb r0, 4(r3) -/* 80038E88 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetColor__15dDemo_ambient_cF8_GXColor.s b/asm/d/d_demo/JSGSetColor__15dDemo_ambient_cF8_GXColor.s deleted file mode 100644 index dff8f55405..0000000000 --- a/asm/d/d_demo/JSGSetColor__15dDemo_ambient_cF8_GXColor.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80038DF0: -/* 80038DF0 88 04 00 00 */ lbz r0, 0(r4) -/* 80038DF4 98 03 00 05 */ stb r0, 5(r3) -/* 80038DF8 88 04 00 01 */ lbz r0, 1(r4) -/* 80038DFC 98 03 00 06 */ stb r0, 6(r3) -/* 80038E00 88 04 00 02 */ lbz r0, 2(r4) -/* 80038E04 98 03 00 07 */ stb r0, 7(r3) -/* 80038E08 88 04 00 03 */ lbz r0, 3(r4) -/* 80038E0C 98 03 00 08 */ stb r0, 8(r3) -/* 80038E10 88 03 00 04 */ lbz r0, 4(r3) -/* 80038E14 60 00 00 01 */ ori r0, r0, 1 -/* 80038E18 98 03 00 04 */ stb r0, 4(r3) -/* 80038E1C 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetDirection__13dDemo_light_cFRC3Vec.s b/asm/d/d_demo/JSGSetDirection__13dDemo_light_cFRC3Vec.s deleted file mode 100644 index 401264ce2c..0000000000 --- a/asm/d/d_demo/JSGSetDirection__13dDemo_light_cFRC3Vec.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_80038EC0: -/* 80038EC0 C0 04 00 00 */ lfs f0, 0(r4) -/* 80038EC4 D0 03 00 30 */ stfs f0, 0x30(r3) -/* 80038EC8 C0 04 00 04 */ lfs f0, 4(r4) -/* 80038ECC D0 03 00 34 */ stfs f0, 0x34(r3) -/* 80038ED0 C0 04 00 08 */ lfs f0, 8(r4) -/* 80038ED4 D0 03 00 38 */ stfs f0, 0x38(r3) -/* 80038ED8 88 03 00 04 */ lbz r0, 4(r3) -/* 80038EDC 60 00 00 20 */ ori r0, r0, 0x20 -/* 80038EE0 98 03 00 04 */ stb r0, 4(r3) -/* 80038EE4 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetDistanceAttenuation__13dDemo_light_cFff13_GXDistAttnFn.s b/asm/d/d_demo/JSGSetDistanceAttenuation__13dDemo_light_cFff13_GXDistAttnFn.s deleted file mode 100644 index 6e86e38621..0000000000 --- a/asm/d/d_demo/JSGSetDistanceAttenuation__13dDemo_light_cFff13_GXDistAttnFn.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_80038E8C: -/* 80038E8C D0 23 00 24 */ stfs f1, 0x24(r3) -/* 80038E90 D0 43 00 28 */ stfs f2, 0x28(r3) -/* 80038E94 90 83 00 0C */ stw r4, 0xc(r3) -/* 80038E98 88 03 00 04 */ lbz r0, 4(r3) -/* 80038E9C 60 00 00 08 */ ori r0, r0, 8 -/* 80038EA0 98 03 00 04 */ stb r0, 4(r3) -/* 80038EA4 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetEndZ__11dDemo_fog_cFf.s b/asm/d/d_demo/JSGSetEndZ__11dDemo_fog_cFf.s deleted file mode 100644 index 5472cef06a..0000000000 --- a/asm/d/d_demo/JSGSetEndZ__11dDemo_fog_cFf.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_80038F10: -/* 80038F10 D0 23 00 0C */ stfs f1, 0xc(r3) -/* 80038F14 88 03 00 04 */ lbz r0, 4(r3) -/* 80038F18 60 00 00 04 */ ori r0, r0, 4 -/* 80038F1C 98 03 00 04 */ stb r0, 4(r3) -/* 80038F20 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetFogFunction__11dDemo_fog_cF10_GXFogType.s b/asm/d/d_demo/JSGSetFogFunction__11dDemo_fog_cF10_GXFogType.s deleted file mode 100644 index 87ab2f1ba5..0000000000 --- a/asm/d/d_demo/JSGSetFogFunction__11dDemo_fog_cF10_GXFogType.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_80038EE8: -/* 80038EE8 98 83 00 05 */ stb r4, 5(r3) -/* 80038EEC 88 03 00 04 */ lbz r0, 4(r3) -/* 80038EF0 60 00 00 01 */ ori r0, r0, 1 -/* 80038EF4 98 03 00 04 */ stb r0, 4(r3) -/* 80038EF8 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetLightType__13dDemo_light_cFQ26JStage7TELight.s b/asm/d/d_demo/JSGSetLightType__13dDemo_light_cFQ26JStage7TELight.s deleted file mode 100644 index ac1623ab47..0000000000 --- a/asm/d/d_demo/JSGSetLightType__13dDemo_light_cFQ26JStage7TELight.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_80038E20: -/* 80038E20 90 83 00 08 */ stw r4, 8(r3) -/* 80038E24 88 03 00 04 */ lbz r0, 4(r3) -/* 80038E28 60 00 00 01 */ ori r0, r0, 1 -/* 80038E2C 98 03 00 04 */ stb r0, 4(r3) -/* 80038E30 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetPosition__13dDemo_light_cFRC3Vec.s b/asm/d/d_demo/JSGSetPosition__13dDemo_light_cFRC3Vec.s deleted file mode 100644 index 75e26c9fd5..0000000000 --- a/asm/d/d_demo/JSGSetPosition__13dDemo_light_cFRC3Vec.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_80038E34: -/* 80038E34 C0 04 00 00 */ lfs f0, 0(r4) -/* 80038E38 D0 03 00 14 */ stfs f0, 0x14(r3) -/* 80038E3C C0 04 00 04 */ lfs f0, 4(r4) -/* 80038E40 D0 03 00 18 */ stfs f0, 0x18(r3) -/* 80038E44 C0 04 00 08 */ lfs f0, 8(r4) -/* 80038E48 D0 03 00 1C */ stfs f0, 0x1c(r3) -/* 80038E4C 88 03 00 04 */ lbz r0, 4(r3) -/* 80038E50 60 00 00 02 */ ori r0, r0, 2 -/* 80038E54 98 03 00 04 */ stb r0, 4(r3) -/* 80038E58 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetProjectionAspect__14dDemo_camera_cFf.s b/asm/d/d_demo/JSGSetProjectionAspect__14dDemo_camera_cFf.s deleted file mode 100644 index 1c1e2ae152..0000000000 --- a/asm/d/d_demo/JSGSetProjectionAspect__14dDemo_camera_cFf.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_80038BD0: -/* 80038BD0 D0 23 00 14 */ stfs f1, 0x14(r3) -/* 80038BD4 88 03 00 04 */ lbz r0, 4(r3) -/* 80038BD8 60 00 00 08 */ ori r0, r0, 8 -/* 80038BDC 98 03 00 04 */ stb r0, 4(r3) -/* 80038BE0 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetProjectionFar__14dDemo_camera_cFf.s b/asm/d/d_demo/JSGSetProjectionFar__14dDemo_camera_cFf.s deleted file mode 100644 index 22853c800a..0000000000 --- a/asm/d/d_demo/JSGSetProjectionFar__14dDemo_camera_cFf.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_80038B40: -/* 80038B40 D0 23 00 0C */ stfs f1, 0xc(r3) -/* 80038B44 88 03 00 04 */ lbz r0, 4(r3) -/* 80038B48 60 00 00 02 */ ori r0, r0, 2 -/* 80038B4C 98 03 00 04 */ stb r0, 4(r3) -/* 80038B50 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetProjectionFovy__14dDemo_camera_cFf.s b/asm/d/d_demo/JSGSetProjectionFovy__14dDemo_camera_cFf.s deleted file mode 100644 index 7bceebc850..0000000000 --- a/asm/d/d_demo/JSGSetProjectionFovy__14dDemo_camera_cFf.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_80038B88: -/* 80038B88 D0 23 00 10 */ stfs f1, 0x10(r3) -/* 80038B8C 88 03 00 04 */ lbz r0, 4(r3) -/* 80038B90 60 00 00 04 */ ori r0, r0, 4 -/* 80038B94 98 03 00 04 */ stb r0, 4(r3) -/* 80038B98 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetProjectionNear__14dDemo_camera_cFf.s b/asm/d/d_demo/JSGSetProjectionNear__14dDemo_camera_cFf.s deleted file mode 100644 index b8e533d492..0000000000 --- a/asm/d/d_demo/JSGSetProjectionNear__14dDemo_camera_cFf.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_80038AF8: -/* 80038AF8 D0 23 00 08 */ stfs f1, 8(r3) -/* 80038AFC 88 03 00 04 */ lbz r0, 4(r3) -/* 80038B00 60 00 00 01 */ ori r0, r0, 1 -/* 80038B04 98 03 00 04 */ stb r0, 4(r3) -/* 80038B08 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetRotation__13dDemo_actor_cFRC3Vec.s b/asm/d/d_demo/JSGSetRotation__13dDemo_actor_cFRC3Vec.s deleted file mode 100644 index 2c898c3b87..0000000000 --- a/asm/d/d_demo/JSGSetRotation__13dDemo_actor_cFRC3Vec.s +++ /dev/null @@ -1,26 +0,0 @@ -lbl_800389A8: -/* 800389A8 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 800389AC C0 22 83 CC */ lfs f1, lit_4567(r2) -/* 800389B0 C0 04 00 00 */ lfs f0, 0(r4) -/* 800389B4 EC 01 00 32 */ fmuls f0, f1, f0 -/* 800389B8 FC 00 00 1E */ fctiwz f0, f0 -/* 800389BC D8 01 00 08 */ stfd f0, 8(r1) -/* 800389C0 80 01 00 0C */ lwz r0, 0xc(r1) -/* 800389C4 B0 03 00 20 */ sth r0, 0x20(r3) -/* 800389C8 C0 04 00 04 */ lfs f0, 4(r4) -/* 800389CC EC 01 00 32 */ fmuls f0, f1, f0 -/* 800389D0 FC 00 00 1E */ fctiwz f0, f0 -/* 800389D4 D8 01 00 10 */ stfd f0, 0x10(r1) -/* 800389D8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800389DC B0 03 00 22 */ sth r0, 0x22(r3) -/* 800389E0 C0 04 00 08 */ lfs f0, 8(r4) -/* 800389E4 EC 01 00 32 */ fmuls f0, f1, f0 -/* 800389E8 FC 00 00 1E */ fctiwz f0, f0 -/* 800389EC D8 01 00 18 */ stfd f0, 0x18(r1) -/* 800389F0 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 800389F4 B0 03 00 24 */ sth r0, 0x24(r3) -/* 800389F8 A0 03 00 04 */ lhz r0, 4(r3) -/* 800389FC 60 00 00 08 */ ori r0, r0, 8 -/* 80038A00 B0 03 00 04 */ sth r0, 4(r3) -/* 80038A04 38 21 00 20 */ addi r1, r1, 0x20 -/* 80038A08 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetScaling__13dDemo_actor_cFRC3Vec.s b/asm/d/d_demo/JSGSetScaling__13dDemo_actor_cFRC3Vec.s deleted file mode 100644 index c3e033a3f9..0000000000 --- a/asm/d/d_demo/JSGSetScaling__13dDemo_actor_cFRC3Vec.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_80038980: -/* 80038980 C0 04 00 00 */ lfs f0, 0(r4) -/* 80038984 D0 03 00 14 */ stfs f0, 0x14(r3) -/* 80038988 C0 04 00 04 */ lfs f0, 4(r4) -/* 8003898C D0 03 00 18 */ stfs f0, 0x18(r3) -/* 80038990 C0 04 00 08 */ lfs f0, 8(r4) -/* 80038994 D0 03 00 1C */ stfs f0, 0x1c(r3) -/* 80038998 A0 03 00 04 */ lhz r0, 4(r3) -/* 8003899C 60 00 00 04 */ ori r0, r0, 4 -/* 800389A0 B0 03 00 04 */ sth r0, 4(r3) -/* 800389A4 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetShape__13dDemo_actor_cFUl.s b/asm/d/d_demo/JSGSetShape__13dDemo_actor_cFUl.s deleted file mode 100644 index a3ba645fec..0000000000 --- a/asm/d/d_demo/JSGSetShape__13dDemo_actor_cFUl.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_80038A0C: -/* 80038A0C 90 83 00 28 */ stw r4, 0x28(r3) -/* 80038A10 A0 03 00 04 */ lhz r0, 4(r3) -/* 80038A14 60 00 00 10 */ ori r0, r0, 0x10 -/* 80038A18 B0 03 00 04 */ sth r0, 4(r3) -/* 80038A1C 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetStartZ__11dDemo_fog_cFf.s b/asm/d/d_demo/JSGSetStartZ__11dDemo_fog_cFf.s deleted file mode 100644 index 015419ab90..0000000000 --- a/asm/d/d_demo/JSGSetStartZ__11dDemo_fog_cFf.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_80038EFC: -/* 80038EFC D0 23 00 08 */ stfs f1, 8(r3) -/* 80038F00 88 03 00 04 */ lbz r0, 4(r3) -/* 80038F04 60 00 00 02 */ ori r0, r0, 2 -/* 80038F08 98 03 00 04 */ stb r0, 4(r3) -/* 80038F0C 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetTextureAnimationFrame__13dDemo_actor_cFf.s b/asm/d/d_demo/JSGSetTextureAnimationFrame__13dDemo_actor_cFf.s deleted file mode 100644 index b0f1e9aa0b..0000000000 --- a/asm/d/d_demo/JSGSetTextureAnimationFrame__13dDemo_actor_cFf.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_80038A7C: -/* 80038A7C D0 23 00 40 */ stfs f1, 0x40(r3) -/* 80038A80 A0 03 00 04 */ lhz r0, 4(r3) -/* 80038A84 60 00 02 00 */ ori r0, r0, 0x200 -/* 80038A88 B0 03 00 04 */ sth r0, 4(r3) -/* 80038A8C 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetTextureAnimation__13dDemo_actor_cFUl.s b/asm/d/d_demo/JSGSetTextureAnimation__13dDemo_actor_cFUl.s deleted file mode 100644 index 940206792a..0000000000 --- a/asm/d/d_demo/JSGSetTextureAnimation__13dDemo_actor_cFUl.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_80038A68: -/* 80038A68 90 83 00 3C */ stw r4, 0x3c(r3) -/* 80038A6C A0 03 00 04 */ lhz r0, 4(r3) -/* 80038A70 60 00 01 00 */ ori r0, r0, 0x100 -/* 80038A74 B0 03 00 04 */ sth r0, 4(r3) -/* 80038A78 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetViewPosition__14dDemo_camera_cFRC3Vec.s b/asm/d/d_demo/JSGSetViewPosition__14dDemo_camera_cFRC3Vec.s deleted file mode 100644 index d9079ceb57..0000000000 --- a/asm/d/d_demo/JSGSetViewPosition__14dDemo_camera_cFRC3Vec.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_80038C44: -/* 80038C44 C0 04 00 00 */ lfs f0, 0(r4) -/* 80038C48 D0 03 00 18 */ stfs f0, 0x18(r3) -/* 80038C4C C0 04 00 04 */ lfs f0, 4(r4) -/* 80038C50 D0 03 00 1C */ stfs f0, 0x1c(r3) -/* 80038C54 C0 04 00 08 */ lfs f0, 8(r4) -/* 80038C58 D0 03 00 20 */ stfs f0, 0x20(r3) -/* 80038C5C 88 03 00 04 */ lbz r0, 4(r3) -/* 80038C60 60 00 00 10 */ ori r0, r0, 0x10 -/* 80038C64 98 03 00 04 */ stb r0, 4(r3) -/* 80038C68 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetViewRoll__14dDemo_camera_cFf.s b/asm/d/d_demo/JSGSetViewRoll__14dDemo_camera_cFf.s deleted file mode 100644 index 9e74238e0c..0000000000 --- a/asm/d/d_demo/JSGSetViewRoll__14dDemo_camera_cFf.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_80038DDC: -/* 80038DDC D0 23 00 3C */ stfs f1, 0x3c(r3) -/* 80038DE0 88 03 00 04 */ lbz r0, 4(r3) -/* 80038DE4 60 00 00 80 */ ori r0, r0, 0x80 -/* 80038DE8 98 03 00 04 */ stb r0, 4(r3) -/* 80038DEC 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetViewTargetPosition__14dDemo_camera_cFRC3Vec.s b/asm/d/d_demo/JSGSetViewTargetPosition__14dDemo_camera_cFRC3Vec.s deleted file mode 100644 index ac1141a435..0000000000 --- a/asm/d/d_demo/JSGSetViewTargetPosition__14dDemo_camera_cFRC3Vec.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_80038D5C: -/* 80038D5C C0 04 00 00 */ lfs f0, 0(r4) -/* 80038D60 D0 03 00 30 */ stfs f0, 0x30(r3) -/* 80038D64 C0 04 00 04 */ lfs f0, 4(r4) -/* 80038D68 D0 03 00 34 */ stfs f0, 0x34(r3) -/* 80038D6C C0 04 00 08 */ lfs f0, 8(r4) -/* 80038D70 D0 03 00 38 */ stfs f0, 0x38(r3) -/* 80038D74 88 03 00 04 */ lbz r0, 4(r3) -/* 80038D78 60 00 00 40 */ ori r0, r0, 0x40 -/* 80038D7C 98 03 00 04 */ stb r0, 4(r3) -/* 80038D80 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/JSGSetViewUpVector__14dDemo_camera_cFRC3Vec.s b/asm/d/d_demo/JSGSetViewUpVector__14dDemo_camera_cFRC3Vec.s deleted file mode 100644 index 23d87da142..0000000000 --- a/asm/d/d_demo/JSGSetViewUpVector__14dDemo_camera_cFRC3Vec.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_80038CD0: -/* 80038CD0 C0 04 00 00 */ lfs f0, 0(r4) -/* 80038CD4 D0 03 00 24 */ stfs f0, 0x24(r3) -/* 80038CD8 C0 04 00 04 */ lfs f0, 4(r4) -/* 80038CDC D0 03 00 28 */ stfs f0, 0x28(r3) -/* 80038CE0 C0 04 00 08 */ lfs f0, 8(r4) -/* 80038CE4 D0 03 00 2C */ stfs f0, 0x2c(r3) -/* 80038CE8 88 03 00 04 */ lbz r0, 4(r3) -/* 80038CEC 60 00 00 20 */ ori r0, r0, 0x20 -/* 80038CF0 98 03 00 04 */ stb r0, 4(r3) -/* 80038CF4 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/getActor__13dDemo_actor_cFv.s b/asm/d/d_demo/getActor__13dDemo_actor_cFv.s deleted file mode 100644 index f29030123b..0000000000 --- a/asm/d/d_demo/getActor__13dDemo_actor_cFv.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_80038128: -/* 80038128 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8003812C 7C 08 02 A6 */ mflr r0 -/* 80038130 90 01 00 14 */ stw r0, 0x14(r1) -/* 80038134 80 03 00 58 */ lwz r0, 0x58(r3) -/* 80038138 90 01 00 08 */ stw r0, 8(r1) -/* 8003813C 3C 60 80 02 */ lis r3, fpcSch_JudgeByID__FPvPv@ha /* 0x80023590@ha */ -/* 80038140 38 63 35 90 */ addi r3, r3, fpcSch_JudgeByID__FPvPv@l /* 0x80023590@l */ -/* 80038144 38 81 00 08 */ addi r4, r1, 8 -/* 80038148 4B FE 16 B1 */ bl fopAcIt_Judge__FPFPvPv_PvPv -/* 8003814C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80038150 7C 08 03 A6 */ mtlr r0 -/* 80038154 38 21 00 10 */ addi r1, r1, 0x10 -/* 80038158 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/getView__Fv.s b/asm/d/d_demo/getView__Fv.s deleted file mode 100644 index 38b3c8241d..0000000000 --- a/asm/d/d_demo/getView__Fv.s +++ /dev/null @@ -1,15 +0,0 @@ -lbl_80038A90: -/* 80038A90 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80038A94 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80038A98 88 03 5D 44 */ lbz r0, 0x5d44(r3) -/* 80038A9C 2C 00 00 00 */ cmpwi r0, 0 -/* 80038AA0 40 82 00 0C */ bne lbl_80038AAC -/* 80038AA4 38 60 00 00 */ li r3, 0 -/* 80038AA8 4E 80 00 20 */ blr -lbl_80038AAC: -/* 80038AAC 88 03 5D 70 */ lbz r0, 0x5d70(r3) -/* 80038AB0 7C 00 07 74 */ extsb r0, r0 -/* 80038AB4 1C 00 00 38 */ mulli r0, r0, 0x38 -/* 80038AB8 7C 63 02 14 */ add r3, r3, r0 -/* 80038ABC 80 63 5D 74 */ lwz r3, 0x5d74(r3) -/* 80038AC0 4E 80 00 20 */ blr diff --git a/asm/d/d_demo/setActor__13dDemo_actor_cFP10fopAc_ac_c.s b/asm/d/d_demo/setActor__13dDemo_actor_cFP10fopAc_ac_c.s deleted file mode 100644 index b530ca8b3c..0000000000 --- a/asm/d/d_demo/setActor__13dDemo_actor_cFP10fopAc_ac_c.s +++ /dev/null @@ -1,21 +0,0 @@ -lbl_8003815C: -/* 8003815C 28 04 00 00 */ cmplwi r4, 0 -/* 80038160 40 82 00 10 */ bne lbl_80038170 -/* 80038164 38 00 FF FF */ li r0, -1 -/* 80038168 90 03 00 58 */ stw r0, 0x58(r3) -/* 8003816C 48 00 00 18 */ b lbl_80038184 -lbl_80038170: -/* 80038170 41 82 00 0C */ beq lbl_8003817C -/* 80038174 80 04 00 04 */ lwz r0, 4(r4) -/* 80038178 48 00 00 08 */ b lbl_80038180 -lbl_8003817C: -/* 8003817C 38 00 FF FF */ li r0, -1 -lbl_80038180: -/* 80038180 90 03 00 58 */ stw r0, 0x58(r3) -lbl_80038184: -/* 80038184 38 00 FF FF */ li r0, -1 -/* 80038188 90 03 00 5C */ stw r0, 0x5c(r3) -/* 8003818C 90 03 00 60 */ stw r0, 0x60(r3) -/* 80038190 90 03 00 64 */ stw r0, 0x64(r3) -/* 80038194 90 03 00 68 */ stw r0, 0x68(r3) -/* 80038198 4E 80 00 20 */ blr diff --git a/asm/d/d_lib/getTime__11dLib_time_cFv.s b/asm/d/d_lib/getTime__11dLib_time_cFv.s deleted file mode 100644 index 95e8e6737a..0000000000 --- a/asm/d/d_lib/getTime__11dLib_time_cFv.s +++ /dev/null @@ -1,34 +0,0 @@ -lbl_80032804: -/* 80032804 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80032808 7C 08 02 A6 */ mflr r0 -/* 8003280C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80032810 88 0D 88 68 */ lbz r0, data_80450DE8(r13) -/* 80032814 28 00 00 00 */ cmplwi r0, 0 -/* 80032818 40 82 00 1C */ bne lbl_80032834 -/* 8003281C 48 30 FE E1 */ bl OSGetTime -/* 80032820 80 0D 88 58 */ lwz r0, m_diffTime__11dLib_time_c(r13) -/* 80032824 80 AD 88 5C */ lwz r5, data_80450DDC(r13) -/* 80032828 7C 85 20 10 */ subfc r4, r5, r4 -/* 8003282C 7C 60 19 10 */ subfe r3, r0, r3 -/* 80032830 48 00 00 40 */ b lbl_80032870 -lbl_80032834: -/* 80032834 48 30 FE C9 */ bl OSGetTime -/* 80032838 80 CD 88 58 */ lwz r6, m_diffTime__11dLib_time_c(r13) -/* 8003283C 80 ED 88 5C */ lwz r7, data_80450DDC(r13) -/* 80032840 80 0D 88 60 */ lwz r0, m_stopTime__11dLib_time_c(r13) -/* 80032844 80 AD 88 64 */ lwz r5, data_80450DE4(r13) -/* 80032848 7C A5 20 10 */ subfc r5, r5, r4 -/* 8003284C 7C 00 19 10 */ subfe r0, r0, r3 -/* 80032850 7C A7 28 14 */ addc r5, r7, r5 -/* 80032854 7C 06 01 14 */ adde r0, r6, r0 -/* 80032858 90 AD 88 5C */ stw r5, data_80450DDC(r13) -/* 8003285C 90 0D 88 58 */ stw r0, m_diffTime__11dLib_time_c(r13) -/* 80032860 90 8D 88 64 */ stw r4, data_80450DE4(r13) -/* 80032864 90 6D 88 60 */ stw r3, m_stopTime__11dLib_time_c(r13) -/* 80032868 7C 85 20 10 */ subfc r4, r5, r4 -/* 8003286C 7C 60 19 10 */ subfe r3, r0, r3 -lbl_80032870: -/* 80032870 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80032874 7C 08 03 A6 */ mtlr r0 -/* 80032878 38 21 00 10 */ addi r1, r1, 0x10 -/* 8003287C 4E 80 00 20 */ blr diff --git a/asm/d/d_lib/startTime__11dLib_time_cFv.s b/asm/d/d_lib/startTime__11dLib_time_cFv.s deleted file mode 100644 index 6a09482e24..0000000000 --- a/asm/d/d_lib/startTime__11dLib_time_cFv.s +++ /dev/null @@ -1,25 +0,0 @@ -lbl_800328BC: -/* 800328BC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800328C0 7C 08 02 A6 */ mflr r0 -/* 800328C4 90 01 00 14 */ stw r0, 0x14(r1) -/* 800328C8 88 0D 88 68 */ lbz r0, data_80450DE8(r13) -/* 800328CC 28 00 00 00 */ cmplwi r0, 0 -/* 800328D0 41 82 00 38 */ beq lbl_80032908 -/* 800328D4 48 30 FE 29 */ bl OSGetTime -/* 800328D8 80 0D 88 60 */ lwz r0, m_stopTime__11dLib_time_c(r13) -/* 800328DC 80 AD 88 64 */ lwz r5, data_80450DE4(r13) -/* 800328E0 7C A5 20 10 */ subfc r5, r5, r4 -/* 800328E4 7C 80 19 10 */ subfe r4, r0, r3 -/* 800328E8 80 0D 88 58 */ lwz r0, m_diffTime__11dLib_time_c(r13) -/* 800328EC 80 6D 88 5C */ lwz r3, data_80450DDC(r13) -/* 800328F0 7C 63 28 14 */ addc r3, r3, r5 -/* 800328F4 7C 00 21 14 */ adde r0, r0, r4 -/* 800328F8 90 6D 88 5C */ stw r3, data_80450DDC(r13) -/* 800328FC 90 0D 88 58 */ stw r0, m_diffTime__11dLib_time_c(r13) -/* 80032900 38 00 00 00 */ li r0, 0 -/* 80032904 98 0D 88 68 */ stb r0, data_80450DE8(r13) -lbl_80032908: -/* 80032908 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8003290C 7C 08 03 A6 */ mtlr r0 -/* 80032910 38 21 00 10 */ addi r1, r1, 0x10 -/* 80032914 4E 80 00 20 */ blr diff --git a/asm/d/d_lib/stopTime__11dLib_time_cFv.s b/asm/d/d_lib/stopTime__11dLib_time_cFv.s deleted file mode 100644 index 73e1641a8a..0000000000 --- a/asm/d/d_lib/stopTime__11dLib_time_cFv.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_80032880: -/* 80032880 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80032884 7C 08 02 A6 */ mflr r0 -/* 80032888 90 01 00 14 */ stw r0, 0x14(r1) -/* 8003288C 88 0D 88 68 */ lbz r0, data_80450DE8(r13) -/* 80032890 28 00 00 00 */ cmplwi r0, 0 -/* 80032894 40 82 00 18 */ bne lbl_800328AC -/* 80032898 48 30 FE 65 */ bl OSGetTime -/* 8003289C 90 8D 88 64 */ stw r4, data_80450DE4(r13) -/* 800328A0 90 6D 88 60 */ stw r3, m_stopTime__11dLib_time_c(r13) -/* 800328A4 38 00 00 01 */ li r0, 1 -/* 800328A8 98 0D 88 68 */ stb r0, data_80450DE8(r13) -lbl_800328AC: -/* 800328AC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800328B0 7C 08 03 A6 */ mtlr r0 -/* 800328B4 38 21 00 10 */ addi r1, r1, 0x10 -/* 800328B8 4E 80 00 20 */ blr diff --git a/asm/dolphin/base/PPCArch/PPCHalt.s b/asm/dolphin/base/PPCArch/PPCHalt.s deleted file mode 100644 index be99fa801a..0000000000 --- a/asm/dolphin/base/PPCArch/PPCHalt.s +++ /dev/null @@ -1,7 +0,0 @@ -lbl_80339D00: -/* 80339D00 7C 00 04 AC */ sync -lbl_80339D04: -/* 80339D04 60 00 00 00 */ nop -/* 80339D08 38 60 00 00 */ li r3, 0 -/* 80339D0C 60 00 00 00 */ nop -/* 80339D10 4B FF FF F4 */ b lbl_80339D04 diff --git a/asm/dolphin/gd/GDBase/GDFlushCurrToMem.s b/asm/dolphin/gd/GDBase/GDFlushCurrToMem.s deleted file mode 100644 index 56da5434ea..0000000000 --- a/asm/dolphin/gd/GDBase/GDFlushCurrToMem.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80360FB0: -/* 80360FB0 7C 08 02 A6 */ mflr r0 -/* 80360FB4 90 01 00 04 */ stw r0, 4(r1) -/* 80360FB8 94 21 FF F8 */ stwu r1, -8(r1) -/* 80360FBC 80 8D 94 00 */ lwz r4, __GDCurrentDL(r13) -/* 80360FC0 80 64 00 00 */ lwz r3, 0(r4) -/* 80360FC4 80 84 00 04 */ lwz r4, 4(r4) -/* 80360FC8 4B FD A5 E5 */ bl DCFlushRange -/* 80360FCC 80 01 00 0C */ lwz r0, 0xc(r1) -/* 80360FD0 38 21 00 08 */ addi r1, r1, 8 -/* 80360FD4 7C 08 03 A6 */ mtlr r0 -/* 80360FD8 4E 80 00 20 */ blr diff --git a/asm/dolphin/gd/GDBase/GDInitGDLObj.s b/asm/dolphin/gd/GDBase/GDInitGDLObj.s deleted file mode 100644 index f27a7b4397..0000000000 --- a/asm/dolphin/gd/GDBase/GDInitGDLObj.s +++ /dev/null @@ -1,7 +0,0 @@ -lbl_80360F98: -/* 80360F98 90 83 00 00 */ stw r4, 0(r3) -/* 80360F9C 7C 04 2A 14 */ add r0, r4, r5 -/* 80360FA0 90 83 00 08 */ stw r4, 8(r3) -/* 80360FA4 90 03 00 0C */ stw r0, 0xc(r3) -/* 80360FA8 90 A3 00 04 */ stw r5, 4(r3) -/* 80360FAC 4E 80 00 20 */ blr diff --git a/asm/dolphin/gd/GDBase/GDOverflowed.s b/asm/dolphin/gd/GDBase/GDOverflowed.s deleted file mode 100644 index fec6767ce7..0000000000 --- a/asm/dolphin/gd/GDBase/GDOverflowed.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_803610D4: -/* 803610D4 7C 08 02 A6 */ mflr r0 -/* 803610D8 90 01 00 04 */ stw r0, 4(r1) -/* 803610DC 94 21 FF F8 */ stwu r1, -8(r1) -/* 803610E0 81 8D 94 04 */ lwz r12, overflowcb(r13) -/* 803610E4 28 0C 00 00 */ cmplwi r12, 0 -/* 803610E8 41 82 00 0C */ beq lbl_803610F4 -/* 803610EC 7D 88 03 A6 */ mtlr r12 -/* 803610F0 4E 80 00 21 */ blrl -lbl_803610F4: -/* 803610F4 80 01 00 0C */ lwz r0, 0xc(r1) -/* 803610F8 38 21 00 08 */ addi r1, r1, 8 -/* 803610FC 7C 08 03 A6 */ mtlr r0 -/* 80361100 4E 80 00 20 */ blr diff --git a/asm/dolphin/gd/GDBase/GDPadCurr32.s b/asm/dolphin/gd/GDBase/GDPadCurr32.s deleted file mode 100644 index 20e00cb2c0..0000000000 --- a/asm/dolphin/gd/GDBase/GDPadCurr32.s +++ /dev/null @@ -1,66 +0,0 @@ -lbl_80360FDC: -/* 80360FDC 80 6D 94 00 */ lwz r3, __GDCurrentDL(r13) -/* 80360FE0 80 03 00 08 */ lwz r0, 8(r3) -/* 80360FE4 54 00 06 FF */ clrlwi. r0, r0, 0x1b -/* 80360FE8 4D 82 00 20 */ beqlr -/* 80360FEC 28 00 00 20 */ cmplwi r0, 0x20 -/* 80360FF0 20 60 00 20 */ subfic r3, r0, 0x20 -/* 80360FF4 38 C0 00 00 */ li r6, 0 -/* 80360FF8 4C 80 00 20 */ bgelr -/* 80360FFC 54 60 E8 FF */ rlwinm. r0, r3, 0x1d, 3, 0x1f -/* 80361000 7C 09 03 A6 */ mtctr r0 -/* 80361004 41 82 00 B0 */ beq lbl_803610B4 -lbl_80361008: -/* 80361008 80 AD 94 00 */ lwz r5, __GDCurrentDL(r13) -/* 8036100C 80 85 00 08 */ lwz r4, 8(r5) -/* 80361010 38 04 00 01 */ addi r0, r4, 1 -/* 80361014 90 05 00 08 */ stw r0, 8(r5) -/* 80361018 98 C4 00 00 */ stb r6, 0(r4) -/* 8036101C 80 AD 94 00 */ lwz r5, __GDCurrentDL(r13) -/* 80361020 80 85 00 08 */ lwz r4, 8(r5) -/* 80361024 38 04 00 01 */ addi r0, r4, 1 -/* 80361028 90 05 00 08 */ stw r0, 8(r5) -/* 8036102C 98 C4 00 00 */ stb r6, 0(r4) -/* 80361030 80 AD 94 00 */ lwz r5, __GDCurrentDL(r13) -/* 80361034 80 85 00 08 */ lwz r4, 8(r5) -/* 80361038 38 04 00 01 */ addi r0, r4, 1 -/* 8036103C 90 05 00 08 */ stw r0, 8(r5) -/* 80361040 98 C4 00 00 */ stb r6, 0(r4) -/* 80361044 80 AD 94 00 */ lwz r5, __GDCurrentDL(r13) -/* 80361048 80 85 00 08 */ lwz r4, 8(r5) -/* 8036104C 38 04 00 01 */ addi r0, r4, 1 -/* 80361050 90 05 00 08 */ stw r0, 8(r5) -/* 80361054 98 C4 00 00 */ stb r6, 0(r4) -/* 80361058 80 AD 94 00 */ lwz r5, __GDCurrentDL(r13) -/* 8036105C 80 85 00 08 */ lwz r4, 8(r5) -/* 80361060 38 04 00 01 */ addi r0, r4, 1 -/* 80361064 90 05 00 08 */ stw r0, 8(r5) -/* 80361068 98 C4 00 00 */ stb r6, 0(r4) -/* 8036106C 80 AD 94 00 */ lwz r5, __GDCurrentDL(r13) -/* 80361070 80 85 00 08 */ lwz r4, 8(r5) -/* 80361074 38 04 00 01 */ addi r0, r4, 1 -/* 80361078 90 05 00 08 */ stw r0, 8(r5) -/* 8036107C 98 C4 00 00 */ stb r6, 0(r4) -/* 80361080 80 AD 94 00 */ lwz r5, __GDCurrentDL(r13) -/* 80361084 80 85 00 08 */ lwz r4, 8(r5) -/* 80361088 38 04 00 01 */ addi r0, r4, 1 -/* 8036108C 90 05 00 08 */ stw r0, 8(r5) -/* 80361090 98 C4 00 00 */ stb r6, 0(r4) -/* 80361094 80 AD 94 00 */ lwz r5, __GDCurrentDL(r13) -/* 80361098 80 85 00 08 */ lwz r4, 8(r5) -/* 8036109C 38 04 00 01 */ addi r0, r4, 1 -/* 803610A0 90 05 00 08 */ stw r0, 8(r5) -/* 803610A4 98 C4 00 00 */ stb r6, 0(r4) -/* 803610A8 42 00 FF 60 */ bdnz lbl_80361008 -/* 803610AC 70 63 00 07 */ andi. r3, r3, 7 -/* 803610B0 4D 82 00 20 */ beqlr -lbl_803610B4: -/* 803610B4 7C 69 03 A6 */ mtctr r3 -lbl_803610B8: -/* 803610B8 80 AD 94 00 */ lwz r5, __GDCurrentDL(r13) -/* 803610BC 80 85 00 08 */ lwz r4, 8(r5) -/* 803610C0 38 04 00 01 */ addi r0, r4, 1 -/* 803610C4 90 05 00 08 */ stw r0, 8(r5) -/* 803610C8 98 C4 00 00 */ stb r6, 0(r4) -/* 803610CC 42 00 FF EC */ bdnz lbl_803610B8 -/* 803610D0 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXBump/GXSetIndTexCoordScale.s b/asm/dolphin/gx/GXBump/GXSetIndTexCoordScale.s deleted file mode 100644 index 453328375e..0000000000 --- a/asm/dolphin/gx/GXBump/GXSetIndTexCoordScale.s +++ /dev/null @@ -1,88 +0,0 @@ -lbl_8035EEA4: -/* 8035EEA4 2C 03 00 02 */ cmpwi r3, 2 -/* 8035EEA8 41 82 00 AC */ beq lbl_8035EF54 -/* 8035EEAC 40 80 00 14 */ bge lbl_8035EEC0 -/* 8035EEB0 2C 03 00 00 */ cmpwi r3, 0 -/* 8035EEB4 41 82 00 18 */ beq lbl_8035EECC -/* 8035EEB8 40 80 00 58 */ bge lbl_8035EF10 -/* 8035EEBC 48 00 01 1C */ b lbl_8035EFD8 -lbl_8035EEC0: -/* 8035EEC0 2C 03 00 04 */ cmpwi r3, 4 -/* 8035EEC4 40 80 01 14 */ bge lbl_8035EFD8 -/* 8035EEC8 48 00 00 D0 */ b lbl_8035EF98 -lbl_8035EECC: -/* 8035EECC 81 02 CB 80 */ lwz r8, __GXData(r2) -/* 8035EED0 38 C0 00 25 */ li r6, 0x25 -/* 8035EED4 38 00 00 61 */ li r0, 0x61 -/* 8035EED8 80 E8 01 28 */ lwz r7, 0x128(r8) -/* 8035EEDC 50 87 07 3E */ rlwimi r7, r4, 0, 0x1c, 0x1f -/* 8035EEE0 3C 60 CC 01 */ lis r3, 0xCC01 /* 0xCC008000@ha */ -/* 8035EEE4 90 E8 01 28 */ stw r7, 0x128(r8) -/* 8035EEE8 80 88 01 28 */ lwz r4, 0x128(r8) -/* 8035EEEC 50 A4 26 36 */ rlwimi r4, r5, 4, 0x18, 0x1b -/* 8035EEF0 90 88 01 28 */ stw r4, 0x128(r8) -/* 8035EEF4 80 88 01 28 */ lwz r4, 0x128(r8) -/* 8035EEF8 50 C4 C0 0E */ rlwimi r4, r6, 0x18, 0, 7 -/* 8035EEFC 90 88 01 28 */ stw r4, 0x128(r8) -/* 8035EF00 98 03 80 00 */ stb r0, 0x8000(r3) /* 0xCC008000@l */ -/* 8035EF04 80 08 01 28 */ lwz r0, 0x128(r8) -/* 8035EF08 90 03 80 00 */ stw r0, -0x8000(r3) -/* 8035EF0C 48 00 00 CC */ b lbl_8035EFD8 -lbl_8035EF10: -/* 8035EF10 81 02 CB 80 */ lwz r8, __GXData(r2) -/* 8035EF14 38 C0 00 25 */ li r6, 0x25 -/* 8035EF18 38 00 00 61 */ li r0, 0x61 -/* 8035EF1C 80 E8 01 28 */ lwz r7, 0x128(r8) -/* 8035EF20 50 87 45 2E */ rlwimi r7, r4, 8, 0x14, 0x17 -/* 8035EF24 3C 60 CC 01 */ lis r3, 0xCC01 /* 0xCC008000@ha */ -/* 8035EF28 90 E8 01 28 */ stw r7, 0x128(r8) -/* 8035EF2C 80 88 01 28 */ lwz r4, 0x128(r8) -/* 8035EF30 50 A4 64 26 */ rlwimi r4, r5, 0xc, 0x10, 0x13 -/* 8035EF34 90 88 01 28 */ stw r4, 0x128(r8) -/* 8035EF38 80 88 01 28 */ lwz r4, 0x128(r8) -/* 8035EF3C 50 C4 C0 0E */ rlwimi r4, r6, 0x18, 0, 7 -/* 8035EF40 90 88 01 28 */ stw r4, 0x128(r8) -/* 8035EF44 98 03 80 00 */ stb r0, 0x8000(r3) /* 0xCC008000@l */ -/* 8035EF48 80 08 01 28 */ lwz r0, 0x128(r8) -/* 8035EF4C 90 03 80 00 */ stw r0, -0x8000(r3) -/* 8035EF50 48 00 00 88 */ b lbl_8035EFD8 -lbl_8035EF54: -/* 8035EF54 81 02 CB 80 */ lwz r8, __GXData(r2) -/* 8035EF58 38 C0 00 26 */ li r6, 0x26 -/* 8035EF5C 38 00 00 61 */ li r0, 0x61 -/* 8035EF60 80 E8 01 2C */ lwz r7, 0x12c(r8) -/* 8035EF64 50 87 07 3E */ rlwimi r7, r4, 0, 0x1c, 0x1f -/* 8035EF68 3C 60 CC 01 */ lis r3, 0xCC01 /* 0xCC008000@ha */ -/* 8035EF6C 90 E8 01 2C */ stw r7, 0x12c(r8) -/* 8035EF70 80 88 01 2C */ lwz r4, 0x12c(r8) -/* 8035EF74 50 A4 26 36 */ rlwimi r4, r5, 4, 0x18, 0x1b -/* 8035EF78 90 88 01 2C */ stw r4, 0x12c(r8) -/* 8035EF7C 80 88 01 2C */ lwz r4, 0x12c(r8) -/* 8035EF80 50 C4 C0 0E */ rlwimi r4, r6, 0x18, 0, 7 -/* 8035EF84 90 88 01 2C */ stw r4, 0x12c(r8) -/* 8035EF88 98 03 80 00 */ stb r0, 0x8000(r3) /* 0xCC008000@l */ -/* 8035EF8C 80 08 01 2C */ lwz r0, 0x12c(r8) -/* 8035EF90 90 03 80 00 */ stw r0, -0x8000(r3) -/* 8035EF94 48 00 00 44 */ b lbl_8035EFD8 -lbl_8035EF98: -/* 8035EF98 81 02 CB 80 */ lwz r8, __GXData(r2) -/* 8035EF9C 38 C0 00 26 */ li r6, 0x26 -/* 8035EFA0 38 00 00 61 */ li r0, 0x61 -/* 8035EFA4 80 E8 01 2C */ lwz r7, 0x12c(r8) -/* 8035EFA8 50 87 45 2E */ rlwimi r7, r4, 8, 0x14, 0x17 -/* 8035EFAC 3C 60 CC 01 */ lis r3, 0xCC01 /* 0xCC008000@ha */ -/* 8035EFB0 90 E8 01 2C */ stw r7, 0x12c(r8) -/* 8035EFB4 80 88 01 2C */ lwz r4, 0x12c(r8) -/* 8035EFB8 50 A4 64 26 */ rlwimi r4, r5, 0xc, 0x10, 0x13 -/* 8035EFBC 90 88 01 2C */ stw r4, 0x12c(r8) -/* 8035EFC0 80 88 01 2C */ lwz r4, 0x12c(r8) -/* 8035EFC4 50 C4 C0 0E */ rlwimi r4, r6, 0x18, 0, 7 -/* 8035EFC8 90 88 01 2C */ stw r4, 0x12c(r8) -/* 8035EFCC 98 03 80 00 */ stb r0, 0x8000(r3) /* 0xCC008000@l */ -/* 8035EFD0 80 08 01 2C */ lwz r0, 0x12c(r8) -/* 8035EFD4 90 03 80 00 */ stw r0, -0x8000(r3) -lbl_8035EFD8: -/* 8035EFD8 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035EFDC 38 00 00 00 */ li r0, 0 -/* 8035EFE0 B0 03 00 02 */ sth r0, 2(r3) -/* 8035EFE4 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXBump/GXSetIndTexMtx.s b/asm/dolphin/gx/GXBump/GXSetIndTexMtx.s deleted file mode 100644 index 40b5bf40bc..0000000000 --- a/asm/dolphin/gx/GXBump/GXSetIndTexMtx.s +++ /dev/null @@ -1,101 +0,0 @@ -lbl_8035ED2C: -/* 8035ED2C 94 21 FF 90 */ stwu r1, -0x70(r1) -/* 8035ED30 2C 03 00 08 */ cmpwi r3, 8 -/* 8035ED34 93 E1 00 6C */ stw r31, 0x6c(r1) -/* 8035ED38 93 C1 00 68 */ stw r30, 0x68(r1) -/* 8035ED3C 93 A1 00 64 */ stw r29, 0x64(r1) -/* 8035ED40 41 82 00 44 */ beq lbl_8035ED84 -/* 8035ED44 40 80 00 1C */ bge lbl_8035ED60 -/* 8035ED48 2C 03 00 04 */ cmpwi r3, 4 -/* 8035ED4C 41 82 00 38 */ beq lbl_8035ED84 -/* 8035ED50 40 80 00 24 */ bge lbl_8035ED74 -/* 8035ED54 2C 03 00 01 */ cmpwi r3, 1 -/* 8035ED58 40 80 00 14 */ bge lbl_8035ED6C -/* 8035ED5C 48 00 00 28 */ b lbl_8035ED84 -lbl_8035ED60: -/* 8035ED60 2C 03 00 0C */ cmpwi r3, 0xc -/* 8035ED64 40 80 00 20 */ bge lbl_8035ED84 -/* 8035ED68 48 00 00 14 */ b lbl_8035ED7C -lbl_8035ED6C: -/* 8035ED6C 38 03 FF FF */ addi r0, r3, -1 -/* 8035ED70 48 00 00 18 */ b lbl_8035ED88 -lbl_8035ED74: -/* 8035ED74 38 03 FF FB */ addi r0, r3, -5 -/* 8035ED78 48 00 00 10 */ b lbl_8035ED88 -lbl_8035ED7C: -/* 8035ED7C 38 03 FF F7 */ addi r0, r3, -9 -/* 8035ED80 48 00 00 08 */ b lbl_8035ED88 -lbl_8035ED84: -/* 8035ED84 38 00 00 00 */ li r0, 0 -lbl_8035ED88: -/* 8035ED88 C0 42 CC 10 */ lfs f2, lit_149(r2) -/* 8035ED8C 1F E0 00 03 */ mulli r31, r0, 3 -/* 8035ED90 C0 24 00 00 */ lfs f1, 0(r4) -/* 8035ED94 C0 04 00 0C */ lfs f0, 0xc(r4) -/* 8035ED98 EC 22 00 72 */ fmuls f1, f2, f1 -/* 8035ED9C 39 45 00 11 */ addi r10, r5, 0x11 -/* 8035EDA0 EC 02 00 32 */ fmuls f0, f2, f0 -/* 8035EDA4 7D 4A 07 74 */ extsb r10, r10 -/* 8035EDA8 39 80 00 61 */ li r12, 0x61 -/* 8035EDAC FC 20 08 1E */ fctiwz f1, f1 -/* 8035EDB0 3D 60 CC 01 */ lis r11, 0xCC01 /* 0xCC008000@ha */ -/* 8035EDB4 FC 00 00 1E */ fctiwz f0, f0 -/* 8035EDB8 3B C0 00 00 */ li r30, 0 -/* 8035EDBC 38 1F 00 06 */ addi r0, r31, 6 -/* 8035EDC0 D8 21 00 58 */ stfd f1, 0x58(r1) -/* 8035EDC4 55 48 F7 BE */ rlwinm r8, r10, 0x1e, 0x1e, 0x1f -/* 8035EDC8 38 FF 00 07 */ addi r7, r31, 7 -/* 8035EDCC 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035EDD0 D8 01 00 50 */ stfd f0, 0x50(r1) -/* 8035EDD4 81 21 00 5C */ lwz r9, 0x5c(r1) -/* 8035EDD8 3B A0 00 00 */ li r29, 0 -/* 8035EDDC 80 C1 00 54 */ lwz r6, 0x54(r1) -/* 8035EDE0 38 BF 00 08 */ addi r5, r31, 8 -/* 8035EDE4 51 3E 05 7E */ rlwimi r30, r9, 0, 0x15, 0x1f -/* 8035EDE8 39 3E 00 00 */ addi r9, r30, 0 -/* 8035EDEC 99 8B 80 00 */ stb r12, 0x8000(r11) /* 0xCC008000@l */ -/* 8035EDF0 50 C9 5A A8 */ rlwimi r9, r6, 0xb, 0xa, 0x14 -/* 8035EDF4 51 49 B2 12 */ rlwimi r9, r10, 0x16, 8, 9 -/* 8035EDF8 50 09 C0 0E */ rlwimi r9, r0, 0x18, 0, 7 -/* 8035EDFC 91 2B 80 00 */ stw r9, -0x8000(r11) -/* 8035EE00 55 46 E7 BE */ rlwinm r6, r10, 0x1c, 0x1e, 0x1f -/* 8035EE04 3B C0 00 00 */ li r30, 0 -/* 8035EE08 C0 24 00 04 */ lfs f1, 4(r4) -/* 8035EE0C 38 00 00 00 */ li r0, 0 -/* 8035EE10 C0 04 00 10 */ lfs f0, 0x10(r4) -/* 8035EE14 EC 22 00 72 */ fmuls f1, f2, f1 -/* 8035EE18 EC 02 00 32 */ fmuls f0, f2, f0 -/* 8035EE1C 99 8B 80 00 */ stb r12, -0x8000(r11) -/* 8035EE20 FC 20 08 1E */ fctiwz f1, f1 -/* 8035EE24 FC 00 00 1E */ fctiwz f0, f0 -/* 8035EE28 D8 21 00 48 */ stfd f1, 0x48(r1) -/* 8035EE2C D8 01 00 40 */ stfd f0, 0x40(r1) -/* 8035EE30 81 41 00 4C */ lwz r10, 0x4c(r1) -/* 8035EE34 81 21 00 44 */ lwz r9, 0x44(r1) -/* 8035EE38 51 5D 05 7E */ rlwimi r29, r10, 0, 0x15, 0x1f -/* 8035EE3C 51 3D 5A A8 */ rlwimi r29, r9, 0xb, 0xa, 0x14 -/* 8035EE40 51 1D B2 12 */ rlwimi r29, r8, 0x16, 8, 9 -/* 8035EE44 50 FD C0 0E */ rlwimi r29, r7, 0x18, 0, 7 -/* 8035EE48 93 AB 80 00 */ stw r29, -0x8000(r11) -/* 8035EE4C C0 24 00 08 */ lfs f1, 8(r4) -/* 8035EE50 C0 04 00 14 */ lfs f0, 0x14(r4) -/* 8035EE54 EC 22 00 72 */ fmuls f1, f2, f1 -/* 8035EE58 EC 02 00 32 */ fmuls f0, f2, f0 -/* 8035EE5C 99 8B 80 00 */ stb r12, -0x8000(r11) -/* 8035EE60 FC 20 08 1E */ fctiwz f1, f1 -/* 8035EE64 FC 00 00 1E */ fctiwz f0, f0 -/* 8035EE68 D8 21 00 38 */ stfd f1, 0x38(r1) -/* 8035EE6C D8 01 00 30 */ stfd f0, 0x30(r1) -/* 8035EE70 80 E1 00 3C */ lwz r7, 0x3c(r1) -/* 8035EE74 80 81 00 34 */ lwz r4, 0x34(r1) -/* 8035EE78 50 FE 05 7E */ rlwimi r30, r7, 0, 0x15, 0x1f -/* 8035EE7C 50 9E 5A A8 */ rlwimi r30, r4, 0xb, 0xa, 0x14 -/* 8035EE80 50 DE B2 12 */ rlwimi r30, r6, 0x16, 8, 9 -/* 8035EE84 50 BE C0 0E */ rlwimi r30, r5, 0x18, 0, 7 -/* 8035EE88 93 CB 80 00 */ stw r30, -0x8000(r11) -/* 8035EE8C B0 03 00 02 */ sth r0, 2(r3) -/* 8035EE90 83 E1 00 6C */ lwz r31, 0x6c(r1) -/* 8035EE94 83 C1 00 68 */ lwz r30, 0x68(r1) -/* 8035EE98 83 A1 00 64 */ lwz r29, 0x64(r1) -/* 8035EE9C 38 21 00 70 */ addi r1, r1, 0x70 -/* 8035EEA0 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXBump/GXSetIndTexOrder.s b/asm/dolphin/gx/GXBump/GXSetIndTexOrder.s deleted file mode 100644 index ca44538b68..0000000000 --- a/asm/dolphin/gx/GXBump/GXSetIndTexOrder.s +++ /dev/null @@ -1,68 +0,0 @@ -lbl_8035EFE8: -/* 8035EFE8 2C 05 00 FF */ cmpwi r5, 0xff -/* 8035EFEC 40 82 00 08 */ bne lbl_8035EFF4 -/* 8035EFF0 38 A0 00 00 */ li r5, 0 -lbl_8035EFF4: -/* 8035EFF4 2C 04 00 FF */ cmpwi r4, 0xff -/* 8035EFF8 40 82 00 08 */ bne lbl_8035F000 -/* 8035EFFC 38 80 00 00 */ li r4, 0 -lbl_8035F000: -/* 8035F000 2C 03 00 02 */ cmpwi r3, 2 -/* 8035F004 41 82 00 64 */ beq lbl_8035F068 -/* 8035F008 40 80 00 14 */ bge lbl_8035F01C -/* 8035F00C 2C 03 00 00 */ cmpwi r3, 0 -/* 8035F010 41 82 00 18 */ beq lbl_8035F028 -/* 8035F014 40 80 00 34 */ bge lbl_8035F048 -/* 8035F018 48 00 00 8C */ b lbl_8035F0A4 -lbl_8035F01C: -/* 8035F01C 2C 03 00 04 */ cmpwi r3, 4 -/* 8035F020 40 80 00 84 */ bge lbl_8035F0A4 -/* 8035F024 48 00 00 64 */ b lbl_8035F088 -lbl_8035F028: -/* 8035F028 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035F02C 80 03 01 20 */ lwz r0, 0x120(r3) -/* 8035F030 50 A0 07 7E */ rlwimi r0, r5, 0, 0x1d, 0x1f -/* 8035F034 90 03 01 20 */ stw r0, 0x120(r3) -/* 8035F038 80 03 01 20 */ lwz r0, 0x120(r3) -/* 8035F03C 50 80 1E B8 */ rlwimi r0, r4, 3, 0x1a, 0x1c -/* 8035F040 90 03 01 20 */ stw r0, 0x120(r3) -/* 8035F044 48 00 00 60 */ b lbl_8035F0A4 -lbl_8035F048: -/* 8035F048 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035F04C 80 03 01 20 */ lwz r0, 0x120(r3) -/* 8035F050 50 A0 35 F2 */ rlwimi r0, r5, 6, 0x17, 0x19 -/* 8035F054 90 03 01 20 */ stw r0, 0x120(r3) -/* 8035F058 80 03 01 20 */ lwz r0, 0x120(r3) -/* 8035F05C 50 80 4D 2C */ rlwimi r0, r4, 9, 0x14, 0x16 -/* 8035F060 90 03 01 20 */ stw r0, 0x120(r3) -/* 8035F064 48 00 00 40 */ b lbl_8035F0A4 -lbl_8035F068: -/* 8035F068 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035F06C 80 03 01 20 */ lwz r0, 0x120(r3) -/* 8035F070 50 A0 64 66 */ rlwimi r0, r5, 0xc, 0x11, 0x13 -/* 8035F074 90 03 01 20 */ stw r0, 0x120(r3) -/* 8035F078 80 03 01 20 */ lwz r0, 0x120(r3) -/* 8035F07C 50 80 7B A0 */ rlwimi r0, r4, 0xf, 0xe, 0x10 -/* 8035F080 90 03 01 20 */ stw r0, 0x120(r3) -/* 8035F084 48 00 00 20 */ b lbl_8035F0A4 -lbl_8035F088: -/* 8035F088 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035F08C 80 03 01 20 */ lwz r0, 0x120(r3) -/* 8035F090 50 A0 92 DA */ rlwimi r0, r5, 0x12, 0xb, 0xd -/* 8035F094 90 03 01 20 */ stw r0, 0x120(r3) -/* 8035F098 80 03 01 20 */ lwz r0, 0x120(r3) -/* 8035F09C 50 80 AA 14 */ rlwimi r0, r4, 0x15, 8, 0xa -/* 8035F0A0 90 03 01 20 */ stw r0, 0x120(r3) -lbl_8035F0A4: -/* 8035F0A4 38 00 00 61 */ li r0, 0x61 -/* 8035F0A8 80 82 CB 80 */ lwz r4, __GXData(r2) -/* 8035F0AC 3C A0 CC 01 */ lis r5, 0xCC01 /* 0xCC008000@ha */ -/* 8035F0B0 98 05 80 00 */ stb r0, 0x8000(r5) /* 0xCC008000@l */ -/* 8035F0B4 38 00 00 00 */ li r0, 0 -/* 8035F0B8 80 64 01 20 */ lwz r3, 0x120(r4) -/* 8035F0BC 90 65 80 00 */ stw r3, -0x8000(r5) -/* 8035F0C0 80 64 05 AC */ lwz r3, 0x5ac(r4) -/* 8035F0C4 60 63 00 03 */ ori r3, r3, 3 -/* 8035F0C8 90 64 05 AC */ stw r3, 0x5ac(r4) -/* 8035F0CC B0 04 00 02 */ sth r0, 2(r4) -/* 8035F0D0 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXBump/GXSetNumIndStages.s b/asm/dolphin/gx/GXBump/GXSetNumIndStages.s deleted file mode 100644 index aa80419cc2..0000000000 --- a/asm/dolphin/gx/GXBump/GXSetNumIndStages.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8035F0D4: -/* 8035F0D4 80 82 CB 80 */ lwz r4, __GXData(r2) -/* 8035F0D8 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 8035F0DC 80 64 02 04 */ lwz r3, 0x204(r4) -/* 8035F0E0 50 03 83 5E */ rlwimi r3, r0, 0x10, 0xd, 0xf -/* 8035F0E4 90 64 02 04 */ stw r3, 0x204(r4) -/* 8035F0E8 80 04 05 AC */ lwz r0, 0x5ac(r4) -/* 8035F0EC 60 00 00 06 */ ori r0, r0, 6 -/* 8035F0F0 90 04 05 AC */ stw r0, 0x5ac(r4) -/* 8035F0F4 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXBump/GXSetTevDirect.s b/asm/dolphin/gx/GXBump/GXSetTevDirect.s deleted file mode 100644 index 794170ad5d..0000000000 --- a/asm/dolphin/gx/GXBump/GXSetTevDirect.s +++ /dev/null @@ -1,19 +0,0 @@ -lbl_8035F0F8: -/* 8035F0F8 7C 08 02 A6 */ mflr r0 -/* 8035F0FC 38 80 00 00 */ li r4, 0 -/* 8035F100 90 01 00 04 */ stw r0, 4(r1) -/* 8035F104 38 00 00 00 */ li r0, 0 -/* 8035F108 38 A0 00 00 */ li r5, 0 -/* 8035F10C 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8035F110 38 C0 00 00 */ li r6, 0 -/* 8035F114 38 E0 00 00 */ li r7, 0 -/* 8035F118 90 01 00 08 */ stw r0, 8(r1) -/* 8035F11C 39 00 00 00 */ li r8, 0 -/* 8035F120 39 20 00 00 */ li r9, 0 -/* 8035F124 90 01 00 0C */ stw r0, 0xc(r1) -/* 8035F128 39 40 00 00 */ li r10, 0 -/* 8035F12C 4B FF FB 95 */ bl GXSetTevIndirect -/* 8035F130 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8035F134 38 21 00 18 */ addi r1, r1, 0x18 -/* 8035F138 7C 08 03 A6 */ mtlr r0 -/* 8035F13C 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXBump/GXSetTevIndirect.s b/asm/dolphin/gx/GXBump/GXSetTevIndirect.s deleted file mode 100644 index 5455e3b4a4..0000000000 --- a/asm/dolphin/gx/GXBump/GXSetTevIndirect.s +++ /dev/null @@ -1,28 +0,0 @@ -lbl_8035ECC0: -/* 8035ECC0 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 8035ECC4 38 00 00 00 */ li r0, 0 -/* 8035ECC8 50 80 07 BE */ rlwimi r0, r4, 0, 0x1e, 0x1f -/* 8035ECCC 93 E1 00 2C */ stw r31, 0x2c(r1) -/* 8035ECD0 7C 0B 03 78 */ mr r11, r0 -/* 8035ECD4 50 AB 17 3A */ rlwimi r11, r5, 2, 0x1c, 0x1d -/* 8035ECD8 81 81 00 3C */ lwz r12, 0x3c(r1) -/* 8035ECDC 8B E1 00 3B */ lbz r31, 0x3b(r1) -/* 8035ECE0 50 CB 26 76 */ rlwimi r11, r6, 4, 0x19, 0x1b -/* 8035ECE4 80 82 CB 80 */ lwz r4, __GXData(r2) -/* 8035ECE8 51 8B 3D F0 */ rlwimi r11, r12, 7, 0x17, 0x18 -/* 8035ECEC 50 EB 4C EC */ rlwimi r11, r7, 9, 0x13, 0x16 -/* 8035ECF0 51 0B 6C 24 */ rlwimi r11, r8, 0xd, 0x10, 0x12 -/* 8035ECF4 51 2B 83 5E */ rlwimi r11, r9, 0x10, 0xd, 0xf -/* 8035ECF8 53 EB 9B 18 */ rlwimi r11, r31, 0x13, 0xc, 0xc -/* 8035ECFC 38 00 00 61 */ li r0, 0x61 -/* 8035ED00 3C A0 CC 01 */ lis r5, 0xCC01 /* 0xCC008000@ha */ -/* 8035ED04 98 05 80 00 */ stb r0, 0x8000(r5) /* 0xCC008000@l */ -/* 8035ED08 38 03 00 10 */ addi r0, r3, 0x10 -/* 8035ED0C 51 4B A2 D6 */ rlwimi r11, r10, 0x14, 0xb, 0xb -/* 8035ED10 50 0B C0 0E */ rlwimi r11, r0, 0x18, 0, 7 -/* 8035ED14 91 65 80 00 */ stw r11, -0x8000(r5) -/* 8035ED18 38 00 00 00 */ li r0, 0 -/* 8035ED1C B0 04 00 02 */ sth r0, 2(r4) -/* 8035ED20 83 E1 00 2C */ lwz r31, 0x2c(r1) -/* 8035ED24 38 21 00 30 */ addi r1, r1, 0x30 -/* 8035ED28 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXBump/__GXFlushTextureState.s b/asm/dolphin/gx/GXBump/__GXFlushTextureState.s deleted file mode 100644 index 605efe0e9d..0000000000 --- a/asm/dolphin/gx/GXBump/__GXFlushTextureState.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8035F174: -/* 8035F174 38 00 00 61 */ li r0, 0x61 -/* 8035F178 80 82 CB 80 */ lwz r4, __GXData(r2) -/* 8035F17C 3C A0 CC 01 */ lis r5, 0xCC01 /* 0xCC008000@ha */ -/* 8035F180 98 05 80 00 */ stb r0, 0x8000(r5) /* 0xCC008000@l */ -/* 8035F184 38 00 00 00 */ li r0, 0 -/* 8035F188 80 64 01 24 */ lwz r3, 0x124(r4) -/* 8035F18C 90 65 80 00 */ stw r3, -0x8000(r5) -/* 8035F190 B0 04 00 02 */ sth r0, 2(r4) -/* 8035F194 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXBump/__GXSetIndirectMask.s b/asm/dolphin/gx/GXBump/__GXSetIndirectMask.s deleted file mode 100644 index 8b31d40ddc..0000000000 --- a/asm/dolphin/gx/GXBump/__GXSetIndirectMask.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_8035F144: -/* 8035F144 80 E2 CB 80 */ lwz r7, __GXData(r2) -/* 8035F148 38 A0 00 61 */ li r5, 0x61 -/* 8035F14C 3C 80 CC 01 */ lis r4, 0xCC01 /* 0xCC008000@ha */ -/* 8035F150 80 C7 01 24 */ lwz r6, 0x124(r7) -/* 8035F154 50 66 06 3E */ rlwimi r6, r3, 0, 0x18, 0x1f -/* 8035F158 38 00 00 00 */ li r0, 0 -/* 8035F15C 90 C7 01 24 */ stw r6, 0x124(r7) -/* 8035F160 98 A4 80 00 */ stb r5, 0x8000(r4) /* 0xCC008000@l */ -/* 8035F164 80 67 01 24 */ lwz r3, 0x124(r7) -/* 8035F168 90 64 80 00 */ stw r3, -0x8000(r4) -/* 8035F16C B0 07 00 02 */ sth r0, 2(r7) -/* 8035F170 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXFifo/GXGetFifoBase.s b/asm/dolphin/gx/GXFifo/GXGetFifoBase.s deleted file mode 100644 index b6a8d9ff8c..0000000000 --- a/asm/dolphin/gx/GXFifo/GXGetFifoBase.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_8035ABD8: -/* 8035ABD8 80 63 00 00 */ lwz r3, 0(r3) -/* 8035ABDC 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXFifo/GXGetFifoSize.s b/asm/dolphin/gx/GXFifo/GXGetFifoSize.s deleted file mode 100644 index b07c9275a7..0000000000 --- a/asm/dolphin/gx/GXFifo/GXGetFifoSize.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_8035ABE0: -/* 8035ABE0 80 63 00 08 */ lwz r3, 8(r3) -/* 8035ABE4 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXFifo/GXInitFifoLimits.s b/asm/dolphin/gx/GXFifo/GXInitFifoLimits.s deleted file mode 100644 index fed8436a7b..0000000000 --- a/asm/dolphin/gx/GXFifo/GXInitFifoLimits.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_8035A7B8: -/* 8035A7B8 90 83 00 0C */ stw r4, 0xc(r3) -/* 8035A7BC 90 A3 00 10 */ stw r5, 0x10(r3) -/* 8035A7C0 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXFifo/GXSaveCPUFifo.s b/asm/dolphin/gx/GXFifo/GXSaveCPUFifo.s deleted file mode 100644 index 320d3a36be..0000000000 --- a/asm/dolphin/gx/GXFifo/GXSaveCPUFifo.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_8035AA8C: -/* 8035AA8C 7C 08 02 A6 */ mflr r0 -/* 8035AA90 90 01 00 04 */ stw r0, 4(r1) -/* 8035AA94 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8035AA98 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8035AA9C 7C 7F 1B 78 */ mr r31, r3 -/* 8035AAA0 48 00 14 2D */ bl GXFlush -/* 8035AAA4 7F E3 FB 78 */ mr r3, r31 -/* 8035AAA8 48 00 00 19 */ bl __GXSaveCPUFifoAux -/* 8035AAAC 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8035AAB0 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8035AAB4 38 21 00 18 */ addi r1, r1, 0x18 -/* 8035AAB8 7C 08 03 A6 */ mtlr r0 -/* 8035AABC 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXFifo/__GXFifoInit.s b/asm/dolphin/gx/GXFifo/__GXFifoInit.s deleted file mode 100644 index 0544db2510..0000000000 --- a/asm/dolphin/gx/GXFifo/__GXFifoInit.s +++ /dev/null @@ -1,20 +0,0 @@ -lbl_8035AC2C: -/* 8035AC2C 7C 08 02 A6 */ mflr r0 -/* 8035AC30 3C 60 80 36 */ lis r3, GXCPInterruptHandler@ha /* 0x8035A5A8@ha */ -/* 8035AC34 90 01 00 04 */ stw r0, 4(r1) -/* 8035AC38 38 83 A5 A8 */ addi r4, r3, GXCPInterruptHandler@l /* 0x8035A5A8@l */ -/* 8035AC3C 38 60 00 11 */ li r3, 0x11 -/* 8035AC40 94 21 FF F8 */ stwu r1, -8(r1) -/* 8035AC44 4B FE 2A FD */ bl __OSSetInterruptHandler -/* 8035AC48 38 60 40 00 */ li r3, 0x4000 -/* 8035AC4C 4B FE 2E F9 */ bl __OSUnmaskInterrupts -/* 8035AC50 4B FE 60 35 */ bl OSGetCurrentThread -/* 8035AC54 38 00 00 00 */ li r0, 0 -/* 8035AC58 90 6D 93 D0 */ stw r3, __GXCurrentThread(r13) -/* 8035AC5C 90 0D 93 D8 */ stw r0, GXOverflowSuspendInProgress(r13) -/* 8035AC60 90 0D 93 C8 */ stw r0, CPUFifo(r13) -/* 8035AC64 90 0D 93 CC */ stw r0, GPFifo(r13) -/* 8035AC68 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8035AC6C 38 21 00 08 */ addi r1, r1, 8 -/* 8035AC70 7C 08 03 A6 */ mtlr r0 -/* 8035AC74 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXGeometry/GXBegin.s b/asm/dolphin/gx/GXGeometry/GXBegin.s deleted file mode 100644 index 5b7b5b35ea..0000000000 --- a/asm/dolphin/gx/GXGeometry/GXBegin.s +++ /dev/null @@ -1,61 +0,0 @@ -lbl_8035C764: -/* 8035C764 7C 08 02 A6 */ mflr r0 -/* 8035C768 90 01 00 04 */ stw r0, 4(r1) -/* 8035C76C 94 21 FF D8 */ stwu r1, -0x28(r1) -/* 8035C770 93 E1 00 24 */ stw r31, 0x24(r1) -/* 8035C774 93 C1 00 20 */ stw r30, 0x20(r1) -/* 8035C778 3B C5 00 00 */ addi r30, r5, 0 -/* 8035C77C 93 A1 00 1C */ stw r29, 0x1c(r1) -/* 8035C780 3B A4 00 00 */ addi r29, r4, 0 -/* 8035C784 93 81 00 18 */ stw r28, 0x18(r1) -/* 8035C788 3B 83 00 00 */ addi r28, r3, 0 -/* 8035C78C 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035C790 83 E6 05 AC */ lwz r31, 0x5ac(r6) -/* 8035C794 28 1F 00 00 */ cmplwi r31, 0 -/* 8035C798 41 82 00 58 */ beq lbl_8035C7F0 -/* 8035C79C 57 E0 07 FF */ clrlwi. r0, r31, 0x1f -/* 8035C7A0 41 82 00 08 */ beq lbl_8035C7A8 -/* 8035C7A4 48 00 20 4D */ bl __GXSetSUTexRegs -lbl_8035C7A8: -/* 8035C7A8 57 E0 07 BD */ rlwinm. r0, r31, 0, 0x1e, 0x1e -/* 8035C7AC 41 82 00 08 */ beq lbl_8035C7B4 -/* 8035C7B0 48 00 29 91 */ bl __GXUpdateBPMask -lbl_8035C7B4: -/* 8035C7B4 57 E0 07 7B */ rlwinm. r0, r31, 0, 0x1d, 0x1d -/* 8035C7B8 41 82 00 08 */ beq lbl_8035C7C0 -/* 8035C7BC 48 00 02 25 */ bl __GXSetGenMode -lbl_8035C7C0: -/* 8035C7C0 57 E0 07 39 */ rlwinm. r0, r31, 0, 0x1c, 0x1c -/* 8035C7C4 41 82 00 08 */ beq lbl_8035C7CC -/* 8035C7C8 4B FF EB E5 */ bl __GXSetVCD -lbl_8035C7CC: -/* 8035C7CC 57 E0 06 F7 */ rlwinm. r0, r31, 0, 0x1b, 0x1b -/* 8035C7D0 41 82 00 08 */ beq lbl_8035C7D8 -/* 8035C7D4 4B FF F2 CD */ bl __GXSetVAT -lbl_8035C7D8: -/* 8035C7D8 57 E0 06 F9 */ rlwinm. r0, r31, 0, 0x1b, 0x1c -/* 8035C7DC 41 82 00 08 */ beq lbl_8035C7E4 -/* 8035C7E0 4B FF EC 89 */ bl __GXCalculateVLim -lbl_8035C7E4: -/* 8035C7E4 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035C7E8 38 00 00 00 */ li r0, 0 -/* 8035C7EC 90 03 05 AC */ stw r0, 0x5ac(r3) -lbl_8035C7F0: -/* 8035C7F0 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035C7F4 80 03 00 00 */ lwz r0, 0(r3) -/* 8035C7F8 28 00 00 00 */ cmplwi r0, 0 -/* 8035C7FC 40 82 00 08 */ bne lbl_8035C804 -/* 8035C800 48 00 00 35 */ bl __GXSendFlushPrim -lbl_8035C804: -/* 8035C804 7F A0 E3 78 */ or r0, r29, r28 -/* 8035C808 3C 60 CC 01 */ lis r3, 0xCC01 /* 0xCC008000@ha */ -/* 8035C80C 98 03 80 00 */ stb r0, 0x8000(r3) /* 0xCC008000@l */ -/* 8035C810 B3 C3 80 00 */ sth r30, -0x8000(r3) -/* 8035C814 80 01 00 2C */ lwz r0, 0x2c(r1) -/* 8035C818 83 E1 00 24 */ lwz r31, 0x24(r1) -/* 8035C81C 83 C1 00 20 */ lwz r30, 0x20(r1) -/* 8035C820 83 A1 00 1C */ lwz r29, 0x1c(r1) -/* 8035C824 83 81 00 18 */ lwz r28, 0x18(r1) -/* 8035C828 38 21 00 28 */ addi r1, r1, 0x28 -/* 8035C82C 7C 08 03 A6 */ mtlr r0 -/* 8035C830 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXGeometry/GXEnableTexOffsets.s b/asm/dolphin/gx/GXGeometry/GXEnableTexOffsets.s deleted file mode 100644 index 598c700f62..0000000000 --- a/asm/dolphin/gx/GXGeometry/GXEnableTexOffsets.s +++ /dev/null @@ -1,19 +0,0 @@ -lbl_8035C93C: -/* 8035C93C 80 E2 CB 80 */ lwz r7, __GXData(r2) -/* 8035C940 54 63 10 3A */ slwi r3, r3, 2 -/* 8035C944 54 A0 06 3E */ clrlwi r0, r5, 0x18 -/* 8035C948 7C C7 1A 14 */ add r6, r7, r3 -/* 8035C94C 80 66 00 B8 */ lwz r3, 0xb8(r6) -/* 8035C950 50 83 93 5A */ rlwimi r3, r4, 0x12, 0xd, 0xd -/* 8035C954 3C 80 CC 01 */ lis r4, 0xCC01 /* 0xCC008000@ha */ -/* 8035C958 90 66 00 B8 */ stw r3, 0xb8(r6) -/* 8035C95C 38 60 00 61 */ li r3, 0x61 -/* 8035C960 80 A6 00 B8 */ lwz r5, 0xb8(r6) -/* 8035C964 50 05 9B 18 */ rlwimi r5, r0, 0x13, 0xc, 0xc -/* 8035C968 38 00 00 00 */ li r0, 0 -/* 8035C96C 90 A6 00 B8 */ stw r5, 0xb8(r6) -/* 8035C970 98 64 80 00 */ stb r3, 0x8000(r4) /* 0xCC008000@l */ -/* 8035C974 80 66 00 B8 */ lwz r3, 0xb8(r6) -/* 8035C978 90 64 80 00 */ stw r3, -0x8000(r4) -/* 8035C97C B0 07 00 02 */ sth r0, 2(r7) -/* 8035C980 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXGeometry/GXSetCoPlanar.s b/asm/dolphin/gx/GXGeometry/GXSetCoPlanar.s deleted file mode 100644 index ab64f69b92..0000000000 --- a/asm/dolphin/gx/GXGeometry/GXSetCoPlanar.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_8035C9AC: -/* 8035C9AC 80 C2 CB 80 */ lwz r6, __GXData(r2) -/* 8035C9B0 38 80 00 61 */ li r4, 0x61 -/* 8035C9B4 3C 00 FE 08 */ lis r0, 0xfe08 -/* 8035C9B8 80 A6 02 04 */ lwz r5, 0x204(r6) -/* 8035C9BC 50 65 9B 18 */ rlwimi r5, r3, 0x13, 0xc, 0xc -/* 8035C9C0 3C 60 CC 01 */ lis r3, 0xCC01 /* 0xCC008000@ha */ -/* 8035C9C4 90 A6 02 04 */ stw r5, 0x204(r6) -/* 8035C9C8 98 83 80 00 */ stb r4, 0x8000(r3) /* 0xCC008000@l */ -/* 8035C9CC 90 03 80 00 */ stw r0, -0x8000(r3) -/* 8035C9D0 98 83 80 00 */ stb r4, -0x8000(r3) -/* 8035C9D4 80 06 02 04 */ lwz r0, 0x204(r6) -/* 8035C9D8 90 03 80 00 */ stw r0, -0x8000(r3) -/* 8035C9DC 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXGeometry/GXSetLineWidth.s b/asm/dolphin/gx/GXGeometry/GXSetLineWidth.s deleted file mode 100644 index 49b412a470..0000000000 --- a/asm/dolphin/gx/GXGeometry/GXSetLineWidth.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_8035C8BC: -/* 8035C8BC 80 E2 CB 80 */ lwz r7, __GXData(r2) -/* 8035C8C0 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 8035C8C4 38 60 00 61 */ li r3, 0x61 -/* 8035C8C8 80 C7 00 7C */ lwz r6, 0x7c(r7) -/* 8035C8CC 50 06 06 3E */ rlwimi r6, r0, 0, 0x18, 0x1f -/* 8035C8D0 3C A0 CC 01 */ lis r5, 0xCC01 /* 0xCC008000@ha */ -/* 8035C8D4 90 C7 00 7C */ stw r6, 0x7c(r7) -/* 8035C8D8 38 00 00 00 */ li r0, 0 -/* 8035C8DC 80 C7 00 7C */ lwz r6, 0x7c(r7) -/* 8035C8E0 50 86 83 5E */ rlwimi r6, r4, 0x10, 0xd, 0xf -/* 8035C8E4 90 C7 00 7C */ stw r6, 0x7c(r7) -/* 8035C8E8 98 65 80 00 */ stb r3, 0x8000(r5) /* 0xCC008000@l */ -/* 8035C8EC 80 67 00 7C */ lwz r3, 0x7c(r7) -/* 8035C8F0 90 65 80 00 */ stw r3, -0x8000(r5) -/* 8035C8F4 B0 07 00 02 */ sth r0, 2(r7) -/* 8035C8F8 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXGeometry/GXSetPointSize.s b/asm/dolphin/gx/GXGeometry/GXSetPointSize.s deleted file mode 100644 index b90c3a0e6f..0000000000 --- a/asm/dolphin/gx/GXGeometry/GXSetPointSize.s +++ /dev/null @@ -1,17 +0,0 @@ -lbl_8035C8FC: -/* 8035C8FC 80 E2 CB 80 */ lwz r7, __GXData(r2) -/* 8035C900 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 8035C904 38 60 00 61 */ li r3, 0x61 -/* 8035C908 80 C7 00 7C */ lwz r6, 0x7c(r7) -/* 8035C90C 50 06 44 2E */ rlwimi r6, r0, 8, 0x10, 0x17 -/* 8035C910 3C A0 CC 01 */ lis r5, 0xCC01 /* 0xCC008000@ha */ -/* 8035C914 90 C7 00 7C */ stw r6, 0x7c(r7) -/* 8035C918 38 00 00 00 */ li r0, 0 -/* 8035C91C 80 C7 00 7C */ lwz r6, 0x7c(r7) -/* 8035C920 50 86 9A 98 */ rlwimi r6, r4, 0x13, 0xa, 0xc -/* 8035C924 90 C7 00 7C */ stw r6, 0x7c(r7) -/* 8035C928 98 65 80 00 */ stb r3, 0x8000(r5) /* 0xCC008000@l */ -/* 8035C92C 80 67 00 7C */ lwz r3, 0x7c(r7) -/* 8035C930 90 65 80 00 */ stw r3, -0x8000(r5) -/* 8035C934 B0 07 00 02 */ sth r0, 2(r7) -/* 8035C938 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXGeometry/__GXSendFlushPrim.s b/asm/dolphin/gx/GXGeometry/__GXSendFlushPrim.s deleted file mode 100644 index 49275acaf4..0000000000 --- a/asm/dolphin/gx/GXGeometry/__GXSendFlushPrim.s +++ /dev/null @@ -1,39 +0,0 @@ -lbl_8035C834: -/* 8035C834 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035C838 38 00 00 98 */ li r0, 0x98 -/* 8035C83C 3C A0 CC 01 */ lis r5, 0xCC01 /* 0xCC008000@ha */ -/* 8035C840 A0 C3 00 04 */ lhz r6, 4(r3) -/* 8035C844 38 80 00 00 */ li r4, 0 -/* 8035C848 A0 63 00 06 */ lhz r3, 6(r3) -/* 8035C84C 7C E6 19 D6 */ mullw r7, r6, r3 -/* 8035C850 98 05 80 00 */ stb r0, 0x8000(r5) /* 0xCC008000@l */ -/* 8035C854 B0 C5 80 00 */ sth r6, -0x8000(r5) -/* 8035C858 38 67 00 03 */ addi r3, r7, 3 -/* 8035C85C 28 07 00 00 */ cmplwi r7, 0 -/* 8035C860 54 63 F0 BE */ srwi r3, r3, 2 -/* 8035C864 40 81 00 48 */ ble lbl_8035C8AC -/* 8035C868 54 60 E8 FF */ rlwinm. r0, r3, 0x1d, 3, 0x1f -/* 8035C86C 7C 09 03 A6 */ mtctr r0 -/* 8035C870 41 82 00 30 */ beq lbl_8035C8A0 -lbl_8035C874: -/* 8035C874 90 85 80 00 */ stw r4, -0x8000(r5) -/* 8035C878 90 85 80 00 */ stw r4, -0x8000(r5) -/* 8035C87C 90 85 80 00 */ stw r4, -0x8000(r5) -/* 8035C880 90 85 80 00 */ stw r4, -0x8000(r5) -/* 8035C884 90 85 80 00 */ stw r4, -0x8000(r5) -/* 8035C888 90 85 80 00 */ stw r4, -0x8000(r5) -/* 8035C88C 90 85 80 00 */ stw r4, -0x8000(r5) -/* 8035C890 90 85 80 00 */ stw r4, -0x8000(r5) -/* 8035C894 42 00 FF E0 */ bdnz lbl_8035C874 -/* 8035C898 70 63 00 07 */ andi. r3, r3, 7 -/* 8035C89C 41 82 00 10 */ beq lbl_8035C8AC -lbl_8035C8A0: -/* 8035C8A0 7C 69 03 A6 */ mtctr r3 -lbl_8035C8A4: -/* 8035C8A4 90 85 80 00 */ stw r4, -0x8000(r5) -/* 8035C8A8 42 00 FF FC */ bdnz lbl_8035C8A4 -lbl_8035C8AC: -/* 8035C8AC 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035C8B0 38 00 00 01 */ li r0, 1 -/* 8035C8B4 B0 03 00 02 */ sth r0, 2(r3) -/* 8035C8B8 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXGeometry/__GXSetDirtyState.s b/asm/dolphin/gx/GXGeometry/__GXSetDirtyState.s deleted file mode 100644 index 2efc1c3275..0000000000 --- a/asm/dolphin/gx/GXGeometry/__GXSetDirtyState.s +++ /dev/null @@ -1,39 +0,0 @@ -lbl_8035C6E4: -/* 8035C6E4 7C 08 02 A6 */ mflr r0 -/* 8035C6E8 90 01 00 04 */ stw r0, 4(r1) -/* 8035C6EC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8035C6F0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8035C6F4 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035C6F8 83 E3 05 AC */ lwz r31, 0x5ac(r3) -/* 8035C6FC 57 E0 07 FF */ clrlwi. r0, r31, 0x1f -/* 8035C700 41 82 00 08 */ beq lbl_8035C708 -/* 8035C704 48 00 20 ED */ bl __GXSetSUTexRegs -lbl_8035C708: -/* 8035C708 57 E0 07 BD */ rlwinm. r0, r31, 0, 0x1e, 0x1e -/* 8035C70C 41 82 00 08 */ beq lbl_8035C714 -/* 8035C710 48 00 2A 31 */ bl __GXUpdateBPMask -lbl_8035C714: -/* 8035C714 57 E0 07 7B */ rlwinm. r0, r31, 0, 0x1d, 0x1d -/* 8035C718 41 82 00 08 */ beq lbl_8035C720 -/* 8035C71C 48 00 02 C5 */ bl __GXSetGenMode -lbl_8035C720: -/* 8035C720 57 E0 07 39 */ rlwinm. r0, r31, 0, 0x1c, 0x1c -/* 8035C724 41 82 00 08 */ beq lbl_8035C72C -/* 8035C728 4B FF EC 85 */ bl __GXSetVCD -lbl_8035C72C: -/* 8035C72C 57 E0 06 F7 */ rlwinm. r0, r31, 0, 0x1b, 0x1b -/* 8035C730 41 82 00 08 */ beq lbl_8035C738 -/* 8035C734 4B FF F3 6D */ bl __GXSetVAT -lbl_8035C738: -/* 8035C738 57 E0 06 F9 */ rlwinm. r0, r31, 0, 0x1b, 0x1c -/* 8035C73C 41 82 00 08 */ beq lbl_8035C744 -/* 8035C740 4B FF ED 29 */ bl __GXCalculateVLim -lbl_8035C744: -/* 8035C744 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035C748 38 00 00 00 */ li r0, 0 -/* 8035C74C 90 03 05 AC */ stw r0, 0x5ac(r3) -/* 8035C750 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8035C754 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8035C758 38 21 00 10 */ addi r1, r1, 0x10 -/* 8035C75C 7C 08 03 A6 */ mtlr r0 -/* 8035C760 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXGeometry/__GXSetGenMode.s b/asm/dolphin/gx/GXGeometry/__GXSetGenMode.s deleted file mode 100644 index ebde035de4..0000000000 --- a/asm/dolphin/gx/GXGeometry/__GXSetGenMode.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8035C9E0: -/* 8035C9E0 38 00 00 61 */ li r0, 0x61 -/* 8035C9E4 80 82 CB 80 */ lwz r4, __GXData(r2) -/* 8035C9E8 3C A0 CC 01 */ lis r5, 0xCC01 /* 0xCC008000@ha */ -/* 8035C9EC 98 05 80 00 */ stb r0, 0x8000(r5) /* 0xCC008000@l */ -/* 8035C9F0 38 00 00 00 */ li r0, 0 -/* 8035C9F4 80 64 02 04 */ lwz r3, 0x204(r4) -/* 8035C9F8 90 65 80 00 */ stw r3, -0x8000(r5) -/* 8035C9FC B0 04 00 02 */ sth r0, 2(r4) -/* 8035CA00 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXLight/GXInitLightAttn.s b/asm/dolphin/gx/GXLight/GXInitLightAttn.s deleted file mode 100644 index 4b8f9e0239..0000000000 --- a/asm/dolphin/gx/GXLight/GXInitLightAttn.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_8035D630: -/* 8035D630 D0 23 00 10 */ stfs f1, 0x10(r3) -/* 8035D634 D0 43 00 14 */ stfs f2, 0x14(r3) -/* 8035D638 D0 63 00 18 */ stfs f3, 0x18(r3) -/* 8035D63C D0 83 00 1C */ stfs f4, 0x1c(r3) -/* 8035D640 D0 A3 00 20 */ stfs f5, 0x20(r3) -/* 8035D644 D0 C3 00 24 */ stfs f6, 0x24(r3) -/* 8035D648 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXLight/GXInitLightColor.s b/asm/dolphin/gx/GXLight/GXInitLightColor.s deleted file mode 100644 index d189dc4a1d..0000000000 --- a/asm/dolphin/gx/GXLight/GXInitLightColor.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_8035D8D8: -/* 8035D8D8 80 04 00 00 */ lwz r0, 0(r4) -/* 8035D8DC 90 03 00 0C */ stw r0, 0xc(r3) -/* 8035D8E0 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXLight/GXInitLightDir.s b/asm/dolphin/gx/GXLight/GXInitLightDir.s deleted file mode 100644 index 67f005213a..0000000000 --- a/asm/dolphin/gx/GXLight/GXInitLightDir.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_8035D8BC: -/* 8035D8BC FC 80 08 50 */ fneg f4, f1 -/* 8035D8C0 FC 20 10 50 */ fneg f1, f2 -/* 8035D8C4 FC 00 18 50 */ fneg f0, f3 -/* 8035D8C8 D0 83 00 34 */ stfs f4, 0x34(r3) -/* 8035D8CC D0 23 00 38 */ stfs f1, 0x38(r3) -/* 8035D8D0 D0 03 00 3C */ stfs f0, 0x3c(r3) -/* 8035D8D4 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXLight/GXInitLightDistAttn.s b/asm/dolphin/gx/GXLight/GXInitLightDistAttn.s deleted file mode 100644 index 648cf0f150..0000000000 --- a/asm/dolphin/gx/GXLight/GXInitLightDistAttn.s +++ /dev/null @@ -1,62 +0,0 @@ -lbl_8035D7DC: -/* 8035D7DC C0 02 CB B8 */ lfs f0, lit_134(r2) -/* 8035D7E0 FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 8035D7E4 40 80 00 08 */ bge lbl_8035D7EC -/* 8035D7E8 38 80 00 00 */ li r4, 0 -lbl_8035D7EC: -/* 8035D7EC C0 02 CB B8 */ lfs f0, lit_134(r2) -/* 8035D7F0 FC 02 00 40 */ fcmpo cr0, f2, f0 -/* 8035D7F4 4C 40 13 82 */ cror 2, 0, 2 -/* 8035D7F8 41 82 00 14 */ beq lbl_8035D80C -/* 8035D7FC C0 02 CB D0 */ lfs f0, lit_140(r2) -/* 8035D800 FC 02 00 40 */ fcmpo cr0, f2, f0 -/* 8035D804 4C 41 13 82 */ cror 2, 1, 2 -/* 8035D808 40 82 00 08 */ bne lbl_8035D810 -lbl_8035D80C: -/* 8035D80C 38 80 00 00 */ li r4, 0 -lbl_8035D810: -/* 8035D810 2C 04 00 02 */ cmpwi r4, 2 -/* 8035D814 41 82 00 3C */ beq lbl_8035D850 -/* 8035D818 40 80 00 14 */ bge lbl_8035D82C -/* 8035D81C 2C 04 00 00 */ cmpwi r4, 0 -/* 8035D820 41 82 00 70 */ beq lbl_8035D890 -/* 8035D824 40 80 00 14 */ bge lbl_8035D838 -/* 8035D828 48 00 00 68 */ b lbl_8035D890 -lbl_8035D82C: -/* 8035D82C 2C 04 00 04 */ cmpwi r4, 4 -/* 8035D830 40 80 00 60 */ bge lbl_8035D890 -/* 8035D834 48 00 00 40 */ b lbl_8035D874 -lbl_8035D838: -/* 8035D838 C0 A2 CB D0 */ lfs f5, lit_140(r2) -/* 8035D83C EC 02 00 72 */ fmuls f0, f2, f1 -/* 8035D840 C0 82 CB B8 */ lfs f4, lit_134(r2) -/* 8035D844 EC 25 10 28 */ fsubs f1, f5, f2 -/* 8035D848 EC 61 00 24 */ fdivs f3, f1, f0 -/* 8035D84C 48 00 00 50 */ b lbl_8035D89C -lbl_8035D850: -/* 8035D850 C0 A2 CB D0 */ lfs f5, lit_140(r2) -/* 8035D854 EC 82 00 72 */ fmuls f4, f2, f1 -/* 8035D858 C0 62 CB E4 */ lfs f3, lit_160(r2) -/* 8035D85C EC 45 10 28 */ fsubs f2, f5, f2 -/* 8035D860 EC 01 01 32 */ fmuls f0, f1, f4 -/* 8035D864 EC 23 00 B2 */ fmuls f1, f3, f2 -/* 8035D868 EC 61 20 24 */ fdivs f3, f1, f4 -/* 8035D86C EC 81 00 24 */ fdivs f4, f1, f0 -/* 8035D870 48 00 00 2C */ b lbl_8035D89C -lbl_8035D874: -/* 8035D874 EC 02 00 72 */ fmuls f0, f2, f1 -/* 8035D878 C0 A2 CB D0 */ lfs f5, lit_140(r2) -/* 8035D87C C0 62 CB B8 */ lfs f3, lit_134(r2) -/* 8035D880 EC 45 10 28 */ fsubs f2, f5, f2 -/* 8035D884 EC 01 00 32 */ fmuls f0, f1, f0 -/* 8035D888 EC 82 00 24 */ fdivs f4, f2, f0 -/* 8035D88C 48 00 00 10 */ b lbl_8035D89C -lbl_8035D890: -/* 8035D890 C0 62 CB B8 */ lfs f3, lit_134(r2) -/* 8035D894 C0 A2 CB D0 */ lfs f5, lit_140(r2) -/* 8035D898 FC 80 18 90 */ fmr f4, f3 -lbl_8035D89C: -/* 8035D89C D0 A3 00 1C */ stfs f5, 0x1c(r3) -/* 8035D8A0 D0 63 00 20 */ stfs f3, 0x20(r3) -/* 8035D8A4 D0 83 00 24 */ stfs f4, 0x24(r3) -/* 8035D8A8 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXLight/GXInitLightPos.s b/asm/dolphin/gx/GXLight/GXInitLightPos.s deleted file mode 100644 index c966c93185..0000000000 --- a/asm/dolphin/gx/GXLight/GXInitLightPos.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_8035D8AC: -/* 8035D8AC D0 23 00 28 */ stfs f1, 0x28(r3) -/* 8035D8B0 D0 43 00 2C */ stfs f2, 0x2c(r3) -/* 8035D8B4 D0 63 00 30 */ stfs f3, 0x30(r3) -/* 8035D8B8 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXLight/GXInitLightSpot.s b/asm/dolphin/gx/GXLight/GXInitLightSpot.s deleted file mode 100644 index 0437f2f08d..0000000000 --- a/asm/dolphin/gx/GXLight/GXInitLightSpot.s +++ /dev/null @@ -1,105 +0,0 @@ -lbl_8035D64C: -/* 8035D64C 7C 08 02 A6 */ mflr r0 -/* 8035D650 90 01 00 04 */ stw r0, 4(r1) -/* 8035D654 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 8035D658 93 E1 00 1C */ stw r31, 0x1c(r1) -/* 8035D65C 3B E4 00 00 */ addi r31, r4, 0 -/* 8035D660 93 C1 00 18 */ stw r30, 0x18(r1) -/* 8035D664 3B C3 00 00 */ addi r30, r3, 0 -/* 8035D668 C0 02 CB B8 */ lfs f0, lit_134(r2) -/* 8035D66C FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 8035D670 4C 40 13 82 */ cror 2, 0, 2 -/* 8035D674 41 82 00 10 */ beq lbl_8035D684 -/* 8035D678 C0 02 CB BC */ lfs f0, lit_135(r2) -/* 8035D67C FC 01 00 40 */ fcmpo cr0, f1, f0 -/* 8035D680 40 81 00 08 */ ble lbl_8035D688 -lbl_8035D684: -/* 8035D684 3B E0 00 00 */ li r31, 0 -lbl_8035D688: -/* 8035D688 C0 42 CB C0 */ lfs f2, lit_136(r2) -/* 8035D68C C0 02 CB C4 */ lfs f0, lit_137(r2) -/* 8035D690 EC 22 00 72 */ fmuls f1, f2, f1 -/* 8035D694 EC 21 00 24 */ fdivs f1, f1, f0 -/* 8035D698 48 00 F3 75 */ bl cosf -/* 8035D69C 28 1F 00 06 */ cmplwi r31, 6 -/* 8035D6A0 41 81 01 0C */ bgt lbl_8035D7AC -/* 8035D6A4 3C 60 80 3D */ lis r3, lit_145@ha /* 0x803D2578@ha */ -/* 8035D6A8 38 63 25 78 */ addi r3, r3, lit_145@l /* 0x803D2578@l */ -/* 8035D6AC 57 E0 10 3A */ slwi r0, r31, 2 -/* 8035D6B0 7C 03 00 2E */ lwzx r0, r3, r0 -/* 8035D6B4 7C 09 03 A6 */ mtctr r0 -/* 8035D6B8 4E 80 04 20 */ bctr -/* 8035D6BC C0 02 CB C8 */ lfs f0, lit_138(r2) -/* 8035D6C0 C0 82 CB CC */ lfs f4, lit_139(r2) -/* 8035D6C4 EC 60 00 72 */ fmuls f3, f0, f1 -/* 8035D6C8 C0 C2 CB B8 */ lfs f6, lit_134(r2) -/* 8035D6CC 48 00 00 EC */ b lbl_8035D7B8 -/* 8035D6D0 C0 42 CB D0 */ lfs f2, lit_140(r2) -/* 8035D6D4 FC 00 08 50 */ fneg f0, f1 -/* 8035D6D8 C0 C2 CB B8 */ lfs f6, lit_134(r2) -/* 8035D6DC EC 22 08 28 */ fsubs f1, f2, f1 -/* 8035D6E0 EC 22 08 24 */ fdivs f1, f2, f1 -/* 8035D6E4 FC 80 08 90 */ fmr f4, f1 -/* 8035D6E8 EC 60 00 72 */ fmuls f3, f0, f1 -/* 8035D6EC 48 00 00 CC */ b lbl_8035D7B8 -/* 8035D6F0 C0 42 CB D0 */ lfs f2, lit_140(r2) -/* 8035D6F4 FC 00 08 50 */ fneg f0, f1 -/* 8035D6F8 C0 62 CB B8 */ lfs f3, lit_134(r2) -/* 8035D6FC EC 22 08 28 */ fsubs f1, f2, f1 -/* 8035D700 EC 22 08 24 */ fdivs f1, f2, f1 -/* 8035D704 FC C0 08 90 */ fmr f6, f1 -/* 8035D708 EC 80 00 72 */ fmuls f4, f0, f1 -/* 8035D70C 48 00 00 AC */ b lbl_8035D7B8 -/* 8035D710 C0 82 CB D0 */ lfs f4, lit_140(r2) -/* 8035D714 C0 42 CB D4 */ lfs f2, lit_141(r2) -/* 8035D718 EC 64 08 28 */ fsubs f3, f4, f1 -/* 8035D71C EC 01 10 28 */ fsubs f0, f1, f2 -/* 8035D720 EC 63 00 F2 */ fmuls f3, f3, f3 -/* 8035D724 EC 01 00 32 */ fmuls f0, f1, f0 -/* 8035D728 EC 24 18 24 */ fdivs f1, f4, f3 -/* 8035D72C EC 61 00 32 */ fmuls f3, f1, f0 -/* 8035D730 EC 82 00 72 */ fmuls f4, f2, f1 -/* 8035D734 FC C0 08 50 */ fneg f6, f1 -/* 8035D738 48 00 00 80 */ b lbl_8035D7B8 -/* 8035D73C C0 A2 CB D0 */ lfs f5, lit_140(r2) -/* 8035D740 C0 62 CB D8 */ lfs f3, lit_142(r2) -/* 8035D744 EC 85 08 28 */ fsubs f4, f5, f1 -/* 8035D748 C0 42 CB DC */ lfs f2, lit_143(r2) -/* 8035D74C EC 05 08 2A */ fadds f0, f5, f1 -/* 8035D750 EC 84 01 32 */ fmuls f4, f4, f4 -/* 8035D754 EC 02 00 32 */ fmuls f0, f2, f0 -/* 8035D758 EC 85 20 24 */ fdivs f4, f5, f4 -/* 8035D75C EC 43 01 32 */ fmuls f2, f3, f4 -/* 8035D760 EC 80 01 32 */ fmuls f4, f0, f4 -/* 8035D764 FC C0 10 90 */ fmr f6, f2 -/* 8035D768 EC 62 00 72 */ fmuls f3, f2, f1 -/* 8035D76C 48 00 00 4C */ b lbl_8035D7B8 -/* 8035D770 C0 A2 CB D0 */ lfs f5, lit_140(r2) -/* 8035D774 C0 02 CB D4 */ lfs f0, lit_141(r2) -/* 8035D778 EC 85 08 28 */ fsubs f4, f5, f1 -/* 8035D77C C0 42 CB DC */ lfs f2, lit_143(r2) -/* 8035D780 EC 60 00 72 */ fmuls f3, f0, f1 -/* 8035D784 C0 02 CB E0 */ lfs f0, lit_144(r2) -/* 8035D788 EC 42 00 72 */ fmuls f2, f2, f1 -/* 8035D78C EC 84 01 32 */ fmuls f4, f4, f4 -/* 8035D790 EC 23 00 72 */ fmuls f1, f3, f1 -/* 8035D794 EC 65 20 24 */ fdivs f3, f5, f4 -/* 8035D798 EC 23 00 72 */ fmuls f1, f3, f1 -/* 8035D79C EC 82 00 F2 */ fmuls f4, f2, f3 -/* 8035D7A0 EC C0 00 F2 */ fmuls f6, f0, f3 -/* 8035D7A4 EC 65 08 28 */ fsubs f3, f5, f1 -/* 8035D7A8 48 00 00 10 */ b lbl_8035D7B8 -lbl_8035D7AC: -/* 8035D7AC C0 82 CB B8 */ lfs f4, lit_134(r2) -/* 8035D7B0 C0 62 CB D0 */ lfs f3, lit_140(r2) -/* 8035D7B4 FC C0 20 90 */ fmr f6, f4 -lbl_8035D7B8: -/* 8035D7B8 D0 7E 00 10 */ stfs f3, 0x10(r30) -/* 8035D7BC D0 9E 00 14 */ stfs f4, 0x14(r30) -/* 8035D7C0 D0 DE 00 18 */ stfs f6, 0x18(r30) -/* 8035D7C4 80 01 00 24 */ lwz r0, 0x24(r1) -/* 8035D7C8 83 E1 00 1C */ lwz r31, 0x1c(r1) -/* 8035D7CC 83 C1 00 18 */ lwz r30, 0x18(r1) -/* 8035D7D0 38 21 00 20 */ addi r1, r1, 0x20 -/* 8035D7D4 7C 08 03 A6 */ mtlr r0 -/* 8035D7D8 4E 80 00 20 */ blr diff --git a/asm/dolphin/gx/GXLight/GXLoadLightObjImm.s b/asm/dolphin/gx/GXLight/GXLoadLightObjImm.s deleted file mode 100644 index ac3bf0c82a..0000000000 --- a/asm/dolphin/gx/GXLight/GXLoadLightObjImm.s +++ /dev/null @@ -1,32 +0,0 @@ -lbl_8035D8E4: -/* 8035D8E4 7C 80 00 34 */ cntlzw r0, r4 -/* 8035D8E8 20 00 00 1F */ subfic r0, r0, 0x1f -/* 8035D8EC 54 05 26 76 */ rlwinm r5, r0, 4, 0x19, 0x1b -/* 8035D8F0 3C 80 CC 01 */ lis r4, 0xCC01 /* 0xCC008000@ha */ -/* 8035D8F4 38 00 00 10 */ li r0, 0x10 -/* 8035D8F8 38 A5 06 00 */ addi r5, r5, 0x600 -/* 8035D8FC 98 04 80 00 */ stb r0, 0x8000(r4) /* 0xCC008000@l */ -/* 8035D900 64 A0 00 0F */ oris r0, r5, 0xf -/* 8035D904 94 04 80 00 */ stwu r0, -0x8000(r4) -/* 8035D908 80 03 00 0C */ lwz r0, 0xc(r3) -/* 8035D90C 7C C6 32 78 */ xor r6, r6, r6 -/* 8035D910 E0 A3 00 10 */ psq_l f5, 16(r3), 0, 0 /* qr0 */ -/* 8035D914 E0 83 00 18 */ psq_l f4, 24(r3), 0, 0 /* qr0 */ -/* 8035D918 E0 63 00 20 */ psq_l f3, 32(r3), 0, 0 /* qr0 */ -/* 8035D91C E0 43 00 28 */ psq_l f2, 40(r3), 0, 0 /* qr0 */ -/* 8035D920 E0 23 00 30 */ psq_l f1, 48(r3), 0, 0 /* qr0 */ -/* 8035D924 E0 03 00 38 */ psq_l f0, 56(r3), 0, 0 /* qr0 */ -/* 8035D928 90 C4 00 00 */ stw r6, 0(r4) -/* 8035D92C 90 C4 00 00 */ stw r6, 0(r4) -/* 8035D930 90 C4 00 00 */ stw r6, 0(r4) -/* 8035D934 90 04 00 00 */ stw r0, 0(r4) -/* 8035D938 F0 A4 00 00 */ psq_st f5, 0(r4), 0, 0 /* qr0 */ -/* 8035D93C F0 84 00 00 */ psq_st f4, 0(r4), 0, 0 /* qr0 */ -/* 8035D940 F0 64 00 00 */ psq_st f3, 0(r4), 0, 0 /* qr0 */ -/* 8035D944 F0 44 00 00 */ psq_st f2, 0(r4), 0, 0 /* qr0 */ -/* 8035D948 F0 24 00 00 */ psq_st f1, 0(r4), 0, 0 /* qr0 */ -/* 8035D94C F0 04 00 00 */ psq_st f0, 0(r4), 0, 0 /* qr0 */ -/* 8035D950 80 62 CB 80 */ lwz r3, __GXData(r2) -/* 8035D954 38 00 00 01 */ li r0, 1 -/* 8035D958 B0 03 00 02 */ sth r0, 2(r3) -/* 8035D95C 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/mtx/PSMTXConcat.s b/asm/dolphin/mtx/mtx/PSMTXConcat.s deleted file mode 100644 index 349692cf7c..0000000000 --- a/asm/dolphin/mtx/mtx/PSMTXConcat.s +++ /dev/null @@ -1,52 +0,0 @@ -lbl_803464E4: -/* 803464E4 94 21 FF C0 */ stwu r1, -0x40(r1) -/* 803464E8 E0 03 00 00 */ psq_l f0, 0(r3), 0, 0 /* qr0 */ -/* 803464EC D9 C1 00 08 */ stfd f14, 8(r1) -/* 803464F0 E0 C4 00 00 */ psq_l f6, 0(r4), 0, 0 /* qr0 */ -/* 803464F4 3C C0 80 45 */ lis r6, Unit01@ha /* 0x804509D0@ha */ -/* 803464F8 E0 E4 00 08 */ psq_l f7, 8(r4), 0, 0 /* qr0 */ -/* 803464FC D9 E1 00 10 */ stfd f15, 0x10(r1) -/* 80346500 38 C6 09 D0 */ addi r6, r6, Unit01@l /* 0x804509D0@l */ -/* 80346504 DB E1 00 28 */ stfd f31, 0x28(r1) -/* 80346508 E1 04 00 10 */ psq_l f8, 16(r4), 0, 0 /* qr0 */ -/* 8034650C 11 86 00 18 */ ps_muls0 f12, f6, f0 -/* 80346510 E0 43 00 10 */ psq_l f2, 16(r3), 0, 0 /* qr0 */ -/* 80346514 11 A7 00 18 */ ps_muls0 f13, f7, f0 -/* 80346518 E3 E6 00 00 */ psq_l f31, 0(r6), 0, 0 /* qr0 */ -/* 8034651C 11 C6 00 98 */ ps_muls0 f14, f6, f2 -/* 80346520 E1 24 00 18 */ psq_l f9, 24(r4), 0, 0 /* qr0 */ -/* 80346524 11 E7 00 98 */ ps_muls0 f15, f7, f2 -/* 80346528 E0 23 00 08 */ psq_l f1, 8(r3), 0, 0 /* qr0 */ -/* 8034652C 11 88 60 1E */ ps_madds1 f12, f8, f0, f12 -/* 80346530 E0 63 00 18 */ psq_l f3, 24(r3), 0, 0 /* qr0 */ -/* 80346534 11 C8 70 9E */ ps_madds1 f14, f8, f2, f14 -/* 80346538 E1 44 00 20 */ psq_l f10, 32(r4), 0, 0 /* qr0 */ -/* 8034653C 11 A9 68 1E */ ps_madds1 f13, f9, f0, f13 -/* 80346540 E1 64 00 28 */ psq_l f11, 40(r4), 0, 0 /* qr0 */ -/* 80346544 11 E9 78 9E */ ps_madds1 f15, f9, f2, f15 -/* 80346548 E0 83 00 20 */ psq_l f4, 32(r3), 0, 0 /* qr0 */ -/* 8034654C E0 A3 00 28 */ psq_l f5, 40(r3), 0, 0 /* qr0 */ -/* 80346550 11 8A 60 5C */ ps_madds0 f12, f10, f1, f12 -/* 80346554 11 AB 68 5C */ ps_madds0 f13, f11, f1, f13 -/* 80346558 11 CA 70 DC */ ps_madds0 f14, f10, f3, f14 -/* 8034655C 11 EB 78 DC */ ps_madds0 f15, f11, f3, f15 -/* 80346560 F1 85 00 00 */ psq_st f12, 0(r5), 0, 0 /* qr0 */ -/* 80346564 10 46 01 18 */ ps_muls0 f2, f6, f4 -/* 80346568 11 BF 68 5E */ ps_madds1 f13, f31, f1, f13 -/* 8034656C 10 07 01 18 */ ps_muls0 f0, f7, f4 -/* 80346570 F1 C5 00 10 */ psq_st f14, 16(r5), 0, 0 /* qr0 */ -/* 80346574 11 FF 78 DE */ ps_madds1 f15, f31, f3, f15 -/* 80346578 F1 A5 00 08 */ psq_st f13, 8(r5), 0, 0 /* qr0 */ -/* 8034657C 10 48 11 1E */ ps_madds1 f2, f8, f4, f2 -/* 80346580 10 09 01 1E */ ps_madds1 f0, f9, f4, f0 -/* 80346584 10 4A 11 5C */ ps_madds0 f2, f10, f5, f2 -/* 80346588 C9 C1 00 08 */ lfd f14, 8(r1) -/* 8034658C F1 E5 00 18 */ psq_st f15, 24(r5), 0, 0 /* qr0 */ -/* 80346590 10 0B 01 5C */ ps_madds0 f0, f11, f5, f0 -/* 80346594 F0 45 00 20 */ psq_st f2, 32(r5), 0, 0 /* qr0 */ -/* 80346598 10 1F 01 5E */ ps_madds1 f0, f31, f5, f0 -/* 8034659C C9 E1 00 10 */ lfd f15, 0x10(r1) -/* 803465A0 F0 05 00 28 */ psq_st f0, 40(r5), 0, 0 /* qr0 */ -/* 803465A4 CB E1 00 28 */ lfd f31, 0x28(r1) -/* 803465A8 38 21 00 40 */ addi r1, r1, 0x40 -/* 803465AC 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/mtx/PSMTXCopy.s b/asm/dolphin/mtx/mtx/PSMTXCopy.s deleted file mode 100644 index 26410cb936..0000000000 --- a/asm/dolphin/mtx/mtx/PSMTXCopy.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_803464B0: -/* 803464B0 E0 03 00 00 */ psq_l f0, 0(r3), 0, 0 /* qr0 */ -/* 803464B4 F0 04 00 00 */ psq_st f0, 0(r4), 0, 0 /* qr0 */ -/* 803464B8 E0 23 00 08 */ psq_l f1, 8(r3), 0, 0 /* qr0 */ -/* 803464BC F0 24 00 08 */ psq_st f1, 8(r4), 0, 0 /* qr0 */ -/* 803464C0 E0 43 00 10 */ psq_l f2, 16(r3), 0, 0 /* qr0 */ -/* 803464C4 F0 44 00 10 */ psq_st f2, 16(r4), 0, 0 /* qr0 */ -/* 803464C8 E0 63 00 18 */ psq_l f3, 24(r3), 0, 0 /* qr0 */ -/* 803464CC F0 64 00 18 */ psq_st f3, 24(r4), 0, 0 /* qr0 */ -/* 803464D0 E0 83 00 20 */ psq_l f4, 32(r3), 0, 0 /* qr0 */ -/* 803464D4 F0 84 00 20 */ psq_st f4, 32(r4), 0, 0 /* qr0 */ -/* 803464D8 E0 A3 00 28 */ psq_l f5, 40(r3), 0, 0 /* qr0 */ -/* 803464DC F0 A4 00 28 */ psq_st f5, 40(r4), 0, 0 /* qr0 */ -/* 803464E0 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/mtx/PSMTXIdentity.s b/asm/dolphin/mtx/mtx/PSMTXIdentity.s deleted file mode 100644 index d8151cd00e..0000000000 --- a/asm/dolphin/mtx/mtx/PSMTXIdentity.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_80346484: -/* 80346484 C0 02 CB 0C */ lfs f0, lit_97(r2) -/* 80346488 C0 22 CB 08 */ lfs f1, lit_96(r2) -/* 8034648C F0 03 00 08 */ psq_st f0, 8(r3), 0, 0 /* qr0 */ -/* 80346490 10 40 0C 60 */ ps_merge01 f2, f0, f1 -/* 80346494 F0 03 00 18 */ psq_st f0, 24(r3), 0, 0 /* qr0 */ -/* 80346498 10 21 04 A0 */ ps_merge10 f1, f1, f0 -/* 8034649C F0 03 00 20 */ psq_st f0, 32(r3), 0, 0 /* qr0 */ -/* 803464A0 F0 43 00 10 */ psq_st f2, 16(r3), 0, 0 /* qr0 */ -/* 803464A4 F0 23 00 00 */ psq_st f1, 0(r3), 0, 0 /* qr0 */ -/* 803464A8 F0 23 00 28 */ psq_st f1, 40(r3), 0, 0 /* qr0 */ -/* 803464AC 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/mtx/PSMTXInverse.s b/asm/dolphin/mtx/mtx/PSMTXInverse.s deleted file mode 100644 index 555ea2d143..0000000000 --- a/asm/dolphin/mtx/mtx/PSMTXInverse.s +++ /dev/null @@ -1,64 +0,0 @@ -lbl_803465B0: -/* 803465B0 E0 03 80 00 */ psq_l f0, 0(r3), 1, 0 /* qr0 */ -/* 803465B4 E0 23 00 04 */ psq_l f1, 4(r3), 0, 0 /* qr0 */ -/* 803465B8 E0 43 80 10 */ psq_l f2, 16(r3), 1, 0 /* qr0 */ -/* 803465BC 10 C1 04 A0 */ ps_merge10 f6, f1, f0 -/* 803465C0 E0 63 00 14 */ psq_l f3, 20(r3), 0, 0 /* qr0 */ -/* 803465C4 E0 83 80 20 */ psq_l f4, 32(r3), 1, 0 /* qr0 */ -/* 803465C8 10 E3 14 A0 */ ps_merge10 f7, f3, f2 -/* 803465CC E0 A3 00 24 */ psq_l f5, 36(r3), 0, 0 /* qr0 */ -/* 803465D0 11 63 01 B2 */ ps_mul f11, f3, f6 -/* 803465D4 11 A5 01 F2 */ ps_mul f13, f5, f7 -/* 803465D8 11 05 24 A0 */ ps_merge10 f8, f5, f4 -/* 803465DC 11 61 59 F8 */ ps_msub f11, f1, f7, f11 -/* 803465E0 11 81 02 32 */ ps_mul f12, f1, f8 -/* 803465E4 11 A3 6A 38 */ ps_msub f13, f3, f8, f13 -/* 803465E8 11 43 01 32 */ ps_mul f10, f3, f4 -/* 803465EC 11 85 61 B8 */ ps_msub f12, f5, f6, f12 -/* 803465F0 11 20 01 72 */ ps_mul f9, f0, f5 -/* 803465F4 11 01 00 B2 */ ps_mul f8, f1, f2 -/* 803465F8 10 C6 30 28 */ ps_sub f6, f6, f6 -/* 803465FC 11 42 51 78 */ ps_msub f10, f2, f5, f10 -/* 80346600 10 E0 03 72 */ ps_mul f7, f0, f13 -/* 80346604 11 21 49 38 */ ps_msub f9, f1, f4, f9 -/* 80346608 10 E2 3B 3A */ ps_madd f7, f2, f12, f7 -/* 8034660C 11 00 40 F8 */ ps_msub f8, f0, f3, f8 -/* 80346610 10 E4 3A FA */ ps_madd f7, f4, f11, f7 -/* 80346614 10 07 30 40 */ ps_cmpo0 cr0, f7, f6 -/* 80346618 40 82 00 0C */ bne lbl_80346624 -/* 8034661C 38 60 00 00 */ li r3, 0 -/* 80346620 4E 80 00 20 */ blr -lbl_80346624: -/* 80346624 EC 00 38 30 */ fres f0, f7 -/* 80346628 10 C0 00 2A */ ps_add f6, f0, f0 -/* 8034662C 10 A0 00 32 */ ps_mul f5, f0, f0 -/* 80346630 10 07 31 7C */ ps_nmsub f0, f7, f5, f6 -/* 80346634 C0 23 00 0C */ lfs f1, 0xc(r3) -/* 80346638 11 AD 00 18 */ ps_muls0 f13, f13, f0 -/* 8034663C C0 43 00 1C */ lfs f2, 0x1c(r3) -/* 80346640 11 8C 00 18 */ ps_muls0 f12, f12, f0 -/* 80346644 C0 63 00 2C */ lfs f3, 0x2c(r3) -/* 80346648 11 6B 00 18 */ ps_muls0 f11, f11, f0 -/* 8034664C 10 AD 64 20 */ ps_merge00 f5, f13, f12 -/* 80346650 11 4A 00 18 */ ps_muls0 f10, f10, f0 -/* 80346654 10 8D 64 E0 */ ps_merge11 f4, f13, f12 -/* 80346658 11 29 00 18 */ ps_muls0 f9, f9, f0 -/* 8034665C F0 A4 00 00 */ psq_st f5, 0(r4), 0, 0 /* qr0 */ -/* 80346660 10 CD 00 72 */ ps_mul f6, f13, f1 -/* 80346664 F0 84 00 10 */ psq_st f4, 16(r4), 0, 0 /* qr0 */ -/* 80346668 11 08 00 18 */ ps_muls0 f8, f8, f0 -/* 8034666C 10 CC 30 BA */ ps_madd f6, f12, f2, f6 -/* 80346670 F1 44 80 20 */ psq_st f10, 32(r4), 1, 0 /* qr0 */ -/* 80346674 10 CB 30 FE */ ps_nmadd f6, f11, f3, f6 -/* 80346678 F1 24 80 24 */ psq_st f9, 36(r4), 1, 0 /* qr0 */ -/* 8034667C 10 EA 00 72 */ ps_mul f7, f10, f1 -/* 80346680 10 AB 34 20 */ ps_merge00 f5, f11, f6 -/* 80346684 F1 04 80 28 */ psq_st f8, 40(r4), 1, 0 /* qr0 */ -/* 80346688 10 8B 34 E0 */ ps_merge11 f4, f11, f6 -/* 8034668C F0 A4 00 08 */ psq_st f5, 8(r4), 0, 0 /* qr0 */ -/* 80346690 10 E9 38 BA */ ps_madd f7, f9, f2, f7 -/* 80346694 F0 84 00 18 */ psq_st f4, 24(r4), 0, 0 /* qr0 */ -/* 80346698 10 E8 38 FE */ ps_nmadd f7, f8, f3, f7 -/* 8034669C 38 60 00 01 */ li r3, 1 -/* 803466A0 F0 E4 80 2C */ psq_st f7, 44(r4), 1, 0 /* qr0 */ -/* 803466A4 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/mtx/PSMTXQuat.s b/asm/dolphin/mtx/mtx/PSMTXQuat.s deleted file mode 100644 index 807a4c1a41..0000000000 --- a/asm/dolphin/mtx/mtx/PSMTXQuat.s +++ /dev/null @@ -1,42 +0,0 @@ -lbl_803469E8: -/* 803469E8 C0 22 CB 08 */ lfs f1, lit_96(r2) -/* 803469EC E0 84 00 00 */ psq_l f4, 0(r4), 0, 0 /* qr0 */ -/* 803469F0 E0 A4 00 08 */ psq_l f5, 8(r4), 0, 0 /* qr0 */ -/* 803469F4 EC 01 08 28 */ fsubs f0, f1, f1 -/* 803469F8 EC 41 08 2A */ fadds f2, f1, f1 -/* 803469FC 10 C4 01 32 */ ps_mul f6, f4, f4 -/* 80346A00 11 24 24 A0 */ ps_merge10 f9, f4, f4 -/* 80346A04 11 05 31 7A */ ps_madd f8, f5, f5, f6 -/* 80346A08 10 E5 01 72 */ ps_mul f7, f5, f5 -/* 80346A0C 10 68 42 14 */ ps_sum0 f3, f8, f8, f8 -/* 80346A10 11 49 01 5A */ ps_muls1 f10, f9, f5 -/* 80346A14 ED 60 18 30 */ fres f11, f3 -/* 80346A18 11 07 32 16 */ ps_sum1 f8, f7, f8, f6 -/* 80346A1C 10 63 12 FC */ ps_nmsub f3, f3, f11, f2 -/* 80346A20 10 E5 01 5A */ ps_muls1 f7, f5, f5 -/* 80346A24 10 6B 00 F2 */ ps_mul f3, f11, f3 -/* 80346A28 10 C6 31 94 */ ps_sum0 f6, f6, f6, f6 -/* 80346A2C EC 63 00 B2 */ fmuls f3, f3, f2 -/* 80346A30 11 64 3A 7A */ ps_madd f11, f4, f9, f7 -/* 80346A34 10 E4 3A 78 */ ps_msub f7, f4, f9, f7 -/* 80346A38 F0 03 80 0C */ psq_st f0, 12(r3), 1, 0 /* qr0 */ -/* 80346A3C 10 C6 08 FC */ ps_nmsub f6, f6, f3, f1 -/* 80346A40 11 08 08 FC */ ps_nmsub f8, f8, f3, f1 -/* 80346A44 F0 03 80 2C */ psq_st f0, 44(r3), 1, 0 /* qr0 */ -/* 80346A48 11 6B 00 F2 */ ps_mul f11, f11, f3 -/* 80346A4C 10 E7 00 F2 */ ps_mul f7, f7, f3 -/* 80346A50 F0 C3 80 28 */ psq_st f6, 40(r3), 1, 0 /* qr0 */ -/* 80346A54 11 24 51 5C */ ps_madds0 f9, f4, f5, f10 -/* 80346A58 10 AB 44 20 */ ps_merge00 f5, f11, f8 -/* 80346A5C 11 4A 48 BC */ ps_nmsub f10, f10, f2, f9 -/* 80346A60 10 88 3C A0 */ ps_merge10 f4, f8, f7 -/* 80346A64 F0 A3 00 10 */ psq_st f5, 16(r3), 0, 0 /* qr0 */ -/* 80346A68 11 29 00 F2 */ ps_mul f9, f9, f3 -/* 80346A6C 11 4A 00 F2 */ ps_mul f10, f10, f3 -/* 80346A70 F0 83 00 00 */ psq_st f4, 0(r3), 0, 0 /* qr0 */ -/* 80346A74 F1 23 80 08 */ psq_st f9, 8(r3), 1, 0 /* qr0 */ -/* 80346A78 10 EA 04 A0 */ ps_merge10 f7, f10, f0 -/* 80346A7C 11 6A 4C 60 */ ps_merge01 f11, f10, f9 -/* 80346A80 F0 E3 00 18 */ psq_st f7, 24(r3), 0, 0 /* qr0 */ -/* 80346A84 F1 63 00 20 */ psq_st f11, 32(r3), 0, 0 /* qr0 */ -/* 80346A88 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/mtx/PSMTXRotTrig.s b/asm/dolphin/mtx/mtx/PSMTXRotTrig.s deleted file mode 100644 index 44dfcbe384..0000000000 --- a/asm/dolphin/mtx/mtx/PSMTXRotTrig.s +++ /dev/null @@ -1,49 +0,0 @@ -lbl_80346718: -/* 80346718 FC A0 08 18 */ frsp f5, f1 -/* 8034671C FC 80 10 18 */ frsp f4, f2 -/* 80346720 C0 02 CB 0C */ lfs f0, lit_97(r2) -/* 80346724 C0 22 CB 08 */ lfs f1, lit_96(r2) -/* 80346728 60 80 00 20 */ ori r0, r4, 0x20 -/* 8034672C 10 40 28 50 */ ps_neg f2, f5 -/* 80346730 28 00 00 78 */ cmplwi r0, 0x78 -/* 80346734 41 82 00 18 */ beq lbl_8034674C -/* 80346738 28 00 00 79 */ cmplwi r0, 0x79 -/* 8034673C 41 82 00 38 */ beq lbl_80346774 -/* 80346740 28 00 00 7A */ cmplwi r0, 0x7a -/* 80346744 41 82 00 5C */ beq lbl_803467A0 -/* 80346748 48 00 00 7C */ b lbl_803467C4 -lbl_8034674C: -/* 8034674C F0 23 80 00 */ psq_st f1, 0(r3), 1, 0 /* qr0 */ -/* 80346750 F0 03 00 04 */ psq_st f0, 4(r3), 0, 0 /* qr0 */ -/* 80346754 10 65 24 20 */ ps_merge00 f3, f5, f4 -/* 80346758 F0 03 00 0C */ psq_st f0, 12(r3), 0, 0 /* qr0 */ -/* 8034675C 10 24 14 20 */ ps_merge00 f1, f4, f2 -/* 80346760 F0 03 00 1C */ psq_st f0, 28(r3), 0, 0 /* qr0 */ -/* 80346764 F0 03 80 2C */ psq_st f0, 44(r3), 1, 0 /* qr0 */ -/* 80346768 F0 63 00 24 */ psq_st f3, 36(r3), 0, 0 /* qr0 */ -/* 8034676C F0 23 00 14 */ psq_st f1, 20(r3), 0, 0 /* qr0 */ -/* 80346770 48 00 00 54 */ b lbl_803467C4 -lbl_80346774: -/* 80346774 10 64 04 20 */ ps_merge00 f3, f4, f0 -/* 80346778 10 20 0C 20 */ ps_merge00 f1, f0, f1 -/* 8034677C F0 03 00 18 */ psq_st f0, 24(r3), 0, 0 /* qr0 */ -/* 80346780 F0 63 00 00 */ psq_st f3, 0(r3), 0, 0 /* qr0 */ -/* 80346784 10 42 04 20 */ ps_merge00 f2, f2, f0 -/* 80346788 10 05 04 20 */ ps_merge00 f0, f5, f0 -/* 8034678C F0 63 00 28 */ psq_st f3, 40(r3), 0, 0 /* qr0 */ -/* 80346790 F0 23 00 10 */ psq_st f1, 16(r3), 0, 0 /* qr0 */ -/* 80346794 F0 03 00 08 */ psq_st f0, 8(r3), 0, 0 /* qr0 */ -/* 80346798 F0 43 00 20 */ psq_st f2, 32(r3), 0, 0 /* qr0 */ -/* 8034679C 48 00 00 28 */ b lbl_803467C4 -lbl_803467A0: -/* 803467A0 F0 03 00 08 */ psq_st f0, 8(r3), 0, 0 /* qr0 */ -/* 803467A4 10 65 24 20 */ ps_merge00 f3, f5, f4 -/* 803467A8 10 44 14 20 */ ps_merge00 f2, f4, f2 -/* 803467AC F0 03 00 18 */ psq_st f0, 24(r3), 0, 0 /* qr0 */ -/* 803467B0 F0 03 00 20 */ psq_st f0, 32(r3), 0, 0 /* qr0 */ -/* 803467B4 10 21 04 20 */ ps_merge00 f1, f1, f0 -/* 803467B8 F0 63 00 10 */ psq_st f3, 16(r3), 0, 0 /* qr0 */ -/* 803467BC F0 43 00 00 */ psq_st f2, 0(r3), 0, 0 /* qr0 */ -/* 803467C0 F0 23 00 28 */ psq_st f1, 40(r3), 0, 0 /* qr0 */ -lbl_803467C4: -/* 803467C4 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/mtx/PSMTXScale.s b/asm/dolphin/mtx/mtx/PSMTXScale.s deleted file mode 100644 index 7e2cda2eac..0000000000 --- a/asm/dolphin/mtx/mtx/PSMTXScale.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_80346968: -/* 80346968 C0 02 CB 0C */ lfs f0, lit_97(r2) -/* 8034696C D0 23 00 00 */ stfs f1, 0(r3) -/* 80346970 F0 03 00 04 */ psq_st f0, 4(r3), 0, 0 /* qr0 */ -/* 80346974 F0 03 00 0C */ psq_st f0, 12(r3), 0, 0 /* qr0 */ -/* 80346978 D0 43 00 14 */ stfs f2, 0x14(r3) -/* 8034697C F0 03 00 18 */ psq_st f0, 24(r3), 0, 0 /* qr0 */ -/* 80346980 F0 03 00 20 */ psq_st f0, 32(r3), 0, 0 /* qr0 */ -/* 80346984 D0 63 00 28 */ stfs f3, 0x28(r3) -/* 80346988 D0 03 00 2C */ stfs f0, 0x2c(r3) -/* 8034698C 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/mtx/PSMTXScaleApply.s b/asm/dolphin/mtx/mtx/PSMTXScaleApply.s deleted file mode 100644 index d14014ffc2..0000000000 --- a/asm/dolphin/mtx/mtx/PSMTXScaleApply.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_80346990: -/* 80346990 FC 20 08 18 */ frsp f1, f1 -/* 80346994 E0 83 00 00 */ psq_l f4, 0(r3), 0, 0 /* qr0 */ -/* 80346998 FC 40 10 18 */ frsp f2, f2 -/* 8034699C E0 A3 00 08 */ psq_l f5, 8(r3), 0, 0 /* qr0 */ -/* 803469A0 FC 60 18 18 */ frsp f3, f3 -/* 803469A4 10 84 00 58 */ ps_muls0 f4, f4, f1 -/* 803469A8 E0 C3 00 10 */ psq_l f6, 16(r3), 0, 0 /* qr0 */ -/* 803469AC 10 A5 00 58 */ ps_muls0 f5, f5, f1 -/* 803469B0 E0 E3 00 18 */ psq_l f7, 24(r3), 0, 0 /* qr0 */ -/* 803469B4 10 C6 00 98 */ ps_muls0 f6, f6, f2 -/* 803469B8 E1 03 00 20 */ psq_l f8, 32(r3), 0, 0 /* qr0 */ -/* 803469BC F0 84 00 00 */ psq_st f4, 0(r4), 0, 0 /* qr0 */ -/* 803469C0 10 E7 00 98 */ ps_muls0 f7, f7, f2 -/* 803469C4 E0 43 00 28 */ psq_l f2, 40(r3), 0, 0 /* qr0 */ -/* 803469C8 F0 A4 00 08 */ psq_st f5, 8(r4), 0, 0 /* qr0 */ -/* 803469CC 11 08 00 D8 */ ps_muls0 f8, f8, f3 -/* 803469D0 F0 C4 00 10 */ psq_st f6, 16(r4), 0, 0 /* qr0 */ -/* 803469D4 10 42 00 D8 */ ps_muls0 f2, f2, f3 -/* 803469D8 F0 E4 00 18 */ psq_st f7, 24(r4), 0, 0 /* qr0 */ -/* 803469DC F1 04 00 20 */ psq_st f8, 32(r4), 0, 0 /* qr0 */ -/* 803469E0 F0 44 00 28 */ psq_st f2, 40(r4), 0, 0 /* qr0 */ -/* 803469E4 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/mtx/PSMTXTrans.s b/asm/dolphin/mtx/mtx/PSMTXTrans.s deleted file mode 100644 index a265d606fd..0000000000 --- a/asm/dolphin/mtx/mtx/PSMTXTrans.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_803468E8: -/* 803468E8 C0 02 CB 0C */ lfs f0, lit_97(r2) -/* 803468EC C0 82 CB 08 */ lfs f4, lit_96(r2) -/* 803468F0 D0 23 00 0C */ stfs f1, 0xc(r3) -/* 803468F4 D0 43 00 1C */ stfs f2, 0x1c(r3) -/* 803468F8 F0 03 00 04 */ psq_st f0, 4(r3), 0, 0 /* qr0 */ -/* 803468FC F0 03 00 20 */ psq_st f0, 32(r3), 0, 0 /* qr0 */ -/* 80346900 D0 03 00 10 */ stfs f0, 0x10(r3) -/* 80346904 D0 83 00 14 */ stfs f4, 0x14(r3) -/* 80346908 D0 03 00 18 */ stfs f0, 0x18(r3) -/* 8034690C D0 83 00 28 */ stfs f4, 0x28(r3) -/* 80346910 D0 63 00 2C */ stfs f3, 0x2c(r3) -/* 80346914 D0 83 00 00 */ stfs f4, 0(r3) -/* 80346918 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/mtx/PSMTXTransApply.s b/asm/dolphin/mtx/mtx/PSMTXTransApply.s deleted file mode 100644 index f9bad2f3a0..0000000000 --- a/asm/dolphin/mtx/mtx/PSMTXTransApply.s +++ /dev/null @@ -1,20 +0,0 @@ -lbl_8034691C: -/* 8034691C E0 83 00 00 */ psq_l f4, 0(r3), 0, 0 /* qr0 */ -/* 80346920 FC 20 08 18 */ frsp f1, f1 -/* 80346924 E0 A3 00 08 */ psq_l f5, 8(r3), 0, 0 /* qr0 */ -/* 80346928 FC 40 10 18 */ frsp f2, f2 -/* 8034692C E0 E3 00 18 */ psq_l f7, 24(r3), 0, 0 /* qr0 */ -/* 80346930 FC 60 18 18 */ frsp f3, f3 -/* 80346934 E1 03 00 28 */ psq_l f8, 40(r3), 0, 0 /* qr0 */ -/* 80346938 F0 84 00 00 */ psq_st f4, 0(r4), 0, 0 /* qr0 */ -/* 8034693C 10 A1 29 56 */ ps_sum1 f5, f1, f5, f5 -/* 80346940 E0 C3 00 10 */ psq_l f6, 16(r3), 0, 0 /* qr0 */ -/* 80346944 F0 A4 00 08 */ psq_st f5, 8(r4), 0, 0 /* qr0 */ -/* 80346948 10 E2 39 D6 */ ps_sum1 f7, f2, f7, f7 -/* 8034694C E1 23 00 20 */ psq_l f9, 32(r3), 0, 0 /* qr0 */ -/* 80346950 F0 C4 00 10 */ psq_st f6, 16(r4), 0, 0 /* qr0 */ -/* 80346954 11 03 42 16 */ ps_sum1 f8, f3, f8, f8 -/* 80346958 F0 E4 00 18 */ psq_st f7, 24(r4), 0, 0 /* qr0 */ -/* 8034695C F1 24 00 20 */ psq_st f9, 32(r4), 0, 0 /* qr0 */ -/* 80346960 F1 04 00 28 */ psq_st f8, 40(r4), 0, 0 /* qr0 */ -/* 80346964 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/mtx/__PSMTXRotAxisRadInternal.s b/asm/dolphin/mtx/mtx/__PSMTXRotAxisRadInternal.s deleted file mode 100644 index f4081ff81a..0000000000 --- a/asm/dolphin/mtx/mtx/__PSMTXRotAxisRadInternal.s +++ /dev/null @@ -1,45 +0,0 @@ -lbl_803467C8: -/* 803467C8 C1 42 CB 10 */ lfs f10, lit_190(r2) -/* 803467CC C1 22 CB 14 */ lfs f9, lit_191(r2) -/* 803467D0 FD 60 10 18 */ frsp f11, f2 -/* 803467D4 E0 44 00 00 */ psq_l f2, 0(r4), 0, 0 /* qr0 */ -/* 803467D8 FD 80 08 18 */ frsp f12, f1 -/* 803467DC C0 64 00 08 */ lfs f3, 8(r4) -/* 803467E0 10 82 00 B2 */ ps_mul f4, f2, f2 -/* 803467E4 ED 0A 50 2A */ fadds f8, f10, f10 -/* 803467E8 10 A3 20 FA */ ps_madd f5, f3, f3, f4 -/* 803467EC EC 2A 50 28 */ fsubs f1, f10, f10 -/* 803467F0 10 C5 20 D4 */ ps_sum0 f6, f5, f3, f4 -/* 803467F4 EC 08 58 28 */ fsubs f0, f8, f11 -/* 803467F8 FC E0 30 34 */ frsqrte f7, f6 -/* 803467FC EC 87 01 F2 */ fmuls f4, f7, f7 -/* 80346800 EC A7 02 B2 */ fmuls f5, f7, f10 -/* 80346804 EC 84 49 BC */ fnmsubs f4, f4, f6, f9 -/* 80346808 EC E4 01 72 */ fmuls f7, f4, f5 -/* 8034680C 11 6B 5C 20 */ ps_merge00 f11, f11, f11 -/* 80346810 10 42 01 D8 */ ps_muls0 f2, f2, f7 -/* 80346814 10 63 01 D8 */ ps_muls0 f3, f3, f7 -/* 80346818 10 C2 00 18 */ ps_muls0 f6, f2, f0 -/* 8034681C 11 42 03 18 */ ps_muls0 f10, f2, f12 -/* 80346820 10 E3 00 18 */ ps_muls0 f7, f3, f0 -/* 80346824 10 A6 00 9A */ ps_muls1 f5, f6, f2 -/* 80346828 10 86 00 98 */ ps_muls0 f4, f6, f2 -/* 8034682C 10 C6 00 D8 */ ps_muls0 f6, f6, f3 -/* 80346830 EC 03 2B 3C */ fnmsubs f0, f3, f12, f5 -/* 80346834 ED 03 2B 3A */ fmadds f8, f3, f12, f5 -/* 80346838 10 40 50 50 */ ps_neg f2, f10 -/* 8034683C 11 26 50 54 */ ps_sum0 f9, f6, f1, f10 -/* 80346840 10 84 58 14 */ ps_sum0 f4, f4, f0, f11 -/* 80346844 10 AB 2A 16 */ ps_sum1 f5, f11, f8, f5 -/* 80346848 10 02 30 54 */ ps_sum0 f0, f2, f1, f6 -/* 8034684C F1 23 00 08 */ psq_st f9, 8(r3), 0, 0 /* qr0 */ -/* 80346850 10 46 11 94 */ ps_sum0 f2, f6, f6, f2 -/* 80346854 F0 83 00 00 */ psq_st f4, 0(r3), 0, 0 /* qr0 */ -/* 80346858 10 E7 00 D8 */ ps_muls0 f7, f7, f3 -/* 8034685C F0 A3 00 10 */ psq_st f5, 16(r3), 0, 0 /* qr0 */ -/* 80346860 10 CA 30 96 */ ps_sum1 f6, f10, f2, f6 -/* 80346864 F0 03 00 18 */ psq_st f0, 24(r3), 0, 0 /* qr0 */ -/* 80346868 10 E7 58 54 */ ps_sum0 f7, f7, f1, f11 -/* 8034686C F0 C3 00 20 */ psq_st f6, 32(r3), 0, 0 /* qr0 */ -/* 80346870 F0 E3 00 28 */ psq_st f7, 40(r3), 0, 0 /* qr0 */ -/* 80346874 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/mtxvec/PSMTXMultVec.s b/asm/dolphin/mtx/mtxvec/PSMTXMultVec.s deleted file mode 100644 index 54bfee0217..0000000000 --- a/asm/dolphin/mtx/mtxvec/PSMTXMultVec.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_80346D6C: -/* 80346D6C E0 04 00 00 */ psq_l f0, 0(r4), 0, 0 /* qr0 */ -/* 80346D70 E0 43 00 00 */ psq_l f2, 0(r3), 0, 0 /* qr0 */ -/* 80346D74 E0 24 80 08 */ psq_l f1, 8(r4), 1, 0 /* qr0 */ -/* 80346D78 10 82 00 32 */ ps_mul f4, f2, f0 -/* 80346D7C E0 63 00 08 */ psq_l f3, 8(r3), 0, 0 /* qr0 */ -/* 80346D80 10 A3 20 7A */ ps_madd f5, f3, f1, f4 -/* 80346D84 E1 03 00 10 */ psq_l f8, 16(r3), 0, 0 /* qr0 */ -/* 80346D88 10 C5 29 94 */ ps_sum0 f6, f5, f6, f5 -/* 80346D8C E1 23 00 18 */ psq_l f9, 24(r3), 0, 0 /* qr0 */ -/* 80346D90 11 48 00 32 */ ps_mul f10, f8, f0 -/* 80346D94 F0 C5 80 00 */ psq_st f6, 0(r5), 1, 0 /* qr0 */ -/* 80346D98 11 69 50 7A */ ps_madd f11, f9, f1, f10 -/* 80346D9C E0 43 00 20 */ psq_l f2, 32(r3), 0, 0 /* qr0 */ -/* 80346DA0 11 8B 5B 14 */ ps_sum0 f12, f11, f12, f11 -/* 80346DA4 E0 63 00 28 */ psq_l f3, 40(r3), 0, 0 /* qr0 */ -/* 80346DA8 10 82 00 32 */ ps_mul f4, f2, f0 -/* 80346DAC F1 85 80 04 */ psq_st f12, 4(r5), 1, 0 /* qr0 */ -/* 80346DB0 10 A3 20 7A */ ps_madd f5, f3, f1, f4 -/* 80346DB4 10 C5 29 94 */ ps_sum0 f6, f5, f6, f5 -/* 80346DB8 F0 C5 80 08 */ psq_st f6, 8(r5), 1, 0 /* qr0 */ -/* 80346DBC 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/mtxvec/PSMTXMultVecArray.s b/asm/dolphin/mtx/mtxvec/PSMTXMultVecArray.s deleted file mode 100644 index 2da973cfdb..0000000000 --- a/asm/dolphin/mtx/mtxvec/PSMTXMultVecArray.s +++ /dev/null @@ -1,37 +0,0 @@ -lbl_80346DC0: -/* 80346DC0 E1 A3 00 00 */ psq_l f13, 0(r3), 0, 0 /* qr0 */ -/* 80346DC4 E1 83 00 10 */ psq_l f12, 16(r3), 0, 0 /* qr0 */ -/* 80346DC8 38 C6 FF FF */ addi r6, r6, -1 -/* 80346DCC E1 63 00 08 */ psq_l f11, 8(r3), 0, 0 /* qr0 */ -/* 80346DD0 10 0D 64 20 */ ps_merge00 f0, f13, f12 -/* 80346DD4 38 A5 FF FC */ addi r5, r5, -4 -/* 80346DD8 E1 43 00 18 */ psq_l f10, 24(r3), 0, 0 /* qr0 */ -/* 80346DDC 10 2D 64 E0 */ ps_merge11 f1, f13, f12 -/* 80346DE0 7C C9 03 A6 */ mtctr r6 -/* 80346DE4 E0 83 00 20 */ psq_l f4, 32(r3), 0, 0 /* qr0 */ -/* 80346DE8 10 4B 54 20 */ ps_merge00 f2, f11, f10 -/* 80346DEC E0 A3 00 28 */ psq_l f5, 40(r3), 0, 0 /* qr0 */ -/* 80346DF0 10 6B 54 E0 */ ps_merge11 f3, f11, f10 -/* 80346DF4 E0 C4 00 00 */ psq_l f6, 0(r4), 0, 0 /* qr0 */ -/* 80346DF8 E4 E4 80 08 */ psq_lu f7, 8(r4), 1, 0 /* qr0 */ -/* 80346DFC 11 00 19 9C */ ps_madds0 f8, f0, f6, f3 -/* 80346E00 11 24 01 B2 */ ps_mul f9, f4, f6 -/* 80346E04 11 01 41 9E */ ps_madds1 f8, f1, f6, f8 -/* 80346E08 11 45 49 FA */ ps_madd f10, f5, f7, f9 -lbl_80346E0C: -/* 80346E0C E4 C4 00 04 */ psq_lu f6, 4(r4), 0, 0 /* qr0 */ -/* 80346E10 11 82 41 DC */ ps_madds0 f12, f2, f7, f8 -/* 80346E14 E4 E4 80 08 */ psq_lu f7, 8(r4), 1, 0 /* qr0 */ -/* 80346E18 11 AA 52 54 */ ps_sum0 f13, f10, f9, f10 -/* 80346E1C 11 00 19 9C */ ps_madds0 f8, f0, f6, f3 -/* 80346E20 11 24 01 B2 */ ps_mul f9, f4, f6 -/* 80346E24 F5 85 00 04 */ psq_stu f12, 4(r5), 0, 0 /* qr0 */ -/* 80346E28 11 01 41 9E */ ps_madds1 f8, f1, f6, f8 -/* 80346E2C F5 A5 80 08 */ psq_stu f13, 8(r5), 1, 0 /* qr0 */ -/* 80346E30 11 45 49 FA */ ps_madd f10, f5, f7, f9 -/* 80346E34 42 00 FF D8 */ bdnz lbl_80346E0C -/* 80346E38 11 82 41 DC */ ps_madds0 f12, f2, f7, f8 -/* 80346E3C 11 AA 52 54 */ ps_sum0 f13, f10, f9, f10 -/* 80346E40 F5 85 00 04 */ psq_stu f12, 4(r5), 0, 0 /* qr0 */ -/* 80346E44 F5 A5 80 08 */ psq_stu f13, 8(r5), 1, 0 /* qr0 */ -/* 80346E48 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/mtxvec/PSMTXMultVecArraySR.s b/asm/dolphin/mtx/mtxvec/PSMTXMultVecArraySR.s deleted file mode 100644 index bf5b2ada4b..0000000000 --- a/asm/dolphin/mtx/mtxvec/PSMTXMultVecArraySR.s +++ /dev/null @@ -1,36 +0,0 @@ -lbl_80346EA0: -/* 80346EA0 E1 A3 00 00 */ psq_l f13, 0(r3), 0, 0 /* qr0 */ -/* 80346EA4 E1 83 00 10 */ psq_l f12, 16(r3), 0, 0 /* qr0 */ -/* 80346EA8 38 C6 FF FF */ addi r6, r6, -1 -/* 80346EAC E1 63 80 08 */ psq_l f11, 8(r3), 1, 0 /* qr0 */ -/* 80346EB0 10 0D 64 20 */ ps_merge00 f0, f13, f12 -/* 80346EB4 38 A5 FF FC */ addi r5, r5, -4 -/* 80346EB8 E1 43 80 18 */ psq_l f10, 24(r3), 1, 0 /* qr0 */ -/* 80346EBC 10 2D 64 E0 */ ps_merge11 f1, f13, f12 -/* 80346EC0 7C C9 03 A6 */ mtctr r6 -/* 80346EC4 E0 63 00 20 */ psq_l f3, 32(r3), 0, 0 /* qr0 */ -/* 80346EC8 10 4B 54 20 */ ps_merge00 f2, f11, f10 -/* 80346ECC E0 83 80 28 */ psq_l f4, 40(r3), 1, 0 /* qr0 */ -/* 80346ED0 E0 C4 00 00 */ psq_l f6, 0(r4), 0, 0 /* qr0 */ -/* 80346ED4 E4 E4 80 08 */ psq_lu f7, 8(r4), 1, 0 /* qr0 */ -/* 80346ED8 11 00 01 98 */ ps_muls0 f8, f0, f6 -/* 80346EDC 11 23 01 B2 */ ps_mul f9, f3, f6 -/* 80346EE0 11 01 41 9E */ ps_madds1 f8, f1, f6, f8 -/* 80346EE4 11 44 49 FA */ ps_madd f10, f4, f7, f9 -lbl_80346EE8: -/* 80346EE8 E4 C4 00 04 */ psq_lu f6, 4(r4), 0, 0 /* qr0 */ -/* 80346EEC 11 82 41 DC */ ps_madds0 f12, f2, f7, f8 -/* 80346EF0 E4 E4 80 08 */ psq_lu f7, 8(r4), 1, 0 /* qr0 */ -/* 80346EF4 11 AA 4A 54 */ ps_sum0 f13, f10, f9, f9 -/* 80346EF8 11 00 01 98 */ ps_muls0 f8, f0, f6 -/* 80346EFC 11 23 01 B2 */ ps_mul f9, f3, f6 -/* 80346F00 F5 85 00 04 */ psq_stu f12, 4(r5), 0, 0 /* qr0 */ -/* 80346F04 11 01 41 9E */ ps_madds1 f8, f1, f6, f8 -/* 80346F08 F5 A5 80 08 */ psq_stu f13, 8(r5), 1, 0 /* qr0 */ -/* 80346F0C 11 44 49 FA */ ps_madd f10, f4, f7, f9 -/* 80346F10 42 00 FF D8 */ bdnz lbl_80346EE8 -/* 80346F14 11 82 41 DC */ ps_madds0 f12, f2, f7, f8 -/* 80346F18 11 AA 4A 54 */ ps_sum0 f13, f10, f9, f9 -/* 80346F1C F5 85 00 04 */ psq_stu f12, 4(r5), 0, 0 /* qr0 */ -/* 80346F20 F5 A5 80 08 */ psq_stu f13, 8(r5), 1, 0 /* qr0 */ -/* 80346F24 4E 80 00 20 */ blr diff --git a/asm/dolphin/mtx/mtxvec/PSMTXMultVecSR.s b/asm/dolphin/mtx/mtxvec/PSMTXMultVecSR.s deleted file mode 100644 index d5dc0ebe9b..0000000000 --- a/asm/dolphin/mtx/mtxvec/PSMTXMultVecSR.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_80346E4C: -/* 80346E4C E0 03 00 00 */ psq_l f0, 0(r3), 0, 0 /* qr0 */ -/* 80346E50 E0 C4 00 00 */ psq_l f6, 0(r4), 0, 0 /* qr0 */ -/* 80346E54 E0 43 00 10 */ psq_l f2, 16(r3), 0, 0 /* qr0 */ -/* 80346E58 11 00 01 B2 */ ps_mul f8, f0, f6 -/* 80346E5C E0 83 00 20 */ psq_l f4, 32(r3), 0, 0 /* qr0 */ -/* 80346E60 11 42 01 B2 */ ps_mul f10, f2, f6 -/* 80346E64 E0 E4 80 08 */ psq_l f7, 8(r4), 1, 0 /* qr0 */ -/* 80346E68 11 84 01 B2 */ ps_mul f12, f4, f6 -/* 80346E6C E0 63 00 18 */ psq_l f3, 24(r3), 0, 0 /* qr0 */ -/* 80346E70 11 08 42 14 */ ps_sum0 f8, f8, f8, f8 -/* 80346E74 E0 A3 00 28 */ psq_l f5, 40(r3), 0, 0 /* qr0 */ -/* 80346E78 11 4A 52 94 */ ps_sum0 f10, f10, f10, f10 -/* 80346E7C E0 23 00 08 */ psq_l f1, 8(r3), 0, 0 /* qr0 */ -/* 80346E80 11 8C 63 14 */ ps_sum0 f12, f12, f12, f12 -/* 80346E84 11 21 41 FA */ ps_madd f9, f1, f7, f8 -/* 80346E88 F1 25 80 00 */ psq_st f9, 0(r5), 1, 0 /* qr0 */ -/* 80346E8C 11 63 51 FA */ ps_madd f11, f3, f7, f10 -/* 80346E90 F1 65 80 04 */ psq_st f11, 4(r5), 1, 0 /* qr0 */ -/* 80346E94 11 A5 61 FA */ ps_madd f13, f5, f7, f12 -/* 80346E98 F1 A5 80 08 */ psq_st f13, 8(r5), 1, 0 /* qr0 */ -/* 80346E9C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OS/InquiryCallback.s b/asm/dolphin/os/OS/InquiryCallback.s deleted file mode 100644 index f29ecd170b..0000000000 --- a/asm/dolphin/os/OS/InquiryCallback.s +++ /dev/null @@ -1,19 +0,0 @@ -lbl_80339F24: -/* 80339F24 80 04 00 0C */ lwz r0, 0xc(r4) -/* 80339F28 2C 00 00 00 */ cmpwi r0, 0 -/* 80339F2C 41 82 00 08 */ beq lbl_80339F34 -/* 80339F30 48 00 00 20 */ b lbl_80339F50 -lbl_80339F34: -/* 80339F34 3C 60 80 45 */ lis r3, DriveInfo@ha /* 0x8044BA60@ha */ -/* 80339F38 38 63 BA 60 */ addi r3, r3, DriveInfo@l /* 0x8044BA60@l */ -/* 80339F3C A0 03 00 02 */ lhz r0, 2(r3) -/* 80339F40 3C 60 80 00 */ lis r3, 0x8000 /* 0x800030E6@ha */ -/* 80339F44 60 00 80 00 */ ori r0, r0, 0x8000 -/* 80339F48 B0 03 30 E6 */ sth r0, 0x30E6(r3) /* 0x800030E6@l */ -/* 80339F4C 48 00 00 10 */ b lbl_80339F5C -lbl_80339F50: -/* 80339F50 38 00 00 01 */ li r0, 1 -/* 80339F54 3C 60 80 00 */ lis r3, 0x8000 /* 0x800030E6@ha */ -/* 80339F58 B0 03 30 E6 */ sth r0, 0x30E6(r3) /* 0x800030E6@l */ -lbl_80339F5C: -/* 80339F5C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OS/OSDefaultExceptionHandler.s b/asm/dolphin/os/OS/OSDefaultExceptionHandler.s deleted file mode 100644 index 452fc77d48..0000000000 --- a/asm/dolphin/os/OS/OSDefaultExceptionHandler.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_8033A7B4: -/* 8033A7B4 90 04 00 00 */ stw r0, 0(r4) -/* 8033A7B8 90 24 00 04 */ stw r1, 4(r4) -/* 8033A7BC 90 44 00 08 */ stw r2, 8(r4) -/* 8033A7C0 BC C4 00 18 */ stmw r6, 0x18(r4) -/* 8033A7C4 7C 11 E2 A6 */ mfspr r0, 0x391 -/* 8033A7C8 90 04 01 A8 */ stw r0, 0x1a8(r4) -/* 8033A7CC 7C 12 E2 A6 */ mfspr r0, 0x392 -/* 8033A7D0 90 04 01 AC */ stw r0, 0x1ac(r4) -/* 8033A7D4 7C 13 E2 A6 */ mfspr r0, 0x393 -/* 8033A7D8 90 04 01 B0 */ stw r0, 0x1b0(r4) -/* 8033A7DC 7C 14 E2 A6 */ mfspr r0, 0x394 -/* 8033A7E0 90 04 01 B4 */ stw r0, 0x1b4(r4) -/* 8033A7E4 7C 15 E2 A6 */ mfspr r0, 0x395 -/* 8033A7E8 90 04 01 B8 */ stw r0, 0x1b8(r4) -/* 8033A7EC 7C 16 E2 A6 */ mfspr r0, 0x396 -/* 8033A7F0 90 04 01 BC */ stw r0, 0x1bc(r4) -/* 8033A7F4 7C 17 E2 A6 */ mfspr r0, 0x397 -/* 8033A7F8 90 04 01 C0 */ stw r0, 0x1c0(r4) -/* 8033A7FC 7C B2 02 A6 */ mfdsisr r5 -/* 8033A800 7C D3 02 A6 */ mfdar r6 -/* 8033A804 94 21 FF F8 */ stwu r1, -8(r1) -/* 8033A808 48 00 1F 90 */ b __OSUnhandledException diff --git a/asm/dolphin/os/OS/OSExceptionVector.s b/asm/dolphin/os/OS/OSExceptionVector.s deleted file mode 100644 index 9a4aef7f1a..0000000000 --- a/asm/dolphin/os/OS/OSExceptionVector.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_8033A718: -/* 8033A718 7C 90 43 A6 */ mtspr 0x110, r4 -/* 8033A71C 80 80 00 C0 */ lwz r4, 0xc0(r0) -/* 8033A720 90 64 00 0C */ stw r3, 0xc(r4) -/* 8033A724 7C 70 42 A6 */ mfspr r3, 0x110 -/* 8033A728 90 64 00 10 */ stw r3, 0x10(r4) -/* 8033A72C 90 A4 00 14 */ stw r5, 0x14(r4) -/* 8033A730 A0 64 01 A2 */ lhz r3, 0x1a2(r4) -/* 8033A734 60 63 00 02 */ ori r3, r3, 2 -/* 8033A738 B0 64 01 A2 */ sth r3, 0x1a2(r4) -/* 8033A73C 7C 60 00 26 */ mfcr r3 -/* 8033A740 90 64 00 80 */ stw r3, 0x80(r4) -/* 8033A744 7C 68 02 A6 */ mflr r3 -/* 8033A748 90 64 00 84 */ stw r3, 0x84(r4) -/* 8033A74C 7C 69 02 A6 */ mfctr r3 -/* 8033A750 90 64 00 88 */ stw r3, 0x88(r4) -/* 8033A754 7C 61 02 A6 */ mfxer r3 -/* 8033A758 90 64 00 8C */ stw r3, 0x8c(r4) -/* 8033A75C 7C 7A 02 A6 */ mfspr r3, 0x1a -/* 8033A760 90 64 01 98 */ stw r3, 0x198(r4) -/* 8033A764 7C 7B 02 A6 */ mfspr r3, 0x1b -/* 8033A768 90 64 01 9C */ stw r3, 0x19c(r4) -/* 8033A76C 7C 65 1B 78 */ mr r5, r3 diff --git a/asm/dolphin/os/OS/OSGetConsoleType.s b/asm/dolphin/os/OS/OSGetConsoleType.s deleted file mode 100644 index 273039f911..0000000000 --- a/asm/dolphin/os/OS/OSGetConsoleType.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_80339EFC: -/* 80339EFC 80 6D 90 80 */ lwz r3, BootInfo(r13) -/* 80339F00 28 03 00 00 */ cmplwi r3, 0 -/* 80339F04 41 82 00 10 */ beq lbl_80339F14 -/* 80339F08 80 63 00 2C */ lwz r3, 0x2c(r3) -/* 80339F0C 28 03 00 00 */ cmplwi r3, 0 -/* 80339F10 40 82 00 10 */ bne lbl_80339F20 -lbl_80339F14: -/* 80339F14 3C 60 10 00 */ lis r3, 0x1000 /* 0x10000002@ha */ -/* 80339F18 38 63 00 02 */ addi r3, r3, 0x0002 /* 0x10000002@l */ -/* 80339F1C 48 00 00 04 */ b lbl_80339F20 -lbl_80339F20: -/* 80339F20 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OS/OSInit.s b/asm/dolphin/os/OS/OSInit.s index c5ebfc66a6..515541470b 100644 --- a/asm/dolphin/os/OS/OSInit.s +++ b/asm/dolphin/os/OS/OSInit.s @@ -15,7 +15,7 @@ lbl_80339F60: /* 80339F94 38 00 00 01 */ li r0, 1 /* 80339F98 90 0D 90 A0 */ stw r0, AreWeInitialized(r13) /* 80339F9C 48 00 87 81 */ bl __OSGetSystemTime -/* 80339FA0 90 8D 90 B4 */ stw r4, data_80451634(r13) +/* 80339FA0 90 8D 90 B4 */ stw r4, __OSStartTime+0x4(r13) /* 80339FA4 90 6D 90 B0 */ stw r3, __OSStartTime(r13) /* 80339FA8 48 00 37 4D */ bl OSDisableInterrupts /* 80339FAC 38 7F 00 50 */ addi r3, r31, 0x50 diff --git a/asm/dolphin/os/OS/__DBVECTOR.s b/asm/dolphin/os/OS/__DBVECTOR.s deleted file mode 100644 index 69dc05d365..0000000000 --- a/asm/dolphin/os/OS/__DBVECTOR.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_8033A770: -/* 8033A770 60 00 00 00 */ nop -/* 8033A774 7C 60 00 A6 */ mfmsr r3 -/* 8033A778 60 63 00 30 */ ori r3, r3, 0x30 -/* 8033A77C 7C 7B 03 A6 */ mtspr 0x1b, r3 diff --git a/asm/dolphin/os/OS/__OSDBIntegrator.s b/asm/dolphin/os/OS/__OSDBIntegrator.s deleted file mode 100644 index fbf92332a2..0000000000 --- a/asm/dolphin/os/OS/__OSDBIntegrator.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8033A6C0: -/* 8033A6C0 38 A0 00 40 */ li r5, 0x40 -/* 8033A6C4 7C 68 02 A6 */ mflr r3 -/* 8033A6C8 90 65 00 0C */ stw r3, 0xc(r5) -/* 8033A6CC 80 65 00 08 */ lwz r3, 8(r5) -/* 8033A6D0 64 63 80 00 */ oris r3, r3, 0x8000 -/* 8033A6D4 7C 68 03 A6 */ mtlr r3 -/* 8033A6D8 38 60 00 30 */ li r3, 0x30 -/* 8033A6DC 7C 60 01 24 */ mtmsr r3 -/* 8033A6E0 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OS/__OSDBJump.s b/asm/dolphin/os/OS/__OSDBJump.s deleted file mode 100644 index 1416fd73ed..0000000000 --- a/asm/dolphin/os/OS/__OSDBJump.s +++ /dev/null @@ -1,2 +0,0 @@ -lbl_8033A6E4: -/* 8033A6E4 48 00 00 63 */ bla 0x60 diff --git a/asm/dolphin/os/OS/__OSEVEnd.s b/asm/dolphin/os/OS/__OSEVEnd.s deleted file mode 100644 index 40295aac38..0000000000 --- a/asm/dolphin/os/OS/__OSEVEnd.s +++ /dev/null @@ -1,2 +0,0 @@ -lbl_8033A7B0: -/* 8033A7B0 60 00 00 00 */ nop diff --git a/asm/dolphin/os/OS/__OSEVSetNumber.s b/asm/dolphin/os/OS/__OSEVSetNumber.s deleted file mode 100644 index 0b9de6006a..0000000000 --- a/asm/dolphin/os/OS/__OSEVSetNumber.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_8033A780: -/* 8033A780 38 60 00 00 */ li r3, 0 -/* 8033A784 80 80 00 D4 */ lwz r4, 0xd4(r0) -/* 8033A788 54 A5 07 BD */ rlwinm. r5, r5, 0, 0x1e, 0x1e -/* 8033A78C 40 82 00 14 */ bne lbl_8033A7A0 -/* 8033A790 3C A0 80 34 */ lis r5, OSDefaultExceptionHandler@ha /* 0x8033A7B4@ha */ -/* 8033A794 38 A5 A7 B4 */ addi r5, r5, OSDefaultExceptionHandler@l /* 0x8033A7B4@l */ -/* 8033A798 7C BA 03 A6 */ mtspr 0x1a, r5 -/* 8033A79C 4C 00 00 64 */ rfi -lbl_8033A7A0: -/* 8033A7A0 54 65 15 BA */ rlwinm r5, r3, 2, 0x16, 0x1d -/* 8033A7A4 80 A5 30 00 */ lwz r5, 0x3000(r5) -/* 8033A7A8 7C BA 03 A6 */ mtspr 0x1a, r5 -/* 8033A7AC 4C 00 00 64 */ rfi diff --git a/asm/dolphin/os/OS/__OSFPRInit.s b/asm/dolphin/os/OS/__OSFPRInit.s deleted file mode 100644 index c6a09e8037..0000000000 --- a/asm/dolphin/os/OS/__OSFPRInit.s +++ /dev/null @@ -1,76 +0,0 @@ -lbl_80339DD4: -/* 80339DD4 7C 60 00 A6 */ mfmsr r3 -/* 80339DD8 60 63 20 00 */ ori r3, r3, 0x2000 -/* 80339DDC 7C 60 01 24 */ mtmsr r3 -/* 80339DE0 7C 78 E2 A6 */ mfspr r3, 0x398 -/* 80339DE4 54 63 1F FF */ rlwinm. r3, r3, 3, 0x1f, 0x1f -/* 80339DE8 41 82 00 8C */ beq lbl_80339E74 -/* 80339DEC 3C 60 80 45 */ lis r3, ZeroPS@ha /* 0x80451618@ha */ -/* 80339DF0 38 63 16 18 */ addi r3, r3, ZeroPS@l /* 0x80451618@l */ -/* 80339DF4 E0 03 00 00 */ psq_l f0, 0(r3), 0, 0 /* qr0 */ -/* 80339DF8 10 20 00 90 */ ps_mr f1, f0 -/* 80339DFC 10 40 00 90 */ ps_mr f2, f0 -/* 80339E00 10 60 00 90 */ ps_mr f3, f0 -/* 80339E04 10 80 00 90 */ ps_mr f4, f0 -/* 80339E08 10 A0 00 90 */ ps_mr f5, f0 -/* 80339E0C 10 C0 00 90 */ ps_mr f6, f0 -/* 80339E10 10 E0 00 90 */ ps_mr f7, f0 -/* 80339E14 11 00 00 90 */ ps_mr f8, f0 -/* 80339E18 11 20 00 90 */ ps_mr f9, f0 -/* 80339E1C 11 40 00 90 */ ps_mr f10, f0 -/* 80339E20 11 60 00 90 */ ps_mr f11, f0 -/* 80339E24 11 80 00 90 */ ps_mr f12, f0 -/* 80339E28 11 A0 00 90 */ ps_mr f13, f0 -/* 80339E2C 11 C0 00 90 */ ps_mr f14, f0 -/* 80339E30 11 E0 00 90 */ ps_mr f15, f0 -/* 80339E34 12 00 00 90 */ ps_mr f16, f0 -/* 80339E38 12 20 00 90 */ ps_mr f17, f0 -/* 80339E3C 12 40 00 90 */ ps_mr f18, f0 -/* 80339E40 12 60 00 90 */ ps_mr f19, f0 -/* 80339E44 12 80 00 90 */ ps_mr f20, f0 -/* 80339E48 12 A0 00 90 */ ps_mr f21, f0 -/* 80339E4C 12 C0 00 90 */ ps_mr f22, f0 -/* 80339E50 12 E0 00 90 */ ps_mr f23, f0 -/* 80339E54 13 00 00 90 */ ps_mr f24, f0 -/* 80339E58 13 20 00 90 */ ps_mr f25, f0 -/* 80339E5C 13 40 00 90 */ ps_mr f26, f0 -/* 80339E60 13 60 00 90 */ ps_mr f27, f0 -/* 80339E64 13 80 00 90 */ ps_mr f28, f0 -/* 80339E68 13 A0 00 90 */ ps_mr f29, f0 -/* 80339E6C 13 C0 00 90 */ ps_mr f30, f0 -/* 80339E70 13 E0 00 90 */ ps_mr f31, f0 -lbl_80339E74: -/* 80339E74 C8 0D 90 90 */ lfd f0, ZeroF(r13) -/* 80339E78 FC 20 00 90 */ fmr f1, f0 -/* 80339E7C FC 40 00 90 */ fmr f2, f0 -/* 80339E80 FC 60 00 90 */ fmr f3, f0 -/* 80339E84 FC 80 00 90 */ fmr f4, f0 -/* 80339E88 FC A0 00 90 */ fmr f5, f0 -/* 80339E8C FC C0 00 90 */ fmr f6, f0 -/* 80339E90 FC E0 00 90 */ fmr f7, f0 -/* 80339E94 FD 00 00 90 */ fmr f8, f0 -/* 80339E98 FD 20 00 90 */ fmr f9, f0 -/* 80339E9C FD 40 00 90 */ fmr f10, f0 -/* 80339EA0 FD 60 00 90 */ fmr f11, f0 -/* 80339EA4 FD 80 00 90 */ fmr f12, f0 -/* 80339EA8 FD A0 00 90 */ fmr f13, f0 -/* 80339EAC FD C0 00 90 */ fmr f14, f0 -/* 80339EB0 FD E0 00 90 */ fmr f15, f0 -/* 80339EB4 FE 00 00 90 */ fmr f16, f0 -/* 80339EB8 FE 20 00 90 */ fmr f17, f0 -/* 80339EBC FE 40 00 90 */ fmr f18, f0 -/* 80339EC0 FE 60 00 90 */ fmr f19, f0 -/* 80339EC4 FE 80 00 90 */ fmr f20, f0 -/* 80339EC8 FE A0 00 90 */ fmr f21, f0 -/* 80339ECC FE C0 00 90 */ fmr f22, f0 -/* 80339ED0 FE E0 00 90 */ fmr f23, f0 -/* 80339ED4 FF 00 00 90 */ fmr f24, f0 -/* 80339ED8 FF 20 00 90 */ fmr f25, f0 -/* 80339EDC FF 40 00 90 */ fmr f26, f0 -/* 80339EE0 FF 60 00 90 */ fmr f27, f0 -/* 80339EE4 FF 80 00 90 */ fmr f28, f0 -/* 80339EE8 FF A0 00 90 */ fmr f29, f0 -/* 80339EEC FF C0 00 90 */ fmr f30, f0 -/* 80339EF0 FF E0 00 90 */ fmr f31, f0 -/* 80339EF4 FD FE 05 8E */ mtfsf 0xff, f0 -/* 80339EF8 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OS/__OSGetExceptionHandler.s b/asm/dolphin/os/OS/__OSGetExceptionHandler.s deleted file mode 100644 index 9c9bfc0579..0000000000 --- a/asm/dolphin/os/OS/__OSGetExceptionHandler.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_8033A704: -/* 8033A704 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 8033A708 80 6D 90 A4 */ lwz r3, OSExceptionTable(r13) -/* 8033A70C 54 00 10 3A */ slwi r0, r0, 2 -/* 8033A710 7C 63 00 2E */ lwzx r3, r3, r0 -/* 8033A714 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OS/__OSPSInit.s b/asm/dolphin/os/OS/__OSPSInit.s deleted file mode 100644 index 8b528b3305..0000000000 --- a/asm/dolphin/os/OS/__OSPSInit.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_8033A80C: -/* 8033A80C 7C 08 02 A6 */ mflr r0 -/* 8033A810 90 01 00 04 */ stw r0, 4(r1) -/* 8033A814 94 21 FF F8 */ stwu r1, -8(r1) -/* 8033A818 4B FF F5 75 */ bl PPCMfhid2 -/* 8033A81C 64 63 A0 00 */ oris r3, r3, 0xa000 -/* 8033A820 4B FF F5 75 */ bl PPCMthid2 -/* 8033A824 48 00 0E A1 */ bl ICFlashInvalidate -/* 8033A828 7C 00 04 AC */ sync -/* 8033A82C 38 60 00 00 */ li r3, 0 -/* 8033A830 7C 70 E3 A6 */ mtspr 0x390, r3 -/* 8033A834 7C 71 E3 A6 */ mtspr 0x391, r3 -/* 8033A838 7C 72 E3 A6 */ mtspr 0x392, r3 -/* 8033A83C 7C 73 E3 A6 */ mtspr 0x393, r3 -/* 8033A840 7C 74 E3 A6 */ mtspr 0x394, r3 -/* 8033A844 7C 75 E3 A6 */ mtspr 0x395, r3 -/* 8033A848 7C 76 E3 A6 */ mtspr 0x396, r3 -/* 8033A84C 7C 77 E3 A6 */ mtspr 0x397, r3 -/* 8033A850 80 01 00 0C */ lwz r0, 0xc(r1) -/* 8033A854 38 21 00 08 */ addi r1, r1, 8 -/* 8033A858 7C 08 03 A6 */ mtlr r0 -/* 8033A85C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OS/__OSSetExceptionHandler.s b/asm/dolphin/os/OS/__OSSetExceptionHandler.s deleted file mode 100644 index c9fd6e61c3..0000000000 --- a/asm/dolphin/os/OS/__OSSetExceptionHandler.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_8033A6E8: -/* 8033A6E8 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 8033A6EC 80 6D 90 A4 */ lwz r3, OSExceptionTable(r13) -/* 8033A6F0 54 00 10 3A */ slwi r0, r0, 2 -/* 8033A6F4 7C A3 02 14 */ add r5, r3, r0 -/* 8033A6F8 80 65 00 00 */ lwz r3, 0(r5) -/* 8033A6FC 90 85 00 00 */ stw r4, 0(r5) -/* 8033A700 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSAlarm/DecrementerExceptionHandler.s b/asm/dolphin/os/OSAlarm/DecrementerExceptionHandler.s deleted file mode 100644 index 30a713a315..0000000000 --- a/asm/dolphin/os/OSAlarm/DecrementerExceptionHandler.s +++ /dev/null @@ -1,21 +0,0 @@ -lbl_8033AF88: -/* 8033AF88 90 04 00 00 */ stw r0, 0(r4) -/* 8033AF8C 90 24 00 04 */ stw r1, 4(r4) -/* 8033AF90 90 44 00 08 */ stw r2, 8(r4) -/* 8033AF94 BC C4 00 18 */ stmw r6, 0x18(r4) -/* 8033AF98 7C 11 E2 A6 */ mfspr r0, 0x391 -/* 8033AF9C 90 04 01 A8 */ stw r0, 0x1a8(r4) -/* 8033AFA0 7C 12 E2 A6 */ mfspr r0, 0x392 -/* 8033AFA4 90 04 01 AC */ stw r0, 0x1ac(r4) -/* 8033AFA8 7C 13 E2 A6 */ mfspr r0, 0x393 -/* 8033AFAC 90 04 01 B0 */ stw r0, 0x1b0(r4) -/* 8033AFB0 7C 14 E2 A6 */ mfspr r0, 0x394 -/* 8033AFB4 90 04 01 B4 */ stw r0, 0x1b4(r4) -/* 8033AFB8 7C 15 E2 A6 */ mfspr r0, 0x395 -/* 8033AFBC 90 04 01 B8 */ stw r0, 0x1b8(r4) -/* 8033AFC0 7C 16 E2 A6 */ mfspr r0, 0x396 -/* 8033AFC4 90 04 01 BC */ stw r0, 0x1bc(r4) -/* 8033AFC8 7C 17 E2 A6 */ mfspr r0, 0x397 -/* 8033AFCC 90 04 01 C0 */ stw r0, 0x1c0(r4) -/* 8033AFD0 94 21 FF F8 */ stwu r1, -8(r1) -/* 8033AFD4 4B FF FD 84 */ b DecrementerExceptionCallback diff --git a/asm/dolphin/os/OSAlarm/OSCreateAlarm.s b/asm/dolphin/os/OSAlarm/OSCreateAlarm.s deleted file mode 100644 index d58f0eea70..0000000000 --- a/asm/dolphin/os/OSAlarm/OSCreateAlarm.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_8033A8F8: -/* 8033A8F8 38 00 00 00 */ li r0, 0 -/* 8033A8FC 90 03 00 00 */ stw r0, 0(r3) -/* 8033A900 90 03 00 04 */ stw r0, 4(r3) -/* 8033A904 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSAlloc/DLInsert.s b/asm/dolphin/os/OSAlloc/DLInsert.s deleted file mode 100644 index 96100b4d68..0000000000 --- a/asm/dolphin/os/OSAlloc/DLInsert.s +++ /dev/null @@ -1,49 +0,0 @@ -lbl_8033B078: -/* 8033B078 38 E3 00 00 */ addi r7, r3, 0 -/* 8033B07C 38 C0 00 00 */ li r6, 0 -/* 8033B080 48 00 00 14 */ b lbl_8033B094 -lbl_8033B084: -/* 8033B084 7C 04 38 40 */ cmplw r4, r7 -/* 8033B088 40 81 00 14 */ ble lbl_8033B09C -/* 8033B08C 7C E6 3B 78 */ mr r6, r7 -/* 8033B090 80 E7 00 04 */ lwz r7, 4(r7) -lbl_8033B094: -/* 8033B094 28 07 00 00 */ cmplwi r7, 0 -/* 8033B098 40 82 FF EC */ bne lbl_8033B084 -lbl_8033B09C: -/* 8033B09C 90 E4 00 04 */ stw r7, 4(r4) -/* 8033B0A0 28 07 00 00 */ cmplwi r7, 0 -/* 8033B0A4 90 C4 00 00 */ stw r6, 0(r4) -/* 8033B0A8 41 82 00 38 */ beq lbl_8033B0E0 -/* 8033B0AC 90 87 00 00 */ stw r4, 0(r7) -/* 8033B0B0 80 A4 00 08 */ lwz r5, 8(r4) -/* 8033B0B4 7C 04 2A 14 */ add r0, r4, r5 -/* 8033B0B8 7C 00 38 40 */ cmplw r0, r7 -/* 8033B0BC 40 82 00 24 */ bne lbl_8033B0E0 -/* 8033B0C0 80 07 00 08 */ lwz r0, 8(r7) -/* 8033B0C4 7C 05 02 14 */ add r0, r5, r0 -/* 8033B0C8 90 04 00 08 */ stw r0, 8(r4) -/* 8033B0CC 80 E7 00 04 */ lwz r7, 4(r7) -/* 8033B0D0 28 07 00 00 */ cmplwi r7, 0 -/* 8033B0D4 90 E4 00 04 */ stw r7, 4(r4) -/* 8033B0D8 41 82 00 08 */ beq lbl_8033B0E0 -/* 8033B0DC 90 87 00 00 */ stw r4, 0(r7) -lbl_8033B0E0: -/* 8033B0E0 28 06 00 00 */ cmplwi r6, 0 -/* 8033B0E4 41 82 00 38 */ beq lbl_8033B11C -/* 8033B0E8 90 86 00 04 */ stw r4, 4(r6) -/* 8033B0EC 80 A6 00 08 */ lwz r5, 8(r6) -/* 8033B0F0 7C 06 2A 14 */ add r0, r6, r5 -/* 8033B0F4 7C 00 20 40 */ cmplw r0, r4 -/* 8033B0F8 4C 82 00 20 */ bnelr -/* 8033B0FC 80 04 00 08 */ lwz r0, 8(r4) -/* 8033B100 28 07 00 00 */ cmplwi r7, 0 -/* 8033B104 7C 05 02 14 */ add r0, r5, r0 -/* 8033B108 90 06 00 08 */ stw r0, 8(r6) -/* 8033B10C 90 E6 00 04 */ stw r7, 4(r6) -/* 8033B110 4D 82 00 20 */ beqlr -/* 8033B114 90 C7 00 00 */ stw r6, 0(r7) -/* 8033B118 4E 80 00 20 */ blr -lbl_8033B11C: -/* 8033B11C 7C 83 23 78 */ mr r3, r4 -/* 8033B120 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSAlloc/OSCreateHeap.s b/asm/dolphin/os/OSAlloc/OSCreateHeap.s deleted file mode 100644 index 5265c93809..0000000000 --- a/asm/dolphin/os/OSAlloc/OSCreateHeap.s +++ /dev/null @@ -1,31 +0,0 @@ -lbl_8033B220: -/* 8033B220 80 CD 90 C4 */ lwz r6, NumHeaps(r13) -/* 8033B224 38 03 00 1F */ addi r0, r3, 0x1f -/* 8033B228 80 AD 90 C0 */ lwz r5, HeapArray(r13) -/* 8033B22C 54 07 00 34 */ rlwinm r7, r0, 0, 0, 0x1a -/* 8033B230 2C 06 00 00 */ cmpwi r6, 0 -/* 8033B234 7C C9 03 A6 */ mtctr r6 -/* 8033B238 54 84 00 34 */ rlwinm r4, r4, 0, 0, 0x1a -/* 8033B23C 38 60 00 00 */ li r3, 0 -/* 8033B240 40 81 00 44 */ ble lbl_8033B284 -lbl_8033B244: -/* 8033B244 80 05 00 00 */ lwz r0, 0(r5) -/* 8033B248 2C 00 00 00 */ cmpwi r0, 0 -/* 8033B24C 40 80 00 2C */ bge lbl_8033B278 -/* 8033B250 7C 07 20 50 */ subf r0, r7, r4 -/* 8033B254 90 05 00 00 */ stw r0, 0(r5) -/* 8033B258 38 80 00 00 */ li r4, 0 -/* 8033B25C 90 87 00 00 */ stw r4, 0(r7) -/* 8033B260 90 87 00 04 */ stw r4, 4(r7) -/* 8033B264 80 05 00 00 */ lwz r0, 0(r5) -/* 8033B268 90 07 00 08 */ stw r0, 8(r7) -/* 8033B26C 90 E5 00 04 */ stw r7, 4(r5) -/* 8033B270 90 85 00 08 */ stw r4, 8(r5) -/* 8033B274 4E 80 00 20 */ blr -lbl_8033B278: -/* 8033B278 38 A5 00 0C */ addi r5, r5, 0xc -/* 8033B27C 38 63 00 01 */ addi r3, r3, 1 -/* 8033B280 42 00 FF C4 */ bdnz lbl_8033B244 -lbl_8033B284: -/* 8033B284 38 60 FF FF */ li r3, -1 -/* 8033B288 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSAlloc/OSFreeToHeap.s b/asm/dolphin/os/OSAlloc/OSFreeToHeap.s deleted file mode 100644 index e727d74896..0000000000 --- a/asm/dolphin/os/OSAlloc/OSFreeToHeap.s +++ /dev/null @@ -1,35 +0,0 @@ -lbl_8033B124: -/* 8033B124 7C 08 02 A6 */ mflr r0 -/* 8033B128 38 C4 FF E0 */ addi r6, r4, -32 -/* 8033B12C 90 01 00 04 */ stw r0, 4(r1) -/* 8033B130 1C 03 00 0C */ mulli r0, r3, 0xc -/* 8033B134 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8033B138 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8033B13C 80 8D 90 C0 */ lwz r4, HeapArray(r13) -/* 8033B140 80 66 00 04 */ lwz r3, 4(r6) -/* 8033B144 7F E4 02 14 */ add r31, r4, r0 -/* 8033B148 28 03 00 00 */ cmplwi r3, 0 -/* 8033B14C 80 BF 00 08 */ lwz r5, 8(r31) -/* 8033B150 7C C4 33 78 */ mr r4, r6 -/* 8033B154 41 82 00 0C */ beq lbl_8033B160 -/* 8033B158 80 04 00 00 */ lwz r0, 0(r4) -/* 8033B15C 90 03 00 00 */ stw r0, 0(r3) -lbl_8033B160: -/* 8033B160 80 64 00 00 */ lwz r3, 0(r4) -/* 8033B164 28 03 00 00 */ cmplwi r3, 0 -/* 8033B168 40 82 00 0C */ bne lbl_8033B174 -/* 8033B16C 80 A4 00 04 */ lwz r5, 4(r4) -/* 8033B170 48 00 00 0C */ b lbl_8033B17C -lbl_8033B174: -/* 8033B174 80 04 00 04 */ lwz r0, 4(r4) -/* 8033B178 90 03 00 04 */ stw r0, 4(r3) -lbl_8033B17C: -/* 8033B17C 90 BF 00 08 */ stw r5, 8(r31) -/* 8033B180 80 7F 00 04 */ lwz r3, 4(r31) -/* 8033B184 4B FF FE F5 */ bl DLInsert -/* 8033B188 90 7F 00 04 */ stw r3, 4(r31) -/* 8033B18C 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8033B190 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8033B194 38 21 00 18 */ addi r1, r1, 0x18 -/* 8033B198 7C 08 03 A6 */ mtlr r0 -/* 8033B19C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSAlloc/OSInitAlloc.s b/asm/dolphin/os/OSAlloc/OSInitAlloc.s deleted file mode 100644 index deb3aff0d8..0000000000 --- a/asm/dolphin/os/OSAlloc/OSInitAlloc.s +++ /dev/null @@ -1,31 +0,0 @@ -lbl_8033B1B0: -/* 8033B1B0 1C E5 00 0C */ mulli r7, r5, 0xc -/* 8033B1B4 90 6D 90 C0 */ stw r3, HeapArray(r13) -/* 8033B1B8 90 AD 90 C4 */ stw r5, NumHeaps(r13) -/* 8033B1BC 38 C0 00 00 */ li r6, 0 -/* 8033B1C0 38 66 00 00 */ addi r3, r6, 0 -/* 8033B1C4 39 00 00 00 */ li r8, 0 -/* 8033B1C8 38 A0 FF FF */ li r5, -1 -/* 8033B1CC 48 00 00 20 */ b lbl_8033B1EC -lbl_8033B1D0: -/* 8033B1D0 80 0D 90 C0 */ lwz r0, HeapArray(r13) -/* 8033B1D4 39 08 00 01 */ addi r8, r8, 1 -/* 8033B1D8 7D 20 32 14 */ add r9, r0, r6 -/* 8033B1DC 90 A9 00 00 */ stw r5, 0(r9) -/* 8033B1E0 38 C6 00 0C */ addi r6, r6, 0xc -/* 8033B1E4 90 69 00 08 */ stw r3, 8(r9) -/* 8033B1E8 90 69 00 04 */ stw r3, 4(r9) -lbl_8033B1EC: -/* 8033B1EC 80 0D 90 C4 */ lwz r0, NumHeaps(r13) -/* 8033B1F0 7C 08 00 00 */ cmpw r8, r0 -/* 8033B1F4 41 80 FF DC */ blt lbl_8033B1D0 -/* 8033B1F8 80 6D 90 C0 */ lwz r3, HeapArray(r13) -/* 8033B1FC 54 80 00 34 */ rlwinm r0, r4, 0, 0, 0x1a -/* 8033B200 38 80 FF FF */ li r4, -1 -/* 8033B204 90 0D 90 CC */ stw r0, ArenaEnd(r13) -/* 8033B208 7C 63 3A 14 */ add r3, r3, r7 -/* 8033B20C 38 03 00 1F */ addi r0, r3, 0x1f -/* 8033B210 90 8D 84 10 */ stw r4, __OSCurrHeap(r13) -/* 8033B214 54 03 00 34 */ rlwinm r3, r0, 0, 0, 0x1a -/* 8033B218 90 6D 90 C8 */ stw r3, ArenaStart(r13) -/* 8033B21C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSAlloc/OSSetCurrentHeap.s b/asm/dolphin/os/OSAlloc/OSSetCurrentHeap.s deleted file mode 100644 index b7da921e65..0000000000 --- a/asm/dolphin/os/OSAlloc/OSSetCurrentHeap.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_8033B1A0: -/* 8033B1A0 80 0D 84 10 */ lwz r0, __OSCurrHeap(r13) -/* 8033B1A4 90 6D 84 10 */ stw r3, __OSCurrHeap(r13) -/* 8033B1A8 7C 03 03 78 */ mr r3, r0 -/* 8033B1AC 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSArena/OSAllocFromArenaLo.s b/asm/dolphin/os/OSArena/OSAllocFromArenaLo.s deleted file mode 100644 index 8491455e9b..0000000000 --- a/asm/dolphin/os/OSArena/OSAllocFromArenaLo.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8033B2AC: -/* 8033B2AC 80 0D 84 18 */ lwz r0, __OSArenaLo(r13) -/* 8033B2B0 38 84 FF FF */ addi r4, r4, -1 -/* 8033B2B4 7C 85 20 F8 */ nor r5, r4, r4 -/* 8033B2B8 7C 00 22 14 */ add r0, r0, r4 -/* 8033B2BC 7C A6 00 38 */ and r6, r5, r0 -/* 8033B2C0 7C 06 1A 14 */ add r0, r6, r3 -/* 8033B2C4 7C 00 22 14 */ add r0, r0, r4 -/* 8033B2C8 7C A0 00 38 */ and r0, r5, r0 -/* 8033B2CC 90 0D 84 18 */ stw r0, __OSArenaLo(r13) -/* 8033B2D0 7C C3 33 78 */ mr r3, r6 -/* 8033B2D4 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSArena/OSSetArenaHi.s b/asm/dolphin/os/OSArena/OSSetArenaHi.s deleted file mode 100644 index 51b9058a86..0000000000 --- a/asm/dolphin/os/OSArena/OSSetArenaHi.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_8033B29C: -/* 8033B29C 90 6D 90 D0 */ stw r3, __OSArenaHi(r13) -/* 8033B2A0 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSArena/OSSetArenaLo.s b/asm/dolphin/os/OSArena/OSSetArenaLo.s deleted file mode 100644 index 409e7a1920..0000000000 --- a/asm/dolphin/os/OSArena/OSSetArenaLo.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_8033B2A4: -/* 8033B2A4 90 6D 84 18 */ stw r3, __OSArenaLo(r13) -/* 8033B2A8 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSCache/DCEnable.s b/asm/dolphin/os/OSCache/DCEnable.s deleted file mode 100644 index f135bf6d09..0000000000 --- a/asm/dolphin/os/OSCache/DCEnable.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_8033B56C: -/* 8033B56C 7C 00 04 AC */ sync -/* 8033B570 7C 70 FA A6 */ mfspr r3, 0x3f0 -/* 8033B574 60 63 40 00 */ ori r3, r3, 0x4000 -/* 8033B578 7C 70 FB A6 */ mtspr 0x3f0, r3 -/* 8033B57C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSCache/DCFlushRange.s b/asm/dolphin/os/OSCache/DCFlushRange.s deleted file mode 100644 index 9070918a35..0000000000 --- a/asm/dolphin/os/OSCache/DCFlushRange.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_8033B5AC: -/* 8033B5AC 28 04 00 00 */ cmplwi r4, 0 -/* 8033B5B0 4C 81 00 20 */ blelr -/* 8033B5B4 54 65 06 FE */ clrlwi r5, r3, 0x1b -/* 8033B5B8 7C 84 2A 14 */ add r4, r4, r5 -/* 8033B5BC 38 84 00 1F */ addi r4, r4, 0x1f -/* 8033B5C0 54 84 D9 7E */ srwi r4, r4, 5 -/* 8033B5C4 7C 89 03 A6 */ mtctr r4 -lbl_8033B5C8: -/* 8033B5C8 7C 00 18 AC */ dcbf 0, r3 -/* 8033B5CC 38 63 00 20 */ addi r3, r3, 0x20 -/* 8033B5D0 42 00 FF F8 */ bdnz lbl_8033B5C8 -/* 8033B5D4 44 00 00 02 */ sc -/* 8033B5D8 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSCache/DCFlushRangeNoSync.s b/asm/dolphin/os/OSCache/DCFlushRangeNoSync.s deleted file mode 100644 index f4985be9e5..0000000000 --- a/asm/dolphin/os/OSCache/DCFlushRangeNoSync.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_8033B60C: -/* 8033B60C 28 04 00 00 */ cmplwi r4, 0 -/* 8033B610 4C 81 00 20 */ blelr -/* 8033B614 54 65 06 FE */ clrlwi r5, r3, 0x1b -/* 8033B618 7C 84 2A 14 */ add r4, r4, r5 -/* 8033B61C 38 84 00 1F */ addi r4, r4, 0x1f -/* 8033B620 54 84 D9 7E */ srwi r4, r4, 5 -/* 8033B624 7C 89 03 A6 */ mtctr r4 -lbl_8033B628: -/* 8033B628 7C 00 18 AC */ dcbf 0, r3 -/* 8033B62C 38 63 00 20 */ addi r3, r3, 0x20 -/* 8033B630 42 00 FF F8 */ bdnz lbl_8033B628 -/* 8033B634 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSCache/DCInvalidateRange.s b/asm/dolphin/os/OSCache/DCInvalidateRange.s deleted file mode 100644 index 2a7679f837..0000000000 --- a/asm/dolphin/os/OSCache/DCInvalidateRange.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_8033B580: -/* 8033B580 28 04 00 00 */ cmplwi r4, 0 -/* 8033B584 4C 81 00 20 */ blelr -/* 8033B588 54 65 06 FE */ clrlwi r5, r3, 0x1b -/* 8033B58C 7C 84 2A 14 */ add r4, r4, r5 -/* 8033B590 38 84 00 1F */ addi r4, r4, 0x1f -/* 8033B594 54 84 D9 7E */ srwi r4, r4, 5 -/* 8033B598 7C 89 03 A6 */ mtctr r4 -lbl_8033B59C: -/* 8033B59C 7C 00 1B AC */ dcbi 0, r3 -/* 8033B5A0 38 63 00 20 */ addi r3, r3, 0x20 -/* 8033B5A4 42 00 FF F8 */ bdnz lbl_8033B59C -/* 8033B5A8 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSCache/DCStoreRange.s b/asm/dolphin/os/OSCache/DCStoreRange.s deleted file mode 100644 index efc793404a..0000000000 --- a/asm/dolphin/os/OSCache/DCStoreRange.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_8033B5DC: -/* 8033B5DC 28 04 00 00 */ cmplwi r4, 0 -/* 8033B5E0 4C 81 00 20 */ blelr -/* 8033B5E4 54 65 06 FE */ clrlwi r5, r3, 0x1b -/* 8033B5E8 7C 84 2A 14 */ add r4, r4, r5 -/* 8033B5EC 38 84 00 1F */ addi r4, r4, 0x1f -/* 8033B5F0 54 84 D9 7E */ srwi r4, r4, 5 -/* 8033B5F4 7C 89 03 A6 */ mtctr r4 -lbl_8033B5F8: -/* 8033B5F8 7C 00 18 6C */ dcbst 0, r3 -/* 8033B5FC 38 63 00 20 */ addi r3, r3, 0x20 -/* 8033B600 42 00 FF F8 */ bdnz lbl_8033B5F8 -/* 8033B604 44 00 00 02 */ sc -/* 8033B608 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSCache/DCStoreRangeNoSync.s b/asm/dolphin/os/OSCache/DCStoreRangeNoSync.s deleted file mode 100644 index c5a116cc1f..0000000000 --- a/asm/dolphin/os/OSCache/DCStoreRangeNoSync.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_8033B638: -/* 8033B638 28 04 00 00 */ cmplwi r4, 0 -/* 8033B63C 4C 81 00 20 */ blelr -/* 8033B640 54 65 06 FE */ clrlwi r5, r3, 0x1b -/* 8033B644 7C 84 2A 14 */ add r4, r4, r5 -/* 8033B648 38 84 00 1F */ addi r4, r4, 0x1f -/* 8033B64C 54 84 D9 7E */ srwi r4, r4, 5 -/* 8033B650 7C 89 03 A6 */ mtctr r4 -lbl_8033B654: -/* 8033B654 7C 00 18 6C */ dcbst 0, r3 -/* 8033B658 38 63 00 20 */ addi r3, r3, 0x20 -/* 8033B65C 42 00 FF F8 */ bdnz lbl_8033B654 -/* 8033B660 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSCache/DCZeroRange.s b/asm/dolphin/os/OSCache/DCZeroRange.s deleted file mode 100644 index a02abdc0b6..0000000000 --- a/asm/dolphin/os/OSCache/DCZeroRange.s +++ /dev/null @@ -1,13 +0,0 @@ -lbl_8033B664: -/* 8033B664 28 04 00 00 */ cmplwi r4, 0 -/* 8033B668 4C 81 00 20 */ blelr -/* 8033B66C 54 65 06 FE */ clrlwi r5, r3, 0x1b -/* 8033B670 7C 84 2A 14 */ add r4, r4, r5 -/* 8033B674 38 84 00 1F */ addi r4, r4, 0x1f -/* 8033B678 54 84 D9 7E */ srwi r4, r4, 5 -/* 8033B67C 7C 89 03 A6 */ mtctr r4 -lbl_8033B680: -/* 8033B680 7C 00 1F EC */ dcbz 0, r3 -/* 8033B684 38 63 00 20 */ addi r3, r3, 0x20 -/* 8033B688 42 00 FF F8 */ bdnz lbl_8033B680 -/* 8033B68C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSCache/ICEnable.s b/asm/dolphin/os/OSCache/ICEnable.s deleted file mode 100644 index 1ad62485e1..0000000000 --- a/asm/dolphin/os/OSCache/ICEnable.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_8033B6D4: -/* 8033B6D4 4C 00 01 2C */ isync -/* 8033B6D8 7C 70 FA A6 */ mfspr r3, 0x3f0 -/* 8033B6DC 60 63 80 00 */ ori r3, r3, 0x8000 -/* 8033B6E0 7C 70 FB A6 */ mtspr 0x3f0, r3 -/* 8033B6E4 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSCache/ICFlashInvalidate.s b/asm/dolphin/os/OSCache/ICFlashInvalidate.s deleted file mode 100644 index a1a272bec6..0000000000 --- a/asm/dolphin/os/OSCache/ICFlashInvalidate.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_8033B6C4: -/* 8033B6C4 7C 70 FA A6 */ mfspr r3, 0x3f0 -/* 8033B6C8 60 63 08 00 */ ori r3, r3, 0x800 -/* 8033B6CC 7C 70 FB A6 */ mtspr 0x3f0, r3 -/* 8033B6D0 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSCache/ICInvalidateRange.s b/asm/dolphin/os/OSCache/ICInvalidateRange.s deleted file mode 100644 index b02400d3c5..0000000000 --- a/asm/dolphin/os/OSCache/ICInvalidateRange.s +++ /dev/null @@ -1,15 +0,0 @@ -lbl_8033B690: -/* 8033B690 28 04 00 00 */ cmplwi r4, 0 -/* 8033B694 4C 81 00 20 */ blelr -/* 8033B698 54 65 06 FE */ clrlwi r5, r3, 0x1b -/* 8033B69C 7C 84 2A 14 */ add r4, r4, r5 -/* 8033B6A0 38 84 00 1F */ addi r4, r4, 0x1f -/* 8033B6A4 54 84 D9 7E */ srwi r4, r4, 5 -/* 8033B6A8 7C 89 03 A6 */ mtctr r4 -lbl_8033B6AC: -/* 8033B6AC 7C 00 1F AC */ icbi 0, r3 -/* 8033B6B0 38 63 00 20 */ addi r3, r3, 0x20 -/* 8033B6B4 42 00 FF F8 */ bdnz lbl_8033B6AC -/* 8033B6B8 7C 00 04 AC */ sync -/* 8033B6BC 4C 00 01 2C */ isync -/* 8033B6C0 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSCache/LCDisable.s b/asm/dolphin/os/OSCache/LCDisable.s deleted file mode 100644 index 657b394bba..0000000000 --- a/asm/dolphin/os/OSCache/LCDisable.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8033B7EC: -/* 8033B7EC 3C 60 E0 00 */ lis r3, 0xE000 /* 0xE0000020@ha */ -/* 8033B7F0 38 80 02 00 */ li r4, 0x200 -/* 8033B7F4 7C 89 03 A6 */ mtctr r4 -lbl_8033B7F8: -/* 8033B7F8 7C 00 1B AC */ dcbi 0, r3 -/* 8033B7FC 38 63 00 20 */ addi r3, r3, 0x0020 /* 0xE0000020@l */ -/* 8033B800 42 00 FF F8 */ bdnz lbl_8033B7F8 -/* 8033B804 7C 98 E2 A6 */ mfspr r4, 0x398 -/* 8033B808 54 84 01 04 */ rlwinm r4, r4, 0, 4, 2 -/* 8033B80C 7C 98 E3 A6 */ mtspr 0x398, r4 -/* 8033B810 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSCache/LCEnable.s b/asm/dolphin/os/OSCache/LCEnable.s deleted file mode 100644 index 0a9ea72304..0000000000 --- a/asm/dolphin/os/OSCache/LCEnable.s +++ /dev/null @@ -1,15 +0,0 @@ -lbl_8033B7B4: -/* 8033B7B4 7C 08 02 A6 */ mflr r0 -/* 8033B7B8 90 01 00 04 */ stw r0, 4(r1) -/* 8033B7BC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8033B7C0 93 E1 00 0C */ stw r31, 0xc(r1) -/* 8033B7C4 48 00 1F 31 */ bl OSDisableInterrupts -/* 8033B7C8 7C 7F 1B 78 */ mr r31, r3 -/* 8033B7CC 4B FF FF 1D */ bl __LCEnable -/* 8033B7D0 7F E3 FB 78 */ mr r3, r31 -/* 8033B7D4 48 00 1F 49 */ bl OSRestoreInterrupts -/* 8033B7D8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 8033B7DC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8033B7E0 38 21 00 10 */ addi r1, r1, 0x10 -/* 8033B7E4 7C 08 03 A6 */ mtlr r0 -/* 8033B7E8 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSCache/LCQueueWait.s b/asm/dolphin/os/OSCache/LCQueueWait.s deleted file mode 100644 index a506680ac3..0000000000 --- a/asm/dolphin/os/OSCache/LCQueueWait.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_8033B8E4: -/* 8033B8E4 7C 98 E2 A6 */ mfspr r4, 0x398 -/* 8033B8E8 54 84 47 3E */ rlwinm r4, r4, 8, 0x1c, 0x1f -/* 8033B8EC 7C 04 18 00 */ cmpw r4, r3 -/* 8033B8F0 41 81 FF F4 */ bgt LCQueueWait -/* 8033B8F4 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSCache/LCStoreBlocks.s b/asm/dolphin/os/OSCache/LCStoreBlocks.s deleted file mode 100644 index 7fd5855de3..0000000000 --- a/asm/dolphin/os/OSCache/LCStoreBlocks.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_8033B814: -/* 8033B814 54 A6 F6 FE */ rlwinm r6, r5, 0x1e, 0x1b, 0x1f -/* 8033B818 54 63 01 3E */ clrlwi r3, r3, 4 -/* 8033B81C 7C C6 1B 78 */ or r6, r6, r3 -/* 8033B820 7C DA E3 A6 */ mtspr 0x39a, r6 -/* 8033B824 54 A6 17 3A */ rlwinm r6, r5, 2, 0x1c, 0x1d -/* 8033B828 7C C6 23 78 */ or r6, r6, r4 -/* 8033B82C 60 C6 00 02 */ ori r6, r6, 2 -/* 8033B830 7C DB E3 A6 */ mtspr 0x39b, r6 -/* 8033B834 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSCache/__LCEnable.s b/asm/dolphin/os/OSCache/__LCEnable.s deleted file mode 100644 index 452f1357f1..0000000000 --- a/asm/dolphin/os/OSCache/__LCEnable.s +++ /dev/null @@ -1,54 +0,0 @@ -lbl_8033B6E8: -/* 8033B6E8 7C A0 00 A6 */ mfmsr r5 -/* 8033B6EC 60 A5 10 00 */ ori r5, r5, 0x1000 -/* 8033B6F0 7C A0 01 24 */ mtmsr r5 -/* 8033B6F4 3C 60 80 00 */ lis r3, 0x8000 /* 0x80000020@ha */ -/* 8033B6F8 38 80 04 00 */ li r4, 0x400 -/* 8033B6FC 7C 89 03 A6 */ mtctr r4 -lbl_8033B700: -/* 8033B700 7C 00 1A 2C */ dcbt 0, r3 -/* 8033B704 7C 00 18 6C */ dcbst 0, r3 -/* 8033B708 38 63 00 20 */ addi r3, r3, 0x0020 /* 0x80000020@l */ -/* 8033B70C 42 00 FF F4 */ bdnz lbl_8033B700 -/* 8033B710 7C 98 E2 A6 */ mfspr r4, 0x398 -/* 8033B714 64 84 10 0F */ oris r4, r4, 0x100f -/* 8033B718 7C 98 E3 A6 */ mtspr 0x398, r4 -/* 8033B71C 60 00 00 00 */ nop -/* 8033B720 60 00 00 00 */ nop -/* 8033B724 60 00 00 00 */ nop -/* 8033B728 60 00 00 00 */ nop -/* 8033B72C 60 00 00 00 */ nop -/* 8033B730 60 00 00 00 */ nop -/* 8033B734 60 00 00 00 */ nop -/* 8033B738 60 00 00 00 */ nop -/* 8033B73C 60 00 00 00 */ nop -/* 8033B740 60 00 00 00 */ nop -/* 8033B744 60 00 00 00 */ nop -/* 8033B748 60 00 00 00 */ nop -/* 8033B74C 3C 60 E0 00 */ lis r3, 0xE000 /* 0xE0000002@h */ -/* 8033B750 60 63 00 02 */ ori r3, r3, 0x0002 /* 0xE0000002@l */ -/* 8033B754 7C 7F 83 A6 */ mtdbatl 3, r3 -/* 8033B758 60 63 01 FE */ ori r3, r3, 0x1fe -/* 8033B75C 7C 7E 83 A6 */ mtdbatu 3, r3 -/* 8033B760 4C 00 01 2C */ isync -/* 8033B764 3C 60 E0 00 */ lis r3, 0xE000 /* 0xE0000020@ha */ -/* 8033B768 38 C0 02 00 */ li r6, 0x200 -/* 8033B76C 7C C9 03 A6 */ mtctr r6 -/* 8033B770 38 C0 00 00 */ li r6, 0 -lbl_8033B774: -/* 8033B774 10 06 1F EC */ dcbz_l r6, r3 -/* 8033B778 38 63 00 20 */ addi r3, r3, 0x0020 /* 0xE0000020@l */ -/* 8033B77C 42 00 FF F8 */ bdnz lbl_8033B774 -/* 8033B780 60 00 00 00 */ nop -/* 8033B784 60 00 00 00 */ nop -/* 8033B788 60 00 00 00 */ nop -/* 8033B78C 60 00 00 00 */ nop -/* 8033B790 60 00 00 00 */ nop -/* 8033B794 60 00 00 00 */ nop -/* 8033B798 60 00 00 00 */ nop -/* 8033B79C 60 00 00 00 */ nop -/* 8033B7A0 60 00 00 00 */ nop -/* 8033B7A4 60 00 00 00 */ nop -/* 8033B7A8 60 00 00 00 */ nop -/* 8033B7AC 60 00 00 00 */ nop -/* 8033B7B0 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSContext/OSClearContext.s b/asm/dolphin/os/OSContext/OSClearContext.s deleted file mode 100644 index 5a41486620..0000000000 --- a/asm/dolphin/os/OSContext/OSClearContext.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_8033C000: -/* 8033C000 38 A0 00 00 */ li r5, 0 -/* 8033C004 B0 A3 01 A0 */ sth r5, 0x1a0(r3) -/* 8033C008 3C 80 80 00 */ lis r4, 0x8000 /* 0x800000D8@ha */ -/* 8033C00C B0 A3 01 A2 */ sth r5, 0x1a2(r3) -/* 8033C010 80 04 00 D8 */ lwz r0, 0x00D8(r4) /* 0x800000D8@l */ -/* 8033C014 7C 03 00 40 */ cmplw r3, r0 -/* 8033C018 40 82 00 08 */ bne lbl_8033C020 -/* 8033C01C 90 A4 00 D8 */ stw r5, 0xd8(r4) -lbl_8033C020: -/* 8033C020 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSContext/OSFillFPUContext.s b/asm/dolphin/os/OSContext/OSFillFPUContext.s deleted file mode 100644 index 8b1a145ab0..0000000000 --- a/asm/dolphin/os/OSContext/OSFillFPUContext.s +++ /dev/null @@ -1,77 +0,0 @@ -lbl_8033C454: -/* 8033C454 7C A0 00 A6 */ mfmsr r5 -/* 8033C458 60 A5 20 00 */ ori r5, r5, 0x2000 -/* 8033C45C 7C A0 01 24 */ mtmsr r5 -/* 8033C460 4C 00 01 2C */ isync -/* 8033C464 D8 03 00 90 */ stfd f0, 0x90(r3) -/* 8033C468 D8 23 00 98 */ stfd f1, 0x98(r3) -/* 8033C46C D8 43 00 A0 */ stfd f2, 0xa0(r3) -/* 8033C470 D8 63 00 A8 */ stfd f3, 0xa8(r3) -/* 8033C474 D8 83 00 B0 */ stfd f4, 0xb0(r3) -/* 8033C478 D8 A3 00 B8 */ stfd f5, 0xb8(r3) -/* 8033C47C D8 C3 00 C0 */ stfd f6, 0xc0(r3) -/* 8033C480 D8 E3 00 C8 */ stfd f7, 0xc8(r3) -/* 8033C484 D9 03 00 D0 */ stfd f8, 0xd0(r3) -/* 8033C488 D9 23 00 D8 */ stfd f9, 0xd8(r3) -/* 8033C48C D9 43 00 E0 */ stfd f10, 0xe0(r3) -/* 8033C490 D9 63 00 E8 */ stfd f11, 0xe8(r3) -/* 8033C494 D9 83 00 F0 */ stfd f12, 0xf0(r3) -/* 8033C498 D9 A3 00 F8 */ stfd f13, 0xf8(r3) -/* 8033C49C D9 C3 01 00 */ stfd f14, 0x100(r3) -/* 8033C4A0 D9 E3 01 08 */ stfd f15, 0x108(r3) -/* 8033C4A4 DA 03 01 10 */ stfd f16, 0x110(r3) -/* 8033C4A8 DA 23 01 18 */ stfd f17, 0x118(r3) -/* 8033C4AC DA 43 01 20 */ stfd f18, 0x120(r3) -/* 8033C4B0 DA 63 01 28 */ stfd f19, 0x128(r3) -/* 8033C4B4 DA 83 01 30 */ stfd f20, 0x130(r3) -/* 8033C4B8 DA A3 01 38 */ stfd f21, 0x138(r3) -/* 8033C4BC DA C3 01 40 */ stfd f22, 0x140(r3) -/* 8033C4C0 DA E3 01 48 */ stfd f23, 0x148(r3) -/* 8033C4C4 DB 03 01 50 */ stfd f24, 0x150(r3) -/* 8033C4C8 DB 23 01 58 */ stfd f25, 0x158(r3) -/* 8033C4CC DB 43 01 60 */ stfd f26, 0x160(r3) -/* 8033C4D0 DB 63 01 68 */ stfd f27, 0x168(r3) -/* 8033C4D4 DB 83 01 70 */ stfd f28, 0x170(r3) -/* 8033C4D8 DB A3 01 78 */ stfd f29, 0x178(r3) -/* 8033C4DC DB C3 01 80 */ stfd f30, 0x180(r3) -/* 8033C4E0 DB E3 01 88 */ stfd f31, 0x188(r3) -/* 8033C4E4 FC 00 04 8E */ mffs f0 -/* 8033C4E8 D8 03 01 90 */ stfd f0, 0x190(r3) -/* 8033C4EC C8 03 00 90 */ lfd f0, 0x90(r3) -/* 8033C4F0 7C B8 E2 A6 */ mfspr r5, 0x398 -/* 8033C4F4 54 A5 1F FF */ rlwinm. r5, r5, 3, 0x1f, 0x1f -/* 8033C4F8 41 82 00 84 */ beq lbl_8033C57C -/* 8033C4FC F0 03 01 C8 */ psq_st f0, 456(r3), 0, 0 /* qr0 */ -/* 8033C500 F0 23 01 D0 */ psq_st f1, 464(r3), 0, 0 /* qr0 */ -/* 8033C504 F0 43 01 D8 */ psq_st f2, 472(r3), 0, 0 /* qr0 */ -/* 8033C508 F0 63 01 E0 */ psq_st f3, 480(r3), 0, 0 /* qr0 */ -/* 8033C50C F0 83 01 E8 */ psq_st f4, 488(r3), 0, 0 /* qr0 */ -/* 8033C510 F0 A3 01 F0 */ psq_st f5, 496(r3), 0, 0 /* qr0 */ -/* 8033C514 F0 C3 01 F8 */ psq_st f6, 504(r3), 0, 0 /* qr0 */ -/* 8033C518 F0 E3 02 00 */ psq_st f7, 512(r3), 0, 0 /* qr0 */ -/* 8033C51C F1 03 02 08 */ psq_st f8, 520(r3), 0, 0 /* qr0 */ -/* 8033C520 F1 23 02 10 */ psq_st f9, 528(r3), 0, 0 /* qr0 */ -/* 8033C524 F1 43 02 18 */ psq_st f10, 536(r3), 0, 0 /* qr0 */ -/* 8033C528 F1 63 02 20 */ psq_st f11, 544(r3), 0, 0 /* qr0 */ -/* 8033C52C F1 83 02 28 */ psq_st f12, 552(r3), 0, 0 /* qr0 */ -/* 8033C530 F1 A3 02 30 */ psq_st f13, 560(r3), 0, 0 /* qr0 */ -/* 8033C534 F1 C3 02 38 */ psq_st f14, 568(r3), 0, 0 /* qr0 */ -/* 8033C538 F1 E3 02 40 */ psq_st f15, 576(r3), 0, 0 /* qr0 */ -/* 8033C53C F2 03 02 48 */ psq_st f16, 584(r3), 0, 0 /* qr0 */ -/* 8033C540 F2 23 02 50 */ psq_st f17, 592(r3), 0, 0 /* qr0 */ -/* 8033C544 F2 43 02 58 */ psq_st f18, 600(r3), 0, 0 /* qr0 */ -/* 8033C548 F2 63 02 60 */ psq_st f19, 608(r3), 0, 0 /* qr0 */ -/* 8033C54C F2 83 02 68 */ psq_st f20, 616(r3), 0, 0 /* qr0 */ -/* 8033C550 F2 A3 02 70 */ psq_st f21, 624(r3), 0, 0 /* qr0 */ -/* 8033C554 F2 C3 02 78 */ psq_st f22, 632(r3), 0, 0 /* qr0 */ -/* 8033C558 F2 E3 02 80 */ psq_st f23, 640(r3), 0, 0 /* qr0 */ -/* 8033C55C F3 03 02 88 */ psq_st f24, 648(r3), 0, 0 /* qr0 */ -/* 8033C560 F3 23 02 90 */ psq_st f25, 656(r3), 0, 0 /* qr0 */ -/* 8033C564 F3 43 02 98 */ psq_st f26, 664(r3), 0, 0 /* qr0 */ -/* 8033C568 F3 63 02 A0 */ psq_st f27, 672(r3), 0, 0 /* qr0 */ -/* 8033C56C F3 83 02 A8 */ psq_st f28, 680(r3), 0, 0 /* qr0 */ -/* 8033C570 F3 A3 02 B0 */ psq_st f29, 688(r3), 0, 0 /* qr0 */ -/* 8033C574 F3 C3 02 B8 */ psq_st f30, 696(r3), 0, 0 /* qr0 */ -/* 8033C578 F3 E3 02 C0 */ psq_st f31, 704(r3), 0, 0 /* qr0 */ -lbl_8033C57C: -/* 8033C57C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSContext/OSGetCurrentContext.s b/asm/dolphin/os/OSContext/OSGetCurrentContext.s deleted file mode 100644 index 075d435120..0000000000 --- a/asm/dolphin/os/OSContext/OSGetCurrentContext.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_8033BE94: -/* 8033BE94 3C 60 80 00 */ lis r3, 0x8000 /* 0x800000D4@ha */ -/* 8033BE98 80 63 00 D4 */ lwz r3, 0x00D4(r3) /* 0x800000D4@l */ -/* 8033BE9C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSContext/OSGetStackPointer.s b/asm/dolphin/os/OSContext/OSGetStackPointer.s deleted file mode 100644 index b6ac84a313..0000000000 --- a/asm/dolphin/os/OSContext/OSGetStackPointer.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_8033BFF8: -/* 8033BFF8 7C 23 0B 78 */ mr r3, r1 -/* 8033BFFC 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSContext/OSInitContext.s b/asm/dolphin/os/OSContext/OSInitContext.s deleted file mode 100644 index 995cd95f71..0000000000 --- a/asm/dolphin/os/OSContext/OSInitContext.s +++ /dev/null @@ -1,48 +0,0 @@ -lbl_8033C024: -/* 8033C024 90 83 01 98 */ stw r4, 0x198(r3) -/* 8033C028 90 A3 00 04 */ stw r5, 4(r3) -/* 8033C02C 39 60 00 00 */ li r11, 0 -/* 8033C030 61 6B 90 32 */ ori r11, r11, 0x9032 -/* 8033C034 91 63 01 9C */ stw r11, 0x19c(r3) -/* 8033C038 38 00 00 00 */ li r0, 0 -/* 8033C03C 90 03 00 80 */ stw r0, 0x80(r3) -/* 8033C040 90 03 00 8C */ stw r0, 0x8c(r3) -/* 8033C044 90 43 00 08 */ stw r2, 8(r3) -/* 8033C048 91 A3 00 34 */ stw r13, 0x34(r3) -/* 8033C04C 90 03 00 0C */ stw r0, 0xc(r3) -/* 8033C050 90 03 00 10 */ stw r0, 0x10(r3) -/* 8033C054 90 03 00 14 */ stw r0, 0x14(r3) -/* 8033C058 90 03 00 18 */ stw r0, 0x18(r3) -/* 8033C05C 90 03 00 1C */ stw r0, 0x1c(r3) -/* 8033C060 90 03 00 20 */ stw r0, 0x20(r3) -/* 8033C064 90 03 00 24 */ stw r0, 0x24(r3) -/* 8033C068 90 03 00 28 */ stw r0, 0x28(r3) -/* 8033C06C 90 03 00 2C */ stw r0, 0x2c(r3) -/* 8033C070 90 03 00 30 */ stw r0, 0x30(r3) -/* 8033C074 90 03 00 38 */ stw r0, 0x38(r3) -/* 8033C078 90 03 00 3C */ stw r0, 0x3c(r3) -/* 8033C07C 90 03 00 40 */ stw r0, 0x40(r3) -/* 8033C080 90 03 00 44 */ stw r0, 0x44(r3) -/* 8033C084 90 03 00 48 */ stw r0, 0x48(r3) -/* 8033C088 90 03 00 4C */ stw r0, 0x4c(r3) -/* 8033C08C 90 03 00 50 */ stw r0, 0x50(r3) -/* 8033C090 90 03 00 54 */ stw r0, 0x54(r3) -/* 8033C094 90 03 00 58 */ stw r0, 0x58(r3) -/* 8033C098 90 03 00 5C */ stw r0, 0x5c(r3) -/* 8033C09C 90 03 00 60 */ stw r0, 0x60(r3) -/* 8033C0A0 90 03 00 64 */ stw r0, 0x64(r3) -/* 8033C0A4 90 03 00 68 */ stw r0, 0x68(r3) -/* 8033C0A8 90 03 00 6C */ stw r0, 0x6c(r3) -/* 8033C0AC 90 03 00 70 */ stw r0, 0x70(r3) -/* 8033C0B0 90 03 00 74 */ stw r0, 0x74(r3) -/* 8033C0B4 90 03 00 78 */ stw r0, 0x78(r3) -/* 8033C0B8 90 03 00 7C */ stw r0, 0x7c(r3) -/* 8033C0BC 90 03 01 A4 */ stw r0, 0x1a4(r3) -/* 8033C0C0 90 03 01 A8 */ stw r0, 0x1a8(r3) -/* 8033C0C4 90 03 01 AC */ stw r0, 0x1ac(r3) -/* 8033C0C8 90 03 01 B0 */ stw r0, 0x1b0(r3) -/* 8033C0CC 90 03 01 B4 */ stw r0, 0x1b4(r3) -/* 8033C0D0 90 03 01 B8 */ stw r0, 0x1b8(r3) -/* 8033C0D4 90 03 01 BC */ stw r0, 0x1bc(r3) -/* 8033C0D8 90 03 01 C0 */ stw r0, 0x1c0(r3) -/* 8033C0DC 4B FF FF 24 */ b OSClearContext diff --git a/asm/dolphin/os/OSContext/OSLoadContext.s b/asm/dolphin/os/OSContext/OSLoadContext.s deleted file mode 100644 index 78a7a79107..0000000000 --- a/asm/dolphin/os/OSContext/OSLoadContext.s +++ /dev/null @@ -1,58 +0,0 @@ -lbl_8033BF20: -/* 8033BF20 3C 80 80 34 */ lis r4, OSDisableInterrupts@ha /* 0x8033D6F4@ha */ -/* 8033BF24 80 C3 01 98 */ lwz r6, 0x198(r3) -/* 8033BF28 38 A4 D6 F4 */ addi r5, r4, OSDisableInterrupts@l /* 0x8033D6F4@l */ -/* 8033BF2C 7C 06 28 40 */ cmplw r6, r5 -/* 8033BF30 40 81 00 18 */ ble lbl_8033BF48 -/* 8033BF34 3C 80 80 34 */ lis r4, __RAS_OSDisableInterrupts_end@ha /* 0x8033D700@ha */ -/* 8033BF38 38 04 D7 00 */ addi r0, r4, __RAS_OSDisableInterrupts_end@l /* 0x8033D700@l */ -/* 8033BF3C 7C 06 00 40 */ cmplw r6, r0 -/* 8033BF40 40 80 00 08 */ bge lbl_8033BF48 -/* 8033BF44 90 A3 01 98 */ stw r5, 0x198(r3) -lbl_8033BF48: -/* 8033BF48 80 03 00 00 */ lwz r0, 0(r3) -/* 8033BF4C 80 23 00 04 */ lwz r1, 4(r3) -/* 8033BF50 80 43 00 08 */ lwz r2, 8(r3) -/* 8033BF54 A0 83 01 A2 */ lhz r4, 0x1a2(r3) -/* 8033BF58 54 85 07 BD */ rlwinm. r5, r4, 0, 0x1e, 0x1e -/* 8033BF5C 41 82 00 14 */ beq lbl_8033BF70 -/* 8033BF60 54 84 07 FA */ rlwinm r4, r4, 0, 0x1f, 0x1d -/* 8033BF64 B0 83 01 A2 */ sth r4, 0x1a2(r3) -/* 8033BF68 B8 A3 00 14 */ lmw r5, 0x14(r3) -/* 8033BF6C 48 00 00 08 */ b lbl_8033BF74 -lbl_8033BF70: -/* 8033BF70 B9 A3 00 34 */ lmw r13, 0x34(r3) -lbl_8033BF74: -/* 8033BF74 80 83 01 A8 */ lwz r4, 0x1a8(r3) -/* 8033BF78 7C 91 E3 A6 */ mtspr 0x391, r4 -/* 8033BF7C 80 83 01 AC */ lwz r4, 0x1ac(r3) -/* 8033BF80 7C 92 E3 A6 */ mtspr 0x392, r4 -/* 8033BF84 80 83 01 B0 */ lwz r4, 0x1b0(r3) -/* 8033BF88 7C 93 E3 A6 */ mtspr 0x393, r4 -/* 8033BF8C 80 83 01 B4 */ lwz r4, 0x1b4(r3) -/* 8033BF90 7C 94 E3 A6 */ mtspr 0x394, r4 -/* 8033BF94 80 83 01 B8 */ lwz r4, 0x1b8(r3) -/* 8033BF98 7C 95 E3 A6 */ mtspr 0x395, r4 -/* 8033BF9C 80 83 01 BC */ lwz r4, 0x1bc(r3) -/* 8033BFA0 7C 96 E3 A6 */ mtspr 0x396, r4 -/* 8033BFA4 80 83 01 C0 */ lwz r4, 0x1c0(r3) -/* 8033BFA8 7C 97 E3 A6 */ mtspr 0x397, r4 -/* 8033BFAC 80 83 00 80 */ lwz r4, 0x80(r3) -/* 8033BFB0 7C 8F F1 20 */ mtcrf 0xff, r4 -/* 8033BFB4 80 83 00 84 */ lwz r4, 0x84(r3) -/* 8033BFB8 7C 88 03 A6 */ mtlr r4 -/* 8033BFBC 80 83 00 88 */ lwz r4, 0x88(r3) -/* 8033BFC0 7C 89 03 A6 */ mtctr r4 -/* 8033BFC4 80 83 00 8C */ lwz r4, 0x8c(r3) -/* 8033BFC8 7C 81 03 A6 */ mtxer r4 -/* 8033BFCC 7C 80 00 A6 */ mfmsr r4 -/* 8033BFD0 54 84 04 5E */ rlwinm r4, r4, 0, 0x11, 0xf -/* 8033BFD4 54 84 07 FA */ rlwinm r4, r4, 0, 0x1f, 0x1d -/* 8033BFD8 7C 80 01 24 */ mtmsr r4 -/* 8033BFDC 80 83 01 98 */ lwz r4, 0x198(r3) -/* 8033BFE0 7C 9A 03 A6 */ mtspr 0x1a, r4 -/* 8033BFE4 80 83 01 9C */ lwz r4, 0x19c(r3) -/* 8033BFE8 7C 9B 03 A6 */ mtspr 0x1b, r4 -/* 8033BFEC 80 83 00 10 */ lwz r4, 0x10(r3) -/* 8033BFF0 80 63 00 0C */ lwz r3, 0xc(r3) -/* 8033BFF4 4C 00 00 64 */ rfi diff --git a/asm/dolphin/os/OSContext/OSSaveContext.s b/asm/dolphin/os/OSContext/OSSaveContext.s deleted file mode 100644 index ab6ec61d33..0000000000 --- a/asm/dolphin/os/OSContext/OSSaveContext.s +++ /dev/null @@ -1,33 +0,0 @@ -lbl_8033BEA0: -/* 8033BEA0 BD A3 00 34 */ stmw r13, 0x34(r3) -/* 8033BEA4 7C 11 E2 A6 */ mfspr r0, 0x391 -/* 8033BEA8 90 03 01 A8 */ stw r0, 0x1a8(r3) -/* 8033BEAC 7C 12 E2 A6 */ mfspr r0, 0x392 -/* 8033BEB0 90 03 01 AC */ stw r0, 0x1ac(r3) -/* 8033BEB4 7C 13 E2 A6 */ mfspr r0, 0x393 -/* 8033BEB8 90 03 01 B0 */ stw r0, 0x1b0(r3) -/* 8033BEBC 7C 14 E2 A6 */ mfspr r0, 0x394 -/* 8033BEC0 90 03 01 B4 */ stw r0, 0x1b4(r3) -/* 8033BEC4 7C 15 E2 A6 */ mfspr r0, 0x395 -/* 8033BEC8 90 03 01 B8 */ stw r0, 0x1b8(r3) -/* 8033BECC 7C 16 E2 A6 */ mfspr r0, 0x396 -/* 8033BED0 90 03 01 BC */ stw r0, 0x1bc(r3) -/* 8033BED4 7C 17 E2 A6 */ mfspr r0, 0x397 -/* 8033BED8 90 03 01 C0 */ stw r0, 0x1c0(r3) -/* 8033BEDC 7C 00 00 26 */ mfcr r0 -/* 8033BEE0 90 03 00 80 */ stw r0, 0x80(r3) -/* 8033BEE4 7C 08 02 A6 */ mflr r0 -/* 8033BEE8 90 03 00 84 */ stw r0, 0x84(r3) -/* 8033BEEC 90 03 01 98 */ stw r0, 0x198(r3) -/* 8033BEF0 7C 00 00 A6 */ mfmsr r0 -/* 8033BEF4 90 03 01 9C */ stw r0, 0x19c(r3) -/* 8033BEF8 7C 09 02 A6 */ mfctr r0 -/* 8033BEFC 90 03 00 88 */ stw r0, 0x88(r3) -/* 8033BF00 7C 01 02 A6 */ mfxer r0 -/* 8033BF04 90 03 00 8C */ stw r0, 0x8c(r3) -/* 8033BF08 90 23 00 04 */ stw r1, 4(r3) -/* 8033BF0C 90 43 00 08 */ stw r2, 8(r3) -/* 8033BF10 38 00 00 01 */ li r0, 1 -/* 8033BF14 90 03 00 0C */ stw r0, 0xc(r3) -/* 8033BF18 38 60 00 00 */ li r3, 0 -/* 8033BF1C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSContext/OSSaveFPUContext.s b/asm/dolphin/os/OSContext/OSSaveFPUContext.s deleted file mode 100644 index 085bd15858..0000000000 --- a/asm/dolphin/os/OSContext/OSSaveFPUContext.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_8033BE30: -/* 8033BE30 38 A3 00 00 */ addi r5, r3, 0 -/* 8033BE34 4B FF FE D4 */ b __OSSaveFPUContext diff --git a/asm/dolphin/os/OSContext/OSSetCurrentContext.s b/asm/dolphin/os/OSContext/OSSetCurrentContext.s deleted file mode 100644 index 4cffa1c1dd..0000000000 --- a/asm/dolphin/os/OSContext/OSSetCurrentContext.s +++ /dev/null @@ -1,25 +0,0 @@ -lbl_8033BE38: -/* 8033BE38 3C 80 80 00 */ lis r4, 0x8000 /* 0x800000D4@ha */ -/* 8033BE3C 90 64 00 D4 */ stw r3, 0x00D4(r4) /* 0x800000D4@l */ -/* 8033BE40 54 65 00 BE */ clrlwi r5, r3, 2 -/* 8033BE44 90 A4 00 C0 */ stw r5, 0xc0(r4) -/* 8033BE48 80 A4 00 D8 */ lwz r5, 0xd8(r4) -/* 8033BE4C 7C 05 18 00 */ cmpw r5, r3 -/* 8033BE50 40 82 00 20 */ bne lbl_8033BE70 -/* 8033BE54 80 C3 01 9C */ lwz r6, 0x19c(r3) -/* 8033BE58 60 C6 20 00 */ ori r6, r6, 0x2000 -/* 8033BE5C 90 C3 01 9C */ stw r6, 0x19c(r3) -/* 8033BE60 7C C0 00 A6 */ mfmsr r6 -/* 8033BE64 60 C6 00 02 */ ori r6, r6, 2 -/* 8033BE68 7C C0 01 24 */ mtmsr r6 -/* 8033BE6C 4E 80 00 20 */ blr -lbl_8033BE70: -/* 8033BE70 80 C3 01 9C */ lwz r6, 0x19c(r3) -/* 8033BE74 54 C6 04 E2 */ rlwinm r6, r6, 0, 0x13, 0x11 -/* 8033BE78 90 C3 01 9C */ stw r6, 0x19c(r3) -/* 8033BE7C 7C C0 00 A6 */ mfmsr r6 -/* 8033BE80 54 C6 04 E2 */ rlwinm r6, r6, 0, 0x13, 0x11 -/* 8033BE84 60 C6 00 02 */ ori r6, r6, 2 -/* 8033BE88 7C C0 01 24 */ mtmsr r6 -/* 8033BE8C 4C 00 01 2C */ isync -/* 8033BE90 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSContext/OSSwitchFPUContext.s b/asm/dolphin/os/OSContext/OSSwitchFPUContext.s deleted file mode 100644 index 6f70f47d59..0000000000 --- a/asm/dolphin/os/OSContext/OSSwitchFPUContext.s +++ /dev/null @@ -1,36 +0,0 @@ -lbl_8033C388: -/* 8033C388 7C A0 00 A6 */ mfmsr r5 -/* 8033C38C 60 A5 20 00 */ ori r5, r5, 0x2000 -/* 8033C390 7C A0 01 24 */ mtmsr r5 -/* 8033C394 4C 00 01 2C */ isync -/* 8033C398 80 A4 01 9C */ lwz r5, 0x19c(r4) -/* 8033C39C 60 A5 20 00 */ ori r5, r5, 0x2000 -/* 8033C3A0 7C BB 03 A6 */ mtspr 0x1b, r5 -/* 8033C3A4 3C 60 80 00 */ lis r3, 0x8000 /* 0x800000D8@ha */ -/* 8033C3A8 80 A3 00 D8 */ lwz r5, 0x00D8(r3) /* 0x800000D8@l */ -/* 8033C3AC 90 83 00 D8 */ stw r4, 0xd8(r3) -/* 8033C3B0 7C 05 20 00 */ cmpw r5, r4 -/* 8033C3B4 41 82 00 14 */ beq lbl_8033C3C8 -/* 8033C3B8 2C 05 00 00 */ cmpwi r5, 0 -/* 8033C3BC 41 82 00 08 */ beq lbl_8033C3C4 -/* 8033C3C0 4B FF F9 49 */ bl __OSSaveFPUContext -lbl_8033C3C4: -/* 8033C3C4 4B FF F8 21 */ bl __OSLoadFPUContext -lbl_8033C3C8: -/* 8033C3C8 80 64 00 80 */ lwz r3, 0x80(r4) -/* 8033C3CC 7C 6F F1 20 */ mtcrf 0xff, r3 -/* 8033C3D0 80 64 00 84 */ lwz r3, 0x84(r4) -/* 8033C3D4 7C 68 03 A6 */ mtlr r3 -/* 8033C3D8 80 64 01 98 */ lwz r3, 0x198(r4) -/* 8033C3DC 7C 7A 03 A6 */ mtspr 0x1a, r3 -/* 8033C3E0 80 64 00 88 */ lwz r3, 0x88(r4) -/* 8033C3E4 7C 69 03 A6 */ mtctr r3 -/* 8033C3E8 80 64 00 8C */ lwz r3, 0x8c(r4) -/* 8033C3EC 7C 61 03 A6 */ mtxer r3 -/* 8033C3F0 A0 64 01 A2 */ lhz r3, 0x1a2(r4) -/* 8033C3F4 54 63 07 FA */ rlwinm r3, r3, 0, 0x1f, 0x1d -/* 8033C3F8 B0 64 01 A2 */ sth r3, 0x1a2(r4) -/* 8033C3FC 80 A4 00 14 */ lwz r5, 0x14(r4) -/* 8033C400 80 64 00 0C */ lwz r3, 0xc(r4) -/* 8033C404 80 84 00 10 */ lwz r4, 0x10(r4) -/* 8033C408 4C 00 00 64 */ rfi diff --git a/asm/dolphin/os/OSContext/__OSLoadFPUContext.s b/asm/dolphin/os/OSContext/__OSLoadFPUContext.s deleted file mode 100644 index 31d1bcf6c4..0000000000 --- a/asm/dolphin/os/OSContext/__OSLoadFPUContext.s +++ /dev/null @@ -1,76 +0,0 @@ -lbl_8033BBE4: -/* 8033BBE4 A0 A4 01 A2 */ lhz r5, 0x1a2(r4) -/* 8033BBE8 54 A5 07 FF */ clrlwi. r5, r5, 0x1f -/* 8033BBEC 41 82 01 18 */ beq lbl_8033BD04 -/* 8033BBF0 C8 04 01 90 */ lfd f0, 0x190(r4) -/* 8033BBF4 FD FE 05 8E */ mtfsf 0xff, f0 -/* 8033BBF8 7C B8 E2 A6 */ mfspr r5, 0x398 -/* 8033BBFC 54 A5 1F FF */ rlwinm. r5, r5, 3, 0x1f, 0x1f -/* 8033BC00 41 82 00 84 */ beq lbl_8033BC84 -/* 8033BC04 E0 04 01 C8 */ psq_l f0, 456(r4), 0, 0 /* qr0 */ -/* 8033BC08 E0 24 01 D0 */ psq_l f1, 464(r4), 0, 0 /* qr0 */ -/* 8033BC0C E0 44 01 D8 */ psq_l f2, 472(r4), 0, 0 /* qr0 */ -/* 8033BC10 E0 64 01 E0 */ psq_l f3, 480(r4), 0, 0 /* qr0 */ -/* 8033BC14 E0 84 01 E8 */ psq_l f4, 488(r4), 0, 0 /* qr0 */ -/* 8033BC18 E0 A4 01 F0 */ psq_l f5, 496(r4), 0, 0 /* qr0 */ -/* 8033BC1C E0 C4 01 F8 */ psq_l f6, 504(r4), 0, 0 /* qr0 */ -/* 8033BC20 E0 E4 02 00 */ psq_l f7, 512(r4), 0, 0 /* qr0 */ -/* 8033BC24 E1 04 02 08 */ psq_l f8, 520(r4), 0, 0 /* qr0 */ -/* 8033BC28 E1 24 02 10 */ psq_l f9, 528(r4), 0, 0 /* qr0 */ -/* 8033BC2C E1 44 02 18 */ psq_l f10, 536(r4), 0, 0 /* qr0 */ -/* 8033BC30 E1 64 02 20 */ psq_l f11, 544(r4), 0, 0 /* qr0 */ -/* 8033BC34 E1 84 02 28 */ psq_l f12, 552(r4), 0, 0 /* qr0 */ -/* 8033BC38 E1 A4 02 30 */ psq_l f13, 560(r4), 0, 0 /* qr0 */ -/* 8033BC3C E1 C4 02 38 */ psq_l f14, 568(r4), 0, 0 /* qr0 */ -/* 8033BC40 E1 E4 02 40 */ psq_l f15, 576(r4), 0, 0 /* qr0 */ -/* 8033BC44 E2 04 02 48 */ psq_l f16, 584(r4), 0, 0 /* qr0 */ -/* 8033BC48 E2 24 02 50 */ psq_l f17, 592(r4), 0, 0 /* qr0 */ -/* 8033BC4C E2 44 02 58 */ psq_l f18, 600(r4), 0, 0 /* qr0 */ -/* 8033BC50 E2 64 02 60 */ psq_l f19, 608(r4), 0, 0 /* qr0 */ -/* 8033BC54 E2 84 02 68 */ psq_l f20, 616(r4), 0, 0 /* qr0 */ -/* 8033BC58 E2 A4 02 70 */ psq_l f21, 624(r4), 0, 0 /* qr0 */ -/* 8033BC5C E2 C4 02 78 */ psq_l f22, 632(r4), 0, 0 /* qr0 */ -/* 8033BC60 E2 E4 02 80 */ psq_l f23, 640(r4), 0, 0 /* qr0 */ -/* 8033BC64 E3 04 02 88 */ psq_l f24, 648(r4), 0, 0 /* qr0 */ -/* 8033BC68 E3 24 02 90 */ psq_l f25, 656(r4), 0, 0 /* qr0 */ -/* 8033BC6C E3 44 02 98 */ psq_l f26, 664(r4), 0, 0 /* qr0 */ -/* 8033BC70 E3 64 02 A0 */ psq_l f27, 672(r4), 0, 0 /* qr0 */ -/* 8033BC74 E3 84 02 A8 */ psq_l f28, 680(r4), 0, 0 /* qr0 */ -/* 8033BC78 E3 A4 02 B0 */ psq_l f29, 688(r4), 0, 0 /* qr0 */ -/* 8033BC7C E3 C4 02 B8 */ psq_l f30, 696(r4), 0, 0 /* qr0 */ -/* 8033BC80 E3 E4 02 C0 */ psq_l f31, 704(r4), 0, 0 /* qr0 */ -lbl_8033BC84: -/* 8033BC84 C8 04 00 90 */ lfd f0, 0x90(r4) -/* 8033BC88 C8 24 00 98 */ lfd f1, 0x98(r4) -/* 8033BC8C C8 44 00 A0 */ lfd f2, 0xa0(r4) -/* 8033BC90 C8 64 00 A8 */ lfd f3, 0xa8(r4) -/* 8033BC94 C8 84 00 B0 */ lfd f4, 0xb0(r4) -/* 8033BC98 C8 A4 00 B8 */ lfd f5, 0xb8(r4) -/* 8033BC9C C8 C4 00 C0 */ lfd f6, 0xc0(r4) -/* 8033BCA0 C8 E4 00 C8 */ lfd f7, 0xc8(r4) -/* 8033BCA4 C9 04 00 D0 */ lfd f8, 0xd0(r4) -/* 8033BCA8 C9 24 00 D8 */ lfd f9, 0xd8(r4) -/* 8033BCAC C9 44 00 E0 */ lfd f10, 0xe0(r4) -/* 8033BCB0 C9 64 00 E8 */ lfd f11, 0xe8(r4) -/* 8033BCB4 C9 84 00 F0 */ lfd f12, 0xf0(r4) -/* 8033BCB8 C9 A4 00 F8 */ lfd f13, 0xf8(r4) -/* 8033BCBC C9 C4 01 00 */ lfd f14, 0x100(r4) -/* 8033BCC0 C9 E4 01 08 */ lfd f15, 0x108(r4) -/* 8033BCC4 CA 04 01 10 */ lfd f16, 0x110(r4) -/* 8033BCC8 CA 24 01 18 */ lfd f17, 0x118(r4) -/* 8033BCCC CA 44 01 20 */ lfd f18, 0x120(r4) -/* 8033BCD0 CA 64 01 28 */ lfd f19, 0x128(r4) -/* 8033BCD4 CA 84 01 30 */ lfd f20, 0x130(r4) -/* 8033BCD8 CA A4 01 38 */ lfd f21, 0x138(r4) -/* 8033BCDC CA C4 01 40 */ lfd f22, 0x140(r4) -/* 8033BCE0 CA E4 01 48 */ lfd f23, 0x148(r4) -/* 8033BCE4 CB 04 01 50 */ lfd f24, 0x150(r4) -/* 8033BCE8 CB 24 01 58 */ lfd f25, 0x158(r4) -/* 8033BCEC CB 44 01 60 */ lfd f26, 0x160(r4) -/* 8033BCF0 CB 64 01 68 */ lfd f27, 0x168(r4) -/* 8033BCF4 CB 84 01 70 */ lfd f28, 0x170(r4) -/* 8033BCF8 CB A4 01 78 */ lfd f29, 0x178(r4) -/* 8033BCFC CB C4 01 80 */ lfd f30, 0x180(r4) -/* 8033BD00 CB E4 01 88 */ lfd f31, 0x188(r4) -lbl_8033BD04: -/* 8033BD04 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSContext/__OSSaveFPUContext.s b/asm/dolphin/os/OSContext/__OSSaveFPUContext.s deleted file mode 100644 index e2eedc40cc..0000000000 --- a/asm/dolphin/os/OSContext/__OSSaveFPUContext.s +++ /dev/null @@ -1,76 +0,0 @@ -lbl_8033BD08: -/* 8033BD08 A0 65 01 A2 */ lhz r3, 0x1a2(r5) -/* 8033BD0C 60 63 00 01 */ ori r3, r3, 1 -/* 8033BD10 B0 65 01 A2 */ sth r3, 0x1a2(r5) -/* 8033BD14 D8 05 00 90 */ stfd f0, 0x90(r5) -/* 8033BD18 D8 25 00 98 */ stfd f1, 0x98(r5) -/* 8033BD1C D8 45 00 A0 */ stfd f2, 0xa0(r5) -/* 8033BD20 D8 65 00 A8 */ stfd f3, 0xa8(r5) -/* 8033BD24 D8 85 00 B0 */ stfd f4, 0xb0(r5) -/* 8033BD28 D8 A5 00 B8 */ stfd f5, 0xb8(r5) -/* 8033BD2C D8 C5 00 C0 */ stfd f6, 0xc0(r5) -/* 8033BD30 D8 E5 00 C8 */ stfd f7, 0xc8(r5) -/* 8033BD34 D9 05 00 D0 */ stfd f8, 0xd0(r5) -/* 8033BD38 D9 25 00 D8 */ stfd f9, 0xd8(r5) -/* 8033BD3C D9 45 00 E0 */ stfd f10, 0xe0(r5) -/* 8033BD40 D9 65 00 E8 */ stfd f11, 0xe8(r5) -/* 8033BD44 D9 85 00 F0 */ stfd f12, 0xf0(r5) -/* 8033BD48 D9 A5 00 F8 */ stfd f13, 0xf8(r5) -/* 8033BD4C D9 C5 01 00 */ stfd f14, 0x100(r5) -/* 8033BD50 D9 E5 01 08 */ stfd f15, 0x108(r5) -/* 8033BD54 DA 05 01 10 */ stfd f16, 0x110(r5) -/* 8033BD58 DA 25 01 18 */ stfd f17, 0x118(r5) -/* 8033BD5C DA 45 01 20 */ stfd f18, 0x120(r5) -/* 8033BD60 DA 65 01 28 */ stfd f19, 0x128(r5) -/* 8033BD64 DA 85 01 30 */ stfd f20, 0x130(r5) -/* 8033BD68 DA A5 01 38 */ stfd f21, 0x138(r5) -/* 8033BD6C DA C5 01 40 */ stfd f22, 0x140(r5) -/* 8033BD70 DA E5 01 48 */ stfd f23, 0x148(r5) -/* 8033BD74 DB 05 01 50 */ stfd f24, 0x150(r5) -/* 8033BD78 DB 25 01 58 */ stfd f25, 0x158(r5) -/* 8033BD7C DB 45 01 60 */ stfd f26, 0x160(r5) -/* 8033BD80 DB 65 01 68 */ stfd f27, 0x168(r5) -/* 8033BD84 DB 85 01 70 */ stfd f28, 0x170(r5) -/* 8033BD88 DB A5 01 78 */ stfd f29, 0x178(r5) -/* 8033BD8C DB C5 01 80 */ stfd f30, 0x180(r5) -/* 8033BD90 DB E5 01 88 */ stfd f31, 0x188(r5) -/* 8033BD94 FC 00 04 8E */ mffs f0 -/* 8033BD98 D8 05 01 90 */ stfd f0, 0x190(r5) -/* 8033BD9C C8 05 00 90 */ lfd f0, 0x90(r5) -/* 8033BDA0 7C 78 E2 A6 */ mfspr r3, 0x398 -/* 8033BDA4 54 63 1F FF */ rlwinm. r3, r3, 3, 0x1f, 0x1f -/* 8033BDA8 41 82 00 84 */ beq lbl_8033BE2C -/* 8033BDAC F0 05 01 C8 */ psq_st f0, 456(r5), 0, 0 /* qr0 */ -/* 8033BDB0 F0 25 01 D0 */ psq_st f1, 464(r5), 0, 0 /* qr0 */ -/* 8033BDB4 F0 45 01 D8 */ psq_st f2, 472(r5), 0, 0 /* qr0 */ -/* 8033BDB8 F0 65 01 E0 */ psq_st f3, 480(r5), 0, 0 /* qr0 */ -/* 8033BDBC F0 85 01 E8 */ psq_st f4, 488(r5), 0, 0 /* qr0 */ -/* 8033BDC0 F0 A5 01 F0 */ psq_st f5, 496(r5), 0, 0 /* qr0 */ -/* 8033BDC4 F0 C5 01 F8 */ psq_st f6, 504(r5), 0, 0 /* qr0 */ -/* 8033BDC8 F0 E5 02 00 */ psq_st f7, 512(r5), 0, 0 /* qr0 */ -/* 8033BDCC F1 05 02 08 */ psq_st f8, 520(r5), 0, 0 /* qr0 */ -/* 8033BDD0 F1 25 02 10 */ psq_st f9, 528(r5), 0, 0 /* qr0 */ -/* 8033BDD4 F1 45 02 18 */ psq_st f10, 536(r5), 0, 0 /* qr0 */ -/* 8033BDD8 F1 65 02 20 */ psq_st f11, 544(r5), 0, 0 /* qr0 */ -/* 8033BDDC F1 85 02 28 */ psq_st f12, 552(r5), 0, 0 /* qr0 */ -/* 8033BDE0 F1 A5 02 30 */ psq_st f13, 560(r5), 0, 0 /* qr0 */ -/* 8033BDE4 F1 C5 02 38 */ psq_st f14, 568(r5), 0, 0 /* qr0 */ -/* 8033BDE8 F1 E5 02 40 */ psq_st f15, 576(r5), 0, 0 /* qr0 */ -/* 8033BDEC F2 05 02 48 */ psq_st f16, 584(r5), 0, 0 /* qr0 */ -/* 8033BDF0 F2 25 02 50 */ psq_st f17, 592(r5), 0, 0 /* qr0 */ -/* 8033BDF4 F2 45 02 58 */ psq_st f18, 600(r5), 0, 0 /* qr0 */ -/* 8033BDF8 F2 65 02 60 */ psq_st f19, 608(r5), 0, 0 /* qr0 */ -/* 8033BDFC F2 85 02 68 */ psq_st f20, 616(r5), 0, 0 /* qr0 */ -/* 8033BE00 F2 A5 02 70 */ psq_st f21, 624(r5), 0, 0 /* qr0 */ -/* 8033BE04 F2 C5 02 78 */ psq_st f22, 632(r5), 0, 0 /* qr0 */ -/* 8033BE08 F2 E5 02 80 */ psq_st f23, 640(r5), 0, 0 /* qr0 */ -/* 8033BE0C F3 05 02 88 */ psq_st f24, 648(r5), 0, 0 /* qr0 */ -/* 8033BE10 F3 25 02 90 */ psq_st f25, 656(r5), 0, 0 /* qr0 */ -/* 8033BE14 F3 45 02 98 */ psq_st f26, 664(r5), 0, 0 /* qr0 */ -/* 8033BE18 F3 65 02 A0 */ psq_st f27, 672(r5), 0, 0 /* qr0 */ -/* 8033BE1C F3 85 02 A8 */ psq_st f28, 680(r5), 0, 0 /* qr0 */ -/* 8033BE20 F3 A5 02 B0 */ psq_st f29, 688(r5), 0, 0 /* qr0 */ -/* 8033BE24 F3 C5 02 B8 */ psq_st f30, 696(r5), 0, 0 /* qr0 */ -/* 8033BE28 F3 E5 02 C0 */ psq_st f31, 704(r5), 0, 0 /* qr0 */ -lbl_8033BE2C: -/* 8033BE2C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSError/__OSUnhandledException.s b/asm/dolphin/os/OSError/__OSUnhandledException.s index 34cf0d4bb4..82beede028 100644 --- a/asm/dolphin/os/OSError/__OSUnhandledException.s +++ b/asm/dolphin/os/OSError/__OSUnhandledException.s @@ -186,7 +186,7 @@ lbl_8033CA4C: /* 8033CA54 4C C6 31 82 */ crclr 6 /* 8033CA58 80 AD 90 F4 */ lwz r5, __OSLastInterruptSrr0(r13) /* 8033CA5C 80 ED 91 00 */ lwz r7, __OSLastInterruptTime(r13) -/* 8033CA60 81 0D 91 04 */ lwz r8, data_80451684(r13) +/* 8033CA60 81 0D 91 04 */ lwz r8, __OSLastInterruptTime+0x4(r13) /* 8033CA64 4B CC A0 59 */ bl OSReport /* 8033CA68 4B FF D2 99 */ bl PPCHalt /* 8033CA6C BA C1 00 18 */ lmw r22, 0x18(r1) diff --git a/asm/dolphin/os/OSExec/Callback.s b/asm/dolphin/os/OSExec/Callback.s deleted file mode 100644 index cd7d3312bf..0000000000 --- a/asm/dolphin/os/OSExec/Callback.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_8033CCB0: -/* 8033CCB0 38 00 00 01 */ li r0, 1 -/* 8033CCB4 90 0D 90 D8 */ stw r0, Prepared(r13) -/* 8033CCB8 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSExec/Run.s b/asm/dolphin/os/OSExec/Run.s deleted file mode 100644 index b307434518..0000000000 --- a/asm/dolphin/os/OSExec/Run.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_8033CC08: -/* 8033CC08 7C 08 02 A6 */ mflr r0 -/* 8033CC0C 90 01 00 04 */ stw r0, 4(r1) -/* 8033CC10 94 21 FF E8 */ stwu r1, -0x18(r1) -/* 8033CC14 93 E1 00 14 */ stw r31, 0x14(r1) -/* 8033CC18 7C 7F 1B 78 */ mr r31, r3 -/* 8033CC1C 4B FF EA A9 */ bl ICFlashInvalidate -/* 8033CC20 7C 00 04 AC */ sync -/* 8033CC24 4C 00 01 2C */ isync -/* 8033CC28 7F E8 03 A6 */ mtlr r31 -/* 8033CC2C 4E 80 00 20 */ blr -/* 8033CC30 80 01 00 1C */ lwz r0, 0x1c(r1) -/* 8033CC34 83 E1 00 14 */ lwz r31, 0x14(r1) -/* 8033CC38 38 21 00 18 */ addi r1, r1, 0x18 -/* 8033CC3C 7C 08 03 A6 */ mtlr r0 -/* 8033CC40 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSInterrupt/ExternalInterruptHandler.s b/asm/dolphin/os/OSInterrupt/ExternalInterruptHandler.s deleted file mode 100644 index 4eb75782ca..0000000000 --- a/asm/dolphin/os/OSInterrupt/ExternalInterruptHandler.s +++ /dev/null @@ -1,21 +0,0 @@ -lbl_8033DF10: -/* 8033DF10 90 04 00 00 */ stw r0, 0(r4) -/* 8033DF14 90 24 00 04 */ stw r1, 4(r4) -/* 8033DF18 90 44 00 08 */ stw r2, 8(r4) -/* 8033DF1C BC C4 00 18 */ stmw r6, 0x18(r4) -/* 8033DF20 7C 11 E2 A6 */ mfspr r0, 0x391 -/* 8033DF24 90 04 01 A8 */ stw r0, 0x1a8(r4) -/* 8033DF28 7C 12 E2 A6 */ mfspr r0, 0x392 -/* 8033DF2C 90 04 01 AC */ stw r0, 0x1ac(r4) -/* 8033DF30 7C 13 E2 A6 */ mfspr r0, 0x393 -/* 8033DF34 90 04 01 B0 */ stw r0, 0x1b0(r4) -/* 8033DF38 7C 14 E2 A6 */ mfspr r0, 0x394 -/* 8033DF3C 90 04 01 B4 */ stw r0, 0x1b4(r4) -/* 8033DF40 7C 15 E2 A6 */ mfspr r0, 0x395 -/* 8033DF44 90 04 01 B8 */ stw r0, 0x1b8(r4) -/* 8033DF48 7C 16 E2 A6 */ mfspr r0, 0x396 -/* 8033DF4C 90 04 01 BC */ stw r0, 0x1bc(r4) -/* 8033DF50 7C 17 E2 A6 */ mfspr r0, 0x397 -/* 8033DF54 90 04 01 C0 */ stw r0, 0x1c0(r4) -/* 8033DF58 94 21 FF F8 */ stwu r1, -8(r1) -/* 8033DF5C 4B FF FC 70 */ b __OSDispatchInterrupt diff --git a/asm/dolphin/os/OSInterrupt/OSDisableInterrupts.s b/asm/dolphin/os/OSInterrupt/OSDisableInterrupts.s deleted file mode 100644 index fdc8a7f532..0000000000 --- a/asm/dolphin/os/OSInterrupt/OSDisableInterrupts.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_8033D6F4: -/* 8033D6F4 7C 60 00 A6 */ mfmsr r3 -/* 8033D6F8 54 64 04 5E */ rlwinm r4, r3, 0, 0x11, 0xf -/* 8033D6FC 7C 80 01 24 */ mtmsr r4 diff --git a/asm/dolphin/os/OSInterrupt/OSEnableInterrupts.s b/asm/dolphin/os/OSInterrupt/OSEnableInterrupts.s deleted file mode 100644 index b0ce87c01c..0000000000 --- a/asm/dolphin/os/OSInterrupt/OSEnableInterrupts.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_8033D708: -/* 8033D708 7C 60 00 A6 */ mfmsr r3 -/* 8033D70C 60 64 80 00 */ ori r4, r3, 0x8000 -/* 8033D710 7C 80 01 24 */ mtmsr r4 -/* 8033D714 54 63 8F FE */ rlwinm r3, r3, 0x11, 0x1f, 0x1f -/* 8033D718 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSInterrupt/OSRestoreInterrupts.s b/asm/dolphin/os/OSInterrupt/OSRestoreInterrupts.s deleted file mode 100644 index 453a38bce0..0000000000 --- a/asm/dolphin/os/OSInterrupt/OSRestoreInterrupts.s +++ /dev/null @@ -1,12 +0,0 @@ -lbl_8033D71C: -/* 8033D71C 2C 03 00 00 */ cmpwi r3, 0 -/* 8033D720 7C 80 00 A6 */ mfmsr r4 -/* 8033D724 41 82 00 0C */ beq lbl_8033D730 -/* 8033D728 60 85 80 00 */ ori r5, r4, 0x8000 -/* 8033D72C 48 00 00 08 */ b lbl_8033D734 -lbl_8033D730: -/* 8033D730 54 85 04 5E */ rlwinm r5, r4, 0, 0x11, 0xf -lbl_8033D734: -/* 8033D734 7C A0 01 24 */ mtmsr r5 -/* 8033D738 54 83 8F FE */ rlwinm r3, r4, 0x11, 0x1f, 0x1f -/* 8033D73C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSInterrupt/__OSDispatchInterrupt.s b/asm/dolphin/os/OSInterrupt/__OSDispatchInterrupt.s index a288371fc2..57410c3a73 100644 --- a/asm/dolphin/os/OSInterrupt/__OSDispatchInterrupt.s +++ b/asm/dolphin/os/OSInterrupt/__OSDispatchInterrupt.s @@ -218,7 +218,7 @@ lbl_8033DE90: /* 8033DEA8 40 81 00 1C */ ble lbl_8033DEC4 /* 8033DEAC B3 AD 90 F8 */ sth r29, __OSLastInterrupt(r13) /* 8033DEB0 48 00 48 4D */ bl OSGetTime -/* 8033DEB4 90 8D 91 04 */ stw r4, data_80451684(r13) +/* 8033DEB4 90 8D 91 04 */ stw r4, __OSLastInterruptTime+0x4(r13) /* 8033DEB8 90 6D 91 00 */ stw r3, __OSLastInterruptTime(r13) /* 8033DEBC 80 1E 01 98 */ lwz r0, 0x198(r30) /* 8033DEC0 90 0D 90 F4 */ stw r0, __OSLastInterruptSrr0(r13) diff --git a/asm/dolphin/os/OSInterrupt/__OSGetInterruptHandler.s b/asm/dolphin/os/OSInterrupt/__OSGetInterruptHandler.s deleted file mode 100644 index b64dc0bd34..0000000000 --- a/asm/dolphin/os/OSInterrupt/__OSGetInterruptHandler.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_8033D75C: -/* 8033D75C 7C 60 07 34 */ extsh r0, r3 -/* 8033D760 80 6D 90 F0 */ lwz r3, InterruptHandlerTable(r13) -/* 8033D764 54 00 10 3A */ slwi r0, r0, 2 -/* 8033D768 7C 63 00 2E */ lwzx r3, r3, r0 -/* 8033D76C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSInterrupt/__OSSetInterruptHandler.s b/asm/dolphin/os/OSInterrupt/__OSSetInterruptHandler.s deleted file mode 100644 index 788410d766..0000000000 --- a/asm/dolphin/os/OSInterrupt/__OSSetInterruptHandler.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_8033D740: -/* 8033D740 7C 60 07 34 */ extsh r0, r3 -/* 8033D744 80 6D 90 F0 */ lwz r3, InterruptHandlerTable(r13) -/* 8033D748 54 00 10 3A */ slwi r0, r0, 2 -/* 8033D74C 7C A3 02 14 */ add r5, r3, r0 -/* 8033D750 80 65 00 00 */ lwz r3, 0(r5) -/* 8033D754 90 85 00 00 */ stw r4, 0(r5) -/* 8033D758 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSInterrupt/__RAS_OSDisableInterrupts_end.s b/asm/dolphin/os/OSInterrupt/__RAS_OSDisableInterrupts_end.s deleted file mode 100644 index 0fcf5ca47a..0000000000 --- a/asm/dolphin/os/OSInterrupt/__RAS_OSDisableInterrupts_end.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_8033D700: -/* 8033D700 54 63 8F FE */ rlwinm r3, r3, 0x11, 0x1f, 0x1f -/* 8033D704 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSLink/OSSetStringTable.s b/asm/dolphin/os/OSLink/OSSetStringTable.s deleted file mode 100644 index cc6d13dc11..0000000000 --- a/asm/dolphin/os/OSLink/OSSetStringTable.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_8033DF68: -/* 8033DF68 3C 80 80 00 */ lis r4, 0x8000 /* 0x800030D0@ha */ -/* 8033DF6C 90 64 30 D0 */ stw r3, 0x30D0(r4) /* 0x800030D0@l */ -/* 8033DF70 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSLink/__OSModuleInit.s b/asm/dolphin/os/OSLink/__OSModuleInit.s deleted file mode 100644 index 6933d55f1f..0000000000 --- a/asm/dolphin/os/OSLink/__OSModuleInit.s +++ /dev/null @@ -1,7 +0,0 @@ -lbl_8033E97C: -/* 8033E97C 3C 80 80 00 */ lis r4, 0x8000 /* 0x800030CC@ha */ -/* 8033E980 38 00 00 00 */ li r0, 0 -/* 8033E984 90 04 30 CC */ stw r0, 0x30CC(r4) /* 0x800030CC@l */ -/* 8033E988 90 04 30 C8 */ stw r0, 0x30c8(r4) -/* 8033E98C 90 04 30 D0 */ stw r0, 0x30d0(r4) -/* 8033E990 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSMemory/Config24MB.s b/asm/dolphin/os/OSMemory/Config24MB.s deleted file mode 100644 index 4655295d35..0000000000 --- a/asm/dolphin/os/OSMemory/Config24MB.s +++ /dev/null @@ -1,33 +0,0 @@ -lbl_8033EDD8: -/* 8033EDD8 38 E0 00 00 */ li r7, 0 -/* 8033EDDC 3C 80 00 00 */ lis r4, 0x0000 /* 0x00000002@ha */ -/* 8033EDE0 38 84 00 02 */ addi r4, r4, 0x0002 /* 0x00000002@l */ -/* 8033EDE4 3C 60 80 00 */ lis r3, 0x8000 /* 0x800001FF@ha */ -/* 8033EDE8 38 63 01 FF */ addi r3, r3, 0x01FF /* 0x800001FF@l */ -/* 8033EDEC 3C C0 01 00 */ lis r6, 0x0100 /* 0x01000002@ha */ -/* 8033EDF0 38 C6 00 02 */ addi r6, r6, 0x0002 /* 0x01000002@l */ -/* 8033EDF4 3C A0 81 00 */ lis r5, 0x8100 /* 0x810000FF@ha */ -/* 8033EDF8 38 A5 00 FF */ addi r5, r5, 0x00FF /* 0x810000FF@l */ -/* 8033EDFC 4C 00 01 2C */ isync -/* 8033EE00 7C F8 83 A6 */ mtdbatu 0, r7 -/* 8033EE04 7C 99 83 A6 */ mtdbatl 0, r4 -/* 8033EE08 7C 78 83 A6 */ mtdbatu 0, r3 -/* 8033EE0C 4C 00 01 2C */ isync -/* 8033EE10 7C F0 83 A6 */ mtibatu 0, r7 -/* 8033EE14 7C 91 83 A6 */ mtibatl 0, r4 -/* 8033EE18 7C 70 83 A6 */ mtibatu 0, r3 -/* 8033EE1C 4C 00 01 2C */ isync -/* 8033EE20 7C FC 83 A6 */ mtdbatu 2, r7 -/* 8033EE24 7C DD 83 A6 */ mtdbatl 2, r6 -/* 8033EE28 7C BC 83 A6 */ mtdbatu 2, r5 -/* 8033EE2C 4C 00 01 2C */ isync -/* 8033EE30 7C F4 83 A6 */ mtibatu 2, r7 -/* 8033EE34 7C D5 83 A6 */ mtibatl 2, r6 -/* 8033EE38 7C B4 83 A6 */ mtibatu 2, r5 -/* 8033EE3C 4C 00 01 2C */ isync -/* 8033EE40 7C 60 00 A6 */ mfmsr r3 -/* 8033EE44 60 63 00 30 */ ori r3, r3, 0x30 -/* 8033EE48 7C 7B 03 A6 */ mtspr 0x1b, r3 -/* 8033EE4C 7C 68 02 A6 */ mflr r3 -/* 8033EE50 7C 7A 03 A6 */ mtspr 0x1a, r3 -/* 8033EE54 4C 00 00 64 */ rfi diff --git a/asm/dolphin/os/OSMemory/Config48MB.s b/asm/dolphin/os/OSMemory/Config48MB.s deleted file mode 100644 index 8b62804522..0000000000 --- a/asm/dolphin/os/OSMemory/Config48MB.s +++ /dev/null @@ -1,33 +0,0 @@ -lbl_8033EE58: -/* 8033EE58 38 E0 00 00 */ li r7, 0 -/* 8033EE5C 3C 80 00 00 */ lis r4, 0x0000 /* 0x00000002@ha */ -/* 8033EE60 38 84 00 02 */ addi r4, r4, 0x0002 /* 0x00000002@l */ -/* 8033EE64 3C 60 80 00 */ lis r3, 0x8000 /* 0x800003FF@ha */ -/* 8033EE68 38 63 03 FF */ addi r3, r3, 0x03FF /* 0x800003FF@l */ -/* 8033EE6C 3C C0 02 00 */ lis r6, 0x0200 /* 0x02000002@ha */ -/* 8033EE70 38 C6 00 02 */ addi r6, r6, 0x0002 /* 0x02000002@l */ -/* 8033EE74 3C A0 82 00 */ lis r5, 0x8200 /* 0x820001FF@ha */ -/* 8033EE78 38 A5 01 FF */ addi r5, r5, 0x01FF /* 0x820001FF@l */ -/* 8033EE7C 4C 00 01 2C */ isync -/* 8033EE80 7C F8 83 A6 */ mtdbatu 0, r7 -/* 8033EE84 7C 99 83 A6 */ mtdbatl 0, r4 -/* 8033EE88 7C 78 83 A6 */ mtdbatu 0, r3 -/* 8033EE8C 4C 00 01 2C */ isync -/* 8033EE90 7C F0 83 A6 */ mtibatu 0, r7 -/* 8033EE94 7C 91 83 A6 */ mtibatl 0, r4 -/* 8033EE98 7C 70 83 A6 */ mtibatu 0, r3 -/* 8033EE9C 4C 00 01 2C */ isync -/* 8033EEA0 7C FC 83 A6 */ mtdbatu 2, r7 -/* 8033EEA4 7C DD 83 A6 */ mtdbatl 2, r6 -/* 8033EEA8 7C BC 83 A6 */ mtdbatu 2, r5 -/* 8033EEAC 4C 00 01 2C */ isync -/* 8033EEB0 7C F4 83 A6 */ mtibatu 2, r7 -/* 8033EEB4 7C D5 83 A6 */ mtibatl 2, r6 -/* 8033EEB8 7C B4 83 A6 */ mtibatu 2, r5 -/* 8033EEBC 4C 00 01 2C */ isync -/* 8033EEC0 7C 60 00 A6 */ mfmsr r3 -/* 8033EEC4 60 63 00 30 */ ori r3, r3, 0x30 -/* 8033EEC8 7C 7B 03 A6 */ mtspr 0x1b, r3 -/* 8033EECC 7C 68 02 A6 */ mflr r3 -/* 8033EED0 7C 7A 03 A6 */ mtspr 0x1a, r3 -/* 8033EED4 4C 00 00 64 */ rfi diff --git a/asm/dolphin/os/OSMemory/RealMode.s b/asm/dolphin/os/OSMemory/RealMode.s deleted file mode 100644 index a6e39168d6..0000000000 --- a/asm/dolphin/os/OSMemory/RealMode.s +++ /dev/null @@ -1,7 +0,0 @@ -lbl_8033EED8: -/* 8033EED8 54 63 00 BE */ clrlwi r3, r3, 2 -/* 8033EEDC 7C 7A 03 A6 */ mtspr 0x1a, r3 -/* 8033EEE0 7C 60 00 A6 */ mfmsr r3 -/* 8033EEE4 54 63 07 32 */ rlwinm r3, r3, 0, 0x1c, 0x19 -/* 8033EEE8 7C 7B 03 A6 */ mtspr 0x1b, r3 -/* 8033EEEC 4C 00 00 64 */ rfi diff --git a/asm/dolphin/os/OSReboot/OSGetSaveRegion.s b/asm/dolphin/os/OSReboot/OSGetSaveRegion.s deleted file mode 100644 index cd09f28f55..0000000000 --- a/asm/dolphin/os/OSReboot/OSGetSaveRegion.s +++ /dev/null @@ -1,6 +0,0 @@ -lbl_8033F64C: -/* 8033F64C 80 0D 91 08 */ lwz r0, SaveStart(r13) -/* 8033F650 90 03 00 00 */ stw r0, 0(r3) -/* 8033F654 80 0D 91 0C */ lwz r0, SaveEnd(r13) -/* 8033F658 90 04 00 00 */ stw r0, 0(r4) -/* 8033F65C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSReboot/OSSetSaveRegion.s b/asm/dolphin/os/OSReboot/OSSetSaveRegion.s deleted file mode 100644 index 8e9f846fdc..0000000000 --- a/asm/dolphin/os/OSReboot/OSSetSaveRegion.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_8033F640: -/* 8033F640 90 6D 91 08 */ stw r3, SaveStart(r13) -/* 8033F644 90 8D 91 0C */ stw r4, SaveEnd(r13) -/* 8033F648 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSReset/Reset.s b/asm/dolphin/os/OSReset/Reset.s deleted file mode 100644 index 87d9fd15e2..0000000000 --- a/asm/dolphin/os/OSReset/Reset.s +++ /dev/null @@ -1,38 +0,0 @@ -lbl_8033F78C: -/* 8033F78C 48 00 00 20 */ b lbl_8033F7AC -lbl_8033F790: -/* 8033F790 7D 10 FA A6 */ mfspr r8, 0x3f0 -/* 8033F794 61 08 00 08 */ ori r8, r8, 8 -/* 8033F798 7D 10 FB A6 */ mtspr 0x3f0, r8 -/* 8033F79C 4C 00 01 2C */ isync -/* 8033F7A0 7C 00 04 AC */ sync -/* 8033F7A4 60 00 00 00 */ nop -/* 8033F7A8 48 00 00 08 */ b lbl_8033F7B0 -lbl_8033F7AC: -/* 8033F7AC 48 00 00 20 */ b lbl_8033F7CC -lbl_8033F7B0: -/* 8033F7B0 7C AC 42 E6 */ mftb r5, 0x10c -lbl_8033F7B4: -/* 8033F7B4 7C CC 42 E6 */ mftb r6, 0x10c -/* 8033F7B8 7C E5 30 50 */ subf r7, r5, r6 -/* 8033F7BC 28 07 11 24 */ cmplwi r7, 0x1124 -/* 8033F7C0 41 80 FF F4 */ blt lbl_8033F7B4 -/* 8033F7C4 60 00 00 00 */ nop -/* 8033F7C8 48 00 00 08 */ b lbl_8033F7D0 -lbl_8033F7CC: -/* 8033F7CC 48 00 00 20 */ b lbl_8033F7EC -lbl_8033F7D0: -/* 8033F7D0 3D 00 CC 00 */ lis r8, 0xCC00 /* 0xCC003000@h */ -/* 8033F7D4 61 08 30 00 */ ori r8, r8, 0x3000 /* 0xCC003000@l */ -/* 8033F7D8 38 80 00 03 */ li r4, 3 -/* 8033F7DC 90 88 00 24 */ stw r4, 0x24(r8) -/* 8033F7E0 90 68 00 24 */ stw r3, 0x24(r8) -/* 8033F7E4 60 00 00 00 */ nop -/* 8033F7E8 48 00 00 08 */ b lbl_8033F7F0 -lbl_8033F7EC: -/* 8033F7EC 48 00 00 0C */ b lbl_8033F7F8 -lbl_8033F7F0: -/* 8033F7F0 60 00 00 00 */ nop -/* 8033F7F4 4B FF FF FC */ b lbl_8033F7F0 -lbl_8033F7F8: -/* 8033F7F8 4B FF FF 98 */ b lbl_8033F790 diff --git a/asm/dolphin/os/OSResetSW/OSGetResetButtonState.s b/asm/dolphin/os/OSResetSW/OSGetResetButtonState.s index 2c7a55ff47..c774a6f3be 100644 --- a/asm/dolphin/os/OSResetSW/OSGetResetButtonState.s +++ b/asm/dolphin/os/OSResetSW/OSGetResetButtonState.s @@ -129,7 +129,7 @@ lbl_8033FD98: /* 8033FDA8 41 82 00 A0 */ beq lbl_8033FE48 /* 8033FDAC 1D 40 00 3C */ mulli r10, r0, 0x3c /* 8033FDB0 80 05 00 F8 */ lwz r0, 0xf8(r5) -/* 8033FDB4 81 2D 90 B4 */ lwz r9, data_80451634(r13) +/* 8033FDB4 81 2D 90 B4 */ lwz r9, __OSStartTime+0x4(r13) /* 8033FDB8 81 0D 90 B0 */ lwz r8, __OSStartTime(r13) /* 8033FDBC 54 06 F0 BE */ srwi r6, r0, 2 /* 8033FDC0 7D 40 FE 70 */ srawi r0, r10, 0x1f diff --git a/asm/dolphin/os/OSSync/SystemCallVector.s b/asm/dolphin/os/OSSync/SystemCallVector.s deleted file mode 100644 index 85a863a4b9..0000000000 --- a/asm/dolphin/os/OSSync/SystemCallVector.s +++ /dev/null @@ -1,8 +0,0 @@ -lbl_80340A20: -/* 80340A20 7D 30 FA A6 */ mfspr r9, 0x3f0 -/* 80340A24 61 2A 00 08 */ ori r10, r9, 8 -/* 80340A28 7D 50 FB A6 */ mtspr 0x3f0, r10 -/* 80340A2C 4C 00 01 2C */ isync -/* 80340A30 7C 00 04 AC */ sync -/* 80340A34 7D 30 FB A6 */ mtspr 0x3f0, r9 -/* 80340A38 4C 00 00 64 */ rfi diff --git a/asm/dolphin/os/OSSync/__OSSystemCallVectorEnd.s b/asm/dolphin/os/OSSync/__OSSystemCallVectorEnd.s deleted file mode 100644 index d6880a262f..0000000000 --- a/asm/dolphin/os/OSSync/__OSSystemCallVectorEnd.s +++ /dev/null @@ -1,2 +0,0 @@ -lbl_80340A3C: -/* 80340A3C 60 00 00 00 */ nop diff --git a/asm/dolphin/os/OSThread/OSGetCurrentThread.s b/asm/dolphin/os/OSThread/OSGetCurrentThread.s deleted file mode 100644 index 44503b4718..0000000000 --- a/asm/dolphin/os/OSThread/OSGetCurrentThread.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_80340C84: -/* 80340C84 3C 60 80 00 */ lis r3, 0x8000 /* 0x800000E4@ha */ -/* 80340C88 80 63 00 E4 */ lwz r3, 0x00E4(r3) /* 0x800000E4@l */ -/* 80340C8C 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/OSGetThreadPriority.s b/asm/dolphin/os/OSThread/OSGetThreadPriority.s deleted file mode 100644 index f6ee7d0007..0000000000 --- a/asm/dolphin/os/OSThread/OSGetThreadPriority.s +++ /dev/null @@ -1,3 +0,0 @@ -lbl_80341E5C: -/* 80341E5C 80 63 02 D4 */ lwz r3, 0x2d4(r3) -/* 80341E60 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/OSInitThreadQueue.s b/asm/dolphin/os/OSThread/OSInitThreadQueue.s deleted file mode 100644 index fd6c864bd1..0000000000 --- a/asm/dolphin/os/OSThread/OSInitThreadQueue.s +++ /dev/null @@ -1,5 +0,0 @@ -lbl_80340C74: -/* 80340C74 38 00 00 00 */ li r0, 0 -/* 80340C78 90 03 00 04 */ stw r0, 4(r3) -/* 80340C7C 90 03 00 00 */ stw r0, 0(r3) -/* 80340C80 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/OSIsThreadTerminated.s b/asm/dolphin/os/OSThread/OSIsThreadTerminated.s deleted file mode 100644 index 718902b983..0000000000 --- a/asm/dolphin/os/OSThread/OSIsThreadTerminated.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_80340C90: -/* 80340C90 A0 63 02 C8 */ lhz r3, 0x2c8(r3) -/* 80340C94 38 00 00 01 */ li r0, 1 -/* 80340C98 28 03 00 08 */ cmplwi r3, 8 -/* 80340C9C 41 82 00 10 */ beq lbl_80340CAC -/* 80340CA0 28 03 00 00 */ cmplwi r3, 0 -/* 80340CA4 41 82 00 08 */ beq lbl_80340CAC -/* 80340CA8 38 00 00 00 */ li r0, 0 -lbl_80340CAC: -/* 80340CAC 2C 00 00 00 */ cmpwi r0, 0 -/* 80340CB0 41 82 00 0C */ beq lbl_80340CBC -/* 80340CB4 38 60 00 01 */ li r3, 1 -/* 80340CB8 4E 80 00 20 */ blr -lbl_80340CBC: -/* 80340CBC 38 60 00 00 */ li r3, 0 -/* 80340CC0 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/UnsetRun.s b/asm/dolphin/os/OSThread/UnsetRun.s deleted file mode 100644 index 705aad3868..0000000000 --- a/asm/dolphin/os/OSThread/UnsetRun.s +++ /dev/null @@ -1,32 +0,0 @@ -lbl_80340D44: -/* 80340D44 80 83 02 E0 */ lwz r4, 0x2e0(r3) -/* 80340D48 80 A3 02 DC */ lwz r5, 0x2dc(r3) -/* 80340D4C 28 04 00 00 */ cmplwi r4, 0 -/* 80340D50 80 C3 02 E4 */ lwz r6, 0x2e4(r3) -/* 80340D54 40 82 00 0C */ bne lbl_80340D60 -/* 80340D58 90 C5 00 04 */ stw r6, 4(r5) -/* 80340D5C 48 00 00 08 */ b lbl_80340D64 -lbl_80340D60: -/* 80340D60 90 C4 02 E4 */ stw r6, 0x2e4(r4) -lbl_80340D64: -/* 80340D64 28 06 00 00 */ cmplwi r6, 0 -/* 80340D68 40 82 00 0C */ bne lbl_80340D74 -/* 80340D6C 90 85 00 00 */ stw r4, 0(r5) -/* 80340D70 48 00 00 08 */ b lbl_80340D78 -lbl_80340D74: -/* 80340D74 90 86 02 E0 */ stw r4, 0x2e0(r6) -lbl_80340D78: -/* 80340D78 80 05 00 00 */ lwz r0, 0(r5) -/* 80340D7C 28 00 00 00 */ cmplwi r0, 0 -/* 80340D80 40 82 00 20 */ bne lbl_80340DA0 -/* 80340D84 80 03 02 D0 */ lwz r0, 0x2d0(r3) -/* 80340D88 38 80 00 01 */ li r4, 1 -/* 80340D8C 80 AD 91 40 */ lwz r5, RunQueueBits(r13) -/* 80340D90 20 00 00 1F */ subfic r0, r0, 0x1f -/* 80340D94 7C 80 00 30 */ slw r0, r4, r0 -/* 80340D98 7C A0 00 78 */ andc r0, r5, r0 -/* 80340D9C 90 0D 91 40 */ stw r0, RunQueueBits(r13) -lbl_80340DA0: -/* 80340DA0 38 00 00 00 */ li r0, 0 -/* 80340DA4 90 03 02 DC */ stw r0, 0x2dc(r3) -/* 80340DA8 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSThread/__OSGetEffectivePriority.s b/asm/dolphin/os/OSThread/__OSGetEffectivePriority.s deleted file mode 100644 index 1a801ddc4a..0000000000 --- a/asm/dolphin/os/OSThread/__OSGetEffectivePriority.s +++ /dev/null @@ -1,19 +0,0 @@ -lbl_80340DAC: -/* 80340DAC 80 83 02 D4 */ lwz r4, 0x2d4(r3) -/* 80340DB0 80 A3 02 F4 */ lwz r5, 0x2f4(r3) -/* 80340DB4 48 00 00 24 */ b lbl_80340DD8 -lbl_80340DB8: -/* 80340DB8 80 65 00 00 */ lwz r3, 0(r5) -/* 80340DBC 28 03 00 00 */ cmplwi r3, 0 -/* 80340DC0 41 82 00 14 */ beq lbl_80340DD4 -/* 80340DC4 80 03 02 D0 */ lwz r0, 0x2d0(r3) -/* 80340DC8 7C 00 20 00 */ cmpw r0, r4 -/* 80340DCC 40 80 00 08 */ bge lbl_80340DD4 -/* 80340DD0 7C 04 03 78 */ mr r4, r0 -lbl_80340DD4: -/* 80340DD4 80 A5 00 10 */ lwz r5, 0x10(r5) -lbl_80340DD8: -/* 80340DD8 28 05 00 00 */ cmplwi r5, 0 -/* 80340DDC 40 82 FF DC */ bne lbl_80340DB8 -/* 80340DE0 7C 83 23 78 */ mr r3, r4 -/* 80340DE4 4E 80 00 20 */ blr diff --git a/asm/dolphin/os/OSTime/OSGetTime.s b/asm/dolphin/os/OSTime/OSGetTime.s deleted file mode 100644 index 68dda67e66..0000000000 --- a/asm/dolphin/os/OSTime/OSGetTime.s +++ /dev/null @@ -1,7 +0,0 @@ -lbl_803426FC: -/* 803426FC 7C 6D 42 E6 */ mftbu r3 -/* 80342700 7C 8C 42 E6 */ mftb r4, 0x10c -/* 80342704 7C AD 42 E6 */ mftbu r5 -/* 80342708 7C 03 28 00 */ cmpw r3, r5 -/* 8034270C 40 82 FF F0 */ bne OSGetTime -/* 80342710 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_alldie/d_a_alldie/actionCheck__10daAlldie_cFv.s b/asm/rel/d/a/d_a_alldie/d_a_alldie/actionCheck__10daAlldie_cFv.s deleted file mode 100644 index 05b870da2a..0000000000 --- a/asm/rel/d/a/d_a_alldie/d_a_alldie/actionCheck__10daAlldie_cFv.s +++ /dev/null @@ -1,22 +0,0 @@ -lbl_804D5838: -/* 804D5838 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 804D583C 7C 08 02 A6 */ mflr r0 -/* 804D5840 90 01 00 14 */ stw r0, 0x14(r1) -/* 804D5844 93 E1 00 0C */ stw r31, 0xc(r1) -/* 804D5848 7C 7F 1B 78 */ mr r31, r3 -/* 804D584C 88 03 04 E2 */ lbz r0, 0x4e2(r3) -/* 804D5850 7C 03 07 74 */ extsb r3, r0 -/* 804D5854 4B B4 71 C9 */ bl fopAcM_myRoomSearchEnemy__FSc -/* 804D5858 28 03 00 00 */ cmplwi r3, 0 -/* 804D585C 40 82 00 14 */ bne lbl_804D5870 -/* 804D5860 38 00 00 02 */ li r0, 2 -/* 804D5864 98 1F 05 68 */ stb r0, 0x568(r31) -/* 804D5868 38 00 00 41 */ li r0, 0x41 -/* 804D586C B0 1F 05 6A */ sth r0, 0x56a(r31) -lbl_804D5870: -/* 804D5870 38 60 00 01 */ li r3, 1 -/* 804D5874 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 804D5878 80 01 00 14 */ lwz r0, 0x14(r1) -/* 804D587C 7C 08 03 A6 */ mtlr r0 -/* 804D5880 38 21 00 10 */ addi r1, r1, 0x10 -/* 804D5884 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_alldie/d_a_alldie/actionEvent__10daAlldie_cFv.s b/asm/rel/d/a/d_a_alldie/d_a_alldie/actionEvent__10daAlldie_cFv.s deleted file mode 100644 index f460e05dce..0000000000 --- a/asm/rel/d/a/d_a_alldie/d_a_alldie/actionEvent__10daAlldie_cFv.s +++ /dev/null @@ -1,44 +0,0 @@ -lbl_804D59A0: -/* 804D59A0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 804D59A4 7C 08 02 A6 */ mflr r0 -/* 804D59A8 90 01 00 14 */ stw r0, 0x14(r1) -/* 804D59AC 93 E1 00 0C */ stw r31, 0xc(r1) -/* 804D59B0 93 C1 00 08 */ stw r30, 8(r1) -/* 804D59B4 7C 7E 1B 78 */ mr r30, r3 -/* 804D59B8 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 804D59BC 3B E3 61 C0 */ addi r31, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 804D59C0 38 7F 4F F8 */ addi r3, r31, 0x4ff8 -/* 804D59C4 A8 9E 05 6C */ lha r4, 0x56c(r30) -/* 804D59C8 4B B7 20 B1 */ bl endCheck__16dEvent_manager_cFs -/* 804D59CC 2C 03 00 00 */ cmpwi r3, 0 -/* 804D59D0 41 82 00 58 */ beq lbl_804D5A28 -/* 804D59D4 38 7F 4E C8 */ addi r3, r31, 0x4ec8 -/* 804D59D8 4B B6 CA 91 */ bl reset__14dEvt_control_cFv -/* 804D59DC A8 1E 05 6E */ lha r0, 0x56e(r30) -/* 804D59E0 2C 00 FF FF */ cmpwi r0, -1 -/* 804D59E4 41 82 00 34 */ beq lbl_804D5A18 -/* 804D59E8 38 00 00 04 */ li r0, 4 -/* 804D59EC 98 1E 05 68 */ stb r0, 0x568(r30) -/* 804D59F0 7F C3 F3 78 */ mr r3, r30 -/* 804D59F4 A8 9E 05 6E */ lha r4, 0x56e(r30) -/* 804D59F8 A8 1E 05 70 */ lha r0, 0x570(r30) -/* 804D59FC 54 05 06 3E */ clrlwi r5, r0, 0x18 -/* 804D5A00 3C C0 00 01 */ lis r6, 0x0001 /* 0x0000FFFF@ha */ -/* 804D5A04 38 C6 FF FF */ addi r6, r6, 0xFFFF /* 0x0000FFFF@l */ -/* 804D5A08 38 E0 00 00 */ li r7, 0 -/* 804D5A0C 39 00 00 01 */ li r8, 1 -/* 804D5A10 4B B4 5C 6D */ bl fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs -/* 804D5A14 48 00 00 14 */ b lbl_804D5A28 -lbl_804D5A18: -/* 804D5A18 38 00 00 00 */ li r0, 0 -/* 804D5A1C 98 1E 05 68 */ stb r0, 0x568(r30) -/* 804D5A20 38 00 FF FF */ li r0, -1 -/* 804D5A24 B0 1E 05 70 */ sth r0, 0x570(r30) -lbl_804D5A28: -/* 804D5A28 38 60 00 01 */ li r3, 1 -/* 804D5A2C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 804D5A30 83 C1 00 08 */ lwz r30, 8(r1) -/* 804D5A34 80 01 00 14 */ lwz r0, 0x14(r1) -/* 804D5A38 7C 08 03 A6 */ mtlr r0 -/* 804D5A3C 38 21 00 10 */ addi r1, r1, 0x10 -/* 804D5A40 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_alldie/d_a_alldie/actionNext__10daAlldie_cFv.s b/asm/rel/d/a/d_a_alldie/d_a_alldie/actionNext__10daAlldie_cFv.s deleted file mode 100644 index ce7bd3100e..0000000000 --- a/asm/rel/d/a/d_a_alldie/d_a_alldie/actionNext__10daAlldie_cFv.s +++ /dev/null @@ -1,56 +0,0 @@ -lbl_804D5A44: -/* 804D5A44 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 804D5A48 7C 08 02 A6 */ mflr r0 -/* 804D5A4C 90 01 00 14 */ stw r0, 0x14(r1) -/* 804D5A50 93 E1 00 0C */ stw r31, 0xc(r1) -/* 804D5A54 7C 7F 1B 78 */ mr r31, r3 -/* 804D5A58 A0 03 00 F8 */ lhz r0, 0xf8(r3) -/* 804D5A5C 28 00 00 02 */ cmplwi r0, 2 -/* 804D5A60 40 82 00 78 */ bne lbl_804D5AD8 -/* 804D5A64 A8 1F 05 6E */ lha r0, 0x56e(r31) -/* 804D5A68 B0 1F 05 6C */ sth r0, 0x56c(r31) -/* 804D5A6C 88 1F 04 E2 */ lbz r0, 0x4e2(r31) -/* 804D5A70 7C 04 07 74 */ extsb r4, r0 -/* 804D5A74 38 00 FF FF */ li r0, -1 -/* 804D5A78 B0 1F 05 6E */ sth r0, 0x56e(r31) -/* 804D5A7C A8 1F 05 70 */ lha r0, 0x570(r31) -/* 804D5A80 54 03 06 3E */ clrlwi r3, r0, 0x18 -/* 804D5A84 4B B6 DA 7D */ bl searchMapEventData__14dEvt_control_cFUcl -/* 804D5A88 28 03 00 00 */ cmplwi r3, 0 -/* 804D5A8C 41 82 00 30 */ beq lbl_804D5ABC -/* 804D5A90 88 03 00 05 */ lbz r0, 5(r3) -/* 804D5A94 B0 1F 05 70 */ sth r0, 0x570(r31) -/* 804D5A98 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 804D5A9C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 804D5AA0 38 63 4F F8 */ addi r3, r3, 0x4ff8 -/* 804D5AA4 7F E4 FB 78 */ mr r4, r31 -/* 804D5AA8 A8 1F 05 70 */ lha r0, 0x570(r31) -/* 804D5AAC 54 05 06 3E */ clrlwi r5, r0, 0x18 -/* 804D5AB0 4B B7 1B E9 */ bl getEventIdx__16dEvent_manager_cFP10fopAc_ac_cUc -/* 804D5AB4 B0 7F 05 6E */ sth r3, 0x56e(r31) -/* 804D5AB8 48 00 00 0C */ b lbl_804D5AC4 -lbl_804D5ABC: -/* 804D5ABC 38 00 FF FF */ li r0, -1 -/* 804D5AC0 B0 1F 05 70 */ sth r0, 0x570(r31) -lbl_804D5AC4: -/* 804D5AC4 38 00 00 05 */ li r0, 5 -/* 804D5AC8 98 1F 05 68 */ stb r0, 0x568(r31) -/* 804D5ACC 7F E3 FB 78 */ mr r3, r31 -/* 804D5AD0 4B FF FE D1 */ bl actionEvent__10daAlldie_cFv -/* 804D5AD4 48 00 00 24 */ b lbl_804D5AF8 -lbl_804D5AD8: -/* 804D5AD8 A8 9F 05 6E */ lha r4, 0x56e(r31) -/* 804D5ADC A8 1F 05 70 */ lha r0, 0x570(r31) -/* 804D5AE0 54 05 06 3E */ clrlwi r5, r0, 0x18 -/* 804D5AE4 3C C0 00 01 */ lis r6, 0x0001 /* 0x0000FFFF@ha */ -/* 804D5AE8 38 C6 FF FF */ addi r6, r6, 0xFFFF /* 0x0000FFFF@l */ -/* 804D5AEC 38 E0 00 00 */ li r7, 0 -/* 804D5AF0 39 00 00 01 */ li r8, 1 -/* 804D5AF4 4B B4 5B 89 */ bl fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs -lbl_804D5AF8: -/* 804D5AF8 38 60 00 01 */ li r3, 1 -/* 804D5AFC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 804D5B00 80 01 00 14 */ lwz r0, 0x14(r1) -/* 804D5B04 7C 08 03 A6 */ mtlr r0 -/* 804D5B08 38 21 00 10 */ addi r1, r1, 0x10 -/* 804D5B0C 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_alldie/d_a_alldie/actionOrder__10daAlldie_cFv.s b/asm/rel/d/a/d_a_alldie/d_a_alldie/actionOrder__10daAlldie_cFv.s deleted file mode 100644 index 34a8ee2300..0000000000 --- a/asm/rel/d/a/d_a_alldie/d_a_alldie/actionOrder__10daAlldie_cFv.s +++ /dev/null @@ -1,29 +0,0 @@ -lbl_804D5938: -/* 804D5938 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 804D593C 7C 08 02 A6 */ mflr r0 -/* 804D5940 90 01 00 14 */ stw r0, 0x14(r1) -/* 804D5944 93 E1 00 0C */ stw r31, 0xc(r1) -/* 804D5948 7C 7F 1B 78 */ mr r31, r3 -/* 804D594C A0 03 00 F8 */ lhz r0, 0xf8(r3) -/* 804D5950 28 00 00 02 */ cmplwi r0, 2 -/* 804D5954 40 82 00 10 */ bne lbl_804D5964 -/* 804D5958 38 00 00 05 */ li r0, 5 -/* 804D595C 98 1F 05 68 */ stb r0, 0x568(r31) -/* 804D5960 48 00 00 28 */ b lbl_804D5988 -lbl_804D5964: -/* 804D5964 4B FF FE B5 */ bl getEventNo__10daAlldie_cFv -/* 804D5968 7C 65 1B 78 */ mr r5, r3 -/* 804D596C 7F E3 FB 78 */ mr r3, r31 -/* 804D5970 A8 9F 05 6C */ lha r4, 0x56c(r31) -/* 804D5974 3C C0 00 01 */ lis r6, 0x0001 /* 0x0000FFFF@ha */ -/* 804D5978 38 C6 FF FF */ addi r6, r6, 0xFFFF /* 0x0000FFFF@l */ -/* 804D597C 38 E0 00 00 */ li r7, 0 -/* 804D5980 39 00 00 01 */ li r8, 1 -/* 804D5984 4B B4 5C F9 */ bl fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs -lbl_804D5988: -/* 804D5988 38 60 00 01 */ li r3, 1 -/* 804D598C 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 804D5990 80 01 00 14 */ lwz r0, 0x14(r1) -/* 804D5994 7C 08 03 A6 */ mtlr r0 -/* 804D5998 38 21 00 10 */ addi r1, r1, 0x10 -/* 804D599C 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_alldie/d_a_alldie/actionTimer__10daAlldie_cFv.s b/asm/rel/d/a/d_a_alldie/d_a_alldie/actionTimer__10daAlldie_cFv.s deleted file mode 100644 index c465157333..0000000000 --- a/asm/rel/d/a/d_a_alldie/d_a_alldie/actionTimer__10daAlldie_cFv.s +++ /dev/null @@ -1,50 +0,0 @@ -lbl_804D5888: -/* 804D5888 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 804D588C 7C 08 02 A6 */ mflr r0 -/* 804D5890 90 01 00 14 */ stw r0, 0x14(r1) -/* 804D5894 93 E1 00 0C */ stw r31, 0xc(r1) -/* 804D5898 93 C1 00 08 */ stw r30, 8(r1) -/* 804D589C 7C 7E 1B 78 */ mr r30, r3 -/* 804D58A0 88 03 04 E2 */ lbz r0, 0x4e2(r3) -/* 804D58A4 7C 03 07 74 */ extsb r3, r0 -/* 804D58A8 4B B4 71 75 */ bl fopAcM_myRoomSearchEnemy__FSc -/* 804D58AC 28 03 00 00 */ cmplwi r3, 0 -/* 804D58B0 41 82 00 10 */ beq lbl_804D58C0 -/* 804D58B4 38 00 00 01 */ li r0, 1 -/* 804D58B8 98 1E 05 68 */ stb r0, 0x568(r30) -/* 804D58BC 48 00 00 60 */ b lbl_804D591C -lbl_804D58C0: -/* 804D58C0 A8 7E 05 6A */ lha r3, 0x56a(r30) -/* 804D58C4 2C 03 00 00 */ cmpwi r3, 0 -/* 804D58C8 40 81 00 10 */ ble lbl_804D58D8 -/* 804D58CC 38 03 FF FF */ addi r0, r3, -1 -/* 804D58D0 B0 1E 05 6A */ sth r0, 0x56a(r30) -/* 804D58D4 48 00 00 48 */ b lbl_804D591C -lbl_804D58D8: -/* 804D58D8 A8 1E 05 6C */ lha r0, 0x56c(r30) -/* 804D58DC 2C 00 FF FF */ cmpwi r0, -1 -/* 804D58E0 40 82 00 10 */ bne lbl_804D58F0 -/* 804D58E4 38 00 00 00 */ li r0, 0 -/* 804D58E8 98 1E 05 68 */ stb r0, 0x568(r30) -/* 804D58EC 48 00 00 0C */ b lbl_804D58F8 -lbl_804D58F0: -/* 804D58F0 38 00 00 03 */ li r0, 3 -/* 804D58F4 98 1E 05 68 */ stb r0, 0x568(r30) -lbl_804D58F8: -/* 804D58F8 88 1E 04 E2 */ lbz r0, 0x4e2(r30) -/* 804D58FC 7C 1F 07 74 */ extsb r31, r0 -/* 804D5900 7F C3 F3 78 */ mr r3, r30 -/* 804D5904 4B FF FF 21 */ bl getSwbit__10daAlldie_cFv -/* 804D5908 54 64 06 3E */ clrlwi r4, r3, 0x18 -/* 804D590C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 804D5910 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 804D5914 7F E5 FB 78 */ mr r5, r31 -/* 804D5918 4B B5 F8 E9 */ bl onSwitch__10dSv_info_cFii -lbl_804D591C: -/* 804D591C 38 60 00 01 */ li r3, 1 -/* 804D5920 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 804D5924 83 C1 00 08 */ lwz r30, 8(r1) -/* 804D5928 80 01 00 14 */ lwz r0, 0x14(r1) -/* 804D592C 7C 08 03 A6 */ mtlr r0 -/* 804D5930 38 21 00 10 */ addi r1, r1, 0x10 -/* 804D5934 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_alldie/d_a_alldie/daAlldie_Create__FP10fopAc_ac_c.s b/asm/rel/d/a/d_a_alldie/d_a_alldie/daAlldie_Create__FP10fopAc_ac_c.s deleted file mode 100644 index 634ea11e18..0000000000 --- a/asm/rel/d/a/d_a_alldie/d_a_alldie/daAlldie_Create__FP10fopAc_ac_c.s +++ /dev/null @@ -1,81 +0,0 @@ -lbl_804D5BF0: -/* 804D5BF0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 804D5BF4 7C 08 02 A6 */ mflr r0 -/* 804D5BF8 90 01 00 24 */ stw r0, 0x24(r1) -/* 804D5BFC 39 61 00 20 */ addi r11, r1, 0x20 -/* 804D5C00 4B E8 C5 DD */ bl _savegpr_29 -/* 804D5C04 7C 7F 1B 78 */ mr r31, r3 -/* 804D5C08 80 03 04 A0 */ lwz r0, 0x4a0(r3) -/* 804D5C0C 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c -/* 804D5C10 40 82 00 1C */ bne lbl_804D5C2C -/* 804D5C14 28 1F 00 00 */ cmplwi r31, 0 -/* 804D5C18 41 82 00 08 */ beq lbl_804D5C20 -/* 804D5C1C 4B B4 2F 49 */ bl __ct__10fopAc_ac_cFv -lbl_804D5C20: -/* 804D5C20 80 1F 04 A0 */ lwz r0, 0x4a0(r31) -/* 804D5C24 60 00 00 08 */ ori r0, r0, 8 -/* 804D5C28 90 1F 04 A0 */ stw r0, 0x4a0(r31) -lbl_804D5C2C: -/* 804D5C2C 88 1F 04 E2 */ lbz r0, 0x4e2(r31) -/* 804D5C30 7C 1E 07 74 */ extsb r30, r0 -/* 804D5C34 7F E3 FB 78 */ mr r3, r31 -/* 804D5C38 4B FF FB ED */ bl getSwbit__10daAlldie_cFv -/* 804D5C3C 54 64 06 3E */ clrlwi r4, r3, 0x18 -/* 804D5C40 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 804D5C44 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 804D5C48 7F C5 F3 78 */ mr r5, r30 -/* 804D5C4C 4B B5 F7 15 */ bl isSwitch__10dSv_info_cCFii -/* 804D5C50 2C 03 00 00 */ cmpwi r3, 0 -/* 804D5C54 40 82 00 10 */ bne lbl_804D5C64 -/* 804D5C58 38 00 00 01 */ li r0, 1 -/* 804D5C5C 98 1F 05 68 */ stb r0, 0x568(r31) -/* 804D5C60 48 00 00 0C */ b lbl_804D5C6C -lbl_804D5C64: -/* 804D5C64 38 00 00 00 */ li r0, 0 -/* 804D5C68 98 1F 05 68 */ stb r0, 0x568(r31) -lbl_804D5C6C: -/* 804D5C6C 38 00 00 00 */ li r0, 0 -/* 804D5C70 B0 1F 04 E8 */ sth r0, 0x4e8(r31) -/* 804D5C74 B0 1F 04 E4 */ sth r0, 0x4e4(r31) -/* 804D5C78 B0 1F 04 E0 */ sth r0, 0x4e0(r31) -/* 804D5C7C B0 1F 04 DC */ sth r0, 0x4dc(r31) -/* 804D5C80 7F E3 FB 78 */ mr r3, r31 -/* 804D5C84 4B FF FB 95 */ bl getEventNo__10daAlldie_cFv -/* 804D5C88 7C 65 1B 78 */ mr r5, r3 -/* 804D5C8C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 804D5C90 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 804D5C94 3B A3 4F F8 */ addi r29, r3, 0x4ff8 -/* 804D5C98 7F A3 EB 78 */ mr r3, r29 -/* 804D5C9C 7F E4 FB 78 */ mr r4, r31 -/* 804D5CA0 4B B7 19 F9 */ bl getEventIdx__16dEvent_manager_cFP10fopAc_ac_cUc -/* 804D5CA4 B0 7F 05 6C */ sth r3, 0x56c(r31) -/* 804D5CA8 38 00 FF FF */ li r0, -1 -/* 804D5CAC B0 1F 05 70 */ sth r0, 0x570(r31) -/* 804D5CB0 B0 1F 05 6E */ sth r0, 0x56e(r31) -/* 804D5CB4 7F E3 FB 78 */ mr r3, r31 -/* 804D5CB8 4B FF FB 61 */ bl getEventNo__10daAlldie_cFv -/* 804D5CBC 7F C4 F3 78 */ mr r4, r30 -/* 804D5CC0 4B B6 D8 41 */ bl searchMapEventData__14dEvt_control_cFUcl -/* 804D5CC4 28 03 00 00 */ cmplwi r3, 0 -/* 804D5CC8 41 82 00 24 */ beq lbl_804D5CEC -/* 804D5CCC 88 03 00 05 */ lbz r0, 5(r3) -/* 804D5CD0 B0 1F 05 70 */ sth r0, 0x570(r31) -/* 804D5CD4 7F A3 EB 78 */ mr r3, r29 -/* 804D5CD8 7F E4 FB 78 */ mr r4, r31 -/* 804D5CDC A8 1F 05 70 */ lha r0, 0x570(r31) -/* 804D5CE0 54 05 06 3E */ clrlwi r5, r0, 0x18 -/* 804D5CE4 4B B7 19 B5 */ bl getEventIdx__16dEvent_manager_cFP10fopAc_ac_cUc -/* 804D5CE8 B0 7F 05 6E */ sth r3, 0x56e(r31) -lbl_804D5CEC: -/* 804D5CEC A8 1F 05 6C */ lha r0, 0x56c(r31) -/* 804D5CF0 B0 1F 00 FC */ sth r0, 0xfc(r31) -/* 804D5CF4 7F E3 FB 78 */ mr r3, r31 -/* 804D5CF8 4B FF FB 21 */ bl getEventNo__10daAlldie_cFv -/* 804D5CFC 98 7F 00 FE */ stb r3, 0xfe(r31) -/* 804D5D00 38 60 00 04 */ li r3, 4 -/* 804D5D04 39 61 00 20 */ addi r11, r1, 0x20 -/* 804D5D08 4B E8 C5 21 */ bl _restgpr_29 -/* 804D5D0C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 804D5D10 7C 08 03 A6 */ mtlr r0 -/* 804D5D14 38 21 00 20 */ addi r1, r1, 0x20 -/* 804D5D18 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_alldie/d_a_alldie/daAlldie_Delete__FP10daAlldie_c.s b/asm/rel/d/a/d_a_alldie/d_a_alldie/daAlldie_Delete__FP10daAlldie_c.s deleted file mode 100644 index 4dfd8fe106..0000000000 --- a/asm/rel/d/a/d_a_alldie/d_a_alldie/daAlldie_Delete__FP10daAlldie_c.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_804D5BC0: -/* 804D5BC0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 804D5BC4 7C 08 02 A6 */ mflr r0 -/* 804D5BC8 90 01 00 14 */ stw r0, 0x14(r1) -/* 804D5BCC 28 03 00 00 */ cmplwi r3, 0 -/* 804D5BD0 41 82 00 0C */ beq lbl_804D5BDC -/* 804D5BD4 38 80 00 00 */ li r4, 0 -/* 804D5BD8 4B B4 30 B5 */ bl __dt__10fopAc_ac_cFv -lbl_804D5BDC: -/* 804D5BDC 38 60 00 01 */ li r3, 1 -/* 804D5BE0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 804D5BE4 7C 08 03 A6 */ mtlr r0 -/* 804D5BE8 38 21 00 10 */ addi r1, r1, 0x10 -/* 804D5BEC 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_alldie/d_a_alldie/daAlldie_Execute__FP10daAlldie_c.s b/asm/rel/d/a/d_a_alldie/d_a_alldie/daAlldie_Execute__FP10daAlldie_c.s deleted file mode 100644 index 148e1399ce..0000000000 --- a/asm/rel/d/a/d_a_alldie/d_a_alldie/daAlldie_Execute__FP10daAlldie_c.s +++ /dev/null @@ -1,10 +0,0 @@ -lbl_804D5B94: -/* 804D5B94 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 804D5B98 7C 08 02 A6 */ mflr r0 -/* 804D5B9C 90 01 00 14 */ stw r0, 0x14(r1) -/* 804D5BA0 4B FF FF 71 */ bl execute__10daAlldie_cFv -/* 804D5BA4 38 60 00 01 */ li r3, 1 -/* 804D5BA8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 804D5BAC 7C 08 03 A6 */ mtlr r0 -/* 804D5BB0 38 21 00 10 */ addi r1, r1, 0x10 -/* 804D5BB4 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_alldie/d_a_alldie/execute__10daAlldie_cFv.s b/asm/rel/d/a/d_a_alldie/d_a_alldie/execute__10daAlldie_cFv.s deleted file mode 100644 index a435fa8f7f..0000000000 --- a/asm/rel/d/a/d_a_alldie/d_a_alldie/execute__10daAlldie_cFv.s +++ /dev/null @@ -1,40 +0,0 @@ -lbl_804D5B10: -/* 804D5B10 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 804D5B14 7C 08 02 A6 */ mflr r0 -/* 804D5B18 90 01 00 14 */ stw r0, 0x14(r1) -/* 804D5B1C 88 03 05 68 */ lbz r0, 0x568(r3) -/* 804D5B20 2C 00 00 03 */ cmpwi r0, 3 -/* 804D5B24 41 82 00 38 */ beq lbl_804D5B5C -/* 804D5B28 40 80 00 14 */ bge lbl_804D5B3C -/* 804D5B2C 2C 00 00 01 */ cmpwi r0, 1 -/* 804D5B30 41 82 00 1C */ beq lbl_804D5B4C -/* 804D5B34 40 80 00 20 */ bge lbl_804D5B54 -/* 804D5B38 48 00 00 3C */ b lbl_804D5B74 -lbl_804D5B3C: -/* 804D5B3C 2C 00 00 05 */ cmpwi r0, 5 -/* 804D5B40 41 82 00 24 */ beq lbl_804D5B64 -/* 804D5B44 40 80 00 30 */ bge lbl_804D5B74 -/* 804D5B48 48 00 00 24 */ b lbl_804D5B6C -lbl_804D5B4C: -/* 804D5B4C 4B FF FC ED */ bl actionCheck__10daAlldie_cFv -/* 804D5B50 48 00 00 28 */ b lbl_804D5B78 -lbl_804D5B54: -/* 804D5B54 4B FF FD 35 */ bl actionTimer__10daAlldie_cFv -/* 804D5B58 48 00 00 20 */ b lbl_804D5B78 -lbl_804D5B5C: -/* 804D5B5C 4B FF FD DD */ bl actionOrder__10daAlldie_cFv -/* 804D5B60 48 00 00 18 */ b lbl_804D5B78 -lbl_804D5B64: -/* 804D5B64 4B FF FE 3D */ bl actionEvent__10daAlldie_cFv -/* 804D5B68 48 00 00 10 */ b lbl_804D5B78 -lbl_804D5B6C: -/* 804D5B6C 4B FF FE D9 */ bl actionNext__10daAlldie_cFv -/* 804D5B70 48 00 00 08 */ b lbl_804D5B78 -lbl_804D5B74: -/* 804D5B74 4B FF FC BD */ bl actionWait__10daAlldie_cFv -lbl_804D5B78: -/* 804D5B78 38 60 00 01 */ li r3, 1 -/* 804D5B7C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 804D5B80 7C 08 03 A6 */ mtlr r0 -/* 804D5B84 38 21 00 10 */ addi r1, r1, 0x10 -/* 804D5B88 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_alldie/d_a_alldie/getEventNo__10daAlldie_cFv.s b/asm/rel/d/a/d_a_alldie/d_a_alldie/getEventNo__10daAlldie_cFv.s deleted file mode 100644 index fc6db08aed..0000000000 --- a/asm/rel/d/a/d_a_alldie/d_a_alldie/getEventNo__10daAlldie_cFv.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_804D5818: -/* 804D5818 80 03 00 B0 */ lwz r0, 0xb0(r3) -/* 804D581C 54 03 46 3E */ srwi r3, r0, 0x18 -/* 804D5820 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_alldie/d_a_alldie/getSwbit__10daAlldie_cFv.s b/asm/rel/d/a/d_a_alldie/d_a_alldie/getSwbit__10daAlldie_cFv.s deleted file mode 100644 index 50eddecd78..0000000000 --- a/asm/rel/d/a/d_a_alldie/d_a_alldie/getSwbit__10daAlldie_cFv.s +++ /dev/null @@ -1,4 +0,0 @@ -lbl_804D5824: -/* 804D5824 80 03 00 B0 */ lwz r0, 0xb0(r3) -/* 804D5828 54 03 C6 3E */ rlwinm r3, r0, 0x18, 0x18, 0x1f -/* 804D582C 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_arrow/d_a_arrow/arrowShooting__9daArrow_cFv.s b/asm/rel/d/a/d_a_arrow/d_a_arrow/arrowShooting__9daArrow_cFv.s index fe937a0092..34fb0c2278 100644 --- a/asm/rel/d/a/d_a_arrow/d_a_arrow/arrowShooting__9daArrow_cFv.s +++ b/asm/rel/d/a/d_a_arrow/d_a_arrow/arrowShooting__9daArrow_cFv.s @@ -154,8 +154,8 @@ lbl_8049ABF0: /* 8049AC14 60 00 00 02 */ ori r0, r0, 2 /* 8049AC18 90 1F 06 E0 */ stw r0, 0x6e0(r31) lbl_8049AC1C: -/* 8049AC1C 3C 60 80 45 */ lis r3, struct_80450D88+0x0@ha /* 0x80450D88@ha */ -/* 8049AC20 38 83 0D 88 */ addi r4, r3, struct_80450D88+0x0@l /* 0x80450D88@l */ +/* 8049AC1C 3C 60 80 45 */ lis r3, m_count__9daArrow_c+0x0@ha /* 0x80450D88@ha */ +/* 8049AC20 38 83 0D 88 */ addi r4, r3, m_count__9daArrow_c+0x0@l /* 0x80450D88@l */ /* 8049AC24 A8 04 00 00 */ lha r0, 0(r4) /* 8049AC28 B0 1F 09 4E */ sth r0, 0x94e(r31) /* 8049AC2C A8 64 00 00 */ lha r3, 0(r4) diff --git a/asm/rel/d/a/d_a_arrow/d_a_arrow/execute__9daArrow_cFv.s b/asm/rel/d/a/d_a_arrow/d_a_arrow/execute__9daArrow_cFv.s index f68c6a48c3..b310bc9cb5 100644 --- a/asm/rel/d/a/d_a_arrow/d_a_arrow/execute__9daArrow_cFv.s +++ b/asm/rel/d/a/d_a_arrow/d_a_arrow/execute__9daArrow_cFv.s @@ -41,8 +41,8 @@ lbl_8049CF14: /* 8049CF38 48 00 01 60 */ b lbl_8049D098 lbl_8049CF3C: /* 8049CF3C A8 9F 09 4E */ lha r4, 0x94e(r31) -/* 8049CF40 3C 60 80 45 */ lis r3, struct_80450D88+0x0@ha /* 0x80450D88@ha */ -/* 8049CF44 A8 03 0D 88 */ lha r0, struct_80450D88+0x0@l(r3) /* 0x80450D88@l */ +/* 8049CF40 3C 60 80 45 */ lis r3, m_count__9daArrow_c+0x0@ha /* 0x80450D88@ha */ +/* 8049CF44 A8 03 0D 88 */ lha r0, m_count__9daArrow_c+0x0@l(r3) /* 0x80450D88@l */ /* 8049CF48 7C 04 00 00 */ cmpw r4, r0 /* 8049CF4C 40 82 00 0C */ bne lbl_8049CF58 /* 8049CF50 38 00 00 01 */ li r0, 1 diff --git a/asm/rel/d/a/d_a_boomerang/d_a_boomerang/execute__13daBoomerang_cFv.s b/asm/rel/d/a/d_a_boomerang/d_a_boomerang/execute__13daBoomerang_cFv.s index 39469e10bc..98771505c8 100644 --- a/asm/rel/d/a/d_a_boomerang/d_a_boomerang/execute__13daBoomerang_cFv.s +++ b/asm/rel/d/a/d_a_boomerang/d_a_boomerang/execute__13daBoomerang_cFv.s @@ -244,8 +244,8 @@ lbl_804A1B68: /* 804A1B9C 28 00 00 00 */ cmplwi r0, 0 /* 804A1BA0 41 82 00 10 */ beq lbl_804A1BB0 /* 804A1BA4 38 00 00 01 */ li r0, 1 -/* 804A1BA8 3C 60 80 45 */ lis r3, struct_8045101C+0x2@ha /* 0x8045101E@ha */ -/* 804A1BAC B0 03 10 1E */ sth r0, struct_8045101C+0x2@l(r3) /* 0x8045101E@l */ +/* 804A1BA8 3C 60 80 45 */ lis r3, m_dropAngleY__20daPy_boomerangMove_c+0x2@ha /* 0x8045101E@ha */ +/* 804A1BAC B0 03 10 1E */ sth r0, m_dropAngleY__20daPy_boomerangMove_c+0x2@l(r3) /* 0x8045101E@l */ lbl_804A1BB0: /* 804A1BB0 38 60 00 01 */ li r3, 1 lbl_804A1BB4: diff --git a/asm/rel/d/a/d_a_swc00/d_a_swc00/daSwc00_Execute__FP9daSwc00_c.s b/asm/rel/d/a/d_a_swc00/d_a_swc00/daSwc00_Execute__FP9daSwc00_c.s deleted file mode 100644 index 2b34817d7d..0000000000 --- a/asm/rel/d/a/d_a_swc00/d_a_swc00/daSwc00_Execute__FP9daSwc00_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_805A15DC: -/* 805A15DC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 805A15E0 7C 08 02 A6 */ mflr r0 -/* 805A15E4 90 01 00 14 */ stw r0, 0x14(r1) -/* 805A15E8 48 00 00 15 */ bl execute__9daSwc00_cFv -/* 805A15EC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 805A15F0 7C 08 03 A6 */ mtlr r0 -/* 805A15F4 38 21 00 10 */ addi r1, r1, 0x10 -/* 805A15F8 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/create__10daTboxSw_cFv.s b/asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/create__10daTboxSw_cFv.s deleted file mode 100644 index c1b7a70a17..0000000000 --- a/asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/create__10daTboxSw_cFv.s +++ /dev/null @@ -1,31 +0,0 @@ -lbl_80D66860: -/* 80D66860 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80D66864 7C 08 02 A6 */ mflr r0 -/* 80D66868 90 01 00 14 */ stw r0, 0x14(r1) -/* 80D6686C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80D66870 7C 7F 1B 78 */ mr r31, r3 -/* 80D66874 80 03 04 A0 */ lwz r0, 0x4a0(r3) -/* 80D66878 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c -/* 80D6687C 40 82 00 1C */ bne lbl_80D66898 -/* 80D66880 28 1F 00 00 */ cmplwi r31, 0 -/* 80D66884 41 82 00 08 */ beq lbl_80D6688C -/* 80D66888 4B 2B 22 DD */ bl __ct__10fopAc_ac_cFv -lbl_80D6688C: -/* 80D6688C 80 1F 04 A0 */ lwz r0, 0x4a0(r31) -/* 80D66890 60 00 00 08 */ ori r0, r0, 8 -/* 80D66894 90 1F 04 A0 */ stw r0, 0x4a0(r31) -lbl_80D66898: -/* 80D66898 7F E3 FB 78 */ mr r3, r31 -/* 80D6689C 4B FF FF BD */ bl Create__10daTboxSw_cFv -/* 80D668A0 2C 03 00 00 */ cmpwi r3, 0 -/* 80D668A4 40 82 00 0C */ bne lbl_80D668B0 -/* 80D668A8 38 60 00 05 */ li r3, 5 -/* 80D668AC 48 00 00 08 */ b lbl_80D668B4 -lbl_80D668B0: -/* 80D668B0 38 60 00 04 */ li r3, 4 -lbl_80D668B4: -/* 80D668B4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80D668B8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80D668BC 7C 08 03 A6 */ mtlr r0 -/* 80D668C0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80D668C4 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/daTboxSw_Create__FP10fopAc_ac_c.s b/asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/daTboxSw_Create__FP10fopAc_ac_c.s deleted file mode 100644 index e24beb2dff..0000000000 --- a/asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/daTboxSw_Create__FP10fopAc_ac_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80D669A8: -/* 80D669A8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80D669AC 7C 08 02 A6 */ mflr r0 -/* 80D669B0 90 01 00 14 */ stw r0, 0x14(r1) -/* 80D669B4 4B FF FE AD */ bl create__10daTboxSw_cFv -/* 80D669B8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80D669BC 7C 08 03 A6 */ mtlr r0 -/* 80D669C0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80D669C4 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/daTboxSw_Delete__FP10daTboxSw_c.s b/asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/daTboxSw_Delete__FP10daTboxSw_c.s deleted file mode 100644 index e7f5f8509d..0000000000 --- a/asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/daTboxSw_Delete__FP10daTboxSw_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80D66988: -/* 80D66988 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80D6698C 7C 08 02 A6 */ mflr r0 -/* 80D66990 90 01 00 14 */ stw r0, 0x14(r1) -/* 80D66994 4B FF FF AD */ bl _delete__10daTboxSw_cFv -/* 80D66998 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80D6699C 7C 08 03 A6 */ mtlr r0 -/* 80D669A0 38 21 00 10 */ addi r1, r1, 0x10 -/* 80D669A4 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/daTboxSw_Draw__FP10daTboxSw_c.s b/asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/daTboxSw_Draw__FP10daTboxSw_c.s deleted file mode 100644 index 142a0d85b9..0000000000 --- a/asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/daTboxSw_Draw__FP10daTboxSw_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80D66948: -/* 80D66948 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80D6694C 7C 08 02 A6 */ mflr r0 -/* 80D66950 90 01 00 14 */ stw r0, 0x14(r1) -/* 80D66954 4B FF FF E5 */ bl draw__10daTboxSw_cFv -/* 80D66958 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80D6695C 7C 08 03 A6 */ mtlr r0 -/* 80D66960 38 21 00 10 */ addi r1, r1, 0x10 -/* 80D66964 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/daTboxSw_Execute__FP10daTboxSw_c.s b/asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/daTboxSw_Execute__FP10daTboxSw_c.s deleted file mode 100644 index 25dfee4367..0000000000 --- a/asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/daTboxSw_Execute__FP10daTboxSw_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_80D66968: -/* 80D66968 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80D6696C 7C 08 02 A6 */ mflr r0 -/* 80D66970 90 01 00 14 */ stw r0, 0x14(r1) -/* 80D66974 4B FF FF 55 */ bl execute__10daTboxSw_cFv -/* 80D66978 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80D6697C 7C 08 03 A6 */ mtlr r0 -/* 80D66980 38 21 00 10 */ addi r1, r1, 0x10 -/* 80D66984 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/execute__10daTboxSw_cFv.s b/asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/execute__10daTboxSw_cFv.s deleted file mode 100644 index 37527376e5..0000000000 --- a/asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/execute__10daTboxSw_cFv.s +++ /dev/null @@ -1,30 +0,0 @@ -lbl_80D668C8: -/* 80D668C8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80D668CC 7C 08 02 A6 */ mflr r0 -/* 80D668D0 90 01 00 14 */ stw r0, 0x14(r1) -/* 80D668D4 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80D668D8 7C 7F 1B 78 */ mr r31, r3 -/* 80D668DC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80D668E0 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80D668E4 38 63 09 58 */ addi r3, r3, 0x958 -/* 80D668E8 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 80D668EC 54 04 06 BE */ clrlwi r4, r0, 0x1a -/* 80D668F0 4B 2C DE F9 */ bl isTbox__12dSv_memBit_cCFi -/* 80D668F4 2C 03 00 00 */ cmpwi r3, 0 -/* 80D668F8 41 82 00 28 */ beq lbl_80D66920 -/* 80D668FC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80D66900 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80D66904 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 80D66908 54 04 C6 3E */ rlwinm r4, r0, 0x18, 0x18, 0x1f -/* 80D6690C 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 80D66910 7C 05 07 74 */ extsb r5, r0 -/* 80D66914 4B 2C E8 ED */ bl onSwitch__10dSv_info_cFii -/* 80D66918 7F E3 FB 78 */ mr r3, r31 -/* 80D6691C 4B 2B 33 61 */ bl fopAcM_delete__FP10fopAc_ac_c -lbl_80D66920: -/* 80D66920 38 60 00 01 */ li r3, 1 -/* 80D66924 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80D66928 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80D6692C 7C 08 03 A6 */ mtlr r0 -/* 80D66930 38 21 00 10 */ addi r1, r1, 0x10 -/* 80D66934 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/kytag/d_a_kytag14/d_a_kytag14/daKytag14_Create__FP10fopAc_ac_c.s b/asm/rel/d/a/kytag/d_a_kytag14/d_a_kytag14/daKytag14_Create__FP10fopAc_ac_c.s deleted file mode 100644 index 6ac61b862b..0000000000 --- a/asm/rel/d/a/kytag/d_a_kytag14/d_a_kytag14/daKytag14_Create__FP10fopAc_ac_c.s +++ /dev/null @@ -1,43 +0,0 @@ -lbl_80529B44: -/* 80529B44 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80529B48 7C 08 02 A6 */ mflr r0 -/* 80529B4C 90 01 00 14 */ stw r0, 0x14(r1) -/* 80529B50 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80529B54 7C 7F 1B 78 */ mr r31, r3 -/* 80529B58 80 03 04 A0 */ lwz r0, 0x4a0(r3) -/* 80529B5C 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c -/* 80529B60 40 82 00 1C */ bne lbl_80529B7C -/* 80529B64 28 1F 00 00 */ cmplwi r31, 0 -/* 80529B68 41 82 00 08 */ beq lbl_80529B70 -/* 80529B6C 4B AE EF F9 */ bl __ct__10fopAc_ac_cFv -lbl_80529B70: -/* 80529B70 80 1F 04 A0 */ lwz r0, 0x4a0(r31) -/* 80529B74 60 00 00 08 */ ori r0, r0, 8 -/* 80529B78 90 1F 04 A0 */ stw r0, 0x4a0(r31) -lbl_80529B7C: -/* 80529B7C 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 80529B80 98 1F 05 69 */ stb r0, 0x569(r31) -/* 80529B84 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 80529B88 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80529B8C 98 1F 05 68 */ stb r0, 0x568(r31) -/* 80529B90 A8 1F 04 DC */ lha r0, 0x4dc(r31) -/* 80529B94 B0 1F 05 6A */ sth r0, 0x56a(r31) -/* 80529B98 A8 1F 04 DE */ lha r0, 0x4de(r31) -/* 80529B9C B0 1F 05 6C */ sth r0, 0x56c(r31) -/* 80529BA0 A8 1F 04 E0 */ lha r0, 0x4e0(r31) -/* 80529BA4 98 1F 05 6E */ stb r0, 0x56e(r31) -/* 80529BA8 A8 1F 04 E0 */ lha r0, 0x4e0(r31) -/* 80529BAC 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 80529BB0 98 1F 05 6F */ stb r0, 0x56f(r31) -/* 80529BB4 88 7F 04 BA */ lbz r3, 0x4ba(r31) -/* 80529BB8 7C 60 07 74 */ extsb r0, r3 -/* 80529BBC 2C 00 FF FF */ cmpwi r0, -1 -/* 80529BC0 41 82 00 08 */ beq lbl_80529BC8 -/* 80529BC4 98 7F 05 68 */ stb r3, 0x568(r31) -lbl_80529BC8: -/* 80529BC8 38 60 00 04 */ li r3, 4 -/* 80529BCC 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80529BD0 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80529BD4 7C 08 03 A6 */ mtlr r0 -/* 80529BD8 38 21 00 10 */ addi r1, r1, 0x10 -/* 80529BDC 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/kytag/d_a_kytag14/d_a_kytag14/daKytag14_Execute__FP13kytag14_class.s b/asm/rel/d/a/kytag/d_a_kytag14/d_a_kytag14/daKytag14_Execute__FP13kytag14_class.s deleted file mode 100644 index 1d5892900e..0000000000 --- a/asm/rel/d/a/kytag/d_a_kytag14/d_a_kytag14/daKytag14_Execute__FP13kytag14_class.s +++ /dev/null @@ -1,113 +0,0 @@ -lbl_805299A0: -/* 805299A0 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 805299A4 7C 08 02 A6 */ mflr r0 -/* 805299A8 90 01 00 24 */ stw r0, 0x24(r1) -/* 805299AC 39 61 00 20 */ addi r11, r1, 0x20 -/* 805299B0 4B E3 88 25 */ bl _savegpr_27 -/* 805299B4 7C 7B 1B 78 */ mr r27, r3 -/* 805299B8 3B E0 00 01 */ li r31, 1 -/* 805299BC 3B C0 00 01 */ li r30, 1 -/* 805299C0 3B A0 00 01 */ li r29, 1 -/* 805299C4 3B 80 00 01 */ li r28, 1 -/* 805299C8 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805299CC 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805299D0 38 63 0D D8 */ addi r3, r3, 0xdd8 -/* 805299D4 38 80 13 01 */ li r4, 0x1301 -/* 805299D8 4B B0 AF E5 */ bl isEventBit__11dSv_event_cCFUs -/* 805299DC 2C 03 00 00 */ cmpwi r3, 0 -/* 805299E0 41 82 00 0C */ beq lbl_805299EC -/* 805299E4 38 60 00 01 */ li r3, 1 -/* 805299E8 48 00 01 34 */ b lbl_80529B1C -lbl_805299EC: -/* 805299EC A0 1B 05 6A */ lhz r0, 0x56a(r27) -/* 805299F0 28 00 FF FF */ cmplwi r0, 0xffff -/* 805299F4 41 82 00 38 */ beq lbl_80529A2C -/* 805299F8 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805299FC 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80529A00 38 63 07 F0 */ addi r3, r3, 0x7f0 -/* 80529A04 54 00 0B FC */ rlwinm r0, r0, 1, 0xf, 0x1e -/* 80529A08 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 80529A0C 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 80529A10 7C 84 02 2E */ lhzx r4, r4, r0 -/* 80529A14 4B B0 AF A9 */ bl isEventBit__11dSv_event_cCFUs -/* 80529A18 2C 03 00 00 */ cmpwi r3, 0 -/* 80529A1C 41 82 00 0C */ beq lbl_80529A28 -/* 80529A20 3B E0 00 01 */ li r31, 1 -/* 80529A24 48 00 00 08 */ b lbl_80529A2C -lbl_80529A28: -/* 80529A28 3B E0 00 00 */ li r31, 0 -lbl_80529A2C: -/* 80529A2C A0 1B 05 6C */ lhz r0, 0x56c(r27) -/* 80529A30 28 00 FF FF */ cmplwi r0, 0xffff -/* 80529A34 41 82 00 38 */ beq lbl_80529A6C -/* 80529A38 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80529A3C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80529A40 38 63 07 F0 */ addi r3, r3, 0x7f0 -/* 80529A44 54 00 0B FC */ rlwinm r0, r0, 1, 0xf, 0x1e -/* 80529A48 3C 80 80 3A */ lis r4, saveBitLabels__16dSv_event_flag_c@ha /* 0x803A7288@ha */ -/* 80529A4C 38 84 72 88 */ addi r4, r4, saveBitLabels__16dSv_event_flag_c@l /* 0x803A7288@l */ -/* 80529A50 7C 84 02 2E */ lhzx r4, r4, r0 -/* 80529A54 4B B0 AF 69 */ bl isEventBit__11dSv_event_cCFUs -/* 80529A58 2C 03 00 00 */ cmpwi r3, 0 -/* 80529A5C 40 82 00 0C */ bne lbl_80529A68 -/* 80529A60 3B C0 00 01 */ li r30, 1 -/* 80529A64 48 00 00 08 */ b lbl_80529A6C -lbl_80529A68: -/* 80529A68 3B C0 00 00 */ li r30, 0 -lbl_80529A6C: -/* 80529A6C 88 9B 05 6E */ lbz r4, 0x56e(r27) -/* 80529A70 28 04 00 FF */ cmplwi r4, 0xff -/* 80529A74 41 82 00 30 */ beq lbl_80529AA4 -/* 80529A78 3C 60 80 45 */ lis r3, mStayNo__20dStage_roomControl_c+0x0@ha /* 0x80450D64@ha */ -/* 80529A7C 88 A3 0D 64 */ lbz r5, mStayNo__20dStage_roomControl_c+0x0@l(r3) /* 0x80450D64@l */ -/* 80529A80 7C A5 07 74 */ extsb r5, r5 -/* 80529A84 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80529A88 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80529A8C 4B B0 B8 D5 */ bl isSwitch__10dSv_info_cCFii -/* 80529A90 2C 03 00 00 */ cmpwi r3, 0 -/* 80529A94 41 82 00 0C */ beq lbl_80529AA0 -/* 80529A98 3B A0 00 01 */ li r29, 1 -/* 80529A9C 48 00 00 08 */ b lbl_80529AA4 -lbl_80529AA0: -/* 80529AA0 3B A0 00 00 */ li r29, 0 -lbl_80529AA4: -/* 80529AA4 88 9B 05 6F */ lbz r4, 0x56f(r27) -/* 80529AA8 28 04 00 FF */ cmplwi r4, 0xff -/* 80529AAC 41 82 00 30 */ beq lbl_80529ADC -/* 80529AB0 3C 60 80 45 */ lis r3, mStayNo__20dStage_roomControl_c+0x0@ha /* 0x80450D64@ha */ -/* 80529AB4 88 A3 0D 64 */ lbz r5, mStayNo__20dStage_roomControl_c+0x0@l(r3) /* 0x80450D64@l */ -/* 80529AB8 7C A5 07 74 */ extsb r5, r5 -/* 80529ABC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80529AC0 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80529AC4 4B B0 B8 9D */ bl isSwitch__10dSv_info_cCFii -/* 80529AC8 2C 03 00 00 */ cmpwi r3, 0 -/* 80529ACC 40 82 00 0C */ bne lbl_80529AD8 -/* 80529AD0 3B 80 00 01 */ li r28, 1 -/* 80529AD4 48 00 00 08 */ b lbl_80529ADC -lbl_80529AD8: -/* 80529AD8 3B 80 00 00 */ li r28, 0 -lbl_80529ADC: -/* 80529ADC 2C 1F 00 01 */ cmpwi r31, 1 -/* 80529AE0 40 82 00 38 */ bne lbl_80529B18 -/* 80529AE4 2C 1E 00 01 */ cmpwi r30, 1 -/* 80529AE8 40 82 00 30 */ bne lbl_80529B18 -/* 80529AEC 2C 1D 00 01 */ cmpwi r29, 1 -/* 80529AF0 40 82 00 28 */ bne lbl_80529B18 -/* 80529AF4 2C 1C 00 01 */ cmpwi r28, 1 -/* 80529AF8 40 82 00 20 */ bne lbl_80529B18 -/* 80529AFC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 80529B00 38 83 61 C0 */ addi r4, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 80529B04 38 64 00 58 */ addi r3, r4, 0x58 -/* 80529B08 38 84 4E 00 */ addi r4, r4, 0x4e00 -/* 80529B0C 88 BB 05 68 */ lbz r5, 0x568(r27) -/* 80529B10 88 DB 05 69 */ lbz r6, 0x569(r27) -/* 80529B14 4B B0 92 09 */ bl set__25dSv_player_return_place_cFPCcScUc -lbl_80529B18: -/* 80529B18 38 60 00 01 */ li r3, 1 -lbl_80529B1C: -/* 80529B1C 39 61 00 20 */ addi r11, r1, 0x20 -/* 80529B20 4B E3 87 01 */ bl _restgpr_27 -/* 80529B24 80 01 00 24 */ lwz r0, 0x24(r1) -/* 80529B28 7C 08 03 A6 */ mtlr r0 -/* 80529B2C 38 21 00 20 */ addi r1, r1, 0x20 -/* 80529B30 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/__dt__13daTagGstart_cFv.s b/asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/__dt__13daTagGstart_cFv.s deleted file mode 100644 index 3d75bbc774..0000000000 --- a/asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/__dt__13daTagGstart_cFv.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_805A3514: -/* 805A3514 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 805A3518 7C 08 02 A6 */ mflr r0 -/* 805A351C 90 01 00 14 */ stw r0, 0x14(r1) -/* 805A3520 93 E1 00 0C */ stw r31, 0xc(r1) -/* 805A3524 93 C1 00 08 */ stw r30, 8(r1) -/* 805A3528 7C 7E 1B 79 */ or. r30, r3, r3 -/* 805A352C 7C 9F 23 78 */ mr r31, r4 -/* 805A3530 41 82 00 1C */ beq lbl_805A354C -/* 805A3534 38 80 00 00 */ li r4, 0 -/* 805A3538 4B A7 57 55 */ bl __dt__10fopAc_ac_cFv -/* 805A353C 7F E0 07 35 */ extsh. r0, r31 -/* 805A3540 40 81 00 0C */ ble lbl_805A354C -/* 805A3544 7F C3 F3 78 */ mr r3, r30 -/* 805A3548 4B D2 B7 F5 */ bl __dl__FPv -lbl_805A354C: -/* 805A354C 7F C3 F3 78 */ mr r3, r30 -/* 805A3550 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 805A3554 83 C1 00 08 */ lwz r30, 8(r1) -/* 805A3558 80 01 00 14 */ lwz r0, 0x14(r1) -/* 805A355C 7C 08 03 A6 */ mtlr r0 -/* 805A3560 38 21 00 10 */ addi r1, r1, 0x10 -/* 805A3564 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/create__13daTagGstart_cFv.s b/asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/create__13daTagGstart_cFv.s deleted file mode 100644 index c5037b9431..0000000000 --- a/asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/create__13daTagGstart_cFv.s +++ /dev/null @@ -1,34 +0,0 @@ -lbl_805A3478: -/* 805A3478 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 805A347C 7C 08 02 A6 */ mflr r0 -/* 805A3480 90 01 00 14 */ stw r0, 0x14(r1) -/* 805A3484 93 E1 00 0C */ stw r31, 0xc(r1) -/* 805A3488 7C 7F 1B 78 */ mr r31, r3 -/* 805A348C 80 03 04 A0 */ lwz r0, 0x4a0(r3) -/* 805A3490 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c -/* 805A3494 40 82 00 1C */ bne lbl_805A34B0 -/* 805A3498 28 1F 00 00 */ cmplwi r31, 0 -/* 805A349C 41 82 00 08 */ beq lbl_805A34A4 -/* 805A34A0 4B A7 56 C5 */ bl __ct__10fopAc_ac_cFv -lbl_805A34A4: -/* 805A34A4 80 1F 04 A0 */ lwz r0, 0x4a0(r31) -/* 805A34A8 60 00 00 08 */ ori r0, r0, 8 -/* 805A34AC 90 1F 04 A0 */ stw r0, 0x4a0(r31) -lbl_805A34B0: -/* 805A34B0 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 805A34B4 98 1F 05 68 */ stb r0, 0x568(r31) -/* 805A34B8 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 805A34BC 54 00 C6 3E */ rlwinm r0, r0, 0x18, 0x18, 0x1f -/* 805A34C0 98 1F 05 69 */ stb r0, 0x569(r31) -/* 805A34C4 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 805A34C8 54 00 86 3E */ rlwinm r0, r0, 0x10, 0x18, 0x1f -/* 805A34CC 98 1F 05 6A */ stb r0, 0x56a(r31) -/* 805A34D0 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 805A34D4 54 00 47 3E */ rlwinm r0, r0, 8, 0x1c, 0x1f -/* 805A34D8 98 1F 05 6B */ stb r0, 0x56b(r31) -/* 805A34DC 38 60 00 04 */ li r3, 4 -/* 805A34E0 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 805A34E4 80 01 00 14 */ lwz r0, 0x14(r1) -/* 805A34E8 7C 08 03 A6 */ mtlr r0 -/* 805A34EC 38 21 00 10 */ addi r1, r1, 0x10 -/* 805A34F0 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/daTagGstart_Create__FP10fopAc_ac_c.s b/asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/daTagGstart_Create__FP10fopAc_ac_c.s deleted file mode 100644 index 0f948375fb..0000000000 --- a/asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/daTagGstart_Create__FP10fopAc_ac_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_805A34F4: -/* 805A34F4 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 805A34F8 7C 08 02 A6 */ mflr r0 -/* 805A34FC 90 01 00 14 */ stw r0, 0x14(r1) -/* 805A3500 4B FF FF 79 */ bl create__13daTagGstart_cFv -/* 805A3504 80 01 00 14 */ lwz r0, 0x14(r1) -/* 805A3508 7C 08 03 A6 */ mtlr r0 -/* 805A350C 38 21 00 10 */ addi r1, r1, 0x10 -/* 805A3510 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/daTagGstart_Delete__FP13daTagGstart_c.s b/asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/daTagGstart_Delete__FP13daTagGstart_c.s deleted file mode 100644 index 7f46effab0..0000000000 --- a/asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/daTagGstart_Delete__FP13daTagGstart_c.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_805A3568: -/* 805A3568 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 805A356C 7C 08 02 A6 */ mflr r0 -/* 805A3570 90 01 00 14 */ stw r0, 0x14(r1) -/* 805A3574 38 80 FF FF */ li r4, -1 -/* 805A3578 4B FF FF 9D */ bl __dt__13daTagGstart_cFv -/* 805A357C 38 60 00 01 */ li r3, 1 -/* 805A3580 80 01 00 14 */ lwz r0, 0x14(r1) -/* 805A3584 7C 08 03 A6 */ mtlr r0 -/* 805A3588 38 21 00 10 */ addi r1, r1, 0x10 -/* 805A358C 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/daTagGstart_Execute__FP13daTagGstart_c.s b/asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/daTagGstart_Execute__FP13daTagGstart_c.s deleted file mode 100644 index 09cd242cda..0000000000 --- a/asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/daTagGstart_Execute__FP13daTagGstart_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_805A3658: -/* 805A3658 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 805A365C 7C 08 02 A6 */ mflr r0 -/* 805A3660 90 01 00 14 */ stw r0, 0x14(r1) -/* 805A3664 4B FF FF 2D */ bl execute__13daTagGstart_cFv -/* 805A3668 80 01 00 14 */ lwz r0, 0x14(r1) -/* 805A366C 7C 08 03 A6 */ mtlr r0 -/* 805A3670 38 21 00 10 */ addi r1, r1, 0x10 -/* 805A3674 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/execute__13daTagGstart_cFv.s b/asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/execute__13daTagGstart_cFv.s deleted file mode 100644 index 1740779243..0000000000 --- a/asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/execute__13daTagGstart_cFv.s +++ /dev/null @@ -1,55 +0,0 @@ -lbl_805A3590: -/* 805A3590 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 805A3594 7C 08 02 A6 */ mflr r0 -/* 805A3598 90 01 00 14 */ stw r0, 0x14(r1) -/* 805A359C 93 E1 00 0C */ stw r31, 0xc(r1) -/* 805A35A0 7C 7F 1B 78 */ mr r31, r3 -/* 805A35A4 88 83 05 68 */ lbz r4, 0x568(r3) -/* 805A35A8 28 04 00 FF */ cmplwi r4, 0xff -/* 805A35AC 41 82 00 20 */ beq lbl_805A35CC -/* 805A35B0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A35B4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A35B8 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A35BC 7C 05 07 74 */ extsb r5, r0 -/* 805A35C0 4B A9 1D A1 */ bl isSwitch__10dSv_info_cCFii -/* 805A35C4 2C 03 00 00 */ cmpwi r3, 0 -/* 805A35C8 41 82 00 78 */ beq lbl_805A3640 -lbl_805A35CC: -/* 805A35CC 88 9F 05 69 */ lbz r4, 0x569(r31) -/* 805A35D0 28 04 00 FF */ cmplwi r4, 0xff -/* 805A35D4 41 82 00 20 */ beq lbl_805A35F4 -/* 805A35D8 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A35DC 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A35E0 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A35E4 7C 05 07 74 */ extsb r5, r0 -/* 805A35E8 4B A9 1D 79 */ bl isSwitch__10dSv_info_cCFii -/* 805A35EC 2C 03 00 00 */ cmpwi r3, 0 -/* 805A35F0 40 82 00 50 */ bne lbl_805A3640 -lbl_805A35F4: -/* 805A35F4 88 1F 05 6B */ lbz r0, 0x56b(r31) -/* 805A35F8 28 00 00 00 */ cmplwi r0, 0 -/* 805A35FC 40 82 00 1C */ bne lbl_805A3618 -/* 805A3600 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A3604 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A3608 80 63 5D B4 */ lwz r3, 0x5db4(r3) -/* 805A360C 80 03 05 74 */ lwz r0, 0x574(r3) -/* 805A3610 54 00 01 8D */ rlwinm. r0, r0, 0, 6, 6 -/* 805A3614 41 82 00 2C */ beq lbl_805A3640 -lbl_805A3618: -/* 805A3618 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A361C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A3620 80 63 5D B4 */ lwz r3, 0x5db4(r3) -/* 805A3624 88 9F 05 6A */ lbz r4, 0x56a(r31) -/* 805A3628 88 1F 04 E2 */ lbz r0, 0x4e2(r31) -/* 805A362C 7C 05 07 74 */ extsb r5, r0 -/* 805A3630 81 83 06 28 */ lwz r12, 0x628(r3) -/* 805A3634 81 8C 01 84 */ lwz r12, 0x184(r12) -/* 805A3638 7D 89 03 A6 */ mtctr r12 -/* 805A363C 4E 80 04 21 */ bctrl -lbl_805A3640: -/* 805A3640 38 60 00 01 */ li r3, 1 -/* 805A3644 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 805A3648 80 01 00 14 */ lwz r0, 0x14(r1) -/* 805A364C 7C 08 03 A6 */ mtlr r0 -/* 805A3650 38 21 00 10 */ addi r1, r1, 0x10 -/* 805A3654 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/__dt__12daTagHstop_cFv.s b/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/__dt__12daTagHstop_cFv.s deleted file mode 100644 index 7764fb59ef..0000000000 --- a/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/__dt__12daTagHstop_cFv.s +++ /dev/null @@ -1,43 +0,0 @@ -lbl_805A45F8: -/* 805A45F8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 805A45FC 7C 08 02 A6 */ mflr r0 -/* 805A4600 90 01 00 14 */ stw r0, 0x14(r1) -/* 805A4604 93 E1 00 0C */ stw r31, 0xc(r1) -/* 805A4608 93 C1 00 08 */ stw r30, 8(r1) -/* 805A460C 7C 7E 1B 79 */ or. r30, r3, r3 -/* 805A4610 7C 9F 23 78 */ mr r31, r4 -/* 805A4614 41 82 00 60 */ beq lbl_805A4674 -/* 805A4618 80 7E 05 6C */ lwz r3, 0x56c(r30) -/* 805A461C 28 03 00 00 */ cmplwi r3, 0 -/* 805A4620 41 82 00 0C */ beq lbl_805A462C -/* 805A4624 80 1E 05 68 */ lwz r0, 0x568(r30) -/* 805A4628 90 03 05 68 */ stw r0, 0x568(r3) -lbl_805A462C: -/* 805A462C 80 7E 05 68 */ lwz r3, 0x568(r30) -/* 805A4630 28 03 00 00 */ cmplwi r3, 0 -/* 805A4634 41 82 00 0C */ beq lbl_805A4640 -/* 805A4638 80 1E 05 6C */ lwz r0, 0x56c(r30) -/* 805A463C 90 03 05 6C */ stw r0, 0x56c(r3) -lbl_805A4640: -/* 805A4640 3C 60 80 45 */ lis r3, m_top__12daTagHstop_c@ha /* 0x80450DF8@ha */ -/* 805A4644 84 03 0D F8 */ lwzu r0, m_top__12daTagHstop_c@l(r3) /* 0x80450DF8@l */ -/* 805A4648 7C 00 F0 40 */ cmplw r0, r30 -/* 805A464C 40 82 00 0C */ bne lbl_805A4658 -/* 805A4650 80 1E 05 68 */ lwz r0, 0x568(r30) -/* 805A4654 90 03 00 00 */ stw r0, 0(r3) -lbl_805A4658: -/* 805A4658 7F C3 F3 78 */ mr r3, r30 -/* 805A465C 38 80 00 00 */ li r4, 0 -/* 805A4660 4B A7 46 2D */ bl __dt__10fopAc_ac_cFv -/* 805A4664 7F E0 07 35 */ extsh. r0, r31 -/* 805A4668 40 81 00 0C */ ble lbl_805A4674 -/* 805A466C 7F C3 F3 78 */ mr r3, r30 -/* 805A4670 4B D2 A6 CD */ bl __dl__FPv -lbl_805A4674: -/* 805A4674 7F C3 F3 78 */ mr r3, r30 -/* 805A4678 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 805A467C 83 C1 00 08 */ lwz r30, 8(r1) -/* 805A4680 80 01 00 14 */ lwz r0, 0x14(r1) -/* 805A4684 7C 08 03 A6 */ mtlr r0 -/* 805A4688 38 21 00 10 */ addi r1, r1, 0x10 -/* 805A468C 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/__sinit_d_a_tag_hstop_cpp.s b/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/__sinit_d_a_tag_hstop_cpp.s deleted file mode 100644 index 0cc5e3a5ad..0000000000 --- a/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/__sinit_d_a_tag_hstop_cpp.s +++ /dev/null @@ -1,16 +0,0 @@ -lbl_805A4AD0: -/* 805A4AD0 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 805A4AD4 7C 08 02 A6 */ mflr r0 -/* 805A4AD8 90 01 00 14 */ stw r0, 0x14(r1) -/* 805A4ADC 3C 60 80 5A */ lis r3, m_msgFlow__12daTagHstop_c@ha /* 0x805A4B8C@ha */ -/* 805A4AE0 38 63 4B 8C */ addi r3, r3, m_msgFlow__12daTagHstop_c@l /* 0x805A4B8C@l */ -/* 805A4AE4 4B CA 54 1D */ bl __ct__10dMsgFlow_cFv -/* 805A4AE8 3C 80 80 25 */ lis r4, __dt__10dMsgFlow_cFv@ha /* 0x80249F48@ha */ -/* 805A4AEC 38 84 9F 48 */ addi r4, r4, __dt__10dMsgFlow_cFv@l /* 0x80249F48@l */ -/* 805A4AF0 3C A0 80 5A */ lis r5, lit_3686@ha /* 0x805A4B80@ha */ -/* 805A4AF4 38 A5 4B 80 */ addi r5, r5, lit_3686@l /* 0x805A4B80@l */ -/* 805A4AF8 4B FF F8 81 */ bl __register_global_object -/* 805A4AFC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 805A4B00 7C 08 03 A6 */ mtlr r0 -/* 805A4B04 38 21 00 10 */ addi r1, r1, 0x10 -/* 805A4B08 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/create__12daTagHstop_cFv.s b/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/create__12daTagHstop_cFv.s deleted file mode 100644 index 59f4f043ce..0000000000 --- a/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/create__12daTagHstop_cFv.s +++ /dev/null @@ -1,137 +0,0 @@ -lbl_805A43EC: -/* 805A43EC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 805A43F0 7C 08 02 A6 */ mflr r0 -/* 805A43F4 90 01 00 14 */ stw r0, 0x14(r1) -/* 805A43F8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 805A43FC 7C 7F 1B 78 */ mr r31, r3 -/* 805A4400 80 03 04 A0 */ lwz r0, 0x4a0(r3) -/* 805A4404 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c -/* 805A4408 40 82 00 1C */ bne lbl_805A4424 -/* 805A440C 28 1F 00 00 */ cmplwi r31, 0 -/* 805A4410 41 82 00 08 */ beq lbl_805A4418 -/* 805A4414 4B A7 47 51 */ bl __ct__10fopAc_ac_cFv -lbl_805A4418: -/* 805A4418 80 1F 04 A0 */ lwz r0, 0x4a0(r31) -/* 805A441C 60 00 00 08 */ ori r0, r0, 8 -/* 805A4420 90 1F 04 A0 */ stw r0, 0x4a0(r31) -lbl_805A4424: -/* 805A4424 C0 1F 04 EC */ lfs f0, 0x4ec(r31) -/* 805A4428 3C 60 80 5A */ lis r3, lit_3782@ha /* 0x805A4B20@ha */ -/* 805A442C C0 23 4B 20 */ lfs f1, lit_3782@l(r3) /* 0x805A4B20@l */ -/* 805A4430 EC 00 00 72 */ fmuls f0, f0, f1 -/* 805A4434 D0 1F 04 EC */ stfs f0, 0x4ec(r31) -/* 805A4438 C0 1F 04 F0 */ lfs f0, 0x4f0(r31) -/* 805A443C EC 00 00 72 */ fmuls f0, f0, f1 -/* 805A4440 D0 1F 04 F0 */ stfs f0, 0x4f0(r31) -/* 805A4444 C0 1F 04 F4 */ lfs f0, 0x4f4(r31) -/* 805A4448 EC 00 00 72 */ fmuls f0, f0, f1 -/* 805A444C D0 1F 04 F4 */ stfs f0, 0x4f4(r31) -/* 805A4450 3C 60 80 45 */ lis r3, m_top__12daTagHstop_c@ha /* 0x80450DF8@ha */ -/* 805A4454 84 03 0D F8 */ lwzu r0, m_top__12daTagHstop_c@l(r3) /* 0x80450DF8@l */ -/* 805A4458 28 00 00 00 */ cmplwi r0, 0 -/* 805A445C 41 82 00 28 */ beq lbl_805A4484 -/* 805A4460 7C 03 03 78 */ mr r3, r0 -/* 805A4464 48 00 00 08 */ b lbl_805A446C -lbl_805A4468: -/* 805A4468 7C 03 03 78 */ mr r3, r0 -lbl_805A446C: -/* 805A446C 80 03 05 68 */ lwz r0, 0x568(r3) -/* 805A4470 28 00 00 00 */ cmplwi r0, 0 -/* 805A4474 40 82 FF F4 */ bne lbl_805A4468 -/* 805A4478 93 E3 05 68 */ stw r31, 0x568(r3) -/* 805A447C 90 7F 05 6C */ stw r3, 0x56c(r31) -/* 805A4480 48 00 00 08 */ b lbl_805A4488 -lbl_805A4484: -/* 805A4484 93 E3 00 00 */ stw r31, 0(r3) -lbl_805A4488: -/* 805A4488 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 805A448C 98 1F 05 70 */ stb r0, 0x570(r31) -/* 805A4490 80 1F 00 B0 */ lwz r0, 0xb0(r31) -/* 805A4494 54 00 C7 3E */ rlwinm r0, r0, 0x18, 0x1c, 0x1f -/* 805A4498 98 1F 05 72 */ stb r0, 0x572(r31) -/* 805A449C 88 1F 05 72 */ lbz r0, 0x572(r31) -/* 805A44A0 28 00 00 0F */ cmplwi r0, 0xf -/* 805A44A4 40 82 00 0C */ bne lbl_805A44B0 -/* 805A44A8 38 00 00 00 */ li r0, 0 -/* 805A44AC 98 1F 05 72 */ stb r0, 0x572(r31) -lbl_805A44B0: -/* 805A44B0 7F E3 FB 78 */ mr r3, r31 -/* 805A44B4 48 00 02 05 */ bl setActive__12daTagHstop_cFv -/* 805A44B8 88 1F 05 72 */ lbz r0, 0x572(r31) -/* 805A44BC 28 00 00 02 */ cmplwi r0, 2 -/* 805A44C0 40 82 00 F8 */ bne lbl_805A45B8 -/* 805A44C4 4B BB B1 9D */ bl checkRoomRestartStart__9daPy_py_cFv -/* 805A44C8 54 60 06 3F */ clrlwi. r0, r3, 0x18 -/* 805A44CC 41 82 00 B4 */ beq lbl_805A4580 -/* 805A44D0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A44D4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A44D8 38 80 00 8A */ li r4, 0x8a -/* 805A44DC 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A44E0 7C 05 07 74 */ extsb r5, r0 -/* 805A44E4 4B A9 0E 7D */ bl isSwitch__10dSv_info_cCFii -/* 805A44E8 2C 03 00 00 */ cmpwi r3, 0 -/* 805A44EC 40 82 00 20 */ bne lbl_805A450C -/* 805A44F0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A44F4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A44F8 38 80 00 8A */ li r4, 0x8a -/* 805A44FC 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A4500 7C 05 07 74 */ extsb r5, r0 -/* 805A4504 4B A9 0C FD */ bl onSwitch__10dSv_info_cFii -/* 805A4508 48 00 00 78 */ b lbl_805A4580 -lbl_805A450C: -/* 805A450C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A4510 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A4514 38 80 00 8B */ li r4, 0x8b -/* 805A4518 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A451C 7C 05 07 74 */ extsb r5, r0 -/* 805A4520 4B A9 0E 41 */ bl isSwitch__10dSv_info_cCFii -/* 805A4524 2C 03 00 00 */ cmpwi r3, 0 -/* 805A4528 40 82 00 20 */ bne lbl_805A4548 -/* 805A452C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A4530 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A4534 38 80 00 8B */ li r4, 0x8b -/* 805A4538 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A453C 7C 05 07 74 */ extsb r5, r0 -/* 805A4540 4B A9 0C C1 */ bl onSwitch__10dSv_info_cFii -/* 805A4544 48 00 00 3C */ b lbl_805A4580 -lbl_805A4548: -/* 805A4548 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A454C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A4550 38 80 00 8C */ li r4, 0x8c -/* 805A4554 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A4558 7C 05 07 74 */ extsb r5, r0 -/* 805A455C 4B A9 0E 05 */ bl isSwitch__10dSv_info_cCFii -/* 805A4560 2C 03 00 00 */ cmpwi r3, 0 -/* 805A4564 40 82 00 1C */ bne lbl_805A4580 -/* 805A4568 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A456C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A4570 38 80 00 8C */ li r4, 0x8c -/* 805A4574 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A4578 7C 05 07 74 */ extsb r5, r0 -/* 805A457C 4B A9 0C 85 */ bl onSwitch__10dSv_info_cFii -lbl_805A4580: -/* 805A4580 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A4584 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A4588 38 80 00 8C */ li r4, 0x8c -/* 805A458C 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A4590 7C 05 07 74 */ extsb r5, r0 -/* 805A4594 4B A9 0D CD */ bl isSwitch__10dSv_info_cCFii -/* 805A4598 2C 03 00 00 */ cmpwi r3, 0 -/* 805A459C 41 82 00 10 */ beq lbl_805A45AC -/* 805A45A0 38 00 00 00 */ li r0, 0 -/* 805A45A4 90 1F 05 74 */ stw r0, 0x574(r31) -/* 805A45A8 48 00 00 18 */ b lbl_805A45C0 -lbl_805A45AC: -/* 805A45AC 38 00 04 B0 */ li r0, 0x4b0 -/* 805A45B0 90 1F 05 74 */ stw r0, 0x574(r31) -/* 805A45B4 48 00 00 0C */ b lbl_805A45C0 -lbl_805A45B8: -/* 805A45B8 38 00 00 00 */ li r0, 0 -/* 805A45BC 90 1F 05 74 */ stw r0, 0x574(r31) -lbl_805A45C0: -/* 805A45C0 38 60 00 04 */ li r3, 4 -/* 805A45C4 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 805A45C8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 805A45CC 7C 08 03 A6 */ mtlr r0 -/* 805A45D0 38 21 00 10 */ addi r1, r1, 0x10 -/* 805A45D4 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/daTagHstop_Create__FP10fopAc_ac_c.s b/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/daTagHstop_Create__FP10fopAc_ac_c.s deleted file mode 100644 index 7e365cb86d..0000000000 --- a/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/daTagHstop_Create__FP10fopAc_ac_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_805A45D8: -/* 805A45D8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 805A45DC 7C 08 02 A6 */ mflr r0 -/* 805A45E0 90 01 00 14 */ stw r0, 0x14(r1) -/* 805A45E4 4B FF FE 09 */ bl create__12daTagHstop_cFv -/* 805A45E8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 805A45EC 7C 08 03 A6 */ mtlr r0 -/* 805A45F0 38 21 00 10 */ addi r1, r1, 0x10 -/* 805A45F4 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/daTagHstop_Delete__FP12daTagHstop_c.s b/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/daTagHstop_Delete__FP12daTagHstop_c.s deleted file mode 100644 index 1520133d46..0000000000 --- a/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/daTagHstop_Delete__FP12daTagHstop_c.s +++ /dev/null @@ -1,11 +0,0 @@ -lbl_805A4690: -/* 805A4690 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 805A4694 7C 08 02 A6 */ mflr r0 -/* 805A4698 90 01 00 14 */ stw r0, 0x14(r1) -/* 805A469C 38 80 FF FF */ li r4, -1 -/* 805A46A0 4B FF FF 59 */ bl __dt__12daTagHstop_cFv -/* 805A46A4 38 60 00 01 */ li r3, 1 -/* 805A46A8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 805A46AC 7C 08 03 A6 */ mtlr r0 -/* 805A46B0 38 21 00 10 */ addi r1, r1, 0x10 -/* 805A46B4 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/daTagHstop_Execute__FP12daTagHstop_c.s b/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/daTagHstop_Execute__FP12daTagHstop_c.s deleted file mode 100644 index 8958adc3b0..0000000000 --- a/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/daTagHstop_Execute__FP12daTagHstop_c.s +++ /dev/null @@ -1,9 +0,0 @@ -lbl_805A4AA8: -/* 805A4AA8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 805A4AAC 7C 08 02 A6 */ mflr r0 -/* 805A4AB0 90 01 00 14 */ stw r0, 0x14(r1) -/* 805A4AB4 4B FF FC A9 */ bl execute__12daTagHstop_cFv -/* 805A4AB8 80 01 00 14 */ lwz r0, 0x14(r1) -/* 805A4ABC 7C 08 03 A6 */ mtlr r0 -/* 805A4AC0 38 21 00 10 */ addi r1, r1, 0x10 -/* 805A4AC4 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/execute__12daTagHstop_cFv.s b/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/execute__12daTagHstop_cFv.s deleted file mode 100644 index ce451a1eba..0000000000 --- a/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/execute__12daTagHstop_cFv.s +++ /dev/null @@ -1,223 +0,0 @@ -lbl_805A475C: -/* 805A475C 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 805A4760 7C 08 02 A6 */ mflr r0 -/* 805A4764 90 01 00 14 */ stw r0, 0x14(r1) -/* 805A4768 93 E1 00 0C */ stw r31, 0xc(r1) -/* 805A476C 7C 7F 1B 78 */ mr r31, r3 -/* 805A4770 A0 03 00 F8 */ lhz r0, 0xf8(r3) -/* 805A4774 28 00 00 01 */ cmplwi r0, 1 -/* 805A4778 40 82 00 A0 */ bne lbl_805A4818 -/* 805A477C 88 1F 05 73 */ lbz r0, 0x573(r31) -/* 805A4780 28 00 00 02 */ cmplwi r0, 2 -/* 805A4784 40 82 00 30 */ bne lbl_805A47B4 -/* 805A4788 3C 60 80 5A */ lis r3, m_msgFlow__12daTagHstop_c@ha /* 0x805A4B8C@ha */ -/* 805A478C 38 63 4B 8C */ addi r3, r3, m_msgFlow__12daTagHstop_c@l /* 0x805A4B8C@l */ -/* 805A4790 7F E4 FB 78 */ mr r4, r31 -/* 805A4794 A8 1F 04 E8 */ lha r0, 0x4e8(r31) -/* 805A4798 54 05 04 3E */ clrlwi r5, r0, 0x10 -/* 805A479C 38 C0 00 00 */ li r6, 0 -/* 805A47A0 38 E0 00 00 */ li r7, 0 -/* 805A47A4 4B CA 57 ED */ bl init__10dMsgFlow_cFP10fopAc_ac_ciiPP10fopAc_ac_c -/* 805A47A8 38 00 00 03 */ li r0, 3 -/* 805A47AC 98 1F 05 73 */ stb r0, 0x573(r31) -/* 805A47B0 48 00 02 E0 */ b lbl_805A4A90 -lbl_805A47B4: -/* 805A47B4 3C 60 80 5A */ lis r3, m_msgFlow__12daTagHstop_c@ha /* 0x805A4B8C@ha */ -/* 805A47B8 38 63 4B 8C */ addi r3, r3, m_msgFlow__12daTagHstop_c@l /* 0x805A4B8C@l */ -/* 805A47BC 7F E4 FB 78 */ mr r4, r31 -/* 805A47C0 38 A0 00 00 */ li r5, 0 -/* 805A47C4 38 C0 00 00 */ li r6, 0 -/* 805A47C8 4B CA 5B 11 */ bl doFlow__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_ci -/* 805A47CC 2C 03 00 00 */ cmpwi r3, 0 -/* 805A47D0 41 82 02 C0 */ beq lbl_805A4A90 -/* 805A47D4 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A47D8 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A47DC 38 63 4E C8 */ addi r3, r3, 0x4ec8 -/* 805A47E0 4B A9 DC 89 */ bl reset__14dEvt_control_cFv -/* 805A47E4 38 00 00 00 */ li r0, 0 -/* 805A47E8 98 1F 05 73 */ stb r0, 0x573(r31) -/* 805A47EC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A47F0 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A47F4 A8 83 5D F8 */ lha r4, 0x5df8(r3) -/* 805A47F8 A8 03 5D F4 */ lha r0, 0x5df4(r3) -/* 805A47FC 7C 00 22 14 */ add r0, r0, r4 -/* 805A4800 B0 03 5D F4 */ sth r0, 0x5df4(r3) -/* 805A4804 38 80 00 8D */ li r4, 0x8d -/* 805A4808 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A480C 7C 05 07 74 */ extsb r5, r0 -/* 805A4810 4B A9 09 F1 */ bl onSwitch__10dSv_info_cFii -/* 805A4814 48 00 02 7C */ b lbl_805A4A90 -lbl_805A4818: -/* 805A4818 80 1F 05 74 */ lwz r0, 0x574(r31) -/* 805A481C 2C 00 00 00 */ cmpwi r0, 0 -/* 805A4820 41 82 00 84 */ beq lbl_805A48A4 -/* 805A4824 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A4828 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A482C 38 80 00 8F */ li r4, 0x8f -/* 805A4830 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A4834 7C 05 07 74 */ extsb r5, r0 -/* 805A4838 4B A9 0B 29 */ bl isSwitch__10dSv_info_cCFii -/* 805A483C 2C 03 00 00 */ cmpwi r3, 0 -/* 805A4840 41 82 00 10 */ beq lbl_805A4850 -/* 805A4844 38 00 00 00 */ li r0, 0 -/* 805A4848 90 1F 05 74 */ stw r0, 0x574(r31) -/* 805A484C 48 00 00 58 */ b lbl_805A48A4 -lbl_805A4850: -/* 805A4850 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A4854 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A4858 80 63 5D B4 */ lwz r3, 0x5db4(r3) -/* 805A485C 81 83 06 28 */ lwz r12, 0x628(r3) -/* 805A4860 81 8C 01 48 */ lwz r12, 0x148(r12) -/* 805A4864 7D 89 03 A6 */ mtctr r12 -/* 805A4868 4E 80 04 21 */ bctrl -/* 805A486C 2C 03 00 00 */ cmpwi r3, 0 -/* 805A4870 41 82 00 28 */ beq lbl_805A4898 -/* 805A4874 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A4878 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A487C 38 80 00 8F */ li r4, 0x8f -/* 805A4880 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A4884 7C 05 07 74 */ extsb r5, r0 -/* 805A4888 4B A9 09 79 */ bl onSwitch__10dSv_info_cFii -/* 805A488C 38 00 00 00 */ li r0, 0 -/* 805A4890 90 1F 05 74 */ stw r0, 0x574(r31) -/* 805A4894 48 00 00 10 */ b lbl_805A48A4 -lbl_805A4898: -/* 805A4898 80 7F 05 74 */ lwz r3, 0x574(r31) -/* 805A489C 38 03 FF FF */ addi r0, r3, -1 -/* 805A48A0 90 1F 05 74 */ stw r0, 0x574(r31) -lbl_805A48A4: -/* 805A48A4 7F E3 FB 78 */ mr r3, r31 -/* 805A48A8 4B FF FE 11 */ bl setActive__12daTagHstop_cFv -/* 805A48AC 88 9F 05 73 */ lbz r4, 0x573(r31) -/* 805A48B0 28 04 00 00 */ cmplwi r4, 0 -/* 805A48B4 41 82 00 98 */ beq lbl_805A494C -/* 805A48B8 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A48BC 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A48C0 80 A3 5D B8 */ lwz r5, 0x5db8(r3) -/* 805A48C4 88 1F 05 72 */ lbz r0, 0x572(r31) -/* 805A48C8 28 00 00 02 */ cmplwi r0, 2 -/* 805A48CC 40 82 00 18 */ bne lbl_805A48E4 -/* 805A48D0 88 03 00 EC */ lbz r0, 0xec(r3) -/* 805A48D4 28 00 00 00 */ cmplwi r0, 0 -/* 805A48D8 40 82 00 0C */ bne lbl_805A48E4 -/* 805A48DC 28 05 00 00 */ cmplwi r5, 0 -/* 805A48E0 40 82 00 10 */ bne lbl_805A48F0 -lbl_805A48E4: -/* 805A48E4 38 00 00 00 */ li r0, 0 -/* 805A48E8 98 1F 05 73 */ stb r0, 0x573(r31) -/* 805A48EC 48 00 01 A4 */ b lbl_805A4A90 -lbl_805A48F0: -/* 805A48F0 28 04 00 01 */ cmplwi r4, 1 -/* 805A48F4 40 82 00 24 */ bne lbl_805A4918 -/* 805A48F8 80 65 17 48 */ lwz r3, 0x1748(r5) -/* 805A48FC 54 60 06 F7 */ rlwinm. r0, r3, 0, 0x1b, 0x1b -/* 805A4900 41 82 01 90 */ beq lbl_805A4A90 -/* 805A4904 54 60 06 73 */ rlwinm. r0, r3, 0, 0x19, 0x19 -/* 805A4908 40 82 01 88 */ bne lbl_805A4A90 -/* 805A490C 38 00 00 02 */ li r0, 2 -/* 805A4910 98 1F 05 73 */ stb r0, 0x573(r31) -/* 805A4914 48 00 01 7C */ b lbl_805A4A90 -lbl_805A4918: -/* 805A4918 28 04 00 02 */ cmplwi r4, 2 -/* 805A491C 40 82 01 74 */ bne lbl_805A4A90 -/* 805A4920 80 05 17 48 */ lwz r0, 0x1748(r5) -/* 805A4924 54 00 06 F7 */ rlwinm. r0, r0, 0, 0x1b, 0x1b -/* 805A4928 40 82 01 68 */ bne lbl_805A4A90 -/* 805A492C 7F E3 FB 78 */ mr r3, r31 -/* 805A4930 38 80 00 00 */ li r4, 0 -/* 805A4934 38 A0 00 00 */ li r5, 0 -/* 805A4938 4B A7 68 65 */ bl fopAcM_orderSpeakEvent__FP10fopAc_ac_cUsUs -/* 805A493C A0 1F 00 FA */ lhz r0, 0xfa(r31) -/* 805A4940 60 00 00 01 */ ori r0, r0, 1 -/* 805A4944 B0 1F 00 FA */ sth r0, 0xfa(r31) -/* 805A4948 48 00 01 48 */ b lbl_805A4A90 -lbl_805A494C: -/* 805A494C 88 1F 05 72 */ lbz r0, 0x572(r31) -/* 805A4950 28 00 00 02 */ cmplwi r0, 2 -/* 805A4954 40 82 01 3C */ bne lbl_805A4A90 -/* 805A4958 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A495C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A4960 88 03 4F AD */ lbz r0, 0x4fad(r3) -/* 805A4964 28 00 00 00 */ cmplwi r0, 0 -/* 805A4968 40 82 01 28 */ bne lbl_805A4A90 -/* 805A496C 88 03 00 EC */ lbz r0, 0xec(r3) -/* 805A4970 28 00 00 00 */ cmplwi r0, 0 -/* 805A4974 40 82 00 C0 */ bne lbl_805A4A34 -/* 805A4978 38 80 00 8D */ li r4, 0x8d -/* 805A497C 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A4980 7C 05 07 74 */ extsb r5, r0 -/* 805A4984 4B A9 09 DD */ bl isSwitch__10dSv_info_cCFii -/* 805A4988 2C 03 00 00 */ cmpwi r3, 0 -/* 805A498C 40 82 00 A8 */ bne lbl_805A4A34 -/* 805A4990 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A4994 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A4998 38 80 00 8D */ li r4, 0x8d -/* 805A499C 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A49A0 7C 05 07 74 */ extsb r5, r0 -/* 805A49A4 4B A9 08 5D */ bl onSwitch__10dSv_info_cFii -/* 805A49A8 3C 60 80 43 */ lis r3, g_meter2_info@ha /* 0x80430188@ha */ -/* 805A49AC 38 63 01 88 */ addi r3, r3, g_meter2_info@l /* 0x80430188@l */ -/* 805A49B0 38 80 00 2B */ li r4, 0x2b -/* 805A49B4 38 A0 00 5A */ li r5, 0x5a -/* 805A49B8 38 C0 00 01 */ li r6, 1 -/* 805A49BC 4B C7 77 61 */ bl setFloatingFlow__13dMeter2Info_cFUssb -/* 805A49C0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A49C4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A49C8 38 80 00 8F */ li r4, 0x8f -/* 805A49CC 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A49D0 7C 05 07 74 */ extsb r5, r0 -/* 805A49D4 4B A9 09 8D */ bl isSwitch__10dSv_info_cCFii -/* 805A49D8 2C 03 00 00 */ cmpwi r3, 0 -/* 805A49DC 40 82 00 B4 */ bne lbl_805A4A90 -/* 805A49E0 38 00 04 B0 */ li r0, 0x4b0 -/* 805A49E4 90 1F 05 74 */ stw r0, 0x574(r31) -/* 805A49E8 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A49EC 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A49F0 38 80 00 8A */ li r4, 0x8a -/* 805A49F4 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A49F8 7C 05 07 74 */ extsb r5, r0 -/* 805A49FC 4B A9 08 B5 */ bl offSwitch__10dSv_info_cFii -/* 805A4A00 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A4A04 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A4A08 38 80 00 8B */ li r4, 0x8b -/* 805A4A0C 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A4A10 7C 05 07 74 */ extsb r5, r0 -/* 805A4A14 4B A9 08 9D */ bl offSwitch__10dSv_info_cFii -/* 805A4A18 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A4A1C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A4A20 38 80 00 8C */ li r4, 0x8c -/* 805A4A24 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A4A28 7C 05 07 74 */ extsb r5, r0 -/* 805A4A2C 4B A9 08 85 */ bl offSwitch__10dSv_info_cFii -/* 805A4A30 48 00 00 60 */ b lbl_805A4A90 -lbl_805A4A34: -/* 805A4A34 80 1F 05 74 */ lwz r0, 0x574(r31) -/* 805A4A38 2C 00 00 00 */ cmpwi r0, 0 -/* 805A4A3C 40 82 00 54 */ bne lbl_805A4A90 -/* 805A4A40 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A4A44 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A4A48 38 80 00 8F */ li r4, 0x8f -/* 805A4A4C 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A4A50 7C 05 07 74 */ extsb r5, r0 -/* 805A4A54 4B A9 09 0D */ bl isSwitch__10dSv_info_cCFii -/* 805A4A58 2C 03 00 00 */ cmpwi r3, 0 -/* 805A4A5C 40 82 00 34 */ bne lbl_805A4A90 -/* 805A4A60 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A4A64 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A4A68 38 80 00 8F */ li r4, 0x8f -/* 805A4A6C 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A4A70 7C 05 07 74 */ extsb r5, r0 -/* 805A4A74 4B A9 07 8D */ bl onSwitch__10dSv_info_cFii -/* 805A4A78 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A4A7C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A4A80 38 80 00 8E */ li r4, 0x8e -/* 805A4A84 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A4A88 7C 05 07 74 */ extsb r5, r0 -/* 805A4A8C 4B A9 07 75 */ bl onSwitch__10dSv_info_cFii -lbl_805A4A90: -/* 805A4A90 38 60 00 01 */ li r3, 1 -/* 805A4A94 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 805A4A98 80 01 00 14 */ lwz r0, 0x14(r1) -/* 805A4A9C 7C 08 03 A6 */ mtlr r0 -/* 805A4AA0 38 21 00 10 */ addi r1, r1, 0x10 -/* 805A4AA4 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/setActive__12daTagHstop_cFv.s b/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/setActive__12daTagHstop_cFv.s deleted file mode 100644 index dec5c6cc41..0000000000 --- a/asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/setActive__12daTagHstop_cFv.s +++ /dev/null @@ -1,46 +0,0 @@ -lbl_805A46B8: -/* 805A46B8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 805A46BC 7C 08 02 A6 */ mflr r0 -/* 805A46C0 90 01 00 14 */ stw r0, 0x14(r1) -/* 805A46C4 93 E1 00 0C */ stw r31, 0xc(r1) -/* 805A46C8 7C 7F 1B 78 */ mr r31, r3 -/* 805A46CC 88 83 05 70 */ lbz r4, 0x570(r3) -/* 805A46D0 28 04 00 FF */ cmplwi r4, 0xff -/* 805A46D4 41 82 00 60 */ beq lbl_805A4734 -/* 805A46D8 88 1F 05 72 */ lbz r0, 0x572(r31) -/* 805A46DC 28 00 00 02 */ cmplwi r0, 2 -/* 805A46E0 41 82 00 54 */ beq lbl_805A4734 -/* 805A46E4 28 00 00 00 */ cmplwi r0, 0 -/* 805A46E8 40 82 00 20 */ bne lbl_805A4708 -/* 805A46EC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A46F0 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A46F4 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A46F8 7C 05 07 74 */ extsb r5, r0 -/* 805A46FC 4B A9 0C 65 */ bl isSwitch__10dSv_info_cCFii -/* 805A4700 2C 03 00 00 */ cmpwi r3, 0 -/* 805A4704 40 82 00 30 */ bne lbl_805A4734 -lbl_805A4708: -/* 805A4708 88 1F 05 72 */ lbz r0, 0x572(r31) -/* 805A470C 28 00 00 01 */ cmplwi r0, 1 -/* 805A4710 40 82 00 30 */ bne lbl_805A4740 -/* 805A4714 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 805A4718 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 805A471C 88 9F 05 70 */ lbz r4, 0x570(r31) -/* 805A4720 88 1F 04 BA */ lbz r0, 0x4ba(r31) -/* 805A4724 7C 05 07 74 */ extsb r5, r0 -/* 805A4728 4B A9 0C 39 */ bl isSwitch__10dSv_info_cCFii -/* 805A472C 2C 03 00 00 */ cmpwi r3, 0 -/* 805A4730 40 82 00 10 */ bne lbl_805A4740 -lbl_805A4734: -/* 805A4734 38 00 00 01 */ li r0, 1 -/* 805A4738 98 1F 05 71 */ stb r0, 0x571(r31) -/* 805A473C 48 00 00 0C */ b lbl_805A4748 -lbl_805A4740: -/* 805A4740 38 00 00 00 */ li r0, 0 -/* 805A4744 98 1F 05 71 */ stb r0, 0x571(r31) -lbl_805A4748: -/* 805A4748 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 805A474C 80 01 00 14 */ lwz r0, 0x14(r1) -/* 805A4750 7C 08 03 A6 */ mtlr r0 -/* 805A4754 38 21 00 10 */ addi r1, r1, 0x10 -/* 805A4758 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/tag/d_a_tag_instruction/d_a_tag_instruction/daTagInst_Create__FP10fopAc_ac_c.s b/asm/rel/d/a/tag/d_a_tag_instruction/d_a_tag_instruction/daTagInst_Create__FP10fopAc_ac_c.s deleted file mode 100644 index 6eec180bbd..0000000000 --- a/asm/rel/d/a/tag/d_a_tag_instruction/d_a_tag_instruction/daTagInst_Create__FP10fopAc_ac_c.s +++ /dev/null @@ -1,23 +0,0 @@ -lbl_80D59AF8: -/* 80D59AF8 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80D59AFC 7C 08 02 A6 */ mflr r0 -/* 80D59B00 90 01 00 14 */ stw r0, 0x14(r1) -/* 80D59B04 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80D59B08 7C 7F 1B 78 */ mr r31, r3 -/* 80D59B0C 80 03 04 A0 */ lwz r0, 0x4a0(r3) -/* 80D59B10 54 00 07 39 */ rlwinm. r0, r0, 0, 0x1c, 0x1c -/* 80D59B14 40 82 00 1C */ bne lbl_80D59B30 -/* 80D59B18 28 1F 00 00 */ cmplwi r31, 0 -/* 80D59B1C 41 82 00 08 */ beq lbl_80D59B24 -/* 80D59B20 4B 2B F0 45 */ bl __ct__10fopAc_ac_cFv -lbl_80D59B24: -/* 80D59B24 80 1F 04 A0 */ lwz r0, 0x4a0(r31) -/* 80D59B28 60 00 00 08 */ ori r0, r0, 8 -/* 80D59B2C 90 1F 04 A0 */ stw r0, 0x4a0(r31) -lbl_80D59B30: -/* 80D59B30 38 60 00 04 */ li r3, 4 -/* 80D59B34 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80D59B38 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80D59B3C 7C 08 03 A6 */ mtlr r0 -/* 80D59B40 38 21 00 10 */ addi r1, r1, 0x10 -/* 80D59B44 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/tag/d_a_tag_instruction/d_a_tag_instruction/daTagInst_Delete__FP11daTagInst_c.s b/asm/rel/d/a/tag/d_a_tag_instruction/d_a_tag_instruction/daTagInst_Delete__FP11daTagInst_c.s deleted file mode 100644 index 1f199378c5..0000000000 --- a/asm/rel/d/a/tag/d_a_tag_instruction/d_a_tag_instruction/daTagInst_Delete__FP11daTagInst_c.s +++ /dev/null @@ -1,14 +0,0 @@ -lbl_80D59B48: -/* 80D59B48 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80D59B4C 7C 08 02 A6 */ mflr r0 -/* 80D59B50 90 01 00 14 */ stw r0, 0x14(r1) -/* 80D59B54 28 03 00 00 */ cmplwi r3, 0 -/* 80D59B58 41 82 00 0C */ beq lbl_80D59B64 -/* 80D59B5C 38 80 00 00 */ li r4, 0 -/* 80D59B60 4B 2B F1 2D */ bl __dt__10fopAc_ac_cFv -lbl_80D59B64: -/* 80D59B64 38 60 00 01 */ li r3, 1 -/* 80D59B68 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80D59B6C 7C 08 03 A6 */ mtlr r0 -/* 80D59B70 38 21 00 10 */ addi r1, r1, 0x10 -/* 80D59B74 4E 80 00 20 */ blr diff --git a/asm/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist/Create__11daTagMist_cFv.s b/asm/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist/Create__11daTagMist_cFv.s index 69caf3f124..4c51652614 100644 --- a/asm/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist/Create__11daTagMist_cFv.s +++ b/asm/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist/Create__11daTagMist_cFv.s @@ -42,8 +42,8 @@ lbl_8048F370: /* 8048F410 41 82 00 14 */ beq lbl_8048F424 /* 8048F414 80 1F 00 B0 */ lwz r0, 0xb0(r31) /* 8048F418 54 00 46 BE */ rlwinm r0, r0, 8, 0x1a, 0x1f -/* 8048F41C 3C 60 80 45 */ lis r3, struct_80450DC0+0x0@ha /* 0x80450DC0@ha */ -/* 8048F420 98 03 0D C0 */ stb r0, struct_80450DC0+0x0@l(r3) /* 0x80450DC0@l */ +/* 8048F41C 3C 60 80 45 */ lis r3, mPlayerNo__11daTagMist_c+0x0@ha /* 0x80450DC0@ha */ +/* 8048F420 98 03 0D C0 */ stb r0, mPlayerNo__11daTagMist_c+0x0@l(r3) /* 0x80450DC0@l */ lbl_8048F424: /* 8048F424 38 00 00 00 */ li r0, 0 /* 8048F428 98 1F 05 A0 */ stb r0, 0x5a0(r31) diff --git a/asm/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist/execute__11daTagMist_cFv.s b/asm/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist/execute__11daTagMist_cFv.s index 428201bb3d..f7259cf39b 100644 --- a/asm/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist/execute__11daTagMist_cFv.s +++ b/asm/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist/execute__11daTagMist_cFv.s @@ -69,8 +69,8 @@ lbl_8048F63C: /* 8048F65C 4B FF FC 69 */ bl onMySw__11daTagMist_cFv /* 8048F660 80 1F 00 B0 */ lwz r0, 0xb0(r31) /* 8048F664 54 00 46 BE */ rlwinm r0, r0, 8, 0x1a, 0x1f -/* 8048F668 3C 60 80 45 */ lis r3, struct_80450DC0+0x0@ha /* 0x80450DC0@ha */ -/* 8048F66C 98 03 0D C0 */ stb r0, struct_80450DC0+0x0@l(r3) /* 0x80450DC0@l */ +/* 8048F668 3C 60 80 45 */ lis r3, mPlayerNo__11daTagMist_c+0x0@ha /* 0x80450DC0@ha */ +/* 8048F66C 98 03 0D C0 */ stb r0, mPlayerNo__11daTagMist_c+0x0@l(r3) /* 0x80450DC0@l */ lbl_8048F670: /* 8048F670 9B DF 05 A0 */ stb r30, 0x5a0(r31) /* 8048F674 38 60 00 01 */ li r3, 1 diff --git a/diff.py b/diff.py index 83199a2762..10451f29f7 100644 --- a/diff.py +++ b/diff.py @@ -2,23 +2,21 @@ # PYTHON_ARGCOMPLETE_OK import argparse import sys -import platform -from pathlib import Path, PurePath, PureWindowsPath from typing import ( Any, + Callable, Dict, + Iterator, List, Match, - NamedTuple, NoReturn, Optional, + Pattern, Set, Tuple, + Type, Union, - Callable, - Pattern, ) -import functools def fail(msg: str) -> NoReturn: @@ -26,220 +24,306 @@ def fail(msg: str) -> NoReturn: sys.exit(1) -# Prefer to use diff_settings.py from the current working directory -sys.path.insert(0, ".") -try: - import diff_settings -except ModuleNotFoundError: - fail("Unable to find diff_settings.py in the same directory.") -sys.path.pop(0) +def static_assert_unreachable(x: NoReturn) -> NoReturn: + raise Exception("Unreachable! " + repr(x)) -from elftools.elf.elffile import ELFFile # ==== COMMAND-LINE ==== -try: - import argcomplete # type: ignore -except ModuleNotFoundError: - argcomplete = None +if __name__ == "__main__": + # Prefer to use diff_settings.py from the current working directory + sys.path.insert(0, ".") + try: + import diff_settings + except ModuleNotFoundError: + fail("Unable to find diff_settings.py in the same directory.") + sys.path.pop(0) -parser = argparse.ArgumentParser(description="Diff MIPS or AArch64 assembly.") + try: + import argcomplete + except ModuleNotFoundError: + argcomplete = None -start_argument = parser.add_argument( - "start", - help="Function name or address to start diffing from.", -) + parser = argparse.ArgumentParser( + description="Diff MIPS, PPC, AArch64, or ARM32 assembly." + ) -if argcomplete: + start_argument = parser.add_argument( + "start", + help="Function name or address to start diffing from.", + ) - def complete_symbol( - prefix: str, parsed_args: argparse.Namespace, **kwargs: object - ) -> List[str]: - if not prefix or prefix.startswith("-"): - # skip reading the map file, which would - # result in a lot of useless completions - return [] - config: Dict[str, Any] = {} - diff_settings.apply(config, parsed_args) # type: ignore - mapfile = config.get("mapfile") - if not mapfile: - return [] - completes = [] - with open(mapfile) as f: - data = f.read() - # assume symbols are prefixed by a space character - search = f" {prefix}" - pos = data.find(search) - while pos != -1: - # skip the space character in the search string - pos += 1 - # assume symbols are suffixed by either a space - # character or a (unix-style) line return - spacePos = data.find(" ", pos) - lineReturnPos = data.find("\n", pos) - if lineReturnPos == -1: - endPos = spacePos - elif spacePos == -1: - endPos = lineReturnPos - else: - endPos = min(spacePos, lineReturnPos) - if endPos == -1: - match = data[pos:] - pos = -1 - else: - match = data[pos:endPos] - pos = data.find(search, endPos) - completes.append(match) - return completes + if argcomplete: - setattr(start_argument, "completer", complete_symbol) + def complete_symbol( + prefix: str, parsed_args: argparse.Namespace, **kwargs: object + ) -> List[str]: + if not prefix or prefix.startswith("-"): + # skip reading the map file, which would + # result in a lot of useless completions + return [] + config: Dict[str, Any] = {} + diff_settings.apply(config, parsed_args) # type: ignore + mapfile = config.get("mapfile") + if not mapfile: + return [] + completes = [] + with open(mapfile) as f: + data = f.read() + # assume symbols are prefixed by a space character + search = f" {prefix}" + pos = data.find(search) + while pos != -1: + # skip the space character in the search string + pos += 1 + # assume symbols are suffixed by either a space + # character or a (unix-style) line return + spacePos = data.find(" ", pos) + lineReturnPos = data.find("\n", pos) + if lineReturnPos == -1: + endPos = spacePos + elif spacePos == -1: + endPos = lineReturnPos + else: + endPos = min(spacePos, lineReturnPos) + if endPos == -1: + match = data[pos:] + pos = -1 + else: + match = data[pos:endPos] + pos = data.find(search, endPos) + completes.append(match) + return completes -parser.add_argument( - "end", - nargs="?", - help="Address to end diff at.", -) -parser.add_argument( - "-o", - dest="diff_obj", - action="store_true", - help="Diff .o files rather than a whole binary. This makes it possible to " - "see symbol names. (Recommended)", -) -parser.add_argument( - "-e", - "--elf", - dest="diff_elf_symbol", - metavar="SYMBOL", - help="Diff a given function in two ELFs, one being stripped and the other " - "one non-stripped. Requires objdump from binutils 2.33+.", -) -parser.add_argument( - "--source", - action="store_true", - help="Show source code (if possible). Only works with -o and -e.", -) -parser.add_argument( - "--inlines", - action="store_true", - help="Show inline function calls (if possible). Only works with -o and -e.", -) -parser.add_argument( - "--base-asm", - dest="base_asm", - metavar="FILE", - help="Read assembly from given file instead of configured base img.", -) -parser.add_argument( - "--write-asm", - dest="write_asm", - metavar="FILE", - help="Write the current assembly output to file, e.g. for use with --base-asm.", -) -parser.add_argument( - "-m", - "--make", - dest="make", - action="store_true", - help="Automatically run 'make' on the .o file or binary before diffing.", -) -parser.add_argument( - "-l", - "--skip-lines", - dest="skip_lines", - type=int, - default=0, - metavar="LINES", - help="Skip the first N lines of output.", -) -parser.add_argument( - "-s", - "--stop-jr-ra", - dest="stop_jrra", - action="store_true", - help="Stop disassembling at the first 'jr ra'. Some functions have multiple return points, so use with care!", -) -parser.add_argument( - "-i", - "--ignore-large-imms", - dest="ignore_large_imms", - action="store_true", - help="Pretend all large enough immediates are the same.", -) -parser.add_argument( - "-I", - "--ignore-addr-diffs", - action="store_true", - help="Ignore address differences. Currently only affects AArch64.", -) -parser.add_argument( - "-B", - "--no-show-branches", - dest="show_branches", - action="store_false", - help="Don't visualize branches/branch targets.", -) -parser.add_argument( - "-S", - "--base-shift", - dest="base_shift", - type=str, - default="0", - help="Diff position X in our img against position X + shift in the base img. " - 'Arithmetic is allowed, so e.g. |-S "0x1234 - 0x4321"| is a reasonable ' - "flag to pass if it is known that position 0x1234 in the base img syncs " - "up with position 0x4321 in our img. Not supported together with -o.", -) -parser.add_argument( - "-w", - "--watch", - dest="watch", - action="store_true", - help="Automatically update when source/object files change. " - "Recommended in combination with -m.", -) -parser.add_argument( - "-3", - "--threeway=prev", - dest="threeway", - action="store_const", - const="prev", - help="Show a three-way diff between target asm, current asm, and asm " - "prior to -w rebuild. Requires -w.", -) -parser.add_argument( - "-b", - "--threeway=base", - dest="threeway", - action="store_const", - const="base", - help="Show a three-way diff between target asm, current asm, and asm " - "when diff.py was started. Requires -w.", -) -parser.add_argument( - "--width", - dest="column_width", - type=int, - default=50, - help="Sets the width of the left and right view column.", -) -parser.add_argument( - "--algorithm", - dest="algorithm", - default="levenshtein", - choices=["levenshtein", "difflib"], - help="Diff algorithm to use. Levenshtein gives the minimum diff, while difflib " - "aims for long sections of equal opcodes. Defaults to %(default)s.", -) -parser.add_argument( - "--max-size", - "--max-lines", - dest="max_lines", - type=int, - default=1024, - help="The maximum length of the diff, in lines.", -) -parser.add_argument( + setattr(start_argument, "completer", complete_symbol) + + parser.add_argument( + "end", + nargs="?", + help="Address to end diff at.", + ) + parser.add_argument( + "-o", + dest="diff_obj", + action="store_true", + help="""Diff .o files rather than a whole binary. This makes it possible to + see symbol names. (Recommended)""", + ) + parser.add_argument( + "-f", + "--objfile", + dest="objfile", + type=str, + help="""File path for an object file being diffed. When used + the map file isn't searched for the function given. Useful for dynamically + linked libraries.""", + ) + parser.add_argument( + "-e", + "--elf", + dest="diff_elf_symbol", + metavar="SYMBOL", + help="""Diff a given function in two ELFs, one being stripped and the other + one non-stripped. Requires objdump from binutils 2.33+.""", + ) + parser.add_argument( + "-c", + "--source", + dest="show_source", + action="store_true", + help="Show source code (if possible). Only works with -o or -e.", + ) + parser.add_argument( + "-C", + "--source-old-binutils", + dest="source_old_binutils", + action="store_true", + help="""Tweak --source handling to make it work with binutils < 2.33. + Implies --source.""", + ) + parser.add_argument( + "-j", + "--section", + dest="diff_section", + default=".text", + metavar="SECTION", + help="Diff restricted to a given output section.", + ) + parser.add_argument( + "-L", + "--line-numbers", + dest="show_line_numbers", + action="store_const", + const=True, + help="""Show source line numbers in output, when available. May be enabled by + default depending on diff_settings.py.""", + ) + parser.add_argument( + "--no-line-numbers", + dest="show_line_numbers", + action="store_const", + const=False, + help="Hide source line numbers in output.", + ) + parser.add_argument( + "--inlines", + dest="inlines", + action="store_true", + help="Show inline function calls (if possible). Only works with -o or -e.", + ) + parser.add_argument( + "--base-asm", + dest="base_asm", + metavar="FILE", + help="Read assembly from given file instead of configured base img.", + ) + parser.add_argument( + "--write-asm", + dest="write_asm", + metavar="FILE", + help="Write the current assembly output to file, e.g. for use with --base-asm.", + ) + parser.add_argument( + "-m", + "--make", + dest="make", + action="store_true", + help="Automatically run 'make' on the .o file or binary before diffing.", + ) + parser.add_argument( + "-l", + "--skip-lines", + dest="skip_lines", + metavar="LINES", + type=int, + default=0, + help="Skip the first LINES lines of output.", + ) + parser.add_argument( + "-s", + "--stop-at-ret", + dest="stop_at_ret", + action="store_true", + help="""Stop disassembling at the first return instruction. + Some functions have multiple return points, so use with care!""", + ) + parser.add_argument( + "-i", + "--ignore-large-imms", + dest="ignore_large_imms", + action="store_true", + help="Pretend all large enough immediates are the same.", + ) + parser.add_argument( + "-I", + "--ignore-addr-diffs", + dest="ignore_addr_diffs", + action="store_true", + help="Ignore address differences. Currently only affects AArch64 and ARM32.", + ) + parser.add_argument( + "-B", + "--no-show-branches", + dest="show_branches", + action="store_false", + help="Don't visualize branches/branch targets.", + ) + parser.add_argument( + "-S", + "--base-shift", + dest="base_shift", + metavar="N", + type=str, + default="0", + help="""Diff position N in our img against position N + shift in the base img. + Arithmetic is allowed, so e.g. |-S "0x1234 - 0x4321"| is a reasonable + flag to pass if it is known that position 0x1234 in the base img syncs + up with position 0x4321 in our img. Not supported together with -o.""", + ) + parser.add_argument( + "-w", + "--watch", + dest="watch", + action="store_true", + help="""Automatically update when source/object files change. + Recommended in combination with -m.""", + ) + parser.add_argument( + "-3", + "--threeway=prev", + dest="threeway", + action="store_const", + const="prev", + help="""Show a three-way diff between target asm, current asm, and asm + prior to -w rebuild. Requires -w.""", + ) + parser.add_argument( + "-b", + "--threeway=base", + dest="threeway", + action="store_const", + const="base", + help="""Show a three-way diff between target asm, current asm, and asm + when diff.py was started. Requires -w.""", + ) + parser.add_argument( + "--width", + dest="column_width", + metavar="COLS", + type=int, + default=50, + help="Sets the width of the left and right view column.", + ) + parser.add_argument( + "--algorithm", + dest="algorithm", + default="levenshtein", + choices=["levenshtein", "difflib"], + help="""Diff algorithm to use. Levenshtein gives the minimum diff, while difflib + aims for long sections of equal opcodes. Defaults to %(default)s.""", + ) + parser.add_argument( + "--max-size", + "--max-lines", + metavar="LINES", + dest="max_lines", + type=int, + default=1024, + help="The maximum length of the diff, in lines.", + ) + parser.add_argument( + "--no-pager", + dest="no_pager", + action="store_true", + help="""Disable the pager; write output directly to stdout, then exit. + Incompatible with --watch.""", + ) + parser.add_argument( + "--format", + choices=("color", "plain", "html", "json"), + default="color", + help="Output format, default is color. --format=html or json implies --no-pager.", + ) + parser.add_argument( + "-U", + "--compress-matching", + metavar="N", + dest="compress_matching", + type=int, + help="""Compress streaks of matching lines, leaving N lines of context + around non-matching parts.""", + ) + parser.add_argument( + "-V", + "--compress-sameinstr", + metavar="N", + dest="compress_sameinstr", + type=int, + help="""Compress streaks of lines with same instructions (but possibly + different regalloc), leaving N lines of context around other parts.""", + ) + + parser.add_argument( "--lhs-name", dest="lhs_name", type=str, @@ -272,127 +356,615 @@ if argcomplete: # (We do imports late to optimize auto-complete performance.) -import re -import os +import abc import ast -import subprocess +from collections import Counter, defaultdict +from dataclasses import asdict, dataclass, field, replace import difflib -import string +import enum +import html import itertools -import threading +import json +import os import queue +import re +import string +import struct +import subprocess +import threading import time +import traceback MISSING_PREREQUISITES = ( "Missing prerequisite python module {}. " - "Run `python3 -m pip install --user colorama ansiwrap watchdog python-Levenshtein cxxfilt` to install prerequisites (cxxfilt only needed with --source)." + "Run `python3 -m pip install --user colorama watchdog python-Levenshtein cxxfilt` to install prerequisites (cxxfilt only needed with --source)." ) try: - from colorama import Fore, Style, Back # type: ignore - import ansiwrap # type: ignore - import watchdog # type: ignore + from colorama import Back, Fore, Style + import watchdog except ModuleNotFoundError as e: fail(MISSING_PREREQUISITES.format(e.name)) # ==== CONFIG ==== -args = parser.parse_args() -# Set imgs, map file and make flags in a project-specific manner. -config: Dict[str, Any] = {} -diff_settings.apply(config, args) # type: ignore +@dataclass +class ProjectSettings: + arch_str: str + objdump_executable: str + objdump_flags: List[str] + build_command: List[str] + map_format: str + build_dir: str + ms_map_address_offset: int + baseimg: Optional[str] + myimg: Optional[str] + mapfile: Optional[str] + source_directories: Optional[List[str]] + source_extensions: List[str] + show_line_numbers_default: bool + disassemble_all: bool + reg_categories: Dict[str, int] -arch: str = config.get("arch", "mips") -baseimg: Optional[str] = config.get("baseimg") -myimg: Optional[str] = config.get("myimg") -mapfile: Optional[str] = config.get("mapfile") -makeflags: List[str] = config.get("makeflags", []) -source_directories: Optional[List[str]] = config.get("source_directories") -objdump_executable: Optional[str] = config.get("objdump_executable") -map_format: str = config.get("map_format", "gnu") -MAX_FUNCTION_SIZE_LINES: int = args.max_lines -MAX_FUNCTION_SIZE_BYTES: int = MAX_FUNCTION_SIZE_LINES * 4 +@dataclass +class Compress: + context: int + same_instr: bool -COLOR_ROTATION: List[str] = [ - Fore.MAGENTA, - Fore.CYAN, - Fore.GREEN, - Fore.RED, - Fore.LIGHTYELLOW_EX, - Fore.LIGHTMAGENTA_EX, - Fore.LIGHTCYAN_EX, - Fore.LIGHTGREEN_EX, - Fore.LIGHTBLACK_EX, -] -BUFFER_CMD: List[str] = ["tail", "-c", str(10 ** 9)] -LESS_CMD: List[str] = ["less", "-SRic", "-#6"] +@dataclass +class Config: + arch: "ArchSettings" -DEBOUNCE_DELAY: float = 0.1 -FS_WATCH_EXTENSIONS: List[str] = [".c", ".cpp", ".h", ".s"] + # Build/objdump options + diff_obj: bool + objfile: Optional[str] + make: bool + source_old_binutils: bool + diff_section: str + inlines: bool + max_function_size_lines: int + max_function_size_bytes: int -# ==== LOGIC ==== + # Display options + formatter: "Formatter" + threeway: Optional[str] + base_shift: int + skip_lines: int + compress: Optional[Compress] + show_branches: bool + show_line_numbers: bool + show_source: bool + stop_at_ret: bool + ignore_large_imms: bool + ignore_addr_diffs: bool + algorithm: str + reg_categories: Dict[str, int] -ObjdumpCommand = Tuple[List[str], str, Optional[str]] + # Score options + score_stack_differences = True + penalty_stackdiff = 1 + penalty_regalloc = 5 + penalty_reordering = 60 + penalty_insertion = 100 + penalty_deletion = 100 -if args.algorithm == "levenshtein": - try: - import Levenshtein # type: ignore - except ModuleNotFoundError as e: - fail(MISSING_PREREQUISITES.format(e.name)) -if args.source: - try: - import cxxfilt # type: ignore - except ModuleNotFoundError as e: - fail(MISSING_PREREQUISITES.format(e.name)) +def create_project_settings(settings: Dict[str, Any]) -> ProjectSettings: + return ProjectSettings( + arch_str=settings.get("arch", "mips"), + baseimg=settings.get("baseimg"), + myimg=settings.get("myimg"), + mapfile=settings.get("mapfile"), + build_command=settings.get( + "make_command", ["make", *settings.get("makeflags", [])] + ), + source_directories=settings.get("source_directories"), + source_extensions=settings.get( + "source_extensions", [".c", ".h", ".cpp", ".hpp", ".s"] + ), + objdump_executable=get_objdump_executable(settings.get("objdump_executable")), + objdump_flags=settings.get("objdump_flags", []), + map_format=settings.get("map_format", "gnu"), + ms_map_address_offset=settings.get("ms_map_address_offset", 0), + build_dir=settings.get("build_dir", settings.get("mw_build_dir", "build/")), + show_line_numbers_default=settings.get("show_line_numbers_default", True), + disassemble_all=settings.get("disassemble_all", False), + reg_categories=settings.get("reg_categories", {}), + ) -if args.threeway and not args.watch: - fail("Threeway diffing requires -w.") -if objdump_executable is None: - for objdump_cand in ["mips-linux-gnu-objdump", "mips64-elf-objdump"]: +def create_config(args: argparse.Namespace, project: ProjectSettings) -> Config: + arch = get_arch(project.arch_str) + + formatter: Formatter + if args.format == "plain": + formatter = PlainFormatter(column_width=args.column_width) + elif args.format == "color": + formatter = AnsiFormatter(column_width=args.column_width) + elif args.format == "html": + formatter = HtmlFormatter() + elif args.format == "json": + formatter = JsonFormatter(arch_str=arch.name) + else: + raise ValueError(f"Unsupported --format: {args.format}") + + compress = None + if args.compress_matching is not None: + compress = Compress(args.compress_matching, False) + if args.compress_sameinstr is not None: + if compress is not None: + raise ValueError( + "Cannot pass both --compress-matching and --compress-sameinstr" + ) + compress = Compress(args.compress_sameinstr, True) + + show_line_numbers = args.show_line_numbers + if show_line_numbers is None: + show_line_numbers = project.show_line_numbers_default + + return Config( + arch=arch, + # Build/objdump options + diff_obj=args.diff_obj, + objfile=args.objfile, + make=args.make, + source_old_binutils=args.source_old_binutils, + diff_section=args.diff_section, + inlines=args.inlines, + max_function_size_lines=args.max_lines, + max_function_size_bytes=args.max_lines * 4, + # Display options + formatter=formatter, + threeway=args.threeway, + base_shift=eval_int( + args.base_shift, "Failed to parse --base-shift (-S) argument as an integer." + ), + skip_lines=args.skip_lines, + compress=compress, + show_branches=args.show_branches, + show_line_numbers=show_line_numbers, + show_source=args.show_source or args.source_old_binutils, + stop_at_ret=args.stop_at_ret, + ignore_large_imms=args.ignore_large_imms, + ignore_addr_diffs=args.ignore_addr_diffs, + algorithm=args.algorithm, + reg_categories=project.reg_categories, + ) + + +def get_objdump_executable(objdump_executable: Optional[str]) -> str: + if objdump_executable is not None: + return objdump_executable + + objdump_candidates = [ + "mips-linux-gnu-objdump", + "mips64-elf-objdump", + "mips-elf-objdump", + ] + for objdump_cand in objdump_candidates: try: subprocess.check_call( [objdump_cand, "--version"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, ) - objdump_executable = objdump_cand - break + return objdump_cand except subprocess.CalledProcessError: pass except FileNotFoundError: pass -if not objdump_executable: - fail( - "Missing binutils; please ensure mips-linux-gnu-objdump or mips64-elf-objdump exist, or configure objdump_executable." + return fail( + f"Missing binutils; please ensure {' or '.join(objdump_candidates)} exists, or configure objdump_executable." ) -def in_wsl() -> bool: - """ - WSL is thought to be the only common Linux kernel with Microsoft in the name, per Microsoft: - https://github.com/microsoft/WSL/issues/4071#issuecomment-496715404 - """ +def get_arch(arch_str: str) -> "ArchSettings": + for settings in ARCH_SETTINGS: + if arch_str == settings.name: + return settings + raise ValueError(f"Unknown architecture: {arch_str}") - return 'Microsoft' in platform.uname().release -def guess_sourcepath_processing() -> str: - if platform.system() == 'Windows': - return 'none' # we don't need to process - else: - if in_wsl(): - return 'wsl' +BUFFER_CMD: List[str] = ["tail", "-c", str(10**9)] + +# -S truncates long lines instead of wrapping them +# -R interprets color escape sequences +# -i ignores case when searching +# -c something about how the screen gets redrawn; I don't remember the purpose +# -#6 makes left/right arrow keys scroll by 6 characters +LESS_CMD: List[str] = ["less", "-SRic", "-#6"] + +DEBOUNCE_DELAY: float = 0.1 + +# ==== FORMATTING ==== + + +@enum.unique +class BasicFormat(enum.Enum): + NONE = enum.auto() + IMMEDIATE = enum.auto() + STACK = enum.auto() + REGISTER = enum.auto() + REGISTER_CATEGORY = enum.auto() + DELAY_SLOT = enum.auto() + DIFF_CHANGE = enum.auto() + DIFF_ADD = enum.auto() + DIFF_REMOVE = enum.auto() + SOURCE_FILENAME = enum.auto() + SOURCE_FUNCTION = enum.auto() + SOURCE_LINE_NUM = enum.auto() + SOURCE_OTHER = enum.auto() + + +@dataclass(frozen=True) +class RotationFormat: + group: str + index: int + key: str + + +Format = Union[BasicFormat, RotationFormat] +FormatFunction = Callable[[str], Format] + + +class Text: + segments: List[Tuple[str, Format]] + + def __init__(self, line: str = "", f: Format = BasicFormat.NONE) -> None: + self.segments = [(line, f)] if line else [] + + def reformat(self, f: Format) -> "Text": + return Text(self.plain(), f) + + def plain(self) -> str: + return "".join(s for s, f in self.segments) + + def __repr__(self) -> str: + return f"" + + def __bool__(self) -> bool: + return any(s for s, f in self.segments) + + def __str__(self) -> str: + # Use Formatter.apply(...) instead + return NotImplemented + + def __eq__(self, other: object) -> bool: + return NotImplemented + + def __add__(self, other: Union["Text", str]) -> "Text": + if isinstance(other, str): + other = Text(other) + result = Text() + # If two adjacent segments have the same format, merge their lines + if ( + self.segments + and other.segments + and self.segments[-1][1] == other.segments[0][1] + ): + result.segments = ( + self.segments[:-1] + + [(self.segments[-1][0] + other.segments[0][0], self.segments[-1][1])] + + other.segments[1:] + ) else: - return 'unix' + result.segments = self.segments + other.segments + return result -if not args.source_path_postprocess: - args.source_path_postprocess = guess_sourcepath_processing() + def __radd__(self, other: Union["Text", str]) -> "Text": + if isinstance(other, str): + other = Text(other) + return other + self + + def finditer(self, pat: Pattern[str]) -> Iterator[Match[str]]: + """Replacement for `pat.finditer(text)` that operates on the inner text, + and returns the exact same matches as `Text.sub(pat, ...)`.""" + for chunk, f in self.segments: + for match in pat.finditer(chunk): + yield match + + def sub(self, pat: Pattern[str], sub_fn: Callable[[Match[str]], "Text"]) -> "Text": + result = Text() + for chunk, f in self.segments: + i = 0 + for match in pat.finditer(chunk): + start, end = match.start(), match.end() + assert i <= start <= end <= len(chunk) + sub = sub_fn(match) + if i != start: + result.segments.append((chunk[i:start], f)) + result.segments.extend(sub.segments) + i = end + if chunk[i:]: + result.segments.append((chunk[i:], f)) + return result + + def ljust(self, column_width: int) -> "Text": + length = sum(len(x) for x, _ in self.segments) + return self + " " * max(column_width - length, 0) + + +@dataclass +class TableMetadata: + headers: Tuple[Text, ...] + current_score: int + max_score: int + previous_score: Optional[int] + + +class Formatter(abc.ABC): + @abc.abstractmethod + def apply_format(self, chunk: str, f: Format) -> str: + """Apply the formatting `f` to `chunk` and escape the contents.""" + ... + + @abc.abstractmethod + def table(self, meta: TableMetadata, lines: List[Tuple["OutputLine", ...]]) -> str: + """Format a multi-column table with metadata""" + ... + + def apply(self, text: Text) -> str: + return "".join(self.apply_format(chunk, f) for chunk, f in text.segments) + + @staticmethod + def outputline_texts(lines: Tuple["OutputLine", ...]) -> Tuple[Text, ...]: + return tuple([lines[0].base or Text()] + [line.fmt2 for line in lines[1:]]) + + +@dataclass +class PlainFormatter(Formatter): + column_width: int + + def apply_format(self, chunk: str, f: Format) -> str: + return chunk + + def table(self, meta: TableMetadata, lines: List[Tuple["OutputLine", ...]]) -> str: + rows = [meta.headers] + [self.outputline_texts(ls) for ls in lines] + return "\n".join( + "".join(self.apply(x.ljust(self.column_width)) for x in row) for row in rows + ) + + +@dataclass +class AnsiFormatter(Formatter): + # Additional ansi escape codes not in colorama. See: + # https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters + STYLE_UNDERLINE = "\x1b[4m" + STYLE_NO_UNDERLINE = "\x1b[24m" + STYLE_INVERT = "\x1b[7m" + STYLE_RESET = "\x1b[0m" + + BASIC_ANSI_CODES = { + BasicFormat.NONE: "", + BasicFormat.IMMEDIATE: Fore.LIGHTBLUE_EX, + BasicFormat.STACK: Fore.YELLOW, + BasicFormat.REGISTER: Fore.YELLOW, + BasicFormat.REGISTER_CATEGORY: Fore.LIGHTYELLOW_EX, + BasicFormat.DELAY_SLOT: Fore.LIGHTBLACK_EX, + BasicFormat.DIFF_CHANGE: Fore.LIGHTBLUE_EX, + BasicFormat.DIFF_ADD: Fore.GREEN, + BasicFormat.DIFF_REMOVE: Fore.RED, + BasicFormat.SOURCE_FILENAME: Style.DIM + Style.BRIGHT, + BasicFormat.SOURCE_FUNCTION: Style.DIM + Style.BRIGHT + STYLE_UNDERLINE, + BasicFormat.SOURCE_LINE_NUM: Fore.LIGHTBLACK_EX, + BasicFormat.SOURCE_OTHER: Style.DIM, + } + + BASIC_ANSI_CODES_UNDO = { + BasicFormat.NONE: "", + BasicFormat.SOURCE_FILENAME: Style.NORMAL, + BasicFormat.SOURCE_FUNCTION: Style.NORMAL + STYLE_NO_UNDERLINE, + BasicFormat.SOURCE_OTHER: Style.NORMAL, + } + + ROTATION_ANSI_COLORS = [ + Fore.MAGENTA, + Fore.CYAN, + Fore.GREEN, + Fore.RED, + Fore.LIGHTYELLOW_EX, + Fore.LIGHTMAGENTA_EX, + Fore.LIGHTCYAN_EX, + Fore.LIGHTGREEN_EX, + Fore.LIGHTBLACK_EX, + ] + + column_width: int + + def apply_format(self, chunk: str, f: Format) -> str: + if f == BasicFormat.NONE: + return chunk + undo_ansi_code = Fore.RESET + if isinstance(f, BasicFormat): + ansi_code = self.BASIC_ANSI_CODES[f] + undo_ansi_code = self.BASIC_ANSI_CODES_UNDO.get(f, undo_ansi_code) + elif isinstance(f, RotationFormat): + ansi_code = self.ROTATION_ANSI_COLORS[ + f.index % len(self.ROTATION_ANSI_COLORS) + ] + else: + static_assert_unreachable(f) + return f"{ansi_code}{chunk}{undo_ansi_code}" + + def table(self, meta: TableMetadata, lines: List[Tuple["OutputLine", ...]]) -> str: + rows = [(meta.headers, False)] + [ + (self.outputline_texts(line), line[1].is_data_ref) for line in lines + ] + return "\n".join( + "".join( + (self.STYLE_INVERT if is_data_ref else "") + + self.apply(x.ljust(self.column_width)) + + (self.STYLE_RESET if is_data_ref else "") + for x in row + ) + for (row, is_data_ref) in rows + ) + + +@dataclass +class HtmlFormatter(Formatter): + rotation_formats: int = 9 + + def apply_format(self, chunk: str, f: Format) -> str: + chunk = html.escape(chunk) + if f == BasicFormat.NONE: + return chunk + if isinstance(f, BasicFormat): + class_name = f.name.lower().replace("_", "-") + data_attr = "" + elif isinstance(f, RotationFormat): + class_name = f"rotation-{f.index % self.rotation_formats}" + rotation_key = html.escape(f"{f.group};{f.key}", quote=True) + data_attr = f'data-rotation="{rotation_key}"' + else: + static_assert_unreachable(f) + return f"{chunk}" + + def table(self, meta: TableMetadata, lines: List[Tuple["OutputLine", ...]]) -> str: + def table_row(line: Tuple[Text, ...], is_data_ref: bool, cell_el: str) -> str: + tr_attrs = " class='data-ref'" if is_data_ref else "" + output_row = f" " + for cell in line: + cell_html = self.apply(cell) + output_row += f"<{cell_el}>{cell_html}" + output_row += "\n" + return output_row + + output = "\n" + output += " \n" + output += table_row(meta.headers, False, "th") + output += " \n" + output += " \n" + output += "".join( + table_row(self.outputline_texts(line), line[1].is_data_ref, "td") + for line in lines + ) + output += " \n" + output += "
\n" + return output + + +@dataclass +class JsonFormatter(Formatter): + arch_str: str + + def apply_format(self, chunk: str, f: Format) -> str: + # This method is unused by this formatter + return NotImplemented + + def table(self, meta: TableMetadata, rows: List[Tuple["OutputLine", ...]]) -> str: + def serialize_format(s: str, f: Format) -> Dict[str, Any]: + if f == BasicFormat.NONE: + return {"text": s} + elif isinstance(f, BasicFormat): + return {"text": s, "format": f.name.lower()} + elif isinstance(f, RotationFormat): + attrs = asdict(f) + attrs.update({"text": s, "format": "rotation"}) + return attrs + else: + static_assert_unreachable(f) + + def serialize(text: Optional[Text]) -> List[Dict[str, Any]]: + if text is None: + return [] + return [serialize_format(s, f) for s, f in text.segments] + + is_threeway = len(meta.headers) == 3 + + output: Dict[str, Any] = {} + output["arch_str"] = self.arch_str + output["header"] = { + name: serialize(h) + for h, name in zip(meta.headers, ("base", "current", "previous")) + } + output["current_score"] = meta.current_score + output["max_score"] = meta.max_score + if meta.previous_score is not None: + output["previous_score"] = meta.previous_score + output_rows: List[Dict[str, Any]] = [] + for row in rows: + output_row: Dict[str, Any] = {} + output_row["key"] = row[0].key2 + output_row["is_data_ref"] = row[1].is_data_ref + iters = [ + ("base", row[0].base, row[0].line1), + ("current", row[1].fmt2, row[1].line2), + ] + if is_threeway: + iters.append(("previous", row[2].fmt2, row[2].line2)) + if all(line is None for _, _, line in iters): + # Skip rows that were only for displaying source code + continue + for column_name, text, line in iters: + column: Dict[str, Any] = {} + column["text"] = serialize(text) + if line: + if line.line_num is not None: + column["line"] = line.line_num + if line.branch_target is not None: + column["branch"] = line.branch_target + if line.source_lines: + column["src"] = line.source_lines + if line.comment is not None: + column["src_comment"] = line.comment + if line.source_line_num is not None: + column["src_line"] = line.source_line_num + if line or column["text"]: + output_row[column_name] = column + output_rows.append(output_row) + output["rows"] = output_rows + return json.dumps(output) + + +def format_fields( + pat: Pattern[str], + out1: Text, + out2: Text, + color1: FormatFunction, + color2: Optional[FormatFunction] = None, +) -> Tuple[Text, Text]: + diffs = [ + of.group() != nf.group() + for (of, nf) in zip(out1.finditer(pat), out2.finditer(pat)) + ] + + it = iter(diffs) + + def maybe_color(color: FormatFunction, s: str) -> Text: + return Text(s, color(s)) if next(it, False) else Text(s) + + out1 = out1.sub(pat, lambda m: maybe_color(color1, m.group())) + it = iter(diffs) + out2 = out2.sub(pat, lambda m: maybe_color(color2 or color1, m.group())) + + return out1, out2 + + +def symbol_formatter(group: str, base_index: int) -> FormatFunction: + symbol_formats: Dict[str, Format] = {} + + def symbol_format(s: str) -> Format: + # TODO: it would be nice to use a unique Format for each symbol, so we could + # add extra UI elements in the HTML version + f = symbol_formats.get(s) + if f is None: + index = len(symbol_formats) + base_index + f = RotationFormat(key=s, index=index, group=group) + symbol_formats[s] = f + return f + + return symbol_format + + +# ==== LOGIC ==== + +ObjdumpCommand = Tuple[List[str], str, Optional[str]] def maybe_eval_int(expr: str) -> Optional[int]: @@ -412,94 +984,150 @@ def eval_int(expr: str, emsg: str) -> int: return ret -def eval_line_num(expr: str) -> int: - return int(expr.strip().replace(":", ""), 16) +def eval_line_num(expr: str) -> Optional[int]: + expr = expr.strip().replace(":", "") + if expr == "": + return None + return int(expr, 16) -def run_make(target: str) -> None: - subprocess.check_call(["make"] + makeflags + [target]) +def run_make(target: str, project: ProjectSettings) -> None: + subprocess.check_call(project.build_command + [target]) -def run_make_capture_output(target: str) -> "subprocess.CompletedProcess[bytes]": +def run_make_capture_output( + target: str, project: ProjectSettings +) -> "subprocess.CompletedProcess[bytes]": return subprocess.run( - ["make"] + makeflags + [target], + project.build_command + [target], stderr=subprocess.PIPE, stdout=subprocess.PIPE, ) def restrict_to_function(dump: str, fn_name: str) -> str: - out: List[str] = [] - search = f"<{fn_name}>:" - found = False - for line in dump.split("\n"): - if found: - if len(out) >= MAX_FUNCTION_SIZE_LINES: - break - out.append(line) - elif search in line: - found = True - return "\n".join(out) + try: + ind = dump.index("\n", dump.index(f"<{fn_name}>:")) + return dump[ind + 1 :] + except ValueError: + return "" -def maybe_get_objdump_source_flags() -> List[str]: - if not args.source: - return [] +def serialize_rodata_references(references: List[Tuple[int, int, str]]) -> str: + return "".join( + f"DATAREF {text_offset} {from_offset} {from_section}\n" + for (text_offset, from_offset, from_section) in references + ) - flags = [ - "--source", - #"--source-comment=│ ", - "-l", - ] - if args.inlines: - flags.append("--inlines") +def maybe_get_objdump_source_flags(config: Config) -> List[str]: + flags = [] + + if config.show_line_numbers or config.show_source: + flags.append("--line-numbers") + + if config.show_source: + flags.append("--source") + + if not config.source_old_binutils: + flags.append("--source-comment=│ ") + + if config.inlines: + flags.append("--inlines") return flags -def run_objdump(cmd: ObjdumpCommand) -> str: +def run_objdump(cmd: ObjdumpCommand, config: Config, project: ProjectSettings) -> str: flags, target, restrict = cmd - assert objdump_executable, "checked previously" - out = subprocess.check_output( - [objdump_executable] + arch_flags + flags + [target], universal_newlines=True - ) + try: + out = subprocess.run( + [project.objdump_executable] + + config.arch.arch_flags + + project.objdump_flags + + flags + + [target], + check=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + universal_newlines=True, + ).stdout + except subprocess.CalledProcessError as e: + print(e.stdout) + print(e.stderr) + if "unrecognized option '--source-comment" in e.stderr: + fail("** Try using --source-old-binutils instead of --source **") + raise e + + obj_data: Optional[bytes] = None + if config.diff_obj: + with open(target, "rb") as f: + obj_data = f.read() + + return preprocess_objdump_out(restrict, obj_data, out, config) + + +def preprocess_objdump_out( + restrict: Optional[str], obj_data: Optional[bytes], objdump_out: str, config: Config +) -> str: + """ + Preprocess the output of objdump into a format that `process()` expects. + This format is suitable for saving to disk with `--write-asm`. + + - Optionally filter the output to a single function (`restrict`) + - Otherwise, strip objdump header (7 lines) + - Prepend .data references ("DATAREF" lines) when working with object files + """ + out = objdump_out + if restrict is not None: - return restrict_to_function(out, restrict) + out = restrict_to_function(out, restrict) + else: + for i in range(7): + out = out[out.find("\n") + 1 :] + out = out.rstrip("\n") + + if obj_data: + out = ( + serialize_rodata_references(parse_elf_rodata_references(obj_data, config)) + + out + ) + return out -base_shift: int = eval_int( - args.base_shift, "Failed to parse --base-shift (-S) argument as an integer." -) - -def disambiguate_objects(fn_name: str, objfiles: List[str]) -> str: - for objfile in objfiles: - with open(objfile, 'rb') as f: - elffile = ELFFile(f) - symtab = elffile.get_section_by_name('.symtab') - match = symtab.get_symbol_by_name(fn_name) - if match is None: - continue - if match[0].entry.st_info.type == 'STT_FUNC': - return objfile +def search_build_objects(objname: str, project: ProjectSettings) -> Optional[str]: + objfiles = [ + os.path.join(dirpath, f) + for dirpath, _, filenames in os.walk(project.build_dir) + for f in filenames + if f == objname + ] + if len(objfiles) > 1: + all_objects = "\n".join(objfiles) + fail( + f"Found multiple objects of the same name {objname} in {project.build_dir}, " + f"cannot determine which to diff against: \n{all_objects}" + ) + if len(objfiles) == 1: + return objfiles[0] return None -def search_map_file(fn_name: str, mapfile: Optional[str] = None, build_dir: Optional[str] = None) -> Tuple[Optional[str], Optional[int]]: - if not mapfile: + +def search_map_file( + fn_name: str, project: ProjectSettings, config: Config, *, for_binary: bool +) -> Tuple[Optional[str], Optional[int]]: + if not project.mapfile: fail(f"No map file configured; cannot find function {fn_name}.") - - if not build_dir: - build_dir = config.get('build_dir') try: - with open(mapfile) as f: + with open(project.mapfile) as f: contents = f.read() except Exception: - fail(f"Failed to open map file {mapfile} for reading.") + fail(f"Failed to open map file {project.mapfile} for reading.") - if map_format == 'gnu': + if project.map_format == "gnu": lines = contents.split("\n") try: @@ -508,21 +1136,21 @@ def search_map_file(fn_name: str, mapfile: Optional[str] = None, build_dir: Opti cands = [] last_line = "" for line in lines: - if line.startswith(" .text"): + if line.startswith(" " + config.diff_section): cur_objfile = line.split()[3] if "load address" in line: tokens = last_line.split() + line.split() ram = int(tokens[1], 0) rom = int(tokens[5], 0) ram_to_rom = rom - ram - if line.endswith(" " + fn_name): + if line.endswith(" " + fn_name) or f" {fn_name} = 0x" in line: ram = int(line.split()[0], 0) - if cur_objfile is not None and ram_to_rom is not None: - cands.append((cur_objfile, ram + ram_to_rom)) + if (for_binary and ram_to_rom is not None) or ( + not for_binary and cur_objfile is not None + ): + cands.append((cur_objfile, ram + (ram_to_rom or 0))) last_line = line except Exception as e: - import traceback - traceback.print_exc() fail(f"Internal error while parsing map file") @@ -530,385 +1158,514 @@ def search_map_file(fn_name: str, mapfile: Optional[str] = None, build_dir: Opti fail(f"Found multiple occurrences of function {fn_name} in map file.") if len(cands) == 1: return cands[0] - elif map_format == 'mw': - # ram elf rom object name - find = re.findall(re.compile(r' \S+ \S+ (\S+) (\S+) . ' + fn_name + r'(?: \(entry of \.(?:init|text)\))? \t(\S+)'), contents) + elif project.map_format == "mw": + find = re.findall( + # ram elf rom alignment + r" \S+ \S+ (\S+) (\S+) +\S+ " + + re.escape(fn_name) + + r"(?: \(entry of " + + re.escape(config.diff_section) + + r"\))? \t" + # object name + + "(\S+)", + contents, + ) if len(find) > 1: - if args.select_occurence > 0: - find = [find[args.select_occurence - 1]] - else: - print(f"Found multiple occurrences of function {fn_name} in map file:", file=sys.stderr) - for i,location in enumerate(find): - print(f" {i+1}: {location[0]} {location[1]} {str(location[2]).ljust(40, ' ')}", file=sys.stderr) - fail(f"Use --select-occurence to select the right occurrence.") + fail(f"Found multiple occurrences of function {fn_name} in map file.") if len(find) == 1: - rom = int(find[0][1],16) + rom = int(find[0][1], 16) objname = find[0][2] - # The metrowerks linker map format does not contain the full object path, so we must complete it manually. - objfiles = [os.path.join(dirpath, f) for dirpath, _, filenames in os.walk(build_dir) for f in filenames if f == objname] - if len(objfiles) > 1: - objfile = disambiguate_objects(fn_name, objfiles) - if objfile is None: - all_objects = "\n".join(objfiles) - fail(f"Found multiple objects of the same name {objname} in {build_dir}, cannot determine which to diff against: \n{all_objects}") + objfile = search_build_objects(objname, project) + # TODO Currently the ram-rom conversion only works for diffing ELF + # executables, but it would likely be more convenient to diff DOLs. + # At this time it is recommended to always use -o when running the diff + # script as this mode does not make use of the ram-rom conversion. + if objfile is not None: return objfile, rom + elif project.map_format == "ms": + load_address_find = re.search( + r"Preferred load address is ([0-9a-f]+)", + contents, + ) + if not load_address_find: + fail(f"Couldn't find module load address in map file.") + load_address = int(load_address_find.group(1), 16) - if len(objfiles) == 1: - objfile = objfiles[0] - # TODO Currently the ram-rom conversion only works for diffing ELF executables, but it would likely be more convenient to diff DOLs. - # At this time it is recommended to always use -o when running the diff script as this mode does not make use of the ram-rom conversion - return objfile, rom + diff_segment_find = re.search( + r"([0-9a-f]+):[0-9a-f]+ [0-9a-f]+H " + re.escape(config.diff_section), + contents, + ) + if not diff_segment_find: + fail(f"Couldn't find segment for section in map file.") + diff_segment = diff_segment_find.group(1) + + find = re.findall( + r" (?:" + + re.escape(diff_segment) + + r")\S+\s+(?:" + + re.escape(fn_name) + + r")\s+\S+ ... \S+", + contents, + ) + if len(find) > 1: + fail(f"Found multiple occurrences of function {fn_name} in map file.") + if len(find) == 1: + names_find = re.search(r"(\S+) ... (\S+)", find[0]) + assert names_find is not None + fileofs = ( + int(names_find.group(1), 16) + - load_address + + project.ms_map_address_offset + ) + if for_binary: + return None, fileofs + + objname = names_find.group(2) + objfile = search_build_objects(objname, project) + if objfile is not None: + return objfile, fileofs else: - fail(f"Linker map format {map_format} unrecognised.") + fail(f"Linker map format {project.map_format} unrecognised.") return None, None -def dump_elf() -> Tuple[str, ObjdumpCommand, ObjdumpCommand]: - if not baseimg or not myimg: +def parse_elf_rodata_references( + data: bytes, config: Config +) -> List[Tuple[int, int, str]]: + e_ident = data[:16] + if e_ident[:4] != b"\x7FELF": + return [] + + SHT_SYMTAB = 2 + SHT_REL = 9 + SHT_RELA = 4 + R_MIPS_32 = 2 + R_MIPS_GPREL32 = 12 + + is_32bit = e_ident[4] == 1 + is_little_endian = e_ident[5] == 1 + str_end = "<" if is_little_endian else ">" + str_off = "I" if is_32bit else "Q" + + def read(spec: str, offset: int) -> Tuple[int, ...]: + spec = spec.replace("P", str_off) + size = struct.calcsize(spec) + return struct.unpack(str_end + spec, data[offset : offset + size]) + + ( + e_type, + e_machine, + e_version, + e_entry, + e_phoff, + e_shoff, + e_flags, + e_ehsize, + e_phentsize, + e_phnum, + e_shentsize, + e_shnum, + e_shstrndx, + ) = read("HHIPPPIHHHHHH", 16) + if e_type != 1: # relocatable + return [] + assert e_shoff != 0 + assert e_shnum != 0 # don't support > 0xFF00 sections + assert e_shstrndx != 0 + + @dataclass + class Section: + sh_name: int + sh_type: int + sh_flags: int + sh_addr: int + sh_offset: int + sh_size: int + sh_link: int + sh_info: int + sh_addralign: int + sh_entsize: int + + sections = [ + Section(*read("IIPPPPIIPP", e_shoff + i * e_shentsize)) for i in range(e_shnum) + ] + shstr = sections[e_shstrndx] + sec_name_offs = [shstr.sh_offset + s.sh_name for s in sections] + sec_names = [data[offset : data.index(b"\0", offset)] for offset in sec_name_offs] + + symtab_sections = [i for i in range(e_shnum) if sections[i].sh_type == SHT_SYMTAB] + assert len(symtab_sections) == 1 + symtab = sections[symtab_sections[0]] + + section_name = config.diff_section.encode("utf-8") + text_sections = [ + i + for i in range(e_shnum) + if sec_names[i] == section_name and sections[i].sh_size != 0 + ] + if len(text_sections) != 1: + return [] + text_section = text_sections[0] + + ret: List[Tuple[int, int, str]] = [] + for s in sections: + if s.sh_type == SHT_REL or s.sh_type == SHT_RELA: + if s.sh_info == text_section: + # Skip section_name -> section_name references + continue + sec_name = sec_names[s.sh_info].decode("latin1") + if sec_name != ".rodata": + continue + sec_base = sections[s.sh_info].sh_offset + for i in range(0, s.sh_size, s.sh_entsize): + if s.sh_type == SHT_REL: + r_offset, r_info = read("PP", s.sh_offset + i) + else: + r_offset, r_info, r_addend = read("PPP", s.sh_offset + i) + + if is_32bit: + r_sym = r_info >> 8 + r_type = r_info & 0xFF + sym_offset = symtab.sh_offset + symtab.sh_entsize * r_sym + st_name, st_value, st_size, st_info, st_other, st_shndx = read( + "IIIBBH", sym_offset + ) + else: + r_sym = r_info >> 32 + r_type = r_info & 0xFFFFFFFF + sym_offset = symtab.sh_offset + symtab.sh_entsize * r_sym + st_name, st_info, st_other, st_shndx, st_value, st_size = read( + "IBBHQQ", sym_offset + ) + if st_shndx == text_section: + if s.sh_type == SHT_REL: + if e_machine == 8 and r_type in (R_MIPS_32, R_MIPS_GPREL32): + (r_addend,) = read("I", sec_base + r_offset) + else: + continue + text_offset = (st_value + r_addend) & 0xFFFFFFFF + ret.append((text_offset, r_offset, sec_name)) + return ret + + +def dump_elf( + start: str, + end: Optional[str], + diff_elf_symbol: str, + config: Config, + project: ProjectSettings, +) -> Tuple[str, ObjdumpCommand, ObjdumpCommand]: + if not project.baseimg or not project.myimg: fail("Missing myimg/baseimg in config.") - if base_shift: + if config.base_shift: fail("--base-shift not compatible with -e") - start_addr = eval_int(args.start, "Start address must be an integer expression.") + start_addr = eval_int(start, "Start address must be an integer expression.") - if args.end is not None: - end_addr = eval_int(args.end, "End address must be an integer expression.") + if end is not None: + end_addr = eval_int(end, "End address must be an integer expression.") else: - end_addr = start_addr + MAX_FUNCTION_SIZE_BYTES + end_addr = start_addr + config.max_function_size_bytes flags1 = [ f"--start-address={start_addr}", f"--stop-address={end_addr}", ] + if project.disassemble_all: + disassemble_flag = "-D" + else: + disassemble_flag = "-d" + flags2 = [ - f"--disassemble={args.diff_elf_symbol}", + f"--disassemble={diff_elf_symbol}", ] - objdump_flags = ["-drz", "-j", ".text"] + objdump_flags = [disassemble_flag, "-rz", "-j", config.diff_section] return ( - myimg, - (objdump_flags + flags1, baseimg, None), - (objdump_flags + flags2 + maybe_get_objdump_source_flags(), myimg, None), + project.myimg, + (objdump_flags + flags1, project.baseimg, None), + ( + objdump_flags + flags2 + maybe_get_objdump_source_flags(config), + project.myimg, + None, + ), ) -def dump_objfile() -> Tuple[str, ObjdumpCommand, ObjdumpCommand]: - if base_shift: +def dump_objfile( + start: str, end: Optional[str], config: Config, project: ProjectSettings +) -> Tuple[str, ObjdumpCommand, ObjdumpCommand]: + if config.base_shift: fail("--base-shift not compatible with -o") - if args.end is not None: + if end is not None: fail("end address not supported together with -o") - if args.start.startswith("0"): + if start.startswith("0"): fail("numerical start address not supported with -o; pass a function name") - objfile, _ = search_map_file(args.start, config.get('mapfile'), config.get('build_dir')) + objfile = config.objfile + if not objfile: + objfile, _ = search_map_file(start, project, config, for_binary=False) + if not objfile: fail("Not able to find .o file for function.") - if args.make: - run_make(objfile) + if config.make: + run_make(objfile, project) if not os.path.isfile(objfile): fail(f"Not able to find .o file for function: {objfile} is not a file.") - refobjfile, _ = search_map_file(args.lhs_name or args.start, config.get('expected_mapfile'), config.get('expected_build_dir')) - if not refobjfile: - fail("Not able to find .o file for reference function.") + refobjfile = "expected/" + objfile if not os.path.isfile(refobjfile): fail(f'Please ensure an OK .o file exists at "{refobjfile}".') - objdump_flags = ["-drz"] + if project.disassemble_all: + disassemble_flag = "-D" + else: + disassemble_flag = "-d" + + objdump_flags = [disassemble_flag, "-rz", "-j", config.diff_section] return ( objfile, - (objdump_flags, refobjfile, args.lhs_name or args.start), - (objdump_flags + maybe_get_objdump_source_flags(), objfile, args.start), + (objdump_flags, refobjfile, start), + (objdump_flags + maybe_get_objdump_source_flags(config), objfile, start), ) -def dump_binary() -> Tuple[str, ObjdumpCommand, ObjdumpCommand]: - if not baseimg or not myimg: +def dump_binary( + start: str, end: Optional[str], config: Config, project: ProjectSettings +) -> Tuple[str, ObjdumpCommand, ObjdumpCommand]: + if not project.baseimg or not project.myimg: fail("Missing myimg/baseimg in config.") - if args.make: - run_make(myimg) - start_addr = maybe_eval_int(args.start) + if config.make: + run_make(project.myimg, project) + start_addr = maybe_eval_int(start) if start_addr is None: - _, start_addr = search_map_file(args.start) + _, start_addr = search_map_file(start, project, config, for_binary=True) if start_addr is None: fail("Not able to find function in map file.") - if args.end is not None: - end_addr = eval_int(args.end, "End address must be an integer expression.") + if end is not None: + end_addr = eval_int(end, "End address must be an integer expression.") else: - end_addr = start_addr + MAX_FUNCTION_SIZE_BYTES - objdump_flags = ["-Dz", "-EB"] + end_addr = start_addr + config.max_function_size_bytes + objdump_flags = ["-Dz", "-bbinary"] + ["-EB" if config.arch.big_endian else "-EL"] flags1 = [ - f"--start-address={start_addr + base_shift}", - f"--stop-address={end_addr + base_shift}", + f"--start-address={start_addr + config.base_shift}", + f"--stop-address={end_addr + config.base_shift}", ] flags2 = [f"--start-address={start_addr}", f"--stop-address={end_addr}"] return ( - myimg, - (objdump_flags + flags1, baseimg, None), - (objdump_flags + flags2, myimg, None), + project.myimg, + (objdump_flags + flags1, project.baseimg, None), + (objdump_flags + flags2, project.myimg, None), ) -def ansi_ljust(s: str, width: int) -> str: - """Like s.ljust(width), but accounting for ANSI colors.""" - needed: int = width - ansiwrap.ansilen(s) - if needed > 0: - return s + " " * needed - else: - return s - -if arch == "mips": - re_int = re.compile(r"[0-9]+") - re_comment = re.compile(r"<.*?>") - re_reg = re.compile( - r"\$?\b(a[0-3]|t[0-9]|s[0-8]|at|v[01]|f[12]?[0-9]|f3[01]|k[01]|fp|ra|zero)\b" - ) - re_sprel = re.compile(r"(?<=,)([0-9]+|0x[0-9a-f]+)\(sp\)") - re_large_imm = re.compile(r"-?[1-9][0-9]{2,}|-?0x[0-9a-f]{3,}") - re_imm = re.compile(r"(\b|-)([0-9]+|0x[0-9a-fA-F]+)\b(?!\(sp)|%(lo|hi)\([^)]*\)") - forbidden = set(string.ascii_letters + "_") - arch_flags = ["-m", "mips:4300"] - branch_likely_instructions = { - "beql", - "bnel", - "beqzl", - "bnezl", - "bgezl", - "bgtzl", - "blezl", - "bltzl", - "bc1tl", - "bc1fl", - } - branch_instructions = branch_likely_instructions.union( - { - "b", - "beq", - "bne", - "beqz", - "bnez", - "bgez", - "bgtz", - "blez", - "bltz", - "bc1t", - "bc1f", - } - ) - instructions_with_address_immediates = branch_instructions.union({"jal", "j"}) -elif arch == "aarch64": - re_int = re.compile(r"[0-9]+") - re_comment = re.compile(r"(<.*?>|//.*$)") - # GPRs and FP registers: X0-X30, W0-W30, [DSHQ]0..31 - # The zero registers and SP should not be in this list. - re_reg = re.compile(r"\$?\b([dshq][12]?[0-9]|[dshq]3[01]|[xw][12]?[0-9]|[xw]30)\b") - re_sprel = re.compile(r"sp, #-?(0x[0-9a-fA-F]+|[0-9]+)\b") - re_large_imm = re.compile(r"-?[1-9][0-9]{2,}|-?0x[0-9a-f]{3,}") - re_imm = re.compile(r"(?$|<.*?>|//.*$)") - re_reg = re.compile(r"\$?\b([rf][0-9]+)\b") - re_sprel = re.compile(r"(?<=,)(-?[0-9]+|-?0x[0-9a-f]+)\(r1\)") - re_large_imm = re.compile(r"-?[1-9][0-9]{2,}|-?0x[0-9a-f]{3,}") - re_imm = re.compile(r"(\b|-)([0-9]+|0x[0-9a-fA-F]+)\b(?!\(r1)|[^@]*@(ha|h|lo)") - re_file_line = re.compile(r"(.*\.cpp)\:([0-9]+)") - arch_flags = [] - forbidden = set(string.ascii_letters + "_") - branch_likely_instructions = set() - branch_instructions = { - "b", - "beq", - "beq+", - "beq-", - "bne", - "bne+", - "bne-", - "blt", - "blt+", - "blt-", - "ble", - "ble+", - "ble-", - "bdnz", - "bdnz+", - "bdnz-", - "bge", - "bge+", - "bge-", - "bgt", - "bgt+", - "bgt-", - } - instructions_with_address_immediates = branch_instructions.union({"bl"}) -else: - fail(f"Unknown architecture: {arch}") +# Example: "ldr r4, [pc, #56] ; (4c )" +ARM32_LOAD_POOL_PATTERN = r"(ldr\s+r([0-9]|1[0-3]),\s+\[pc,.*;\s*)(\([a-fA-F0-9]+.*\))" -def hexify_int(row: str, pat: Match[str]) -> str: - full = pat.group(0) - if len(full) <= 1: - # leave one-digit ints alone - return full - start, end = pat.span() - if start and row[start - 1] in forbidden: - return full - if end < len(row) and row[end] in forbidden: - return full - return hex(int(full)) +# The base class is a no-op. +class AsmProcessor: + def __init__(self, config: Config) -> None: + self.config = config + def pre_process( + self, mnemonic: str, args: str, next_row: Optional[str] + ) -> Tuple[str, str]: + return mnemonic, args -def parse_relocated_line(line: str) -> Tuple[str, str, str]: - try: - ind2 = line.rindex(",") - except ValueError: - try: - ind2 = line.rindex("\t") - except ValueError: - ind2 = line.rindex(" ") - before = line[: ind2 + 1] - after = line[ind2 + 1 :] - ind2 = after.find("(") - if ind2 == -1: - imm, after = after, "" - else: - imm, after = after[:ind2], after[ind2:] - if imm == "0x0": - imm = "0" - return before, imm, after + def process_reloc(self, row: str, prev: str) -> Tuple[str, Optional[str]]: + return prev, None - -def process_mips_reloc(row: str, prev: str) -> str: - before, imm, after = parse_relocated_line(prev) - repl = row.split()[-1] - if imm != "0": - # MIPS uses relocations with addends embedded in the code as immediates. - # If there is an immediate, show it as part of the relocation. Ideally - # we'd show this addend in both %lo/%hi, but annoyingly objdump's output - # doesn't include enough information to pair up %lo's and %hi's... - # TODO: handle unambiguous cases where all addends for a symbol are the - # same, or show "+???". - mnemonic = prev.split()[0] - if mnemonic in instructions_with_address_immediates and not imm.startswith("0x"): - imm = "0x" + imm - repl += "+" + imm if int(imm, 0) > 0 else imm - if "R_MIPS_LO16" in row: - repl = f"%lo({repl})" - elif "R_MIPS_HI16" in row: - # Ideally we'd pair up R_MIPS_LO16 and R_MIPS_HI16 to generate a - # correct addend for each, but objdump doesn't give us the order of - # the relocations, so we can't find the right LO16. :( - repl = f"%hi({repl})" - elif "R_MIPS_26" in row: - # Function calls - pass - elif "R_MIPS_PC16" in row: - # Branch to glabel. This gives confusing output, but there's not much - # we can do here. - pass - else: - assert False, f"unknown relocation type '{row}' for line '{prev}'" - return before + repl + after - - -def process_ppc_reloc(row: str, prev: str) -> str: - assert any(r in row for r in ["R_PPC_REL24", "R_PPC_ADDR16", "R_PPC_EMB_SDA21"]), f"unknown relocation type '{row}' for line '{prev}'" - before, imm, after = parse_relocated_line(prev) - repl = row.split()[-1] - if "R_PPC_REL24" in row: - # function calls - pass - elif "R_PPC_ADDR16_HI" in row: - # absolute hi of addr - repl = f"{repl}@h" - elif "R_PPC_ADDR16_HA" in row: - # adjusted hi of addr - repl = f"{repl}@ha" - elif "R_PPC_ADDR16_LO" in row: - # lo of addr - repl = f"{repl}@l" - elif "R_PPC_ADDR16" in row: - # 16-bit absolute addr - if "+0x7" in repl: - # remove the very large addends as they are an artifact of (label-_SDA(2)_BASE_) - # computations and are unimportant in a diff setting. - if int(repl.split("+")[1],16) > 0x70000000: - repl = repl.split("+")[0] - elif "R_PPC_EMB_SDA21" in row: - # small data area - pass - return before + repl + after - - -def pad_mnemonic(line: str) -> str: - if "\t" not in line: - return line - mn, args = line.split("\t", 1) - return f"{mn:<7s} {args}" - - -class Line(NamedTuple): - mnemonic: str - diff_row: str - original: str - normalized_original: str - line_num: str - branch_target: Optional[str] - source_lines: List[str] - comment: Optional[str] - - -class DifferenceNormalizer: def normalize(self, mnemonic: str, row: str) -> str: """This should be called exactly once for each line.""" + arch = self.config.arch row = self._normalize_arch_specific(mnemonic, row) - if args.ignore_large_imms: - row = re.sub(re_large_imm, "", row) + if self.config.ignore_large_imms and mnemonic not in arch.branch_instructions: + row = re.sub(self.config.arch.re_large_imm, "", row) return row def _normalize_arch_specific(self, mnemonic: str, row: str) -> str: return row + def post_process(self, lines: List["Line"]) -> None: + return -class DifferenceNormalizerAArch64(DifferenceNormalizer): - def __init__(self) -> None: - super().__init__() + def is_end_of_function(self, mnemonic: str, args: str) -> bool: + return False + + +class AsmProcessorMIPS(AsmProcessor): + def __init__(self, config: Config) -> None: + super().__init__(config) + self.seen_jr_ra = False + + def process_reloc(self, row: str, prev: str) -> Tuple[str, Optional[str]]: + arch = self.config.arch + if "R_MIPS_NONE" in row or "R_MIPS_JALR" in row: + # GNU as emits no-op relocations immediately after real ones when + # assembling with -mabi=64. Return without trying to parse 'imm' as an + # integer. + return prev, None + before, imm, after = parse_relocated_line(prev) + repl = row.split()[-1] + reloc_addend_from_imm(imm, before, self.config.arch) + if "R_MIPS_LO16" in row: + repl = f"%lo({repl})" + elif "R_MIPS_HI16" in row: + # Ideally we'd pair up R_MIPS_LO16 and R_MIPS_HI16 to generate a + # correct addend for each, but objdump doesn't give us the order of + # the relocations, so we can't find the right LO16. :( + repl = f"%hi({repl})" + elif "R_MIPS_26" in row: + # Function calls + pass + elif "R_MIPS_PC16" in row: + # Branch to glabel. This gives confusing output, but there's not much + # we can do here. + pass + elif "R_MIPS_GPREL16" in row: + repl = f"%gp_rel({repl})" + elif "R_MIPS_GOT16" in row: + repl = f"%got({repl})" + elif "R_MIPS_CALL16" in row: + repl = f"%call16({repl})" + else: + assert False, f"unknown relocation type '{row}' for line '{prev}'" + return before + repl + after, repl + + def is_end_of_function(self, mnemonic: str, args: str) -> bool: + if self.seen_jr_ra: + return True + if mnemonic == "jr" and args == "ra": + self.seen_jr_ra = True + return False + + +class AsmProcessorPPC(AsmProcessor): + def pre_process( + self, mnemonic: str, args: str, next_row: Optional[str] + ) -> Tuple[str, str]: + + if next_row and "R_PPC_EMB_SDA21" in next_row: + # With sda21 relocs, the linker transforms `r0` into `r2`/`r13`, and + # we may encounter this in either pre-transformed or post-transformed + # versions depending on if the .o file comes from compiler output or + # from disassembly. Normalize, to make sure both forms are treated as + # equivalent. + + args = args.replace("(r2)", "(0)") + args = args.replace("(r13)", "(0)") + args = args.replace(",r2,", ",0,") + args = args.replace(",r13,", ",0,") + + # We want to convert li and lis with an sda21 reloc, + # because the r0 to r2/r13 transformation results in + # turning an li/lis into an addi/addis with r2/r13 arg + # our preprocessing normalizes all versions to addi with a 0 arg + if mnemonic in {"li", "lis"}: + mnemonic = mnemonic.replace("li", "addi") + args_parts = args.split(",") + args = args_parts[0] + ",0," + args_parts[1] + + return mnemonic, args + + def process_reloc(self, row: str, prev: str) -> Tuple[str, Optional[str]]: + arch = self.config.arch + assert any( + r in row + for r in ["R_PPC_REL24", "R_PPC_ADDR16", "R_PPC_EMB_SDA21", "R_PPC_REL14"] + ), f"unknown relocation type '{row}' for line '{prev}'" + before, imm, after = parse_relocated_line(prev) + repl = row.split()[-1] + if "R_PPC_REL24" in row: + # function calls + pass + if "R_PPC_REL14" in row: + pass + elif "R_PPC_ADDR16_HI" in row: + # absolute hi of addr + repl = f"{repl}@h" + elif "R_PPC_ADDR16_HA" in row: + # adjusted hi of addr + repl = f"{repl}@ha" + elif "R_PPC_ADDR16_LO" in row: + # lo of addr + repl = f"{repl}@l" + elif "R_PPC_ADDR16" in row: + # 16-bit absolute addr + if "+0x7" in repl: + # remove the very large addends as they are an artifact of (label-_SDA(2)_BASE_) + # computations and are unimportant in a diff setting. + if int(repl.split("+")[1], 16) > 0x70000000: + repl = repl.split("+")[0] + elif "R_PPC_EMB_SDA21" in row: + # sda21 relocations; r2/r13 --> 0 swaps are performed in pre_process + repl = f"{repl}@sda21" + + return before + repl + after, repl + + def is_end_of_function(self, mnemonic: str, args: str) -> bool: + return mnemonic == "blr" + + +class AsmProcessorARM32(AsmProcessor): + def process_reloc(self, row: str, prev: str) -> Tuple[str, Optional[str]]: + arch = self.config.arch + if "R_ARM_V4BX" in row: + # R_ARM_V4BX converts "bx " to "mov pc," for some targets. + # Ignore for now. + return prev, None + if "R_ARM_ABS32" in row and not prev.startswith(".word"): + # Don't crash on R_ARM_ABS32 relocations incorrectly applied to code. + # (We may want to do something more fancy here that actually shows the + # related symbol, but this serves as a stop-gap.) + return prev, None + before, imm, after = parse_relocated_line(prev) + repl = row.split()[-1] + reloc_addend_from_imm(imm, before, self.config.arch) + return before + repl + after, repl + + def _normalize_arch_specific(self, mnemonic: str, row: str) -> str: + if self.config.ignore_addr_diffs: + row = self._normalize_bl(mnemonic, row) + row = self._normalize_data_pool(row) + return row + + def _normalize_bl(self, mnemonic: str, row: str) -> str: + if mnemonic != "bl": + return row + + row, _ = split_off_address(row) + return row + "" + + def _normalize_data_pool(self, row: str) -> str: + pool_match = re.search(ARM32_LOAD_POOL_PATTERN, row) + return pool_match.group(1) if pool_match else row + + def post_process(self, lines: List["Line"]) -> None: + lines_by_line_number = {} + for line in lines: + lines_by_line_number[line.line_num] = line + for line in lines: + if line.data_pool_addr is None: + continue + + # Add data symbol and its address to the line. + line_original = lines_by_line_number[line.data_pool_addr].original + value = line_original.split()[1] + addr = "{:x}".format(line.data_pool_addr) + line.original = line.normalized_original + f"={value} ({addr})" + + +class AsmProcessorAArch64(AsmProcessor): + def __init__(self, config: Config) -> None: + super().__init__(config) self._adrp_pair_registers: Set[str] = set() def _normalize_arch_specific(self, mnemonic: str, row: str) -> str: - if args.ignore_addr_diffs: + if self.config.ignore_addr_diffs: row = self._normalize_adrp_differences(mnemonic, row) row = self._normalize_bl(mnemonic, row) return row @@ -917,8 +1674,8 @@ class DifferenceNormalizerAArch64(DifferenceNormalizer): if mnemonic != "bl": return row - row, _ = split_off_branch(row) - return row + row, _ = split_off_address(row) + return row + "" def _normalize_adrp_differences(self, mnemonic: str, row: str) -> str: """Identifies ADRP + LDR/ADD pairs that are used to access the GOT and @@ -933,153 +1690,651 @@ class DifferenceNormalizerAArch64(DifferenceNormalizer): row_parts = row.split("\t", 1) if mnemonic == "adrp": self._adrp_pair_registers.add(row_parts[1].strip().split(",")[0]) - row, _ = split_off_branch(row) + row, _ = split_off_address(row) + return row + "" elif mnemonic == "ldr": for reg in self._adrp_pair_registers: # ldr xxx, [reg] # ldr xxx, [reg, ] if f", [{reg}" in row_parts[1]: self._adrp_pair_registers.remove(reg) - return normalize_imms(row) + return normalize_imms(row, AARCH64_SETTINGS) elif mnemonic == "add": for reg in self._adrp_pair_registers: # add reg, reg, if row_parts[1].startswith(f"{reg}, {reg}, "): self._adrp_pair_registers.remove(reg) - return normalize_imms(row) + return normalize_imms(row, AARCH64_SETTINGS) return row -def make_difference_normalizer() -> DifferenceNormalizer: - if arch == "aarch64": - return DifferenceNormalizerAArch64() - return DifferenceNormalizer() +class AsmProcessorI686(AsmProcessor): + def process_reloc(self, row: str, prev: str) -> Tuple[str, Optional[str]]: + repl = row.split()[-1] + mnemonic, args = prev.split(maxsplit=1) -@functools.lru_cache(maxsize=None) # ideally would use functools.cache but that needs py3.9 which most ppl don't have -def convert_src_path(path: str) -> str: - if args.source_path_postprocess == 'none': ... - elif args.source_path_postprocess == 'unix': - # on Wine, use winepath to convert - path = subprocess.check_output(["winepath","-u", path], universal_newlines=True).strip() - elif args.source_path_postprocess == 'wsl': - # on WSL, use wslpath to convert - path = subprocess.check_output(["wslpath","-ua", path], universal_newlines=True).strip() + addr_imm = re.search(r"(? List[Line]: - file_cache = dict() - normalizer = make_difference_normalizer() + return f"{mnemonic}\t{args[:start]+repl+args[end:]}", repl + + def is_end_of_function(self, mnemonic: str, args: str) -> bool: + return mnemonic == "ret" + + +@dataclass +class ArchSettings: + name: str + re_int: Pattern[str] + re_comment: Pattern[str] + re_reg: Pattern[str] + re_sprel: Pattern[str] + re_large_imm: Pattern[str] + re_imm: Pattern[str] + re_reloc: Pattern[str] + branch_instructions: Set[str] + instructions_with_address_immediates: Set[str] + forbidden: Set[str] = field(default_factory=lambda: set(string.ascii_letters + "_")) + arch_flags: List[str] = field(default_factory=list) + branch_likely_instructions: Set[str] = field(default_factory=set) + proc: Type[AsmProcessor] = AsmProcessor + big_endian: Optional[bool] = True + delay_slot_instructions: Set[str] = field(default_factory=set) + + +MIPS_BRANCH_LIKELY_INSTRUCTIONS = { + "beql", + "bnel", + "beqzl", + "bnezl", + "bgezl", + "bgtzl", + "blezl", + "bltzl", + "bc1tl", + "bc1fl", +} +MIPS_BRANCH_INSTRUCTIONS = MIPS_BRANCH_LIKELY_INSTRUCTIONS.union( + { + "b", + "beq", + "bne", + "beqz", + "bnez", + "bgez", + "bgtz", + "blez", + "bltz", + "bc1t", + "bc1f", + } +) + +ARM32_PREFIXES = {"b", "bl"} +ARM32_CONDS = { + "", + "eq", + "ne", + "cs", + "cc", + "mi", + "pl", + "vs", + "vc", + "hi", + "ls", + "ge", + "lt", + "gt", + "le", + "al", +} +ARM32_SUFFIXES = {"", ".n", ".w"} +ARM32_BRANCH_INSTRUCTIONS = { + f"{prefix}{cond}{suffix}" + for prefix in ARM32_PREFIXES + for cond in ARM32_CONDS + for suffix in ARM32_SUFFIXES +} + +AARCH64_BRANCH_INSTRUCTIONS = { + "b", + "b.eq", + "b.ne", + "b.cs", + "b.hs", + "b.cc", + "b.lo", + "b.mi", + "b.pl", + "b.vs", + "b.vc", + "b.hi", + "b.ls", + "b.ge", + "b.lt", + "b.gt", + "b.le", + "cbz", + "cbnz", + "tbz", + "tbnz", +} + +PPC_BRANCH_INSTRUCTIONS = { + "b", + "beq", + "beq+", + "beq-", + "bne", + "bne+", + "bne-", + "blt", + "blt+", + "blt-", + "ble", + "ble+", + "ble-", + "bdnz", + "bdnz+", + "bdnz-", + "bge", + "bge+", + "bge-", + "bgt", + "bgt+", + "bgt-", +} + +I686_BRANCH_INSTRUCTIONS = { + "call", + "jmp", + "ljmp", + "ja", + "jae", + "jb", + "jbe", + "jc", + "jcxz", + "jecxz", + "jrcxz", + "je", + "jg", + "jge", + "jl", + "jle", + "jna", + "jnae", + "jnb", + "jnbe", + "jnc", + "jne", + "jng", + "jnge", + "jnl", + "jnle", + "jno", + "jnp", + "jns", + "jnz", + "jo", + "jp", + "jpe", + "jpo", + "js", + "jz", + "ja", + "jae", + "jb", + "jbe", + "jc", + "je", + "jz", + "jg", + "jge", + "jl", + "jle", + "jna", + "jnae", + "jnb", + "jnbe", + "jnc", + "jne", + "jng", + "jnge", + "jnl", + "jnle", + "jno", + "jnp", + "jns", + "jnz", + "jo", + "jp", + "jpe", + "jpo", + "js", + "jz", +} + +MIPS_SETTINGS = ArchSettings( + name="mips", + re_int=re.compile(r"[0-9]+"), + re_comment=re.compile(r"<.*>"), + # Includes: + # - General purpose registers v0..1, a0..7, t0..9, s0..8, zero, at, fp, k0..1/kt0..1 + # - Float registers f0..31, or fv0..1, fa0..7, ft0..15, fs0..8 plus odd complements + # (actually used number depends on ABI) + # sp, gp should not be in this list + re_reg=re.compile(r"\$?\b([astv][0-9]|at|f[astv]?[0-9]+f?|kt?[01]|fp|ra|zero)\b"), + re_sprel=re.compile(r"(?<=,)([0-9]+|0x[0-9a-f]+)\(sp\)"), + re_large_imm=re.compile(r"-?[1-9][0-9]{2,}|-?0x[0-9a-f]{3,}"), + re_imm=re.compile( + r"(\b|-)([0-9]+|0x[0-9a-fA-F]+)\b(?!\(sp)|%(lo|hi|got|gp_rel|call16)\([^)]*\)" + ), + re_reloc=re.compile(r"R_MIPS_"), + arch_flags=["-m", "mips:4300"], + branch_likely_instructions=MIPS_BRANCH_LIKELY_INSTRUCTIONS, + branch_instructions=MIPS_BRANCH_INSTRUCTIONS, + instructions_with_address_immediates=MIPS_BRANCH_INSTRUCTIONS.union({"j", "jal"}), + delay_slot_instructions=MIPS_BRANCH_INSTRUCTIONS.union({"j", "jal", "jr", "jalr"}), + proc=AsmProcessorMIPS, +) + +MIPSEL_SETTINGS = replace(MIPS_SETTINGS, name="mipsel", big_endian=False) + +MIPSEE_SETTINGS = replace( + MIPSEL_SETTINGS, name="mipsee", arch_flags=["-m", "mips:5900"] +) + +MIPS_ARCH_NAMES = {"mips", "mipsel", "mipsee"} + +ARM32_SETTINGS = ArchSettings( + name="arm32", + re_int=re.compile(r"[0-9]+"), + re_comment=re.compile(r"(<.*>|//.*$)"), + # Includes: + # - General purpose registers: r0..13 + # - Frame pointer registers: lr (r14), pc (r15) + # - VFP/NEON registers: s0..31, d0..31, q0..15, fpscr, fpexc, fpsid + # SP should not be in this list. + re_reg=re.compile( + r"\$?\b([rq][0-9]|[rq]1[0-5]|pc|lr|[ds][12]?[0-9]|[ds]3[01]|fp(scr|exc|sid))\b" + ), + re_sprel=re.compile(r"sp, #-?(0x[0-9a-fA-F]+|[0-9]+)\b"), + re_large_imm=re.compile(r"-?[1-9][0-9]{2,}|-?0x[0-9a-f]{3,}"), + re_imm=re.compile(r"(?|//.*$)"), + # GPRs and FP registers: X0-X30, W0-W30, [BHSDVQ]0..31 + # (FP registers may be followed by data width and number of elements, e.g. V0.4S) + # The zero registers and SP should not be in this list. + re_reg=re.compile( + r"\$?\b([bhsdvq]([12]?[0-9]|3[01])(\.\d\d?[bhsdvq])?|[xw][12]?[0-9]|[xw]30)\b" + ), + re_sprel=re.compile(r"sp, #-?(0x[0-9a-fA-F]+|[0-9]+)\b"), + re_large_imm=re.compile(r"-?[1-9][0-9]{2,}|-?0x[0-9a-f]{3,}"), + re_imm=re.compile(r"(?|//.*$)"), + # r1 not included + re_reg=re.compile(r"\$?\b([rf](?:[02-9]|[1-9][0-9]+)|f1)\b"), + re_sprel=re.compile(r"(?<=,)(-?[0-9]+|-?0x[0-9a-f]+)\(r1\)"), + re_large_imm=re.compile(r"-?[1-9][0-9]{2,}|-?0x[0-9a-f]{3,}"), + re_imm=re.compile( + r"(\b|-)([0-9]+|0x[0-9a-fA-F]+)\b(?!\(r1)|[^ \t,]+@(l|ha|h|sda21)" + ), + re_reloc=re.compile(r"R_PPC_"), + arch_flags=["-m", "powerpc", "-M", "broadway"], + branch_instructions=PPC_BRANCH_INSTRUCTIONS, + instructions_with_address_immediates=PPC_BRANCH_INSTRUCTIONS.union({"bl"}), + proc=AsmProcessorPPC, +) + +I686_SETTINGS = ArchSettings( + name="i686", + re_int=re.compile(r"[0-9]+"), + re_comment=re.compile(r"<.*>"), + # Includes: + # - (e)a-d(x,l,h) + # - (e)s,d,b(i,p)(l) + # - cr0-7 + # - x87 st + # - MMX, SSE vector registers + # - cursed registers: eal ebl ebh edl edh... + re_reg=re.compile( + r"\%?\b(e?(([sd]i|[sb]p)l?|[abcd][xhl])|[cdesfg]s|cr[0-7]|x?mm[0-7]|st)\b" + ), + re_large_imm=re.compile(r"-?[1-9][0-9]{2,}|-?0x[0-9a-f]{3,}"), + re_sprel=re.compile(r"-?(0x[0-9a-f]+|[0-9]+)(?=\((%ebp|%esi)\))"), + re_imm=re.compile(r"-?(0x[0-9a-f]+|[0-9]+)"), + re_reloc=re.compile(r"R_386_"), + # The x86 architecture has a variable instruction length. The raw bytes of + # an instruction as displayed by objdump can line wrap if it's long enough. + # This destroys the objdump output processor logic, so we avoid this. + arch_flags=["-m", "i386", "--no-show-raw-insn"], + branch_instructions=I686_BRANCH_INSTRUCTIONS, + instructions_with_address_immediates=I686_BRANCH_INSTRUCTIONS.union({"mov"}), + proc=AsmProcessorI686, +) + +ARCH_SETTINGS = [ + MIPS_SETTINGS, + MIPSEL_SETTINGS, + MIPSEE_SETTINGS, + ARM32_SETTINGS, + ARMEL_SETTINGS, + AARCH64_SETTINGS, + PPC_SETTINGS, + I686_SETTINGS, +] + + +def hexify_int(row: str, pat: Match[str], arch: ArchSettings) -> str: + full = pat.group(0) + if len(full) <= 1: + # leave one-digit ints alone + return full + start, end = pat.span() + if start and row[start - 1] in arch.forbidden: + return full + if end < len(row) and row[end] in arch.forbidden: + return full + return hex(int(full)) + + +def parse_relocated_line(line: str) -> Tuple[str, str, str]: + # Pick out the last argument + for c in ",\t ": + if c in line: + ind2 = line.rindex(c) + break + else: + raise Exception(f"failed to parse relocated line: {line}") + before = line[: ind2 + 1] + after = line[ind2 + 1 :] + # Move an optional ($reg) part of it to 'after' + ind2 = after.find("(") + if ind2 == -1: + imm, after = after, "" + else: + imm, after = after[:ind2], after[ind2:] + return before, imm, after + + +def reloc_addend_from_imm(imm: str, before: str, arch: ArchSettings) -> str: + """For architectures like MIPS where relocations have addends embedded in + the code as immediates, convert such an immediate into an addition/ + subtraction that can occur just after the symbol.""" + # TODO this is incorrect for MIPS %lo/%hi which need to be paired up + # and combined. In practice, this means we only get symbol offsets within + # %lo, while %hi just shows the symbol. Unfortunately, objdump's output + # loses relocation order, so we cannot do this without parsing ELF relocs + # ourselves... + mnemonic = before.split()[0] + if mnemonic in arch.instructions_with_address_immediates: + addend = int(imm, 16) + else: + addend = int(imm, 0) + if addend == 0: + return "" + elif addend < 0: + return hex(addend) + else: + return "+" + hex(addend) + + +def pad_mnemonic(line: str) -> str: + if "\t" not in line: + return line + mn, args = line.split("\t", 1) + return f"{mn:<7s} {args}" + + +@dataclass +class Line: + mnemonic: str + diff_row: str + original: str + normalized_original: str + scorable_line: str + symbol: Optional[str] = None + line_num: Optional[int] = None + branch_target: Optional[int] = None + data_pool_addr: Optional[int] = None + source_filename: Optional[str] = None + source_line_num: Optional[int] = None + source_lines: List[str] = field(default_factory=list) + comment: Optional[str] = None + + +def process(dump: str, config: Config) -> List[Line]: + arch = config.arch + processor = arch.proc(config) skip_next = False source_lines = [] - if not args.diff_obj: - lines = lines[7:] - if lines and not lines[-1]: - lines.pop() + source_filename = None + source_line_num = None - last_path = None - last_line = None + i = 0 + num_instr = 0 + data_refs: Dict[int, Dict[str, List[int]]] = defaultdict(lambda: defaultdict(list)) output: List[Line] = [] stop_after_delay_slot = False - for row in lines: - if args.diff_obj and (">:" in row or not row): + lines = dump.split("\n") + while i < len(lines): + row = lines[i] + i += 1 + + if not row: continue - if "R_AARCH64_" in row: - # TODO: handle relocation + if re.match(r"^[0-9a-f]+ <.*>:$", row): continue - if "R_MIPS_" in row: - # N.B. Don't transform the diff rows, they already ignore immediates - # if output[-1].diff_row != "": - # output[-1] = output[-1].replace(diff_row=process_mips_reloc(row, output[-1].row_with_imm)) - new_original = process_mips_reloc(row, output[-1].original) - output[-1] = output[-1]._replace(original=new_original) + if row.startswith("DATAREF"): + parts = row.split(" ", 3) + text_offset = int(parts[1]) + from_offset = int(parts[2]) + from_section = parts[3] + data_refs[text_offset][from_section].append(from_offset) continue - if "R_PPC_" in row: - new_original = process_ppc_reloc(row, output[-1].original) - output[-1] = output[-1]._replace(original=new_original) + if config.diff_obj and num_instr >= config.max_function_size_lines: + output.append( + Line( + mnemonic="...", + diff_row="...", + original="...", + normalized_original="...", + scorable_line="...", + ) + ) + break + + if not re.match(r"^\s+[0-9a-f]+:\s+", row): + # This regex is conservative, and assumes the file path does not contain "weird" + # characters like tabs or angle brackets. + if re.match(r"^[^ \t<>][^\t<>]*:[0-9]+( \(discriminator [0-9]+\))?$", row): + source_filename, _, tail = row.rpartition(":") + source_line_num = int(tail.partition(" ")[0]) + source_lines.append(row) continue - if args.source and (row and row[0] != " "): - m_file_line = re.match(re_file_line, row) - if m_file_line: - path = convert_src_path(m_file_line.group(1)) - line = int(m_file_line.group(2)) + # If the instructions loads a data pool symbol, extract the address of + # the symbol. + data_pool_addr = None + pool_match = re.search(ARM32_LOAD_POOL_PATTERN, row) + if pool_match: + offset = pool_match.group(3).split(" ")[0][1:] + data_pool_addr = int(offset, 16) - if path in file_cache: - file_lines = file_cache[path] - else: - if not Path(path).is_file(): - fail(f"Source file not found: '{path}'") - with open(path) as source_file: - file_lines = source_file.readlines() - file_cache[path] = [x.rstrip() for x in file_lines] - - if path == last_path: - if last_line: - i = last_line - while i + 1 < line: - if i > 0 and i <= len(file_lines): - source_lines.append(file_lines[i - 1]) - i += 1 - else: - source_lines.append(f"// \"{elide_path(Path(path), n_lhs=0, n_rhs=2)}\"") - - if line > 0 and line <= len(file_lines): - source_lines.append(file_lines[line - 1]) - - last_path = path - last_line = line - else: - last_path = None - last_line = None - source_lines.append(row) - continue - - m_comment = re.search(re_comment, row) + m_comment = re.search(arch.re_comment, row) comment = m_comment[0] if m_comment else None - row = re.sub(re_comment, "", row) + row = re.sub(arch.re_comment, "", row) + line_num_str = row.split(":")[0] row = row.rstrip() tabs = row.split("\t") - row = "\t".join(tabs[2:]) - line_num = tabs[0].strip() + line_num = eval_line_num(line_num_str.strip()) + + # TODO: use --no-show-raw-insn for all arches + if arch.name == "i686": + row = "\t".join(tabs[1:]) + else: + row = "\t".join(tabs[2:]) + + if line_num in data_refs: + refs = data_refs[line_num] + ref_str = "; ".join( + section_name + "+" + ",".join(hex(off) for off in offs) + for section_name, offs in refs.items() + ) + output.append( + Line( + mnemonic="", + diff_row="", + original=ref_str, + normalized_original=ref_str, + scorable_line="", + ) + ) if "\t" in row: row_parts = row.split("\t", 1) else: # powerpc-eabi-objdump doesn't use tabs row_parts = [part.lstrip() for part in row.split(" ", 1)] - mnemonic = row_parts[0].strip() - if mnemonic not in instructions_with_address_immediates: - row = re.sub(re_int, lambda m: hexify_int(row, m), row) + mnemonic = row_parts[0].strip() + args = row_parts[1].strip() if len(row_parts) >= 2 else "" + + next_line = lines[i] if i < len(lines) else None + mnemonic, args = processor.pre_process(mnemonic, args, next_line) + row = mnemonic + "\t" + args.replace("\t", " ") + + addr = "" + if mnemonic in arch.instructions_with_address_immediates: + row, addr = split_off_address(row) + # objdump prefixes addresses with 0x/-0x if they don't resolve to some + # symbol + offset. Strip that. + addr = addr.replace("0x", "") + + row = re.sub(arch.re_int, lambda m: hexify_int(row, m, arch), row) + row += addr + + # Let 'original' be 'row' with relocations applied, while we continue + # transforming 'row' into a coarser version that ignores registers and + # immediates. original = row - normalized_original = normalizer.normalize(mnemonic, original) + + symbol = None + while i < len(lines): + reloc_row = lines[i] + if re.search(arch.re_reloc, reloc_row): + original, reloc_symbol = processor.process_reloc(reloc_row, original) + if reloc_symbol is not None: + symbol = reloc_symbol + else: + break + i += 1 + + is_text_relative_j = False + if ( + arch.name in MIPS_ARCH_NAMES + and mnemonic == "j" + and symbol is not None + and symbol.startswith(".text") + ): + symbol = None + original = row + is_text_relative_j = True + + normalized_original = processor.normalize(mnemonic, original) + + scorable_line = normalized_original + if not config.score_stack_differences: + scorable_line = re.sub(arch.re_sprel, "addr(sp)", scorable_line) + if skip_next: skip_next = False row = "" mnemonic = "" - if mnemonic in branch_likely_instructions: + scorable_line = "" + if mnemonic in arch.branch_likely_instructions: skip_next = True - row = re.sub(re_reg, "", row) - row = re.sub(re_sprel, "addr(sp)", row) + + row = re.sub(arch.re_reg, "", row) + row = re.sub(arch.re_sprel, "addr(sp)", row) row_with_imm = row - if mnemonic in instructions_with_address_immediates: + if mnemonic in arch.instructions_with_address_immediates: row = row.strip() - row, _ = split_off_branch(row) + row, _ = split_off_address(row) row += "" else: - row = normalize_imms(row) + row = normalize_imms(row, arch) branch_target = None - if mnemonic in branch_instructions: - target = row_parts[1].strip().split(",")[-1] - if mnemonic in branch_likely_instructions: - target = hex(int(target, 16) - 4)[2:] - branch_target = target.strip() + if ( + mnemonic in arch.branch_instructions or is_text_relative_j + ) and symbol is None: + x86_longjmp = re.search(r"\*(.*)\(", args) + if x86_longjmp: + capture = x86_longjmp.group(1) + if capture != "": + branch_target = int(capture, 16) + else: + branch_target = int(args.split(",")[-1], 16) output.append( Line( @@ -1087,81 +2342,85 @@ def process(lines: List[str]) -> List[Line]: diff_row=row, original=original, normalized_original=normalized_original, + scorable_line=scorable_line, + symbol=symbol, line_num=line_num, branch_target=branch_target, + data_pool_addr=data_pool_addr, + source_filename=source_filename, + source_line_num=source_line_num, source_lines=source_lines, comment=comment, ) ) + num_instr += 1 source_lines = [] - if args.stop_jrra and mnemonic == "jr" and row_parts[1].strip() == "ra": - stop_after_delay_slot = True - elif stop_after_delay_slot: + if config.stop_at_ret and processor.is_end_of_function(mnemonic, args): break + processor.post_process(output) return output -def format_single_line_diff(line1: str, line2: str, column_width: int) -> str: - return ansi_ljust(line1, column_width) + line2 +def normalize_imms(row: str, arch: ArchSettings) -> str: + return re.sub(arch.re_imm, "", row) -class SymbolColorer: - symbol_colors: Dict[str, str] - - def __init__(self, base_index: int) -> None: - self.color_index = base_index - self.symbol_colors = {} - - def color_symbol(self, s: str, t: Optional[str] = None) -> str: - try: - color = self.symbol_colors[s] - except: - color = COLOR_ROTATION[self.color_index % len(COLOR_ROTATION)] - self.color_index += 1 - self.symbol_colors[s] = color - t = t or s - return f"{color}{t}{Fore.RESET}" +def normalize_stack(row: str, arch: ArchSettings) -> str: + return re.sub(arch.re_sprel, "addr(sp)", row) -def normalize_imms(row: str) -> str: - return re.sub(re_imm, "", row) +def check_for_symbol_mismatch( + old_line: Line, new_line: Line, symbol_map: Dict[str, str] +) -> bool: + + assert old_line.symbol is not None + assert new_line.symbol is not None + + if new_line.symbol.startswith("%hi"): + return False + + if old_line.symbol not in symbol_map: + symbol_map[old_line.symbol] = new_line.symbol + return False + elif symbol_map[old_line.symbol] == new_line.symbol: + return False + + return True -def normalize_stack(row: str) -> str: - return re.sub(re_sprel, "addr(sp)", row) +def field_matches_any_symbol(field: str, arch: ArchSettings) -> bool: + if arch.name == "ppc": + if "..." in field: + return True + + parts = field.rsplit("@", 1) + if len(parts) == 2 and parts[1] in {"l", "h", "ha", "sda21"}: + field = parts[0] + + return re.fullmatch((r"^@\d+$"), field) is not None + + if arch.name in MIPS_ARCH_NAMES: + return "." in field + + # Example: ".text+0x34" + if arch.name == "arm32": + return "." in field + + return False -def split_off_branch(line: str) -> Tuple[str, str]: +def split_off_address(line: str) -> Tuple[str, str]: + """Split e.g. 'beqz $r0,1f0' into 'beqz $r0,' and '1f0'.""" parts = line.split(",") if len(parts) < 2: parts = line.split(None, 1) - off = len(line) - len(parts[-1]) + if len(parts) < 2: + parts.append("") + off = len(line) - len(parts[-1].strip()) return line[:off], line[off:] -ColorFunction = Callable[[str], str] - -def color_fields(pat: Pattern[str], out1: str, out2: str, color1: ColorFunction, color2: Optional[ColorFunction]=None) -> Tuple[str, str]: - diffs = [of.group() != nf.group() for (of, nf) in zip(pat.finditer(out1), pat.finditer(out2))] - - it = iter(diffs) - def maybe_color(color: ColorFunction, s: str) -> str: - return color(s) if next(it, False) else f"{Style.RESET_ALL}{s}" - - out1 = pat.sub(lambda m: maybe_color(color1, m.group()), out1) - it = iter(diffs) - out2 = pat.sub(lambda m: maybe_color(color2 or color1, m.group()), out2) - - return out1, out2 - - -def color_branch_imms(br1: str, br2: str) -> Tuple[str, str]: - if br1 != br2: - br1 = f"{Fore.LIGHTBLUE_EX}{br1}{Style.RESET_ALL}" - br2 = f"{Fore.LIGHTBLUE_EX}{br2}{Style.RESET_ALL}" - return br1, br2 - def diff_sequences_difflib( seq1: List[str], seq2: List[str] @@ -1171,17 +2430,12 @@ def diff_sequences_difflib( def diff_sequences( - seq1: List[str], seq2: List[str] + seq1: List[str], seq2: List[str], algorithm: str ) -> List[Tuple[str, int, int, int, int]]: - if ( - args.algorithm != "levenshtein" - or len(seq1) * len(seq2) > 4 * 10 ** 8 - or len(seq1) + len(seq2) >= 0x110000 - ): + if algorithm != "levenshtein": return diff_sequences_difflib(seq1, seq2) # The Levenshtein library assumes that we compare strings, not lists. Convert. - # (Per the check above we know we have fewer than 0x110000 unique elements, so chr() works.) remapping: Dict[str, str] = {} def remap(seq: List[str]) -> str: @@ -1194,19 +2448,32 @@ def diff_sequences( seq[i] = val return "".join(seq) - rem1 = remap(seq1) - rem2 = remap(seq2) - return Levenshtein.opcodes(rem1, rem2) # type: ignore + try: + rem1 = remap(seq1) + rem2 = remap(seq2) + except ValueError as e: + if len(seq1) + len(seq2) < 0x110000: + raise + # If there are too many unique elements, chr() doesn't work. + # Assume this is the case and fall back to difflib. + return diff_sequences_difflib(seq1, seq2) + + import Levenshtein + + ret: List[Tuple[str, int, int, int, int]] = Levenshtein.opcodes(rem1, rem2) + return ret def diff_lines( lines1: List[Line], lines2: List[Line], + algorithm: str, ) -> List[Tuple[Optional[Line], Optional[Line]]]: ret = [] for (tag, i1, i2, j1, j2) in diff_sequences( [line.mnemonic for line in lines1], [line.mnemonic for line in lines2], + algorithm, ): for line1, line2 in itertools.zip_longest(lines1[i1:i2], lines2[j1:j2]): if tag == "replace": @@ -1223,41 +2490,184 @@ def diff_lines( return ret +def diff_sameline( + old_line: Line, new_line: Line, config: Config, symbol_map: Dict[str, str] +) -> Tuple[int, int, bool]: + + old = old_line.scorable_line + new = new_line.scorable_line + if old == new: + return (0, 0, False) + + num_stack_penalties = 0 + num_regalloc_penalties = 0 + has_symbol_mismatch = False + + ignore_last_field = False + if config.score_stack_differences: + oldsp = re.search(config.arch.re_sprel, old) + newsp = re.search(config.arch.re_sprel, new) + if oldsp and newsp: + oldrel = int(oldsp.group(1) or "0", 0) + newrel = int(newsp.group(1) or "0", 0) + num_stack_penalties += abs(oldrel - newrel) + ignore_last_field = True + + # Probably regalloc difference, or signed vs unsigned + + # Compare each field in order + new_parts, old_parts = new.split(None, 1), old.split(None, 1) + newfields, oldfields = new_parts[1].split(","), old_parts[1].split(",") + if ignore_last_field: + newfields = newfields[:-1] + oldfields = oldfields[:-1] + else: + # If the last field has a parenthesis suffix, e.g. "0x38(r7)" + # we split that part out to make it a separate field + # however, we don't split if it has a proceeding % macro, e.g. "%lo(.data)" + re_paren = re.compile(r"(? int: + # This logic is copied from `scorer.py` from the decomp permuter project + # https://github.com/simonlindholm/decomp-permuter/blob/main/src/scorer.py + num_stack_penalties = 0 + num_regalloc_penalties = 0 + num_reordering_penalties = 0 + num_insertion_penalties = 0 + num_deletion_penalties = 0 + deletions = [] + insertions = [] + + def diff_insert(line: str) -> None: + # Reordering or totally different codegen. + # Defer this until later when we can tell. + insertions.append(line) + + def diff_delete(line: str) -> None: + deletions.append(line) + + # Find the end of the last long streak of matching mnemonics, if it looks + # like the objdump output was truncated. This is used to skip scoring + # misaligned lines at the end of the diff. + last_mismatch = -1 + max_index = None + lines_were_truncated = False + for index, (line1, line2) in enumerate(lines): + if (line1 and line1.original == "...") or (line2 and line2.original == "..."): + lines_were_truncated = True + if line1 and line2 and line1.mnemonic == line2.mnemonic: + if index - last_mismatch >= 50: + max_index = index + else: + last_mismatch = index + if not lines_were_truncated: + max_index = None + + for index, (line1, line2) in enumerate(lines): + if max_index is not None and index > max_index: + break + if line1 and line2 and line1.mnemonic == line2.mnemonic: + sp, rp, _ = diff_sameline(line1, line2, config, symbol_map) + num_stack_penalties += sp + num_regalloc_penalties += rp + else: + if line1: + diff_delete(line1.scorable_line) + if line2: + diff_insert(line2.scorable_line) + + insertions_co = Counter(insertions) + deletions_co = Counter(deletions) + for item in insertions_co + deletions_co: + ins = insertions_co[item] + dels = deletions_co[item] + common = min(ins, dels) + num_insertion_penalties += ins - common + num_deletion_penalties += dels - common + num_reordering_penalties += common + + return ( + num_stack_penalties * config.penalty_stackdiff + + num_regalloc_penalties * config.penalty_regalloc + + num_reordering_penalties * config.penalty_reordering + + num_insertion_penalties * config.penalty_insertion + + num_deletion_penalties * config.penalty_deletion + ) + + +@dataclass(frozen=True) class OutputLine: - base: Optional[str] - fmt2: str + base: Optional[Text] = field(compare=False) + fmt2: Text = field(compare=False) key2: Optional[str] - - def __init__(self, base: Optional[str], fmt2: str, key2: Optional[str]) -> None: - self.base = base - self.fmt2 = fmt2 - self.key2 = key2 - - def __eq__(self, other: object) -> bool: - if not isinstance(other, OutputLine): - return NotImplemented - return self.key2 == other.key2 - - def __hash__(self) -> int: - return hash(self.key2) + boring: bool = field(compare=False) + is_data_ref: bool = field(compare=False) + line1: Optional[Line] = field(compare=False) + line2: Optional[Line] = field(compare=False) -def do_diff(basedump: str, mydump: str) -> List[OutputLine]: +@dataclass(frozen=True) +class Diff: + lines: List[OutputLine] + score: int + max_score: int + + +def trim_nops(lines: List[Line], arch: ArchSettings) -> List[Line]: + lines = lines[:] + while ( + lines + and lines[-1].mnemonic == "nop" + and (len(lines) == 1 or lines[-2].mnemonic not in arch.delay_slot_instructions) + ): + lines.pop() + return lines + + +def do_diff(lines1: List[Line], lines2: List[Line], config: Config) -> Diff: + if config.show_source: + import cxxfilt + arch = config.arch + fmt = config.formatter output: List[OutputLine] = [] + symbol_map: Dict[str, str] = {} - lines1 = process(basedump.split("\n")) - lines2 = process(mydump.split("\n")) + sc1 = symbol_formatter("base-reg", 0) + sc2 = symbol_formatter("my-reg", 0) + sc3 = symbol_formatter("base-stack", 4) + sc4 = symbol_formatter("my-stack", 4) + sc5 = symbol_formatter("base-branch", 0) + sc6 = symbol_formatter("my-branch", 0) + bts1: Set[int] = set() + bts2: Set[int] = set() - sc1 = SymbolColorer(0) - sc2 = SymbolColorer(0) - sc3 = SymbolColorer(4) - sc4 = SymbolColorer(4) - sc5 = SymbolColorer(0) - sc6 = SymbolColorer(0) - bts1: Set[str] = set() - bts2: Set[str] = set() - - if args.show_branches: + if config.show_branches: for (lines, btset, sc) in [ (lines1, bts1, sc5), (lines2, bts2, sc6), @@ -1265,136 +2675,282 @@ def do_diff(basedump: str, mydump: str) -> List[OutputLine]: for line in lines: bt = line.branch_target if bt is not None: - btset.add(bt + ":") - sc.color_symbol(bt + ":") + btset.add(bt) + sc(str(bt)) - for (line1, line2) in diff_lines(lines1, lines2): - line_color1 = line_color2 = sym_color = Fore.RESET + lines1 = trim_nops(lines1, arch) + lines2 = trim_nops(lines2, arch) + + diffed_lines = diff_lines(lines1, lines2, config.algorithm) + + line_num_base = -1 + line_num_offset = 0 + line_num_2to1 = {} + for (line1, line2) in diffed_lines: + if line1 is not None and line1.line_num is not None: + line_num_base = line1.line_num + line_num_offset = 0 + else: + line_num_offset += 1 + if line2 is not None and line2.line_num is not None: + line_num_2to1[line2.line_num] = (line_num_base, line_num_offset) + + for (line1, line2) in diffed_lines: + line_color1 = line_color2 = sym_color = BasicFormat.NONE line_prefix = " " + is_data_ref = False + out1 = Text() if not line1 else Text(pad_mnemonic(line1.original)) + out2 = Text() if not line2 else Text(pad_mnemonic(line2.original)) if line1 and line2 and line1.diff_row == line2.diff_row: - if line1.normalized_original == line2.normalized_original: - out1 = line1.original - out2 = line2.original + if line1.diff_row == "": + if line1.normalized_original != line2.normalized_original: + line_prefix = "i" + sym_color = BasicFormat.DIFF_CHANGE + out1 = out1.reformat(sym_color) + out2 = out2.reformat(sym_color) + is_data_ref = True + elif ( + line1.normalized_original == line2.normalized_original + and line2.branch_target is None + ): + # Fast path: no coloring needed. We don't include branch instructions + # in this case because we need to check that their targets line up in + # the diff, and don't just happen to have the are the same address + # by accident. + pass elif line1.diff_row == "": - out1 = f"{Style.BRIGHT}{Fore.LIGHTBLACK_EX}{line1.original}" - out2 = f"{Style.BRIGHT}{Fore.LIGHTBLACK_EX}{line2.original}" + # Don't draw attention to differing branch-likely delay slots: they + # typically mirror the branch destination - 1 so the real difference + # is elsewhere. Still, do mark them as different to avoid confusion. + # No need to consider branches because delay slots can't branch. + out1 = out1.reformat(BasicFormat.DELAY_SLOT) + out2 = out2.reformat(BasicFormat.DELAY_SLOT) else: mnemonic = line1.original.split()[0] - out1, out2 = line1.original, line2.original - branch1 = branch2 = "" - if mnemonic in instructions_with_address_immediates: - out1, branch1 = split_off_branch(line1.original) - out2, branch2 = split_off_branch(line2.original) - branchless1 = out1 - branchless2 = out2 - out1, out2 = color_fields(re_imm, out1, out2, lambda s: f"{Fore.LIGHTBLUE_EX}{s}{Style.RESET_ALL}") + branchless1, address1 = out1.plain(), "" + branchless2, address2 = out2.plain(), "" + if mnemonic in arch.instructions_with_address_immediates: + branchless1, address1 = split_off_address(branchless1) + branchless2, address2 = split_off_address(branchless2) - same_relative_target = False - if line1.branch_target is not None and line2.branch_target is not None: - relative_target1 = eval_line_num(line1.branch_target) - eval_line_num(line1.line_num) - relative_target2 = eval_line_num(line2.branch_target) - eval_line_num(line2.line_num) - same_relative_target = relative_target1 == relative_target2 + out1 = Text(branchless1) + out2 = Text(branchless2) + out1, out2 = format_fields( + arch.re_imm, out1, out2, lambda _: BasicFormat.IMMEDIATE + ) - if not same_relative_target: - branch1, branch2 = color_branch_imms(branch1, branch2) + if line2.branch_target is not None: + target = line2.branch_target + line2_target = line_num_2to1.get(line2.branch_target) + if line2_target is None: + # If the target is outside the disassembly, extrapolate. + # This only matters near the bottom. + assert line2.line_num is not None + line2_line = line_num_2to1[line2.line_num] + line2_target = (line2_line[0] + (target - line2.line_num), 0) - out1 += branch1 - out2 += branch2 - if normalize_imms(branchless1) == normalize_imms(branchless2): - if not same_relative_target: - # only imms differences - sym_color = Fore.LIGHTBLUE_EX + # Adjust the branch target for scoring and three-way diffing. + norm2, norm_branch2 = split_off_address(line2.normalized_original) + if norm_branch2 != "": + retargetted = hex(line2_target[0]).replace("0x", "") + if line2_target[1] != 0: + retargetted += f"+{line2_target[1]}" + line2.normalized_original = norm2 + retargetted + sc_base, _ = split_off_address(line2.scorable_line) + line2.scorable_line = sc_base + retargetted + same_target = line2_target == (line1.branch_target, 0) + else: + # Do a naive comparison for non-branches (e.g. function calls). + same_target = address1 == address2 + + if normalize_imms(branchless1, arch) == normalize_imms( + branchless2, arch + ): + ( + stack_penalties, + regalloc_penalties, + has_symbol_mismatch, + ) = diff_sameline(line1, line2, config, symbol_map) + + if ( + regalloc_penalties == 0 + and stack_penalties == 0 + and not has_symbol_mismatch + ): + # ignore differences due to %lo(.rodata + ...) vs symbol + out1 = out1.reformat(BasicFormat.NONE) + out2 = out2.reformat(BasicFormat.NONE) + elif line2.branch_target is not None and same_target: + # same-target branch, don't color + pass + else: + # must have an imm difference (or else we would have hit the + # fast path) + sym_color = BasicFormat.IMMEDIATE line_prefix = "i" else: - out1, out2 = color_fields(re_sprel, out1, out2, sc3.color_symbol, sc4.color_symbol) - if normalize_stack(branchless1) == normalize_stack(branchless2): + out1, out2 = format_fields(arch.re_sprel, out1, out2, sc3, sc4) + if normalize_stack(branchless1, arch) == normalize_stack( + branchless2, arch + ): # only stack differences (luckily stack and imm # differences can't be combined in MIPS, so we # don't have to think about that case) - sym_color = Fore.YELLOW + sym_color = BasicFormat.STACK line_prefix = "s" else: - # regs differences and maybe imms as well - out1, out2 = color_fields(re_reg, out1, out2, sc1.color_symbol, sc2.color_symbol) - line_color1 = line_color2 = sym_color = Fore.YELLOW - line_prefix = "r" + # reg differences and maybe imm as well + out1, out2 = format_fields(arch.re_reg, out1, out2, sc1, sc2) + cats = config.reg_categories + if cats and any( + cats.get(of.group()) != cats.get(nf.group()) + for (of, nf) in zip( + out1.finditer(arch.re_reg), out2.finditer(arch.re_reg) + ) + ): + sym_color = BasicFormat.REGISTER_CATEGORY + line_prefix = "R" + else: + sym_color = BasicFormat.REGISTER + line_prefix = "r" + line_color1 = line_color2 = sym_color + + if same_target: + address_imm_fmt = BasicFormat.NONE + else: + address_imm_fmt = BasicFormat.IMMEDIATE + out1 += Text(address1, address_imm_fmt) + out2 += Text(address2, address_imm_fmt) elif line1 and line2: line_prefix = "|" - line_color1 = Fore.LIGHTBLUE_EX - line_color2 = Fore.LIGHTBLUE_EX - sym_color = Fore.LIGHTBLUE_EX - out1 = line1.original - out2 = line2.original + line_color1 = line_color2 = sym_color = BasicFormat.DIFF_CHANGE + out1 = out1.reformat(line_color1) + out2 = out2.reformat(line_color2) elif line1: line_prefix = "<" - line_color1 = sym_color = Fore.RED - out1 = line1.original - out2 = "" + line_color1 = sym_color = BasicFormat.DIFF_REMOVE + out1 = out1.reformat(line_color1) + out2 = Text() elif line2: line_prefix = ">" - line_color2 = sym_color = Fore.GREEN - out1 = "" - out2 = line2.original + line_color2 = sym_color = BasicFormat.DIFF_ADD + out1 = Text() + out2 = out2.reformat(line_color2) - #if args.source and line2 and line2.comment: - # out2 += f" {line2.comment}" + if config.show_source and line2 and line2.comment: + out2 += f" {line2.comment}" def format_part( - out: str, + out: Text, line: Optional[Line], - line_color: str, - btset: Set[str], - sc: SymbolColorer, - ) -> Optional[str]: + line_color: Format, + btset: Set[int], + sc: FormatFunction, + ) -> Optional[Text]: if line is None: return None - in_arrow = " " - out_arrow = "" - if args.show_branches: + if line.line_num is None: + return out + in_arrow = Text(" ") + out_arrow = Text() + if config.show_branches: if line.line_num in btset: - in_arrow = sc.color_symbol(line.line_num, "~>") + line_color + in_arrow = Text("~>", sc(str(line.line_num))) if line.branch_target is not None: - out_arrow = " " + sc.color_symbol(line.branch_target + ":", "~>") - out = pad_mnemonic(out) - return f"{line_color}{line.line_num} {in_arrow} {out}{Style.RESET_ALL}{out_arrow}" + out_arrow = " " + Text("~>", sc(str(line.branch_target))) + formatted_line_num = Text(hex(line.line_num)[2:] + ":", line_color) + return formatted_line_num + " " + in_arrow + " " + out + out_arrow part1 = format_part(out1, line1, line_color1, bts1, sc5) part2 = format_part(out2, line2, line_color2, bts2, sc6) - key2 = line2.original if line2 else None - mid = f"{sym_color}{line_prefix}" - - if line2: + if config.show_source and line2: for source_line in line2.source_lines: - color = Style.DIM - # File names and function names - if source_line and source_line[0] != "│": - color += Style.BRIGHT - # Function names - if source_line.endswith("():"): - # Underline. Colorama does not provide this feature, unfortunately. - color += "\u001b[4m" + line_format = BasicFormat.SOURCE_OTHER + if config.source_old_binutils: + if source_line and re.fullmatch(".*\.c(?:pp)?:\d+", source_line): + line_format = BasicFormat.SOURCE_FILENAME + elif source_line and source_line.endswith("():"): + line_format = BasicFormat.SOURCE_FUNCTION try: source_line = cxxfilt.demangle( source_line[:-3], external_only=False ) except: pass + else: + # File names and function names + if source_line and source_line[0] != "│": + line_format = BasicFormat.SOURCE_FILENAME + # Function names + if source_line.endswith("():"): + line_format = BasicFormat.SOURCE_FUNCTION + try: + source_line = cxxfilt.demangle( + source_line[:-3], external_only=False + ) + except: + pass + padding = " " * 7 if config.show_line_numbers else " " * 2 output.append( OutputLine( - None, - f" {color}{source_line}{Style.RESET_ALL}", - source_line, + base=None, + fmt2=padding + Text(source_line, line_format), + key2=source_line, + boring=True, + is_data_ref=False, + line1=None, + line2=None, ) ) - fmt2 = mid + " " + (part2 or "") - output.append(OutputLine(part1, fmt2, key2)) + key2 = line2.normalized_original if line2 else None + boring = False + if line_prefix == " ": + boring = True + elif config.compress and config.compress.same_instr and line_prefix in "irs": + boring = True - return output + if config.show_line_numbers: + if line2 and line2.source_line_num is not None: + num_color = ( + BasicFormat.SOURCE_LINE_NUM + if sym_color == BasicFormat.NONE + else sym_color + ) + num2 = Text(f"{line2.source_line_num:5}", num_color) + else: + num2 = Text(" " * 5) + else: + num2 = Text() + + fmt2 = Text(line_prefix, sym_color) + num2 + " " + (part2 or Text()) + + output.append( + OutputLine( + base=part1, + fmt2=fmt2, + key2=key2, + boring=boring, + is_data_ref=is_data_ref, + line1=line1, + line2=line2, + ) + ) + + output = output[config.skip_lines :] + + score = score_diff_lines(diffed_lines, config, symbol_map) + max_score = len(lines1) * config.penalty_deletion + return Diff(lines=output, score=score, max_score=max_score) -def chunk_diff(diff: List[OutputLine]) -> List[Union[List[OutputLine], OutputLine]]: +def chunk_diff_lines( + diff: List[OutputLine], +) -> List[Union[List[OutputLine], OutputLine]]: + """Chunk a diff into an alternating list like A B A B ... A, where: + * A is a List[OutputLine] of insertions, + * B is a single non-insertion OutputLine, with .base != None.""" cur_right: List[OutputLine] = [] chunks: List[Union[List[OutputLine], OutputLine]] = [] for output_line in diff: @@ -1407,78 +2963,124 @@ def chunk_diff(diff: List[OutputLine]) -> List[Union[List[OutputLine], OutputLin chunks.append(cur_right) return chunks -def elide_path(p: Path, n_lhs: int = 1, n_rhs: int = 1) -> PurePath: - if n_lhs == 0: - path = PurePath('...') - else: - path = PurePath(*p.parts[:n_lhs]) / '...' - path = path / PurePath(*p.parts[-n_rhs:]) - return path -def format_diff( - old_diff: List[OutputLine], new_diff: List[OutputLine], - base_obj_path: Optional[Path] = None, ref_obj_path: Optional[Path] = None -) -> Tuple[str, List[str]]: - old_chunks = chunk_diff(old_diff) - new_chunks = chunk_diff(new_diff) - output: List[Tuple[str, OutputLine, OutputLine]] = [] - assert len(old_chunks) == len(new_chunks), "same target" - empty = OutputLine("", "", None) - for old_chunk, new_chunk in zip(old_chunks, new_chunks): - if isinstance(old_chunk, list): - assert isinstance(new_chunk, list) - if not old_chunk and not new_chunk: - # Most of the time lines sync up without insertions/deletions, - # and there's no interdiffing to be done. - continue - differ = difflib.SequenceMatcher(a=old_chunk, b=new_chunk, autojunk=False) - for (tag, i1, i2, j1, j2) in differ.get_opcodes(): - if tag in ["equal", "replace"]: - for i, j in zip(range(i1, i2), range(j1, j2)): - output.append(("", old_chunk[i], new_chunk[j])) - if tag in ["insert", "replace"]: - for j in range(j1 + i2 - i1, j2): - output.append(("", empty, new_chunk[j])) - if tag in ["delete", "replace"]: - for i in range(i1 + j2 - j1, i2): - output.append(("", old_chunk[i], empty)) +def compress_matching( + li: List[Tuple[OutputLine, ...]], context: int +) -> List[Tuple[OutputLine, ...]]: + ret: List[Tuple[OutputLine, ...]] = [] + matching_streak: List[Tuple[OutputLine, ...]] = [] + context = max(context, 0) + + def flush_matching() -> None: + if len(matching_streak) <= 2 * context + 1: + ret.extend(matching_streak) else: - assert isinstance(new_chunk, OutputLine) - assert new_chunk.base - # old_chunk.base and new_chunk.base have the same text since - # both diffs are based on the same target, but they might - # differ in color. Use the new version. - output.append((new_chunk.base, old_chunk, new_chunk)) + ret.extend(matching_streak[:context]) + skipped = len(matching_streak) - 2 * context + filler = OutputLine( + base=Text(f"<{skipped} lines>", BasicFormat.SOURCE_OTHER), + fmt2=Text(), + key2=None, + boring=False, + is_data_ref=False, + line1=None, + line2=None, + ) + columns = len(matching_streak[0]) + ret.append(tuple([filler] * columns)) + if context > 0: + ret.extend(matching_streak[-context:]) + matching_streak.clear() - # TODO: status line, with e.g. approximate permuter score? - width = args.column_width - if args.threeway: - header_line = "TARGET".ljust(width) + " CURRENT".ljust(width) + " PREVIOUS" + for line in li: + if line[0].boring: + matching_streak.append(line) + else: + flush_matching() + ret.append(line) + + flush_matching() + return ret + + +def align_diffs( + old_diff: Diff, new_diff: Diff, config: Config +) -> Tuple[TableMetadata, List[Tuple[OutputLine, ...]]]: + meta: TableMetadata + diff_lines: List[Tuple[OutputLine, ...]] + padding = " " * 7 if config.show_line_numbers else " " * 2 + + if config.threeway: + meta = TableMetadata( + headers=( + Text("TARGET"), + Text(f"{padding}CURRENT ({new_diff.score})"), + Text(f"{padding}PREVIOUS ({old_diff.score})"), + ), + current_score=new_diff.score, + max_score=new_diff.max_score, + previous_score=old_diff.score, + ) + old_chunks = chunk_diff_lines(old_diff.lines) + new_chunks = chunk_diff_lines(new_diff.lines) + diff_lines = [] + empty = OutputLine(Text(), Text(), None, True, False, None, None) + assert len(old_chunks) == len(new_chunks), "same target" + for old_chunk, new_chunk in zip(old_chunks, new_chunks): + if isinstance(old_chunk, list): + assert isinstance(new_chunk, list) + if not old_chunk and not new_chunk: + # Most of the time lines sync up without insertions/deletions, + # and there's no interdiffing to be done. + continue + differ = difflib.SequenceMatcher( + a=old_chunk, b=new_chunk, autojunk=False + ) + for (tag, i1, i2, j1, j2) in differ.get_opcodes(): + if tag in ["equal", "replace"]: + for i, j in zip(range(i1, i2), range(j1, j2)): + diff_lines.append((empty, new_chunk[j], old_chunk[i])) + if tag in ["insert", "replace"]: + for j in range(j1 + i2 - i1, j2): + diff_lines.append((empty, new_chunk[j], empty)) + if tag in ["delete", "replace"]: + for i in range(i1 + j2 - j1, i2): + diff_lines.append((empty, empty, old_chunk[i])) + else: + assert isinstance(new_chunk, OutputLine) + # old_chunk.base and new_chunk.base have the same text since + # both diffs are based on the same target, but they might + # differ in color. Use the new version. + diff_lines.append((new_chunk, new_chunk, old_chunk)) diff_lines = [ - ansi_ljust(base, width) - + ansi_ljust(new.fmt2, width) - + (old.fmt2 or "-" if old != new else "") - for (base, old, new) in output + (base, new, old if old != new else empty) for base, new, old in diff_lines ] else: - header_line = f'{elide_path(base_obj_path)}'.ljust(width) + f' {elide_path(ref_obj_path)}'.ljust(width) - diff_lines = [ - ansi_ljust(base, width) + new.fmt2 - for (base, old, new) in output - if base or new.key2 is not None - ] - return header_line, diff_lines + meta = TableMetadata( + headers=( + Text("TARGET"), + Text(f"{padding}CURRENT ({new_diff.score})"), + ), + current_score=new_diff.score, + max_score=new_diff.max_score, + previous_score=None, + ) + diff_lines = [(line, line) for line in new_diff.lines] + if config.compress: + diff_lines = compress_matching(diff_lines, config.compress.context) + return meta, diff_lines def debounced_fs_watch( targets: List[str], outq: "queue.Queue[Optional[float]]", - debounce_delay: float, + config: Config, + project: ProjectSettings, ) -> None: - import watchdog.events # type: ignore - import watchdog.observers # type: ignore + import watchdog.events + import watchdog.observers - class WatchEventHandler(watchdog.events.FileSystemEventHandler): # type: ignore + class WatchEventHandler(watchdog.events.FileSystemEventHandler): def __init__( self, queue: "queue.Queue[float]", file_targets: List[str] ) -> None: @@ -1495,10 +3097,10 @@ def debounced_fs_watch( def should_notify(self, path: str) -> bool: for target in self.file_targets: - if path == target: + if os.path.normpath(path) == target: return True - if args.make and any( - path.endswith(suffix) for suffix in FS_WATCH_EXTENSIONS + if config.make and any( + path.endswith(suffix) for suffix in project.source_extensions ): return True return False @@ -1517,7 +3119,7 @@ def debounced_fs_watch( if os.path.isdir(target): observer.schedule(event_handler, target, recursive=True) else: - file_targets.append(target) + file_targets.append(os.path.normpath(target)) target = os.path.dirname(target) or "." if target not in observed: observed.add(target) @@ -1527,7 +3129,7 @@ def debounced_fs_watch( t = listenq.get() more = True while more: - delay = t + debounce_delay - time.time() + delay = t + DEBOUNCE_DELAY - time.time() if delay > 0: time.sleep(delay) # consume entire queue @@ -1547,37 +3149,46 @@ def debounced_fs_watch( class Display: basedump: str mydump: str + last_refresh_key: object + config: Config emsg: Optional[str] - last_diff_output: Optional[List[OutputLine]] - pending_update: Optional[Tuple[str, bool]] + last_diff_output: Optional[Diff] + pending_update: Optional[str] ready_queue: "queue.Queue[None]" watch_queue: "queue.Queue[Optional[float]]" less_proc: "Optional[subprocess.Popen[bytes]]" - base_obj_path: Optional[Path] - ref_obj_path: Optional[Path] - def __init__(self, basedump: str, mydump: str, - base_obj_path: Optional[Path] = None, - ref_obj_path: Optional[Path] = None) -> None: - self.basedump = basedump + def __init__(self, basedump: str, mydump: str, config: Config) -> None: + self.config = config + self.base_lines = process(basedump, config) self.mydump = mydump self.emsg = None + self.last_refresh_key = None self.last_diff_output = None - self.base_obj_path = base_obj_path - self.ref_obj_path = ref_obj_path - def run_less(self) -> "Tuple[subprocess.Popen[bytes], subprocess.Popen[bytes]]": + def run_diff(self) -> Tuple[str, object]: if self.emsg is not None: - output = self.emsg - else: - diff_output = do_diff(self.basedump, self.mydump) - last_diff_output = self.last_diff_output or diff_output - if args.threeway != "base" or not self.last_diff_output: - self.last_diff_output = diff_output - header, diff_lines = format_diff(last_diff_output, diff_output, self.base_obj_path, self.ref_obj_path) - header_lines = [header] if header else [] - output = "\n".join(header_lines + diff_lines[args.skip_lines :]) + return (self.emsg, self.emsg) + my_lines = process(self.mydump, self.config) + diff_output = do_diff(self.base_lines, my_lines, self.config) + last_diff_output = self.last_diff_output or diff_output + if self.config.threeway != "base" or not self.last_diff_output: + self.last_diff_output = diff_output + + meta, diff_lines = align_diffs(last_diff_output, diff_output, self.config) + output = self.config.formatter.table(meta, diff_lines) + + refresh_key = ( + [line.key2 for line in diff_output.lines], + diff_output.score, + ) + + return (output, refresh_key) + + def run_less( + self, output: str + ) -> "Tuple[subprocess.Popen[bytes], subprocess.Popen[bytes]]": # Pipe the output through 'tail' and only then to less, to ensure the # write call doesn't block. ('tail' has to buffer all its input before # it starts writing.) This also means we don't have to deal with pipe @@ -1594,7 +3205,8 @@ class Display: return (buffer_proc, less_proc) def run_sync(self) -> None: - proca, procb = self.run_less() + output, _ = self.run_diff() + proca, procb = self.run_less(output) procb.wait() proca.wait() @@ -1602,12 +3214,14 @@ class Display: self.watch_queue = watch_queue self.ready_queue = queue.Queue() self.pending_update = None - dthread = threading.Thread(target=self.display_thread) + output, refresh_key = self.run_diff() + self.last_refresh_key = refresh_key + dthread = threading.Thread(target=self.display_thread, args=(output,)) dthread.start() self.ready_queue.get() - def display_thread(self) -> None: - proca, procb = self.run_less() + def display_thread(self, initial_output: str) -> None: + proca, procb = self.run_less(initial_output) self.less_proc = procb self.ready_queue.put(None) while True: @@ -1619,14 +3233,9 @@ class Display: os.system("tput reset") if ret != 0 and self.pending_update is not None: # killed by program with the intent to refresh - msg, error = self.pending_update + output = self.pending_update self.pending_update = None - if not error: - self.mydump = msg - self.emsg = None - else: - self.emsg = msg - proca, procb = self.run_less() + proca, procb = self.run_less(output) self.less_proc = procb self.ready_queue.put(None) else: @@ -1644,7 +3253,17 @@ class Display: if not error and not self.emsg and text == self.mydump: self.progress("Unchanged. ") return - self.pending_update = (text, error) + if not error: + self.mydump = text + self.emsg = None + else: + self.emsg = text + output, refresh_key = self.run_diff() + if refresh_key == self.last_refresh_key: + self.progress("Unchanged. ") + return + self.last_refresh_key = refresh_key + self.pending_update = output if not self.less_proc: return self.less_proc.kill() @@ -1658,15 +3277,50 @@ class Display: def main() -> None: + args = parser.parse_args() + + # Apply project-specific configuration. + settings: Dict[str, Any] = {} + diff_settings.apply(settings, args) # type: ignore + project = create_project_settings(settings) + + try: + config = create_config(args, project) + except ValueError as e: + fail(str(e)) + + if config.algorithm == "levenshtein": + try: + import Levenshtein + except ModuleNotFoundError as e: + fail(MISSING_PREREQUISITES.format(e.name)) + + if config.show_source: + try: + import cxxfilt + except ModuleNotFoundError as e: + fail(MISSING_PREREQUISITES.format(e.name)) + + if config.threeway and not args.watch: + fail("Threeway diffing requires -w.") + if args.diff_elf_symbol: - make_target, basecmd, mycmd = dump_elf() - elif args.diff_obj: - make_target, basecmd, mycmd = dump_objfile() + make_target, basecmd, mycmd = dump_elf( + args.start, args.end, args.diff_elf_symbol, config, project + ) + elif config.diff_obj: + make_target, basecmd, mycmd = dump_objfile( + args.start, args.end, config, project + ) else: - make_target, basecmd, mycmd = dump_binary() + make_target, basecmd, mycmd = dump_binary(args.start, args.end, config, project) + + map_build_target_fn = getattr(diff_settings, "map_build_target", None) + if map_build_target_fn: + make_target = map_build_target_fn(make_target=make_target) if args.write_asm is not None: - mydump = run_objdump(mycmd) + mydump = run_objdump(mycmd, config, project) with open(args.write_asm, "w") as f: f.write(mydump) print(f"Wrote assembly to {args.write_asm}.") @@ -1676,15 +3330,15 @@ def main() -> None: with open(args.base_asm) as f: basedump = f.read() else: - basedump = run_objdump(basecmd) + basedump = run_objdump(basecmd, config, project) - mydump = run_objdump(mycmd) + mydump = run_objdump(mycmd, config, project) - base_obj_path = Path(basecmd[1]) - ref_obj_path = Path(mycmd[1]) - display = Display(basedump, mydump, base_obj_path, ref_obj_path) + display = Display(basedump, mydump, config) - if not args.watch: + if args.no_pager or args.format in ("html", "json"): + print(display.run_diff()[0]) + elif not args.watch: display.run_sync() else: if not args.make: @@ -1701,13 +3355,13 @@ def main() -> None: ) if watch_sources_for_target_fn: watch_sources = watch_sources_for_target_fn(make_target) - watch_sources = watch_sources or source_directories + watch_sources = watch_sources or project.source_directories if not watch_sources: fail("Missing source_directories config, don't know what to watch.") else: watch_sources = [make_target] q: "queue.Queue[Optional[float]]" = queue.Queue() - debounced_fs_watch(watch_sources, q, DEBOUNCE_DELAY) + debounced_fs_watch(watch_sources, q, config, project) display.run_async(q) last_build = 0.0 try: @@ -1720,7 +3374,7 @@ def main() -> None: last_build = time.time() if args.make: display.progress("Building...") - ret = run_make_capture_output(make_target) + ret = run_make_capture_output(make_target, project) if ret.returncode != 0: display.update( ret.stderr.decode("utf-8-sig", "replace") @@ -1728,10 +3382,11 @@ def main() -> None: error=True, ) continue - mydump = run_objdump(mycmd) + mydump = run_objdump(mycmd, config, project) display.update(mydump, error=False) except KeyboardInterrupt: display.terminate() -main() +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/diff_settings.py b/diff_settings.py index c9d96b0bcf..c23703fc0b 100644 --- a/diff_settings.py +++ b/diff_settings.py @@ -11,7 +11,7 @@ def apply(config, args): config['myimg'] = 'build/dolzel2/main.elf' config['baseimg'] = 'expected/build/dolzel2/main.elf' config['makeflags'] = [] - if args.source: + if args.show_source: config['makeflags'].append('DEBUG=1') config['source_directories'] = ['src', 'libs', 'include'] config['arch'] = 'ppc' diff --git a/docs/Contributing.md b/docs/Contributing.md index 27626c9187..7d2d0a299e 100644 --- a/docs/Contributing.md +++ b/docs/Contributing.md @@ -4,17 +4,17 @@ Ghidra Setup ----- 1. Install [Java 11 64-bit Runtime and Development Kit](https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html). 2. Download Ghidra from [here](https://github.com/NationalSecurityAgency/ghidra/releases). -3. Request an account from Pheenoh#0001 on Discord (either ping him in one of the [Discord](https://discord.gg/Nshw5pHS4h) channels or DM directly). +3. Open a pull request against [this repo](), adding your desired username and permissions level into users.yaml 4. Login using the following server info: ``` Server: ghidra.tpgz.io Port: 13100 Username: -Password: +Password: changeme ``` -After logging in you will see a list of all the Twilight Princess DOLs for each version. +You will be prompted to change your password at login. After logging in, you will see a list of all the Twilight Princess DOLs for each version. ![](./ghidra.png) diff --git a/include/JSystem/J3DGraphAnimator/J3DAnimation.h b/include/JSystem/J3DGraphAnimator/J3DAnimation.h index 4daebd16ec..bcb65aeb6f 100644 --- a/include/JSystem/J3DGraphAnimator/J3DAnimation.h +++ b/include/JSystem/J3DGraphAnimator/J3DAnimation.h @@ -577,6 +577,7 @@ public: f32 getFrame() const { return mFrame; } s16 getEnd() const { return mEnd; } u8 getAttribute() const { return mAttribute; } + u8 getState() const { return mState; } void setAttribute(u8 attr) { mAttribute = attr; } void setEnd(s16 end) { mEnd = end; } void setRate(f32 rate) { mRate = rate; } diff --git a/include/JSystem/J3DGraphAnimator/J3DJoint.h b/include/JSystem/J3DGraphAnimator/J3DJoint.h index 0474f4eb5a..94ce45c74d 100644 --- a/include/JSystem/J3DGraphAnimator/J3DJoint.h +++ b/include/JSystem/J3DGraphAnimator/J3DJoint.h @@ -68,13 +68,15 @@ public: static J3DMtxCalc* mCurrentMtxCalc; private: + friend struct J3DJointFactory; + /* 0x00 */ void* mCallBackUserData; /* 0x04 */ J3DJointCallBack mCallBack; /* 0x08 */ void* field_0x8; /* 0x0C */ J3DJoint* mChild; /* 0x10 */ J3DJoint* mYounger; /* 0x14 */ u16 mJntNo; - /* 0x16 */ u8 mMtxType; + /* 0x16 */ u8 mKind; /* 0x17 */ u8 mScaleCompensate; /* 0x18 */ J3DTransformInfo mTransformInfo; /* 0x38 */ f32 mBoundingSphereRadius; diff --git a/include/JSystem/J3DGraphAnimator/J3DJointTree.h b/include/JSystem/J3DGraphAnimator/J3DJointTree.h index b8e8267339..4937fdae32 100644 --- a/include/JSystem/J3DGraphAnimator/J3DJointTree.h +++ b/include/JSystem/J3DGraphAnimator/J3DJointTree.h @@ -34,6 +34,7 @@ public: u16 getWEvlpMtxNum() const { return mWEvlpMtxNum; } u16 getJointNum() const { return mJointNum; } u16 getDrawMtxNum() const { return mDrawMtxData.mEntryNum; } + JUTNameTab* getJointName() const { return mJointName; } J3DJoint* getRootNode() { return mRootNode; } J3DJoint* getJointNodePointer(u16 idx) const { return mJointNodePointer[idx]; } J3DMtxCalc* getBasicMtxCalc() const { return mBasicMtxCalc; } diff --git a/include/JSystem/J3DGraphAnimator/J3DModelData.h b/include/JSystem/J3DGraphAnimator/J3DModelData.h index 5371f8113a..bc4c2ba9a6 100644 --- a/include/JSystem/J3DGraphAnimator/J3DModelData.h +++ b/include/JSystem/J3DGraphAnimator/J3DModelData.h @@ -33,6 +33,7 @@ public: J3DShape* getShapeNodePointer(u16 idx) const { return mShapeTable.getShapeNodePointer(idx); } J3DJoint* getJointNodePointer(u16 idx) const { return mJointTree.getJointNodePointer(idx); } J3DJointTree& getJointTree() { return mJointTree; } + JUTNameTab* getJointName() const { return mJointTree.getJointName(); } Mtx& getInvJointMtx(s32 idx) const { return mJointTree.getInvJointMtx(idx); } J3DTexture* getTexture() const { return mMaterialTable.getTexture(); } JUTNameTab* getTextureName() const { return mMaterialTable.getTextureName(); } diff --git a/include/JSystem/J3DGraphBase/J3DDrawBuffer.h b/include/JSystem/J3DGraphBase/J3DDrawBuffer.h index 38cc0e08c2..b937d16387 100644 --- a/include/JSystem/J3DGraphBase/J3DDrawBuffer.h +++ b/include/JSystem/J3DGraphBase/J3DDrawBuffer.h @@ -11,22 +11,37 @@ class J3DDrawPacket; class J3DMatPacket; class J3DShapePacket; -typedef void (*J3DDrawBuffer_DrawFunc)(const J3DDrawBuffer* this_); +typedef int (J3DDrawBuffer::*sortFunc)(J3DMatPacket*); +typedef void (J3DDrawBuffer::*drawFunc)() const; class J3DDrawBuffer { public: + enum EDrawType { + DRAW_HEAD, + DRAW_TAIL, + }; + + enum ESortType { + SORT_MAT, + SORT_MAT_ANM, + SORT_Z, + SORT_MODEL, + SORT_INVALID, + SORT_NON, + }; + J3DDrawBuffer() { initialize(); } ~J3DDrawBuffer(); void initialize(); J3DError allocBuffer(u32); void frameInit(); - void entryMatSort(J3DMatPacket*); - void entryMatAnmSort(J3DMatPacket*); - void entryZSort(J3DMatPacket*); - void entryModelSort(J3DMatPacket*); - void entryInvalidSort(J3DMatPacket*); - bool entryNonSort(J3DMatPacket*); - bool entryImm(J3DPacket* pPacket, u16 index); + int entryMatSort(J3DMatPacket*); + int entryMatAnmSort(J3DMatPacket*); + int entryZSort(J3DMatPacket*); + int entryModelSort(J3DMatPacket*); + int entryInvalidSort(J3DMatPacket*); + int entryNonSort(J3DMatPacket*); + int entryImm(J3DPacket* pPacket, u16 index); void draw() const; void drawHead() const; void drawTail() const; @@ -43,12 +58,12 @@ public: /* 0x10 */ f32 mZNear; /* 0x14 */ f32 mZFar; /* 0x18 */ f32 mZRatio; - /* 0x1C */ Mtx* mpZMtx; + /* 0x1C */ MtxP mpZMtx; /* 0x20 */ J3DPacket* mpCallBackPacket; - static u8 sortFuncTable[72]; - static u8 drawFuncTable[24]; - static u8 entryNum[4 + 4 /* padding */]; + static sortFunc sortFuncTable[6]; + static drawFunc drawFuncTable[2]; + static int entryNum; }; #endif /* J3DDRAWBUFFER_H */ diff --git a/include/JSystem/J3DGraphBase/J3DPacket.h b/include/JSystem/J3DGraphBase/J3DPacket.h index 6552c461af..232db283d3 100644 --- a/include/JSystem/J3DGraphBase/J3DPacket.h +++ b/include/JSystem/J3DGraphBase/J3DPacket.h @@ -51,27 +51,29 @@ public: class J3DPacket { public: J3DPacket() { - mpNextSibling = NULL; + mpNextPacket = NULL; mpFirstChild = NULL; mpUserData = NULL; } void addChildPacket(J3DPacket*); - J3DPacket* getNextPacket() const { return mpNextSibling; } + + J3DPacket* getNextPacket() const { return mpNextPacket; } + void setNextPacket(J3DPacket* i_packet) { mpNextPacket = i_packet; } - inline void clear() { - mpNextSibling = NULL; + void drawClear() { + mpNextPacket = NULL; mpFirstChild = NULL; } void setUserArea(u32 area) { mpUserData = (void*)area; } - virtual bool entry(J3DDrawBuffer*); + virtual int entry(J3DDrawBuffer*); virtual void draw(); virtual ~J3DPacket() {} public: - /* 0x04 */ J3DPacket* mpNextSibling; + /* 0x04 */ J3DPacket* mpNextPacket; /* 0x08 */ J3DPacket* mpFirstChild; /* 0x0C */ void* mpUserData; }; // Size: 0x10 @@ -143,19 +145,21 @@ public: void endDiff(); bool isSame(J3DMatPacket*) const; + J3DMaterial* getMaterial() const { return mpMaterial; } J3DShapePacket* getShapePacket() const { return mpShapePacket; } void setShapePacket(J3DShapePacket* packet) { mpShapePacket = packet; } void setInitShapePacket(J3DShapePacket* packet) { mpInitShapePacket = packet; } + bool isChanged() const { return mDiffFlag < 0; } virtual ~J3DMatPacket(); - virtual bool entry(J3DDrawBuffer*); + virtual int entry(J3DDrawBuffer*); virtual void draw(); public: /* 0x28 */ J3DShapePacket* mpInitShapePacket; /* 0x2C */ J3DShapePacket* mpShapePacket; /* 0x30 */ J3DMaterial* mpMaterial; - /* 0x34 */ u32 mSortFlags; + /* 0x34 */ u32 mDiffFlag; /* 0x38 */ J3DTexture* mpTexture; /* 0x3C */ J3DMaterialAnm* mpMaterialAnm; }; // Size: 0x40 diff --git a/include/JSystem/J3DGraphBase/J3DShape.h b/include/JSystem/J3DGraphBase/J3DShape.h index f18551d7ed..85cf0da8e9 100644 --- a/include/JSystem/J3DGraphBase/J3DShape.h +++ b/include/JSystem/J3DGraphBase/J3DShape.h @@ -27,6 +27,11 @@ static inline void J3DFifoWriteXFCmd(u16 cmd, u16 len) { class J3DCurrentMtx : public J3DCurrentMtxInfo { public: + J3DCurrentMtx() { + mMtxIdxRegA = 0x3cf3cf00; + mMtxIdxRegB = 0x00f3cf3c; + } + u32 getMtxIdxRegA() const { return mMtxIdxRegA; } u32 getMtxIdxRegB() const { return mMtxIdxRegB; } @@ -54,6 +59,14 @@ enum J3DShpFlag { class J3DShape { public: + J3DShape() { + initialize(); + } + + enum { + kVcdVatDLSize = 0xC0, + }; + /* 80314B48 */ void initialize(); /* 80314BB8 */ void addTexMtxIndexInDL(_GXAttr, u32); /* 80314CBC */ void addTexMtxIndexInVcd(_GXAttr); @@ -93,11 +106,14 @@ public: inline u32 getMtxGroupNum() const { return mMtxGroupNum; } inline J3DShapeDraw* getShapeDraw(u32 idx) const { return mShapeDraw[idx]; } inline J3DShapeMtx* getShapeMtx(u32 idx) const { return mShapeMtx[idx]; } + static void resetVcdVatCache() { sOldVcdVatCmd = NULL; } static void* sOldVcdVatCmd; private: + friend struct J3DShapeFactory; + /* 0x04 */ J3DMaterial* mMaterial; /* 0x08 */ u16 mIndex; /* 0x0A */ u16 mMtxGroupNum; diff --git a/include/JSystem/J3DGraphBase/J3DShapeMtx.h b/include/JSystem/J3DGraphBase/J3DShapeMtx.h index 0a346b2068..1b745e5fc1 100644 --- a/include/JSystem/J3DGraphBase/J3DShapeMtx.h +++ b/include/JSystem/J3DGraphBase/J3DShapeMtx.h @@ -24,6 +24,10 @@ extern u8 struct_804515B0[4]; class J3DShapeMtx { public: + J3DShapeMtx(u16 useMtxIndex) + : mUseMtxIndex(useMtxIndex) + {} + /* 803130A8 */ void resetMtxLoadCache(); /* 803130E4 */ void loadMtxIndx_PNGP(int, u16) const; /* 80313128 */ void loadMtxIndx_PCPU(int, u16) const; @@ -54,6 +58,10 @@ private: class J3DShapeMtxConcatView : public J3DShapeMtx { public: + J3DShapeMtxConcatView(u16 useMtxIndex) + : J3DShapeMtx(useMtxIndex) + {} + /* 80314730 */ virtual ~J3DShapeMtxConcatView(); /* 803147E0 */ virtual u32 getType() const; /* 80313C54 */ virtual void load() const; @@ -73,6 +81,10 @@ public: class J3DShapeMtxYBBoardConcatView : public J3DShapeMtxConcatView { public: + J3DShapeMtxYBBoardConcatView(u16 useMtxIndex) + : J3DShapeMtxConcatView(useMtxIndex) + {} + /* 80314520 */ virtual ~J3DShapeMtxYBBoardConcatView(); /* 803147E0 */ virtual u32 getType() const; /* 803143E4 */ virtual void load() const; @@ -80,6 +92,10 @@ public: class J3DShapeMtxBBoardConcatView : public J3DShapeMtxConcatView { public: + J3DShapeMtxBBoardConcatView(u16 useMtxIndex) + : J3DShapeMtxConcatView(useMtxIndex) + {} + /* 803145A4 */ virtual ~J3DShapeMtxBBoardConcatView(); /* 803147E0 */ virtual u32 getType() const; /* 803142D4 */ virtual void load() const; @@ -87,6 +103,12 @@ public: class J3DShapeMtxMulti : public J3DShapeMtx { public: + J3DShapeMtxMulti(u16 useMtxIndex, u16 useMtxNum, u16* useMtxIndexTable) + : J3DShapeMtx(useMtxIndex) + , mUseMtxNum(useMtxNum) + , mUseMtxIndexTable(useMtxIndexTable) + {} + /* 803146B0 */ virtual ~J3DShapeMtxMulti(); /* 803147E0 */ virtual u32 getType() const; /* 80273E08 */ virtual u32 getUseMtxNum() const; @@ -96,11 +118,17 @@ public: private: /* 0x6 */ u16 mUseMtxNum; - /* 0x8 */ u16* mUseMtxIndex; + /* 0x8 */ u16* mUseMtxIndexTable; }; -class J3DShapeMtxMultiConcatView : public J3DShapeMtx { +class J3DShapeMtxMultiConcatView : public J3DShapeMtxConcatView { public: + J3DShapeMtxMultiConcatView(u16 useMtxIndex, u16 useMtxNum, u16* useMtxIndexTable) + : J3DShapeMtxConcatView(useMtxIndex) + , mUseMtxNum(useMtxNum) + , mUseMtxIndexTable(useMtxIndexTable) + {} + /* 8031461C */ virtual ~J3DShapeMtxMultiConcatView(); /* 803147E0 */ virtual u32 getType() const; /* 80273E08 */ virtual u32 getUseMtxNum() const; @@ -111,7 +139,7 @@ public: private: /* 0x6 */ u16 mUseMtxNum; - /* 0x8 */ u16* mUseMtxIndex; + /* 0x8 */ u16* mUseMtxIndexTable; }; -#endif /* J3DSHAPEMTX_H */ +#endif /* J3DSHAPEMTX_H */ \ No newline at end of file diff --git a/include/JSystem/J3DGraphBase/J3DSys.h b/include/JSystem/J3DGraphBase/J3DSys.h index fd75fc48f7..01f882e3f4 100644 --- a/include/JSystem/J3DGraphBase/J3DSys.h +++ b/include/JSystem/J3DGraphBase/J3DSys.h @@ -93,6 +93,9 @@ struct J3DSys { void setMaterialMode(u32 mode) { mMaterialMode = mode; } void setTexture(J3DTexture* pTex) { mTexture = pTex; } + J3DTexture* getTexture() { return mTexture; } + + void setNBTScale(Vec* scale) { mNBTScale = scale; } void onFlag(u32 flag) { mFlags |= flag; } diff --git a/include/JSystem/J3DGraphBase/J3DTransform.h b/include/JSystem/J3DGraphBase/J3DTransform.h index 1bdc7ebb88..a162bd5b7c 100644 --- a/include/JSystem/J3DGraphBase/J3DTransform.h +++ b/include/JSystem/J3DGraphBase/J3DTransform.h @@ -1,13 +1,14 @@ #ifndef J3DTRANSFORM_H #define J3DTRANSFORM_H +#include "JSystem/JGeometry.h" #include "dolphin/mtx/mtxvec.h" #include "dolphin/types.h" struct J3DTransformInfo { - /* 0x00 */ Vec mScale; - /* 0x0C */ SVec mRotation; - /* 0x14 */ Vec mTranslate; + /* 0x00 */ JGeometry::TVec3 mScale; + /* 0x0C */ JGeometry::TVec3 mRotation; + /* 0x14 */ JGeometry::TVec3 mTranslate; }; // Size: 0x20 extern J3DTransformInfo const j3dDefaultTransformInfo; diff --git a/include/JSystem/J3DGraphBase/J3DVertex.h b/include/JSystem/J3DGraphBase/J3DVertex.h index 309194628a..a8e67d578f 100644 --- a/include/JSystem/J3DGraphBase/J3DVertex.h +++ b/include/JSystem/J3DGraphBase/J3DVertex.h @@ -94,8 +94,4 @@ struct VertexNormal { Vec data; }; -struct VertexPosition { - Vec data; -}; - #endif /* J3DVERTEX_H */ diff --git a/include/JSystem/J3DGraphLoader/J3DJointFactory.h b/include/JSystem/J3DGraphLoader/J3DJointFactory.h index 2e992b48f3..98409802a7 100644 --- a/include/JSystem/J3DGraphLoader/J3DJointFactory.h +++ b/include/JSystem/J3DGraphLoader/J3DJointFactory.h @@ -1,6 +1,49 @@ #ifndef J3DJOINTFACTORY_H #define J3DJOINTFACTORY_H +#include "JSystem/J3DGraphBase/J3DTransform.h" +#include "JSystem/JGeometry.h" #include "dolphin/types.h" -#endif /* J3DJOINTFACTORY_H */ +struct J3DJoint; +struct ResNTAB; + +struct J3DJointInitData { + /* 0x00 */ u16 mKind; + /* 0x02 */ bool mScaleCompensate; + /* 0x04 */ J3DTransformInfo mTransformInfo; + /* 0x24 */ f32 mRadius; + /* 0x28 */ Vec mMin; + /* 0x2C */ Vec mMax; +}; // Size: 0x30 + +struct J3DJointBlock { + /* 0x00 */ u8 mMagic[4]; + /* 0x04 */ u32 mSize; + + /* 0x08 */ u16 mJointNum; + /* 0x0A */ u16 _pad; + + /* 0x0C */ J3DJointInitData* mJointInitData; + /* 0x10 */ u16* mIndexTable; + /* 0x14 */ ResNTAB* mNameTable; +}; + +struct J3DJointFactory { + /* 80337178 */ J3DJointFactory(J3DJointBlock const&); + /* 803371D0 */ J3DJoint* create(int); + + J3DJointInitData* mJointInitData; + u16* mIndexTable; + + u16 getKind(int no) const { return mJointInitData[mIndexTable[no]].mKind; } + u8 getScaleCompensate(int no) const { return mJointInitData[mIndexTable[no]].mScaleCompensate; } + const J3DTransformInfo& getTransformInfo(int no) const { + return mJointInitData[mIndexTable[no]].mTransformInfo; + } + f32 getRadius(int no) const { return mJointInitData[mIndexTable[no]].mRadius; } + Vec& getMin(int no) const { return mJointInitData[mIndexTable[no]].mMin; } + Vec& getMax(int no) const { return mJointInitData[mIndexTable[no]].mMax; } +}; + +#endif /* J3DJOINTFACTORY_H */ \ No newline at end of file diff --git a/include/JSystem/J3DGraphLoader/J3DShapeFactory.h b/include/JSystem/J3DGraphLoader/J3DShapeFactory.h index 6f1f64ce13..385a217e25 100644 --- a/include/JSystem/J3DGraphLoader/J3DShapeFactory.h +++ b/include/JSystem/J3DGraphLoader/J3DShapeFactory.h @@ -1,6 +1,78 @@ #ifndef J3DSHAPEFACTORY_H #define J3DSHAPEFACTORY_H +#include "dolphin/gx/GX.h" #include "dolphin/types.h" -#endif /* J3DSHAPEFACTORY_H */ +struct J3DShape; +struct J3DShapeMtx; +struct J3DShapeDraw; +struct ResNTAB; + +struct J3DShapeInitData { + /* 0x00 */ u8 mShapeMtxType; + /* 0x02 */ u16 mMtxGroupNum; + /* 0x04 */ u16 mVtxDescListIndex; + /* 0x06 */ u16 mMtxInitDataIndex; + /* 0x08 */ u16 mDrawInitDataIndex; + /* 0x0C */ f32 mRadius; + /* 0x10 */ Vec mMin; + /* 0x1C */ Vec mMax; +}; + +struct J3DShapeMtxInitData { + /* 0x00 */ u16 mUseMtxIndex; + /* 0x02 */ u16 mUseMtxCount; + /* 0x04 */ u32 mFirstUseMtxIndex; +}; + +struct J3DShapeDrawInitData { + /* 0x00 */ u32 mDisplayListSize; + /* 0x04 */ u32 mDisplayListIndex; +}; + +struct J3DShapeBlock { + /* 0x00 */ u8 mMagic[4]; + /* 0x04 */ u32 mSize; + + /* 0x08 */ u16 mShapeNum; + /* 0x0A */ u16 _pad; + + /* 0x0C */ J3DShapeInitData* mShapeInitData; + /* 0x10 */ u16* mIndexTable; + /* 0x14 */ ResNTAB* mNameTable; + /* 0x18 */ GXVtxDescList* mVtxDescList; + /* 0x1C */ u16* mMtxTable; + /* 0x20 */ u8* mDisplayListData; + /* 0x24 */ J3DShapeMtxInitData* mMtxInitData; + /* 0x28 */ J3DShapeDrawInitData* mDrawInitData; +}; + +struct J3DShapeFactory { + /* 80337350 */ J3DShapeFactory(J3DShapeBlock const&); + /* 80337400 */ J3DShape* create(int, u32, GXVtxDescList*); + /* 803375BC */ J3DShapeMtx* newShapeMtx(u32, int, int) const; + /* 8033784C */ J3DShapeDraw* newShapeDraw(int, int) const; + /* 803378D8 */ void allocVcdVatCmdBuffer(u32); + /* 80337944 */ s32 calcSize(int, u32); + /* 803379D8 */ s32 calcSizeVcdVatCmdBuffer(u32); + /* 803379E8 */ s32 calcSizeShapeMtx(u32, int, int) const; + + /* 0x00 */ J3DShapeInitData* mShapeInitData; + /* 0x04 */ u16* mIndexTable; + /* 0x08 */ GXVtxDescList* mVtxDescList; + /* 0x0C */ u16* mMtxTable; + /* 0x10 */ u8* mDisplayListData; + /* 0x14 */ J3DShapeMtxInitData* mMtxInitData; + /* 0x18 */ J3DShapeDrawInitData* mDrawInitData; + /* 0x1C */ u8* mVcdVatCmdBuffer; + + u32 getMtxGroupNum(int no) const { return mShapeInitData[mIndexTable[no]].mMtxGroupNum; } + GXVtxDescList* getVtxDescList(int no) const { return (GXVtxDescList*)((u8*)mVtxDescList + mShapeInitData[mIndexTable[no]].mVtxDescListIndex); } + f32 getRadius(int no) const { return mShapeInitData[mIndexTable[no]].mRadius; } + Vec& getMin(int no) const { return mShapeInitData[mIndexTable[no]].mMin; } + Vec& getMax(int no) const { return mShapeInitData[mIndexTable[no]].mMax; } +}; + + +#endif /* J3DSHAPEFACTORY_H */ \ No newline at end of file diff --git a/include/JSystem/J3DU/J3DUClipper.h b/include/JSystem/J3DU/J3DUClipper.h index b63f5e6325..d622fbde44 100644 --- a/include/JSystem/J3DU/J3DUClipper.h +++ b/include/JSystem/J3DU/J3DUClipper.h @@ -2,6 +2,7 @@ #define J3DUCLIPPER_H #include "dolphin/mtx/vec.h" +#include "dolphin/mtx/mtxvec.h" #include "dolphin/types.h" class J3DUClipper { diff --git a/include/JSystem/JGeometry.h b/include/JSystem/JGeometry.h index 42e505a7b5..6eb88b0279 100644 --- a/include/JSystem/JGeometry.h +++ b/include/JSystem/JGeometry.h @@ -19,6 +19,18 @@ struct TVec3 { } }; +template <> +struct TVec3 { + s16 x, y, z; + + TVec3& operator=(const TVec3& b) { + // Force copies to use lwz/lha + *((s32*)this) = *((s32*)&b); + z = b.z; + return *this; + } +}; + template <> struct TVec3 { f32 x; @@ -47,6 +59,20 @@ struct TVec3 { y = a.y * b.y; z = a.z * b.z; } + + inline TVec3& operator=(const TVec3& b) { + register f32* dst = &x; + const register f32* src = &b.x; + register f32 x_y; + register f32 z; + asm { + psq_l x_y, 0(src), 0, 0 + psq_st x_y, 0(dst), 0, 0 + lfs z, 8(src) + stfs z, 8(dst) + }; + return *this; + } }; template diff --git a/include/JSystem/JStudio/JStudio/jstudio-object.h b/include/JSystem/JStudio/JStudio/jstudio-object.h index 9f78474e13..b0da5a2045 100644 --- a/include/JSystem/JStudio/JStudio/jstudio-object.h +++ b/include/JSystem/JStudio/JStudio/jstudio-object.h @@ -9,7 +9,9 @@ namespace JStudio { namespace data { - struct TEOperationData {}; + enum TEOperationData { + UNK_0x19 = 0x19, + }; }; struct TAdaptor; @@ -50,6 +52,26 @@ public: /* 8028680C */ virtual void do_wait(u32); /* 8028682C */ virtual void do_data(void const*, u32, void const*, u32); + void prepareAdaptor() { + if (mpAdaptor != NULL) { + // mpAdaptor->adaptor_setObject_(this); + // mpAdaptor->adaptor_do_begin(); + } + } + + template + T* createFromAdaptor(const stb::data::TParse_TBlock_object& param_0, T* param_1) { + T* n = new T(param_0, param_1); + + if (n == NULL) { + return NULL; + } + + n->prepareAdaptor(); + + return n; + } + /* 0x34 */ TAdaptor* mpAdaptor; }; @@ -86,7 +108,11 @@ struct TAdaptor { /* 80286648 */ void adaptor_setVariableValue_FVR_INDEX_(JStudio::TAdaptor*, JStudio::TControl*, u32, void const*, u32); - /* 0x4 */ TObject* pObject_; + void adaptor_setObject_(const TObject* pObject) { + pObject_ = pObject; + } + + /* 0x4 */ const TObject* pObject_; /* 0x8 */ TVariableValue* pValue_; /* 0xC */ u32 u; }; diff --git a/include/JSystem/JStudio/JStudio/stb-data-parse.h b/include/JSystem/JStudio/JStudio/stb-data-parse.h index ef96a0d35f..b21486fcfb 100644 --- a/include/JSystem/JStudio/JStudio/stb-data-parse.h +++ b/include/JSystem/JStudio/JStudio/stb-data-parse.h @@ -73,7 +73,7 @@ struct TParse_TParagraph_data : public TParseData_aligned<4> { }; TParse_TParagraph_data(const void* content) : TParseData_aligned<4>(content) {} - /* 80289A80 */ void getData(TData*) const; + /* 80289A80 */ void getData(TData* pData) const; }; // Parses a TObject ("demo object") diff --git a/include/JSystem/JStudio/JStudio/stb.h b/include/JSystem/JStudio/JStudio/stb.h index e54ddb4b83..ec5dfbb2e8 100644 --- a/include/JSystem/JStudio/JStudio/stb.h +++ b/include/JSystem/JStudio/JStudio/stb.h @@ -152,6 +152,46 @@ private: /* 0x54 */ s32 _54; }; +template +struct TParseData { + TParseData(const void* pContent) { + data::TParse_TParagraph_data data(pContent); + set(data); + } + + void set(const data::TParse_TParagraph_data& data) { + //data::TParse_TParagraph_data::TData* p = (data::TParse_TParagraph_data::TData*)this; + data.getData(m_data); + } + + bool isEnd() const { + return m_data->_0 == 0; + } + + bool empty() const { + return m_data->_c == NULL; + } + + bool isValid() const { + return !empty() && m_data->_0 == 50; + } + + data::TParse_TParagraph_data::TData* m_data; +}; + +template +struct TParseData_fixed : public TParseData { + TParseData_fixed(const void* pContent) : TParseData(pContent) {} + + const void* getNext() const { + return m_data->_c; + } + + bool isValid() const { + return TParseData::isValid() && getNext() != NULL; + } +}; + } // namespace stb } // namespace JStudio diff --git a/include/JSystem/JSupport/JSupport.h b/include/JSystem/JSupport/JSupport.h index 7c1d91058a..e98dee1f98 100644 --- a/include/JSystem/JSupport/JSupport.h +++ b/include/JSystem/JSupport/JSupport.h @@ -3,7 +3,7 @@ template T* JSUConvertOffsetToPtr(const void* ptr, const void* offset) { - if (ptr == NULL) { + if (offset == NULL) { return NULL; } else { return (T*)((s32)ptr + (s32)offset); diff --git a/include/JSystem/JUtility/JUTException.h b/include/JSystem/JUtility/JUTException.h index 03976bde8c..447e1483aa 100644 --- a/include/JSystem/JUtility/JUTException.h +++ b/include/JSystem/JUtility/JUTException.h @@ -127,4 +127,9 @@ private: STATIC_ASSERT(sizeof(JUTException) == 0xA4); +struct JUTWarn { + JUTWarn& operator<<(const char*) { return *this; } + JUTWarn& operator<<(long) { return *this; } +}; + #endif /* JUTEXCEPTION_H */ diff --git a/include/MSL_C/MSL_Common/Src/float.h b/include/MSL_C/MSL_Common/Src/float.h index a41c15e2f3..794e5f853b 100644 --- a/include/MSL_C/MSL_Common/Src/float.h +++ b/include/MSL_C/MSL_Common/Src/float.h @@ -2,6 +2,7 @@ #define MSL_COMMON_SRC_FLOAT_H #include "dolphin/types.h" +#include "fdlibm.h" #define FP_SNAN 0 #define FP_QNAN 1 @@ -42,8 +43,23 @@ inline int __fpclassifyf(float __value) { } inline int __fpclassifyd(double __value) { - // TODO: - return FP_INFINITE; + switch (__HI(__value) & 0x7ff00000) { + case 0x7ff00000: { + if ((__HI(__value) & 0x000fffff) || (__LO(__value) & 0xffffffff)) + return FP_QNAN; + else + return FP_INFINITE; + break; + } + case 0: { + if ((__HI(__value) & 0x000fffff) || (__LO(__value) & 0xffffffff)) + return FP_SUBNORMAL; + else + return FP_ZERO; + break; + } + } + return FP_NORMAL; } #endif /* MSL_COMMON_SRC_FLOAT_H */ diff --git a/include/MSL_C/MSL_Common/Src/wchar_io.h b/include/MSL_C/MSL_Common/Src/wchar_io.h index ba643b03fa..fc8d3d4332 100644 --- a/include/MSL_C/MSL_Common/Src/wchar_io.h +++ b/include/MSL_C/MSL_Common/Src/wchar_io.h @@ -3,4 +3,6 @@ #include "dolphin/types.h" +typedef unsigned short wchar_t; + #endif /* MSL_COMMON_SRC_WCHAR_IO_H */ diff --git a/include/MSL_C/math.h b/include/MSL_C/math.h index eaf436dc13..0bae081bf7 100644 --- a/include/MSL_C/math.h +++ b/include/MSL_C/math.h @@ -26,7 +26,7 @@ double exp(double); extern float __fabsf(float); inline double fabs(double f) { - return __fabsf(f); + return __fabs(f); } inline double fabsf2(float f) { return __fabsf(f); diff --git a/include/Runtime.PPCEABI.H/__va_arg.h b/include/Runtime.PPCEABI.H/__va_arg.h index f4ff105d98..64378bddb2 100644 --- a/include/Runtime.PPCEABI.H/__va_arg.h +++ b/include/Runtime.PPCEABI.H/__va_arg.h @@ -14,9 +14,9 @@ typedef struct __va_list_struct { typedef _va_list_struct __va_list[1]; #ifdef __cplusplus -extern "C" void __va_arg(void*, int); +extern "C" void* __va_arg(_va_list_struct*, int); #else -void __va_arg(void*, int); +void* __va_arg(_va_list_struct*, int); #endif #if IN_VSCODE_EDITOR diff --git a/include/Runtime.PPCEABI.H/ptmf.h b/include/Runtime.PPCEABI.H/ptmf.h index a3c9cab68c..30060aefd2 100644 --- a/include/Runtime.PPCEABI.H/ptmf.h +++ b/include/Runtime.PPCEABI.H/ptmf.h @@ -1,6 +1,13 @@ #ifndef PTMF_H #define PTMF_H -#include "dolphin/types.h" +typedef struct __ptmf { + long this_delta; // self-explanatory + long v_offset; // vtable offset + union { + void* f_addr; // function address + long ve_offset; // virtual function entry offset (of vtable) + } f_data; +} __ptmf; #endif /* PTMF_H */ diff --git a/include/SSystem/SComponent/c_bg_s_chk.h b/include/SSystem/SComponent/c_bg_s_chk.h index eddabdabf3..7a832cf271 100644 --- a/include/SSystem/SComponent/c_bg_s_chk.h +++ b/include/SSystem/SComponent/c_bg_s_chk.h @@ -27,6 +27,7 @@ public: u32 GetActorPid() const { return mActorPid; } void SetPolyPassChk(cBgS_PolyPassChk* p_chk) { mPolyPassChk = p_chk; } void SetGrpPassChk(cBgS_GrpPassChk* p_chk) { mGrpPassChk = p_chk; } + cBgS_PolyPassChk* GetPolyPassChk() const { return mPolyPassChk; } virtual ~cBgS_Chk(void); }; // Size: 0x14 diff --git a/include/SSystem/SComponent/c_bg_s_lin_chk.h b/include/SSystem/SComponent/c_bg_s_lin_chk.h index cfd9692cdf..ca5c282fd2 100644 --- a/include/SSystem/SComponent/c_bg_s_lin_chk.h +++ b/include/SSystem/SComponent/c_bg_s_lin_chk.h @@ -8,15 +8,15 @@ #include "dolphin/types.h" class cBgS_LinChk : public cBgS_Chk, public cBgS_PolyInfo { -private: - /* 0x024 */ cM3dGLin mLinP; +public: + /* 0x024 */ cM3dGLin mLin; /* 0x040 */ cXyz field_0x40; /* 0x04C */ u32 field_0x4c; /* 0x050 */ bool mPreWallChk; /* 0x051 */ bool mPreGroundChk; /* 0x052 */ bool mPreRoofChk; - /* 0x053 */ u8 mFrontFlag; - /* 0x054 */ u8 mBackFlag; + /* 0x053 */ bool mFrontFlag; + /* 0x054 */ bool mBackFlag; public: cBgS_LinChk(); @@ -30,6 +30,13 @@ public: void ClrHit() { field_0x4c &= ~16; } void SetHit() { field_0x4c |= 16; } u32 ChkHit() const { return field_0x4c & 16; } + void SetCross(const cXyz& pos) { mLin.SetEnd(pos); } + cM3dGLin* GetLinP() { return &mLin; } + bool ChkBackFlag() const { return mBackFlag; } + bool ChkFrontFlag() const { return mFrontFlag; } + bool GetPreWallChk() const { return mPreWallChk; } + bool GetPreGroundChk() const { return mPreGroundChk; } + bool GetPreRoofChk() const { return mPreRoofChk; } }; #endif /* C_BG_S_LIN_CHK_H */ diff --git a/include/SSystem/SComponent/c_m3d.h b/include/SSystem/SComponent/c_m3d.h index f024fd44df..931f31c4d5 100644 --- a/include/SSystem/SComponent/c_m3d.h +++ b/include/SSystem/SComponent/c_m3d.h @@ -87,5 +87,9 @@ void cM3d_CrawVec(const Vec&, const Vec&, Vec*); inline bool cM3d_IsZero(f32 f) { return fabsf(f) < G_CM3D_F_ABS_MIN; } +// this is the inline cM3d_IsZero but inverted. Sometimes this will get a match where the regular cM3d_IsZero inline won't +inline bool cM3d_IsZero_inverted(f32 param_0) { + return !(fabsf(param_0) < G_CM3D_F_ABS_MIN); +} #endif \ No newline at end of file diff --git a/include/SSystem/SComponent/c_m3d_g_aab.h b/include/SSystem/SComponent/c_m3d_g_aab.h index d5c534a581..ba1a556ef1 100644 --- a/include/SSystem/SComponent/c_m3d_g_aab.h +++ b/include/SSystem/SComponent/c_m3d_g_aab.h @@ -26,12 +26,12 @@ public: void PlusR(f32); const cXyz& getMaxP(void) const { return mMax; } const cXyz& getMinP(void) const { return mMin; } - const f32 GetMaxX(void) const { return mMax.GetX(); } - const f32 GetMaxY(void) const { return mMax.GetY(); } - const f32 GetMaxZ(void) const { return mMax.GetZ(); } - const f32 GetMinX(void) const { return mMin.GetX(); } - const f32 GetMinY(void) const { return mMin.GetY(); } - const f32 GetMinZ(void) const { return mMin.GetZ(); } + const f32 GetMaxX(void) const { return mMax.x; } + const f32 GetMaxY(void) const { return mMax.y; } + const f32 GetMaxZ(void) const { return mMax.z; } + const f32 GetMinX(void) const { return mMin.x; } + const f32 GetMinY(void) const { return mMin.y; } + const f32 GetMinZ(void) const { return mMin.z; } }; // Size = 0x1C STATIC_ASSERT(0x1C == sizeof(cM3dGAab)); diff --git a/include/SSystem/SComponent/c_m3d_g_pla.h b/include/SSystem/SComponent/c_m3d_g_pla.h index 387f074d5d..bb628278f9 100644 --- a/include/SSystem/SComponent/c_m3d_g_pla.h +++ b/include/SSystem/SComponent/c_m3d_g_pla.h @@ -2,26 +2,34 @@ #define C_M3C_G_PLA_H_ #include "SSystem/SComponent/c_xyz.h" +#include "SSystem/SComponent/c_m3d.h" #include "dolphin/types.h" // Plane with a normal class cM3dGPla { public: - cXyz mNormal; - f32 mD; + /* 0x00 */ cXyz mNormal; + /* 0x0C */ f32 mD; + /* 0x10 vtable */ + cM3dGPla() {} cM3dGPla(const cXyz*, f32); - virtual ~cM3dGPla() {} bool crossInfLin(const cXyz&, const cXyz&, cXyz&) const; void SetupNP0(const Vec&, const Vec&); void SetupNP(const Vec&, const Vec&); bool getCrossY(const cXyz&, f32*) const; bool getCrossYLessD(const Vec&, f32*) const; void Set(const cM3dGPla*); + void GetNP(); + + virtual ~cM3dGPla() {} + f32 getPlaneFunc(const Vec* pPoint) const { return mD + PSVECDotProduct(&mNormal, pPoint); } const cXyz& GetNP() const { return mNormal; } - void GetNP(); f32 GetD() const { return mD; } + void SetupFrom3Vtx(const Vec* v1, const Vec* v2, const Vec* v3) { + cM3d_CalcPla(v1, v2, v3, &mNormal, &mD); + } }; #endif \ No newline at end of file diff --git a/include/SSystem/SComponent/c_m3d_g_sph.h b/include/SSystem/SComponent/c_m3d_g_sph.h index 4d028ddcc4..de48572064 100644 --- a/include/SSystem/SComponent/c_m3d_g_sph.h +++ b/include/SSystem/SComponent/c_m3d_g_sph.h @@ -29,9 +29,9 @@ public: void GetMinMaxCube(cXyz&, cXyz&) const; const cXyz& GetC(void) const { return mCenter; } const f32 GetR(void) const { return mRadius; } - f32 GetCX(void) const { return mCenter.GetX(); } - f32 GetCY(void) const { return mCenter.GetY(); } - f32 GetCZ(void) const { return mCenter.GetZ(); } + f32 GetCX(void) const { return mCenter.x; } + f32 GetCY(void) const { return mCenter.y; } + f32 GetCZ(void) const { return mCenter.z; } bool Cross(const cM3dGSph* other, f32* f) const { return cM3d_Cross_SphSph(this, other, f); } bool Cross(const cM3dGCps* cps, cXyz* xyz) const { return cM3d_Cross_CpsSph(*cps, *this, xyz); } diff --git a/include/SSystem/SComponent/c_m3d_g_tri.h b/include/SSystem/SComponent/c_m3d_g_tri.h index d2a009ca64..5bab254ea0 100644 --- a/include/SSystem/SComponent/c_m3d_g_tri.h +++ b/include/SSystem/SComponent/c_m3d_g_tri.h @@ -27,6 +27,9 @@ public: bool Cross(cM3dGTri const& other, cXyz* xyz) const { return cM3d_Cross_TriTri(*this, other, xyz); } + bool cross(const cM3dGLin* lin, Vec* xyz, bool param_2, bool param_3) const { + return cM3d_Cross_LinTri(lin, this, xyz, param_2, param_3); + } }; #endif \ No newline at end of file diff --git a/include/SSystem/SComponent/c_sxyz.h b/include/SSystem/SComponent/c_sxyz.h index bcc78040d0..c595b8f495 100644 --- a/include/SSystem/SComponent/c_sxyz.h +++ b/include/SSystem/SComponent/c_sxyz.h @@ -18,6 +18,18 @@ public: s16 GetX() const { return x; } s16 GetY() const { return y; } s16 GetZ() const { return z; } + + void set(s16 oX, s16 oY, s16 oZ) { + x = oX; + y = oY; + z = oZ; + } + + void setall(s16 val) { + x = val; + y = val; + z = val; + } }; #endif /* C_SXYZ_H */ diff --git a/include/SSystem/SComponent/c_xyz.h b/include/SSystem/SComponent/c_xyz.h index 8e7757685a..3b7c4fb4e4 100644 --- a/include/SSystem/SComponent/c_xyz.h +++ b/include/SSystem/SComponent/c_xyz.h @@ -41,6 +41,8 @@ struct cXyz : Vec { /* 80266B84 */ cXyz operator*(f32) const; /* 80266BD0 */ cXyz operator*(Vec const&) const; /* 80266C18 */ cXyz operator/(f32) const; + /* 800977D8 */ // void operator=(cXyz const&); + void operator+=(f32 f) { x += f; y += f; @@ -72,6 +74,22 @@ struct cXyz : Vec { /* 80267128 */ s16 atan2sX_Z() const; /* 80267150 */ s16 atan2sY_XZ() const; + void set(f32 pX, f32 pY, f32 pZ) { + x = pX; + y = pY; + z = pZ; + } + + void set(const Vec& other) { + x = other.x; + y = other.y; + z = other.z; + } + + f32 getXDiff(const Vec* other) const { return x - other->x; } + f32 getYDiff(const Vec* other) const { return y - other->y; } + f32 getZDiff(const Vec* other) const { return z - other->z; } + void setAll(f32 f) { set(f, f, f); } void setMin(const cXyz& other) { diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h index d44129e45a..dbd8e5783c 100644 --- a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h @@ -3,4 +3,19 @@ #include "dolphin/types.h" +#define TRK_DISPATCH_CMD_CONNECT 1 /* Connect to the console */ +#define TRK_DISPATCH_CMD_DISCONNECT 2 /* Disconnect from the console */ +#define TRK_DISPATCH_CMD_RESET 3 /* Reset the debugger */ +#define TRK_DISPATCH_CMD_GETVERSION 4 /* Get debugger version */ +#define TRK_DISPATCH_CMD_GETSUPPORTMASK 5 /* Get Support Mask */ +#define TRK_DISPATCH_CMD_OVERRIDE 7 /* Override? */ +#define TRK_DISPATCH_CMD_READMEM 16 /* Reading from memory */ +#define TRK_DISPATCH_CMD_WRITEMEM 17 /* Writing to memory */ +#define TRK_DISPATCH_CMD_READREGS 18 /* Read a register value */ +#define TRK_DISPATCH_CMD_WRITEREGS 19 /* Set a register */ +#define TRK_DISPATCH_CMD_SETOPTION 23 /* Set an option? */ +#define TRK_DISPATCH_CMD_CONTINUE 24 /* Continue debugging */ +#define TRK_DISPATCH_CMD_STEP 25 /* Step through an instruction */ +#define TRK_DISPATCH_CMD_STOP 26 /* Stop the debugger */ + #endif /* METROTRK_PORTABLE_DISPATCH_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop.h index 93095570d2..846291e307 100644 --- a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop.h +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop.h @@ -3,4 +3,6 @@ #include "dolphin/types.h" +void TRKNubMainLoop(void); + #endif /* METROTRK_PORTABLE_MAINLOOP_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.h index afef167736..c2a697ce45 100644 --- a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.h +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.h @@ -3,4 +3,11 @@ #include "dolphin/types.h" +typedef struct _TRK_Msg { + u8 _00[8]; + u32 m_msgLength; + u32 _0C; + u32 m_msg; +} TRK_Msg; + #endif /* METROTRK_PORTABLE_MSG_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h index 7ba70b1904..e4108ba657 100644 --- a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h @@ -3,4 +3,15 @@ #include "dolphin/types.h" +typedef struct TRKBuffer { + u8 _00[4]; + u32 _04; + s32 _08; + u32 _0C; + u32 _10; + u8 m_buffer[0x87C]; +} TRKBuffer; + +s32 TRKSetBufferPosition(TRKBuffer*, u32); + #endif /* METROTRK_PORTABLE_MSGBUF_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h index 746f55a84b..7c972fc07c 100644 --- a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h @@ -2,5 +2,23 @@ #define METROTRK_PORTABLE_MSGHNDLR_H #include "dolphin/types.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" + +void SetTRKConnected(BOOL); +BOOL GetTRKConnected(void); +s32 TRKDoSetOption(TRKBuffer*); +s32 TRKDoStop(TRKBuffer*); +s32 TRKDoStep(TRKBuffer*); +s32 TRKDoContinue(TRKBuffer*); +s32 TRKDoWriteRegisters(TRKBuffer*); +s32 TRKDoReadRegisters(TRKBuffer*); +s32 TRKDoWriteMemory(TRKBuffer*); +s32 TRKDoReadMemory(TRKBuffer*); +s32 TRKDoSupportMask(TRKBuffer*); +s32 TRKDoVersions(TRKBuffer*); +s32 TRKDoOverride(TRKBuffer*); +s32 TRKDoReset(TRKBuffer*); +s32 TRKDoDisconnect(TRKBuffer*); +s32 TRKDoConnect(TRKBuffer*); #endif /* METROTRK_PORTABLE_MSGHNDLR_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h index bb0f572c74..a86fa52395 100644 --- a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h @@ -3,4 +3,8 @@ #include "dolphin/types.h" +void TRKNubWelcome(void); +s32 TRKTerminateNub(void); +s32 TRKInitializeNub(void); + #endif /* METROTRK_PORTABLE_NUBINIT_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h index 0a4b8ea5a9..c2bf8bfc81 100644 --- a/include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h +++ b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h @@ -3,4 +3,8 @@ #include "dolphin/types.h" +void UnreserveEXI2Port(); +void ReserveEXI2Port(); +s32 TRKWriteUARTN(const void*, u32); + #endif /* OS_DOLPHIN_DOLPHIN_TRK_GLUE_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h b/include/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h index 58031b5fd6..c256aea9db 100644 --- a/include/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h +++ b/include/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h @@ -3,4 +3,7 @@ #include "dolphin/types.h" +void TRKSwapAndGo(); +void TRKTargetSetStopped(s32); + #endif /* PPC_GENERIC_TARGIMPL_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/utils/common/MWTrace.h b/include/TRK_MINNOW_DOLPHIN/utils/common/MWTrace.h index 2e5a587ece..35f9bb2fd0 100644 --- a/include/TRK_MINNOW_DOLPHIN/utils/common/MWTrace.h +++ b/include/TRK_MINNOW_DOLPHIN/utils/common/MWTrace.h @@ -3,4 +3,6 @@ #include "dolphin/types.h" +void MWTRACE(u8, char*, ...); + #endif /* UTILS_COMMON_MWTRACE_H */ diff --git a/include/Z2AudioLib/Z2SeqMgr.h b/include/Z2AudioLib/Z2SeqMgr.h index 5a1ec56f38..3dedde1115 100644 --- a/include/Z2AudioLib/Z2SeqMgr.h +++ b/include/Z2AudioLib/Z2SeqMgr.h @@ -25,8 +25,8 @@ class Z2SeqMgr { public: Z2SeqMgr(); - void bgmStart(u32, u32, s32); - void bgmStop(u32, s32); + void bgmStart(u32 i_bgmID, u32, s32); + void bgmStop(u32 i_bgmID, s32); void subBgmStart(u32); void subBgmStop(); void subBgmStopInner(); @@ -79,12 +79,12 @@ public: void i_setTwilightGateVol(f32 vol) { mTwilightGateVol = vol; } - void i_setWindStoneVol(f32 vol, u32 count) { field_0x94.move(vol, count); } + void i_setWindStoneVol(f32 vol, u32 count) { mWindStone.move(vol, count); } - void i_bgmAllUnMute(u32 count) { field_0x74.move(1.0f, count); } + void i_bgmAllUnMute(u32 count) { mAllBgmMaster.move(1.0f, count); } void i_unMuteSceneBgm(u32 count) { - field_0x34.move(1.0f, 0); + mBgmPause.move(1.0f, 0); field_0x44.move(1.0f, count); } @@ -94,15 +94,15 @@ private: /* 0x08 */ JAISoundHandle field_0x08; /* 0x0C */ JAISoundHandle field_0x0c; /* 0x10 */ JAISoundID field_0x10; - /* 0x14 */ Z2SoundFader field_0x14; - /* 0x24 */ Z2SoundFader field_0x24; - /* 0x34 */ Z2SoundFader field_0x34; + /* 0x14 */ Z2SoundFader mMainBgmMaster; + /* 0x24 */ Z2SoundFader mSubBgmMaster; + /* 0x34 */ Z2SoundFader mBgmPause; /* 0x44 */ Z2SoundFader field_0x44; - /* 0x54 */ Z2SoundFader field_0x54; + /* 0x54 */ Z2SoundFader mFanfareMute; /* 0x64 */ Z2SoundFader field_0x64; - /* 0x74 */ Z2SoundFader field_0x74; + /* 0x74 */ Z2SoundFader mAllBgmMaster; /* 0x84 */ Z2SoundFader field_0x84; - /* 0x94 */ Z2SoundFader field_0x94; + /* 0x94 */ Z2SoundFader mWindStone; /* 0xA4 */ Z2SoundFader field_0xa4; /* 0xB4 */ f32 mTwilightGateVol; /* 0xB8 */ u16 field_0xb8; diff --git a/include/d/a/d_a_alink.h b/include/d/a/d_a_alink.h index 7df6f5c7a6..c142c1ec95 100644 --- a/include/d/a/d_a_alink.h +++ b/include/d/a/d_a_alink.h @@ -74,7 +74,6 @@ public: /* 801266C0 */ virtual void draw(); /* 800CFDF4 */ virtual ~daAlink_sight_c(); -private: /* 0x4C */ bool mLockFlag; /* 0x4D */ u8 field_0x4d[3]; /* 0x50 */ daAlink_lockCursor_c mLockCursor; @@ -147,6 +146,8 @@ public: /* 800D0B8C */ virtual ~daAlink_matAnm_c(); /* 8009D90C */ virtual void calc(J3DMaterial*) const; + static void decMorfFrame() {} + private: /* 0x0F4 */ f32 field_0xf4; /* 0x0F8 */ f32 field_0xf8; @@ -155,9 +156,13 @@ private: /* 0x104 */ int mSetFlag; }; +struct daAlink_BckData { + /* 0x0 */ u16 m_underID; + /* 0x0 */ u16 m_upperID; +}; + struct daAlink_AnmData { - /* 0x0 */ u16 field_0x0; - /* 0x2 */ u16 field_0x2; + /* 0x0 */ daAlink_BckData field_0x0; /* 0x4 */ u8 field_0x4; /* 0x5 */ u8 field_0x5; /* 0x6 */ u16 field_0x6; @@ -196,57 +201,105 @@ typedef int (daAlink_c::*daAlink_procFunc)(); class daAlink_c : public daPy_py_c { public: enum daAlink_ANM { - /* 0x001 */ ANM_ATN_L_WALK_FORWARD = 1, - - /* 0x003 */ ANM_ATN_WALK_BACK = 3, - - /* 0x005 */ ANM_ATN_L_WALK_BACK = 5, - /* 0x006 */ ANM_ATN_HEAVY_WALK_LEFT, - /* 0x007 */ ANM_ATN_READY_LEFT, - /* 0x008 */ ANM_ATN_HEAVY_WALK_RIGHT, - /* 0x009 */ ANM_ATN_READY_RIGHT, - /* 0x00A */ ANM_ATN_WALK_LEFT, - /* 0x00B */ ANM_ATN_L_WALK_LEFT, - /* 0x00C */ ANM_ATN_WALK_RIGHT, - /* 0x00D */ ANM_ATN_L_WALK_RIGHT, - /* 0x00E */ ANM_HEAVY_WALK, - /* 0x00F */ ANM_ATN_HEAVY_WALK_BACK, - /* 0x010 */ ANM_HOOKSHOT_AIM, - /* 0x011 */ ANM_BOW_AIM, - - /* 0x013 */ ANM_RUN = 19, - - /* 0x015 */ ANM_WAIT_TURN = 0x15, - - /* 0x019 */ ANM_IDLE = 0x19, // name might be inaccurate, subjectivity - - /* 0x01B */ ANM_WAIT_INIT = 0x1B, - - /* 0x01D */ ANM_SIDE_STEP_LEFT = 0x1D, - /* 0x01E */ ANM_SIDE_STEP_RIGHT, - /* 0x01F */ ANM_SIDE_STEP_LEFT_LAND, - /* 0x020 */ ANM_SIDE_STEP_RIGHT_LAND, + /* 0x000 */ ANM_ATN_RETURN_FROM_WALK, + /* 0x001 */ ANM_ATN_RETURN_FROM_RUN, + /* 0x002 */ ANM_ATN_BACK_WALK, + /* 0x003 */ ANM_ATN_BACK_RUN, + /* 0x004 */ ANM_ATN_LOCK_BACK_WALK, + /* 0x005 */ ANM_ATN_LOCK_BACK_RUN, + /* 0x006 */ ANM_ATN_WALK_LEFT, + /* 0x007 */ ANM_ATN_LOCK_WALK_LEFT, + /* 0x008 */ ANM_ATN_WALK_RIGHT, + /* 0x009 */ ANM_ATN_LOCK_WALK_RIGHT, + /* 0x00A */ ANM_ATN_RUN_LEFT, + /* 0x00B */ ANM_ATN_LOCK_RUN_LEFT, + /* 0x00C */ ANM_ATN_RUN_RIGHT, + /* 0x00D */ ANM_ATN_LOCK_RUN_RIGHT, + /* 0x00E */ ANM_WALK_HEAVY, + /* 0x00F */ ANM_ATN_BACK_WALK_HEAVY, + /* 0x010 */ ANM_ATN_WAIT_LEFT, + /* 0x011 */ ANM_ATN_WAIT_RIGHT, + /* 0x012 */ ANM_WALK, + /* 0x013 */ ANM_RUN, + /* 0x014 */ ANM_SWIM_WAIT, + /* 0x015 */ ANM_STEP_TURN, + /* 0x016 */ ANM_SMALL_GUARD, + /* 0x017 */ ANM_STEP_TURN_TIRED, + /* 0x018 */ ANM_SMALL_GUARD_TIRED, + /* 0x019 */ ANM_WAIT, + /* 0x01A */ ANM_WAIT_B, + /* 0x01B */ ANM_WAIT_B_TO_A, + /* 0x01C */ ANM_RUN_B, + /* 0x01D */ ANM_SIDE_JUMP_LEFT, + /* 0x01E */ ANM_SIDE_JUMP_RIGHT, + /* 0x01F */ ANM_SIDE_JUMP_LEFT_LAND, + /* 0x020 */ ANM_SIDE_JUMP_RIGHT_LAND, /* 0x021 */ ANM_BACK_JUMP, /* 0x022 */ ANM_BACK_JUMP_LAND, /* 0x023 */ ANM_FRONT_ROLL, /* 0x024 */ ANM_ROLL_CRASH, - /* 0x025 */ ANM_BARRIER_RECOIL, + /* 0x025 */ ANM_BARRIER_RECOIL, // ? /* 0x026 */ ANM_BACKFLIP, /* 0x027 */ ANM_BACKFLIP_LAND, - - /* 0x02C */ ANM_SHIELD_GUARD = 0x2C, - - /* 0x02E */ ANM_SHIELD_ATTACK = 0x2E, + /* 0x028 */ ANM_SLIP, + /* 0x029 */ ANM_CROUCH, + /* 0x02A */ ANM_CROUCH_START, + /* 0x02B */ ANM_GUARD_LEFT, + /* 0x02C */ ANM_GUARD_RIGHT, + /* 0x02D */ ANM_CROUCH_DEF, // ? + /* 0x02E */ ANM_SHIELD_ATTACK, /* 0x02F */ ANM_SHIELD_ATTACK_RECOIL, - - /* 0x033 */ ANM_FALL_LAND = 0x33, // ? - - /* 0x036 */ ANM_PUSH_PULL_READY = 0x36, - /* 0x037 */ ANM_PUSH, - - /* 0x03A */ ANM_PULL = 0x3A, - - /* 0x062 */ ANM_CUT_NM_VERTICAL = 0x62, + /* 0x030 */ ANM_GUARD_BREAK, + /* 0x031 */ ANM_JUMP_START, + /* 0x032 */ ANM_JUMP, + /* 0x033 */ ANM_JUMP_LAND, + /* 0x034 */ ANM_CRAWL_START, + /* 0x035 */ ANM_CRAWL, + /* 0x036 */ ANM_WAIT_PUSH_PULL, + /* 0x037 */ ANM_PUSH_LIGHT, + /* 0x038 */ ANM_PUSH_START, + /* 0x039 */ ANM_PUSH, + /* 0x03A */ ANM_PULL_LIGHT, + /* 0x03B */ ANM_PULL_START, + /* 0x03C */ ANM_PULL, + /* 0x03D */ ANM_HORSE_MOUNT_LEFT, + /* 0x03E */ ANM_HORSE_MOUNT_RIGHT, + /* 0x03F */ ANM_HORSE_MOUNT_BACK, + /* 0x040 */ ANM_HORSE_GETOFF_LEFT, + /* 0x041 */ ANM_HORSE_GETOFF_RIGHT, + /* 0x042 */ ANM_HORSE_STOP, + /* 0x043 */ ANM_HORSE_STOP_TO_STAND, + /* 0x044 */ ANM_HORSE_STAND, + /* 0x045 */ ANM_HORSE_JUMP_START, + /* 0x046 */ ANM_HORSE_JUMP, + /* 0x047 */ ANM_HORSE_JUMP_LAND, + /* 0x048 */ ANM_HORSE_WAIT, + /* 0x049 */ ANM_HORSE_WALK_A, + /* 0x04A */ ANM_HORSE_WALK_B, + /* 0x04B */ ANM_HORSE_DASH_A, + /* 0x04C */ ANM_HORSE_DASH_B, + /* 0x04D */ ANM_WSTARTH, // ? + /* 0x04E */ ANM_HORSE_DASH_START, + /* 0x04F */ ANM_HORSE_LASH, + /* 0x050 */ ANM_HORSE_CUT_TURN, + /* 0x051 */ ANM_HORSE_WAIT_A, + /* 0x052 */ ANM_HORSE_WAIT_B, + /* 0x053 */ ANM_HORSE_DIE_RECOVER, + /* 0x054 */ ANM_HORSE_TURN_B, + /* 0x055 */ ANM_HORSE_CROUCH, + /* 0x056 */ ANM_HORSE_DMG_LEFT, + /* 0x057 */ ANM_HORSE_DMG_RIGHT, + /* 0x058 */ ANM_HORSE_HANG_LEFT, + /* 0x059 */ ANM_HORSE_HANG_RIGHT, + /* 0x05A */ ANM_HORSE_TURN_LEFT, + /* 0x05B */ ANM_HORSE_TURN_RIGHT, + /* 0x05C */ ANM_HORSE_RIDE_LEFT, + /* 0x05D */ ANM_HORSE_RIDE_RIGHT, + /* 0x05E */ ANM_HORSE_FALL_LEFT, + /* 0x05F */ ANM_HORSE_FALL_RIGHT, + /* 0x060 */ ANM_HORSE_TAME_WAIT_B, + /* 0x061 */ ANM_HORSE_TAME_WAIT_A_TO_B, + /* 0x062 */ ANM_CUT_NM_VERTICAL, /* 0x063 */ ANM_CUT_NM_LEFT, /* 0x064 */ ANM_CUT_NM_RIGHT, /* 0x065 */ ANM_CUT_COMBO_STAB, @@ -254,38 +307,45 @@ public: /* 0x067 */ ANM_CUT_FINISH_LEFT, /* 0x068 */ ANM_CUT_FINISH_VERTICAL, /* 0x069 */ ANM_CUT_FINISH_STAB, - - /* 0x06C */ ANM_CUT_FINISH_RIGHT = 0x6C, + /* 0x06A */ ANM_CUT_MORTAL_DRAW_A, + /* 0x06B */ ANM_CUT_MORTAL_DRAW_B, + /* 0x06C */ ANM_CUT_FINISH_RIGHT, /* 0x06D */ ANM_CUT_TWIRL, /* 0x06E */ ANM_CUT_TWIRL_LAND, - /* 0x06F */ ANM_CUT_RECOIL_1, - /* 0x070 */ ANM_CUT_RECOIL_2, + /* 0x06F */ ANM_CUT_RECOIL_A, + /* 0x070 */ ANM_CUT_RECOIL_B, /* 0x071 */ ANM_CUT_JUMP, /* 0x072 */ ANM_CUT_JUMP_LAND, /* 0x073 */ ANM_CUT_TURN_LEFT, /* 0x074 */ ANM_CUT_TURN_RIGHT, - /* 0x075 */ ANM_CUT_TURN_CHARGE_INIT, + /* 0x075 */ ANM_CUT_TURN_CHARGE_START, /* 0x076 */ ANM_CUT_TURN_CHARGE, - - /* 0x078 */ ANM_CUT_FINISHING_BLOW_JUMP = 0x78, + /* 0x077 */ ANM_CUT_TURN_CHARGE_MOVE, + /* 0x078 */ ANM_CUT_FINISHING_BLOW_JUMP, /* 0x079 */ ANM_CUT_FINISHING_BLOW_FALL, /* 0x07A */ ANM_CUT_FINISHING_BLOW_STAB, - - /* 0x07C */ ANM_CUT_HEAD_JUMP = 0x7C, + /* 0x07B */ ANM_CUT_FINISHING_BLOW_MISS, + /* 0x07C */ ANM_CUT_HEAD_JUMP, /* 0x07D */ ANM_CUT_HEAD, /* 0x07E */ ANM_CUT_HEAD_LAND, - /* 0x07F */ ANM_DMG_SMALL, - - /* 0x083 */ ANM_DMG_AIR = 0x83, + /* 0x07F */ ANM_DMG_SMALL_A, + /* 0x080 */ ANM_DMG_SMALL_B, + /* 0x081 */ ANM_DMG_SMALL_LEFT, + /* 0x082 */ ANM_DMG_SMALL_RIGHT, + /* 0x083 */ ANM_DMG_AIR_FRONT, /* 0x084 */ ANM_DMG_LARGE, - - /* 0x087 */ ANM_DMG_AIR_LAND = 0x87, + /* 0x085 */ ANM_DMG_AIR_LEFT, + /* 0x086 */ ANM_DMG_AIR_RIGHT, + /* 0x087 */ ANM_DMG_AIR_LAND, /* 0x088 */ ANM_DMG_LARGE_LAND, - - /* 0x08C */ ANM_DMG_LARGE_UP_INIT = 0x8C, - /* 0x08D */ ANM_DMG_LARGE_UP, - - /* 0x090 */ ANM_SERVICE_WAIT = 0x90, + /* 0x089 */ ANM_DMG_AIR_LEFT_LAND, + /* 0x08A */ ANM_DMG_AIR_RIGHT_LAND, + /* 0x08B */ ANM_DMG, + /* 0x08C */ ANM_DMG_FALL, + /* 0x08D */ ANM_DMG_FALL_RECOVER, + /* 0x08E */ ANM_FINISH, + /* 0x08F */ ANM_FINISH_END, + /* 0x090 */ ANM_SERVICE_WAIT, /* 0x091 */ ANM_CLIMB_JUMP, /* 0x092 */ ANM_HANG_READY, /* 0x093 */ ANM_CLIMB_TOP_SMALL, @@ -294,98 +354,433 @@ public: /* 0x096 */ ANM_HANG_ONE_HAND_MOVE, /* 0x097 */ ANM_HANG_MOVE_LEFT, /* 0x098 */ ANM_HANG_MOVE_RIGHT, - - /* 0x0A2 */ ANM_CLIMB_READY = 0xA2, - /* 0x0A3 */ ANM_CLIMB_UP_RIGHT, - /* 0x0A4 */ ANM_CLIMB_UP_LEFT, - /* 0x0A5 */ ANM_CLIMB_MOVE_LEFT, - /* 0x0A6 */ ANM_CLIMB_MOVE_RIGHT, - /* 0x0A7 */ ANM_FALL_ONE_HAND_GRAB, - - /* 0x0AF */ ANM_PICK_UP_INIT = 0xAF, - /* 0x0B0 */ ANM_PICK_UP, - /* 0x0B1 */ ANM_THROW_SMALL, - /* 0x0B2 */ ANM_THROW_LARGE, - /* 0x0B3 */ ANM_PICK_UP_LARGE_INIT, + /* 0x099 */ ANM_LADDER_UP_START, + /* 0x09A */ ANM_LADDER_UP_END_LEFT, + /* 0x09B */ ANM_LADDER_UP_END_RIGHT, + /* 0x09C */ ANM_LADDER_DOWN_START, + /* 0x09D */ ANM_LADDER_DOWN_END_LEFT, + /* 0x09E */ ANM_LADDER_DOWN_END_RIGHT, + /* 0x09F */ ANM_LADDER_RIGHT_TO_LEFT, + /* 0x0A0 */ ANM_LADDER_LEFT_TO_RIGHT, + /* 0x0A1 */ ANM_CLIMB_HANG, + /* 0x0A2 */ ANM_CLIMB_START, + /* 0x0A3 */ ANM_CLIMB_LEFT, + /* 0x0A4 */ ANM_CLIMB_RIGHT, + /* 0x0A5 */ ANM_CLIMB_SLIDE_LEFT, + /* 0x0A6 */ ANM_CLIMB_SLIDE_RIGHT, + /* 0x0A7 */ ANM_CLIMB_HANG_MISS, + /* 0x0A8 */ ANM_ROOF_UP, + /* 0x0A9 */ ANM_ROOF_HANG_WAIT, + /* 0x0AA */ ANM_ROOF_HANG_MOVE, + /* 0x0AB */ ANM_ROOF_HANG_LEFT, + /* 0x0AC */ ANM_ROOF_HANG_RIGHT, + /* 0x0AD */ ANM_ROOF_HANG_TURN, + /* 0x0AE */ ANM_ROOF_HANG, + /* 0x0AF */ ANM_GRAB_UP_START, + /* 0x0B0 */ ANM_GRAB_UP, + /* 0x0B1 */ ANM_THROW, + /* 0x0B2 */ ANM_THROW_HEAVY, + /* 0x0B3 */ ANM_PICK_UP_LARGE_START, /* 0x0B4 */ ANM_PICK_UP_LARGE, - - /* 0x0B6 */ ANM_TIRED_WAIT = 0xB6, - /* 0x0B7 */ ANM_TIRED_WAIT_INIT, - /* 0x0B8 */ ANM_NPC_SPEAK, - - /* 0x0BB */ ANM_BOOMERANG_CATCH = 0xBB, - - /* 0x0BD */ ANM_FORWARD_SLIDE = 0xBD, - /* 0x0BE */ ANM_BACKWARD_SLIDE, - /* 0x0BF */ ANM_BACKWARD_SLIDE_LAND, - /* 0x0C0 */ ANM_FORWARD_SLIDE_LAND, - - /* 0x0CE */ ANM_SWIM_FREEZE = 0xCE, - - /* 0x0D7 */ ANM_BOARD_SPINNER = 0xD7, - - /* 0x0F2 */ ANM_SPINNER_STAND = 0xF2, - - /* 0x0F4 */ ANM_SPINNER_RIDE = 0xF4, - - /* 0x0F7 */ ANM_SPINNER_ATTACK = 0xF7, - /* 0x0F8 */ ANM_SPINNER_ATTACK_LAND, - /* 0x0F9 */ ANM_SPINNER_PUSH, - - /* 0x0FD */ ANM_TRANSFORM_WOLF = 0xFD, // verify - - /* 0x100 */ ANM_BOTTLE_DRINK_OPEN = 0x100, + /* 0x0B5 */ ANM_CARRY, + /* 0x0B6 */ ANM_WAIT_TIRED, + /* 0x0B7 */ ANM_WAIT_TO_TIRED, + /* 0x0B8 */ ANM_TALK, + /* 0x0B9 */ ANM_WAIT_START, + /* 0x0BA */ ANM_FROZEN_FREE, // ? + /* 0x0BB */ ANM_BOOMERANG_CATCH, + /* 0x0BC */ ANM_WALK_SLOPE, + /* 0x0BD */ ANM_SLIDE_FORWARD, + /* 0x0BE */ ANM_SLIDE_BACKWARD, + /* 0x0BF */ ANM_SLIDE_FORWARD_END, + /* 0x0C0 */ ANM_SLIDE_BACKWARD_END, + /* 0x0C1 */ ANM_SWIM_A, + /* 0x0C2 */ ANM_SWIM_RESURFACE, + /* 0x0C3 */ ANM_ATN_SWIM_LEFT, + /* 0x0C4 */ ANM_ATN_SWIM_RIGHT, + /* 0x0C5 */ ANM_ATN_SWIM_BACK, + /* 0x0C6 */ ANM_SWIM_DASH, + /* 0x0C7 */ ANM_SWIM_DIVE, + /* 0x0C8 */ ANM_SWIM_ZORA_START, + /* 0x0C9 */ ANM_SWIM_C, + /* 0x0CA */ ANM_SWIM_DMG_FRONT, + /* 0x0CB */ ANM_SWIM_DMG_BACK, + /* 0x0CC */ ANM_SWIM_DMG_LEFT, + /* 0x0CD */ ANM_SWIM_DMG_RIGHT, + /* 0x0CE */ ANM_SWIM_DMG_FREEZE, + /* 0x0CF */ ANM_TRES_OPEN_SMALL, + /* 0x0D0 */ ANM_TRES_OPEN_KICK, + /* 0x0D1 */ ANM_TRES_OPEN_BIG, + /* 0x0D2 */ ANM_GET_A, + /* 0x0D3 */ ANM_GET_A_WAIT, + /* 0x0D4 */ ANM_GET_A_WAIT2, // same under anm, upper anm (0x26A) + /* 0x0D5 */ ANM_GET_HOLDOUT, + /* 0x0D6 */ ANM_TURN_BACK, + /* 0x0D7 */ ANM_VJUMP_START, + /* 0x0D8 */ ANM_WAIT_SIT, + /* 0x0D9 */ ANM_WAIT_CANOE_LEFT, + /* 0x0DA */ ANM_WAIT_CANOE_RIGHT, + /* 0x0DB */ ANM_CANOE_ROW_LEFT, + /* 0x0DC */ ANM_CANOE_ROW_RIGHT, + /* 0x0DD */ ANM_CANOE_ROW_LEFT_BACK, + /* 0x0DE */ ANM_CANOE_ROW_RIGHT_BACK, + /* 0x0DF */ ANM_CANOE_CHANGE_HAND, + /* 0x0E0 */ ANM_CANOE_FISH_LEFT, + /* 0x0E1 */ ANM_CANOE_FISH_RIGHT, + /* 0x0E2 */ ANM_CANOE_REEL, + /* 0x0E3 */ ANM_CANOE_RELEASE, + /* 0x0E4 */ ANM_CANOE_PADDLE_TO_ROD, + /* 0x0E5 */ ANM_REEL, + /* 0x0E6 */ ANM_REEL_LEFT_RIGHT, + /* 0x0E7 */ ANM_LAND_UP, // ? + /* 0x0E8 */ ANM_DOOR_OPEN_LEFT, + /* 0x0E9 */ ANM_DOOR_OPEN_RIGHT, + /* 0x0EA */ ANM_DOOR_OPEN_LOCK_LEFT, + /* 0x0EB */ ANM_DOOR_OPEN_LOCK_RIGHT, + /* 0x0EC */ ANM_DOOR_OPEN_ROLL, + /* 0x0ED */ ANM_DOOR_OPEN_SLIDE, + /* 0x0EE */ ANM_PICK_UP, + /* 0x0EF */ ANM_ROLL_JUMP, + /* 0x0F0 */ ANM_SIDE_ROLL_LEFT, + /* 0x0F1 */ ANM_SIDE_ROLL_RIGHT, + /* 0x0F2 */ ANM_RIDE_WAIT, + /* 0x0F3 */ ANM_RIDE_FRONT, + /* 0x0F4 */ ANM_RIDE_CROUCH, + /* 0x0F5 */ ANM_RIDE_STOP, + /* 0x0F6 */ ANM_RIDE_JUMP_START, + /* 0x0F7 */ ANM_RIDE_JUMP, + /* 0x0F8 */ ANM_RIDE_JUMP_LAND, + /* 0x0F9 */ ANM_RIDE_KICK, + /* 0x0FA */ ANM_RIDE_CUT_TURN_CHARGE, + /* 0x0FB */ ANM_RIDE_CUT_TURN, + /* 0x0FC */ ANM_ROPE_SWING, // monkey swing? + /* 0x0FD */ ANM_TRANSFORM_TO_WOLF, + /* 0x0FE */ ANM_TRANSFORM_TO_HUMAN, + /* 0x0FF */ ANM_WAIT_WIND, + /* 0x100 */ ANM_BOTTLE_DRINK_START, /* 0x101 */ ANM_BOTTLE_DRINK, /* 0x102 */ ANM_BOTTLE_DRINK_END, - - /* 0x107 */ ANM_BOTTLE_SWING = 0x107, - /* 0x108 */ ANM_GRASS_WHISTLE_GRAB, - - /* 0x10B */ ANM_LANTERN_SWING = 0x10B, - /* 0x10C */ ANM_OIL_BOTTLE_POUR_INIT, + /* 0x103 */ ANM_BOTTLE_DRINK_NASTY, + /* 0x104 */ ANM_BOTTLE_OPEN, + /* 0x105 */ ANM_BOTTLE_POUR, + /* 0x106 */ ANM_BOTTLE_FAIRY, + /* 0x107 */ ANM_BOTTLE_SWING, + /* 0x108 */ ANM_BOTTLE_SWING_DOWN, + /* 0x109 */ ANM_BOTTLE_GET, + /* 0x10A */ ANM_BOTTLE_SCOOP, + /* 0x10B */ ANM_LANTERN_SWING, + /* 0x10C */ ANM_OIL_BOTTLE_POUR_START, /* 0x10D */ ANM_OIL_BOTTLE_POUR, /* 0x10E */ ANM_OIL_BOTTLE_POUR_END, - - /* 0x110 */ ANM_GRASS_WHISTLE_PLAY = 0x110, + /* 0x10F */ ANM_GRASS_WHISTLE_START, + /* 0x110 */ ANM_GRASS_WHISTLE_PLAY, /* 0x111 */ ANM_HAWK_CATCH, - /* 0x112 */ ANM_HAWK_SUBJECT, - - /* 0x129 */ ANM_HOOKSHOT_PULL_TO = 0x129, - - /* 0x12B */ ANM_HOOKSHOT_SHOOT = 0x12B, - - /* 0x13E */ ANM_BOOTS_EQUIP = 0x13E, - - /* 0x181 */ ANM_CHAIN_PICK_UP = 0x181, + /* 0x112 */ ANM_HAWK_WAIT, + /* 0x113 */ ANM_WAIT_D_B, // ghost rats? + /* 0x114 */ ANM_HORSE_WAIT_D_B, // ? + /* 0x115 */ ANM_MG_KICK, // ? + /* 0x116 */ ANM_DIE, + /* 0x117 */ ANM_HORSE_DIE, + /* 0x118 */ ANM_SWIM_DIE, + /* 0x119 */ ANM_SWIM_DROWN, + /* 0x11A */ ANM_ATN_COW, + /* 0x11B */ ANM_COW_CATCH_START, + /* 0x11C */ ANM_COW_CATCH, + /* 0x11D */ ANM_COW_A_D, // ? + /* 0x11E */ ANM_COW_PRESS, + /* 0x11F */ ANM_COW_THROW_LEFT, + /* 0x120 */ ANM_COW_THROW_RIGHT, + /* 0x121 */ ANM_ATN_RIGHT, + /* 0x122 */ ANM_COW_MOVE_LEFT_RIGHT, + /* 0x123 */ ANM_COW_STROKE, + /* 0x124 */ ANM_ENTRANCE, + /* 0x125 */ ANM_FALL, + /* 0x126 */ ANM_APPEARANCE, + /* 0x127 */ ANM_S_JUMP_START, // ? + /* 0x128 */ ANM_S_JUMP_END, // ? + /* 0x129 */ ANM_HOOKSHOT_FLY_LEFT, + /* 0x12A */ ANM_HOOKSHOT_FLY_RIGHT, + /* 0x12B */ ANM_HOOKSHOT_SHOOT, + /* 0x12C */ ANM_HOOKSHOT_HANG_END_LEFT, + /* 0x12D */ ANM_HOOKSHOT_HANG_END_RIGHT, + /* 0x12E */ ANM_HOOKSHOT_HANG_LEFT, + /* 0x12F */ ANM_HOOKSHOT_HANG_RIGHT, + /* 0x130 */ ANM_HOOKSHOT_HANG_WAIT_LEFT, + /* 0x131 */ ANM_HOOKSHOT_HANG_WAIT_RIGHT, + /* 0x132 */ ANM_HOOKSHOT_HANG_SHOOT_LEFT, + /* 0x133 */ ANM_HOOKSHOT_HANG_SHOOT_RIGHT, + /* 0x134 */ ANM_HOOKSHOT_HANG_LEFT_START, + /* 0x135 */ ANM_HOOKSHOT_HANG_RIGHT_START, + /* 0x136 */ ANM_HOOKSHOT_WALL_END_LEFT, + /* 0x137 */ ANM_HOOKSHOT_WALL_END_RIGHT, + /* 0x138 */ ANM_HOOKSHOT_WALL_LEFT, + /* 0x139 */ ANM_HOOKSHOT_WALL_RIGHT, + /* 0x13A */ ANM_HOOKSHOT_WALL_WAIT_LEFT, + /* 0x13B */ ANM_HOOKSHOT_WALL_WAIT_RIGHT, + /* 0x13C */ ANM_HOOKSHOT_WALL_SHOOT_LEFT, + /* 0x13D */ ANM_HOOKSHOT_WALL_SHOOT_RIGHT, + /* 0x13E */ ANM_HVY_BOOTS_PUT_ON, + /* 0x13F */ ANM_SUMOU_MIAU, // ? + /* 0x140 */ ANM_SUMOU_HAKEYOI, // ? + /* 0x141 */ ANM_SUMOU_FIGHT_WAIT, + /* 0x142 */ ANM_SUMOU_FIGHT_STEP_LEFT, + /* 0x143 */ ANM_SUMOU_FIGHT_STEP_RIGHT, + /* 0x144 */ ANM_SUMOU_FIGHT_STEP, + /* 0x145 */ ANM_SUMOU_TACKLE, + /* 0x146 */ ANM_SUMOU_TACKLE_GORON, // ? + /* 0x147 */ ANM_SUMOU_DODGE_TACKLE, + /* 0x148 */ ANM_SUMOU_TACKLE_MISS, + /* 0x149 */ ANM_SUMOU_TACKLE_SHOCK, + /* 0x14A */ ANM_SUMOU_TACKLE_WAIT, + /* 0x14B */ ANM_SUMOU_TACKLE_WAIT_GORON, // ? + /* 0x14C */ ANM_SUMOU_TACKLE_STAGGER, + /* 0x14D */ ANM_SUMOU_TACKLE_STAGGER_GORON, // ? + /* 0x14E */ ANM_SUMOU_TACKLE_SHOCK_RETURN, + /* 0x14F */ ANM_SUMOU_PUNCH, + /* 0x150 */ ANM_SUMOU_PUNCH_MISS_SHOCK, + /* 0x151 */ ANM_SUMOU_PUNCH_MISS_SHOCK_RETURN, + /* 0x152 */ ANM_SUMOU_PUNCH_SHOCK, + /* 0x153 */ ANM_SUMOU_STAGGER, + /* 0x154 */ ANM_SUMOU_PUSH_BACK, + /* 0x155 */ ANM_SUMOU_PULL_BACK, + /* 0x156 */ ANM_SUMOU_PULL_BACK_GORON, // ? + /* 0x157 */ ANM_SUMOU_WIN, + /* 0x158 */ ANM_SUMOU_WIN_GORON, + /* 0x159 */ ANM_SUMOU_LOSE, + /* 0x15A */ ANM_SUMOU_LOSE_GORON, + /* 0x15B */ ANM_SUMOU_KNOCKED_DOWN, + /* 0x15C */ ANM_SUMOU_GET_UP, + /* 0x15D */ ANM_SUMOU_SHIKO, + /* 0x15E */ ANM_SUMOU_SHIKO_WAIT, + /* 0x15F */ ANM_DMG_FBW, // ? + /* 0x160 */ ANM_IRONBALL_WAIT, + /* 0x161 */ ANM_IRONBALL_WALK, + /* 0x162 */ ANM_IRONBALL_ATTACK, + /* 0x163 */ ANM_IRONBALL_TURN, + /* 0x164 */ ANM_IRONBALL_THROW, + /* 0x165 */ ANM_IRONBALL_PULL, + /* 0x166 */ ANM_IRONBALL_CATCH, + /* 0x167 */ ANM_IRONBALL_DEF, + /* 0x168 */ ANM_MORPHEEL_HANG, + /* 0x169 */ ANM_MORPHEEL_HANG_MISS, + /* 0x16A */ ANM_MORPHEEL_HANG_WAIT, + /* 0x16B */ ANM_MORPHEEL_HANG_WAIT_B, + /* 0x16C */ ANM_MORPHEEL_CUT, + /* 0x16D */ ANM_MORPHEEL_CUT_B, // final hit of cycles 1 and 2 + /* 0x16E */ ANM_MORPHEEL_CUT_FINAL, + /* 0x16F */ ANM_MORPHEEL_SPIT_OUT, + /* 0x170 */ ANM_DRAGON_HANG_LEFT, + /* 0x171 */ ANM_DRAGON_HANG_RIGHT, + /* 0x172 */ ANM_DRAGON_HANG, + /* 0x173 */ ANM_DRAGON_HANG_WAIT, + /* 0x174 */ ANM_DRAGON_HANG_WAIT_B, + /* 0x175 */ ANM_DRAGON_CUT, + /* 0x176 */ ANM_DRAGON_CUT_B, // final hit of cycles 1 and 2 + /* 0x177 */ ANM_DRAGON_CUT_FINAL, + /* 0x178 */ ANM_COPYROD_SWING, + /* 0x179 */ ANM_COPYROD_SWING_LARGE, + /* 0x17A */ ANM_GET_MASTER_SWORD, // ? + /* 0x17B */ ANM_WAIT_F, + /* 0x17C */ ANM_ELEC_STUN_GND, + /* 0x17D */ ANM_ELEC_STUN_AIR, + /* 0x17E */ ANM_KEY_CATCH, + /* 0x17F */ ANM_HORSE_GET_ITEM, + /* 0x180 */ ANM_TWGATE_PULLED_IN, + /* 0x181 */ ANM_CHAIN_PICK_UP, /* 0x182 */ ANM_CHAIN_PULL, - - /* 0x188 */ ANM_DUNGEON_WARP_READY_INIT = 0x188, - - /* 0x18B */ ANM_CUT_JUMP_LARGE_CHARGE = 0x18B, - /* 0x18C */ ANM_CUT_JUMP_LARGE_INIT, + /* 0x183 */ ANM_CHAIN_PULL_FYRUS, + /* 0x184 */ ANM_CHAIN_PULL_END, + /* 0x185 */ ANM_WAIT_INSECT, + /* 0x186 */ ANM_DEMO_MHOP, // ? + /* 0x187 */ ANM_PULL_IRONBALL_SWITCH, + /* 0x188 */ ANM_TRADE_ITEM_PULL_OUT, + /* 0x189 */ ANM_TRADE_ITEM_WAIT, + /* 0x18A */ ANM_DEMO_KAMAE, // ? + /* 0x18B */ ANM_CUT_JUMP_LARGE_CHARGE, + /* 0x18C */ ANM_CUT_JUMP_LARGE_START, /* 0x18D */ ANM_CUT_JUMP_LARGE, /* 0x18E */ ANM_CUT_JUMP_LARGE_LAND, - /* 0x18F */ ANM_MASTER_SWORD_STICK_INIT, - /* 0x190 */ ANM_MASTER_SWORD_STICK, - /* 0x191 */ ANM_MASTER_SWORD_PULL_INIT, - - /* 0x198 */ ANM_GANON_FINISH = 408, // name probably wrong, fix later + /* 0x18F */ ANM_DEMO_MASTER_SWORD_STICK, + /* 0x190 */ ANM_DEMO_MASTER_SWORD_WAIT, + /* 0x191 */ ANM_DEMO_MASTER_SWORD_PULL, + /* 0x192 */ ANM_GANON_CHANCE, + /* 0x193 */ ANM_GANON_CHANCE_LOSING, + /* 0x194 */ ANM_GANON_CHANCE_WINNING, + /* 0x195 */ ANM_GANON_CHANCE_WIN, + /* 0x196 */ ANM_GANON_CHANCE_LOSE, + /* 0x197 */ ANM_GANON_FINISH, + /* 0x198 */ ANM_GANON_FINISH_WAIT, + /* 0x199 */ ANM_GANON_ON_HORSE, + /* 0x19A */ ANM_DIVE_START, + /* 0x19B */ ANM_DIVE, + /* 0x19C */ ANM_ODOROKU, // ? + /* 0x19D */ ANM_ASHIMOTO, // ? }; enum daAlink_UPPER { - Unk0, - Unk1, - UPPER_NOW // needs better name. main upper anmheap idx checked for actions + UPPER_0, + UPPER_1, + UPPER_2, }; - enum daAlink_UNDER {}; + enum daAlink_UNDER { + UNDER_0, + UNDER_1, + UNDER_2, + }; + + enum daAlink_FTANM {}; enum daAlink_WARP_MAT_MODE {}; enum daAlink_WANM { - /* 0x5E */ ANM_WOLF_HOWL_SUCCESS = 94, - - /* 0x70 */ ANM_TRANFORM_HUMAN = 0x70, // verify + /* 0x00 */ WANM_WAIT, + /* 0x01 */ WANM_WALK_A, + /* 0x02 */ WANM_WALK_B, + /* 0x03 */ WANM_DASH_A, + /* 0x04 */ WANM_JUMP_ATTACK_START, + /* 0x05 */ WANM_JUMP_ATTACK, + /* 0x06 */ WANM_JUMP_ATTACK_END, + /* 0x07 */ WANM_WAIT_PP, // ? + /* 0x08 */ WANM_PUSH_LIGHT, + /* 0x09 */ WANM_PUSH_START, + /* 0x0A */ WANM_PUSH, + /* 0x0B */ WANM_SIT, + /* 0x0C */ WANM_CROUCH, + /* 0x0D */ WANM_CROUCH_WALK, + /* 0x0E */ WANM_WAIT_SIT, + /* 0x0F */ WANM_TRES_OPEN, + /* 0x10 */ WANM_VJMP_START, + /* 0x11 */ WANM_BUMP_START, + /* 0x12 */ WANM_BUMP_END, + /* 0x13 */ WANM_VJMP_CLIMB, + /* 0x14 */ WANM_VJMP_CLIMB_HANG, + /* 0x15 */ WANM_TURN_BACK, + /* 0x16 */ WANM_DMG_SMALL, + /* 0x17 */ WANM_WAIT_TIRED, + /* 0x18 */ WANM_WAIT_TO_TIRED, + /* 0x19 */ WANM_HANG, + /* 0x1A */ WANM_SLIP, + /* 0x1B */ WANM_TURN, + /* 0x1C */ WANM_ATN, + /* 0x1D */ WANM_WALK_SLOPE, + /* 0x1E */ WANM_SLIDE_BACKWARD, + /* 0x1F */ WANM_SLIDE_BACKWARD_END, + /* 0x20 */ WANM_SLIDE_FORWARD_START, + /* 0x21 */ WANM_ROPE_WALK, + /* 0x22 */ WANM_ROPE_CLIMB_LEFT, + /* 0x23 */ WANM_ROPE_CLIMB_RIGHT, + /* 0x24 */ WANM_ROPE_TURN, + /* 0x25 */ WANM_ROPE_WAIT, + /* 0x26 */ WANM_ROPE_FALTER, + /* 0x27 */ WANM_DASH_B, + /* 0x28 */ WANM_DMG_AIR_FRONT, + /* 0x29 */ WANM_DMG_AIR_BACK, + /* 0x2A */ WANM_DMG_AIR_LEFT, + /* 0x2B */ WANM_DMG_AIR_RIGHT, + /* 0x2C */ WANM_DMG_AIR_FRONT_GETUP, + /* 0x2D */ WANM_DMG_AIR_BACK_GETUP, + /* 0x2E */ WANM_DMG_AIR_LEFT_GETUP, + /* 0x2F */ WANM_DMG_AIR_RIGHT_GETUP, + /* 0x30 */ WANM_SERVICE_WAIT_A, + /* 0x31 */ WANM_WAIT_B, + /* 0x32 */ WANM_JUMP_B_START, + /* 0x33 */ WANM_JUMP_B_TURN_START, + /* 0x34 */ WANM_JUMP_B, + /* 0x35 */ WANM_JUMP_B_END, + /* 0x36 */ WANM_SWIM_RESURFACE, + /* 0x37 */ WANM_SWIM_WAIT, + /* 0x38 */ WANM_SWIM, + /* 0x39 */ WANM_SWIM_DASH, + /* 0x3A */ WANM_WAIT_SHAKE, + /* 0x3B */ WANM_WAIT_START, + /* 0x3C */ WANM_DMG_FRONT, + /* 0x3D */ WANM_DMG_BACK, + /* 0x3E */ WANM_DMG_LEFT, + /* 0x3F */ WANM_DMG_RIGHT, + /* 0x40 */ WANM_ATTACK_B_LEFT, + /* 0x41 */ WANM_ATTACK_B_RIGHT, + /* 0x42 */ WANM_ATTACK_B_FRONT, + /* 0x43 */ WANM_ATTACK_B_TAIL, + /* 0x44 */ WANM_ATN_LOCK_WALK_BACK, + /* 0x45 */ WANM_ATN_LOCK_WALK_FRONT, + /* 0x46 */ WANM_ATN_LOCK_RUN, + /* 0x47 */ WANM_PICKUP_A, + /* 0x48 */ WANM_SIDE_JUMP_LEFT_START, + /* 0x49 */ WANM_SIDE_JUMP_LEFT_END, + /* 0x4A */ WANM_SIDE_JUMP_RIGHT_START, + /* 0x4B */ WANM_SIDE_JUMP_RIGHT_END, + /* 0x4C */ WANM_BACK_JUMP_START, + /* 0x4D */ WANM_BACK_JUMP_END, + /* 0x4E */ WANM_PICKUP_B, + /* 0x4F */ WANM_PICKUP_THROW, + /* 0x50 */ WANM_ATTACK_A_START, + /* 0x51 */ WANM_ATTACK_A, + /* 0x52 */ WANM_ATTACK_A_END, + /* 0x53 */ WANM_ATTACK_A_END_FRONT, + /* 0x54 */ WANM_ATTACK_A_END_BACK, + /* 0x55 */ WANM_ATTACK_T_START, + /* 0x56 */ WANM_ATTACK_T, + /* 0x57 */ WANM_HANDLE_HANG, + /* 0x58 */ WANM_HANDLE_HANG_WAIT, + /* 0x59 */ WANM_HANDLE_HANG_SW, // ? + /* 0x5A */ WANM_CUT_TURN_LEFT, + /* 0x5B */ WANM_CUT_TURN_RIGHT, + /* 0x5C */ WANM_HOWL, + /* 0x5D */ WANM_HOWL_SIT, + /* 0x5E */ WANM_HOWL_SUCCESS, + /* 0x5F */ WANM_HOWL_END, + /* 0x60 */ WANM_FALL_LAND, + /* 0x61 */ WANM_FALL_LAND_START, + /* 0x62 */ WANM_ATTACK_POE_START, + /* 0x63 */ WANM_ATTACK_POE, + /* 0x64 */ WANM_ATTACK_POE_END, + /* 0x65 */ WANM_ATTACK_POE_MISS, + /* 0x66 */ WANM_BACKFLIP_START, + /* 0x67 */ WANM_BACKFLIP_END, + /* 0x68 */ WANM_DIG, + /* 0x69 */ WANM_DIG_IN, + /* 0x6A */ WANM_DIG_UNDER, + /* 0x6B */ WANM_SLIDE_W, // ? + /* 0x6C */ WANM_JUMP_KICK, + /* 0x6D */ WANM_PULL_OUT, + /* 0x6E */ WANM_CUT_TURN_CHARGE, + /* 0x6F */ WANM_TRANSFORM_TO_WOLF, + /* 0x70 */ WANM_TRANSFORM_TO_HUMAN, + /* 0x71 */ WANM_WAIT_WIND, + /* 0x72 */ WANM_SMELL, + /* 0x73 */ WANM_DASH_START, + /* 0x74 */ WANM_ATTACK_RECOIL_START, + /* 0x75 */ WANM_ATTACK_RECOIL_END, + /* 0x76 */ WANM_FLING_LEFT, + /* 0x77 */ WANM_FLING_RIGHT, + /* 0x78 */ WANM_CATCH_START, + /* 0x79 */ WANM_CATCH, + /* 0x7A */ WANM_ATTACK_RECOIL_GROUND, + /* 0x7B */ WANM_DIE, + /* 0x7C */ WANM_SWIM_DIE, + /* 0x7D */ WANM_SWIM_DROWN, + /* 0x7E */ WANM_WAIT_STUNNED, // ? + /* 0x7F */ WANM_WAIT_A_TO_S, // ? + /* 0x80 */ WANM_SERVICE_WAIT_D, + /* 0x81 */ WANM_MIDNA_SHOCK, + /* 0x82 */ WANM_ENTRANCE, + /* 0x83 */ WANM_GET_A, + /* 0x84 */ WANM_GET, + /* 0x85 */ WANM_WAIT_KARGOROK, + /* 0x86 */ WANM_CATCH_KARGOROK, + /* 0x87 */ WANM_DMG_ELEC_GROUND, + /* 0x88 */ WANM_DMG_ELEC_AIR, + /* 0x89 */ WANM_TWGATE_PULL, + /* 0x8A */ WANM_CHAIN_PULL, + /* 0x8B */ WANM_CHAIN_PULL_END, + /* 0x8C */ WANM_LISTEN, + /* 0x8D */ WANM_PIG_GANON_CATCH_ST, + /* 0x8E */ WANM_PIG_GANON_CATCH_END, + /* 0x8F */ WANM_PIG_GANON_THROW_LEFT_START, + /* 0x90 */ WANM_PIG_GANON_THROW_LEFT_END, + /* 0x91 */ WANM_PIG_GANON_THROW_RIGHT_START, + /* 0x92 */ WANM_PIG_GANON_THROW_RIGHT_END, }; enum MODE_FLG { @@ -655,8 +1050,8 @@ public: /* 0x0E8 */ PROC_MASTER_SWORD_STICK, /* 0x0E9 */ PROC_MASTER_SWORD_PULL, /* 0x0EA */ PROC_DUNGEON_WARP_READY, - /* 0x0EB */ PROC_DUNEGON_WARP, - /* 0x0EC */ PROC_DUNEGON_WARP_SCN_START, + /* 0x0EB */ PROC_DUNGEON_WARP, + /* 0x0EC */ PROC_DUNGEON_WARP_SCN_START, /* 0x0ED */ PROC_WOLF_HOWL_DEMO, /* 0x0EE */ PROC_WOLF_SERVICE_WAIT, /* 0x0EF */ PROC_WOLF_TIRED_WAIT, @@ -774,15 +1169,6 @@ public: /* 0x15F */ PROC_QUAKE_WAIT, }; - // this might be one of the above enums, but not clear yet - enum UPPER_ANM { - ANM_SMALL_GUARD = 22, - ANM_HUMAN_CHAIN_GRAB = 98, - ANM_WOLF_CHAIN_GRAB = 672, - ANM_WOLF_ENEMY_THROW_LEFT = 701, - ANM_WOLF_ENEMY_THROW_RIGHT, - }; - enum daAlink_ITEM_BTN { /* 0x01 */ BTN_X = (1 << 0), /* 0x02 */ BTN_Y = (1 << 1), @@ -880,13 +1266,13 @@ public: /* 800A7358 */ void setPolygonSpeed(); /* 800A7950 */ void checkWindSpeedOnAngle() const; /* 800A79EC */ void checkWindSpeedOnAngleAnime(int) const; - /* 800A7A5C */ void checkDashAnime() const; + /* 800A7A5C */ bool checkDashAnime() const; /* 800A7ABC */ void checkWindWallRate(cXyz const&); /* 800A7CB0 */ void setWindSpeed(); /* 800A8310 */ void setBodyPartPos(); /* 800A87F8 */ void setAttentionPos(); /* 800A8CE4 */ void setMatrix(); - /* 800A9248 */ static void simpleAnmPlay(J3DAnmBase*); + /* 800A9248 */ static int simpleAnmPlay(J3DAnmBase*); /* 800A92F0 */ void setSwordPos(); /* 800A9450 */ void setItemMatrix(int); /* 800A9F4C */ void setWolfItemMatrix(); @@ -904,10 +1290,10 @@ public: /* 800ABB84 */ void setCollisionPos(); /* 800ABDB8 */ void setCollision(); /* 800AC394 */ void setFrameCtrl(daPy_frameCtrl_c*, u8, s16, s16, f32, f32); - /* 800AC450 */ void getMainBckData(daAlink_c::daAlink_ANM) const; - /* 800AC558 */ void checkUnderMove0BckNoArc(daAlink_c::daAlink_ANM) const; - /* 800AC5B4 */ void checkUnderMove1BckNoArc(daAlink_c::daAlink_ANM) const; - /* 800AC610 */ void getUnderUpperAnime(daAlink_c::daAlink_ANM, J3DAnmTransform**, + /* 800AC450 */ const daAlink_BckData* getMainBckData(daAlink_c::daAlink_ANM) const; + /* 800AC558 */ BOOL checkUnderMove0BckNoArc(daAlink_c::daAlink_ANM) const; + /* 800AC5B4 */ BOOL checkUnderMove1BckNoArc(daAlink_c::daAlink_ANM) const; + /* 800AC610 */ int getUnderUpperAnime(daAlink_c::daAlink_ANM, J3DAnmTransform**, J3DAnmTransform**, int, u32); /* 800AC738 */ void setDoubleAnimeBlendRatio(f32); /* 800AC754 */ void commonDoubleAnime(J3DAnmTransform*, J3DAnmTransform*, J3DAnmTransform*, @@ -918,8 +1304,8 @@ public: /* 800ACF80 */ void setSingleAnimeBase(daAlink_c::daAlink_ANM anmID); /* 800ACFB0 */ void setSingleAnimeBaseMorf(daAlink_c::daAlink_ANM anmID, f32); /* 800ACFE0 */ void setSingleAnimeBaseSpeed(daAlink_c::daAlink_ANM anmID, f32 speed, f32 morf); - /* 800AD00C */ void setSingleAnime(daAlink_c::daAlink_ANM anmID, f32 rate, f32 start, s16 endF, f32 morf); - /* 800AD0F4 */ void setSingleAnimeParam(daAlink_c::daAlink_ANM anmID, daAlinkHIO_anm_c const*); + /* 800AD00C */ int setSingleAnime(daAlink_c::daAlink_ANM anmID, f32 rate, f32 start, s16 endF, f32 morf); + /* 800AD0F4 */ int setSingleAnimeParam(daAlink_c::daAlink_ANM anmID, daAlinkHIO_anm_c const*); /* 800AD128 */ void animePlay(J3DAnmTransform*, daPy_frameCtrl_c*); /* 800AD170 */ void allAnimePlay(); /* 800AD2D8 */ void setUpperAnimeMorf(f32); @@ -930,13 +1316,13 @@ public: /* 800AD6F0 */ void setUpperAnimeParam(u16, daAlink_c::daAlink_UPPER, daAlinkHIO_anm_c const*); /* 800AD724 */ void resetUpperAnime(daAlink_c::daAlink_UPPER, f32); /* 800AD8F4 */ void setUnderAnimeMorf(f32); - /* 800AD964 */ void setUnderAnime(u16, daAlink_c::daAlink_UNDER, f32, f32, s16, f32); - /* 800ADAB8 */ void setUnderAnimeParam(u16, daAlink_c::daAlink_UNDER, daAlinkHIO_anm_c const*); + /* 800AD964 */ int setUnderAnime(u16, daAlink_c::daAlink_UNDER, f32, f32, s16, f32); + /* 800ADAB8 */ int setUnderAnimeParam(u16, daAlink_c::daAlink_UNDER, daAlinkHIO_anm_c const*); /* 800ADAEC */ void resetUnderAnime(daAlink_c::daAlink_UNDER, f32); /* 800ADB78 */ void setOldRootQuaternion(s16, s16, s16); - /* 800ADC50 */ void checkAtnLeftAnime(); - /* 800ADCEC */ void checkAtnRightAnime(); - /* 800ADD88 */ void getMoveGroundAngleSpeedRate(); + /* 800ADC50 */ BOOL checkAtnLeftAnime(); + /* 800ADCEC */ BOOL checkAtnRightAnime(); + /* 800ADD88 */ f32 getMoveGroundAngleSpeedRate(); /* 800ADE14 */ void setBlendMoveAnime(f32); /* 800AEA70 */ void setBlendAtnMoveAnime(f32); /* 800AF11C */ void setBlendAtnBackMoveAnime(f32); @@ -953,7 +1339,7 @@ public: /* 800AFC88 */ void resetFacePriTexture(); /* 800AFCBC */ void resetFacePriAnime(); /* 800AFCF0 */ void playFaceTextureAnime(); - /* 800B0098 */ void getGroundAngle(cBgS_PolyInfo*, s16); + /* 800B0098 */ s16 getGroundAngle(cBgS_PolyInfo*, s16); /* 800B0150 */ void getRoofAngle(cBgS_PolyInfo*, s16); /* 800B01FC */ void getWallEdgePos(cXyz const&, cM3dGPla*, cM3dGPla*, cXyz*, int); /* 800B02BC */ void setFrontWallType(); @@ -966,7 +1352,7 @@ public: /* 800B1B68 */ BOOL checkNotItemSinkLimit(); /* 800B1BAC */ void setSandShapeOffset(); /* 800B1FB8 */ bool checkLv2MiddleBossBgRide(s16); - /* 800B1FD8 */ void getSlidePolygon(cM3dGPla*); + /* 800B1FD8 */ bool getSlidePolygon(cM3dGPla*); /* 800B21EC */ BOOL checkSlope() const; /* 800B25CC */ BOOL itemTriggerCheck(u8); /* 800B25E8 */ BOOL itemButtonCheck(u8); @@ -999,15 +1385,15 @@ public: /* 800B3F2C */ void getStickAngleDistanceRate(); /* 800B3FD4 */ void setSpeedAndAngleNormal(); /* 800B444C */ void setSpeedAndAngleAtn(); - /* 800B477C */ void checkRequestTalkActor(dAttList_c*, fopAc_ac_c*); + /* 800B477C */ int checkRequestTalkActor(dAttList_c*, fopAc_ac_c*); /* 800B47B4 */ void checkServiceWaitMode(); /* 800B48D0 */ void setJumpMode(); /* 800B4908 */ f32 getMetamorphoseNearDis() const; /* 800B4918 */ f32 getMetamorphoseFarDis() const; /* 800B4928 */ s16 getMetamorphoseFarAngle() const; /* 800B4938 */ void setMidnaMsg(); - /* 800B4950 */ bool notTalk(); - /* 800B4A08 */ void setTalkStatus(); + /* 800B4950 */ BOOL notTalk(); + /* 800B4A08 */ BOOL setTalkStatus(); /* 800B4B2C */ f32 getFrontRollRate(); /* 800B4B7C */ void decideCommonDoStatus(); /* 800B5284 */ void decideDoStatus(); @@ -1017,7 +1403,7 @@ public: /* 800B5C64 */ void setStepLandVibration(); /* 800B5CCC */ void checkLandAction(int); /* 800B5F6C */ BOOL checkSlideAction(); - /* 800B607C */ void checkAutoJumpAction(); + /* 800B607C */ BOOL checkAutoJumpAction(); /* 800B69CC */ bool checkCutJumpInFly(); /* 800B6A30 */ BOOL checkFrontWallTypeAction(); /* 800B6F28 */ void checkItemActionInitStart(); @@ -1031,8 +1417,8 @@ public: /* 800B7528 */ void checkItemButtonChange(); /* 800B75EC */ void checkUpperItemAction(); /* 800B7B7C */ void orderPeep(); - /* 800B7BF8 */ void orderTalk(int); - /* 800B80C4 */ void orderZTalk(); + /* 800B7BF8 */ int orderTalk(int); + /* 800B80C4 */ int orderZTalk(); /* 800B8374 */ void checkNormalAction(); /* 800B8930 */ bool checkReadyItem(); /* 800B8988 */ void checkItemAction(); @@ -1043,7 +1429,7 @@ public: /* 800B92D0 */ void checkOneHandItemEquipAnime() const; /* 800B92F8 */ void checkItemEquipAnime() const; /* 800B9340 */ BOOL checkEquipAnime() const; - /* 800B9398 */ void checkWindDashAnime() const; + /* 800B9398 */ BOOL checkWindDashAnime() const; /* 800B93CC */ void checkSwordTwirlAnime() const; /* 800B93F4 */ void swordEquip(int); /* 800B9580 */ void swordUnequip(); @@ -1078,9 +1464,9 @@ public: /* 800BDF60 */ void startRestartRoom(u32, int, int, int); /* 800BE26C */ void checkCoachGuardGame(); /* 800BE2C0 */ void checkRoofRestart(); - /* 800BE3E4 */ void checkRestartRoom(); + /* 800BE3E4 */ bool checkRestartRoom(); /* 800BE9D4 */ s16 getSceneExitMoveAngle(); - /* 800BEAF8 */ int checkSceneChange(int); + /* 800BEAF8 */ int checkSceneChange(int i_exitID); /* 800BF0B8 */ void voiceStartLevel(u32); /* 800BF0EC */ void seStartSwordCut(u32); /* 800BF194 */ void seStartMapInfo(u32); @@ -1194,7 +1580,7 @@ public: /* 800C84D0 */ void procFloorDownRebound(); /* 800C854C */ void procGoronRideWaitInit(fopAc_ac_c*); /* 800C85D8 */ void procGoronRideWait(); - /* 800C8700 */ void execute(); + /* 800C8700 */ int execute(); /* 800CAFC8 */ void setDrawHand(); /* 800CB480 */ bool checkSwordDraw(); /* 800CB53C */ bool checkShieldDraw(); @@ -1229,9 +1615,9 @@ public: /* 800CFF4C */ BOOL checkAttentionLock(); /* 800D0020 */ BOOL checkFmChainGrabAnime() const; /* 800D0048 */ BOOL checkSmallUpperGuardAnime() const; - /* 800D00EC */ BOOL checkReinRide() const; + /* 800D00EC */ u32 checkReinRide() const; /* 800D0110 */ BOOL checkWolfEnemyThrowAnime() const; - /* 800D0138 */ u16 checkSpecialDemoMode() const; + /* 800D0138 */ int checkSpecialDemoMode() const; /* 800D014C */ void setMidnaTalkStatus(u8); /* 800D0164 */ void set3DStatus(u8, u8); /* 800D018C */ u32 checkModeFlg(u32) const; @@ -1244,7 +1630,7 @@ public: /* 800D0F90 */ void initCutTurnAt(f32, int); /* 800D102C */ bool checkCutFinishJumpUp(); /* 800D1088 */ void changeCutFast(); - /* 800D10E0 */ void checkCutFastReady(); + /* 800D10E0 */ bool checkCutFastReady(); /* 800D1268 */ void setSwordModel(); /* 800D1310 */ void offSwordModel(); /* 800D13AC */ BOOL checkCutTypeNoBlur() const; @@ -1325,20 +1711,20 @@ public: /* 800D6F2C */ void checkNoLandDamageSlidePolygon(); /* 800D6FE0 */ void checkCutLandDamage(); /* 800D70A0 */ void checkCaughtEscapeCutTurn(); - /* 800D7208 */ void damageMagnification(int, int); + /* 800D7208 */ f32 damageMagnification(int, int); /* 800D72BC */ void setDamagePoint(int, int, int, int); /* 800D7478 */ void setDamagePointNormal(int); /* 800D74A4 */ void setLandDamagePoint(int); /* 800D74F4 */ void getDamageVec(dCcD_GObjInf*); /* 800D76C4 */ void setDashDamage(); /* 800D7768 */ void checkIcePolygonDamage(cBgS_PolyInfo*); - /* 800D77C8 */ void checkMagicArmorNoDamage(); + /* 800D77C8 */ BOOL checkMagicArmorNoDamage(); /* 800D7820 */ void checkPolyDamage(); /* 800D7A98 */ void checkElecReturnDamage(dCcD_GObjInf&, fopAc_ac_c**); /* 800D7B18 */ void damageTimerCount(); /* 800D7BE8 */ void checkHugeAttack(int) const; /* 800D7C14 */ void checkLargeAttack(int) const; - /* 800D7C40 */ void checkDamageAction(); + /* 800D7C40 */ BOOL checkDamageAction(); /* 800D8F3C */ void procDamageInit(dCcD_GObjInf*, int); /* 800D9514 */ void procDamage(); /* 800D96DC */ void procCoLargeDamageInit(int, int, s16, s16, dCcD_GObjInf*, int); @@ -1368,7 +1754,7 @@ public: /* 800DC474 */ void procCoSwimFreezeReturn(); /* 800DC548 */ static BOOL checkEnemyGroup(fopAc_ac_c*); /* 800DC5A4 */ static BOOL checkSpecialNpc(fopAc_ac_c*); - /* 800DC5DC */ void checkShieldAttackEmphasys(); + /* 800DC5DC */ bool checkShieldAttackEmphasys(); /* 800DC678 */ BOOL checkGuardActionChange(); /* 800DC79C */ void stickArrowIncrement(int); /* 800DC8C4 */ void setArrowShieldActor(fopAc_ac_c*, int); @@ -1430,7 +1816,7 @@ public: /* 800E01CC */ void cancelBoomerangLock(fopAc_ac_c*); /* 800E0210 */ fopAc_ac_c* getBoomerangActor(); /* 800E0244 */ bool checkBoomerangChargeEnd(); - /* 800E02B8 */ void checkBoomerangCarry(fopAc_ac_c*); + /* 800E02B8 */ BOOL checkBoomerangCarry(fopAc_ac_c*); /* 800E03D0 */ void initBoomerangUpperAnimeSpeed(int); /* 800E0440 */ BOOL checkBoomerangAnime() const; /* 800E04AC */ BOOL checkBoomerangThrowAnime() const; @@ -1458,7 +1844,7 @@ public: /* 800E1374 */ fopAc_ac_c* getCopyRodControllActor(); /* 800E1390 */ fopAc_ac_c* getCopyRodCameraActor(); /* 800E13AC */ void initCopyRodUpperAnimeSpeed(int); - /* 800E1408 */ BOOL checkForestOldCentury(); + /* 800E1408 */ static BOOL checkForestOldCentury(); /* 800E1530 */ void checkCopyRodAnime() const; /* 800E158C */ void setCopyRodControllAnime(); /* 800E15FC */ void setCopyRodControllUpperSpeedRate(); @@ -1515,7 +1901,7 @@ public: /* 800E3D6C */ void checkGrabHeavyActor(); /* 800E3D94 */ void checkGrabSideActor(); /* 800E3DBC */ void setGrabUpperAnime(f32); - /* 800E3F20 */ void checkGrabRooster(); + /* 800E3F20 */ BOOL checkGrabRooster(); /* 800E3F50 */ void setGrabItemPos(); /* 800E4BD4 */ void freeGrabItem(); /* 800E4DEC */ void setGrabUpperSpeedRate(); @@ -1552,7 +1938,7 @@ public: /* 800E76E0 */ void procPickPut(); /* 800E7894 */ void checkSetChainPullAnime(s16); /* 800E794C */ s16 getChainStickAngleY(s16) const; - /* 800E7994 */ void checkChainEmphasys(); + /* 800E7994 */ u8 checkChainEmphasys(); /* 800E79F8 */ void searchFmChainPos(); /* 800E7AEC */ void setFmChainPosFromOut(fopAc_ac_c*, cXyz*, int); /* 800E7C30 */ void procFmChainUpInit(); @@ -1560,7 +1946,7 @@ public: /* 800E7DD8 */ void procFmChainStrongPullInit(); /* 800E7E50 */ void procFmChainStrongPull(); /* 800E7ED0 */ void setWallGrabStatus(u8, u8); - /* 800E7EE4 */ void getWallGrabStatus(); + /* 800E7EE4 */ int getWallGrabStatus(); /* 800E7EF4 */ void wallGrabTrigger(); /* 800E7F18 */ void wallGrabButton(); /* 800E7F3C */ void setPushPullKeepData(dBgW_Base::PushPullLabel, int); @@ -1712,7 +2098,7 @@ public: /* 800F3C44 */ void getCanoeMaxRotSpeed() const; /* 800F3CCC */ void getCanoeLocalPaddleTop(); /* 800F3CF8 */ void checkCanoeRideTandem(); - /* 800F3D58 */ void checkFishingRodAndLureItem() const; + /* 800F3D58 */ BOOL checkFishingRodAndLureItem() const; /* 800F3DA0 */ void initFishingRodHand(); /* 800F3DFC */ void getCanoePaddleMatrix(); /* 800F3E4C */ void checkFishingRodGrab(fopAc_ac_c*) const; @@ -1897,12 +2283,12 @@ public: /* 80101890 */ BOOL checkZoraWearMaskDraw(); /* 801018E4 */ void checkAcceptUseItemInWater(u16) const; /* 80101934 */ void swimDeleteItem(); - /* 801019B8 */ void getZoraSwim() const; + /* 801019B8 */ bool getZoraSwim() const; /* 80101A18 */ void getSwimFrontMaxSpeed() const; /* 80101AA8 */ void getSwimMaxFallSpeed() const; /* 80101B44 */ void checkOxygenTimer(); /* 80101C94 */ void offOxygenTimer(); - /* 80101CB8 */ void checkPossibleWaterInMode() const; + /* 80101CB8 */ bool checkPossibleWaterInMode() const; /* 80101CF4 */ void setWaterInAnmRate(daPy_frameCtrl_c*, f32); /* 80101D70 */ void swimBgCheck(f32); /* 801023E4 */ void setSpeedAndAngleSwim(); @@ -2047,7 +2433,7 @@ public: /* 801107BC */ void checkWaterInKandelaar(f32); /* 80110840 */ void offKandelaarModel(); /* 801108EC */ void kandelaarModelCallBack(); - /* 80110C6C */ void checkKandelaarEquipAnime() const; + /* 80110C6C */ BOOL checkKandelaarEquipAnime() const; /* 80110C94 */ void preKandelaarDraw(); /* 80110E84 */ void setKandelaarModel(); /* 80110F88 */ void resetOilBottleModel(); @@ -2096,7 +2482,7 @@ public: /* 80115AA0 */ void procIronBallReturn(); /* 80115C20 */ BOOL checkEventRun() const; /* 80115C50 */ void createNpcTks(cXyz*, int, u32); - /* 80115EC0 */ void checkDemoAction(); + /* 80115EC0 */ int checkDemoAction(); /* 80116E60 */ void checkDemoMoveMode(u32) const; /* 80116E9C */ void setDemoMoveData(u32*, cXyz const*); /* 80117064 */ void setNoDrawSwordShield(int, u16); @@ -2106,7 +2492,7 @@ public: /* 80117C90 */ void resetSpecialEvent(); /* 80117CF8 */ void endDemoMode(); /* 801180EC */ void getDemoLookActor(); - /* 80118170 */ void checkFlyAtnWait(); + /* 80118170 */ bool checkFlyAtnWait(); /* 801181A0 */ void setGetItemFace(u16); /* 801182D4 */ void checkGrabTalkActor(fopAc_ac_c*); /* 80118308 */ void setTalkStartBack(cXyz*); @@ -2119,16 +2505,16 @@ public: /* 801188B0 */ void setDemoLeftHandIndex(u16); /* 8011894C */ void setDemoRide(u16); /* 801189F8 */ void setDemoBodyBck(dDemo_actor_c*, u16); - /* 80118AD0 */ void checkFinalBattle(); - /* 80118B34 */ void checkRestartDead(int, int); + /* 80118AD0 */ BOOL checkFinalBattle(); + /* 80118B34 */ BOOL checkRestartDead(int, int); /* 80118BF4 */ void setDeadRideSyncPos(); /* 80118C98 */ BOOL checkDeadHP(); - /* 80118D7C */ void checkDeadAction(int); + /* 80118D7C */ BOOL checkDeadAction(int); /* 80118FF8 */ void setHighModelBck(mDoExt_bckAnm*, u16); /* 801190A4 */ void setHighModelFaceBtk(u16); /* 80119134 */ void setDemoBrk(J3DAnmTevRegKey**, J3DModel*, u16); /* 801191C4 */ void setStickAnmData(J3DAnmBase*, int, int, u16, int); - /* 801195C0 */ void procDemoCommon(); + /* 801195C0 */ int procDemoCommon(); /* 801195F8 */ void procCoToolDemoInit(); /* 801196D8 */ void procCoToolDemo(); /* 80119D98 */ void procCoTalkInit(); @@ -2179,7 +2565,7 @@ public: /* 8011D544 */ void procCoGetReadySitInit(); /* 8011D64C */ void procCoGetReadySit(); /* 8011D6D0 */ void procCoTwGateInit(); - /* 8011D7D4 */ void procCoTwGate(); + /* 8011D7D4 */ int procCoTwGate(); /* 8011D82C */ void procWolfSnowEscapeInit(); /* 8011D8F8 */ void procWolfSnowEscape(); /* 8011DB04 */ void procZoraMoveInit(); @@ -2199,7 +2585,7 @@ public: /* 8011E9F8 */ void procGanonFinishInit(); /* 8011EA78 */ bool procGanonFinish(); /* 8011EAE8 */ void procCutFastReadyInit(); - /* 8011EB8C */ void procCutFastReady(); + /* 8011EB8C */ int procCutFastReady(); /* 8011EBDC */ int procMasterSwordStickInit(); /* 8011EC60 */ int procMasterSwordStick(); /* 8011ED18 */ int procMasterSwordPullInit(); @@ -2697,7 +3083,7 @@ public: bool i_checkFmChainGrabAnime() const { return checkUpperAnime(0x62) || checkUpperAnime(0x2A0); } BOOL i_checkAttentionLock() { return mAttention->Lockon(); } - bool checkUpperAnime(u16 pIdx) const { return mUpperAnime[UPPER_NOW].getIdx() == pIdx; } + bool checkUpperAnime(u16 pIdx) const { return mUpperAnmHeap[UPPER_2].getIdx() == pIdx; } bool checkIronBallWaitAnime() const { return checkUpperAnime(0x19C); } bool checkHorseTurnLAnime() const { return checkUpperAnime(0x24C); } bool checkHorseTurnRAnime() const { return checkUpperAnime(0x24D); } @@ -2727,7 +3113,7 @@ public: return mEquipItem != 0x102 && checkBoomerangAnime(); } J3DAnmTransform* getNowAnmPackUpper(daAlink_UPPER param_0) { - return mNowAnmPack[param_0].getAnmTransform(); + return mNowAnmPackUpper[param_0].getAnmTransform(); } void setFacePriBck(u16 param_0) { setFaceBck(param_0, 1, 0xFFFF); } void cancelFmChainGrabFromOut() { @@ -2786,12 +3172,15 @@ public: bool checkResetRootMtx(int param_0) const { return field_0x2f90 != 0 && param_0 == 1; } + bool talkTrigger() const { return mItemTrigger & BTN_A; } + J3DAnmTransform* getNowAnmPackUnder(daAlink_UNDER i_idx) { return mNowAnmPackUnder[i_idx].getAnmTransform(); } + inline void startRestartRoomFromOut(int, u32, int); inline u16 getReadyItem(); - static u8 const m_mainBckShield[80]; - static u8 const m_mainBckSword[20]; - static u8 const m_mainBckFishing[112]; + static daAlink_BckData const m_mainBckShield[20]; + static daAlink_BckData const m_mainBckSword[5]; + static daAlink_BckData const m_mainBckFishing[28]; static daAlink_AnmData const m_anmDataTable[414]; static daAlink_WlAnmData const m_wlAnmDataTable[147]; static u8 const m_faceTexDataTable[652]; @@ -2830,7 +3219,7 @@ private: /* 0x00690 */ mDoExt_bckAnm* mpDemoFCTmpBck; /* 0x00694 */ J3DDeformData* mpDemoFCTmpBls; /* 0x00698 */ void* field_0x0698; - /* 0x0069C */ void* field_0x069c; + /* 0x0069C */ mDoExt_blkAnm* field_0x069c; /* 0x006A0 */ J3DModel* mpDemoHLTmpModel; /* 0x006A4 */ mDoExt_bckAnm* mpDemoHLTmpBck; /* 0x006A8 */ J3DModel* mpDemoHRTmpModel; @@ -2884,7 +3273,10 @@ private: /* 0x007A0 */ J3DModel* mpWlMidnaHatModel; /* 0x007A4 */ J3DModel* field_0x7a4; // related to wolf /* 0x007A8 */ J3DModel* mpWlMidnaHairModel; - /* 0x007AC */ u8 field_0x7ac[0x10]; + /* 0x007AC */ J3DAnmTevRegKey* field_0x7ac; + /* 0x007B0 */ J3DAnmTevRegKey* field_0x7b0; + /* 0x007B4 */ J3DAnmTevRegKey* field_0x7b4; + /* 0x007B8 */ J3DAnmTevRegKey* field_0x7b8; /* 0x007BC */ mDoExt_bckAnm* m_sWindowBck; /* 0x007C0 */ u32 mpWarpTexData; /* 0x007C4 */ daPy_actorKeep_c mWolfLockAcKeep[10]; @@ -2912,14 +3304,14 @@ private: /* 0x01E4C */ cBgS_PolyInfo mPolyInfo4; /* 0x01E5C */ dBgS_ObjLinChk mObjLinChk; /* 0x01ECC */ dBgS_ObjGndChk mObjGndChk; - /* 0x01F20 */ mDoExt_MtxCalcAnmBlendTblOld* field_0x1f20; + /* 0x01F20 */ mDoExt_MtxCalcAnmBlendTbl* field_0x1f20; /* 0x01F24 */ mDoExt_MtxCalcAnmBlendTblOld* field_0x1f24; - /* 0x01F28 */ mDoExt_AnmRatioPack field_0x1f28[3]; - /* 0x01F40 */ mDoExt_AnmRatioPack mNowAnmPack[3]; - /* 0x01F58 */ daPy_anmHeap_c mUnderAnime[3]; - /* 0x01F94 */ daPy_anmHeap_c mUpperAnime[3]; - /* 0x01FD0 */ daPy_frameCtrl_c mFrameCtrl1[3]; - /* 0x02018 */ daPy_frameCtrl_c mFrameCtrl2[3]; + /* 0x01F28 */ mDoExt_AnmRatioPack mNowAnmPackUnder[3]; + /* 0x01F40 */ mDoExt_AnmRatioPack mNowAnmPackUpper[3]; + /* 0x01F58 */ daPy_anmHeap_c mUnderAnmHeap[3]; + /* 0x01F94 */ daPy_anmHeap_c mUpperAnmHeap[3]; + /* 0x01FD0 */ daPy_frameCtrl_c mUnderFrameCtrl[3]; + /* 0x02018 */ daPy_frameCtrl_c mUpperFrameCtrl[3]; /* 0x02060 */ mDoExt_MtxCalcOldFrame* field_0x2060; /* 0x02064 */ daAlink_sight_c mSight; /* 0x020F0 */ daPy_anmHeap_c mAnmHeap3; @@ -2970,11 +3362,11 @@ private: /* 0x02A4C */ daAlink_footData_c mFootData2[2]; /* 0x02B94 */ f32* field_0x2b94; /* 0x02B98 */ f32 field_0x2b98; - /* 0x02B98 */ f32* field_0x2b9c; + /* 0x02B98 */ f32 field_0x2b9c; /* 0x02BA0 */ f32* field_0x2ba0; /* 0x02BA4 */ f32* field_0x2ba4; /* 0x02BA8 */ f32 mSinkShapeOffset; - /* 0x02BAC */ cXyz field_0x2bac; + /* 0x02BAC */ f32 field_0x2bac[3]; /* 0x02BB8 */ Mtx mInvMtx; /* 0x02BE8 */ Mtx field_0x2be8; /* 0x02C18 */ Mtx mRootMtx; @@ -3021,11 +3413,11 @@ private: /* 0x02FA2 */ u8 mActiveBombNum; /* 0x02FA3 */ u8 field_0x2fa3; /* 0x02FA4 */ u8 mRollCrashFlg; - /* 0x02FA5 */ u8 field_0x2fa5; + /* 0x02FA5 */ u8 mPolySound; /* 0x02FA6 */ u8 field_0x2fa6; /* 0x02FA7 */ u8 field_0x2fa7; /* 0x02FA8 */ u8 field_0x2fa8; - /* 0x02FA9 */ u8 field_0x2fa9; + /* 0x02FA9 */ u8 mWolfEyeUpTimer; /* 0x02FAA */ u8 mRideStatus; /* 0x02FAB */ u8 field_0x2fab; /* 0x02FAC */ u8 mExitDirection; @@ -3042,7 +3434,7 @@ private: /* 0x02FB7 */ u8 field_0x2fb7; /* 0x02FB8 */ u8 field_0x2fb8; /* 0x02FB9 */ u8 field_0x2fb9; - /* 0x02FBA */ u8 field_0x2fba; + /* 0x02FBA */ u8 mHotspringRecoverTimer; /* 0x02FBB */ u8 field_0x2fbb; /* 0x02FBC */ u8 field_0x2fbc; /* 0x02FBD */ u8 field_0x2fbd; @@ -3206,7 +3598,7 @@ private: /* 0x030FA */ s16 field_0x30fa; /* 0x030FC */ u16 field_0x30fc; /* 0x030FE */ u16 field_0x30fe; - /* 0x03100 */ u16 field_0x3100; + /* 0x03100 */ s16 field_0x3100; /* 0x03102 */ s16 field_0x3102; /* 0x03104 */ s16 field_0x3104; /* 0x03106 */ u16 field_0x3106; @@ -5596,17 +5988,17 @@ class daAlinkHIO_boom_c1 { public: /* 0x00 */ daAlinkHIO_anm_c mThrowAnm; /* 0x14 */ daAlinkHIO_anm_c mCatchAnm; - /* 0x28 */ s16 field_0x28; + /* 0x28 */ s16 field_0x28; // return time? /* 0x2A */ s16 mBgThroughTime; - /* 0x2C */ f32 field_0x2c; - /* 0x30 */ f32 field_0x30; - /* 0x34 */ f32 field_0x34; - /* 0x38 */ f32 field_0x38; - /* 0x3C */ f32 field_0x3c; - /* 0x40 */ f32 field_0x40; - /* 0x44 */ f32 field_0x44; + /* 0x2C */ f32 mIdleAnmSpeed; + /* 0x30 */ f32 mStartInterpolation; + /* 0x34 */ f32 mFlySpeed; + /* 0x38 */ f32 mFlySpeed2; // return speed? + /* 0x3C */ f32 mFlyDistMax; + /* 0x40 */ f32 mHorsebackFlyDistMax; + /* 0x44 */ f32 mLockDistMax; /* 0x48 */ f32 mCatchSpeed; -}; // Size: 0x4c +}; // Size: 0x4C class daAlinkHIO_boom_c0 { public: @@ -5802,16 +6194,26 @@ public: class mDoExt_morf_c; +typedef int (daMidna_c::*daMidna_func)(); class daMidna_c : public fopAc_ac_c { public: enum daMidna_ERFLG0 { - NO_SERVICE_WAIT = 128, - FORCE_PANIC = 8, + ERFLG0_NO_SERVICE_WAIT = 0x80, + ERFLG0_FORCE_PANIC = 8, }; - enum daMidna_FLG0 { NPC_NEAR = 0x100000, NPC_FAR = 0x40000, NO_DRAW = 0x2000 }; + enum daMidna_FLG0 { + FLG0_UNK_8000000 = 0x8000000, + FLG0_NPC_NEAR = 0x100000, + FLG0_NPC_FAR = 0x40000, + FLG0_NO_DRAW = 0x2000, + FLG0_UNK_200 = 0x200, + }; - enum daMidna_FLG1 { FORCE_NORMAL_COLOR = 8, FORCE_TIRED_COLOR = 4 }; + enum daMidna_FLG1 { + FLG1_FORCE_NORMAL_COL = 8, + FLG1_FORCE_TIRED_COL = 4, + }; enum daMidna_ANM {}; @@ -5873,9 +6275,14 @@ public: bool checkDemoTypeNone() const { return mDemoType == 0; } void changeOriginalDemo() { mDemoType = 3; } void changeDemoMode(u32 mode) { mDemoMode = mode; } - BOOL checkNpcNear() { return checkStateFlg0(NPC_NEAR); } - BOOL checkNpcFar() { return checkStateFlg0(NPC_FAR); } - BOOL checkNoDraw() const { return checkStateFlg0(NO_DRAW); } + BOOL checkNpcNear() { return checkStateFlg0(FLG0_NPC_NEAR); } + BOOL checkNpcFar() { return checkStateFlg0(FLG0_NPC_FAR); } + BOOL checkNoDraw() const { return checkStateFlg0(FLG0_NO_DRAW); } + int checkMetamorphoseEnable() { return (this->*mpFunc)(); } + + bool checkPortalObjRide() const { + return checkStateFlg0(FLG0_UNK_8000000) && checkStateFlg0(FLG0_UNK_200); + } inline bool checkMidnaRealBody(); @@ -5883,72 +6290,73 @@ public: static u8 const m_anmDataTable[636]; private: - /* 0x0568 */ request_of_phase_process_class* field_0x568; - /* 0x056C */ u8 field_0x56c[4]; + /* 0x0568 */ request_of_phase_process_class mPhase; /* 0x0570 */ J3DModel* field_0x570; /* 0x0574 */ J3DModel* field_0x574; - /* 0x0578 */ mDoExt_morf_c* field_0x578; + /* 0x0578 */ mDoExt_McaMorfSO* field_0x578; /* 0x057C */ mDoExt_McaMorfCallBack1_c* field_0x57c; /* 0x0580 */ cXyz* field_0x580; /* 0x0584 */ mDoExt_bckAnm field_0x584; /* 0x05A0 */ mDoExt_bckAnm field_0x5a0; - /* 0x05BC */ u8 field_0x5bc[8]; + /* 0x05BC */ J3DAnmTexPattern* field_0x5bc; + /* 0x05C0 */ J3DAnmTextureSRTKey* field_0x5c0; /* 0x05C4 */ mDoExt_invisibleModel field_0x5c4; - /* 0x05CC */ mDoExt_invisibleModel field_0x5cc; - /* 0x05D4 */ mDoExt_invisibleModel field_0x5d4; - /* 0x05DC */ mDoExt_invisibleModel field_0x5dc; + /* 0x05CC */ mDoExt_invisibleModel mInvMaskBmd; + /* 0x05D4 */ mDoExt_invisibleModel mInvHandsBmd; + /* 0x05DC */ mDoExt_invisibleModel mInvHairhandBmd; /* 0x05E4 */ daPy_anmHeap_c field_0x5e4[3]; /* 0x0620 */ daPy_anmHeap_c field_0x620; /* 0x0634 */ daPy_anmHeap_c field_0x634; - /* 0x0648 */ J3DAnmBase* field_0x648; - /* 0x064C */ J3DAnmBase* field_0x64c; - /* 0x0650 */ J3DAnmBase* field_0x650; - /* 0x0654 */ J3DAnmBase* field_0x654; - /* 0x0658 */ u8 field_0x658[0x10]; - /* 0x0668 */ J3DAnmBase* field_0x668; - /* 0x066C */ J3DAnmBase* field_0x66c; - /* 0x0670 */ u8 field_0x670[4]; - /* 0x0674 */ J3DModel* field_0x674; - /* 0x0678 */ u8 field_0x678[4]; - /* 0x067C */ J3DModel* field_0x67c; - /* 0x0680 */ u8 field_0x680[4]; - /* 0x0684 */ J3DModel* field_0x684; - /* 0x0688 */ J3DModel* field_0x688; - /* 0x068C */ J3DModel* field_0x68c; - /* 0x0690 */ J3DModel* field_0x690; - /* 0x0694 */ J3DModel* field_0x694; - /* 0x0698 */ J3DModel* field_0x698; - /* 0x069C */ u8 field_0x98c[0x10]; - /* 0x06AC */ J3DModel* field_0x6ac; - /* 0x06B0 */ J3DModel* field_0x6b0; - /* 0x06B4 */ u8 field_0x6b4[4]; - /* 0x06B8 */ mDoExt_bckAnm* field_0x6b8; - /* 0x06BC */ J3DDeformData* field_0x6bc; - /* 0x06C0 */ u8 field_0x6c0[4]; - /* 0x06C4 */ J3DFrameCtrl* field_0x6c4; - /* 0x06C8 */ J3DModel* field_0x6c8; - /* 0x06CC */ mDoExt_bckAnm* field_0x6cc; - /* 0x06D0 */ J3DModel* field_0x6d0; - /* 0x06D4 */ mDoExt_bckAnm* field_0x6d4; - /* 0x06D8 */ J3DModel* field_0x6d8; - /* 0x06DC */ mDoExt_bckAnm* field_0x6dc; - /* 0x06E0 */ s16 field_0x6e0; - /* 0x06E2 */ s16 field_0x6e2; - /* 0x06E4 */ s16 field_0x6e4; - /* 0x06E6 */ s16 field_0x6e6; - /* 0x06E8 */ u8 field_0x6e8; - /* 0x06E9 */ u8 field_0x6e9; - /* 0x06EA */ u8 field_0x6ea; - /* 0x06EB */ u8 field_0x6eb; + /* 0x0648 */ J3DAnmTextureSRTKey* field_0x648; + /* 0x064C */ J3DAnmTextureSRTKey* field_0x64c; + /* 0x0650 */ J3DAnmTextureSRTKey* field_0x650; + /* 0x0654 */ J3DAnmTextureSRTKey* field_0x654; + /* 0x0658 */ J3DAnmTevRegKey* field_0x658; + /* 0x065C */ J3DAnmTevRegKey* field_0x65c; + /* 0x0660 */ J3DAnmTevRegKey* field_0x660; + /* 0x0664 */ J3DAnmTevRegKey* field_0x664; + /* 0x0668 */ J3DAnmTevRegKey* field_0x668; + /* 0x066C */ J3DAnmTevRegKey* field_0x66c; + /* 0x0670 */ J3DModel* field_0x670; + /* 0x0674 */ J3DModel* mpMaskBmd; + /* 0x0678 */ J3DModel* field_0x678; + /* 0x067C */ J3DModel* mpHandsBmd; + /* 0x0680 */ J3DModel* field_0x680; + /* 0x0684 */ J3DModel* mpHairhandBmd; + /* 0x0688 */ J3DModel* mpDemoBDTmpBmd; + /* 0x068C */ J3DModel* mpDemoBDMaskBmd; + /* 0x0690 */ J3DModel* mpDemoBDHandsBmd; + /* 0x0694 */ J3DModel* mpDemoBDHairhandBmd; + /* 0x0698 */ J3DModel* mpGokouBmd; + /* 0x069C */ J3DShape* field_0x69c; + /* 0x06A0 */ J3DShape* field_0x6a0; + /* 0x06A4 */ J3DShape* field_0x6a4; + /* 0x06A8 */ J3DShape* field_0x6a8; + /* 0x06AC */ J3DModel* mpDemoFCBlendBmd; + /* 0x06B0 */ J3DModel* mpDemoFCTongueBmd; + /* 0x06B4 */ J3DAnmTextureSRTKey* field_0x6b4; + /* 0x06B8 */ mDoExt_bckAnm* mpDemoFCTmpBck; + /* 0x06BC */ J3DDeformData* mpDemoFCTmpBls; + /* 0x06C0 */ J3DAnmCluster* field_0x6c0; + /* 0x06C4 */ mDoExt_blkAnm* field_0x6c4; + /* 0x06C8 */ J3DModel* mpDemoHLTmpBmd; + /* 0x06CC */ mDoExt_bckAnm* mpDemoHLTmpBck; + /* 0x06D0 */ J3DModel* mpDemoHRTmpBmd; + /* 0x06D4 */ mDoExt_bckAnm* mpDemoHRTmpBck; + /* 0x06D8 */ J3DModel* mpDemoHDTmpBmd; + /* 0x06DC */ mDoExt_bckAnm* mpDemoHDTmpBck; + /* 0x06E0 */ J3DGXColorS10 field_0x6e0; + /* 0x06E8 */ J3DGXColor field_0x6e8; /* 0x06EC */ u8 field_0x6ec; /* 0x06ED */ u8 field_0x6ed; /* 0x06EE */ u8 field_0x6ee; /* 0x06EF */ u8 field_0x6ef; - /* 0x06F0 */ u8 field_0x6f0[8]; + /* 0x06F0 */ void* field_0x6f0; + /* 0x06F4 */ void* field_0x6f4; /* 0x06F8 */ void* field_0x6f8; /* 0x06FC */ Z2Creature field_0x6fc; - /* 0x078C */ dMsgFlow_c field_0x78c; - /* 0x07D8 */ dBgS_LinkLinChk field_0x7d8; + /* 0x078C */ dMsgFlow_c mMsgFlow; + /* 0x07D8 */ dBgS_LinkLinChk mLinChk; /* 0x0848 */ u8 mMotionNum; /* 0x0849 */ u8 mFaceNum; /* 0x084A */ u8 field_0x84a[4]; @@ -5958,7 +6366,8 @@ private: /* 0x085A */ s16 field_0x85a; /* 0x085C */ u8 field_0x85c[0x22]; /* 0x087E */ s16 field_0x87e; - /* 0x0880 */ u8 field_0x880[0x10]; + /* 0x0880 */ u8 field_0x880[0xC]; + /* 0x088C */ int mStaffID; /* 0x0890 */ u32 mStateFlg0; /* 0x0894 */ u32 mStateFlg1; /* 0x0898 */ u32 mEndResetStateFlg0; @@ -5973,9 +6382,11 @@ private: /* 0x0964 */ cXyz field_0x964[5]; /* 0x09A0 */ u8 field_0x9a0[0x14]; /* 0x09C4 */ cXyz field_0x9c4; + /* 0x09D0 */ u8 field_0x9d0[4]; + /* 0x09D4 */ daMidna_func mpFunc; }; -static void* daAlink_searchPortal(fopAc_ac_c* param_0, void* param_1); +static fopAc_ac_c* daAlink_searchPortal(fopAc_ac_c* param_0, void* param_1); static void* daAlink_searchCanoe(fopAc_ac_c* param_0, void* param_1); static void* daAlink_searchBoar(fopAc_ac_c* param_0, void* param_1); static fopAc_ac_c* daAlink_searchLightBall(fopAc_ac_c* p_actor, void* param_1); diff --git a/include/d/a/d_a_npc.h b/include/d/a/d_a_npc.h index 082622f526..6c3bdb6bbd 100644 --- a/include/d/a/d_a_npc.h +++ b/include/d/a/d_a_npc.h @@ -2,9 +2,41 @@ #define D_A_D_A_NPC_H #include "d/com/d_com_inf_game.h" +#include "d/d_path.h" +#include "d/msg/d_msg_object.h" #include "dolphin/types.h" #include "global.h" +struct dPnt {}; + +class daNpcT_ActorMngr_c { +private: + /* 0x0 */ u32 mActorID; + +public: + /* 801456D4 */ void initialize(); + /* 801456E0 */ void entry(fopAc_ac_c*); + /* 801456FC */ void remove(); + /* 80145708 */ fopAc_ac_c* getActorP(); + + /* 8014D108 */ virtual ~daNpcT_ActorMngr_c(); +}; + +class daNpcT_MatAnm_c : public J3DMaterialAnm { +private: + /* 0x0F4 */ mutable f32 field_0xF4; + /* 0x0F8 */ mutable f32 field_0xF8; + /* 0x0FC */ f32 mTranslationX; + /* 0x100 */ f32 mTranslationY; + /* 0x104 */u8 field_0x104; + /* 0x105 */u8 field_0x105; + +public: + /* 80145764 */ void initialize(); + /* 80145788 */ virtual void calc(J3DMaterial*) const; + /* 8014D24C */ ~daNpcT_MatAnm_c(); +}; + class daNpcT_MotionSeqMngr_c { public: class sequenceStepData_c { @@ -34,19 +66,6 @@ public: /* 8014D0C0 */ virtual ~daNpcT_MotionSeqMngr_c(); }; -class daNpcT_ActorMngr_c { -private: - /* 0x0 */ u32 mActorID; - -public: - /* 801456D4 */ void initialize(); - /* 801456E0 */ void entry(fopAc_ac_c*); - /* 801456FC */ void remove(); - /* 80145708 */ fopAc_ac_c* getActorP(); - - /* 8014D108 */ virtual ~daNpcT_ActorMngr_c(); -}; - class daNpcT_JntAnm_c { private: /* 0x000 */ daNpcT_ActorMngr_c mActrMngr; @@ -95,7 +114,8 @@ public: private: /* 0x00 */ csXyz field_0x0[2]; - /* 0x0C */ f32 field_0xc[2]; + /* 0x0C */ f32 field_0xc; + /* 0x0C */ f32 field_0x10; /* 0x14 */ s16 mStagger; /* 0x16 */ s16 field_0x16; /* 0x18 */ u8 mRebirth; @@ -111,6 +131,59 @@ struct daNpcT_motionAnmData_c { u8 data[8]; }; +class daNpcT_Hermite_c { +public: + /* 8014CBAC */ ~daNpcT_Hermite_c(); + + /* 0x00 */ f32 field_0x00; + /* 0x04 */ cXyz mPosition; + /* 0x10 */ f32 field_0x10; +}; + +class daNpcT_Path_c { +private: + /* 0x00 */ dPath* mpRoomPath; + /* 0x04 */ cXyz mPosition; + /* 0x10 */ f32 field_0x10; + /* 0x14 */ f32 field_0x14; + /* 0x18 */ f32 field_0x18; + /* 0x1C */ u16 mIdx; + /* 0x1E */ u16 field_0x1E; + /* 0x20 */ u8 mDirection; + /* 0x21 */ u8 mIsClosed; + +public: + /* 80145B7C */ void hermite(cXyz&, cXyz&, cXyz&, cXyz&, daNpcT_Hermite_c&, cXyz&); + /* 80145C40 */ void initialize(); + /* 80145C74 */ int setPathInfo(u8, s8, u8); + /* 80145D2C */ int setNextPathInfo(s8, u8); + /* 80145DA0 */ void reverse(); + /* 80145DD0 */ int setNextIdx(int); + /* 80145E38 */ int getDstPos(cXyz, cXyz*, int); + /* 80145FB4 */ int getDstPosH(cXyz, cXyz*, int, int); + /* 80146188 */ int chkPassed1(cXyz, int); + /* 801464D8 */ int chkPassed2(cXyz, cXyz*, int, int); + + inline cXyz* getPntPos(u16 i_idx) { + u16 tmpidx = i_idx; + + dStage_dPnt_c* tmppnt = &mpRoomPath->m_points[tmpidx]; + return &tmppnt->m_position; + } + + inline int chkClose() { + int roomPath = dPath_ChkClose(mpRoomPath); + return roomPath; + } + + u16& getNumPnts() { + dPath* path = mpRoomPath; + return path->m_num; + } + + inline u16& getIdx() { return mIdx; } +}; + class mDoExt_McaMorfSO; class daNpcT_c : public fopAc_ac_c { @@ -162,7 +235,7 @@ public: /* 0xD90 */ u32 field_0xd90; /* 0xD94 */ u32 field_0xd94; /* 0xD98 */ u32 field_0xd98; - /* 0xD9C */ u32 field_0xd9c; + /* 0xD9C */ profile_method_class* mSubMtd; /* 0xDA0 */ u8 field_0xda0[8]; /* 0xDA8 */ u32 field_0xda8; /* 0xDAC */ int field_0xdac; @@ -174,9 +247,9 @@ public: /* 0xDC4 */ u8 field_0xdc4[4]; /* 0xDC8 */ s16 field_0xdc8; /* 0xDCA */ s16 field_0xdca; - /* 0xDCC */ u8 field_0xdcc[8]; + /* 0xDCC */ u8 field_0xdcc[10]; /* 0xDD4 */ s16 field_0xdd4; - /* 0xDD8 */ s16 field_0xdd8; + /* 0xDD8 */ s16 mStepNo; /* 0xDDA */ s16 field_0xdda; /* 0xDDC */ f32 field_0xddc; /* 0xDE0 */ f32 field_0xde0; @@ -235,13 +308,13 @@ public: /* 8014886C */ int draw(int, int, f32, _GXColorS10*, f32, int, int, int); /* 80148C70 */ void setEnvTevColor(); /* 80148CCC */ void setRoomNo(); - /* 80148D10 */ void checkEndAnm(f32); + /* 80148D10 */ int checkEndAnm(f32); /* 80148DD0 */ void checkEndAnm(J3DFrameCtrl*, f32); /* 80148E4C */ void playAllAnm(); /* 80149190 */ void setMtx(); /* 8014924C */ void ctrlFaceMotion(); /* 80149300 */ void ctrlMotion(); - /* 801493B8 */ void ctrlMsgAnm(int*, int*, fopAc_ac_c*, int); + /* 801493B8 */ int ctrlMsgAnm(int*, int*, fopAc_ac_c*, int); /* 8014A224 */ void evtChange(); /* 8014A388 */ void setFaceMotionAnm(int, bool); /* 8014A908 */ void setPos(cXyz); @@ -261,11 +334,11 @@ public: /* 8014B648 */ void step(s16, int, int, int, int); /* 8014B808 */ void calcSpeedAndAngle(cXyz, int, s16, s16); /* 8014BB00 */ void getActorDistance(fopAc_ac_c*, int, int); - /* 8014BBF0 */ void initTalk(int, fopAc_ac_c**); + /* 8014BBF0 */ int initTalk(int, fopAc_ac_c**); /* 8014BC78 */ void talkProc(int*, int, fopAc_ac_c**, int); /* 8014BE2C */ void getNearestActorP(s16); /* 8014BEE4 */ void getEvtAreaTagP(int, int); - /* 8014BFB0 */ void getShopItemTagP(); + /* 8014BFB0 */ u32 getShopItemTagP(); /* 8014C030 */ void setHitodamaPrtcl(); /* 8014CD20 */ virtual ~daNpcT_c(); @@ -316,7 +389,13 @@ public: /* 8014CCE8 */ virtual void changeBtk(int*, int*); /* 8014A628 */ virtual void setMotionAnm(int, f32, int); - bool checkHide() { return !field_0xe25 && (!dComIfGs_wolfeye_effect_check() && field_0xa89); } + inline bool checkHide() { + return field_0xe25 || (!dComIfGs_wolfeye_effect_check() && field_0xa89); + } + + inline s16 checkStep() { + return mStepNo == 1; + } static u8 const mCcDObjData[48]; static u8 mCcDCyl[68]; @@ -337,7 +416,7 @@ public: /* 801506D8 */ void entry(unsigned int); /* 801506BC */ void entry(fopAc_ac_c*); /* 801506E0 */ void remove(); - /* 801506EC */ void getActorP(); + /* 801506EC */ fopAc_ac_c* getActorP(); /* 80155E40 */ virtual ~daNpcF_ActorMngr_c(); }; @@ -431,7 +510,7 @@ private: /* 0x9F4 */ u8 field_0x9f4; /* 0x9F5 */ u8 field_0x9f5; /* 0x9F6 */ u8 field_0x9f6; - /* 0x9F8 */ dMsgFlow_c field_0x9f8; + /* 0x9F8 */ dMsgFlow_c mFlow; /* 0xA44 */ cBgS_GndChk field_0xa44; /* 0xA80 */ dBgS_GndChk field_0xa80; /* 0xAD4 */ dBgS_LinChk field_0xad4; @@ -443,7 +522,7 @@ public: /* 801522AC */ void draw(int, int, f32, _GXColorS10*, int); /* 80152614 */ void tgHitCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*); /* 80152654 */ void srchAttnActor1(void*, void*); - /* 801526E8 */ void srchActor(void*, void*); + /* 801526E8 */ void* srchActor(void*, void*); /* 801528C8 */ void initialize(); /* 80152B2C */ void getTrnsfrmKeyAnmP(char*, int); @@ -471,19 +550,19 @@ public: /* 801539F0 */ void chkActorInSight(fopAc_ac_c*, f32); /* 80153A78 */ void chkActorInArea(fopAc_ac_c*, cXyz, cXyz, s16); /* 80153BDC */ void chkActorInAttnArea(fopAc_ac_c*, fopAc_ac_c*, int); - /* 80153D1C */ void initTalk(int, fopAc_ac_c**); + /* 80153D1C */ int initTalk(int, fopAc_ac_c**); /* 80153D84 */ void talkProc(int*, int, fopAc_ac_c**); /* 80153EF4 */ void turn(s16, f32, int); /* 801540A4 */ void step(s16, int, int, int); /* 80154250 */ void setAngle(s16); /* 80154278 */ void getDistTableIdx(int, int); - /* 801542A0 */ void getEvtAreaTagP(int, int); + /* 801542A0 */ int getEvtAreaTagP(int, int); /* 8015436C */ void getAttnActorP(int, void* (*)(void*, void*), f32, f32, f32, f32, s16, int, int); /* 80154730 */ void chkActorInSight2(fopAc_ac_c*, f32, s16); - /* 80154834 */ void chkPointInArea(cXyz, cXyz, f32, f32, f32, s16); - /* 801548F4 */ void chkPointInArea(cXyz, cXyz, cXyz, s16); - /* 8015496C */ void getAttentionPos(fopAc_ac_c*); + /* 80154834 */ bool chkPointInArea(cXyz, cXyz, f32, f32, f32, s16); + /* 801548F4 */ bool chkPointInArea(cXyz, cXyz, cXyz, s16); + /* 8015496C */ cXyz getAttentionPos(fopAc_ac_c*); /* 801549E0 */ void chkFindPlayer2(int, s16); /* 80154BD8 */ void setHitodamaPrtcl(); @@ -508,13 +587,281 @@ public: static u8 mCcDCyl[68]; static u8 mCcDSph[64]; static u8 mFindActorPList[400]; - static u8 mFindCount[4]; - static u8 mSrchActorName[2 + 2 /* padding */]; + static s32 mFindCount; + static s16 mSrchActorName; }; STATIC_ASSERT(sizeof(daNpcF_c) == 0xB48); -void daNpcF_getPlayerInfoFromPlayerList(int param_0, int param_1, cXyz& param_2, +int daNpcF_getPlayerInfoFromPlayerList(int param_0, int i_roomNo, cXyz& param_2, csXyz& param_3); +struct daBaseNpc_matAnm_c { + /* 8014D884 */ void calc(J3DMaterial*) const; + /* 80150444 */ ~daBaseNpc_matAnm_c(); +}; + +class daBaseNpc_acMngr_c { +private: + /* 0x00 */ u8 field_0x00[4]; + /* 0x04 */ u32 mActorId; +public: + /* 8014D804 */ daBaseNpc_acMngr_c(); + /* 8014D81C */ void entry(fopAc_ac_c*); + /* 8014D838 */ fopAc_ac_c* getActor(); + /* 80150524 */ ~daBaseNpc_acMngr_c(); +}; + +class daBaseNpc_path_c { +private: + /* 0x000 */ f32 field_0x0; + /* 0x004 */ dPath* mpRoomPath; + /* 0x008 */ f32 field_0x8; + /* 0x00C */ dPath* field_0xc; + /* 0x010 */ u8 field_0x10[2558]; + /* 0xA0E */ u16 field_0xa0e; + /* 0xA10 */ u16 mIdx; + /* 0xA12 */ s8 mDirection; + /* 0xA13 */ u8 field_0xa13[17]; + +public: + /* 8014D998 */ daBaseNpc_path_c(); + /* 8014D9A8 */ BOOL isPath(); + /* 8014D9BC */ int setPathInfo(u8, s8, s8); + /* 8014DA48 */ void reverseDir(); + /* 8014DA64 */ void chkPnt(cXyz); + /* 8014DAC4 */ void setNextPnt(); + /* 8014DB04 */ u16 getIdx(); + /* 8014DB0C */ void setIdx(u16); + /* 8014DB14 */ void getPntPos(u16); + /* 801503FC */ ~daBaseNpc_path_c(); + + +}; + +class daBaseNpc_lookat_c { +private: + /* 0x00 */ int field_0x00; + /* 0x04 */ csXyz mMaxJntLmt[2]; + /* 0x10 */ u8 field_0x0A[12]; + /* 0x1C */ csXyz mMinJntLmt[2]; + /* 0x28 */ u8 field_0x28[12]; + /* 0x34 */ cXyz mJntPos[3]; + /* 0x4C */ u8 field_0x4C[24]; + /* 0x64 */ csXyz mUnk[2]; + /* 0x70 */ u8 field_0x70[12]; + /* 0x7C */ csXyz mUnk2[2]; + /* 0x88 */ u8 field_0x88[4]; + /* 0x8C */ cXyz* mpAttnPos; + +public: + /* 8014DB40 */ void limitter(s16, s16*, s16, s16); + /* 8014DBB4 */ void calc(fopAc_ac_c*, f32 (*)[4], s16); + /* 8014E634 */ void setMaxJntLmt(csXyz, int); + /* 8014E658 */ void setMinJntLmt(csXyz, int); + /* 8014E67C */ void setJntPos(cXyz, int); + /* 8014E6A0 */ int setAttnPos(cXyz*); + /* 8014E6AC */ void getRot(int); + /* 801502EC */ ~daBaseNpc_lookat_c(); +}; + +class daBaseNpc_c : public fopAc_ac_c { +private: + /* 0x568 */ void* vtable; + /* 0x56C */ dBgS_Acch field_0x56c; + /* 0x744 */ u8 field_0x744[16]; + /* 0x754 */ mDoExt_McaMorfSO* mMcaMorfAnm[2]; + /* 0x758 */ Z2Creature mCreature; + /* 0x7EC */ mDoExt_bckAnm mBckAnm; + /* 0x808 */ mDoExt_btpAnm mBtpAnm; + /* 0x820 */ u8 tmp2[28]; + /* 0x83c */ u16* field_0x83c; + /* 0x840 */ u16 field_0x840; + /* 0x842 */ u8 field_0x842[6]; + /* 0x848 */ s32 mUnk; + /* 0x84C */ dMsgFlow_c mMsg; + /* 0x898 */ u8 field_0x898[2]; + /* 0x89A */ s16 mEvtIdx; + /* 0x89C */ u8 field_0x89C[34]; + /* 0x8BE */ u8 mRoomId; + /* 0x8C0 */ u8 field_0x8C0[90]; + /* 0x91A */ csXyz field_0x91a; + /* 0x920 */ csXyz field_0xd7e; + /* 0x926 */ csXyz field_0xd84; + /* 0x92C */ csXyz field_0xd8a; + /* 0x932 */ csXyz field_0x932; + /* 0x938 */ u8 field_0x938[4]; + /* 0x93C */ csXyz field_0x93c; + /* 0x940 */ u8 field_0x940[18]; + /* 0x954 */ cXyz field_0x954; + /* 0x960 */ u8 field_0x960[36]; + /* 0x984 */ csXyz field_0x984; + /* 0x98A */ u8 field_0x98A[18]; + /* 0x99C */ csXyz field_0x99c; + /* 0x9A2 */ u8 field_0x9a2[70]; + /* 0x9E8 */ const cBgS_PolyInfo mBgSPolyInfo; + /* 0x9F9 */ u8 field_0x9f9[27]; + +public: + /* 8014E6C8 */ daBaseNpc_c(); + /* 8014E89C */ ~daBaseNpc_c(); + /* 8014EAD0 */ void execute(); + /* 8014EC50 */ void draw(f32); + /* 8014EE3C */ bool getResName(); + /* 8014EE44 */ J3DAnmTransform* getTrnsfrmKeyAnmP(char*, int); + /* 8014EE80 */ void setMcaMorfAnm(J3DAnmTransformKey*, f32, f32, int, int, int); + /* 8014EEE4 */ void setBckAnm(J3DAnmTransform*, f32, int, int, int, bool); + /* 8014EF28 */ J3DAnmTransform* getTexPtrnAnmP(char*, int); + /* 8014EF64 */ void setBtpAnm(J3DAnmTexPattern*, J3DModelData*, f32, int); + /* 8014EFA4 */ void attnSttsOn(int, int); + /* 8014EFF0 */ void setParam(); + /* 8014EFF4 */ void orderEvent(int, char*); + /* 8014F09C */ void mainProc(); + /* 8014F0A0 */ void setEnvTevColor(); + /* 8014F0FC */ void setRoomNo(); + /* 8014F140 */ bool btkCtrl(); + /* 8014F148 */ int checkEndAnm(f32); + /* 8014F1C8 */ int checkEndAnm(J3DFrameCtrl*); + /* 8014F228 */ void allAnmPlay(); + /* 8014F38C */ void adjustShapeAngle(); + /* 8014F390 */ void setMtx(int); + /* 8014F4A0 */ void setCollisions(); + /* 8014F4A4 */ void setAttnPos(); + /* 8014F4A8 */ void drawOtherMdls(); + /* 8014F4AC */ bool dbgDraw(); + + void setVtable(void* table) { vtable = table;} + + static u8 const mCcDObj[48]; + static u8 mCcDCyl[68]; + static u8 mCcDSph[64]; +}; + +class daBaseNpc_moveBgActor_c : public daBaseNpc_c { +private: + /* 0xA14 */ u32 field_0xa14; + + +public: + /* 8014F4B4 */ daBaseNpc_moveBgActor_c(); + /* 8014F518 */ void MoveBGCreateHeap(); + /* 8014F60C */ void + MoveBGCreate(char const*, int, + void (*)(dBgW*, void*, cBgS_PolyInfo const&, bool, cXyz*, csXyz*, csXyz*), u32); + /* 8014F6FC */ void MoveBGDelete(); + /* 8014F770 */ void MoveBGExecute(); + /* 801503BC */ bool CreateHeap(); + /* 801503C4 */ bool Create(); + /* 801503CC */ bool Delete(); + /* 801503D4 */ bool Execute(f32 (**)[3][4]); + /* 801503DC */ bool Draw(); + /* 801503E4 */ bool IsDelete(); + /* 801503EC */ bool ToFore(); + /* 801503F4 */ bool ToBack(); + /* 80155FB0 */ ~daBaseNpc_moveBgActor_c(); + + static u8 m_name[4]; + static u8 m_dzb_id[4]; + static u8 m_set_func[4]; +}; + +class daNpcF_MatAnm_c { +private: + /* 0x000 */ J3DMaterialAnm mMaterialAnm; + /* 0x0F4 */ mutable f32 field_0xF4; + /* 0x0F8 */ mutable f32 field_0xF8; + /* 0x0FC */ f32 mTranslationX; + /* 0x100 */ f32 mTranslationY; + /* 0x104 */ u8 field_0x104; + /* 0x105 */ u8 field_0x105; + +public: + /* 80150738 */ void initialize(); + /* 8015075C */ void calc(J3DMaterial*) const; + /* 80155ED0 */ ~daNpcF_MatAnm_c(); +}; + +class daNpcF_SPCurve_c { +private: + /* 0x00 */ u16 mNurbs; + /* 0x02 */ u16 field_0x02; + /* 0x04 */ u8 field_0x04; + /* 0x05 */ bool mIsClosed; + // /* 0x08 */ dPnt mPoints[96]; + + +public: + /* 80150870 */ void initialize(dPath*, int); +}; + +class daNpcF_Path_c { +private: + /* 0x00 */ u16 mIdx; + /* 0x02 */ u8 field_0x02; + /* 0x03 */ u8 mIsClosed; + /* 0x04 */ dPath* mpRoomPath; + /* 0x08 */ f32 field_0x08; + /* 0x0C */ f32 field_0x0C; + /* 0x10 */ f32 field_0x10; + /* 0x14 */ cXyz mPosition; + /* 0x20 */ daNpcF_SPCurve_c mSPCurve; + +public: + /* 80150900 */ void initialize(); + /* 8015095C */ int setPathInfo(u8, s8, u8); + /* 80150A24 */ int chkPassed(cXyz); + /* 80150A7C */ void chkPassedDst(cXyz); + /* 80150BBC */ void reverse(); + /* 80150BE0 */ int setNextIdx(); + /* 80150C18 */ u16 getNextIdx(); + /* 80150C60 */ u16 getBeforeIdx(); + /* 80150CA8 */ void getBeforePos(cXyz&); + /* 80150D44 */ void getNextPos(cXyz&); + /* 80150DE0 */ int getDstPos(cXyz, cXyz&); + /* 80150EB4 */ void setNextIdxDst(cXyz); + + inline u16& getIdx() { return mIdx; }; + inline cXyz* getPntPos(); // finish +}; + +class daNpcF_MoveBgActor_c { +private: + +public: + /* 80155B54 */ ~daNpcF_MoveBgActor_c(); + /* 80155E88 */ bool CreateHeap(); + /* 80155E90 */ bool Create(); + /* 80155E98 */ bool Delete(); + /* 80155EA0 */ bool Execute(f32 (**)[3][4]); + /* 80155EA8 */ bool Draw(); + /* 80155EB0 */ bool IsDelete(); + /* 80155EB8 */ bool ToFore(); + /* 80155EC0 */ bool ToBack(); +}; + +class daNpcF_Lookat_c { +private: + /* 0x00 */ cXyz field_0x00[4]; + /* 0x30 */ int field_0x30; + /* 0x34 */ csXyz field_0x34[4]; + /* 0x4C */ csXyz field_0x4c[4]; + /* 0x64 */ csXyz field_0x64[4]; + /* 0x7C */ csXyz mRotAngle[4]; + /* 0x94 */ u8 field_0x94[4]; + /* 0x98 */ void* vtable; + +public: + /* 80151038 */ void initialize(); + /* 801510B8 */ void setParam(f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, s16, + cXyz*); + /* 80151350 */ void calc(fopAc_ac_c*, f32 (*)[4], csXyz**, int, int, int); + /* 801515D4 */ void adjustMoveDisAngle(s16&, s16, s16, s16); + /* 80151648 */ void initCalc(fopAc_ac_c*, f32 (*)[4], cXyz*, csXyz*, f32*, cXyz&, int); + /* 80151A54 */ void update(cXyz*, csXyz*, f32*); + /* 80151B68 */ void calcMoveDisAngle(int, cXyz*, csXyz*, cXyz, int, int); + /* 80151F54 */ void setRotAngle(); + /* 80151FE0 */ void clrRotAngle(); +}; + + #endif /* D_A_D_A_NPC_H */ diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h index 1e5e9c7604..76faa71246 100644 --- a/include/d/a/d_a_player.h +++ b/include/d/a/d_a_player.h @@ -34,12 +34,15 @@ private: class daPy_boomerangMove_c { public: /* 8015E5B0 */ void initOffset(cXyz const*); - /* 8015E654 */ void posMove(cXyz*, s16*, fopAc_ac_c*, s16); + /* 8015E654 */ int posMove(cXyz*, s16*, fopAc_ac_c*, s16); /* 8015E87C */ void bgCheckAfterOffset(cXyz const*); + static s16 m_dropAngleY; + static s16 m_eventKeepFlg; + private: /* 0x0 */ u8 field_0x0; - /* 0x2 */ u16 field_0x2; + /* 0x2 */ s16 field_0x2; /* 0x4 */ f32 field_0x4; /* 0x8 */ f32 field_0x8; }; // Size: 0xC @@ -75,6 +78,7 @@ public: void setBufferSize(u32 size) { mBufferSize = size; } void setBuffer(u8* buf) { mBuffer = buf; } u8* getBuffer() { return mBuffer; } + bool checkNoSetIdx() const { return mIdx == 0xFFFF; } private: /* 0x00 */ u16 mIdx; @@ -195,69 +199,118 @@ public: public: enum daPy_FLG0 { FLG0_UNK_40000000 = 0x40000000, - EQUIP_HEAVY_BOOTS = 0x2000000, - PLAYER_NO_DRAW = 0x8000000, + FLG0_EQUIP_HVY_BOOTS = 0x2000000, + FLG0_PLAYER_NO_DRAW = 0x8000000, + FLG0_UNK_10000000 = 0x10000000, FLG0_UNK_1000000 = 0x1000000, - UNDER_WATER_MOVEMENT = 0x800000, + FLG0_UNDERWATER = 0x800000, + FLG0_UNK_100000 = 0x100000, FLG0_UNK_80000 = 0x80000, FLG0_UNK_20000 = 0x20000, FLG0_UNK_8000 = 0x8000, FLG0_UNK_4000 = 0x4000, - MAGNE_BOOTS_ON = 0x1000, + FLG0_UNK_2000 = 0x2000, + FLG0_MAGNE_BOOTS_ON = 0x1000, + FLG0_UNK_100 = 0x100, FLG0_UNK_80 = 0x80, FLG0_UNK_40 = 0x40, FLG0_UNK_20 = 0x20, - UNK_F_ROLL_CRASH_2 = 0x10, - UNK_F_ROLL_CRASH_1 = 0x8, - MIDNA_RIDE = 4, + FLG0_UNK_10 = 0x10, + FLG0_UNK_8 = 0x8, + FLG0_MIDNA_RIDE = 4, + FLG0_UNK_2 = 2, - HEAVY_STATE_BOOTS = FLG0_UNK_40000000 | EQUIP_HEAVY_BOOTS | FLG0_UNK_20000, + FLG0_HVY_STATE = FLG0_UNK_40000000 | FLG0_EQUIP_HVY_BOOTS | FLG0_UNK_20000, }; - enum daPy_FLG1 { IS_WOLF = 0x2000000, FLG1_UNK_10000 = 0x10000, THROW_DAMAGE = 0x4000, FLG1_UNK_4 = 4, }; + + enum daPy_FLG1 { + FLG1_UNK_10000000 = 0x10000000, + FLG1_IS_WOLF = 0x2000000, + FLG1_UNK_400000 = 0x400000, + FLG1_UNK_10000 = 0x10000, + FLG1_THROW_DAMAGE = 0x4000, + FLG1_UNK_20 = 0x20, + FLG1_UNK_10 = 0x10, + FLG1_UNK_4 = 4, + FLG1_UNK_2 = 2, + }; + enum daPy_FLG2 { FLG2_UNK_20000000 = 0x20000000, FLG2_UNK_4080000 = 0x4080000, FLG2_UNK_2080000 = 0x2080000, - BOAR_SINGLE_BATTLE = 0x1800000, - STATUS_WINDOW_DRAW = 0x400000, + FLG2_BOAR_SINGLE_BATTLE = 0x1800000, + FLG2_UNK_1000000 = 0x1000000, + FLG2_UNK_800000 = 0x800000, + FLG2_STATUS_WINDOW_DRAW = 0x400000, FLG2_UNK_280000 = 0x280000, - UNK_ARMOR = 0x80000, - SCENE_CHANGE_START = 0x8000, + FLG2_UNK_200000 = 0x200000, + FLG2_UNK_80000 = 0x80000, + FLG2_UNK_40000 = 0x40000, + FLG2_UNK_20000 = 0x20000, + FLG2_SCN_CHG_START = 0x8000, FLG2_UNK_4000 = 0x4000, - UNK_FLG2_2 = 2, - UNK_DAPY_FLG2_1 = 1 + FLG2_UNK_80 = 0x80, + FLG2_UNK_40 = 0x40, + FLG2_UNK_10 = 0x10, + FLG2_UNK_8 = 8, + FLG2_UNK_2 = 2, + FLG2_UNK_1 = 1, + + FLG2_UNK_58 = FLG2_UNK_40 | FLG2_UNK_10 | FLG2_UNK_8, }; + enum daPy_FLG3 { + FLG3_UNK_40000000 = 0x40000000, FLG3_UNK_2000000 = 0x2000000, FLG3_UNK_1000000 = 0x1000000, FLG3_UNK_100000 = 0x100000, - COPY_ROD_THROW_AFTER = 0x40000 + FLG3_UNK_80000 = 0x80000, + FLG3_COPY_ROD_THROW_AFTER = 0x40000, + FLG3_UNK_4000 = 0x4000, }; + enum daPy_ERFLG0 { ERFLG0_UNK_8000000 = 0x8000000, + ERFLG0_UNK_2000000 = 0x2000000, ERFLG0_UNK_1000000 = 0x1000000, ERFLG0_UNK_800000 = 0x800000, + ERFLG0_UNK_400000 = 0x400000, + ERFLG0_UNK_200000 = 0x200000, ERFLG0_UNK_100000 = 0x100000, + ERFLG0_UNK_2000 = 0x2000, ERFLG0_UNK_400 = 0x400, + ERFLG0_UNK_100 = 0x100, ERFLG0_UNK_4 = 4, ERFLG0_UNK_2 = 2, ERFLG0_UNK_1 = 1, }; + enum daPy_ERFLG1 { - GANON_FINISH = 0x80000000, - UNK_FORCE_PUT_POS = 0x2000, + ERFLG1_GANON_FINISH = 0x80000000, + ERFLG1_UNK_10000000 = 0x10000000, + ERFLG1_UNK_4000000 = 0x4000000, + ERFLG1_UNK_40000 = 0x40000, + ERFLG1_UNK_2000 = 0x2000, + ERFLG1_UNK_200 = 0x200, + ERFLG1_UNK_4 = 4, ERFLG1_UNK_2 = 2, ERFLG1_UNK_1 = 1, }; + enum daPy_ERFLG2 { ERFLG2_UNK_100 = 0x100, + ERFLG2_UNK_20 = 0x20, }; + enum daPy_RFLG0 { RFLG0_UNK_8000000 = 0x8000000, RFLG0_UNK_4000 = 0x4000, - ENEMY_ATTENTION_LOCK = 0x1000, + RFLG0_ENEMY_ATTN_LOCK = 0x1000, + RFLG0_UNK_400 = 0x400, RFLG0_UNK_80 = 0x80, RFLG0_UNK_40 = 0x40, + RFLG0_UNK_10 = 0x10, RFLG0_UNK_2 = 0x2, }; @@ -307,8 +360,8 @@ public: static BOOL checkTradeItem(int); static BOOL checkDungeonWarpItem(int); static BOOL checkMasterSwordEquip(); - void checkWoodShieldEquip(); - f32 getAttentionOffsetY(); + bool checkWoodShieldEquip(); + static f32 getAttentionOffsetY(); s16 checkNowWolfEyeUp(); static void forceRestartRoom(int, u32, int); static void setFmChainPos(fopAc_ac_c*, cXyz*, int); @@ -321,7 +374,7 @@ public: static u32 checkCarryStartLightBallA(); static u32 checkCarryStartLightBallB(); float getSpinnerRideSpeed() const; - void checkSpinnerReflectEffect(); + bool checkSpinnerReflectEffect(); static bool checkBoomerangCharge(); bool checkBoomerangChargeTime(); static daBoomerang_c* getThrowBoomerangActor(); @@ -329,10 +382,10 @@ public: static void setPlayerDamage(int, int); static void setMidnaMotionNum(int); static void setMidnaFaceNum(int); - int checkNoResetFlg0(daPy_FLG0) const; - int checkEquipHeavyBoots() const; - int checkBoarSingleBattle() const; - int checkEndResetFlg0(daPy_ERFLG0) const; + u32 checkNoResetFlg0(daPy_FLG0) const; + u32 checkEquipHeavyBoots() const; + u32 checkBoarSingleBattle() const; + u32 checkEndResetFlg0(daPy_ERFLG0) const; void onNoResetFlg2(daPy_py_c::daPy_FLG2); void offNoResetFlg0(daPy_py_c::daPy_FLG0); int checkEndResetFlg2(daPy_py_c::daPy_ERFLG2) const; @@ -340,14 +393,14 @@ public: int checkNoResetFlg3(daPy_py_c::daPy_FLG3) const; BOOL checkShieldGet(); void onNoResetFlg0(daPy_py_c::daPy_FLG0); - int checkEndResetFlg1(daPy_py_c::daPy_ERFLG1) const; + u32 checkEndResetFlg1(daPy_py_c::daPy_ERFLG1) const; void offNoResetFlg1(daPy_py_c::daPy_FLG1); void offNoResetFlg2(daPy_py_c::daPy_FLG2); - int checkWolf() const; + u32 checkWolf() const; BOOL checkSwordGet(); - int checkResetFlg0(daPy_py_c::daPy_RFLG0) const; - int checkNoResetFlg2(daPy_py_c::daPy_FLG2) const; - int checkMagneBootsOn() const; + u32 checkResetFlg0(daPy_py_c::daPy_RFLG0) const; + u32 checkNoResetFlg2(daPy_py_c::daPy_FLG2) const; + u32 checkMagneBootsOn() const; void changeDemoPos0(cXyz const*); void changeDemoMode(u32, int, int, s16); void changeDemoParam2(s16); @@ -363,6 +416,7 @@ public: /* 80182B9C */ void getRightHandPos() const; /* 8015DFD8 */ const cXyz getItemPos() const; /* 8015DFF4 */ const cXyz& getLeftHandPos() const; + /* 800977B4 */ bool checkMidnaRide() const; /* const cXyz* getItemPos() const { return &mItemPos; @@ -551,15 +605,15 @@ public: bool i_getSumouMode() const { return getSumouCameraMode(); } - bool checkStatusWindowDraw() { return i_checkNoResetFlg2(STATUS_WINDOW_DRAW); } + bool checkStatusWindowDraw() { return i_checkNoResetFlg2(FLG2_STATUS_WINDOW_DRAW); } bool checkCargoCarry() const { return mSpecialMode == SMODE_CARGO_CARRY; } - bool getHeavyStateAndBoots() { return i_checkNoResetFlg0(HEAVY_STATE_BOOTS); } - bool checkEnemyAttentionLock() const { return i_checkResetFlg0(ENEMY_ATTENTION_LOCK); } + bool getHeavyStateAndBoots() { return i_checkNoResetFlg0(FLG0_HVY_STATE); } + bool checkEnemyAttentionLock() const { return i_checkResetFlg0(RFLG0_ENEMY_ATTN_LOCK); } bool checkCanoeSlider() const { return mSpecialMode == 0x2D; } u8 getCutType() const { return mCutType; } u16 getSwordAtUpTime() const { return mSwordUpTimer; } - bool checkWaterInMove() const { return i_checkNoResetFlg0(UNDER_WATER_MOVEMENT); } - bool checkSceneChangeAreaStart() const { return i_checkNoResetFlg2(SCENE_CHANGE_START); } + bool checkWaterInMove() const { return i_checkNoResetFlg0(FLG0_UNDERWATER); } + bool checkSceneChangeAreaStart() const { return i_checkNoResetFlg2(FLG2_SCN_CHG_START); } // some functions use these function as an inline // is there a better way to handle this? @@ -567,28 +621,36 @@ public: int i_checkNoResetFlg1(daPy_FLG1 pFlag) const { return mNoResetFlg1 & pFlag; } int i_checkNoResetFlg2(daPy_FLG2 pFlag) const { return mNoResetFlg2 & pFlag; } int i_checkNoResetFlg3(daPy_FLG3 pFlag) const { return mNoResetFlg3 & pFlag; } + void i_onNoResetFlg0(int pFlg) { mNoResetFlg0 |= pFlg; } void i_onNoResetFlg1(int pFlg) { mNoResetFlg1 |= pFlg; } void i_onNoResetFlg2(int pFlg) { mNoResetFlg2 |= pFlg; } void i_onNoResetFlg3(int pFlg) { mNoResetFlg3 |= pFlg; } + void i_offNoResetFlg0(int pFlg) { mNoResetFlg0 &= ~pFlg; } void i_offNoResetFlg2(int pFlg) { mNoResetFlg2 &= ~pFlg; } void i_offNoResetFlg3(int pFlg) { mNoResetFlg3 &= ~pFlg; } + void i_offResetFlg0(int flag) { mResetFlg0 &= ~flag; } void i_onResetFlg0(int flag) { mResetFlg0 |= flag; } void i_onResetFlg1(int flag) { mResetFlg1 |= flag; } + void i_onEndResetFlg0(int flag) { mEndResetFlg0 |= flag; } void i_onEndResetFlg2(int flag) { mEndResetFlg2 |= flag; } + int i_checkResetFlg0(daPy_py_c::daPy_RFLG0 flag) const { return mResetFlg0 & flag; } + int i_checkEndResetFlg0(daPy_py_c::daPy_ERFLG0 flag) const { return mEndResetFlg0 & flag; } int i_checkEndResetFlg1(daPy_py_c::daPy_ERFLG1 flag) const { return mEndResetFlg1 & flag; } + void i_onEndResetFlg1(daPy_ERFLG1 pFlg) { mEndResetFlg1 |= pFlg; } - u32 i_checkWolf() const { return i_checkNoResetFlg1(IS_WOLF); } - BOOL i_checkEquipHeavyBoots() const { return i_checkNoResetFlg0(EQUIP_HEAVY_BOOTS); } - BOOL i_checkMagneBootsOn() const { return i_checkNoResetFlg0(MAGNE_BOOTS_ON); } - bool i_checkMidnaRide() const { return i_checkNoResetFlg0(MIDNA_RIDE); } - void i_onPlayerNoDraw() { i_onNoResetFlg0(PLAYER_NO_DRAW); } - void i_offPlayerNoDraw() { i_offNoResetFlg0(PLAYER_NO_DRAW); } + + u32 i_checkWolf() const { return i_checkNoResetFlg1(FLG1_IS_WOLF); } + BOOL i_checkEquipHeavyBoots() const { return i_checkNoResetFlg0(FLG0_EQUIP_HVY_BOOTS); } + BOOL i_checkMagneBootsOn() const { return i_checkNoResetFlg0(FLG0_MAGNE_BOOTS_ON); } + bool i_checkMidnaRide() const { return i_checkNoResetFlg0(FLG0_MIDNA_RIDE); } + void i_onPlayerNoDraw() { i_onNoResetFlg0(FLG0_PLAYER_NO_DRAW); } + void i_offPlayerNoDraw() { i_offNoResetFlg0(FLG0_PLAYER_NO_DRAW); } inline static u32 i_getLastSceneMode(); inline static u32 getLastSceneMode(); diff --git a/include/d/bg/d_bg_pc.h b/include/d/bg/d_bg_pc.h index b1f91e96c2..260c530ad2 100644 --- a/include/d/bg/d_bg_pc.h +++ b/include/d/bg/d_bg_pc.h @@ -11,10 +11,57 @@ struct sBgPc { /* 0x10 */ u32 code4; }; // Size: 0x14 +enum dBgPc_ECode { + /* 0x00004000 */ CODE_OBJ_THRU = 0x4000, + /* 0x00008000 */ CODE_CAM_THRU = 0x8000, + /* 0x00010000 */ CODE_LINK_THRU = 0x10000, + /* 0x00020000 */ CODE_ARROW_THRU = 0x20000, + /* 0x00040000 */ CODE_HS_STICK = 0x40000, + /* 0x00080000 */ CODE_BOOMERANG_THRU = 0x80000, + /* 0x00100000 */ CODE_ROPE_THRU = 0x100000, + /* 0x00200000 */ CODE_HORSE_NO_ENTRY = 0x200000, + /* 0x00400000 */ CODE_SHDW_THRU = 0x400000, + /* 0x00800000 */ CODE_BOMB_THRU = 0x800000, + /* 0x01000000 */ CODE_IRON_BALL_THRU = 0x1000000, + /* 0x02000000 */ CODE_ATTACK_THRU = 0x2000000, + /* 0x40000000 */ CODE_UNDERWATER_ROOF = 0x40000000, +}; + class dBgPc { public: void setCode(sBgPc&); + u32 getHorseNoEntry() const { return m_code.code0 >> 0x15 & 1; } + u32 getSpl() const { return m_code.code0 >> 0x18 & 0xF; } + u32 getMagnet() const { return m_code.code0 >> 0x1C & 0x3; } + u32 getMonkeyBars() const { return m_code.code0 >> 0x1F; } + u32 getWallCode() const { return m_code.code1 >> 0x8 & 0xF; } + u32 getAtt0Code() const { return m_code.code1 >> 0xC & 0xF; } + u32 getAtt1Code() const { return m_code.code1 >> 0x10 & 0x7; } + u32 getGroundCode() const { return m_code.code1 >> 0x13 & 0x1F; } + u32 getObjThrough() const { return m_code.code0 & CODE_OBJ_THRU; } + u32 getCamThrough() const { return m_code.code0 & CODE_CAM_THRU; } + u32 getLinkThrough() const { return m_code.code0 & CODE_LINK_THRU; } + u32 getArrowThrough() const { return m_code.code0 & CODE_ARROW_THRU; } + u32 getHSStick() const { return m_code.code0 & CODE_HS_STICK; } + u32 getBoomerangThrough() const { return m_code.code0 & CODE_BOOMERANG_THRU; } + u32 getRopeThrough() const { return m_code.code0 & CODE_ROPE_THRU; } + u32 getBombThrough() const { return m_code.code0 & CODE_BOMB_THRU; } + u32 getIronBallThrough() const { return m_code.code1 & CODE_IRON_BALL_THRU; } + u32 getShdwThrough() const { return m_code.code0 & CODE_SHDW_THRU; } + u32 getUnderwaterRoof() const { return m_code.code0 & CODE_UNDERWATER_ROOF; } + u32 getAttackThrough() const { return m_code.code1 & CODE_ATTACK_THRU; } + u8 getRoom() const { return m_code.code4 >> 0x14; } + u8 getExit() const { return m_code.code0 & 0x3F; } + u8 getPolyCol() const { return m_code.code0 >> 6; } + u8 getLinkNo() const { return m_code.code1; } + u8 getCamMoveBG() const { return m_code.code2; } + u8 getRoomCam() const { return m_code.code2 >> 8; } + u8 getRoomPath() const { return m_code.code2 >> 0x10; } + u8 getRoomPathPnt() const { return m_code.code2 >> 0x18; } + u8 getRoomInf() const { return m_code.code4; } + u8 getSnd() const { return m_code.code4 >> 0xB; } + private: /* 0x0 */ sBgPc m_code; }; diff --git a/include/d/bg/d_bg_plc.h b/include/d/bg/d_bg_plc.h index ed0c55085f..fde627bb51 100644 --- a/include/d/bg/d_bg_plc.h +++ b/include/d/bg/d_bg_plc.h @@ -12,7 +12,7 @@ struct PLC { /* 0x0 */ u32 magic; /* 0x4 */ u16 m_code_size; /* 0x6 */ u16 m_num; - // ... + /* 0x8 */ sBgPc* field_0x8; }; class dBgPlc { @@ -21,7 +21,7 @@ public: /* 80074080 */ ~dBgPlc(); /* 800740BC */ void setBase(void*); /* 800740C4 */ void getCode(int, sBgPc**) const; - /* 800740DC */ void getGrpCode(int) const; + /* 800740DC */ u32 getGrpCode(int) const; private: /* 0x00 */ void* m_base; diff --git a/include/d/bg/d_bg_s.h b/include/d/bg/d_bg_s.h index f07fbc2ff5..7c53bf3373 100644 --- a/include/d/bg/d_bg_s.h +++ b/include/d/bg/d_bg_s.h @@ -78,7 +78,7 @@ public: int GetSpecialCode(cBgS_PolyInfo const&); int GetMagnetCode(cBgS_PolyInfo const&); int GetMonkeyBarsCode(cBgS_PolyInfo const&); - int GetUnderwaterRoofCode(cBgS_PolyInfo const&); + u32 GetUnderwaterRoofCode(cBgS_PolyInfo const&); s32 GetWallCode(cBgS_PolyInfo const&); int GetPolyAtt0(cBgS_PolyInfo const&); int GetPolyAtt1(cBgS_PolyInfo const&); @@ -87,7 +87,7 @@ public: s32 GetRoomCamId(cBgS_PolyInfo const&); s32 GetRoomPathId(cBgS_PolyInfo const&); s32 GetRoomPathPntNo(cBgS_PolyInfo const&); - s32 GetGrpSoundId(cBgS_PolyInfo const&); + u8 GetGrpSoundId(cBgS_PolyInfo const&); u32 ChkGrpInf(cBgS_PolyInfo const&, u32); s32 GetRoomId(cBgS_PolyInfo const&); bool GetPolyAttackThrough(cBgS_PolyInfo const&); diff --git a/include/d/bg/d_bg_s_acch.h b/include/d/bg/d_bg_s_acch.h index 0754ceb3ec..dce3637027 100644 --- a/include/d/bg/d_bg_s_acch.h +++ b/include/d/bg/d_bg_s_acch.h @@ -47,7 +47,7 @@ public: bool ChkWallHit() { return m_flags & WALL_HIT; } void SetCir(cXyz& pos) { m_cir.Set(pos.x, pos.z, pos.y + GetWallH(), m_wall_r); } -}; +}; // Size: 0x40 class dBgS; class dBgS_Acch : public cBgS_Chk, public dBgS_Chk { @@ -149,6 +149,7 @@ public: void SetGrndNone() { m_flags |= GRND_NONE; } void ClrGrndNone() { m_flags &= ~GRND_NONE; } bool ChkMoveBGOnly() const { return m_flags & MOVE_BG_ONLY; } + void SetWallHit() { m_flags |= WALL_HIT; } // inline dupe void i_ClrGroundHit() { m_flags &= ~GROUND_HIT; } diff --git a/include/d/bg/d_bg_s_poly_pass_chk.h b/include/d/bg/d_bg_s_poly_pass_chk.h index c5aff507f4..5eedc5e3e2 100644 --- a/include/d/bg/d_bg_s_poly_pass_chk.h +++ b/include/d/bg/d_bg_s_poly_pass_chk.h @@ -47,17 +47,17 @@ public: void SetUnderwaterRoof(); private: - bool mObject; - bool mCamera; - bool mLink; - bool mArrow; - bool mBomb; - bool mBoomerang; - bool mRope; - bool mUnderwaterRoof; - bool mHorse; - bool mStatue; - bool mIronBall; + /* 0x4 */ bool mObject; + /* 0x5 */ bool mCamera; + /* 0x6 */ bool mLink; + /* 0x7 */ bool mArrow; + /* 0x8 */ bool mBomb; + /* 0x9 */ bool mBoomerang; + /* 0xA */ bool mRope; + /* 0xB */ bool mUnderwaterRoof; + /* 0xC */ bool mHorse; + /* 0xD */ bool mStatue; + /* 0xE */ bool mIronBall; }; #endif /* D_BG_D_BG_S_POLY_PASS_CHK_H */ diff --git a/include/d/bg/d_bg_w.h b/include/d/bg/d_bg_w.h index 7872f4a5af..a2eb1be880 100644 --- a/include/d/bg/d_bg_w.h +++ b/include/d/bg/d_bg_w.h @@ -15,22 +15,23 @@ struct dBgS_CaptPoly {}; -class cBgW_TriElm : public cM3dGPla { +class cBgW_TriElm { public: - /* 80079754 */ cBgW_TriElm(); + /* 0x00 */ cM3dGPla m_plane; + /* 80079754 */ cBgW_TriElm(); /* 800796F8 */ virtual ~cBgW_TriElm(); -}; + + /* 0x14 vtable */ +}; // Size: 0x18 class cBgW_RwgElm { -private: - /* 0x0 */ u8 field_0x0[4]; - public: - /* 800791C4 */ cBgW_RwgElm(); + /* 0x0 */ u16 field_0x0; + /* 800791C4 */ cBgW_RwgElm(); /* 800791D4 */ virtual ~cBgW_RwgElm(); -}; +}; // Size: 0x8 class cBgW_NodeTree : public cM3dGAab { public: @@ -39,22 +40,81 @@ public: /* 80079238 */ virtual ~cBgW_NodeTree(); }; -class cBgW_GrpElm : public cM3dGAab { +class cBgW_GrpElm { public: /* 8007A1E4 */ cBgW_GrpElm(); /* 8007A184 */ virtual ~cBgW_GrpElm(); + + /* 0x4 */ cM3dGAab m_aab; }; -struct cBgD_t {}; +struct cBgW_unk_b_data { + /* 0x0 */ u16 field_0x0; + /* 0x2 */ u16 field_0x2; + /* 0x4 */ u16 field_0x4; +}; // Size: 0x6 + +struct dzb_tri_data { + /* 0x0 */ u16 field_0x0; + /* 0x2 */ u16 field_0x2; + /* 0x4 */ u16 field_0x4; + /* 0x6 */ u16 m_id; + /* 0x8 */ u16 m_grp; +}; // Size: 0xA + +struct dzb_ti_data { + /* 0x0 */ u32 m_info0; + /* 0x4 */ u32 m_info1; + /* 0x8 */ u32 m_info2; + /* 0xC */ u8 field_0xc[0x10 - 0xC]; +}; + +struct dzb_b_data { + /* 0x0 */ u16 field_0x0; +}; + +struct dzb_tree_data { + /* 0x0 */ u16 field_0x0; + /* 0x2 */ u16 field_0x2; + /* 0x4 */ u16 m_id[1]; + /* 0x6 */ u8 field_0x6[0x14 - 0x6]; +}; // Size: 0x14 + +struct dzb_g_data { + /* 0x00 */ u8 field_0x0[0x24 - 0x0]; + /* 0x24 */ u16 field_0x24; + /* 0x26 */ u8 field_0x26[0x28 - 0x26]; + /* 0x28 */ u16 field_0x28; + /* 0x2A */ u16 field_0x2a; + /* 0x2C */ u8 field_0x2c[0x2E - 0x2C]; + /* 0x2E */ u16 field_0x2e; + /* 0x30 */ u32 m_info; +}; // Size: 0x34 + +struct cBgD_t { + /* 0x00 */ int m_v_num; // vertex num + /* 0x04 */ Vec* m_v_tbl; // vertex table + /* 0x08 */ int m_t_num; // triangle num + /* 0x0C */ dzb_tri_data* m_t_tbl; // triangle table + /* 0x10 */ int m_b_num; // spatial? + /* 0x14 */ dzb_b_data* m_b_tbl; + /* 0x18 */ int m_tree_num; // face group? + /* 0x1C */ dzb_tree_data* m_tree_tbl; + /* 0x20 */ int m_g_num; // string group? + /* 0x24 */ dzb_g_data* m_g_tbl; + /* 0x28 */ int m_ti_num; // surface property? + /* 0x2C */ dzb_ti_data* m_ti_tbl; + /* 0x30 */ int field_0x30; +}; class cBgW : public dBgW_Base { public: /* 80079294 */ cBgW(); /* 800793A4 */ void FreeArea(); /* 800793C4 */ void GlobalVtx(); - /* 80079484 */ void SetVtx(); - /* 80079668 */ void SetTri(); + /* 80079484 */ bool SetVtx(); + /* 80079668 */ bool SetTri(); /* 80079770 */ void BlckConnect(u16*, int*, int); /* 8007998C */ void MakeBlckTransMinMax(cXyz*, cXyz*); /* 800799E0 */ void MakeBlckMinMax(int, cXyz*, cXyz*); @@ -63,37 +123,37 @@ public: /* 80079CC4 */ void MakeNodeTreeGrpRp(int); /* 80079DF0 */ void MakeNodeTree(); /* 80079F38 */ bool Set(cBgD_t*, u32, f32 (*)[3][4]); - /* 8007A200 */ void RwgLineCheck(u16, cBgS_LinChk*); - /* 8007A3A0 */ void LineCheckRp(cBgS_LinChk*, int); - /* 8007A52C */ void LineCheckGrpRp(cBgS_LinChk*, int, int); + /* 8007A200 */ bool RwgLineCheck(u16, cBgS_LinChk*); + /* 8007A3A0 */ bool LineCheckRp(cBgS_LinChk*, int); + /* 8007A52C */ bool LineCheckGrpRp(cBgS_LinChk*, int, int); /* 8007A680 */ void RwgGroundCheckCommon(f32, u16, cBgS_GndChk*); /* 8007A774 */ void RwgGroundCheckGnd(u16, cBgS_GndChk*); /* 8007A824 */ void RwgGroundCheckWall(u16, cBgS_GndChk*); /* 8007A8F4 */ void GroundCrossRp(cBgS_GndChk*, int); - /* 8007AA50 */ void GroundCrossGrpRp(cBgS_GndChk*, int, int); + /* 8007AA50 */ bool GroundCrossGrpRp(cBgS_GndChk*, int, int); /* 8007ABC4 */ void CopyOldMtx(); /* 8007AC10 */ void Move(); /* 8007ADF0 */ void RwgShdwDraw(int, cBgS_ShdwDraw*); /* 8007AEA4 */ void ShdwDrawRp(cBgS_ShdwDraw*, int); /* 8007AFC0 */ void ShdwDrawGrpRp(cBgS_ShdwDraw*, int); /* 8007B17C */ void GetTrans(cXyz*) const; - /* 8007B2F4 */ void GetPolyInfId(int) const; - /* 8007B30C */ void GetPolyInf0(int, u32, u32) const; - /* 8007B360 */ void GetMaskPolyInf0_NoShift(int, u32) const; - /* 8007B654 */ void GetPolyInf1(int, u32, u32) const; - /* 8007B78C */ void GetMaskPolyInf1_NoShift(int, u32) const; - /* 8007B824 */ void GetPolyInf2(int, u32, u32) const; - /* 8007B930 */ void GetTriGrp(int) const; + /* 8007B2F4 */ int GetPolyInfId(int) const; + /* 8007B30C */ u32 GetPolyInf0(int, u32, u32) const; + /* 8007B360 */ u32 GetMaskPolyInf0_NoShift(int, u32) const; + /* 8007B654 */ u32 GetPolyInf1(int, u32, u32) const; + /* 8007B78C */ u32 GetMaskPolyInf1_NoShift(int, u32) const; + /* 8007B824 */ u32 GetPolyInf2(int, u32, u32) const; + /* 8007B930 */ int GetTriGrp(int) const; /* 8007933C */ virtual ~cBgW(); - /* 80079EEC */ virtual void ChkMemoryError(); + /* 80079EEC */ virtual bool ChkMemoryError(); /* 8007B948 */ virtual bool ChkNotReady() const; /* 8007B958 */ virtual bool ChkLock() const; /* 8007B964 */ virtual bool ChkMoveBg() const; virtual u32 ChkMoveFlag() const = 0; /* 8007B270 */ virtual cM3dGPla GetTriPla(cBgS_PolyInfo const&) const; /* 8007B1B4 */ virtual bool GetTriPnt(cBgS_PolyInfo const&, cXyz*, cXyz*, cXyz*) const; - /* 8007B164 */ virtual void GetBnd() const; + /* 8007B164 */ virtual cM3dGAab* GetBnd() const; /* 8007B2B0 */ virtual u32 GetGrpInf(cBgS_PolyInfo const&) const; virtual void OffMoveFlag() = 0; /* 8007B240 */ virtual void GetTopUnder(f32*, f32*) const; @@ -101,7 +161,7 @@ public: /* 8007AB9C */ virtual bool GroundCross(cBgS_GndChk*); /* 8007B084 */ virtual void ShdwDraw(cBgS_ShdwDraw*); virtual void CaptPoly(dBgS_CaptPoly&) = 0; - virtual void WallCorrect(dBgS_Acch*) = 0; + virtual bool WallCorrect(dBgS_Acch*) = 0; virtual void WallCorrectSort(dBgS_Acch*) = 0; virtual bool RoofChk(dBgS_RoofChk*) = 0; virtual bool SplGrpChk(dBgS_SplGrpChk*) = 0; @@ -113,40 +173,43 @@ public: virtual int GetSpecialCode(cBgS_PolyInfo const&) = 0; virtual int GetSpecialCode(int) = 0; virtual int GetMagnetCode(cBgS_PolyInfo const&) = 0; - virtual void GetPolyObjThrough(int) = 0; - virtual void GetPolyCamThrough(int) = 0; - virtual void GetPolyLinkThrough(int) = 0; - virtual void GetPolyArrowThrough(int) = 0; + virtual u32 GetPolyObjThrough(int) = 0; + virtual u32 GetPolyCamThrough(int) = 0; + virtual u32 GetPolyLinkThrough(int) = 0; + virtual u32 GetPolyArrowThrough(int) = 0; virtual u32 GetPolyHSStick(int) = 0; - virtual void GetPolyBoomerangThrough(int) = 0; - virtual void GetPolyRopeThrough(int) = 0; - virtual void GetPolyBombThrough(int) = 0; - virtual void GetShdwThrough(int) = 0; - virtual int GetUnderwaterRoofCode(int) = 0; + virtual u32 GetPolyBoomerangThrough(int) = 0; + virtual u32 GetPolyRopeThrough(int) = 0; + virtual u32 GetPolyBombThrough(int) = 0; + virtual bool GetShdwThrough(int) = 0; + virtual u32 GetUnderwaterRoofCode(int) = 0; virtual int GetMonkeyBarsCode(cBgS_PolyInfo const&) = 0; + virtual int GetLinkNo(cBgS_PolyInfo const&) = 0; virtual s32 GetWallCode(cBgS_PolyInfo const&) = 0; virtual int GetPolyAtt0(cBgS_PolyInfo const&) = 0; virtual int GetPolyAtt1(cBgS_PolyInfo const&) = 0; virtual int GetGroundCode(cBgS_PolyInfo const&) = 0; - virtual void GetIronBallThrough(int) = 0; + virtual u32 GetIronBallThrough(int) = 0; virtual u32 GetAttackThrough(int) = 0; virtual s32 GetCamMoveBG(cBgS_PolyInfo const&) = 0; virtual s32 GetRoomCamId(cBgS_PolyInfo const&) = 0; virtual s32 GetRoomPathId(cBgS_PolyInfo const&) = 0; virtual s32 GetRoomPathPntNo(cBgS_PolyInfo const&) = 0; - virtual void GetPolyGrpRoomInfId(cBgS_PolyInfo const&) = 0; - virtual s32 GetGrpSoundId(cBgS_PolyInfo const&) = 0; + virtual u8 GetPolyGrpRoomInfId(cBgS_PolyInfo const&) = 0; + virtual u8 GetGrpSoundId(cBgS_PolyInfo const&) = 0; virtual void CrrPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*, csXyz*) = 0; virtual void TransPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*, csXyz*) = 0; virtual void MatrixCrrPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*, csXyz*) = 0; /* 80079564 */ virtual void CalcPlane(); /* 800797BC */ virtual void ClassifyPlane(); /* 8007B0A8 */ virtual bool ChkPolyThrough(int, cBgS_PolyPassChk*); - /* 8007B0B0 */ virtual void ChkShdwDrawThrough(int, cBgS_PolyPassChk*); + /* 8007B0B0 */ virtual bool ChkShdwDrawThrough(int, cBgS_PolyPassChk*); /* 8007B0DC */ virtual bool ChkGrpThrough(int, cBgS_GrpPassChk*, int); u32 GetOldInvMtx(Mtx m) { return PSMTXInverse(m_inv_mtx, m); } MtxP GetBaseMtxP() { return pm_base; } + bool ChkNoCalcVtx() { return field_0x88 & 2; } + bool ChkFlush() { return field_0x91 & 8; } public: /* 0x18 */ MtxP pm_base; @@ -161,9 +224,9 @@ public: /* 0x92 */ u16 field_0x92; /* 0x94 */ cBgW_TriElm* pm_tri; /* 0x98 */ cBgW_RwgElm* pm_rwg; - /* 0x9C */ VertexPosition* pm_vtx_tbl; // type not confirmed - /* 0xA0 */ void* pm_bgd; - /* 0xA4 */ void* field_0xa4; + /* 0x9C */ Vec* pm_vtx_tbl; + /* 0xA0 */ cBgD_t* pm_bgd; + /* 0xA4 */ cBgW_unk_b_data* field_0xa4; /* 0xA8 */ cBgW_GrpElm* pm_grp; /* 0xAC */ cBgW_NodeTree* pm_node_tree; }; @@ -180,28 +243,28 @@ public: /* 8007B9EC */ void positionWallCorrect(dBgS_Acch*, f32, cM3dGPla&, cXyz* pupper_pos, f32); /* 8007BA40 */ void RwgWallCorrect(dBgS_Acch*, u16); /* 8007C234 */ void WallCorrectRp(dBgS_Acch*, int); - /* 8007C360 */ void WallCorrectGrpRp(dBgS_Acch*, int, int); + /* 8007C360 */ bool WallCorrectGrpRp(dBgS_Acch*, int, int); /* 8007C4AC */ void RwgWallCorrectSort(dBgS_Acch*, u16); /* 8007C714 */ void WallCorrectRpSort(dBgS_Acch*, int); /* 8007C808 */ void WallCorrectGrpRpSort(dBgS_Acch*, int, int); /* 8007D0DC */ void RwgRoofChk(u16, dBgS_RoofChk*); /* 8007D208 */ void RoofChkRp(dBgS_RoofChk*, int); - /* 8007D330 */ void RoofChkGrpRp(dBgS_RoofChk*, int, int); + /* 8007D330 */ bool RoofChkGrpRp(dBgS_RoofChk*, int, int); /* 8007D498 */ void RwgSplGrpChk(u16, dBgS_SplGrpChk*); /* 8007D5C4 */ void SplGrpChkRp(dBgS_SplGrpChk*, int); - /* 8007D6F0 */ void SplGrpChkGrpRp(dBgS_SplGrpChk*, int, int); + /* 8007D6F0 */ bool SplGrpChkGrpRp(dBgS_SplGrpChk*, int, int); /* 8007D858 */ void RwgCaptPoly(int, dBgS_CaptPoly&); /* 8007D8E8 */ void CaptPolyRp(dBgS_CaptPoly&, int); /* 8007DA04 */ void CaptPolyGrpRp(dBgS_CaptPoly&, int, int); /* 8007DB20 */ void RwgSphChk(u16, dBgS_SphChk*, void*); /* 8007DC70 */ void SphChkRp(dBgS_SphChk*, void*, int); - /* 8007DDE0 */ void SphChkGrpRp(dBgS_SphChk*, void*, int, int); + /* 8007DDE0 */ bool SphChkGrpRp(dBgS_SphChk*, void*, int, int); /* 8007E548 */ virtual ~dBgW(); /* 8007E4B4 */ virtual u32 ChkMoveFlag() const; /* 8007E4A4 */ virtual void OffMoveFlag(); /* 8007DAF8 */ virtual void CaptPoly(dBgS_CaptPoly&); - /* 8007C484 */ virtual void WallCorrect(dBgS_Acch*); + /* 8007C484 */ virtual bool WallCorrect(dBgS_Acch*); /* 8007C910 */ virtual void WallCorrectSort(dBgS_Acch*); /* 8007D470 */ virtual bool RoofChk(dBgS_RoofChk*); /* 8007D830 */ virtual bool SplGrpChk(dBgS_SplGrpChk*); @@ -212,30 +275,30 @@ public: /* 8007B430 */ virtual int GetSpecialCode(cBgS_PolyInfo const&); /* 8007B460 */ virtual int GetSpecialCode(int); /* 8007B488 */ virtual int GetMagnetCode(cBgS_PolyInfo const&); - /* 8007B4E0 */ virtual void GetPolyObjThrough(int); - /* 8007B504 */ virtual void GetPolyCamThrough(int); - /* 8007B52C */ virtual void GetPolyLinkThrough(int); - /* 8007B550 */ virtual void GetPolyArrowThrough(int); + /* 8007B4E0 */ virtual u32 GetPolyObjThrough(int); + /* 8007B504 */ virtual u32 GetPolyCamThrough(int); + /* 8007B52C */ virtual u32 GetPolyLinkThrough(int); + /* 8007B550 */ virtual u32 GetPolyArrowThrough(int); /* 8007B574 */ virtual u32 GetPolyHSStick(int); - /* 8007B598 */ virtual void GetPolyBoomerangThrough(int); - /* 8007B5BC */ virtual void GetPolyRopeThrough(int); - /* 8007B5E0 */ virtual void GetPolyBombThrough(int); - /* 8007B604 */ virtual void GetShdwThrough(int); - /* 8007B630 */ virtual int GetUnderwaterRoofCode(int); + /* 8007B598 */ virtual u32 GetPolyBoomerangThrough(int); + /* 8007B5BC */ virtual u32 GetPolyRopeThrough(int); + /* 8007B5E0 */ virtual u32 GetPolyBombThrough(int); + /* 8007B604 */ virtual bool GetShdwThrough(int); + /* 8007B630 */ virtual u32 GetUnderwaterRoofCode(int); /* 8007B4B4 */ virtual int GetMonkeyBarsCode(cBgS_PolyInfo const&); - /* 8007B6AC */ virtual void GetLinkNo(cBgS_PolyInfo const&); + /* 8007B6AC */ virtual int GetLinkNo(cBgS_PolyInfo const&); /* 8007B6D8 */ virtual s32 GetWallCode(cBgS_PolyInfo const&); /* 8007B704 */ virtual int GetPolyAtt0(cBgS_PolyInfo const&); /* 8007B734 */ virtual int GetPolyAtt1(cBgS_PolyInfo const&); /* 8007B760 */ virtual int GetGroundCode(cBgS_PolyInfo const&); - /* 8007B7DC */ virtual void GetIronBallThrough(int); + /* 8007B7DC */ virtual u32 GetIronBallThrough(int); /* 8007B800 */ virtual u32 GetAttackThrough(int); /* 8007B87C */ virtual s32 GetCamMoveBG(cBgS_PolyInfo const&); /* 8007B8A8 */ virtual s32 GetRoomCamId(cBgS_PolyInfo const&); /* 8007B8D8 */ virtual s32 GetRoomPathId(cBgS_PolyInfo const&); /* 8007B904 */ virtual s32 GetRoomPathPntNo(cBgS_PolyInfo const&); - /* 8007DF28 */ virtual void GetPolyGrpRoomInfId(cBgS_PolyInfo const&); - /* 8007DF58 */ virtual s32 GetGrpSoundId(cBgS_PolyInfo const&); + /* 8007DF28 */ virtual u8 GetPolyGrpRoomInfId(cBgS_PolyInfo const&); + /* 8007DF58 */ virtual u8 GetGrpSoundId(cBgS_PolyInfo const&); /* 8007DF88 */ virtual void CrrPos(cBgS_PolyInfo const&, virtual void*, bool, cXyz*, csXyz*, csXyz*); /* 8007DFC4 */ virtual void TransPos(cBgS_PolyInfo const&, virtual void*, bool, cXyz*, csXyz*, @@ -244,11 +307,12 @@ public: csXyz*, csXyz*); /* 8007E444 */ virtual void CallRideCallBack(fopAc_ac_c*, fopAc_ac_c*); /* 8007E474 */ virtual void CallArrowStickCallBack(fopAc_ac_c*, fopAc_ac_c*, cXyz&); - /* 8007E02C */ virtual void ChkPolyThrough(int, cBgS_PolyPassChk*); - /* 8007E360 */ virtual void ChkShdwDrawThrough(int, cBgS_PolyPassChk*); - /* 8007E3D8 */ virtual void ChkGrpThrough(int, cBgS_GrpPassChk*, int); + /* 8007E02C */ virtual bool ChkPolyThrough(int, cBgS_PolyPassChk*); + /* 8007E360 */ virtual bool ChkShdwDrawThrough(int, cBgS_PolyPassChk*); + /* 8007E3D8 */ virtual bool ChkGrpThrough(int, cBgS_GrpPassChk*, int); void SetCrrFunc(dBgW_CrrFunc func) { m_crr_func = func; } + void OnMoveFlag() { m_flags |= 1; } private: /* 0xB0 */ dBgW_CrrFunc m_crr_func; diff --git a/include/d/bg/d_bg_w_base.h b/include/d/bg/d_bg_w_base.h index fee8c30efd..0564f0f4a7 100644 --- a/include/d/bg/d_bg_w_base.h +++ b/include/d/bg/d_bg_w_base.h @@ -32,7 +32,7 @@ public: virtual u32 ChkMoveFlag() const = 0; virtual cM3dGPla GetTriPla(cBgS_PolyInfo const&) const = 0; virtual bool GetTriPnt(cBgS_PolyInfo const&, cXyz*, cXyz*, cXyz*) const = 0; - virtual void GetBnd() const = 0; + virtual cM3dGAab* GetBnd() const = 0; virtual u32 GetGrpInf(cBgS_PolyInfo const&) const = 0; virtual void OffMoveFlag() = 0; virtual void GetTopUnder(f32*, f32*) const = 0; @@ -41,7 +41,7 @@ public: virtual bool GroundCross(cBgS_GndChk*) = 0; virtual void ShdwDraw(cBgS_ShdwDraw*) = 0; virtual void CaptPoly(dBgS_CaptPoly&) = 0; - virtual void WallCorrect(dBgS_Acch*) = 0; + virtual bool WallCorrect(dBgS_Acch*) = 0; virtual void WallCorrectSort(dBgS_Acch*) = 0; virtual bool RoofChk(dBgS_RoofChk*) = 0; virtual bool SplGrpChk(dBgS_SplGrpChk*) = 0; @@ -53,30 +53,30 @@ public: virtual int GetSpecialCode(cBgS_PolyInfo const&) = 0; virtual int GetSpecialCode(int) = 0; virtual int GetMagnetCode(cBgS_PolyInfo const&) = 0; - virtual void GetPolyObjThrough(int) = 0; - virtual void GetPolyCamThrough(int) = 0; - virtual void GetPolyLinkThrough(int) = 0; - virtual void GetPolyArrowThrough(int) = 0; + virtual u32 GetPolyObjThrough(int) = 0; + virtual u32 GetPolyCamThrough(int) = 0; + virtual u32 GetPolyLinkThrough(int) = 0; + virtual u32 GetPolyArrowThrough(int) = 0; virtual u32 GetPolyHSStick(int) = 0; - virtual void GetPolyBoomerangThrough(int) = 0; - virtual void GetPolyRopeThrough(int) = 0; - virtual void GetPolyBombThrough(int) = 0; - virtual void GetShdwThrough(int) = 0; - virtual int GetUnderwaterRoofCode(int) = 0; + virtual u32 GetPolyBoomerangThrough(int) = 0; + virtual u32 GetPolyRopeThrough(int) = 0; + virtual u32 GetPolyBombThrough(int) = 0; + virtual bool GetShdwThrough(int) = 0; + virtual u32 GetUnderwaterRoofCode(int) = 0; virtual int GetMonkeyBarsCode(cBgS_PolyInfo const&) = 0; - virtual void GetLinkNo(cBgS_PolyInfo const&) = 0; + virtual int GetLinkNo(cBgS_PolyInfo const&) = 0; virtual s32 GetWallCode(cBgS_PolyInfo const&) = 0; virtual int GetPolyAtt0(cBgS_PolyInfo const&) = 0; virtual int GetPolyAtt1(cBgS_PolyInfo const&) = 0; virtual int GetGroundCode(cBgS_PolyInfo const&) = 0; - virtual void GetIronBallThrough(int) = 0; + virtual u32 GetIronBallThrough(int) = 0; virtual u32 GetAttackThrough(int) = 0; virtual s32 GetCamMoveBG(cBgS_PolyInfo const&) = 0; virtual s32 GetRoomCamId(cBgS_PolyInfo const&) = 0; virtual s32 GetRoomPathId(cBgS_PolyInfo const&) = 0; virtual s32 GetRoomPathPntNo(cBgS_PolyInfo const&) = 0; - virtual void GetPolyGrpRoomInfId(cBgS_PolyInfo const&) = 0; - virtual s32 GetGrpSoundId(cBgS_PolyInfo const&) = 0; + virtual u8 GetPolyGrpRoomInfId(cBgS_PolyInfo const&) = 0; + virtual u8 GetGrpSoundId(cBgS_PolyInfo const&) = 0; virtual void CrrPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*, csXyz*) = 0; virtual void TransPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*, csXyz*) = 0; virtual void MatrixCrrPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*, csXyz*) = 0; diff --git a/include/d/bg/d_bg_w_kcol.h b/include/d/bg/d_bg_w_kcol.h index a52e448cb8..b3dee70ba3 100644 --- a/include/d/bg/d_bg_w_kcol.h +++ b/include/d/bg/d_bg_w_kcol.h @@ -7,72 +7,91 @@ struct dBgS_CaptPoly; -struct KC_PrismData {}; +struct KC_PrismData { + /* 0x0 */ f32 field_0x0; + /* 0x4 */ u16 field_0x4; + /* 0x6 */ u16 field_0x6; + /* 0x8 */ u16 field_0x8; + /* 0xA */ u16 field_0xa; + /* 0xC */ u16 field_0xc; + /* 0xE */ u16 field_0xe; +}; // Size: 0x10 + +struct pkcdata { + /* 0x00 */ Vec* field_0x0; + /* 0x04 */ Vec* field_0x4; + /* 0x08 */ KC_PrismData* m_prism_data; + /* 0x0C */ KC_PrismData* m_block_data; + /* 0x10 */ u8 field_0x10[4]; + /* 0x14 */ Vec m_area_min_pos; + /* 0x20 */ u8 field_0x20[4]; + /* 0x24 */ u32 field_0x24; +}; class dBgWKCol : public dBgW_Base { public: /* 8007E6F4 */ dBgWKCol(); /* 8007E7D0 */ void initKCollision(void*); - /* 8007E804 */ void create(void*, void*); + /* 8007E804 */ void create(void* pprism, void* plc); /* 8007E850 */ void getTriNrm(KC_PrismData*, Vec**) const; - /* 8007E8C0 */ void GetTriPla(int) const; - /* 8007E9A4 */ void GetTriPnt(int, Vec*, Vec*, Vec*) const; - /* 8007E9D4 */ void GetTriPnt(KC_PrismData const*, Vec*, Vec*, Vec*) const; + /* 8007E8C0 */ cM3dGPla GetTriPla(int) const; + /* 8007E9A4 */ bool GetTriPnt(int, Vec*, Vec*, Vec*) const; + /* 8007E9D4 */ bool GetTriPnt(KC_PrismData const*, Vec*, Vec*, Vec*) const; /* 8007EB70 */ void getPolyCode(int, dBgPc*) const; - /* 8007EBC4 */ void chkPolyThrough(dBgPc*, cBgS_PolyPassChk*, cBgS_GrpPassChk*, cXyz&) const; - /* 8007FF00 */ void ChkShdwDrawThrough(dBgPc*); + /* 8007EBC4 */ bool chkPolyThrough(dBgPc*, cBgS_PolyPassChk*, cBgS_GrpPassChk*, cXyz&) const; + /* 8007FF00 */ bool ChkShdwDrawThrough(dBgPc*); /* 8007E74C */ virtual ~dBgWKCol(); /* 8007E86C */ virtual bool ChkNotReady() const; /* 8007E87C */ virtual bool ChkLock() const; /* 8007E884 */ virtual bool ChkMoveBg() const; - /* 8007E88C */ virtual bool ChkMoveFlag() const; + /* 8007E88C */ virtual u32 ChkMoveFlag() const; /* 8007E894 */ virtual cM3dGPla GetTriPla(cBgS_PolyInfo const&) const; - /* 8007E980 */ virtual void GetTriPnt(cBgS_PolyInfo const&, cXyz*, cXyz*, cXyz*) const; - /* 8007EB28 */ virtual void GetBnd() const; - /* 8007EB30 */ virtual void GetGrpInf(cBgS_PolyInfo const&) const; + /* 8007E980 */ virtual bool GetTriPnt(cBgS_PolyInfo const&, cXyz*, cXyz*, cXyz*) const; + /* 8007EB28 */ virtual cM3dGAab* GetBnd() const; + /* 8007EB30 */ virtual u32 GetGrpInf(cBgS_PolyInfo const&) const; /* 8007EB6C */ virtual void OffMoveFlag(); /* 800829AC */ virtual void GetTopUnder(f32*, f32*) const; /* 8007EE34 */ virtual bool LineCheck(cBgS_LinChk*); /* 8007F628 */ virtual bool GroundCross(cBgS_GndChk*); /* 8007F9A4 */ virtual void ShdwDraw(cBgS_ShdwDraw*); /* 8007FF1C */ virtual void CaptPoly(dBgS_CaptPoly&); - /* 800811A0 */ virtual void WallCorrect(dBgS_Acch*); + /* 800811A0 */ virtual bool WallCorrect(dBgS_Acch*); /* 80080330 */ virtual void WallCorrectSort(dBgS_Acch*); /* 80081E18 */ virtual bool RoofChk(dBgS_RoofChk*); /* 80082184 */ virtual bool SplGrpChk(dBgS_SplGrpChk*); /* 800824EC */ virtual bool SphChk(dBgS_SphChk*, virtual void*); - /* 800829F0 */ virtual void GetGrpRoomIndex(cBgS_PolyInfo const&) const; - /* 80082A20 */ virtual void GetExitId(cBgS_PolyInfo const&); - /* 80082A50 */ virtual void GetPolyColor(cBgS_PolyInfo const&); - /* 80082A80 */ virtual void GetHorseNoEntry(cBgS_PolyInfo const&); + /* 800829F0 */ virtual s32 GetGrpRoomIndex(cBgS_PolyInfo const&) const; + /* 80082A20 */ virtual s32 GetExitId(cBgS_PolyInfo const&); + /* 80082A50 */ virtual s32 GetPolyColor(cBgS_PolyInfo const&); + /* 80082A80 */ virtual BOOL GetHorseNoEntry(cBgS_PolyInfo const&); /* 80082AB0 */ virtual int GetSpecialCode(cBgS_PolyInfo const&); /* 80082AE0 */ virtual int GetSpecialCode(int); /* 80082B0C */ virtual int GetMagnetCode(cBgS_PolyInfo const&); - /* 80082B6C */ virtual void GetPolyObjThrough(int); - /* 80082B98 */ virtual void GetPolyCamThrough(int); - /* 80082BC4 */ virtual void GetPolyLinkThrough(int); - /* 80082BF0 */ virtual void GetPolyArrowThrough(int); + /* 80082B6C */ virtual u32 GetPolyObjThrough(int); + /* 80082B98 */ virtual u32 GetPolyCamThrough(int); + /* 80082BC4 */ virtual u32 GetPolyLinkThrough(int); + /* 80082BF0 */ virtual u32 GetPolyArrowThrough(int); /* 80082C1C */ virtual u32 GetPolyHSStick(int); - /* 80082C48 */ virtual void GetPolyBoomerangThrough(int); - /* 80082C74 */ virtual void GetPolyRopeThrough(int); - /* 80082CA0 */ virtual void GetPolyBombThrough(int); - /* 80082CF8 */ virtual void GetShdwThrough(int); - /* 80082CCC */ virtual int GetUnderwaterRoofCode(int); + /* 80082C48 */ virtual u32 GetPolyBoomerangThrough(int); + /* 80082C74 */ virtual u32 GetPolyRopeThrough(int); + /* 80082CA0 */ virtual u32 GetPolyBombThrough(int); + /* 80082CF8 */ virtual bool GetShdwThrough(int); + /* 80082CCC */ virtual u32 GetUnderwaterRoofCode(int); /* 80082B3C */ virtual int GetMonkeyBarsCode(cBgS_PolyInfo const&); - /* 80082D24 */ virtual void GetLinkNo(cBgS_PolyInfo const&); + /* 80082D24 */ virtual int GetLinkNo(cBgS_PolyInfo const&); /* 80082D54 */ virtual s32 GetWallCode(cBgS_PolyInfo const&); /* 80082D84 */ virtual int GetPolyAtt0(cBgS_PolyInfo const&); /* 80082DB4 */ virtual int GetPolyAtt1(cBgS_PolyInfo const&); /* 80082DE4 */ virtual int GetGroundCode(cBgS_PolyInfo const&); - /* 80082E14 */ virtual void GetIronBallThrough(int); - /* 80082E40 */ virtual void GetAttackThrough(int); - /* 80082E6C */ virtual void GetCamMoveBG(cBgS_PolyInfo const&); - /* 80082E9C */ virtual void GetRoomCamId(cBgS_PolyInfo const&); - /* 80082ECC */ virtual void GetRoomPathId(cBgS_PolyInfo const&); - /* 80082EFC */ virtual void GetRoomPathPntNo(cBgS_PolyInfo const&); - /* 80082F2C */ virtual void GetPolyGrpRoomInfId(cBgS_PolyInfo const&); - /* 80082F5C */ virtual void GetGrpSoundId(cBgS_PolyInfo const&); + /* 80082E14 */ virtual u32 GetIronBallThrough(int); + /* 80082E40 */ virtual u32 GetAttackThrough(int); + /* 80082E6C */ virtual s32 GetCamMoveBG(cBgS_PolyInfo const&); + /* 80082E9C */ virtual s32 GetRoomCamId(cBgS_PolyInfo const&); + /* 80082ECC */ virtual s32 GetRoomPathId(cBgS_PolyInfo const&); + /* 80082EFC */ virtual s32 GetRoomPathPntNo(cBgS_PolyInfo const&); + /* 80082F2C */ virtual u8 GetPolyGrpRoomInfId(cBgS_PolyInfo const&); + /* 80082F5C */ virtual u8 GetGrpSoundId(cBgS_PolyInfo const&); /* 80082F8C */ virtual void CrrPos(cBgS_PolyInfo const&, virtual void*, bool, cXyz*, csXyz*, csXyz*); /* 80082F90 */ virtual void TransPos(cBgS_PolyInfo const&, virtual void*, bool, cXyz*, csXyz*, @@ -80,8 +99,11 @@ public: /* 80082F94 */ virtual void MatrixCrrPos(cBgS_PolyInfo const&, virtual void*, bool, cXyz*, csXyz*, csXyz*); + KC_PrismData* getPrismData(int poly_index) const { return &m_pkc_head->m_prism_data[poly_index]; } + void getTri1Pos(KC_PrismData* pd, Vec** nrm) const { *nrm = &m_pkc_head->field_0x0[pd->field_0x4]; } + private: - /* 0x18 */ void* m_pkc_head; + /* 0x18 */ pkcdata* m_pkc_head; /* 0x1C */ dBgPlc m_code; /* 0x20 */ cM3dGAab m_bnd; }; diff --git a/include/d/bg/d_bg_w_sv.h b/include/d/bg/d_bg_w_sv.h index 9a9190ae5c..251b604799 100644 --- a/include/d/bg/d_bg_w_sv.h +++ b/include/d/bg/d_bg_w_sv.h @@ -1,6 +1,22 @@ #ifndef D_BG_D_BG_W_SV_H #define D_BG_D_BG_W_SV_H -#include "dolphin/types.h" +#include "d/bg/d_bg_w.h" + +class dBgWSv : public dBgW { +public: + /* 80082F98 */ u8 Set(cBgD_t*, u32); + /* 80083020 */ void CopyBackVtx(); + /* 8008308C */ void CrrPosWork(cXyz*, int, int, int); + /* 80083300 */ void TransPosWork(cXyz*, int, int, int); + + /* 800835DC */ virtual ~dBgWSv(); + /* 80083244 */ virtual void CrrPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*, csXyz*); + /* 8008351C */ virtual void TransPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*, csXyz*); + /* 800835D8 */ virtual void MatrixCrrPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*, csXyz*); + + /* 0xC0 */ Vec* field_0xc0; + /* 0xC4 */ u8 field_0xc4; +}; #endif /* D_BG_D_BG_W_SV_H */ diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index 0d0a803c88..f37913783b 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -162,6 +162,8 @@ public: u8 getCStickStatusForce() { return mCStickStatusForce; } u8 getCStickSetFlagForce() { return mCStickSetFlagForce; } u8 getCStickDirectionForce() { return mCStickDirectionForce; } + u8 getFaceAnimeID() { return mFaceAnimeID; } + u8 getBaseAnimeID() { return mBaseAnimeID; } bool isCStickSetFlag(u8 flag) { return mCStickSetFlag & flag; } bool isDoSetFlag(u8 flag) { return flag & mDoSetFlag; } bool isASetFlag(u8 flag) { return flag & mASetFlag; } @@ -276,12 +278,14 @@ public: int getOxygen() { return mOxygen; } void setMaxOxygen(int max) { mMaxOxygen = max; } int getMaxOxygen() { return mMaxOxygen; } + int getNowOxygen() { return mNowOxygen; } void setItemNowLife(u16 life) { mItemNowLife = life; } void setItemNowMagic(s16 magic) { mItemNowMagicCount = magic; } void setItemNowOil(s32 oil) { mItemNowOil = oil; } void setItemOilCount(s32 oil) { mItemOilCount += oil; } s16 getItemMaxLifeCount() { return mItemMaxLifeCount; } f32 getItemLifeCount() { return mItemLifeCount; } + s16 getItemMaxArrowNumCount() { return mItemMaxArrowNumCount; } void clearItemMaxLifeCount() { mItemMaxLifeCount = 0; } void clearItemLifeCount() { mItemLifeCount = 0.0f; @@ -364,7 +368,10 @@ public: void setPlayerPtr(int i, fopAc_ac_c* ptr) { mPlayerPtr[i] = ptr; } void setPlayer(int i, fopAc_ac_c* player) { mPlayer[i] = (daAlink_c*)player; } - void setPlayerInfo(int i, fopAc_ac_c* ptr, int camIdx) { mPlayer[i] = (daAlink_c*)ptr; mPlayerCameraID[camIdx] = 0; } + void setPlayerInfo(int i, fopAc_ac_c* ptr, int camIdx) { + mPlayer[i] = (daAlink_c*)ptr; + mPlayerCameraID[camIdx] = 0; + } void setPlayerStatus(int param_0, int i, u32 flag) { mPlayerStatus[i] |= flag; } void clearPlayerStatus(int param_0, int i, u32 flag) { mPlayerStatus[i] &= ~flag; } bool checkPlayerStatus(int param_0, int i, u32 flag) { return flag & mPlayerStatus[i]; } @@ -377,6 +384,8 @@ public: return mCameraInfo[i].mCameraAttentionStatus & flag; } void setCameraAttentionStatus(int i, u32 flag) { mCameraInfo[i].mCameraAttentionStatus = flag; } + void onCameraAttentionStatus(int i, u32 flag) { mCameraInfo[i].mCameraAttentionStatus |= flag; } + void offCameraAttentionStatus(int i, u32 flag) { mCameraInfo[i].mCameraAttentionStatus &= ~flag; } void setCameraInfo(int camIdx, camera_class* p_cam, int param_2, int param_3, int param_4) { mCameraInfo[camIdx].mCamera = p_cam; mCameraInfo[camIdx].field_0x4 = param_2; @@ -391,12 +400,15 @@ public: bool& isPauseFlag() { return mPauseFlag; } void offPauseFlag() { mPauseFlag = false; } void onPauseFlag() { mPauseFlag = true; } + u8 getOxygenShowFlag() { return mOxygenShowFlag; } void show2dOn() { mShow2D = 1; } s8 getLayerOld() { return mLayerOld; } void setMesgCancelButton(u8 button) { mMesgCancelButton = button; } + void setMesgBgm(u8 param_0) { mMesgBgm = param_0; } int getMessageCountNumber() { return mMessageCountNum; } void setWindowNum(u8 num) { mWindowNum = num; } + int getWindowNum() { return mWindowNum; } dDlst_window_c* getWindow(int i) { return &mWindow[i]; } void setWindow(int i, f32 param_1, f32 param_2, f32 param_3, f32 param_4, f32 param_5, f32 param_6, int camID, int mode) { @@ -797,6 +809,10 @@ void dComIfGs_onStageSwitch(int i_stageNo, int i_no); void dComIfGs_offStageSwitch(int i_stageNo, int i_no); void dComIfGs_PolyDamageOff_Set(s8 param_0); u8 dComIfGs_staffroll_next_go_check(); +BOOL dComIfGs_isEventBit(u16 id); +int dComIfGs_isItemFirstBit(u8 i_no); +u16 dComIfGs_getRupee(); +static u16 dComIfGs_getLife(); inline void dComIfGs_init() { g_dComIfG_gameInfo.info.init(); @@ -1059,6 +1075,10 @@ inline u8 dComIfGs_getOptVibration() { return g_dComIfG_gameInfo.info.getPlayer().getConfig().getVibration(); } +inline u8 dComIfGs_getOptAttentionType() { + return g_dComIfG_gameInfo.info.getPlayer().getConfig().getAttentionType(); +} + inline BOOL dComIfGs_isTbox(int i_no) { return g_dComIfG_gameInfo.info.getMemory().getBit().isTbox(i_no); } @@ -1397,7 +1417,7 @@ inline void dComIfGs_setTmpReg(u16 reg, u8 flag) { g_dComIfG_gameInfo.info.getTmp().setEventReg(reg, flag); } -inline u8 dComIfGs_getTmpReg(u16 reg) { +inline int dComIfGs_getTmpReg(u16 reg) { return g_dComIfG_gameInfo.info.getTmp().getEventReg(reg); } @@ -1477,7 +1497,6 @@ inline void dComIfGs_setMemoryToCard(u8* p_saveData, int dataNum) { g_dComIfG_gameInfo.info.memory_to_card((char*)p_saveData, dataNum); } - void dComIfGp_setSelectItem(int index); s32 dComIfGp_offHeapLockFlag(int flag); void dComIfGp_createSubExpHeap2D(); @@ -1504,6 +1523,23 @@ JKRExpHeap* dComIfGp_getSubHeap2D(int flag); void dComIfGp_world_dark_set(u8); u8 dComIfGp_getNowLevel(); void dComIfGp_calcNowRegion(); +daHorse_c* dComIfGp_getHorseActor(); +static BOOL dComIfGp_event_runCheck(); +static s32 dComIfGp_evmng_getMyStaffId(const char* pName, fopAc_ac_c* pActor, int param_2); +static u16 dComIfGp_event_chkEventFlag(u16 flag); +static s8 dComIfGp_getPlayerCameraID(int idx); +static dEvent_manager_c& dComIfGp_getEventManager(); +static u32 dComIfGp_checkPlayerStatus0(int param_0, u32 param_1); +static u32 dComIfGp_checkPlayerStatus1(int param_0, u32 param_1); +static dEvt_control_c& dComIfGp_getEvent(); +static bool dComIfGp_evmng_startCheck(char const* param_0); +static dStage_stageDt_c* dComIfGp_getStage(); +void dComIfGp_setItemLifeCount(f32 amount, u8 type); +void dComIfGp_setItemRupeeCount(s32 param_0); +static u8 dComIfGp_getDoStatus(); +static u8 dComIfGp_getRStatus(); +static dAttCatch_c* dComIfGp_att_getCatghTarget(); +static void dComIfGp_setBottleStatus(u8 param_0, u8 param_1); inline void i_dComIfGp_setItemLifeCount(float amount, u8 type) { g_dComIfG_gameInfo.play.setItemLifeCount(amount, type); @@ -2024,7 +2060,16 @@ inline BOOL dComIfGp_checkCameraAttentionStatus(int i, u32 flag) { return g_dComIfG_gameInfo.play.checkCameraAttentionStatus(i, flag); } -inline void dComIfGp_setCameraInfo(int camIdx, camera_class* p_cam, int param_2, int param_3, int param_4) { +inline void dComIfGp_onCameraAttentionStatus(int i, u32 flag) { + g_dComIfG_gameInfo.play.onCameraAttentionStatus(i, flag); +} + +inline void dComIfGp_offCameraAttentionStatus(int i, u32 flag) { + g_dComIfG_gameInfo.play.offCameraAttentionStatus(i, flag); +} + +inline void dComIfGp_setCameraInfo(int camIdx, camera_class* p_cam, int param_2, int param_3, + int param_4) { g_dComIfG_gameInfo.play.setCameraInfo(camIdx, p_cam, param_2, param_3, param_4); } @@ -2064,6 +2109,14 @@ inline int dComIfGp_getOxygen() { return g_dComIfG_gameInfo.play.getOxygen(); } +inline int dComIfGp_getNowOxygen() { + return g_dComIfG_gameInfo.play.getNowOxygen(); +} + +inline u8 dComIfGp_getOxygenShowFlag() { + return g_dComIfG_gameInfo.play.getOxygenShowFlag(); +} + inline u8 dComIfGp_getNeedLightDropNum() { return g_dComIfG_gameInfo.play.getNeedLightDropNum(); } @@ -2112,6 +2165,10 @@ inline void dComIfGp_setMesgCancelButton(u8 button) { g_dComIfG_gameInfo.play.setMesgCancelButton(button); } +inline void dComIfGp_setMesgBgmOn() { + g_dComIfG_gameInfo.play.setMesgBgm(1); +} + inline s32 dComIfGp_checkStatus(u16 flags) { return g_dComIfG_gameInfo.play.checkStatus(flags); } @@ -2136,6 +2193,10 @@ inline f32 dComIfGp_getItemLifeCount() { return g_dComIfG_gameInfo.play.getItemLifeCount(); } +inline s16 dComIfGp_getItemMaxArrowNumCount() { + return g_dComIfG_gameInfo.play.getItemMaxArrowNumCount(); +} + inline void dComIfGp_clearItemMaxLifeCount() { g_dComIfG_gameInfo.play.clearItemMaxLifeCount(); } @@ -2152,6 +2213,14 @@ inline int dComIfGp_getMessageCountNumber() { return g_dComIfG_gameInfo.play.getMessageCountNumber(); } +inline u8 dComIfGp_getMesgFaceAnimeAttrInfo() { + return g_dComIfG_gameInfo.play.getFaceAnimeID(); +} + +inline u8 dComIfGp_getMesgAnimeAttrInfo() { + return g_dComIfG_gameInfo.play.getBaseAnimeID(); +} + inline void dComIfGp_setCameraParamFileName(int i, char* name) { g_dComIfG_gameInfo.play.setCameraParamFileName(i, name); } @@ -2168,6 +2237,10 @@ inline void dComIfGp_setWindowNum(int num) { g_dComIfG_gameInfo.play.setWindowNum(num); } +inline int dComIfGp_getWindowNum() { + return g_dComIfG_gameInfo.play.getWindowNum(); +} + inline dDlst_window_c* dComIfGp_getWindow(int i) { return g_dComIfG_gameInfo.play.getWindow(i); } @@ -2288,7 +2361,8 @@ inline int dComIfGp_event_moveApproval(void* actor) { inline int dComIfGp_event_order(u16 eventType, u16 priority, u16 flag, u16 param_3, void* param_4, void* param_5, s16 eventID, u8 infoIdx) { - return g_dComIfG_gameInfo.play.getEvent().order(eventType, priority, flag, param_3, param_4, param_5, eventID, infoIdx); + return g_dComIfG_gameInfo.play.getEvent().order(eventType, priority, flag, param_3, param_4, + param_5, eventID, infoIdx); } inline void dComIfGp_event_setGtItm(int i_itemNo) { @@ -2436,10 +2510,10 @@ inline u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* param_2, param_10, param_11, 1.0f); } -inline u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* param_2, const csXyz* param_3, - const cXyz* param_4, u8 param_5, dPa_levelEcallBack* param_6, - s8 param_7, const GXColor* param_8, const GXColor* param_9, - const cXyz* param_10) { +inline u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* param_2, + const csXyz* param_3, const cXyz* param_4, u8 param_5, + dPa_levelEcallBack* param_6, s8 param_7, const GXColor* param_8, + const GXColor* param_9, const cXyz* param_10) { return g_dComIfG_gameInfo.play.getParticle()->setNormal( param_0, param_1, param_2, NULL, param_3, param_4, param_5, param_6, param_7, param_8, param_9, param_10, 1.0f); @@ -2454,20 +2528,29 @@ inline u32 dComIfGp_particle_set(u16 param_1, const cXyz* param_2, const dKy_tev param_9, param_10, param_11, 1.0f); } +inline u32 dComIfGp_particle_set(u16 param_1, const cXyz* param_2, const csXyz* param_3, + const cXyz* param_4, u8 param_5, dPa_levelEcallBack* param_6, + s8 param_7, const GXColor* param_8, const GXColor* param_9, + const cXyz* param_10) { + return g_dComIfG_gameInfo.play.getParticle()->setNormal(param_1, param_2, NULL, param_3, + param_4, param_5, param_6, param_7, + param_8, param_9, param_10, 1.0f); +} + inline u32 dComIfGp_particle_set(u16 param_0, const cXyz* param_1, const csXyz* param_2, const cXyz* param_3) { return dComIfGp_particle_set(param_0, param_1, NULL, param_2, param_3, 0xFF, NULL, -1, NULL, NULL, NULL); } -inline u32 dComIfGp_particle_set(u16 param_0, const cXyz* param_1, const dKy_tevstr_c* param_2, const csXyz* param_3, - const cXyz* param_4) { +inline u32 dComIfGp_particle_set(u16 param_0, const cXyz* param_1, const dKy_tevstr_c* param_2, + const csXyz* param_3, const cXyz* param_4) { return dComIfGp_particle_set(param_0, param_1, param_2, param_3, param_4, 0xFF, NULL, -1, NULL, NULL, NULL); } -inline u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* param_2, const csXyz* param_3, - const cXyz* param_4) { +inline u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* param_2, + const csXyz* param_3, const cXyz* param_4) { return dComIfGp_particle_set(param_0, param_1, param_2, param_3, param_4, 0xFF, NULL, -1, NULL, NULL, NULL); } @@ -2496,7 +2579,6 @@ int dComIfGd_setShadow(u32 param_0, s8 param_1, J3DModel* param_2, cXyz* param_3 f32 param_5, f32 param_6, f32 param_7, cBgS_PolyInfo& param_8, dKy_tevstr_c* param_9, s16 param_10, f32 param_11, _GXTexObj* param_12); - inline int dComIfGd_setRealShadow(u32 param_0, s8 param_1, J3DModel* param_2, cXyz* param_3, f32 param_4, f32 param_5, dKy_tevstr_c* param_6) { return g_dComIfG_gameInfo.drawlist.setRealShadow(param_0, param_1, param_2, param_3, param_4, @@ -2522,6 +2604,10 @@ inline void dComIfGd_set2DOpa(dDlst_base_c* dlst) { g_dComIfG_gameInfo.drawlist.set2DOpa(dlst); } +inline void dComIfGd_set2DXlu(dDlst_base_c* dlst) { + g_dComIfG_gameInfo.drawlist.set2DXlu(dlst); +} + inline void dComIfGd_set2DOpaTop(dDlst_base_c* dlst) { g_dComIfG_gameInfo.drawlist.set2DOpaTop(dlst); } @@ -2530,6 +2616,13 @@ inline view_class* dComIfGd_getView() { return g_dComIfG_gameInfo.drawlist.getView(); } +inline MtxP dComIfGd_getViewRotMtx() { + return ((camera_process_class*)g_dComIfG_gameInfo.drawlist.getView())->mViewMtxNoTrans; +} +inline MtxP dComIfGd_getViewMtx() { + return ((camera_process_class*)g_dComIfG_gameInfo.drawlist.getView())->mViewMtx; +} + inline J3DDrawBuffer* dComIfGd_getListFilter() { return g_dComIfG_gameInfo.drawlist.getOpaListFilter(); } @@ -2562,6 +2655,11 @@ inline void dComIfGd_setListItem3D() { g_dComIfG_gameInfo.drawlist.setXluListItem3D(); } +inline void dComIfGd_setList3Dlast() { + g_dComIfG_gameInfo.drawlist.setOpaList3Dlast(); + g_dComIfG_gameInfo.drawlist.setXluList3Dlast(); +} + inline void dComIfGd_setXluList2DScreen() { g_dComIfG_gameInfo.drawlist.setXluList2DScreen(); } diff --git a/include/d/com/d_com_static.h b/include/d/com/d_com_static.h index 2268d3081a..ba51a8f505 100644 --- a/include/d/com/d_com_static.h +++ b/include/d/com/d_com_static.h @@ -11,30 +11,46 @@ public: class data_c { public: /* 80030F14 */ void set(s8, cXyz const&, cXyz const&, u8, u8, u8); - /* 80030FBC */ void reset(); - /* 80030FCC */ void isSwitch(); - /* 800310C8 */ void check(fopAc_ac_c*); - /* 80031038 */ void check(cXyz const&); + /* 80030FBC */ data_c* reset(); + /* 80030FCC */ u8 isSwitch(); + /* 800310C8 */ u8 check(fopAc_ac_c*); + /* 80031038 */ bool check(cXyz const&); /* 80031150 */ void execute(); /* 80031F28 */ ~data_c(); /* 80031F64 */ data_c(); - }; + + void setNext(data_c* i_next) { mpNext = i_next; } + data_c* getNext() { return mpNext; } + u8 getType() { return mType; } + + /* 0x00 */ s8 mRoomNo; + /* 0x01 */ bool field_0x1; + /* 0x02 */ u8 field_0x2; + /* 0x03 */ u8 field_0x3; + /* 0x04 */ u8 mType; + /* 0x08 */ cXyz field_0x8; + /* 0x14 */ cXyz field_0x14; + /* 0x20 */ data_c* mpNext; + }; // Size: 0x24 class room_c { public: /* 80031190 */ void add(daSus_c::data_c*); /* 800311FC */ void reset(); /* 80031EE4 */ room_c(); - }; + + /* 0x0 */ data_c* mpData; + }; // Size: 0x4 /* 80031248 */ void newData(s8, cXyz const&, cXyz const&, u8, u8, u8); /* 800313BC */ void reset(); /* 800314D4 */ static void check(fopAc_ac_c*); - /* 80031434 */ static bool check(s8, cXyz const&); + /* 80031434 */ static bool check(s8 i_roomNo, cXyz const& i_pos); /* 800315A4 */ static void execute(); static u8 mData[1152]; static u8 mRoom[256]; + static s16 mSetTop; }; #endif /* D_COM_D_COM_STATIC_H */ diff --git a/include/d/d_attention.h b/include/d/d_attention.h index d0c674f904..7551d7327c 100644 --- a/include/d/d_attention.h +++ b/include/d/d_attention.h @@ -10,32 +10,32 @@ class dAttHint_c { public: dAttHint_c() {} - /* 800738B4 */ void getPId(void*); - /* 800738CC */ void convPId(unsigned int); - /* 800738FC */ void request(fopAc_ac_c*, int); + /* 800738B4 */ u32 getPId(void*); + /* 800738CC */ fopAc_ac_c* convPId(unsigned int); + /* 800738FC */ int request(fopAc_ac_c*, int); /* 80073958 */ void init(); /* 80073970 */ void proc(); private: /* 0x0 */ u32 mHintActorID; - /* 0x4 */ u32 mPriority; + /* 0x4 */ int mPriority; /* 0x8 */ u32 field_0x8; }; class dAttCatch_c { public: dAttCatch_c() {} - s32 convPId(unsigned int); + fopAc_ac_c* convPId(unsigned int); void init(); void proc(); void request(fopAc_ac_c*, u8, f32, f32, f32, s16, int); - s32 getCatghTarget() { return convPId(mCatghTargetID); } + fopAc_ac_c* getCatghTarget() { return convPId(mCatghTargetID); } u8 getChangeItem() { return mChangeItem; } private: - /* 0x00 */ void* field_0x0; - /* 0x04 */ f32 field_0x4; + /* 0x00 */ u32 field_0x0; + /* 0x04 */ int field_0x4; /* 0x08 */ f32 field_0x8; /* 0x0C */ u8 field_0xc; /* 0x0D */ u8 field_0xd; @@ -47,11 +47,7 @@ private: class dAttParam_c { public: - dAttParam_c() {} - /* 80070038 */ dAttParam_c(s32); - -private: - /* 0x00 */ u16 field_0x0; + /* 0x00 */ u16 mFlags; /* 0x04 */ f32 field_0x4; /* 0x08 */ f32 field_0x8; /* 0x0C */ f32 field_0xc; @@ -66,21 +62,23 @@ private: /* 0x30 */ f32 mAttnCursorOffsetY; /* 0x34 */ u8 mAttnCursorAppearFrames; /* 0x35 */ u8 mAttnCursorDisappearFrames; + /* 0x38 */ f32 field_0x38; + /* 0x3C */ f32 field_0x3c; public: - /* 80070110 */ virtual ~dAttParam_c(); - /* 0x38 vtable */ + dAttParam_c() {} + /* 80070038 */ dAttParam_c(s32); -private: - /* 0x3C */ f32 mSelCursorAnmSpeed; - /* 0x40 */ f32 mAttnCursorAnmSpeed; - /* 0x44 */ u32 mDispPosX; - /* 0x48 */ u32 mDispPosY; -}; // Size = 0x4C + /* 80070110 */ virtual ~dAttParam_c(); + + bool CheckFlag(u16 flag) { return mFlags & flag; } + + /* 0x40 vtable */ +}; // Size: 0x44 class dAttLook_c { public: - /* 80073CA4 */ void convPId(unsigned int); + /* 80073CA4 */ fopAc_ac_c* convPId(unsigned int); /* 80073CD4 */ void init(); /* 80073CEC */ void proc(); /* 80073D08 */ void request(fopAc_ac_c*, f32, f32, f32, s16, int); @@ -96,10 +94,11 @@ class dAttList_c { public: /* 800304D0 */ ~dAttList_c() {} /* 8003050C */ dAttList_c() {} - /* 80073864 */ void getActor(); + /* 80073864 */ fopAc_ac_c* getActor(); /* 80073898 */ void setActor(fopAc_ac_c*); -private: + u32 getPid() { return mActorID; } + /* 0x00 */ f32 mWeight; /* 0x04 */ f32 mDistance; /* 0x08 */ cSAngle mAngle; @@ -117,15 +116,15 @@ public: /* 800732B0 */ void draw(cXyz&, f32 (*)[4]); /* 0x000 */ J3DModel* mModel[2]; - /* 0x008 */ mDoExt_bckAnm bckAnm[2]; - /* 0x040 */ mDoExt_bpkAnm bpkAnm[2]; - /* 0x070 */ mDoExt_brkAnm brkAnm[2]; - /* 0x0A0 */ mDoExt_brkAnm brkAnm2[2]; - /* 0x0D0 */ mDoExt_btkAnm btkAnm[2]; - /* 0x100 */ mDoExt_bckAnm bckAnm2; - /* 0x11C */ mDoExt_bpkAnm bpkAnm2; - /* 0x134 */ mDoExt_brkAnm brkAnm3; - /* 0x14C */ mDoExt_btkAnm btkAnm2; + /* 0x008 */ mDoExt_bckAnm mNoticeCursorBck[2]; + /* 0x040 */ mDoExt_bpkAnm mNoticeCursorBpk[2]; + /* 0x070 */ mDoExt_brkAnm mNoticeCursorBrk[2]; + /* 0x0A0 */ mDoExt_brkAnm mNoticeCursor02Brk[2]; + /* 0x0D0 */ mDoExt_btkAnm mNoticeCursorBtk[2]; + /* 0x100 */ mDoExt_bckAnm mImpactBck; + /* 0x11C */ mDoExt_bpkAnm mImpactBpk; + /* 0x134 */ mDoExt_brkAnm mImpactBrk; + /* 0x14C */ mDoExt_btkAnm mImpactBtk; /* 0x164 */ cXyz field_0x164; /* 0x170 */ u8 field_0x170; /* 0x171 */ u8 field_0x171; @@ -152,45 +151,56 @@ struct dist_entry { u32 field_0x18; }; // Size: 0x1C +struct type_tbl_entry { + s16 field_0x0; + u16 field_0x2; +}; + class dAttention_c { public: + enum EState { + ST_NONE, + ST_LOCK, + ST_RELEASE, + }; + dAttention_c() {} /* 80070198 */ dAttention_c(fopAc_ac_c*, u32); /* 80070774 */ ~dAttention_c(); - /* 80070844 */ void GetLockonList(s32); - /* 80070880 */ void getActionBtnB(); - /* 80070974 */ void getActionBtnXY(); - /* 80070A70 */ void chkAttMask(u32, u32); - /* 80070E90 */ void calcWeight(int, fopAc_ac_c*, f32, s16, s16, u32*); + /* 80070844 */ dAttList_c* GetLockonList(s32); + /* 80070880 */ dAttList_c* getActionBtnB(); + /* 80070974 */ dAttList_c* getActionBtnXY(); + /* 80070A70 */ int chkAttMask(u32, u32); + /* 80070E90 */ f32 calcWeight(int, fopAc_ac_c*, f32, s16, s16, u32*); /* 800710C0 */ void setList(int, fopAc_ac_c*, f32, f32, cSAngle, u32); /* 80071240 */ void initList(u32); - /* 800713CC */ void makeList(); + /* 800713CC */ int makeList(); /* 80071424 */ void setOwnerAttentionPos(); - /* 80071488 */ void SelectAttention(fopAc_ac_c*); + /* 80071488 */ int SelectAttention(fopAc_ac_c*); /* 800716B8 */ void sortList(); /* 800718A4 */ void stockAttention(); - /* 80071960 */ void nextAttention(); - /* 80071A68 */ void freeAttention(); - /* 80071A98 */ void chaseAttention(); - /* 80071CC0 */ void EnemyDistance(fopAc_ac_c*); + /* 80071960 */ fopAc_ac_c* nextAttention(); + /* 80071A68 */ int freeAttention(); + /* 80071A98 */ bool chaseAttention(); + /* 80071CC0 */ f32 EnemyDistance(fopAc_ac_c*); /* 80071DEC */ void runSoundProc(); /* 80071E84 */ void runDrawProc(); /* 800720F4 */ void runDebugDisp(); /* 800720F8 */ void checkButton(); - /* 800722A0 */ void triggerProc(); - /* 800722EC */ void lostCheck(); + /* 800722A0 */ bool triggerProc(); + /* 800722EC */ int lostCheck(); /* 80072344 */ void judgementStatus4Hold(); /* 800725F0 */ void judgementStatus4Switch(); - /* 80072924 */ void Run(); + /* 80072924 */ int Run(); /* 80072BD4 */ void Draw(); /* 80072D80 */ void lockSoundStart(u32); - /* 8007353C */ void LockonTarget(s32); - /* 800735DC */ void LockonReleaseDistanse(); - /* 800736CC */ void LockonTargetPId(s32); - /* 80073734 */ void ActionTarget(s32); - /* 8007378C */ void CheckObjectTarget(s32); + /* 8007353C */ fopAc_ac_c* LockonTarget(s32); + /* 800735DC */ f32 LockonReleaseDistanse(); + /* 800736CC */ u32 LockonTargetPId(s32); + /* 80073734 */ fopAc_ac_c* ActionTarget(s32); + /* 8007378C */ fopAc_ac_c* CheckObjectTarget(s32); /* 800737E4 */ bool LockonTruth(); - /* 80073838 */ void checkDistance(cXyz*, s16, cXyz*, f32, f32, f32, f32); + /* 80073838 */ int checkDistance(cXyz*, s16, cXyz*, f32, f32, f32, f32); /* 8016E424 */ void LockEdge(); /* 80182994 */ void GetCheckObjectCount(); /* 80182AD0 */ void keepLock(int); @@ -199,6 +209,10 @@ public: dAttCatch_c& getCatghTarget() { return mCatghTarget; } u8 getCatchChgItem() { return mCatghTarget.getChangeItem(); } BOOL chkFlag(u32 flag) { return mFlags & flag; } + void setFlag(u32 flag) { mFlags |= flag; } + void clrFlag(u32 flag) { mFlags &= ~flag; } + int GetActionCount() { return mActionCount; } + int GetLockonCount() { return mLockonCount; } s8 Lockon() { /* s32 chk = true; if (!LockonTruth() && !chkFlag(0x20000000)) { @@ -209,28 +223,28 @@ public: return !LockonTruth() && !chkFlag(0x20000000); } - static u8 loc_type_tbl[12]; - static u8 act_type_tbl[20]; + static type_tbl_entry loc_type_tbl[3]; + static type_tbl_entry act_type_tbl[5]; static dist_entry dist_table[234]; - static u32 loc_type_num; - static u32 act_type_num; - static u32 chk_type_tbl; - static u32 chk_type_num; + static int loc_type_num; + static int act_type_num; + static type_tbl_entry chk_type_tbl[1]; + static int chk_type_num; public: /* 0x000 */ fopAc_ac_c* mpPlayer; /* 0x004 */ u32 mLockTargetID; /* 0x008 */ dAttDraw_CallBack_c mpDrawCallback; - /* 0x00C */ u32 field_0xc; + /* 0x00C */ u32 mPadNo; /* 0x010 */ u32 field_0x10; /* 0x014 */ u8 field_0x14[4]; /* 0x018 */ JKRSolidHeap* heap; - /* 0x01C */ cXyz field_0x1c; + /* 0x01C */ cXyz mDrawAttnPos; /* 0x028 */ dAttDraw_c draw[2]; - /* 0x318 */ int field_0x318; - /* 0x31C */ cXyz field_0x31c; - /* 0x328 */ u8 field_0x328; - /* 0x329 */ u8 field_0x329; + /* 0x318 */ u32 mTargetActorID; + /* 0x31C */ cXyz mOwnerAttnPos; + /* 0x328 */ s8 field_0x328; + /* 0x329 */ u8 mAttnStatus; /* 0x32A */ u8 field_0x32a; /* 0x32B */ u8 field_0x32b; /* 0x32C */ u8 field_0x32c; @@ -248,22 +262,17 @@ public: /* 0x3E0 */ dAttList_c mActionList[4]; /* 0x430 */ int mActionCount; /* 0x434 */ int mActionOffset; - /* 0x438 */ dAttList_c field_0x438[4]; + /* 0x438 */ dAttList_c mCheckObjectList[4]; /* 0x488 */ int mCheckObjectCount; - /* 0x48C */ int field_0x48c; + /* 0x48C */ int mCheckObjectOffset; /* 0x490 */ dAttHint_c mZHintTarget; /* 0x49C */ dAttCatch_c mCatghTarget; /* 0x4B4 */ dAttLook_c mLookTarget; - /* 0x4C4 */ int field_0x4c4; - /* 0x4C8 */ u8 field_0x4c8; - /* 0x4C9 */ u8 field_0x4c9; - /* 0x4CA */ u8 field_0x4ca; - /* 0x4CB */ u8 field_0x4cb; - /* 0x4CC */ u8 field_0x4cc; - /* 0x4CD */ u8 field_0x4cd; - /* 0x4CE */ u8 field_0x4ce; - /* 0x4CF */ u8 field_0x4cf; - /* 0x4D0 */ dAttParam_c mAttParam; + /* 0x4C4 */ int mAttnBlockTimer; + /* 0x4C8 */ dAttParam_c mAttParam; + /* 0x50C */ u8 field_0x50c[0x514 - 0x50c]; + /* 0x514 */ u32 mEnemyActorID; + /* 0x518 */ f32 mEnemyDist; }; // Size: 0x51C STATIC_ASSERT(sizeof(dAttention_c) == 0x51C); diff --git a/include/d/d_demo.h b/include/d/d_demo.h index 584e24cc85..15d09fb5cd 100644 --- a/include/d/d_demo.h +++ b/include/d/d_demo.h @@ -52,15 +52,15 @@ public: class dDemo_actor_c : public JStage::TActor { public: /* 80038020 */ dDemo_actor_c(); - /* 80038128 */ void getActor(); + /* 80038128 */ fopAc_ac_c* getActor(); /* 8003815C */ void setActor(fopAc_ac_c*); - /* 8003819C */ void getPrm_Morf(); + /* 8003819C */ f32 getPrm_Morf(); /* 80038338 */ void getDemoIDData(int*, int*, int*, u16*, u8*); /* 80038098 */ virtual ~dDemo_actor_c(); /* 800387EC */ virtual void JSGSetData(u32, void const*, u32); - /* 8003A05C */ virtual void JSGFindNodeID(char const*) const; - /* 8003A088 */ virtual void JSGGetNodeTransformation(u32, f32 (*)[4]) const; + /* 8003A05C */ virtual s32 JSGFindNodeID(char const*) const; + /* 8003A088 */ virtual int JSGGetNodeTransformation(u32, f32 (*)[4]) const; /* 8003A0D8 */ virtual void JSGGetTranslation(Vec*) const; /* 80038920 */ virtual void JSGSetTranslation(Vec const&); /* 8003A0F4 */ virtual void JSGGetScaling(Vec*) const; @@ -77,6 +77,16 @@ public: /* 8003A0D0 */ virtual f32 JSGGetTextureAnimationFrameMax() const; void setModel(J3DModel* p_model) { mModel = p_model; } + u8 checkEnable(u16 flag) { return mFlags & flag; } + void onEnable(u16 flag) { mFlags |= flag; } + cXyz& getTrans() { return mTrans; } + cXyz& getScale() { return mScale; } + csXyz& getRatate() { return mRotate; } + u32 getAnmId() { return mAnmId; } + u32 getOldAnmId() { return mOldAnmId; } + void setOldAnmId(u32 id) { mOldAnmId = id; } + void setAnmFrameMax(f32 max) { mAnmFrameMax = max; } + f32 getAnmFrame() { return mAnmFrame; } private: /* 0x04 */ u16 mFlags; @@ -136,6 +146,8 @@ public: /* 80038EA8 */ virtual void JSGSetAngleAttenuation(f32, GXSpotFn); /* 80038EC0 */ virtual void JSGSetDirection(Vec const&); + void onEnable(u8 flag) { mFlags |= flag; } + private: /* 0x04 */ u8 mFlags; /* 0x08 */ JStage::TELight mLightType; @@ -161,6 +173,8 @@ public: /* 80038F10 */ virtual void JSGSetEndZ(f32); /* 80038F24 */ virtual void JSGSetColor(GXColor); + void onEnable(u8 flag) { mFlags |= flag; } + private: /* 0x04 */ u8 mFlags; /* 0x05 */ u8 mFogType; @@ -193,6 +207,8 @@ public: /* 80038D84 */ virtual f32 JSGGetViewRoll() const; /* 80038DDC */ virtual void JSGSetViewRoll(f32); + void onEnable(u8 flag) { mFlags |= flag; } + private: /* 0x04 */ u8 mFlags; /* 0x08 */ f32 mProjNear; @@ -214,6 +230,8 @@ public: /* 800394C8 */ virtual ~dDemo_ambient_c(); /* 80038DF0 */ virtual void JSGSetColor(GXColor); + void onEnable(u8 flag) { mFlags |= flag; } + private: /* 0x04 */ u8 mFlags; /* 0x05 */ GXColor mColor; @@ -255,6 +273,8 @@ public: static s32 getMode() { return m_mode; } static JStudio::stb::TControl* getControl() { return m_control; } static bool isStatus(u32 status) { return m_status & status; } + static void onStatus(u32 status) { m_status |= status; } + static void offStatus(u32 status) { m_status &= ~status; } static void setBranchData(const u8* p_data) { m_branchData = p_data; } static s16 m_branchId; diff --git a/include/d/d_drawlist.h b/include/d/d_drawlist.h index 4a4abb8f91..423383e051 100644 --- a/include/d/d_drawlist.h +++ b/include/d/d_drawlist.h @@ -226,6 +226,7 @@ public: /* 80051ADC */ void setScissor(f32, f32, f32, f32); void setCameraID(int id) { mCameraID = id; } + s8 getCameraID() { return mCameraID; } void setMode(int mode) { mMode = mode; } f32 getViewPort() { return mXOrig; } @@ -284,6 +285,7 @@ public: void set2DOpa(dDlst_base_c* dlst) { set(mp2DOpaSet[0], mp2DOpaSet[1], dlst); } void set2DOpaTop(dDlst_base_c* dlst) { set(mp2DOpaTopSet[0], mp2DOpaTopSet[1], dlst); } + void set2DXlu(dDlst_base_c* dlst) { set(mp2DXluSet[0], mp2DXluSet[1], dlst); } view_class* getView() { return mView; } void setView(view_class* view) { mView = view; } void setWindow(dDlst_window_c* window) { mWindow = window; } @@ -303,6 +305,8 @@ public: void setXluListItem3D() { setXluDrawList(mDrawBuffers[DB_XLU_LIST_ITEM3D]); } void setXluListBG() { setXluDrawList(mDrawBuffers[DB_XLU_LIST_BG]); } void setOpaListBG() { setOpaDrawList(mDrawBuffers[DB_OPA_LIST_BG]); } + void setOpaList3Dlast() { setOpaDrawList(mDrawBuffers[DB_LIST_3D_LAST]); } + void setXluList3Dlast() { setXluDrawList(mDrawBuffers[DB_LIST_3D_LAST]); } void setXluList2DScreen() { setXluDrawList(mDrawBuffers[DB_LIST_2D_SCREEN]); } void peekZdata() { mPeekZ.peekData(); } diff --git a/include/d/d_lib.h b/include/d/d_lib.h index 121bff182e..0f87597d27 100644 --- a/include/d/d_lib.h +++ b/include/d/d_lib.h @@ -2,6 +2,7 @@ #define D_D_LIB_H #include "dolphin/types.h" +#include "dolphin/os/OS.h" struct JKRAramArchive; u32 dLib_getExpandSizeFromAramArchive(JKRAramArchive* arc, char const* resName); @@ -71,12 +72,13 @@ struct CSTControl : public STControl { }; struct dLib_time_c { - /* 80032804 */ void getTime(); + /* 80032804 */ static OSTime getTime(); /* 80032880 */ static void stopTime(); /* 800328BC */ static void startTime(); - static u8 m_diffTime[4]; - static u8 m_stopTime[4]; + static OSTime m_diffTime; + static OSTime m_stopTime; + static bool m_timeStopped; }; #endif /* D_D_LIB_H */ diff --git a/include/d/d_path.h b/include/d/d_path.h index 6e4187ba36..c30446e949 100644 --- a/include/d/d_path.h +++ b/include/d/d_path.h @@ -2,18 +2,22 @@ #define D_D_PATH_H #include "dolphin/types.h" +#include "d/d_stage.h" -class dStage_dPnt_c; - -struct dPath { +class dPath { +public: /* 0x0 */ u16 m_num; /* 0x2 */ u16 m_nextID; /* 0x4 */ u8 field_0x4; /* 0x5 */ u8 m_closed; /* 0x6 */ u8 field_0x6; /* 0x8 */ dStage_dPnt_c* m_points; + }; +// should be move to dlib TU per chn debug +inline int dPath_ChkClose(dPath* i_path) { return (i_path->m_closed & 1); } + dPath* dPath_GetRoomPath(int path_index, int room_no); #endif /* D_D_PATH_H */ diff --git a/include/d/d_stage.h b/include/d/d_stage.h index edc02abc6a..9055acf9af 100644 --- a/include/d/d_stage.h +++ b/include/d/d_stage.h @@ -255,7 +255,7 @@ public: // PPNT struct dStage_dPnt_c { /* 0x0 */ int field_0x0; - /* 0xC */ cXyz m_position; + /* 0x4 */ cXyz m_position; }; // Size: 0x10 struct dStage_FloorInfo_c { @@ -900,13 +900,14 @@ static int dStage_fieldMapFiliInfo2Init(dStage_dt_c*, void*, int, void*); static int dStage_fieldMapMapPathInit(dStage_dt_c*, void*, int, void*); s8 dStage_roomRead_dt_c_GetReverbStage(roomRead_class&, int); -int dStage_changeScene(int, f32, u32, s8, s16, int); +int dStage_changeScene(int i_exitId, f32 i_speed, u32 i_mode, s8 i_roomNo, s16 i_angle, int i_layerOverride); void dStage_infoCreate(); u8 dStage_stagInfo_GetParticleNo(stage_stag_info_class* p_info, int layer); int dStage_changeSceneExitId(cBgS_PolyInfo& param_0, f32 speed, u32 mode, s8 roomNo, s16 angle); int dStage_changeScene4Event(int i_exitId, s8 room_no, int i_wipe, bool param_3, f32 speed, - u32 mode, s16 angle, int param_7); + u32 mode, s16 angle, int param_7); void dStage_Create(); +static s32 dStage_stagInfo_GetSaveTbl(stage_stag_info_class* param_0); inline s32 dStage_roomRead_dt_c_GetVrboxswitch(roomRead_data_class& data) { return data.field_0x2 & 8; diff --git a/include/d/event/d_event.h b/include/d/event/d_event.h index 04a9a610cb..3b2eb2e9bb 100644 --- a/include/d/event/d_event.h +++ b/include/d/event/d_event.h @@ -103,7 +103,9 @@ public: void setPtI_Id(unsigned int id); void setPtD(void* ptr); void setGtItm(u8 itemNo); - void isOrderOK(); + BOOL isOrderOK(); + /* 807DFAD8 */ void checkSkipEdge(); + /* 807E2908 */ void startCheckSkipEdge(void*); u16 chkFlag2(u16 flag) { return flag & mFlag2; } bool runCheck() { return mEventStatus != 0; } diff --git a/include/d/meter/d_meter2_info.h b/include/d/meter/d_meter2_info.h index bf07ea3be1..3088f04487 100644 --- a/include/d/meter/d_meter2_info.h +++ b/include/d/meter/d_meter2_info.h @@ -49,6 +49,10 @@ class dMeter2_c; class J2DPicture; class dMeterMap_c; +enum dMeter2Info_warpStatus { + /* 0x3 */ WARP_DECIDED = 3, +}; + class dMeter2Info_c { public: class WarpInfo_c { @@ -246,6 +250,8 @@ void dMeter2Info_setCloth(u8 i_clothId, bool param_1); void dMeter2Info_setShield(u8 i_itemId, bool param_1); void dMeter2Info_set2DVibration(); void dMeter2Info_set2DVibrationM(); +static void dMeter2Info_setFloatingMessage(u16 pMessageID, s16 pMessageTimer, bool pWakuVisible); +static void dMeter2Info_offUseButton(int pButton); inline void dMeter2Info_Initialize() { g_meter2_info.init(); @@ -495,6 +501,10 @@ inline void dMeter2Info_onDirectUseItem(int param_0) { g_meter2_info.onDirectUseItem(param_0); } +inline void dMeter2Info_setFloatingFlow(u16 param_0, s16 param_1, bool param_2) { + g_meter2_info.setFloatingFlow(param_0, param_1, param_2); +} + char* dMeter2Info_getNumberTextureName(int pIndex); void dMeter2Info_recieveLetter(); u8 dMeter2Info_getNewLetterNum(); diff --git a/include/d/msg/d_msg_object.h b/include/d/msg/d_msg_object.h index dbf173e88b..fedaa1cef2 100644 --- a/include/d/msg/d_msg_object.h +++ b/include/d/msg/d_msg_object.h @@ -133,7 +133,7 @@ public: /* 80238320 */ static void onMsgSend(); /* 8023834C */ void offMsgSend(); /* 80238378 */ void isMsgSend(); - /* 802383A4 */ void isMouthCheck(); + /* 802383A4 */ bool isMouthCheck(); /* 802383D0 */ static u32 getMessageID(); /* 802383E4 */ void getSmellTypeMessageID(); /* 80238410 */ static void setSmellType(u8); @@ -273,6 +273,10 @@ inline void dMsgObject_readMessageGroup(mDoDvdThd_mountXArchive_c** param_0) { dMsgObject_getMsgObjectClass()->readMessageGroup(param_0); } +inline void dMsgObject_setDemoMessage(u32 param_0) { + dMsgObject_getMsgObjectClass()->setDemoMessage(param_0); +} + inline void dMsgObject_setShopWaitTimer(u8 timer) { dMsgObject_c::setShopWaitTimer(timer); } diff --git a/include/d/particle/d_particle.h b/include/d/particle/d_particle.h index d4a8cc965d..270c1347d0 100644 --- a/include/d/particle/d_particle.h +++ b/include/d/particle/d_particle.h @@ -2,9 +2,9 @@ #define D_PARTICLE_D_PARTICLE_H #include "JSystem/JParticle/JPAParticle.h" +#include "d/particle/d_particle_name.h" #include "dolphin/types.h" #include "f_op/f_op_actor.h" -#include "d/particle/d_particle_name.h" class dPa_levelEcallBack : public JPAEmitterCallBack { public: @@ -138,8 +138,8 @@ public: /* 8004AB1C */ void create(u8); /* 8004ABC4 */ void remove(); - /* 8004AC00 */ void setModel(JPABaseEmitter*, J3DModelData*, dKy_tevstr_c const&, u8, void*, u8, - u8); + /* 8004AC00 */ static void setModel(JPABaseEmitter*, J3DModelData*, dKy_tevstr_c const&, u8, + void*, u8, u8); /* 8004AC90 */ void resetModel(JPABaseEmitter*); /* 8004ACC0 */ void setupModel(JPABaseEmitter*); /* 8004ACEC */ void drawModel(JPABaseEmitter*, f32 (*)[4]); @@ -152,7 +152,15 @@ public: /* 80050014 */ virtual void drawAfter(JPABaseEmitter*); /* 8004AAA8 */ virtual void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8); - static u8 mEcallback[4]; + static void setModel(JPABaseEmitter* param_0, J3DModelData* param_1, + const dKy_tevstr_c& param_2, u8 param_3, J3DAnmTexPattern* param_4, + u8 param_5) { + setModel(param_0, param_1, param_2, param_3, param_4, param_5); + } + + static dPa_modelEcallBack* getEcallback() { return mEcallback; } + + static dPa_modelEcallBack* mEcallback; static u8 mPcallback[4]; static J3DModel* mModel; }; @@ -207,7 +215,6 @@ public: /* 8004FE6C */ virtual ~dPa_fsenthPcallBack(); /* 8004DCA0 */ virtual void execute(JPABaseEmitter*, JPABaseParticle*); /* 8004DD0C */ virtual void draw(JPABaseEmitter*, JPABaseParticle*); - }; class dPa_simpleData_c { @@ -244,7 +251,7 @@ public: void offActive() { mStatus &= ~1; } bool isActive() { return mStatus & 1; } - + private: /* 0x00 */ u32 mId; /* 0x04 */ u16 mNameId; @@ -341,6 +348,10 @@ public: static void offStatus(u8 status) { mStatus &= ~status; } static bool isStatus(u8 status) { return mStatus & status; } + static dPa_selectTexEcallBack* getTsuboSelectTexEcallBack(int idx) { + return ((dPa_selectTexEcallBack*)mTsubo) + idx; + } + static u8 mTsubo[64]; static u8 mLifeBall[24]; static Mtx mWindViewMatrix; diff --git a/include/dolphin/ar/ar.h b/include/dolphin/ar/ar.h index 1a76e3b209..4e7621c45d 100644 --- a/include/dolphin/ar/ar.h +++ b/include/dolphin/ar/ar.h @@ -3,10 +3,16 @@ #include "dolphin/types.h" +#ifdef __cplusplus extern "C" { +#endif + u32 ARInit(u32*, u32); u32 ARAlloc(u32); u32 ARGetSize(void); -} + +#ifdef __cplusplus +}; +#endif #endif /* AR_H */ diff --git a/include/dolphin/ar/arq.h b/include/dolphin/ar/arq.h index 49f8f4e08b..b34cf555a1 100644 --- a/include/dolphin/ar/arq.h +++ b/include/dolphin/ar/arq.h @@ -3,10 +3,14 @@ #include "dolphin/types.h" +#ifdef __cplusplus +extern "C" { +#endif + typedef void (*ARQCallback)(u32 request_address); -struct ARQRequest { - ARQRequest* next; +typedef struct ARQRequest { + struct ARQRequest* next; u32 owner; u32 type; u32 priority; @@ -14,12 +18,14 @@ struct ARQRequest { u32 destination; u32 length; ARQCallback callback; -}; +} ARQRequest; -extern "C" { void ARQInit(void); void ARQPostRequest(ARQRequest* task, u32 owner, u32 type, u32 priority, u32 source, u32 destination, u32 length, ARQCallback callback); -} + +#ifdef __cplusplus +}; +#endif #endif /* ARQ_H */ diff --git a/include/dolphin/base/PPCArch.h b/include/dolphin/base/PPCArch.h index 4af0a94b33..d721eb225c 100644 --- a/include/dolphin/base/PPCArch.h +++ b/include/dolphin/base/PPCArch.h @@ -3,4 +3,12 @@ #include "dolphin/types.h" +union FpscrUnion { + f64 f; + struct { + u32 fpscr_pad; + u32 fpscr; + } u; +}; + #endif /* PPCARCH_H */ diff --git a/include/dolphin/dvd/dvd.h b/include/dolphin/dvd/dvd.h index 12316f432f..bdf0da3b33 100644 --- a/include/dolphin/dvd/dvd.h +++ b/include/dolphin/dvd/dvd.h @@ -3,7 +3,9 @@ #include "dolphin/types.h" +#ifdef __cplusplus extern "C" { +#endif typedef enum DVDState { DVD_STATE_END = 0x0, @@ -19,38 +21,37 @@ typedef enum DVDState { DVD_STATE_RETRY = 0xb, DVD_STATE_FATAL_ERROR = -1, } DVDState; -} -struct DVDDirectory { +typedef struct DVDDirectory { u32 entry_number; u32 location; u32 next; -}; +} DVDDirectory; -struct DVDDirectoryEntry { +typedef struct DVDDirectoryEntry { u32 entry_number; BOOL is_directory; char* name; -}; +} DVDDirectoryEntry; -struct DVDDiskID { - char game_name[4]; - char company[2]; - u8 disk_number; - u8 game_version; - u8 is_streaming; - u8 streaming_buffer_size; - u8 padding[22]; -}; +typedef struct DVDDiskID { + /* 0x00 */ char game_name[4]; + /* 0x04 */ char company[2]; + /* 0x06 */ u8 disk_number; + /* 0x07 */ u8 game_version; + /* 0x08 */ u8 is_streaming; + /* 0x09 */ u8 streaming_buffer_size; + /* 0x0A */ u8 padding[22]; +} DVDDiskID; struct DVDFileInfo; struct DVDCommandBlock; -typedef void (*DVDCBCallback)(s32 result, DVDCommandBlock* block); -typedef void (*DVDCallback)(s32 result, DVDFileInfo* info); +typedef void (*DVDCBCallback)(s32 result, struct DVDCommandBlock* block); +typedef void (*DVDCallback)(s32 result, struct DVDFileInfo* info); -struct DVDCommandBlock { - DVDCommandBlock* next; - DVDCommandBlock* prev; +typedef struct DVDCommandBlock { + struct DVDCommandBlock* next; + struct DVDCommandBlock* prev; u32 command; s32 state; u32 offset; @@ -61,31 +62,46 @@ struct DVDCommandBlock { DVDDiskID* disk_id; DVDCBCallback callback; void* user_data; -}; +} DVDCommandBlock; -struct DVDFileInfo { +typedef struct DVDFileInfo { DVDCommandBlock block; u32 start_address; u32 length; DVDCallback callback; -}; +} DVDFileInfo; -extern "C" { -s32 DVDOpen(const char*, DVDFileInfo*); -s32 DVDClose(DVDFileInfo*); -s32 DVDReadPrio(DVDFileInfo*, void*, s32, s32, s32); +typedef struct DVDDriveInfo { + /* 0x00 */ u16 field_0x0; + /* 0x02 */ u16 device_code; + /* 0x04 */ u32 field_0x4; + /* 0x08 */ u32 field_0x8; + /* 0x0C */ u32 field_0xc; + /* 0x10 */ u32 field_0x10; + /* 0x14 */ u32 field_0x14; + /* 0x18 */ u32 field_0x18; + /* 0x1C */ u32 field_0x1c; +} DVDDriveInfo; + +void DVDInit(void); +BOOL DVDOpen(const char* filename, DVDFileInfo* fileinfo); +BOOL DVDClose(DVDFileInfo* fileinfo); +BOOL DVDReadPrio(DVDFileInfo* fileinfo, void*, s32, s32, s32); DVDDiskID* DVDGetCurrentDiskID(void); -s32 DVDFastOpen(long, DVDFileInfo*); -int DVDGetCommandBlockStatus(DVDCommandBlock*); -s32 DVDReadAsyncPrio(DVDFileInfo*, void*, long, long, DVDCallback, long); -s32 DVDConvertPathToEntrynum(const char*); +BOOL DVDFastOpen(long, DVDFileInfo* fileinfo); +BOOL DVDGetCommandBlockStatus(DVDCommandBlock*); +BOOL DVDReadAsyncPrio(DVDFileInfo* fileinfo, void*, long, long, DVDCallback, long); +BOOL DVDConvertPathToEntrynum(const char*); DVDState DVDGetDriveStatus(void); -s32 DVDCheckDisk(void); +BOOL DVDCheckDisk(void); -BOOL DVDChangeDir(const char*); -BOOL DVDCloseDir(DVDDirectory*); -BOOL DVDOpenDir(const char*, DVDDirectory*); -BOOL DVDReadDir(DVDDirectory*, DVDDirectoryEntry*); -} +BOOL DVDChangeDir(const char* dirname); +BOOL DVDCloseDir(DVDDirectory* dir); +BOOL DVDOpenDir(const char*, DVDDirectory* dir); +BOOL DVDReadDir(DVDDirectory* dir, DVDDirectoryEntry* entry); + +#ifdef __cplusplus +}; +#endif #endif /* DVD_H */ diff --git a/include/dolphin/gd/GDBase.h b/include/dolphin/gd/GDBase.h index 31f61bf11a..417b8b0586 100644 --- a/include/dolphin/gd/GDBase.h +++ b/include/dolphin/gd/GDBase.h @@ -3,12 +3,16 @@ #include "dolphin/types.h" -struct GDLObj { +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct GDLObj { /* 0x0 */ u8* start; /* 0x4 */ u32 length; /* 0x8 */ u8* ptr; /* 0xC */ u8* end; -}; // Size: 0x10 +} GDLObj; // Size: 0x10 extern GDLObj* __GDCurrentDL; @@ -20,11 +24,14 @@ inline u32 GDGetGDLObjOffset(GDLObj* obj) { return (u32)(obj->ptr - obj->start); } -extern "C" { - void GDInitGDLObj(GDLObj*, u8*, u32); void GDFlushCurrToMem(); void GDPadCurr32(); -} + +typedef void (*GDOverflowCallback)(void); + +#ifdef __cplusplus +}; +#endif #endif /* GDBASE_H */ diff --git a/include/dolphin/gd/GDGeometry.h b/include/dolphin/gd/GDGeometry.h index 2d09d0f246..078eb39d70 100644 --- a/include/dolphin/gd/GDGeometry.h +++ b/include/dolphin/gd/GDGeometry.h @@ -4,11 +4,16 @@ #include "dolphin/gx/GX.h" #include "dolphin/types.h" +#ifdef __cplusplus extern "C" { +#endif void GDSetVtxDescv(GXVtxDescList*); void GDSetArray(GXAttr attr, const void* data, u8 stride); void GDSetArrayRaw(GXAttr attr, u32 data, u8 stride); -} + +#ifdef __cplusplus +}; +#endif #endif /* GDGEOMETRY_H */ diff --git a/include/dolphin/gx/GX.h b/include/dolphin/gx/GX.h index 3659f4e461..eb8e47bafc 100644 --- a/include/dolphin/gx/GX.h +++ b/include/dolphin/gx/GX.h @@ -1,235 +1,46 @@ #ifndef GX_H_ #define GX_H_ +#include "dolphin/gx/GXInit.h" +#include "dolphin/gx/GXAttr.h" +#include "dolphin/gx/GXBump.h" #include "dolphin/gx/GXDisplayList.h" -#include "dolphin/gx/GXStruct.h" -#include "dolphin/gx/GXEnum.h" -#include "dolphin/mtx/mtx.h" -#include "dolphin/mtx/mtx44.h" -#include "dolphin/types.h" -#include "global.h" +#include "dolphin/gx/GXFifo.h" +#include "dolphin/gx/GXFrameBuf.h" +#include "dolphin/gx/GXGeometry.h" +#include "dolphin/gx/GXLight.h" +#include "dolphin/gx/GXMisc.h" +#include "dolphin/gx/GXPerf.h" +#include "dolphin/gx/GXPixel.h" +#include "dolphin/gx/GXTev.h" +#include "dolphin/gx/GXTexture.h" +#include "dolphin/gx/GXTransform.h" #ifdef __cplusplus extern "C" { #endif -typedef struct _GXVtxDescList { - /* 0x0 */ GXAttr attr; - /* 0x4 */ GXAttrType type; -} GXVtxDescList; // Size: 0x08 - -typedef struct _GXVtxAttrFmtList { - /* 0x00 */ GXAttr mAttrib; - /* 0x04 */ GXCompCnt mCompCnt; - /* 0x08 */ GXCompType mCompType; - /* 0x0C */ u8 mCompShift; -} GXVtxAttrFmtList; // Size: 0x10 - -typedef GXTexRegion (*GXTexRegionCallback)(void); -typedef u32 (*GXTlutRegionCallback)(u32); - -typedef struct _GXData { - /* 0x000 */ u16 field_0x0; - /* 0x002 */ u16 field_0x2; - /* 0x004 */ u16 field_0x4; - /* 0x006 */ u16 field_0x6; - /* 0x008 */ u32 field_0x8; - /* 0x00C */ u32 field_0xc; - /* 0x010 */ u32 field_0x10; - /* 0x014 */ GXAttrType field_0x14; - /* 0x018 */ GXAttrType field_0x18; - /* 0x01C */ GXCompCnt field_0x1c[8]; - /* 0x03C */ GXCompCnt field_0x3c[8]; - /* 0x05C */ u32 field_0x5c[8]; - /* 0x07C */ u32 field_0x7c; - /* 0x080 */ u32 field_0x80; - /* 0x084 */ u32 field_0x84; - /* 0x088 */ u8 field_0x88[0xA8 - 0x88]; - /* 0x0A8 */ u32 field_0xa8[2]; - /* 0x0B0 */ u32 field_0xb0[2]; - /* 0x0B8 */ u32 field_0xb8[8]; // GX_MAX_TEXCOORD - /* 0x0D8 */ u32 field_0xd8[8]; // GX_MAX_TEXCOORD - /* 0x0F8 */ u32 field_0xf8; - /* 0x0FC */ u32 field_0xfc; - /* 0x100 */ u32 field_0x100[GX_MAX_TEVSTAGE / 2]; - /* 0x120 */ u32 field_0x120; - /* 0x124 */ u32 field_0x124; - /* 0x128 */ u8 field_0x128[0x130 - 0x128]; - /* 0x130 */ u32 field_0x130[GX_MAX_TEVSTAGE]; - /* 0x170 */ u32 field_0x170[GX_MAX_TEVSTAGE]; - /* 0x1B0 */ u32 field_0x1b0[GX_MAX_TEVSTAGE / 2]; - /* 0x1D0 */ u32 field_0x1d0; - /* 0x1D4 */ u32 field_0x1d4; - /* 0x1D8 */ u32 field_0x1d8; - /* 0x1DC */ u32 field_0x1dc; - /* 0x1E0 */ u32 field_0x1e0; - /* 0x1E4 */ u32 field_0x1e4; - /* 0x1E8 */ u32 field_0x1e8; - /* 0x1EC */ u32 field_0x1ec; - /* 0x1F0 */ u32 field_0x1f0; - /* 0x1F4 */ u32 field_0x1f4; - /* 0x1F8 */ u32 field_0x1f8; - /* 0x1FC */ u32 field_0x1fc; - /* 0x200 */ u8 field_0x200; - /* 0x204 */ u32 field_0x204; - /* 0x208 */ GXTexRegion field_0x208[8]; - /* 0x288 */ GXTexRegion field_0x288[8]; - /* 0x308 */ GXTexRegion field_0x308[8]; - /* 0x388 */ GXTlutRegion field_0x388[16]; - /* 0x488 */ GXTlutRegion field_0x488[4]; - /* 0x4C8 */ GXTexRegionCallback field_0x4c8; - /* 0x4CC */ GXTlutRegionCallback field_0x4cc; - /* 0x4D0 */ GXAttrType field_0x4d0; - /* 0x4D4 */ u8 field_0x4d4; - /* 0x4D5 */ u8 field_0x4d5; - /* 0x4D8 */ GXProjectionType field_0x4d8; - /* 0x4DC */ Mtx field_0x4dc; - /* 0x50C */ f32 field_0x50c; - /* 0x510 */ f32 field_0x510; - /* 0x514 */ u32 field_0x514[8]; - /* 0x534 */ u32 field_0x534[8]; - /* 0x554 */ u32 field_0x554; - /* 0x558 */ u32 field_0x558[8]; - /* 0x578 */ u8 field_0x578[0x594 - 0x578]; - /* 0x594 */ u32 field_0x594; - /* 0x598 */ u32 field_0x598; - /* 0x59C */ u32 field_0x59c; - /* 0x5A0 */ u8 field_0x5a0[4]; - /* 0x5A4 */ u32 field_0x5a4; - /* 0x5A8 */ u8 field_0x5a8; - /* 0x5A9 */ u8 field_0x5a9; - /* 0x5AA */ u8 field_0x5aa; - /* 0x5AB */ u8 field_0x5ab; - /* 0x5AC */ u32 field_0x5ac; -} GXData; // Size: 0x5B0 - -STATIC_ASSERT(sizeof(GXData) == 0x5B0); - -extern GXData* __GXData; - -extern u32* __piReg; -extern u16* __cpReg; +// Pack value into bitfield +// Pack value into bitfield +#define GX_BITFIELD_SET(field, pos, size, value) (field) = __rlwimi((field), (value), 31 - (pos) - (size) + 1, (pos), (pos) + (size)-1) #define GX_LOAD_BP_REG 0x61 #define GX_NOP 0 -f32 GXGetYScaleFactor(u16 efb_height, u16 xfb_height); -u16 GXGetNumXfbLines(u32 efb_height, f32 y_scale); +typedef union { + u8 u8; + u16 u16; + u32 u32; + u64 u64; + s8 s8; + s16 s16; + s32 s32; + s64 s64; + f32 f32; + f64 f64; +} PPCWGPipe; -void GXBegin(GXPrimitive, GXVtxFmt, u16); -void GXLoadTexObj(GXTexObj*, GXTexMapID); -void GXInitTexObjLOD(GXTexObj*, GXTexFilter, GXTexFilter, f32, f32, f32, GXBool, GXBool, - GXAnisotropy); -void GXInitTexObj(GXTexObj*, void*, u16, u16, GXTexFmt, GXTexWrapMode, GXTexWrapMode, GXBool); -void GXInitTlutObj(GXTlutObj*, void*, GXTlutFmt, u16); -void GXLoadTlut(GXTlutObj*, u32); -void GXInitTexObjCI(GXTexObj*, void*, u16, u16, GXCITexFmt, GXTexWrapMode, GXTexWrapMode, GXBool, - u32); -void GXSetNumChans(u8); -void GXSetNumTevStages(u8); -void GXSetNumTexGens(u8); -void GXSetTevOrder(GXTevStageID, GXTexCoordID, GXTexMapID, GXChannelID); -void GXSetChanCtrl(GXChannelID, GXBool, GXColorSrc, GXColorSrc, u32, GXDiffuseFn, GXAttnFn); -void GXSetTevOp(GXTevStageID, GXTevMode); -void GXSetTevColor(GXTevRegID, GXColor); -void GXSetTevColorIn(GXTevStageID, GXTevColorArg, GXTevColorArg, GXTevColorArg, GXTevColorArg); -void GXSetTevAlphaIn(GXTevStageID, GXTevAlphaArg, GXTevAlphaArg, GXTevAlphaArg, GXTevAlphaArg); -void GXSetTevColorOp(GXTevStageID, GXTevOp, GXTevBias, GXTevScale, GXBool, GXTevRegID); -void GXSetTevAlphaOp(GXTevStageID, GXTevOp, GXTevBias, GXTevScale, GXBool, GXTevRegID); -void GXSetTevIndirect(GXTevStageID, _GXIndTexStageID, GXIndTexFormat, GXIndTexBiasSel, - GXIndTexMtxID, GXIndTexWrap, GXIndTexWrap, GXBool, GXBool, GXIndTexAlphaSel); -void GXSetBlendMode(GXBlendMode, GXBlendFactor, GXBlendFactor, GXLogicOp); -void GXSetVtxAttrFmt(GXVtxFmt, GXAttr, GXCompCnt, GXCompType, u32); -void GXClearVtxDesc(void); -void GXSetVtxDesc(GXAttr, GXAttrType); -void GXSetArray(GXAttr, void*, u8); -typedef void (*GXDrawDoneCallback)(void); -void GXSetDrawDoneCallback(GXDrawDoneCallback); -void GXDrawDone(void); -void GXAbortFrame(void); -void GXFlush(void); -void GXSetCopyClear(GXColor, u32); -void GXSetDispCopySrc(u16, u16, u16, u16); -void GXSetDispCopyDst(u16, u16); -u32 GXSetDispCopyYScale(f32); -void GXSetCopyClamp(GXFBClamp); -void GXSetDispCopyGamma(GXGamma); -void GXCopyDisp(void*, GXBool); -void GXSetPixelFmt(GXPixelFmt, GXZFmt16); - -struct OSThread; -OSThread* GXSetCurrentGXThread(void); -OSThread* GXGetCurrentGXThread(void); - -void GXCopyTex(void*, GXBool); -void GXGetProjectionv(f32*); -u32 GXGetTexBufferSize(u16 width, u16 height, u32 format, GXBool is_mip_map, u8 max_lod); -void GXGetViewportv(f32*); -void GXInitLightColor(GXLightObj*, GXColor); -void GXInitLightDir(GXLightObj*, f32, f32, f32); -void GXInitLightDistAttn(GXLightObj*, f32, f32, GXDistAttnFn); -void GXInitLightPos(GXLightObj*, f32, f32, f32); -void GXInitLightSpot(GXLightObj*, f32, GXSpotFn); -void GXInvalidateTexAll(void); -void GXInitLightAttn(GXLightObj*, f32, f32, f32, f32, f32, f32); -void GXLoadLightObjImm(GXLightObj*, GXLightID); -void GXLoadPosMtxImm(Mtx, u32); -void GXLoadNrmMtxImm(Mtx, u32); -void GXLoadTexMtxImm(Mtx, u32, GXTexMtxType); -void GXPixModeSync(void); -void GXProject(f32, f32, f32, Mtx, f32*, f32*, f32*, f32*, f32*); -void GXSetAlphaCompare(GXCompare, u8, GXAlphaOp, GXCompare, u8); -void GXSetAlphaUpdate(GXBool); -void GXSetChanAmbColor(GXChannelID, GXColor); -void GXSetChanMatColor(GXChannelID, GXColor); -void GXSetClipMode(GXClipMode); -void GXSetCoPlanar(GXBool); -void GXSetColorUpdate(GXBool); -void GXSetCopyFilter(GXBool, u8[12][2], GXBool, u8[7]); -void GXSetCullMode(GXCullMode); -void GXSetCurrentMtx(u32); -void GXSetDither(GXBool); -void GXSetFog(GXFogType, f32, f32, f32, f32, GXColor); -void GXSetFogRangeAdj(GXBool, u16, GXFogAdjTable*); -void GXSetNumIndStages(u8); -void GXSetProjection(Mtx44, GXProjectionType); -void GXSetScissor(u32, u32, u32, u32); -void GXSetTevColorS10(GXTevRegID, GXColorS10); -void GXSetTevKAlphaSel(GXTevStageID, GXTevKAlphaSel); -void GXSetTevSwapMode(GXTevStageID, GXTevSwapSel, GXTevSwapSel); -void GXSetTevSwapModeTable(GXTevSwapSel, GXTevColor, GXTevColor, GXTevColor, GXTevColor); -void GXSetTexCoordGen2(GXTexCoordID, GXTexGenType, GXTexGenSrc, u32, GXBool, u32); -void GXSetTexCopyDst(u16, u16, GXTexFmt, GXBool); -void GXSetTexCopySrc(u16, u16, u16, u16); -void GXSetViewport(f32, f32, f32, f32, f32, f32); -void GXSetZCompLoc(GXBool); -void GXSetZMode(GXBool, GXCompare, GXBool); -void GXSetZTexture(GXZTexOp, GXTexFmt, u32); -void GXSetPointSize(u8, GXTexOffset); -void GXSetLineWidth(u8, GXTexOffset); -void GXSetTevDirect(GXTevStageID); -void GXSetTevKColor(GXTevKColorID, GXColor); -void GXSetTevKColorSel(GXTevStageID, GXTevKColorSel); -void GXGetScissor(u32*, u32*, u32*, u32*); -void GXSetIndTexMtx(GXIndTexMtxID, Mtx23, s8); -void GXSetIndTexCoordScale(GXIndTexStageID, GXIndTexScale, GXIndTexScale); -void GXSetIndTexOrder(GXIndTexStageID, GXTexCoordID, GXTexMapID); -void GXEnableTexOffsets(GXTexCoordID, GXBool, GXBool); -void GXSetDstAlpha(GXBool, u8); -u32 GXGetFifoSize(GXFifoObj*); -void* GXGetFifoBase(GXFifoObj*); -GXFifoObj* GXInit(void*, u32); -GXFifoObj* GXGetCPUFifo(void); -void GXGetGPStatus(GXBool*, GXBool*, GXBool*, GXBool*, GXBool*); -void GXReadXfRasMetric(u32*, u32*, u32*, u32*); -void GXInitFifoBase(GXFifoObj*, void*, u32); -void GXInitFifoPtrs(GXFifoObj*, void*, void*); -void GXSaveCPUFifo(GXFifoObj*); -void GXSetMisc(u32 opt, u32 val); -void GXInitTexCacheRegion(GXTexRegion* region, GXBool, u32, GXTexCacheSize, u32, GXTexCacheSize); -void GXPeekZ(u16 x, u16 y, u32* dst); -void __GXSetDirtyState(void); -void __GXSendFlushPrim(void); +volatile PPCWGPipe GXFIFO : 0xCC008000; #define GFX_FIFO(T) (*(volatile T*)0xCC008000) diff --git a/include/dolphin/gx/GXAttr.h b/include/dolphin/gx/GXAttr.h index 9280e4a584..9b9bbdf4ee 100644 --- a/include/dolphin/gx/GXAttr.h +++ b/include/dolphin/gx/GXAttr.h @@ -1,6 +1,39 @@ #ifndef GXATTR_H #define GXATTR_H -#include "dolphin/types.h" +#include "dolphin/gx/GXEnum.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct _GXVtxDescList { + /* 0x0 */ GXAttr attr; + /* 0x4 */ GXAttrType type; +} GXVtxDescList; // Size: 0x08 + +typedef struct _GXVtxAttrFmtList { + /* 0x00 */ GXAttr mAttrib; + /* 0x04 */ GXCompCnt mCompCnt; + /* 0x08 */ GXCompType mCompType; + /* 0x0C */ u8 mCompShift; +} GXVtxAttrFmtList; // Size: 0x10 + +void GXSetVtxDesc(GXAttr attr, GXAttrType type); +void GXSetVtxDescv(GXVtxDescList* list); +void __GXSetVCD(void); +void __GXCalculateVLim(void); +void GXClearVtxDesc(void); +void GXSetVtxAttrFmt(GXVtxFmt fmt, GXAttr attr, GXCompCnt cnt, GXCompType type, u32); +void GXSetVtxAttrFmtv(GXVtxFmt fmt, GXVtxAttrFmtList* list); +void __GXSetVAT(void); +void GXSetArray(GXAttr attr, void* base, u8); +void GXInvalidateVtxCache(void); +void GXSetTexCoordGen2(GXTexCoordID dst, GXTexGenType type, GXTexGenSrc src, u32 mtx, GXBool renormalize, u32 pt_mtx); +void GXSetNumTexGens(u8 numTexGens); + +#ifdef __cplusplus +}; +#endif #endif /* GXATTR_H */ diff --git a/include/dolphin/gx/GXBump.h b/include/dolphin/gx/GXBump.h index 79ed20bb9d..29337920c7 100644 --- a/include/dolphin/gx/GXBump.h +++ b/include/dolphin/gx/GXBump.h @@ -1,6 +1,24 @@ #ifndef GXBUMP_H #define GXBUMP_H -#include "dolphin/types.h" +#include "dolphin/gx/GXEnum.h" +#include "dolphin/mtx/mtx.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void GXSetTevIndirect(GXTevStageID tevStage, GXIndTexStageID texStage, GXIndTexFormat texFmt, + GXIndTexBiasSel biasSel, GXIndTexMtxID mtxID, GXIndTexWrap wrapS, + GXIndTexWrap wrapT, u8 addPrev, u8 utcLod, GXIndTexAlphaSel alphaSel); +void GXSetIndTexMtx(GXIndTexMtxID mtxID, f32 offset[6], s8 scale_exp); +void GXSetIndTexCoordScale(GXIndTexStageID texStage, GXIndTexScale scaleS, GXIndTexScale scaleT); +void GXSetIndTexOrder(GXIndTexStageID stage, GXTexCoordID coord, GXTexMapID map); +void GXSetNumIndStages(u8 num); +void GXSetTevDirect(GXTevStageID stage); + +#ifdef __cplusplus +}; +#endif #endif /* GXBUMP_H */ diff --git a/include/dolphin/gx/GXDisplayList.h b/include/dolphin/gx/GXDisplayList.h index 54845d6a46..fc8a4d5358 100644 --- a/include/dolphin/gx/GXDisplayList.h +++ b/include/dolphin/gx/GXDisplayList.h @@ -3,10 +3,16 @@ #include "dolphin/types.h" +#ifdef __cplusplus extern "C" { +#endif + void GXBeginDisplayList(void* list, u32 capacity); void GXEndDisplayList(void); void GXCallDisplayList(void* list, u32 nbytes); + +#ifdef __cplusplus }; +#endif #endif /* GXDISPLAYLIST_H */ diff --git a/include/dolphin/gx/GXEnum.h b/include/dolphin/gx/GXEnum.h index b8ab1cb40c..591f873efd 100644 --- a/include/dolphin/gx/GXEnum.h +++ b/include/dolphin/gx/GXEnum.h @@ -20,12 +20,14 @@ typedef enum _GXCullMode { /* 0x3 */ GX_CULL_ALL } GXCullMode; -typedef enum _GXBool { +typedef enum _GXBoolVal { /* 0x0 */ GX_FALSE, /* 0x1 */ GX_TRUE, /* 0x0 */ GX_DISABLE = 0, /* 0x1 */ GX_ENABLE -} GXBool; +} GXBoolVal; + +typedef u8 GXBool; typedef enum _GXTexMapID { /* 0x000 */ GX_TEXMAP0, @@ -429,11 +431,11 @@ typedef enum _GXAnisotropy { /* 0x3 */ GX_MAX_ANISOTROPY, } GXAnisotropy; -enum GXCITexFmt { +typedef enum _GXCITexFmt { /* 0x8 */ GX_TF_C4 = 8, /* 0x8 */ GX_TF_C8, /* 0xA */ GX_TF_C14X2 -}; +} GXCITexFmt; typedef enum _GXTexMtxType { /* 0x0 */ GX_MTX3x4, @@ -619,9 +621,11 @@ typedef enum _GXIndTexMtxID { /* 0x1 */ GX_ITM_0, /* 0x2 */ GX_ITM_1, /* 0x3 */ GX_ITM_2, + /* 0x4 */ GX_ITM_3, /* 0x5 */ GX_ITM_S0 = 5, /* 0x6 */ GX_ITM_S1, /* 0x7 */ GX_ITM_S2, + /* 0x8 */ GX_ITM_S3, /* 0x9 */ GX_ITM_T0 = 9, /* 0xA */ GX_ITM_T1, /* 0xB */ GX_ITM_T2, @@ -711,7 +715,7 @@ typedef enum _GXTexMtx { GX_TEXMTX8 = 30 + 8 * 3, GX_TEXMTX9 = 30 + 9 * 3, GX_IDENTITY = 60, -}; +} GXTexMtx; typedef enum _GXPTTexMtx { GX_PTTEXMTX0 = 64 + 0 * 3, @@ -735,7 +739,7 @@ typedef enum _GXPTTexMtx { GX_PTTEXMTX18 = 64 + 18 * 3, GX_PTTEXMTX19 = 64 + 19 * 3, GX_PTIDENTITY = 125, -}; +} GXPTTexMtx; typedef enum _GXFBClamp { /* 0x0 */ GX_CLAMP_NONE, @@ -776,4 +780,30 @@ typedef enum _GXClipMode { /* 0x1 */ GX_CLIP_DISABLE, } GXClipMode; +typedef enum _GXCopyMode { + /* 0x0 */ GX_COPY_PROGRESSIVE, + /* 0x1 */ GX_COPY_INTLC_EVEN, + /* 0x2 */ GX_COPY_INTLC_ODD, +} GXCopyMode; + +typedef enum _GXAlphaReadMode { + /* 0x0 */ GX_READ_00, + /* 0x1 */ GX_READ_FF, + /* 0x2 */ GX_READ_NONE, +} GXAlphaReadMode; + +typedef enum _GXTlutSize { + /* 0x001 */ GX_TLUT_16 = 1, + /* 0x002 */ GX_TLUT_32 = 2, + /* 0x004 */ GX_TLUT_64 = 4, + /* 0x008 */ GX_TLUT_128 = 8, + /* 0x010 */ GX_TLUT_256 = 16, + /* 0x020 */ GX_TLUT_512 = 32, + /* 0x040 */ GX_TLUT_1K = 64, + /* 0x080 */ GX_TLUT_2K = 128, + /* 0x100 */ GX_TLUT_4K = 256, + /* 0x200 */ GX_TLUT_8K = 512, + /* 0x400 */ GX_TLUT_16K = 1024, +} GXTlutSize; + #endif /* GXENUM_H */ \ No newline at end of file diff --git a/include/dolphin/gx/GXFifo.h b/include/dolphin/gx/GXFifo.h index 8de5a88972..68f955e826 100644 --- a/include/dolphin/gx/GXFifo.h +++ b/include/dolphin/gx/GXFifo.h @@ -1,6 +1,38 @@ #ifndef GXFIFO_H #define GXFIFO_H -#include "dolphin/types.h" +#include "dolphin/gx/GXStruct.h" +#include "dolphin/gx/GXEnum.h" +#include "dolphin/os/OS.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void GXInitFifoBase(GXFifoObj* fifo, void* base, u32 size); +void GXInitFifoPtrs(GXFifoObj* fifo, void* read_ptr, void* write_ptr); +void GXSetCPUFifo(void); +void GXSetGPFifo(void); +void GXSaveCPUFifo(GXFifoObj* fifo); +void __GXSaveCPUFifoAux(GXFifoObj* fifo); +void GXGetGPStatus(GXBool* overhi, GXBool* underlo, GXBool* read_idle, GXBool* cmd_idle, GXBool* breakpoint); +void* GXGetFifoBase(GXFifoObj* fifo); +u32 GXGetFifoSize(GXFifoObj* fifo); +void GXSetBreakPtCallback(void); +void __GXFifoInit(void); +void __GXFifoReadEnable(void); +void __GXFifoReadDisable(void); +void __GXFifoLink(u8); +void __GXWriteFifoIntEnable(u8, u8); +void __GXWriteFifoIntReset(u8, u8); +void __GXCleanGPFifo(void); +OSThread* GXSetCurrentGXThread(void); +OSThread* GXGetCurrentGXThread(void); +GXFifoObj* GXGetCPUFifo(void); +u32 GXGetGPFifo(void); + +#ifdef __cplusplus +}; +#endif #endif /* GXFIFO_H */ diff --git a/include/dolphin/gx/GXFrameBuf.h b/include/dolphin/gx/GXFrameBuf.h index 91f4e49604..ffa428cb59 100644 --- a/include/dolphin/gx/GXFrameBuf.h +++ b/include/dolphin/gx/GXFrameBuf.h @@ -1,6 +1,31 @@ #ifndef GXFRAMEBUF_H #define GXFRAMEBUF_H -#include "dolphin/types.h" +#include "dolphin/gx/GXStruct.h" +#include "dolphin/gx/GXEnum.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void GXSetDispCopySrc(u16 left, u16 top, u16 width, u16 height); +void GXSetTexCopySrc(u16 left, u16 top, u16 width, u16 height); +void GXSetDispCopyDst(u16 width, u16 height); +void GXSetTexCopyDst(u16 width, u16 height, GXTexFmt fmt, GXBool mipmap); +void GXSetDispCopyFrame2Field(GXCopyMode mode); +void GXSetCopyClamp(GXFBClamp clamp); +u16 GXGetNumXfbLines(u32 efb_height, f32 y_scale); +f32 GXGetYScaleFactor(u16 efb_height, u16 xfb_height); +u32 GXSetDispCopyYScale(f32 y_scale); +void GXSetCopyClear(GXColor color, u32 clear_z); +void GXSetCopyFilter(GXBool antialias, u8 pattern[12][2], GXBool vf, u8 vfilter[7]); +void GXSetDispCopyGamma(GXGamma gamma); +void GXCopyDisp(void* dst, GXBool clear); +void GXCopyTex(void* dst, GXBool clear); +void GXClearBoundingBox(void); + +#ifdef __cplusplus +}; +#endif #endif /* GXFRAMEBUF_H */ diff --git a/include/dolphin/gx/GXGeometry.h b/include/dolphin/gx/GXGeometry.h index 0adddc6fdb..49315693f3 100644 --- a/include/dolphin/gx/GXGeometry.h +++ b/include/dolphin/gx/GXGeometry.h @@ -1,6 +1,25 @@ #ifndef GXGEOMETRY_H #define GXGEOMETRY_H -#include "dolphin/types.h" +#include "dolphin/gx/GXStruct.h" +#include "dolphin/gx/GXEnum.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void __GXSetDirtyState(void); +void GXBegin(GXPrimitive type, GXVtxFmt fmt, u16 vert_num); +void __GXSendFlushPrim(void); +void GXSetLineWidth(u8 width, GXTexOffset offsets); +void GXSetPointSize(u8 size, GXTexOffset offsets); +void GXEnableTexOffsets(GXTexCoordID coord, GXBool line, GXBool point); +void GXSetCullMode(GXCullMode mode); +void GXSetCoPlanar(GXBool enable); +void __GXSetGenMode(void); + +#ifdef __cplusplus +}; +#endif #endif /* GXGEOMETRY_H */ diff --git a/include/dolphin/gx/GXInit.h b/include/dolphin/gx/GXInit.h index 0fe7f0caf3..881ee2c24a 100644 --- a/include/dolphin/gx/GXInit.h +++ b/include/dolphin/gx/GXInit.h @@ -1,6 +1,118 @@ #ifndef GXINIT_H #define GXINIT_H -#include "dolphin/types.h" +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXStruct.h" +#include "dolphin/mtx/mtx.h" +#include "global.h" + +typedef GXTexRegion (*GXTexRegionCallback)(GXTexObj* obj); +typedef GXTlutRegion* (*GXTlutRegionCallback)(u32 name); + +typedef struct _GXData { + /* 0x000 */ u16 field_0x0; + /* 0x002 */ u16 field_0x2; + /* 0x004 */ u16 field_0x4; + /* 0x006 */ u16 field_0x6; + /* 0x008 */ u32 field_0x8; + /* 0x00C */ u32 field_0xc; + /* 0x010 */ u32 field_0x10; + /* 0x014 */ u32 field_0x14; + /* 0x018 */ GXAttrType field_0x18; + /* 0x01C */ GXCompCnt field_0x1c[8]; + /* 0x03C */ GXCompCnt field_0x3c[8]; + /* 0x05C */ u32 field_0x5c[8]; + /* 0x07C */ u32 field_0x7c; + /* 0x080 */ u32 field_0x80; + /* 0x084 */ u32 field_0x84; + /* 0x088 */ u8 field_0x88[0xA8 - 0x88]; + /* 0x0A8 */ GXColor ambColors[2]; + /* 0x0B0 */ GXColor matColors[2]; + /* 0x0B8 */ u32 field_0xb8[8]; // GX_MAX_TEXCOORD + /* 0x0D8 */ u32 field_0xd8[8]; // GX_MAX_TEXCOORD + /* 0x0F8 */ u32 field_0xf8; + /* 0x0FC */ u32 field_0xfc; + /* 0x100 */ u32 field_0x100[GX_MAX_TEVSTAGE / 2]; + /* 0x120 */ u32 field_0x120; + /* 0x124 */ u32 field_0x124; + /* 0x128 */ u32 field_0x128; + /* 0x12C */ u32 field_0x12c; + /* 0x130 */ u32 field_0x130[GX_MAX_TEVSTAGE]; + /* 0x170 */ u32 field_0x170[GX_MAX_TEVSTAGE]; + /* 0x1B0 */ u32 field_0x1b0[GX_MAX_TEVSTAGE / 2]; + /* 0x1D0 */ u32 field_0x1d0; + /* 0x1D4 */ u32 field_0x1d4; + /* 0x1D8 */ u32 field_0x1d8; + /* 0x1DC */ u32 field_0x1dc; + /* 0x1E0 */ u32 field_0x1e0; + /* 0x1E4 */ u32 field_0x1e4; + /* 0x1E8 */ u32 field_0x1e8; + /* 0x1EC */ u32 field_0x1ec; + /* 0x1F0 */ u32 field_0x1f0; + /* 0x1F4 */ u32 field_0x1f4; + /* 0x1F8 */ u32 field_0x1f8; + /* 0x1FC */ u32 field_0x1fc; + /* 0x200 */ u8 field_0x200; + /* 0x204 */ u32 field_0x204; + /* 0x208 */ GXTexRegion field_0x208[8]; + /* 0x288 */ GXTexRegion field_0x288[8]; + /* 0x308 */ GXTexRegion field_0x308[8]; + /* 0x388 */ GXTlutRegion field_0x388[16]; + /* 0x488 */ GXTlutRegion field_0x488[4]; + /* 0x4C8 */ GXTexRegionCallback field_0x4c8; + /* 0x4CC */ GXTlutRegionCallback field_0x4cc; + /* 0x4D0 */ GXAttrType field_0x4d0; + /* 0x4D4 */ u8 field_0x4d4; + /* 0x4D5 */ u8 field_0x4d5; + /* 0x4D8 */ GXProjectionType field_0x4d8; + /* 0x4DC */ Mtx field_0x4dc; + /* 0x50C */ f32 field_0x50c; + /* 0x510 */ f32 field_0x510; + /* 0x514 */ u32 field_0x514[8]; + /* 0x534 */ u32 field_0x534[8]; + /* 0x554 */ u32 field_0x554; + /* 0x558 */ u32 field_0x558[8]; + /* 0x578 */ u8 field_0x578[0x594 - 0x578]; + /* 0x594 */ u32 field_0x594; + /* 0x598 */ u32 field_0x598; + /* 0x59C */ u32 field_0x59c; + /* 0x5A0 */ u8 field_0x5a0[4]; + /* 0x5A4 */ u32 field_0x5a4; + /* 0x5A8 */ u8 field_0x5a8; + /* 0x5A9 */ u8 field_0x5a9; + /* 0x5AA */ u8 field_0x5aa; + /* 0x5AB */ u8 field_0x5ab; + /* 0x5AC */ u32 field_0x5ac; +} GXData; // Size: 0x5B0 + +STATIC_ASSERT(sizeof(GXData) == 0x5B0); + +extern GXData* __GXData; + +extern u32* __piReg; +extern u16* __cpReg; +extern u8 __peReg[4]; +extern u8 __memReg[4]; + +inline void GXSetWasteFlags() { + GXData* data = __GXData; + data->field_0x5ac |= 0x3; + data->field_0x2 = 0; +} + +#ifdef __cplusplus +extern "C" { +#endif + +GXTexRegion* __GXDefaultTexRegionCallback(GXTexObj* obj, GXTexMapID mapID); +GXTlutRegion* __GXDefaultTlutRegionCallback(u32 tlut); +void __GXShutdown(s32); +void __GXInitRevisionBits(void); +GXFifoObj* GXInit(void* base, u32 size); +void __GXInitGX(void); + +#ifdef __cplusplus +}; +#endif #endif /* GXINIT_H */ diff --git a/include/dolphin/gx/GXLight.h b/include/dolphin/gx/GXLight.h index 817b2cb816..82fd78a1b0 100644 --- a/include/dolphin/gx/GXLight.h +++ b/include/dolphin/gx/GXLight.h @@ -1,6 +1,27 @@ #ifndef GXLIGHT_H #define GXLIGHT_H -#include "dolphin/types.h" +#include "dolphin/gx/GXStruct.h" +#include "dolphin/gx/GXEnum.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void GXInitLightAttn(GXLightObj* obj, f32 a0, f32 a1, f32 a2, f32 k0, f32 k1, f32 k2); +void GXInitLightSpot(GXLightObj* obj, f32 cutoff, GXSpotFn spot_fn); +void GXInitLightDistAttn(GXLightObj* obj, f32 dist, f32 brightness, GXDistAttnFn dist_fn); +void GXInitLightPos(GXLightObj* obj, f32 x, f32 y, f32 z); +void GXInitLightDir(GXLightObj* obj, f32 x, f32 y, f32 z); +void GXInitLightColor(GXLightObj* obj, GXColor color); +void GXLoadLightObjImm(GXLightObj* obj, GXLightID light); +void GXSetChanAmbColor(GXChannelID channel, GXColor color); +void GXSetChanMatColor(GXChannelID channel, GXColor color); +void GXSetNumChans(u8 chan_num); +void GXSetChanCtrl(GXChannelID channel, GXBool enable, GXColorSrc amb_src, GXColorSrc mat_src, u32 light_mask, GXDiffuseFn diff_fn, GXAttnFn attn_fn); + +#ifdef __cplusplus +}; +#endif #endif /* GXLIGHT_H */ diff --git a/include/dolphin/gx/GXMisc.h b/include/dolphin/gx/GXMisc.h index d5deba0820..5a22f30cc8 100644 --- a/include/dolphin/gx/GXMisc.h +++ b/include/dolphin/gx/GXMisc.h @@ -1,6 +1,38 @@ #ifndef GXMISC_H #define GXMISC_H -#include "dolphin/types.h" +#include "dolphin/gx/GXEnum.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void GXSetMisc(u32 id, u32 value); +void GXFlush(void); +void __GXAbort(void); +void GXAbortFrame(void); +void GXSetDrawDone(void); +void GXDrawDone(void); +void GXPixModeSync(void); +void GXPokeAlphaMode(GXCompare comp, u8 threshold); +void GXPokeAlphaRead(GXAlphaReadMode mode); +void GXPokeAlphaUpdate(GXBool enable_update); +void GXPokeBlendMode(GXBlendMode mode, GXBlendFactor src_factor, GXBlendFactor dst_factor, GXLogicOp op); +void GXPokeColorUpdate(GXBool enable_update); +void GXPokeDstAlpha(GXBool enable, u8 alpha); +void GXPokeDither(GXBool enable); +void GXPokeZMode(GXBool enable_compare, GXCompare comp); +void GXPeekZ(u16 x, u16 y, u32* z); + +typedef void (*GXDrawSyncCallback)(u16 token); +void GXSetDrawSyncCallback(GXDrawSyncCallback callback); + +typedef void (*GXDrawDoneCallback)(void); +void GXSetDrawDoneCallback(GXDrawDoneCallback callback); +void __GXPEInit(void); + +#ifdef __cplusplus +}; +#endif #endif /* GXMISC_H */ diff --git a/include/dolphin/gx/GXPerf.h b/include/dolphin/gx/GXPerf.h index e03b2baf38..821c81b2b5 100644 --- a/include/dolphin/gx/GXPerf.h +++ b/include/dolphin/gx/GXPerf.h @@ -3,4 +3,16 @@ #include "dolphin/types.h" +#ifdef __cplusplus +extern "C" { +#endif + +void GXSetGPMetric(u32 perf0, u32 perf1); +void GXClearGPMetric(void); +void GXReadXfRasMetric(u32*, u32*, u32*, u32*); + +#ifdef __cplusplus +}; +#endif + #endif /* GXPERF_H */ diff --git a/include/dolphin/gx/GXPixel.h b/include/dolphin/gx/GXPixel.h index e95981c69b..b9b3d3a60b 100644 --- a/include/dolphin/gx/GXPixel.h +++ b/include/dolphin/gx/GXPixel.h @@ -1,6 +1,28 @@ #ifndef GXPIXEL_H #define GXPIXEL_H -#include "dolphin/types.h" +#include "dolphin/gx/GXStruct.h" +#include "dolphin/gx/GXEnum.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void GXSetFog(GXFogType type, f32 startZ, f32 endZ, f32 nearZ, f32 farZ, GXColor color); +void GXSetFogRangeAdj(GXBool enable, u16 center, GXFogAdjTable* table); +void GXSetBlendMode(GXBlendMode mode, GXBlendFactor src_factor, GXBlendFactor dst_factor, GXLogicOp op); +void GXSetColorUpdate(GXBool enable_update); +void GXSetAlphaUpdate(GXBool enable_update); +void GXSetZMode(GXBool enable_compare, GXCompare comp, GXBool enable_update); +void GXSetZCompLoc(GXBool z_buf_before_tex); +void GXSetPixelFmt(GXPixelFmt pixel_fmt, GXZFmt16 z_fmt); +void GXSetDither(GXBool enable_dither); +void GXSetDstAlpha(GXBool enable, u8 alpha); +void GXSetFieldMask(GXBool odd_mask, GXBool even_mask); +void GXSetFieldMode(GXBool field_mode, GXBool half_aspect_ratio); + +#ifdef __cplusplus +}; +#endif #endif /* GXPIXEL_H */ diff --git a/include/dolphin/gx/GXStruct.h b/include/dolphin/gx/GXStruct.h index 4d15b6694f..236a370ca4 100644 --- a/include/dolphin/gx/GXStruct.h +++ b/include/dolphin/gx/GXStruct.h @@ -34,7 +34,7 @@ typedef struct _GXRenderModeObj { /* 0x32 */ u8 vfilter[7]; } GXRenderModeObj; -STATIC_ASSERT(sizeof(_GXRenderModeObj) == 60); +STATIC_ASSERT(sizeof(GXRenderModeObj) == 60); typedef struct _GXTexObj { /* 0x00 */ u32 texture_filter; @@ -56,7 +56,20 @@ typedef struct _GXTlutObj { } GXTlutObj; typedef struct _GXLightObj { - /* 0x0 */ u32 data[16]; + /* 0x00 */ u8 field_0x0[0xc]; + /* 0x0C */ GXColor color; + /* 0x10 */ f32 a0; + /* 0x14 */ f32 a1; + /* 0x18 */ f32 a2; + /* 0x1C */ f32 k0; + /* 0x20 */ f32 k1; + /* 0x24 */ f32 k2; + /* 0x28 */ f32 posX; + /* 0x2C */ f32 posY; + /* 0x30 */ f32 posZ; + /* 0x34 */ f32 dirX; + /* 0x38 */ f32 dirY; + /* 0x3C */ f32 dirZ; } GXLightObj; typedef struct _GXFogAdjTable { diff --git a/include/dolphin/gx/GXTev.h b/include/dolphin/gx/GXTev.h index 08ce1ee1b8..20da7b3850 100644 --- a/include/dolphin/gx/GXTev.h +++ b/include/dolphin/gx/GXTev.h @@ -1,6 +1,37 @@ #ifndef GXTEV_H #define GXTEV_H -#include "dolphin/types.h" +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXStruct.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void GXSetTevOp(GXTevStageID id, GXTevMode mode); +void GXSetTevColorIn(GXTevStageID stage, GXTevColorArg a, GXTevColorArg b, GXTevColorArg c, + GXTevColorArg d); +void GXSetTevAlphaIn(GXTevStageID stage, GXTevAlphaArg a, GXTevAlphaArg b, GXTevAlphaArg c, + GXTevAlphaArg d); +void GXSetTevColorOp(GXTevStageID stage, GXTevOp op, GXTevBias bias, GXTevScale scale, GXBool clamp, + GXTevRegID out_reg); +void GXSetTevAlphaOp(GXTevStageID stage, GXTevOp op, GXTevBias bias, GXTevScale scale, GXBool clamp, + GXTevRegID out_reg); +void GXSetTevColor(GXTevRegID id, GXColor color); +void GXSetTevColorS10(GXTevRegID id, GXColorS10 color); +void GXSetTevKColor(GXTevKColorID id, GXColor color); +void GXSetTevKColorSel(GXTevStageID stage, GXTevKColorSel color_sel); +void GXSetTevKAlphaSel(GXTevStageID stage, GXTevKAlphaSel alpha_sel); +void GXSetTevSwapMode(GXTevStageID stage, GXTevSwapSel ras_sel, GXTevSwapSel tex_sel); +void GXSetTevSwapModeTable(GXTevSwapSel select, GXTevColor r, GXTevColor g, GXTevColor b, + GXTevColor a); +void GXSetAlphaCompare(GXCompare comp0, u8 ref0, GXAlphaOp op, GXCompare comp1, u8 ref1); +void GXSetZTexture(GXZTexOp op, GXTexFmt fmt, u32 bias); +void GXSetTevOrder(GXTevStageID stage, GXTexCoordID coord, GXTexMapID map, GXChannelID color); +void GXSetNumTevStages(u8 num_stages); + +#ifdef __cplusplus +}; +#endif #endif /* GXTEV_H */ diff --git a/include/dolphin/gx/GXTexture.h b/include/dolphin/gx/GXTexture.h index 2f2bbfb6e0..d4d8efdb38 100644 --- a/include/dolphin/gx/GXTexture.h +++ b/include/dolphin/gx/GXTexture.h @@ -1,6 +1,49 @@ #ifndef GXTEXTURE_H #define GXTEXTURE_H -#include "dolphin/types.h" +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXStruct.h" +#include "dolphin/gx/GXInit.h" + +#ifdef __cplusplus +extern "C" { +#endif + +u32 GXGetTexBufferSize(u16 width, u16 height, u32 format, GXBool mipmap, u8 max_lod); +void __GetImageTileCount(); +void GXInitTexObj(GXTexObj* obj, void* image, u16 width, u16 height, GXTexFmt fmt, + GXTexWrapMode wrapS, GXTexWrapMode wrapT, GXBool mipmap); +void GXInitTexObjCI(GXTexObj* obj, void* image, u16 width, u16 height, GXCITexFmt format, + GXTexWrapMode wrapS, GXTexWrapMode wrapT, GXBool mipmap, u32 tlut_name); +void GXInitTexObjLOD(GXTexObj* obj, GXTexFilter min_filter, GXTexFilter max_filter, f32 min_lod, + f32 max_lod, f32 lod_bias, GXBool bias_clamp, GXBool edge_lod, + GXAnisotropy aniso); +u16 GXGetTexObjWidth(GXTexObj* obj); +u16 GXGetTexObjHeight(GXTexObj* obj); +GXTexFmt GXGetTexObjFmt(GXTexObj* obj); +GXTexWrapMode GXGetTexObjWrapS(GXTexObj* obj); +GXTexWrapMode GXGetTexObjWrapT(GXTexObj* obj); +GXBool GXGetTexObjMipMap(GXTexObj* obj); +u32 GXGetTexObjTlut(GXTexObj* obj); +void GXLoadTexObj(GXTexObj* obj, GXTexMapID id); +void GXInitTlutObj(GXTlutObj* obj, void* lut, GXTlutFmt fmt, u16 entry_num); +void GXLoadTlut(GXTlutObj* obj, u32 tlut_name); +void GXInitTexCacheRegion(GXTexRegion* region, GXBool is_32b_mipmap, u32 tmem_even, + GXTexCacheSize size_even, u32 tmem_odd, GXTexCacheSize size_odd); +void GXInitTlutRegion(GXTlutRegion* region, u32 tmem_addr, GXTlutSize tlut_size); +void GXInvalidateTexAll(void); + +GXTexRegionCallback GXSetTexRegionCallback(GXTexRegionCallback callback); +GXTlutRegionCallback GXSetTlutRegionCallback(GXTlutRegionCallback callback); + +void GXSetTexCoordScaleManually(GXTexCoordID coord, GXBool enable, u16 s_scale, u16 t_scale); + +void __SetSURegs(); +void __GXSetSUTexRegs(); +void __GXSetTmemConfig(); + +#ifdef __cplusplus +}; +#endif #endif /* GXTEXTURE_H */ diff --git a/include/dolphin/gx/GXTransform.h b/include/dolphin/gx/GXTransform.h index 5ea01f339b..66175f257c 100644 --- a/include/dolphin/gx/GXTransform.h +++ b/include/dolphin/gx/GXTransform.h @@ -1,6 +1,32 @@ #ifndef GXTRANSFORM_H #define GXTRANSFORM_H -#include "dolphin/types.h" +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXStruct.h" +#include "dolphin/mtx/mtx.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void GXProject(f32 model_x, f32 model_y, f32 model_z, Mtx model_mtx, f32* proj_mtx, f32* viewpoint, + f32* screen_x, f32* screen_y, f32* screen_z); +void GXSetProjection(Mtx44 mtx, GXProjectionType type); +void GXSetProjectionv(f32* p); +void GXGetProjectionv(f32* p); +void GXLoadPosMtxImm(Mtx mtx, u32 id); +void GXLoadNrmMtxImm(Mtx mtx, u32 id); +void GXSetCurrentMtx(u32 id); +void GXLoadTexMtxImm(Mtx mtx, u32 id, GXTexMtxType type); +void GXSetViewport(f32 x_orig, f32 y_orig, f32 width, f32 height, f32 near_z, f32 far_z); +void GXGetViewportv(f32* p); +void GXSetScissor(u32 left, u32 top, u32 width, u32 height); +void GXGetScissor(u32* left, u32* top, u32* width, u32* height); +void GXSetScissorBoxOffset(u32 x_offset, u32 y_offset); +void GXSetClipMode(GXClipMode mode); + +#ifdef __cplusplus +}; +#endif #endif /* GXTRANSFORM_H */ diff --git a/include/dolphin/mtx/mtx.h b/include/dolphin/mtx/mtx.h index 0cf5da75ff..edd5dab9f6 100644 --- a/include/dolphin/mtx/mtx.h +++ b/include/dolphin/mtx/mtx.h @@ -6,13 +6,16 @@ #include "dolphin/mtx/vec.h" #include "dolphin/types.h" +#ifdef __cplusplus +extern "C" { +#endif + typedef f32 Mtx[3][4]; typedef f32 Mtx33[3][3]; typedef f32 Mtx23[2][3]; typedef f32 (*MtxP)[4]; typedef const f32 (*CMtxP)[4]; // Change name later? -extern "C" { void PSMTXIdentity(Mtx m); void PSMTXCopy(const Mtx src, Mtx dst); void PSMTXConcat(const Mtx a, const Mtx b, Mtx ab); @@ -21,23 +24,20 @@ void PSMTXRotRad(Mtx m, u8 axis, f32 rad); void PSMTXRotTrig(Mtx m, u8 axis, f32 sin, f32 cos); f64 __PSMTXRotAxisRadInternal(f64 param_1, f64 param_2, int param_3, int param_4); void PSMTXRotAxisRad(Mtx m, const Vec* axis, f32 rad); -void PSMTXTrans(Mtx m, f32 x_trans, f32 y_trans, f32 z_trans); +void PSMTXTrans(Mtx m, f32 x, f32 y, f32 z); void PSMTXTransApply(const Mtx src, Mtx dst, f32 x, f32 y, f32 z); -void PSMTXScale(Mtx m, f32 x_scale, f32 y_scale, f32 z_scale); -void PSMTXScaleApply(const Mtx src, Mtx dst, f32 x_scale, f32 y_scale, f32 z_scale); +void PSMTXScale(Mtx m, f32 x, f32 y, f32 z); +void PSMTXScaleApply(const Mtx src, Mtx dst, f32 x, f32 y, f32 z); void PSMTXQuat(Mtx m, const Quaternion* q); -void PSMTXMultVec(const Mtx m, const Vec* src, Vec* dst); -void PSMTXMultVecSR(const Mtx m, const Vec* src, Vec* dst); -void PSMTXMultVec(const Mtx m, const Vec* src, Vec* dst); -void PSMTXMultVecArray(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count); -void PSMTXMultVecSR(const Mtx m, const Vec* src, Vec* dst); -void PSMTXMultVecArraySR(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count); void C_MTXLookAt(Mtx m, const Vec* camPos, const Vec* camUp, const Vec* target); void C_MTXLightPerspective(Mtx m, f32 fovY, f32 aspect, f32 scale_s, f32 scale_t, f32 trans_s, f32 trans_t); void C_MTXLightOrtho(Mtx m, f32 top, f32 bottom, f32 left, f32 right, f32 scale_s, f32 scale_t, f32 trans_s, f32 trans_t); -} + +#ifdef __cplusplus +}; +#endif #endif /* MTX_H */ diff --git a/include/dolphin/mtx/mtx44.h b/include/dolphin/mtx/mtx44.h index 69e2cc84f7..44ed7c7e22 100644 --- a/include/dolphin/mtx/mtx44.h +++ b/include/dolphin/mtx/mtx44.h @@ -3,11 +3,17 @@ #include "dolphin/types.h" -typedef float Mtx44[4][4]; +typedef f32 Mtx44[4][4]; +#ifdef __cplusplus extern "C" { +#endif + void C_MTXPerspective(Mtx44 m, f32 fovy, f32 aspect, f32 near, f32 far); void C_MTXOrtho(Mtx44 m, f32 top, f32 bottom, f32 left, f32 right, f32 near, f32 far); -} + +#ifdef __cplusplus +}; +#endif #endif /* MTX44_H */ diff --git a/include/dolphin/mtx/mtxvec.h b/include/dolphin/mtx/mtxvec.h index 171add0e61..add098aac3 100644 --- a/include/dolphin/mtx/mtxvec.h +++ b/include/dolphin/mtx/mtxvec.h @@ -2,14 +2,18 @@ #define MTXVEC_H #include "dolphin/mtx/mtx.h" -#include "dolphin/mtx/vec.h" -#include "dolphin/types.h" +#ifdef __cplusplus extern "C" { -void PSMTXMultVec(const Mtx matrix, const Vec* src, Vec* dst); -void PSMTXMultVecArray(const Mtx matrix, const Vec* src, Vec* dst, u32 count); -void PSMTXMultVecSR(const Mtx matrix, const Vec* src, Vec* dst); -void PSMTXMultVecArraySR(const Mtx matrix, const Vec* src, Vec* dst, u32 count); -} +#endif + +void PSMTXMultVec(const Mtx m, const Vec* src, Vec* dst); +void PSMTXMultVecSR(const Mtx m, const Vec* src, Vec* dst); +void PSMTXMultVecArray(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count); +void PSMTXMultVecArraySR(const Mtx m, const Vec* srcBase, Vec* dstBase, u32 count); + +#ifdef __cplusplus +}; +#endif #endif /* MTXVEC_H */ diff --git a/include/dolphin/mtx/quat.h b/include/dolphin/mtx/quat.h index 832c04eef1..42477bb63e 100644 --- a/include/dolphin/mtx/quat.h +++ b/include/dolphin/mtx/quat.h @@ -2,16 +2,21 @@ #define QUAT_H #include "dolphin/mtx/vec.h" -#include "dolphin/types.h" - -struct Quaternion { - f32 x, y, z, w; -}; +#ifdef __cplusplus extern "C" { -void PSQUATMultiply(const Quaternion* src_a, const Quaternion* src_b, Quaternion* dst); +#endif + +typedef struct Quaternion { + f32 x, y, z, w; +} Quaternion; + +void PSQUATMultiply(const Quaternion* a, const Quaternion* b, Quaternion* ab); void C_QUATRotAxisRad(Quaternion* q, const Vec* axis, f32 rad); void C_QUATSlerp(const Quaternion* p, const Quaternion* q, Quaternion* r, f32 t); -} + +#ifdef __cplusplus +}; +#endif #endif /* QUAT_H */ diff --git a/include/dolphin/mtx/vec.h b/include/dolphin/mtx/vec.h index d52c79d450..29b3961af7 100644 --- a/include/dolphin/mtx/vec.h +++ b/include/dolphin/mtx/vec.h @@ -3,47 +3,22 @@ #include "dolphin/types.h" -struct Vec { +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct Vec { f32 x, y, z; - f32 GetX() const { return x; } - f32 GetY() const { return y; } - f32 GetZ() const { return z; } - f32 getXDiff(const Vec* other) const { return x - other->x; } - f32 getYDiff(const Vec* other) const { return y - other->y; } - f32 getZDiff(const Vec* other) const { return z - other->z; } - void set(f32 pX, f32 pY, f32 pZ) { - x = pX; - y = pY; - z = pZ; - } - void set(const Vec& other) { - x = other.x; - y = other.y; - z = other.z; - } -}; +} Vec; typedef Vec* VecPtr; typedef Vec Point3d; typedef Vec* Point3dPtr; -struct SVec { +typedef struct SVec { s16 x, y, z; +} SVec; - void set(s16 oX, s16 oY, s16 oZ) { - x = oX; - y = oY; - z = oZ; - } - - void setall(s16 val) { - x = val; - y = val; - z = val; - } -}; - -extern "C" { void PSVECAdd(const Vec* a, const Vec* b, Vec* ab); void PSVECSubtract(const Vec* a, const Vec* b, Vec* a_b); void PSVECScale(const Vec* src, Vec* dst, f32 scale); @@ -57,6 +32,9 @@ f32 PSVECDistance(const Vec* a, const Vec* b); void C_VECHalfAngle(const Vec* a, const Vec* b, Vec* half); void C_VECReflect(const Vec* src, const Vec* normal, Vec* dst); -} + +#ifdef __cplusplus +}; +#endif #endif /* VEC_H */ diff --git a/include/dolphin/os/OS.h b/include/dolphin/os/OS.h index 84c3e63522..d3516b8c06 100644 --- a/include/dolphin/os/OS.h +++ b/include/dolphin/os/OS.h @@ -2,6 +2,8 @@ #define OS_H_ #include "Runtime.PPCEABI.H/__va_arg.h" +#include "dolphin/dvd/dvd.h" + #include "dolphin/os/OSAlarm.h" #include "dolphin/os/OSAlloc.h" #include "dolphin/os/OSArena.h" @@ -35,6 +37,20 @@ extern "C" { #define OS_MESSAGE_NON_BLOCKING 0 #define OS_MESSAGE_BLOCKING 1 +volatile u16 __OSDeviceCode : 0x800030E6; + +volatile u32 OS_PI_INTR_CAUSE : 0xCC003000; +volatile u32 OS_PI_INTR_MASK : 0xCC003004; + +volatile u16 OS_MI_INTR_MASK : 0xCC00401C; + +volatile u16 OS_DSP_DMA_ADDR_HI : 0xCC005030; +volatile u16 OS_DSP_DMA_ADDR_LO : 0xCC005032; +volatile u16 OS_DSP_INTR_MASK : 0xCC00500A; + +volatile u16 OS_ARAM_DMA_ADDR_HI : 0xCC005020; +volatile u16 OS_ARAM_DMA_ADDR_LO : 0xCC005022; + BOOL OSIsThreadSuspended(OSThread* thread); u32 OSGetConsoleType(void); @@ -58,20 +74,20 @@ void OSReportInit__Fv(void); // needed for inline asm u8* OSGetStackPointer(void); void __OSFPRInit(void); -static void InquiryCallback(u32 param_0, void* param_1); +static void InquiryCallback(u32 param_0, DVDCommandBlock* param_1); void OSInit(void); static void OSExceptionInit(void); void __OSDBIntegrator(void); void __OSDBJump(void); typedef void (*OSExceptionHandler)(OSException, OSContext*); -OSExceptionHandler __OSSetExceptionHandler(OSException exception, OSExceptionHandler handler); -OSExceptionHandler __OSGetExceptionHandler(OSException exception); +OSExceptionHandler __OSSetExceptionHandler(__OSException exception, OSExceptionHandler handler); +OSExceptionHandler __OSGetExceptionHandler(__OSException exception); static void OSExceptionVector(void); void __DBVECTOR(); void __OSEVSetNumber(); void __OSEVEnd(); -static void OSDefaultExceptionHandler(OSException exception, OSContext* context); +static void OSDefaultExceptionHandler(__OSException exception, OSContext* context); void __OSPSInit(void); void __OSGetDIConfig(void); void OSRegisterVersion(char* version); @@ -132,7 +148,17 @@ inline void i_OSInitFastCast(void) { // clang-format on } -#include "dolphin/dvd/dvd.h" +typedef struct OSBootInfo { + /* 0x00 */ DVDDiskID disk_info; + /* 0x20 */ u32 boot_code; + /* 0x24 */ u32 version; + /* 0x28 */ u32 memory_size; + /* 0x2C */ u32 console_type; + /* 0x30 */ void* arena_lo; + /* 0x34 */ void* arena_hi; + /* 0x38 */ void* fst_location; + /* 0x3C */ u32 fst_max_length; +} OSBootInfo; struct GLOBAL_MEMORY { DVDDiskID disk; diff --git a/include/dolphin/os/OSAlarm.h b/include/dolphin/os/OSAlarm.h index 536931baa8..56cf7975de 100644 --- a/include/dolphin/os/OSAlarm.h +++ b/include/dolphin/os/OSAlarm.h @@ -1,7 +1,6 @@ #ifndef OSALARM_H #define OSALARM_H -#include "dolphin/types.h" #include "dolphin/os/OSTime.h" #include "dolphin/os/OSError.h" @@ -14,7 +13,8 @@ typedef struct OSAlarmLink { /* 0x4 */ struct OSAlarm* next; } OSAlarmLink; -typedef void (*OSAlarmHandler)(struct OSAlarm* alarm, struct OSContext* context); +typedef struct OSAlarm; +typedef void (*OSAlarmHandler)(struct OSAlarm* alarm, OSContext* context); typedef struct OSAlarm { /* 0x00 */ OSAlarmHandler handler; @@ -31,8 +31,8 @@ static void InsertAlarm(OSAlarm* alarm, s64 time, OSAlarmHandler* handler); void OSSetAlarm(OSAlarm* alarm, s64 time, OSAlarmHandler* handler); void OSSetPeriodicAlarm(OSAlarm* alarm, s64 start, s64 period, OSAlarmHandler* handler); void OSCancelAlarm(OSAlarm* alarm); -static void DecrementerExceptionCallback(OSException* exception, struct OSContext* context); -static void DecrementerExceptionHandler(OSException* exception, struct OSContext* context); +static void DecrementerExceptionCallback(__OSException exception, OSContext* context); +static void DecrementerExceptionHandler(__OSException exception, OSContext* context); static s32 OnReset(s32 param_0); #ifdef __cplusplus diff --git a/include/dolphin/os/OSAlloc.h b/include/dolphin/os/OSAlloc.h index b5af8dbf2a..5a5ff4c3f5 100644 --- a/include/dolphin/os/OSAlloc.h +++ b/include/dolphin/os/OSAlloc.h @@ -7,11 +7,34 @@ extern "C" { #endif +typedef struct OSHeapDescriptor { + /* 0x0 */ s32 size; + /* 0x4 */ struct OSHeapCell* freeList; + /* 0x8 */ struct OSHeapCell* usedList; +} OSHeapDescriptor; + +typedef struct OSHeapCell { + /* 0x00 */ struct OSHeapCell* prev; + /* 0x04 */ struct OSHeapCell* next; + /* 0x08 */ s32 size; + /* 0x0C */ struct OSHeapDescriptor* hd; + /* 0x10 */ s32 usedSize; + /* 0x14 */ char field_0x14[0x20 - 0x14]; +} OSHeapCell; + typedef u32 OSHeapHandle; -static void* DLInsert(void* param_0, void* param_1); -void OSFreeToHeap(OSHeapHandle heap, void* ptr); -void OSSetCurrentHeap(OSHeapHandle heap); +extern volatile s32 __OSCurrHeap; + +#define OSRoundUp(x, align) (((x) + (align)-1) & (-(align))) +#define OSRoundUpPtr(x, align) ((void*)((((u32)(x)) + (align)-1) & (~((align)-1)))) + +#define OSRoundDown(x, align) ((x) & (-(align))) +#define OSRoundDownPtr(x, align) ((void*)(((u32)(x)) & (~((align)-1)))) + +static OSHeapCell* DLInsert(OSHeapCell* list, OSHeapCell* child); +void OSFreeToHeap(OSHeapHandle handle, void* ptr); +s32 OSSetCurrentHeap(OSHeapHandle handle); void* OSInitAlloc(void* lo, void* hi, s32 maxHeaps); OSHeapHandle OSCreateHeap(void* start, void* end); diff --git a/include/dolphin/os/OSContext.h b/include/dolphin/os/OSContext.h index 0de4725bde..7a22d6b231 100644 --- a/include/dolphin/os/OSContext.h +++ b/include/dolphin/os/OSContext.h @@ -7,8 +7,6 @@ extern "C" { #endif -typedef void (*OSSwitchThreadCallback)(struct OSThread* from, struct OSThread* to); - typedef struct OSContext { /* 0x000 */ u32 gpr[32]; /* 0x080 */ u32 cr; @@ -16,7 +14,7 @@ typedef struct OSContext { /* 0x088 */ u32 ctr; /* 0x08C */ u32 xer; /* 0x090 */ f64 fpr[32]; - /* 0x190 */ u32 padding_1; + /* 0x190 */ u32 field_0x190; /* 0x194 */ u32 fpscr; /* 0x198 */ u32 srr0; /* 0x19C */ u32 srr1; @@ -26,8 +24,11 @@ typedef struct OSContext { /* 0x1C4 */ f64 ps[32]; } OSContext; +OSContext* OS_CURRENT_CONTEXT : 0x800000D4; +OSContext* OS_CURRENT_FPU_CONTEXT : 0x800000D8; + void __OSLoadFPUContext(void); -void __OSSaveFPUContext(OSContext* context); +void __OSSaveFPUContext(s32 unused0, s32 unused1, OSContext* context); void OSSaveFPUContext(OSContext* context); void OSSetCurrentContext(OSContext* context); OSContext* OSGetCurrentContext(void); @@ -36,7 +37,7 @@ void OSLoadContext(OSContext* context); void OSClearContext(OSContext* context); void OSInitContext(OSContext* context, u32 pc, u32 lr); void OSDumpContext(OSContext* context); -static void OSSwitchFPUContext(OSContext* context); +static void OSSwitchFPUContext(u8 err, OSContext* context); void __OSContextInit(void); void OSFillFPUContext(OSContext* context); diff --git a/include/dolphin/os/OSError.h b/include/dolphin/os/OSError.h index 7333e207a4..6f5b41f57d 100644 --- a/include/dolphin/os/OSError.h +++ b/include/dolphin/os/OSError.h @@ -1,18 +1,14 @@ #ifndef OSERROR_H #define OSERROR_H -#include "dolphin/types.h" +#include "dolphin/os/OSContext.h" #ifdef __cplusplus extern "C" { #endif -struct OSContext; - extern u32 __OSFpscrEnableBits; - typedef u16 OSError; -typedef void (*OSErrorHandler)(OSError error, OSContext* context, u32, u32); #define OS_ERROR_SYSTEM_RESET 0 #define OS_ERROR_MACHINE_CHECK 1 @@ -32,7 +28,7 @@ typedef void (*OSErrorHandler)(OSError error, OSContext* context, u32, u32); #define OS_ERROR_MEMORY_PROTECTION 15 #define OS_ERROR_FLOATING_POINT_EXCEPTION 16 -typedef enum OSException { +typedef enum { EXCEPTION_SYSTEM_RESET, EXCEPTION_MACHINE_CHECK, EXCEPTION_DSI, @@ -52,6 +48,10 @@ typedef enum OSException { EXCEPTION_FLOATING_POINT_EXCEPTION, } OSException; +typedef u8 __OSException; + +typedef void (*OSErrorHandler)(OSError error, OSContext* context, u32, u32); + OSErrorHandler OSSetErrorHandler(OSError error, OSErrorHandler handler); void __OSUnhandledException(OSException exception, OSContext* context, u32 dsisr, u32 dar); diff --git a/include/dolphin/os/OSInterrupt.h b/include/dolphin/os/OSInterrupt.h index 130ed6255d..ac5ccf9779 100644 --- a/include/dolphin/os/OSInterrupt.h +++ b/include/dolphin/os/OSInterrupt.h @@ -1,15 +1,52 @@ #ifndef OSINTERRUPT_H #define OSINTERRUPT_H -#include "dolphin/types.h" +#include "dolphin/os/OSContext.h" #ifdef __cplusplus extern "C" { #endif +typedef enum { + OS_INTR_MEM_0, + OS_INTR_MEM_1, + OS_INTR_MEM_2, + OS_INTR_MEM_3, + OS_INTR_MEM_ADDRESS, + OS_INTR_DSP_AI, + OS_INTR_DSP_ARAM, + OS_INTR_DSP_DSP, + OS_INTR_AI_AI, + OS_INTR_EXI_0_EXI, + OS_INTR_EXI_0_TC, + OS_INTR_EXI_0_EXT, + OS_INTR_EXI_1_EXI, + OS_INTR_EXI_1_TC, + OS_INTR_EXI_1_EXT, + OS_INTR_EXI_2_EXI, + OS_INTR_EXI_2_TC, + OS_INTR_PI_CP, + OS_INTR_PI_PE_TOKEN, + OS_INTR_PI_PE_FINISH, + OS_INTR_PI_SI, + OS_INTR_PI_DI, + OS_INTR_PI_RSW, + OS_INTR_PI_ERROR, + OS_INTR_PI_VI, + OS_INTR_PI_DEBUG, + OS_INTR_PI_HSP, + OS_INTR_PI_ACR, + OS_INTR_28, + OS_INTR_29, + OS_INTR_30, + OS_INTR_31, + + OS_INTR_MAX +} OSInterruptType; + typedef s16 OSInterrupt; typedef u32 OSInterruptMask; -typedef void (*OSInterruptHandler)(OSInterrupt interrupt, struct OSContext* context); +typedef void (*OSInterruptHandler)(OSInterrupt interrupt, OSContext* context); BOOL OSDisableInterrupts(void); void __RAS_OSDisableInterrupts_end(void); @@ -21,8 +58,11 @@ void __OSInterruptInit(void); static OSInterruptMask SetInterruptMask(OSInterruptMask param_0, OSInterruptMask param_1); OSInterruptMask __OSMaskInterrupts(OSInterruptMask mask); OSInterruptMask __OSUnmaskInterrupts(OSInterruptMask mask); -void __OSDispatchInterrupt(OSInterrupt interrupt, struct OSContext* context); -static void ExternalInterruptHandler(OSInterrupt interrupt, struct OSContext* context); +void __OSDispatchInterrupt(OSInterrupt interrupt, OSContext* context); +static void ExternalInterruptHandler(OSInterrupt interrupt, OSContext* context); + +void __RAS_OSDisableInterrupts_begin(void); +void __RAS_OSDisableInterrupts_end(void); #ifdef __cplusplus }; diff --git a/include/dolphin/os/OSLink.h b/include/dolphin/os/OSLink.h index 454e6d04f8..06f1bb3015 100644 --- a/include/dolphin/os/OSLink.h +++ b/include/dolphin/os/OSLink.h @@ -7,6 +7,14 @@ extern "C" { #endif +typedef struct OSModuleQueue { + int* first; + int* last; +} OSModuleQueue; + +OSModuleQueue __OSModuleList : 0x800030C8; +void* __OSStringTable : 0x800030D0; + typedef struct OSSectionInfo { u32 mOffset; u32 mSize; diff --git a/include/dolphin/os/OSMemory.h b/include/dolphin/os/OSMemory.h index e91de88948..7a1be5185c 100644 --- a/include/dolphin/os/OSMemory.h +++ b/include/dolphin/os/OSMemory.h @@ -13,7 +13,7 @@ static void MEMIntrruptHandler(OSInterrupt interrupt, struct OSContext* context) void OSProtectRange(u32 channel, void* address, u32 nBytes, u32 control); static void Config24MB(void); static void Config48MB(void); -static void RealMode(void); +static void RealMode(void* config); void __OSInitMemoryProtection(void); #ifdef __cplusplus diff --git a/include/dolphin/os/OSMessage.h b/include/dolphin/os/OSMessage.h index d8a42deeda..d4ab6b3601 100644 --- a/include/dolphin/os/OSMessage.h +++ b/include/dolphin/os/OSMessage.h @@ -1,7 +1,6 @@ #ifndef OSMESSAGE_H #define OSMESSAGE_H -#include "dolphin/types.h" #include "dolphin/os/OSThread.h" #ifdef __cplusplus diff --git a/include/dolphin/os/OSMutex.h b/include/dolphin/os/OSMutex.h index 81d2c75435..a3815e294a 100644 --- a/include/dolphin/os/OSMutex.h +++ b/include/dolphin/os/OSMutex.h @@ -1,24 +1,30 @@ #ifndef OSMUTEX_H #define OSMUTEX_H -#include "dolphin/types.h" #include "dolphin/os/OSThread.h" #ifdef __cplusplus extern "C" { #endif -void OSInitMutex(struct OSMutex* mutex); -void OSLockMutex(struct OSMutex* mutex); -void OSUnlockMutex(struct OSMutex* mutex); -void __OSUnlockAllMutex(struct OSThread* thread); -s32 OSTryLockMutex(struct OSMutex* mutex); -void OSInitCond(struct OSCond* cond); -void OSWaitCond(struct OSCond* cond, struct OSMutex* mutex); -void OSSignalCond(struct OSCond* cond); -s32 __OSCheckMutex(struct OSThread* thread); -BOOL __OSCheckDeadLock(struct OSThread* thread); -BOOL __OSCheckMutexes(struct OSThread* thread); +typedef struct OSMutex { + /* 0x00 */ OSThreadQueue queue; + /* 0x08 */ OSThread* thread; + /* 0x0C */ s32 count; + /* 0x10 */ OSMutexLink link; +} OSMutex; // Size: 0x18 + +void OSInitMutex(OSMutex* mutex); +void OSLockMutex(OSMutex* mutex); +void OSUnlockMutex(OSMutex* mutex); +void __OSUnlockAllMutex(OSThread* thread); +s32 OSTryLockMutex(OSMutex* mutex); +void OSInitCond(OSCond* cond); +void OSWaitCond(OSCond* cond, OSMutex* mutex); +void OSSignalCond(OSCond* cond); +s32 __OSCheckMutex(OSThread* thread); +BOOL __OSCheckDeadLock(OSThread* thread); +BOOL __OSCheckMutexes(OSThread* thread); #ifdef __cplusplus }; diff --git a/include/dolphin/os/OSReboot.h b/include/dolphin/os/OSReboot.h index 4b9438a1ac..4c9be11c43 100644 --- a/include/dolphin/os/OSReboot.h +++ b/include/dolphin/os/OSReboot.h @@ -9,7 +9,7 @@ extern "C" { void __OSReboot(u32 param_0, u32 param_1); void OSSetSaveRegion(void* start, void* end); -void OSGetSaveRegion(void* start, void* end); +void OSGetSaveRegion(void** start, void** end); #ifdef __cplusplus }; diff --git a/include/dolphin/os/OSSync.h b/include/dolphin/os/OSSync.h index d7fcc930f5..880f44dd90 100644 --- a/include/dolphin/os/OSSync.h +++ b/include/dolphin/os/OSSync.h @@ -10,6 +10,8 @@ extern "C" { static void SystemCallVector(void); void __OSInitSystemCall(void); +void __OSSystemCallVectorEnd(void); + #ifdef __cplusplus }; #endif diff --git a/include/dolphin/os/OSThread.h b/include/dolphin/os/OSThread.h index 0776ded1c1..5b77de9412 100644 --- a/include/dolphin/os/OSThread.h +++ b/include/dolphin/os/OSThread.h @@ -1,8 +1,6 @@ #ifndef OSTHREAD_H #define OSTHREAD_H -#include "dolphin/types.h" -#include "dolphin/os/OSMutex.h" #include "dolphin/os/OSContext.h" #ifdef __cplusplus @@ -16,24 +14,6 @@ typedef u16 OSThreadState; #define OS_THREAD_STATE_WAITING 4 #define OS_THREAD_STATE_DEAD 8 -typedef struct OSMutexLink { - struct OSMutex* prev; - struct OSMutex* next; -} OSMutexLink; - -typedef struct OSMutexQueue { - struct OSMutex* prev; - struct OSMutex* next; -} OSMutexQueue; - -typedef struct OSMutex { - /* 0x00 */ //OSThreadQueue queue; - /* 0x08 */ //OSThread* thread; - /* 0x0C */ //s32 count; - /* 0x10 */ //OSMutexLink link; - u8 unk[24]; -} OSMutex; // Size: 0x18 - typedef struct OSThreadLink { struct OSThread* prev; struct OSThread* next; @@ -44,32 +24,45 @@ typedef struct OSThreadQueue { /* 0x4 */ struct OSThread* tail; } OSThreadQueue; +typedef struct OSMutexLink { + struct OSMutex* prev; + struct OSMutex* next; +} OSMutexLink; + +typedef struct OSMutexQueue { + struct OSMutex* prev; + struct OSMutex* next; +} OSMutexQueue; + typedef struct OSCond { - struct OSThreadQueue queue; + OSThreadQueue queue; } OSCond; -typedef void (*OSSwitchThreadCallback)(struct OSThread* from, struct OSThread* to); - typedef struct OSThread { - struct OSContext context; + OSContext context; OSThreadState state; u16 attributes; s32 suspend_count; - u32 effective_priority; + s32 effective_priority; u32 base_priority; void* exit_value; - struct OSThreadQueue* queue; - struct OSThreadLink link; - struct OSThreadQueue join_queue; + OSThreadQueue* queue; + OSThreadLink link; + OSThreadQueue join_queue; struct OSMutex* mutex; OSMutexQueue owned_mutexes; - struct OSThreadLink active_threads_link; + OSThreadLink active_threads_link; u8* stack_base; u8* stack_end; u8* error_code; void* data[2]; } OSThread; +typedef void (*OSSwitchThreadCallback)(OSThread* from, OSThread* to); + +OSThreadQueue OS_THREAD_QUEUE : 0x800000DC; +OSThread* OS_CURRENT_THREAD : 0x800000E4; + static void DefaultSwitchThreadCallback(OSThread* from, OSThread* to); OSSwitchThreadCallback OSSetSwitchThreadCallback(OSSwitchThreadCallback func); void __OSThreadInit(void); diff --git a/include/dolphin/os/OSTime.h b/include/dolphin/os/OSTime.h index ea432f587f..38470ad781 100644 --- a/include/dolphin/os/OSTime.h +++ b/include/dolphin/os/OSTime.h @@ -10,6 +10,8 @@ extern "C" { typedef s64 OSTime; typedef u32 OSTick; +OSTime OS_SYSTEM_TIME : 0x800030D8; + typedef struct OSCalendarTime { /* 0x00 */ s32 seconds; /* 0x04 */ s32 minutes; diff --git a/include/dolphin/pad/Pad.h b/include/dolphin/pad/Pad.h index db289f7102..984b69b2f6 100644 --- a/include/dolphin/pad/Pad.h +++ b/include/dolphin/pad/Pad.h @@ -3,12 +3,11 @@ #include "dolphin/types.h" -typedef enum PADMask { - // PAD_CHAN3_BIT = (1 << 0), - // PAD_CHAN2_BIT = (1 << 1), - // PAD_CHAN1_BIT = (1 << 2), - // PAD_CHAN0_BIT = (1 << 3), +#ifdef __cplusplus +extern "C" { +#endif +typedef enum PADMask { PAD_CHAN3_BIT = (1 << 28), PAD_CHAN2_BIT = (1 << 29), PAD_CHAN1_BIT = (1 << 30), @@ -28,16 +27,18 @@ typedef struct PADStatus { /* 0xA */ s8 error; } PADStatus; -extern "C" { u32 PADInit(void); void PADSetAnalogMode(u32 mode); void PADSetSpec(int spec); -s32 PADReset(PADMask mask); +BOOL PADReset(u32 mask); void PADClampCircle(PADStatus* status); void PADClamp(PADStatus* status); -u32 PADRead(PADStatus* status); +void PADRead(PADStatus* status); void PADControlMotor(s32 channel, u32 command); -s32 PADRecalibrate(PADMask mask); -} +BOOL PADRecalibrate(u32 mask); + +#ifdef __cplusplus +}; +#endif #endif /* PAD_H */ diff --git a/include/dolphin/vi/vi.h b/include/dolphin/vi/vi.h index 350f64483d..e3eb7c8902 100644 --- a/include/dolphin/vi/vi.h +++ b/include/dolphin/vi/vi.h @@ -4,18 +4,26 @@ #include "dolphin/gx/GX.h" #include "dolphin/types.h" +#ifdef __cplusplus +extern "C" { +#endif + typedef void (*VIRetraceCallback)(u32); -extern "C" void VIWaitForRetrace(void); -extern "C" void VISetNextFrameBuffer(void*); -extern "C" VIRetraceCallback VISetPreRetraceCallback(VIRetraceCallback); -extern "C" VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback); -extern "C" void VIInit(); -extern "C" void VIConfigure(GXRenderModeObj*); -extern "C" void VIFlush(); -extern "C" void* VIGetNextFrameBuffer(); -extern "C" void* VIGetCurrentFrameBuffer(); -extern "C" void VISetBlack(BOOL); -extern "C" u32 VIGetRetraceCount(); +void VIWaitForRetrace(void); +void VISetNextFrameBuffer(void*); +VIRetraceCallback VISetPreRetraceCallback(VIRetraceCallback); +VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback); +void VIInit(); +void VIConfigure(GXRenderModeObj*); +void VIFlush(); +void* VIGetNextFrameBuffer(); +void* VIGetCurrentFrameBuffer(); +void VISetBlack(BOOL); +u32 VIGetRetraceCount(); + +#ifdef __cplusplus +}; +#endif #endif /* VI_H */ diff --git a/include/f_op/f_op_actor.h b/include/f_op/f_op_actor.h index e85f70bf2c..a7fe695e1d 100644 --- a/include/f_op/f_op_actor.h +++ b/include/f_op/f_op_actor.h @@ -26,6 +26,7 @@ public: void setMapToolId(u8 id) { mMapToolId = id; } void setEventId(s16 id) { mEventId = id; } void setCondition(u16 condition) { mCondition = condition; } + u16 getCondition() { return mCondition; } void setArchiveName(char* name) { mArchiveName = name; } u8 getMapToolId() { return mMapToolId; } s16 getEventId() { return mEventId; } @@ -134,6 +135,28 @@ public: s8 getRoomNo() const { return current.mRoomNo; } }; // Size: 0x568 +class fopEn_enemy_c : public fopAc_ac_c { +public: + /* 80019404 */ void initBallModel(); + /* 800194FC */ void checkBallModelDraw(); + /* 80019520 */ void setBallModelEffect(dKy_tevstr_c*); + /* 800196A0 */ void drawBallModel(dKy_tevstr_c*); + + /* 0x568 */ cXyz mDownPos; + /* 0x574 */ cXyz mHeadLockPos; + /* 0x580 */ J3DModel* mBallModel; + /* 0x584 */ J3DAnmTextureSRTKey* mBtk; + /* 0x588 */ J3DAnmTevRegKey* mBrk; + /* 0x58C */ u8 field_0x58c; + /* 0x58D */ u8 mThrowMode; + /* 0x58E */ u16 mFlags; + /* 0x590 */ f32 field_0x590; + /* 0x594 */ u32 mEffectID1; + /* 0x598 */ u32 mEffectID2; + /* 0x59C */ u32 mMidnaBindID[3]; + /* 0x5A8 */ u8 field_0x5a8; +}; // Size: 0x5AC + s32 fopAc_IsActor(void* actor); #endif diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index 0fd60a1a98..867380a90d 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -116,6 +116,10 @@ inline s16 fopAcM_GetName(void* pActor) { return fpcM_GetName(pActor); } +inline MtxP fopAcM_GetMtx(const fopAc_ac_c* pActor) { + return pActor->mCullMtx; +} + inline u32 fopAcM_checkStatus(fopAc_ac_c* pActor, u32 status) { return pActor->mStatus & status; } @@ -412,6 +416,7 @@ s32 fopAcM_orderTreasureEvent(fopAc_ac_c*, fopAc_ac_c*, u16, u16); void* fopAcM_getTalkEventPartner(const fopAc_ac_c*); void* fopAcM_getItemEventPartner(const fopAc_ac_c*); void* fopAcM_getEventPartner(const fopAc_ac_c*); +static void fopAcM_onSwitch(fopAc_ac_c const* param_0, int param_1); s32 fopAcM_createItemForPresentDemo(cXyz const* p_pos, int i_itemNo, u8 param_2, int i_itemBitNo, int i_roomNo, csXyz const* p_angle, cXyz const* p_scale); @@ -459,7 +464,7 @@ void* fopAcM_fastCreateItem(const cXyz* p_pos, int i_itemNo, int i_roomNo, const s32 fopAcM_createBokkuri(u16, const cXyz*, int, int, int, const cXyz*, int, int); s32 fopAcM_createWarpHole(const cXyz*, const csXyz*, int, u8, u8, u8); -void fopAcM_myRoomSearchEnemy(s8 roomNo); +fopAc_ac_c* fopAcM_myRoomSearchEnemy(s8 roomNo); s32 fopAcM_createDisappear(const fopAc_ac_c*, const cXyz*, u8, u8, u8); void fopAcM_setCarryNow(fopAc_ac_c*, int); diff --git a/include/f_pc/f_pc_executor.h b/include/f_pc/f_pc_executor.h index eaf0a22751..fca6a858c1 100644 --- a/include/f_pc/f_pc_executor.h +++ b/include/f_pc/f_pc_executor.h @@ -16,6 +16,10 @@ s32 fpcEx_Execute(base_process_class* pProc); s32 fpcEx_ToExecuteQ(base_process_class* pProc); void fpcEx_Handler(fpcLnIt_QueueFunc pFunc); +inline base_process_class* fpcM_Search(fpcLyIt_JudgeFunc pFunc, void* pUserData) { + return fpcEx_Search(pFunc, pUserData); +} + extern "C" { void fpcEx_IsExist__FUi(void); } diff --git a/include/global.h b/include/global.h index fb78565981..8f0e1a3a78 100644 --- a/include/global.h +++ b/include/global.h @@ -31,11 +31,6 @@ #define STATIC_ASSERT(...) #endif -struct JUTWarn { - JUTWarn& operator<<(const char*) { return *this; } - JUTWarn& operator<<(long) { return *this; } -}; - // hack to make functions that return comparisons as int match extern int __cntlzw(unsigned int); inline BOOL checkEqual(s32 a, s32 b) { diff --git a/include/m_Do/m_Do_audio.h b/include/m_Do/m_Do_audio.h index fe95da6259..f205d388d1 100644 --- a/include/m_Do/m_Do_audio.h +++ b/include/m_Do/m_Do_audio.h @@ -42,13 +42,24 @@ void mDoAud_resetProcess(); bool mDoAud_resetRecover(); void mDoAud_setSceneName(char const* spot, s32 room, s32 layer); s32 mDoAud_load1stDynamicWave(); +static void mDoAud_setLinkGroupInfo(u8 param_0); +static void mDoAud_setLinkHp(s32 param_0, s32 param_1); +static void mDoAud_seStartLevel(u32 param_0, Vec const* param_1, u32 param_2, s8 param_3); inline void mDoAud_bgmSetSwordUsing(s32 id) { Z2AudioMgr::getInterface()->mSeqMgr.bgmSetSwordUsing(id); } -inline void mDoAud_bgmStart(u32 id) { - Z2AudioMgr::getInterface()->mSeqMgr.bgmStart(id, 0, 0); +inline void mDoAud_bgmStart(u32 i_bgmID) { + Z2AudioMgr::getInterface()->mSeqMgr.bgmStart(i_bgmID, 0, 0); +} + +inline void mDoAud_subBgmStart(u32 i_bgmID) { + Z2AudioMgr::getInterface()->mSeqMgr.subBgmStart(i_bgmID); +} + +inline void mDoAud_bgmNowBattle(f32 param_0) { + Z2AudioMgr::getInterface()->mSeqMgr.bgmNowBattle(param_0); } inline void mDoAud_bgmStreamPrepare(u32 param_0) { @@ -75,13 +86,13 @@ inline void mDoAud_setInDarkness(bool state) { Z2AudioMgr::getInterface()->mSceneMgr.setInDarkness(state); } -inline void mDoAud_seStart(u32 sfx_id, const Vec* param_1, u32 param_2, s8 param_3) { - Z2AudioMgr::getInterface()->mSeMgr.seStart(sfx_id, param_1, param_2, param_3, 1.0f, 1.0f, -1.0f, +inline void mDoAud_seStart(u32 i_sfxID, const Vec* i_sePos, u32 param_2, s8 i_reverb) { + Z2AudioMgr::getInterface()->mSeMgr.seStart(i_sfxID, i_sePos, param_2, i_reverb, 1.0f, 1.0f, -1.0f, -1.0f, 0); } -inline void i_mDoAud_seStartLevel(u32 sfx_id, const Vec* param_1, u32 param_2, s8 param_3) { - Z2AudioMgr::getInterface()->mSeMgr.seStartLevel(sfx_id, param_1, param_2, param_3, 1.0f, 1.0f, +inline void i_mDoAud_seStartLevel(u32 i_sfxID, const Vec* i_sePos, u32 param_2, s8 i_reverb) { + Z2AudioMgr::getInterface()->mSeMgr.seStartLevel(i_sfxID, i_sePos, param_2, i_reverb, 1.0f, 1.0f, -1.0f, -1.0f, 0); } diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index ab055c090c..b9e22e443d 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -46,17 +46,21 @@ private: class mDoExt_btkAnm : public mDoExt_baseAnm { public: mDoExt_btkAnm() { mpAnm = 0; } - /* 8000D63C */ int init(J3DMaterialTable*, J3DAnmTextureSRTKey*, int, int, f32, s16, s16); - /* 8000D6D8 */ void entry(J3DMaterialTable*, f32); + /* 8000D63C */ int init(J3DMaterialTable* i_matTable, J3DAnmTextureSRTKey* i_btk, int i_anmPlay, + int i_attribute, f32 i_rate, s16 i_start, s16 param_6); + /* 8000D6D8 */ void entry(J3DMaterialTable* i_matTable, f32 i_frame); - void entry(J3DModelData* data) { entry(data, getFrame()); } - void entry(J3DModelData* data, f32 frame) { entry(&data->getMaterialTable(), frame); } - int init(J3DModelData* data, J3DAnmTextureSRTKey* key, int param_2, int param_3, f32 param_4, - s16 param_5, s16 param_6) { - return init(&data->getMaterialTable(), key, param_2, param_3, param_4, param_5, param_6); + void entry(J3DModelData* i_modelData) { entry(i_modelData, getFrame()); } + void entry(J3DModelData* i_modelData, f32 i_frame) { + entry(&i_modelData->getMaterialTable(), i_frame); + } + int init(J3DModelData* i_modelData, J3DAnmTextureSRTKey* i_btk, int i_anmPlay, int i_attribute, + f32 i_rate, s16 i_start, s16 param_6) { + return init(&i_modelData->getMaterialTable(), i_btk, i_anmPlay, i_attribute, i_rate, + i_start, param_6); } - int remove(J3DModelData* data) { return data->removeTexMtxAnimator(mpAnm); } + int remove(J3DModelData* i_modelData) { return i_modelData->removeTexMtxAnimator(mpAnm); } private: /* 0x14 */ J3DAnmTextureSRTKey* mpAnm; @@ -67,18 +71,22 @@ STATIC_ASSERT(sizeof(mDoExt_btkAnm) == 0x18); class mDoExt_brkAnm : public mDoExt_baseAnm { public: mDoExt_brkAnm() { mpAnm = 0; } - /* 8000D70C */ int init(J3DMaterialTable*, J3DAnmTevRegKey*, int, int, f32, s16, s16); - /* 8000D7A8 */ void entry(J3DMaterialTable*, f32); + /* 8000D70C */ int init(J3DMaterialTable* i_matTable, J3DAnmTevRegKey* i_brk, int i_anmPlay, + int i_attribute, f32 i_rate, s16 i_start, s16 param_6); + /* 8000D7A8 */ void entry(J3DMaterialTable* i_matTable, f32 i_frame); - void entry(J3DModelData* data) { entry(data, getFrame()); } - void entry(J3DModelData* data, f32 frame) { entry(&data->getMaterialTable(), frame); } - - int init(J3DModelData* data, J3DAnmTevRegKey* anmKey, int param_2, int param_3, f32 param_4, - s16 param_5, s16 param_6) { - return init(&data->getMaterialTable(), anmKey, param_2, param_3, param_4, param_5, param_6); + void entry(J3DModelData* i_modelData) { entry(i_modelData, getFrame()); } + void entry(J3DModelData* i_modelData, f32 i_frame) { + entry(&i_modelData->getMaterialTable(), i_frame); } - int remove(J3DModelData* data) { return data->removeTevRegAnimator(mpAnm); } + int init(J3DModelData* i_modelData, J3DAnmTevRegKey* i_brk, int i_anmPlay, int i_attribute, + f32 i_rate, s16 i_start, s16 param_6) { + return init(&i_modelData->getMaterialTable(), i_brk, i_anmPlay, i_attribute, i_rate, + i_start, param_6); + } + + int remove(J3DModelData* i_modelData) { return i_modelData->removeTevRegAnimator(mpAnm); } private: /* 0x14 */ J3DAnmTevRegKey* mpAnm; @@ -93,16 +101,18 @@ public: int i_attribute, f32 i_rate, s16 i_start, s16 param_6); /* 8000D518 */ void entry(J3DMaterialTable* i_matTable, f32 i_frame); - void entry(J3DModelData* data) { entry(data, getFrame()); } - void entry(J3DModelData* data, f32 frame) { entry(&data->getMaterialTable(), frame); } - - int init(J3DModelData* data, J3DAnmColor* anmColor, int param_2, int param_3, f32 param_4, - s16 param_5, s16 param_6) { - return init(&data->getMaterialTable(), anmColor, param_2, param_3, param_4, param_5, - param_6); + void entry(J3DModelData* i_modelData) { entry(i_modelData, getFrame()); } + void entry(J3DModelData* i_modelData, f32 i_frame) { + entry(&i_modelData->getMaterialTable(), i_frame); } - int remove(J3DModelData* data) { return data->removeMatColorAnimator(mpAnm); } + int init(J3DModelData* i_modelData, J3DAnmColor* i_bpk, int i_anmPlay, int i_attribute, + f32 i_rate, s16 i_start, s16 param_6) { + return init(&i_modelData->getMaterialTable(), i_bpk, i_anmPlay, i_attribute, i_rate, + i_start, param_6); + } + + int remove(J3DModelData* i_modelData) { return i_modelData->removeMatColorAnimator(mpAnm); } private: /* 0x14 */ J3DAnmColor* mpAnm; @@ -115,12 +125,16 @@ public: mDoExt_bckAnm() { mpMtxCalc = NULL; } /* 8000D7DC */ int init(J3DAnmTransform* i_bck, int i_play, int i_attr, f32 i_rate, s16 i_startF, s16 i_endF, bool i_modify); - /* 8000D990 */ void changeBckOnly(J3DAnmTransform*); - /* 8000D9CC */ void entry(J3DModelData*, f32); - /* 8000D9E8 */ void entryJoint(J3DModelData*, u16, f32); + /* 8000D990 */ void changeBckOnly(J3DAnmTransform* i_bck); + /* 8000D9CC */ void entry(J3DModelData* i_modelData, f32 i_frame); + /* 8000D9E8 */ void entryJoint(J3DModelData* i_modelData, u16 i_jntNo, f32 i_frame); - void entry(J3DModelData* data) { entry(data, getFrame()); } + void entry(J3DModelData* i_modelData) { entry(i_modelData, getFrame()); } J3DAnmTransform* getBckAnm() { return mAnm; } + void removeJoint (J3DModelData* i_modelData, u16 i_idx) { + J3DJoint* mpJnt = i_modelData->getJointNodePointer(i_idx); + mpJnt->setMtxCalc(0); + } private: /* 0x14 */ J3DAnmTransform* mAnm; @@ -136,16 +150,18 @@ public: int i_attribute, f32 i_rate, s16 i_start, s16 param_6); /* 8000D5E8 */ void entry(J3DMaterialTable* i_matTable, s16 i_frame); - void entry(J3DModelData* data) { entry(data, getFrame()); } - void entry(J3DModelData* data, s16 frame) { entry(&data->getMaterialTable(), frame); } - - int init(J3DModelData* data, J3DAnmTexPattern* anmPattern, int param_2, int param_3, - f32 param_4, s16 param_5, s16 param_6) { - return init(&data->getMaterialTable(), anmPattern, param_2, param_3, param_4, param_5, - param_6); + void entry(J3DModelData* i_modelData) { entry(i_modelData, getFrame()); } + void entry(J3DModelData* i_modelData, s16 i_frame) { + entry(&i_modelData->getMaterialTable(), i_frame); } - int remove(J3DModelData* data) { return data->removeTexNoAnimator(mpAnm); } + int init(J3DModelData* i_modelData, J3DAnmTexPattern* i_btk, int i_anmPlay, int i_attribute, + f32 i_rate, s16 i_start, s16 param_6) { + return init(&i_modelData->getMaterialTable(), i_btk, i_anmPlay, i_attribute, i_rate, + i_start, param_6); + } + + int remove(J3DModelData* i_modelData) { return i_modelData->removeTexNoAnimator(mpAnm); } private: /* 0x14 */ J3DAnmTexPattern* mpAnm; @@ -156,6 +172,8 @@ public: /* 8000DA08 */ int init(J3DDeformData* i_deformData, J3DAnmCluster* i_blk, int i_anmPlay, int i_attribute, f32 i_rate, s16 i_start, s16 param_6); + J3DAnmCluster* getBlkAnm() { return mpAnm; } + private: /* 0x14 */ J3DAnmCluster* mpAnm; }; @@ -197,7 +215,7 @@ private: class mDoExt_invisibleModel { public: - /* 8000E53C */ int create(J3DModel*, u8); + /* 8000E53C */ int create(J3DModel* i_model, u8 param_1); /* 8000E6C8 */ void entryJoint(cXyz*); /* 8000E7C0 */ void entryDL(cXyz*); @@ -219,15 +237,18 @@ class mDoExt_morf_c { // inheritance causing issues, fix later public: /* 8000F950 */ mDoExt_morf_c(); - /* 8000FB7C */ void setMorf(f32); + /* 8000FB7C */ void setMorf(f32 i_morf); /* 8000FBC0 */ void frameUpdate(); /* 8000FAE8 */ virtual ~mDoExt_morf_c(); void setPlaySpeed(f32 speed) { mFrameCtrl.setRate(speed); } - f32 getPlaySpeed() { return mFrameCtrl.getRate(); } f32 getFrame() { return mFrameCtrl.getFrame(); } + u8 getPlayMode() { return mFrameCtrl.getAttribute(); } + bool isLoop() { return mFrameCtrl.checkState(2); } + void setFrame(f32 frame) { mFrameCtrl.setFrame((s16)frame); } + f32 getEndFrame() { return mFrameCtrl.getEnd(); } bool isStop() { bool stopped = true; @@ -297,6 +318,8 @@ public: /* 8000FD10 */ virtual ~mDoExt_McaMorf(); /* 80010074 */ virtual void calc(); + J3DModel* getModel() { return mpModel; } + private: /* 0x38 */ mDoExt_McaMorfCallBack1_c* mpCallback1; /* 0x3C */ mDoExt_McaMorfCallBack2_c* mpCallback2; @@ -365,7 +388,7 @@ struct mDoExt_MtxCalcAnmBlendTblOld }; // Size: 0xC struct mDoExt_MtxCalcAnmBlendTbl : public mDoExt_MtxCalcAnmBlendTblOld { - /* 800D00BC */ void getAnm(int); + /* 800D00BC */ J3DAnmTransform* getAnm(int); /* 80014F3C */ virtual ~mDoExt_MtxCalcAnmBlendTbl(); /* 8000F26C */ virtual void calc(); diff --git a/include/m_Do/m_Do_graphic.h b/include/m_Do/m_Do_graphic.h index 32b4acb8e8..d989cefe34 100644 --- a/include/m_Do/m_Do_graphic.h +++ b/include/m_Do/m_Do_graphic.h @@ -36,6 +36,7 @@ public: /* 80007F90 */ static void beginRender(); /* 800080D0 */ static void fadeOut(f32); /* 80007FD8 */ static void fadeOut(f32, _GXColor&); + /* 807DFAB4 */ static void fadeIn(f32, _GXColor&); /* 80008028 */ static void fadeOut_f(f32, _GXColor&); /* 800080A0 */ static void onBlure(const Mtx); /* 80008078 */ static void onBlure(); diff --git a/include/m_Do/m_Do_mtx.h b/include/m_Do/m_Do_mtx.h index 123a7d17b8..1f9d82853c 100644 --- a/include/m_Do/m_Do_mtx.h +++ b/include/m_Do/m_Do_mtx.h @@ -4,6 +4,7 @@ #include "SSystem/SComponent/c_sxyz.h" #include "SSystem/SComponent/c_xyz.h" #include "dolphin/mtx/mtx.h" +#include "dolphin/mtx/mtxvec.h" #include "dolphin/mtx/quat.h" #include "dolphin/types.h" @@ -54,7 +55,7 @@ public: static void XrotM(s16 x) { mDoMtx_XrotM(now, x); } static void inverse() { PSMTXInverse(now, now); } static void concat(const Mtx m) { PSMTXConcat(now, m, now); } - static void copy(const Mtx m) { PSMTXCopy(m, now); } + static void copy(Mtx m) { PSMTXCopy(now, m); } static Mtx now; static Mtx buffer[16]; diff --git a/include/rel/d/a/d_a_alldie/d_a_alldie.h b/include/rel/d/a/d_a_alldie/d_a_alldie.h index 9e194ee137..37bbe764a9 100644 --- a/include/rel/d/a/d_a_alldie/d_a_alldie.h +++ b/include/rel/d/a/d_a_alldie/d_a_alldie.h @@ -1,6 +1,36 @@ #ifndef D_A_ALLDIE_H #define D_A_ALLDIE_H -#include "dolphin/types.h" +#include "f_op/f_op_actor.h" + +class daAlldie_c : public fopAc_ac_c { +public: + enum EAction { + /* 0x0 */ ACT_WAIT, + /* 0x1 */ ACT_CHECK, + /* 0x2 */ ACT_TIMER, + /* 0x3 */ ACT_ORDER, + /* 0x4 */ ACT_NEXT, + /* 0x5 */ ACT_EVENT, + }; + + /* 804D5818 */ u8 getEventNo(); + /* 804D5824 */ u8 getSwbit(); + /* 804D5830 */ int actionWait(); + /* 804D5838 */ int actionCheck(); + /* 804D5888 */ int actionTimer(); + /* 804D5938 */ int actionOrder(); + /* 804D59A0 */ int actionEvent(); + /* 804D5A44 */ int actionNext(); + /* 804D5B10 */ int execute(); + + inline int create(); + + /* 0x568 */ u8 mAction; + /* 0x56A */ s16 mTimer; + /* 0x56C */ s16 mEventIdx; + /* 0x56E */ s16 mNextEventIdx; + /* 0x570 */ s16 mMapToolID; +}; // Size: 0x574 #endif /* D_A_ALLDIE_H */ diff --git a/include/rel/d/a/d_a_boomerang/d_a_boomerang.h b/include/rel/d/a/d_a_boomerang/d_a_boomerang.h index cd39bb9e4f..e3f802d51b 100644 --- a/include/rel/d/a/d_a_boomerang/d_a_boomerang.h +++ b/include/rel/d/a/d_a_boomerang/d_a_boomerang.h @@ -90,6 +90,8 @@ public: void onStateFlg0(daBoomerang_FLG0 flag) { mStateFlg0 |= flag; } void onWindCatch() { onStateFlg0(WIND_CATCH); } + bool checkForceDelete() const { return mForceDelete; } + bool checkCharge() const { return true; } private: /* 0x568 */ daMirror_c* field_0x568; @@ -114,7 +116,7 @@ private: /* 0x953 */ u8 field_0x953; /* 0x954 */ u8 field_0x954; /* 0x955 */ u8 field_0x955; - /* 0x956 */ u8 field_0x956; + /* 0x956 */ bool mForceDelete; /* 0x957 */ u8 field_0x957; /* 0x958 */ s16 field_0x958; /* 0x95A */ s16 field_0x95a; diff --git a/include/rel/d/a/d_a_horse/d_a_horse.h b/include/rel/d/a/d_a_horse/d_a_horse.h index fc9d8433af..b109ebe2f7 100644 --- a/include/rel/d/a/d_a_horse/d_a_horse.h +++ b/include/rel/d/a/d_a_horse/d_a_horse.h @@ -149,7 +149,7 @@ public: /* 80844CB0 */ daHorse_c(); bool checkNoBombProc() const { return field_0x16b4 == 0 || field_0x16b4 == 1; } - bool checkResetStateFlg0(daHorse_RFLG0 flag) { return mResetStateFlg0 & flag; } + bool checkResetStateFlg0(daHorse_RFLG0 flag) const { return mResetStateFlg0 & flag; } bool checkEndResetStateFlg0(daHorse_ERFLG0 flag) { return mEndResetStateFlg0 & flag; } bool checkStateFlg0(daHorse_FLG0 flag) { return mStateFlg0 & flag; } f32 getNormalMaxSpeedF() { return mNormalMaxSpeedF; } @@ -157,6 +157,10 @@ public: void setDemoStickR(f32 stick) { mDemoStickR = stick; } void i_changeDemoMode(u32 param_0, int param_1) { field_0x1740 = param_0; field_0x1728 = param_1; } void i_changeOriginalDemo() { field_0x16b8 = 3; field_0x1728 = 0; } + void i_setHorsePosAndAngle(cXyz const* i_pos, s16 i_angle) { (this->*mpSetHorsePosAngleFn)(i_pos, i_angle); } + + bool checkTurnStandCamera() const { return checkResetStateFlg0(TURN_STAND_CAMERA); } + bool checkTurnStand() const { return checkResetStateFlg0(TURN_STAND); } static u8 const m_footJointTable[8]; static f32 const m_callLimitDistance2; @@ -220,6 +224,15 @@ public: /* 0x1790 */ f32 mLashMaxSpeedF; /* 0x1794 */ u8 field_0x1794[0x30]; /* 0x17C4 */ cXyz mDemoPos0; + /* 0x17D0 */ u8 field_0x17d0[0x18A4 - 0x17D0]; + /* 0x18A4 */ int (daHorse_c::*mpProcFn)(); + /* 0x18A4 */ int (daHorse_c::*mpCheckSpecialWallHitFn)(const cXyz&); + /* 0x18A4 */ void (daHorse_c::*mpSetReinPosHandFn)(int); + /* 0x18A4 */ void (daHorse_c::*mpSetReinPosNormalFn)(); + /* 0x18A4 */ int (daHorse_c::*mpCallHorseFn)(const cXyz*); + /* 0x18A4 */ int (daHorse_c::*mpSetHorsePosAngleFn)(const cXyz* i_pos, s16 i_angle); + /* 0x18A4 */ void (daHorse_c::*mpOnRideFlgFn)(); + /* 0x18A4 */ void (daHorse_c::*mpOffRideFlgFn)(); }; #endif /* D_A_HORSE_H */ diff --git a/include/rel/d/a/d_a_movie_player/d_a_movie_player.h b/include/rel/d/a/d_a_movie_player/d_a_movie_player.h index 848f6787a1..8461581f8b 100644 --- a/include/rel/d/a/d_a_movie_player/d_a_movie_player.h +++ b/include/rel/d/a/d_a_movie_player/d_a_movie_player.h @@ -4,14 +4,12 @@ #include "dolphin/types.h" #include "f_op/f_op_actor.h" -typedef void (*daMP_Func)(); - class daMP_c : public fopAc_ac_c { public: - /* 80031AD0 */ static void daMP_c_THPPlayerPlay(); - /* 80031B24 */ void daMP_c_THPPlayerPause(); - /* 80031A78 */ void daMP_c_Get_MovieRestFrame(); - /* 80031AA4 */ void daMP_c_Set_PercentMovieVolume(f32); + /* 80031AD0 */ static int daMP_c_THPPlayerPlay(); + /* 80031B24 */ static void daMP_c_THPPlayerPause(); + /* 80031A78 */ static int daMP_c_Get_MovieRestFrame(); + /* 80031AA4 */ static void daMP_c_Set_PercentMovieVolume(f32); /* 80878BB8 */ void daMP_c_Get_arg_demoNo(); /* 80878C04 */ void daMP_c_Get_arg_movieNo(); /* 80878C28 */ void daMP_c_Init(); @@ -24,15 +22,15 @@ public: /* 80878F38 */ void daMP_c_Callback_Main(daMP_c*); /* 80878F70 */ void daMP_c_Callback_Draw(daMP_c*); - static u8 m_myObj[4]; + static daMP_c* m_myObj; private: - /* 0x568 */ daMP_Func mpGetMovieRestFrame; - /* 0x56C */ daMP_Func mpSetPercentMovieVol; - /* 0x570 */ daMP_Func mpTHPGetTotalFrame; - /* 0x574 */ daMP_Func mpTHPPlay; - /* 0x578 */ daMP_Func mpTHPStop; - /* 0x57C */ daMP_Func mpTHPPause; + /* 0x568 */ int (*mpGetMovieRestFrame)(void); + /* 0x56C */ void (*mpSetPercentMovieVol)(f32); + /* 0x570 */ int (*mpTHPGetTotalFrame)(void); + /* 0x574 */ int (*mpTHPPlay)(void); + /* 0x578 */ void (*mpTHPStop)(void); + /* 0x57C */ int (*mpTHPPause)(void); }; // Size: 0x580 #endif /* D_A_MOVIE_PLAYER_H */ diff --git a/include/rel/d/a/d_a_tboxSw/d_a_tboxSw.h b/include/rel/d/a/d_a_tboxSw/d_a_tboxSw.h index 21506b62d5..d3a0c3cbd1 100644 --- a/include/rel/d/a/d_a_tboxSw/d_a_tboxSw.h +++ b/include/rel/d/a/d_a_tboxSw/d_a_tboxSw.h @@ -1,6 +1,20 @@ #ifndef D_A_TBOXSW_H #define D_A_TBOXSW_H -#include "dolphin/types.h" +#include "f_op/f_op_actor_mng.h" + +class daTboxSw_c : public fopAc_ac_c { +public: + /* 80D66858 */ int Create(); + /* 80D66860 */ int create(); + /* 80D668C8 */ int execute(); + /* 80D66938 */ int draw(); + /* 80D66940 */ int _delete(); +}; + +namespace daTboxSw_prm { + inline u8 getTboxNo(daTboxSw_c* p_tbox) { return fopAcM_GetParam(p_tbox) & 0x3F; } + inline u8 getSwNo(daTboxSw_c* p_tbox) { return fopAcM_GetParam(p_tbox) >> 8; } +}; #endif /* D_A_TBOXSW_H */ diff --git a/include/rel/d/a/e/d_a_e_wb/d_a_e_wb.h b/include/rel/d/a/e/d_a_e_wb/d_a_e_wb.h index 0f5478c59d..e752b8586a 100644 --- a/include/rel/d/a/e/d_a_e_wb/d_a_e_wb.h +++ b/include/rel/d/a/e/d_a_e_wb/d_a_e_wb.h @@ -4,8 +4,17 @@ #include "Z2AudioLib/Z2Creature.h" #include "dolphin/types.h" #include "rel/d/a/d_a_horse/d_a_horse.h" +#include "SSystem/SComponent/c_phase.h" +#include "d/cc/d_cc_uty.h" -class e_wb_class : public fopAc_ac_c { +enum daE_wb_ACT { + /* 0x00 */ ACT_WAIT, + /* 0x15 */ ACT_S_DAMAGE = 0x15, + /* 0x65 */ ACT_PL_RIDE = 0x65, + /* 0x67 */ ACT_PL_RIDE_NOW = 0x67, +}; + +class e_wb_class : public fopEn_enemy_c { public: BOOL checkWait(); void setPlayerRideNow(); @@ -16,38 +25,133 @@ public: void setRunRideMode(); private: - /* 0x0568 */ u8 field_0x568[0x4C]; + /* 0x05AC */ request_of_phase_process_class mPhase; /* 0x05B4 */ s16 field_0x5b4; - /* 0x05B6 */ u8 unk1462[9]; + /* 0x05B8 */ char* mResName; + /* 0x05BC */ u8 field_0x5bc; + /* 0x05BD */ u8 field_0x5bd; + /* 0x05BE */ u8 field_0x5be; /* 0x05BF */ bool field_0x5bf; - /* 0x05C0 */ u8 field_0x5c0[0x20]; - /* 0x05E0 */ void* field_0x5e0; - /* 0x05E4 */ u8 field_0x5e4[8]; + /* 0x05C0 */ u8 field_0x5c0; + /* 0x05C4 */ cXyz field_0x5c4; + /* 0x05D0 */ cXyz field_0x5d0; + /* 0x05DC */ s16 field_0x5dc; + /* 0x05DE */ s16 field_0x5de; + /* 0x05E0 */ mDoExt_McaMorfSO* field_0x5e0; + /* 0x05E4 */ f32 field_0x5e4; + /* 0x05E8 */ int mAnmID; /* 0x05EC */ Z2CreatureRide mZ2Ride; - /* 0x0688 */ u8 unk1673[6]; + /* 0x0688 */ u8 field_0x688[4]; + /* 0x068C */ s8 field_0x68c; /* 0x068E */ s16 field_0x68e; - /* 0x0690 */ s16 field_0x690; + /* 0x0690 */ s16 mActionID; /* 0x0692 */ u16 field_0x692; - /* 0x0694 */ u8 unk1684[0xc]; + /* 0x0694 */ u32 field_0x694; + /* 0x0698 */ s16 field_0x698[4]; /* 0x06A0 */ s16 field_0x6a0; - /* 0x06A2 */ u8 field_0x6a2[0xc]; + /* 0x06A2 */ u8 field_0x6a2[0x6ae - 0x6a2]; /* 0x06AE */ s16 field_0x6ae; /* 0x06B0 */ s16 field_0x6b0; - /* 0x06B2 */ u8 field_0x6b2[0xc]; + /* 0x06B2 */ s16 field_0x6b2; + /* 0x06B4 */ u8 field_0x6b4[0x6b6 - 0x6b4]; + /* 0x06B6 */ s16 field_0x6b6; + /* 0x06B8 */ u8 field_0x6b8[0x6ba - 0x6b8]; + /* 0x06BA */ s16 field_0x6ba; + /* 0x06BC */ u8 field_0x6bc; + /* 0x06BD */ u8 field_0x6bd; /* 0x06BE */ u16 field_0x6be; - /* 0x06C0 */ u8 field_0x6c0[0xdd]; - /* 0x079D */ u8 field_0x79d; - /* 0x079E */ u8 field_0x79e[0x4e]; + /* 0x06C0 */ s8 field_0x6c0; + /* 0x06C4 */ cXyz field_0x6c4; + /* 0x06D0 */ s16 field_0x6d0; + /* 0x06D2 */ s16 field_0x6d2; + /* 0x06D4 */ s16 field_0x6d4; + /* 0x06D6 */ s16 field_0x6d6; + /* 0x06D8 */ u8 field_0x6d8[0x6da - 0x6d8]; + /* 0x06DA */ s16 field_0x6da; + /* 0x06DC */ s16 field_0x6dc; + /* 0x06DE */ u8 field_0x6de[0x6e4 - 0x6de]; + /* 0x06E4 */ u8 field_0x6e4; + /* 0x06E5 */ u8 field_0x6e5[0x79a - 0x6e5]; + /* 0x079A */ s16 field_0x79a; + /* 0x079C */ u8 field_0x79c; + /* 0x079D */ s8 field_0x79d; + /* 0x079E */ s8 field_0x79e; + /* 0x079F */ s8 field_0x79f; + /* 0x07A0 */ s16 field_0x7a0; + /* 0x07A2 */ s8 field_0x7a2; + /* 0x07A4 */ s16 field_0x7a4; + /* 0x07A6 */ s8 field_0x7a6; + /* 0x07A7 */ s8 field_0x7a7; + /* 0x07A8 */ f32 field_0x7a8; + /* 0x07AC */ dBgS_AcchCir field_0x7ac; /* 0x07EC */ dBgS_Acch field_0x7ec; - /* 0x09C4 */ cXyz field_0x9c4; - /* 0x09D0 */ u8 field_0x9d0[0xa5f]; - /* 0x142F */ u8 field_0x142f; - /* 0x1430 */ u8 field_0x1430; + /* 0x09C4 */ dCcD_Stts field_0x9c4; + /* 0x0A00 */ dCcD_Sph field_0xa00[7]; + /* 0x1288 */ dCcD_Sph field_0x1288; + /* 0x13C0 */ dCcU_AtInfo field_0x13c0; + /* 0x13E4 */ u8 field_0x13e4; + /* 0x13E8 */ u32 field_0x13e8; + /* 0x13EC */ u32 field_0x13ec; + /* 0x13F0 */ u32 field_0x13f0; + /* 0x13F4 */ u32 field_0x13f4; + /* 0x13F8 */ u32 field_0x13f8; + /* 0x13FC */ u32 field_0x13fc; + /* 0x1400 */ u32 field_0x1400; + /* 0x1404 */ u32 field_0x1404; + /* 0x1408 */ u32 field_0x1408; + /* 0x140C */ u32 field_0x140c; + /* 0x1410 */ u32 field_0x1410; + /* 0x1414 */ u32 field_0x1414; + /* 0x1418 */ u32 field_0x1418; + /* 0x141C */ u32 field_0x141c; + /* 0x1420 */ u32 field_0x1420[3]; + /* 0x142C */ u8 field_0x142c; + /* 0x142D */ u8 field_0x142d; + /* 0x142E */ u8 field_0x142e; + /* 0x142F */ s8 field_0x142f; + /* 0x1430 */ s8 field_0x1430; /* 0x1432 */ s16 field_0x1432; - /* 0x1434 */ u8 field_0x1434[0x250]; + /* 0x1434 */ u32 field_0x1434; // Some actor ID + /* 0x1438 */ cXyz field_0x1438; + /* 0x1444 */ cXyz field_0x1444; + /* 0x1450 */ u8 field_0x1450[0x15d0 - 0x1450]; + /* 0x15D0 */ mDoExt_3DlineMat1_c field_0x15d0; + /* 0x160C */ mDoExt_3DlineMat1_c field_0x160c; + /* 0x1648 */ mDoExt_3DlineMat1_c field_0x1648; /* 0x1684 */ f32 field_0x1684; - /* 0x1688 */ u8 field_0x1688[0x16]; + /* 0x1688 */ u8 field_0x1688; + /* 0x168A */ u16 field_0x168a; + /* 0x168C */ f32 field_0x168c; + /* 0x1690 */ f32 field_0x1690; + /* 0x1694 */ u8 field_0x1694[0x169e - 0x1694]; /* 0x169E */ s16 field_0x169e; + /* 0x16A0 */ s16 field_0x16a0; + /* 0x16A4 */ cXyz field_0x16a4; + /* 0x16B0 */ cXyz field_0x16b0; + /* 0x16BC */ cXyz field_0x16bc; + /* 0x16C8 */ cXyz field_0x16c8; + /* 0x16D4 */ cXyz field_0x16d4; + /* 0x16E0 */ cXyz field_0x16e0; + /* 0x16EC */ cXyz field_0x16ec; + /* 0x16F8 */ cXyz field_0x16f8; + /* 0x1704 */ s16 field_0x1704; + /* 0x1708 */ f32 field_0x1708; + /* 0x170C */ f32 field_0x170c; + /* 0x1710 */ f32 field_0x1710; + /* 0x1714 */ f32 field_0x1714; + /* 0x1718 */ f32 field_0x1718; + /* 0x171C */ u8 field_0x171c[0x1720 - 0x171c]; + /* 0x1720 */ s8 field_0x1720; + /* 0x1721 */ s8 field_0x1721; + /* 0x1722 */ s8 field_0x1722; + /* 0x1723 */ u8 field_0x1723[0x17c4 - 0x1723]; + /* 0x17C4 */ u32 field_0x17c4; + /* 0x17D0 */ u32 field_0x17d0[4]; + /* 0x17E0 */ u8 field_0x17e0; + /* 0x17E1 */ u8 field_0x17e1; + /* 0x17E2 */ s16 mWaitRollAngle; + /* 0x17E4 */ u8 field_0x17e4[0x17e8 - 0x17e4]; + /* 0x17E8 */ f32 mSpeedRate; }; #endif /* D_A_E_WB_H */ diff --git a/include/rel/d/a/e/d_a_e_yc/d_a_e_yc.h b/include/rel/d/a/e/d_a_e_yc/d_a_e_yc.h index 46761aaa2e..78d5363285 100644 --- a/include/rel/d/a/e/d_a_e_yc/d_a_e_yc.h +++ b/include/rel/d/a/e/d_a_e_yc/d_a_e_yc.h @@ -2,5 +2,140 @@ #define D_A_E_YC_H #include "dolphin/types.h" +#include "f_op/f_op_actor.h" +#include "Z2AudioLib/Z2Creature.h" +#include "d/com/d_com_inf_game.h" +// #include "d/bg/d_bg_s_acch.h" +// #include "d/cc/d_cc_d.h" + +// struct dCcD_GStts { +// /* 80083760 */ dCcD_GStts(); +// /* 80083830 */ void Move(); +// }; + +// struct dCcD_Stts { +// /* 80083860 */ void Init(int, int, fopAc_ac_c*); +// }; + +// struct dCcD_SrcSph {}; + +// struct dCcD_Sph { +// /* 80084A34 */ void Set(dCcD_SrcSph const&); +// }; + +// struct cCcD_Obj {}; + +// struct dCcD_GObjInf { +// /* 80083A28 */ dCcD_GObjInf(); +// /* 80084460 */ int ChkTgHit(); +// /* 800844F8 */ cCcD_Obj* GetTgHitObj(); +// }; + +// struct dBgS_PolyPassChk { +// /* 80078E68 */ void SetObj(); +// }; + +// struct dBgS_ObjAcch { +// /* 807F274C */ ~dBgS_ObjAcch(); +// }; + +// struct dBgS_AcchCir { +// /* 80075EAC */ dBgS_AcchCir(); +// /* 80075F58 */ void SetWall(f32, f32); +// }; + +// struct dBgS {}; + +// struct dBgS_Acch { +// /* 80075F94 */ ~dBgS_Acch(); +// /* 800760A0 */ dBgS_Acch(); +// /* 80076248 */ void Set(cXyz*, cXyz*, fopAc_ac_c*, int, dBgS_AcchCir*, cXyz*, csXyz*, csXyz*); +// /* 80076AAC */ void CrrPos(dBgS&); +// }; + +// struct cM3dGSph { +// /* 8026F648 */ void SetC(cXyz const&); +// /* 8026F708 */ void SetR(f32); +// /* 807F26BC */ ~cM3dGSph(); +// }; + +// struct cM3dGAab { +// /* 807F2704 */ ~cM3dGAab(); +// }; + +// struct cCcS { +// /* 80264BA8 */ void Set(cCcD_Obj*); +// }; + +// struct request_of_phase_process_class {}; + +// struct mDoMtx_stack_c { +// /* 8000CE38 */ void scaleM(f32, f32, f32); + +// static u8 now[48]; +// }; + +struct daE_YC_HIO_c { + /* 807EFECC */ daE_YC_HIO_c(); + /* 807F27BC */ ~daE_YC_HIO_c(); +}; + +// struct dVibration_c { +// /* 8006FA24 */ void StartShock(int, int, cXyz); +// }; + +// struct dPa_levelEcallBack {}; + +// struct dPa_control_c { +// struct level_c { +// /* 8004B918 */ void getEmitter(u32); +// }; + +// /* 8004C218 */ void setHitMark(u16, fopAc_ac_c*, cXyz const*, csXyz const*, cXyz const*, u32); +// /* 8004D4CC */ void set(u32, u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, +// cXyz const*, u8, dPa_levelEcallBack*, s8, _GXColor const*, +// _GXColor const*, cXyz const*, f32); +// /* 8004CA90 */ void set(u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, cXyz const*, +// u8, dPa_levelEcallBack*, s8, _GXColor const*, _GXColor const*, +// cXyz const*, f32); +// }; + +class e_yc_class : public fopAc_ac_c { +public: + /* 0x568 */ u8 field_0x568[80]; + /* 0x5B8 */ int field_0x5B8; + /* 0x5BC */ Z2CreatureEnemy mEnemy; + /* 0x660 */ int mAnm; + /* 0x664 */ int field_0x664; + /* 0x668 */ u8 field_0x668[6]; + /* 0x66E */ s16 mCurrentAction; + /* 0x670 */ s16 field_0x670; + /* 0x672 */ u8 field_0x672[2]; + /* 0x674 */ f32 field_0x674; + /* 0x678 */ f32 field_0x678; + /* 0x67C */ f32 field_0x67C; + /* 0x680 */ s16 field_0x680; + /* 0x682 */ u8 field_0x682[2]; + /* 0x684 */ f32 field_0x684; + /* 0x688 */ u32 field_0x688; + /* 0x68C */ u8 field_0x68C[4]; + /* 0x690 */ f32 field_0x690; + /* 0x694 */ u8 field_0x694[28]; + /* 0x69C */ f32 field_0x69C; + /* 0x6A0 */ s16 field_0x6A0; + /* 0x6A2 */ s16 field_0x6A2; + /* 0x6A4 */ s16 field_0x6A4; + /* 0x6A6 */ s16 field_0x6A6; + /* 0x6A8 */ s16 field_0x6A8; + /* 0x6AA */ s16 field_0x6AA; + /* 0x6AC */ void* field_0x6AC; + /* 0x6B0 */ u8 field_0x6B0[72]; + /* 0x6F4 */ dBgS_Acch mBgS_Acch; + /* 0x8CC */ u8 field_0x8CC[28]; + /* 0x8E8 */ dCcD_GStts mCcD_GStts; + /* 0x908 */ dCcD_GObjInf mCcD_GObjInf; + /* 0xA0C */ u8 field_0xA0C[364]; + /* 0xB78 */ cCcD_Obj* mpTgHitObj; +}; #endif /* D_A_E_YC_H */ diff --git a/include/rel/d/a/kytag/d_a_kytag14/d_a_kytag14.h b/include/rel/d/a/kytag/d_a_kytag14/d_a_kytag14.h index 0be29bb18c..84b6ffaa30 100644 --- a/include/rel/d/a/kytag/d_a_kytag14/d_a_kytag14.h +++ b/include/rel/d/a/kytag/d_a_kytag14/d_a_kytag14.h @@ -1,6 +1,17 @@ #ifndef D_A_KYTAG14_H #define D_A_KYTAG14_H -#include "dolphin/types.h" +#include "f_op/f_op_actor.h" + +class kytag14_class : public fopAc_ac_c { +public: + /* 0x568 */ s8 mSaveRoomNo; + /* 0x569 */ u8 mSavePoint; + /* 0x56A */ u16 mEventID1; + /* 0x56C */ u16 mEventID2; + /* 0x56E */ u8 mSwitchNo1; + /* 0x56F */ u8 mSwitchNo2; +}; + #endif /* D_A_KYTAG14_H */ diff --git a/include/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart.h b/include/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart.h index e698f6908a..6600a090b5 100644 --- a/include/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart.h +++ b/include/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart.h @@ -1,6 +1,18 @@ #ifndef D_A_TAG_GSTART_H #define D_A_TAG_GSTART_H -#include "dolphin/types.h" +#include "f_op/f_op_actor.h" + +class daTagGstart_c : public fopAc_ac_c { +public: + /* 805A3478 */ int create(); + /* 805A3514 */ ~daTagGstart_c(); + /* 805A3590 */ int execute(); + + /* 0x568 */ u8 mSwNo; + /* 0x569 */ u8 mSwNo2; + /* 0x56A */ u8 field_0x56a; + /* 0x56B */ u8 mType; +}; #endif /* D_A_TAG_GSTART_H */ diff --git a/include/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop.h b/include/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop.h index 2dd21960c8..0e13a0c6f3 100644 --- a/include/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop.h +++ b/include/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop.h @@ -1,6 +1,26 @@ #ifndef D_A_TAG_HSTOP_H #define D_A_TAG_HSTOP_H -#include "dolphin/types.h" +#include "f_op/f_op_actor.h" +#include "d/msg/d_msg_flow.h" + +class daTagHstop_c : public fopAc_ac_c { +public: + /* 805A43EC */ int create(); + /* 805A45F8 */ ~daTagHstop_c(); + /* 805A46B8 */ void setActive(); + /* 805A475C */ int execute(); + + static daTagHstop_c* m_top; + static dMsgFlow_c m_msgFlow; + + /* 0x568 */ daTagHstop_c* mNext; + /* 0x568 */ daTagHstop_c* mPrev; + /* 0x570 */ u8 mPrm0; + /* 0x571 */ bool mActive; + /* 0x572 */ u8 mPrm1; + /* 0x573 */ u8 field_0x573; + /* 0x574 */ int field_0x574; +}; #endif /* D_A_TAG_HSTOP_H */ diff --git a/include/rel/d/a/tag/d_a_tag_instruction/d_a_tag_instruction.h b/include/rel/d/a/tag/d_a_tag_instruction/d_a_tag_instruction.h index 5e28eadbf0..37637780d9 100644 --- a/include/rel/d/a/tag/d_a_tag_instruction/d_a_tag_instruction.h +++ b/include/rel/d/a/tag/d_a_tag_instruction/d_a_tag_instruction.h @@ -1,6 +1,8 @@ #ifndef D_A_TAG_INSTRUCTION_H #define D_A_TAG_INSTRUCTION_H -#include "dolphin/types.h" +#include "f_op/f_op_actor_mng.h" + +class daTagInst_c : public fopAc_ac_c {}; #endif /* D_A_TAG_INSTRUCTION_H */ diff --git a/libs/JSystem/J2DGraph/J2DTevs.cpp b/libs/JSystem/J2DGraph/J2DTevs.cpp index e476ca3bc5..1c1e3bba44 100644 --- a/libs/JSystem/J2DGraph/J2DTevs.cpp +++ b/libs/JSystem/J2DGraph/J2DTevs.cpp @@ -159,7 +159,7 @@ void J2DIndTevStage::load(u8 tevStage) { /* 802EA098-802EA0CC 2E49D8 0034+00 0/0 1/1 0/0 .text load__12J2DIndTexMtxFUc */ void J2DIndTexMtx::load(u8 indTexMtx) { - GXSetIndTexMtx((GXIndTexMtxID)(GX_ITM_0 + indTexMtx), mIndTexMtxInfo.mMtx, + GXSetIndTexMtx((GXIndTexMtxID)(GX_ITM_0 + indTexMtx), (f32*)mIndTexMtxInfo.mMtx, mIndTexMtxInfo.mScaleExp); } diff --git a/libs/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp b/libs/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp index caec400fce..f4e4df32c4 100644 --- a/libs/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp +++ b/libs/JSystem/J3DGraphAnimator/J3DSkinDeform.cpp @@ -49,14 +49,12 @@ extern "C" u8 sWorkArea_MtxReg__13J3DSkinDeform[2048 + 8 /* padding */]; // SECTION_INIT void memcpy(); -extern "C" void OSReport(); extern "C" void* __nwa__FUl(); extern "C" void* __nwa__FUli(); extern "C" void __dl__FPv(); extern "C" void J3DGQRSetup7__FUlUlUlUl(); extern "C" void J3DPSCalcInverseTranspose__FPA4_fPA3_f(); extern "C" void makeVcdVatCmd__8J3DShapeFv(); -extern "C" void DCStoreRange(); extern "C" void __construct_new_array(); extern "C" void __save_gpr(); extern "C" void _savegpr_17(); diff --git a/libs/JSystem/J3DGraphBase/J3DDrawBuffer.cpp b/libs/JSystem/J3DGraphBase/J3DDrawBuffer.cpp index 35f960d888..371059303c 100644 --- a/libs/JSystem/J3DGraphBase/J3DDrawBuffer.cpp +++ b/libs/JSystem/J3DGraphBase/J3DDrawBuffer.cpp @@ -7,7 +7,6 @@ #include "JSystem/JKernel/JKRHeap.h" #include "dol2asm.h" #include "dolphin/types.h" - #include "JSystem/J3DGraphBase/J3DPacket.h" // @@ -58,21 +57,15 @@ extern "C" void _restgpr_28(); /* 80456400-80456404 004A00 0004+00 2/2 0/0 0/0 .sdata2 @781 */ SECTION_SDATA2 static f32 lit_781 = 1.0f; -/* 80456404-80456408 004A04 0004+00 1/1 0/0 0/0 .sdata2 @782 */ -SECTION_SDATA2 static f32 lit_782 = 10000.0f; - -/* 80456408-80456410 004A08 0008+00 2/2 0/0 0/0 .sdata2 @784 */ -SECTION_SDATA2 static f64 lit_784 = 4503599627370496.0 /* cast u32 to float */; - void J3DDrawBuffer::calcZRatio() { mZRatio = (mZFar - mZNear) / (f32)mBufSize; } void J3DDrawBuffer::initialize() { - mDrawType = 0; - mSortType = 0; + mDrawType = DRAW_HEAD; + mSortType = SORT_MAT; mZNear = lit_781; - mZFar = lit_782; + mZFar = 10000.0f; mpZMtx = NULL; mpCallBackPacket = NULL; mBufSize = 0x20; @@ -123,7 +116,7 @@ asm void J3DDrawBuffer::frameInit() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DDrawBuffer::entryMatSort(J3DMatPacket* param_0) { +asm int J3DDrawBuffer::entryMatSort(J3DMatPacket* param_0) { nofralloc #include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryMatSort__13J3DDrawBufferFP12J3DMatPacket.s" } @@ -134,199 +127,161 @@ asm void J3DDrawBuffer::entryMatSort(J3DMatPacket* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DDrawBuffer::entryMatAnmSort(J3DMatPacket* param_0) { +asm int J3DDrawBuffer::entryMatAnmSort(J3DMatPacket* param_0) { nofralloc #include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryMatAnmSort__13J3DDrawBufferFP12J3DMatPacket.s" } #pragma pop +inline f32 J3DCalcZValue(register MtxP m, register Vec v) { + register f32 out; + + // clang-format off + asm { + lfs f1, lit_781(r2) + psq_l f0, 8(v), 0, 0 /* qr0 */ + lfs f2, 0x10(v) + psq_l f4, 32(m), 0, 0 /* qr0 */ + psq_l out, 40(m), 0, 0 /* qr0 */ + ps_merge00 f2, f2, f1 + ps_mul f4, f0, f4 + ps_madd out, f2, out, f4 + ps_sum0 out, out, out, out + } + // clang-format on + + return out; +} + /* 8032529C-803253B4 31FBDC 0118+00 1/0 0/0 0/0 .text entryZSort__13J3DDrawBufferFP12J3DMatPacket */ +// J3DCalcZValue needs work with the asm registers +#ifdef NONMATCHING +int J3DDrawBuffer::entryZSort(J3DMatPacket* i_packet) { + i_packet->drawClear(); + i_packet->getShapePacket()->drawClear(); + + Vec tmp; + tmp.x = mpZMtx[0][3]; + tmp.y = mpZMtx[1][3]; + tmp.z = mpZMtx[2][3]; + + f32 value = -J3DCalcZValue(j3dSys.getViewMtx(), tmp); + + u32 uvar4; + if (mZNear + mZRatio < value) { + if (mZFar - mZRatio > value) { + uvar4 = value / mZRatio; + } else { + uvar4 = mBufSize - 1; + } + } else { + uvar4 = 0; + } + + u32 idx = (mBufSize - 1) - uvar4; + i_packet->setNextPacket(mpBuf[idx]); + mpBuf[idx] = i_packet; + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DDrawBuffer::entryZSort(J3DMatPacket* param_0) { +asm int J3DDrawBuffer::entryZSort(J3DMatPacket* param_0) { nofralloc #include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryZSort__13J3DDrawBufferFP12J3DMatPacket.s" } #pragma pop +#endif /* 803253B4-80325404 31FCF4 0050+00 1/0 0/0 0/0 .text * entryModelSort__13J3DDrawBufferFP12J3DMatPacket */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DDrawBuffer::entryModelSort(J3DMatPacket* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryModelSort__13J3DDrawBufferFP12J3DMatPacket.s" +int J3DDrawBuffer::entryModelSort(J3DMatPacket* i_packet) { + i_packet->drawClear(); + i_packet->getShapePacket()->drawClear(); + + if (mpCallBackPacket != NULL) { + mpCallBackPacket->addChildPacket(i_packet); + return 1; + } + + return 0; } -#pragma pop /* 80325404-80325458 31FD44 0054+00 1/0 0/0 0/0 .text * entryInvalidSort__13J3DDrawBufferFP12J3DMatPacket */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DDrawBuffer::entryInvalidSort(J3DMatPacket* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/entryInvalidSort__13J3DDrawBufferFP12J3DMatPacket.s" -} -#pragma pop +int J3DDrawBuffer::entryInvalidSort(J3DMatPacket* i_packet) { + i_packet->drawClear(); + i_packet->getShapePacket()->drawClear(); -bool J3DDrawBuffer::entryNonSort(J3DMatPacket* pMat) { - pMat->clear(); - pMat->mpShapePacket->clear(); + if (mpCallBackPacket != NULL) { + mpCallBackPacket->addChildPacket(i_packet->getShapePacket()); + return 1; + } - // inlined copy of entryImm, add to start of buf - pMat->mpNextSibling = mpBuf[0]; - mpBuf[0] = pMat; - return true; + return 0; } -bool J3DDrawBuffer::entryImm(J3DPacket* pPacket, u16 index) { - pPacket->mpNextSibling = mpBuf[index]; - mpBuf[index] = pPacket; - return true; +int J3DDrawBuffer::entryNonSort(J3DMatPacket* i_packet) { + i_packet->drawClear(); + i_packet->mpShapePacket->drawClear(); + + i_packet->setNextPacket(mpBuf[0]); + mpBuf[0] = i_packet; + + return 1; } -/* ############################################################################################## */ -/* 803CEBE8-803CEBF4 -00001 000C+00 1/1 0/0 0/0 .data @992 */ -SECTION_DATA static void* lit_992[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)entryMatSort__13J3DDrawBufferFP12J3DMatPacket, -}; +int J3DDrawBuffer::entryImm(J3DPacket* i_packet, u16 index) { + i_packet->setNextPacket(mpBuf[index]); + mpBuf[index] = i_packet; -/* 803CEBF4-803CEC00 -00001 000C+00 0/1 0/0 0/0 .data @993 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_993[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)entryMatAnmSort__13J3DDrawBufferFP12J3DMatPacket, -}; -#pragma pop - -/* 803CEC00-803CEC0C -00001 000C+00 0/1 0/0 0/0 .data @994 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_994[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)entryZSort__13J3DDrawBufferFP12J3DMatPacket, -}; -#pragma pop - -/* 803CEC0C-803CEC18 -00001 000C+00 0/1 0/0 0/0 .data @995 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_995[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)entryModelSort__13J3DDrawBufferFP12J3DMatPacket, -}; -#pragma pop - -/* 803CEC18-803CEC24 -00001 000C+00 0/1 0/0 0/0 .data @996 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_996[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)entryInvalidSort__13J3DDrawBufferFP12J3DMatPacket, -}; -#pragma pop - -/* 803CEC24-803CEC30 -00001 000C+00 0/1 0/0 0/0 .data @997 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_997[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)entryNonSort__13J3DDrawBufferFP12J3DMatPacket, -}; -#pragma pop + return 1; +} /* 803CEC30-803CEC78 02BD50 0048+00 0/1 1/1 0/0 .data sortFuncTable__13J3DDrawBuffer */ -SECTION_DATA u8 J3DDrawBuffer::sortFuncTable[72] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA sortFunc J3DDrawBuffer::sortFuncTable[6] = { + &J3DDrawBuffer::entryMatSort, &J3DDrawBuffer::entryMatAnmSort, &J3DDrawBuffer::entryZSort, + &J3DDrawBuffer::entryModelSort, &J3DDrawBuffer::entryInvalidSort, &J3DDrawBuffer::entryNonSort, }; -/* 803CEC78-803CEC84 -00001 000C+00 0/1 0/0 0/0 .data @998 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_998[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)drawHead__13J3DDrawBufferCFv, -}; -#pragma pop - -/* 803CEC84-803CEC90 -00001 000C+00 0/1 0/0 0/0 .data @999 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_999[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)drawTail__13J3DDrawBufferCFv, -}; -#pragma pop - /* 803CEC90-803CECA8 02BDB0 0018+00 1/2 0/0 0/0 .data drawFuncTable__13J3DDrawBuffer */ -SECTION_DATA u8 J3DDrawBuffer::drawFuncTable[24] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA drawFunc J3DDrawBuffer::drawFuncTable[2] = { + &J3DDrawBuffer::drawHead, + &J3DDrawBuffer::drawTail, }; /* 803254AC-80325500 31FDEC 0054+00 0/0 2/2 0/0 .text draw__13J3DDrawBufferCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DDrawBuffer::draw() const { - nofralloc -#include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/draw__13J3DDrawBufferCFv.s" +void J3DDrawBuffer::draw() const { + drawFunc func = drawFuncTable[mDrawType]; + (this->*func)(); } -#pragma pop /* 80325500-80325578 31FE40 0078+00 1/0 0/0 0/0 .text drawHead__13J3DDrawBufferCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DDrawBuffer::drawHead() const { - nofralloc -#include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/drawHead__13J3DDrawBufferCFv.s" +void J3DDrawBuffer::drawHead() const { + u32 size = mBufSize; + J3DPacket** buf = mpBuf; + + for (u32 i = 0; i < size; i++) { + for (J3DPacket* packet = buf[i]; packet != NULL; packet = packet->getNextPacket()) { + packet->draw(); + } + } } -#pragma pop /* 80325578-803255F0 31FEB8 0078+00 1/0 0/0 0/0 .text drawTail__13J3DDrawBufferCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DDrawBuffer::drawTail() const { - nofralloc -#include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/drawTail__13J3DDrawBufferCFv.s" -} -#pragma pop +void J3DDrawBuffer::drawTail() const { + int num = mBufSize - 1; -/* 803255F0-803256C4 31FF30 00D4+00 0/0 1/0 0/0 .text __sinit_J3DDrawBuffer_cpp */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __sinit_J3DDrawBuffer_cpp() { - nofralloc -#include "asm/JSystem/J3DGraphBase/J3DDrawBuffer/__sinit_J3DDrawBuffer_cpp.s" + for (int i = num; i >= 0; i--) { + for (J3DPacket* packet = mpBuf[i]; packet != NULL; packet = packet->getNextPacket()) { + packet->draw(); + } + } } -#pragma pop - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x803255F0, __sinit_J3DDrawBuffer_cpp); -#pragma pop /* ############################################################################################## */ /* 804515E0-804515E8 000AE0 0004+04 0/0 1/1 0/0 .sbss entryNum__13J3DDrawBuffer */ -u8 J3DDrawBuffer::entryNum[4 + 4 /* padding */]; +int J3DDrawBuffer::entryNum; diff --git a/libs/JSystem/J3DGraphBase/J3DGD.cpp b/libs/JSystem/J3DGraphBase/J3DGD.cpp index 1e3a42fdac..50729c4045 100644 --- a/libs/JSystem/J3DGraphBase/J3DGD.cpp +++ b/libs/JSystem/J3DGraphBase/J3DGD.cpp @@ -7,12 +7,6 @@ #include "dol2asm.h" #include "dolphin/types.h" -// -// Types: -// - -struct _GXTlutSize {}; - // // Forward References: // diff --git a/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp b/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp index d4814e1ae3..20dd9a32ab 100644 --- a/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp +++ b/libs/JSystem/J3DGraphBase/J3DMatBlock.cpp @@ -484,7 +484,6 @@ extern "C" extern char const* const J3DMatBlock__stringBase0; // SECTION_INIT void memcpy(); -extern "C" void OSReport(); extern "C" void patchTexNoAndTexCoordScale__11J3DTevBlockFv(); extern "C" void patch__10J3DPEBlockFv(); extern "C" void patch__11J3DTevBlockFv(); @@ -577,7 +576,6 @@ extern "C" void patchTexNo_PtrToIdx__FUlRCUs(); extern "C" void __as__16J3DIndTexMtxInfoFRC16J3DIndTexMtxInfo(); extern "C" void __as__10J3DFogInfoFRC10J3DFogInfo(); extern "C" void __as__15J3DNBTScaleInfoFRC15J3DNBTScaleInfo(); -extern "C" void DCStoreRange(); extern "C" void GDOverflowed(); extern "C" void __destroy_arr(); extern "C" void _savegpr_24(); diff --git a/libs/JSystem/J3DGraphBase/J3DPacket.cpp b/libs/JSystem/J3DGraphBase/J3DPacket.cpp index 581f924969..bf734f1710 100644 --- a/libs/JSystem/J3DGraphBase/J3DPacket.cpp +++ b/libs/JSystem/J3DGraphBase/J3DPacket.cpp @@ -5,6 +5,7 @@ #include "JSystem/J3DGraphBase/J3DPacket.h" #include "JSystem/J3DGraphAnimator/J3DModel.h" +#include "JSystem/J3DGraphBase/J3DDrawBuffer.h" #include "JSystem/J3DGraphBase/J3DMaterial.h" #include "JSystem/J3DGraphBase/J3DShape.h" #include "JSystem/J3DGraphBase/J3DShapeMtx.h" @@ -18,14 +19,6 @@ #include "dolphin/types.h" #include "global.h" -// -// Types: -// - -struct J3DDrawBuffer { - static u8 sortFuncTable[72]; -}; - // // Forward References: // @@ -97,8 +90,10 @@ J3DError J3DDisplayListObj::newDisplayList(u32 capacity) { mpData[0] = new (0x20) char[mCapacity]; mpData[1] = new (0x20) char[mCapacity]; mSize = 0; + if (mpData[0] == NULL || mpData[1] == NULL) return kJ3DError_Alloc; + return kJ3DError_Success; } @@ -107,8 +102,10 @@ J3DError J3DDisplayListObj::newSingleDisplayList(u32 capacity) { mpData[0] = new (0x20) char[mCapacity]; mpData[1] = mpData[0]; mSize = 0; + if (mpData[0] == NULL) return kJ3DError_Alloc; + return kJ3DError_Success; } @@ -116,8 +113,10 @@ J3DError J3DDisplayListObj::newSingleDisplayList(u32 capacity) { J3DError J3DDisplayListObj::single_To_Double() { if (mpData[0] == mpData[1]) { mpData[1] = new (0x20) char[mCapacity]; + if (mpData[1] == NULL) return kJ3DError_Alloc; + memcpy(mpData[1], mpData[0], mCapacity); DCStoreRange(mpData[1], mCapacity); } @@ -182,61 +181,28 @@ u32 J3DDisplayListObj::endPatch() { } /* 80312750-80312758 30D090 0008+00 3/0 16/0 10/0 .text entry__9J3DPacketFP13J3DDrawBuffer */ -bool J3DPacket::entry(J3DDrawBuffer* param_0) { - return true; +int J3DPacket::entry(J3DDrawBuffer*) { + return 1; } void J3DPacket::addChildPacket(J3DPacket* pPacket) { if (mpFirstChild == NULL) { mpFirstChild = pPacket; } else { - pPacket->mpNextSibling = mpFirstChild; + pPacket->mpNextPacket = mpFirstChild; mpFirstChild = pPacket; } } /* ############################################################################################## */ /* 803CD900-803CD920 02AA20 0020+00 1/1 0/0 0/0 .data sDifferedRegister */ -SECTION_DATA static u32 sDifferedRegister[8] = {0x00000004, 0x00000001, 0x00000002, 0x01000000, - 0x10000000, 0x20000000, 0x02000000, 0x08000000}; +SECTION_DATA static u32 sDifferedRegister[8] = { + 0x00000004, 0x00000001, 0x00000002, 0x01000000, 0x10000000, 0x20000000, 0x02000000, 0x08000000, +}; /* 803CD920-803CD940 02AA40 0020+00 1/1 0/0 0/0 .data sSizeOfDiffered */ -SECTION_DATA static s32 sSizeOfDiffered[8] = {13, 13, 21, 120, 55, 15, 19, 45}; - -/* 803CD940-803CD954 02AA60 0014+00 2/2 0/0 0/0 .data __vt__14J3DShapePacket */ -SECTION_DATA extern void* __vt__14J3DShapePacket[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)entry__9J3DPacketFP13J3DDrawBuffer, - (void*)draw__14J3DShapePacketFv, - (void*)__dt__14J3DShapePacketFv, -}; - -/* 803CD954-803CD968 02AA74 0014+00 2/2 0/0 0/0 .data __vt__12J3DMatPacket */ -SECTION_DATA extern void* __vt__12J3DMatPacket[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)entry__12J3DMatPacketFP13J3DDrawBuffer, - (void*)draw__12J3DMatPacketFv, - (void*)__dt__12J3DMatPacketFv, -}; - -/* 803CD968-803CD97C 02AA88 0014+00 2/2 0/0 0/0 .data __vt__13J3DDrawPacket */ -SECTION_DATA extern void* __vt__13J3DDrawPacket[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)entry__9J3DPacketFP13J3DDrawBuffer, - (void*)draw__13J3DDrawPacketFv, - (void*)__dt__13J3DDrawPacketFv, -}; - -/* 803CD97C-803CD990 02AA9C 0014+00 2/2 34/34 23/23 .data __vt__9J3DPacket */ -SECTION_DATA extern void* __vt__9J3DPacket[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)entry__9J3DPacketFP13J3DDrawBuffer, - (void*)draw__9J3DPacketFv, - (void*)__dt__9J3DPacketFv, +SECTION_DATA static s32 sSizeOfDiffered[8] = { + 13, 13, 21, 120, 55, 15, 19, 45, }; /* 80312778-803127B0 30D0B8 0038+00 2/2 0/0 0/0 .text __ct__13J3DDrawPacketFv */ @@ -287,7 +253,7 @@ J3DMatPacket::J3DMatPacket() { mpInitShapePacket = NULL; mpShapePacket = NULL; mpMaterial = NULL; - mSortFlags = -1; + mDiffFlag = -1; mpTexture = NULL; mpMaterialAnm = NULL; } @@ -299,7 +265,7 @@ void J3DMatPacket::addShapePacket(J3DShapePacket* pShape) { if (mpShapePacket == NULL) { mpShapePacket = pShape; } else { - pShape->mpNextSibling = mpShapePacket; + pShape->mpNextPacket = mpShapePacket; mpShapePacket = pShape; } } @@ -316,7 +282,7 @@ void J3DMatPacket::endDiff() { bool J3DMatPacket::isSame(J3DMatPacket* pOther) const { bool isSame = false; - if (mSortFlags == pOther->mSortFlags && !(mSortFlags >> 0x1F)) { + if (mDiffFlag == pOther->mDiffFlag && !(mDiffFlag >> 0x1F)) { isSame = true; } return isSame; @@ -430,6 +396,7 @@ asm void J3DShapePacket::prepareDraw() const { void J3DShapePacket::draw() { if (!checkFlag(J3DShpFlag_Hidden) && mpShape != NULL) { prepareDraw(); + if (mpTexMtx != NULL) { J3DMaterial* material = mpShape->getMaterial(); J3DDifferedTexMtx::sTexGenBlock = material->getTexGenBlock(); @@ -437,9 +404,11 @@ void J3DShapePacket::draw() { } else { J3DDifferedTexMtx::sTexGenBlock = NULL; } + if (mpDisplayListObj != NULL) { mpDisplayListObj->callDL(); } + mpShape->draw(); } } @@ -448,6 +417,7 @@ void J3DShapePacket::draw() { void J3DShapePacket::drawFast() { if (!checkFlag(J3DShpFlag_Hidden) && mpShape != NULL) { prepareDraw(); + if (mpTexMtx != NULL) { J3DMaterial* material = mpShape->getMaterial(); J3DDifferedTexMtx::sTexGenBlock = material->getTexGenBlock(); @@ -455,21 +425,16 @@ void J3DShapePacket::drawFast() { } else { J3DDifferedTexMtx::sTexGenBlock = NULL; } + mpShape->drawFast(); } } /* 80313044-80313048 30D984 0004+00 1/0 0/0 0/0 .text draw__9J3DPacketFv */ -void J3DPacket::draw() { - /* empty function */ -} +void J3DPacket::draw() {} /* 80313048-803130A8 30D988 0060+00 1/0 0/0 0/0 .text entry__12J3DMatPacketFP13J3DDrawBuffer */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool J3DMatPacket::entry(J3DDrawBuffer* param_0) { - nofralloc -#include "asm/JSystem/J3DGraphBase/J3DPacket/entry__12J3DMatPacketFP13J3DDrawBuffer.s" +int J3DMatPacket::entry(J3DDrawBuffer* i_buffer) { + sortFunc func = J3DDrawBuffer::sortFuncTable[i_buffer->mSortType]; + return (i_buffer->*func)(this); } -#pragma pop diff --git a/libs/JSystem/J3DGraphBase/J3DShapeDraw.cpp b/libs/JSystem/J3DGraphBase/J3DShapeDraw.cpp index dc735608ca..94b407be05 100644 --- a/libs/JSystem/J3DGraphBase/J3DShapeDraw.cpp +++ b/libs/JSystem/J3DGraphBase/J3DShapeDraw.cpp @@ -26,7 +26,7 @@ u32 J3DShapeDraw::countVertex(u32 stride) { u32 count = 0; u32 dlStart = (u32)getDisplayList(); for (u8* dl = (u8*)dlStart; ((u32)dl - dlStart) < getDisplayListSize();) { - if (*dl != 0xA0 && *dl != 0x98) + if (*dl != GX_TRIANGLEFAN && *dl != GX_TRIANGLESTRIP) break; u16 vtxNum = *((u16*)(dl + 1)); count += vtxNum; @@ -50,7 +50,7 @@ void J3DShapeDraw::addTexMtxIndexInDL(u32 stride, u32 attrOffs, u32 valueBase) { u8 h = *oldDL; *newDL++ = h; - if (h != 0xA0 && h != 0x98) + if (h != GX_TRIANGLEFAN && h != GX_TRIANGLESTRIP) break; // Copy count @@ -82,7 +82,6 @@ void J3DShapeDraw::addTexMtxIndexInDL(u32 stride, u32 attrOffs, u32 valueBase) { DCStoreRange(newDLStart, mDisplayListSize); } #else - #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -91,7 +90,6 @@ asm void J3DShapeDraw::addTexMtxIndexInDL(u32 param_0, u32 param_1, u32 param_2) #include "asm/JSystem/J3DGraphBase/J3DShapeDraw/addTexMtxIndexInDL__12J3DShapeDrawFUlUlUl.s" } #pragma pop - #endif /* 80314ABC-80314AD4 30F3FC 0018+00 0/0 1/1 0/0 .text __ct__12J3DShapeDrawFPCUcUl */ diff --git a/libs/JSystem/J3DGraphBase/J3DShapeMtx.cpp b/libs/JSystem/J3DGraphBase/J3DShapeMtx.cpp index 839a949253..86d52ff500 100644 --- a/libs/JSystem/J3DGraphBase/J3DShapeMtx.cpp +++ b/libs/JSystem/J3DGraphBase/J3DShapeMtx.cpp @@ -719,7 +719,7 @@ u32 J3DShapeMtxMultiConcatView::getUseMtxNum() const { /* 8031469C-803146AC 30EFDC 0010+00 1/0 0/0 0/0 .text * getUseMtxIndex__26J3DShapeMtxMultiConcatViewCFUs */ u32 J3DShapeMtxMultiConcatView::getUseMtxIndex(u16 no) const { - return mUseMtxIndex[no]; + return mUseMtxIndexTable[no]; } /* 803146AC-803146B0 30EFEC 0004+00 1/0 0/0 0/0 .text @@ -752,7 +752,7 @@ u32 J3DShapeMtxMulti::getUseMtxNum() const { /* 80314720-80314730 30F060 0010+00 1/0 0/0 0/0 .text getUseMtxIndex__16J3DShapeMtxMultiCFUs */ u32 J3DShapeMtxMulti::getUseMtxIndex(u16 no) const { - return mUseMtxIndex[no]; + return mUseMtxIndexTable[no]; } /* 80314730-8031478C 30F070 005C+00 1/0 0/0 0/0 .text __dt__21J3DShapeMtxConcatViewFv */ diff --git a/libs/JSystem/J3DGraphBase/J3DSys.cpp b/libs/JSystem/J3DGraphBase/J3DSys.cpp index f9c1f4e7dd..2b326a72b0 100644 --- a/libs/JSystem/J3DGraphBase/J3DSys.cpp +++ b/libs/JSystem/J3DGraphBase/J3DSys.cpp @@ -198,7 +198,7 @@ void J3DSys::drawInit() { u8 i; for (i = 0; i < 3; i++) - GXSetIndTexMtx((GXIndTexMtxID)(GX_ITM_0 + i), indTexMtx, 1); + GXSetIndTexMtx((GXIndTexMtxID)(GX_ITM_0 + i), (f32*)indTexMtx, 1); GXSetChanMatColor(GX_COLOR0A0, j3dDefaultColInfo); GXSetChanMatColor(GX_COLOR1A1, j3dDefaultColInfo); @@ -380,9 +380,9 @@ void J3DSys::reinitIndStages() { GXSetIndTexCoordScale(GX_INDTEXSTAGE1, GX_ITS_1, GX_ITS_1); GXSetIndTexCoordScale(GX_INDTEXSTAGE2, GX_ITS_1, GX_ITS_1); GXSetIndTexCoordScale(GX_INDTEXSTAGE3, GX_ITS_1, GX_ITS_1); - GXSetIndTexMtx(GX_ITM_0, IndMtx, 1); - GXSetIndTexMtx(GX_ITM_1, IndMtx, 1); - GXSetIndTexMtx(GX_ITM_2, IndMtx, 1); + GXSetIndTexMtx(GX_ITM_0, (f32*)IndMtx, 1); + GXSetIndTexMtx(GX_ITM_1, (f32*)IndMtx, 1); + GXSetIndTexMtx(GX_ITM_2, (f32*)IndMtx, 1); } /* 80310E3C-80310ED0 30B77C 0094+00 1/1 0/0 0/0 .text reinitPixelProc__6J3DSysFv */ diff --git a/libs/JSystem/J3DGraphBase/J3DVertex.cpp b/libs/JSystem/J3DGraphBase/J3DVertex.cpp index 94affe40c9..1356041e34 100644 --- a/libs/JSystem/J3DGraphBase/J3DVertex.cpp +++ b/libs/JSystem/J3DGraphBase/J3DVertex.cpp @@ -97,7 +97,7 @@ void J3DVertexBuffer::setArray() const { s32 J3DVertexBuffer::copyLocalVtxPosArray(u32 flag) { if (flag & 1) { for (int i = 0; i < 2; i++) { - mVtxPosArray[i] = new (0x20) VertexPosition[mVtxData->getVtxNum()]; + mVtxPosArray[i] = new (0x20) Vec[mVtxData->getVtxNum()]; if (mVtxPosArray[i] == NULL) { return kJ3DError_Alloc; @@ -109,7 +109,7 @@ s32 J3DVertexBuffer::copyLocalVtxPosArray(u32 flag) { mVtxPosArray[0] = mVtxData->getVtxPosArray(); if (mVtxPosArray[1] == NULL) { - mVtxPosArray[1] = new (0x20) VertexPosition[mVtxData->getVtxNum()]; + mVtxPosArray[1] = new (0x20) Vec[mVtxData->getVtxNum()]; if (mVtxPosArray[1] == NULL) { return kJ3DError_Alloc; } @@ -209,7 +209,7 @@ s32 J3DVertexBuffer::allocTransformedVtxPosArray() { for (int i = 0; i < 2; i++) { if (i == 0 || mTransformedVtxPosArray[i] == NULL) { - mTransformedVtxPosArray[i] = new (0x20) VertexPosition[mVtxData->getVtxNum()]; + mTransformedVtxPosArray[i] = new (0x20) Vec[mVtxData->getVtxNum()]; if (mTransformedVtxPosArray[i] == NULL) return kJ3DError_Alloc; } diff --git a/libs/JSystem/J3DGraphLoader/J3DJointFactory.cpp b/libs/JSystem/J3DGraphLoader/J3DJointFactory.cpp index 5960abff0d..e676e41344 100644 --- a/libs/JSystem/J3DGraphLoader/J3DJointFactory.cpp +++ b/libs/JSystem/J3DGraphLoader/J3DJointFactory.cpp @@ -4,6 +4,8 @@ // #include "JSystem/J3DGraphLoader/J3DJointFactory.h" +#include "JSystem/J3DGraphAnimator/J3DJoint.h" +#include "JSystem/JSupport/JSupport.h" #include "dol2asm.h" #include "dolphin/types.h" @@ -11,64 +13,31 @@ // Types: // -struct J3DJointBlock {}; - -struct J3DJointFactory { - /* 80337178 */ J3DJointFactory(J3DJointBlock const&); - /* 803371D0 */ void create(int); -}; - -struct J3DJoint { - /* 8032F170 */ J3DJoint(); -}; - -// -// Forward References: -// - -extern "C" void __ct__15J3DJointFactoryFRC13J3DJointBlock(); -extern "C" void create__15J3DJointFactoryFi(); -extern "C" void func_80337338(void* _this, void const*, u32); - -// -// External References: -// - -extern "C" void* __nw__FUl(); -extern "C" void __ct__8J3DJointFv(); -extern "C" void func_8033677C(void* _this, void const*, u32); - -// -// Declarations: -// +extern "C" u16* func_8033677C(const void*, const void*); // JSUConvertOffsetToPtr /* 80337178-803371D0 331AB8 0058+00 0/0 1/1 0/0 .text __ct__15J3DJointFactoryFRC13J3DJointBlock */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm J3DJointFactory::J3DJointFactory(J3DJointBlock const& param_0) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DJointFactory/__ct__15J3DJointFactoryFRC13J3DJointBlock.s" +J3DJointFactory::J3DJointFactory(J3DJointBlock const& block) { + mJointInitData = JSUConvertOffsetToPtr(&block, block.mJointInitData); + + // Fix when we have our ODR working. + // mIndexTable = JSUConvertOffsetToPtr(&block, block.mIndexTable); + mIndexTable = func_8033677C(&block, block.mIndexTable); } -#pragma pop /* 803371D0-80337338 331B10 0168+00 0/0 1/1 0/0 .text create__15J3DJointFactoryFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DJointFactory::create(int param_0) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DJointFactory/create__15J3DJointFactoryFi.s" -} -#pragma pop +J3DJoint* J3DJointFactory::create(int no) { + J3DJoint* joint = new J3DJoint(); + joint->mJntNo = no; + joint->mKind = getKind(no); + joint->mScaleCompensate = getScaleCompensate(no); + joint->mTransformInfo = getTransformInfo(no); + joint->mBoundingSphereRadius = getRadius(no); + joint->mMin = getMin(no); + joint->mMax = getMax(no); + joint->mMtxCalc = NULL; -/* 80337338-80337350 331C78 0018+00 1/1 0/0 0/0 .text - * JSUConvertOffsetToPtr<16J3DJointInitData>__FPCvUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_80337338(void* _this, void const* param_0, u32 param_1) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DJointFactory/func_80337338.s" -} -#pragma pop + if (joint->mScaleCompensate == 0xFF) + joint->mScaleCompensate = 0; + + return joint; +} \ No newline at end of file diff --git a/libs/JSystem/J3DGraphLoader/J3DShapeFactory.cpp b/libs/JSystem/J3DGraphLoader/J3DShapeFactory.cpp index 1f872b3228..6a21b67580 100644 --- a/libs/JSystem/J3DGraphLoader/J3DShapeFactory.cpp +++ b/libs/JSystem/J3DGraphLoader/J3DShapeFactory.cpp @@ -4,36 +4,13 @@ // #include "JSystem/J3DGraphLoader/J3DShapeFactory.h" +#include "JSystem/J3DGraphBase/J3DShape.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "JSystem/JSupport/JSupport.h" #include "dol2asm.h" +#include "dolphin/os/OS.h" #include "dolphin/types.h" -// -// Types: -// - -struct _GXVtxDescList {}; - -struct J3DShapeBlock {}; - -struct J3DShapeFactory { - /* 80337350 */ J3DShapeFactory(J3DShapeBlock const&); - /* 80337400 */ void create(int, u32, _GXVtxDescList*); - /* 803375BC */ void newShapeMtx(u32, int, int) const; - /* 8033784C */ void newShapeDraw(int, int) const; - /* 803378D8 */ void allocVcdVatCmdBuffer(u32); - /* 80337944 */ void calcSize(int, u32); - /* 803379D8 */ void calcSizeVcdVatCmdBuffer(u32); - /* 803379E8 */ void calcSizeShapeMtx(u32, int, int) const; -}; - -struct J3DShapeDraw { - /* 80314ABC */ J3DShapeDraw(u8 const*, u32); -}; - -struct J3DShape { - /* 80314B48 */ void initialize(); -}; - // // Forward References: // @@ -56,14 +33,15 @@ extern "C" extern char const* const J3DShapeFactory__stringBase0; // External References: // -extern "C" void OSReport(); +extern "C" J3DShapeInitData* func_80336764(const void*, + const void*); // JSUConvertOffsetToPtr +extern "C" u16* func_8033677C(const void*, const void*); // JSUConvertOffsetToPtr + extern "C" void* __nw__FUl(); extern "C" void* __nwa__FUl(); extern "C" void* __nwa__FUli(); extern "C" void __ct__12J3DShapeDrawFPCUcUl(); extern "C" void initialize__8J3DShapeFv(); -extern "C" void func_80336764(void* _this, void const*, u32); -extern "C" void func_8033677C(void* _this, void const*, u32); extern "C" void _savegpr_26(); extern "C" void _savegpr_29(); extern "C" void _restgpr_26(); @@ -81,141 +59,203 @@ extern "C" extern void* __vt__8J3DShape[6]; // /* 80337350-80337400 331C90 00B0+00 0/0 2/2 0/0 .text __ct__15J3DShapeFactoryFRC13J3DShapeBlock */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm J3DShapeFactory::J3DShapeFactory(J3DShapeBlock const& param_0) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/__ct__15J3DShapeFactoryFRC13J3DShapeBlock.s" +J3DShapeFactory::J3DShapeFactory(J3DShapeBlock const& block) { + // mShapeInitData = JSUConvertOffsetToPtr(&block, block.mShapeInitData); + mShapeInitData = func_80336764(&block, block.mShapeInitData); + // mIndexTable = JSUConvertOffsetToPtr(&block, block.mIndexTable); + mIndexTable = func_8033677C(&block, block.mIndexTable); + mVtxDescList = JSUConvertOffsetToPtr(&block, block.mVtxDescList); + // mMtxTable = JSUConvertOffsetToPtr(&block, block.mMtxTable); + mMtxTable = func_8033677C(&block, block.mMtxTable); + mDisplayListData = JSUConvertOffsetToPtr(&block, block.mDisplayListData); + mMtxInitData = JSUConvertOffsetToPtr(&block, block.mMtxInitData); + mDrawInitData = JSUConvertOffsetToPtr(&block, block.mDrawInitData); + mVcdVatCmdBuffer = NULL; } -#pragma pop /* 80337400-803375BC 331D40 01BC+00 0/0 1/1 0/0 .text * create__15J3DShapeFactoryFiUlP14_GXVtxDescList */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DShapeFactory::create(int param_0, u32 param_1, _GXVtxDescList* param_2) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/create__15J3DShapeFactoryFiUlP14_GXVtxDescList.s" -} -#pragma pop +J3DShape* J3DShapeFactory::create(int no, u32 flag, GXVtxDescList* vtxDesc) { + J3DShape* shape = new J3DShape; + shape->mMtxGroupNum = getMtxGroupNum(no); + shape->mRadius = getRadius(no); + shape->mVtxDesc = getVtxDescList(no); + shape->mShapeMtx = new J3DShapeMtx*[shape->mMtxGroupNum]; + shape->mShapeDraw = new J3DShapeDraw*[shape->mMtxGroupNum]; + shape->mMin = getMin(no); + shape->mMax = getMax(no); + shape->mVcdVatCmd = mVcdVatCmdBuffer + no * J3DShape::kVcdVatDLSize; -/* ############################################################################################## */ -/* 803A2100-803A2100 02E760 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_803A2100 = - "WRONG SHAPE MATRIX TYPE (J3DModelInit.cpp)\n"; -/* @stringBase0 padding */ -SECTION_DEAD static char const* const pad_803A212C = "\0\0\0"; -#pragma pop + for (s32 i = 0; i < shape->mMtxGroupNum; i++) { + shape->mShapeMtx[i] = newShapeMtx(flag, no, i); + shape->mShapeDraw[i] = newShapeDraw(no, i); + } + + shape->mIndex = no; + return shape; +} + +static inline u32 getMdlDataFlag_MtxLoadType(u32 flag) { + return flag & 0x10; +} + +enum { + J3DMdlDataFlag_ConcatView = 0x10, +}; + +enum { + J3DShapeMtxType_Mtx = 0x00, + J3DShapeMtxType_BBoard = 0x01, + J3DShapeMtxType_YBBoard = 0x02, + J3DShapeMtxType_Multi = 0x03, +}; /* 803375BC-8033784C 331EFC 0290+00 1/1 0/0 0/0 .text newShapeMtx__15J3DShapeFactoryCFUlii */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DShapeFactory::newShapeMtx(u32 param_0, int param_1, int param_2) const { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/newShapeMtx__15J3DShapeFactoryCFUlii.s" +J3DShapeMtx* J3DShapeFactory::newShapeMtx(u32 flag, int shapeNo, int mtxGroupNo) const { + J3DShapeMtx* ret = NULL; + const J3DShapeInitData& shapeInitData = mShapeInitData[mIndexTable[shapeNo]]; + const J3DShapeMtxInitData& mtxInitData = + (&mMtxInitData[shapeInitData.mMtxInitDataIndex])[mtxGroupNo]; + + switch (getMdlDataFlag_MtxLoadType(flag)) { + case J3DMdlDataFlag_ConcatView: + switch (shapeInitData.mShapeMtxType) { + case J3DShapeMtxType_Mtx: + ret = new J3DShapeMtxConcatView(mtxInitData.mUseMtxIndex); + break; + case J3DShapeMtxType_BBoard: + ret = new J3DShapeMtxBBoardConcatView(mtxInitData.mUseMtxIndex); + break; + case J3DShapeMtxType_YBBoard: + ret = new J3DShapeMtxYBBoardConcatView(mtxInitData.mUseMtxIndex); + break; + case J3DShapeMtxType_Multi: + ret = new J3DShapeMtxMultiConcatView(mtxInitData.mUseMtxIndex, mtxInitData.mUseMtxCount, + &mMtxTable[mtxInitData.mFirstUseMtxIndex]); + break; + default: + OSReport("WRONG SHAPE MATRIX TYPE (J3DModelInit.cpp)\n"); + break; + } + break; + + case 0: + default: + switch (shapeInitData.mShapeMtxType) { + case J3DShapeMtxType_Mtx: + case J3DShapeMtxType_BBoard: + case J3DShapeMtxType_YBBoard: + ret = new J3DShapeMtx(mtxInitData.mUseMtxIndex); + break; + case J3DShapeMtxType_Multi: + ret = new J3DShapeMtxMulti(mtxInitData.mUseMtxIndex, mtxInitData.mUseMtxCount, + &mMtxTable[mtxInitData.mFirstUseMtxIndex]); + break; + default: + OSReport("WRONG SHAPE MATRIX TYPE (J3DModelInit.cpp)\n"); + break; + } + break; + } + + return ret; } -#pragma pop /* 8033784C-803378D8 33218C 008C+00 1/1 0/0 0/0 .text newShapeDraw__15J3DShapeFactoryCFii */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DShapeFactory::newShapeDraw(int param_0, int param_1) const { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/newShapeDraw__15J3DShapeFactoryCFii.s" +J3DShapeDraw* J3DShapeFactory::newShapeDraw(int shapeNo, int mtxGroupNo) const { + const J3DShapeInitData& shapeInitData = mShapeInitData[mIndexTable[shapeNo]]; + const J3DShapeDrawInitData& drawInitData = + (&mDrawInitData[shapeInitData.mDrawInitDataIndex])[mtxGroupNo]; + return new J3DShapeDraw(&mDisplayListData[drawInitData.mDisplayListIndex], + drawInitData.mDisplayListSize); } -#pragma pop /* 803378D8-80337944 332218 006C+00 0/0 1/1 0/0 .text allocVcdVatCmdBuffer__15J3DShapeFactoryFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DShapeFactory::allocVcdVatCmdBuffer(u32 param_0) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/allocVcdVatCmdBuffer__15J3DShapeFactoryFUl.s" +void J3DShapeFactory::allocVcdVatCmdBuffer(u32 count) { + mVcdVatCmdBuffer = new (0x20) u8[J3DShape::kVcdVatDLSize * count]; + for (u32 i = 0; i < (J3DShape::kVcdVatDLSize * count) / 4; i++) + ((u32*)mVcdVatCmdBuffer)[i] = 0; } -#pragma pop /* 80337944-803379D8 332284 0094+00 0/0 1/1 0/0 .text calcSize__15J3DShapeFactoryFiUl */ +#ifdef NONMATCHING +s32 J3DShapeFactory::calcSize(int shapeNo, u32 flag) { + s32 size = 0x68; + + // regalloc + u32 mtxGroupNo = getMtxGroupNum(shapeNo); + size += mtxGroupNo * 4; + size += mtxGroupNo * 4; + + for (u32 i = 0; i < mtxGroupNo; i++) { + s32 shapeMtxSize = calcSizeShapeMtx(flag, shapeNo, i); + size += shapeMtxSize; + size += 0x0C; + } + + return size; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void J3DShapeFactory::calcSize(int param_0, u32 param_1) { +asm s32 J3DShapeFactory::calcSize(int param_0, u32 param_1) { nofralloc #include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/calcSize__15J3DShapeFactoryFiUl.s" } #pragma pop +#endif /* 803379D8-803379E8 332318 0010+00 0/0 1/1 0/0 .text * calcSizeVcdVatCmdBuffer__15J3DShapeFactoryFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DShapeFactory::calcSizeVcdVatCmdBuffer(u32 param_0) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/calcSizeVcdVatCmdBuffer__15J3DShapeFactoryFUl.s" +s32 J3DShapeFactory::calcSizeVcdVatCmdBuffer(u32 count) { + return ALIGN_NEXT(count * J3DShape::kVcdVatDLSize, 0x20); } -#pragma pop /* 803379E8-80337AE0 332328 00F8+00 1/1 0/0 0/0 .text calcSizeShapeMtx__15J3DShapeFactoryCFUlii */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DShapeFactory::calcSizeShapeMtx(u32 param_0, int param_1, int param_2) const { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/calcSizeShapeMtx__15J3DShapeFactoryCFUlii.s" -} -#pragma pop +s32 J3DShapeFactory::calcSizeShapeMtx(u32 flag, int shapeNo, int mtxGroupNo) const { + const J3DShapeInitData& shapeInitData = mShapeInitData[mIndexTable[shapeNo]]; + u32 ret = 0; -/* 80337AE0-80337AF8 332420 0018+00 1/1 0/0 0/0 .text - * JSUConvertOffsetToPtr<20J3DShapeDrawInitData>__FPCvUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_80337AE0(void* _this, void const* param_0, u32 param_1) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/func_80337AE0.s" -} -#pragma pop + u32 mtxLoadType = getMdlDataFlag_MtxLoadType(flag); + switch (mtxLoadType) { + case J3DMdlDataFlag_ConcatView: + switch (shapeInitData.mShapeMtxType) { + case J3DShapeMtxType_Mtx: + ret = 0x08; + break; + case J3DShapeMtxType_BBoard: + ret = 0x08; + break; + case J3DShapeMtxType_YBBoard: + ret = 0x08; + break; + case J3DShapeMtxType_Multi: + ret = 0x10; + break; + default: + OSReport("WRONG SHAPE MATRIX TYPE (J3DModelInit.cpp)\n"); + } + break; -/* 80337AF8-80337B10 332438 0018+00 1/1 0/0 0/0 .text - * JSUConvertOffsetToPtr<19J3DShapeMtxInitData>__FPCvUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_80337AF8(void* _this, void const* param_0, u32 param_1) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/func_80337AF8.s" -} -#pragma pop + case 0: + default: + switch (shapeInitData.mShapeMtxType) { + case J3DShapeMtxType_Mtx: + case J3DShapeMtxType_BBoard: + case J3DShapeMtxType_YBBoard: + ret = 0x08; + break; + case J3DShapeMtxType_Multi: + ret = 0x10; + break; + default: + OSReport("WRONG SHAPE MATRIX TYPE (J3DModelInit.cpp)\n"); + } + break; + } -/* 80337B10-80337B28 332450 0018+00 1/1 0/0 0/0 .text JSUConvertOffsetToPtr__FPCvUl - */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_80337B10(void* _this, void const* param_0, u32 param_1) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/func_80337B10.s" -} -#pragma pop - -/* 80337B28-80337B40 332468 0018+00 1/1 0/0 0/0 .text - * JSUConvertOffsetToPtr<14_GXVtxDescList>__FPCvUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_80337B28(void* _this, void const* param_0, u32 param_1) { - nofralloc -#include "asm/JSystem/J3DGraphLoader/J3DShapeFactory/func_80337B28.s" -} -#pragma pop - -/* 803A2100-803A2100 02E760 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ + return ret; +} \ No newline at end of file diff --git a/libs/JSystem/JParticle/JPABaseShape.cpp b/libs/JSystem/JParticle/JPABaseShape.cpp index 025aadaa10..7f385824f9 100644 --- a/libs/JSystem/JParticle/JPABaseShape.cpp +++ b/libs/JSystem/JParticle/JPABaseShape.cpp @@ -7,6 +7,7 @@ #include "JSystem/JParticle/JPAParticle.h" #include "JSystem/JParticle/JPAResource.h" #include "JSystem/JParticle/JPAResourceManager.h" +#include "dolphin/mtx/mtxvec.h" #include "dol2asm.h" #include "dolphin/types.h" diff --git a/libs/JSystem/JParticle/JPAEmitter.cpp b/libs/JSystem/JParticle/JPAEmitter.cpp index e8b601f4c8..105a616948 100644 --- a/libs/JSystem/JParticle/JPAEmitter.cpp +++ b/libs/JSystem/JParticle/JPAEmitter.cpp @@ -10,6 +10,7 @@ #include "JSystem/JParticle/JPAResourceManager.h" #include "dol2asm.h" #include "dolphin/mtx/mtx.h" +#include "dolphin/mtx/mtxvec.h" #include "dolphin/types.h" // diff --git a/libs/JSystem/JParticle/JPAParticle.cpp b/libs/JSystem/JParticle/JPAParticle.cpp index c4345888df..f317236969 100644 --- a/libs/JSystem/JParticle/JPAParticle.cpp +++ b/libs/JSystem/JParticle/JPAParticle.cpp @@ -4,6 +4,7 @@ // #include "JSystem/JParticle/JPAParticle.h" +#include "dolphin/mtx/mtxvec.h" #include "dol2asm.h" #include "dolphin/types.h" diff --git a/libs/JSystem/JParticle/JPAResource.cpp b/libs/JSystem/JParticle/JPAResource.cpp index 3195955b8f..d9430992d6 100644 --- a/libs/JSystem/JParticle/JPAResource.cpp +++ b/libs/JSystem/JParticle/JPAResource.cpp @@ -9,6 +9,7 @@ #include "JSystem/JParticle/JPAParticle.h" #include "dol2asm.h" #include "dolphin/mtx/mtx.h" +#include "dolphin/mtx/mtxvec.h" #include "dolphin/types.h" // diff --git a/libs/JSystem/JStudio/JStudio/functionvalue.cpp b/libs/JSystem/JStudio/JStudio/functionvalue.cpp index b71f773d01..a79c09925d 100644 --- a/libs/JSystem/JStudio/JStudio/functionvalue.cpp +++ b/libs/JSystem/JStudio/JStudio/functionvalue.cpp @@ -4,6 +4,7 @@ // #include "JSystem/JStudio/JStudio/functionvalue.h" +#include "JSystem/JUtility/JUTException.h" #include "MSL_C/math.h" #include "dol2asm.h" #include "dolphin/types.h" diff --git a/libs/JSystem/JStudio/JStudio/fvb.cpp b/libs/JSystem/JStudio/JStudio/fvb.cpp index 3cbafd02f7..f822d7cd09 100644 --- a/libs/JSystem/JStudio/JStudio/fvb.cpp +++ b/libs/JSystem/JStudio/JStudio/fvb.cpp @@ -4,6 +4,7 @@ // #include "JSystem/JStudio/JStudio/fvb.h" +#include "JSystem/JUtility/JUTException.h" #include "dol2asm.h" #include "dolphin/types.h" diff --git a/libs/JSystem/JStudio/JStudio/stb.cpp b/libs/JSystem/JStudio/JStudio/stb.cpp index 3ff947cc70..e624ce6b73 100644 --- a/libs/JSystem/JStudio/JStudio/stb.cpp +++ b/libs/JSystem/JStudio/JStudio/stb.cpp @@ -1,4 +1,5 @@ #include "JSystem/JStudio/JStudio/stb.h" +#include "JSystem/JUtility/JUTException.h" #include "dol2asm.h" #include "dolphin/types.h" diff --git a/libs/MSL_C/MSL_Common/Src/abort_exit.c b/libs/MSL_C/MSL_Common/Src/abort_exit.c index 4dc61f92d3..4685d60803 100644 --- a/libs/MSL_C/MSL_Common/Src/abort_exit.c +++ b/libs/MSL_C/MSL_Common/Src/abort_exit.c @@ -24,8 +24,8 @@ void __destroy_global_chain(); void __end_critical_region(); void __begin_critical_region(); void __kill_critical_regions(); -void raise(); -SECTION_DTORS10 extern void* const __destroy_global_chain_reference; +void raise(int); +SECTION_DTORS10 extern void (*__destroy_global_chain_reference[])(void); // // Declarations: @@ -33,7 +33,7 @@ SECTION_DTORS10 extern void* const __destroy_global_chain_reference; /* ############################################################################################## */ /* 8044D440-8044D540 07A160 0100+00 2/2 0/0 0/0 .bss __atexit_funcs */ -static u8 __atexit_funcs[256]; +static void (*__atexit_funcs[64])(void); /* ############################################################################################## */ /* 804519A0-804519A8 000EA0 0008+00 0/0 1/1 0/0 .sbss None */ @@ -41,34 +41,71 @@ extern u8 data_804519A0[8]; u8 data_804519A0[8]; /* 8045199C-804519A0 000E9C 0004+00 2/2 0/0 0/0 .sbss __console_exit */ -static u8 __console_exit[4]; +static void (*__console_exit)(void); /* 80451998-8045199C 000E98 0004+00 1/1 1/1 0/0 .sbss __stdio_exit */ -extern u8 __stdio_exit[4]; -u8 __stdio_exit[4]; +extern void (*__stdio_exit)(void); +void (*__stdio_exit)(void); /* 80451994-80451998 000E94 0004+00 2/2 0/0 0/0 .sbss __atexit_curr_func */ -static u8 __atexit_curr_func[4]; +static int __atexit_curr_func; /* 80451990-80451994 000E90 0004+00 2/2 0/0 0/0 .sbss __aborting */ -static u8 __aborting[4]; +static int __aborting; /* 803629CC-80362ABC 35D30C 00F0+00 0/0 2/2 0/0 .text exit */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void exit() { - nofralloc -#include "asm/MSL_C/MSL_Common/Src/abort_exit/exit.s" +void exit(int status) { + int i; + void (**dtor)(void); + + if (!__aborting) { + __begin_critical_region(0); + __end_critical_region(0); + __destroy_global_chain(); + + dtor = __destroy_global_chain_reference; + while (*dtor != NULL) { + (*dtor)(); + dtor++; + } + + if (__stdio_exit != NULL) { + __stdio_exit(); + __stdio_exit = NULL; + } + } + + __begin_critical_region(0); + while (__atexit_curr_func > 0) + __atexit_funcs[--__atexit_curr_func](); + + __end_critical_region(0); + __kill_critical_regions(); + + if (__console_exit != NULL) { + __console_exit(); + __console_exit = NULL; + } + + _ExitProcess(); } -#pragma pop /* 80362ABC-80362B58 35D3FC 009C+00 0/0 9/9 0/0 .text abort */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void abort() { - nofralloc -#include "asm/MSL_C/MSL_Common/Src/abort_exit/abort.s" +void abort(void) { + raise(1); + __aborting = 1; + __begin_critical_region(0); + + while (__atexit_curr_func > 0) + __atexit_funcs[--__atexit_curr_func](); + + __end_critical_region(0); + __kill_critical_regions(); + + if (__console_exit != NULL) { + __console_exit(); + __console_exit = NULL; + } + + _ExitProcess(); } -#pragma pop diff --git a/libs/MSL_C/Makefile b/libs/MSL_C/Makefile index e5ab9f3fbd..52659a9d8a 100644 --- a/libs/MSL_C/Makefile +++ b/libs/MSL_C/Makefile @@ -121,6 +121,8 @@ LIBMSL_C_PPCEABI_BARE_H_A_O_FILES := \ LIBMSL_C_PPCEABI_BARE_H_A_CFLAGS := \ -O4,p \ -lang=c \ + -fp_contract on \ + -use_lmw_stmw on \ LIBMSL_C_PPCEABI_BARE_H_A_LDFLAGS := \ -nodefaults \ diff --git a/libs/MSL_C/Math/Double_precision/e_acos.c b/libs/MSL_C/Math/Double_precision/e_acos.c index f23b7f0463..38d048cd48 100644 --- a/libs/MSL_C/Math/Double_precision/e_acos.c +++ b/libs/MSL_C/Math/Double_precision/e_acos.c @@ -1,89 +1,106 @@ -// -// Generated By: dol2asm -// Translation Unit: Math/Double_precision/e_acos -// -#include "MSL_C/Math/Double_precision/e_acos.h" -#include "dol2asm.h" -#include "dolphin/types.h" +/* @(#)e_acos.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ -// -// Forward References: -// +/* __ieee754_acos(x) + * Method : + * acos(x) = pi/2 - asin(x) + * acos(-x) = pi/2 + asin(x) + * For |x|<=0.5 + * acos(x) = pi/2 - (x + x*x^2*R(x^2)) (see asin.c) + * For x>0.5 + * acos(x) = pi/2 - (pi/2 - 2asin(sqrt((1-x)/2))) + * = 2asin(sqrt((1-x)/2)) + * = 2s + 2s*z*R(z) ...z=(1-x)/2, s=sqrt(z) + * = 2f + (2c + 2s*z*R(z)) + * where f=hi part of s, and c = (z-f*f)/(s+f) is the correction term + * for f so that f+c ~ sqrt(z). + * For x<-0.5 + * acos(x) = pi - 2asin(sqrt((1-|x|)/2)) + * = pi - 0.5*(s+s*z*R(z)), where z=(1-|x|)/2,s=sqrt(z) + * + * Special cases: + * if x is NaN, return x itself; + * if |x|>1, return NaN with invalid signal. + * + * Function needed: sqrt + */ -void __ieee754_acos(); +#include "fdlibm.h" +#include "MSL_C/math.h" -// -// External References: -// +#ifdef __STDC__ +static const double +#else +static double +#endif +one= 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */ +pi = 3.14159265358979311600e+00, /* 0x400921FB, 0x54442D18 */ +pio2_hi = 1.57079632679489655800e+00, /* 0x3FF921FB, 0x54442D18 */ +pio2_lo = 6.12323399573676603587e-17, /* 0x3C91A626, 0x33145C07 */ +pS0 = 1.66666666666666657415e-01, /* 0x3FC55555, 0x55555555 */ +pS1 = -3.25565818622400915405e-01, /* 0xBFD4D612, 0x03EB6F7D */ +pS2 = 2.01212532134862925881e-01, /* 0x3FC9C155, 0x0E884455 */ +pS3 = -4.00555345006794114027e-02, /* 0xBFA48228, 0xB5688F3B */ +pS4 = 7.91534994289814532176e-04, /* 0x3F49EFE0, 0x7501B288 */ +pS5 = 3.47933107596021167570e-05, /* 0x3F023DE1, 0x0DFDF709 */ +qS1 = -2.40339491173441421878e+00, /* 0xC0033A27, 0x1C8A2D4B */ +qS2 = 2.02094576023350569471e+00, /* 0x40002AE5, 0x9C598AC8 */ +qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */ +qS4 = 7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */ -void sqrt(); -extern u32 __float_nan; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80456678-80456680 004C78 0008+00 1/1 0/0 0/0 .sdata2 @83 */ -SECTION_SDATA2 static u8 lit_83[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 80456680-80456688 004C80 0008+00 1/1 0/0 0/0 .sdata2 @84 */ -SECTION_SDATA2 static f64 lit_84 = 3.141592653589793; - -/* 80456688-80456690 004C88 0008+00 1/1 0/0 0/0 .sdata2 @85 */ -SECTION_SDATA2 static f64 lit_85 = 1.5707963267948966; - -/* 80456690-80456698 004C90 0008+00 1/1 0/0 0/0 .sdata2 @86 */ -SECTION_SDATA2 static f64 lit_86 = 6.123233995736766e-17; - -/* 80456698-804566A0 004C98 0008+00 1/1 0/0 0/0 .sdata2 @87 */ -SECTION_SDATA2 static f64 lit_87 = 1.0 / 6.0; - -/* 804566A0-804566A8 004CA0 0008+00 1/1 0/0 0/0 .sdata2 @88 */ -SECTION_SDATA2 static f64 lit_88 = -0.3255658186224009; - -/* 804566A8-804566B0 004CA8 0008+00 1/1 0/0 0/0 .sdata2 @89 */ -SECTION_SDATA2 static f64 lit_89 = 0.20121253213486293; - -/* 804566B0-804566B8 004CB0 0008+00 1/1 0/0 0/0 .sdata2 @90 */ -SECTION_SDATA2 static f64 lit_90 = -0.04005553450067941; - -/* 804566B8-804566C0 004CB8 0008+00 1/1 0/0 0/0 .sdata2 @91 */ -SECTION_SDATA2 static f64 lit_91 = 0.0007915349942898145; - -/* 804566C0-804566C8 004CC0 0008+00 1/1 0/0 0/0 .sdata2 @92 */ -SECTION_SDATA2 static f64 lit_92 = 3.479331075960212e-05; - -/* 804566C8-804566D0 004CC8 0008+00 1/1 0/0 0/0 .sdata2 @93 */ -SECTION_SDATA2 static f64 lit_93 = 1.0; - -/* 804566D0-804566D8 004CD0 0008+00 1/1 0/0 0/0 .sdata2 @94 */ -SECTION_SDATA2 static f64 lit_94 = -2.403394911734414; - -/* 804566D8-804566E0 004CD8 0008+00 1/1 0/0 0/0 .sdata2 @95 */ -SECTION_SDATA2 static f64 lit_95 = 2.0209457602335057; - -/* 804566E0-804566E8 004CE0 0008+00 1/1 0/0 0/0 .sdata2 @96 */ -SECTION_SDATA2 static f64 lit_96 = -0.6882839716054533; - -/* 804566E8-804566F0 004CE8 0008+00 1/1 0/0 0/0 .sdata2 @97 */ -SECTION_SDATA2 static f64 lit_97 = 0.07703815055590194; - -/* 804566F0-804566F8 004CF0 0008+00 1/1 0/0 0/0 .sdata2 @98 */ -SECTION_SDATA2 static f64 lit_98 = 0.5; - -/* 804566F8-80456700 004CF8 0008+00 1/1 0/0 0/0 .sdata2 @99 */ -SECTION_SDATA2 static f64 lit_99 = 2.0; - -/* 80369274-803694B0 363BB4 023C+00 0/0 1/1 0/0 .text __ieee754_acos */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __ieee754_acos() { - nofralloc -#include "asm/MSL_C/Math/Double_precision/e_acos/__ieee754_acos.s" -} -#pragma pop +#ifdef __STDC__ + double __ieee754_acos(double x) +#else + double __ieee754_acos(x) + double x; +#endif +{ + double z,p,q,r,w,s,c,df; + int hx,ix; + hx = __HI(x); + ix = hx&0x7fffffff; + if(ix>=0x3ff00000) { /* |x| >= 1 */ + if(((ix-0x3ff00000)|__LO(x))==0) { /* |x|==1 */ + if(hx>0) return 0.0; /* acos(1) = 0 */ + else return pi+2.0*pio2_lo; /* acos(-1)= pi */ + } + return *__float_nan; /* acos(|x|>1) is NaN */ + } + if(ix<0x3fe00000) { /* |x| < 0.5 */ + if(ix<=0x3c600000) return pio2_hi+pio2_lo;/*if|x|<2**-57*/ + z = x*x; + p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*pS5))))); + q = one+z*(qS1+z*(qS2+z*(qS3+z*qS4))); + r = p/q; + return pio2_hi - (x - (pio2_lo-x*r)); + } else if (hx<0) { /* x < -0.5 */ + z = (one+x)*0.5; + p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*pS5))))); + q = one+z*(qS1+z*(qS2+z*(qS3+z*qS4))); + s = sqrt(z); + r = p/q; + w = r*s-pio2_lo; + return pi - 2.0*(s+w); + } else { /* x > 0.5 */ + z = (one-x)*0.5; + s = sqrt(z); + df = s; + __LO(df) = 0; + c = (z-df*df)/(s+df); + p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*pS5))))); + q = one+z*(qS1+z*(qS2+z*(qS3+z*qS4))); + r = p/q; + w = r*s+c; + return 2.0*(df+w); + } +} \ No newline at end of file diff --git a/libs/MSL_C/Math/Double_precision/e_asin.c b/libs/MSL_C/Math/Double_precision/e_asin.c index fa5656cf07..e67a887f53 100644 --- a/libs/MSL_C/Math/Double_precision/e_asin.c +++ b/libs/MSL_C/Math/Double_precision/e_asin.c @@ -1,87 +1,117 @@ -// -// Generated By: dol2asm -// Translation Unit: Math/Double_precision/e_asin -// -#include "MSL_C/Math/Double_precision/e_asin.h" -#include "dol2asm.h" -#include "dolphin/types.h" +/* @(#)e_asin.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ -// -// Forward References: -// +/* __ieee754_asin(x) + * Method : + * Since asin(x) = x + x^3/6 + x^5*3/40 + x^7*15/336 + ... + * we approximate asin(x) on [0,0.5] by + * asin(x) = x + x*x^2*R(x^2) + * where + * R(x^2) is a rational approximation of (asin(x)-x)/x^3 + * and its remez error is bounded by + * |(asin(x)-x)/x^3 - R(x^2)| < 2^(-58.75) + * + * For x in [0.5,1] + * asin(x) = pi/2-2*asin(sqrt((1-x)/2)) + * Let y = (1-x), z = y/2, s := sqrt(z), and pio2_hi+pio2_lo=pi/2; + * then for x>0.98 + * asin(x) = pi/2 - 2*(s+s*z*R(z)) + * = pio2_hi - (2*(s+s*z*R(z)) - pio2_lo) + * For x<=0.98, let pio4_hi = pio2_hi/2, then + * f = hi part of s; + * c = sqrt(z) - f = (z-f*f)/(s+f) ...f+c=sqrt(z) + * and + * asin(x) = pi/2 - 2*(s+s*z*R(z)) + * = pio4_hi+(pio4-2s)-(2s*z*R(z)-pio2_lo) + * = pio4_hi+(pio4-2f)-(2s*z*R(z)-(pio2_lo+2c)) + * + * Special cases: + * if x is NaN, return x itself; + * if |x|>1, return NaN with invalid signal. + * + */ -void __ieee754_asin(); +#include "fdlibm.h" +#include "MSL_C/math.h" -// -// External References: -// +#ifdef __STDC__ +static const double +#else +static double +#endif + one + = 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */ + huge = 1.000e+300, pio2_hi = 1.57079632679489655800e+00, /* 0x3FF921FB, 0x54442D18 */ + pio2_lo = 6.12323399573676603587e-17, /* 0x3C91A626, 0x33145C07 */ + pio4_hi = 7.85398163397448278999e-01, /* 0x3FE921FB, 0x54442D18 */ + /* coefficient for R(x^2) */ + pS0 = 1.66666666666666657415e-01, /* 0x3FC55555, 0x55555555 */ + pS1 = -3.25565818622400915405e-01, /* 0xBFD4D612, 0x03EB6F7D */ + pS2 = 2.01212532134862925881e-01, /* 0x3FC9C155, 0x0E884455 */ + pS3 = -4.00555345006794114027e-02, /* 0xBFA48228, 0xB5688F3B */ + pS4 = 7.91534994289814532176e-04, /* 0x3F49EFE0, 0x7501B288 */ + pS5 = 3.47933107596021167570e-05, /* 0x3F023DE1, 0x0DFDF709 */ + qS1 = -2.40339491173441421878e+00, /* 0xC0033A27, 0x1C8A2D4B */ + qS2 = 2.02094576023350569471e+00, /* 0x40002AE5, 0x9C598AC8 */ + qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */ + qS4 = 7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */ -void sqrt(); -extern u32 __float_nan; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80456700-80456708 004D00 0008+00 1/1 0/0 0/0 .sdata2 @94 */ -SECTION_SDATA2 static f64 lit_94 = 1.5707963267948966; - -/* 80456708-80456710 004D08 0008+00 1/1 0/0 0/0 .sdata2 @95 */ -SECTION_SDATA2 static f64 lit_95 = 6.123233995736766e-17; - -/* 80456710-80456718 004D10 0008+00 1/1 0/0 0/0 .sdata2 @96 */ -SECTION_SDATA2 static f64 lit_96 = 1e+300; - -/* 80456718-80456720 004D18 0008+00 1/1 0/0 0/0 .sdata2 @97 */ -SECTION_SDATA2 static f64 lit_97 = 1.0; - -/* 80456720-80456728 004D20 0008+00 1/1 0/0 0/0 .sdata2 @98 */ -SECTION_SDATA2 static f64 lit_98 = 1.0 / 6.0; - -/* 80456728-80456730 004D28 0008+00 1/1 0/0 0/0 .sdata2 @99 */ -SECTION_SDATA2 static f64 lit_99 = -0.3255658186224009; - -/* 80456730-80456738 004D30 0008+00 1/1 0/0 0/0 .sdata2 @100 */ -SECTION_SDATA2 static f64 lit_100 = 0.20121253213486293; - -/* 80456738-80456740 004D38 0008+00 1/1 0/0 0/0 .sdata2 @101 */ -SECTION_SDATA2 static f64 lit_101 = -0.04005553450067941; - -/* 80456740-80456748 004D40 0008+00 1/1 0/0 0/0 .sdata2 @102 */ -SECTION_SDATA2 static f64 lit_102 = 0.0007915349942898145; - -/* 80456748-80456750 004D48 0008+00 1/1 0/0 0/0 .sdata2 @103 */ -SECTION_SDATA2 static f64 lit_103 = 3.479331075960212e-05; - -/* 80456750-80456758 004D50 0008+00 1/1 0/0 0/0 .sdata2 @104 */ -SECTION_SDATA2 static f64 lit_104 = -2.403394911734414; - -/* 80456758-80456760 004D58 0008+00 1/1 0/0 0/0 .sdata2 @105 */ -SECTION_SDATA2 static f64 lit_105 = 2.0209457602335057; - -/* 80456760-80456768 004D60 0008+00 1/1 0/0 0/0 .sdata2 @106 */ -SECTION_SDATA2 static f64 lit_106 = -0.6882839716054533; - -/* 80456768-80456770 004D68 0008+00 1/1 0/0 0/0 .sdata2 @107 */ -SECTION_SDATA2 static f64 lit_107 = 0.07703815055590194; - -/* 80456770-80456778 004D70 0008+00 1/1 0/0 0/0 .sdata2 @108 */ -SECTION_SDATA2 static f64 lit_108 = 0.5; - -/* 80456778-80456780 004D78 0008+00 1/1 0/0 0/0 .sdata2 @109 */ -SECTION_SDATA2 static f64 lit_109 = 2.0; - -/* 80456780-80456788 004D80 0008+00 1/1 0/0 0/0 .sdata2 @110 */ -SECTION_SDATA2 static f64 lit_110 = 0.7853981633974483; - -/* 803694B0-803696E8 363DF0 0238+00 0/0 1/1 0/0 .text __ieee754_asin */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __ieee754_asin() { - nofralloc -#include "asm/MSL_C/Math/Double_precision/e_asin/__ieee754_asin.s" -} -#pragma pop +#ifdef __STDC__ +double __ieee754_asin(double x) +#else +double __ieee754_asin(x) double x; +#endif +{ + double t, w, p, q, c, r, s; + int hx, ix; + hx = __HI(x); + ix = hx & 0x7fffffff; + if (ix >= 0x3ff00000) { /* |x|>= 1 */ + if (((ix - 0x3ff00000) | __LO(x)) == 0) + /* asin(1)=+-pi/2 with inexact */ + return x * pio2_hi + x * pio2_lo; + return *__float_nan; /* asin(|x|>1) is NaN */ + } else if (ix < 0x3fe00000) { /* |x|<0.5 */ + if (ix < 0x3e400000) { /* if |x| < 2**-27 */ + if (huge + x > one) + return x; /* return x with inexact if x!=0*/ + } else + t = x * x; + p = t * (pS0 + t * (pS1 + t * (pS2 + t * (pS3 + t * (pS4 + t * pS5))))); + q = one + t * (qS1 + t * (qS2 + t * (qS3 + t * qS4))); + w = p / q; + return x + x * w; + } + /* 1> |x|>= 0.5 */ + w = one - fabs(x); + t = w * 0.5; + p = t * (pS0 + t * (pS1 + t * (pS2 + t * (pS3 + t * (pS4 + t * pS5))))); + q = one + t * (qS1 + t * (qS2 + t * (qS3 + t * qS4))); + s = sqrt(t); + if (ix >= 0x3FEF3333) { /* if |x| > 0.975 */ + w = p / q; + t = pio2_hi - (2.0 * (s + s * w) - pio2_lo); + } else { + w = s; + __LO(w) = 0; + c = (t - w * w) / (s + w); + r = p / q; + p = 2.0 * s * r - (pio2_lo - 2.0 * c); + q = pio4_hi - 2.0 * w; + t = pio4_hi - (p - q); + } + if (hx > 0) + return t; + else + return -t; +} \ No newline at end of file diff --git a/libs/MSL_C/Math/Double_precision/e_atan2.c b/libs/MSL_C/Math/Double_precision/e_atan2.c index db6f4e8742..5a7863be09 100644 --- a/libs/MSL_C/Math/Double_precision/e_atan2.c +++ b/libs/MSL_C/Math/Double_precision/e_atan2.c @@ -1,70 +1,143 @@ -// -// Generated By: dol2asm -// Translation Unit: Math/Double_precision/e_atan2 -// -#include "MSL_C/Math/Double_precision/e_atan2.h" -#include "dol2asm.h" -#include "dolphin/types.h" +/* @(#)e_atan2.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ -// -// Forward References: -// +/* __ieee754_atan2(y,x) + * Method : + * 1. Reduce y to positive by atan2(y,x)=-atan2(-y,x). + * 2. Reduce x to positive by (if x and y are unexceptional): + * ARG (x+iy) = arctan(y/x) ... if x > 0, + * ARG (x+iy) = pi - arctan[y/(-x)] ... if x < 0, + * + * Special cases: + * + * ATAN2((anything), NaN ) is NaN; + * ATAN2(NAN , (anything) ) is NaN; + * ATAN2(+-0, +(anything but NaN)) is +-0 ; + * ATAN2(+-0, -(anything but NaN)) is +-pi ; + * ATAN2(+-(anything but 0 and NaN), 0) is +-pi/2; + * ATAN2(+-(anything but INF and NaN), +INF) is +-0 ; + * ATAN2(+-(anything but INF and NaN), -INF) is +-pi; + * ATAN2(+-INF,+INF ) is +-pi/4 ; + * ATAN2(+-INF,-INF ) is +-3pi/4; + * ATAN2(+-INF, (anything but,0,NaN, and INF)) is +-pi/2; + * + * Constants: + * The hexadecimal values are the intended ones for the following + * constants. The decimal values may be used, provided that the + * compiler will convert from decimal to binary accurately enough + * to produce the hexadecimal values shown. + */ -void __ieee754_atan2(); +#include "fdlibm.h" -// -// External References: -// +#ifdef __STDC__ +static const double +#else +static double +#endif + tiny + = 1.0e-300, + zero = 0.0, pi_o_4 = 7.8539816339744827900E-01, /* 0x3FE921FB, 0x54442D18 */ + pi_o_2 = 1.5707963267948965580E+00, /* 0x3FF921FB, 0x54442D18 */ + pi = 3.1415926535897931160E+00, /* 0x400921FB, 0x54442D18 */ + pi_lo = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */ -void atan(); +#ifdef __STDC__ +double __ieee754_atan2(double y, double x) +#else +double __ieee754_atan2(y, x) double y, x; +#endif +{ + double z; + int k, m, hx, hy, ix, iy; + unsigned lx, ly; -// -// Declarations: -// + hx = __HI(x); + ix = hx & 0x7fffffff; + lx = __LO(x); + hy = __HI(y); + iy = hy & 0x7fffffff; + ly = __LO(y); + if (((ix | ((lx | -lx) >> 31)) > 0x7ff00000) || ((iy | ((ly | -ly) >> 31)) > 0x7ff00000)) /* x or y is NaN */ + return x + y; + if ((hx - 0x3ff00000 | lx) == 0) + return atan(y); /* x=1.0 */ + m = ((hy >> 31) & 1) | ((hx >> 30) & 2); /* 2*sign(x)+sign(y) */ -/* ############################################################################################## */ -/* 80456788-80456790 004D88 0008+00 1/1 0/0 0/0 .sdata2 @145 */ -SECTION_SDATA2 static f64 lit_145 = 3.141592653589793; + /* when y = 0 */ + if ((iy | ly) == 0) { + switch (m) { + case 0: + case 1: + return y; /* atan(+-0,+anything)=+-0 */ + case 2: + return pi + tiny; /* atan(+0,-anything) = pi */ + case 3: + return -pi - tiny; /* atan(-0,-anything) =-pi */ + } + } + /* when x = 0 */ + if ((ix | lx) == 0) + return (hy < 0) ? -pi_o_2 - tiny : pi_o_2 + tiny; -/* 80456790-80456798 004D90 0008+00 1/1 0/0 0/0 .sdata2 @146 */ -SECTION_SDATA2 static f64 lit_146 = -3.141592653589793; + /* when x is INF */ + if (ix == 0x7ff00000) { + if (iy == 0x7ff00000) { + switch (m) { + case 0: + return pi_o_4 + tiny; /* atan(+INF,+INF) */ + case 1: + return -pi_o_4 - tiny; /* atan(-INF,+INF) */ + case 2: + return 3.0 * pi_o_4 + tiny; /*atan(+INF,-INF)*/ + case 3: + return -3.0 * pi_o_4 - tiny; /*atan(-INF,-INF)*/ + } + } else { + switch (m) { + case 0: + return zero; /* atan(+...,+INF) */ + case 1: + return -zero; /* atan(-...,+INF) */ + case 2: + return pi + tiny; /* atan(+...,-INF) */ + case 3: + return -pi - tiny; /* atan(-...,-INF) */ + } + } + } + /* when y is INF */ + if (iy == 0x7ff00000) + return (hy < 0) ? -pi_o_2 - tiny : pi_o_2 + tiny; -/* 80456798-804567A0 004D98 0008+00 1/1 0/0 0/0 .sdata2 @147 */ -SECTION_SDATA2 static f64 lit_147 = -1.5707963267948966; - -/* 804567A0-804567A8 004DA0 0008+00 1/1 0/0 0/0 .sdata2 @148 */ -SECTION_SDATA2 static f64 lit_148 = 1.5707963267948966; - -/* 804567A8-804567B0 004DA8 0008+00 1/1 0/0 0/0 .sdata2 @149 */ -SECTION_SDATA2 static f64 lit_149 = 0.7853981633974483; - -/* 804567B0-804567B8 004DB0 0008+00 1/1 0/0 0/0 .sdata2 @150 */ -SECTION_SDATA2 static f64 lit_150 = -0.7853981633974483; - -/* 804567B8-804567C0 004DB8 0008+00 1/1 0/0 0/0 .sdata2 @151 */ -SECTION_SDATA2 static f64 lit_151 = 2.356194490192345; - -/* 804567C0-804567C8 004DC0 0008+00 1/1 0/0 0/0 .sdata2 @152 */ -SECTION_SDATA2 static f64 lit_152 = -2.356194490192345; - -/* 804567C8-804567D0 004DC8 0008+00 1/1 0/0 0/0 .sdata2 @153 */ -SECTION_SDATA2 static u8 lit_153[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 804567D0-804567D8 004DD0 0008+00 1/1 0/0 0/0 .sdata2 @154 */ -SECTION_SDATA2 static f64 lit_154 = -0.0; - -/* 804567D8-804567E0 004DD8 0008+00 1/1 0/0 0/0 .sdata2 @155 */ -SECTION_SDATA2 static f64 lit_155 = 1.2246467991473532e-16; - -/* 803696E8-80369978 364028 0290+00 0/0 1/1 0/0 .text __ieee754_atan2 */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __ieee754_atan2() { - nofralloc -#include "asm/MSL_C/Math/Double_precision/e_atan2/__ieee754_atan2.s" -} -#pragma pop + /* compute y/x */ + k = (iy - ix) >> 20; + if (k > 60) + z = pi_o_2 + 0.5 * pi_lo; /* |y/x| > 2**60 */ + else if (hx < 0 && k < -60) + z = 0.0; /* |y|/x < -2**60 */ + else + z = atan(__fabs(y / x)); /* safe to do y/x */ + switch (m) { + case 0: + return z; /* atan(+,+) */ + case 1: + __HI(z) ^= 0x80000000; + return z; /* atan(-,+) */ + case 2: + return pi - (z - pi_lo); /* atan(+,-) */ + default: /* case 3 */ + return (z - pi_lo) - pi; /* atan(-,-) */ + } +} \ No newline at end of file diff --git a/libs/MSL_C/Math/Double_precision/e_exp.c b/libs/MSL_C/Math/Double_precision/e_exp.c index 97c162b682..4a2b28c81f 100644 --- a/libs/MSL_C/Math/Double_precision/e_exp.c +++ b/libs/MSL_C/Math/Double_precision/e_exp.c @@ -1,104 +1,162 @@ -// -// Generated By: dol2asm -// Translation Unit: Math/Double_precision/e_exp -// -#include "MSL_C/Math/Double_precision/e_exp.h" -#include "dol2asm.h" -#include "dolphin/types.h" +/* @(#)e_exp.c 1.6 04/04/22 */ +/* + * ==================================================== + * Copyright (C) 2004 by Sun Microsystems, Inc. All rights reserved. + * + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ -// -// Forward References: -// +/* __ieee754_exp(x) + * Returns the exponential of x. + * + * Method + * 1. Argument reduction: + * Reduce x to an r so that |r| <= 0.5*ln2 ~ 0.34658. + * Given x, find r and integer k such that + * + * x = k*ln2 + r, |r| <= 0.5*ln2. + * + * Here r will be represented as r = hi-lo for better + * accuracy. + * + * 2. Approximation of exp(r) by a special rational function on + * the interval [0,0.34658]: + * Write + * R(r**2) = r*(exp(r)+1)/(exp(r)-1) = 2 + r*r/6 - r**4/360 + ... + * We use a special Remes algorithm on [0,0.34658] to generate + * a polynomial of degree 5 to approximate R. The maximum error + * of this polynomial approximation is bounded by 2**-59. In + * other words, + * R(z) ~ 2.0 + P1*z + P2*z**2 + P3*z**3 + P4*z**4 + P5*z**5 + * (where z=r*r, and the values of P1 to P5 are listed below) + * and + * | 5 | -59 + * | 2.0+P1*z+...+P5*z - R(z) | <= 2 + * | | + * The computation of exp(r) thus becomes + * 2*r + * exp(r) = 1 + ------- + * R - r + * r*R1(r) + * = 1 + r + ----------- (for better accuracy) + * 2 - R1(r) + * where + * 2 4 10 + * R1(r) = r - (P1*r + P2*r + ... + P5*r ). + * + * 3. Scale back to obtain exp(x): + * From step 1, we have + * exp(x) = 2^k * exp(r) + * + * Special cases: + * exp(INF) is INF, exp(NaN) is NaN; + * exp(-INF) is 0, and + * for finite argument, only exp(0)=1 is exact. + * + * Accuracy: + * according to an error analysis, the error is always less than + * 1 ulp (unit in the last place). + * + * Misc. info. + * For IEEE double + * if x > 7.09782712893383973096e+02 then exp(x) overflow + * if x < -7.45133219101941108420e+02 then exp(x) underflow + * + * Constants: + * The hexadecimal values are the intended ones for the following + * constants. The decimal values may be used, provided that the + * compiler will convert from decimal to binary accurately enough + * to produce the hexadecimal values shown. + */ -void __ieee754_exp(); +#include "fdlibm.h" -// -// External References: -// +#ifdef __STDC__ +static const double +#else +static double +#endif +one = 1.0, +halF[2] = {0.5,-0.5,}, +huge = 1.0e+300, +twom1000= 9.33263618503218878990e-302, /* 2**-1000=0x01700000,0*/ +o_threshold= 7.09782712893383973096e+02, /* 0x40862E42, 0xFEFA39EF */ +u_threshold= -7.45133219101941108420e+02, /* 0xc0874910, 0xD52D3051 */ +ln2HI[2] ={ 6.93147180369123816490e-01, /* 0x3fe62e42, 0xfee00000 */ + -6.93147180369123816490e-01,},/* 0xbfe62e42, 0xfee00000 */ +ln2LO[2] ={ 1.90821492927058770002e-10, /* 0x3dea39ef, 0x35793c76 */ + -1.90821492927058770002e-10,},/* 0xbdea39ef, 0x35793c76 */ +invln2 = 1.44269504088896338700e+00, /* 0x3ff71547, 0x652b82fe */ +P1 = 1.66666666666666019037e-01, /* 0x3FC55555, 0x5555553E */ +P2 = -2.77777777770155933842e-03, /* 0xBF66C16C, 0x16BEBD93 */ +P3 = 6.61375632143793436117e-05, /* 0x3F11566A, 0xAF25DE2C */ +P4 = -1.65339022054652515390e-06, /* 0xBEBBBD41, 0xC5D26BF1 */ +P5 = 4.13813679705723846039e-08; /* 0x3E663769, 0x72BEA4D0 */ -// -// Declarations: -// +#ifdef __STDC__ +double __ieee754_exp(double x) /* default IEEE double exp */ +#else +double __ieee754_exp(x) /* default IEEE double exp */ + double x; +#endif +{ + double y, hi, lo, c, t; + int k, xsb; + unsigned hx; -/* ############################################################################################## */ -/* 803A2340-803A2350 02E9A0 0010+00 1/1 0/0 0/0 .rodata halF */ -SECTION_RODATA static u8 const halF[16] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x803A2340, &halF); + hx = __HI(x); /* high word of x */ + xsb = (hx >> 31) & 1; /* sign bit of x */ + hx &= 0x7fffffff; /* high word of |x| */ -/* 803A2350-803A2360 02E9B0 0010+00 0/1 0/0 0/0 .rodata ln2HI */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const ln2HI[16] = { - 0x3F, 0xE6, 0x2E, 0x42, 0xFE, 0xE0, 0x00, 0x00, 0xBF, 0xE6, 0x2E, 0x42, 0xFE, 0xE0, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x803A2350, &ln2HI); -#pragma pop + /* filter out non-finite argument */ + if (hx >= 0x40862E42) { /* if |x|>=709.78... */ + if (hx >= 0x7ff00000) { + if (((hx & 0xfffff) | __LO(x)) != 0) + return x + x; /* NaN */ + else + return (xsb == 0) ? x : 0.0; /* exp(+-inf)={inf,0} */ + } + if (x > o_threshold) + return huge * huge; /* overflow */ + if (x < u_threshold) + return twom1000 * twom1000; /* underflow */ + } -/* 803A2360-803A2370 02E9C0 0010+00 0/1 0/0 0/0 .rodata ln2LO */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const ln2LO[16] = { - 0x3D, 0xEA, 0x39, 0xEF, 0x35, 0x79, 0x3C, 0x76, 0xBD, 0xEA, 0x39, 0xEF, 0x35, 0x79, 0x3C, 0x76, -}; -COMPILER_STRIP_GATE(0x803A2360, &ln2LO); -#pragma pop + /* argument reduction */ + if (hx > 0x3fd62e42) { /* if |x| > 0.5 ln2 */ + if (hx < 0x3FF0A2B2) { /* and |x| < 1.5 ln2 */ + hi = x - ln2HI[xsb]; + lo = ln2LO[xsb]; + k = 1 - xsb - xsb; + } else { + k = (int)(invln2 * x + halF[xsb]); + t = k; + hi = x - t * ln2HI[0]; /* t*ln2HI is exact here */ + lo = t * ln2LO[0]; + } + x = hi - lo; + } else if (hx < 0x3e300000) { /* when |x|<2**-28 */ + if (huge + x > one) + return one + x; /* trigger inexact */ + } else + k = 0; -/* 804567E0-804567E8 004DE0 0008+00 1/1 0/0 0/0 .sdata2 @115 */ -SECTION_SDATA2 static u8 lit_115[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 804567E8-804567F0 004DE8 0008+00 1/1 0/0 0/0 .sdata2 @116 */ -SECTION_SDATA2 static f64 lit_116 = 709.782712893384; - -/* 804567F0-804567F8 004DF0 0008+00 1/1 0/0 0/0 .sdata2 @117 */ -SECTION_SDATA2 static f64 lit_117 = DOUBLE_INF; - -/* 804567F8-80456800 004DF8 0008+00 1/1 0/0 0/0 .sdata2 @118 */ -SECTION_SDATA2 static f64 lit_118 = -745.1332191019411; - -/* 80456800-80456808 004E00 0008+00 1/1 0/0 0/0 .sdata2 @119 */ -SECTION_SDATA2 static f64 lit_119 = 1.4426950408889634; - -/* 80456808-80456810 004E08 0008+00 1/1 0/0 0/0 .sdata2 @120 */ -SECTION_SDATA2 static f64 lit_120 = 1e+300; - -/* 80456810-80456818 004E10 0008+00 1/1 0/0 0/0 .sdata2 @121 */ -SECTION_SDATA2 static f64 lit_121 = 1.0; - -/* 80456818-80456820 004E18 0008+00 1/1 0/0 0/0 .sdata2 @122 */ -SECTION_SDATA2 static f64 lit_122 = 0.16666666666666602; - -/* 80456820-80456828 004E20 0008+00 1/1 0/0 0/0 .sdata2 @123 */ -SECTION_SDATA2 static f64 lit_123 = -0.0027777777777015593; - -/* 80456828-80456830 004E28 0008+00 1/1 0/0 0/0 .sdata2 @124 */ -SECTION_SDATA2 static f64 lit_124 = 6.613756321437934e-05; - -/* 80456830-80456838 004E30 0008+00 1/1 0/0 0/0 .sdata2 @125 */ -SECTION_SDATA2 static f64 lit_125 = -1.6533902205465252e-06; - -/* 80456838-80456840 004E38 0008+00 1/1 0/0 0/0 .sdata2 @126 */ -SECTION_SDATA2 static f64 lit_126 = 4.1381367970572385e-08; - -/* 80456840-80456848 004E40 0008+00 1/1 0/0 0/0 .sdata2 @127 */ -SECTION_SDATA2 static f64 lit_127 = 2.0; - -/* 80456848-80456850 004E48 0008+00 1/1 0/0 0/0 .sdata2 @128 */ -SECTION_SDATA2 static f64 lit_128 = 9.332636185032189e-302; - -/* 80456850-80456858 004E50 0008+00 1/1 0/0 0/0 .sdata2 @131 */ -SECTION_SDATA2 static f64 lit_131 = 4503601774854144.0 /* cast s32 to float */; - -/* 80369978-80369B9C 3642B8 0224+00 0/0 1/1 0/0 .text __ieee754_exp */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __ieee754_exp() { - nofralloc -#include "asm/MSL_C/Math/Double_precision/e_exp/__ieee754_exp.s" -} -#pragma pop + /* x is now in primary range */ + t = x * x; + c = x - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5)))); + if (k == 0) + return one - ((x * c) / (c - 2.0) - x); + else + y = one - ((lo - (x * c) / (2.0 - c)) - hi); + if (k >= -1021) { + __HI(y) += (k << 20); /* add k to y's exponent */ + return y; + } else { + __HI(y) += ((k + 1000) << 20); /* add k to y's exponent */ + return y * twom1000; + } +} \ No newline at end of file diff --git a/libs/MSL_C/Math/Double_precision/e_pow.c b/libs/MSL_C/Math/Double_precision/e_pow.c index 77445aff0b..e1bf8cf234 100644 --- a/libs/MSL_C/Math/Double_precision/e_pow.c +++ b/libs/MSL_C/Math/Double_precision/e_pow.c @@ -1,166 +1,408 @@ +//======================================================================== // -// Generated By: dol2asm -// Translation Unit: Math/Double_precision/e_pow +// e_pow.c // - -#include "MSL_C/Math/Double_precision/e_pow.h" -#include "dol2asm.h" -#include "dolphin/types.h" - +// Part of the standard mathematical function library // -// Forward References: +//======================================================================== +//####ECOSGPLCOPYRIGHTBEGIN#### +// ------------------------------------------- +// This file is part of eCos, the Embedded Configurable Operating System. +// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. // - -void __ieee754_pow(); - +// eCos is free software; you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free +// Software Foundation; either version 2 or (at your option) any later version. // -// External References: +// eCos is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +// for more details. // - -void ldexp(); -void sqrt(); -extern u32 __float_nan; -extern u8 errno[4 + 4 /* padding */]; - +// You should have received a copy of the GNU General Public License along +// with eCos; if not, write to the Free Software Foundation, Inc., +// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. // -// Declarations: +// As a special exception, if other files instantiate templates or use macros +// or inline functions from this file, or you compile this file and link it +// with other works to produce a work based on this file, this file does not +// by itself cause the resulting work to be covered by the GNU General Public +// License. However the source code for this file must still be made available +// in accordance with section (3) of the GNU General Public License. // +// This exception does not invalidate any other reasons why a work based on +// this file might be covered by the GNU General Public License. +// +// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. +// at http://sources.redhat.com/ecos/ecos-license/ +// ------------------------------------------- +//####ECOSGPLCOPYRIGHTEND#### +//======================================================================== +//#####DESCRIPTIONBEGIN#### +// +// Author(s): jlarmour +// Contributors: +// Date: 2001-07-20 +// Purpose: +// Description: +// Usage: +// +//####DESCRIPTIONEND#### +// +//======================================================================== -/* ############################################################################################## */ -/* 803A2380-803A2390 02E9E0 0010+00 1/1 0/0 0/0 .rodata bp */ -SECTION_RODATA static u8 const bp[16] = { - 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x803A2380, &bp); +// CONFIGURATION -/* 803A2390-803A23A0 02E9F0 0010+00 0/1 0/0 0/0 .rodata dp_h */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const dp_h[16] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xE2, 0xB8, 0x03, 0x40, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x803A2390, &dp_h); -#pragma pop +/* @(#)e_pow.c 5.1 93/09/24 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ -/* 803A23A0-803A23B0 02EA00 0010+00 0/1 0/0 0/0 .rodata dp_l */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const dp_l[16] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x4C, 0xFD, 0xEB, 0x43, 0xCF, 0xD0, 0x06, -}; -COMPILER_STRIP_GATE(0x803A23A0, &dp_l); -#pragma pop +/* __ieee754_pow(x,y) return x**y + * + * n + * Method: Let x = 2 * (1+f) + * 1. Compute and return log2(x) in two pieces: + * log2(x) = w1 + w2, + * where w1 has 53-24 = 29 bit trailing zeros. + * 2. Perform y*log2(x) = n+y' by simulating muti-precision + * arithmetic, where |y'|<=0.5. + * 3. Return x**y = 2**n*exp(y'*log2) + * + * Special cases: + * 1. (anything) ** 0 is 1 + * 2. (anything) ** 1 is itself + * 3. (anything) ** NAN is NAN + * 4. NAN ** (anything except 0) is NAN + * 5. +-(|x| > 1) ** +INF is +INF + * 6. +-(|x| > 1) ** -INF is +0 + * 7. +-(|x| < 1) ** +INF is +0 + * 8. +-(|x| < 1) ** -INF is +INF + * 9. +-1 ** +-INF is NAN + * 10. +0 ** (+anything except 0, NAN) is +0 + * 11. -0 ** (+anything except 0, NAN, odd integer) is +0 + * 12. +0 ** (-anything except 0, NAN) is +INF + * 13. -0 ** (-anything except 0, NAN, odd integer) is +INF + * 14. -0 ** (odd integer) = -( +0 ** (odd integer) ) + * 15. +INF ** (+anything except 0,NAN) is +INF + * 16. +INF ** (-anything except 0,NAN) is +0 + * 17. -INF ** (anything) = -0 ** (-anything) + * 18. (-anything) ** (integer) is (-1)**(integer)*(+anything**integer) + * 19. (-anything except 0 and inf) ** (non-integer) is NAN + * + * Accuracy: + * pow(x,y) returns x**y nearly rounded. In particular + * pow(integer,integer) + * always returns the correct integer provided it is + * representable. + * + * Constants : + * The hexadecimal values are the intended ones for the following + * constants. The decimal values may be used, provided that the + * compiler will convert from decimal to binary accurately enough + * to produce the hexadecimal values shown. + */ -/* 80456858-80456860 004E58 0008+00 1/1 0/0 0/0 .sdata2 @336 */ -SECTION_SDATA2 static f64 lit_336 = 1.0; +#include "types.h" +#include "errno.h" +#include "MSL_C/math.h" +#include "fdlibm.h" -/* 80456860-80456868 004E60 0008+00 1/1 0/0 0/0 .sdata2 @337 */ -SECTION_SDATA2 static u8 lit_337[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; +#ifndef _DOUBLE_IS_32BITS -/* 80456868-80456870 004E68 0008+00 1/1 0/0 0/0 .sdata2 @338 */ -SECTION_SDATA2 static f64 lit_338 = DOUBLE_INF; +#ifdef __STDC__ +static const double +#else +static double +#endif +bp[] = {1.0, 1.5,}, +dp_h[] = { 0.0, 5.84962487220764160156e-01,}, /* 0x3FE2B803, 0x40000000 */ +dp_l[] = { 0.0, 1.35003920212974897128e-08,}, /* 0x3E4CFDEB, 0x43CFD006 */ +zero = 0.0, +one = 1.0, +two = 2.0, +two53 = 9007199254740992.0, /* 0x43400000, 0x00000000 */ +huge = 1.0e300, +tiny = 1.0e-300, + /* poly coefs for (3/2)*(log(x)-2s-2/3*s**3 */ +L1 = 5.99999999999994648725e-01, /* 0x3FE33333, 0x33333303 */ +L2 = 4.28571428578550184252e-01, /* 0x3FDB6DB6, 0xDB6FABFF */ +L3 = 3.33333329818377432918e-01, /* 0x3FD55555, 0x518F264D */ +L4 = 2.72728123808534006489e-01, /* 0x3FD17460, 0xA91D4101 */ +L5 = 2.30660745775561754067e-01, /* 0x3FCD864A, 0x93C9DB65 */ +L6 = 2.06975017800338417784e-01, /* 0x3FCA7E28, 0x4A454EEF */ +P1 = 1.66666666666666019037e-01, /* 0x3FC55555, 0x5555553E */ +P2 = -2.77777777770155933842e-03, /* 0xBF66C16C, 0x16BEBD93 */ +P3 = 6.61375632143793436117e-05, /* 0x3F11566A, 0xAF25DE2C */ +P4 = -1.65339022054652515390e-06, /* 0xBEBBBD41, 0xC5D26BF1 */ +P5 = 4.13813679705723846039e-08, /* 0x3E663769, 0x72BEA4D0 */ +lg2 = 6.93147180559945286227e-01, /* 0x3FE62E42, 0xFEFA39EF */ +lg2_h = 6.93147182464599609375e-01, /* 0x3FE62E43, 0x00000000 */ +lg2_l = -1.90465429995776804525e-09, /* 0xBE205C61, 0x0CA86C39 */ +ovt = 8.0085662595372944372e-0017, /* -(1024-log2(ovfl+.5ulp)) */ +cp = 9.61796693925975554329e-01, /* 0x3FEEC709, 0xDC3A03FD =2/(3ln2) */ +cp_h = 9.61796700954437255859e-01, /* 0x3FEEC709, 0xE0000000 =(float)cp */ +cp_l = -7.02846165095275826516e-09, /* 0xBE3E2FE0, 0x145B01F5 =tail of cp_h*/ +ivln2 = 1.44269504088896338700e+00, /* 0x3FF71547, 0x652B82FE =1/ln2 */ +ivln2_h = 1.44269502162933349609e+00, /* 0x3FF71547, 0x60000000 =24b 1/ln2*/ +ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/ -/* 80456870-80456878 004E70 0008+00 1/1 0/0 0/0 .sdata2 @339 */ -SECTION_SDATA2 static f64 lit_339 = 0.5; +#ifdef __STDC__ +double __ieee754_pow(double x, double y) +#else +double __ieee754_pow(x, y) double x, y; +#endif +{ + double z, ax, z_h, z_l, p_h, p_l; + double y1, t1, t2, r, s, t, u, v, w; + double qqq; // necessary temp + int i0, i1, i, j, k, yisint, n; + int hx, hy, ix, iy; + u32 lx, ly; -/* 80456878-80456880 004E78 0008+00 1/1 0/0 0/0 .sdata2 @340 */ -SECTION_SDATA2 static f64 lit_340 = 1.0 / 3.0; + i0 = ((*(int*)&one) >> 29) ^ 1; + i1 = 1 - i0; + hx = __HI(x); + lx = __LO(x); + hy = __HI(y); + ly = __LO(y); + ix = hx & 0x7fffffff; + iy = hy & 0x7fffffff; -/* 80456880-80456888 004E80 0008+00 1/1 0/0 0/0 .sdata2 @341 */ -SECTION_SDATA2 static f64 lit_341 = 0.25; + /* y==zero: x**0 = 1 */ + if ((iy | ly) == 0) + return one; -/* 80456888-80456890 004E88 0008+00 1/1 0/0 0/0 .sdata2 @342 */ -SECTION_SDATA2 static f64 lit_342 = 1.4426950216293335; + /* +-NaN return x+y */ + if (ix > 0x7ff00000 || ((ix == 0x7ff00000) && (lx != 0)) || iy > 0x7ff00000 || ((iy == 0x7ff00000) && (ly != 0))) + return x + y; -/* 80456890-80456898 004E90 0008+00 1/1 0/0 0/0 .sdata2 @343 */ -SECTION_SDATA2 static f64 lit_343 = 1.9259629911266175e-08; + /* determine if y is an odd int when x < 0 + * yisint = 0 ... y is not an integer + * yisint = 1 ... y is an odd int + * yisint = 2 ... y is an even int + */ + yisint = 0; + if (hx < 0) { + if (iy >= 0x43400000) + yisint = 2; /* even integer y */ + else if (iy >= 0x3ff00000) { + k = (iy >> 20) - 0x3ff; /* exponent */ + if (k > 20) { + j = ly >> (52 - k); + if ((j << (52 - k)) == ly) + yisint = 2 - (j & 1); + } else if (ly == 0) { + j = iy >> (20 - k); + if ((j << (20 - k)) == iy) + yisint = 2 - (j & 1); + } + } + } -/* 80456898-804568A0 004E98 0008+00 1/1 0/0 0/0 .sdata2 @344 */ -SECTION_SDATA2 static f64 lit_344 = 1.4426950408889634; + /* special value of y */ + if (ly == 0) { + if (iy == 0x7ff00000) { /* y is +-inf */ + if (((ix - 0x3ff00000) | lx) == 0) + return y - y; /* inf**+-1 is NaN */ + else if (ix >= 0x3ff00000) /* (|x|>1)**+-inf = inf,0 */ + return (hy >= 0) ? y : zero; + else /* (|x|<1)**-,+inf = inf,0 */ + return (hy < 0) ? -y : zero; + } + if (iy == 0x3ff00000) { /* y is +-1 */ + if (hy < 0) + return one / x; + else + return x; + } + if (hy == 0x40000000) + return x * x; /* y is 2 */ + if (hy == 0x3fe00000) { /* y is 0.5 */ + if (hx >= 0) /* x >= +0 */ + return sqrt(x); + } + } -/* 804568A0-804568A8 004EA0 0008+00 1/1 0/0 0/0 .sdata2 @345 */ -SECTION_SDATA2 static f64 lit_345 = 9007199254740992.0; + ax = __fabs(x); + qqq = ax; /*x is +-0,+-inf,+-1*/ + /* special value of x */ + if (lx == 0) { + if (ix == 0x7ff00000 || ix == 0 || ix == 0x3ff00000) { + z = qqq; /*x is +-0,+-inf,+-1*/ + if (hy < 0) + z = one / z; /* z = (1/|x|) */ + if (hx < 0) { + if (((ix - 0x3ff00000) | yisint) == 0) { + z = (z - z) / (z - z); /* (-1)**non-int is NaN */ + } else if (yisint == 1) + z = -z; /* (x<0)**odd = -(|x|**odd) */ + } + return z; + } + } -/* 804568A8-804568B0 004EA8 0008+00 1/1 0/0 0/0 .sdata2 @346 */ -SECTION_SDATA2 static f64 lit_346 = 0.5999999999999946; + /* (x<0)**(non-int) is NaN */ + /* CYGNUS LOCAL: This used to be + if((((hx>>31)+1)|yisint)==0) return (x-x)/(x-x); + but ANSI C says a right shift of a signed negative quantity is + implementation defined. */ -/* 804568B0-804568B8 004EB0 0008+00 1/1 0/0 0/0 .sdata2 @347 */ -SECTION_SDATA2 static f64 lit_347 = 0.4285714285785502; + if (((((int)hx >> 31) + 1) | yisint) == 0) { + errno = 33; + return (double)*__float_nan; + }; -/* 804568B8-804568C0 004EB8 0008+00 1/1 0/0 0/0 .sdata2 @348 */ -SECTION_SDATA2 static f64 lit_348 = 0.33333332981837743; + /* |y| is huge */ + if (iy > 0x41e00000) { /* if |y| > 2**31 */ + if (iy > 0x43f00000) { /* if |y| > 2**64, must o/uflow */ + if (ix <= 0x3fefffff) + return (hy < 0) ? huge * huge : tiny * tiny; + if (ix >= 0x3ff00000) + return (hy > 0) ? huge * huge : tiny * tiny; + } + /* over/underflow if x is not close to one */ + if (ix < 0x3fefffff) + return (hy < 0) ? huge * huge : tiny * tiny; + if (ix > 0x3ff00000) + return (hy > 0) ? huge * huge : tiny * tiny; + /* now |1-x| is tiny <= 2**-20, suffice to compute + log(x) by x-x^2/2+x^3/3-x^4/4 */ + t = x - 1; /* t has 20 trailing zeros */ + w = (t * t) * (0.5 - t * (0.3333333333333333333333 - t * 0.25)); + u = ivln2_h * t; /* ivln2_h has 21 sig. bits */ + v = t * ivln2_l - w * ivln2; + t1 = u + v; + __LO(t1) = 0; + t2 = v - (t1 - u); + } else { + double s2, s_h, s_l, t_h, t_l; + n = 0; + /* take care subnormal number */ + if (ix < 0x00100000) { + ax *= two53; + n -= 53; + ix = __HI(ax); + } + n += ((ix) >> 20) - 0x3ff; + j = ix & 0x000fffff; + /* determine interval */ + ix = j | 0x3ff00000; /* normalize ix */ + if (j <= 0x3988E) + k = 0; /* |x|> 1) | 0x20000000) + 0x00080000 + (k << 18); + t_l = ax - (t_h - bp[k]); + s_l = v * ((u - s_h * t_h) - s_h * t_l); + /* compute log(ax) */ + s2 = s * s; + r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6))))); + r += s_l * (s_h + s); + s2 = s_h * s_h; + t_h = 3.0 + s2 + r; + __LO(t_h) = 0; + t_l = r - ((t_h - 3.0) - s2); + /* u+v = s*(1+...) */ + u = s_h * t_h; + v = s_l * t_h + t_l * s; + /* 2/(3log2)*(s+...) */ + p_h = u + v; + __LO(p_h) = 0; + p_l = v - (p_h - u); + z_h = cp_h * p_h; /* cp_h+cp_l = 2/(3*log2) */ + z_l = cp_l * p_h + p_l * cp + dp_l[k]; + /* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */ + t = (double)n; + t1 = (((z_h + z_l) + dp_h[k]) + t); + __LO(t1) = 0; + t2 = z_l - (((t1 - t) - dp_h[k]) - z_h); + } -/* 804568C8-804568D0 004EC8 0008+00 1/1 0/0 0/0 .sdata2 @350 */ -SECTION_SDATA2 static f64 lit_350 = 0.23066074577556175; + s = one; /* s (sign of result -ve**odd) = -1 else = 1 */ + if (((((int)hx >> 31) + 1) | (yisint - 1)) == 0) + s = -one; /* (-ve)**(odd int) */ -/* 804568D0-804568D8 004ED0 0008+00 1/1 0/0 0/0 .sdata2 @351 */ -SECTION_SDATA2 static f64 lit_351 = 0.20697501780033842; - -/* 804568D8-804568E0 004ED8 0008+00 1/1 0/0 0/0 .sdata2 @352 */ -SECTION_SDATA2 static f64 lit_352 = 3.0; - -/* 804568E0-804568E8 004EE0 0008+00 1/1 0/0 0/0 .sdata2 @353 */ -SECTION_SDATA2 static f64 lit_353 = 0.9617967009544373; - -/* 804568E8-804568F0 004EE8 0008+00 1/1 0/0 0/0 .sdata2 @354 */ -SECTION_SDATA2 static f64 lit_354 = -7.028461650952758e-09; - -/* 804568F0-804568F8 004EF0 0008+00 1/1 0/0 0/0 .sdata2 @355 */ -SECTION_SDATA2 static f64 lit_355 = 0.9617966939259756; - -/* 804568F8-80456900 004EF8 0008+00 1/1 0/0 0/0 .sdata2 @356 */ -SECTION_SDATA2 static f64 lit_356 = -1.0; - -/* 80456900-80456908 004F00 0008+00 1/1 0/0 0/0 .sdata2 @357 */ -SECTION_SDATA2 static f64 lit_357 = 1e+300; - -/* 80456908-80456910 004F08 0008+00 1/1 0/0 0/0 .sdata2 @358 */ -SECTION_SDATA2 static f64 lit_358 = 8.008566259537294e-17; - -/* 80456910-80456918 004F10 0008+00 1/1 0/0 0/0 .sdata2 @359 */ -SECTION_SDATA2 static f64 lit_359 = 1e-300; - -/* 80456918-80456920 004F18 0008+00 1/1 0/0 0/0 .sdata2 @360 */ -SECTION_SDATA2 static f64 lit_360 = 0.6931471824645996; - -/* 80456920-80456928 004F20 0008+00 1/1 0/0 0/0 .sdata2 @361 */ -SECTION_SDATA2 static f64 lit_361 = 0.6931471805599453; - -/* 80456928-80456930 004F28 0008+00 1/1 0/0 0/0 .sdata2 @362 */ -SECTION_SDATA2 static f64 lit_362 = -1.904654299957768e-09; - -/* 80456930-80456938 004F30 0008+00 1/1 0/0 0/0 .sdata2 @363 */ -SECTION_SDATA2 static f64 lit_363 = 0.16666666666666602; - -/* 80456938-80456940 004F38 0008+00 1/1 0/0 0/0 .sdata2 @364 */ -SECTION_SDATA2 static f64 lit_364 = -0.0027777777777015593; - -/* 80456940-80456948 004F40 0008+00 1/1 0/0 0/0 .sdata2 @365 */ -SECTION_SDATA2 static f64 lit_365 = 6.613756321437934e-05; - -/* 80456948-80456950 004F48 0008+00 1/1 0/0 0/0 .sdata2 @366 */ -SECTION_SDATA2 static f64 lit_366 = -1.6533902205465252e-06; - -/* 80456950-80456958 004F50 0008+00 1/1 0/0 0/0 .sdata2 @367 */ -SECTION_SDATA2 static f64 lit_367 = 4.1381367970572385e-08; - -/* 80456958-80456960 004F58 0008+00 1/1 0/0 0/0 .sdata2 @368 */ -SECTION_SDATA2 static f64 lit_368 = 2.0; - -/* 80456960-80456968 004F60 0008+00 1/1 0/0 0/0 .sdata2 @370 */ -SECTION_SDATA2 static f64 lit_370 = 4503601774854144.0 /* cast s32 to float */; - -/* 80369ED8-8036A708 364818 0830+00 0/0 1/1 0/0 .text __ieee754_pow */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __ieee754_pow() { - nofralloc -#include "asm/MSL_C/Math/Double_precision/e_pow/__ieee754_pow.s" + /* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */ + y1 = y; + __LO(y1) = 0; + p_l = (y - y1) * t1 + y * t2; + p_h = y1 * t1; + z = p_l + p_h; + j = __HI(z); + i = __LO(z); + if (j >= 0x40900000) { /* z >= 1024 */ + if (((j - 0x40900000) | i) != 0) /* if z > 1024 */ + return s * huge * huge; /* overflow */ + else { + if (p_l + ovt > z - p_h) + return s * huge * huge; /* overflow */ + } + } else if ((j & 0x7fffffff) >= 0x4090cc00) { /* z <= -1075 */ + if (((j - 0xc090cc00) | i) != 0) /* z < -1075 */ + return s * tiny * tiny; /* underflow */ + else { + if (p_l <= z - p_h) + return s * tiny * tiny; /* underflow */ + } + } + /* + * compute 2**(p_h+p_l) + */ + i = j & 0x7fffffff; + k = (i >> 20) - 0x3ff; + n = 0; + if (i > 0x3fe00000) { /* if |z| > 0.5, set n = [z+0.5] */ + n = j + (0x00100000 >> (k + 1)); + k = ((n & 0x7fffffff) >> 20) - 0x3ff; /* new k for n */ + t = zero; + __HI(t) = (n & ~(0x000fffff >> k)); + n = ((n & 0x000fffff) | 0x00100000) >> (20 - k); + if (j < 0) + n = -n; + p_h -= t; + } + t = p_l + p_h; + __LO(t) = 0; + u = t * lg2_h; + v = (p_l - (t - p_h)) * lg2 + t * lg2_l; + z = u + v; + w = v - (z - u); + t = z * z; + t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5)))); + r = (z * t1) / (t1 - two) - (w + z * w); + z = one - (r - z); + j = __HI(z); + j += (n << 20); + if ((j >> 20) <= 0) + z = ldexp(z, n); /* subnormal output */ + else + __HI(z) += (n << 20); + return s * z; } -#pragma pop + +#endif /* defined(_DOUBLE_IS_32BITS) */ + +// EOF e_pow.c \ No newline at end of file diff --git a/libs/MSL_C/Math/Double_precision/e_rem_pio2.c b/libs/MSL_C/Math/Double_precision/e_rem_pio2.c index d2d70f9f87..ed82fba215 100644 --- a/libs/MSL_C/Math/Double_precision/e_rem_pio2.c +++ b/libs/MSL_C/Math/Double_precision/e_rem_pio2.c @@ -1,105 +1,181 @@ -// -// Generated By: dol2asm -// Translation Unit: Math/Double_precision/e_rem_pio2 -// -#include "MSL_C/Math/Double_precision/e_rem_pio2.h" -#include "dol2asm.h" -#include "dolphin/types.h" +/* @(#)e_rem_pio2.c 1.4 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ -// -// Forward References: -// +/* __ieee754_rem_pio2(x,y) + * + * return the remainder of x rem pi/2 in y[0]+y[1] + * use __kernel_rem_pio2() + */ -void __ieee754_rem_pio2(); +#include "fdlibm.h" +#include "MSL_C/math.h" -// -// External References: -// - -void __kernel_rem_pio2(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803A23B0-803A24B8 02EA10 0108+00 1/1 0/0 0/0 .rodata two_over_pi */ -SECTION_RODATA static u8 const two_over_pi[264] = { - 0x00, 0xA2, 0xF9, 0x83, 0x00, 0x6E, 0x4E, 0x44, 0x00, 0x15, 0x29, 0xFC, 0x00, 0x27, 0x57, 0xD1, - 0x00, 0xF5, 0x34, 0xDD, 0x00, 0xC0, 0xDB, 0x62, 0x00, 0x95, 0x99, 0x3C, 0x00, 0x43, 0x90, 0x41, - 0x00, 0xFE, 0x51, 0x63, 0x00, 0xAB, 0xDE, 0xBB, 0x00, 0xC5, 0x61, 0xB7, 0x00, 0x24, 0x6E, 0x3A, - 0x00, 0x42, 0x4D, 0xD2, 0x00, 0xE0, 0x06, 0x49, 0x00, 0x2E, 0xEA, 0x09, 0x00, 0xD1, 0x92, 0x1C, - 0x00, 0xFE, 0x1D, 0xEB, 0x00, 0x1C, 0xB1, 0x29, 0x00, 0xA7, 0x3E, 0xE8, 0x00, 0x82, 0x35, 0xF5, - 0x00, 0x2E, 0xBB, 0x44, 0x00, 0x84, 0xE9, 0x9C, 0x00, 0x70, 0x26, 0xB4, 0x00, 0x5F, 0x7E, 0x41, - 0x00, 0x39, 0x91, 0xD6, 0x00, 0x39, 0x83, 0x53, 0x00, 0x39, 0xF4, 0x9C, 0x00, 0x84, 0x5F, 0x8B, - 0x00, 0xBD, 0xF9, 0x28, 0x00, 0x3B, 0x1F, 0xF8, 0x00, 0x97, 0xFF, 0xDE, 0x00, 0x05, 0x98, 0x0F, - 0x00, 0xEF, 0x2F, 0x11, 0x00, 0x8B, 0x5A, 0x0A, 0x00, 0x6D, 0x1F, 0x6D, 0x00, 0x36, 0x7E, 0xCF, - 0x00, 0x27, 0xCB, 0x09, 0x00, 0xB7, 0x4F, 0x46, 0x00, 0x3F, 0x66, 0x9E, 0x00, 0x5F, 0xEA, 0x2D, - 0x00, 0x75, 0x27, 0xBA, 0x00, 0xC7, 0xEB, 0xE5, 0x00, 0xF1, 0x7B, 0x3D, 0x00, 0x07, 0x39, 0xF7, - 0x00, 0x8A, 0x52, 0x92, 0x00, 0xEA, 0x6B, 0xFB, 0x00, 0x5F, 0xB1, 0x1F, 0x00, 0x8D, 0x5D, 0x08, - 0x00, 0x56, 0x03, 0x30, 0x00, 0x46, 0xFC, 0x7B, 0x00, 0x6B, 0xAB, 0xF0, 0x00, 0xCF, 0xBC, 0x20, - 0x00, 0x9A, 0xF4, 0x36, 0x00, 0x1D, 0xA9, 0xE3, 0x00, 0x91, 0x61, 0x5E, 0x00, 0xE6, 0x1B, 0x08, - 0x00, 0x65, 0x99, 0x85, 0x00, 0x5F, 0x14, 0xA0, 0x00, 0x68, 0x40, 0x8D, 0x00, 0xFF, 0xD8, 0x80, - 0x00, 0x4D, 0x73, 0x27, 0x00, 0x31, 0x06, 0x06, 0x00, 0x15, 0x56, 0xCA, 0x00, 0x73, 0xA8, 0xC9, - 0x00, 0x60, 0xE2, 0x7B, 0x00, 0xC0, 0x8C, 0x6B, -}; -COMPILER_STRIP_GATE(0x803A23B0, &two_over_pi); - -/* 803A24B8-803A2538 02EB18 0080+00 1/1 0/0 0/0 .rodata npio2_hw */ -SECTION_RODATA static u8 const npio2_hw[128] = { - 0x3F, 0xF9, 0x21, 0xFB, 0x40, 0x09, 0x21, 0xFB, 0x40, 0x12, 0xD9, 0x7C, 0x40, 0x19, 0x21, 0xFB, - 0x40, 0x1F, 0x6A, 0x7A, 0x40, 0x22, 0xD9, 0x7C, 0x40, 0x25, 0xFD, 0xBB, 0x40, 0x29, 0x21, 0xFB, - 0x40, 0x2C, 0x46, 0x3A, 0x40, 0x2F, 0x6A, 0x7A, 0x40, 0x31, 0x47, 0x5C, 0x40, 0x32, 0xD9, 0x7C, - 0x40, 0x34, 0x6B, 0x9C, 0x40, 0x35, 0xFD, 0xBB, 0x40, 0x37, 0x8F, 0xDB, 0x40, 0x39, 0x21, 0xFB, - 0x40, 0x3A, 0xB4, 0x1B, 0x40, 0x3C, 0x46, 0x3A, 0x40, 0x3D, 0xD8, 0x5A, 0x40, 0x3F, 0x6A, 0x7A, - 0x40, 0x40, 0x7E, 0x4C, 0x40, 0x41, 0x47, 0x5C, 0x40, 0x42, 0x10, 0x6C, 0x40, 0x42, 0xD9, 0x7C, - 0x40, 0x43, 0xA2, 0x8C, 0x40, 0x44, 0x6B, 0x9C, 0x40, 0x45, 0x34, 0xAC, 0x40, 0x45, 0xFD, 0xBB, - 0x40, 0x46, 0xC6, 0xCB, 0x40, 0x47, 0x8F, 0xDB, 0x40, 0x48, 0x58, 0xEB, 0x40, 0x49, 0x21, 0xFB, -}; -COMPILER_STRIP_GATE(0x803A24B8, &npio2_hw); - -/* 80456968-80456970 004F68 0008+00 1/1 0/0 0/0 .sdata2 @145 */ -SECTION_SDATA2 static u8 lit_145[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +/* + * Table of constants for 2/pi, 396 Hex digits (476 decimal) of 2/pi + */ +#ifdef __STDC__ +static const int two_over_pi[] = { +#else +static int two_over_pi[] = { +#endif + 0xA2F983, 0x6E4E44, 0x1529FC, 0x2757D1, 0xF534DD, 0xC0DB62, 0x95993C, 0x439041, 0xFE5163, 0xABDEBB, 0xC561B7, + 0x246E3A, 0x424DD2, 0xE00649, 0x2EEA09, 0xD1921C, 0xFE1DEB, 0x1CB129, 0xA73EE8, 0x8235F5, 0x2EBB44, 0x84E99C, + 0x7026B4, 0x5F7E41, 0x3991D6, 0x398353, 0x39F49C, 0x845F8B, 0xBDF928, 0x3B1FF8, 0x97FFDE, 0x05980F, 0xEF2F11, + 0x8B5A0A, 0x6D1F6D, 0x367ECF, 0x27CB09, 0xB74F46, 0x3F669E, 0x5FEA2D, 0x7527BA, 0xC7EBE5, 0xF17B3D, 0x0739F7, + 0x8A5292, 0xEA6BFB, 0x5FB11F, 0x8D5D08, 0x560330, 0x46FC7B, 0x6BABF0, 0xCFBC20, 0x9AF436, 0x1DA9E3, 0x91615E, + 0xE61B08, 0x659985, 0x5F14A0, 0x68408D, 0xFFD880, 0x4D7327, 0x310606, 0x1556CA, 0x73A8C9, 0x60E27B, 0xC08C6B, }; -/* 80456970-80456978 004F70 0008+00 1/1 0/0 0/0 .sdata2 @146 */ -SECTION_SDATA2 static f64 lit_146 = 1.5707963267341256; +#ifdef __STDC__ +static const int npio2_hw[] = { +#else +static int npio2_hw[] = { +#endif + 0x3FF921FB, 0x400921FB, 0x4012D97C, 0x401921FB, 0x401F6A7A, 0x4022D97C, 0x4025FDBB, 0x402921FB, 0x402C463A, 0x402F6A7A, 0x4031475C, + 0x4032D97C, 0x40346B9C, 0x4035FDBB, 0x40378FDB, 0x403921FB, 0x403AB41B, 0x403C463A, 0x403DD85A, 0x403F6A7A, 0x40407E4C, 0x4041475C, + 0x4042106C, 0x4042D97C, 0x4043A28C, 0x40446B9C, 0x404534AC, 0x4045FDBB, 0x4046C6CB, 0x40478FDB, 0x404858EB, 0x404921FB, +}; -/* 80456978-80456980 004F78 0008+00 1/1 0/0 0/0 .sdata2 @147 */ -SECTION_SDATA2 static f64 lit_147 = 6.077100506506192e-11; +/* + * invpio2: 53 bits of 2/pi + * pio2_1: first 33 bit of pi/2 + * pio2_1t: pi/2 - pio2_1 + * pio2_2: second 33 bit of pi/2 + * pio2_2t: pi/2 - (pio2_1+pio2_2) + * pio2_3: third 33 bit of pi/2 + * pio2_3t: pi/2 - (pio2_1+pio2_2+pio2_3) + */ -/* 80456980-80456988 004F80 0008+00 1/1 0/0 0/0 .sdata2 @148 */ -SECTION_SDATA2 static f64 lit_148 = 6.077100506303966e-11; +#ifdef __STDC__ +static const double +#else +static double +#endif + zero + = 0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */ + half = 5.00000000000000000000e-01, /* 0x3FE00000, 0x00000000 */ + two24 = 1.67772160000000000000e+07, /* 0x41700000, 0x00000000 */ + invpio2 = 6.36619772367581382433e-01, /* 0x3FE45F30, 0x6DC9C883 */ + pio2_1 = 1.57079632673412561417e+00, /* 0x3FF921FB, 0x54400000 */ + pio2_1t = 6.07710050650619224932e-11, /* 0x3DD0B461, 0x1A626331 */ + pio2_2 = 6.07710050630396597660e-11, /* 0x3DD0B461, 0x1A600000 */ + pio2_2t = 2.02226624879595063154e-21, /* 0x3BA3198A, 0x2E037073 */ + pio2_3 = 2.02226624871116645580e-21, /* 0x3BA3198A, 0x2E000000 */ + pio2_3t = 8.47842766036889956997e-32; /* 0x397B839A, 0x252049C1 */ -/* 80456988-80456990 004F88 0008+00 1/1 0/0 0/0 .sdata2 @149 */ -SECTION_SDATA2 static f64 lit_149 = 2.0222662487959506e-21; +#ifdef __STDC__ +int __ieee754_rem_pio2(double x, double* y) +#else +int __ieee754_rem_pio2(x, y) double x, y[]; +#endif +{ + double z, w, t, r, fn; + double tx[3]; + int e0, i, j, nx, n, ix, hx; -/* 80456990-80456998 004F90 0008+00 1/1 0/0 0/0 .sdata2 @150 */ -SECTION_SDATA2 static f64 lit_150 = 0.5; - -/* 80456998-804569A0 004F98 0008+00 1/1 0/0 0/0 .sdata2 @151 */ -SECTION_SDATA2 static f64 lit_151 = 0.6366197723675814; - -/* 804569A0-804569A8 004FA0 0008+00 1/1 0/0 0/0 .sdata2 @152 */ -SECTION_SDATA2 static f64 lit_152 = 2.0222662487111665e-21; - -/* 804569A8-804569B0 004FA8 0008+00 1/1 0/0 0/0 .sdata2 @153 */ -SECTION_SDATA2 static f64 lit_153 = 8.4784276603689e-32; - -/* 804569B0-804569B8 004FB0 0008+00 1/1 0/0 0/0 .sdata2 @154 */ -SECTION_SDATA2 static f64 lit_154 = 16777216.0; - -/* 804569B8-804569C0 004FB8 0008+00 1/1 0/0 0/0 .sdata2 @157 */ -SECTION_SDATA2 static f64 lit_157 = 4503601774854144.0 /* cast s32 to float */; - -/* 8036A708-8036AAA8 365048 03A0+00 0/0 3/3 0/0 .text __ieee754_rem_pio2 */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __ieee754_rem_pio2() { - nofralloc -#include "asm/MSL_C/Math/Double_precision/e_rem_pio2/__ieee754_rem_pio2.s" -} -#pragma pop + hx = __HI(x); /* high word of x */ + ix = hx & 0x7fffffff; + if (ix <= 0x3fe921fb) /* |x| ~<= pi/4 , no need for reduction */ + { + y[0] = x; + y[1] = 0; + return 0; + } + if (ix < 0x4002d97c) { /* |x| < 3pi/4, special case with n=+-1 */ + if (hx > 0) { + z = x - pio2_1; + if (ix != 0x3ff921fb) { /* 33+53 bit pi is good enough */ + y[0] = z - pio2_1t; + y[1] = (z - y[0]) - pio2_1t; + } else { /* near pi/2, use 33+33+53 bit pi */ + z -= pio2_2; + y[0] = z - pio2_2t; + y[1] = (z - y[0]) - pio2_2t; + } + return 1; + } else { /* negative x */ + z = x + pio2_1; + if (ix != 0x3ff921fb) { /* 33+53 bit pi is good enough */ + y[0] = z + pio2_1t; + y[1] = (z - y[0]) + pio2_1t; + } else { /* near pi/2, use 33+33+53 bit pi */ + z += pio2_2; + y[0] = z + pio2_2t; + y[1] = (z - y[0]) + pio2_2t; + } + return -1; + } + } + if (ix <= 0x413921fb) { /* |x| ~<= 2^19*(pi/2), medium size */ + t = fabs(x); + n = (int)(t * invpio2 + half); + fn = (double)n; + r = t - fn * pio2_1; + w = fn * pio2_1t; /* 1st round good to 85 bit */ + if (n < 32 && ix != npio2_hw[n - 1]) { + y[0] = r - w; /* quick check no cancellation */ + } else { + j = ix >> 20; + y[0] = r - w; + i = j - (((__HI(y[0])) >> 20) & 0x7ff); + if (i > 16) { /* 2nd iteration needed, good to 118 */ + t = r; + r = t - fn * pio2_2; + w = fn * pio2_2t - ((t - r) - fn * pio2_2); + y[0] = r - w; + i = j - (((__HI(y[0])) >> 20) & 0x7ff); + if (i > 49) { /* 3rd iteration need, 151 bits acc */ + t = r; /* will cover all possible cases */ + w = fn * pio2_3; + r = t - w; + w = fn * pio2_3t - ((t - r) - w); + y[0] = r - w; + } + } + } + y[1] = (r - y[0]) - w; + if (hx < 0) { + y[0] = -y[0]; + y[1] = -y[1]; + return -n; + } else + return n; + } + /* + * all other (large) arguments + */ + if (ix >= 0x7ff00000) { /* x is inf or NaN */ + y[0] = y[1] = x - x; + return 0; + } + /* set z = scalbn(|x|,ilogb(x)-23) */ + __LO(z) = __LO(x); + e0 = (ix >> 20) - 1046; /* e0 = ilogb(z)-23; */ + __HI(z) = ix - (e0 << 20); + for (i = 0; i < 2; i++) { + tx[i] = (double)((int)(z)); + z = (z - tx[i]) * two24; + } + tx[2] = z; + nx = 3; + while (tx[nx - 1] == zero) + nx--; /* skip zero term */ + n = __kernel_rem_pio2(tx, y, e0, nx, 2, two_over_pi); + if (hx < 0) { + y[0] = -y[0]; + y[1] = -y[1]; + return -n; + } + return n; +} \ No newline at end of file diff --git a/libs/MSL_C/Math/Double_precision/e_sqrt.c b/libs/MSL_C/Math/Double_precision/e_sqrt.c index 744a175515..8eaf17d90f 100644 --- a/libs/MSL_C/Math/Double_precision/e_sqrt.c +++ b/libs/MSL_C/Math/Double_precision/e_sqrt.c @@ -1,39 +1,462 @@ -// -// Generated By: dol2asm -// Translation Unit: Math/Double_precision/e_sqrt -// +/* @(#)e_sqrt.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ -#include "MSL_C/Math/Double_precision/e_sqrt.h" -#include "dol2asm.h" -#include "dolphin/types.h" +/* __ieee754_sqrt(x) + * Return correctly rounded sqrt. + * ------------------------------------------ + * | Use the hardware sqrt if you have one | + * ------------------------------------------ + * Method: + * Bit by bit method using integer arithmetic. (Slow, but portable) + * 1. Normalization + * Scale x to y in [1,4) with even powers of 2: + * find an integer k such that 1 <= (y=x*2^(2k)) < 4, then + * sqrt(x) = 2^k * sqrt(y) + * 2. Bit by bit computation + * Let q = sqrt(y) truncated to i bit after binary point (q = 1), + * i 0 + * i+1 2 + * s = 2*q , and y = 2 * ( y - q ). (1) + * i i i i + * + * To compute q from q , one checks whether + * i+1 i + * + * -(i+1) 2 + * (q + 2 ) <= y. (2) + * i + * -(i+1) + * If (2) is false, then q = q ; otherwise q = q + 2 . + * i+1 i i+1 i + * + * With some algebric manipulation, it is not difficult to see + * that (2) is equivalent to + * -(i+1) + * s + 2 <= y (3) + * i i + * + * The advantage of (3) is that s and y can be computed by + * i i + * the following recurrence formula: + * if (3) is false + * + * s = s , y = y ; (4) + * i+1 i i+1 i + * + * otherwise, + * -i -(i+1) + * s = s + 2 , y = y - s - 2 (5) + * i+1 i i+1 i i + * + * One may easily use induction to prove (4) and (5). + * Note. Since the left hand side of (3) contain only i+2 bits, + * it does not necessary to do a full (53-bit) comparison + * in (3). + * 3. Final rounding + * After generating the 53 bits result, we compute one more bit. + * Together with the remainder, we can decide whether the + * result is exact, bigger than 1/2ulp, or less than 1/2ulp + * (it will never equal to 1/2ulp). + * The rounding mode can be detected by checking whether + * huge + tiny is equal to huge, and whether huge - tiny is + * equal to huge for some floating point number "huge" and "tiny". + * + * Special cases: + * sqrt(+-0) = +-0 ... exact + * sqrt(inf) = inf + * sqrt(-ve) = NaN ... with invalid signal + * sqrt(NaN) = NaN ... with invalid signal for signaling NaN + * + * Other methods : see the appended file at the end of the program below. + *--------------- + */ -// -// Forward References: -// +#include "fdlibm.h" +#include "errno.h" +#include "MSL_C/math.h" -void __ieee754_sqrt(); +#ifdef __STDC__ +static const double one = 1.0, tiny = 1.0e-300; +#else +static double one = 1.0, tiny = 1.0e-300; +#endif -// -// External References: -// +#ifdef __STDC__ +double __ieee754_sqrt(double x) +#else +double __ieee754_sqrt(x) double x; +#endif +{ + double z; + int sign = (int)0x80000000; + unsigned r, t1, s1, ix1, q1; + int ix0, s0, q, m, t, i; -extern u32 __float_nan; -extern u8 errno[4 + 4 /* padding */]; + ix0 = __HI(x); /* high word of x */ + ix1 = __LO(x); /* low word of x */ -// -// Declarations: -// + /* take care of Inf and NaN */ + if ((ix0 & 0x7ff00000) == 0x7ff00000) { + errno = 33; + return x * x + x; /* sqrt(NaN)=NaN, sqrt(+inf)=+inf + sqrt(-inf)=sNaN */ + } + /* take care of zero */ + if (ix0 <= 0) { + if (((ix0 & (~sign)) | ix1) == 0) + return x; /* sqrt(+-0) = +-0 */ + else if (ix0 < 0) { + errno = 33; + return *__float_nan; + } /* sqrt(-ve) = sNaN */ + } + /* normalize x */ + m = (ix0 >> 20); + if (m == 0) { /* subnormal x */ + while (ix0 == 0) { + m -= 21; + ix0 |= (ix1 >> 11); + ix1 <<= 21; + } + for (i = 0; (ix0 & 0x00100000) == 0; i++) + ix0 <<= 1; + m -= i - 1; + ix0 |= (ix1 >> (32 - i)); + ix1 <<= i; + } + m -= 1023; /* unbias exponent */ + ix0 = (ix0 & 0x000fffff) | 0x00100000; + if (m & 1) { /* odd m, double x to make it even */ + ix0 += ix0 + ((ix1 & sign) >> 31); + ix1 += ix1; + } + m >>= 1; /* m = [m/2] */ -/* ############################################################################################## */ -/* 80456B48-80456B50 005148 0008+00 1/1 0/0 0/0 .sdata2 @164 */ -SECTION_SDATA2 static f64 lit_164 = 1.0; + /* generate sqrt(x) bit by bit */ + ix0 += ix0 + ((ix1 & sign) >> 31); + ix1 += ix1; + q = q1 = s0 = s1 = 0; /* [q,q1] = sqrt(x) */ + r = 0x00200000; /* r = moving bit from right to left */ -/* 8036C7A0-8036C9C4 3670E0 0224+00 0/0 1/1 0/0 .text __ieee754_sqrt */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __ieee754_sqrt() { - nofralloc -#include "asm/MSL_C/Math/Double_precision/e_sqrt/__ieee754_sqrt.s" + while (r != 0) { + t = s0 + r; + if (t <= ix0) { + s0 = t + r; + ix0 -= t; + q += r; + } + ix0 += ix0 + ((ix1 & sign) >> 31); + ix1 += ix1; + r >>= 1; + } + + r = sign; + while (r != 0) { + t1 = s1 + r; + t = s0; + if ((t < ix0) || ((t == ix0) && (t1 <= ix1))) { + s1 = t1 + r; + if (((t1 & sign) == sign) && (s1 & sign) == 0) + s0 += 1; + ix0 -= t; + if (ix1 < t1) + ix0 -= 1; + ix1 -= t1; + q1 += r; + } + ix0 += ix0 + ((ix1 & sign) >> 31); + ix1 += ix1; + r >>= 1; + } + + /* use floating add to find out rounding direction */ + if ((ix0 | ix1) != 0) { + z = one - tiny; /* trigger inexact flag */ + if (z >= one) { + z = one + tiny; + if (q1 == (unsigned)0xffffffff) { + q1 = 0; + q += 1; + } else if (z > one) { + if (q1 == (unsigned)0xfffffffe) + q += 1; + q1 += 2; + } else + q1 += (q1 & 1); + } + } + ix0 = (q >> 1) + 0x3fe00000; + ix1 = q1 >> 1; + if ((q & 1) == 1) + ix1 |= sign; + ix0 += (m << 20); + __HI(z) = ix0; + __LO(z) = ix1; + return z; } -#pragma pop + +/* +Other methods (use floating-point arithmetic) +------------- +(This is a copy of a drafted paper by Prof W. Kahan +and K.C. Ng, written in May, 1986) + + Two algorithms are given here to implement sqrt(x) + (IEEE double precision arithmetic) in software. + Both supply sqrt(x) correctly rounded. The first algorithm (in + Section A) uses newton iterations and involves four divisions. + The second one uses reciproot iterations to avoid division, but + requires more multiplications. Both algorithms need the ability + to chop results of arithmetic operations instead of round them, + and the INEXACT flag to indicate when an arithmetic operation + is executed exactly with no roundoff error, all part of the + standard (IEEE 754-1985). The ability to perform shift, add, + subtract and logical AND operations upon 32-bit words is needed + too, though not part of the standard. + +A. sqrt(x) by Newton Iteration + + (1) Initial approximation + + Let x0 and x1 be the leading and the trailing 32-bit words of + a floating point number x (in IEEE double format) respectively + + 1 11 52 ...widths + ------------------------------------------------------ + x: |s| e | f | + ------------------------------------------------------ + msb lsb msb lsb ...order + + + ------------------------ ------------------------ + x0: |s| e | f1 | x1: | f2 | + ------------------------ ------------------------ + + By performing shifts and subtracts on x0 and x1 (both regarded + as integers), we obtain an 8-bit approximation of sqrt(x) as + follows. + + k := (x0>>1) + 0x1ff80000; + y0 := k - T1[31&(k>>15)]. ... y ~ sqrt(x) to 8 bits + Here k is a 32-bit integer and T1[] is an integer array containing + correction terms. Now magically the floating value of y (y's + leading 32-bit word is y0, the value of its trailing word is 0) + approximates sqrt(x) to almost 8-bit. + + Value of T1: + static int T1[32]= { + 0, 1024, 3062, 5746, 9193, 13348, 18162, 23592, + 29598, 36145, 43202, 50740, 58733, 67158, 75992, 85215, + 83599, 71378, 60428, 50647, 41945, 34246, 27478, 21581, + 16499, 12183, 8588, 5674, 3403, 1742, 661, 130,}; + + (2) Iterative refinement + + Apply Heron's rule three times to y, we have y approximates + sqrt(x) to within 1 ulp (Unit in the Last Place): + + y := (y+x/y)/2 ... almost 17 sig. bits + y := (y+x/y)/2 ... almost 35 sig. bits + y := y-(y-x/y)/2 ... within 1 ulp + + + Remark 1. + Another way to improve y to within 1 ulp is: + + y := (y+x/y) ... almost 17 sig. bits to 2*sqrt(x) + y := y - 0x00100006 ... almost 18 sig. bits to sqrt(x) + + 2 + (x-y )*y + y := y + 2* ---------- ...within 1 ulp + 2 + 3y + x + + + This formula has one division fewer than the one above; however, + it requires more multiplications and additions. Also x must be + scaled in advance to avoid spurious overflow in evaluating the + expression 3y*y+x. Hence it is not recommended uless division + is slow. If division is very slow, then one should use the + reciproot algorithm given in section B. + + (3) Final adjustment + + By twiddling y's last bit it is possible to force y to be + correctly rounded according to the prevailing rounding mode + as follows. Let r and i be copies of the rounding mode and + inexact flag before entering the square root program. Also we + use the expression y+-ulp for the next representable floating + numbers (up and down) of y. Note that y+-ulp = either fixed + point y+-1, or multiply y by nextafter(1,+-inf) in chopped + mode. + + I := FALSE; ... reset INEXACT flag I + R := RZ; ... set rounding mode to round-toward-zero + z := x/y; ... chopped quotient, possibly inexact + If(not I) then { ... if the quotient is exact + if(z=y) { + I := i; ... restore inexact flag + R := r; ... restore rounded mode + return sqrt(x):=y. + } else { + z := z - ulp; ... special rounding + } + } + i := TRUE; ... sqrt(x) is inexact + If (r=RN) then z=z+ulp ... rounded-to-nearest + If (r=RP) then { ... round-toward-+inf + y = y+ulp; z=z+ulp; + } + y := y+z; ... chopped sum + y0:=y0-0x00100000; ... y := y/2 is correctly rounded. + I := i; ... restore inexact flag + R := r; ... restore rounded mode + return sqrt(x):=y. + + (4) Special cases + + Square root of +inf, +-0, or NaN is itself; + Square root of a negative number is NaN with invalid signal. + + +B. sqrt(x) by Reciproot Iteration + + (1) Initial approximation + + Let x0 and x1 be the leading and the trailing 32-bit words of + a floating point number x (in IEEE double format) respectively + (see section A). By performing shifs and subtracts on x0 and y0, + we obtain a 7.8-bit approximation of 1/sqrt(x) as follows. + + k := 0x5fe80000 - (x0>>1); + y0:= k - T2[63&(k>>14)]. ... y ~ 1/sqrt(x) to 7.8 bits + + Here k is a 32-bit integer and T2[] is an integer array + containing correction terms. Now magically the floating + value of y (y's leading 32-bit word is y0, the value of + its trailing word y1 is set to zero) approximates 1/sqrt(x) + to almost 7.8-bit. + + Value of T2: + static int T2[64]= { + 0x1500, 0x2ef8, 0x4d67, 0x6b02, 0x87be, 0xa395, 0xbe7a, 0xd866, + 0xf14a, 0x1091b,0x11fcd,0x13552,0x14999,0x15c98,0x16e34,0x17e5f, + 0x18d03,0x19a01,0x1a545,0x1ae8a,0x1b5c4,0x1bb01,0x1bfde,0x1c28d, + 0x1c2de,0x1c0db,0x1ba73,0x1b11c,0x1a4b5,0x1953d,0x18266,0x16be0, + 0x1683e,0x179d8,0x18a4d,0x19992,0x1a789,0x1b445,0x1bf61,0x1c989, + 0x1d16d,0x1d77b,0x1dddf,0x1e2ad,0x1e5bf,0x1e6e8,0x1e654,0x1e3cd, + 0x1df2a,0x1d635,0x1cb16,0x1be2c,0x1ae4e,0x19bde,0x1868e,0x16e2e, + 0x1527f,0x1334a,0x11051,0xe951, 0xbe01, 0x8e0d, 0x5924, 0x1edd,}; + + (2) Iterative refinement + + Apply Reciproot iteration three times to y and multiply the + result by x to get an approximation z that matches sqrt(x) + to about 1 ulp. To be exact, we will have + -1ulp < sqrt(x)-z<1.0625ulp. + + ... set rounding mode to Round-to-nearest + y := y*(1.5-0.5*x*y*y) ... almost 15 sig. bits to 1/sqrt(x) + y := y*((1.5-2^-30)+0.5*x*y*y)... about 29 sig. bits to 1/sqrt(x) + ... special arrangement for better accuracy + z := x*y ... 29 bits to sqrt(x), with z*y<1 + z := z + 0.5*z*(1-z*y) ... about 1 ulp to sqrt(x) + + Remark 2. The constant 1.5-2^-30 is chosen to bias the error so that + (a) the term z*y in the final iteration is always less than 1; + (b) the error in the final result is biased upward so that + -1 ulp < sqrt(x) - z < 1.0625 ulp + instead of |sqrt(x)-z|<1.03125ulp. + + (3) Final adjustment + + By twiddling y's last bit it is possible to force y to be + correctly rounded according to the prevailing rounding mode + as follows. Let r and i be copies of the rounding mode and + inexact flag before entering the square root program. Also we + use the expression y+-ulp for the next representable floating + numbers (up and down) of y. Note that y+-ulp = either fixed + point y+-1, or multiply y by nextafter(1,+-inf) in chopped + mode. + + R := RZ; ... set rounding mode to round-toward-zero + switch(r) { + case RN: ... round-to-nearest + if(x<= z*(z-ulp)...chopped) z = z - ulp; else + if(x<= z*(z+ulp)...chopped) z = z; else z = z+ulp; + break; + case RZ:case RM: ... round-to-zero or round-to--inf + R:=RP; ... reset rounding mod to round-to-+inf + if(x=(z+ulp)*(z+ulp) ...rounded up) z = z+ulp; + break; + case RP: ... round-to-+inf + if(x>(z+ulp)*(z+ulp)...chopped) z = z+2*ulp; else + if(x>z*z ...chopped) z = z+ulp; + break; + } + + Remark 3. The above comparisons can be done in fixed point. For + example, to compare x and w=z*z chopped, it suffices to compare + x1 and w1 (the trailing parts of x and w), regarding them as + two's complement integers. + + ...Is z an exact square root? + To determine whether z is an exact square root of x, let z1 be the + trailing part of z, and also let x0 and x1 be the leading and + trailing parts of x. + + If ((z1&0x03ffffff)!=0) ... not exact if trailing 26 bits of z!=0 + I := 1; ... Raise Inexact flag: z is not exact + else { + j := 1 - [(x0>>20)&1] ... j = logb(x) mod 2 + k := z1 >> 26; ... get z's 25-th and 26-th + fraction bits + I := i or (k&j) or ((k&(j+j+1))!=(x1&3)); + } + R:= r ... restore rounded mode + return sqrt(x):=z. + + If multiplication is cheaper then the foregoing red tape, the + Inexact flag can be evaluated by + + I := i; + I := (z*z!=x) or I. + + Note that z*z can overwrite I; this value must be sensed if it is + True. + + Remark 4. If z*z = x exactly, then bit 25 to bit 0 of z1 must be + zero. + + -------------------- + z1: | f2 | + -------------------- + bit 31 bit 0 + + Further more, bit 27 and 26 of z1, bit 0 and 1 of x1, and the odd + or even of logb(x) have the following relations: + + ------------------------------------------------- + bit 27,26 of z1 bit 1,0 of x1 logb(x) + ------------------------------------------------- + 00 00 odd and even + 01 01 even + 10 10 odd + 10 00 even + 11 01 even + ------------------------------------------------- + + (4) Special cases (see (4) of Section A). + + */ \ No newline at end of file diff --git a/libs/MSL_C/Math/Double_precision/k_cos.c b/libs/MSL_C/Math/Double_precision/k_cos.c index 1707287c24..5db423ec49 100644 --- a/libs/MSL_C/Math/Double_precision/k_cos.c +++ b/libs/MSL_C/Math/Double_precision/k_cos.c @@ -1,60 +1,93 @@ -// -// Generated By: dol2asm -// Translation Unit: Math/Double_precision/k_cos -// -#include "MSL_C/Math/Double_precision/k_cos.h" -#include "dol2asm.h" -#include "dolphin/types.h" +/* @(#)k_cos.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ -// -// Forward References: -// +/* + * __kernel_cos( x, y ) + * kernel cos function on [-pi/4, pi/4], pi/4 ~ 0.785398164 + * Input x is assumed to be bounded by ~pi/4 in magnitude. + * Input y is the tail of x. + * + * Algorithm + * 1. Since cos(-x) = cos(x), we need only to consider positive x. + * 2. if x < 2^-27 (hx<0x3e400000 0), return 1 with inexact if x!=0. + * 3. cos(x) is approximated by a polynomial of degree 14 on + * [0,pi/4] + * 4 14 + * cos(x) ~ 1 - x*x/2 + C1*x + ... + C6*x + * where the remez error is + * + * | 2 4 6 8 10 12 14 | -58 + * |cos(x)-(1-.5*x +C1*x +C2*x +C3*x +C4*x +C5*x +C6*x )| <= 2 + * | | + * + * 4 6 8 10 12 14 + * 4. let r = C1*x +C2*x +C3*x +C4*x +C5*x +C6*x , then + * cos(x) = 1 - x*x/2 + r + * since cos(x+y) ~ cos(x) - sin(x)*y + * ~ cos(x) - x*y, + * a correction term is necessary in cos(x) and hence + * cos(x+y) = 1 - (x*x/2 - (r - x*y)) + * For better accuracy when x > 0.3, let qx = |x|/4 with + * the last 32 bits mask off, and if x > 0.78125, let qx = 0.28125. + * Then + * cos(x+y) = (1-qx) - ((x*x/2-qx) - (r-x*y)). + * Note that 1-qx and (x*x/2-qx) is EXACT here, and the + * magnitude of the latter is at least a quarter of x*x/2, + * thus, reducing the rounding error in the subtraction. + */ -void __kernel_cos(); +#include "fdlibm.h" -// -// External References: -// +#ifdef __STDC__ +static const double +#else +static double +#endif + one + = 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */ + C1 = 4.16666666666666019037e-02, /* 0x3FA55555, 0x5555554C */ + C2 = -1.38888888888741095749e-03, /* 0xBF56C16C, 0x16C15177 */ + C3 = 2.48015872894767294178e-05, /* 0x3EFA01A0, 0x19CB1590 */ + C4 = -2.75573143513906633035e-07, /* 0xBE927E4F, 0x809C52AD */ + C5 = 2.08757232129817482790e-09, /* 0x3E21EE9E, 0xBDB4B1C4 */ + C6 = -1.13596475577881948265e-11; /* 0xBDA8FAE9, 0xBE8838D4 */ -// -// Declarations: -// - -/* ############################################################################################## */ -/* 804569C0-804569C8 004FC0 0008+00 1/1 0/0 0/0 .sdata2 @65 */ -SECTION_SDATA2 static f64 lit_65 = 1.0; - -/* 804569C8-804569D0 004FC8 0008+00 1/1 0/0 0/0 .sdata2 @66 */ -SECTION_SDATA2 static f64 lit_66 = 0.0416666666666666; - -/* 804569D0-804569D8 004FD0 0008+00 1/1 0/0 0/0 .sdata2 @67 */ -SECTION_SDATA2 static f64 lit_67 = -0.001388888888887411; - -/* 804569D8-804569E0 004FD8 0008+00 1/1 0/0 0/0 .sdata2 @68 */ -SECTION_SDATA2 static f64 lit_68 = 2.480158728947673e-05; - -/* 804569E0-804569E8 004FE0 0008+00 1/1 0/0 0/0 .sdata2 @69 */ -SECTION_SDATA2 static f64 lit_69 = -2.7557314351390663e-07; - -/* 804569E8-804569F0 004FE8 0008+00 1/1 0/0 0/0 .sdata2 @70 */ -SECTION_SDATA2 static f64 lit_70 = 2.087572321298175e-09; - -/* 804569F0-804569F8 004FF0 0008+00 1/1 0/0 0/0 .sdata2 @71 */ -SECTION_SDATA2 static f64 lit_71 = -1.1359647557788195e-11; - -/* 804569F8-80456A00 004FF8 0008+00 1/1 0/0 0/0 .sdata2 @72 */ -SECTION_SDATA2 static f64 lit_72 = 0.5; - -/* 80456A00-80456A08 005000 0008+00 1/1 0/0 0/0 .sdata2 @73 */ -SECTION_SDATA2 static f64 lit_73 = 0.28125; - -/* 8036AAA8-8036AB9C 3653E8 00F4+00 0/0 2/2 0/0 .text __kernel_cos */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __kernel_cos() { - nofralloc -#include "asm/MSL_C/Math/Double_precision/k_cos/__kernel_cos.s" -} -#pragma pop +#ifdef __STDC__ +double __kernel_cos(double x, double y) +#else +double __kernel_cos(x, y) double x, y; +#endif +{ + double a, hz, z, r, qx; + int ix; + ix = __HI(x) & 0x7fffffff; /* ix = |x|'s high word*/ + if (ix < 0x3e400000) { /* if x < 2**27 */ + if (((int)x) == 0) + return one; /* generate inexact */ + } + z = x * x; + r = z * (C1 + z * (C2 + z * (C3 + z * (C4 + z * (C5 + z * C6))))); + if (ix < 0x3FD33333) /* if |x| < 0.3 */ + return one - (0.5 * z - (z * r - x * y)); + else { + if (ix > 0x3fe90000) { /* x > 0.78125 */ + qx = 0.28125; + } else { + __HI(qx) = ix - 0x00200000; /* x/4 */ + __LO(qx) = 0; + } + hz = 0.5 * z - qx; + a = one - qx; + return a - (hz - (z * r - x * y)); + } +} \ No newline at end of file diff --git a/libs/MSL_C/Math/Double_precision/k_rem_pio2.c b/libs/MSL_C/Math/Double_precision/k_rem_pio2.c index e09d2b995b..b08e3c9dee 100644 --- a/libs/MSL_C/Math/Double_precision/k_rem_pio2.c +++ b/libs/MSL_C/Math/Double_precision/k_rem_pio2.c @@ -1,79 +1,353 @@ -// -// Generated By: dol2asm -// Translation Unit: Math/Double_precision/k_rem_pio2 -// -#include "MSL_C/Math/Double_precision/k_rem_pio2.h" -#include "dol2asm.h" -#include "dolphin/types.h" +/* @(#)k_rem_pio2.c 1.2 95/01/04 */ +/* $Id: k_rem_pio2.c,v 1.2.14.1 2002/01/31 15:24:13 ceciliar Exp $ */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ -// -// Forward References: -// +/* + * __kernel_rem_pio2(x,y,e0,nx,prec,ipio2) + * double x[],y[]; int e0,nx,prec; int ipio2[]; + * + * __kernel_rem_pio2 return the last three digits of N with + * y = x - N*pi/2 + * so that |y| < pi/2. + * + * The method is to compute the integer (mod 8) and fraction parts of + * (2/pi)*x without doing the full multiplication. In general we + * skip the part of the product that are known to be a huge integer ( + * more accurately, = 0 mod 8 ). Thus the number of operations are + * independent of the exponent of the input. + * + * (2/pi) is represented by an array of 24-bit integers in ipio2[]. + * + * Input parameters: + * x[] The input value (must be positive) is broken into nx + * pieces of 24-bit integers in double precision format. + * x[i] will be the i-th 24 bit of x. The scaled exponent + * of x[0] is given in input parameter e0 (i.e., x[0]*2^e0 + * match x's up to 24 bits. + * + * Example of breaking a double positive z into x[0]+x[1]+x[2]: + * e0 = ilogb(z)-23 + * z = ldexp(z,-e0) + * for i = 0,1,2 + * x[i] = floor(z) + * z = (z-x[i])*2**24 + * + * + * y[] ouput result in an array of double precision numbers. + * The dimension of y[] is: + * 24-bit precision 1 + * 53-bit precision 2 + * 64-bit precision 2 + * 113-bit precision 3 + * The actual value is the sum of them. Thus for 113-bit + * precison, one may have to do something like: + * + * long double t,w,r_head, r_tail; + * t = (long double)y[2] + (long double)y[1]; + * w = (long double)y[0]; + * r_head = t+w; + * r_tail = w - (r_head - t); + * + * e0 The exponent of x[0] + * + * nx dimension of x[] + * + * prec an integer indicating the precision: + * 0 24 bits (single) + * 1 53 bits (double) + * 2 64 bits (extended) + * 3 113 bits (quad) + * + * ipio2[] + * integer array, contains the (24*i)-th to (24*i+23)-th + * bit of 2/pi after binary point. The corresponding + * floating value is + * + * ipio2[i] * 2^(-24(i+1)). + * + * External function: + * double ldexp(), floor(); + * + * + * Here is the description of some local variables: + * + * jk jk+1 is the initial number of terms of ipio2[] needed + * in the computation. The recommended value is 2,3,4, + * 6 for single, double, extended,and quad. + * + * jz local integer variable indicating the number of + * terms of ipio2[] used. + * + * jx nx - 1 + * + * jv index for pointing to the suitable ipio2[] for the + * computation. In general, we want + * ( 2^e0*x[0] * ipio2[jv-1]*2^(-24jv) )/8 + * is an integer. Thus + * e0-3-24*jv >= 0 or (e0-3)/24 >= jv + * Hence jv = max(0,(e0-3)/24). + * + * jp jp+1 is the number of terms in PIo2[] needed, jp = jk. + * + * q[] double array with integral value, representing the + * 24-bits chunk of the product of x and 2/pi. + * + * q0 the corresponding exponent of q[0]. Note that the + * exponent for q[i] would be q0-24*i. + * + * PIo2[] double precision array, obtained by cutting pi/2 + * into 24 bits chunks. + * + * f[] ipio2[] in floating point + * + * iq[] integer array by breaking up q[] in 24-bits chunk. + * + * fq[] final product of x*(2/pi) in fq[0],..,fq[jk] + * + * ih integer. If >0 it indicates q[] is >= 0.5, hence + * it also indicates the *sign* of the result. + * + */ -void __kernel_rem_pio2(); +/* + * Constants: + * The hexadecimal values are the intended ones for the following + * constants. The decimal values may be used, provided that the + * compiler will convert from decimal to binary accurately enough + * to produce the hexadecimal values shown. + */ -// -// External References: -// +#include "fdlibm.h" -void _savefpr_25(); -void _restfpr_25(); -void floor(); -void ldexp(); +#ifdef __STDC__ +static const int init_jk[] = { 2, 3, 4, 6 }; +/* initial value for jk */ /*- cc 020130 -*/ +#else +static int init_jk[] = { 2, 3, 4, 6 }; /*- cc 020130 -*/ +#endif -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803A2538-803A2548 02EB98 0010+00 1/1 0/0 0/0 .rodata init_jk */ -SECTION_RODATA static u8 const init_jk[16] = { - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, -}; -COMPILER_STRIP_GATE(0x803A2538, &init_jk); - -/* 803A2548-803A2588 02EBA8 0040+00 1/1 0/0 0/0 .rodata PIo2 */ -SECTION_RODATA static u8 const PIo2[64] = { - 0x3F, 0xF9, 0x21, 0xFB, 0x40, 0x00, 0x00, 0x00, 0x3E, 0x74, 0x44, 0x2D, 0x00, 0x00, 0x00, 0x00, - 0x3C, 0xF8, 0x46, 0x98, 0x80, 0x00, 0x00, 0x00, 0x3B, 0x78, 0xCC, 0x51, 0x60, 0x00, 0x00, 0x00, - 0x39, 0xF0, 0x1B, 0x83, 0x80, 0x00, 0x00, 0x00, 0x38, 0x7A, 0x25, 0x20, 0x40, 0x00, 0x00, 0x00, - 0x36, 0xE3, 0x82, 0x22, 0x80, 0x00, 0x00, 0x00, 0x35, 0x69, 0xF3, 0x1D, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x803A2548, &PIo2); - -/* 80456A08-80456A10 005008 0008+00 1/1 0/0 0/0 .sdata2 @436 */ -SECTION_SDATA2 static u8 lit_436[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +#ifdef __STDC__ +static const double PIo2[] = { +#else +static double PIo2[] = { +#endif + 1.57079625129699707031e+00, /* 0x3FF921FB, 0x40000000 */ + 7.54978941586159635335e-08, /* 0x3E74442D, 0x00000000 */ + 5.39030252995776476554e-15, /* 0x3CF84698, 0x80000000 */ + 3.28200341580791294123e-22, /* 0x3B78CC51, 0x60000000 */ + 1.27065575308067607349e-29, /* 0x39F01B83, 0x80000000 */ + 1.22933308981111328932e-36, /* 0x387A2520, 0x40000000 */ + 2.73370053816464559624e-44, /* 0x36E38222, 0x80000000 */ + 2.16741683877804819444e-51, /* 0x3569F31D, 0x00000000 */ }; -/* 80456A10-80456A18 005010 0008+00 1/1 0/0 0/0 .sdata2 @437 */ -SECTION_SDATA2 static f64 lit_437 = 5.960464477539063e-08; +#ifdef __STDC__ +static const double +#else +static double +#endif + zero + = 0.0, + one = 1.0, two24 = 1.67772160000000000000e+07, /* 0x41700000, 0x00000000 */ + twon24 = 5.96046447753906250000e-08; /* 0x3E700000, 0x00000000 */ -/* 80456A18-80456A20 005018 0008+00 1/1 0/0 0/0 .sdata2 @438 */ -SECTION_SDATA2 static f64 lit_438 = 16777216.0; +#ifdef __STDC__ +int __kernel_rem_pio2(double* x, double* y, int e0, int nx, int prec, const int* ipio2) /*- cc 020130 -*/ +#else +int __kernel_rem_pio2(x, y, e0, nx, prec, ipio2) /*- cc 020130 -*/ + double x[], + y[]; +int e0, nx, prec; +int ipio2[]; /*- cc 020130 -*/ +#endif +{ + int jz, jx, jv, jp, jk, carry, n, iq[20], i, j, k, m, q0, ih; /*- cc 020130 -*/ + double z, fw, f[20], fq[20], q[20]; -/* 80456A20-80456A28 005020 0008+00 1/1 0/0 0/0 .sdata2 @439 */ -SECTION_SDATA2 static f64 lit_439 = 8.0; + /* initialize jk*/ + jk = init_jk[prec]; + jp = jk; -/* 80456A28-80456A30 005028 0008+00 1/1 0/0 0/0 .sdata2 @440 */ -SECTION_SDATA2 static f64 lit_440 = 0.125; + /* determine jx,jv,q0, note that 3>q0 */ + jx = nx - 1; + jv = (e0 - 3) / 24; + if (jv < 0) + jv = 0; + q0 = e0 - 24 * (jv + 1); -/* 80456A30-80456A38 005030 0008+00 1/1 0/0 0/0 .sdata2 @441 */ -SECTION_SDATA2 static f64 lit_441 = 0.5; + /* set up f[0] to f[jx+jk] where f[jx+jk] = ipio2[jv+jk] */ + j = jv - jx; + m = jx + jk; + for (i = 0; i <= m; i++, j++) + f[i] = (j < 0) ? zero : (double)ipio2[j]; -/* 80456A38-80456A40 005038 0008+00 1/1 0/0 0/0 .sdata2 @442 */ -SECTION_SDATA2 static f64 lit_442 = 1.0; + /* compute q[0],q[1],...q[jk] */ + for (i = 0; i <= jk; i++) { + for (j = 0, fw = 0.0; j <= jx; j++) + fw += x[j] * f[jx + i - j]; + q[i] = fw; + } -/* 80456A40-80456A48 005040 0008+00 1/1 0/0 0/0 .sdata2 @445 */ -SECTION_SDATA2 static f64 lit_445 = 4503601774854144.0 /* cast s32 to float */; + jz = jk; +recompute: + /* distill q[] into iq[] reversingly */ + for (i = 0, j = jz, z = q[jz]; j > 0; i++, j--) { + fw = (double)((int)(twon24 * z)); /*- cc 020130 -*/ + iq[i] = (int)(z - two24 * fw); /*- cc 020130 -*/ + z = q[j - 1] + fw; + } -/* 8036AB9C-8036B9F0 3654DC 0E54+00 0/0 1/1 0/0 .text __kernel_rem_pio2 */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __kernel_rem_pio2() { - nofralloc -#include "asm/MSL_C/Math/Double_precision/k_rem_pio2/__kernel_rem_pio2.s" -} -#pragma pop + /* compute n */ + z = ldexp(z, q0); /* actual value of z */ + z -= 8.0 * floor(z * 0.125); /* trim off integer >= 8 */ + n = (int)z; /*- cc 020130 -*/ + z -= (double)n; + ih = 0; + if (q0 > 0) { /* need iq[jz-1] to determine n */ + i = (iq[jz - 1] >> (24 - q0)); + n += i; + iq[jz - 1] -= i << (24 - q0); + ih = iq[jz - 1] >> (23 - q0); + } else if (q0 == 0) + ih = iq[jz - 1] >> 23; + else if (z >= 0.5) + ih = 2; + + if (ih > 0) { /* q > 0.5 */ + n += 1; + carry = 0; + for (i = 0; i < jz; i++) { /* compute 1-q */ + j = iq[i]; + if (carry == 0) { + if (j != 0) { + carry = 1; + iq[i] = 0x1000000 - j; + } + } else + iq[i] = 0xffffff - j; + } + if (q0 > 0) { /* rare case: chance is 1 in 12 */ + switch (q0) { + case 1: + iq[jz - 1] &= 0x7fffff; + break; + case 2: + iq[jz - 1] &= 0x3fffff; + break; + } + } + if (ih == 2) { + z = one - z; + if (carry != 0) + z -= ldexp(one, q0); + } + } + + /* check if recomputation is needed */ + if (z == zero) { + j = 0; + for (i = jz - 1; i >= jk; i--) + j |= iq[i]; + if (j == 0) { /* need recomputation */ + for (k = 1; iq[jk - k] == 0; k++) + ; /* k = no. of terms needed */ + + for (i = jz + 1; i <= jz + k; i++) { /* add q[jz+1] to q[jz+k] */ + f[jx + i] = (double)ipio2[jv + i]; + for (j = 0, fw = 0.0; j <= jx; j++) + fw += x[j] * f[jx + i - j]; + q[i] = fw; + } + jz += k; + goto recompute; + } + } + + /* chop off zero terms */ + if (z == 0.0) { + jz -= 1; + q0 -= 24; + while (iq[jz] == 0) { + jz--; + q0 -= 24; + } + } else { /* break z into 24-bit if necessary */ + z = ldexp(z, -q0); + if (z >= two24) { + fw = (double)((int)(twon24 * z)); /*- cc 020130 -*/ + iq[jz] = (int)(z - two24 * fw); /*- cc 020130 -*/ + jz += 1; + q0 += 24; + iq[jz] = (int)fw; /*- cc 020130 -*/ + } else + iq[jz] = (int)z; /*- cc 020130 -*/ + } + + /* convert integer "bit" chunk to floating-point value */ + fw = ldexp(one, q0); + for (i = jz; i >= 0; i--) { + q[i] = fw * (double)iq[i]; + fw *= twon24; + } + + /* compute PIo2[0,...,jp]*q[jz,...,0] */ + for (i = jz; i >= 0; i--) { + for (fw = 0.0, k = 0; k <= jp && k <= jz - i; k++) + fw += PIo2[k] * q[i + k]; + fq[jz - i] = fw; + } + + /* compress fq[] into y[] */ + switch (prec) { + case 0: + fw = 0.0; + for (i = jz; i >= 0; i--) + fw += fq[i]; + y[0] = (ih == 0) ? fw : -fw; + break; + case 1: + case 2: + fw = 0.0; + for (i = jz; i >= 0; i--) + fw += fq[i]; + y[0] = (ih == 0) ? fw : -fw; + fw = fq[0] - fw; + for (i = 1; i <= jz; i++) + fw += fq[i]; + y[1] = (ih == 0) ? fw : -fw; + break; + case 3: /* painful */ + for (i = jz; i > 0; i--) { + fw = fq[i - 1] + fq[i]; + fq[i] += fq[i - 1] - fw; + fq[i - 1] = fw; + } + for (i = jz; i > 1; i--) { + fw = fq[i - 1] + fq[i]; + fq[i] += fq[i - 1] - fw; + fq[i - 1] = fw; + } + for (fw = 0.0, i = jz; i >= 2; i--) + fw += fq[i]; + if (ih == 0) { + y[0] = fq[0]; + y[1] = fq[1]; + y[2] = fw; + } else { + y[0] = -fq[0]; + y[1] = -fq[1]; + y[2] = -fw; + } + } + return n & 7; +} \ No newline at end of file diff --git a/libs/MSL_C/Math/Double_precision/k_sin.c b/libs/MSL_C/Math/Double_precision/k_sin.c index 7e4bd136d9..3d18dff320 100644 --- a/libs/MSL_C/Math/Double_precision/k_sin.c +++ b/libs/MSL_C/Math/Double_precision/k_sin.c @@ -1,54 +1,80 @@ -// -// Generated By: dol2asm -// Translation Unit: Math/Double_precision/k_sin -// -#include "MSL_C/Math/Double_precision/k_sin.h" -#include "dol2asm.h" -#include "dolphin/types.h" +/* @(#)k_sin.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ -// -// Forward References: -// +/* __kernel_sin( x, y, iy) + * kernel sin function on [-pi/4, pi/4], pi/4 ~ 0.7854 + * Input x is assumed to be bounded by ~pi/4 in magnitude. + * Input y is the tail of x. + * Input iy indicates whether y is 0. (if iy=0, y assume to be 0). + * + * Algorithm + * 1. Since sin(-x) = -sin(x), we need only to consider positive x. + * 2. if x < 2^-27 (hx<0x3e400000 0), return x with inexact if x!=0. + * 3. sin(x) is approximated by a polynomial of degree 13 on + * [0,pi/4] + * 3 13 + * sin(x) ~ x + S1*x + ... + S6*x + * where + * + * |sin(x) 2 4 6 8 10 12 | -58 + * |----- - (1+S1*x +S2*x +S3*x +S4*x +S5*x +S6*x )| <= 2 + * | x | + * + * 4. sin(x+y) = sin(x) + sin'(x')*y + * ~ sin(x) + (1-x*x/2)*y + * For better accuracy, let + * 3 2 2 2 2 + * r = x *(S2+x *(S3+x *(S4+x *(S5+x *S6)))) + * then 3 2 + * sin(x) = x + (S1*x + (x *(r-y/2)+y)) + */ -void __kernel_sin(); +#include "fdlibm.h" -// -// External References: -// +#ifdef __STDC__ +static const double +#else +static double +#endif + half + = 5.00000000000000000000e-01, /* 0x3FE00000, 0x00000000 */ + S1 = -1.66666666666666324348e-01, /* 0xBFC55555, 0x55555549 */ + S2 = 8.33333333332248946124e-03, /* 0x3F811111, 0x1110F8A6 */ + S3 = -1.98412698298579493134e-04, /* 0xBF2A01A0, 0x19C161D5 */ + S4 = 2.75573137070700676789e-06, /* 0x3EC71DE3, 0x57B1FE7D */ + S5 = -2.50507602534068634195e-08, /* 0xBE5AE5E6, 0x8A2B9CEB */ + S6 = 1.58969099521155010221e-10; /* 0x3DE5D93A, 0x5ACFD57C */ -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80456A48-80456A50 005048 0008+00 1/1 0/0 0/0 .sdata2 @60 */ -SECTION_SDATA2 static f64 lit_60 = 0.00833333333332249; - -/* 80456A50-80456A58 005050 0008+00 1/1 0/0 0/0 .sdata2 @61 */ -SECTION_SDATA2 static f64 lit_61 = -0.0001984126982985795; - -/* 80456A58-80456A60 005058 0008+00 1/1 0/0 0/0 .sdata2 @62 */ -SECTION_SDATA2 static f64 lit_62 = 2.7557313707070068e-06; - -/* 80456A60-80456A68 005060 0008+00 1/1 0/0 0/0 .sdata2 @63 */ -SECTION_SDATA2 static f64 lit_63 = -2.5050760253406863e-08; - -/* 80456A68-80456A70 005068 0008+00 1/1 0/0 0/0 .sdata2 @64 */ -SECTION_SDATA2 static f64 lit_64 = 1.58969099521155e-10; - -/* 80456A70-80456A78 005070 0008+00 1/1 0/0 0/0 .sdata2 @65 */ -SECTION_SDATA2 static f64 lit_65 = -0.16666666666666632; - -/* 80456A78-80456A80 005078 0008+00 1/1 0/0 0/0 .sdata2 @66 */ -SECTION_SDATA2 static f64 lit_66 = 0.5; - -/* 8036B9F0-8036BA90 366330 00A0+00 0/0 2/2 0/0 .text __kernel_sin */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __kernel_sin() { - nofralloc -#include "asm/MSL_C/Math/Double_precision/k_sin/__kernel_sin.s" -} -#pragma pop +#ifdef __STDC__ +double __kernel_sin(double x, double y, int iy) +#else +double __kernel_sin(x, y, iy) double x, y; +int iy; /* iy=0 if y is zero */ +#endif +{ + double z, r, v; + int ix; + ix = __HI(x) & 0x7fffffff; /* high word of x */ + if (ix < 0x3e400000) /* |x| < 2**-27 */ + { + if ((int)x == 0) + return x; + } /* generate inexact */ + z = x * x; + v = z * x; + r = S2 + z * (S3 + z * (S4 + z * (S5 + z * S6))); + if (iy == 0) + return x + v * (S1 + z * r); + else + return x - ((z * (half * y - v * r) - y) - v * S1); +} \ No newline at end of file diff --git a/libs/MSL_C/Math/Double_precision/k_tan.c b/libs/MSL_C/Math/Double_precision/k_tan.c index 04f0eed1b7..973be1c0e3 100644 --- a/libs/MSL_C/Math/Double_precision/k_tan.c +++ b/libs/MSL_C/Math/Double_precision/k_tan.c @@ -1,68 +1,181 @@ +//=========================================================================== // -// Generated By: dol2asm -// Translation Unit: Math/Double_precision/k_tan +// k_tan.c // - -#include "MSL_C/Math/Double_precision/k_tan.h" -#include "dol2asm.h" -#include "dolphin/types.h" - +// Part of the standard mathematical function library // -// Forward References: +//=========================================================================== +//####ECOSGPLCOPYRIGHTBEGIN#### +// ------------------------------------------- +// This file is part of eCos, the Embedded Configurable Operating System. +// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. // - -void __kernel_tan(); - +// eCos is free software; you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free +// Software Foundation; either version 2 or (at your option) any later version. // -// External References: +// eCos is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +// for more details. // - +// You should have received a copy of the GNU General Public License along +// with eCos; if not, write to the Free Software Foundation, Inc., +// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. // -// Declarations: +// As a special exception, if other files instantiate templates or use macros +// or inline functions from this file, or you compile this file and link it +// with other works to produce a work based on this file, this file does not +// by itself cause the resulting work to be covered by the GNU General Public +// License. However the source code for this file must still be made available +// in accordance with section (3) of the GNU General Public License. // +// This exception does not invalidate any other reasons why a work based on +// this file might be covered by the GNU General Public License. +// +// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. +// at http://sources.redhat.com/ecos/ecos-license/ +// ------------------------------------------- +//####ECOSGPLCOPYRIGHTEND#### +//=========================================================================== +//#####DESCRIPTIONBEGIN#### +// +// Author(s): jlarmour +// Contributors: jlarmour +// Date: 1998-02-13 +// Purpose: +// Description: +// Usage: +// +//####DESCRIPTIONEND#### +// +//=========================================================================== -/* ############################################################################################## */ -/* 803A2588-803A25F0 02EBE8 0068+00 1/1 0/0 0/0 .rodata T */ -SECTION_RODATA static u8 const T[104] = { - 0x3F, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x63, 0x3F, 0xC1, 0x11, 0x11, 0x11, 0x10, 0xFE, - 0x7A, 0x3F, 0xAB, 0xA1, 0xBA, 0x1B, 0xB3, 0x41, 0xFE, 0x3F, 0x96, 0x64, 0xF4, 0x84, 0x06, - 0xD6, 0x37, 0x3F, 0x82, 0x26, 0xE3, 0xE9, 0x6E, 0x84, 0x93, 0x3F, 0x6D, 0x6D, 0x22, 0xC9, - 0x56, 0x03, 0x28, 0x3F, 0x57, 0xDB, 0xC8, 0xFE, 0xE0, 0x83, 0x15, 0x3F, 0x43, 0x44, 0xD8, - 0xF2, 0xF2, 0x65, 0x01, 0x3F, 0x30, 0x26, 0xF7, 0x1A, 0x8D, 0x10, 0x68, 0x3F, 0x14, 0x7E, - 0x88, 0xA0, 0x37, 0x92, 0xA6, 0x3F, 0x12, 0xB8, 0x0F, 0x32, 0xF0, 0xA7, 0xE9, 0xBE, 0xF3, - 0x75, 0xCB, 0xDB, 0x60, 0x53, 0x73, 0x3E, 0xFB, 0x2A, 0x70, 0x74, 0xBF, 0x7A, 0xD4, -}; -COMPILER_STRIP_GATE(0x803A2588, &T); +// Derived from code with the following copyright -/* 80456A80-80456A88 005080 0008+00 1/1 0/0 0/0 .sdata2 @94 */ -SECTION_SDATA2 static f64 lit_94 = 1.0; +/* @(#)k_tan.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ -/* 80456A88-80456A90 005088 0008+00 1/1 0/0 0/0 .sdata2 @95 */ -SECTION_SDATA2 static f64 lit_95 = -1.0; +/* __kernel_tan( x, y, k ) + * kernel tan function on [-pi/4, pi/4], pi/4 ~ 0.7854 + * Input x is assumed to be bounded by ~pi/4 in magnitude. + * Input y is the tail of x. + * Input k indicates whether tan (if k=1) or + * -1/tan (if k= -1) is returned. + * + * Algorithm + * 1. Since tan(-x) = -tan(x), we need only to consider positive x. + * 2. if x < 2^-28 (hx<0x3e300000 0), return x with inexact if x!=0. + * 3. tan(x) is approximated by a odd polynomial of degree 27 on + * [0,0.67434] + * 3 27 + * tan(x) ~ x + T1*x + ... + T13*x + * where + * + * |tan(x) 2 4 26 | -59.2 + * |----- - (1+T1*x +T2*x +.... +T13*x )| <= 2 + * | x | + * + * Note: tan(x+y) = tan(x) + tan'(x)*y + * ~ tan(x) + (1+x*x)*y + * Therefore, for better accuracy in computing tan(x+y), let + * 3 2 2 2 2 + * r = x *(T2+x *(T3+x *(...+x *(T12+x *T13)))) + * then + * 3 2 + * tan(x+y) = x + (T1*x + (x *(r+y)+y)) + * + * 4. For x in [0.67434,pi/4], let y = pi/4 - x, then + * tan(x) = tan(pi/4-y) = (1-tan(y))/(1+tan(y)) + * = 1 - 2*(tan(y) - (tan(y)^2)/(1+tan(y))) + */ -/* 80456A90-80456A98 005090 0008+00 1/1 0/0 0/0 .sdata2 @96 */ -SECTION_SDATA2 static f64 lit_96 = 0.7853981633974483; +#include "fdlibm.h" +#include "MSL_C/math.h" +static const double one = 1.00000000000000000000e+00, /* 0x3FF00000, 0x00000000 */ + pio4 = 7.85398163397448278999e-01, /* 0x3FE921FB, 0x54442D18 */ + pio4lo = 3.06161699786838301793e-17, /* 0x3C81A626, 0x33145C07 */ + T[] = { + 3.33333333333334091986e-01, /* 0x3FD55555, 0x55555563 */ + 1.33333333333201242699e-01, /* 0x3FC11111, 0x1110FE7A */ + 5.39682539762260521377e-02, /* 0x3FABA1BA, 0x1BB341FE */ + 2.18694882948595424599e-02, /* 0x3F9664F4, 0x8406D637 */ + 8.86323982359930005737e-03, /* 0x3F8226E3, 0xE96E8493 */ + 3.59207910759131235356e-03, /* 0x3F6D6D22, 0xC9560328 */ + 1.45620945432529025516e-03, /* 0x3F57DBC8, 0xFEE08315 */ + 5.88041240820264096874e-04, /* 0x3F4344D8, 0xF2F26501 */ + 2.46463134818469906812e-04, /* 0x3F3026F7, 0x1A8D1068 */ + 7.81794442939557092300e-05, /* 0x3F147E88, 0xA03792A6 */ + 7.14072491382608190305e-05, /* 0x3F12B80F, 0x32F0A7E9 */ + -1.85586374855275456654e-05, /* 0xBEF375CB, 0xDB605373 */ + 2.59073051863633712884e-05, /* 0x3EFB2A70, 0x74BF7AD4 */ + }; -/* 80456A98-80456AA0 005098 0008+00 1/1 0/0 0/0 .sdata2 @97 */ -SECTION_SDATA2 static f64 lit_97 = 3.061616997868383e-17; - -/* 80456AA0-80456AA8 0050A0 0008+00 1/1 0/0 0/0 .sdata2 @98 */ -SECTION_SDATA2 static u8 lit_98[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 80456AA8-80456AB0 0050A8 0008+00 1/1 0/0 0/0 .sdata2 @99 */ -SECTION_SDATA2 static f64 lit_99 = 2.0; - -/* 80456AB0-80456AB8 0050B0 0008+00 1/1 0/0 0/0 .sdata2 @101 */ -SECTION_SDATA2 static f64 lit_101 = 4503601774854144.0 /* cast s32 to float */; - -/* 8036BA90-8036BCA4 3663D0 0214+00 0/0 1/1 0/0 .text __kernel_tan */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __kernel_tan() { - nofralloc -#include "asm/MSL_C/Math/Double_precision/k_tan/__kernel_tan.s" +double __kernel_tan(double x, double y, int iy) +{ + double z, r, v, w, s; + int ix, hx; + hx = __HI(x); /* high word of x */ + ix = hx & 0x7fffffff; /* high word of |x| */ + if (ix < 0x3e300000) /* x < 2**-28 */ + { + if ((int)x == 0) { /* generate inexact */ + if (((ix | __LO(x)) | (iy + 1)) == 0) { + double ret = fabs(x); + return one / ret; + } else + return (iy == 1) ? x : -one / x; + } + } + if (ix >= 0x3FE59428) { /* |x|>=0.6744 */ + if (hx < 0) { + x = -x; + y = -y; + } + z = pio4 - x; + w = pio4lo - y; + x = z + w; + y = 0.0; + } + z = x * x; + w = z * z; + /* Break x^5*(T[1]+x^2*T[2]+...) into + * x^5(T[1]+x^4*T[3]+...+x^20*T[11]) + + * x^5(x^2*(T[2]+x^4*T[4]+...+x^22*[T12])) + */ + r = T[1] + w * (T[3] + w * (T[5] + w * (T[7] + w * (T[9] + w * T[11])))); + v = z * (T[2] + w * (T[4] + w * (T[6] + w * (T[8] + w * (T[10] + w * T[12]))))); + s = z * x; + r = y + z * (s * (r + v) + y); + r += T[0] * s; + w = x + r; + if (ix >= 0x3FE59428) { + v = (double)iy; + return (double)(1 - ((hx >> 30) & 2)) * (v - 2.0 * (x - (w * w / (w + v) - r))); + } + if (iy == 1) + return w; + else { /* if allow error up to 2 ulp, + simply return -1.0/(x+r) here */ + /* compute -1.0/(x+r) accurately */ + double a, t; + z = w; + __LO(z) = 0; + v = r - (z - x); /* z+v = r+x */ + t = a = -1.0 / w; /* a = -1.0/w */ + __LO(t) = 0; + s = 1.0 + t * z; + return t + a * (s + t * v); + } } -#pragma pop + +// EOF k_tan.c \ No newline at end of file diff --git a/libs/MSL_C/Math/Double_precision/s_atan.c b/libs/MSL_C/Math/Double_precision/s_atan.c index f77db189e7..0f88ef2fc1 100644 --- a/libs/MSL_C/Math/Double_precision/s_atan.c +++ b/libs/MSL_C/Math/Double_precision/s_atan.c @@ -1,79 +1,143 @@ -// -// Generated By: dol2asm -// Translation Unit: Math/Double_precision/s_atan -// -#include "MSL_C/Math/Double_precision/s_atan.h" -#include "dol2asm.h" -#include "dolphin/types.h" +/* @(#)s_atan.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ -// -// Forward References: -// +/* atan(x) + * Method + * 1. Reduce x to positive by atan(x) = -atan(-x). + * 2. According to the integer k=4t+0.25 chopped, t=x, the argument + * is further reduced to one of the following intervals and the + * arctangent of t is evaluated by the corresponding formula: + * + * [0,7/16] atan(x) = t-t^3*(a1+t^2*(a2+...(a10+t^2*a11)...) + * [7/16,11/16] atan(x) = atan(1/2) + atan( (t-0.5)/(1+t/2) ) + * [11/16.19/16] atan(x) = atan( 1 ) + atan( (t-1)/(1+t) ) + * [19/16,39/16] atan(x) = atan(3/2) + atan( (t-1.5)/(1+1.5t) ) + * [39/16,INF] atan(x) = atan(INF) + atan( -1/t ) + * + * Constants: + * The hexadecimal values are the intended ones for the following + * constants. The decimal values may be used, provided that the + * compiler will convert from decimal to binary accurately enough + * to produce the hexadecimal values shown. + */ -void atan(); +#include "fdlibm.h" -// -// External References: -// - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803A25F0-803A2610 02EC50 0020+00 1/1 0/0 0/0 .rodata atanhi */ -SECTION_RODATA static u8 const atanhi[32] = { - 0x3F, 0xDD, 0xAC, 0x67, 0x05, 0x61, 0xBB, 0x4F, 0x3F, 0xE9, 0x21, 0xFB, 0x54, 0x44, 0x2D, 0x18, - 0x3F, 0xEF, 0x73, 0x0B, 0xD2, 0x81, 0xF6, 0x9B, 0x3F, 0xF9, 0x21, 0xFB, 0x54, 0x44, 0x2D, 0x18, +#ifdef __STDC__ +static const double atanhi[] = { +#else +static double atanhi[] = { +#endif + 4.63647609000806093515e-01, /* atan(0.5)hi 0x3FDDAC67, 0x0561BB4F */ + 7.85398163397448278999e-01, /* atan(1.0)hi 0x3FE921FB, 0x54442D18 */ + 9.82793723247329054082e-01, /* atan(1.5)hi 0x3FEF730B, 0xD281F69B */ + 1.57079632679489655800e+00, /* atan(inf)hi 0x3FF921FB, 0x54442D18 */ }; -COMPILER_STRIP_GATE(0x803A25F0, &atanhi); -/* 803A2610-803A2630 02EC70 0020+00 0/1 0/0 0/0 .rodata atanlo */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const atanlo[32] = { - 0x3C, 0x7A, 0x2B, 0x7F, 0x22, 0x2F, 0x65, 0xE2, 0x3C, 0x81, 0xA6, 0x26, 0x33, 0x14, 0x5C, 0x07, - 0x3C, 0x70, 0x07, 0x88, 0x7A, 0xF0, 0xCB, 0xBD, 0x3C, 0x91, 0xA6, 0x26, 0x33, 0x14, 0x5C, 0x07, +#ifdef __STDC__ +static const double atanlo[] = { +#else +static double atanlo[] = { +#endif + 2.26987774529616870924e-17, /* atan(0.5)lo 0x3C7A2B7F, 0x222F65E2 */ + 3.06161699786838301793e-17, /* atan(1.0)lo 0x3C81A626, 0x33145C07 */ + 1.39033110312309984516e-17, /* atan(1.5)lo 0x3C700788, 0x7AF0CBBD */ + 6.12323399573676603587e-17, /* atan(inf)lo 0x3C91A626, 0x33145C07 */ }; -COMPILER_STRIP_GATE(0x803A2610, &atanlo); -#pragma pop -/* 803A2630-803A2688 02EC90 0058+00 0/1 0/0 0/0 .rodata aT */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const aT[88] = { - 0x3F, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x0D, 0xBF, 0xC9, 0x99, 0x99, 0x99, 0x98, 0xEB, - 0xC4, 0x3F, 0xC2, 0x49, 0x24, 0x92, 0x00, 0x83, 0xFF, 0xBF, 0xBC, 0x71, 0xC6, 0xFE, 0x23, - 0x16, 0x71, 0x3F, 0xB7, 0x45, 0xCD, 0xC5, 0x4C, 0x20, 0x6E, 0xBF, 0xB3, 0xB0, 0xF2, 0xAF, - 0x74, 0x9A, 0x6D, 0x3F, 0xB1, 0x0D, 0x66, 0xA0, 0xD0, 0x3D, 0x51, 0xBF, 0xAD, 0xDE, 0x2D, - 0x52, 0xDE, 0xFD, 0x9A, 0x3F, 0xA9, 0x7B, 0x4B, 0x24, 0x76, 0x0D, 0xEB, 0xBF, 0xA2, 0xB4, - 0x44, 0x2C, 0x6A, 0x6C, 0x2F, 0x3F, 0x90, 0xAD, 0x3A, 0xE3, 0x22, 0xDA, 0x11, +#ifdef __STDC__ +static const double aT[] = { +#else +static double aT[] = { +#endif + 3.33333333333329318027e-01, /* 0x3FD55555, 0x5555550D */ + -1.99999999998764832476e-01, /* 0xBFC99999, 0x9998EBC4 */ + 1.42857142725034663711e-01, /* 0x3FC24924, 0x920083FF */ + -1.11111104054623557880e-01, /* 0xBFBC71C6, 0xFE231671 */ + 9.09088713343650656196e-02, /* 0x3FB745CD, 0xC54C206E */ + -7.69187620504482999495e-02, /* 0xBFB3B0F2, 0xAF749A6D */ + 6.66107313738753120669e-02, /* 0x3FB10D66, 0xA0D03D51 */ + -5.83357013379057348645e-02, /* 0xBFADDE2D, 0x52DEFD9A */ + 4.97687799461593236017e-02, /* 0x3FA97B4B, 0x24760DEB */ + -3.65315727442169155270e-02, /* 0xBFA2B444, 0x2C6A6C2F */ + 1.62858201153657823623e-02, /* 0x3F90AD3A, 0xE322DA11 */ }; -COMPILER_STRIP_GATE(0x803A2630, &aT); -#pragma pop -/* 80456AB8-80456AC0 0050B8 0008+00 1/1 0/0 0/0 .sdata2 @115 */ -SECTION_SDATA2 static f64 lit_115 = 1e+300; +#ifdef __STDC__ +static const double +#else +static double +#endif + one + = 1.0, + huge = 1.0e300; -/* 80456AC0-80456AC8 0050C0 0008+00 1/1 0/0 0/0 .sdata2 @116 */ -SECTION_SDATA2 static f64 lit_116 = 1.0; +#ifdef __STDC__ +double atan(double x) +#else +double atan(x) double x; +#endif +{ + double w, s1, s2, z; + int ix, hx, id; -/* 80456AC8-80456AD0 0050C8 0008+00 1/1 0/0 0/0 .sdata2 @117 */ -SECTION_SDATA2 static f64 lit_117 = 2.0; - -/* 80456AD0-80456AD8 0050D0 0008+00 1/1 0/0 0/0 .sdata2 @118 */ -SECTION_SDATA2 static f64 lit_118 = 1.5; - -/* 80456AD8-80456AE0 0050D8 0008+00 1/1 0/0 0/0 .sdata2 @119 */ -SECTION_SDATA2 static f64 lit_119 = -1.0; - -/* 8036BCA4-8036BEBC 3665E4 0218+00 0/0 2/2 0/0 .text atan */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void atan() { - nofralloc -#include "asm/MSL_C/Math/Double_precision/s_atan/atan.s" -} -#pragma pop + hx = __HI(x); + ix = hx & 0x7fffffff; + if (ix >= 0x44100000) { /* if |x| >= 2^66 */ + if (ix > 0x7ff00000 || (ix == 0x7ff00000 && (__LO(x) != 0))) + return x + x; /* NaN */ + if (hx > 0) + return atanhi[3] + atanlo[3]; + else + return -atanhi[3] - atanlo[3]; + } + if (ix < 0x3fdc0000) { /* |x| < 0.4375 */ + if (ix < 0x3e200000) { /* |x| < 2^-29 */ + if (huge + x > one) + return x; /* raise inexact */ + } + id = -1; + } else { + x = __fabs(x); + if (ix < 0x3ff30000) { /* |x| < 1.1875 */ + if (ix < 0x3fe60000) { /* 7/16 <=|x|<11/16 */ + id = 0; + x = (2.0 * x - one) / (2.0 + x); + } else { /* 11/16<=|x|< 19/16 */ + id = 1; + x = (x - one) / (x + one); + } + } else { + if (ix < 0x40038000) { /* |x| < 2.4375 */ + id = 2; + x = (x - 1.5) / (one + 1.5 * x); + } else { /* 2.4375 <= |x| < 2^66 */ + id = 3; + x = -1.0 / x; + } + } + } + /* end of argument reduction */ + z = x * x; + w = z * z; + /* break sum from i=0 to 10 aT[i]z**(i+1) into odd and even poly */ + s1 = z * (aT[0] + w * (aT[2] + w * (aT[4] + w * (aT[6] + w * (aT[8] + w * aT[10]))))); + s2 = w * (aT[1] + w * (aT[3] + w * (aT[5] + w * (aT[7] + w * aT[9])))); + if (id < 0) + return x - x * (s1 + s2); + else { + z = atanhi[id] - ((x * (s1 + s2) - atanlo[id]) - x); + return (hx < 0) ? -z : z; + } +} \ No newline at end of file diff --git a/libs/MSL_C/Math/Double_precision/s_ceil.c b/libs/MSL_C/Math/Double_precision/s_ceil.c index 91d3d34734..d7f8c17d71 100644 --- a/libs/MSL_C/Math/Double_precision/s_ceil.c +++ b/libs/MSL_C/Math/Double_precision/s_ceil.c @@ -34,57 +34,57 @@ double ceil(double x) double ceil(x) double x; #endif { - int i0, i1, j0; - unsigned i, j; - i0 = __HI(x); - i1 = __LO(x); - j0 = ((i0 >> 20) & 0x7ff) - 0x3ff; - if (j0 < 20) { - if (j0 < 0) { /* raise inexact if x != 0 */ - if (huge + x > 0.0) { /* return 0*sign(x) if |x|<1 */ - if (i0 < 0) { - i0 = 0x80000000; - i1 = 0; - } else if ((i0 | i1) != 0) { - i0 = 0x3ff00000; - i1 = 0; - } - } - } else { - i = (0x000fffff) >> j0; - if (((i0 & i) | i1) == 0) - return x; /* x is integral */ - if (huge + x > 0.0) { /* raise inexact flag */ - if (i0 > 0) - i0 += (0x00100000) >> j0; - i0 &= (~i); - i1 = 0; - } - } - } else if (j0 > 51) { - if (j0 == 0x400) - return x + x; /* inf or NaN */ - else - return x; /* x is integral */ - } else { - i = ((unsigned)(0xffffffff)) >> (j0 - 20); - if ((i1 & i) == 0) - return x; /* x is integral */ - if (huge + x > 0.0) { /* raise inexact flag */ - if (i0 > 0) { - if (j0 == 20) - i0 += 1; - else { - j = i1 + (1 << (52 - j0)); - if (j < i1) - i0 += 1; /* got a carry */ - i1 = j; - } - } - i1 &= (~i); - } - } - __HI(x) = i0; - __LO(x) = i1; - return x; + int i0, i1, j0; + unsigned i, j; + i0 = __HI(x); + i1 = __LO(x); + j0 = ((i0 >> 20) & 0x7ff) - 0x3ff; + if (j0 < 20) { + if (j0 < 0) { /* raise inexact if x != 0 */ + if (huge + x > 0.0) { /* return 0*sign(x) if |x|<1 */ + if (i0 < 0) { + i0 = 0x80000000; + i1 = 0; + } else if ((i0 | i1) != 0) { + i0 = 0x3ff00000; + i1 = 0; + } + } + } else { + i = (0x000fffff) >> j0; + if (((i0 & i) | i1) == 0) + return x; /* x is integral */ + if (huge + x > 0.0) { /* raise inexact flag */ + if (i0 > 0) + i0 += (0x00100000) >> j0; + i0 &= (~i); + i1 = 0; + } + } + } else if (j0 > 51) { + if (j0 == 0x400) + return x + x; /* inf or NaN */ + else + return x; /* x is integral */ + } else { + i = ((unsigned)(0xffffffff)) >> (j0 - 20); + if ((i1 & i) == 0) + return x; /* x is integral */ + if (huge + x > 0.0) { /* raise inexact flag */ + if (i0 > 0) { + if (j0 == 20) + i0 += 1; + else { + j = i1 + (1 << (52 - j0)); + if (j < i1) + i0 += 1; /* got a carry */ + i1 = j; + } + } + i1 &= (~i); + } + } + __HI(x) = i0; + __LO(x) = i1; + return x; } \ No newline at end of file diff --git a/libs/MSL_C/Math/Double_precision/s_ldexp.c b/libs/MSL_C/Math/Double_precision/s_ldexp.c index 11de93eec0..ef927feb43 100644 --- a/libs/MSL_C/Math/Double_precision/s_ldexp.c +++ b/libs/MSL_C/Math/Double_precision/s_ldexp.c @@ -1,52 +1,59 @@ -// -// Generated By: dol2asm -// Translation Unit: Math/Double_precision/s_ldexp -// +/* @(#)s_ldexp.c 1.2 95/01/04 */ +/* $Id: s_ldexp.c,v 1.3.14.1 2002/01/31 15:24:14 ceciliar Exp $ */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunPro, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ -#include "MSL_C/Math/Double_precision/s_ldexp.h" -#include "dol2asm.h" -#include "dolphin/types.h" +#include "fdlibm.h" +#include "MSL_C/math.h" /* for isfinite macro */ +static const double -// -// Forward References: -// + two54 + = 1.80143985094819840000e+16, /* 0x43500000, 0x00000000 */ + twom54 = 5.55111512312578270212e-17, /* 0x3C900000, 0x00000000 */ + big = 1.0e+300, tiny = 1.0e-300; -void ldexp(); +double ldexp(double x, int n) +{ + s32 k, hx, lx; /*- cc 020130 -*/ + if (!isfinite(x) || x == 0.0) + return x; -// -// External References: -// - -void copysign(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80456B10-80456B18 005110 0008+00 1/1 0/0 0/0 .sdata2 @91 */ -SECTION_SDATA2 static u8 lit_91[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 80456B18-80456B20 005118 0008+00 1/1 0/0 0/0 .sdata2 @92 */ -SECTION_SDATA2 static f64 lit_92 = 1.8014398509481984e+16; - -/* 80456B20-80456B28 005120 0008+00 1/1 0/0 0/0 .sdata2 @93 */ -SECTION_SDATA2 static f64 lit_93 = 1e-300; - -/* 80456B28-80456B30 005128 0008+00 1/1 0/0 0/0 .sdata2 @94 */ -SECTION_SDATA2 static f64 lit_94 = 1e+300; - -/* 80456B30-80456B38 005130 0008+00 1/1 0/0 0/0 .sdata2 @95 */ -SECTION_SDATA2 static f64 lit_95 = 5.551115123125783e-17; - -/* 8036C2D0-8036C494 366C10 01C4+00 0/0 3/3 0/0 .text ldexp */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void ldexp() { - nofralloc -#include "asm/MSL_C/Math/Double_precision/s_ldexp/ldexp.s" -} -#pragma pop + hx = __HI(x); + lx = __LO(x); + k = (hx & 0x7ff00000) >> 20; /* extract exponent */ + if (k == 0) { /* 0 or subnormal x */ + if ((lx | (hx & 0x7fffffff)) == 0) + return x; /* +-0 */ + x *= two54; + hx = __HI(x); + k = ((hx & 0x7ff00000) >> 20) - 54; + if (n < -50000) + return tiny * x; /*underflow*/ + } + if (k == 0x7ff) + return x + x; /* NaN or Inf */ + k = k + n; + if (k > 0x7fe) + return big * copysign(big, x); /* overflow */ + if (k > 0) /* normal result */ + { + __HI(x) = (hx & 0x800fffff) | (k << 20); + return x; + } + if (k <= -54) + if (n > 50000) /* in case integer overflow in n+k */ + return big * copysign(big, x); /*overflow*/ + else + return tiny * copysign(tiny, x); /*underflow*/ + k += 54; /* subnormal result */ + __HI(x) = (hx & 0x800fffff) | (k << 20); + return x * twom54; +} \ No newline at end of file diff --git a/libs/Runtime.PPCEABI.H/CPlusLibPPC.cpp b/libs/Runtime.PPCEABI.H/CPlusLibPPC.cpp index 918645632e..4d775b002f 100644 --- a/libs/Runtime.PPCEABI.H/CPlusLibPPC.cpp +++ b/libs/Runtime.PPCEABI.H/CPlusLibPPC.cpp @@ -1,32 +1,18 @@ -// -// Generated By: dol2asm -// Translation Unit: CPlusLibPPC -// - #include "Runtime.PPCEABI.H/CPlusLibPPC.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void __copy(); - -// -// External References: -// - -// -// Declarations: -// /* 80361C3C-80361C6C 35C57C 0030+00 0/0 0/0 4/4 .text __copy */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __copy() { - nofralloc -#include "asm/Runtime.PPCEABI.H/CPlusLibPPC/__copy.s" +extern "C" void* __copy(char *dest, char *src, size_t size) { + char *p; + + if (dest && size) { + p = dest; + do { + *p = *src; + ++p; + ++src; + --size; + } while (size); + } + + return(dest); } -#pragma pop diff --git a/libs/Runtime.PPCEABI.H/GCN_Mem_Alloc.c b/libs/Runtime.PPCEABI.H/GCN_Mem_Alloc.c new file mode 100644 index 0000000000..b56b0fbc4e --- /dev/null +++ b/libs/Runtime.PPCEABI.H/GCN_Mem_Alloc.c @@ -0,0 +1,36 @@ +/** + * GCN_Mem_Alloc.c + * Description: + */ + +#include "Runtime.PPCEABI.H/GCN_mem_alloc.h" +#include "dolphin/os/OS.h" + +inline static void InitDefaultHeap(void) { + void* arenaLo; + void* arenaHi; + + OSReport("GCN_Mem_Alloc.c : InitDefaultHeap. No Heap Available\n"); + OSReport("Metrowerks CW runtime library initializing default heap\n"); + + arenaLo = OSGetArenaLo(); + arenaHi = OSGetArenaHi(); + + arenaLo = OSInitAlloc(arenaLo, arenaHi, 1); + OSSetArenaLo(arenaLo); + + arenaLo = OSRoundUpPtr(arenaLo, 0x20); + arenaHi = OSRoundDownPtr(arenaHi, 0x20); + + OSSetCurrentHeap(OSCreateHeap(arenaLo, arenaHi)); + OSSetArenaLo(arenaLo = arenaHi); +} + +/* 80362914-803629CC 35D254 00B8+00 0/0 1/1 0/0 .text __sys_free */ +void __sys_free(void* p) { + if (__OSCurrHeap == -1) { + InitDefaultHeap(); + } + + OSFreeToHeap(__OSCurrHeap, p); +} diff --git a/libs/Runtime.PPCEABI.H/GCN_mem_alloc.cpp b/libs/Runtime.PPCEABI.H/GCN_mem_alloc.cpp deleted file mode 100644 index 02c0c4d2f6..0000000000 --- a/libs/Runtime.PPCEABI.H/GCN_mem_alloc.cpp +++ /dev/null @@ -1,175 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: GCN_mem_alloc -// - -#include "Runtime.PPCEABI.H/GCN_mem_alloc.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void __sys_free(); - -// -// External References: -// - -extern "C" void OSReport(); -extern "C" void OSFreeToHeap(); -extern "C" void OSSetCurrentHeap(); -extern "C" void OSInitAlloc(); -extern "C" void OSCreateHeap(); -extern "C" void OSGetArenaHi(); -extern "C" void OSGetArenaLo(); -extern "C" void OSSetArenaLo(); -extern "C" extern u32 __OSCurrHeap[1 + 1 /* padding */]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803A21A8-803A21E0 02E808 0036+02 1/1 0/0 0/0 .rodata @55 */ -SECTION_RODATA static u8 const lit_55[54 + 2 /* padding */] = { - 0x47, - 0x43, - 0x4E, - 0x5F, - 0x4D, - 0x65, - 0x6D, - 0x5F, - 0x41, - 0x6C, - 0x6C, - 0x6F, - 0x63, - 0x2E, - 0x63, - 0x20, - 0x3A, - 0x20, - 0x49, - 0x6E, - 0x69, - 0x74, - 0x44, - 0x65, - 0x66, - 0x61, - 0x75, - 0x6C, - 0x74, - 0x48, - 0x65, - 0x61, - 0x70, - 0x2E, - 0x20, - 0x4E, - 0x6F, - 0x20, - 0x48, - 0x65, - 0x61, - 0x70, - 0x20, - 0x41, - 0x76, - 0x61, - 0x69, - 0x6C, - 0x61, - 0x62, - 0x6C, - 0x65, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x803A21A8, &lit_55); - -/* 803A21E0-803A2220 02E840 0039+07 1/1 0/0 0/0 .rodata @56 */ -SECTION_RODATA static u8 const lit_56[57 + 7 /* padding */] = { - 0x4D, - 0x65, - 0x74, - 0x72, - 0x6F, - 0x77, - 0x65, - 0x72, - 0x6B, - 0x73, - 0x20, - 0x43, - 0x57, - 0x20, - 0x72, - 0x75, - 0x6E, - 0x74, - 0x69, - 0x6D, - 0x65, - 0x20, - 0x6C, - 0x69, - 0x62, - 0x72, - 0x61, - 0x72, - 0x79, - 0x20, - 0x69, - 0x6E, - 0x69, - 0x74, - 0x69, - 0x61, - 0x6C, - 0x69, - 0x7A, - 0x69, - 0x6E, - 0x67, - 0x20, - 0x64, - 0x65, - 0x66, - 0x61, - 0x75, - 0x6C, - 0x74, - 0x20, - 0x68, - 0x65, - 0x61, - 0x70, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x803A21E0, &lit_56); - -/* 80362914-803629CC 35D254 00B8+00 0/0 1/1 0/0 .text __sys_free */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __sys_free() { - nofralloc -#include "asm/Runtime.PPCEABI.H/GCN_mem_alloc/__sys_free.s" -} -#pragma pop diff --git a/libs/Runtime.PPCEABI.H/Makefile b/libs/Runtime.PPCEABI.H/Makefile index ef6d4d7d73..1bb02dc552 100644 --- a/libs/Runtime.PPCEABI.H/Makefile +++ b/libs/Runtime.PPCEABI.H/Makefile @@ -3,15 +3,15 @@ # LIBRUNTIME_PPCEABI_H_A_CPP_FILES := \ - libs/Runtime.PPCEABI.H/__va_arg.cpp \ + libs/Runtime.PPCEABI.H/__va_arg.c \ libs/Runtime.PPCEABI.H/global_destructor_chain.cpp \ libs/Runtime.PPCEABI.H/CPlusLibPPC.cpp \ libs/Runtime.PPCEABI.H/NMWException.cpp \ - libs/Runtime.PPCEABI.H/ptmf.cpp \ + libs/Runtime.PPCEABI.H/ptmf.c \ libs/Runtime.PPCEABI.H/runtime.cpp \ libs/Runtime.PPCEABI.H/__init_cpp_exceptions.cpp \ libs/Runtime.PPCEABI.H/Gecko_ExceptionPPC.cpp \ - libs/Runtime.PPCEABI.H/GCN_mem_alloc.cpp \ + libs/Runtime.PPCEABI.H/GCN_Mem_Alloc.c \ LIBRUNTIME_PPCEABI_H_A_O_FILES := \ $(BUILD_DIR)/libs/Runtime.PPCEABI.H/__va_arg.o \ @@ -22,9 +22,10 @@ LIBRUNTIME_PPCEABI_H_A_O_FILES := \ $(BUILD_DIR)/libs/Runtime.PPCEABI.H/runtime.o \ $(BUILD_DIR)/libs/Runtime.PPCEABI.H/__init_cpp_exceptions.o \ $(BUILD_DIR)/libs/Runtime.PPCEABI.H/Gecko_ExceptionPPC.o \ - $(BUILD_DIR)/libs/Runtime.PPCEABI.H/GCN_mem_alloc.o \ + $(BUILD_DIR)/libs/Runtime.PPCEABI.H/GCN_Mem_Alloc.o \ LIBRUNTIME_PPCEABI_H_A_CFLAGS := \ + -O4,p \ LIBRUNTIME_PPCEABI_H_A_LDFLAGS := \ -nodefaults \ @@ -32,6 +33,10 @@ LIBRUNTIME_PPCEABI_H_A_LDFLAGS := \ -proc gekko \ -linkmode moreram \ +$(BUILD_DIR)/libs/Runtime.PPCEABI.H/GCN_Mem_Alloc.o: CFLAGS := -Cpp_exceptions off -proc gekko -fp hard -O4,p -nodefaults -str readonly -RTTI off -maxerrors 5 -enum int $(INCLUDES) -lang=c +$(BUILD_DIR)/libs/Runtime.PPCEABI.H/__va_arg.o: CFLAGS := -Cpp_exceptions off -proc gekko -fp hard -O4,p -nodefaults -str pool,readonly,reuse -RTTI off -maxerrors 5 -enum int $(INCLUDES) -lang=c + + $(BUILD_DIR)/libRuntime.PPCEABI.H.a: $(LIBRUNTIME_PPCEABI_H_A_O_FILES) @echo linking... $(BUILD_DIR)/libRuntime.PPCEABI.H.a @echo $(LIBRUNTIME_PPCEABI_H_A_O_FILES) > build/LIBRUNTIME_PPCEABI_H_A_ofiles @@ -43,3 +48,8 @@ $(BUILD_DIR)/libs/Runtime.PPCEABI.H/%.o: libs/Runtime.PPCEABI.H/%.cpp @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp @$(CC) $(CFLAGS) $(LIBRUNTIME_PPCEABI_H_A_CFLAGS) -c -o $@ $(basename $@).cpp +$(BUILD_DIR)/libs/Runtime.PPCEABI.H/%.o: libs/Runtime.PPCEABI.H/%.c + @mkdir -p $(@D) + @echo building... $< + @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c + @$(CC) $(CFLAGS) -c -o $@ $(basename $@).c diff --git a/libs/Runtime.PPCEABI.H/__init_cpp_exceptions.cpp b/libs/Runtime.PPCEABI.H/__init_cpp_exceptions.cpp index 5cfd89a6ed..f50a546019 100644 --- a/libs/Runtime.PPCEABI.H/__init_cpp_exceptions.cpp +++ b/libs/Runtime.PPCEABI.H/__init_cpp_exceptions.cpp @@ -52,11 +52,7 @@ SECTION_DTORS15 extern void* const __dtors_null_terminator = (void*)NULL; /* ############################################################################################## */ /* 80450AD0-80450AD8 000550 0004+04 2/2 0/0 0/0 .sdata fragmentID */ -SECTION_SDATA static u32 fragmentID[1 + 1 /* padding */] = { - 0xFFFFFFFE, - /* padding */ - 0x00000000, -}; +SECTION_SDATA static int fragmentID = -2; /* 8036283C-80362870 35D17C 0034+00 1/0 1/0 0/0 .text __fini_cpp_exceptions */ #pragma push diff --git a/libs/Runtime.PPCEABI.H/__va_arg.c b/libs/Runtime.PPCEABI.H/__va_arg.c new file mode 100644 index 0000000000..c6e8bc63d8 --- /dev/null +++ b/libs/Runtime.PPCEABI.H/__va_arg.c @@ -0,0 +1,50 @@ +#include "Runtime.PPCEABI.H/__va_arg.h" + +#undef __va_arg + +/* 80361B14-80361BDC 35C454 00C8+00 0/0 3/3 0/0 .text __va_arg */ +void* __va_arg(_va_list_struct* list, int type) { + char* addr; + char* reg = &(list->gpr); + int g_reg = list->gpr; + int maxsize = 8; + int size = 4; + int increment = 1; + int even = 0; + int fpr_offset = 0; + int regsize = 4; + + if (type == 3) { + reg = &(list->fpr); + g_reg = list->fpr; + size = 8; + fpr_offset = 32; + regsize = 8; + } + + if (type == 2) { + size = 8; + maxsize--; + if (g_reg & 1) { + even = 1; + } + increment = 2; + } + + if (g_reg < maxsize) { + g_reg += even; + addr = list->reg_save_area + fpr_offset + (g_reg * regsize); + *reg = g_reg + increment; + } else { + *reg = 8; + addr = list->input_arg_area; + addr = (char*)(((u32)(addr) + ((size)-1)) & ~((size)-1)); + list->input_arg_area = addr + size; + } + + if (type == 0) { + addr = *((char**)addr); + } + + return addr; +} diff --git a/libs/Runtime.PPCEABI.H/__va_arg.cpp b/libs/Runtime.PPCEABI.H/__va_arg.cpp deleted file mode 100644 index 968677be65..0000000000 --- a/libs/Runtime.PPCEABI.H/__va_arg.cpp +++ /dev/null @@ -1,32 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: __va_arg -// - -#include "Runtime.PPCEABI.H/__va_arg.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -#undef __va_arg - -// -// Forward References: -// - -// -// External References: -// - -// -// Declarations: -// - -/* 80361B14-80361BDC 35C454 00C8+00 0/0 3/3 0/0 .text __va_arg */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __va_arg(void*, int) { - nofralloc -#include "asm/Runtime.PPCEABI.H/__va_arg/__va_arg.s" -} -#pragma pop diff --git a/libs/Runtime.PPCEABI.H/ptmf.c b/libs/Runtime.PPCEABI.H/ptmf.c new file mode 100644 index 0000000000..28cac8b026 --- /dev/null +++ b/libs/Runtime.PPCEABI.H/ptmf.c @@ -0,0 +1,73 @@ +#include "Runtime.PPCEABI.H/ptmf.h" + +/* ############################################################################################## */ +/* 803A2180-803A2190 02E7E0 000C+04 0/0 23/23 249/249 .rodata __ptmf_null */ +__ptmf const __ptmf_null = { + 0, + 0, + 0, +}; + +/* 80362018-80362048 35C958 0030+00 0/0 10/10 345/345 .text __ptmf_test */ +asm long __ptmf_test(register __ptmf* ptmf) { + // clang-format off + nofralloc + + lwz r5, __ptmf.this_delta(r3) + lwz r6, __ptmf.v_offset(r3) + lwz r7, __ptmf.f_data(r3) + li r3, 1 + cmpwi r5, 0 + cmpwi cr6, r6, 0 + cmpwi cr7, r7, 0 + bnelr + bnelr cr6 + bnelr cr7 + li r3, 0 + blr + // clang-format on +} + +/* 80362048-80362084 35C988 003C+00 0/0 0/0 217/217 .text __ptmf_cmpr */ +asm long __ptmf_cmpr(void) { + // clang-format off + nofralloc + + lwz r5, 0(r3) + lwz r6, 0(r4) + lwz r7, 4(r3) + lwz r8, 4(r4) + lwz r9, 8(r3) + lwz r10, 8(r4) + li r3, 1 + cmpw r5, r6 + cmpw cr6, r7, r8 + cmpw cr7, r9, r10 + bnelr + bnelr cr6 + bnelr cr7 + li r3, 0 + blr + // clang-format on +} + +/* 80362084-803620AC 35C9C4 0028+00 0/0 125/125 741/741 .text __ptmf_scall */ +asm void __ptmf_scall(...) { + // clang-format off + nofralloc + + lwz r0, 0(r12) + lwz r11, 4(r12) + lwz r12, 8(r12) + add r3, r3, r0 + cmpwi r11, 0 + blt lbl_803620A4 + + lwzx r12, r3, r12 + lwzx r12, r12, r11 + +lbl_803620A4: + mtctr r12 + bctr + // clang-format on +} \ No newline at end of file diff --git a/libs/Runtime.PPCEABI.H/ptmf.cpp b/libs/Runtime.PPCEABI.H/ptmf.cpp deleted file mode 100644 index 56f8a6becf..0000000000 --- a/libs/Runtime.PPCEABI.H/ptmf.cpp +++ /dev/null @@ -1,78 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: ptmf -// - -#include "Runtime.PPCEABI.H/ptmf.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void __ptmf_test(); -extern "C" void __ptmf_cmpr(); -extern "C" void __ptmf_scall(); -extern "C" extern u8 const __ptmf_null[12 + 4 /* padding */]; - -// -// External References: -// - -// -// Declarations: -// - -/* 80362018-80362048 35C958 0030+00 0/0 10/10 345/345 .text __ptmf_test */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __ptmf_test() { - nofralloc -#include "asm/Runtime.PPCEABI.H/ptmf/__ptmf_test.s" -} -#pragma pop - -/* 80362048-80362084 35C988 003C+00 0/0 0/0 217/217 .text __ptmf_cmpr */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __ptmf_cmpr() { - nofralloc -#include "asm/Runtime.PPCEABI.H/ptmf/__ptmf_cmpr.s" -} -#pragma pop - -/* 80362084-803620AC 35C9C4 0028+00 0/0 125/125 741/741 .text __ptmf_scall */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __ptmf_scall() { - nofralloc -#include "asm/Runtime.PPCEABI.H/ptmf/__ptmf_scall.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 803A2180-803A2190 02E7E0 000C+04 0/0 23/23 249/249 .rodata __ptmf_null */ -SECTION_RODATA extern u8 const __ptmf_null[12 + 4 /* padding */] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x803A2180, &__ptmf_null); diff --git a/libs/SSystem/SComponent/c_bg_s_lin_chk.cpp b/libs/SSystem/SComponent/c_bg_s_lin_chk.cpp index 7789d948c9..94b906a520 100644 --- a/libs/SSystem/SComponent/c_bg_s_lin_chk.cpp +++ b/libs/SSystem/SComponent/c_bg_s_lin_chk.cpp @@ -24,7 +24,7 @@ cBgS_LinChk::~cBgS_LinChk() {} /* 80267E48-80267ED0 262788 0088+00 1/1 0/0 0/0 .text ct__11cBgS_LinChkFv */ void cBgS_LinChk::ct() { cXyz xyz(cXyz::Zero); - mLinP.SetStartEnd(xyz, xyz); + mLin.SetStartEnd(xyz, xyz); field_0x40 = xyz; setActorPid(0xFFFFFFFF); field_0x4c = 0; @@ -34,7 +34,7 @@ void cBgS_LinChk::ct() { /* 80267ED0-80267F40 262810 0070+00 0/0 2/2 0/0 .text Set2__11cBgS_LinChkFPC4cXyzPC4cXyzUi */ void cBgS_LinChk::Set2(cXyz const* pStart, cXyz const* pEnd, unsigned int actorPid) { - mLinP.SetStartEnd(*pStart, *pEnd); + mLin.SetStartEnd(*pStart, *pEnd); field_0x40 = *pEnd; setActorPid(actorPid); field_0x4c &= ~0x10; diff --git a/libs/SSystem/SComponent/c_lib.cpp b/libs/SSystem/SComponent/c_lib.cpp index 69eeddf81a..f789657c2b 100644 --- a/libs/SSystem/SComponent/c_lib.cpp +++ b/libs/SSystem/SComponent/c_lib.cpp @@ -334,7 +334,7 @@ s16 cLib_targetAngleY(const Vec& lhs, const Vec& rhs) { s16 cLib_targetAngleX(cXyz const* param_0, cXyz const* param_1) { cXyz diff = *param_1 - *param_0; f32 f1 = sqrtf(diff.getMagXZ()); - return cM_atan2s(diff.GetY(), f1); + return cM_atan2s(diff.y, f1); } /* 80270DC0-80270E24 26B700 0064+00 0/0 2/2 118/118 .text cLib_offsetPos__FP4cXyzPC4cXyzsPC4cXyz diff --git a/libs/SSystem/SComponent/c_m3d.cpp b/libs/SSystem/SComponent/c_m3d.cpp index 914fb6b6f9..6fd69c5e49 100644 --- a/libs/SSystem/SComponent/c_m3d.cpp +++ b/libs/SSystem/SComponent/c_m3d.cpp @@ -317,17 +317,17 @@ bool cM3d_Cross_AabCyl(const cM3dGAab* pAab, const cM3dGCyl* pCyl) { #ifdef NONMATCHING bool cM3d_Cross_AabSph(const cM3dGAab* pAab, const cM3dGSph* pSph) { f32 radius = pSph->GetR(); - if (pAab->GetMinX() > pSph->GetC().GetX() + radius) { // addition registers are flipped + if (pAab->GetMinX() > pSph->GetC().x + radius) { // addition registers are flipped return false; - } else if (pAab->GetMaxX() < pSph->GetC().GetX() - radius) { + } else if (pAab->GetMaxX() < pSph->GetC().x - radius) { return false; - } else if (pAab->GetMinZ() > pSph->GetC().GetZ() + radius) { + } else if (pAab->GetMinZ() > pSph->GetC().z + radius) { return false; - } else if (pAab->GetMaxZ() < pSph->GetC().GetZ() - radius) { + } else if (pAab->GetMaxZ() < pSph->GetC().z - radius) { return false; - } else if (pAab->GetMinY() > pSph->GetC().GetY() + radius) { + } else if (pAab->GetMinY() > pSph->GetC().y + radius) { return false; - } else if (pAab->GetMaxY() < pSph->GetC().GetY() - radius) { + } else if (pAab->GetMaxY() < pSph->GetC().y - radius) { return false; } else { return true; @@ -564,51 +564,51 @@ asm bool cM3d_Cross_MinMaxBoxLine(Vec const* param_0, Vec const* param_1, Vec co bool cM3d_InclusionCheckPosIn3PosBox3d(const Vec* pVecA, const Vec* pVecB, const Vec* pVecC, const Vec* pVecD, f32 pF) { f32 min, max; - if (pVecA->GetX() < pVecB->GetX()) { - min = pVecA->GetX(); - max = pVecB->GetX(); + if (pVecA->x < pVecB->x) { + min = pVecA->x; + max = pVecB->x; } else { - min = pVecB->GetX(); - max = pVecA->GetX(); + min = pVecB->x; + max = pVecA->x; } - if (min > pVecC->GetX()) { - min = pVecC->GetX(); - } else if (max < pVecC->GetX()) { - max = pVecC->GetX(); + if (min > pVecC->x) { + min = pVecC->x; + } else if (max < pVecC->x) { + max = pVecC->x; } - if (min - pF > pVecD->GetX() || max + pF < pVecD->GetX()) { + if (min - pF > pVecD->x || max + pF < pVecD->x) { return false; } - if (pVecA->GetZ() < pVecB->GetZ()) { - min = pVecA->GetZ(); - max = pVecB->GetZ(); + if (pVecA->z < pVecB->z) { + min = pVecA->z; + max = pVecB->z; } else { - min = pVecB->GetZ(); - max = pVecA->GetZ(); + min = pVecB->z; + max = pVecA->z; } - if (min > pVecC->GetZ()) { - min = pVecC->GetZ(); - } else if (max < pVecC->GetZ()) { - max = pVecC->GetZ(); + if (min > pVecC->z) { + min = pVecC->z; + } else if (max < pVecC->z) { + max = pVecC->z; } - if (min - pF > pVecD->GetZ() || max + pF < pVecD->GetZ()) { + if (min - pF > pVecD->z || max + pF < pVecD->z) { return false; } - if (pVecA->GetY() < pVecB->GetY()) { - min = pVecA->GetY(); - max = pVecB->GetY(); + if (pVecA->y < pVecB->y) { + min = pVecA->y; + max = pVecB->y; } else { - min = pVecB->GetY(); - max = pVecA->GetY(); + min = pVecB->y; + max = pVecA->y; } - if (min > pVecC->GetY()) { - min = pVecC->GetY(); - } else if (max < pVecC->GetY()) { - max = pVecC->GetY(); + if (min > pVecC->y) { + min = pVecC->y; + } else if (max < pVecC->y) { + max = pVecC->y; } - if (min - pF > pVecD->GetY() || max + pF < pVecD->GetY()) { + if (min - pF > pVecD->y || max + pF < pVecD->y) { return false; } return true; diff --git a/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main.cpp b/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main.c similarity index 56% rename from libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main.cpp rename to libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main.c index 32ef6ffef9..6e85dc3925 100644 --- a/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main.cpp +++ b/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main.c @@ -11,38 +11,51 @@ // Forward References: // -extern "C" void ddh_cc_initinterrupts(); -extern "C" void ddh_cc_peek(); -extern "C" void ddh_cc_post_stop(); -extern "C" void ddh_cc_pre_continue(); -extern "C" void ddh_cc_write(); -extern "C" void ddh_cc_read(); -extern "C" bool ddh_cc_close(); -extern "C" void ddh_cc_open(); -extern "C" bool ddh_cc_shutdown(); -extern "C" void ddh_cc_initialize(); +void ddh_cc_initinterrupts(); +void ddh_cc_peek(); +void ddh_cc_post_stop(); +void ddh_cc_pre_continue(); +void ddh_cc_write(); +void ddh_cc_read(); +u8 ddh_cc_close(); +void ddh_cc_open(); +u8 ddh_cc_shutdown(); +void ddh_cc_initialize(); // // External References: // -extern "C" void CircleBufferReadBytes(); -extern "C" void CircleBufferWriteBytes(); -extern "C" void CircleBufferInitialize(); -extern "C" void CBGetBytesAvailableForRead(); -extern "C" void MWTRACE(); -extern "C" void EXI2_Init(); -extern "C" void EXI2_EnableInterrupts(); -extern "C" bool EXI2_Poll(); -extern "C" bool EXI2_ReadN(); -extern "C" bool EXI2_WriteN(); -extern "C" void EXI2_Reserve(); -extern "C" void EXI2_Unreserve(); +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: // +/* ############################################################################################## */ +/* 8044F830-80450030 07C550 0800+00 1/1 0/0 0/0 .bss gRecvBuf */ +static u8 gRecvBuf[2048]; + +/* 80450030-80450050 07CD50 001C+04 3/3 0/0 0/0 .bss gRecvCB */ +static u8 gRecvCB[28 + 4 /* padding */]; + +// copied from pikmin2. should try to find a real fix +static makeMainBSSOrderingWork() { + 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 @@ -53,13 +66,6 @@ asm void ddh_cc_initinterrupts() { } #pragma pop -/* ############################################################################################## */ -/* 8044F830-80450030 07C550 0800+00 1/1 0/0 0/0 .bss gRecvBuf */ -static u8 gRecvBuf[2048]; - -/* 80450030-80450050 07CD50 001C+04 3/3 0/0 0/0 .bss gRecvCB */ -static u8 gRecvCB[28 + 4 /* padding */]; - /* 80372380-803723F0 36CCC0 0070+00 0/0 1/1 0/0 .text ddh_cc_peek */ #pragma push #pragma optimization_level 0 @@ -92,72 +98,20 @@ asm void ddh_cc_pre_continue() { /* ############################################################################################## */ /* 803A2D10-803A2D24 02F370 0014+00 1/1 0/0 0/0 .rodata @318 */ -SECTION_RODATA static u8 const lit_318[20] = { - 0x63, 0x63, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x69, 0x6E, 0x69, - 0x74, 0x69, 0x61, 0x6C, 0x69, 0x7A, 0x65, 0x64, 0x0A, 0x00, -}; +SECTION_RODATA static char const lit_318[] = "cc not initialized\n"; COMPILER_STRIP_GATE(0x803A2D10, &lit_318); /* 803A2D24-803A2D50 02F384 0029+03 0/1 0/0 0/0 .rodata @319 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_319[41 + 3 /* padding */] = { - 0x63, - 0x63, - 0x5F, - 0x77, - 0x72, - 0x69, - 0x74, - 0x65, - 0x20, - 0x3A, - 0x20, - 0x4F, - 0x75, - 0x74, - 0x70, - 0x75, - 0x74, - 0x20, - 0x64, - 0x61, - 0x74, - 0x61, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x78, - 0x20, - 0x25, - 0x6C, - 0x64, - 0x20, - 0x62, - 0x79, - 0x74, - 0x65, - 0x73, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_RODATA static char const lit_319[] = "cc_write : Output data 0x%08x %ld bytes\n"; COMPILER_STRIP_GATE(0x803A2D24, &lit_319); #pragma pop /* 803A2D50-803A2D6C 02F3B0 001C+00 0/1 0/0 0/0 .rodata @320 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_320[28] = { - 0x63, 0x63, 0x5F, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x73, 0x65, 0x6E, 0x64, 0x69, - 0x6E, 0x67, 0x20, 0x25, 0x6C, 0x64, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x0A, 0x00, -}; +SECTION_RODATA static char const lit_320[] = "cc_write sending %ld bytes\n"; COMPILER_STRIP_GATE(0x803A2D50, &lit_320); #pragma pop @@ -176,103 +130,11 @@ asm void ddh_cc_write() { /* ############################################################################################## */ /* 803A2D6C-803A2D94 02F3CC 0025+03 1/1 0/0 0/0 .rodata @342 */ -SECTION_RODATA static u8 const lit_342[37 + 3 /* padding */] = { - 0x45, - 0x78, - 0x70, - 0x65, - 0x63, - 0x74, - 0x65, - 0x64, - 0x20, - 0x70, - 0x61, - 0x63, - 0x6B, - 0x65, - 0x74, - 0x20, - 0x73, - 0x69, - 0x7A, - 0x65, - 0x20, - 0x3A, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x78, - 0x20, - 0x28, - 0x25, - 0x6C, - 0x64, - 0x29, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_RODATA static char const lit_342[] = "Expected packet size : 0x%08x (%ld)\n"; COMPILER_STRIP_GATE(0x803A2D6C, &lit_342); /* 803A2D94-803A2DC4 02F3F4 002D+03 1/1 0/0 0/0 .rodata @343 */ -SECTION_RODATA static u8 const lit_343[45 + 3 /* padding */] = { - 0x63, - 0x63, - 0x5F, - 0x72, - 0x65, - 0x61, - 0x64, - 0x20, - 0x3A, - 0x20, - 0x65, - 0x72, - 0x72, - 0x6F, - 0x72, - 0x20, - 0x72, - 0x65, - 0x61, - 0x64, - 0x69, - 0x6E, - 0x67, - 0x20, - 0x62, - 0x79, - 0x74, - 0x65, - 0x73, - 0x20, - 0x66, - 0x72, - 0x6F, - 0x6D, - 0x20, - 0x45, - 0x58, - 0x49, - 0x32, - 0x20, - 0x25, - 0x6C, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_RODATA static char const lit_343[] = "cc_read : error reading bytes from EXI2 %ld\n"; COMPILER_STRIP_GATE(0x803A2D94, &lit_343); /* 803724F8-803725E4 36CE38 00EC+00 0/0 1/1 0/0 .text ddh_cc_read */ @@ -286,8 +148,8 @@ asm void ddh_cc_read() { #pragma pop /* 803725E4-803725EC 36CF24 0008+00 0/0 1/1 0/0 .text ddh_cc_close */ -bool ddh_cc_close() { - return false; +u8 ddh_cc_close() { + return 0; } /* 803725EC-80372610 36CF2C 0024+00 0/0 1/1 0/0 .text ddh_cc_open */ @@ -301,42 +163,17 @@ asm void ddh_cc_open() { #pragma pop /* 80372610-80372618 36CF50 0008+00 0/0 1/1 0/0 .text ddh_cc_shutdown */ -bool ddh_cc_shutdown() { - return false; +u8 ddh_cc_shutdown() { + return 0; } /* ############################################################################################## */ /* 803A2DC4-803A2DD8 02F424 0013+01 1/1 0/0 0/0 .rodata @349 */ -SECTION_RODATA static u8 const lit_349[19 + 1 /* padding */] = { - 0x43, - 0x41, - 0x4C, - 0x4C, - 0x49, - 0x4E, - 0x47, - 0x20, - 0x45, - 0x58, - 0x49, - 0x32, - 0x5F, - 0x49, - 0x6E, - 0x69, - 0x74, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; +SECTION_RODATA static char const lit_349[] = "CALLING EXI2_Init\n"; COMPILER_STRIP_GATE(0x803A2DC4, &lit_349); /* 803A2DD8-803A2DF0 02F438 0018+00 1/1 0/0 0/0 .rodata @350 */ -SECTION_RODATA static u8 const lit_350[24] = { - 0x44, 0x4F, 0x4E, 0x45, 0x20, 0x43, 0x41, 0x4C, 0x4C, 0x49, 0x4E, 0x47, - 0x20, 0x45, 0x58, 0x49, 0x32, 0x5F, 0x49, 0x6E, 0x69, 0x74, 0x0A, 0x00, -}; +SECTION_RODATA static char const lit_350[] = "DONE CALLING EXI2_Init\n"; COMPILER_STRIP_GATE(0x803A2DD8, &lit_350); /* 80372618-803726A0 36CF58 0088+00 0/0 1/1 0/0 .text ddh_cc_initialize */ diff --git a/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main.cpp b/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main.c similarity index 57% rename from libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main.cpp rename to libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main.c index d962b4cce6..d1d349c3ca 100644 --- a/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main.cpp +++ b/libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main.c @@ -11,38 +11,51 @@ // Forward References: // -extern "C" void gdev_cc_initinterrupts(); -extern "C" void gdev_cc_peek(); -extern "C" void gdev_cc_post_stop(); -extern "C" void gdev_cc_pre_continue(); -extern "C" void gdev_cc_write(); -extern "C" void gdev_cc_read(); -extern "C" bool gdev_cc_close(); -extern "C" void gdev_cc_open(); -extern "C" bool gdev_cc_shutdown(); -extern "C" void gdev_cc_initialize(); +void gdev_cc_initinterrupts(); +void gdev_cc_peek(); +void gdev_cc_post_stop(); +void gdev_cc_pre_continue(); +void gdev_cc_write(); +void gdev_cc_read(); +u8 gdev_cc_close(); +void gdev_cc_open(); +u8 gdev_cc_shutdown(); +void gdev_cc_initialize(); // // External References: // -extern "C" void CircleBufferReadBytes(); -extern "C" void CircleBufferWriteBytes(); -extern "C" void CircleBufferInitialize(); -extern "C" void CBGetBytesAvailableForRead(); -extern "C" void MWTRACE(); -extern "C" void DBClose(); -extern "C" void DBOpen(); -extern "C" void DBWrite(); -extern "C" void DBRead(); -extern "C" void DBQueryData(); -extern "C" void DBInitInterrupts(); -extern "C" void DBInitComm(); +void CircleBufferReadBytes(); +void CircleBufferWriteBytes(); +void CircleBufferInitialize(); +void CBGetBytesAvailableForRead(); +void MWTRACE(); +void DBClose(); +void DBOpen(); +void DBWrite(); +void DBRead(); +void DBQueryData(); +void DBInitInterrupts(); +void DBInitComm(); // // Declarations: // +/* ############################################################################################## */ +/* 80450050-80450550 07CD70 0500+00 1/1 0/0 0/0 .bss gRecvBuf */ +static u8 gRecvBuf[1280]; + +/* 80450550-8045056C 07D270 001C+00 3/3 0/0 0/0 .bss gRecvCB */ +static u8 gRecvCB[28]; + +// copied from pikmin2. should try to find a real fix +static makeMainBSSOrderingWork() { + 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 @@ -53,13 +66,6 @@ asm void gdev_cc_initinterrupts() { } #pragma pop -/* ############################################################################################## */ -/* 80450050-80450550 07CD70 0500+00 1/1 0/0 0/0 .bss gRecvBuf */ -static u8 gRecvBuf[1280]; - -/* 80450550-8045056C 07D270 001C+00 3/3 0/0 0/0 .bss gRecvCB */ -static u8 gRecvCB[28]; - /* 8037292C-8037299C 36D26C 0070+00 0/0 1/1 0/0 .text gdev_cc_peek */ #pragma push #pragma optimization_level 0 @@ -92,72 +98,20 @@ asm void gdev_cc_pre_continue() { /* ############################################################################################## */ /* 803A2DF0-803A2E04 02F450 0014+00 1/1 0/0 0/0 .rodata @318 */ -SECTION_RODATA static u8 const lit_318[20] = { - 0x63, 0x63, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x69, 0x6E, 0x69, - 0x74, 0x69, 0x61, 0x6C, 0x69, 0x7A, 0x65, 0x64, 0x0A, 0x00, -}; +SECTION_RODATA static char const lit_318[] = "cc not initialized\n"; COMPILER_STRIP_GATE(0x803A2DF0, &lit_318); /* 803A2E04-803A2E30 02F464 0029+03 0/1 0/0 0/0 .rodata @319 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_319[41 + 3 /* padding */] = { - 0x63, - 0x63, - 0x5F, - 0x77, - 0x72, - 0x69, - 0x74, - 0x65, - 0x20, - 0x3A, - 0x20, - 0x4F, - 0x75, - 0x74, - 0x70, - 0x75, - 0x74, - 0x20, - 0x64, - 0x61, - 0x74, - 0x61, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x78, - 0x20, - 0x25, - 0x6C, - 0x64, - 0x20, - 0x62, - 0x79, - 0x74, - 0x65, - 0x73, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_RODATA static char const lit_319[] = "cc_write : Output data 0x%08x %ld bytes\n"; COMPILER_STRIP_GATE(0x803A2E04, &lit_319); #pragma pop /* 803A2E30-803A2E4C 02F490 001C+00 0/1 0/0 0/0 .rodata @320 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_320[28] = { - 0x63, 0x63, 0x5F, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x73, 0x65, 0x6E, 0x64, 0x69, - 0x6E, 0x67, 0x20, 0x25, 0x6C, 0x64, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x0A, 0x00, -}; +SECTION_RODATA static u8 const lit_320[] = "cc_write sending %ld bytes\n"; COMPILER_STRIP_GATE(0x803A2E30, &lit_320); #pragma pop @@ -176,103 +130,11 @@ asm void gdev_cc_write() { /* ############################################################################################## */ /* 803A2E4C-803A2E74 02F4AC 0025+03 1/1 0/0 0/0 .rodata @341 */ -SECTION_RODATA static u8 const lit_341[37 + 3 /* padding */] = { - 0x45, - 0x78, - 0x70, - 0x65, - 0x63, - 0x74, - 0x65, - 0x64, - 0x20, - 0x70, - 0x61, - 0x63, - 0x6B, - 0x65, - 0x74, - 0x20, - 0x73, - 0x69, - 0x7A, - 0x65, - 0x20, - 0x3A, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x78, - 0x20, - 0x28, - 0x25, - 0x6C, - 0x64, - 0x29, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_RODATA static char const lit_341[] = "Expected packet size : 0x%08x (%ld)\n"; COMPILER_STRIP_GATE(0x803A2E4C, &lit_341); /* 803A2E74-803A2EA4 02F4D4 002D+03 1/1 0/0 0/0 .rodata @342 */ -SECTION_RODATA static u8 const lit_342[45 + 3 /* padding */] = { - 0x63, - 0x63, - 0x5F, - 0x72, - 0x65, - 0x61, - 0x64, - 0x20, - 0x3A, - 0x20, - 0x65, - 0x72, - 0x72, - 0x6F, - 0x72, - 0x20, - 0x72, - 0x65, - 0x61, - 0x64, - 0x69, - 0x6E, - 0x67, - 0x20, - 0x62, - 0x79, - 0x74, - 0x65, - 0x73, - 0x20, - 0x66, - 0x72, - 0x6F, - 0x6D, - 0x20, - 0x45, - 0x58, - 0x49, - 0x32, - 0x20, - 0x25, - 0x6C, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_RODATA static char const lit_342[] = "cc_read : error reading bytes from EXI2 %ld\n"; COMPILER_STRIP_GATE(0x803A2E74, &lit_342); /* 80372AA4-80372B98 36D3E4 00F4+00 0/0 1/1 0/0 .text gdev_cc_read */ @@ -286,8 +148,8 @@ asm void gdev_cc_read() { #pragma pop /* 80372B98-80372BA0 36D4D8 0008+00 0/0 1/1 0/0 .text gdev_cc_close */ -bool gdev_cc_close() { - return false; +u8 gdev_cc_close() { + return 0; } /* 80372BA0-80372BC4 36D4E0 0024+00 0/0 1/1 0/0 .text gdev_cc_open */ @@ -301,42 +163,17 @@ asm void gdev_cc_open() { #pragma pop /* 80372BC4-80372BCC 36D504 0008+00 0/0 1/1 0/0 .text gdev_cc_shutdown */ -bool gdev_cc_shutdown() { - return false; +u8 gdev_cc_shutdown() { + return 0; } /* ############################################################################################## */ /* 803A2EA4-803A2EB8 02F504 0013+01 1/1 0/0 0/0 .rodata @348 */ -SECTION_RODATA static u8 const lit_348[19 + 1 /* padding */] = { - 0x43, - 0x41, - 0x4C, - 0x4C, - 0x49, - 0x4E, - 0x47, - 0x20, - 0x45, - 0x58, - 0x49, - 0x32, - 0x5F, - 0x49, - 0x6E, - 0x69, - 0x74, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; +SECTION_RODATA static char const lit_348[] = "CALLING EXI2_Init\n"; COMPILER_STRIP_GATE(0x803A2EA4, &lit_348); /* 803A2EB8-803A2ED0 02F518 0018+00 1/1 0/0 0/0 .rodata @349 */ -SECTION_RODATA static u8 const lit_349[24] = { - 0x44, 0x4F, 0x4E, 0x45, 0x20, 0x43, 0x41, 0x4C, 0x4C, 0x49, 0x4E, 0x47, - 0x20, 0x45, 0x58, 0x49, 0x32, 0x5F, 0x49, 0x6E, 0x69, 0x74, 0x0A, 0x00, -}; +SECTION_RODATA static char const lit_349[] = "DONE CALLING EXI2_Init\n"; COMPILER_STRIP_GATE(0x803A2EB8, &lit_349); /* 80372BCC-80372C54 36D50C 0088+00 0/0 1/1 0/0 .text gdev_cc_initialize */ diff --git a/libs/TRK_MINNOW_DOLPHIN/Makefile b/libs/TRK_MINNOW_DOLPHIN/Makefile index 525f37c7ed..a53fe1194e 100644 --- a/libs/TRK_MINNOW_DOLPHIN/Makefile +++ b/libs/TRK_MINNOW_DOLPHIN/Makefile @@ -3,35 +3,35 @@ # LIBTRK_MINNOW_DOLPHIN_A_CPP_FILES := \ - libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop.cpp \ - libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.cpp \ - libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.cpp \ - libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.cpp \ - libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.cpp \ - libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.cpp \ - libs/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.cpp \ - libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.cpp \ - libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.cpp \ - libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.cpp \ - libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.cpp \ - libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/notify.cpp \ - libs/TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.cpp \ - libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.cpp \ - libs/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.cpp \ - libs/TRK_MINNOW_DOLPHIN/ppc/Export/targsupp.cpp \ - libs/TRK_MINNOW_DOLPHIN/ppc/Generic/mpc_7xx_603e.cpp \ - libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.cpp \ - libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.cpp \ - libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.cpp \ - libs/TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.cpp \ - libs/TRK_MINNOW_DOLPHIN/Os/dolphin/target_options.cpp \ - libs/TRK_MINNOW_DOLPHIN/MetroTRK/Export/mslsupp.cpp \ - libs/TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.cpp \ - libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main.cpp \ - libs/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer.cpp \ - libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main.cpp \ - libs/TRK_MINNOW_DOLPHIN/utils/common/MWTrace.cpp \ - libs/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc.cpp \ + libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop.c \ + libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.c \ + libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.c \ + libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.c \ + libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.c \ + libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.c \ + libs/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.c \ + libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.c \ + libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.c \ + libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.c \ + libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.c \ + libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/notify.c \ + libs/TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.c \ + libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.c \ + libs/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.c \ + libs/TRK_MINNOW_DOLPHIN/ppc/Export/targsupp.c \ + libs/TRK_MINNOW_DOLPHIN/ppc/Generic/mpc_7xx_603e.c \ + libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.c \ + libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.c \ + libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.c \ + libs/TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.c \ + libs/TRK_MINNOW_DOLPHIN/Os/dolphin/target_options.c \ + libs/TRK_MINNOW_DOLPHIN/MetroTRK/Export/mslsupp.c \ + libs/TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.c \ + libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_DDH_GCN/main.c \ + libs/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer.c \ + libs/TRK_MINNOW_DOLPHIN/GCN/EXI2_GDEV_GCN/main.c \ + libs/TRK_MINNOW_DOLPHIN/utils/common/MWTrace.c \ + libs/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc.c \ LIBTRK_MINNOW_DOLPHIN_A_O_FILES := \ $(BUILD_DIR)/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop.o \ @@ -65,6 +65,9 @@ LIBTRK_MINNOW_DOLPHIN_A_O_FILES := \ $(BUILD_DIR)/libs/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc.o \ LIBTRK_MINNOW_DOLPHIN_A_CFLAGS := \ + -O4,p \ + -lang=c \ + -rostr LIBTRK_MINNOW_DOLPHIN_A_LDFLAGS := \ -nodefaults \ @@ -72,14 +75,15 @@ LIBTRK_MINNOW_DOLPHIN_A_LDFLAGS := \ -proc gekko \ -linkmode moreram \ +$(BUILD_DIR)/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.o: CFLAGS := -Cpp_exceptions off -proc gekko -fp hard -O4,p -nodefaults -str reuse -RTTI off -maxerrors 5 -enum int $(INCLUDES) -lang=c + $(BUILD_DIR)/libTRK_MINNOW_DOLPHIN.a: $(LIBTRK_MINNOW_DOLPHIN_A_O_FILES) @echo linking... $(BUILD_DIR)/libTRK_MINNOW_DOLPHIN.a @echo $(LIBTRK_MINNOW_DOLPHIN_A_O_FILES) > build/LIBTRK_MINNOW_DOLPHIN_A_ofiles @$(LD) -xm l $(LIBTRK_MINNOW_DOLPHIN_A_LDFLAGS) -o $(BUILD_DIR)/libTRK_MINNOW_DOLPHIN.a @build/LIBTRK_MINNOW_DOLPHIN_A_ofiles -$(BUILD_DIR)/libs/TRK_MINNOW_DOLPHIN/%.o: libs/TRK_MINNOW_DOLPHIN/%.cpp +$(BUILD_DIR)/libs/TRK_MINNOW_DOLPHIN/%.o: libs/TRK_MINNOW_DOLPHIN/%.c @mkdir -p $(@D) @echo building... $< - @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp - @$(CC) $(CFLAGS) $(LIBTRK_MINNOW_DOLPHIN_A_CFLAGS) -c -o $@ $(basename $@).cpp - + @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c + @$(CC) $(CFLAGS) $(LIBTRK_MINNOW_DOLPHIN_A_CFLAGS) -c -o $@ $(basename $@).c diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Export/mslsupp.cpp b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Export/mslsupp.c similarity index 82% rename from libs/TRK_MINNOW_DOLPHIN/MetroTRK/Export/mslsupp.cpp rename to libs/TRK_MINNOW_DOLPHIN/MetroTRK/Export/mslsupp.c index 03aa9b01c8..52b5cc51c5 100644 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Export/mslsupp.cpp +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Export/mslsupp.c @@ -11,16 +11,16 @@ // Forward References: // -extern "C" void __TRK_write_console(); -extern "C" void __read_console(); +void __TRK_write_console(); +void __read_console(); // // External References: // -extern "C" void GetTRKConnected(); -extern "C" void TRKAccessFile(); -extern "C" void GetUseSerialIO(); +void GetTRKConnected(); +void TRKAccessFile(); +void GetUseSerialIO(); // // Declarations: diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.c b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.c new file mode 100644 index 0000000000..93a881c070 --- /dev/null +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.c @@ -0,0 +1,70 @@ +/** + * dispatch.c + * Description: + */ + +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h" +#include "TRK_MINNOW_DOLPHIN/utils/common/MWTrace.h" + +/* 8036DB9C-8036DD0C 3684DC 0170+00 1/0 1/1 0/0 .text TRKDispatchMessage */ +s32 TRKDispatchMessage(TRKBuffer* buffer) { + u32 ret; + + ret = 0x500; + TRKSetBufferPosition(buffer, 0); + MWTRACE(1, "Dispatch command 0x%08x\n", buffer->m_buffer[0]); + + switch (buffer->m_buffer[0]) { + case TRK_DISPATCH_CMD_CONNECT: + ret = TRKDoConnect(buffer); + break; + case TRK_DISPATCH_CMD_DISCONNECT: + ret = TRKDoDisconnect(buffer); + break; + case TRK_DISPATCH_CMD_RESET: + ret = TRKDoReset(buffer); + break; + case TRK_DISPATCH_CMD_OVERRIDE: + ret = TRKDoOverride(buffer); + break; + case TRK_DISPATCH_CMD_GETVERSION: + ret = TRKDoVersions(buffer); + break; + case TRK_DISPATCH_CMD_GETSUPPORTMASK: + ret = TRKDoSupportMask(buffer); + break; + case TRK_DISPATCH_CMD_READMEM: + ret = TRKDoReadMemory(buffer); + break; + case TRK_DISPATCH_CMD_WRITEMEM: + ret = TRKDoWriteMemory(buffer); + break; + case TRK_DISPATCH_CMD_READREGS: + ret = TRKDoReadRegisters(buffer); + break; + case TRK_DISPATCH_CMD_WRITEREGS: + ret = TRKDoWriteRegisters(buffer); + break; + case TRK_DISPATCH_CMD_CONTINUE: + ret = TRKDoContinue(buffer); + break; + case TRK_DISPATCH_CMD_STEP: + ret = TRKDoStep(buffer); + break; + case TRK_DISPATCH_CMD_STOP: + ret = TRKDoStop(buffer); + break; + case TRK_DISPATCH_CMD_SETOPTION: + ret = TRKDoSetOption(buffer); + break; + } + + MWTRACE(1, "Dispatch complete err = %ld\n", ret); + return ret; +} + +/* 8036DD0C-8036DD14 36864C 0008+00 0/0 1/1 0/0 .text TRKInitializeDispatcher */ +u8 TRKInitializeDispatcher() { + return 0; +} diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.cpp b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.cpp deleted file mode 100644 index e5408392f7..0000000000 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.cpp +++ /dev/null @@ -1,165 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: MetroTRK/Portable/dispatch -// - -#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void TRKDispatchMessage(); -extern "C" bool TRKInitializeDispatcher(); - -// -// External References: -// - -extern "C" void TRKSetBufferPosition(); -extern "C" void TRKDoSetOption(); -extern "C" void TRKDoStop(); -extern "C" void TRKDoStep(); -extern "C" void TRKDoContinue(); -extern "C" void TRKDoWriteRegisters(); -extern "C" void TRKDoReadRegisters(); -extern "C" void TRKDoWriteMemory(); -extern "C" void TRKDoReadMemory(); -extern "C" bool TRKDoSupportMask(); -extern "C" bool TRKDoVersions(); -extern "C" void TRKDoOverride(); -extern "C" void TRKDoReset(); -extern "C" void TRKDoDisconnect(); -extern "C" void TRKDoConnect(); -extern "C" void MWTRACE(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803A2890-803A28AC 02EEF0 0019+03 1/1 0/0 0/0 .rodata @126 */ -SECTION_RODATA static u8 const lit_126[25 + 3 /* padding */] = { - 0x44, - 0x69, - 0x73, - 0x70, - 0x61, - 0x74, - 0x63, - 0x68, - 0x20, - 0x63, - 0x6F, - 0x6D, - 0x6D, - 0x61, - 0x6E, - 0x64, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x78, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x803A2890, &lit_126); - -/* 803A28AC-803A28D0 02EF0C 001D+07 1/1 0/0 0/0 .rodata @127 */ -SECTION_RODATA static u8 const lit_127[29 + 7 /* padding */] = { - 0x44, - 0x69, - 0x73, - 0x70, - 0x61, - 0x74, - 0x63, - 0x68, - 0x20, - 0x63, - 0x6F, - 0x6D, - 0x70, - 0x6C, - 0x65, - 0x74, - 0x65, - 0x20, - 0x65, - 0x72, - 0x72, - 0x20, - 0x3D, - 0x20, - 0x25, - 0x6C, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x803A28AC, &lit_127); - -/* 803D3190-803D3200 -00001 006C+04 1/1 0/0 0/0 .data @128 */ -SECTION_DATA static void* lit_128[27 + 1 /* padding */] = { - (void*)(((char*)TRKDispatchMessage) + 0x13C), - (void*)(((char*)TRKDispatchMessage) + 0x60), - (void*)(((char*)TRKDispatchMessage) + 0x70), - (void*)(((char*)TRKDispatchMessage) + 0x80), - (void*)(((char*)TRKDispatchMessage) + 0xA0), - (void*)(((char*)TRKDispatchMessage) + 0xB0), - (void*)(((char*)TRKDispatchMessage) + 0x13C), - (void*)(((char*)TRKDispatchMessage) + 0x90), - (void*)(((char*)TRKDispatchMessage) + 0x13C), - (void*)(((char*)TRKDispatchMessage) + 0x13C), - (void*)(((char*)TRKDispatchMessage) + 0x13C), - (void*)(((char*)TRKDispatchMessage) + 0x13C), - (void*)(((char*)TRKDispatchMessage) + 0x13C), - (void*)(((char*)TRKDispatchMessage) + 0x13C), - (void*)(((char*)TRKDispatchMessage) + 0x13C), - (void*)(((char*)TRKDispatchMessage) + 0x13C), - (void*)(((char*)TRKDispatchMessage) + 0xC0), - (void*)(((char*)TRKDispatchMessage) + 0xD0), - (void*)(((char*)TRKDispatchMessage) + 0xE0), - (void*)(((char*)TRKDispatchMessage) + 0xF0), - (void*)(((char*)TRKDispatchMessage) + 0x13C), - (void*)(((char*)TRKDispatchMessage) + 0x13C), - (void*)(((char*)TRKDispatchMessage) + 0x13C), - (void*)(((char*)TRKDispatchMessage) + 0x130), - (void*)(((char*)TRKDispatchMessage) + 0x100), - (void*)(((char*)TRKDispatchMessage) + 0x110), - (void*)(((char*)TRKDispatchMessage) + 0x120), - /* padding */ - NULL, -}; - -/* 8036DB9C-8036DD0C 3684DC 0170+00 1/0 1/1 0/0 .text TRKDispatchMessage */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKDispatchMessage() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch/TRKDispatchMessage.s" -} -#pragma pop - -/* 8036DD0C-8036DD14 36864C 0008+00 0/0 1/1 0/0 .text TRKInitializeDispatcher */ -bool TRKInitializeDispatcher() { - return false; -} diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.c b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.c new file mode 100644 index 0000000000..3ad956fbd0 --- /dev/null +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.c @@ -0,0 +1,27 @@ +/** + * main_TRK.c + * Description: + */ + +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h" +#include "TRK_MINNOW_DOLPHIN/utils/common/MWTrace.h" +#include "dol2asm.h" + +/* 8044F818-8044F820 07C538 0004+04 1/1 0/0 0/0 .bss TRK_mainError */ +SECTION_BSS static s32 TRK_mainError; + +/* 80371B9C-80371BF4 36C4DC 0058+00 0/0 2/2 0/0 .text TRK_main */ +s32 TRK_main(void) { + MWTRACE(1, "TRK_Main \n"); + TRK_mainError = TRKInitializeNub(); + + if (!TRK_mainError) { + TRKNubWelcome(); + TRKNubMainLoop(); + } + + TRK_mainError = TRKTerminateNub(); + return TRK_mainError; +} diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.cpp b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.cpp deleted file mode 100644 index a0ef2082ab..0000000000 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.cpp +++ /dev/null @@ -1,64 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: MetroTRK/Portable/main_TRK -// - -#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void TRK_main(); - -// -// External References: -// - -extern "C" void TRKNubMainLoop(); -extern "C" void TRKNubWelcome(); -extern "C" void TRKTerminateNub(); -extern "C" void TRKInitializeNub(); -extern "C" void MWTRACE(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803A2BF8-803A2C08 02F258 000B+05 1/1 0/0 0/0 .rodata @80 */ -SECTION_RODATA static u8 const lit_80[11 + 5 /* padding */] = { - 0x54, - 0x52, - 0x4B, - 0x5F, - 0x4D, - 0x61, - 0x69, - 0x6E, - 0x20, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x803A2BF8, &lit_80); - -/* 8044F818-8044F820 07C538 0004+04 1/1 0/0 0/0 .bss TRK_mainError */ -SECTION_BSS static u8 TRK_mainError[4 + 4 /* padding */]; - -/* 80371B9C-80371BF4 36C4DC 0058+00 0/0 2/2 0/0 .text TRK_main */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRK_main() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK/TRK_main.s" -} -#pragma pop diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop.cpp b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop.c similarity index 51% rename from libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop.cpp rename to libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop.c index a1259e658b..a136e2c212 100644 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop.cpp +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop.c @@ -7,26 +7,20 @@ #include "dol2asm.h" #include "dolphin/types.h" -// -// Forward References: -// - -extern "C" void TRKNubMainLoop(); - // // External References: // -extern "C" void TRKDestructEvent(); -extern "C" void TRKGetNextEvent(); -extern "C" void TRKGetBuffer(); -extern "C" void TRKGetInput(); -extern "C" void TRKDispatchMessage(); -extern "C" void TRKTargetStopped(); -extern "C" void TRKTargetSupportRequest(); -extern "C" void TRKTargetInterrupt(); -extern "C" void TRKTargetContinue(); -extern "C" extern u8 gTRKInputPendingPtr[4 + 4 /* padding */]; +void TRKDestructEvent(); +void TRKGetNextEvent(); +void TRKGetBuffer(); +void TRKGetInput(); +void TRKDispatchMessage(); +void TRKTargetStopped(); +void TRKTargetSupportRequest(); +void TRKTargetInterrupt(); +void TRKTargetContinue(); +extern u8 gTRKInputPendingPtr[4 + 4 /* padding */]; // // Declarations: @@ -36,7 +30,7 @@ extern "C" extern u8 gTRKInputPendingPtr[4 + 4 /* padding */]; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void TRKNubMainLoop() { +asm void TRKNubMainLoop(void) { nofralloc #include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop/TRKNubMainLoop.s" } diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.c b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.c new file mode 100644 index 0000000000..22bf22e511 --- /dev/null +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.c @@ -0,0 +1,58 @@ +/** + * mem_TRK.c + * Description: + */ + +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h" + +/* 8036F580-8036F638 369EC0 00B8+00 0/0 1/1 0/0 .text TRK_fill_mem */ +void TRK_fill_mem(void* dst, int val, u32 n) { + u32 v, i, j; + v = (u8)val; + + ((u8*)dst) = ((u8*)dst) - 1; + + if (n >= 32) { + i = (~(u32)dst) & 3; + + if (i) { + n -= i; + + do { + *++(((u8*)dst)) = v; + } while (--i); + } + + if (v) + v |= v << 24 | v << 16 | v << 8; + + ((u32*)dst) = ((u32*)(((u8*)dst) + 4)) - 1; + ((u32*)dst) = ((u32*)(((u8*)dst) + 1)) - 1; + + i = n / 32; + + if (i) { + do { + for (j = 0; j < 8; j++) + *++((u32*)dst) = v; + } while (--i); + } + + i = (n / 4) % 8; + + if (i) { + do { + *++((u32*)dst) = v; + } while (--i); + } + + ((u8*)dst) = ((u8*)(((u32*)dst) + 1)) - 1; + + n %= 4; + } + + if (n) + do { + *++((u8*)dst) = v; + } while (--n); +} diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.cpp b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.cpp deleted file mode 100644 index ad6d5cecdc..0000000000 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.cpp +++ /dev/null @@ -1,32 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: MetroTRK/Portable/mem_TRK -// - -#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void TRK_fill_mem(); - -// -// External References: -// - -// -// Declarations: -// - -/* 8036F580-8036F638 369EC0 00B8+00 0/0 1/1 0/0 .text TRK_fill_mem */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRK_fill_mem() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK/TRK_fill_mem.s" -} -#pragma pop diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.c b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.c new file mode 100644 index 0000000000..590c7e1f14 --- /dev/null +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.c @@ -0,0 +1,15 @@ +/** + * msg.c + * Description: + */ + +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h" +#include "TRK_MINNOW_DOLPHIN/utils/common/MWTrace.h" + +/* 8036CFD8-8036D01C 367918 0044+00 0/0 6/6 0/0 .text TRKMessageSend */ +s32 TRKMessageSend(TRK_Msg* msg) { + u32 write_val = TRKWriteUARTN(&msg->m_msg, msg->m_msgLength); + MWTRACE(1, "MessageSend : cc_write returned %ld\n", write_val); + return 0; +} diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.cpp b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.cpp deleted file mode 100644 index c9f077189a..0000000000 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.cpp +++ /dev/null @@ -1,82 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: MetroTRK/Portable/msg -// - -#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void TRKMessageSend(); - -// -// External References: -// - -extern "C" void TRKWriteUARTN(); -extern "C" void MWTRACE(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803A26B8-803A26E0 02ED18 0025+03 1/1 0/0 0/0 .rodata @98 */ -SECTION_RODATA static u8 const lit_98[37 + 3 /* padding */] = { - 0x4D, - 0x65, - 0x73, - 0x73, - 0x61, - 0x67, - 0x65, - 0x53, - 0x65, - 0x6E, - 0x64, - 0x20, - 0x3A, - 0x20, - 0x63, - 0x63, - 0x5F, - 0x77, - 0x72, - 0x69, - 0x74, - 0x65, - 0x20, - 0x72, - 0x65, - 0x74, - 0x75, - 0x72, - 0x6E, - 0x65, - 0x64, - 0x20, - 0x25, - 0x6C, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x803A26B8, &lit_98); - -/* 8036CFD8-8036D01C 367918 0044+00 0/0 6/6 0/0 .text TRKMessageSend */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKMessageSend() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg/TRKMessageSend.s" -} -#pragma pop diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.cpp b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.c similarity index 81% rename from libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.cpp rename to libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.c index ec176bd4bf..c42ce909d5 100644 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.cpp +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.c @@ -11,20 +11,19 @@ // Forward References: // -extern "C" void TRKReadBuffer_ui32(); -extern "C" void TRKReadBuffer_ui8(); -extern "C" void TRKReadBuffer1_ui64(); -extern "C" void TRKAppendBuffer_ui32(); -extern "C" void TRKAppendBuffer_ui8(); -extern "C" void TRKAppendBuffer1_ui64(); -extern "C" void TRKReadBuffer(); -extern "C" void TRKAppendBuffer(); -extern "C" void TRKSetBufferPosition(); -extern "C" void TRKResetBuffer(); -extern "C" void TRKReleaseBuffer(); -extern "C" void TRKGetBuffer(); -extern "C" void TRKGetFreeBuffer(); -extern "C" void TRKInitializeMessageBuffers(); +void TRKReadBuffer_ui32(); +void TRKReadBuffer_ui8(); +void TRKReadBuffer1_ui64(); +void TRKAppendBuffer_ui32(); +void TRKAppendBuffer_ui8(); +void TRKAppendBuffer1_ui64(); +void TRKReadBuffer(); +void TRKAppendBuffer(); +void TRKResetBuffer(); +void TRKReleaseBuffer(); +void TRKGetBuffer(); +void TRKGetFreeBuffer(); +void TRKInitializeMessageBuffers(); // // External References: @@ -32,10 +31,10 @@ extern "C" void TRKInitializeMessageBuffers(); SECTION_INIT void TRK_memset(); SECTION_INIT void TRK_memcpy(); -extern "C" void usr_puts_serial(); -extern "C" bool TRKReleaseMutex(); -extern "C" bool TRKAcquireMutex(); -extern "C" bool TRKInitializeMutex(); +void usr_puts_serial(); +u8 TRKReleaseMutex(); +u8 TRKAcquireMutex(); +u8 TRKInitializeMutex(); SECTION_BSS extern u8 gTRKBigEndian[4 + 4 /* padding */]; // @@ -126,7 +125,7 @@ asm void TRKAppendBuffer() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void TRKSetBufferPosition() { +asm s32 TRKSetBufferPosition(TRKBuffer*, u32) { nofralloc #include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf/TRKSetBufferPosition.s" } @@ -168,41 +167,7 @@ asm void TRKGetBuffer() { /* ############################################################################################## */ /* 803A26E0-803A2700 02ED40 001D+03 1/1 0/0 0/0 .rodata @618 */ -SECTION_RODATA static u8 const lit_618[29 + 3 /* padding */] = { - 0x45, - 0x52, - 0x52, - 0x4F, - 0x52, - 0x20, - 0x3A, - 0x20, - 0x4E, - 0x6F, - 0x20, - 0x62, - 0x75, - 0x66, - 0x66, - 0x65, - 0x72, - 0x20, - 0x61, - 0x76, - 0x61, - 0x69, - 0x6C, - 0x61, - 0x62, - 0x6C, - 0x65, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_RODATA static char const lit_618[] = "ERROR : No buffer available\n"; COMPILER_STRIP_GATE(0x803A26E0, &lit_618); /* 8036D71C-8036D7E4 36805C 00C8+00 0/0 6/6 0/0 .text TRKGetFreeBuffer */ diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.cpp b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.c similarity index 53% rename from libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.cpp rename to libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.c index f0b55bf1fe..0dc5b184d1 100644 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.cpp +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.c @@ -11,23 +11,7 @@ // Forward References: // -extern "C" void TRKDoSetOption(); -extern "C" void TRKDoStop(); -extern "C" void TRKDoStep(); -extern "C" void TRKDoContinue(); -extern "C" void TRKDoWriteRegisters(); -extern "C" void TRKDoReadRegisters(); -extern "C" void TRKDoWriteMemory(); -extern "C" void TRKDoReadMemory(); -extern "C" bool TRKDoSupportMask(); -extern "C" bool TRKDoVersions(); -extern "C" void TRKDoOverride(); -extern "C" void TRKDoReset(); -extern "C" void TRKDoDisconnect(); -extern "C" void TRKDoConnect(); -extern "C" void SetTRKConnected(); -extern "C" void GetTRKConnected(); -extern "C" void OutputData(); +void OutputData(); // // External References: @@ -35,31 +19,30 @@ extern "C" void OutputData(); SECTION_INIT void memset(); SECTION_INIT void __TRK_reset(); -extern "C" void TRKConstructEvent(); -extern "C" void TRKPostEvent(); -extern "C" void TRKMessageSend(); -extern "C" void TRKAppendBuffer_ui8(); -extern "C" void TRKReadBuffer(); -extern "C" void TRKAppendBuffer(); -extern "C" void TRKSetBufferPosition(); -extern "C" void TRKResetBuffer(); -extern "C" void usr_puts_serial(); -extern "C" void TRKTargetAccessARAM(); -extern "C" void TRKTargetStop(); -extern "C" void TRKTargetStopped(); -extern "C" void TRKTargetGetPC(); -extern "C" void TRKTargetStepOutOfRange(); -extern "C" void TRKTargetSingleStep(); -extern "C" void TRKTargetAccessExtended2(); -extern "C" void TRKTargetAccessExtended1(); -extern "C" void TRKTargetAccessFP(); -extern "C" void TRKTargetAccessDefault(); -extern "C" void TRKTargetAccessMemory(); -extern "C" void __TRK_copy_vectors(); -extern "C" void TRKWriteUARTN(); -extern "C" void TRKTargetContinue(); -extern "C" void SetUseSerialIO(); -extern "C" void MWTRACE(); +void TRKConstructEvent(); +void TRKPostEvent(); +void TRKMessageSend(); +void TRKAppendBuffer_ui8(); +void TRKReadBuffer(); +void TRKAppendBuffer(); +void TRKResetBuffer(); +void usr_puts_serial(); +void TRKTargetAccessARAM(); +void TRKTargetStop(); +void TRKTargetStopped(); +void TRKTargetGetPC(); +void TRKTargetStepOutOfRange(); +void TRKTargetSingleStep(); +void TRKTargetAccessExtended2(); +void TRKTargetAccessExtended1(); +void TRKTargetAccessFP(); +void TRKTargetAccessDefault(); +void TRKTargetAccessMemory(); +void __TRK_copy_vectors(); +void TRKWriteUARTN(); +void TRKTargetContinue(); +void SetUseSerialIO(); +void MWTRACE(); // // Declarations: @@ -67,70 +50,20 @@ extern "C" void MWTRACE(); /* ############################################################################################## */ /* 803A28D0-803A28F0 02EF30 001F+01 4/4 0/0 0/0 .rodata @321 */ -SECTION_RODATA static u8 const lit_321[31 + 1 /* padding */] = { - 0x0A, - 0x4D, - 0x65, - 0x74, - 0x72, - 0x6F, - 0x54, - 0x52, - 0x4B, - 0x20, - 0x4F, - 0x70, - 0x74, - 0x69, - 0x6F, - 0x6E, - 0x20, - 0x3A, - 0x20, - 0x53, - 0x65, - 0x72, - 0x69, - 0x61, - 0x6C, - 0x49, - 0x4F, - 0x20, - 0x2D, - 0x20, - 0x00, - /* padding */ - 0x00, -}; +SECTION_RODATA static char const lit_321[] = "\nMetroTRK Option : SerialIO - "; COMPILER_STRIP_GATE(0x803A28D0, &lit_321); /* 803A28F0-803A28F8 02EF50 0008+00 0/1 0/0 0/0 .rodata @322 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_322[8] = { - 0x45, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x0A, 0x00, -}; +SECTION_RODATA static char const lit_322[] = "Enable\n"; COMPILER_STRIP_GATE(0x803A28F0, &lit_322); #pragma pop /* 803A28F8-803A2904 02EF58 0009+03 0/1 0/0 0/0 .rodata @323 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_323[9 + 3 /* padding */] = { - 0x44, - 0x69, - 0x73, - 0x61, - 0x62, - 0x6C, - 0x65, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_RODATA static char const lit_323[] = "Disable\n"; COMPILER_STRIP_GATE(0x803A28F8, &lit_323); #pragma pop @@ -138,7 +71,7 @@ COMPILER_STRIP_GATE(0x803A28F8, &lit_323); #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void TRKDoSetOption() { +asm s32 TRKDoSetOption(TRKBuffer*) { nofralloc #include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/TRKDoSetOption.s" } @@ -148,7 +81,7 @@ asm void TRKDoSetOption() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void TRKDoStop() { +asm s32 TRKDoStop(TRKBuffer*) { nofralloc #include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/TRKDoStop.s" } @@ -158,7 +91,7 @@ asm void TRKDoStop() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void TRKDoStep() { +asm s32 TRKDoStep(TRKBuffer*) { nofralloc #include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/TRKDoStep.s" } @@ -166,16 +99,14 @@ asm void TRKDoStep() { /* ############################################################################################## */ /* 803A2904-803A2910 02EF64 000C+00 1/1 0/0 0/0 .rodata @370 */ -SECTION_RODATA static u8 const lit_370[12] = { - 0x44, 0x6F, 0x43, 0x6F, 0x6E, 0x74, 0x69, 0x6E, 0x75, 0x65, 0x0A, 0x00, -}; +SECTION_RODATA static char const lit_370[] = "DoContinue\n"; COMPILER_STRIP_GATE(0x803A2904, &lit_370); /* 8036E084-8036E134 3689C4 00B0+00 0/0 1/1 0/0 .text TRKDoContinue */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void TRKDoContinue() { +asm s32 TRKDoContinue(TRKBuffer*) { nofralloc #include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/TRKDoContinue.s" } @@ -185,117 +116,23 @@ asm void TRKDoContinue() { /* 803A2910-803A2930 02EF70 001F+01 0/0 0/0 0/0 .rodata @402 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_402[31 + 1 /* padding */] = { - 0x44, - 0x6F, - 0x46, - 0x6C, - 0x75, - 0x73, - 0x68, - 0x43, - 0x61, - 0x63, - 0x68, - 0x65, - 0x20, - 0x75, - 0x6E, - 0x69, - 0x6D, - 0x70, - 0x6C, - 0x65, - 0x6D, - 0x65, - 0x6E, - 0x74, - 0x65, - 0x64, - 0x21, - 0x21, - 0x21, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; +SECTION_RODATA static char const lit_402[] = "DoFlushCache unimplemented!!!\n"; COMPILER_STRIP_GATE(0x803A2910, &lit_402); #pragma pop /* 803A2930-803A2950 02EF90 001F+01 1/4 0/0 0/0 .rodata @403 */ -SECTION_RODATA static u8 const lit_403[31 + 1 /* padding */] = { - 0x53, - 0x65, - 0x6E, - 0x64, - 0x41, - 0x43, - 0x4B, - 0x20, - 0x3A, - 0x20, - 0x43, - 0x61, - 0x6C, - 0x6C, - 0x69, - 0x6E, - 0x67, - 0x20, - 0x4D, - 0x65, - 0x73, - 0x73, - 0x61, - 0x67, - 0x65, - 0x53, - 0x65, - 0x6E, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; +SECTION_RODATA static char const lit_403[] = "SendACK : Calling MessageSend\n"; COMPILER_STRIP_GATE(0x803A2930, &lit_403); /* 803A2950-803A2968 02EFB0 0017+01 1/4 0/0 0/0 .rodata @404 */ -SECTION_RODATA static u8 const lit_404[23 + 1 /* padding */] = { - 0x4D, - 0x65, - 0x73, - 0x73, - 0x61, - 0x67, - 0x65, - 0x53, - 0x65, - 0x6E, - 0x64, - 0x20, - 0x65, - 0x72, - 0x72, - 0x20, - 0x3A, - 0x20, - 0x25, - 0x6C, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; +SECTION_RODATA static char const lit_404[] = "MessageSend err : %ld\n"; COMPILER_STRIP_GATE(0x803A2950, &lit_404); /* 8036E134-8036E3C4 368A74 0290+00 0/0 1/1 0/0 .text TRKDoWriteRegisters */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void TRKDoWriteRegisters() { +asm s32 TRKDoWriteRegisters(TRKBuffer*) { nofralloc #include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/TRKDoWriteRegisters.s" } @@ -305,201 +142,35 @@ asm void TRKDoWriteRegisters() { /* 803A2968-803A2990 02EFC8 0028+00 0/1 0/0 0/0 .rodata @462 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_462[40] = { - 0x44, 0x6F, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x20, 0x3A, 0x20, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6C, 0x65, 0x6E, - 0x67, 0x74, 0x68, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x0A, 0x00, -}; +SECTION_RODATA static char const lit_462[] = "DoReadRegisters : Buffer length 0x%08x\n"; COMPILER_STRIP_GATE(0x803A2968, &lit_462); #pragma pop /* 803A2990-803A29C8 02EFF0 0036+02 0/1 0/0 0/0 .rodata @463 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_463[54 + 2 /* padding */] = { - 0x44, - 0x6F, - 0x52, - 0x65, - 0x61, - 0x64, - 0x52, - 0x65, - 0x67, - 0x69, - 0x73, - 0x74, - 0x65, - 0x72, - 0x73, - 0x20, - 0x3A, - 0x20, - 0x45, - 0x72, - 0x72, - 0x6F, - 0x72, - 0x20, - 0x72, - 0x65, - 0x61, - 0x64, - 0x69, - 0x6E, - 0x67, - 0x20, - 0x20, - 0x64, - 0x65, - 0x66, - 0x61, - 0x75, - 0x6C, - 0x74, - 0x20, - 0x72, - 0x65, - 0x67, - 0x73, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x78, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; +SECTION_RODATA static char const lit_463[] = "DoReadRegisters : Error reading default regs 0x%08x\n"; COMPILER_STRIP_GATE(0x803A2990, &lit_463); #pragma pop /* 803A29C8-803A29F0 02F028 0028+00 0/1 0/0 0/0 .rodata @464 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_464[40] = { - 0x44, 0x6F, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, - 0x73, 0x20, 0x3A, 0x20, 0x45, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x46, 0x50, 0x20, 0x72, - 0x65, 0x67, 0x73, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x0A, 0x00, -}; +SECTION_RODATA static char const lit_464[] = "DoReadRegisters : Error FP regs 0x%08x\n"; COMPILER_STRIP_GATE(0x803A29C8, &lit_464); #pragma pop /* 803A29F0-803A2A20 02F050 002F+01 0/1 0/0 0/0 .rodata @465 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_465[47 + 1 /* padding */] = { - 0x44, - 0x6F, - 0x52, - 0x65, - 0x61, - 0x64, - 0x52, - 0x65, - 0x67, - 0x69, - 0x73, - 0x74, - 0x65, - 0x72, - 0x73, - 0x20, - 0x3A, - 0x20, - 0x45, - 0x72, - 0x72, - 0x6F, - 0x72, - 0x20, - 0x65, - 0x78, - 0x74, - 0x65, - 0x6E, - 0x64, - 0x65, - 0x64, - 0x31, - 0x20, - 0x72, - 0x65, - 0x67, - 0x73, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x78, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; +SECTION_RODATA static char const lit_465[] = "DoReadRegisters : Error extended1 regs 0x%08x\n"; COMPILER_STRIP_GATE(0x803A29F0, &lit_465); #pragma pop /* 803A2A20-803A2A50 02F080 002F+01 0/1 0/0 0/0 .rodata @466 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_466[47 + 1 /* padding */] = { - 0x44, - 0x6F, - 0x52, - 0x65, - 0x61, - 0x64, - 0x52, - 0x65, - 0x67, - 0x69, - 0x73, - 0x74, - 0x65, - 0x72, - 0x73, - 0x20, - 0x3A, - 0x20, - 0x45, - 0x72, - 0x72, - 0x6F, - 0x72, - 0x20, - 0x65, - 0x78, - 0x74, - 0x65, - 0x6E, - 0x64, - 0x65, - 0x64, - 0x32, - 0x20, - 0x72, - 0x65, - 0x67, - 0x73, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x78, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; +SECTION_RODATA static char const lit_466[] = "DoReadRegisters : Error extended2 regs 0x%08x\n"; COMPILER_STRIP_GATE(0x803A2A20, &lit_466); #pragma pop @@ -507,7 +178,7 @@ COMPILER_STRIP_GATE(0x803A2A20, &lit_466); #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void TRKDoReadRegisters() { +asm s32 TRKDoReadRegisters(TRKBuffer*) { nofralloc #include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/TRKDoReadRegisters.s" } @@ -517,57 +188,7 @@ asm void TRKDoReadRegisters() { /* 803A2A50-803A2A80 02F0B0 002D+03 0/1 0/0 0/0 .rodata @498 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_498[45 + 3 /* padding */] = { - 0x57, - 0x72, - 0x69, - 0x74, - 0x65, - 0x4D, - 0x65, - 0x6D, - 0x6F, - 0x72, - 0x79, - 0x20, - 0x28, - 0x30, - 0x78, - 0x25, - 0x30, - 0x32, - 0x78, - 0x29, - 0x20, - 0x3A, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x78, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x78, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x78, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_RODATA static char const lit_498[] = "WriteMemory (0x%02x) : 0x%08x 0x%08x 0x%08x\n"; COMPILER_STRIP_GATE(0x803A2A50, &lit_498); #pragma pop @@ -583,7 +204,7 @@ SECTION_DATA static void* lit_499[7] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void TRKDoWriteMemory() { +asm s32 TRKDoWriteMemory(TRKBuffer*) { nofralloc #include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/TRKDoWriteMemory.s" } @@ -593,11 +214,7 @@ asm void TRKDoWriteMemory() { /* 803A2A80-803A2AAC 02F0E0 002C+00 0/1 0/0 0/0 .rodata @535 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_535[44] = { - 0x52, 0x65, 0x61, 0x64, 0x4D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x28, 0x30, 0x78, 0x25, - 0x30, 0x32, 0x78, 0x29, 0x20, 0x3A, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x20, 0x30, - 0x78, 0x25, 0x30, 0x38, 0x78, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x0A, 0x00, -}; +SECTION_RODATA static char const lit_535[] = "ReadMemory (0x%02x) : 0x%08x 0x%08x 0x%08x\n"; COMPILER_STRIP_GATE(0x803A2A80, &lit_535); #pragma pop @@ -613,27 +230,27 @@ SECTION_DATA static void* lit_536[7] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void TRKDoReadMemory() { +asm s32 TRKDoReadMemory(TRKBuffer*) { nofralloc #include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/TRKDoReadMemory.s" } #pragma pop /* 8036EB24-8036EB2C 369464 0008+00 0/0 1/1 0/0 .text TRKDoSupportMask */ -bool TRKDoSupportMask() { - return false; +s32 TRKDoSupportMask(TRKBuffer*) { + return 0; } /* 8036EB2C-8036EB34 36946C 0008+00 0/0 1/1 0/0 .text TRKDoVersions */ -bool TRKDoVersions() { - return false; +s32 TRKDoVersions(TRKBuffer*) { + return 0; } /* 8036EB34-8036EB8C 369474 0058+00 0/0 1/1 0/0 .text TRKDoOverride */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void TRKDoOverride() { +asm s32 TRKDoOverride(TRKBuffer*) { nofralloc #include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/TRKDoOverride.s" } @@ -643,7 +260,7 @@ asm void TRKDoOverride() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void TRKDoReset() { +asm s32 TRKDoReset(TRKBuffer*) { nofralloc #include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/TRKDoReset.s" } @@ -657,7 +274,7 @@ SECTION_BSS static u8 IsTRKConnected[4 + 4 /* padding */]; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void TRKDoDisconnect() { +asm s32 TRKDoDisconnect(TRKBuffer*) { nofralloc #include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/TRKDoDisconnect.s" } @@ -667,7 +284,7 @@ asm void TRKDoDisconnect() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void TRKDoConnect() { +asm s32 TRKDoConnect(TRKBuffer*) { nofralloc #include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/TRKDoConnect.s" } @@ -677,7 +294,7 @@ asm void TRKDoConnect() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void SetTRKConnected() { +asm void SetTRKConnected(BOOL) { nofralloc #include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/SetTRKConnected.s" } @@ -687,7 +304,7 @@ asm void SetTRKConnected() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GetTRKConnected() { +asm BOOL GetTRKConnected(void) { nofralloc #include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr/GetTRKConnected.s" } @@ -695,25 +312,11 @@ asm void GetTRKConnected() { /* ############################################################################################## */ /* 803A2AAC-803A2AB4 02F10C 0006+02 1/1 0/0 0/0 .rodata @573 */ -SECTION_RODATA static u8 const lit_573[6 + 2 /* padding */] = { - 0x25, - 0x30, - 0x32, - 0x78, - 0x20, - 0x00, - /* padding */ - 0x00, - 0x00, -}; +SECTION_RODATA static char const lit_573[] = "%02x "; COMPILER_STRIP_GATE(0x803A2AAC, &lit_573); /* 803A2AB4-803A2AB8 02F114 0002+02 1/1 0/0 0/0 .rodata @574 */ -SECTION_RODATA static u16 const lit_574[1 + 1 /* padding */] = { - 0x0A00, - /* padding */ - 0x0000, -}; +SECTION_RODATA static char const lit_574[] = "\n"; COMPILER_STRIP_GATE(0x803A2AB4, &lit_574); /* 8036ECDC-8036ED84 36961C 00A8+00 0/0 1/1 0/0 .text OutputData */ diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.c b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.c new file mode 100644 index 0000000000..dc8dc05bb6 --- /dev/null +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.c @@ -0,0 +1,21 @@ +/** + * mutex_TRK.c + * Description: + */ + +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h" + +/* 8036F498-8036F4A0 369DD8 0008+00 0/0 6/6 0/0 .text TRKReleaseMutex */ +u8 TRKReleaseMutex() { + return 0; +} + +/* 8036F4A0-8036F4A8 369DE0 0008+00 0/0 6/6 0/0 .text TRKAcquireMutex */ +u8 TRKAcquireMutex() { + return 0; +} + +/* 8036F4A8-8036F4B0 369DE8 0008+00 0/0 2/2 0/0 .text TRKInitializeMutex */ +u8 TRKInitializeMutex() { + return 0; +} diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.cpp b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.cpp deleted file mode 100644 index c68739b11f..0000000000 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.cpp +++ /dev/null @@ -1,39 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: MetroTRK/Portable/mutex_TRK -// - -#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" bool TRKReleaseMutex(); -extern "C" bool TRKAcquireMutex(); -extern "C" bool TRKInitializeMutex(); - -// -// External References: -// - -// -// Declarations: -// - -/* 8036F498-8036F4A0 369DD8 0008+00 0/0 6/6 0/0 .text TRKReleaseMutex */ -bool TRKReleaseMutex() { - return false; -} - -/* 8036F4A0-8036F4A8 369DE0 0008+00 0/0 6/6 0/0 .text TRKAcquireMutex */ -bool TRKAcquireMutex() { - return false; -} - -/* 8036F4A8-8036F4B0 369DE8 0008+00 0/0 2/2 0/0 .text TRKInitializeMutex */ -bool TRKInitializeMutex() { - return false; -} diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/notify.cpp b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/notify.c similarity index 71% rename from libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/notify.cpp rename to libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/notify.c index 9470a2f196..c2c56c21df 100644 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/notify.cpp +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/notify.c @@ -11,17 +11,17 @@ // Forward References: // -extern "C" void TRKDoNotifyStopped(); +void TRKDoNotifyStopped(); // // External References: // -extern "C" void TRKReleaseBuffer(); -extern "C" void TRKGetFreeBuffer(); -extern "C" void TRKRequestSend(); -extern "C" void TRKTargetAddExceptionInfo(); -extern "C" void TRKTargetAddStopInfo(); +void TRKReleaseBuffer(); +void TRKGetFreeBuffer(); +void TRKRequestSend(); +void TRKTargetAddExceptionInfo(); +void TRKTargetAddStopInfo(); // // Declarations: diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.cpp b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.c similarity index 85% rename from libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.cpp rename to libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.c index dbb5a4a88b..b812ae39b2 100644 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.cpp +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.c @@ -11,21 +11,21 @@ // Forward References: // -extern "C" void TRKDestructEvent(); -extern "C" void TRKConstructEvent(); -extern "C" void TRKPostEvent(); -extern "C" void TRKGetNextEvent(); -extern "C" void TRKInitializeEventQueue(); +void TRKDestructEvent(); +void TRKConstructEvent(); +void TRKPostEvent(); +void TRKGetNextEvent(); +void TRKInitializeEventQueue(); // // External References: // SECTION_INIT void TRK_memcpy(); -extern "C" void TRKReleaseBuffer(); -extern "C" bool TRKReleaseMutex(); -extern "C" bool TRKAcquireMutex(); -extern "C" bool TRKInitializeMutex(); +void TRKReleaseBuffer(); +u8 TRKReleaseMutex(); +u8 TRKAcquireMutex(); +u8 TRKInitializeMutex(); // // Declarations: diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.cpp b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.c similarity index 53% rename from libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.cpp rename to libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.c index 14981865cb..5ccaf088b6 100644 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.cpp +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.c @@ -7,31 +7,23 @@ #include "dol2asm.h" #include "dolphin/types.h" -// -// Forward References: -// - -extern "C" void TRKNubWelcome(); -extern "C" void TRKTerminateNub(); -extern "C" void TRKInitializeNub(); - // // External References: // -extern "C" void TRKInitializeEventQueue(); -extern "C" void TRKInitializeMessageBuffers(); -extern "C" bool TRKTerminateSerialHandler(); -extern "C" void TRKInitializeSerialHandler(); -extern "C" void usr_put_initialize(); -extern "C" bool TRKInitializeDispatcher(); -extern "C" void TRKTargetSetInputPendingPtr(); -extern "C" void TRKInitializeTarget(); -extern "C" void InitializeProgramEndTrap(); -extern "C" void TRK_board_display(); -extern "C" void TRKInitializeIntDrivenUART(); -extern "C" void MWTRACE(); -extern "C" extern u8 gTRKInputPendingPtr[4 + 4 /* padding */]; +void TRKInitializeEventQueue(); +void TRKInitializeMessageBuffers(); +u8 TRKTerminateSerialHandler(); +void TRKInitializeSerialHandler(); +void usr_put_initialize(); +u8 TRKInitializeDispatcher(); +void TRKTargetSetInputPendingPtr(); +void TRKInitializeTarget(); +void InitializeProgramEndTrap(); +void TRK_board_display(); +void TRKInitializeIntDrivenUART(); +void MWTRACE(); +extern u8 gTRKInputPendingPtr[4 + 4 /* padding */]; // // Declarations: @@ -39,44 +31,14 @@ extern "C" extern u8 gTRKInputPendingPtr[4 + 4 /* padding */]; /* ############################################################################################## */ /* 803A2688-803A26A4 02ECE8 001B+01 1/1 0/0 0/0 .rodata @133 */ -SECTION_RODATA static u8 const lit_133[27 + 1 /* padding */] = { - 0x4D, - 0x65, - 0x74, - 0x72, - 0x6F, - 0x54, - 0x52, - 0x4B, - 0x20, - 0x66, - 0x6F, - 0x72, - 0x20, - 0x47, - 0x41, - 0x4D, - 0x45, - 0x43, - 0x55, - 0x42, - 0x45, - 0x20, - 0x76, - 0x32, - 0x2E, - 0x36, - 0x00, - /* padding */ - 0x00, -}; +SECTION_RODATA static char const lit_133[] = "MetroTRK for GAMECUBE v2.6"; COMPILER_STRIP_GATE(0x803A2688, &lit_133); /* 8036CE40-8036CE68 367780 0028+00 0/0 1/1 0/0 .text TRKNubWelcome */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void TRKNubWelcome() { +asm void TRKNubWelcome(void) { nofralloc #include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit/TRKNubWelcome.s" } @@ -86,7 +48,7 @@ asm void TRKNubWelcome() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void TRKTerminateNub() { +asm s32 TRKTerminateNub(void) { nofralloc #include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit/TRKTerminateNub.s" } @@ -94,29 +56,7 @@ asm void TRKTerminateNub() { /* ############################################################################################## */ /* 803A26A4-803A26B8 02ED04 0010+04 1/1 0/0 0/0 .rodata @154 */ -SECTION_RODATA static u8 const lit_154[16 + 4 /* padding */] = { - 0x49, - 0x6E, - 0x69, - 0x74, - 0x69, - 0x61, - 0x6C, - 0x69, - 0x7A, - 0x65, - 0x20, - 0x4E, - 0x55, - 0x42, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, -}; +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 */ @@ -127,7 +67,7 @@ SECTION_BSS u8 gTRKBigEndian[4 + 4 /* padding */]; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void TRKInitializeNub() { +asm s32 TRKInitializeNub(void) { nofralloc #include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit/TRKInitializeNub.s" } diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.c b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.c new file mode 100644 index 0000000000..ba0deef4de --- /dev/null +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.c @@ -0,0 +1,167 @@ +// +// Generated By: dol2asm +// Translation Unit: MetroTRK/Portable/serpoll +// + +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.h" +#include "dol2asm.h" +#include "dolphin/types.h" + +// +// Forward References: +// + +u8 TRKTerminateSerialHandler(); +void TRKInitializeSerialHandler(); +void TRKProcessInput(); +void TRKGetInput(); +void TRKTestForPacket(); +extern u8 gTRKInputPendingPtr[4 + 4 /* padding */]; + +// +// External References: +// + +void TRKConstructEvent(); +void TRKPostEvent(); +void TRKAppendBuffer_ui8(); +void TRKSetBufferPosition(); +void TRKReleaseBuffer(); +void TRKGetBuffer(); +void TRKGetFreeBuffer(); +void TRKReadUARTN(); +void TRKPollUART(); +void MWTRACE(); + +// +// Declarations: +// + +/* 8036D858-8036D860 368198 0008+00 0/0 1/1 0/0 .text TRKTerminateSerialHandler */ +u8 TRKTerminateSerialHandler() { + return 0; +} + +/* ############################################################################################## */ +/* 803A2700-803A2724 02ED60 0022+02 2/2 0/0 0/0 .rodata @121 */ +SECTION_RODATA static char const lit_121[] = "TRK_Packet_Header \t %ld bytes\n"; +COMPILER_STRIP_GATE(0x803A2700, &lit_121); + +/* 803A2724-803A2748 02ED84 0022+02 0/1 0/0 0/0 .rodata @122 */ +#pragma push +#pragma force_active on +SECTION_RODATA static char const lit_122[] = "TRK_CMD_ReadMemory %ld bytes\n"; +COMPILER_STRIP_GATE(0x803A2724, &lit_122); +#pragma pop + +/* 803A2748-803A276C 02EDA8 0022+02 0/1 0/0 0/0 .rodata @123 */ +#pragma push +#pragma force_active on +SECTION_RODATA static char const lit_123[] = "TRK_CMD_WriteMemory %ld bytes\n"; +COMPILER_STRIP_GATE(0x803A2748, &lit_123); +#pragma pop + +/* 803A276C-803A278C 02EDCC 0020+00 0/1 0/0 0/0 .rodata @124 */ +#pragma push +#pragma force_active on +SECTION_RODATA static char const lit_124[] = "TRK_CMD_Connect \t %ld bytes\n"; +COMPILER_STRIP_GATE(0x803A276C, &lit_124); +#pragma pop + +/* 803A278C-803A27AC 02EDEC 0020+00 0/1 0/0 0/0 .rodata @125 */ +#pragma push +#pragma force_active on +SECTION_RODATA static char const lit_125[] = "TRK_CMD_ReplyAck\t %ld bytes\n"; +COMPILER_STRIP_GATE(0x803A278C, &lit_125); +#pragma pop + +/* 803A27AC-803A27D0 02EE0C 0021+03 0/1 0/0 0/0 .rodata @126 */ +#pragma push +#pragma force_active on +SECTION_RODATA static char const lit_126[] = "TRK_CMD_ReadRegisters\t%ld bytes\n"; +COMPILER_STRIP_GATE(0x803A27AC, &lit_126); +#pragma pop + +/* 8044F270-8044F288 07BF90 0014+04 3/3 0/0 0/0 .bss gTRKFramingState */ +static u8 gTRKFramingState[20 + 4 /* padding */]; + +/* 8036D860-8036D924 3681A0 00C4+00 0/0 1/1 0/0 .text TRKInitializeSerialHandler */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void TRKInitializeSerialHandler() { + nofralloc +#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll/TRKInitializeSerialHandler.s" +} +#pragma pop + +/* 8036D924-8036D974 368264 0050+00 0/0 1/1 0/0 .text TRKProcessInput */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void TRKProcessInput() { + nofralloc +#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll/TRKProcessInput.s" +} +#pragma pop + +/* 8036D974-8036D9D4 3682B4 0060+00 0/0 1/1 0/0 .text TRKGetInput */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void TRKGetInput() { + nofralloc +#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll/TRKGetInput.s" +} +#pragma pop + +/* ############################################################################################## */ +/* 803A27D0-803A27F4 02EE30 0024+00 0/1 0/0 0/0 .rodata @146 */ +#pragma push +#pragma force_active on +SECTION_RODATA static char const lit_146[] = "TestForPacket : FreeBuffer is %ld\n"; +COMPILER_STRIP_GATE(0x803A27D0, &lit_146); +#pragma pop + +/* 803A27F4-803A2810 02EE54 001B+01 0/1 0/0 0/0 .rodata @147 */ +#pragma push +#pragma force_active on +SECTION_RODATA static char const lit_147[] = "Reading payload %ld bytes\n"; +COMPILER_STRIP_GATE(0x803A27F4, &lit_147); +#pragma pop + +/* 803A2810-803A2844 02EE70 0031+03 0/1 0/0 0/0 .rodata @148 */ +#pragma push +#pragma force_active on +SECTION_RODATA static char const lit_148[] = "TestForPacket : Invalid size of packet hdr.size\n"; +COMPILER_STRIP_GATE(0x803A2810, &lit_148); +#pragma pop + +/* 803A2844-803A286C 02EEA4 0028+00 0/1 0/0 0/0 .rodata @149 */ +#pragma push +#pragma force_active on +SECTION_RODATA static char const lit_149[] = "TestForPacket : Invalid size of packet\n"; +COMPILER_STRIP_GATE(0x803A2844, &lit_149); +#pragma pop + +/* 803A286C-803A2890 02EECC 001D+07 0/1 0/0 0/0 .rodata @150 */ +#pragma push +#pragma force_active on +SECTION_RODATA static char const lit_150[] = "TestForPacket returning %ld\n"; +COMPILER_STRIP_GATE(0x803A286C, &lit_150); +#pragma pop + +/* 8036D9D4-8036DB10 368314 013C+00 1/1 1/1 0/0 .text TRKTestForPacket */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void TRKTestForPacket() { + nofralloc +#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll/TRKTestForPacket.s" +} +#pragma pop + +/* ############################################################################################## */ +/* 804519B8-804519C0 000EB8 0004+04 0/0 2/2 0/0 .sbss gTRKInputPendingPtr */ +extern u8 gTRKInputPendingPtr[4 + 4 /* padding */]; +u8 gTRKInputPendingPtr[4 + 4 /* padding */]; diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.cpp b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.cpp deleted file mode 100644 index f661ad44ec..0000000000 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.cpp +++ /dev/null @@ -1,455 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: MetroTRK/Portable/serpoll -// - -#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" bool TRKTerminateSerialHandler(); -extern "C" void TRKInitializeSerialHandler(); -extern "C" void TRKProcessInput(); -extern "C" void TRKGetInput(); -extern "C" void TRKTestForPacket(); -extern "C" extern u8 gTRKInputPendingPtr[4 + 4 /* padding */]; - -// -// External References: -// - -extern "C" void TRKConstructEvent(); -extern "C" void TRKPostEvent(); -extern "C" void TRKAppendBuffer_ui8(); -extern "C" void TRKSetBufferPosition(); -extern "C" void TRKReleaseBuffer(); -extern "C" void TRKGetBuffer(); -extern "C" void TRKGetFreeBuffer(); -extern "C" void TRKReadUARTN(); -extern "C" void TRKPollUART(); -extern "C" void MWTRACE(); - -// -// Declarations: -// - -/* 8036D858-8036D860 368198 0008+00 0/0 1/1 0/0 .text TRKTerminateSerialHandler */ -bool TRKTerminateSerialHandler() { - return false; -} - -/* ############################################################################################## */ -/* 803A2700-803A2724 02ED60 0022+02 2/2 0/0 0/0 .rodata @121 */ -SECTION_RODATA static u8 const lit_121[34 + 2 /* padding */] = { - 0x54, - 0x52, - 0x4B, - 0x5F, - 0x50, - 0x61, - 0x63, - 0x6B, - 0x65, - 0x74, - 0x5F, - 0x48, - 0x65, - 0x61, - 0x64, - 0x65, - 0x72, - 0x20, - 0x09, - 0x20, - 0x20, - 0x20, - 0x20, - 0x25, - 0x6C, - 0x64, - 0x20, - 0x62, - 0x79, - 0x74, - 0x65, - 0x73, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x803A2700, &lit_121); - -/* 803A2724-803A2748 02ED84 0022+02 0/1 0/0 0/0 .rodata @122 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_122[34 + 2 /* padding */] = { - 0x54, - 0x52, - 0x4B, - 0x5F, - 0x43, - 0x4D, - 0x44, - 0x5F, - 0x52, - 0x65, - 0x61, - 0x64, - 0x4D, - 0x65, - 0x6D, - 0x6F, - 0x72, - 0x79, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x25, - 0x6C, - 0x64, - 0x20, - 0x62, - 0x79, - 0x74, - 0x65, - 0x73, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x803A2724, &lit_122); -#pragma pop - -/* 803A2748-803A276C 02EDA8 0022+02 0/1 0/0 0/0 .rodata @123 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_123[34 + 2 /* padding */] = { - 0x54, - 0x52, - 0x4B, - 0x5F, - 0x43, - 0x4D, - 0x44, - 0x5F, - 0x57, - 0x72, - 0x69, - 0x74, - 0x65, - 0x4D, - 0x65, - 0x6D, - 0x6F, - 0x72, - 0x79, - 0x20, - 0x20, - 0x20, - 0x20, - 0x25, - 0x6C, - 0x64, - 0x20, - 0x62, - 0x79, - 0x74, - 0x65, - 0x73, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x803A2748, &lit_123); -#pragma pop - -/* 803A276C-803A278C 02EDCC 0020+00 0/1 0/0 0/0 .rodata @124 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_124[32] = { - 0x54, 0x52, 0x4B, 0x5F, 0x43, 0x4D, 0x44, 0x5F, 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x20, - 0x09, 0x20, 0x20, 0x20, 0x20, 0x25, 0x6C, 0x64, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x0A, 0x00, -}; -COMPILER_STRIP_GATE(0x803A276C, &lit_124); -#pragma pop - -/* 803A278C-803A27AC 02EDEC 0020+00 0/1 0/0 0/0 .rodata @125 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_125[32] = { - 0x54, 0x52, 0x4B, 0x5F, 0x43, 0x4D, 0x44, 0x5F, 0x52, 0x65, 0x70, 0x6C, 0x79, 0x41, 0x63, 0x6B, - 0x09, 0x20, 0x20, 0x20, 0x20, 0x25, 0x6C, 0x64, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x0A, 0x00, -}; -COMPILER_STRIP_GATE(0x803A278C, &lit_125); -#pragma pop - -/* 803A27AC-803A27D0 02EE0C 0021+03 0/1 0/0 0/0 .rodata @126 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_126[33 + 3 /* padding */] = { - 0x54, - 0x52, - 0x4B, - 0x5F, - 0x43, - 0x4D, - 0x44, - 0x5F, - 0x52, - 0x65, - 0x61, - 0x64, - 0x52, - 0x65, - 0x67, - 0x69, - 0x73, - 0x74, - 0x65, - 0x72, - 0x73, - 0x09, - 0x25, - 0x6C, - 0x64, - 0x20, - 0x62, - 0x79, - 0x74, - 0x65, - 0x73, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x803A27AC, &lit_126); -#pragma pop - -/* 8044F270-8044F288 07BF90 0014+04 3/3 0/0 0/0 .bss gTRKFramingState */ -static u8 gTRKFramingState[20 + 4 /* padding */]; - -/* 8036D860-8036D924 3681A0 00C4+00 0/0 1/1 0/0 .text TRKInitializeSerialHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKInitializeSerialHandler() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll/TRKInitializeSerialHandler.s" -} -#pragma pop - -/* 8036D924-8036D974 368264 0050+00 0/0 1/1 0/0 .text TRKProcessInput */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKProcessInput() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll/TRKProcessInput.s" -} -#pragma pop - -/* 8036D974-8036D9D4 3682B4 0060+00 0/0 1/1 0/0 .text TRKGetInput */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKGetInput() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll/TRKGetInput.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 803A27D0-803A27F4 02EE30 0024+00 0/1 0/0 0/0 .rodata @146 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_146[36] = { - 0x54, 0x65, 0x73, 0x74, 0x46, 0x6F, 0x72, 0x50, 0x61, 0x63, 0x6B, 0x65, - 0x74, 0x20, 0x3A, 0x20, 0x46, 0x72, 0x65, 0x65, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x20, 0x25, 0x6C, 0x64, 0x0A, 0x00, -}; -COMPILER_STRIP_GATE(0x803A27D0, &lit_146); -#pragma pop - -/* 803A27F4-803A2810 02EE54 001B+01 0/1 0/0 0/0 .rodata @147 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_147[27 + 1 /* padding */] = { - 0x52, - 0x65, - 0x61, - 0x64, - 0x69, - 0x6E, - 0x67, - 0x20, - 0x70, - 0x61, - 0x79, - 0x6C, - 0x6F, - 0x61, - 0x64, - 0x20, - 0x25, - 0x6C, - 0x64, - 0x20, - 0x62, - 0x79, - 0x74, - 0x65, - 0x73, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; -COMPILER_STRIP_GATE(0x803A27F4, &lit_147); -#pragma pop - -/* 803A2810-803A2844 02EE70 0031+03 0/1 0/0 0/0 .rodata @148 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_148[49 + 3 /* padding */] = { - 0x54, - 0x65, - 0x73, - 0x74, - 0x46, - 0x6F, - 0x72, - 0x50, - 0x61, - 0x63, - 0x6B, - 0x65, - 0x74, - 0x20, - 0x3A, - 0x20, - 0x49, - 0x6E, - 0x76, - 0x61, - 0x6C, - 0x69, - 0x64, - 0x20, - 0x73, - 0x69, - 0x7A, - 0x65, - 0x20, - 0x6F, - 0x66, - 0x20, - 0x70, - 0x61, - 0x63, - 0x6B, - 0x65, - 0x74, - 0x20, - 0x68, - 0x64, - 0x72, - 0x2E, - 0x73, - 0x69, - 0x7A, - 0x65, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x803A2810, &lit_148); -#pragma pop - -/* 803A2844-803A286C 02EEA4 0028+00 0/1 0/0 0/0 .rodata @149 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_149[40] = { - 0x54, 0x65, 0x73, 0x74, 0x46, 0x6F, 0x72, 0x50, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x20, - 0x3A, 0x20, 0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x73, 0x69, 0x7A, 0x65, - 0x20, 0x6F, 0x66, 0x20, 0x70, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x0A, 0x00, -}; -COMPILER_STRIP_GATE(0x803A2844, &lit_149); -#pragma pop - -/* 803A286C-803A2890 02EECC 001D+07 0/1 0/0 0/0 .rodata @150 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_150[29 + 7 /* padding */] = { - 0x54, - 0x65, - 0x73, - 0x74, - 0x46, - 0x6F, - 0x72, - 0x50, - 0x61, - 0x63, - 0x6B, - 0x65, - 0x74, - 0x20, - 0x72, - 0x65, - 0x74, - 0x75, - 0x72, - 0x6E, - 0x69, - 0x6E, - 0x67, - 0x20, - 0x25, - 0x6C, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x803A286C, &lit_150); -#pragma pop - -/* 8036D9D4-8036DB10 368314 013C+00 1/1 1/1 0/0 .text TRKTestForPacket */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKTestForPacket() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll/TRKTestForPacket.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 804519B8-804519C0 000EB8 0004+04 0/0 2/2 0/0 .sbss gTRKInputPendingPtr */ -extern u8 gTRKInputPendingPtr[4 + 4 /* padding */]; -u8 gTRKInputPendingPtr[4 + 4 /* padding */]; diff --git a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.cpp b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.c similarity index 52% rename from libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.cpp rename to libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.c index e4eb9f644b..0b9efe1083 100644 --- a/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.cpp +++ b/libs/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.c @@ -11,29 +11,29 @@ // Forward References: // -extern "C" void HandlePositionFileSupportRequest(); -extern "C" void HandleCloseFileSupportRequest(); -extern "C" void HandleOpenFileSupportRequest(); -extern "C" void TRKRequestSend(); -extern "C" void TRKSuppAccessFile(); +void HandlePositionFileSupportRequest(); +void HandleCloseFileSupportRequest(); +void HandleOpenFileSupportRequest(); +void TRKRequestSend(); +void TRKSuppAccessFile(); // // External References: // SECTION_INIT void memset(); -extern "C" void strlen(); -extern "C" void TRKMessageSend(); -extern "C" void TRKReadBuffer_ui8(); -extern "C" void TRKAppendBuffer_ui8(); -extern "C" void TRKSetBufferPosition(); -extern "C" void TRKReleaseBuffer(); -extern "C" void TRKGetBuffer(); -extern "C" void TRKGetFreeBuffer(); -extern "C" void TRKProcessInput(); -extern "C" void TRKTestForPacket(); -extern "C" void OutputData(); -extern "C" void MWTRACE(); +void strlen(); +void TRKMessageSend(); +void TRKReadBuffer_ui8(); +void TRKAppendBuffer_ui8(); +void TRKSetBufferPosition(); +void TRKReleaseBuffer(); +void TRKGetBuffer(); +void TRKGetFreeBuffer(); +void TRKProcessInput(); +void TRKTestForPacket(); +void OutputData(); +void MWTRACE(); // // Declarations: @@ -71,146 +71,27 @@ asm void HandleOpenFileSupportRequest() { /* ############################################################################################## */ /* 803A2AB8-803A2AD0 02F118 0015+03 1/1 0/0 0/0 .rodata @274 */ -SECTION_RODATA static u8 const lit_274[21 + 3 /* padding */] = { - 0x43, - 0x61, - 0x6C, - 0x6C, - 0x69, - 0x6E, - 0x67, - 0x20, - 0x4D, - 0x65, - 0x73, - 0x73, - 0x61, - 0x67, - 0x65, - 0x53, - 0x65, - 0x6E, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_RODATA static char const lit_274[] = "Calling MessageSend\n"; COMPILER_STRIP_GATE(0x803A2AB8, &lit_274); /* 803A2AD0-803A2AF8 02F130 0028+00 0/1 0/0 0/0 .rodata @275 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_275[40] = { - 0x6D, 0x73, 0x67, 0x5F, 0x63, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x3A, 0x20, - 0x30, 0x78, 0x25, 0x30, 0x32, 0x78, 0x20, 0x68, 0x64, 0x72, 0x2D, 0x3E, 0x63, 0x6D, - 0x64, 0x49, 0x44, 0x20, 0x30, 0x78, 0x25, 0x30, 0x32, 0x78, 0x0A, 0x00, -}; +SECTION_RODATA static char const lit_275[] = "msg_command : 0x%02x hdr->cmdID 0x%02x\n"; COMPILER_STRIP_GATE(0x803A2AD0, &lit_275); #pragma pop /* 803A2AF8-803A2B0C 02F158 0014+00 0/1 0/0 0/0 .rodata @276 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_276[20] = { - 0x6D, 0x73, 0x67, 0x5F, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, - 0x3A, 0x20, 0x30, 0x78, 0x25, 0x30, 0x32, 0x78, 0x0A, 0x00, -}; +SECTION_RODATA static char const lit_276[] = "msg_error : 0x%02x\n"; COMPILER_STRIP_GATE(0x803A2AF8, &lit_276); #pragma pop /* 803A2B0C-803A2B60 02F16C 0051+03 0/1 0/0 0/0 .rodata @277 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_277[81 + 3 /* padding */] = { - 0x52, - 0x65, - 0x71, - 0x75, - 0x65, - 0x73, - 0x74, - 0x53, - 0x65, - 0x6E, - 0x64, - 0x20, - 0x3A, - 0x20, - 0x42, - 0x61, - 0x64, - 0x20, - 0x61, - 0x63, - 0x6B, - 0x20, - 0x6F, - 0x72, - 0x20, - 0x6E, - 0x6F, - 0x6E, - 0x20, - 0x61, - 0x63, - 0x6B, - 0x20, - 0x72, - 0x65, - 0x63, - 0x65, - 0x69, - 0x76, - 0x65, - 0x64, - 0x20, - 0x6D, - 0x73, - 0x67, - 0x5F, - 0x63, - 0x6F, - 0x6D, - 0x6D, - 0x61, - 0x6E, - 0x64, - 0x20, - 0x3A, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x32, - 0x78, - 0x20, - 0x6D, - 0x73, - 0x67, - 0x5F, - 0x65, - 0x72, - 0x72, - 0x6F, - 0x72, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x32, - 0x78, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_RODATA static char const lit_277[] = "RequestSend : Bad ack or non ack received msg_command : 0x%02x msg_error 0x%02x\n"; COMPILER_STRIP_GATE(0x803A2B0C, &lit_277); #pragma pop diff --git a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.cpp b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.c similarity index 54% rename from libs/TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.cpp rename to libs/TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.c index c5d5da84b1..fe8aa33c74 100644 --- a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.cpp +++ b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.c @@ -1,75 +1,51 @@ -// -// Generated By: dol2asm -// Translation Unit: Os/dolphin/UDP_Stubs -// +/** + * UDP_Stubs.c + * Description: + */ #include "TRK_MINNOW_DOLPHIN/Os/dolphin/UDP_Stubs.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" s32 udp_cc_post_stop(); -extern "C" s32 udp_cc_pre_continue(); -extern "C" bool udp_cc_peek(); -extern "C" bool udp_cc_write(); -extern "C" bool udp_cc_read(); -extern "C" s32 udp_cc_close(); -extern "C" s32 udp_cc_open(); -extern "C" s32 udp_cc_shutdown(); -extern "C" s32 udp_cc_initialize(); - -// -// External References: -// - -// -// Declarations: -// /* 80372314-8037231C 36CC54 0008+00 0/0 1/1 0/0 .text udp_cc_post_stop */ -s32 udp_cc_post_stop() { +s32 udp_cc_post_stop(void) { return -1; } /* 8037231C-80372324 36CC5C 0008+00 0/0 1/1 0/0 .text udp_cc_pre_continue */ -s32 udp_cc_pre_continue() { +s32 udp_cc_pre_continue(void) { return -1; } /* 80372324-8037232C 36CC64 0008+00 0/0 1/1 0/0 .text udp_cc_peek */ -bool udp_cc_peek() { - return false; +u8 udp_cc_peek(void) { + return 0; } /* 8037232C-80372334 36CC6C 0008+00 0/0 1/1 0/0 .text udp_cc_write */ -bool udp_cc_write() { - return false; +u8 udp_cc_write(void) { + return 0; } /* 80372334-8037233C 36CC74 0008+00 0/0 1/1 0/0 .text udp_cc_read */ -bool udp_cc_read() { - return false; +u8 udp_cc_read(void) { + return 0; } /* 8037233C-80372344 36CC7C 0008+00 0/0 1/1 0/0 .text udp_cc_close */ -s32 udp_cc_close() { +s32 udp_cc_close(void) { return -1; } /* 80372344-8037234C 36CC84 0008+00 0/0 1/1 0/0 .text udp_cc_open */ -s32 udp_cc_open() { +s32 udp_cc_open(void) { return -1; } /* 8037234C-80372354 36CC8C 0008+00 0/0 1/1 0/0 .text udp_cc_shutdown */ -s32 udp_cc_shutdown() { +s32 udp_cc_shutdown(void) { return -1; } /* 80372354-8037235C 36CC94 0008+00 0/0 1/1 0/0 .text udp_cc_initialize */ -s32 udp_cc_initialize() { +s32 udp_cc_initialize(void) { return -1; } diff --git a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.cpp b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.c similarity index 80% rename from libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.cpp rename to libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.c index 26e7041fcb..c65da3b2b7 100644 --- a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.cpp +++ b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.c @@ -7,48 +7,38 @@ #include "dol2asm.h" #include "dolphin/types.h" -// -// Types: -// - -struct dBgW {}; - -struct daBgObj_c { - /* 80459BB4 */ void regist(dBgW*); -}; - // // Forward References: // -extern "C" void InitMetroTRK(); -extern "C" void InitMetroTRK_BBA(); -extern "C" void TRK__write_aram(); -extern "C" void TRK__read_aram(); -extern "C" void TRKInitializeTarget(); -extern "C" void __TRK_copy_vectors(); -extern "C" void TRKTargetTranslate(); -extern "C" void EnableMetroTRKInterrupts(); +void InitMetroTRK(); +void InitMetroTRK_BBA(); +void TRK__write_aram(); +void TRK__read_aram(); +void TRKInitializeTarget(); +void __TRK_copy_vectors(); +void TRKTargetTranslate(); +void EnableMetroTRKInterrupts(); // // External References: // SECTION_INIT void TRK_memcpy(); -extern "C" extern u8 const __TRK_unknown_data[7988]; -extern "C" void ARGetDMAStatus(); -extern "C" void ARStartDMA(); -extern "C" void __ARClearInterrupt(); -extern "C" void __ARGetInterruptStatus(); -extern "C" void TRK_flush_cache(); -extern "C" void __TRK_get_MSR(); -extern "C" void TRKSaveExtended1Block(); -extern "C" void TRK_main(); -extern "C" void EnableEXI2Interrupts(); -extern "C" void InitMetroTRKCommTable(); -extern "C" extern u8 gTRKState[164]; -extern "C" extern u8 gTRKCPUState[1072]; -extern "C" void regist__9daBgObj_cFP4dBgW(); +extern u8 const __TRK_unknown_data[7988]; +void ARGetDMAStatus(); +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]; +void regist__9daBgObj_cFP4dBgW(); // // Declarations: diff --git a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.cpp b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.c similarity index 58% rename from libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.cpp rename to libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.c index bcc7fb4ff6..9caf7bb7b3 100644 --- a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.cpp +++ b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.c @@ -11,19 +11,16 @@ // Forward References: // -extern "C" static void TRKLoadContext(); -extern "C" void TRKUARTInterruptHandler(); -extern "C" void InitializeProgramEndTrap(); -extern "C" void TRK_board_display(); -extern "C" void UnreserveEXI2Port(); -extern "C" void ReserveEXI2Port(); -extern "C" void TRKWriteUARTN(); -extern "C" void TRKReadUARTN(); -extern "C" void TRKPollUART(); -extern "C" void EnableEXI2Interrupts(); -extern "C" void TRKInitializeIntDrivenUART(); -extern "C" void InitMetroTRKCommTable(); -extern "C" static void TRKEXICallBack(); +static void TRKLoadContext(); +void TRKUARTInterruptHandler(); +void InitializeProgramEndTrap(); +void TRK_board_display(); +void TRKReadUARTN(); +void TRKPollUART(); +void EnableEXI2Interrupts(); +void TRKInitializeIntDrivenUART(); +void InitMetroTRKCommTable(); +static void TRKEXICallBack(); SECTION_BSS extern u8 data_8044F828[8]; // @@ -31,43 +28,43 @@ SECTION_BSS extern u8 data_8044F828[8]; // SECTION_INIT void TRK_memcpy(); -extern "C" void OSReport(); -extern "C" void PPCHalt(); -extern "C" void DCFlushRange(); -extern "C" void ICInvalidateRange(); -extern "C" void OSEnableScheduler(); -extern "C" void TRKInterruptHandler(); -extern "C" s32 udp_cc_post_stop(); -extern "C" s32 udp_cc_pre_continue(); -extern "C" bool udp_cc_peek(); -extern "C" bool udp_cc_write(); -extern "C" bool udp_cc_read(); -extern "C" s32 udp_cc_close(); -extern "C" s32 udp_cc_open(); -extern "C" s32 udp_cc_shutdown(); -extern "C" s32 udp_cc_initialize(); -extern "C" void ddh_cc_initinterrupts(); -extern "C" void ddh_cc_peek(); -extern "C" void ddh_cc_post_stop(); -extern "C" void ddh_cc_pre_continue(); -extern "C" void ddh_cc_write(); -extern "C" void ddh_cc_read(); -extern "C" bool ddh_cc_close(); -extern "C" void ddh_cc_open(); -extern "C" bool ddh_cc_shutdown(); -extern "C" void ddh_cc_initialize(); -extern "C" void gdev_cc_initinterrupts(); -extern "C" void gdev_cc_peek(); -extern "C" void gdev_cc_post_stop(); -extern "C" void gdev_cc_pre_continue(); -extern "C" void gdev_cc_write(); -extern "C" void gdev_cc_read(); -extern "C" bool gdev_cc_close(); -extern "C" void gdev_cc_open(); -extern "C" bool gdev_cc_shutdown(); -extern "C" void gdev_cc_initialize(); -extern "C" bool AMC_IsStub(); -extern "C" bool Hu_IsStub(); +void OSReport(); +void PPCHalt(); +void DCFlushRange(); +void ICInvalidateRange(); +void OSEnableScheduler(); +void TRKInterruptHandler(); +s32 udp_cc_post_stop(); +s32 udp_cc_pre_continue(); +u8 udp_cc_peek(); +u8 udp_cc_write(); +u8 udp_cc_read(); +s32 udp_cc_close(); +s32 udp_cc_open(); +s32 udp_cc_shutdown(); +s32 udp_cc_initialize(); +void ddh_cc_initinterrupts(); +void ddh_cc_peek(); +void ddh_cc_post_stop(); +void ddh_cc_pre_continue(); +void ddh_cc_write(); +void ddh_cc_read(); +u8 ddh_cc_close(); +void ddh_cc_open(); +u8 ddh_cc_shutdown(); +void ddh_cc_initialize(); +void gdev_cc_initinterrupts(); +void gdev_cc_peek(); +void gdev_cc_post_stop(); +void gdev_cc_pre_continue(); +void gdev_cc_write(); +void gdev_cc_read(); +u8 gdev_cc_close(); +void gdev_cc_open(); +u8 gdev_cc_shutdown(); +void gdev_cc_initialize(); +u8 AMC_IsStub(); +u8 Hu_IsStub(); // // Declarations: @@ -110,7 +107,7 @@ asm void InitializeProgramEndTrap() { /* ############################################################################################## */ /* 803A2C0C-803A2C10 02F26C 0004+00 1/1 0/0 0/0 .rodata @165 */ -SECTION_RODATA static u32 const lit_165 = 0x25730A00; +SECTION_RODATA static char const lit_165[] = "%s\n"; COMPILER_STRIP_GATE(0x803A2C0C, &lit_165); /* 80371CD8-80371D08 36C618 0030+00 0/0 1/1 0/0 .text TRK_board_display */ @@ -155,7 +152,7 @@ asm void ReserveEXI2Port() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void TRKWriteUARTN() { +asm s32 TRKWriteUARTN(const void*, u32) { nofralloc #include "asm/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue/TRKWriteUARTN.s" } @@ -209,285 +206,49 @@ asm void TRKInitializeIntDrivenUART() { /* 803A2C10-803A2C28 02F270 0015+03 0/1 0/0 0/0 .rodata @215 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_215[21 + 3 /* padding */] = { - 0x44, - 0x65, - 0x76, - 0x6B, - 0x69, - 0x74, - 0x20, - 0x73, - 0x65, - 0x74, - 0x20, - 0x74, - 0x6F, - 0x20, - 0x3A, - 0x20, - 0x25, - 0x6C, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_RODATA static char const lit_215[] = "Devkit set to : %ld\n"; COMPILER_STRIP_GATE(0x803A2C10, &lit_215); #pragma pop /* 803A2C28-803A2C40 02F288 0017+01 0/1 0/0 0/0 .rodata @216 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_216[23 + 1 /* padding */] = { - 0x4D, - 0x65, - 0x74, - 0x72, - 0x6F, - 0x54, - 0x52, - 0x4B, - 0x20, - 0x3A, - 0x20, - 0x53, - 0x65, - 0x74, - 0x20, - 0x74, - 0x6F, - 0x20, - 0x42, - 0x42, - 0x41, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; +SECTION_RODATA static char const lit_216[] = "MetroTRK : Set to BBA\n"; COMPILER_STRIP_GATE(0x803A2C28, &lit_216); #pragma pop /* 803A2C40-803A2C64 02F2A0 0021+03 0/1 0/0 0/0 .rodata @217 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_217[33 + 3 /* padding */] = { - 0x4D, - 0x65, - 0x74, - 0x72, - 0x6F, - 0x54, - 0x52, - 0x4B, - 0x20, - 0x3A, - 0x20, - 0x53, - 0x65, - 0x74, - 0x20, - 0x74, - 0x6F, - 0x20, - 0x47, - 0x44, - 0x45, - 0x56, - 0x20, - 0x68, - 0x61, - 0x72, - 0x64, - 0x77, - 0x61, - 0x72, - 0x65, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_RODATA static char const lit_217[] = "MetroTRK : Set to GDEV hardware\n"; COMPILER_STRIP_GATE(0x803A2C40, &lit_217); #pragma pop /* 803A2C64-803A2C88 02F2C4 0024+00 0/1 0/0 0/0 .rodata @218 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_218[36] = { - 0x4D, 0x65, 0x74, 0x72, 0x6F, 0x54, 0x52, 0x4B, 0x20, 0x3A, 0x20, 0x53, - 0x65, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x41, 0x4D, 0x43, 0x20, 0x44, 0x44, - 0x48, 0x20, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x0A, 0x00, -}; +SECTION_RODATA static char const lit_218[] = "MetroTRK : Set to AMC DDH hardware\n"; COMPILER_STRIP_GATE(0x803A2C64, &lit_218); #pragma pop /* 803A2C88-803A2CB4 02F2E8 002B+01 0/1 0/0 0/0 .rodata @219 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_219[43 + 1 /* padding */] = { - 0x4D, - 0x65, - 0x74, - 0x72, - 0x6F, - 0x54, - 0x52, - 0x4B, - 0x20, - 0x3A, - 0x20, - 0x53, - 0x65, - 0x74, - 0x20, - 0x74, - 0x6F, - 0x20, - 0x55, - 0x4E, - 0x4B, - 0x4E, - 0x4F, - 0x57, - 0x4E, - 0x20, - 0x68, - 0x61, - 0x72, - 0x64, - 0x77, - 0x61, - 0x72, - 0x65, - 0x2E, - 0x20, - 0x28, - 0x25, - 0x6C, - 0x64, - 0x29, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; +SECTION_RODATA static char const lit_219[] = "MetroTRK : Set to UNKNOWN hardware. (%ld)\n"; COMPILER_STRIP_GATE(0x803A2C88, &lit_219); #pragma pop /* 803A2CB4-803A2CE4 02F314 002F+01 0/1 0/0 0/0 .rodata @220 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_220[47 + 1 /* padding */] = { - 0x4D, - 0x65, - 0x74, - 0x72, - 0x6F, - 0x54, - 0x52, - 0x4B, - 0x20, - 0x3A, - 0x20, - 0x49, - 0x6E, - 0x76, - 0x61, - 0x6C, - 0x69, - 0x64, - 0x20, - 0x68, - 0x61, - 0x72, - 0x64, - 0x77, - 0x61, - 0x72, - 0x65, - 0x20, - 0x49, - 0x44, - 0x20, - 0x70, - 0x61, - 0x73, - 0x73, - 0x65, - 0x64, - 0x20, - 0x66, - 0x72, - 0x6F, - 0x6D, - 0x20, - 0x4F, - 0x53, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; +SECTION_RODATA static char const lit_220[] = "MetroTRK : Invalid hardware ID passed from OS\n"; COMPILER_STRIP_GATE(0x803A2CB4, &lit_220); #pragma pop /* 803A2CE4-803A2D10 02F344 0028+04 0/1 0/0 0/0 .rodata @221 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lit_221[40 + 4 /* padding */] = { - 0x4D, - 0x65, - 0x74, - 0x72, - 0x6F, - 0x54, - 0x52, - 0x4B, - 0x20, - 0x3A, - 0x20, - 0x44, - 0x65, - 0x66, - 0x61, - 0x75, - 0x6C, - 0x74, - 0x69, - 0x6E, - 0x67, - 0x20, - 0x74, - 0x6F, - 0x20, - 0x47, - 0x44, - 0x45, - 0x56, - 0x20, - 0x48, - 0x61, - 0x72, - 0x64, - 0x77, - 0x61, - 0x72, - 0x65, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, -}; +SECTION_RODATA static char const lit_221[] = "MetroTRK : Defaulting to GDEV Hardware\n"; COMPILER_STRIP_GATE(0x803A2CE4, &lit_221); #pragma pop @@ -512,12 +273,9 @@ static asm void TRKEXICallBack() { #pragma pop /* ############################################################################################## */ -/* 8044F824-8044F828 07C544 0004+00 0/0 0/0 0/0 .bss _MetroTRK_Has_Framing */ -#pragma push -#pragma force_active on -SECTION_BSS static u8 _MetroTRK_Has_Framing[4]; -#pragma pop - /* 8044F828-8044F830 07C548 0008+00 0/0 2/2 0/0 .bss None */ SECTION_BSS extern u8 data_8044F828[8]; SECTION_BSS u8 data_8044F828[8]; + +/* 8044F824-8044F828 07C544 0004+00 0/0 0/0 0/0 .bss _MetroTRK_Has_Framing */ +SECTION_BSS /* static */ u8 _MetroTRK_Has_Framing[4]; diff --git a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.c b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.c new file mode 100644 index 0000000000..6fc1c4dea6 --- /dev/null +++ b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.c @@ -0,0 +1,17 @@ +/** + * targcont.c + * Description: + */ + +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" + +/* 8037214C-80372180 36CA8C 0034+00 0/0 2/2 0/0 .text TRKTargetContinue */ +s32 TRKTargetContinue(void) { + TRKTargetSetStopped(0); + UnreserveEXI2Port(); + TRKSwapAndGo(); + ReserveEXI2Port(); + return 0; +} diff --git a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.cpp b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.cpp deleted file mode 100644 index ae3c0c02a4..0000000000 --- a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.cpp +++ /dev/null @@ -1,37 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: Os/dolphin/targcont -// - -#include "TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void TRKTargetContinue(); - -// -// External References: -// - -extern "C" void TRKSwapAndGo(); -extern "C" void TRKTargetSetStopped(); -extern "C" void UnreserveEXI2Port(); -extern "C" void ReserveEXI2Port(); - -// -// Declarations: -// - -/* 8037214C-80372180 36CA8C 0034+00 0/0 2/2 0/0 .text TRKTargetContinue */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRKTargetContinue() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/Os/dolphin/targcont/TRKTargetContinue.s" -} -#pragma pop diff --git a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/target_options.c b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/target_options.c new file mode 100644 index 0000000000..94afce762f --- /dev/null +++ b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/target_options.c @@ -0,0 +1,19 @@ +/** + * target_options.c + * Description: + */ + +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/target_options.h" +#include "dol2asm.h" + +SECTION_BSS static u8 useSerialIO; + +/* 80372180-80372190 36CAC0 0010+00 0/0 2/2 0/0 .text GetUseSerialIO */ +u8 GetUseSerialIO(void) { + return useSerialIO; +} + +/* 80372190-8037219C 36CAD0 000C+00 0/0 1/1 0/0 .text SetUseSerialIO */ +void SetUseSerialIO(u8 serialIO) { + useSerialIO = serialIO; +} diff --git a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/target_options.cpp b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/target_options.cpp deleted file mode 100644 index 09f2df228c..0000000000 --- a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/target_options.cpp +++ /dev/null @@ -1,45 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: Os/dolphin/target_options -// - -#include "TRK_MINNOW_DOLPHIN/Os/dolphin/target_options.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void GetUseSerialIO(); -extern "C" void SetUseSerialIO(); - -// -// External References: -// - -SECTION_BSS extern u8 data_8044F828[8]; - -// -// Declarations: -// - -/* 80372180-80372190 36CAC0 0010+00 0/0 2/2 0/0 .text GetUseSerialIO */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GetUseSerialIO() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/Os/dolphin/target_options/GetUseSerialIO.s" -} -#pragma pop - -/* 80372190-8037219C 36CAD0 000C+00 0/0 1/1 0/0 .text SetUseSerialIO */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void SetUseSerialIO() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/Os/dolphin/target_options/SetUseSerialIO.s" -} -#pragma pop diff --git a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.c b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.c new file mode 100644 index 0000000000..67c6a862d6 --- /dev/null +++ b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.c @@ -0,0 +1,45 @@ +/** + * usr_put.c + * Description: + */ + +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h" +// #include "dolphin/os/OS.h" + +// +// External References: +// + +// void OSReport(char* fmt, ...) causes extra crclr instruction. +// look into issue later +void OSReport(char* fmt); + +// +// Declarations: +// + +/* 8036DB10-8036DB14 368450 0004+00 0/0 1/1 0/0 .text usr_put_initialize */ +void usr_put_initialize() {} + +/* 8036DB14-8036DB9C 368454 0088+00 0/0 2/2 0/0 .text usr_puts_serial */ +BOOL usr_puts_serial(const char* msg) { + BOOL connect_ = FALSE; + char c; + char buf[2]; + + while (!connect_ && (c = *msg++) != '\0') { + BOOL connect = GetTRKConnected(); + + buf[0] = c; + buf[1] = '\0'; + + SetTRKConnected(FALSE); + OSReport(buf); + + SetTRKConnected(connect); + connect_ = FALSE; + } + + return connect_; +} diff --git a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.cpp b/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.cpp deleted file mode 100644 index cfaca6299a..0000000000 --- a/libs/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.cpp +++ /dev/null @@ -1,42 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: Os/dolphin/usr_put -// - -#include "TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void usr_put_initialize(); -extern "C" void usr_puts_serial(); - -// -// External References: -// - -extern "C" void OSReport(); -extern "C" void SetTRKConnected(); -extern "C" void GetTRKConnected(); - -// -// Declarations: -// - -/* 8036DB10-8036DB14 368450 0004+00 0/0 1/1 0/0 .text usr_put_initialize */ -void usr_put_initialize() { - /* empty function */ -} - -/* 8036DB14-8036DB9C 368454 0088+00 0/0 2/2 0/0 .text usr_puts_serial */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void usr_puts_serial() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put/usr_puts_serial.s" -} -#pragma pop diff --git a/libs/TRK_MINNOW_DOLPHIN/ppc/Export/targsupp.cpp b/libs/TRK_MINNOW_DOLPHIN/ppc/Export/targsupp.c similarity index 72% rename from libs/TRK_MINNOW_DOLPHIN/ppc/Export/targsupp.cpp rename to libs/TRK_MINNOW_DOLPHIN/ppc/Export/targsupp.c index 7d068f57ab..fa77d20ce7 100644 --- a/libs/TRK_MINNOW_DOLPHIN/ppc/Export/targsupp.cpp +++ b/libs/TRK_MINNOW_DOLPHIN/ppc/Export/targsupp.c @@ -1,28 +1,9 @@ -// -// Generated By: dol2asm -// Translation Unit: ppc/Export/targsupp -// +/** + * targsupp.c + * Description: + */ #include "TRK_MINNOW_DOLPHIN/ppc/Export/targsupp.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void TRKAccessFile(); -extern "C" void TRKOpenFile(); -extern "C" void TRKCloseFile(); -extern "C" void TRKPositionFile(); - -// -// External References: -// - -// -// Declarations: -// /* 803711D0-803711D8 -00001 0008+00 0/0 0/0 0/0 .text TRKAccessFile */ #pragma push diff --git a/libs/TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.c b/libs/TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.c new file mode 100644 index 0000000000..1525938056 --- /dev/null +++ b/libs/TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.c @@ -0,0 +1,31 @@ +/** + * flush_cache.c + * Description: + */ + +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.h" + +/* 8036F548-8036F580 369E88 0038+00 0/0 5/5 0/0 .text TRK_flush_cache */ +asm void TRK_flush_cache(void) { + // clang-format off + nofralloc + + lis r5, 0xFFFF + ori r5, r5, 0xFFF1 + and r5, r5, r3 + subf r3, r5, r3 + add r4, r4, r3 + +loop: + dcbst 0, r5 + dcbf 0, r5 + sync + icbi 0, r5 + addic r5, r5, 8 + addic. r4, r4, -8 + bge loop + + isync + blr + // clang-format on +} diff --git a/libs/TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.cpp b/libs/TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.cpp deleted file mode 100644 index 4c9467347d..0000000000 --- a/libs/TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.cpp +++ /dev/null @@ -1,32 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: ppc/Generic/flush_cache -// - -#include "TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void TRK_flush_cache(); - -// -// External References: -// - -// -// Declarations: -// - -/* 8036F548-8036F580 369E88 0038+00 0/0 5/5 0/0 .text TRK_flush_cache */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void TRK_flush_cache() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache/TRK_flush_cache.s" -} -#pragma pop diff --git a/libs/TRK_MINNOW_DOLPHIN/ppc/Generic/mpc_7xx_603e.cpp b/libs/TRK_MINNOW_DOLPHIN/ppc/Generic/mpc_7xx_603e.c similarity index 82% rename from libs/TRK_MINNOW_DOLPHIN/ppc/Generic/mpc_7xx_603e.cpp rename to libs/TRK_MINNOW_DOLPHIN/ppc/Generic/mpc_7xx_603e.c index fc4d115887..18bc4fe337 100644 --- a/libs/TRK_MINNOW_DOLPHIN/ppc/Generic/mpc_7xx_603e.cpp +++ b/libs/TRK_MINNOW_DOLPHIN/ppc/Generic/mpc_7xx_603e.c @@ -11,15 +11,15 @@ // Forward References: // -extern "C" void TRKSaveExtended1Block(); -extern "C" void TRKRestoreExtended1Block(); +void TRKSaveExtended1Block(); +void TRKRestoreExtended1Block(); // // External References: // -extern "C" extern u8 gTRKRestoreFlags[9 + 3 /* padding */]; -extern "C" extern u8 gTRKCPUState[1072]; +extern u8 gTRKRestoreFlags[9 + 3 /* padding */]; +extern u8 gTRKCPUState[1072]; // // Declarations: diff --git a/libs/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.cpp b/libs/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.c similarity index 84% rename from libs/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.cpp rename to libs/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.c index 4bce50be5b..eb3b4b282b 100644 --- a/libs/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.cpp +++ b/libs/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.c @@ -11,61 +11,59 @@ // Forward References: // -extern "C" void __TRK_get_MSR(); -extern "C" void __TRK_set_MSR(); -extern "C" static void TRK_ppc_memcpy(); -extern "C" void TRKInterruptHandler(); -extern "C" static void TRKExceptionHandler(); -extern "C" void TRKSwapAndGo(); -extern "C" static void TRKInterruptHandlerEnableInterrupts(); -extern "C" static void ReadFPSCR(); -extern "C" static void WriteFPSCR(); -extern "C" void TRKTargetAccessARAM(); -extern "C" void TRKTargetSetInputPendingPtr(); -extern "C" void TRKTargetStop(); -extern "C" void TRKTargetSetStopped(); -extern "C" void TRKTargetStopped(); -extern "C" void TRKTargetSupportRequest(); -extern "C" void TRKTargetGetPC(); -extern "C" void TRKTargetStepOutOfRange(); -extern "C" void TRKTargetSingleStep(); -extern "C" void TRKTargetAddExceptionInfo(); -extern "C" void TRKTargetAddStopInfo(); -extern "C" void TRKTargetInterrupt(); -extern "C" static void TRKPostInterruptEvent(); -extern "C" void TRKTargetAccessExtended2(); -extern "C" void TRKTargetAccessExtended1(); -extern "C" void TRKTargetAccessFP(); -extern "C" void TRKTargetAccessDefault(); -extern "C" static void TRKTargetReadInstruction(); -extern "C" void TRKTargetAccessMemory(); -extern "C" static void TRKValidMemory32(); +void __TRK_get_MSR(); +void __TRK_set_MSR(); +static void TRK_ppc_memcpy(); +void TRKInterruptHandler(); +static void TRKExceptionHandler(); +static void TRKInterruptHandlerEnableInterrupts(); +static void ReadFPSCR(); +static void WriteFPSCR(); +void TRKTargetAccessARAM(); +void TRKTargetSetInputPendingPtr(); +void TRKTargetStop(); +void TRKTargetStopped(); +void TRKTargetSupportRequest(); +void TRKTargetGetPC(); +void TRKTargetStepOutOfRange(); +void TRKTargetSingleStep(); +void TRKTargetAddExceptionInfo(); +void TRKTargetAddStopInfo(); +void TRKTargetInterrupt(); +static void TRKPostInterruptEvent(); +void TRKTargetAccessExtended2(); +void TRKTargetAccessExtended1(); +void TRKTargetAccessFP(); +void TRKTargetAccessDefault(); +static void TRKTargetReadInstruction(); +void TRKTargetAccessMemory(); +static void TRKValidMemory32(); // // External References: // SECTION_INIT void memset(); -extern "C" void TRKConstructEvent(); -extern "C" void TRKPostEvent(); -extern "C" void TRKReadBuffer_ui32(); -extern "C" void TRKReadBuffer1_ui64(); -extern "C" void TRKAppendBuffer_ui32(); -extern "C" void TRKAppendBuffer_ui8(); -extern "C" void TRKAppendBuffer1_ui64(); -extern "C" void HandlePositionFileSupportRequest(); -extern "C" void HandleCloseFileSupportRequest(); -extern "C" void HandleOpenFileSupportRequest(); -extern "C" void TRKSuppAccessFile(); -extern "C" void TRKDoNotifyStopped(); -extern "C" void TRK_flush_cache(); -extern "C" void TRKSaveExtended1Block(); -extern "C" void TRKRestoreExtended1Block(); -extern "C" void TRK__write_aram(); -extern "C" void TRK__read_aram(); -extern "C" void TRKTargetTranslate(); -extern "C" void TRKUARTInterruptHandler(); -extern "C" void MWTRACE(); +void TRKConstructEvent(); +void TRKPostEvent(); +void TRKReadBuffer_ui32(); +void TRKReadBuffer1_ui64(); +void TRKAppendBuffer_ui32(); +void TRKAppendBuffer_ui8(); +void TRKAppendBuffer1_ui64(); +void HandlePositionFileSupportRequest(); +void HandleCloseFileSupportRequest(); +void HandleOpenFileSupportRequest(); +void TRKSuppAccessFile(); +void TRKDoNotifyStopped(); +void TRK_flush_cache(); +void TRKSaveExtended1Block(); +void TRKRestoreExtended1Block(); +void TRK__write_aram(); +void TRK__read_aram(); +void TRKTargetTranslate(); +void TRKUARTInterruptHandler(); +void MWTRACE(); // // Declarations: @@ -123,7 +121,7 @@ SECTION_DATA static u8 gTRKExceptionStatus[16] = { }; /* 8044F290-8044F294 07BFB0 0002+02 1/1 0/0 0/0 .bss TRK_saved_exceptionID */ -SECTION_BSS static u8 TRK_saved_exceptionID[2 + 2 /* padding */]; +SECTION_BSS static s32 TRK_saved_exceptionID = 0; /* 8044F294-8044F338 07BFB4 00A4+00 11/11 1/1 0/0 .bss gTRKState */ extern u8 gTRKState[164]; @@ -231,7 +229,7 @@ asm void TRKTargetStop() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void TRKTargetSetStopped() { +asm void TRKTargetSetStopped(s32) { nofralloc #include "asm/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl/TRKTargetSetStopped.s" } @@ -299,9 +297,7 @@ SECTION_RODATA static u8 const lit_290[40] = { COMPILER_STRIP_GATE(0x803A2BC0, &lit_290); /* 803A2BE8-803A2BF8 02F248 0010+00 3/3 0/0 0/0 .rodata @422 */ -SECTION_RODATA static u8 const lit_422[16] = { - 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x6F, 0x53, 0x74, 0x65, 0x70, 0x28, 0x29, 0x0A, 0x00, -}; +SECTION_RODATA static char const lit_422[] = "TargetDoStep()\n"; COMPILER_STRIP_GATE(0x803A2BE8, &lit_422); /* 803D3254-803D3268 030374 0014+00 3/3 0/0 0/0 .data gTRKStepStatus */ diff --git a/libs/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer.cpp b/libs/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer.c similarity index 83% rename from libs/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer.cpp rename to libs/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer.c index 5271a3cc3c..593a601247 100644 --- a/libs/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer.cpp +++ b/libs/TRK_MINNOW_DOLPHIN/utils/common/CircleBuffer.c @@ -11,19 +11,19 @@ // Forward References: // -extern "C" void CircleBufferReadBytes(); -extern "C" void CircleBufferWriteBytes(); -extern "C" void CircleBufferInitialize(); -extern "C" void CBGetBytesAvailableForRead(); +void CircleBufferReadBytes(); +void CircleBufferWriteBytes(); +void CircleBufferInitialize(); +void CBGetBytesAvailableForRead(); // // External References: // SECTION_INIT void memcpy(); -extern "C" void MWExitCriticalSection(); -extern "C" void MWEnterCriticalSection(); -extern "C" void MWInitializeCriticalSection(); +void MWExitCriticalSection(); +void MWEnterCriticalSection(); +void MWInitializeCriticalSection(); // // Declarations: diff --git a/libs/TRK_MINNOW_DOLPHIN/utils/common/MWTrace.c b/libs/TRK_MINNOW_DOLPHIN/utils/common/MWTrace.c new file mode 100644 index 0000000000..ffdc366e2e --- /dev/null +++ b/libs/TRK_MINNOW_DOLPHIN/utils/common/MWTrace.c @@ -0,0 +1,9 @@ +/** + * MWTrace.c + * Description: + */ + +#include "TRK_MINNOW_DOLPHIN/utils/common/MWTrace.h" + +/* 80372C54-80372CA4 36D594 0050+00 0/0 22/22 0/0 .text MWTRACE */ +void MWTRACE(u8, char*, ...) {} diff --git a/libs/TRK_MINNOW_DOLPHIN/utils/common/MWTrace.cpp b/libs/TRK_MINNOW_DOLPHIN/utils/common/MWTrace.cpp deleted file mode 100644 index bfcf3739bf..0000000000 --- a/libs/TRK_MINNOW_DOLPHIN/utils/common/MWTrace.cpp +++ /dev/null @@ -1,32 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: utils/common/MWTrace -// - -#include "TRK_MINNOW_DOLPHIN/utils/common/MWTrace.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void MWTRACE(); - -// -// External References: -// - -// -// Declarations: -// - -/* 80372C54-80372CA4 36D594 0050+00 0/0 22/22 0/0 .text MWTRACE */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void MWTRACE() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/utils/common/MWTrace/MWTRACE.s" -} -#pragma pop diff --git a/libs/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc.c b/libs/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc.c new file mode 100644 index 0000000000..80fab2ebb7 --- /dev/null +++ b/libs/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc.c @@ -0,0 +1,31 @@ +/** + * MWCriticalSection_gc.c + * Description: + */ + +#include "TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc.h" +#include "dolphin/os/OS.h" + +/* 80372CA4-80372CC8 36D5E4 0024+00 0/0 2/2 0/0 .text MWExitCriticalSection */ +void MWExitCriticalSection(u32* section) { + OSRestoreInterrupts(*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() {} diff --git a/libs/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc.cpp b/libs/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc.cpp deleted file mode 100644 index 4f97f19c05..0000000000 --- a/libs/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc.cpp +++ /dev/null @@ -1,52 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: utils/gc/MWCriticalSection_gc -// - -#include "TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void MWExitCriticalSection(); -extern "C" void MWEnterCriticalSection(); -extern "C" void MWInitializeCriticalSection(); - -// -// External References: -// - -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); - -// -// Declarations: -// - -/* 80372CA4-80372CC8 36D5E4 0024+00 0/0 2/2 0/0 .text MWExitCriticalSection */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void MWExitCriticalSection() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc/MWExitCriticalSection.s" -} -#pragma pop - -/* 80372CC8-80372CF8 36D608 0030+00 0/0 2/2 0/0 .text MWEnterCriticalSection */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void MWEnterCriticalSection() { - nofralloc -#include "asm/TRK_MINNOW_DOLPHIN/utils/gc/MWCriticalSection_gc/MWEnterCriticalSection.s" -} -#pragma pop - -/* 80372CF8-80372CFC 36D638 0004+00 0/0 1/1 0/0 .text MWInitializeCriticalSection */ -void MWInitializeCriticalSection() { - /* empty function */ -} diff --git a/libs/amcstubs/AmcExi2Stubs.c b/libs/amcstubs/AmcExi2Stubs.c new file mode 100644 index 0000000000..41cfa15a4a --- /dev/null +++ b/libs/amcstubs/AmcExi2Stubs.c @@ -0,0 +1,38 @@ +/** + * AmcExi2Stubs.c + * Description: + */ + +#include "amcstubs/AmcExi2Stubs.h" + +/* 80372CFC-80372D00 36D63C 0004+00 0/0 1/1 0/0 .text EXI2_Init */ +void EXI2_Init(void) {} + +/* 80372D00-80372D04 36D640 0004+00 0/0 1/1 0/0 .text EXI2_EnableInterrupts */ +void EXI2_EnableInterrupts(void) {} + +/* 80372D04-80372D0C 36D644 0008+00 0/0 2/2 0/0 .text EXI2_Poll */ +u8 EXI2_Poll(void) { + return 0; +} + +/* 80372D0C-80372D14 36D64C 0008+00 0/0 2/2 0/0 .text EXI2_ReadN */ +u8 EXI2_ReadN(void*, u32) { + return 0; +} + +/* 80372D14-80372D1C 36D654 0008+00 0/0 1/1 0/0 .text EXI2_WriteN */ +u8 EXI2_WriteN(void*, u32) { + return 0; +} + +/* 80372D1C-80372D20 36D65C 0004+00 0/0 1/1 0/0 .text EXI2_Reserve */ +void EXI2_Reserve(void) {} + +/* 80372D20-80372D24 36D660 0004+00 0/0 1/1 0/0 .text EXI2_Unreserve */ +void EXI2_Unreserve(void) {} + +/* 80372D24-80372D2C 36D664 0008+00 0/0 1/1 0/0 .text AMC_IsStub */ +u8 AMC_IsStub(void) { + return 1; +} diff --git a/libs/amcstubs/AmcExi2Stubs.cpp b/libs/amcstubs/AmcExi2Stubs.cpp deleted file mode 100644 index 8f01cddfaa..0000000000 --- a/libs/amcstubs/AmcExi2Stubs.cpp +++ /dev/null @@ -1,69 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: AmcExi2Stubs -// - -#include "amcstubs/AmcExi2Stubs.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void EXI2_Init(); -extern "C" void EXI2_EnableInterrupts(); -extern "C" bool EXI2_Poll(); -extern "C" bool EXI2_ReadN(); -extern "C" bool EXI2_WriteN(); -extern "C" void EXI2_Reserve(); -extern "C" void EXI2_Unreserve(); -extern "C" bool AMC_IsStub(); - -// -// External References: -// - -// -// Declarations: -// - -/* 80372CFC-80372D00 36D63C 0004+00 0/0 1/1 0/0 .text EXI2_Init */ -void EXI2_Init() { - /* empty function */ -} - -/* 80372D00-80372D04 36D640 0004+00 0/0 1/1 0/0 .text EXI2_EnableInterrupts */ -void EXI2_EnableInterrupts() { - /* empty function */ -} - -/* 80372D04-80372D0C 36D644 0008+00 0/0 2/2 0/0 .text EXI2_Poll */ -bool EXI2_Poll() { - return false; -} - -/* 80372D0C-80372D14 36D64C 0008+00 0/0 2/2 0/0 .text EXI2_ReadN */ -bool EXI2_ReadN() { - return false; -} - -/* 80372D14-80372D1C 36D654 0008+00 0/0 1/1 0/0 .text EXI2_WriteN */ -bool EXI2_WriteN() { - return false; -} - -/* 80372D1C-80372D20 36D65C 0004+00 0/0 1/1 0/0 .text EXI2_Reserve */ -void EXI2_Reserve() { - /* empty function */ -} - -/* 80372D20-80372D24 36D660 0004+00 0/0 1/1 0/0 .text EXI2_Unreserve */ -void EXI2_Unreserve() { - /* empty function */ -} - -/* 80372D24-80372D2C 36D664 0008+00 0/0 1/1 0/0 .text AMC_IsStub */ -bool AMC_IsStub() { - return true; -} diff --git a/libs/amcstubs/Makefile b/libs/amcstubs/Makefile index 30b800e534..ec8f5ba003 100644 --- a/libs/amcstubs/Makefile +++ b/libs/amcstubs/Makefile @@ -3,12 +3,14 @@ # LIBAMCSTUBS_A_CPP_FILES := \ - libs/amcstubs/AmcExi2Stubs.cpp \ + libs/amcstubs/AmcExi2Stubs.c \ LIBAMCSTUBS_A_O_FILES := \ $(BUILD_DIR)/libs/amcstubs/AmcExi2Stubs.o \ LIBAMCSTUBS_A_CFLAGS := \ + -O4,p \ + -lang=c \ LIBAMCSTUBS_A_LDFLAGS := \ -nodefaults \ @@ -21,9 +23,9 @@ $(BUILD_DIR)/libamcstubs.a: $(LIBAMCSTUBS_A_O_FILES) @echo $(LIBAMCSTUBS_A_O_FILES) > build/LIBAMCSTUBS_A_ofiles @$(LD) -xm l $(LIBAMCSTUBS_A_LDFLAGS) -o $(BUILD_DIR)/libamcstubs.a @build/LIBAMCSTUBS_A_ofiles -$(BUILD_DIR)/libs/amcstubs/%.o: libs/amcstubs/%.cpp +$(BUILD_DIR)/libs/amcstubs/%.o: libs/amcstubs/%.c @mkdir -p $(@D) @echo building... $< - @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp - @$(CC) $(CFLAGS) $(LIBAMCSTUBS_A_CFLAGS) -c -o $@ $(basename $@).cpp + @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c + @$(CC) $(CFLAGS) $(LIBAMCSTUBS_A_CFLAGS) -c -o $@ $(basename $@).c diff --git a/libs/dolphin/ai/Makefile b/libs/dolphin/ai/Makefile index ac04dae90d..4e1b30c82b 100644 --- a/libs/dolphin/ai/Makefile +++ b/libs/dolphin/ai/Makefile @@ -3,12 +3,14 @@ # LIBAI_A_CPP_FILES := \ - libs/dolphin/ai/ai.cpp \ + libs/dolphin/ai/ai.c \ LIBAI_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/ai/ai.o \ LIBAI_A_CFLAGS := \ + -O4,p \ + -lang=c \ LIBAI_A_LDFLAGS := \ -nodefaults \ @@ -21,9 +23,8 @@ $(BUILD_DIR)/libai.a: $(LIBAI_A_O_FILES) @echo $(LIBAI_A_O_FILES) > build/LIBAI_A_ofiles @$(LD) -xm l $(LIBAI_A_LDFLAGS) -o $(BUILD_DIR)/libai.a @build/LIBAI_A_ofiles -$(BUILD_DIR)/libs/dolphin/ai/%.o: libs/dolphin/ai/%.cpp +$(BUILD_DIR)/libs/dolphin/ai/%.o: libs/dolphin/ai/%.c @mkdir -p $(@D) @echo building... $< - @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp - @$(CC) $(CFLAGS) $(LIBAI_A_CFLAGS) -c -o $@ $(basename $@).cpp - + @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBAI_A_CFLAGS) -c -o $@ $(basename $@).c diff --git a/libs/dolphin/ai/ai.cpp b/libs/dolphin/ai/ai.c similarity index 80% rename from libs/dolphin/ai/ai.cpp rename to libs/dolphin/ai/ai.c index 48cf43246f..091025ddb6 100644 --- a/libs/dolphin/ai/ai.cpp +++ b/libs/dolphin/ai/ai.c @@ -11,38 +11,38 @@ // Forward References: // -extern "C" void AIRegisterDMACallback(); -extern "C" void AIInitDMA(); -extern "C" void AIStartDMA(); -extern "C" void AIStopDMA(); -extern "C" void AISetStreamPlayState(); -extern "C" static void AIGetStreamPlayState(); -extern "C" void AISetDSPSampleRate(); -extern "C" void AIGetDSPSampleRate(); -extern "C" void __AI_set_stream_sample_rate(); -extern "C" static void AIGetStreamSampleRate(); -extern "C" void AISetStreamVolLeft(); -extern "C" static void AIGetStreamVolLeft(); -extern "C" void AISetStreamVolRight(); -extern "C" static void AIGetStreamVolRight(); -extern "C" void AIInit(); -extern "C" void __AISHandler(); -extern "C" void __AIDHandler(); -extern "C" void __AICallbackStackSwitch(); -extern "C" void __AI_SRC_INIT(); +void AIRegisterDMACallback(); +void AIInitDMA(); +void AIStartDMA(); +void AIStopDMA(); +void AISetStreamPlayState(); +static void AIGetStreamPlayState(); +void AISetDSPSampleRate(); +void AIGetDSPSampleRate(); +void __AI_set_stream_sample_rate(); +static void AIGetStreamSampleRate(); +void AISetStreamVolLeft(); +static void AIGetStreamVolLeft(); +void AISetStreamVolRight(); +static void AIGetStreamVolRight(); +void AIInit(); +void __AISHandler(); +void __AIDHandler(); +void __AICallbackStackSwitch(); +void __AI_SRC_INIT(); // // External References: // -extern "C" void OSRegisterVersion(); -extern "C" void OSSetCurrentContext(); -extern "C" void OSClearContext(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void __OSSetInterruptHandler(); -extern "C" void __OSUnmaskInterrupts(); -extern "C" void OSGetTime(); +void OSRegisterVersion(); +void OSSetCurrentContext(); +void OSClearContext(); +void OSDisableInterrupts(); +void OSRestoreInterrupts(); +void __OSSetInterruptHandler(); +void __OSUnmaskInterrupts(); +void OSGetTime(); // // Declarations: @@ -197,81 +197,7 @@ static asm void AIGetStreamVolRight() { /* ############################################################################################## */ /* 803D1BA0-803D1BE8 02ECC0 0044+04 1/0 0/0 0/0 .data @1 */ -SECTION_DATA static u8 lit_1[68 + 4 /* padding */] = { - 0x3C, - 0x3C, - 0x20, - 0x44, - 0x6F, - 0x6C, - 0x70, - 0x68, - 0x69, - 0x6E, - 0x20, - 0x53, - 0x44, - 0x4B, - 0x20, - 0x2D, - 0x20, - 0x41, - 0x49, - 0x09, - 0x72, - 0x65, - 0x6C, - 0x65, - 0x61, - 0x73, - 0x65, - 0x20, - 0x62, - 0x75, - 0x69, - 0x6C, - 0x64, - 0x3A, - 0x20, - 0x41, - 0x70, - 0x72, - 0x20, - 0x20, - 0x35, - 0x20, - 0x32, - 0x30, - 0x30, - 0x34, - 0x20, - 0x30, - 0x34, - 0x3A, - 0x31, - 0x35, - 0x3A, - 0x30, - 0x32, - 0x20, - 0x28, - 0x30, - 0x78, - 0x32, - 0x33, - 0x30, - 0x31, - 0x29, - 0x20, - 0x3E, - 0x3E, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_1[] = "<< Dolphin SDK - AI\trelease build: Apr 5 2004 04:15:02 (0x2301) >>"; /* 80450A40-80450A48 -00001 0004+04 1/1 0/0 0/0 .sdata __AIVersion */ SECTION_SDATA static void* __AIVersion[1 + 1 /* padding */] = { diff --git a/libs/dolphin/ar/Makefile b/libs/dolphin/ar/Makefile index 032caaf45e..26a079b70e 100644 --- a/libs/dolphin/ar/Makefile +++ b/libs/dolphin/ar/Makefile @@ -3,14 +3,16 @@ # LIBAR_A_CPP_FILES := \ - libs/dolphin/ar/ar.cpp \ - libs/dolphin/ar/arq.cpp \ + libs/dolphin/ar/ar.c \ + libs/dolphin/ar/arq.c \ LIBAR_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/ar/ar.o \ $(BUILD_DIR)/libs/dolphin/ar/arq.o \ LIBAR_A_CFLAGS := \ + -O4,p \ + -lang=c \ LIBAR_A_LDFLAGS := \ -nodefaults \ @@ -23,9 +25,9 @@ $(BUILD_DIR)/libar.a: $(LIBAR_A_O_FILES) @echo $(LIBAR_A_O_FILES) > build/LIBAR_A_ofiles @$(LD) -xm l $(LIBAR_A_LDFLAGS) -o $(BUILD_DIR)/libar.a @build/LIBAR_A_ofiles -$(BUILD_DIR)/libs/dolphin/ar/%.o: libs/dolphin/ar/%.cpp +$(BUILD_DIR)/libs/dolphin/ar/%.o: libs/dolphin/ar/%.c @mkdir -p $(@D) @echo building... $< - @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp - @$(CC) $(CFLAGS) $(LIBAR_A_CFLAGS) -c -o $@ $(basename $@).cpp + @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBAR_A_CFLAGS) -c -o $@ $(basename $@).c diff --git a/libs/dolphin/ar/ar.cpp b/libs/dolphin/ar/ar.c similarity index 74% rename from libs/dolphin/ar/ar.cpp rename to libs/dolphin/ar/ar.c index 68c93cc222..58eae0f455 100644 --- a/libs/dolphin/ar/ar.cpp +++ b/libs/dolphin/ar/ar.c @@ -11,29 +11,29 @@ // Forward References: // -extern "C" void ARRegisterDMACallback(); -extern "C" void ARGetDMAStatus(); -extern "C" void ARStartDMA(); -extern "C" void __ARHandler(); -extern "C" void __ARClearInterrupt(); -extern "C" void __ARGetInterruptStatus(); -extern "C" void __ARChecksize(); +void ARRegisterDMACallback(); +void ARGetDMAStatus(); +void ARStartDMA(); +void __ARHandler(); +void __ARClearInterrupt(); +void __ARGetInterruptStatus(); +void __ARChecksize(); // // External References: // SECTION_INIT void memset(); -extern "C" void PPCSync(); -extern "C" void OSRegisterVersion(); -extern "C" void DCInvalidateRange(); -extern "C" void DCFlushRange(); -extern "C" void OSSetCurrentContext(); -extern "C" void OSClearContext(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void __OSSetInterruptHandler(); -extern "C" void __OSUnmaskInterrupts(); +void PPCSync(); +void OSRegisterVersion(); +void DCInvalidateRange(); +void DCFlushRange(); +void OSSetCurrentContext(); +void OSClearContext(); +void OSDisableInterrupts(); +void OSRestoreInterrupts(); +void __OSSetInterruptHandler(); +void __OSUnmaskInterrupts(); // // Declarations: @@ -104,81 +104,7 @@ asm u32 ARAlloc(u32) { /* ############################################################################################## */ /* 803D1BE8-803D1C30 02ED08 0044+04 1/0 0/0 0/0 .data @1 */ -SECTION_DATA static u8 lit_1[68 + 4 /* padding */] = { - 0x3C, - 0x3C, - 0x20, - 0x44, - 0x6F, - 0x6C, - 0x70, - 0x68, - 0x69, - 0x6E, - 0x20, - 0x53, - 0x44, - 0x4B, - 0x20, - 0x2D, - 0x20, - 0x41, - 0x52, - 0x09, - 0x72, - 0x65, - 0x6C, - 0x65, - 0x61, - 0x73, - 0x65, - 0x20, - 0x62, - 0x75, - 0x69, - 0x6C, - 0x64, - 0x3A, - 0x20, - 0x41, - 0x70, - 0x72, - 0x20, - 0x20, - 0x35, - 0x20, - 0x32, - 0x30, - 0x30, - 0x34, - 0x20, - 0x30, - 0x34, - 0x3A, - 0x31, - 0x35, - 0x3A, - 0x30, - 0x33, - 0x20, - 0x28, - 0x30, - 0x78, - 0x32, - 0x33, - 0x30, - 0x31, - 0x29, - 0x20, - 0x3E, - 0x3E, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_1[] = "<< Dolphin SDK - AR\trelease build: Apr 5 2004 04:15:03 (0x2301) >>"; /* 80450A48-80450A50 -00001 0004+04 1/1 0/0 0/0 .sdata __ARVersion */ SECTION_SDATA static void* __ARVersion[1 + 1 /* padding */] = { diff --git a/libs/dolphin/ar/arq.cpp b/libs/dolphin/ar/arq.c similarity index 74% rename from libs/dolphin/ar/arq.cpp rename to libs/dolphin/ar/arq.c index 2c268c9efb..e068cea863 100644 --- a/libs/dolphin/ar/arq.cpp +++ b/libs/dolphin/ar/arq.c @@ -11,20 +11,20 @@ // Forward References: // -extern "C" void __ARQServiceQueueLo(); -extern "C" void __ARQCallbackHack(); -extern "C" void __ARQInterruptServiceRoutine(); -extern "C" void ARQInit(); +void __ARQServiceQueueLo(); +void __ARQCallbackHack(); +void __ARQInterruptServiceRoutine(); +void ARQInit(); // // External References: // -extern "C" void OSRegisterVersion(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void ARRegisterDMACallback(); -extern "C" void ARStartDMA(); +void OSRegisterVersion(); +void OSDisableInterrupts(); +void OSRestoreInterrupts(); +void ARRegisterDMACallback(); +void ARStartDMA(); // // Declarations: @@ -85,81 +85,7 @@ asm void __ARQInterruptServiceRoutine() { /* ############################################################################################## */ /* 803D1C30-803D1C78 02ED50 0045+03 1/0 0/0 0/0 .data @1 */ -SECTION_DATA static u8 lit_1[69 + 3 /* padding */] = { - 0x3C, - 0x3C, - 0x20, - 0x44, - 0x6F, - 0x6C, - 0x70, - 0x68, - 0x69, - 0x6E, - 0x20, - 0x53, - 0x44, - 0x4B, - 0x20, - 0x2D, - 0x20, - 0x41, - 0x52, - 0x51, - 0x09, - 0x72, - 0x65, - 0x6C, - 0x65, - 0x61, - 0x73, - 0x65, - 0x20, - 0x62, - 0x75, - 0x69, - 0x6C, - 0x64, - 0x3A, - 0x20, - 0x41, - 0x70, - 0x72, - 0x20, - 0x20, - 0x35, - 0x20, - 0x32, - 0x30, - 0x30, - 0x34, - 0x20, - 0x30, - 0x34, - 0x3A, - 0x31, - 0x35, - 0x3A, - 0x30, - 0x34, - 0x20, - 0x28, - 0x30, - 0x78, - 0x32, - 0x33, - 0x30, - 0x31, - 0x29, - 0x20, - 0x3E, - 0x3E, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_1[] = "<< Dolphin SDK - ARQ\trelease build: Apr 5 2004 04:15:04 (0x2301) >>"; /* 80450A50-80450A58 -00001 0004+04 1/1 0/0 0/0 .sdata __ARQVersion */ SECTION_SDATA static void* __ARQVersion[1 + 1 /* padding */] = { diff --git a/libs/dolphin/base/Makefile b/libs/dolphin/base/Makefile index 947eb4c808..96c4fd0c8e 100644 --- a/libs/dolphin/base/Makefile +++ b/libs/dolphin/base/Makefile @@ -3,12 +3,14 @@ # LIBBASE_A_CPP_FILES := \ - libs/dolphin/base/PPCArch.cpp \ + libs/dolphin/base/PPCArch.c \ LIBBASE_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/base/PPCArch.o \ LIBBASE_A_CFLAGS := \ + -O4,p \ + -lang=c \ LIBBASE_A_LDFLAGS := \ -nodefaults \ @@ -16,14 +18,16 @@ LIBBASE_A_LDFLAGS := \ -proc gekko \ -linkmode moreram \ +$(BUILD_DIR)/libs/dolphin/base/PPCArch.o: MWCC_VERSION := 1.2.5 + $(BUILD_DIR)/libbase.a: $(LIBBASE_A_O_FILES) @echo linking... $(BUILD_DIR)/libbase.a @echo $(LIBBASE_A_O_FILES) > build/LIBBASE_A_ofiles @$(LD) -xm l $(LIBBASE_A_LDFLAGS) -o $(BUILD_DIR)/libbase.a @build/LIBBASE_A_ofiles -$(BUILD_DIR)/libs/dolphin/base/%.o: libs/dolphin/base/%.cpp +$(BUILD_DIR)/libs/dolphin/base/%.o: libs/dolphin/base/%.c @mkdir -p $(@D) @echo building... $< - @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp - @$(CC) $(CFLAGS) $(LIBBASE_A_CFLAGS) -c -o $@ $(basename $@).cpp + @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c + @$(CC) $(CFLAGS) $(LIBBASE_A_CFLAGS) -c -o $@ $(basename $@).c diff --git a/libs/dolphin/base/PPCArch.cpp b/libs/dolphin/base/PPCArch.c similarity index 84% rename from libs/dolphin/base/PPCArch.cpp rename to libs/dolphin/base/PPCArch.c index 379badcf1f..bc7319b47b 100644 --- a/libs/dolphin/base/PPCArch.cpp +++ b/libs/dolphin/base/PPCArch.c @@ -11,28 +11,28 @@ // Forward References: // -extern "C" void PPCMfmsr(); -extern "C" void PPCMtmsr(); -extern "C" void PPCMfhid0(); -extern "C" void PPCMthid0(); -extern "C" void PPCMfl2cr(); -extern "C" void PPCMtl2cr(); -extern "C" void PPCMtdec(); -extern "C" void PPCSync(); -extern "C" void PPCHalt(); -extern "C" void PPCMtmmcr0(); -extern "C" void PPCMtmmcr1(); -extern "C" void PPCMtpmc1(); -extern "C" void PPCMtpmc2(); -extern "C" void PPCMtpmc3(); -extern "C" void PPCMtpmc4(); -extern "C" void PPCMffpscr(); -extern "C" void PPCMtfpscr(); -extern "C" void PPCMfhid2(); -extern "C" void PPCMthid2(); -extern "C" void PPCMtwpar(); -extern "C" void PPCDisableSpeculation(); -extern "C" void PPCSetFpNonIEEEMode(); +extern void PPCMfmsr(); +extern void PPCMtmsr(); +extern void PPCMfhid0(); +extern void PPCMthid0(); +extern void PPCMfl2cr(); +extern void PPCMtl2cr(); +extern void PPCMtdec(); +extern void PPCSync(); +extern void PPCHalt(); +extern void PPCMtmmcr0(); +extern void PPCMtmmcr1(); +extern void PPCMtpmc1(); +extern void PPCMtpmc2(); +extern void PPCMtpmc3(); +extern void PPCMtpmc4(); +extern u32 PPCMffpscr(); +extern void PPCMtfpscr(); +extern void PPCMfhid2(); +extern void PPCMthid2(); +extern void PPCMtwpar(); +extern void PPCDisableSpeculation(); +extern void PPCSetFpNonIEEEMode(); // // External References: @@ -115,14 +115,17 @@ asm void PPCSync() { } /* 80339D00-80339D14 334640 0014+00 0/0 7/7 0/0 .text PPCHalt */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PPCHalt() { +asm void PPCHalt(void) { + // clang-format off nofralloc -#include "asm/dolphin/base/PPCArch/PPCHalt.s" + sync +_spin: + nop + li r3, 0 + nop + b _spin + // clang-format on } -#pragma pop /* 80339D14-80339D1C -00001 0008+00 0/0 0/0 0/0 .text PPCMtmmcr0 */ asm void PPCMtmmcr0() { @@ -182,7 +185,7 @@ asm void PPCMtpmc4() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void PPCMffpscr() { +asm u32 PPCMffpscr() { nofralloc #include "asm/dolphin/base/PPCArch/PPCMffpscr.s" } diff --git a/libs/dolphin/card/CARDBios.cpp b/libs/dolphin/card/CARDBios.c similarity index 76% rename from libs/dolphin/card/CARDBios.cpp rename to libs/dolphin/card/CARDBios.c index 374d2be96b..c4c2bcada9 100644 --- a/libs/dolphin/card/CARDBios.cpp +++ b/libs/dolphin/card/CARDBios.c @@ -11,63 +11,63 @@ // Forward References: // -extern "C" void __CARDDefaultApiCallback(); -extern "C" void __CARDSyncCallback(); -extern "C" void __CARDExtHandler(); -extern "C" void __CARDExiHandler(); -extern "C" void __CARDTxHandler(); -extern "C" void __CARDUnlockedHandler(); -extern "C" void __CARDEnableInterrupt(); -extern "C" void __CARDReadStatus(); -extern "C" void __CARDReadVendorID(); -extern "C" void __CARDClearStatus(); -extern "C" static void TimeoutHandler(); -extern "C" static void Retry(); -extern "C" static void UnlockedCallback(); -extern "C" void __CARDStart(); -extern "C" void __CARDReadSegment(); -extern "C" void __CARDWritePage(); -extern "C" void __CARDEraseSector(); -extern "C" void CARDInit(); -extern "C" void __CARDGetFontEncode(); -extern "C" void __CARDSetDiskID(); -extern "C" void __CARDGetControlBlock(); -extern "C" void __CARDPutControlBlock(); -extern "C" void CARDFreeBlocks(); -extern "C" void __CARDSync(); -extern "C" static void OnReset(); -extern "C" void CARDGetFastMode(); +void __CARDDefaultApiCallback(); +void __CARDSyncCallback(); +void __CARDExtHandler(); +void __CARDExiHandler(); +void __CARDTxHandler(); +void __CARDUnlockedHandler(); +void __CARDEnableInterrupt(); +void __CARDReadStatus(); +void __CARDReadVendorID(); +void __CARDClearStatus(); +static void TimeoutHandler(); +static void Retry(); +static void UnlockedCallback(); +void __CARDStart(); +void __CARDReadSegment(); +void __CARDWritePage(); +void __CARDEraseSector(); +void CARDInit(); +void __CARDGetFontEncode(); +void __CARDSetDiskID(); +void __CARDGetControlBlock(); +void __CARDPutControlBlock(); +void CARDFreeBlocks(); +void __CARDSync(); +static void OnReset(); +void CARDGetFastMode(); // // External References: // -extern "C" void OSRegisterVersion(); -extern "C" void OSInitAlarm(); -extern "C" void OSCreateAlarm(); -extern "C" void OSSetAlarm(); -extern "C" void OSCancelAlarm(); -extern "C" void OSGetFontEncode(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void OSRegisterResetFunction(); -extern "C" void OSInitThreadQueue(); -extern "C" void OSSleepThread(); -extern "C" void OSWakeupThread(); -extern "C" void EXIImm(); -extern "C" void EXIImmEx(); -extern "C" void EXIDma(); -extern "C" void EXISync(); -extern "C" void EXISetExiCallback(); -extern "C" void EXIProbe(); -extern "C" void EXISelect(); -extern "C" void EXIDeselect(); -extern "C" void EXILock(); -extern "C" void EXIUnlock(); -extern "C" void DSPInit(); -extern "C" void __CARDGetFatBlock(); -extern "C" void __CARDGetDirBlock(); -extern "C" void CARDUnmount(); +void OSRegisterVersion(); +void OSInitAlarm(); +void OSCreateAlarm(); +void OSSetAlarm(); +void OSCancelAlarm(); +void OSGetFontEncode(); +void OSDisableInterrupts(); +void OSRestoreInterrupts(); +void OSRegisterResetFunction(); +void OSInitThreadQueue(); +void OSSleepThread(); +void OSWakeupThread(); +void EXIImm(); +void EXIImmEx(); +void EXIDma(); +void EXISync(); +void EXISetExiCallback(); +void EXIProbe(); +void EXISelect(); +void EXIDeselect(); +void EXILock(); +void EXIUnlock(); +void DSPInit(); +void __CARDGetFatBlock(); +void __CARDGetDirBlock(); +void CARDUnmount(); // // Declarations: @@ -78,6 +78,11 @@ void __CARDDefaultApiCallback() { /* empty function */ } +/* ############################################################################################## */ +/* 8044CDE0-8044CE00 079B00 0020+00 0/1 3/3 0/0 .bss __CARDDiskNone */ +extern u8 __CARDDiskNone[32]; +u8 __CARDDiskNone[32]; + /* ############################################################################################## */ /* 8044CBC0-8044CDE0 0798E0 0220+00 16/16 27/27 0/0 .bss __CARDBlock */ extern u8 __CARDBlock[544]; @@ -245,81 +250,7 @@ asm void __CARDEraseSector() { /* ############################################################################################## */ /* 803D1E38-803D1E80 02EF58 0046+02 1/0 0/0 0/0 .data @1 */ -SECTION_DATA static u8 lit_1[70 + 2 /* padding */] = { - 0x3C, - 0x3C, - 0x20, - 0x44, - 0x6F, - 0x6C, - 0x70, - 0x68, - 0x69, - 0x6E, - 0x20, - 0x53, - 0x44, - 0x4B, - 0x20, - 0x2D, - 0x20, - 0x43, - 0x41, - 0x52, - 0x44, - 0x09, - 0x72, - 0x65, - 0x6C, - 0x65, - 0x61, - 0x73, - 0x65, - 0x20, - 0x62, - 0x75, - 0x69, - 0x6C, - 0x64, - 0x3A, - 0x20, - 0x41, - 0x70, - 0x72, - 0x20, - 0x20, - 0x35, - 0x20, - 0x32, - 0x30, - 0x30, - 0x34, - 0x20, - 0x30, - 0x34, - 0x3A, - 0x31, - 0x35, - 0x3A, - 0x33, - 0x35, - 0x20, - 0x28, - 0x30, - 0x78, - 0x32, - 0x33, - 0x30, - 0x31, - 0x29, - 0x20, - 0x3E, - 0x3E, - 0x00, - /* padding */ - 0x00, - 0x00, -}; +SECTION_DATA static char lit_1[] = "<< Dolphin SDK - CARD\trelease build: Apr 5 2004 04:15:35 (0x2301) >>"; /* 803D1E80-803D1EA0 -00001 0010+10 1/1 0/0 0/0 .data ResetFunctionInfo */ SECTION_DATA static void* ResetFunctionInfo[4 + 4 /* padding */] = { @@ -366,11 +297,6 @@ asm void __CARDGetFontEncode() { } #pragma pop -/* ############################################################################################## */ -/* 8044CDE0-8044CE00 079B00 0020+00 0/1 3/3 0/0 .bss __CARDDiskNone */ -extern u8 __CARDDiskNone[32]; -u8 __CARDDiskNone[32]; - /* 80353B7C-80353BB4 34E4BC 0038+00 1/1 0/0 0/0 .text __CARDSetDiskID */ #pragma push #pragma optimization_level 0 diff --git a/libs/dolphin/card/CARDBlock.cpp b/libs/dolphin/card/CARDBlock.c similarity index 80% rename from libs/dolphin/card/CARDBlock.cpp rename to libs/dolphin/card/CARDBlock.c index f1fd0be486..9fd492ece3 100644 --- a/libs/dolphin/card/CARDBlock.cpp +++ b/libs/dolphin/card/CARDBlock.c @@ -11,23 +11,23 @@ // Forward References: // -extern "C" void __CARDGetFatBlock(); -extern "C" static void WriteCallback(); -extern "C" static void EraseCallback(); -extern "C" void __CARDAllocBlock(); -extern "C" void __CARDUpdateFatBlock(); +void __CARDGetFatBlock(); +static void WriteCallback(); +static void EraseCallback(); +void __CARDAllocBlock(); +void __CARDUpdateFatBlock(); // // External References: // SECTION_INIT void memcpy(); -extern "C" void DCStoreRange(); -extern "C" void __CARDEraseSector(); -extern "C" void __CARDPutControlBlock(); -extern "C" void __CARDWrite(); -extern "C" void __CARDCheckSum(); -extern "C" extern u8 __CARDBlock[544]; +void DCStoreRange(); +void __CARDEraseSector(); +void __CARDPutControlBlock(); +void __CARDWrite(); +void __CARDCheckSum(); +extern u8 __CARDBlock[544]; // // Declarations: diff --git a/libs/dolphin/card/CARDCheck.cpp b/libs/dolphin/card/CARDCheck.c similarity index 74% rename from libs/dolphin/card/CARDCheck.cpp rename to libs/dolphin/card/CARDCheck.c index 86c6a0e81d..12531f4116 100644 --- a/libs/dolphin/card/CARDCheck.cpp +++ b/libs/dolphin/card/CARDCheck.c @@ -11,13 +11,13 @@ // Forward References: // -extern "C" void __CARDCheckSum(); -extern "C" static void VerifyID(); -extern "C" static void VerifyDir(); -extern "C" static void VerifyFAT(); -extern "C" void __CARDVerify(); -extern "C" static void CARDCheckExAsync(); -extern "C" void CARDCheck(); +void __CARDCheckSum(); +static void VerifyID(); +static void VerifyDir(); +static void VerifyFAT(); +void __CARDVerify(); +static void CARDCheckExAsync(); +void CARDCheck(); // // External References: @@ -25,19 +25,19 @@ extern "C" void CARDCheck(); SECTION_INIT void memset(); SECTION_INIT void memcpy(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void __OSLockSramEx(); -extern "C" void __OSUnlockSramEx(); -extern "C" void __CARDSyncCallback(); -extern "C" void __CARDGetFontEncode(); -extern "C" void __CARDGetControlBlock(); -extern "C" void __CARDPutControlBlock(); -extern "C" void __CARDSync(); -extern "C" void __CARDUpdateFatBlock(); -extern "C" void __CARDUpdateDir(); -extern "C" void __shr2i(); -extern "C" extern u8 __CARDBlock[544]; +void OSDisableInterrupts(); +void OSRestoreInterrupts(); +void __OSLockSramEx(); +void __OSUnlockSramEx(); +void __CARDSyncCallback(); +void __CARDGetFontEncode(); +void __CARDGetControlBlock(); +void __CARDPutControlBlock(); +void __CARDSync(); +void __CARDUpdateFatBlock(); +void __CARDUpdateDir(); +void __shr2i(); +extern u8 __CARDBlock[544]; // // Declarations: diff --git a/libs/dolphin/card/CARDCreate.cpp b/libs/dolphin/card/CARDCreate.c similarity index 61% rename from libs/dolphin/card/CARDCreate.cpp rename to libs/dolphin/card/CARDCreate.c index 436a23d22f..4b96229d48 100644 --- a/libs/dolphin/card/CARDCreate.cpp +++ b/libs/dolphin/card/CARDCreate.c @@ -11,31 +11,31 @@ // Forward References: // -extern "C" static void CreateCallbackFat(); -extern "C" static void CARDCreateAsync(); -extern "C" void CARDCreate(); +static void CreateCallbackFat(); +static void CARDCreateAsync(); +void CARDCreate(); // // External References: // SECTION_INIT void memcpy(); -extern "C" void OSGetTime(); -extern "C" void __CARDDefaultApiCallback(); -extern "C" void __CARDSyncCallback(); -extern "C" void __CARDGetControlBlock(); -extern "C" void __CARDPutControlBlock(); -extern "C" void __CARDSync(); -extern "C" void __CARDGetFatBlock(); -extern "C" void __CARDAllocBlock(); -extern "C" void __CARDGetDirBlock(); -extern "C" void __CARDUpdateDir(); -extern "C" void __CARDCompareFileName(); -extern "C" void __div2i(); -extern "C" void memcmp(); -extern "C" void strncpy(); -extern "C" void strlen(); -extern "C" extern u8 __CARDBlock[544]; +void OSGetTime(); +void __CARDDefaultApiCallback(); +void __CARDSyncCallback(); +void __CARDGetControlBlock(); +void __CARDPutControlBlock(); +void __CARDSync(); +void __CARDGetFatBlock(); +void __CARDAllocBlock(); +void __CARDGetDirBlock(); +void __CARDUpdateDir(); +void __CARDCompareFileName(); +void __div2i(); +void memcmp(); +void strncpy(); +void strlen(); +extern u8 __CARDBlock[544]; // // Declarations: diff --git a/libs/dolphin/card/CARDDir.cpp b/libs/dolphin/card/CARDDir.c similarity index 78% rename from libs/dolphin/card/CARDDir.cpp rename to libs/dolphin/card/CARDDir.c index b21bc8dd00..0bd2900be9 100644 --- a/libs/dolphin/card/CARDDir.cpp +++ b/libs/dolphin/card/CARDDir.c @@ -11,22 +11,22 @@ // Forward References: // -extern "C" void __CARDGetDirBlock(); -extern "C" static void WriteCallback(); -extern "C" static void EraseCallback(); -extern "C" void __CARDUpdateDir(); +void __CARDGetDirBlock(); +static void WriteCallback(); +static void EraseCallback(); +void __CARDUpdateDir(); // // External References: // SECTION_INIT void memcpy(); -extern "C" void DCStoreRange(); -extern "C" void __CARDEraseSector(); -extern "C" void __CARDPutControlBlock(); -extern "C" void __CARDWrite(); -extern "C" void __CARDCheckSum(); -extern "C" extern u8 __CARDBlock[544]; +void DCStoreRange(); +void __CARDEraseSector(); +void __CARDPutControlBlock(); +void __CARDWrite(); +void __CARDCheckSum(); +extern u8 __CARDBlock[544]; // // Declarations: diff --git a/libs/dolphin/card/CARDFormat.cpp b/libs/dolphin/card/CARDFormat.c similarity index 60% rename from libs/dolphin/card/CARDFormat.cpp rename to libs/dolphin/card/CARDFormat.c index cc6137bc35..b5c87f0dcb 100644 --- a/libs/dolphin/card/CARDFormat.cpp +++ b/libs/dolphin/card/CARDFormat.c @@ -11,9 +11,9 @@ // Forward References: // -extern "C" static void FormatCallback(); -extern "C" void __CARDFormatRegionAsync(); -extern "C" void CARDFormat(); +static void FormatCallback(); +void __CARDFormatRegionAsync(); +void CARDFormat(); // // External References: @@ -21,23 +21,23 @@ extern "C" void CARDFormat(); SECTION_INIT void memset(); SECTION_INIT void memcpy(); -extern "C" void DCStoreRange(); -extern "C" void __OSLockSram(); -extern "C" void __OSLockSramEx(); -extern "C" void __OSUnlockSram(); -extern "C" void __OSUnlockSramEx(); -extern "C" void OSGetTime(); -extern "C" void __CARDDefaultApiCallback(); -extern "C" void __CARDSyncCallback(); -extern "C" void __CARDEraseSector(); -extern "C" void __CARDGetFontEncode(); -extern "C" void __CARDGetControlBlock(); -extern "C" void __CARDPutControlBlock(); -extern "C" void __CARDSync(); -extern "C" void __CARDWrite(); -extern "C" void __CARDCheckSum(); -extern "C" void __shr2i(); -extern "C" extern u8 __CARDBlock[544]; +void DCStoreRange(); +void __OSLockSram(); +void __OSLockSramEx(); +void __OSUnlockSram(); +void __OSUnlockSramEx(); +void OSGetTime(); +void __CARDDefaultApiCallback(); +void __CARDSyncCallback(); +void __CARDEraseSector(); +void __CARDGetFontEncode(); +void __CARDGetControlBlock(); +void __CARDPutControlBlock(); +void __CARDSync(); +void __CARDWrite(); +void __CARDCheckSum(); +void __shr2i(); +extern u8 __CARDBlock[544]; // // Declarations: diff --git a/libs/dolphin/card/CARDMount.cpp b/libs/dolphin/card/CARDMount.c similarity index 70% rename from libs/dolphin/card/CARDMount.cpp rename to libs/dolphin/card/CARDMount.c index b46f8a4eaa..88cc8d4163 100644 --- a/libs/dolphin/card/CARDMount.cpp +++ b/libs/dolphin/card/CARDMount.c @@ -11,53 +11,53 @@ // Forward References: // -extern "C" static void IsCard(); -extern "C" void CARDProbe(); -extern "C" void CARDProbeEx(); -extern "C" static void DoMount(); -extern "C" void __CARDMountCallback(); -extern "C" static void CARDMountAsync(); -extern "C" void CARDMount(); -extern "C" static void DoUnmount(); -extern "C" void CARDUnmount(); +static void IsCard(); +void CARDProbe(); +void CARDProbeEx(); +static void DoMount(); +void __CARDMountCallback(); +static void CARDMountAsync(); +void CARDMount(); +static void DoUnmount(); +void CARDUnmount(); // // External References: // -extern "C" void OSCancelAlarm(); -extern "C" void DCInvalidateRange(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void __OSLockSramEx(); -extern "C" void __OSUnlockSramEx(); -extern "C" void EXISetExiCallback(); -extern "C" void EXIProbe(); -extern "C" void EXIProbeEx(); -extern "C" void EXIAttach(); -extern "C" void EXIDetach(); -extern "C" void EXILock(); -extern "C" void EXIUnlock(); -extern "C" void EXIGetState(); -extern "C" void EXIGetID(); -extern "C" void __CARDDefaultApiCallback(); -extern "C" void __CARDSyncCallback(); -extern "C" void __CARDExtHandler(); -extern "C" void __CARDExiHandler(); -extern "C" void __CARDUnlockedHandler(); -extern "C" void __CARDEnableInterrupt(); -extern "C" void __CARDReadStatus(); -extern "C" void __CARDReadVendorID(); -extern "C" void __CARDClearStatus(); -extern "C" void __CARDGetControlBlock(); -extern "C" void __CARDPutControlBlock(); -extern "C" void __CARDSync(); -extern "C" void CARDGetFastMode(); -extern "C" void __CARDUnlock(); -extern "C" void __CARDRead(); -extern "C" void __CARDVerify(); -extern "C" extern u8 __CARDBlock[544]; -extern "C" extern u8 struct_80450A70[8]; +void OSCancelAlarm(); +void DCInvalidateRange(); +void OSDisableInterrupts(); +void OSRestoreInterrupts(); +void __OSLockSramEx(); +void __OSUnlockSramEx(); +void EXISetExiCallback(); +void EXIProbe(); +void EXIProbeEx(); +void EXIAttach(); +void EXIDetach(); +void EXILock(); +void EXIUnlock(); +void EXIGetState(); +void EXIGetID(); +void __CARDDefaultApiCallback(); +void __CARDSyncCallback(); +void __CARDExtHandler(); +void __CARDExiHandler(); +void __CARDUnlockedHandler(); +void __CARDEnableInterrupt(); +void __CARDReadStatus(); +void __CARDReadVendorID(); +void __CARDClearStatus(); +void __CARDGetControlBlock(); +void __CARDPutControlBlock(); +void __CARDSync(); +void CARDGetFastMode(); +void __CARDUnlock(); +void __CARDRead(); +void __CARDVerify(); +extern u8 __CARDBlock[544]; +extern u8 struct_80450A70[8]; // // Declarations: diff --git a/libs/dolphin/card/CARDNet.cpp b/libs/dolphin/card/CARDNet.c similarity index 85% rename from libs/dolphin/card/CARDNet.cpp rename to libs/dolphin/card/CARDNet.c index 92ac40b8ef..8c87a4acc4 100644 --- a/libs/dolphin/card/CARDNet.cpp +++ b/libs/dolphin/card/CARDNet.c @@ -11,15 +11,15 @@ // Forward References: // -extern "C" void CARDGetSerialNo(); -extern "C" extern u8 struct_80450A70[8]; +void CARDGetSerialNo(); +extern u8 struct_80450A70[8]; // // External References: // -extern "C" void __CARDGetControlBlock(); -extern "C" void __CARDPutControlBlock(); +void __CARDGetControlBlock(); +void __CARDPutControlBlock(); // // Declarations: diff --git a/libs/dolphin/card/CARDOpen.cpp b/libs/dolphin/card/CARDOpen.c similarity index 80% rename from libs/dolphin/card/CARDOpen.cpp rename to libs/dolphin/card/CARDOpen.c index 986e1fda02..78b2264e9c 100644 --- a/libs/dolphin/card/CARDOpen.cpp +++ b/libs/dolphin/card/CARDOpen.c @@ -11,23 +11,23 @@ // Forward References: // -extern "C" void __CARDCompareFileName(); -extern "C" void __CARDAccess(); -extern "C" void __CARDIsWritable(); -extern "C" void __CARDIsReadable(); -extern "C" void CARDOpen(); -extern "C" void CARDClose(); +void __CARDCompareFileName(); +void __CARDAccess(); +void __CARDIsWritable(); +void __CARDIsReadable(); +void CARDOpen(); +void CARDClose(); // // External References: // -extern "C" void __CARDGetControlBlock(); -extern "C" void __CARDPutControlBlock(); -extern "C" void __CARDGetDirBlock(); -extern "C" void memcmp(); -extern "C" extern u8 __CARDDiskNone[32]; -extern "C" extern u8 struct_80450A70[8]; +void __CARDGetControlBlock(); +void __CARDPutControlBlock(); +void __CARDGetDirBlock(); +void memcmp(); +extern u8 __CARDDiskNone[32]; +extern u8 struct_80450A70[8]; // // Declarations: diff --git a/libs/dolphin/card/CARDRdwr.cpp b/libs/dolphin/card/CARDRdwr.c similarity index 81% rename from libs/dolphin/card/CARDRdwr.cpp rename to libs/dolphin/card/CARDRdwr.c index 6fce3a0c3c..5e2565a384 100644 --- a/libs/dolphin/card/CARDRdwr.cpp +++ b/libs/dolphin/card/CARDRdwr.c @@ -11,19 +11,19 @@ // Forward References: // -extern "C" static void BlockReadCallback(); -extern "C" void __CARDRead(); -extern "C" static void BlockWriteCallback(); -extern "C" void __CARDWrite(); +static void BlockReadCallback(); +void __CARDRead(); +static void BlockWriteCallback(); +void __CARDWrite(); // // External References: // -extern "C" void __CARDReadSegment(); -extern "C" void __CARDWritePage(); -extern "C" void __CARDPutControlBlock(); -extern "C" extern u8 __CARDBlock[544]; +void __CARDReadSegment(); +void __CARDWritePage(); +void __CARDPutControlBlock(); +extern u8 __CARDBlock[544]; // // Declarations: diff --git a/libs/dolphin/card/CARDRead.cpp b/libs/dolphin/card/CARDRead.c similarity index 69% rename from libs/dolphin/card/CARDRead.cpp rename to libs/dolphin/card/CARDRead.c index 610badce89..3f6ae72bb9 100644 --- a/libs/dolphin/card/CARDRead.cpp +++ b/libs/dolphin/card/CARDRead.c @@ -11,26 +11,26 @@ // Forward References: // -extern "C" void __CARDSeek(); -extern "C" static void ReadCallback(); -extern "C" static void CARDReadAsync(); -extern "C" void CARDRead(); +void __CARDSeek(); +static void ReadCallback(); +static void CARDReadAsync(); +void CARDRead(); // // External References: // -extern "C" void DCInvalidateRange(); -extern "C" void __CARDDefaultApiCallback(); -extern "C" void __CARDSyncCallback(); -extern "C" void __CARDGetControlBlock(); -extern "C" void __CARDPutControlBlock(); -extern "C" void __CARDSync(); -extern "C" void __CARDRead(); -extern "C" void __CARDGetFatBlock(); -extern "C" void __CARDGetDirBlock(); -extern "C" void __CARDIsReadable(); -extern "C" extern u8 __CARDBlock[544]; +void DCInvalidateRange(); +void __CARDDefaultApiCallback(); +void __CARDSyncCallback(); +void __CARDGetControlBlock(); +void __CARDPutControlBlock(); +void __CARDSync(); +void __CARDRead(); +void __CARDGetFatBlock(); +void __CARDGetDirBlock(); +void __CARDIsReadable(); +extern u8 __CARDBlock[544]; // // Declarations: diff --git a/libs/dolphin/card/CARDStat.cpp b/libs/dolphin/card/CARDStat.c similarity index 72% rename from libs/dolphin/card/CARDStat.cpp rename to libs/dolphin/card/CARDStat.c index cf84177e07..340690a561 100644 --- a/libs/dolphin/card/CARDStat.cpp +++ b/libs/dolphin/card/CARDStat.c @@ -11,26 +11,26 @@ // Forward References: // -extern "C" static void UpdateIconOffsets(); -extern "C" void CARDGetStatus(); -extern "C" static void CARDSetStatusAsync(); -extern "C" void CARDSetStatus(); +static void UpdateIconOffsets(); +void CARDGetStatus(); +static void CARDSetStatusAsync(); +void CARDSetStatus(); // // External References: // SECTION_INIT void memcpy(); -extern "C" void OSGetTime(); -extern "C" void __CARDSyncCallback(); -extern "C" void __CARDGetControlBlock(); -extern "C" void __CARDPutControlBlock(); -extern "C" void __CARDSync(); -extern "C" void __CARDGetDirBlock(); -extern "C" void __CARDUpdateDir(); -extern "C" void __CARDIsWritable(); -extern "C" void __CARDIsReadable(); -extern "C" void __div2i(); +void OSGetTime(); +void __CARDSyncCallback(); +void __CARDGetControlBlock(); +void __CARDPutControlBlock(); +void __CARDSync(); +void __CARDGetDirBlock(); +void __CARDUpdateDir(); +void __CARDIsWritable(); +void __CARDIsReadable(); +void __div2i(); // // Declarations: diff --git a/libs/dolphin/card/CARDUnlock.cpp b/libs/dolphin/card/CARDUnlock.c similarity index 86% rename from libs/dolphin/card/CARDUnlock.cpp rename to libs/dolphin/card/CARDUnlock.c index 0ece7c87a1..9a039ba191 100644 --- a/libs/dolphin/card/CARDUnlock.cpp +++ b/libs/dolphin/card/CARDUnlock.c @@ -11,32 +11,32 @@ // Forward References: // -extern "C" static void bitrev(); -extern "C" static void ReadArrayUnlock(); -extern "C" static void DummyLen(); -extern "C" void __CARDUnlock(); -extern "C" static void InitCallback(); -extern "C" static void DoneCallback(); +static void bitrev(); +static void ReadArrayUnlock(); +static void DummyLen(); +void __CARDUnlock(); +static void InitCallback(); +static void DoneCallback(); // // External References: // SECTION_INIT void memset(); -extern "C" void DSPAddTask(); -extern "C" void DCInvalidateRange(); -extern "C" void DCFlushRange(); -extern "C" void OSGetTick(); -extern "C" void EXIImmEx(); -extern "C" void EXIProbe(); -extern "C" void EXISelect(); -extern "C" void EXIDeselect(); -extern "C" void EXIUnlock(); -extern "C" void DSPCheckMailToDSP(); -extern "C" void DSPSendMailToDSP(); -extern "C" void __CARDReadStatus(); -extern "C" void __CARDMountCallback(); -extern "C" extern u8 __CARDBlock[544]; +void DSPAddTask(); +void DCInvalidateRange(); +void DCFlushRange(); +void OSGetTick(); +void EXIImmEx(); +void EXIProbe(); +void EXISelect(); +void EXIDeselect(); +void EXIUnlock(); +void DSPCheckMailToDSP(); +void DSPSendMailToDSP(); +void __CARDReadStatus(); +void __CARDMountCallback(); +extern u8 __CARDBlock[544]; // // Declarations: diff --git a/libs/dolphin/card/CARDWrite.cpp b/libs/dolphin/card/CARDWrite.c similarity index 65% rename from libs/dolphin/card/CARDWrite.cpp rename to libs/dolphin/card/CARDWrite.c index 18c8bd5b98..144e7d3080 100644 --- a/libs/dolphin/card/CARDWrite.cpp +++ b/libs/dolphin/card/CARDWrite.c @@ -11,30 +11,30 @@ // Forward References: // -extern "C" static void WriteCallback(); -extern "C" static void EraseCallback(); -extern "C" static void CARDWriteAsync(); -extern "C" void CARDWrite(); +static void WriteCallback(); +static void EraseCallback(); +static void CARDWriteAsync(); +void CARDWrite(); // // External References: // -extern "C" void DCStoreRange(); -extern "C" void OSGetTime(); -extern "C" void __CARDDefaultApiCallback(); -extern "C" void __CARDSyncCallback(); -extern "C" void __CARDEraseSector(); -extern "C" void __CARDPutControlBlock(); -extern "C" void __CARDSync(); -extern "C" void __CARDWrite(); -extern "C" void __CARDGetFatBlock(); -extern "C" void __CARDGetDirBlock(); -extern "C" void __CARDUpdateDir(); -extern "C" void __CARDIsWritable(); -extern "C" void __CARDSeek(); -extern "C" void __div2i(); -extern "C" extern u8 __CARDBlock[544]; +void DCStoreRange(); +void OSGetTime(); +void __CARDDefaultApiCallback(); +void __CARDSyncCallback(); +void __CARDEraseSector(); +void __CARDPutControlBlock(); +void __CARDSync(); +void __CARDWrite(); +void __CARDGetFatBlock(); +void __CARDGetDirBlock(); +void __CARDUpdateDir(); +void __CARDIsWritable(); +void __CARDSeek(); +void __div2i(); +extern u8 __CARDBlock[544]; // // Declarations: diff --git a/libs/dolphin/card/Makefile b/libs/dolphin/card/Makefile index e6e68d4938..962ff91442 100644 --- a/libs/dolphin/card/Makefile +++ b/libs/dolphin/card/Makefile @@ -3,20 +3,20 @@ # LIBCARD_A_CPP_FILES := \ - libs/dolphin/card/CARDBios.cpp \ - libs/dolphin/card/CARDUnlock.cpp \ - libs/dolphin/card/CARDRdwr.cpp \ - libs/dolphin/card/CARDBlock.cpp \ - libs/dolphin/card/CARDDir.cpp \ - libs/dolphin/card/CARDCheck.cpp \ - libs/dolphin/card/CARDMount.cpp \ - libs/dolphin/card/CARDFormat.cpp \ - libs/dolphin/card/CARDOpen.cpp \ - libs/dolphin/card/CARDCreate.cpp \ - libs/dolphin/card/CARDRead.cpp \ - libs/dolphin/card/CARDWrite.cpp \ - libs/dolphin/card/CARDStat.cpp \ - libs/dolphin/card/CARDNet.cpp \ + libs/dolphin/card/CARDBios.c \ + libs/dolphin/card/CARDUnlock.c \ + libs/dolphin/card/CARDRdwr.c \ + libs/dolphin/card/CARDBlock.c \ + libs/dolphin/card/CARDDir.c \ + libs/dolphin/card/CARDCheck.c \ + libs/dolphin/card/CARDMount.c \ + libs/dolphin/card/CARDFormat.c \ + libs/dolphin/card/CARDOpen.c \ + libs/dolphin/card/CARDCreate.c \ + libs/dolphin/card/CARDRead.c \ + libs/dolphin/card/CARDWrite.c \ + libs/dolphin/card/CARDStat.c \ + libs/dolphin/card/CARDNet.c \ LIBCARD_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/card/CARDBios.o \ @@ -35,6 +35,8 @@ LIBCARD_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/card/CARDNet.o \ LIBCARD_A_CFLAGS := \ + -O4,p \ + -lang=c \ LIBCARD_A_LDFLAGS := \ -nodefaults \ @@ -47,9 +49,9 @@ $(BUILD_DIR)/libcard.a: $(LIBCARD_A_O_FILES) @echo $(LIBCARD_A_O_FILES) > build/LIBCARD_A_ofiles @$(LD) -xm l $(LIBCARD_A_LDFLAGS) -o $(BUILD_DIR)/libcard.a @build/LIBCARD_A_ofiles -$(BUILD_DIR)/libs/dolphin/card/%.o: libs/dolphin/card/%.cpp +$(BUILD_DIR)/libs/dolphin/card/%.o: libs/dolphin/card/%.c @mkdir -p $(@D) @echo building... $< - @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp - @$(CC) $(CFLAGS) $(LIBCARD_A_CFLAGS) -c -o $@ $(basename $@).cpp + @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBCARD_A_CFLAGS) -c -o $@ $(basename $@).c diff --git a/libs/dolphin/db/Makefile b/libs/dolphin/db/Makefile index aaf31529b8..4bcef9c0fb 100644 --- a/libs/dolphin/db/Makefile +++ b/libs/dolphin/db/Makefile @@ -3,12 +3,14 @@ # LIBDB_A_CPP_FILES := \ - libs/dolphin/db/db.cpp \ + libs/dolphin/db/db.c \ LIBDB_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/db/db.o \ LIBDB_A_CFLAGS := \ + -O4,p \ + -lang=c \ LIBDB_A_LDFLAGS := \ -nodefaults \ @@ -21,9 +23,9 @@ $(BUILD_DIR)/libdb.a: $(LIBDB_A_O_FILES) @echo $(LIBDB_A_O_FILES) > build/LIBDB_A_ofiles @$(LD) -xm l $(LIBDB_A_LDFLAGS) -o $(BUILD_DIR)/libdb.a @build/LIBDB_A_ofiles -$(BUILD_DIR)/libs/dolphin/db/%.o: libs/dolphin/db/%.cpp +$(BUILD_DIR)/libs/dolphin/db/%.o: libs/dolphin/db/%.c @mkdir -p $(@D) @echo building... $< - @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp - @$(CC) $(CFLAGS) $(LIBDB_A_CFLAGS) -c -o $@ $(basename $@).cpp + @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBDB_A_CFLAGS) -c -o $@ $(basename $@).c diff --git a/libs/dolphin/db/db.cpp b/libs/dolphin/db/db.c similarity index 81% rename from libs/dolphin/db/db.cpp rename to libs/dolphin/db/db.c index cb0db52bcc..66f131c1d1 100644 --- a/libs/dolphin/db/db.cpp +++ b/libs/dolphin/db/db.c @@ -11,19 +11,19 @@ // Forward References: // -extern "C" void DBInit(); -extern "C" void __DBExceptionDestinationAux(); -extern "C" void __DBExceptionDestination(); -extern "C" void __DBIsExceptionMarked(); -extern "C" void DBPrintf(); +void DBInit(); +void __DBExceptionDestinationAux(); +void __DBExceptionDestination(); +void __DBIsExceptionMarked(); +void DBPrintf(); // // External References: // -extern "C" void OSReport(); -extern "C" void PPCHalt(); -extern "C" void OSDumpContext(); +void OSReport(); +void PPCHalt(); +void OSDumpContext(); // // Declarations: @@ -48,10 +48,7 @@ asm void DBInit() { /* ############################################################################################## */ /* 803D1368-803D1380 02E488 0018+00 1/1 0/0 0/0 .data @9 */ -SECTION_DATA static u8 lit_9[24] = { - 0x44, 0x42, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x44, - 0x65, 0x73, 0x74, 0x69, 0x6E, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x0A, 0x00, -}; +SECTION_DATA static char lit_9[] = "DBExceptionDestination\n";; /* 803463C0-80346408 340D00 0048+00 1/1 0/0 0/0 .text __DBExceptionDestinationAux */ #pragma push diff --git a/libs/dolphin/dsp/Makefile b/libs/dolphin/dsp/Makefile index 9b85f6c13b..e4040f765b 100644 --- a/libs/dolphin/dsp/Makefile +++ b/libs/dolphin/dsp/Makefile @@ -3,9 +3,9 @@ # LIBDSP_A_CPP_FILES := \ - libs/dolphin/dsp/dsp.cpp \ - libs/dolphin/dsp/dsp_debug.cpp \ - libs/dolphin/dsp/dsp_task.cpp \ + libs/dolphin/dsp/dsp.c \ + libs/dolphin/dsp/dsp_debug.c \ + libs/dolphin/dsp/dsp_task.c \ LIBDSP_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/dsp/dsp.o \ @@ -13,6 +13,8 @@ LIBDSP_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/dsp/dsp_task.o \ LIBDSP_A_CFLAGS := \ + -O4,p \ + -lang=c \ LIBDSP_A_LDFLAGS := \ -nodefaults \ @@ -25,9 +27,9 @@ $(BUILD_DIR)/libdsp.a: $(LIBDSP_A_O_FILES) @echo $(LIBDSP_A_O_FILES) > build/LIBDSP_A_ofiles @$(LD) -xm l $(LIBDSP_A_LDFLAGS) -o $(BUILD_DIR)/libdsp.a @build/LIBDSP_A_ofiles -$(BUILD_DIR)/libs/dolphin/dsp/%.o: libs/dolphin/dsp/%.cpp +$(BUILD_DIR)/libs/dolphin/dsp/%.o: libs/dolphin/dsp/%.c @mkdir -p $(@D) @echo building... $< - @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp - @$(CC) $(CFLAGS) $(LIBDSP_A_CFLAGS) -c -o $@ $(basename $@).cpp + @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBDSP_A_CFLAGS) -c -o $@ $(basename $@).c diff --git a/libs/dolphin/dsp/dsp.cpp b/libs/dolphin/dsp/dsp.c similarity index 55% rename from libs/dolphin/dsp/dsp.cpp rename to libs/dolphin/dsp/dsp.c index e47ddbbfd2..4e1118a6fe 100644 --- a/libs/dolphin/dsp/dsp.cpp +++ b/libs/dolphin/dsp/dsp.c @@ -11,28 +11,28 @@ // Forward References: // -extern "C" void DSPCheckMailToDSP(); -extern "C" void DSPCheckMailFromDSP(); -extern "C" void DSPReadMailFromDSP(); -extern "C" void DSPSendMailToDSP(); -extern "C" void DSPAssertInt(); -extern "C" void DSPInit(); +void DSPCheckMailToDSP(); +void DSPCheckMailFromDSP(); +void DSPReadMailFromDSP(); +void DSPSendMailToDSP(); +void DSPAssertInt(); +void DSPInit(); // // External References: // -extern "C" void __DSPHandler(); -extern "C" void OSRegisterVersion(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void __OSSetInterruptHandler(); -extern "C" void __OSUnmaskInterrupts(); -extern "C" void __DSP_debug_printf(); -extern "C" extern u8 __DSP_tmp_task[4]; -extern "C" extern u8 __DSP_last_task[4]; -extern "C" extern u8 __DSP_first_task[4]; -extern "C" extern u8 __DSP_curr_task[4]; +void __DSPHandler(); +void OSRegisterVersion(); +void OSDisableInterrupts(); +void OSRestoreInterrupts(); +void __OSSetInterruptHandler(); +void __OSUnmaskInterrupts(); +void __DSP_debug_printf(); +extern u8 __DSP_tmp_task[4]; +extern u8 __DSP_last_task[4]; +extern u8 __DSP_first_task[4]; +extern u8 __DSP_curr_task[4]; // // Declarations: @@ -90,148 +90,24 @@ asm void DSPAssertInt() { /* ############################################################################################## */ /* 803D1C78-803D1CC0 02ED98 0045+03 2/1 0/0 0/0 .data @1 */ -SECTION_DATA static u8 lit_1[69 + 3 /* padding */] = { - 0x3C, - 0x3C, - 0x20, - 0x44, - 0x6F, - 0x6C, - 0x70, - 0x68, - 0x69, - 0x6E, - 0x20, - 0x53, - 0x44, - 0x4B, - 0x20, - 0x2D, - 0x20, - 0x44, - 0x53, - 0x50, - 0x09, - 0x72, - 0x65, - 0x6C, - 0x65, - 0x61, - 0x73, - 0x65, - 0x20, - 0x62, - 0x75, - 0x69, - 0x6C, - 0x64, - 0x3A, - 0x20, - 0x41, - 0x70, - 0x72, - 0x20, - 0x20, - 0x35, - 0x20, - 0x32, - 0x30, - 0x30, - 0x34, - 0x20, - 0x30, - 0x34, - 0x3A, - 0x31, - 0x35, - 0x3A, - 0x33, - 0x32, - 0x20, - 0x28, - 0x30, - 0x78, - 0x32, - 0x33, - 0x30, - 0x31, - 0x29, - 0x20, - 0x3E, - 0x3E, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_1[] = "<< Dolphin SDK - DSP\trelease build: Apr 5 2004 04:15:32 (0x2301) >>"; /* 803D1CC0-803D1CE0 02EDE0 001E+02 0/1 0/0 0/0 .data @19 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_19[30 + 2 /* padding */] = { - 0x44, - 0x53, - 0x50, - 0x49, - 0x6E, - 0x69, - 0x74, - 0x28, - 0x29, - 0x3A, - 0x20, - 0x42, - 0x75, - 0x69, - 0x6C, - 0x64, - 0x20, - 0x44, - 0x61, - 0x74, - 0x65, - 0x3A, - 0x20, - 0x25, - 0x73, - 0x20, - 0x25, - 0x73, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; +SECTION_DATA static char lit_19[] = "DSPInit(): Build Date: %s %s\n"; #pragma pop /* 803D1CE0-803D1CEC 02EE00 000C+00 0/1 0/0 0/0 .data @20 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_20[12] = { - 0x41, 0x70, 0x72, 0x20, 0x20, 0x35, 0x20, 0x32, 0x30, 0x30, 0x34, 0x00, -}; +SECTION_DATA static char lit_20[] = "Apr 5 2004"; #pragma pop /* 803D1CEC-803D1CF8 02EE0C 0009+03 0/1 0/0 0/0 .data @21 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_21[9 + 3 /* padding */] = { - 0x30, - 0x34, - 0x3A, - 0x31, - 0x35, - 0x3A, - 0x33, - 0x32, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_21[] = "04:15:32"; #pragma pop /* 80450A58-80450A60 -00001 0004+04 1/1 0/0 0/0 .sdata __DSPVersion */ diff --git a/libs/dolphin/dsp/dsp_debug.cpp b/libs/dolphin/dsp/dsp_debug.c similarity index 93% rename from libs/dolphin/dsp/dsp_debug.cpp rename to libs/dolphin/dsp/dsp_debug.c index 179cd6d28b..8255a1a364 100644 --- a/libs/dolphin/dsp/dsp_debug.cpp +++ b/libs/dolphin/dsp/dsp_debug.c @@ -11,7 +11,7 @@ // Forward References: // -extern "C" void __DSP_debug_printf(); +void __DSP_debug_printf(); // // External References: diff --git a/libs/dolphin/dsp/dsp_task.c b/libs/dolphin/dsp/dsp_task.c new file mode 100644 index 0000000000..032a0357b4 --- /dev/null +++ b/libs/dolphin/dsp/dsp_task.c @@ -0,0 +1,129 @@ +// +// Generated By: dol2asm +// Translation Unit: dsp_task +// + +#include "dolphin/dsp/dsp_task.h" +#include "dol2asm.h" +#include "dolphin/types.h" + +// +// Forward References: +// + +void __DSP_exec_task(); +void __DSP_boot_task(); +void __DSP_insert_task(); +void __DSP_remove_task(); + +// +// External References: +// + +void DSPCheckMailToDSP(); +void DSPCheckMailFromDSP(); +void DSPReadMailFromDSP(); +void DSPSendMailToDSP(); +void __DSP_debug_printf(); + +// +// Declarations: +// + +/* 803525D0-80352770 34CF10 01A0+00 0/0 1/1 0/0 .text __DSP_exec_task */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void __DSP_exec_task() { + nofralloc +#include "asm/dolphin/dsp/dsp_task/__DSP_exec_task.s" +} +#pragma pop + +/* ############################################################################################## */ +/* 803D1CF8-803D1D18 02EE18 001D+03 1/1 0/0 0/0 .data @266 */ +SECTION_DATA static char lit_266[] = "DSP is booting task: 0x%08X\n"; + +/* 803D1D18-803D1D48 02EE38 002D+03 0/1 0/0 0/0 .data @267 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_267[] = "__DSP_boot_task() : IRAM MMEM ADDR: 0x%08X\n"; +#pragma pop + +/* 803D1D48-803D1D78 02EE68 002D+03 0/1 0/0 0/0 .data @268 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_268[] = "__DSP_boot_task() : IRAM DSP ADDR : 0x%08X\n"; +#pragma pop + +/* 803D1D78-803D1DA8 02EE98 002D+03 0/1 0/0 0/0 .data @269 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_269[] = "__DSP_boot_task() : IRAM LENGTH : 0x%08X\n"; +#pragma pop + +/* 803D1DA8-803D1DD8 02EEC8 002D+03 0/1 0/0 0/0 .data @270 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_270[] = "__DSP_boot_task() : DRAM MMEM ADDR: 0x%08X\n"; +#pragma pop + +/* 803D1DD8-803D1E08 02EEF8 002D+03 0/1 0/0 0/0 .data @271 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_271[] = "__DSP_boot_task() : Start Vector : 0x%08X\n"; +#pragma pop + +/* 80352770-803528FC 34D0B0 018C+00 0/0 1/1 0/0 .text __DSP_boot_task */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void __DSP_boot_task() { + nofralloc +#include "asm/dolphin/dsp/dsp_task/__DSP_boot_task.s" +} +#pragma pop + +/* ############################################################################################## */ +/* 80451914-80451918 000E14 0004+00 2/2 2/2 0/0 .sbss __DSP_curr_task */ +extern u8 __DSP_curr_task[4]; +u8 __DSP_curr_task[4]; + +/* 80451910-80451914 000E10 0004+00 2/2 2/2 0/0 .sbss __DSP_first_task */ +extern u8 __DSP_first_task[4]; +u8 __DSP_first_task[4]; + +/* 8045190C-80451910 000E0C 0004+00 2/2 1/1 0/0 .sbss __DSP_last_task */ +extern u8 __DSP_last_task[4]; +u8 __DSP_last_task[4]; + +/* 80451908-8045190C 000E08 0004+00 0/0 1/1 0/0 .sbss __DSP_tmp_task */ +extern u8 __DSP_tmp_task[4]; +u8 __DSP_tmp_task[4]; + +/* 803528FC-8035299C 34D23C 00A0+00 0/0 1/1 0/0 .text __DSP_insert_task */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void __DSP_insert_task() { + nofralloc +#include "asm/dolphin/dsp/dsp_task/__DSP_insert_task.s" +} +#pragma pop + +/* 8035299C-80352A30 34D2DC 0094+00 0/0 1/1 0/0 .text __DSP_remove_task */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void __DSP_remove_task() { + nofralloc +#include "asm/dolphin/dsp/dsp_task/__DSP_remove_task.s" +} +#pragma pop + +/* ############################################################################################## */ +/* 803D1E08-803D1E38 02EF28 002B+05 0/0 0/0 0/0 .data @294 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_294[] = "__DSP_add_task() : Added task : 0x%08X\n"; +#pragma pop diff --git a/libs/dolphin/dsp/dsp_task.cpp b/libs/dolphin/dsp/dsp_task.cpp deleted file mode 100644 index 9792913724..0000000000 --- a/libs/dolphin/dsp/dsp_task.cpp +++ /dev/null @@ -1,463 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: dsp_task -// - -#include "dolphin/dsp/dsp_task.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void __DSP_exec_task(); -extern "C" void __DSP_boot_task(); -extern "C" void __DSP_insert_task(); -extern "C" void __DSP_remove_task(); - -// -// External References: -// - -extern "C" void DSPCheckMailToDSP(); -extern "C" void DSPCheckMailFromDSP(); -extern "C" void DSPReadMailFromDSP(); -extern "C" void DSPSendMailToDSP(); -extern "C" void __DSP_debug_printf(); - -// -// Declarations: -// - -/* 803525D0-80352770 34CF10 01A0+00 0/0 1/1 0/0 .text __DSP_exec_task */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __DSP_exec_task() { - nofralloc -#include "asm/dolphin/dsp/dsp_task/__DSP_exec_task.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 803D1CF8-803D1D18 02EE18 001D+03 1/1 0/0 0/0 .data @266 */ -SECTION_DATA static u8 lit_266[29 + 3 /* padding */] = { - 0x44, - 0x53, - 0x50, - 0x20, - 0x69, - 0x73, - 0x20, - 0x62, - 0x6F, - 0x6F, - 0x74, - 0x69, - 0x6E, - 0x67, - 0x20, - 0x74, - 0x61, - 0x73, - 0x6B, - 0x3A, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x58, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; - -/* 803D1D18-803D1D48 02EE38 002D+03 0/1 0/0 0/0 .data @267 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_267[45 + 3 /* padding */] = { - 0x5F, - 0x5F, - 0x44, - 0x53, - 0x50, - 0x5F, - 0x62, - 0x6F, - 0x6F, - 0x74, - 0x5F, - 0x74, - 0x61, - 0x73, - 0x6B, - 0x28, - 0x29, - 0x20, - 0x20, - 0x3A, - 0x20, - 0x49, - 0x52, - 0x41, - 0x4D, - 0x20, - 0x4D, - 0x4D, - 0x45, - 0x4D, - 0x20, - 0x41, - 0x44, - 0x44, - 0x52, - 0x3A, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x58, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803D1D48-803D1D78 02EE68 002D+03 0/1 0/0 0/0 .data @268 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_268[45 + 3 /* padding */] = { - 0x5F, - 0x5F, - 0x44, - 0x53, - 0x50, - 0x5F, - 0x62, - 0x6F, - 0x6F, - 0x74, - 0x5F, - 0x74, - 0x61, - 0x73, - 0x6B, - 0x28, - 0x29, - 0x20, - 0x20, - 0x3A, - 0x20, - 0x49, - 0x52, - 0x41, - 0x4D, - 0x20, - 0x44, - 0x53, - 0x50, - 0x20, - 0x41, - 0x44, - 0x44, - 0x52, - 0x20, - 0x3A, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x58, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803D1D78-803D1DA8 02EE98 002D+03 0/1 0/0 0/0 .data @269 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_269[45 + 3 /* padding */] = { - 0x5F, - 0x5F, - 0x44, - 0x53, - 0x50, - 0x5F, - 0x62, - 0x6F, - 0x6F, - 0x74, - 0x5F, - 0x74, - 0x61, - 0x73, - 0x6B, - 0x28, - 0x29, - 0x20, - 0x20, - 0x3A, - 0x20, - 0x49, - 0x52, - 0x41, - 0x4D, - 0x20, - 0x4C, - 0x45, - 0x4E, - 0x47, - 0x54, - 0x48, - 0x20, - 0x20, - 0x20, - 0x3A, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x58, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803D1DA8-803D1DD8 02EEC8 002D+03 0/1 0/0 0/0 .data @270 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_270[45 + 3 /* padding */] = { - 0x5F, - 0x5F, - 0x44, - 0x53, - 0x50, - 0x5F, - 0x62, - 0x6F, - 0x6F, - 0x74, - 0x5F, - 0x74, - 0x61, - 0x73, - 0x6B, - 0x28, - 0x29, - 0x20, - 0x20, - 0x3A, - 0x20, - 0x44, - 0x52, - 0x41, - 0x4D, - 0x20, - 0x4D, - 0x4D, - 0x45, - 0x4D, - 0x20, - 0x41, - 0x44, - 0x44, - 0x52, - 0x3A, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x58, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803D1DD8-803D1E08 02EEF8 002D+03 0/1 0/0 0/0 .data @271 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_271[45 + 3 /* padding */] = { - 0x5F, - 0x5F, - 0x44, - 0x53, - 0x50, - 0x5F, - 0x62, - 0x6F, - 0x6F, - 0x74, - 0x5F, - 0x74, - 0x61, - 0x73, - 0x6B, - 0x28, - 0x29, - 0x20, - 0x20, - 0x3A, - 0x20, - 0x53, - 0x74, - 0x61, - 0x72, - 0x74, - 0x20, - 0x56, - 0x65, - 0x63, - 0x74, - 0x6F, - 0x72, - 0x20, - 0x20, - 0x3A, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x58, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 80352770-803528FC 34D0B0 018C+00 0/0 1/1 0/0 .text __DSP_boot_task */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __DSP_boot_task() { - nofralloc -#include "asm/dolphin/dsp/dsp_task/__DSP_boot_task.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 80451908-8045190C 000E08 0004+00 0/0 1/1 0/0 .sbss __DSP_tmp_task */ -extern u8 __DSP_tmp_task[4]; -u8 __DSP_tmp_task[4]; - -/* 8045190C-80451910 000E0C 0004+00 2/2 1/1 0/0 .sbss __DSP_last_task */ -extern u8 __DSP_last_task[4]; -u8 __DSP_last_task[4]; - -/* 80451910-80451914 000E10 0004+00 2/2 2/2 0/0 .sbss __DSP_first_task */ -extern u8 __DSP_first_task[4]; -u8 __DSP_first_task[4]; - -/* 80451914-80451918 000E14 0004+00 2/2 2/2 0/0 .sbss __DSP_curr_task */ -extern u8 __DSP_curr_task[4]; -u8 __DSP_curr_task[4]; - -/* 803528FC-8035299C 34D23C 00A0+00 0/0 1/1 0/0 .text __DSP_insert_task */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __DSP_insert_task() { - nofralloc -#include "asm/dolphin/dsp/dsp_task/__DSP_insert_task.s" -} -#pragma pop - -/* 8035299C-80352A30 34D2DC 0094+00 0/0 1/1 0/0 .text __DSP_remove_task */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __DSP_remove_task() { - nofralloc -#include "asm/dolphin/dsp/dsp_task/__DSP_remove_task.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 803D1E08-803D1E38 02EF28 002B+05 0/0 0/0 0/0 .data @294 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_294[43 + 5 /* padding */] = { - 0x5F, - 0x5F, - 0x44, - 0x53, - 0x50, - 0x5F, - 0x61, - 0x64, - 0x64, - 0x5F, - 0x74, - 0x61, - 0x73, - 0x6B, - 0x28, - 0x29, - 0x20, - 0x3A, - 0x20, - 0x41, - 0x64, - 0x64, - 0x65, - 0x64, - 0x20, - 0x74, - 0x61, - 0x73, - 0x6B, - 0x20, - 0x20, - 0x20, - 0x20, - 0x3A, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x58, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; -#pragma pop diff --git a/libs/dolphin/dvd/Makefile b/libs/dolphin/dvd/Makefile index 89a730f084..cc820f8960 100644 --- a/libs/dolphin/dvd/Makefile +++ b/libs/dolphin/dvd/Makefile @@ -3,14 +3,14 @@ # LIBDVD_A_CPP_FILES := \ - libs/dolphin/dvd/dvdlow.cpp \ - libs/dolphin/dvd/dvdfs.cpp \ - libs/dolphin/dvd/dvd.cpp \ - libs/dolphin/dvd/dvdqueue.cpp \ - libs/dolphin/dvd/dvderror.cpp \ - libs/dolphin/dvd/dvdidutils.cpp \ - libs/dolphin/dvd/dvdFatal.cpp \ - libs/dolphin/dvd/fstload.cpp \ + libs/dolphin/dvd/dvdlow.c \ + libs/dolphin/dvd/dvdfs.c \ + libs/dolphin/dvd/dvd.c \ + libs/dolphin/dvd/dvdqueue.c \ + libs/dolphin/dvd/dvderror.c \ + libs/dolphin/dvd/dvdidutils.c \ + libs/dolphin/dvd/dvdFatal.c \ + libs/dolphin/dvd/fstload.c \ LIBDVD_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/dvd/dvdlow.o \ @@ -23,6 +23,8 @@ LIBDVD_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/dvd/fstload.o \ LIBDVD_A_CFLAGS := \ + -O4,p \ + -lang=c \ LIBDVD_A_LDFLAGS := \ -nodefaults \ @@ -35,9 +37,9 @@ $(BUILD_DIR)/libdvd.a: $(LIBDVD_A_O_FILES) @echo $(LIBDVD_A_O_FILES) > build/LIBDVD_A_ofiles @$(LD) -xm l $(LIBDVD_A_LDFLAGS) -o $(BUILD_DIR)/libdvd.a @build/LIBDVD_A_ofiles -$(BUILD_DIR)/libs/dolphin/dvd/%.o: libs/dolphin/dvd/%.cpp +$(BUILD_DIR)/libs/dolphin/dvd/%.o: libs/dolphin/dvd/%.c @mkdir -p $(@D) @echo building... $< - @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp - @$(CC) $(CFLAGS) $(LIBDVD_A_CFLAGS) -c -o $@ $(basename $@).cpp + @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBDVD_A_CFLAGS) -c -o $@ $(basename $@).c diff --git a/libs/dolphin/dvd/dvd.cpp b/libs/dolphin/dvd/dvd.c similarity index 77% rename from libs/dolphin/dvd/dvd.cpp rename to libs/dolphin/dvd/dvd.c index 8c1c9b20bc..1167b07ae1 100644 --- a/libs/dolphin/dvd/dvd.cpp +++ b/libs/dolphin/dvd/dvd.c @@ -11,96 +11,95 @@ // Forward References: // -extern "C" static void defaultOptionalCommandChecker(); -extern "C" void DVDInit(); -extern "C" static void stateReadingFST(); -extern "C" static void cbForStateReadingFST(); -extern "C" static void cbForStateError(); -extern "C" static void stateTimeout(); -extern "C" static void stateGettingError(); -extern "C" static void CategorizeError(); -extern "C" static void cbForStateGettingError(); -extern "C" static void cbForUnrecoveredError(); -extern "C" static void cbForUnrecoveredErrorRetry(); -extern "C" static void stateGoToRetry(); -extern "C" static void cbForStateGoToRetry(); -extern "C" static void stateCheckID(); -extern "C" static void stateCheckID3(); -extern "C" static void stateCheckID2a(); -extern "C" static void cbForStateCheckID2a(); -extern "C" static void stateCheckID2(); -extern "C" static void cbForStateCheckID1(); -extern "C" static void cbForStateCheckID2(); -extern "C" static void cbForStateCheckID3(); -extern "C" static void AlarmHandler(); -extern "C" static void stateCoverClosed(); -extern "C" static void stateCoverClosed_CMD(); -extern "C" static void cbForStateCoverClosed(); -extern "C" static void stateMotorStopped(); -extern "C" static void cbForStateMotorStopped(); -extern "C" static void stateReady(); -extern "C" static void stateBusy(); -extern "C" static void cbForStateBusy(); -extern "C" void DVDReadAbsAsyncPrio(); -extern "C" void DVDReadAbsAsyncForBS(); -extern "C" void DVDReadDiskID(); -extern "C" void DVDCancelStreamAsync(); -extern "C" void DVDInquiryAsync(); -extern "C" void DVDReset(); -extern "C" void DVDSetAutoInvalidation(); -extern "C" void DVDResume(); -extern "C" static void DVDCancelAsync(); -extern "C" void DVDCancel(); -extern "C" static void cbForCancelSync(); -extern "C" void __DVDPrepareResetAsync(); -extern "C" void __DVDTestAlarm(); +static void defaultOptionalCommandChecker(); +static void stateReadingFST(); +static void cbForStateReadingFST(); +static void cbForStateError(); +static void stateTimeout(); +static void stateGettingError(); +static void CategorizeError(); +static void cbForStateGettingError(); +static void cbForUnrecoveredError(); +static void cbForUnrecoveredErrorRetry(); +static void stateGoToRetry(); +static void cbForStateGoToRetry(); +static void stateCheckID(); +static void stateCheckID3(); +static void stateCheckID2a(); +static void cbForStateCheckID2a(); +static void stateCheckID2(); +static void cbForStateCheckID1(); +static void cbForStateCheckID2(); +static void cbForStateCheckID3(); +static void AlarmHandler(); +static void stateCoverClosed(); +static void stateCoverClosed_CMD(); +static void cbForStateCoverClosed(); +static void stateMotorStopped(); +static void cbForStateMotorStopped(); +static void stateReady(); +static void stateBusy(); +static void cbForStateBusy(); +void DVDReadAbsAsyncPrio(); +void DVDReadAbsAsyncForBS(); +void DVDReadDiskID(); +void DVDCancelStreamAsync(); +void DVDInquiryAsync(); +void DVDReset(); +void DVDSetAutoInvalidation(); +void DVDResume(); +static void DVDCancelAsync(); +void DVDCancel(); +static void cbForCancelSync(); +void __DVDPrepareResetAsync(); +void __DVDTestAlarm(); // // External References: // SECTION_INIT void memcpy(); -extern "C" void OSReport(); -extern "C" void OSPanic(); -extern "C" void OSRegisterVersion(); -extern "C" void OSCreateAlarm(); -extern "C" void OSSetAlarm(); -extern "C" void DCInvalidateRange(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void __OSSetInterruptHandler(); -extern "C" void __OSUnmaskInterrupts(); -extern "C" void OSInitThreadQueue(); -extern "C" void OSSleepThread(); -extern "C" void OSWakeupThread(); -extern "C" void __DVDInitWA(); -extern "C" void __DVDInterruptHandler(); -extern "C" void DVDLowRead(); -extern "C" void DVDLowSeek(); -extern "C" void DVDLowWaitCoverClose(); -extern "C" void DVDLowReadDiskID(); -extern "C" void DVDLowStopMotor(); -extern "C" void DVDLowRequestError(); -extern "C" void DVDLowInquiry(); -extern "C" void DVDLowAudioStream(); -extern "C" void DVDLowRequestAudioStatus(); -extern "C" void DVDLowAudioBufferConfig(); -extern "C" void DVDLowReset(); -extern "C" void DVDLowBreak(); -extern "C" void DVDLowClearCallback(); -extern "C" void __DVDLowTestAlarm(); -extern "C" void __DVDFSInit(); -extern "C" void __DVDClearWaitingQueue(); -extern "C" void __DVDPushWaitingQueue(); -extern "C" void __DVDPopWaitingQueue(); -extern "C" void __DVDCheckWaitingQueue(); -extern "C" void __DVDDequeueWaitingQueue(); -extern "C" void __DVDStoreErrorCode(); -extern "C" void DVDCompareDiskID(); -extern "C" void __DVDPrintFatalMessage(); -extern "C" void __fstLoad(); -extern "C" void memcmp(); -extern "C" extern u8 __DVDThreadQueue[8]; +void OSReport(); +void OSPanic(); +void OSRegisterVersion(); +void OSCreateAlarm(); +void OSSetAlarm(); +void DCInvalidateRange(); +void OSDisableInterrupts(); +void OSRestoreInterrupts(); +void __OSSetInterruptHandler(); +void __OSUnmaskInterrupts(); +void OSInitThreadQueue(); +void OSSleepThread(); +void OSWakeupThread(); +void __DVDInitWA(); +void __DVDInterruptHandler(); +void DVDLowRead(); +void DVDLowSeek(); +void DVDLowWaitCoverClose(); +void DVDLowReadDiskID(); +void DVDLowStopMotor(); +void DVDLowRequestError(); +void DVDLowInquiry(); +void DVDLowAudioStream(); +void DVDLowRequestAudioStatus(); +void DVDLowAudioBufferConfig(); +void DVDLowReset(); +void DVDLowBreak(); +void DVDLowClearCallback(); +void __DVDLowTestAlarm(); +void __DVDFSInit(); +void __DVDClearWaitingQueue(); +void __DVDPushWaitingQueue(); +void __DVDPopWaitingQueue(); +void __DVDCheckWaitingQueue(); +void __DVDDequeueWaitingQueue(); +void __DVDStoreErrorCode(); +void DVDCompareDiskID(); +void __DVDPrintFatalMessage(); +void __fstLoad(); +void memcmp(); +extern u8 __DVDThreadQueue[8]; // // Declarations: @@ -113,98 +112,10 @@ static void defaultOptionalCommandChecker() { /* ############################################################################################## */ /* 803D1520-803D1568 02E640 0045+03 1/0 0/0 0/0 .data @1 */ -SECTION_DATA static u8 lit_1[69 + 3 /* padding */] = { - 0x3C, - 0x3C, - 0x20, - 0x44, - 0x6F, - 0x6C, - 0x70, - 0x68, - 0x69, - 0x6E, - 0x20, - 0x53, - 0x44, - 0x4B, - 0x20, - 0x2D, - 0x20, - 0x44, - 0x56, - 0x44, - 0x09, - 0x72, - 0x65, - 0x6C, - 0x65, - 0x61, - 0x73, - 0x65, - 0x20, - 0x62, - 0x75, - 0x69, - 0x6C, - 0x64, - 0x3A, - 0x20, - 0x41, - 0x70, - 0x72, - 0x20, - 0x20, - 0x35, - 0x20, - 0x32, - 0x30, - 0x30, - 0x34, - 0x20, - 0x30, - 0x34, - 0x3A, - 0x31, - 0x34, - 0x3A, - 0x35, - 0x31, - 0x20, - 0x28, - 0x30, - 0x78, - 0x32, - 0x33, - 0x30, - 0x31, - 0x29, - 0x20, - 0x3E, - 0x3E, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_1[] = "<< Dolphin SDK - DVD\trelease build: Apr 5 2004 04:14:51 (0x2301) >>"; /* 803D1568-803D1574 02E688 000A+02 1/1 0/0 0/0 .data @18 */ -SECTION_DATA static u8 lit_18[10 + 2 /* padding */] = { - 0x6C, - 0x6F, - 0x61, - 0x64, - 0x20, - 0x66, - 0x73, - 0x74, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; +SECTION_DATA static char lit_18[] = "load fst\n"; /* 804509E8-804509EC -00001 0004+00 1/1 0/0 0/0 .sdata __DVDVersion */ SECTION_SDATA static void* __DVDVersion = (void*)&lit_1; @@ -267,7 +178,7 @@ static u8 DVDInitialized[4]; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void DVDInit() { +asm void DVDInit(void) { nofralloc #include "asm/dolphin/dvd/dvd/DVDInit.s" } @@ -275,12 +186,7 @@ asm void DVDInit() { /* ############################################################################################## */ /* 803D1574-803D15A8 02E694 0034+00 2/2 0/0 0/0 .data @24 */ -SECTION_DATA static u8 lit_24[52] = { - 0x44, 0x56, 0x44, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x44, 0x69, 0x73, 0x6B, - 0x28, 0x29, 0x3A, 0x20, 0x46, 0x53, 0x54, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x64, 0x69, 0x73, 0x63, 0x20, 0x69, 0x73, - 0x20, 0x74, 0x6F, 0x6F, 0x20, 0x62, 0x69, 0x67, 0x2E, 0x20, 0x20, 0x20, 0x00, -}; +SECTION_DATA static char lit_24[] = "DVDChangeDisk(): FST in the new disc is too big. "; /* 8044C900-8044C920 079620 0020+00 8/8 0/0 0/0 .bss BB2 */ static u8 BB2[32]; @@ -292,17 +198,7 @@ SECTION_SDATA static u32 autoInvalidation = 0x00000001; SECTION_SDATA static void* checkOptionalCommand = (void*)defaultOptionalCommandChecker; /* 804509F4-804509FC 000474 0006+02 2/2 0/0 0/0 .sdata @23 */ -SECTION_SDATA static u8 lit_23[6 + 2 /* padding */] = { - 0x64, - 0x76, - 0x64, - 0x2E, - 0x63, - 0x00, - /* padding */ - 0x00, - 0x00, -}; +SECTION_SDATA static char lit_23[] = "dvd.c"; /* 804517C0-804517C8 000CC0 0004+04 6/6 0/0 0/0 .sbss LastState */ static u8 LastState[4 + 4 /* padding */]; @@ -725,77 +621,7 @@ asm void DVDResume() { /* 803D15F8-803D163C 02E718 0041+03 0/0 0/0 0/0 .data @789 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_789[65 + 3 /* padding */] = { - 0x44, - 0x56, - 0x44, - 0x43, - 0x68, - 0x61, - 0x6E, - 0x67, - 0x65, - 0x44, - 0x69, - 0x73, - 0x6B, - 0x41, - 0x73, - 0x79, - 0x6E, - 0x63, - 0x28, - 0x29, - 0x3A, - 0x20, - 0x59, - 0x6F, - 0x75, - 0x20, - 0x63, - 0x61, - 0x6E, - 0x27, - 0x74, - 0x20, - 0x73, - 0x70, - 0x65, - 0x63, - 0x69, - 0x66, - 0x79, - 0x20, - 0x4E, - 0x55, - 0x4C, - 0x4C, - 0x20, - 0x74, - 0x6F, - 0x20, - 0x63, - 0x6F, - 0x6D, - 0x70, - 0x61, - 0x6E, - 0x79, - 0x20, - 0x6E, - 0x61, - 0x6D, - 0x65, - 0x2E, - 0x20, - 0x20, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_789[] = "DVDChangeDiskAsync(): You can't specify NULL to company name. \n"; #pragma pop /* 803D163C-803D1670 -00001 0034+00 1/1 0/0 0/0 .data @956 */ @@ -873,7 +699,7 @@ SECTION_DATA static void* lit_1060[13 + 1 /* padding */] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm s32 DVDCheckDisk() { +asm BOOL DVDCheckDisk() { nofralloc #include "asm/dolphin/dvd/dvd/DVDCheckDisk.s" } diff --git a/libs/dolphin/dvd/dvdFatal.cpp b/libs/dolphin/dvd/dvdFatal.c similarity index 94% rename from libs/dolphin/dvd/dvdFatal.cpp rename to libs/dolphin/dvd/dvdFatal.c index 2a6e85c89c..29b0376a64 100644 --- a/libs/dolphin/dvd/dvdFatal.cpp +++ b/libs/dolphin/dvd/dvdFatal.c @@ -11,7 +11,7 @@ // Forward References: // -extern "C" void __DVDPrintFatalMessage(); +void __DVDPrintFatalMessage(); // // External References: diff --git a/libs/dolphin/dvd/dvderror.cpp b/libs/dolphin/dvd/dvderror.c similarity index 90% rename from libs/dolphin/dvd/dvderror.cpp rename to libs/dolphin/dvd/dvderror.c index 4711f3ae52..9183c16a13 100644 --- a/libs/dolphin/dvd/dvderror.cpp +++ b/libs/dolphin/dvd/dvderror.c @@ -11,15 +11,15 @@ // Forward References: // -extern "C" static void ErrorCode2Num(); -extern "C" void __DVDStoreErrorCode(); +static void ErrorCode2Num(); +void __DVDStoreErrorCode(); // // External References: // -extern "C" void __OSLockSramEx(); -extern "C" void __OSUnlockSramEx(); +void __OSLockSramEx(); +void __OSUnlockSramEx(); // // Declarations: diff --git a/libs/dolphin/dvd/dvdfs.cpp b/libs/dolphin/dvd/dvdfs.c similarity index 57% rename from libs/dolphin/dvd/dvdfs.cpp rename to libs/dolphin/dvd/dvdfs.c index e9372e8ea1..4a32ab3ace 100644 --- a/libs/dolphin/dvd/dvdfs.cpp +++ b/libs/dolphin/dvd/dvdfs.c @@ -11,36 +11,36 @@ // Forward References: // -extern "C" void __DVDFSInit(); -extern "C" void DVDConvertPathToEntrynum(); -extern "C" void DVDFastOpen(); -extern "C" void DVDOpen(); -extern "C" void DVDClose(); -extern "C" static void entryToPath(); -extern "C" static void DVDConvertEntrynumToPath(); -extern "C" static void DVDGetCurrentDir(); -extern "C" void DVDChangeDir(); -extern "C" void DVDReadAsyncPrio(); -extern "C" static void cbForReadAsync(); -extern "C" void DVDReadPrio(); -extern "C" static void cbForReadSync(); -extern "C" void DVDOpenDir(); -extern "C" void DVDReadDir(); -extern "C" bool DVDCloseDir(); +void __DVDFSInit(); +void DVDConvertPathToEntrynum(); +void DVDFastOpen(); +void DVDOpen(); +void DVDClose(); +static void entryToPath(); +static void DVDConvertEntrynumToPath(); +static void DVDGetCurrentDir(); +void DVDChangeDir(); +void DVDReadAsyncPrio(); +static void cbForReadAsync(); +void DVDReadPrio(); +static void cbForReadSync(); +void DVDOpenDir(); +void DVDReadDir(); +u8 DVDCloseDir(); // // External References: // -extern "C" void OSReport(); -extern "C" void OSPanic(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void OSSleepThread(); -extern "C" void OSWakeupThread(); -extern "C" void DVDReadAbsAsyncPrio(); -extern "C" void DVDCancel(); -extern "C" void tolower(); +void OSReport(); +void OSPanic(); +void OSDisableInterrupts(); +void OSRestoreInterrupts(); +void OSSleepThread(); +void OSWakeupThread(); +void DVDReadAbsAsyncPrio(); +void DVDCancel(); +void tolower(); // // Declarations: @@ -71,30 +71,21 @@ asm void __DVDFSInit() { /* ############################################################################################## */ /* 803D1380-803D1448 02E4A0 00C8+00 1/1 0/0 0/0 .data @119 */ -SECTION_DATA static u8 lit_119[200] = { - 0x44, 0x56, 0x44, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x45, 0x6E, 0x74, 0x72, 0x79, 0x6E, - 0x75, 0x6D, 0x54, 0x6F, 0x50, 0x61, 0x74, 0x68, 0x28, 0x70, 0x6F, 0x73, 0x73, 0x69, 0x62, 0x6C, - 0x79, 0x20, 0x44, 0x56, 0x44, 0x4F, 0x70, 0x65, 0x6E, 0x20, 0x6F, 0x72, 0x20, 0x44, 0x56, 0x44, - 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x44, 0x69, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x44, 0x56, 0x44, - 0x4F, 0x70, 0x65, 0x6E, 0x44, 0x69, 0x72, 0x29, 0x3A, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, - 0x69, 0x65, 0x64, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x6F, 0x72, - 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x28, 0x25, 0x73, 0x29, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x6E, - 0x27, 0x74, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x73, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, - 0x64, 0x20, 0x38, 0x2E, 0x33, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x2E, 0x20, 0x54, 0x68, - 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x6D, 0x70, 0x6F, 0x72, 0x61, 0x72, - 0x79, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x6E, - 0x64, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, - 0x64, 0x20, 0x73, 0x6F, 0x6F, 0x6E, 0x0A, 0x00, -}; +SECTION_DATA static char lit_119[] = + "DVDConvertEntrynumToPath(possibly DVDOpen or DVDChangeDir or DVDOpenDir): specified directory " + "or file (%s) doesn't match standard 8.3 format. This is a temporary restriction and will be " + "removed soon\n"; /* 804509E0-804509E8 000460 0008+00 3/3 0/0 0/0 .sdata @118 */ -SECTION_SDATA static u8 lit_118[8] = { - 0x64, 0x76, 0x64, 0x66, 0x73, 0x2E, 0x63, 0x00, -}; +SECTION_SDATA static char lit_118[] = "dvdfs.c"; /* 80451768-8045176C 000C68 0004+00 4/4 0/0 0/0 .sbss currentDirectory */ static u8 currentDirectory[4]; +/* 80451770-80451778 000C70 0008+00 2/2 3/3 0/0 .sbss __DVDThreadQueue */ +extern u8 __DVDThreadQueue[8]; +u8 __DVDThreadQueue[8]; + /* 8045176C-80451770 000C6C 0004+00 1/1 1/1 0/0 .sbss __DVDLongFileNameFlag */ extern u8 __DVDLongFileNameFlag[4]; u8 __DVDLongFileNameFlag[4]; @@ -121,65 +112,7 @@ asm void DVDFastOpen() { /* ############################################################################################## */ /* 803D1448-803D1480 02E568 0037+01 1/1 0/0 0/0 .data @140 */ -SECTION_DATA static u8 lit_140[55 + 1 /* padding */] = { - 0x57, - 0x61, - 0x72, - 0x6E, - 0x69, - 0x6E, - 0x67, - 0x3A, - 0x20, - 0x44, - 0x56, - 0x44, - 0x4F, - 0x70, - 0x65, - 0x6E, - 0x28, - 0x29, - 0x3A, - 0x20, - 0x66, - 0x69, - 0x6C, - 0x65, - 0x20, - 0x27, - 0x25, - 0x73, - 0x27, - 0x20, - 0x77, - 0x61, - 0x73, - 0x20, - 0x6E, - 0x6F, - 0x74, - 0x20, - 0x66, - 0x6F, - 0x75, - 0x6E, - 0x64, - 0x20, - 0x75, - 0x6E, - 0x64, - 0x65, - 0x72, - 0x20, - 0x25, - 0x73, - 0x2E, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; +SECTION_DATA static char lit_140[] = "Warning: DVDOpen(): file '%s' was not found under %s.\n"; /* 80348890-80348958 3431D0 00C8+00 0/0 3/3 1/1 .text DVDOpen */ #pragma push @@ -243,12 +176,7 @@ asm void DVDChangeDir() { /* ############################################################################################## */ /* 803D1480-803D14B4 02E5A0 0034+00 1/1 0/0 0/0 .data @239 */ -SECTION_DATA static u8 lit_239[52] = { - 0x44, 0x56, 0x44, 0x52, 0x65, 0x61, 0x64, 0x41, 0x73, 0x79, 0x6E, 0x63, 0x28, - 0x29, 0x3A, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, - 0x61, 0x72, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x75, 0x74, 0x20, 0x6F, - 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x20, 0x00, -}; +SECTION_DATA static char lit_239[] = "DVDReadAsync(): specified area is out of the file "; /* 80348D54-80348E14 343694 00C0+00 0/0 2/2 0/0 .text DVDReadAsyncPrio */ #pragma push @@ -272,61 +200,7 @@ static asm void cbForReadAsync() { /* ############################################################################################## */ /* 803D14B4-803D14E4 02E5D4 002F+01 1/1 0/0 0/0 .data @265 */ -SECTION_DATA static u8 lit_265[47 + 1 /* padding */] = { - 0x44, - 0x56, - 0x44, - 0x52, - 0x65, - 0x61, - 0x64, - 0x28, - 0x29, - 0x3A, - 0x20, - 0x73, - 0x70, - 0x65, - 0x63, - 0x69, - 0x66, - 0x69, - 0x65, - 0x64, - 0x20, - 0x61, - 0x72, - 0x65, - 0x61, - 0x20, - 0x69, - 0x73, - 0x20, - 0x6F, - 0x75, - 0x74, - 0x20, - 0x6F, - 0x66, - 0x20, - 0x74, - 0x68, - 0x65, - 0x20, - 0x66, - 0x69, - 0x6C, - 0x65, - 0x20, - 0x20, - 0x00, - /* padding */ - 0x00, -}; - -/* 80451770-80451778 000C70 0008+00 2/2 3/3 0/0 .sbss __DVDThreadQueue */ -extern u8 __DVDThreadQueue[8]; -u8 __DVDThreadQueue[8]; +SECTION_DATA static char lit_265[] = "DVDRead(): specified area is out of the file "; /* 80348E44-80348F5C 343784 0118+00 0/0 9/9 3/3 .text DVDReadPrio */ #pragma push @@ -350,69 +224,7 @@ static asm void cbForReadSync() { /* ############################################################################################## */ /* 803D14E4-803D1520 02E604 003A+02 1/1 0/0 0/0 .data @311 */ -SECTION_DATA static u8 lit_311[58 + 2 /* padding */] = { - 0x57, - 0x61, - 0x72, - 0x6E, - 0x69, - 0x6E, - 0x67, - 0x3A, - 0x20, - 0x44, - 0x56, - 0x44, - 0x4F, - 0x70, - 0x65, - 0x6E, - 0x44, - 0x69, - 0x72, - 0x28, - 0x29, - 0x3A, - 0x20, - 0x66, - 0x69, - 0x6C, - 0x65, - 0x20, - 0x27, - 0x25, - 0x73, - 0x27, - 0x20, - 0x77, - 0x61, - 0x73, - 0x20, - 0x6E, - 0x6F, - 0x74, - 0x20, - 0x66, - 0x6F, - 0x75, - 0x6E, - 0x64, - 0x20, - 0x75, - 0x6E, - 0x64, - 0x65, - 0x72, - 0x20, - 0x25, - 0x73, - 0x2E, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; +SECTION_DATA static char lit_311[] = "Warning: DVDOpenDir(): file '%s' was not found under %s.\n"; /* 80348F80-80349040 3438C0 00C0+00 0/0 3/3 0/0 .text DVDOpenDir */ #pragma push @@ -435,6 +247,6 @@ asm void DVDReadDir() { #pragma pop /* 803490E4-803490EC 343A24 0008+00 0/0 3/3 0/0 .text DVDCloseDir */ -bool DVDCloseDir() { - return true; +u8 DVDCloseDir() { + return 1; } diff --git a/libs/dolphin/dvd/dvdidutils.cpp b/libs/dolphin/dvd/dvdidutils.c similarity index 88% rename from libs/dolphin/dvd/dvdidutils.cpp rename to libs/dolphin/dvd/dvdidutils.c index ee30874d05..5b5b1cc636 100644 --- a/libs/dolphin/dvd/dvdidutils.cpp +++ b/libs/dolphin/dvd/dvdidutils.c @@ -11,13 +11,13 @@ // Forward References: // -extern "C" void DVDCompareDiskID(); +void DVDCompareDiskID(); // // External References: // -extern "C" void strncmp(); +void strncmp(); // // Declarations: diff --git a/libs/dolphin/dvd/dvdlow.cpp b/libs/dolphin/dvd/dvdlow.c similarity index 88% rename from libs/dolphin/dvd/dvdlow.cpp rename to libs/dolphin/dvd/dvdlow.c index 065334dbad..d928e81efe 100644 --- a/libs/dolphin/dvd/dvdlow.cpp +++ b/libs/dolphin/dvd/dvdlow.c @@ -11,43 +11,43 @@ // Forward References: // -extern "C" void __DVDInitWA(); -extern "C" void __DVDInterruptHandler(); -extern "C" static void AlarmHandler(); -extern "C" static void AlarmHandlerForTimeout(); -extern "C" static void Read(); -extern "C" static void SeekTwiceBeforeRead(); -extern "C" void DVDLowRead(); -extern "C" void DVDLowSeek(); -extern "C" void DVDLowWaitCoverClose(); -extern "C" void DVDLowReadDiskID(); -extern "C" void DVDLowStopMotor(); -extern "C" void DVDLowRequestError(); -extern "C" void DVDLowInquiry(); -extern "C" void DVDLowAudioStream(); -extern "C" void DVDLowRequestAudioStatus(); -extern "C" void DVDLowAudioBufferConfig(); -extern "C" void DVDLowReset(); -extern "C" void DVDLowBreak(); -extern "C" void DVDLowClearCallback(); -extern "C" void __DVDLowSetWAType(); -extern "C" void __DVDLowTestAlarm(); +void __DVDInitWA(); +void __DVDInterruptHandler(); +static void AlarmHandler(); +static void AlarmHandlerForTimeout(); +static void Read(); +static void SeekTwiceBeforeRead(); +void DVDLowRead(); +void DVDLowSeek(); +void DVDLowWaitCoverClose(); +void DVDLowReadDiskID(); +void DVDLowStopMotor(); +void DVDLowRequestError(); +void DVDLowInquiry(); +void DVDLowAudioStream(); +void DVDLowRequestAudioStatus(); +void DVDLowAudioBufferConfig(); +void DVDLowReset(); +void DVDLowBreak(); +void DVDLowClearCallback(); +void __DVDLowSetWAType(); +void __DVDLowTestAlarm(); // // External References: // -extern "C" void OSInitAlarm(); -extern "C" void OSCreateAlarm(); -extern "C" void OSSetAlarm(); -extern "C" void OSCancelAlarm(); -extern "C" void OSSetCurrentContext(); -extern "C" void OSClearContext(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void __OSMaskInterrupts(); -extern "C" void __OSGetSystemTime(); -extern "C" void DVDGetCurrentDiskID(); +void OSInitAlarm(); +void OSCreateAlarm(); +void OSSetAlarm(); +void OSCancelAlarm(); +void OSSetCurrentContext(); +void OSClearContext(); +void OSDisableInterrupts(); +void OSRestoreInterrupts(); +void __OSMaskInterrupts(); +void __OSGetSystemTime(); +void DVDGetCurrentDiskID(); // // Declarations: diff --git a/libs/dolphin/dvd/dvdqueue.cpp b/libs/dolphin/dvd/dvdqueue.c similarity index 86% rename from libs/dolphin/dvd/dvdqueue.cpp rename to libs/dolphin/dvd/dvdqueue.c index f5ca812af7..07e41a615b 100644 --- a/libs/dolphin/dvd/dvdqueue.cpp +++ b/libs/dolphin/dvd/dvdqueue.c @@ -11,18 +11,18 @@ // Forward References: // -extern "C" void __DVDClearWaitingQueue(); -extern "C" void __DVDPushWaitingQueue(); -extern "C" void __DVDPopWaitingQueue(); -extern "C" void __DVDCheckWaitingQueue(); -extern "C" void __DVDDequeueWaitingQueue(); +void __DVDClearWaitingQueue(); +void __DVDPushWaitingQueue(); +void __DVDPopWaitingQueue(); +void __DVDCheckWaitingQueue(); +void __DVDDequeueWaitingQueue(); // // External References: // -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); +void OSDisableInterrupts(); +void OSRestoreInterrupts(); // // Declarations: diff --git a/libs/dolphin/dvd/fstload.cpp b/libs/dolphin/dvd/fstload.c similarity index 55% rename from libs/dolphin/dvd/fstload.cpp rename to libs/dolphin/dvd/fstload.c index ea82a7c34c..80795a70a1 100644 --- a/libs/dolphin/dvd/fstload.cpp +++ b/libs/dolphin/dvd/fstload.c @@ -11,21 +11,21 @@ // Forward References: // -extern "C" static void cb(); -extern "C" void __fstLoad(); +static void cb(); +void __fstLoad(); // // External References: // SECTION_INIT void memcpy(); -extern "C" void OSReport(); -extern "C" void OSGetArenaHi(); -extern "C" void OSSetArenaHi(); -extern "C" void DVDReadAbsAsyncForBS(); -extern "C" void DVDReadDiskID(); -extern "C" void DVDReset(); -extern "C" void DVDGetDriveStatus(); +void OSReport(); +void OSGetArenaHi(); +void OSSetArenaHi(); +void DVDReadAbsAsyncForBS(); +void DVDReadDiskID(); +void DVDReset(); +void DVDGetDriveStatus(); // // Declarations: @@ -53,95 +53,30 @@ static asm void cb() { /* ############################################################################################## */ /* 803D16F0-803D170C 02E810 001A+02 1/1 0/0 0/0 .data @38 */ -SECTION_DATA static u8 lit_38[26 + 2 /* padding */] = { - 0x20, - 0x20, - 0x47, - 0x61, - 0x6D, - 0x65, - 0x20, - 0x4E, - 0x61, - 0x6D, - 0x65, - 0x20, - 0x2E, - 0x2E, - 0x2E, - 0x20, - 0x25, - 0x63, - 0x25, - 0x63, - 0x25, - 0x63, - 0x25, - 0x63, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; +SECTION_DATA static char lit_38[] = " Game Name ... %c%c%c%c\n"; /* 803D170C-803D1724 02E82C 0016+02 0/1 0/0 0/0 .data @39 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_39[22 + 2 /* padding */] = { - 0x20, - 0x20, - 0x43, - 0x6F, - 0x6D, - 0x70, - 0x61, - 0x6E, - 0x79, - 0x20, - 0x2E, - 0x2E, - 0x2E, - 0x2E, - 0x2E, - 0x20, - 0x25, - 0x63, - 0x25, - 0x63, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; +SECTION_DATA static char lit_39[] = " Company ..... %c%c\n"; #pragma pop /* 803D1724-803D1738 02E844 0014+00 0/1 0/0 0/0 .data @40 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_40[20] = { - 0x20, 0x20, 0x44, 0x69, 0x73, 0x6B, 0x20, 0x23, 0x20, 0x2E, - 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x20, 0x25, 0x64, 0x0A, 0x00, -}; +SECTION_DATA static char lit_40[] = " Disk # ...... %d\n"; #pragma pop /* 803D1738-803D174C 02E858 0014+00 0/1 0/0 0/0 .data @41 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_41[20] = { - 0x20, 0x20, 0x47, 0x61, 0x6D, 0x65, 0x20, 0x76, 0x65, 0x72, - 0x20, 0x2E, 0x2E, 0x2E, 0x2E, 0x20, 0x25, 0x64, 0x0A, 0x00, -}; +SECTION_DATA static char lit_41[] = " Game ver .... %d\n"; #pragma pop /* 803D174C-803D1760 02E86C 0014+00 0/1 0/0 0/0 .data @44 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_44[20] = { - 0x20, 0x20, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x69, 0x6E, - 0x67, 0x20, 0x2E, 0x2E, 0x2E, 0x20, 0x25, 0x73, 0x0A, 0x00, -}; +SECTION_DATA static char lit_44[] = " Streaming ... %s\n"; #pragma pop /* 8044C9B8-8044C9F8 0796D8 003F+01 1/1 0/0 0/0 .bss bb2Buf */ @@ -151,27 +86,13 @@ static u8 bb2Buf[63 + 1 /* padding */]; static u8 block[48]; /* 80450A00-80450A04 000480 0002+02 1/1 0/0 0/0 .sdata @37 */ -SECTION_SDATA static u16 lit_37[1 + 1 /* padding */] = { - 0x0A00, - /* padding */ - 0x0000, -}; +SECTION_SDATA static char lit_37[] = "\n"; /* 80450A04-80450A08 000484 0004+00 1/1 0/0 0/0 .sdata @42 */ -SECTION_SDATA static u32 lit_42 = 0x4F464600; +SECTION_SDATA static char lit_42[] = "OFF"; /* 80450A08-80450A10 000488 0003+05 1/1 0/0 0/0 .sdata @43 */ -SECTION_SDATA static u8 lit_43[3 + 5 /* padding */] = { - 0x4F, - 0x4E, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; +SECTION_SDATA static char lit_43[] = "ON"; /* 8034BE04-8034BF6C 346744 0168+00 0/0 1/1 0/0 .text __fstLoad */ #pragma push diff --git a/libs/dolphin/gd/GDBase.c b/libs/dolphin/gd/GDBase.c new file mode 100644 index 0000000000..700d63635d --- /dev/null +++ b/libs/dolphin/gd/GDBase.c @@ -0,0 +1,50 @@ +/** + * GDBase.c + * Description: + */ + +#include "dolphin/gd/GDBase.h" +#include "dolphin/os/OS.h" + +/* 80360F98-80360FB0 35B8D8 0018+00 0/0 6/6 0/0 .text GDInitGDLObj */ +void GDInitGDLObj(GDLObj* obj, u8* start, u32 len) { + obj->start = start; + obj->ptr = start; + obj->end = start + len; + obj->length = len; +} + +/* ############################################################################################## */ +/* 80451980-80451984 000E80 0004+00 2/2 100/100 0/0 .sbss __GDCurrentDL */ +GDLObj* __GDCurrentDL = NULL; + +/* ############################################################################################## */ +/* 80451984-80451988 000E84 0004+00 1/1 0/0 0/0 .sbss overflowcb */ +static GDOverflowCallback overflowcb = NULL; + +/* 80360FB0-80360FDC 35B8F0 002C+00 0/0 2/2 0/0 .text GDFlushCurrToMem */ +void GDFlushCurrToMem(void) { + DCFlushRange(__GDCurrentDL->start, __GDCurrentDL->length); +} + +static inline void __GDWrite(u8 data) { + *__GDCurrentDL->ptr++ = data; +} + +/* 80360FDC-803610D4 35B91C 00F8+00 0/0 2/2 0/0 .text GDPadCurr32 */ +void GDPadCurr32(void) { + u32 i = ((u32)__GDCurrentDL->ptr & 31); + + if (i) { + for (i; i < 32; i++) { + __GDWrite(0); + } + } +} + +/* 803610D4-80361104 35BA14 0030+00 0/0 41/41 0/0 .text GDOverflowed */ +void GDOverflowed(void) { + if (overflowcb != NULL) { + overflowcb(); + } +} diff --git a/libs/dolphin/gd/GDBase.cpp b/libs/dolphin/gd/GDBase.cpp deleted file mode 100644 index d75b7ad02e..0000000000 --- a/libs/dolphin/gd/GDBase.cpp +++ /dev/null @@ -1,74 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: GDBase -// - -#include "dolphin/gd/GDBase.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void GDFlushCurrToMem(); -extern "C" void GDPadCurr32(); -extern "C" void GDOverflowed(); - -// -// External References: -// - -extern "C" void DCFlushRange(); - -// -// Declarations: -// - -/* 80360F98-80360FB0 35B8D8 0018+00 0/0 6/6 0/0 .text GDInitGDLObj */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GDInitGDLObj(GDLObj* obj, u8* start, u32 len) { - nofralloc -#include "asm/dolphin/gd/GDBase/GDInitGDLObj.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 80451980-80451984 000E80 0004+00 2/2 100/100 0/0 .sbss __GDCurrentDL */ -GDLObj* __GDCurrentDL; - -/* 80360FB0-80360FDC 35B8F0 002C+00 0/0 2/2 0/0 .text GDFlushCurrToMem */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GDFlushCurrToMem() { - nofralloc -#include "asm/dolphin/gd/GDBase/GDFlushCurrToMem.s" -} -#pragma pop - -/* 80360FDC-803610D4 35B91C 00F8+00 0/0 2/2 0/0 .text GDPadCurr32 */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GDPadCurr32() { - nofralloc -#include "asm/dolphin/gd/GDBase/GDPadCurr32.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 80451984-80451988 000E84 0004+00 1/1 0/0 0/0 .sbss overflowcb */ -static u8 overflowcb[4]; - -/* 803610D4-80361104 35BA14 0030+00 0/0 41/41 0/0 .text GDOverflowed */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GDOverflowed() { - nofralloc -#include "asm/dolphin/gd/GDBase/GDOverflowed.s" -} -#pragma pop diff --git a/libs/dolphin/gd/GDGeometry.cpp b/libs/dolphin/gd/GDGeometry.c similarity index 93% rename from libs/dolphin/gd/GDGeometry.cpp rename to libs/dolphin/gd/GDGeometry.c index b86e162780..f25b2adc87 100644 --- a/libs/dolphin/gd/GDGeometry.cpp +++ b/libs/dolphin/gd/GDGeometry.c @@ -10,16 +10,16 @@ // Forward References: // -extern "C" void GDSetVtxDescv(); -extern "C" void GDSetArray(); -extern "C" void GDSetArrayRaw(); +void GDSetVtxDescv(); +void GDSetArray(); +void GDSetArrayRaw(); // // External References: // -extern "C" void GDOverflowed(); -extern "C" extern u8 __GDCurrentDL[4]; +void GDOverflowed(); +extern u8 __GDCurrentDL[4]; // // Declarations: diff --git a/libs/dolphin/gd/Makefile b/libs/dolphin/gd/Makefile index ee7580b9e6..630a6cf106 100644 --- a/libs/dolphin/gd/Makefile +++ b/libs/dolphin/gd/Makefile @@ -3,14 +3,16 @@ # LIBGD_A_CPP_FILES := \ - libs/dolphin/gd/GDBase.cpp \ - libs/dolphin/gd/GDGeometry.cpp \ + libs/dolphin/gd/GDBase.c \ + libs/dolphin/gd/GDGeometry.c \ LIBGD_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/gd/GDBase.o \ $(BUILD_DIR)/libs/dolphin/gd/GDGeometry.o \ LIBGD_A_CFLAGS := \ + -O4,p \ + -lang=c \ LIBGD_A_LDFLAGS := \ -nodefaults \ @@ -23,9 +25,9 @@ $(BUILD_DIR)/libgd.a: $(LIBGD_A_O_FILES) @echo $(LIBGD_A_O_FILES) > build/LIBGD_A_ofiles @$(LD) -xm l $(LIBGD_A_LDFLAGS) -o $(BUILD_DIR)/libgd.a @build/LIBGD_A_ofiles -$(BUILD_DIR)/libs/dolphin/gd/%.o: libs/dolphin/gd/%.cpp +$(BUILD_DIR)/libs/dolphin/gd/%.o: libs/dolphin/gd/%.c @mkdir -p $(@D) @echo building... $< - @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp - @$(CC) $(CFLAGS) $(LIBGD_A_CFLAGS) -c -o $@ $(basename $@).cpp + @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBGD_A_CFLAGS) -c -o $@ $(basename $@).c diff --git a/libs/dolphin/gx/GXAttr.cpp b/libs/dolphin/gx/GXAttr.c similarity index 91% rename from libs/dolphin/gx/GXAttr.cpp rename to libs/dolphin/gx/GXAttr.c index 9833c030a7..229a52e157 100644 --- a/libs/dolphin/gx/GXAttr.cpp +++ b/libs/dolphin/gx/GXAttr.c @@ -4,32 +4,28 @@ // #include "dolphin/gx/GXAttr.h" +#include "dolphin/gx/GXInit.h" #include "dol2asm.h" -#include "dolphin/types.h" // // Forward References: // -extern "C" void GXSetVtxDesc(); -extern "C" void GXSetVtxDescv(); -extern "C" void __GXSetVCD(); -extern "C" void __GXCalculateVLim(); -extern "C" void GXClearVtxDesc(); -extern "C" void GXSetVtxAttrFmt(); -extern "C" void GXSetVtxAttrFmtv(); -extern "C" void __GXSetVAT(); -extern "C" void GXSetArray(); -extern "C" void GXInvalidateVtxCache(); -extern "C" void GXSetTexCoordGen2(); -extern "C" void GXSetNumTexGens(); +void GXSetVtxDesc(); +void GXSetVtxDescv(); +void __GXSetVCD(); +void __GXCalculateVLim(); +void GXClearVtxDesc(); +void GXSetVtxAttrFmt(); +void GXSetVtxAttrFmtv(); +void __GXSetVAT(); +void GXInvalidateVtxCache(); // // External References: // -extern "C" void __GXSetMatrixIndex(); -extern "C" extern void* __GXData; +void __GXSetMatrixIndex(); // // Declarations: @@ -57,7 +53,7 @@ SECTION_DATA static void* lit_176[26] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetVtxDesc() { +asm void GXSetVtxDesc(GXAttr attr, GXAttrType type) { nofralloc #include "asm/dolphin/gx/GXAttr/GXSetVtxDesc.s" } @@ -85,7 +81,7 @@ SECTION_DATA static void* lit_223[26] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetVtxDescv() { +asm void GXSetVtxDescv(GXVtxDescList* list) { nofralloc #include "asm/dolphin/gx/GXAttr/GXSetVtxDescv.s" } @@ -95,7 +91,7 @@ asm void GXSetVtxDescv() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __GXSetVCD() { +asm void __GXSetVCD(void) { nofralloc #include "asm/dolphin/gx/GXAttr/__GXSetVCD.s" } @@ -135,7 +131,7 @@ SECTION_SDATA static u8 tbl3[4 + 4 /* padding */] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __GXCalculateVLim() { +asm void __GXCalculateVLim(void) { nofralloc #include "asm/dolphin/gx/GXAttr/__GXCalculateVLim.s" } @@ -145,7 +141,7 @@ asm void __GXCalculateVLim() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXClearVtxDesc() { +asm void GXClearVtxDesc(void) { nofralloc #include "asm/dolphin/gx/GXAttr/GXClearVtxDesc.s" } @@ -169,7 +165,7 @@ SECTION_DATA static void* lit_476[17] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetVtxAttrFmt() { +asm void GXSetVtxAttrFmt(GXVtxFmt fmt, GXAttr attr, GXCompCnt cnt, GXCompType type, u32) { nofralloc #include "asm/dolphin/gx/GXAttr/GXSetVtxAttrFmt.s" } @@ -193,7 +189,7 @@ SECTION_DATA static void* lit_503[17] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetVtxAttrFmtv() { +asm void GXSetVtxAttrFmtv(GXVtxFmt fmt, GXVtxAttrFmtList* list) { nofralloc #include "asm/dolphin/gx/GXAttr/GXSetVtxAttrFmtv.s" } @@ -203,7 +199,7 @@ asm void GXSetVtxAttrFmtv() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __GXSetVAT() { +asm void __GXSetVAT(void) { nofralloc #include "asm/dolphin/gx/GXAttr/__GXSetVAT.s" } @@ -213,7 +209,7 @@ asm void __GXSetVAT() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetArray() { +asm void GXSetArray(GXAttr attr, void* base, u8) { nofralloc #include "asm/dolphin/gx/GXAttr/GXSetArray.s" } @@ -223,7 +219,7 @@ asm void GXSetArray() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXInvalidateVtxCache() { +asm void GXInvalidateVtxCache(void) { nofralloc #include "asm/dolphin/gx/GXAttr/GXInvalidateVtxCache.s" } @@ -257,7 +253,7 @@ SECTION_DATA static void* lit_739[21] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetTexCoordGen2() { +asm void GXSetTexCoordGen2(GXTexCoordID dst, GXTexGenType type, GXTexGenSrc src, u32 mtx, GXBool renormalize, u32 pt_mtx) { nofralloc #include "asm/dolphin/gx/GXAttr/GXSetTexCoordGen2.s" } @@ -267,7 +263,7 @@ asm void GXSetTexCoordGen2() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetNumTexGens() { +asm void GXSetNumTexGens(u8 numTexGens) { nofralloc #include "asm/dolphin/gx/GXAttr/GXSetNumTexGens.s" } diff --git a/libs/dolphin/gx/GXBump.c b/libs/dolphin/gx/GXBump.c new file mode 100644 index 0000000000..4a9fe9421e --- /dev/null +++ b/libs/dolphin/gx/GXBump.c @@ -0,0 +1,204 @@ +/** + * GXBump.c + * Description: + */ + +#include "dolphin/gx/GXBump.h" +#include "dolphin/gx/GX.h" +#include "dolphin/gx/GXInit.h" + +/* 8035ECC0-8035ED2C 359600 006C+00 1/1 3/3 0/0 .text GXSetTevIndirect */ +void GXSetTevIndirect(GXTevStageID tevStage, GXIndTexStageID texStage, GXIndTexFormat texFmt, + GXIndTexBiasSel biasSel, GXIndTexMtxID mtxID, GXIndTexWrap wrapS, + GXIndTexWrap wrapT, u8 addPrev, u8 utcLod, GXIndTexAlphaSel alphaSel) { + u32 field = 0; + u32 stage = tevStage + 0x10; + + GX_BITFIELD_SET(field, 30, 2, texStage); + GX_BITFIELD_SET(field, 28, 2, texFmt); + GX_BITFIELD_SET(field, 25, 3, biasSel); + GX_BITFIELD_SET(field, 23, 2, alphaSel); + GX_BITFIELD_SET(field, 19, 4, mtxID); + GX_BITFIELD_SET(field, 16, 3, wrapS); + GX_BITFIELD_SET(field, 13, 3, wrapT); + GX_BITFIELD_SET(field, 12, 1, utcLod); + GX_BITFIELD_SET(field, 11, 1, addPrev); + GX_BITFIELD_SET(field, 0, 8, stage); + + GXFIFO.u8 = 0x61; + GXFIFO.s32 = field; + + __GXData->field_0x2 = 0; +} + +/* 8035ED2C-8035EEA4 35966C 0178+00 0/0 4/4 1/1 .text GXSetIndTexMtx */ +void GXSetIndTexMtx(GXIndTexMtxID mtxID, f32 offset[6], s8 scale_exp) { + u32 val; + u32 field; + f32 mtx2[6]; + + scale_exp += 17; + + switch (mtxID) { + case GX_ITM_0: + case GX_ITM_1: + case GX_ITM_2: + val = mtxID - 1; + break; + case GX_ITM_S0: + case GX_ITM_S1: + case GX_ITM_S2: + val = mtxID - 5; + break; + case GX_ITM_T0: + case GX_ITM_T1: + case GX_ITM_T2: + val = mtxID - 9; + break; + case GX_ITM_3: + case GX_ITM_S3: + default: + val = 0; + } + + field = 0; + GX_BITFIELD_SET(field, 21, 11, 1024.0f * offset[0]); + GX_BITFIELD_SET(field, 10, 11, 1024.0f * offset[3]); + GX_BITFIELD_SET(field, 8, 2, (scale_exp >> 0) & 3); + GX_BITFIELD_SET(field, 0, 8, val * 3 + 6); + GXFIFO.u8 = 0x61; + GXFIFO.s32 = field; + + field = 0; + GX_BITFIELD_SET(field, 21, 11, 1024.0f * offset[1]); + GX_BITFIELD_SET(field, 10, 11, 1024.0f * offset[4]); + GX_BITFIELD_SET(field, 8, 2, (scale_exp >> 2) & 3); + GX_BITFIELD_SET(field, 0, 8, val * 3 + 7); + GXFIFO.u8 = 0x61; + GXFIFO.s32 = field; + + field = 0; + GX_BITFIELD_SET(field, 21, 11, 1024.0f * offset[2]); + GX_BITFIELD_SET(field, 10, 11, 1024.0f * offset[5]); + GX_BITFIELD_SET(field, 8, 2, (scale_exp >> 4) & 3); + GX_BITFIELD_SET(field, 0, 8, val * 3 + 8); + GXFIFO.u8 = 0x61; + GXFIFO.s32 = field; + + __GXData->field_0x2 = 0; +} + +/* 8035EEA4-8035EFE8 3597E4 0144+00 0/0 5/5 0/0 .text GXSetIndTexCoordScale */ +void GXSetIndTexCoordScale(GXIndTexStageID texStage, GXIndTexScale scaleS, GXIndTexScale scaleT) { + GXData* data; + + switch (texStage) { + case GX_INDTEXSTAGE0: + data = __GXData; + GX_BITFIELD_SET(data->field_0x128, 28, 4, scaleS); + GX_BITFIELD_SET(data->field_0x128, 24, 4, scaleT); + GX_BITFIELD_SET(data->field_0x128, 0, 8, 0x25); + GXFIFO.u8 = 0x61; + GXFIFO.s32 = data->field_0x128; + break; + case GX_INDTEXSTAGE1: + data = __GXData; + GX_BITFIELD_SET(data->field_0x128, 20, 4, scaleS); + GX_BITFIELD_SET(data->field_0x128, 16, 4, scaleT); + GX_BITFIELD_SET(data->field_0x128, 0, 8, 0x25); + GXFIFO.u8 = 0x61; + GXFIFO.s32 = data->field_0x128; + break; + case GX_INDTEXSTAGE2: + data = __GXData; + GX_BITFIELD_SET(data->field_0x12c, 28, 4, scaleS); + GX_BITFIELD_SET(data->field_0x12c, 24, 4, scaleT); + GX_BITFIELD_SET(data->field_0x12c, 0, 8, 0x26); + GXFIFO.u8 = 0x61; + GXFIFO.s32 = data->field_0x12c; + break; + case GX_INDTEXSTAGE3: + data = __GXData; + GX_BITFIELD_SET(data->field_0x12c, 20, 4, scaleS); + GX_BITFIELD_SET(data->field_0x12c, 16, 4, scaleT); + GX_BITFIELD_SET(data->field_0x12c, 0, 8, 0x26); + GXFIFO.u8 = 0x61; + GXFIFO.s32 = data->field_0x12c; + break; + } + + __GXData->field_0x2 = 0; +} + +/* 8035EFE8-8035F0D4 359928 00EC+00 0/0 3/3 0/0 .text GXSetIndTexOrder */ +void GXSetIndTexOrder(GXIndTexStageID stage, GXTexCoordID coord, GXTexMapID map) { + GXData* data; + + if (map == 0xFF) { + map = GX_TEXMAP0; + } + + if (coord == 0xFF) { + coord = GX_TEXCOORD0; + } + + switch (stage) { + case GX_INDTEXSTAGE0: + data = __GXData; + GX_BITFIELD_SET(data->field_0x120, 29, 3, map); + GX_BITFIELD_SET(data->field_0x120, 26, 3, coord); + break; + case GX_INDTEXSTAGE1: + data = __GXData; + GX_BITFIELD_SET(data->field_0x120, 23, 3, map); + GX_BITFIELD_SET(data->field_0x120, 20, 3, coord); + break; + case GX_INDTEXSTAGE2: + data = __GXData; + GX_BITFIELD_SET(data->field_0x120, 17, 3, map); + GX_BITFIELD_SET(data->field_0x120, 14, 3, coord); + break; + case GX_INDTEXSTAGE3: + data = __GXData; + GX_BITFIELD_SET(data->field_0x120, 11, 3, map); + GX_BITFIELD_SET(data->field_0x120, 8, 3, coord); + break; + } + + GXFIFO.u8 = 0x61; + GXFIFO.s32 = __GXData->field_0x120; + GXSetWasteFlags(); +} + +/* 8035F0D4-8035F0F8 359A14 0024+00 0/0 43/43 7/7 .text GXSetNumIndStages */ +void GXSetNumIndStages(u8 num) { + GXData* data = __GXData; + GX_BITFIELD_SET(data->field_0x204, 13, 3, num); + data->field_0x5ac |= 0x6; +} + +/* 8035F0F8-8035F140 359A38 0048+00 0/0 16/16 0/0 .text GXSetTevDirect */ +void GXSetTevDirect(GXTevStageID stage) { + GXSetTevIndirect(stage, GX_INDTEXSTAGE0, GX_ITF_8, GX_ITB_NONE, GX_ITM_OFF, GX_ITW_OFF, + GX_ITW_OFF, FALSE, FALSE, GX_ITBA_OFF); +} + +/* 8035F140-8035F144 359A80 0004+00 0/0 2/2 0/0 .text __GXUpdateBPMask */ +void __GXUpdateBPMask(void) {} + +/* 8035F144-8035F174 359A84 0030+00 0/0 1/1 0/0 .text __GXSetIndirectMask */ +void __GXSetIndirectMask(u32 mask) { + GXData* data = __GXData; + + GX_BITFIELD_SET(data->field_0x124, 24, 8, mask); + GXFIFO.u8 = 0x61; + GXFIFO.s32 = data->field_0x124; + data->field_0x2 = 0; +} + +/* 8035F174-8035F198 359AB4 0024+00 0/0 4/4 0/0 .text __GXFlushTextureState */ +void __GXFlushTextureState(void) { + GXFIFO.u8 = 0x61; + GXFIFO.s32 = __GXData->field_0x124; + __GXData->field_0x2 = 0; +} diff --git a/libs/dolphin/gx/GXBump.cpp b/libs/dolphin/gx/GXBump.cpp deleted file mode 100644 index 4e4c14303e..0000000000 --- a/libs/dolphin/gx/GXBump.cpp +++ /dev/null @@ -1,125 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: GXBump -// - -#include "dolphin/gx/GXBump.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void GXSetTevIndirect(); -extern "C" void GXSetIndTexMtx(); -extern "C" void GXSetIndTexCoordScale(); -extern "C" void GXSetIndTexOrder(); -extern "C" void GXSetNumIndStages(); -extern "C" void GXSetTevDirect(); -extern "C" void __GXUpdateBPMask(); -extern "C" void __GXSetIndirectMask(); -extern "C" void __GXFlushTextureState(); - -// -// External References: -// - -extern "C" extern void* __GXData; - -// -// Declarations: -// - -/* 8035ECC0-8035ED2C 359600 006C+00 1/1 3/3 0/0 .text GXSetTevIndirect */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetTevIndirect() { - nofralloc -#include "asm/dolphin/gx/GXBump/GXSetTevIndirect.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 80456610-80456618 004C10 0004+04 1/1 0/0 0/0 .sdata2 @149 */ -SECTION_SDATA2 static f32 lit_149[1 + 1 /* padding */] = { - 1024.0f, - /* padding */ - 0.0f, -}; - -/* 8035ED2C-8035EEA4 35966C 0178+00 0/0 4/4 1/1 .text GXSetIndTexMtx */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetIndTexMtx() { - nofralloc -#include "asm/dolphin/gx/GXBump/GXSetIndTexMtx.s" -} -#pragma pop - -/* 8035EEA4-8035EFE8 3597E4 0144+00 0/0 5/5 0/0 .text GXSetIndTexCoordScale */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetIndTexCoordScale() { - nofralloc -#include "asm/dolphin/gx/GXBump/GXSetIndTexCoordScale.s" -} -#pragma pop - -/* 8035EFE8-8035F0D4 359928 00EC+00 0/0 3/3 0/0 .text GXSetIndTexOrder */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetIndTexOrder() { - nofralloc -#include "asm/dolphin/gx/GXBump/GXSetIndTexOrder.s" -} -#pragma pop - -/* 8035F0D4-8035F0F8 359A14 0024+00 0/0 43/43 7/7 .text GXSetNumIndStages */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetNumIndStages() { - nofralloc -#include "asm/dolphin/gx/GXBump/GXSetNumIndStages.s" -} -#pragma pop - -/* 8035F0F8-8035F140 359A38 0048+00 0/0 16/16 0/0 .text GXSetTevDirect */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetTevDirect() { - nofralloc -#include "asm/dolphin/gx/GXBump/GXSetTevDirect.s" -} -#pragma pop - -/* 8035F140-8035F144 359A80 0004+00 0/0 2/2 0/0 .text __GXUpdateBPMask */ -void __GXUpdateBPMask() { - /* empty function */ -} - -/* 8035F144-8035F174 359A84 0030+00 0/0 1/1 0/0 .text __GXSetIndirectMask */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __GXSetIndirectMask() { - nofralloc -#include "asm/dolphin/gx/GXBump/__GXSetIndirectMask.s" -} -#pragma pop - -/* 8035F174-8035F198 359AB4 0024+00 0/0 4/4 0/0 .text __GXFlushTextureState */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __GXFlushTextureState() { - nofralloc -#include "asm/dolphin/gx/GXBump/__GXFlushTextureState.s" -} -#pragma pop diff --git a/libs/dolphin/gx/GXDisplayList.cpp b/libs/dolphin/gx/GXDisplayList.c similarity index 89% rename from libs/dolphin/gx/GXDisplayList.cpp rename to libs/dolphin/gx/GXDisplayList.c index a04d3196da..f797a33f6d 100644 --- a/libs/dolphin/gx/GXDisplayList.cpp +++ b/libs/dolphin/gx/GXDisplayList.c @@ -1,7 +1,10 @@ +/** + * GXDisplayList.c + * Description: + */ + #include "dolphin/gx/GXDisplayList.h" #include "dolphin/gx/GX.h" -#include "dol2asm.h" -#include "dolphin/types.h" /* 8035FEF0-8035FF60 35A830 0070+00 0/0 20/20 4/4 .text GXCallDisplayList */ void GXCallDisplayList(void* list, u32 nbytes) { diff --git a/libs/dolphin/gx/GXFifo.cpp b/libs/dolphin/gx/GXFifo.c similarity index 78% rename from libs/dolphin/gx/GXFifo.cpp rename to libs/dolphin/gx/GXFifo.c index d170807548..8755ba3f01 100644 --- a/libs/dolphin/gx/GXFifo.cpp +++ b/libs/dolphin/gx/GXFifo.c @@ -5,37 +5,34 @@ #include "dolphin/gx/GXFifo.h" #include "dolphin/gx/GX.h" -#include "dolphin/os/OS.h" #include "dol2asm.h" -#include "dolphin/types.h" // // Forward References: // -extern "C" static void GXCPInterruptHandler(OSInterrupt, OSContext* ctx); -extern "C" static void GXInitFifoLimits(void); -extern "C" void GXSetCPUFifo(void); -extern "C" void GXSetGPFifo(void); -extern "C" void __GXSaveCPUFifoAux(void); -extern "C" void GXSetBreakPtCallback(void); -extern "C" void __GXFifoInit(void); -extern "C" void __GXFifoReadEnable(void); -extern "C" void __GXFifoReadDisable(void); -extern "C" void __GXFifoLink(u8); -extern "C" void __GXWriteFifoIntEnable(u8, u8); -extern "C" void __GXWriteFifoIntReset(u8, u8); -extern "C" void __GXCleanGPFifo(void); -extern "C" u32 GXGetGPFifo(void); +static void GXCPInterruptHandler(OSInterrupt, OSContext* ctx); +static void GXInitFifoLimits(GXFifoObj* fifo, u32 hi_watermark, u32 lo_watermark); +void GXSetCPUFifo(void); +void GXSetGPFifo(void); +void GXSetBreakPtCallback(void); +void __GXFifoInit(void); +void __GXFifoReadEnable(void); +void __GXFifoReadDisable(void); +void __GXFifoLink(u8); +void __GXWriteFifoIntEnable(u8, u8); +void __GXWriteFifoIntReset(u8, u8); +void __GXCleanGPFifo(void); +u32 GXGetGPFifo(void); // // External References: // -extern "C" void PPCSync(void); -extern "C" void OSSetCurrentContext(OSContext*); -extern "C" void OSClearContext(OSContext*); -extern "C" void GXFlush(void); +void PPCSync(void); +void OSSetCurrentContext(OSContext*); +void OSClearContext(OSContext*); +void GXFlush(void); // // Declarations: @@ -110,7 +107,7 @@ static asm void GXCPInterruptHandler(OSInterrupt, OSContext* ctx) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXInitFifoBase(GXFifoObj*, void*, u32) { +asm void GXInitFifoBase(GXFifoObj* fifo, void* base, u32 size) { nofralloc #include "asm/dolphin/gx/GXFifo/GXInitFifoBase.s" } @@ -120,21 +117,17 @@ asm void GXInitFifoBase(GXFifoObj*, void*, u32) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXInitFifoPtrs(GXFifoObj*, void*, void*) { +asm void GXInitFifoPtrs(GXFifoObj* fifo, void* read_ptr, void* write_ptr) { nofralloc #include "asm/dolphin/gx/GXFifo/GXInitFifoPtrs.s" } #pragma pop /* 8035A7B8-8035A7C4 3550F8 000C+00 1/1 0/0 0/0 .text GXInitFifoLimits */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void GXInitFifoLimits(void) { - nofralloc -#include "asm/dolphin/gx/GXFifo/GXInitFifoLimits.s" +static void GXInitFifoLimits(GXFifoObj* fifo, u32 hi_watermark, u32 lo_watermark) { + fifo->high_wtrmark = hi_watermark; + fifo->low_wtrmark = lo_watermark; } -#pragma pop /* 8035A7C4-8035A8EC 355104 0128+00 1/1 1/1 0/0 .text GXSetCPUFifo */ #pragma push @@ -157,20 +150,16 @@ asm void GXSetGPFifo(void) { #pragma pop /* 8035AA8C-8035AAC0 3553CC 0034+00 0/0 1/1 0/0 .text GXSaveCPUFifo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSaveCPUFifo(GXFifoObj*) { - nofralloc -#include "asm/dolphin/gx/GXFifo/GXSaveCPUFifo.s" +void GXSaveCPUFifo(GXFifoObj* fifo) { + GXFlush(); + __GXSaveCPUFifoAux(fifo); } -#pragma pop /* 8035AAC0-8035AB88 355400 00C8+00 1/1 0/0 0/0 .text __GXSaveCPUFifoAux */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __GXSaveCPUFifoAux(void) { +asm void __GXSaveCPUFifoAux(GXFifoObj* fifo) { nofralloc #include "asm/dolphin/gx/GXFifo/__GXSaveCPUFifoAux.s" } @@ -180,31 +169,21 @@ asm void __GXSaveCPUFifoAux(void) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXGetGPStatus(GXBool*, GXBool*, GXBool*, GXBool*, GXBool*) { +asm void GXGetGPStatus(GXBool* overhi, GXBool* underlo, GXBool* read_idle, GXBool* cmd_idle, GXBool* breakpoint) { nofralloc #include "asm/dolphin/gx/GXFifo/GXGetGPStatus.s" } #pragma pop /* 8035ABD8-8035ABE0 355518 0008+00 0/0 1/1 0/0 .text GXGetFifoBase */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void* GXGetFifoBase(GXFifoObj*) { - nofralloc -#include "asm/dolphin/gx/GXFifo/GXGetFifoBase.s" +void* GXGetFifoBase(GXFifoObj* fifo) { + return fifo->base; } -#pragma pop /* 8035ABE0-8035ABE8 355520 0008+00 0/0 1/1 0/0 .text GXGetFifoSize */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 GXGetFifoSize(GXFifoObj*) { - nofralloc -#include "asm/dolphin/gx/GXFifo/GXGetFifoSize.s" +u32 GXGetFifoSize(GXFifoObj* fifo) { + return fifo->size; } -#pragma pop /* 8035ABE8-8035AC2C 355528 0044+00 0/0 1/1 0/0 .text GXSetBreakPtCallback */ #pragma push @@ -217,14 +196,14 @@ asm void GXSetBreakPtCallback(void) { #pragma pop /* 8035AC2C-8035AC78 35556C 004C+00 0/0 1/1 0/0 .text __GXFifoInit */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __GXFifoInit(void) { - nofralloc -#include "asm/dolphin/gx/GXFifo/__GXFifoInit.s" +void __GXFifoInit(void) { + __OSSetInterruptHandler(0x11, GXCPInterruptHandler); + __OSUnmaskInterrupts(0x4000); + __GXCurrentThread = OSGetCurrentThread(); + GXOverflowSuspendInProgress = 0; + CPUFifo = NULL; + GPFifo = NULL; } -#pragma pop /* 8035AC78-8035AC9C 3555B8 0024+00 1/1 0/0 0/0 .text __GXFifoReadEnable */ #pragma push diff --git a/libs/dolphin/gx/GXFrameBuf.cpp b/libs/dolphin/gx/GXFrameBuf.c similarity index 84% rename from libs/dolphin/gx/GXFrameBuf.cpp rename to libs/dolphin/gx/GXFrameBuf.c index 61e1dfff6e..b5504ae0cb 100644 --- a/libs/dolphin/gx/GXFrameBuf.cpp +++ b/libs/dolphin/gx/GXFrameBuf.c @@ -11,34 +11,24 @@ // Forward References: // -extern "C" void GXSetDispCopySrc(); -extern "C" void GXSetTexCopySrc(); -extern "C" void GXSetDispCopyDst(); -extern "C" void GXSetTexCopyDst(); -extern "C" void GXSetDispCopyFrame2Field(); -extern "C" void GXSetCopyClamp(); -extern "C" void GXGetNumXfbLines(); -extern "C" void GXGetYScaleFactor(); -extern "C" void GXSetDispCopyYScale(); -extern "C" void GXSetCopyClear(); -extern "C" void GXSetCopyFilter(); -extern "C" void GXSetDispCopyGamma(); -extern "C" void GXCopyDisp(); -extern "C" void GXCopyTex(); -extern "C" void GXClearBoundingBox(); -extern "C" extern u8 GXNtsc480IntDf[60]; -extern "C" extern u8 GXNtsc480Int[60]; -extern "C" extern u8 GXMpal480IntDf[60]; -extern "C" extern u8 GXPal528IntDf[60]; -extern "C" extern u8 GXEurgb60Hz480IntDf[60 + 4 /* padding */]; +void GXSetDispCopyFrame2Field(); +void GXSetCopyClamp(); +void GXSetCopyClear(); +void GXSetDispCopyGamma(); +void GXClearBoundingBox(); +extern u8 GXNtsc480IntDf[60]; +extern u8 GXNtsc480Int[60]; +extern u8 GXMpal480IntDf[60]; +extern u8 GXPal528IntDf[60]; +extern u8 GXEurgb60Hz480IntDf[60 + 4 /* padding */]; // // External References: // -extern "C" void __GetImageTileCount(); -extern "C" void __cvt_fp2unsigned(); -extern "C" extern void* __GXData; +void __GetImageTileCount(); +void __cvt_fp2unsigned(); +extern void* __GXData; // // Declarations: @@ -48,7 +38,7 @@ extern "C" extern void* __GXData; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetDispCopySrc() { +asm void GXSetDispCopySrc(u16 left, u16 top, u16 width, u16 height) { nofralloc #include "asm/dolphin/gx/GXFrameBuf/GXSetDispCopySrc.s" } @@ -58,7 +48,7 @@ asm void GXSetDispCopySrc() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetTexCopySrc() { +asm void GXSetTexCopySrc(u16 left, u16 top, u16 width, u16 height) { nofralloc #include "asm/dolphin/gx/GXFrameBuf/GXSetTexCopySrc.s" } @@ -68,7 +58,7 @@ asm void GXSetTexCopySrc() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetDispCopyDst() { +asm void GXSetDispCopyDst(u16 width, u16 height) { nofralloc #include "asm/dolphin/gx/GXFrameBuf/GXSetDispCopyDst.s" } @@ -78,7 +68,7 @@ asm void GXSetDispCopyDst() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetTexCopyDst() { +asm void GXSetTexCopyDst(u16 width, u16 height, GXTexFmt fmt, GXBool mipmap) { nofralloc #include "asm/dolphin/gx/GXFrameBuf/GXSetTexCopyDst.s" } @@ -88,7 +78,7 @@ asm void GXSetTexCopyDst() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetDispCopyFrame2Field() { +asm void GXSetDispCopyFrame2Field(GXCopyMode mode) { nofralloc #include "asm/dolphin/gx/GXFrameBuf/GXSetDispCopyFrame2Field.s" } @@ -98,7 +88,7 @@ asm void GXSetDispCopyFrame2Field() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetCopyClamp() { +asm void GXSetCopyClamp(GXFBClamp clamp) { nofralloc #include "asm/dolphin/gx/GXFrameBuf/GXSetCopyClamp.s" } @@ -116,7 +106,7 @@ SECTION_SDATA2 static f32 lit_179[1 + 1 /* padding */] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXGetNumXfbLines() { +asm u16 GXGetNumXfbLines(u32 efb_height, f32 y_scale) { nofralloc #include "asm/dolphin/gx/GXFrameBuf/GXGetNumXfbLines.s" } @@ -130,7 +120,7 @@ SECTION_SDATA2 static f64 lit_234 = 4503599627370496.0 /* cast u32 to float */; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXGetYScaleFactor() { +asm f32 GXGetYScaleFactor(u16 efb_height, u16 xfb_height) { nofralloc #include "asm/dolphin/gx/GXFrameBuf/GXGetYScaleFactor.s" } @@ -140,7 +130,7 @@ asm void GXGetYScaleFactor() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetDispCopyYScale() { +asm u32 GXSetDispCopyYScale(f32 y_scale) { nofralloc #include "asm/dolphin/gx/GXFrameBuf/GXSetDispCopyYScale.s" } @@ -150,7 +140,7 @@ asm void GXSetDispCopyYScale() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetCopyClear() { +asm void GXSetCopyClear(GXColor color, u32 clear_z) { nofralloc #include "asm/dolphin/gx/GXFrameBuf/GXSetCopyClear.s" } @@ -160,7 +150,7 @@ asm void GXSetCopyClear() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetCopyFilter() { +asm void GXSetCopyFilter(GXBool antialias, u8 pattern[12][2], GXBool vf, u8 vfilter[7]) { nofralloc #include "asm/dolphin/gx/GXFrameBuf/GXSetCopyFilter.s" } @@ -170,7 +160,7 @@ asm void GXSetCopyFilter() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetDispCopyGamma() { +asm void GXSetDispCopyGamma(GXGamma gamma) { nofralloc #include "asm/dolphin/gx/GXFrameBuf/GXSetDispCopyGamma.s" } @@ -180,7 +170,7 @@ asm void GXSetDispCopyGamma() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXCopyDisp() { +asm void GXCopyDisp(void* dst, GXBool clear) { nofralloc #include "asm/dolphin/gx/GXFrameBuf/GXCopyDisp.s" } @@ -190,7 +180,7 @@ asm void GXCopyDisp() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXCopyTex() { +asm void GXCopyTex(void* dst, GXBool clear) { nofralloc #include "asm/dolphin/gx/GXFrameBuf/GXCopyTex.s" } @@ -200,7 +190,7 @@ asm void GXCopyTex() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXClearBoundingBox() { +asm void GXClearBoundingBox(void) { nofralloc #include "asm/dolphin/gx/GXFrameBuf/GXClearBoundingBox.s" } diff --git a/libs/dolphin/gx/GXGeometry.c b/libs/dolphin/gx/GXGeometry.c new file mode 100644 index 0000000000..78efffbc1e --- /dev/null +++ b/libs/dolphin/gx/GXGeometry.c @@ -0,0 +1,166 @@ +/** + * GXGeometry.c + * Description: + */ + +#include "dolphin/gx/GXGeometry.h" +#include "dolphin/gx/GX.h" + +/* 8035C6E4-8035C764 357024 0080+00 0/0 4/4 0/0 .text __GXSetDirtyState */ +void __GXSetDirtyState(void) { + u32 dirtyFlags = __GXData->field_0x5ac; + + if (dirtyFlags & 1) { + __GXSetSUTexRegs(); + } + + if (dirtyFlags & 2) { + __GXUpdateBPMask(); + } + + if (dirtyFlags & 4) { + __GXSetGenMode(); + } + + if (dirtyFlags & 8) { + __GXSetVCD(); + } + + if (dirtyFlags & 0x10) { + __GXSetVAT(); + } + + if (dirtyFlags & 0x18) { + __GXCalculateVLim(); + } + + __GXData->field_0x5ac = 0; +} + +/* 8035C764-8035C834 3570A4 00D0+00 0/0 66/66 3/3 .text GXBegin */ +void GXBegin(GXPrimitive type, GXVtxFmt fmt, u16 vert_num) { + GXData* data = __GXData; + u32 dirtyFlags = data->field_0x5ac; + + if (data->field_0x5ac != 0) { + if (dirtyFlags & 1) { + __GXSetSUTexRegs(); + } + + if (dirtyFlags & 2) { + __GXUpdateBPMask(); + } + + if (dirtyFlags & 4) { + __GXSetGenMode(); + } + + if (dirtyFlags & 8) { + __GXSetVCD(); + } + + if (dirtyFlags & 0x10) { + __GXSetVAT(); + } + + if (dirtyFlags & 0x18) { + __GXCalculateVLim(); + } + + __GXData->field_0x5ac = 0; + } + + if (*(u32*)__GXData == 0) { + __GXSendFlushPrim(); + } + + GXFIFO.u8 = fmt | type; + GXFIFO.u16 = vert_num; +} + +/* 8035C834-8035C8BC 357174 0088+00 1/1 1/1 0/0 .text __GXSendFlushPrim */ +void __GXSendFlushPrim(void) { + u32 i; + u32 sz = __GXData->field_0x4 * __GXData->field_0x6; + + GXFIFO.u8 = 0x98; + GXFIFO.u16 = __GXData->field_0x4; + + for (i = 0; i < sz; i += 4) { + GXFIFO.s32 = 0; + } + + __GXData->field_0x2 = 1; +} + +/* 8035C8BC-8035C8FC 3571FC 0040+00 0/0 8/8 0/0 .text GXSetLineWidth */ +void GXSetLineWidth(u8 width, GXTexOffset offsets) { + GXData* data = __GXData; + + GX_BITFIELD_SET(data->field_0x7c, 24, 8, width); + GX_BITFIELD_SET(data->field_0x7c, 13, 3, offsets); + GXFIFO.u8 = 0x61; + GXFIFO.u32 = data->field_0x7c; + data->field_0x2 = 0; +} + +/* 8035C8FC-8035C93C 35723C 0040+00 0/0 5/5 0/0 .text GXSetPointSize */ +void GXSetPointSize(u8 size, GXTexOffset offsets) { + GXData* data = __GXData; + + GX_BITFIELD_SET(data->field_0x7c, 16, 8, size); + GX_BITFIELD_SET(data->field_0x7c, 10, 3, offsets); + GXFIFO.u8 = 0x61; + GXFIFO.u32 = data->field_0x7c; + data->field_0x2 = 0; +} + +/* 8035C93C-8035C984 35727C 0048+00 0/0 3/3 0/0 .text GXEnableTexOffsets */ +void GXEnableTexOffsets(GXTexCoordID coord, GXBool line, GXBool point) { + GXData* data = __GXData; + + GX_BITFIELD_SET(data->field_0xb8[coord], 13, 1, line); + GX_BITFIELD_SET(data->field_0xb8[coord], 12, 1, point); + GXFIFO.u8 = 0x61; + GXFIFO.u32 = data->field_0xb8[coord]; + data->field_0x2 = 0; +} + +/* 8035C984-8035C9AC 3572C4 0028+00 0/0 33/33 5/5 .text GXSetCullMode */ +// extra mr +#ifdef NONMATCHING +void GXSetCullMode(GXCullMode mode) { + GXData* data = __GXData; + + mode = (mode << 1 & 2 | mode >> 1 & 1); + GX_BITFIELD_SET(data->field_0x204, 16, 2, mode); + data->field_0x5ac |= 4; +} +#else +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void GXSetCullMode(GXCullMode mode) { + nofralloc +#include "asm/dolphin/gx/GXGeometry/GXSetCullMode.s" +} +#pragma pop +#endif + +/* 8035C9AC-8035C9E0 3572EC 0034+00 0/0 6/6 0/0 .text GXSetCoPlanar */ +void GXSetCoPlanar(GXBool enable) { + GXData* data = __GXData; + + GX_BITFIELD_SET(data->field_0x204, 12, 1, enable); + GXFIFO.u8 = 0x61; + GXFIFO.u32 = 0xFE080000; + GXFIFO.u8 = 0x61; + GXFIFO.u32 = data->field_0x204; +} + +/* 8035C9E0-8035CA04 357320 0024+00 2/2 0/0 0/0 .text __GXSetGenMode */ +void __GXSetGenMode(void) { + GXFIFO.u8 = 0x61; + GXFIFO.u32 = __GXData->field_0x204; + __GXData->field_0x2 = 0; +} diff --git a/libs/dolphin/gx/GXGeometry.cpp b/libs/dolphin/gx/GXGeometry.cpp deleted file mode 100644 index 6edd3bab01..0000000000 --- a/libs/dolphin/gx/GXGeometry.cpp +++ /dev/null @@ -1,127 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: GXGeometry -// - -#include "dolphin/gx/GXGeometry.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void __GXSetDirtyState(); -extern "C" void GXBegin(); -extern "C" void __GXSendFlushPrim(); -extern "C" void GXSetLineWidth(); -extern "C" void GXSetPointSize(); -extern "C" void GXEnableTexOffsets(); -extern "C" void GXSetCullMode(); -extern "C" void GXSetCoPlanar(); -extern "C" void __GXSetGenMode(); - -// -// External References: -// - -extern "C" void __GXSetVCD(); -extern "C" void __GXCalculateVLim(); -extern "C" void __GXSetVAT(); -extern "C" void __GXSetSUTexRegs(); -extern "C" void __GXUpdateBPMask(); -extern "C" extern void* __GXData; - -// -// Declarations: -// - -/* 8035C6E4-8035C764 357024 0080+00 0/0 4/4 0/0 .text __GXSetDirtyState */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __GXSetDirtyState() { - nofralloc -#include "asm/dolphin/gx/GXGeometry/__GXSetDirtyState.s" -} -#pragma pop - -/* 8035C764-8035C834 3570A4 00D0+00 0/0 66/66 3/3 .text GXBegin */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXBegin() { - nofralloc -#include "asm/dolphin/gx/GXGeometry/GXBegin.s" -} -#pragma pop - -/* 8035C834-8035C8BC 357174 0088+00 1/1 1/1 0/0 .text __GXSendFlushPrim */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __GXSendFlushPrim() { - nofralloc -#include "asm/dolphin/gx/GXGeometry/__GXSendFlushPrim.s" -} -#pragma pop - -/* 8035C8BC-8035C8FC 3571FC 0040+00 0/0 8/8 0/0 .text GXSetLineWidth */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetLineWidth() { - nofralloc -#include "asm/dolphin/gx/GXGeometry/GXSetLineWidth.s" -} -#pragma pop - -/* 8035C8FC-8035C93C 35723C 0040+00 0/0 5/5 0/0 .text GXSetPointSize */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetPointSize() { - nofralloc -#include "asm/dolphin/gx/GXGeometry/GXSetPointSize.s" -} -#pragma pop - -/* 8035C93C-8035C984 35727C 0048+00 0/0 3/3 0/0 .text GXEnableTexOffsets */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXEnableTexOffsets() { - nofralloc -#include "asm/dolphin/gx/GXGeometry/GXEnableTexOffsets.s" -} -#pragma pop - -/* 8035C984-8035C9AC 3572C4 0028+00 0/0 33/33 5/5 .text GXSetCullMode */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetCullMode() { - nofralloc -#include "asm/dolphin/gx/GXGeometry/GXSetCullMode.s" -} -#pragma pop - -/* 8035C9AC-8035C9E0 3572EC 0034+00 0/0 6/6 0/0 .text GXSetCoPlanar */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetCoPlanar() { - nofralloc -#include "asm/dolphin/gx/GXGeometry/GXSetCoPlanar.s" -} -#pragma pop - -/* 8035C9E0-8035CA04 357320 0024+00 2/2 0/0 0/0 .text __GXSetGenMode */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __GXSetGenMode() { - nofralloc -#include "asm/dolphin/gx/GXGeometry/__GXSetGenMode.s" -} -#pragma pop diff --git a/libs/dolphin/gx/GXInit.cpp b/libs/dolphin/gx/GXInit.c similarity index 78% rename from libs/dolphin/gx/GXInit.cpp rename to libs/dolphin/gx/GXInit.c index 609b8eeba3..bcde238428 100644 --- a/libs/dolphin/gx/GXInit.cpp +++ b/libs/dolphin/gx/GXInit.c @@ -12,63 +12,48 @@ // Forward References: // -extern "C" void __GXDefaultTexRegionCallback(); -extern "C" void __GXDefaultTlutRegionCallback(); -extern "C" void __GXShutdown(); -extern "C" void __GXInitRevisionBits(); -extern "C" void __GXInitGX(); +void __GXShutdown(); +void __GXInitRevisionBits(); +void __GXInitGX(); // // External References: // -extern "C" void PPCSync(); -extern "C" void PPCMfhid2(); -extern "C" void PPCMthid2(); -extern "C" void PPCMtwpar(); -extern "C" void OSRegisterVersion(); -extern "C" void OSRegisterResetFunction(); -extern "C" void OSGetTime(); -extern "C" void VIGetTvFormat(); -extern "C" void GXSetCPUFifo(); -extern "C" void GXSetGPFifo(); -extern "C" void GXSetBreakPtCallback(); -extern "C" void __GXFifoInit(); -extern "C" void GXClearVtxDesc(); -extern "C" void GXSetVtxAttrFmtv(); -extern "C" void GXInvalidateVtxCache(); -extern "C" void __GXAbort(); -extern "C" void GXPokeAlphaMode(); -extern "C" void GXPokeAlphaRead(); -extern "C" void GXPokeAlphaUpdate(); -extern "C" void GXPokeBlendMode(); -extern "C" void GXPokeColorUpdate(); -extern "C" void GXPokeDstAlpha(); -extern "C" void GXPokeDither(); -extern "C" void GXPokeZMode(); -extern "C" void GXSetDrawSyncCallback(); -extern "C" void __GXPEInit(); -extern "C" void GXSetDispCopyFrame2Field(); -extern "C" void GXClearBoundingBox(); -extern "C" void GXGetTexObjFmt(); -extern "C" void GXGetTexObjMipMap(); -extern "C" void GXInitTlutRegion(); -extern "C" void GXInvalidateTexAll(); -extern "C" void GXSetTexRegionCallback(); -extern "C" void GXSetTlutRegionCallback(); -extern "C" void __GXSetTmemConfig(); -extern "C" void __GXSetIndirectMask(); -extern "C" void __GXFlushTextureState(); -extern "C" void GXSetFieldMask(); -extern "C" void GXSetFieldMode(); -extern "C" void GXSetProjectionv(); -extern "C" void GXSetScissorBoxOffset(); -extern "C" void GXSetGPMetric(); -extern "C" void GXClearGPMetric(); -extern "C" extern u8 GXNtsc480IntDf[60]; -extern "C" extern u8 GXMpal480IntDf[60]; -extern "C" extern u8 GXPal528IntDf[60]; -extern "C" extern u8 GXEurgb60Hz480IntDf[60 + 4 /* padding */]; +void PPCSync(); +void PPCMfhid2(); +void PPCMthid2(); +void PPCMtwpar(); +void OSRegisterVersion(); +void OSRegisterResetFunction(); +void VIGetTvFormat(); +void GXSetCPUFifo(); +void GXSetGPFifo(); +void GXSetBreakPtCallback(); +void __GXFifoInit(); +void GXClearVtxDesc(); +void GXSetVtxAttrFmtv(); +void GXInvalidateVtxCache(); +void __GXAbort(); +void GXPokeAlphaRead(); +void GXPokeBlendMode(); +void GXSetDrawSyncCallback(); +void __GXPEInit(); +void GXSetDispCopyFrame2Field(); +void GXClearBoundingBox(); +void GXInitTlutRegion(); +void GXInvalidateTexAll(); +void __GXSetTmemConfig(); +void __GXSetIndirectMask(); +void __GXFlushTextureState(); +void GXSetProjectionv(); +void GXSetScissorBoxOffset(); +void GXSetGPMetric(); +void GXClearGPMetric(); +extern u8 GXNtsc480IntDf[60]; +extern u8 GXMpal480IntDf[60]; +extern u8 GXPal528IntDf[60]; +extern u8 GXEurgb60Hz480IntDf[60 + 4 /* padding */]; // // Declarations: @@ -88,54 +73,70 @@ SECTION_SDATA2 extern GXData* __GXData = &gxData; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __GXDefaultTexRegionCallback() { +asm GXTexRegion* __GXDefaultTexRegionCallback(GXTexObj* obj, GXTexMapID mapID) { nofralloc #include "asm/dolphin/gx/GXInit/__GXDefaultTexRegionCallback.s" } #pragma pop /* 80359318-8035933C 353C58 0024+00 1/1 0/0 0/0 .text __GXDefaultTlutRegionCallback */ +// blr instead of b +#ifdef NONMATCHING +GXTlutRegion* __GXDefaultTlutRegionCallback(u32 tlut) { + GXTlutRegion* region; + + if (tlut >= 20) { + region = NULL; + } else { + region = &__GXData->field_0x388[tlut]; + } + + return region; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __GXDefaultTlutRegionCallback() { +asm GXTlutRegion* __GXDefaultTlutRegionCallback(u32 tlut) { nofralloc #include "asm/dolphin/gx/GXInit/__GXDefaultTlutRegionCallback.s" } #pragma pop +#endif + +/* 80451944-80451948 000E44 0004+00 1/1 0/0 0/0 .sbss resetFuncRegistered$145 */ +/* static */ u8 resetFuncRegistered[4]; + +/* 80451940-80451944 000E40 0004+00 1/1 0/0 0/0 .sbss calledOnce$37 */ +/* static */ u8 calledOnce[4]; + +/* 8045193C-80451940 000E3C 0004+00 1/1 0/0 0/0 .sbss None */ +/* static */ u8 data_8045193C[4]; + +/* 80451938-8045193C 000E38 0004+00 1/1 0/0 0/0 .sbss time$36 */ +/* static */ u8 time[4]; + +/* 80451930-80451938 000E30 0004+04 1/1 0/0 0/0 .sbss peCount$35 */ +/* static */ u8 peCount[4 + 4 /* padding */]; + +/* 8045192C-80451930 000E2C 0004+00 2/2 2/2 0/0 .sbss __memReg */ +u8 __memReg[4]; + +/* 80451928-8045192C 000E28 0004+00 1/1 11/11 0/0 .sbss __peReg */ +u8 __peReg[4]; + +/* 80451924-80451928 000E24 0004+00 2/2 12/12 0/0 .sbss __cpReg */ +u16* __cpReg; /* ############################################################################################## */ /* 80451920-80451924 000E20 0004+00 1/1 2/2 0/0 .sbss __piReg */ u32* __piReg; -/* 80451924-80451928 000E24 0004+00 2/2 12/12 0/0 .sbss __cpReg */ -u16* __cpReg; - -/* 80451928-8045192C 000E28 0004+00 1/1 11/11 0/0 .sbss __peReg */ -extern u8 __peReg[4]; -u8 __peReg[4]; - -/* 8045192C-80451930 000E2C 0004+00 2/2 2/2 0/0 .sbss __memReg */ -extern u8 __memReg[4]; -u8 __memReg[4]; - -/* 80451930-80451938 000E30 0004+04 1/1 0/0 0/0 .sbss peCount$35 */ -static u8 peCount[4 + 4 /* padding */]; - -/* 80451938-8045193C 000E38 0004+00 1/1 0/0 0/0 .sbss time$36 */ -static u8 time[4]; - -/* 8045193C-80451940 000E3C 0004+00 1/1 0/0 0/0 .sbss None */ -static u8 data_8045193C[4]; - -/* 80451940-80451944 000E40 0004+00 1/1 0/0 0/0 .sbss calledOnce$37 */ -static u8 calledOnce[4]; - /* 8035933C-803594CC 353C7C 0190+00 1/0 0/0 0/0 .text __GXShutdown */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __GXShutdown() { +asm void __GXShutdown(s32) { nofralloc #include "asm/dolphin/gx/GXInit/__GXShutdown.s" } @@ -145,7 +146,7 @@ asm void __GXShutdown() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __GXInitRevisionBits() { +asm void __GXInitRevisionBits(void) { nofralloc #include "asm/dolphin/gx/GXInit/__GXInitRevisionBits.s" } @@ -222,9 +223,6 @@ SECTION_DATA static void* GXResetFuncInfo[4 + 1 /* padding */] = { /* 80450A78-80450A80 -00001 0004+04 1/1 0/0 0/0 .sdata __GXVersion */ SECTION_SDATA static const char* __GXVersion = lit_1; -/* 80451944-80451948 000E44 0004+00 1/1 0/0 0/0 .sbss resetFuncRegistered$145 */ -static u8 resetFuncRegistered[4]; - /* 80456584-80456588 004B84 0004+00 1/1 0/0 0/0 .sdata2 @267 */ SECTION_SDATA2 static f32 lit_267 = 16777216.0f; @@ -240,7 +238,7 @@ SECTION_SDATA2 static u8 lit_268[4] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm GXFifoObj* GXInit(void*, u32) { +asm GXFifoObj* GXInit(void* base, u32 size) { nofralloc #include "asm/dolphin/gx/GXInit/GXInit.s" } @@ -274,7 +272,7 @@ SECTION_SDATA2 static f64 lit_334 = 4503599627370496.0 /* cast u32 to float */; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __GXInitGX() { +asm void __GXInitGX(void) { nofralloc #include "asm/dolphin/gx/GXInit/__GXInitGX.s" } diff --git a/libs/dolphin/gx/GXLight.c b/libs/dolphin/gx/GXLight.c new file mode 100644 index 0000000000..60d857b207 --- /dev/null +++ b/libs/dolphin/gx/GXLight.c @@ -0,0 +1,232 @@ +/** + * GXLight.c + * Description: + */ + +#include "dolphin/gx/GXLight.h" +#include "MSL_C/math.h" +#include "dolphin/gx/GX.h" + +/* 8035D630-8035D64C 357F70 001C+00 0/0 1/1 0/0 .text GXInitLightAttn */ +void GXInitLightAttn(GXLightObj* obj, f32 a0, f32 a1, f32 a2, f32 k0, f32 k1, f32 k2) { + obj->a0 = a0; + obj->a1 = a1; + obj->a2 = a2; + obj->k0 = k0; + obj->k1 = k1; + obj->k2 = k2; +} + +/* 8035D64C-8035D7DC 357F8C 0190+00 1/0 2/2 0/0 .text GXInitLightSpot */ +void GXInitLightSpot(GXLightObj* obj, f32 cutoff, GXSpotFn spot_fn) { + f32 rad; + f32 a, b, c, d; + + if (cutoff <= 0.0f || cutoff > 90.0f) { + spot_fn = GX_SP_OFF; + } + + rad = cosf((3.1415927f * cutoff) / 180.0f); + + switch (spot_fn) { + case GX_SP_FLAT: + a = -1000.0f * rad; + b = 1000.0f; + c = 0.0f; + break; + case GX_SP_COS: + b = 1.0f / (1.0f - rad); + a = -rad * b; + c = 0.0f; + break; + case GX_SP_COS2: + c = 1.0f / (1.0f - rad); + a = 0.0f; + b = -rad * c; + break; + case GX_SP_SHARP: + d = 1.0f / ((1.0f - rad) * (1.0f - rad)); + a = (rad * (rad - 2.0f)) * d; + b = 2.0f * d; + c = -d; + break; + case GX_SP_RING1: + d = 1.0f / ((1.0f - rad) * (1.0f - rad)); + c = -4.0f * d; + a = c * rad; + b = 4.0f * (1.0f + rad) * d; + break; + case GX_SP_RING2: + d = 1.0f / ((1.0f - rad) * (1.0f - rad)); + a = 1.0f - 2.0f * rad * rad * d; + b = 4.0f * rad * d; + c = -2.0f * d; + break; + case GX_SP_OFF: + default: + a = 1.0f; + b = 0.0f; + c = 0.0f; + break; + } + + obj->a0 = a; + obj->a1 = b; + obj->a2 = c; +} + +/* 8035D7DC-8035D8AC 35811C 00D0+00 0/0 2/2 0/0 .text GXInitLightDistAttn */ +void GXInitLightDistAttn(GXLightObj* obj, f32 dist, f32 brightness, GXDistAttnFn dist_fn) { + f32 a, b, c; + + if (dist < 0.0f) { + dist_fn = GX_DA_OFF; + } + + if (brightness <= 0.0f || brightness >= 1.0f) { + dist_fn = GX_DA_OFF; + } + + switch (dist_fn) { + case GX_DA_GENTLE: + a = 1.0f; + b = (1.0f - brightness) / (brightness * dist); + c = 0.0f; + break; + case GX_DA_MEDIUM: + a = 1.0f; + b = (0.5f * (1.0f - brightness)) / (brightness * dist); + c = (0.5f * (1.0f - brightness)) / (dist * (brightness * dist)); + break; + case GX_DA_STEEP: + a = 1.0f; + b = 0.0f; + c = (1.0f - brightness) / (dist * (brightness * dist)); + break; + case GX_DA_OFF: + default: + a = 1.0f; + b = 0.0f; + c = 0.0f; + break; + } + + obj->k0 = a; + obj->k1 = b; + obj->k2 = c; +} + +/* 8035D8AC-8035D8BC 3581EC 0010+00 0/0 3/3 0/0 .text GXInitLightPos */ +void GXInitLightPos(GXLightObj* obj, f32 x, f32 y, f32 z) { + obj->posX = x; + obj->posY = y; + obj->posZ = z; +} + +/* 8035D8BC-8035D8D8 3581FC 001C+00 0/0 3/3 0/0 .text GXInitLightDir */ +void GXInitLightDir(GXLightObj* obj, f32 x, f32 y, f32 z) { + obj->dirX = -x; + obj->dirY = -y; + obj->dirZ = -z; +} + +/* 8035D8D8-8035D8E4 358218 000C+00 0/0 3/3 0/0 .text GXInitLightColor */ +void GXInitLightColor(GXLightObj* obj, GXColor color) { + *(u32*)&obj->color = *(u32*)&color; +} + +/* 8035D8E4-8035D960 358224 007C+00 0/0 4/4 2/2 .text GXLoadLightObjImm */ +asm void GXLoadLightObjImm(register GXLightObj* obj, register GXLightID id) { + // clang-format off + nofralloc + + cntlzw r0, id + subfic r0, r0, 0x1f + rlwinm r5, r0, 4, 0x19, 0x1b + lis r4, 0xCC01 + li r0, 0x10 + addi r5, r5, 0x600 + stb r0, 0x8000(r4) + oris r0, r5, 0xf + stwu r0, -0x8000(r4) + lwz r0, 0xc(r3) + xor r6, r6, r6 + psq_l f5, 16(obj), 0, 0 + psq_l f4, 24(obj), 0, 0 + psq_l f3, 32(obj), 0, 0 + psq_l f2, 40(obj), 0, 0 + psq_l f1, 48(obj), 0, 0 + psq_l f0, 56(obj), 0, 0 + stw r6, 0(r4) + stw r6, 0(r4) + stw r6, 0(r4) + stw r0, 0(r4) + psq_st f5, 0(r4), 0, 0 + psq_st f4, 0(r4), 0, 0 + psq_st f3, 0(r4), 0, 0 + psq_st f2, 0(r4), 0, 0 + psq_st f1, 0(r4), 0, 0 + psq_st f0, 0(r4), 0, 0 + + lwz r3, __GXData(r2) + li r0, 1 + sth r0, 2(r3) + + blr + // clang-format on +} + +/* 8035D960-8035DA48 3582A0 00E8+00 0/0 7/7 4/4 .text GXSetChanAmbColor */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void GXSetChanAmbColor(GXChannelID channel, GXColor color) { + nofralloc +#include "asm/dolphin/gx/GXLight/GXSetChanAmbColor.s" +} +#pragma pop + +/* 8035DA48-8035DB30 358388 00E8+00 0/0 20/20 2/2 .text GXSetChanMatColor */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void GXSetChanMatColor(GXChannelID channel, GXColor color) { + nofralloc +#include "asm/dolphin/gx/GXLight/GXSetChanMatColor.s" +} +#pragma pop + +/* 8035DB30-8035DB6C 358470 003C+00 0/0 51/51 6/6 .text GXSetNumChans */ +// 1 wrong reg +#ifdef NONMATCHING +void GXSetNumChans(u8 chan_num) { + GXData* data = __GXData; + GX_BITFIELD_SET(data->field_0x204, 25, 3, chan_num); + + GXFIFO.u8 = 0x10; + GXFIFO.s32 = 0x1009; + GXFIFO.s32 = chan_num; + + data->field_0x5ac |= 0x4; +} +#else +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void GXSetNumChans(u8 chan_num) { + nofralloc +#include "asm/dolphin/gx/GXLight/GXSetNumChans.s" +} +#pragma pop +#endif + +/* 8035DB6C-8035DC1C 3584AC 00B0+00 0/0 34/34 4/4 .text GXSetChanCtrl */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void GXSetChanCtrl(GXChannelID channel, GXBool enable, GXColorSrc amb_src, GXColorSrc mat_src, + u32 light_mask, GXDiffuseFn diff_fn, GXAttnFn attn_fn) { + nofralloc +#include "asm/dolphin/gx/GXLight/GXSetChanCtrl.s" +} +#pragma pop diff --git a/libs/dolphin/gx/GXLight.cpp b/libs/dolphin/gx/GXLight.cpp deleted file mode 100644 index 56681864f2..0000000000 --- a/libs/dolphin/gx/GXLight.cpp +++ /dev/null @@ -1,201 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: GXLight -// - -#include "dolphin/gx/GXLight.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void GXInitLightAttn(); -extern "C" void GXInitLightSpot(); -extern "C" void GXInitLightDistAttn(); -extern "C" void GXInitLightPos(); -extern "C" void GXInitLightDir(); -extern "C" void GXInitLightColor(); -extern "C" void GXLoadLightObjImm(); -extern "C" void GXSetChanAmbColor(); -extern "C" void GXSetChanMatColor(); -extern "C" void GXSetNumChans(); -extern "C" void GXSetChanCtrl(); - -// -// External References: -// - -extern "C" void cosf(); -extern "C" extern void* __GXData; - -// -// Declarations: -// - -/* 8035D630-8035D64C 357F70 001C+00 0/0 1/1 0/0 .text GXInitLightAttn */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXInitLightAttn() { - nofralloc -#include "asm/dolphin/gx/GXLight/GXInitLightAttn.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 803D2578-803D2598 -00001 001C+04 1/1 0/0 0/0 .data @145 */ -SECTION_DATA static void* lit_145[7 + 1 /* padding */] = { - (void*)(((char*)GXInitLightSpot) + 0x160), - (void*)(((char*)GXInitLightSpot) + 0x70), - (void*)(((char*)GXInitLightSpot) + 0x84), - (void*)(((char*)GXInitLightSpot) + 0xA4), - (void*)(((char*)GXInitLightSpot) + 0xC4), - (void*)(((char*)GXInitLightSpot) + 0xF0), - (void*)(((char*)GXInitLightSpot) + 0x124), - /* padding */ - NULL, -}; - -/* 804565B8-804565BC 004BB8 0004+00 2/2 0/0 0/0 .sdata2 @134 */ -SECTION_SDATA2 static u8 lit_134[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 804565BC-804565C0 004BBC 0004+00 1/1 0/0 0/0 .sdata2 @135 */ -SECTION_SDATA2 static f32 lit_135 = 90.0f; - -/* 804565C0-804565C4 004BC0 0004+00 1/1 0/0 0/0 .sdata2 @136 */ -SECTION_SDATA2 static f32 lit_136 = 3.1415927410125732f; - -/* 804565C4-804565C8 004BC4 0004+00 1/1 0/0 0/0 .sdata2 @137 */ -SECTION_SDATA2 static f32 lit_137 = 180.0f; - -/* 804565C8-804565CC 004BC8 0004+00 1/1 0/0 0/0 .sdata2 @138 */ -SECTION_SDATA2 static f32 lit_138 = -1000.0f; - -/* 804565CC-804565D0 004BCC 0004+00 1/1 0/0 0/0 .sdata2 @139 */ -SECTION_SDATA2 static f32 lit_139 = 1000.0f; - -/* 804565D0-804565D4 004BD0 0004+00 2/2 0/0 0/0 .sdata2 @140 */ -SECTION_SDATA2 static f32 lit_140 = 1.0f; - -/* 804565D4-804565D8 004BD4 0004+00 1/1 0/0 0/0 .sdata2 @141 */ -SECTION_SDATA2 static f32 lit_141 = 2.0f; - -/* 804565D8-804565DC 004BD8 0004+00 1/1 0/0 0/0 .sdata2 @142 */ -SECTION_SDATA2 static f32 lit_142 = -4.0f; - -/* 804565DC-804565E0 004BDC 0004+00 1/1 0/0 0/0 .sdata2 @143 */ -SECTION_SDATA2 static f32 lit_143 = 4.0f; - -/* 804565E0-804565E4 004BE0 0004+00 1/1 0/0 0/0 .sdata2 @144 */ -SECTION_SDATA2 static f32 lit_144 = -2.0f; - -/* 8035D64C-8035D7DC 357F8C 0190+00 1/0 2/2 0/0 .text GXInitLightSpot */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXInitLightSpot() { - nofralloc -#include "asm/dolphin/gx/GXLight/GXInitLightSpot.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 804565E4-804565E8 004BE4 0004+00 1/1 0/0 0/0 .sdata2 @160 */ -SECTION_SDATA2 static f32 lit_160 = 0.5f; - -/* 8035D7DC-8035D8AC 35811C 00D0+00 0/0 2/2 0/0 .text GXInitLightDistAttn */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXInitLightDistAttn() { - nofralloc -#include "asm/dolphin/gx/GXLight/GXInitLightDistAttn.s" -} -#pragma pop - -/* 8035D8AC-8035D8BC 3581EC 0010+00 0/0 3/3 0/0 .text GXInitLightPos */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXInitLightPos() { - nofralloc -#include "asm/dolphin/gx/GXLight/GXInitLightPos.s" -} -#pragma pop - -/* 8035D8BC-8035D8D8 3581FC 001C+00 0/0 3/3 0/0 .text GXInitLightDir */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXInitLightDir() { - nofralloc -#include "asm/dolphin/gx/GXLight/GXInitLightDir.s" -} -#pragma pop - -/* 8035D8D8-8035D8E4 358218 000C+00 0/0 3/3 0/0 .text GXInitLightColor */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXInitLightColor() { - nofralloc -#include "asm/dolphin/gx/GXLight/GXInitLightColor.s" -} -#pragma pop - -/* 8035D8E4-8035D960 358224 007C+00 0/0 4/4 2/2 .text GXLoadLightObjImm */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXLoadLightObjImm() { - nofralloc -#include "asm/dolphin/gx/GXLight/GXLoadLightObjImm.s" -} -#pragma pop - -/* 8035D960-8035DA48 3582A0 00E8+00 0/0 7/7 4/4 .text GXSetChanAmbColor */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetChanAmbColor() { - nofralloc -#include "asm/dolphin/gx/GXLight/GXSetChanAmbColor.s" -} -#pragma pop - -/* 8035DA48-8035DB30 358388 00E8+00 0/0 20/20 2/2 .text GXSetChanMatColor */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetChanMatColor() { - nofralloc -#include "asm/dolphin/gx/GXLight/GXSetChanMatColor.s" -} -#pragma pop - -/* 8035DB30-8035DB6C 358470 003C+00 0/0 51/51 6/6 .text GXSetNumChans */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetNumChans() { - nofralloc -#include "asm/dolphin/gx/GXLight/GXSetNumChans.s" -} -#pragma pop - -/* 8035DB6C-8035DC1C 3584AC 00B0+00 0/0 34/34 4/4 .text GXSetChanCtrl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void GXSetChanCtrl() { - nofralloc -#include "asm/dolphin/gx/GXLight/GXSetChanCtrl.s" -} -#pragma pop diff --git a/libs/dolphin/gx/GXMisc.cpp b/libs/dolphin/gx/GXMisc.c similarity index 76% rename from libs/dolphin/gx/GXMisc.cpp rename to libs/dolphin/gx/GXMisc.c index efe46362cc..ed320eef64 100644 --- a/libs/dolphin/gx/GXMisc.cpp +++ b/libs/dolphin/gx/GXMisc.c @@ -11,50 +11,43 @@ // Forward References: // -extern "C" void GXSetMisc(); -extern "C" void GXFlush(); -extern "C" void __GXAbort(); -extern "C" void GXAbortFrame(); -extern "C" void GXSetDrawDone(); -extern "C" void GXDrawDone(); -extern "C" void GXPixModeSync(); -extern "C" void GXPokeAlphaMode(); -extern "C" void GXPokeAlphaRead(); -extern "C" void GXPokeAlphaUpdate(); -extern "C" void GXPokeBlendMode(); -extern "C" void GXPokeColorUpdate(); -extern "C" void GXPokeDstAlpha(); -extern "C" void GXPokeDither(); -extern "C" void GXPokeZMode(); -extern "C" void GXPeekZ(); -extern "C" void GXSetDrawSyncCallback(); -extern "C" static void GXTokenInterruptHandler(); -extern "C" void GXSetDrawDoneCallback(); -extern "C" static void GXFinishInterruptHandler(); -extern "C" void __GXPEInit(); +void GXSetMisc(); +void GXFlush(); +void __GXAbort(); +void GXAbortFrame(); +void GXSetDrawDone(); +void GXDrawDone(); +void GXPixModeSync(); +void GXPokeAlphaRead(); +void GXPokeBlendMode(); +void GXSetDrawSyncCallback(); +static void GXTokenInterruptHandler(); +void GXSetDrawDoneCallback(); +static void GXFinishInterruptHandler(); +void __GXPEInit(); // // External References: // -extern "C" void PPCSync(); -extern "C" void OSSetCurrentContext(); -extern "C" void OSClearContext(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void __OSSetInterruptHandler(); -extern "C" void __OSUnmaskInterrupts(); -extern "C" void OSInitThreadQueue(); -extern "C" void OSSleepThread(); -extern "C" void OSWakeupThread(); -extern "C" void OSGetTime(); -extern "C" void __GXInitRevisionBits(); -extern "C" void __GXCleanGPFifo(); -extern "C" void GXGetGPFifo(); -extern "C" void __GXSetDirtyState(); -extern "C" extern u8 __peReg[4]; -extern "C" extern u8 __memReg[4]; -extern "C" extern void* __GXData; +void PPCSync(); +void OSSetCurrentContext(); +void OSClearContext(); +void OSDisableInterrupts(); +void OSRestoreInterrupts(); +void __OSSetInterruptHandler(); +void __OSUnmaskInterrupts(); +void OSInitThreadQueue(); +void OSSleepThread(); +void OSWakeupThread(); +void OSGetTime(); +void __GXInitRevisionBits(); +void __GXCleanGPFifo(); +void GXGetGPFifo(); +void __GXSetDirtyState(); +extern u8 __peReg[4]; +extern u8 __memReg[4]; +extern void* __GXData; // // Declarations: @@ -64,7 +57,7 @@ extern "C" extern void* __GXData; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetMisc() { +asm void GXSetMisc(u32 id, u32 value) { nofralloc #include "asm/dolphin/gx/GXMisc/GXSetMisc.s" } @@ -74,7 +67,7 @@ asm void GXSetMisc() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXFlush() { +asm void GXFlush(void) { nofralloc #include "asm/dolphin/gx/GXMisc/GXFlush.s" } @@ -84,7 +77,7 @@ asm void GXFlush() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __GXAbort() { +asm void __GXAbort(void) { nofralloc #include "asm/dolphin/gx/GXMisc/__GXAbort.s" } @@ -94,7 +87,7 @@ asm void __GXAbort() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXAbortFrame() { +asm void GXAbortFrame(void) { nofralloc #include "asm/dolphin/gx/GXMisc/GXAbortFrame.s" } @@ -114,7 +107,7 @@ static u8 data_80451970[4]; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetDrawDone() { +asm void GXSetDrawDone(void) { nofralloc #include "asm/dolphin/gx/GXMisc/GXSetDrawDone.s" } @@ -128,7 +121,7 @@ static u8 FinishQueue[8]; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXDrawDone() { +asm void GXDrawDone(void) { nofralloc #include "asm/dolphin/gx/GXMisc/GXDrawDone.s" } @@ -138,7 +131,7 @@ asm void GXDrawDone() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXPixModeSync() { +asm void GXPixModeSync(void) { nofralloc #include "asm/dolphin/gx/GXMisc/GXPixModeSync.s" } @@ -148,7 +141,7 @@ asm void GXPixModeSync() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXPokeAlphaMode() { +asm void GXPokeAlphaMode(GXCompare comp, u8 threshold) { nofralloc #include "asm/dolphin/gx/GXMisc/GXPokeAlphaMode.s" } @@ -158,7 +151,7 @@ asm void GXPokeAlphaMode() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXPokeAlphaRead() { +asm void GXPokeAlphaRead(GXAlphaReadMode mode) { nofralloc #include "asm/dolphin/gx/GXMisc/GXPokeAlphaRead.s" } @@ -168,7 +161,7 @@ asm void GXPokeAlphaRead() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXPokeAlphaUpdate() { +asm void GXPokeAlphaUpdate(GXBool enable_update) { nofralloc #include "asm/dolphin/gx/GXMisc/GXPokeAlphaUpdate.s" } @@ -178,7 +171,7 @@ asm void GXPokeAlphaUpdate() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXPokeBlendMode() { +asm void GXPokeBlendMode(GXBlendMode mode, GXBlendFactor src_factor, GXBlendFactor dst_factor, GXLogicOp op) { nofralloc #include "asm/dolphin/gx/GXMisc/GXPokeBlendMode.s" } @@ -188,7 +181,7 @@ asm void GXPokeBlendMode() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXPokeColorUpdate() { +asm void GXPokeColorUpdate(GXBool enable_update) { nofralloc #include "asm/dolphin/gx/GXMisc/GXPokeColorUpdate.s" } @@ -198,7 +191,7 @@ asm void GXPokeColorUpdate() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXPokeDstAlpha() { +asm void GXPokeDstAlpha(GXBool enable, u8 alpha) { nofralloc #include "asm/dolphin/gx/GXMisc/GXPokeDstAlpha.s" } @@ -208,7 +201,7 @@ asm void GXPokeDstAlpha() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXPokeDither() { +asm void GXPokeDither(GXBool enable) { nofralloc #include "asm/dolphin/gx/GXMisc/GXPokeDither.s" } @@ -218,7 +211,7 @@ asm void GXPokeDither() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXPokeZMode() { +asm void GXPokeZMode(GXBool enable_compare, GXCompare comp) { nofralloc #include "asm/dolphin/gx/GXMisc/GXPokeZMode.s" } @@ -228,7 +221,7 @@ asm void GXPokeZMode() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXPeekZ() { +asm void GXPeekZ(u16 x, u16 y, u32* z) { nofralloc #include "asm/dolphin/gx/GXMisc/GXPeekZ.s" } @@ -238,7 +231,7 @@ asm void GXPeekZ() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetDrawSyncCallback() { +asm void GXSetDrawSyncCallback(GXDrawSyncCallback callback) { nofralloc #include "asm/dolphin/gx/GXMisc/GXSetDrawSyncCallback.s" } @@ -258,7 +251,7 @@ static asm void GXTokenInterruptHandler() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetDrawDoneCallback() { +asm void GXSetDrawDoneCallback(GXDrawDoneCallback callback) { nofralloc #include "asm/dolphin/gx/GXMisc/GXSetDrawDoneCallback.s" } @@ -278,7 +271,7 @@ static asm void GXFinishInterruptHandler() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __GXPEInit() { +asm void __GXPEInit(void) { nofralloc #include "asm/dolphin/gx/GXMisc/__GXPEInit.s" } diff --git a/libs/dolphin/gx/GXPerf.cpp b/libs/dolphin/gx/GXPerf.c similarity index 93% rename from libs/dolphin/gx/GXPerf.cpp rename to libs/dolphin/gx/GXPerf.c index f436e2daa2..c1b0c59cc8 100644 --- a/libs/dolphin/gx/GXPerf.cpp +++ b/libs/dolphin/gx/GXPerf.c @@ -11,16 +11,16 @@ // Forward References: // -extern "C" void GXSetGPMetric(); -extern "C" void GXClearGPMetric(); -extern "C" void GXReadXfRasMetric(); +void GXSetGPMetric(); +void GXClearGPMetric(); +void GXReadXfRasMetric(); // // External References: // -extern "C" extern u8 __cpReg[4]; -extern "C" extern void* __GXData; +extern u8 __cpReg[4]; +extern void* __GXData; // // Declarations: @@ -89,7 +89,7 @@ SECTION_DATA static void* lit_181[36 + 1 /* padding */] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetGPMetric() { +asm void GXSetGPMetric(u32 perf0, u32 perf1) { nofralloc #include "asm/dolphin/gx/GXPerf/GXSetGPMetric.s" } @@ -99,7 +99,7 @@ asm void GXSetGPMetric() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXClearGPMetric() { +asm void GXClearGPMetric(void) { nofralloc #include "asm/dolphin/gx/GXPerf/GXClearGPMetric.s" } @@ -109,7 +109,7 @@ asm void GXClearGPMetric() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXReadXfRasMetric() { +asm void GXReadXfRasMetric(u32* param_0, u32* param_1, u32* param_2, u32* param_3) { nofralloc #include "asm/dolphin/gx/GXPerf/GXReadXfRasMetric.s" } diff --git a/libs/dolphin/gx/GXPixel.cpp b/libs/dolphin/gx/GXPixel.c similarity index 83% rename from libs/dolphin/gx/GXPixel.cpp rename to libs/dolphin/gx/GXPixel.c index 01e2fef9ee..c2b5037907 100644 --- a/libs/dolphin/gx/GXPixel.cpp +++ b/libs/dolphin/gx/GXPixel.c @@ -11,26 +11,16 @@ // Forward References: // -extern "C" void GXSetFog(); -extern "C" void GXSetFogRangeAdj(); -extern "C" void GXSetBlendMode(); -extern "C" void GXSetColorUpdate(); -extern "C" void GXSetAlphaUpdate(); -extern "C" void GXSetZMode(); -extern "C" void GXSetZCompLoc(); -extern "C" void GXSetPixelFmt(); -extern "C" void GXSetDither(); -extern "C" void GXSetDstAlpha(); -extern "C" void GXSetFieldMask(); -extern "C" void GXSetFieldMode(); +void GXSetBlendMode(); +void GXSetPixelFmt(); // // External References: // -extern "C" void __GXFlushTextureState(); -extern "C" void __cvt_fp2unsigned(); -extern "C" extern void* __GXData; +void __GXFlushTextureState(); +void __cvt_fp2unsigned(); +extern void* __GXData; // // Declarations: @@ -82,7 +72,7 @@ SECTION_SDATA2 static f64 lit_219 = 4503601774854144.0 /* cast s32 to float */; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetFog() { +asm void GXSetFog(GXFogType type, f32 startZ, f32 endZ, f32 nearZ, f32 farZ, GXColor color) { nofralloc #include "asm/dolphin/gx/GXPixel/GXSetFog.s" } @@ -92,7 +82,7 @@ asm void GXSetFog() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetFogRangeAdj() { +asm void GXSetFogRangeAdj(GXBool enable, u16 center, GXFogAdjTable* table) { nofralloc #include "asm/dolphin/gx/GXPixel/GXSetFogRangeAdj.s" } @@ -102,7 +92,7 @@ asm void GXSetFogRangeAdj() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetBlendMode() { +asm void GXSetBlendMode(GXBlendMode mode, GXBlendFactor src_factor, GXBlendFactor dst_factor, GXLogicOp op) { nofralloc #include "asm/dolphin/gx/GXPixel/GXSetBlendMode.s" } @@ -112,7 +102,7 @@ asm void GXSetBlendMode() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetColorUpdate() { +asm void GXSetColorUpdate(GXBool enable_update) { nofralloc #include "asm/dolphin/gx/GXPixel/GXSetColorUpdate.s" } @@ -122,7 +112,7 @@ asm void GXSetColorUpdate() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetAlphaUpdate() { +asm void GXSetAlphaUpdate(GXBool enable_update) { nofralloc #include "asm/dolphin/gx/GXPixel/GXSetAlphaUpdate.s" } @@ -132,7 +122,7 @@ asm void GXSetAlphaUpdate() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetZMode() { +asm void GXSetZMode(GXBool enable_compare, GXCompare comp, GXBool enable_update) { nofralloc #include "asm/dolphin/gx/GXPixel/GXSetZMode.s" } @@ -142,7 +132,7 @@ asm void GXSetZMode() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetZCompLoc() { +asm void GXSetZCompLoc(GXBool z_buf_before_tex) { nofralloc #include "asm/dolphin/gx/GXPixel/GXSetZCompLoc.s" } @@ -159,7 +149,7 @@ SECTION_DATA static u8 p2f[32] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetPixelFmt() { +asm void GXSetPixelFmt(GXPixelFmt pixel_fmt, GXZFmt16 z_fmt) { nofralloc #include "asm/dolphin/gx/GXPixel/GXSetPixelFmt.s" } @@ -169,7 +159,7 @@ asm void GXSetPixelFmt() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetDither() { +asm void GXSetDither(GXBool enable_dither) { nofralloc #include "asm/dolphin/gx/GXPixel/GXSetDither.s" } @@ -179,7 +169,7 @@ asm void GXSetDither() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetDstAlpha() { +asm void GXSetDstAlpha(GXBool enable, u8 alpha) { nofralloc #include "asm/dolphin/gx/GXPixel/GXSetDstAlpha.s" } @@ -189,7 +179,7 @@ asm void GXSetDstAlpha() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetFieldMask() { +asm void GXSetFieldMask(GXBool odd_mask, GXBool even_mask) { nofralloc #include "asm/dolphin/gx/GXPixel/GXSetFieldMask.s" } @@ -199,7 +189,7 @@ asm void GXSetFieldMask() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetFieldMode() { +asm void GXSetFieldMode(GXBool field_mode, GXBool half_aspect_ratio) { nofralloc #include "asm/dolphin/gx/GXPixel/GXSetFieldMode.s" } diff --git a/libs/dolphin/gx/GXTev.cpp b/libs/dolphin/gx/GXTev.c similarity index 76% rename from libs/dolphin/gx/GXTev.cpp rename to libs/dolphin/gx/GXTev.c index cb029509c4..9848efcf12 100644 --- a/libs/dolphin/gx/GXTev.cpp +++ b/libs/dolphin/gx/GXTev.c @@ -11,28 +11,24 @@ // Forward References: // -extern "C" void GXSetTevOp(); -extern "C" void GXSetTevColorIn(); -extern "C" void GXSetTevAlphaIn(); -extern "C" void GXSetTevColorOp(); -extern "C" void GXSetTevAlphaOp(); -extern "C" void GXSetTevColor(); -extern "C" void GXSetTevColorS10(); -extern "C" void GXSetTevKColor(); -extern "C" void GXSetTevKColorSel(); -extern "C" void GXSetTevKAlphaSel(); -extern "C" void GXSetTevSwapMode(); -extern "C" void GXSetTevSwapModeTable(); -extern "C" void GXSetAlphaCompare(); -extern "C" void GXSetZTexture(); -extern "C" void GXSetTevOrder(); -extern "C" void GXSetNumTevStages(); +void GXSetTevOp(); +void GXSetTevColorIn(); +void GXSetTevAlphaIn(); +void GXSetTevColor(); +void GXSetTevColorS10(); +void GXSetTevKColor(); +void GXSetTevKColorSel(); +void GXSetTevKAlphaSel(); +void GXSetTevSwapMode(); +void GXSetTevSwapModeTable(); +void GXSetZTexture(); +void GXSetTevOrder(); // // External References: // -extern "C" extern void* __GXData; +extern void* __GXData; // // Declarations: @@ -49,7 +45,7 @@ SECTION_DATA static u8 TEVCOpTableST0[20] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetTevOp() { +asm void GXSetTevOp(GXTevStageID id, GXTevMode mode) { nofralloc #include "asm/dolphin/gx/GXTev/GXSetTevOp.s" } @@ -59,7 +55,8 @@ asm void GXSetTevOp() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetTevColorIn() { +asm void GXSetTevColorIn(GXTevStageID stage, GXTevColorArg a, GXTevColorArg b, GXTevColorArg c, + GXTevColorArg d) { nofralloc #include "asm/dolphin/gx/GXTev/GXSetTevColorIn.s" } @@ -69,7 +66,8 @@ asm void GXSetTevColorIn() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetTevAlphaIn() { +asm void GXSetTevAlphaIn(GXTevStageID stage, GXTevAlphaArg a, GXTevAlphaArg b, GXTevAlphaArg c, + GXTevAlphaArg d) { nofralloc #include "asm/dolphin/gx/GXTev/GXSetTevAlphaIn.s" } @@ -79,7 +77,8 @@ asm void GXSetTevAlphaIn() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetTevColorOp() { +asm void GXSetTevColorOp(GXTevStageID stage, GXTevOp op, GXTevBias bias, GXTevScale scale, + GXBool clamp, GXTevRegID out_reg) { nofralloc #include "asm/dolphin/gx/GXTev/GXSetTevColorOp.s" } @@ -89,7 +88,8 @@ asm void GXSetTevColorOp() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetTevAlphaOp() { +asm void GXSetTevAlphaOp(GXTevStageID stage, GXTevOp op, GXTevBias bias, GXTevScale scale, + GXBool clamp, GXTevRegID out_reg) { nofralloc #include "asm/dolphin/gx/GXTev/GXSetTevAlphaOp.s" } @@ -99,7 +99,7 @@ asm void GXSetTevAlphaOp() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetTevColor() { +asm void GXSetTevColor(GXTevRegID id, GXColor color) { nofralloc #include "asm/dolphin/gx/GXTev/GXSetTevColor.s" } @@ -109,7 +109,7 @@ asm void GXSetTevColor() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetTevColorS10() { +asm void GXSetTevColorS10(GXTevRegID id, GXColorS10 color) { nofralloc #include "asm/dolphin/gx/GXTev/GXSetTevColorS10.s" } @@ -119,7 +119,7 @@ asm void GXSetTevColorS10() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetTevKColor() { +asm void GXSetTevKColor(GXTevKColorID id, GXColor color) { nofralloc #include "asm/dolphin/gx/GXTev/GXSetTevKColor.s" } @@ -129,7 +129,7 @@ asm void GXSetTevKColor() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetTevKColorSel() { +asm void GXSetTevKColorSel(GXTevStageID stage, GXTevKColorSel color_sel) { nofralloc #include "asm/dolphin/gx/GXTev/GXSetTevKColorSel.s" } @@ -139,7 +139,7 @@ asm void GXSetTevKColorSel() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetTevKAlphaSel() { +asm void GXSetTevKAlphaSel(GXTevStageID stage, GXTevKAlphaSel alpha_sel) { nofralloc #include "asm/dolphin/gx/GXTev/GXSetTevKAlphaSel.s" } @@ -149,7 +149,7 @@ asm void GXSetTevKAlphaSel() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetTevSwapMode() { +asm void GXSetTevSwapMode(GXTevStageID stage, GXTevSwapSel ras_sel, GXTevSwapSel tex_sel) { nofralloc #include "asm/dolphin/gx/GXTev/GXSetTevSwapMode.s" } @@ -159,7 +159,8 @@ asm void GXSetTevSwapMode() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetTevSwapModeTable() { +asm void GXSetTevSwapModeTable(GXTevSwapSel select, GXTevColor r, GXTevColor g, GXTevColor b, + GXTevColor a) { nofralloc #include "asm/dolphin/gx/GXTev/GXSetTevSwapModeTable.s" } @@ -169,7 +170,7 @@ asm void GXSetTevSwapModeTable() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetAlphaCompare() { +asm void GXSetAlphaCompare(GXCompare comp0, u8 ref0, GXAlphaOp op, GXCompare comp1, u8 ref1) { nofralloc #include "asm/dolphin/gx/GXTev/GXSetAlphaCompare.s" } @@ -179,7 +180,7 @@ asm void GXSetAlphaCompare() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetZTexture() { +asm void GXSetZTexture(GXZTexOp op, GXTexFmt fmt, u32 bias) { nofralloc #include "asm/dolphin/gx/GXTev/GXSetZTexture.s" } @@ -262,7 +263,7 @@ SECTION_DATA static u8 c2r[36 + 4 /* padding */] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetTevOrder() { +asm void GXSetTevOrder(GXTevStageID stage, GXTexCoordID coord, GXTexMapID map, GXChannelID color) { nofralloc #include "asm/dolphin/gx/GXTev/GXSetTevOrder.s" } @@ -272,7 +273,7 @@ asm void GXSetTevOrder() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetNumTevStages() { +asm void GXSetNumTevStages(u8 num_stages) { nofralloc #include "asm/dolphin/gx/GXTev/GXSetNumTevStages.s" } diff --git a/libs/dolphin/gx/GXTexture.cpp b/libs/dolphin/gx/GXTexture.c similarity index 88% rename from libs/dolphin/gx/GXTexture.cpp rename to libs/dolphin/gx/GXTexture.c index b526a5e8d1..dc89a7ffb1 100644 --- a/libs/dolphin/gx/GXTexture.cpp +++ b/libs/dolphin/gx/GXTexture.c @@ -11,39 +11,22 @@ // Forward References: // -extern "C" void GXGetTexBufferSize(); -extern "C" void __GetImageTileCount(); -extern "C" void GXInitTexObj(); -extern "C" void GXInitTexObjCI(); -extern "C" void GXInitTexObjLOD(); -extern "C" void GXGetTexObjWidth(); -extern "C" void GXGetTexObjHeight(); -extern "C" void GXGetTexObjFmt(); -extern "C" void GXGetTexObjWrapS(); -extern "C" void GXGetTexObjWrapT(); -extern "C" void GXGetTexObjMipMap(); -extern "C" void GXGetTexObjTlut(); -extern "C" static void GXLoadTexObjPreLoaded(); -extern "C" void GXLoadTexObj(); -extern "C" void GXInitTlutObj(); -extern "C" void GXLoadTlut(); -extern "C" void GXInitTexCacheRegion(); -extern "C" void GXInitTlutRegion(); -extern "C" void GXInvalidateTexAll(); -extern "C" void GXSetTexRegionCallback(); -extern "C" void GXSetTlutRegionCallback(); -extern "C" void GXSetTexCoordScaleManually(); -extern "C" void __SetSURegs(); -extern "C" void __GXSetSUTexRegs(); -extern "C" void __GXSetTmemConfig(); +void __GetImageTileCount(); +static void GXLoadTexObjPreLoaded(); +void GXLoadTexObj(); +void GXLoadTlut(); +void GXInitTlutRegion(); +void GXInvalidateTexAll(); +void __SetSURegs(); +void __GXSetSUTexRegs(); +void __GXSetTmemConfig(); // // External References: // SECTION_INIT void memset(); -extern "C" void __GXFlushTextureState(); -extern "C" extern void* __GXData; +void __GXFlushTextureState(); // // Declarations: @@ -89,7 +72,7 @@ SECTION_DATA static void* lit_104[61] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXGetTexBufferSize() { +asm u32 GXGetTexBufferSize(u16 width, u16 height, u32 format, GXBool mipmap, u8 max_lod) { nofralloc #include "asm/dolphin/gx/GXTexture/GXGetTexBufferSize.s" } @@ -177,7 +160,8 @@ SECTION_SDATA2 static f64 lit_222 = 4503599627370496.0 /* cast u32 to float */; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXInitTexObj() { +asm void GXInitTexObj(GXTexObj* obj, void* image, u16 width, u16 height, GXTexFmt fmt, + GXTexWrapMode wrapS, GXTexWrapMode wrapT, GXBool mipmap) { nofralloc #include "asm/dolphin/gx/GXTexture/GXInitTexObj.s" } @@ -187,7 +171,8 @@ asm void GXInitTexObj() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXInitTexObjCI() { +asm void GXInitTexObjCI(GXTexObj* obj, void* image, u16 width, u16 height, GXCITexFmt format, + GXTexWrapMode wrapS, GXTexWrapMode wrapT, GXBool mipmap, u32 tlut_name) { nofralloc #include "asm/dolphin/gx/GXTexture/GXInitTexObjCI.s" } @@ -269,7 +254,9 @@ SECTION_SDATA2 static f32 lit_293 = 10.0f; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXInitTexObjLOD() { +asm void GXInitTexObjLOD(GXTexObj* obj, GXTexFilter min_filter, GXTexFilter max_filter, f32 min_lod, + f32 max_lod, f32 lod_bias, GXBool bias_clamp, GXBool edge_lod, + GXAnisotropy aniso) { nofralloc #include "asm/dolphin/gx/GXTexture/GXInitTexObjLOD.s" } @@ -279,7 +266,7 @@ asm void GXInitTexObjLOD() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXGetTexObjWidth() { +asm u16 GXGetTexObjWidth(GXTexObj* obj) { nofralloc #include "asm/dolphin/gx/GXTexture/GXGetTexObjWidth.s" } @@ -289,7 +276,7 @@ asm void GXGetTexObjWidth() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXGetTexObjHeight() { +asm u16 GXGetTexObjHeight(GXTexObj* obj) { nofralloc #include "asm/dolphin/gx/GXTexture/GXGetTexObjHeight.s" } @@ -299,7 +286,7 @@ asm void GXGetTexObjHeight() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXGetTexObjFmt() { +asm GXTexFmt GXGetTexObjFmt(GXTexObj* obj) { nofralloc #include "asm/dolphin/gx/GXTexture/GXGetTexObjFmt.s" } @@ -309,7 +296,7 @@ asm void GXGetTexObjFmt() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXGetTexObjWrapS() { +asm GXTexWrapMode GXGetTexObjWrapS(GXTexObj* obj) { nofralloc #include "asm/dolphin/gx/GXTexture/GXGetTexObjWrapS.s" } @@ -319,7 +306,7 @@ asm void GXGetTexObjWrapS() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXGetTexObjWrapT() { +asm GXTexWrapMode GXGetTexObjWrapT(GXTexObj* obj) { nofralloc #include "asm/dolphin/gx/GXTexture/GXGetTexObjWrapT.s" } @@ -329,7 +316,7 @@ asm void GXGetTexObjWrapT() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXGetTexObjMipMap() { +asm GXBool GXGetTexObjMipMap(GXTexObj* obj) { nofralloc #include "asm/dolphin/gx/GXTexture/GXGetTexObjMipMap.s" } @@ -339,7 +326,7 @@ asm void GXGetTexObjMipMap() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXGetTexObjTlut() { +asm u32 GXGetTexObjTlut(GXTexObj* obj) { nofralloc #include "asm/dolphin/gx/GXTexture/GXGetTexObjTlut.s" } @@ -349,7 +336,7 @@ asm void GXGetTexObjTlut() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void GXLoadTexObjPreLoaded() { +static asm void GXLoadTexObjPreLoaded(GXTexObj* obj, GXTexRegion* region, GXTexMapID id) { nofralloc #include "asm/dolphin/gx/GXTexture/GXLoadTexObjPreLoaded.s" } @@ -359,7 +346,7 @@ static asm void GXLoadTexObjPreLoaded() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXLoadTexObj() { +asm void GXLoadTexObj(GXTexObj* obj, GXTexMapID id) { nofralloc #include "asm/dolphin/gx/GXTexture/GXLoadTexObj.s" } @@ -369,7 +356,7 @@ asm void GXLoadTexObj() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXInitTlutObj() { +asm void GXInitTlutObj(GXTlutObj* obj, void* lut, GXTlutFmt fmt, u16 entry_num) { nofralloc #include "asm/dolphin/gx/GXTexture/GXInitTlutObj.s" } @@ -379,7 +366,7 @@ asm void GXInitTlutObj() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXLoadTlut() { +asm void GXLoadTlut(GXTlutObj* obj, u32 tlut_name) { nofralloc #include "asm/dolphin/gx/GXTexture/GXLoadTlut.s" } @@ -389,7 +376,8 @@ asm void GXLoadTlut() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXInitTexCacheRegion() { +asm void GXInitTexCacheRegion(GXTexRegion* region, GXBool is_32b_mipmap, u32 tmem_even, + GXTexCacheSize size_even, u32 tmem_odd, GXTexCacheSize size_odd) { nofralloc #include "asm/dolphin/gx/GXTexture/GXInitTexCacheRegion.s" } @@ -399,7 +387,7 @@ asm void GXInitTexCacheRegion() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXInitTlutRegion() { +asm void GXInitTlutRegion(GXTlutRegion* region, u32 tmem_addr, GXTlutSize tlut_size) { nofralloc #include "asm/dolphin/gx/GXTexture/GXInitTlutRegion.s" } @@ -409,7 +397,7 @@ asm void GXInitTlutRegion() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXInvalidateTexAll() { +asm void GXInvalidateTexAll(void) { nofralloc #include "asm/dolphin/gx/GXTexture/GXInvalidateTexAll.s" } @@ -419,7 +407,7 @@ asm void GXInvalidateTexAll() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetTexRegionCallback() { +asm GXTexRegionCallback GXSetTexRegionCallback(GXTexRegionCallback callback) { nofralloc #include "asm/dolphin/gx/GXTexture/GXSetTexRegionCallback.s" } @@ -429,7 +417,7 @@ asm void GXSetTexRegionCallback() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetTlutRegionCallback() { +asm GXTlutRegionCallback GXSetTlutRegionCallback(GXTlutRegionCallback callback) { nofralloc #include "asm/dolphin/gx/GXTexture/GXSetTlutRegionCallback.s" } @@ -439,7 +427,7 @@ asm void GXSetTlutRegionCallback() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetTexCoordScaleManually() { +asm void GXSetTexCoordScaleManually(GXTexCoordID coord, GXBool enable, u16 s_scale, u16 t_scale) { nofralloc #include "asm/dolphin/gx/GXTexture/GXSetTexCoordScaleManually.s" } diff --git a/libs/dolphin/gx/GXTransform.cpp b/libs/dolphin/gx/GXTransform.c similarity index 78% rename from libs/dolphin/gx/GXTransform.cpp rename to libs/dolphin/gx/GXTransform.c index df252e6c19..c4c36e207b 100644 --- a/libs/dolphin/gx/GXTransform.cpp +++ b/libs/dolphin/gx/GXTransform.c @@ -11,28 +11,26 @@ // Forward References: // -extern "C" void GXProject(); -extern "C" void GXSetProjection(); -extern "C" void GXSetProjectionv(); -extern "C" void GXGetProjectionv(); -extern "C" void GXLoadPosMtxImm(); -extern "C" void GXLoadNrmMtxImm(); -extern "C" void GXSetCurrentMtx(); -extern "C" void GXLoadTexMtxImm(); -extern "C" void __GXSetViewport(); -extern "C" void GXSetViewport(); -extern "C" void GXGetViewportv(); -extern "C" void GXSetScissor(); -extern "C" void GXGetScissor(); -extern "C" void GXSetScissorBoxOffset(); -extern "C" void GXSetClipMode(); -extern "C" void __GXSetMatrixIndex(); +void GXSetProjection(); +void GXSetProjectionv(); +void GXGetProjectionv(); +void GXLoadPosMtxImm(); +void GXLoadNrmMtxImm(); +void GXSetCurrentMtx(); +void GXLoadTexMtxImm(); +void __GXSetViewport(); +void GXGetViewportv(); +void GXSetScissor(); +void GXGetScissor(); +void GXSetScissorBoxOffset(); +void GXSetClipMode(); +void __GXSetMatrixIndex(); // // External References: // -extern "C" extern void* __GXData; +extern void* __GXData; // // Declarations: @@ -57,7 +55,8 @@ SECTION_SDATA2 static f32 lit_28 = 0.5f; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXProject() { +asm void GXProject(f32 model_x, f32 model_y, f32 model_z, Mtx model_mtx, f32* proj_mtx, + f32* viewpoint, f32* screen_x, f32* screen_y, f32* screen_z) { nofralloc #include "asm/dolphin/gx/GXTransform/GXProject.s" } @@ -67,7 +66,7 @@ asm void GXProject() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetProjection() { +asm void GXSetProjection(Mtx44 mtx, GXProjectionType type) { nofralloc #include "asm/dolphin/gx/GXTransform/GXSetProjection.s" } @@ -77,7 +76,7 @@ asm void GXSetProjection() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetProjectionv() { +asm void GXSetProjectionv(f32* p) { nofralloc #include "asm/dolphin/gx/GXTransform/GXSetProjectionv.s" } @@ -87,7 +86,7 @@ asm void GXSetProjectionv() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXGetProjectionv() { +asm void GXGetProjectionv(f32* p) { nofralloc #include "asm/dolphin/gx/GXTransform/GXGetProjectionv.s" } @@ -97,7 +96,7 @@ asm void GXGetProjectionv() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXLoadPosMtxImm() { +asm void GXLoadPosMtxImm(Mtx mtx, u32 id) { nofralloc #include "asm/dolphin/gx/GXTransform/GXLoadPosMtxImm.s" } @@ -107,7 +106,7 @@ asm void GXLoadPosMtxImm() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXLoadNrmMtxImm() { +asm void GXLoadNrmMtxImm(Mtx mtx, u32 id) { nofralloc #include "asm/dolphin/gx/GXTransform/GXLoadNrmMtxImm.s" } @@ -117,7 +116,7 @@ asm void GXLoadNrmMtxImm() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetCurrentMtx() { +asm void GXSetCurrentMtx(u32 id) { nofralloc #include "asm/dolphin/gx/GXTransform/GXSetCurrentMtx.s" } @@ -127,7 +126,7 @@ asm void GXSetCurrentMtx() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXLoadTexMtxImm() { +asm void GXLoadTexMtxImm(Mtx mtx, u32 id, GXTexMtxType type) { nofralloc #include "asm/dolphin/gx/GXTransform/GXLoadTexMtxImm.s" } @@ -141,7 +140,7 @@ SECTION_SDATA2 static f32 lit_201 = 342.0f; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __GXSetViewport() { +asm void __GXSetViewport(void) { nofralloc #include "asm/dolphin/gx/GXTransform/__GXSetViewport.s" } @@ -151,7 +150,7 @@ asm void __GXSetViewport() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetViewport() { +asm void GXSetViewport(f32 x_orig, f32 y_orig, f32 width, f32 height, f32 near_z, f32 far_z) { nofralloc #include "asm/dolphin/gx/GXTransform/GXSetViewport.s" } @@ -161,7 +160,7 @@ asm void GXSetViewport() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXGetViewportv() { +asm void GXGetViewportv(f32* p) { nofralloc #include "asm/dolphin/gx/GXTransform/GXGetViewportv.s" } @@ -171,7 +170,7 @@ asm void GXGetViewportv() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetScissor() { +asm void GXSetScissor(u32 left, u32 top, u32 width, u32 height) { nofralloc #include "asm/dolphin/gx/GXTransform/GXSetScissor.s" } @@ -181,7 +180,7 @@ asm void GXSetScissor() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXGetScissor() { +asm void GXGetScissor(u32* left, u32* top, u32* width, u32* height) { nofralloc #include "asm/dolphin/gx/GXTransform/GXGetScissor.s" } @@ -191,7 +190,7 @@ asm void GXGetScissor() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetScissorBoxOffset() { +asm void GXSetScissorBoxOffset(u32 x_offset, u32 y_offset) { nofralloc #include "asm/dolphin/gx/GXTransform/GXSetScissorBoxOffset.s" } @@ -201,7 +200,7 @@ asm void GXSetScissorBoxOffset() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void GXSetClipMode() { +asm void GXSetClipMode(GXClipMode mode) { nofralloc #include "asm/dolphin/gx/GXTransform/GXSetClipMode.s" } @@ -211,7 +210,7 @@ asm void GXSetClipMode() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __GXSetMatrixIndex() { +asm void __GXSetMatrixIndex(u32 id) { nofralloc #include "asm/dolphin/gx/GXTransform/__GXSetMatrixIndex.s" } diff --git a/libs/dolphin/gx/Makefile b/libs/dolphin/gx/Makefile index 0b972d775e..0f00f994e3 100644 --- a/libs/dolphin/gx/Makefile +++ b/libs/dolphin/gx/Makefile @@ -3,20 +3,20 @@ # LIBGX_A_CPP_FILES := \ - libs/dolphin/gx/GXInit.cpp \ - libs/dolphin/gx/GXFifo.cpp \ - libs/dolphin/gx/GXAttr.cpp \ - libs/dolphin/gx/GXMisc.cpp \ - libs/dolphin/gx/GXGeometry.cpp \ - libs/dolphin/gx/GXFrameBuf.cpp \ - libs/dolphin/gx/GXLight.cpp \ - libs/dolphin/gx/GXTexture.cpp \ - libs/dolphin/gx/GXBump.cpp \ - libs/dolphin/gx/GXTev.cpp \ - libs/dolphin/gx/GXPixel.cpp \ - libs/dolphin/gx/GXDisplayList.cpp \ - libs/dolphin/gx/GXTransform.cpp \ - libs/dolphin/gx/GXPerf.cpp \ + libs/dolphin/gx/GXInit.c \ + libs/dolphin/gx/GXFifo.c \ + libs/dolphin/gx/GXAttr.c \ + libs/dolphin/gx/GXMisc.c \ + libs/dolphin/gx/GXGeometry.c \ + libs/dolphin/gx/GXFrameBuf.c \ + libs/dolphin/gx/GXLight.c \ + libs/dolphin/gx/GXTexture.c \ + libs/dolphin/gx/GXBump.c \ + libs/dolphin/gx/GXTev.c \ + libs/dolphin/gx/GXPixel.c \ + libs/dolphin/gx/GXDisplayList.c \ + libs/dolphin/gx/GXTransform.c \ + libs/dolphin/gx/GXPerf.c \ LIBGX_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/gx/GXInit.o \ @@ -36,6 +36,7 @@ LIBGX_A_O_FILES := \ LIBGX_A_CFLAGS := \ -O4,p \ + -lang=c \ LIBGX_A_LDFLAGS := \ -nodefaults \ @@ -48,9 +49,9 @@ $(BUILD_DIR)/libgx.a: $(LIBGX_A_O_FILES) @echo $(LIBGX_A_O_FILES) > build/LIBGX_A_ofiles @$(LD) -xm l $(LIBGX_A_LDFLAGS) -o $(BUILD_DIR)/libgx.a @build/LIBGX_A_ofiles -$(BUILD_DIR)/libs/dolphin/gx/%.o: libs/dolphin/gx/%.cpp +$(BUILD_DIR)/libs/dolphin/gx/%.o: libs/dolphin/gx/%.c @mkdir -p $(@D) @echo building... $< - @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp - @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBGX_A_CFLAGS) -c -o $@ $(basename $@).cpp + @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBGX_A_CFLAGS) -c -o $@ $(basename $@).c diff --git a/libs/dolphin/mtx/Makefile b/libs/dolphin/mtx/Makefile index 0f488dad09..65c6ad64d1 100644 --- a/libs/dolphin/mtx/Makefile +++ b/libs/dolphin/mtx/Makefile @@ -3,11 +3,11 @@ # LIBMTX_A_CPP_FILES := \ - libs/dolphin/mtx/mtx.cpp \ - libs/dolphin/mtx/mtxvec.cpp \ - libs/dolphin/mtx/mtx44.cpp \ - libs/dolphin/mtx/vec.cpp \ - libs/dolphin/mtx/quat.cpp \ + libs/dolphin/mtx/mtx.c \ + libs/dolphin/mtx/mtxvec.c \ + libs/dolphin/mtx/mtx44.c \ + libs/dolphin/mtx/vec.c \ + libs/dolphin/mtx/quat.c \ LIBMTX_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/mtx/mtx.o \ @@ -17,6 +17,8 @@ LIBMTX_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/mtx/quat.o \ LIBMTX_A_CFLAGS := \ + -O4,p \ + -lang=c \ LIBMTX_A_LDFLAGS := \ -nodefaults \ @@ -29,9 +31,9 @@ $(BUILD_DIR)/libmtx.a: $(LIBMTX_A_O_FILES) @echo $(LIBMTX_A_O_FILES) > build/LIBMTX_A_ofiles @$(LD) -xm l $(LIBMTX_A_LDFLAGS) -o $(BUILD_DIR)/libmtx.a @build/LIBMTX_A_ofiles -$(BUILD_DIR)/libs/dolphin/mtx/%.o: libs/dolphin/mtx/%.cpp +$(BUILD_DIR)/libs/dolphin/mtx/%.o: libs/dolphin/mtx/%.c @mkdir -p $(@D) @echo building... $< - @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp - @$(CC) $(CFLAGS) $(LIBMTX_A_CFLAGS) -c -o $@ $(basename $@).cpp + @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBMTX_A_CFLAGS) -c -o $@ $(basename $@).c diff --git a/libs/dolphin/mtx/mtx.c b/libs/dolphin/mtx/mtx.c new file mode 100644 index 0000000000..5b44c151bf --- /dev/null +++ b/libs/dolphin/mtx/mtx.c @@ -0,0 +1,533 @@ +// +// Generated By: dol2asm +// Translation Unit: mtx +// + +#include "dolphin/mtx/mtx.h" +#include "MSL_C/math.h" +#include "dol2asm.h" +#include "dolphin/mtx/mtxvec.h" + +// +// Declarations: +// + +/* ############################################################################################## */ +/* 80456508-8045650C 004B08 0004+00 6/6 0/0 0/0 .sdata2 @96 */ +SECTION_SDATA2 static f32 lit_96 = 1.0f; + +/* 8045650C-80456510 004B0C 0004+00 6/6 0/0 0/0 .sdata2 @97 */ +SECTION_SDATA2 static u8 lit_97[4] = { + 0x00, + 0x00, + 0x00, + 0x00, +}; + +/* 80346484-803464B0 340DC4 002C+00 0/0 27/27 13/13 .text PSMTXIdentity */ +asm void PSMTXIdentity(register Mtx m) { + // clang-format off + nofralloc + + lfs f0, lit_97(r2) + lfs f1, lit_96(r2) + psq_st f0, 8(m), 0, 0 + ps_merge01 f2, f0, f1 + psq_st f0, 24(m), 0, 0 + ps_merge10 f1, f1, f0 + psq_st f0, 32(m), 0, 0 + psq_st f2, 16(m), 0, 0 + psq_st f1, 0(m), 0, 0 + psq_st f1, 40(m), 0, 0 + blr + // clang-format on +} + +/* 803464B0-803464E4 340DF0 0034+00 0/0 119/119 1436/1436 .text PSMTXCopy */ +asm void PSMTXCopy(register const Mtx src, register Mtx dst) { + // clang-format off + nofralloc + + psq_l f0, 0(src), 0, 0 + psq_st f0, 0(dst), 0, 0 + psq_l f1, 8(src), 0, 0 + psq_st f1, 8(dst), 0, 0 + psq_l f2, 16(src), 0, 0 + psq_st f2, 16(dst), 0, 0 + psq_l f3, 24(src), 0, 0 + psq_st f3, 24(dst), 0, 0 + psq_l f4, 32(src), 0, 0 + psq_st f4, 32(dst), 0, 0 + psq_l f5, 40(src), 0, 0 + psq_st f5, 40(dst), 0, 0 + blr + // clang-format on +} + +/* ############################################################################################## */ +/* 804509D0-804509D8 000450 0008+00 1/1 0/0 0/0 .sdata Unit01 */ +static f32 Unit01[2] = { + 0.0f, 1.0f, +}; + +/* 803464E4-803465B0 340E24 00CC+00 0/0 109/109 30/30 .text PSMTXConcat */ +asm void PSMTXConcat(register const Mtx a, register const Mtx b, register Mtx ab) { + // clang-format off + nofralloc + + stwu r1, -0x40(r1) + psq_l f0, 0(a), 0, 0 + stfd f14, 8(r1) + psq_l f6, 0(b), 0, 0 + lis r6, Unit01@ha + psq_l f7, 8(b), 0, 0 + stfd f15, 0x10(r1) + addi r6, r6, Unit01@l + stfd f31, 0x28(r1) + psq_l f8, 16(b), 0, 0 + ps_muls0 f12, f6, f0 + psq_l f2, 16(a), 0, 0 + ps_muls0 f13, f7, f0 + psq_l f31, 0(r6), 0, 0 + ps_muls0 f14, f6, f2 + psq_l f9, 24(b), 0, 0 + ps_muls0 f15, f7, f2 + psq_l f1, 8(a), 0, 0 + ps_madds1 f12, f8, f0, f12 + psq_l f3, 24(a), 0, 0 + ps_madds1 f14, f8, f2, f14 + psq_l f10, 32(b), 0, 0 + ps_madds1 f13, f9, f0, f13 + psq_l f11, 40(b), 0, 0 + ps_madds1 f15, f9, f2, f15 + psq_l f4, 32(a), 0, 0 + psq_l f5, 40(a), 0, 0 + ps_madds0 f12, f10, f1, f12 + ps_madds0 f13, f11, f1, f13 + ps_madds0 f14, f10, f3, f14 + ps_madds0 f15, f11, f3, f15 + psq_st f12, 0(ab), 0, 0 + ps_muls0 f2, f6, f4 + ps_madds1 f13, f31, f1, f13 + ps_muls0 f0, f7, f4 + psq_st f14, 16(ab), 0, 0 + ps_madds1 f15, f31, f3, f15 + psq_st f13, 8(ab), 0, 0 + ps_madds1 f2, f8, f4, f2 + ps_madds1 f0, f9, f4, f0 + ps_madds0 f2, f10, f5, f2 + lfd f14, 8(r1) + psq_st f15, 24(ab), 0, 0 + ps_madds0 f0, f11, f5, f0 + psq_st f2, 32(ab), 0, 0 + ps_madds1 f0, f31, f5, f0 + lfd f15, 0x10(r1) + psq_st f0, 40(ab), 0, 0 + lfd f31, 0x28(r1) + addi r1, r1, 0x40 + blr + // clang-format on +} + +/* 803465B0-803466A8 340EF0 00F8+00 0/0 43/43 39/39 .text PSMTXInverse */ +asm u32 PSMTXInverse(register const Mtx src, register Mtx inv) { + // clang-format off + nofralloc + + psq_l f0, 0(src), 1, 0 + psq_l f1, 4(src), 0, 0 + psq_l f2, 16(src), 1, 0 + ps_merge10 f6, f1, f0 + psq_l f3, 20(src), 0, 0 + psq_l f4, 32(src), 1, 0 + ps_merge10 f7, f3, f2 + psq_l f5, 36(src), 0, 0 + ps_mul f11, f3, f6 + ps_mul f13, f5, f7 + ps_merge10 f8, f5, f4 + ps_msub f11, f1, f7, f11 + ps_mul f12, f1, f8 + ps_msub f13, f3, f8, f13 + ps_mul f10, f3, f4 + ps_msub f12, f5, f6, f12 + ps_mul f9, f0, f5 + ps_mul f8, f1, f2 + ps_sub f6, f6, f6 + ps_msub f10, f2, f5, f10 + ps_mul f7, f0, f13 + ps_msub f9, f1, f4, f9 + ps_madd f7, f2, f12, f7 + ps_msub f8, f0, f3, f8 + ps_madd f7, f4, f11, f7 + ps_cmpo0 cr0, f7, f6 + bne lbl_80346624 + + li r3, 0 + blr + +lbl_80346624: + fres f0, f7 + ps_add f6, f0, f0 + ps_mul f5, f0, f0 + ps_nmsub f0, f7, f5, f6 + lfs f1, 0xc(src) + ps_muls0 f13, f13, f0 + lfs f2, 0x1c(src) + ps_muls0 f12, f12, f0 + lfs f3, 0x2c(src) + ps_muls0 f11, f11, f0 + ps_merge00 f5, f13, f12 + ps_muls0 f10, f10, f0 + ps_merge11 f4, f13, f12 + ps_muls0 f9, f9, f0 + psq_st f5, 0(inv), 0, 0 + ps_mul f6, f13, f1 + psq_st f4, 16(inv), 0, 0 + ps_muls0 f8, f8, f0 + ps_madd f6, f12, f2, f6 + psq_st f10, 32(inv), 1, 0 + ps_nmadd f6, f11, f3, f6 + psq_st f9, 36(inv), 1, 0 + ps_mul f7, f10, f1 + ps_merge00 f5, f11, f6 + psq_st f8, 40(inv), 1, 0 + ps_merge11 f4, f11, f6 + psq_st f5, 8(inv), 0, 0 + ps_madd f7, f9, f2, f7 + psq_st f4, 24(inv), 0, 0 + ps_nmadd f7, f8, f3, f7 + li r3, 1 + psq_st f7, 44(inv), 1, 0 + blr + // clang-format on +} + +/* 803466A8-80346718 340FE8 0070+00 0/0 17/17 0/0 .text PSMTXRotRad */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void PSMTXRotRad(Mtx m, u8 axis, f32 rad) { + nofralloc +#include "asm/dolphin/mtx/mtx/PSMTXRotRad.s" +} +#pragma pop + +/* 80346718-803467C8 341058 00B0+00 1/1 0/0 0/0 .text PSMTXRotTrig */ +asm void PSMTXRotTrig(register Mtx m, u8 axis, f32 sin, f32 cos) { + // clang-format off + nofralloc + + frsp f5, f1 + frsp f4, f2 + lfs f0, lit_97(r2) + lfs f1, lit_96(r2) + ori r0, r4, 0x20 + ps_neg f2, f5 + cmplwi r0, 0x78 + beq lbl_8034674C + cmplwi r0, 0x79 + beq lbl_80346774 + cmplwi r0, 0x7a + beq lbl_803467A0 + b lbl_803467C4 + +lbl_8034674C: + psq_st f1, 0(m), 1, 0 + psq_st f0, 4(m), 0, 0 + ps_merge00 f3, f5, f4 + psq_st f0, 12(m), 0, 0 + ps_merge00 f1, f4, f2 + psq_st f0, 28(m), 0, 0 + psq_st f0, 44(m), 1, 0 + psq_st f3, 36(m), 0, 0 + psq_st f1, 20(m), 0, 0 + b lbl_803467C4 + +lbl_80346774: + ps_merge00 f3, f4, f0 + ps_merge00 f1, f0, f1 + psq_st f0, 24(m), 0, 0 + psq_st f3, 0(m), 0, 0 + ps_merge00 f2, f2, f0 + ps_merge00 f0, f5, f0 + psq_st f3, 40(m), 0, 0 + psq_st f1, 16(m), 0, 0 + psq_st f0, 8(m), 0, 0 + psq_st f2, 32(m), 0, 0 + b lbl_803467C4 + +lbl_803467A0: + psq_st f0, 8(m), 0, 0 + ps_merge00 f3, f5, f4 + ps_merge00 f2, f4, f2 + psq_st f0, 24(m), 0, 0 + psq_st f0, 32(m), 0, 0 + ps_merge00 f1, f1, f0 + psq_st f3, 16(m), 0, 0 + psq_st f2, 0(m), 0, 0 + psq_st f1, 40(m), 0, 0 + +lbl_803467C4: + blr + // clang-format on +} + +/* ############################################################################################## */ +/* 80456510-80456514 004B10 0004+00 2/2 0/0 0/0 .sdata2 @190 */ +SECTION_SDATA2 static f32 lit_190 = 0.5f; + +/* 80456514-80456518 004B14 0004+00 1/1 0/0 0/0 .sdata2 @191 */ +SECTION_SDATA2 static f32 lit_191 = 3.0f; + +/* 803467C8-80346878 341108 00B0+00 1/1 0/0 0/0 .text __PSMTXRotAxisRadInternal */ +asm f64 __PSMTXRotAxisRadInternal(f64 param_1, f64 param_2, int param_3, int param_4) { + // clang-format off + nofralloc + + lfs f10, lit_190(r2) + lfs f9, lit_191(r2) + frsp f11, f2 + psq_l f2, 0(r4), 0, 0 + frsp f12, f1 + lfs f3, 8(r4) + ps_mul f4, f2, f2 + fadds f8, f10, f10 + ps_madd f5, f3, f3, f4 + fsubs f1, f10, f10 + ps_sum0 f6, f5, f3, f4 + fsubs f0, f8, f11 + frsqrte f7, f6 + fmuls f4, f7, f7 + fmuls f5, f7, f10 + fnmsubs f4, f4, f6, f9 + fmuls f7, f4, f5 + ps_merge00 f11, f11, f11 + ps_muls0 f2, f2, f7 + ps_muls0 f3, f3, f7 + ps_muls0 f6, f2, f0 + ps_muls0 f10, f2, f12 + ps_muls0 f7, f3, f0 + ps_muls1 f5, f6, f2 + ps_muls0 f4, f6, f2 + ps_muls0 f6, f6, f3 + fnmsubs f0, f3, f12, f5 + fmadds f8, f3, f12, f5 + ps_neg f2, f10 + ps_sum0 f9, f6, f1, f10 + ps_sum0 f4, f4, f0, f11 + ps_sum1 f5, f11, f8, f5 + ps_sum0 f0, f2, f1, f6 + psq_st f9, 8(r3), 0, 0 + ps_sum0 f2, f6, f6, f2 + psq_st f4, 0(r3), 0, 0 + ps_muls0 f7, f7, f3 + psq_st f5, 16(r3), 0, 0 + ps_sum1 f6, f10, f2, f6 + psq_st f0, 24(r3), 0, 0 + ps_sum0 f7, f7, f1, f11 + psq_st f6, 32(r3), 0, 0 + psq_st f7, 40(r3), 0, 0 + blr + // clang-format on +} + +/* 80346878-803468E8 3411B8 0070+00 0/0 6/6 8/8 .text PSMTXRotAxisRad */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void PSMTXRotAxisRad(Mtx m, const Vec* axis, f32 rad) { + nofralloc +#include "asm/dolphin/mtx/mtx/PSMTXRotAxisRad.s" +} +#pragma pop + +/* 803468E8-8034691C 341228 0034+00 0/0 38/38 471/471 .text PSMTXTrans */ +asm void PSMTXTrans(register Mtx m, f32 x, f32 y, f32 z) { + // clang-format off + nofralloc + + lfs f0, lit_97(r2) + lfs f4, lit_96(r2) + stfs f1, 0xc(m) + stfs f2, 0x1c(m) + psq_st f0, 4(m), 0, 0 + psq_st f0, 32(m), 0, 0 + stfs f0, 0x10(m) + stfs f4, 0x14(m) + stfs f0, 0x18(m) + stfs f4, 0x28(m) + stfs f3, 0x2c(m) + stfs f4, 0(m) + blr + // clang-format on +} + +/* 8034691C-80346968 34125C 004C+00 0/0 3/3 0/0 .text PSMTXTransApply */ +asm void PSMTXTransApply(register const Mtx src, register Mtx dst, f32 x, f32 y, f32 z) { + // clang-format off + nofralloc + + psq_l f4, 0(src), 0, 0 + frsp f1, f1 + psq_l f5, 8(src), 0, 0 + frsp f2, f2 + psq_l f7, 24(src), 0, 0 + frsp f3, f3 + psq_l f8, 40(src), 0, 0 + psq_st f4, 0(dst), 0, 0 + ps_sum1 f5, f1, f5, f5 + psq_l f6, 16(src), 0, 0 + psq_st f5, 8(dst), 0, 0 + ps_sum1 f7, f2, f7, f7 + psq_l f9, 32(src), 0, 0 + psq_st f6, 16(dst), 0, 0 + ps_sum1 f8, f3, f8, f8 + psq_st f7, 24(dst), 0, 0 + psq_st f9, 32(dst), 0, 0 + psq_st f8, 40(dst), 0, 0 + blr + // clang-format on +} + +/* 80346968-80346990 3412A8 0028+00 0/0 14/14 8/8 .text PSMTXScale */ +asm void PSMTXScale(register Mtx m, f32 x, f32 y, f32 z) { + // clang-format off + nofralloc + + lfs f0, lit_97(r2) + stfs f1, 0(m) + psq_st f0, 4(m), 0, 0 + psq_st f0, 12(m), 0, 0 + stfs f2, 0x14(m) + psq_st f0, 24(m), 0, 0 + psq_st f0, 32(m), 0, 0 + stfs f3, 0x28(m) + stfs f0, 0x2c(m) + blr + // clang-format on +} + +/* 80346990-803469E8 3412D0 0058+00 0/0 1/1 0/0 .text PSMTXScaleApply */ +asm void PSMTXScaleApply(register const Mtx src, register Mtx dst, f32 x, f32 y, f32 z) { + // clang-format off + nofralloc + + frsp f1, f1 + psq_l f4, 0(src), 0, 0 + frsp f2, f2 + psq_l f5, 8(src), 0, 0 + frsp f3, f3 + ps_muls0 f4, f4, f1 + psq_l f6, 16(src), 0, 0 + ps_muls0 f5, f5, f1 + psq_l f7, 24(src), 0, 0 + ps_muls0 f6, f6, f2 + psq_l f8, 32(src), 0, 0 + psq_st f4, 0(dst), 0, 0 + ps_muls0 f7, f7, f2 + psq_l f2, 40(src), 0, 0 + psq_st f5, 8(dst), 0, 0 + ps_muls0 f8, f8, f3 + psq_st f6, 16(dst), 0, 0 + ps_muls0 f2, f2, f3 + psq_st f7, 24(dst), 0, 0 + psq_st f8, 32(dst), 0, 0 + psq_st f2, 40(dst), 0, 0 + blr + // clang-format on +} + +/* 803469E8-80346A8C 341328 00A4+00 0/0 8/8 2/2 .text PSMTXQuat */ +asm void PSMTXQuat(register Mtx m, register const Quaternion* q) { + // clang-format off + nofralloc + + lfs f1, lit_96(r2) + psq_l f4, 0(q), 0, 0 + psq_l f5, 8(q), 0, 0 + fsubs f0, f1, f1 + fadds f2, f1, f1 + ps_mul f6, f4, f4 + ps_merge10 f9, f4, f4 + ps_madd f8, f5, f5, f6 + ps_mul f7, f5, f5 + ps_sum0 f3, f8, f8, f8 + ps_muls1 f10, f9, f5 + fres f11, f3 + ps_sum1 f8, f7, f8, f6 + ps_nmsub f3, f3, f11, f2 + ps_muls1 f7, f5, f5 + ps_mul f3, f11, f3 + ps_sum0 f6, f6, f6, f6 + fmuls f3, f3, f2 + ps_madd f11, f4, f9, f7 + ps_msub f7, f4, f9, f7 + psq_st f0, 12(m), 1, 0 + ps_nmsub f6, f6, f3, f1 + ps_nmsub f8, f8, f3, f1 + psq_st f0, 44(m), 1, 0 + ps_mul f11, f11, f3 + ps_mul f7, f7, f3 + psq_st f6, 40(m), 1, 0 + ps_madds0 f9, f4, f5, f10 + ps_merge00 f5, f11, f8 + ps_nmsub f10, f10, f2, f9 + ps_merge10 f4, f8, f7 + psq_st f5, 16(m), 0, 0 + ps_mul f9, f9, f3 + ps_mul f10, f10, f3 + psq_st f4, 0(m), 0, 0 + psq_st f9, 8(m), 1, 0 + ps_merge10 f7, f10, f0 + ps_merge01 f11, f10, f9 + psq_st f7, 24(m), 0, 0 + psq_st f11, 32(m), 0, 0 + blr + // clang-format on +} + +/* 80346A8C-80346C18 3413CC 018C+00 0/0 2/2 0/0 .text C_MTXLookAt */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void C_MTXLookAt(Mtx m, const Vec* camPos, const Vec* camUp, const Vec* target) { + nofralloc +#include "asm/dolphin/mtx/mtx/C_MTXLookAt.s" +} +#pragma pop + +/* ############################################################################################## */ +/* 80456518-8045651C 004B18 0004+00 1/1 0/0 0/0 .sdata2 @206 */ +SECTION_SDATA2 static f32 lit_206 = 2.0f; + +/* 8045651C-80456520 004B1C 0004+00 1/1 0/0 0/0 .sdata2 @227 */ +SECTION_SDATA2 static f32 lit_227 = -1.0f; + +/* 80456520-80456528 004B20 0004+04 1/1 0/0 0/0 .sdata2 @230 */ +SECTION_SDATA2 static f32 lit_230[1 + 1 /* padding */] = { + 0.01745329238474369f, + /* padding */ + 0.0f, +}; + +/* 80346C18-80346CE4 341558 00CC+00 0/0 4/4 7/7 .text C_MTXLightPerspective */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void C_MTXLightPerspective(Mtx m, f32 fovY, f32 aspect, f32 scale_s, f32 scale_t, f32 trans_s, + f32 trans_t) { + nofralloc +#include "asm/dolphin/mtx/mtx/C_MTXLightPerspective.s" +} +#pragma pop + +/* 80346CE4-80346D6C 341624 0088+00 0/0 2/2 5/5 .text C_MTXLightOrtho */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void C_MTXLightOrtho(Mtx m, f32 top, f32 bottom, f32 left, f32 right, f32 scale_s, f32 scale_t, + f32 trans_s, f32 trans_t) { + nofralloc +#include "asm/dolphin/mtx/mtx/C_MTXLightOrtho.s" +} +#pragma pop diff --git a/libs/dolphin/mtx/mtx.cpp b/libs/dolphin/mtx/mtx.cpp deleted file mode 100644 index aabe3642ec..0000000000 --- a/libs/dolphin/mtx/mtx.cpp +++ /dev/null @@ -1,215 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: mtx -// - -#include "dolphin/mtx/mtx.h" -#include "MSL_C/math.h" -#include "dol2asm.h" -#include "dolphin/mtx/mtxvec.h" -#include "dolphin/types.h" - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80456508-8045650C 004B08 0004+00 6/6 0/0 0/0 .sdata2 @96 */ -SECTION_SDATA2 static f32 lit_96 = 1.0f; - -/* 8045650C-80456510 004B0C 0004+00 6/6 0/0 0/0 .sdata2 @97 */ -SECTION_SDATA2 static u8 lit_97[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 80346484-803464B0 340DC4 002C+00 0/0 27/27 13/13 .text PSMTXIdentity */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSMTXIdentity(Mtx matrix) { - nofralloc -#include "asm/dolphin/mtx/mtx/PSMTXIdentity.s" -} -#pragma pop - -/* 803464B0-803464E4 340DF0 0034+00 0/0 119/119 1436/1436 .text PSMTXCopy */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSMTXCopy(const Mtx src, Mtx dst) { - nofralloc -#include "asm/dolphin/mtx/mtx/PSMTXCopy.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 804509D0-804509D8 000450 0008+00 1/1 0/0 0/0 .sdata Unit01 */ -SECTION_SDATA static u8 Unit01[8] = { - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, -}; - -/* 803464E4-803465B0 340E24 00CC+00 0/0 109/109 30/30 .text PSMTXConcat */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSMTXConcat(const Mtx src_a, const Mtx src_b, Mtx dst) { - nofralloc -#include "asm/dolphin/mtx/mtx/PSMTXConcat.s" -} -#pragma pop - -/* 803465B0-803466A8 340EF0 00F8+00 0/0 43/43 39/39 .text PSMTXInverse */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 PSMTXInverse(const Mtx src, Mtx dst) { - nofralloc -#include "asm/dolphin/mtx/mtx/PSMTXInverse.s" -} -#pragma pop - -/* 803466A8-80346718 340FE8 0070+00 0/0 17/17 0/0 .text PSMTXRotRad */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSMTXRotRad(Mtx matrix, u8 axis, float rad) { - nofralloc -#include "asm/dolphin/mtx/mtx/PSMTXRotRad.s" -} -#pragma pop - -/* 80346718-803467C8 341058 00B0+00 1/1 0/0 0/0 .text PSMTXRotTrig */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSMTXRotTrig(Mtx matrix, u8 axis, float sin, float cos) { - nofralloc -#include "asm/dolphin/mtx/mtx/PSMTXRotTrig.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 80456510-80456514 004B10 0004+00 2/2 0/0 0/0 .sdata2 @190 */ -SECTION_SDATA2 static f32 lit_190 = 0.5f; - -/* 80456514-80456518 004B14 0004+00 1/1 0/0 0/0 .sdata2 @191 */ -SECTION_SDATA2 static f32 lit_191 = 3.0f; - -/* 803467C8-80346878 341108 00B0+00 1/1 0/0 0/0 .text __PSMTXRotAxisRadInternal */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm double __PSMTXRotAxisRadInternal(double param_1, double param_2, int param_3, int param_4) { - nofralloc -#include "asm/dolphin/mtx/mtx/__PSMTXRotAxisRadInternal.s" -} -#pragma pop - -/* 80346878-803468E8 3411B8 0070+00 0/0 6/6 8/8 .text PSMTXRotAxisRad */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSMTXRotAxisRad(Mtx matrix, const Vec* axis, float rad) { - nofralloc -#include "asm/dolphin/mtx/mtx/PSMTXRotAxisRad.s" -} -#pragma pop - -/* 803468E8-8034691C 341228 0034+00 0/0 38/38 471/471 .text PSMTXTrans */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSMTXTrans(Mtx matrix, float x_trans, float y_trans, float z_trans) { - nofralloc -#include "asm/dolphin/mtx/mtx/PSMTXTrans.s" -} -#pragma pop - -/* 8034691C-80346968 34125C 004C+00 0/0 3/3 0/0 .text PSMTXTransApply */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSMTXTransApply(const Mtx src, Mtx dst, float x, float y, float z) { - nofralloc -#include "asm/dolphin/mtx/mtx/PSMTXTransApply.s" -} -#pragma pop - -/* 80346968-80346990 3412A8 0028+00 0/0 14/14 8/8 .text PSMTXScale */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSMTXScale(Mtx matrix, float x_scale, float y_scale, float z_scale) { - nofralloc -#include "asm/dolphin/mtx/mtx/PSMTXScale.s" -} -#pragma pop - -/* 80346990-803469E8 3412D0 0058+00 0/0 1/1 0/0 .text PSMTXScaleApply */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSMTXScaleApply(const Mtx src, Mtx dst, float x_scale, float y_scale, float z_scale) { - nofralloc -#include "asm/dolphin/mtx/mtx/PSMTXScaleApply.s" -} -#pragma pop - -/* 803469E8-80346A8C 341328 00A4+00 0/0 8/8 2/2 .text PSMTXQuat */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSMTXQuat(Mtx matrix, const Quaternion* quat) { - nofralloc -#include "asm/dolphin/mtx/mtx/PSMTXQuat.s" -} -#pragma pop - -/* 80346A8C-80346C18 3413CC 018C+00 0/0 2/2 0/0 .text C_MTXLookAt */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void C_MTXLookAt(Mtx param_1, const Vec* param_2, const Vec* param_3, const Vec* param_4) { - nofralloc -#include "asm/dolphin/mtx/mtx/C_MTXLookAt.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 80456518-8045651C 004B18 0004+00 1/1 0/0 0/0 .sdata2 @206 */ -SECTION_SDATA2 static f32 lit_206 = 2.0f; - -/* 8045651C-80456520 004B1C 0004+00 1/1 0/0 0/0 .sdata2 @227 */ -SECTION_SDATA2 static f32 lit_227 = -1.0f; - -/* 80456520-80456528 004B20 0004+04 1/1 0/0 0/0 .sdata2 @230 */ -SECTION_SDATA2 static f32 lit_230[1 + 1 /* padding */] = { - 0.01745329238474369f, - /* padding */ - 0.0f, -}; - -/* 80346C18-80346CE4 341558 00CC+00 0/0 4/4 7/7 .text C_MTXLightPerspective */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void C_MTXLightPerspective(Mtx matrix, float fov_y, float aspect, float scale_s, float scale_t, - float trans_s, float trans_t) { - nofralloc -#include "asm/dolphin/mtx/mtx/C_MTXLightPerspective.s" -} -#pragma pop - -/* 80346CE4-80346D6C 341624 0088+00 0/0 2/2 5/5 .text C_MTXLightOrtho */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void C_MTXLightOrtho(Mtx matrix, float top, float bottom, float left, float right, - float scale_s, float scale_t, float trans_s, float trans_t) { - nofralloc -#include "asm/dolphin/mtx/mtx/C_MTXLightOrtho.s" -} -#pragma pop diff --git a/libs/dolphin/mtx/mtx44.cpp b/libs/dolphin/mtx/mtx44.c similarity index 85% rename from libs/dolphin/mtx/mtx44.cpp rename to libs/dolphin/mtx/mtx44.c index 3952c5507c..bf7efb33b5 100644 --- a/libs/dolphin/mtx/mtx44.cpp +++ b/libs/dolphin/mtx/mtx44.c @@ -6,7 +6,6 @@ #include "dolphin/mtx/mtx44.h" #include "MSL_C/math.h" #include "dol2asm.h" -#include "dolphin/types.h" // // Declarations: @@ -40,7 +39,7 @@ SECTION_SDATA2 static f32 lit_106 = 0.01745329238474369f; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void C_MTXPerspective(Mtx44 matrix, float fov_y, float aspect, float near, float far) { +asm void C_MTXPerspective(Mtx44 m, f32 fovy, f32 aspect, f32 near, f32 far) { nofralloc #include "asm/dolphin/mtx/mtx44/C_MTXPerspective.s" } @@ -50,8 +49,7 @@ asm void C_MTXPerspective(Mtx44 matrix, float fov_y, float aspect, float near, f #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void C_MTXOrtho(Mtx44 matrix, float top, float bottom, float left, float right, float near, - float far) { +asm void C_MTXOrtho(Mtx44 m, f32 top, f32 bottom, f32 left, f32 right, f32 near, f32 far) { nofralloc #include "asm/dolphin/mtx/mtx44/C_MTXOrtho.s" } diff --git a/libs/dolphin/mtx/mtxvec.c b/libs/dolphin/mtx/mtxvec.c new file mode 100644 index 0000000000..7e858b1493 --- /dev/null +++ b/libs/dolphin/mtx/mtxvec.c @@ -0,0 +1,157 @@ +/** + * mtxvec.c + * Description: + */ + +#include "dolphin/mtx/mtxvec.h" + +/* 80346D6C-80346DC0 3416AC 0054+00 0/0 158/158 826/826 .text PSMTXMultVec */ +asm void PSMTXMultVec(register const Mtx m, register const Vec* src, register Vec* dst) { + // clang-format off + nofralloc + + psq_l f0, 0(src), 0, 0 + psq_l f2, 0(m), 0, 0 + psq_l f1, 8(src), 1, 0 + ps_mul f4, f2, f0 + psq_l f3, 8(m), 0, 0 + ps_madd f5, f3, f1, f4 + psq_l f8, 16(m), 0, 0 + ps_sum0 f6, f5, f6, f5 + psq_l f9, 24(m), 0, 0 + ps_mul f10, f8, f0 + psq_st f6, 0(dst), 1, 0 + ps_madd f11, f9, f1, f10 + psq_l f2, 32(m), 0, 0 + ps_sum0 f12, f11, f12, f11 + psq_l f3, 40(m), 0, 0 + ps_mul f4, f2, f0 + psq_st f12, 4(dst), 1, 0 + ps_madd f5, f3, f1, f4 + ps_sum0 f6, f5, f6, f5 + psq_st f6, 8(dst), 1, 0 + blr + // clang-format on +} + +/* 80346DC0-80346E4C 341700 008C+00 0/0 2/2 3/3 .text PSMTXMultVecArray */ +asm void PSMTXMultVecArray(register const Mtx m, register const Vec* srcBase, register Vec* dstBase, + register u32 count) { + // clang-format off + nofralloc + + psq_l f13, 0(m), 0, 0 + psq_l f12, 16(m), 0, 0 + addi count, count, -1 + psq_l f11, 8(m), 0, 0 + ps_merge00 f0, f13, f12 + addi dstBase, dstBase, -4 + psq_l f10, 24(m), 0, 0 + ps_merge11 f1, f13, f12 + mtctr count + psq_l f4, 32(m), 0, 0 + ps_merge00 f2, f11, f10 + psq_l f5, 40(m), 0, 0 + ps_merge11 f3, f11, f10 + psq_l f6, 0(srcBase), 0, 0 + psq_lu f7, 8(srcBase), 1, 0 + ps_madds0 f8, f0, f6, f3 + ps_mul f9, f4, f6 + ps_madds1 f8, f1, f6, f8 + ps_madd f10, f5, f7, f9 + +lbl_80346E0C: + psq_lu f6, 4(srcBase), 0, 0 + ps_madds0 f12, f2, f7, f8 + psq_lu f7, 8(srcBase), 1, 0 + ps_sum0 f13, f10, f9, f10 + ps_madds0 f8, f0, f6, f3 + ps_mul f9, f4, f6 + psq_stu f12, 4(dstBase), 0, 0 + ps_madds1 f8, f1, f6, f8 + psq_stu f13, 8(dstBase), 1, 0 + ps_madd f10, f5, f7, f9 + bdnz lbl_80346E0C + + ps_madds0 f12, f2, f7, f8 + ps_sum0 f13, f10, f9, f10 + psq_stu f12, 4(dstBase), 0, 0 + psq_stu f13, 8(dstBase), 1, 0 + blr + // clang-format on +} + +/* 80346E4C-80346EA0 34178C 0054+00 0/0 47/47 9/9 .text PSMTXMultVecSR */ +asm void PSMTXMultVecSR(register const Mtx m, register const Vec* src, register Vec* dst) { + // clang-format off + nofralloc + + psq_l f0, 0(m), 0, 0 + psq_l f6, 0(src), 0, 0 + psq_l f2, 16(m), 0, 0 + ps_mul f8, f0, f6 + psq_l f4, 32(m), 0, 0 + ps_mul f10, f2, f6 + psq_l f7, 8(src), 1, 0 + ps_mul f12, f4, f6 + psq_l f3, 24(m), 0, 0 + ps_sum0 f8, f8, f8, f8 + psq_l f5, 40(m), 0, 0 + ps_sum0 f10, f10, f10, f10 + psq_l f1, 8(m), 0, 0 + ps_sum0 f12, f12, f12, f12 + ps_madd f9, f1, f7, f8 + psq_st f9, 0(dst), 1, 0 + ps_madd f11, f3, f7, f10 + psq_st f11, 4(dst), 1, 0 + ps_madd f13, f5, f7, f12 + psq_st f13, 8(dst), 1, 0 + blr + // clang-format on +} + +/* 80346EA0-80346F28 3417E0 0088+00 0/0 2/2 0/0 .text PSMTXMultVecArraySR */ +asm void PSMTXMultVecArraySR(register const Mtx m, register const Vec* srcBase, + register Vec* dstBase, register u32 count) { + // clang-format off + nofralloc + + psq_l f13, 0(m), 0, 0 + psq_l f12, 16(m), 0, 0 + addi count, count, -1 + psq_l f11, 8(m), 1, 0 + ps_merge00 f0, f13, f12 + addi dstBase, dstBase, -4 + psq_l f10, 24(m), 1, 0 + ps_merge11 f1, f13, f12 + mtctr count + psq_l f3, 32(m), 0, 0 + ps_merge00 f2, f11, f10 + psq_l f4, 40(m), 1, 0 + psq_l f6, 0(srcBase), 0, 0 + psq_lu f7, 8(srcBase), 1, 0 + ps_muls0 f8, f0, f6 + ps_mul f9, f3, f6 + ps_madds1 f8, f1, f6, f8 + ps_madd f10, f4, f7, f9 + +lbl_80346EE8: + psq_lu f6, 4(srcBase), 0, 0 + ps_madds0 f12, f2, f7, f8 + psq_lu f7, 8(srcBase), 1, 0 + ps_sum0 f13, f10, f9, f9 + ps_muls0 f8, f0, f6 + ps_mul f9, f3, f6 + psq_stu f12, 4(dstBase), 0, 0 + ps_madds1 f8, f1, f6, f8 + psq_stu f13, 8(dstBase), 1, 0 + ps_madd f10, f4, f7, f9 + bdnz lbl_80346EE8 + + ps_madds0 f12, f2, f7, f8 + ps_sum0 f13, f10, f9, f9 + psq_stu f12, 4(dstBase), 0, 0 + psq_stu f13, 8(dstBase), 1, 0 + blr + // clang-format on +} diff --git a/libs/dolphin/mtx/mtxvec.cpp b/libs/dolphin/mtx/mtxvec.cpp deleted file mode 100644 index b23654fa58..0000000000 --- a/libs/dolphin/mtx/mtxvec.cpp +++ /dev/null @@ -1,52 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: mtxvec -// - -#include "dolphin/mtx/mtxvec.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Declarations: -// - -/* 80346D6C-80346DC0 3416AC 0054+00 0/0 158/158 826/826 .text PSMTXMultVec */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSMTXMultVec(const Mtx matrix, const Vec* src, Vec* dst) { - nofralloc -#include "asm/dolphin/mtx/mtxvec/PSMTXMultVec.s" -} -#pragma pop - -/* 80346DC0-80346E4C 341700 008C+00 0/0 2/2 3/3 .text PSMTXMultVecArray */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSMTXMultVecArray(const Mtx matrix, const Vec* src, Vec* dst, u32 count) { - nofralloc -#include "asm/dolphin/mtx/mtxvec/PSMTXMultVecArray.s" -} -#pragma pop - -/* 80346E4C-80346EA0 34178C 0054+00 0/0 47/47 9/9 .text PSMTXMultVecSR */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSMTXMultVecSR(const Mtx matrix, const Vec* src, Vec* dst) { - nofralloc -#include "asm/dolphin/mtx/mtxvec/PSMTXMultVecSR.s" -} -#pragma pop - -/* 80346EA0-80346F28 3417E0 0088+00 0/0 2/2 0/0 .text PSMTXMultVecArraySR */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void PSMTXMultVecArraySR(const Mtx matrix, const Vec* src, Vec* dst, u32 count) { - nofralloc -#include "asm/dolphin/mtx/mtxvec/PSMTXMultVecArraySR.s" -} -#pragma pop diff --git a/libs/dolphin/mtx/quat.cpp b/libs/dolphin/mtx/quat.c similarity index 88% rename from libs/dolphin/mtx/quat.cpp rename to libs/dolphin/mtx/quat.c index 42764c6a01..484aa625f2 100644 --- a/libs/dolphin/mtx/quat.cpp +++ b/libs/dolphin/mtx/quat.c @@ -6,7 +6,6 @@ #include "dolphin/mtx/quat.h" #include "MSL_C/math.h" #include "dol2asm.h" -#include "dolphin/types.h" // // Declarations: @@ -16,7 +15,7 @@ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void PSQUATMultiply(const Quaternion* src_a, const Quaternion* src_b, Quaternion* dst) { +asm void PSQUATMultiply(const Quaternion* a, const Quaternion* b, Quaternion* ab) { nofralloc #include "asm/dolphin/mtx/quat/PSQUATMultiply.s" } @@ -41,7 +40,7 @@ SECTION_SDATA2 static f32 lit_135 = 0.5f; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void C_QUATRotAxisRad(Quaternion* quat, const Vec* axis, float rad) { +asm void C_QUATRotAxisRad(Quaternion* q, const Vec* axis, f32 rad) { nofralloc #include "asm/dolphin/mtx/quat/C_QUATRotAxisRad.s" } @@ -55,7 +54,7 @@ SECTION_SDATA2 static f32 lit_261 = 0.9999899864196777f; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void C_QUATSlerp(const Quaternion* p, const Quaternion* q, Quaternion* r, float t) { +asm void C_QUATSlerp(const Quaternion* p, const Quaternion* q, Quaternion* r, f32 t) { nofralloc #include "asm/dolphin/mtx/quat/C_QUATSlerp.s" } diff --git a/libs/dolphin/mtx/vec.cpp b/libs/dolphin/mtx/vec.c similarity index 83% rename from libs/dolphin/mtx/vec.cpp rename to libs/dolphin/mtx/vec.c index 603490abce..256d8b52cd 100644 --- a/libs/dolphin/mtx/vec.cpp +++ b/libs/dolphin/mtx/vec.c @@ -15,7 +15,7 @@ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void PSVECAdd(const Vec* src_a, const Vec* src_b, Vec* dst) { +asm void PSVECAdd(const Vec* a, const Vec* b, Vec* ab) { nofralloc #include "asm/dolphin/mtx/vec/PSVECAdd.s" } @@ -25,7 +25,7 @@ asm void PSVECAdd(const Vec* src_a, const Vec* src_b, Vec* dst) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void PSVECSubtract(const Vec* a, const Vec* b, Vec* dst) { +asm void PSVECSubtract(const Vec* a, const Vec* b, Vec* a_b) { nofralloc #include "asm/dolphin/mtx/vec/PSVECSubtract.s" } @@ -35,7 +35,7 @@ asm void PSVECSubtract(const Vec* a, const Vec* b, Vec* dst) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void PSVECScale(const Vec* src, Vec* dst, float scale) { +asm void PSVECScale(const Vec* src, Vec* dst, f32 scale) { nofralloc #include "asm/dolphin/mtx/vec/PSVECScale.s" } @@ -60,7 +60,7 @@ SECTION_SDATA2 static f32 lit_119 = 3.0f; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void PSVECNormalize(const Vec* src, Vec* dst) { +asm void PSVECNormalize(const Vec* src, Vec* unit) { nofralloc #include "asm/dolphin/mtx/vec/PSVECNormalize.s" } @@ -70,7 +70,7 @@ asm void PSVECNormalize(const Vec* src, Vec* dst) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm float PSVECSquareMag(const Vec* vec) { +asm f32 PSVECSquareMag(const Vec* v) { nofralloc #include "asm/dolphin/mtx/vec/PSVECSquareMag.s" } @@ -80,7 +80,7 @@ asm float PSVECSquareMag(const Vec* vec) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm float PSVECMag(const Vec* data) { +asm f32 PSVECMag(const Vec* v) { nofralloc #include "asm/dolphin/mtx/vec/PSVECMag.s" } @@ -90,7 +90,7 @@ asm float PSVECMag(const Vec* data) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm float PSVECDotProduct(const Vec* a, const Vec* b) { +asm f32 PSVECDotProduct(const Vec* a, const Vec* b) { nofralloc #include "asm/dolphin/mtx/vec/PSVECDotProduct.s" } @@ -100,7 +100,7 @@ asm float PSVECDotProduct(const Vec* a, const Vec* b) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void PSVECCrossProduct(const Vec* src_a, const Vec* src_b, Vec* dst) { +asm void PSVECCrossProduct(const Vec* a, const Vec* b, Vec* axb) { nofralloc #include "asm/dolphin/mtx/vec/PSVECCrossProduct.s" } @@ -110,7 +110,7 @@ asm void PSVECCrossProduct(const Vec* src_a, const Vec* src_b, Vec* dst) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void C_VECHalfAngle(const Vec* incident, const Vec* line_of_sight, Vec* out_half) { +asm void C_VECHalfAngle(const Vec* a, const Vec* b, Vec* half) { nofralloc #include "asm/dolphin/mtx/vec/C_VECHalfAngle.s" } @@ -124,7 +124,7 @@ SECTION_SDATA2 static f32 lit_161 = 2.0f; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void C_VECReflect(const Vec* src, const Vec* surface_normal, Vec* dst) { +asm void C_VECReflect(const Vec* src, const Vec* normal, Vec* dst) { nofralloc #include "asm/dolphin/mtx/vec/C_VECReflect.s" } @@ -134,7 +134,7 @@ asm void C_VECReflect(const Vec* src, const Vec* surface_normal, Vec* dst) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm float PSVECSquareDistance(const Vec* a, const Vec* b) { +asm f32 PSVECSquareDistance(const Vec* a, const Vec* b) { nofralloc #include "asm/dolphin/mtx/vec/PSVECSquareDistance.s" } @@ -144,7 +144,7 @@ asm float PSVECSquareDistance(const Vec* a, const Vec* b) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm float PSVECDistance(const Vec* a, const Vec* b) { +asm f32 PSVECDistance(const Vec* a, const Vec* b) { nofralloc #include "asm/dolphin/mtx/vec/PSVECDistance.s" } diff --git a/libs/dolphin/os/Makefile b/libs/dolphin/os/Makefile index 0899b99d02..916f20e5ba 100644 --- a/libs/dolphin/os/Makefile +++ b/libs/dolphin/os/Makefile @@ -3,29 +3,29 @@ # LIBOS_A_CPP_FILES := \ - libs/dolphin/os/OS.cpp \ - libs/dolphin/os/OSAlarm.cpp \ - libs/dolphin/os/OSAlloc.cpp \ - libs/dolphin/os/OSArena.cpp \ - libs/dolphin/os/OSAudioSystem.cpp \ - libs/dolphin/os/OSCache.cpp \ - libs/dolphin/os/OSContext.cpp \ - libs/dolphin/os/OSError.cpp \ - libs/dolphin/os/OSExec.cpp \ - libs/dolphin/os/OSFont.cpp \ - libs/dolphin/os/OSInterrupt.cpp \ - libs/dolphin/os/OSLink.cpp \ - libs/dolphin/os/OSMessage.cpp \ - libs/dolphin/os/OSMemory.cpp \ - libs/dolphin/os/OSMutex.cpp \ - libs/dolphin/os/OSReboot.cpp \ - libs/dolphin/os/OSReset.cpp \ - libs/dolphin/os/OSResetSW.cpp \ - libs/dolphin/os/OSRtc.cpp \ - libs/dolphin/os/OSSync.cpp \ - libs/dolphin/os/OSThread.cpp \ - libs/dolphin/os/OSTime.cpp \ - libs/dolphin/os/__ppc_eabi_init.cpp \ + libs/dolphin/os/OS.c \ + libs/dolphin/os/OSAlarm.c \ + libs/dolphin/os/OSAlloc.c \ + libs/dolphin/os/OSArena.c \ + libs/dolphin/os/OSAudioSystem.c \ + libs/dolphin/os/OSCache.c \ + libs/dolphin/os/OSContext.c \ + libs/dolphin/os/OSError.c \ + libs/dolphin/os/OSExec.c \ + libs/dolphin/os/OSFont.c \ + libs/dolphin/os/OSInterrupt.c \ + libs/dolphin/os/OSLink.c \ + libs/dolphin/os/OSMessage.c \ + libs/dolphin/os/OSMemory.c \ + libs/dolphin/os/OSMutex.c \ + libs/dolphin/os/OSReboot.c \ + libs/dolphin/os/OSReset.c \ + libs/dolphin/os/OSResetSW.c \ + libs/dolphin/os/OSRtc.c \ + libs/dolphin/os/OSSync.c \ + libs/dolphin/os/OSThread.c \ + libs/dolphin/os/OSTime.c \ + libs/dolphin/os/__ppc_eabi_init.c \ LIBOS_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/os/OS.o \ @@ -54,6 +54,7 @@ LIBOS_A_O_FILES := \ LIBOS_A_CFLAGS := \ -O4,p \ + -lang=c \ LIBOS_A_LDFLAGS := \ -nodefaults \ @@ -66,9 +67,9 @@ $(BUILD_DIR)/libos.a: $(LIBOS_A_O_FILES) @echo $(LIBOS_A_O_FILES) > build/LIBOS_A_ofiles @$(LD) -xm l $(LIBOS_A_LDFLAGS) -o $(BUILD_DIR)/libos.a @build/LIBOS_A_ofiles -$(BUILD_DIR)/libs/dolphin/os/%.o: libs/dolphin/os/%.cpp +$(BUILD_DIR)/libs/dolphin/os/%.o: libs/dolphin/os/%.c @mkdir -p $(@D) @echo building... $< - @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp - @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBOS_A_CFLAGS) -c -o $@ $(basename $@).cpp + @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBOS_A_CFLAGS) -c -o $@ $(basename $@).c diff --git a/libs/dolphin/os/OS.cpp b/libs/dolphin/os/OS.c similarity index 55% rename from libs/dolphin/os/OS.cpp rename to libs/dolphin/os/OS.c index 9d93ce9f8d..ba545478b6 100644 --- a/libs/dolphin/os/OS.cpp +++ b/libs/dolphin/os/OS.c @@ -13,38 +13,38 @@ SECTION_INIT void memset(); SECTION_INIT void memcpy(); -extern "C" void PPCMtmmcr0(); -extern "C" void PPCMtmmcr1(); -extern "C" void PPCMtpmc1(); -extern "C" void PPCMtpmc2(); -extern "C" void PPCMtpmc3(); -extern "C" void PPCMtpmc4(); -extern "C" void PPCMfhid2(); -extern "C" void PPCMthid2(); -extern "C" void PPCDisableSpeculation(); -extern "C" void PPCSetFpNonIEEEMode(); -extern "C" void OSInitAlarm(); -extern "C" void __OSInitAudioSystem(); -extern "C" void __OSCacheInit(); -extern "C" void __OSContextInit(); -extern "C" void __OSInterruptInit(); -extern "C" void __OSModuleInit(); -extern "C" void __OSInitMemoryProtection(); -extern "C" void __OSResetSWInterruptHandler(); -extern "C" void __OSInitSram(); -extern "C" void __OSInitSystemCall(); -extern "C" void __OSThreadInit(); -extern "C" void EXIInit(); -extern "C" void SIInit(); -extern "C" void __DBIsExceptionMarked(); -extern "C" void DBPrintf(); -extern "C" void DVDInit(); -extern "C" void DVDInquiryAsync(); -extern "C" void EnableMetroTRKInterrupts(); -extern "C" extern u8 __DVDLongFileNameFlag[4]; -extern "C" extern u8 __PADSpec[4 + 4 /* padding */]; -extern "C" void _epilog(); -extern "C" void regist__9daBgObj_cFP4dBgW(); +void PPCMtmmcr0(); +void PPCMtmmcr1(); +void PPCMtpmc1(); +void PPCMtpmc2(); +void PPCMtpmc3(); +void PPCMtpmc4(); +void PPCMfhid2(); +void PPCMthid2(); +void PPCDisableSpeculation(); +void PPCSetFpNonIEEEMode(); +void OSInitAlarm(); +void __OSInitAudioSystem(); +void __OSCacheInit(); +void __OSContextInit(); +void __OSInterruptInit(); +void __OSModuleInit(); +void __OSInitMemoryProtection(); +void __OSResetSWInterruptHandler(); +void __OSInitSram(); +void __OSInitSystemCall(); +void __OSThreadInit(); +void EXIInit(); +void SIInit(); +void __DBIsExceptionMarked(); +void DBPrintf(); +void DVDInit(); +void DVDInquiryAsync(); +void EnableMetroTRKInterrupts(); +extern u8 __DVDLongFileNameFlag[4]; +extern u8 __PADSpec[4 + 4 /* padding */]; +void _epilog(); +void regist__9daBgObj_cFP4dBgW(); // // Declarations: @@ -52,61 +52,158 @@ extern "C" void regist__9daBgObj_cFP4dBgW(); /* ############################################################################################## */ /* 80451600-80451604 000B00 0004+00 2/2 0/0 0/0 .sbss BootInfo */ -static u8 BootInfo[4]; +static OSBootInfo* BootInfo; /* 80451604-80451608 000B04 0004+00 2/2 0/0 0/0 .sbss BI2DebugFlag */ -static u8 BI2DebugFlag[4]; +static volatile u32* BI2DebugFlag; /* 80451608-8045160C 000B08 0004+00 1/1 0/0 0/0 .sbss BI2DebugFlagHolder */ -static u8 BI2DebugFlagHolder[4]; +static u32* BI2DebugFlagHolder; -/* 8045160C-80451610 000B0C 0004+00 1/1 1/1 0/0 .sbss __OSIsGcam */ -extern u8 __OSIsGcam[4]; -u8 __OSIsGcam[4]; +/* 80451630-80451634 000B30 0004+00 1/1 1/1 0/0 .sbss __OSStartTime */ +extern OSTime __OSStartTime; +OSTime __OSStartTime; -/* 80451610-80451618 000B10 0008+00 1/1 0/0 0/0 .sbss ZeroF */ -static f64 ZeroF; +/* 80451628-80451630 000B28 0004+04 1/1 1/1 0/0 .sbss __OSInIPL */ +extern BOOL __OSInIPL; +BOOL __OSInIPL; + +/* 80451624-80451628 000B24 0004+00 3/3 0/0 0/0 .sbss OSExceptionTable */ +extern OSExceptionHandler* OSExceptionTable; +OSExceptionHandler* OSExceptionTable; + +/* 80451620-80451624 000B20 0004+00 1/1 0/0 0/0 .sbss AreWeInitialized */ +extern BOOL AreWeInitialized; +BOOL AreWeInitialized; /* 80451618-80451620 000B18 0008+00 1/1 0/0 0/0 .sbss ZeroPS */ -static u8 ZeroPS[8]; +extern f64 ZeroPS; +f64 ZeroPS; + +/* 80451610-80451618 000B10 0008+00 1/1 0/0 0/0 .sbss ZeroF */ +extern f64 ZeroF; +f64 ZeroF; + +/* 8045160C-80451610 000B0C 0004+00 1/1 1/1 0/0 .sbss __OSIsGcam */ +extern BOOL __OSIsGcam; +BOOL __OSIsGcam; /* 80339DD4-80339EFC 334714 0128+00 0/0 1/1 0/0 .text __OSFPRInit */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off asm void __OSFPRInit(void) { + // clang-format off nofralloc -#include "asm/dolphin/os/OS/__OSFPRInit.s" + + mfmsr r3 + ori r3, r3, 0x2000 + mtmsr r3 + + mfspr r3, 0x398 + rlwinm. r3, r3, 3, 0x1f, 0x1f + beq skip_ps_init + + lis r3, ZeroPS@ha + addi r3, r3, ZeroPS@l + psq_l f0, 0(r3), 0, 0 + ps_mr f1, f0 + ps_mr f2, f0 + ps_mr f3, f0 + ps_mr f4, f0 + ps_mr f5, f0 + ps_mr f6, f0 + ps_mr f7, f0 + ps_mr f8, f0 + ps_mr f9, f0 + ps_mr f10, f0 + ps_mr f11, f0 + ps_mr f12, f0 + ps_mr f13, f0 + ps_mr f14, f0 + ps_mr f15, f0 + ps_mr f16, f0 + ps_mr f17, f0 + ps_mr f18, f0 + ps_mr f19, f0 + ps_mr f20, f0 + ps_mr f21, f0 + ps_mr f22, f0 + ps_mr f23, f0 + ps_mr f24, f0 + ps_mr f25, f0 + ps_mr f26, f0 + ps_mr f27, f0 + ps_mr f28, f0 + ps_mr f29, f0 + ps_mr f30, f0 + ps_mr f31, f0 + +skip_ps_init: + lfd f0, ZeroF(r13) + fmr f1, f0 + fmr f2, f0 + fmr f3, f0 + fmr f4, f0 + fmr f5, f0 + fmr f6, f0 + fmr f7, f0 + fmr f8, f0 + fmr f9, f0 + fmr f10, f0 + fmr f11, f0 + fmr f12, f0 + fmr f13, f0 + fmr f14, f0 + fmr f15, f0 + fmr f16, f0 + fmr f17, f0 + fmr f18, f0 + fmr f19, f0 + fmr f20, f0 + fmr f21, f0 + fmr f22, f0 + fmr f23, f0 + fmr f24, f0 + fmr f25, f0 + fmr f26, f0 + fmr f27, f0 + fmr f28, f0 + fmr f29, f0 + fmr f30, f0 + fmr f31, f0 + + mtfsf 0xff, f0 + blr + // clang-format on } -#pragma pop /* 80339EFC-80339F24 33483C 0028+00 0/0 5/5 0/0 .text OSGetConsoleType */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 OSGetConsoleType(void) { - nofralloc -#include "asm/dolphin/os/OS/OSGetConsoleType.s" +u32 OSGetConsoleType(void) { + if (BootInfo == NULL || BootInfo->console_type == 0) { + return 0x10000002; // default console type + } + + return BootInfo->console_type; } -#pragma pop /* ############################################################################################## */ /* 8044BA60-8044BA80 078780 0020+00 2/2 0/0 0/0 .bss DriveInfo */ -static u8 DriveInfo[32]; +static DVDDriveInfo DriveInfo; /* 80339F24-80339F60 334864 003C+00 1/1 0/0 0/0 .text InquiryCallback */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void InquiryCallback(u32 param_0, void* param_1) { - nofralloc -#include "asm/dolphin/os/OS/InquiryCallback.s" +static void InquiryCallback(u32 result, DVDCommandBlock* block) { + switch (block->state) { + case 0: + __OSDeviceCode = (u16)(0x8000 | DriveInfo.device_code); + break; + default: + __OSDeviceCode = 1; + break; + } } -#pragma pop /* ############################################################################################## */ /* 803CF288-803CF2CC 02C3A8 0044+00 3/2 0/0 0/0 .data @1 */ -SECTION_DATA static char lit_1[68] = "<< Dolphin SDK - OS release build: Nov 10 2004 06:26:41 (0x2301) >>"; +SECTION_DATA static char lit_1[68] = + "<< Dolphin SDK - OS release build: Nov 10 2004 06:26:41 (0x2301) >>"; /* 803CF2CC-803CF2DC 02C3EC 000D+03 0/1 0/0 0/0 .data @105 */ #pragma push @@ -202,24 +299,6 @@ SECTION_SDATA static void* __OSVersion = (void*)&lit_1; /* 80450984-8045098C 000404 0006+02 1/1 0/0 0/0 .sdata @116 */ SECTION_SDATA static char lit_116[6] = "%08x\n"; -/* 80451620-80451624 000B20 0004+00 1/1 0/0 0/0 .sbss AreWeInitialized */ -static u8 AreWeInitialized[4]; - -/* 80451624-80451628 000B24 0004+00 3/3 0/0 0/0 .sbss OSExceptionTable */ -static u8 OSExceptionTable[4]; - -/* 80451628-80451630 000B28 0004+04 1/1 1/1 0/0 .sbss __OSInIPL */ -extern u8 __OSInIPL[4 + 4 /* padding */]; -u8 __OSInIPL[4 + 4 /* padding */]; - -/* 80451630-80451634 000B30 0004+00 1/1 1/1 0/0 .sbss __OSStartTime */ -extern u8 __OSStartTime[4]; -u8 __OSStartTime[4]; - -/* 80451634-80451638 000B34 0004+00 1/1 1/1 0/0 .sbss None */ -extern u8 data_80451634[4]; -u8 data_80451634[4]; - extern void* __ArenaHi; extern void* _stack_end; @@ -237,11 +316,22 @@ asm void OSInit(void) { /* 803CF3AC-803CF3E8 02C4CC 003C+00 0/1 0/0 0/0 .data __OSExceptionLocations */ #pragma push #pragma force_active on -SECTION_DATA static u8 __OSExceptionLocations[60] = { - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, - 0x00, 0x0F, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x17, 0x00, +SECTION_DATA static u32 __OSExceptionLocations[] = { + 0x00000100, // 0 System reset + 0x00000200, // 1 Machine check + 0x00000300, // 2 DSI - seg fault or DABR + 0x00000400, // 3 ISI + 0x00000500, // 4 External interrupt + 0x00000600, // 5 Alignment + 0x00000700, // 6 Program + 0x00000800, // 7 FP Unavailable + 0x00000900, // 8 Decrementer + 0x00000C00, // 9 System call + 0x00000D00, // 10 Trace + 0x00000F00, // 11 Performance monitor + 0x00001300, // 12 Instruction address breakpoint. + 0x00001400, // 13 System management interrupt + 0x00001700 // 14 Thermal interrupt }; #pragma pop @@ -280,107 +370,168 @@ static asm void OSExceptionInit(void) { #pragma pop /* 8033A6C0-8033A6E4 335000 0024+00 1/1 0/0 0/0 .text __OSDBIntegrator */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off asm void __OSDBIntegrator(void) { + // clang-format off nofralloc -#include "asm/dolphin/os/OS/__OSDBIntegrator.s" + + li r5, 0x40 + mflr r3 + stw r3, 0xc(r5) + lwz r3, 8(r5) + oris r3, r3, 0x8000 + mtlr r3 + li r3, 0x30 + mtmsr r3 + blr + // clang-format on } -#pragma pop /* 8033A6E4-8033A6E8 335024 0004+00 1/1 0/0 0/0 .text __OSDBJump */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSDBJump(void) { +asm void __OSDBJump(void){ + // clang-format off nofralloc -#include "asm/dolphin/os/OS/__OSDBJump.s" + + bla 0x60 + // clang-format on } -#pragma pop /* 8033A6E8-8033A704 335028 001C+00 1/1 3/3 0/0 .text __OSSetExceptionHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm OSExceptionHandler __OSSetExceptionHandler(OSException exception, OSExceptionHandler handler) { - nofralloc -#include "asm/dolphin/os/OS/__OSSetExceptionHandler.s" +OSExceptionHandler __OSSetExceptionHandler(__OSException exception, OSExceptionHandler handler) { + OSExceptionHandler old = OSExceptionTable[exception]; + OSExceptionTable[exception] = handler; + return old; } -#pragma pop /* 8033A704-8033A718 335044 0014+00 0/0 1/1 0/0 .text __OSGetExceptionHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm OSExceptionHandler __OSGetExceptionHandler(OSException exception) { - nofralloc -#include "asm/dolphin/os/OS/__OSGetExceptionHandler.s" +OSExceptionHandler __OSGetExceptionHandler(__OSException exception) { + return OSExceptionTable[exception]; } -#pragma pop /* 8033A718-8033A770 335058 0058+00 1/1 0/0 0/0 .text OSExceptionVector */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off static asm void OSExceptionVector(void) { + // clang-format off nofralloc -#include "asm/dolphin/os/OS/OSExceptionVector.s" -} -#pragma pop -// fake function? -/* 8033A770-8033A780 3350B0 0010+00 1/1 0/0 0/0 .text __DBVECTOR */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __DBVECTOR() { - nofralloc -#include "asm/dolphin/os/OS/__DBVECTOR.s" -} -#pragma pop + mtspr 0x110, r4 -// fake function? -/* 8033A780-8033A7B0 3350C0 0030+00 1/1 0/0 0/0 .text __OSEVSetNumber */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSEVSetNumber() { - nofralloc -#include "asm/dolphin/os/OS/__OSEVSetNumber.s" -} -#pragma pop + lwz r4, 0xc0(r0) -/* 8033A7B0-8033A7B4 3350F0 0004+00 1/1 0/0 0/0 .text __OSEVEnd */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSEVEnd() { - nofralloc -#include "asm/dolphin/os/OS/__OSEVEnd.s" -} -#pragma pop + stw r3, 0xc(r4) + mfspr r3, 0x110 + stw r3, 0x10(r4) + stw r5, 0x14(r4) + + lhz r3, 0x1a2(r4) + ori r3, r3, 2 + sth r3, 0x1a2(r4) + + mfcr r3 + stw r3, 0x80(r4) + mflr r3 + stw r3, 0x84(r4) + mfctr r3 + stw r3, 0x88(r4) + mfxer r3 + stw r3, 0x8c(r4) + mfspr r3, 0x1a + stw r3, 0x198(r4) + mfspr r3, 0x1b + stw r3, 0x19c(r4) + mr r5, r3 + +entry __DBVECTOR + nop + + mfmsr r3 + ori r3, r3, 0x30 + mtspr 0x1b, r3 + +entry __OSEVSetNumber + li r3, 0 + + lwz r4, 0xd4(r0) + + rlwinm. r5, r5, 0, 0x1e, 0x1e + bne recoverable + lis r5, OSDefaultExceptionHandler@ha + addi r5, r5, OSDefaultExceptionHandler@l + mtspr 0x1a, r5 + rfi + +recoverable: + rlwinm r5, r3, 2, 0x16, 0x1d + lwz r5, 0x3000(r5) + mtspr 0x1a, r5 + rfi + +entry __OSEVEnd + nop + // clang-format on +} -// fake function? /* 8033A7B4-8033A80C 3350F4 0058+00 2/2 0/0 0/0 .text OSDefaultExceptionHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void OSDefaultExceptionHandler(OSException exception, OSContext* context) { +static asm void OSDefaultExceptionHandler(register __OSException exception, + register OSContext* context) { + // clang-format off nofralloc -#include "asm/dolphin/os/OS/OSDefaultExceptionHandler.s" + + stw r0, 0(context) + stw r1, 4(context) + stw r2, 8(context) + stmw r6, 0x18(context) + mfspr r0, 0x391 + stw r0, 0x1a8(context) + mfspr r0, 0x392 + stw r0, 0x1ac(context) + mfspr r0, 0x393 + stw r0, 0x1b0(context) + mfspr r0, 0x394 + stw r0, 0x1b4(context) + mfspr r0, 0x395 + stw r0, 0x1b8(context) + mfspr r0, 0x396 + stw r0, 0x1bc(context) + mfspr r0, 0x397 + stw r0, 0x1c0(context) + + mfdsisr r5 + mfdar r6 + + stwu r1, -8(r1) + b __OSUnhandledException + // clang-format on } -#pragma pop /* 8033A80C-8033A860 33514C 0054+00 0/0 1/1 0/0 .text __OSPSInit */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off asm void __OSPSInit(void) { + // clang-format off nofralloc -#include "asm/dolphin/os/OS/__OSPSInit.s" + + mflr r0 + stw r0, 4(r1) + stwu r1, -8(r1) + bl PPCMfhid2 + oris r3, r3, 0xa000 + bl PPCMthid2 + bl ICFlashInvalidate + sync + + li r3, 0 + mtspr 0x390, r3 + mtspr 0x391, r3 + mtspr 0x392, r3 + mtspr 0x393, r3 + mtspr 0x394, r3 + mtspr 0x395, r3 + mtspr 0x396, r3 + mtspr 0x397, r3 + + lwz r0, 0xc(r1) + addi r1, r1, 8 + mtlr r0 + blr + // clang-format on } -#pragma pop /* 8033A860-8033A874 3351A0 0014+00 0/0 1/1 0/0 .text __OSGetDIConfig */ #pragma push diff --git a/libs/dolphin/os/OSAlarm.cpp b/libs/dolphin/os/OSAlarm.c similarity index 66% rename from libs/dolphin/os/OSAlarm.cpp rename to libs/dolphin/os/OSAlarm.c index bccb9a21ba..3ae3df79fb 100644 --- a/libs/dolphin/os/OSAlarm.cpp +++ b/libs/dolphin/os/OSAlarm.c @@ -5,26 +5,27 @@ #include "dolphin/os/OSAlarm.h" #include "dol2asm.h" +#include "dolphin/os/OSReset.h" #include "dolphin/types.h" // // External References: // -extern "C" void PPCMtdec(); -extern "C" void __OSSetExceptionHandler(); -extern "C" void __OSGetExceptionHandler(); -extern "C" void OSSetCurrentContext(); -extern "C" void OSLoadContext(); -extern "C" void OSClearContext(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void OSRegisterResetFunction(); -extern "C" void OSDisableScheduler(); -extern "C" void OSEnableScheduler(); -extern "C" void __OSReschedule(); -extern "C" void __DVDTestAlarm(); -extern "C" void __div2i(); +void PPCMtdec(); +void __OSSetExceptionHandler(); +void __OSGetExceptionHandler(); +void OSSetCurrentContext(); +void OSLoadContext(); +void OSClearContext(); +void OSDisableInterrupts(); +void OSRestoreInterrupts(); +void OSRegisterResetFunction(); +void OSDisableScheduler(); +void OSEnableScheduler(); +void __OSReschedule(); +void __DVDTestAlarm(); +void __div2i(); // // Declarations: @@ -32,11 +33,11 @@ extern "C" void __div2i(); /* ############################################################################################## */ /* 803CF480-803CF490 -00001 0010+00 1/1 0/0 0/0 .data ResetFunctionInfo */ -SECTION_DATA static void* ResetFunctionInfo[4] = { - (void*)OnReset, - (void*)0xFFFFFFFF, - (void*)NULL, - (void*)NULL, +static OSResetFunctionInfo ResetFunctionInfo = { + OnReset, + 0xFFFFFFFF, + NULL, + NULL, }; /* 80451638-80451640 000B38 0008+00 5/5 0/0 0/0 .sbss AlarmQueue */ @@ -53,14 +54,10 @@ asm void OSInitAlarm(void) { #pragma pop /* 8033A8F8-8033A908 335238 0010+00 0/0 17/17 0/0 .text OSCreateAlarm */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSCreateAlarm(OSAlarm* alarm) { - nofralloc -#include "asm/dolphin/os/OSAlarm/OSCreateAlarm.s" +void OSCreateAlarm(OSAlarm* alarm) { + alarm->handler = NULL; + alarm->tag = 0; } -#pragma pop /* 8033A908-8033AB58 335248 0250+00 3/3 0/0 0/0 .text InsertAlarm */ #pragma push @@ -106,21 +103,40 @@ asm void OSCancelAlarm(OSAlarm* alarm) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void DecrementerExceptionCallback(OSException* exception, struct OSContext* context) { +static asm void DecrementerExceptionCallback(__OSException exception, OSContext* context) { nofralloc #include "asm/dolphin/os/OSAlarm/DecrementerExceptionCallback.s" } #pragma pop /* 8033AF88-8033AFD8 3358C8 0050+00 1/1 0/0 0/0 .text DecrementerExceptionHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void DecrementerExceptionHandler(OSException* exception, struct OSContext* context) { +static asm void DecrementerExceptionHandler(register __OSException exception, + register OSContext* context) { + // clang-format off nofralloc -#include "asm/dolphin/os/OSAlarm/DecrementerExceptionHandler.s" + + stw r0, 0(context) + stw r1, 4(context) + stw r2, 8(context) + stmw r6, 0x18(context) + mfspr r0, 0x391 + stw r0, 0x1a8(context) + mfspr r0, 0x392 + stw r0, 0x1ac(context) + mfspr r0, 0x393 + stw r0, 0x1b0(context) + mfspr r0, 0x394 + stw r0, 0x1b4(context) + mfspr r0, 0x395 + stw r0, 0x1b8(context) + mfspr r0, 0x396 + stw r0, 0x1bc(context) + mfspr r0, 0x397 + stw r0, 0x1c0(context) + stwu r1, -8(r1) + b DecrementerExceptionCallback + // clang-format on } -#pragma pop /* 8033AFD8-8033B078 335918 00A0+00 1/0 0/0 0/0 .text OnReset */ #pragma push diff --git a/libs/dolphin/os/OSAlloc.c b/libs/dolphin/os/OSAlloc.c new file mode 100644 index 0000000000..6f5ff3c4ec --- /dev/null +++ b/libs/dolphin/os/OSAlloc.c @@ -0,0 +1,144 @@ +// +// Translation Unit: OSAlloc +// + +#include "dolphin/os/OSAlloc.h" + +/* 8033B078-8033B124 3359B8 00AC+00 1/1 0/0 0/0 .text DLInsert */ +static OSHeapCell* DLInsert(OSHeapCell* list, OSHeapCell* child) { + OSHeapCell* prev = NULL; + OSHeapCell* next = list; + + for (; next != NULL; prev = next, next = next->next) { + if ((char*)child <= (char*)next) { + break; + } + } + + child->next = next; + child->prev = prev; + + if (next != NULL) { + next->prev = child; + + if ((char*)child + child->size == (char*)next) { + child->size += next->size; + next = next->next; + child->next = next; + if (next != NULL) { + next->prev = child; + } + } + } + + if (prev != NULL) { + prev->next = child; + + if ((char*)prev + prev->size == (char*)child) { + prev->size += child->size; + prev->next = next; + if (next != NULL) { + next->prev = prev; + } + } + + return list; + } else { + return child; + } +} + +inline OSHeapCell* DLExtract(OSHeapCell* list, OSHeapCell* child) { + if (child->next != NULL) { + child->next->prev = child->prev; + } + + if (child->prev == NULL) { + return child->next; + } + + child->prev->next = child->next; + return list; +} + +/* ############################################################################################## */ +/* 80451640-80451644 000B40 0004+00 3/3 0/0 0/0 .sbss HeapArray */ +static OSHeapDescriptor* HeapArray; + +/* 8033B124-8033B1A0 335A64 007C+00 0/0 1/1 0/0 .text OSFreeToHeap */ +void OSFreeToHeap(OSHeapHandle handle, void* ptr) { + OSHeapDescriptor* hd = &HeapArray[handle]; + OSHeapCell* cell = (OSHeapCell*)((char*)ptr - sizeof(OSHeapCell)); + hd->usedList = DLExtract(hd->usedList, cell); + hd->freeList = DLInsert(hd->freeList, cell); +} + +/* ############################################################################################## */ +/* 80450990-80450998 000410 0004+04 2/2 1/1 0/0 .sdata __OSCurrHeap */ +volatile s32 __OSCurrHeap = -1; + +/* 8033B1A0-8033B1B0 335AE0 0010+00 0/0 1/1 0/0 .text OSSetCurrentHeap */ +s32 OSSetCurrentHeap(OSHeapHandle handle) { + s32 old = __OSCurrHeap; + __OSCurrHeap = handle; + return old; +} + +/* ############################################################################################## */ +/* 80451644-80451648 000B44 0004+00 2/2 0/0 0/0 .sbss NumHeaps */ +static s32 NumHeaps; + +/* 80451648-8045164C 000B48 0004+00 1/1 0/0 0/0 .sbss ArenaStart */ +static void* ArenaStart; + +/* 8045164C-80451650 000B4C 0004+00 1/1 0/0 0/0 .sbss ArenaEnd */ +static void* ArenaEnd; + +/* 8033B1B0-8033B220 335AF0 0070+00 0/0 2/2 0/0 .text OSInitAlloc */ +void* OSInitAlloc(void* lo, void* hi, s32 maxHeaps) { + u32 totalSize = maxHeaps * sizeof(OSHeapDescriptor); + int i; + + HeapArray = lo; + NumHeaps = maxHeaps; + + for (i = 0; i < NumHeaps; i++) { + OSHeapDescriptor* hd = &HeapArray[i]; + hd->size = -1; + + hd->freeList = hd->usedList = NULL; + } + + __OSCurrHeap = -1; + + lo = (u8*)HeapArray + totalSize; + lo = OSRoundUpPtr(lo, 0x20); + + ArenaStart = lo; + ArenaEnd = OSRoundDownPtr(hi, 0x20); + + return ArenaStart; +} + +/* 8033B220-8033B28C 335B60 006C+00 0/0 1/1 0/0 .text OSCreateHeap */ +OSHeapHandle OSCreateHeap(void* start, void* end) { + int i; + OSHeapCell* cell = OSRoundUpPtr(start, 0x20); + end = OSRoundDownPtr(end, 0x20); + + for (i = 0; i < NumHeaps; i++) { + OSHeapDescriptor* hd = &HeapArray[i]; + + if (hd->size < 0) { + hd->size = (u8*)end - (u8*)cell; + cell->prev = NULL; + cell->next = NULL; + cell->size = hd->size; + hd->freeList = cell; + hd->usedList = NULL; + return i; + } + } + + return -1; +} diff --git a/libs/dolphin/os/OSAlloc.cpp b/libs/dolphin/os/OSAlloc.cpp deleted file mode 100644 index 0083e26f35..0000000000 --- a/libs/dolphin/os/OSAlloc.cpp +++ /dev/null @@ -1,84 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: OSAlloc -// - -#include "dolphin/os/OSAlloc.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Declarations: -// - -/* 8033B078-8033B124 3359B8 00AC+00 1/1 0/0 0/0 .text DLInsert */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void* DLInsert(void* param_0, void* param_1) { - nofralloc -#include "asm/dolphin/os/OSAlloc/DLInsert.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 80451640-80451644 000B40 0004+00 3/3 0/0 0/0 .sbss HeapArray */ -static u8 HeapArray[4]; - -/* 8033B124-8033B1A0 335A64 007C+00 0/0 1/1 0/0 .text OSFreeToHeap */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSFreeToHeap(OSHeapHandle heap, void* ptr) { - nofralloc -#include "asm/dolphin/os/OSAlloc/OSFreeToHeap.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 80450990-80450998 000410 0004+04 2/2 1/1 0/0 .sdata __OSCurrHeap */ -SECTION_SDATA extern u32 __OSCurrHeap[1 + 1 /* padding */] = { - 0xFFFFFFFF, - /* padding */ - 0x00000000, -}; - -/* 8033B1A0-8033B1B0 335AE0 0010+00 0/0 1/1 0/0 .text OSSetCurrentHeap */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSSetCurrentHeap(OSHeapHandle heap) { - nofralloc -#include "asm/dolphin/os/OSAlloc/OSSetCurrentHeap.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 80451644-80451648 000B44 0004+00 2/2 0/0 0/0 .sbss NumHeaps */ -static u8 NumHeaps[4]; - -/* 80451648-8045164C 000B48 0004+00 1/1 0/0 0/0 .sbss ArenaStart */ -static u8 ArenaStart[4]; - -/* 8045164C-80451650 000B4C 0004+00 1/1 0/0 0/0 .sbss ArenaEnd */ -static u8 ArenaEnd[4]; - -/* 8033B1B0-8033B220 335AF0 0070+00 0/0 2/2 0/0 .text OSInitAlloc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void* OSInitAlloc(void* lo, void* hi, s32 maxHeaps) { - nofralloc -#include "asm/dolphin/os/OSAlloc/OSInitAlloc.s" -} -#pragma pop - -/* 8033B220-8033B28C 335B60 006C+00 0/0 1/1 0/0 .text OSCreateHeap */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm OSHeapHandle OSCreateHeap(void* start, void* end) { - nofralloc -#include "asm/dolphin/os/OSAlloc/OSCreateHeap.s" -} -#pragma pop diff --git a/libs/dolphin/os/OSArena.cpp b/libs/dolphin/os/OSArena.c similarity index 54% rename from libs/dolphin/os/OSArena.cpp rename to libs/dolphin/os/OSArena.c index 1baf49fa83..8afdc5ff72 100644 --- a/libs/dolphin/os/OSArena.cpp +++ b/libs/dolphin/os/OSArena.c @@ -1,15 +1,9 @@ // -// Generated By: dol2asm // Translation Unit: OSArena // #include "dolphin/os/OSArena.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Declarations: -// +#include "dolphin/os/OSAlloc.h" /* ############################################################################################## */ /* 80451650-80451658 000B50 0004+04 2/1 0/0 0/0 .sbss __OSArenaHi */ @@ -17,44 +11,34 @@ static void* __OSArenaHi; /* 8033B28C-8033B294 -00001 0008+00 0/0 0/0 0/0 .text OSGetArenaHi */ void* OSGetArenaHi(void) { - return &*(u32*)__OSArenaHi; + return __OSArenaHi; } /* ############################################################################################## */ /* 80450998-804509A0 000418 0004+04 3/2 0/0 0/0 .sdata __OSArenaLo */ -SECTION_SDATA static u32 __OSArenaLo = 0xFFFFFFFF; +static void* __OSArenaLo = (void*)0xFFFFFFFF; /* 8033B294-8033B29C -00001 0008+00 0/0 0/0 0/0 .text OSGetArenaLo */ void* OSGetArenaLo(void) { - return &*(u32*)__OSArenaLo; + return __OSArenaLo; } /* 8033B29C-8033B2A4 335BDC 0008+00 0/0 5/5 0/0 .text OSSetArenaHi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSSetArenaHi(void* hi) { - nofralloc -#include "asm/dolphin/os/OSArena/OSSetArenaHi.s" +void OSSetArenaHi(void* hi) { + __OSArenaHi = hi; } -#pragma pop /* 8033B2A4-8033B2AC 335BE4 0008+00 0/0 5/5 0/0 .text OSSetArenaLo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSSetArenaLo(void* lo) { - nofralloc -#include "asm/dolphin/os/OSArena/OSSetArenaLo.s" +void OSSetArenaLo(void* lo) { + __OSArenaLo = lo; } -#pragma pop /* 8033B2AC-8033B2D8 335BEC 002C+00 0/0 4/4 0/0 .text OSAllocFromArenaLo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void* OSAllocFromArenaLo(u32 size, s32 alignment) { - nofralloc -#include "asm/dolphin/os/OSArena/OSAllocFromArenaLo.s" +void* OSAllocFromArenaLo(u32 size, s32 alignment) { + u8* blk_start = OSRoundUpPtr(__OSArenaLo, alignment); + u8* blk_end = blk_start + size; + blk_end = OSRoundUpPtr(blk_end, alignment); + + __OSArenaLo = blk_end; + return blk_start; } -#pragma pop diff --git a/libs/dolphin/os/OSAudioSystem.cpp b/libs/dolphin/os/OSAudioSystem.c similarity index 92% rename from libs/dolphin/os/OSAudioSystem.cpp rename to libs/dolphin/os/OSAudioSystem.c index b72088fa95..2e851bb3cf 100644 --- a/libs/dolphin/os/OSAudioSystem.cpp +++ b/libs/dolphin/os/OSAudioSystem.c @@ -12,9 +12,9 @@ // SECTION_INIT void memcpy(); -extern "C" void OSGetArenaHi(); -extern "C" void DCFlushRange(); -extern "C" void OSGetTick(); +void OSGetArenaHi(); +void DCFlushRange(); +void OSGetTick(); // // Declarations: @@ -22,7 +22,7 @@ extern "C" void OSGetTick(); /* ############################################################################################## */ /* 803CF490-803CF510 02C5B0 0080+00 1/1 0/0 0/0 .data DSPInitCode */ -SECTION_DATA static u8 DSPInitCode[128] = { +static u8 DSPInitCode[128] = { 0x02, 0x9F, 0x00, 0x10, 0x02, 0x9F, 0x00, 0x33, 0x02, 0x9F, 0x00, 0x34, 0x02, 0x9F, 0x00, 0x35, 0x02, 0x9F, 0x00, 0x36, 0x02, 0x9F, 0x00, 0x37, 0x02, 0x9F, 0x00, 0x38, 0x02, 0x9F, 0x00, 0x39, 0x12, 0x06, 0x12, 0x03, 0x12, 0x04, 0x12, 0x05, 0x00, 0x80, 0x80, 0x00, 0x00, 0x88, 0xFF, 0xFF, diff --git a/libs/dolphin/os/OSCache.c b/libs/dolphin/os/OSCache.c new file mode 100644 index 0000000000..8b7b018f4c --- /dev/null +++ b/libs/dolphin/os/OSCache.c @@ -0,0 +1,513 @@ +// +// Generated By: dol2asm +// Translation Unit: OSCache +// + +#include "dolphin/os/OSCache.h" +#include "dol2asm.h" +#include "dolphin/os/OSError.h" +#include "dolphin/os/OSInterrupt.h" + +// +// External References: +// + +void OSReport(); +void PPCMfmsr(); +void PPCMtmsr(); +void PPCMfhid0(); +void PPCMfl2cr(); +void PPCMtl2cr(); +void PPCHalt(); +void PPCMfhid2(); +void PPCMthid2(); +void OSDumpContext(); +void DBPrintf(); + +// +// Declarations: +// + +/* 8033B56C-8033B580 335EAC 0014+00 1/1 0/0 0/0 .text DCEnable */ +static asm void DCEnable(void) { + // clang-format off + nofralloc + + sync + mfspr r3, 0x3F0 + ori r3, r3, 0x4000 + mtspr 0x3F0, r3 + + blr + // clang-format on +} + +/* 8033B580-8033B5AC 335EC0 002C+00 0/0 30/30 1/1 .text DCInvalidateRange */ +asm void DCInvalidateRange(register void* start, register u32 nBytes) { + // clang-format off + nofralloc + + cmplwi nBytes, 0 + blelr + + clrlwi r5, start, 0x1B + add nBytes, nBytes, r5 + addi nBytes, nBytes, 0x1F + srwi nBytes, nBytes, 5 + mtctr nBytes + +do_invalidate: + dcbi 0, start + addi start, start, 0x20 + bdnz do_invalidate + + blr + // clang-format on +} + +/* 8033B5AC-8033B5DC 335EEC 0030+00 0/0 11/11 0/0 .text DCFlushRange */ +asm void DCFlushRange(register void* start, register u32 nBytes) { + // clang-format off + nofralloc + + cmplwi nBytes, 0 + blelr + + clrlwi r5, start, 0x1B + add nBytes, nBytes, r5 + addi nBytes, nBytes, 0x1F + srwi nBytes, nBytes, 5 + mtctr nBytes + +do_flush: + dcbf 0, start + addi start, start, 0x20 + bdnz do_flush + sc + + blr + // clang-format on +} + +/* 8033B5DC-8033B60C 335F1C 0030+00 0/0 54/54 1/1 .text DCStoreRange */ +asm void DCStoreRange(register void* start, register u32 nBytes) { + // clang-format off + nofralloc + + cmplwi nBytes, 0 + blelr + + clrlwi r5, start, 0x1B + add nBytes, nBytes, r5 + addi nBytes, nBytes, 0x1F + srwi nBytes, nBytes, 5 + mtctr nBytes + +do_store: + dcbst 0, start + addi start, start, 0x20 + bdnz do_store + sc + + blr + // clang-format on +} + +/* 8033B60C-8033B638 335F4C 002C+00 0/0 2/2 0/0 .text DCFlushRangeNoSync */ +asm void DCFlushRangeNoSync(register void* start, register u32 nBytes) { + // clang-format off + nofralloc + + cmplwi nBytes, 0 + blelr + + clrlwi r5, start, 0x1B + add nBytes, nBytes, r5 + addi nBytes, nBytes, 0x1F + srwi nBytes, nBytes, 5 + mtctr nBytes + +do_flush: + dcbf 0, start + addi start, start, 0x20 + bdnz do_flush + + blr + // clang-format on +} + +/* 8033B638-8033B664 335F78 002C+00 0/0 13/13 3/3 .text DCStoreRangeNoSync */ +asm void DCStoreRangeNoSync(register void* start, register u32 nBytes) { + // clang-format off + nofralloc + + cmplwi nBytes, 0 + blelr + + clrlwi r5, start, 0x1B + add nBytes, nBytes, r5 + addi nBytes, nBytes, 0x1F + srwi nBytes, nBytes, 5 + mtctr nBytes + +do_store: + dcbst 0, start + addi start, start, 0x20 + bdnz do_store + + blr + // clang-format on +} + +/* 8033B664-8033B690 335FA4 002C+00 0/0 1/1 1/1 .text DCZeroRange */ +asm void DCZeroRange(register void* start, register u32 nBytes) { + // clang-format off + nofralloc + + cmplwi nBytes, 0 + blelr + + clrlwi r5, start, 0x1B + add nBytes, nBytes, r5 + addi nBytes, nBytes, 0x1F + srwi nBytes, nBytes, 5 + mtctr nBytes + +do_zero: + dcbz 0, start + addi start, start, 0x20 + bdnz do_zero + + blr + // clang-format on +} + +/* 8033B690-8033B6C4 335FD0 0034+00 0/0 6/6 0/0 .text ICInvalidateRange */ +asm void ICInvalidateRange(register void* start, register u32 nBytes) { + // clang-format off + nofralloc + + cmplwi nBytes, 0 + blelr + + clrlwi r5, start, 0x1B + add nBytes, nBytes, r5 + addi nBytes, nBytes, 0x1F + srwi nBytes, nBytes, 5 + mtctr nBytes + +do_invalidate: + icbi 0, start + addi start, start, 0x20 + bdnz do_invalidate + + sync + isync + + blr + // clang-format on +} + +/* 8033B6C4-8033B6D4 336004 0010+00 0/0 5/5 0/0 .text ICFlashInvalidate */ +asm void ICFlashInvalidate(void) { + // clang-format off + nofralloc + + mfspr r3, 0x3F0 + ori r3, r3, 0x800 + mtspr 0x3F0, r3 + + blr + // clang-format on +} + +/* 8033B6D4-8033B6E8 336014 0014+00 1/1 0/0 0/0 .text ICEnable */ +static asm void ICEnable(void) { + // clang-format off + nofralloc + + isync + mfspr r3, 0x3F0 + ori r3, r3, 0x8000 + mtspr 0x3F0, r3 + + blr + // clang-format on +} + +/* 8033B6E8-8033B7B4 336028 00CC+00 1/1 0/0 0/0 .text __LCEnable */ +asm void __LCEnable(void) { + // clang-format off + nofralloc + + mfmsr r5 + ori r5, r5, 0x1000 + mtmsr r5 + + lis r3, 0x8000 + li r4, 0x400 + mtctr r4 + +do_store: + dcbt 0, r3 + dcbst 0, r3 + addi r3, r3, 0x20 + bdnz do_store + + mfspr r4, 0x398 + oris r4, r4, 0x100F + mtspr 0x398, r4 + + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + + lis r3, 0xE000 + ori r3, r3, 0x0002 + mtdbatl 3, r3 + ori r3, r3, 0x1FE + mtdbatu 3, r3 + isync + + lis r3, 0xE000 + li r6, 0x200 + mtctr r6 + li r6, 0 +do_load: + dcbz_l r6, r3 + addi r3, r3, 0x0020 + bdnz do_load + + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + + blr + // clang-format on +} + +/* 8033B7B4-8033B7EC 3360F4 0038+00 0/0 0/0 1/1 .text LCEnable */ +void LCEnable(void) { + BOOL interrupt = OSDisableInterrupts(); + __LCEnable(); + OSRestoreInterrupts(interrupt); +} + +/* 8033B7EC-8033B814 33612C 0028+00 0/0 2/2 1/1 .text LCDisable */ +asm void LCDisable(void) { + // clang-format off + nofralloc + + lis r3, 0xE000 + li r4, 0x200 + mtctr r4 +do_invalidate: + dcbi 0, r3 + addi r3, r3, 0x20 + bdnz do_invalidate + + mfspr r4, 0x398 + rlwinm r4, r4, 0, 4, 2 + mtspr 0x398, r4 + + blr + // clang-format on +} + +/* 8033B814-8033B838 336154 0024+00 1/1 0/0 0/0 .text LCStoreBlocks */ +static asm void LCStoreBlocks(register void* destAddr, register void* srcAddr, + register u32 blockNum) { + // clang-format off + nofralloc + + rlwinm r6, blockNum, 0x1E, 0x1B, 0x1F + clrlwi destAddr, destAddr, 4 + or r6, r6, destAddr + mtspr 0x39A, r6 + rlwinm r6, blockNum, 2, 0x1C, 0x1D + or r6, r6, srcAddr + ori r6, r6, 2 + mtspr 0x39B, r6 + + blr + // clang-format on +} +/* 8033B838-8033B8E4 336178 00AC+00 0/0 0/0 3/3 .text LCStoreData */ +// matches with mwcc 1.2.5e +#ifdef NONMATCHING +u32 LCStoreData(void* destAddr, void* srcAddr, u32 nBytes) { + u32 blocks = (nBytes + 31) / 32; + u32 ret = (blocks + 127) / 128; + + while (blocks > 0) { + if (blocks < 128) { + LCStoreBlocks(destAddr, srcAddr, blocks); + blocks = 0; + } else { + LCStoreBlocks(destAddr, srcAddr, 0); + blocks -= 128; + + destAddr = (char*)destAddr + 0x1000; + srcAddr = (char*)srcAddr + 0x1000; + } + } + + return ret; +} +#else +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm u32 LCStoreData(void* destAddr, void* srcAddr, u32 nBytes) { + nofralloc +#include "asm/dolphin/os/OSCache/LCStoreData.s" +} +#pragma pop +#endif + +/* 8033B8E4-8033B8F8 336224 0014+00 0/0 0/0 3/3 .text LCQueueWait */ +asm void LCQueueWait(register u32 len){ + // clang-format off + nofralloc + + mfspr r4, 0x398 + rlwinm r4, r4, 8, 28, 31 + cmpw r4, len + bgt LCQueueWait + + blr + // clang-format on +} + +/* ############################################################################################## */ +/* 803CF510-803CF53C 02C630 0029+03 3/3 0/0 0/0 .data @63 */ +SECTION_DATA static char lit_63[] = ">>> L2 INVALIDATE : SHOULD NEVER HAPPEN\n"; + +/* 8033B8F8-8033B990 336238 0098+00 1/1 0/0 0/0 .text L2GlobalInvalidate */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +static asm void L2GlobalInvalidate(void) { + nofralloc +#include "asm/dolphin/os/OSCache/L2GlobalInvalidate.s" +} +#pragma pop + +/* ############################################################################################## */ +/* 803CF53C-803CF554 02C65C 0018+00 0/1 0/0 0/0 .data @84 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_84[] = "Machine check received\n"; +#pragma pop + +/* 803CF554-803CF570 02C674 001B+01 0/1 0/0 0/0 .data @85 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_85[] = "HID2 = 0x%x SRR1 = 0x%x\n"; +#pragma pop + +/* 803CF570-803CF5A0 02C690 0030+00 0/1 0/0 0/0 .data @86 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_86[] = "Machine check was not DMA/locked cache related\n"; +#pragma pop + +/* 803CF5A0-803CF5DC 02C6C0 003C+00 0/1 0/0 0/0 .data @87 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_87[] = "DMAErrorHandler(): An error occurred while processing DMA.\n"; +#pragma pop + +/* 803CF5DC-803CF614 02C6FC 0037+01 0/1 0/0 0/0 .data @88 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_88[] = "The following errors have been detected and cleared :\n"; +#pragma pop + +/* 803CF614-803CF654 02C734 003F+01 0/1 0/0 0/0 .data @89 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_89[] = + "\t- Requested a locked cache tag that was already in the cache\n"; +#pragma pop + +/* 803CF654-803CF680 02C774 0029+03 0/1 0/0 0/0 .data @90 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_90[] = "\t- DMA attempted to access normal cache\n"; +#pragma pop + +/* 803CF680-803CF6A0 02C7A0 001D+03 0/1 0/0 0/0 .data @91 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_91[] = "\t- DMA missed in data cache\n"; +#pragma pop + +/* 803CF6A0-803CF6BC 02C7C0 0019+03 0/1 0/0 0/0 .data @92 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_92[] = "\t- DMA queue overflowed\n"; +#pragma pop + +/* 8033B990-8033BAF0 3362D0 0160+00 1/1 0/0 0/0 .text DMAErrorHandler */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +static asm void DMAErrorHandler(s32 error, OSContext* context) { + nofralloc +#include "asm/dolphin/os/OSCache/DMAErrorHandler.s" +} +#pragma pop + +/* ############################################################################################## */ +/* 803CF6BC-803CF6D8 02C7DC 0019+03 0/1 0/0 0/0 .data @104 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_104[] = "L1 i-caches initialized\n"; +#pragma pop + +/* 803CF6D8-803CF6F4 02C7F8 0019+03 0/1 0/0 0/0 .data @105 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_105[] = "L1 d-caches initialized\n"; +#pragma pop + +/* 803CF6F4-803CF70C 02C814 0016+02 0/1 0/0 0/0 .data @106 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_106[] = "L2 cache initialized\n"; +#pragma pop + +/* 803CF70C-803CF740 02C82C 002E+06 0/1 0/0 0/0 .data @107 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_107[] = "Locked cache machine check handler installed\n"; +#pragma pop + +/* 8033BAF0-8033BBE4 336430 00F4+00 0/0 2/2 0/0 .text __OSCacheInit */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void __OSCacheInit(void) { + nofralloc +#include "asm/dolphin/os/OSCache/__OSCacheInit.s" +} +#pragma pop diff --git a/libs/dolphin/os/OSCache.cpp b/libs/dolphin/os/OSCache.cpp deleted file mode 100644 index 44defbaca4..0000000000 --- a/libs/dolphin/os/OSCache.cpp +++ /dev/null @@ -1,767 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: OSCache -// - -#include "dolphin/os/OSCache.h" -#include "dol2asm.h" -#include "dolphin/os/OSError.h" -#include "dolphin/types.h" - -// -// External References: -// - -extern "C" void OSReport(); -extern "C" void PPCMfmsr(); -extern "C" void PPCMtmsr(); -extern "C" void PPCMfhid0(); -extern "C" void PPCMfl2cr(); -extern "C" void PPCMtl2cr(); -extern "C" void PPCHalt(); -extern "C" void PPCMfhid2(); -extern "C" void PPCMthid2(); -extern "C" void OSDumpContext(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void DBPrintf(); - -// -// Declarations: -// - -/* 8033B56C-8033B580 335EAC 0014+00 1/1 0/0 0/0 .text DCEnable */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void DCEnable(void) { - nofralloc -#include "asm/dolphin/os/OSCache/DCEnable.s" -} -#pragma pop - -/* 8033B580-8033B5AC 335EC0 002C+00 0/0 30/30 1/1 .text DCInvalidateRange */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DCInvalidateRange(void* start, u32 nBytes) { - nofralloc -#include "asm/dolphin/os/OSCache/DCInvalidateRange.s" -} -#pragma pop - -/* 8033B5AC-8033B5DC 335EEC 0030+00 0/0 11/11 0/0 .text DCFlushRange */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DCFlushRange(void* start, u32 nBytes) { - nofralloc -#include "asm/dolphin/os/OSCache/DCFlushRange.s" -} -#pragma pop - -/* 8033B5DC-8033B60C 335F1C 0030+00 0/0 54/54 1/1 .text DCStoreRange */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DCStoreRange(void* start, u32 nBytes) { - nofralloc -#include "asm/dolphin/os/OSCache/DCStoreRange.s" -} -#pragma pop - -/* 8033B60C-8033B638 335F4C 002C+00 0/0 2/2 0/0 .text DCFlushRangeNoSync */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DCFlushRangeNoSync(void* start, u32 nBytes) { - nofralloc -#include "asm/dolphin/os/OSCache/DCFlushRangeNoSync.s" -} -#pragma pop - -/* 8033B638-8033B664 335F78 002C+00 0/0 13/13 3/3 .text DCStoreRangeNoSync */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DCStoreRangeNoSync(void* start, u32 nBytes) { - nofralloc -#include "asm/dolphin/os/OSCache/DCStoreRangeNoSync.s" -} -#pragma pop - -/* 8033B664-8033B690 335FA4 002C+00 0/0 1/1 1/1 .text DCZeroRange */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void DCZeroRange(void* start, u32 nBytes) { - nofralloc -#include "asm/dolphin/os/OSCache/DCZeroRange.s" -} -#pragma pop - -/* 8033B690-8033B6C4 335FD0 0034+00 0/0 6/6 0/0 .text ICInvalidateRange */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void ICInvalidateRange(void* start, u32 nBytes) { - nofralloc -#include "asm/dolphin/os/OSCache/ICInvalidateRange.s" -} -#pragma pop - -/* 8033B6C4-8033B6D4 336004 0010+00 0/0 5/5 0/0 .text ICFlashInvalidate */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void ICFlashInvalidate(void) { - nofralloc -#include "asm/dolphin/os/OSCache/ICFlashInvalidate.s" -} -#pragma pop - -/* 8033B6D4-8033B6E8 336014 0014+00 1/1 0/0 0/0 .text ICEnable */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void ICEnable(void) { - nofralloc -#include "asm/dolphin/os/OSCache/ICEnable.s" -} -#pragma pop - -/* 8033B6E8-8033B7B4 336028 00CC+00 1/1 0/0 0/0 .text __LCEnable */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __LCEnable(void) { - nofralloc -#include "asm/dolphin/os/OSCache/__LCEnable.s" -} -#pragma pop - -/* 8033B7B4-8033B7EC 3360F4 0038+00 0/0 0/0 1/1 .text LCEnable */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void LCEnable() { - nofralloc -#include "asm/dolphin/os/OSCache/LCEnable.s" -} -#pragma pop - -/* 8033B7EC-8033B814 33612C 0028+00 0/0 2/2 1/1 .text LCDisable */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void LCDisable(void) { - nofralloc -#include "asm/dolphin/os/OSCache/LCDisable.s" -} -#pragma pop - -/* 8033B814-8033B838 336154 0024+00 1/1 0/0 0/0 .text LCStoreBlocks */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void LCStoreBlocks(void* destAddr, void* srcAddr, u32 blockNum) { - nofralloc -#include "asm/dolphin/os/OSCache/LCStoreBlocks.s" -} -#pragma pop - -/* 8033B838-8033B8E4 336178 00AC+00 0/0 0/0 3/3 .text LCStoreData */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 LCStoreData(void* destAddr, void* srcAddr, u32 nBytes) { - nofralloc -#include "asm/dolphin/os/OSCache/LCStoreData.s" -} -#pragma pop - -/* 8033B8E4-8033B8F8 336224 0014+00 0/0 0/0 3/3 .text LCQueueWait */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void LCQueueWait(u32 len) { - nofralloc -#include "asm/dolphin/os/OSCache/LCQueueWait.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 803CF510-803CF53C 02C630 0029+03 3/3 0/0 0/0 .data @63 */ -SECTION_DATA static u8 lit_63[41 + 3 /* padding */] = { - 0x3E, - 0x3E, - 0x3E, - 0x20, - 0x4C, - 0x32, - 0x20, - 0x49, - 0x4E, - 0x56, - 0x41, - 0x4C, - 0x49, - 0x44, - 0x41, - 0x54, - 0x45, - 0x20, - 0x3A, - 0x20, - 0x53, - 0x48, - 0x4F, - 0x55, - 0x4C, - 0x44, - 0x20, - 0x4E, - 0x45, - 0x56, - 0x45, - 0x52, - 0x20, - 0x48, - 0x41, - 0x50, - 0x50, - 0x45, - 0x4E, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; - -/* 8033B8F8-8033B990 336238 0098+00 1/1 0/0 0/0 .text L2GlobalInvalidate */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void L2GlobalInvalidate(void) { - nofralloc -#include "asm/dolphin/os/OSCache/L2GlobalInvalidate.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 803CF53C-803CF554 02C65C 0018+00 0/1 0/0 0/0 .data @84 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_84[24] = { - 0x4D, 0x61, 0x63, 0x68, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, - 0x6B, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x0A, 0x00, -}; -#pragma pop - -/* 803CF554-803CF570 02C674 001B+01 0/1 0/0 0/0 .data @85 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_85[27 + 1 /* padding */] = { - 0x48, - 0x49, - 0x44, - 0x32, - 0x20, - 0x3D, - 0x20, - 0x30, - 0x78, - 0x25, - 0x78, - 0x20, - 0x20, - 0x20, - 0x53, - 0x52, - 0x52, - 0x31, - 0x20, - 0x3D, - 0x20, - 0x30, - 0x78, - 0x25, - 0x78, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; -#pragma pop - -/* 803CF570-803CF5A0 02C690 0030+00 0/1 0/0 0/0 .data @86 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_86[48] = { - 0x4D, 0x61, 0x63, 0x68, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x77, 0x61, - 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x44, 0x4D, 0x41, 0x2F, 0x6C, 0x6F, 0x63, 0x6B, 0x65, 0x64, - 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x65, 0x64, 0x0A, 0x00, -}; -#pragma pop - -/* 803CF5A0-803CF5DC 02C6C0 003C+00 0/1 0/0 0/0 .data @87 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_87[60] = { - 0x44, 0x4D, 0x41, 0x45, 0x72, 0x72, 0x6F, 0x72, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, - 0x28, 0x29, 0x3A, 0x20, 0x41, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6F, 0x63, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x20, 0x77, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x70, 0x72, - 0x6F, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x44, 0x4D, 0x41, 0x2E, 0x0A, 0x00, -}; -#pragma pop - -/* 803CF5DC-803CF614 02C6FC 0037+01 0/1 0/0 0/0 .data @88 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_88[55 + 1 /* padding */] = { - 0x54, - 0x68, - 0x65, - 0x20, - 0x66, - 0x6F, - 0x6C, - 0x6C, - 0x6F, - 0x77, - 0x69, - 0x6E, - 0x67, - 0x20, - 0x65, - 0x72, - 0x72, - 0x6F, - 0x72, - 0x73, - 0x20, - 0x68, - 0x61, - 0x76, - 0x65, - 0x20, - 0x62, - 0x65, - 0x65, - 0x6E, - 0x20, - 0x64, - 0x65, - 0x74, - 0x65, - 0x63, - 0x74, - 0x65, - 0x64, - 0x20, - 0x61, - 0x6E, - 0x64, - 0x20, - 0x63, - 0x6C, - 0x65, - 0x61, - 0x72, - 0x65, - 0x64, - 0x20, - 0x3A, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; -#pragma pop - -/* 803CF614-803CF654 02C734 003F+01 0/1 0/0 0/0 .data @89 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_89[63 + 1 /* padding */] = { - 0x09, - 0x2D, - 0x20, - 0x52, - 0x65, - 0x71, - 0x75, - 0x65, - 0x73, - 0x74, - 0x65, - 0x64, - 0x20, - 0x61, - 0x20, - 0x6C, - 0x6F, - 0x63, - 0x6B, - 0x65, - 0x64, - 0x20, - 0x63, - 0x61, - 0x63, - 0x68, - 0x65, - 0x20, - 0x74, - 0x61, - 0x67, - 0x20, - 0x74, - 0x68, - 0x61, - 0x74, - 0x20, - 0x77, - 0x61, - 0x73, - 0x20, - 0x61, - 0x6C, - 0x72, - 0x65, - 0x61, - 0x64, - 0x79, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x74, - 0x68, - 0x65, - 0x20, - 0x63, - 0x61, - 0x63, - 0x68, - 0x65, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; -#pragma pop - -/* 803CF654-803CF680 02C774 0029+03 0/1 0/0 0/0 .data @90 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_90[41 + 3 /* padding */] = { - 0x09, - 0x2D, - 0x20, - 0x44, - 0x4D, - 0x41, - 0x20, - 0x61, - 0x74, - 0x74, - 0x65, - 0x6D, - 0x70, - 0x74, - 0x65, - 0x64, - 0x20, - 0x74, - 0x6F, - 0x20, - 0x61, - 0x63, - 0x63, - 0x65, - 0x73, - 0x73, - 0x20, - 0x6E, - 0x6F, - 0x72, - 0x6D, - 0x61, - 0x6C, - 0x20, - 0x63, - 0x61, - 0x63, - 0x68, - 0x65, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803CF680-803CF6A0 02C7A0 001D+03 0/1 0/0 0/0 .data @91 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_91[29 + 3 /* padding */] = { - 0x09, - 0x2D, - 0x20, - 0x44, - 0x4D, - 0x41, - 0x20, - 0x6D, - 0x69, - 0x73, - 0x73, - 0x65, - 0x64, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x64, - 0x61, - 0x74, - 0x61, - 0x20, - 0x63, - 0x61, - 0x63, - 0x68, - 0x65, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803CF6A0-803CF6BC 02C7C0 0019+03 0/1 0/0 0/0 .data @92 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_92[25 + 3 /* padding */] = { - 0x09, - 0x2D, - 0x20, - 0x44, - 0x4D, - 0x41, - 0x20, - 0x71, - 0x75, - 0x65, - 0x75, - 0x65, - 0x20, - 0x6F, - 0x76, - 0x65, - 0x72, - 0x66, - 0x6C, - 0x6F, - 0x77, - 0x65, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 8033B990-8033BAF0 3362D0 0160+00 1/1 0/0 0/0 .text DMAErrorHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void DMAErrorHandler(s32 error, OSContext* context) { - nofralloc -#include "asm/dolphin/os/OSCache/DMAErrorHandler.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 803CF6BC-803CF6D8 02C7DC 0019+03 0/1 0/0 0/0 .data @104 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_104[25 + 3 /* padding */] = { - 0x4C, - 0x31, - 0x20, - 0x69, - 0x2D, - 0x63, - 0x61, - 0x63, - 0x68, - 0x65, - 0x73, - 0x20, - 0x69, - 0x6E, - 0x69, - 0x74, - 0x69, - 0x61, - 0x6C, - 0x69, - 0x7A, - 0x65, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803CF6D8-803CF6F4 02C7F8 0019+03 0/1 0/0 0/0 .data @105 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_105[25 + 3 /* padding */] = { - 0x4C, - 0x31, - 0x20, - 0x64, - 0x2D, - 0x63, - 0x61, - 0x63, - 0x68, - 0x65, - 0x73, - 0x20, - 0x69, - 0x6E, - 0x69, - 0x74, - 0x69, - 0x61, - 0x6C, - 0x69, - 0x7A, - 0x65, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803CF6F4-803CF70C 02C814 0016+02 0/1 0/0 0/0 .data @106 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_106[22 + 2 /* padding */] = { - 0x4C, - 0x32, - 0x20, - 0x63, - 0x61, - 0x63, - 0x68, - 0x65, - 0x20, - 0x69, - 0x6E, - 0x69, - 0x74, - 0x69, - 0x61, - 0x6C, - 0x69, - 0x7A, - 0x65, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -#pragma pop - -/* 803CF70C-803CF740 02C82C 002E+06 0/1 0/0 0/0 .data @107 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_107[46 + 6 /* padding */] = { - 0x4C, - 0x6F, - 0x63, - 0x6B, - 0x65, - 0x64, - 0x20, - 0x63, - 0x61, - 0x63, - 0x68, - 0x65, - 0x20, - 0x6D, - 0x61, - 0x63, - 0x68, - 0x69, - 0x6E, - 0x65, - 0x20, - 0x63, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x20, - 0x68, - 0x61, - 0x6E, - 0x64, - 0x6C, - 0x65, - 0x72, - 0x20, - 0x69, - 0x6E, - 0x73, - 0x74, - 0x61, - 0x6C, - 0x6C, - 0x65, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 8033BAF0-8033BBE4 336430 00F4+00 0/0 2/2 0/0 .text __OSCacheInit */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSCacheInit(void) { - nofralloc -#include "asm/dolphin/os/OSCache/__OSCacheInit.s" -} -#pragma pop diff --git a/libs/dolphin/os/OSContext.c b/libs/dolphin/os/OSContext.c new file mode 100644 index 0000000000..f07a80e95d --- /dev/null +++ b/libs/dolphin/os/OSContext.c @@ -0,0 +1,660 @@ +// +// Generated By: dol2asm +// Translation Unit: OSContext +// + +#include "dolphin/os/OSContext.h" +#include "dol2asm.h" +#include "dolphin/os/OS.h" +#include "dolphin/os/OSInterrupt.h" +#include "dolphin/types.h" + +// +// External References: +// + +void __RAS_OSDisableInterrupts_end(); +void DBPrintf(); +void __cvt_fp2unsigned(); + +// +// Declarations: +// + +/* 8033BBE4-8033BD08 336524 0124+00 1/1 0/0 0/0 .text __OSLoadFPUContext */ +asm void __OSLoadFPUContext(void) { + // clang-format off + nofralloc + + lhz r5, 0x1A2(r4) + clrlwi. r5, r5, 0x1f + beq exit + + lfd f0, 0x190(r4) + mtfsf 0xFF, f0 + mfspr r5, 0x398 + rlwinm. r5, r5, 3, 0x1F, 0x1F + beq load_fprs + + psq_l f0, 0x1C8(r4), 0, 0 + psq_l f1, 0x1D0(r4), 0, 0 + psq_l f2, 0x1D8(r4), 0, 0 + psq_l f3, 0x1E0(r4), 0, 0 + psq_l f4, 0x1E8(r4), 0, 0 + psq_l f5, 0x1F0(r4), 0, 0 + psq_l f6, 0x1F8(r4), 0, 0 + psq_l f7, 0x200(r4), 0, 0 + psq_l f8, 0x208(r4), 0, 0 + psq_l f9, 0x210(r4), 0, 0 + psq_l f10, 0x218(r4), 0, 0 + psq_l f11, 0x220(r4), 0, 0 + psq_l f12, 0x228(r4), 0, 0 + psq_l f13, 0x230(r4), 0, 0 + psq_l f14, 0x238(r4), 0, 0 + psq_l f15, 0x240(r4), 0, 0 + psq_l f16, 0x248(r4), 0, 0 + psq_l f17, 0x250(r4), 0, 0 + psq_l f18, 0x258(r4), 0, 0 + psq_l f19, 0x260(r4), 0, 0 + psq_l f20, 0x268(r4), 0, 0 + psq_l f21, 0x270(r4), 0, 0 + psq_l f22, 0x278(r4), 0, 0 + psq_l f23, 0x280(r4), 0, 0 + psq_l f24, 0x288(r4), 0, 0 + psq_l f25, 0x290(r4), 0, 0 + psq_l f26, 0x298(r4), 0, 0 + psq_l f27, 0x2A0(r4), 0, 0 + psq_l f28, 0x2A8(r4), 0, 0 + psq_l f29, 0x2B0(r4), 0, 0 + psq_l f30, 0x2B8(r4), 0, 0 + psq_l f31, 0x2C0(r4), 0, 0 + +load_fprs: + lfd f0, 0x90(r4) + lfd f1, 0x98(r4) + lfd f2, 0xA0(r4) + lfd f3, 0xA8(r4) + lfd f4, 0xB0(r4) + lfd f5, 0xB8(r4) + lfd f6, 0xC0(r4) + lfd f7, 0xC8(r4) + lfd f8, 0xD0(r4) + lfd f9, 0xD8(r4) + lfd f10, 0xE0(r4) + lfd f11, 0xE8(r4) + lfd f12, 0xF0(r4) + lfd f13, 0xF8(r4) + lfd f14, 0x100(r4) + lfd f15, 0x108(r4) + lfd f16, 0x110(r4) + lfd f17, 0x118(r4) + lfd f18, 0x120(r4) + lfd f19, 0x128(r4) + lfd f20, 0x130(r4) + lfd f21, 0x138(r4) + lfd f22, 0x140(r4) + lfd f23, 0x148(r4) + lfd f24, 0x150(r4) + lfd f25, 0x158(r4) + lfd f26, 0x160(r4) + lfd f27, 0x168(r4) + lfd f28, 0x170(r4) + lfd f29, 0x178(r4) + lfd f30, 0x180(r4) + lfd f31, 0x188(r4) + +exit: + blr + // clang-format on +} + +/* 8033BD08-8033BE30 336648 0128+00 2/2 0/0 0/0 .text __OSSaveFPUContext */ +asm void __OSSaveFPUContext(s32 unused0, s32 unused1, register OSContext* context) { + // clang-format off + nofralloc + + lhz r3, 0x1A2(context) + ori r3, r3, 1 + sth r3, 0x1A2(context) + + stfd f0, 0x90(context) + stfd f1, 0x98(context) + stfd f2, 0xa0(context) + stfd f3, 0xa8(context) + stfd f4, 0xb0(context) + stfd f5, 0xb8(context) + stfd f6, 0xc0(context) + stfd f7, 0xc8(context) + stfd f8, 0xd0(context) + stfd f9, 0xd8(context) + stfd f10, 0xe0(context) + stfd f11, 0xe8(context) + stfd f12, 0xf0(context) + stfd f13, 0xf8(context) + stfd f14, 0x100(context) + stfd f15, 0x108(context) + stfd f16, 0x110(context) + stfd f17, 0x118(context) + stfd f18, 0x120(context) + stfd f19, 0x128(context) + stfd f20, 0x130(context) + stfd f21, 0x138(context) + stfd f22, 0x140(context) + stfd f23, 0x148(context) + stfd f24, 0x150(context) + stfd f25, 0x158(context) + stfd f26, 0x160(context) + stfd f27, 0x168(context) + stfd f28, 0x170(context) + stfd f29, 0x178(context) + stfd f30, 0x180(context) + stfd f31, 0x188(context) + + mffs f0 + stfd f0, 0x190(context) + lfd f0, 0x90(context) + mfspr r3, 0x398 + rlwinm. r3, r3, 3, 0x1f, 0x1f + beq exit + + psq_st f0, 456(context), 0, 0 + psq_st f1, 464(context), 0, 0 + psq_st f2, 472(context), 0, 0 + psq_st f3, 480(context), 0, 0 + psq_st f4, 488(context), 0, 0 + psq_st f5, 496(context), 0, 0 + psq_st f6, 504(context), 0, 0 + psq_st f7, 512(context), 0, 0 + psq_st f8, 520(context), 0, 0 + psq_st f9, 528(context), 0, 0 + psq_st f10, 536(context), 0, 0 + psq_st f11, 544(context), 0, 0 + psq_st f12, 552(context), 0, 0 + psq_st f13, 560(context), 0, 0 + psq_st f14, 568(context), 0, 0 + psq_st f15, 576(context), 0, 0 + psq_st f16, 584(context), 0, 0 + psq_st f17, 592(context), 0, 0 + psq_st f18, 600(context), 0, 0 + psq_st f19, 608(context), 0, 0 + psq_st f20, 616(context), 0, 0 + psq_st f21, 624(context), 0, 0 + psq_st f22, 632(context), 0, 0 + psq_st f23, 640(context), 0, 0 + psq_st f24, 648(context), 0, 0 + psq_st f25, 656(context), 0, 0 + psq_st f26, 664(context), 0, 0 + psq_st f27, 672(context), 0, 0 + psq_st f28, 680(context), 0, 0 + psq_st f29, 688(context), 0, 0 + psq_st f30, 696(context), 0, 0 + psq_st f31, 704(context), 0, 0 + +exit: + blr + // clang-format on +} + +/* 8033BE30-8033BE38 336770 0008+00 0/0 1/1 0/0 .text OSSaveFPUContext */ +asm void OSSaveFPUContext(register OSContext* context) { + // clang-format off + nofralloc + + addi r5, context, 0 + b __OSSaveFPUContext + // clang-format on +} + +/* 8033BE38-8033BE94 336778 005C+00 1/1 18/18 0/0 .text OSSetCurrentContext */ +asm void OSSetCurrentContext(register OSContext* context) { + // clang-format off + nofralloc + + lis r4, OS_CURRENT_CONTEXT@ha + stw context, OS_CURRENT_CONTEXT@l(r4) + clrlwi r5, context, 2 + stw r5, 0xc0(r4) + lwz r5, 0xd8(r4) + cmpw r5, context + bne lbl_800EE9AC + lwz r6, 0x19c(context) + ori r6, r6, 0x2000 + stw r6, 0x19c(context) + mfmsr r6 + ori r6, r6, 2 + mtmsr r6 + blr + +lbl_800EE9AC: + lwz r6, 0x19c(context) + rlwinm r6, r6, 0, 0x13, 0x11 + stw r6, 0x19c(context) + mfmsr r6 + rlwinm r6, r6, 0, 0x13, 0x11 + ori r6, r6, 2 + mtmsr r6 + isync + blr + // clang-format on +} + +/* 8033BE94-8033BEA0 3367D4 000C+00 0/0 2/2 0/0 .text OSGetCurrentContext */ +OSContext* OSGetCurrentContext(void) { + return OS_CURRENT_CONTEXT; +} + +/* 8033BEA0-8033BF20 3367E0 0080+00 0/0 1/1 0/0 .text OSSaveContext */ +asm void OSSaveContext(register OSContext* context) { + // clang-format off + nofralloc + + stmw r13, 0x34(context) + + mfspr r0, GQR1 + stw r0, 0x1a8(context) + mfspr r0, GQR2 + stw r0, 0x1ac(context) + mfspr r0, GQR3 + stw r0, 0x1b0(context) + mfspr r0, GQR4 + stw r0, 0x1b4(context) + mfspr r0, GQR5 + stw r0, 0x1b8(context) + mfspr r0, GQR6 + stw r0, 0x1bc(context) + mfspr r0, GQR7 + stw r0, 0x1c0(context) + + mfcr r0 + stw r0, 0x80(context) + mflr r0 + stw r0, 0x84(context) + stw r0, 0x198(context) + mfmsr r0 + stw r0, 0x19c(context) + mfctr r0 + stw r0, 0x88(context) + mfxer r0 + stw r0, 0x8c(context) + + stw r1, 4(context) + stw r2, 8(context) + + li r0, 1 + stw r0, 0xc(context) + + li r3, 0 + blr + // clang-format on +} + +/* 8033BF20-8033BFF8 336860 00D8+00 0/0 4/4 0/0 .text OSLoadContext */ +asm void OSLoadContext(register OSContext* context) { + // clang-format off + nofralloc + + lis r4, OSDisableInterrupts@ha + lwz r6, 0x198(context) + addi r5, r4, OSDisableInterrupts@l + cmplw r6, r5 + ble srr0_not_in_disableintr + lis r4, __RAS_OSDisableInterrupts_end@ha + addi r0, r4, __RAS_OSDisableInterrupts_end@l + cmplw r6, r0 + bge srr0_not_in_disableintr + stw r5, 0x198(context) + +srr0_not_in_disableintr: + lwz r0, 0(context) + lwz r1, 4(context) + lwz r2, 8(context) + lhz r4, 0x1a2(context) + rlwinm. r5, r4, 0, 0x1e, 0x1e + beq load_saved_gprs + rlwinm r4, r4, 0, 0x1f, 0x1d + sth r4, 0x1a2(context) + lmw r5, 0x14(context) + b load_special_regs + +load_saved_gprs: + lmw r13, 0x34(context) + +load_special_regs: + lwz r4, 0x1a8(context) + mtspr 0x391, r4 + lwz r4, 0x1ac(context) + mtspr 0x392, r4 + lwz r4, 0x1b0(context) + mtspr 0x393, r4 + lwz r4, 0x1b4(context) + mtspr 0x394, r4 + lwz r4, 0x1b8(context) + mtspr 0x395, r4 + lwz r4, 0x1bc(context) + mtspr 0x396, r4 + lwz r4, 0x1c0(context) + mtspr 0x397, r4 + lwz r4, 0x80(context) + mtcrf 0xff, r4 + lwz r4, 0x84(context) + mtlr r4 + lwz r4, 0x88(context) + mtctr r4 + lwz r4, 0x8c(context) + mtxer r4 + mfmsr r4 + rlwinm r4, r4, 0, 0x11, 0xf + rlwinm r4, r4, 0, 0x1f, 0x1d + mtmsr r4 + lwz r4, 0x198(context) + mtspr 0x1a, r4 + lwz r4, 0x19c(context) + mtspr 0x1b, r4 + lwz r4, 0x10(context) + lwz context, 0xc(context) + rfi + // clang-format on +} + +/* 8033BFF8-8033C000 336938 0008+00 0/0 5/5 0/0 .text OSGetStackPointer */ +asm u8* OSGetStackPointer(void) { + // clang-format off + nofralloc + + mr r3, r1 + blr + // clang-format on +} + +/* 8033C000-8033C024 336940 0024+00 1/1 20/20 0/0 .text OSClearContext */ +void OSClearContext(OSContext* context) { + context->mode = 0; + context->state = 0; + + if (context == OS_CURRENT_FPU_CONTEXT) { + OS_CURRENT_FPU_CONTEXT = NULL; + } +} + +/* 8033C024-8033C0E0 336964 00BC+00 0/0 1/1 0/0 .text OSInitContext */ +asm void OSInitContext(register OSContext* context, register u32 srr0, register u32 stack){ + // clang-format off + nofralloc + + stw srr0, 0x198(context) + stw stack, 4(context) + li r11, 0 + ori r11, r11, 0x9032 + stw r11, 0x19c(context) + li r0, 0 + stw r0, 0x80(context) + stw r0, 0x8c(context) + stw r2, 8(context) + stw r13, 0x34(context) + stw r0, 0xc(context) + stw r0, 0x10(context) + stw r0, 0x14(context) + stw r0, 0x18(context) + stw r0, 0x1c(context) + stw r0, 0x20(context) + stw r0, 0x24(context) + stw r0, 0x28(context) + stw r0, 0x2c(context) + stw r0, 0x30(context) + stw r0, 0x38(context) + stw r0, 0x3c(context) + stw r0, 0x40(context) + stw r0, 0x44(context) + stw r0, 0x48(context) + stw r0, 0x4c(context) + stw r0, 0x50(context) + stw r0, 0x54(context) + stw r0, 0x58(context) + stw r0, 0x5c(context) + stw r0, 0x60(context) + stw r0, 0x64(context) + stw r0, 0x68(context) + stw r0, 0x6c(context) + stw r0, 0x70(context) + stw r0, 0x74(context) + stw r0, 0x78(context) + stw r0, 0x7c(context) + stw r0, 0x1a4(context) + stw r0, 0x1a8(context) + stw r0, 0x1ac(context) + stw r0, 0x1b0(context) + stw r0, 0x1b4(context) + stw r0, 0x1b8(context) + stw r0, 0x1bc(context) + stw r0, 0x1c0(context) + + b OSClearContext + // clang-format on +} + +/* ############################################################################################## */ +/* 803CF740-803CF784 02C860 0044+00 1/1 0/0 0/0 .data @61 */ +SECTION_DATA + static char lit_61[] = "------------------------- Context 0x%08x -------------------------\n"; + +/* 803CF784-803CF7B4 02C8A4 0030+00 0/1 0/0 0/0 .data @62 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_62[] = "r%-2d = 0x%08x (%14d) r%-2d = 0x%08x (%14d)\n"; + +/* 803CF7B4-803CF7E4 02C8D4 002F+01 0/1 0/0 0/0 .data @63 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_63[] = "LR = 0x%08x CR = 0x%08x\n"; +#pragma pop + +/* 803CF7E4-803CF814 02C904 002F+01 0/1 0/0 0/0 .data @64 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_64[] = "SRR0 = 0x%08x SRR1 = 0x%08x\n"; +#pragma pop + +/* 803CF814-803CF828 02C934 0011+03 0/1 0/0 0/0 .data @65 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_65[] = "\nGQRs----------\n"; +#pragma pop + +/* 803CF828-803CF84C 02C948 0021+03 0/1 0/0 0/0 .data @66 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_66[] = "gqr%d = 0x%08x \t gqr%d = 0x%08x\n"; +#pragma pop + +/* 803CF84C-803CF860 02C96C 0012+02 0/1 0/0 0/0 .data @67 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_67[] = "\n\nFPRs----------\n"; +#pragma pop + +/* 803CF860-803CF87C 02C980 0019+03 0/1 0/0 0/0 .data @68 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_68[] = "fr%d \t= %d \t fr%d \t= %d\n"; +#pragma pop + +/* 803CF87C-803CF890 02C99C 0012+02 0/1 0/0 0/0 .data @69 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_69[] = "\n\nPSFs----------\n"; +#pragma pop + +/* 803CF890-803CF8B0 02C9B0 001D+03 0/1 0/0 0/0 .data @70 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_70[] = "ps%d \t= 0x%x \t ps%d \t= 0x%x\n"; +#pragma pop + +/* 803CF8B0-803CF8D8 02C9D0 0026+02 0/1 0/0 0/0 .data @71 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_71[] = "\nAddress: Back Chain LR Save\n"; +#pragma pop + +/* 803CF8D8-803CF8F4 02C9F8 001C+00 0/1 0/0 0/0 .data @72 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_72[] = "0x%08x: 0x%08x 0x%08x\n"; +#pragma pop + +/* 8033C0E0-8033C388 336A20 02A8+00 0/0 3/3 0/0 .text OSDumpContext */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void OSDumpContext(OSContext* context) { + nofralloc +#include "asm/dolphin/os/OSContext/OSDumpContext.s" +} +#pragma pop + +/* 8033C388-8033C40C 336CC8 0084+00 1/1 0/0 0/0 .text OSSwitchFPUContext */ +static asm void OSSwitchFPUContext(register u8 err, register OSContext* context) { + // clang-format off + nofralloc + + mfmsr r5 + ori r5, r5, 0x2000 + mtmsr r5 + isync + lwz r5, 0x19c(context) + ori r5, r5, 0x2000 + mtspr 0x1b, r5 + lis r3, OS_CURRENT_FPU_CONTEXT@ha + lwz r5, OS_CURRENT_FPU_CONTEXT@l(r3) + stw context, 0xd8(r3) + cmpw r5, context + beq context_is_curr_fpu_context + cmpwi r5, 0 + beq context_is_null + bl __OSSaveFPUContext + +context_is_null: + bl __OSLoadFPUContext + +context_is_curr_fpu_context: + lwz r3, 0x80(context) + mtcrf 0xff, r3 + lwz r3, 0x84(context) + mtlr r3 + lwz r3, 0x198(context) + mtspr 0x1a, r3 + lwz r3, 0x88(context) + mtctr r3 + lwz r3, 0x8c(context) + mtxer r3 + lhz r3, 0x1a2(context) + rlwinm r3, r3, 0, 0x1f, 0x1d + sth r3, 0x1a2(context) + lwz r5, 0x14(context) + lwz r3, 0xc(context) + lwz context, 0x10(context) + rfi + // clang-format on +} + +/* ############################################################################################## */ +/* 803CF8F4-803CF918 02CA14 0023+01 1/1 0/0 0/0 .data @76 */ +SECTION_DATA static char lit_76[] = "FPU-unavailable handler installed\n"; + +/* 8033C40C-8033C454 336D4C 0048+00 0/0 1/1 0/0 .text __OSContextInit */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void __OSContextInit(void) { + nofralloc +#include "asm/dolphin/os/OSContext/__OSContextInit.s" +} +#pragma pop + +/* 8033C454-8033C580 336D94 012C+00 0/0 1/1 0/0 .text OSFillFPUContext */ +asm void OSFillFPUContext(register OSContext* context) { + // clang-format off + nofralloc + + mfmsr r5 + ori r5, r5, 0x2000 + mtmsr r5 + isync + + stfd f0, 0x90(context) + stfd f1, 0x98(context) + stfd f2, 0xa0(context) + stfd f3, 0xa8(context) + stfd f4, 0xb0(context) + stfd f5, 0xb8(context) + stfd f6, 0xc0(context) + stfd f7, 0xc8(context) + stfd f8, 0xd0(context) + stfd f9, 0xd8(context) + stfd f10, 0xe0(context) + stfd f11, 0xe8(context) + stfd f12, 0xf0(context) + stfd f13, 0xf8(context) + stfd f14, 0x100(context) + stfd f15, 0x108(context) + stfd f16, 0x110(context) + stfd f17, 0x118(context) + stfd f18, 0x120(context) + stfd f19, 0x128(context) + stfd f20, 0x130(context) + stfd f21, 0x138(context) + stfd f22, 0x140(context) + stfd f23, 0x148(context) + stfd f24, 0x150(context) + stfd f25, 0x158(context) + stfd f26, 0x160(context) + stfd f27, 0x168(context) + stfd f28, 0x170(context) + stfd f29, 0x178(context) + stfd f30, 0x180(context) + stfd f31, 0x188(context) + + mffs f0 + stfd f0, 0x190(context) + lfd f0, 0x90(context) + mfspr r5, 0x398 + rlwinm. r5, r5, 3, 0x1f, 0x1f + beq exit + + psq_st f0, 456(context), 0, 0 + psq_st f1, 464(context), 0, 0 + psq_st f2, 472(context), 0, 0 + psq_st f3, 480(context), 0, 0 + psq_st f4, 488(context), 0, 0 + psq_st f5, 496(context), 0, 0 + psq_st f6, 504(context), 0, 0 + psq_st f7, 512(context), 0, 0 + psq_st f8, 520(context), 0, 0 + psq_st f9, 528(context), 0, 0 + psq_st f10, 536(context), 0, 0 + psq_st f11, 544(context), 0, 0 + psq_st f12, 552(context), 0, 0 + psq_st f13, 560(context), 0, 0 + psq_st f14, 568(context), 0, 0 + psq_st f15, 576(context), 0, 0 + psq_st f16, 584(context), 0, 0 + psq_st f17, 592(context), 0, 0 + psq_st f18, 600(context), 0, 0 + psq_st f19, 608(context), 0, 0 + psq_st f20, 616(context), 0, 0 + psq_st f21, 624(context), 0, 0 + psq_st f22, 632(context), 0, 0 + psq_st f23, 640(context), 0, 0 + psq_st f24, 648(context), 0, 0 + psq_st f25, 656(context), 0, 0 + psq_st f26, 664(context), 0, 0 + psq_st f27, 672(context), 0, 0 + psq_st f28, 680(context), 0, 0 + psq_st f29, 688(context), 0, 0 + psq_st f30, 696(context), 0, 0 + psq_st f31, 704(context), 0, 0 + +exit: + blr + // clang-format on +} diff --git a/libs/dolphin/os/OSContext.cpp b/libs/dolphin/os/OSContext.cpp deleted file mode 100644 index 3cc5f31414..0000000000 --- a/libs/dolphin/os/OSContext.cpp +++ /dev/null @@ -1,597 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: OSContext -// - -#include "dolphin/os/OSContext.h" -#include "dolphin/os/OSInterrupt.h" -#include "dolphin/os/OS.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// External References: -// - -extern "C" void __RAS_OSDisableInterrupts_end(); -extern "C" void DBPrintf(); -extern "C" void __cvt_fp2unsigned(); - -// -// Declarations: -// - -/* 8033BBE4-8033BD08 336524 0124+00 1/1 0/0 0/0 .text __OSLoadFPUContext */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSLoadFPUContext(void) { - nofralloc -#include "asm/dolphin/os/OSContext/__OSLoadFPUContext.s" -} -#pragma pop - -/* 8033BD08-8033BE30 336648 0128+00 2/2 0/0 0/0 .text __OSSaveFPUContext */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSSaveFPUContext(OSContext* context) { - nofralloc -#include "asm/dolphin/os/OSContext/__OSSaveFPUContext.s" -} -#pragma pop - -/* 8033BE30-8033BE38 336770 0008+00 0/0 1/1 0/0 .text OSSaveFPUContext */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSSaveFPUContext(OSContext* context) { - nofralloc -#include "asm/dolphin/os/OSContext/OSSaveFPUContext.s" -} -#pragma pop - -/* 8033BE38-8033BE94 336778 005C+00 1/1 18/18 0/0 .text OSSetCurrentContext */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSSetCurrentContext(OSContext* context) { - nofralloc -#include "asm/dolphin/os/OSContext/OSSetCurrentContext.s" -} -#pragma pop - -/* 8033BE94-8033BEA0 3367D4 000C+00 0/0 2/2 0/0 .text OSGetCurrentContext */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm OSContext* OSGetCurrentContext(void) { - nofralloc -#include "asm/dolphin/os/OSContext/OSGetCurrentContext.s" -} -#pragma pop - -/* 8033BEA0-8033BF20 3367E0 0080+00 0/0 1/1 0/0 .text OSSaveContext */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSSaveContext(OSContext* context) { - nofralloc -#include "asm/dolphin/os/OSContext/OSSaveContext.s" -} -#pragma pop - -/* 8033BF20-8033BFF8 336860 00D8+00 0/0 4/4 0/0 .text OSLoadContext */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSLoadContext(OSContext* context) { - nofralloc -#include "asm/dolphin/os/OSContext/OSLoadContext.s" -} -#pragma pop - -/* 8033BFF8-8033C000 336938 0008+00 0/0 5/5 0/0 .text OSGetStackPointer */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u8* OSGetStackPointer(void) { - nofralloc -#include "asm/dolphin/os/OSContext/OSGetStackPointer.s" -} -#pragma pop - -/* 8033C000-8033C024 336940 0024+00 1/1 20/20 0/0 .text OSClearContext */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSClearContext(OSContext* context) { - nofralloc -#include "asm/dolphin/os/OSContext/OSClearContext.s" -} -#pragma pop - -/* 8033C024-8033C0E0 336964 00BC+00 0/0 1/1 0/0 .text OSInitContext */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSInitContext(OSContext* context, u32 pc, u32 lr) { - nofralloc -#include "asm/dolphin/os/OSContext/OSInitContext.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 803CF740-803CF784 02C860 0044+00 1/1 0/0 0/0 .data @61 */ -SECTION_DATA static u8 lit_61[68] = { - 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, - 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x20, 0x43, 0x6F, - 0x6E, 0x74, 0x65, 0x78, 0x74, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x20, 0x2D, - 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, - 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x0A, 0x00, -}; - -/* 803CF784-803CF7B4 02C8A4 0030+00 0/1 0/0 0/0 .data @62 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_62[48] = { - 0x72, 0x25, 0x2D, 0x32, 0x64, 0x20, 0x20, 0x3D, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x20, - 0x28, 0x25, 0x31, 0x34, 0x64, 0x29, 0x20, 0x20, 0x72, 0x25, 0x2D, 0x32, 0x64, 0x20, 0x20, 0x3D, - 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x20, 0x28, 0x25, 0x31, 0x34, 0x64, 0x29, 0x0A, 0x00, -}; -#pragma pop - -/* 803CF7B4-803CF7E4 02C8D4 002F+01 0/1 0/0 0/0 .data @63 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_63[47 + 1 /* padding */] = { - 0x4C, - 0x52, - 0x20, - 0x20, - 0x20, - 0x3D, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x78, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x43, - 0x52, - 0x20, - 0x20, - 0x20, - 0x3D, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x78, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; -#pragma pop - -/* 803CF7E4-803CF814 02C904 002F+01 0/1 0/0 0/0 .data @64 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_64[47 + 1 /* padding */] = { - 0x53, - 0x52, - 0x52, - 0x30, - 0x20, - 0x3D, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x78, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x53, - 0x52, - 0x52, - 0x31, - 0x20, - 0x3D, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x78, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; -#pragma pop - -/* 803CF814-803CF828 02C934 0011+03 0/1 0/0 0/0 .data @65 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_65[17 + 3 /* padding */] = { - 0x0A, - 0x47, - 0x51, - 0x52, - 0x73, - 0x2D, - 0x2D, - 0x2D, - 0x2D, - 0x2D, - 0x2D, - 0x2D, - 0x2D, - 0x2D, - 0x2D, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803CF828-803CF84C 02C948 0021+03 0/1 0/0 0/0 .data @66 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_66[33 + 3 /* padding */] = { - 0x67, - 0x71, - 0x72, - 0x25, - 0x64, - 0x20, - 0x3D, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x78, - 0x20, - 0x09, - 0x20, - 0x67, - 0x71, - 0x72, - 0x25, - 0x64, - 0x20, - 0x3D, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x78, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803CF84C-803CF860 02C96C 0012+02 0/1 0/0 0/0 .data @67 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_67[18 + 2 /* padding */] = { - 0x0A, - 0x0A, - 0x46, - 0x50, - 0x52, - 0x73, - 0x2D, - 0x2D, - 0x2D, - 0x2D, - 0x2D, - 0x2D, - 0x2D, - 0x2D, - 0x2D, - 0x2D, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -#pragma pop - -/* 803CF860-803CF87C 02C980 0019+03 0/1 0/0 0/0 .data @68 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_68[25 + 3 /* padding */] = { - 0x66, - 0x72, - 0x25, - 0x64, - 0x20, - 0x09, - 0x3D, - 0x20, - 0x25, - 0x64, - 0x20, - 0x09, - 0x20, - 0x66, - 0x72, - 0x25, - 0x64, - 0x20, - 0x09, - 0x3D, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803CF87C-803CF890 02C99C 0012+02 0/1 0/0 0/0 .data @69 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_69[18 + 2 /* padding */] = { - 0x0A, - 0x0A, - 0x50, - 0x53, - 0x46, - 0x73, - 0x2D, - 0x2D, - 0x2D, - 0x2D, - 0x2D, - 0x2D, - 0x2D, - 0x2D, - 0x2D, - 0x2D, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -#pragma pop - -/* 803CF890-803CF8B0 02C9B0 001D+03 0/1 0/0 0/0 .data @70 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_70[29 + 3 /* padding */] = { - 0x70, - 0x73, - 0x25, - 0x64, - 0x20, - 0x09, - 0x3D, - 0x20, - 0x30, - 0x78, - 0x25, - 0x78, - 0x20, - 0x09, - 0x20, - 0x70, - 0x73, - 0x25, - 0x64, - 0x20, - 0x09, - 0x3D, - 0x20, - 0x30, - 0x78, - 0x25, - 0x78, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803CF8B0-803CF8D8 02C9D0 0026+02 0/1 0/0 0/0 .data @71 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_71[38 + 2 /* padding */] = { - 0x0A, - 0x41, - 0x64, - 0x64, - 0x72, - 0x65, - 0x73, - 0x73, - 0x3A, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x42, - 0x61, - 0x63, - 0x6B, - 0x20, - 0x43, - 0x68, - 0x61, - 0x69, - 0x6E, - 0x20, - 0x20, - 0x20, - 0x20, - 0x4C, - 0x52, - 0x20, - 0x53, - 0x61, - 0x76, - 0x65, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -#pragma pop - -/* 803CF8D8-803CF8F4 02C9F8 001C+00 0/1 0/0 0/0 .data @72 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_72[28] = { - 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x3A, 0x20, 0x20, 0x20, 0x30, 0x78, 0x25, 0x30, - 0x38, 0x78, 0x20, 0x20, 0x20, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x0A, 0x00, -}; -#pragma pop - -/* 8033C0E0-8033C388 336A20 02A8+00 0/0 3/3 0/0 .text OSDumpContext */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSDumpContext(OSContext* context) { - nofralloc -#include "asm/dolphin/os/OSContext/OSDumpContext.s" -} -#pragma pop - -/* 8033C388-8033C40C 336CC8 0084+00 1/1 0/0 0/0 .text OSSwitchFPUContext */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void OSSwitchFPUContext(OSContext* context) { - nofralloc -#include "asm/dolphin/os/OSContext/OSSwitchFPUContext.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 803CF8F4-803CF918 02CA14 0023+01 1/1 0/0 0/0 .data @76 */ -SECTION_DATA static u8 lit_76[35 + 1 /* padding */] = { - 0x46, - 0x50, - 0x55, - 0x2D, - 0x75, - 0x6E, - 0x61, - 0x76, - 0x61, - 0x69, - 0x6C, - 0x61, - 0x62, - 0x6C, - 0x65, - 0x20, - 0x68, - 0x61, - 0x6E, - 0x64, - 0x6C, - 0x65, - 0x72, - 0x20, - 0x69, - 0x6E, - 0x73, - 0x74, - 0x61, - 0x6C, - 0x6C, - 0x65, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; - -/* 8033C40C-8033C454 336D4C 0048+00 0/0 1/1 0/0 .text __OSContextInit */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSContextInit(void) { - nofralloc -#include "asm/dolphin/os/OSContext/__OSContextInit.s" -} -#pragma pop - -/* 8033C454-8033C580 336D94 012C+00 0/0 1/1 0/0 .text OSFillFPUContext */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSFillFPUContext(OSContext* context) { - nofralloc -#include "asm/dolphin/os/OSContext/OSFillFPUContext.s" -} -#pragma pop diff --git a/libs/dolphin/os/OSError.c b/libs/dolphin/os/OSError.c new file mode 100644 index 0000000000..e3c503ffba --- /dev/null +++ b/libs/dolphin/os/OSError.c @@ -0,0 +1,177 @@ +// +// Generated By: dol2asm +// Translation Unit: OSError +// + +#include "dolphin/os/OSError.h" +#include "dol2asm.h" +#include "dolphin/types.h" + +// +// External References: +// + +void OSReport(); +void PPCMfmsr(); +void PPCMtmsr(); +void PPCHalt(); +void PPCMffpscr(); +void PPCMtfpscr(); +void OSSaveFPUContext(); +void OSLoadContext(); +void OSDumpContext(); +void OSDisableInterrupts(); +void OSRestoreInterrupts(); +void OSDisableScheduler(); +void OSEnableScheduler(); +void __OSReschedule(); +void OSGetTime(); +extern u8 __OSLastInterruptSrr0[4]; +extern u8 __OSLastInterrupt[2 + 6 /* padding */]; +extern u8 __OSLastInterruptTime[4]; +extern u8 data_80451684[4]; + +// +// Declarations: +// + +/* ############################################################################################## */ +/* 8044BAD0-8044BB20 0787F0 0044+0C 2/2 2/2 0/0 .bss __OSErrorTable */ +extern OSErrorHandler __OSErrorTable[17 + 3 /* padding */]; +OSErrorHandler __OSErrorTable[17 + 3 /* padding */]; + +/* 804509A0-804509A4 000420 0004+00 1/1 2/2 0/0 .sdata __OSFpscrEnableBits */ +SECTION_SDATA extern u32 __OSFpscrEnableBits = 0xF8; + +/* 8033C580-8033C798 336EC0 0218+00 0/0 4/4 0/0 .text OSSetErrorHandler */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm OSErrorHandler OSSetErrorHandler(OSError error, OSErrorHandler handler) { + nofralloc +#include "asm/dolphin/os/OSError/OSSetErrorHandler.s" +} +#pragma pop + +/* ############################################################################################## */ +/* 803CF918-803CF930 02CA38 0016+02 1/1 0/0 0/0 .data @13 */ +SECTION_DATA static char lit_13[] = " in \"%s\" on line %d.\n"; + +/* 803CF930-803CF958 02CA50 0026+02 0/0 0/0 0/0 .data @14 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_14[] = "\nAddress: Back Chain LR Save\n"; +#pragma pop + +/* 803CF958-803CF974 02CA78 001C+00 0/0 0/0 0/0 .data @15 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_15[] = "0x%08x: 0x%08x 0x%08x\n"; +#pragma pop + +/* 803CF974-803CF994 02CA94 001D+03 0/1 0/0 0/0 .data @74 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_74[] = "Non-recoverable Exception %d"; +#pragma pop + +/* 803CF994-803CF9AC 02CAB4 0017+01 0/1 0/0 0/0 .data @75 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_75[] = "Unhandled Exception %d"; +#pragma pop + +/* 803CF9AC-803CF9E0 02CACC 0031+03 0/1 0/0 0/0 .data @77 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_77[] = "\nDSISR = 0x%08x DAR = 0x%08x\n"; +#pragma pop + +/* 803CF9E0-803CF9F0 02CB00 0010+00 0/1 0/0 0/0 .data @78 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_78[] = "TB = 0x%016llx\n"; +#pragma pop + +/* 803CF9F0-803CFA50 02CB10 0060+00 0/1 0/0 0/0 .data @79 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_79[] = "\nInstruction at 0x%x (read from SRR0) attempted to access invalid address 0x%x (read from DAR)\n"; +#pragma pop + +/* 803CFA50-803CFA9C 02CB70 004C+00 0/0 0/0 0/0 .data @80 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_80[] = "\nAttempted to fetch instruction from invalid address 0x%x (read from SRR0)\n"; +#pragma pop + +/* 803CFA9C-803CFB00 02CBBC 0062+02 0/0 0/0 0/0 .data @81 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_81[] = "\nInstruction at 0x%x (read from SRR0) attempted to access unaligned address 0x%x (read from DAR)\n"; +#pragma pop + +/* 803CFB00-803CFB60 02CC20 0060+00 0/0 0/0 0/0 .data @82 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_82[] = "\nProgram exception : Possible illegal instruction/operation at or around 0x%x (read from SRR0)\n"; +#pragma pop + +/* 803CFB60-803CFB80 02CC80 001F+01 0/0 0/0 0/0 .data @83 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_83[] = "AI DMA Address = 0x%04x%04x\n"; +#pragma pop + +/* 803CFB80-803CFBA0 02CCA0 001F+01 0/0 0/0 0/0 .data @84 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_84[] = "ARAM DMA Address = 0x%04x%04x\n"; +#pragma pop + +/* 803CFBA0-803CFBBC 02CCC0 001B+01 0/0 0/0 0/0 .data @85 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_85[] = "DI DMA Address = 0x%08x\n"; +#pragma pop + +/* 803CFBBC-803CFBF4 02CCDC 0035+03 0/1 0/0 0/0 .data @86 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_86[] = "\nLast interrupt (%d): SRR0 = 0x%08x TB = 0x%016llx\n"; +#pragma pop + +/* 803CFBF4-803CFC38 -00001 0040+04 1/1 0/0 0/0 .data @87 */ +SECTION_DATA static void* lit_87[16 + 1 /* padding */] = { + (void*)(((char*)__OSUnhandledException) + 0x2B4), + (void*)(((char*)__OSUnhandledException) + 0x2B4), + (void*)(((char*)__OSUnhandledException) + 0x20C), + (void*)(((char*)__OSUnhandledException) + 0x224), + (void*)(((char*)__OSUnhandledException) + 0x2B4), + (void*)(((char*)__OSUnhandledException) + 0x238), + (void*)(((char*)__OSUnhandledException) + 0x250), + (void*)(((char*)__OSUnhandledException) + 0x2B4), + (void*)(((char*)__OSUnhandledException) + 0x2B4), + (void*)(((char*)__OSUnhandledException) + 0x2B4), + (void*)(((char*)__OSUnhandledException) + 0x2B4), + (void*)(((char*)__OSUnhandledException) + 0x2B4), + (void*)(((char*)__OSUnhandledException) + 0x2B4), + (void*)(((char*)__OSUnhandledException) + 0x2B4), + (void*)(((char*)__OSUnhandledException) + 0x2B4), + (void*)(((char*)__OSUnhandledException) + 0x268), + /* padding */ + NULL, +}; + +/* 804509A4-804509A8 000424 0002+02 1/1 0/0 0/0 .sdata @76 */ +SECTION_SDATA static char lit_76[] = "\n"; + +/* 8033C798-8033CA80 3370D8 02E8+00 1/0 2/2 0/0 .text __OSUnhandledException */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void __OSUnhandledException(OSException exception, OSContext* context, u32 dsisr, u32 dar) { + nofralloc +#include "asm/dolphin/os/OSError/__OSUnhandledException.s" +} +#pragma pop diff --git a/libs/dolphin/os/OSError.cpp b/libs/dolphin/os/OSError.cpp deleted file mode 100644 index 950c2c5160..0000000000 --- a/libs/dolphin/os/OSError.cpp +++ /dev/null @@ -1,646 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: OSError -// - -#include "dolphin/os/OSError.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// External References: -// - -extern "C" void OSReport(); -extern "C" void PPCMfmsr(); -extern "C" void PPCMtmsr(); -extern "C" void PPCHalt(); -extern "C" void PPCMffpscr(); -extern "C" void PPCMtfpscr(); -extern "C" void OSSaveFPUContext(); -extern "C" void OSLoadContext(); -extern "C" void OSDumpContext(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void OSDisableScheduler(); -extern "C" void OSEnableScheduler(); -extern "C" void __OSReschedule(); -extern "C" void OSGetTime(); -extern "C" extern u8 __OSLastInterruptSrr0[4]; -extern "C" extern u8 __OSLastInterrupt[2 + 6 /* padding */]; -extern "C" extern u8 __OSLastInterruptTime[4]; -extern "C" extern u8 data_80451684[4]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 8044BAD0-8044BB20 0787F0 0044+0C 2/2 2/2 0/0 .bss __OSErrorTable */ -extern u8 __OSErrorTable[68 + 12 /* padding */]; -u8 __OSErrorTable[68 + 12 /* padding */]; - -/* 804509A0-804509A4 000420 0004+00 1/1 2/2 0/0 .sdata __OSFpscrEnableBits */ -SECTION_SDATA extern u32 __OSFpscrEnableBits = 0x000000F8; - -/* 8033C580-8033C798 336EC0 0218+00 0/0 4/4 0/0 .text OSSetErrorHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm OSErrorHandler OSSetErrorHandler(OSError error, OSErrorHandler handler) { - nofralloc -#include "asm/dolphin/os/OSError/OSSetErrorHandler.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 803CF918-803CF930 02CA38 0016+02 1/1 0/0 0/0 .data @13 */ -SECTION_DATA static u8 lit_13[22 + 2 /* padding */] = { - 0x20, - 0x69, - 0x6E, - 0x20, - 0x22, - 0x25, - 0x73, - 0x22, - 0x20, - 0x6F, - 0x6E, - 0x20, - 0x6C, - 0x69, - 0x6E, - 0x65, - 0x20, - 0x25, - 0x64, - 0x2E, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; - -/* 803CF930-803CF958 02CA50 0026+02 0/0 0/0 0/0 .data @14 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_14[38 + 2 /* padding */] = { - 0x0A, - 0x41, - 0x64, - 0x64, - 0x72, - 0x65, - 0x73, - 0x73, - 0x3A, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x42, - 0x61, - 0x63, - 0x6B, - 0x20, - 0x43, - 0x68, - 0x61, - 0x69, - 0x6E, - 0x20, - 0x20, - 0x20, - 0x20, - 0x4C, - 0x52, - 0x20, - 0x53, - 0x61, - 0x76, - 0x65, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -#pragma pop - -/* 803CF958-803CF974 02CA78 001C+00 0/0 0/0 0/0 .data @15 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_15[28] = { - 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x3A, 0x20, 0x20, 0x20, 0x30, 0x78, 0x25, 0x30, - 0x38, 0x78, 0x20, 0x20, 0x20, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x0A, 0x00, -}; -#pragma pop - -/* 803CF974-803CF994 02CA94 001D+03 0/1 0/0 0/0 .data @74 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_74[29 + 3 /* padding */] = { - 0x4E, - 0x6F, - 0x6E, - 0x2D, - 0x72, - 0x65, - 0x63, - 0x6F, - 0x76, - 0x65, - 0x72, - 0x61, - 0x62, - 0x6C, - 0x65, - 0x20, - 0x45, - 0x78, - 0x63, - 0x65, - 0x70, - 0x74, - 0x69, - 0x6F, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803CF994-803CF9AC 02CAB4 0017+01 0/1 0/0 0/0 .data @75 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_75[23 + 1 /* padding */] = { - 0x55, - 0x6E, - 0x68, - 0x61, - 0x6E, - 0x64, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x45, - 0x78, - 0x63, - 0x65, - 0x70, - 0x74, - 0x69, - 0x6F, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x00, - /* padding */ - 0x00, -}; -#pragma pop - -/* 803CF9AC-803CF9E0 02CACC 0031+03 0/1 0/0 0/0 .data @77 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_77[49 + 3 /* padding */] = { - 0x0A, - 0x44, - 0x53, - 0x49, - 0x53, - 0x52, - 0x20, - 0x3D, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x78, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x44, - 0x41, - 0x52, - 0x20, - 0x20, - 0x3D, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x78, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803CF9E0-803CF9F0 02CB00 0010+00 0/1 0/0 0/0 .data @78 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_78[16] = { - 0x54, 0x42, 0x20, 0x3D, 0x20, 0x30, 0x78, 0x25, 0x30, 0x31, 0x36, 0x6C, 0x6C, 0x78, 0x0A, 0x00, -}; -#pragma pop - -/* 803CF9F0-803CFA50 02CB10 0060+00 0/1 0/0 0/0 .data @79 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_79[96] = { - 0x0A, 0x49, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x74, 0x20, - 0x30, 0x78, 0x25, 0x78, 0x20, 0x28, 0x72, 0x65, 0x61, 0x64, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, - 0x53, 0x52, 0x52, 0x30, 0x29, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6D, 0x70, 0x74, 0x65, 0x64, 0x20, - 0x74, 0x6F, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, - 0x64, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x30, 0x78, 0x25, 0x78, 0x20, 0x28, - 0x72, 0x65, 0x61, 0x64, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x44, 0x41, 0x52, 0x29, 0x0A, 0x00, -}; -#pragma pop - -/* 803CFA50-803CFA9C 02CB70 004C+00 0/0 0/0 0/0 .data @80 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_80[76] = { - 0x0A, 0x41, 0x74, 0x74, 0x65, 0x6D, 0x70, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x66, 0x65, - 0x74, 0x63, 0x68, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, - 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x20, 0x30, 0x78, 0x25, 0x78, 0x20, 0x28, 0x72, 0x65, 0x61, 0x64, 0x20, - 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x53, 0x52, 0x52, 0x30, 0x29, 0x0A, 0x00, -}; -#pragma pop - -/* 803CFA9C-803CFB00 02CBBC 0062+02 0/0 0/0 0/0 .data @81 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_81[98 + 2 /* padding */] = { - 0x0A, - 0x49, - 0x6E, - 0x73, - 0x74, - 0x72, - 0x75, - 0x63, - 0x74, - 0x69, - 0x6F, - 0x6E, - 0x20, - 0x61, - 0x74, - 0x20, - 0x30, - 0x78, - 0x25, - 0x78, - 0x20, - 0x28, - 0x72, - 0x65, - 0x61, - 0x64, - 0x20, - 0x66, - 0x72, - 0x6F, - 0x6D, - 0x20, - 0x53, - 0x52, - 0x52, - 0x30, - 0x29, - 0x20, - 0x61, - 0x74, - 0x74, - 0x65, - 0x6D, - 0x70, - 0x74, - 0x65, - 0x64, - 0x20, - 0x74, - 0x6F, - 0x20, - 0x61, - 0x63, - 0x63, - 0x65, - 0x73, - 0x73, - 0x20, - 0x75, - 0x6E, - 0x61, - 0x6C, - 0x69, - 0x67, - 0x6E, - 0x65, - 0x64, - 0x20, - 0x61, - 0x64, - 0x64, - 0x72, - 0x65, - 0x73, - 0x73, - 0x20, - 0x30, - 0x78, - 0x25, - 0x78, - 0x20, - 0x28, - 0x72, - 0x65, - 0x61, - 0x64, - 0x20, - 0x66, - 0x72, - 0x6F, - 0x6D, - 0x20, - 0x44, - 0x41, - 0x52, - 0x29, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -#pragma pop - -/* 803CFB00-803CFB60 02CC20 0060+00 0/0 0/0 0/0 .data @82 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_82[96] = { - 0x0A, 0x50, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, - 0x6F, 0x6E, 0x20, 0x3A, 0x20, 0x50, 0x6F, 0x73, 0x73, 0x69, 0x62, 0x6C, 0x65, 0x20, 0x69, 0x6C, - 0x6C, 0x65, 0x67, 0x61, 0x6C, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6F, - 0x6E, 0x2F, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x74, 0x20, 0x6F, - 0x72, 0x20, 0x61, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x30, 0x78, 0x25, 0x78, 0x20, 0x28, 0x72, - 0x65, 0x61, 0x64, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x53, 0x52, 0x52, 0x30, 0x29, 0x0A, 0x00, -}; -#pragma pop - -/* 803CFB60-803CFB80 02CC80 001F+01 0/0 0/0 0/0 .data @83 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_83[31 + 1 /* padding */] = { - 0x41, - 0x49, - 0x20, - 0x44, - 0x4D, - 0x41, - 0x20, - 0x41, - 0x64, - 0x64, - 0x72, - 0x65, - 0x73, - 0x73, - 0x20, - 0x3D, - 0x20, - 0x20, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x34, - 0x78, - 0x25, - 0x30, - 0x34, - 0x78, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; -#pragma pop - -/* 803CFB80-803CFBA0 02CCA0 001F+01 0/0 0/0 0/0 .data @84 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_84[31 + 1 /* padding */] = { - 0x41, - 0x52, - 0x41, - 0x4D, - 0x20, - 0x44, - 0x4D, - 0x41, - 0x20, - 0x41, - 0x64, - 0x64, - 0x72, - 0x65, - 0x73, - 0x73, - 0x20, - 0x3D, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x34, - 0x78, - 0x25, - 0x30, - 0x34, - 0x78, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; -#pragma pop - -/* 803CFBA0-803CFBBC 02CCC0 001B+01 0/0 0/0 0/0 .data @85 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_85[27 + 1 /* padding */] = { - 0x44, - 0x49, - 0x20, - 0x44, - 0x4D, - 0x41, - 0x20, - 0x41, - 0x64, - 0x64, - 0x72, - 0x65, - 0x73, - 0x73, - 0x20, - 0x3D, - 0x20, - 0x20, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x78, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; -#pragma pop - -/* 803CFBBC-803CFBF4 02CCDC 0035+03 0/1 0/0 0/0 .data @86 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_86[53 + 3 /* padding */] = { - 0x0A, - 0x4C, - 0x61, - 0x73, - 0x74, - 0x20, - 0x69, - 0x6E, - 0x74, - 0x65, - 0x72, - 0x72, - 0x75, - 0x70, - 0x74, - 0x20, - 0x28, - 0x25, - 0x64, - 0x29, - 0x3A, - 0x20, - 0x53, - 0x52, - 0x52, - 0x30, - 0x20, - 0x3D, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x38, - 0x78, - 0x20, - 0x20, - 0x54, - 0x42, - 0x20, - 0x3D, - 0x20, - 0x30, - 0x78, - 0x25, - 0x30, - 0x31, - 0x36, - 0x6C, - 0x6C, - 0x78, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803CFBF4-803CFC38 -00001 0040+04 1/1 0/0 0/0 .data @87 */ -SECTION_DATA static void* lit_87[16 + 1 /* padding */] = { - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x20C), - (void*)(((char*)__OSUnhandledException) + 0x224), - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x238), - (void*)(((char*)__OSUnhandledException) + 0x250), - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x2B4), - (void*)(((char*)__OSUnhandledException) + 0x268), - /* padding */ - NULL, -}; - -/* 804509A4-804509A8 000424 0002+02 1/1 0/0 0/0 .sdata @76 */ -SECTION_SDATA static u16 lit_76[1 + 1 /* padding */] = { - 0x0A00, - /* padding */ - 0x0000, -}; - -/* 8033C798-8033CA80 3370D8 02E8+00 1/0 2/2 0/0 .text __OSUnhandledException */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSUnhandledException(OSException exception, OSContext* context, u32 dsisr, u32 dar) { - nofralloc -#include "asm/dolphin/os/OSError/__OSUnhandledException.s" -} -#pragma pop diff --git a/libs/dolphin/os/OSExec.cpp b/libs/dolphin/os/OSExec.c similarity index 63% rename from libs/dolphin/os/OSExec.cpp rename to libs/dolphin/os/OSExec.c index 877c7257c5..e014d256dd 100644 --- a/libs/dolphin/os/OSExec.cpp +++ b/libs/dolphin/os/OSExec.c @@ -13,34 +13,34 @@ SECTION_INIT void memset(); SECTION_INIT void memcpy(); -extern "C" void OSReport(); -extern "C" void OSSetArenaLo(); -extern "C" void OSAllocFromArenaLo(); -extern "C" void ICInvalidateRange(); -extern "C" void ICFlashInvalidate(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSEnableInterrupts(); -extern "C" void __OSMaskInterrupts(); -extern "C" void __OSUnmaskInterrupts(); -extern "C" void OSGetSaveRegion(); -extern "C" void __OSDoHotReset(); -extern "C" void DVDInit(); -extern "C" void DVDReadAbsAsyncPrio(); -extern "C" void DVDCancelStreamAsync(); -extern "C" void DVDGetCommandBlockStatus(); -extern "C" void DVDSetAutoInvalidation(); -extern "C" void DVDResume(); -extern "C" void DVDGetCurrentDiskID(); -extern "C" void DVDCheckDisk(); -extern "C" void __DVDPrepareResetAsync(); -extern "C" void AISetStreamPlayState(); -extern "C" void AISetStreamVolLeft(); -extern "C" void AISetStreamVolRight(); -extern "C" void sprintf(); -extern "C" void strncmp(); -extern "C" void strcpy(); -extern "C" void strlen(); -extern "C" extern u8 __OSIsGcam[4]; +void OSReport(); +void OSSetArenaLo(); +void OSAllocFromArenaLo(); +void ICInvalidateRange(); +void ICFlashInvalidate(); +void OSDisableInterrupts(); +void OSEnableInterrupts(); +void __OSMaskInterrupts(); +void __OSUnmaskInterrupts(); +void OSGetSaveRegion(); +void __OSDoHotReset(); +void DVDInit(); +void DVDReadAbsAsyncPrio(); +void DVDCancelStreamAsync(); +void DVDGetCommandBlockStatus(); +void DVDSetAutoInvalidation(); +void DVDResume(); +void DVDGetCurrentDiskID(); +void DVDCheckDisk(); +void __DVDPrepareResetAsync(); +void AISetStreamPlayState(); +void AISetStreamVolLeft(); +void AISetStreamVolRight(); +void sprintf(); +void strncmp(); +void strcpy(); +void strlen(); +extern u8 __OSIsGcam[4]; // // Declarations: @@ -57,14 +57,28 @@ static asm s32 PackArgs(void* param_0, u32 param_1, void* param_2) { #pragma pop /* 8033CC08-8033CC44 337548 003C+00 1/1 0/0 0/0 .text Run */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off static asm void Run(void) { + // clang-format off nofralloc -#include "asm/dolphin/os/OSExec/Run.s" + + mflr r0 + stw r0, 4(r1) + stwu r1, -0x18(r1) + stw r31, 0x14(r1) + mr r31, r3 + bl ICFlashInvalidate + sync + isync + mtlr r31 + blr + + lwz r0, 0x1c(r1) + lwz r31, 0x14(r1) + addi r1, r1, 0x18 + mtlr r0 + blr + // clang-format on } -#pragma pop /* 8033CC44-8033CCB0 337584 006C+00 1/1 0/0 0/0 .text ReadDisc */ #pragma push @@ -78,17 +92,12 @@ static asm void ReadDisc(void* param_0, s32 param_1, s32 param_2) { /* ############################################################################################## */ /* 80451658-8045165C 000B58 0004+00 2/2 0/0 0/0 .sbss Prepared */ -static u8 Prepared[4]; +static BOOL Prepared; /* 8033CCB0-8033CCBC 3375F0 000C+00 1/1 0/0 0/0 .text Callback */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void Callback(void) { - nofralloc -#include "asm/dolphin/os/OSExec/Callback.s" +static void Callback(void) { + Prepared = TRUE; } -#pragma pop /* 8033CCBC-8033CCFC 3375FC 0040+00 0/0 1/1 0/0 .text __OSGetExecParams */ #pragma push @@ -102,7 +111,7 @@ asm void __OSGetExecParams(void* param_0) { /* ############################################################################################## */ /* 8045165C-80451660 000B5C 0004+00 2/2 0/0 0/0 .sbss apploaderPosition$69 */ -static u8 apploaderPosition[4]; +static s32 apploaderPosition; /* 8033CCFC-8033CDC0 33763C 00C4+00 1/1 0/0 0/0 .text GetApploaderPosition */ #pragma push @@ -116,25 +125,7 @@ static asm void GetApploaderPosition(void) { /* ############################################################################################## */ /* 803CFC38-803CFC48 02CD58 000B+05 1/1 0/0 0/0 .data @115 */ -SECTION_DATA static u8 lit_115[11 + 5 /* padding */] = { - 0x32, - 0x30, - 0x30, - 0x34, - 0x2F, - 0x30, - 0x32, - 0x2F, - 0x30, - 0x31, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_115[] = "2004/02/01"; /* 8033CDC0-8033D244 337700 0484+00 1/1 0/0 0/0 .text __OSBootDolSimple */ #pragma push @@ -148,17 +139,7 @@ asm void __OSBootDolSimple(u32 param_0, u32 param_1, void* param_2, void* param_ /* ############################################################################################## */ /* 804509A8-804509B0 000428 0003+05 1/1 0/0 0/0 .sdata @213 */ -SECTION_SDATA static u8 lit_213[3 + 5 /* padding */] = { - 0x25, - 0x64, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; +SECTION_SDATA static char lit_213[] = "%d"; /* 8033D244-8033D3E0 337B84 019C+00 0/0 1/1 0/0 .text __OSBootDol */ #pragma push diff --git a/libs/dolphin/os/OSFont.c b/libs/dolphin/os/OSFont.c new file mode 100644 index 0000000000..21df6608e0 --- /dev/null +++ b/libs/dolphin/os/OSFont.c @@ -0,0 +1,242 @@ +// +// Generated By: dol2asm +// Translation Unit: OSFont +// + +#include "dolphin/os/OSFont.h" +#include "dol2asm.h" +#include "dolphin/types.h" + +// +// Declarations: +// + +/* ############################################################################################## */ +/* 803CFC48-803CFDC8 02CD68 0180+00 1/1 0/0 0/0 .data HankakuToCode */ +SECTION_DATA static u8 HankakuToCode[384] = { + 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, 0x02, 0x13, + 0x02, 0x14, 0x02, 0x15, 0x02, 0x16, 0x02, 0x17, 0x02, 0x18, 0x02, 0x19, 0x02, 0x1A, 0x02, 0x1B, + 0x02, 0x1C, 0x02, 0x1D, 0x02, 0x1E, 0x02, 0x1F, 0x02, 0x20, 0x02, 0x21, 0x02, 0x22, 0x02, 0x23, + 0x02, 0x24, 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, 0x02, 0x2A, 0x02, 0x2B, + 0x02, 0x2C, 0x02, 0x2D, 0x02, 0x2E, 0x02, 0x2F, 0x02, 0x30, 0x02, 0x31, 0x02, 0x32, 0x02, 0x33, + 0x02, 0x34, 0x02, 0x35, 0x02, 0x36, 0x02, 0x37, 0x02, 0x38, 0x02, 0x39, 0x02, 0x3A, 0x02, 0x3B, + 0x02, 0x3C, 0x02, 0x3D, 0x02, 0x3E, 0x02, 0x3F, 0x02, 0x40, 0x02, 0x41, 0x02, 0x42, 0x02, 0x43, + 0x02, 0x44, 0x02, 0x45, 0x02, 0x46, 0x02, 0x47, 0x02, 0x48, 0x02, 0x49, 0x02, 0x4A, 0x02, 0x4B, + 0x02, 0x4C, 0x02, 0x4D, 0x02, 0x4E, 0x02, 0x4F, 0x02, 0x50, 0x02, 0x51, 0x02, 0x52, 0x02, 0x53, + 0x02, 0x54, 0x02, 0x55, 0x02, 0x56, 0x02, 0x57, 0x02, 0x58, 0x02, 0x59, 0x02, 0x5A, 0x02, 0x5B, + 0x02, 0x5C, 0x02, 0x5D, 0x02, 0x5E, 0x02, 0x5F, 0x02, 0x60, 0x02, 0x61, 0x02, 0x62, 0x02, 0x63, + 0x02, 0x64, 0x02, 0x65, 0x02, 0x66, 0x02, 0x67, 0x02, 0x68, 0x02, 0x69, 0x02, 0x6A, 0x02, 0x0C, + 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, + 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, + 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, + 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, + 0x02, 0x0C, 0x02, 0x6B, 0x02, 0x6C, 0x02, 0x6D, 0x02, 0x6E, 0x02, 0x6F, 0x02, 0x70, 0x02, 0x71, + 0x02, 0x72, 0x02, 0x73, 0x02, 0x74, 0x02, 0x75, 0x02, 0x76, 0x02, 0x77, 0x02, 0x78, 0x02, 0x79, + 0x02, 0x7A, 0x02, 0x7B, 0x02, 0x7C, 0x02, 0x7D, 0x02, 0x7E, 0x02, 0x7F, 0x02, 0x80, 0x02, 0x81, + 0x02, 0x82, 0x02, 0x83, 0x02, 0x84, 0x02, 0x85, 0x02, 0x86, 0x02, 0x87, 0x02, 0x88, 0x02, 0x89, + 0x02, 0x8A, 0x02, 0x8B, 0x02, 0x8C, 0x02, 0x8D, 0x02, 0x8E, 0x02, 0x8F, 0x02, 0x90, 0x02, 0x91, + 0x02, 0x92, 0x02, 0x93, 0x02, 0x94, 0x02, 0x95, 0x02, 0x96, 0x02, 0x97, 0x02, 0x98, 0x02, 0x99, + 0x02, 0x9A, 0x02, 0x9B, 0x02, 0x9C, 0x02, 0x9D, 0x02, 0x9E, 0x02, 0x9F, 0x02, 0xA0, 0x02, 0xA1, + 0x02, 0xA2, 0x02, 0xA3, 0x02, 0xA4, 0x02, 0xA5, 0x02, 0xA6, 0x02, 0xA7, 0x02, 0xA8, 0x02, 0xA9, +}; + +/* 803CFDC8-803D0758 02CEE8 098A+06 1/1 0/0 0/0 .data Zenkaku2Code */ +SECTION_DATA static u8 Zenkaku2Code[2442] = { + 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, + 0x00, 0x08, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x0B, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x0F, + 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, + 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0x1C, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x1F, + 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, + 0x00, 0x28, 0x00, 0x29, 0x00, 0x2A, 0x00, 0x2B, 0x00, 0x2C, 0x00, 0x2D, 0x00, 0x2E, 0x00, 0x2F, + 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, + 0x00, 0x38, 0x00, 0x39, 0x00, 0x3A, 0x00, 0x3B, 0x00, 0x3C, 0x00, 0x3D, 0x00, 0x3E, 0x00, 0x3F, + 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, + 0x00, 0x48, 0x00, 0x49, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x4D, 0x00, 0x4E, 0x00, 0x4F, + 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, + 0x00, 0x58, 0x00, 0x59, 0x00, 0x5A, 0x00, 0x5B, 0x00, 0x5C, 0x00, 0x5D, 0x00, 0x5E, 0x00, 0x5F, + 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x67, + 0x00, 0x68, 0x00, 0x69, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, + 0x00, 0x6D, 0x00, 0x6E, 0x00, 0x6F, 0x00, 0x70, 0x00, 0x71, 0x00, 0x72, 0x00, 0x73, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, + 0x00, 0x75, 0x00, 0x76, 0x00, 0x77, 0x00, 0x78, 0x00, 0x79, 0x00, 0x7A, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7B, 0x00, 0x7C, 0x00, 0x7D, 0x00, 0x7E, 0x00, 0x7F, 0x00, 0x80, 0x00, 0x81, + 0x00, 0x82, 0x00, 0x83, 0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00, 0x89, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, + 0x00, 0x8B, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x8F, 0x00, 0x90, 0x00, 0x91, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95, 0x00, 0x96, 0x00, 0x97, + 0x00, 0x98, 0x00, 0x99, 0x00, 0x9A, 0x00, 0x9B, 0x00, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x00, 0x9E, 0x00, 0x9F, 0x00, 0xA0, + 0x00, 0xA1, 0x00, 0xA2, 0x00, 0xA3, 0x00, 0xA4, 0x00, 0xA5, 0x00, 0xA6, 0x00, 0xA7, 0x00, 0xA8, + 0x00, 0xA9, 0x00, 0xAA, 0x00, 0xAB, 0x00, 0xAC, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xB0, + 0x00, 0xB1, 0x00, 0xB2, 0x00, 0xB3, 0x00, 0xB4, 0x00, 0xB5, 0x00, 0xB6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7, 0x00, 0xB8, 0x00, 0xB9, 0x00, 0xBA, + 0x00, 0xBB, 0x00, 0xBC, 0x00, 0xBD, 0x00, 0xBE, 0x00, 0xBF, 0x00, 0xC0, 0x00, 0xC1, 0x00, 0xC2, + 0x00, 0xC3, 0x00, 0xC4, 0x00, 0xC5, 0x00, 0xC6, 0x00, 0xC7, 0x00, 0xC8, 0x00, 0xC9, 0x00, 0xCA, + 0x00, 0xCB, 0x00, 0xCC, 0x00, 0xCD, 0x00, 0xCE, 0x00, 0xCF, 0x00, 0xD0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x00, 0xD2, 0x00, 0xD3, 0x00, 0xD4, 0x00, 0xD5, 0x00, 0xD6, + 0x00, 0xD7, 0x00, 0xD8, 0x00, 0xD9, 0x00, 0xDA, 0x00, 0xDB, 0x00, 0xDC, 0x00, 0xDD, 0x00, 0xDE, + 0x00, 0xDF, 0x00, 0xE0, 0x00, 0xE1, 0x00, 0xE2, 0x00, 0xE3, 0x00, 0xE4, 0x00, 0xE5, 0x00, 0xE6, + 0x00, 0xE7, 0x00, 0xE8, 0x00, 0xE9, 0x00, 0xEA, 0x00, 0xEB, 0x00, 0xEC, 0x00, 0xED, 0x00, 0xEE, + 0x00, 0xEF, 0x00, 0xF0, 0x00, 0xF1, 0x00, 0xF2, 0x00, 0xF3, 0x00, 0xF4, 0x00, 0xF5, 0x00, 0xF6, + 0x00, 0xF7, 0x00, 0xF8, 0x00, 0xF9, 0x00, 0xFA, 0x00, 0xFB, 0x00, 0xFC, 0x00, 0xFD, 0x00, 0xFE, + 0x00, 0xFF, 0x01, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x03, 0x01, 0x04, 0x01, 0x05, 0x01, 0x06, + 0x01, 0x07, 0x01, 0x08, 0x01, 0x09, 0x01, 0x0A, 0x01, 0x0B, 0x01, 0x0C, 0x01, 0x0D, 0x01, 0x0E, + 0x01, 0x0F, 0x01, 0x10, 0x01, 0x11, 0x01, 0x12, 0x01, 0x13, 0x01, 0x14, 0x01, 0x15, 0x01, 0x16, + 0x01, 0x17, 0x01, 0x18, 0x01, 0x19, 0x01, 0x1A, 0x01, 0x1B, 0x01, 0x1C, 0x01, 0x1D, 0x01, 0x1E, + 0x01, 0x1F, 0x01, 0x20, 0x01, 0x21, 0x01, 0x22, 0x01, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x24, 0x01, 0x25, 0x01, 0x26, 0x01, 0x27, 0x01, 0x28, 0x01, 0x29, 0x01, 0x2A, 0x01, 0x2B, + 0x01, 0x2C, 0x01, 0x2D, 0x01, 0x2E, 0x01, 0x2F, 0x01, 0x30, 0x01, 0x31, 0x01, 0x32, 0x01, 0x33, + 0x01, 0x34, 0x01, 0x35, 0x01, 0x36, 0x01, 0x37, 0x01, 0x38, 0x01, 0x39, 0x01, 0x3A, 0x01, 0x3B, + 0x01, 0x3C, 0x01, 0x3D, 0x01, 0x3E, 0x01, 0x3F, 0x01, 0x40, 0x01, 0x41, 0x01, 0x42, 0x01, 0x43, + 0x01, 0x44, 0x01, 0x45, 0x01, 0x46, 0x01, 0x47, 0x01, 0x48, 0x01, 0x49, 0x01, 0x4A, 0x01, 0x4B, + 0x01, 0x4C, 0x01, 0x4D, 0x01, 0x4E, 0x01, 0x4F, 0x01, 0x50, 0x01, 0x51, 0x01, 0x52, 0x01, 0x53, + 0x01, 0x54, 0x01, 0x55, 0x01, 0x56, 0x01, 0x57, 0x01, 0x58, 0x01, 0x59, 0x01, 0x5A, 0x01, 0x5B, + 0x01, 0x5C, 0x01, 0x5D, 0x01, 0x5E, 0x01, 0x5F, 0x01, 0x60, 0x01, 0x61, 0x01, 0x62, 0x01, 0x63, + 0x01, 0x64, 0x01, 0x65, 0x01, 0x66, 0x01, 0x67, 0x01, 0x68, 0x01, 0x69, 0x01, 0x6A, 0x01, 0x6B, + 0x01, 0x6C, 0x01, 0x6D, 0x01, 0x6E, 0x01, 0x6F, 0x01, 0x70, 0x01, 0x71, 0x01, 0x72, 0x01, 0x73, + 0x01, 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7A, 0x01, 0x7B, + 0x01, 0x7C, 0x01, 0x7D, 0x01, 0x7E, 0x01, 0x7F, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, + 0x01, 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8A, 0x01, 0x8B, + 0x01, 0x8C, 0x01, 0x8D, 0x01, 0x8E, 0x01, 0x8F, 0x01, 0x90, 0x01, 0x91, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x92, 0x01, 0x93, + 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, 0x01, 0x99, 0x01, 0x9A, 0x01, 0x9B, + 0x01, 0x9C, 0x01, 0x9D, 0x01, 0x9E, 0x01, 0x9F, 0x01, 0xA0, 0x01, 0xA1, 0x01, 0xA2, 0x01, 0xA3, + 0x01, 0xA4, 0x01, 0xA5, 0x01, 0xA6, 0x01, 0xA7, 0x01, 0xA8, 0x01, 0xA9, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xAA, 0x01, 0xAB, 0x01, 0xAC, 0x01, 0xAD, + 0x01, 0xAE, 0x01, 0xAF, 0x01, 0xB0, 0x01, 0xB1, 0x01, 0xB2, 0x01, 0xB3, 0x01, 0xB4, 0x01, 0xB5, + 0x01, 0xB6, 0x01, 0xB7, 0x01, 0xB8, 0x01, 0xB9, 0x01, 0xBA, 0x01, 0xBB, 0x01, 0xBC, 0x01, 0xBD, + 0x01, 0xBE, 0x01, 0xBF, 0x01, 0xC0, 0x01, 0xC1, 0x01, 0xC2, 0x01, 0xC3, 0x01, 0xC4, 0x01, 0xC5, + 0x01, 0xC6, 0x01, 0xC7, 0x01, 0xC8, 0x01, 0xC9, 0x01, 0xCA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xCB, 0x01, 0xCC, 0x01, 0xCD, 0x01, 0xCE, + 0x01, 0xCF, 0x01, 0xD0, 0x01, 0xD1, 0x01, 0xD2, 0x01, 0xD3, 0x01, 0xD4, 0x01, 0xD5, 0x01, 0xD6, + 0x01, 0xD7, 0x01, 0xD8, 0x01, 0xD9, 0x01, 0xDA, 0x01, 0xDB, 0x01, 0xDC, 0x01, 0xDD, 0x01, 0xDE, + 0x01, 0xDF, 0x01, 0xE0, 0x01, 0xE1, 0x01, 0xE2, 0x01, 0xE3, 0x01, 0xE4, 0x01, 0xE5, 0x01, 0xE6, + 0x01, 0xE7, 0x01, 0xE8, 0x01, 0xE9, 0x01, 0xEA, 0x01, 0xEB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xEC, 0x01, 0xED, 0x01, 0xEE, 0x01, 0xEF, 0x01, 0xF0, 0x01, 0xF1, + 0x01, 0xF2, 0x01, 0xF3, 0x01, 0xF4, 0x01, 0xF5, 0x01, 0xF6, 0x01, 0xF7, 0x01, 0xF8, 0x01, 0xF9, + 0x01, 0xFA, 0x01, 0xFB, 0x01, 0xFC, 0x01, 0xFD, 0x01, 0xFE, 0x01, 0xFF, 0x02, 0x00, 0x02, 0x01, + 0x02, 0x02, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x02, 0x06, 0x02, 0x07, 0x02, 0x08, 0x02, 0x09, + 0x02, 0x0A, 0x02, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0C, + 0x02, 0x0D, 0x02, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, 0x02, 0x13, 0x02, 0x14, + 0x02, 0x15, 0x02, 0x16, 0x02, 0x17, 0x02, 0x18, 0x02, 0x19, 0x02, 0x1A, 0x02, 0x1B, 0x02, 0x1C, + 0x02, 0x1D, 0x02, 0x1E, 0x02, 0x1F, 0x02, 0x20, 0x02, 0x21, 0x02, 0x22, 0x02, 0x23, 0x02, 0x24, + 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, 0x02, 0x2A, 0x02, 0x2B, 0x02, 0x2C, + 0x02, 0x2D, 0x02, 0x2E, 0x02, 0x2F, 0x02, 0x30, 0x02, 0x31, 0x02, 0x32, 0x02, 0x33, 0x02, 0x34, + 0x02, 0x35, 0x02, 0x36, 0x02, 0x37, 0x02, 0x38, 0x02, 0x39, 0x02, 0x3A, 0x02, 0x3B, 0x02, 0x3C, + 0x02, 0x3D, 0x02, 0x3E, 0x02, 0x3F, 0x02, 0x40, 0x02, 0x41, 0x02, 0x42, 0x02, 0x43, 0x02, 0x44, + 0x02, 0x45, 0x02, 0x46, 0x02, 0x47, 0x02, 0x48, 0x02, 0x49, 0x02, 0x4A, 0x02, 0x4B, 0x02, 0x4C, + 0x02, 0x4D, 0x02, 0x4E, 0x02, 0x4F, 0x02, 0x50, 0x02, 0x51, 0x02, 0x52, 0x02, 0x53, 0x02, 0x54, + 0x02, 0x55, 0x02, 0x56, 0x02, 0x57, 0x02, 0x58, 0x02, 0x59, 0x02, 0x5A, 0x02, 0x5B, 0x02, 0x5C, + 0x02, 0x5D, 0x02, 0x5E, 0x02, 0x5F, 0x02, 0x60, 0x02, 0x61, 0x02, 0x62, 0x02, 0x63, 0x02, 0x64, + 0x02, 0x65, 0x02, 0x66, 0x02, 0x67, 0x02, 0x68, 0x02, 0x69, 0x02, 0x6A, 0x02, 0x6B, 0x02, 0x6C, + 0x02, 0x6D, 0x02, 0x6E, 0x02, 0x6F, 0x02, 0x70, 0x02, 0x71, 0x02, 0x72, 0x02, 0x73, 0x02, 0x74, + 0x02, 0x75, 0x02, 0x76, 0x02, 0x77, 0x02, 0x78, 0x02, 0x79, 0x02, 0x7A, 0x02, 0x7B, 0x02, 0x7C, + 0x02, 0x7D, 0x02, 0x7E, 0x02, 0x7F, 0x02, 0x80, 0x02, 0x81, 0x02, 0x82, 0x02, 0x83, 0x02, 0x84, + 0x02, 0x85, 0x02, 0x86, 0x02, 0x87, 0x02, 0x88, 0x02, 0x89, 0x02, 0x8A, 0x02, 0x8B, 0x02, 0x8C, + 0x02, 0x8D, 0x02, 0x8E, 0x02, 0x8F, 0x02, 0x90, 0x02, 0x91, 0x02, 0x92, 0x02, 0x93, 0x02, 0x94, + 0x02, 0x95, 0x02, 0x96, 0x02, 0x97, 0x02, 0x98, 0x02, 0x99, 0x02, 0x9A, 0x02, 0x9B, 0x02, 0x9C, + 0x02, 0x9D, 0x02, 0x9E, 0x02, 0x9F, 0x02, 0xA0, 0x02, 0xA1, 0x02, 0xA2, 0x02, 0xA3, 0x02, 0xA4, + 0x02, 0xA5, 0x02, 0xA6, 0x02, 0xA7, 0x02, 0xA8, 0x02, 0xA9, 0x02, 0xAA, 0x02, 0xAB, 0x02, 0xAC, + 0x02, 0xAD, 0x02, 0xAE, 0x02, 0xAF, 0x02, 0xB0, 0x02, 0xB1, 0x02, 0xB2, 0x02, 0xB3, 0x02, 0xB4, + 0x02, 0xB5, 0x02, 0xB6, 0x02, 0xB7, 0x02, 0xB8, 0x02, 0xB9, 0x02, 0xBA, 0x02, 0xBB, 0x02, 0xBC, + 0x02, 0xBD, 0x02, 0xBE, 0x02, 0xBF, 0x02, 0xC0, 0x02, 0xC1, 0x02, 0xC2, 0x02, 0xC3, 0x02, 0xC4, + 0x02, 0xC5, 0x02, 0xC6, 0x02, 0xC7, 0x02, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0xC9, 0x02, 0xCA, 0x02, 0xCB, 0x02, 0xCC, 0x02, 0xCD, 0x02, 0xCE, 0x02, 0xCF, 0x02, 0xD0, + 0x02, 0xD1, 0x02, 0xD2, 0x02, 0xD3, 0x02, 0xD4, 0x02, 0xD5, 0x02, 0xD6, 0x02, 0xD7, 0x02, 0xD8, + 0x02, 0xD9, 0x02, 0xDA, 0x02, 0xDB, 0x02, 0xDC, 0x02, 0xDD, 0x02, 0xDE, 0x02, 0xDF, 0x02, 0xE0, + 0x02, 0xE1, 0x02, 0xE2, 0x02, 0xE3, 0x02, 0xE4, 0x02, 0xE5, 0x02, 0xE6, 0x00, 0x00, 0x02, 0xE7, + 0x02, 0xE8, 0x02, 0xE9, 0x02, 0xEA, 0x02, 0xEB, 0x02, 0xEC, 0x02, 0xED, 0x02, 0xEE, 0x02, 0xEF, + 0x02, 0xF0, 0x02, 0xF1, 0x02, 0xF2, 0x02, 0xF3, 0x02, 0xF4, 0x02, 0xF5, 0x02, 0xF6, 0x02, 0xF7, + 0x02, 0xF8, 0x02, 0xF9, 0x02, 0xFA, 0x02, 0xFB, 0x02, 0xFC, 0x02, 0xFD, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFE, 0x02, 0xFF, + 0x03, 0x00, 0x03, 0x01, 0x03, 0x02, 0x03, 0x03, 0x03, 0x04, 0x03, 0x05, 0x03, 0x06, 0x03, 0x07, + 0x03, 0x08, 0x03, 0x09, 0x03, 0x0A, 0x03, 0x0B, 0x03, 0x0C, 0x03, 0x0D, 0x03, 0x0E, 0x03, 0x0F, + 0x03, 0x10, 0x03, 0x11, 0x03, 0x12, 0x03, 0x13, 0x03, 0x14, 0x03, 0x15, 0x03, 0x16, 0x03, 0x17, + 0x03, 0x18, 0x03, 0x19, 0x03, 0x1A, 0x03, 0x1B, 0x00, 0x00, +}; + +/* 8033D3E0-8033D554 337D20 0174+00 1/1 0/0 0/0 .text GetFontCode */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +static asm u32 GetFontCode(s16 param_0, u32 param_1) { + nofralloc +#include "asm/dolphin/os/OSFont/GetFontCode.s" +} +#pragma pop + +/* ############################################################################################## */ +/* 804509B0-804509B8 000430 0002+06 1/1 0/0 0/0 .sdata FontEncode */ +SECTION_SDATA static u16 FontEncode = 0xFFFF; + +/* 80451660-80451664 000B60 0004+00 1/1 0/0 0/0 .sbss FontDataAnsi */ +static u8 FontDataAnsi[4]; + +/* 80451664-80451668 000B64 0004+00 1/1 0/0 0/0 .sbss FontDataSjis */ +static u8 FontDataSjis[4]; + +/* 80451668-80451670 000B68 0004+04 1/1 0/0 0/0 .sbss ParseString */ +static void* ParseString; + +/* 8033D554-8033D5B8 337E94 0064+00 0/0 1/1 0/0 .text OSGetFontEncode */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm u16 OSGetFontEncode(void) { + nofralloc +#include "asm/dolphin/os/OSFont/OSGetFontEncode.s" +} +#pragma pop + +/* 8033D5B8-8033D6F4 337EF8 013C+00 1/1 0/0 0/0 .text ParseStringS */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +static asm char* ParseStringS(s16 param_0, char* param_1, void* param_2, u32* param_3, u32 param_4, + void* param_5) { + nofralloc +#include "asm/dolphin/os/OSFont/ParseStringS.s" +} +#pragma pop diff --git a/libs/dolphin/os/OSFont.cpp b/libs/dolphin/os/OSFont.cpp deleted file mode 100644 index 830e3fca6a..0000000000 --- a/libs/dolphin/os/OSFont.cpp +++ /dev/null @@ -1,2543 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: OSFont -// - -#include "dolphin/os/OSFont.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803CFC48-803CFDC8 02CD68 0180+00 1/1 0/0 0/0 .data HankakuToCode */ -SECTION_DATA static u8 HankakuToCode[384] = { - 0x02, 0x0C, 0x02, 0x0D, 0x02, 0x0E, 0x02, 0x0F, 0x02, 0x10, 0x02, 0x11, 0x02, 0x12, 0x02, 0x13, - 0x02, 0x14, 0x02, 0x15, 0x02, 0x16, 0x02, 0x17, 0x02, 0x18, 0x02, 0x19, 0x02, 0x1A, 0x02, 0x1B, - 0x02, 0x1C, 0x02, 0x1D, 0x02, 0x1E, 0x02, 0x1F, 0x02, 0x20, 0x02, 0x21, 0x02, 0x22, 0x02, 0x23, - 0x02, 0x24, 0x02, 0x25, 0x02, 0x26, 0x02, 0x27, 0x02, 0x28, 0x02, 0x29, 0x02, 0x2A, 0x02, 0x2B, - 0x02, 0x2C, 0x02, 0x2D, 0x02, 0x2E, 0x02, 0x2F, 0x02, 0x30, 0x02, 0x31, 0x02, 0x32, 0x02, 0x33, - 0x02, 0x34, 0x02, 0x35, 0x02, 0x36, 0x02, 0x37, 0x02, 0x38, 0x02, 0x39, 0x02, 0x3A, 0x02, 0x3B, - 0x02, 0x3C, 0x02, 0x3D, 0x02, 0x3E, 0x02, 0x3F, 0x02, 0x40, 0x02, 0x41, 0x02, 0x42, 0x02, 0x43, - 0x02, 0x44, 0x02, 0x45, 0x02, 0x46, 0x02, 0x47, 0x02, 0x48, 0x02, 0x49, 0x02, 0x4A, 0x02, 0x4B, - 0x02, 0x4C, 0x02, 0x4D, 0x02, 0x4E, 0x02, 0x4F, 0x02, 0x50, 0x02, 0x51, 0x02, 0x52, 0x02, 0x53, - 0x02, 0x54, 0x02, 0x55, 0x02, 0x56, 0x02, 0x57, 0x02, 0x58, 0x02, 0x59, 0x02, 0x5A, 0x02, 0x5B, - 0x02, 0x5C, 0x02, 0x5D, 0x02, 0x5E, 0x02, 0x5F, 0x02, 0x60, 0x02, 0x61, 0x02, 0x62, 0x02, 0x63, - 0x02, 0x64, 0x02, 0x65, 0x02, 0x66, 0x02, 0x67, 0x02, 0x68, 0x02, 0x69, 0x02, 0x6A, 0x02, 0x0C, - 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, - 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, - 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, - 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, 0x02, 0x0C, - 0x02, 0x0C, 0x02, 0x6B, 0x02, 0x6C, 0x02, 0x6D, 0x02, 0x6E, 0x02, 0x6F, 0x02, 0x70, 0x02, 0x71, - 0x02, 0x72, 0x02, 0x73, 0x02, 0x74, 0x02, 0x75, 0x02, 0x76, 0x02, 0x77, 0x02, 0x78, 0x02, 0x79, - 0x02, 0x7A, 0x02, 0x7B, 0x02, 0x7C, 0x02, 0x7D, 0x02, 0x7E, 0x02, 0x7F, 0x02, 0x80, 0x02, 0x81, - 0x02, 0x82, 0x02, 0x83, 0x02, 0x84, 0x02, 0x85, 0x02, 0x86, 0x02, 0x87, 0x02, 0x88, 0x02, 0x89, - 0x02, 0x8A, 0x02, 0x8B, 0x02, 0x8C, 0x02, 0x8D, 0x02, 0x8E, 0x02, 0x8F, 0x02, 0x90, 0x02, 0x91, - 0x02, 0x92, 0x02, 0x93, 0x02, 0x94, 0x02, 0x95, 0x02, 0x96, 0x02, 0x97, 0x02, 0x98, 0x02, 0x99, - 0x02, 0x9A, 0x02, 0x9B, 0x02, 0x9C, 0x02, 0x9D, 0x02, 0x9E, 0x02, 0x9F, 0x02, 0xA0, 0x02, 0xA1, - 0x02, 0xA2, 0x02, 0xA3, 0x02, 0xA4, 0x02, 0xA5, 0x02, 0xA6, 0x02, 0xA7, 0x02, 0xA8, 0x02, 0xA9, -}; - -/* 803CFDC8-803D0758 02CEE8 098A+06 1/1 0/0 0/0 .data Zenkaku2Code */ -SECTION_DATA static u8 Zenkaku2Code[2442 + 6 /* padding */] = { - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x02, - 0x00, - 0x03, - 0x00, - 0x04, - 0x00, - 0x05, - 0x00, - 0x06, - 0x00, - 0x07, - 0x00, - 0x08, - 0x00, - 0x09, - 0x00, - 0x0A, - 0x00, - 0x0B, - 0x00, - 0x0C, - 0x00, - 0x0D, - 0x00, - 0x0E, - 0x00, - 0x0F, - 0x00, - 0x10, - 0x00, - 0x11, - 0x00, - 0x12, - 0x00, - 0x13, - 0x00, - 0x14, - 0x00, - 0x15, - 0x00, - 0x16, - 0x00, - 0x17, - 0x00, - 0x18, - 0x00, - 0x19, - 0x00, - 0x1A, - 0x00, - 0x1B, - 0x00, - 0x1C, - 0x00, - 0x1D, - 0x00, - 0x1E, - 0x00, - 0x1F, - 0x00, - 0x20, - 0x00, - 0x21, - 0x00, - 0x22, - 0x00, - 0x23, - 0x00, - 0x24, - 0x00, - 0x25, - 0x00, - 0x26, - 0x00, - 0x27, - 0x00, - 0x28, - 0x00, - 0x29, - 0x00, - 0x2A, - 0x00, - 0x2B, - 0x00, - 0x2C, - 0x00, - 0x2D, - 0x00, - 0x2E, - 0x00, - 0x2F, - 0x00, - 0x30, - 0x00, - 0x31, - 0x00, - 0x32, - 0x00, - 0x33, - 0x00, - 0x34, - 0x00, - 0x35, - 0x00, - 0x36, - 0x00, - 0x37, - 0x00, - 0x38, - 0x00, - 0x39, - 0x00, - 0x3A, - 0x00, - 0x3B, - 0x00, - 0x3C, - 0x00, - 0x3D, - 0x00, - 0x3E, - 0x00, - 0x3F, - 0x00, - 0x40, - 0x00, - 0x41, - 0x00, - 0x42, - 0x00, - 0x43, - 0x00, - 0x44, - 0x00, - 0x45, - 0x00, - 0x46, - 0x00, - 0x47, - 0x00, - 0x48, - 0x00, - 0x49, - 0x00, - 0x4A, - 0x00, - 0x4B, - 0x00, - 0x4C, - 0x00, - 0x4D, - 0x00, - 0x4E, - 0x00, - 0x4F, - 0x00, - 0x50, - 0x00, - 0x51, - 0x00, - 0x52, - 0x00, - 0x53, - 0x00, - 0x54, - 0x00, - 0x55, - 0x00, - 0x56, - 0x00, - 0x57, - 0x00, - 0x58, - 0x00, - 0x59, - 0x00, - 0x5A, - 0x00, - 0x5B, - 0x00, - 0x5C, - 0x00, - 0x5D, - 0x00, - 0x5E, - 0x00, - 0x5F, - 0x00, - 0x60, - 0x00, - 0x61, - 0x00, - 0x62, - 0x00, - 0x63, - 0x00, - 0x64, - 0x00, - 0x65, - 0x00, - 0x66, - 0x00, - 0x67, - 0x00, - 0x68, - 0x00, - 0x69, - 0x00, - 0x6A, - 0x00, - 0x6B, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x6C, - 0x00, - 0x6D, - 0x00, - 0x6E, - 0x00, - 0x6F, - 0x00, - 0x70, - 0x00, - 0x71, - 0x00, - 0x72, - 0x00, - 0x73, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x74, - 0x00, - 0x75, - 0x00, - 0x76, - 0x00, - 0x77, - 0x00, - 0x78, - 0x00, - 0x79, - 0x00, - 0x7A, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x7B, - 0x00, - 0x7C, - 0x00, - 0x7D, - 0x00, - 0x7E, - 0x00, - 0x7F, - 0x00, - 0x80, - 0x00, - 0x81, - 0x00, - 0x82, - 0x00, - 0x83, - 0x00, - 0x84, - 0x00, - 0x85, - 0x00, - 0x86, - 0x00, - 0x87, - 0x00, - 0x88, - 0x00, - 0x89, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x8A, - 0x00, - 0x8B, - 0x00, - 0x8C, - 0x00, - 0x8D, - 0x00, - 0x8E, - 0x00, - 0x8F, - 0x00, - 0x90, - 0x00, - 0x91, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x92, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x93, - 0x00, - 0x94, - 0x00, - 0x95, - 0x00, - 0x96, - 0x00, - 0x97, - 0x00, - 0x98, - 0x00, - 0x99, - 0x00, - 0x9A, - 0x00, - 0x9B, - 0x00, - 0x9C, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x9D, - 0x00, - 0x9E, - 0x00, - 0x9F, - 0x00, - 0xA0, - 0x00, - 0xA1, - 0x00, - 0xA2, - 0x00, - 0xA3, - 0x00, - 0xA4, - 0x00, - 0xA5, - 0x00, - 0xA6, - 0x00, - 0xA7, - 0x00, - 0xA8, - 0x00, - 0xA9, - 0x00, - 0xAA, - 0x00, - 0xAB, - 0x00, - 0xAC, - 0x00, - 0xAD, - 0x00, - 0xAE, - 0x00, - 0xAF, - 0x00, - 0xB0, - 0x00, - 0xB1, - 0x00, - 0xB2, - 0x00, - 0xB3, - 0x00, - 0xB4, - 0x00, - 0xB5, - 0x00, - 0xB6, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xB7, - 0x00, - 0xB8, - 0x00, - 0xB9, - 0x00, - 0xBA, - 0x00, - 0xBB, - 0x00, - 0xBC, - 0x00, - 0xBD, - 0x00, - 0xBE, - 0x00, - 0xBF, - 0x00, - 0xC0, - 0x00, - 0xC1, - 0x00, - 0xC2, - 0x00, - 0xC3, - 0x00, - 0xC4, - 0x00, - 0xC5, - 0x00, - 0xC6, - 0x00, - 0xC7, - 0x00, - 0xC8, - 0x00, - 0xC9, - 0x00, - 0xCA, - 0x00, - 0xCB, - 0x00, - 0xCC, - 0x00, - 0xCD, - 0x00, - 0xCE, - 0x00, - 0xCF, - 0x00, - 0xD0, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xD1, - 0x00, - 0xD2, - 0x00, - 0xD3, - 0x00, - 0xD4, - 0x00, - 0xD5, - 0x00, - 0xD6, - 0x00, - 0xD7, - 0x00, - 0xD8, - 0x00, - 0xD9, - 0x00, - 0xDA, - 0x00, - 0xDB, - 0x00, - 0xDC, - 0x00, - 0xDD, - 0x00, - 0xDE, - 0x00, - 0xDF, - 0x00, - 0xE0, - 0x00, - 0xE1, - 0x00, - 0xE2, - 0x00, - 0xE3, - 0x00, - 0xE4, - 0x00, - 0xE5, - 0x00, - 0xE6, - 0x00, - 0xE7, - 0x00, - 0xE8, - 0x00, - 0xE9, - 0x00, - 0xEA, - 0x00, - 0xEB, - 0x00, - 0xEC, - 0x00, - 0xED, - 0x00, - 0xEE, - 0x00, - 0xEF, - 0x00, - 0xF0, - 0x00, - 0xF1, - 0x00, - 0xF2, - 0x00, - 0xF3, - 0x00, - 0xF4, - 0x00, - 0xF5, - 0x00, - 0xF6, - 0x00, - 0xF7, - 0x00, - 0xF8, - 0x00, - 0xF9, - 0x00, - 0xFA, - 0x00, - 0xFB, - 0x00, - 0xFC, - 0x00, - 0xFD, - 0x00, - 0xFE, - 0x00, - 0xFF, - 0x01, - 0x00, - 0x01, - 0x01, - 0x01, - 0x02, - 0x01, - 0x03, - 0x01, - 0x04, - 0x01, - 0x05, - 0x01, - 0x06, - 0x01, - 0x07, - 0x01, - 0x08, - 0x01, - 0x09, - 0x01, - 0x0A, - 0x01, - 0x0B, - 0x01, - 0x0C, - 0x01, - 0x0D, - 0x01, - 0x0E, - 0x01, - 0x0F, - 0x01, - 0x10, - 0x01, - 0x11, - 0x01, - 0x12, - 0x01, - 0x13, - 0x01, - 0x14, - 0x01, - 0x15, - 0x01, - 0x16, - 0x01, - 0x17, - 0x01, - 0x18, - 0x01, - 0x19, - 0x01, - 0x1A, - 0x01, - 0x1B, - 0x01, - 0x1C, - 0x01, - 0x1D, - 0x01, - 0x1E, - 0x01, - 0x1F, - 0x01, - 0x20, - 0x01, - 0x21, - 0x01, - 0x22, - 0x01, - 0x23, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x24, - 0x01, - 0x25, - 0x01, - 0x26, - 0x01, - 0x27, - 0x01, - 0x28, - 0x01, - 0x29, - 0x01, - 0x2A, - 0x01, - 0x2B, - 0x01, - 0x2C, - 0x01, - 0x2D, - 0x01, - 0x2E, - 0x01, - 0x2F, - 0x01, - 0x30, - 0x01, - 0x31, - 0x01, - 0x32, - 0x01, - 0x33, - 0x01, - 0x34, - 0x01, - 0x35, - 0x01, - 0x36, - 0x01, - 0x37, - 0x01, - 0x38, - 0x01, - 0x39, - 0x01, - 0x3A, - 0x01, - 0x3B, - 0x01, - 0x3C, - 0x01, - 0x3D, - 0x01, - 0x3E, - 0x01, - 0x3F, - 0x01, - 0x40, - 0x01, - 0x41, - 0x01, - 0x42, - 0x01, - 0x43, - 0x01, - 0x44, - 0x01, - 0x45, - 0x01, - 0x46, - 0x01, - 0x47, - 0x01, - 0x48, - 0x01, - 0x49, - 0x01, - 0x4A, - 0x01, - 0x4B, - 0x01, - 0x4C, - 0x01, - 0x4D, - 0x01, - 0x4E, - 0x01, - 0x4F, - 0x01, - 0x50, - 0x01, - 0x51, - 0x01, - 0x52, - 0x01, - 0x53, - 0x01, - 0x54, - 0x01, - 0x55, - 0x01, - 0x56, - 0x01, - 0x57, - 0x01, - 0x58, - 0x01, - 0x59, - 0x01, - 0x5A, - 0x01, - 0x5B, - 0x01, - 0x5C, - 0x01, - 0x5D, - 0x01, - 0x5E, - 0x01, - 0x5F, - 0x01, - 0x60, - 0x01, - 0x61, - 0x01, - 0x62, - 0x01, - 0x63, - 0x01, - 0x64, - 0x01, - 0x65, - 0x01, - 0x66, - 0x01, - 0x67, - 0x01, - 0x68, - 0x01, - 0x69, - 0x01, - 0x6A, - 0x01, - 0x6B, - 0x01, - 0x6C, - 0x01, - 0x6D, - 0x01, - 0x6E, - 0x01, - 0x6F, - 0x01, - 0x70, - 0x01, - 0x71, - 0x01, - 0x72, - 0x01, - 0x73, - 0x01, - 0x74, - 0x01, - 0x75, - 0x01, - 0x76, - 0x01, - 0x77, - 0x01, - 0x78, - 0x01, - 0x79, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x7A, - 0x01, - 0x7B, - 0x01, - 0x7C, - 0x01, - 0x7D, - 0x01, - 0x7E, - 0x01, - 0x7F, - 0x01, - 0x80, - 0x01, - 0x81, - 0x01, - 0x82, - 0x01, - 0x83, - 0x01, - 0x84, - 0x01, - 0x85, - 0x01, - 0x86, - 0x01, - 0x87, - 0x01, - 0x88, - 0x01, - 0x89, - 0x01, - 0x8A, - 0x01, - 0x8B, - 0x01, - 0x8C, - 0x01, - 0x8D, - 0x01, - 0x8E, - 0x01, - 0x8F, - 0x01, - 0x90, - 0x01, - 0x91, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0x92, - 0x01, - 0x93, - 0x01, - 0x94, - 0x01, - 0x95, - 0x01, - 0x96, - 0x01, - 0x97, - 0x01, - 0x98, - 0x01, - 0x99, - 0x01, - 0x9A, - 0x01, - 0x9B, - 0x01, - 0x9C, - 0x01, - 0x9D, - 0x01, - 0x9E, - 0x01, - 0x9F, - 0x01, - 0xA0, - 0x01, - 0xA1, - 0x01, - 0xA2, - 0x01, - 0xA3, - 0x01, - 0xA4, - 0x01, - 0xA5, - 0x01, - 0xA6, - 0x01, - 0xA7, - 0x01, - 0xA8, - 0x01, - 0xA9, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0xAA, - 0x01, - 0xAB, - 0x01, - 0xAC, - 0x01, - 0xAD, - 0x01, - 0xAE, - 0x01, - 0xAF, - 0x01, - 0xB0, - 0x01, - 0xB1, - 0x01, - 0xB2, - 0x01, - 0xB3, - 0x01, - 0xB4, - 0x01, - 0xB5, - 0x01, - 0xB6, - 0x01, - 0xB7, - 0x01, - 0xB8, - 0x01, - 0xB9, - 0x01, - 0xBA, - 0x01, - 0xBB, - 0x01, - 0xBC, - 0x01, - 0xBD, - 0x01, - 0xBE, - 0x01, - 0xBF, - 0x01, - 0xC0, - 0x01, - 0xC1, - 0x01, - 0xC2, - 0x01, - 0xC3, - 0x01, - 0xC4, - 0x01, - 0xC5, - 0x01, - 0xC6, - 0x01, - 0xC7, - 0x01, - 0xC8, - 0x01, - 0xC9, - 0x01, - 0xCA, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0xCB, - 0x01, - 0xCC, - 0x01, - 0xCD, - 0x01, - 0xCE, - 0x01, - 0xCF, - 0x01, - 0xD0, - 0x01, - 0xD1, - 0x01, - 0xD2, - 0x01, - 0xD3, - 0x01, - 0xD4, - 0x01, - 0xD5, - 0x01, - 0xD6, - 0x01, - 0xD7, - 0x01, - 0xD8, - 0x01, - 0xD9, - 0x01, - 0xDA, - 0x01, - 0xDB, - 0x01, - 0xDC, - 0x01, - 0xDD, - 0x01, - 0xDE, - 0x01, - 0xDF, - 0x01, - 0xE0, - 0x01, - 0xE1, - 0x01, - 0xE2, - 0x01, - 0xE3, - 0x01, - 0xE4, - 0x01, - 0xE5, - 0x01, - 0xE6, - 0x01, - 0xE7, - 0x01, - 0xE8, - 0x01, - 0xE9, - 0x01, - 0xEA, - 0x01, - 0xEB, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0xEC, - 0x01, - 0xED, - 0x01, - 0xEE, - 0x01, - 0xEF, - 0x01, - 0xF0, - 0x01, - 0xF1, - 0x01, - 0xF2, - 0x01, - 0xF3, - 0x01, - 0xF4, - 0x01, - 0xF5, - 0x01, - 0xF6, - 0x01, - 0xF7, - 0x01, - 0xF8, - 0x01, - 0xF9, - 0x01, - 0xFA, - 0x01, - 0xFB, - 0x01, - 0xFC, - 0x01, - 0xFD, - 0x01, - 0xFE, - 0x01, - 0xFF, - 0x02, - 0x00, - 0x02, - 0x01, - 0x02, - 0x02, - 0x02, - 0x03, - 0x02, - 0x04, - 0x02, - 0x05, - 0x02, - 0x06, - 0x02, - 0x07, - 0x02, - 0x08, - 0x02, - 0x09, - 0x02, - 0x0A, - 0x02, - 0x0B, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x02, - 0x0C, - 0x02, - 0x0D, - 0x02, - 0x0E, - 0x02, - 0x0F, - 0x02, - 0x10, - 0x02, - 0x11, - 0x02, - 0x12, - 0x02, - 0x13, - 0x02, - 0x14, - 0x02, - 0x15, - 0x02, - 0x16, - 0x02, - 0x17, - 0x02, - 0x18, - 0x02, - 0x19, - 0x02, - 0x1A, - 0x02, - 0x1B, - 0x02, - 0x1C, - 0x02, - 0x1D, - 0x02, - 0x1E, - 0x02, - 0x1F, - 0x02, - 0x20, - 0x02, - 0x21, - 0x02, - 0x22, - 0x02, - 0x23, - 0x02, - 0x24, - 0x02, - 0x25, - 0x02, - 0x26, - 0x02, - 0x27, - 0x02, - 0x28, - 0x02, - 0x29, - 0x02, - 0x2A, - 0x02, - 0x2B, - 0x02, - 0x2C, - 0x02, - 0x2D, - 0x02, - 0x2E, - 0x02, - 0x2F, - 0x02, - 0x30, - 0x02, - 0x31, - 0x02, - 0x32, - 0x02, - 0x33, - 0x02, - 0x34, - 0x02, - 0x35, - 0x02, - 0x36, - 0x02, - 0x37, - 0x02, - 0x38, - 0x02, - 0x39, - 0x02, - 0x3A, - 0x02, - 0x3B, - 0x02, - 0x3C, - 0x02, - 0x3D, - 0x02, - 0x3E, - 0x02, - 0x3F, - 0x02, - 0x40, - 0x02, - 0x41, - 0x02, - 0x42, - 0x02, - 0x43, - 0x02, - 0x44, - 0x02, - 0x45, - 0x02, - 0x46, - 0x02, - 0x47, - 0x02, - 0x48, - 0x02, - 0x49, - 0x02, - 0x4A, - 0x02, - 0x4B, - 0x02, - 0x4C, - 0x02, - 0x4D, - 0x02, - 0x4E, - 0x02, - 0x4F, - 0x02, - 0x50, - 0x02, - 0x51, - 0x02, - 0x52, - 0x02, - 0x53, - 0x02, - 0x54, - 0x02, - 0x55, - 0x02, - 0x56, - 0x02, - 0x57, - 0x02, - 0x58, - 0x02, - 0x59, - 0x02, - 0x5A, - 0x02, - 0x5B, - 0x02, - 0x5C, - 0x02, - 0x5D, - 0x02, - 0x5E, - 0x02, - 0x5F, - 0x02, - 0x60, - 0x02, - 0x61, - 0x02, - 0x62, - 0x02, - 0x63, - 0x02, - 0x64, - 0x02, - 0x65, - 0x02, - 0x66, - 0x02, - 0x67, - 0x02, - 0x68, - 0x02, - 0x69, - 0x02, - 0x6A, - 0x02, - 0x6B, - 0x02, - 0x6C, - 0x02, - 0x6D, - 0x02, - 0x6E, - 0x02, - 0x6F, - 0x02, - 0x70, - 0x02, - 0x71, - 0x02, - 0x72, - 0x02, - 0x73, - 0x02, - 0x74, - 0x02, - 0x75, - 0x02, - 0x76, - 0x02, - 0x77, - 0x02, - 0x78, - 0x02, - 0x79, - 0x02, - 0x7A, - 0x02, - 0x7B, - 0x02, - 0x7C, - 0x02, - 0x7D, - 0x02, - 0x7E, - 0x02, - 0x7F, - 0x02, - 0x80, - 0x02, - 0x81, - 0x02, - 0x82, - 0x02, - 0x83, - 0x02, - 0x84, - 0x02, - 0x85, - 0x02, - 0x86, - 0x02, - 0x87, - 0x02, - 0x88, - 0x02, - 0x89, - 0x02, - 0x8A, - 0x02, - 0x8B, - 0x02, - 0x8C, - 0x02, - 0x8D, - 0x02, - 0x8E, - 0x02, - 0x8F, - 0x02, - 0x90, - 0x02, - 0x91, - 0x02, - 0x92, - 0x02, - 0x93, - 0x02, - 0x94, - 0x02, - 0x95, - 0x02, - 0x96, - 0x02, - 0x97, - 0x02, - 0x98, - 0x02, - 0x99, - 0x02, - 0x9A, - 0x02, - 0x9B, - 0x02, - 0x9C, - 0x02, - 0x9D, - 0x02, - 0x9E, - 0x02, - 0x9F, - 0x02, - 0xA0, - 0x02, - 0xA1, - 0x02, - 0xA2, - 0x02, - 0xA3, - 0x02, - 0xA4, - 0x02, - 0xA5, - 0x02, - 0xA6, - 0x02, - 0xA7, - 0x02, - 0xA8, - 0x02, - 0xA9, - 0x02, - 0xAA, - 0x02, - 0xAB, - 0x02, - 0xAC, - 0x02, - 0xAD, - 0x02, - 0xAE, - 0x02, - 0xAF, - 0x02, - 0xB0, - 0x02, - 0xB1, - 0x02, - 0xB2, - 0x02, - 0xB3, - 0x02, - 0xB4, - 0x02, - 0xB5, - 0x02, - 0xB6, - 0x02, - 0xB7, - 0x02, - 0xB8, - 0x02, - 0xB9, - 0x02, - 0xBA, - 0x02, - 0xBB, - 0x02, - 0xBC, - 0x02, - 0xBD, - 0x02, - 0xBE, - 0x02, - 0xBF, - 0x02, - 0xC0, - 0x02, - 0xC1, - 0x02, - 0xC2, - 0x02, - 0xC3, - 0x02, - 0xC4, - 0x02, - 0xC5, - 0x02, - 0xC6, - 0x02, - 0xC7, - 0x02, - 0xC8, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x02, - 0xC9, - 0x02, - 0xCA, - 0x02, - 0xCB, - 0x02, - 0xCC, - 0x02, - 0xCD, - 0x02, - 0xCE, - 0x02, - 0xCF, - 0x02, - 0xD0, - 0x02, - 0xD1, - 0x02, - 0xD2, - 0x02, - 0xD3, - 0x02, - 0xD4, - 0x02, - 0xD5, - 0x02, - 0xD6, - 0x02, - 0xD7, - 0x02, - 0xD8, - 0x02, - 0xD9, - 0x02, - 0xDA, - 0x02, - 0xDB, - 0x02, - 0xDC, - 0x02, - 0xDD, - 0x02, - 0xDE, - 0x02, - 0xDF, - 0x02, - 0xE0, - 0x02, - 0xE1, - 0x02, - 0xE2, - 0x02, - 0xE3, - 0x02, - 0xE4, - 0x02, - 0xE5, - 0x02, - 0xE6, - 0x00, - 0x00, - 0x02, - 0xE7, - 0x02, - 0xE8, - 0x02, - 0xE9, - 0x02, - 0xEA, - 0x02, - 0xEB, - 0x02, - 0xEC, - 0x02, - 0xED, - 0x02, - 0xEE, - 0x02, - 0xEF, - 0x02, - 0xF0, - 0x02, - 0xF1, - 0x02, - 0xF2, - 0x02, - 0xF3, - 0x02, - 0xF4, - 0x02, - 0xF5, - 0x02, - 0xF6, - 0x02, - 0xF7, - 0x02, - 0xF8, - 0x02, - 0xF9, - 0x02, - 0xFA, - 0x02, - 0xFB, - 0x02, - 0xFC, - 0x02, - 0xFD, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x02, - 0xFE, - 0x02, - 0xFF, - 0x03, - 0x00, - 0x03, - 0x01, - 0x03, - 0x02, - 0x03, - 0x03, - 0x03, - 0x04, - 0x03, - 0x05, - 0x03, - 0x06, - 0x03, - 0x07, - 0x03, - 0x08, - 0x03, - 0x09, - 0x03, - 0x0A, - 0x03, - 0x0B, - 0x03, - 0x0C, - 0x03, - 0x0D, - 0x03, - 0x0E, - 0x03, - 0x0F, - 0x03, - 0x10, - 0x03, - 0x11, - 0x03, - 0x12, - 0x03, - 0x13, - 0x03, - 0x14, - 0x03, - 0x15, - 0x03, - 0x16, - 0x03, - 0x17, - 0x03, - 0x18, - 0x03, - 0x19, - 0x03, - 0x1A, - 0x03, - 0x1B, - 0x00, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 8033D3E0-8033D554 337D20 0174+00 1/1 0/0 0/0 .text GetFontCode */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm u32 GetFontCode(s16 param_0, u32 param_1) { - nofralloc -#include "asm/dolphin/os/OSFont/GetFontCode.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 804509B0-804509B8 000430 0002+06 1/1 0/0 0/0 .sdata FontEncode */ -SECTION_SDATA static u16 FontEncode[1 + 3 /* padding */] = { - 0xFFFF, - /* padding */ - 0x0000, - 0x0000, - 0x0000, -}; - -/* 80451660-80451664 000B60 0004+00 1/1 0/0 0/0 .sbss FontDataAnsi */ -static u8 FontDataAnsi[4]; - -/* 80451664-80451668 000B64 0004+00 1/1 0/0 0/0 .sbss FontDataSjis */ -static u8 FontDataSjis[4]; - -/* 80451668-80451670 000B68 0004+04 1/1 0/0 0/0 .sbss ParseString */ -static u8 ParseString[4 + 4 /* padding */]; - -/* 8033D554-8033D5B8 337E94 0064+00 0/0 1/1 0/0 .text OSGetFontEncode */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u16 OSGetFontEncode(void) { - nofralloc -#include "asm/dolphin/os/OSFont/OSGetFontEncode.s" -} -#pragma pop - -/* 8033D5B8-8033D6F4 337EF8 013C+00 1/1 0/0 0/0 .text ParseStringS */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm char* ParseStringS(s16 param_0, char* param_1, void* param_2, u32* param_3, u32 param_4, void* param_5) { - nofralloc -#include "asm/dolphin/os/OSFont/ParseStringS.s" -} -#pragma pop diff --git a/libs/dolphin/os/OSInterrupt.cpp b/libs/dolphin/os/OSInterrupt.c similarity index 52% rename from libs/dolphin/os/OSInterrupt.cpp rename to libs/dolphin/os/OSInterrupt.c index 7af70988f5..e888111599 100644 --- a/libs/dolphin/os/OSInterrupt.cpp +++ b/libs/dolphin/os/OSInterrupt.c @@ -5,6 +5,7 @@ #include "dolphin/os/OSInterrupt.h" #include "dol2asm.h" +#include "dolphin/os/OS.h" #include "dolphin/types.h" // @@ -12,80 +13,89 @@ // SECTION_INIT void memset(); -extern "C" void __OSSetExceptionHandler(); -extern "C" void OSLoadContext(); -extern "C" void OSDisableScheduler(); -extern "C" void OSEnableScheduler(); -extern "C" void __OSReschedule(); -extern "C" void OSGetTime(); +void OSLoadContext(); +void __OSReschedule(); // // Declarations: // /* 8033D6F4-8033D700 338034 000C+00 2/2 200/200 5/5 .text OSDisableInterrupts */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off asm BOOL OSDisableInterrupts(void) { + // clang-format off nofralloc -#include "asm/dolphin/os/OSInterrupt/OSDisableInterrupts.s" -} -#pragma pop -/* 8033D700-8033D708 338040 0008+00 0/0 1/1 0/0 .text __RAS_OSDisableInterrupts_end */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __RAS_OSDisableInterrupts_end(void) { - nofralloc -#include "asm/dolphin/os/OSInterrupt/__RAS_OSDisableInterrupts_end.s" + entry __RAS_OSDisableInterrupts_begin + + mfmsr r3 + // Clear external interrupts bit + rlwinm r4, r3, 0, 17, 15 + mtmsr r4 + + entry __RAS_OSDisableInterrupts_end + + // Return old interrupt status + rlwinm r3, r3, 17, 31, 31 + blr + // clang-format on } -#pragma pop /* 8033D708-8033D71C 338048 0014+00 0/0 10/10 1/1 .text OSEnableInterrupts */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off asm BOOL OSEnableInterrupts(void) { + // clang-format off nofralloc -#include "asm/dolphin/os/OSInterrupt/OSEnableInterrupts.s" + + mfmsr r3 + // Set external interrupts bit + ori r4, r3, (1 << 15) + mtmsr r4 + + // Return old interrupt status + rlwinm r3, r3, 17, 31, 31 + blr + // clang-format on } -#pragma pop /* 8033D71C-8033D740 33805C 0024+00 2/2 197/197 6/6 .text OSRestoreInterrupts */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm BOOL OSRestoreInterrupts(BOOL enable) { +asm BOOL OSRestoreInterrupts(register BOOL status) { + // clang-format off nofralloc -#include "asm/dolphin/os/OSInterrupt/OSRestoreInterrupts.s" + + cmpwi status, 0 + mfmsr r4 + beq disable + + // Set external interrupts bit + ori r5, r4, (1 << 15) + b set_msr + +disable: + // Clear external interrupts bit + rlwinm r5, r4, 0, 17, 15 + +set_msr: + mtmsr r5 + // Return old interrupt status + rlwinm r3, r4, 17, 31, 31 + blr + // clang-format on } -#pragma pop /* ############################################################################################## */ /* 80451670-80451674 000B70 0004+00 4/4 0/0 0/0 .sbss InterruptHandlerTable */ -static u8 InterruptHandlerTable[4]; +static OSInterruptHandler* InterruptHandlerTable; /* 8033D740-8033D75C 338080 001C+00 0/0 12/12 0/0 .text __OSSetInterruptHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm OSInterruptHandler __OSSetInterruptHandler(OSInterrupt interrupt, OSInterruptHandler handler) { - nofralloc -#include "asm/dolphin/os/OSInterrupt/__OSSetInterruptHandler.s" +OSInterruptHandler __OSSetInterruptHandler(OSInterrupt type, OSInterruptHandler handler) { + OSInterruptHandler old = InterruptHandlerTable[type]; + InterruptHandlerTable[type] = handler; + return old; } -#pragma pop /* 8033D75C-8033D770 33809C 0014+00 0/0 1/1 0/0 .text __OSGetInterruptHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm OSInterruptHandler __OSGetInterruptHandler(s16 index) { - nofralloc -#include "asm/dolphin/os/OSInterrupt/__OSGetInterruptHandler.s" +OSInterruptHandler __OSGetInterruptHandler(OSInterrupt type) { + return InterruptHandlerTable[type]; } -#pragma pop /* 8033D770-8033D7E4 3380B0 0074+00 0/0 1/1 0/0 .text __OSInterruptInit */ #pragma push @@ -129,90 +139,59 @@ asm OSInterruptMask __OSUnmaskInterrupts(OSInterruptMask mask) { /* ############################################################################################## */ /* 803D0758-803D0788 02D878 002C+04 1/1 0/0 0/0 .data InterruptPrioTable */ -SECTION_DATA static u8 InterruptPrioTable[44 + 4 /* padding */] = { - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x40, - 0xF8, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00, - 0x00, - 0x00, - 0x80, - 0x00, - 0x00, - 0x30, - 0x00, - 0x00, - 0x00, - 0x00, - 0x20, - 0x03, - 0xFF, - 0x8C, - 0x00, - 0x04, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x40, - 0x00, - 0xFF, - 0xFF, - 0xFF, - 0xFF, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, +static u32 InterruptPrioTable[] = { + 0x00000100, 0x00000040, 0xF8000000, 0x00000200, 0x00000080, 0x00003000, + 0x00000020, 0x03FF8C00, 0x04000000, 0x00004000, 0xFFFFFFFF, }; -/* 80451674-80451678 000B74 0004+00 1/1 1/1 0/0 .sbss __OSLastInterruptSrr0 */ -extern u8 __OSLastInterruptSrr0[4]; -u8 __OSLastInterruptSrr0[4]; +/* 80451680-80451684 000B80 0004+00 1/1 1/1 0/0 .sbss __OSLastInterruptTime */ +extern OSTime __OSLastInterruptTime; +OSTime __OSLastInterruptTime; /* 80451678-80451680 000B78 0002+06 1/1 1/1 0/0 .sbss __OSLastInterrupt */ -extern u8 __OSLastInterrupt[2 + 6 /* padding */]; -u8 __OSLastInterrupt[2 + 6 /* padding */]; +extern s16 __OSLastInterrupt; +s16 __OSLastInterrupt; -/* 80451680-80451684 000B80 0004+00 1/1 1/1 0/0 .sbss __OSLastInterruptTime */ -extern u8 __OSLastInterruptTime[4]; -u8 __OSLastInterruptTime[4]; - -/* 80451684-80451688 000B84 0004+00 1/1 1/1 0/0 .sbss None */ -extern u8 data_80451684[4]; -u8 data_80451684[4]; +/* 80451674-80451678 000B74 0004+00 1/1 1/1 0/0 .sbss __OSLastInterruptSrr0 */ +extern u32 __OSLastInterruptSrr0; +u32 __OSLastInterruptSrr0; /* 8033DBCC-8033DF10 33850C 0344+00 1/1 0/0 0/0 .text __OSDispatchInterrupt */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void __OSDispatchInterrupt(OSInterrupt interrupt, struct OSContext* context) { +asm void __OSDispatchInterrupt(OSInterrupt interrupt, OSContext* context) { nofralloc #include "asm/dolphin/os/OSInterrupt/__OSDispatchInterrupt.s" } #pragma pop /* 8033DF10-8033DF60 338850 0050+00 1/1 0/0 0/0 .text ExternalInterruptHandler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void ExternalInterruptHandler(OSInterrupt interrupt, struct OSContext* context) { +static asm void ExternalInterruptHandler(register OSInterrupt type, register OSContext* context) { + // clang-format off nofralloc -#include "asm/dolphin/os/OSInterrupt/ExternalInterruptHandler.s" + + stw r0, context->gpr[0] + stw r1, context->gpr[1] + stw r2, context->gpr[2] + stmw r6, context->gpr[6] + + mfspr r0, GQR1 + stw r0, context->gqr[1] + mfspr r0, GQR2 + stw r0, context->gqr[2] + mfspr r0, GQR3 + stw r0, context->gqr[3] + mfspr r0, GQR4 + stw r0, context->gqr[4] + mfspr r0, GQR5 + stw r0, context->gqr[5] + mfspr r0, GQR6 + stw r0, context->gqr[6] + mfspr r0, GQR7 + stw r0, context->gqr[7] + + stwu r1, -8(r1) + b __OSDispatchInterrupt + // clang-format on } -#pragma pop diff --git a/libs/dolphin/os/OSLink.cpp b/libs/dolphin/os/OSLink.c similarity index 62% rename from libs/dolphin/os/OSLink.cpp rename to libs/dolphin/os/OSLink.c index b9e6f5a727..371d33dfd2 100644 --- a/libs/dolphin/os/OSLink.cpp +++ b/libs/dolphin/os/OSLink.c @@ -12,79 +12,28 @@ // SECTION_INIT void memset(); -extern "C" void OSReport(); -extern "C" void DCFlushRange(); -extern "C" void ICInvalidateRange(); +void OSReport(); +void DCFlushRange(); +void ICInvalidateRange(); // // Declarations: // /* 8033DF60-8033DF64 3388A0 0004+00 1/1 0/0 0/0 .text OSNotifyLink */ -static void OSNotifyLink(void) { - /* empty function */ -} +static void OSNotifyLink(void) {} /* 8033DF64-8033DF68 3388A4 0004+00 1/1 0/0 0/0 .text OSNotifyUnlink */ -static void OSNotifyUnlink(void) { - /* empty function */ -} +static void OSNotifyUnlink(void) {} /* 8033DF68-8033DF74 3388A8 000C+00 0/0 1/1 0/0 .text OSSetStringTable */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSSetStringTable(void* string_table) { - nofralloc -#include "asm/dolphin/os/OSLink/OSSetStringTable.s" +void OSSetStringTable(void* string_table) { + __OSStringTable = string_table; } -#pragma pop /* ############################################################################################## */ /* 803D0788-803D07B0 02D8A8 0025+03 1/1 0/0 0/0 .data @62 */ -SECTION_DATA static u8 lit_62[37 + 3 /* padding */] = { - 0x4F, - 0x53, - 0x4C, - 0x69, - 0x6E, - 0x6B, - 0x3A, - 0x20, - 0x75, - 0x6E, - 0x6B, - 0x6E, - 0x6F, - 0x77, - 0x6E, - 0x20, - 0x72, - 0x65, - 0x6C, - 0x6F, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6F, - 0x6E, - 0x20, - 0x74, - 0x79, - 0x70, - 0x65, - 0x20, - 0x25, - 0x33, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_62[] = "OSLink: unknown relocation type %3d\n"; /* 8033DF74-8033E230 3388B4 02BC+00 1/1 0/0 0/0 .text Relocate */ #pragma push @@ -128,49 +77,7 @@ asm BOOL OSLinkFixed(OSModuleInfo* module, u32 param_1) { /* ############################################################################################## */ /* 803D07B0-803D07D8 02D8D0 0027+01 1/1 0/0 0/0 .data @189 */ -SECTION_DATA static u8 lit_189[39 + 1 /* padding */] = { - 0x4F, - 0x53, - 0x55, - 0x6E, - 0x6C, - 0x69, - 0x6E, - 0x6B, - 0x3A, - 0x20, - 0x75, - 0x6E, - 0x6B, - 0x6E, - 0x6F, - 0x77, - 0x6E, - 0x20, - 0x72, - 0x65, - 0x6C, - 0x6F, - 0x63, - 0x61, - 0x74, - 0x69, - 0x6F, - 0x6E, - 0x20, - 0x74, - 0x79, - 0x70, - 0x65, - 0x20, - 0x25, - 0x33, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; +SECTION_DATA static char lit_189[] = "OSUnlink: unknown relocation type %3d\n"; /* 8033E570-8033E7A8 338EB0 0238+00 1/1 0/0 0/0 .text Undo */ #pragma push @@ -193,11 +100,8 @@ asm BOOL OSUnlink(OSModuleInfo* module) { #pragma pop /* 8033E97C-8033E994 3392BC 0018+00 0/0 1/1 0/0 .text __OSModuleInit */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSModuleInit(void) { - nofralloc -#include "asm/dolphin/os/OSLink/__OSModuleInit.s" +void __OSModuleInit(void) { + __OSModuleList.last = NULL; + __OSModuleList.first = NULL; + __OSStringTable = NULL; } -#pragma pop diff --git a/libs/dolphin/os/OSMemory.cpp b/libs/dolphin/os/OSMemory.c similarity index 53% rename from libs/dolphin/os/OSMemory.cpp rename to libs/dolphin/os/OSMemory.c index 193581d506..14b9398454 100644 --- a/libs/dolphin/os/OSMemory.cpp +++ b/libs/dolphin/os/OSMemory.c @@ -5,17 +5,18 @@ #include "dolphin/os/OSMemory.h" #include "dol2asm.h" +#include "dolphin/os/OSReset.h" #include "dolphin/types.h" // // External References: // -extern "C" void DCInvalidateRange(); -extern "C" void DCFlushRange(); -extern "C" void __OSUnhandledException(); -extern "C" void OSRegisterResetFunction(); -extern "C" extern u8 __OSErrorTable[68 + 12 /* padding */]; +void DCInvalidateRange(); +void DCFlushRange(); +void __OSUnhandledException(); +void OSRegisterResetFunction(); +extern u8 __OSErrorTable[68 + 12 /* padding */]; // // Declarations: @@ -52,42 +53,106 @@ asm void OSProtectRange(u32 channel, void* address, u32 nBytes, u32 control) { #pragma pop /* 8033EDD8-8033EE58 339718 0080+00 1/1 0/0 0/0 .text Config24MB */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off static asm void Config24MB(void) { + // clang-format off nofralloc -#include "asm/dolphin/os/OSMemory/Config24MB.s" + + li r7, 0 + lis r4, 0x0000 + addi r4, r4, 0x0002 + lis r3, 0x8000 + addi r3, r3, 0x01FF + lis r6, 0x0100 + addi r6, r6, 0x0002 + lis r5, 0x8100 + addi r5, r5, 0x00FF + isync + mtdbatu 0, r7 + mtdbatl 0, r4 + mtdbatu 0, r3 + isync + mtibatu 0, r7 + mtibatl 0, r4 + mtibatu 0, r3 + isync + mtdbatu 2, r7 + mtdbatl 2, r6 + mtdbatu 2, r5 + isync + mtibatu 2, r7 + mtibatl 2, r6 + mtibatu 2, r5 + isync + mfmsr r3 + ori r3, r3, 0x30 + mtspr 0x1b, r3 + mflr r3 + mtspr 0x1a, r3 + rfi + // clang-format on } -#pragma pop /* 8033EE58-8033EED8 339798 0080+00 1/1 0/0 0/0 .text Config48MB */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off static asm void Config48MB(void) { + // clang-format off nofralloc -#include "asm/dolphin/os/OSMemory/Config48MB.s" + + li r7, 0 + lis r4, 0x0000 + addi r4, r4, 0x0002 + lis r3, 0x8000 + addi r3, r3, 0x03FF + lis r6, 0x0200 + addi r6, r6, 0x0002 + lis r5, 0x8200 + addi r5, r5, 0x01FF + isync + mtdbatu 0, r7 + mtdbatl 0, r4 + mtdbatu 0, r3 + isync + mtibatu 0, r7 + mtibatl 0, r4 + mtibatu 0, r3 + isync + mtdbatu 2, r7 + mtdbatl 2, r6 + mtdbatu 2, r5 + isync + mtibatu 2, r7 + mtibatl 2, r6 + mtibatu 2, r5 + isync + mfmsr r3 + ori r3, r3, 0x30 + mtspr 0x1b, r3 + mflr r3 + mtspr 0x1a, r3 + rfi + // clang-format on } -#pragma pop /* 8033EED8-8033EEF0 339818 0018+00 1/1 0/0 0/0 .text RealMode */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void RealMode(void) { +static asm void RealMode(register void* config){ + // clang-format off nofralloc -#include "asm/dolphin/os/OSMemory/RealMode.s" + + clrlwi config, config, 2 + mtspr 0x1a, config + mfmsr config + rlwinm config, config, 0, 0x1c, 0x19 + mtspr 0x1b, config + rfi + // clang-format on } -#pragma pop /* ############################################################################################## */ /* 803D07D8-803D07E8 -00001 0010+00 1/1 0/0 0/0 .data ResetFunctionInfo */ -SECTION_DATA static void* ResetFunctionInfo[4] = { - (void*)OnReset, - (void*)0x0000007F, - (void*)NULL, - (void*)NULL, +static OSResetFunctionInfo ResetFunctionInfo = { + OnReset, + 0x7F, + NULL, + NULL, }; /* 8033EEF0-8033F008 339830 0118+00 0/0 1/1 0/0 .text __OSInitMemoryProtection */ diff --git a/libs/dolphin/os/OSMessage.cpp b/libs/dolphin/os/OSMessage.c similarity index 94% rename from libs/dolphin/os/OSMessage.cpp rename to libs/dolphin/os/OSMessage.c index 162fc8a489..024b6f3d02 100644 --- a/libs/dolphin/os/OSMessage.cpp +++ b/libs/dolphin/os/OSMessage.c @@ -11,8 +11,8 @@ // External References: // -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); +void OSDisableInterrupts(); +void OSRestoreInterrupts(); // // Declarations: diff --git a/libs/dolphin/os/OSMutex.cpp b/libs/dolphin/os/OSMutex.c similarity index 97% rename from libs/dolphin/os/OSMutex.cpp rename to libs/dolphin/os/OSMutex.c index a6126138d5..a6a8cb80b0 100644 --- a/libs/dolphin/os/OSMutex.cpp +++ b/libs/dolphin/os/OSMutex.c @@ -11,8 +11,8 @@ // External References: // -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); +void OSDisableInterrupts(); +void OSRestoreInterrupts(); // // Declarations: diff --git a/libs/dolphin/os/OSReboot.cpp b/libs/dolphin/os/OSReboot.c similarity index 58% rename from libs/dolphin/os/OSReboot.cpp rename to libs/dolphin/os/OSReboot.c index 6088530534..fb4c209232 100644 --- a/libs/dolphin/os/OSReboot.cpp +++ b/libs/dolphin/os/OSReboot.c @@ -11,12 +11,12 @@ // External References: // -extern "C" void OSSetArenaHi(); -extern "C" void OSSetArenaLo(); -extern "C" void OSSetCurrentContext(); -extern "C" void OSClearContext(); -extern "C" void __OSBootDol(); -extern "C" void OSDisableInterrupts(); +void OSSetArenaHi(); +void OSSetArenaLo(); +void OSSetCurrentContext(); +void OSClearContext(); +void __OSBootDol(); +void OSDisableInterrupts(); // // Declarations: @@ -34,27 +34,19 @@ asm void __OSReboot(u32 param_0, u32 param_1) { /* ############################################################################################## */ /* 80451688-8045168C 000B88 0004+00 2/2 0/0 0/0 .sbss SaveStart */ -static u8 SaveStart[4]; +static void* SaveStart; /* 8045168C-80451690 000B8C 0004+00 2/2 0/0 0/0 .sbss SaveEnd */ -static u8 SaveEnd[4]; +static void* SaveEnd; /* 8033F640-8033F64C 339F80 000C+00 0/0 1/1 0/0 .text OSSetSaveRegion */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSSetSaveRegion(void* start, void* end) { - nofralloc -#include "asm/dolphin/os/OSReboot/OSSetSaveRegion.s" +void OSSetSaveRegion(void* start, void* end) { + SaveStart = start; + SaveEnd = end; } -#pragma pop /* 8033F64C-8033F660 339F8C 0014+00 0/0 1/1 0/0 .text OSGetSaveRegion */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSGetSaveRegion(void* start, void* end) { - nofralloc -#include "asm/dolphin/os/OSReboot/OSGetSaveRegion.s" +void OSGetSaveRegion(void** start, void** end) { + *start = SaveStart; + *end = SaveEnd; } -#pragma pop diff --git a/libs/dolphin/os/OSReset.cpp b/libs/dolphin/os/OSReset.c similarity index 62% rename from libs/dolphin/os/OSReset.cpp rename to libs/dolphin/os/OSReset.c index af54cf94a2..f3b5332749 100644 --- a/libs/dolphin/os/OSReset.cpp +++ b/libs/dolphin/os/OSReset.c @@ -12,20 +12,20 @@ // SECTION_INIT void memset(); -extern "C" void OSReport(); -extern "C" void __OSStopAudioSystem(); -extern "C" void ICFlashInvalidate(); -extern "C" void LCDisable(); -extern "C" void OSDisableInterrupts(); -extern "C" void __OSReboot(); -extern "C" void __OSLockSram(); -extern "C" void __OSUnlockSram(); -extern "C" void __OSSyncSram(); -extern "C" void OSDisableScheduler(); -extern "C" void OSEnableScheduler(); -extern "C" void OSCancelThread(); -extern "C" void __PADDisableRecalibration(); -extern "C" extern u8 __OSRebootParams[28 + 4 /* padding */]; +void OSReport(); +void __OSStopAudioSystem(); +void ICFlashInvalidate(); +void LCDisable(); +void OSDisableInterrupts(); +void __OSReboot(); +void __OSLockSram(); +void __OSUnlockSram(); +void __OSSyncSram(); +void OSDisableScheduler(); +void OSEnableScheduler(); +void OSCancelThread(); +void __PADDisableRecalibration(); +extern u8 __OSRebootParams[28 + 4 /* padding */]; // // Declarations: @@ -56,14 +56,58 @@ asm BOOL __OSCallResetFunctions(s32 param_0) { #pragma pop /* 8033F78C-8033F7FC 33A0CC 0070+00 2/2 0/0 0/0 .text Reset */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void Reset(s32 param_0) { +static asm void Reset(register s32 param_0) { + // clang-format off nofralloc -#include "asm/dolphin/os/OSReset/Reset.s" + + b lbl_8033F7AC + +lbl_8033F790: + mfspr r8, 0x3f0 + ori r8, r8, 8 + mtspr 0x3f0, r8 + isync + sync + nop + b lbl_8033F7B0 + +lbl_8033F7AC: + b lbl_8033F7CC + +lbl_8033F7B0: + mftb r5, 0x10c + +lbl_8033F7B4: + mftb r6, 0x10c + subf r7, r5, r6 + cmplwi r7, 0x1124 + blt lbl_8033F7B4 + nop + b lbl_8033F7D0 + +lbl_8033F7CC: + b lbl_8033F7EC + +lbl_8033F7D0: + lis r8, 0xCC00 + ori r8, r8, 0x3000 + li r4, 3 + stw r4, 0x24(r8) + stw param_0, 0x24(r8) + nop + b lbl_8033F7F0 + +lbl_8033F7EC: + b lbl_8033F7F8 + +lbl_8033F7F0: + nop + b lbl_8033F7F0 + +lbl_8033F7F8: + b lbl_8033F790 + // clang-format on } -#pragma pop /* 8033F7FC-8033F864 33A13C 0068+00 1/1 0/0 0/0 .text KillThreads */ #pragma push @@ -87,89 +131,7 @@ asm void __OSDoHotReset(s32 param_0) { /* ############################################################################################## */ /* 803D07E8-803D0838 02D908 004E+02 1/1 0/0 0/0 .data @153 */ -SECTION_DATA static u8 lit_153[78 + 2 /* padding */] = { - 0x4F, - 0x53, - 0x52, - 0x65, - 0x73, - 0x65, - 0x74, - 0x53, - 0x79, - 0x73, - 0x74, - 0x65, - 0x6D, - 0x28, - 0x29, - 0x3A, - 0x20, - 0x59, - 0x6F, - 0x75, - 0x20, - 0x63, - 0x61, - 0x6E, - 0x27, - 0x74, - 0x20, - 0x73, - 0x70, - 0x65, - 0x63, - 0x69, - 0x66, - 0x79, - 0x20, - 0x54, - 0x52, - 0x55, - 0x45, - 0x20, - 0x74, - 0x6F, - 0x20, - 0x66, - 0x6F, - 0x72, - 0x63, - 0x65, - 0x4D, - 0x65, - 0x6E, - 0x75, - 0x20, - 0x69, - 0x66, - 0x20, - 0x79, - 0x6F, - 0x75, - 0x20, - 0x72, - 0x65, - 0x73, - 0x74, - 0x61, - 0x72, - 0x74, - 0x2E, - 0x20, - 0x49, - 0x67, - 0x6E, - 0x6F, - 0x72, - 0x65, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; +SECTION_DATA static char lit_153[] = "OSResetSystem(): You can't specify TRUE to forceMenu if you restart. Ignored\n"; /* 80451698-804516A0 000B98 0004+04 1/1 0/0 0/0 .sbss bootThisDol */ static u8 bootThisDol[4 + 4 /* padding */]; diff --git a/libs/dolphin/os/OSResetSW.cpp b/libs/dolphin/os/OSResetSW.c similarity index 88% rename from libs/dolphin/os/OSResetSW.cpp rename to libs/dolphin/os/OSResetSW.c index 00cd383eab..d6c7707ae6 100644 --- a/libs/dolphin/os/OSResetSW.cpp +++ b/libs/dolphin/os/OSResetSW.c @@ -11,13 +11,12 @@ // External References: // -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void __OSMaskInterrupts(); -extern "C" void __OSGetSystemTime(); -extern "C" void __div2i(); -extern "C" extern u8 __OSStartTime[4]; -extern "C" extern u8 data_80451634[4]; +void OSDisableInterrupts(); +void OSRestoreInterrupts(); +void __OSMaskInterrupts(); +void __OSGetSystemTime(); +void __div2i(); +extern u8 __OSStartTime[4]; // // Declarations: diff --git a/libs/dolphin/os/OSRtc.cpp b/libs/dolphin/os/OSRtc.c similarity index 93% rename from libs/dolphin/os/OSRtc.cpp rename to libs/dolphin/os/OSRtc.c index aa3e393e92..9b84faf09a 100644 --- a/libs/dolphin/os/OSRtc.cpp +++ b/libs/dolphin/os/OSRtc.c @@ -11,17 +11,17 @@ // External References: // -extern "C" void DCInvalidateRange(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void EXIImm(); -extern "C" void EXIImmEx(); -extern "C" void EXIDma(); -extern "C" void EXISync(); -extern "C" void EXISelect(); -extern "C" void EXIDeselect(); -extern "C" void EXILock(); -extern "C" void EXIUnlock(); +void DCInvalidateRange(); +void OSDisableInterrupts(); +void OSRestoreInterrupts(); +void EXIImm(); +void EXIImmEx(); +void EXIDma(); +void EXISync(); +void EXISelect(); +void EXIDeselect(); +void EXILock(); +void EXIUnlock(); // // Declarations: diff --git a/libs/dolphin/os/OSSync.cpp b/libs/dolphin/os/OSSync.c similarity index 55% rename from libs/dolphin/os/OSSync.cpp rename to libs/dolphin/os/OSSync.c index e0d3042d3f..2a38584f78 100644 --- a/libs/dolphin/os/OSSync.cpp +++ b/libs/dolphin/os/OSSync.c @@ -12,33 +12,30 @@ // SECTION_INIT void memcpy(); -extern "C" void DCFlushRangeNoSync(); -extern "C" void ICInvalidateRange(); +void DCFlushRangeNoSync(); +void ICInvalidateRange(); // // Declarations: // /* 80340A20-80340A3C 33B360 001C+00 1/1 0/0 0/0 .text SystemCallVector */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off static asm void SystemCallVector(void) { + // clang-format off nofralloc -#include "asm/dolphin/os/OSSync/SystemCallVector.s" -} -#pragma pop -// fake function? -/* 80340A3C-80340A40 33B37C 0004+00 1/1 0/0 0/0 .text __OSSystemCallVectorEnd */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSSystemCallVectorEnd(void) { - nofralloc -#include "asm/dolphin/os/OSSync/__OSSystemCallVectorEnd.s" + mfspr r9, 0x3F0 + ori r10, r9, 8 + mtspr 0x3F0, r10 + isync + sync + mtspr 0x3F0, r9 + rfi + + entry __OSSystemCallVectorEnd + nop + // clang-format on } -#pragma pop /* 80340A40-80340AA4 33B380 0064+00 0/0 1/1 0/0 .text __OSInitSystemCall */ #pragma push diff --git a/libs/dolphin/os/OSThread.c b/libs/dolphin/os/OSThread.c new file mode 100644 index 0000000000..8553c04032 --- /dev/null +++ b/libs/dolphin/os/OSThread.c @@ -0,0 +1,502 @@ +// +// Generated By: dol2asm +// Translation Unit: OSThread +// + +#include "dolphin/os/OSThread.h" +#include "dol2asm.h" +#include "dolphin/os/OSMutex.h" +#include "dolphin/types.h" + +// +// External References: +// + +void OSReport(); +void OSPanic(); +void OSGetStackPointer(); +void OSDisableInterrupts(); +void OSEnableInterrupts(); +void OSRestoreInterrupts(); +extern u8 __OSErrorTable[68 + 12 /* padding */]; +extern u32 __OSFpscrEnableBits; +void _epilog(); + +// +// Declarations: +// + +/* 80340AA4-80340AA8 33B3E4 0004+00 2/1 0/0 0/0 .text DefaultSwitchThreadCallback */ +static void DefaultSwitchThreadCallback(OSThread* from, OSThread* to) {} + +/* ############################################################################################## */ +/* 804509B8-804509BC -00001 0004+00 3/3 0/0 0/0 .sdata SwitchThreadCallback */ +SECTION_SDATA static OSSwitchThreadCallback SwitchThreadCallback = DefaultSwitchThreadCallback; + +/* 80340AA8-80340B1C 33B3E8 0074+00 0/0 1/1 0/0 .text OSSetSwitchThreadCallback */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm OSSwitchThreadCallback OSSetSwitchThreadCallback(OSSwitchThreadCallback func) { + nofralloc +#include "asm/dolphin/os/OSThread/OSSetSwitchThreadCallback.s" +} +#pragma pop + +/* ############################################################################################## */ +/* 8044BB78-8044BC78 078898 0100+00 6/6 0/0 0/0 .bss RunQueue */ +static OSThreadQueue RunQueue[32]; + +/* 8044BC78-8044BF90 078998 0318+00 0/0 0/0 0/0 .bss IdleThread */ +#pragma push +#pragma force_active on +static OSThread IdleThread; +#pragma pop + +/* 8044BF90-8044C2A8 078CB0 0318+00 0/1 0/0 0/0 .bss DefaultThread */ +#pragma push +#pragma force_active on +static OSThread DefaultThread; +#pragma pop + +/* 8044C2A8-8044C570 078FC8 02C8+00 0/2 0/0 0/0 .bss IdleContext */ +#pragma push +#pragma force_active on +static OSContext IdleContext; +#pragma pop + +/* 804516C0-804516C4 000BC0 0004+00 7/7 0/0 0/0 .sbss RunQueueBits */ +static u32 RunQueueBits; + +/* 804516C4-804516C8 000BC4 0004+00 11/11 0/0 0/0 .sbss RunQueueHint */ +static BOOL RunQueueHint; + +/* 804516C8-804516D0 000BC8 0004+04 4/4 0/0 0/0 .sbss Reschedule */ +static u8 Reschedule[4 + 4 /* padding */]; + +/* 80340B1C-80340C74 33B45C 0158+00 0/0 1/1 0/0 .text __OSThreadInit */ + +extern void* _stack_end; + +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void __OSThreadInit(void) { + nofralloc +#include "asm/dolphin/os/OSThread/__OSThreadInit.s" +} +#pragma pop + +/* 80340C74-80340C84 33B5B4 0010+00 1/1 9/9 0/0 .text OSInitThreadQueue */ +void OSInitThreadQueue(OSThreadQueue* queue) { + queue->tail = NULL; + queue->head = NULL; +} + +/* 80340C84-80340C90 33B5C4 000C+00 0/0 20/20 0/0 .text OSGetCurrentThread */ +OSThread* OSGetCurrentThread(void) { + return OS_CURRENT_THREAD; +} + +/* 80340C90-80340CC4 33B5D0 0034+00 0/0 1/1 0/0 .text OSIsThreadTerminated */ +BOOL OSIsThreadTerminated(OSThread* thread) { + return thread->state == OS_THREAD_STATE_DEAD || thread->state == OS_THREAD_STATE_UNINITIALIZED ? + TRUE : + FALSE; +} + +/* 80340CC4-80340D04 33B604 0040+00 0/0 8/8 0/0 .text OSDisableScheduler */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm s32 OSDisableScheduler(void) { + nofralloc +#include "asm/dolphin/os/OSThread/OSDisableScheduler.s" +} +#pragma pop + +/* 80340D04-80340D44 33B644 0040+00 0/0 10/10 0/0 .text OSEnableScheduler */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm s32 OSEnableScheduler(void) { + nofralloc +#include "asm/dolphin/os/OSThread/OSEnableScheduler.s" +} +#pragma pop + +/* 80340D44-80340DAC 33B684 0068+00 3/3 0/0 0/0 .text UnsetRun */ +static void UnsetRun(OSThread* thread) { + OSThreadQueue* queue; + OSThread* next; + OSThread* prev; + + prev = thread->link.prev; + queue = thread->queue; + next = thread->link.next; + + if (prev == NULL) { + queue->tail = next; + } else { + prev->link.next = next; + } + + if (next == NULL) { + queue->head = prev; + } else { + next->link.prev = prev; + } + + if (queue->head == NULL) { + RunQueueBits &= ~(1 << 31 - thread->effective_priority); + } + + thread->queue = NULL; +} + +/* 80340DAC-80340DE8 33B6EC 003C+00 4/4 2/2 0/0 .text __OSGetEffectivePriority */ +s32 __OSGetEffectivePriority(OSThread* thread) { + s32 prio = thread->base_priority; + + OSMutex* mutex; + for (mutex = thread->owned_mutexes.prev; mutex != NULL; mutex = mutex->link.prev) { + OSThread* mutexThread = mutex->queue.head; + if (mutexThread != NULL && mutexThread->effective_priority < prio) { + prio = mutexThread->effective_priority; + } + } + + return prio; +} + +/* 80340DE8-80340FA8 33B728 01C0+00 5/5 0/0 0/0 .text SetEffectivePriority */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +static asm void SetEffectivePriority(OSThread* thread, s32 priority) { + nofralloc +#include "asm/dolphin/os/OSThread/SetEffectivePriority.s" +} +#pragma pop + +/* 80340FA8-80340FF8 33B8E8 0050+00 0/0 1/1 0/0 .text __OSPromoteThread */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void __OSPromoteThread(OSThread* thread, s32 priority) { + nofralloc +#include "asm/dolphin/os/OSThread/__OSPromoteThread.s" +} +#pragma pop + +/* 80340FF8-80341220 33B938 0228+00 9/9 0/0 0/0 .text SelectThread */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +static asm void SelectThread(OSThread* thread) { + nofralloc +#include "asm/dolphin/os/OSThread/SelectThread.s" +} +#pragma pop + +/* 80341220-80341250 33BB60 0030+00 0/0 3/3 0/0 .text __OSReschedule */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void __OSReschedule(void) { + nofralloc +#include "asm/dolphin/os/OSThread/__OSReschedule.s" +} +#pragma pop + +/* 80341250-8034128C 33BB90 003C+00 0/0 2/2 0/0 .text OSYieldThread */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void OSYieldThread(void) { + nofralloc +#include "asm/dolphin/os/OSThread/OSYieldThread.s" +} +#pragma pop + +/* 8034128C-80341474 33BBCC 01E8+00 0/0 5/5 3/3 .text OSCreateThread */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm BOOL OSCreateThread(OSThread* thread, void* func, void* param, void* stackBase, u32 stackSize, + s32 priority, u16 attribute) { + nofralloc +#include "asm/dolphin/os/OSThread/OSCreateThread.s" +} +#pragma pop + +/* 80341474-80341558 33BDB4 00E4+00 1/1 1/1 0/0 .text OSExitThread */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void OSExitThread(void* exitValue) { + nofralloc +#include "asm/dolphin/os/OSThread/OSExitThread.s" +} +#pragma pop + +/* 80341558-80341714 33BE98 01BC+00 0/0 4/4 3/3 .text OSCancelThread */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void OSCancelThread(OSThread* thread) { + nofralloc +#include "asm/dolphin/os/OSThread/OSCancelThread.s" +} +#pragma pop + +/* 80341714-803417B4 33C054 00A0+00 0/0 2/2 0/0 .text OSDetachThread */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void OSDetachThread(OSThread* thread) { + nofralloc +#include "asm/dolphin/os/OSThread/OSDetachThread.s" +} +#pragma pop + +/* 803417B4-80341A3C 33C0F4 0288+00 0/0 13/13 3/3 .text OSResumeThread */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm s32 OSResumeThread(OSThread* thread) { + nofralloc +#include "asm/dolphin/os/OSThread/OSResumeThread.s" +} +#pragma pop + +/* 80341A3C-80341BAC 33C37C 0170+00 0/0 7/7 4/4 .text OSSuspendThread */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm s32 OSSuspendThread(OSThread* thread) { + nofralloc +#include "asm/dolphin/os/OSThread/OSSuspendThread.s" +} +#pragma pop + +/* 80341BAC-80341C98 33C4EC 00EC+00 0/0 12/12 0/0 .text OSSleepThread */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void OSSleepThread(OSThreadQueue* queue) { + nofralloc +#include "asm/dolphin/os/OSThread/OSSleepThread.s" +} +#pragma pop + +/* 80341C98-80341D9C 33C5D8 0104+00 3/3 13/13 0/0 .text OSWakeupThread */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm void OSWakeupThread(OSThreadQueue* queue) { + nofralloc +#include "asm/dolphin/os/OSThread/OSWakeupThread.s" +} +#pragma pop + +/* 80341D9C-80341E5C 33C6DC 00C0+00 0/0 1/1 0/0 .text OSSetThreadPriority */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm s32 OSSetThreadPriority(OSThread* thread, s32 priority) { + nofralloc +#include "asm/dolphin/os/OSThread/OSSetThreadPriority.s" +} +#pragma pop + +/* 80341E5C-80341E64 33C79C 0008+00 0/0 4/4 0/0 .text OSGetThreadPriority */ +s32 OSGetThreadPriority(OSThread* thread) { + return thread->base_priority; +} + +/* 80341E64-80341F00 33C7A4 009C+00 1/1 0/0 0/0 .text CheckThreadQueue */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +static asm s32 CheckThreadQueue(OSThread* thread) { + nofralloc +#include "asm/dolphin/os/OSThread/CheckThreadQueue.s" +} +#pragma pop + +/* ############################################################################################## */ +/* 803D0838-803D0898 02D958 005F+01 1/1 0/0 0/0 .data @831 */ +SECTION_DATA static char lit_831[] = "OSCheckActiveThreads: Failed RunQueue[prio].head != NULL && RunQueue[prio].tail != NULL in %d\n"; + +/* 803D0898-803D08A4 02D9B8 000B+01 0/1 0/0 0/0 .data @832 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_832[] = "OSThread.c"; +#pragma pop + +/* 803D08A4-803D0904 02D9C4 005F+01 0/1 0/0 0/0 .data @834 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_834[] = "OSCheckActiveThreads: Failed RunQueue[prio].head == NULL && RunQueue[prio].tail == NULL in %d\n"; +#pragma pop + +/* 803D0904-803D094C 02DA24 0046+02 0/1 0/0 0/0 .data @835 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_835[] = "OSCheckActiveThreads: Failed CheckThreadQueue(&RunQueue[prio]) in %d\n"; +#pragma pop + +/* 803D094C-803D09CC 02DA6C 007E+02 0/1 0/0 0/0 .data @836 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_836[] = "OSCheckActiveThreads: Failed __OSActiveThreadQueue.head == NULL || __OSActiveThreadQueue.head->linkActive.prev == NULL in %d\n"; +#pragma pop + +/* 803D09CC-803D0A4C 02DAEC 007E+02 0/1 0/0 0/0 .data @837 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_837[] = "OSCheckActiveThreads: Failed __OSActiveThreadQueue.tail == NULL || __OSActiveThreadQueue.tail->linkActive.next == NULL in %d\n"; +#pragma pop + +/* 803D0A4C-803D0AC8 02DB6C 007A+02 0/1 0/0 0/0 .data @838 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_838[] = "OSCheckActiveThreads: Failed thread->linkActive.next == NULL || thread == thread->linkActive.next->linkActive.prev in %d\n"; +#pragma pop + +/* 803D0AC8-803D0B44 02DBE8 007A+02 0/1 0/0 0/0 .data @839 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_839[] = "OSCheckActiveThreads: Failed thread->linkActive.prev == NULL || thread == thread->linkActive.prev->linkActive.next in %d\n"; +#pragma pop + +/* 803D0B44-803D0B98 02DC64 0051+03 0/1 0/0 0/0 .data @840 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_840[] = "OSCheckActiveThreads: Failed *(thread->stackEnd) == OS_THREAD_STACK_MAGIC in %d\n"; +#pragma pop + +/* 803D0B98-803D0C0C 02DCB8 0071+03 0/1 0/0 0/0 .data @841 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_841[] = "OSCheckActiveThreads: Failed OS_PRIORITY_MIN <= thread->priority && thread->priority <= OS_PRIORITY_MAX+1 in %d\n"; +#pragma pop + +/* 803D0C0C-803D0C48 02DD2C 0039+03 0/1 0/0 0/0 .data @842 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_842[] = "OSCheckActiveThreads: Failed 0 <= thread->suspend in %d\n"; +#pragma pop + +/* 803D0C48-803D0C94 02DD68 0049+03 0/1 0/0 0/0 .data @843 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_843[] = "OSCheckActiveThreads: Failed CheckThreadQueue(&thread->queueJoin) in %d\n"; +#pragma pop + +/* 803D0C94-803D0CE8 02DDB4 0051+03 0/1 0/0 0/0 .data @844 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_844[] = "OSCheckActiveThreads: Failed thread->queue == &RunQueue[thread->priority] in %d\n"; +#pragma pop + +/* 803D0CE8-803D0D3C 02DE08 0052+02 0/1 0/0 0/0 .data @845 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_845[] = "OSCheckActiveThreads: Failed IsMember(&RunQueue[thread->priority], thread) in %d\n"; +#pragma pop + +/* 803D0D3C-803D0D98 02DE5C 0059+03 0/1 0/0 0/0 .data @846 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_846[] = "OSCheckActiveThreads: Failed thread->priority == __OSGetEffectivePriority(thread) in %d\n"; +#pragma pop + +/* 803D0D98-803D0DDC 02DEB8 0042+02 0/1 0/0 0/0 .data @847 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_847[] = "OSCheckActiveThreads: Failed !IsSuspended(thread->suspend) in %d\n"; +#pragma pop + +/* 803D0DDC-803D0E18 02DEFC 003A+02 0/1 0/0 0/0 .data @848 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_848[] = "OSCheckActiveThreads: Failed thread->queue == NULL in %d\n"; +#pragma pop + +/* 803D0E18-803D0E54 02DF38 003A+02 0/1 0/0 0/0 .data @849 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_849[] = "OSCheckActiveThreads: Failed thread->queue != NULL in %d\n"; +#pragma pop + +/* 803D0E54-803D0E98 02DF74 0044+00 0/1 0/0 0/0 .data @850 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_850[] = "OSCheckActiveThreads: Failed CheckThreadQueue(thread->queue) in %d\n"; +#pragma pop + +/* 803D0E98-803D0EDC 02DFB8 0044+00 0/1 0/0 0/0 .data @851 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_851[] = "OSCheckActiveThreads: Failed IsMember(thread->queue, thread) in %d\n"; +#pragma pop + +/* 803D0EDC-803D0F18 02DFFC 003B+01 0/1 0/0 0/0 .data @852 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_852[] = "OSCheckActiveThreads: Failed thread->priority == 32 in %d\n"; +#pragma pop + +/* 803D0F18-803D0F58 02E038 003F+01 0/1 0/0 0/0 .data @853 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_853[] = "OSCheckActiveThreads: Failed !__OSCheckDeadLock(thread) in %d\n"; +#pragma pop + +/* 803D0F58-803D0FC0 02E078 0067+01 0/1 0/0 0/0 .data @854 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_854[] = "OSCheckActiveThreads: Failed thread->queueMutex.head == NULL && thread->queueMutex.tail == NULL in %d\n"; +#pragma pop + +/* 803D0FC0-803D1008 02E0E0 0045+03 0/1 0/0 0/0 .data @855 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_855[] = "OSCheckActiveThreads: Failed. unkown thread state (%d) of thread %p\n"; +#pragma pop + +/* 803D1008-803D1048 02E128 003D+03 0/1 0/0 0/0 .data @856 */ +#pragma push +#pragma force_active on +SECTION_DATA static char lit_856[] = "OSCheckActiveThreads: Failed __OSCheckMutexes(thread) in %d\n"; +#pragma pop + +/* 804509BC-804509C0 00043C 0001+03 1/1 0/0 0/0 .sdata @833 */ +SECTION_SDATA static char lit_833[] = ""; + +/* 80341F00-80342650 33C840 0750+00 0/0 1/1 0/0 .text OSCheckActiveThreads */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +asm s32 OSCheckActiveThreads(void) { + nofralloc +#include "asm/dolphin/os/OSThread/OSCheckActiveThreads.s" +} +#pragma pop + +/* 80342650-803426FC 33CF90 00AC+00 1/1 0/0 0/0 .text OSClearStack */ +#pragma push +#pragma optimization_level 0 +#pragma optimizewithasm off +static asm void OSClearStack(u32 value) { + nofralloc +#include "asm/dolphin/os/OSThread/OSClearStack.s" +} +#pragma pop + +/* ############################################################################################## */ +/* 804516D0-804516D8 000BD0 0008+00 0/0 2/1 0/0 .sbss None */ +extern u8 data_804516D0[8]; +u8 data_804516D0[8]; diff --git a/libs/dolphin/os/OSThread.cpp b/libs/dolphin/os/OSThread.cpp deleted file mode 100644 index 72965e7423..0000000000 --- a/libs/dolphin/os/OSThread.cpp +++ /dev/null @@ -1,2488 +0,0 @@ -// -// Generated By: dol2asm -// Translation Unit: OSThread -// - -#include "dolphin/os/OSThread.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// External References: -// - -extern "C" void OSReport(); -extern "C" void OSPanic(); -extern "C" void OSGetStackPointer(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSEnableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" extern u8 __OSErrorTable[68 + 12 /* padding */]; -extern "C" extern u32 __OSFpscrEnableBits; -extern "C" void _epilog(); - -// -// Declarations: -// - -/* 80340AA4-80340AA8 33B3E4 0004+00 2/1 0/0 0/0 .text DefaultSwitchThreadCallback */ -static void DefaultSwitchThreadCallback(OSThread* from, OSThread* to) { - /* empty function */ -} - -/* ############################################################################################## */ -/* 804509B8-804509BC -00001 0004+00 3/3 0/0 0/0 .sdata SwitchThreadCallback */ -SECTION_SDATA static void* SwitchThreadCallback = (void*)DefaultSwitchThreadCallback; - -/* 80340AA8-80340B1C 33B3E8 0074+00 0/0 1/1 0/0 .text OSSetSwitchThreadCallback */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm OSSwitchThreadCallback OSSetSwitchThreadCallback(OSSwitchThreadCallback func) { - nofralloc -#include "asm/dolphin/os/OSThread/OSSetSwitchThreadCallback.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 8044BB78-8044BC78 078898 0100+00 6/6 0/0 0/0 .bss RunQueue */ -static u8 RunQueue[256]; - -/* 8044BC78-8044BF90 078998 0318+00 0/0 0/0 0/0 .bss IdleThread */ -#pragma push -#pragma force_active on -static u8 IdleThread[792]; -#pragma pop - -/* 8044BF90-8044C2A8 078CB0 0318+00 0/1 0/0 0/0 .bss DefaultThread */ -#pragma push -#pragma force_active on -static u8 DefaultThread[792]; -#pragma pop - -/* 8044C2A8-8044C570 078FC8 02C8+00 0/2 0/0 0/0 .bss IdleContext */ -#pragma push -#pragma force_active on -static u8 IdleContext[712]; -#pragma pop - -/* 804516C0-804516C4 000BC0 0004+00 7/7 0/0 0/0 .sbss RunQueueBits */ -static u8 RunQueueBits[4]; - -/* 804516C4-804516C8 000BC4 0004+00 11/11 0/0 0/0 .sbss RunQueueHint */ -static u8 RunQueueHint[4]; - -/* 804516C8-804516D0 000BC8 0004+04 4/4 0/0 0/0 .sbss Reschedule */ -static u8 Reschedule[4 + 4 /* padding */]; - -/* 80340B1C-80340C74 33B45C 0158+00 0/0 1/1 0/0 .text __OSThreadInit */ - -extern void* _stack_end; - -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSThreadInit(void) { - nofralloc -#include "asm/dolphin/os/OSThread/__OSThreadInit.s" -} -#pragma pop - -/* 80340C74-80340C84 33B5B4 0010+00 1/1 9/9 0/0 .text OSInitThreadQueue */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSInitThreadQueue(OSThreadQueue* queue) { - nofralloc -#include "asm/dolphin/os/OSThread/OSInitThreadQueue.s" -} -#pragma pop - -/* 80340C84-80340C90 33B5C4 000C+00 0/0 20/20 0/0 .text OSGetCurrentThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm OSThread* OSGetCurrentThread(void) { - nofralloc -#include "asm/dolphin/os/OSThread/OSGetCurrentThread.s" -} -#pragma pop - -/* 80340C90-80340CC4 33B5D0 0034+00 0/0 1/1 0/0 .text OSIsThreadTerminated */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm BOOL OSIsThreadTerminated(OSThread* thread) { - nofralloc -#include "asm/dolphin/os/OSThread/OSIsThreadTerminated.s" -} -#pragma pop - -/* 80340CC4-80340D04 33B604 0040+00 0/0 8/8 0/0 .text OSDisableScheduler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 OSDisableScheduler(void) { - nofralloc -#include "asm/dolphin/os/OSThread/OSDisableScheduler.s" -} -#pragma pop - -/* 80340D04-80340D44 33B644 0040+00 0/0 10/10 0/0 .text OSEnableScheduler */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 OSEnableScheduler(void) { - nofralloc -#include "asm/dolphin/os/OSThread/OSEnableScheduler.s" -} -#pragma pop - -/* 80340D44-80340DAC 33B684 0068+00 3/3 0/0 0/0 .text UnsetRun */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void UnsetRun(OSThread* thread) { - nofralloc -#include "asm/dolphin/os/OSThread/UnsetRun.s" -} -#pragma pop - -/* 80340DAC-80340DE8 33B6EC 003C+00 4/4 2/2 0/0 .text __OSGetEffectivePriority */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 __OSGetEffectivePriority(OSThread* thread) { - nofralloc -#include "asm/dolphin/os/OSThread/__OSGetEffectivePriority.s" -} -#pragma pop - -/* 80340DE8-80340FA8 33B728 01C0+00 5/5 0/0 0/0 .text SetEffectivePriority */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void SetEffectivePriority(OSThread* thread, s32 priority) { - nofralloc -#include "asm/dolphin/os/OSThread/SetEffectivePriority.s" -} -#pragma pop - -/* 80340FA8-80340FF8 33B8E8 0050+00 0/0 1/1 0/0 .text __OSPromoteThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSPromoteThread(OSThread* thread, s32 priority) { - nofralloc -#include "asm/dolphin/os/OSThread/__OSPromoteThread.s" -} -#pragma pop - -/* 80340FF8-80341220 33B938 0228+00 9/9 0/0 0/0 .text SelectThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void SelectThread(OSThread* thread) { - nofralloc -#include "asm/dolphin/os/OSThread/SelectThread.s" -} -#pragma pop - -/* 80341220-80341250 33BB60 0030+00 0/0 3/3 0/0 .text __OSReschedule */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __OSReschedule(void) { - nofralloc -#include "asm/dolphin/os/OSThread/__OSReschedule.s" -} -#pragma pop - -/* 80341250-8034128C 33BB90 003C+00 0/0 2/2 0/0 .text OSYieldThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSYieldThread(void) { - nofralloc -#include "asm/dolphin/os/OSThread/OSYieldThread.s" -} -#pragma pop - -/* 8034128C-80341474 33BBCC 01E8+00 0/0 5/5 3/3 .text OSCreateThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm BOOL OSCreateThread(OSThread* thread, void* func, void* param, void* stackBase, - u32 stackSize, s32 priority, u16 attribute) { - nofralloc -#include "asm/dolphin/os/OSThread/OSCreateThread.s" -} -#pragma pop - -/* 80341474-80341558 33BDB4 00E4+00 1/1 1/1 0/0 .text OSExitThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSExitThread(void* exitValue) { - nofralloc -#include "asm/dolphin/os/OSThread/OSExitThread.s" -} -#pragma pop - -/* 80341558-80341714 33BE98 01BC+00 0/0 4/4 3/3 .text OSCancelThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSCancelThread(OSThread* thread) { - nofralloc -#include "asm/dolphin/os/OSThread/OSCancelThread.s" -} -#pragma pop - -/* 80341714-803417B4 33C054 00A0+00 0/0 2/2 0/0 .text OSDetachThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSDetachThread(OSThread* thread) { - nofralloc -#include "asm/dolphin/os/OSThread/OSDetachThread.s" -} -#pragma pop - -/* 803417B4-80341A3C 33C0F4 0288+00 0/0 13/13 3/3 .text OSResumeThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 OSResumeThread(OSThread* thread) { - nofralloc -#include "asm/dolphin/os/OSThread/OSResumeThread.s" -} -#pragma pop - -/* 80341A3C-80341BAC 33C37C 0170+00 0/0 7/7 4/4 .text OSSuspendThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 OSSuspendThread(OSThread* thread) { - nofralloc -#include "asm/dolphin/os/OSThread/OSSuspendThread.s" -} -#pragma pop - -/* 80341BAC-80341C98 33C4EC 00EC+00 0/0 12/12 0/0 .text OSSleepThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSSleepThread(OSThreadQueue* queue) { - nofralloc -#include "asm/dolphin/os/OSThread/OSSleepThread.s" -} -#pragma pop - -/* 80341C98-80341D9C 33C5D8 0104+00 3/3 13/13 0/0 .text OSWakeupThread */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void OSWakeupThread(OSThreadQueue* queue) { - nofralloc -#include "asm/dolphin/os/OSThread/OSWakeupThread.s" -} -#pragma pop - -/* 80341D9C-80341E5C 33C6DC 00C0+00 0/0 1/1 0/0 .text OSSetThreadPriority */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 OSSetThreadPriority(OSThread* thread, s32 priority) { - nofralloc -#include "asm/dolphin/os/OSThread/OSSetThreadPriority.s" -} -#pragma pop - -/* 80341E5C-80341E64 33C79C 0008+00 0/0 4/4 0/0 .text OSGetThreadPriority */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 OSGetThreadPriority(OSThread* thread) { - nofralloc -#include "asm/dolphin/os/OSThread/OSGetThreadPriority.s" -} -#pragma pop - -/* 80341E64-80341F00 33C7A4 009C+00 1/1 0/0 0/0 .text CheckThreadQueue */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm s32 CheckThreadQueue(OSThread* thread) { - nofralloc -#include "asm/dolphin/os/OSThread/CheckThreadQueue.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 803D0838-803D0898 02D958 005F+01 1/1 0/0 0/0 .data @831 */ -SECTION_DATA static u8 lit_831[95 + 1 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x52, - 0x75, - 0x6E, - 0x51, - 0x75, - 0x65, - 0x75, - 0x65, - 0x5B, - 0x70, - 0x72, - 0x69, - 0x6F, - 0x5D, - 0x2E, - 0x68, - 0x65, - 0x61, - 0x64, - 0x20, - 0x21, - 0x3D, - 0x20, - 0x4E, - 0x55, - 0x4C, - 0x4C, - 0x20, - 0x26, - 0x26, - 0x20, - 0x52, - 0x75, - 0x6E, - 0x51, - 0x75, - 0x65, - 0x75, - 0x65, - 0x5B, - 0x70, - 0x72, - 0x69, - 0x6F, - 0x5D, - 0x2E, - 0x74, - 0x61, - 0x69, - 0x6C, - 0x20, - 0x21, - 0x3D, - 0x20, - 0x4E, - 0x55, - 0x4C, - 0x4C, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; - -/* 803D0898-803D08A4 02D9B8 000B+01 0/1 0/0 0/0 .data @832 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_832[11 + 1 /* padding */] = { - 0x4F, - 0x53, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x2E, - 0x63, - 0x00, - /* padding */ - 0x00, -}; -#pragma pop - -/* 803D08A4-803D0904 02D9C4 005F+01 0/1 0/0 0/0 .data @834 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_834[95 + 1 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x52, - 0x75, - 0x6E, - 0x51, - 0x75, - 0x65, - 0x75, - 0x65, - 0x5B, - 0x70, - 0x72, - 0x69, - 0x6F, - 0x5D, - 0x2E, - 0x68, - 0x65, - 0x61, - 0x64, - 0x20, - 0x3D, - 0x3D, - 0x20, - 0x4E, - 0x55, - 0x4C, - 0x4C, - 0x20, - 0x26, - 0x26, - 0x20, - 0x52, - 0x75, - 0x6E, - 0x51, - 0x75, - 0x65, - 0x75, - 0x65, - 0x5B, - 0x70, - 0x72, - 0x69, - 0x6F, - 0x5D, - 0x2E, - 0x74, - 0x61, - 0x69, - 0x6C, - 0x20, - 0x3D, - 0x3D, - 0x20, - 0x4E, - 0x55, - 0x4C, - 0x4C, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; -#pragma pop - -/* 803D0904-803D094C 02DA24 0046+02 0/1 0/0 0/0 .data @835 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_835[70 + 2 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x51, - 0x75, - 0x65, - 0x75, - 0x65, - 0x28, - 0x26, - 0x52, - 0x75, - 0x6E, - 0x51, - 0x75, - 0x65, - 0x75, - 0x65, - 0x5B, - 0x70, - 0x72, - 0x69, - 0x6F, - 0x5D, - 0x29, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -#pragma pop - -/* 803D094C-803D09CC 02DA6C 007E+02 0/1 0/0 0/0 .data @836 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_836[126 + 2 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x5F, - 0x5F, - 0x4F, - 0x53, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x51, - 0x75, - 0x65, - 0x75, - 0x65, - 0x2E, - 0x68, - 0x65, - 0x61, - 0x64, - 0x20, - 0x3D, - 0x3D, - 0x20, - 0x4E, - 0x55, - 0x4C, - 0x4C, - 0x20, - 0x7C, - 0x7C, - 0x20, - 0x5F, - 0x5F, - 0x4F, - 0x53, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x51, - 0x75, - 0x65, - 0x75, - 0x65, - 0x2E, - 0x68, - 0x65, - 0x61, - 0x64, - 0x2D, - 0x3E, - 0x6C, - 0x69, - 0x6E, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x2E, - 0x70, - 0x72, - 0x65, - 0x76, - 0x20, - 0x3D, - 0x3D, - 0x20, - 0x4E, - 0x55, - 0x4C, - 0x4C, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -#pragma pop - -/* 803D09CC-803D0A4C 02DAEC 007E+02 0/1 0/0 0/0 .data @837 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_837[126 + 2 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x5F, - 0x5F, - 0x4F, - 0x53, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x51, - 0x75, - 0x65, - 0x75, - 0x65, - 0x2E, - 0x74, - 0x61, - 0x69, - 0x6C, - 0x20, - 0x3D, - 0x3D, - 0x20, - 0x4E, - 0x55, - 0x4C, - 0x4C, - 0x20, - 0x7C, - 0x7C, - 0x20, - 0x5F, - 0x5F, - 0x4F, - 0x53, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x51, - 0x75, - 0x65, - 0x75, - 0x65, - 0x2E, - 0x74, - 0x61, - 0x69, - 0x6C, - 0x2D, - 0x3E, - 0x6C, - 0x69, - 0x6E, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x2E, - 0x6E, - 0x65, - 0x78, - 0x74, - 0x20, - 0x3D, - 0x3D, - 0x20, - 0x4E, - 0x55, - 0x4C, - 0x4C, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -#pragma pop - -/* 803D0A4C-803D0AC8 02DB6C 007A+02 0/1 0/0 0/0 .data @838 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_838[122 + 2 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x2D, - 0x3E, - 0x6C, - 0x69, - 0x6E, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x2E, - 0x6E, - 0x65, - 0x78, - 0x74, - 0x20, - 0x3D, - 0x3D, - 0x20, - 0x4E, - 0x55, - 0x4C, - 0x4C, - 0x20, - 0x7C, - 0x7C, - 0x20, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x20, - 0x3D, - 0x3D, - 0x20, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x2D, - 0x3E, - 0x6C, - 0x69, - 0x6E, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x2E, - 0x6E, - 0x65, - 0x78, - 0x74, - 0x2D, - 0x3E, - 0x6C, - 0x69, - 0x6E, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x2E, - 0x70, - 0x72, - 0x65, - 0x76, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -#pragma pop - -/* 803D0AC8-803D0B44 02DBE8 007A+02 0/1 0/0 0/0 .data @839 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_839[122 + 2 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x2D, - 0x3E, - 0x6C, - 0x69, - 0x6E, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x2E, - 0x70, - 0x72, - 0x65, - 0x76, - 0x20, - 0x3D, - 0x3D, - 0x20, - 0x4E, - 0x55, - 0x4C, - 0x4C, - 0x20, - 0x7C, - 0x7C, - 0x20, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x20, - 0x3D, - 0x3D, - 0x20, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x2D, - 0x3E, - 0x6C, - 0x69, - 0x6E, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x2E, - 0x70, - 0x72, - 0x65, - 0x76, - 0x2D, - 0x3E, - 0x6C, - 0x69, - 0x6E, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x2E, - 0x6E, - 0x65, - 0x78, - 0x74, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -#pragma pop - -/* 803D0B44-803D0B98 02DC64 0051+03 0/1 0/0 0/0 .data @840 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_840[81 + 3 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x2A, - 0x28, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x2D, - 0x3E, - 0x73, - 0x74, - 0x61, - 0x63, - 0x6B, - 0x45, - 0x6E, - 0x64, - 0x29, - 0x20, - 0x3D, - 0x3D, - 0x20, - 0x4F, - 0x53, - 0x5F, - 0x54, - 0x48, - 0x52, - 0x45, - 0x41, - 0x44, - 0x5F, - 0x53, - 0x54, - 0x41, - 0x43, - 0x4B, - 0x5F, - 0x4D, - 0x41, - 0x47, - 0x49, - 0x43, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803D0B98-803D0C0C 02DCB8 0071+03 0/1 0/0 0/0 .data @841 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_841[113 + 3 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x4F, - 0x53, - 0x5F, - 0x50, - 0x52, - 0x49, - 0x4F, - 0x52, - 0x49, - 0x54, - 0x59, - 0x5F, - 0x4D, - 0x49, - 0x4E, - 0x20, - 0x3C, - 0x3D, - 0x20, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x2D, - 0x3E, - 0x70, - 0x72, - 0x69, - 0x6F, - 0x72, - 0x69, - 0x74, - 0x79, - 0x20, - 0x26, - 0x26, - 0x20, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x2D, - 0x3E, - 0x70, - 0x72, - 0x69, - 0x6F, - 0x72, - 0x69, - 0x74, - 0x79, - 0x20, - 0x3C, - 0x3D, - 0x20, - 0x4F, - 0x53, - 0x5F, - 0x50, - 0x52, - 0x49, - 0x4F, - 0x52, - 0x49, - 0x54, - 0x59, - 0x5F, - 0x4D, - 0x41, - 0x58, - 0x2B, - 0x31, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803D0C0C-803D0C48 02DD2C 0039+03 0/1 0/0 0/0 .data @842 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_842[57 + 3 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x30, - 0x20, - 0x3C, - 0x3D, - 0x20, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x2D, - 0x3E, - 0x73, - 0x75, - 0x73, - 0x70, - 0x65, - 0x6E, - 0x64, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803D0C48-803D0C94 02DD68 0049+03 0/1 0/0 0/0 .data @843 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_843[73 + 3 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x51, - 0x75, - 0x65, - 0x75, - 0x65, - 0x28, - 0x26, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x2D, - 0x3E, - 0x71, - 0x75, - 0x65, - 0x75, - 0x65, - 0x4A, - 0x6F, - 0x69, - 0x6E, - 0x29, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803D0C94-803D0CE8 02DDB4 0051+03 0/1 0/0 0/0 .data @844 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_844[81 + 3 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x2D, - 0x3E, - 0x71, - 0x75, - 0x65, - 0x75, - 0x65, - 0x20, - 0x3D, - 0x3D, - 0x20, - 0x26, - 0x52, - 0x75, - 0x6E, - 0x51, - 0x75, - 0x65, - 0x75, - 0x65, - 0x5B, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x2D, - 0x3E, - 0x70, - 0x72, - 0x69, - 0x6F, - 0x72, - 0x69, - 0x74, - 0x79, - 0x5D, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803D0CE8-803D0D3C 02DE08 0052+02 0/1 0/0 0/0 .data @845 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_845[82 + 2 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x49, - 0x73, - 0x4D, - 0x65, - 0x6D, - 0x62, - 0x65, - 0x72, - 0x28, - 0x26, - 0x52, - 0x75, - 0x6E, - 0x51, - 0x75, - 0x65, - 0x75, - 0x65, - 0x5B, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x2D, - 0x3E, - 0x70, - 0x72, - 0x69, - 0x6F, - 0x72, - 0x69, - 0x74, - 0x79, - 0x5D, - 0x2C, - 0x20, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x29, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -#pragma pop - -/* 803D0D3C-803D0D98 02DE5C 0059+03 0/1 0/0 0/0 .data @846 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_846[89 + 3 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x2D, - 0x3E, - 0x70, - 0x72, - 0x69, - 0x6F, - 0x72, - 0x69, - 0x74, - 0x79, - 0x20, - 0x3D, - 0x3D, - 0x20, - 0x5F, - 0x5F, - 0x4F, - 0x53, - 0x47, - 0x65, - 0x74, - 0x45, - 0x66, - 0x66, - 0x65, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x50, - 0x72, - 0x69, - 0x6F, - 0x72, - 0x69, - 0x74, - 0x79, - 0x28, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x29, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803D0D98-803D0DDC 02DEB8 0042+02 0/1 0/0 0/0 .data @847 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_847[66 + 2 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x21, - 0x49, - 0x73, - 0x53, - 0x75, - 0x73, - 0x70, - 0x65, - 0x6E, - 0x64, - 0x65, - 0x64, - 0x28, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x2D, - 0x3E, - 0x73, - 0x75, - 0x73, - 0x70, - 0x65, - 0x6E, - 0x64, - 0x29, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -#pragma pop - -/* 803D0DDC-803D0E18 02DEFC 003A+02 0/1 0/0 0/0 .data @848 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_848[58 + 2 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x2D, - 0x3E, - 0x71, - 0x75, - 0x65, - 0x75, - 0x65, - 0x20, - 0x3D, - 0x3D, - 0x20, - 0x4E, - 0x55, - 0x4C, - 0x4C, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -#pragma pop - -/* 803D0E18-803D0E54 02DF38 003A+02 0/1 0/0 0/0 .data @849 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_849[58 + 2 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x2D, - 0x3E, - 0x71, - 0x75, - 0x65, - 0x75, - 0x65, - 0x20, - 0x21, - 0x3D, - 0x20, - 0x4E, - 0x55, - 0x4C, - 0x4C, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, -}; -#pragma pop - -/* 803D0E54-803D0E98 02DF74 0044+00 0/1 0/0 0/0 .data @850 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_850[68] = { - 0x4F, 0x53, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, - 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x3A, 0x20, 0x46, 0x61, 0x69, 0x6C, 0x65, 0x64, - 0x20, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x51, 0x75, - 0x65, 0x75, 0x65, 0x28, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2D, 0x3E, 0x71, 0x75, - 0x65, 0x75, 0x65, 0x29, 0x20, 0x69, 0x6E, 0x20, 0x25, 0x64, 0x0A, 0x00, -}; -#pragma pop - -/* 803D0E98-803D0EDC 02DFB8 0044+00 0/1 0/0 0/0 .data @851 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_851[68] = { - 0x4F, 0x53, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x54, - 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x3A, 0x20, 0x46, 0x61, 0x69, 0x6C, 0x65, 0x64, - 0x20, 0x49, 0x73, 0x4D, 0x65, 0x6D, 0x62, 0x65, 0x72, 0x28, 0x74, 0x68, 0x72, 0x65, - 0x61, 0x64, 0x2D, 0x3E, 0x71, 0x75, 0x65, 0x75, 0x65, 0x2C, 0x20, 0x74, 0x68, 0x72, - 0x65, 0x61, 0x64, 0x29, 0x20, 0x69, 0x6E, 0x20, 0x25, 0x64, 0x0A, 0x00, -}; -#pragma pop - -/* 803D0EDC-803D0F18 02DFFC 003B+01 0/1 0/0 0/0 .data @852 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_852[59 + 1 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x2D, - 0x3E, - 0x70, - 0x72, - 0x69, - 0x6F, - 0x72, - 0x69, - 0x74, - 0x79, - 0x20, - 0x3D, - 0x3D, - 0x20, - 0x33, - 0x32, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; -#pragma pop - -/* 803D0F18-803D0F58 02E038 003F+01 0/1 0/0 0/0 .data @853 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_853[63 + 1 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x21, - 0x5F, - 0x5F, - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x44, - 0x65, - 0x61, - 0x64, - 0x4C, - 0x6F, - 0x63, - 0x6B, - 0x28, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x29, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; -#pragma pop - -/* 803D0F58-803D0FC0 02E078 0067+01 0/1 0/0 0/0 .data @854 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_854[103 + 1 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x2D, - 0x3E, - 0x71, - 0x75, - 0x65, - 0x75, - 0x65, - 0x4D, - 0x75, - 0x74, - 0x65, - 0x78, - 0x2E, - 0x68, - 0x65, - 0x61, - 0x64, - 0x20, - 0x3D, - 0x3D, - 0x20, - 0x4E, - 0x55, - 0x4C, - 0x4C, - 0x20, - 0x26, - 0x26, - 0x20, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x2D, - 0x3E, - 0x71, - 0x75, - 0x65, - 0x75, - 0x65, - 0x4D, - 0x75, - 0x74, - 0x65, - 0x78, - 0x2E, - 0x74, - 0x61, - 0x69, - 0x6C, - 0x20, - 0x3D, - 0x3D, - 0x20, - 0x4E, - 0x55, - 0x4C, - 0x4C, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; -#pragma pop - -/* 803D0FC0-803D1008 02E0E0 0045+03 0/1 0/0 0/0 .data @855 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_855[69 + 3 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x2E, - 0x20, - 0x75, - 0x6E, - 0x6B, - 0x6F, - 0x77, - 0x6E, - 0x20, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x20, - 0x73, - 0x74, - 0x61, - 0x74, - 0x65, - 0x20, - 0x28, - 0x25, - 0x64, - 0x29, - 0x20, - 0x6F, - 0x66, - 0x20, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x20, - 0x25, - 0x70, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 803D1008-803D1048 02E128 003D+03 0/1 0/0 0/0 .data @856 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 lit_856[61 + 3 /* padding */] = { - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x41, - 0x63, - 0x74, - 0x69, - 0x76, - 0x65, - 0x54, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x73, - 0x3A, - 0x20, - 0x46, - 0x61, - 0x69, - 0x6C, - 0x65, - 0x64, - 0x20, - 0x5F, - 0x5F, - 0x4F, - 0x53, - 0x43, - 0x68, - 0x65, - 0x63, - 0x6B, - 0x4D, - 0x75, - 0x74, - 0x65, - 0x78, - 0x65, - 0x73, - 0x28, - 0x74, - 0x68, - 0x72, - 0x65, - 0x61, - 0x64, - 0x29, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x25, - 0x64, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; -#pragma pop - -/* 804509BC-804509C0 00043C 0001+03 1/1 0/0 0/0 .sdata @833 */ -SECTION_SDATA static u8 lit_833[1 + 3 /* padding */] = { - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; - -/* 80341F00-80342650 33C840 0750+00 0/0 1/1 0/0 .text OSCheckActiveThreads */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 OSCheckActiveThreads(void) { - nofralloc -#include "asm/dolphin/os/OSThread/OSCheckActiveThreads.s" -} -#pragma pop - -/* 80342650-803426FC 33CF90 00AC+00 1/1 0/0 0/0 .text OSClearStack */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void OSClearStack(u32 value) { - nofralloc -#include "asm/dolphin/os/OSThread/OSClearStack.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 804516D0-804516D8 000BD0 0008+00 0/0 2/1 0/0 .sbss None */ -extern u8 data_804516D0[8]; -u8 data_804516D0[8]; diff --git a/libs/dolphin/os/OSTime.cpp b/libs/dolphin/os/OSTime.c similarity index 64% rename from libs/dolphin/os/OSTime.cpp rename to libs/dolphin/os/OSTime.c index 470cd3e677..0d7b86abe0 100644 --- a/libs/dolphin/os/OSTime.cpp +++ b/libs/dolphin/os/OSTime.c @@ -5,41 +5,56 @@ #include "dolphin/os/OSTime.h" #include "dol2asm.h" -#include "dolphin/types.h" +#include "dolphin/os/OSInterrupt.h" // // External References: // -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void __div2i(); -extern "C" void __mod2i(); +void __div2i(); +void __mod2i(); // // Declarations: // /* 803426FC-80342714 33D03C 0018+00 1/1 33/33 0/0 .text OSGetTime */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off asm OSTime OSGetTime(void) { - nofralloc -#include "asm/dolphin/os/OSTime/OSGetTime.s" -} -#pragma pop - -/* 80342714-8034271C -00001 0008+00 0/0 0/0 0/0 .text OSGetTick */ -asm OSTick OSGetTick(void) { // clang-format off nofralloc - mftb r3, 0x10c + + mftbu r3 + mftb r4, 0x10C + + mftbu r5 + cmpw r3, r5 + bne OSGetTime + + blr + // clang-format on +} + +/* 80342714-8034271C -00001 0008+00 0/0 0/0 0/0 .text OSGetTick */ +asm OSTick OSGetTick(void){ + // clang-format off + nofralloc + + mftb r3, 0x10C blr // clang-format on } /* 8034271C-80342780 33D05C 0064+00 0/0 16/16 0/0 .text __OSGetSystemTime */ +// matches with mwcc 1.2.5e +#ifdef NONMATCHING +OSTime __OSGetSystemTime(void) { + s32 pad; + const BOOL intr = OSDisableInterrupts(); + const OSTime time = OSGetTime() + OS_SYSTEM_TIME; + OSRestoreInterrupts(intr); + return time; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -48,6 +63,7 @@ asm OSTime __OSGetSystemTime(void) { #include "asm/dolphin/os/OSTime/__OSGetSystemTime.s" } #pragma pop +#endif /* 80342780-803427D8 33D0C0 0058+00 0/0 1/1 0/0 .text __OSTimeToSystemTime */ #pragma push @@ -61,17 +77,15 @@ asm OSTime __OSTimeToSystemTime(OSTime time) { /* ############################################################################################## */ /* 803D1048-803D1078 02E168 0030+00 1/1 0/0 0/0 .data YearDays */ -SECTION_DATA static u8 YearDays[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00, 0x5A, - 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0xB5, 0x00, 0x00, 0x00, 0xD4, - 0x00, 0x00, 0x00, 0xF3, 0x00, 0x00, 0x01, 0x11, 0x00, 0x00, 0x01, 0x30, 0x00, 0x00, 0x01, 0x4E, +// End of each month in standard year +static s32 YearDays[] = { + 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, }; /* 803D1078-803D10A8 02E198 0030+00 1/1 0/0 0/0 .data LeapYearDays */ -SECTION_DATA static u8 LeapYearDays[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x5B, - 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0xB6, 0x00, 0x00, 0x00, 0xD5, - 0x00, 0x00, 0x00, 0xF4, 0x00, 0x00, 0x01, 0x12, 0x00, 0x00, 0x01, 0x31, 0x00, 0x00, 0x01, 0x4F, +// End of each month in leap year +static s32 LeapYearDays[] = { + 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, }; /* 803427D8-80342974 33D118 019C+00 1/1 0/0 0/0 .text GetDates */ diff --git a/libs/dolphin/os/__ppc_eabi_init.cpp b/libs/dolphin/os/__ppc_eabi_init.c similarity index 90% rename from libs/dolphin/os/__ppc_eabi_init.cpp rename to libs/dolphin/os/__ppc_eabi_init.c index 758c52fc96..8aef493899 100644 --- a/libs/dolphin/os/__ppc_eabi_init.cpp +++ b/libs/dolphin/os/__ppc_eabi_init.c @@ -11,15 +11,15 @@ // Forward References: // -extern "C" void __init_user(); -extern "C" void __init_cpp(); -extern "C" void _ExitProcess(); +void __init_user(); +void __init_cpp(); +void _ExitProcess(); // // External References: // -extern "C" void PPCHalt(); +void PPCHalt(); SECTION_CTORS10 extern void* const __init_cpp_exceptions_reference; // diff --git a/libs/dolphin/pad/Makefile b/libs/dolphin/pad/Makefile index e49e2cc240..18a8251032 100644 --- a/libs/dolphin/pad/Makefile +++ b/libs/dolphin/pad/Makefile @@ -3,14 +3,16 @@ # LIBPAD_A_CPP_FILES := \ - libs/dolphin/pad/Padclamp.cpp \ - libs/dolphin/pad/Pad.cpp \ + libs/dolphin/pad/Padclamp.c \ + libs/dolphin/pad/Pad.c \ LIBPAD_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/pad/Padclamp.o \ $(BUILD_DIR)/libs/dolphin/pad/Pad.o \ LIBPAD_A_CFLAGS := \ + -O4,p \ + -lang=c \ LIBPAD_A_LDFLAGS := \ -nodefaults \ @@ -23,9 +25,9 @@ $(BUILD_DIR)/libpad.a: $(LIBPAD_A_O_FILES) @echo $(LIBPAD_A_O_FILES) > build/LIBPAD_A_ofiles @$(LD) -xm l $(LIBPAD_A_LDFLAGS) -o $(BUILD_DIR)/libpad.a @build/LIBPAD_A_ofiles -$(BUILD_DIR)/libs/dolphin/pad/%.o: libs/dolphin/pad/%.cpp +$(BUILD_DIR)/libs/dolphin/pad/%.o: libs/dolphin/pad/%.c @mkdir -p $(@D) @echo building... $< - @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp - @$(CC) $(CFLAGS) $(LIBPAD_A_CFLAGS) -c -o $@ $(basename $@).cpp + @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBPAD_A_CFLAGS) -c -o $@ $(basename $@).c diff --git a/libs/dolphin/pad/Pad.cpp b/libs/dolphin/pad/Pad.c similarity index 79% rename from libs/dolphin/pad/Pad.cpp rename to libs/dolphin/pad/Pad.c index da12bfaa2e..b963c96a2c 100644 --- a/libs/dolphin/pad/Pad.cpp +++ b/libs/dolphin/pad/Pad.c @@ -11,49 +11,49 @@ // Forward References: // -extern "C" static void UpdateOrigin(); -extern "C" static void PADOriginCallback(); -extern "C" static void PADOriginUpdateCallback(); -extern "C" static void PADProbeCallback(); -extern "C" static void PADTypeAndStatusCallback(); -extern "C" static void PADReceiveCheckCallback(); -extern "C" static void SPEC0_MakeStatus(); -extern "C" static void SPEC1_MakeStatus(); -extern "C" static void SPEC2_MakeStatus(); -extern "C" static void OnReset(); -extern "C" static void SamplingHandler(); -extern "C" static void PADSetSamplingCallback(); -extern "C" void __PADDisableRecalibration(); +static void UpdateOrigin(); +static void PADOriginCallback(); +static void PADOriginUpdateCallback(); +static void PADProbeCallback(); +static void PADTypeAndStatusCallback(); +static void PADReceiveCheckCallback(); +static void SPEC0_MakeStatus(); +static void SPEC1_MakeStatus(); +static void SPEC2_MakeStatus(); +static void OnReset(); +static void SamplingHandler(); +static void PADSetSamplingCallback(); +void __PADDisableRecalibration(); // // External References: // SECTION_INIT void memset(); -extern "C" void OSRegisterVersion(); -extern "C" void OSSetCurrentContext(); -extern "C" void OSClearContext(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void OSRegisterResetFunction(); -extern "C" void OSSetWirelessID(); -extern "C" void OSGetTime(); -extern "C" void SIBusy(); -extern "C" void SIIsChanBusy(); -extern "C" void SIRegisterPollingHandler(); -extern "C" void SIUnregisterPollingHandler(); -extern "C" void SIGetStatus(); -extern "C" void SISetCommand(); -extern "C" void SITransferCommands(); -extern "C" void SIEnablePolling(); -extern "C" void SIDisablePolling(); -extern "C" void SIGetResponse(); -extern "C" void SITransfer(); -extern "C" void SIGetType(); -extern "C" void SIGetTypeAsync(); -extern "C" void SIRefreshSamplingRate(); -extern "C" void __shr2i(); -extern "C" extern u8 __PADFixBits[4 + 4 /* padding */]; +void OSRegisterVersion(); +void OSSetCurrentContext(); +void OSClearContext(); +void OSDisableInterrupts(); +void OSRestoreInterrupts(); +void OSRegisterResetFunction(); +void OSSetWirelessID(); +void OSGetTime(); +void SIBusy(); +void SIIsChanBusy(); +void SIRegisterPollingHandler(); +void SIUnregisterPollingHandler(); +void SIGetStatus(); +void SISetCommand(); +void SITransferCommands(); +void SIEnablePolling(); +void SIDisablePolling(); +void SIGetResponse(); +void SITransfer(); +void SIGetType(); +void SIGetTypeAsync(); +void SIRefreshSamplingRate(); +void __shr2i(); +extern u8 __PADFixBits[4 + 4 /* padding */]; // // Declarations: @@ -61,81 +61,7 @@ extern "C" extern u8 __PADFixBits[4 + 4 /* padding */]; /* ############################################################################################## */ /* 803D1B48-803D1B90 02EC68 0045+03 1/0 0/0 0/0 .data @1 */ -SECTION_DATA static u8 lit_1[69 + 3 /* padding */] = { - 0x3C, - 0x3C, - 0x20, - 0x44, - 0x6F, - 0x6C, - 0x70, - 0x68, - 0x69, - 0x6E, - 0x20, - 0x53, - 0x44, - 0x4B, - 0x20, - 0x2D, - 0x20, - 0x50, - 0x41, - 0x44, - 0x09, - 0x72, - 0x65, - 0x6C, - 0x65, - 0x61, - 0x73, - 0x65, - 0x20, - 0x62, - 0x75, - 0x69, - 0x6C, - 0x64, - 0x3A, - 0x20, - 0x41, - 0x70, - 0x72, - 0x20, - 0x20, - 0x35, - 0x20, - 0x32, - 0x30, - 0x30, - 0x34, - 0x20, - 0x30, - 0x34, - 0x3A, - 0x31, - 0x34, - 0x3A, - 0x34, - 0x39, - 0x20, - 0x28, - 0x30, - 0x78, - 0x32, - 0x33, - 0x30, - 0x31, - 0x29, - 0x20, - 0x3E, - 0x3E, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_1[] = "<< Dolphin SDK - PAD\trelease build: Apr 5 2004 04:14:49 (0x2301) >>"; /* 8044CB70-8044CB80 079890 0010+00 3/3 0/0 0/0 .bss Type */ static u8 Type[16]; @@ -258,7 +184,7 @@ static asm void PADReceiveCheckCallback() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm s32 PADReset(PADMask mask) { +asm BOOL PADReset(u32 mask) { nofralloc #include "asm/dolphin/pad/Pad/PADReset.s" } @@ -268,7 +194,7 @@ asm s32 PADReset(PADMask mask) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm s32 PADRecalibrate(PADMask mask) { +asm BOOL PADRecalibrate(u32 mask) { nofralloc #include "asm/dolphin/pad/Pad/PADRecalibrate.s" } @@ -313,7 +239,7 @@ asm u32 PADInit() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm u32 PADRead(PADStatus*) { +asm void PADRead(PADStatus* status) { nofralloc #include "asm/dolphin/pad/Pad/PADRead.s" } diff --git a/libs/dolphin/pad/Padclamp.cpp b/libs/dolphin/pad/Padclamp.c similarity index 94% rename from libs/dolphin/pad/Padclamp.cpp rename to libs/dolphin/pad/Padclamp.c index 2c7f8f6703..aa5e4a5136 100644 --- a/libs/dolphin/pad/Padclamp.cpp +++ b/libs/dolphin/pad/Padclamp.c @@ -11,10 +11,10 @@ // Forward References: // -extern "C" static void ClampStick(); -extern "C" static void ClampCircle(); -extern "C" void PADClamp(); -extern "C" void PADClampCircle(); +static void ClampStick(); +static void ClampCircle(); +void PADClamp(); +void PADClampCircle(); // // External References: diff --git a/libs/dolphin/si/Makefile b/libs/dolphin/si/Makefile index 0102fb62ac..f79ca0af02 100644 --- a/libs/dolphin/si/Makefile +++ b/libs/dolphin/si/Makefile @@ -3,14 +3,16 @@ # LIBSI_A_CPP_FILES := \ - libs/dolphin/si/SIBios.cpp \ - libs/dolphin/si/SISamplingRate.cpp \ + libs/dolphin/si/SIBios.c \ + libs/dolphin/si/SISamplingRate.c \ LIBSI_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/si/SIBios.o \ $(BUILD_DIR)/libs/dolphin/si/SISamplingRate.o \ LIBSI_A_CFLAGS := \ + -O4,p \ + -lang=c \ LIBSI_A_LDFLAGS := \ -nodefaults \ @@ -23,9 +25,9 @@ $(BUILD_DIR)/libsi.a: $(LIBSI_A_O_FILES) @echo $(LIBSI_A_O_FILES) > build/LIBSI_A_ofiles @$(LD) -xm l $(LIBSI_A_LDFLAGS) -o $(BUILD_DIR)/libsi.a @build/LIBSI_A_ofiles -$(BUILD_DIR)/libs/dolphin/si/%.o: libs/dolphin/si/%.cpp +$(BUILD_DIR)/libs/dolphin/si/%.o: libs/dolphin/si/%.c @mkdir -p $(@D) @echo building... $< - @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp - @$(CC) $(CFLAGS) $(LIBSI_A_CFLAGS) -c -o $@ $(basename $@).cpp + @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBSI_A_CFLAGS) -c -o $@ $(basename $@).c diff --git a/libs/dolphin/si/SIBios.cpp b/libs/dolphin/si/SIBios.c similarity index 72% rename from libs/dolphin/si/SIBios.cpp rename to libs/dolphin/si/SIBios.c index c8a5e9656d..3b9e8044a6 100644 --- a/libs/dolphin/si/SIBios.cpp +++ b/libs/dolphin/si/SIBios.c @@ -11,45 +11,45 @@ // Forward References: // -extern "C" void SIBusy(); -extern "C" void SIIsChanBusy(); -extern "C" static void CompleteTransfer(); -extern "C" static void SIInterruptHandler(); -extern "C" static void SIEnablePollingInterrupt(); -extern "C" void SIRegisterPollingHandler(); -extern "C" void SIUnregisterPollingHandler(); -extern "C" void SIInit(); -extern "C" void __SITransfer(); -extern "C" void SIGetStatus(); -extern "C" void SISetCommand(); -extern "C" void SITransferCommands(); -extern "C" void SISetXY(); -extern "C" void SIEnablePolling(); -extern "C" void SIDisablePolling(); -extern "C" static void SIGetResponseRaw(); -extern "C" void SIGetResponse(); -extern "C" static void AlarmHandler(); -extern "C" void SITransfer(); -extern "C" static void GetTypeCallback(); -extern "C" void SIGetType(); -extern "C" void SIGetTypeAsync(); +void SIBusy(); +void SIIsChanBusy(); +static void CompleteTransfer(); +static void SIInterruptHandler(); +static void SIEnablePollingInterrupt(); +void SIRegisterPollingHandler(); +void SIUnregisterPollingHandler(); +void SIInit(); +void __SITransfer(); +void SIGetStatus(); +void SISetCommand(); +void SITransferCommands(); +void SISetXY(); +void SIEnablePolling(); +void SIDisablePolling(); +static void SIGetResponseRaw(); +void SIGetResponse(); +static void AlarmHandler(); +void SITransfer(); +static void GetTypeCallback(); +void SIGetType(); +void SIGetTypeAsync(); // // External References: // -extern "C" void OSRegisterVersion(); -extern "C" void OSSetAlarm(); -extern "C" void OSCancelAlarm(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void __OSSetInterruptHandler(); -extern "C" void __OSUnmaskInterrupts(); -extern "C" void OSGetWirelessID(); -extern "C" void OSSetWirelessID(); -extern "C" void __OSGetSystemTime(); -extern "C" void SISetSamplingRate(); -extern "C" void VIGetCurrentLine(); +void OSRegisterVersion(); +void OSSetAlarm(); +void OSCancelAlarm(); +void OSDisableInterrupts(); +void OSRestoreInterrupts(); +void __OSSetInterruptHandler(); +void __OSUnmaskInterrupts(); +void OSGetWirelessID(); +void OSSetWirelessID(); +void __OSGetSystemTime(); +void SISetSamplingRate(); +void VIGetCurrentLine(); // // Declarations: @@ -57,13 +57,7 @@ extern "C" void VIGetCurrentLine(); /* ############################################################################################## */ /* 803D11B8-803D11FC 02E2D8 0044+00 4/3 0/0 0/0 .data @1 */ -SECTION_DATA static u8 lit_1[68] = { - 0x3C, 0x3C, 0x20, 0x44, 0x6F, 0x6C, 0x70, 0x68, 0x69, 0x6E, 0x20, 0x53, 0x44, 0x4B, - 0x20, 0x2D, 0x20, 0x53, 0x49, 0x09, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x20, - 0x62, 0x75, 0x69, 0x6C, 0x64, 0x3A, 0x20, 0x41, 0x70, 0x72, 0x20, 0x20, 0x35, 0x20, - 0x32, 0x30, 0x30, 0x34, 0x20, 0x30, 0x34, 0x3A, 0x31, 0x34, 0x3A, 0x31, 0x36, 0x20, - 0x28, 0x30, 0x78, 0x32, 0x33, 0x30, 0x31, 0x29, 0x20, 0x3E, 0x3E, 0x00, -}; +SECTION_DATA static char lit_1[] = "<< Dolphin SDK - SI\trelease build: Apr 5 2004 04:14:16 (0x2301) >>"; /* 803D11FC-803D1210 02E31C 0014+00 8/11 0/0 0/0 .data Si */ SECTION_DATA static u8 Si[20] = { @@ -359,199 +353,67 @@ asm void SIGetTypeAsync() { /* 803D1220-803D122C 02E340 000C+00 0/0 0/0 0/0 .data @457 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_457[12] = { - 0x4E, 0x6F, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x73, 0x65, 0x00, -}; +SECTION_DATA static char lit_457[] = "No response"; #pragma pop /* 803D122C-803D123C 02E34C 000F+01 0/0 0/0 0/0 .data @459 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_459[15 + 1 /* padding */] = { - 0x4E, - 0x36, - 0x34, - 0x20, - 0x63, - 0x6F, - 0x6E, - 0x74, - 0x72, - 0x6F, - 0x6C, - 0x6C, - 0x65, - 0x72, - 0x00, - /* padding */ - 0x00, -}; +SECTION_DATA static char lit_459[] = "N64 controller"; #pragma pop /* 803D123C-803D124C 02E35C 000F+01 0/0 0/0 0/0 .data @460 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_460[15 + 1 /* padding */] = { - 0x4E, - 0x36, - 0x34, - 0x20, - 0x6D, - 0x69, - 0x63, - 0x72, - 0x6F, - 0x70, - 0x68, - 0x6F, - 0x6E, - 0x65, - 0x00, - /* padding */ - 0x00, -}; +SECTION_DATA static char lit_460[] = "N64 microphone"; #pragma pop /* 803D124C-803D125C 02E36C 000D+03 0/0 0/0 0/0 .data @461 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_461[13 + 3 /* padding */] = { - 0x4E, - 0x36, - 0x34, - 0x20, - 0x6B, - 0x65, - 0x79, - 0x62, - 0x6F, - 0x61, - 0x72, - 0x64, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_461[] = "N64 keyboard"; #pragma pop /* 803D125C-803D1268 02E37C 000A+02 0/0 0/0 0/0 .data @462 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_462[10 + 2 /* padding */] = { - 0x4E, - 0x36, - 0x34, - 0x20, - 0x6D, - 0x6F, - 0x75, - 0x73, - 0x65, - 0x00, - /* padding */ - 0x00, - 0x00, -}; +SECTION_DATA static char lit_462[] = "N64 mouse"; #pragma pop /* 803D1268-803D1278 02E388 0010+00 0/0 0/0 0/0 .data @463 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_463[16] = { - 0x47, 0x61, 0x6D, 0x65, 0x42, 0x6F, 0x79, 0x20, 0x41, 0x64, 0x76, 0x61, 0x6E, 0x63, 0x65, 0x00, -}; +SECTION_DATA static char lit_463[] = "GameBoy Advance"; #pragma pop /* 803D1278-803D128C 02E398 0014+00 0/0 0/0 0/0 .data @464 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_464[20] = { - 0x53, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x63, - 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x6C, 0x65, 0x72, 0x00, -}; +SECTION_DATA static char lit_464[] = "Standard controller"; #pragma pop /* 803D128C-803D12A0 02E3AC 0012+02 0/0 0/0 0/0 .data @465 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_465[18 + 2 /* padding */] = { - 0x57, - 0x69, - 0x72, - 0x65, - 0x6C, - 0x65, - 0x73, - 0x73, - 0x20, - 0x72, - 0x65, - 0x63, - 0x65, - 0x69, - 0x76, - 0x65, - 0x72, - 0x00, - /* padding */ - 0x00, - 0x00, -}; +SECTION_DATA static char lit_465[] = "Wireless receiver"; #pragma pop /* 803D12A0-803D12B4 02E3C0 0014+00 0/0 0/0 0/0 .data @466 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_466[20] = { - 0x57, 0x61, 0x76, 0x65, 0x42, 0x69, 0x72, 0x64, 0x20, 0x63, - 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x6C, 0x65, 0x72, 0x00, -}; +SECTION_DATA static char lit_466[] = "WaveBird controller"; #pragma pop /* 803D12B4-803D12C0 02E3D4 0009+03 0/0 0/0 0/0 .data @467 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_467[9 + 3 /* padding */] = { - 0x4B, - 0x65, - 0x79, - 0x62, - 0x6F, - 0x61, - 0x72, - 0x64, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_467[] = "Keyboard"; #pragma pop /* 803D12C0-803D12D0 02E3E0 0009+07 0/0 0/0 0/0 .data @468 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_468[9 + 7 /* padding */] = { - 0x53, - 0x74, - 0x65, - 0x65, - 0x72, - 0x69, - 0x6E, - 0x67, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_468[] = "Steering"; #pragma pop /* 8044C820-8044C830 079540 0010+00 0/0 0/0 0/0 .bss cmdFixDevice$327 */ diff --git a/libs/dolphin/si/SISamplingRate.cpp b/libs/dolphin/si/SISamplingRate.c similarity index 69% rename from libs/dolphin/si/SISamplingRate.cpp rename to libs/dolphin/si/SISamplingRate.c index bb7b4b4bdc..4bf5ca3d4a 100644 --- a/libs/dolphin/si/SISamplingRate.cpp +++ b/libs/dolphin/si/SISamplingRate.c @@ -11,18 +11,18 @@ // Forward References: // -extern "C" void SISetSamplingRate(); -extern "C" void SIRefreshSamplingRate(); +void SISetSamplingRate(); +void SIRefreshSamplingRate(); // // External References: // -extern "C" void OSReport(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void SISetXY(); -extern "C" void VIGetTvFormat(); +void OSReport(); +void OSDisableInterrupts(); +void OSRestoreInterrupts(); +void SISetXY(); +void VIGetTvFormat(); // // Declarations: @@ -49,65 +49,7 @@ SECTION_DATA static u8 XYPAL[48] = { /* 803D1330-803D1368 02E450 0033+05 0/1 0/0 0/0 .data @16 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_16[51 + 5 /* padding */] = { - 0x53, - 0x49, - 0x53, - 0x65, - 0x74, - 0x53, - 0x61, - 0x6D, - 0x70, - 0x6C, - 0x69, - 0x6E, - 0x67, - 0x52, - 0x61, - 0x74, - 0x65, - 0x3A, - 0x20, - 0x75, - 0x6E, - 0x6B, - 0x6E, - 0x6F, - 0x77, - 0x6E, - 0x20, - 0x54, - 0x56, - 0x20, - 0x66, - 0x6F, - 0x72, - 0x6D, - 0x61, - 0x74, - 0x2E, - 0x20, - 0x55, - 0x73, - 0x65, - 0x20, - 0x64, - 0x65, - 0x66, - 0x61, - 0x75, - 0x6C, - 0x74, - 0x2E, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_16[] = "SISetSamplingRate: unknown TV format. Use default."; #pragma pop /* 80451700-80451708 000C00 0004+04 2/2 0/0 0/0 .sbss SamplingRate */ diff --git a/libs/dolphin/vi/Makefile b/libs/dolphin/vi/Makefile index dd66f4e1a5..08cfcd0805 100644 --- a/libs/dolphin/vi/Makefile +++ b/libs/dolphin/vi/Makefile @@ -3,12 +3,14 @@ # LIBVI_A_CPP_FILES := \ - libs/dolphin/vi/vi.cpp \ + libs/dolphin/vi/vi.c \ LIBVI_A_O_FILES := \ $(BUILD_DIR)/libs/dolphin/vi/vi.o \ LIBVI_A_CFLAGS := \ + -O4,p \ + -lang=c \ LIBVI_A_LDFLAGS := \ -nodefaults \ @@ -21,9 +23,9 @@ $(BUILD_DIR)/libvi.a: $(LIBVI_A_O_FILES) @echo $(LIBVI_A_O_FILES) > build/LIBVI_A_ofiles @$(LD) -xm l $(LIBVI_A_LDFLAGS) -o $(BUILD_DIR)/libvi.a @build/LIBVI_A_ofiles -$(BUILD_DIR)/libs/dolphin/vi/%.o: libs/dolphin/vi/%.cpp +$(BUILD_DIR)/libs/dolphin/vi/%.o: libs/dolphin/vi/%.c @mkdir -p $(@D) @echo building... $< - @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp - @$(CC) $(CFLAGS) $(LIBVI_A_CFLAGS) -c -o $@ $(basename $@).cpp + @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBVI_A_CFLAGS) -c -o $@ $(basename $@).c diff --git a/libs/dolphin/vi/vi.cpp b/libs/dolphin/vi/vi.c similarity index 73% rename from libs/dolphin/vi/vi.cpp rename to libs/dolphin/vi/vi.c index 5807dfcf2f..0fec2d2804 100644 --- a/libs/dolphin/vi/vi.cpp +++ b/libs/dolphin/vi/vi.c @@ -11,42 +11,28 @@ // Forward References: // -extern "C" void __VIRetraceHandler(); -extern "C" static void getTiming(); -extern "C" void __VIInit(); -extern "C" static void setFbbRegs(); -extern "C" static void setVerticalRegs(); -extern "C" u32 VIGetRetraceCount(); -extern "C" static void GetCurrentDisplayPosition(); -extern "C" static void getCurrentFieldEvenOdd(); -extern "C" void VIGetNextField(); -extern "C" void VIGetCurrentLine(); -extern "C" void VIGetTvFormat(); -extern "C" void VIGetDTVStatus(); -extern "C" void __VIDisplayPositionToXY(); -extern "C" void __VIGetCurrentPosition(); +void __VIRetraceHandler(); +static void getTiming(); +void __VIInit(); +static void setFbbRegs(); +static void setVerticalRegs(); +u32 VIGetRetraceCount(); +static void GetCurrentDisplayPosition(); +static void getCurrentFieldEvenOdd(); +void VIGetNextField(); +void VIGetCurrentLine(); +void VIGetTvFormat(); +void VIGetDTVStatus(); +void __VIDisplayPositionToXY(); +void __VIGetCurrentPosition(); // // External References: // -extern "C" void OSReport(); -extern "C" void OSPanic(); -extern "C" void OSRegisterVersion(); -extern "C" void OSSetCurrentContext(); -extern "C" void OSClearContext(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void __OSSetInterruptHandler(); -extern "C" void __OSUnmaskInterrupts(); -extern "C" void __OSLockSram(); -extern "C" void __OSUnlockSram(); -extern "C" void OSInitThreadQueue(); -extern "C" void OSSleepThread(); -extern "C" void OSWakeupThread(); -extern "C" void SIRefreshSamplingRate(); -extern "C" void __shl2i(); -extern "C" void __shr2u(); +void SIRefreshSamplingRate(); +void __shl2i(); +void __shr2u(); // // Declarations: @@ -147,13 +133,7 @@ asm VIRetraceCallback VISetPostRetraceCallback(VIRetraceCallback) { /* ############################################################################################## */ /* 803D1760-803D17A4 02E880 0044+00 4/3 0/0 0/0 .data @1 */ -SECTION_DATA static u8 lit_1[68] = { - 0x3C, 0x3C, 0x20, 0x44, 0x6F, 0x6C, 0x70, 0x68, 0x69, 0x6E, 0x20, 0x53, 0x44, 0x4B, - 0x20, 0x2D, 0x20, 0x56, 0x49, 0x09, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x20, - 0x62, 0x75, 0x69, 0x6C, 0x64, 0x3A, 0x20, 0x41, 0x70, 0x72, 0x20, 0x20, 0x37, 0x20, - 0x32, 0x30, 0x30, 0x34, 0x20, 0x30, 0x34, 0x3A, 0x31, 0x33, 0x3A, 0x35, 0x39, 0x20, - 0x28, 0x30, 0x78, 0x32, 0x33, 0x30, 0x31, 0x29, 0x20, 0x3E, 0x3E, 0x00, -}; +SECTION_DATA static char lit_1[] = "<< Dolphin SDK - VI\trelease build: Apr 7 2004 04:13:59 (0x2301) >>"; /* 803D17A4-803D1920 02E8C4 017C+00 0/1 0/0 0/0 .data timing */ #pragma push @@ -349,411 +329,47 @@ static asm void setVerticalRegs() { /* 803D19D0-803D19FC 02EAF0 0029+03 0/1 0/0 0/0 .data @355 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_355[41 + 3 /* padding */] = { - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x2A, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_355[] = "***************************************\n"; #pragma pop /* 803D19FC-803D1A28 02EB1C 0029+03 0/1 0/0 0/0 .data @356 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_356[41 + 3 /* padding */] = { - 0x20, - 0x21, - 0x20, - 0x21, - 0x20, - 0x21, - 0x20, - 0x43, - 0x20, - 0x41, - 0x20, - 0x55, - 0x20, - 0x54, - 0x20, - 0x49, - 0x20, - 0x4F, - 0x20, - 0x4E, - 0x20, - 0x21, - 0x20, - 0x21, - 0x20, - 0x21, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_356[] = " ! ! ! C A U T I O N ! ! ! \n"; #pragma pop /* 803D1A28-803D1A54 02EB48 0029+03 0/1 0/0 0/0 .data @357 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_357[41 + 3 /* padding */] = { - 0x54, - 0x68, - 0x69, - 0x73, - 0x20, - 0x54, - 0x56, - 0x20, - 0x66, - 0x6F, - 0x72, - 0x6D, - 0x61, - 0x74, - 0x20, - 0x22, - 0x44, - 0x45, - 0x42, - 0x55, - 0x47, - 0x5F, - 0x50, - 0x41, - 0x4C, - 0x22, - 0x20, - 0x69, - 0x73, - 0x20, - 0x6F, - 0x6E, - 0x6C, - 0x79, - 0x20, - 0x66, - 0x6F, - 0x72, - 0x20, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_357[] = "This TV format \"DEBUG_PAL\" is only for \n"; #pragma pop /* 803D1A54-803D1A80 02EB74 0029+03 0/1 0/0 0/0 .data @358 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_358[41 + 3 /* padding */] = { - 0x74, - 0x65, - 0x6D, - 0x70, - 0x6F, - 0x72, - 0x61, - 0x72, - 0x79, - 0x20, - 0x73, - 0x6F, - 0x6C, - 0x75, - 0x74, - 0x69, - 0x6F, - 0x6E, - 0x20, - 0x75, - 0x6E, - 0x74, - 0x69, - 0x6C, - 0x20, - 0x50, - 0x41, - 0x4C, - 0x20, - 0x44, - 0x41, - 0x43, - 0x20, - 0x62, - 0x6F, - 0x61, - 0x72, - 0x64, - 0x20, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_358[] = "temporary solution until PAL DAC board \n"; #pragma pop /* 803D1A80-803D1AAC 02EBA0 0029+03 0/1 0/0 0/0 .data @359 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_359[41 + 3 /* padding */] = { - 0x69, - 0x73, - 0x20, - 0x61, - 0x76, - 0x61, - 0x69, - 0x6C, - 0x61, - 0x62, - 0x6C, - 0x65, - 0x2E, - 0x20, - 0x50, - 0x6C, - 0x65, - 0x61, - 0x73, - 0x65, - 0x20, - 0x64, - 0x6F, - 0x20, - 0x4E, - 0x4F, - 0x54, - 0x20, - 0x75, - 0x73, - 0x65, - 0x20, - 0x74, - 0x68, - 0x69, - 0x73, - 0x20, - 0x20, - 0x20, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_359[] = "is available. Please do NOT use this \n"; #pragma pop /* 803D1AAC-803D1AD8 02EBCC 0029+03 0/1 0/0 0/0 .data @360 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_360[41 + 3 /* padding */] = { - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x20, - 0x69, - 0x6E, - 0x20, - 0x72, - 0x65, - 0x61, - 0x6C, - 0x20, - 0x67, - 0x61, - 0x6D, - 0x65, - 0x73, - 0x21, - 0x21, - 0x21, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x20, - 0x0A, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_360[] = "mode in real games!!! \n"; #pragma pop /* 803D1AD8-803D1B24 02EBF8 004B+01 0/1 0/0 0/0 .data @538 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_538[75 + 1 /* padding */] = { - 0x56, - 0x49, - 0x43, - 0x6F, - 0x6E, - 0x66, - 0x69, - 0x67, - 0x75, - 0x72, - 0x65, - 0x28, - 0x29, - 0x3A, - 0x20, - 0x54, - 0x72, - 0x69, - 0x65, - 0x64, - 0x20, - 0x74, - 0x6F, - 0x20, - 0x63, - 0x68, - 0x61, - 0x6E, - 0x67, - 0x65, - 0x20, - 0x6D, - 0x6F, - 0x64, - 0x65, - 0x20, - 0x66, - 0x72, - 0x6F, - 0x6D, - 0x20, - 0x28, - 0x25, - 0x64, - 0x29, - 0x20, - 0x74, - 0x6F, - 0x20, - 0x28, - 0x25, - 0x64, - 0x29, - 0x2C, - 0x20, - 0x77, - 0x68, - 0x69, - 0x63, - 0x68, - 0x20, - 0x69, - 0x73, - 0x20, - 0x66, - 0x6F, - 0x72, - 0x62, - 0x69, - 0x64, - 0x64, - 0x65, - 0x6E, - 0x0A, - 0x00, - /* padding */ - 0x00, -}; +SECTION_DATA static char lit_538[] = "VIConfigure(): Tried to change mode from (%d) to (%d), which is forbidden\n"; #pragma pop /* 80450A14-80450A1C 000494 0005+03 1/1 0/0 0/0 .sdata @537 */ -SECTION_SDATA static u8 lit_537[5 + 3 /* padding */] = { - 0x76, - 0x69, - 0x2E, - 0x63, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_SDATA static char lit_537[] = "vi.c"; /* 80451840-80451848 000D40 0004+04 1/1 0/0 0/0 .sbss message$351 */ static u8 message[4 + 4 /* padding */]; diff --git a/libs/exi/EXIBios.cpp b/libs/exi/EXIBios.c similarity index 63% rename from libs/exi/EXIBios.cpp rename to libs/exi/EXIBios.c index 1d4b332681..b857b70927 100644 --- a/libs/exi/EXIBios.cpp +++ b/libs/exi/EXIBios.c @@ -11,50 +11,50 @@ // Forward References: // -extern "C" static void SetExiInterruptMask(); -extern "C" void EXIImm(); -extern "C" void EXIImmEx(); -extern "C" void EXIDma(); -extern "C" void EXISync(); -extern "C" static void EXIClearInterrupts(); -extern "C" void EXISetExiCallback(); -extern "C" void __EXIProbe(); -extern "C" void EXIProbe(); -extern "C" void EXIProbeEx(); -extern "C" void EXIAttach(); -extern "C" void EXIDetach(); -extern "C" void EXISelect(); -extern "C" void EXIDeselect(); -extern "C" static void EXIIntrruptHandler(); -extern "C" static void TCIntrruptHandler(); -extern "C" static void EXTIntrruptHandler(); -extern "C" void EXIInit(); -extern "C" void EXILock(); -extern "C" void EXIUnlock(); -extern "C" void EXIGetState(); -extern "C" static void UnlockedHandler(); -extern "C" void EXIGetID(); +static void SetExiInterruptMask(); +void EXIImm(); +void EXIImmEx(); +void EXIDma(); +void EXISync(); +static void EXIClearInterrupts(); +void EXISetExiCallback(); +void __EXIProbe(); +void EXIProbe(); +void EXIProbeEx(); +void EXIAttach(); +void EXIDetach(); +void EXISelect(); +void EXIDeselect(); +static void EXIIntrruptHandler(); +static void TCIntrruptHandler(); +static void EXTIntrruptHandler(); +void EXIInit(); +void EXILock(); +void EXIUnlock(); +void EXIGetState(); +static void UnlockedHandler(); +void EXIGetID(); // // External References: // -extern "C" void OSGetConsoleType(); -extern "C" void __OSGetDIConfig(); -extern "C" void OSRegisterVersion(); -extern "C" void OSSetCurrentContext(); -extern "C" void OSClearContext(); -extern "C" void OSDisableInterrupts(); -extern "C" void OSRestoreInterrupts(); -extern "C" void __OSSetInterruptHandler(); -extern "C" void __OSGetInterruptHandler(); -extern "C" void __OSMaskInterrupts(); -extern "C" void __OSUnmaskInterrupts(); -extern "C" void OSGetTime(); -extern "C" void __OSEnableBarnacle(); -extern "C" void __div2i(); -extern "C" void memmove(); -extern "C" extern u8 __OSInIPL[4 + 4 /* padding */]; +void OSGetConsoleType(); +void __OSGetDIConfig(); +void OSRegisterVersion(); +void OSSetCurrentContext(); +void OSClearContext(); +void OSDisableInterrupts(); +void OSRestoreInterrupts(); +void __OSSetInterruptHandler(); +void __OSGetInterruptHandler(); +void __OSMaskInterrupts(); +void __OSUnmaskInterrupts(); +void OSGetTime(); +void __OSEnableBarnacle(); +void __div2i(); +void memmove(); +extern u8 __OSInIPL[4 + 4 /* padding */]; // // Declarations: @@ -236,81 +236,7 @@ static asm void EXTIntrruptHandler() { /* ############################################################################################## */ /* 803D10A8-803D10F0 02E1C8 0045+03 1/0 0/0 0/0 .data @1 */ -SECTION_DATA static u8 lit_1[69 + 3 /* padding */] = { - 0x3C, - 0x3C, - 0x20, - 0x44, - 0x6F, - 0x6C, - 0x70, - 0x68, - 0x69, - 0x6E, - 0x20, - 0x53, - 0x44, - 0x4B, - 0x20, - 0x2D, - 0x20, - 0x45, - 0x58, - 0x49, - 0x09, - 0x72, - 0x65, - 0x6C, - 0x65, - 0x61, - 0x73, - 0x65, - 0x20, - 0x62, - 0x75, - 0x69, - 0x6C, - 0x64, - 0x3A, - 0x20, - 0x41, - 0x70, - 0x72, - 0x20, - 0x20, - 0x35, - 0x20, - 0x32, - 0x30, - 0x30, - 0x34, - 0x20, - 0x30, - 0x34, - 0x3A, - 0x31, - 0x34, - 0x3A, - 0x31, - 0x34, - 0x20, - 0x28, - 0x30, - 0x78, - 0x32, - 0x33, - 0x30, - 0x31, - 0x29, - 0x20, - 0x3E, - 0x3E, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_1[] = "<< Dolphin SDK - EXI\trelease build: Apr 5 2004 04:14:14 (0x2301) >>"; /* 804509C0-804509C8 -00001 0004+04 1/1 0/0 0/0 .sdata __EXIVersion */ SECTION_SDATA static void* __EXIVersion[1 + 1 /* padding */] = { @@ -386,235 +312,71 @@ asm void EXIGetID() { /* 803D10F0-803D1100 02E210 000F+01 0/0 0/0 0/0 .data @473 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_473[15 + 1 /* padding */] = { - 0x4D, - 0x65, - 0x6D, - 0x6F, - 0x72, - 0x79, - 0x20, - 0x43, - 0x61, - 0x72, - 0x64, - 0x20, - 0x35, - 0x39, - 0x00, - /* padding */ - 0x00, -}; +SECTION_DATA static char lit_473[] = "Memory Card 59"; #pragma pop /* 803D1100-803D1110 02E220 0010+00 0/0 0/0 0/0 .data @474 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_474[16] = { - 0x4D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x43, 0x61, 0x72, 0x64, 0x20, 0x31, 0x32, 0x33, 0x00, -}; +SECTION_DATA static char lit_474[] = "Memory Card 123"; #pragma pop /* 803D1110-803D1120 02E230 0010+00 0/0 0/0 0/0 .data @475 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_475[16] = { - 0x4D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x43, 0x61, 0x72, 0x64, 0x20, 0x32, 0x35, 0x31, 0x00, -}; +SECTION_DATA static char lit_475[] = "Memory Card 251"; #pragma pop /* 803D1120-803D1130 02E240 0010+00 0/0 0/0 0/0 .data @476 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_476[16] = { - 0x4D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x43, 0x61, 0x72, 0x64, 0x20, 0x35, 0x30, 0x37, 0x00, -}; +SECTION_DATA static char lit_476[] = "Memory Card 507"; #pragma pop /* 803D1130-803D1144 02E250 0011+03 0/0 0/0 0/0 .data @477 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_477[17 + 3 /* padding */] = { - 0x4D, - 0x65, - 0x6D, - 0x6F, - 0x72, - 0x79, - 0x20, - 0x43, - 0x61, - 0x72, - 0x64, - 0x20, - 0x31, - 0x30, - 0x31, - 0x39, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_477[] = "Memory Card 1019"; #pragma pop /* 803D1144-803D1158 02E264 0011+03 0/0 0/0 0/0 .data @478 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_478[17 + 3 /* padding */] = { - 0x4D, - 0x65, - 0x6D, - 0x6F, - 0x72, - 0x79, - 0x20, - 0x43, - 0x61, - 0x72, - 0x64, - 0x20, - 0x32, - 0x30, - 0x34, - 0x33, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_478[] = "Memory Card 2043"; #pragma pop /* 803D1158-803D1164 02E278 000C+00 0/0 0/0 0/0 .data @479 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_479[12] = { - 0x55, 0x53, 0x42, 0x20, 0x41, 0x64, 0x61, 0x70, 0x74, 0x65, 0x72, 0x00, -}; +SECTION_DATA static char lit_479[] = "USB Adapter"; #pragma pop /* 803D1164-803D1170 02E284 0009+03 0/0 0/0 0/0 .data @485 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_485[9 + 3 /* padding */] = { - 0x4E, - 0x65, - 0x74, - 0x20, - 0x43, - 0x61, - 0x72, - 0x64, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_485[] = "Net Card"; #pragma pop /* 803D1170-803D1180 02E290 000D+03 0/0 0/0 0/0 .data @486 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_486[13 + 3 /* padding */] = { - 0x41, - 0x72, - 0x74, - 0x69, - 0x73, - 0x74, - 0x20, - 0x45, - 0x74, - 0x68, - 0x65, - 0x72, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_486[] = "Artist Ether"; #pragma pop /* 803D1180-803D1194 02E2A0 0012+02 0/0 0/0 0/0 .data @487 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_487[18 + 2 /* padding */] = { - 0x42, - 0x72, - 0x6F, - 0x61, - 0x64, - 0x62, - 0x61, - 0x6E, - 0x64, - 0x20, - 0x41, - 0x64, - 0x61, - 0x70, - 0x74, - 0x65, - 0x72, - 0x00, - /* padding */ - 0x00, - 0x00, -}; +SECTION_DATA static char lit_487[] = "Broadband Adapter"; #pragma pop /* 803D1194-803D11A4 02E2B4 000E+02 0/0 0/0 0/0 .data @489 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_489[14 + 2 /* padding */] = { - 0x53, - 0x74, - 0x72, - 0x65, - 0x61, - 0x6D, - 0x20, - 0x48, - 0x61, - 0x6E, - 0x67, - 0x65, - 0x72, - 0x00, - /* padding */ - 0x00, - 0x00, -}; +SECTION_DATA static char lit_489[] = "Stream Hanger"; #pragma pop /* 803D11A4-803D11B8 02E2C4 000E+06 0/0 0/0 0/0 .data @490 */ #pragma push #pragma force_active on -SECTION_DATA static u8 lit_490[14 + 6 /* padding */] = { - 0x49, - 0x53, - 0x2D, - 0x44, - 0x4F, - 0x4C, - 0x2D, - 0x56, - 0x49, - 0x45, - 0x57, - 0x45, - 0x52, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, -}; +SECTION_DATA static char lit_490[] = "IS-DOL-VIEWER"; #pragma pop diff --git a/libs/exi/EXIUart.cpp b/libs/exi/EXIUart.c similarity index 80% rename from libs/exi/EXIUart.cpp rename to libs/exi/EXIUart.c index 5849104eb1..16da2210a0 100644 --- a/libs/exi/EXIUart.cpp +++ b/libs/exi/EXIUart.c @@ -11,25 +11,25 @@ // Forward References: // -extern "C" static void ProbeBarnacle(); -extern "C" void __OSEnableBarnacle(); -extern "C" void InitializeUART(); -extern "C" void WriteUARTN(); +static void ProbeBarnacle(); +void __OSEnableBarnacle(); +void InitializeUART(); +void WriteUARTN(); // // External References: // -extern "C" void OSGetConsoleType(); -extern "C" void EXIImm(); -extern "C" void EXISync(); -extern "C" void EXIAttach(); -extern "C" void EXIDetach(); -extern "C" void EXISelect(); -extern "C" void EXIDeselect(); -extern "C" void EXILock(); -extern "C" void EXIUnlock(); -extern "C" void EXIGetID(); +void OSGetConsoleType(); +void EXIImm(); +void EXISync(); +void EXIAttach(); +void EXIDetach(); +void EXISelect(); +void EXIDeselect(); +void EXILock(); +void EXIUnlock(); +void EXIGetID(); // // Declarations: diff --git a/libs/exi/Makefile b/libs/exi/Makefile index 56e5b8f9a8..f8ea01c439 100644 --- a/libs/exi/Makefile +++ b/libs/exi/Makefile @@ -3,14 +3,16 @@ # LIBEXI_A_CPP_FILES := \ - libs/exi/EXIBios.cpp \ - libs/exi/EXIUart.cpp \ + libs/exi/EXIBios.c \ + libs/exi/EXIUart.c \ LIBEXI_A_O_FILES := \ $(BUILD_DIR)/libs/exi/EXIBios.o \ $(BUILD_DIR)/libs/exi/EXIUart.o \ LIBEXI_A_CFLAGS := \ + -O4,p \ + -lang=c \ LIBEXI_A_LDFLAGS := \ -nodefaults \ @@ -23,9 +25,9 @@ $(BUILD_DIR)/libexi.a: $(LIBEXI_A_O_FILES) @echo $(LIBEXI_A_O_FILES) > build/LIBEXI_A_ofiles @$(LD) -xm l $(LIBEXI_A_LDFLAGS) -o $(BUILD_DIR)/libexi.a @build/LIBEXI_A_ofiles -$(BUILD_DIR)/libs/exi/%.o: libs/exi/%.cpp +$(BUILD_DIR)/libs/exi/%.o: libs/exi/%.c @mkdir -p $(@D) @echo building... $< - @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp - @$(CC) $(CFLAGS) $(LIBEXI_A_CFLAGS) -c -o $@ $(basename $@).cpp + @$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c + @$(WINE) tools/mwcc_compiler/1.2.5/mwcceppc.exe $(CFLAGS) $(LIBEXI_A_CFLAGS) -c -o $@ $(basename $@).c diff --git a/rel/d/a/d_a_alldie/d_a_alldie.cpp b/rel/d/a/d_a_alldie/d_a_alldie.cpp index ddaeef7621..333d8087b5 100644 --- a/rel/d/a/d_a_alldie/d_a_alldie.cpp +++ b/rel/d/a/d_a_alldie/d_a_alldie.cpp @@ -6,221 +6,218 @@ #include "rel/d/a/d_a_alldie/d_a_alldie.h" #include "dol2asm.h" #include "dolphin/types.h" - -// -// Types: -// - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); - /* 80018C8C */ ~fopAc_ac_c(); -}; - -struct daAlldie_c { - /* 804D5818 */ void getEventNo(); - /* 804D5824 */ void getSwbit(); - /* 804D5830 */ bool actionWait(); - /* 804D5838 */ void actionCheck(); - /* 804D5888 */ void actionTimer(); - /* 804D5938 */ void actionOrder(); - /* 804D59A0 */ void actionEvent(); - /* 804D5A44 */ void actionNext(); - /* 804D5B10 */ void execute(); -}; - -struct dSv_info_c { - /* 80035200 */ void onSwitch(int, int); - /* 80035360 */ void isSwitch(int, int) const; -}; - -struct dEvt_control_c { - /* 80042468 */ void reset(); - /* 80043500 */ void searchMapEventData(u8, s32); -}; - -struct dEvent_manager_c { - /* 80047698 */ void getEventIdx(fopAc_ac_c*, u8); - /* 80047A78 */ void endCheck(s16); -}; - -// -// Forward References: -// - -extern "C" void getEventNo__10daAlldie_cFv(); -extern "C" void getSwbit__10daAlldie_cFv(); -extern "C" bool actionWait__10daAlldie_cFv(); -extern "C" void actionCheck__10daAlldie_cFv(); -extern "C" void actionTimer__10daAlldie_cFv(); -extern "C" void actionOrder__10daAlldie_cFv(); -extern "C" void actionEvent__10daAlldie_cFv(); -extern "C" void actionNext__10daAlldie_cFv(); -extern "C" void execute__10daAlldie_cFv(); -extern "C" static bool daAlldie_Draw__FP10daAlldie_c(); -extern "C" static void daAlldie_Execute__FP10daAlldie_c(); -extern "C" static bool daAlldie_IsDelete__FP10daAlldie_c(); -extern "C" static void daAlldie_Delete__FP10daAlldie_c(); -extern "C" static void daAlldie_Create__FP10fopAc_ac_c(); -extern "C" extern void* g_profile_ALLDIE[12]; +#include "d/com/d_com_inf_game.h" // // External References: // -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs(); -extern "C" void fopAcM_myRoomSearchEnemy__FSc(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void searchMapEventData__14dEvt_control_cFUcl(); -extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cUc(); -extern "C" void endCheck__16dEvent_manager_cFs(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; // // Declarations: // /* 804D5818-804D5824 000078 000C+00 2/2 0/0 0/0 .text getEventNo__10daAlldie_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlldie_c::getEventNo() { - nofralloc -#include "asm/rel/d/a/d_a_alldie/d_a_alldie/getEventNo__10daAlldie_cFv.s" +u8 daAlldie_c::getEventNo() { + return fopAcM_GetParam(this) >> 0x18; } -#pragma pop /* 804D5824-804D5830 000084 000C+00 2/2 0/0 0/0 .text getSwbit__10daAlldie_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlldie_c::getSwbit() { - nofralloc -#include "asm/rel/d/a/d_a_alldie/d_a_alldie/getSwbit__10daAlldie_cFv.s" +u8 daAlldie_c::getSwbit() { + return fopAcM_GetParam(this) >> 0x8; } -#pragma pop /* 804D5830-804D5838 000090 0008+00 1/1 0/0 0/0 .text actionWait__10daAlldie_cFv */ -bool daAlldie_c::actionWait() { - return true; +int daAlldie_c::actionWait() { + return 1; } /* 804D5838-804D5888 000098 0050+00 1/1 0/0 0/0 .text actionCheck__10daAlldie_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlldie_c::actionCheck() { - nofralloc -#include "asm/rel/d/a/d_a_alldie/d_a_alldie/actionCheck__10daAlldie_cFv.s" +int daAlldie_c::actionCheck() { + s8 roomNo = fopAcM_GetRoomNo(this); + + if (fopAcM_myRoomSearchEnemy(roomNo) == NULL) { + mAction = ACT_TIMER; + mTimer = 65; + } + + return 1; } -#pragma pop /* 804D5888-804D5938 0000E8 00B0+00 1/1 0/0 0/0 .text actionTimer__10daAlldie_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlldie_c::actionTimer() { - nofralloc -#include "asm/rel/d/a/d_a_alldie/d_a_alldie/actionTimer__10daAlldie_cFv.s" +int daAlldie_c::actionTimer() { + s8 roomNo = fopAcM_GetRoomNo(this); + + if (fopAcM_myRoomSearchEnemy(roomNo) != NULL) { + mAction = ACT_CHECK; + } else { + if (mTimer > 0) { + mTimer--; + } else { + if (mEventIdx == -1) { + mAction = ACT_WAIT; + } else { + mAction = ACT_ORDER; + } + + dComIfGs_onSwitch(getSwbit(), fopAcM_GetRoomNo(this)); + } + } + + return 1; } -#pragma pop /* 804D5938-804D59A0 000198 0068+00 1/1 0/0 0/0 .text actionOrder__10daAlldie_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlldie_c::actionOrder() { - nofralloc -#include "asm/rel/d/a/d_a_alldie/d_a_alldie/actionOrder__10daAlldie_cFv.s" +int daAlldie_c::actionOrder() { + if (mEvtInfo.checkCommandDemoAccrpt()) { + mAction = ACT_EVENT; + } else { + fopAcM_orderOtherEventId(this, mEventIdx, getEventNo(), -1, 0, 1); + } + + return 1; } -#pragma pop /* 804D59A0-804D5A44 000200 00A4+00 2/2 0/0 0/0 .text actionEvent__10daAlldie_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlldie_c::actionEvent() { - nofralloc -#include "asm/rel/d/a/d_a_alldie/d_a_alldie/actionEvent__10daAlldie_cFv.s" +int daAlldie_c::actionEvent() { + if (dComIfGp_evmng_endCheck(mEventIdx)) { + i_dComIfGp_getEvent().reset(); + + if (mNextEventIdx != -1) { + mAction = ACT_NEXT; + fopAcM_orderOtherEventId(this, mNextEventIdx, mMapToolID, -1, 0, 1); + } else { + mAction = ACT_WAIT; + mMapToolID = -1; + } + } + + return 1; } -#pragma pop /* 804D5A44-804D5B10 0002A4 00CC+00 1/1 0/0 0/0 .text actionNext__10daAlldie_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlldie_c::actionNext() { - nofralloc -#include "asm/rel/d/a/d_a_alldie/d_a_alldie/actionNext__10daAlldie_cFv.s" +int daAlldie_c::actionNext() { + if (mEvtInfo.checkCommandDemoAccrpt()) { + mEventIdx = mNextEventIdx; + s8 roomNo = fopAcM_GetRoomNo(this); + + mNextEventIdx = -1; + dStage_MapEvent_dt_c* map_evt = dEvt_control_c::searchMapEventData(mMapToolID, roomNo); + + if (map_evt != NULL) { + mMapToolID = map_evt->field_0x5; + mNextEventIdx = i_dComIfGp_getEventManager().getEventIdx(this, mMapToolID); + } else { + mMapToolID = -1; + } + + mAction = ACT_EVENT; + actionEvent(); + } else { + fopAcM_orderOtherEventId(this, mNextEventIdx, mMapToolID, -1, 0, 1); + } + + return 1; } -#pragma pop /* 804D5B10-804D5B8C 000370 007C+00 1/1 0/0 0/0 .text execute__10daAlldie_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlldie_c::execute() { - nofralloc -#include "asm/rel/d/a/d_a_alldie/d_a_alldie/execute__10daAlldie_cFv.s" +int daAlldie_c::execute() { + switch (mAction) { + case ACT_CHECK: + actionCheck(); + break; + case ACT_TIMER: + actionTimer(); + break; + case ACT_ORDER: + actionOrder(); + break; + case ACT_EVENT: + actionEvent(); + break; + case ACT_NEXT: + actionNext(); + break; + default: + actionWait(); + break; + } + + return 1; } -#pragma pop /* 804D5B8C-804D5B94 0003EC 0008+00 1/0 0/0 0/0 .text daAlldie_Draw__FP10daAlldie_c */ -static bool daAlldie_Draw(daAlldie_c* param_0) { - return true; +static int daAlldie_Draw(daAlldie_c*) { + return 1; } /* 804D5B94-804D5BB8 0003F4 0024+00 1/0 0/0 0/0 .text daAlldie_Execute__FP10daAlldie_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daAlldie_Execute(daAlldie_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_alldie/d_a_alldie/daAlldie_Execute__FP10daAlldie_c.s" +static int daAlldie_Execute(daAlldie_c* i_this) { + i_this->execute(); + return 1; } -#pragma pop /* 804D5BB8-804D5BC0 000418 0008+00 1/0 0/0 0/0 .text daAlldie_IsDelete__FP10daAlldie_c */ -static bool daAlldie_IsDelete(daAlldie_c* param_0) { - return true; +static int daAlldie_IsDelete(daAlldie_c*) { + return 1; } /* 804D5BC0-804D5BF0 000420 0030+00 1/0 0/0 0/0 .text daAlldie_Delete__FP10daAlldie_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daAlldie_Delete(daAlldie_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_alldie/d_a_alldie/daAlldie_Delete__FP10daAlldie_c.s" +static int daAlldie_Delete(daAlldie_c* i_this) { + i_this->~daAlldie_c(); + return 1; } -#pragma pop /* 804D5BF0-804D5D1C 000450 012C+00 1/0 0/0 0/0 .text daAlldie_Create__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daAlldie_Create(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_alldie/d_a_alldie/daAlldie_Create__FP10fopAc_ac_c.s" +int daAlldie_c::create() { + if (!fopAcM_CheckCondition(this, 8)) { + new (this) daAlldie_c(); + fopAcM_OnCondition(this, 8); + } + + s8 roomNo = fopAcM_GetRoomNo(this); + + if (!dComIfGs_isSwitch(getSwbit(), roomNo)) { + mAction = ACT_CHECK; + } else { + mAction = ACT_WAIT; + } + + mCollisionRot.z = 0; + mCollisionRot.x = 0; + current.angle.z = 0; + current.angle.x = 0; + + mEventIdx = i_dComIfGp_getEventManager().getEventIdx(this, getEventNo()); + mMapToolID = -1; + mNextEventIdx = -1; + + dStage_MapEvent_dt_c* map_evt = dEvt_control_c::searchMapEventData(getEventNo(), roomNo); + if (map_evt != NULL) { + mMapToolID = map_evt->field_0x5; + mNextEventIdx = i_dComIfGp_getEventManager().getEventIdx(this, mMapToolID); + } + + mEvtInfo.setEventId(mEventIdx); + mEvtInfo.setMapToolId(getEventNo()); + + return cPhs_COMPLEATE_e; +} + +static int daAlldie_Create(fopAc_ac_c* i_this) { + return static_cast(i_this)->create(); } -#pragma pop /* ############################################################################################## */ /* 804D5D24-804D5D44 -00001 0020+00 1/0 0/0 0/0 .data l_daAlldie_Method */ SECTION_DATA static void* l_daAlldie_Method[8] = { - (void*)daAlldie_Create__FP10fopAc_ac_c, - (void*)daAlldie_Delete__FP10daAlldie_c, - (void*)daAlldie_Execute__FP10daAlldie_c, - (void*)daAlldie_IsDelete__FP10daAlldie_c, - (void*)daAlldie_Draw__FP10daAlldie_c, + (void*)daAlldie_Create, + (void*)daAlldie_Delete, + (void*)daAlldie_Execute, + (void*)daAlldie_IsDelete, + (void*)daAlldie_Draw, (void*)NULL, (void*)NULL, (void*)NULL, diff --git a/rel/d/a/d_a_arrow/d_a_arrow.cpp b/rel/d/a/d_a_arrow/d_a_arrow.cpp index de09620152..e4e0cf05ba 100644 --- a/rel/d/a/d_a_arrow/d_a_arrow.cpp +++ b/rel/d/a/d_a_arrow/d_a_arrow.cpp @@ -518,7 +518,7 @@ extern "C" extern u32 __float_nan; extern "C" extern u32 __float_max; extern "C" f32 mWaterY__11fopAcM_wt_c[1 + 1 /* padding */]; extern "C" extern u8 mStayNo__20dStage_roomControl_c[4]; -extern "C" extern u8 struct_80450D88[4]; +extern "C" extern u8 m_count__9daArrow_c[4]; extern "C" u8 mParticleTracePCB__13dPa_control_c[4 + 4 /* padding */]; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; extern "C" void __register_global_object(); diff --git a/rel/d/a/d_a_boomerang/d_a_boomerang.cpp b/rel/d/a/d_a_boomerang/d_a_boomerang.cpp index af0f885222..5bd6f439f4 100644 --- a/rel/d/a/d_a_boomerang/d_a_boomerang.cpp +++ b/rel/d/a/d_a_boomerang/d_a_boomerang.cpp @@ -346,7 +346,7 @@ extern "C" u8 mCurrentMtx__6J3DSys[48]; extern "C" u8 sincosTable___5JMath[65536]; extern "C" f32 mRoofY__11fopAcM_rc_c; extern "C" f32 mWaterY__11fopAcM_wt_c[1 + 1 /* padding */]; -extern "C" extern u8 struct_8045101C[4]; +extern "C" extern u8 m_dropAngleY__20daPy_boomerangMove_c[4]; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; // diff --git a/rel/d/a/d_a_swc00/d_a_swc00.cpp b/rel/d/a/d_a_swc00/d_a_swc00.cpp index 061b7df3db..4c32ca25a0 100644 --- a/rel/d/a/d_a_swc00/d_a_swc00.cpp +++ b/rel/d/a/d_a_swc00/d_a_swc00.cpp @@ -6,47 +6,25 @@ #include "rel/d/a/d_a_swc00/d_a_swc00.h" #include "dol2asm.h" #include "dolphin/types.h" +#include "d/com/d_com_inf_game.h" // // Types: // -struct mDoMtx_stack_c { - static u8 now[48]; -}; - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); -}; - -struct daSwc00_c { - /* 805A15FC */ void execute(); +class daSwc00_c : public fopAc_ac_c { +public: + /* 805A15FC */ int execute(); /* 805A18E8 */ void event_proc_call(); /* 805A19A4 */ void actionWait(); /* 805A1A28 */ void actionOrderEvent(); /* 805A1A94 */ void actionEvent(); /* 805A1AF0 */ void actionDead(); -}; - -struct dSv_info_c { - /* 80035200 */ void onSwitch(int, int); - /* 800352B0 */ void offSwitch(int, int); - /* 80035360 */ void isSwitch(int, int) const; -}; - -struct dEvt_control_c { - /* 80042468 */ void reset(); -}; - -struct dEvent_manager_c { - /* 80047698 */ void getEventIdx(fopAc_ac_c*, u8); - /* 80047A78 */ void endCheck(s16); -}; - -struct Vec {}; - -struct cXyz { - /* 80266B34 */ void operator-(Vec const&) const; + + /* 0x568 */ cXyz field_0x568; + /* 0x574 */ cXyz field_0x574; + /* 0x580 */ u16 mEventID; + /* 0x582 */ u8 mAction; }; // @@ -71,7 +49,6 @@ extern "C" extern void* g_profile_SWC00[12]; // External References: // -extern "C" void OSReport_Error(); extern "C" void mDoMtx_YrotS__FPA4_fs(); extern "C" void __ct__10fopAc_ac_cFv(); extern "C" void fopAcM_delete__FP10fopAc_ac_c(); @@ -84,12 +61,9 @@ extern "C" void reset__14dEvt_control_cFv(); extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cUc(); extern "C" void endCheck__16dEvent_manager_cFs(); extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void PSMTXMultVec(); extern "C" void __ptmf_scall(); extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; extern "C" extern u8 data_805A1F28[4]; // @@ -101,25 +75,71 @@ extern "C" extern u8 data_805A1F28[4]; SECTION_RODATA static f32 const lit_3708 = -100.0f; COMPILER_STRIP_GATE(0x805A1D94, &lit_3708); +inline u8 daSwc00_getCondition(daSwc00_c* i_this) { + return i_this->mCollisionRot.x; +} + +inline int daSwc00_getShape(daSwc00_c* i_this) { + return (fopAcM_GetParam(i_this) >> 0x12) & 3; +} + /* 805A13F8-805A15DC 000078 01E4+00 1/1 0/0 0/0 .text hitCheck__FP9daSwc00_c */ +// r30 / r31 swap +#ifdef NONMATCHING +static bool hitCheck(daSwc00_c* i_swc) { + fopAc_ac_c* playerAc = daPy_getPlayerActorClass(); + fopAc_ac_c* player; + + if (daSwc00_getCondition(i_swc) == 2) { + player = (fopAc_ac_c*)i_dComIfGp_getHorseActor(); + } else { + player = playerAc; + } + + if (player == NULL) { + return false; + } + + int shape = daSwc00_getShape(i_swc); + if (shape == 3) { + f32 xz_dist = fopAcM_searchActorDistanceXZ2(i_swc, player); + f32 y_dist = fopAcM_searchActorDistanceY(i_swc, player); + + if (xz_dist < i_swc->mScale.x && -100.0f < y_dist && y_dist < i_swc->mScale.y) { + return true; + } + } else if (shape == 0) { + cXyz tmp1 = i_swc->field_0x568 - i_swc->current.pos; + cXyz tmp2 = i_swc->field_0x574 - i_swc->current.pos; + cXyz player_dist = player->current.pos - i_swc->current.pos; + + mDoMtx_stack_c::YrotS(-i_swc->current.angle.y); + mDoMtx_stack_c::multVec(&player_dist, &player_dist); + + if ((tmp1.x <= player_dist.x && player_dist.x <= tmp2.x) && + (tmp1.y <= player_dist.y && player_dist.y <= tmp2.y) && + (tmp1.z <= player_dist.z && player_dist.z <= tmp2.z)) { + return true; + } + } + + return false; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void hitCheck(daSwc00_c* param_0) { +static asm bool hitCheck(daSwc00_c* param_0) { nofralloc #include "asm/rel/d/a/d_a_swc00/d_a_swc00/hitCheck__FP9daSwc00_c.s" } #pragma pop +#endif /* 805A15DC-805A15FC 00025C 0020+00 1/0 0/0 0/0 .text daSwc00_Execute__FP9daSwc00_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daSwc00_Execute(daSwc00_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_swc00/d_a_swc00/daSwc00_Execute__FP9daSwc00_c.s" +static int daSwc00_Execute(daSwc00_c* i_this) { + return i_this->execute(); } -#pragma pop /* ############################################################################################## */ /* 805A1DAC-805A1DAC 000018 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -127,6 +147,7 @@ static asm void daSwc00_Execute(daSwc00_c* param_0) { #pragma force_active on SECTION_DEAD static char const* const stringBase_805A1DAC = "領域スイッチ:引数0が不正値<%d>です\n"; + // "Area Switch: arg 0 is an invalid value <%d>\n"; #pragma pop /* 805A1DD4-805A1DE0 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ @@ -171,7 +192,7 @@ SECTION_DATA static void* lit_3812[16] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daSwc00_c::execute() { +asm int daSwc00_c::execute() { nofralloc #include "asm/rel/d/a/d_a_swc00/d_a_swc00/execute__9daSwc00_cFv.s" } diff --git a/rel/d/a/d_a_tboxSw/d_a_tboxSw.cpp b/rel/d/a/d_a_tboxSw/d_a_tboxSw.cpp index 5b3b0a667d..367c674780 100644 --- a/rel/d/a/d_a_tboxSw/d_a_tboxSw.cpp +++ b/rel/d/a/d_a_tboxSw/d_a_tboxSw.cpp @@ -6,145 +6,85 @@ #include "rel/d/a/d_a_tboxSw/d_a_tboxSw.h" #include "dol2asm.h" #include "dolphin/types.h" - -// -// Types: -// - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); -}; - -struct daTboxSw_c { - /* 80D66858 */ bool Create(); - /* 80D66860 */ void create(); - /* 80D668C8 */ void execute(); - /* 80D66938 */ bool draw(); - /* 80D66940 */ bool _delete(); -}; - -struct dSv_memBit_c { - /* 800347E8 */ void isTbox(int) const; -}; - -struct dSv_info_c { - /* 80035200 */ void onSwitch(int, int); -}; - -// -// Forward References: -// - -extern "C" bool Create__10daTboxSw_cFv(); -extern "C" void create__10daTboxSw_cFv(); -extern "C" void execute__10daTboxSw_cFv(); -extern "C" bool draw__10daTboxSw_cFv(); -extern "C" bool _delete__10daTboxSw_cFv(); -extern "C" static void daTboxSw_Draw__FP10daTboxSw_c(); -extern "C" static void daTboxSw_Execute__FP10daTboxSw_c(); -extern "C" static void daTboxSw_Delete__FP10daTboxSw_c(); -extern "C" static void daTboxSw_Create__FP10fopAc_ac_c(); -extern "C" extern void* g_profile_TBOX_SW[12]; +#include "d/com/d_com_inf_game.h" // // External References: // -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void isTbox__12dSv_memBit_cCFi(); -extern "C" void onSwitch__10dSv_info_cFii(); extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; // // Declarations: // /* 80D66858-80D66860 000078 0008+00 1/1 0/0 0/0 .text Create__10daTboxSw_cFv */ -bool daTboxSw_c::Create() { - return true; +int daTboxSw_c::Create() { + return 1; } /* 80D66860-80D668C8 000080 0068+00 1/1 0/0 0/0 .text create__10daTboxSw_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daTboxSw_c::create() { - nofralloc -#include "asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/create__10daTboxSw_cFv.s" +int daTboxSw_c::create() { + if (!fopAcM_CheckCondition(this, 8)) { + new (this) daTboxSw_c(); + fopAcM_OnCondition(this, 8); + } + + if (!Create()) { + return cPhs_ERROR_e; + } + + return cPhs_COMPLEATE_e; } -#pragma pop /* 80D668C8-80D66938 0000E8 0070+00 1/1 0/0 0/0 .text execute__10daTboxSw_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daTboxSw_c::execute() { - nofralloc -#include "asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/execute__10daTboxSw_cFv.s" +int daTboxSw_c::execute() { + if (dComIfGs_isTbox(daTboxSw_prm::getTboxNo(this))) { + dComIfGs_onSwitch(daTboxSw_prm::getSwNo(this), fopAcM_GetHomeRoomNo(this)); + fopAcM_delete(this); + } + + return 1; } -#pragma pop /* 80D66938-80D66940 000158 0008+00 1/1 0/0 0/0 .text draw__10daTboxSw_cFv */ -bool daTboxSw_c::draw() { - return true; +int daTboxSw_c::draw() { + return 1; } /* 80D66940-80D66948 000160 0008+00 1/1 0/0 0/0 .text _delete__10daTboxSw_cFv */ -bool daTboxSw_c::_delete() { - return true; +int daTboxSw_c::_delete() { + return 1; } /* 80D66948-80D66968 000168 0020+00 1/0 0/0 0/0 .text daTboxSw_Draw__FP10daTboxSw_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daTboxSw_Draw(daTboxSw_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/daTboxSw_Draw__FP10daTboxSw_c.s" +static int daTboxSw_Draw(daTboxSw_c* i_this) { + return i_this->draw(); } -#pragma pop /* 80D66968-80D66988 000188 0020+00 1/0 0/0 0/0 .text daTboxSw_Execute__FP10daTboxSw_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daTboxSw_Execute(daTboxSw_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/daTboxSw_Execute__FP10daTboxSw_c.s" +static int daTboxSw_Execute(daTboxSw_c* i_this) { + return i_this->execute(); } -#pragma pop /* 80D66988-80D669A8 0001A8 0020+00 1/0 0/0 0/0 .text daTboxSw_Delete__FP10daTboxSw_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daTboxSw_Delete(daTboxSw_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/daTboxSw_Delete__FP10daTboxSw_c.s" +static int daTboxSw_Delete(daTboxSw_c* i_this) { + return i_this->_delete(); } -#pragma pop /* 80D669A8-80D669C8 0001C8 0020+00 1/0 0/0 0/0 .text daTboxSw_Create__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daTboxSw_Create(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_tboxSw/d_a_tboxSw/daTboxSw_Create__FP10fopAc_ac_c.s" +static int daTboxSw_Create(fopAc_ac_c* i_this) { + return static_cast(i_this)->create(); } -#pragma pop /* ############################################################################################## */ /* 80D669D0-80D669F0 -00001 0020+00 1/0 0/0 0/0 .data l_daTboxSw_Method */ SECTION_DATA static void* l_daTboxSw_Method[8] = { - (void*)daTboxSw_Create__FP10fopAc_ac_c, - (void*)daTboxSw_Delete__FP10daTboxSw_c, - (void*)daTboxSw_Execute__FP10daTboxSw_c, + (void*)daTboxSw_Create, + (void*)daTboxSw_Delete, + (void*)daTboxSw_Execute, (void*)NULL, - (void*)daTboxSw_Draw__FP10daTboxSw_c, + (void*)daTboxSw_Draw, (void*)NULL, (void*)NULL, (void*)NULL, diff --git a/rel/d/a/e/d_a_e_wb/d_a_e_wb.cpp b/rel/d/a/e/d_a_e_wb/d_a_e_wb.cpp index 77a356fabe..fc951ee7e7 100644 --- a/rel/d/a/e/d_a_e_wb/d_a_e_wb.cpp +++ b/rel/d/a/e/d_a_e_wb/d_a_e_wb.cpp @@ -3,6 +3,7 @@ // Translation Unit: d_a_e_wb // + #include "rel/d/a/e/d_a_e_wb/d_a_e_wb.h" #include "dol2asm.h" #include "dolphin/types.h" @@ -15,24 +16,6 @@ namespace std { /* 807E2350 */ void fabsf(f32); }; -struct mDoMtx_stack_c { - /* 8000CD9C */ void transM(f32, f32, f32); - /* 8000CE38 */ void scaleM(f32, f32, f32); - /* 807E2858 */ void multVec(Vec const*, Vec*); - /* 807E288C */ void YrotS(s16); - - static u8 now[48]; -}; - -struct mDoGph_gInf_c { - /* 80007FD8 */ void fadeOut(f32, _GXColor&); - /* 807DFAB4 */ void fadeIn(f32, _GXColor&); -}; - -struct mDoCPd_c { - static u8 m_cpadInfo[256]; -}; - struct himo_s { /* 807E1CCC */ ~himo_s(); /* 807E1D2C */ himo_s(); @@ -52,71 +35,10 @@ struct daE_WB_HIO_c { /* 807E20DC */ ~daE_WB_HIO_c(); }; -struct daAlink_c { - /* 800ED0D4 */ void getHorseReinHandPos(cXyz*, cXyz*); - /* 800ED1F0 */ void checkHorseNotGrab() const; -}; - -struct dVibration_c { - /* 8006FA24 */ void StartShock(int, int, cXyz); - /* 8006FB10 */ void StartQuake(int, int, cXyz); - /* 8006FD94 */ void StopQuake(int); -}; - -struct dPa_levelEcallBack {}; - -struct dPa_control_c { - struct level_c { - /* 8004B918 */ void getEmitter(u32); - }; - - /* 8004C218 */ void setHitMark(u16, fopAc_ac_c*, cXyz const*, csXyz const*, cXyz const*, u32); - /* 8004D4CC */ void set(u32, u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, - cXyz const*, u8, dPa_levelEcallBack*, s8, _GXColor const*, - _GXColor const*, cXyz const*, f32); - /* 8004CA90 */ void set(u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, cXyz const*, - u8, dPa_levelEcallBack*, s8, _GXColor const*, _GXColor const*, - cXyz const*, f32); -}; - struct dMsgObject_c { /* 8023822C */ void getStatus(); }; -struct dEvt_control_c { - /* 80042468 */ void reset(); - /* 80042914 */ void setSkipProc(void*, int (*)(void*, int), int); - /* 807DFAD8 */ void checkSkipEdge(); - /* 807E2908 */ void startCheckSkipEdge(void*); -}; - -struct dEvent_manager_c { - /* 80047B1C */ void getMyStaffId(char const*, fopAc_ac_c*, int); - /* 800480EC */ void getMySubstanceP(int, char const*, int); - /* 8004817C */ void cutEnd(int); -}; - -struct dComIfG_play_c { - /* 8002C97C */ void getLayerNo(int); -}; - -struct dCcU_AtInfo {}; - -struct dCamera_c { - /* 801614AC */ void Start(); - /* 801614D0 */ void Stop(); - /* 8016300C */ void SetTrimSize(s32); - /* 80180B40 */ void Set(cXyz, cXyz, s16, f32); - /* 80180BA0 */ void Reset(cXyz, cXyz, f32, s16); - /* 80180C18 */ void Reset(cXyz, cXyz); -}; - -struct camera_class {}; - -struct cCcS { - /* 80264BA8 */ void Set(cCcD_Obj*); -}; - // // Forward References: // @@ -211,8 +133,8 @@ extern "C" void changeDemoParam2__9daPy_py_cFs(); extern "C" void fabsf__3stdFf(); extern "C" void __ct__4cXyzFRC4cXyz(); extern "C" static void cMtx_YrotS__FPA4_fs(); -extern "C" static void fopAcM_searchPlayerAngleY__FPC10fopAc_ac_c(); -extern "C" static void dComIfGs_onEventBit__FUs(); +extern "C" static void fopAcM_searchPlayerAngleY__FPC10fopAc_ac_c(fopAc_ac_c const* param_0); +extern "C" static void dComIfGs_onEventBit__FUs(u16); extern "C" static void Z2GetAudioMgr__Fv(); extern "C" void cancelOriginalDemo__9daPy_py_cFv(); extern "C" static void dComIfGp_event_reset__Fv(); @@ -226,15 +148,16 @@ extern "C" void checkCommandDemoAccrpt__11dEvt_info_cFv(); extern "C" void __ct__4cXyzFv(); extern "C" static void fopAcM_SearchByName__Fs(); extern "C" static void fopAcM_SearchByID__FUi(unsigned int); -extern "C" static void dComIfGp_getHorseActor__Fv(); -extern "C" static void dComIfGp_getPlayer__Fi(); -extern "C" static void dComIfGp_getCamera__Fi(); +extern "C" static daHorse_c* dComIfGp_getHorseActor__Fv(); +extern "C" static void dComIfGp_getPlayer__Fi(int); +extern "C" static void dComIfGp_getCamera__Fi(int); extern "C" static void dComIfGp_getPlayerCameraID__Fi(); extern "C" static void dMsgObject_isTalkNowCheck__Fv(); extern "C" void abs__4cXyzCFv(); extern "C" static void cMtx_XrotM__FPA4_fs(); extern "C" static void JMAFastSqrt__Ff(); -extern "C" static void dComIfGp_particle_set__FUlUsPC4cXyzPC5csXyzPC4cXyz(); +extern "C" static void dComIfGp_particle_set__FUlUsPC4cXyzPC5csXyzPC4cXyz(u32 param_0, u16 param_1, cXyz const* param_2, + csXyz const* param_3, cXyz const* param_4); extern "C" void cancelOriginalDemo__9daHorse_cFv(); extern "C" void __ct__10JAISoundIDFUl(u32* this_replacement, u32 param_0); extern "C" static void dComIfGp_getVibration__Fv(); @@ -242,8 +165,8 @@ extern "C" void __ct__4cXyzFfff(); extern "C" void onDemoJumpDistance__9daHorse_cFff(); extern "C" void __as__4cXyzFRC4cXyz(); extern "C" void __apl__4cXyzFRC3Vec(); -extern "C" void multVec__14mDoMtx_stack_cFPC3VecP3Vec(); -extern "C" void YrotS__14mDoMtx_stack_cFs(); +extern "C" void multVec__14mDoMtx_stack_cFPC3VecP3Vec(Vec const* param_0, Vec* param_1); +extern "C" void YrotS__14mDoMtx_stack_cFs(s16); extern "C" void changeDemoPos0__9daHorse_cFPC4cXyz(); extern "C" void changeDemoMode__9daHorse_cFUli(); extern "C" void setHorsePosAndAngle__9daHorse_cFPC4cXyzs(); @@ -437,11 +360,9 @@ extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; extern "C" extern void* __vt__9cCcD_Stts[8]; extern "C" u8 m_cpadInfo__8mDoCPd_c[256]; extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; extern "C" u8 mCurrentMtx__6J3DSys[48]; extern "C" u8 sincosTable___5JMath[65536]; -extern "C" extern u32 g_blackColor; //extern "C" extern void* calc_mtx[1 + 1 /* padding */]; extern "C" extern u8 struct_80450C98[4]; extern "C" f32 mGroundY__11fopAcM_gc_c; @@ -4679,7 +4600,7 @@ static asm void cMtx_YrotS(f32 (*param_0)[4], s16 param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void fopAcM_searchPlayerAngleY(fopAc_ac_c const* param_0) { +static asm void fopAcM_searchPlayerAngleY__FPC10fopAc_ac_c(fopAc_ac_c const* param_0) { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/fopAcM_searchPlayerAngleY__FPC10fopAc_ac_c.s" } @@ -4689,7 +4610,7 @@ static asm void fopAcM_searchPlayerAngleY(fopAc_ac_c const* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGs_onEventBit(u16 param_0) { +static asm void dComIfGs_onEventBit__FUs(u16 param_0) { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/dComIfGs_onEventBit__FUs.s" } @@ -4740,7 +4661,7 @@ asm void daPy_py_c::changeOriginalDemo() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void daPy_getPlayerActorClass() { +static asm void daPy_getPlayerActorClass__Fv() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/daPy_getPlayerActorClass__Fv.s" } @@ -4831,7 +4752,7 @@ extern "C" static asm void fopAcM_SearchByID__FUi(unsigned int param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_getHorseActor() { +static asm daHorse_c* dComIfGp_getHorseActor__Fv() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/dComIfGp_getHorseActor__Fv.s" } @@ -4841,7 +4762,7 @@ static asm void dComIfGp_getHorseActor() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_getPlayer(int param_0) { +static asm void dComIfGp_getPlayer__Fi(int param_0) { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/dComIfGp_getPlayer__Fi.s" } @@ -4851,7 +4772,7 @@ static asm void dComIfGp_getPlayer(int param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_getCamera(int param_0) { +static asm void dComIfGp_getCamera__Fi(int param_0) { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/dComIfGp_getCamera__Fi.s" } @@ -4861,7 +4782,7 @@ static asm void dComIfGp_getCamera(int param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_getPlayerCameraID(int param_0) { +static asm s8 dComIfGp_getPlayerCameraID(int param_0) { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/dComIfGp_getPlayerCameraID__Fi.s" } @@ -4913,7 +4834,7 @@ static asm void JMAFastSqrt(f32 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_particle_set(u32 param_0, u16 param_1, cXyz const* param_2, +static asm void dComIfGp_particle_set__FUlUsPC4cXyzPC5csXyzPC4cXyz(u32 param_0, u16 param_1, cXyz const* param_2, csXyz const* param_3, cXyz const* param_4) { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/dComIfGp_particle_set__FUlUsPC4cXyzPC5csXyzPC4cXyz.s" @@ -4939,7 +4860,7 @@ extern "C" void __ct__10JAISoundIDFUl(u32* this_replacement, u32 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_getVibration() { +static asm void dComIfGp_getVibration__Fv() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/dComIfGp_getVibration__Fv.s" } @@ -4993,7 +4914,7 @@ extern "C" asm void __apl__4cXyzFRC3Vec() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void mDoMtx_stack_c::multVec(Vec const* param_0, Vec* param_1) { +asm void multVec__14mDoMtx_stack_cFPC3VecP3Vec(Vec const* param_0, Vec* param_1) { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/multVec__14mDoMtx_stack_cFPC3VecP3Vec.s" } @@ -5003,7 +4924,7 @@ asm void mDoMtx_stack_c::multVec(Vec const* param_0, Vec* param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void mDoMtx_stack_c::YrotS(s16 param_0) { +asm void YrotS__14mDoMtx_stack_cFs(s16 param_0) { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/YrotS__14mDoMtx_stack_cFs.s" } @@ -5054,7 +4975,7 @@ asm void dEvt_control_c::startCheckSkipEdge(void* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_getEvent() { +static asm dEvt_control_c& dComIfGp_getEvent() { nofralloc #include "asm/rel/d/a/e/d_a_e_wb/d_a_e_wb/dComIfGp_getEvent__Fv.s" } diff --git a/rel/d/a/e/d_a_e_yc/d_a_e_yc.cpp b/rel/d/a/e/d_a_e_yc/d_a_e_yc.cpp index 4d47bde9df..2ed1d13fe2 100644 --- a/rel/d/a/e/d_a_e_yc/d_a_e_yc.cpp +++ b/rel/d/a/e/d_a_e_yc/d_a_e_yc.cpp @@ -7,180 +7,6 @@ #include "dol2asm.h" #include "dolphin/types.h" -// -// Types: -// - -struct request_of_phase_process_class {}; - -struct mDoMtx_stack_c { - /* 8000CE38 */ void scaleM(f32, f32, f32); - - static u8 now[48]; -}; - -struct mDoExt_McaMorfCallBack2_c {}; - -struct mDoExt_McaMorfCallBack1_c {}; - -struct J3DAnmTransform {}; - -struct J3DModelData {}; - -struct Z2Creature {}; - -struct mDoExt_McaMorfSO { - /* 800107D0 */ mDoExt_McaMorfSO(J3DModelData*, mDoExt_McaMorfCallBack1_c*, - mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int, - int, Z2Creature*, u32, u32); - /* 80010E70 */ void setAnm(J3DAnmTransform*, int, f32, f32, f32, f32); - /* 800110B0 */ void play(u32, s8); - /* 800111C0 */ void entryDL(); - /* 800111EC */ void modelCalc(); - /* 80011310 */ void stopZelAnime(); -}; - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); -}; - -struct e_yc_class {}; - -struct daE_YC_HIO_c { - /* 807EFECC */ daE_YC_HIO_c(); - /* 807F27BC */ ~daE_YC_HIO_c(); -}; - -struct Vec {}; - -struct cXyz { - /* 80266B34 */ void operator-(Vec const&) const; -}; - -struct dVibration_c { - /* 8006FA24 */ void StartShock(int, int, cXyz); -}; - -struct dKy_tevstr_c {}; - -struct dScnKy_env_light_c { - /* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*); - /* 801A4DA0 */ void setLightTevColorType_MAJI(J3DModelData*, dKy_tevstr_c*); -}; - -struct dRes_info_c {}; - -struct dRes_control_c { - /* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int); -}; - -struct dPa_levelEcallBack {}; - -struct csXyz {}; - -struct _GXColor {}; - -struct dPa_control_c { - struct level_c { - /* 8004B918 */ void getEmitter(u32); - }; - - /* 8004C218 */ void setHitMark(u16, fopAc_ac_c*, cXyz const*, csXyz const*, cXyz const*, u32); - /* 8004D4CC */ void set(u32, u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, - cXyz const*, u8, dPa_levelEcallBack*, s8, _GXColor const*, - _GXColor const*, cXyz const*, f32); - /* 8004CA90 */ void set(u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, cXyz const*, - u8, dPa_levelEcallBack*, s8, _GXColor const*, _GXColor const*, - cXyz const*, f32); -}; - -struct dDlst_shadowControl_c { - static u8 mSimpleTexObj[32]; -}; - -struct dCcD_Stts { - /* 80083860 */ void Init(int, int, fopAc_ac_c*); -}; - -struct dCcD_SrcSph {}; - -struct dCcD_Sph { - /* 80084A34 */ void Set(dCcD_SrcSph const&); -}; - -struct dCcD_GStts { - /* 80083760 */ dCcD_GStts(); - /* 80083830 */ void Move(); -}; - -struct dCcD_GObjInf { - /* 80083A28 */ dCcD_GObjInf(); - /* 80084460 */ void ChkTgHit(); - /* 800844F8 */ void GetTgHitObj(); -}; - -struct dBgS_PolyPassChk { - /* 80078E68 */ void SetObj(); -}; - -struct dBgS_ObjAcch { - /* 807F274C */ ~dBgS_ObjAcch(); -}; - -struct dBgS_AcchCir { - /* 80075EAC */ dBgS_AcchCir(); - /* 80075F58 */ void SetWall(f32, f32); -}; - -struct dBgS {}; - -struct dBgS_Acch { - /* 80075F94 */ ~dBgS_Acch(); - /* 800760A0 */ dBgS_Acch(); - /* 80076248 */ void Set(cXyz*, cXyz*, fopAc_ac_c*, int, dBgS_AcchCir*, cXyz*, csXyz*, csXyz*); - /* 80076AAC */ void CrrPos(dBgS&); -}; - -struct cM3dGSph { - /* 8026F648 */ void SetC(cXyz const&); - /* 8026F708 */ void SetR(f32); - /* 807F26BC */ ~cM3dGSph(); -}; - -struct cM3dGAab { - /* 807F2704 */ ~cM3dGAab(); -}; - -struct cCcD_Obj {}; - -struct cCcS { - /* 80264BA8 */ void Set(cCcD_Obj*); -}; - -struct cBgS_PolyInfo {}; - -struct _GXTexObj {}; - -struct Z2CreatureEnemy { - /* 802C0F64 */ Z2CreatureEnemy(); - /* 802C1094 */ void init(Vec*, Vec*, u8, u8); - /* 802C1B7C */ void setLinkSearch(bool); - /* 802C1B90 */ void setEnemyName(char const*); -}; - -struct JGeometry { - template - struct TVec3 {}; - /* TVec3 */ - struct TVec3__template0 {}; -}; - -struct J3DModel {}; - -struct J3DFrameCtrl { - /* 8032842C */ void checkPass(f32); -}; - // // Forward References: // @@ -282,11 +108,6 @@ extern "C" void setEnemyName__15Z2CreatureEnemyFPCc(); extern "C" void* __nw__FUl(); extern "C" void __dl__FPv(); extern "C" void checkPass__12J3DFrameCtrlFf(); -extern "C" void PSMTXCopy(); -extern "C" void PSMTXTrans(); -extern "C" void PSMTXMultVec(); -extern "C" void PSVECAdd(); -extern "C" void PSVECSquareMag(); extern "C" void _savegpr_24(); extern "C" void _savegpr_25(); extern "C" void _savegpr_27(); @@ -298,19 +119,15 @@ extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; extern "C" extern void* __vt__8dCcD_Sph[36]; extern "C" extern void* __vt__9dCcD_Stts[11]; extern "C" extern void* __vt__12cCcD_SphAttr[25]; extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; extern "C" extern void* __vt__9cCcD_Stts[8]; extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; +// extern "C" extern u8 g_dComIfG_gameInfo[122384]; extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" extern u8 g_env_light[4880]; -extern "C" extern u8 j3dSys[284]; -extern "C" extern void* calc_mtx[1 + 1 /* padding */]; -extern "C" extern u32 __float_nan; +// extern "C" extern void* calc_mtx[1 + 1 /* padding */]; extern "C" extern u8 pauseTimer__9dScnPly_c[4]; extern "C" void __register_global_object(); @@ -513,6 +330,19 @@ static asm void daE_YC_Draw(e_yc_class* param_0) { #pragma pop /* 807F00BC-807F01AC 0002DC 00F0+00 1/1 0/0 0/0 .text damage_check__FP10e_yc_class */ +#ifdef NONMATCHING +static void damage_check(e_yc_class* param_0) { + param_0->mCcD_GStts.Move(); + fopAc_ac_c* player = dComIfGp_getPlayer(0); + if (param_0->field_0x6AA == 0 && !param_0->mCcD_GObjInf.ChkTgHit()) { + param_0->mpTgHitObj = param_0->mCcD_GObjInf.GetTgHitObj(); + + if (((daAlink_c*)player)->getCutType() != 0x2c) { + return; + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -521,6 +351,7 @@ static asm void damage_check(e_yc_class* param_0) { #include "asm/rel/d/a/e/d_a_e_yc/d_a_e_yc/damage_check__FP10e_yc_class.s" } #pragma pop +#endif /* ############################################################################################## */ /* 807F2878-807F287C 000014 0004+00 0/2 0/0 0/0 .rodata @3859 */ diff --git a/rel/d/a/kytag/d_a_kytag14/d_a_kytag14.cpp b/rel/d/a/kytag/d_a_kytag14/d_a_kytag14.cpp index 01faa09370..0bc51a37ab 100644 --- a/rel/d/a/kytag/d_a_kytag14/d_a_kytag14.cpp +++ b/rel/d/a/kytag/d_a_kytag14/d_a_kytag14.cpp @@ -1,64 +1,18 @@ -// -// Generated By: dol2asm -// Translation Unit: d_a_kytag14 -// +/** + * d_a_kytag14.cpp + * Savmem + * Sets savefile spawn location + */ #include "rel/d/a/kytag/d_a_kytag14/d_a_kytag14.h" +#include "d/com/d_com_inf_game.h" #include "dol2asm.h" -#include "dolphin/types.h" - -// -// Types: -// - -struct kytag14_class {}; - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); -}; - -struct dSv_player_return_place_c { - /* 80032D1C */ void set(char const*, s8, u8); -}; - -struct dSv_info_c { - /* 80035360 */ void isSwitch(int, int) const; -}; - -struct dSv_event_flag_c { - static u8 saveBitLabels[1644 + 4 /* padding */]; -}; - -struct dSv_event_c { - /* 800349BC */ void isEventBit(u16) const; -}; - -// -// Forward References: -// - -extern "C" static bool daKytag14_Draw__FP13kytag14_class(); -extern "C" static void daKytag14_Execute__FP13kytag14_class(); -extern "C" static bool daKytag14_IsDelete__FP13kytag14_class(); -extern "C" static bool daKytag14_Delete__FP13kytag14_class(); -extern "C" static void daKytag14_Create__FP10fopAc_ac_c(); -extern "C" extern void* g_profile_KYTAG14[12]; // // External References: // -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void set__25dSv_player_return_place_cFPCcScUc(); -extern "C" void isEventBit__11dSv_event_cCFUs(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void _savegpr_27(); -extern "C" void _restgpr_27(); extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; -extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 mStayNo__20dStage_roomControl_c[4]; // // Declarations: @@ -66,49 +20,104 @@ extern "C" extern u8 mStayNo__20dStage_roomControl_c[4]; /* 80529998-805299A0 000078 0008+00 1/0 0/0 0/0 .text daKytag14_Draw__FP13kytag14_class */ -static bool daKytag14_Draw(kytag14_class* param_0) { - return true; +static int daKytag14_Draw(kytag14_class*) { + return 1; } /* 805299A0-80529B34 000080 0194+00 1/0 0/0 0/0 .text daKytag14_Execute__FP13kytag14_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daKytag14_Execute(kytag14_class* param_0) { - nofralloc -#include "asm/rel/d/a/kytag/d_a_kytag14/d_a_kytag14/daKytag14_Execute__FP13kytag14_class.s" +static int daKytag14_Execute(kytag14_class* i_this) { + BOOL event1_set = true; + BOOL event2_unset = true; + BOOL switch1_set = true; + BOOL switch2_unset = true; + + if (dComIfGs_isTmpBit(0x1301)) { + return 1; + } + + if (i_this->mEventID1 != 0xFFFF) { + if (i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[i_this->mEventID1])) { + event1_set = true; + } else { + event1_set = false; + } + } + + if (i_this->mEventID2 != 0xFFFF) { + if (!i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[i_this->mEventID2])) { + event2_unset = true; + } else { + event2_unset = false; + } + } + + if (i_this->mSwitchNo1 != 0xFF) { + s32 stayNo = dComIfGp_roomControl_getStayNo(); + if (dComIfGs_isSwitch(i_this->mSwitchNo1, stayNo)) { + switch1_set = true; + } else { + switch1_set = false; + } + } + + if (i_this->mSwitchNo2 != 0xFF) { + s32 stayNo = dComIfGp_roomControl_getStayNo(); + if (!dComIfGs_isSwitch(i_this->mSwitchNo2, stayNo)) { + switch2_unset = true; + } else { + switch2_unset = false; + } + } + + if (event1_set == true && event2_unset == true && switch1_set == true && switch2_unset == true) { + g_dComIfG_gameInfo.info.getPlayer().getPlayerReturnPlace().set( + dComIfGp_getStartStageName(), i_this->mSaveRoomNo, i_this->mSavePoint); + } + + return 1; } -#pragma pop /* 80529B34-80529B3C 000214 0008+00 1/0 0/0 0/0 .text daKytag14_IsDelete__FP13kytag14_class */ -static bool daKytag14_IsDelete(kytag14_class* param_0) { - return true; +static int daKytag14_IsDelete(kytag14_class*) { + return 1; } /* 80529B3C-80529B44 00021C 0008+00 1/0 0/0 0/0 .text daKytag14_Delete__FP13kytag14_class */ -static bool daKytag14_Delete(kytag14_class* param_0) { - return true; +static int daKytag14_Delete(kytag14_class*) { + return 1; } /* 80529B44-80529BE0 000224 009C+00 1/0 0/0 0/0 .text daKytag14_Create__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daKytag14_Create(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/kytag/d_a_kytag14/d_a_kytag14/daKytag14_Create__FP10fopAc_ac_c.s" +static int daKytag14_Create(fopAc_ac_c* i_this) { + if (!fopAcM_CheckCondition(i_this, 8)) { + new (i_this) kytag14_class(); + fopAcM_OnCondition(i_this, 8); + } + kytag14_class* kytag = static_cast(i_this); + + kytag->mSavePoint = fopAcM_GetParam(kytag); + kytag->mSaveRoomNo = (fopAcM_GetParam(kytag) >> 8) & 0xFF; + kytag->mEventID1 = kytag->current.angle.x; + kytag->mEventID2 = kytag->current.angle.y; + kytag->mSwitchNo1 = kytag->current.angle.z; + kytag->mSwitchNo2 = (kytag->current.angle.z >> 8) & 0xFF; + + if (kytag->orig.mRoomNo != -1) { + kytag->mSaveRoomNo = kytag->orig.mRoomNo; + } + + return cPhs_COMPLEATE_e; } -#pragma pop /* ############################################################################################## */ /* 80529BE8-80529C08 -00001 0020+00 1/0 0/0 0/0 .data l_daKytag14_Method */ SECTION_DATA static void* l_daKytag14_Method[8] = { - (void*)daKytag14_Create__FP10fopAc_ac_c, - (void*)daKytag14_Delete__FP13kytag14_class, - (void*)daKytag14_Execute__FP13kytag14_class, - (void*)daKytag14_IsDelete__FP13kytag14_class, - (void*)daKytag14_Draw__FP13kytag14_class, + (void*)daKytag14_Create, + (void*)daKytag14_Delete, + (void*)daKytag14_Execute, + (void*)daKytag14_IsDelete, + (void*)daKytag14_Draw, (void*)NULL, (void*)NULL, (void*)NULL, diff --git a/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart.cpp b/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart.cpp index cf68a8d26a..016702e8ca 100644 --- a/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart.cpp +++ b/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart.cpp @@ -4,132 +4,81 @@ // #include "rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart.h" +#include "d/com/d_com_inf_game.h" #include "dol2asm.h" #include "dolphin/types.h" -// -// Types: -// - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); - /* 80018C8C */ ~fopAc_ac_c(); -}; - -struct daTagGstart_c { - /* 805A3478 */ void create(); - /* 805A3514 */ ~daTagGstart_c(); - /* 805A3590 */ void execute(); -}; - -struct dSv_info_c { - /* 80035360 */ void isSwitch(int, int) const; -}; - -// -// Forward References: -// - -extern "C" void create__13daTagGstart_cFv(); -extern "C" static void daTagGstart_Create__FP10fopAc_ac_c(); -extern "C" void __dt__13daTagGstart_cFv(); -extern "C" static void daTagGstart_Delete__FP13daTagGstart_c(); -extern "C" void execute__13daTagGstart_cFv(); -extern "C" static void daTagGstart_Execute__FP13daTagGstart_c(); -extern "C" static bool daTagGstart_Draw__FP13daTagGstart_c(); -extern "C" extern void* g_profile_Tag_Gstart[12]; - // // External References: // -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void __dl__FPv(); extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; // // Declarations: // /* 805A3478-805A34F4 000078 007C+00 1/1 0/0 0/0 .text create__13daTagGstart_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daTagGstart_c::create() { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/create__13daTagGstart_cFv.s" +int daTagGstart_c::create() { + if (!fopAcM_CheckCondition(this, 8)) { + new (this) daTagGstart_c(); + fopAcM_OnCondition(this, 8); + } + + mSwNo = fopAcM_GetParam(this); + mSwNo2 = fopAcM_GetParam(this) >> 8; + field_0x56a = fopAcM_GetParam(this) >> 0x10; + mType = (fopAcM_GetParam(this) >> 0x18) & 0xF; + + return cPhs_COMPLEATE_e; } -#pragma pop /* 805A34F4-805A3514 0000F4 0020+00 1/0 0/0 0/0 .text daTagGstart_Create__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daTagGstart_Create(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/daTagGstart_Create__FP10fopAc_ac_c.s" +static int daTagGstart_Create(fopAc_ac_c* i_this) { + return static_cast(i_this)->create(); } -#pragma pop /* 805A3514-805A3568 000114 0054+00 1/1 0/0 0/0 .text __dt__13daTagGstart_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm daTagGstart_c::~daTagGstart_c() { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/__dt__13daTagGstart_cFv.s" -} -#pragma pop +daTagGstart_c::~daTagGstart_c() {} /* 805A3568-805A3590 000168 0028+00 1/0 0/0 0/0 .text daTagGstart_Delete__FP13daTagGstart_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daTagGstart_Delete(daTagGstart_c* param_0) { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/daTagGstart_Delete__FP13daTagGstart_c.s" +static int daTagGstart_Delete(daTagGstart_c* i_this) { + i_this->~daTagGstart_c(); + return 1; } -#pragma pop /* 805A3590-805A3658 000190 00C8+00 1/1 0/0 0/0 .text execute__13daTagGstart_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daTagGstart_c::execute() { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/execute__13daTagGstart_cFv.s" +int daTagGstart_c::execute() { + if ((mSwNo == 0xFF || dComIfGs_isSwitch(mSwNo, fopAcM_GetHomeRoomNo(this))) && + (mSwNo2 == 0xFF || !dComIfGs_isSwitch(mSwNo2, fopAcM_GetHomeRoomNo(this)))) { + if (mType != 0 || dComIfGp_getLinkPlayer()->i_checkWolf()) { + dComIfGp_getLinkPlayer()->onSceneChangeDead(field_0x56a, fopAcM_GetRoomNo(this)); + } + } + + return 1; } -#pragma pop /* 805A3658-805A3678 000258 0020+00 1/0 0/0 0/0 .text daTagGstart_Execute__FP13daTagGstart_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daTagGstart_Execute(daTagGstart_c* param_0) { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_gstart/d_a_tag_gstart/daTagGstart_Execute__FP13daTagGstart_c.s" +static int daTagGstart_Execute(daTagGstart_c* i_this) { + return i_this->execute(); } -#pragma pop /* 805A3678-805A3680 000278 0008+00 1/0 0/0 0/0 .text daTagGstart_Draw__FP13daTagGstart_c */ -static bool daTagGstart_Draw(daTagGstart_c* param_0) { - return true; +static int daTagGstart_Draw(daTagGstart_c*) { + return 1; } /* ############################################################################################## */ /* 805A3688-805A36A8 -00001 0020+00 1/0 0/0 0/0 .data l_daTagGstart_Method */ SECTION_DATA static void* l_daTagGstart_Method[8] = { - (void*)daTagGstart_Create__FP10fopAc_ac_c, - (void*)daTagGstart_Delete__FP13daTagGstart_c, - (void*)daTagGstart_Execute__FP13daTagGstart_c, + (void*)daTagGstart_Create, + (void*)daTagGstart_Delete, + (void*)daTagGstart_Execute, (void*)NULL, - (void*)daTagGstart_Draw__FP13daTagGstart_c, + (void*)daTagGstart_Draw, (void*)NULL, (void*)NULL, (void*)NULL, diff --git a/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop.cpp b/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop.cpp index 7740d4f0ff..50d9b5f318 100644 --- a/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop.cpp +++ b/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop.cpp @@ -4,211 +4,202 @@ // #include "rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop.h" +#include "d/com/d_com_inf_game.h" #include "dol2asm.h" #include "dolphin/types.h" - -// -// Types: -// - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); - /* 80018C8C */ ~fopAc_ac_c(); -}; - -struct daTagHstop_c { - /* 805A43EC */ void create(); - /* 805A45F8 */ ~daTagHstop_c(); - /* 805A46B8 */ void setActive(); - /* 805A475C */ void execute(); - - static u8 m_top[4 + 4 /* padding */]; - static u8 m_msgFlow[76]; -}; - -struct daPy_py_c { - /* 8015F660 */ void checkRoomRestartStart(); -}; - -struct dSv_info_c { - /* 80035200 */ void onSwitch(int, int); - /* 800352B0 */ void offSwitch(int, int); - /* 80035360 */ void isSwitch(int, int) const; -}; - -struct dMsgFlow_c { - /* 80249F00 */ dMsgFlow_c(); - /* 80249F48 */ ~dMsgFlow_c(); - /* 80249F90 */ void init(fopAc_ac_c*, int, int, fopAc_ac_c**); - /* 8024A2D8 */ void doFlow(fopAc_ac_c*, fopAc_ac_c**, int); -}; - -struct dMeter2Info_c { - /* 8021C11C */ void setFloatingFlow(u16, s16, bool); -}; - -struct dEvt_control_c { - /* 80042468 */ void reset(); -}; - -// -// Forward References: -// - -extern "C" void create__12daTagHstop_cFv(); -extern "C" static void daTagHstop_Create__FP10fopAc_ac_c(); -extern "C" void __dt__12daTagHstop_cFv(); -extern "C" static void daTagHstop_Delete__FP12daTagHstop_c(); -extern "C" void setActive__12daTagHstop_cFv(); -extern "C" void execute__12daTagHstop_cFv(); -extern "C" static void daTagHstop_Execute__FP12daTagHstop_c(); -extern "C" static bool daTagHstop_Draw__FP12daTagHstop_c(); -extern "C" void __sinit_d_a_tag_hstop_cpp(); -extern "C" extern void* g_profile_Tag_Hstop[12]; -extern "C" u8 m_msgFlow__12daTagHstop_c[76]; +#include "rel/d/a/d_a_horse/d_a_horse.h" // // External References: // -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); -extern "C" void fopAcM_orderSpeakEvent__FP10fopAc_ac_cUsUs(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void offSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void checkRoomRestartStart__9daPy_py_cFv(); -extern "C" void setFloatingFlow__13dMeter2Info_cFUssb(); -extern "C" void __ct__10dMsgFlow_cFv(); -extern "C" void __dt__10dMsgFlow_cFv(); -extern "C" void init__10dMsgFlow_cFP10fopAc_ac_ciiPP10fopAc_ac_c(); -extern "C" void doFlow__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_ci(); -extern "C" void __dl__FPv(); extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 g_meter2_info[248]; -extern "C" u8 m_top__12daTagHstop_c[4 + 4 /* padding */]; -extern "C" void __register_global_object(); // // Declarations: // -/* ############################################################################################## */ -/* 805A4B20-805A4B24 000000 0004+00 1/1 0/0 0/0 .rodata @3782 */ -SECTION_RODATA static f32 const lit_3782 = 100.0f; -COMPILER_STRIP_GATE(0x805A4B20, &lit_3782); - /* 805A43EC-805A45D8 0000EC 01EC+00 1/1 0/0 0/0 .text create__12daTagHstop_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daTagHstop_c::create() { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/create__12daTagHstop_cFv.s" +int daTagHstop_c::create() { + if (!fopAcM_CheckCondition(this, 8)) { + new (this) daTagHstop_c(); + fopAcM_OnCondition(this, 8); + } + + mScale.x *= 100.0f; + mScale.y *= 100.0f; + mScale.z *= 100.0f; + + if (m_top != NULL) { + daTagHstop_c* last = m_top; + + while (last->mNext != NULL) { + last = last->mNext; + } + + last->mNext = this; + mPrev = last; + } else { + m_top = this; + } + + mPrm0 = fopAcM_GetParam(this); + mPrm1 = (fopAcM_GetParam(this) >> 8) & 0xF; + + if (mPrm1 == 15) { + mPrm1 = 0; + } + + setActive(); + + if (mPrm1 == 2) { + if (daPy_py_c::checkRoomRestartStart()) { + if (!dComIfGs_isSwitch(0x8A, fopAcM_GetHomeRoomNo(this))) { + dComIfGs_onSwitch(0x8A, fopAcM_GetHomeRoomNo(this)); + } else if (!dComIfGs_isSwitch(0x8B, fopAcM_GetHomeRoomNo(this))) { + dComIfGs_onSwitch(0x8B, fopAcM_GetHomeRoomNo(this)); + } else if (!dComIfGs_isSwitch(0x8C, fopAcM_GetHomeRoomNo(this))) { + dComIfGs_onSwitch(0x8C, fopAcM_GetHomeRoomNo(this)); + } + } + + if (dComIfGs_isSwitch(0x8C, fopAcM_GetHomeRoomNo(this))) { + field_0x574 = 0; + } else { + field_0x574 = 1200; + } + } else { + field_0x574 = 0; + } + + return cPhs_COMPLEATE_e; } -#pragma pop /* 805A45D8-805A45F8 0002D8 0020+00 1/0 0/0 0/0 .text daTagHstop_Create__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daTagHstop_Create(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/daTagHstop_Create__FP10fopAc_ac_c.s" +static int daTagHstop_Create(fopAc_ac_c* i_this) { + return static_cast(i_this)->create(); } -#pragma pop /* 805A45F8-805A4690 0002F8 0098+00 1/1 0/0 0/0 .text __dt__12daTagHstop_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm daTagHstop_c::~daTagHstop_c() { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/__dt__12daTagHstop_cFv.s" +daTagHstop_c::~daTagHstop_c() { + if (mPrev != NULL) { + mPrev->mNext = mNext; + } + + if (mNext != NULL) { + mNext->mPrev = mPrev; + } + + if (m_top == this) { + m_top = mNext; + } } -#pragma pop /* 805A4690-805A46B8 000390 0028+00 1/0 0/0 0/0 .text daTagHstop_Delete__FP12daTagHstop_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daTagHstop_Delete(daTagHstop_c* param_0) { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/daTagHstop_Delete__FP12daTagHstop_c.s" +static int daTagHstop_Delete(daTagHstop_c* i_this) { + static_cast(i_this)->~daTagHstop_c(); + return 1; } -#pragma pop /* 805A46B8-805A475C 0003B8 00A4+00 2/2 0/0 0/0 .text setActive__12daTagHstop_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daTagHstop_c::setActive() { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/setActive__12daTagHstop_cFv.s" +void daTagHstop_c::setActive() { + if (mPrm0 == 0xFF || mPrm1 == 2 || + (mPrm1 == 0 && dComIfGs_isSwitch(mPrm0, fopAcM_GetHomeRoomNo(this))) || + (mPrm1 == 1 && !dComIfGs_isSwitch(mPrm0, fopAcM_GetHomeRoomNo(this)))) { + mActive = true; + } else { + mActive = false; + } } -#pragma pop - -/* ############################################################################################## */ -/* 805A4B80-805A4B8C 000008 000C+00 1/1 0/0 0/0 .bss @3686 */ -static u8 lit_3686[12]; /* 805A4B8C-805A4BD8 000014 004C+00 2/2 0/0 0/0 .bss m_msgFlow__12daTagHstop_c */ -u8 daTagHstop_c::m_msgFlow[76]; +dMsgFlow_c daTagHstop_c::m_msgFlow; /* 805A475C-805A4AA8 00045C 034C+00 1/1 0/0 0/0 .text execute__12daTagHstop_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daTagHstop_c::execute() { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/execute__12daTagHstop_cFv.s" +int daTagHstop_c::execute() { + if (mEvtInfo.checkCommandTalk()) { + if (field_0x573 == 2) { + m_msgFlow.init(this, (u16)mCollisionRot.z, 0, NULL); + field_0x573 = 3; + } else if (m_msgFlow.doFlow(this, NULL, 0)) { + i_dComIfGp_getEvent().reset(); + field_0x573 = 0; + + s16 arrow_num = dComIfGp_getItemMaxArrowNumCount(); + dComIfGp_setItemArrowNumCount(arrow_num); + dComIfGs_onSwitch(0x8D, fopAcM_GetHomeRoomNo(this)); + } + } else { + if (field_0x574 != 0) { + if (dComIfGs_isSwitch(0x8F, fopAcM_GetHomeRoomNo(this))) { + field_0x574 = 0; + } else if (dComIfGp_getLinkPlayer()->checkSingleBoarBattleSecondBowReady()) { + dComIfGs_onSwitch(0x8F, fopAcM_GetHomeRoomNo(this)); + field_0x574 = 0; + } else { + field_0x574--; + } + } + + setActive(); + + if (field_0x573) { + daHorse_c* horse_p = i_dComIfGp_getHorseActor(); + + if (mPrm1 != 2 || dComIfGs_getArrowNum() != 0 || horse_p == NULL) { + field_0x573 = 0; + } else if (field_0x573 == 1) { + if (i_dComIfGp_getHorseActor()->checkTurnStand() && + !i_dComIfGp_getHorseActor()->checkTurnStandCamera()) { + field_0x573 = 2; + } + } else if (field_0x573 == 2 && !i_dComIfGp_getHorseActor()->checkTurnStand()) { + fopAcM_orderSpeakEvent(this, 0, 0); + mEvtInfo.i_onCondition(1); + } + } else if (mPrm1 == 2 && !i_dComIfGp_event_runCheck()) { + if (dComIfGs_getArrowNum() == 0 && + !dComIfGs_isSwitch(0x8D, fopAcM_GetHomeRoomNo(this))) { + dComIfGs_onSwitch(0x8D, fopAcM_GetHomeRoomNo(this)); + dMeter2Info_setFloatingFlow(43, 90, true); + + if (!dComIfGs_isSwitch(0x8F, fopAcM_GetHomeRoomNo(this))) { + field_0x574 = 1200; + dComIfGs_offSwitch(0x8A, fopAcM_GetHomeRoomNo(this)); + dComIfGs_offSwitch(0x8B, fopAcM_GetHomeRoomNo(this)); + dComIfGs_offSwitch(0x8C, fopAcM_GetHomeRoomNo(this)); + } + } else if (field_0x574 == 0 && !dComIfGs_isSwitch(0x8F, fopAcM_GetHomeRoomNo(this))) { + dComIfGs_onSwitch(0x8F, fopAcM_GetHomeRoomNo(this)); + dComIfGs_onSwitch(0x8E, fopAcM_GetHomeRoomNo(this)); + } + } + } + + return 1; } -#pragma pop /* 805A4AA8-805A4AC8 0007A8 0020+00 1/0 0/0 0/0 .text daTagHstop_Execute__FP12daTagHstop_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daTagHstop_Execute(daTagHstop_c* param_0) { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/daTagHstop_Execute__FP12daTagHstop_c.s" +static int daTagHstop_Execute(daTagHstop_c* i_this) { + return i_this->execute(); } -#pragma pop /* 805A4AC8-805A4AD0 0007C8 0008+00 1/0 0/0 0/0 .text daTagHstop_Draw__FP12daTagHstop_c */ -static bool daTagHstop_Draw(daTagHstop_c* param_0) { - return true; +static int daTagHstop_Draw(daTagHstop_c*) { + return 1; } -/* 805A4AD0-805A4B0C 0007D0 003C+00 0/0 1/0 0/0 .text __sinit_d_a_tag_hstop_cpp */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void __sinit_d_a_tag_hstop_cpp() { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_hstop/d_a_tag_hstop/__sinit_d_a_tag_hstop_cpp.s" -} -#pragma pop - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x805A4AD0, __sinit_d_a_tag_hstop_cpp); -#pragma pop - /* ############################################################################################## */ /* 805A4B24-805A4B44 -00001 0020+00 1/0 0/0 0/0 .data l_daTagHstop_Method */ SECTION_DATA static void* l_daTagHstop_Method[8] = { - (void*)daTagHstop_Create__FP10fopAc_ac_c, - (void*)daTagHstop_Delete__FP12daTagHstop_c, - (void*)daTagHstop_Execute__FP12daTagHstop_c, + (void*)daTagHstop_Create, + (void*)daTagHstop_Delete, + (void*)daTagHstop_Execute, (void*)NULL, - (void*)daTagHstop_Draw__FP12daTagHstop_c, + (void*)daTagHstop_Draw, (void*)NULL, (void*)NULL, (void*)NULL, diff --git a/rel/d/a/tag/d_a_tag_instruction/d_a_tag_instruction.cpp b/rel/d/a/tag/d_a_tag_instruction/d_a_tag_instruction.cpp index fc472c08b2..a9ade42469 100644 --- a/rel/d/a/tag/d_a_tag_instruction/d_a_tag_instruction.cpp +++ b/rel/d/a/tag/d_a_tag_instruction/d_a_tag_instruction.cpp @@ -7,64 +7,38 @@ #include "dol2asm.h" #include "dolphin/types.h" -// -// Types: -// - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); - /* 80018C8C */ ~fopAc_ac_c(); -}; - -struct daTagInst_c {}; - -// -// Forward References: -// - -extern "C" static void daTagInst_Create__FP10fopAc_ac_c(); -extern "C" static void daTagInst_Delete__FP11daTagInst_c(); -extern "C" extern void* g_profile_Tag_Instruction[12]; - // // External References: // -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void __dt__10fopAc_ac_cFv(); extern "C" extern void* g_fopAc_Method[8]; -extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; // // Declarations: // /* 80D59AF8-80D59B48 000078 0050+00 1/0 0/0 0/0 .text daTagInst_Create__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daTagInst_Create(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_instruction/d_a_tag_instruction/daTagInst_Create__FP10fopAc_ac_c.s" +static int daTagInst_Create(fopAc_ac_c* i_this) { + if (!fopAcM_CheckCondition(i_this, 8)) { + new (i_this) daTagInst_c(); + fopAcM_OnCondition(i_this, 8); + } + + return cPhs_COMPLEATE_e; } -#pragma pop /* 80D59B48-80D59B78 0000C8 0030+00 1/0 0/0 0/0 .text daTagInst_Delete__FP11daTagInst_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daTagInst_Delete(daTagInst_c* param_0) { - nofralloc -#include "asm/rel/d/a/tag/d_a_tag_instruction/d_a_tag_instruction/daTagInst_Delete__FP11daTagInst_c.s" +static int daTagInst_Delete(daTagInst_c* i_this) { + i_this->~daTagInst_c(); + return 1; } -#pragma pop /* ############################################################################################## */ /* 80D59B80-80D59BA0 -00001 0020+00 1/0 0/0 0/0 .data l_daTagInst_Method */ SECTION_DATA static void* l_daTagInst_Method[8] = { - (void*)daTagInst_Create__FP10fopAc_ac_c, - (void*)daTagInst_Delete__FP11daTagInst_c, + (void*)daTagInst_Create, + (void*)daTagInst_Delete, (void*)NULL, (void*)NULL, (void*)NULL, diff --git a/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist.cpp b/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist.cpp index 1bdccecf6b..d870cfe188 100644 --- a/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist.cpp +++ b/rel/d/a/tag/d_a_tag_mist/d_a_tag_mist.cpp @@ -77,7 +77,7 @@ extern "C" extern void* g_fopAc_Method[8]; extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; extern "C" u8 now__14mDoMtx_stack_c[48]; extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 struct_80450DC0[4]; +extern "C" extern u8 mPlayerNo__11daTagMist_c[4]; // // Declarations: diff --git a/src/d/a/d_a_alink.cpp b/src/d/a/d_a_alink.cpp index ba0a913339..787cc79044 100644 --- a/src/d/a/d_a_alink.cpp +++ b/src/d/a/d_a_alink.cpp @@ -33,8 +33,6 @@ // Types: // -struct fopEn_enemy_c {}; - struct daTagMist_c { /* 80031CF0 */ void getPlayerNo(); }; @@ -574,6 +572,7 @@ extern "C" static void dComIfGp_getRStatus__Fv(); extern "C" void checkAttentionLock__9daAlink_cFv(); extern "C" void dComIfGp_setItemLifeCount__FfUc(f32, u8); extern "C" static void cMtx_multVec__FPA4_CfPC3VecP3Vec(); +static void cMtx_multVec(f32 const (*param_0)[4], Vec const* param_1, Vec* param_2); extern "C" void getAnmMtx__8J3DModelFi(); extern "C" void setBaseTRMtx__8J3DModelFPA4_f(); extern "C" void checkFmChainGrabAnime__9daAlink_cCFv(); @@ -3094,7 +3093,7 @@ extern "C" u8 mParticleTracePCB__13dPa_control_c[4 + 4 /* padding */]; extern "C" extern u8 struct_80450FB8[4]; extern "C" extern u8 struct_80450FBC[4]; extern "C" u8 m_midnaActor__9daPy_py_c[4]; -extern "C" extern u8 struct_8045101C[4]; +extern "C" extern u8 m_dropAngleY__20daPy_boomerangMove_c[4]; extern "C" u8 Zero__5csXyz[4]; extern "C" u8 mLinkPtr__14Z2CreatureLink[4 + 4 /* padding */]; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; @@ -4973,19 +4972,22 @@ COMPILER_STRIP_GATE(0x8038FB5C, &l_wolfFootOnFrame); /* 8038FBBC-8038FBD4 01C21C 0018+00 1/1 0/0 0/0 .rodata l_insectNameList */ SECTION_RODATA static s16 const l_insectNameList[12] = { - 0x0140, 0x0141, 0x0142, 0x0149, 0x0143, 0x0144, 0x0145, 0x0146, 0x014B, 0x014A, 0x0147, 0x0148, + PROC_Obj_Kabuto, PROC_Obj_Cho, PROC_Obj_Kuw, + PROC_Obj_Batta, PROC_Obj_Nan, PROC_Obj_Dan, + PROC_Obj_Kam, PROC_Obj_Ten, PROC_Obj_Kat, + PROC_Obj_Tombo, PROC_Obj_Ari, PROC_Obj_Kag, }; COMPILER_STRIP_GATE(0x8038FBBC, &l_insectNameList); /* 8038FBD4-8038FC24 01C234 0050+00 0/1 0/0 0/0 .rodata m_mainBckShield__9daAlink_c */ #pragma push #pragma force_active on -SECTION_RODATA u8 const daAlink_c::m_mainBckShield[80] = { - 0x00, 0x25, 0x00, 0x25, 0x00, 0x23, 0x00, 0x23, 0x00, 0x12, 0x00, 0x1B, 0x00, 0x10, 0x00, 0x1B, - 0x00, 0x21, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x2C, 0x00, 0x2C, - 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x30, 0x00, 0x30, 0x00, 0x28, 0x00, 0x28, - 0x00, 0x32, 0x00, 0x32, 0x00, 0x2A, 0x00, 0x2A, 0x02, 0x74, 0x00, 0x1B, 0x00, 0x20, 0x00, 0x1B, - 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x26, 0x00, 0x26, 0x02, 0x77, 0x00, 0x1B, 0x00, 0xCD, 0x00, 0x1B, +SECTION_RODATA daAlink_BckData const daAlink_c::m_mainBckShield[20] = { + {0x0025, 0x0025}, {0x0023, 0x0023}, {0x0012, 0x001B}, {0x0010, 0x001B}, + {0x0021, 0x0021}, {0x001E, 0x001E}, {0x003C, 0x003C}, {0x002C, 0x002C}, + {0x003E, 0x003E}, {0x002E, 0x002E}, {0x0030, 0x0030}, {0x0028, 0x0028}, + {0x0032, 0x0032}, {0x002A, 0x002A}, {0x0274, 0x001B}, {0x0020, 0x001B}, + {0x001B, 0x001B}, {0x0026, 0x0026}, {0x0277, 0x001B}, {0x00CD, 0x001B}, }; COMPILER_STRIP_GATE(0x8038FBD4, &daAlink_c::m_mainBckShield); #pragma pop @@ -4993,9 +4995,9 @@ COMPILER_STRIP_GATE(0x8038FBD4, &daAlink_c::m_mainBckShield); /* 8038FC24-8038FC38 01C284 0014+00 0/1 0/0 0/0 .rodata m_mainBckSword__9daAlink_c */ #pragma push #pragma force_active on -SECTION_RODATA u8 const daAlink_c::m_mainBckSword[20] = { - 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1C, 0x00, 0x1C, 0x02, 0x77, - 0x02, 0x77, 0x00, 0xCD, 0x00, 0xCD, 0x02, 0x43, 0x02, 0x44, +SECTION_RODATA daAlink_BckData const daAlink_c::m_mainBckSword[5] = { + {0x001A, 0x001A}, {0x001C, 0x001C}, + {0x0277, 0x0277}, {0x00CD, 0x00CD}, {0x0243, 0x0244}, }; COMPILER_STRIP_GATE(0x8038FC24, &daAlink_c::m_mainBckSword); #pragma pop @@ -5003,14 +5005,14 @@ COMPILER_STRIP_GATE(0x8038FC24, &daAlink_c::m_mainBckSword); /* 8038FC38-8038FCA8 01C298 0070+00 0/1 0/0 0/0 .rodata m_mainBckFishing__9daAlink_c */ #pragma push #pragma force_active on -SECTION_RODATA u8 const daAlink_c::m_mainBckFishing[112] = { - 0x00, 0x25, 0x02, 0x73, 0x00, 0x23, 0x00, 0xC8, 0x00, 0x12, 0x02, 0x73, 0x00, 0x10, 0x00, 0xC8, - 0x00, 0x21, 0x02, 0x73, 0x00, 0x1E, 0x00, 0xC8, 0x00, 0x3C, 0x02, 0x73, 0x00, 0x2C, 0x02, 0x73, - 0x00, 0x3E, 0x02, 0x73, 0x00, 0x2E, 0x02, 0x73, 0x00, 0x30, 0x00, 0xC8, 0x00, 0x28, 0x00, 0xC8, - 0x00, 0x32, 0x00, 0xC8, 0x00, 0x2A, 0x00, 0xC8, 0x02, 0x74, 0x02, 0x73, 0x00, 0x20, 0x02, 0x73, - 0x00, 0x1A, 0x02, 0x73, 0x00, 0x1C, 0x02, 0x73, 0x02, 0x77, 0x02, 0x73, 0x00, 0xCD, 0x00, 0xC8, - 0x02, 0x43, 0x02, 0x44, 0x02, 0x33, 0x02, 0x73, 0x02, 0x34, 0x02, 0x73, 0x02, 0x33, 0x02, 0x73, - 0x02, 0x34, 0x02, 0x73, 0x02, 0x6A, 0x02, 0x73, 0x02, 0x56, 0x02, 0x73, 0x02, 0x57, 0x02, 0x73, +SECTION_RODATA daAlink_BckData const daAlink_c::m_mainBckFishing[28] = { + {0x0025, 0x0273}, {0x0023, 0x00C8}, {0x0012, 0x0273}, {0x0010, 0x00C8}, + {0x0021, 0x0273}, {0x001E, 0x00C8}, {0x003C, 0x0273}, {0x002C, 0x0273}, + {0x003E, 0x0273}, {0x002E, 0x0273}, {0x0030, 0x00C8}, {0x0028, 0x00C8}, + {0x0032, 0x00C8}, {0x002A, 0x00C8}, {0x0274, 0x0273}, {0x0020, 0x0273}, + {0x001A, 0x0273}, {0x001C, 0x0273}, {0x0277, 0x0273}, {0x00CD, 0x00C8}, + {0x0243, 0x0244}, {0x0233, 0x0273}, {0x0234, 0x0273}, {0x0233, 0x0273}, + {0x0234, 0x0273}, {0x026A, 0x0273}, {0x0256, 0x0273}, {0x0257, 0x0273}, }; COMPILER_STRIP_GATE(0x8038FC38, &daAlink_c::m_mainBckFishing); #pragma pop @@ -6448,46 +6450,40 @@ JKRHeap* daAlink_c::setItemHeap() { return mItemHeap[field_0x2fa0].setAnimeHeap(); } +/** + * Sets the animation archive ID and resource ID based on combined ID + * The left most digit is the arcNo if not 0 + * The latter 3 digits are the resource ID + */ /* 800A3CE4-800A3D0C 09E624 0028+00 4/4 0/0 0/0 .text setIdxMask__9daAlink_cFPUsPUs */ -void daAlink_c::setIdxMask(u16* param_0, u16* param_1) { - if (*param_0 == 0xFFFF) { - u16 tmp = (*param_1 >> 12) & 0xF; - *param_1 &= 0xFFF; +void daAlink_c::setIdxMask(u16* o_arcNo, u16* o_resID) { + if (*o_arcNo == 0xFFFF) { + u16 arc_id = (*o_resID >> 12) & 0xF; + *o_resID &= 0xFFF; - if (tmp != 0) { - *param_0 = tmp; + if (arc_id != 0) { + *o_arcNo = arc_id; } } } /* 800A3D0C-800A3D7C 09E64C 0070+00 5/5 0/0 0/0 .text * getAnimeResource__9daAlink_cFP14daPy_anmHeap_cUsUl */ -// setIdxMask param loads backwards -#ifdef NONMATCHING -void* daAlink_c::getAnimeResource(daPy_anmHeap_c* p_anmHeap, u16 param_1, u32 buf_size) { +void* daAlink_c::getAnimeResource(daPy_anmHeap_c* p_anmHeap, u16 i_anmID, u32 buf_size) { + u16 arcNo; + u16 resID = i_anmID; + p_anmHeap->setBufferSize(buf_size); + arcNo = 0xFFFF; - u16 tmp2 = 0xFFFF; - u16* tmp1 = ¶m_1; + setIdxMask(&arcNo, &resID); - setIdxMask(tmp1, &tmp2); - - if (tmp2 == 0xFFFF) { - return p_anmHeap->loadDataIdx(*tmp1); - } else { - return p_anmHeap->loadDataDemoRID(*tmp1, tmp2); + if (arcNo == 0xFFFF) { + return p_anmHeap->loadDataIdx(resID); } + + return p_anmHeap->loadDataDemoRID(resID, arcNo); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void* daAlink_c::getAnimeResource(daPy_anmHeap_c* param_0, u16 param_1, u32 param_2) { - nofralloc -#include "asm/d/a/d_a_alink/getAnimeResource__9daAlink_cFP14daPy_anmHeap_cUsUl.s" -} -#pragma pop -#endif /* 800A3D7C-800A3E30 09E6BC 00B4+00 16/16 0/0 0/0 .text initModel__9daAlink_cFP12J3DModelDataUlUl */ @@ -12196,7 +12192,7 @@ bool daPy_py_c::checkWoodSwordEquip() { } BOOL daPy_py_c::i_checkSwordGet() { - return dComIfGs_getSelectEquipSword() != 0xFF; + return dComIfGs_getSelectEquipSword() != NO_ITEM; } /* 800A4910-800A4BC8 09F250 02B8+00 5/5 0/0 0/0 .text setSelectEquipItem__9daAlink_cFi */ @@ -12229,7 +12225,7 @@ void daAlink_c::setSelectEquipItem(int param_0) { } if (mClothesChangeWaitTimer == 0 && - (temp != mSwordModel || i_checkNoResetFlg2(STATUS_WINDOW_DRAW))) { + (temp != mSwordModel || i_checkNoResetFlg2(FLG2_STATUS_WINDOW_DRAW))) { if (temp != mSwordModel) { mSwordChangeWaitTimer = 5; } @@ -12368,16 +12364,16 @@ void daAlink_c::playerInit() { field_0x2fe6 = mCollisionRot.y; for (u16 i = 0; i < 3; i++) { - u8* underBuf = mUnderAnime[0].getBuffer(); - mUnderAnime[i].setBuffer(underBuf + (i * 0x2C00)); - mUnderAnime[i].createHeap(daPy_anmHeap_c::HEAP_TYPE_3); + u8* underBuf = mUnderAnmHeap[0].getBuffer(); + mUnderAnmHeap[i].setBuffer(underBuf + (i * 0x2C00)); + mUnderAnmHeap[i].createHeap(daPy_anmHeap_c::HEAP_TYPE_3); } - mUpperAnime[0].setBuffer(mUnderAnime[0].getBuffer() + 0x8400); + mUpperAnmHeap[0].setBuffer(mUnderAnmHeap[0].getBuffer() + 0x8400); for (u16 i = 0; i < 3; i++) { - u8* upperBuf = mUpperAnime[0].getBuffer(); - mUpperAnime[i].setBuffer(upperBuf + (i * 0x2C00)); - mUpperAnime[i].createHeap(daPy_anmHeap_c::HEAP_TYPE_3); + u8* upperBuf = mUpperAnmHeap[0].getBuffer(); + mUpperAnmHeap[i].setBuffer(upperBuf + (i * 0x2C00)); + mUpperAnmHeap[i].createHeap(daPy_anmHeap_c::HEAP_TYPE_3); } mAnmHeap5.createHeap(daPy_anmHeap_c::HEAP_TYPE_1); @@ -12422,7 +12418,7 @@ void daAlink_c::playerInit() { field_0x3184 = -1; mExitID = 0x3F; - i_onNoResetFlg0(0x100); + i_onNoResetFlg0(FLG0_UNK_100); offOxygenTimer(); int startMode = getStartMode(); @@ -12501,7 +12497,7 @@ void daAlink_c::playerInit() { setSelectEquipItem(0); if (checkStageName("D_MN08") || checkStageName("D_MN08B") || checkStageName("D_MN08C")) { - i_onNoResetFlg3(0x40000000); + i_onNoResetFlg3(FLG3_UNK_40000000); } } @@ -12602,7 +12598,7 @@ int daAlink_c::create() { mAttentionInfo.mPosition.set(current.pos.x + cM_ssin(mCollisionRot.y) * 70.0f, current.pos.y + 80.0f, current.pos.z + cM_scos(mCollisionRot.y) * 70.0f); - i_onNoResetFlg1(0x2000000); + i_onNoResetFlg1(FLG1_IS_WOLF); } else if (horseStart) { mAttentionInfo.mPosition.y = current.pos.y + 150.0f; } else { @@ -12680,21 +12676,21 @@ int daAlink_c::create() { if (checkStageName("F_SP102") && fopAcM_GetRoomNo(this) == 0 && dComIfG_play_c::getLayerNo(0) == 4) { - i_onNoResetFlg2(0x800000); + i_onNoResetFlg2(FLG2_UNK_800000); } else if (checkStageName("F_SP123") && fopAcM_GetRoomNo(this) == 13 && dComIfG_play_c::getLayerNo(0) == 0) { - i_onNoResetFlg2(0x1000000); + i_onNoResetFlg2(FLG2_UNK_1000000); } J3DAnmTransform* at1; J3DAnmTransform* at2; - getUnderUpperAnime(ANM_IDLE, &at1, &at2, 0, 0x2C00); - field_0x1f28[0].setAnmTransform(at1); + getUnderUpperAnime(ANM_WAIT, &at1, &at2, 0, 0x2C00); + mNowAnmPackUnder[0].setAnmTransform(at1); if (at2 != NULL) { - mNowAnmPack[0].setAnmTransform(at2); + mNowAnmPackUpper[0].setAnmTransform(at2); } else { - mNowAnmPack[0].setAnmTransform(at1); + mNowAnmPackUpper[0].setAnmTransform(at1); } int prm = setStartProcInit(); @@ -12865,14 +12861,9 @@ asm void daAlink_c::checkWindSpeedOnAngleAnime(int param_0) const { #pragma pop /* 800A7A5C-800A7ABC 0A239C 0060+00 7/7 0/0 0/0 .text checkDashAnime__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkDashAnime() const { - nofralloc -#include "asm/d/a/d_a_alink/checkDashAnime__9daAlink_cCFv.s" +bool daAlink_c::checkDashAnime() const { + return checkUnderMove0BckNoArc(ANM_RUN) || checkUnderMove0BckNoArc(ANM_RUN_B); } -#pragma pop /* 800A7ABC-800A7CB0 0A23FC 01F4+00 1/1 0/0 0/0 .text checkWindWallRate__9daAlink_cFRC4cXyz */ #pragma push @@ -13000,7 +12991,7 @@ int daAlink_c::setRollJump(f32 param_0, f32 param_1, s16 param_2) { field_0x3410 = param_0; field_0x3414 = param_1; field_0x30ee = param_2; - i_onEndResetFlg0(0x100); + i_onEndResetFlg0(ERFLG0_UNK_100); return 1; } @@ -13165,14 +13156,39 @@ asm void daAlink_c::setMatrix() { #pragma pop /* 800A9248-800A92F0 0A3B88 00A8+00 15/15 0/0 5/5 .text simpleAnmPlay__9daAlink_cFP10J3DAnmBase */ +// matches with literals +#ifdef NONMATCHING +int daAlink_c::simpleAnmPlay(J3DAnmBase* i_anm) { + if (i_anm == NULL) { + return 0; + } + + int ret = 0; + f32 frame = i_anm->getFrame() + 1.0f; + + if (frame >= i_anm->getFrameMax()) { + if (i_anm->getAttribute() == 2) { + frame -= i_anm->getFrameMax(); + } else { + frame = i_anm->getFrameMax(); + ret = 1; + } + } + + i_anm->setFrame(frame); + + return ret; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::simpleAnmPlay(J3DAnmBase* param_0) { +asm int daAlink_c::simpleAnmPlay(J3DAnmBase* param_0) { nofralloc #include "asm/d/a/d_a_alink/simpleAnmPlay__9daAlink_cFP10J3DAnmBase.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80391FF8-80392004 01E658 000C+00 0/1 0/0 0/0 .rodata swordMoveLocal0$60438 */ @@ -13278,9 +13294,9 @@ asm void daAlink_c::setWolfItemMatrix() { /* 800AA2BC-800AA2E0 0A4BFC 0024+00 3/3 0/0 0/0 .text * setHandIndex__9daAlink_cFQ29daAlink_c11daAlink_ANM */ -void daAlink_c::setHandIndex(daAlink_c::daAlink_ANM anmID) { - field_0x2f92 = getAnmData(anmID)->field_0x4; - field_0x2f93 = getAnmData(anmID)->field_0x5; +void daAlink_c::setHandIndex(daAlink_c::daAlink_ANM i_anmID) { + field_0x2f92 = getAnmData(i_anmID)->field_0x4; + field_0x2f93 = getAnmData(i_anmID)->field_0x5; } /* 800AA2E0-800AA5E8 0A4C20 0308+00 1/1 0/0 0/0 .text setSwordAtCollision__9daAlink_cFi @@ -13421,98 +13437,148 @@ asm void daAlink_c::setCollision() { #pragma pop /* 800AC328-800AC378 0A6C68 0050+00 1/0 0/0 0/0 .text getBaseAnimeFrame__9daAlink_cCFv */ +// matches with literals +#ifdef NONMATCHING +f32 daAlink_c::getBaseAnimeFrame() const { + if (mProcID == PROC_SUMOU_ACTION && mSpeedModifier > 0.0f) { + return mCommonCounter; + } + + return mUnderFrameCtrl[0].getFrame(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm float daAlink_c::getBaseAnimeFrame() const { +asm f32 daAlink_c::getBaseAnimeFrame() const { nofralloc #include "asm/d/a/d_a_alink/getBaseAnimeFrame__9daAlink_cCFv.s" } #pragma pop +#endif /* 800AC378-800AC394 0A6CB8 001C+00 1/0 0/0 0/0 .text setAnimeFrame__9daAlink_cFf */ void daAlink_c::setAnimeFrame(f32 frame) { - mFrameCtrl1[0].setFrame(frame); - mFrameCtrl1[1].setFrame(frame); - mFrameCtrl1[2].setFrame(frame); - mFrameCtrl2[0].setFrame(frame); - mFrameCtrl2[1].setFrame(frame); - mFrameCtrl2[2].setFrame(frame); + mUnderFrameCtrl[0].setFrame(frame); + mUnderFrameCtrl[1].setFrame(frame); + mUnderFrameCtrl[2].setFrame(frame); + mUpperFrameCtrl[0].setFrame(frame); + mUpperFrameCtrl[1].setFrame(frame); + mUpperFrameCtrl[2].setFrame(frame); } /* 800AC394-800AC450 0A6CD4 00BC+00 6/6 0/0 0/0 .text * setFrameCtrl__9daAlink_cFP16daPy_frameCtrl_cUcssff */ void daAlink_c::setFrameCtrl(daPy_frameCtrl_c* p_ctrl, u8 attr, s16 start, s16 end, f32 rate, f32 frame) { - if (i_checkNoResetFlg0(UNDER_WATER_MOVEMENT)) { + if (i_checkNoResetFlg0(FLG0_UNDERWATER)) { if (checkZoraWearAbility()) { rate *= daAlinkHIO_magneBoots_c0::m.mZoraWaterAnmSpeed; } else { rate *= daAlinkHIO_magneBoots_c0::m.mWaterWalkAnmRate; } } + p_ctrl->setFrameCtrl(attr, start, end, rate, frame); } /* ############################################################################################## */ /* 80453278-80453280 001878 0008+00 1/1 0/0 0/0 .sdata2 kandelaarAnm$62207 */ -SECTION_SDATA2 static u8 kandelaarAnm[8] = { - 0x02, 0x6A, 0x02, 0x68, 0x02, 0x66, 0x02, 0x64, +SECTION_SDATA2 static daAlink_BckData kandelaarAnm[2] = { + {0x026A, 0x0268}, // waits, waitk + {0x0266, 0x0264}, // waiths, waithk }; /* 800AC450-800AC558 0A6D90 0108+00 23/23 0/0 0/0 .text * getMainBckData__9daAlink_cCFQ29daAlink_c11daAlink_ANM */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::getMainBckData(daAlink_c::daAlink_ANM param_0) const { - nofralloc -#include "asm/d/a/d_a_alink/getMainBckData__9daAlink_cCFQ29daAlink_c11daAlink_ANM.s" +const daAlink_BckData* daAlink_c::getMainBckData(daAlink_c::daAlink_ANM i_anmID) const { + if (mEquipItem == KANTERA) { + if (i_anmID == ANM_WAIT) { + return &kandelaarAnm[0]; + } + + if (i_anmID == ANM_HORSE_WAIT) { + return &kandelaarAnm[1]; + } + } + + if (checkUpperGuardAnime() && i_anmID < 0x14) { + return &m_mainBckShield[i_anmID]; + } + + if ((mEquipItem == 0x103 && i_anmID < 0x15 && i_anmID >= 0x10) || (i_anmID == ANM_SWIM_WAIT && mEquipItem != NO_ITEM)) { + return &m_mainBckSword[i_anmID - 0x10]; + } + + if (checkFishingRodAndLureItem() && i_anmID < 0x1C) { + return &m_mainBckFishing[i_anmID]; + } + + return &m_anmDataTable[i_anmID].field_0x0; } -#pragma pop + /* 800AC558-800AC5B4 0A6E98 005C+00 51/51 0/0 2/2 .text * checkUnderMove0BckNoArc__9daAlink_cCFQ29daAlink_c11daAlink_ANM */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkUnderMove0BckNoArc(daAlink_c::daAlink_ANM param_0) const { - nofralloc -#include "asm/d/a/d_a_alink/checkUnderMove0BckNoArc__9daAlink_cCFQ29daAlink_c11daAlink_ANM.s" +BOOL daAlink_c::checkUnderMove0BckNoArc(daAlink_c::daAlink_ANM i_anmID) const { + return mUnderAnmHeap[0].checkNoSetArcNo() && mUnderAnmHeap[0].getIdx() == getMainBckData(i_anmID)->m_underID; } -#pragma pop /* 800AC5B4-800AC610 0A6EF4 005C+00 4/4 0/0 0/0 .text * checkUnderMove1BckNoArc__9daAlink_cCFQ29daAlink_c11daAlink_ANM */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkUnderMove1BckNoArc(daAlink_c::daAlink_ANM param_0) const { - nofralloc -#include "asm/d/a/d_a_alink/func_800AC5B4.s" +BOOL daAlink_c::checkUnderMove1BckNoArc(daAlink_c::daAlink_ANM i_anmID) const { + return mUnderAnmHeap[1].checkNoSetArcNo() && mUnderAnmHeap[1].getIdx() == getMainBckData(i_anmID)->m_underID; } -#pragma pop /* 800AC610-800AC738 0A6F50 0128+00 3/3 0/0 0/0 .text * getUnderUpperAnime__9daAlink_cFQ29daAlink_c11daAlink_ANMPP15J3DAnmTransformPP15J3DAnmTransformiUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::getUnderUpperAnime(daAlink_c::daAlink_ANM param_0, J3DAnmTransform** param_1, - J3DAnmTransform** param_2, int param_3, u32 param_4) { - nofralloc -#include "asm/d/a/d_a_alink/getUnderUpperAnime__9daAlink_cFQ29daAlink_c11daAlink_ANMPP15J3DAnmTransformPP15J3DAnmTransformiUl.s" +int daAlink_c::getUnderUpperAnime(daAlink_c::daAlink_ANM i_anmID, J3DAnmTransform** i_underBck, + J3DAnmTransform** i_upperBck, int i_anmPackID, u32 i_bufSize) { + s32 var_r31; + + const daAlink_BckData* bck_data = getMainBckData(i_anmID); + i_offNoResetFlg0(FLG0_UNK_2); + + *i_underBck = (J3DAnmTransform*)getAnimeResource(&mUnderAnmHeap[i_anmPackID], bck_data->m_underID, i_bufSize); + + if (*i_underBck != NULL) { + var_r31 = 1; + } else { + *i_underBck = getNowAnmPackUnder((daAlink_UNDER)i_anmPackID); + var_r31 = 0; + } + + if (bck_data->m_underID != bck_data->m_upperID) { + if (i_bufSize == 0x10800) { + i_bufSize = (3 - i_anmPackID) * 0x2C00; + } + + *i_upperBck = (J3DAnmTransform*)getAnimeResource(&mUpperAnmHeap[i_anmPackID], bck_data->m_upperID, i_bufSize); + if (*i_upperBck != NULL) { + var_r31 |= 1; + } else { + *i_upperBck = getNowAnmPackUpper((daAlink_UPPER)i_anmPackID); + } + } else { + if (!mUpperAnmHeap[i_anmPackID].checkNoSetIdx()) { + var_r31 |= 1; + } + + *i_upperBck = NULL; + mUpperAnmHeap[i_anmPackID].resetIdx(); + } + + return var_r31; } -#pragma pop /* 800AC738-800AC754 0A7078 001C+00 7/7 0/0 0/0 .text setDoubleAnimeBlendRatio__9daAlink_cFf */ void daAlink_c::setDoubleAnimeBlendRatio(f32 param_0) { f32 tmp = lit_6040; // remove later - field_0x1f28[0].setRatio(tmp - param_0); - field_0x1f28[1].setRatio(param_0); - mNowAnmPack[0].setRatio(tmp - param_0); - mNowAnmPack[1].setRatio(param_0); + mNowAnmPackUnder[0].setRatio(tmp - param_0); + mNowAnmPackUnder[1].setRatio(param_0); + mNowAnmPackUpper[0].setRatio(tmp - param_0); + mNowAnmPackUpper[1].setRatio(param_0); } /* 800AC754-800ACA14 0A7094 02C0+00 2/2 0/0 0/0 .text @@ -13556,64 +13622,112 @@ asm void daAlink_c::commonSingleAnime(J3DAnmTransform* param_0, J3DAnmTransform* /* 800ACF80-800ACFB0 0A78C0 0030+00 88/88 0/0 0/0 .text * setSingleAnimeBase__9daAlink_cFQ29daAlink_c11daAlink_ANM */ -void daAlink_c::setSingleAnimeBase(daAlink_c::daAlink_ANM anm) { - setSingleAnime(anm, lit_6040, FLOAT_LABEL(lit_6108), -1, lit_6109); +void daAlink_c::setSingleAnimeBase(daAlink_c::daAlink_ANM i_anmID) { + setSingleAnime(i_anmID, lit_6040, FLOAT_LABEL(lit_6108), -1, lit_6109); } /* 800ACFB0-800ACFE0 0A78F0 0030+00 27/27 0/0 0/0 .text * setSingleAnimeBaseMorf__9daAlink_cFQ29daAlink_c11daAlink_ANMf */ -void daAlink_c::setSingleAnimeBaseMorf(daAlink_c::daAlink_ANM anm, f32 param_1) { - setSingleAnime(anm, lit_6040, FLOAT_LABEL(lit_6108), -1, param_1); +void daAlink_c::setSingleAnimeBaseMorf(daAlink_c::daAlink_ANM i_anmID, f32 param_1) { + setSingleAnime(i_anmID, lit_6040, FLOAT_LABEL(lit_6108), -1, param_1); } /* 800ACFE0-800AD00C 0A7920 002C+00 77/77 0/0 0/0 .text * setSingleAnimeBaseSpeed__9daAlink_cFQ29daAlink_c11daAlink_ANMff */ -void daAlink_c::setSingleAnimeBaseSpeed(daAlink_c::daAlink_ANM anm, f32 param_1, f32 param_2) { - setSingleAnime(anm, param_1, FLOAT_LABEL(lit_6108), -1, param_2); +void daAlink_c::setSingleAnimeBaseSpeed(daAlink_c::daAlink_ANM i_anmID, f32 param_1, f32 param_2) { + setSingleAnime(i_anmID, param_1, FLOAT_LABEL(lit_6108), -1, param_2); } /* 800AD00C-800AD0F4 0A794C 00E8+00 58/58 0/0 0/0 .text * setSingleAnime__9daAlink_cFQ29daAlink_c11daAlink_ANMffsf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setSingleAnime(daAlink_c::daAlink_ANM param_0, f32 param_1, f32 param_2, - s16 param_3, f32 param_4) { - nofralloc -#include "asm/d/a/d_a_alink/setSingleAnime__9daAlink_cFQ29daAlink_c11daAlink_ANMffsf.s" +int daAlink_c::setSingleAnime(daAlink_c::daAlink_ANM i_anmID, f32 i_rate, f32 i_start, + s16 i_end, f32 i_morf) { + J3DAnmTransform* under_bck; + J3DAnmTransform* upper_bck; + + getUnderUpperAnime(i_anmID, &under_bck, &upper_bck, 0, 0x10800); + commonSingleAnime(under_bck, upper_bck, i_rate, i_start, i_end); + + if (i_morf >= FLOAT_LABEL(lit_6108)) { + field_0x2060->initOldFrameMorf(i_morf, 0, 35); + } + + setHandIndex(i_anmID); + setFaceBasicAnime(i_anmID); + + return 1; } -#pragma pop /* 800AD0F4-800AD128 0A7A34 0034+00 93/93 0/0 0/0 .text * setSingleAnimeParam__9daAlink_cFQ29daAlink_c11daAlink_ANMPC16daAlinkHIO_anm_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setSingleAnimeParam(daAlink_c::daAlink_ANM param_0, - daAlinkHIO_anm_c const* param_1) { - nofralloc -#include "asm/d/a/d_a_alink/setSingleAnimeParam__9daAlink_cFQ29daAlink_c11daAlink_ANMPC16daAlinkHIO_anm_c.s" +int daAlink_c::setSingleAnimeParam(daAlink_c::daAlink_ANM i_anmID, + daAlinkHIO_anm_c const* i_anmData) { + return setSingleAnime(i_anmID, i_anmData->mRate, i_anmData->mStart, i_anmData->mEndF, i_anmData->mInterpolation); } -#pragma pop /* 800AD128-800AD170 0A7A68 0048+00 1/1 0/0 0/0 .text * animePlay__9daAlink_cFP15J3DAnmTransformP16daPy_frameCtrl_c */ -void daAlink_c::animePlay(J3DAnmTransform* param_0, daPy_frameCtrl_c* param_1) { - if (param_0 != NULL) { - param_1->updateFrame(); - param_0->setFrame(param_1->getFrame()); +void daAlink_c::animePlay(J3DAnmTransform* i_anm, daPy_frameCtrl_c* i_frameCtrl) { + if (i_anm != NULL) { + i_frameCtrl->updateFrame(); + i_anm->setFrame(i_frameCtrl->getFrame()); } } /* 800AD170-800AD2D8 0A7AB0 0168+00 2/2 0/0 0/0 .text allAnimePlay__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::allAnimePlay() { - nofralloc -#include "asm/d/a/d_a_alink/allAnimePlay__9daAlink_cFv.s" +void daAlink_c::allAnimePlay() { + J3DAnmTransform* under0_bck = getNowAnmPackUnder(UNDER_0); + J3DAnmTransform* under1_bck = getNowAnmPackUnder(UNDER_1); + J3DAnmTransform* upper0_bck = getNowAnmPackUpper(UPPER_0); + J3DAnmTransform* upper1_bck = getNowAnmPackUpper(UPPER_1); + + if (i_checkWolf()) { + setWolfAnmVoice(); + } + + for (int i = 0; i < 3; i++) { + animePlay(getNowAnmPackUnder((daAlink_UNDER)i), &mUnderFrameCtrl[i]); + } + + if (upper0_bck != under0_bck) { + animePlay(upper0_bck, &mUpperFrameCtrl[0]); + } + + if (upper1_bck != under1_bck) { + animePlay(upper1_bck, &mUpperFrameCtrl[1]); + } + + animePlay(getNowAnmPackUpper((daAlink_UPPER)2), &mUpperFrameCtrl[2]); + + if (field_0x2f92 == 0xFB && mpDemoHLTmpBck != NULL) { + mpDemoHLTmpBck->play(); + } + + if (field_0x2f93 == 0xFB && mpDemoHRTmpBck != NULL) { + mpDemoHRTmpBck->play(); + } + + if (i_checkNoResetFlg1(FLG1_UNK_10)) { + if (field_0x069c != NULL && field_0x069c->getBlkAnm() != NULL) { + simpleAnmPlay(field_0x069c->getBlkAnm()); + } + + if (field_0x068c != NULL) { + simpleAnmPlay(field_0x068c); + } + + if (mpDemoFCTmpBck != NULL) { + mpDemoFCTmpBck->play(); + } + } + + if (mpDemoHDTmpBck != NULL) { + mpDemoHDTmpBck->play(); + } + + simpleAnmPlay(field_0x06f4); + simpleAnmPlay(field_0x06f8); } -#pragma pop /* 800AD2D8-800AD340 0A7C18 0068+00 2/2 0/0 0/0 .text setUpperAnimeMorf__9daAlink_cFf */ #pragma push @@ -13706,7 +13820,7 @@ asm void daAlink_c::setUnderAnimeMorf(f32 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::setUnderAnime(u16 param_0, daAlink_c::daAlink_UNDER param_1, f32 param_2, +asm int daAlink_c::setUnderAnime(u16 param_0, daAlink_c::daAlink_UNDER param_1, f32 param_2, f32 param_3, s16 param_4, f32 param_5) { nofralloc #include "asm/d/a/d_a_alink/setUnderAnime__9daAlink_cFUsQ29daAlink_c13daAlink_UNDERffsf.s" @@ -13715,15 +13829,10 @@ asm void daAlink_c::setUnderAnime(u16 param_0, daAlink_c::daAlink_UNDER param_1, /* 800ADAB8-800ADAEC 0A83F8 0034+00 2/2 0/0 0/0 .text * setUnderAnimeParam__9daAlink_cFUsQ29daAlink_c13daAlink_UNDERPC16daAlinkHIO_anm_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setUnderAnimeParam(u16 param_0, daAlink_c::daAlink_UNDER param_1, - daAlinkHIO_anm_c const* param_2) { - nofralloc -#include "asm/d/a/d_a_alink/setUnderAnimeParam__9daAlink_cFUsQ29daAlink_c13daAlink_UNDERPC16daAlinkHIO_anm_c.s" +int daAlink_c::setUnderAnimeParam(u16 i_resID, daAlink_c::daAlink_UNDER i_packIdx, + daAlinkHIO_anm_c const* i_anmData) { + return setUnderAnime(i_resID, i_packIdx, i_anmData->mRate, i_anmData->mStart, i_anmData->mEndF, i_anmData->mInterpolation); } -#pragma pop /* 800ADAEC-800ADB78 0A842C 008C+00 17/17 0/0 0/0 .text * resetUnderAnime__9daAlink_cFQ29daAlink_c13daAlink_UNDERf */ @@ -13747,34 +13856,35 @@ asm void daAlink_c::setOldRootQuaternion(s16 param_0, s16 param_1, s16 param_2) #pragma pop /* 800ADC50-800ADCEC 0A8590 009C+00 2/2 0/0 0/0 .text checkAtnLeftAnime__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkAtnLeftAnime() { - nofralloc -#include "asm/d/a/d_a_alink/checkAtnLeftAnime__9daAlink_cFv.s" +BOOL daAlink_c::checkAtnLeftAnime() { + return checkUnderMove0BckNoArc(ANM_ATN_WAIT_LEFT) || + checkUnderMove0BckNoArc(ANM_ATN_WALK_LEFT) || + checkUnderMove0BckNoArc(ANM_ATN_RUN_LEFT) || + checkUnderMove0BckNoArc(ANM_ATN_LOCK_WALK_LEFT) || + checkUnderMove0BckNoArc(ANM_ATN_LOCK_RUN_LEFT); } -#pragma pop /* 800ADCEC-800ADD88 0A862C 009C+00 1/1 0/0 0/0 .text checkAtnRightAnime__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkAtnRightAnime() { - nofralloc -#include "asm/d/a/d_a_alink/checkAtnRightAnime__9daAlink_cFv.s" +BOOL daAlink_c::checkAtnRightAnime() { + return checkUnderMove0BckNoArc(ANM_ATN_WAIT_RIGHT) || + checkUnderMove0BckNoArc(ANM_ATN_WALK_RIGHT) || + checkUnderMove0BckNoArc(ANM_ATN_RUN_RIGHT) || + checkUnderMove0BckNoArc(ANM_ATN_LOCK_WALK_RIGHT) || + checkUnderMove0BckNoArc(ANM_ATN_LOCK_RUN_RIGHT); } -#pragma pop /* 800ADD88-800ADE14 0A86C8 008C+00 3/3 0/0 0/0 .text getMoveGroundAngleSpeedRate__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::getMoveGroundAngleSpeedRate() { - nofralloc -#include "asm/d/a/d_a_alink/getMoveGroundAngleSpeedRate__9daAlink_cFv.s" +f32 daAlink_c::getMoveGroundAngleSpeedRate() { + s16 gnd_angle; + + if (field_0x3174 == 8 || i_checkMagneBootsOn() || !mLinkAcch.ChkGroundHit()) { + gnd_angle = 0; + } else { + gnd_angle = getGroundAngle(&mLinkAcch.m_gnd, current.angle.y); + } + + return fabsf((mNormalSpeed * cM_scos(gnd_angle)) / field_0x594); } -#pragma pop /* 800ADE14-800AEA70 0A8754 0C5C+00 20/20 0/0 0/0 .text setBlendMoveAnime__9daAlink_cFf */ @@ -13959,14 +14069,30 @@ asm void daAlink_c::playFaceTextureAnime() { /* 800B0098-800B0150 0AA9D8 00B8+00 14/14 0/0 0/0 .text * getGroundAngle__9daAlink_cFP13cBgS_PolyInfos */ +// matches but causes data issues +#ifdef NONMATCHING +s16 daAlink_c::getGroundAngle(cBgS_PolyInfo* i_poly, s16 i_angle) { + if (!dComIfG_Bgsp().ChkPolySafe(*i_poly)) { + return 0; + } + + cM3dGPla plane; + if (!dComIfG_Bgsp().GetTriPla(*i_poly, &plane) || !cBgW_CheckBGround(plane.mNormal.y)) { + return 0; + } + + return fopAcM_getPolygonAngle(&plane, i_angle); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::getGroundAngle(cBgS_PolyInfo* param_0, s16 param_1) { +asm s16 daAlink_c::getGroundAngle(cBgS_PolyInfo* param_0, s16 param_1) { nofralloc #include "asm/d/a/d_a_alink/getGroundAngle__9daAlink_cFP13cBgS_PolyInfos.s" } #pragma pop +#endif /* 800B0150-800B01FC 0AAA90 00AC+00 1/1 0/0 0/0 .text getRoofAngle__9daAlink_cFP13cBgS_PolyInfos */ @@ -14042,14 +14168,13 @@ asm void daAlink_c::setHangWaterY() { #pragma pop /* 800B172C-800B1770 0AC06C 0044+00 3/3 0/0 0/0 .text setSandDownBgCheckWallH__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setSandDownBgCheckWallH() { - nofralloc -#include "asm/d/a/d_a_alink/setSandDownBgCheckWallH__9daAlink_cFv.s" +void daAlink_c::setSandDownBgCheckWallH() { + if (!i_checkModeFlg(0x400)) { + for (int i = 0; i < 3; i++) { + field_0x18B0[i].SetWallH(field_0x2bac[i] + mSinkShapeOffset); + } + } } -#pragma pop /* ############################################################################################## */ /* 80453294-80453298 001894 0004+00 1/1 0/0 0/0 .sdata2 @64592 */ @@ -14109,15 +14234,15 @@ asm void daAlink_c::setSandShapeOffset() { #pragma pop /* 800B1FB8-800B1FD8 0AC8F8 0020+00 2/2 0/0 0/0 .text checkLv2MiddleBossBgRide__9daAlink_cFs */ -bool daAlink_c::checkLv2MiddleBossBgRide(short param_0) { - return param_0 == 0x7B || param_0 == 0x7D; +bool daAlink_c::checkLv2MiddleBossBgRide(s16 i_procName) { + return i_procName == PROC_OBJ_MSIMA || i_procName == PROC_B_ZANTS; } /* 800B1FD8-800B21EC 0AC918 0214+00 11/11 0/0 0/0 .text getSlidePolygon__9daAlink_cFP8cM3dGPla */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::getSlidePolygon(cM3dGPla* param_0) { +asm bool daAlink_c::getSlidePolygon(cM3dGPla* param_0) { nofralloc #include "asm/d/a/d_a_alink/getSlidePolygon__9daAlink_cFP8cM3dGPla.s" } @@ -14130,8 +14255,6 @@ BOOL daAlink_c::checkSlope() const { /* 800B221C-800B23FC 0ACB5C 01E0+00 1/0 0/0 0/0 .text setPlayerPosAndAngle__9daAlink_cFPC4cXyzsi */ -// need to figure out member function pointer calls -#ifdef NONMATCHING void daAlink_c::setPlayerPosAndAngle(cXyz const* p_pos, s16 param_1, int param_2) { if (checkEventRun() || param_2 != 0 || mSpecialMode != 0) { if (p_pos != NULL) { @@ -14159,29 +14282,19 @@ void daAlink_c::setPlayerPosAndAngle(cXyz const* p_pos, s16 param_1, int param_2 field_0x3118 = mCollisionRot.y; } - if (checkHorseRide() || checkSpinnerRide()) { + if (checkHorseRide()) { + i_dComIfGp_getHorseActor()->i_setHorsePosAndAngle(¤t.pos, mCollisionRot.y); + } else if (checkSpinnerRide()) { fopAc_ac_c* rideAc = mRideAcKeep.getActor(); rideAc->current.pos = current.pos; rideAc->mCollisionRot.y = mCollisionRot.y; rideAc->current.angle.y = mCollisionRot.y; rideAc->mSpeed.y = FLOAT_LABEL(lit_6108); - } else { - i_dComIfGp_getHorseActor()->setHorsePosAndAngle(¤t.pos, mCollisionRot.y); } field_0x814.ClrCcMove(); } } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setPlayerPosAndAngle(cXyz const* param_0, s16 param_1, int param_2) { - nofralloc -#include "asm/d/a/d_a_alink/setPlayerPosAndAngle__9daAlink_cFPC4cXyzsi.s" -} -#pragma pop -#endif /* 800B23FC-800B24F4 0ACD3C 00F8+00 1/0 0/0 0/0 .text * setPlayerPosAndAngle__9daAlink_cFPC4cXyzPC5csXyz */ @@ -14318,7 +14431,7 @@ void daAlink_c::setStickData() { field_0x33ac = 0.0f; mStickAngle = 0; dComIfGp_2dShowOff(); - i_onNoResetFlg2(0x80); + i_onNoResetFlg2(FLG2_UNK_80); var_r31 = 1; field_0x2fe4 = mCollisionRot.y; } else { @@ -14409,7 +14522,7 @@ void daAlink_c::setStickData() { mItemButton |= BTN_R; } - if (checkHeavyStateOn(1, 1) && (!checkBootsOrArmorHeavy() || !checkNoResetFlg0(0x800000))) { + if (checkHeavyStateOn(1, 1) && (!checkBootsOrArmorHeavy() || !checkNoResetFlg0(FLG0_UNDERWATER))) { if (i_checkWolf() && checkHeavyStateOn(1, 0) && mSinkShapeOffset < -30.0f) { mHeavySpeedMultiplier = daAlinkHIO_magneBoots_c0::m.mInputFactor * 0.4f; } else { @@ -14425,7 +14538,7 @@ void daAlink_c::setStickData() { field_0x33a8 *= mHeavySpeedMultiplier; } else if (i_checkWolf() && ((field_0x2fbc == 11 && checkWaterPolygonUnder()) || field_0x2fbb == 11)) { - i_onNoResetFlg0(0x40000000); + i_onNoResetFlg0(FLG0_UNK_40000000); field_0x33a8 *= daAlinkHIO_wolf_c0::m.mSwampInputRate; mHeavySpeedMultiplier = daAlinkHIO_wolf_c0::m.mSwampInputRate; } @@ -14447,11 +14560,11 @@ void daAlink_c::setStickData() { } if (!doButton()) { - i_offNoResetFlg0(0x10000000); + i_offNoResetFlg0(FLG0_UNK_10000000); } - if (!var_r31 && checkNoResetFlg2(0x80)) { - i_offNoResetFlg2(0x80); + if (!var_r31 && checkNoResetFlg2(FLG2_UNK_80)) { + i_offNoResetFlg2(FLG2_UNK_80); dComIfGp_2dShowOn(); } } @@ -14646,14 +14759,13 @@ asm void daAlink_c::setSpeedAndAngleAtn() { /* 800B477C-800B47B4 0AF0BC 0038+00 2/2 0/0 0/0 .text * checkRequestTalkActor__9daAlink_cFP10dAttList_cP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkRequestTalkActor(dAttList_c* param_0, fopAc_ac_c* param_1) { - nofralloc -#include "asm/d/a/d_a_alink/checkRequestTalkActor__9daAlink_cFP10dAttList_cP10fopAc_ac_c.s" +int daAlink_c::checkRequestTalkActor(dAttList_c* param_0, fopAc_ac_c* param_1) { + if (param_0 != NULL && (param_0->mType == 3 || (param_0->mType == 1 && mTargetedActor == param_1))) { + return true; + } + + return false; } -#pragma pop /* 800B47B4-800B48D0 0AF0F4 011C+00 4/4 0/0 0/0 .text checkServiceWaitMode__9daAlink_cFv */ @@ -14697,33 +14809,60 @@ void daAlink_c::setMidnaMsg() { } /* 800B4950-800B4A08 0AF290 00B8+00 3/3 0/0 0/0 .text notTalk__9daAlink_cFv */ -bool daAlink_c::notTalk() { - BOOL chk; +BOOL daAlink_c::notTalk() { + BOOL safe_poly; if (dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd) && dBgS_CheckBGroundPoly(mLinkAcch.m_gnd)) { - chk = true; + safe_poly = true; } else { - chk = false; + safe_poly = false; } if ((mMidnaTalkDelayTimer != 0 || (i_checkMagneBootsOn() && !cBgW_CheckBGround(mMagneBootsTopVec.y))) || !i_checkModeFlg(MODE_SWIMMING | MODE_ROPE_WALK | MODE_VINE_CLIMB | MODE_UNK_800 | MODE_RIDING | MODE_NO_COLLISION | MODE_CLIMB | MODE_JUMP) && - !chk) { + !safe_poly) { return true; } return false; } /* 800B4A08-800B4B2C 0AF348 0124+00 11/11 0/0 0/0 .text setTalkStatus__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setTalkStatus() { - nofralloc -#include "asm/d/a/d_a_alink/setTalkStatus__9daAlink_cFv.s" +BOOL daAlink_c::setTalkStatus() { + if (i_checkEndResetFlg0(ERFLG0_UNK_400000) || field_0x27f4 == NULL) { + return 0; + } + + if (checkRequestTalkActor(mAttList, field_0x27f4)) { + if (notTalk()) { + setDoStatus(0x90); + } else { + if (field_0x27f4->mAttentionInfo.mFlags & 0x2000000) { + return 0; + } + + if (field_0x27f4->mAttentionInfo.mFlags & 0x800000) { + setDoStatus(0x3B); + } else if (field_0x27f4->mAttentionInfo.mFlags & 0x20000000) { + if (fopAcM_GetName(field_0x27f4) == PROC_OBJ_SSDRINK) { + setDoStatus(0x3C); + } else { + setDoStatus(8); + } + } else if (field_0x27f4->mAttentionInfo.mFlags & 0x40000000) { + setDoStatus(0x80); + } else if (field_0x27f4->mAttentionInfo.mFlags & 0x8000000) { + setDoStatus(0x1B); + } else { + setDoStatus(0x1C); + } + } + + return 1; + } + + return 0; } -#pragma pop /* 800B4B2C-800B4B7C 0AF46C 0050+00 1/1 0/0 0/0 .text getFrontRollRate__9daAlink_cFv */ f32 daAlink_c::getFrontRollRate() { @@ -14777,7 +14916,7 @@ void daAlink_c::setFallVoice() { void daAlink_c::setLandPassiveData() { if (field_0x30f0 == 0) { if (doTrigger()) { - field_0x30f0 = 0x41; + field_0x30f0 = 65; } } else { field_0x30f0--; @@ -14786,7 +14925,7 @@ void daAlink_c::setLandPassiveData() { /* 800B5C64-800B5CCC 0B05A4 0068+00 5/5 0/0 0/0 .text setStepLandVibration__9daAlink_cFv */ -// cXyz issues +// matches with literals #ifdef NONMATCHING void daAlink_c::setStepLandVibration() { int shock; @@ -14795,9 +14934,8 @@ void daAlink_c::setStepLandVibration() { } else { shock = 1; } - cXyz xyz(0.0f, 1.0f, 0.0f); - dComIfGp_getVibration().StartShock(shock, 15, xyz); + dComIfGp_getVibration().StartShock(shock, 15, cXyz(0.0f, 1.0f, 0.0f)); } #else #pragma push @@ -14835,7 +14973,7 @@ asm BOOL daAlink_c::checkSlideAction() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkAutoJumpAction() { +asm BOOL daAlink_c::checkAutoJumpAction() { nofralloc #include "asm/d/a/d_a_alink/checkAutoJumpAction__9daAlink_cFv.s" } @@ -14984,14 +15122,36 @@ void daAlink_c::orderPeep() { SECTION_SDATA2 static u16 itemTalkType[2] = {6, 7}; /* 800B7BF8-800B7D4C 0B2538 0154+00 13/13 0/0 0/0 .text orderTalk__9daAlink_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::orderTalk(int param_0) { - nofralloc -#include "asm/d/a/d_a_alink/orderTalk__9daAlink_cFi.s" +int daAlink_c::orderTalk(int i_checkZTalk) { + if (notTalk()) { + return 0; + } + + if ((i_dComIfGp_getDoStatus() == 0x1C || i_dComIfGp_getDoStatus() == 0x1B || i_dComIfGp_getDoStatus() == 0x80 || + i_dComIfGp_getDoStatus() == 0x3B || i_dComIfGp_getDoStatus() == 0x3C || i_dComIfGp_getDoStatus() == 0x8) && + talkTrigger()) { + fopAcM_orderTalkEvent(this, field_0x27f4, 0, 0); + return 1; + } + + if (!i_checkWolf() && checkRequestTalkActor(mAttList2, field_0x27f8)) { + for (int i = 0; i < 2; i++) { + u8 item = dComIfGp_getSelectItem(i); + + // check if pressed X or Y and if item on button is a trade item + if (checkTradeItem(item) && itemTriggerCheck(1 << i)) { + fopAcM_orderTalkItemBtnEvent(itemTalkType[i], this, field_0x27f8, 0, 0); + return 1; + } + } + } + + if (i_checkZTalk) { + return orderZTalk(); + } + + return 0; } -#pragma pop /* ############################################################################################## */ /* 804532B4-804532B8 0018B4 0004+00 1/1 0/0 0/0 .sdata2 @67554 */ @@ -15021,7 +15181,7 @@ static asm void daAlink_searchKolin(fopAc_ac_c* param_0, void* param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::orderZTalk() { +asm int daAlink_c::orderZTalk() { nofralloc #include "asm/d/a/d_a_alink/orderZTalk__9daAlink_cFv.s" } @@ -15153,7 +15313,7 @@ asm BOOL daAlink_c::checkEquipAnime() const { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkWindDashAnime() const { +asm BOOL daAlink_c::checkWindDashAnime() const { nofralloc #include "asm/d/a/d_a_alink/checkWindDashAnime__9daAlink_cCFv.s" } @@ -15199,7 +15359,7 @@ void daAlink_c::itemEquip(u16 item_id) { if (mThrowBoomerangAcKeep.getActor() == NULL || item_id != BOOMERANG) { field_0x2fde = item_id; dComIfGp_clearPlayerStatus0(0, 0x400000); - i_offNoResetFlg3(0x40000); + i_offNoResetFlg3(FLG3_COPY_ROD_THROW_AFTER); itemUnequip(field_0x2fde, lit_6041); } } @@ -15414,9 +15574,9 @@ asm void daAlink_c::initGravity() { */ void daAlink_c::setSpecialGravity(f32 gravity, f32 speed, int param_2) { if (param_2 != 0) { - i_offNoResetFlg3(0x4000); + i_offNoResetFlg3(FLG3_UNK_4000); } else { - i_onNoResetFlg3(0x4000); + i_onNoResetFlg3(FLG3_UNK_4000); } mGravity = gravity; mMaxFallSpeed = speed; @@ -15570,7 +15730,7 @@ SECTION_DEAD static char const* const stringBase_803925BA = "F_SP114"; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkRestartRoom() { +asm bool daAlink_c::checkRestartRoom() { nofralloc #include "asm/d/a/d_a_alink/checkRestartRoom__9daAlink_cFv.s" } @@ -15670,7 +15830,7 @@ int daAlink_c::checkSceneChange(int exitID) { exitMode = 1; } else if (i_checkModeFlg(0x1000000)) { exitSpeed = field_0x33a8; - if (mFrameCtrl1[0].getRate() >= 0.0f) { + if (mUnderFrameCtrl[0].getRate() >= 0.0f) { exitMode = 2; } else { exitMode = 3; @@ -15694,7 +15854,7 @@ int daAlink_c::checkSceneChange(int exitID) { sceneChanged = dStage_changeScene(mExitID, exitSpeed, exitMode, fopAcM_GetRoomNo(this), mCollisionRot.y, -1); if (sceneChanged) { - i_onNoResetFlg2(0x8000); + i_onNoResetFlg2(FLG2_SCN_CHG_START); if (mpScnChg != NULL && fopAcM_GetName(mpScnChg) == PROC_SCENE_EXIT) { mpScnChg->setSceneChangeOK(); } @@ -15713,13 +15873,13 @@ int daAlink_c::checkSceneChange(int exitID) { } if (sceneChanged) { - i_onNoResetFlg0(0x4000); + i_onNoResetFlg0(FLG0_UNK_4000); if (!mEvtInfo.i_checkCommandDoor()) { mDemo.setOriginalDemoType(); if (checkUpperReadyThrowAnime()) { - resetUpperAnime(UPPER_NOW, 3.0f); + resetUpperAnime(UPPER_2, 3.0f); } if (field_0x3174 == 5) { @@ -15982,7 +16142,7 @@ BOOL daAlink_c::setItemActor() { if (actor == NULL) { if (checkIronBallWaitAnime()) { - resetUpperAnime(UPPER_NOW, -1.0f); + resetUpperAnime(UPPER_2, -1.0f); } deleteEquipItem(FALSE, FALSE); return 0; @@ -16074,7 +16234,7 @@ BOOL daAlink_c::checkZoraWearAbility() const { wear_zora = true; } - if (wear_zora && !i_checkNoResetFlg2(UNK_ARMOR)) { + if (wear_zora && !i_checkNoResetFlg2(FLG2_UNK_80000)) { ret = true; } @@ -16101,7 +16261,7 @@ BOOL daAlink_c::checkMagicArmorWearAbility() const { wear_armor = true; } - if (wear_armor && !i_checkNoResetFlg2(UNK_ARMOR)) { + if (wear_armor && !i_checkNoResetFlg2(FLG2_UNK_80000)) { ret = true; } @@ -16393,9 +16553,9 @@ MtxP daAlink_c::getModelJointMtx(u16 param_0) { /* 800C1DE0-800C1E0C 0BC720 002C+00 1/0 0/0 0/0 .text onFrollCrashFlg__9daAlink_cFUci */ void daAlink_c::onFrollCrashFlg(u8 param_0, int param_1) { if (param_1 != 0) { - i_onNoResetFlg0(UNK_F_ROLL_CRASH_2); + i_onNoResetFlg0(FLG0_UNK_10); } else { - i_onNoResetFlg0(UNK_F_ROLL_CRASH_1); + i_onNoResetFlg0(FLG0_UNK_8); } mRollCrashFlg = param_0; } @@ -16708,7 +16868,7 @@ void daAlink_c::setClothesChange(int param_0) { return; } - i_onNoResetFlg2(0x200000); + i_onNoResetFlg2(FLG2_UNK_200000); } /* 80140064-80140070 13A9A4 000C+00 0/0 1/1 0/0 .text setShieldChange__9daAlink_cFv */ @@ -17091,7 +17251,7 @@ int dComIfGs_isItemFirstBit(u8 i_no) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm u8 dStage_stagInfo_GetSaveTbl(stage_stag_info_class* param_0) { +static asm s32 dStage_stagInfo_GetSaveTbl(stage_stag_info_class* param_0) { nofralloc #include "asm/d/a/d_a_alink/dStage_stagInfo_GetSaveTbl__FP21stage_stag_info_class.s" } @@ -17101,7 +17261,7 @@ static asm u8 dStage_stagInfo_GetSaveTbl(stage_stag_info_class* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_getStage() { +static asm dStage_stageDt_c* dComIfGp_getStage() { nofralloc #include "asm/d/a/d_a_alink/dComIfGp_getStage__Fv.s" } @@ -17109,8 +17269,8 @@ static asm void dComIfGp_getStage() { /* 801412B0-801412BC 13BBF0 000C+00 1/1 0/0 0/0 .text checkEquipHeavyBoots__9daPy_py_cCFv */ -BOOL daPy_py_c::checkEquipHeavyBoots() const { - return i_checkNoResetFlg0(EQUIP_HEAVY_BOOTS); +u32 daPy_py_c::checkEquipHeavyBoots() const { + return i_checkNoResetFlg0(FLG0_EQUIP_HVY_BOOTS); } /* 801412BC-801412C4 13BBFC 0008+00 1/1 4/4 0/0 .text fopAcM_GetName__FPv */ @@ -17134,7 +17294,7 @@ void daPy_py_c::onNoResetFlg0(daPy_FLG0 pFlag) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dEvt_control_c::isOrderOK() { +asm BOOL dEvt_control_c::isOrderOK() { nofralloc #include "asm/d/a/d_a_alink/isOrderOK__14dEvt_control_cFv.s" } @@ -17144,7 +17304,7 @@ asm void dEvt_control_c::isOrderOK() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_getEvent() { +static asm dEvt_control_c& dComIfGp_getEvent() { nofralloc #include "asm/d/a/d_a_alink/dComIfGp_getEvent__Fv.s" } @@ -17155,7 +17315,7 @@ static asm void dComIfGp_getEvent() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_checkPlayerStatus0(int param_0, u32 param_1) { +static asm u32 dComIfGp_checkPlayerStatus0(int param_0, u32 param_1) { nofralloc #include "asm/d/a/d_a_alink/dComIfGp_checkPlayerStatus0__FiUl.s" } @@ -17166,7 +17326,7 @@ static asm void dComIfGp_checkPlayerStatus0(int param_0, u32 param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_checkPlayerStatus1(int param_0, u32 param_1) { +static asm u32 dComIfGp_checkPlayerStatus1(int param_0, u32 param_1) { nofralloc #include "asm/d/a/d_a_alink/dComIfGp_checkPlayerStatus1__FiUl.s" } @@ -17174,7 +17334,7 @@ static asm void dComIfGp_checkPlayerStatus1(int param_0, u32 param_1) { /* 80141340-8014134C 13BC80 000C+00 1/1 0/0 0/0 .text * checkEndResetFlg1__9daPy_py_cCFQ29daPy_py_c11daPy_ERFLG1 */ -int daPy_py_c::checkEndResetFlg1(daPy_ERFLG1 pFlag) const { +u32 daPy_py_c::checkEndResetFlg1(daPy_ERFLG1 pFlag) const { return mEndResetFlg1 & pFlag; } @@ -17235,8 +17395,8 @@ BOOL dComIfGs_isEventBit(u16 id) { } /* 801413CC-801413D8 13BD0C 000C+00 1/1 0/0 0/0 .text checkWolf__9daPy_py_cCFv */ -int daPy_py_c::checkWolf() const { - return i_checkNoResetFlg1(IS_WOLF); +u32 daPy_py_c::checkWolf() const { + return i_checkNoResetFlg1(FLG1_IS_WOLF); } /* 801413D8-801413F8 13BD18 0020+00 1/1 0/0 0/0 .text checkSwordGet__9daPy_py_cFv */ @@ -17246,7 +17406,7 @@ BOOL daPy_py_c::checkSwordGet() { /* 801413F8-80141404 13BD38 000C+00 1/1 0/0 0/0 .text * checkResetFlg0__9daPy_py_cCFQ29daPy_py_c10daPy_RFLG0 */ -int daPy_py_c::checkResetFlg0(daPy_RFLG0 pFlag) const { +u32 daPy_py_c::checkResetFlg0(daPy_RFLG0 pFlag) const { return mResetFlg0 & pFlag; } @@ -17257,7 +17417,7 @@ bool dBgS_Acch::ChkGroundHit() const { /* 80141410-8014141C 13BD50 000C+00 1/1 0/0 0/0 .text * checkNoResetFlg0__9daPy_py_cCFQ29daPy_py_c9daPy_FLG0 */ -int daPy_py_c::checkNoResetFlg0(daPy_FLG0 pFlag) const { +u32 daPy_py_c::checkNoResetFlg0(daPy_FLG0 pFlag) const { return mNoResetFlg0 & pFlag; } @@ -17270,7 +17430,7 @@ static s32 dComIfGp_getPlayerCameraID(int i) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_getPlayerCameraID(int param_0) { +static asm s8 dComIfGp_getPlayerCameraID(int param_0) { nofralloc #include "asm/d/a/d_a_alink/dComIfGp_getPlayerCameraID__Fi.s" } @@ -17301,13 +17461,13 @@ static BOOL dComIfGp_event_runCheck() { /* 801414C0-801414CC 13BE00 000C+00 1/1 0/0 0/0 .text * checkNoResetFlg2__9daPy_py_cCFQ29daPy_py_c9daPy_FLG2 */ -int daPy_py_c::checkNoResetFlg2(daPy_FLG2 pFlag) const { +u32 daPy_py_c::checkNoResetFlg2(daPy_FLG2 pFlag) const { return mNoResetFlg2 & pFlag; } /* 801414CC-801414D8 13BE0C 000C+00 1/1 2/2 0/0 .text checkMagneBootsOn__9daPy_py_cCFv */ -int daPy_py_c::checkMagneBootsOn() const { - return i_checkNoResetFlg0(MAGNE_BOOTS_ON); +u32 daPy_py_c::checkMagneBootsOn() const { + return i_checkNoResetFlg0(FLG0_MAGNE_BOOTS_ON); } /* 801414D8-801414E8 13BE18 0010+00 1/1 2/2 0/0 .text dComIfGp_getHorseActor__Fv */ @@ -17316,13 +17476,13 @@ daHorse_c* dComIfGp_getHorseActor() { } /* 801414E8-801414F4 13BE28 000C+00 1/1 0/0 0/0 .text checkBoarSingleBattle__9daPy_py_cCFv */ -int daPy_py_c::checkBoarSingleBattle() const { - return i_checkNoResetFlg2(BOAR_SINGLE_BATTLE); +u32 daPy_py_c::checkBoarSingleBattle() const { + return i_checkNoResetFlg2(FLG2_BOAR_SINGLE_BATTLE); } /* 801414F4-80141500 13BE34 000C+00 1/1 0/0 0/0 .text * checkEndResetFlg0__9daPy_py_cCFQ29daPy_py_c11daPy_ERFLG0 */ -int daPy_py_c::checkEndResetFlg0(daPy_ERFLG0 pFlag) const { +u32 daPy_py_c::checkEndResetFlg0(daPy_ERFLG0 pFlag) const { return mEndResetFlg0 & pFlag; } @@ -18160,7 +18320,7 @@ fopAc_ac_c* daHorse_c::getZeldaActor() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_getDoStatus() { +static asm u8 dComIfGp_getDoStatus() { nofralloc #include "asm/d/a/d_a_alink/dComIfGp_getDoStatus__Fv.s" } @@ -18214,18 +18374,18 @@ static void dMeter2Info_setFloatingMessage(u16 pMessageID, s16 pMessageTimer, bo /* 801419F4-80141A04 13C334 0010+00 1/1 0/0 0/0 .text onForcePanic__9daMidna_cFv */ void daMidna_c::onForcePanic() { - onEndResetStateFlg0(FORCE_PANIC); + onEndResetStateFlg0(ERFLG0_FORCE_PANIC); } /* 80141A04-80141A10 13C344 000C+00 1/1 0/0 0/0 .text checkForceNormalColor__9daMidna_cCFv */ u32 daMidna_c::checkForceNormalColor() const { - return checkStateFlg1(FORCE_NORMAL_COLOR); + return checkStateFlg1(FLG1_FORCE_NORMAL_COL); } /* 80141A10-80141A1C 13C350 000C+00 1/1 0/0 0/0 .text checkForceTiredColor__9daMidna_cCFv */ u32 daMidna_c::checkForceTiredColor() const { - return checkStateFlg1(FORCE_TIRED_COLOR); + return checkStateFlg1(FLG1_FORCE_TIRED_COL); } /* 80141A1C-80141A84 13C35C 0068+00 1/1 0/0 0/0 .text checkMidnaTired__9daMidna_cFv */ @@ -18240,7 +18400,7 @@ asm bool daMidna_c::checkMidnaTired() { /* 80141A84-80141A94 13C3C4 0010+00 1/1 0/0 0/0 .text onNoServiceWait__9daMidna_cFv */ void daMidna_c::onNoServiceWait() { - onEndResetStateFlg0(NO_SERVICE_WAIT); + onEndResetStateFlg0(ERFLG0_NO_SERVICE_WAIT); } /* 80141A94-80141ACC 13C3D4 0038+00 1/1 0/0 0/0 .text setControllActorData__8daCrod_cFv diff --git a/src/d/a/d_a_alink_boom.inc b/src/d/a/d_a_alink_boom.inc index 73e3a79c57..258657501e 100644 --- a/src/d/a/d_a_alink_boom.inc +++ b/src/d/a/d_a_alink_boom.inc @@ -1,3 +1,5 @@ +#include "rel/d/a/d_a_boomerang/d_a_boomerang.h" + /* 800DFFE0-800E0010 0DA920 0030+00 0/0 0/0 1/1 .text checkBoomerangLockAccept__9daAlink_cFv */ BOOL daAlink_c::checkBoomerangLockAccept() { return mSight.getDrawFlg() && i_dComIfGp_checkPlayerStatus0(0, 0x80000); @@ -9,9 +11,9 @@ BOOL daAlink_c::checkBoomerangLockAccept() { f32 daAlink_c::getBoomSpeed() { f32 speed; if (checkBoomerangChargeEndWait()) { - speed = daAlinkHIO_boom_c0::m.field_0x38; + speed = daAlinkHIO_boom_c0::m.mFlySpeed2; } else { - speed = daAlinkHIO_boom_c0::m.field_0x34; + speed = daAlinkHIO_boom_c0::m.mFlySpeed; } if (i_checkModeFlg(0x400) && mRideAcKeep.getActor() != NULL && mSpeedF > FLOAT_LABEL(lit_6108)) { @@ -39,22 +41,22 @@ f32 daAlink_c::getBoomCatchSpeed() const { /* 800E00C0-800E011C 0DAA00 005C+00 1/1 0/0 1/1 .text getBoomFlyMax__9daAlink_cCFv */ f32 daAlink_c::getBoomFlyMax() const { if (i_checkModeFlg(0x400) && !checkCanoeRide()) { - return daAlinkHIO_boom_c0::m.field_0x40; + return daAlinkHIO_boom_c0::m.mHorsebackFlyDistMax; } else { - return daAlinkHIO_boom_c0::m.field_0x3c; + return daAlinkHIO_boom_c0::m.mFlyDistMax; } } /* 800E011C-800E0190 0DAA5C 0074+00 1/1 0/0 2/2 .text getBoomLockMax__9daAlink_cFv */ f32 daAlink_c::getBoomLockMax() { - f32 max = getBoomFlyMax(); + f32 fly_max = getBoomFlyMax(); if (checkBossBabaRoom()) { return lit_12475; - } else if (daAlinkHIO_boom_c0::m.field_0x44 > max) { - return daAlinkHIO_boom_c0::m.field_0x44; + } else if (daAlinkHIO_boom_c0::m.mLockDistMax > fly_max) { + return daAlinkHIO_boom_c0::m.mLockDistMax; } else { - return max; + return fly_max; } } @@ -94,21 +96,25 @@ fopAc_ac_c* daAlink_c::getBoomerangActor() { } /* 800E0244-800E02B8 0DAB84 0074+00 0/0 1/1 0/0 .text checkBoomerangChargeEnd__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkBoomerangChargeEnd() { - nofralloc -#include "asm/d/a/d_a_alink/checkBoomerangChargeEnd__9daAlink_cFv.s" +bool daAlink_c::checkBoomerangChargeEnd() { + if (checkBoomerangChargeEndWait()) { + return true; + } + + daBoomerang_c* boomerang = (daBoomerang_c*)getBoomerangActor(); + if (boomerang != NULL && boomerang->checkCharge()) { + return true; + } + + return false; } -#pragma pop /* 800E02B8-800E03D0 0DABF8 0118+00 0/0 1/1 0/0 .text * checkBoomerangCarry__9daAlink_cFP10fopAc_ac_c */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkBoomerangCarry(fopAc_ac_c* param_0) { +asm BOOL daAlink_c::checkBoomerangCarry(fopAc_ac_c* param_0) { nofralloc #include "asm/d/a/d_a_alink/checkBoomerangCarry__9daAlink_cFP10fopAc_ac_c.s" } @@ -120,11 +126,11 @@ void daAlink_c::initBoomerangUpperAnimeSpeed(int param_0) { if (!checkBoomerangThrowAnime()) { if (param_0 != 0) { f32 tmp = FLOAT_LABEL(lit_6108); - mFrameCtrl2[2].setRate(tmp); - mFrameCtrl2[2].setFrame(tmp); - getNowAnmPackUpper(UPPER_NOW)->setFrame(tmp); + mUpperFrameCtrl[2].setRate(tmp); + mUpperFrameCtrl[2].setFrame(tmp); + getNowAnmPackUpper(UPPER_2)->setFrame(tmp); } else { - mFrameCtrl2[2].setRate(daAlinkHIO_boom_c0::m.field_0x2c); + mUpperFrameCtrl[2].setRate(daAlinkHIO_boom_c0::m.mIdleAnmSpeed); } } } @@ -136,14 +142,9 @@ BOOL daAlink_c::checkBoomerangAnime() const { } /* 800E04AC-800E04E8 0DADEC 003C+00 13/13 0/0 0/0 .text checkBoomerangThrowAnime__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm BOOL daAlink_c::checkBoomerangThrowAnime() const { - nofralloc -#include "asm/d/a/d_a_alink/checkBoomerangThrowAnime__9daAlink_cCFv.s" +BOOL daAlink_c::checkBoomerangThrowAnime() const { + return (mEquipItem == BOOMERANG || i_checkNoResetFlg1(FLG1_UNK_2) || mEquipItem == 0x102) && checkUpperAnime(0x53); } -#pragma pop /* 800E04E8-800E055C 0DAE28 0074+00 1/1 0/0 0/0 .text setBoomerangReadyQuake__9daAlink_cFv */ #pragma push @@ -167,13 +168,13 @@ asm void daAlink_c::setBoomerangReadyAnime() { /* 800E05E8-800E0630 0DAF28 0048+00 2/2 0/0 0/0 .text setThrowBoomerangAnime__9daAlink_cFv */ void daAlink_c::setThrowBoomerangAnime() { - setUpperAnimeParam(0x53, UPPER_NOW, &daAlinkHIO_boom_c0::m.mThrowAnm); + setUpperAnimeParam(0x53, UPPER_2, &daAlinkHIO_boom_c0::m.mThrowAnm); cancelItemUseQuake(0); } /* 800E0630-800E06B8 0DAF70 0088+00 2/2 0/0 0/0 .text setBoomerangCatchAnime__9daAlink_cFv */ void daAlink_c::setBoomerangCatchAnime() { - setUpperAnimeParam(0x52, UPPER_NOW, &daAlinkHIO_boom_c0::m.mCatchAnm); + setUpperAnimeParam(0x52, UPPER_2, &daAlinkHIO_boom_c0::m.mCatchAnm); setFacePriBck(0xE8); field_0x2f97 = 254; if (mEquipItem != COPY_ROD) { diff --git a/src/d/a/d_a_alink_canoe.inc b/src/d/a/d_a_alink_canoe.inc index 2fd44bf446..4e36f7cca9 100644 --- a/src/d/a/d_a_alink_canoe.inc +++ b/src/d/a/d_a_alink_canoe.inc @@ -85,7 +85,7 @@ asm void daAlink_c::checkCanoeRideTandem() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkFishingRodAndLureItem() const { +asm BOOL daAlink_c::checkFishingRodAndLureItem() const { nofralloc #include "asm/d/a/d_a_alink/checkFishingRodAndLureItem__9daAlink_cCFv.s" } diff --git a/src/d/a/d_a_alink_copyrod.inc b/src/d/a/d_a_alink_copyrod.inc index b712bfb650..6c4044c00f 100644 --- a/src/d/a/d_a_alink_copyrod.inc +++ b/src/d/a/d_a_alink_copyrod.inc @@ -56,11 +56,11 @@ asm void daAlink_c::initCopyRodUpperAnimeSpeed(int param_0) { /* void daAlink_c::initCopyRodUpperAnimeSpeed(int param_0) { if (checkCopyRodThrowAnime()) { if (param_1 == 0) { - mFrameCtrl2[2].setRate(); + mUpperFrameCtrl[2].setRate(); } f32 tmp = FLOAT_LABEL(lit_6108); - mFrameCtrl2[2].setRate(tmp); - mFrameCtrl2[2].setFrame(tmp); + mUpperFrameCtrl[2].setRate(tmp); + mUpperFrameCtrl[2].setFrame(tmp); } } */ @@ -173,7 +173,7 @@ void daAlink_c::throwCopyRod() { if (checkCopyRodTopUse()) { copy_rod->setThrow(); mCopyRodAcKeep = mItemAcKeep; - i_onNoResetFlg3(COPY_ROD_THROW_AFTER); + i_onNoResetFlg3(FLG3_COPY_ROD_THROW_AFTER); mItemAcKeep.clearData(); } dComIfGp_clearPlayerStatus0(0, 0x80); @@ -203,7 +203,7 @@ asm void daAlink_c::returnCopyRod() { #pragma pop /* void daAlink_c::returnCopyRod() { - i_offNoResetFlg3(COPY_ROD_THROW_AFTER); + i_offNoResetFlg3(FLG3_COPY_ROD_THROW_AFTER); if (mEquipItem == 0x46) { mItemAcKeep = mCopyRodAcKeep; diff --git a/src/d/a/d_a_alink_cut.inc b/src/d/a/d_a_alink_cut.inc index 50bbdadf28..1fe5d47af8 100644 --- a/src/d/a/d_a_alink_cut.inc +++ b/src/d/a/d_a_alink_cut.inc @@ -92,7 +92,7 @@ void daAlink_c::changeCutFast() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkCutFastReady() { +asm bool daAlink_c::checkCutFastReady() { nofralloc #include "asm/d/a/d_a_alink/checkCutFastReady__9daAlink_cFv.s" } @@ -128,10 +128,28 @@ void daAlink_c::offSwordModel() { */ BOOL daAlink_c::checkCutTypeNoBlur() const { return mCutType == TYPE_CUT_STAB || mCutType == TYPE_CUT_STAB_COMBO || - mCutType == TYPE_CUT_STAB_FINISH || i_checkNoResetFlg0(UNDER_WATER_MOVEMENT); + mCutType == TYPE_CUT_STAB_FINISH || i_checkNoResetFlg0(FLG0_UNDERWATER); } /* 800D13E4-800D1424 0CBD24 0040+00 7/7 0/0 0/0 .text checkCutTurnInput__9daAlink_cCFv */ +#ifdef NONMATCHING +u32 daAlink_c::checkCutTurnInput() const { + + s32 unk0; + int unk1; + int unk2; + int unk3; + + unk0 = abs(field_0x3180); + s16 ex = -2048; + unk1 = unk0 ^ (u32)ex; + unk2 = (unk1 & unk0); + unk3 = (unk1 >> 1); + + + return (u32)(unk3 -= unk2) >> 0x1FU; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -140,6 +158,7 @@ asm bool daAlink_c::checkCutTurnInput() const { #include "asm/d/a/d_a_alink/checkCutTurnInput__9daAlink_cCFv.s" } #pragma pop +#endif /* 800D1424-800D1430 0CBD64 000C+00 7/7 0/0 0/0 .text getCutTurnDirection__9daAlink_cCFv */ @@ -283,13 +302,13 @@ void daAlink_c::setComboReserb() { field_0x307e = daAlinkHIO_cut_c0::m.mComboDuration; } if (mComboCutCount != 4 && field_0x2fce == 0 && swordSwingTrigger()) { - i_onNoResetFlg2(UNK_FLG2_2); + i_onNoResetFlg2(FLG2_UNK_2); } } /* 800D2188-800D21D0 0CCAC8 0048+00 1/1 0/0 0/0 .text checkComboReserb__9daAlink_cFv */ BOOL daAlink_c::checkComboReserb() { - return i_checkNoResetFlg2(UNK_FLG2_2) && !checkEventRun(); + return i_checkNoResetFlg2(FLG2_UNK_2) && !checkEventRun(); } /* 800D21D0-800D2284 0CCB10 00B4+00 1/1 0/0 0/0 .text commonCutAction__9daAlink_cFv */ @@ -316,7 +335,7 @@ bool daAlink_c::commonCutAction() { /* 800D2284-800D22BC 0CCBC4 0038+00 13/13 0/0 0/0 .text setSwordVoiceSe__9daAlink_cFUl */ void daAlink_c::setSwordVoiceSe(u32 sfx_id) { - if (!i_checkNoResetFlg0(UNDER_WATER_MOVEMENT)) { + if (!i_checkNoResetFlg0(FLG0_UNDERWATER)) { voiceStart(sfx_id); } } @@ -477,7 +496,7 @@ asm void daAlink_c::checkCutAtnActorChange() { // literals, and small issue with JMAFastSqrt instructions #ifdef NONMATCHING void daAlink_c::setCutJumpSpeed(int cut_type) { - if (i_checkNoResetFlg0(UNDER_WATER_MOVEMENT)) { + if (i_checkNoResetFlg0(FLG0_UNDERWATER)) { mNormalSpeed *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityX; mSpeed.y *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityY; } else if (checkHeavyStateOn(1, 1)) { @@ -666,7 +685,7 @@ bool daAlink_c::procCutJump() { } if (mLinkAcch.ChkGroundHit()) { procCutJumpLandInit(field_0x3198); - } else if (mFrameCtrl1[0].getFrame() >= daAlinkHIO_cutJump_c0::m.mStartAttackFrame) { + } else if (mUnderFrameCtrl[0].getFrame() >= daAlinkHIO_cutJump_c0::m.mStartAttackFrame) { if (!i_checkNoResetFlg0(FLG0_UNK_40)) { seStartSwordCut(Z2SE_AL_SWORD_SWING_L); } @@ -883,7 +902,7 @@ asm void daAlink_c::procCutLargeJumpInit() { /* 800D6484-800D66C0 0D0DC4 023C+00 1/0 0/0 0/0 .text procCutLargeJump__9daAlink_cFv */ bool daAlink_c::procCutLargeJump() { - daPy_frameCtrl_c* ctrl = &mFrameCtrl1[0]; + daPy_frameCtrl_c* ctrl = &mUnderFrameCtrl[0]; if (field_0x3010 != 0) { field_0x2f99 = 4; diff --git a/src/d/a/d_a_alink_damage.inc b/src/d/a/d_a_alink_damage.inc index 21a74d5e90..a36565f3d9 100644 --- a/src/d/a/d_a_alink_damage.inc +++ b/src/d/a/d_a_alink_damage.inc @@ -116,7 +116,7 @@ asm bool daAlink_c::setThrowDamage(s16 param_0, f32 param_1, f32 param_2, int pa #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::damageMagnification(int param_0, int param_1) { +asm f32 daAlink_c::damageMagnification(int param_0, int param_1) { nofralloc #include "asm/d/a/d_a_alink/damageMagnification__9daAlink_cFii.s" } @@ -189,7 +189,7 @@ asm void daAlink_c::checkIcePolygonDamage(cBgS_PolyInfo* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkMagicArmorNoDamage() { +asm BOOL daAlink_c::checkMagicArmorNoDamage() { nofralloc #include "asm/d/a/d_a_alink/checkMagicArmorNoDamage__9daAlink_cFv.s" } @@ -228,8 +228,8 @@ void daAlink_c::damageTimerCount() { i_offNoResetFlg1(1); } - if (checkDkCaught2Anime() && i_checkNoResetFlg0(0x20000)) { - i_offNoResetFlg0(0x20000); + if (checkDkCaught2Anime() && i_checkNoResetFlg0(FLG0_UNK_20000)) { + i_offNoResetFlg0(FLG0_UNK_20000); } } else if (mDamageColorTime != 0) { mDamageColorTime--; @@ -273,7 +273,7 @@ asm void daAlink_c::checkLargeAttack(int param_0) const { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkDamageAction() { +asm BOOL daAlink_c::checkDamageAction() { nofralloc #include "asm/d/a/d_a_alink/checkDamageAction__9daAlink_cFv.s" } diff --git a/src/d/a/d_a_alink_demo.inc b/src/d/a/d_a_alink_demo.inc index 93f76df74b..b9b983841f 100644 --- a/src/d/a/d_a_alink_demo.inc +++ b/src/d/a/d_a_alink_demo.inc @@ -29,7 +29,7 @@ asm bool daAlink_c::checkSetNpcTks(cXyz* param_0, int param_1, int param_2) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkDemoAction() { +asm int daAlink_c::checkDemoAction() { nofralloc #include "asm/d/a/d_a_alink/checkDemoAction__9daAlink_cFv.s" } @@ -131,7 +131,7 @@ asm void daAlink_c::getDemoLookActor() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkFlyAtnWait() { +asm bool daAlink_c::checkFlyAtnWait() { nofralloc #include "asm/d/a/d_a_alink/checkFlyAtnWait__9daAlink_cFv.s" } @@ -263,50 +263,50 @@ asm void daAlink_c::setDemoBodyBck(dDemo_actor_c* param_0, u16 param_1) { #pragma pop /* 80118AD0-80118B34 113410 0064+00 1/1 0/0 0/0 .text checkFinalBattle__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkFinalBattle() { - nofralloc -#include "asm/d/a/d_a_alink/checkFinalBattle__9daAlink_cFv.s" +BOOL daAlink_c::checkFinalBattle() { + return checkStageName("D_MN09B") && dComIfGs_isSaveDunSwitch(1); } -#pragma pop /* 80118B34-80118BF4 113474 00C0+00 3/3 0/0 0/0 .text checkRestartDead__9daAlink_cFii */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkRestartDead(int param_0, int param_1) { - nofralloc -#include "asm/d/a/d_a_alink/checkRestartDead__9daAlink_cFii.s" +BOOL daAlink_c::checkRestartDead(int i_dmgAmount, int param_1) { + i_dmgAmount *= (int)damageMagnification(param_1, 1); + + if (mProcID != PROC_DEAD && i_dmgAmount >= i_dComIfGs_getLife() && !checkMagicArmorNoDamage() && + !dComIfGs_checkBottle(FAIRY)) { + i_onNoResetFlg2(FLG2_UNK_40000); + procCoDeadInit(0); + return 1; + } + + return 0; } -#pragma pop /* 80118BF4-80118C98 113534 00A4+00 2/2 0/0 0/0 .text setDeadRideSyncPos__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setDeadRideSyncPos() { - nofralloc -#include "asm/d/a/d_a_alink/setDeadRideSyncPos__9daAlink_cFv.s" +void daAlink_c::setDeadRideSyncPos() { + if (i_checkModeFlg(MODE_RIDING) && mRideAcKeep.getActor() != NULL) { + if (i_checkReinRide()) { + setSyncRidePos(); + } else if (checkSpinnerRide()) { + s16 old_angle = mCollisionRot.y; + setSpinnerSyncPos(); + mCollisionRot.y = old_angle; + } + } } -#pragma pop /* 80118C98-80118D7C 1135D8 00E4+00 5/5 0/0 0/0 .text checkDeadHP__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm BOOL daAlink_c::checkDeadHP() { - nofralloc -#include "asm/d/a/d_a_alink/checkDeadHP__9daAlink_cFv.s" +BOOL daAlink_c::checkDeadHP() { + return ((i_dComIfGs_getLife() == 0 && !i_checkResetFlg0(RFLG0_UNK_400)) && + !dComIfGs_checkBottle(FAIRY)) || + i_checkNoResetFlg2(FLG2_UNK_40000) || + (dComIfGp_getOxygenShowFlag() && dComIfGp_getNowOxygen() == 0); } -#pragma pop /* 80118D7C-80118FF8 1136BC 027C+00 3/3 0/0 0/0 .text checkDeadAction__9daAlink_cFi */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkDeadAction(int param_0) { +asm BOOL daAlink_c::checkDeadAction(int param_0) { nofralloc #include "asm/d/a/d_a_alink/checkDeadAction__9daAlink_cFi.s" } @@ -374,14 +374,10 @@ static asm void daAlink_c_getDemoIDData(dDemo_actor_c* param_0, int* param_1, in #pragma pop /* 801195C0-801195F8 113F00 0038+00 7/0 0/0 0/0 .text procDemoCommon__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procDemoCommon() { - nofralloc -#include "asm/d/a/d_a_alink/procDemoCommon__9daAlink_cFv.s" +int daAlink_c::procDemoCommon() { + dComIfGp_evmng_cutEnd(field_0x3184); + return 1; } -#pragma pop /* 801195F8-801196D8 113F38 00E0+00 1/1 0/0 0/0 .text procCoToolDemoInit__9daAlink_cFv */ #pragma push @@ -464,14 +460,18 @@ asm void daAlink_c::procCoUnequip() { #pragma pop /* 8011A688-8011A6FC 114FC8 0074+00 4/4 0/0 0/0 .text setGetSubBgm__9daAlink_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setGetSubBgm(int param_0) { - nofralloc -#include "asm/d/a/d_a_alink/setGetSubBgm__9daAlink_cFi.s" +void daAlink_c::setGetSubBgm(int param_0) { + u32 se_type = getSeType[param_0]; + + if (se_type == 3 && field_0x3010 == 0) { + se_type = 7; + } + + if (se_type != 8) { + mDoAud_subBgmStart(bgmLabel[se_type]); + dComIfGp_setMesgBgmOn(); + } } -#pragma pop /* 8011A6FC-8011A798 11503C 009C+00 1/0 0/0 0/0 .text checkTreasureRupeeReturn__9daAlink_cCFi */ // register issues. probably wrong order of operations @@ -919,14 +919,14 @@ asm void daAlink_c::procCoTwGateInit() { #pragma pop /* 8011D7D4-8011D82C 118114 0058+00 1/0 0/0 0/0 .text procCoTwGate__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procCoTwGate() { - nofralloc -#include "asm/d/a/d_a_alink/procCoTwGate__9daAlink_cFv.s" +int daAlink_c::procCoTwGate() { + if (mUnderFrameCtrl[0].checkAnmEnd()) { + dComIfGp_evmng_cutEnd(field_0x3184); + } + + field_0x2f99 = 7; + return 1; } -#pragma pop /* 8011D82C-8011D8F8 11816C 00CC+00 1/0 0/0 0/0 .text procWolfSnowEscapeInit__9daAlink_cFv */ #pragma push @@ -1102,10 +1102,10 @@ asm void daAlink_c::procGanonFinishInit() { /* 8011EA78-8011EAE8 1193B8 0070+00 1/0 0/0 0/0 .text procGanonFinish__9daAlink_cFv */ bool daAlink_c::procGanonFinish() { - i_onEndResetFlg1(GANON_FINISH); + i_onEndResetFlg1(ERFLG1_GANON_FINISH); current.pos = field_0x37c8; - if (mFrameCtrl1[0].checkAnmEnd()) { - setSingleAnimeBaseMorf(ANM_GANON_FINISH, lit_6041); + if (mUnderFrameCtrl[0].checkAnmEnd()) { + setSingleAnimeBaseMorf(ANM_GANON_FINISH_WAIT, lit_6041); } return true; } @@ -1122,14 +1122,13 @@ asm void daAlink_c::procCutFastReadyInit() { #pragma pop /* 8011EB8C-8011EBDC 1194CC 0050+00 1/0 0/0 0/0 .text procCutFastReady__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procCutFastReady() { - nofralloc -#include "asm/d/a/d_a_alink/procCutFastReady__9daAlink_cFv.s" +int daAlink_c::procCutFastReady() { + if (mUpperFrameCtrl[2].checkAnmEnd()) { + dComIfGp_evmng_cutEnd(field_0x3184); + } + + return 1; } -#pragma pop /* 8011EBDC-8011EC60 11951C 0084+00 1/0 0/0 0/0 .text procMasterSwordStickInit__9daAlink_cFv */ int daAlink_c::procMasterSwordStickInit() { @@ -1137,7 +1136,7 @@ int daAlink_c::procMasterSwordStickInit() { return 0; } - setSingleAnimeBase(ANM_MASTER_SWORD_STICK_INIT); + setSingleAnimeBase(ANM_DEMO_MASTER_SWORD_STICK); voiceStart(Z2SE_AL_V_MSTR_SW_STICK); mNormalSpeed = FLOAT_LABEL(lit_6108); current.angle.y = mCollisionRot.y; @@ -1149,13 +1148,13 @@ int daAlink_c::procMasterSwordStickInit() { /* 8011EC60-8011ED18 1195A0 00B8+00 1/0 0/0 0/0 .text procMasterSwordStick__9daAlink_cFv */ int daAlink_c::procMasterSwordStick() { - daPy_frameCtrl_c* fCtrl = &mFrameCtrl1[0]; + daPy_frameCtrl_c* fCtrl = &mUnderFrameCtrl[0]; if (mCommonCounter != 0) { dComIfGp_evmng_cutEnd(field_0x3184); } else if (fCtrl->checkAnmEnd()) { mCommonCounter = 1; - setSingleAnimeBaseMorf(ANM_MASTER_SWORD_STICK, lit_6041); + setSingleAnimeBaseMorf(ANM_DEMO_MASTER_SWORD_WAIT, lit_6041); dComIfGp_evmng_cutEnd(field_0x3184); } else if (fCtrl->getFrame() >= lit_14621) { field_0x2f93 = 5; @@ -1170,7 +1169,7 @@ int daAlink_c::procMasterSwordPullInit() { return 0; } - setSingleAnimeBase(ANM_MASTER_SWORD_PULL_INIT); + setSingleAnimeBase(ANM_DEMO_MASTER_SWORD_PULL); voiceStart(Z2SE_AL_V_MSTR_SW_PULLOUT); field_0x3010 = 0; @@ -1202,9 +1201,11 @@ int daAlink_c::procDungeonWarpReadyInit() { u32 id; if (checkItemSetButton(DUNGEON_EXIT) != 2) { - id = fopAcM_create(PROC_OBJ_TKS, 0, ¤t.pos, fopAcM_GetRoomNo(this), &mCollisionRot, NULL, -1); + id = fopAcM_create(PROC_OBJ_TKS, 0, ¤t.pos, fopAcM_GetRoomNo(this), &mCollisionRot, + NULL, -1); } else { - id = fopAcM_create(PROC_NPC_TKC, 2, ¤t.pos, fopAcM_GetRoomNo(this), &mCollisionRot, NULL, -1); + id = fopAcM_create(PROC_NPC_TKC, 2, ¤t.pos, fopAcM_GetRoomNo(this), &mCollisionRot, + NULL, -1); } if (id == -1) { @@ -1213,7 +1214,7 @@ int daAlink_c::procDungeonWarpReadyInit() { mDemo.i_setSpecialDemoType(); commonProcInit(PROC_DUNGEON_WARP_READY); - setSingleAnimeBase(ANM_DUNGEON_WARP_READY_INIT); + setSingleAnimeBase(ANM_TRADE_ITEM_PULL_OUT); mNormalSpeed = FLOAT_LABEL(lit_6108); current.angle.y = mCollisionRot.y; field_0x32cc = id; @@ -1290,7 +1291,8 @@ int daAlink_c::procDungeonWarp() { if (mScale.x < 0.01f) { i_onNoResetFlg0(FLG0_UNK_8000000); if (checkItemGet(DUNGEON_EXIT, 1)) { - int escape = dStage_stagInfo_GetEscapeWarp(i_dComIfGp_getStage()->getStagInfo()); + int escape = + dStage_stagInfo_GetEscapeWarp(i_dComIfGp_getStage()->getStagInfo()); dStage_changeScene(escape, 0.0f, 12, -1, mCollisionRot.y, -1); dMeter2Info_warpOutProc(); } else { @@ -1345,16 +1347,55 @@ asm void daAlink_c::procDungeonWarpSceneStart() { #pragma pop /* 8011F5D4-8011F658 119F14 0084+00 2/2 0/0 0/0 .text daAlink_searchPortal__FP10fopAc_ac_cPv */ +// matches with literals +#ifdef NONMATCHING +static fopAc_ac_c* daAlink_searchPortal(fopAc_ac_c* i_actor, void* i_data) { + if (fopAcM_GetName(i_actor) == PROC_KYTAG04) { + cXyz* pos = (cXyz*)i_data; + if (i_actor->current.pos.abs2XZ(*pos) < 1.0f) { + return i_actor; + } + } + + return NULL; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void* daAlink_searchPortal(fopAc_ac_c* param_0, void* param_1) { +static asm fopAc_ac_c* daAlink_searchPortal(fopAc_ac_c* param_0, void* param_1) { nofralloc #include "asm/d/a/d_a_alink/daAlink_searchPortal__FP10fopAc_ac_cPv.s" } #pragma pop +#endif /* 8011F658-8011F7D8 119F98 0180+00 1/1 0/0 0/0 .text checkAcceptWarp__9daAlink_cFv */ +// r3/r4 swap loading midna ptr +#ifdef NONMATCHING +bool daAlink_c::checkAcceptWarp() { + cM3dGPla plane; + + if (mLinkAcch.ChkGroundHit() && !i_checkModeFlg(MODE_PLAYER_FLY) && + !i_checkNoResetFlg0(FLG0_UNDERWATER)) { + if (!getSlidePolygon(&plane) && !checkForestOldCentury()) { + if (i_checkMidnaRide() || getMidnaActor()->checkPortalObjRide()) { + if ((checkField() || checkCastleTown()) && !checkStageName("R_SP161")) { + if ((i_checkWolf() && + (i_checkModeFlg(MODE_UNK_1000) || i_dComIfGp_checkPlayerStatus0(0, 0x10))) || + (!i_checkWolf() && + (checkEventRun() || getMidnaActor()->checkMetamorphoseEnable()) && + (i_checkModeFlg(4) || i_dComIfGp_checkPlayerStatus0(0, 0x10)))) { + return true; + } + } + } + } + } + + return false; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1363,6 +1404,7 @@ asm bool daAlink_c::checkAcceptWarp() { #include "asm/d/a/d_a_alink/checkAcceptWarp__9daAlink_cFv.s" } #pragma pop +#endif /* 8011F7D8-8011F8B8 11A118 00E0+00 2/2 0/0 0/0 .text dungeonReturnWarp__9daAlink_cFv */ void daAlink_c::dungeonReturnWarp() { @@ -1405,9 +1447,9 @@ void daAlink_c::skipPortalObjWarp() { /* 8011F9EC-8011FBC0 11A32C 01D4+00 1/1 0/0 0/0 .text checkWarpStart__9daAlink_cFv */ void daAlink_c::checkWarpStart() { if (dMeter2Info_getWarpStatus() != 0) { - if (dMeter2Info_getWarpStatus() == 3 || dComIfGp_event_compulsory(this, 0, 0xFFFF)) { - i_onNoResetFlg0(0x4000); - if (dMeter2Info_getWarpStatus() == 3) { + if (dMeter2Info_getWarpStatus() == WARP_DECIDED || dComIfGp_event_compulsory(this, 0, 0xFFFF)) { + i_onNoResetFlg0(FLG0_UNK_4000); + if (dMeter2Info_getWarpStatus() == WARP_DECIDED) { const char* portal; if (!i_checkMidnaRide()) { if (dComIfGp_TargetWarpPt_get() == 3) { @@ -1434,8 +1476,8 @@ void daAlink_c::checkWarpStart() { mDemo.i_setSpecialDemoType(); if (dMeter2Info_getWarpStatus() == 1) { stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo(); - u32 tmp = dStage_stagInfo_GetEscapeWarp(stag_info); - dStage_changeScene(tmp, FLOAT_LABEL(lit_6108), 0, -1, mCollisionRot.y, -1); + u32 exitID = dStage_stagInfo_GetEscapeWarp(stag_info); + dStage_changeScene(exitID, FLOAT_LABEL(lit_6108), 0, -1, mCollisionRot.y, -1); } else { dungeonReturnWarp(); } diff --git a/src/d/a/d_a_alink_grab.inc b/src/d/a/d_a_alink_grab.inc index f98beeb25f..8afa86684a 100644 --- a/src/d/a/d_a_alink_grab.inc +++ b/src/d/a/d_a_alink_grab.inc @@ -193,7 +193,7 @@ asm void daAlink_c::setGrabUpperAnime(f32 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkGrabRooster() { +asm BOOL daAlink_c::checkGrabRooster() { nofralloc #include "asm/d/a/d_a_alink/checkGrabRooster__9daAlink_cFv.s" } @@ -558,7 +558,7 @@ asm void daAlink_c::procInsectCatchInit() { /* 800E71D4-800E7254 0E1B14 0080+00 1/0 0/0 0/0 .text procInsectCatch__9daAlink_cFv */ bool daAlink_c::procInsectCatch() { - daPy_frameCtrl_c* tmp = &mFrameCtrl1[0]; + daPy_frameCtrl_c* tmp = &mUnderFrameCtrl[0]; if (tmp->checkAnmEnd()) { checkNextAction(0); @@ -652,7 +652,7 @@ asm s16 daAlink_c::getChainStickAngleY(s16 param_0) const { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkChainEmphasys() { +asm u8 daAlink_c::checkChainEmphasys() { nofralloc #include "asm/d/a/d_a_alink/checkChainEmphasys__9daAlink_cFv.s" } @@ -685,8 +685,8 @@ bool daAlink_c::checkChainBlockPushPull() { fopAc_ac_c* actor = field_0x2844.getActor(); if (actor != NULL) { s16 name = fopAcM_GetName(actor); - // actor is Cblock || chainSw || Cwall - if (name == 0x7E || name == 0x16F || name == 0x7F) { + if (name == PROC_Obj_ChainBlock || name == PROC_Obj_SwChain || + name == PROC_Obj_ChainWall) { return true; } } @@ -750,7 +750,7 @@ asm void daAlink_c::setWallGrabStatus(u8 param_0, u8 param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::getWallGrabStatus() { +asm int daAlink_c::getWallGrabStatus() { nofralloc #include "asm/d/a/d_a_alink/getWallGrabStatus__9daAlink_cFv.s" } diff --git a/src/d/a/d_a_alink_guard.inc b/src/d/a/d_a_alink_guard.inc index 11cf410082..13ee2abf87 100644 --- a/src/d/a/d_a_alink_guard.inc +++ b/src/d/a/d_a_alink_guard.inc @@ -23,7 +23,7 @@ asm BOOL daAlink_c::checkSpecialNpc(fopAc_ac_c* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkShieldAttackEmphasys() { +asm bool daAlink_c::checkShieldAttackEmphasys() { nofralloc #include "asm/d/a/d_a_alink/checkShieldAttackEmphasys__9daAlink_cFv.s" } diff --git a/src/d/a/d_a_alink_hook.inc b/src/d/a/d_a_alink_hook.inc index 4d2dd35e96..c2fe6d7661 100644 --- a/src/d/a/d_a_alink_hook.inc +++ b/src/d/a/d_a_alink_hook.inc @@ -271,7 +271,7 @@ bool daAlink_c::cancelHookshotMove() { if (mFastShotTime == 0 && mHookshotMode == 0) { if (checkHookshotAnime() && (mTargetedActor == NULL && !i_checkAttentionLock() || !itemButton())) { - resetUpperAnime(UPPER_NOW, -1.0f); + resetUpperAnime(UPPER_2, -1.0f); return 1; } } diff --git a/src/d/a/d_a_alink_kandelaar.inc b/src/d/a/d_a_alink_kandelaar.inc index 0167abe920..c0bf0c4263 100644 --- a/src/d/a/d_a_alink_kandelaar.inc +++ b/src/d/a/d_a_alink_kandelaar.inc @@ -120,7 +120,7 @@ asm bool daAlink_c::getKandelaarFlamePos() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkKandelaarEquipAnime() const { +asm BOOL daAlink_c::checkKandelaarEquipAnime() const { nofralloc #include "asm/d/a/d_a_alink/checkKandelaarEquipAnime__9daAlink_cCFv.s" } diff --git a/src/d/a/d_a_alink_link.inc b/src/d/a/d_a_alink_link.inc index ecbcda371c..4d4b6e1097 100644 --- a/src/d/a/d_a_alink_link.inc +++ b/src/d/a/d_a_alink_link.inc @@ -62,7 +62,7 @@ int daAlink_c::procServiceWaitInit() { /* 800C30F0-800C3224 0BDA30 0134+00 1/0 0/0 0/0 .text procServiceWait__9daAlink_cFv */ int daAlink_c::procServiceWait() { - J3DFrameCtrl* ctrl = &mFrameCtrl1[0]; + J3DFrameCtrl* ctrl = &mUnderFrameCtrl[0]; if ((!checkNextAction(0) && !checkFrontWallTypeAction()) && (checkEventRun() || checkGuardActionChange() || mCollisionRot.y != field_0x2fe6)) { ctrl->setRate(FLOAT_LABEL(lit_6108)); @@ -91,10 +91,10 @@ asm void daAlink_c::procTiredWaitInit() { /* 800C3338-800C33B8 0BDC78 0080+00 1/0 0/0 0/0 .text procTiredWait__9daAlink_cFv */ int daAlink_c::procTiredWait() { - daPy_frameCtrl_c* ctrl = &mFrameCtrl1[0]; + daPy_frameCtrl_c* ctrl = &mUnderFrameCtrl[0]; if (!checkNextAction(0)) { if (ctrl->checkAnmEnd()) { - setSingleAnimeBase(ANM_TIRED_WAIT); + setSingleAnimeBase(ANM_WAIT_TIRED); } else if (ctrl->getAttribute() == 2) { setTiredVoice(ctrl); } @@ -243,7 +243,7 @@ int daAlink_c::procWaitTurnInit() { return 0; } - setSingleAnimeBaseSpeed(ANM_WAIT_TURN, daAlinkHIO_basic_c0::m.mWaitTurnSpeed, + setSingleAnimeBaseSpeed(ANM_STEP_TURN, daAlinkHIO_basic_c0::m.mWaitTurnSpeed, daAlinkHIO_basic_c0::m.mAnmBlendFactor); if (checkEventRun()) { mNormalSpeed = FLOAT_LABEL(lit_6108); @@ -339,10 +339,10 @@ int daAlink_c::procSideStepInit(int jump_type) { } else { daAlink_ANM anm_id; if (field_0x2f98 == 2) { - anm_id = ANM_SIDE_STEP_LEFT; + anm_id = ANM_SIDE_JUMP_LEFT; current.angle.y = mCollisionRot.y + 0x4000; } else { - anm_id = ANM_SIDE_STEP_RIGHT; + anm_id = ANM_SIDE_JUMP_RIGHT; current.angle.y = mCollisionRot.y - 0x4000; } setSingleAnimeParam(anm_id, &daAlinkHIO_sideStep_c0::m.mSideJumpAnm); @@ -350,7 +350,7 @@ int daAlink_c::procSideStepInit(int jump_type) { mSpeed.y = daAlinkHIO_sideStep_c0::m.mSideJumpSpeedV; field_0x300a = 1; } - if (i_checkNoResetFlg0(UNDER_WATER_MOVEMENT)) { + if (i_checkNoResetFlg0(FLG0_UNDERWATER)) { mNormalSpeed *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityX; mSpeed.y *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityY; } @@ -412,10 +412,10 @@ int daAlink_c::procSideStepLandInit() { daAlink_ANM anm_id; u16 uvar3; if (field_0x2f98 == 2) { - anm_id = ANM_SIDE_STEP_LEFT_LAND; + anm_id = ANM_SIDE_JUMP_LEFT_LAND; uvar3 = 0x3F; } else { - anm_id = ANM_SIDE_STEP_RIGHT_LAND; + anm_id = ANM_SIDE_JUMP_RIGHT_LAND; uvar3 = 0x40; } setSingleAnimeParam(anm_id, &daAlinkHIO_sideStep_c0::m.mSideLandAnm); @@ -440,7 +440,7 @@ int daAlink_c::procSideStepLandInit() { /* 800C4278-800C4378 0BEBB8 0100+00 1/0 0/0 0/0 .text procSideStepLand__9daAlink_cFv */ int daAlink_c::procSideStepLand() { - daPy_frameCtrl_c* ctrl = &mFrameCtrl1[0]; + daPy_frameCtrl_c* ctrl = &mUnderFrameCtrl[0]; i_onEndResetFlg0(ERFLG0_UNK_8000000); if (field_0x2fcc != 0) { field_0x2fcc = 10; @@ -482,7 +482,7 @@ int daAlink_c::procSlideInit(s16 param_0) { if (cLib_distanceAngleS(param_0, mCollisionRot.y) < 0x3800 || field_0x300e != 0) { field_0x3198 = 1; - setSingleAnimeParam(ANM_FORWARD_SLIDE, &daAlinkHIO_slide_c0::m.mForwardSlideAnm); + setSingleAnimeParam(ANM_SLIDE_FORWARD, &daAlinkHIO_slide_c0::m.mForwardSlideAnm); dComIfGp_setPlayerStatus1(0, 0x100); onModeFlg(MODE_UNK_8000); onModeFlg(MODE_UNK_2000000); @@ -490,11 +490,11 @@ int daAlink_c::procSlideInit(s16 param_0) { mNormalSpeed = FLOAT_LABEL(lit_6108); field_0x2f9d = 4; setUpperAnimeBaseMorf(0xCE, lit_6041); - i_onNoResetFlg1(0x10000000); + i_onNoResetFlg1(FLG1_UNK_10000000); setFootEffectProcType(0); } else { field_0x3198 = 0; - setSingleAnimeParam(ANM_BACKWARD_SLIDE, &daAlinkHIO_slide_c0::m.mBackwardSlideAnm); + setSingleAnimeParam(ANM_SLIDE_BACKWARD, &daAlinkHIO_slide_c0::m.mBackwardSlideAnm); dComIfGp_setPlayerStatus1(0, 0x200); field_0x2f9d = 0x60; setFootEffectProcType(1); @@ -525,13 +525,13 @@ int daAlink_c::procSlideLandInit(int param_0) { commonProcInit(PROC_SLIDE_LAND); if (param_0 != 0) { - setSingleAnimeParam(ANM_BACKWARD_SLIDE_LAND, &daAlinkHIO_slide_c0::m.mForwardLandAnm); + setSingleAnimeParam(ANM_SLIDE_FORWARD_END, &daAlinkHIO_slide_c0::m.mForwardLandAnm); field_0x3478 = daAlinkHIO_slide_c0::m.mForwardLandAnm.field_0x10; field_0x3198 = 1; field_0x2f99 = 4; field_0x3588 = l_waitBaseAnime; } else { - setSingleAnimeParam(ANM_FORWARD_SLIDE_LAND, &daAlinkHIO_slide_c0::m.mBackwardLandAnm); + setSingleAnimeParam(ANM_SLIDE_BACKWARD_END, &daAlinkHIO_slide_c0::m.mBackwardLandAnm); field_0x3478 = daAlinkHIO_slide_c0::m.mBackwardLandAnm.field_0x10; field_0x3198 = 0; } @@ -542,7 +542,7 @@ int daAlink_c::procSlideLandInit(int param_0) { /* 800C4894-800C494C 0BF1D4 00B8+00 1/0 0/0 0/0 .text procSlideLand__9daAlink_cFv */ int daAlink_c::procSlideLand() { - daPy_frameCtrl_c* ctrl = &mFrameCtrl1[0]; + daPy_frameCtrl_c* ctrl = &mUnderFrameCtrl[0]; cLib_chaseF(&mNormalSpeed, FLOAT_LABEL(lit_6108), lit_7450); if (field_0x3198 != 0) { @@ -592,7 +592,7 @@ int daAlink_c::procFrontRollInit() { mNormalSpeed = daAlinkHIO_frontRoll_c0::m.mMinSpeed; } - if (!i_checkNoResetFlg0(UNDER_WATER_MOVEMENT)) { + if (!i_checkNoResetFlg0(FLG0_UNDERWATER)) { if (checkHeavyStateOn(1, 1)) { mNormalSpeed *= mHeavySpeedMultiplier; } @@ -1025,7 +1025,7 @@ int daAlink_c::procCoMetamorphoseInit() { if (i_checkWolf()) { // Transform Wolf -> Human - setSingleAnimeWolfBase(ANM_TRANFORM_HUMAN); + setSingleAnimeWolfBase(WANM_TRANSFORM_TO_HUMAN); field_0x3588 = l_wolfBaseAnime; field_0x347c = 0.5f; field_0x3480 = daAlinkHIO_basic_c0::m.mWolfLinkTransformSpeed; @@ -1041,7 +1041,7 @@ int daAlink_c::procCoMetamorphoseInit() { if (mDemo.getDemoMode() == 0x39 && mDemo.getParam1() == 1) { voiceStart(Z2SE_AL_V_TRANSFORM); } - setSingleAnimeBase(ANM_TRANSFORM_WOLF); + setSingleAnimeBase(ANM_TRANSFORM_TO_WOLF); setMetamorphoseModel(1); field_0x3588 = l_waitBaseAnime; field_0x3480 = daAlinkHIO_basic_c0::m.mLinkWolfTransformSpeed; @@ -1235,8 +1235,8 @@ COMPILER_STRIP_GATE(0x8039207C, &lit_74748); /* 80392088-80392094 01E6E8 000C+00 0/1 0/0 0/0 .rodata localBoomCatchPos$74910 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const localBoomCatchPos[12] = { - 0x41, 0x95, 0x99, 0x9A, 0x43, 0x12, 0x4C, 0xCD, 0x42, 0x8A, 0x66, 0x66, +SECTION_RODATA static Vec const localBoomCatchPos = { + 18.7f, 146.3f, 69.2f, }; COMPILER_STRIP_GATE(0x80392088, &localBoomCatchPos); #pragma pop @@ -1258,14 +1258,940 @@ SECTION_DEAD static char const* const pad_8039263C = "\0\0\0"; #pragma pop /* 800C8700-800CAFA8 0C3040 28A8+00 1/1 0/0 0/0 .text execute__9daAlink_cFv */ +#ifdef NONMATCHING +int daAlink_c::execute() { + loadModelDVD(); + + if (checkEndResetFlg0(ERFLG0_UNK_2000000) && getMidnaActor() != NULL) { + getMidnaActor()->onNoServiceWait(); + } + + if (field_0x30fe != 0) { + *field_0x814.GetCCMoveP() = field_0x372c * (1.0f / (f32)field_0x30fe); + } + + if (checkHorseRide() && checkBoarSingleBattle() && dComIfGp_getHorseActor() != NULL) { + mCollisionRot.y = dComIfGp_getHorseActor()->mCollisionRot.y; + current.angle.y = mCollisionRot.y; + } else if (checkMagneBootsOn()) { + mCollisionRot.y = field_0x3118; + } else if (checkModeFlg(MODE_VINE_CLIMB) || checkCargoCarry()) { + mCollisionRot.y = field_0x3108; + } + + if (checkNoResetFlg2(FLG2_UNK_1) && mEquipItem != KANTERA && checkItemSetButton(KANTERA) == 2) { + offKandelaarModel(); + } + + mSwordChangeWaitTimer = 0; + setSelectEquipItem(0); + + if (dComIfGp_event_runCheck()) { + field_0x3184 = dComIfGp_evmng_getMyStaffId("Alink", this, 0); + + if (mEvtInfo.checkCommandDoor() && !dComIfGp_event_chkEventFlag(4) && mEquipItem == 0x102) { + deleteEquipItem(FALSE, FALSE); + } + } + + if (mSwordUpTimer != 0) { + mSwordUpTimer--; + } + + field_0x317c = dComIfGp_getPlayerCameraID(0); + field_0x3510 = current.pos; + + if (checkMagneBootsOn()) { + if (checkNoResetFlg0(FLG0_UNK_2000) && dComIfG_Bgsp().ChkPolySafe(mMagneLineChk) && dComIfG_Bgsp().ChkMoveBG(mMagneLineChk)) { + s16 shape_angle_y = mCollisionRot.y; + s16 angle_y = current.angle.y; + f32 pos_y = current.pos.y; + + dComIfG_Bgsp().MoveBgCrrPos(mMagneLineChk, true, ¤t.pos, ¤t.angle, &mCollisionRot, false, false); + + if (field_0x3114 > 0x6000 || field_0x3114 == -0x8000) { + mCollisionRot.y = shape_angle_y - (s16)(mCollisionRot.y - shape_angle_y); + current.angle.y = angle_y - (s16)(current.angle.y - angle_y); + } + + dComIfG_Bgsp().MoveBgCrrPos(mMagneLineChk, true, &next.pos, NULL, NULL, false, false); + + if (getMoveBGActorName(mMagneLineChk, 0) == PROC_Obj_MagneArm) { + field_0x34c8.y += current.pos.y - pos_y; + } else { + field_0x34c8.y += (current.pos.y - pos_y) * 0.1f; + } + } + } else if (mProcID != PROC_HOOKSHOT_FLY && !checkModeFlg(MODE_VINE_CLIMB | MODE_UNK_800) && mProcID != PROC_TOOL_DEMO && + mLinkAcch.GetGroundH() != -1000000000.0f && + dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd) && dComIfG_Bgsp().ChkMoveBG(mLinkAcch.m_gnd)) { + bool uvar23; + if (mProcID == PROC_SPINNER_READY) { + uvar23 = true; + } else { + uvar23 = mLinkAcch.ChkGroundHit(); + } + f32 pos_y = current.pos.y; + + dComIfG_Bgsp().MoveBgCrrPos(mLinkAcch.m_gnd, uvar23, ¤t.pos, ¤t.angle, &mCollisionRot, false, false); + dComIfG_Bgsp().MoveBgCrrPos(mLinkAcch.m_gnd, uvar23, &next.pos, NULL, NULL, false, false); + field_0x34c8.y += (current.pos.y - pos_y) * 0.1f; + } + + field_0x3798 = next.pos; + field_0x2fe6 = mCollisionRot.y; + field_0x307c = mStickAngle; + field_0x33a4 = field_0x33ac; + + if (checkResetFlg0(RFLG0_UNK_8000000) && !checkCutDashAnime()) { + mCutType = 0; + } + + mResetFlg0 = 0; + mResetFlg1 = 0; + + daAlink_matAnm_c::decMorfFrame(); + field_0x2180[0]->offSetFlg(); + field_0x2180[1]->offSetFlg(); + + field_0x2f99 = 0; + field_0x2f9d = 0; + field_0x2fc1 = 6; + + if (!checkSwordGet() && mEquipItem == 0x103) { + deleteEquipItem(FALSE, FALSE); + } + + field_0x2fae = 0; + + setDoStatus(0); + setRStatus(0); + set3DStatus(0, 0); + setMidnaTalkStatus(0); + + if (checkWolf()) { + setBStatus(ACTION_STR_ATTACK); + setWolfDigStatus(ACTION_STR_NONE); + + // Have wolf sense ability + if (dComIfGs_isEventBit(0x4308)) { + setWolfSenceStatus(ACTION_STR_SENSE); + } else { + setWolfSenceStatus(ACTION_STR_NONE); + } + } else { + if (checkCanoeRide() && checkStageName("F_SP127")) { + setBStatus(ACTION_STR_NONE5); + } else if (checkSwordGet()) { + setBStatus(ACTION_STR_NONE3); + } else { + setBStatus(ACTION_STR_NONE); + } + } + + field_0x2f91 = 0; + + if (mProcID == PROC_BOTTLE_SWING && mEvtInfo.checkCommandCatch()) { + mDemo.setSpecialDemoType(); + } + + field_0x280c.setActor(); + mRideAcKeep.setActor(); + + if (checkNoResetFlg2(FLG2_UNK_58)) { + field_0x281c.setActor(); + if (field_0x281c.getActor() == NULL) { + offNoResetFlg2(FLG2_UNK_58); + } + } else { + field_0x281c.clearData(); + } + + field_0x2844.setActor(); + mThrowBoomerangAcKeep.setActor(); + mCopyRodAcKeep.setActor(); + + if (mCopyRodAcKeep.getActor() != NULL) { + static_cast(mCopyRodAcKeep.getActor())->setControllActorData(); + } + + mGrabItemAcKeep.setActor(); + field_0x284c.setActor(); + field_0x285c.setActor(); + + if (checkFishingRodAndLureItem() && mItemAcKeep.getActor() == NULL) { + fopAc_ac_c* item_actor = fopAcM_SearchByID(mItemAcKeep.getID()); + if (item_actor != NULL) { + mItemAcKeep.setData(item_actor); + } + } else { + mItemAcKeep.setActor(); + } + + if (checkWolf()) { + checkWolfLockData(); + } + + setAtnList(); + setDemoData(); + setStickData(); + + if (mFastShotTime < 0) { + mFastShotTime = 0; + } + + checkOxygenTimer(); + + if (field_0x2fce != 0) { + field_0x2fce--; + } + + if (field_0x2fcd != 0) { + field_0x2fcd--; + } + + if (field_0x3000 != 0) { + field_0x3000--; + } + + if (field_0x30fc != 0) { + field_0x30fc--; + } + + if (field_0x2fb4 != 0) { + field_0x2fb4--; + } + + if (field_0x30a4 != 0) { + field_0x30a4--; + } + + if (field_0x30a6 != 0) { + field_0x30a6--; + } + + if (field_0x30ec != 0) { + field_0x30ec--; + } + + if (mSwordFlourishTimer != 0) { + mSwordFlourishTimer--; + } + + if (field_0x3100 != 0) { + field_0x3100--; + } + + if (field_0x2fc4 != 0) { + field_0x2fc4--; + } + + if (field_0x30d2 != 0) { + field_0x30d2--; + } + + if (field_0x30d0 != 0) { + field_0x30d0--; + } else { + offNoResetFlg1(FLG1_UNK_400000); + } + + if (field_0x2fd2 != 0) { + field_0x2fd2--; + } + + if (field_0x2fd3 != 0 && mProcID != PROC_BOTTLE_DRINK && mProcID != PROC_CANOE_BOTTLE_DRINK && mProcID != PROC_HORSE_BOTTLE_DRINK) { + field_0x2fd3--; + } + + if (field_0x2fd4 != 0 && mProcID != PROC_GUARD_SLIP) { + field_0x2fd4--; + + if (field_0x2fd4 == 0) { + field_0x2fd5 = 0; + } + } + + if (checkWolfEyeUp()) { + fopAc_ac_c* partner = (fopAc_ac_c*)fopAcM_getTalkEventPartner(this); + + const char* event_name; + if (checkEventRun()) { + event_name = dComIfGp_getEventManager().getRunEventName(); + } else { + event_name = NULL; + } + + if (event_name != NULL) { + if (!strcmp(event_name, "kiko_yami") || !strcmp(event_name, "fire_insect") || + (checkStageName("F_SP108") && (!strcmp(event_name, "MapToolCamera19") || !strcmp(event_name, "yami_mog"))) || + (checkStageName("R_SP109") && (!strcmp(event_name, "MapToolCamera1") || !strcmp(event_name, "MapToolCamera2") || !strcmp(event_name, "MapToolCamera19") || !strcmp(event_name, "fire_insect"))) || + (checkStageName("F_SP115") && !strcmp(event_name, "MapToolCamera23"))) { + mWolfEyeUp = daAlinkHIO_wolf_c0::m.mSensesLingerTime + 1; + } + } + + if (checkEndResetFlg1(ERFLG1_UNK_200) || (checkDungeon() && mEvtInfo.checkCommandDoor()) || + mProcID == PROC_WOLF_GET_SMELL || mProcID == PROC_WOLF_DIG || mProcID == PROC_WOLF_DIG_THROUGH || + checkNoResetFlg0(FLG0_UNK_4000) || dComIfGp_checkPlayerStatus1(0, 0x1000000) || + (checkEventRun() && partner != NULL && (partner->mAttentionInfo.mFlags & 0x400000)) || + !strcmp(dComIfGp_getEventManager().getRunEventName(), l_defaultGetEventName)) { + mWolfEyeUp = daAlinkHIO_wolf_c0::m.mSensesLingerTime; + } else if (mTargetedActor != NULL || dComIfGp_checkPlayerStatus0(0, 0x2000)) { + mWolfEyeUp = daAlinkHIO_wolf_c0::m.mSensesLingerTime - 1; + } else if (!dComIfGp_getEvent().isOrderOK() && mProcID != PROC_GET_ITEM && + mWolfEyeUp <= daAlinkHIO_wolf_c0::m.mSensesLingerTime) { + offWolfEyeUp(); + } else { + mWolfEyeUp = 1; + } + } + + if (checkEndResetFlg0(ERFLG0_UNK_1000000) && mEquipItem == 0x103) { + mSwordFlourishTimer = daAlinkHIO_cut_c0::m.mFlourishTime; + } + + if ((checkWolf() && field_0x2fbc == 11 && checkWaterPolygonUnder()) || field_0x2fbb == 11) { + onNoResetFlg0(FLG0_UNK_40000000); + } + + fopAc_ac_c* item_actor = mGrabItemAcKeep.getActor(); + if (item_actor != NULL && (!fopAcM_checkCarryNow(item_actor) || (checkNoResetFlg0(FLG0_UNDERWATER) && (checkGrabRooster() || fopAcM_GetName(item_actor) == PROC_E_NEST || checkGrabCarryActor())))) { + freeGrabItem(); + } + + allAnimePlay(); + + if (mDamageTimer != 0) { + damageTimerCount(); + } + + if (checkEquipHeavyBoots()) { + int temp_r3_22 = checkItemSetButton(HVY_BOOTS); + if (temp_r3_22 == 2 || checkNotHeavyBootsStage()) { + if (!dComIfGp_checkPlayerStatus1(0, 0x10000) || !checkHookshotRoofLv7Boss()) { + setHeavyBoots(0); + } + } else { + dMeter2Info_onDirectUseItem(temp_r3_22); + } + } + + checkWarpStart(); + + if (!checkSpecialDemoMode() && mClothesChangeWaitTimer == 0) { + if (!checkDemoAction() && !checkDeadAction(0) && !checkNoResetFlg0(FLG0_UNK_100000) && !checkAutoJumpAction()) { + checkSwimAction(0); + } + + if (checkDamageAction() && mProcID == PROC_LARGE_DAMAGE && checkMagneBootsOn()) { + cancelMagneBootsOn(); + } + + checkBoomerangCatchAction(); + } + + offNoResetFlg1(FLG1_UNK_20); + + if (checkWolf()) { + checkWolfComboCnt(); + + if (checkWolfEnemyThrowAnime()) { + checkWolfEnemyThrowAction(); + } + } else { + checkItemButtonChange(); + setItemAction(); + checkComboCnt(); + setShieldGuard(); + + if (checkCutFastReady()) { + if (checkNoUpperAnime()) { + setUpperAnime(0x255, UPPER_2, daAlinkHIO_cut_c0::m.mEquipAnm.mRate, 12.0f, daAlinkHIO_cut_c0::m.mEquipAnm.mEndF, daAlinkHIO_cut_c0::m.mEquipAnm.mInterpolation); + onNoResetFlg0(FLG0_UNK_1000000); + } + } else if (checkNoResetFlg0(FLG0_UNK_1000000)) { + resetUpperAnime(UPPER_2, 5.0f); + } + + if (mEquipItem == KANTERA && checkNoUpperAnime() && !checkKandelaarEquipAnime() && (checkModeFlg(MODE_UNK_1000) || mProcID == PROC_CROUCH)) { + if (checkReinRide()) { + setUpperAnimeBase(0x264); + } else { + setUpperAnimeBase(0x268); + } + + mNowAnmPackUpper[2].setRatio(0.0f); + } + } + + checkLightSwordMtrl(); + (this->*mpProcFunc)(); + + if (!checkEndResetFlg0(ERFLG0_UNK_2000) && checkWindDashAnime()) { + resetUpperAnime(UPPER_2, 3.0f); + } + + playFaceTextureAnime(); + + cXyz old_pos = current.pos; + posMove(); + + if (checkWolf()) { + wolfBgCheck(); + } else if (checkModeFlg(MODE_SWIMMING)) { + swimBgCheck(120.0f); + } + + cXyz pos = current.pos; + field_0x3528 = mSpeed; + + mLinkAcch.ClrGroundHit(); + mLinkAcch.CrrPos(dComIfG_Bgsp()); + + if (checkMagneBootsOn()) { + current.pos = pos; + } + + if (!mLinkAcch.ChkGroundHit() && !mLinkAcch.ChkRoofHit() && getZoraSwim()) { + current.pos.y = pos.y; + } + + iceSlipBgCheck(); + setWaterY(); + autoGroundHit(); + + if (checkNoResetFlg0(FLG0_UNDERWATER) || (checkPossibleWaterInMode() && !checkNoResetFlg0(FLG0_UNK_100))) { + f32 var_f31; + if (mProcID == PROC_HOOKSHOT_FLY) { + var_f31 = current.pos.y - (field_0x598 * 0.5f); + } else if (dComIfGp_checkPlayerStatus1(0, 0x2000000)) { + var_f31 = (-65.0f + current.pos.y) - daAlinkHIO_swim_c0::m.mInitHeight; + } else { + var_f31 = current.pos.y; + } + + if (!checkNoResetFlg0(FLG0_UNK_80) || mWaterY - var_f31 <= daAlinkHIO_swim_c0::m.mInitHeight) { + swimOutAfter(0); + } + } + + if (mProcID == PROC_TOOL_DEMO || mProcID == PROC_GANON_FINISH) { + J3DTransformInfo ti; + field_0x1f20->getAnm(0)->getTransform(0, &ti); + mDoMtx_stack_c::transS(old_pos); + mDoMtx_stack_c::YrotM(mCollisionRot.y); + + Vec tmp; + mDoMtx_stack_c::multVec(&tmp, ¤t.pos); + mSpeed.y = 0.0f; + + if (field_0x3198 != 0) { + if (mLinkAcch.GetGroundH() != -1000000000.0f) { + current.pos.y = mLinkAcch.GetGroundH(); + } + } + } else if (mProcID == PROC_HOOKSHOT_FLY || mProcID == PROC_MAGNE_BOOTS_FLY || (checkModeFlg(MODE_ROPE_WALK | MODE_VINE_CLIMB | MODE_UNK_800 | MODE_RIDING) && mProcID != PROC_HORSE_GETOFF && mProcID != PROC_WOLF_CHAIN_READY && !checkBoardRide())) { + current.pos = pos; + } else if (checkModeFlg(MODE_UNK_4000)) { + if (mProcID == PROC_DOOR_OPEN || mProcID == PROC_HANG_LEVER_DOWN) { + current.pos.y = old_pos.y; + mSpeed.y = 0.0f; + } + current.pos.x = pos.x; + current.pos.z = pos.z; + } else if (checkFlyAtnWait() || mProcID == PROC_WARP) { + current.pos.y = old_pos.y; + mSpeed.y = 0.0f; + } + + field_0x3178 = field_0x3174; + + if (mLinkAcch.GetGroundH() != -1000000000.0f) { + setRoomInfo(); + + if (!checkModeFlg(MODE_PLAYER_FLY) && !checkMagneBootsOn() && mProcID != PROC_TOOL_DEMO && mProcID != PROC_GANON_FINISH && mProcID != PROC_DUNGEON_WARP && (field_0x2f8c == 1 || field_0x2f8c == 3)) { + setStepsOffset(); + } else { + field_0x2b9c = 0.0f; + if (!checkModeFlg(MODE_SWIMMING)) { + field_0x2b98 = 0.0f; + } + } + + if (checkModeFlg(MODE_UNK_2000000)) { + setShapeAngleOnGround(); + } + + if (!checkRestartRoom() && !checkDeadHP()) { + checkSceneChange(dComIfG_Bgsp().GetExitId(mLinkAcch.m_gnd)); + } + + if (mLinkAcch.ChkGroundHit()) { + if (dComIfG_Bgsp().ChkMoveBG(mLinkAcch.m_gnd)) { + dComIfG_Bgsp().MoveBgTransPos(mLinkAcch.m_gnd, true, &field_0x34ec, NULL, NULL); + } + + if (checkNoResetFlg0(FLG0_UNK_80) && !checkNoResetFlg0(FLG0_UNDERWATER) && mWaterY >= mLinkAcch.GetGroundH()) { + mPolySound = dKy_pol_sound_get(&mLinkAcch.m_wtr); + } else if (checkEndResetFlg0(ERFLG0_UNK_200000)) { + mPolySound = 11; + } else { + mPolySound = dKy_pol_sound_get(&mLinkAcch.m_gnd); + } + + field_0x2ff0 = getGroundAngle(&mLinkAcch.m_gnd, mCollisionRot.y); + } else { + if (mProcID == PROC_TOOL_DEMO || mProcID == PROC_GANON_FINISH) { + if (checkNoResetFlg0(FLG0_UNK_80) && mWaterY >= mLinkAcch.GetGroundH()) { + mPolySound = dKy_pol_sound_get(&mLinkAcch.m_wtr); + } else if (checkEndResetFlg0(ERFLG0_UNK_200000)) { + mPolySound = 11; + } else { + mPolySound = dKy_pol_sound_get(&mLinkAcch.m_gnd); + } + } else if (checkModeFlg(MODE_SWIMMING) && checkNoResetFlg0(FLG0_UNK_80)) { + mPolySound = dKy_pol_sound_get(&mLinkAcch.m_wtr); + } else { + mPolySound = 0; + } + + field_0x2ff0 = 0; + } + mDoAud_setLinkGroupInfo(dComIfG_Bgsp().GetGrpSoundId(mLinkAcch.m_gnd)); + } else { + field_0x3174 = -1; + field_0x2ff0 = 0; + field_0x2fbb = 16; + field_0x2fbd = 0; + field_0x2fa8 = 0; + + if (checkModeFlg(MODE_SWIMMING) && dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_wtr)) { + mPolySound = dKy_pol_sound_get(&mLinkAcch.m_wtr); + } else { + mPolySound = 0; + } + + if (!checkRestartRoom() && !checkDeadHP()) { + checkSceneChange(0x3F); + } + } + + if (checkMagneBootsOn()) { + field_0x2fbd = 0; + field_0x2f5c.mPosition = current.pos; + field_0x2f5c.mPow = 100.0f; + + if (checkNoResetFlg0(FLG0_UNK_2000)) { + mPolySound = dKy_pol_sound_get(&mMagneLineChk); + field_0x2ff0 = 0; + field_0x3174 = dComIfG_Bgsp().GetGroundCode(mMagneLineChk); + field_0x2fbb = dComIfG_Bgsp().GetPolyAtt0(mMagneLineChk); + field_0x2fa8 = dComIfG_Bgsp().GetSpecialCode(mMagneLineChk); + setMagneBootsMtx(&mMagneLineChk, 0); + } else { + mPolySound = 0; + field_0x2ff0 = 0; + field_0x3174 = -1; + field_0x2fbb = 16; + field_0x2fa8 = 0; + } + } else { + field_0x2f5c.mPow = 0.0f; + if (mProcID != PROC_MAGNE_BOOTS_FLY) { + mMagneBootsTopVec = cXyz::BaseY; + } + } + + if (dComIfGp_evmng_startCheck(l_peepEventName)) { + if (field_0x2ff2 > 0) { + field_0x2ff2--; + } else if (dComIfGp_evmng_startCheck(l_peepEventName)) { + startPeepChange(); + } + } + + if (checkModeFlg(MODE_VINE_CLIMB) && mCommonCounter != 0 && dComIfG_Bgsp().ChkPolySafe(mPolyInfo1)) { + mZ2Link.framework(dKy_pol_sound_get(&mPolyInfo1), mVoiceReverbIntensity); + } else { + mZ2Link.framework(mPolySound, mVoiceReverbIntensity); + } + + if (field_0x2d7c != NULL) { + mZ2Link.updateAnime(field_0x2d7c->getFrame(), field_0x2d7c->getRate()); + } + + if (mProcID != PROC_DAMAGE && mProcID != PROC_SWIM_DAMAGE && mProcID != PROC_HORSE_DAMAGE) { + setMoveSlantAngle(); + + if (checkReinRide() && checkUpperGuardAnime()) { + setBodyAngleRideReadyAnime(); + } else if (!checkSmallUpperGuardAnime() && !checkWolf()) { + if (!checkModeFlg(MODE_UNK_20000000)) { + if (checkUpperGuardAnime()) { + setBodyAngleXReadyAnime(0); + } else if (!checkUpperReadyThrowAnime()) { + cLib_addCalcAngleS(&mLookAngleY, 0, 4, 0x0C00, 0x0180); + } + } + + if (!checkModeFlg(MODE_UNK_40000000)) { + cLib_addCalcAngleS(&field_0x59e, 0, 4, 0x0C00, 0x0180); + } + } + } + + setMatrix(); + setNeckAngle(); + + if (field_0x2fcc != 0) { + field_0x2fcc--; + } + + if (!checkWolf()) { + setHatAngle(); + + if (field_0x2fb0 != 0) { + field_0x2fb0--; + } + + footBgCheck(); + handBgCheck(); + + field_0x30c8 = field_0x59e >> 1; + modelCalc(mpLinkModel); + + if (field_0x2fcb != 0) { + if (checkWoodShieldEquip() && mWaterY < mShieldModel->getBaseTRMtx()[1][3]) { + field_0x2fcb--; + + if (field_0x2fcb == 0) { + dMeter2Info_setShield(NO_ITEM, true); + stickArrowIncrement(1); + setWoodShieldBurnOutEffect(); + + // "Your shield burned up..." + dMeter2Info_setFloatingMessage(2047, 90, false); + + stage_stag_info_class* pstag = dComIfGp_getStage()->getStagInfo(); + if (dStage_stagInfo_GetSaveTbl(pstag) == 0x11 && !dComIfGs_isItemFirstBit(HYLIA_SHIELD)) { + fopAcM_onSwitch(this, 0x6F); + } + seStartOnlyReverb(Z2SE_AL_WOOD_SHIELD_BURN); + } + } else { + clearWoodShieldBurnEffect(); + } + } + + if (checkShieldGet() && !checkWoodShieldEquip()) { + stickArrowIncrement(1); + } + setItemMatrix(0); + } else { + daMidna_c* pmidna = getMidnaActor(); + + if (mClothesChangeWaitTimer == 0) { + if ((pmidna->checkMidnaTired() || pmidna->checkForceTiredColor()) && !pmidna->checkForceNormalColor()) { + field_0x79c->getModelData()->entryTevRegAnimator(field_0x7ac); + mpWlMidnaHatModel->getModelData()->entryTevRegAnimator(field_0x7b0); + field_0x7a4->getModelData()->entryTevRegAnimator(field_0x7b4); + mpWlMidnaHairModel->getModelData()->entryTevRegAnimator(field_0x7b8); + } else { + field_0x79c->getModelData()->removeTevRegAnimator(field_0x7ac); + mpWlMidnaHatModel->getModelData()->removeTevRegAnimator(field_0x7b0); + field_0x7a4->getModelData()->removeTevRegAnimator(field_0x7b4); + mpWlMidnaHairModel->getModelData()->removeTevRegAnimator(field_0x7b8); + } + } + + wolfFootBgCheck(); + setWolfTailAngle(); + modelCalc(mpLinkModel); + checkWolfUseAbility(); + + if (checkWolfEyeUp() != 0) { + mWolfEyeUpTimer++; + if (mWolfEyeUpTimer > 30) { + mWolfEyeUpTimer = 30; + } + } else if (mWolfEyeUpTimer != 0) { + mWolfEyeUpTimer--; + } + + setWolfItemMatrix(); + } + + if (checkFmChainGrabAnime()) { + mNowAnmPackUpper[2].setRatio(1.0f); + } + + setBodyPartPos(); + + if (!checkWolf() && checkEndResetFlg0(ERFLG0_UNK_800000)) { + setHatAngle(); + modelCalc(mpLinkModel); + } + + setHangWaterY(); + setCollision(); + setAttentionPos(); + setLight(); + setEffect(); + + if (mClothesChangeWaitTimer != 0) { + mDoMtx_stack_c::copy(mpLinkModel->getBaseTRMtx()); + + if (!checkWolf()) { + mDoMtx_stack_c::transM(0.0f, 0.0f, 30.0f); + } + + mpWlChangeModel->setBaseTRMtx(mDoMtx_stack_c::get()); + mpWlChangeModel->calc(); + } + + mSight.mLockCursor.update(); + setGrabItemPos(); + + checkRoofRestart(); + mExitID = 0x3F; + mpScnChg = NULL; + + cMtx_multVec(mpLinkModel->getAnmMtx(0), &localBoomCatchPos, &field_0x3534); + + if (checkResetFlg0(RFLG0_UNK_10)) { + mZ2Link.setResumeAttack(true); + } else { + mZ2Link.setResumeAttack(false); + } + + if (!checkEventRun() && checkNoResetFlg0(FLG0_UNK_80) && (mWaterY > current.pos.y + 40.0f || checkModeFlg(MODE_SWIMMING)) && getMoveBGActorName(mLinkAcch.m_wtr, 1) == PROC_Obj_Onsen) { + if (mHotspringRecoverTimer != 0) { + mHotspringRecoverTimer--; + } else { + mHotspringRecoverTimer = daAlinkHIO_basic_c0::m.mHotspringRecoverTime; + dComIfGp_setItemLifeCount(1.0f, 1); + } + } else { + mHotspringRecoverTimer = daAlinkHIO_basic_c0::m.mHotspringRecoverTime; + } + + if ((checkAttentionLock() || !checkUpperReadyThrowAnime()) && mProcID != PROC_HOOKSHOT_WALL_SHOOT && mProcID != PROC_HOOKSHOT_ROOF_SHOOT) { + mFastShotTime = 0; + } + + if (checkDeadHP()) { + mEvtInfo.offCondition(2); + } else if (!checkMagneBootsOn()) { + f32 var_f31_2; + if (mLinkAcch.ChkGroundHit()) { + cM3dGPla plane; + dComIfG_Bgsp().GetTriPla(mLinkAcch.m_gnd, &plane); + var_f31_2 = plane.mNormal.y; + } else { + var_f31_2 = -1.0f; + } + + if (cBgW_CheckBGround(var_f31_2) && !checkModeFlg(MODE_PLAYER_FLY)) { + mEvtInfo.onCondition(0x5D); + } else if (checkModeFlg(MODE_SWIMMING) || mProcID == PROC_WOLF_ROPE_MOVE || + ((checkReinRide() || checkCanoeRide() || checkSpinnerRide()) && + !checkNoResetFlg3(FLG3_UNK_80000) && !checkModeFlg(MODE_JUMP))) { + mEvtInfo.onCondition(1); + if (checkReinRide() || checkCanoeRide()) { + mEvtInfo.onCondition(8); + } + } + } else if (checkMagneBootsOn() && cBgW_CheckBGround(mMagneBootsTopVec.y)) { + mEvtInfo.onCondition(1); + } + + if (checkEndResetFlg1(ERFLG1_UNK_40000) && checkMidnaRide() && checkWolf()) { + getMidnaActor()->onForcePanic(); + } + + field_0x30fe = 0; + field_0x372c = cXyz::Zero; + field_0x2fb8 = 0; + + if (checkMagicArmorWearAbility() && mClothesChangeWaitTimer == 0) { + if (checkMagicArmorNoDamage() && !checkEventRun()) { + if (field_0x2fc3 == 0) { + field_0x2fc3 = 10; + dComIfGp_setItemRupeeCount(-1); + } else { + field_0x2fc3--; + } + } + + if (dComIfGs_getRupee() == 0 && field_0x2fd7 != 0) { + setMagicArmorBrk(0); + seStartOnlyReverb(Z2SE_AL_M_ARMER_TURNOFF); + mZ2Link.setLinkState(5); + } else if (dComIfGs_getRupee() == 0 && field_0x2fd7 == 0) { + setMagicArmorBrk(1); + seStartOnlyReverb(Z2SE_AL_M_ARMER_RECOVER); + mZ2Link.setLinkState(4); + } + } + + if (!checkWolf()) { + for (int i = 0; i < 2; i++) { + u8 tmp = (i + 1) & 1; + if (dComIfGp_getSelectItem(i) == EMPTY_BOTTLE && (field_0x2fae & (1 << i)) && dComIfGp_getSelectItem(tmp) == EMPTY_BOTTLE) { + field_0x2fae |= (1 << tmp); + } + } + } + + for (int i = 0; i < 2; i++) { + if (!(field_0x2fae & (1 << i)) && !(field_0x2faf & (1 << i))) { + dMeter2Info_offUseButton(4 << i); + } + } + + if (!(field_0x2fae & 0x40) && !(field_0x2faf & 0x40)) { + dMeter2Info_offUseButton(0x40); + } + + if (!(field_0x2fae & 0x8) && !(field_0x2faf & 0x8)) { + dMeter2Info_offUseButton(2); + if (getSumouMode()) { + dMeter2Info_offUseButton(1); + } + } + + field_0x2faf = field_0x2fae; + + for (int i = 0; i < 4; i++) { + cXyz tmp(current.pos.x + 500.0f, current.pos.y + 500.0f, current.pos.z + 500.0f); + if (i != field_0x2fa3 - 1) { + field_0x354c[i] = tmp; + } + } + + if (checkEventRun()) { + if (mProcID != PROC_GRASS_WHISTLE_WAIT) { + setDoStatus(0); + } + setRStatus(0); + } else if (dComIfGp_getDoStatus() == 0x86 || dComIfGp_getDoStatus() == 0x8B) { + setDoStatus(3); + } else if (dComIfGp_getDoStatus() == 0x89) { + setDoStatus(8); + } else if (dComIfGp_getDoStatus() == 0x93) { + setDoStatusEmphasys(0x19); + } else if (dComIfGp_getDoStatus() == 0x8E) { + setDoStatusEmphasys(0x15); + } else { + if (dComIfGp_getDoStatus() == 0x8C) { + setDoStatus(0); + } else if (checkStageName("F_SP127") && checkCanoeRide() && dComIfGp_getDoStatus() == 4) { + setDoStatus(0); + } else if (dComIfGp_getDoStatus() == 0x90) { + setDoStatus(0); + } else if (dComIfGp_getDoStatus() == 0x98) { + setDoStatusEmphasys(0x39); + } else if (dComIfGp_getDoStatus() == 0x99) { + setDoStatusEmphasys(0x15); + } else if (dComIfGp_getDoStatus() == 0x91) { + if (checkWolf() || (field_0x27f4 != NULL && (field_0x27f4->mSpeedF > 0.1f || (checkGoatCatchActor(field_0x27f4) && fopAcM_GetName(field_0x27f4) != PROC_COW)))) { + setDoStatusEmphasys(0x15); + } else { + setDoStatus(0); + } + } else if (dComIfGp_getDoStatus() == 0x97) { + if (current.pos.y + 200.0f < mWaterY) { + setDoStatus(0x4C); + } else { + setDoStatus(0); + } + } else if (dComIfGp_getDoStatus() == 0x19 && dComIfGp_getHorseActor() != NULL && dComIfGp_getHorseActor()->getZeldaActor() != NULL) { + setDoStatus(0x19); + } else if (dComIfGp_getDoStatus() == 5 && field_0x27f4 != NULL && (fopAcM_GetName(field_0x27f4) == PROC_Obj_WindStone || fopAcM_GetName(field_0x27f4) == PROC_Obj_SmWStone)) { + setDoStatusEmphasys(0x3B); + } else if (dComIfGp_getDoStatus() == 0x14) { + if (checkEndResetFlg1(ERFLG1_UNK_4000000)) { + setDoStatusEmphasys(0x61); + } else if (checkEndResetFlg1(ERFLG1_UNK_10000000)) { + setDoStatusEmphasys(0x14); + } + } + + int grab_status = getWallGrabStatus(); + if (checkWolf()) { + if (grab_status == 0x15) { + setWallGrabStatus(0x3F, 2); + } else if (grab_status == 0x96) { + setWallGrabStatus(0xC, checkChainEmphasys()); + } + } else { + if (grab_status == 0x96) { + setWallGrabStatus(0x15, checkChainEmphasys()); + } + + if (dComIfGp_getRStatus() == 0x3A && checkShieldAttackEmphasys() == 0) { + setRStatus(0); + } + } + } + + mDoAud_setLinkHp(dComIfGs_getLife(), dComIfGs_getMaxLifeGauge()); + + if (dComIfGp_att_getCatghTarget() != NULL && !checkWolf()) { + if (checkRideOn() && checkCastleTownUseItem(EMPTY_BOTTLE) ) { + dComIfGp_setBottleStatus(0x6C, 0); + } + } + + if (checkEndResetFlg2(ERFLG2_UNK_20) && dComIfGp_checkPlayerStatus0(0, 0x200000) && (field_0x310e != field_0x310a || field_0x3110 != field_0x310c)) { + mDoAud_seStartLevel(Z2SE_AL_HAWK_EYE_PAN, NULL, 0, 0); + } + + offNoResetFlg0(FLG0_UNK_40000000); + mEndResetFlg0 = 0; + + if (checkEndResetFlg1(ERFLG1_UNK_4)) { + onNoResetFlg2(FLG2_UNK_20000); + } else { + offNoResetFlg2(FLG2_UNK_20000); + } + + mEndResetFlg1 = 0; + mEndResetFlg2 = 0; + + field_0x3540 = next.pos; + field_0x3108 = mCollisionRot.y; + + if (checkHorseRide() && checkBoarSingleBattle()) { + if (abs(mCollisionRot.y) < 0x4000) { + mCollisionRot.y = 0; + } else { + mCollisionRot.y = -0x8000; + } + } else if (checkMagneBootsOn()) { + field_0x3118 = mCollisionRot.y; + mCollisionRot.y = getMagneBootsLocalAngleY(mCollisionRot.y, 0); + } else if (checkModeFlg(MODE_VINE_CLIMB)) { + field_0x3108 = mCollisionRot.y; + mCollisionRot.y += field_0x308c; + } else if (checkCargoCarry() && mCargoCarryAcKeep.getActor() != NULL) { + field_0x3108 = mCollisionRot.y; + mCollisionRot.y = mCargoCarryAcKeep.getActor()->mCollisionRot.y; + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::execute() { +asm int daAlink_c::execute() { nofralloc #include "asm/d/a/d_a_alink/execute__9daAlink_cFv.s" } #pragma pop +#endif /* 800CAFA8-800CAFC8 0C58E8 0020+00 1/0 0/0 0/0 .text daAlink_Execute__FP9daAlink_c */ static void daAlink_Execute(daAlink_c* pLinkPtr) { @@ -1710,7 +2636,7 @@ MtxP daAlink_c::getRightItemMatrix() { /* 800CF344-800CF380 0C9C84 003C+00 1/0 0/0 0/0 .text checkPlayerNoDraw__9daAlink_cFv */ BOOL daAlink_c::checkPlayerNoDraw() { return dComIfGp_checkCameraAttentionStatus(field_0x317c, 2) || - i_checkNoResetFlg0(PLAYER_NO_DRAW); + i_checkNoResetFlg0(FLG0_PLAYER_NO_DRAW); } /* 800CF380-800CFC3C 0C9CC0 08BC+00 1/1 0/0 0/0 .text __ct__9daAlink_cFv */ @@ -1789,7 +2715,7 @@ static s32 dComIfGp_att_getCatghTarget() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_att_getCatghTarget() { +static asm dAttCatch_c* dComIfGp_att_getCatghTarget() { nofralloc #include "asm/d/a/d_a_alink/dComIfGp_att_getCatghTarget__Fv.s" } @@ -1850,7 +2776,7 @@ void J3DModel::setBaseTRMtx(MtxP matrix) { /* 800D0020-800D0048 0CA960 0028+00 1/1 0/0 0/0 .text checkFmChainGrabAnime__9daAlink_cCFv */ BOOL daAlink_c::checkFmChainGrabAnime() const { - return checkUpperAnime(ANM_HUMAN_CHAIN_GRAB) || checkUpperAnime(ANM_WOLF_CHAIN_GRAB); + return checkUpperAnime(0x62) || checkUpperAnime(0x2A0); } /* 800D0048-800D005C 0CA988 0014+00 1/1 0/0 0/0 .text checkSmallUpperGuardAnime__9daAlink_cCFv */ @@ -1862,7 +2788,7 @@ BOOL daAlink_c::checkSmallUpperGuardAnime() const { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dComIfGp_evmng_startCheck(char const* param_0) { +static asm bool dComIfGp_evmng_startCheck(char const* param_0) { nofralloc #include "asm/d/a/d_a_alink/dComIfGp_evmng_startCheck__FPCc.s" } @@ -1879,7 +2805,7 @@ static void mDoAud_setLinkGroupInfo(u8 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void mDoExt_MtxCalcAnmBlendTbl::getAnm(int param_0) { +asm J3DAnmTransform* mDoExt_MtxCalcAnmBlendTbl::getAnm(int param_0) { nofralloc #include "asm/d/a/d_a_alink/getAnm__25mDoExt_MtxCalcAnmBlendTblFi.s" } @@ -1896,19 +2822,19 @@ void dBgS_Acch::ClrGroundHit() { } /* 800D00EC-800D0110 0CAA2C 0024+00 1/1 0/0 0/0 .text checkReinRide__9daAlink_cCFv */ -BOOL daAlink_c::checkReinRide() const { +u32 daAlink_c::checkReinRide() const { return mRideStatus == 1 || mRideStatus == 2; } /* 800D0110-800D0138 0CAA50 0028+00 1/1 0/0 0/0 .text checkWolfEnemyThrowAnime__9daAlink_cCFv */ BOOL daAlink_c::checkWolfEnemyThrowAnime() const { - return checkUpperAnime(ANM_WOLF_ENEMY_THROW_LEFT) || - checkUpperAnime(ANM_WOLF_ENEMY_THROW_RIGHT); + return checkUpperAnime(0x2BD) || + checkUpperAnime(0x2BE); } /* 800D0138-800D014C 0CAA78 0014+00 1/1 0/0 0/0 .text checkSpecialDemoMode__9daAlink_cCFv */ -u16 daAlink_c::checkSpecialDemoMode() const { +int daAlink_c::checkSpecialDemoMode() const { return mDemo.getDemoType() == 5; } @@ -2039,7 +2965,7 @@ f32 daAlink_c::getGroundY() { /* 800D0358-800D0360 0CAC98 0008+00 1/0 0/0 0/0 .text getBaseAnimeFrameRate__9daAlink_cCFv */ f32 daAlink_c::getBaseAnimeFrameRate() const { - return mFrameCtrl1[0].getRate(); + return mUnderFrameCtrl[0].getRate(); } /* 800D0360-800D0368 0CACA0 0008+00 1/0 0/0 0/0 .text getAtnActorID__9daAlink_cCFv */ @@ -2065,7 +2991,7 @@ s32 daAlink_c::getGrabActorID() const { */ void daAlink_c::setForcePutPos(cXyz const& pPutPos) { mForcePutPos = pPutPos; - i_onEndResetFlg1(UNK_FORCE_PUT_POS); + i_onEndResetFlg1(ERFLG1_UNK_2000); } /* 800D03B4-800D03C8 0CACF4 0014+00 1/0 0/0 0/0 .text checkPlayerFly__9daAlink_cCFv */ @@ -2463,7 +3389,7 @@ Z2WolfHowlMgr* daAlink_c::getWolfHowlMgrP() { /* 800D0AA4-800D0AC8 0CB3E4 0024+00 1/0 0/0 0/0 .text checkWolfHowlSuccessAnime__9daAlink_cCFv */ BOOL daAlink_c::checkWolfHowlSuccessAnime() const { - return checkUnderMove0BckNoArcWolf(ANM_WOLF_HOWL_SUCCESS); + return checkUnderMove0BckNoArcWolf(WANM_HOWL_SUCCESS); } /* 800D0AC8-800D0AF0 0CB408 0028+00 1/0 0/0 0/0 .text checkOctaIealHang__9daAlink_cCFv */ diff --git a/src/d/a/d_a_alink_spinner.inc b/src/d/a/d_a_alink_spinner.inc index d8a7da3b70..b5f5632282 100644 --- a/src/d/a/d_a_alink_spinner.inc +++ b/src/d/a/d_a_alink_spinner.inc @@ -133,7 +133,7 @@ int daAlink_c::procSpinnerReadyInit() { commonProcInit(PROC_SPINNER_READY); mRideAcKeep.setData(spinner); - setSingleAnime(ANM_BOARD_SPINNER, daAlinkHIO_smallJump_c0::m.mSmallJumpAnm.mRate, 6.0f, + setSingleAnime(ANM_VJUMP_START, daAlinkHIO_smallJump_c0::m.mSmallJumpAnm.mRate, 6.0f, daAlinkHIO_smallJump_c0::m.mSmallJumpAnm.mEndF, daAlinkHIO_smallJump_c0::m.mSmallJumpAnm.mInterpolation); mNormalSpeed = 0.0f; @@ -205,7 +205,7 @@ int daAlink_c::procSpinnerWaitInit() { mRideStatus = 5; setBgCheckParam(); - setSingleAnimeBaseSpeed(ANM_SPINNER_RIDE, daAlinkHIO_board_c0::m.mSitAnmSpeed, 4.0f); + setSingleAnimeBaseSpeed(ANM_RIDE_CROUCH, daAlinkHIO_board_c0::m.mSitAnmSpeed, 4.0f); mSpeed.y = 0.0f; setSpecialGravity(0.0f, mMaxFallSpeed, 0); mNormalSpeed = 0.0f; @@ -213,7 +213,7 @@ int daAlink_c::procSpinnerWaitInit() { field_0x300e = mCollisionRot.y; field_0x3010 = 0; - field_0x3198 = ANM_SPINNER_RIDE; + field_0x3198 = ANM_RIDE_CROUCH; field_0x33b0 = 70.0f; field_0x3012 = 0; field_0x37a4 = mRideAcKeep.getActor()->current.pos; @@ -277,7 +277,7 @@ int daAlink_c::procSpinnerWait() { return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); } - daPy_frameCtrl_c* frameCtrl = mFrameCtrl1; + daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl; dMeter2Info_onDirectUseItem(itemSetBtn); if (spinner->checkPathMoveNow() == NULL) { @@ -295,10 +295,10 @@ int daAlink_c::procSpinnerWait() { field_0x3012 = 1; setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_CONTINUATION); - if (field_0x3198 != ANM_SPINNER_PUSH && field_0x2060->getOldFrameRate() < 0.01f) { - setSingleAnimeBaseSpeed(ANM_SPINNER_RIDE, daAlinkHIO_board_c0::m.mSitAnmSpeed, + if (field_0x3198 != ANM_RIDE_KICK && field_0x2060->getOldFrameRate() < 0.01f) { + setSingleAnimeBaseSpeed(ANM_RIDE_CROUCH, daAlinkHIO_board_c0::m.mSitAnmSpeed, daAlinkHIO_board_c0::m.mFastPushInterpolation); - field_0x3198 = ANM_SPINNER_PUSH; + field_0x3198 = ANM_RIDE_KICK; fopAcM_seStartCurrent(spinner, Z2SE_OBJ_SPNR_SW_PUSH, 0); } } else if (spinner->checkSpinnerTagInto()) { @@ -308,35 +308,35 @@ int daAlink_c::procSpinnerWait() { setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_DEFAULT); } - if ((field_0x3198 == ANM_SPINNER_PUSH && field_0x2060->getOldFrameRate() < 0.01f) || - (field_0x3198 != ANM_SPINNER_PUSH && field_0x3198 != ANM_SPINNER_STAND)) { - setSingleAnimeBaseSpeed(ANM_SPINNER_STAND, daAlinkHIO_board_c0::m.mStandAnmSpeed, + if ((field_0x3198 == ANM_RIDE_KICK && field_0x2060->getOldFrameRate() < 0.01f) || + (field_0x3198 != ANM_RIDE_KICK && field_0x3198 != ANM_RIDE_WAIT)) { + setSingleAnimeBaseSpeed(ANM_RIDE_WAIT, daAlinkHIO_board_c0::m.mStandAnmSpeed, daAlinkHIO_board_c0::m.mStandInterpolation); - field_0x3198 = ANM_SPINNER_STAND; + field_0x3198 = ANM_RIDE_WAIT; } - } else if (spinner->getButtonJump() && field_0x3198 != ANM_SPINNER_ATTACK) { - field_0x3198 = ANM_SPINNER_ATTACK; - setSingleAnime(ANM_SPINNER_ATTACK, 0.0f, daAlinkHIO_board_c0::m.mAirborneAnm.mStart, + } else if (spinner->getButtonJump() && field_0x3198 != ANM_RIDE_JUMP) { + field_0x3198 = ANM_RIDE_JUMP; + setSingleAnime(ANM_RIDE_JUMP, 0.0f, daAlinkHIO_board_c0::m.mAirborneAnm.mStart, daAlinkHIO_board_c0::m.mAirborneAnm.mEndF, daAlinkHIO_board_c0::m.mAirborneAnm.mInterpolation); field_0x3010 = 0; - } else if (field_0x3198 == ANM_SPINNER_ATTACK) { + } else if (field_0x3198 == ANM_RIDE_JUMP) { if (!spinner->getJumpFlg()) { - setSingleAnime(ANM_SPINNER_ATTACK_LAND, daAlinkHIO_board_c0::m.mLandAnm.mRate, + setSingleAnime(ANM_RIDE_JUMP_LAND, daAlinkHIO_board_c0::m.mLandAnm.mRate, daAlinkHIO_board_c0::m.mLandAnm.mStart, 16, daAlinkHIO_board_c0::m.mLandAnm.mInterpolation); - field_0x3198 = ANM_SPINNER_ATTACK_LAND; + field_0x3198 = ANM_RIDE_JUMP_LAND; } else if (field_0x3010 == 0 && field_0x2060->getOldFrameRate() < 0.01f) { - setSingleAnime(ANM_SPINNER_ATTACK, daAlinkHIO_board_c0::m.mAirborneAnm.mRate, + setSingleAnime(ANM_RIDE_JUMP, daAlinkHIO_board_c0::m.mAirborneAnm.mRate, daAlinkHIO_board_c0::m.mAirborneAnm.mStart, daAlinkHIO_board_c0::m.mAirborneAnm.mEndF, -1.0f); field_0x3010 = 1; } - } else if ((field_0x3198 == ANM_SPINNER_ATTACK_LAND && frameCtrl->checkAnmEnd()) || - (field_0x3198 != ANM_SPINNER_ATTACK_LAND && field_0x3198 != ANM_SPINNER_RIDE)) { - setSingleAnimeBaseSpeed(ANM_SPINNER_RIDE, daAlinkHIO_board_c0::m.mSitAnmSpeed, + } else if ((field_0x3198 == ANM_RIDE_JUMP_LAND && frameCtrl->checkAnmEnd()) || + (field_0x3198 != ANM_RIDE_JUMP_LAND && field_0x3198 != ANM_RIDE_CROUCH)) { + setSingleAnimeBaseSpeed(ANM_RIDE_CROUCH, daAlinkHIO_board_c0::m.mSitAnmSpeed, daAlinkHIO_board_c0::m.mSitInterpolation); - field_0x3198 = ANM_SPINNER_RIDE; + field_0x3198 = ANM_RIDE_CROUCH; } } diff --git a/src/d/a/d_a_alink_swim.inc b/src/d/a/d_a_alink_swim.inc index 06b28b32ee..271cd34233 100644 --- a/src/d/a/d_a_alink_swim.inc +++ b/src/d/a/d_a_alink_swim.inc @@ -33,7 +33,7 @@ asm void daAlink_c::swimDeleteItem() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::getZoraSwim() const { +asm bool daAlink_c::getZoraSwim() const { nofralloc #include "asm/d/a/d_a_alink/getZoraSwim__9daAlink_cCFv.s" } @@ -85,7 +85,7 @@ asm void daAlink_c::offOxygenTimer() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkPossibleWaterInMode() const { +asm bool daAlink_c::checkPossibleWaterInMode() const { nofralloc #include "asm/d/a/d_a_alink/checkPossibleWaterInMode__9daAlink_cCFv.s" } diff --git a/src/d/a/d_a_alink_swindow.inc b/src/d/a/d_a_alink_swindow.inc index 6d5e0d1742..f7214b8ffd 100644 --- a/src/d/a/d_a_alink_swindow.inc +++ b/src/d/a/d_a_alink_swindow.inc @@ -76,7 +76,7 @@ void daAlink_c::statusWindowDraw() { /* 80140AC8-80140B88 13B408 00C0+00 0/0 1/1 0/0 .text resetStatusWindow__9daAlink_cFv */ void daAlink_c::resetStatusWindow() { - i_offNoResetFlg2(0x400000); + i_offNoResetFlg2(FLG2_STATUS_WINDOW_DRAW); if (i_checkWolf()) { changeModelDataDirectWolf(1); @@ -86,7 +86,7 @@ void daAlink_c::resetStatusWindow() { setMatrix(); mpLinkModel->calc(); - i_onNoResetFlg2(0x400000); + i_onNoResetFlg2(FLG2_STATUS_WINDOW_DRAW); setSelectEquipItem(0); if (i_checkWolf()) { @@ -95,6 +95,6 @@ void daAlink_c::resetStatusWindow() { setItemMatrix(0); } - i_offNoResetFlg2(0x400000); + i_offNoResetFlg2(FLG2_STATUS_WINDOW_DRAW); m_sWindowBck = NULL; } \ No newline at end of file diff --git a/src/d/a/d_a_alink_whistle.inc b/src/d/a/d_a_alink_whistle.inc index cc553bbc41..9a4692f698 100644 --- a/src/d/a/d_a_alink_whistle.inc +++ b/src/d/a/d_a_alink_whistle.inc @@ -62,7 +62,7 @@ int daAlink_c::procGrassWhistleGetInit() { current.angle.y = mCollisionRot.y; field_0x2f98 = 4; - setSingleAnimeParam(ANM_GRASS_WHISTLE_GRAB, &daAlinkHIO_bottle_c0::m.field_0x50); + setSingleAnimeParam(ANM_BOTTLE_SWING_DOWN, &daAlinkHIO_bottle_c0::m.field_0x50); field_0x2f92 = 0xFE; field_0x280c.setData(field_0x27f4); @@ -91,7 +91,7 @@ asm int daAlink_c::procGrassWhistleGetInit() { /* 801119D8-80111A9C 10C318 00C4+00 1/0 0/0 0/0 .text procGrassWhistleGet__9daAlink_cFv */ int daAlink_c::procGrassWhistleGet() { - daPy_frameCtrl_c* frameCtrl = mFrameCtrl1; + daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl; if (frameCtrl->checkAnmEnd()) { procGrassWhistleWaitInit(mCommonCounter, field_0x300e, field_0x3010, field_0x3012, &field_0x37c8); diff --git a/src/d/a/d_a_alink_wolf.inc b/src/d/a/d_a_alink_wolf.inc index b429fb80e9..7beb3b7252 100644 --- a/src/d/a/d_a_alink_wolf.inc +++ b/src/d/a/d_a_alink_wolf.inc @@ -138,8 +138,8 @@ asm void daAlink_c::checkWolfAtnWait() { /* 8012880C-80128844 12314C 0038+00 27/27 0/0 0/0 .text * checkUnderMove0BckNoArcWolf__9daAlink_cCFQ29daAlink_c12daAlink_WANM */ BOOL daAlink_c::checkUnderMove0BckNoArcWolf(daAlink_c::daAlink_WANM anm_id) const { - return mUnderAnime[0].checkNoSetArcNo() && - m_wlAnmDataTable[anm_id].field_0x0 == mUnderAnime[0].getIdx(); + return mUnderAnmHeap[0].checkNoSetArcNo() && + m_wlAnmDataTable[anm_id].field_0x0 == mUnderAnmHeap[0].getIdx(); } /* 80128844-80128F0C 123184 06C8+00 11/11 0/0 0/0 .text setBlendWolfMoveAnime__9daAlink_cFf */ diff --git a/src/d/a/d_a_horse_static.cpp b/src/d/a/d_a_horse_static.cpp index 8f7a8a18e9..9e64804270 100644 --- a/src/d/a/d_a_horse_static.cpp +++ b/src/d/a/d_a_horse_static.cpp @@ -12,13 +12,13 @@ BOOL e_wb_class::checkWait() { } void e_wb_class::setPlayerRideNow() { - field_0x690 = 0x67; + mActionID = ACT_PL_RIDE_NOW; field_0x5b4 = 0; field_0x6be |= 3; } void e_wb_class::setPlayerRide() { - field_0x690 = 0x65; + mActionID = ACT_PL_RIDE; field_0x5b4 = 0; field_0x6be |= 3; @@ -26,28 +26,29 @@ void e_wb_class::setPlayerRide() { } void e_wb_class::getOff() { - if (!checkDownDamage() || field_0x690 == 0x67) { - field_0x690 = 0; + if (!checkDownDamage() || mActionID == ACT_PL_RIDE_NOW) { + mActionID = 0; } else { field_0x692 = 0; } + field_0x5b4 = 0; - field_0x6be &= 0xfffc; + field_0x6be &= ~3; mZ2Ride.setLinkRiding(false); } BOOL e_wb_class::checkDownDamage() { - return field_0x690 != 0x65 && field_0x690 != 0x66 && field_0x690 != 0x15; + return mActionID != ACT_PL_RIDE && mActionID != 0x66 && mActionID != ACT_S_DAMAGE; } u8 e_wb_class::checkNormalRideMode() const { - return field_0x690 != 0x66 || field_0x5b4 < 1; + return mActionID != 0x66 || field_0x5b4 < 1; } void e_wb_class::setRunRideMode() { - if (field_0x690 == 0x65) { + if (mActionID == ACT_PL_RIDE) { field_0x5b4 = 0; - field_0x690 = 0x15; + mActionID = ACT_S_DAMAGE; field_0x692 = 0x65; } } diff --git a/src/d/a/d_a_itembase.cpp b/src/d/a/d_a_itembase.cpp index 4a589f4cfc..9811545c17 100644 --- a/src/d/a/d_a_itembase.cpp +++ b/src/d/a/d_a_itembase.cpp @@ -99,14 +99,14 @@ int daItemBase_c::CreateItemHeap(char const* arcName, s16 bmdName, s16 btkName, if (brkName > 0) { J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(arcName, brkName); s8 tevFrm = getTevFrm(); - int tmp = 1; + int anmPlay = 1; if (tevFrm != -1) { - tmp = 0; + anmPlay = 0; } mpBrkAnm = new mDoExt_brkAnm(); - if (mpBrkAnm == NULL || !mpBrkAnm->init(modelData, pbrk, tmp, 2, 1.0f, 0, -1)) { + if (mpBrkAnm == NULL || !mpBrkAnm->init(modelData, pbrk, anmPlay, 2, 1.0f, 0, -1)) { return 0; } } @@ -176,8 +176,7 @@ void daItemBase_c::setShadow() { if (!chkFlag(0x10)) { if (getShadowSize() != 0.0f) { - dComIfGd_setSimpleShadow(¤t.pos, mAcch.GetGroundH(), scale, - mAcch.m_gnd, 0, 1.0f, + dComIfGd_setSimpleShadow(¤t.pos, mAcch.GetGroundH(), scale, mAcch.m_gnd, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); } } else { @@ -186,10 +185,9 @@ void daItemBase_c::setShadow() { shadowSize = 150.0f; } - field_0x91c = - dComIfGd_setShadow(field_0x91c, 3, mpModel, ¤t.pos, shadowSize, 0.0f, - current.pos.y, mAcch.GetGroundH(), mAcch.m_gnd, - &mTevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); + field_0x91c = dComIfGd_setShadow(field_0x91c, 3, mpModel, ¤t.pos, shadowSize, 0.0f, + current.pos.y, mAcch.GetGroundH(), mAcch.m_gnd, &mTevStr, + 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); } } diff --git a/src/d/a/d_a_npc.cpp b/src/d/a/d_a_npc.cpp index 7c37fc147f..580ee36e2e 100644 --- a/src/d/a/d_a_npc.cpp +++ b/src/d/a/d_a_npc.cpp @@ -4,191 +4,14 @@ // #include "d/a/d_a_npc.h" +#include "d/a/d_a_player.h" #include "d/d_procname.h" #include "dol2asm.h" #include "dolphin/types.h" #include "m_Do/m_Do_mtx.h" #include "rel/d/a/npc/d_a_npc_tk/d_a_npc_tk.h" - -// -// Types: -// - -struct daNpcT_Hermite_c { - /* 8014CBAC */ ~daNpcT_Hermite_c(); -}; - -struct daNpcT_Path_c { - /* 80145B7C */ void hermite(cXyz&, cXyz&, cXyz&, cXyz&, daNpcT_Hermite_c&, cXyz&); - /* 80145C40 */ void initialize(); - /* 80145C74 */ void setPathInfo(u8, s8, u8); - /* 80145D2C */ void setNextPathInfo(s8, u8); - /* 80145DA0 */ void reverse(); - /* 80145DD0 */ void setNextIdx(int); - /* 80145E38 */ void getDstPos(cXyz, cXyz*, int); - /* 80145FB4 */ void getDstPosH(cXyz, cXyz*, int, int); - /* 80146188 */ void chkPassed1(cXyz, int); - /* 801464D8 */ void chkPassed2(cXyz, cXyz*, int, int); -}; - -struct daNpcT_MatAnm_c { - /* 80145764 */ void initialize(); - /* 80145788 */ void calc(J3DMaterial*) const; - /* 8014D24C */ ~daNpcT_MatAnm_c(); -}; - -struct dPath {}; - -struct daNpcF_SPCurve_c { - /* 80150870 */ void initialize(dPath*, int); -}; - -struct daNpcF_Path_c { - /* 80150900 */ void initialize(); - /* 8015095C */ void setPathInfo(u8, s8, u8); - /* 80150A24 */ void chkPassed(cXyz); - /* 80150A7C */ void chkPassedDst(cXyz); - /* 80150BBC */ void reverse(); - /* 80150BE0 */ void setNextIdx(); - /* 80150C18 */ void getNextIdx(); - /* 80150C60 */ void getBeforeIdx(); - /* 80150CA8 */ void getBeforePos(cXyz&); - /* 80150D44 */ void getNextPos(cXyz&); - /* 80150DE0 */ void getDstPos(cXyz, cXyz&); - /* 80150EB4 */ void setNextIdxDst(cXyz); -}; - -struct daNpcF_MoveBgActor_c { - /* 80155B54 */ ~daNpcF_MoveBgActor_c(); - /* 80155E88 */ bool CreateHeap(); - /* 80155E90 */ bool Create(); - /* 80155E98 */ bool Delete(); - /* 80155EA0 */ bool Execute(f32 (**)[3][4]); - /* 80155EA8 */ bool Draw(); - /* 80155EB0 */ bool IsDelete(); - /* 80155EB8 */ bool ToFore(); - /* 80155EC0 */ bool ToBack(); -}; - -struct daNpcF_MatAnm_c { - /* 80150738 */ void initialize(); - /* 8015075C */ void calc(J3DMaterial*) const; - /* 80155ED0 */ ~daNpcF_MatAnm_c(); -}; - -struct daNpcF_Lookat_c { - /* 80151038 */ void initialize(); - /* 801510B8 */ void setParam(f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, s16, - cXyz*); - /* 80151350 */ void calc(fopAc_ac_c*, f32 (*)[4], csXyz**, int, int, int); - /* 801515D4 */ void adjustMoveDisAngle(s16&, s16, s16, s16); - /* 80151648 */ void initCalc(fopAc_ac_c*, f32 (*)[4], cXyz*, csXyz*, f32*, cXyz&, int); - /* 80151A54 */ void update(cXyz*, csXyz*, f32*); - /* 80151B68 */ void calcMoveDisAngle(int, cXyz*, csXyz*, cXyz, int, int); - /* 80151F54 */ void setRotAngle(); - /* 80151FE0 */ void clrRotAngle(); -}; - -struct daBaseNpc_path_c { - /* 8014D998 */ daBaseNpc_path_c(); - /* 8014D9A8 */ void isPath(); - /* 8014D9BC */ void setPathInfo(u8, s8, s8); - /* 8014DA48 */ void reverseDir(); - /* 8014DA64 */ void chkPnt(cXyz); - /* 8014DAC4 */ void setNextPnt(); - /* 8014DB04 */ void getIdx(); - /* 8014DB0C */ void setIdx(u16); - /* 8014DB14 */ void getPntPos(u16); - /* 801503FC */ ~daBaseNpc_path_c(); -}; - -struct daBaseNpc_moveBgActor_c { - /* 8014F4B4 */ daBaseNpc_moveBgActor_c(); - /* 8014F518 */ void MoveBGCreateHeap(); - /* 8014F60C */ void - MoveBGCreate(char const*, int, - void (*)(dBgW*, void*, cBgS_PolyInfo const&, bool, cXyz*, csXyz*, csXyz*), u32); - /* 8014F6FC */ void MoveBGDelete(); - /* 8014F770 */ void MoveBGExecute(); - /* 801503BC */ bool CreateHeap(); - /* 801503C4 */ bool Create(); - /* 801503CC */ bool Delete(); - /* 801503D4 */ bool Execute(f32 (**)[3][4]); - /* 801503DC */ bool Draw(); - /* 801503E4 */ bool IsDelete(); - /* 801503EC */ bool ToFore(); - /* 801503F4 */ bool ToBack(); - /* 80155FB0 */ ~daBaseNpc_moveBgActor_c(); - - static u8 m_name[4]; - static u8 m_dzb_id[4]; - static u8 m_set_func[4]; -}; - -struct daBaseNpc_matAnm_c { - /* 8014D884 */ void calc(J3DMaterial*) const; - /* 80150444 */ ~daBaseNpc_matAnm_c(); -}; - -struct daBaseNpc_lookat_c { - /* 8014DB40 */ void limitter(s16, s16*, s16, s16); - /* 8014DBB4 */ void calc(fopAc_ac_c*, f32 (*)[4], s16); - /* 8014E634 */ void setMaxJntLmt(csXyz, int); - /* 8014E658 */ void setMinJntLmt(csXyz, int); - /* 8014E67C */ void setJntPos(cXyz, int); - /* 8014E6A0 */ void setAttnPos(cXyz*); - /* 8014E6AC */ void getRot(int); - /* 801502EC */ ~daBaseNpc_lookat_c(); -}; - -struct daBaseNpc_c { - /* 8014E6C8 */ daBaseNpc_c(); - /* 8014E89C */ ~daBaseNpc_c(); - /* 8014EAD0 */ void execute(); - /* 8014EC50 */ void draw(f32); - /* 8014EE3C */ bool getResName(); - /* 8014EE44 */ void getTrnsfrmKeyAnmP(char*, int); - /* 8014EE80 */ void setMcaMorfAnm(J3DAnmTransformKey*, f32, f32, int, int, int); - /* 8014EEE4 */ void setBckAnm(J3DAnmTransform*, f32, int, int, int, bool); - /* 8014EF28 */ void getTexPtrnAnmP(char*, int); - /* 8014EF64 */ void setBtpAnm(J3DAnmTexPattern*, J3DModelData*, f32, int); - /* 8014EFA4 */ void attnSttsOn(int, int); - /* 8014EFF0 */ void setParam(); - /* 8014EFF4 */ void orderEvent(int, char*); - /* 8014F09C */ void mainProc(); - /* 8014F0A0 */ void setEnvTevColor(); - /* 8014F0FC */ void setRoomNo(); - /* 8014F140 */ bool btkCtrl(); - /* 8014F148 */ void checkEndAnm(f32); - /* 8014F1C8 */ void checkEndAnm(J3DFrameCtrl*); - /* 8014F228 */ void allAnmPlay(); - /* 8014F38C */ void adjustShapeAngle(); - /* 8014F390 */ void setMtx(int); - /* 8014F4A0 */ void setCollisions(); - /* 8014F4A4 */ void setAttnPos(); - /* 8014F4A8 */ void drawOtherMdls(); - /* 8014F4AC */ bool dbgDraw(); - - static u8 const mCcDObj[48]; - static u8 mCcDCyl[68]; - static u8 mCcDSph[64]; -}; - -struct daBaseNpc_acMngr_c { - /* 8014D804 */ daBaseNpc_acMngr_c(); - /* 8014D81C */ void entry(fopAc_ac_c*); - /* 8014D838 */ void getActor(); - /* 80150524 */ ~daBaseNpc_acMngr_c(); -}; - -struct dPnt {}; - -struct dMsgObject_c { - /* 8023819C */ void getActor(); - /* 802382C8 */ void offMsgSendControl(); - /* 802382F4 */ void isMsgSendControl(); - /* 802383A4 */ void isMouthCheck(); -}; +#include "SSystem/SComponent/c_math.h" +#include "m_Do/m_Do_lib.h" // // Forward References: @@ -819,14 +642,16 @@ SECTION_SDATA2 static u8 lit_4116[4] = { /* 80145764-80145788 1400A4 0024+00 0/0 0/0 103/103 .text initialize__15daNpcT_MatAnm_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_MatAnm_c::initialize() { - nofralloc -#include "asm/d/a/d_a_npc/initialize__15daNpcT_MatAnm_cFv.s" +void daNpcT_MatAnm_c::initialize() { + f32 value = FLOAT_LABEL(lit_4116); + + field_0xF4 = value; + field_0xF8 = value; + mTranslationX = value; + mTranslationY = value; + field_0x104 = 0; + field_0x105 = 0; } -#pragma pop /* ############################################################################################## */ /* 804533DC-804533E0 0019DC 0004+00 25/25 0/0 0/0 .sdata2 @4140 */ @@ -836,6 +661,35 @@ SECTION_SDATA2 static f32 lit_4140 = 1.0f; SECTION_SDATA2 static f64 lit_4142 = 4503601774854144.0 /* cast s32 to float */; /* 80145788-80145898 1400C8 0110+00 1/0 0/0 0/0 .text calc__15daNpcT_MatAnm_cCFP11J3DMaterial */ +#ifdef NONMATCHING +// 1 instruction in wrong place + float literals +void daNpcT_MatAnm_c::calc(J3DMaterial* param_0) const { + J3DMaterialAnm::calc(param_0); + + for (u32 i = 0; i < 8; i++) { + if (getTexMtxAnm(i).getAnmFlag()) { + J3DTexMtxInfo* curr_mtx_info = ¶m_0->getTexGenBlock()->getTexMtx(i)->getTexMtxInfo(); + + if (field_0x104 != 0) { + curr_mtx_info->mSRT.mTranslationX = mTranslationX; + curr_mtx_info->mSRT.mTranslationY = mTranslationY; + } + + if (field_0x105 != 0) { + f32 tmp8 = 1.0f / (field_0x105 + 1); + f32 tmp9 = (1.0f - tmp8); + + curr_mtx_info->mSRT.mTranslationX = field_0xF4 * tmp9 + curr_mtx_info->mSRT.mTranslationX * tmp8; + curr_mtx_info->mSRT.mTranslationY = field_0xF8 * tmp9 + curr_mtx_info->mSRT.mTranslationY * tmp8; + + } + + field_0xF4 = curr_mtx_info->mSRT.mTranslationX; + field_0xF8 = curr_mtx_info->mSRT.mTranslationY; + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -844,6 +698,7 @@ asm void daNpcT_MatAnm_c::calc(J3DMaterial* param_0) const { #include "asm/d/a/d_a_npc/calc__15daNpcT_MatAnm_cCFP11J3DMaterial.s" } #pragma pop +#endif /* ############################################################################################## */ /* 804533E8-804533EC 0019E8 0004+00 13/13 0/0 0/0 .sdata2 @4148 */ @@ -883,7 +738,7 @@ int daNpcT_MotionSeqMngr_c::play(u16 param_0, int* param_1, f32* param_2) { *param_1 = (&mpSeqData[mNo * field_0x4])[mStepNo].field_0x0; *param_2 = (&mpSeqData[mNo * field_0x4])[mStepNo].field_0x2; - if (field_0x14 == -1 && -1.0f < field_0x18) { + if (field_0x14 == -1 && FLOAT_LABEL(lit_4148) < field_0x18) { *param_2 = field_0x18; } ret = 1; @@ -913,127 +768,265 @@ s32 daNpcT_MotionSeqMngr_c::checkEndSequence() { } /* 80145A38-80145A78 140378 0040+00 2/2 0/0 0/0 .text daNpcT_addIdx__FiiRUsi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daNpcT_addIdx(int param_0, int param_1, u16& param_2, int param_3) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcT_addIdx__FiiRUsi.s" +static int daNpcT_addIdx(int param_0, int param_1, u16& param_2, int param_3) { + int tmp = 0; + int tmp2 = param_2; + tmp2 += param_0; + + if (param_1 <= tmp2) { + if (param_3) { + int tmp3 = tmp2 / param_1; + tmp2 -= (tmp3 * param_1); + } else { + tmp2 = param_1 + -1; + tmp = 1; + } + } + + param_2 = tmp2; + return tmp; } -#pragma pop /* 80145A78-80145AC4 1403B8 004C+00 2/2 0/0 0/0 .text daNpcT_subIdx__FiiRUsi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daNpcT_subIdx(int param_0, int param_1, u16& param_2, int param_3) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcT_subIdx__FiiRUsi.s" +static int daNpcT_subIdx(int param_0, int param_1, u16& param_2, int param_3) { + int tmp = 0; + int tmp2 = param_2; + tmp2 -= param_0; + + if (0 > tmp2) { + if (param_3) { + int tmp3 = tmp2 / param_1; + int tmp4 = tmp2 - tmp3 * param_1; + param_0 = param_1 + tmp4; + + int tmp5 = param_0 / param_1; + tmp2 = param_0 - (tmp5 * param_1); + + } else { + tmp2 = 0; + tmp = 1; + } + } + + param_2 = tmp2; + return tmp; } -#pragma pop /* 80145AC4-80145B20 140404 005C+00 5/5 0/0 0/0 .text daNpcT_incIdx__FiRUsii */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daNpcT_incIdx(int param_0, u16& param_1, int param_2, int param_3) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcT_incIdx__FiRUsii.s" +static void daNpcT_incIdx(int param_0, u16& param_1, int param_2, int param_3) { + param_3 ? daNpcT_subIdx(1,param_0,param_1,param_2) : daNpcT_addIdx(1,param_0,param_1,param_2); } -#pragma pop /* 80145B20-80145B7C 140460 005C+00 3/3 0/0 0/0 .text daNpcT_decIdx__FiRUsii */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daNpcT_decIdx(int param_0, u16& param_1, int param_2, int param_3) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcT_decIdx__FiRUsii.s" +static void daNpcT_decIdx(int param_0, u16& param_1, int param_2, int param_3) { + param_3 ? daNpcT_addIdx(1,param_0,param_1,param_2) : daNpcT_subIdx(1,param_0,param_1,param_2); } -#pragma pop /* 80145B7C-80145C40 1404BC 00C4+00 1/1 0/0 0/0 .text * hermite__13daNpcT_Path_cFR4cXyzR4cXyzR4cXyzR4cXyzR16daNpcT_Hermite_cR4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_Path_c::hermite(cXyz& param_0, cXyz& param_1, cXyz& param_2, cXyz& param_3, +void daNpcT_Path_c::hermite(cXyz& param_0, cXyz& param_1, cXyz& param_2, cXyz& param_3, daNpcT_Hermite_c& param_4, cXyz& param_5) { - nofralloc -#include "asm/d/a/d_a_npc/hermite__13daNpcT_Path_cFR4cXyzR4cXyzR4cXyzR4cXyzR16daNpcT_Hermite_cR4cXyz.s" + param_5.x = param_0.x * param_4.mPosition.x + + param_2.x * param_4.mPosition.y + + param_1.x * param_4.mPosition.z + + param_3.x * param_4.field_0x10; + + param_5.y = param_0.y * param_4.mPosition.x + + param_2.y * param_4.mPosition.y + + param_1.y * param_4.mPosition.z + + param_3.y * param_4.field_0x10; + + + param_5.z = param_0.z * param_4.mPosition.x + + param_2.z * param_4.mPosition.y + + param_1.z * param_4.mPosition.z + + param_3.z * param_4.field_0x10; } -#pragma pop + /* 80145C40-80145C74 140580 0034+00 0/0 0/0 44/44 .text initialize__13daNpcT_Path_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_Path_c::initialize() { - nofralloc -#include "asm/d/a/d_a_npc/initialize__13daNpcT_Path_cFv.s" +void daNpcT_Path_c::initialize() { + mpRoomPath = 0; + + f32 value = FLOAT_LABEL(lit_4116); + mPosition.x = value; + mPosition.y = value; + mPosition.z = value; + field_0x10 = value; + field_0x14 = value; + field_0x18 = value; + + mIdx = 0; + mDirection = 0; + mIsClosed = 0; } -#pragma pop /* 80145C74-80145D2C 1405B4 00B8+00 0/0 0/0 18/18 .text setPathInfo__13daNpcT_Path_cFUcScUc */ +#ifdef NONMATCHING +// something wrong with the getPntPos inline +int daNpcT_Path_c::setPathInfo(u8 i_pathIdx, s8 i_roomNo, u8 i_direction) { + mpRoomPath = 0; + mIdx = 0; + mDirection = i_direction; + + if (i_pathIdx != 0xFF) { + mpRoomPath = dPath_GetRoomPath(i_pathIdx,i_roomNo); + if (!mpRoomPath) { + return 0; + } + + mIsClosed = mpRoomPath->m_closed & 1; + int tmpidx = getIdx(); + mPosition = *getPntPos(tmpidx); + } + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcT_Path_c::setPathInfo(u8 param_0, s8 param_1, u8 param_2) { +asm int daNpcT_Path_c::setPathInfo(u8 param_0, s8 param_1, u8 param_2) { nofralloc #include "asm/d/a/d_a_npc/setPathInfo__13daNpcT_Path_cFUcScUc.s" } #pragma pop +#endif /* 80145D2C-80145DA0 14066C 0074+00 0/0 0/0 1/1 .text setNextPathInfo__13daNpcT_Path_cFScUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_Path_c::setNextPathInfo(s8 param_0, u8 param_1) { - nofralloc -#include "asm/d/a/d_a_npc/setNextPathInfo__13daNpcT_Path_cFScUc.s" +int daNpcT_Path_c::setNextPathInfo(s8 param_0, u8 i_direction) { + mIdx = 0; + mDirection = i_direction; + u16 next_id = mpRoomPath->m_nextID; + + if (next_id != 65535) { + mpRoomPath = dPath_GetRoomPath(next_id,param_0); + if (!mpRoomPath) { + return 0; + } + + mIsClosed = mpRoomPath->m_closed & 1; + } + return 1; } -#pragma pop /* 80145DA0-80145DD0 1406E0 0030+00 0/0 0/0 1/1 .text reverse__13daNpcT_Path_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_Path_c::reverse() { - nofralloc -#include "asm/d/a/d_a_npc/reverse__13daNpcT_Path_cFv.s" +void daNpcT_Path_c::reverse() { + if (mDirection == 1) { + mDirection = 0; + field_0x1E = 1; + return; + } + mDirection = 1; + field_0x1E = 1; + } -#pragma pop /* 80145DD0-80145E38 140710 0068+00 2/2 0/0 8/8 .text setNextIdx__13daNpcT_Path_cFi */ +#ifdef NONMATCHING +// getNumPnts inline appears to be wrong +int daNpcT_Path_c::setNextIdx(int param_0) { + u16 numPnts = getNumPnts(); + + if (chkClose() != 0 && numPnts == param_0) { + daNpcT_incIdx(param_0,mIdx,1,mDirection); + return; + } + + daNpcT_incIdx(param_0,mIdx,0,mDirection); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcT_Path_c::setNextIdx(int param_0) { +asm int daNpcT_Path_c::setNextIdx(int param_0) { nofralloc #include "asm/d/a/d_a_npc/setNextIdx__13daNpcT_Path_cFi.s" } #pragma pop +#endif /* 80145E38-80145FB4 140778 017C+00 0/0 0/0 1/1 .text getDstPos__13daNpcT_Path_cF4cXyzP4cXyzi */ +#ifdef NONMATCHING +int daNpcT_Path_c::getDstPos(cXyz param_0, cXyz* param_1, int i_idx) { + cXyz* curr_room_pos = &mpRoomPath->m_points[mIdx].m_position; + + if (i_idx == mIdx) { + mIdx--; + + param_1 = curr_room_pos; + + } else { + do { + int ret = chkPassed1(param_0,i_idx); + + if (ret == 0) { + param_1 = curr_room_pos; + break; + } + + field_0x1E = 1; + + } while (setNextIdx(i_idx) == 0); + + mIdx = i_idx; + mIdx--; + + param_1 = curr_room_pos; + } + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcT_Path_c::getDstPos(cXyz param_0, cXyz* param_1, int param_2) { +asm int daNpcT_Path_c::getDstPos(cXyz param_0, cXyz* param_1, int param_2) { nofralloc #include "asm/d/a/d_a_npc/getDstPos__13daNpcT_Path_cF4cXyzP4cXyzi.s" } #pragma pop +#endif /* 80145FB4-80146188 1408F4 01D4+00 0/0 0/0 10/10 .text getDstPosH__13daNpcT_Path_cF4cXyzP4cXyzii */ +#ifdef NONMATCHING +int daNpcT_Path_c::getDstPosH(cXyz param_0, cXyz* param_1, int param_2, int param_3) { + cXyz* curr_room_pos = &mpRoomPath->m_points[mIdx].m_position; + + if (i_idx == mIdx) { + mIdx--; + + param_1 = curr_room_pos; + + } else { + do { + int ret = chkPassed1(param_0,i_idx); + + if (ret == 0) { + param_1 = curr_room_pos; + break; + } + + field_0x1E = 1; + + } while (setNextIdx(i_idx) == 0); + + mIdx = i_idx; + mIdx--; + + param_1 = curr_room_pos; + } + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcT_Path_c::getDstPosH(cXyz param_0, cXyz* param_1, int param_2, int param_3) { +asm int daNpcT_Path_c::getDstPosH(cXyz param_0, cXyz* param_1, int param_2, int param_3) { nofralloc #include "asm/d/a/d_a_npc/getDstPosH__13daNpcT_Path_cF4cXyzP4cXyzii.s" } #pragma pop +#endif /* ############################################################################################## */ /* 804533EC-804533F0 0019EC 0004+00 1/1 0/0 0/0 .sdata2 @4513 */ @@ -1041,14 +1034,99 @@ SECTION_SDATA2 static f32 lit_4513 = 100.0f; /* 80146188-801464D8 140AC8 0350+00 2/2 0/0 2/2 .text chkPassed1__13daNpcT_Path_cF4cXyzi */ +#ifdef NONMATCHING +int daNpcT_Path_c::chkPassed1(cXyz param_0, int param_1) { + u16 idx = mIdx; + u16 tmpIdx1 = idx; + u16 tmpIdx2 = idx; + + u8 tmp; + + cXyz l_pos1; + cXyz l_pos2; + cXyz l_pos3; + cXyz l_pos4; + cXyz l_pos5; + cXyz l_pos6; + cXyz l_pos7; + + f32 l_float1; + f32 l_float2; + f32 l_float3; + f32 l_float4; + f32 l_float5; + f32 l_float6; + + Vec l_vec; + + + if ((mpRoomPath->m_closed & 1) == 0 || param_1 == mpRoomPath->m_num) { + tmp = mDirection == 1; + daNpcT_decIdx(param_1,tmpIdx2,1,tmp); + + tmp = mDirection == 1; + daNpcT_incIdx(param_1,tmpIdx1,0,tmp); + } else { + tmp = mDirection == 1; + daNpcT_decIdx(tmp,tmpIdx1,0,tmp); + + tmp = mDirection == 1; + daNpcT_incIdx(mpRoomPath->m_num,tmpIdx2,1,tmp); + } + + tmp = tmpIdx2; + + l_pos5 = mpRoomPath->m_points[idx].m_position; + l_pos6 = mpRoomPath->m_points[mIdx].m_position; + l_pos7 = mpRoomPath->m_points[mIdx].m_position; + + l_pos1 = l_pos7; + l_pos2 = l_pos6; + l_pos3 = l_pos5; + + + if (tmp == mIdx) { + l_vec.x = 0.0f; + l_vec.y = 0.0f; + l_vec.z = 100.0f; + + s16 angle = cLib_targetAngleY(&l_pos1,&l_pos2); + mDoMtx_YrotS((MtxP)&mDoMtx_stack_c::now,angle); + PSMTXMultVec((MtxP)&mDoMtx_stack_c::now,&l_vec,&l_vec); + l_pos4 = (cXyz)l_vec + l_pos2; + l_pos3 = l_pos4; + } + + if (mIdx == tmpIdx1) { + l_vec.x = 0.0f; + l_vec.y = 0.0f; + l_vec.z = 100.0f; + + s16 angle = cLib_targetAngleY(&l_pos3,&l_pos2); + mDoMtx_YrotS((MtxP)&mDoMtx_stack_c::now,angle); + PSMTXMultVec((MtxP)&mDoMtx_stack_c::now,&l_vec,&l_vec); + l_pos5 = (cXyz)l_vec + l_pos2; + l_pos1 = l_pos5; + } + + if (cM3d_Len2dSqPntAndSegLine(param_0.x,param_0.z,l_pos3.x,l_pos3.z,l_pos1.x,l_pos1.z,&l_float1,&l_float2,&l_float3) + && cM3d_Len2dSqPntAndSegLine(l_pos2.x,l_pos2.z,l_pos3.x,l_pos3.z,l_pos1.x,l_pos1.z,&l_float4,&l_float5,&l_float6)) { + if (0x4000 < abs(cM_atan2s(l_pos1.x - l_pos3.x, l_pos1.z - l_pos3.z) - cM_atan2s(l_float4 - l_float1, l_float5 - l_float2))) { + return 1; + } + } + return 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcT_Path_c::chkPassed1(cXyz param_0, int param_1) { +asm int daNpcT_Path_c::chkPassed1(cXyz param_0, int param_1) { nofralloc #include "asm/d/a/d_a_npc/chkPassed1__13daNpcT_Path_cF4cXyzi.s" } #pragma pop +#endif /* ############################################################################################## */ /* 803B36A8-803B36B4 0107C8 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ @@ -1406,7 +1484,7 @@ SECTION_SDATA2 static f64 lit_4677 = 4503599627370496.0 /* cast u32 to float */; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcT_Path_c::chkPassed2(cXyz param_0, cXyz* param_1, int param_2, int param_3) { +asm int daNpcT_Path_c::chkPassed2(cXyz param_0, cXyz* param_1, int param_2, int param_3) { nofralloc #include "asm/d/a/d_a_npc/chkPassed2__13daNpcT_Path_cF4cXyzP4cXyzii.s" } @@ -1501,14 +1579,14 @@ SECTION_SDATA2 static f32 lit_5423 = 7281.0f; /* 80147DCC-80147E3C 14270C 0070+00 0/0 0/0 28/28 .text * setParam__19daNpcT_DmgStagger_cFP10fopAc_ac_cP10fopAc_ac_cs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_DmgStagger_c::setParam(fopAc_ac_c* param_0, fopAc_ac_c* param_1, s16 param_2) { - nofralloc -#include "asm/d/a/d_a_npc/setParam__19daNpcT_DmgStagger_cFP10fopAc_ac_cP10fopAc_ac_cs.s" +void daNpcT_DmgStagger_c::setParam(fopAc_ac_c* i_actor1, fopAc_ac_c* i_actor2, s16 i_angle) { + if (i_actor2 && i_actor1) { + field_0xc = FLOAT_LABEL(lit_5422); + field_0x10 = FLOAT_LABEL(lit_5423); + field_0x16 = fopAcM_searchActorAngleY(i_actor1,i_actor2) - i_angle; + mStagger = 0x4000; + } } -#pragma pop /* ############################################################################################## */ /* 80453438-8045343C 001A38 0004+00 1/1 0/0 0/0 .sdata2 @5459 */ @@ -1690,8 +1768,6 @@ void daNpcT_c::deleteRes(s8 const* resNoList, char const** resNameList) { SECTION_SDATA2 static f32 lit_5667 = -1000000000.0f; /* 8014852C-8014886C 142E6C 0340+00 0/0 0/0 59/59 .text execute__8daNpcT_cFv */ -// matches with literals -#ifdef NONMATCHING int daNpcT_c::execute() { setParam(); if (!evtProc()) { @@ -1704,7 +1780,7 @@ int daNpcT_c::execute() { field_0x930 = field_0x68c.m_gnd; field_0xdca = fopAcM_getPolygonAngle(field_0x930, current.angle.y); field_0xdf4 = field_0x68c.GetGroundH(); - if (field_0xdf4 != -1000000000.0f) { + if (FLOAT_LABEL(lit_5667) != field_0xdf4) { field_0xda8 = dKy_pol_sound_get(&field_0x68c.m_gnd); field_0xe24 = dComIfGp_getReverb(field_0x864.GetRoomId()); @@ -1714,7 +1790,7 @@ int daNpcT_c::execute() { } afterMoved(); - if (field_0xdf4 != -1000000000.0f) { + if (FLOAT_LABEL(lit_5667) != field_0xdf4) { setEnvTevColor(); setRoomNo(); } @@ -1733,12 +1809,12 @@ int daNpcT_c::execute() { ctrlSubFaceMotion(0); ctrlMotion(); setAttnPos(); - cLib_chaseF(&field_0xdfc, 0.0f, 1.0f); + cLib_chaseF(&field_0xdfc, FLOAT_LABEL(lit_4116), FLOAT_LABEL(lit_4140)); twilight(); setCollision(); if (!field_0xe2c) { - if ((field_0xe33 && dComIfGp_getEvent().i_isOrderOK()) || !i_dComIfGp_event_runCheck()) { + if ((field_0xe33 && i_dComIfGp_getEvent().i_isOrderOK()) || !i_dComIfGp_event_runCheck()) { evtOrder(); } } @@ -1747,23 +1823,13 @@ int daNpcT_c::execute() { decTmr(); return 1; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int daNpcT_c::execute() { - nofralloc -#include "asm/d/a/d_a_npc/execute__8daNpcT_cFv.s" -} -#pragma pop -#endif /* ############################################################################################## */ /* 80453444-80453448 001A44 0004+00 3/3 0/0 0/0 .sdata2 @5794 */ SECTION_SDATA2 static f32 lit_5794 = 20.0f; /* 8014886C-80148C70 1431AC 0404+00 0/0 0/0 58/58 .text draw__8daNpcT_cFiifP11_GXColorS10fiii */ -// close. literals + few wrong areas +// regalloc + literals #ifdef NONMATCHING int daNpcT_c::draw(int param_0, int param_1, f32 param_2, GXColorS10* color, f32 param_4, int param_5, int param_6, int param_7) { @@ -1787,13 +1853,14 @@ int daNpcT_c::draw(int param_0, int param_1, f32 param_2, GXColorS10* color, f32 mTevStr.mFogColor.a = color->a; } - if (field_0xdb8 != 0 && mTimer != 0) { + if (field_0xdb8 && mTimer) { f32 r = (f32)field_0xdb8 / (f32)mTimer; - if (!cM3d_IsZero(r)) { + + if (cM3d_IsZero_inverted(r)) { mTevStr.mFogColor.r = r * 20.0f; } } else if (param_0 != 0) { - mTevStr.field_0x35a = 20; + mTevStr.mFogColor.g = 20; } if (field_0xd98 & 0x800) { @@ -1820,13 +1887,13 @@ int daNpcT_c::draw(int param_0, int param_1, f32 param_2, GXColorS10* color, f32 drawGhost(); } else if (field_0xa89 != 0) { g_env_light.settingTevStruct(4, ¤t.pos, &mTevStr); - g_env_light.setLightTevColorType_MAJI(modelData, &mTevStr); + g_env_light.setLightTevColorType_MAJI(model->getModelData(), &mTevStr); dComIfGd_setListDark(); mMcaMorfAnm[0]->entryDL(); dComIfGd_setList(); } else { g_env_light.settingTevStruct(0, ¤t.pos, &mTevStr); - g_env_light.setLightTevColorType_MAJI(modelData, &mTevStr); + g_env_light.setLightTevColorType_MAJI(model->getModelData(), &mTevStr); mMcaMorfAnm[0]->entryDL(); } @@ -1887,14 +1954,47 @@ void daNpcT_c::setRoomNo() { } /* 80148D10-80148DD0 143650 00C0+00 1/1 0/0 0/0 .text checkEndAnm__8daNpcT_cFf */ +#ifdef NONMATCHING +int daNpcT_c::checkEndAnm(f32 param_0) { + bool ret; + u8 play_mode = mMcaMorfAnm[0]->getPlayMode(); + int tmp = 2; + + if (play_mode == tmp || play_mode < tmp) { + tmp = 0; + if (play_mode < tmp) { + ret = 0; + } else { + return mMcaMorfAnm[0]->isLoop(); + } + } + + if (ret == 0 && cM3d_IsZero_inverted(mMcaMorfAnm[0]->getPlaySpeed())) { + if (cM3d_IsZero_inverted(param_0)) { + play_mode = 1; + } + } + + if (!mMcaMorfAnm[0]->mFrameCtrl.checkState(1) && mMcaMorfAnm[0]->mFrameCtrl.getRate() != 0.0f) { + ret = 1; + } + + if (play_mode = 1 && cM3d_IsZero_inverted(param_0)) { + ret = 1; + } + + return ret; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcT_c::checkEndAnm(f32 param_0) { +asm int daNpcT_c::checkEndAnm(f32 param_0) { nofralloc #include "asm/d/a/d_a_npc/checkEndAnm__8daNpcT_cFf.s" } #pragma pop +#endif /* 80148DD0-80148E4C 143710 007C+00 1/1 0/0 0/0 .text checkEndAnm__8daNpcT_cFP12J3DFrameCtrlf */ #pragma push @@ -1951,16 +2051,68 @@ void daNpcT_c::setMtx() { } /* 8014924C-80149300 143B8C 00B4+00 1/1 0/0 0/0 .text ctrlFaceMotion__8daNpcT_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::ctrlFaceMotion() { - nofralloc -#include "asm/d/a/d_a_npc/ctrlFaceMotion__8daNpcT_cFv.s" +void daNpcT_c::ctrlFaceMotion() { + int l_int; + f32 l_float; + + if (field_0xb50.play(field_0xe20,&l_int,&l_float)) { + setFaceMotionAnm(l_int,true); + + if (l_float < FLOAT_LABEL(lit_4116)) { + mMcaMorfAnm[0]->setMorf(field_0xa80); + field_0xdfc = field_0xa80; + + if (mMcaMorfAnm[1]) { + mMcaMorfAnm[1]->setMorf(field_0xa80); + } + } else { + mMcaMorfAnm[0]->setMorf(l_float); + field_0xdfc = l_float; + + if (mMcaMorfAnm[1]) { + mMcaMorfAnm[1]->setMorf(l_float); + } + } + } } -#pragma pop /* 80149300-801493B8 143C40 00B8+00 1/1 0/0 0/0 .text ctrlMotion__8daNpcT_cFv */ +#ifdef NONMATCHING +// 1 instruction in the wrong place + 1 register wrong +void daNpcT_c::ctrlMotion() { + int l_int; + int l_int2; + f32 l_float; + + if (field_0xb74.play(field_0xe1e,&l_int,&l_float)) { + l_int2 = 0; + + if (l_float < FLOAT_LABEL(lit_4148)) { + l_int2 = 1; + } + + int l_int3 = l_int; + + if (l_float < FLOAT_LABEL(lit_4116)) { + setMotionAnm(l_int3,field_0xa84,l_int2); + } + + f32 tmp = FLOAT_LABEL(lit_4116); + field_0xdfc = tmp; + + if (field_0xa88) { + mMcaMorfAnm[0]->setMorf(tmp); + + f32 tmp2 = FLOAT_LABEL(lit_4116); + field_0xdfc = tmp2; + + if (mMcaMorfAnm[1]) { + mMcaMorfAnm[1]->setMorf(tmp2); + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1969,16 +2121,73 @@ asm void daNpcT_c::ctrlMotion() { #include "asm/d/a/d_a_npc/ctrlMotion__8daNpcT_cFv.s" } #pragma pop +#endif /* 801493B8-8014951C 143CF8 0164+00 1/1 0/0 2/2 .text ctrlMsgAnm__8daNpcT_cFPiPiP10fopAc_ac_ci */ +#ifdef NONMATCHING +// few extra mr instructions + regalloc nightmare +int daNpcT_c::ctrlMsgAnm(int* param_0, int* param_1, fopAc_ac_c* param_2, int param_3) { + int* tmp0 = param_0; + int* tmp1 = param_1; + fopAc_ac_c* tmp2 = param_2; + int tmp3 = param_3; + + *param_0 = -1; + *param_1 = -1; + + if (tmp3 != 0 || mEvtInfo.checkCommandTalk() || field_0xdac != -1) { + fopAc_ac_c* talk_partner = (fopAc_ac_c*)dComIfGp_event_getTalkPartner(); + dMsgObject_c* talk_partner_conv = (dMsgObject_c*)talk_partner; + + if (tmp2 == talk_partner) { + u16 actor_command = talk_partner_conv->getActor()->mEvtInfo.mCommand; + + if (actor_command == 2 || actor_command == 3) { + mSubMtd = (profile_method_class*)-1; + } else if (actor_command == 6) { + if (talk_partner->mSubMtd != mSubMtd) { + *tmp0 = dComIfGp_getMesgFaceAnimeAttrInfo(); + *tmp1 = dComIfGp_getMesgAnimeAttrInfo(); + mSubMtd = talk_partner->mSubMtd; + } + + if (talk_partner_conv->isMouthCheck()) { + field_0xd98 &= 0xffffbfff; + } else { + field_0xd98 |= 0x4000; + } + + field_0xdb4 = 0x14; + } else { + if (field_0xd98 & 0x4000) { + field_0xd98 &= 0xffffbfff; + } + mSubMtd = (profile_method_class*)-1; + } + } else { + mSubMtd = (profile_method_class*)-1; + if (field_0xdb4) { + field_0xdb4 = 1; + } + } + + if (tmp3 == 0) { + cLib_calcTimer(&field_0xdb4); + } + + return field_0xdb4; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcT_c::ctrlMsgAnm(int* param_0, int* param_1, fopAc_ac_c* param_2, int param_3) { +asm int daNpcT_c::ctrlMsgAnm(int* param_0, int* param_1, fopAc_ac_c* param_2, int param_3) { nofralloc #include "asm/d/a/d_a_npc/ctrlMsgAnm__8daNpcT_cFPiPiP10fopAc_ac_ci.s" } #pragma pop +#endif /* 8014951C-8014997C 143E5C 0460+00 1/0 1/0 59/0 .text ctrlJoint__8daNpcT_cFP8J3DJointP8J3DModel */ @@ -2333,14 +2542,18 @@ asm void daNpcT_c::getActorDistance(fopAc_ac_c* param_0, int param_1, int param_ #pragma pop /* 8014BBF0-8014BC78 146530 0088+00 0/0 1/1 180/180 .text initTalk__8daNpcT_cFiPP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_c::initTalk(int param_0, fopAc_ac_c** param_1) { - nofralloc -#include "asm/d/a/d_a_npc/initTalk__8daNpcT_cFiPP10fopAc_ac_c.s" +int daNpcT_c::initTalk(int param_0, fopAc_ac_c** param_1) { + mFlow.init(this,param_0,0,param_1); + field_0xdc8 = fopAcM_searchPlayerAngleY(this); + if (checkStep()) { + mStepNo = 0; + } + + f32 tmp = FLOAT_LABEL(lit_4116); + mSpeedF = tmp; + mSpeed.set(tmp,tmp,tmp); + return 1; } -#pragma pop /* 8014BC78-8014BE2C 1465B8 01B4+00 0/0 0/0 169/169 .text talkProc__8daNpcT_cFPiiPP10fopAc_ac_ci */ @@ -2378,14 +2591,42 @@ asm void daNpcT_c::getEvtAreaTagP(int param_0, int param_1) { #pragma pop /* 8014BFB0-8014C030 1468F0 0080+00 0/0 0/0 5/5 .text getShopItemTagP__8daNpcT_cFv */ +#ifdef NONMATCHING +// few instructions off + regalloc +u32 daNpcT_c::getShopItemTagP() { + mFindCount = 0; + mSrchName = 0x127; + fpcM_Search((fopAcIt_JudgeFunc)srchActor,(void*)this); + + int i = 0; + + for (;;) { + + if (0 >= mFindCount) { + break; + } + + u16 param = fopAcM_GetParam(mFindActorPtrs[i]); + + if (param == 0xf0000000) { + return param; + } + + i++; + } + + return 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcT_c::getShopItemTagP() { +asm u32 daNpcT_c::getShopItemTagP() { nofralloc #include "asm/d/a/d_a_npc/getShopItemTagP__8daNpcT_cFv.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80453480-80453484 001A80 0004+00 1/1 0/0 0/0 .sdata2 id$7388 */ @@ -2418,6 +2659,49 @@ SECTION_SDATA2 static f32 lit_7551 = 448.0f; /* 8014C200-8014C384 146B40 0184+00 0/0 0/0 2/2 .text * daNpcT_chkActorInScreen__FP10fopAc_ac_cfffffffi */ +#ifdef NONMATCHING +bool daNpcT_chkActorInScreen(fopAc_ac_c* i_ActorP, f32 param_1, f32 param_2, f32 param_3, + f32 param_4, f32 param_5, f32 param_6, f32 param_7, int param_8) { + bool ret = false; + cXyz pos_array[4]; + cXyz pos1; + cXyz pos2; + cXyz pos3; + cXyz pos4; + + if (fopAcM_GetMtx(i_ActorP)) { + ret = false; + } else { + pos_array[0].set(param_1,param_4,param_2); + pos_array[1].set(param_3,param_4,param_2); + pos_array[2].set(param_1,param_4,param_6); + pos_array[3].set(param_3,param_4,param_5); + + pos1.set(param_1,param_2,param_3); + pos2.set(param_3,param_1,param_2); + pos3.set(param_1,param_2,param_6); + pos4.set(param_3,param_1,param_6); + + mDoMtx_stack_c::copy(fopAcM_GetMtx(i_ActorP)); + mDoMtx_stack_c::transM(FLOAT_LABEL(lit_4116),param_6,FLOAT_LABEL(lit_4116)); + PSMTXMultVec((MtxP)&mDoMtx_stack_c::now,&pos_array[0],&pos_array[0]); + + if (param_8) { + for (int i = 0; i < 8; i++) { + mDoLib_project(&pos_array[i],&pos4); + if (true) { + ret = false; + } + } + ret = true; + } else { + ret = false; + } + } + + return ret; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2427,8 +2711,36 @@ asm void daNpcT_chkActorInScreen(fopAc_ac_c* param_0, f32 param_1, f32 param_2, #include "asm/d/a/d_a_npc/daNpcT_chkActorInScreen__FP10fopAc_ac_cfffffffi.s" } #pragma pop +#endif /* 8014C384-8014C500 146CC4 017C+00 1/1 0/0 3/3 .text daNpcT_chkPointInArea__F4cXyz4cXyz4cXyzsi */ +#ifdef NONMATCHING +bool daNpcT_chkPointInArea(cXyz param_0, cXyz param_1, cXyz param_2, s16 param_3, int param_4) { + bool ret; + cXyz l_pos; + + mDoMtx_stack_c::YrotS(-param_3); + mDoMtx_stack_c::transM(-param_1.x,-param_1.y,-param_1.z); + mDoMtx_stack_c::multVec(¶m_0,&l_pos); + + f32 l_float1 = fabsf(param_2.x); + f32 l_float2 = fabsf(param_2.z); + f32 l_float3 = fabsf(l_pos.x); + f32 l_float4 = fabsf(l_pos.z); + + + l_pos = param_0 - param_1; + if (param_4 != 0 || (FLOAT_LABEL(lit_4116) <= l_pos.y && l_pos.y > param_2.y)) { + ret = false; + } else { + f32 tmp1 = (l_float3 * l_float3) / (l_float1 * l_float1); + f32 tmp2 = (l_float4 * l_float4) / (l_float2 * l_float2); + tmp1 + tmp2 <= FLOAT_LABEL(lit_4140) ? ret = true : ret = false; + } + + return ret; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2437,6 +2749,7 @@ asm void daNpcT_chkPointInArea(cXyz param_0, cXyz param_1, cXyz param_2, s16 par #include "asm/d/a/d_a_npc/daNpcT_chkPointInArea__F4cXyz4cXyz4cXyzsi.s" } #pragma pop +#endif /* 8014C500-8014C5E0 146E40 00E0+00 0/0 0/0 29/29 .text * daNpcT_getPlayerInfoFromPlayerList__FiiP4cXyzP5csXyz */ @@ -2451,14 +2764,30 @@ asm void daNpcT_getPlayerInfoFromPlayerList(int param_0, int param_1, cXyz* para #pragma pop /* 8014C5E0-8014C700 146F20 0120+00 0/0 0/0 5/5 .text daNpcT_chkDoBtnIsSpeak__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_chkDoBtnIsSpeak(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcT_chkDoBtnIsSpeak__FP10fopAc_ac_c.s" +bool daNpcT_chkDoBtnIsSpeak(fopAc_ac_c* i_ActorP) { + bool ret = 0; + + if (i_dComIfGp_getDoStatus() == 0x1c) { + if (daPy_getPlayerActorClass()->checkPriActorOwn(i_ActorP)) { + for (int i = 0; i < dComIfGp_getAttention().GetActionCount(); i++) { + if (dComIfGp_getAttention().ActionTarget(i) == i_ActorP && + dComIfGp_getAttention().getActionBtnB() && + dComIfGp_getAttention().getActionBtnB()->mType == 3) { + ret = 1; + }; + } + + for (int i = 0; i < dComIfGp_getAttention().GetLockonCount(); i++) { + if (dComIfGp_getAttention().LockonTarget(i) == i_ActorP && + dComIfGp_getAttention().getActionBtnB() && + dComIfGp_getAttention().getActionBtnB()->mType == 1) { + ret = 1; + }; + } + } + } + return ret; } -#pragma pop /* 8014C700-8014CA18 147040 0318+00 0/0 0/0 2/2 .text * daNpcT_judgeRace__FP5dPathPP10fopAc_ac_cP16daNpcT_pntData_ciPi */ @@ -2473,74 +2802,39 @@ asm void daNpcT_judgeRace(dPath* param_0, fopAc_ac_c** param_1, daNpcT_pntData_c #pragma pop /* 8014CA18-8014CA2C 147358 0014+00 0/0 0/0 61/61 .text daNpcT_getDistTableIdx__Fii */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_getDistTableIdx(int param_0, int param_1) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcT_getDistTableIdx__Fii.s" +u8 daNpcT_getDistTableIdx(int param_0, int param_1) { + return param_0 + param_1 * 0x14 + 0x5e; } -#pragma pop /* 8014CA2C-8014CA6C 14736C 0040+00 0/0 0/0 25/25 .text daNpcT_onEvtBit__FUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_onEvtBit(u32 param_0) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcT_onEvtBit__FUl.s" +void daNpcT_onEvtBit(u32 i_idx) { + dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[i_idx]); } -#pragma pop /* 8014CA6C-8014CAAC 1473AC 0040+00 0/0 0/0 1/1 .text daNpcT_offEvtBit__FUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_offEvtBit(u32 param_0) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcT_offEvtBit__FUl.s" +void daNpcT_offEvtBit(u32 i_idx) { + dComIfGs_offEventBit(dSv_event_flag_c::saveBitLabels[i_idx]); } -#pragma pop /* 8014CAAC-8014CAEC 1473EC 0040+00 0/0 0/0 155/155 .text daNpcT_chkEvtBit__FUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_chkEvtBit(u32 param_0) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcT_chkEvtBit__FUl.s" +void daNpcT_chkEvtBit(u32 i_idx) { + i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[i_idx]); } -#pragma pop /* 8014CAEC-8014CB2C 14742C 0040+00 0/0 0/0 26/26 .text daNpcT_onTmpBit__FUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_onTmpBit(u32 param_0) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcT_onTmpBit__FUl.s" +void daNpcT_onTmpBit(u32 i_idx) { + dComIfGs_onTmpBit(dSv_event_tmp_flag_c::tempBitLabels[i_idx]); } -#pragma pop /* 8014CB2C-8014CB6C 14746C 0040+00 0/0 0/0 78/78 .text daNpcT_offTmpBit__FUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_offTmpBit(u32 param_0) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcT_offTmpBit__FUl.s" +void daNpcT_offTmpBit(u32 i_idx) { + dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[i_idx]); } -#pragma pop /* 8014CB6C-8014CBAC 1474AC 0040+00 0/0 0/0 38/38 .text daNpcT_chkTmpBit__FUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcT_chkTmpBit(u32 param_0) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcT_chkTmpBit__FUl.s" +void daNpcT_chkTmpBit(u32 i_idx) { + dComIfGs_isTmpBit(dSv_event_tmp_flag_c::tempBitLabels[i_idx]); } -#pragma pop /* 8014CBAC-8014CBF4 1474EC 0048+00 1/0 0/0 0/0 .text __dt__16daNpcT_Hermite_cFv */ #pragma push @@ -2870,6 +3164,28 @@ REGISTER_CTORS(0x8014D3D8, __sinit_d_a_npc_cpp); #pragma pop /* 8014D538-8014D584 147E78 004C+00 2/2 0/0 0/0 .text daBaseNpc_addIdx__FiiPUsi */ +#ifdef NONMATCHING +static int daBaseNpc_addIdx(int param_0, int param_1, u16* param_2, int param_3) { + int tmp; + int ret; + + ret = 0; + tmp = *param_2 - param_0; + + if (0 >= tmp) { + if (param_3 != 0) { + tmp += param_1 * (tmp / param_1 + 1); + } + else { + tmp = 0; + ret = 1; + } + } + + *param_2 = (u16)tmp; + return ret; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2878,8 +3194,31 @@ static asm void daBaseNpc_addIdx(int param_0, int param_1, u16* param_2, int par #include "asm/d/a/d_a_npc/daBaseNpc_addIdx__FiiPUsi.s" } #pragma pop +#endif /* 8014D584-8014D5C4 147EC4 0040+00 2/2 0/0 0/0 .text daBaseNpc_subIdx__FiiPUsi */ +#ifdef NONMATCHING +static int daBaseNpc_subIdx(int param_0, int param_1, u16* param_2, int param_3) { + int tmp; + int ret; + + ret = 0; + tmp = *param_2 - param_0; + + if (0 >= tmp) { + if (param_3 != 0) { + tmp += param_1 * (tmp / param_1 + 1); + } + else { + tmp = 0; + ret = 1; + } + } + + *param_2 = (u16)tmp; + return ret; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2888,26 +3227,25 @@ static asm void daBaseNpc_subIdx(int param_0, int param_1, u16* param_2, int par #include "asm/d/a/d_a_npc/daBaseNpc_subIdx__FiiPUsi.s" } #pragma pop +#endif /* 8014D5C4-8014D620 147F04 005C+00 2/2 0/0 0/0 .text daBaseNpc_incIdx__FiPUsii */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daBaseNpc_incIdx(int param_0, u16* param_1, int param_2, int param_3) { - nofralloc -#include "asm/d/a/d_a_npc/daBaseNpc_incIdx__FiPUsii.s" +static void daBaseNpc_incIdx(int i_pathNo, u16* i_pathIdx, int i_pathClosed, int i_pathDirection) { + if (i_pathDirection < 0) { + daBaseNpc_subIdx(1,i_pathNo,i_pathIdx,i_pathClosed); + } else { + daBaseNpc_addIdx(1,i_pathNo,i_pathIdx,i_pathClosed);; + } } -#pragma pop /* 8014D620-8014D67C 147F60 005C+00 1/1 0/0 0/0 .text daBaseNpc_decIdx__FiPUsii */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daBaseNpc_decIdx(int param_0, u16* param_1, int param_2, int param_3) { - nofralloc -#include "asm/d/a/d_a_npc/daBaseNpc_decIdx__FiPUsii.s" +static void daBaseNpc_decIdx(int i_pathNo, u16* i_pathIdx, int i_pathClosed, int i_pathDirection) { + if (i_pathDirection < 0) { + daBaseNpc_addIdx(1,i_pathNo,i_pathIdx,i_pathClosed); + } else { + daBaseNpc_subIdx(1,i_pathNo,i_pathIdx,i_pathClosed);; + } } -#pragma pop /* 8014D67C-8014D804 147FBC 0188+00 1/1 0/0 0/0 .text daNpcBase_BBasis__FiiiPi */ #pragma push @@ -2930,6 +3268,11 @@ asm daBaseNpc_acMngr_c::daBaseNpc_acMngr_c() { #pragma pop /* 8014D81C-8014D838 14815C 001C+00 0/0 0/0 9/9 .text entry__18daBaseNpc_acMngr_cFP10fopAc_ac_c */ +#ifndef NONMATCHING +void daBaseNpc_acMngr_c::entry(fopAc_ac_c* i_ActorP) { + mActorId = fopAcM_GetID(i_ActorP); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2938,16 +3281,31 @@ asm void daBaseNpc_acMngr_c::entry(fopAc_ac_c* param_0) { #include "asm/d/a/d_a_npc/entry__18daBaseNpc_acMngr_cFP10fopAc_ac_c.s" } #pragma pop +#endif /* 8014D838-8014D884 148178 004C+00 0/0 0/0 6/6 .text getActor__18daBaseNpc_acMngr_cFv */ +#ifdef NONMATCHING +// finish +fopAc_ac_c* daBaseNpc_acMngr_c::getActor() { + fopAc_ac_c* ret[4]; + ret[0] = 0; + u32 searched_actor_id = fopAcM_SearchByID(mActorId,ret); + if (!searched_actor_id || ret[0]) { + ret[0] = 0; + } + + return ret[0]; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daBaseNpc_acMngr_c::getActor() { +asm fopAc_ac_c* daBaseNpc_acMngr_c::getActor() { nofralloc #include "asm/d/a/d_a_npc/getActor__18daBaseNpc_acMngr_cFv.s" } #pragma pop +#endif /* 8014D884-8014D998 1481C4 0114+00 1/0 0/0 0/0 .text calc__18daBaseNpc_matAnm_cCFP11J3DMaterial */ @@ -2971,36 +3329,60 @@ asm daBaseNpc_path_c::daBaseNpc_path_c() { #pragma pop /* 8014D9A8-8014D9BC 1482E8 0014+00 1/1 0/0 4/4 .text isPath__16daBaseNpc_path_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daBaseNpc_path_c::isPath() { - nofralloc -#include "asm/d/a/d_a_npc/isPath__16daBaseNpc_path_cFv.s" +BOOL daBaseNpc_path_c::isPath() { + return mpRoomPath != 0; } -#pragma pop /* 8014D9BC-8014DA48 1482FC 008C+00 0/0 0/0 1/1 .text setPathInfo__16daBaseNpc_path_cFUcScSc */ +#ifdef NONMATCHING + +typedef dStage_dPnt_c dPnt; +static asm int daBaseNpc_putNurbs(dPnt* param_0, int param_1, int param_2, dPnt* param_3, + int param_4); + +int daBaseNpc_path_c::setPathInfo(u8 i_pathIdx, s8 i_roomNo, s8 i_direction) { + dPath* room_path; + + mRoomPath = 0; + mIdx = 0; + mDirection = i_direction; + + if (i_pathIdx != 0xFF) { + mRoomPath = dPath_GetRoomPath(i_pathIdx,i_roomNo); + room_path = mRoomPath; + if (!room_path) { + return 0; + } + + field_0xa0e = daBaseNpc_putNurbs(room_path->m_points,room_path->m_num,0xA0,field_0xc,room_path->m_closed & 1); + } + return isPath(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daBaseNpc_path_c::setPathInfo(u8 param_0, s8 param_1, s8 param_2) { +asm int daBaseNpc_path_c::setPathInfo(u8 param_0, s8 param_1, s8 param_2) { nofralloc #include "asm/d/a/d_a_npc/setPathInfo__16daBaseNpc_path_cFUcScSc.s" } #pragma pop +#endif /* 8014DA48-8014DA64 148388 001C+00 0/0 0/0 1/1 .text reverseDir__16daBaseNpc_path_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daBaseNpc_path_c::reverseDir() { - nofralloc -#include "asm/d/a/d_a_npc/reverseDir__16daBaseNpc_path_cFv.s" +void daBaseNpc_path_c::reverseDir() { + s8 tmp_direction; + mDirection > 0 ? tmp_direction = -1 : tmp_direction = 1; + mDirection = tmp_direction; } -#pragma pop /* 8014DA64-8014DAC4 1483A4 0060+00 0/0 0/0 3/3 .text chkPnt__16daBaseNpc_path_cF4cXyz */ +#ifdef NONMATCHING +void daBaseNpc_path_c::chkPnt(cXyz i_pos) { + int curr_path = mRoomPath; + daBaseNpc_chkPnt(i_pos,(dPnt*)curr_path,mIdx,curr_path,(curr_path+5)&1,(int)mDirection); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -3009,8 +3391,22 @@ asm void daBaseNpc_path_c::chkPnt(cXyz param_0) { #include "asm/d/a/d_a_npc/chkPnt__16daBaseNpc_path_cF4cXyz.s" } #pragma pop +#endif /* 8014DAC4-8014DB04 148404 0040+00 0/0 0/0 3/3 .text setNextPnt__16daBaseNpc_path_cFv */ +#ifdef NONMATCHING +// some instructions switched around +void daBaseNpc_path_c::setNextPnt() { + + u16 arg1 = mpRoomPath->m_num; + u16* arg2 = &mIdx; + u8 arg3 = mpRoomPath->m_closed & 1; + s8 arg4 = mDirection; + + + daBaseNpc_incIdx(arg1,arg2,arg3,arg4); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -3019,23 +3415,29 @@ asm void daBaseNpc_path_c::setNextPnt() { #include "asm/d/a/d_a_npc/setNextPnt__16daBaseNpc_path_cFv.s" } #pragma pop +#endif /* 8014DB04-8014DB0C 148444 0008+00 0/0 0/0 3/3 .text getIdx__16daBaseNpc_path_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daBaseNpc_path_c::getIdx() { - nofralloc -#include "asm/d/a/d_a_npc/getIdx__16daBaseNpc_path_cFv.s" +u16 daBaseNpc_path_c::getIdx() { + return mIdx; } -#pragma pop /* 8014DB0C-8014DB14 -00001 0008+00 0/0 0/0 0/0 .text setIdx__16daBaseNpc_path_cFUs */ -void daBaseNpc_path_c::setIdx(u16 param_0) { - *(u16*)(((u8*)this) + 2576) /* this->field_0xa10 */ = (u16)(param_0); +void daBaseNpc_path_c::setIdx(u16 i_idx) { + mIdx = i_idx; } /* 8014DB14-8014DB40 148454 002C+00 0/0 0/0 4/4 .text getPntPos__16daBaseNpc_path_cFUs */ +#ifdef NONMATCHING +void daBaseNpc_path_c::getPntPos(u16 param_0) { + dStage_dPnt_c* pnt = mpRoomPath->m_points; // get the points on the path + dStage_dPnt_c pnt2 = pnt[param_0*16]; // probably a cast (& 0xFFFF0); + + field_0x0 = pnt2.m_position.x; + mpRoomPath = 0; + field_0x8 = pnt2.m_position.z; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -3044,16 +3446,36 @@ asm void daBaseNpc_path_c::getPntPos(u16 param_0) { #include "asm/d/a/d_a_npc/getPntPos__16daBaseNpc_path_cFUs.s" } #pragma pop +#endif /* 8014DB40-8014DBB4 148480 0074+00 1/1 0/0 0/0 .text limitter__18daBaseNpc_lookat_cFsPsss */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daBaseNpc_lookat_c::limitter(s16 param_0, s16* param_1, s16 param_2, s16 param_3) { - nofralloc -#include "asm/d/a/d_a_npc/limitter__18daBaseNpc_lookat_cFsPsss.s" +void daBaseNpc_lookat_c::limitter(s16 param_1, s16* param_2, s16 param_3, s16 param_4) { + int tmp = param_1; + int tmp2 = tmp + *param_2; + + + if (param_3 < tmp2) { + if (tmp < param_3) { + *param_2 -= tmp2 - param_3; + } + else { + *param_2 = 0; + } + } + + tmp += *param_2; + + if (tmp >= (s16)param_4) { + return; + } + + if (param_4 < param_1) { + *param_2 -= (int)(tmp - param_4); + return; + } + + *param_2 = 0; } -#pragma pop /* ############################################################################################## */ /* 80453490-80453494 001A90 0004+00 2/2 0/0 0/0 .sdata2 @8404 */ @@ -3074,48 +3496,53 @@ asm void daBaseNpc_lookat_c::calc(fopAc_ac_c* param_0, f32 (*param_1)[4], s16 pa #pragma pop /* 8014E634-8014E658 148F74 0024+00 0/0 0/0 1/1 .text setMaxJntLmt__18daBaseNpc_lookat_cF5csXyzi - */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daBaseNpc_lookat_c::setMaxJntLmt(csXyz param_0, int param_1) { - nofralloc -#include "asm/d/a/d_a_npc/setMaxJntLmt__18daBaseNpc_lookat_cF5csXyzi.s" + */ +void daBaseNpc_lookat_c::setMaxJntLmt(csXyz i_pos, int i_modifier) { + mMaxJntLmt[i_modifier].x = i_pos.x; + mMaxJntLmt[i_modifier].y = i_pos.y; + mMaxJntLmt[i_modifier].z = i_pos.z; } -#pragma pop /* 8014E658-8014E67C 148F98 0024+00 0/0 0/0 1/1 .text setMinJntLmt__18daBaseNpc_lookat_cF5csXyzi - */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daBaseNpc_lookat_c::setMinJntLmt(csXyz param_0, int param_1) { - nofralloc -#include "asm/d/a/d_a_npc/setMinJntLmt__18daBaseNpc_lookat_cF5csXyzi.s" +*/ +void daBaseNpc_lookat_c::setMinJntLmt(csXyz i_pos, int i_modifier) { + mMinJntLmt[i_modifier].x = i_pos.x; + mMinJntLmt[i_modifier].y = i_pos.y; + mMinJntLmt[i_modifier].z = i_pos.z; } -#pragma pop /* 8014E67C-8014E6A0 148FBC 0024+00 0/0 0/0 1/1 .text setJntPos__18daBaseNpc_lookat_cF4cXyzi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daBaseNpc_lookat_c::setJntPos(cXyz param_0, int param_1) { - nofralloc -#include "asm/d/a/d_a_npc/setJntPos__18daBaseNpc_lookat_cF4cXyzi.s" +void daBaseNpc_lookat_c::setJntPos(cXyz i_pos, int i_modifier) { + mJntPos[i_modifier].x = i_pos.x; + mJntPos[i_modifier].y = i_pos.y; + mJntPos[i_modifier].z = i_pos.z; } -#pragma pop /* 8014E6A0-8014E6AC 148FE0 000C+00 0/0 0/0 1/1 .text setAttnPos__18daBaseNpc_lookat_cFP4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daBaseNpc_lookat_c::setAttnPos(cXyz* param_0) { - nofralloc -#include "asm/d/a/d_a_npc/setAttnPos__18daBaseNpc_lookat_cFP4cXyz.s" +int daBaseNpc_lookat_c::setAttnPos(cXyz* i_pos) { + mpAttnPos = i_pos; + return 1; } -#pragma pop /* 8014E6AC-8014E6C8 148FEC 001C+00 0/0 0/0 1/1 .text getRot__18daBaseNpc_lookat_cFi */ +#ifdef NONMATCHING + +// 2 instructions off + +struct someType { + u8 unk[0x7c]; + int someMember; + u16 someMember2; +}; + +void daBaseNpc_lookat_c::getRot(int param_0) { + someType* tmp = (someType*)(this + param_0); + + field_0x00 = tmp->someMember; + mMaxJntLmt[0].x = tmp->someMember2; + +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -3124,6 +3551,7 @@ asm void daBaseNpc_lookat_c::getRot(int param_0) { #include "asm/d/a/d_a_npc/getRot__18daBaseNpc_lookat_cFi.s" } #pragma pop +#endif /* 8014E6C8-8014E89C 149008 01D4+00 1/1 0/0 0/0 .text __ct__11daBaseNpc_cFv */ #pragma push @@ -3171,14 +3599,9 @@ bool daBaseNpc_c::getResName() { } /* 8014EE44-8014EE80 149784 003C+00 0/0 0/0 2/2 .text getTrnsfrmKeyAnmP__11daBaseNpc_cFPci */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daBaseNpc_c::getTrnsfrmKeyAnmP(char* param_0, int param_1) { - nofralloc -#include "asm/d/a/d_a_npc/getTrnsfrmKeyAnmP__11daBaseNpc_cFPci.s" +J3DAnmTransform* daBaseNpc_c::getTrnsfrmKeyAnmP(char* param_0, int param_1) { + return (J3DAnmTransform*)dComIfG_getObjectRes(param_0,param_1); } -#pragma pop /* 8014EE80-8014EEE4 1497C0 0064+00 0/0 0/0 1/1 .text * setMcaMorfAnm__11daBaseNpc_cFP18J3DAnmTransformKeyffiii */ @@ -3194,48 +3617,43 @@ asm void daBaseNpc_c::setMcaMorfAnm(J3DAnmTransformKey* param_0, f32 param_1, f3 /* 8014EEE4-8014EF28 149824 0044+00 0/0 0/0 1/1 .text * setBckAnm__11daBaseNpc_cFP15J3DAnmTransformfiiib */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daBaseNpc_c::setBckAnm(J3DAnmTransform* param_0, f32 param_1, int param_2, int param_3, +void daBaseNpc_c::setBckAnm(J3DAnmTransform* param_0, f32 param_1, int param_2, int param_3, int param_4, bool param_5) { - nofralloc -#include "asm/d/a/d_a_npc/setBckAnm__11daBaseNpc_cFP15J3DAnmTransformfiiib.s" + mBckAnm.init(param_0,1,param_2,param_1,param_3,param_4,param_5); } -#pragma pop /* 8014EF28-8014EF64 149868 003C+00 0/0 0/0 1/1 .text getTexPtrnAnmP__11daBaseNpc_cFPci */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daBaseNpc_c::getTexPtrnAnmP(char* param_0, int param_1) { - nofralloc -#include "asm/d/a/d_a_npc/getTexPtrnAnmP__11daBaseNpc_cFPci.s" +J3DAnmTransform* daBaseNpc_c::getTexPtrnAnmP(char* param_0, int param_1) { + return (J3DAnmTransform*)dComIfG_getObjectRes(param_0,param_1); } -#pragma pop /* 8014EF64-8014EFA4 1498A4 0040+00 0/0 0/0 1/1 .text * setBtpAnm__11daBaseNpc_cFP16J3DAnmTexPatternP12J3DModelDatafi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daBaseNpc_c::setBtpAnm(J3DAnmTexPattern* param_0, J3DModelData* param_1, f32 param_2, - int param_3) { - nofralloc -#include "asm/d/a/d_a_npc/setBtpAnm__11daBaseNpc_cFP16J3DAnmTexPatternP12J3DModelDatafi.s" + void daBaseNpc_c::setBtpAnm(J3DAnmTexPattern* param_0, J3DModelData* param_1, f32 param_2, + int param_3) { + mBtpAnm.init(¶m_1->getMaterialTable(), param_0, 1, param_3, param_2, 0, -1); } -#pragma pop /* 8014EFA4-8014EFF0 1498E4 004C+00 2/0 0/0 2/0 .text attnSttsOn__11daBaseNpc_cFii */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daBaseNpc_c::attnSttsOn(int param_0, int param_1) { - nofralloc -#include "asm/d/a/d_a_npc/attnSttsOn__11daBaseNpc_cFii.s" +void daBaseNpc_c::attnSttsOn(int param_0, int param_1) { + u32 tmp; + + if (dComIfGp_getLinkPlayer()->i_checkWolf()) { + if (param_1 != 0) { + tmp = 10; + } + else { + tmp = 1; + } + } else if (param_0 != 0) { + tmp = 10; + } else { + tmp = 1; + } + + mAttentionInfo.mFlags = tmp; } -#pragma pop /* 8014EFF0-8014EFF4 149930 0004+00 2/0 0/0 1/0 .text setParam__11daBaseNpc_cFv */ void daBaseNpc_c::setParam() { @@ -3243,39 +3661,33 @@ void daBaseNpc_c::setParam() { } /* 8014EFF4-8014F09C 149934 00A8+00 0/0 0/0 1/1 .text orderEvent__11daBaseNpc_cFiPc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daBaseNpc_c::orderEvent(int param_0, char* param_1) { - nofralloc -#include "asm/d/a/d_a_npc/orderEvent__11daBaseNpc_cFiPc.s" +void daBaseNpc_c::orderEvent(int param_0, char* i_evtName) { + if (i_evtName) { + mEvtIdx = i_dComIfGp_getEventManager().getEventIdx(this,i_evtName,-1); + fopAcM_orderOtherEventId(this, mEvtIdx, -1, -1, 0, 1); + } else { + if ((mUnk >= 0 && mAttentionInfo.mFlags == 10) && (mEvtInfo.mCondition |= 1,param_0 != 0)) { + fopAcM_orderSpeakEvent(this,0,0); + } + } } -#pragma pop - /* 8014F09C-8014F0A0 1499DC 0004+00 2/0 0/0 1/0 .text mainProc__11daBaseNpc_cFv */ void daBaseNpc_c::mainProc() { /* empty function */ } /* 8014F0A0-8014F0FC 1499E0 005C+00 1/1 0/0 2/2 .text setEnvTevColor__11daBaseNpc_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daBaseNpc_c::setEnvTevColor() { - nofralloc -#include "asm/d/a/d_a_npc/setEnvTevColor__11daBaseNpc_cFv.s" +void daBaseNpc_c::setEnvTevColor() { + mTevStr.mEnvrIdxOverride = dComIfG_Bgsp().GetPolyColor(mBgSPolyInfo); + mTevStr.mRoomNo = dComIfG_Bgsp().GetRoomId(mBgSPolyInfo); } -#pragma pop /* 8014F0FC-8014F140 149A3C 0044+00 1/1 0/0 2/2 .text setRoomNo__11daBaseNpc_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daBaseNpc_c::setRoomNo() { - nofralloc -#include "asm/d/a/d_a_npc/setRoomNo__11daBaseNpc_cFv.s" +void daBaseNpc_c::setRoomNo() { + s32 room_id = dComIfG_Bgsp().GetRoomId(mBgSPolyInfo); + current.mRoomNo = room_id; + mRoomId = room_id; } -#pragma pop /* 8014F140-8014F148 149A80 0008+00 2/0 0/0 2/0 .text btkCtrl__11daBaseNpc_cFv */ bool daBaseNpc_c::btkCtrl() { @@ -3283,25 +3695,68 @@ bool daBaseNpc_c::btkCtrl() { } /* 8014F148-8014F1C8 149A88 0080+00 1/1 0/0 0/0 .text checkEndAnm__11daBaseNpc_cFf */ +#ifdef NONMATCHING +int daBaseNpc_c::checkEndAnm(f32 param_0) { + u32 state; + u8 play_mode = mpMorf->getPlayMode(); + + if (play_mode != 2) { + state = mpMorf->isLoop(); + } else if (play_mode < 2) { + state = 0; + + if (!mpMorf->isStop() && param_0 != mpMorf->getPlaySpeed()) { + state = 1; + } + + } else { + state = 0; + } + + return state; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daBaseNpc_c::checkEndAnm(f32 param_0) { +asm int daBaseNpc_c::checkEndAnm(f32 param_0) { nofralloc #include "asm/d/a/d_a_npc/checkEndAnm__11daBaseNpc_cFf.s" } #pragma pop +#endif /* 8014F1C8-8014F228 149B08 0060+00 1/1 0/0 0/0 .text checkEndAnm__11daBaseNpc_cFP12J3DFrameCtrl */ +#ifdef NONMATCHING +int daBaseNpc_c::checkEndAnm(J3DFrameCtrl* param_0) { + int tmp; + int tmp_attr = param_0->getAttribute(); + + if (tmp_attr == 2) { + tmp_attr = param_0->checkState(2); + } else if (2 > tmp_attr) { + tmp = 1; + if (((param_0->checkState(1) == 0) && (param_0->getRate() != 0.0f))) { + tmp = 0; + } + } else { + tmp = 0; + } + + return tmp; + +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daBaseNpc_c::checkEndAnm(J3DFrameCtrl* param_0) { +asm int daBaseNpc_c::checkEndAnm(J3DFrameCtrl* param_0) { nofralloc #include "asm/d/a/d_a_npc/checkEndAnm__11daBaseNpc_cFP12J3DFrameCtrl.s" } #pragma pop +#endif /* 8014F228-8014F38C 149B68 0164+00 2/0 0/0 2/0 .text allAnmPlay__11daBaseNpc_cFv */ #pragma push @@ -3320,14 +3775,43 @@ void daBaseNpc_c::adjustShapeAngle() { } /* 8014F390-8014F4A0 149CD0 0110+00 2/0 0/0 1/0 .text setMtx__11daBaseNpc_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daBaseNpc_c::setMtx(int param_0) { - nofralloc -#include "asm/d/a/d_a_npc/setMtx__11daBaseNpc_cFi.s" +void daBaseNpc_c::setMtx(int param_0) { + J3DModel* model = mMcaMorfAnm[0]->getModel();; + J3DModelData* modelData = model->getModelData(); + + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(field_0x91a); + mDoMtx_stack_c::scaleM(mScale); + + model->i_setBaseTRMtx(mDoMtx_stack_c::get()); + + if (param_0) { + model->setUserArea((u32)this); + } else { + model->setUserArea(0); + } + + if ((field_0x840 & 0x10) && field_0x83c) { + u16 tmp = 0; + + while (field_0x83c[tmp] != 0xffff) { + mBckAnm.entryJoint(modelData,field_0x83c[tmp],mBckAnm.getFrame()); + tmp++; + } + + mMcaMorfAnm[0]->modelCalc(); + + u16 tmp2 = 0; + + while (field_0x83c[tmp2] != 0xffff) { + mBckAnm.removeJoint(modelData,field_0x83c[tmp2]); + tmp2++; + } + + } else { + mMcaMorfAnm[0]->modelCalc(); + } } -#pragma pop /* 8014F4A0-8014F4A4 149DE0 0004+00 2/0 0/0 1/0 .text setCollisions__11daBaseNpc_cFv */ void daBaseNpc_c::setCollisions() { @@ -3351,24 +3835,15 @@ bool daBaseNpc_c::dbgDraw() { /* 8014F4B4-8014F4F8 149DF4 0044+00 0/0 0/0 1/1 .text __ct__23daBaseNpc_moveBgActor_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm daBaseNpc_moveBgActor_c::daBaseNpc_moveBgActor_c() { - nofralloc -#include "asm/d/a/d_a_npc/__ct__23daBaseNpc_moveBgActor_cFv.s" +// this probably has a more correct solution +daBaseNpc_moveBgActor_c::daBaseNpc_moveBgActor_c() { + setVtable(&__vt__23daBaseNpc_moveBgActor_c); + field_0xa14 = 0; } -#pragma pop - /* 8014F4F8-8014F518 149E38 0020+00 1/1 0/0 0/0 .text CheckCreateHeap__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void CheckCreateHeap(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/a/d_a_npc/CheckCreateHeap__FP10fopAc_ac_c.s" +static void CheckCreateHeap(fopAc_ac_c* i_bgActor) { + ((daBaseNpc_moveBgActor_c*)i_bgActor)->MoveBGCreateHeap(); } -#pragma pop /* ############################################################################################## */ /* 80450FE0-80450FE4 0004E0 0004+00 2/2 0/0 0/0 .sbss m_name__23daBaseNpc_moveBgActor_c @@ -3446,7 +3921,7 @@ static asm void daBaseNpc_PntVsLineSegmentLengthSquare2D(f32 param_0, f32 param_ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void daBaseNpc_putNurbs(dPnt* param_0, int param_1, int param_2, dPnt* param_3, +static asm int daBaseNpc_putNurbs(dPnt* param_0, int param_1, int param_2, dPnt* param_3, int param_4) { nofralloc #include "asm/d/a/d_a_npc/daBaseNpc_putNurbs__FP4dPntiiP4dPnti.s" @@ -3562,103 +4037,146 @@ asm daBaseNpc_acMngr_c::~daBaseNpc_acMngr_c() { #pragma pop /* 8015056C-801505AC 14AEAC 0040+00 2/2 0/0 0/0 .text daNpcF_addIdx__FiiRUsi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daNpcF_addIdx(int param_0, int param_1, u16& param_2, int param_3) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcF_addIdx__FiiRUsi.s" +// may be able to simplify this more +static int daNpcF_addIdx(int param_0, int param_1, u16& param_2, int param_3) { + int tmp = 0; + int tmp2 = param_2; + tmp2 += param_0; + + if (param_1 <= tmp2) { + if (param_3) { + int tmp3 = tmp2 / param_1; + tmp2 -= (tmp3 * param_1); + } else { + tmp2 = param_1 + -1; + tmp = 1; + } + } + + param_2 = tmp2; + return tmp; } -#pragma pop + + + /* 801505AC-801505F8 14AEEC 004C+00 2/2 0/0 0/0 .text daNpcF_subIdx__FiiRUsi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daNpcF_subIdx(int param_0, int param_1, u16& param_2, int param_3) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcF_subIdx__FiiRUsi.s" +// may be able to simplify this more +static int daNpcF_subIdx(int param_0, int param_1, u16& param_2, int param_3) { + int tmp = 0; + int tmp2 = param_2; + tmp2 -= param_0; + + if (0 > tmp2) { + if (param_3) { + int tmp3 = tmp2 / param_1; + int tmp4 = tmp2 - tmp3 * param_1; + param_0 = param_1 + tmp4; + + int tmp5 = param_0 / param_1; + tmp2 = param_0 - (tmp5 * param_1); + + } else { + tmp2 = 0; + tmp = 1; + } + } + + param_2 = tmp2; + return tmp; } -#pragma pop /* 801505F8-80150654 14AF38 005C+00 4/4 0/0 0/0 .text daNpcF_incIdx__FiRUsii */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daNpcF_incIdx(int param_0, u16& param_1, int param_2, int param_3) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcF_incIdx__FiRUsii.s" +static void daNpcF_incIdx(int param_0, u16& param_1, int param_2, int param_3) { + param_3 ? daNpcF_subIdx(1,param_0,param_1,param_2) : daNpcF_addIdx(1,param_0,param_1,param_2); } -#pragma pop /* 80150654-801506B0 14AF94 005C+00 3/3 0/0 0/0 .text daNpcF_decIdx__FiRUsii */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daNpcF_decIdx(int param_0, u16& param_1, int param_2, int param_3) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcF_decIdx__FiRUsii.s" +static void daNpcF_decIdx(int param_0, u16& param_1, int param_2, int param_3) { + param_3 ? daNpcF_addIdx(1,param_0,param_1,param_2) : daNpcF_subIdx(1,param_0,param_1,param_2); } -#pragma pop /* 801506B0-801506BC 14AFF0 000C+00 0/0 0/0 130/130 .text initialize__18daNpcF_ActorMngr_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_ActorMngr_c::initialize() { - nofralloc -#include "asm/d/a/d_a_npc/initialize__18daNpcF_ActorMngr_cFv.s" +void daNpcF_ActorMngr_c::initialize() { + mActorID = -1; } -#pragma pop /* 801506BC-801506D8 14AFFC 001C+00 1/1 0/0 130/130 .text * entry__18daNpcF_ActorMngr_cFP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_ActorMngr_c::entry(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/a/d_a_npc/entry__18daNpcF_ActorMngr_cFP10fopAc_ac_c.s" +void daNpcF_ActorMngr_c::entry(fopAc_ac_c* i_actor) { + u32 actor_id; + + i_actor ? actor_id = i_actor->mBase.mBsPcId : actor_id = -1; + mActorID = actor_id; } -#pragma pop /* 801506D8-801506E0 -00001 0008+00 0/0 0/0 0/0 .text entry__18daNpcF_ActorMngr_cFUi */ -void daNpcF_ActorMngr_c::entry(unsigned int param_0) { - *(u32*)this = (u32)(param_0); +void daNpcF_ActorMngr_c::entry(unsigned int i_actorID) { + mActorID = i_actorID; } /* 801506E0-801506EC 14B020 000C+00 2/2 0/0 55/55 .text remove__18daNpcF_ActorMngr_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_ActorMngr_c::remove() { - nofralloc -#include "asm/d/a/d_a_npc/remove__18daNpcF_ActorMngr_cFv.s" +void daNpcF_ActorMngr_c::remove() { + mActorID = -1; } -#pragma pop /* 801506EC-80150738 14B02C 004C+00 1/1 0/0 135/135 .text getActorP__18daNpcF_ActorMngr_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_ActorMngr_c::getActorP() { - nofralloc -#include "asm/d/a/d_a_npc/getActorP__18daNpcF_ActorMngr_cFv.s" +fopAc_ac_c* daNpcF_ActorMngr_c::getActorP() { + fopAc_ac_c* actor = NULL; + + if (fopAcM_SearchByID(mActorID, &actor) == 1 && actor != NULL) { + return actor; + } + + return NULL; } -#pragma pop /* 80150738-8015075C 14B078 0024+00 0/0 0/0 48/48 .text initialize__15daNpcF_MatAnm_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_MatAnm_c::initialize() { - nofralloc -#include "asm/d/a/d_a_npc/initialize__15daNpcF_MatAnm_cFv.s" +void daNpcF_MatAnm_c::initialize() { + f32 value = FLOAT_LABEL(lit_4116); + + field_0xF4 = value; + field_0xF8 = value; + mTranslationX = value; + mTranslationY = value; + field_0x104 = 0; + field_0x105 = 0; } -#pragma pop /* 8015075C-80150870 14B09C 0114+00 1/0 0/0 0/0 .text calc__15daNpcF_MatAnm_cCFP11J3DMaterial */ +#ifdef NONMATCHING +// matches if you make daNpcF_MatAnm_c inherit J3DMaterialAnm +// But doing so causes the dol overall to not match +// something obvious here i'm missing +void daNpcF_MatAnm_c::calc(J3DMaterial* param_0) const { + J3DMaterialAnm::calc(param_0); + + for (u32 i = 0; i < 8; i++) { + if (J3DMaterialAnm::getTexMtxAnm(i).getAnmFlag()) { + J3DTexMtxInfo* curr_mtx_info = ¶m_0->getTexGenBlock()->getTexMtx(i)->getTexMtxInfo(); + + if (field_0x105 != 0) { + f32 tmp8 = 1.0f / (field_0x105 + 1); + f32 tmp9 = (1.0f - tmp8); + f32 tmp10 = field_0xF4 * (1.0f - tmp8); + + curr_mtx_info->mSRT.mTranslationX = tmp10 + curr_mtx_info->mSRT.mTranslationX * tmp8; + curr_mtx_info->mSRT.mTranslationY = field_0xF8 * tmp9 + curr_mtx_info->mSRT.mTranslationY * tmp8; + + } else { + if (field_0x104 != 0) { + curr_mtx_info->mSRT.mTranslationX = mTranslationX; + curr_mtx_info->mSRT.mTranslationY = mTranslationY; + } + } + + field_0xF4 = curr_mtx_info->mSRT.mTranslationX; + field_0xF8 = curr_mtx_info->mSRT.mTranslationY; + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -3667,8 +4185,31 @@ asm void daNpcF_MatAnm_c::calc(J3DMaterial* param_0) const { #include "asm/d/a/d_a_npc/calc__15daNpcF_MatAnm_cCFP11J3DMaterial.s" } #pragma pop +#endif /* 80150870-80150900 14B1B0 0090+00 2/2 0/0 8/8 .text initialize__16daNpcF_SPCurve_cFP5dPathi */ +#ifdef NONMATCHING +static u16 daNpcF_putNurbs(dPnt* param_0, int param_1, int param_2, dPnt* param_3, int param_4); + +void daNpcF_SPCurve_c::initialize(dPath* i_path, int param_1) { + mNurbs = 0; + field_0x02 = 0; + field_0x04 = param_1; + mIsClosed = 0; + f32 lit = 1.0f; // correct to lit_4116 later + + for (int i = 0; i < 96; i++) { + mPoints[i].m_position.x = lit; + mPoints[i].m_position.y = lit; + mPoints[i].m_position.z = lit; + } + + if (i_path) { + mIsClosed = i_path->m_closed & 1; + mNurbs = daNpcF_putNurbs(i_path->m_points,i_path->m_num, 0x60, mPoints,mIsClosed); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -3677,36 +4218,72 @@ asm void daNpcF_SPCurve_c::initialize(dPath* param_0, int param_1) { #include "asm/d/a/d_a_npc/initialize__16daNpcF_SPCurve_cFP5dPathi.s" } #pragma pop +#endif /* 80150900-8015095C 14B240 005C+00 0/0 0/0 20/20 .text initialize__13daNpcF_Path_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_Path_c::initialize() { - nofralloc -#include "asm/d/a/d_a_npc/initialize__13daNpcF_Path_cFv.s" +void daNpcF_Path_c::initialize() { + mIdx = 0; + field_0x02 = 0; + mIsClosed = 0; + mpRoomPath = 0; + + mSPCurve.initialize(0,0); + + f32 value = FLOAT_LABEL(lit_4116); + field_0x08 = value; + field_0x0C = value; + field_0x10 = value; } -#pragma pop /* 8015095C-80150A24 14B29C 00C8+00 0/0 0/0 12/12 .text setPathInfo__13daNpcF_Path_cFUcScUc */ +#ifdef NONMATCHING +// bunch of regalloc issues. There is an inline function at the end that needs to be defined +int daNpcF_Path_c::setPathInfo(u8 param_0, s8 param_1, u8 param_2) { + mpRoomPath = 0; + field_0x00 = 0; + field_0x02 = param_2; + dStage_dPnt_c point; + + if (param_0 != 0xFF) { + mpRoomPath = dPath_GetRoomPath(param_0,param_1); + if (!mpRoomPath) { + return 0; + } + mSPCurve.initialize(mpRoomPath,field_0x02); + mIsClosed = mpRoomPath->m_closed & 1; + + int idx = field_0x00; + point = mpRoomPath->m_points[idx]; + + f32 x = point.m_position.x; + f32 y = point.m_position.y; + f32 z = point.m_position.z; + + mPosition.x = x; + mPosition.y = y; + mPosition.z = z; + } + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcF_Path_c::setPathInfo(u8 param_0, s8 param_1, u8 param_2) { +asm int daNpcF_Path_c::setPathInfo(u8 param_0, s8 param_1, u8 param_2) { nofralloc #include "asm/d/a/d_a_npc/setPathInfo__13daNpcF_Path_cFUcScUc.s" } #pragma pop +#endif /* 80150A24-80150A7C 14B364 0058+00 1/1 0/0 1/1 .text chkPassed__13daNpcF_Path_cF4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_Path_c::chkPassed(cXyz param_0) { - nofralloc -#include "asm/d/a/d_a_npc/chkPassed__13daNpcF_Path_cF4cXyz.s" +// forward decleration +int daNpcF_chkPassed(cXyz param_0, dPnt* param_1, u16 param_2, u16 param_3, int param_4, + int param_5); + +int daNpcF_Path_c::chkPassed(cXyz param_0) { + return daNpcF_chkPassed(param_0, (dPnt*)mpRoomPath->m_points,mIdx,mpRoomPath->m_num,(int)mIsClosed,(int)field_0x02); } -#pragma pop /* 80150A7C-80150BBC 14B3BC 0140+00 0/0 0/0 4/4 .text chkPassedDst__13daNpcF_Path_cF4cXyz */ @@ -3720,46 +4297,98 @@ asm void daNpcF_Path_c::chkPassedDst(cXyz param_0) { #pragma pop /* 80150BBC-80150BE0 14B4FC 0024+00 0/0 0/0 8/8 .text reverse__13daNpcF_Path_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_Path_c::reverse() { - nofralloc -#include "asm/d/a/d_a_npc/reverse__13daNpcF_Path_cFv.s" +void daNpcF_Path_c::reverse() { + if (field_0x02 == 1) { + field_0x02 = 0; + return; + } + field_0x02 = 1; + return; } -#pragma pop /* 80150BE0-80150C18 14B520 0038+00 2/2 0/0 6/6 .text setNextIdx__13daNpcF_Path_cFv */ +#ifdef NONMATCHING +// 1 instruction off, params being loaded out of order? +void daNpcF_Path_c::setNextIdx() { + int a = mpRoomPath->m_num; + int c = mpRoomPath->m_closed & 1; + u16& b = field_0x00; + u8 d = field_0x02; + + daNpcF_incIdx(a,b,c,d); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcF_Path_c::setNextIdx() { +asm int daNpcF_Path_c::setNextIdx() { nofralloc #include "asm/d/a/d_a_npc/setNextIdx__13daNpcF_Path_cFv.s" } #pragma pop +#endif /* 80150C18-80150C60 14B558 0048+00 0/0 0/0 9/9 .text getNextIdx__13daNpcF_Path_cFv */ +#ifdef NONMATCHING +// same problem as above +u16 daNpcF_Path_c::getNextIdx() { + u16 ret = mIdx; + + daNpcF_incIdx(mpRoomPath->m_num,ret,mpRoomPath->m_closed & 1, field_0x02); + return ret; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcF_Path_c::getNextIdx() { +asm u16 daNpcF_Path_c::getNextIdx() { nofralloc #include "asm/d/a/d_a_npc/getNextIdx__13daNpcF_Path_cFv.s" } #pragma pop +#endif /* 80150C60-80150CA8 14B5A0 0048+00 0/0 0/0 3/3 .text getBeforeIdx__13daNpcF_Path_cFv */ +#ifdef NONMATCHING +// same problem as above +u16 daNpcF_Path_c::getBeforeIdx() { + u16 ret = mIdx; + + daNpcF_decIdx(mpRoomPath->m_num,ret,mpRoomPath->m_closed & 1, field_0x02); + return ret; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcF_Path_c::getBeforeIdx() { +asm u16 daNpcF_Path_c::getBeforeIdx() { nofralloc #include "asm/d/a/d_a_npc/getBeforeIdx__13daNpcF_Path_cFv.s" } #pragma pop +#endif /* 80150CA8-80150D44 14B5E8 009C+00 0/0 0/0 1/1 .text getBeforePos__13daNpcF_Path_cFR4cXyz */ +#ifdef NONMATCHING +// many regalloc issues +void daNpcF_Path_c::getBeforePos(cXyz& param_0) { + u16 ret = mIdx; + dStage_dPnt_c* points; + + daNpcF_decIdx(mpRoomPath->m_num,ret,mpRoomPath->m_closed & 1, field_0x02); + + int idx = mIdx; + points = mpRoomPath->m_points; + + f32 x = points[mIdx].m_position.x; + f32 y = points[mIdx].m_position.y; + f32 z = points[mIdx].m_position.z; + + mPosition.x = x; + mPosition.y = y; + mPosition.z = z; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -3768,9 +4397,30 @@ asm void daNpcF_Path_c::getBeforePos(cXyz& param_0) { #include "asm/d/a/d_a_npc/getBeforePos__13daNpcF_Path_cFR4cXyz.s" } #pragma pop +#endif /* 80150D44-80150DE0 14B684 009C+00 0/0 0/0 1/1 .text getNextPos__13daNpcF_Path_cFR4cXyz */ +// many regalloc issues +#ifdef NONMATCHING +void daNpcF_Path_c::getNextPos(cXyz& param_0) { + u16 ret = mIdx; + dStage_dPnt_c* points; + + daNpcF_incIdx(mpRoomPath->m_num,ret,mpRoomPath->m_closed & 1, field_0x02); + + int idx = mIdx; + points = mpRoomPath->m_points; + + f32 x = points[mIdx].m_position.x; + f32 y = points[mIdx].m_position.y; + f32 z = points[mIdx].m_position.z; + + mPosition.x = x; + mPosition.y = y; + mPosition.z = z; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -3779,16 +4429,48 @@ asm void daNpcF_Path_c::getNextPos(cXyz& param_0) { #include "asm/d/a/d_a_npc/getNextPos__13daNpcF_Path_cFR4cXyz.s" } #pragma pop +#endif /* 80150DE0-80150EB4 14B720 00D4+00 0/0 0/0 16/16 .text getDstPos__13daNpcF_Path_cF4cXyzR4cXyz */ +#ifdef NONMATCHING +int daNpcF_Path_c::getDstPos(cXyz i_pos1, cXyz& i_pos2) { + int ret = 0; + + while (true) { + int curr_index = getIdx(); + cXyz* curr_room_pos = &mpRoomPath->m_points[curr_index].m_position; + + i_pos2.x = curr_room_pos->x; + i_pos2.y = curr_room_pos->y; + i_pos2.z = curr_room_pos->x; + + cXyz local_pos; + local_pos.x = i_pos1.x; + local_pos.y = i_pos1.y; + local_pos.z = i_pos1.z; + + if (!chkPassed(local_pos)) { break; }; + + if (setNextIdx()) { + ret = 1; + } + + if (ret != 0) { + return ret; + } + } + return 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcF_Path_c::getDstPos(cXyz param_0, cXyz& param_1) { +asm int daNpcF_Path_c::getDstPos(cXyz param_0, cXyz& param_1) { nofralloc #include "asm/d/a/d_a_npc/getDstPos__13daNpcF_Path_cF4cXyzR4cXyz.s" } #pragma pop +#endif /* 80150EB4-80151038 14B7F4 0184+00 0/0 0/0 2/2 .text setNextIdxDst__13daNpcF_Path_cF4cXyz */ #pragma push @@ -3816,7 +4498,7 @@ asm void daNpcF_Lookat_c::initialize() { static u8 lit_9946[12]; /* 804257DC-804257E8 0524FC 000C+00 1/1 0/0 0/0 .bss vec$9945 */ -static u8 vec[12]; +static Vec vec; /* 80450FEC-80450FF0 0004EC 0004+00 1/1 0/0 0/0 .sbss None */ static u8 data_80450FEC[4]; @@ -3826,6 +4508,38 @@ SECTION_SDATA2 static f32 lit_9971 = 32.0f; /* 801510B8-80151350 14B9F8 0298+00 0/0 0/0 34/34 .text * setParam__15daNpcF_Lookat_cFffffffffffffsP4cXyz */ +#ifdef NONMATCHING +void daNpcF_Lookat_c::setParam(f32 param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4, + f32 param_5, f32 param_6, f32 param_7, f32 param_8, f32 param_9, + f32 param_10, f32 param_11, s16 param_12, cXyz* param_13) { + f32 l_float0 = param_0; + f32 l_float1 = param_1; + f32 l_float2 = param_2; + f32 l_float3 = param_3; + u32 tmp = 0; + + if (!data_80450FEC) { + f32 value = FLOAT_LABEL(lit_9971); + + // vec.set(0.0f,0.0f,value); + FLOAT_LABEL(data_80450FEC) = 1.0f; + } + + field_0x00[0] = *param_13; + field_0x4c[0].set((cM_deg2s(-param_1) - 0x4000),cM_deg2s(param_2),0); + field_0x64[0].set((cM_deg2s(-param_0) - 0x4000),cM_deg2s(param_3),0); + + field_0x00[1].set(param_12,param_12,param_12); + field_0x4c[1].set(cM_deg2s(-0x4000),param_8,param_8); + field_0x64[1].set(-0x4000,param_8,param_8); + + field_0x00[2].set(param_9,param_9,param_9); + field_0x4c[2].set(-0x4000,param_11,param_11); + field_0x64[2].set(-0x4000,param_11,param_11); + + +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -3836,9 +4550,52 @@ asm void daNpcF_Lookat_c::setParam(f32 param_0, f32 param_1, f32 param_2, f32 pa #include "asm/d/a/d_a_npc/setParam__15daNpcF_Lookat_cFffffffffffffsP4cXyz.s" } #pragma pop +#endif /* 80151350-801515D4 14BC90 0284+00 0/0 0/0 34/34 .text * calc__15daNpcF_Lookat_cFP10fopAc_ac_cPA4_fPP5csXyziii */ +#ifdef NONMATCHING +void daNpcF_Lookat_c::calc(fopAc_ac_c* param_0, f32 (*param_1)[4], csXyz** param_2, int param_3, + int param_4, int param_5) { + int tmp = 0; + int tmp2; + + if (field_0x30) { + initCalc(param_0,param_1,(cXyz*)param_2,*param_2,*param_1,(cXyz&)param_2,param_5); + + for (int i = 2; i >= -1; i--) { + update((cXyz*)param_2,*param_2,(float*)param_4); + if (0 <= i) { + calcMoveDisAngle(i,(cXyz*)param_2,*param_2,(cXyz&)param_2,param_4,param_5); + } + } + setRotAngle(); + + } else { + clrRotAngle(); + } + + tmp2 = 1; + + for (int i = 2; i >= -1; i-- ) { + if (param_3) { + cLib_addCalc2((float*)param_2,(float)field_0x7c[0].y,0.25f,(0x800/ (float)tmp2)); + cLib_addCalc2((float*)param_2,(float)field_0x7c[0].y,0.25f,(0x800/ (float)tmp2)); + + if (0 < param_4 && (field_0x7c[0].y - param_2[i]->y) > 0.0f) { + param_2[i]->y = field_0x7c[0].y; + } + + if (0 < param_4 && (field_0x7c[0].y - param_2[i]->y) > 0.0f) { + param_2[i]->y = field_0x7c[0].y; + } + + } else { + param_2[8] = field_0x7c; + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -3848,9 +4605,39 @@ asm void daNpcF_Lookat_c::calc(fopAc_ac_c* param_0, f32 (*param_1)[4], csXyz** p #include "asm/d/a/d_a_npc/calc__15daNpcF_Lookat_cFP10fopAc_ac_cPA4_fPP5csXyziii.s" } #pragma pop +#endif /* 801515D4-80151648 14BF14 0074+00 1/1 0/0 0/0 .text adjustMoveDisAngle__15daNpcF_Lookat_cFRssss */ +#ifdef NONMATCHING +// regalloc +void daNpcF_Lookat_c::adjustMoveDisAngle(s16& param_0, s16 param_1, s16 param_2, s16 param_3) { + int tmp2 = param_1; + int tmp = tmp2 + param_0; + + + if (param_3 < tmp) { + if (tmp2 < param_3) { + param_0 -= (tmp - param_3); + } else { + param_0 = 0; + } + } + + tmp2 += param_0; + + if (tmp2 >= param_2) { + return; + } + + if (param_2 < param_1) { + param_0 -= (tmp2 - param_2); + return; + } + + param_0 = 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -3859,6 +4646,7 @@ asm void daNpcF_Lookat_c::adjustMoveDisAngle(s16& param_0, s16 param_1, s16 para #include "asm/d/a/d_a_npc/adjustMoveDisAngle__15daNpcF_Lookat_cFRssss.s" } #pragma pop +#endif /* ############################################################################################## */ /* 8045349C-804534A0 001A9C 0004+00 1/1 0/0 0/0 .sdata2 @10253 */ @@ -3955,7 +4743,7 @@ asm void daNpcF_c::tgHitCallBack(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, fop u8 daNpcF_c::mFindActorPList[400]; /* 80450FF0-80450FF4 0004F0 0004+00 4/4 0/0 0/0 .sbss mFindCount__8daNpcF_c */ -u8 daNpcF_c::mFindCount[4]; +s32 daNpcF_c::mFindCount; /* 80152654-801526E8 14CF94 0094+00 0/0 0/0 12/12 .text srchAttnActor1__8daNpcF_cFPvPv */ #pragma push @@ -3969,13 +4757,13 @@ asm void daNpcF_c::srchAttnActor1(void* param_0, void* param_1) { /* ############################################################################################## */ /* 80450FF4-80450FF8 0004F4 0002+02 2/2 0/0 0/0 .sbss mSrchActorName__8daNpcF_c */ -u8 daNpcF_c::mSrchActorName[2 + 2 /* padding */]; +s16 daNpcF_c::mSrchActorName; /* 801526E8-8015276C 14D028 0084+00 1/1 0/0 0/0 .text srchActor__8daNpcF_cFPvPv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcF_c::srchActor(void* param_0, void* param_1) { +asm void* daNpcF_c::srchActor(void* param_0, void* param_1) { nofralloc #include "asm/d/a/d_a_npc/srchActor__8daNpcF_cFPvPv.s" } @@ -4299,14 +5087,15 @@ asm void daNpcF_c::chkActorInAttnArea(fopAc_ac_c* param_0, fopAc_ac_c* param_1, #pragma pop /* 80153D1C-80153D84 14E65C 0068+00 0/0 0/0 118/118 .text initTalk__8daNpcF_cFiPP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_c::initTalk(int param_0, fopAc_ac_c** param_1) { - nofralloc -#include "asm/d/a/d_a_npc/initTalk__8daNpcF_cFiPP10fopAc_ac_c.s" +int daNpcF_c::initTalk(int param_0, fopAc_ac_c** param_1) { + mFlow.init(this,param_0,0,param_1); + f32 tmp = FLOAT_LABEL(lit_4116); + mSpeedF = tmp; + mSpeed.set(tmp,tmp,tmp); + field_0x9e9 = 0; + field_0x9ec = 0; + return 1; } -#pragma pop /* 80153D84-80153EF4 14E6C4 0170+00 0/0 0/0 119/119 .text talkProc__8daNpcF_cFPiiPP10fopAc_ac_c */ #pragma push @@ -4349,24 +5138,37 @@ asm void daNpcF_c::setAngle(s16 param_0) { #pragma pop /* 80154278-801542A0 14EBB8 0028+00 0/0 0/0 36/36 .text getDistTableIdx__8daNpcF_cFii */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_c::getDistTableIdx(int param_0, int param_1) { - nofralloc -#include "asm/d/a/d_a_npc/getDistTableIdx__8daNpcF_cFii.s" +u8 daNpcF_getDistTableIdx(int param_0, int param_1); //fwd dec to get a match + +void daNpcF_c::getDistTableIdx(int param_0, int param_1) { + daNpcF_getDistTableIdx(param_0,param_1); } -#pragma pop /* 801542A0-8015436C 14EBE0 00CC+00 0/0 0/0 6/6 .text getEvtAreaTagP__8daNpcF_cFii */ +#ifdef NONMATCHING +int daNpcF_c::getEvtAreaTagP(int param_0, int param_1) { + mFindCount = 0; + mSrchActorName = PROC_TAG_EVTAREA; + fpcM_Search((fpcLyIt_JudgeFunc)this->srchActor,(void*)this); + + for (int i = 0; mFindCount >= 0; mFindCount--) { + if (param_0 == mFindActorPList[i] && param_1 == mFindActorPList[i]) { + return mFindActorPList[i]; + } + } + + return 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcF_c::getEvtAreaTagP(int param_0, int param_1) { +asm int daNpcF_c::getEvtAreaTagP(int param_0, int param_1) { nofralloc #include "asm/d/a/d_a_npc/getEvtAreaTagP__8daNpcF_cFii.s" } #pragma pop +#endif /* ############################################################################################## */ /* 804534B0-804534B4 001AB0 0004+00 1/1 0/0 0/0 .sdata2 @11605 */ @@ -4397,36 +5199,61 @@ asm void daNpcF_c::chkActorInSight2(fopAc_ac_c* param_0, f32 param_1, s16 param_ #pragma pop /* 80154834-801548F4 14F174 00C0+00 2/2 0/0 0/0 .text chkPointInArea__8daNpcF_cF4cXyz4cXyzfffs */ +#ifdef NONMATCHING +bool daNpcF_c::chkPointInArea(cXyz param_0, cXyz param_1, f32 param_2, f32 param_3, f32 param_4, + s16 param_5) { + cXyz tmp_pos1; + cXyz tmp_pos2; + cXyz tmp_pos3; + + f32 tmp_float1 = param_3; + + if (param_3 < param_4) { + tmp_float1 = param_4; + param_4 = param_3; + } + + f32 result1 = fabsf(tmp_float1 - param_4); + f32 result = FLOAT_LABEL(lit_11253) * result1; + tmp_pos1.set(param_2,result,param_2); + + f32 result2 = param_1.y + param_4 + tmp_pos1.y; + tmp_pos2.set(param_1.x,result2,param_1.z); + + tmp_pos3 = param_0; + + return chkPointInArea(tmp_pos3,tmp_pos2,tmp_pos1,param_5); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcF_c::chkPointInArea(cXyz param_0, cXyz param_1, f32 param_2, f32 param_3, f32 param_4, +asm bool daNpcF_c::chkPointInArea(cXyz param_0, cXyz param_1, f32 param_2, f32 param_3, f32 param_4, s16 param_5) { nofralloc #include "asm/d/a/d_a_npc/chkPointInArea__8daNpcF_cF4cXyz4cXyzfffs.s" } #pragma pop +#endif /* 801548F4-8015496C 14F234 0078+00 1/1 0/0 0/0 .text chkPointInArea__8daNpcF_cF4cXyz4cXyz4cXyzs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_c::chkPointInArea(cXyz param_0, cXyz param_1, cXyz param_2, s16 param_3) { - nofralloc -#include "asm/d/a/d_a_npc/chkPointInArea__8daNpcF_cF4cXyz4cXyz4cXyzs.s" +bool daNpcF_chkPointInArea(cXyz,cXyz,cXyz,s16); // fwd reference + +bool daNpcF_c::chkPointInArea(cXyz param_0, cXyz param_1, cXyz param_2, s16 param_3) { + return daNpcF_chkPointInArea(param_0,param_1,param_2,param_3); } -#pragma pop /* 8015496C-801549E0 14F2AC 0074+00 3/3 0/0 0/0 .text getAttentionPos__8daNpcF_cFP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_c::getAttentionPos(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/a/d_a_npc/getAttentionPos__8daNpcF_cFP10fopAc_ac_c.s" +cXyz daNpcF_c::getAttentionPos(fopAc_ac_c* i_ActorP) { + cXyz pos = i_ActorP->mAttentionInfo.mPosition; + + if (fopAcM_GetName(i_ActorP) == PROC_ALINK) { + pos.y -= daPy_py_c::getAttentionOffsetY(); + } + + return pos; } -#pragma pop /* 801549E0-80154BD8 14F320 01F8+00 0/0 0/0 18/18 .text chkFindPlayer2__8daNpcF_cFis */ #pragma push @@ -4459,16 +5286,37 @@ asm void daNpcF_c::setHitodamaPrtcl() { /* 80154DA8-80154E54 14F6E8 00AC+00 1/1 0/0 1/1 .text * daNpcF_pntVsLineSegmentLengthSquare2D__FffffffPfPfPf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_pntVsLineSegmentLengthSquare2D(f32 param_0, f32 param_1, f32 param_2, f32 param_3, +int daNpcF_pntVsLineSegmentLengthSquare2D(f32 param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4, f32 param_5, f32* param_6, f32* param_7, f32* param_8) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcF_pntVsLineSegmentLengthSquare2D__FffffffPfPfPf.s" + f32 l_float3; + f32 l_float1; + f32 l_float2; + + int ret; + + ret = 0; + l_float1 = (param_4 - param_2); + l_float2 = (param_5 - param_3); + l_float3 = (l_float1 * l_float1) + (l_float2 * l_float2); + + if (FLOAT_LABEL(lit_4116) == l_float3) { + *param_8 = FLOAT_LABEL(lit_4116); + return 0; + } + + l_float3 = (l_float1 * (param_0 - param_2) + l_float2 * (param_1 - param_3)) / l_float3; + + if (FLOAT_LABEL(lit_4116) <= l_float3 && l_float3 <= FLOAT_LABEL(lit_4140)) { + ret = 1; + } + + *param_6 = (param_2 + (l_float1 * l_float3)); + *param_7 = (param_3 + (l_float2 * l_float3)); + l_float1 = (*param_6 - param_0); + *param_8 = (l_float1 * l_float1) + ((*param_7 - param_1) * (*param_6 - param_1)); + return ret; } -#pragma pop /* 80154E54-80154E5C 14F794 0008+00 1/1 0/0 0/0 .text daNpcF_putNurbs__FP4dPntiiP4dPnti */ @@ -4480,7 +5328,7 @@ static bool daNpcF_putNurbs(dPnt* param_0, int param_1, int param_2, dPnt* param #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcF_chkPassed(cXyz param_0, dPnt* param_1, u16 param_2, u16 param_3, int param_4, +asm int daNpcF_chkPassed(cXyz param_0, dPnt* param_1, u16 param_2, u16 param_3, int param_4, int param_5) { nofralloc #include "asm/d/a/d_a_npc/daNpcF_chkPassed__F4cXyzP4dPntUsUsii.s" @@ -4488,6 +5336,25 @@ asm void daNpcF_chkPassed(cXyz param_0, dPnt* param_1, u16 param_2, u16 param_3, #pragma pop /* 8015556C-80155634 14FEAC 00C8+00 1/1 0/0 8/8 .text daNpcF_getGroundAngle__FP13cBgS_PolyInfos */ +#ifdef NONMATCHING +int daNpcF_getGroundAngle(cBgS_PolyInfo* param_0, s16 param_1) { + cM3dGPla tmp; + f32 l_float; + int ret; + + if (dComIfG_Bgsp().ChkPolySafe(*param_0)) { + if (dComIfG_Bgsp().GetTriPla(*param_0,&tmp) && !cBgW_CheckBGround(l_float)) { + ret = fopAcM_getPolygonAngle(&tmp,(int)param_1); + } else { + ret = 0; + } + } else { + ret = 0; + } + + return ret; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -4496,108 +5363,146 @@ asm void daNpcF_getGroundAngle(cBgS_PolyInfo* param_0, s16 param_1) { #include "asm/d/a/d_a_npc/daNpcF_getGroundAngle__FP13cBgS_PolyInfos.s" } #pragma pop +#endif /* 80155634-80155674 14FF74 0040+00 0/0 0/0 69/69 .text daNpcF_chkEvtBit__FUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_chkEvtBit(u32 param_0) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcF_chkEvtBit__FUl.s" +void daNpcF_chkEvtBit(u32 i_idx) { + i_dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[i_idx]); } -#pragma pop /* 80155674-801556B4 14FFB4 0040+00 0/0 0/0 13/13 .text daNpcF_onEvtBit__FUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_onEvtBit(u32 param_0) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcF_onEvtBit__FUl.s" +void daNpcF_onEvtBit(u32 i_idx) { + dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[i_idx]); } -#pragma pop /* 801556B4-801556F4 14FFF4 0040+00 0/0 0/0 6/6 .text daNpcF_chkTmpBit__FUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_chkTmpBit(u32 param_0) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcF_chkTmpBit__FUl.s" +void daNpcF_chkTmpBit(u32 i_idx) { + dComIfGs_isTmpBit(dSv_event_tmp_flag_c::tempBitLabels[i_idx]); } -#pragma pop /* 801556F4-80155734 150034 0040+00 0/0 0/0 6/6 .text daNpcF_onTmpBit__FUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_onTmpBit(u32 param_0) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcF_onTmpBit__FUl.s" +void daNpcF_onTmpBit(u32 i_idx) { + dComIfGs_onTmpBit(dSv_event_tmp_flag_c::tempBitLabels[i_idx]); } -#pragma pop /* 80155734-80155774 150074 0040+00 1/1 0/0 36/36 .text daNpcF_offTmpBit__FUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_offTmpBit(u32 param_0) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcF_offTmpBit__FUl.s" +void daNpcF_offTmpBit(u32 i_idx) { + dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[i_idx]); } -#pragma pop /* 80155774-80155854 1500B4 00E0+00 0/0 2/2 5/5 .text * daNpcF_getPlayerInfoFromPlayerList__FiiR4cXyzR5csXyz */ +#ifdef NONMATCHING +int daNpcF_getPlayerInfoFromPlayerList(int param_0, int i_roomNo, cXyz& param_2, csXyz& param_3) { + int i = 0; + + dStage_roomStatus_c* roomP = dComIfGp_roomControl_getStatusRoomDt(i_roomNo); + stage_actor_data_class* entries = roomP->mRoomDt.getPlayer()->mEntries; + + while (true) { + if (param_0 == entries->mEnemyNo) { + break; + } + } + + param_2 = entries->mSpawnPos; + param_3 = entries->mAngle; + + i++; + + if (roomP->mRoomDt.getPlayerNum() >= i) { + return 0; + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daNpcF_getPlayerInfoFromPlayerList(int param_0, int param_1, cXyz& param_2, +asm int daNpcF_getPlayerInfoFromPlayerList(int param_0, int param_1, cXyz& param_2, csXyz& param_3) { nofralloc #include "asm/d/a/d_a_npc/daNpcF_getPlayerInfoFromPlayerList__FiiR4cXyzR5csXyz.s" } #pragma pop +#endif /* 80155854-80155968 150194 0114+00 0/0 0/0 1/1 .text daNpcF_chkDoBtnEqSpeak__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_chkDoBtnEqSpeak(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcF_chkDoBtnEqSpeak__FP10fopAc_ac_c.s" +bool daNpcF_chkDoBtnEqSpeak(fopAc_ac_c* i_ActorP) { + bool ret = 0; + + if (daPy_getPlayerActorClass()->checkPriActorOwn(i_ActorP)) { + for (int i = 0; i < dComIfGp_getAttention().GetActionCount(); i++) { + if (dComIfGp_getAttention().ActionTarget(i) == i_ActorP && + dComIfGp_getAttention().getActionBtnB() && + dComIfGp_getAttention().getActionBtnB()->mType == 3) { + ret = 1; + }; + } + + for (int i = 0; i < dComIfGp_getAttention().GetLockonCount(); i++) { + if (dComIfGp_getAttention().LockonTarget(i) == i_ActorP && + dComIfGp_getAttention().getActionBtnB() && + dComIfGp_getAttention().getActionBtnB()->mType == 1) { + ret = 1; + }; + } + } + return ret; } -#pragma pop /* 80155968-80155AD4 1502A8 016C+00 1/1 0/0 2/2 .text daNpcF_chkPointInArea__F4cXyz4cXyz4cXyzs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_chkPointInArea(cXyz param_0, cXyz param_1, cXyz param_2, s16 param_3) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcF_chkPointInArea__F4cXyz4cXyz4cXyzs.s" +bool daNpcF_chkPointInArea(cXyz param_0, cXyz param_1, cXyz param_2, s16 param_3) { + bool ret = 0; + Vec l_vec; + f32 l_float1; + f32 l_float2; + f32 l_float3; + f32 l_float4; + cXyz l_pos; + + mDoMtx_YrotS((MtxP)&mDoMtx_stack_c::now,-param_3); + mDoMtx_stack_c::transM(-param_1.x,-param_1.y,-param_1.z); + PSMTXMultVec((MtxP)&mDoMtx_stack_c::now,(Vec*)¶m_0,&l_vec); + + l_float1 = fabsf(param_2.x); + l_float2 = fabsf(param_2.z); + l_float3 = fabsf(l_vec.x); + l_float4 = fabsf(l_vec.z); + + l_pos = param_1 - param_0; + + if (l_pos.y <= -param_2.y || param_2.y <= l_pos.y) { + ret = 0; + } else { + f32 tmp_float1 = (l_float3 * l_float3) / (l_float1 * l_float1); + f32 tmp_float2 = (l_float4 * l_float4) / (l_float2 * l_float2); + f32 tmp_float3 = tmp_float1 + tmp_float2; + ret = tmp_float3 <= FLOAT_LABEL(lit_4140); + } + + return ret; } -#pragma pop /* 80155AD4-80155AE8 150414 0014+00 1/1 0/0 1/1 .text daNpcF_getDistTableIdx__Fii */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_getDistTableIdx(int param_0, int param_1) { - nofralloc -#include "asm/d/a/d_a_npc/daNpcF_getDistTableIdx__Fii.s" +u8 daNpcF_getDistTableIdx(int param_0, int param_1) { + return param_0 + param_1 * 0x14 + 0x5e; } -#pragma pop /* 80155AE8-80155B54 150428 006C+00 0/0 0/0 6/6 .text daNpcF_clearMessageTmpBit__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcF_clearMessageTmpBit() { - nofralloc -#include "asm/d/a/d_a_npc/daNpcF_clearMessageTmpBit__Fv.s" +void daNpcF_clearMessageTmpBit() { + daNpcF_offTmpBit(0xb); + daNpcF_offTmpBit(0xc); + daNpcF_offTmpBit(0xd); + daNpcF_offTmpBit(0xe); + daNpcF_offTmpBit(0xf); + daNpcF_offTmpBit(0x33); + daNpcF_offTmpBit(0x34); + daNpcF_offTmpBit(0x35); + daNpcF_offTmpBit(0x36); + daNpcF_offTmpBit(0x37); } -#pragma pop /* 80155B54-80155BB4 150494 0060+00 1/0 0/0 0/0 .text __dt__20daNpcF_MoveBgActor_cFv */ #pragma push diff --git a/src/d/a/d_a_obj.cpp b/src/d/a/d_a_obj.cpp index 3f57f80659..7149519432 100644 --- a/src/d/a/d_a_obj.cpp +++ b/src/d/a/d_a_obj.cpp @@ -4,110 +4,25 @@ // #include "d/a/d_a_obj.h" +#include "d/com/d_com_inf_game.h" #include "dol2asm.h" #include "dolphin/types.h" // // Types: // - -struct fopAc_ac_c {}; - -struct daPy_py_c { - /* 8015F398 */ void checkMasterSwordEquip(); -}; - -struct dCcD_GObjInf { - /* 800844F8 */ void GetTgHitObj(); - /* 8008457C */ void GetTgHitObjSe(); -}; - -struct Quaternion {}; - -struct Vec {}; - -struct cXyz { - /* 80009184 */ ~cXyz(); - /* 80266B34 */ void operator-(Vec const&) const; - /* 80266B84 */ void operator*(f32) const; - /* 80266C18 */ void operator/(f32) const; - /* 80266CBC */ void outprod(Vec const&) const; - - static f32 Zero[3]; - static u8 BaseY[12]; -}; - -struct daObj { - /* 80037038 */ void eff_break_tsubo(fopAc_ac_c*, cXyz, int); - /* 80037180 */ void make_eff_break_kotubo(fopAc_ac_c*); - /* 80037210 */ void make_eff_break_kotubo2(fopAc_ac_c*); - /* 800372A0 */ void make_eff_break_gm_kotubo(fopAc_ac_c*); - /* 80037330 */ void make_eff_break_gm_ootubo(fopAc_ac_c*); - /* 800373C0 */ void posMoveF_stream(fopAc_ac_c*, cXyz const*, cXyz const*, f32, f32); - /* 80037620 */ void posMoveF_grade(fopAc_ac_c*, cXyz const*, cXyz const*, f32, f32, cXyz const*, - f32, f32, cXyz const*); - /* 80037788 */ void quat_rotBaseY(Quaternion*, cXyz const&); - /* 80037900 */ void HitSeStart(cXyz const*, int, dCcD_GObjInf const*, u32); -}; - -struct dRes_info_c {}; - -struct dRes_control_c { - /* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int); -}; - -struct dKy_tevstr_c {}; - -struct J3DModelData {}; - -struct JPABaseEmitter {}; - -struct dPa_modelEcallBack { - /* 8004AC00 */ void setModel(JPABaseEmitter*, J3DModelData*, dKy_tevstr_c const&, u8, void*, u8, - u8); - - static u8 mEcallback[4]; -}; - -struct dPa_levelEcallBack {}; - -struct csXyz {}; - -struct _GXColor {}; - -struct dPa_control_c { - /* 8004CA90 */ void set(u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, cXyz const*, - u8, dPa_levelEcallBack*, s8, _GXColor const*, _GXColor const*, - cXyz const*, f32); - - static u8 mTsubo[64]; -}; - -struct dCcD_GAtTgCoCommonBase { - /* 80083688 */ void GetAc(); -}; - -struct cCcD_SphAttr { - /* 80037A54 */ void GetCoCP(); -}; - -struct cCcD_CylAttr { - /* 80037A4C */ void GetCoCP(); -}; - -struct JAISoundID {}; - -struct Z2SeMgr { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - -struct JMath { - static u8 sincosTable_[65536]; -}; +namespace daObj { +/* 80037038 */ void eff_break_tsubo(fopAc_ac_c*, cXyz, int); +/* 80037180 */ void make_eff_break_kotubo(fopAc_ac_c*); +/* 80037210 */ void make_eff_break_kotubo2(fopAc_ac_c*); +/* 800372A0 */ void make_eff_break_gm_kotubo(fopAc_ac_c*); +/* 80037330 */ void make_eff_break_gm_ootubo(fopAc_ac_c*); +/* 800373C0 */ void posMoveF_stream(fopAc_ac_c*, cXyz const*, cXyz const*, f32, f32); +/* 80037620 */ void posMoveF_grade(fopAc_ac_c*, cXyz const*, cXyz const*, f32, f32, cXyz const*, + f32, f32, cXyz const*); +/* 80037788 */ void quat_rotBaseY(Quaternion*, cXyz const&); +/* 80037900 */ void HitSeStart(cXyz const*, int, dCcD_GObjInf const*, u32); +}; // namespace daObj // // Forward References: @@ -151,12 +66,6 @@ extern "C" void outprod__4cXyzCFRC3Vec(); extern "C" void cM_atan2s__Fff(); extern "C" void cM3d_CrawVec__FRC3VecRC3VecP3Vec(); extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void PSVECAdd(); -extern "C" void PSVECSubtract(); -extern "C" void PSVECScale(); -extern "C" void PSVECSquareMag(); -extern "C" void PSVECDotProduct(); -extern "C" void C_QUATRotAxisRad(); extern "C" void __register_global_object(); extern "C" void _savegpr_25(); extern "C" void _savegpr_26(); @@ -166,8 +75,6 @@ extern "C" void _restgpr_25(); extern "C" void _restgpr_26(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); -extern "C" void acos(); -extern "C" extern u8 g_dComIfG_gameInfo[122384]; extern "C" u8 mTsubo__13dPa_control_c[64]; extern "C" f32 Zero__4cXyz[3]; extern "C" u8 BaseY__4cXyz[12]; @@ -194,6 +101,22 @@ SECTION_SDATA2 static f32 lit_3671 = 1.0f; /* 80037038-80037180 031978 0148+00 4/4 0/0 0/0 .text eff_break_tsubo__5daObjFP10fopAc_ac_c4cXyzi */ +#ifdef NONMATCHING +void daObj::eff_break_tsubo(fopAc_ac_c* param_0, cXyz param_1, int param_2) { + J3DModelData* tubo_bmd = (J3DModelData*)dComIfG_getObjectRes("Always", 0x20); + J3DAnmTexPattern* tubo_btp = (J3DAnmTexPattern*)dComIfG_getObjectRes("Always", 0x42); + + JPABaseEmitter* emitter = (JPABaseEmitter*)dComIfGp_particle_set( + 0x15C, ¶m_0->current.pos, NULL, NULL, 0xFF, dPa_modelEcallBack::getEcallback(), + fopAcM_GetRoomNo(param_0), NULL, NULL, ¶m_1); + + dPa_modelEcallBack::setModel(emitter, tubo_bmd, param_0->mTevStr, 3, tubo_btp, 0, param_2); + + dComIfGp_particle_set(0x15D, ¶m_0->current.pos, NULL, NULL, 0xFF, + dPa_control_c::getTsuboSelectTexEcallBack(param_2), + fopAcM_GetRoomNo(param_0), NULL, NULL, ¶m_1); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -202,6 +125,7 @@ asm void daObj::eff_break_tsubo(fopAc_ac_c* param_0, cXyz param_1, int param_2) #include "asm/d/a/d_a_obj/eff_break_tsubo__5daObjFP10fopAc_ac_c4cXyzi.s" } #pragma pop +#endif /* ############################################################################################## */ /* 804245E8-804245F4 051308 000C+00 1/1 0/0 0/0 .bss @3677 */ @@ -212,6 +136,14 @@ static f32 scale_3676[3]; /* 80037180-80037210 031AC0 0090+00 0/0 0/0 2/2 .text make_eff_break_kotubo__5daObjFP10fopAc_ac_c */ +// matches with literals +#ifdef NONMATCHING +void daObj::make_eff_break_kotubo(fopAc_ac_c* param_0) { + static cXyz scale(1.0f, 1.0f, 1.0f); + + eff_break_tsubo(param_0, scale, 0); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -220,6 +152,7 @@ asm void daObj::make_eff_break_kotubo(fopAc_ac_c* param_0) { #include "asm/d/a/d_a_obj/make_eff_break_kotubo__5daObjFP10fopAc_ac_c.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80424600-8042460C 051320 000C+00 1/1 0/0 0/0 .bss @3692 */ @@ -230,6 +163,14 @@ static f32 scale_3691[3]; /* 80037210-800372A0 031B50 0090+00 0/0 0/0 2/2 .text make_eff_break_kotubo2__5daObjFP10fopAc_ac_c */ +// matches with literals +#ifdef NONMATCHING +void daObj::make_eff_break_kotubo2(fopAc_ac_c* param_0) { + static cXyz scale(1.0f, 1.0f, 1.0f); + + eff_break_tsubo(param_0, scale, 1); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -238,6 +179,7 @@ asm void daObj::make_eff_break_kotubo2(fopAc_ac_c* param_0) { #include "asm/d/a/d_a_obj/make_eff_break_kotubo2__5daObjFP10fopAc_ac_c.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80424618-80424624 051338 000C+00 1/1 0/0 0/0 .bss @3719 */ @@ -248,6 +190,14 @@ static f32 scale_3718[3]; /* 800372A0-80037330 031BE0 0090+00 0/0 0/0 1/1 .text * make_eff_break_gm_kotubo__5daObjFP10fopAc_ac_c */ +// matches with literals +#ifdef NONMATCHING +void daObj::make_eff_break_gm_kotubo(fopAc_ac_c* param_0) { + static cXyz scale(1.0f, 1.0f, 1.0f); + + eff_break_tsubo(param_0, scale, 3); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -256,6 +206,7 @@ asm void daObj::make_eff_break_gm_kotubo(fopAc_ac_c* param_0) { #include "asm/d/a/d_a_obj/make_eff_break_gm_kotubo__5daObjFP10fopAc_ac_c.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80424630-8042463C 051350 000C+00 1/1 0/0 0/0 .bss @3732 */ @@ -269,6 +220,14 @@ SECTION_SDATA2 static f32 lit_3714 = 2.0f; /* 80037330-800373C0 031C70 0090+00 0/0 0/0 1/1 .text * make_eff_break_gm_ootubo__5daObjFP10fopAc_ac_c */ +// matches with literals +#ifdef NONMATCHING +void daObj::make_eff_break_gm_ootubo(fopAc_ac_c* param_0) { + static cXyz scale(2.0f, 2.0f, 2.0f); + + eff_break_tsubo(param_0, scale, 4); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -277,6 +236,7 @@ asm void daObj::make_eff_break_gm_ootubo(fopAc_ac_c* param_0) { #include "asm/d/a/d_a_obj/make_eff_break_gm_ootubo__5daObjFP10fopAc_ac_c.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80451DA0-80451DA4 0003A0 0004+00 4/4 0/0 0/0 .sdata2 @3801 */ @@ -383,7 +343,8 @@ asm void daObj::HitSeStart(cXyz const* param_0, int param_1, dCcD_GObjInf const* #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void cCcD_CylAttr::GetCoCP() { +// asm void cCcD_CylAttr::GetCoCP() { +extern "C" asm void GetCoCP__12cCcD_CylAttrFv() { nofralloc #include "asm/d/a/d_a_obj/GetCoCP__12cCcD_CylAttrFv.s" } @@ -393,7 +354,8 @@ asm void cCcD_CylAttr::GetCoCP() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void cCcD_SphAttr::GetCoCP() { +// asm void cCcD_SphAttr::GetCoCP() { +extern "C" asm void GetCoCP__12cCcD_SphAttrFv() { nofralloc #include "asm/d/a/d_a_obj/GetCoCP__12cCcD_SphAttrFv.s" } diff --git a/src/d/a/d_a_player.cpp b/src/d/a/d_a_player.cpp index 518fc004f6..f103a528fc 100644 --- a/src/d/a/d_a_player.cpp +++ b/src/d/a/d_a_player.cpp @@ -12,7 +12,9 @@ #include "dolphin/types.h" #include "f_op/f_op_actor_iter.h" #include "f_op/f_op_actor_mng.h" +#include "m_Do/m_Do_lib.h" #include "rel/d/a/d_a_boomerang/d_a_boomerang.h" +#include "rel/d/a/d_a_spinner/d_a_spinner.h" // // Forward References: @@ -77,6 +79,7 @@ extern "C" void setMidnaFaceNum__9daPy_py_cFi(); extern "C" void daPy_addCalcShort__FPsssss(); extern "C" extern void* __vt__18daPy_sightPacket_c[4 + 1 /* padding */]; extern "C" u8 m_midnaActor__9daPy_py_c[4]; +extern "C" u8 m_dropAngleY__20daPy_boomerangMove_c[4]; // // External References: @@ -143,10 +146,12 @@ bool daPy_frameCtrl_c::checkAnmEnd() { if (getEndFlg() != 0 && getNowSetFlg() == 0) { return true; } + if (getRate() == lit_4215[0]) { onEndFlg(); onNowSetFlg(); } + return false; } @@ -155,63 +160,38 @@ void daPy_frameCtrl_c::updateFrame() { offNowSetFlg(); } -/* ############################################################################################## */ -/* 80453608-80453610 001C08 0008+00 2/2 0/0 0/0 .sdata2 @4237 */ -SECTION_SDATA2 static f64 lit_4237 = 4503601774854144.0 /* cast s32 to float */; - /* 8015E544-8015E5B0 158E84 006C+00 0/0 1/1 6/6 .text setFrameCtrl__16daPy_frameCtrl_cFUcssff */ -// compiler generated literal from short to float conversion -#ifdef NONMATCHING -void daPy_frameCtrl_c::setFrameCtrl(u8 pAttribute, s16 pStart, s16 pEnd, f32 pRate, f32 pFrame) { - setAttribute(pAttribute); - setEnd(pEnd); - setRate(pRate); - setStart(pStart); - setFrame(pFrame); - if (pRate >= lit_4215[0]) { - setLoop(pStart); +void daPy_frameCtrl_c::setFrameCtrl(u8 i_attribute, s16 i_start, s16 i_end, f32 i_rate, + f32 i_frame) { + setAttribute(i_attribute); + setEnd(i_end); + setRate(i_rate); + setStart(i_start); + setFrame(i_frame); + + if (i_rate >= lit_4215[0]) { + setLoop(i_start); } else { - setLoop(pEnd); + setLoop(i_end); } + offEndFlg(); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daPy_frameCtrl_c::setFrameCtrl(u8 param_0, s16 param_1, s16 param_2, f32 param_3, - f32 param_4) { - nofralloc -#include "asm/d/a/d_a_player/setFrameCtrl__16daPy_frameCtrl_cFUcssff.s" -} -#pragma pop -#endif - -/* ############################################################################################## */ -/* 80453610-80453614 001C10 0004+00 1/1 0/0 0/0 .sdata2 @4247 */ -SECTION_SDATA2 static f32 lit_4247 = 30.0f; - -/* 80453614-80453618 001C14 0004+00 1/1 0/0 0/0 .sdata2 @4248 */ -SECTION_SDATA2 static f32 lit_4248 = 70.0f; - -/* 80453618-8045361C 001C18 0004+00 2/2 0/0 0/0 .sdata2 @4249 */ -SECTION_SDATA2 static f32 lit_4249 = 50.0f; - -/* 8045361C-80453620 001C1C 0004+00 1/1 0/0 0/0 .sdata2 @4250 */ -SECTION_SDATA2 static f32 lit_4250 = 65536.0f; /* 8015E5B0-8015E654 158EF0 00A4+00 0/0 1/1 18/18 .text initOffset__20daPy_boomerangMove_cFPC4cXyz */ void daPy_boomerangMove_c::initOffset(cXyz const* param_0) { daBoomerang_c* boomerang = daPy_py_c::getThrowBoomerangActor(); + if (boomerang != NULL) { bgCheckAfterOffset(param_0); boomerang->onWindCatch(); } else { - field_0x4 = cM_rndF(lit_4248) + lit_4247; - field_0x8 = cM_rndF(lit_4249) + lit_4249; - field_0x2 = cM_rndF(lit_4250); + field_0x4 = cM_rndF(70.0f) + 30.0f; + field_0x8 = cM_rndF(50.0f) + 50.0f; + field_0x2 = cM_rndF(65536.0f); } + field_0x0 = 0; } @@ -221,34 +201,59 @@ daMidna_c* daPy_py_c::m_midnaActor; /* 8045101C-80451020 -00001 0004+00 1/1 1/1 1/1 .sbss None */ /* 8045101C 0002+00 data_8045101C m_dropAngleY__20daPy_boomerangMove_c */ +s16 daPy_boomerangMove_c::m_dropAngleY; + /* 8045101E 0002+00 data_8045101E m_eventKeepFlg__20daPy_boomerangMove_c */ -extern u8 struct_8045101C[4]; -u8 struct_8045101C[4]; - -/* 80453620-80453624 001C20 0004+00 1/1 0/0 0/0 .sdata2 @4332 */ -SECTION_SDATA2 static f32 lit_4332 = 300.0f; - -/* 80453624-80453628 001C24 0004+00 1/1 0/0 0/0 .sdata2 @4333 */ -SECTION_SDATA2 static f32 lit_4333 = -700.0f; - -/* 80453628-80453630 001C28 0004+04 1/1 0/0 0/0 .sdata2 @4334 */ -SECTION_SDATA2 static f32 lit_4334[1 + 1 /* padding */] = { - 2048.0f, - /* padding */ - 0.0f, -}; +s16 daPy_boomerangMove_c::m_eventKeepFlg; /* 8015E654-8015E87C 158F94 0228+00 0/0 1/1 17/17 .text * posMove__20daPy_boomerangMove_cFP4cXyzPsP10fopAc_ac_cs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daPy_boomerangMove_c::posMove(cXyz* param_0, s16* param_1, fopAc_ac_c* param_2, - s16 param_3) { - nofralloc -#include "asm/d/a/d_a_player/posMove__20daPy_boomerangMove_cFP4cXyzPsP10fopAc_ac_cs.s" +int daPy_boomerangMove_c::posMove(cXyz* param_0, s16* param_1, fopAc_ac_c* param_2, s16 param_3) { + daBoomerang_c* boomerang = daPy_py_c::getThrowBoomerangActor(); + + field_0x2 -= param_3; + *param_1 -= param_3; + + if (field_0x8 > 300.0f) { + field_0x8 = 300.0f; + } + + if (field_0x4 < -700.0f) { + field_0x4 = -700.0f; + } else if (field_0x4 > 50.0f) { + field_0x4 = 50.0f; + } + + if (boomerang != NULL) { + if (boomerang->checkForceDelete()) { + return 0; + } + + if (i_dComIfGp_event_runCheck()) { + field_0x0 = 1; + } else if (m_eventKeepFlg != 0 && field_0x0 == 0) { + return 0; + } + + param_0->set(boomerang->current.pos.x + field_0x8 * cM_ssin(field_0x2), + boomerang->current.pos.y + field_0x4, + boomerang->current.pos.z + field_0x8 * cM_scos(field_0x2)); + boomerang->onWindCatch(); + return 1; + } + + daAlink_c* link = daAlink_getAlinkActorClass(); + if ((param_2 == NULL || !link->checkBoomerangCarry(param_2)) && + (m_eventKeepFlg == 0 || field_0x0 != 0)) { + s16 tmp = (m_dropAngleY + link->mCollisionRot.y) + cM_rndF(2048.0f); + + param_0->x = link->current.pos.x + field_0x8 * cM_ssin(tmp); + param_0->z = link->current.pos.z + field_0x8 * cM_scos(tmp); + m_dropAngleY += 0x2000; + } + + return 0; } -#pragma pop /* ############################################################################################## */ /* 80453630-80453638 001C30 0008+00 1/1 0/0 0/0 .sdata2 @4379 */ @@ -271,8 +276,8 @@ void daPy_boomerangMove_c::bgCheckAfterOffset(cXyz const* param_0) { if (boomerang != NULL) { field_0x4 = param_0->y - boomerang->current.pos.y; field_0x8 = boomerang->current.pos.absXZ(*param_0); - field_0x2 = cM_atan2s(param_0->x - boomerang->current.pos.x, - param_0->z - boomerang->current.pos.z); + field_0x2 = + cM_atan2s(param_0->x - boomerang->current.pos.x, param_0->z - boomerang->current.pos.z); } } #else @@ -375,10 +380,10 @@ void daPy_actorKeep_c::setActor() { /* 8015ECB8-8015ECFC 1595F8 0044+00 0/0 59/59 4/4 .text setData__16daPy_actorKeep_cFP10fopAc_ac_c */ -void daPy_actorKeep_c::setData(fopAc_ac_c* pActor) { - if (pActor != NULL) { - mActor = pActor; - mID = fopAcM_GetID(pActor); +void daPy_actorKeep_c::setData(fopAc_ac_c* i_actor) { + if (i_actor != NULL) { + mActor = i_actor; + mID = fopAcM_GetID(i_actor); } else { clearData(); } @@ -389,9 +394,9 @@ void daPy_actorKeep_c::clearData() { mActor = NULL; } -daPy_anmHeap_c::daPy_anmHeap_c(u32 pBufferSize) { +daPy_anmHeap_c::daPy_anmHeap_c(u32 i_bufferSize) { initData(); - mBufferSize = pBufferSize; + mBufferSize = i_bufferSize; } daPy_anmHeap_c::~daPy_anmHeap_c() { @@ -414,16 +419,16 @@ void* daPy_anmHeap_c::mallocBuffer() { /* 8015EE00-8015EF84 159740 0184+00 0/0 1/1 1/1 .text * createHeap__14daPy_anmHeap_cFQ214daPy_anmHeap_c16daAlinkHEAP_TYPE */ -void daPy_anmHeap_c::createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE heap_type) { +void daPy_anmHeap_c::createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE i_heapType) { u32 size; - if (heap_type == 4) { + if (i_heapType == 4) { size = mBufferSize; - } else if (heap_type == 3) { + } else if (i_heapType == 3) { size = 0x50; - } else if (heap_type == 0) { + } else if (i_heapType == 0) { size = 0x40; - } else if (heap_type == 1) { + } else if (i_heapType == 1) { size = 0x40; } else { size = 0xA0; @@ -432,13 +437,13 @@ void daPy_anmHeap_c::createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE heap_type) { JKRHeap* tmp; mAnimeHeap = mDoExt_createSolidHeapFromGameToCurrent(&tmp, size, 0x20); - if (heap_type == 4) { + if (i_heapType == 4) { char* tmpWork = new char[size]; - } else if (heap_type == 3) { + } else if (i_heapType == 3) { mDoExt_transAnmBas* tmpTransBas = new mDoExt_transAnmBas(NULL); - } else if (heap_type == 0) { + } else if (i_heapType == 0) { J3DAnmTransformKey* tmpTrans = new J3DAnmTransformKey(); - } else if (heap_type == 1) { + } else if (i_heapType == 1) { J3DAnmTexPattern* tmpTp = new J3DAnmTexPattern(); } else { J3DAnmTextureSRTKey* tmpTk = new J3DAnmTextureSRTKey(); @@ -448,50 +453,24 @@ void daPy_anmHeap_c::createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE heap_type) { mDoExt_adjustSolidHeap(mAnimeHeap); } -/* ############################################################################################## */ -/* 80453648-80453650 001C48 0008+00 1/0 0/0 0/0 .sdata2 sumouArcName$4614 */ -extern "C" char sumouArcName[8]; - -/* 80453650-80453658 001C50 0005+03 1/0 0/0 0/0 .sdata2 ocArcName$4615 */ -extern "C" char ocArcName[8]; - -/* 80453658-80453660 001C58 0005+03 1/0 0/0 0/0 .sdata2 drArcName$4618 */ -extern "C" char drArcName[8]; - -/* 80453660-80453668 001C60 0008+00 1/0 0/0 0/0 .sdata2 msDemoArcName$4619 */ -extern "C" char msDemoArcName[8]; - -/* 80453668-80453670 001C68 0006+02 1/0 0/0 0/0 .sdata2 lastGanonArcName$4620 */ -extern "C" char lastGanonArcName[8]; - -/* 80453670-80453678 001C70 0006+02 1/0 0/0 0/0 .sdata2 pigGanonArcName$4621 */ -extern "C" char pigGanonArcName[8]; - -SECTION_RODATA static char const twglArcName[12] = "TWGate_Lk"; - -SECTION_RODATA static char const twgwArcName[12] = "TWGate_Wf"; - -SECTION_DATA static char* arcName[8] = { - (char*)&sumouArcName, (char*)&ocArcName, (char*)&twglArcName, (char*)&twgwArcName, - (char*)&drArcName, (char*)&msDemoArcName, (char*)&lastGanonArcName, (char*)&pigGanonArcName, -}; - -SECTION_SDATA2 static char sumouArcName[8] = "alSumou"; - -SECTION_SDATA2 static char ocArcName[8] = "B_oh"; - -SECTION_SDATA2 static char drArcName[8] = "B_DR"; - -SECTION_SDATA2 static char msDemoArcName[8] = "Lv6Gate"; - -SECTION_SDATA2 static char lastGanonArcName[8] = "B_gnd"; - -SECTION_SDATA2 static char pigGanonArcName[8] = "B_mgn"; - /* 8015EF84-8015F068 1598C4 00E4+00 3/3 0/0 0/0 .text loadData__14daPy_anmHeap_cFUs */ -void* daPy_anmHeap_c::loadData(u16 id) { +void* daPy_anmHeap_c::loadData(u16 i_resId) { + static const char twglArcName[12] = "TWGate_Lk"; + static const char twgwArcName[12] = "TWGate_Wf"; + static const char sumouArcName[8] = "alSumou"; + static const char ocArcName[8] = "B_oh"; + static const char drArcName[8] = "B_DR"; + static const char msDemoArcName[8] = "Lv6Gate"; + static const char lastGanonArcName[8] = "B_gnd"; + static const char pigGanonArcName[8] = "B_mgn"; + + static const char* arcName[8] = { + sumouArcName, ocArcName, twglArcName, twgwArcName, + drArcName, msDemoArcName, lastGanonArcName, pigGanonArcName, + }; + if (mArcNo == 0xFFFF) { - dComIfGp_getAnmArchive()->readIdxResource(mBuffer, mBufferSize, id); + dComIfGp_getAnmArchive()->readIdxResource(mBuffer, mBufferSize, i_resId); JKRHeap* heap = setAnimeHeap(); void* data = J3DAnmLoaderDataBase::load(mBuffer, UNK_FLAG0); mDoExt_setCurrentHeap(heap); @@ -499,55 +478,58 @@ void* daPy_anmHeap_c::loadData(u16 id) { } if (mArcNo == 0) { - return dComIfG_getObjectIDRes(dStage_roomControl_c::getDemoArcName(), id); + return dComIfG_getObjectIDRes(dStage_roomControl_c::getDemoArcName(), i_resId); } - return dComIfG_getObjectRes(arcName[mArcNo - 1], id); + return dComIfG_getObjectRes(arcName[mArcNo - 1], i_resId); } /* 8015F068-8015F0D0 1599A8 0068+00 0/0 9/9 5/5 .text loadDataIdx__14daPy_anmHeap_cFUs */ -void* daPy_anmHeap_c::loadDataIdx(u16 id) { +void* daPy_anmHeap_c::loadDataIdx(u16 i_resID) { void* data; - if (id == mIdx && mArcNo == 0xFFFF) { + if (i_resID == mIdx && mArcNo == 0xFFFF) { data = NULL; } else { - mIdx = id; + mIdx = i_resID; mArcNo = 0xFFFF; if (mPriIdx == 0xFFFF) { - data = loadData(id); + data = loadData(i_resID); } else { data = NULL; } } + return data; } /* 8015F0D0-8015F118 159A10 0048+00 0/0 3/3 0/0 .text loadDataPriIdx__14daPy_anmHeap_cFUs */ -void* daPy_anmHeap_c::loadDataPriIdx(u16 id) { +void* daPy_anmHeap_c::loadDataPriIdx(u16 i_resID) { void* data; - if (id == mPriIdx || mArcNo != 0xFFFF) { + if (i_resID == mPriIdx || mArcNo != 0xFFFF) { data = NULL; } else { - mPriIdx = id; - data = loadData(id); + mPriIdx = i_resID; + data = loadData(i_resID); } + return data; } /* 8015F118-8015F168 159A58 0050+00 0/0 5/5 5/5 .text loadDataDemoRID__14daPy_anmHeap_cFUsUs */ -void* daPy_anmHeap_c::loadDataDemoRID(u16 id, u16 arc_no) { +void* daPy_anmHeap_c::loadDataDemoRID(u16 i_resID, u16 i_arcNo) { void* data; - if (id == mIdx && arc_no == mArcNo) { + if (i_resID == mIdx && i_arcNo == mArcNo) { data = NULL; } else { - mIdx = id; - mArcNo = arc_no; - data = loadData(id); + mIdx = i_resID; + mArcNo = i_arcNo; + data = loadData(i_resID); } + return data; } @@ -578,29 +560,56 @@ SECTION_SDATA2 static u32 lit_4668 = 0xFF8000FF; SECTION_SDATA2 static u32 lit_4669 = 0x321400FF; /* 8015F1A0-8015F2FC 159AE0 015C+00 1/0 1/1 0/0 .text draw__18daPy_sightPacket_cFv */ +// dumb instruction block out of order +#ifdef NONMATCHING +void daPy_sightPacket_c::draw() { + GXTexObj texObj; + + j3dSys.reinitGX(); + GXSetNumIndStages(0); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_RGB8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGB565, 0); + + GXColor reg0 = {255, 128, 0, 255}; + GXColor reg1 = {50, 20, 0, 255}; + + GXSetTevColor(GX_TEVREG0, reg0); + GXSetTevColor(GX_TEVREG1, reg1); + GXInitTexObj(&texObj, mpData, mpImg->width, mpImg->height, (GXTexFmt)mpImg->format, + (GXTexWrapMode)mpImg->wrapS, (GXTexWrapMode)mpImg->wrapT, + (GXBool)(mpImg->mipmapCount > 1)); + GXInitTexObjLOD(&texObj, GX_LINEAR, GX_LINEAR, 0.0, 0.0, 0.0, GX_FALSE, GX_FALSE, GX_ANISO_1); + GXLoadTexObj(&texObj, GX_TEXMAP0); + GXLoadPosMtxImm(field_0x14, GX_PNMTX0); + GXSetCurrentMtx(0); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL); + GXCallDisplayList(l_sightDL, 0x80); + J3DShape::resetVcdVatCache(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -extern "C" asm void draw__18daPy_sightPacket_cFv() { - // asm void daPy_sightPacket_c::draw() { +asm void daPy_sightPacket_c::draw() { nofralloc #include "asm/d/a/d_a_player/draw__18daPy_sightPacket_cFv.s" } #pragma pop - -/* ############################################################################################## */ -/* 80453680-80453684 001C80 0004+00 1/1 0/0 0/0 .sdata2 @4699 */ -SECTION_SDATA2 static f32 lit_4699 = 32.0f; +#endif /* 8015F2FC-8015F384 159C3C 0088+00 0/0 1/1 0/0 .text setSight__18daPy_sightPacket_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daPy_sightPacket_c::setSight() { - nofralloc -#include "asm/d/a/d_a_player/setSight__18daPy_sightPacket_cFv.s" +void daPy_sightPacket_c::setSight() { + Vec tmp; + + mDoLib_project(&mPos, &tmp); + mDoMtx_stack_c::transS(tmp.x, tmp.y, tmp.z); + mDoMtx_stack_c::scaleM(32.0f, 32.0f, 32.0f); + mDoMtx_stack_c::copy(field_0x14); + dComIfGd_set2DXlu(this); } -#pragma pop /* 8015F384-8015F398 159CC4 0014+00 0/0 1/1 0/0 .text * setSightImage__18daPy_sightPacket_cFP7ResTIMG */ @@ -617,6 +626,7 @@ BOOL daPy_py_c::checkMasterSwordEquip() { if (equipSword == MASTER_SWORD || equipSword == LIGHT_SWORD) { isMasterSword = true; } + return isMasterSword; } @@ -625,7 +635,7 @@ BOOL daPy_py_c::checkMasterSwordEquip() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daPy_py_c::checkWoodShieldEquip() { +asm bool daPy_py_c::checkWoodShieldEquip() { nofralloc #include "asm/d/a/d_a_player/checkWoodShieldEquip__9daPy_py_cFv.s" } @@ -641,6 +651,7 @@ f32 daPy_py_c::getAttentionOffsetY() { if (checkNowWolf()) { return -12.5f; } + return 57.5f; } @@ -678,8 +689,8 @@ void daPy_py_c::setLookPos(cXyz* p_pos) { } /* 8015F520-8015F55C 159E60 003C+00 0/0 0/0 4/4 .text setPlayerSe__9daPy_py_cFUl */ -void daPy_py_c::setPlayerSe(u32 se_id) { - daAlink_getAlinkActorClass()->seStartOnlyReverb(se_id); +void daPy_py_c::setPlayerSe(u32 i_sfxID) { + daAlink_getAlinkActorClass()->seStartOnlyReverb(i_sfxID); } /* 8015F55C-8015F60C 159E9C 00B0+00 1/1 0/0 2/2 .text @@ -696,7 +707,8 @@ bool daPy_py_c::linkGrabSubjectNoDraw(fopAc_ac_c* p_ac) { } } - if (check_carry && dComIfGp_checkCameraAttentionStatus(i_dComIfGp_getPlayerCameraID(0), 2) != 0) { + if (check_carry && + dComIfGp_checkCameraAttentionStatus(i_dComIfGp_getPlayerCameraID(0), 2) != 0) { ret = true; } @@ -718,8 +730,7 @@ asm bool daPy_py_c::linkGrabSubjectNoDraw(fopAc_ac_c* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daPy_py_c::wolfGrabSubjectNoDraw(fopAc_ac_c* param_0) { - nofralloc +asm void daPy_py_c::wolfGrabSubjectNoDraw(fopAc_ac_c* param_0){nofralloc #include "asm/d/a/d_a_player/wolfGrabSubjectNoDraw__9daPy_py_cFP10fopAc_ac_c.s" } #pragma pop @@ -735,48 +746,67 @@ bool daPy_py_c::checkRoomRestartStart() { if (mode == 4 || mode == 8 || mode == 5) { return true; - } else { - return false; } + + return false; } /* 8015F698-8015F730 159FD8 0098+00 0/0 2/2 1/1 .text checkCarryStartLightBallA__9daPy_py_cFv */ u32 daPy_py_c::checkCarryStartLightBallA() { - if (checkRoomRestartStart() || !i_dComIfGp_getStage() || !i_dComIfGp_getStage()->getStagInfo() || + if (checkRoomRestartStart() || !i_dComIfGp_getStage() || + !i_dComIfGp_getStage()->getStagInfo() || i_dStage_stagInfo_GetSaveTbl(i_dComIfGp_getStage()->getStagInfo()) != 0x17) { return FALSE; } + return dComIfGs_getLastSceneMode() & 0x100000; } /* 8015F730-8015F7C8 15A070 0098+00 0/0 2/2 1/1 .text checkCarryStartLightBallB__9daPy_py_cFv */ u32 daPy_py_c::checkCarryStartLightBallB() { - if (checkRoomRestartStart() || !i_dComIfGp_getStage() || !i_dComIfGp_getStage()->getStagInfo() || + if (checkRoomRestartStart() || !i_dComIfGp_getStage() || + !i_dComIfGp_getStage()->getStagInfo() || i_dStage_stagInfo_GetSaveTbl(i_dComIfGp_getStage()->getStagInfo()) != 0x17) { return FALSE; } + return dComIfGs_getLastSceneMode() & 0x80000; } -float daPy_py_c::getSpinnerRideSpeed() const { - float rideSpeed; +f32 daPy_py_c::getSpinnerRideSpeed() const { + f32 rideSpeed; + if (checkSpinnerRide()) { rideSpeed = mSpeedF; } else { rideSpeed = lit_4215[0]; } + return rideSpeed; } /* 8015F814-8015F89C 15A154 0088+00 0/0 0/0 1/1 .text checkSpinnerReflectEffect__9daPy_py_cFv */ +// matches with literals +#ifdef NONMATCHING +bool daPy_py_c::checkSpinnerReflectEffect() { + daSpinner_c* spinner = (daSpinner_c*)getSpinnerActor(); + + if (spinner != NULL && spinner->reflectAccept()) { + return true; + } + + return false; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daPy_py_c::checkSpinnerReflectEffect() { +asm bool daPy_py_c::checkSpinnerReflectEffect() { nofralloc #include "asm/d/a/d_a_player/checkSpinnerReflectEffect__9daPy_py_cFv.s" } #pragma pop +#endif /* 8015F89C-8015F8C8 15A1DC 002C+00 0/0 0/0 7/7 .text checkBoomerangCharge__9daPy_py_cFv */ @@ -874,14 +904,3 @@ asm void daPy_addCalcShort(s16* param_0, s16 param_1, s16 param_2, s16 param_3, } #pragma pop #endif - -/* ############################################################################################## */ -/* 803BA14C-803BA160 01726C 0010+04 0/0 4/4 0/0 .data __vt__18daPy_sightPacket_c */ -SECTION_DATA extern void* __vt__18daPy_sightPacket_c[4 + 1 /* padding */] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)draw__18daPy_sightPacket_cFv, - (void*)__dt__18daPy_sightPacket_cFv, - /* padding */ - NULL, -}; diff --git a/src/d/bg/d_bg_plc.cpp b/src/d/bg/d_bg_plc.cpp index 9ae849296d..13fe0796fe 100644 --- a/src/d/bg/d_bg_plc.cpp +++ b/src/d/bg/d_bg_plc.cpp @@ -54,7 +54,7 @@ asm void dBgPlc::getCode(int param_0, sBgPc** param_1) const { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dBgPlc::getGrpCode(int param_0) const { +asm u32 dBgPlc::getGrpCode(int param_0) const { nofralloc #include "asm/d/bg/d_bg_plc/getGrpCode__6dBgPlcCFi.s" } diff --git a/src/d/bg/d_bg_s.cpp b/src/d/bg/d_bg_s.cpp index d4de8b490f..087a1ad529 100644 --- a/src/d/bg/d_bg_s.cpp +++ b/src/d/bg/d_bg_s.cpp @@ -568,7 +568,7 @@ int dBgS::GetMonkeyBarsCode(cBgS_PolyInfo const& poly) { /* 80074DAC-80074E00 06F6EC 0054+00 0/0 0/0 1/1 .text * GetUnderwaterRoofCode__4dBgSFRC13cBgS_PolyInfo */ -int dBgS::GetUnderwaterRoofCode(cBgS_PolyInfo const& poly) { +u32 dBgS::GetUnderwaterRoofCode(cBgS_PolyInfo const& poly) { int bg_index = poly.GetBgIndex(); if (m_chk_element[bg_index].ChkUsed()) { return m_chk_element[bg_index].m_bgw_base_ptr->GetUnderwaterRoofCode(poly.GetPolyIndex()); @@ -658,7 +658,7 @@ s32 dBgS::GetRoomPathPntNo(cBgS_PolyInfo const& poly) { } /* 80075080-800750D0 06F9C0 0050+00 0/0 2/2 0/0 .text GetGrpSoundId__4dBgSFRC13cBgS_PolyInfo */ -s32 dBgS::GetGrpSoundId(cBgS_PolyInfo const& poly) { +u8 dBgS::GetGrpSoundId(cBgS_PolyInfo const& poly) { int bg_index = poly.GetBgIndex(); if (m_chk_element[bg_index].ChkUsed()) { return m_chk_element[bg_index].m_bgw_base_ptr->GetGrpSoundId(poly); diff --git a/src/d/bg/d_bg_w.cpp b/src/d/bg/d_bg_w.cpp index e6972b6fc5..33648aa461 100644 --- a/src/d/bg/d_bg_w.cpp +++ b/src/d/bg/d_bg_w.cpp @@ -5,10 +5,10 @@ #include "d/bg/d_bg_w.h" #include "JSystem/JMath/JMATrigonometric.h" +#include "SSystem/SComponent/c_math.h" #include "d/com/d_com_inf_game.h" #include "dol2asm.h" #include "dolphin/mtx/mtxvec.h" -#include "dolphin/types.h" // // Forward References: @@ -458,44 +458,90 @@ void cBgW::FreeArea() { } /* 800793C4-80079484 073D04 00C0+00 2/2 0/0 1/1 .text GlobalVtx__4cBgWFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::GlobalVtx() { - nofralloc -#include "asm/d/bg/d_bg_w/GlobalVtx__4cBgWFv.s" +void cBgW::GlobalVtx() { + if (pm_base != NULL) { + if (!field_0x89) { + for (int i = 0; i < pm_bgd->m_v_num; i++) { + Vec* vtx = &pm_vtx_tbl[i]; + PSVECAdd(vtx, &field_0x7c, vtx); + } + } else { + for (int i = 0; i < pm_bgd->m_v_num; i++) { + PSMTXMultVec(pm_base, &pm_bgd->m_v_tbl[i], &pm_vtx_tbl[i]); + } + } + } } -#pragma pop /* 80079484-80079564 073DC4 00E0+00 1/1 0/0 0/0 .text SetVtx__4cBgWFv */ +// matches with literals +#ifdef NONMATCHING +int cBgW::SetVtx() { + if (field_0x88 & 0x10) { + pm_vtx_tbl = NULL; + } else if (field_0x88 & 0x1) { + pm_vtx_tbl = new Vec[pm_bgd->m_v_num]; + + if (pm_vtx_tbl == NULL) { + return true; + } + + if (field_0x88 & 0x40) { + for (int i = 0; i < pm_bgd->m_v_num; i++) { + pm_vtx_tbl[i].x = 0.0f; + pm_vtx_tbl[i].y = 0.0f; + pm_vtx_tbl[i].z = 0.0f; + } + } + + GlobalVtx(); + } else { + pm_vtx_tbl = pm_bgd->m_v_tbl; + } + + return false; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void cBgW::SetVtx() { +asm bool cBgW::SetVtx() { nofralloc #include "asm/d/bg/d_bg_w/SetVtx__4cBgWFv.s" } #pragma pop +#endif /* 80079564-80079668 073EA4 0104+00 2/0 1/0 0/0 .text CalcPlane__4cBgWFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::CalcPlane() { - nofralloc -#include "asm/d/bg/d_bg_w/CalcPlane__4cBgWFv.s" +void cBgW::CalcPlane() { + dzb_tri_data* tri_data = pm_bgd->m_t_tbl; + + if (pm_vtx_tbl != NULL) { + if (!field_0x89) { + for (int i = 0; i < pm_bgd->m_t_num; i++) { + pm_tri[i].m_plane.mD -= PSVECDotProduct(&pm_tri[i].m_plane.mNormal, &field_0x7c); + } + } else { + for (int i = 0; i < pm_bgd->m_t_num; i++) { + pm_tri[i].m_plane.SetupFrom3Vtx(&pm_vtx_tbl[tri_data[i].field_0x0], + &pm_vtx_tbl[tri_data[i].field_0x2], + &pm_vtx_tbl[tri_data[i].field_0x4]); + } + } + } } -#pragma pop /* 80079668-800796F8 073FA8 0090+00 1/1 0/0 0/0 .text SetTri__4cBgWFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::SetTri() { - nofralloc -#include "asm/d/bg/d_bg_w/SetTri__4cBgWFv.s" +bool cBgW::SetTri() { + pm_tri = new cBgW_TriElm[pm_bgd->m_t_num]; + + if (pm_tri == NULL) { + return true; + } + + CalcPlane(); + return false; } -#pragma pop /* 800796F8-80079754 074038 005C+00 2/1 0/0 0/0 .text __dt__11cBgW_TriElmFv */ #pragma push @@ -509,24 +555,21 @@ extern "C" asm void __dt__11cBgW_TriElmFv() { #pragma pop /* 80079754-80079770 074094 001C+00 1/1 0/0 0/0 .text __ct__11cBgW_TriElmFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm cBgW_TriElm::cBgW_TriElm() { - nofralloc -#include "asm/d/bg/d_bg_w/__ct__11cBgW_TriElmFv.s" -} -#pragma pop +cBgW_TriElm::cBgW_TriElm() {} /* 80079770-800797BC 0740B0 004C+00 1/1 0/0 0/0 .text BlckConnect__4cBgWFPUsPii */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::BlckConnect(u16* param_0, int* param_1, int param_2) { - nofralloc -#include "asm/d/bg/d_bg_w/BlckConnect__4cBgWFPUsPii.s" +void cBgW::BlckConnect(u16* param_0, int* param_1, int param_2) { + if (*param_0 == 0xFFFF) { + *param_0 = param_2; + } + + if (*param_1 != 0xFFFF) { + pm_rwg[*param_1].field_0x0 = param_2; + } + + *param_1 = param_2; + pm_rwg[*param_1].field_0x0 = 0xFFFF; } -#pragma pop /* 800797BC-8007998C 0740FC 01D0+00 2/0 1/0 0/0 .text ClassifyPlane__4cBgWFv */ #pragma push @@ -539,25 +582,40 @@ asm void cBgW::ClassifyPlane() { #pragma pop /* 8007998C-800799E0 0742CC 0054+00 1/1 0/0 0/0 .text MakeBlckTransMinMax__4cBgWFP4cXyzP4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::MakeBlckTransMinMax(cXyz* param_0, cXyz* param_1) { - nofralloc -#include "asm/d/bg/d_bg_w/MakeBlckTransMinMax__4cBgWFP4cXyzP4cXyz.s" +void cBgW::MakeBlckTransMinMax(cXyz* param_0, cXyz* param_1) { + PSVECAdd(param_0, &field_0x7c, param_0); + PSVECAdd(param_1, &field_0x7c, param_1); } -#pragma pop /* 800799E0-80079A68 074320 0088+00 1/1 0/0 0/0 .text MakeBlckMinMax__4cBgWFiP4cXyzP4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::MakeBlckMinMax(int param_0, cXyz* param_1, cXyz* param_2) { - nofralloc -#include "asm/d/bg/d_bg_w/MakeBlckMinMax__4cBgWFiP4cXyzP4cXyz.s" +void cBgW::MakeBlckMinMax(int vtx_index, cXyz* param_1, cXyz* param_2) { + Vec* vtx = &pm_vtx_tbl[vtx_index]; + + if (param_1->x > vtx->x) { + param_1->x = vtx->x; + } + + if (param_2->x < vtx->x) { + param_2->x = vtx->x; + } + + if (param_1->y > vtx->y) { + param_1->y = vtx->y; + } + + if (param_2->y < vtx->y) { + param_2->y = vtx->y; + } + + if (param_1->z > vtx->z) { + param_1->z = vtx->z; + } + + if (param_2->z < vtx->z) { + param_2->z = vtx->z; + } } -#pragma pop /* ############################################################################################## */ /* 804526FC-80452700 000CFC 0004+00 1/1 0/0 0/0 .sdata2 @3935 */ @@ -570,6 +628,43 @@ SECTION_SDATA2 static f32 lit_3936 = -1000000000.0f; SECTION_SDATA2 static f32 lit_3937 = 1.0f; /* 80079A68-80079BDC 0743A8 0174+00 1/1 0/0 0/0 .text MakeBlckBnd__4cBgWFiP4cXyzP4cXyz */ +// matches with literals +#ifdef NONMATCHING +void cBgW::MakeBlckBnd(int param_0, cXyz* param_1, cXyz* param_2) { + int tmp = pm_bgd->m_b_tbl[param_0].field_0x0; + int tmp2; + + if (param_0 != pm_bgd->m_b_num - 1) { + tmp2 = pm_bgd->m_b_tbl[param_0 + 1].field_0x0 - 1; + } else { + tmp2 = pm_bgd->m_t_num - 1; + } + + if (field_0x89 == 0) { + MakeBlckTransMinMax(param_1, param_2); + } else { + param_1->z = 1000000000.0f; + param_1->y = 1000000000.0f; + param_1->x = 1000000000.0f; + param_2->z = -1000000000.0f; + param_2->y = -1000000000.0f; + param_2->x = -1000000000.0f; + + for (int i = tmp; i <= tmp2; i++) { + MakeBlckMinMax(pm_bgd->m_t_tbl[i].field_0x0, param_1, param_2); + MakeBlckMinMax(pm_bgd->m_t_tbl[i].field_0x2, param_1, param_2); + MakeBlckMinMax(pm_bgd->m_t_tbl[i].field_0x4, param_1, param_2); + } + + param_1->x -= 1.0f; + param_1->y -= 1.0f; + param_1->z -= 1.0f; + param_2->x += 1.0f; + param_2->y += 1.0f; + param_2->z += 1.0f; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -578,16 +673,37 @@ asm void cBgW::MakeBlckBnd(int param_0, cXyz* param_1, cXyz* param_2) { #include "asm/d/bg/d_bg_w/MakeBlckBnd__4cBgWFiP4cXyzP4cXyz.s" } #pragma pop +#endif /* 80079BDC-80079CC4 07451C 00E8+00 1/1 0/0 0/0 .text MakeNodeTreeRp__4cBgWFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::MakeNodeTreeRp(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/MakeNodeTreeRp__4cBgWFi.s" +void cBgW::MakeNodeTreeRp(int param_0) { + dzb_tree_data* tree_data = &pm_bgd->m_tree_tbl[param_0]; + + if (tree_data->field_0x0 & 1) { + int tmp = tree_data->m_id[0]; + + if (tmp != 0xFFFF) { + cXyz* max = (cXyz*)&pm_node_tree[param_0].getMaxP(); + cXyz* min = (cXyz*)&pm_node_tree[param_0].getMinP(); + + MakeBlckBnd(tmp, min, max); + } + } else { + pm_node_tree[param_0].ClearForMinMax(); + + for (int i = 0; i < 8; i++) { + // this is probably wrong, fix later + u16* tmp_p = (u16*)tree_data; + int tmp = tmp_p[i + 2]; + + if (tmp != 0xFFFF) { + MakeNodeTreeRp(tmp); + pm_node_tree[param_0].SetMinMax(pm_node_tree[tmp].getMinP()); + pm_node_tree[param_0].SetMinMax(pm_node_tree[tmp].getMaxP()); + } + } + } } -#pragma pop /* 80079CC4-80079DF0 074604 012C+00 1/1 0/0 0/0 .text MakeNodeTreeGrpRp__4cBgWFi */ #pragma push @@ -599,6 +715,23 @@ asm void cBgW::MakeNodeTreeGrpRp(int param_0) { } #pragma pop +/* void cBgW::MakeNodeTreeGrpRp(int param_0) { + //u16 tmp = pm_bgd->m_g_tbl[param_0].field_0x2e; + + if (pm_bgd->m_g_tbl[param_0].field_0x2e != 0xFFFF) { + MakeNodeTreeRp(pm_bgd->m_g_tbl[param_0].field_0x2e); + pm_node_tree[param_0].SetMin(pm_grp[pm_bgd->m_g_tbl[param_0].field_0x2e].mMin); + pm_node_tree[param_0].SetMax(pm_grp[pm_bgd->m_g_tbl[param_0].field_0x2e].mMax); + } + + u16 tmp2 = pm_bgd->m_g_tbl[param_0].field_0x28; + while (tmp2 != 0xFFFF) { + MakeNodeTreeGrpRp(tmp2); + pm_grp[param_0].SetMin(pm_grp[tmp2].mMin); + pm_grp[param_0].SetMax(pm_node_tree[tmp2].mMax); + } +} */ + /* 80079DF0-80079EEC 074730 00FC+00 2/2 0/0 0/0 .text MakeNodeTree__4cBgWFv */ #pragma push #pragma optimization_level 0 @@ -610,28 +743,77 @@ asm void cBgW::MakeNodeTree() { #pragma pop /* 80079EEC-80079F38 07482C 004C+00 2/0 1/0 0/0 .text ChkMemoryError__4cBgWFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::ChkMemoryError() { - nofralloc -#include "asm/d/bg/d_bg_w/ChkMemoryError__4cBgWFv.s" -} -#pragma pop +bool cBgW::ChkMemoryError() { + if (pm_tri == NULL || pm_rwg == NULL || field_0xa4 == NULL || pm_node_tree == NULL || + pm_grp == NULL) { + return true; + } -/* ############################################################################################## */ -/* 80452708-8045270C 000D08 0004+00 1/1 0/0 0/0 .sdata2 @4073 */ -SECTION_SDATA2 static f32 lit_4073 = 128.0f; + return false; +} /* 80079F38-8007A184 074878 024C+00 1/1 3/3 85/85 .text Set__4cBgWFP6cBgD_tUlPA3_A4_f */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool cBgW::Set(cBgD_t* param_0, u32 param_1, f32 (*param_2)[3][4]) { - nofralloc -#include "asm/d/bg/d_bg_w/Set__4cBgWFP6cBgD_tUlPA3_A4_f.s" +bool cBgW::Set(cBgD_t* pbgd, u32 param_1, Mtx* pbase_mtx) { + field_0x88 = 0x20; + pm_vtx_tbl = NULL; + pm_tri = NULL; + pm_rwg = NULL; + field_0xa4 = NULL; + pm_node_tree = NULL; + pm_grp = NULL; + field_0x90 = cM_rndF(128.0f); + + if (pbgd == NULL) { + return true; + } + + field_0x88 = param_1; + if (field_0x88 & 0x20) { + pm_base = NULL; + PSMTXIdentity(m_inv_mtx); + PSMTXIdentity(field_0x4c); + } else { + pm_base = *pbase_mtx; + PSMTXCopy(pm_base, m_inv_mtx); + PSMTXCopy(pm_base, field_0x4c); + } + + pm_bgd = pbgd; + + if (SetVtx() || SetTri()) { + FreeArea(); + return true; + } + + pm_rwg = new cBgW_RwgElm[pm_bgd->m_t_num]; + if (pm_rwg == NULL) { + FreeArea(); + return true; + } + + field_0xa4 = new cBgW_unk_b_data[pm_bgd->m_b_num]; + if (field_0xa4 == NULL) { + FreeArea(); + return true; + } + + pm_node_tree = new cBgW_NodeTree[pm_bgd->m_tree_num]; + if (pm_node_tree == NULL) { + FreeArea(); + return true; + } + + pm_grp = new cBgW_GrpElm[pm_bgd->m_g_num]; + if (pm_grp == NULL) { + FreeArea(); + return true; + } + + ClassifyPlane(); + field_0x89 = 1; + MakeNodeTree(); + return false; } -#pragma pop /* 8007A184-8007A1E4 074AC4 0060+00 2/1 0/0 0/0 .text __dt__11cBgW_GrpElmFv */ #pragma push @@ -645,24 +827,50 @@ extern "C" asm void __dt__11cBgW_GrpElmFv() { #pragma pop /* 8007A1E4-8007A200 074B24 001C+00 1/1 0/0 0/0 .text __ct__11cBgW_GrpElmFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm cBgW_GrpElm::cBgW_GrpElm() { - nofralloc -#include "asm/d/bg/d_bg_w/__ct__11cBgW_GrpElmFv.s" -} -#pragma pop +cBgW_GrpElm::cBgW_GrpElm() {} /* 8007A200-8007A344 074B40 0144+00 1/1 0/0 0/0 .text RwgLineCheck__4cBgWFUsP11cBgS_LinChk */ +// loop needs work +#ifdef NONMATCHING +bool cBgW::RwgLineCheck(u16 poly_index, cBgS_LinChk* linchk) { + bool chk; + chk = false; + cM3dGTri tri; + + while (1) { + dzb_tri_data* tri_data = &pm_bgd->m_t_tbl[poly_index]; + + tri.setBg(&pm_vtx_tbl[tri_data->field_0x0], &pm_vtx_tbl[tri_data->field_0x2], + &pm_vtx_tbl[tri_data->field_0x4], &pm_tri[poly_index].m_plane); + + cXyz cross; + if (tri.cross(linchk->GetLinP(), &cross, linchk->ChkFrontFlag(), linchk->ChkBackFlag())) { + if (!ChkPolyThrough(poly_index, linchk->GetPolyPassChk())) { + linchk->SetCross(cross); + linchk->SetPolyIndex(poly_index); + chk = true; + } + } + + poly_index = pm_rwg[poly_index].field_0x0; + + if (poly_index != 0xFFFF) { + return chk; + } + } + + return chk; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void cBgW::RwgLineCheck(u16 param_0, cBgS_LinChk* param_1) { +asm bool cBgW::RwgLineCheck(u16 param_0, cBgS_LinChk* param_1) { nofralloc #include "asm/d/bg/d_bg_w/RwgLineCheck__4cBgWFUsP11cBgS_LinChk.s" } #pragma pop +#endif /* 8007A344-8007A3A0 074C84 005C+00 1/0 0/0 0/0 .text __dt__8cM3dGTriFv */ #pragma push @@ -677,34 +885,81 @@ extern "C" asm void __dt__8cM3dGTriFv() { /* 8007A3A0-8007A52C 074CE0 018C+00 1/1 0/0 0/0 .text LineCheckRp__4cBgWFP11cBgS_LinChki */ +#ifdef NONMATCHING +bool cBgW::LineCheckRp(cBgS_LinChk* linchk, int param_1) { + cBgW_NodeTree* pnode0 = &pm_node_tree[param_1]; + cM3dGLin* lin = linchk->GetLinP(); + + if (!cM3d_Cross_MinMaxBoxLine(&pnode0->getMinP(), &pnode0->getMaxP(), &lin->GetStartP(), + &lin->GetEndP())) { + return false; + } + + dzb_tree_data* pnode = &pm_bgd->m_tree_tbl[param_1]; + bool chk = false; + + if (pnode->field_0x0 & 1) { + if (linchk->GetPreWallChk()) { + u16 tmp = field_0xa4[pnode->m_id[0]].field_0x2; + if (tmp != 0xFFFF && RwgLineCheck(tmp, linchk)) { + chk = true; + } + } + + if (linchk->GetPreGroundChk()) { + u16 tmp = field_0xa4[pnode->m_id[0]].field_0x4; + if (tmp != 0xFFFF && RwgLineCheck(tmp, linchk)) { + chk = true; + } + } + + if (linchk->GetPreRoofChk()) { + u16 tmp = field_0xa4[pnode->m_id[0]].field_0x0; + if (tmp != 0xFFFF && RwgLineCheck(tmp, linchk)) { + chk = true; + } + } + + return chk; + } + + for (int i = 0; i < 8; i++) { + // this is probably wrong, fix later + u16* tmp_p = (u16*)pnode; + u16 tmp = tmp_p[i + 2]; + + if (tmp != 0xFFFF && LineCheckRp(linchk, tmp)) { + chk = true; + } + } + + return chk; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void cBgW::LineCheckRp(cBgS_LinChk* param_0, int param_1) { +asm bool cBgW::LineCheckRp(cBgS_LinChk* param_0, int param_1) { nofralloc #include "asm/d/bg/d_bg_w/LineCheckRp__4cBgWFP11cBgS_LinChki.s" } #pragma pop +#endif /* 8007A52C-8007A658 074E6C 012C+00 1/1 0/0 0/0 .text LineCheckGrpRp__4cBgWFP11cBgS_LinChkii */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void cBgW::LineCheckGrpRp(cBgS_LinChk* param_0, int param_1, int param_2) { +asm bool cBgW::LineCheckGrpRp(cBgS_LinChk* param_0, int param_1, int param_2) { nofralloc #include "asm/d/bg/d_bg_w/LineCheckGrpRp__4cBgWFP11cBgS_LinChkii.s" } #pragma pop /* 8007A658-8007A680 074F98 0028+00 2/0 1/0 0/0 .text LineCheck__4cBgWFP11cBgS_LinChk */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool cBgW::LineCheck(cBgS_LinChk* param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/LineCheck__4cBgWFP11cBgS_LinChk.s" +bool cBgW::LineCheck(cBgS_LinChk* pchk) { + return LineCheckGrpRp(pchk, field_0x92, 1); } -#pragma pop /* 8007A680-8007A774 074FC0 00F4+00 2/2 0/0 0/0 .text * RwgGroundCheckCommon__4cBgWFfUsP11cBgS_GndChk */ @@ -756,7 +1011,7 @@ asm void cBgW::GroundCrossRp(cBgS_GndChk* param_0, int param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void cBgW::GroundCrossGrpRp(cBgS_GndChk* param_0, int param_1, int param_2) { +asm bool cBgW::GroundCrossGrpRp(cBgS_GndChk* param_0, int param_1, int param_2) { nofralloc #include "asm/d/bg/d_bg_w/GroundCrossGrpRp__4cBgWFP11cBgS_GndChkii.s" } @@ -764,34 +1019,55 @@ asm void cBgW::GroundCrossGrpRp(cBgS_GndChk* param_0, int param_1, int param_2) /* 8007AB9C-8007ABC4 0754DC 0028+00 2/0 1/0 0/0 .text GroundCross__4cBgWFP11cBgS_GndChk */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool cBgW::GroundCross(cBgS_GndChk* param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GroundCross__4cBgWFP11cBgS_GndChk.s" +bool cBgW::GroundCross(cBgS_GndChk* pchk) { + return GroundCrossGrpRp(pchk, field_0x92, 1); } -#pragma pop /* 8007ABC4-8007AC10 075504 004C+00 1/1 0/0 0/0 .text CopyOldMtx__4cBgWFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::CopyOldMtx() { - nofralloc -#include "asm/d/bg/d_bg_w/CopyOldMtx__4cBgWFv.s" +void cBgW::CopyOldMtx() { + if (pm_base != NULL) { + PSMTXCopy(field_0x4c, m_inv_mtx); + PSMTXCopy(pm_base, field_0x4c); + } } -#pragma pop /* 8007AC10-8007ADF0 075550 01E0+00 1/1 0/0 0/0 .text Move__4cBgWFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::Move() { - nofralloc -#include "asm/d/bg/d_bg_w/Move__4cBgWFv.s" +void cBgW::Move() { + if (!ChkLock() && (field_0x88 & 1)) { + if (!ChkNoCalcVtx()) { + if (field_0x90 >= 0xFF || field_0x4c[0][0] != pm_base[0][0] || + field_0x4c[0][1] != pm_base[0][1] || field_0x4c[0][2] != pm_base[0][2] || + field_0x4c[1][0] != pm_base[1][0] || field_0x4c[1][1] != pm_base[1][1] || + field_0x4c[1][2] != pm_base[1][2] || field_0x4c[2][0] != pm_base[2][0] || + field_0x4c[2][1] != pm_base[2][1] || field_0x4c[2][2] != pm_base[2][2]) { + field_0x89 = 1; + } else if (field_0x4c[0][3] == pm_base[0][3] && field_0x4c[1][3] == pm_base[1][3] && + field_0x4c[2][3] == pm_base[2][3]) { + PSMTXCopy(pm_base, m_inv_mtx); + if (!ChkFlush()) { + return; + } + } else { + field_0x7c.x = pm_base[0][3] - field_0x4c[0][3]; + field_0x7c.y = pm_base[1][3] - field_0x4c[1][3]; + field_0x7c.z = pm_base[2][3] - field_0x4c[2][3]; + field_0x89 = 0; + } + + if (field_0x90 >= 0xFF) { + field_0x90 = 0; + } else { + field_0x90++; + } + GlobalVtx(); + } + + CopyOldMtx(); + CalcPlane(); + ClassifyPlane(); + MakeNodeTree(); + } } -#pragma pop /* 8007ADF0-8007AEA4 075730 00B4+00 1/1 0/0 0/0 .text RwgShdwDraw__4cBgWFiP13cBgS_ShdwDraw */ #pragma push @@ -825,14 +1101,9 @@ asm void cBgW::ShdwDrawGrpRp(cBgS_ShdwDraw* param_0, int param_1) { #pragma pop /* 8007B084-8007B0A8 0759C4 0024+00 2/0 1/0 0/0 .text ShdwDraw__4cBgWFP13cBgS_ShdwDraw */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::ShdwDraw(cBgS_ShdwDraw* param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/ShdwDraw__4cBgWFP13cBgS_ShdwDraw.s" +void cBgW::ShdwDraw(cBgS_ShdwDraw* pshdw) { + ShdwDrawGrpRp(pshdw, field_0x92); } -#pragma pop /* 8007B0A8-8007B0B0 0759E8 0008+00 1/0 0/0 0/0 .text ChkPolyThrough__4cBgWFiP16cBgS_PolyPassChk */ @@ -842,14 +1113,9 @@ bool cBgW::ChkPolyThrough(int param_0, cBgS_PolyPassChk* param_1) { /* 8007B0B0-8007B0DC 0759F0 002C+00 1/0 0/0 0/0 .text * ChkShdwDrawThrough__4cBgWFiP16cBgS_PolyPassChk */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::ChkShdwDrawThrough(int param_0, cBgS_PolyPassChk* param_1) { - nofralloc -#include "asm/d/bg/d_bg_w/ChkShdwDrawThrough__4cBgWFiP16cBgS_PolyPassChk.s" +bool cBgW::ChkShdwDrawThrough(int param_0, cBgS_PolyPassChk* param_1) { + return ChkPolyThrough(param_0, param_1); } -#pragma pop /* 8007B0DC-8007B0E4 075A1C 0008+00 1/0 0/0 0/0 .text ChkGrpThrough__4cBgWFiP15cBgS_GrpPassChki */ bool cBgW::ChkGrpThrough(int param_0, cBgS_GrpPassChk* param_1, int param_2) { @@ -857,6 +1123,27 @@ bool cBgW::ChkGrpThrough(int param_0, cBgS_GrpPassChk* param_1, int param_2) { } /* 8007B0E4-8007B164 075A24 0080+00 2/0 1/0 0/0 .text GetGrpRoomIndex__4cBgWCFRC13cBgS_PolyInfo */ +// missing array access instruction generation +#ifdef NONMATCHING +s32 cBgW::GetGrpRoomIndex(cBgS_PolyInfo const& poly) const { + u16 poly_index = poly.GetPolyIndex(); + int grp_index = GetTriGrp(poly_index); + + u16 tmp = pm_bgd->m_g_tbl[grp_index].field_0x24; + int room_index; + + if (tmp == 0xFFFF || pm_bgd->m_g_tbl[tmp].field_0x24 == 0xFFFF) { + return 0xFF; + } + + int room_index = pm_bgd->m_g_tbl[tmp].field_0x2a; + if (room_index >= 0xFF) { + room_index = 0xFF; + } + + return room_index; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -865,477 +1152,284 @@ asm s32 cBgW::GetGrpRoomIndex(cBgS_PolyInfo const& param_0) const { #include "asm/d/bg/d_bg_w/GetGrpRoomIndex__4cBgWCFRC13cBgS_PolyInfo.s" } #pragma pop +#endif /* 8007B164-8007B17C 075AA4 0018+00 2/0 1/0 0/0 .text GetBnd__4cBgWCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::GetBnd() const { - nofralloc -#include "asm/d/bg/d_bg_w/GetBnd__4cBgWCFv.s" +cM3dGAab* cBgW::GetBnd() const { + return &pm_grp[field_0x92].m_aab; } -#pragma pop /* 8007B17C-8007B1B4 075ABC 0038+00 0/0 1/1 0/0 .text GetTrans__4cBgWCFP4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::GetTrans(cXyz* param_0) const { - nofralloc -#include "asm/d/bg/d_bg_w/GetTrans__4cBgWCFP4cXyz.s" +void cBgW::GetTrans(cXyz* p_trans) const { + MtxP base = pm_base; + p_trans->x = base[0][3] - m_inv_mtx[0][3]; + p_trans->y = base[1][3] - m_inv_mtx[1][3]; + p_trans->z = base[2][3] - m_inv_mtx[2][3]; } -#pragma pop /* 8007B1B4-8007B240 075AF4 008C+00 2/0 1/0 0/0 .text * GetTriPnt__4cBgWCFRC13cBgS_PolyInfoP4cXyzP4cXyzP4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool cBgW::GetTriPnt(cBgS_PolyInfo const& param_0, cXyz* param_1, cXyz* param_2, - cXyz* param_3) const { - nofralloc -#include "asm/d/bg/d_bg_w/GetTriPnt__4cBgWCFRC13cBgS_PolyInfoP4cXyzP4cXyzP4cXyz.s" +bool cBgW::GetTriPnt(cBgS_PolyInfo const& poly, cXyz* p_pnt1, cXyz* p_pnt2, cXyz* p_pnt3) const { + u16 poly_index = poly.GetPolyIndex(); + dzb_tri_data* tri_data = &pm_bgd->m_t_tbl[poly_index]; + + p_pnt1->set(pm_vtx_tbl[tri_data->field_0x0]); + p_pnt2->set(pm_vtx_tbl[tri_data->field_0x2]); + p_pnt3->set(pm_vtx_tbl[tri_data->field_0x4]); + return true; } -#pragma pop /* 8007B240-8007B270 075B80 0030+00 2/0 1/0 0/0 .text GetTopUnder__4cBgWCFPfPf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::GetTopUnder(f32* param_0, f32* param_1) const { - nofralloc -#include "asm/d/bg/d_bg_w/GetTopUnder__4cBgWCFPfPf.s" +void cBgW::GetTopUnder(f32* p_top, f32* p_under) const { + *p_under = pm_grp[field_0x92].m_aab.getMinP().y; + *p_top = pm_grp[field_0x92].m_aab.getMaxP().y; } -#pragma pop /* 8007B270-8007B2B0 075BB0 0040+00 2/0 1/0 0/0 .text GetTriPla__4cBgWCFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm cM3dGPla cBgW::GetTriPla(cBgS_PolyInfo const& param_0) const { - nofralloc -#include "asm/d/bg/d_bg_w/GetTriPla__4cBgWCFRC13cBgS_PolyInfo.s" +cM3dGPla cBgW::GetTriPla(cBgS_PolyInfo const& poly) const { + u16 poly_index = poly.GetPolyIndex(); + return pm_tri[poly_index].m_plane; } -#pragma pop /* 8007B2B0-8007B2F4 075BF0 0044+00 2/0 1/0 0/0 .text GetGrpInf__4cBgWCFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 cBgW::GetGrpInf(cBgS_PolyInfo const& param_0) const { - nofralloc -#include "asm/d/bg/d_bg_w/GetGrpInf__4cBgWCFRC13cBgS_PolyInfo.s" +u32 cBgW::GetGrpInf(cBgS_PolyInfo const& poly) const { + int grp = GetTriGrp(poly.GetPolyIndex()); + return pm_bgd->m_g_tbl[grp].m_info; } -#pragma pop /* 8007B2F4-8007B30C 075C34 0018+00 5/5 0/0 0/0 .text GetPolyInfId__4cBgWCFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::GetPolyInfId(int param_0) const { - nofralloc -#include "asm/d/bg/d_bg_w/GetPolyInfId__4cBgWCFi.s" +int cBgW::GetPolyInfId(int poly_index) const { + return pm_bgd->m_t_tbl[poly_index].m_id; } -#pragma pop /* 8007B30C-8007B360 075C4C 0054+00 6/6 0/0 0/0 .text GetPolyInf0__4cBgWCFiUlUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::GetPolyInf0(int param_0, u32 param_1, u32 param_2) const { - nofralloc -#include "asm/d/bg/d_bg_w/GetPolyInf0__4cBgWCFiUlUl.s" +u32 cBgW::GetPolyInf0(int poly_index, u32 mask, u32 shift) const { + int id = GetPolyInfId(poly_index); + return (pm_bgd->m_ti_tbl[id].m_info0 & mask) >> shift; } -#pragma pop /* 8007B360-8007B3AC 075CA0 004C+00 10/10 0/0 0/0 .text GetMaskPolyInf0_NoShift__4cBgWCFiUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::GetMaskPolyInf0_NoShift(int param_0, u32 param_1) const { - nofralloc -#include "asm/d/bg/d_bg_w/GetMaskPolyInf0_NoShift__4cBgWCFiUl.s" +u32 cBgW::GetMaskPolyInf0_NoShift(int poly_index, u32 mask) const { + int id = GetPolyInfId(poly_index); + return (pm_bgd->m_ti_tbl[id].m_info0 & mask); } -#pragma pop /* 8007B3AC-8007B3D8 075CEC 002C+00 1/0 1/0 0/0 .text GetExitId__4dBgWFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 dBgW::GetExitId(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetExitId__4dBgWFRC13cBgS_PolyInfo.s" +s32 dBgW::GetExitId(cBgS_PolyInfo const& poly) { + return GetPolyInf0(poly.GetPolyIndex(), 0x3F, 0); } -#pragma pop /* 8007B3D8-8007B404 075D18 002C+00 1/0 1/0 0/0 .text GetPolyColor__4dBgWFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 dBgW::GetPolyColor(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetPolyColor__4dBgWFRC13cBgS_PolyInfo.s" +s32 dBgW::GetPolyColor(cBgS_PolyInfo const& poly) { + return GetPolyInf0(poly.GetPolyIndex(), 0x3FC0, 6); } -#pragma pop /* 8007B404-8007B430 075D44 002C+00 1/0 1/0 0/0 .text GetHorseNoEntry__4dBgWFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm BOOL dBgW::GetHorseNoEntry(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetHorseNoEntry__4dBgWFRC13cBgS_PolyInfo.s" +BOOL dBgW::GetHorseNoEntry(cBgS_PolyInfo const& poly) { + return GetPolyInf0(poly.GetPolyIndex(), 0x200000, 21); } -#pragma pop /* 8007B430-8007B460 075D70 0030+00 1/0 1/0 0/0 .text GetSpecialCode__4dBgWFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int dBgW::GetSpecialCode(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetSpecialCode__4dBgWFRC13cBgS_PolyInfo.s" +int dBgW::GetSpecialCode(cBgS_PolyInfo const& poly) { + return GetSpecialCode(poly.GetPolyIndex()); } -#pragma pop /* 8007B460-8007B488 075DA0 0028+00 1/0 1/0 0/0 .text GetSpecialCode__4dBgWFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int dBgW::GetSpecialCode(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetSpecialCode__4dBgWFi.s" +int dBgW::GetSpecialCode(int poly_index) { + return GetPolyInf0(poly_index, 0xF000000, 24); } -#pragma pop /* 8007B488-8007B4B4 075DC8 002C+00 1/0 1/0 0/0 .text GetMagnetCode__4dBgWFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int dBgW::GetMagnetCode(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetMagnetCode__4dBgWFRC13cBgS_PolyInfo.s" +int dBgW::GetMagnetCode(cBgS_PolyInfo const& poly) { + return GetPolyInf0(poly.GetPolyIndex(), 0x30000000, 28); } -#pragma pop /* 8007B4B4-8007B4E0 075DF4 002C+00 1/0 1/0 0/0 .text GetMonkeyBarsCode__4dBgWFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int dBgW::GetMonkeyBarsCode(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetMonkeyBarsCode__4dBgWFRC13cBgS_PolyInfo.s" +int dBgW::GetMonkeyBarsCode(cBgS_PolyInfo const& poly) { + return GetPolyInf0(poly.GetPolyIndex(), 0x80000000, 31); } -#pragma pop /* 8007B4E0-8007B504 075E20 0024+00 1/0 1/0 0/0 .text GetPolyObjThrough__4dBgWFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgW::GetPolyObjThrough(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetPolyObjThrough__4dBgWFi.s" +u32 dBgW::GetPolyObjThrough(int poly_index) { + return GetMaskPolyInf0_NoShift(poly_index, 0x4000); } -#pragma pop /* 8007B504-8007B52C 075E44 0028+00 1/0 1/0 0/0 .text GetPolyCamThrough__4dBgWFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgW::GetPolyCamThrough(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetPolyCamThrough__4dBgWFi.s" +u32 dBgW::GetPolyCamThrough(int poly_index) { + return GetMaskPolyInf0_NoShift(poly_index, 0x8000); } -#pragma pop /* 8007B52C-8007B550 075E6C 0024+00 1/0 1/0 0/0 .text GetPolyLinkThrough__4dBgWFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgW::GetPolyLinkThrough(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetPolyLinkThrough__4dBgWFi.s" +u32 dBgW::GetPolyLinkThrough(int poly_index) { + return GetMaskPolyInf0_NoShift(poly_index, 0x10000); } -#pragma pop /* 8007B550-8007B574 075E90 0024+00 1/0 1/0 0/0 .text GetPolyArrowThrough__4dBgWFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgW::GetPolyArrowThrough(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetPolyArrowThrough__4dBgWFi.s" +u32 dBgW::GetPolyArrowThrough(int poly_index) { + return GetMaskPolyInf0_NoShift(poly_index, 0x20000); } -#pragma pop /* 8007B574-8007B598 075EB4 0024+00 1/0 1/0 0/0 .text GetPolyHSStick__4dBgWFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 dBgW::GetPolyHSStick(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetPolyHSStick__4dBgWFi.s" +u32 dBgW::GetPolyHSStick(int poly_index) { + return GetMaskPolyInf0_NoShift(poly_index, 0x40000); } -#pragma pop /* 8007B598-8007B5BC 075ED8 0024+00 1/0 1/0 0/0 .text GetPolyBoomerangThrough__4dBgWFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgW::GetPolyBoomerangThrough(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetPolyBoomerangThrough__4dBgWFi.s" +u32 dBgW::GetPolyBoomerangThrough(int poly_index) { + return GetMaskPolyInf0_NoShift(poly_index, 0x80000); } -#pragma pop /* 8007B5BC-8007B5E0 075EFC 0024+00 1/0 1/0 0/0 .text GetPolyRopeThrough__4dBgWFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgW::GetPolyRopeThrough(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetPolyRopeThrough__4dBgWFi.s" +u32 dBgW::GetPolyRopeThrough(int poly_index) { + return GetMaskPolyInf0_NoShift(poly_index, 0x100000); } -#pragma pop /* 8007B5E0-8007B604 075F20 0024+00 1/0 1/0 0/0 .text GetPolyBombThrough__4dBgWFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgW::GetPolyBombThrough(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetPolyBombThrough__4dBgWFi.s" +u32 dBgW::GetPolyBombThrough(int poly_index) { + return GetMaskPolyInf0_NoShift(poly_index, 0x800000); } -#pragma pop /* 8007B604-8007B630 075F44 002C+00 1/0 1/0 0/0 .text GetShdwThrough__4dBgWFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgW::GetShdwThrough(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetShdwThrough__4dBgWFi.s" +bool dBgW::GetShdwThrough(int poly_index) { + return GetMaskPolyInf0_NoShift(poly_index, 0x400000) != 0; } -#pragma pop /* 8007B630-8007B654 075F70 0024+00 1/0 1/0 0/0 .text GetUnderwaterRoofCode__4dBgWFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int dBgW::GetUnderwaterRoofCode(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetUnderwaterRoofCode__4dBgWFi.s" +u32 dBgW::GetUnderwaterRoofCode(int poly_index) { + return GetMaskPolyInf0_NoShift(poly_index, 0x40000000); } -#pragma pop /* 8007B654-8007B6AC 075F94 0058+00 6/6 0/0 0/0 .text GetPolyInf1__4cBgWCFiUlUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::GetPolyInf1(int param_0, u32 param_1, u32 param_2) const { - nofralloc -#include "asm/d/bg/d_bg_w/GetPolyInf1__4cBgWCFiUlUl.s" +u32 cBgW::GetPolyInf1(int poly_index, u32 mask, u32 shift) const { + int id = GetPolyInfId(poly_index); + return (pm_bgd->m_ti_tbl[id].m_info1 & mask) >> shift; } -#pragma pop /* 8007B6AC-8007B6D8 075FEC 002C+00 1/0 1/0 0/0 .text GetLinkNo__4dBgWFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgW::GetLinkNo(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetLinkNo__4dBgWFRC13cBgS_PolyInfo.s" +int dBgW::GetLinkNo(cBgS_PolyInfo const& poly) { + return GetPolyInf1(poly.GetPolyIndex(), 0xFF, 0); } -#pragma pop /* 8007B6D8-8007B704 076018 002C+00 1/0 1/0 0/0 .text GetWallCode__4dBgWFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 dBgW::GetWallCode(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetWallCode__4dBgWFRC13cBgS_PolyInfo.s" +s32 dBgW::GetWallCode(cBgS_PolyInfo const& poly) { + return GetPolyInf1(poly.GetPolyIndex(), 0xF00, 8); } -#pragma pop /* 8007B704-8007B734 076044 0030+00 1/0 1/0 0/0 .text GetPolyAtt0__4dBgWFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int dBgW::GetPolyAtt0(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetPolyAtt0__4dBgWFRC13cBgS_PolyInfo.s" +int dBgW::GetPolyAtt0(cBgS_PolyInfo const& poly) { + return GetPolyInf1(poly.GetPolyIndex(), 0xF000, 12); } -#pragma pop /* 8007B734-8007B760 076074 002C+00 1/0 1/0 0/0 .text GetPolyAtt1__4dBgWFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int dBgW::GetPolyAtt1(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetPolyAtt1__4dBgWFRC13cBgS_PolyInfo.s" +int dBgW::GetPolyAtt1(cBgS_PolyInfo const& poly) { + return GetPolyInf1(poly.GetPolyIndex(), 0x70000, 16); } -#pragma pop /* 8007B760-8007B78C 0760A0 002C+00 1/0 1/0 0/0 .text GetGroundCode__4dBgWFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int dBgW::GetGroundCode(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetGroundCode__4dBgWFRC13cBgS_PolyInfo.s" +int dBgW::GetGroundCode(cBgS_PolyInfo const& poly) { + return GetPolyInf1(poly.GetPolyIndex(), 0xF80000, 19); } -#pragma pop /* 8007B78C-8007B7DC 0760CC 0050+00 2/2 0/0 0/0 .text GetMaskPolyInf1_NoShift__4cBgWCFiUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::GetMaskPolyInf1_NoShift(int param_0, u32 param_1) const { - nofralloc -#include "asm/d/bg/d_bg_w/GetMaskPolyInf1_NoShift__4cBgWCFiUl.s" +u32 cBgW::GetMaskPolyInf1_NoShift(int poly_index, u32 mask) const { + int id = GetPolyInfId(poly_index); + return (pm_bgd->m_ti_tbl[id].m_info1 & mask); } -#pragma pop /* 8007B7DC-8007B800 07611C 0024+00 1/0 1/0 0/0 .text GetIronBallThrough__4dBgWFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgW::GetIronBallThrough(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetIronBallThrough__4dBgWFi.s" +u32 dBgW::GetIronBallThrough(int poly_index) { + return GetMaskPolyInf1_NoShift(poly_index, 0x1000000); } -#pragma pop /* 8007B800-8007B824 076140 0024+00 1/0 1/0 0/0 .text GetAttackThrough__4dBgWFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 dBgW::GetAttackThrough(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetAttackThrough__4dBgWFi.s" +u32 dBgW::GetAttackThrough(int poly_index) { + return GetMaskPolyInf1_NoShift(poly_index, 0x2000000); } -#pragma pop /* 8007B824-8007B87C 076164 0058+00 4/4 0/0 0/0 .text GetPolyInf2__4cBgWCFiUlUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::GetPolyInf2(int param_0, u32 param_1, u32 param_2) const { - nofralloc -#include "asm/d/bg/d_bg_w/GetPolyInf2__4cBgWCFiUlUl.s" +u32 cBgW::GetPolyInf2(int poly_index, u32 mask, u32 shift) const { + int id = GetPolyInfId(poly_index); + return (pm_bgd->m_ti_tbl[id].m_info2 & mask) >> shift; } -#pragma pop /* 8007B87C-8007B8A8 0761BC 002C+00 1/0 1/0 0/0 .text GetCamMoveBG__4dBgWFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 dBgW::GetCamMoveBG(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetCamMoveBG__4dBgWFRC13cBgS_PolyInfo.s" +s32 dBgW::GetCamMoveBG(cBgS_PolyInfo const& poly) { + return GetPolyInf2(poly.GetPolyIndex(), 0xFF, 0); } -#pragma pop /* 8007B8A8-8007B8D8 0761E8 0030+00 1/0 1/0 0/0 .text GetRoomCamId__4dBgWFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 dBgW::GetRoomCamId(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetRoomCamId__4dBgWFRC13cBgS_PolyInfo.s" +s32 dBgW::GetRoomCamId(cBgS_PolyInfo const& poly) { + return GetPolyInf2(poly.GetPolyIndex(), 0xFF00, 8); } -#pragma pop /* 8007B8D8-8007B904 076218 002C+00 1/0 1/0 0/0 .text GetRoomPathId__4dBgWFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 dBgW::GetRoomPathId(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetRoomPathId__4dBgWFRC13cBgS_PolyInfo.s" +s32 dBgW::GetRoomPathId(cBgS_PolyInfo const& poly) { + return GetPolyInf2(poly.GetPolyIndex(), 0xFF0000, 16); } -#pragma pop /* 8007B904-8007B930 076244 002C+00 1/0 1/0 0/0 .text GetRoomPathPntNo__4dBgWFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 dBgW::GetRoomPathPntNo(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetRoomPathPntNo__4dBgWFRC13cBgS_PolyInfo.s" +s32 dBgW::GetRoomPathPntNo(cBgS_PolyInfo const& poly) { + return GetPolyInf2(poly.GetPolyIndex(), 0xFF000000, 24); } -#pragma pop /* 8007B930-8007B948 076270 0018+00 2/2 0/0 0/0 .text GetTriGrp__4cBgWCFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void cBgW::GetTriGrp(int param_0) const { - nofralloc -#include "asm/d/bg/d_bg_w/GetTriGrp__4cBgWCFi.s" +int cBgW::GetTriGrp(int poly_index) const { + return pm_bgd->m_t_tbl[poly_index].m_grp; } -#pragma pop /* 8007B948-8007B958 076288 0010+00 2/0 1/0 0/0 .text ChkNotReady__4cBgWCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool cBgW::ChkNotReady() const { - nofralloc -#include "asm/d/bg/d_bg_w/ChkNotReady__4cBgWCFv.s" +bool cBgW::ChkNotReady() const { + return pm_vtx_tbl == NULL; } -#pragma pop /* 8007B958-8007B964 076298 000C+00 2/0 1/0 0/0 .text ChkLock__4cBgWCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool cBgW::ChkLock() const { - nofralloc -#include "asm/d/bg/d_bg_w/ChkLock__4cBgWCFv.s" +bool cBgW::ChkLock() const { + return field_0x88 & 0x80; } -#pragma pop /* 8007B964-8007B970 0762A4 000C+00 2/0 1/0 0/0 .text ChkMoveBg__4cBgWCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool cBgW::ChkMoveBg() const { - nofralloc -#include "asm/d/bg/d_bg_w/ChkMoveBg__4cBgWCFv.s" +bool cBgW::ChkMoveBg() const { + return field_0x88 & 0x1; } -#pragma pop /* 8007B970-8007B9C0 0762B0 0050+00 1/1 2/2 87/87 .text __ct__4dBgWFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dBgW::dBgW() { - nofralloc -#include "asm/d/bg/d_bg_w/__ct__4dBgWFv.s" +dBgW::dBgW() { + m_crr_func = NULL; + m_ride_callback = NULL; + m_arrow_stick_callback = NULL; + m_flags = 0; } -#pragma pop /* 8007B9C0-8007B9EC 076300 002C+00 0/0 2/2 115/115 .text Move__4dBgWFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgW::Move() { - nofralloc -#include "asm/d/bg/d_bg_w/Move__4dBgWFv.s" +void dBgW::Move() { + OnMoveFlag(); + cBgW::Move(); } -#pragma pop /* 8007B9EC-8007BA40 07632C 0054+00 2/2 0/0 0/0 .text * positionWallCorrect__4dBgWFP9dBgS_AcchfR8cM3dGPlaP4cXyzf */ +// matches with literals +#ifdef NONMATCHING +void dBgW::positionWallCorrect(dBgS_Acch* param_0, f32 param_1, cM3dGPla& param_2, cXyz* pupper_pos, + f32 param_4) { + param_0->SetWallHit(); + + f32 tmp = param_4 - 1.0f; + if (tmp < 0.0f) { + tmp = 0.0f; + } + + f32 temp_f2 = tmp * param_1; + pupper_pos->x += temp_f2 * param_2.mNormal.x; + pupper_pos->z += temp_f2 * param_2.mNormal.z; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1345,6 +1439,7 @@ asm void dBgW::positionWallCorrect(dBgS_Acch* param_0, f32 param_1, cM3dGPla& pa #include "asm/d/bg/d_bg_w/positionWallCorrect__4dBgWFP9dBgS_AcchfR8cM3dGPlaP4cXyzf.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80452710-80452718 000D10 0004+04 2/2 0/0 0/0 .sdata2 @4962 */ @@ -1380,31 +1475,32 @@ asm void dBgW::WallCorrectRp(dBgS_Acch* param_0, int param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dBgW::WallCorrectGrpRp(dBgS_Acch* param_0, int param_1, int param_2) { +asm bool dBgW::WallCorrectGrpRp(dBgS_Acch* param_0, int param_1, int param_2) { nofralloc #include "asm/d/bg/d_bg_w/WallCorrectGrpRp__4dBgWFP9dBgS_Acchii.s" } #pragma pop /* 8007C484-8007C4AC 076DC4 0028+00 1/0 1/0 0/0 .text WallCorrect__4dBgWFP9dBgS_Acch */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgW::WallCorrect(dBgS_Acch* param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/WallCorrect__4dBgWFP9dBgS_Acch.s" +bool dBgW::WallCorrect(dBgS_Acch* pacch) { + return WallCorrectGrpRp(pacch, field_0x92, 1); } -#pragma pop + +struct wcs_data { + /* 0x0 */ f32 field_0x0; + /* 0x4 */ u16 field_0x4; + /* 0x8 */ int field_0x8; +}; // Size: 0xC /* ############################################################################################## */ /* 80424B80-80424F70 0518A0 03F0+00 1/1 0/0 0/0 .bss l_wcsbuf */ -static u8 l_wcsbuf[1008]; +static wcs_data l_wcsbuf[84]; /* 80450F80-80450F84 000480 0004+00 2/2 0/0 0/0 .sbss l_start */ -static u8 l_start[4]; +static wcs_data* l_start; /* 80450F84-80450F88 000484 0004+00 2/2 0/0 0/0 .sbss l_wcsbuf_num */ -static u8 l_wcsbuf_num[4]; +static int l_wcsbuf_num; /* 8007C4AC-8007C714 076DEC 0268+00 1/1 0/0 0/0 .text RwgWallCorrectSort__4dBgWFP9dBgS_AcchUs */ #pragma push @@ -1473,21 +1569,16 @@ asm void dBgW::RoofChkRp(dBgS_RoofChk* param_0, int param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dBgW::RoofChkGrpRp(dBgS_RoofChk* param_0, int param_1, int param_2) { +asm bool dBgW::RoofChkGrpRp(dBgS_RoofChk* param_0, int param_1, int param_2) { nofralloc #include "asm/d/bg/d_bg_w/RoofChkGrpRp__4dBgWFP12dBgS_RoofChkii.s" } #pragma pop /* 8007D470-8007D498 077DB0 0028+00 1/0 1/0 0/0 .text RoofChk__4dBgWFP12dBgS_RoofChk */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool dBgW::RoofChk(dBgS_RoofChk* param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/RoofChk__4dBgWFP12dBgS_RoofChk.s" +bool dBgW::RoofChk(dBgS_RoofChk* pchk) { + return RoofChkGrpRp(pchk, field_0x92, 1); } -#pragma pop /* 8007D498-8007D5C4 077DD8 012C+00 1/1 0/0 0/0 .text RwgSplGrpChk__4dBgWFUsP14dBgS_SplGrpChk */ #pragma push @@ -1513,7 +1604,7 @@ asm void dBgW::SplGrpChkRp(dBgS_SplGrpChk* param_0, int param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dBgW::SplGrpChkGrpRp(dBgS_SplGrpChk* param_0, int param_1, int param_2) { +asm bool dBgW::SplGrpChkGrpRp(dBgS_SplGrpChk* param_0, int param_1, int param_2) { nofralloc #include "asm/d/bg/d_bg_w/SplGrpChkGrpRp__4dBgWFP14dBgS_SplGrpChkii.s" } @@ -1521,14 +1612,9 @@ asm void dBgW::SplGrpChkGrpRp(dBgS_SplGrpChk* param_0, int param_1, int param_2) /* 8007D830-8007D858 078170 0028+00 1/0 1/0 0/0 .text SplGrpChk__4dBgWFP14dBgS_SplGrpChk */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool dBgW::SplGrpChk(dBgS_SplGrpChk* param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/SplGrpChk__4dBgWFP14dBgS_SplGrpChk.s" +bool dBgW::SplGrpChk(dBgS_SplGrpChk* pchk) { + return SplGrpChkGrpRp(pchk, field_0x92, 1); } -#pragma pop /* 8007D858-8007D8E8 078198 0090+00 1/1 0/0 0/0 .text RwgCaptPoly__4dBgWFiR13dBgS_CaptPoly */ #pragma push @@ -1562,14 +1648,9 @@ asm void dBgW::CaptPolyGrpRp(dBgS_CaptPoly& param_0, int param_1, int param_2) { #pragma pop /* 8007DAF8-8007DB20 078438 0028+00 1/0 1/0 0/0 .text CaptPoly__4dBgWFR13dBgS_CaptPoly */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgW::CaptPoly(dBgS_CaptPoly& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/CaptPoly__4dBgWFR13dBgS_CaptPoly.s" +void dBgW::CaptPoly(dBgS_CaptPoly& poly) { + CaptPolyGrpRp(poly, field_0x92, 1); } -#pragma pop /* 8007DB20-8007DC70 078460 0150+00 1/1 0/0 0/0 .text RwgSphChk__4dBgWFUsP11dBgS_SphChkPv */ @@ -1597,42 +1678,27 @@ asm void dBgW::SphChkRp(dBgS_SphChk* param_0, void* param_1, int param_2) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dBgW::SphChkGrpRp(dBgS_SphChk* param_0, void* param_1, int param_2, int param_3) { +asm bool dBgW::SphChkGrpRp(dBgS_SphChk* param_0, void* param_1, int param_2, int param_3) { nofralloc #include "asm/d/bg/d_bg_w/SphChkGrpRp__4dBgWFP11dBgS_SphChkPvii.s" } #pragma pop /* 8007DF00-8007DF28 078840 0028+00 1/0 1/0 0/0 .text SphChk__4dBgWFP11dBgS_SphChkPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool dBgW::SphChk(dBgS_SphChk* param_0, void* param_1) { - nofralloc -#include "asm/d/bg/d_bg_w/SphChk__4dBgWFP11dBgS_SphChkPv.s" +bool dBgW::SphChk(dBgS_SphChk* pchk, void* param_1) { + return SphChkGrpRp(pchk, param_1, field_0x92, 1); } -#pragma pop /* 8007DF28-8007DF58 078868 0030+00 1/0 1/0 0/0 .text GetPolyGrpRoomInfId__4dBgWFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgW::GetPolyGrpRoomInfId(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetPolyGrpRoomInfId__4dBgWFRC13cBgS_PolyInfo.s" +u8 dBgW::GetPolyGrpRoomInfId(cBgS_PolyInfo const& poly) { + return GetGrpInf(poly) & 0xFF; } -#pragma pop /* 8007DF58-8007DF88 078898 0030+00 1/0 1/0 0/0 .text GetGrpSoundId__4dBgWFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 dBgW::GetGrpSoundId(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w/GetGrpSoundId__4dBgWFRC13cBgS_PolyInfo.s" +u8 dBgW::GetGrpSoundId(cBgS_PolyInfo const& poly) { + return GetGrpInf(poly) >> 11; } -#pragma pop /* 8007DF88-8007DFC4 0788C8 003C+00 1/0 0/0 0/0 .text * CrrPos__4dBgWFRC13cBgS_PolyInfoPvbP4cXyzP5csXyzP5csXyz */ @@ -1672,31 +1738,101 @@ asm void dBgW::MatrixCrrPos(cBgS_PolyInfo const& param_0, void* param_1, bool pa /* 8007E02C-8007E360 07896C 0334+00 1/0 1/0 0/0 .text ChkPolyThrough__4dBgWFiP16cBgS_PolyPassChk */ +// should match when dHorse_c member function table is setup +#ifdef NONMATCHING +bool dBgW::ChkPolyThrough(int poly_index, cBgS_PolyPassChk* ppass_chk) { + if (ppass_chk == NULL) { + return false; + } + dBgS_PolyPassChk* chk = (dBgS_PolyPassChk*)ppass_chk; + + if (chk->ChkObj() && GetPolyObjThrough(poly_index)) { + return true; + } + + if (chk->ChkCam() && GetPolyCamThrough(poly_index)) { + return true; + } + + if ((chk->ChkLink() && GetPolyLinkThrough(poly_index)) || + (chk->ChkHorse() && GetPolyLinkThrough(poly_index))) { + return true; + } + + if (chk->ChkArrow() && GetPolyArrowThrough(poly_index)) { + return true; + } + + if (chk->ChkBomb() && GetPolyBombThrough(poly_index)) { + return true; + } + + if (chk->ChkBoomerang() && GetPolyBoomerangThrough(poly_index)) { + return true; + } + + if (chk->ChkRope() && GetPolyRopeThrough(poly_index)) { + return true; + } + + if (chk->ChkUnderwaterRoof() && GetUnderwaterRoofCode(poly_index)) { + return true; + } + + int info_f00 = GetPolyInf1(poly_index, 0xF00, 8); + if (info_f00 == 8 && chk->ChkNoHorse()) { + return true; + } + + if (info_f00 == 9) { + if (chk->ChkNoHorse()) { + return true; + } + + cXyz pos(pm_tri[poly_index].m_plane.mNormal); + if (chk->ChkHorse() && i_dComIfGp_getHorseActor() != NULL) { + if (!i_dComIfGp_getHorseActor()->checkSpecialWallHit(pos)) { + return true; + } + } + } + + if (chk->ChkStatue() && GetSpecialCode(poly_index) == 7) { + return true; + } + + if (chk->ChkIronBall() && GetIronBallThrough(poly_index)) { + return true; + } + + return false; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dBgW::ChkPolyThrough(int param_0, cBgS_PolyPassChk* param_1) { +asm bool dBgW::ChkPolyThrough(int param_0, cBgS_PolyPassChk* param_1) { nofralloc #include "asm/d/bg/d_bg_w/ChkPolyThrough__4dBgWFiP16cBgS_PolyPassChk.s" } #pragma pop +#endif /* 8007E360-8007E3D8 078CA0 0078+00 1/0 1/0 0/0 .text * ChkShdwDrawThrough__4dBgWFiP16cBgS_PolyPassChk */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgW::ChkShdwDrawThrough(int param_0, cBgS_PolyPassChk* param_1) { - nofralloc -#include "asm/d/bg/d_bg_w/ChkShdwDrawThrough__4dBgWFiP16cBgS_PolyPassChk.s" +bool dBgW::ChkShdwDrawThrough(int poly_index, cBgS_PolyPassChk*) { + if (GetShdwThrough(poly_index)) { + return true; + } + + return GetPolyArrowThrough(poly_index); } -#pragma pop /* 8007E3D8-8007E444 078D18 006C+00 1/0 1/0 0/0 .text ChkGrpThrough__4dBgWFiP15cBgS_GrpPassChki */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dBgW::ChkGrpThrough(int param_0, cBgS_GrpPassChk* param_1, int param_2) { +asm bool dBgW::ChkGrpThrough(int param_0, cBgS_GrpPassChk* param_1, int param_2) { nofralloc #include "asm/d/bg/d_bg_w/ChkGrpThrough__4dBgWFiP15cBgS_GrpPassChki.s" } @@ -1704,14 +1840,11 @@ asm void dBgW::ChkGrpThrough(int param_0, cBgS_GrpPassChk* param_1, int param_2) /* 8007E444-8007E474 078D84 0030+00 1/0 1/0 0/0 .text * CallRideCallBack__4dBgWFP10fopAc_ac_cP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgW::CallRideCallBack(fopAc_ac_c* param_0, fopAc_ac_c* param_1) { - nofralloc -#include "asm/d/bg/d_bg_w/CallRideCallBack__4dBgWFP10fopAc_ac_cP10fopAc_ac_c.s" +void dBgW::CallRideCallBack(fopAc_ac_c* param_0, fopAc_ac_c* param_1) { + if (m_ride_callback != NULL) { + m_ride_callback(this, param_0, param_1); + } } -#pragma pop /* 8007E474-8007E4A4 078DB4 0030+00 1/0 1/0 0/0 .text * CallArrowStickCallBack__4dBgWFP10fopAc_ac_cP10fopAc_ac_cR4cXyz */ @@ -1725,34 +1858,29 @@ asm void dBgW::CallArrowStickCallBack(fopAc_ac_c* param_0, fopAc_ac_c* param_1, #pragma pop /* 8007E4A4-8007E4B4 078DE4 0010+00 1/0 1/0 0/0 .text OffMoveFlag__4dBgWFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgW::OffMoveFlag() { - nofralloc -#include "asm/d/bg/d_bg_w/OffMoveFlag__4dBgWFv.s" +void dBgW::OffMoveFlag() { + m_flags &= ~1; } -#pragma pop /* 8007E4B4-8007E4C0 078DF4 000C+00 1/0 1/0 0/0 .text ChkMoveFlag__4dBgWCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 dBgW::ChkMoveFlag() const { - nofralloc -#include "asm/d/bg/d_bg_w/ChkMoveFlag__4dBgWCFv.s" +u32 dBgW::ChkMoveFlag() const { + return m_flags & 1; } -#pragma pop /* 8007E4C0-8007E548 078E00 0088+00 0/0 0/0 1/1 .text dBgW_NewSet__FP6cBgD_tUlPA3_A4_f */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgW_NewSet(cBgD_t* param_0, u32 param_1, f32 (*param_2)[3][4]) { - nofralloc -#include "asm/d/bg/d_bg_w/dBgW_NewSet__FP6cBgD_tUlPA3_A4_f.s" +dBgW* dBgW_NewSet(cBgD_t* pbgd, u32 param_1, Mtx* pbase_mtx) { + dBgW* nw = new dBgW(); + + if (nw == NULL) { + return NULL; + } + + if (nw->Set(pbgd, param_1, pbase_mtx)) { + return NULL; + } + + return nw; } -#pragma pop /* 8007E548-8007E5A8 078E88 0060+00 1/0 0/0 0/0 .text __dt__4dBgWFv */ #pragma push diff --git a/src/d/bg/d_bg_w_kcol.cpp b/src/d/bg/d_bg_w_kcol.cpp index 2075e56fbe..63d4c0e23f 100644 --- a/src/d/bg/d_bg_w_kcol.cpp +++ b/src/d/bg/d_bg_w_kcol.cpp @@ -206,14 +206,9 @@ SECTION_DATA extern void* __vt__8dBgWKCol[60] = { }; /* 8007E6F4-8007E74C 079034 0058+00 0/0 0/0 1/1 .text __ct__8dBgWKColFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dBgWKCol::dBgWKCol() { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/__ct__8dBgWKColFv.s" +dBgWKCol::dBgWKCol() { + m_pkc_head = NULL; } -#pragma pop /* 8007E74C-8007E7D0 07908C 0084+00 1/0 0/0 0/0 .text __dt__8dBgWKColFv */ #pragma push @@ -237,35 +232,22 @@ asm void dBgWKCol::initKCollision(void* param_0) { #pragma pop /* 8007E804-8007E850 079144 004C+00 0/0 0/0 1/1 .text create__8dBgWKColFPvPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::create(void* param_0, void* param_1) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/create__8dBgWKColFPvPv.s" +void dBgWKCol::create(void* pprism, void* plc) { + ClrDBgWBase(); + m_pkc_head = (pkcdata*)pprism; + m_code.setBase(plc); } -#pragma pop /* 8007E850-8007E86C 079190 001C+00 1/1 0/0 0/0 .text getTriNrm__8dBgWKColCFP12KC_PrismDataPP3Vec */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::getTriNrm(KC_PrismData* param_0, Vec** param_1) const { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/getTriNrm__8dBgWKColCFP12KC_PrismDataPP3Vec.s" +void dBgWKCol::getTriNrm(KC_PrismData* pkc, Vec** nrm) const { + *nrm = &m_pkc_head->field_0x4[pkc->field_0x6]; } -#pragma pop /* 8007E86C-8007E87C 0791AC 0010+00 1/0 0/0 0/0 .text ChkNotReady__8dBgWKColCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool dBgWKCol::ChkNotReady() const { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/ChkNotReady__8dBgWKColCFv.s" +bool dBgWKCol::ChkNotReady() const { + return m_pkc_head == NULL; } -#pragma pop /* 8007E87C-8007E884 0791BC 0008+00 1/0 0/0 0/0 .text ChkLock__8dBgWKColCFv */ bool dBgWKCol::ChkLock() const { @@ -278,58 +260,53 @@ bool dBgWKCol::ChkMoveBg() const { } /* 8007E88C-8007E894 0791CC 0008+00 1/0 0/0 0/0 .text ChkMoveFlag__8dBgWKColCFv */ -bool dBgWKCol::ChkMoveFlag() const { - return false; +u32 dBgWKCol::ChkMoveFlag() const { + return 0; } /* 8007E894-8007E8C0 0791D4 002C+00 1/0 0/0 0/0 .text GetTriPla__8dBgWKColCFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm cM3dGPla dBgWKCol::GetTriPla(cBgS_PolyInfo const& param_0) const { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetTriPla__8dBgWKColCFRC13cBgS_PolyInfo.s" +cM3dGPla dBgWKCol::GetTriPla(cBgS_PolyInfo const& poly) const { + int poly_index = poly.GetPolyIndex(); + return GetTriPla(poly_index); } -#pragma pop /* 8007E8C0-8007E980 079200 00C0+00 3/3 0/0 0/0 .text GetTriPla__8dBgWKColCFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetTriPla(int param_0) const { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetTriPla__8dBgWKColCFi.s" +cM3dGPla dBgWKCol::GetTriPla(int poly_index) const { + KC_PrismData* pd = getPrismData(poly_index); + + Vec* tri_nrm; + getTriNrm(pd, &tri_nrm); + + Vec* tri_pos; + getTri1Pos(pd, &tri_pos); + PSVECDotProduct(tri_nrm, tri_pos); + + cM3dGPla plane; + plane.SetupNP(*tri_nrm, *tri_pos); + + return plane; } -#pragma pop /* 8007E980-8007E9A4 0792C0 0024+00 1/0 0/0 0/0 .text * GetTriPnt__8dBgWKColCFRC13cBgS_PolyInfoP4cXyzP4cXyzP4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetTriPnt(cBgS_PolyInfo const& param_0, cXyz* param_1, cXyz* param_2, - cXyz* param_3) const { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetTriPnt__8dBgWKColCFRC13cBgS_PolyInfoP4cXyzP4cXyzP4cXyz.s" +bool dBgWKCol::GetTriPnt(cBgS_PolyInfo const& poly, cXyz* param_1, cXyz* param_2, + cXyz* param_3) const { + int poly_index = poly.GetPolyIndex(); + return GetTriPnt(poly_index, param_1, param_2, param_3); } -#pragma pop /* 8007E9A4-8007E9D4 0792E4 0030+00 3/3 0/0 0/0 .text GetTriPnt__8dBgWKColCFiP3VecP3VecP3Vec */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetTriPnt(int param_0, Vec* param_1, Vec* param_2, Vec* param_3) const { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetTriPnt__8dBgWKColCFiP3VecP3VecP3Vec.s" +bool dBgWKCol::GetTriPnt(int poly_index, Vec* param_1, Vec* param_2, Vec* param_3) const { + KC_PrismData* pd = getPrismData(poly_index); + return GetTriPnt(pd, param_1, param_2, param_3); } -#pragma pop /* 8007E9D4-8007EB28 079314 0154+00 3/3 0/0 0/0 .text * GetTriPnt__8dBgWKColCFPC12KC_PrismDataP3VecP3VecP3Vec */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dBgWKCol::GetTriPnt(KC_PrismData const* param_0, Vec* param_1, Vec* param_2, +asm bool dBgWKCol::GetTriPnt(KC_PrismData const* param_0, Vec* param_1, Vec* param_2, Vec* param_3) const { nofralloc #include "asm/d/bg/d_bg_w_kcol/GetTriPnt__8dBgWKColCFPC12KC_PrismDataP3VecP3VecP3Vec.s" @@ -337,47 +314,37 @@ asm void dBgWKCol::GetTriPnt(KC_PrismData const* param_0, Vec* param_1, Vec* par #pragma pop /* 8007EB28-8007EB30 079468 0008+00 1/0 0/0 0/0 .text GetBnd__8dBgWKColCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetBnd() const { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetBnd__8dBgWKColCFv.s" +cM3dGAab* dBgWKCol::GetBnd() const { + return (cM3dGAab*)&m_bnd; } -#pragma pop /* 8007EB30-8007EB6C 079470 003C+00 1/0 0/0 0/0 .text GetGrpInf__8dBgWKColCFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetGrpInf(cBgS_PolyInfo const& param_0) const { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetGrpInf__8dBgWKColCFRC13cBgS_PolyInfo.s" +u32 dBgWKCol::GetGrpInf(cBgS_PolyInfo const& poly) const { + u16 poly_index = poly.GetPolyIndex(); + KC_PrismData* pd = getPrismData(poly_index); + + return m_code.getGrpCode(pd->field_0xe); } -#pragma pop /* 8007EB6C-8007EB70 0794AC 0004+00 1/0 0/0 0/0 .text OffMoveFlag__8dBgWKColFv */ -void dBgWKCol::OffMoveFlag() { - /* empty function */ -} +void dBgWKCol::OffMoveFlag() {} /* 8007EB70-8007EBC4 0794B0 0054+00 39/39 0/0 0/0 .text getPolyCode__8dBgWKColCFiP5dBgPc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::getPolyCode(int param_0, dBgPc* param_1) const { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/getPolyCode__8dBgWKColCFiP5dBgPc.s" +void dBgWKCol::getPolyCode(int poly_index, dBgPc* pbgpc) const { + KC_PrismData* pd = getPrismData(poly_index); + + sBgPc* code; + m_code.getCode(pd->field_0xe, &code); + pbgpc->setCode(*code); } -#pragma pop /* 8007EBC4-8007EE34 079504 0270+00 8/8 0/0 0/0 .text * chkPolyThrough__8dBgWKColCFP5dBgPcP16cBgS_PolyPassChkP15cBgS_GrpPassChkR4cXyz */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dBgWKCol::chkPolyThrough(dBgPc* param_0, cBgS_PolyPassChk* param_1, +asm bool dBgWKCol::chkPolyThrough(dBgPc* param_0, cBgS_PolyPassChk* param_1, cBgS_GrpPassChk* param_2, cXyz& param_3) const { nofralloc #include "asm/d/bg/d_bg_w_kcol/chkPolyThrough__8dBgWKColCFP5dBgPcP16cBgS_PolyPassChkP15cBgS_GrpPassChkR4cXyz.s" @@ -441,18 +408,17 @@ asm void dBgWKCol::ShdwDraw(cBgS_ShdwDraw* param_0) { #pragma pop /* 8007FF00-8007FF1C 07A840 001C+00 1/1 0/0 0/0 .text ChkShdwDrawThrough__8dBgWKColFP5dBgPc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::ChkShdwDrawThrough(dBgPc* param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/ChkShdwDrawThrough__8dBgWKColFP5dBgPc.s" +bool dBgWKCol::ChkShdwDrawThrough(dBgPc* pbgpc) { + if (pbgpc->getShdwThrough()) { + return true; + } + + return pbgpc->getArrowThrough(); } -#pragma pop /* ############################################################################################## */ /* 80424F70-80424F94 051C90 0024+00 1/1 0/0 0/0 .bss vtx_tbl$4582 */ -static u8 vtx_tbl_4582[36]; +static Vec vtx_tbl_4582[3]; /* 8007FF1C-80080330 07A85C 0414+00 1/0 0/0 0/0 .text CaptPoly__8dBgWKColFR13dBgS_CaptPoly */ #pragma push @@ -501,7 +467,7 @@ asm void dBgWKCol::WallCorrectSort(dBgS_Acch* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dBgWKCol::WallCorrect(dBgS_Acch* param_0) { +asm bool dBgWKCol::WallCorrect(dBgS_Acch* param_0) { nofralloc #include "asm/d/bg/d_bg_w_kcol/WallCorrect__8dBgWKColFP9dBgS_Acch.s" } @@ -530,7 +496,7 @@ asm bool dBgWKCol::SplGrpChk(dBgS_SplGrpChk* param_0) { /* ############################################################################################## */ /* 80425384-804253A8 0520A4 0024+00 1/1 0/0 0/0 .bss vtx_tbl$5950 */ -static u8 vtx_tbl_5950[36]; +static Vec vtx_tbl_5950[3]; /* 800824EC-800829AC 07CE2C 04C0+00 1/0 0/0 0/0 .text SphChk__8dBgWKColFP11dBgS_SphChkPv */ @@ -543,358 +509,297 @@ asm bool dBgWKCol::SphChk(dBgS_SphChk* param_0, void* param_1) { } #pragma pop -/* ############################################################################################## */ -/* 80452750-80452758 000D50 0008+00 1/1 0/0 0/0 .sdata2 @6099 */ -SECTION_SDATA2 static f64 lit_6099 = 4503599627370496.0 /* cast u32 to float */; - /* 800829AC-800829F0 07D2EC 0044+00 1/0 0/0 0/0 .text GetTopUnder__8dBgWKColCFPfPf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetTopUnder(f32* param_0, f32* param_1) const { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetTopUnder__8dBgWKColCFPfPf.s" +void dBgWKCol::GetTopUnder(f32* param_0, f32* param_1) const { + *param_1 = m_pkc_head->m_area_min_pos.y; + *param_0 = *param_1 + (f32)~m_pkc_head->field_0x24; } -#pragma pop /* 800829F0-80082A20 07D330 0030+00 1/0 0/0 0/0 .text * GetGrpRoomIndex__8dBgWKColCFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetGrpRoomIndex(cBgS_PolyInfo const& param_0) const { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetGrpRoomIndex__8dBgWKColCFRC13cBgS_PolyInfo.s" +s32 dBgWKCol::GetGrpRoomIndex(cBgS_PolyInfo const& poly) const { + u16 poly_index = poly.GetPolyIndex(); + + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + return bgpc.getRoom(); } -#pragma pop /* 80082A20-80082A50 07D360 0030+00 1/0 0/0 0/0 .text GetExitId__8dBgWKColFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetExitId(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetExitId__8dBgWKColFRC13cBgS_PolyInfo.s" +s32 dBgWKCol::GetExitId(cBgS_PolyInfo const& poly) { + u16 poly_index = poly.GetPolyIndex(); + + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + return bgpc.getExit(); } -#pragma pop /* 80082A50-80082A80 07D390 0030+00 1/0 0/0 0/0 .text GetPolyColor__8dBgWKColFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetPolyColor(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetPolyColor__8dBgWKColFRC13cBgS_PolyInfo.s" +s32 dBgWKCol::GetPolyColor(cBgS_PolyInfo const& poly) { + u16 poly_index = poly.GetPolyIndex(); + + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + return bgpc.getPolyCol(); } -#pragma pop /* 80082A80-80082AB0 07D3C0 0030+00 1/0 0/0 0/0 .text GetHorseNoEntry__8dBgWKColFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetHorseNoEntry(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetHorseNoEntry__8dBgWKColFRC13cBgS_PolyInfo.s" +BOOL dBgWKCol::GetHorseNoEntry(cBgS_PolyInfo const& poly) { + u16 poly_index = poly.GetPolyIndex(); + + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + return bgpc.getHorseNoEntry(); } -#pragma pop /* 80082AB0-80082AE0 07D3F0 0030+00 1/0 0/0 0/0 .text GetSpecialCode__8dBgWKColFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int dBgWKCol::GetSpecialCode(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetSpecialCode__8dBgWKColFRC13cBgS_PolyInfo.s" +int dBgWKCol::GetSpecialCode(cBgS_PolyInfo const& poly) { + u16 poly_index = poly.GetPolyIndex(); + return GetSpecialCode(poly_index); } -#pragma pop /* 80082AE0-80082B0C 07D420 002C+00 1/0 0/0 0/0 .text GetSpecialCode__8dBgWKColFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int dBgWKCol::GetSpecialCode(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetSpecialCode__8dBgWKColFi.s" +int dBgWKCol::GetSpecialCode(int poly_index) { + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + + return bgpc.getSpl(); } -#pragma pop /* 80082B0C-80082B3C 07D44C 0030+00 1/0 0/0 0/0 .text GetMagnetCode__8dBgWKColFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int dBgWKCol::GetMagnetCode(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetMagnetCode__8dBgWKColFRC13cBgS_PolyInfo.s" +int dBgWKCol::GetMagnetCode(cBgS_PolyInfo const& poly) { + u16 poly_index = poly.GetPolyIndex(); + + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + return bgpc.getMagnet(); } -#pragma pop /* 80082B3C-80082B6C 07D47C 0030+00 1/0 0/0 0/0 .text * GetMonkeyBarsCode__8dBgWKColFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int dBgWKCol::GetMonkeyBarsCode(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetMonkeyBarsCode__8dBgWKColFRC13cBgS_PolyInfo.s" +int dBgWKCol::GetMonkeyBarsCode(cBgS_PolyInfo const& poly) { + u16 poly_index = poly.GetPolyIndex(); + + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + return bgpc.getMonkeyBars(); } -#pragma pop /* 80082B6C-80082B98 07D4AC 002C+00 1/0 0/0 0/0 .text GetPolyObjThrough__8dBgWKColFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetPolyObjThrough(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetPolyObjThrough__8dBgWKColFi.s" +u32 dBgWKCol::GetPolyObjThrough(int poly_index) { + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + + return bgpc.getObjThrough(); } -#pragma pop /* 80082B98-80082BC4 07D4D8 002C+00 1/0 0/0 0/0 .text GetPolyCamThrough__8dBgWKColFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetPolyCamThrough(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetPolyCamThrough__8dBgWKColFi.s" +u32 dBgWKCol::GetPolyCamThrough(int poly_index) { + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + + return bgpc.getCamThrough(); } -#pragma pop /* 80082BC4-80082BF0 07D504 002C+00 1/0 0/0 0/0 .text GetPolyLinkThrough__8dBgWKColFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetPolyLinkThrough(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetPolyLinkThrough__8dBgWKColFi.s" +u32 dBgWKCol::GetPolyLinkThrough(int poly_index) { + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + + return bgpc.getLinkThrough(); } -#pragma pop /* 80082BF0-80082C1C 07D530 002C+00 1/0 0/0 0/0 .text GetPolyArrowThrough__8dBgWKColFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetPolyArrowThrough(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetPolyArrowThrough__8dBgWKColFi.s" +u32 dBgWKCol::GetPolyArrowThrough(int poly_index) { + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + + return bgpc.getArrowThrough(); } -#pragma pop /* 80082C1C-80082C48 07D55C 002C+00 1/0 0/0 0/0 .text GetPolyHSStick__8dBgWKColFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm u32 dBgWKCol::GetPolyHSStick(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetPolyHSStick__8dBgWKColFi.s" +u32 dBgWKCol::GetPolyHSStick(int poly_index) { + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + + return bgpc.getHSStick(); } -#pragma pop /* 80082C48-80082C74 07D588 002C+00 1/0 0/0 0/0 .text GetPolyBoomerangThrough__8dBgWKColFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetPolyBoomerangThrough(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetPolyBoomerangThrough__8dBgWKColFi.s" +u32 dBgWKCol::GetPolyBoomerangThrough(int poly_index) { + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + + return bgpc.getBoomerangThrough(); } -#pragma pop /* 80082C74-80082CA0 07D5B4 002C+00 1/0 0/0 0/0 .text GetPolyRopeThrough__8dBgWKColFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetPolyRopeThrough(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetPolyRopeThrough__8dBgWKColFi.s" +u32 dBgWKCol::GetPolyRopeThrough(int poly_index) { + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + + return bgpc.getRopeThrough(); } -#pragma pop /* 80082CA0-80082CCC 07D5E0 002C+00 1/0 0/0 0/0 .text GetPolyBombThrough__8dBgWKColFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetPolyBombThrough(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetPolyBombThrough__8dBgWKColFi.s" +u32 dBgWKCol::GetPolyBombThrough(int poly_index) { + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + + return bgpc.getBombThrough(); } -#pragma pop /* 80082CCC-80082CF8 07D60C 002C+00 1/0 0/0 0/0 .text GetUnderwaterRoofCode__8dBgWKColFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int dBgWKCol::GetUnderwaterRoofCode(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetUnderwaterRoofCode__8dBgWKColFi.s" +u32 dBgWKCol::GetUnderwaterRoofCode(int poly_index) { + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + + return bgpc.getUnderwaterRoof(); } -#pragma pop /* 80082CF8-80082D24 07D638 002C+00 1/0 0/0 0/0 .text GetShdwThrough__8dBgWKColFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetShdwThrough(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetShdwThrough__8dBgWKColFi.s" +bool dBgWKCol::GetShdwThrough(int poly_index) { + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + + return bgpc.getShdwThrough(); } -#pragma pop /* 80082D24-80082D54 07D664 0030+00 1/0 0/0 0/0 .text GetLinkNo__8dBgWKColFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetLinkNo(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetLinkNo__8dBgWKColFRC13cBgS_PolyInfo.s" +int dBgWKCol::GetLinkNo(cBgS_PolyInfo const& poly) { + u16 poly_index = poly.GetPolyIndex(); + + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + return bgpc.getLinkNo(); } -#pragma pop /* 80082D54-80082D84 07D694 0030+00 1/0 0/0 0/0 .text GetWallCode__8dBgWKColFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 dBgWKCol::GetWallCode(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetWallCode__8dBgWKColFRC13cBgS_PolyInfo.s" +s32 dBgWKCol::GetWallCode(cBgS_PolyInfo const& poly) { + u16 poly_index = poly.GetPolyIndex(); + + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + return bgpc.getWallCode(); } -#pragma pop /* 80082D84-80082DB4 07D6C4 0030+00 1/0 0/0 0/0 .text GetPolyAtt0__8dBgWKColFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int dBgWKCol::GetPolyAtt0(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetPolyAtt0__8dBgWKColFRC13cBgS_PolyInfo.s" +int dBgWKCol::GetPolyAtt0(cBgS_PolyInfo const& poly) { + u16 poly_index = poly.GetPolyIndex(); + + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + return bgpc.getAtt0Code(); } -#pragma pop /* 80082DB4-80082DE4 07D6F4 0030+00 1/0 0/0 0/0 .text GetPolyAtt1__8dBgWKColFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int dBgWKCol::GetPolyAtt1(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetPolyAtt1__8dBgWKColFRC13cBgS_PolyInfo.s" +int dBgWKCol::GetPolyAtt1(cBgS_PolyInfo const& poly) { + u16 poly_index = poly.GetPolyIndex(); + + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + return bgpc.getAtt1Code(); } -#pragma pop /* 80082DE4-80082E14 07D724 0030+00 1/0 0/0 0/0 .text GetGroundCode__8dBgWKColFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int dBgWKCol::GetGroundCode(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetGroundCode__8dBgWKColFRC13cBgS_PolyInfo.s" +int dBgWKCol::GetGroundCode(cBgS_PolyInfo const& poly) { + u16 poly_index = poly.GetPolyIndex(); + + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + return bgpc.getGroundCode(); } -#pragma pop /* 80082E14-80082E40 07D754 002C+00 1/0 0/0 0/0 .text GetIronBallThrough__8dBgWKColFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetIronBallThrough(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetIronBallThrough__8dBgWKColFi.s" +u32 dBgWKCol::GetIronBallThrough(int poly_index) { + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + + return bgpc.getIronBallThrough(); } -#pragma pop /* 80082E40-80082E6C 07D780 002C+00 1/0 0/0 0/0 .text GetAttackThrough__8dBgWKColFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetAttackThrough(int param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetAttackThrough__8dBgWKColFi.s" +u32 dBgWKCol::GetAttackThrough(int poly_index) { + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + + return bgpc.getAttackThrough(); } -#pragma pop /* 80082E6C-80082E9C 07D7AC 0030+00 1/0 0/0 0/0 .text GetCamMoveBG__8dBgWKColFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetCamMoveBG(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetCamMoveBG__8dBgWKColFRC13cBgS_PolyInfo.s" +s32 dBgWKCol::GetCamMoveBG(cBgS_PolyInfo const& poly) { + u16 poly_index = poly.GetPolyIndex(); + + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + return bgpc.getCamMoveBG(); } -#pragma pop /* 80082E9C-80082ECC 07D7DC 0030+00 1/0 0/0 0/0 .text GetRoomCamId__8dBgWKColFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetRoomCamId(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetRoomCamId__8dBgWKColFRC13cBgS_PolyInfo.s" +s32 dBgWKCol::GetRoomCamId(cBgS_PolyInfo const& poly) { + u16 poly_index = poly.GetPolyIndex(); + + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + return bgpc.getRoomCam(); } -#pragma pop /* 80082ECC-80082EFC 07D80C 0030+00 1/0 0/0 0/0 .text GetRoomPathId__8dBgWKColFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetRoomPathId(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetRoomPathId__8dBgWKColFRC13cBgS_PolyInfo.s" +s32 dBgWKCol::GetRoomPathId(cBgS_PolyInfo const& poly) { + u16 poly_index = poly.GetPolyIndex(); + + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + return bgpc.getRoomPath(); } -#pragma pop /* 80082EFC-80082F2C 07D83C 0030+00 1/0 0/0 0/0 .text * GetRoomPathPntNo__8dBgWKColFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetRoomPathPntNo(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetRoomPathPntNo__8dBgWKColFRC13cBgS_PolyInfo.s" +s32 dBgWKCol::GetRoomPathPntNo(cBgS_PolyInfo const& poly) { + u16 poly_index = poly.GetPolyIndex(); + + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + return bgpc.getRoomPathPnt(); } -#pragma pop /* 80082F2C-80082F5C 07D86C 0030+00 1/0 0/0 0/0 .text * GetPolyGrpRoomInfId__8dBgWKColFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetPolyGrpRoomInfId(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetPolyGrpRoomInfId__8dBgWKColFRC13cBgS_PolyInfo.s" +u8 dBgWKCol::GetPolyGrpRoomInfId(cBgS_PolyInfo const& poly) { + u16 poly_index = poly.GetPolyIndex(); + + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + return bgpc.getRoomInf(); } -#pragma pop /* 80082F5C-80082F8C 07D89C 0030+00 1/0 0/0 0/0 .text GetGrpSoundId__8dBgWKColFRC13cBgS_PolyInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWKCol::GetGrpSoundId(cBgS_PolyInfo const& param_0) { - nofralloc -#include "asm/d/bg/d_bg_w_kcol/GetGrpSoundId__8dBgWKColFRC13cBgS_PolyInfo.s" +u8 dBgWKCol::GetGrpSoundId(cBgS_PolyInfo const& poly) { + u16 poly_index = poly.GetPolyIndex(); + + dBgPc bgpc; + getPolyCode(poly_index, &bgpc); + return bgpc.getSnd(); } -#pragma pop /* 80082F8C-80082F90 07D8CC 0004+00 1/0 0/0 0/0 .text * CrrPos__8dBgWKColFRC13cBgS_PolyInfoPvbP4cXyzP5csXyzP5csXyz */ void dBgWKCol::CrrPos(cBgS_PolyInfo const& param_0, void* param_1, bool param_2, cXyz* param_3, - csXyz* param_4, csXyz* param_5) { - /* empty function */ -} + csXyz* param_4, csXyz* param_5) {} /* 80082F90-80082F94 07D8D0 0004+00 1/0 0/0 0/0 .text * TransPos__8dBgWKColFRC13cBgS_PolyInfoPvbP4cXyzP5csXyzP5csXyz */ void dBgWKCol::TransPos(cBgS_PolyInfo const& param_0, void* param_1, bool param_2, cXyz* param_3, - csXyz* param_4, csXyz* param_5) { - /* empty function */ -} + csXyz* param_4, csXyz* param_5) {} /* 80082F94-80082F98 07D8D4 0004+00 1/0 0/0 0/0 .text * MatrixCrrPos__8dBgWKColFRC13cBgS_PolyInfoPvbP4cXyzP5csXyzP5csXyz */ void dBgWKCol::MatrixCrrPos(cBgS_PolyInfo const& param_0, void* param_1, bool param_2, - cXyz* param_3, csXyz* param_4, csXyz* param_5) { - /* empty function */ -} + cXyz* param_3, csXyz* param_4, csXyz* param_5) {} diff --git a/src/d/bg/d_bg_w_sv.cpp b/src/d/bg/d_bg_w_sv.cpp index b39c5048a7..5d292313b0 100644 --- a/src/d/bg/d_bg_w_sv.cpp +++ b/src/d/bg/d_bg_w_sv.cpp @@ -5,118 +5,6 @@ #include "d/bg/d_bg_w_sv.h" #include "dol2asm.h" -#include "dolphin/types.h" - -// -// Types: -// - -struct fopAc_ac_c {}; - -struct cBgD_t {}; - -struct cBgS_PolyInfo {}; - -struct csXyz {}; - -struct cXyz {}; - -struct dBgWSv { - /* 80082F98 */ void Set(cBgD_t*, u32); - /* 80083020 */ void CopyBackVtx(); - /* 8008308C */ void CrrPosWork(cXyz*, int, int, int); - /* 80083244 */ void CrrPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*, csXyz*); - /* 80083300 */ void TransPosWork(cXyz*, int, int, int); - /* 8008351C */ void TransPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*, csXyz*); - /* 800835D8 */ void MatrixCrrPos(cBgS_PolyInfo const&, void*, bool, cXyz*, csXyz*, csXyz*); - /* 800835DC */ ~dBgWSv(); -}; - -struct cBgS_GrpPassChk {}; - -struct cBgS_PolyPassChk {}; - -struct dBgS_SplGrpChk {}; - -struct dBgS_Acch {}; - -struct dBgS_SphChk {}; - -struct dBgS_RoofChk {}; - -struct dBgS_CaptPoly {}; - -struct dBgW { - /* 8007B3AC */ void GetExitId(cBgS_PolyInfo const&); - /* 8007B3D8 */ void GetPolyColor(cBgS_PolyInfo const&); - /* 8007B404 */ void GetHorseNoEntry(cBgS_PolyInfo const&); - /* 8007B430 */ int GetSpecialCode(cBgS_PolyInfo const&); - /* 8007B460 */ int GetSpecialCode(int); - /* 8007B488 */ void GetMagnetCode(cBgS_PolyInfo const&); - /* 8007B4B4 */ int GetMonkeyBarsCode(cBgS_PolyInfo const&); - /* 8007B4E0 */ void GetPolyObjThrough(int); - /* 8007B504 */ void GetPolyCamThrough(int); - /* 8007B52C */ void GetPolyLinkThrough(int); - /* 8007B550 */ void GetPolyArrowThrough(int); - /* 8007B574 */ void GetPolyHSStick(int); - /* 8007B598 */ void GetPolyBoomerangThrough(int); - /* 8007B5BC */ void GetPolyRopeThrough(int); - /* 8007B5E0 */ void GetPolyBombThrough(int); - /* 8007B604 */ void GetShdwThrough(int); - /* 8007B630 */ int GetUnderwaterRoofCode(int); - /* 8007B6AC */ void GetLinkNo(cBgS_PolyInfo const&); - /* 8007B6D8 */ void GetWallCode(cBgS_PolyInfo const&); - /* 8007B704 */ void GetPolyAtt0(cBgS_PolyInfo const&); - /* 8007B734 */ void GetPolyAtt1(cBgS_PolyInfo const&); - /* 8007B760 */ int GetGroundCode(cBgS_PolyInfo const&); - /* 8007B7DC */ void GetIronBallThrough(int); - /* 8007B800 */ void GetAttackThrough(int); - /* 8007B87C */ void GetCamMoveBG(cBgS_PolyInfo const&); - /* 8007B8A8 */ void GetRoomCamId(cBgS_PolyInfo const&); - /* 8007B8D8 */ void GetRoomPathId(cBgS_PolyInfo const&); - /* 8007B904 */ void GetRoomPathPntNo(cBgS_PolyInfo const&); - /* 8007C484 */ void WallCorrect(dBgS_Acch*); - /* 8007C910 */ void WallCorrectSort(dBgS_Acch*); - /* 8007D470 */ void RoofChk(dBgS_RoofChk*); - /* 8007D830 */ bool SplGrpChk(dBgS_SplGrpChk*); - /* 8007DAF8 */ void CaptPoly(dBgS_CaptPoly&); - /* 8007DF00 */ void SphChk(dBgS_SphChk*, void*); - /* 8007DF28 */ void GetPolyGrpRoomInfId(cBgS_PolyInfo const&); - /* 8007DF58 */ void GetGrpSoundId(cBgS_PolyInfo const&); - /* 8007E02C */ void ChkPolyThrough(int, cBgS_PolyPassChk*); - /* 8007E360 */ void ChkShdwDrawThrough(int, cBgS_PolyPassChk*); - /* 8007E3D8 */ void ChkGrpThrough(int, cBgS_GrpPassChk*, int); - /* 8007E444 */ void CallRideCallBack(fopAc_ac_c*, fopAc_ac_c*); - /* 8007E474 */ void CallArrowStickCallBack(fopAc_ac_c*, fopAc_ac_c*, cXyz&); - /* 8007E4A4 */ void OffMoveFlag(); - /* 8007E4B4 */ void ChkMoveFlag() const; -}; - -struct cBgS_ShdwDraw {}; - -struct cBgS_LinChk {}; - -struct cBgS_GndChk {}; - -struct cBgW { - /* 8007933C */ ~cBgW(); - /* 80079564 */ void CalcPlane(); - /* 800797BC */ void ClassifyPlane(); - /* 80079EEC */ void ChkMemoryError(); - /* 80079F38 */ void Set(cBgD_t*, u32, f32 (*)[3][4]); - /* 8007A658 */ bool LineCheck(cBgS_LinChk*); - /* 8007AB9C */ bool GroundCross(cBgS_GndChk*); - /* 8007B084 */ void ShdwDraw(cBgS_ShdwDraw*); - /* 8007B0E4 */ void GetGrpRoomIndex(cBgS_PolyInfo const&) const; - /* 8007B164 */ void GetBnd() const; - /* 8007B1B4 */ void GetTriPnt(cBgS_PolyInfo const&, cXyz*, cXyz*, cXyz*) const; - /* 8007B240 */ void GetTopUnder(f32*, f32*) const; - /* 8007B270 */ void GetTriPla(cBgS_PolyInfo const&) const; - /* 8007B2B0 */ void GetGrpInf(cBgS_PolyInfo const&) const; - /* 8007B948 */ bool ChkNotReady() const; - /* 8007B958 */ void ChkLock() const; - /* 8007B964 */ void ChkMoveBg() const; -}; // // Forward References: @@ -201,31 +89,36 @@ extern "C" void __dl__FPv(); extern "C" void _savegpr_27(); extern "C" void _restgpr_27(); extern "C" extern void* __vt__4dBgW[65]; -extern "C" extern f32 G_CM3D_F_ABS_MIN[1 + 1 /* padding */]; // // Declarations: // /* 80082F98-80083020 07D8D8 0088+00 0/0 0/0 2/2 .text Set__6dBgWSvFP6cBgD_tUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWSv::Set(cBgD_t* param_0, u32 param_1) { - nofralloc -#include "asm/d/bg/d_bg_w_sv/Set__6dBgWSvFP6cBgD_tUl.s" +u8 dBgWSv::Set(cBgD_t* pbgd, u32 param_1) { + if (cBgW::Set(pbgd, 99, NULL)) { + return 1; + } + + field_0xc4 = param_1; + if (field_0xc4 & 1) { + return 0; + } + + field_0xc0 = new Vec[pm_bgd->m_v_num]; + return field_0xc0 == NULL; } -#pragma pop /* 80083020-8008308C 07D960 006C+00 0/0 0/0 3/3 .text CopyBackVtx__6dBgWSvFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dBgWSv::CopyBackVtx() { - nofralloc -#include "asm/d/bg/d_bg_w_sv/CopyBackVtx__6dBgWSvFv.s" +void dBgWSv::CopyBackVtx() { + if (field_0xc0 == NULL || pm_vtx_tbl == NULL) { + return; + } + + for (int i = 0; i < pm_bgd->m_v_num; i++) { + field_0xc0[i] = pm_vtx_tbl[i]; + } } -#pragma pop /* 8008308C-80083244 07D9CC 01B8+00 1/1 0/0 0/0 .text CrrPosWork__6dBgWSvFP4cXyziii */ #pragma push @@ -366,7 +259,8 @@ SECTION_DATA extern void* __vt__6dBgWSv[65 + 1 /* padding */] = { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dBgWSv::~dBgWSv() { +// asm dBgWSv::~dBgWSv() { +extern "C" asm void __dt__6dBgWSvFv() { nofralloc #include "asm/d/bg/d_bg_w_sv/__dt__6dBgWSvFv.s" } diff --git a/src/d/cc/d_cc_mass_s.cpp b/src/d/cc/d_cc_mass_s.cpp index e3e1a781ad..ef0b179a28 100644 --- a/src/d/cc/d_cc_mass_s.cpp +++ b/src/d/cc/d_cc_mass_s.cpp @@ -46,8 +46,14 @@ dCcMassS_Obj::dCcMassS_Obj() {} void dCcMassS_Mng::Ct() { field_0x202 = 0; mResultCam = 0; - mCamTopPos.set(0, -1000000000.0f, 0); - mCamBottomPos.set(0, -1000000000.0f, 0); + mCamTopPos.x = 0.0f; + mCamTopPos.y = -1000000000.0f; + mCamTopPos.z = 0.0f; + + mCamBottomPos.x = 0.0f; + mCamBottomPos.y = -1000000000.0f; + mCamBottomPos.z = 0.0f; + Clear(); } @@ -98,9 +104,14 @@ void dCcMassS_Mng::Prepare() { mDivideArea.CalcDivideInfo(&mDivideInfo, mCpsAttr.GetWorkAab(), 0); } - mCamTopPos.set(0, -1000000000.0f, 0); + mCamTopPos.x = 0.0f; + mCamTopPos.y = -1000000000.0f; + mCamTopPos.z = 0.0f; mCamTopDist = 1000000000.0f; - mCamBottomPos.set(0, -1000000000.0f, 0); + + mCamBottomPos.x = 0.0f; + mCamBottomPos.y = -1000000000.0f; + mCamBottomPos.z = 0.0f; mCamBottomDist = 1000000000.0f; } diff --git a/src/d/com/d_com_static.cpp b/src/d/com/d_com_static.cpp index b731220c6d..aff853bd74 100644 --- a/src/d/com/d_com_static.cpp +++ b/src/d/com/d_com_static.cpp @@ -4,11 +4,13 @@ // #include "d/com/d_com_static.h" +#include "d/com/d_com_inf_game.h" +#include "d/d_demo.h" #include "dol2asm.h" #include "dolphin/types.h" -#include "rel/d/a/tag/d_a_tag_magne/d_a_tag_magne.h" +#include "rel/d/a/d_a_movie_player/d_a_movie_player.h" #include "rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h" -#include "d/com/d_com_inf_game.h" +#include "rel/d/a/tag/d_a_tag_magne/d_a_tag_magne.h" // // Types: @@ -27,11 +29,13 @@ struct daTagStream_c { }; struct daTagMist_c { - /* 80031CF0 */ void getPlayerNo(); + /* 80031CF0 */ static u8 getPlayerNo(); + + static u8 mPlayerNo; }; struct daSetBgObj_c { - /* 80031870 */ void getArcName(fopAc_ac_c*); + /* 80031870 */ static const char* getArcName(fopAc_ac_c*); }; struct daObjMovebox { @@ -48,15 +52,6 @@ struct daMirror_c { static u8 m_myObj[4]; }; -struct daMP_c { - /* 80031A78 */ void daMP_c_Get_MovieRestFrame(); - /* 80031AA4 */ void daMP_c_Set_PercentMovieVolume(f32); - /* 80031AD0 */ void daMP_c_THPPlayerPlay(); - /* 80031B24 */ void daMP_c_THPPlayerPause(); - - static u8 m_myObj[4]; -}; - struct daGrass_c { /* 800319C8 */ void deleteRoomGrass(int); /* 80031A20 */ void deleteRoomFlower(int); @@ -67,7 +62,7 @@ struct daGrass_c { }; struct daDsh_c { - static u32 OPEN_SIZE; + static f32 OPEN_SIZE; static f32 OPEN_ACCEL; static f32 OPEN_SPEED; static f32 OPEN_BOUND_SPEED; @@ -86,10 +81,6 @@ struct dFlower_packet_c { static u8 m_deleteRoom[12]; }; -struct dDemo_c { - static u8 m_status[4]; -}; - // // Forward References: // @@ -205,6 +196,7 @@ extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); extern "C" extern u8 const __ptmf_null[12 + 4 /* padding */]; extern "C" u8 m_status__7dDemo_c[4]; +extern "C" extern u8 mPlayerNo__11daTagMist_c[4]; // // Declarations: @@ -212,67 +204,102 @@ extern "C" u8 m_status__7dDemo_c[4]; /* 80030F14-80030FBC 02B854 00A8+00 1/1 0/0 0/0 .text * set__Q27daSus_c6data_cFScRC4cXyzRC4cXyzUcUcUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daSus_c::data_c::set(s8 param_0, cXyz const& param_1, cXyz const& param_2, u8 param_3, - u8 param_4, u8 param_5) { - nofralloc -#include "asm/d/com/d_com_static/set__Q27daSus_c6data_cFScRC4cXyzRC4cXyzUcUcUc.s" +void daSus_c::data_c::set(s8 i_roomNo, cXyz const& param_1, cXyz const& param_2, u8 param_3, + u8 param_4, u8 i_type) { + mRoomNo = i_roomNo; + field_0x8.set(param_1.x - param_2.x, param_1.y, param_1.z - param_2.z); + field_0x14.set(param_1.x + param_2.x, param_1.y + param_2.y, param_1.z + param_2.z); + field_0x2 = param_3; + field_0x1 = param_4 != 0; + field_0x3 = isSwitch() == false; + mType = i_type; } -#pragma pop /* 80030FBC-80030FCC 02B8FC 0010+00 3/3 0/0 0/0 .text reset__Q27daSus_c6data_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daSus_c::data_c::reset() { - nofralloc -#include "asm/d/com/d_com_static/reset__Q27daSus_c6data_cFv.s" +daSus_c::data_c* daSus_c::data_c::reset() { + mRoomNo = -1; + return mpNext; } -#pragma pop /* 80030FCC-80031038 02B90C 006C+00 2/2 0/0 0/0 .text isSwitch__Q27daSus_c6data_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daSus_c::data_c::isSwitch() { - nofralloc -#include "asm/d/com/d_com_static/isSwitch__Q27daSus_c6data_cFv.s" +u8 daSus_c::data_c::isSwitch() { + if (field_0x1 & 1) { + return dComIfGs_isSwitch(field_0x2, mRoomNo); + } else { + return dComIfGs_isSwitch(field_0x2, mRoomNo) == false; + } } -#pragma pop /* 80031038-800310C8 02B978 0090+00 2/2 0/0 0/0 .text check__Q27daSus_c6data_cFRC4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daSus_c::data_c::check(cXyz const& param_0) { - nofralloc -#include "asm/d/com/d_com_static/check__Q27daSus_c6data_cFRC4cXyz.s" +bool daSus_c::data_c::check(cXyz const& i_pos) { + if (field_0x3 != 0) { + return false; + } + + if ((field_0x8.x <= i_pos.x && i_pos.x <= field_0x14.x) && + (field_0x8.y <= i_pos.y && i_pos.y <= field_0x14.y) && + (field_0x8.z <= i_pos.z && i_pos.z <= field_0x14.z)) { + return true; + } + + return false; } -#pragma pop /* 800310C8-80031150 02BA08 0088+00 1/1 0/0 0/0 .text check__Q27daSus_c6data_cFP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daSus_c::data_c::check(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/com/d_com_static/check__Q27daSus_c6data_cFP10fopAc_ac_c.s" +u8 daSus_c::data_c::check(fopAc_ac_c* i_actor) { + if (field_0x3) { + return 0x80; + } + + u8 tmp = 0x80; + + if (check(i_actor->orig.pos)) { + tmp |= 1; + } + + if (check(i_actor->current.pos)) { + tmp |= 2; + return tmp; + } + + return tmp; } -#pragma pop /* 80031150-80031190 02BA90 0040+00 1/1 0/0 0/0 .text execute__Q27daSus_c6data_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daSus_c::data_c::execute() { - nofralloc -#include "asm/d/com/d_com_static/execute__Q27daSus_c6data_cFv.s" +void daSus_c::data_c::execute() { + u8 sw = isSwitch(); + if (sw != field_0x3) { + field_0x3 = sw; + } } -#pragma pop /* 80031190-800311FC 02BAD0 006C+00 1/1 0/0 0/0 .text add__Q27daSus_c6room_cFPQ27daSus_c6data_c */ +// instruction reorder +#ifdef NONMATCHING +void daSus_c::room_c::add(daSus_c::data_c* i_data) { + if (mpData == NULL) { + mpData = i_data; + i_data->setNext(NULL); + return; + } + + if (i_data->getType() == 0) { + i_data->setNext(mpData); + mpData = i_data; + return; + } + + daSus_c::data_c* data1 = mpData; + daSus_c::data_c* data2 = data1->getNext(); + while (data1->getType() == 0 && data2 != NULL) { + data1 = data2; + data2 = data2->getNext(); + } + + i_data->setNext(data1->getNext()); + data1->setNext(i_data); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -281,16 +308,14 @@ asm void daSus_c::room_c::add(daSus_c::data_c* param_0) { #include "asm/d/com/d_com_static/add__Q27daSus_c6room_cFPQ27daSus_c6data_c.s" } #pragma pop +#endif /* 800311FC-80031248 02BB3C 004C+00 0/0 0/0 1/1 .text reset__Q27daSus_c6room_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daSus_c::room_c::reset() { - nofralloc -#include "asm/d/com/d_com_static/reset__Q27daSus_c6room_cFv.s" +void daSus_c::room_c::reset() { + while (mpData != NULL && mpData->getType() == 0) { + mpData = mpData->reset(); + } } -#pragma pop /* ############################################################################################## */ /* 80423FF0-80423FFC 050D10 000C+00 1/1 0/0 0/0 .bss @3840 */ @@ -304,9 +329,11 @@ u8 daSus_c::mRoom[256]; /* 80450D88-80450D8C -00001 0004+00 1/1 0/0 2/2 .sbss None */ /* 80450D88 0002+00 data_80450D88 m_count__9daArrow_c */ +extern s16 m_count__9daArrow_c; +s16 m_count__9daArrow_c; + /* 80450D8A 0002+00 data_80450D8A mSetTop__7daSus_c */ -extern u8 struct_80450D88[4]; -u8 struct_80450D88[4]; +s16 daSus_c::mSetTop; /* 80031248-800313BC 02BB88 0174+00 0/0 0/0 1/1 .text newData__7daSus_cFScRC4cXyzRC4cXyzUcUcUc */ #pragma push @@ -333,7 +360,7 @@ asm void daSus_c::reset() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm bool daSus_c::check(s8 param_0, cXyz const& param_1) { +asm bool daSus_c::check(s8 i_roomNo, cXyz const& i_pos) { nofralloc #include "asm/d/com/d_com_static/check__7daSus_cFScRC4cXyz.s" } @@ -360,102 +387,55 @@ asm void daSus_c::execute() { #pragma pop /* 8003160C-80031648 02BF4C 003C+00 0/0 0/0 1/1 .text daNpcMsg_setEvtNum__FUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcMsg_setEvtNum(u8 param_0) { - nofralloc -#include "asm/d/com/d_com_static/daNpcMsg_setEvtNum__FUc.s" +int daNpcMsg_setEvtNum(u8 iEvtNum) { + dComIfGs_setTmpReg(0xFDFF, iEvtNum); + return 1; } -#pragma pop - -/* ############################################################################################## */ -/* 803790B0-803790B0 005710 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_803790B0 = "F_SP103"; -#pragma pop /* 80031648-800316A8 02BF88 0060+00 0/0 0/0 6/6 .text daNpcKakashi_chkSwdTutorialStage__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcKakashi_chkSwdTutorialStage() { - nofralloc -#include "asm/d/com/d_com_static/daNpcKakashi_chkSwdTutorialStage__Fv.s" +BOOL daNpcKakashi_chkSwdTutorialStage() { + return !strcmp(dComIfGp_getStartStageName(), "F_SP103") && dComIfG_play_c::getLayerNo(0) == 8; } -#pragma pop /* 800316A8-800316E0 02BFE8 0038+00 0/0 0/0 3/3 .text daNpcKakashi_setSwdTutorialStep__FUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcKakashi_setSwdTutorialStep(u8 param_0) { - nofralloc -#include "asm/d/com/d_com_static/daNpcKakashi_setSwdTutorialStep__FUc.s" +void daNpcKakashi_setSwdTutorialStep(u8 iEvtNum) { + dComIfGs_setTmpReg(0xFF0F, iEvtNum); } -#pragma pop /* 800316E0-80031718 02C020 0038+00 0/0 1/1 4/4 .text daNpcKakashi_getSwdTutorialStep__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int daNpcKakashi_getSwdTutorialStep() { - nofralloc -#include "asm/d/com/d_com_static/daNpcKakashi_getSwdTutorialStep__Fv.s" +int daNpcKakashi_getSwdTutorialStep() { + return dComIfGs_getTmpReg(0xFF0F); } -#pragma pop /* 80031718-80031754 02C058 003C+00 0/0 1/1 0/0 .text daNpcKakashi_getSwdTutorialResult__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcKakashi_getSwdTutorialResult() { - nofralloc -#include "asm/d/com/d_com_static/daNpcKakashi_getSwdTutorialResult__Fv.s" +bool daNpcKakashi_getSwdTutorialResult() { + return dComIfGs_isTmpBit(0x40); } -#pragma pop /* 80031754-800317A4 02C094 0050+00 0/0 0/0 1/1 .text daNpcKakashi_setSwdTutorialResult__Fb */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcKakashi_setSwdTutorialResult(bool param_0) { - nofralloc -#include "asm/d/com/d_com_static/daNpcKakashi_setSwdTutorialResult__Fb.s" +void daNpcKakashi_setSwdTutorialResult(bool param_0) { + if (param_0) { + dComIfGs_onTmpBit(0x40); + } else { + dComIfGs_offTmpBit(0x40); + } } -#pragma pop /* 800317A4-800317DC 02C0E4 0038+00 0/0 1/1 1/1 .text daNpcKakashi_getSuccessCount__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcKakashi_getSuccessCount() { - nofralloc -#include "asm/d/com/d_com_static/daNpcKakashi_getSuccessCount__Fv.s" +int daNpcKakashi_getSuccessCount() { + return dComIfGs_getTmpReg(0xFEFF); } -#pragma pop /* 800317DC-80031838 02C11C 005C+00 0/0 0/0 1/1 .text daNpcKakashi_incSuccessCount__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcKakashi_incSuccessCount() { - nofralloc -#include "asm/d/com/d_com_static/daNpcKakashi_incSuccessCount__Fv.s" +void daNpcKakashi_incSuccessCount() { + dComIfGs_setTmpReg(0xFEFF, dComIfGs_getTmpReg(0xFEFF) + 1); } -#pragma pop /* 80031838-80031870 02C178 0038+00 0/0 0/0 4/4 .text daNpcKakashi_clrSuccessCount__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daNpcKakashi_clrSuccessCount() { - nofralloc -#include "asm/d/com/d_com_static/daNpcKakashi_clrSuccessCount__Fv.s" +void daNpcKakashi_clrSuccessCount() { + dComIfGs_setTmpReg(0xFEFF, 0); } -#pragma pop /* ############################################################################################## */ /* 803790B0-803790B0 005710 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -480,19 +460,14 @@ u8 daYkgr_c::m_path[4]; /* 80450D98-80450D9C 000298 0004+00 0/0 1/1 2/2 .sbss m_emitter__8daYkgr_c */ u8 daYkgr_c::m_emitter[4]; -/* 80450D9C-80450DA4 00029C 0008+00 1/1 0/0 0/0 .sbss arcName$4309 */ -static u8 arcName[8]; - /* 80031870-800318B4 02C1B0 0044+00 0/0 0/0 19/19 .text getArcName__12daSetBgObj_cFP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daSetBgObj_c::getArcName(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/com/d_com_static/getArcName__12daSetBgObj_cFP10fopAc_ac_c.s" +const char* daSetBgObj_c::getArcName(fopAc_ac_c* param_0) { + static char arcName[8]; + + sprintf(arcName, "@bg%04x", (u16)fopAcM_GetParam(param_0)); + return arcName; } -#pragma pop /* ############################################################################################## */ /* 80451D28-80451D30 -00001 0008+00 0/0 0/0 3/3 .sdata2 M_dir_base__Q212daObjMovebox5Act_c @@ -503,7 +478,7 @@ SECTION_SDATA2 void* daObjMovebox::Act_c::M_dir_base[2] = { }; /* 80451D30-80451D34 000330 0004+00 0/0 0/0 3/3 .sdata2 OPEN_SIZE__7daDsh_c */ -SECTION_SDATA2 u32 daDsh_c::OPEN_SIZE = 0x43870CCD; +SECTION_SDATA2 f32 daDsh_c::OPEN_SIZE = 270.1f; /* 80451D34-80451D38 000334 0004+00 0/0 0/0 1/1 .sdata2 OPEN_ACCEL__7daDsh_c */ SECTION_SDATA2 f32 daDsh_c::OPEN_ACCEL = 10.0f; @@ -515,7 +490,7 @@ SECTION_SDATA2 f32 daDsh_c::OPEN_SPEED = -40.0f; SECTION_SDATA2 f32 daDsh_c::OPEN_BOUND_SPEED = -30.0f; /* 80451D40-80451D44 000340 0004+00 0/0 0/0 1/1 .sdata2 OPEN_BOUND_RATIO__7daDsh_c */ -SECTION_SDATA2 f32 daDsh_c::OPEN_BOUND_RATIO = -2.0f / 5.0f; +SECTION_SDATA2 f32 daDsh_c::OPEN_BOUND_RATIO = -0.4f; /* 80451D44-80451D48 000344 0004+00 0/0 0/0 1/1 .sdata2 CLOSE_ACCEL__7daDsh_c */ SECTION_SDATA2 f32 daDsh_c::CLOSE_ACCEL = 10.0f; @@ -527,7 +502,7 @@ SECTION_SDATA2 f32 daDsh_c::CLOSE_SPEED = 40.0f; SECTION_SDATA2 f32 daDsh_c::CLOSE_BOUND_SPEED = 30.0f; /* 80451D50-80451D54 000350 0004+00 0/0 0/0 1/1 .sdata2 CLOSE_BOUND_RATIO__7daDsh_c */ -SECTION_SDATA2 f32 daDsh_c::CLOSE_BOUND_RATIO = -2.0f / 5.0f; +SECTION_SDATA2 f32 daDsh_c::CLOSE_BOUND_RATIO = -0.4f; /* 80451D54-80451D58 000354 0004+00 1/1 0/0 0/0 .sdata2 @4338 */ SECTION_SDATA2 static u8 lit_4338[4] = { @@ -617,47 +592,33 @@ asm void daGrass_c::deleteRoomFlower(int param_0) { /* ############################################################################################## */ /* 80450DB8-80450DBC 0002B8 0004+00 4/4 0/0 2/2 .sbss m_myObj__6daMP_c */ -u8 daMP_c::m_myObj[4]; +daMP_c* daMP_c::m_myObj; /* 80031A78-80031AA4 02C3B8 002C+00 0/0 0/0 1/1 .text daMP_c_Get_MovieRestFrame__6daMP_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daMP_c::daMP_c_Get_MovieRestFrame() { - nofralloc -#include "asm/d/com/d_com_static/daMP_c_Get_MovieRestFrame__6daMP_cFv.s" +int daMP_c::daMP_c_Get_MovieRestFrame() { + return m_myObj->mpGetMovieRestFrame(); } -#pragma pop /* 80031AA4-80031AD0 02C3E4 002C+00 0/0 0/0 1/1 .text daMP_c_Set_PercentMovieVolume__6daMP_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daMP_c::daMP_c_Set_PercentMovieVolume(f32 param_0) { - nofralloc -#include "asm/d/com/d_com_static/daMP_c_Set_PercentMovieVolume__6daMP_cFf.s" +void daMP_c::daMP_c_Set_PercentMovieVolume(f32 i_volume) { + m_myObj->mpSetPercentMovieVol(i_volume); } -#pragma pop /* 80031AD0-80031B24 02C410 0054+00 0/0 1/1 1/1 .text daMP_c_THPPlayerPlay__6daMP_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daMP_c::daMP_c_THPPlayerPlay() { - nofralloc -#include "asm/d/com/d_com_static/daMP_c_THPPlayerPlay__6daMP_cFv.s" +int daMP_c::daMP_c_THPPlayerPlay() { + if (m_myObj == NULL) { + dDemo_c::onStatus(1); + return 0; + } else { + dDemo_c::offStatus(1); + return m_myObj->mpTHPPlay(); + } } -#pragma pop /* 80031B24-80031B50 02C464 002C+00 0/0 0/0 1/1 .text daMP_c_THPPlayerPause__6daMP_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daMP_c::daMP_c_THPPlayerPause() { - nofralloc -#include "asm/d/com/d_com_static/daMP_c_THPPlayerPause__6daMP_cFv.s" +void daMP_c::daMP_c_THPPlayerPause() { + m_myObj->mpTHPPause(); } -#pragma pop /* ############################################################################################## */ /* 80450DBC-80450DC0 0002BC 0004+00 1/1 0/0 3/3 .sbss mTagMagne__12daTagMagne_c */ @@ -671,8 +632,7 @@ int daTagMagne_c::checkMagnetCode(cBgS_PolyInfo& poly) { } int magCode = dComIfG_Bgsp().GetMagnetCode(poly); - if ((magCode == 1 && mTagMagne->checkMagneA()) || - (magCode == 2 && mTagMagne->checkMagneB()) || + if ((magCode == 1 && mTagMagne->checkMagneA()) || (magCode == 2 && mTagMagne->checkMagneB()) || (magCode == 3 && mTagMagne->checkMagneC())) { return 1; } @@ -710,21 +670,15 @@ int daTagMagne_c::checkMagneC() { /* ############################################################################################## */ /* 80450DC0-80450DC4 -00001 0004+00 4/4 0/0 2/2 .sbss None */ /* 80450DC0 0001+00 data_80450DC0 None */ -extern u8 struct_80450DC0; -u8 struct_80450DC0; +u8 daTagMist_c::mPlayerNo; /* 80450DC1 0003+00 data_80450DC1 None */ bool daObjCarry_c::mSaveFlag; /* 80031CF0-80031CF8 02C630 0008+00 0/0 1/1 0/0 .text getPlayerNo__11daTagMist_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daTagMist_c::getPlayerNo() { - nofralloc -#include "asm/d/com/d_com_static/getPlayerNo__11daTagMist_cFv.s" +u8 daTagMist_c::getPlayerNo() { + return mPlayerNo; } -#pragma pop /* 80031CF8-80031D04 02C638 000C+00 0/0 1/1 0/0 .text clrSaveFlag__12daObjCarry_cFv */ void daObjCarry_c::clrSaveFlag() { diff --git a/src/d/d_attention.cpp b/src/d/d_attention.cpp index 06b1721b41..f279e51cd1 100644 --- a/src/d/d_attention.cpp +++ b/src/d/d_attention.cpp @@ -4,6 +4,8 @@ // #include "d/d_attention.h" +#include "d/com/d_com_inf_game.h" +#include "d/d_procname.h" #include "dol2asm.h" #include "dolphin/mtx/mtxvec.h" #include "dolphin/types.h" @@ -12,10 +14,6 @@ // Types: // -struct mDoCPd_c { - static u8 m_cpadInfo[256]; -}; - class dAttDrawParam_c { public: /* 80070158 */ dAttDrawParam_c(); @@ -30,7 +28,6 @@ public: // Forward References: // -extern "C" static void func_80070018(); extern "C" void __ct__11dAttParam_cFl(); extern "C" void __dt__11dAttParam_cFv(); extern "C" void __ct__15dAttDrawParam_cFv(); @@ -171,8 +168,6 @@ extern "C" extern void* __vt__25mDoExt_McaMorfCallBack1_c[3]; extern "C" u8 dist_table__12dAttention_c[6552]; extern "C" u8 m_cpadInfo__8mDoCPd_c[256]; extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 data_80450F58[8]; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; // @@ -181,14 +176,11 @@ extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; /* 80070018-80070038 06A958 0020+00 2/2 0/0 0/0 .text padLockButton__25@unnamed@d_attention_cpp@Fl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void func_80070018() { - nofralloc -#include "asm/d/d_attention/func_80070018.s" +namespace { +static bool padLockButton(s32 i_padNo) { + return mDoCPd_c::getHoldLockL(i_padNo) != 0; } -#pragma pop +} // namespace /* ############################################################################################## */ /* 8037A770-8037A770 006DD0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ @@ -198,26 +190,25 @@ SECTION_DEAD static char const* const stringBase_8037A770 = "D_MN09B"; #pragma pop /* 803A9BF8-803A9C04 006D18 000C+00 2/2 0/0 0/0 .data loc_type_tbl__12dAttention_c */ -SECTION_DATA u8 dAttention_c::loc_type_tbl[12] = { - 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, +SECTION_DATA type_tbl_entry dAttention_c::loc_type_tbl[3] = { + {0, 1}, + {1, 2}, + {2, 4}, }; /* 803A9C04-803A9C18 006D24 0014+00 1/1 0/0 0/0 .data act_type_tbl__12dAttention_c */ -SECTION_DATA u8 dAttention_c::act_type_tbl[20] = { - 0x00, 0x03, 0x00, 0x08, 0x00, 0x04, 0x00, 0x10, 0x00, 0x05, - 0x00, 0x20, 0x00, 0x06, 0x00, 0x40, 0x00, 0x07, 0x00, 0x80, +SECTION_DATA type_tbl_entry dAttention_c::act_type_tbl[5] = { + {3, 8}, {4, 16}, {5, 32}, {6, 64}, {7, 128}, }; /* 803A9C18-803A9C3C 006D38 0024+00 1/1 0/0 0/0 .data ftp_table$4417 */ -SECTION_DATA static u8 ftp_table[36] = { - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, - 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, +SECTION_DATA static int ftp_table[9] = { + 4, 1, 2, 8, 16, 32, 64, 128, 256, }; /* 803A9C3C-803A9C48 006D5C 000C+00 1/1 0/0 0/0 .data ang_table2$4419 */ -SECTION_DATA static u8 ang_table2[12] = { - 0x0A, 0xAA, 0x20, 0x00, 0x2A, 0xAA, 0x40, 0x00, 0x4E, 0x38, 0x60, 0x00, +SECTION_DATA static s16 ang_table2[6] = { + 0x0AAA, 0x2000, 0x2AAA, 0x4000, 0x4E38, 0x6000, }; /* 803A9C48-803A9C54 006D68 000C+00 1/1 1/1 0/0 .data __vt__19dAttDraw_CallBack_c */ @@ -287,45 +278,60 @@ SECTION_SDATA2 static f32 lit_4072 = 17.0f / 10.0f; /* 80452658-8045265C 000C58 0004+00 10/10 0/0 0/0 .sdata2 @4073 */ SECTION_SDATA2 static f32 lit_4073 = 1.0f; +/* ############################################################################################## */ +/* 80450F58-80450F60 000458 0008+00 0/0 2/2 0/0 .sbss None */ +extern bool on_final_boss_stg; +bool on_final_boss_stg; + /* 80070038-80070110 06A978 00D8+00 1/1 0/0 0/0 .text __ct__11dAttParam_cFl */ +// matches with literals +#ifdef NONMATCHING +dAttParam_c::dAttParam_c(s32 param_0) { + field_0x4 = 45.0f; + field_0x8 = 30.0f; + field_0xc = 90.0f; + mFlags = 1; + mSWModeDisable = -0.9f; + + mDangerBGMDistance = 3000.0f; + mBGMDistMargin = 1000.0f; + + mSelCursorScaleX = 6.0f; + mSelCursorScaleY = 4.5f; + + mAttnCursorScaleX = 14.0f; + mAttnCursorScaleY = 14.0f; + + mSelCursorOffsetY = 10.0f; + mAttnCursorOffsetY = 0.0f; + + mAttnCursorAppearFrames = 1; + mAttnCursorDisappearFrames = 1; + + field_0x38 = 1.7f; + field_0x3c = 1.0f; + + on_final_boss_stg = strcmp(dComIfGp_getStartStageName(), "D_MN09B") == 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -// asm dAttParam_c::dAttParam_c(s32 param_0) { -extern "C" asm void __ct__11dAttParam_cFl() { +asm dAttParam_c::dAttParam_c(s32 param_0) { nofralloc #include "asm/d/d_attention/__ct__11dAttParam_cFl.s" } #pragma pop +#endif /* 80070110-80070158 06AA50 0048+00 2/1 0/0 0/0 .text __dt__11dAttParam_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -// asm dAttParam_c::~dAttParam_c() { -extern "C" asm void __dt__11dAttParam_cFv() { - nofralloc -#include "asm/d/d_attention/__dt__11dAttParam_cFv.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 8045265C-80452660 000C5C 0004+00 1/1 0/0 0/0 .sdata2 @4084 */ -SECTION_SDATA2 static f32 lit_4084 = 250.0f; - -/* 80452660-80452664 000C60 0004+00 1/1 0/0 0/0 .sdata2 @4085 */ -SECTION_SDATA2 static f32 lit_4085 = 2.0f; +dAttParam_c::~dAttParam_c() {} /* 80070158-80070178 06AA98 0020+00 1/1 0/0 0/0 .text __ct__15dAttDrawParam_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -// asm dAttDrawParam_c::dAttDrawParam_c() { -extern "C" asm void __ct__15dAttDrawParam_cFv() { - nofralloc -#include "asm/d/d_attention/__ct__15dAttDrawParam_cFv.s" +dAttDrawParam_c::dAttDrawParam_c() { + mCursorDistance = 250.0f; + field_0xc = 2.0f; } -#pragma pop /* ############################################################################################## */ /* 80452664-80452668 000C64 0004+00 1/1 0/0 0/0 .sdata2 @4092 */ @@ -356,6 +362,105 @@ SECTION_DEAD static char const* const pad_8037A77F = ""; static dAttDrawParam_c g_AttDwHIO; /* 80070198-80070774 06AAD8 05DC+00 0/0 1/1 0/0 .text __ct__12dAttention_cFP10fopAc_ac_cUl */ +// matches with literals +#ifdef NONMATCHING +dAttention_c::dAttention_c(fopAc_ac_c* i_player, u32 i_padNo) { + mpPlayer = i_player; + mPadNo = i_padNo; + + mLockTargetID = -1; + field_0x32e = 0; + field_0x32f = 0; + + mCheckObjectOffset = 0; + mActionOffset = 0; + mLockOnOffset = 0; + initList(-1); + + field_0x10 = 0; + field_0x32a = 0; + mAttnStatus = ST_NONE; + field_0x32b = 4; + field_0x32c = 0; + mAttnBlockTimer = 0; + + heap = mDoExt_createSolidHeapFromGameToCurrent(0x9000, 0); + + J3DModelData* modelDataR = (J3DModelData*)dComIfG_getObjectRes("Always", 0x25); + J3DModelData* modelDataY = (J3DModelData*)dComIfG_getObjectRes("Always", 0x26); + + for (int i = 0; i < 2; i++) { + draw[i].mModel[0] = mDoExt_J3DModel__create(modelDataY, 0x80000, 0x11000285); + draw[i].mModel[1] = mDoExt_J3DModel__create(modelDataR, 0x80000, 0x11000285); + + void* res = dComIfG_getObjectRes("Always", 0x11); + draw[i].mNoticeCursorBck[0].init((J3DAnmTransform*)res, TRUE, 2, 1.0f, 0, -1, false); + + res = dComIfG_getObjectRes("Always", 0x2B); + draw[i].mNoticeCursorBpk[0].init(modelDataY, (J3DAnmColor*)res, TRUE, 2, 1.0f, 0, -1); + + res = dComIfG_getObjectRes("Always", 0x37); + draw[i].mNoticeCursorBrk[0].init(modelDataY, (J3DAnmTevRegKey*)res, TRUE, 2, 1.0f, 0, -1); + + res = dComIfG_getObjectRes("Always", 0x3F); + draw[i].mNoticeCursorBtk[0].init(modelDataY, (J3DAnmTextureSRTKey*)res, TRUE, 2, 1.0f, 0, + -1); + + res = dComIfG_getObjectRes("Always", 0x38); + draw[i].mNoticeCursor02Brk[0].init(modelDataY, (J3DAnmTevRegKey*)res, TRUE, 2, 1.0f, 0, -1); + + res = dComIfG_getObjectRes("Always", 0x10); + draw[i].mNoticeCursorBck[1].init((J3DAnmTransform*)res, TRUE, 2, 1.0f, 0, -1, false); + + res = dComIfG_getObjectRes("Always", 0x2A); + draw[i].mNoticeCursorBpk[1].init(modelDataR, (J3DAnmColor*)res, TRUE, 2, 1.0f, 0, -1); + + res = dComIfG_getObjectRes("Always", 0x35); + draw[i].mNoticeCursorBrk[1].init(modelDataR, (J3DAnmTevRegKey*)res, TRUE, 2, 1.0f, 0, -1); + + res = dComIfG_getObjectRes("Always", 0x3E); + draw[i].mNoticeCursorBtk[1].init(modelDataR, (J3DAnmTextureSRTKey*)res, TRUE, 2, 1.0f, 0, + -1); + + res = dComIfG_getObjectRes("Always", 0x36); + draw[i].mNoticeCursor02Brk[1].init(modelDataR, (J3DAnmTevRegKey*)res, TRUE, 2, 1.0f, 0, -1); + + res = dComIfG_getObjectRes("Always", 0xC); + draw[i].mImpactBck.init((J3DAnmTransform*)res, TRUE, 0, 1.0f, 0, -1, false); + + res = dComIfG_getObjectRes("Always", 0x29); + draw[i].mImpactBpk.init(modelDataR, (J3DAnmColor*)res, TRUE, 0, 1.0f, 0, -1); + + res = dComIfG_getObjectRes("Always", 0x32); + draw[i].mImpactBrk.init(modelDataR, (J3DAnmTevRegKey*)res, TRUE, 0, 1.0f, 0, -1); + + res = dComIfG_getObjectRes("Always", 0x3D); + draw[i].mImpactBtk.init(modelDataR, (J3DAnmTextureSRTKey*)res, TRUE, 0, 1.0f, 0, -1); + + draw[i].field_0x170 = 0; + draw[i].field_0x171 = 1; + draw[i].field_0x172 = 0; + draw[i].field_0x174 = 1; + draw[i].field_0x173 = 2; + draw[i].field_0x175 = 0; + } + + mDoExt_restoreCurrentHeap(); + if ((int)mDoExt_adjustSolidHeap(heap) >= 0) { + DCStoreRangeNoSync(heap->getStartAddr(), heap->getHeapSize()); + } + + field_0x328 = -1; + mFlags = 0; + + mZHintTarget.init(); + mCatghTarget.init(); + mLookTarget.init(); + new (&mAttParam) dAttParam_c(0); + + g_AttDwHIO.field_0x4 = -1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -364,106 +469,171 @@ asm dAttention_c::dAttention_c(fopAc_ac_c* param_0, u32 param_1) { #include "asm/d/d_attention/__ct__12dAttention_cFP10fopAc_ac_cUl.s" } #pragma pop +#endif /* 80070774-80070844 06B0B4 00D0+00 0/0 2/2 0/0 .text __dt__12dAttention_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm dAttention_c::~dAttention_c() { - nofralloc -#include "asm/d/d_attention/__dt__12dAttention_cFv.s" +dAttention_c::~dAttention_c() { + if (heap != NULL) { + mDoExt_destroySolidHeap(heap); + heap = NULL; + } } -#pragma pop /* 80070844-80070880 06B184 003C+00 2/2 2/2 8/8 .text GetLockonList__12dAttention_cFl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::GetLockonList(s32 param_0) { - nofralloc -#include "asm/d/d_attention/GetLockonList__12dAttention_cFl.s" +dAttList_c* dAttention_c::GetLockonList(s32 param_0) { + if (mLockonCount != 0) { + return &mLockOnList[(mLockOnOffset + param_0) % mLockonCount]; + } + + return NULL; } -#pragma pop /* 80070880-80070974 06B1C0 00F4+00 0/0 5/5 2/2 .text getActionBtnB__12dAttention_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::getActionBtnB() { - nofralloc -#include "asm/d/d_attention/getActionBtnB__12dAttention_cFv.s" +dAttList_c* dAttention_c::getActionBtnB() { + int i; + dAttList_c* list = GetLockonList(0); + + if (list != NULL && list->getActor() != NULL && list->mType == 1 && LockonTruth() && + !(list->getActor()->mAttentionInfo.mFlags & 0x2000000)) { + return list; + } + + if (mActionCount == 0) { + return NULL; + } + + for (i = 0; i < mActionCount; i++) { + if (mActionList[i].mType == 3) { + if (!(mActionList[i].getActor()->mAttentionInfo.mFlags & 0x2000000)) { + return &mActionList[i]; + } + continue; + } + return &mActionList[i]; + } + + return NULL; } -#pragma pop /* 80070974-80070A70 06B2B4 00FC+00 0/0 1/1 0/0 .text getActionBtnXY__12dAttention_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::getActionBtnXY() { - nofralloc -#include "asm/d/d_attention/getActionBtnXY__12dAttention_cFv.s" +dAttList_c* dAttention_c::getActionBtnXY() { + int i; + dAttList_c* list = GetLockonList(0); + + if (list != NULL && list->getActor() != NULL && list->mType == 1 && LockonTruth()) { + if (list->getActor()->mEvtInfo.chkCondition(0x20)) { + return list; + } + + return NULL; + } + + if (mActionCount == 0) { + return NULL; + } + + for (i = 0; i < mActionCount; i++) { + if (mActionList[i].mType == 3) { + if (mActionList[i].getActor()->mEvtInfo.chkCondition(0x20)) { + return &mActionList[i]; + } + } + } + + return NULL; } -#pragma pop /* ############################################################################################## */ /* 80450660-80450664 0000E0 0004+00 2/2 0/0 0/0 .sdata loc_type_num__12dAttention_c */ -SECTION_SDATA u32 dAttention_c::loc_type_num = 0x00000003; +SECTION_SDATA int dAttention_c::loc_type_num = 3; /* 80070A70-80070AC0 06B3B0 0050+00 1/1 0/0 0/0 .text chkAttMask__12dAttention_cFUlUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::chkAttMask(u32 param_0, u32 param_1) { - nofralloc -#include "asm/d/d_attention/chkAttMask__12dAttention_cFUlUl.s" +int dAttention_c::chkAttMask(u32 param_0, u32 param_1) { + for (int i = 0; i < loc_type_num; i++) { + if (param_0 == loc_type_tbl[i].field_0x0) { + return param_1 & loc_type_tbl[i].field_0x2; + } + } + + return 1; } -#pragma pop /* 80070AC0-80070B2C 06B400 006C+00 2/2 0/0 0/0 .text check_event_condition__FUlUs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void check_event_condition(u32 param_0, u16 param_1) { - nofralloc -#include "asm/d/d_attention/check_event_condition__FUlUs.s" +static int check_event_condition(u32 i_listType, u16 i_condition) { + switch (i_listType) { + case 3: + case 1: + if (!(i_condition & 1)) { + return true; + } + break; + case 4: + case 2: + break; + case 5: + if (!(i_condition & 4)) { + return true; + } + break; + case 6: + if (!(i_condition & 4)) { + return true; + } + break; + } + + return false; } -#pragma pop /* ############################################################################################## */ /* 80450664-80450668 0000E4 0004+00 1/1 0/0 0/0 .sdata act_type_num__12dAttention_c */ -SECTION_SDATA u32 dAttention_c::act_type_num = 0x00000005; +SECTION_SDATA int dAttention_c::act_type_num = 5; /* 80450668-8045066C 0000E8 0004+00 1/1 0/0 0/0 .sdata chk_type_tbl__12dAttention_c */ -SECTION_SDATA u32 dAttention_c::chk_type_tbl = 0x00080100; - -/* 8045066C-80450670 0000EC 0004+00 1/1 0/0 0/0 .sdata chk_type_num__12dAttention_c */ -SECTION_SDATA u32 dAttention_c::chk_type_num = 0x00000001; - -/* 80450670-80450674 0000F0 0004+00 2/2 0/0 0/0 .sdata None */ -SECTION_SDATA static u32 data_80450670 = 0x01000000; - -/* 80450674-8045067C 0000F4 0006+02 1/1 0/0 0/0 .sdata ang_table$4418 */ -SECTION_SDATA static u8 ang_table[6 + 2 /* padding */] = { - 0x40, - 0x00, - 0x20, - 0x00, - 0x0A, - 0xAA, - /* padding */ - 0x00, - 0x00, +SECTION_SDATA type_tbl_entry dAttention_c::chk_type_tbl[1] = { + {8, 256}, }; +/* 8045066C-80450670 0000EC 0004+00 1/1 0/0 0/0 .sdata chk_type_num__12dAttention_c */ +SECTION_SDATA int dAttention_c::chk_type_num = 1; + +/* 80450670-80450674 0000F0 0004+00 2/2 0/0 0/0 .sdata None */ +SECTION_SDATA static bool attn_opt_hold = true; + /* 80070B2C-80070BF4 06B46C 00C8+00 2/2 0/0 0/0 .text check_flontofplayer__FUlss */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void check_flontofplayer(u32 param_0, s16 param_1, s16 param_2) { - nofralloc -#include "asm/d/d_attention/check_flontofplayer__FUlss.s" +static int check_flontofplayer(u32 param_0, s16 param_1, s16 param_2) { + static s16 ang_table[3] = { + 0x4000, + 0x2000, + 0x0AAA, + }; + + if (param_1 < 0) { + param_1 = -param_1; + } + + if (param_2 < 0) { + param_2 = -param_2; + } + + for (int i = 0; i < 3; i++) { + if (param_0 & ftp_table[i]) { + if (param_1 > ang_table[i]) { + return true; + } + } + } + + for (int i = 8; i > 2; i--) { + if (param_0 & ftp_table[i]) { + if (param_2 > ang_table2[i - 3]) { + return true; + } + } + } + + return false; } -#pragma pop /* ############################################################################################## */ /* 80452668-80452670 000C68 0004+04 2/2 0/0 0/0 .sdata2 @4448 */ @@ -477,24 +647,44 @@ SECTION_SDATA2 static f32 lit_4448[1 + 1 /* padding */] = { SECTION_SDATA2 static f64 lit_4450 = 4503601774854144.0 /* cast s32 to float */; /* 80070BF4-80070C40 06B534 004C+00 2/2 0/0 0/0 .text distace_weight__Ffsf */ +// matches with literals +#ifdef NONMATCHING +static f32 distace_weight(f32 param_0, s16 param_1, f32 param_2) { + f32 tmp = param_1 / 32768.0f; + return param_0 * ((1.0f - param_2) + (param_2 * (tmp * tmp))); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void distace_weight(f32 param_0, s16 param_1, f32 param_2) { +static asm f32 distace_weight(f32 param_0, s16 param_1, f32 param_2) { nofralloc #include "asm/d/d_attention/distace_weight__Ffsf.s" } #pragma pop +#endif /* 80070C40-80070CA0 06B580 0060+00 2/2 0/0 0/0 .text distace_angle_adjust__Ffsf */ +// matches with literals +#ifdef NONMATCHING +static f32 distace_angle_adjust(f32 param_0, s16 param_1, f32 param_2) { + f32 tmp = param_1 / 32768.0f; + if (tmp < 0.0f) { + tmp = -tmp; + } + + return param_0 * ((1.0f - param_2) + (param_2 * ((1.0f - tmp) * (1.0f - tmp)))); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void distace_angle_adjust(f32 param_0, s16 param_1, f32 param_2) { +static asm f32 distace_angle_adjust(f32 param_0, s16 param_1, f32 param_2) { nofralloc #include "asm/d/d_attention/distace_angle_adjust__Ffsf.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80452678-80452680 000C78 0008+00 3/3 0/0 0/0 .sdata2 @4514 */ @@ -510,15 +700,34 @@ SECTION_SDATA2 static u8 lit_4516[8] = { /* 80070CA0-80070E90 06B5E0 01F0+00 3/3 0/0 0/0 .text check_distace__FP4cXyzsP4cXyzffff */ +// matches with literals +#ifdef NONMATCHING +static bool check_distace(cXyz* param_0, s16 param_1, cXyz* param_2, f32 param_3, f32 param_4, + f32 param_5, f32 param_6) { + cXyz tmp = *param_2 - *param_0; + + if (tmp.y <= param_6 || tmp.y >= param_5) { + return false; + } + + f32 adjust = param_3 + distace_angle_adjust(param_4, param_1, 1.0f); + if (adjust < tmp.absXZ()) { + return false; + } + + return true; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void check_distace(cXyz* param_0, s16 param_1, cXyz* param_2, f32 param_3, f32 param_4, - f32 param_5, f32 param_6) { +static asm int check_distace(cXyz* param_0, s16 param_1, cXyz* param_2, f32 param_3, f32 param_4, + f32 param_5, f32 param_6) { nofralloc #include "asm/d/d_attention/check_distace__FP4cXyzsP4cXyzffff.s" } #pragma pop +#endif /* ############################################################################################## */ /* 80452690-80452694 000C90 0004+00 3/3 0/0 0/0 .sdata2 @4562 */ @@ -529,18 +738,152 @@ SECTION_SDATA2 static f32 lit_4563 = 0.5f; /* 80070E90-800710C0 06B7D0 0230+00 2/2 0/0 0/0 .text * calcWeight__12dAttention_cFiP10fopAc_ac_cfssPUl */ +// matches with literals +#ifdef NONMATCHING +f32 dAttention_c::calcWeight(int param_0, fopAc_ac_c* param_1, f32 param_2, s16 param_3, + s16 param_4, u32* param_5) { + int i; + int num; + type_tbl_entry* table; + + switch (param_0) { + case 0x4C: + if (chkFlag(0x4000)) { + return 0.0f; + } + + num = loc_type_num; + table = loc_type_tbl; + break; + default: + case 0x41: + num = act_type_num; + table = act_type_tbl; + break; + case 0x43: + num = chk_type_num; + table = chk_type_tbl; + break; + } + + f32 weight = 0.0f; + f32 dvar14 = -1.0f; + + daPy_py_c* player = daPy_getPlayerActorClass(); + if (player != NULL) { + if (param_1 == fopAcM_SearchByID(player->getGrabActorID())) { + return 0.0f; + } + } + + for (i = 0; i < num; i++) { + f32 dvar12; + type_tbl_entry* entry = &table[i]; + + if (field_0x10 & entry->field_0x2 & param_1->mAttentionInfo.mFlags) { + u8 index = param_1->mAttentionInfo.field_0x0[entry->field_0x0]; + dist_entry* d_entry = &dist_table[index]; + + if (fopAcM_checkStatus(param_1, 0x20000000) || + check_event_condition(entry->field_0x0, param_1->mEvtInfo.getCondition())) { + dvar12 = 0.0f; + } else if (check_flontofplayer(d_entry->field_0x18, param_3, param_4)) { + dvar12 = 0.0f; + } else if (!check_distace(&mOwnerAttnPos, param_3, ¶m_1->mAttentionInfo.mPosition, + d_entry->field_0x0, d_entry->field_0x8, d_entry->field_0xc, + d_entry->field_0x10)) { + dvar12 = 0.0f; + } else { + dvar12 = distace_weight(param_2, param_3, 0.5f); + } + + f32 dvar13 = d_entry->field_0x14; + if (dvar12 > 0.0f && dvar13 > dvar14) { + dvar14 = dvar13; + weight = dvar12 / dvar13; + *param_5 = entry->field_0x0; + } + } + } + + return weight; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dAttention_c::calcWeight(int param_0, fopAc_ac_c* param_1, f32 param_2, s16 param_3, - s16 param_4, u32* param_5) { +asm f32 dAttention_c::calcWeight(int param_0, fopAc_ac_c* param_1, f32 param_2, s16 param_3, + s16 param_4, u32* param_5) { nofralloc #include "asm/d/d_attention/calcWeight__12dAttention_cFiP10fopAc_ac_cfssPUl.s" } #pragma pop +#endif /* 800710C0-80071240 06BA00 0180+00 1/1 0/0 0/0 .text * setList__12dAttention_cFiP10fopAc_ac_cff7cSAngleUl */ +#ifdef NONMATCHING +void dAttention_c::setList(int param_0, fopAc_ac_c* param_1, f32 param_2, f32 param_3, + cSAngle param_4, u32 param_5) { + int i; + int max; + int* num; + dAttList_c* list; + + switch (param_0) { + case 0x4C: + if (!chkFlag(0x4000) && (mLockonCount < 1 || param_1 != mLockOnList[0].getActor() || param_5 != mLockOnList[0].mType)) { + max = 8; + num = &mLockonCount; + list = mLockOnList; + break; + } + + return; + default: + case 0x41: + max = 4; + num = &mActionCount; + list = mActionList; + break; + case 0x43: + max = 4; + num = &mCheckObjectCount; + list = mCheckObjectList; + break; + } + + f32 weight = 0.0f; + + if (param_2 > weight) { + int temp_r3 = *num; + int var_r5; + + if (temp_r3 < max) { + var_r5 = temp_r3; + *num = temp_r3 + 1; + } else { + f32 var_f1 = weight; + var_r5 = 0; + for (i = 0; i < max; i++) { + if (list[i].mWeight > var_f1) { + var_f1 = list[i].mWeight; + var_r5 = i; + } + } + } + + list = &list[var_r5]; + if (list->mWeight > param_2) { + list->setActor(param_1); + list->mWeight = param_2; + list->mDistance = param_3; + list->mAngle = param_4; + list->mType = param_5; + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -550,6 +893,7 @@ asm void dAttention_c::setList(int param_0, fopAc_ac_c* param_1, f32 param_2, f3 #include "asm/d/d_attention/setList__12dAttention_cFiP10fopAc_ac_cff7cSAngleUl.s" } #pragma pop +#endif /* 80071240-8007138C 06BB80 014C+00 6/6 0/0 0/0 .text initList__12dAttention_cFUl */ #pragma push @@ -563,41 +907,36 @@ asm void dAttention_c::initList(u32 param_0) { /* 8007138C-800713CC 06BCCC 0040+00 1/1 0/0 0/0 .text select_attention__FP10fopAc_ac_cPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void select_attention(fopAc_ac_c* param_0, void* param_1) { - nofralloc -#include "asm/d/d_attention/select_attention__FP10fopAc_ac_cPv.s" +static int select_attention(fopAc_ac_c* param_0, void* i_attention) { + if (param_0->mAttentionInfo.mFlags == 0) { + return 0; + } + + return ((dAttention_c*)i_attention)->SelectAttention(param_0); } -#pragma pop /* 800713CC-80071424 06BD0C 0058+00 4/4 0/0 0/0 .text makeList__12dAttention_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::makeList() { - nofralloc -#include "asm/d/d_attention/makeList__12dAttention_cFv.s" +int dAttention_c::makeList() { + fopAcIt_Executor((fopAcIt_ExecutorFunc)select_attention, this); + setFlag(0x2000); + return mLockonCount + mActionCount + mCheckObjectCount; } -#pragma pop /* 80071424-80071488 06BD64 0064+00 1/1 0/0 0/0 .text setOwnerAttentionPos__12dAttention_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::setOwnerAttentionPos() { - nofralloc -#include "asm/d/d_attention/setOwnerAttentionPos__12dAttention_cFv.s" +void dAttention_c::setOwnerAttentionPos() { + mOwnerAttnPos = mpPlayer->mAttentionInfo.mPosition; + + if (fopAcM_GetName(mpPlayer) == PROC_ALINK) { + mOwnerAttnPos.y -= ((daPy_py_c*)mpPlayer)->getAttentionOffsetY(); + } } -#pragma pop /* 80071488-8007167C 06BDC8 01F4+00 1/1 0/0 0/0 .text * SelectAttention__12dAttention_cFP10fopAc_ac_c */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dAttention_c::SelectAttention(fopAc_ac_c* param_0) { +asm int dAttention_c::SelectAttention(fopAc_ac_c* param_0) { nofralloc #include "asm/d/d_attention/SelectAttention__12dAttention_cFP10fopAc_ac_c.s" } @@ -614,6 +953,52 @@ extern "C" asm void __dt__7cSGlobeFv() { #pragma pop /* 800716B8-800718A4 06BFF8 01EC+00 4/4 0/0 0/0 .text sortList__12dAttention_cFv */ +#ifdef NONMATCHING +void dAttention_c::sortList() { + dAttList_c list; + + if (!chkFlag(0x4000)) { + for (int i = (mLockTargetID != -1); i < mLockonCount - 1; i++) { + dAttList_c* list_1 = &mLockOnList[i]; + for (int j = i + 1; j < mLockonCount; j++) { + dAttList_c* list_2 = &mLockOnList[j]; + + if (list_2->mWeight < list_1->mWeight) { + memcpy(&list, list_2, sizeof(dAttList_c)); + memcpy(list_2, list_1, sizeof(dAttList_c)); + memcpy(list_1, &list, sizeof(dAttList_c)); + } + } + } + } + + for (int i = 0; i < mActionCount - 1; i++) { + dAttList_c* list_1 = &mActionList[i]; + for (int j = i + 1; j < mActionCount; j++) { + dAttList_c* list_2 = &mActionList[j]; + + if (list_2->mWeight < list_1->mWeight) { + memcpy(&list, list_2, sizeof(dAttList_c)); + memcpy(list_2, list_1, sizeof(dAttList_c)); + memcpy(list_1, &list, sizeof(dAttList_c)); + } + } + } + + for (int i = 0; i < mCheckObjectCount - 1; i++) { + dAttList_c* list_1 = &mCheckObjectList[i]; + for (int j = i + 1; j < mCheckObjectCount; j++) { + dAttList_c* list_2 = &mCheckObjectList[j]; + + if (list_2->mWeight < list_1->mWeight) { + memcpy(&list, list_2, sizeof(dAttList_c)); + memcpy(list_2, list_1, sizeof(dAttList_c)); + memcpy(list_1, &list, sizeof(dAttList_c)); + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -622,162 +1007,674 @@ asm void dAttention_c::sortList() { #include "asm/d/d_attention/sortList__12dAttention_cFv.s" } #pragma pop +#endif /* 800718A4-80071960 06C1E4 00BC+00 2/2 0/0 0/0 .text stockAttention__12dAttention_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::stockAttention() { - nofralloc -#include "asm/d/d_attention/stockAttention__12dAttention_cFv.s" +void dAttention_c::stockAttention() { + fopAc_ac_c* target = LockonTarget(0); + + initList(-1); + if (makeList()) { + sortList(); + } + + if (target != mLockOnList[0].getActor()) { + if (target != NULL) { + if (mLockOnList[0].getActor() != NULL) { + setFlag(2); + } + } else { + setFlag(1); + } + setFlag(4); + } + + LockonTarget(0); } -#pragma pop /* 80071960-80071A68 06C2A0 0108+00 2/2 0/0 0/0 .text nextAttention__12dAttention_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::nextAttention() { - nofralloc -#include "asm/d/d_attention/nextAttention__12dAttention_cFv.s" +fopAc_ac_c* dAttention_c::nextAttention() { + if (!attn_opt_hold && mLockonCount == 1) { + field_0x32e = 0; + return NULL; + } + + if (field_0x32e != 0) { + mLockOnOffset++; + + if (mLockOnOffset >= mLockonCount) { + mLockOnOffset = 0; + } + return LockonTarget(0); + } + + fopAc_ac_c* actor = fopAcM_SearchByID(mLockTargetID); + initList(-1); + + if (makeList()) { + sortList(); + } + + if (actor == mLockOnList[0].getActor() && mLockonCount > 1) { + mLockOnOffset = 1; + } + + return LockonTarget(0); } -#pragma pop /* 80071A68-80071A98 06C3A8 0030+00 3/3 0/0 0/0 .text freeAttention__12dAttention_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::freeAttention() { - nofralloc -#include "asm/d/d_attention/freeAttention__12dAttention_cFv.s" +int dAttention_c::freeAttention() { + mLockTargetID = -1; + initList(-1); + return 0; } -#pragma pop /* 80071A98-80071CC0 06C3D8 0228+00 2/2 0/0 0/0 .text chaseAttention__12dAttention_cFv */ +#ifdef NONMATCHING +bool dAttention_c::chaseAttention() { + int offset = mLockOnOffset; + fopAc_ac_c* actor = mLockOnList[offset].getActor(); + + if (actor == NULL) { + return false; + } + + if (!chkFlag(0x4000)) { + cSGlobe g1(actor->mAttentionInfo.mPosition - mOwnerAttnPos); + cSAngle a1(g1.U() - mpPlayer->mCollisionRot.y); + + cSGlobe g2(mOwnerAttnPos - actor->mAttentionInfo.mPosition); + cSAngle a2(g2.U() - actor->mCollisionRot.y); + + u32 type; + f32 weight = calcWeight(0x4C, actor, g1.R(), a1.Val(), a2.Val(), &type); + if (weight >= 0.0f) { + int type = mLockOnList[offset].mType; + int tbl_idx = actor->mAttentionInfo.field_0x0[type]; + + if (!chkAttMask(type, actor->mAttentionInfo.mFlags)) { + return false; + } else if (check_event_condition(type, actor->mEvtInfo.getCondition())) { + return false; + } else if (check_flontofplayer(dist_table[tbl_idx].field_0x18, a1.Val(), a2.Val())) { + return false; + } else if (check_distace(&mOwnerAttnPos, a1.Val(), &actor->mAttentionInfo.mPosition, + dist_table[tbl_idx].field_0x4, dist_table[tbl_idx].field_0x8, + dist_table[tbl_idx].field_0xc, + dist_table[tbl_idx].field_0x10)) { + mLockOnList[offset].mWeight = distace_weight(g1.R(), a1.Val(), 0.5f); + return true; + } + + return false; + } + + mLockOnList[offset].setActor(actor); + mLockOnList[offset].mWeight = weight; + mLockOnList[offset].mDistance = g1.R(); + mLockOnList[offset].mType = type; + return true; + } + + return (actor->mAttentionInfo.mFlags & 7) != false; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dAttention_c::chaseAttention() { +asm bool dAttention_c::chaseAttention() { nofralloc #include "asm/d/d_attention/chaseAttention__12dAttention_cFv.s" } #pragma pop +#endif /* 80071CC0-80071D6C 06C600 00AC+00 1/1 0/0 0/0 .text EnemyDistance__12dAttention_cFP10fopAc_ac_c */ +// matches with literals +#ifdef NONMATCHING +f32 dAttention_c::EnemyDistance(fopAc_ac_c* i_actor) { + f32 distance; + + if (i_actor == mpPlayer || mpPlayer == NULL) { + distance = -1.0f; + } else if (fopAcM_GetProfName(i_actor) == PROC_ALINK) { + distance = -1.0f; + } else if (!(i_actor->mAttentionInfo.mFlags & 4) && + !(i_actor->mAttentionInfo.mFlags & 0x4000000)) { + distance = -1.0f; + } else { + distance = fopAcM_searchActorDistance(mpPlayer, i_actor); + u8 tmp = i_actor->mAttentionInfo.field_0x0[2]; + + if (distance < dist_table[tmp].field_0x0 + dist_table[tmp].field_0x8) { + return distance; + } + + distance = -1.0f; + } + + return distance; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dAttention_c::EnemyDistance(fopAc_ac_c* param_0) { +asm f32 dAttention_c::EnemyDistance(fopAc_ac_c* param_0) { nofralloc #include "asm/d/d_attention/EnemyDistance__12dAttention_cFP10fopAc_ac_c.s" } #pragma pop +#endif /* 80071D6C-80071DEC 06C6AC 0080+00 1/1 0/0 0/0 .text sound_attention__FP10fopAc_ac_cPv */ +// matches with literals +#ifdef NONMATCHING +static int sound_attention(fopAc_ac_c* param_0, void* i_attention) { + f32 dist = ((dAttention_c*)i_attention)->EnemyDistance(param_0); + + if (dist < 0.0f) { + return 0; + } + + if (dist < ((dAttention_c*)i_attention)->mEnemyDist) { + ((dAttention_c*)i_attention)->mEnemyActorID = fopAcM_GetID(param_0); + ((dAttention_c*)i_attention)->mEnemyDist = dist; + } + + return 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void sound_attention(fopAc_ac_c* param_0, void* param_1) { +static asm int sound_attention(fopAc_ac_c* param_0, void* param_1) { nofralloc #include "asm/d/d_attention/sound_attention__FP10fopAc_ac_cPv.s" } #pragma pop - -/* ############################################################################################## */ -/* 80452698-8045269C 000C98 0004+00 1/1 0/0 0/0 .sdata2 @5137 */ -SECTION_SDATA2 static f32 lit_5137 = 10000.0f; - -/* 8045269C-804526A0 000C9C 0004+00 1/1 0/0 0/0 .sdata2 @5138 */ -SECTION_SDATA2 static f32 lit_5138 = 1.0f / 10.0f; +#endif /* 80071DEC-80071E84 06C72C 0098+00 1/1 0/0 0/0 .text runSoundProc__12dAttention_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::runSoundProc() { - nofralloc -#include "asm/d/d_attention/runSoundProc__12dAttention_cFv.s" +void dAttention_c::runSoundProc() { + mEnemyActorID = -1; + mEnemyDist = 10000.0f; + + if (!chkFlag(0x80000000)) { + fopAcIt_Executor((fopAcIt_ExecutorFunc)sound_attention, this); + + if (fopAcM_SearchByID(mEnemyActorID) != NULL) { + mDoAud_bgmNowBattle(mEnemyDist * 0.1f); + setFlag(0x100); + } + } } -#pragma pop /* 80071E84-800720F4 06C7C4 0270+00 1/1 0/0 0/0 .text runDrawProc__12dAttention_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::runDrawProc() { - nofralloc -#include "asm/d/d_attention/runDrawProc__12dAttention_cFv.s" +void dAttention_c::runDrawProc() { + if ((mFlags >> 3) & 1) { + draw[0].setAlphaAnm(mAttParam.mAttnCursorAppearFrames, 0); + draw[0].setAnm(1, mAttParam.field_0x3c); + draw[0].field_0x164.x = mAttParam.mAttnCursorScaleX; + draw[0].field_0x164.y = mAttParam.mAttnCursorScaleY; + draw[0].field_0x164.z = mAttParam.mAttnCursorOffsetY; + draw[0].field_0x175 = 1; + + if (!i_dComIfGp_checkPlayerStatus0(0, 0x36a02311) || + i_dComIfGp_checkPlayerStatus1(0, 0x11)) { + lockSoundStart(Z2SE_SY_L_FOCUS_SET); + } + } else if (chkFlag(0x10)) { + draw[0].setAlphaAnm(mAttParam.mAttnCursorDisappearFrames, 1); + if (field_0x328 >= 0) { + field_0x328 = 1; + setFlag(0x40000000); + } + + if (!i_dComIfGp_checkPlayerStatus0(0, 0x36a02311) || + i_dComIfGp_checkPlayerStatus1(0, 0x11)) { + lockSoundStart(Z2SE_SY_L_FOCUS_RESET); + } + } else if (chkFlag(0x1)) { + draw[0].setAnm(0, mAttParam.field_0x38); + draw[0].setAlphaAnm(mAttParam.mAttnCursorAppearFrames, 0); + + draw[0].field_0x164.x = mAttParam.mSelCursorScaleX; + draw[0].field_0x164.y = mAttParam.mSelCursorScaleY; + draw[0].field_0x164.z = mAttParam.mSelCursorOffsetY; + draw[0].field_0x175 = 0; + setFlag(0x40000000); + } else if (chkFlag(0x2)) { + draw[0].setAlphaAnm(mAttParam.mAttnCursorAppearFrames, 0); + draw[1].setAnm(0, mAttParam.field_0x38); + draw[1].setAlphaAnm(mAttParam.mAttnCursorDisappearFrames, 1); + + draw[1].field_0x164.x = mAttParam.mSelCursorScaleX; + draw[1].field_0x164.y = mAttParam.mSelCursorScaleY; + draw[1].field_0x164.z = mAttParam.mSelCursorOffsetY; + draw[1].field_0x175 = 0; + setFlag(0x40000000); + } else if (mLockonCount <= 0 && field_0x328 == 0) { + draw[0].setAlphaAnm(mAttParam.mAttnCursorDisappearFrames, 1); + field_0x328 = 1; + setFlag(0x40000000); + } + + if (mAttnStatus == ST_LOCK) { + if (draw[0].field_0x173 == 3) { + draw[0].field_0x173 = 4; + clrFlag(0x40000000); + } + } else if (draw[0].field_0x173 == 3) { + draw[0].field_0x173 = 4; + clrFlag(0x40000000); + field_0x328 = -1; + } } -#pragma pop /* 800720F4-800720F8 06CA34 0004+00 1/1 0/0 0/0 .text runDebugDisp__12dAttention_cFv */ -void dAttention_c::runDebugDisp() { - /* empty function */ -} +void dAttention_c::runDebugDisp() {} /* 800720F8-800722A0 06CA38 01A8+00 1/1 0/0 0/0 .text checkButton__12dAttention_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::checkButton() { - nofralloc -#include "asm/d/d_attention/checkButton__12dAttention_cFv.s" +void dAttention_c::checkButton() { + if (on_final_boss_stg && dComIfGp_roomControl_getStayNo() == 0 && + !dComIfGs_isSaveDunSwitch(1)) { + if (field_0x32b == 1 && LockonTarget(0) != NULL && chkFlag(0x20000000)) { + setFlag(0x1000000); + } + } + + if (i_dComIfGp_checkPlayerStatus0(0, 0x36a02311) || i_dComIfGp_checkPlayerStatus1(0, 0x11)) { + switch (field_0x32b) { + case 0: + case 1: + clrFlag(0x1000000); + field_0x32b = 4; + break; + } + + return; + } + + switch (field_0x32b) { + case 4: + if (padLockButton(mPadNo) || chkFlag(0x1000000)) { + field_0x32b = 0; + setFlag(0x200); + clrFlag(0x1000000); + } + return; + case 0: + field_0x32b = 1; + case 1: + if (chkFlag(0x1000000)) { + field_0x32b = 0; + field_0x32e = 0x3C; + setFlag(0x200); + clrFlag(0x1000000); + return; + } + + if (!padLockButton(mPadNo)) { + field_0x32b = 4; + } + } } -#pragma pop /* 800722A0-800722EC 06CBE0 004C+00 2/2 0/0 0/0 .text triggerProc__12dAttention_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::triggerProc() { - nofralloc -#include "asm/d/d_attention/triggerProc__12dAttention_cFv.s" +bool dAttention_c::triggerProc() { + if (chaseAttention()) { + setFlag(0x8); + return true; + } + + return false; } -#pragma pop /* 800722EC-80072344 06CC2C 0058+00 2/2 0/0 0/0 .text lostCheck__12dAttention_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::lostCheck() { - nofralloc -#include "asm/d/d_attention/lostCheck__12dAttention_cFv.s" +int dAttention_c::lostCheck() { + if (chaseAttention()) { + return false; + } + + setFlag(0x10); + setFlag(0x40); + return true; } -#pragma pop /* 80072344-800725F0 06CC84 02AC+00 1/1 0/0 0/0 .text judgementStatus4Hold__12dAttention_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::judgementStatus4Hold() { - nofralloc -#include "asm/d/d_attention/judgementStatus4Hold__12dAttention_cFv.s" +void dAttention_c::judgementStatus4Hold() { + switch (mAttnStatus) { + case ST_NONE: + field_0x32f = 0; + field_0x32e = 0; + mLockTargetID = -1; + stockAttention(); + + if (field_0x32b == 0 && triggerProc()) { + mAttnStatus = ST_LOCK; + field_0x32e = 15; + } + break; + case ST_LOCK: + mLockTargetID = LockonTargetPId(0); + field_0x32f = 0; + + if (lostCheck()) { + mLockTargetID = -1; + stockAttention(); + + if (triggerProc()) { + mAttnStatus = ST_LOCK; + } else { + mAttnStatus = ST_NONE; + freeAttention(); + setFlag(0x800000); + } + } else if (field_0x32b == 4) { + mAttnStatus = ST_RELEASE; + setFlag(0x10); + field_0x32f = 10; + } else if (field_0x32e == 0) { + initList(-1); + + if (makeList()) { + sortList(); + } + } + + if (field_0x32e != 0) { + field_0x32e--; + } + + break; + case ST_RELEASE: + setFlag(0x40); + + if (lostCheck()) { + mLockTargetID = -1; + stockAttention(); + + if (triggerProc()) { + mAttnStatus = ST_LOCK; + } else { + mAttnStatus = ST_NONE; + freeAttention(); + setFlag(0x800000); + } + } else if (field_0x32b == 0) { + if (nextAttention()) { + setFlag(0x8); + mAttnStatus = ST_LOCK; + field_0x32e = 15; + } else { + mAttnStatus = ST_NONE; + freeAttention(); + } + } else if (LockonTarget(0) == NULL || field_0x32f == 0) { + mAttnStatus = ST_NONE; + freeAttention(); + } + + if (field_0x32f != 0) { + field_0x32f--; + } + + break; + } + + if (!chkFlag(0x1000)) { + setFlag(0x4000); + initList(-1); + + if (makeList()) { + sortList(); + } + } } -#pragma pop /* 800725F0-80072924 06CF30 0334+00 1/1 0/0 0/0 .text judgementStatus4Switch__12dAttention_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::judgementStatus4Switch() { - nofralloc -#include "asm/d/d_attention/judgementStatus4Switch__12dAttention_cFv.s" +void dAttention_c::judgementStatus4Switch() { + switch (mAttnStatus) { + case ST_NONE: + mLockTargetID = -1; + stockAttention(); + field_0x32f = 0; + field_0x32e = 0; + + if (field_0x32b == 0 && triggerProc()) { + mAttnStatus = ST_LOCK; + field_0x32e = 15; + field_0x32f = 15; + } + break; + case ST_LOCK: + mLockTargetID = LockonTargetPId(0); + + if (field_0x32f == 0) { + mAttnStatus = ST_NONE; + freeAttention(); + } else if (lostCheck()) { + mLockTargetID = -1; + stockAttention(); + + if (triggerProc()) { + mAttnStatus = ST_LOCK; + } else { + mAttnStatus = ST_NONE; + freeAttention(); + setFlag(0x800000); + } + } else if (field_0x32b == 0) { + if (mDoCPd_c::getStickY(mPadNo) < lit_4064) { + mAttnStatus = ST_NONE; + freeAttention(); + } else if (nextAttention()) { + setFlag(0x8); + mAttnStatus = ST_LOCK; + field_0x32e = 15; + } else { + mAttnStatus = ST_NONE; + freeAttention(); + } + } else if (field_0x32e == 0) { + initList(-1); + + if (makeList()) { + sortList(); + } + } + + if (!chkFlag(0x8) && field_0x32e != 0) { + field_0x32e--; + } + + if (field_0x32b == 1) { + if (field_0x32f != 0) { + field_0x32f--; + } + } else { + field_0x32f = 15; + } + + break; + case ST_RELEASE: + setFlag(0x40); + + if (lostCheck()) { + mLockTargetID = -1; + stockAttention(); + + if (triggerProc()) { + mAttnStatus = ST_LOCK; + } else { + mAttnStatus = ST_NONE; + freeAttention(); + setFlag(0x800000); + } + } else if (field_0x32b == 0) { + mAttnStatus = ST_NONE; + + if (triggerProc()) { + mAttnStatus = ST_LOCK; + field_0x32e = 15; + field_0x32f = 15; + } + } else if (LockonTarget(0) == NULL || field_0x32f == 0) { + mAttnStatus = ST_NONE; + freeAttention(); + } + + break; + } + + if (!chkFlag(0x1000)) { + setFlag(0x4000); + initList(-1); + + if (makeList()) { + sortList(); + } + } } -#pragma pop /* 80072924-80072BD4 06D264 02B0+00 0/0 1/1 0/0 .text Run__12dAttention_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::Run() { - nofralloc -#include "asm/d/d_attention/Run__12dAttention_cFv.s" +int dAttention_c::Run() { + clrFlag(0x3FFFFF); + + bool usingHold = dComIfGs_getOptAttentionType() == 0; + if (attn_opt_hold != usingHold) { + setFlag(0x10000); + } + + attn_opt_hold = usingHold; + + if (mAttnBlockTimer != 0) { + mAttnBlockTimer--; + return 1; + } + + if (chkFlag(0x80)) { + mpPlayer = dComIfGp_getPlayer(0); + mPadNo = PAD_1; + } + + setOwnerAttentionPos(); + + if (i_dComIfGp_event_runCheck() || chkFlag(0x10000)) { + mAttnStatus = ST_NONE; + field_0x32b = 4; + field_0x32c = 0; + clrFlag(0x20000000); + clrFlag(0x10000000); + mLockTargetID = -1; + freeAttention(); + } else { + checkButton(); + + if (attn_opt_hold) { + judgementStatus4Hold(); + } else { + judgementStatus4Switch(); + } + + if ((mFlags >> 0x17) & 1) { + freeAttention(); + if (LockonTarget(0) == NULL) { + setFlag(0x20000020); + } + setFlag(0x10000000); + clrFlag(0x800000); + } else if (chkFlag(0x10000000)) { + if (!padLockButton(mPadNo)) { + if (chkFlag(0x20000000)) { + lockSoundStart(Z2SE_SY_CAMERA_L_CANCEL); + clrFlag(0x20000000); + } + + clrFlag(0x10000000); + } + } else { + if (padLockButton(mPadNo)) { + if (LockonTarget(0) == NULL) { + lockSoundStart(Z2SE_SY_CAMERA_L_MOVE); + setFlag(0x20000020); + } + + setFlag(0x10000000); + } + } + } + + field_0x32a = mAttnStatus; + + runSoundProc(); + runDrawProc(); + runDebugDisp(); + + if (mAttnStatus == ST_LOCK) { + dComIfGp_onCameraAttentionStatus(mPadNo, 1); + } else { + dComIfGp_offCameraAttentionStatus(mPadNo, 1); + } + + mZHintTarget.proc(); + mCatghTarget.proc(); + mLookTarget.proc(); + + return 1; } -#pragma pop /* 80072BD4-80072D80 06D514 01AC+00 0/0 1/1 0/0 .text Draw__12dAttention_cFv */ +// reg stuff +#ifdef NONMATCHING +void dAttention_c::Draw() { + if (mAttParam.CheckFlag(0x10)) { + draw[0].field_0x173 = 3; + draw[1].field_0x173 = 3; + return; + } + + Mtx tmp; + PSMTXInverse(dComIfGd_getViewRotMtx(), tmp); + fopAc_ac_c* target = LockonTarget(0); + + if (!i_dComIfGp_event_runCheck()) { + if (target != NULL) { + draw[0].draw(target->mAttentionInfo.mPosition, tmp); + + if (mLockonCount >= 2 && draw[1].field_0x173 == 2) { + int listIdx = mLockOnOffset; + + if (listIdx == 0) { + listIdx = mLockonCount - 1; + } else { + listIdx--; + } + + if (mLockOnList[listIdx].getActor() != NULL) { + fopAc_ac_c* actor = mLockOnList[listIdx].getActor(); + draw[1].draw(actor->mAttentionInfo.mPosition, tmp); + } + } + + mTargetActorID = fopAcM_GetID(target); + mDrawAttnPos = target->mAttentionInfo.mPosition; + field_0x328 = 0; + } else if (field_0x328 > 0) { + fopAc_ac_c* actor = fopAcM_SearchByID(mTargetActorID); + + if (actor != NULL) { + draw[0].draw(actor->mAttentionInfo.mPosition, tmp); + mDrawAttnPos = actor->mAttentionInfo.mPosition; + } else { + draw[0].draw(mDrawAttnPos, tmp); + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -786,9 +1683,18 @@ asm void dAttention_c::Draw() { #include "asm/d/d_attention/Draw__12dAttention_cFv.s" } #pragma pop +#endif /* 80072D80-80072DD8 06D6C0 0058+00 2/2 0/0 0/0 .text lockSoundStart__12dAttention_cFUl */ +// matches with literals +#ifdef NONMATCHING +void dAttention_c::lockSoundStart(u32 i_sfxID) { + if (!chkFlag(0x400000)) { + mDoAud_seStart(i_sfxID, NULL, 0, 0); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -797,6 +1703,7 @@ asm void dAttention_c::lockSoundStart(u32 param_0) { #include "asm/d/d_attention/lockSoundStart__12dAttention_cFUl.s" } #pragma pop +#endif /* 80072DD8-80072FE8 06D718 0210+00 1/1 0/0 0/0 .text setAnm__10dAttDraw_cFUcf */ #pragma push @@ -809,14 +1716,12 @@ asm void dAttDraw_c::setAnm(u8 param_0, f32 param_1) { #pragma pop /* 80072FE8-80073004 06D928 001C+00 1/1 0/0 0/0 .text setAlphaAnm__10dAttDraw_cFUcUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttDraw_c::setAlphaAnm(u8 param_0, u8 param_1) { - nofralloc -#include "asm/d/d_attention/setAlphaAnm__10dAttDraw_cFUcUc.s" +void dAttDraw_c::setAlphaAnm(u8 param_0, u8 param_1) { + field_0x171 = param_0; + field_0x172 = 0; + field_0x173 = 2; + field_0x174 = param_1; } -#pragma pop /* ############################################################################################## */ /* 804526A0-804526A8 000CA0 0004+04 1/1 0/0 0/0 .sdata2 @5668 */ @@ -853,190 +1758,243 @@ SECTION_SDATA2 static f32 lit_5784 = 0.01745329238474369f; SECTION_SDATA2 static f32 lit_5785 = -100.0f; /* 800732B0-8007353C 06DBF0 028C+00 1/1 0/0 0/0 .text draw__10dAttDraw_cFR4cXyzPA4_f */ +// matches with literals +#ifdef NONMATCHING +void dAttDraw_c::draw(cXyz& param_0, Mtx param_1) { + J3DModelData* modelData = mModel[field_0x170]->getModelData(); + + mDoMtx_stack_c::transS(param_0.x, param_0.y + field_0x164.z, param_0.z); + mDoMtx_stack_c::concat(param_1); + mModel[field_0x170]->i_setBaseTRMtx(mDoMtx_stack_c::get()); + + view_class* view = dComIfGd_getView(); + f32 temp_f31 = tan(0.01745329238474369f * (0.5f * view->mFovy)); + f32 temp_f30 = (-100.0f - g_AttDwHIO.mCursorDistance) / temp_f31; + + cXyz tmp; + PSMTXMultVec(dComIfGd_getViewMtx(), ¶m_0, &tmp); + + f32 var_f2 = 1.0f; + if (tmp.z < temp_f30) { + var_f2 = (tmp.z * temp_f31) / (-100.0f - g_AttDwHIO.mCursorDistance); + } + + mModel[field_0x170]->setBaseScale( + cXyz(field_0x164.x * var_f2, field_0x164.y * var_f2, field_0x164.x * var_f2)); + + alphaAnm(); + + if (field_0x175 != 0) { + mImpactBck.entry(modelData); + mImpactBpk.entry(modelData); + mImpactBrk.entry(modelData); + mImpactBtk.entry(modelData); + } else { + mNoticeCursorBck[field_0x170].entry(modelData); + mNoticeCursorBpk[field_0x170].entry(modelData); + mNoticeCursorBrk[field_0x170].entry(modelData); + mNoticeCursorBtk[field_0x170].entry(modelData); + mNoticeCursor02Brk[field_0x170].entry(modelData); + } + + dComIfGd_setList3Dlast(); + mDoExt_modelUpdateDL(mModel[field_0x170]); + dComIfGd_setList(); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dAttDraw_c::draw(cXyz& param_0, f32 (*param_1)[4]) { +asm void dAttDraw_c::draw(cXyz& param_0, Mtx param_1) { nofralloc #include "asm/d/d_attention/draw__10dAttDraw_cFR4cXyzPA4_f.s" } #pragma pop +#endif /* 8007353C-800735DC 06DE7C 00A0+00 8/8 13/13 21/21 .text LockonTarget__12dAttention_cFl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::LockonTarget(s32 param_0) { - nofralloc -#include "asm/d/d_attention/LockonTarget__12dAttention_cFl.s" +fopAc_ac_c* dAttention_c::LockonTarget(s32 param_0) { + if (i_dComIfGp_checkPlayerStatus0(0, 0x36A02311) || i_dComIfGp_checkPlayerStatus1(0, 0x11)) { + return NULL; + } + + if (param_0 >= mLockonCount) { + return NULL; + } + + int listIdx = mLockOnOffset + param_0; + if (listIdx >= mLockonCount) { + listIdx -= mLockonCount; + } + + fopAc_ac_c* actor = mLockOnList[listIdx].getActor(); + if (actor == NULL || !(actor->mAttentionInfo.mFlags & 7)) { + return NULL; + } + + return actor; } -#pragma pop /* 800735DC-800736CC 06DF1C 00F0+00 0/0 1/1 0/0 .text LockonReleaseDistanse__12dAttention_cFv */ +#ifdef NONMATCHING +f32 dAttention_c::LockonReleaseDistanse() { + if (!LockonTruth()) { + return 0.0f; + } + + fopAc_ac_c* actor = mLockOnList[mLockOnOffset].getActor(); + if (actor == NULL) { + return 0.0f; + } + + int idx = mLockOnList[mLockOnOffset].mType + actor->mAttentionInfo.field_0x0[0]; + cSGlobe tmp_g(actor->mAttentionInfo.mPosition - mOwnerAttnPos); + cSAngle tmp_a(tmp_g.U() - mpPlayer->mCollisionRot.y); + + return distace_angle_adjust(dist_table[idx].field_0x8, tmp_a, 1.0f) + dist_table[idx].field_0x4; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dAttention_c::LockonReleaseDistanse() { +asm f32 dAttention_c::LockonReleaseDistanse() { nofralloc #include "asm/d/d_attention/LockonReleaseDistanse__12dAttention_cFv.s" } #pragma pop +#endif /* 800736CC-80073734 06E00C 0068+00 2/2 0/0 0/0 .text LockonTargetPId__12dAttention_cFl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::LockonTargetPId(s32 param_0) { - nofralloc -#include "asm/d/d_attention/LockonTargetPId__12dAttention_cFl.s" +u32 dAttention_c::LockonTargetPId(s32 param_0) { + if (i_dComIfGp_checkPlayerStatus0(0, 0x36A02311) || i_dComIfGp_checkPlayerStatus1(0, 0x11)) { + return -1; + } + + if (param_0 >= mLockonCount) { + return -1; + } + + int listIdx = mLockOnOffset + param_0; + if (listIdx >= mLockonCount) { + listIdx -= mLockonCount; + } + + return mLockOnList[listIdx].getPid(); } -#pragma pop /* 80073734-8007378C 06E074 0058+00 0/0 3/3 2/2 .text ActionTarget__12dAttention_cFl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::ActionTarget(s32 param_0) { - nofralloc -#include "asm/d/d_attention/ActionTarget__12dAttention_cFl.s" +fopAc_ac_c* dAttention_c::ActionTarget(s32 param_0) { + if (param_0 >= mActionCount) { + return NULL; + } + + int listIdx = mActionOffset + param_0; + if (listIdx >= mActionCount) { + listIdx -= mActionCount; + } + + return mActionList[listIdx].getActor(); } -#pragma pop /* 8007378C-800737E4 06E0CC 0058+00 0/0 3/3 0/0 .text CheckObjectTarget__12dAttention_cFl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::CheckObjectTarget(s32 param_0) { - nofralloc -#include "asm/d/d_attention/CheckObjectTarget__12dAttention_cFl.s" +fopAc_ac_c* dAttention_c::CheckObjectTarget(s32 param_0) { + if (param_0 >= mCheckObjectCount) { + return NULL; + } + + int listIdx = mCheckObjectOffset + param_0; + if (listIdx >= mCheckObjectCount) { + listIdx -= mCheckObjectCount; + } + + return mCheckObjectList[listIdx].getActor(); } -#pragma pop /* 800737E4-80073838 06E124 0054+00 3/3 53/53 37/37 .text LockonTruth__12dAttention_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool dAttention_c::LockonTruth() { - nofralloc -#include "asm/d/d_attention/LockonTruth__12dAttention_cFv.s" +bool dAttention_c::LockonTruth() { + return (mAttnStatus == ST_LOCK || mAttnStatus == ST_RELEASE) && LockonTarget(0); } -#pragma pop /* 80073838-80073864 06E178 002C+00 0/0 1/1 0/0 .text * checkDistance__12dAttention_cFP4cXyzsP4cXyzffff */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttention_c::checkDistance(cXyz* param_0, s16 param_1, cXyz* param_2, f32 param_3, - f32 param_4, f32 param_5, f32 param_6) { - nofralloc -#include "asm/d/d_attention/checkDistance__12dAttention_cFP4cXyzsP4cXyzffff.s" +int dAttention_c::checkDistance(cXyz* param_0, s16 param_1, cXyz* param_2, f32 param_3, f32 param_4, + f32 param_5, f32 param_6) { + return check_distace(param_0, param_1, param_2, param_3, param_4, param_5, param_6); } -#pragma pop /* 80073864-80073898 06E1A4 0034+00 11/11 3/3 8/8 .text getActor__10dAttList_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttList_c::getActor() { - nofralloc -#include "asm/d/d_attention/getActor__10dAttList_cFv.s" +fopAc_ac_c* dAttList_c::getActor() { + return fopAcM_SearchByID(mActorID); } -#pragma pop /* 80073898-800738B4 06E1D8 001C+00 3/3 0/0 0/0 .text setActor__10dAttList_cFP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttList_c::setActor(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/d_attention/setActor__10dAttList_cFP10fopAc_ac_c.s" +void dAttList_c::setActor(fopAc_ac_c* i_actor) { + mActorID = fopAcM_GetID(i_actor); } -#pragma pop /* 800738B4-800738CC 06E1F4 0018+00 1/1 0/0 0/0 .text getPId__10dAttHint_cFPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttHint_c::getPId(void* param_0) { - nofralloc -#include "asm/d/d_attention/getPId__10dAttHint_cFPv.s" +u32 dAttHint_c::getPId(void* i_actor) { + return fopAcM_GetID(i_actor); } -#pragma pop /* 800738CC-800738FC 06E20C 0030+00 0/0 1/1 0/0 .text convPId__10dAttHint_cFUi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttHint_c::convPId(unsigned int param_0) { - nofralloc -#include "asm/d/d_attention/convPId__10dAttHint_cFUi.s" +fopAc_ac_c* dAttHint_c::convPId(unsigned int i_id) { + return fopAcM_SearchByID(i_id); } -#pragma pop /* 800738FC-80073958 06E23C 005C+00 0/0 0/0 6/6 .text request__10dAttHint_cFP10fopAc_ac_ci */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttHint_c::request(fopAc_ac_c* param_0, int param_1) { - nofralloc -#include "asm/d/d_attention/request__10dAttHint_cFP10fopAc_ac_ci.s" +int dAttHint_c::request(fopAc_ac_c* i_actor, int i_priority) { + if (i_priority < 0) { + i_priority = 0x1FF; + } + + if (i_priority <= mPriority) { + mHintActorID = getPId(i_actor); + mPriority = i_priority; + } + + return 1; } -#pragma pop /* 80073958-80073970 06E298 0018+00 1/1 0/0 0/0 .text init__10dAttHint_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttHint_c::init() { - nofralloc -#include "asm/d/d_attention/init__10dAttHint_cFv.s" +void dAttHint_c::init() { + mHintActorID = -1; + field_0x8 = -1; + mPriority = 0x200; } -#pragma pop /* 80073970-8007398C 06E2B0 001C+00 1/1 0/0 0/0 .text proc__10dAttHint_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttHint_c::proc() { - nofralloc -#include "asm/d/d_attention/proc__10dAttHint_cFv.s" +void dAttHint_c::proc() { + field_0x8 = mHintActorID; + mHintActorID = -1; + mPriority = 0x200; } -#pragma pop /* 8007398C-800739BC 06E2CC 0030+00 0/0 4/4 0/0 .text convPId__11dAttCatch_cFUi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s32 dAttCatch_c::convPId(unsigned int param_0) { - nofralloc -#include "asm/d/d_attention/convPId__11dAttCatch_cFUi.s" +fopAc_ac_c* dAttCatch_c::convPId(unsigned int i_id) { + return fopAcM_SearchByID(i_id); } -#pragma pop /* 800739BC-800739DC 06E2FC 0020+00 1/1 0/0 0/0 .text init__11dAttCatch_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttCatch_c::init() { - nofralloc -#include "asm/d/d_attention/init__11dAttCatch_cFv.s" +void dAttCatch_c::init() { + field_0xc = 0x67; + field_0x0 = -1; + mCatghTargetID = -1; + field_0x4 = 3; } -#pragma pop /* 800739DC-80073A08 06E31C 002C+00 1/1 0/0 0/0 .text proc__11dAttCatch_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttCatch_c::proc() { - nofralloc -#include "asm/d/d_attention/proc__11dAttCatch_cFv.s" +void dAttCatch_c::proc() { + mCatghTargetID = field_0x0; + mChangeItem = field_0xc; + field_0x0 = -1; + field_0x4 = 3; + field_0xc = 0x67; } -#pragma pop /* 80073A08-80073CA4 06E348 029C+00 0/0 0/0 10/10 .text * request__11dAttCatch_cFP10fopAc_ac_cUcfffsi */ @@ -1051,34 +2009,23 @@ asm void dAttCatch_c::request(fopAc_ac_c* param_0, u8 param_1, f32 param_2, f32 #pragma pop /* 80073CA4-80073CD4 06E5E4 0030+00 0/0 1/1 0/0 .text convPId__10dAttLook_cFUi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttLook_c::convPId(unsigned int param_0) { - nofralloc -#include "asm/d/d_attention/convPId__10dAttLook_cFUi.s" +fopAc_ac_c* dAttLook_c::convPId(unsigned int i_id) { + return fopAcM_SearchByID(i_id); } -#pragma pop /* 80073CD4-80073CEC 06E614 0018+00 1/1 0/0 0/0 .text init__10dAttLook_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttLook_c::init() { - nofralloc -#include "asm/d/d_attention/init__10dAttLook_cFv.s" +void dAttLook_c::init() { + field_0x0 = -1; + mLookTargetID = -1; + field_0x4 = 3; } -#pragma pop /* 80073CEC-80073D08 06E62C 001C+00 1/1 0/0 0/0 .text proc__10dAttLook_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dAttLook_c::proc() { - nofralloc -#include "asm/d/d_attention/proc__10dAttLook_cFv.s" +void dAttLook_c::proc() { + mLookTargetID = field_0x0; + field_0x0 = -1; + field_0x4 = 3; } -#pragma pop /* 80073D08-80073FC4 06E648 02BC+00 0/0 0/0 7/7 .text request__10dAttLook_cFP10fopAc_ac_cfffsi */ #pragma push @@ -1092,15 +2039,7 @@ asm void dAttLook_c::request(fopAc_ac_c* param_0, f32 param_1, f32 param_2, f32 #pragma pop /* 80073FC4-8007400C 06E904 0048+00 2/1 0/0 0/0 .text __dt__15dAttDrawParam_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -// asm dAttDrawParam_c::~dAttDrawParam_c() { -extern "C" asm void __dt__15dAttDrawParam_cFv() { - nofralloc -#include "asm/d/d_attention/__dt__15dAttDrawParam_cFv.s" -} -#pragma pop +dAttDrawParam_c::~dAttDrawParam_c() {} /* ############################################################################################## */ /* 8045067A-8045067E -00001 0004+00 0/0 0/0 0/0 .sdata None */ diff --git a/src/d/d_demo.cpp b/src/d/d_demo.cpp index ee205a18c8..370e64da47 100644 --- a/src/d/d_demo.cpp +++ b/src/d/d_demo.cpp @@ -5,10 +5,10 @@ #include "d/d_demo.h" #include "d/com/d_com_inf_game.h" +#include "d/msg/d_msg_object.h" #include "dol2asm.h" #include "dolphin/types.h" #include "rel/d/a/d_a_movie_player/d_a_movie_player.h" -#include "d/msg/d_msg_object.h" // // Forward References: @@ -506,37 +506,21 @@ SECTION_DATA extern void* data_803A7BF4[9] = { namespace { /* 80037DE4-80037E44 032724 0060+00 1/0 0/0 0/0 .text * __dt__Q220@unnamed@d_demo_cpp@24jstudio_tAdaptor_messageFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm jstudio_tAdaptor_message::~jstudio_tAdaptor_message() { - nofralloc -#include "asm/d/d_demo/func_80037DE4.s" -} -#pragma pop +jstudio_tAdaptor_message::~jstudio_tAdaptor_message() {} /* 80037E44-80037E74 032784 0030+00 1/0 0/0 0/0 .text * adaptor_do_MESSAGE__Q220@unnamed@d_demo_cpp@24jstudio_tAdaptor_messageFQ37JStudio4data15TEOperationDataPCvUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void jstudio_tAdaptor_message::adaptor_do_MESSAGE(JStudio::data::TEOperationData param_0, const void* param_1, u32 param_2) { - nofralloc -#include "asm/d/d_demo/func_80037E44.s" +void jstudio_tAdaptor_message::adaptor_do_MESSAGE(JStudio::data::TEOperationData param_0, + const void* pContent, u32 uSize) { + if (param_0 == JStudio::data::UNK_0x19) { + dMsgObject_setDemoMessage(*(u32*)pContent); + } } -#pragma pop /* 80037E74-80037ED4 0327B4 0060+00 1/0 0/0 0/0 .text * __dt__Q220@unnamed@d_demo_cpp@29jstudio_tCreateObject_messageFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm jstudio_tCreateObject_message::~jstudio_tCreateObject_message() { - nofralloc -#include "asm/d/d_demo/func_80037E74.s" -} -#pragma pop +jstudio_tCreateObject_message::~jstudio_tCreateObject_message() {} /* 80037ED4-80038020 032814 014C+00 1/0 0/0 0/0 .text * create__Q220@unnamed@d_demo_cpp@29jstudio_tCreateObject_messageFPPQ27JStudio7TObjectRCQ47JStudio3stb4data20TParse_TBlock_object @@ -544,7 +528,9 @@ asm jstudio_tCreateObject_message::~jstudio_tCreateObject_message() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void jstudio_tCreateObject_message::create(JStudio::TObject** param_0, const JStudio::stb::data::TParse_TBlock_object& param_1) { +asm void +jstudio_tCreateObject_message::create(JStudio::TObject** param_0, + const JStudio::stb::data::TParse_TBlock_object& param_1) { nofralloc #include "asm/d/d_demo/func_80037ED4.s" } @@ -611,6 +597,18 @@ SECTION_SDATA2 static u8 lit_4040[4] = { SECTION_SDATA2 static f32 lit_4041 = 1.0f; /* 80038020-80038098 032960 0078+00 1/1 0/0 0/0 .text __ct__13dDemo_actor_cFv */ +// matches with literals +#ifdef NONMATCHING +dDemo_actor_c::dDemo_actor_c() { + mFlags = 0; + mTrans.set(0.0f, 0.0f, 0.0f); + mScale.set(1.0f, 1.0f, 1.0f); + mRotate.set(0, 0, 0); + mModel = NULL; + mAnmFrameMax = __float_max[0]; + mTexAnmFrameMax = __float_max[0]; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -619,8 +617,24 @@ asm dDemo_actor_c::dDemo_actor_c() { #include "asm/d/d_demo/__ct__13dDemo_actor_cFv.s" } #pragma pop +#endif /* 80038098-80038128 0329D8 0090+00 1/0 0/0 0/0 .text __dt__13dDemo_actor_cFv */ +// matches with vtable data +#ifdef NONMATCHING +dDemo_actor_c::~dDemo_actor_c() { + fopAc_ac_c* actor = getActor(); + if (actor != NULL) { + actor->mDemoActorId = 0; + } + + mActorId = -1; + mOldAnmId = -1; + mBtpId = -1; + mBtkId = -1; + mBrkId = -1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -630,26 +644,26 @@ extern "C" asm void __dt__13dDemo_actor_cFv() { #include "asm/d/d_demo/__dt__13dDemo_actor_cFv.s" } #pragma pop +#endif /* 80038128-8003815C 032A68 0034+00 1/1 0/0 0/0 .text getActor__13dDemo_actor_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_actor_c::getActor() { - nofralloc -#include "asm/d/d_demo/getActor__13dDemo_actor_cFv.s" +fopAc_ac_c* dDemo_actor_c::getActor() { + return fopAcM_SearchByID(mActorId); } -#pragma pop /* 8003815C-8003819C 032A9C 0040+00 1/1 1/1 0/0 .text setActor__13dDemo_actor_cFP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_actor_c::setActor(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/d_demo/setActor__13dDemo_actor_cFP10fopAc_ac_c.s" +void dDemo_actor_c::setActor(fopAc_ac_c* pActor) { + if (pActor == NULL) { + mActorId = -1; + } else { + mActorId = fopAcM_GetID(pActor); + } + + mOldAnmId = -1; + mBtpId = -1; + mBtkId = -1; + mBrkId = -1; } -#pragma pop /* ############################################################################################## */ /* 80451DB8-80451DC0 0003B8 0008+00 4/4 0/0 0/0 .sdata2 @4127 */ @@ -659,7 +673,7 @@ SECTION_SDATA2 static f64 lit_4127 = 4503601774854144.0 /* cast s32 to float */; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dDemo_actor_c::getPrm_Morf() { +asm f32 dDemo_actor_c::getPrm_Morf() { nofralloc #include "asm/d/d_demo/getPrm_Morf__13dDemo_actor_cFv.s" } @@ -729,7 +743,7 @@ const u8* dDemo_c::m_branchData; static u8 struct_80450E48[4]; /* 80450E4C-80450E50 00034C 0004+00 1/1 0/0 0/0 .sbss it$4206 */ -static u8 it[4]; +static int it; /* 80038338-80038490 032C78 0158+00 0/0 1/1 5/5 .text getDemoIDData__13dDemo_actor_cFPiPiPiPUsPUc */ @@ -747,7 +761,7 @@ asm void dDemo_actor_c::getDemoIDData(int* param_0, int* param_1, int* param_2, #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void dDemo_getJaiPointer(char const* param_0, u32 param_1, int param_2, u16* param_3) { +static asm void* dDemo_getJaiPointer(char const* param_0, u32 param_1, int param_2, u16* param_3) { nofralloc #include "asm/d/d_demo/dDemo_getJaiPointer__FPCcUliPUs.s" } @@ -759,20 +773,93 @@ SECTION_SDATA2 static f32 lit_4152 = -1.0f; /* 80038518-800387A8 032E58 0290+00 0/0 0/0 2/2 .text * dDemo_setDemoData__FP10fopAc_ac_cUcP14mDoExt_McaMorfPCciPUsUlSc */ +// reg alloc +#ifdef NONMATCHING +int dDemo_setDemoData(fopAc_ac_c* param_0, u8 param_1, mDoExt_McaMorf* param_2, char const* param_3, + int param_4, u16* param_5, u32 param_6, s8 param_7) { + dDemo_actor_c* demo_actor = dDemo_c::getActor(param_0->mDemoActorId); + + if (demo_actor == NULL) { + return 0; + } + + u32 flags = demo_actor->checkEnable(param_1); + if (flags & 2) { + param_0->current.pos = demo_actor->getTrans(); + param_0->next.pos = param_0->current.pos; + } + + if (flags & 8) { + param_0->mCollisionRot = demo_actor->getRatate(); + } + + if (flags & 4) { + param_0->mScale = demo_actor->getScale(); + } + + if (flags & 0x80) { + param_0->mGravity = demo_actor->getPrm_Morf(); + } + + if (param_2 == NULL) { + return 1; + } + + demo_actor->setModel(param_2->getModel()); + + if (flags & 0x20) { + u32 anmID = demo_actor->getAnmId(); + + if (anmID != demo_actor->getOldAnmId()) { + const char* a_name; + if (anmID & 0x10000) { + a_name = dStage_roomControl_c::getDemoArcName(); + } else { + a_name = param_3; + } + + demo_actor->setOldAnmId(anmID); + + J3DAnmTransform* i_key = (J3DAnmTransform*)dComIfG_getObjectIDRes(a_name, anmID); + void* ptr = dDemo_getJaiPointer(a_name, anmID, param_4, param_5); + + param_2->setAnm(i_key, -1, demo_actor->getPrm_Morf(), 1.0f, 0.0f, -1.0f, ptr); + demo_actor->setAnmFrameMax(param_2->getEndFrame()); + } + } + + if (flags & 0x40) { + f32 anm_frame = demo_actor->getAnmFrame(); + + if (anm_frame > 1.0f) { + param_2->setFrame(anm_frame - 1.0f); + param_2->play(¶m_0->current.pos, param_6, param_7); + } else { + param_2->setFrame(anm_frame); + } + } else { + param_2->play(¶m_0->current.pos, param_6, param_7); + } + + return 1; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dDemo_setDemoData(fopAc_ac_c* param_0, u8 param_1, mDoExt_McaMorf* param_2, - char const* param_3, int param_4, u16* param_5, u32 param_6, + char const* a_name, int param_4, u16* param_5, u32 param_6, s8 param_7) { nofralloc #include "asm/d/d_demo/dDemo_setDemoData__FP10fopAc_ac_cUcP14mDoExt_McaMorfPCciPUsUlSc.s" } #pragma pop +#endif /* 800387A8-800387EC 0330E8 0044+00 1/1 0/0 0/0 .text branchFile__FPCc */ static void branchFile(char const* resName) { - dDemo_c::setBranchData((u8*)dComIfG_getObjectRes(dStage_roomControl_c::getDemoArcName(), resName)); + dDemo_c::setBranchData( + (u8*)dComIfG_getObjectRes(dStage_roomControl_c::getDemoArcName(), resName)); } /* ############################################################################################## */ @@ -814,258 +901,205 @@ asm void dDemo_actor_c::JSGSetTranslation(Vec const& param_0) { #pragma pop /* 80038980-800389A8 0332C0 0028+00 1/0 0/0 0/0 .text JSGSetScaling__13dDemo_actor_cFRC3Vec */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_actor_c::JSGSetScaling(Vec const& param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetScaling__13dDemo_actor_cFRC3Vec.s" +void dDemo_actor_c::JSGSetScaling(Vec const& i_scale) { + mScale = i_scale; + onEnable(0x4); } -#pragma pop - -/* ############################################################################################## */ -/* 80451DCC-80451DD0 0003CC 0004+00 1/1 0/0 0/0 .sdata2 @4567 */ -SECTION_SDATA2 static f32 lit_4567 = 182.04444885253906f; /* 800389A8-80038A0C 0332E8 0064+00 1/0 0/0 0/0 .text JSGSetRotation__13dDemo_actor_cFRC3Vec */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_actor_c::JSGSetRotation(Vec const& param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetRotation__13dDemo_actor_cFRC3Vec.s" +void dDemo_actor_c::JSGSetRotation(Vec const& i_rotate) { + mRotate.x = i_rotate.x * 182.04444885253906f; + mRotate.y = i_rotate.y * 182.04444885253906f; + mRotate.z = i_rotate.z * 182.04444885253906f; + onEnable(0x8); } -#pragma pop /* 80038A0C-80038A20 03334C 0014+00 1/0 0/0 0/0 .text JSGSetShape__13dDemo_actor_cFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_actor_c::JSGSetShape(u32 param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetShape__13dDemo_actor_cFUl.s" +void dDemo_actor_c::JSGSetShape(u32 i_shape) { + mShape = i_shape; + onEnable(0x10); } -#pragma pop /* 80038A20-80038A40 033360 0020+00 1/0 0/0 0/0 .text JSGSetAnimation__13dDemo_actor_cFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_actor_c::JSGSetAnimation(u32 param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetAnimation__13dDemo_actor_cFUl.s" +void dDemo_actor_c::JSGSetAnimation(u32 i_anmID) { + mAnmId = i_anmID; + mAnmFrameMax = __float_max[0]; + onEnable(0x20); } -#pragma pop /* 80038A40-80038A54 033380 0014+00 1/0 0/0 0/0 .text JSGSetAnimationFrame__13dDemo_actor_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_actor_c::JSGSetAnimationFrame(f32 param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetAnimationFrame__13dDemo_actor_cFf.s" +void dDemo_actor_c::JSGSetAnimationFrame(f32 i_frame) { + mAnmFrame = i_frame; + onEnable(0x40); } -#pragma pop /* 80038A54-80038A68 033394 0014+00 1/0 0/0 0/0 .text JSGSetAnimationTransition__13dDemo_actor_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_actor_c::JSGSetAnimationTransition(f32 param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetAnimationTransition__13dDemo_actor_cFf.s" +void dDemo_actor_c::JSGSetAnimationTransition(f32 i_trans) { + mAnmTransition = i_trans; + onEnable(0x80); } -#pragma pop /* 80038A68-80038A7C 0333A8 0014+00 1/0 0/0 0/0 .text JSGSetTextureAnimation__13dDemo_actor_cFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_actor_c::JSGSetTextureAnimation(u32 param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetTextureAnimation__13dDemo_actor_cFUl.s" +void dDemo_actor_c::JSGSetTextureAnimation(u32 i_anm) { + mTexAnm = i_anm; + onEnable(0x100); } -#pragma pop /* 80038A7C-80038A90 0333BC 0014+00 1/0 0/0 0/0 .text * JSGSetTextureAnimationFrame__13dDemo_actor_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_actor_c::JSGSetTextureAnimationFrame(f32 param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetTextureAnimationFrame__13dDemo_actor_cFf.s" +void dDemo_actor_c::JSGSetTextureAnimationFrame(f32 i_frame) { + mTexAnmFrame = i_frame; + onEnable(0x200); } -#pragma pop /* 80038A90-80038AC4 0333D0 0034+00 8/8 0/0 0/0 .text getView__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void getView() { - nofralloc -#include "asm/d/d_demo/getView__Fv.s" +static view_class* getView() { + if (dComIfGp_getWindowNum() == 0) { + return NULL; + } + + int camID = dComIfGp_getWindow(0)->getCameraID(); + return dComIfGp_getCamera(camID); } -#pragma pop /* 80038AC4-80038AF8 033404 0034+00 1/0 0/0 0/0 .text JSGGetProjectionNear__14dDemo_camera_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm f32 dDemo_camera_c::JSGGetProjectionNear() const { - nofralloc -#include "asm/d/d_demo/JSGGetProjectionNear__14dDemo_camera_cCFv.s" +f32 dDemo_camera_c::JSGGetProjectionNear() const { + view_class* view = getView(); + + if (view == NULL) { + return FLOAT_LABEL(lit_4040); + } + + return view->mNear; } -#pragma pop /* 80038AF8-80038B0C 033438 0014+00 1/0 0/0 0/0 .text JSGSetProjectionNear__14dDemo_camera_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_camera_c::JSGSetProjectionNear(f32 param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetProjectionNear__14dDemo_camera_cFf.s" +void dDemo_camera_c::JSGSetProjectionNear(f32 i_projNear) { + mProjNear = i_projNear; + onEnable(0x1); } -#pragma pop /* 80038B0C-80038B40 03344C 0034+00 1/0 0/0 0/0 .text JSGGetProjectionFar__14dDemo_camera_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm f32 dDemo_camera_c::JSGGetProjectionFar() const { - nofralloc -#include "asm/d/d_demo/JSGGetProjectionFar__14dDemo_camera_cCFv.s" +f32 dDemo_camera_c::JSGGetProjectionFar() const { + view_class* view = getView(); + + if (view == NULL) { + return lit_4041; + } + + return view->mFar; } -#pragma pop /* 80038B40-80038B54 033480 0014+00 1/0 0/0 0/0 .text JSGSetProjectionFar__14dDemo_camera_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_camera_c::JSGSetProjectionFar(f32 param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetProjectionFar__14dDemo_camera_cFf.s" +void dDemo_camera_c::JSGSetProjectionFar(f32 i_projFar) { + mProjFar = i_projFar; + onEnable(0x2); } -#pragma pop - -/* ############################################################################################## */ -/* 80451DD0-80451DD4 0003D0 0004+00 1/1 0/0 0/0 .sdata2 @4642 */ -SECTION_SDATA2 static f32 lit_4642 = 60.0f; /* 80038B54-80038B88 033494 0034+00 1/0 0/0 0/0 .text JSGGetProjectionFovy__14dDemo_camera_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm f32 dDemo_camera_c::JSGGetProjectionFovy() const { - nofralloc -#include "asm/d/d_demo/JSGGetProjectionFovy__14dDemo_camera_cCFv.s" +f32 dDemo_camera_c::JSGGetProjectionFovy() const { + view_class* view = getView(); + + if (view == NULL) { + return 60.0f; + } + + return view->mFovy; } -#pragma pop /* 80038B88-80038B9C 0334C8 0014+00 1/0 0/0 0/0 .text JSGSetProjectionFovy__14dDemo_camera_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_camera_c::JSGSetProjectionFovy(f32 param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetProjectionFovy__14dDemo_camera_cFf.s" +void dDemo_camera_c::JSGSetProjectionFovy(f32 i_projFovy) { + mProjFovy = i_projFovy; + onEnable(0x4); } -#pragma pop - -/* ############################################################################################## */ -/* 80451DD4-80451DD8 0003D4 0004+00 1/1 0/0 0/0 .sdata2 @4655 */ -SECTION_SDATA2 static f32 lit_4655 = 19.0f / 14.0f; /* 80038B9C-80038BD0 0334DC 0034+00 1/0 0/0 0/0 .text JSGGetProjectionAspect__14dDemo_camera_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm f32 dDemo_camera_c::JSGGetProjectionAspect() const { - nofralloc -#include "asm/d/d_demo/JSGGetProjectionAspect__14dDemo_camera_cCFv.s" +f32 dDemo_camera_c::JSGGetProjectionAspect() const { + view_class* view = getView(); + + if (view == NULL) { + return 1.3571428f; + } + + return view->mAspect; } -#pragma pop /* 80038BD0-80038BE4 033510 0014+00 1/0 0/0 0/0 .text JSGSetProjectionAspect__14dDemo_camera_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_camera_c::JSGSetProjectionAspect(f32 param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetProjectionAspect__14dDemo_camera_cFf.s" +void dDemo_camera_c::JSGSetProjectionAspect(f32 i_aspect) { + mProjAspect = i_aspect; + onEnable(0x8); } -#pragma pop /* 80038BE4-80038C44 033524 0060+00 1/0 0/0 0/0 .text JSGGetViewPosition__14dDemo_camera_cCFP3Vec */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_camera_c::JSGGetViewPosition(Vec* param_0) const { - nofralloc -#include "asm/d/d_demo/JSGGetViewPosition__14dDemo_camera_cCFP3Vec.s" +void dDemo_camera_c::JSGGetViewPosition(Vec* o_position) const { + view_class* view = getView(); + + if (view == NULL) { + f32 tmp_0 = FLOAT_LABEL(lit_4040); + o_position->x = tmp_0; + o_position->y = tmp_0; + o_position->z = tmp_0; + } else { + *o_position = view->mLookat.mEye; + } } -#pragma pop /* 80038C44-80038C6C 033584 0028+00 1/0 0/0 0/0 .text JSGSetViewPosition__14dDemo_camera_cFRC3Vec */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_camera_c::JSGSetViewPosition(Vec const& param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetViewPosition__14dDemo_camera_cFRC3Vec.s" +void dDemo_camera_c::JSGSetViewPosition(Vec const& i_position) { + mViewPos = i_position; + onEnable(0x10); } -#pragma pop /* 80038C6C-80038CD0 0335AC 0064+00 1/0 0/0 0/0 .text JSGGetViewUpVector__14dDemo_camera_cCFP3Vec */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_camera_c::JSGGetViewUpVector(Vec* param_0) const { - nofralloc -#include "asm/d/d_demo/JSGGetViewUpVector__14dDemo_camera_cCFP3Vec.s" +void dDemo_camera_c::JSGGetViewUpVector(Vec* o_upVec) const { + view_class* view = getView(); + + if (view == NULL) { + f32 tmp_0 = FLOAT_LABEL(lit_4040); + o_upVec->x = tmp_0; + o_upVec->y = lit_4041; + o_upVec->z = tmp_0; + } else { + *o_upVec = view->mLookat.mUp; + } } -#pragma pop /* 80038CD0-80038CF8 033610 0028+00 1/0 0/0 0/0 .text JSGSetViewUpVector__14dDemo_camera_cFRC3Vec */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_camera_c::JSGSetViewUpVector(Vec const& param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetViewUpVector__14dDemo_camera_cFRC3Vec.s" +void dDemo_camera_c::JSGSetViewUpVector(Vec const& i_upVec) { + mViewUpVector = i_upVec; + onEnable(0x20); } -#pragma pop /* 80038CF8-80038D5C 033638 0064+00 1/0 0/0 0/0 .text * JSGGetViewTargetPosition__14dDemo_camera_cCFP3Vec */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_camera_c::JSGGetViewTargetPosition(Vec* param_0) const { - nofralloc -#include "asm/d/d_demo/JSGGetViewTargetPosition__14dDemo_camera_cCFP3Vec.s" +void dDemo_camera_c::JSGGetViewTargetPosition(Vec* o_targetPos) const { + view_class* view = getView(); + + if (view == NULL) { + f32 tmp_0 = FLOAT_LABEL(lit_4040); + o_targetPos->x = tmp_0; + o_targetPos->y = tmp_0; + o_targetPos->z = lit_4041; + } else { + *o_targetPos = view->mLookat.mCenter; + } } -#pragma pop /* 80038D5C-80038D84 03369C 0028+00 1/0 0/0 0/0 .text * JSGSetViewTargetPosition__14dDemo_camera_cFRC3Vec */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_camera_c::JSGSetViewTargetPosition(Vec const& param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetViewTargetPosition__14dDemo_camera_cFRC3Vec.s" +void dDemo_camera_c::JSGSetViewTargetPosition(Vec const& i_targetPos) { + mViewTargetVector = i_targetPos; + onEnable(0x40); } -#pragma pop /* ############################################################################################## */ /* 80451DD8-80451DE0 0003D8 0004+04 2/2 0/0 0/0 .sdata2 @4710 */ @@ -1077,6 +1111,18 @@ SECTION_SDATA2 static f32 lit_4710[1 + 1 /* padding */] = { /* 80038D84-80038DDC 0336C4 0058+00 1/0 0/0 0/0 .text JSGGetViewRoll__14dDemo_camera_cCFv */ +// matches with literals +#ifdef NONMATCHING +f32 dDemo_camera_c::JSGGetViewRoll() const { + view_class* view = getView(); + + if (view == NULL) { + return 0.0f; + } + + return view->mBank * 0.0054931640625f; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1085,131 +1131,87 @@ asm f32 dDemo_camera_c::JSGGetViewRoll() const { #include "asm/d/d_demo/JSGGetViewRoll__14dDemo_camera_cCFv.s" } #pragma pop +#endif /* 80038DDC-80038DF0 03371C 0014+00 1/0 0/0 0/0 .text JSGSetViewRoll__14dDemo_camera_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_camera_c::JSGSetViewRoll(f32 param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetViewRoll__14dDemo_camera_cFf.s" +void dDemo_camera_c::JSGSetViewRoll(f32 i_roll) { + mViewRoll = i_roll; + onEnable(0x80); } -#pragma pop /* 80038DF0-80038E20 033730 0030+00 1/0 0/0 0/0 .text JSGSetColor__15dDemo_ambient_cF8_GXColor */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_ambient_c::JSGSetColor(_GXColor param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetColor__15dDemo_ambient_cF8_GXColor.s" +void dDemo_ambient_c::JSGSetColor(GXColor i_color) { + mColor = i_color; + onEnable(0x1); } -#pragma pop /* 80038E20-80038E34 033760 0014+00 1/0 0/0 0/0 .text * JSGSetLightType__13dDemo_light_cFQ26JStage7TELight */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_light_c::JSGSetLightType(JStage::TELight param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetLightType__13dDemo_light_cFQ26JStage7TELight.s" +void dDemo_light_c::JSGSetLightType(JStage::TELight i_lightType) { + mLightType = i_lightType; + onEnable(0x1); } -#pragma pop /* 80038E34-80038E5C 033774 0028+00 1/0 0/0 0/0 .text JSGSetPosition__13dDemo_light_cFRC3Vec */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_light_c::JSGSetPosition(Vec const& param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetPosition__13dDemo_light_cFRC3Vec.s" +void dDemo_light_c::JSGSetPosition(Vec const& i_pos) { + mPosition = i_pos; + onEnable(0x2); } -#pragma pop /* 80038E5C-80038E8C 03379C 0030+00 1/0 0/0 0/0 .text JSGSetColor__13dDemo_light_cF8_GXColor */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_light_c::JSGSetColor(_GXColor param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetColor__13dDemo_light_cF8_GXColor.s" +void dDemo_light_c::JSGSetColor(GXColor i_color) { + mColor = i_color; + onEnable(0x4); } -#pragma pop /* 80038E8C-80038EA8 0337CC 001C+00 1/0 0/0 0/0 .text * JSGSetDistanceAttenuation__13dDemo_light_cFff13_GXDistAttnFn */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_light_c::JSGSetDistanceAttenuation(f32 param_0, f32 param_1, _GXDistAttnFn param_2) { - nofralloc -#include "asm/d/d_demo/JSGSetDistanceAttenuation__13dDemo_light_cFff13_GXDistAttnFn.s" +void dDemo_light_c::JSGSetDistanceAttenuation(f32 param_0, f32 param_1, GXDistAttnFn i_distAttenFn) { + field_0x24 = param_0; + field_0x28 = param_1; + mDistAttenFn = i_distAttenFn; + onEnable(0x8); } -#pragma pop /* 80038EA8-80038EC0 0337E8 0018+00 1/0 0/0 0/0 .text * JSGSetAngleAttenuation__13dDemo_light_cFf9_GXSpotFn */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_light_c::JSGSetAngleAttenuation(f32 param_0, _GXSpotFn param_1) { - nofralloc -#include "asm/d/d_demo/JSGSetAngleAttenuation__13dDemo_light_cFf9_GXSpotFn.s" +void dDemo_light_c::JSGSetAngleAttenuation(f32 param_0, GXSpotFn i_spotFn) { + field_0x2c = param_0; + mSpotFn = i_spotFn; + onEnable(0x10); } -#pragma pop /* 80038EC0-80038EE8 033800 0028+00 1/0 0/0 0/0 .text JSGSetDirection__13dDemo_light_cFRC3Vec */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_light_c::JSGSetDirection(Vec const& param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetDirection__13dDemo_light_cFRC3Vec.s" +void dDemo_light_c::JSGSetDirection(Vec const& i_direction) { + mDirection = i_direction; + onEnable(0x20); } -#pragma pop /* 80038EE8-80038EFC 033828 0014+00 1/0 0/0 0/0 .text * JSGSetFogFunction__11dDemo_fog_cF10_GXFogType */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_fog_c::JSGSetFogFunction(_GXFogType param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetFogFunction__11dDemo_fog_cF10_GXFogType.s" +void dDemo_fog_c::JSGSetFogFunction(GXFogType i_fogType) { + mFogType = i_fogType; + onEnable(0x1); } -#pragma pop /* 80038EFC-80038F10 03383C 0014+00 1/0 0/0 0/0 .text JSGSetStartZ__11dDemo_fog_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_fog_c::JSGSetStartZ(f32 param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetStartZ__11dDemo_fog_cFf.s" +void dDemo_fog_c::JSGSetStartZ(f32 i_startZ) { + mStartZ = i_startZ; + onEnable(0x2); } -#pragma pop /* 80038F10-80038F24 033850 0014+00 1/0 0/0 0/0 .text JSGSetEndZ__11dDemo_fog_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_fog_c::JSGSetEndZ(f32 param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetEndZ__11dDemo_fog_cFf.s" +void dDemo_fog_c::JSGSetEndZ(f32 i_endZ) { + mEndZ = i_endZ; + onEnable(0x4); } -#pragma pop /* 80038F24-80038F54 033864 0030+00 1/0 0/0 0/0 .text JSGSetColor__11dDemo_fog_cF8_GXColor */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_fog_c::JSGSetColor(_GXColor param_0) { - nofralloc -#include "asm/d/d_demo/JSGSetColor__11dDemo_fog_cF8_GXColor.s" +void dDemo_fog_c::JSGSetColor(GXColor i_color) { + mColor = i_color; + onEnable(0x8); } -#pragma pop /* 80038F54-80038F70 033894 001C+00 1/1 0/0 0/0 .text __ct__14dDemo_object_cFv */ dDemo_object_c::dDemo_object_c() { @@ -1386,7 +1388,7 @@ extern "C" asm void __dt__15dDemo_ambient_cFv() { /* 80039528-80039678 033E68 0150+00 1/0 0/0 0/0 .text * JSGFindObject__14dDemo_system_cCFPPQ26JStage7TObjectPCcQ26JStage8TEObject */ bool dDemo_system_c::JSGFindObject(JStage::TObject** p_TObj, char const* actorName, - JStage::TEObject objType) const { + JStage::TEObject objType) const { if (mpObject == NULL) { return true; } @@ -1396,7 +1398,8 @@ bool dDemo_system_c::JSGFindObject(JStage::TObject** p_TObj, char const* actorNa if (actor == NULL) { if (objType == JStage::TOBJ_ACTOR && !strncmp(actorName, "d_act", 5)) { - actor = (fopAc_ac_c*)fopAcM_fastCreate(actorName, 0, NULL, -1, NULL, NULL, NULL, NULL); + actor = + (fopAc_ac_c*)fopAcM_fastCreate(actorName, 0, NULL, -1, NULL, NULL, NULL, NULL); if (actor == NULL) { return true; } @@ -1506,7 +1509,7 @@ int dDemo_c::start(u8 const* p_data, cXyz* p_translation, f32 rotationY) { if (m_data == NULL) { m_control->setSuspend(0); } - + m_control->forward(0); m_translation = p_translation; @@ -1617,6 +1620,14 @@ void dDemo_c::reset() { } /* 80039F1C-80039F9C 03485C 0080+00 1/0 0/0 0/0 .text emitter_create__16dDemo_particle_cFUl */ +// matches with literals +#ifdef NONMATCHING +void dDemo_particle_c::emitter_create(u32 param_0) { + cXyz tmp(0.0f, 0.0f, 0.0f); + int stayNo = dComIfGp_roomControl_getStayNo(); + dComIfGp_particle_set(param_0, &tmp, NULL, NULL, 0xFF, NULL, stayNo, NULL, NULL, NULL); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1625,6 +1636,7 @@ asm void dDemo_particle_c::emitter_create(u32 param_0) { #include "asm/d/d_demo/emitter_create__16dDemo_particle_cFUl.s" } #pragma pop +#endif /* 80039F9C-80039FFC 0348DC 0060+00 1/0 0/0 0/0 .text __dt__16dDemo_particle_cFv */ #pragma push @@ -1650,67 +1662,38 @@ extern "C" asm void __dt__14dDemo_camera_cFv() { /* 8003A05C-8003A088 03499C 002C+00 1/0 0/0 0/0 .text JSGFindNodeID__13dDemo_actor_cCFPCc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_actor_c::JSGFindNodeID(char const* param_0) const { - nofralloc -#include "asm/d/d_demo/JSGFindNodeID__13dDemo_actor_cCFPCc.s" +s32 dDemo_actor_c::JSGFindNodeID(char const* param_0) const { + return mModel->getModelData()->getJointName()->getIndex(param_0); } -#pragma pop /* 8003A088-8003A0C8 0349C8 0040+00 1/0 0/0 0/0 .text * JSGGetNodeTransformation__13dDemo_actor_cCFUlPA4_f */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_actor_c::JSGGetNodeTransformation(u32 param_0, f32 (*param_1)[4]) const { - nofralloc -#include "asm/d/d_demo/JSGGetNodeTransformation__13dDemo_actor_cCFUlPA4_f.s" +int dDemo_actor_c::JSGGetNodeTransformation(u32 param_0, Mtx param_1) const { + PSMTXCopy(mModel->i_getAnmMtx((u16)param_0), param_1); + return 1; } -#pragma pop /* 8003A0C8-8003A0D0 034A08 0008+00 1/0 0/0 0/0 .text JSGGetAnimationFrameMax__13dDemo_actor_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm f32 dDemo_actor_c::JSGGetAnimationFrameMax() const { - nofralloc -#include "asm/d/d_demo/JSGGetAnimationFrameMax__13dDemo_actor_cCFv.s" +f32 dDemo_actor_c::JSGGetAnimationFrameMax() const { + return mAnmFrameMax; } -#pragma pop /* 8003A0D0-8003A0D8 034A10 0008+00 1/0 0/0 0/0 .text * JSGGetTextureAnimationFrameMax__13dDemo_actor_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm f32 dDemo_actor_c::JSGGetTextureAnimationFrameMax() const { - nofralloc -#include "asm/d/d_demo/JSGGetTextureAnimationFrameMax__13dDemo_actor_cCFv.s" +f32 dDemo_actor_c::JSGGetTextureAnimationFrameMax() const { + return mTexAnmFrameMax; } -#pragma pop /* 8003A0D8-8003A0F4 034A18 001C+00 1/0 0/0 0/0 .text JSGGetTranslation__13dDemo_actor_cCFP3Vec */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_actor_c::JSGGetTranslation(Vec* param_0) const { - nofralloc -#include "asm/d/d_demo/JSGGetTranslation__13dDemo_actor_cCFP3Vec.s" +void dDemo_actor_c::JSGGetTranslation(Vec* o_trans) const { + *o_trans = mTrans; } -#pragma pop /* 8003A0F4-8003A110 034A34 001C+00 1/0 0/0 0/0 .text JSGGetScaling__13dDemo_actor_cCFP3Vec */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dDemo_actor_c::JSGGetScaling(Vec* param_0) const { - nofralloc -#include "asm/d/d_demo/JSGGetScaling__13dDemo_actor_cCFP3Vec.s" +void dDemo_actor_c::JSGGetScaling(Vec* o_scale) const { + *o_scale = mScale; } -#pragma pop /* 8003A110-8003A188 034A50 0078+00 1/0 0/0 0/0 .text JSGGetRotation__13dDemo_actor_cCFP3Vec */ #pragma push diff --git a/src/d/d_drawlist.cpp b/src/d/d_drawlist.cpp index b7623f1ee9..772ac395b5 100644 --- a/src/d/d_drawlist.cpp +++ b/src/d/d_drawlist.cpp @@ -201,11 +201,6 @@ extern "C" void entryImm__13J3DDrawBufferFP9J3DPacketUs(); extern "C" void draw__13J3DDrawBufferCFv(); extern "C" void GXClearVtxDesc(); extern "C" void GXPixModeSync(); -extern "C" void GXGetTexObjWidth(); -extern "C" void GXGetTexObjHeight(); -extern "C" void GXGetTexObjWrapS(); -extern "C" void GXGetTexObjWrapT(); -extern "C" void GXGetTexObjTlut(); extern "C" void __destroy_arr(); extern "C" void __construct_array(); extern "C" void _savefpr_26(); @@ -240,7 +235,6 @@ extern "C" extern u32 g_blackColor; extern "C" extern u32 g_whiteColor; extern "C" f32 mSystemFar__14mDoLib_clipper; extern "C" f32 mFovyRate__14mDoLib_clipper; -extern "C" extern f32 G_CM3D_F_ABS_MIN[1 + 1 /* padding */]; extern "C" u8 sOldVcdVatCmd__8J3DShape[4]; // diff --git a/src/d/d_lib.cpp b/src/d/d_lib.cpp index b9cefd23ee..f2122d1bcf 100644 --- a/src/d/d_lib.cpp +++ b/src/d/d_lib.cpp @@ -357,49 +357,41 @@ asm u32 dLib_getExpandSizeFromAramArchive(JKRAramArchive* param_0, char const* p /* ############################################################################################## */ /* 80450DD8-80450DDC 0002D8 0004+00 2/2 0/0 0/0 .sbss m_diffTime__11dLib_time_c */ -u8 dLib_time_c::m_diffTime[4]; - -/* 80450DDC-80450DE0 0002DC 0004+00 2/2 0/0 0/0 .sbss None */ -static u8 data_80450DDC[4]; +OSTime dLib_time_c::m_diffTime; /* 80450DE0-80450DE4 0002E0 0004+00 3/3 0/0 0/0 .sbss m_stopTime__11dLib_time_c */ -u8 dLib_time_c::m_stopTime[4]; - -/* 80450DE4-80450DE8 0002E4 0004+00 3/3 0/0 0/0 .sbss None */ -static u8 data_80450DE4[4]; +OSTime dLib_time_c::m_stopTime; /* 80450DE8-80450DF0 0002E8 0008+00 3/3 0/0 0/0 .sbss None */ -static u8 data_80450DE8[8]; +bool dLib_time_c::m_timeStopped; /* 80032804-80032880 02D144 007C+00 0/0 8/8 0/0 .text getTime__11dLib_time_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dLib_time_c::getTime() { - nofralloc -#include "asm/d/d_lib/getTime__11dLib_time_cFv.s" +OSTime dLib_time_c::getTime() { + if (!m_timeStopped) { + return OSGetTime() - m_diffTime; + } + + OSTime time = OSGetTime(); + m_diffTime += (time - m_stopTime); + m_stopTime = time; + return time - m_diffTime; } -#pragma pop /* 80032880-800328BC 02D1C0 003C+00 0/0 1/1 0/0 .text stopTime__11dLib_time_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dLib_time_c::stopTime() { - nofralloc -#include "asm/d/d_lib/stopTime__11dLib_time_cFv.s" +void dLib_time_c::stopTime() { + if (!m_timeStopped) { + m_stopTime = OSGetTime(); + m_timeStopped = true; + } } -#pragma pop /* 800328BC-80032918 02D1FC 005C+00 0/0 1/1 0/0 .text startTime__11dLib_time_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dLib_time_c::startTime() { - nofralloc -#include "asm/d/d_lib/startTime__11dLib_time_cFv.s" +void dLib_time_c::startTime() { + if (m_timeStopped) { + m_diffTime += OSGetTime() - m_stopTime; + m_timeStopped = false; + } } -#pragma pop /* ############################################################################################## */ /* 80450DF0-80450DF8 -00001 0008+00 0/0 4/4 0/0 .sbss None */ @@ -408,4 +400,4 @@ asm void dLib_time_c::startTime() { /* 80450DF2 0001+00 data_80450DF2 None */ /* 80450DF3 0005+00 data_80450DF3 None */ extern u8 struct_80450DF0[8]; -u8 struct_80450DF0[8]; +u8 struct_80450DF0[8] ALIGN_DECL(8); diff --git a/src/d/d_vibration.cpp b/src/d/d_vibration.cpp index cd28eb9a82..d1eb20366e 100644 --- a/src/d/d_vibration.cpp +++ b/src/d/d_vibration.cpp @@ -50,7 +50,7 @@ extern "C" void setDefault__12dVibration_cFv(); extern "C" void Init__12dVibration_cFv(); extern "C" void Pause__12dVibration_cFv(); extern "C" void Remove__12dVibration_cFv(); -extern "C" extern u8 data_80450F58[8]; +extern "C" extern u8 on_final_boss_stg[8]; // // External References: @@ -243,9 +243,4 @@ asm void dVibration_c::Remove() { nofralloc #include "asm/d/d_vibration/Remove__12dVibration_cFv.s" } -#pragma pop - -/* ############################################################################################## */ -/* 80450F58-80450F60 000458 0008+00 0/0 2/2 0/0 .sbss None */ -extern u8 data_80450F58[8]; -u8 data_80450F58[8]; +#pragma pop \ No newline at end of file diff --git a/src/d/event/d_event_data.cpp b/src/d/event/d_event_data.cpp index a0dac1edbd..91faacfcba 100644 --- a/src/d/event/d_event_data.cpp +++ b/src/d/event/d_event_data.cpp @@ -825,9 +825,9 @@ void dEvDtStaff_c::specialProcSound() { case 'RIDD': int* typeP = dComIfGp_evmng_getMyIntegerP(staffId, "Type"); if (typeP != NULL && *typeP == 1) { - mDoAud_seStart(0xC, NULL, 0, 0); + mDoAud_seStart(Z2SE_READ_RIDDLE_A, NULL, 0, 0); } else { - mDoAud_seStart(0xD, NULL, 0, 0); + mDoAud_seStart(Z2SE_READ_RIDDLE_B, NULL, 0, 0); } break; case 'BGMS': @@ -1087,7 +1087,7 @@ void dEvDtStaff_c::specialProcDirector() { if (soundP != NULL) { switch (*soundP) { case 0: - mDoAud_seStart(0, NULL, 0, 0); + mDoAud_seStart(Z2SE_SY_DUMMY, NULL, 0, 0); } } break; diff --git a/src/d/msg/d_msg_object.cpp b/src/d/msg/d_msg_object.cpp index d44099f41d..246bad975f 100644 --- a/src/d/msg/d_msg_object.cpp +++ b/src/d/msg/d_msg_object.cpp @@ -1836,7 +1836,7 @@ asm void dMsgObject_c::isMsgSend() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dMsgObject_c::isMouthCheck() { +asm bool dMsgObject_c::isMouthCheck() { nofralloc #include "asm/d/msg/d_msg_object/isMouthCheck__12dMsgObject_cFv.s" } diff --git a/src/d/particle/d_particle.cpp b/src/d/particle/d_particle.cpp index f80e660d17..befe696a0e 100644 --- a/src/d/particle/d_particle.cpp +++ b/src/d/particle/d_particle.cpp @@ -626,7 +626,7 @@ void dPa_followEcallBack::end() { /* ############################################################################################## */ /* 80450E90-80450E94 000390 0004+00 2/2 1/1 11/11 .sbss mEcallback__18dPa_modelEcallBack */ -u8 dPa_modelEcallBack::mEcallback[4]; +dPa_modelEcallBack* dPa_modelEcallBack::mEcallback; /* 80450E94-80450E98 000394 0004+00 2/2 0/0 0/0 .sbss mPcallback__18dPa_modelEcallBack */ u8 dPa_modelEcallBack::mPcallback[4]; diff --git a/src/f_op/f_op_actor.cpp b/src/f_op/f_op_actor.cpp index 9b11dbe3a7..8da6d9f2db 100644 --- a/src/f_op/f_op_actor.cpp +++ b/src/f_op/f_op_actor.cpp @@ -15,17 +15,6 @@ #include "d/s/d_s_play.h" #include "d/d_demo.h" -// -// Types: -// - -struct fopEn_enemy_c { - /* 80019404 */ void initBallModel(); - /* 800194FC */ void checkBallModelDraw(); - /* 80019520 */ void setBallModelEffect(dKy_tevstr_c*); - /* 800196A0 */ void drawBallModel(dKy_tevstr_c*); -}; - // // Forward References: // diff --git a/src/f_op/f_op_actor_mng.cpp b/src/f_op/f_op_actor_mng.cpp index 6bac26a1f2..816a2a1f71 100644 --- a/src/f_op/f_op_actor_mng.cpp +++ b/src/f_op/f_op_actor_mng.cpp @@ -1764,7 +1764,7 @@ void fopAcM_myRoomSearchEnemy(s8 roomNo) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void fopAcM_myRoomSearchEnemy(s8 param_0) { +asm fopAc_ac_c* fopAcM_myRoomSearchEnemy(s8 param_0) { nofralloc #include "asm/f_op/f_op_actor_mng/fopAcM_myRoomSearchEnemy__FSc.s" } diff --git a/src/m_Do/m_Do_ext.cpp b/src/m_Do/m_Do_ext.cpp index 6351b2d374..f1aa65aea3 100644 --- a/src/m_Do/m_Do_ext.cpp +++ b/src/m_Do/m_Do_ext.cpp @@ -401,9 +401,6 @@ extern "C" void entryTevRegAnimator__16J3DMaterialTableFP15J3DAnmTevRegKey(); extern "C" void JMAEulerToQuat__FsssP10Quaternion(); extern "C" void JMAQuatLerp__FPC10QuaternionPC10QuaternionfP10Quaternion(); extern "C" void GXClearVtxDesc(); -extern "C" void GXGetTexObjWidth(); -extern "C" void GXGetTexObjHeight(); -extern "C" void GXSetTexCoordScaleManually(); extern "C" void __construct_new_array(); extern "C" void _savegpr_15(); extern "C" void _savegpr_18(); diff --git a/tools/decompctx.py b/tools/decompctx.py new file mode 100644 index 0000000000..abf997e91f --- /dev/null +++ b/tools/decompctx.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python3 + +import argparse +import os +import re + +script_dir = os.path.dirname(os.path.realpath(__file__)) +root_dir = os.path.abspath(os.path.join(script_dir, "..")) +src_dir = os.path.join(root_dir, "src") +include_dir = os.path.join(root_dir, "include") + +include_pattern = re.compile(r'^#include\s*[<"](.+?)[>"]$') +guard_pattern = re.compile(r'^#ifndef\s+(.*)$') + +defines = set() + +def import_h_file(in_file, r_path) -> str: + rel_path = os.path.join(root_dir, r_path, in_file) + inc_path = os.path.join(include_dir, in_file) + if os.path.exists(rel_path): + return import_c_file(rel_path) + elif os.path.exists(inc_path): + return import_c_file(inc_path) + else: + print("Failed to locate", in_file) + exit(1) + +def import_c_file(in_file) -> str: + in_file = os.path.relpath(in_file, root_dir) + out_text = '' + + with open(in_file, encoding="shift-jis") as file: + for idx, line in enumerate(file): + guard_match = guard_pattern.match(line.strip()) + if idx == 0: + if guard_match: + if guard_match[1] in defines: + break + defines.add(guard_match[1]) + print("Processing file", in_file) + include_match = include_pattern.match(line.strip()) + if include_match: + out_text += f"/* \"{in_file}\" line {idx} \"{include_match[1]}\" */\n" + out_text += import_h_file(include_match[1], os.path.dirname(in_file)) + out_text += f"/* end \"{include_match[1]}\" */\n" + else: + out_text += line + + return out_text + +def main(): + parser = argparse.ArgumentParser( + description="""Create a context file which can be used for decomp.me""" + ) + parser.add_argument( + "c_file", + help="""File from which to create context""", + ) + args = parser.parse_args() + + output = import_c_file(args.c_file) + + with open(os.path.join(root_dir, "ctx.c"), "w", encoding="shift-jis") as f: + f.write(output) + + +if __name__ == "__main__": + main() \ No newline at end of file