d_select_cursor - most functions matching

This commit is contained in:
Tal Hayon 2023-06-25 17:11:32 +03:00
parent 22059e57b7
commit 5bd128bd2a
9 changed files with 454 additions and 500 deletions

View File

@ -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 | 27.698035% | 996172 | 3596544
.text | 27.735849% | 997532 | 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 | 35.320165% | 1420108 | 4020672
Total | 35.353991% | 1421468 | 4020672
## Total
Section | Percentage | Decompiled (bytes) | Total (bytes)
---|---|---|---
main.dol | 35.320165% | 1420108 | 4020672
main.dol | 35.353991% | 1421468 | 4020672
RELs | 33.657973% | 3870776 | 11500324
Total | 34.088560% | 5290884 | 15520996
Total | 34.097322% | 5292244 | 15520996
## RELs

View File

@ -1,168 +0,0 @@
lbl_801949EC:
/* 801949EC 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 801949F0 7C 08 02 A6 */ mflr r0
/* 801949F4 90 01 00 24 */ stw r0, 0x24(r1)
/* 801949F8 39 61 00 20 */ addi r11, r1, 0x20
/* 801949FC 48 1C D7 D5 */ bl _savegpr_26
/* 80194A00 7C 7E 1B 79 */ or. r30, r3, r3
/* 80194A04 7C 9F 23 78 */ mr r31, r4
/* 80194A08 41 82 02 0C */ beq lbl_80194C14
/* 80194A0C 3C 60 80 3C */ lis r3, __vt__16dSelect_cursor_c@ha /* 0x803BB78C@ha */
/* 80194A10 38 03 B7 8C */ addi r0, r3, __vt__16dSelect_cursor_c@l /* 0x803BB78C@l */
/* 80194A14 90 1E 00 00 */ stw r0, 0(r30)
/* 80194A18 80 7E 00 04 */ lwz r3, 4(r30)
/* 80194A1C 28 03 00 00 */ cmplwi r3, 0
/* 80194A20 41 82 00 18 */ beq lbl_80194A38
/* 80194A24 38 80 00 01 */ li r4, 1
/* 80194A28 81 83 00 00 */ lwz r12, 0(r3)
/* 80194A2C 81 8C 00 08 */ lwz r12, 8(r12)
/* 80194A30 7D 89 03 A6 */ mtctr r12
/* 80194A34 4E 80 04 21 */ bctrl
lbl_80194A38:
/* 80194A38 38 00 00 00 */ li r0, 0
/* 80194A3C 90 1E 00 04 */ stw r0, 4(r30)
/* 80194A40 80 7E 00 10 */ lwz r3, 0x10(r30)
/* 80194A44 28 03 00 00 */ cmplwi r3, 0
/* 80194A48 41 82 00 24 */ beq lbl_80194A6C
/* 80194A4C 41 82 00 18 */ beq lbl_80194A64
/* 80194A50 38 80 00 01 */ li r4, 1
/* 80194A54 81 83 00 00 */ lwz r12, 0(r3)
/* 80194A58 81 8C 00 08 */ lwz r12, 8(r12)
/* 80194A5C 7D 89 03 A6 */ mtctr r12
/* 80194A60 4E 80 04 21 */ bctrl
lbl_80194A64:
/* 80194A64 38 00 00 00 */ li r0, 0
/* 80194A68 90 1E 00 10 */ stw r0, 0x10(r30)
lbl_80194A6C:
/* 80194A6C 3B 40 00 00 */ li r26, 0
/* 80194A70 3B A0 00 00 */ li r29, 0
/* 80194A74 7F BC EB 78 */ mr r28, r29
lbl_80194A78:
/* 80194A78 3B 7D 00 1C */ addi r27, r29, 0x1c
/* 80194A7C 7C 7E D8 2E */ lwzx r3, r30, r27
/* 80194A80 28 03 00 00 */ cmplwi r3, 0
/* 80194A84 41 82 00 20 */ beq lbl_80194AA4
/* 80194A88 41 82 00 18 */ beq lbl_80194AA0
/* 80194A8C 38 80 00 01 */ li r4, 1
/* 80194A90 81 83 00 00 */ lwz r12, 0(r3)
/* 80194A94 81 8C 00 08 */ lwz r12, 8(r12)
/* 80194A98 7D 89 03 A6 */ mtctr r12
/* 80194A9C 4E 80 04 21 */ bctrl
lbl_80194AA0:
/* 80194AA0 7F 9E D9 2E */ stwx r28, r30, r27
lbl_80194AA4:
/* 80194AA4 3B 5A 00 01 */ addi r26, r26, 1
/* 80194AA8 2C 1A 00 04 */ cmpwi r26, 4
/* 80194AAC 3B BD 00 04 */ addi r29, r29, 4
/* 80194AB0 41 80 FF C8 */ blt lbl_80194A78
/* 80194AB4 80 7E 00 14 */ lwz r3, 0x14(r30)
/* 80194AB8 28 03 00 00 */ cmplwi r3, 0
/* 80194ABC 41 82 00 24 */ beq lbl_80194AE0
/* 80194AC0 41 82 00 18 */ beq lbl_80194AD8
/* 80194AC4 38 80 00 01 */ li r4, 1
/* 80194AC8 81 83 00 00 */ lwz r12, 0(r3)
/* 80194ACC 81 8C 00 08 */ lwz r12, 8(r12)
/* 80194AD0 7D 89 03 A6 */ mtctr r12
/* 80194AD4 4E 80 04 21 */ bctrl
lbl_80194AD8:
/* 80194AD8 38 00 00 00 */ li r0, 0
/* 80194ADC 90 1E 00 14 */ stw r0, 0x14(r30)
lbl_80194AE0:
/* 80194AE0 80 7E 00 18 */ lwz r3, 0x18(r30)
/* 80194AE4 28 03 00 00 */ cmplwi r3, 0
/* 80194AE8 41 82 00 24 */ beq lbl_80194B0C
/* 80194AEC 41 82 00 18 */ beq lbl_80194B04
/* 80194AF0 38 80 00 01 */ li r4, 1
/* 80194AF4 81 83 00 00 */ lwz r12, 0(r3)
/* 80194AF8 81 8C 00 08 */ lwz r12, 8(r12)
/* 80194AFC 7D 89 03 A6 */ mtctr r12
/* 80194B00 4E 80 04 21 */ bctrl
lbl_80194B04:
/* 80194B04 38 00 00 00 */ li r0, 0
/* 80194B08 90 1E 00 18 */ stw r0, 0x18(r30)
lbl_80194B0C:
/* 80194B0C 80 7E 00 0C */ lwz r3, 0xc(r30)
/* 80194B10 28 03 00 00 */ cmplwi r3, 0
/* 80194B14 41 82 00 24 */ beq lbl_80194B38
/* 80194B18 41 82 00 18 */ beq lbl_80194B30
/* 80194B1C 38 80 00 01 */ li r4, 1
/* 80194B20 81 83 00 00 */ lwz r12, 0(r3)
/* 80194B24 81 8C 00 08 */ lwz r12, 8(r12)
/* 80194B28 7D 89 03 A6 */ mtctr r12
/* 80194B2C 4E 80 04 21 */ bctrl
lbl_80194B30:
/* 80194B30 38 00 00 00 */ li r0, 0
/* 80194B34 90 1E 00 0C */ stw r0, 0xc(r30)
lbl_80194B38:
/* 80194B38 80 7E 00 30 */ lwz r3, 0x30(r30)
/* 80194B3C 28 03 00 00 */ cmplwi r3, 0
/* 80194B40 41 82 00 24 */ beq lbl_80194B64
/* 80194B44 41 82 00 18 */ beq lbl_80194B5C
/* 80194B48 38 80 00 01 */ li r4, 1
/* 80194B4C 81 83 00 00 */ lwz r12, 0(r3)
/* 80194B50 81 8C 00 08 */ lwz r12, 8(r12)
/* 80194B54 7D 89 03 A6 */ mtctr r12
/* 80194B58 4E 80 04 21 */ bctrl
lbl_80194B5C:
/* 80194B5C 38 00 00 00 */ li r0, 0
/* 80194B60 90 1E 00 30 */ stw r0, 0x30(r30)
lbl_80194B64:
/* 80194B64 3B 40 00 00 */ li r26, 0
/* 80194B68 3B A0 00 00 */ li r29, 0
/* 80194B6C 3B 80 00 00 */ li r28, 0
lbl_80194B70:
/* 80194B70 3B 7D 00 34 */ addi r27, r29, 0x34
/* 80194B74 7C 7E D8 2E */ lwzx r3, r30, r27
/* 80194B78 28 03 00 00 */ cmplwi r3, 0
/* 80194B7C 41 82 00 20 */ beq lbl_80194B9C
/* 80194B80 41 82 00 18 */ beq lbl_80194B98
/* 80194B84 38 80 00 01 */ li r4, 1
/* 80194B88 81 83 00 00 */ lwz r12, 0(r3)
/* 80194B8C 81 8C 00 08 */ lwz r12, 8(r12)
/* 80194B90 7D 89 03 A6 */ mtctr r12
/* 80194B94 4E 80 04 21 */ bctrl
lbl_80194B98:
/* 80194B98 7F 9E D9 2E */ stwx r28, r30, r27
lbl_80194B9C:
/* 80194B9C 3B 5A 00 01 */ addi r26, r26, 1
/* 80194BA0 2C 1A 00 02 */ cmpwi r26, 2
/* 80194BA4 3B BD 00 04 */ addi r29, r29, 4
/* 80194BA8 41 80 FF C8 */ blt lbl_80194B70
/* 80194BAC 80 7E 00 2C */ lwz r3, 0x2c(r30)
/* 80194BB0 28 03 00 00 */ cmplwi r3, 0
/* 80194BB4 41 82 00 24 */ beq lbl_80194BD8
/* 80194BB8 41 82 00 18 */ beq lbl_80194BD0
/* 80194BBC 38 80 00 01 */ li r4, 1
/* 80194BC0 81 83 00 00 */ lwz r12, 0(r3)
/* 80194BC4 81 8C 00 08 */ lwz r12, 8(r12)
/* 80194BC8 7D 89 03 A6 */ mtctr r12
/* 80194BCC 4E 80 04 21 */ bctrl
lbl_80194BD0:
/* 80194BD0 38 00 00 00 */ li r0, 0
/* 80194BD4 90 1E 00 2C */ stw r0, 0x2c(r30)
lbl_80194BD8:
/* 80194BD8 80 7E 00 3C */ lwz r3, 0x3c(r30)
/* 80194BDC 28 03 00 00 */ cmplwi r3, 0
/* 80194BE0 41 82 00 24 */ beq lbl_80194C04
/* 80194BE4 41 82 00 18 */ beq lbl_80194BFC
/* 80194BE8 38 80 00 01 */ li r4, 1
/* 80194BEC 81 83 00 00 */ lwz r12, 0(r3)
/* 80194BF0 81 8C 00 08 */ lwz r12, 8(r12)
/* 80194BF4 7D 89 03 A6 */ mtctr r12
/* 80194BF8 4E 80 04 21 */ bctrl
lbl_80194BFC:
/* 80194BFC 38 00 00 00 */ li r0, 0
/* 80194C00 90 1E 00 3C */ stw r0, 0x3c(r30)
lbl_80194C04:
/* 80194C04 7F E0 07 35 */ extsh. r0, r31
/* 80194C08 40 81 00 0C */ ble lbl_80194C14
/* 80194C0C 7F C3 F3 78 */ mr r3, r30
/* 80194C10 48 13 A1 2D */ bl __dl__FPv
lbl_80194C14:
/* 80194C14 7F C3 F3 78 */ mr r3, r30
/* 80194C18 39 61 00 20 */ addi r11, r1, 0x20
/* 80194C1C 48 1C D6 01 */ bl _restgpr_26
/* 80194C20 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80194C24 7C 08 03 A6 */ mtlr r0
/* 80194C28 38 21 00 20 */ addi r1, r1, 0x20
/* 80194C2C 4E 80 00 20 */ blr

View File

@ -1,20 +0,0 @@
lbl_80195978:
/* 80195978 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8019597C 7C 08 02 A6 */ mflr r0
/* 80195980 90 01 00 14 */ stw r0, 0x14(r1)
/* 80195984 93 E1 00 0C */ stw r31, 0xc(r1)
/* 80195988 7C 7F 1B 79 */ or. r31, r3, r3
/* 8019598C 41 82 00 1C */ beq lbl_801959A8
/* 80195990 3C A0 80 3C */ lis r5, __vt__19dSelect_cursorHIO_c@ha /* 0x803BB7A8@ha */
/* 80195994 38 05 B7 A8 */ addi r0, r5, __vt__19dSelect_cursorHIO_c@l /* 0x803BB7A8@l */
/* 80195998 90 1F 00 00 */ stw r0, 0(r31)
/* 8019599C 7C 80 07 35 */ extsh. r0, r4
/* 801959A0 40 81 00 08 */ ble lbl_801959A8
/* 801959A4 48 13 93 99 */ bl __dl__FPv
lbl_801959A8:
/* 801959A8 7F E3 FB 78 */ mr r3, r31
/* 801959AC 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 801959B0 80 01 00 14 */ lwz r0, 0x14(r1)
/* 801959B4 7C 08 03 A6 */ mtlr r0
/* 801959B8 38 21 00 10 */ addi r1, r1, 0x10
/* 801959BC 4E 80 00 20 */ blr

View File

@ -1,108 +0,0 @@
lbl_80195460:
/* 80195460 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 80195464 7C 08 02 A6 */ mflr r0
/* 80195468 90 01 00 24 */ stw r0, 0x24(r1)
/* 8019546C 39 61 00 20 */ addi r11, r1, 0x20
/* 80195470 48 1C CD 65 */ bl _savegpr_27
/* 80195474 7C 7B 1B 78 */ mr r27, r3
/* 80195478 7C 9C 23 78 */ mr r28, r4
/* 8019547C 88 03 00 B5 */ lbz r0, 0xb5(r3)
/* 80195480 2C 00 00 02 */ cmpwi r0, 2
/* 80195484 41 82 00 78 */ beq lbl_801954FC
/* 80195488 40 80 00 10 */ bge lbl_80195498
/* 8019548C 2C 00 00 00 */ cmpwi r0, 0
/* 80195490 41 82 00 14 */ beq lbl_801954A4
/* 80195494 48 00 01 0C */ b lbl_801955A0
lbl_80195498:
/* 80195498 2C 00 00 04 */ cmpwi r0, 4
/* 8019549C 40 80 01 04 */ bge lbl_801955A0
/* 801954A0 48 00 00 C8 */ b lbl_80195568
lbl_801954A4:
/* 801954A4 3B A0 00 00 */ li r29, 0
/* 801954A8 3B E0 00 00 */ li r31, 0
/* 801954AC 3C 60 80 39 */ lis r3, tag_4181@ha /* 0x80394A30@ha */
/* 801954B0 3B C3 4A 30 */ addi r30, r3, tag_4181@l /* 0x80394A30@l */
lbl_801954B4:
/* 801954B4 80 7B 00 04 */ lwz r3, 4(r27)
/* 801954B8 7C 9E FA 14 */ add r4, r30, r31
/* 801954BC 80 A4 00 00 */ lwz r5, 0(r4)
/* 801954C0 80 C4 00 04 */ lwz r6, 4(r4)
/* 801954C4 81 83 00 00 */ lwz r12, 0(r3)
/* 801954C8 81 8C 00 3C */ lwz r12, 0x3c(r12)
/* 801954CC 7D 89 03 A6 */ mtctr r12
/* 801954D0 4E 80 04 21 */ bctrl
/* 801954D4 7F 84 E3 78 */ mr r4, r28
/* 801954D8 81 83 00 00 */ lwz r12, 0(r3)
/* 801954DC 81 8C 00 64 */ lwz r12, 0x64(r12)
/* 801954E0 7D 89 03 A6 */ mtctr r12
/* 801954E4 4E 80 04 21 */ bctrl
/* 801954E8 3B BD 00 01 */ addi r29, r29, 1
/* 801954EC 2C 1D 00 04 */ cmpwi r29, 4
/* 801954F0 3B FF 00 08 */ addi r31, r31, 8
/* 801954F4 41 80 FF C0 */ blt lbl_801954B4
/* 801954F8 48 00 00 E0 */ b lbl_801955D8
lbl_801954FC:
/* 801954FC 80 7B 00 04 */ lwz r3, 4(r27)
/* 80195500 3C 80 69 67 */ lis r4, 0x6967 /* 0x69676874@ha */
/* 80195504 38 C4 68 74 */ addi r6, r4, 0x6874 /* 0x69676874@l */
/* 80195508 38 A0 00 6C */ li r5, 0x6c
/* 8019550C 81 83 00 00 */ lwz r12, 0(r3)
/* 80195510 81 8C 00 3C */ lwz r12, 0x3c(r12)
/* 80195514 7D 89 03 A6 */ mtctr r12
/* 80195518 4E 80 04 21 */ bctrl
/* 8019551C 7F 84 E3 78 */ mr r4, r28
/* 80195520 81 83 00 00 */ lwz r12, 0(r3)
/* 80195524 81 8C 00 64 */ lwz r12, 0x64(r12)
/* 80195528 7D 89 03 A6 */ mtctr r12
/* 8019552C 4E 80 04 21 */ bctrl
/* 80195530 80 7B 00 04 */ lwz r3, 4(r27)
/* 80195534 3C 80 63 6B */ lis r4, 0x636B /* 0x636B5F6C@ha */
/* 80195538 38 C4 5F 6C */ addi r6, r4, 0x5F6C /* 0x636B5F6C@l */
/* 8019553C 38 A0 62 61 */ li r5, 0x6261
/* 80195540 81 83 00 00 */ lwz r12, 0(r3)
/* 80195544 81 8C 00 3C */ lwz r12, 0x3c(r12)
/* 80195548 7D 89 03 A6 */ mtctr r12
/* 8019554C 4E 80 04 21 */ bctrl
/* 80195550 7F 84 E3 78 */ mr r4, r28
/* 80195554 81 83 00 00 */ lwz r12, 0(r3)
/* 80195558 81 8C 00 64 */ lwz r12, 0x64(r12)
/* 8019555C 7D 89 03 A6 */ mtctr r12
/* 80195560 4E 80 04 21 */ bctrl
/* 80195564 48 00 00 74 */ b lbl_801955D8
lbl_80195568:
/* 80195568 80 7B 00 04 */ lwz r3, 4(r27)
/* 8019556C 3C 80 61 74 */ lis r4, 0x6174 /* 0x61747375@ha */
/* 80195570 38 C4 73 75 */ addi r6, r4, 0x7375 /* 0x61747375@l */
/* 80195574 38 A0 00 62 */ li r5, 0x62
/* 80195578 81 83 00 00 */ lwz r12, 0(r3)
/* 8019557C 81 8C 00 3C */ lwz r12, 0x3c(r12)
/* 80195580 7D 89 03 A6 */ mtctr r12
/* 80195584 4E 80 04 21 */ bctrl
/* 80195588 7F 84 E3 78 */ mr r4, r28
/* 8019558C 81 83 00 00 */ lwz r12, 0(r3)
/* 80195590 81 8C 00 64 */ lwz r12, 0x64(r12)
/* 80195594 7D 89 03 A6 */ mtctr r12
/* 80195598 4E 80 04 21 */ bctrl
/* 8019559C 48 00 00 3C */ b lbl_801955D8
lbl_801955A0:
/* 801955A0 80 7B 00 04 */ lwz r3, 4(r27)
/* 801955A4 3C 80 68 74 */ lis r4, 0x6874 /* 0x68743030@ha */
/* 801955A8 38 C4 30 30 */ addi r6, r4, 0x3030 /* 0x68743030@l */
/* 801955AC 3C 80 00 6C */ lis r4, 0x006C /* 0x006C6967@ha */
/* 801955B0 38 A4 69 67 */ addi r5, r4, 0x6967 /* 0x006C6967@l */
/* 801955B4 81 83 00 00 */ lwz r12, 0(r3)
/* 801955B8 81 8C 00 3C */ lwz r12, 0x3c(r12)
/* 801955BC 7D 89 03 A6 */ mtctr r12
/* 801955C0 4E 80 04 21 */ bctrl
/* 801955C4 7F 84 E3 78 */ mr r4, r28
/* 801955C8 81 83 00 00 */ lwz r12, 0(r3)
/* 801955CC 81 8C 00 64 */ lwz r12, 0x64(r12)
/* 801955D0 7D 89 03 A6 */ mtctr r12
/* 801955D4 4E 80 04 21 */ bctrl
lbl_801955D8:
/* 801955D8 39 61 00 20 */ addi r11, r1, 0x20
/* 801955DC 48 1C CC 45 */ bl _restgpr_27
/* 801955E0 80 01 00 24 */ lwz r0, 0x24(r1)
/* 801955E4 7C 08 03 A6 */ mtlr r0
/* 801955E8 38 21 00 20 */ addi r1, r1, 0x20
/* 801955EC 4E 80 00 20 */ blr

View File

@ -1,84 +0,0 @@
lbl_801955F0:
/* 801955F0 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 801955F4 7C 08 02 A6 */ mflr r0
/* 801955F8 90 01 00 24 */ stw r0, 0x24(r1)
/* 801955FC 39 61 00 20 */ addi r11, r1, 0x20
/* 80195600 48 1C CB D5 */ bl _savegpr_27
/* 80195604 7C 7B 1B 78 */ mr r27, r3
/* 80195608 7C 9C 23 78 */ mr r28, r4
/* 8019560C 88 03 00 B5 */ lbz r0, 0xb5(r3)
/* 80195610 2C 00 00 01 */ cmpwi r0, 1
/* 80195614 41 82 00 6C */ beq lbl_80195680
/* 80195618 40 80 00 C0 */ bge lbl_801956D8
/* 8019561C 2C 00 00 00 */ cmpwi r0, 0
/* 80195620 40 80 00 08 */ bge lbl_80195628
/* 80195624 48 00 00 B4 */ b lbl_801956D8
lbl_80195628:
/* 80195628 3B A0 00 00 */ li r29, 0
/* 8019562C 3B E0 00 00 */ li r31, 0
/* 80195630 3C 60 80 39 */ lis r3, tag_4197@ha /* 0x80394A50@ha */
/* 80195634 3B C3 4A 50 */ addi r30, r3, tag_4197@l /* 0x80394A50@l */
lbl_80195638:
/* 80195638 80 7B 00 04 */ lwz r3, 4(r27)
/* 8019563C 7C 9E FA 14 */ add r4, r30, r31
/* 80195640 80 A4 00 00 */ lwz r5, 0(r4)
/* 80195644 80 C4 00 04 */ lwz r6, 4(r4)
/* 80195648 81 83 00 00 */ lwz r12, 0(r3)
/* 8019564C 81 8C 00 3C */ lwz r12, 0x3c(r12)
/* 80195650 7D 89 03 A6 */ mtctr r12
/* 80195654 4E 80 04 21 */ bctrl
/* 80195658 7F 84 E3 78 */ mr r4, r28
/* 8019565C 81 83 00 00 */ lwz r12, 0(r3)
/* 80195660 81 8C 00 6C */ lwz r12, 0x6c(r12)
/* 80195664 7D 89 03 A6 */ mtctr r12
/* 80195668 4E 80 04 21 */ bctrl
/* 8019566C 3B BD 00 01 */ addi r29, r29, 1
/* 80195670 2C 1D 00 08 */ cmpwi r29, 8
/* 80195674 3B FF 00 08 */ addi r31, r31, 8
/* 80195678 41 80 FF C0 */ blt lbl_80195638
/* 8019567C 48 00 00 90 */ b lbl_8019570C
lbl_80195680:
/* 80195680 3B A0 00 00 */ li r29, 0
/* 80195684 3B E0 00 00 */ li r31, 0
/* 80195688 3C 60 80 39 */ lis r3, tag_4204@ha /* 0x80394A90@ha */
/* 8019568C 3B C3 4A 90 */ addi r30, r3, tag_4204@l /* 0x80394A90@l */
lbl_80195690:
/* 80195690 80 7B 00 04 */ lwz r3, 4(r27)
/* 80195694 7C 9E FA 14 */ add r4, r30, r31
/* 80195698 80 A4 00 00 */ lwz r5, 0(r4)
/* 8019569C 80 C4 00 04 */ lwz r6, 4(r4)
/* 801956A0 81 83 00 00 */ lwz r12, 0(r3)
/* 801956A4 81 8C 00 3C */ lwz r12, 0x3c(r12)
/* 801956A8 7D 89 03 A6 */ mtctr r12
/* 801956AC 4E 80 04 21 */ bctrl
/* 801956B0 7F 84 E3 78 */ mr r4, r28
/* 801956B4 81 83 00 00 */ lwz r12, 0(r3)
/* 801956B8 81 8C 00 6C */ lwz r12, 0x6c(r12)
/* 801956BC 7D 89 03 A6 */ mtctr r12
/* 801956C0 4E 80 04 21 */ bctrl
/* 801956C4 3B BD 00 01 */ addi r29, r29, 1
/* 801956C8 2C 1D 00 02 */ cmpwi r29, 2
/* 801956CC 3B FF 00 08 */ addi r31, r31, 8
/* 801956D0 41 80 FF C0 */ blt lbl_80195690
/* 801956D4 48 00 00 38 */ b lbl_8019570C
lbl_801956D8:
/* 801956D8 80 7B 00 04 */ lwz r3, 4(r27)
/* 801956DC 3C 80 6C 64 */ lis r4, 0x6C64 /* 0x6C643031@ha */
/* 801956E0 38 C4 30 31 */ addi r6, r4, 0x3031 /* 0x6C643031@l */
/* 801956E4 38 A0 67 6F */ li r5, 0x676f
/* 801956E8 81 83 00 00 */ lwz r12, 0(r3)
/* 801956EC 81 8C 00 3C */ lwz r12, 0x3c(r12)
/* 801956F0 7D 89 03 A6 */ mtctr r12
/* 801956F4 4E 80 04 21 */ bctrl
/* 801956F8 7F 84 E3 78 */ mr r4, r28
/* 801956FC 81 83 00 00 */ lwz r12, 0(r3)
/* 80195700 81 8C 00 6C */ lwz r12, 0x6c(r12)
/* 80195704 7D 89 03 A6 */ mtctr r12
/* 80195708 4E 80 04 21 */ bctrl
lbl_8019570C:
/* 8019570C 39 61 00 20 */ addi r11, r1, 0x20
/* 80195710 48 1C CB 11 */ bl _restgpr_27
/* 80195714 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80195718 7C 08 03 A6 */ mtlr r0
/* 8019571C 38 21 00 20 */ addi r1, r1, 0x20
/* 80195720 4E 80 00 20 */ blr

View File

@ -14,8 +14,7 @@ public:
/* 80195978 */ virtual ~dSelect_cursorHIO_c();
private:
/* 0x04 */ u8 field_0x4;
/* 0x04 */ s8 field_0x4;
/* 0x08 */ f32 field_0x8;
/* 0x0C */ f32 mXAxisExpansion;
/* 0x10 */ f32 mYAxisExpansion;
@ -58,15 +57,23 @@ public:
void onPlayAnime(int i_flag) { field_0xb4 |= (1 << i_flag); }
void offPlayAnime(int i_flag) { field_0xb4 &= ~(1 << i_flag); }
bool chkPlayAnime(int i_flag) { return field_0xb4 & (1 << i_flag); }
private:
/* 0x04 */ J2DScreen* mpScreen;
/* 0x08 */ J2DPane* mpPane;
/* 0x0C */ dSelect_icon_c* mpSelectIcon;
/* 0x10 */ CPaneMgr* mpPaneMgr;
/* 0x14 */ u8 field_0x14[40];
/* 0x14 */ CPaneMgr* field_0x14;
/* 0x18 */ CPaneMgr* field_0x18;
/* 0x18 */ CPaneMgr* field_0x1C[4];
/* 0x2C */ J2DAnmTransformKey* field_0x2C;
/* 0x30 */ J2DAnmColor* field_0x30;
/* 0x34 */ J2DAnmTextureSRTKey* field_0x34[2];
/* 0x3C */ dSelect_cursorHIO_c* mpCursorHIO;
/* 0x40 */ u8 field_0x40[16];
/* 0x40 */ f32 field_0x40;
/* 0x44 */ f32 field_0x44;
/* 0x48 */ f32 field_0x48[2];
/* 0x50 */ f32 field_0x50;
/* 0x54 */ f32 field_0x54;
/* 0x58 */ f32 mPositionX;
@ -76,11 +83,12 @@ private:
/* 0x68 */ f32 mParam3;
/* 0x6C */ f32 mParam4;
/* 0x70 */ f32 mParam5;
/* 0x74 */ u8 field_0x74[32];
/* 0x74 */ f32 field_0x74[4];
/* 0x84 */ f32 field_0x84[4];
/* 0x94 */ f32 field_0x94[4];
/* 0xA4 */ f32 field_0xa4[4];
/* 0xB4 */ u8 field_0xb4;
/* 0xB5 */ s8 mNameIdx;
/* 0xB5 */ u8 mNameIdx;
/* 0xB6 */ u8 field_0xb6;
/* 0xB7 */ bool mUpdateFlag;
};

View File

@ -17,8 +17,13 @@ public:
/* 80195A3C */ void animation();
/* 80195B40 */ void setAlpha(u8);
/* 80195B70 */ void setPos(J2DPane*, f32, f32);
virtual ~dSelect_icon_c() {}
/* 0x00 */ u8 field_0x0[8];
void drawSelf() {
// Not sure what field_0x4 is
}
/* 0x04 */ u8 field_0x4[4];
/* 0x08 */ J2DScreen* field_0x8;
/* 0x0C */ CPaneMgrAlpha* field_0xc;
/* 0x10 */ CPaneMgr* field_0x10;

View File

@ -4,19 +4,19 @@
//
#include "d/d_select_cursor.h"
#include "d/com/d_com_inf_game.h"
#include "JSystem/J2DGraph/J2DAnmLoader.h"
#include "JSystem/J2DGraph/J2DAnimation.h"
#include "JSystem/J2DGraph/J2DGrafContext.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "d/com/d_com_inf_game.h"
#include "dolphin/os/OS.h"
#include "global.h"
//
// Types:
//
struct J2DAnmLoaderDataBase {
/* 80308A6C */ void load(void const*);
};
//
// Forward References:
//
@ -83,24 +83,7 @@ extern "C" extern void* __vt__18J2DAnmTransformKey[6];
/* ############################################################################################## */
/* 80394AA0-80394AA0 021100 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80394AA0 = "zelda_select_cursor_4parts.blo";
SECTION_DEAD static char const* const stringBase_80394ABF = "zelda_store_select_icon.blo";
SECTION_DEAD static char const* const stringBase_80394ADB = "zelda_map_screen_portal_icon.blo";
SECTION_DEAD static char const* const stringBase_80394AFC = "zelda_map_screen_batsumark.blo";
SECTION_DEAD static char const* const stringBase_80394B1B = "";
SECTION_DEAD static char const* const stringBase_80394B1C = "zelda_store_select_icon.bck";
SECTION_DEAD static char const* const stringBase_80394B38 = "zelda_select_cursor_4parts.bpk";
SECTION_DEAD static char const* const stringBase_80394B57 = "zelda_store_select_icon.bpk";
SECTION_DEAD static char const* const stringBase_80394B73 = "zelda_map_screen_portal_icon.bpk";
SECTION_DEAD static char const* const stringBase_80394B94 = "zelda_map_screen_batsumark.bpk";
SECTION_DEAD static char const* const stringBase_80394BB3 = "zelda_select_cursor_4parts.btk";
SECTION_DEAD static char const* const stringBase_80394BD2 = "zelda_store_select_icon.btk";
SECTION_DEAD static char const* const stringBase_80394BEE = "zelda_store_select_icon_02.btk";
/* @stringBase0 padding */
SECTION_DEAD static char const* const pad_80394C0D = "\0\0";
#pragma pop
/* 803BB700-803BB70C 018820 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
@ -110,55 +93,55 @@ SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
/* 803BB70C-803BB71C -00001 0010+00 0/1 0/0 0/0 .data blo_name$3684 */
#pragma push
#pragma force_active on
SECTION_DATA static void* blo_name[4] = {
(void*)&d_d_select_cursor__stringBase0,
(void*)(((char*)&d_d_select_cursor__stringBase0) + 0x1F),
(void*)(((char*)&d_d_select_cursor__stringBase0) + 0x3B),
(void*)(((char*)&d_d_select_cursor__stringBase0) + 0x5C),
SECTION_DATA static char* blo_name[4] = {
"zelda_select_cursor_4parts.blo",
"zelda_store_select_icon.blo",
"zelda_map_screen_portal_icon.blo",
"zelda_map_screen_batsumark.blo",
};
#pragma pop
/* 803BB71C-803BB72C -00001 0010+00 0/1 0/0 0/0 .data bck_name$3685 */
#pragma push
#pragma force_active on
SECTION_DATA static void* bck_name[4] = {
(void*)(((char*)&d_d_select_cursor__stringBase0) + 0x7B),
(void*)(((char*)&d_d_select_cursor__stringBase0) + 0x7C),
(void*)(((char*)&d_d_select_cursor__stringBase0) + 0x7B),
(void*)(((char*)&d_d_select_cursor__stringBase0) + 0x7B),
SECTION_DATA static char* bck_name[4] = {
"",
"zelda_store_select_icon.bck",
"",
"",
};
#pragma pop
/* 803BB72C-803BB73C -00001 0010+00 0/1 0/0 0/0 .data bpk_name$3686 */
#pragma push
#pragma force_active on
SECTION_DATA static void* bpk_name[4] = {
(void*)(((char*)&d_d_select_cursor__stringBase0) + 0x98),
(void*)(((char*)&d_d_select_cursor__stringBase0) + 0xB7),
(void*)(((char*)&d_d_select_cursor__stringBase0) + 0xD3),
(void*)(((char*)&d_d_select_cursor__stringBase0) + 0xF4),
SECTION_DATA static char* bpk_name[4] = {
"zelda_select_cursor_4parts.bpk",
"zelda_store_select_icon.bpk",
"zelda_map_screen_portal_icon.bpk",
"zelda_map_screen_batsumark.bpk",
};
#pragma pop
/* 803BB73C-803BB74C -00001 0010+00 0/1 0/0 0/0 .data btk_name$3687 */
#pragma push
#pragma force_active on
SECTION_DATA static void* btk_name[4] = {
(void*)(((char*)&d_d_select_cursor__stringBase0) + 0x113),
(void*)(((char*)&d_d_select_cursor__stringBase0) + 0x132),
(void*)(((char*)&d_d_select_cursor__stringBase0) + 0x7B),
(void*)(((char*)&d_d_select_cursor__stringBase0) + 0x7B),
SECTION_DATA static char* btk_name[4] = {
"zelda_select_cursor_4parts.btk",
"zelda_store_select_icon.btk",
"",
"",
};
#pragma pop
/* 803BB74C-803BB78C -00001 0010+30 0/1 0/0 0/0 .data btk2_name$3688 */
#pragma push
#pragma force_active on
SECTION_DATA static void* btk2_name[4 + 12 /* padding */] = {
(void*)(((char*)&d_d_select_cursor__stringBase0) + 0x7B),
(void*)(((char*)&d_d_select_cursor__stringBase0) + 0x14E),
(void*)(((char*)&d_d_select_cursor__stringBase0) + 0x7B),
(void*)(((char*)&d_d_select_cursor__stringBase0) + 0x7B),
SECTION_DATA static char* btk2_name[4 + 12 /* padding */] = {
"",
"zelda_store_select_icon_02.btk",
"",
"",
/* padding */
NULL,
NULL,
@ -175,6 +158,11 @@ SECTION_DATA static void* btk2_name[4 + 12 /* padding */] = {
};
#pragma pop
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const pad_80394C0D = "\0\0";
#pragma pop
/* 803BB78C-803BB7A8 0188AC 0010+0C 2/2 0/0 0/0 .data __vt__16dSelect_cursor_c */
SECTION_DATA extern void* __vt__16dSelect_cursor_c[4 + 3 /* padding */] = {
(void*)NULL /* RTTI */,
@ -203,6 +191,19 @@ SECTION_SDATA2 static f32 lit_3673 = 1.0f;
SECTION_SDATA2 static f32 lit_3674 = 3.0f / 10.0f;
/* 801941E4-80194220 18EB24 003C+00 1/1 0/0 0/0 .text __ct__19dSelect_cursorHIO_cFv */
// matches with literals
#ifdef NONMATCHING
dSelect_cursorHIO_c::dSelect_cursorHIO_c() {
field_0x8 = 1.0f;
mXAxisExpansion = 1.0f;
mYAxisExpansion = 1.0f;
mOscillation = 3.0f / 10.0f;
field_0x18 = 1.0f;
mRatioX = 1.0f;
mRatioY = 1.0f;
mDebugON = false;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@ -211,12 +212,12 @@ asm dSelect_cursorHIO_c::dSelect_cursorHIO_c() {
#include "asm/d/d_select_cursor/__ct__19dSelect_cursorHIO_cFv.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80394A10-80394A30 021070 0020+00 1/1 0/0 0/0 .rodata corner_tag$3707 */
SECTION_RODATA static u8 const corner_tag[32] = {
0x6C, 0x5F, 0x75, 0x5F, 0x6E, 0x75, 0x6C, 0x6C, 0x6C, 0x5F, 0x64, 0x5F, 0x6E, 0x75, 0x6C, 0x6C,
0x72, 0x5F, 0x75, 0x5F, 0x6E, 0x75, 0x6C, 0x6C, 0x72, 0x5F, 0x64, 0x5F, 0x6E, 0x75, 0x6C, 0x6C,
SECTION_RODATA static u64 const corner_tag[4] = {
'l_u_null', 'l_d_null', 'r_u_null', 'r_d_null',
};
COMPILER_STRIP_GATE(0x80394A10, &corner_tag);
@ -230,6 +231,150 @@ SECTION_SDATA2 static u8 lit_3808[4] = {
/* 80194220-801949EC 18EB60 07CC+00 0/0 14/14 0/0 .text __ct__16dSelect_cursor_cFUcfP10JKRArchive
*/
// Matches with literals
#ifdef NONMATCHING
dSelect_cursor_c::dSelect_cursor_c(u8 param_0, f32 param_1, JKRArchive* param_2) {
mpCursorHIO = new dSelect_cursorHIO_c();
mpCursorHIO->field_0x4 = -1;
mNameIdx = 0;
field_0xb6 = param_0;
field_0xb4 = 0xff;
mUpdateFlag = true;
mpPane = NULL;
for (int i = 0; i < 4; i++) {
field_0x94[i] = 0.0f;
field_0xa4[i] = 0.0f;
field_0x74[i] = 0.0f;
field_0x84[i] = 0.0f;
}
mParam1 = mpCursorHIO->mXAxisExpansion;
mParam2 = mpCursorHIO->mYAxisExpansion;
mParam3 = mpCursorHIO->mOscillation;
mParam4 = mpCursorHIO->mRatioX;
mParam5 = mpCursorHIO->mRatioY;
switch(field_0xb6) {
case 1:
case 2:
case 3:
case 4:
mNameIdx = 0;
break;
case 5:
mNameIdx = 2;
break;
case 6:
mNameIdx = 3;
break;
}
if (param_2 == NULL) {
param_2 = dComIfGp_getMain2DArchive();
}
mpScreen = new J2DScreen();
mpScreen->setPriority((char*) blo_name[mNameIdx], 0x20000, param_2);
dPaneClass_showNullPane(mpScreen);
for (int i = 0; i < 4; i++) {
field_0x1C[i] = NULL;
}
switch(mNameIdx) {
case 0:
mpPaneMgr = new CPaneMgr(mpScreen, 'n_all', 2, NULL);
mpPaneMgr->hide();
mpPaneMgr->setAlpha(0);
for (int i = 0; i< 4; i++) {
field_0x1C[i] = new CPaneMgr(mpScreen, ((u64*)corner_tag)[i], 0, NULL);
field_0x94[i] = mpScreen->search( ((u64*)corner_tag)[i])->getTranslateX();
field_0xa4[i] = mpScreen->search( ((u64*)corner_tag)[i])->getTranslateY();
field_0x74[i] = field_0x94[i];
field_0x84[i] = field_0xa4[i];
}
mpPaneMgr->scale(param_1, param_1);
field_0x14 = NULL;
field_0x18 = NULL;
break;
case 1:
mpPaneMgr = new CPaneMgr(mpScreen, 'n_all', 2, NULL);
mpPaneMgr->hide();
mpPaneMgr->setAlpha(0);
mpPaneMgr->scale(param_1, param_1);
field_0x14 = new CPaneMgr(mpScreen, 'sel_po00', 0, NULL);
field_0x14->hide();
field_0x18 = new CPaneMgr(mpScreen, 'n_all2', 2, NULL);
break;
case 2:
mpPaneMgr = new CPaneMgr(mpScreen, 'Null', 2, NULL);
mpPaneMgr->hide();
mpPaneMgr->setAlpha(0);
mpPaneMgr->scale(param_1, param_1);
field_0x14 = NULL;
field_0x18 = NULL;
break;
case 3:
mpPaneMgr = new CPaneMgr(mpScreen, 'batsu', 2, NULL);
mpPaneMgr->hide();
mpPaneMgr->setAlpha(0);
mpPaneMgr->scale(param_1, param_1);
field_0x14 = NULL;
field_0x18 = NULL;
break;
}
mpSelectIcon = NULL;
i_OSInitFastCast();
if (strcmp(bpk_name[mNameIdx], "") != 0) {
field_0x30 = (J2DAnmColor*)J2DAnmLoaderDataBase::load(JKRFileLoader::getGlbResource(bpk_name[mNameIdx], param_2));
field_0x30->searchUpdateMaterialID(mpScreen);
} else {
field_0x30 = NULL;
}
field_0x44 = 0.0f;
if (strcmp(btk_name[mNameIdx], "") != 0) {
field_0x34[0] = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(JKRFileLoader::getGlbResource(btk_name[mNameIdx], param_2));
field_0x34[0]->searchUpdateMaterialID(mpScreen);
} else {
field_0x34[0] = NULL;
}
field_0x48[0] = 0.0f;
if (strcmp(btk2_name[mNameIdx], "") != 0) {
field_0x34[1] = (J2DAnmTextureSRTKey*)J2DAnmLoaderDataBase::load(JKRFileLoader::getGlbResource(btk2_name[mNameIdx], param_2));
field_0x34[1]->searchUpdateMaterialID(mpScreen);
} else {
field_0x34[1] = NULL;
}
field_0x48[1] = 0.0f;
if (strcmp(bck_name[mNameIdx], "") != 0) {
field_0x2C = (J2DAnmTransformKey*)J2DAnmLoaderDataBase::load(JKRFileLoader::getGlbResource(bck_name[mNameIdx], param_2));
} else {
field_0x2C = NULL;
}
field_0x40 = 0.0f;
switch(mNameIdx) {
case 1:
field_0x50 = mpScreen->search('ssel_ico')->getTranslateX();
field_0x54 = mpScreen->search('ssel_ico')->getTranslateY();
break;
case 0:
case 2:
case 3:
field_0x50 = 0.0f;
field_0x54 = 0.0f;
break;
}
mPositionY = 0.0f;
mPositionX = 0.0f;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@ -238,16 +383,53 @@ asm dSelect_cursor_c::dSelect_cursor_c(u8 param_0, f32 param_1, JKRArchive* para
#include "asm/d/d_select_cursor/__ct__16dSelect_cursor_cFUcfP10JKRArchive.s"
}
#pragma pop
#endif
/* 801949EC-80194C30 18F32C 0244+00 1/0 0/0 0/0 .text __dt__16dSelect_cursor_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dSelect_cursor_c::~dSelect_cursor_c() {
nofralloc
#include "asm/d/d_select_cursor/__dt__16dSelect_cursor_cFv.s"
dSelect_cursor_c::~dSelect_cursor_c() {
delete mpScreen;
mpScreen = NULL;
if (mpPaneMgr) {
delete mpPaneMgr;
mpPaneMgr = NULL;
}
for (int i = 0; i < 4; i++) {
if (field_0x1C[i]) {
delete field_0x1C[i];
field_0x1C[i] = NULL;
}
}
if (field_0x14) {
delete field_0x14;
field_0x14 = NULL;
}
if (field_0x18) {
delete field_0x18;
field_0x18 = NULL;
}
if (mpSelectIcon) {
delete mpSelectIcon;
mpSelectIcon = NULL;
}
if (field_0x30) {
delete field_0x30;
field_0x30 = NULL;
}
for (int i = 0; i < 2; i++) {
if (field_0x34[i]) {
delete field_0x34[i];
field_0x34[i] = NULL;
}
}
if (field_0x2C) {
delete field_0x2C;
field_0x2C = NULL;
}
if (mpCursorHIO) {
delete mpCursorHIO;
mpCursorHIO = NULL;
}
}
#pragma pop
/* 80194C30-80194CC0 18F570 0090+00 1/0 0/0 0/0 .text draw__16dSelect_cursor_cFv */
#ifdef NONMATCHING
@ -256,9 +438,9 @@ void dSelect_cursor_c::draw() {
update();
J2DGrafContext* gphCtx = dComIfGp_getCurrentGrafPort();
gphCtx->setup2D();
mpScreen->draw(FLOAT_LABEL(lit_3808),FLOAT_LABEL(lit_3808),gphCtx);
mpScreen->draw(0.0f, 0.0f, gphCtx);
if (mpSelectIcon) {
// mpSelectIcon->drawSelf(); // inline here, but not sure how to properly define it
mpSelectIcon->drawSelf(); // inline here, but not sure how to properly define it
}
}
#else
@ -281,6 +463,100 @@ SECTION_SDATA2 static f32 lit_4062 = 0.5f;
SECTION_SDATA2 static f64 lit_4064 = 4503601774854144.0 /* cast s32 to float */;
/* 80194CC0-801950F4 18F600 0434+00 1/1 0/0 0/0 .text update__16dSelect_cursor_cFv */
// matches with literals
#ifdef NONMATCHING
void dSelect_cursor_c::update() {
f32 fVar1 = 1.0f;
if (field_0xb6 == 3) {
fVar1 = 0.5f;
}
mpPaneMgr->translate(mPositionX, mPositionY);
if (mpCursorHIO->mDebugON) {
mParam1 = mpCursorHIO->mXAxisExpansion;
mParam2 = mpCursorHIO->mYAxisExpansion;
mParam3 = mpCursorHIO->mOscillation;
mParam4 = mpCursorHIO->mRatioX;
mParam5 = mpCursorHIO->mRatioY;
}
if (mUpdateFlag) {
if (field_0x30) {
if (chkPlayAnime(0)) {
if (mNameIdx == 1) {
field_0x44 += mpCursorHIO->field_0x8 * fVar1;
} else {
field_0x44 += fVar1;
}
if (field_0x44 >= field_0x30->getFrameMax()) {
field_0x44 -= field_0x30->getFrameMax();
}
field_0x30->setFrame(field_0x44);
setBpkAnimation(field_0x30);
} else {
if (field_0x44 != 1.0f) {
field_0x44 = 1.0f;
field_0x30->setFrame(field_0x44);
setBpkAnimation(field_0x30);
}
}
}
for (int i = 0; i < 2; i++) {
if (field_0x34[i]) {
if ((i == 0 && chkPlayAnime(2)) || (i == 1 && chkPlayAnime(3))) {
if (mNameIdx == 1) {
field_0x48[i] += mpCursorHIO->field_0x8 * fVar1;
} else {
field_0x48[i] += fVar1;
}
if (field_0x48[i] >= field_0x34[i]->getFrameMax()) {
field_0x48[i] -= field_0x34[i]->getFrameMax();
}
field_0x34[i]->setFrame(field_0x48[i]);
}
setBtk0Animation(field_0x34[i]);
}
}
if (field_0x2C && chkPlayAnime(1)) {
if (mNameIdx == 1) {
field_0x40 += mpCursorHIO->field_0x8 * fVar1;
} else {
field_0x40 += fVar1;
}
if (field_0x40 >= field_0x2C->getFrameMax()) {
field_0x40 -= field_0x2C->getFrameMax();
}
field_0x2C->setFrame(field_0x40);
setBckAnimation(field_0x2C);
}
if (chkPlayAnime(1) && mNameIdx == 0) {
setCursorAnimation();
}
mpScreen->animation();
}
if (mpSelectIcon && field_0x14) {
Vec res = field_0x14->getGlobalVtxCenter(field_0x14->mPane, false, 0);
mpSelectIcon->setPos(field_0x14->getPanePtr(), res.x, res.y);
mpSelectIcon->animation();
mpSelectIcon->setAlpha(field_0x14->getPanePtr()->getAlpha());
}
for (int i = 0; i < 4; i++) {
if (field_0x1C[i]) {
field_0x1C[i]->scale(mParam4, mParam5);
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@ -289,12 +565,14 @@ asm void dSelect_cursor_c::update() {
#include "asm/d/d_select_cursor/update__16dSelect_cursor_cFv.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80453A60-80453A64 002060 0004+00 1/1 0/0 0/0 .sdata2 @4089 */
SECTION_SDATA2 static f32 lit_4089 = -1.0f;
/* 801950F4-801951B0 18FA34 00BC+00 0/0 30/30 0/0 .text setPos__16dSelect_cursor_cFffP7J2DPaneb */
// matches with literals
#ifdef NONMATCHING
void dSelect_cursor_c::setPos(f32 i_posX, f32 i_posY, J2DPane* i_pane, bool i_scaleBounds) {
mpPane = i_pane;
@ -304,15 +582,16 @@ void dSelect_cursor_c::setPos(f32 i_posX, f32 i_posY, J2DPane* i_pane, bool i_sc
return;
}
f32 width = i_pane->getWidth() * FLOAT_LABEL(lit_3673) * FLOAT_LABEL(lit_4062);
f32 height = i_pane->getHeight() * FLOAT_LABEL(lit_4062);
f32 val1 = 1.0f;
f32 width = (i_pane->getWidth()) * val1 * 0.5f;
f32 height = i_pane->getHeight() * 0.5f;
if (i_scaleBounds) {
width *= i_pane->getScaleX();
height *= i_pane->getScaleY();
}
f32 tmp7 = FLOAT_LABEL(lit_4089);
f32 tmp7 = -1.0f;
for (int i = 0; i < 4; i++) {
@ -323,7 +602,7 @@ void dSelect_cursor_c::setPos(f32 i_posX, f32 i_posY, J2DPane* i_pane, bool i_sc
field_0x94[i] *= tmp7;
}
if ((i & 1) ^ (i >> 0x1f) == i >> 0x1f) {
if (i % 2 == 0) {
field_0xa4[i] *= tmp7;
}
}
@ -351,19 +630,23 @@ void dSelect_cursor_c::setParam(f32 i_param1, f32 i_param2, f32 i_param3, f32 i_
}
/* 801951C8-801952A0 18FB08 00D8+00 0/0 14/14 0/0 .text setScale__16dSelect_cursor_cFf */
// matches with literals
#ifdef NONMATCHING
// first conditional has issues
void dSelect_cursor_c::setScale(f32 i_scale) {
J2DPane* pane = mpPaneMgr->getPanePtr();
pane->scale(i_scale,i_scale);
s8 name_idx = mNameIdx;
if ((name_idx == 1 || name_idx < 1) || (name_idx < 0 && name_idx < 4)) {
switch (mNameIdx) {
case 1:
field_0x50 = mpScreen->search('ssel_ico')->getTranslateX();
field_0x54 = mpScreen->search('ssel_ico')->getTranslateY();
} else {
break;
case 0:
case 2:
case 3:
field_0x50 = 0.0f;
field_0x54 = 0.0f;
break;
}
}
#else
@ -398,8 +681,8 @@ void dSelect_cursor_c::setAlphaRate(f32 i_alphaRate) {
SECTION_SDATA2 static f32 lit_4157 = 5.0f;
/* 80195330-801953CC 18FC70 009C+00 0/0 1/1 0/0 .text addAlpha__16dSelect_cursor_cFv */
#ifdef NONMATCHING
// matches with literals
#ifdef NONMATCHING
int dSelect_cursor_c::addAlpha() {
s16 alpha_timer = mpPaneMgr->getAlphaTimer();
@ -412,7 +695,7 @@ int dSelect_cursor_c::addAlpha() {
} else {
alpha_timer++;
mpPaneMgr->alphaAnimeStart(alpha_timer);
mpPaneMgr->setAlphaRate(alpha_timer/FLOAT_LABEL(lit_4157));
mpPaneMgr->setAlphaRate(alpha_timer/5.0f);
}
return 0;
@ -429,8 +712,8 @@ asm int dSelect_cursor_c::addAlpha() {
#endif
/* 801953CC-80195460 18FD0C 0094+00 0/0 1/1 0/0 .text decAlpha__16dSelect_cursor_cFv */
#ifdef NONMATCHING
// matches with literals
#ifdef NONMATCHING
int dSelect_cursor_c::decAlpha() {
s16 alpha_timer = mpPaneMgr->getAlphaTimer();
@ -442,7 +725,7 @@ int dSelect_cursor_c::decAlpha() {
} else {
alpha_timer--;
mpPaneMgr->alphaAnimeStart(alpha_timer);
mpPaneMgr->setAlphaRate(alpha_timer/FLOAT_LABEL(lit_4157));
mpPaneMgr->setAlphaRate(alpha_timer/5.0f);
}
return 0;
@ -460,49 +743,62 @@ asm int dSelect_cursor_c::decAlpha() {
/* ############################################################################################## */
/* 80394A30-80394A50 021090 0020+00 1/1 0/0 0/0 .rodata tag$4181 */
SECTION_RODATA static u8 const tag_4181[32] = {
0x00, 0x00, 0x00, 0x00, 0x6C, 0x5F, 0x6C, 0x64, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x5F, 0x6C, 0x75,
0x00, 0x00, 0x00, 0x00, 0x6C, 0x5F, 0x72, 0x64, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x5F, 0x72, 0x75,
static u64 const tag_4181[4] = {
'l_ld', 'l_lu', 'l_rd', 'l_ru',
};
COMPILER_STRIP_GATE(0x80394A30, &tag_4181);
/* 80195460-801955F0 18FDA0 0190+00 1/1 0/0 0/0 .text
* setBpkAnimation__16dSelect_cursor_cFP11J2DAnmColor */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dSelect_cursor_c::setBpkAnimation(J2DAnmColor* param_0) {
nofralloc
#include "asm/d/d_select_cursor/setBpkAnimation__16dSelect_cursor_cFP11J2DAnmColor.s"
void dSelect_cursor_c::setBpkAnimation(J2DAnmColor* param_0) {
switch (mNameIdx) {
case 0:
for (int i = 0; i < 4; i++) {
mpScreen->search(tag_4181[i])->setAnimation(param_0);
}
break;
case 2:
mpScreen->search('light')->setAnimation(param_0);
mpScreen->search('back_l')->setAnimation(param_0);
break;
case 3:
mpScreen->search('batsu')->setAnimation(param_0);
break;
default:
mpScreen->search('light00')->setAnimation(param_0);
break;
}
}
#pragma pop
/* ############################################################################################## */
/* 80394A50-80394A90 0210B0 0040+00 1/1 0/0 0/0 .rodata tag$4197 */
SECTION_RODATA static u8 const tag_4197[64] = {
0x00, 0x69, 0x5F, 0x63, 0x5F, 0x6C, 0x64, 0x31, 0x00, 0x69, 0x5F, 0x63, 0x5F, 0x6C, 0x64, 0x32,
0x00, 0x69, 0x5F, 0x63, 0x5F, 0x6C, 0x75, 0x31, 0x00, 0x69, 0x5F, 0x63, 0x5F, 0x6C, 0x75, 0x32,
0x00, 0x69, 0x5F, 0x63, 0x5F, 0x72, 0x64, 0x31, 0x00, 0x69, 0x5F, 0x63, 0x5F, 0x72, 0x64, 0x32,
0x00, 0x69, 0x5F, 0x63, 0x5F, 0x72, 0x75, 0x31, 0x00, 0x69, 0x5F, 0x63, 0x5F, 0x72, 0x75, 0x32,
static u64 const tag_4197[8] = {
'i_c_ld1', 'i_c_ld2', 'i_c_lu1', 'i_c_lu2', 'i_c_rd1', 'i_c_rd2', 'i_c_ru1', 'i_c_ru2',
};
COMPILER_STRIP_GATE(0x80394A50, &tag_4197);
/* 80394A90-80394AA0 0210F0 0010+00 1/1 0/0 0/0 .rodata tag$4204 */
SECTION_RODATA static u8 const tag_4204[16] = {
0x00, 0x00, 0x67, 0x6F, 0x6C, 0x64, 0x30, 0x31, 0x00, 0x00, 0x67, 0x6F, 0x6C, 0x64, 0x30, 0x32,
static u64 const tag_4204[2] = {
'gold01', 'gold02',
};
COMPILER_STRIP_GATE(0x80394A90, &tag_4204);
/* 801955F0-80195724 18FF30 0134+00 1/1 0/0 0/0 .text
* setBtk0Animation__16dSelect_cursor_cFP19J2DAnmTextureSRTKey */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dSelect_cursor_c::setBtk0Animation(J2DAnmTextureSRTKey* param_0) {
nofralloc
#include "asm/d/d_select_cursor/setBtk0Animation__16dSelect_cursor_cFP19J2DAnmTextureSRTKey.s"
void dSelect_cursor_c::setBtk0Animation(J2DAnmTextureSRTKey* param_0) {
switch (mNameIdx) {
case 0:
for (int i = 0; i < 8; i++) {
mpScreen->search(tag_4197[i])->setAnimation(param_0);
}
break;
case 1:
for (int i = 0; i < 2; i++) {
mpScreen->search(tag_4204[i])->setAnimation(param_0);
}
break;
default:
mpScreen->search('gold01')->setAnimation(param_0);
break;
}
}
#pragma pop
/* ############################################################################################## */
/* 80453A68-80453A6C 002068 0004+00 1/1 0/0 0/0 .sdata2 @4237 */
@ -512,6 +808,38 @@ SECTION_SDATA2 static f32 lit_4237 = 20.0f;
SECTION_SDATA2 static f32 lit_4238 = 10.0f;
/* 80195724-801958E0 190064 01BC+00 1/1 0/0 0/0 .text setCursorAnimation__16dSelect_cursor_cFv */
// Matches without literals
#ifdef NONMATCHING
void dSelect_cursor_c::setCursorAnimation() {
f32 fVar1 = 1.0f;
if (field_0xb6 == 3) {
fVar1 = 0.5f;
}
field_0x40 += fVar1;
if (field_0x40 >= 20.0f) {
field_0x40 -= 20.0f;
}
f32 fVar2;
f32 param3 = mParam3;
fVar2 = field_0x40;
if (fVar2 < 10.0f) {
fVar2 /= 10.0f;
} else {
fVar2 = (20.0f - fVar2) / 10.0f;
}
for (int i = 0; i < 4; i++) {
field_0x74[i] = mParam1 * (field_0x94[i] * ((1.0f - param3) + fVar2 * param3));
field_0x84[i] = mParam2 * (field_0xa4[i] * ((1.0f - param3) + fVar2 * param3));
}
moveCenter(mpScreen->search('l_u_null'), field_0x74[0], field_0x84[0]);
moveCenter(mpScreen->search('l_d_null'), field_0x74[1], field_0x84[1]);
moveCenter(mpScreen->search('r_u_null'), field_0x74[2], field_0x84[2]);
moveCenter(mpScreen->search('r_d_null'), field_0x74[3], field_0x84[3]);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@ -520,6 +848,7 @@ asm void dSelect_cursor_c::setCursorAnimation() {
#include "asm/d/d_select_cursor/setCursorAnimation__16dSelect_cursor_cFv.s"
}
#pragma pop
#endif
/* 801958E0-80195940 190220 0060+00 1/1 0/0 0/0 .text
* setBckAnimation__16dSelect_cursor_cFP18J2DAnmTransformKey */
@ -534,14 +863,8 @@ void dSelect_cursor_c::moveCenter(J2DPane* i_pane, f32 i_x, f32 i_y) {
}
/* 80195978-801959C0 1902B8 0048+00 1/0 0/0 0/0 .text __dt__19dSelect_cursorHIO_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dSelect_cursorHIO_c::~dSelect_cursorHIO_c() {
nofralloc
#include "asm/d/d_select_cursor/__dt__19dSelect_cursorHIO_cFv.s"
dSelect_cursorHIO_c::~dSelect_cursorHIO_c() {
}
#pragma pop
/* 801959C0-80195A2C 190300 006C+00 0/0 1/0 0/0 .text __dt__18J2DAnmTransformKeyFv */
#pragma push

View File

@ -4,8 +4,8 @@
//
#include "d/d_simple_model.h"
#include "d/kankyo/d_kankyo.h"
#include "d/com/d_com_inf_game.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "m_Do/m_Do_mtx.h"
@ -13,8 +13,6 @@
// External References:
//
extern "C" extern dScnKy_env_light_c g_env_light;
//
// Declarations:
//