diff --git a/asm/d/d_save.s b/asm/d/d_save.s index c4dc11e2630..2c266ed7038 100644 --- a/asm/d/d_save.s +++ b/asm/d/d_save.s @@ -2,190 +2,6 @@ .section .text, "ax" # 80032918 -.global dSv_letter_info_c_NS_init -dSv_letter_info_c_NS_init: -/* 800343DC 0003131C 38 80 00 00 */ li r4, 0 -/* 800343E0 00031320 7C 86 23 78 */ mr r6, r4 -/* 800343E4 00031324 7C 85 23 78 */ mr r5, r4 -/* 800343E8 00031328 38 00 00 02 */ li r0, 2 -/* 800343EC 0003132C 7C 09 03 A6 */ mtctr r0 -lbl_800343F0: -/* 800343F0 00031330 7C E3 22 14 */ add r7, r3, r4 -/* 800343F4 00031334 90 C7 00 00 */ stw r6, 0(r7) -/* 800343F8 00031338 90 A7 00 08 */ stw r5, 8(r7) -/* 800343FC 0003133C 38 84 00 04 */ addi r4, r4, 4 -/* 80034400 00031340 42 00 FF F0 */ bdnz lbl_800343F0 -/* 80034404 00031344 38 A0 00 00 */ li r5, 0 -/* 80034408 00031348 38 80 00 00 */ li r4, 0 -/* 8003440C 0003134C 38 00 00 40 */ li r0, 0x40 -/* 80034410 00031350 7C 09 03 A6 */ mtctr r0 -lbl_80034414: -/* 80034414 00031354 38 05 00 10 */ addi r0, r5, 0x10 -/* 80034418 00031358 7C 83 01 AE */ stbx r4, r3, r0 -/* 8003441C 0003135C 38 A5 00 01 */ addi r5, r5, 1 -/* 80034420 00031360 42 00 FF F4 */ bdnz lbl_80034414 -/* 80034424 00031364 4E 80 00 20 */ blr - -.global dSv_letter_info_c_NS_onLetterGetFlag -dSv_letter_info_c_NS_onLetterGetFlag: -/* 80034428 00031368 7C 80 2E 70 */ srawi r0, r4, 5 -/* 8003442C 0003136C 54 07 10 3A */ slwi r7, r0, 2 -/* 80034430 00031370 7C C3 38 2E */ lwzx r6, r3, r7 -/* 80034434 00031374 38 A0 00 01 */ li r5, 1 -/* 80034438 00031378 54 80 06 FE */ clrlwi r0, r4, 0x1b -/* 8003443C 0003137C 7C A0 00 30 */ slw r0, r5, r0 -/* 80034440 00031380 7C C0 03 78 */ or r0, r6, r0 -/* 80034444 00031384 7C 03 39 2E */ stwx r0, r3, r7 -/* 80034448 00031388 4E 80 00 20 */ blr - -.global dSv_letter_info_c_NS_isLetterGetFlag -dSv_letter_info_c_NS_isLetterGetFlag: -/* 8003444C 0003138C 38 A0 00 01 */ li r5, 1 -/* 80034450 00031390 54 80 06 FE */ clrlwi r0, r4, 0x1b -/* 80034454 00031394 7C A5 00 30 */ slw r5, r5, r0 -/* 80034458 00031398 7C 80 2E 70 */ srawi r0, r4, 5 -/* 8003445C 0003139C 54 00 10 3A */ slwi r0, r0, 2 -/* 80034460 000313A0 7C 03 00 2E */ lwzx r0, r3, r0 -/* 80034464 000313A4 7C A3 00 38 */ and r3, r5, r0 -/* 80034468 000313A8 30 03 FF FF */ addic r0, r3, -1 -/* 8003446C 000313AC 7C 60 19 10 */ subfe r3, r0, r3 -/* 80034470 000313B0 4E 80 00 20 */ blr - -.global dSv_letter_info_c_NS_onLetterReadFlag -dSv_letter_info_c_NS_onLetterReadFlag: -/* 80034474 000313B4 7C 80 2E 70 */ srawi r0, r4, 5 -/* 80034478 000313B8 54 00 10 3A */ slwi r0, r0, 2 -/* 8003447C 000313BC 7C C3 02 14 */ add r6, r3, r0 -/* 80034480 000313C0 80 A6 00 08 */ lwz r5, 8(r6) -/* 80034484 000313C4 38 60 00 01 */ li r3, 1 -/* 80034488 000313C8 54 80 06 FE */ clrlwi r0, r4, 0x1b -/* 8003448C 000313CC 7C 60 00 30 */ slw r0, r3, r0 -/* 80034490 000313D0 7C A0 03 78 */ or r0, r5, r0 -/* 80034494 000313D4 90 06 00 08 */ stw r0, 8(r6) -/* 80034498 000313D8 4E 80 00 20 */ blr - -.global dSv_letter_info_c_NS_isLetterReadFlag -dSv_letter_info_c_NS_isLetterReadFlag: -/* 8003449C 000313DC 7C 80 2E 70 */ srawi r0, r4, 5 -/* 800344A0 000313E0 54 00 10 3A */ slwi r0, r0, 2 -/* 800344A4 000313E4 7C 63 02 14 */ add r3, r3, r0 -/* 800344A8 000313E8 80 A3 00 08 */ lwz r5, 8(r3) -/* 800344AC 000313EC 38 60 00 01 */ li r3, 1 -/* 800344B0 000313F0 54 80 06 FE */ clrlwi r0, r4, 0x1b -/* 800344B4 000313F4 7C 60 00 30 */ slw r0, r3, r0 -/* 800344B8 000313F8 7C A3 00 38 */ and r3, r5, r0 -/* 800344BC 000313FC 30 03 FF FF */ addic r0, r3, -1 -/* 800344C0 00031400 7C 60 19 10 */ subfe r3, r0, r3 -/* 800344C4 00031404 4E 80 00 20 */ blr - -.global dSv_fishing_info_c_NS_init -dSv_fishing_info_c_NS_init: -/* 800344C8 00031408 38 E0 00 00 */ li r7, 0 -/* 800344CC 0003140C 38 80 00 00 */ li r4, 0 -/* 800344D0 00031410 7C 86 23 78 */ mr r6, r4 -/* 800344D4 00031414 7C 85 23 78 */ mr r5, r4 -/* 800344D8 00031418 38 00 00 10 */ li r0, 0x10 -/* 800344DC 0003141C 7C 09 03 A6 */ mtctr r0 -lbl_800344E0: -/* 800344E0 00031420 7C C3 23 2E */ sthx r6, r3, r4 -/* 800344E4 00031424 38 07 00 20 */ addi r0, r7, 0x20 -/* 800344E8 00031428 7C A3 01 AE */ stbx r5, r3, r0 -/* 800344EC 0003142C 38 E7 00 01 */ addi r7, r7, 1 -/* 800344F0 00031430 38 84 00 02 */ addi r4, r4, 2 -/* 800344F4 00031434 42 00 FF EC */ bdnz lbl_800344E0 -/* 800344F8 00031438 4E 80 00 20 */ blr -/* 800344FC 0003143C 54 85 0D FC */ rlwinm r5, r4, 1, 0x17, 0x1e -/* 80034500 00031440 7C 83 2A 2E */ lhzx r4, r3, r5 -/* 80034504 00031444 28 04 03 E7 */ cmplwi r4, 0x3e7 -/* 80034508 00031448 4C 80 00 20 */ bgelr -/* 8003450C 0003144C 38 04 00 01 */ addi r0, r4, 1 -/* 80034510 00031450 7C 03 2B 2E */ sthx r0, r3, r5 -/* 80034514 00031454 4E 80 00 20 */ blr - -.global dSv_player_info_c_NS_init -dSv_player_info_c_NS_init: -/* 80034518 00031458 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 8003451C 0003145C 7C 08 02 A6 */ mflr r0 -/* 80034520 00031460 90 01 00 14 */ stw r0, 0x14(r1) -/* 80034524 00031464 93 E1 00 0C */ stw r31, 0xc(r1) -/* 80034528 00031468 7C 7F 1B 78 */ mr r31, r3 -/* 8003452C 0003146C 3C 60 80 43 */ lis r3, lbl_80430188@ha -/* 80034530 00031470 38 63 01 88 */ addi r3, r3, lbl_80430188@l -/* 80034534 00031474 38 80 03 82 */ li r4, 0x382 -/* 80034538 00031478 38 BF 00 14 */ addi r5, r31, 0x14 -/* 8003453C 0003147C 38 C0 00 00 */ li r6, 0 -/* 80034540 00031480 48 1E 7D 11 */ bl dMeter2Info_c_NS_getString -/* 80034544 00031484 3C 60 80 43 */ lis r3, lbl_80430188@ha -/* 80034548 00031488 38 63 01 88 */ addi r3, r3, lbl_80430188@l -/* 8003454C 0003148C 38 80 03 83 */ li r4, 0x383 -/* 80034550 00031490 38 BF 00 25 */ addi r5, r31, 0x25 -/* 80034554 00031494 38 C0 00 00 */ li r6, 0 -/* 80034558 00031498 48 1E 7C F9 */ bl dMeter2Info_c_NS_getString -/* 8003455C 0003149C 38 60 00 00 */ li r3, 0 -/* 80034560 000314A0 90 7F 00 04 */ stw r3, 4(r31) -/* 80034564 000314A4 90 7F 00 00 */ stw r3, 0(r31) -/* 80034568 000314A8 90 7F 00 0C */ stw r3, 0xc(r31) -/* 8003456C 000314AC 90 7F 00 08 */ stw r3, 8(r31) -/* 80034570 000314B0 B0 7F 00 10 */ sth r3, 0x10(r31) -/* 80034574 000314B4 B0 7F 00 12 */ sth r3, 0x12(r31) -/* 80034578 000314B8 98 7F 00 36 */ stb r3, 0x36(r31) -/* 8003457C 000314BC 38 80 00 00 */ li r4, 0 -/* 80034580 000314C0 38 00 00 05 */ li r0, 5 -/* 80034584 000314C4 7C 09 03 A6 */ mtctr r0 -lbl_80034588: -/* 80034588 000314C8 38 04 00 37 */ addi r0, r4, 0x37 -/* 8003458C 000314CC 7C 7F 01 AE */ stbx r3, r31, r0 -/* 80034590 000314D0 38 84 00 01 */ addi r4, r4, 1 -/* 80034594 000314D4 42 00 FF F4 */ bdnz lbl_80034588 -/* 80034598 000314D8 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 8003459C 000314DC 80 01 00 14 */ lwz r0, 0x14(r1) -/* 800345A0 000314E0 7C 08 03 A6 */ mtlr r0 -/* 800345A4 000314E4 38 21 00 10 */ addi r1, r1, 0x10 -/* 800345A8 000314E8 4E 80 00 20 */ blr - -.global dSv_player_config_c_NS_init -dSv_player_config_c_NS_init: -/* 800345AC 000314EC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 800345B0 000314F0 7C 08 02 A6 */ mflr r0 -/* 800345B4 000314F4 90 01 00 14 */ stw r0, 0x14(r1) -/* 800345B8 000314F8 93 E1 00 0C */ stw r31, 0xc(r1) -/* 800345BC 000314FC 7C 7F 1B 78 */ mr r31, r3 -/* 800345C0 00031500 38 00 00 01 */ li r0, 1 -/* 800345C4 00031504 98 03 00 00 */ stb r0, 0(r3) -/* 800345C8 00031508 48 30 BF C9 */ bl OSGetSoundMode -/* 800345CC 0003150C 28 03 00 00 */ cmplwi r3, 0 -/* 800345D0 00031510 40 82 00 1C */ bne lbl_800345EC -/* 800345D4 00031514 38 00 00 00 */ li r0, 0 -/* 800345D8 00031518 98 1F 00 01 */ stb r0, 1(r31) -/* 800345DC 0003151C 80 6D 8D E8 */ lwz r3, lbl_80451368-_SDA_BASE_(r13) -/* 800345E0 00031520 38 80 00 00 */ li r4, 0 -/* 800345E4 00031524 48 29 92 A5 */ bl Z2AudioMgr_NS_setOutputMode -/* 800345E8 00031528 48 00 00 18 */ b lbl_80034600 -lbl_800345EC: -/* 800345EC 0003152C 38 00 00 01 */ li r0, 1 -/* 800345F0 00031530 98 1F 00 01 */ stb r0, 1(r31) -/* 800345F4 00031534 80 6D 8D E8 */ lwz r3, lbl_80451368-_SDA_BASE_(r13) -/* 800345F8 00031538 38 80 00 01 */ li r4, 1 -/* 800345FC 0003153C 48 29 92 8D */ bl Z2AudioMgr_NS_setOutputMode -lbl_80034600: -/* 80034600 00031540 38 80 00 00 */ li r4, 0 -/* 80034604 00031544 98 9F 00 02 */ stb r4, 2(r31) -/* 80034608 00031548 38 60 00 01 */ li r3, 1 -/* 8003460C 0003154C 98 7F 00 03 */ stb r3, 3(r31) -/* 80034610 00031550 98 9F 00 04 */ stb r4, 4(r31) -/* 80034614 00031554 98 9F 00 05 */ stb r4, 5(r31) -/* 80034618 00031558 98 9F 00 09 */ stb r4, 9(r31) -/* 8003461C 0003155C 38 00 01 5E */ li r0, 0x15e -/* 80034620 00031560 B0 1F 00 06 */ sth r0, 6(r31) -/* 80034624 00031564 98 9F 00 08 */ stb r4, 8(r31) -/* 80034628 00031568 98 9F 00 0A */ stb r4, 0xa(r31) -/* 8003462C 0003156C 98 7F 00 0B */ stb r3, 0xb(r31) -/* 80034630 00031570 83 E1 00 0C */ lwz r31, 0xc(r1) -/* 80034634 00031574 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80034638 00031578 7C 08 03 A6 */ mtlr r0 -/* 8003463C 0003157C 38 21 00 10 */ addi r1, r1, 0x10 -/* 80034640 00031580 4E 80 00 20 */ blr - .global dSv_player_config_c_NS_checkVibration dSv_player_config_c_NS_checkVibration: /* 80034644 00031584 94 21 FF F0 */ stwu r1, -0x10(r1) @@ -260,13 +76,13 @@ dSv_player_c_NS_init: /* 80034714 00031654 38 7F 01 14 */ addi r3, r31, 0x114 /* 80034718 00031658 4B FF FB C5 */ bl init__16dSv_light_drop_cFv /* 8003471C 0003165C 38 7F 01 1C */ addi r3, r31, 0x11c -/* 80034720 00031660 4B FF FC BD */ bl dSv_letter_info_c_NS_init +/* 80034720 00031660 4B FF FC BD */ bl init__17dSv_letter_info_cFv /* 80034724 00031664 38 7F 01 6C */ addi r3, r31, 0x16c -/* 80034728 00031668 4B FF FD A1 */ bl dSv_fishing_info_c_NS_init +/* 80034728 00031668 4B FF FD A1 */ bl init__18dSv_fishing_info_cFv /* 8003472C 0003166C 38 7F 01 A0 */ addi r3, r31, 0x1a0 -/* 80034730 00031670 4B FF FD E9 */ bl dSv_player_info_c_NS_init +/* 80034730 00031670 4B FF FD E9 */ bl init__17dSv_player_info_cFv /* 80034734 00031674 38 7F 01 E0 */ addi r3, r31, 0x1e0 -/* 80034738 00031678 4B FF FE 75 */ bl dSv_player_config_c_NS_init +/* 80034738 00031678 4B FF FE 75 */ bl init__19dSv_player_config_cFv /* 8003473C 0003167C 83 E1 00 0C */ lwz r31, 0xc(r1) /* 80034740 00031680 80 01 00 14 */ lwz r0, 0x14(r1) /* 80034744 00031684 7C 08 03 A6 */ mtlr r0 diff --git a/asm/d/menu/d_menu_letter.s b/asm/d/menu/d_menu_letter.s index 6e2b7f58b87..204968d30fc 100644 --- a/asm/d/menu/d_menu_letter.s +++ b/asm/d/menu/d_menu_letter.s @@ -1599,12 +1599,12 @@ lbl_801DE4D0: /* 801DE4D8 001DB418 3B 43 01 1C */ addi r26, r3, 0x11c /* 801DE4DC 001DB41C 7F 43 D3 78 */ mr r3, r26 /* 801DE4E0 001DB420 7F C4 F3 78 */ mr r4, r30 -/* 801DE4E4 001DB424 4B E5 5F B9 */ bl dSv_letter_info_c_NS_isLetterReadFlag +/* 801DE4E4 001DB424 4B E5 5F B9 */ bl isLetterReadFlag__17dSv_letter_info_cCFi /* 801DE4E8 001DB428 2C 03 00 00 */ cmpwi r3, 0 /* 801DE4EC 001DB42C 40 82 00 28 */ bne lbl_801DE514 /* 801DE4F0 001DB430 7F 43 D3 78 */ mr r3, r26 /* 801DE4F4 001DB434 7F C4 F3 78 */ mr r4, r30 -/* 801DE4F8 001DB438 4B E5 5F 7D */ bl dSv_letter_info_c_NS_onLetterReadFlag +/* 801DE4F8 001DB438 4B E5 5F 7D */ bl onLetterReadFlag__17dSv_letter_info_cFi /* 801DE4FC 001DB43C 38 80 00 00 */ li r4, 0 /* 801DE500 001DB440 88 1C 03 6E */ lbz r0, 0x36e(r28) /* 801DE504 001DB444 1C 00 00 14 */ mulli r0, r0, 0x14 @@ -4464,7 +4464,7 @@ lbl_801E0FAC: /* 801E0FC0 001DDF00 7C 9E 00 AE */ lbzx r4, r30, r0 /* 801E0FC4 001DDF04 38 04 FF FF */ addi r0, r4, -1 /* 801E0FC8 001DDF08 54 04 06 3E */ clrlwi r4, r0, 0x18 -/* 801E0FCC 001DDF0C 4B E5 34 D1 */ bl dSv_letter_info_c_NS_isLetterReadFlag +/* 801E0FCC 001DDF0C 4B E5 34 D1 */ bl isLetterReadFlag__17dSv_letter_info_cCFi /* 801E0FD0 001DDF10 2C 03 00 00 */ cmpwi r3, 0 /* 801E0FD4 001DDF14 40 82 00 18 */ bne lbl_801E0FEC /* 801E0FD8 001DDF18 38 80 00 01 */ li r4, 1 @@ -4582,7 +4582,7 @@ lbl_801E1160: /* 801E1174 001DE0B4 7C 9E 00 AE */ lbzx r4, r30, r0 /* 801E1178 001DE0B8 38 04 FF FF */ addi r0, r4, -1 /* 801E117C 001DE0BC 54 04 06 3E */ clrlwi r4, r0, 0x18 -/* 801E1180 001DE0C0 4B E5 33 1D */ bl dSv_letter_info_c_NS_isLetterReadFlag +/* 801E1180 001DE0C0 4B E5 33 1D */ bl isLetterReadFlag__17dSv_letter_info_cCFi /* 801E1184 001DE0C4 2C 03 00 00 */ cmpwi r3, 0 /* 801E1188 001DE0C8 40 82 00 18 */ bne lbl_801E11A0 /* 801E118C 001DE0CC 38 80 00 01 */ li r4, 1 @@ -4966,7 +4966,7 @@ lbl_801E16C4: lbl_801E16EC: /* 801E16EC 001DE62C 7F 83 E3 78 */ mr r3, r28 /* 801E16F0 001DE630 7F 44 D3 78 */ mr r4, r26 -/* 801E16F4 001DE634 4B E5 2D 35 */ bl dSv_letter_info_c_NS_onLetterGetFlag +/* 801E16F4 001DE634 4B E5 2D 35 */ bl onLetterGetFlag__17dSv_letter_info_cFi /* 801E16F8 001DE638 38 9A 00 01 */ addi r4, r26, 1 /* 801E16FC 001DE63C 57 63 06 3E */ clrlwi r3, r27, 0x18 /* 801E1700 001DE640 38 03 00 10 */ addi r0, r3, 0x10 diff --git a/asm/d/meter2/d_meter2_info.s b/asm/d/meter2/d_meter2_info.s index d600a58ef31..fc33b5aedbb 100644 --- a/asm/d/meter2/d_meter2_info.s +++ b/asm/d/meter2/d_meter2_info.s @@ -2957,7 +2957,7 @@ dMeter2Info_getRecieveLetterNum: lbl_8021E70C: /* 8021E70C 0021B64C 7F E3 FB 78 */ mr r3, r31 /* 8021E710 0021B650 7F A4 EB 78 */ mr r4, r29 -/* 8021E714 0021B654 4B E1 5D 39 */ bl dSv_letter_info_c_NS_isLetterGetFlag +/* 8021E714 0021B654 4B E1 5D 39 */ bl isLetterGetFlag__17dSv_letter_info_cCFi /* 8021E718 0021B658 2C 03 00 00 */ cmpwi r3, 0 /* 8021E71C 0021B65C 41 82 00 10 */ beq lbl_8021E72C /* 8021E720 0021B660 57 C3 06 3E */ clrlwi r3, r30, 0x18 @@ -2992,7 +2992,7 @@ dMeter2Info_getNewLetterNum: lbl_8021E784: /* 8021E784 0021B6C4 7F C3 F3 78 */ mr r3, r30 /* 8021E788 0021B6C8 7F 64 DB 78 */ mr r4, r27 -/* 8021E78C 0021B6CC 4B E1 5C C1 */ bl dSv_letter_info_c_NS_isLetterGetFlag +/* 8021E78C 0021B6CC 4B E1 5C C1 */ bl isLetterGetFlag__17dSv_letter_info_cCFi /* 8021E790 0021B6D0 2C 03 00 00 */ cmpwi r3, 0 /* 8021E794 0021B6D4 40 82 00 44 */ bne lbl_8021E7D8 /* 8021E798 0021B6D8 3C 60 80 3C */ lis r3, lbl_803BF81C@ha @@ -3041,7 +3041,7 @@ dMeter2Info_setNewLetterSender: lbl_8021E834: /* 8021E834 0021B774 7F 83 E3 78 */ mr r3, r28 /* 8021E838 0021B778 7F C4 F3 78 */ mr r4, r30 -/* 8021E83C 0021B77C 4B E1 5C 11 */ bl dSv_letter_info_c_NS_isLetterGetFlag +/* 8021E83C 0021B77C 4B E1 5C 11 */ bl isLetterGetFlag__17dSv_letter_info_cCFi /* 8021E840 0021B780 2C 03 00 00 */ cmpwi r3, 0 /* 8021E844 0021B784 40 82 00 6C */ bne lbl_8021E8B0 /* 8021E848 0021B788 3C 60 80 3C */ lis r3, lbl_803BF81C@ha @@ -3105,7 +3105,7 @@ dMeter2Info_recieveLetter: lbl_8021E914: /* 8021E914 0021B854 7F 83 E3 78 */ mr r3, r28 /* 8021E918 0021B858 7F C4 F3 78 */ mr r4, r30 -/* 8021E91C 0021B85C 4B E1 5B 31 */ bl dSv_letter_info_c_NS_isLetterGetFlag +/* 8021E91C 0021B85C 4B E1 5B 31 */ bl isLetterGetFlag__17dSv_letter_info_cCFi /* 8021E920 0021B860 2C 03 00 00 */ cmpwi r3, 0 /* 8021E924 0021B864 40 82 00 80 */ bne lbl_8021E9A4 /* 8021E928 0021B868 3C 60 80 3C */ lis r3, lbl_803BF81C@ha @@ -3125,7 +3125,7 @@ lbl_8021E914: /* 8021E960 0021B8A0 41 82 00 44 */ beq lbl_8021E9A4 /* 8021E964 0021B8A4 7F 83 E3 78 */ mr r3, r28 /* 8021E968 0021B8A8 7F C4 F3 78 */ mr r4, r30 -/* 8021E96C 0021B8AC 4B E1 5A BD */ bl dSv_letter_info_c_NS_onLetterGetFlag +/* 8021E96C 0021B8AC 4B E1 5A BD */ bl onLetterGetFlag__17dSv_letter_info_cFi /* 8021E970 0021B8B0 57 E3 06 3E */ clrlwi r3, r31, 0x18 /* 8021E974 0021B8B4 38 63 00 10 */ addi r3, r3, 0x10 /* 8021E978 0021B8B8 7C 1C 18 AE */ lbzx r0, r28, r3 diff --git a/include/d_save.h b/include/d_save.h index 75b6ebd31d2..06640653ebe 100644 --- a/include/d_save.h +++ b/include/d_save.h @@ -339,7 +339,7 @@ class dSv_letter_info_c { bool isLetterReadFlag(int) const; private: - u8 letter_read_flags[16]; + u32 letter_read_flags[4]; u8 unk16[64]; }; @@ -349,7 +349,7 @@ class dSv_fishing_info_c { void addFishCount(u8); // merged with init in the assembly private: - u8 unk0[32]; + u16 fish_count[16]; u8 unk32[16]; u8 padding[4]; }; @@ -359,12 +359,12 @@ class dSv_player_info_c { void init(void); private: - u8 unk0[4]; - u8 unk4[4]; - u8 unk8[4]; - u8 unk12[4]; - u8 unk16[2]; - u8 unk18[2]; + u32 unk0; + u32 unk4; + u32 unk8; + u32 unk12; + u16 unk16; + u16 unk18; u8 link_name[16]; u8 unk36; u8 epona_name[16]; diff --git a/include/func_80034428.s b/include/func_80034428.s new file mode 100644 index 00000000000..3ac6464d12e --- /dev/null +++ b/include/func_80034428.s @@ -0,0 +1,9 @@ +/* 80034428 00031368 7C 80 2E 70 */ srawi r0, r4, 5 +/* 8003442C 0003136C 54 07 10 3A */ slwi r7, r0, 2 +/* 80034430 00031370 7C C3 38 2E */ lwzx r6, r3, r7 +/* 80034434 00031374 38 A0 00 01 */ li r5, 1 +/* 80034438 00031378 54 80 06 FE */ clrlwi r0, r4, 0x1b +/* 8003443C 0003137C 7C A0 00 30 */ slw r0, r5, r0 +/* 80034440 00031380 7C C0 03 78 */ or r0, r6, r0 +/* 80034444 00031384 7C 03 39 2E */ stwx r0, r3, r7 +/* 80034448 00031388 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/func_8003444C.s b/include/func_8003444C.s new file mode 100644 index 00000000000..c5e4a8bffcb --- /dev/null +++ b/include/func_8003444C.s @@ -0,0 +1,10 @@ +/* 8003444C 0003138C 38 A0 00 01 */ li r5, 1 +/* 80034450 00031390 54 80 06 FE */ clrlwi r0, r4, 0x1b +/* 80034454 00031394 7C A5 00 30 */ slw r5, r5, r0 +/* 80034458 00031398 7C 80 2E 70 */ srawi r0, r4, 5 +/* 8003445C 0003139C 54 00 10 3A */ slwi r0, r0, 2 +/* 80034460 000313A0 7C 03 00 2E */ lwzx r0, r3, r0 +/* 80034464 000313A4 7C A3 00 38 */ and r3, r5, r0 +/* 80034468 000313A8 30 03 FF FF */ addic r0, r3, -1 +/* 8003446C 000313AC 7C 60 19 10 */ subfe r3, r0, r3 +/* 80034470 000313B0 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/func_80034474.s b/include/func_80034474.s new file mode 100644 index 00000000000..69e60135bc2 --- /dev/null +++ b/include/func_80034474.s @@ -0,0 +1,10 @@ +/* 80034474 000313B4 7C 80 2E 70 */ srawi r0, r4, 5 +/* 80034478 000313B8 54 00 10 3A */ slwi r0, r0, 2 +/* 8003447C 000313BC 7C C3 02 14 */ add r6, r3, r0 +/* 80034480 000313C0 80 A6 00 08 */ lwz r5, 8(r6) +/* 80034484 000313C4 38 60 00 01 */ li r3, 1 +/* 80034488 000313C8 54 80 06 FE */ clrlwi r0, r4, 0x1b +/* 8003448C 000313CC 7C 60 00 30 */ slw r0, r3, r0 +/* 80034490 000313D0 7C A0 03 78 */ or r0, r5, r0 +/* 80034494 000313D4 90 06 00 08 */ stw r0, 8(r6) +/* 80034498 000313D8 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/func_8003449C.s b/include/func_8003449C.s new file mode 100644 index 00000000000..37e8d3bc724 --- /dev/null +++ b/include/func_8003449C.s @@ -0,0 +1,11 @@ +/* 8003449C 000313DC 7C 80 2E 70 */ srawi r0, r4, 5 +/* 800344A0 000313E0 54 00 10 3A */ slwi r0, r0, 2 +/* 800344A4 000313E4 7C 63 02 14 */ add r3, r3, r0 +/* 800344A8 000313E8 80 A3 00 08 */ lwz r5, 8(r3) +/* 800344AC 000313EC 38 60 00 01 */ li r3, 1 +/* 800344B0 000313F0 54 80 06 FE */ clrlwi r0, r4, 0x1b +/* 800344B4 000313F4 7C 60 00 30 */ slw r0, r3, r0 +/* 800344B8 000313F8 7C A3 00 38 */ and r3, r5, r0 +/* 800344BC 000313FC 30 03 FF FF */ addic r0, r3, -1 +/* 800344C0 00031400 7C 60 19 10 */ subfe r3, r0, r3 +/* 800344C4 00031404 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/func_800344FC.s b/include/func_800344FC.s new file mode 100644 index 00000000000..ee14c3a72d7 --- /dev/null +++ b/include/func_800344FC.s @@ -0,0 +1,7 @@ +/* 800344FC 0003143C 54 85 0D FC */ rlwinm r5, r4, 1, 0x17, 0x1e +/* 80034500 00031440 7C 83 2A 2E */ lhzx r4, r3, r5 +/* 80034504 00031444 28 04 03 E7 */ cmplwi r4, 0x3e7 +/* 80034508 00031448 4C 80 00 20 */ bgelr +/* 8003450C 0003144C 38 04 00 01 */ addi r0, r4, 1 +/* 80034510 00031450 7C 03 2B 2E */ sthx r0, r3, r5 +/* 80034514 00031454 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/func_80034518.s b/include/func_80034518.s new file mode 100644 index 00000000000..cdfdcd69dc3 --- /dev/null +++ b/include/func_80034518.s @@ -0,0 +1,38 @@ +/* 80034518 00031458 94 21 FF F0 */ stwu r1, -0x10(r1) +/* 8003451C 0003145C 7C 08 02 A6 */ mflr r0 +/* 80034520 00031460 90 01 00 14 */ stw r0, 0x14(r1) +/* 80034524 00031464 93 E1 00 0C */ stw r31, 0xc(r1) +/* 80034528 00031468 7C 7F 1B 78 */ mr r31, r3 +/* 8003452C 0003146C 3C 60 80 43 */ lis r3, lbl_80430188@ha +/* 80034530 00031470 38 63 01 88 */ addi r3, r3, lbl_80430188@l +/* 80034534 00031474 38 80 03 82 */ li r4, 0x382 +/* 80034538 00031478 38 BF 00 14 */ addi r5, r31, 0x14 +/* 8003453C 0003147C 38 C0 00 00 */ li r6, 0 +/* 80034540 00031480 48 1E 7D 11 */ bl dMeter2Info_c_NS_getString +/* 80034544 00031484 3C 60 80 43 */ lis r3, lbl_80430188@ha +/* 80034548 00031488 38 63 01 88 */ addi r3, r3, lbl_80430188@l +/* 8003454C 0003148C 38 80 03 83 */ li r4, 0x383 +/* 80034550 00031490 38 BF 00 25 */ addi r5, r31, 0x25 +/* 80034554 00031494 38 C0 00 00 */ li r6, 0 +/* 80034558 00031498 48 1E 7C F9 */ bl dMeter2Info_c_NS_getString +/* 8003455C 0003149C 38 60 00 00 */ li r3, 0 +/* 80034560 000314A0 90 7F 00 04 */ stw r3, 4(r31) +/* 80034564 000314A4 90 7F 00 00 */ stw r3, 0(r31) +/* 80034568 000314A8 90 7F 00 0C */ stw r3, 0xc(r31) +/* 8003456C 000314AC 90 7F 00 08 */ stw r3, 8(r31) +/* 80034570 000314B0 B0 7F 00 10 */ sth r3, 0x10(r31) +/* 80034574 000314B4 B0 7F 00 12 */ sth r3, 0x12(r31) +/* 80034578 000314B8 98 7F 00 36 */ stb r3, 0x36(r31) +/* 8003457C 000314BC 38 80 00 00 */ li r4, 0 +/* 80034580 000314C0 38 00 00 05 */ li r0, 5 +/* 80034584 000314C4 7C 09 03 A6 */ mtctr r0 +lbl_80034588: +/* 80034588 000314C8 38 04 00 37 */ addi r0, r4, 0x37 +/* 8003458C 000314CC 7C 7F 01 AE */ stbx r3, r31, r0 +/* 80034590 000314D0 38 84 00 01 */ addi r4, r4, 1 +/* 80034594 000314D4 42 00 FF F4 */ bdnz lbl_80034588 +/* 80034598 000314D8 83 E1 00 0C */ lwz r31, 0xc(r1) +/* 8003459C 000314DC 80 01 00 14 */ lwz r0, 0x14(r1) +/* 800345A0 000314E0 7C 08 03 A6 */ mtlr r0 +/* 800345A4 000314E4 38 21 00 10 */ addi r1, r1, 0x10 +/* 800345A8 000314E8 4E 80 00 20 */ blr \ No newline at end of file diff --git a/include/functions.h b/include/functions.h index 4aae75ff74e..f2ef283cad6 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1,3 +1,7 @@ +class JMSMesgEntry_c { + +}; + extern "C" { void init__20dSv_player_collect_cFv(void); void dComIfGp_setSelectItem(int); @@ -31,4 +35,7 @@ extern "C" { void setBombNum__24dSv_player_item_record_cFUcUc(void); void getBombNum__21dSv_player_item_max_cCFUc(void); void setItem__17dSv_player_item_cFiUc(void); + void dMeter2Info_c_NS_getString(void); + u32 OSGetSoundMode(void); + void Z2AudioMgr_NS_setOutputMode(u32,unsigned long); } \ No newline at end of file diff --git a/include/variables.h b/include/variables.h index 9b5b5f94e78..a22071e50ef 100644 --- a/include/variables.h +++ b/include/variables.h @@ -5,4 +5,5 @@ extern float lbl_80451D58; extern u8 lbl_803A7270[24]; extern u8 lbl_80430188[16]; extern u8 lbl_803A7288; +extern u32 lbl_80451368; #define _SDA2_BASE_(dummy) 0 \ No newline at end of file diff --git a/ldscript.lcf b/ldscript.lcf index 263db169d0d..86ce690bfa5 100644 --- a/ldscript.lcf +++ b/ldscript.lcf @@ -28,6 +28,7 @@ SECTIONS { FORCEACTIVE { set__17dSv_horse_place_cFPCcRC4cXyzsSc setLightDropNum__16dSv_light_drop_cFUcUc + addFishCount__18dSv_fishing_info_cFUc } /* .init 80003100 - 80005600 diff --git a/src/d/d_save/d_save.cpp b/src/d/d_save/d_save.cpp index 61802f74daf..75a9b2b34e6 100644 --- a/src/d/d_save/d_save.cpp +++ b/src/d/d_save/d_save.cpp @@ -105,7 +105,6 @@ void dSv_player_status_b_c::init() { } void dSv_player_status_b_c::onDarkClearLV(int flagOnOff) { - dark_clear_level_flag = dark_clear_level_flag | (u8)(1 << flagOnOff); } @@ -193,16 +192,18 @@ void dSv_player_field_last_stay_info_c::onRegionBit(int i_region_bit) { } // this is close -// bool dSv_player_field_last_stay_info_c::isRegionBit(int param_1) const { -// if ((param_1 >= 0) && (param_1 < 8)) { -// return (last_region & (1 << (u8)param_1)) ? 1 : 0; -// } -// } - -asm bool dSv_player_field_last_stay_info_c::isRegionBit(int unk) const { +#ifdef NONMATCHING +bool dSv_player_field_last_stay_info_c::isRegionBit(int param_1) const { + if ((param_1 >= 0) && (param_1 < 8)) { + return (last_region & (1 << (u8)param_1)) ? 1 : 0; + } +} +#else +asm bool dSv_player_field_last_stay_info_c::isRegionBit(int param_1) const { nofralloc #include "func_80032E78.s" } +#endif void dSv_player_last_mark_info_c::init(void) { float position; @@ -243,97 +244,101 @@ asm void dSv_player_item_c::setItem(int current_items_index, u8 new_items_index) #include "func_80032FB8.s" } -// u8 dSv_player_item_c::getItem(int param_1, bool param_2) const { -// int IVar1; -// int IVar2; -// u8 current_select_item_index; +#ifdef NONMATCHING +u8 dSv_player_item_c::getItem(int param_1, bool param_2) const { + int IVar1; + int IVar2; + u8 current_select_item_index; -// if (param_1 < 0x18) { -// if (param_2 != false) { -// for (int select_item_index = 0; select_item_index < 2; select_item_index++) { -// current_select_item_index = getSelectItemIndex(select_item_index); -// if (((param_1 == (current_select_item_index)) || -// (current_select_item_index = dComIfGs_getMixItemIndex(select_item_index), param_1 == (current_select_item_index))) && -// (current_select_item_index = dComIfGs_getMixItemIndex(select_item_index), (current_select_item_index) != NO_ITEM)) { -// current_select_item_index = getSelectItemIndex(select_item_index); -// IVar1 = items[current_select_item_index]; -// current_select_item_index = dComIfGs_getMixItemIndex(select_item_index); -// IVar2 = items[current_select_item_index]; -// if (((IVar1 == HEROS_BOW) && (IVar2 == REGULAR_BOMBS)) || -// ((IVar2 == HEROS_BOW && (IVar1 == REGULAR_BOMBS)))) { -// return 0x59; -// } -// if (((IVar1 == HEROS_BOW) && (IVar2 == WATER_BOMBS)) || -// ((IVar2 == HEROS_BOW && (IVar1 == WATER_BOMBS)))) { -// return 0x59; -// } -// if (((IVar1 == HEROS_BOW) && (IVar2 == BOMBLINGS)) || -// ((IVar2 == HEROS_BOW && (IVar1 == BOMBLINGS)))) { -// return 0x59; -// } -// if (((IVar1 == HEROS_BOW) && (IVar2 == HAWKEYE)) || -// ((IVar2 == HEROS_BOW && (IVar1 == HAWKEYE)))) { -// return 0x5a; -// } -// if (((IVar1 == FISHING_ROD) && (IVar2 == BEE_LARVA)) || -// ((IVar2 == FISHING_ROD && (IVar1 == BEE_LARVA)))) { -// return 0x5b; -// } -// if (((IVar1 == FISHING_ROD) && (IVar2 == ZORAS_JEWEL)) || -// ((IVar2 == FISHING_ROD && (IVar1 == ZORAS_JEWEL)))) { -// return 0x5c; -// } -// if (((IVar1 == FISHING_ROD) && (IVar2 == WORM)) || -// ((IVar2 == FISHING_ROD && (IVar1 == WORM)))) { -// return 0x5d; -// } -// if (((select_item_index == 0x3) && -// (current_select_item_index = getSelectItemIndex(0x3), -// (current_select_item_index & 0xff) == 0x0)) && -// (current_select_item_index = dComIfGs_getMixItemIndex(0x3), (current_select_item_index & 0xff) == 0x0)) { -// dComIfGs_setSelectItemIndex(0x3, -0x1); -// dComIfGs_setMixItemIndex(0x3, -0x1); -// return 0xff; -// } -// OSReport_Error(lbl_8037923d, (unsigned int)IVar1, (unsigned int)IVar2); -// } -// } -// } -// current_select_item_index = (unsigned int)items[param_1]; -// } else { -// current_select_item_index = NO_ITEM; -// } -// return current_select_item_index; -// } - -asm u8 dSv_player_item_c::getItem(int, bool) const { + if (param_1 < 0x18) { + if (param_2 != false) { + for (int select_item_index = 0; select_item_index < 2; select_item_index++) { + current_select_item_index = getSelectItemIndex(select_item_index); + if (((param_1 == (current_select_item_index)) || + (current_select_item_index = dComIfGs_getMixItemIndex(select_item_index), param_1 == (current_select_item_index))) && + (current_select_item_index = dComIfGs_getMixItemIndex(select_item_index), (current_select_item_index) != NO_ITEM)) { + current_select_item_index = getSelectItemIndex(select_item_index); + IVar1 = items[current_select_item_index]; + current_select_item_index = dComIfGs_getMixItemIndex(select_item_index); + IVar2 = items[current_select_item_index]; + if (((IVar1 == HEROS_BOW) && (IVar2 == REGULAR_BOMBS)) || + ((IVar2 == HEROS_BOW && (IVar1 == REGULAR_BOMBS)))) { + return 0x59; + } + if (((IVar1 == HEROS_BOW) && (IVar2 == WATER_BOMBS)) || + ((IVar2 == HEROS_BOW && (IVar1 == WATER_BOMBS)))) { + return 0x59; + } + if (((IVar1 == HEROS_BOW) && (IVar2 == BOMBLINGS)) || + ((IVar2 == HEROS_BOW && (IVar1 == BOMBLINGS)))) { + return 0x59; + } + if (((IVar1 == HEROS_BOW) && (IVar2 == HAWKEYE)) || + ((IVar2 == HEROS_BOW && (IVar1 == HAWKEYE)))) { + return 0x5a; + } + if (((IVar1 == FISHING_ROD) && (IVar2 == BEE_LARVA)) || + ((IVar2 == FISHING_ROD && (IVar1 == BEE_LARVA)))) { + return 0x5b; + } + if (((IVar1 == FISHING_ROD) && (IVar2 == ZORAS_JEWEL)) || + ((IVar2 == FISHING_ROD && (IVar1 == ZORAS_JEWEL)))) { + return 0x5c; + } + if (((IVar1 == FISHING_ROD) && (IVar2 == WORM)) || + ((IVar2 == FISHING_ROD && (IVar1 == WORM)))) { + return 0x5d; + } + if (((select_item_index == 0x3) && + (current_select_item_index = getSelectItemIndex(0x3), + (current_select_item_index & 0xff) == 0x0)) && + (current_select_item_index = dComIfGs_getMixItemIndex(0x3), (current_select_item_index & 0xff) == 0x0)) { + dComIfGs_setSelectItemIndex(0x3, -0x1); + dComIfGs_setMixItemIndex(0x3, -0x1); + return 0xff; + } + OSReport_Error(lbl_8037923d, (unsigned int)IVar1, (unsigned int)IVar2); + } + } + } + current_select_item_index = (unsigned int)items[param_1]; + } else { + current_select_item_index = NO_ITEM; + } + return current_select_item_index; +} +#else +asm u8 dSv_player_item_c::getItem(int param_1, bool param_2) const { nofralloc #include "func_80033030.s" } +#endif // this is close -// void dSv_player_item_c::setLineUpItem(void) { -// u8* i_item_lst; +#ifdef NONMATCHING +void dSv_player_item_c::setLineUpItem(void) { + u8* i_item_lst; -// for (int i = 0; i < 24; i++) { -// item_slots[i] = 0xFF; -// } + for (int i = 0; i < 24; i++) { + item_slots[i] = 0xFF; + } -// i_item_lst = lbl_803A7270; - -// for (int i = 0; i < 23; i++) { -// if (items[*i_item_lst] != 0xFF) { -// item_slots[i] = *i_item_lst; -// } -// i_item_lst++; -// } -// } + i_item_lst = lbl_803A7270; + for (int i = 0; i < 23; i++) { + if (items[*i_item_lst] != 0xFF) { + item_slots[i] = *i_item_lst; + } + i_item_lst++; + } +} +#else asm void dSv_player_item_c::setLineUpItem(void) { nofralloc #include "func_800332F8.s" } +#endif u8 dSv_player_item_c::getLineUpItem(int slot_number) const { if (slot_number < MAX_ITEM_SLOTS) { @@ -342,46 +347,50 @@ u8 dSv_player_item_c::getLineUpItem(int slot_number) const { return NO_ITEM; } -// void dSv_player_item_c::setBottleItemIn(u8 i_item_id_1, u8 i_item_id_2){ -// u8 current_item_index; -// u8 new_item_index; +#ifdef NONMATCHING +void dSv_player_item_c::setBottleItemIn(u8 i_item_id_1, u8 i_item_id_2){ + u8 current_item_index; + u8 new_item_index; -// current_item_index = dSv_item_rename(i_item_id_1); -// new_item_index = dSv_item_rename(i_item_id_2); + current_item_index = dSv_item_rename(i_item_id_1); + new_item_index = dSv_item_rename(i_item_id_2); -// for (int i = 0; i < 4; i++) { -// // sanitize input to make sure it's only a bottle -// if (current_item_index == items[i+11]) { -// setItem(i+11,new_item_index); -// // if hotsprings water, turn on the timer -// if (new_item_index == 107) { -// setHotSpringTimer(i+11); -// } -// for (int j = 0; j < 4; j++) { -// j = getSelectItemIndex(i); -// if (i+11 == j) { -// dComIfGp_setSelectItem(j); -// } -// } -// } -// } -// } - -asm void dSv_player_item_c::setBottleItemIn(u8, u8){ + for (int i = 0; i < 4; i++) { + // sanitize input to make sure it's only a bottle + if (current_item_index == items[i+11]) { + setItem(i+11,new_item_index); + // if hotsprings water, turn on the timer + if (new_item_index == 107) { + setHotSpringTimer(i+11); + } + for (int j = 0; j < 4; j++) { + j = getSelectItemIndex(i); + if (i+11 == j) { + dComIfGp_setSelectItem(j); + } + } + } + } +} +#else +asm void dSv_player_item_c::setBottleItemIn(u8 i_item_id_1, u8 i_item_id_2){ nofralloc #include "func_80033370.s" } +#endif // this is 1 instruction off -// void dSv_player_item_c::setEmptyBottleItemIn(u8 i_item_id){ -// u8 item_id = (dSv_item_rename(i_item_id)); -// setBottleItemIn(96,item_id); -// } - -asm void dSv_player_item_c::setEmptyBottleItemIn(u8){ +#ifdef NONMATCHING +void dSv_player_item_c::setEmptyBottleItemIn(u8 i_item_id){ + u8 item_id = (dSv_item_rename(i_item_id)); + setBottleItemIn(96,item_id); +} +#else +asm void dSv_player_item_c::setEmptyBottleItemIn(u8 i_item_id){ nofralloc #include "func_80033450.s" } +#endif asm void dSv_player_item_c::setEmptyBottle(void) { nofralloc @@ -450,26 +459,28 @@ void dSv_player_item_c::setEmptyBombBagItemIn(u8 param_1,u8 param_2, bool param_ } // this is a few instructions off -// void dSv_player_item_c::setEmptyBombBag(void) { +#ifdef NONMATCHING +void dSv_player_item_c::setEmptyBombBag(void) { -// int current_item_index; -// u8 uVar1; + int current_item_index; + u8 uVar1; -// for (int i = 0; i < 3; i++) { -// current_item_index = (u8)(i + 15); -// uVar1 = getItem(current_item_index,true); - -// if (uVar1 == 0xff) { -// setItem(current_item_index,80); -// return; -// } -// } -// } + for (int i = 0; i < 3; i++) { + current_item_index = (u8)(i + 15); + uVar1 = getItem(current_item_index,true); + if (uVar1 == 0xff) { + setItem(current_item_index,80); + return; + } + } +} +#else asm void dSv_player_item_c::setEmptyBombBag(void) { nofralloc #include "func_80033A88.s" } +#endif asm void dSv_player_item_c::setEmptyBombBag(u8, u8) { nofralloc @@ -477,21 +488,23 @@ asm void dSv_player_item_c::setEmptyBombBag(u8, u8) { } // this is a few instructions off -// u8 dSv_player_item_c::checkBombBag(u8 param_1) { -// u8 ok = 0; - -// for (int i = 0; i < 3; i++) { -// if (param_1 == this->items[i + 15]) { -// ok = ok + 0x1; -// } -// } -// return ok; -// } +#ifdef NONMATCHING +u8 dSv_player_item_c::checkBombBag(u8 param_1) { + u8 ok = 0; + for (int i = 0; i < 3; i++) { + if (param_1 == this->items[i + 15]) { + ok = ok + 0x1; + } + } + return ok; +} +#else asm u8 dSv_player_item_c::checkBombBag(u8 param_1) { nofralloc #include "func_80033BEC.s" } +#endif asm void dSv_player_item_c::setWarashibeItem(u8) { nofralloc @@ -522,31 +535,33 @@ void dSv_player_item_c::setRodTypeLevelUp(void) { } // this is a few instructions off -// void dSv_player_item_c::setBaitItem(u8 param_1) { -// switch (param_1) { -// case BEE_LARVA: { -// isFirstBit(61) ? this->items[0x14] = ROD_CORAL_EARRING_BEE_LARVA : this->items[0x14] = ROD_BEE_LARVA; -// break; -// } -// case WORM: { -// isFirstBit(61) ? this->items[0x14] = ROD_CORAL_EARRING_WORM : this->items[0x14] = ROD_WORM; -// break; -// } -// case NO_ITEM: { -// isFirstBit(61) ? this->items[0x14] = ROD_CORAL_EARRING : this->items[0x14] = FISHING_ROD; -// break; -// } -// } - -// for (int i = 0; i < 4; i++) { -// dComIfGp_setSelectItem(i); -// } -// } +#ifdef NONMATCHING +void dSv_player_item_c::setBaitItem(u8 param_1) { + switch (param_1) { + case BEE_LARVA: { + isFirstBit(61) ? this->items[0x14] = ROD_CORAL_EARRING_BEE_LARVA : this->items[0x14] = ROD_BEE_LARVA; + break; + } + case WORM: { + isFirstBit(61) ? this->items[0x14] = ROD_CORAL_EARRING_WORM : this->items[0x14] = ROD_WORM; + break; + } + case NO_ITEM: { + isFirstBit(61) ? this->items[0x14] = ROD_CORAL_EARRING : this->items[0x14] = FISHING_ROD; + break; + } + } + for (int i = 0; i < 4; i++) { + dComIfGp_setSelectItem(i); + } +} +#else asm void dSv_player_item_c::setBaitItem(u8 param_1) { nofralloc #include "func_80033D40.s" } +#endif void dSv_player_get_item_c::init(void) { for (int i = 0; i < 8; i++) { @@ -628,26 +643,28 @@ void dSv_player_item_max_c::setBombNum(u8 bomb_id,u8 bomb_max) { } // this is close, the isFirstBit keeps screwing everything up :( -// u8 dSv_player_item_max_c::getBombNum(u8 param_1) const { -// u8 iVar3; +#ifdef NONMATCHING +u8 dSv_player_item_max_c::getBombNum(u8 param_1) const { + u8 iVar3; -// iVar3 = 0x1; -// if (isFirstBit(79)) { -// iVar3 = 0x2; -// } - -// switch (param_1) { -// case WATER_BOMBS: return (u8)(this->bomb_bags_ammo_max[0x1] * iVar3); -// case REGULAR_BOMBS: return (u8)(this->bomb_bags_ammo_max[0x1] * iVar3); -// case BOMBLINGS: return (u8)(this->unk_ammo_max[0x2] * iVar3); -// default: return 0; -// } -// } + iVar3 = 0x1; + if (isFirstBit(79)) { + iVar3 = 0x2; + } + switch (param_1) { + case WATER_BOMBS: return (u8)(this->bomb_bags_ammo_max[0x1] * iVar3); + case REGULAR_BOMBS: return (u8)(this->bomb_bags_ammo_max[0x1] * iVar3); + case BOMBLINGS: return (u8)(this->unk_ammo_max[0x2] * iVar3); + default: return 0; + } +} +#else asm u8 dSv_player_item_max_c::getBombNum(u8 param_1) const { nofralloc #include "func_800340F8.s" } +#endif void dSv_player_collect_c::init(void) { @@ -663,14 +680,16 @@ void dSv_player_collect_c::init(void) { } // very close -// void dSv_player_collect_c::setCollect(int param_1, u8 param_2) { -// this->unk0[param_1] = this->unk0[param_1] | (u8)(1 << param_2); -// } - +#ifdef NONMATCHING +void dSv_player_collect_c::setCollect(int param_1, u8 param_2) { + this->unk0[param_1] = this->unk0[param_1] | (u8)(1 << param_2); +} +#else asm void dSv_player_collect_c::setCollect(int param_1, u8 param_2) { nofralloc #include "func_800341E8.s" } +#endif bool dSv_player_collect_c::isCollect(int param_1, u8 param_2) const { return this->unk0[param_1] & (u8)(1 << param_2) ? true : false; @@ -738,4 +757,145 @@ bool dSv_light_drop_c::isLightDropGetFlag(u8 param_1) const { return 0; } return this->light_drop_get_flag & (u8)(1 << param_1) ? true : false; -} \ No newline at end of file +} + +void dSv_letter_info_c::init(void) { + for (int i = 0; i < 2; i++) { + this->letter_read_flags[i] = 0; + this->letter_read_flags[i + 2] = 0; + } + + for (int i = 0; i < 64; i++) { + this->unk16[i] = 0; + } +} + +// close +#ifdef NONMATCHING +void dSv_letter_info_c::onLetterGetFlag(int param_1) { + this->letter_read_flags[param_1 >> 0x5] = this->letter_read_flags[param_1 >> 0x5] | 0x1 << (param_1 & 0x1fU); +} +#else +asm void dSv_letter_info_c::onLetterGetFlag(int param_1) { + nofralloc + #include "func_80034428.s" +} +#endif + +#ifdef NONMATCHING +bool dSv_letter_info_c::isLetterGetFlag(int param_1) const { + return this->letter_read_flags[param_1 >> 0x5] & (u8)(1 << param_1) ? true : false; +} +#else +asm bool dSv_letter_info_c::isLetterGetFlag(int param_1) const { + nofralloc + #include "func_8003444C.s" +} +#endif + +#ifdef NONMATCHING +void dSv_letter_info_c::onLetterReadFlag(int param_1) { + (this->letter_read_flags + (param_1 >> 0x5))[0x2] = (this->letter_read_flags + (param_1 >> 0x5))[0x2] | 0x1 << (u8)(param_1); +} +#else +asm void dSv_letter_info_c::onLetterReadFlag(int param_1) { + nofralloc + #include "func_80034474.s" +} +#endif + +#ifdef NONMATCHING +asm bool isLetterReadFlag(int) const { + +} +#else +asm bool dSv_letter_info_c::isLetterReadFlag(int) const { + nofralloc + #include "func_8003449C.s" +} +#endif + +void dSv_fishing_info_c::init(void) { + for (int i = 0; i < 16; i++) { + this->fish_count[i] = 0; + this->unk32[i] = 0; + } +} + +// instructions are right but registers are wrong +#ifdef NONMATCHING +void dSv_fishing_info_c::addFishCount(u8 fish_index) { + if (this->fish_count[fish_index] < 999) { + this->fish_count[fish_index] = this->fish_count[fish_index] + 1; + } +} +#else +asm void dSv_fishing_info_c::addFishCount(u8 fish_index) { + nofralloc + #include "func_800344FC.s" +} +#endif + +// a few instructions off +#ifdef NONMATCHING +namespace d_meter2_info { + class dMeter2Info_c { + public: + void getString(unsigned long, char*, JMSMesgEntry_c *); + }; +} + +void dSv_player_info_c::init(void) { + unsigned long a = 0x382; + unsigned long b = 0x383; + + JMSMesgEntry_c* c = 0; + JMSMesgEntry_c* d = 0; + + d_meter2_info::dMeter2Info_c ok; + + ok.getString(a,(char*)this->link_name,c); + ok.getString(b,(char*)this->epona_name,d); + + this->unk4 = 0; + this->unk0 = 0; + this->unk12 = 0; + this->unk8 = 0; + this->unk16 = 0; + this->unk18 = 0; + this->unk54 = 0; + + for (int i = 0; i < 5; i++) { + this->unk55[i] = 0; + } +} +#else +asm void dSv_player_info_c::init(void) { + nofralloc + #include "func_80034518.s" +} +#endif + +void dSv_player_config_c::init(void) { + u32 os_sound_mode; + + this->unk0 = 1; + os_sound_mode = OSGetSoundMode(); + if (os_sound_mode == 0) { + this->sound_mode = 0; + Z2AudioMgr_NS_setOutputMode(lbl_80451368,0); + } else { + this->sound_mode = 1; + Z2AudioMgr_NS_setOutputMode(lbl_80451368,1); + } + + this->unk2 = 0; + this->vibration_status = 1; + this->unk4 = 0; + this->unk5 = 0; + this->unk9 = 0; + this->unk6 = 0x15e; + this->unk8 = 0; + this->unk10 = 0; + this->unk11 = 1; +}