diff --git a/Progress.md b/Progress.md index 48120b21741..e87372924bb 100644 --- a/Progress.md +++ b/Progress.md @@ -7,22 +7,22 @@ Section | Percentage | Decompiled (bytes) | Total (bytes) .init | 97.972973% | 9280 | 9472 .extab | 100.000000% | 96 | 96 .extabindex | 100.000000% | 96 | 96 -.text | 47.495929% | 1708212 | 3596544 +.text | 47.553652% | 1710288 | 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 | 53.029643% | 2132148 | 4020672 +Total | 53.081276% | 2134224 | 4020672 ## Total Section | Percentage | Decompiled (bytes) | Total (bytes) ---|---|---|--- -main.dol | 53.029643% | 2132148 | 4020672 +main.dol | 53.081276% | 2134224 | 4020672 RELs | 37.015931% | 4256952 | 11500324 -Total | 41.164240% | 6389100 | 15520996 +Total | 41.177615% | 6391176 | 15520996 ## RELs diff --git a/asm/JSystem/JMath/JMath/JMAEulerToQuat__FsssP10Quaternion.s b/asm/JSystem/JMath/JMath/JMAEulerToQuat__FsssP10Quaternion.s deleted file mode 100644 index 9682abe28dc..00000000000 --- a/asm/JSystem/JMath/JMath/JMAEulerToQuat__FsssP10Quaternion.s +++ /dev/null @@ -1,49 +0,0 @@ -lbl_80339878: -/* 80339878 3C E0 80 44 */ lis r7, sincosTable___5JMath@ha /* 0x80439A20@ha */ -/* 8033987C 38 E7 9A 20 */ addi r7, r7, sincosTable___5JMath@l /* 0x80439A20@l */ -/* 80339880 39 07 00 04 */ addi r8, r7, 4 -/* 80339884 7C 60 07 34 */ extsh r0, r3 -/* 80339888 7C 00 0E 70 */ srawi r0, r0, 1 -/* 8033988C 7C 00 01 94 */ addze r0, r0 -/* 80339890 54 00 04 3E */ clrlwi r0, r0, 0x10 -/* 80339894 7C 00 1E 70 */ srawi r0, r0, 3 -/* 80339898 54 03 18 38 */ slwi r3, r0, 3 -/* 8033989C 7C 48 1C 2E */ lfsx f2, r8, r3 -/* 803398A0 7C 80 07 34 */ extsh r0, r4 -/* 803398A4 7C 00 0E 70 */ srawi r0, r0, 1 -/* 803398A8 7C 00 01 94 */ addze r0, r0 -/* 803398AC 54 00 04 3E */ clrlwi r0, r0, 0x10 -/* 803398B0 7C 00 1E 70 */ srawi r0, r0, 3 -/* 803398B4 54 04 18 38 */ slwi r4, r0, 3 -/* 803398B8 7C 68 24 2E */ lfsx f3, r8, r4 -/* 803398BC 7C A0 07 34 */ extsh r0, r5 -/* 803398C0 7C 00 0E 70 */ srawi r0, r0, 1 -/* 803398C4 7C 00 01 94 */ addze r0, r0 -/* 803398C8 54 00 04 38 */ rlwinm r0, r0, 0, 0x10, 0x1c -/* 803398CC 7C 88 04 2E */ lfsx f4, r8, r0 -/* 803398D0 7C A7 1C 2E */ lfsx f5, r7, r3 -/* 803398D4 7C C7 24 2E */ lfsx f6, r7, r4 -/* 803398D8 7C E7 04 2E */ lfsx f7, r7, r0 -/* 803398DC ED 03 01 32 */ fmuls f8, f3, f4 -/* 803398E0 ED 26 01 F2 */ fmuls f9, f6, f7 -/* 803398E4 EC 22 02 32 */ fmuls f1, f2, f8 -/* 803398E8 EC 05 02 72 */ fmuls f0, f5, f9 -/* 803398EC EC 01 00 2A */ fadds f0, f1, f0 -/* 803398F0 D0 06 00 0C */ stfs f0, 0xc(r6) -/* 803398F4 EC 25 02 32 */ fmuls f1, f5, f8 -/* 803398F8 EC 02 02 72 */ fmuls f0, f2, f9 -/* 803398FC EC 01 00 28 */ fsubs f0, f1, f0 -/* 80339900 D0 06 00 00 */ stfs f0, 0(r6) -/* 80339904 EC 02 01 B2 */ fmuls f0, f2, f6 -/* 80339908 EC 24 00 32 */ fmuls f1, f4, f0 -/* 8033990C EC 05 00 F2 */ fmuls f0, f5, f3 -/* 80339910 EC 07 00 32 */ fmuls f0, f7, f0 -/* 80339914 EC 01 00 2A */ fadds f0, f1, f0 -/* 80339918 D0 06 00 04 */ stfs f0, 4(r6) -/* 8033991C EC 02 00 F2 */ fmuls f0, f2, f3 -/* 80339920 EC 27 00 32 */ fmuls f1, f7, f0 -/* 80339924 EC 05 01 B2 */ fmuls f0, f5, f6 -/* 80339928 EC 04 00 32 */ fmuls f0, f4, f0 -/* 8033992C EC 01 00 28 */ fsubs f0, f1, f0 -/* 80339930 D0 06 00 08 */ stfs f0, 8(r6) -/* 80339934 4E 80 00 20 */ blr diff --git a/asm/d/menu/d_menu_ring/checkExplainForce__12dMenu_Ring_cFv.s b/asm/d/menu/d_menu_ring/checkExplainForce__12dMenu_Ring_cFv.s deleted file mode 100644 index 2edf3fbafc5..00000000000 --- a/asm/d/menu/d_menu_ring/checkExplainForce__12dMenu_Ring_cFv.s +++ /dev/null @@ -1,292 +0,0 @@ -lbl_801EE228: -/* 801EE228 94 21 FF E0 */ stwu r1, -0x20(r1) -/* 801EE22C 7C 08 02 A6 */ mflr r0 -/* 801EE230 90 01 00 24 */ stw r0, 0x24(r1) -/* 801EE234 39 61 00 20 */ addi r11, r1, 0x20 -/* 801EE238 48 17 3F A1 */ bl _savegpr_28 -/* 801EE23C 7C 7D 1B 78 */ mr r29, r3 -/* 801EE240 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 801EE244 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 801EE248 38 80 00 00 */ li r4, 0 -/* 801EE24C 4B E4 48 11 */ bl getSelectItemIndex__21dSv_player_status_a_cCFi -/* 801EE250 7C 60 1B 78 */ mr r0, r3 -/* 801EE254 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 801EE258 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 801EE25C 3B 83 00 9C */ addi r28, r3, 0x9c -/* 801EE260 7F 83 E3 78 */ mr r3, r28 -/* 801EE264 54 04 06 3E */ clrlwi r4, r0, 0x18 -/* 801EE268 38 A0 00 00 */ li r5, 0 -/* 801EE26C 4B E4 4D C5 */ bl getItem__17dSv_player_item_cCFib -/* 801EE270 7C 7E 1B 78 */ mr r30, r3 -/* 801EE274 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 801EE278 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 801EE27C 38 80 00 01 */ li r4, 1 -/* 801EE280 4B E4 47 DD */ bl getSelectItemIndex__21dSv_player_status_a_cCFi -/* 801EE284 7C 60 1B 78 */ mr r0, r3 -/* 801EE288 7F 83 E3 78 */ mr r3, r28 -/* 801EE28C 54 04 06 3E */ clrlwi r4, r0, 0x18 -/* 801EE290 38 A0 00 00 */ li r5, 0 -/* 801EE294 4B E4 4D 9D */ bl getItem__17dSv_player_item_cCFib -/* 801EE298 7C 7F 1B 78 */ mr r31, r3 -/* 801EE29C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 801EE2A0 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 801EE2A4 38 80 00 02 */ li r4, 2 -/* 801EE2A8 4B E4 47 B5 */ bl getSelectItemIndex__21dSv_player_status_a_cCFi -/* 801EE2AC 7C 60 1B 78 */ mr r0, r3 -/* 801EE2B0 7F 83 E3 78 */ mr r3, r28 -/* 801EE2B4 54 04 06 3E */ clrlwi r4, r0, 0x18 -/* 801EE2B8 38 A0 00 00 */ li r5, 0 -/* 801EE2BC 4B E4 4D 75 */ bl getItem__17dSv_player_item_cCFib -/* 801EE2C0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 801EE2C4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 801EE2C8 38 80 00 03 */ li r4, 3 -/* 801EE2CC 4B E4 47 91 */ bl getSelectItemIndex__21dSv_player_status_a_cCFi -/* 801EE2D0 7C 60 1B 78 */ mr r0, r3 -/* 801EE2D4 7F 83 E3 78 */ mr r3, r28 -/* 801EE2D8 54 04 06 3E */ clrlwi r4, r0, 0x18 -/* 801EE2DC 38 A0 00 00 */ li r5, 0 -/* 801EE2E0 4B E4 4D 51 */ bl getItem__17dSv_player_item_cCFib -/* 801EE2E4 7F 83 E3 78 */ mr r3, r28 -/* 801EE2E8 88 1D 06 A8 */ lbz r0, 0x6a8(r29) -/* 801EE2EC 7C 9D 02 14 */ add r4, r29, r0 -/* 801EE2F0 88 84 06 90 */ lbz r4, 0x690(r4) -/* 801EE2F4 38 A0 00 01 */ li r5, 1 -/* 801EE2F8 4B E4 4D 39 */ bl getItem__17dSv_player_item_cCFib -/* 801EE2FC 38 A0 00 FF */ li r5, 0xff -/* 801EE300 38 81 00 08 */ addi r4, r1, 8 -/* 801EE304 38 00 00 04 */ li r0, 4 -/* 801EE308 7C 09 03 A6 */ mtctr r0 -lbl_801EE30C: -/* 801EE30C 98 A4 00 00 */ stb r5, 0(r4) -/* 801EE310 38 84 00 01 */ addi r4, r4, 1 -/* 801EE314 42 00 FF F8 */ bdnz lbl_801EE30C -/* 801EE318 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 801EE31C 2C 00 00 4A */ cmpwi r0, 0x4a -/* 801EE320 41 82 01 B4 */ beq lbl_801EE4D4 -/* 801EE324 40 80 00 28 */ bge lbl_801EE34C -/* 801EE328 2C 00 00 3E */ cmpwi r0, 0x3e -/* 801EE32C 41 82 00 E8 */ beq lbl_801EE414 -/* 801EE330 40 80 00 10 */ bge lbl_801EE340 -/* 801EE334 2C 00 00 3D */ cmpwi r0, 0x3d -/* 801EE338 40 80 01 6C */ bge lbl_801EE4A4 -/* 801EE33C 48 00 02 14 */ b lbl_801EE550 -lbl_801EE340: -/* 801EE340 2C 00 00 43 */ cmpwi r0, 0x43 -/* 801EE344 41 82 00 34 */ beq lbl_801EE378 -/* 801EE348 48 00 02 08 */ b lbl_801EE550 -lbl_801EE34C: -/* 801EE34C 2C 00 00 74 */ cmpwi r0, 0x74 -/* 801EE350 41 82 01 24 */ beq lbl_801EE474 -/* 801EE354 40 80 00 18 */ bge lbl_801EE36C -/* 801EE358 2C 00 00 73 */ cmpwi r0, 0x73 -/* 801EE35C 40 80 01 F4 */ bge lbl_801EE550 -/* 801EE360 2C 00 00 70 */ cmpwi r0, 0x70 -/* 801EE364 40 80 00 80 */ bge lbl_801EE3E4 -/* 801EE368 48 00 01 E8 */ b lbl_801EE550 -lbl_801EE36C: -/* 801EE36C 2C 00 00 76 */ cmpwi r0, 0x76 -/* 801EE370 41 82 00 D4 */ beq lbl_801EE444 -/* 801EE374 48 00 01 DC */ b lbl_801EE550 -lbl_801EE378: -/* 801EE378 57 C0 06 3E */ clrlwi r0, r30, 0x18 -/* 801EE37C 2C 00 00 70 */ cmpwi r0, 0x70 -/* 801EE380 40 80 00 10 */ bge lbl_801EE390 -/* 801EE384 2C 00 00 3E */ cmpwi r0, 0x3e -/* 801EE388 41 82 00 1C */ beq lbl_801EE3A4 -/* 801EE38C 48 00 00 20 */ b lbl_801EE3AC -lbl_801EE390: -/* 801EE390 2C 00 00 73 */ cmpwi r0, 0x73 -/* 801EE394 40 80 00 18 */ bge lbl_801EE3AC -/* 801EE398 38 00 00 59 */ li r0, 0x59 -/* 801EE39C 98 01 00 08 */ stb r0, 8(r1) -/* 801EE3A0 48 00 00 0C */ b lbl_801EE3AC -lbl_801EE3A4: -/* 801EE3A4 38 00 00 5A */ li r0, 0x5a -/* 801EE3A8 98 01 00 08 */ stb r0, 8(r1) -lbl_801EE3AC: -/* 801EE3AC 57 E0 06 3E */ clrlwi r0, r31, 0x18 -/* 801EE3B0 2C 00 00 70 */ cmpwi r0, 0x70 -/* 801EE3B4 40 80 00 10 */ bge lbl_801EE3C4 -/* 801EE3B8 2C 00 00 3E */ cmpwi r0, 0x3e -/* 801EE3BC 41 82 00 1C */ beq lbl_801EE3D8 -/* 801EE3C0 48 00 01 90 */ b lbl_801EE550 -lbl_801EE3C4: -/* 801EE3C4 2C 00 00 73 */ cmpwi r0, 0x73 -/* 801EE3C8 40 80 01 88 */ bge lbl_801EE550 -/* 801EE3CC 38 00 00 59 */ li r0, 0x59 -/* 801EE3D0 98 01 00 09 */ stb r0, 9(r1) -/* 801EE3D4 48 00 01 7C */ b lbl_801EE550 -lbl_801EE3D8: -/* 801EE3D8 38 00 00 5A */ li r0, 0x5a -/* 801EE3DC 98 01 00 09 */ stb r0, 9(r1) -/* 801EE3E0 48 00 01 70 */ b lbl_801EE550 -lbl_801EE3E4: -/* 801EE3E4 57 C0 06 3E */ clrlwi r0, r30, 0x18 -/* 801EE3E8 28 00 00 43 */ cmplwi r0, 0x43 -/* 801EE3EC 40 82 00 10 */ bne lbl_801EE3FC -/* 801EE3F0 38 00 00 59 */ li r0, 0x59 -/* 801EE3F4 98 01 00 08 */ stb r0, 8(r1) -/* 801EE3F8 48 00 01 58 */ b lbl_801EE550 -lbl_801EE3FC: -/* 801EE3FC 57 E0 06 3E */ clrlwi r0, r31, 0x18 -/* 801EE400 28 00 00 43 */ cmplwi r0, 0x43 -/* 801EE404 40 82 01 4C */ bne lbl_801EE550 -/* 801EE408 38 00 00 59 */ li r0, 0x59 -/* 801EE40C 98 01 00 09 */ stb r0, 9(r1) -/* 801EE410 48 00 01 40 */ b lbl_801EE550 -lbl_801EE414: -/* 801EE414 57 C0 06 3E */ clrlwi r0, r30, 0x18 -/* 801EE418 28 00 00 43 */ cmplwi r0, 0x43 -/* 801EE41C 40 82 00 10 */ bne lbl_801EE42C -/* 801EE420 38 00 00 5A */ li r0, 0x5a -/* 801EE424 98 01 00 08 */ stb r0, 8(r1) -/* 801EE428 48 00 01 28 */ b lbl_801EE550 -lbl_801EE42C: -/* 801EE42C 57 E0 06 3E */ clrlwi r0, r31, 0x18 -/* 801EE430 28 00 00 43 */ cmplwi r0, 0x43 -/* 801EE434 40 82 01 1C */ bne lbl_801EE550 -/* 801EE438 38 00 00 5A */ li r0, 0x5a -/* 801EE43C 98 01 00 09 */ stb r0, 9(r1) -/* 801EE440 48 00 01 10 */ b lbl_801EE550 -lbl_801EE444: -/* 801EE444 57 C0 06 3E */ clrlwi r0, r30, 0x18 -/* 801EE448 28 00 00 4A */ cmplwi r0, 0x4a -/* 801EE44C 40 82 00 10 */ bne lbl_801EE45C -/* 801EE450 38 00 00 5B */ li r0, 0x5b -/* 801EE454 98 01 00 08 */ stb r0, 8(r1) -/* 801EE458 48 00 00 F8 */ b lbl_801EE550 -lbl_801EE45C: -/* 801EE45C 57 E0 06 3E */ clrlwi r0, r31, 0x18 -/* 801EE460 28 00 00 4A */ cmplwi r0, 0x4a -/* 801EE464 40 82 00 EC */ bne lbl_801EE550 -/* 801EE468 38 00 00 5B */ li r0, 0x5b -/* 801EE46C 98 01 00 09 */ stb r0, 9(r1) -/* 801EE470 48 00 00 E0 */ b lbl_801EE550 -lbl_801EE474: -/* 801EE474 57 C0 06 3E */ clrlwi r0, r30, 0x18 -/* 801EE478 28 00 00 4A */ cmplwi r0, 0x4a -/* 801EE47C 40 82 00 10 */ bne lbl_801EE48C -/* 801EE480 38 00 00 5D */ li r0, 0x5d -/* 801EE484 98 01 00 08 */ stb r0, 8(r1) -/* 801EE488 48 00 00 C8 */ b lbl_801EE550 -lbl_801EE48C: -/* 801EE48C 57 E0 06 3E */ clrlwi r0, r31, 0x18 -/* 801EE490 28 00 00 4A */ cmplwi r0, 0x4a -/* 801EE494 40 82 00 BC */ bne lbl_801EE550 -/* 801EE498 38 00 00 5D */ li r0, 0x5d -/* 801EE49C 98 01 00 09 */ stb r0, 9(r1) -/* 801EE4A0 48 00 00 B0 */ b lbl_801EE550 -lbl_801EE4A4: -/* 801EE4A4 57 C0 06 3E */ clrlwi r0, r30, 0x18 -/* 801EE4A8 28 00 00 4A */ cmplwi r0, 0x4a -/* 801EE4AC 40 82 00 10 */ bne lbl_801EE4BC -/* 801EE4B0 38 00 00 5C */ li r0, 0x5c -/* 801EE4B4 98 01 00 08 */ stb r0, 8(r1) -/* 801EE4B8 48 00 00 98 */ b lbl_801EE550 -lbl_801EE4BC: -/* 801EE4BC 57 E0 06 3E */ clrlwi r0, r31, 0x18 -/* 801EE4C0 28 00 00 4A */ cmplwi r0, 0x4a -/* 801EE4C4 40 82 00 8C */ bne lbl_801EE550 -/* 801EE4C8 38 00 00 5C */ li r0, 0x5c -/* 801EE4CC 98 01 00 09 */ stb r0, 9(r1) -/* 801EE4D0 48 00 00 80 */ b lbl_801EE550 -lbl_801EE4D4: -/* 801EE4D4 57 C3 06 3E */ clrlwi r3, r30, 0x18 -/* 801EE4D8 28 03 00 76 */ cmplwi r3, 0x76 -/* 801EE4DC 40 82 00 10 */ bne lbl_801EE4EC -/* 801EE4E0 38 00 00 5B */ li r0, 0x5b -/* 801EE4E4 98 01 00 08 */ stb r0, 8(r1) -/* 801EE4E8 48 00 00 68 */ b lbl_801EE550 -lbl_801EE4EC: -/* 801EE4EC 57 E0 06 3E */ clrlwi r0, r31, 0x18 -/* 801EE4F0 28 00 00 76 */ cmplwi r0, 0x76 -/* 801EE4F4 40 82 00 10 */ bne lbl_801EE504 -/* 801EE4F8 38 00 00 5B */ li r0, 0x5b -/* 801EE4FC 98 01 00 09 */ stb r0, 9(r1) -/* 801EE500 48 00 00 50 */ b lbl_801EE550 -lbl_801EE504: -/* 801EE504 28 03 00 3D */ cmplwi r3, 0x3d -/* 801EE508 40 82 00 10 */ bne lbl_801EE518 -/* 801EE50C 38 00 00 5C */ li r0, 0x5c -/* 801EE510 98 01 00 08 */ stb r0, 8(r1) -/* 801EE514 48 00 00 3C */ b lbl_801EE550 -lbl_801EE518: -/* 801EE518 28 00 00 3D */ cmplwi r0, 0x3d -/* 801EE51C 40 82 00 10 */ bne lbl_801EE52C -/* 801EE520 38 00 00 5C */ li r0, 0x5c -/* 801EE524 98 01 00 09 */ stb r0, 9(r1) -/* 801EE528 48 00 00 28 */ b lbl_801EE550 -lbl_801EE52C: -/* 801EE52C 28 03 00 74 */ cmplwi r3, 0x74 -/* 801EE530 40 82 00 10 */ bne lbl_801EE540 -/* 801EE534 38 00 00 5D */ li r0, 0x5d -/* 801EE538 98 01 00 08 */ stb r0, 8(r1) -/* 801EE53C 48 00 00 14 */ b lbl_801EE550 -lbl_801EE540: -/* 801EE540 28 00 00 74 */ cmplwi r0, 0x74 -/* 801EE544 40 82 00 0C */ bne lbl_801EE550 -/* 801EE548 38 00 00 5D */ li r0, 0x5d -/* 801EE54C 98 01 00 09 */ stb r0, 9(r1) -lbl_801EE550: -/* 801EE550 88 01 00 08 */ lbz r0, 8(r1) -/* 801EE554 28 00 00 FF */ cmplwi r0, 0xff -/* 801EE558 41 82 00 58 */ beq lbl_801EE5B0 -/* 801EE55C 88 01 00 09 */ lbz r0, 9(r1) -/* 801EE560 28 00 00 FF */ cmplwi r0, 0xff -/* 801EE564 40 82 00 4C */ bne lbl_801EE5B0 -/* 801EE568 88 01 00 0A */ lbz r0, 0xa(r1) -/* 801EE56C 28 00 00 FF */ cmplwi r0, 0xff -/* 801EE570 40 82 00 40 */ bne lbl_801EE5B0 -/* 801EE574 88 01 00 0B */ lbz r0, 0xb(r1) -/* 801EE578 28 00 00 FF */ cmplwi r0, 0xff -/* 801EE57C 40 82 00 34 */ bne lbl_801EE5B0 -/* 801EE580 38 60 00 00 */ li r3, 0 -/* 801EE584 4B E3 F8 45 */ bl dComIfGs_getMixItemIndex__Fi -/* 801EE588 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 801EE58C 28 00 00 FF */ cmplwi r0, 0xff -/* 801EE590 40 82 00 20 */ bne lbl_801EE5B0 -/* 801EE594 88 01 00 08 */ lbz r0, 8(r1) -/* 801EE598 98 1D 06 C7 */ stb r0, 0x6c7(r29) -/* 801EE59C 38 00 00 FF */ li r0, 0xff -/* 801EE5A0 98 1D 06 C8 */ stb r0, 0x6c8(r29) -/* 801EE5A4 98 1D 06 C9 */ stb r0, 0x6c9(r29) -/* 801EE5A8 98 1D 06 CA */ stb r0, 0x6ca(r29) -/* 801EE5AC 48 00 00 74 */ b lbl_801EE620 -lbl_801EE5B0: -/* 801EE5B0 88 01 00 08 */ lbz r0, 8(r1) -/* 801EE5B4 28 00 00 FF */ cmplwi r0, 0xff -/* 801EE5B8 40 82 00 54 */ bne lbl_801EE60C -/* 801EE5BC 8B 81 00 09 */ lbz r28, 9(r1) -/* 801EE5C0 28 1C 00 FF */ cmplwi r28, 0xff -/* 801EE5C4 41 82 00 48 */ beq lbl_801EE60C -/* 801EE5C8 88 01 00 0A */ lbz r0, 0xa(r1) -/* 801EE5CC 28 00 00 FF */ cmplwi r0, 0xff -/* 801EE5D0 40 82 00 3C */ bne lbl_801EE60C -/* 801EE5D4 88 01 00 0B */ lbz r0, 0xb(r1) -/* 801EE5D8 28 00 00 FF */ cmplwi r0, 0xff -/* 801EE5DC 40 82 00 30 */ bne lbl_801EE60C -/* 801EE5E0 38 60 00 01 */ li r3, 1 -/* 801EE5E4 4B E3 F7 E5 */ bl dComIfGs_getMixItemIndex__Fi -/* 801EE5E8 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 801EE5EC 28 00 00 FF */ cmplwi r0, 0xff -/* 801EE5F0 40 82 00 1C */ bne lbl_801EE60C -/* 801EE5F4 38 00 00 FF */ li r0, 0xff -/* 801EE5F8 98 1D 06 C7 */ stb r0, 0x6c7(r29) -/* 801EE5FC 9B 9D 06 C8 */ stb r28, 0x6c8(r29) -/* 801EE600 98 1D 06 C9 */ stb r0, 0x6c9(r29) -/* 801EE604 98 1D 06 CA */ stb r0, 0x6ca(r29) -/* 801EE608 48 00 00 18 */ b lbl_801EE620 -lbl_801EE60C: -/* 801EE60C 38 00 00 FF */ li r0, 0xff -/* 801EE610 98 1D 06 C7 */ stb r0, 0x6c7(r29) -/* 801EE614 98 1D 06 C8 */ stb r0, 0x6c8(r29) -/* 801EE618 98 1D 06 C9 */ stb r0, 0x6c9(r29) -/* 801EE61C 98 1D 06 CA */ stb r0, 0x6ca(r29) -lbl_801EE620: -/* 801EE620 38 60 00 00 */ li r3, 0 -/* 801EE624 39 61 00 20 */ addi r11, r1, 0x20 -/* 801EE628 48 17 3B FD */ bl _restgpr_28 -/* 801EE62C 80 01 00 24 */ lwz r0, 0x24(r1) -/* 801EE630 7C 08 03 A6 */ mtlr r0 -/* 801EE634 38 21 00 20 */ addi r1, r1, 0x20 -/* 801EE638 4E 80 00 20 */ blr diff --git a/asm/d/menu/d_menu_ring/setItem__12dMenu_Ring_cFv.s b/asm/d/menu/d_menu_ring/setItem__12dMenu_Ring_cFv.s deleted file mode 100644 index 12f64bf7230..00000000000 --- a/asm/d/menu/d_menu_ring/setItem__12dMenu_Ring_cFv.s +++ /dev/null @@ -1,234 +0,0 @@ -lbl_801EBB10: -/* 801EBB10 94 21 FF D0 */ stwu r1, -0x30(r1) -/* 801EBB14 7C 08 02 A6 */ mflr r0 -/* 801EBB18 90 01 00 34 */ stw r0, 0x34(r1) -/* 801EBB1C 39 61 00 30 */ addi r11, r1, 0x30 -/* 801EBB20 48 17 66 A9 */ bl _savegpr_24 -/* 801EBB24 7C 7E 1B 78 */ mr r30, r3 -/* 801EBB28 88 03 06 AA */ lbz r0, 0x6aa(r3) -/* 801EBB2C 28 00 00 FF */ cmplwi r0, 0xff -/* 801EBB30 41 82 00 10 */ beq lbl_801EBB40 -/* 801EBB34 7C 7E 02 14 */ add r3, r30, r0 -/* 801EBB38 8B 83 06 90 */ lbz r28, 0x690(r3) -/* 801EBB3C 48 00 00 08 */ b lbl_801EBB44 -lbl_801EBB40: -/* 801EBB40 3B 80 00 FF */ li r28, 0xff -lbl_801EBB44: -/* 801EBB44 88 1E 06 AB */ lbz r0, 0x6ab(r30) -/* 801EBB48 28 00 00 FF */ cmplwi r0, 0xff -/* 801EBB4C 41 82 00 10 */ beq lbl_801EBB5C -/* 801EBB50 7C 7E 02 14 */ add r3, r30, r0 -/* 801EBB54 8B 63 06 90 */ lbz r27, 0x690(r3) -/* 801EBB58 48 00 00 08 */ b lbl_801EBB60 -lbl_801EBB5C: -/* 801EBB5C 3B 60 00 FF */ li r27, 0xff -lbl_801EBB60: -/* 801EBB60 88 1E 06 AC */ lbz r0, 0x6ac(r30) -/* 801EBB64 28 00 00 FF */ cmplwi r0, 0xff -/* 801EBB68 41 82 00 10 */ beq lbl_801EBB78 -/* 801EBB6C 7C 7E 02 14 */ add r3, r30, r0 -/* 801EBB70 8B A3 06 90 */ lbz r29, 0x690(r3) -/* 801EBB74 48 00 00 08 */ b lbl_801EBB7C -lbl_801EBB78: -/* 801EBB78 3B A0 00 FF */ li r29, 0xff -lbl_801EBB7C: -/* 801EBB7C 88 1E 06 AD */ lbz r0, 0x6ad(r30) -/* 801EBB80 28 00 00 FF */ cmplwi r0, 0xff -/* 801EBB84 41 82 00 10 */ beq lbl_801EBB94 -/* 801EBB88 7C 7E 02 14 */ add r3, r30, r0 -/* 801EBB8C 8B E3 06 90 */ lbz r31, 0x690(r3) -/* 801EBB90 48 00 00 08 */ b lbl_801EBB98 -lbl_801EBB94: -/* 801EBB94 3B E0 00 FF */ li r31, 0xff -lbl_801EBB98: -/* 801EBB98 38 60 00 00 */ li r3, 0 -/* 801EBB9C 4B E4 22 2D */ bl dComIfGs_getMixItemIndex__Fi -/* 801EBBA0 7C 7A 1B 78 */ mr r26, r3 -/* 801EBBA4 38 60 00 01 */ li r3, 1 -/* 801EBBA8 4B E4 22 21 */ bl dComIfGs_getMixItemIndex__Fi -/* 801EBBAC 7C 79 1B 78 */ mr r25, r3 -/* 801EBBB0 3B 00 00 00 */ li r24, 0 -lbl_801EBBB4: -/* 801EBBB4 7F C3 F3 78 */ mr r3, r30 -/* 801EBBB8 7F 04 C3 78 */ mr r4, r24 -/* 801EBBBC 48 00 23 71 */ bl setSelectItemForce__12dMenu_Ring_cFi -/* 801EBBC0 3B 18 00 01 */ addi r24, r24, 1 -/* 801EBBC4 2C 18 00 04 */ cmpwi r24, 4 -/* 801EBBC8 41 80 FF EC */ blt lbl_801EBBB4 -/* 801EBBCC 7F C3 F3 78 */ mr r3, r30 -/* 801EBBD0 48 00 26 59 */ bl checkExplainForce__12dMenu_Ring_cFv -/* 801EBBD4 88 1E 06 B3 */ lbz r0, 0x6b3(r30) -/* 801EBBD8 28 00 00 00 */ cmplwi r0, 0 -/* 801EBBDC 40 82 01 18 */ bne lbl_801EBCF4 -/* 801EBBE0 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 801EBBE4 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 801EBBE8 38 80 00 01 */ li r4, 1 -/* 801EBBEC 4B E4 6E 71 */ bl getSelectItemIndex__21dSv_player_status_a_cCFi -/* 801EBBF0 88 1E 06 A8 */ lbz r0, 0x6a8(r30) -/* 801EBBF4 7C 9E 02 14 */ add r4, r30, r0 -/* 801EBBF8 88 84 06 90 */ lbz r4, 0x690(r4) -/* 801EBBFC 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 801EBC00 7C 04 00 40 */ cmplw r4, r0 -/* 801EBC04 40 82 00 64 */ bne lbl_801EBC68 -/* 801EBC08 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 801EBC0C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 801EBC10 38 80 00 00 */ li r4, 0 -/* 801EBC14 4B E4 6E 49 */ bl getSelectItemIndex__21dSv_player_status_a_cCFi -/* 801EBC18 7C 7A 1B 78 */ mr r26, r3 -/* 801EBC1C 7F 5B D3 78 */ mr r27, r26 -/* 801EBC20 38 60 00 00 */ li r3, 0 -/* 801EBC24 4B E4 21 A5 */ bl dComIfGs_getMixItemIndex__Fi -/* 801EBC28 7C 79 1B 78 */ mr r25, r3 -/* 801EBC2C 57 40 06 3E */ clrlwi r0, r26, 0x18 -/* 801EBC30 28 00 00 FF */ cmplwi r0, 0xff -/* 801EBC34 40 82 00 10 */ bne lbl_801EBC44 -/* 801EBC38 38 00 00 FF */ li r0, 0xff -/* 801EBC3C 98 1E 06 AB */ stb r0, 0x6ab(r30) -/* 801EBC40 48 00 00 0C */ b lbl_801EBC4C -lbl_801EBC44: -/* 801EBC44 88 1E 06 AA */ lbz r0, 0x6aa(r30) -/* 801EBC48 98 1E 06 AB */ stb r0, 0x6ab(r30) -lbl_801EBC4C: -/* 801EBC4C 88 1E 06 A8 */ lbz r0, 0x6a8(r30) -/* 801EBC50 98 1E 06 AA */ stb r0, 0x6aa(r30) -/* 801EBC54 88 1E 06 AA */ lbz r0, 0x6aa(r30) -/* 801EBC58 7C 7E 02 14 */ add r3, r30, r0 -/* 801EBC5C 8B 83 06 90 */ lbz r28, 0x690(r3) -/* 801EBC60 3B 40 00 FF */ li r26, 0xff -/* 801EBC64 48 00 01 A8 */ b lbl_801EBE0C -lbl_801EBC68: -/* 801EBC68 38 60 00 01 */ li r3, 1 -/* 801EBC6C 4B E4 21 5D */ bl dComIfGs_getMixItemIndex__Fi -/* 801EBC70 54 64 06 3E */ clrlwi r4, r3, 0x18 -/* 801EBC74 88 BE 06 A8 */ lbz r5, 0x6a8(r30) -/* 801EBC78 7C 7E 2A 14 */ add r3, r30, r5 -/* 801EBC7C 88 03 06 90 */ lbz r0, 0x690(r3) -/* 801EBC80 7C 00 20 40 */ cmplw r0, r4 -/* 801EBC84 40 82 00 58 */ bne lbl_801EBCDC -/* 801EBC88 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 801EBC8C 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 801EBC90 38 80 00 00 */ li r4, 0 -/* 801EBC94 4B E4 6D C9 */ bl getSelectItemIndex__21dSv_player_status_a_cCFi -/* 801EBC98 7C 7B 1B 78 */ mr r27, r3 -/* 801EBC9C 3B 20 00 FF */ li r25, 0xff -/* 801EBCA0 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 801EBCA4 28 00 00 FF */ cmplwi r0, 0xff -/* 801EBCA8 40 82 00 10 */ bne lbl_801EBCB8 -/* 801EBCAC 38 00 00 FF */ li r0, 0xff -/* 801EBCB0 98 1E 06 AB */ stb r0, 0x6ab(r30) -/* 801EBCB4 48 00 00 0C */ b lbl_801EBCC0 -lbl_801EBCB8: -/* 801EBCB8 88 1E 06 AA */ lbz r0, 0x6aa(r30) -/* 801EBCBC 98 1E 06 AB */ stb r0, 0x6ab(r30) -lbl_801EBCC0: -/* 801EBCC0 88 1E 06 A8 */ lbz r0, 0x6a8(r30) -/* 801EBCC4 98 1E 06 AA */ stb r0, 0x6aa(r30) -/* 801EBCC8 88 1E 06 AA */ lbz r0, 0x6aa(r30) -/* 801EBCCC 7C 7E 02 14 */ add r3, r30, r0 -/* 801EBCD0 8B 83 06 90 */ lbz r28, 0x690(r3) -/* 801EBCD4 3B 40 00 FF */ li r26, 0xff -/* 801EBCD8 48 00 01 34 */ b lbl_801EBE0C -lbl_801EBCDC: -/* 801EBCDC 98 BE 06 AA */ stb r5, 0x6aa(r30) -/* 801EBCE0 88 1E 06 AA */ lbz r0, 0x6aa(r30) -/* 801EBCE4 7C 7E 02 14 */ add r3, r30, r0 -/* 801EBCE8 8B 83 06 90 */ lbz r28, 0x690(r3) -/* 801EBCEC 3B 40 00 FF */ li r26, 0xff -/* 801EBCF0 48 00 01 1C */ b lbl_801EBE0C -lbl_801EBCF4: -/* 801EBCF4 28 00 00 01 */ cmplwi r0, 1 -/* 801EBCF8 40 82 01 14 */ bne lbl_801EBE0C -/* 801EBCFC 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 801EBD00 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 801EBD04 38 80 00 00 */ li r4, 0 -/* 801EBD08 4B E4 6D 55 */ bl getSelectItemIndex__21dSv_player_status_a_cCFi -/* 801EBD0C 88 1E 06 A8 */ lbz r0, 0x6a8(r30) -/* 801EBD10 7C 9E 02 14 */ add r4, r30, r0 -/* 801EBD14 88 84 06 90 */ lbz r4, 0x690(r4) -/* 801EBD18 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 801EBD1C 7C 04 00 40 */ cmplw r4, r0 -/* 801EBD20 40 82 00 64 */ bne lbl_801EBD84 -/* 801EBD24 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 801EBD28 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 801EBD2C 38 80 00 01 */ li r4, 1 -/* 801EBD30 4B E4 6D 2D */ bl getSelectItemIndex__21dSv_player_status_a_cCFi -/* 801EBD34 7C 79 1B 78 */ mr r25, r3 -/* 801EBD38 7F 3C CB 78 */ mr r28, r25 -/* 801EBD3C 38 60 00 01 */ li r3, 1 -/* 801EBD40 4B E4 20 89 */ bl dComIfGs_getMixItemIndex__Fi -/* 801EBD44 7C 7A 1B 78 */ mr r26, r3 -/* 801EBD48 57 20 06 3E */ clrlwi r0, r25, 0x18 -/* 801EBD4C 28 00 00 FF */ cmplwi r0, 0xff -/* 801EBD50 40 82 00 10 */ bne lbl_801EBD60 -/* 801EBD54 38 00 00 FF */ li r0, 0xff -/* 801EBD58 98 1E 06 AA */ stb r0, 0x6aa(r30) -/* 801EBD5C 48 00 00 0C */ b lbl_801EBD68 -lbl_801EBD60: -/* 801EBD60 88 1E 06 AB */ lbz r0, 0x6ab(r30) -/* 801EBD64 98 1E 06 AA */ stb r0, 0x6aa(r30) -lbl_801EBD68: -/* 801EBD68 88 1E 06 A8 */ lbz r0, 0x6a8(r30) -/* 801EBD6C 98 1E 06 AB */ stb r0, 0x6ab(r30) -/* 801EBD70 88 1E 06 AB */ lbz r0, 0x6ab(r30) -/* 801EBD74 7C 7E 02 14 */ add r3, r30, r0 -/* 801EBD78 8B 63 06 90 */ lbz r27, 0x690(r3) -/* 801EBD7C 3B 20 00 FF */ li r25, 0xff -/* 801EBD80 48 00 00 8C */ b lbl_801EBE0C -lbl_801EBD84: -/* 801EBD84 38 60 00 00 */ li r3, 0 -/* 801EBD88 4B E4 20 41 */ bl dComIfGs_getMixItemIndex__Fi -/* 801EBD8C 54 64 06 3E */ clrlwi r4, r3, 0x18 -/* 801EBD90 88 BE 06 A8 */ lbz r5, 0x6a8(r30) -/* 801EBD94 7C 7E 2A 14 */ add r3, r30, r5 -/* 801EBD98 88 03 06 90 */ lbz r0, 0x690(r3) -/* 801EBD9C 7C 00 20 40 */ cmplw r0, r4 -/* 801EBDA0 40 82 00 58 */ bne lbl_801EBDF8 -/* 801EBDA4 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 0x804061C0@ha */ -/* 801EBDA8 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l /* 0x804061C0@l */ -/* 801EBDAC 38 80 00 01 */ li r4, 1 -/* 801EBDB0 4B E4 6C AD */ bl getSelectItemIndex__21dSv_player_status_a_cCFi -/* 801EBDB4 7C 7C 1B 78 */ mr r28, r3 -/* 801EBDB8 3B 40 00 FF */ li r26, 0xff -/* 801EBDBC 54 60 06 3E */ clrlwi r0, r3, 0x18 -/* 801EBDC0 28 00 00 FF */ cmplwi r0, 0xff -/* 801EBDC4 40 82 00 10 */ bne lbl_801EBDD4 -/* 801EBDC8 38 00 00 FF */ li r0, 0xff -/* 801EBDCC 98 1E 06 AA */ stb r0, 0x6aa(r30) -/* 801EBDD0 48 00 00 0C */ b lbl_801EBDDC -lbl_801EBDD4: -/* 801EBDD4 88 1E 06 AB */ lbz r0, 0x6ab(r30) -/* 801EBDD8 98 1E 06 AA */ stb r0, 0x6aa(r30) -lbl_801EBDDC: -/* 801EBDDC 88 1E 06 A8 */ lbz r0, 0x6a8(r30) -/* 801EBDE0 98 1E 06 AB */ stb r0, 0x6ab(r30) -/* 801EBDE4 88 1E 06 AB */ lbz r0, 0x6ab(r30) -/* 801EBDE8 7C 7E 02 14 */ add r3, r30, r0 -/* 801EBDEC 8B 63 06 90 */ lbz r27, 0x690(r3) -/* 801EBDF0 3B 20 00 FF */ li r25, 0xff -/* 801EBDF4 48 00 00 18 */ b lbl_801EBE0C -lbl_801EBDF8: -/* 801EBDF8 98 BE 06 AB */ stb r5, 0x6ab(r30) -/* 801EBDFC 88 1E 06 AB */ lbz r0, 0x6ab(r30) -/* 801EBE00 7C 7E 02 14 */ add r3, r30, r0 -/* 801EBE04 8B 63 06 90 */ lbz r27, 0x690(r3) -/* 801EBE08 3B 20 00 FF */ li r25, 0xff -lbl_801EBE0C: -/* 801EBE0C 9B 9E 06 B4 */ stb r28, 0x6b4(r30) -/* 801EBE10 9B 7E 06 B5 */ stb r27, 0x6b5(r30) -/* 801EBE14 9B BE 06 B6 */ stb r29, 0x6b6(r30) -/* 801EBE18 9B FE 06 B7 */ stb r31, 0x6b7(r30) -/* 801EBE1C 9B 5E 06 B8 */ stb r26, 0x6b8(r30) -/* 801EBE20 9B 3E 06 B9 */ stb r25, 0x6b9(r30) -/* 801EBE24 38 00 00 FF */ li r0, 0xff -/* 801EBE28 98 1E 06 BA */ stb r0, 0x6ba(r30) -/* 801EBE2C 98 1E 06 BB */ stb r0, 0x6bb(r30) -/* 801EBE30 98 1E 06 CD */ stb r0, 0x6cd(r30) -/* 801EBE34 7F C3 F3 78 */ mr r3, r30 -/* 801EBE38 38 80 00 01 */ li r4, 1 -/* 801EBE3C 48 00 00 1D */ bl setJumpItem__12dMenu_Ring_cFb -/* 801EBE40 39 61 00 30 */ addi r11, r1, 0x30 -/* 801EBE44 48 17 63 D1 */ bl _restgpr_24 -/* 801EBE48 80 01 00 34 */ lwz r0, 0x34(r1) -/* 801EBE4C 7C 08 03 A6 */ mtlr r0 -/* 801EBE50 38 21 00 30 */ addi r1, r1, 0x30 -/* 801EBE54 4E 80 00 20 */ blr diff --git a/include/JSystem/J2DGraph/J2DPicture.h b/include/JSystem/J2DGraph/J2DPicture.h index 3130805ea94..2b2f6337655 100644 --- a/include/JSystem/J2DGraph/J2DPicture.h +++ b/include/JSystem/J2DGraph/J2DPicture.h @@ -97,11 +97,7 @@ public: /* 802FF634 */ virtual u8 getTextureCount() const; /* 80053C6C */ virtual bool setBlack(JUtility::TColor); /* 80053C44 */ virtual bool setWhite(JUtility::TColor); - /* 8018BEE0 */ virtual bool setBlackWhite(JUtility::TColor i_black, JUtility::TColor i_white) { - mBlack = i_black; - mWhite = i_white; - return 1; - } + /* 8018BEE0 */ virtual bool setBlackWhite(JUtility::TColor i_black, JUtility::TColor i_white); /* 801DFA4C */ virtual JUtility::TColor getBlack() const; /* 801DFA40 */ virtual JUtility::TColor getWhite() const; /* 8025603C */ virtual bool getMaterial() const; diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index 0c22d8449e7..2fcb15132a7 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -386,6 +386,7 @@ public: s16 getItemPachinkoNumCount() { return mItemPachinkoNumCount; } void clearItemPachinkoNumCount() { mItemPachinkoNumCount = 0; } u8 getNeedLightDropNum() { return mNeedLightDropNum; } + u8 getWolfAbility(int i_idx) { return mWolfAbility[i_idx]; } const char* getStartStageName() { return mStartStage.getName(); } s8 getStartStageRoomNo() { return mStartStage.getRoomNo(); } @@ -731,8 +732,7 @@ public: /* 0x04F58 */ u8 mSubHeapLockFlag[2]; /* 0x04F5A */ u8 mNowVibration; /* 0x04F5B */ u8 field_0x4f5b[2]; - /* 0x04F5D */ u8 mWolfAbility; - /* 0x04F5E */ u8 field_0x4f5e[11]; + /* 0x04F5D */ u8 mWolfAbility[12]; /* 0x04F69 */ u8 mNeedLightDropNum; /* 0x04F6A */ u8 field_0x4f6a[18]; /* 0x04F7C */ u8 mMesgBgm; @@ -1081,6 +1081,10 @@ inline u8 dComIfGs_getPachinkoMax() { return 50; } +inline u8 dComIfGs_getWolfAbility(int i_idx) { + return g_dComIfG_gameInfo.play.getWolfAbility(i_idx); +} + inline void dComIfGs_setEmptyBombBag() { g_dComIfG_gameInfo.info.getPlayer().getItem().setEmptyBombBag(); } diff --git a/include/d/menu/d_menu_ring.h b/include/d/menu/d_menu_ring.h index 1950f322932..3cc16d68c93 100644 --- a/include/d/menu/d_menu_ring.h +++ b/include/d/menu/d_menu_ring.h @@ -41,7 +41,7 @@ public: /* 801ED2BC */ void stick_wait_init(); /* 801ED31C */ void stick_wait_proc(); /* 801ED490 */ void stick_move_init(); - /* 801ED53C */ f32 stick_move_proc(); + /* 801ED53C */ void stick_move_proc(); /* 801ED934 */ void stick_explain_init(); /* 801ED938 */ void stick_explain_force_init(); /* 801ED93C */ void stick_explain_proc(); @@ -69,7 +69,11 @@ public: /* 801EF484 */ bool dpdMove(); /* 801EF48C */ u8 openExplain(u8); + #ifdef NONMATCHING + virtual void draw() { _draw(); } + #else /* 801EF560 */ virtual void draw(); + #endif /* 801EA708 */ virtual ~dMenu_Ring_c(); void drawFlag0() { mDrawFlag = 0; } @@ -133,9 +137,9 @@ private: /* 0x620 */ f32 field_0x620; /* 0x624 */ f32 field_0x624; /* 0x628 */ u32 field_0x628; - /* 0x62C */ u32 field_0x62c; - /* 0x630 */ u32 field_0x630; - /* 0x634 */ u32 field_0x634; + /* 0x62C */ u32 mPlayerIsWolf; + /* 0x630 */ u32 mNameStringID; + /* 0x634 */ s32 field_0x634; /* 0x638 */ s16 field_0x638; /* 0x63A */ s16 field_0x63a; /* 0x63C */ s16 field_0x63c; @@ -152,7 +156,7 @@ private: /* 0x686 */ s16 field_0x686[4]; /* 0x68E */ s16 field_0x68e; /* 0x690 */ u8 field_0x690[MAX_ITEM_SLOTS]; - /* 0x6A8 */ u8 mStatus; + /* 0x6A8 */ u8 field_0x6a8; /* 0x6A9 */ u8 field_0x6a9; /* 0x6AA */ u8 field_0x6aa; /* 0x6AB */ u8 field_0x6ab; @@ -160,7 +164,7 @@ private: /* 0x6AD */ u8 field_0x6ad; /* 0x6AE */ u8 field_0x6ae; /* 0x6AF */ u8 field_0x6af; - /* 0x6B0 */ u8 field_0x6b0; + /* 0x6B0 */ u8 mStatus; /* 0x6B1 */ u8 field_0x6b1; /* 0x6B2 */ u8 field_0x6b2; /* 0x6B3 */ u8 field_0x6b3; diff --git a/libs/JSystem/JMath/JMath.cpp b/libs/JSystem/JMath/JMath.cpp index 0ce312a5a32..37c31b017a6 100644 --- a/libs/JSystem/JMath/JMath.cpp +++ b/libs/JSystem/JMath/JMath.cpp @@ -4,31 +4,11 @@ // #include "JSystem/JMath/JMath.h" +#include "JSystem/JMath/JMATrigonometric.h" #include "dol2asm.h" -// -// Forward References: -// - -extern "C" void JMAEulerToQuat__FsssP10Quaternion(); -extern "C" void JMAQuatLerp__FPC10QuaternionPC10QuaternionfP10Quaternion(); -extern "C" void JMAFastVECNormalize__FPC3VecP3Vec(); -extern "C" void JMAVECScaleAdd__FPC3VecPC3VecP3Vecf(); -extern "C" void JMAMTXApplyScale__FPA4_CfPA4_ffff(); - -// -// External References: -// - -extern "C" u8 sincosTable___5JMath[65536]; - -// -// Declarations: -// - /* 80339878-80339938 3341B8 00C0+00 0/0 11/11 2/2 .text JMAEulerToQuat__FsssP10Quaternion */ -#ifdef NONMATCHING void JMAEulerToQuat(s16 x, s16 y, s16 z, Quaternion* quat) { f32 cosX = JMASCos(x / 2); f32 cosY = JMASCos(y / 2); @@ -44,16 +24,6 @@ void JMAEulerToQuat(s16 x, s16 y, s16 z, Quaternion* quat) { quat->y = cosZ * (cosX * sinY) + sinZ * (sinX * cosY); quat->z = sinZ * (cosX * cosY) - cosZ * (sinX * sinY); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void JMAEulerToQuat(s16 param_0, s16 param_1, s16 param_2, Quaternion* param_3) { - nofralloc -#include "asm/JSystem/JMath/JMath/JMAEulerToQuat__FsssP10Quaternion.s" -} -#pragma pop -#endif /* 80339938-80339A30 334278 00F8+00 0/0 5/5 0/0 .text * JMAQuatLerp__FPC10QuaternionPC10QuaternionfP10Quaternion */ diff --git a/src/d/file/d_file_select.cpp b/src/d/file/d_file_select.cpp index 8d644fb0774..fa25cbb2d87 100644 --- a/src/d/file/d_file_select.cpp +++ b/src/d/file/d_file_select.cpp @@ -4990,7 +4990,7 @@ asm void dFile_select_c::screenSet() { #pragma optimization_level 0 #pragma optimizewithasm off // J2DPicture::setBlackWhite(JUtility::TColor param_0, JUtility::TColor param_1) -extern "C" asm bool setBlackWhite__10J2DPictureFQ28JUtility6TColorQ28JUtility6TColor() { +asm bool J2DPicture::setBlackWhite(JUtility::TColor param_0, JUtility::TColor param_1) { nofralloc #include "asm/d/file/d_file_select/setBlackWhite__10J2DPictureFQ28JUtility6TColorQ28JUtility6TColor.s" } diff --git a/src/d/menu/d_menu_ring.cpp b/src/d/menu/d_menu_ring.cpp index 02e47846e7b..36fb0e1c3e0 100644 --- a/src/d/menu/d_menu_ring.cpp +++ b/src/d/menu/d_menu_ring.cpp @@ -3,6 +3,11 @@ * Menu - Item Wheel */ +// the stringbase doesn't generate the required padding +// might be that some weak functions after the ctor break the match too + +// #define NONMATCHING + #include "d/menu/d_menu_ring.h" #include "JSystem/J2DGraph/J2DOrthoGraph.h" #include "JSystem/J2DGraph/J2DScreen.h" @@ -197,6 +202,8 @@ extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; // Declarations: // +#ifdef NONMATCHING +#else /* 80397738-80397760 023D98 0028+00 1/1 0/0 0/0 .rodata xy_text$4015 */ static const u64 xy_text[5] = { 'yx_text', 'yx_te_s1', 'yx_te_s2', 'yx_te_s3', 'yx_te_s4', @@ -274,6 +281,10 @@ static const u64 ft_off[5] = { }; #pragma pop +#endif + +#ifdef NONMATCHING +#else /* 803978C8-803978C8 023F28 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ #pragma push #pragma force_active on @@ -287,6 +298,7 @@ SECTION_DEAD static char const* const stringBase_8039792C = /* @stringBase0 padding */ SECTION_DEAD static char const* const pad_8039795A = "\0\0\0\0\0"; #pragma pop +#endif /* 803BDE70-803BDE7C 01AF90 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */ static u8 cNullVec__6Z2Calc[12] = { @@ -294,6 +306,7 @@ static u8 cNullVec__6Z2Calc[12] = { }; #ifdef NONMATCHING +/* 803BDEAC-803BDEDC 01AFCC 0030+00 3/4 0/0 0/0 .data stick_init */ typedef void (dMenu_Ring_c::*initFunc)(); static initFunc stick_init[] = { &dMenu_Ring_c::stick_wait_init, @@ -302,6 +315,7 @@ static initFunc stick_init[] = { &dMenu_Ring_c::stick_explain_force_init, }; +/* 803BDF0C-803BDF3C 01B02C 0030+00 1/2 0/0 0/0 .data stick_proc */ typedef void (dMenu_Ring_c::*procFunc)(); static procFunc stick_proc[] = { &dMenu_Ring_c::stick_wait_proc, @@ -405,6 +419,8 @@ SECTION_DATA static u8 stick_proc[48] = { }; #endif +#ifdef NONMATCHING +#else /* 803BDF3C-803BDF5C -00001 0020+00 1/1 0/0 0/0 .data @4795 */ SECTION_DATA static void* lit_4795[8] = { (void*)(((char*)calcStickAngle__12dMenu_Ring_cFP9STControlUc) + 0x4C), @@ -416,7 +432,10 @@ SECTION_DATA static void* lit_4795[8] = { (void*)(((char*)calcStickAngle__12dMenu_Ring_cFP9STControlUc) + 0x70), (void*)(((char*)calcStickAngle__12dMenu_Ring_cFP9STControlUc) + 0x80), }; +#endif +#ifdef NONMATCHING +#else /* 803BDF5C-803BDF78 01B07C 0010+0C 2/2 0/0 0/0 .data __vt__12dMenu_Ring_c */ SECTION_DATA extern void* __vt__12dMenu_Ring_c[4 + 3 /* padding */] = { (void*)NULL /* RTTI */, @@ -428,7 +447,10 @@ SECTION_DATA extern void* __vt__12dMenu_Ring_c[4 + 3 /* padding */] = { NULL, NULL, }; +#endif +#ifdef NONMATCHING +#else /* 80454388-8045438C 002988 0004+00 9/9 0/0 0/0 .sdata2 @4300 */ SECTION_SDATA2 static u8 lit_4300[4] = { 0x00, @@ -473,16 +495,48 @@ SECTION_SDATA2 static f32 lit_4310[1 + 1 /* padding */] = { /* 804543B8-804543C0 0029B8 0008+00 5/5 0/0 0/0 .sdata2 @4312 */ SECTION_SDATA2 static f64 lit_4312 = 4503599627370496.0 /* cast u32 to float */; +#endif /* 801E9118-801EA708 1E3A58 15F0+00 0/0 1/1 0/0 .text * __ct__12dMenu_Ring_cFP10JKRExpHeapP9STControlP10CSTControlUc */ // literals #ifdef NONMATCHING -dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i_cstick, +dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i_cStick, u8 param_3) { + static const u64 xy_text[5] = { + 'yx_text', 'yx_te_s1', 'yx_te_s2', 'yx_te_s3', 'yx_te_s4', + }; + static const u64 fxy_text[5] = { + 'fyx_tex', 'fyx_te_1', 'fyx_te_2', 'fyx_te_3', 'fyx_te_4', + }; + static const u64 c_text[5] = { + 'c_text', 'c_te_s1', 'c_te_s2', 'c_te_s3', 'c_te_s4', + }; + static const u64 fc_text[5] = { + 'fc_text', 'fc_te_s1', 'fc_te_s2', 'fc_te_s3', 'fc_te_s4', + }; + static const u64 c_text1[5] = { + 'c_text1', 'c_texs1', 'c_texs2', 'c_texs3', 'c_texs4', + }; + static const u64 fc_text1[5] = { + 'fc_text1', 'fc_texs1', 'fc_texs2', 'fc_texs3', 'fc_texs4', + }; + static const u64 t_on[5] = { + 'gr_t_on', 'g_tof_s5', 'g_tof_s6', 'g_tof_s7', 'g_tof_s8', + }; + static const u64 ft_on[5] = { + 'fr_t_on', 'f_tof_s5', 'f_tof_s6', 'f_tof_s7', 'f_tof_s8', + }; + static const u64 t_off[5] = { + 'gr_t_of', 'g_tof_s1', 'g_tof_s2', 'g_tof_s3', 'g_tof_s4', + }; + static const u64 ft_off[5] = { + 'fr_t_of', 'f_tof_s1', 'f_tof_s2', 'f_tof_s3', 'f_tof_s4', + }; + mpHeap = i_heap; mpStick = i_stick; - mpCStick = i_cstick; + mpCStick = i_cStick; field_0x6bc = param_3; dMeter2Info_setItemExplainWindowStatus(0); mpHeap->getTotalFreeSize(); @@ -518,17 +572,17 @@ dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i field_0x61c = 1.0f; field_0x620 = 1.0f; field_0x624 = 1.0f; - field_0x62c = daPy_py_c::i_checkNowWolf(); - field_0x630 = 0; + mPlayerIsWolf = daPy_py_c::i_checkNowWolf(); + mNameStringID = 0; field_0x63a = 0; field_0x63c = 0; field_0x638 = 0; - field_0x6b0 = 0; + mStatus = 0; field_0x6b1 = 0; field_0x6b2 = 0; field_0x672 = 0; field_0x380.set(0.0f, 0.0f, 0.0f); - setStatus(0); + field_0x6a8 = 0; field_0x6a9 = 0; field_0x6aa = 0xff; field_0x6ab = 0xff; @@ -628,7 +682,7 @@ dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i if (dComIfGs_getSelectItemIndex(1) == dComIfGs_getLineUpItem(i)) { field_0x6ab = i; } - if (dComIfGs_getSelectItemIndex(2) == dComIfGp_getSubHeapLockFlag(i + 5)) { + if (dComIfGs_getSelectItemIndex(2) == dComIfGs_getWolfAbility(i)) { field_0x6ac = i; } } @@ -682,7 +736,7 @@ dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i mpItemBuf[i][j] = (ResTIMG*)mpHeap->alloc(0xC00, 0x20); } u8 item = dComIfGs_getItem(field_0x690[i], false); - if (item != 0xff) { + if (item != NO_ITEM) { if (item == 0x53) { item = 0x43; } @@ -703,7 +757,7 @@ dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i } } mpScreen->search('r_btn_n')->hide(); - if (field_0x62c != 0) { + if (mPlayerIsWolf != 0) { mpScreen->search('yx_te_s1')->hide(); mpScreen->search('yx_te_s2')->hide(); mpScreen->search('yx_te_s3')->hide(); @@ -791,7 +845,7 @@ dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i mpItemExplain = new dMenu_ItemExplain_c(mpHeap, dComIfGp_getRingResArchive(), i_stick, true); setRotate(); mpDrawCursor->setPos(field_0x38c[0] + field_0x568, field_0x3ec[0] + field_0x56c); - if (dComIfGs_getItem(field_0x690[0], false) != 0xff) { + if (dComIfGs_getItem(field_0x690[0], false) != NO_ITEM) { mpDrawCursor->setParam(field_0x44c[0], field_0x4ac[0], 0.1f, 0.6f, 0.5f); } else { mpDrawCursor->setParam(1.0f, 1.0f, 0.1f, 0.6f, 0.5f); @@ -905,6 +959,8 @@ dMenu_Ring_c::~dMenu_Ring_c() { dComIfGp_getRingResArchive()->removeResourceAll(); } +#ifdef NONMATCHING +#else /* ############################################################################################## */ /* 804543C0-804543C8 0029C0 0004+04 8/8 0/0 0/0 .sdata2 @4465 */ SECTION_SDATA2 static f32 lit_4465[1 + 1 /* padding */] = { @@ -912,12 +968,13 @@ SECTION_SDATA2 static f32 lit_4465[1 + 1 /* padding */] = { /* padding */ 0.0f, }; +#endif /* 801EAB7C-801EABE8 1E54BC 006C+00 0/0 1/1 0/0 .text _create__12dMenu_Ring_cFv */ #ifdef NONMATCHING // Matches with sinit and literals void dMenu_Ring_c::_create() { - (this->*stick_init[field_0x6b0])(); + (this->*stick_init[mStatus])(); Z2GetAudioMgr()->seStart(Z2SE_ITEM_RING_IN, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); } #else @@ -942,11 +999,11 @@ void dMenu_Ring_c::_delete() { void dMenu_Ring_c::_move() { field_0x50c = g_ringHIO.mRingRadiusH; field_0x510 = g_ringHIO.mRingRadiusV; - field_0x6b1 = field_0x6b0; + field_0x6b1 = mStatus; mpItemExplain->move(); - (this->*stick_proc[field_0x6b0])(); - if (field_0x6b0 != field_0x6b1) { - (this->*stick_init[field_0x6b0])(); + (this->*stick_proc[mStatus])(); + if (mStatus != field_0x6b1) { + (this->*stick_init[mStatus])(); } setScale(); setActiveCursor(); @@ -995,7 +1052,7 @@ void dMenu_Ring_c::_draw() { field_0x620 = g_ringHIO.mRingScaleV; mpCircle->scale(field_0x61c, field_0x620); } - f32 ringAlpha = field_0x62c != 0 ? g_ringHIO.mRingAlpha_Wolf : g_ringHIO.mRingAlpha; + f32 ringAlpha = mPlayerIsWolf != 0 ? g_ringHIO.mRingAlpha_Wolf : g_ringHIO.mRingAlpha; if (field_0x624 != ringAlpha) { field_0x624 = ringAlpha; mpCircle->setAlphaRate(field_0x624); @@ -1006,19 +1063,18 @@ void dMenu_Ring_c::_draw() { textScaleHIO(); f32 alphaRate = mpTextParent[1]->getAlphaRate(); mpMessageParent->setAlphaRate(field_0x514); - if (field_0x6b0 == 2) { + if (mStatus == 2) { mpTextParent[1]->setAlphaRate(alphaRate * field_0x514); } mpScreen->draw(field_0x568, field_0x56c, grafPort); - if (field_0x6b0 != 2 && field_0x570 > 0.0f) { + if (mStatus != 2 && field_0x570 > 0.0f) { Vec pos; CPaneMgr paneMgr; pos = paneMgr.getGlobalVtxCenter(mpScreen->search('gr_btn'), true, 0); dMeter2Info_getMeterClass()->getMeterDrawPtr()->drawPikari( - pos.x, pos.y, &field_0x570, g_ringHIO.mHighlightScale, - g_ringHIO.mHighlightFrontOuter, g_ringHIO.mHighlightFrontInner, - g_ringHIO.mHighlightBackOuter, g_ringHIO.mHighlightBackInner, - g_ringHIO.mHighlightAnimSpeed, 2); + pos.x, pos.y, &field_0x570, g_ringHIO.mPikariScale, g_ringHIO.mPikariFrontOuter, + g_ringHIO.mPikariFrontInner, g_ringHIO.mPikariBackOuter, g_ringHIO.mPikariBackInner, + g_ringHIO.mPikariAnimSpeed, 2); } mDrawFlag = 1; } else { @@ -1046,9 +1102,12 @@ void dMenu_Ring_c::setKanteraPos(f32 i_posX, f32 i_posY) { mpKanteraMeter->setPos(i_posX, i_posY); } +#ifdef NONMATCHING +#else /* ############################################################################################## */ /* 804543C8-804543D0 0029C8 0008+00 6/6 0/0 0/0 .sdata2 @4596 */ SECTION_SDATA2 static f64 lit_4596 = 4503601774854144.0 /* cast s32 to float */; +#endif /* 801EB0A4-801EB2B4 1E59E4 0210+00 0/0 1/1 0/0 .text isOpen__12dMenu_Ring_cFv */ #ifdef NONMATCHING @@ -1062,15 +1121,15 @@ bool dMenu_Ring_c::isOpen() { field_0x514 = (f32)field_0x638 / (f32)g_ringHIO.mOpenFrames; if (field_0x6bc == 0) { field_0x568 = 0.0f; - field_0x56c = (1.0f - field_0x514) * -448.0f; + field_0x56c = (1.0f - field_0x514) * 448.0f; } else if (field_0x6bc == 2) { field_0x568 = 0.0f; - field_0x56c = (1.0f - field_0x514) * 448.0f; + field_0x56c = (1.0f - field_0x514) * -448.0f; } else if (field_0x6bc == 3) { - field_0x568 = (1.0f - field_0x514) * -608.0f; + field_0x568 = (1.0f - field_0x514) * 608.0f; field_0x56c = 0.0f; } else if (field_0x6bc == 1) { - field_0x568 = (1.0f - field_0x514) * 608.0f; + field_0x568 = (1.0f - field_0x514) * -608.0f; field_0x56c = 0.0f; } if (field_0x638 >= g_ringHIO.mOpenFrames) { @@ -1082,7 +1141,7 @@ bool dMenu_Ring_c::isOpen() { } setScale(); mpDrawCursor->setPos(field_0x38c[0] + field_0x568, field_0x3ec[0] + field_0x56c); - if (dComIfGs_getItem(field_0x690[0], false) != 0xff) { + if (dComIfGs_getItem(field_0x690[0], false) != NO_ITEM) { mpDrawCursor->setParam(field_0x44c[0], field_0x4ac[0], 0.1f, 0.6f, 0.5f); } else { mpDrawCursor->setParam(1.0f, 1.0f, 0.1f, 0.6f, 0.5f); @@ -1105,7 +1164,7 @@ asm bool dMenu_Ring_c::isOpen() { // Matches with literals bool dMenu_Ring_c::isMoveEnd() { bool ret = 0; - if (field_0x6b0 == 0 && field_0x6b1 != 3 && field_0x6b1 != 2) { + if (mStatus == 0 && field_0x6b1 != 3 && field_0x6b1 != 2) { if (dMw_UP_TRIGGER() || dMw_DOWN_TRIGGER() || dMw_B_TRIGGER() || dMeter2Info_getWarpStatus() == 2 || dMeter2Info_getWarpStatus() == 1 || dMeter2Info_isTouchKeyCheck(0x4000) != 0) @@ -1167,9 +1226,11 @@ bool dMenu_Ring_c::isClose() { field_0x568 = (1.0f - field_0x514) * 608.0f; field_0x56c = 0.0f; } - mpDrawCursor->setPos(field_0x38c[mStatus] + field_0x568, field_0x3ec[mStatus] + field_0x56c); - if (dComIfGs_getItem(field_0x690[mStatus], false) != 0xff) { - mpDrawCursor->setParam(field_0x44c[mStatus], field_0x4ac[mStatus], 0.1f, 0.6f, 0.5f); + mpDrawCursor->setPos(field_0x38c[field_0x6a8] + field_0x568, + field_0x3ec[field_0x6a8] + field_0x56c); + if (dComIfGs_getItem(field_0x690[field_0x6a8], false) != NO_ITEM) { + mpDrawCursor->setParam(field_0x44c[field_0x6a8], field_0x4ac[field_0x6a8], 0.1f, 0.6f, + 0.5f); } else { mpDrawCursor->setParam(1.0f, 1.0f, 0.1f, 0.6f, 0.5f); } @@ -1187,19 +1248,108 @@ asm bool dMenu_Ring_c::isClose() { #pragma pop #endif +#ifdef NONMATCHING +#else /* ############################################################################################## */ /* 804543D0-804543D4 0029D0 0004+00 1/1 0/0 0/0 .sdata2 @4739 */ SECTION_SDATA2 static f32 lit_4739 = 0.75f; +#endif /* 801EB624-801EB8C0 1E5F64 029C+00 1/1 0/0 0/0 .text getStickInfo__12dMenu_Ring_cFP9STControl */ +// Matches with literals +#ifdef NONMATCHING +u8 dMenu_Ring_c::getStickInfo(STControl* i_stick) { + field_0x6c2 = 0xff; + if (i_stick->getValueStick() >= 0.75f) { + s16 stick_angle = i_stick->getAngleStick(); + s16 abs_stick_angle = stick_angle + 0x8000; + int something_stick = abs_stick_angle + 0x8000; + + s32 temp; + u32 uVar3 = field_0x6ae / 2; + u8 val2 = uVar3; + int val = field_0x6ae; + + if ((val % 2) != 0) { + temp = field_0x634; + } else { + temp = (s16)(field_0x634 / 2); + } + + for (s32 i = 0; i < val; i++) { + if (something_stick < temp) { + break; + } + temp += field_0x634; + + if (val2 <= 0) { + val2 = val - 1; + } else { + val2--; + } + } + + if (field_0x6a8 != val2) { + if (mDoCPd_c::getHoldL(PAD_1)) { + field_0x380.x = field_0x38c[field_0x6a8]; + field_0x380.z = field_0x3ec[field_0x6a8]; + field_0x6a8 = val2; + field_0x6ce = 1; + } else if (field_0x6a8 >= uVar3) { + if (val2 >= (u8)(field_0x6a8 - uVar3) && val2 < field_0x6a8) { + if (field_0x6a8 == 0) { + field_0x6a8 = field_0x6ae - 1; + } else { + field_0x6a8--; + } + } else if (field_0x6a8 == (u8)(field_0x6ae - 1)) { + field_0x6a8 = 0; + } else { + field_0x6a8++; + } + } else { + u8 max = field_0x6a8 + uVar3; + if (val2 > field_0x6a8 && val2 <= max) { + if (field_0x6a8 == (u8)(field_0x6ae - 1)) { + field_0x6a8 = 0; + } else { + field_0x6a8++; + } + } else if (field_0x6a8 == 0) { + field_0x6a8 = field_0x6ae - 1; + } else { + field_0x6a8--; + } + } + field_0x670 = field_0x63e[field_0x6a8]; + if (field_0x6ae == 2 && stick_angle < 0) { + if (field_0x6a8 == 0) { + field_0x6d3 = 0; + } else { + field_0x6d3 = 1; + } + } + return 1; + } + } else { + field_0x680 = 0; + dpdMove(); + if (field_0x6c2 != 0xff) { + return 0; + } + } + return 0; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm u8 dMenu_Ring_c::getStickInfo(STControl* param_0) { +asm u8 dMenu_Ring_c::getStickInfo(STControl* i_stick) { nofralloc #include "asm/d/menu/d_menu_ring/getStickInfo__12dMenu_Ring_cFP9STControl.s" } #pragma pop +#endif /* 801EB8C0-801EB960 1E6200 00A0+00 1/0 0/0 0/0 .text calcStickAngle__12dMenu_Ring_cFP9STControlUc */ @@ -1247,12 +1397,15 @@ asm s16 dMenu_Ring_c::calcStickAngle(STControl* param_0, u8 param_1) { #pragma pop #endif +#ifdef NONMATCHING +#else /* ############################################################################################## */ /* 804543D4-804543D8 0029D4 0004+00 2/2 0/0 0/0 .sdata2 @4810 */ SECTION_SDATA2 static f32 lit_4810 = 304.0f; /* 804543D8-804543DC 0029D8 0004+00 2/2 0/0 0/0 .sdata2 @4811 */ SECTION_SDATA2 static f32 lit_4811 = 224.0f; +#endif /* 801EB960-801EBA38 1E62A0 00D8+00 1/1 0/0 0/0 .text setRotate__12dMenu_Ring_cFv */ #ifdef NONMATCHING @@ -1287,23 +1440,124 @@ void dMenu_Ring_c::setItemScale(int i_idx, f32 i_scale) { /* 801EBAB8-801EBB10 1E63F8 0058+00 2/2 0/0 0/0 .text setButtonScale__12dMenu_Ring_cFif */ -void dMenu_Ring_c::setButtonScale(int i_idx, f32 i_value) { +void dMenu_Ring_c::setButtonScale(int i_idx, f32 i_scale) { i_idx += 8; if (mpTextParent[i_idx] != NULL) { - f32 buttonScale = i_value * field_0x5e8[i_idx]; + f32 buttonScale = i_scale * field_0x5e8[i_idx]; mpTextParent[i_idx]->scale(buttonScale, buttonScale); } } /* 801EBB10-801EBE58 1E6450 0348+00 1/1 0/0 0/0 .text setItem__12dMenu_Ring_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dMenu_Ring_c::setItem() { - nofralloc -#include "asm/d/menu/d_menu_ring/setItem__12dMenu_Ring_cFv.s" +void dMenu_Ring_c::setItem() { + u8 uVar1; + u8 uVar2; + u8 uVar3; + u8 uVar4; + + if (field_0x6aa != NO_ITEM) { + uVar1 = field_0x690[field_0x6aa]; + } else { + uVar1 = NO_ITEM; + } + if (field_0x6ab != NO_ITEM) { + uVar2 = field_0x690[field_0x6ab]; + } else { + uVar2 = NO_ITEM; + } + if (field_0x6ac != NO_ITEM) { + uVar3 = field_0x690[field_0x6ac]; + } else { + uVar3 = NO_ITEM; + } + if (field_0x6ad != NO_ITEM) { + uVar4 = field_0x690[field_0x6ad]; + } else { + uVar4 = NO_ITEM; + } + + u8 mixItemIndex0 = dComIfGs_getMixItemIndex(0); + u8 mixItemIndex1 = dComIfGs_getMixItemIndex(1); + + for (int i = 0; i < 4; i++) { + setSelectItemForce(i); + } + + checkExplainForce(); + if (field_0x6b3 == 0) { + uVar1 = dComIfGs_getSelectItemIndex(1); + if (field_0x690[field_0x6a8] == uVar1) { + uVar2 = dComIfGs_getSelectItemIndex(0); + mixItemIndex1 = dComIfGs_getMixItemIndex(0); + if (uVar2 == NO_ITEM) { + field_0x6ab = NO_ITEM; + } else { + field_0x6ab = field_0x6aa; + } + field_0x6aa = field_0x6a8; + uVar1 = field_0x690[field_0x6aa]; + mixItemIndex0 = NO_ITEM; + } else { + if (dComIfGs_getMixItemIndex(1) == field_0x690[field_0x6a8]) { + uVar2 = dComIfGs_getSelectItemIndex(0); + mixItemIndex1 = NO_ITEM; + if (uVar2 == NO_ITEM) { + field_0x6ab = NO_ITEM; + } else { + field_0x6ab = field_0x6aa; + } + field_0x6aa = field_0x6a8; + uVar1 = field_0x690[field_0x6aa]; + mixItemIndex0 = NO_ITEM; + } else { + field_0x6aa = field_0x6a8; + uVar1 = field_0x690[field_0x6aa]; + mixItemIndex0 = NO_ITEM; + } + } + } else if (field_0x6b3 == 1) { + if (field_0x690[field_0x6a8] == dComIfGs_getSelectItemIndex(0)) { + u8 temp = dComIfGs_getSelectItemIndex(1); + uVar1 = temp; + mixItemIndex0 = dComIfGs_getMixItemIndex(1); + if (temp == NO_ITEM) { + field_0x6aa = NO_ITEM; + } else { + field_0x6aa = field_0x6ab; + } + field_0x6ab = field_0x6a8; + uVar2 = field_0x690[field_0x6ab]; + mixItemIndex1 = NO_ITEM; + } else { + if (dComIfGs_getMixItemIndex(0) == field_0x690[field_0x6a8]) { + uVar1 = dComIfGs_getSelectItemIndex(1); + mixItemIndex0 = NO_ITEM; + if (uVar1 == NO_ITEM) { + field_0x6aa = NO_ITEM; + } else { + field_0x6aa = field_0x6ab; + } + field_0x6ab = field_0x6a8; + uVar2 = field_0x690[field_0x6ab]; + mixItemIndex1 = NO_ITEM; + } else { + field_0x6ab = field_0x6a8; + uVar2 = field_0x690[field_0x6ab]; + mixItemIndex1 = NO_ITEM; + } + } + } + field_0x6b4[0] = uVar1; + field_0x6b4[1] = uVar2; + field_0x6b4[2] = uVar3; + field_0x6b4[3] = uVar4; + field_0x6b8[0] = mixItemIndex0; + field_0x6b8[1] = mixItemIndex1; + field_0x6b8[2] = NO_ITEM; + field_0x6b8[3] = NO_ITEM; + field_0x6cd = NO_ITEM; + setJumpItem(true); } -#pragma pop /* 801EBE58-801EC20C 1E6798 03B4+00 2/2 0/0 0/0 .text setJumpItem__12dMenu_Ring_cFb */ #ifdef NONMATCHING @@ -1318,19 +1572,19 @@ void dMenu_Ring_c::setJumpItem(bool i_useVibrationM) { setSelectItem(i, getItem(field_0x6b4[i], field_0x6b8[i])); } } - if (field_0x6aa != 0xff) { + if (field_0x6aa != NO_ITEM) { field_0x518[0] = field_0x38c[field_0x6aa]; field_0x528[0] = field_0x3ec[field_0x6aa]; } - if (field_0x6ab != 0xff) { + if (field_0x6ab != NO_ITEM) { field_0x518[1] = field_0x38c[field_0x6ab]; field_0x528[1] = field_0x3ec[field_0x6ab]; } - if (field_0x6ac != 0xff) { + if (field_0x6ac != NO_ITEM) { field_0x518[2] = field_0x38c[field_0x6ac]; field_0x528[2] = field_0x3ec[field_0x6ac]; } - if (field_0x6ad != 0xff) { + if (field_0x6ad != NO_ITEM) { field_0x518[3] = field_0x38c[field_0x6ad]; field_0x528[3] = field_0x3ec[field_0x6ad]; } @@ -1410,7 +1664,7 @@ void dMenu_Ring_c::setScale() { } } } else { - if (i == mStatus && (field_0x6b0 == 0 || field_0x6b0 == 2 || field_0x6b0 == 3)) { + if (i == field_0x6a8 && (mStatus == 0 || mStatus == 2 || mStatus == 3)) { itemId = dComIfGs_getItem(field_0x690[i], false) + 0x165; if (dMeter2Info_getRentalBombBag() != 0xff && field_0x690[i] == dMeter2Info_getRentalBombBag() + 0xf) @@ -1438,7 +1692,7 @@ void dMenu_Ring_c::setNameString(u32 i_stringID) { textBox[1] = (J2DTextBox*)mpCenterScreen->search('fitem_n2'); textBox[2] = (J2DTextBox*)mpCenterScreen->search('fitem_n3'); textBox[3] = (J2DTextBox*)mpCenterScreen->search('fitem_n4'); - if (field_0x630 != i_stringID) { + if (mNameStringID != i_stringID) { for (int i = 0; i < 4; i++) { if (i_stringID == 0) { strcpy(textBox[i]->getStringPtr(), ""); @@ -1446,7 +1700,7 @@ void dMenu_Ring_c::setNameString(u32 i_stringID) { mpString->getString(i_stringID, textBox[i], NULL, NULL, NULL, 0); } } - field_0x630 = i_stringID; + mNameStringID = i_stringID; } } #else @@ -1465,15 +1719,14 @@ asm void dMenu_Ring_c::setNameString(u32 param_0) { #ifdef NONMATCHING // Matches with sinit and literals void dMenu_Ring_c::setActiveCursor() { - u8 item = dComIfGs_getItem(field_0x690[mStatus], false); - if (field_0x6b0 == 0 && field_0x6b1 != 3 && field_0x6b1 != 2 && mpItemExplain->getStatus() == 0) - { - if (mDoCPd_c::getTrigR(PAD_1) && field_0x62c == 0 && item != 0xff) { + u8 item = dComIfGs_getItem(field_0x690[field_0x6a8], false); + if (mStatus == 0 && field_0x6b1 != 3 && field_0x6b1 != 2 && mpItemExplain->getStatus() == 0) { + if (mDoCPd_c::getTrigR(PAD_1) && mPlayerIsWolf == 0 && item != NO_ITEM) { for (int i = 0; i < MAX_SELECT_ITEM; i++) { setSelectItemForce(i); } setMixItem(); - } else if (mDoCPd_c::getTrigX(PAD_1) && field_0x62c == 0 && item != 0xff) { + } else if (mDoCPd_c::getTrigX(PAD_1) && mPlayerIsWolf == 0 && item != NO_ITEM) { for (int i = 0; i < MAX_SELECT_ITEM; i++) { setSelectItemForce(i); } @@ -1481,11 +1734,11 @@ void dMenu_Ring_c::setActiveCursor() { if (!checkCombineBomb(field_0x6b3)) { setItem(); if (mpItemExplain->getStatus() == 0) { - field_0x6b0 = 0; - (this->*stick_init[field_0x6b0])(); + setStatus(0); + (this->*stick_init[mStatus])(); } } - } else if (mDoCPd_c::getTrigY(PAD_1) && field_0x62c == 0 && item != 0xff) { + } else if (mDoCPd_c::getTrigY(PAD_1) && mPlayerIsWolf == 0 && item != NO_ITEM) { for (int i = 0; i < MAX_SELECT_ITEM; i++) { setSelectItemForce(i); } @@ -1493,8 +1746,8 @@ void dMenu_Ring_c::setActiveCursor() { if (!checkCombineBomb(field_0x6b3)) { setItem(); if (mpItemExplain->getStatus() == 0) { - field_0x6b0 = 0; - (this->*stick_init[field_0x6b0])(); + setStatus(0); + (this->*stick_init[mStatus])(); } } } else if (mDoCPd_c::getTrigX(PAD_1) || mDoCPd_c::getTrigY(PAD_1)) { @@ -1513,11 +1766,99 @@ asm void dMenu_Ring_c::setActiveCursor() { #pragma pop #endif +#ifdef NONMATCHING +#else /* ############################################################################################## */ /* 804543DC-804543E0 0029DC 0004+00 1/1 0/0 0/0 .sdata2 @5171 */ SECTION_SDATA2 static u32 lit_5171 = 0xFFFFFFFF; +#endif /* 801EC754-801ECB14 1E7094 03C0+00 1/1 0/0 0/0 .text setMixItem__12dMenu_Ring_cFv */ +// Matches with literals +#ifdef NONMATCHING +void dMenu_Ring_c::setMixItem() { + u8 item = dComIfGs_getItem(field_0x690[field_0x6a8], false); + bool bVar1 = false; + u8 selectItemIndex0 = dComIfGs_getSelectItemIndex(0); + u8 selectItemIndex1 = dComIfGs_getSelectItemIndex(1); + u8 local_28[4] = {NO_ITEM, NO_ITEM, NO_ITEM, NO_ITEM}; + + if (dComIfGs_getMixItemIndex(0) == 4 && + field_0x690[field_0x6a8] == dComIfGs_getSelectItemIndex(0)) + { + Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_COMBINE_OFF, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + field_0x6cb = selectItemIndex0; + selectItemIndex0 = 4; + local_28[0] = getCursorPos(4); + field_0x6b8[0] = 0xff; + field_0x6b3 = 0; + field_0x6cd = 0; + bVar1 = true; + } else if (dComIfGs_getMixItemIndex(1) == 4 && + field_0x690[field_0x6a8] == dComIfGs_getSelectItemIndex(1)) + { + Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_COMBINE_OFF, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); + field_0x6cb = selectItemIndex1; + selectItemIndex1 = 4; + local_28[1] = getCursorPos(4); + field_0x6b8[1] = 0xff; + field_0x6b3 = 1; + field_0x6cd = 1; + bVar1 = true; + } else { + switch (item) { + case NORMAL_BOMB: + case WATER_BOMB: + case POKE_BOMB: + case HAWK_EYE: + if ((dComIfGs_getSelectItemIndex(0) == 4 && dComIfGs_getMixItemIndex(0) == NO_ITEM) || + (dComIfGs_getMixItemIndex(0) == 4)) + { + Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_COMBINE_ON, NULL, 0, 0, 1.0f, 1.0f, -1.0f, + -1.0f, 0); + selectItemIndex0 = field_0x690[field_0x6a8]; + field_0x6b8[0] = 4; + field_0x6b3 = 0; + field_0x6aa = field_0x6a8; + field_0x6cd = 0xff; + bVar1 = true; + if (selectItemIndex1 == field_0x690[field_0x6a8]) { + selectItemIndex1 = 0xff; + field_0x6ab = 0xff; + } + } else if ((dComIfGs_getSelectItemIndex(1) == 4 && + dComIfGs_getMixItemIndex(1) == NO_ITEM) || + (dComIfGs_getMixItemIndex(1) == 4)) + { + Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_COMBINE_ON, NULL, 0, 0, 1.0f, 1.0f, -1.0f, + -1.0f, 0); + selectItemIndex1 = field_0x690[field_0x6a8]; + field_0x6b8[1] = 4; + field_0x6b3 = 1; + field_0x6ab = field_0x6a8; + field_0x6cd = 0xff; + bVar1 = true; + if (selectItemIndex0 == field_0x690[field_0x6a8]) { + selectItemIndex0 = 0xff; + field_0x6aa = 0xff; + } + } + break; + } + } + if (bVar1) { + field_0x6b4[0] = selectItemIndex0; + field_0x6b4[1] = selectItemIndex1; + setJumpItem(false); + if (local_28[0] != NO_ITEM) { + field_0x6aa = local_28[0]; + } + if (local_28[1] != NO_ITEM) { + field_0x6ab = local_28[1]; + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1526,7 +1867,10 @@ asm void dMenu_Ring_c::setMixItem() { #include "asm/d/menu/d_menu_ring/setMixItem__12dMenu_Ring_cFv.s" } #pragma pop +#endif +#ifdef NONMATCHING +#else /* ############################################################################################## */ /* 804543E0-804543E4 0029E0 0004+00 2/2 0/0 0/0 .sdata2 @5366 */ SECTION_SDATA2 static f32 lit_5366 = 24.0f; @@ -1542,8 +1886,67 @@ SECTION_SDATA2 static f32 lit_5369 = 10.0f; /* 804543F0-804543F4 0029F0 0004+00 2/2 0/0 0/0 .sdata2 @5370 */ SECTION_SDATA2 static f32 lit_5370 = 16.0f / 25.0f; +#endif /* 801ECB14-801ECF9C 1E7454 0488+00 1/1 0/0 0/0 .text drawItem__12dMenu_Ring_cFv */ +// Matches with literals +#ifdef NONMATCHING +void dMenu_Ring_c::drawItem() { + field_0x684++; + if (field_0x684 >= g_ringHIO.mItemAlphaFlashDuration) { + field_0x684 = 0; + } + s32 halfFlashDuration = g_ringHIO.mItemAlphaFlashDuration / 2; + f32 fVar16; + if (field_0x684 < halfFlashDuration) { + fVar16 = field_0x684 / (f32)halfFlashDuration; + } else { + fVar16 = (g_ringHIO.mItemAlphaFlashDuration - field_0x684) / (f32)halfFlashDuration; + } + f32 ringAlpha = + (g_ringHIO.mItemAlphaMin + fVar16 * (g_ringHIO.mItemAlphaMax - g_ringHIO.mItemAlphaMin)); + for (int i = 0; i < field_0x6ae; i++) { + if (i != field_0x6a8 || (mStatus != 0 && mStatus != 2 && mStatus != 3)) { + J2DDrawFrame(field_0x38c[i] - 24.0f + field_0x568, field_0x3ec[i] - 24.0f + field_0x56c, + 48.0f, 48.0f, g_ringHIO.mItemFrame[g_ringHIO.UNSELECT_FRAME], 6); + f32 fVar17 = 1.0f; + if (i != field_0x6a8) { + fVar17 = ringAlpha / 255.0f; + } + for (int j = 0; j < 3; j++) { + if (mpItemTex[i][j] != NULL) { + if (mPlayerIsWolf) { + mpItemTex[i][j]->setAlpha(g_ringHIO.mItemIconAlpha_Wolf * field_0x514); + } else { + mpItemTex[i][j]->setAlpha(g_ringHIO.mItemIconAlpha * field_0x514 * fVar17); + } + f32 f0 = field_0x44c[i] * 48.0f; + f32 f1 = field_0x4ac[i] * 48.0f; + f32 x = (48.0f - f0) * 0.5f + (field_0x38c[i] - 24.0f + field_0x568); + f32 y = (48.0f - f1) * 0.5f + (field_0x3ec[i] - 24.0f + field_0x56c); + mpItemTex[i][j]->draw(x, y, f0, f1, 0, 0, 0); + u8 item = dComIfGs_getItem(field_0x690[i], false); + if ((j == 0 && item != BEE_CHILD) || (j == 2 && item == BEE_CHILD)) { + u8 itemNum = getItemNum(field_0x690[i]); + u8 itemMaxNum = getItemMaxNum(field_0x690[i]); + if (itemMaxNum != 0) { + drawNumber(itemNum, itemMaxNum, x + 24.0f, y + 48.0f); + } + } + if (j == 0 && item == KANTERA) { + setKanteraPos(x + 24.0f + 15.0f, y + 48.0f + 10.0f); + mpKanteraMeter->setScale(0.64f, 0.64f); + mpKanteraMeter->setNowGauge(dComIfGs_getMaxOil(), dComIfGs_getOil()); + u8 alpha = mpItemTex[i][j]->getAlpha(); + mpKanteraMeter->setAlphaRate(alpha / 255.0f); + mpKanteraMeter->drawSelf(); + } + } + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1552,8 +1955,51 @@ asm void dMenu_Ring_c::drawItem() { #include "asm/d/menu/d_menu_ring/drawItem__12dMenu_Ring_cFv.s" } #pragma pop +#endif /* 801ECF9C-801ED2BC 1E78DC 0320+00 1/1 0/0 0/0 .text drawItem2__12dMenu_Ring_cFv */ +// Matches with literals +#ifdef NONMATCHING +void dMenu_Ring_c::drawItem2() { + s32 idx = field_0x6a8; + if (mStatus == 0 || mStatus == 2 || mStatus == 3) { + J2DDrawFrame(field_0x38c[idx] - 24.0f + field_0x568, field_0x3ec[idx] - 24.0f + field_0x56c, + 48.0f, 48.0f, g_ringHIO.mItemFrame[g_ringHIO.SELECT_FRAME], 6); + + for (int i = 0; i < 3; i++) { + if (mpItemTex[idx][i] != NULL) { + if (mPlayerIsWolf != 0) { + mpItemTex[idx][i]->setAlpha(g_ringHIO.mItemIconAlpha_Wolf * field_0x514); + } else { + mpItemTex[idx][i]->setAlpha(field_0x514 * 255.0f); + } + + f32 f0 = field_0x44c[idx] * 48.0f; + f32 f1 = field_0x4ac[idx] * 48.0f; + f32 x = (48.0f - f0) * 0.5f + (field_0x38c[idx] - 24.0f + field_0x568); + f32 y = (48.0f - f1) * 0.5f + (field_0x3ec[idx] - 24.0f + field_0x56c); + mpItemTex[idx][i]->draw(x, y, f0, f1, 0, 0, 0); + u8 item = dComIfGs_getItem(field_0x690[idx], false); + if ((i == 0 && item != BEE_CHILD) || (i == 2 && item == BEE_CHILD)) { + u8 itemNum = getItemNum(field_0x690[idx]); + u8 itemMaxNum = getItemMaxNum(field_0x690[idx]); + if (itemMaxNum != 0) { + drawNumber(itemNum, itemMaxNum, x + 24.0f, y + 48.0f); + } + } + if (i == 0 && item == KANTERA) { + setKanteraPos(x + 24.0f + 15.0f, y + 48.0f + 10.0f); + mpKanteraMeter->setScale(0.64f, 0.64f); + mpKanteraMeter->setNowGauge(dComIfGs_getMaxOil(), dComIfGs_getOil()); + u8 alpha = mpItemTex[idx][i]->getAlpha(); + mpKanteraMeter->setAlphaRate(alpha / 255.0f); + mpKanteraMeter->drawSelf(); + } + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1562,6 +2008,7 @@ asm void dMenu_Ring_c::drawItem2() { #include "asm/d/menu/d_menu_ring/drawItem2__12dMenu_Ring_cFv.s" } #pragma pop +#endif /* 801ED2BC-801ED31C 1E7BFC 0060+00 1/0 0/0 0/0 .text stick_wait_init__12dMenu_Ring_cFv */ @@ -1584,28 +2031,28 @@ void dMenu_Ring_c::stick_wait_init() { // Matches with literals #ifdef NONMATCHING void dMenu_Ring_c::stick_wait_proc() { - u8 item = dComIfGs_getItem(field_0x690[mStatus], false); + u8 item = dComIfGs_getItem(field_0x690[field_0x6a8], false); - if (item != 0xff) { + if (item != NO_ITEM) { setDoStatus(0x24); } else { setDoStatus(0); } if (dMw_A_TRIGGER() && !dMeter2Info_isTouchKeyCheck(0x4000) && openExplain(item)) { dMeter2Info_setItemExplainWindowStatus(1); - field_0x6c4 = mStatus; - field_0x6b0 = 2; + field_0x6c4 = field_0x6a8; + setStatus(2); dMeter2Info_set2DVibration(); setDoStatus(0); return; - } + } if (dMw_A_TRIGGER() && !dMeter2Info_isTouchKeyCheck(0x4000)) { Z2GetAudioMgr()->seStart(Z2SE_SYS_ERROR, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); } if (field_0x672 > 0) { - field_0x672--; + field_0x672--; } else if (getStickInfo(mpStick) != 0) { - field_0x6b0 = 1; + setStatus(1); field_0x6b2 = 0; } } @@ -1647,6 +2094,8 @@ asm void dMenu_Ring_c::stick_move_init() { #pragma pop #endif +#ifdef NONMATCHING +#else /* ############################################################################################## */ /* 804543F4-804543F8 0029F4 0004+00 1/1 0/0 0/0 .sdata2 @5648 */ SECTION_SDATA2 static f32 lit_5648 = 70.0f; @@ -1661,17 +2110,77 @@ SECTION_SDATA2 static f64 lit_5650 = 3.0; SECTION_SDATA2 static u8 lit_5651[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; +#endif /* 801ED53C-801ED934 1E7E7C 03F8+00 1/0 0/0 0/0 .text stick_move_proc__12dMenu_Ring_cFv */ +// Matches with literals +#ifdef NONMATCHING +void dMenu_Ring_c::stick_move_proc() { + setDoStatus(0x24); + if (field_0x6ce != 0) { + cXyz target; + target.set(field_0x38c[field_0x6a8], 0.0f, field_0x3ec[field_0x6a8]); + cLib_addCalcPosXZ(&field_0x380, target, 1.0f, 70.0f, 1.0f); + cXyz sub = field_0x380 - target; + if (sub.abs() < 0.5f) { + field_0x380.set(target); + field_0x66e = field_0x670; + mpDrawCursor->setPos(field_0x38c[field_0x6a8], field_0x3ec[field_0x6a8]); + u8 item = dComIfGs_getItem(field_0x690[field_0x6a8], false); + if (item != NO_ITEM) { + mpDrawCursor->setParam(field_0x44c[field_0x6a8], field_0x4ac[field_0x6a8], 0.1f, + 0.6f, 0.5f); + } else { + mpDrawCursor->setParam(1.0f, 1.0f, 0.1f, 0.6f, 0.5f); + } + setStatus(field_0x6b2); + } else { + mpDrawCursor->setParam(1.0f, 1.0f, 0.1f, 0.6f, 0.5f); + mpDrawCursor->setPos(field_0x380.x, field_0x380.z); + } + } else { + if (field_0x6d3 == 0xff) { + cLib_addCalcAngleS(&field_0x66e, field_0x670, 4, 0x7FFF, field_0x680); + } else { + if (field_0x6d3 == 0) { + field_0x66e = -0x2007; + } else { + field_0x66e = -0x6003; + } + field_0x6d3 = 0xff; + } + s16 subtract = field_0x670 - field_0x66e; + if (abs(subtract) < 0x80) { + field_0x66e = field_0x670; + mpDrawCursor->setPos(field_0x38c[field_0x6a8], field_0x3ec[field_0x6a8]); + u8 item = dComIfGs_getItem(field_0x690[field_0x6a8], false); + if (item != NO_ITEM) { + mpDrawCursor->setParam(field_0x44c[field_0x6a8], field_0x4ac[field_0x6a8], 0.1f, + 0.6f, 0.5f); + } else { + mpDrawCursor->setParam(1.0f, 1.0f, 0.1f, 0.6f, 0.5f); + } + setStatus(field_0x6b2); + } else { + f32 itemRingPosX = + g_ringHIO.mItemRingPosX + 304.0f + field_0x50c * cM_ssin(field_0x66e); + f32 itemRingPosY = + g_ringHIO.mItemRingPosY + 224.0f + field_0x510 * cM_scos(field_0x66e); + mpDrawCursor->setPos(itemRingPosX, itemRingPosY); + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm f32 dMenu_Ring_c::stick_move_proc() { +asm void dMenu_Ring_c::stick_move_proc() { nofralloc #include "asm/d/menu/d_menu_ring/stick_move_proc__12dMenu_Ring_cFv.s" } #pragma pop +#endif /* 801ED934-801ED938 1E8274 0004+00 1/0 0/0 0/0 .text stick_explain_init__12dMenu_Ring_cFv */ void dMenu_Ring_c::stick_explain_init() { @@ -1684,9 +2193,12 @@ void dMenu_Ring_c::stick_explain_force_init() { /* empty function */ } +#ifdef NONMATCHING +#else /* ############################################################################################## */ /* 80454410-80454414 002A10 0004+00 2/2 0/0 0/0 .sdata2 @5683 */ SECTION_SDATA2 static f32 lit_5683 = 150.0f; +#endif /* 801ED93C-801EDA0C 1E827C 00D0+00 1/0 0/0 0/0 .text stick_explain_proc__12dMenu_Ring_cFv */ #ifdef NONMATCHING @@ -1700,7 +2212,7 @@ void dMenu_Ring_c::stick_explain_proc() { dMeter2Info_warpInProc(); } dMeter2Info_setItemExplainWindowStatus(0); - field_0x6b0 = 0; + setStatus(0); } f32 alphaRatio = mpItemExplain->getAlphaRatio(); mpTextParent[1]->setAlphaRate(alphaRatio); @@ -1727,10 +2239,10 @@ void dMenu_Ring_c::stick_explain_force_proc() { if (endButton == 1) { setCombineBomb(field_0x6b3); } else if (endButton == 2) { - u8 itemMaxNum = getItemMaxNum(field_0x690[mStatus]); - u8 itemNum = getItemNum(field_0x690[mStatus]); - mpItemExplain->openExplain(field_0x690[mStatus], itemNum, itemMaxNum, true); - field_0x6b0 = 0; + u8 itemMaxNum = getItemMaxNum(field_0x690[field_0x6a8]); + u8 itemNum = getItemNum(field_0x690[field_0x6a8]); + mpItemExplain->openExplain(field_0x690[field_0x6a8], itemNum, itemMaxNum, true); + setStatus(0); } f32 alphaRatio = mpItemExplain->getAlphaRatio(); mpTextParent[1]->setAlphaRate(alphaRatio); @@ -1754,18 +2266,22 @@ asm void dMenu_Ring_c::stick_explain_force_proc() { void dMenu_Ring_c::setSelectItem(int i_idx, u8 i_itemNo) { f32 texScale = 1.0f; - if (i_itemNo != 0xff) { + if (i_itemNo != NO_ITEM) { if (field_0x6be[i_idx] == 0) { field_0x6be[i_idx] = 1; } else { field_0x6be[i_idx] = 0; } - field_0x686[i_idx] = dMeter2Info_readItemTexture(i_itemNo, mpSelectItemTexBuf[i_idx][field_0x6be[i_idx]][0], mpSelectItemTex[i_idx][0], mpSelectItemTexBuf[i_idx][field_0x6be[i_idx]][1], mpSelectItemTex[i_idx][1], - mpSelectItemTexBuf[i_idx][field_0x6be[i_idx]][2], mpSelectItemTex[i_idx][2], NULL, NULL, -1); + field_0x686[i_idx] = dMeter2Info_readItemTexture( + i_itemNo, mpSelectItemTexBuf[i_idx][field_0x6be[i_idx]][0], mpSelectItemTex[i_idx][0], + mpSelectItemTexBuf[i_idx][field_0x6be[i_idx]][1], mpSelectItemTex[i_idx][1], + mpSelectItemTexBuf[i_idx][field_0x6be[i_idx]][2], mpSelectItemTex[i_idx][2], NULL, NULL, + -1); texScale = dItem_data::getTexScale(i_itemNo) / 100.0f; } field_0x548[i_idx] = mpSelectItemTexBuf[i_idx][field_0x6be[i_idx]][0]->width / 48.0f * texScale; - field_0x558[i_idx] = mpSelectItemTexBuf[i_idx][field_0x6be[i_idx]][0]->height / 48.0f * texScale; + field_0x558[i_idx] = + mpSelectItemTexBuf[i_idx][field_0x6be[i_idx]][0]->height / 48.0f * texScale; } #else #pragma push @@ -1778,11 +2294,57 @@ asm void dMenu_Ring_c::setSelectItem(int param_0, u8 param_1) { #pragma pop #endif -/* ############################################################################################## */ +#ifdef NONMATCHING +#else +/* #e############################################################################################# + */ /* 80454414-80454418 002A14 0004+00 1/1 0/0 0/0 .sdata2 @5811 */ SECTION_SDATA2 static f32 lit_5811 = 17.0f / 10.0f; +#endif /* 801EDC98-801EDF2C 1E85D8 0294+00 1/1 0/0 0/0 .text drawSelectItem__12dMenu_Ring_cFv */ +// Matches with literals +#ifdef NONMATCHING +void dMenu_Ring_c::drawSelectItem() { + for (int i = 0; i < 4; i++) { + if (field_0x674[i] != 0) { + if (field_0x674[i] < 10) { + f32 initSizeX = dMeter2Info_getMeterItemPanePtr(i)->getInitSizeX() * 1.7f; + f32 initSizeY = dMeter2Info_getMeterItemPanePtr(i)->getInitSizeY() * 1.7f; + f32 initScaleX = dMeter2Info_getMeterItemPanePtr(i)->getInitScaleX(); + f32 initScaleY = dMeter2Info_getMeterItemPanePtr(i)->getInitScaleY(); + Vec pos = dMeter2Info_getMeterItemPanePtr(i)->getGlobalVtxCenter( + dMeter2Info_getMeterItemPanePtr(i)->mPane, true, 0); + + f32 fVar14 = field_0x674[i] / 10.0f; + if (field_0x6cd != 0xff) { + fVar14 = 1.0f - fVar14; + } + initSizeX = (initSizeX - 48.0f) * fVar14 + 48.0f; + initSizeY = (initSizeY - 48.0f) * fVar14 + 48.0f; + f32 fVar3 = field_0x538[i] + fVar14 * (initScaleX - field_0x538[i]); + f32 fVar4 = field_0x538[i] + fVar14 * (initScaleY - field_0x538[i]); + f32 fVar5 = field_0x518[i] + fVar14 * (pos.x - field_0x518[i]); + f32 fVar6 = field_0x528[i] + fVar14 * (pos.y - field_0x528[i]); + + for (int j = 0; j < field_0x686[i]; j++) { + if (mpSelectItemTex[i][j] != NULL) { + mpSelectItemTex[i][j]->setAlpha(field_0x514 * 255.0f); + f32 f3 = field_0x548[i] * initSizeX * fVar3; + f32 f4 = field_0x558[i] * initSizeY * fVar4; + mpSelectItemTex[i][j]->draw(fVar5 + (initSizeX - f3) * 0.5f, + fVar6 + (initSizeY - f4) * 0.5f, f3, f4, 0, 0, + 0); + } + } + field_0x674[i]++; + } else { + setSelectItemForce(i); + } + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -1791,20 +2353,21 @@ asm void dMenu_Ring_c::drawSelectItem() { #include "asm/d/menu/d_menu_ring/drawSelectItem__12dMenu_Ring_cFv.s" } #pragma pop +#endif /* 801EDF2C-801EDFDC 1E886C 00B0+00 4/4 0/0 0/0 .text setSelectItemForce__12dMenu_Ring_cFi */ -void dMenu_Ring_c::setSelectItemForce(int param_0) { - if (param_0 == 2) { - if (field_0x674[param_0] != 0) { - dComIfGs_setSelectItemIndex(param_0, field_0x6b4[param_0]); - field_0x674[param_0] = 0; +void dMenu_Ring_c::setSelectItemForce(int i_idx) { + if (i_idx == 2) { + if (field_0x674[i_idx] != 0) { + dComIfGs_setSelectItemIndex(i_idx, field_0x6b4[i_idx]); + field_0x674[i_idx] = 0; } - } else if (field_0x674[param_0] != 0) { + } else if (field_0x674[i_idx] != 0) { for (int i = 0; i < 2; i++) { dComIfGs_setMixItemIndex(i, field_0x6b8[i]); dComIfGs_setSelectItemIndex(i, field_0x6b4[i]); } - field_0x674[param_0] = 0; + field_0x674[i_idx] = 0; } } @@ -1824,26 +2387,26 @@ u8 dMenu_Ring_c::getItemNum(u8 i_slotNo) { u8 ret = 0; switch (item) { - case 0x50: - ret = 0; - break; - case 0x70: - case 0x71: - case 0x72: - ret = dComIfGs_getBombNum(i_slotNo - 0xF); - break; - - case 0x76: - ret = dComIfGs_getBottleNum(i_slotNo - 0xB); - break; - case 0x43: - case 0x53: - case 0x54: - case 0x55: - case 0x56: - ret = dComIfGs_getArrowNum(); + case BOMB_BAG_LV1: + ret = 0; break; - case 0x4B: + case NORMAL_BOMB: + case WATER_BOMB: + case POKE_BOMB: + ret = dComIfGs_getBombNum(i_slotNo - 0xF); + break; + + case BEE_CHILD: + ret = dComIfGs_getBottleNum(i_slotNo - 0xB); + break; + case BOW: + case LIGHT_ARROW: + case ARROW_LV1: + case ARROW_LV2: + case ARROW_LV3: + ret = dComIfGs_getArrowNum(); + break; + case PACHINKO: ret = dComIfGs_getPachinkoNum(); break; } @@ -1856,26 +2419,26 @@ u8 dMenu_Ring_c::getItemMaxNum(u8 i_slotNo) { u8 ret = 0; switch (item) { - case 0x50: - ret = 1; - break; - case 0x70: - case 0x71: - case 0x72: - ret = dComIfGs_getBombMax(item); - break; - - case 0x76: - ret = dComIfGs_getBottleMax(); - break; - case 0x43: - case 0x53: - case 0x54: - case 0x55: - case 0x56: - ret = dComIfGs_getArrowMax(); + case BOMB_BAG_LV1: + ret = 1; break; - case 0x4B: + case NORMAL_BOMB: + case WATER_BOMB: + case POKE_BOMB: + ret = dComIfGs_getBombMax(item); + break; + + case BEE_CHILD: + ret = dComIfGs_getBottleMax(); + break; + case BOW: + case LIGHT_ARROW: + case ARROW_LV1: + case ARROW_LV2: + case ARROW_LV3: + ret = dComIfGs_getArrowMax(); + break; + case PACHINKO: ret = dComIfGs_getPachinkoMax(); break; } @@ -1884,14 +2447,118 @@ u8 dMenu_Ring_c::getItemMaxNum(u8 i_slotNo) { /* 801EE228-801EE63C 1E8B68 0414+00 1/1 0/0 0/0 .text checkExplainForce__12dMenu_Ring_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool dMenu_Ring_c::checkExplainForce() { - nofralloc -#include "asm/d/menu/d_menu_ring/checkExplainForce__12dMenu_Ring_cFv.s" +bool dMenu_Ring_c::checkExplainForce() { + u8 local_18[4]; + + u8 item0 = dComIfGs_getItem(dComIfGs_getSelectItemIndex(0), false); + u8 item1 = dComIfGs_getItem(dComIfGs_getSelectItemIndex(1), false); + u8 item2 = dComIfGs_getItem(dComIfGs_getSelectItemIndex(2), false); + u8 item3 = dComIfGs_getItem(dComIfGs_getSelectItemIndex(3), false); + u8 item = dComIfGs_getItem(field_0x690[field_0x6a8], true); + + for (int i = 0; i < 4; i++) { + local_18[i] = NO_ITEM; + } + + switch (item) { + case BOW: + switch (item0) { + case NORMAL_BOMB: + case WATER_BOMB: + case POKE_BOMB: + local_18[0] = BOMB_ARROW; + break; + case HAWK_EYE: + local_18[0] = HAWK_ARROW; + break; + } + switch (item1) { + case NORMAL_BOMB: + case WATER_BOMB: + case POKE_BOMB: + local_18[1] = BOMB_ARROW; + break; + case HAWK_EYE: + local_18[1] = HAWK_ARROW; + break; + } + break; + case NORMAL_BOMB: + case WATER_BOMB: + case POKE_BOMB: + if (item0 == BOW) { + local_18[0] = BOMB_ARROW; + } else if (item1 == BOW) { + local_18[1] = BOMB_ARROW; + } + break; + case HAWK_EYE: + if (item0 == BOW) { + local_18[0] = HAWK_ARROW; + } else if (item1 == BOW) { + local_18[1] = HAWK_ARROW; + } + break; + case BEE_CHILD: + if (item0 == FISHING_ROD_1) { + local_18[0] = BEE_ROD; + } else if (item1 == FISHING_ROD_1) { + local_18[1] = BEE_ROD; + } + break; + case WORM: + if (item0 == FISHING_ROD_1) { + local_18[0] = WORM_ROD; + } else if (item1 == FISHING_ROD_1) { + local_18[1] = WORM_ROD; + } + break; + case ZORAS_JEWEL: + if (item0 == FISHING_ROD_1) { + local_18[0] = JEWEL_ROD; + } else if (item1 == FISHING_ROD_1) { + local_18[1] = JEWEL_ROD; + } + break; + case FISHING_ROD_1: + if (item0 == BEE_CHILD) { + local_18[0] = BEE_ROD; + } else if (item1 == BEE_CHILD) { + local_18[1] = BEE_ROD; + } else if (item0 == ZORAS_JEWEL) { + local_18[0] = JEWEL_ROD; + } else if (item1 == ZORAS_JEWEL) { + local_18[1] = JEWEL_ROD; + } else if (item0 == WORM) { + local_18[0] = WORM_ROD; + } else if (item1 == WORM) { + local_18[1] = WORM_ROD; + } + break; + } + + if (local_18[0] != NO_ITEM && local_18[1] == NO_ITEM && local_18[2] == NO_ITEM && local_18[3] == NO_ITEM && + dComIfGs_getMixItemIndex(0) == NO_ITEM) + { + field_0x6c7[0] = local_18[0]; + field_0x6c7[1] = NO_ITEM; + field_0x6c7[2] = NO_ITEM; + field_0x6c7[3] = NO_ITEM; + } else if (local_18[0] == NO_ITEM && local_18[1] != NO_ITEM && local_18[2] == NO_ITEM && + local_18[3] == NO_ITEM && dComIfGs_getMixItemIndex(1) == NO_ITEM) + { + field_0x6c7[0] = NO_ITEM; + field_0x6c7[1] = local_18[1]; + field_0x6c7[2] = NO_ITEM; + field_0x6c7[3] = NO_ITEM; + } else { + field_0x6c7[0] = NO_ITEM; + field_0x6c7[1] = NO_ITEM; + field_0x6c7[2] = NO_ITEM; + field_0x6c7[3] = NO_ITEM; + } + return 0; } -#pragma pop /* 801EE63C-801EE644 1E8F7C 0008+00 1/1 0/0 0/0 .text checkCombineBomb__12dMenu_Ring_cFi */ @@ -1904,9 +2571,12 @@ void dMenu_Ring_c::setCombineBomb(int param_0) { /* empty function */ } +#ifdef NONMATCHING +#else /* ############################################################################################## */ /* 80454418-8045441C 002A18 0004+00 1/1 0/0 0/0 .sdata2 @6143 */ SECTION_SDATA2 static f32 lit_6143 = 16.0f; +#endif /* 801EE648-801EEA84 1E8F88 043C+00 2/2 0/0 0/0 .text drawNumber__12dMenu_Ring_cFiiff */ #ifdef NONMATCHING @@ -1952,7 +2622,8 @@ void dMenu_Ring_c::drawNumber(int param_0, int param_1, f32 param_2, f32 param_3 mpItemNumTex[2]->changeTexture(texture, 0); mpItemNumTex[2]->show(); } - u8 itemIconAlpha = field_0x62c != 0 ? g_ringHIO.mItemIconAlpha_Wolf : g_ringHIO.mItemIconAlpha; + u8 itemIconAlpha = + mPlayerIsWolf != 0 ? g_ringHIO.mItemIconAlpha_Wolf : g_ringHIO.mItemIconAlpha; for (int i = 0; i < 3; i++) { mpItemNumTex[i]->setAlpha(itemIconAlpha * field_0x514); mpItemNumTex[i]->draw(param_2 + i * 16.0f, param_3 - 16.0f, 16.0f, 16.0f, 0, 0, 0); @@ -1996,19 +2667,19 @@ void dMenu_Ring_c::setDoStatus(u8 param_0) { /* 801EEB58-801EEC98 1E9498 0140+00 1/1 0/0 0/0 .text isMixItemOn__12dMenu_Ring_cFv */ bool dMenu_Ring_c::isMixItemOn() { - if ((!field_0x62c) && (dComIfGs_getItem(field_0x690[mStatus], 0) != 0xff)) { - s32 item = dComIfGs_getItem(field_0x690[mStatus], 0); + if (mPlayerIsWolf == 0 && dComIfGs_getItem(field_0x690[field_0x6a8], 0) != NO_ITEM) { + u8 item = dComIfGs_getItem(field_0x690[field_0x6a8], 0); switch (item) { - case 0x3E: - case 0x70: - case 0x71: - case 0x72: - if ((dComIfGs_getSelectItemIndex(0) == 4) && (dComIfGs_getMixItemIndex(0) == 0xff) || + case HAWK_EYE: + case NORMAL_BOMB: + case WATER_BOMB: + case POKE_BOMB: + if ((dComIfGs_getSelectItemIndex(0) == 4) && (dComIfGs_getMixItemIndex(0) == NO_ITEM) || (dComIfGs_getMixItemIndex(0) == 4)) { return 1; } - if ((dComIfGs_getSelectItemIndex(1) == 4) && (dComIfGs_getMixItemIndex(1) == 0xff) || + if ((dComIfGs_getSelectItemIndex(1) == 4) && (dComIfGs_getMixItemIndex(1) == NO_ITEM) || (dComIfGs_getMixItemIndex(1) == 4)) { return 1; @@ -2021,14 +2692,14 @@ bool dMenu_Ring_c::isMixItemOn() { /* 801EEC98-801EED84 1E95D8 00EC+00 1/1 0/0 0/0 .text isMixItemOff__12dMenu_Ring_cFv */ bool dMenu_Ring_c::isMixItemOff() { - if ((!field_0x62c) && (dComIfGs_getItem(field_0x690[mStatus], 0) != 0xff)) { + if ((!mPlayerIsWolf) && (dComIfGs_getItem(field_0x690[field_0x6a8], 0) != NO_ITEM)) { if ((dComIfGs_getMixItemIndex(0) == 4) && - (field_0x690[mStatus] == dComIfGs_getSelectItemIndex(0))) + (field_0x690[field_0x6a8] == dComIfGs_getSelectItemIndex(0))) { return 1; } if ((dComIfGs_getMixItemIndex(1) == 4) && - (field_0x690[mStatus] == dComIfGs_getSelectItemIndex(1))) + (field_0x690[field_0x6a8] == dComIfGs_getSelectItemIndex(1))) { return 1; } @@ -2036,9 +2707,12 @@ bool dMenu_Ring_c::isMixItemOff() { return 0; } +#ifdef NONMATCHING +#else /* ############################################################################################## */ /* 8045441C-80454420 002A1C 0004+00 1/1 0/0 0/0 .sdata2 @6308 */ SECTION_SDATA2 static f32 lit_6308 = 18.0f; +#endif /* 801EED84-801EEF14 1E96C4 0190+00 1/1 0/0 0/0 .text setMixMessage__12dMenu_Ring_cFv */ #ifdef NONMATCHING @@ -2051,7 +2725,7 @@ void dMenu_Ring_c::setMixMessage() { field_0x1dc[i]->show(); } if (!mpTextParent[4]->isVisible()) { - field_0x570 = 18.0f - g_ringHIO.mHighlightAnimSpeed; + field_0x570 = 18.0f - g_ringHIO.mPikariAnimSpeed; Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_COMBINE_ICON, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); } @@ -2062,7 +2736,7 @@ void dMenu_Ring_c::setMixMessage() { field_0x1dc[i]->hide(); } if (!mpTextParent[4]->isVisible()) { - field_0x570 = 18.0f - g_ringHIO.mHighlightAnimSpeed; + field_0x570 = 18.0f - g_ringHIO.mPikariAnimSpeed; Z2GetAudioMgr()->seStart(Z2SE_SY_ITEM_COMBINE_ICON, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0); } @@ -2167,12 +2841,83 @@ asm f32 dMenu_Ring_c::calcDistance(f32 param_0, f32 param_1, f32 param_2, f32 pa #pragma pop #endif +#ifdef NONMATCHING +#else /* ############################################################################################## */ /* 80454420-80454424 002A20 0004+00 1/1 0/0 0/0 .sdata2 @6454 */ SECTION_SDATA2 static f32 lit_6454 = 1000.0f; +#endif /* 801EF1A0-801EF484 1E9AE0 02E4+00 1/1 0/0 0/0 .text clacEllipsePlotAverage__12dMenu_Ring_cFiff */ +// Matches with literals +#ifdef NONMATCHING +void dMenu_Ring_c::clacEllipsePlotAverage(int param_0, f32 param_1, f32 param_2) { + f32 f50c = field_0x50c; + f32 f510 = field_0x510; + f32 fVar8 = 0.0f; + f32 temp2; + f32 fVar3; + + f32* ptr = (f32*)operator new[](16000); + f32* ptr_00 = (f32*)operator new[](16000); + f32* ptr_01 = (f32*)operator new[](16000); + + f32 fVar9 = 0.0f; + for (int i = 0; i <= 0x3E8; i++) { + ptr[i] = fVar8; + ptr_00[i] = clacEllipseFunction(fVar8, f50c, f510); + fVar8 += f50c / 1000.0f; + ptr[i + 2000] = -ptr[i]; + ptr_00[i + 2000] = -ptr_00[i]; + if (i > 0) { + ptr_01[i - 1] = calcDistance(ptr[i - 1], ptr_00[i - 1], ptr[i], ptr_00[i]); + ptr_01[2000 - i] = ptr_01[i - 1]; + ptr_01[i + 1999] = ptr_01[i - 1]; + ptr_01[4000 - i] = ptr_01[i - 1]; + fVar9 = fVar9 + ptr_01[2000 - i] + ptr_01[i + 1999] + ptr_01[4000 - i] + ptr_01[i - 1]; + + if (i < 1000) { + ptr[2000 - i] = ptr[i]; + ptr_00[2000 - i] = -ptr_00[i]; + ptr[4000 - i] = -ptr[i]; + ptr_00[4000 - i] = ptr_00[i]; + } + } + } + + fVar8 = fVar9 / param_0; + fVar3 = 0.0f; + temp2 = 0.0f; + s32 j = 0; + field_0x38c[0] = ptr[0] + param_1; + field_0x3ec[0] = ptr_00[0] + param_2; + + for (int i = 0; i < 4000; i++) { + f510 = ptr_01[i]; + fVar3 += f510; + if (fVar8 >= temp2 && fVar8 < fVar3) { + j++; + if (fVar8 - temp2 <= fVar3 - fVar8) { + fVar3 = ptr_01[i]; + field_0x38c[j] = param_1 + ptr[i - 1]; + field_0x3ec[j] = param_2 + ptr_00[i - 1]; + } else { + fVar3 = 0.0f; + field_0x38c[j] = param_1 + ptr[i]; + field_0x3ec[j] = param_2 + ptr_00[i]; + } + } + f50c = fVar8; + temp2 = fVar3; + if (j >= param_0 - 1) + break; + } + operator delete[](ptr); + operator delete[](ptr_00); + operator delete[](ptr_01); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -2181,32 +2926,31 @@ asm void dMenu_Ring_c::clacEllipsePlotAverage(int param_0, f32 param_1, f32 para #include "asm/d/menu/d_menu_ring/clacEllipsePlotAverage__12dMenu_Ring_cFiff.s" } #pragma pop +#endif /* 801EF484-801EF48C 1E9DC4 0008+00 1/1 0/0 0/0 .text dpdMove__12dMenu_Ring_cFv */ bool dMenu_Ring_c::dpdMove() { return false; } -/* 80454424-8045442C 002A24 0008+00 1/1 0/0 0/0 .sdata2 i_nameID$6472 */ -SECTION_SDATA2 static u32 i_nameID[2] = {0x4DE, 0x4E0}; - -/* 8045442C-80454434 002A2C 0008+00 1/1 0/0 0/0 .sdata2 i_expID$6473 */ -SECTION_SDATA2 static u32 i_expID[2] = {0x4DF, 0x4E1}; - /* 801EF48C-801EF560 1E9DCC 00D4+00 1/1 0/0 0/0 .text openExplain__12dMenu_Ring_cFUc */ u8 dMenu_Ring_c::openExplain(u8 param_0) { if (field_0x6cf == 0xff && field_0x6d0 == 0xff) { if (param_0 != 0xff) { - return mpItemExplain->openExplain(field_0x690[mStatus], - getItemNum(field_0x690[mStatus]), - getItemMaxNum(field_0x690[mStatus]), false); + return mpItemExplain->openExplain(field_0x690[field_0x6a8], + getItemNum(field_0x690[field_0x6a8]), + getItemMaxNum(field_0x690[field_0x6a8]), false); } return 0; } u8 idx = field_0x6d0 != 0xff ? field_0x6d0 : field_0x6cf; + static const u32 i_nameID[2] = {0x4DE, 0x4E0}; + static const u32 i_expID[2] = {0x4DF, 0x4E1}; return mpItemExplain->openExplainTx(i_nameID[idx], i_expID[idx]); } +#ifdef NONMATCHING +#else /* 801EF560-801EF580 1E9EA0 0020+00 1/0 0/0 0/0 .text draw__12dMenu_Ring_cFv */ #pragma push #pragma optimization_level 0 @@ -2217,6 +2961,7 @@ extern "C" asm void draw__12dMenu_Ring_cFv() { #include "asm/d/menu/d_menu_ring/draw__12dMenu_Ring_cFv.s" } #pragma pop +#endif /* 801EF580-801EF654 1E9EC0 00D4+00 0/0 1/0 0/0 .text __sinit_d_menu_ring_cpp */ #ifdef NONMATCHING diff --git a/src/m_Do/m_Do_graphic.cpp b/src/m_Do/m_Do_graphic.cpp index 6a410241109..c80da4bd718 100644 --- a/src/m_Do/m_Do_graphic.cpp +++ b/src/m_Do/m_Do_graphic.cpp @@ -19,6 +19,11 @@ #include "m_Do/m_Do_machine.h" #include "m_Do/m_Do_main.h" #include "m_Do/m_Do_mtx.h" +#include "SSystem/SComponent/c_math.h" +#include "JSystem/J2DGraph/J2DOrthoGraph.h" +#include "JSystem/JParticle/JPADrawInfo.h" +#include "JSystem/JUtility/JUTConsole.h" +#include "JSystem/JFramework/JFWSystem.h" // // Types: @@ -591,19 +596,19 @@ SECTION_SDATA2 static f32 lit_4442 = -0.0025f; /* 80008630-80009184 002F70 0B54+00 1/1 0/0 0/0 .text * drawDepth2__FP10view_classP15view_port_classi */ -// regalloc +// Matches with literals #ifdef NONMATCHING static void drawDepth2(view_class* param_0, view_port_class* param_1, int param_2) { s16 x_orig; - s16 y_orig; s16 y_orig_pos; - s16 width; - s16 height; + s16 y_orig; void* zBufferTex; + s16 width; void* frameBufferTex; - u16 halfWidth; u16 halfHeight; + s16 height; + f32* temp_r20; @@ -664,9 +669,8 @@ static void drawDepth2(view_class* param_0, view_port_class* param_1, int param_ } } - temp_r20 = &g_env_light.field_0x1264; - cLib_addCalc(temp_r20, var_f30, 0.1f, 100.0f, 0.0001f); - l_tevColor0.a = *temp_r20; + cLib_addCalc(&g_env_light.field_0x1264, var_f30, 0.1f, 100.0f, 0.0001f); + l_tevColor0.a = g_env_light.field_0x1264; if (l_tevColor0.a <= -254) { l_tevColor0.a = -255; } @@ -789,9 +793,9 @@ static void drawDepth2(view_class* param_0, view_port_class* param_1, int param_ if (l_tevColor0.a > -255) { GXBegin(GX_QUADS, GX_VTXFMT0, 4); - GXPosition3s16(x_orig, y_orig, -5); + GXPosition3s16(x_orig, y_orig_pos, -5); GXTexCoord2s8(0, 0); - GXPosition3s16(width, y_orig, -5); + GXPosition3s16(width, y_orig_pos, -5); GXTexCoord2s8(1, 0); GXPosition3s16(width, height, -5); GXTexCoord2s8(1, 1); @@ -874,12 +878,12 @@ static void trimming(view_class* param_0, view_port_class* param_1) { GXBegin(GX_QUADS, GX_VTXFMT0, 8); GXPosition3s16(0, 0, -5); GXPosition3s16(0x260, 0, -5); - GXPosition3s16(0x280, sc_top, -5); + GXPosition3s16(0x260, sc_top, -5); GXPosition3s16(0, sc_top, -5); GXPosition3s16(0, sc_bottom, -5); - GXPosition3s16(0x280, sc_bottom, -5); - GXPosition3s16(0x280, 0x1c0, -5); - GXPosition3s16(0, 0x1c8, -5); + GXPosition3s16(0x260, sc_bottom, -5); + GXPosition3s16(0x260, 0x1c0, -5); + GXPosition3s16(0, 0x1c0, -5); GXEnd(); } GXSetScissor(param_1->mScissor.mXOrig, param_1->mScissor.mYOrig, param_1->mScissor.mWidth,