diff --git a/asm/non_matchings/code/code_800EC960/func_800EDD68.s b/asm/non_matchings/code/code_800EC960/func_800EDD68.s index 7eaae4bfc8..bbb66a9965 100644 --- a/asm/non_matchings/code/code_800EC960/func_800EDD68.s +++ b/asm/non_matchings/code/code_800EC960/func_800EDD68.s @@ -8,9 +8,9 @@ glabel func_800EDD68 /* B64F20 800EDD80 AFA40020 */ sw $a0, 0x20($sp) /* B64F24 800EDD84 15C10004 */ bne $t6, $at, .L800EDD98 /* B64F28 800EDD88 3C028013 */ lui $v0, %hi(D_80131864) # $v0, 0x8013 -/* B64F2C 800EDD8C 3C048013 */ lui $a0, %hi(D_80131BE4) # $a0, 0x8013 +/* B64F2C 800EDD8C 3C048013 */ lui $a0, %hi(gScarecrowCustomSongPtr) # $a0, 0x8013 /* B64F30 800EDD90 10000003 */ b .L800EDDA0 -/* B64F34 800EDD94 8C841BE4 */ lw $a0, %lo(D_80131BE4)($a0) +/* B64F34 800EDD94 8C841BE4 */ lw $a0, %lo(gScarecrowCustomSongPtr)($a0) .L800EDD98: /* B64F38 800EDD98 3C048013 */ lui $a0, %hi(D_80131BEC) # $a0, 0x8013 /* B64F3C 800EDD9C 8C841BEC */ lw $a0, %lo(D_80131BEC)($a0) diff --git a/asm/non_matchings/code/code_800EC960/func_800EEA50.s b/asm/non_matchings/code/code_800EC960/func_800EEA50.s index 03e9d45abb..36b68da95d 100644 --- a/asm/non_matchings/code/code_800EC960/func_800EEA50.s +++ b/asm/non_matchings/code/code_800EC960/func_800EEA50.s @@ -3280,8 +3280,8 @@ glabel L800F12F0 /* B68560 800F13C0 24050003 */ li $a1, 3 /* B68564 800F13C4 0C03ED07 */ jal GfxPrint_SetPos /* B68568 800F13C8 24060006 */ li $a2, 6 -/* B6856C 800F13CC 3C148013 */ lui $s4, %hi(D_80131BE8) # $s4, 0x8013 -/* B68570 800F13D0 26941BE8 */ addiu $s4, %lo(D_80131BE8) # addiu $s4, $s4, 0x1be8 +/* B6856C 800F13CC 3C148013 */ lui $s4, %hi(gScarecrowSpawnSongPtr) # $s4, 0x8013 +/* B68570 800F13D0 26941BE8 */ addiu $s4, %lo(gScarecrowSpawnSongPtr) # addiu $s4, $s4, 0x1be8 /* B68574 800F13D4 3C058015 */ lui $a1, %hi(D_8014A2C0) # $a1, 0x8015 /* B68578 800F13D8 24A5A2C0 */ addiu $a1, %lo(D_8014A2C0) # addiu $a1, $a1, -0x5d40 /* B6857C 800F13DC 8E860000 */ lw $a2, ($s4) diff --git a/asm/non_matchings/code/z_message_PAL/func_8010C39C.s b/asm/non_matchings/code/z_message_PAL/func_8010C39C.s index 6e0277d1b1..e5fe58d06b 100644 --- a/asm/non_matchings/code/z_message_PAL/func_8010C39C.s +++ b/asm/non_matchings/code/z_message_PAL/func_8010C39C.s @@ -2382,8 +2382,8 @@ glabel L8010DF4C /* B852F4 8010E154 0C00084C */ jal osSyncPrintf /* B852F8 8010E158 248447AC */ addiu $a0, %lo(D_801547AC) # addiu $a0, $a0, 0x47ac /* B852FC 8010E15C 3C048016 */ lui $a0, %hi(gSaveContext+0xf41) # $a0, 0x8016 -/* B85300 8010E160 3C058013 */ lui $a1, %hi(D_80131BE4) # $a1, 0x8013 -/* B85304 8010E164 8CA51BE4 */ lw $a1, %lo(D_80131BE4)($a1) +/* B85300 8010E160 3C058013 */ lui $a1, %hi(gScarecrowCustomSongPtr) # $a1, 0x8013 +/* B85304 8010E164 8CA51BE4 */ lw $a1, %lo(gScarecrowCustomSongPtr)($a1) /* B85308 8010E168 2484F5A1 */ addiu $a0, %lo(gSaveContext+0xf41) # addiu $a0, $a0, -0xa5f /* B8530C 8010E16C 0C01A508 */ jal MemCopy /* B85310 8010E170 24060360 */ li $a2, 864 @@ -2583,8 +2583,8 @@ glabel L8010E364 /* B855E8 8010E448 0C00084C */ jal osSyncPrintf /* B855EC 8010E44C 24844880 */ addiu $a0, %lo(D_80154880) # addiu $a0, $a0, 0x4880 /* B855F0 8010E450 3C048016 */ lui $a0, %hi(gSaveContext+0x12c6) # $a0, 0x8016 -/* B855F4 8010E454 3C058013 */ lui $a1, %hi(D_80131BE8) # $a1, 0x8013 -/* B855F8 8010E458 8CA51BE8 */ lw $a1, %lo(D_80131BE8)($a1) +/* B855F4 8010E454 3C058013 */ lui $a1, %hi(gScarecrowSpawnSongPtr) # $a1, 0x8013 +/* B855F8 8010E458 8CA51BE8 */ lw $a1, %lo(gScarecrowSpawnSongPtr)($a1) /* B855FC 8010E45C 2484F926 */ addiu $a0, %lo(gSaveContext+0x12c6) # addiu $a0, $a0, -0x6da /* B85600 8010E460 0C01A508 */ jal MemCopy /* B85604 8010E464 24060080 */ li $a2, 128 diff --git a/asm/non_matchings/code/z_play/Gameplay_Init.s b/asm/non_matchings/code/z_play/Gameplay_Init.s index a9c657103e..19a19e9d4f 100644 --- a/asm/non_matchings/code/z_play/Gameplay_Init.s +++ b/asm/non_matchings/code/z_play/Gameplay_Init.s @@ -116,7 +116,7 @@ glabel Gameplay_Init /* B33D2C 800BCB8C 0C016B12 */ jal func_8005AC48 /* B33D30 800BCB90 A62007A0 */ sh $zero, 0x7a0($s1) /* B33D34 800BCB94 02202025 */ move $a0, $s1 -/* B33D38 800BCB98 0C02A74A */ jal func_800A9D28 +/* B33D38 800BCB98 0C02A74A */ jal Sram_Init /* B33D3C 800BCB9C 26251F74 */ addiu $a1, $s1, 0x1f74 /* B33D40 800BCBA0 0C044826 */ jal func_80112098 /* B33D44 800BCBA4 02202025 */ move $a0, $s1 diff --git a/asm/non_matchings/code/z_sram/func_800A8484.s b/asm/non_matchings/code/z_sram/Sram_OpenSave.s similarity index 94% rename from asm/non_matchings/code/z_sram/func_800A8484.s rename to asm/non_matchings/code/z_sram/Sram_OpenSave.s index 2b333da9c2..166c1dde99 100644 --- a/asm/non_matchings/code/z_sram/func_800A8484.s +++ b/asm/non_matchings/code/z_sram/Sram_OpenSave.s @@ -96,7 +96,7 @@ glabel jtbl_80140FB8 .word L800A85C0 .text -glabel func_800A8484 +glabel Sram_OpenSave /* B1F624 800A8484 27BDFFD8 */ addiu $sp, $sp, -0x28 /* B1F628 800A8488 AFB00014 */ sw $s0, 0x14($sp) /* B1F62C 800A848C 00808025 */ move $s0, $a0 @@ -108,11 +108,11 @@ glabel func_800A8484 /* B1F644 800A84A4 3C118016 */ lui $s1, %hi(gSaveContext) # $s1, 0x8016 /* B1F648 800A84A8 2631E660 */ addiu $s1, %lo(gSaveContext) # addiu $s1, $s1, -0x19a0 /* B1F64C 800A84AC 8E261354 */ lw $a2, 0x1354($s1) -/* B1F650 800A84B0 3C078013 */ lui $a3, %hi(D_8012A4E0) +/* B1F650 800A84B0 3C078013 */ lui $a3, %hi(gSramSlotOffsets) /* B1F654 800A84B4 3C048014 */ lui $a0, %hi(D_80140864) # $a0, 0x8014 /* B1F658 800A84B8 00067040 */ sll $t6, $a2, 1 /* B1F65C 800A84BC 00EE3821 */ addu $a3, $a3, $t6 -/* B1F660 800A84C0 94E5A4E0 */ lhu $a1, %lo(D_8012A4E0)($a3) +/* B1F660 800A84C0 94E5A4E0 */ lhu $a1, %lo(gSramSlotOffsets)($a3) /* B1F664 800A84C4 24840864 */ addiu $a0, %lo(D_80140864) # addiu $a0, $a0, 0x864 /* B1F668 800A84C8 0C00084C */ jal osSyncPrintf /* B1F66C 800A84CC A7A50026 */ sh $a1, 0x26($sp) @@ -151,9 +151,9 @@ glabel func_800A8484 glabel L800A854C /* B1F6EC 800A854C 0002C840 */ sll $t9, $v0, 1 -/* B1F6F0 800A8550 3C0C8013 */ lui $t4, %hi(D_8012A670) +/* B1F6F0 800A8550 3C0C8013 */ lui $t4, %hi(dungeonEntrances) /* B1F6F4 800A8554 01996021 */ addu $t4, $t4, $t9 -/* B1F6F8 800A8558 858CA670 */ lh $t4, %lo(D_8012A670)($t4) +/* B1F6F8 800A8558 858CA670 */ lh $t4, %lo(dungeonEntrances)($t4) /* B1F6FC 800A855C 1000002C */ b .L800A8610 /* B1F700 800A8560 AE2C0000 */ sw $t4, ($s1) @@ -250,14 +250,14 @@ glabel L800A85CC /* B1F7FC 800A865C 3C048014 */ lui $a0, %hi(D_801408C0) # $a0, 0x8014 /* B1F800 800A8660 0C00084C */ jal osSyncPrintf /* B1F804 800A8664 248408C0 */ addiu $a0, %lo(D_801408C0) # addiu $a0, $a0, 0x8c0 -/* B1F808 800A8668 3C048013 */ lui $a0, %hi(D_80131BE4) # $a0, 0x8013 +/* B1F808 800A8668 3C048013 */ lui $a0, %hi(gScarecrowCustomSongPtr) # $a0, 0x8013 /* B1F80C 800A866C 3C058016 */ lui $a1, %hi(gSaveContext+0xf41) # $a1, 0x8016 /* B1F810 800A8670 24A5F5A1 */ addiu $a1, %lo(gSaveContext+0xf41) # addiu $a1, $a1, -0xa5f -/* B1F814 800A8674 8C841BE4 */ lw $a0, %lo(D_80131BE4)($a0) +/* B1F814 800A8674 8C841BE4 */ lw $a0, %lo(gScarecrowCustomSongPtr)($a0) /* B1F818 800A8678 0C01A508 */ jal MemCopy /* B1F81C 800A867C 24060360 */ li $a2, 864 -/* B1F820 800A8680 3C108013 */ lui $s0, %hi(D_80131BE4) # $s0, 0x8013 -/* B1F824 800A8684 8E101BE4 */ lw $s0, %lo(D_80131BE4)($s0) +/* B1F820 800A8680 3C108013 */ lui $s0, %hi(gScarecrowCustomSongPtr) # $s0, 0x8013 +/* B1F824 800A8684 8E101BE4 */ lw $s0, %lo(gScarecrowCustomSongPtr)($s0) /* B1F828 800A8688 00003825 */ move $a3, $zero .L800A868C: /* B1F82C 800A868C 3C048014 */ lui $a0, %hi(D_80140908) # $a0, 0x8014 @@ -288,14 +288,14 @@ glabel L800A85CC /* B1F88C 800A86EC 3C048014 */ lui $a0, %hi(D_80140964) # $a0, 0x8014 /* B1F890 800A86F0 0C00084C */ jal osSyncPrintf /* B1F894 800A86F4 24840964 */ addiu $a0, %lo(D_80140964) # addiu $a0, $a0, 0x964 -/* B1F898 800A86F8 3C048013 */ lui $a0, %hi(D_80131BE8) # $a0, 0x8013 +/* B1F898 800A86F8 3C048013 */ lui $a0, %hi(gScarecrowSpawnSongPtr) # $a0, 0x8013 /* B1F89C 800A86FC 3C058016 */ lui $a1, %hi(gSaveContext+0x12c6) # $a1, 0x8016 /* B1F8A0 800A8700 24A5F926 */ addiu $a1, %lo(gSaveContext+0x12c6) # addiu $a1, $a1, -0x6da -/* B1F8A4 800A8704 8C841BE8 */ lw $a0, %lo(D_80131BE8)($a0) +/* B1F8A4 800A8704 8C841BE8 */ lw $a0, %lo(gScarecrowSpawnSongPtr)($a0) /* B1F8A8 800A8708 0C01A508 */ jal MemCopy /* B1F8AC 800A870C 24060080 */ li $a2, 128 -/* B1F8B0 800A8710 3C108013 */ lui $s0, %hi(D_80131BE8) # $s0, 0x8013 -/* B1F8B4 800A8714 8E101BE8 */ lw $s0, %lo(D_80131BE8)($s0) +/* B1F8B0 800A8710 3C108013 */ lui $s0, %hi(gScarecrowSpawnSongPtr) # $s0, 0x8013 +/* B1F8B4 800A8714 8E101BE8 */ lw $s0, %lo(gScarecrowSpawnSongPtr)($s0) /* B1F8B8 800A8718 00003825 */ move $a3, $zero .L800A871C: /* B1F8BC 800A871C 3C048014 */ lui $a0, %hi(D_801409AC) # $a0, 0x8014 diff --git a/asm/non_matchings/code/z_sram/func_800A8A20.s b/asm/non_matchings/code/z_sram/Sram_VerifyAndLoadAllSaves.s similarity index 97% rename from asm/non_matchings/code/z_sram/func_800A8A20.s rename to asm/non_matchings/code/z_sram/Sram_VerifyAndLoadAllSaves.s index ee08fad088..0328da4acd 100644 --- a/asm/non_matchings/code/z_sram/func_800A8A20.s +++ b/asm/non_matchings/code/z_sram/Sram_VerifyAndLoadAllSaves.s @@ -94,7 +94,7 @@ glabel D_80140CC4 .balign 4 .text -glabel func_800A8A20 +glabel Sram_VerifyAndLoadAllSaves /* B1FBC0 800A8A20 27BDFF88 */ addiu $sp, $sp, -0x78 /* B1FBC4 800A8A24 AFA40078 */ sw $a0, 0x78($sp) /* B1FBC8 800A8A28 AFBF004C */ sw $ra, 0x4c($sp) @@ -119,7 +119,7 @@ glabel func_800A8A20 /* B1FC14 800A8A74 3C040800 */ lui $a0, 0x800 /* B1FC18 800A8A78 34068000 */ li $a2, 32768 /* B1FC1C 800A8A7C 00003825 */ move $a3, $zero -/* B1FC20 800A8A80 0C02A7A8 */ jal Sram_ReadWrite +/* B1FC20 800A8A80 0C02A7A8 */ jal SsSram_ReadWrite /* B1FC24 800A8A84 8DE50000 */ lw $a1, ($t7) /* B1FC28 800A8A88 3C148016 */ lui $s4, %hi(gSaveContext) # $s4, 0x8016 /* B1FC2C 800A8A8C 2694E660 */ addiu $s4, %lo(gSaveContext) # addiu $s4, $s4, -0x19a0 @@ -134,8 +134,8 @@ glabel func_800A8A20 /* B1FC50 800A8AB0 A7B80066 */ sh $t8, 0x66($sp) .L800A8AB4: /* B1FC54 800A8AB4 97B90072 */ lhu $t9, 0x72($sp) -/* B1FC58 800A8AB8 3C098013 */ lui $t1, %hi(D_8012A4E0) # $t1, 0x8013 -/* B1FC5C 800A8ABC 2529A4E0 */ addiu $t1, %lo(D_8012A4E0) # addiu $t1, $t1, -0x5b20 +/* B1FC58 800A8AB8 3C098013 */ lui $t1, %hi(gSramSlotOffsets) # $t1, 0x8013 +/* B1FC5C 800A8ABC 2529A4E0 */ addiu $t1, %lo(gSramSlotOffsets) # addiu $t1, $t1, -0x5b20 /* B1FC60 800A8AC0 00194040 */ sll $t0, $t9, 1 /* B1FC64 800A8AC4 01091021 */ addu $v0, $t0, $t1 /* B1FC68 800A8AC8 94520000 */ lhu $s2, ($v0) @@ -189,8 +189,8 @@ glabel func_800A8A20 /* B1FD24 800A8B84 95A50000 */ lhu $a1, ($t5) /* B1FD28 800A8B88 8FAE005C */ lw $t6, 0x5c($sp) /* B1FD2C 800A8B8C 8FB9007C */ lw $t9, 0x7c($sp) -/* B1FD30 800A8B90 3C188013 */ lui $t8, %hi(D_8012A4E0) # $t8, 0x8013 -/* B1FD34 800A8B94 2718A4E0 */ addiu $t8, %lo(D_8012A4E0) # addiu $t8, $t8, -0x5b20 +/* B1FD30 800A8B90 3C188013 */ lui $t8, %hi(gSramSlotOffsets) # $t8, 0x8013 +/* B1FD34 800A8B94 2718A4E0 */ addiu $t8, %lo(gSramSlotOffsets) # addiu $t8, $t8, -0x5b20 /* B1FD38 800A8B98 000E7840 */ sll $t7, $t6, 1 /* B1FD3C 800A8B9C 01F81021 */ addu $v0, $t7, $t8 /* B1FD40 800A8BA0 94520006 */ lhu $s2, 6($v0) @@ -264,7 +264,7 @@ glabel func_800A8A20 /* B1FE4C 800A8CAC 97AB0072 */ lhu $t3, 0x72($sp) /* B1FE50 800A8CB0 1560001C */ bnez $t3, .L800A8D24 /* B1FE54 800A8CB4 00000000 */ nop -/* B1FE58 800A8CB8 0C02A0B2 */ jal func_800A82C8 +/* B1FE58 800A8CB8 0C02A0B2 */ jal Sram_InitDebugSave /* B1FE5C 800A8CBC 00000000 */ nop /* B1FE60 800A8CC0 2402005A */ li $v0, 90 /* B1FE64 800A8CC4 240E0044 */ li $t6, 68 @@ -292,7 +292,7 @@ glabel func_800A8A20 /* B1FEBC 800A8D1C 10000003 */ b .L800A8D2C /* B1FEC0 800A8D20 00000000 */ nop .L800A8D24: -/* B1FEC4 800A8D24 0C02A068 */ jal func_800A81A0 +/* B1FEC4 800A8D24 0C02A068 */ jal Sram_InitNewSave /* B1FEC8 800A8D28 00000000 */ nop .L800A8D2C: /* B1FECC 800A8D2C 3C048014 */ lui $a0, %hi(D_80140B74) # $a0, 0x8014 @@ -334,7 +334,7 @@ glabel func_800A8A20 /* B1FF54 800A8DB4 95500006 */ lhu $s0, 6($t2) /* B1FF58 800A8DB8 24061450 */ li $a2, 5200 /* B1FF5C 800A8DBC 24070001 */ li $a3, 1 -/* B1FF60 800A8DC0 0C02A7A8 */ jal Sram_ReadWrite +/* B1FF60 800A8DC0 0C02A7A8 */ jal SsSram_ReadWrite /* B1FF64 800A8DC4 02012021 */ addu $a0, $s0, $at /* B1FF68 800A8DC8 928B001F */ lbu $t3, 0x1f($s4) /* B1FF6C 800A8DCC 928C0020 */ lbu $t4, 0x20($s4) @@ -362,7 +362,7 @@ glabel func_800A8A20 /* B1FFC0 800A8E20 95D00000 */ lhu $s0, ($t6) /* B1FFC4 800A8E24 24061450 */ li $a2, 5200 /* B1FFC8 800A8E28 24070001 */ li $a3, 1 -/* B1FFCC 800A8E2C 0C02A7A8 */ jal Sram_ReadWrite +/* B1FFCC 800A8E2C 0C02A7A8 */ jal SsSram_ReadWrite /* B1FFD0 800A8E30 02012021 */ addu $a0, $s0, $at /* B1FFD4 800A8E34 3C048014 */ lui $a0, %hi(D_80140C14) # $a0, 0x8014 /* B1FFD8 800A8E38 24840C14 */ addiu $a0, %lo(D_80140C14) # addiu $a0, $a0, 0xc14 @@ -392,7 +392,7 @@ glabel func_800A8A20 /* B20030 800A8E90 3C040800 */ lui $a0, 0x800 /* B20034 800A8E94 34068000 */ li $a2, 32768 /* B20038 800A8E98 00003825 */ move $a3, $zero -/* B2003C 800A8E9C 0C02A7A8 */ jal Sram_ReadWrite +/* B2003C 800A8E9C 0C02A7A8 */ jal SsSram_ReadWrite /* B20040 800A8EA0 8D050000 */ lw $a1, ($t0) /* B20044 800A8EA4 97A90066 */ lhu $t1, 0x66($sp) /* B20048 800A8EA8 3C048014 */ lui $a0, %hi(D_80140C58) # $a0, 0x8014 diff --git a/asm/non_matchings/code/z_sram/func_800A81A0.s b/asm/non_matchings/code/z_sram/func_800A81A0.s deleted file mode 100644 index e6627d6a2f..0000000000 --- a/asm/non_matchings/code/z_sram/func_800A81A0.s +++ /dev/null @@ -1,78 +0,0 @@ -glabel func_800A81A0 -/* B1F340 800A81A0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* B1F344 800A81A4 AFBF0014 */ sw $ra, 0x14($sp) -/* B1F348 800A81A8 3C048016 */ lui $a0, %hi(gSaveContext+0x1c) # $a0, 0x8016 -/* B1F34C 800A81AC 2484E67C */ addiu $a0, %lo(gSaveContext+0x1c) # addiu $a0, $a0, -0x1984 -/* B1F350 800A81B0 0C001114 */ jal bzero -/* B1F354 800A81B4 24051338 */ li $a1, 4920 -/* B1F358 800A81B8 3C028016 */ lui $v0, %hi(gSaveContext) # $v0, 0x8016 -/* B1F35C 800A81BC 2442E660 */ addiu $v0, %lo(gSaveContext) # addiu $v0, $v0, -0x19a0 -/* B1F360 800A81C0 3C0F8013 */ lui $t7, %hi(D_8012A4F8) # $t7, 0x8013 -/* B1F364 800A81C4 25EFA4F8 */ addiu $t7, %lo(D_8012A4F8) # addiu $t7, $t7, -0x5b08 -/* B1F368 800A81C8 3C0E8016 */ lui $t6, %hi(gSaveContext+0x1c) # $t6, 0x8016 -/* B1F36C 800A81CC AC400014 */ sw $zero, 0x14($v0) -/* B1F370 800A81D0 AC400018 */ sw $zero, 0x18($v0) -/* B1F374 800A81D4 25CEE67C */ addiu $t6, %lo(gSaveContext+0x1c) # addiu $t6, $t6, -0x1984 -/* B1F378 800A81D8 25E80048 */ addiu $t0, $t7, 0x48 -.L800A81DC: -/* B1F37C 800A81DC 8DF90000 */ lw $t9, ($t7) -/* B1F380 800A81E0 25EF000C */ addiu $t7, $t7, 0xc -/* B1F384 800A81E4 25CE000C */ addiu $t6, $t6, 0xc -/* B1F388 800A81E8 ADD9FFF4 */ sw $t9, -0xc($t6) -/* B1F38C 800A81EC 8DF8FFF8 */ lw $t8, -8($t7) -/* B1F390 800A81F0 ADD8FFF8 */ sw $t8, -8($t6) -/* B1F394 800A81F4 8DF9FFFC */ lw $t9, -4($t7) -/* B1F398 800A81F8 15E8FFF8 */ bne $t7, $t0, .L800A81DC -/* B1F39C 800A81FC ADD9FFFC */ sw $t9, -4($t6) -/* B1F3A0 800A8200 8DF90000 */ lw $t9, ($t7) -/* B1F3A4 800A8204 3C0A8013 */ lui $t2, %hi(D_8012A544) # $t2, 0x8013 -/* B1F3A8 800A8208 254AA544 */ addiu $t2, %lo(D_8012A544) # addiu $t2, $t2, -0x5abc -/* B1F3AC 800A820C ADD90000 */ sw $t9, ($t6) -/* B1F3B0 800A8210 8D4C0000 */ lw $t4, ($t2) -/* B1F3B4 800A8214 3C098016 */ lui $t1, %hi(gSaveContext+0x68) # $t1, 0x8016 -/* B1F3B8 800A8218 2529E6C8 */ addiu $t1, %lo(gSaveContext+0x68) # addiu $t1, $t1, -0x1938 -/* B1F3BC 800A821C A92C0000 */ swl $t4, ($t1) -/* B1F3C0 800A8220 8D4B0004 */ lw $t3, 4($t2) -/* B1F3C4 800A8224 B92C0003 */ swr $t4, 3($t1) -/* B1F3C8 800A8228 954C0008 */ lhu $t4, 8($t2) -/* B1F3CC 800A822C 3C088013 */ lui $t0, %hi(D_8012A550) # $t0, 0x8013 -/* B1F3D0 800A8230 2508A550 */ addiu $t0, %lo(D_8012A550) # addiu $t0, $t0, -0x5ab0 -/* B1F3D4 800A8234 3C0D8016 */ lui $t5, %hi(gSaveContext+0x74) # $t5, 0x8016 -/* B1F3D8 800A8238 A92B0004 */ swl $t3, 4($t1) -/* B1F3DC 800A823C 25ADE6D4 */ addiu $t5, %lo(gSaveContext+0x74) # addiu $t5, $t5, -0x192c -/* B1F3E0 800A8240 25180060 */ addiu $t8, $t0, 0x60 -/* B1F3E4 800A8244 B92B0007 */ swr $t3, 7($t1) -/* B1F3E8 800A8248 A52C0008 */ sh $t4, 8($t1) -.L800A824C: -/* B1F3EC 800A824C 8D0E0000 */ lw $t6, ($t0) -/* B1F3F0 800A8250 2508000C */ addiu $t0, $t0, 0xc -/* B1F3F4 800A8254 25AD000C */ addiu $t5, $t5, 0xc -/* B1F3F8 800A8258 ADAEFFF4 */ sw $t6, -0xc($t5) -/* B1F3FC 800A825C 8D0FFFF8 */ lw $t7, -8($t0) -/* B1F400 800A8260 ADAFFFF8 */ sw $t7, -8($t5) -/* B1F404 800A8264 8D0EFFFC */ lw $t6, -4($t0) -/* B1F408 800A8268 1518FFF8 */ bne $t0, $t8, .L800A824C -/* B1F40C 800A826C ADAEFFFC */ sw $t6, -4($t5) -/* B1F410 800A8270 3C198013 */ lui $t9, %hi(D_8012A5B0) # $t9, 0x8013 -/* B1F414 800A8274 9739A5B0 */ lhu $t9, %lo(D_8012A5B0)($t9) -/* B1F418 800A8278 3C018016 */ lui $at, %hi(gSaveContext+0x1352) # $at, 0x8016 -/* B1F41C 800A827C 8FBF0014 */ lw $ra, 0x14($sp) -/* B1F420 800A8280 A439F9B2 */ sh $t9, %lo(gSaveContext+0x1352)($at) -/* B1F424 800A8284 24090051 */ li $t1, 81 -/* B1F428 800A8288 240AF8D0 */ li $t2, -1840 -/* B1F42C 800A828C 240B0048 */ li $t3, 72 -/* B1F430 800A8290 240C1579 */ li $t4, 5497 -/* B1F434 800A8294 24189527 */ li $t8, -27353 -/* B1F438 800A8298 24080001 */ li $t0, 1 -/* B1F43C 800A829C 3C0D4000 */ lui $t5, 0x4000 -/* B1F440 800A82A0 A4491348 */ sh $t1, 0x1348($v0) -/* B1F444 800A82A4 A44A134A */ sh $t2, 0x134a($v0) -/* B1F448 800A82A8 A44B134C */ sh $t3, 0x134c($v0) -/* B1F44C 800A82AC A44C134E */ sh $t4, 0x134e($v0) -/* B1F450 800A82B0 A4581350 */ sh $t8, 0x1350($v0) -/* B1F454 800A82B4 A0400032 */ sb $zero, 0x32($v0) -/* B1F458 800A82B8 A4480F32 */ sh $t0, 0xf32($v0) -/* B1F45C 800A82BC AC4D0164 */ sw $t5, 0x164($v0) -/* B1F460 800A82C0 03E00008 */ jr $ra -/* B1F464 800A82C4 27BD0018 */ addiu $sp, $sp, 0x18 - diff --git a/asm/non_matchings/code/z_sram/func_800A82C8.s b/asm/non_matchings/code/z_sram/func_800A82C8.s deleted file mode 100644 index 4a4e7bd874..0000000000 --- a/asm/non_matchings/code/z_sram/func_800A82C8.s +++ /dev/null @@ -1,118 +0,0 @@ -glabel func_800A82C8 -/* B1F468 800A82C8 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* B1F46C 800A82CC AFBF0014 */ sw $ra, 0x14($sp) -/* B1F470 800A82D0 3C048016 */ lui $a0, %hi(gSaveContext+0x1c) # $a0, 0x8016 -/* B1F474 800A82D4 2484E67C */ addiu $a0, %lo(gSaveContext+0x1c) # addiu $a0, $a0, -0x1984 -/* B1F478 800A82D8 0C001114 */ jal bzero -/* B1F47C 800A82DC 24051338 */ li $a1, 4920 -/* B1F480 800A82E0 3C028016 */ lui $v0, %hi(gSaveContext) # $v0, 0x8016 -/* B1F484 800A82E4 2442E660 */ addiu $v0, %lo(gSaveContext) # addiu $v0, $v0, -0x19a0 -/* B1F488 800A82E8 3C0F8013 */ lui $t7, %hi(D_8012A5B4) # $t7, 0x8013 -/* B1F48C 800A82EC 25EFA5B4 */ addiu $t7, %lo(D_8012A5B4) # addiu $t7, $t7, -0x5a4c -/* B1F490 800A82F0 3C0E8016 */ lui $t6, %hi(gSaveContext+0x1c) # $t6, 0x8016 -/* B1F494 800A82F4 AC400014 */ sw $zero, 0x14($v0) -/* B1F498 800A82F8 AC400018 */ sw $zero, 0x18($v0) -/* B1F49C 800A82FC 25CEE67C */ addiu $t6, %lo(gSaveContext+0x1c) # addiu $t6, $t6, -0x1984 -/* B1F4A0 800A8300 25E80048 */ addiu $t0, $t7, 0x48 -.L800A8304: -/* B1F4A4 800A8304 8DF90000 */ lw $t9, ($t7) -/* B1F4A8 800A8308 25EF000C */ addiu $t7, $t7, 0xc -/* B1F4AC 800A830C 25CE000C */ addiu $t6, $t6, 0xc -/* B1F4B0 800A8310 ADD9FFF4 */ sw $t9, -0xc($t6) -/* B1F4B4 800A8314 8DF8FFF8 */ lw $t8, -8($t7) -/* B1F4B8 800A8318 ADD8FFF8 */ sw $t8, -8($t6) -/* B1F4BC 800A831C 8DF9FFFC */ lw $t9, -4($t7) -/* B1F4C0 800A8320 15E8FFF8 */ bne $t7, $t0, .L800A8304 -/* B1F4C4 800A8324 ADD9FFFC */ sw $t9, -4($t6) -/* B1F4C8 800A8328 8DF90000 */ lw $t9, ($t7) -/* B1F4CC 800A832C 3C0A8013 */ lui $t2, %hi(D_8012A600) # $t2, 0x8013 -/* B1F4D0 800A8330 254AA600 */ addiu $t2, %lo(D_8012A600) # addiu $t2, $t2, -0x5a00 -/* B1F4D4 800A8334 ADD90000 */ sw $t9, ($t6) -/* B1F4D8 800A8338 8D4C0000 */ lw $t4, ($t2) -/* B1F4DC 800A833C 3C098016 */ lui $t1, %hi(gSaveContext+0x68) # $t1, 0x8016 -/* B1F4E0 800A8340 2529E6C8 */ addiu $t1, %lo(gSaveContext+0x68) # addiu $t1, $t1, -0x1938 -/* B1F4E4 800A8344 A92C0000 */ swl $t4, ($t1) -/* B1F4E8 800A8348 8D4B0004 */ lw $t3, 4($t2) -/* B1F4EC 800A834C B92C0003 */ swr $t4, 3($t1) -/* B1F4F0 800A8350 954C0008 */ lhu $t4, 8($t2) -/* B1F4F4 800A8354 3C088013 */ lui $t0, %hi(D_8012A60C) # $t0, 0x8013 -/* B1F4F8 800A8358 2508A60C */ addiu $t0, %lo(D_8012A60C) # addiu $t0, $t0, -0x59f4 -/* B1F4FC 800A835C 3C0D8016 */ lui $t5, %hi(gSaveContext+0x74) # $t5, 0x8016 -/* B1F500 800A8360 A92B0004 */ swl $t3, 4($t1) -/* B1F504 800A8364 25ADE6D4 */ addiu $t5, %lo(gSaveContext+0x74) # addiu $t5, $t5, -0x192c -/* B1F508 800A8368 25180060 */ addiu $t8, $t0, 0x60 -/* B1F50C 800A836C B92B0007 */ swr $t3, 7($t1) -/* B1F510 800A8370 A52C0008 */ sh $t4, 8($t1) -.L800A8374: -/* B1F514 800A8374 8D0E0000 */ lw $t6, ($t0) -/* B1F518 800A8378 2508000C */ addiu $t0, $t0, 0xc -/* B1F51C 800A837C 25AD000C */ addiu $t5, $t5, 0xc -/* B1F520 800A8380 ADAEFFF4 */ sw $t6, -0xc($t5) -/* B1F524 800A8384 8D0FFFF8 */ lw $t7, -8($t0) -/* B1F528 800A8388 ADAFFFF8 */ sw $t7, -8($t5) -/* B1F52C 800A838C 8D0EFFFC */ lw $t6, -4($t0) -/* B1F530 800A8390 1518FFF8 */ bne $t0, $t8, .L800A8374 -/* B1F534 800A8394 ADAEFFFC */ sw $t6, -4($t5) -/* B1F538 800A8398 3C198013 */ lui $t9, %hi(D_8012A66C) # $t9, 0x8013 -/* B1F53C 800A839C 9739A66C */ lhu $t9, %lo(D_8012A66C)($t9) -/* B1F540 800A83A0 3C018016 */ lui $at, %hi(gSaveContext+0x1352) # $at, 0x8016 -/* B1F544 800A83A4 240AF8D0 */ li $t2, -1840 -/* B1F548 800A83A8 A439F9B2 */ sh $t9, %lo(gSaveContext+0x1352)($at) -/* B1F54C 800A83AC A44A134A */ sh $t2, 0x134a($v0) -/* B1F550 800A83B0 240C1579 */ li $t4, 5497 -/* B1F554 800A83B4 94480EF8 */ lhu $t0, 0xef8($v0) -/* B1F558 800A83B8 944F0ED4 */ lhu $t7, 0xed4($v0) -/* B1F55C 800A83BC 94590EE4 */ lhu $t9, 0xee4($v0) -/* B1F560 800A83C0 944A0EEC */ lhu $t2, 0xeec($v0) -/* B1F564 800A83C4 A44C134E */ sh $t4, 0x134e($v0) -/* B1F568 800A83C8 8C4C0004 */ lw $t4, 4($v0) -/* B1F56C 800A83CC 24090051 */ li $t1, 81 -/* B1F570 800A83D0 240B0048 */ li $t3, 72 -/* B1F574 800A83D4 A4491348 */ sh $t1, 0x1348($v0) -/* B1F578 800A83D8 A44B134C */ sh $t3, 0x134c($v0) -/* B1F57C 800A83DC 24189527 */ li $t8, -27353 -/* B1F580 800A83E0 350D5009 */ ori $t5, $t0, 0x5009 -/* B1F584 800A83E4 35EE123F */ ori $t6, $t7, 0x123f -/* B1F588 800A83E8 37290001 */ ori $t1, $t9, 1 -/* B1F58C 800A83EC 354B0010 */ ori $t3, $t2, 0x10 -/* B1F590 800A83F0 A4581350 */ sh $t8, 0x1350($v0) -/* B1F594 800A83F4 A44D0EF8 */ sh $t5, 0xef8($v0) -/* B1F598 800A83F8 A44E0ED4 */ sh $t6, 0xed4($v0) -/* B1F59C 800A83FC A4490EE4 */ sh $t1, 0xee4($v0) -/* B1F5A0 800A8400 11800003 */ beqz $t4, .L800A8410 -/* B1F5A4 800A8404 A44B0EEC */ sh $t3, 0xeec($v0) -/* B1F5A8 800A8408 10000002 */ b .L800A8414 -/* B1F5AC 800A840C 24030005 */ li $v1, 5 -.L800A8410: -/* B1F5B0 800A8410 24030011 */ li $v1, 17 -.L800A8414: -/* B1F5B4 800A8414 24010005 */ li $at, 5 -/* B1F5B8 800A8418 14610012 */ bne $v1, $at, .L800A8464 -/* B1F5BC 800A841C 2418003B */ li $t8, 59 -/* B1F5C0 800A8420 A0580068 */ sb $t8, 0x68($v0) -/* B1F5C4 800A8424 00002025 */ move $a0, $zero -/* B1F5C8 800A8428 0C025E80 */ jal Inventory_ChangeEquipment -/* B1F5CC 800A842C 24050001 */ li $a1, 1 -/* B1F5D0 800A8430 3C028016 */ lui $v0, %hi(gSaveContext) # $v0, 0x8016 -/* B1F5D4 800A8434 2442E660 */ addiu $v0, %lo(gSaveContext) # addiu $v0, $v0, -0x19a0 -/* B1F5D8 800A8438 8C481354 */ lw $t0, 0x1354($v0) -/* B1F5DC 800A843C 240100FF */ li $at, 255 -/* B1F5E0 800A8440 24030006 */ li $v1, 6 -/* B1F5E4 800A8444 15010007 */ bne $t0, $at, .L800A8464 -/* B1F5E8 800A8448 24040001 */ li $a0, 1 -/* B1F5EC 800A844C A0430069 */ sb $v1, 0x69($v0) -/* B1F5F0 800A8450 A043006C */ sb $v1, 0x6c($v0) -/* B1F5F4 800A8454 0C025E80 */ jal Inventory_ChangeEquipment -/* B1F5F8 800A8458 24050001 */ li $a1, 1 -/* B1F5FC 800A845C 3C028016 */ lui $v0, %hi(gSaveContext) # $v0, 0x8016 -/* B1F600 800A8460 2442E660 */ addiu $v0, %lo(gSaveContext) # addiu $v0, $v0, -0x19a0 -.L800A8464: -/* B1F604 800A8464 8FBF0014 */ lw $ra, 0x14($sp) -/* B1F608 800A8468 240D00CD */ li $t5, 205 -/* B1F60C 800A846C 3C0F4000 */ lui $t7, 0x4000 -/* B1F610 800A8470 AC4D0000 */ sw $t5, ($v0) -/* B1F614 800A8474 A0400032 */ sb $zero, 0x32($v0) -/* B1F618 800A8478 AC4F0164 */ sw $t7, 0x164($v0) -/* B1F61C 800A847C 03E00008 */ jr $ra -/* B1F620 800A8480 27BD0018 */ addiu $sp, $sp, 0x18 - diff --git a/asm/non_matchings/code/z_sram/func_800A88D4.s b/asm/non_matchings/code/z_sram/func_800A88D4.s deleted file mode 100644 index ecf6d1de1b..0000000000 --- a/asm/non_matchings/code/z_sram/func_800A88D4.s +++ /dev/null @@ -1,91 +0,0 @@ -glabel func_800A88D4 -/* B1FA74 800A88D4 3C058016 */ lui $a1, %hi(gSaveContext) # $a1, 0x8016 -/* B1FA78 800A88D8 24A5E660 */ addiu $a1, %lo(gSaveContext) # addiu $a1, $a1, -0x19a0 -/* B1FA7C 800A88DC 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* B1FA80 800A88E0 AFA40020 */ sw $a0, 0x20($sp) -/* B1FA84 800A88E4 AFBF0014 */ sw $ra, 0x14($sp) -/* B1FA88 800A88E8 A4A01352 */ sh $zero, 0x1352($a1) -/* B1FA8C 800A88EC 00A01825 */ move $v1, $a1 -/* B1FA90 800A88F0 00002025 */ move $a0, $zero -/* B1FA94 800A88F4 00001025 */ move $v0, $zero -/* B1FA98 800A88F8 00004025 */ move $t0, $zero -/* B1FA9C 800A88FC 24090020 */ li $t1, 32 -.L800A8900: -/* B1FAA0 800A8900 24420001 */ addiu $v0, $v0, 1 -/* B1FAA4 800A8904 3042FFFF */ andi $v0, $v0, 0xffff -/* B1FAA8 800A8908 15220002 */ bne $t1, $v0, .L800A8914 -/* B1FAAC 800A890C 25080001 */ addiu $t0, $t0, 1 -/* B1FAB0 800A8910 00001025 */ move $v0, $zero -.L800A8914: -/* B1FAB4 800A8914 946E0000 */ lhu $t6, ($v1) -/* B1FAB8 800A8918 3108FFFF */ andi $t0, $t0, 0xffff -/* B1FABC 800A891C 2D0109AA */ sltiu $at, $t0, 0x9aa -/* B1FAC0 800A8920 008E2021 */ addu $a0, $a0, $t6 -/* B1FAC4 800A8924 3084FFFF */ andi $a0, $a0, 0xffff -/* B1FAC8 800A8928 1420FFF5 */ bnez $at, .L800A8900 -/* B1FACC 800A892C 24630002 */ addiu $v1, $v1, 2 -/* B1FAD0 800A8930 A4A41352 */ sh $a0, 0x1352($a1) -/* B1FAD4 800A8934 00A01825 */ move $v1, $a1 -/* B1FAD8 800A8938 00002025 */ move $a0, $zero -/* B1FADC 800A893C 00004025 */ move $t0, $zero -.L800A8940: -/* B1FAE0 800A8940 24420001 */ addiu $v0, $v0, 1 -/* B1FAE4 800A8944 3042FFFF */ andi $v0, $v0, 0xffff -/* B1FAE8 800A8948 15220002 */ bne $t1, $v0, .L800A8954 -/* B1FAEC 800A894C 25080001 */ addiu $t0, $t0, 1 -/* B1FAF0 800A8950 00001025 */ move $v0, $zero -.L800A8954: -/* B1FAF4 800A8954 946F0000 */ lhu $t7, ($v1) -/* B1FAF8 800A8958 3108FFFF */ andi $t0, $t0, 0xffff -/* B1FAFC 800A895C 2D0109AA */ sltiu $at, $t0, 0x9aa -/* B1FB00 800A8960 008F2021 */ addu $a0, $a0, $t7 -/* B1FB04 800A8964 3084FFFF */ andi $a0, $a0, 0xffff -/* B1FB08 800A8968 1420FFF5 */ bnez $at, .L800A8940 -/* B1FB0C 800A896C 24630002 */ addiu $v1, $v1, 2 -/* B1FB10 800A8970 8CB81354 */ lw $t8, 0x1354($a1) -/* B1FB14 800A8974 3C088013 */ lui $t0, %hi(D_8012A4E0) -/* B1FB18 800A8978 3C010800 */ lui $at, 0x800 -/* B1FB1C 800A897C 0018C840 */ sll $t9, $t8, 1 -/* B1FB20 800A8980 01194021 */ addu $t0, $t0, $t9 -/* B1FB24 800A8984 9508A4E0 */ lhu $t0, %lo(D_8012A4E0)($t0) -/* B1FB28 800A8988 24061450 */ li $a2, 5200 -/* B1FB2C 800A898C 24070001 */ li $a3, 1 -/* B1FB30 800A8990 A7A2001A */ sh $v0, 0x1a($sp) -/* B1FB34 800A8994 0C02A7A8 */ jal Sram_ReadWrite -/* B1FB38 800A8998 01012021 */ addu $a0, $t0, $at -/* B1FB3C 800A899C 3C058016 */ lui $a1, %hi(gSaveContext) # $a1, 0x8016 -/* B1FB40 800A89A0 24A5E660 */ addiu $a1, %lo(gSaveContext) # addiu $a1, $a1, -0x19a0 -/* B1FB44 800A89A4 97A2001A */ lhu $v0, 0x1a($sp) -/* B1FB48 800A89A8 24090020 */ li $t1, 32 -/* B1FB4C 800A89AC 00A01825 */ move $v1, $a1 -/* B1FB50 800A89B0 00002025 */ move $a0, $zero -/* B1FB54 800A89B4 00004025 */ move $t0, $zero -.L800A89B8: -/* B1FB58 800A89B8 24420001 */ addiu $v0, $v0, 1 -/* B1FB5C 800A89BC 3042FFFF */ andi $v0, $v0, 0xffff -/* B1FB60 800A89C0 15220002 */ bne $t1, $v0, .L800A89CC -/* B1FB64 800A89C4 25080001 */ addiu $t0, $t0, 1 -/* B1FB68 800A89C8 00001025 */ move $v0, $zero -.L800A89CC: -/* B1FB6C 800A89CC 946A0000 */ lhu $t2, ($v1) -/* B1FB70 800A89D0 3108FFFF */ andi $t0, $t0, 0xffff -/* B1FB74 800A89D4 2D0109AA */ sltiu $at, $t0, 0x9aa -/* B1FB78 800A89D8 008A2021 */ addu $a0, $a0, $t2 -/* B1FB7C 800A89DC 3084FFFF */ andi $a0, $a0, 0xffff -/* B1FB80 800A89E0 1420FFF5 */ bnez $at, .L800A89B8 -/* B1FB84 800A89E4 24630002 */ addiu $v1, $v1, 2 -/* B1FB88 800A89E8 8CAB1354 */ lw $t3, 0x1354($a1) -/* B1FB8C 800A89EC 3C088013 */ lui $t0, %hi(D_8012A4E6) -/* B1FB90 800A89F0 3C010800 */ lui $at, 0x800 -/* B1FB94 800A89F4 000B6040 */ sll $t4, $t3, 1 -/* B1FB98 800A89F8 010C4021 */ addu $t0, $t0, $t4 -/* B1FB9C 800A89FC 9508A4E6 */ lhu $t0, %lo(D_8012A4E6)($t0) -/* B1FBA0 800A8A00 24061450 */ li $a2, 5200 -/* B1FBA4 800A8A04 24070001 */ li $a3, 1 -/* B1FBA8 800A8A08 0C02A7A8 */ jal Sram_ReadWrite -/* B1FBAC 800A8A0C 01012021 */ addu $a0, $t0, $at -/* B1FBB0 800A8A10 8FBF0014 */ lw $ra, 0x14($sp) -/* B1FBB4 800A8A14 27BD0020 */ addiu $sp, $sp, 0x20 -/* B1FBB8 800A8A18 03E00008 */ jr $ra -/* B1FBBC 800A8A1C 00000000 */ nop - diff --git a/asm/non_matchings/code/z_sram/func_800A9258.s b/asm/non_matchings/code/z_sram/func_800A9258.s deleted file mode 100644 index 36c8fa3723..0000000000 --- a/asm/non_matchings/code/z_sram/func_800A9258.s +++ /dev/null @@ -1,354 +0,0 @@ -.rdata -glabel D_80140CDC - .asciz "64DDフラグ=%d\n" - # EUC-JP: 64DDフラグ | 64DD flag - .balign 4 - -glabel D_80140CF0 - .asciz "newf=%x,%x,%x,%x,%x,%x\n" - .balign 4 - -glabel D_80140D08 - .asciz "\n$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n" - .balign 4 - -glabel D_80140D58 - .asciz "%x " - .balign 4 - -glabel D_80140D5C - .asciz "\n" - .balign 4 - -glabel D_80140D60 - .asciz "\nチェックサム=%x\n" - # EUC-JP: チェックサム=%x | Checksum - .balign 4 - -glabel D_80140D74 - .asciz "I=%x no=%d\n" - .balign 4 - -glabel D_80140D80 - .asciz "I=%x no=%d\n" - .balign 4 - -glabel D_80140D8C - .asciz "SAVE終了\n" - # EUC-JP: SAVE終了 | SAVE end - .balign 4 - -glabel D_80140D9C - .asciz "z_common_data.file_no = %d\n" - .balign 4 - -glabel D_80140DB8 - .asciz "SAVECT=%x, NAME=%x, LIFE=%x, ITEM=%x, SAVE_64DD=%x\n" - .balign 4 - -glabel D_80140DF0 - .asciz "f_64dd[%d]=%d\n" - .balign 4 - -glabel D_80140E00 - .asciz "heart_status[%d]=%d\n" - .balign 4 - -glabel D_80140E18 - .asciz "now_life[%d]=%d\n" - .balign 4 - -.text -glabel func_800A9258 -/* B203F8 800A9258 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* B203FC 800A925C AFB60040 */ sw $s6, 0x40($sp) -/* B20400 800A9260 3C160001 */ lui $s6, (0x00018000 >> 16) # lui $s6, 1 -/* B20404 800A9264 36D68000 */ ori $s6, (0x00018000 & 0xFFFF) # ori $s6, $s6, 0x8000 -/* B20408 800A9268 AFB1002C */ sw $s1, 0x2c($sp) -/* B2040C 800A926C AFBF0044 */ sw $ra, 0x44($sp) -/* B20410 800A9270 AFB5003C */ sw $s5, 0x3c($sp) -/* B20414 800A9274 AFB40038 */ sw $s4, 0x38($sp) -/* B20418 800A9278 AFB30034 */ sw $s3, 0x34($sp) -/* B2041C 800A927C AFB20030 */ sw $s2, 0x30($sp) -/* B20420 800A9280 AFB00028 */ sw $s0, 0x28($sp) -/* B20424 800A9284 AFA5004C */ sw $a1, 0x4c($sp) -/* B20428 800A9288 00968821 */ addu $s1, $a0, $s6 -/* B2042C 800A928C 862E4A38 */ lh $t6, 0x4a38($s1) -/* B20430 800A9290 0080A825 */ move $s5, $a0 -/* B20434 800A9294 11C00005 */ beqz $t6, .L800A92AC -/* B20438 800A9298 00000000 */ nop -/* B2043C 800A929C 0C02A068 */ jal func_800A81A0 -/* B20440 800A92A0 00000000 */ nop -/* B20444 800A92A4 10000003 */ b .L800A92B4 -/* B20448 800A92A8 00000000 */ nop -.L800A92AC: -/* B2044C 800A92AC 0C02A0B2 */ jal func_800A82C8 -/* B20450 800A92B0 00000000 */ nop -.L800A92B4: -/* B20454 800A92B4 3C148016 */ lui $s4, %hi(gSaveContext) # $s4, 0x8016 -/* B20458 800A92B8 2694E660 */ addiu $s4, %lo(gSaveContext) # addiu $s4, $s4, -0x19a0 -/* B2045C 800A92BC 240F00BB */ li $t7, 187 -/* B20460 800A92C0 24180001 */ li $t8, 1 -/* B20464 800A92C4 24196AAB */ li $t9, 27307 -/* B20468 800A92C8 3408FFF1 */ li $t0, 65521 -/* B2046C 800A92CC AE8F0000 */ sw $t7, ($s4) -/* B20470 800A92D0 AE980004 */ sw $t8, 4($s4) -/* B20474 800A92D4 A699000C */ sh $t9, 0xc($s4) -/* B20478 800A92D8 AE880008 */ sw $t0, 8($s4) -/* B2047C 800A92DC 86294A38 */ lh $t1, 0x4a38($s1) -/* B20480 800A92E0 00008025 */ move $s0, $zero -/* B20484 800A92E4 2402005A */ li $v0, 90 -/* B20488 800A92E8 15200002 */ bnez $t1, .L800A92F4 -/* B2048C 800A92EC 24190045 */ li $t9, 69 -/* B20490 800A92F0 AE800008 */ sw $zero, 8($s4) -.L800A92F4: -/* B20494 800A92F4 862A4A38 */ lh $t2, 0x4a38($s1) -/* B20498 800A92F8 0290C021 */ addu $t8, $s4, $s0 -/* B2049C 800A92FC 000A58C0 */ sll $t3, $t2, 3 -/* B204A0 800A9300 02AB6021 */ addu $t4, $s5, $t3 -/* B204A4 800A9304 01906821 */ addu $t5, $t4, $s0 -/* B204A8 800A9308 26100001 */ addiu $s0, $s0, 1 -/* B204AC 800A930C 01B67021 */ addu $t6, $t5, $s6 -/* B204B0 800A9310 91CF49FC */ lbu $t7, 0x49fc($t6) -/* B204B4 800A9314 3210FFFF */ andi $s0, $s0, 0xffff -/* B204B8 800A9318 2A010008 */ slti $at, $s0, 8 -/* B204BC 800A931C 1420FFF5 */ bnez $at, .L800A92F4 -/* B204C0 800A9320 A30F0024 */ sb $t7, 0x24($t8) -/* B204C4 800A9324 2408004C */ li $t0, 76 -/* B204C8 800A9328 24090044 */ li $t1, 68 -/* B204CC 800A932C 240A0041 */ li $t2, 65 -/* B204D0 800A9330 A282001C */ sb $v0, 0x1c($s4) -/* B204D4 800A9334 A299001D */ sb $t9, 0x1d($s4) -/* B204D8 800A9338 A288001E */ sb $t0, 0x1e($s4) -/* B204DC 800A933C A289001F */ sb $t1, 0x1f($s4) -/* B204E0 800A9340 A28A0020 */ sb $t2, 0x20($s4) -/* B204E4 800A9344 A2820021 */ sb $v0, 0x21($s4) -/* B204E8 800A9348 922B49F4 */ lbu $t3, 0x49f4($s1) -/* B204EC 800A934C 3C048014 */ lui $a0, %hi(D_80140CDC) # $a0, 0x8014 -/* B204F0 800A9350 24840CDC */ addiu $a0, %lo(D_80140CDC) # addiu $a0, $a0, 0xcdc -/* B204F4 800A9354 A68B002C */ sh $t3, 0x2c($s4) -/* B204F8 800A9358 0C00084C */ jal osSyncPrintf -/* B204FC 800A935C 922549F4 */ lbu $a1, 0x49f4($s1) -/* B20500 800A9360 928C001F */ lbu $t4, 0x1f($s4) -/* B20504 800A9364 928D0020 */ lbu $t5, 0x20($s4) -/* B20508 800A9368 928E0021 */ lbu $t6, 0x21($s4) -/* B2050C 800A936C 3C048014 */ lui $a0, %hi(D_80140CF0) # $a0, 0x8014 -/* B20510 800A9370 24840CF0 */ addiu $a0, %lo(D_80140CF0) # addiu $a0, $a0, 0xcf0 -/* B20514 800A9374 9285001C */ lbu $a1, 0x1c($s4) -/* B20518 800A9378 9286001D */ lbu $a2, 0x1d($s4) -/* B2051C 800A937C 9287001E */ lbu $a3, 0x1e($s4) -/* B20520 800A9380 AFAC0010 */ sw $t4, 0x10($sp) -/* B20524 800A9384 AFAD0014 */ sw $t5, 0x14($sp) -/* B20528 800A9388 0C00084C */ jal osSyncPrintf -/* B2052C 800A938C AFAE0018 */ sw $t6, 0x18($sp) -/* B20530 800A9390 3C048014 */ lui $a0, %hi(D_80140D08) # $a0, 0x8014 -/* B20534 800A9394 0C00084C */ jal osSyncPrintf -/* B20538 800A9398 24840D08 */ addiu $a0, %lo(D_80140D08) # addiu $a0, $a0, 0xd08 -/* B2053C 800A939C 02808825 */ move $s1, $s4 -/* B20540 800A93A0 00009025 */ move $s2, $zero -/* B20544 800A93A4 00009825 */ move $s3, $zero -/* B20548 800A93A8 00008025 */ move $s0, $zero -.L800A93AC: -/* B2054C 800A93AC 3C048014 */ lui $a0, %hi(D_80140D58) # $a0, 0x8014 -/* B20550 800A93B0 24840D58 */ addiu $a0, %lo(D_80140D58) # addiu $a0, $a0, 0xd58 -/* B20554 800A93B4 0C00084C */ jal osSyncPrintf -/* B20558 800A93B8 96250000 */ lhu $a1, ($s1) -/* B2055C 800A93BC 962F0000 */ lhu $t7, ($s1) -/* B20560 800A93C0 26520001 */ addiu $s2, $s2, 1 -/* B20564 800A93C4 3252FFFF */ andi $s2, $s2, 0xffff -/* B20568 800A93C8 24010020 */ li $at, 32 -/* B2056C 800A93CC 026F9821 */ addu $s3, $s3, $t7 -/* B20570 800A93D0 3273FFFF */ andi $s3, $s3, 0xffff -/* B20574 800A93D4 16410005 */ bne $s2, $at, .L800A93EC -/* B20578 800A93D8 26310002 */ addiu $s1, $s1, 2 -/* B2057C 800A93DC 3C048014 */ lui $a0, %hi(D_80140D5C) # $a0, 0x8014 -/* B20580 800A93E0 0C00084C */ jal osSyncPrintf -/* B20584 800A93E4 24840D5C */ addiu $a0, %lo(D_80140D5C) # addiu $a0, $a0, 0xd5c -/* B20588 800A93E8 00009025 */ move $s2, $zero -.L800A93EC: -/* B2058C 800A93EC 26100001 */ addiu $s0, $s0, 1 -/* B20590 800A93F0 3210FFFF */ andi $s0, $s0, 0xffff -/* B20594 800A93F4 2E0109AA */ sltiu $at, $s0, 0x9aa -/* B20598 800A93F8 1420FFEC */ bnez $at, .L800A93AC -/* B2059C 800A93FC 00000000 */ nop -/* B205A0 800A9400 3C048014 */ lui $a0, %hi(D_80140D60) # $a0, 0x8014 -/* B205A4 800A9404 A6931352 */ sh $s3, 0x1352($s4) -/* B205A8 800A9408 24840D60 */ addiu $a0, %lo(D_80140D60) # addiu $a0, $a0, 0xd60 -/* B205AC 800A940C 0C00084C */ jal osSyncPrintf -/* B205B0 800A9410 3265FFFF */ andi $a1, $s3, 0xffff -/* B205B4 800A9414 8E861354 */ lw $a2, 0x1354($s4) -/* B205B8 800A9418 3C138013 */ lui $s3, %hi(D_8012A4E0) # $s3, 0x8013 -/* B205BC 800A941C 2673A4E0 */ addiu $s3, %lo(D_8012A4E0) # addiu $s3, $s3, -0x5b20 -/* B205C0 800A9420 0006C040 */ sll $t8, $a2, 1 -/* B205C4 800A9424 0278C821 */ addu $t9, $s3, $t8 -/* B205C8 800A9428 97300000 */ lhu $s0, ($t9) -/* B205CC 800A942C 3C048014 */ lui $a0, %hi(D_80140D74) # $a0, 0x8014 -/* B205D0 800A9430 24840D74 */ addiu $a0, %lo(D_80140D74) # addiu $a0, $a0, 0xd74 -/* B205D4 800A9434 0C00084C */ jal osSyncPrintf -/* B205D8 800A9438 02002825 */ move $a1, $s0 -/* B205DC 800A943C 8FA8004C */ lw $t0, 0x4c($sp) -/* B205E0 800A9440 02802825 */ move $a1, $s4 -/* B205E4 800A9444 24061354 */ li $a2, 4948 -/* B205E8 800A9448 8D090000 */ lw $t1, ($t0) -/* B205EC 800A944C 0C01A508 */ jal MemCopy -/* B205F0 800A9450 01302021 */ addu $a0, $t1, $s0 -/* B205F4 800A9454 8E911354 */ lw $s1, 0x1354($s4) -/* B205F8 800A9458 3C048014 */ lui $a0, %hi(D_80140D80) # $a0, 0x8014 -/* B205FC 800A945C 24840D80 */ addiu $a0, %lo(D_80140D80) # addiu $a0, $a0, 0xd80 -/* B20600 800A9460 00115040 */ sll $t2, $s1, 1 -/* B20604 800A9464 026A5821 */ addu $t3, $s3, $t2 -/* B20608 800A9468 95700006 */ lhu $s0, 6($t3) -/* B2060C 800A946C 26260003 */ addiu $a2, $s1, 3 -/* B20610 800A9470 0C00084C */ jal osSyncPrintf -/* B20614 800A9474 02002825 */ move $a1, $s0 -/* B20618 800A9478 8FAC004C */ lw $t4, 0x4c($sp) -/* B2061C 800A947C 02802825 */ move $a1, $s4 -/* B20620 800A9480 24061354 */ li $a2, 4948 -/* B20624 800A9484 8D8D0000 */ lw $t5, ($t4) -/* B20628 800A9488 0C01A508 */ jal MemCopy -/* B2062C 800A948C 01B02021 */ addu $a0, $t5, $s0 -/* B20630 800A9490 8FAE004C */ lw $t6, 0x4c($sp) -/* B20634 800A9494 3C040800 */ lui $a0, 0x800 -/* B20638 800A9498 34068000 */ li $a2, 32768 -/* B2063C 800A949C 24070001 */ li $a3, 1 -/* B20640 800A94A0 0C02A7A8 */ jal Sram_ReadWrite -/* B20644 800A94A4 8DC50000 */ lw $a1, ($t6) -/* B20648 800A94A8 3C048014 */ lui $a0, %hi(D_80140D8C) # $a0, 0x8014 -/* B2064C 800A94AC 0C00084C */ jal osSyncPrintf -/* B20650 800A94B0 24840D8C */ addiu $a0, %lo(D_80140D8C) # addiu $a0, $a0, 0xd8c -/* B20654 800A94B4 3C048014 */ lui $a0, %hi(D_80140D9C) # $a0, 0x8014 -/* B20658 800A94B8 24840D9C */ addiu $a0, %lo(D_80140D9C) # addiu $a0, $a0, 0xd9c -/* B2065C 800A94BC 0C00084C */ jal osSyncPrintf -/* B20660 800A94C0 8E851354 */ lw $a1, 0x1354($s4) -/* B20664 800A94C4 3C048014 */ lui $a0, %hi(D_80140DB8) # $a0, 0x8014 -/* B20668 800A94C8 240F00A4 */ li $t7, 164 -/* B2066C 800A94CC 2418002C */ li $t8, 44 -/* B20670 800A94D0 AFB80014 */ sw $t8, 0x14($sp) -/* B20674 800A94D4 AFAF0010 */ sw $t7, 0x10($sp) -/* B20678 800A94D8 24840DB8 */ addiu $a0, %lo(D_80140DB8) # addiu $a0, $a0, 0xdb8 -/* B2067C 800A94DC 24050022 */ li $a1, 34 -/* B20680 800A94E0 24060024 */ li $a2, 36 -/* B20684 800A94E4 0C00084C */ jal osSyncPrintf -/* B20688 800A94E8 2407002E */ li $a3, 46 -/* B2068C 800A94EC 8E821354 */ lw $v0, 0x1354($s4) -/* B20690 800A94F0 8FA8004C */ lw $t0, 0x4c($sp) -/* B20694 800A94F4 3C010001 */ lui $at, (0x0001C9F6 >> 16) # lui $at, 1 -/* B20698 800A94F8 00021040 */ sll $v0, $v0, 1 -/* B2069C 800A94FC 0262C821 */ addu $t9, $s3, $v0 -/* B206A0 800A9500 97320000 */ lhu $s2, ($t9) -/* B206A4 800A9504 8D090000 */ lw $t1, ($t0) -/* B206A8 800A9508 02A22021 */ addu $a0, $s5, $v0 -/* B206AC 800A950C 3421C9F6 */ ori $at, (0x0001C9F6 & 0xFFFF) # ori $at, $at, 0xc9f6 -/* B206B0 800A9510 01322821 */ addu $a1, $t1, $s2 -/* B206B4 800A9514 24A50022 */ addiu $a1, $a1, 0x22 -/* B206B8 800A9518 00812021 */ addu $a0, $a0, $at -/* B206BC 800A951C 0C01A508 */ jal MemCopy -/* B206C0 800A9520 24060002 */ li $a2, 2 -/* B206C4 800A9524 8FAC004C */ lw $t4, 0x4c($sp) -/* B206C8 800A9528 8E8A1354 */ lw $t2, 0x1354($s4) -/* B206CC 800A952C 3C010001 */ lui $at, (0x0001C9FC >> 16) # lui $at, 1 -/* B206D0 800A9530 8D8D0000 */ lw $t5, ($t4) -/* B206D4 800A9534 000A58C0 */ sll $t3, $t2, 3 -/* B206D8 800A9538 02AB2021 */ addu $a0, $s5, $t3 -/* B206DC 800A953C 3421C9FC */ ori $at, (0x0001C9FC & 0xFFFF) # ori $at, $at, 0xc9fc -/* B206E0 800A9540 01B22821 */ addu $a1, $t5, $s2 -/* B206E4 800A9544 24A50024 */ addiu $a1, $a1, 0x24 -/* B206E8 800A9548 00812021 */ addu $a0, $a0, $at -/* B206EC 800A954C 0C01A508 */ jal MemCopy -/* B206F0 800A9550 24060008 */ li $a2, 8 -/* B206F4 800A9554 8FB8004C */ lw $t8, 0x4c($sp) -/* B206F8 800A9558 8E8E1354 */ lw $t6, 0x1354($s4) -/* B206FC 800A955C 3C010001 */ lui $at, (0x0001CA14 >> 16) # lui $at, 1 -/* B20700 800A9560 8F190000 */ lw $t9, ($t8) -/* B20704 800A9564 000E7840 */ sll $t7, $t6, 1 -/* B20708 800A9568 02AF2021 */ addu $a0, $s5, $t7 -/* B2070C 800A956C 3421CA14 */ ori $at, (0x0001CA14 & 0xFFFF) # ori $at, $at, 0xca14 -/* B20710 800A9570 03322821 */ addu $a1, $t9, $s2 -/* B20714 800A9574 24A5002E */ addiu $a1, $a1, 0x2e -/* B20718 800A9578 00812021 */ addu $a0, $a0, $at -/* B2071C 800A957C 0C01A508 */ jal MemCopy -/* B20720 800A9580 24060002 */ li $a2, 2 -/* B20724 800A9584 8FAA004C */ lw $t2, 0x4c($sp) -/* B20728 800A9588 8E881354 */ lw $t0, 0x1354($s4) -/* B2072C 800A958C 3C010001 */ lui $at, (0x0001CA1C >> 16) # lui $at, 1 -/* B20730 800A9590 8D4B0000 */ lw $t3, ($t2) -/* B20734 800A9594 00084880 */ sll $t1, $t0, 2 -/* B20738 800A9598 02A92021 */ addu $a0, $s5, $t1 -/* B2073C 800A959C 3421CA1C */ ori $at, (0x0001CA1C & 0xFFFF) # ori $at, $at, 0xca1c -/* B20740 800A95A0 01722821 */ addu $a1, $t3, $s2 -/* B20744 800A95A4 24A500A4 */ addiu $a1, $a1, 0xa4 -/* B20748 800A95A8 00812021 */ addu $a0, $a0, $at -/* B2074C 800A95AC 0C01A508 */ jal MemCopy -/* B20750 800A95B0 24060004 */ li $a2, 4 -/* B20754 800A95B4 8FAE004C */ lw $t6, 0x4c($sp) -/* B20758 800A95B8 8E8C1354 */ lw $t4, 0x1354($s4) -/* B2075C 800A95BC 3C010001 */ lui $at, (0x0001CA28 >> 16) # lui $at, 1 -/* B20760 800A95C0 8DCF0000 */ lw $t7, ($t6) -/* B20764 800A95C4 000C6840 */ sll $t5, $t4, 1 -/* B20768 800A95C8 02AD2021 */ addu $a0, $s5, $t5 -/* B2076C 800A95CC 3421CA28 */ ori $at, (0x0001CA28 & 0xFFFF) # ori $at, $at, 0xca28 -/* B20770 800A95D0 01F22821 */ addu $a1, $t7, $s2 -/* B20774 800A95D4 24A5002C */ addiu $a1, $a1, 0x2c -/* B20778 800A95D8 00812021 */ addu $a0, $a0, $at -/* B2077C 800A95DC 0C01A508 */ jal MemCopy -/* B20780 800A95E0 24060002 */ li $a2, 2 -/* B20784 800A95E4 8FB9004C */ lw $t9, 0x4c($sp) -/* B20788 800A95E8 8E981354 */ lw $t8, 0x1354($s4) -/* B2078C 800A95EC 3C010001 */ lui $at, (0x0001CA2E >> 16) # lui $at, 1 -/* B20790 800A95F0 8F280000 */ lw $t0, ($t9) -/* B20794 800A95F4 3421CA2E */ ori $at, (0x0001CA2E & 0xFFFF) # ori $at, $at, 0xca2e -/* B20798 800A95F8 02B82021 */ addu $a0, $s5, $t8 -/* B2079C 800A95FC 01122821 */ addu $a1, $t0, $s2 -/* B207A0 800A9600 24A500CF */ addiu $a1, $a1, 0xcf -/* B207A4 800A9604 00812021 */ addu $a0, $a0, $at -/* B207A8 800A9608 0C01A508 */ jal MemCopy -/* B207AC 800A960C 24060001 */ li $a2, 1 -/* B207B0 800A9610 8FAB004C */ lw $t3, 0x4c($sp) -/* B207B4 800A9614 8E891354 */ lw $t1, 0x1354($s4) -/* B207B8 800A9618 3C010001 */ lui $at, (0x0001CA32 >> 16) # lui $at, 1 -/* B207BC 800A961C 8D6C0000 */ lw $t4, ($t3) -/* B207C0 800A9620 00095040 */ sll $t2, $t1, 1 -/* B207C4 800A9624 02AA2021 */ addu $a0, $s5, $t2 -/* B207C8 800A9628 3421CA32 */ ori $at, (0x0001CA32 & 0xFFFF) # ori $at, $at, 0xca32 -/* B207CC 800A962C 01922821 */ addu $a1, $t4, $s2 -/* B207D0 800A9630 24A50030 */ addiu $a1, $a1, 0x30 -/* B207D4 800A9634 00812021 */ addu $a0, $a0, $at -/* B207D8 800A9638 0C01A508 */ jal MemCopy -/* B207DC 800A963C 24060002 */ li $a2, 2 -/* B207E0 800A9640 8E911354 */ lw $s1, 0x1354($s4) -/* B207E4 800A9644 3C048014 */ lui $a0, %hi(D_80140DF0) # $a0, 0x8014 -/* B207E8 800A9648 24840DF0 */ addiu $a0, %lo(D_80140DF0) # addiu $a0, $a0, 0xdf0 -/* B207EC 800A964C 00116840 */ sll $t5, $s1, 1 -/* B207F0 800A9650 02AD7021 */ addu $t6, $s5, $t5 -/* B207F4 800A9654 01D67821 */ addu $t7, $t6, $s6 -/* B207F8 800A9658 85E64A28 */ lh $a2, 0x4a28($t7) -/* B207FC 800A965C 0C00084C */ jal osSyncPrintf -/* B20800 800A9660 02202825 */ move $a1, $s1 -/* B20804 800A9664 8E911354 */ lw $s1, 0x1354($s4) -/* B20808 800A9668 3C048014 */ lui $a0, %hi(D_80140E00) # $a0, 0x8014 -/* B2080C 800A966C 24840E00 */ addiu $a0, %lo(D_80140E00) # addiu $a0, $a0, 0xe00 -/* B20810 800A9670 02B1C021 */ addu $t8, $s5, $s1 -/* B20814 800A9674 0316C821 */ addu $t9, $t8, $s6 -/* B20818 800A9678 83264A2E */ lb $a2, 0x4a2e($t9) -/* B2081C 800A967C 0C00084C */ jal osSyncPrintf -/* B20820 800A9680 02202825 */ move $a1, $s1 -/* B20824 800A9684 8E911354 */ lw $s1, 0x1354($s4) -/* B20828 800A9688 3C048014 */ lui $a0, %hi(D_80140E18) # $a0, 0x8014 -/* B2082C 800A968C 24840E18 */ addiu $a0, %lo(D_80140E18) # addiu $a0, $a0, 0xe18 -/* B20830 800A9690 00114040 */ sll $t0, $s1, 1 -/* B20834 800A9694 02A84821 */ addu $t1, $s5, $t0 -/* B20838 800A9698 01365021 */ addu $t2, $t1, $s6 -/* B2083C 800A969C 95464A32 */ lhu $a2, 0x4a32($t2) -/* B20840 800A96A0 0C00084C */ jal osSyncPrintf -/* B20844 800A96A4 02202825 */ move $a1, $s1 -/* B20848 800A96A8 8FBF0044 */ lw $ra, 0x44($sp) -/* B2084C 800A96AC 8FB00028 */ lw $s0, 0x28($sp) -/* B20850 800A96B0 8FB1002C */ lw $s1, 0x2c($sp) -/* B20854 800A96B4 8FB20030 */ lw $s2, 0x30($sp) -/* B20858 800A96B8 8FB30034 */ lw $s3, 0x34($sp) -/* B2085C 800A96BC 8FB40038 */ lw $s4, 0x38($sp) -/* B20860 800A96C0 8FB5003C */ lw $s5, 0x3c($sp) -/* B20864 800A96C4 8FB60040 */ lw $s6, 0x40($sp) -/* B20868 800A96C8 03E00008 */ jr $ra -/* B2086C 800A96CC 27BD0048 */ addiu $sp, $sp, 0x48 - diff --git a/asm/non_matchings/code/z_sram/func_800A96D0.s b/asm/non_matchings/code/z_sram/func_800A96D0.s deleted file mode 100644 index 2a1eb49a27..0000000000 --- a/asm/non_matchings/code/z_sram/func_800A96D0.s +++ /dev/null @@ -1,81 +0,0 @@ -.rdata -glabel D_80140E2C - .asciz "CLEAR終了\n" - # EUC-JP: CLEAR終了 | Clear End - .balign 4 - -.text -glabel func_800A96D0 -/* B20870 800A96D0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* B20874 800A96D4 AFBF001C */ sw $ra, 0x1c($sp) -/* B20878 800A96D8 AFB00018 */ sw $s0, 0x18($sp) -/* B2087C 800A96DC AFA40028 */ sw $a0, 0x28($sp) -/* B20880 800A96E0 0C02A068 */ jal func_800A81A0 -/* B20884 800A96E4 AFA5002C */ sw $a1, 0x2c($sp) -/* B20888 800A96E8 8FA20028 */ lw $v0, 0x28($sp) -/* B2088C 800A96EC 3C010001 */ lui $at, (0x00018000 >> 16) # lui $at, 1 -/* B20890 800A96F0 34218000 */ ori $at, (0x00018000 & 0xFFFF) # ori $at, $at, 0x8000 -/* B20894 800A96F4 00411021 */ addu $v0, $v0, $at -/* B20898 800A96F8 844E4A46 */ lh $t6, 0x4a46($v0) -/* B2089C 800A96FC 8FB8002C */ lw $t8, 0x2c($sp) -/* B208A0 800A9700 3C108013 */ lui $s0, %hi(D_8012A4E0) -/* B208A4 800A9704 000E7840 */ sll $t7, $t6, 1 -/* B208A8 800A9708 020F8021 */ addu $s0, $s0, $t7 -/* B208AC 800A970C 9610A4E0 */ lhu $s0, %lo(D_8012A4E0)($s0) -/* B208B0 800A9710 8F190000 */ lw $t9, ($t8) -/* B208B4 800A9714 3C058016 */ lui $a1, %hi(gSaveContext) # $a1, 0x8016 -/* B208B8 800A9718 24A5E660 */ addiu $a1, %lo(gSaveContext) # addiu $a1, $a1, -0x19a0 -/* B208BC 800A971C AFA20020 */ sw $v0, 0x20($sp) -/* B208C0 800A9720 24061354 */ li $a2, 4948 -/* B208C4 800A9724 0C01A508 */ jal MemCopy -/* B208C8 800A9728 03302021 */ addu $a0, $t9, $s0 -/* B208CC 800A972C 3C010800 */ lui $at, 0x800 -/* B208D0 800A9730 3C058016 */ lui $a1, %hi(gSaveContext) # $a1, 0x8016 -/* B208D4 800A9734 24A5E660 */ addiu $a1, %lo(gSaveContext) # addiu $a1, $a1, -0x19a0 -/* B208D8 800A9738 02012021 */ addu $a0, $s0, $at -/* B208DC 800A973C 24061450 */ li $a2, 5200 -/* B208E0 800A9740 0C02A7A8 */ jal Sram_ReadWrite -/* B208E4 800A9744 24070001 */ li $a3, 1 -/* B208E8 800A9748 8FA90020 */ lw $t1, 0x20($sp) -/* B208EC 800A974C 8FAC002C */ lw $t4, 0x2c($sp) -/* B208F0 800A9750 8FA80028 */ lw $t0, 0x28($sp) -/* B208F4 800A9754 852A4A46 */ lh $t2, 0x4a46($t1) -/* B208F8 800A9758 8D8D0000 */ lw $t5, ($t4) -/* B208FC 800A975C 3C010001 */ lui $at, (0x0001CA28 >> 16) # lui $at, 1 -/* B20900 800A9760 000A5840 */ sll $t3, $t2, 1 -/* B20904 800A9764 3421CA28 */ ori $at, (0x0001CA28 & 0xFFFF) # ori $at, $at, 0xca28 -/* B20908 800A9768 010B2021 */ addu $a0, $t0, $t3 -/* B2090C 800A976C 01B02821 */ addu $a1, $t5, $s0 -/* B20910 800A9770 24A5002C */ addiu $a1, $a1, 0x2c -/* B20914 800A9774 00812021 */ addu $a0, $a0, $at -/* B20918 800A9778 0C01A508 */ jal MemCopy -/* B2091C 800A977C 24060002 */ li $a2, 2 -/* B20920 800A9780 8FAE0020 */ lw $t6, 0x20($sp) -/* B20924 800A9784 8FB9002C */ lw $t9, 0x2c($sp) -/* B20928 800A9788 3C108013 */ lui $s0, %hi(D_8012A4E6) -/* B2092C 800A978C 85CF4A46 */ lh $t7, 0x4a46($t6) -/* B20930 800A9790 8F290000 */ lw $t1, ($t9) -/* B20934 800A9794 3C058016 */ lui $a1, %hi(gSaveContext) # $a1, 0x8016 -/* B20938 800A9798 000FC040 */ sll $t8, $t7, 1 -/* B2093C 800A979C 02188021 */ addu $s0, $s0, $t8 -/* B20940 800A97A0 9610A4E6 */ lhu $s0, %lo(D_8012A4E6)($s0) -/* B20944 800A97A4 24A5E660 */ addiu $a1, %lo(gSaveContext) # addiu $a1, $a1, -0x19a0 -/* B20948 800A97A8 24061354 */ li $a2, 4948 -/* B2094C 800A97AC 0C01A508 */ jal MemCopy -/* B20950 800A97B0 01302021 */ addu $a0, $t1, $s0 -/* B20954 800A97B4 3C010800 */ lui $at, 0x800 -/* B20958 800A97B8 3C058016 */ lui $a1, %hi(gSaveContext) # $a1, 0x8016 -/* B2095C 800A97BC 24A5E660 */ addiu $a1, %lo(gSaveContext) # addiu $a1, $a1, -0x19a0 -/* B20960 800A97C0 02012021 */ addu $a0, $s0, $at -/* B20964 800A97C4 24061450 */ li $a2, 5200 -/* B20968 800A97C8 0C02A7A8 */ jal Sram_ReadWrite -/* B2096C 800A97CC 24070001 */ li $a3, 1 -/* B20970 800A97D0 3C048014 */ lui $a0, %hi(D_80140E2C) # $a0, 0x8014 -/* B20974 800A97D4 0C00084C */ jal osSyncPrintf -/* B20978 800A97D8 24840E2C */ addiu $a0, %lo(D_80140E2C) # addiu $a0, $a0, 0xe2c -/* B2097C 800A97DC 8FBF001C */ lw $ra, 0x1c($sp) -/* B20980 800A97E0 8FB00018 */ lw $s0, 0x18($sp) -/* B20984 800A97E4 27BD0028 */ addiu $sp, $sp, 0x28 -/* B20988 800A97E8 03E00008 */ jr $ra -/* B2098C 800A97EC 00000000 */ nop - diff --git a/asm/non_matchings/code/z_sram/func_800A97F0.s b/asm/non_matchings/code/z_sram/func_800A97F0.s deleted file mode 100644 index 0f759c92c0..0000000000 --- a/asm/non_matchings/code/z_sram/func_800A97F0.s +++ /dev/null @@ -1,193 +0,0 @@ -.rdata -glabel D_80140E3C - .asciz "READ=%d(%x) COPY=%d(%x)\n" - # EUC-JP: READ=%d(%x) COPY=%d - .balign 4 - -glabel D_80140E60 - .asciz "f_64dd[%d]=%d\n" - .balign 4 - -glabel D_80140E70 - .asciz "heart_status[%d]=%d\n" - .balign 4 - -glabel D_80140E88 - .asciz "COPY終了\n" - # EUC-JP: COPY終了 | Copy end - .balign 4 - -.text -glabel func_800A97F0 -/* B20990 800A97F0 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* B20994 800A97F4 AFB3002C */ sw $s3, 0x2c($sp) -/* B20998 800A97F8 3C010001 */ lui $at, (0x00018000 >> 16) # lui $at, 1 -/* B2099C 800A97FC 00809825 */ move $s3, $a0 -/* B209A0 800A9800 AFB20028 */ sw $s2, 0x28($sp) -/* B209A4 800A9804 AFB10024 */ sw $s1, 0x24($sp) -/* B209A8 800A9808 34218000 */ ori $at, (0x00018000 & 0xFFFF) # ori $at, $at, 0x8000 -/* B209AC 800A980C AFBF0034 */ sw $ra, 0x34($sp) -/* B209B0 800A9810 AFB40030 */ sw $s4, 0x30($sp) -/* B209B4 800A9814 AFB00020 */ sw $s0, 0x20($sp) -/* B209B8 800A9818 02618821 */ addu $s1, $s3, $at -/* B209BC 800A981C 86274A5E */ lh $a3, 0x4a5e($s1) -/* B209C0 800A9820 00A09025 */ move $s2, $a1 -/* B209C4 800A9824 86254A46 */ lh $a1, 0x4a46($s1) -/* B209C8 800A9828 3C148013 */ lui $s4, %hi(D_8012A4E0) # $s4, 0x8013 -/* B209CC 800A982C 2694A4E0 */ addiu $s4, %lo(D_8012A4E0) # addiu $s4, $s4, -0x5b20 -/* B209D0 800A9830 0007C040 */ sll $t8, $a3, 1 -/* B209D4 800A9834 0298C821 */ addu $t9, $s4, $t8 -/* B209D8 800A9838 00057040 */ sll $t6, $a1, 1 -/* B209DC 800A983C 97280000 */ lhu $t0, ($t9) -/* B209E0 800A9840 028E7821 */ addu $t7, $s4, $t6 -/* B209E4 800A9844 95E60000 */ lhu $a2, ($t7) -/* B209E8 800A9848 3C048014 */ lui $a0, %hi(D_80140E3C) # $a0, 0x8014 -/* B209EC 800A984C 24840E3C */ addiu $a0, %lo(D_80140E3C) # addiu $a0, $a0, 0xe3c -/* B209F0 800A9850 0C00084C */ jal osSyncPrintf -/* B209F4 800A9854 AFA80010 */ sw $t0, 0x10($sp) -/* B209F8 800A9858 86294A46 */ lh $t1, 0x4a46($s1) -/* B209FC 800A985C 8E4C0000 */ lw $t4, ($s2) -/* B20A00 800A9860 3C048016 */ lui $a0, %hi(gSaveContext) # $a0, 0x8016 -/* B20A04 800A9864 00095040 */ sll $t2, $t1, 1 -/* B20A08 800A9868 028A5821 */ addu $t3, $s4, $t2 -/* B20A0C 800A986C 95700000 */ lhu $s0, ($t3) -/* B20A10 800A9870 2484E660 */ addiu $a0, %lo(gSaveContext) # addiu $a0, $a0, -0x19a0 -/* B20A14 800A9874 24061354 */ li $a2, 4948 -/* B20A18 800A9878 0C01A508 */ jal MemCopy -/* B20A1C 800A987C 01902821 */ addu $a1, $t4, $s0 -/* B20A20 800A9880 862D4A5E */ lh $t5, 0x4a5e($s1) -/* B20A24 800A9884 8E580000 */ lw $t8, ($s2) -/* B20A28 800A9888 3C058016 */ lui $a1, %hi(gSaveContext) # $a1, 0x8016 -/* B20A2C 800A988C 000D7040 */ sll $t6, $t5, 1 -/* B20A30 800A9890 028E7821 */ addu $t7, $s4, $t6 -/* B20A34 800A9894 95F00000 */ lhu $s0, ($t7) -/* B20A38 800A9898 24A5E660 */ addiu $a1, %lo(gSaveContext) # addiu $a1, $a1, -0x19a0 -/* B20A3C 800A989C 24061354 */ li $a2, 4948 -/* B20A40 800A98A0 0C01A508 */ jal MemCopy -/* B20A44 800A98A4 03102021 */ addu $a0, $t8, $s0 -/* B20A48 800A98A8 86394A5E */ lh $t9, 0x4a5e($s1) -/* B20A4C 800A98AC 8E4A0000 */ lw $t2, ($s2) -/* B20A50 800A98B0 3C058016 */ lui $a1, %hi(gSaveContext) # $a1, 0x8016 -/* B20A54 800A98B4 00194040 */ sll $t0, $t9, 1 -/* B20A58 800A98B8 02884821 */ addu $t1, $s4, $t0 -/* B20A5C 800A98BC 95300006 */ lhu $s0, 6($t1) -/* B20A60 800A98C0 24A5E660 */ addiu $a1, %lo(gSaveContext) # addiu $a1, $a1, -0x19a0 -/* B20A64 800A98C4 24061354 */ li $a2, 4948 -/* B20A68 800A98C8 0C01A508 */ jal MemCopy -/* B20A6C 800A98CC 01502021 */ addu $a0, $t2, $s0 -/* B20A70 800A98D0 3C040800 */ lui $a0, 0x800 -/* B20A74 800A98D4 8E450000 */ lw $a1, ($s2) -/* B20A78 800A98D8 34068000 */ li $a2, 32768 -/* B20A7C 800A98DC 0C02A7A8 */ jal Sram_ReadWrite -/* B20A80 800A98E0 24070001 */ li $a3, 1 -/* B20A84 800A98E4 86224A5E */ lh $v0, 0x4a5e($s1) -/* B20A88 800A98E8 8E4C0000 */ lw $t4, ($s2) -/* B20A8C 800A98EC 3C010001 */ lui $at, (0x0001C9F6 >> 16) # lui $at, 1 -/* B20A90 800A98F0 00021040 */ sll $v0, $v0, 1 -/* B20A94 800A98F4 02825821 */ addu $t3, $s4, $v0 -/* B20A98 800A98F8 95700000 */ lhu $s0, ($t3) -/* B20A9C 800A98FC 02622021 */ addu $a0, $s3, $v0 -/* B20AA0 800A9900 3421C9F6 */ ori $at, (0x0001C9F6 & 0xFFFF) # ori $at, $at, 0xc9f6 -/* B20AA4 800A9904 01902821 */ addu $a1, $t4, $s0 -/* B20AA8 800A9908 24A50022 */ addiu $a1, $a1, 0x22 -/* B20AAC 800A990C 00812021 */ addu $a0, $a0, $at -/* B20AB0 800A9910 0C01A508 */ jal MemCopy -/* B20AB4 800A9914 24060002 */ li $a2, 2 -/* B20AB8 800A9918 862D4A5E */ lh $t5, 0x4a5e($s1) -/* B20ABC 800A991C 8E4F0000 */ lw $t7, ($s2) -/* B20AC0 800A9920 3C010001 */ lui $at, (0x0001C9FC >> 16) # lui $at, 1 -/* B20AC4 800A9924 000D70C0 */ sll $t6, $t5, 3 -/* B20AC8 800A9928 026E2021 */ addu $a0, $s3, $t6 -/* B20ACC 800A992C 3421C9FC */ ori $at, (0x0001C9FC & 0xFFFF) # ori $at, $at, 0xc9fc -/* B20AD0 800A9930 01F02821 */ addu $a1, $t7, $s0 -/* B20AD4 800A9934 24A50024 */ addiu $a1, $a1, 0x24 -/* B20AD8 800A9938 00812021 */ addu $a0, $a0, $at -/* B20ADC 800A993C 0C01A508 */ jal MemCopy -/* B20AE0 800A9940 24060008 */ li $a2, 8 -/* B20AE4 800A9944 86384A5E */ lh $t8, 0x4a5e($s1) -/* B20AE8 800A9948 8E480000 */ lw $t0, ($s2) -/* B20AEC 800A994C 3C010001 */ lui $at, (0x0001CA14 >> 16) # lui $at, 1 -/* B20AF0 800A9950 0018C840 */ sll $t9, $t8, 1 -/* B20AF4 800A9954 02792021 */ addu $a0, $s3, $t9 -/* B20AF8 800A9958 3421CA14 */ ori $at, (0x0001CA14 & 0xFFFF) # ori $at, $at, 0xca14 -/* B20AFC 800A995C 01102821 */ addu $a1, $t0, $s0 -/* B20B00 800A9960 24A5002E */ addiu $a1, $a1, 0x2e -/* B20B04 800A9964 00812021 */ addu $a0, $a0, $at -/* B20B08 800A9968 0C01A508 */ jal MemCopy -/* B20B0C 800A996C 24060002 */ li $a2, 2 -/* B20B10 800A9970 86294A5E */ lh $t1, 0x4a5e($s1) -/* B20B14 800A9974 8E4B0000 */ lw $t3, ($s2) -/* B20B18 800A9978 3C010001 */ lui $at, (0x0001CA1C >> 16) # lui $at, 1 -/* B20B1C 800A997C 00095080 */ sll $t2, $t1, 2 -/* B20B20 800A9980 026A2021 */ addu $a0, $s3, $t2 -/* B20B24 800A9984 3421CA1C */ ori $at, (0x0001CA1C & 0xFFFF) # ori $at, $at, 0xca1c -/* B20B28 800A9988 01702821 */ addu $a1, $t3, $s0 -/* B20B2C 800A998C 24A500A4 */ addiu $a1, $a1, 0xa4 -/* B20B30 800A9990 00812021 */ addu $a0, $a0, $at -/* B20B34 800A9994 0C01A508 */ jal MemCopy -/* B20B38 800A9998 24060004 */ li $a2, 4 -/* B20B3C 800A999C 862C4A5E */ lh $t4, 0x4a5e($s1) -/* B20B40 800A99A0 8E4E0000 */ lw $t6, ($s2) -/* B20B44 800A99A4 3C010001 */ lui $at, (0x0001CA28 >> 16) # lui $at, 1 -/* B20B48 800A99A8 000C6840 */ sll $t5, $t4, 1 -/* B20B4C 800A99AC 026D2021 */ addu $a0, $s3, $t5 -/* B20B50 800A99B0 3421CA28 */ ori $at, (0x0001CA28 & 0xFFFF) # ori $at, $at, 0xca28 -/* B20B54 800A99B4 01D02821 */ addu $a1, $t6, $s0 -/* B20B58 800A99B8 24A5002C */ addiu $a1, $a1, 0x2c -/* B20B5C 800A99BC 00812021 */ addu $a0, $a0, $at -/* B20B60 800A99C0 0C01A508 */ jal MemCopy -/* B20B64 800A99C4 24060002 */ li $a2, 2 -/* B20B68 800A99C8 862F4A5E */ lh $t7, 0x4a5e($s1) -/* B20B6C 800A99CC 8E580000 */ lw $t8, ($s2) -/* B20B70 800A99D0 3C010001 */ lui $at, (0x0001CA2E >> 16) # lui $at, 1 -/* B20B74 800A99D4 3421CA2E */ ori $at, (0x0001CA2E & 0xFFFF) # ori $at, $at, 0xca2e -/* B20B78 800A99D8 026F2021 */ addu $a0, $s3, $t7 -/* B20B7C 800A99DC 03102821 */ addu $a1, $t8, $s0 -/* B20B80 800A99E0 24A500CF */ addiu $a1, $a1, 0xcf -/* B20B84 800A99E4 00812021 */ addu $a0, $a0, $at -/* B20B88 800A99E8 0C01A508 */ jal MemCopy -/* B20B8C 800A99EC 24060001 */ li $a2, 1 -/* B20B90 800A99F0 86394A5E */ lh $t9, 0x4a5e($s1) -/* B20B94 800A99F4 8E490000 */ lw $t1, ($s2) -/* B20B98 800A99F8 3C010001 */ lui $at, (0x0001CA32 >> 16) # lui $at, 1 -/* B20B9C 800A99FC 00194040 */ sll $t0, $t9, 1 -/* B20BA0 800A9A00 02682021 */ addu $a0, $s3, $t0 -/* B20BA4 800A9A04 3421CA32 */ ori $at, (0x0001CA32 & 0xFFFF) # ori $at, $at, 0xca32 -/* B20BA8 800A9A08 01302821 */ addu $a1, $t1, $s0 -/* B20BAC 800A9A0C 24A50030 */ addiu $a1, $a1, 0x30 -/* B20BB0 800A9A10 00812021 */ addu $a0, $a0, $at -/* B20BB4 800A9A14 0C01A508 */ jal MemCopy -/* B20BB8 800A9A18 24060002 */ li $a2, 2 -/* B20BBC 800A9A1C 3C108016 */ lui $s0, %hi(gSaveContext+0x1354) # $s0, 0x8016 -/* B20BC0 800A9A20 8E10F9B4 */ lw $s0, %lo(gSaveContext+0x1354)($s0) -/* B20BC4 800A9A24 3C060002 */ lui $a2, 2 -/* B20BC8 800A9A28 3C048014 */ lui $a0, %hi(D_80140E60) # $a0, 0x8014 -/* B20BCC 800A9A2C 00105040 */ sll $t2, $s0, 1 -/* B20BD0 800A9A30 026A5821 */ addu $t3, $s3, $t2 -/* B20BD4 800A9A34 00CB3021 */ addu $a2, $a2, $t3 -/* B20BD8 800A9A38 84C6CA28 */ lh $a2, -0x35d8($a2) -/* B20BDC 800A9A3C 24840E60 */ addiu $a0, %lo(D_80140E60) # addiu $a0, $a0, 0xe60 -/* B20BE0 800A9A40 0C00084C */ jal osSyncPrintf -/* B20BE4 800A9A44 02002825 */ move $a1, $s0 -/* B20BE8 800A9A48 3C108016 */ lui $s0, %hi(gSaveContext+0x1354) # $s0, 0x8016 -/* B20BEC 800A9A4C 8E10F9B4 */ lw $s0, %lo(gSaveContext+0x1354)($s0) -/* B20BF0 800A9A50 3C060002 */ lui $a2, 2 -/* B20BF4 800A9A54 3C048014 */ lui $a0, %hi(D_80140E70) # $a0, 0x8014 -/* B20BF8 800A9A58 02706021 */ addu $t4, $s3, $s0 -/* B20BFC 800A9A5C 00CC3021 */ addu $a2, $a2, $t4 -/* B20C00 800A9A60 80C6CA2E */ lb $a2, -0x35d2($a2) -/* B20C04 800A9A64 24840E70 */ addiu $a0, %lo(D_80140E70) # addiu $a0, $a0, 0xe70 -/* B20C08 800A9A68 0C00084C */ jal osSyncPrintf -/* B20C0C 800A9A6C 02002825 */ move $a1, $s0 -/* B20C10 800A9A70 3C048014 */ lui $a0, %hi(D_80140E88) # $a0, 0x8014 -/* B20C14 800A9A74 0C00084C */ jal osSyncPrintf -/* B20C18 800A9A78 24840E88 */ addiu $a0, %lo(D_80140E88) # addiu $a0, $a0, 0xe88 -/* B20C1C 800A9A7C 8FBF0034 */ lw $ra, 0x34($sp) -/* B20C20 800A9A80 8FB00020 */ lw $s0, 0x20($sp) -/* B20C24 800A9A84 8FB10024 */ lw $s1, 0x24($sp) -/* B20C28 800A9A88 8FB20028 */ lw $s2, 0x28($sp) -/* B20C2C 800A9A8C 8FB3002C */ lw $s3, 0x2c($sp) -/* B20C30 800A9A90 8FB40030 */ lw $s4, 0x30($sp) -/* B20C34 800A9A94 03E00008 */ jr $ra -/* B20C38 800A9A98 27BD0038 */ addiu $sp, $sp, 0x38 - diff --git a/asm/non_matchings/code/z_sram/func_800A9A9C.s b/asm/non_matchings/code/z_sram/func_800A9A9C.s deleted file mode 100644 index e555be677f..0000000000 --- a/asm/non_matchings/code/z_sram/func_800A9A9C.s +++ /dev/null @@ -1,15 +0,0 @@ -glabel func_800A9A9C -/* B20C3C 800A9A9C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* B20C40 800A9AA0 AFA40018 */ sw $a0, 0x18($sp) -/* B20C44 800A9AA4 8FAE0018 */ lw $t6, 0x18($sp) -/* B20C48 800A9AA8 AFBF0014 */ sw $ra, 0x14($sp) -/* B20C4C 800A9AAC 3C040800 */ lui $a0, 0x800 -/* B20C50 800A9AB0 24060010 */ li $a2, 16 -/* B20C54 800A9AB4 24070001 */ li $a3, 1 -/* B20C58 800A9AB8 0C02A7A8 */ jal Sram_ReadWrite -/* B20C5C 800A9ABC 8DC50000 */ lw $a1, ($t6) -/* B20C60 800A9AC0 8FBF0014 */ lw $ra, 0x14($sp) -/* B20C64 800A9AC4 27BD0018 */ addiu $sp, $sp, 0x18 -/* B20C68 800A9AC8 03E00008 */ jr $ra -/* B20C6C 800A9ACC 00000000 */ nop - diff --git a/asm/non_matchings/code/z_sram/func_800A9AD0.s b/asm/non_matchings/code/z_sram/func_800A9AD0.s deleted file mode 100644 index 376a42dc78..0000000000 --- a/asm/non_matchings/code/z_sram/func_800A9AD0.s +++ /dev/null @@ -1,177 +0,0 @@ -.rdata -glabel D_80140E98 - .asciz "sram_initialize( Game *game, Sram *sram )\n" - .balign 4 - -glabel D_80140EC4 - .asciz "SRAM破壊!!!!!!\n" - # EUC-JP: SRAM破壊!!!!!! | SRAM destruction! ! ! ! ! ! - .balign 4 - -glabel D_80140EE0 - .asciz "SRAM破壊!!!!!!\n" - # EUC-JP: SRAM破壊!!!!!! | SRAM destruction! ! ! ! ! ! - .balign 4 - -glabel D_80140EFC - .asciz "GOOD!GOOD! サイズ=%d + %d = %d\n" - # EUC-JP: GOOD!GOOD! サイズ=%d + %d = %d | GOOD! GOOD! Size =% d +% d =% d - .balign 4 - -glabel D_80140F28 - .asciz "\x1b[34m" - .balign 4 - -glabel D_80140F30 - .asciz "Na_SetSoundOutputMode = %d\n" - .balign 4 - -glabel D_80140F4C - .asciz "Na_SetSoundOutputMode = %d\n" - .balign 4 - -glabel D_80140F68 - .asciz "Na_SetSoundOutputMode = %d\n" - .balign 4 - -glabel D_80140F84 - .asciz "\x1b[m" - .balign 4 - -.text -glabel func_800A9AD0 -/* B20C70 800A9AD0 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* B20C74 800A9AD4 AFA40030 */ sw $a0, 0x30($sp) -/* B20C78 800A9AD8 AFBF002C */ sw $ra, 0x2c($sp) -/* B20C7C 800A9ADC AFB1001C */ sw $s1, 0x1c($sp) -/* B20C80 800A9AE0 3C048014 */ lui $a0, %hi(D_80140E98) # $a0, 0x8014 -/* B20C84 800A9AE4 00A08825 */ move $s1, $a1 -/* B20C88 800A9AE8 AFB40028 */ sw $s4, 0x28($sp) -/* B20C8C 800A9AEC AFB30024 */ sw $s3, 0x24($sp) -/* B20C90 800A9AF0 AFB20020 */ sw $s2, 0x20($sp) -/* B20C94 800A9AF4 AFB00018 */ sw $s0, 0x18($sp) -/* B20C98 800A9AF8 0C00084C */ jal osSyncPrintf -/* B20C9C 800A9AFC 24840E98 */ addiu $a0, %lo(D_80140E98) # addiu $a0, $a0, 0xe98 -/* B20CA0 800A9B00 3C040800 */ lui $a0, 0x800 -/* B20CA4 800A9B04 8E250000 */ lw $a1, ($s1) -/* B20CA8 800A9B08 34068000 */ li $a2, 32768 -/* B20CAC 800A9B0C 0C02A7A8 */ jal Sram_ReadWrite -/* B20CB0 800A9B10 00003825 */ move $a3, $zero -/* B20CB4 800A9B14 3C148014 */ lui $s4, %hi(D_80140EC4) # $s4, 0x8014 -/* B20CB8 800A9B18 3C138016 */ lui $s3, %hi(gSaveContext) # $s3, 0x8016 -/* B20CBC 800A9B1C 3C128013 */ lui $s2, %hi(D_8012A4EC) # $s2, 0x8013 -/* B20CC0 800A9B20 2652A4EC */ addiu $s2, %lo(D_8012A4EC) # addiu $s2, $s2, -0x5b14 -/* B20CC4 800A9B24 2673E660 */ addiu $s3, %lo(gSaveContext) # addiu $s3, $s3, -0x19a0 -/* B20CC8 800A9B28 26940EC4 */ addiu $s4, %lo(D_80140EC4) # addiu $s4, $s4, 0xec4 -/* B20CCC 800A9B2C 00008025 */ move $s0, $zero -/* B20CD0 800A9B30 8E230000 */ lw $v1, ($s1) -/* B20CD4 800A9B34 00001025 */ move $v0, $zero -.L800A9B38: -/* B20CD8 800A9B38 02427021 */ addu $t6, $s2, $v0 -/* B20CDC 800A9B3C 0062C021 */ addu $t8, $v1, $v0 -/* B20CE0 800A9B40 93190003 */ lbu $t9, 3($t8) -/* B20CE4 800A9B44 91CF0003 */ lbu $t7, 3($t6) -/* B20CE8 800A9B48 51F90011 */ beql $t7, $t9, .L800A9B90 -/* B20CEC 800A9B4C 26100001 */ addiu $s0, $s0, 1 -/* B20CF0 800A9B50 0C00084C */ jal osSyncPrintf -/* B20CF4 800A9B54 02802025 */ move $a0, $s4 -/* B20CF8 800A9B58 8E280000 */ lw $t0, ($s1) -/* B20CFC 800A9B5C 02402825 */ move $a1, $s2 -/* B20D00 800A9B60 2406000C */ li $a2, 12 -/* B20D04 800A9B64 91090002 */ lbu $t1, 2($t0) -/* B20D08 800A9B68 A2691409 */ sb $t1, 0x1409($s3) -/* B20D0C 800A9B6C 0C01A508 */ jal MemCopy -/* B20D10 800A9B70 8E240000 */ lw $a0, ($s1) -/* B20D14 800A9B74 926A1409 */ lbu $t2, 0x1409($s3) -/* B20D18 800A9B78 8E2B0000 */ lw $t3, ($s1) -/* B20D1C 800A9B7C 02202025 */ move $a0, $s1 -/* B20D20 800A9B80 0C02A6A7 */ jal func_800A9A9C -/* B20D24 800A9B84 A16A0002 */ sb $t2, 2($t3) -/* B20D28 800A9B88 8E230000 */ lw $v1, ($s1) -/* B20D2C 800A9B8C 26100001 */ addiu $s0, $s0, 1 -.L800A9B90: -/* B20D30 800A9B90 3210FFFF */ andi $s0, $s0, 0xffff -/* B20D34 800A9B94 2E010009 */ sltiu $at, $s0, 9 -/* B20D38 800A9B98 1420FFE7 */ bnez $at, .L800A9B38 -/* B20D3C 800A9B9C 02001025 */ move $v0, $s0 -/* B20D40 800A9BA0 906C0000 */ lbu $t4, ($v1) -/* B20D44 800A9BA4 318D0003 */ andi $t5, $t4, 3 -/* B20D48 800A9BA8 A26D140A */ sb $t5, 0x140a($s3) -/* B20D4C 800A9BAC 8E2E0000 */ lw $t6, ($s1) -/* B20D50 800A9BB0 91D80001 */ lbu $t8, 1($t6) -/* B20D54 800A9BB4 330F0001 */ andi $t7, $t8, 1 -/* B20D58 800A9BB8 A26F140C */ sb $t7, 0x140c($s3) -/* B20D5C 800A9BBC 8E390000 */ lw $t9, ($s1) -/* B20D60 800A9BC0 93280002 */ lbu $t0, 2($t9) -/* B20D64 800A9BC4 310900FF */ andi $t1, $t0, 0xff -/* B20D68 800A9BC8 29210003 */ slti $at, $t1, 3 -/* B20D6C 800A9BCC 14200006 */ bnez $at, .L800A9BE8 -/* B20D70 800A9BD0 A2681409 */ sb $t0, 0x1409($s3) -/* B20D74 800A9BD4 A2601409 */ sb $zero, 0x1409($s3) -/* B20D78 800A9BD8 8E2B0000 */ lw $t3, ($s1) -/* B20D7C 800A9BDC 02202025 */ move $a0, $s1 -/* B20D80 800A9BE0 0C02A6A7 */ jal func_800A9A9C -/* B20D84 800A9BE4 A1600002 */ sb $zero, 2($t3) -.L800A9BE8: -/* B20D88 800A9BE8 8FAC0030 */ lw $t4, 0x30($sp) -/* B20D8C 800A9BEC 34058000 */ li $a1, 32768 -/* B20D90 800A9BF0 958D0044 */ lhu $t5, 0x44($t4) -/* B20D94 800A9BF4 31AE0100 */ andi $t6, $t5, 0x100 -/* B20D98 800A9BF8 11C00014 */ beqz $t6, .L800A9C4C -/* B20D9C 800A9BFC 00000000 */ nop -/* B20DA0 800A9C00 0C001114 */ jal bzero -/* B20DA4 800A9C04 8E240000 */ lw $a0, ($s1) -/* B20DA8 800A9C08 00008025 */ move $s0, $zero -/* B20DAC 800A9C0C 8E380000 */ lw $t8, ($s1) -.L800A9C10: -/* B20DB0 800A9C10 03107821 */ addu $t7, $t8, $s0 -/* B20DB4 800A9C14 A1F00000 */ sb $s0, ($t7) -/* B20DB8 800A9C18 26100001 */ addiu $s0, $s0, 1 -/* B20DBC 800A9C1C 3210FFFF */ andi $s0, $s0, 0xffff -/* B20DC0 800A9C20 2E0109AA */ sltiu $at, $s0, 0x9aa -/* B20DC4 800A9C24 5420FFFA */ bnezl $at, .L800A9C10 -/* B20DC8 800A9C28 8E380000 */ lw $t8, ($s1) -/* B20DCC 800A9C2C 3C040800 */ lui $a0, 0x800 -/* B20DD0 800A9C30 8E250000 */ lw $a1, ($s1) -/* B20DD4 800A9C34 34068000 */ li $a2, 32768 -/* B20DD8 800A9C38 0C02A7A8 */ jal Sram_ReadWrite -/* B20DDC 800A9C3C 24070001 */ li $a3, 1 -/* B20DE0 800A9C40 3C048014 */ lui $a0, %hi(D_80140EE0) # $a0, 0x8014 -/* B20DE4 800A9C44 0C00084C */ jal osSyncPrintf -/* B20DE8 800A9C48 24840EE0 */ addiu $a0, %lo(D_80140EE0) # addiu $a0, $a0, 0xee0 -.L800A9C4C: -/* B20DEC 800A9C4C 3C048014 */ lui $a0, %hi(D_80140EFC) # $a0, 0x8014 -/* B20DF0 800A9C50 24840EFC */ addiu $a0, %lo(D_80140EFC) # addiu $a0, $a0, 0xefc -/* B20DF4 800A9C54 24051338 */ li $a1, 4920 -/* B20DF8 800A9C58 24060004 */ li $a2, 4 -/* B20DFC 800A9C5C 0C00084C */ jal osSyncPrintf -/* B20E00 800A9C60 2407133C */ li $a3, 4924 -/* B20E04 800A9C64 3C048014 */ lui $a0, %hi(D_80140F28) # $a0, 0x8014 -/* B20E08 800A9C68 0C00084C */ jal osSyncPrintf -/* B20E0C 800A9C6C 24840F28 */ addiu $a0, %lo(D_80140F28) # addiu $a0, $a0, 0xf28 -/* B20E10 800A9C70 3C048014 */ lui $a0, %hi(D_80140F30) # $a0, 0x8014 -/* B20E14 800A9C74 24840F30 */ addiu $a0, %lo(D_80140F30) # addiu $a0, $a0, 0xf30 -/* B20E18 800A9C78 0C00084C */ jal osSyncPrintf -/* B20E1C 800A9C7C 9265140A */ lbu $a1, 0x140a($s3) -/* B20E20 800A9C80 3C048014 */ lui $a0, %hi(D_80140F4C) # $a0, 0x8014 -/* B20E24 800A9C84 24840F4C */ addiu $a0, %lo(D_80140F4C) # addiu $a0, $a0, 0xf4c -/* B20E28 800A9C88 0C00084C */ jal osSyncPrintf -/* B20E2C 800A9C8C 9265140A */ lbu $a1, 0x140a($s3) -/* B20E30 800A9C90 3C048014 */ lui $a0, %hi(D_80140F68) # $a0, 0x8014 -/* B20E34 800A9C94 24840F68 */ addiu $a0, %lo(D_80140F68) # addiu $a0, $a0, 0xf68 -/* B20E38 800A9C98 0C00084C */ jal osSyncPrintf -/* B20E3C 800A9C9C 9265140A */ lbu $a1, 0x140a($s3) -/* B20E40 800A9CA0 3C048014 */ lui $a0, %hi(D_80140F84) # $a0, 0x8014 -/* B20E44 800A9CA4 0C00084C */ jal osSyncPrintf -/* B20E48 800A9CA8 24840F84 */ addiu $a0, %lo(D_80140F84) # addiu $a0, $a0, 0xf84 -/* B20E4C 800A9CAC 0C03D9C0 */ jal func_800F6700 -/* B20E50 800A9CB0 8264140A */ lb $a0, 0x140a($s3) -/* B20E54 800A9CB4 8FBF002C */ lw $ra, 0x2c($sp) -/* B20E58 800A9CB8 8FB00018 */ lw $s0, 0x18($sp) -/* B20E5C 800A9CBC 8FB1001C */ lw $s1, 0x1c($sp) -/* B20E60 800A9CC0 8FB20020 */ lw $s2, 0x20($sp) -/* B20E64 800A9CC4 8FB30024 */ lw $s3, 0x24($sp) -/* B20E68 800A9CC8 8FB40028 */ lw $s4, 0x28($sp) -/* B20E6C 800A9CCC 03E00008 */ jr $ra -/* B20E70 800A9CD0 27BD0030 */ addiu $sp, $sp, 0x30 - diff --git a/asm/non_matchings/code/z_sram/func_800A9CD4.s b/asm/non_matchings/code/z_sram/func_800A9CD4.s deleted file mode 100644 index 62a8d501d0..0000000000 --- a/asm/non_matchings/code/z_sram/func_800A9CD4.s +++ /dev/null @@ -1,38 +0,0 @@ -.rdata -glabel D_80140F88 - .asciz "../z_sram.c" - .balign 4 - -glabel D_80140F94 - .asciz "sram->read_buff != NULL" - .balign 4 - -glabel D_80140FAC - .asciz "../z_sram.c" - .balign 4 - -.text -glabel func_800A9CD4 -/* B20E74 800A9CD4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* B20E78 800A9CD8 AFBF0014 */ sw $ra, 0x14($sp) -/* B20E7C 800A9CDC AFA5001C */ sw $a1, 0x1c($sp) -/* B20E80 800A9CE0 3C068014 */ lui $a2, %hi(D_80140F88) # $a2, 0x8014 -/* B20E84 800A9CE4 24C60F88 */ addiu $a2, %lo(D_80140F88) # addiu $a2, $a2, 0xf88 -/* B20E88 800A9CE8 34058000 */ li $a1, 32768 -/* B20E8C 800A9CEC 0C031521 */ jal GameState_Alloc -/* B20E90 800A9CF0 2407050E */ li $a3, 1294 -/* B20E94 800A9CF4 8FAE001C */ lw $t6, 0x1c($sp) -/* B20E98 800A9CF8 3C048014 */ lui $a0, %hi(D_80140F94) # $a0, 0x8014 -/* B20E9C 800A9CFC 14400006 */ bnez $v0, .L800A9D18 -/* B20EA0 800A9D00 ADC20000 */ sw $v0, ($t6) -/* B20EA4 800A9D04 3C058014 */ lui $a1, %hi(D_80140FAC) # $a1, 0x8014 -/* B20EA8 800A9D08 24A50FAC */ addiu $a1, %lo(D_80140FAC) # addiu $a1, $a1, 0xfac -/* B20EAC 800A9D0C 24840F94 */ addiu $a0, %lo(D_80140F94) # addiu $a0, $a0, 0xf94 -/* B20EB0 800A9D10 0C0007FC */ jal __assert -/* B20EB4 800A9D14 2406050F */ li $a2, 1295 -.L800A9D18: -/* B20EB8 800A9D18 8FBF0014 */ lw $ra, 0x14($sp) -/* B20EBC 800A9D1C 27BD0018 */ addiu $sp, $sp, 0x18 -/* B20EC0 800A9D20 03E00008 */ jr $ra -/* B20EC4 800A9D24 00000000 */ nop - diff --git a/asm/non_matchings/code/z_sram/func_800A9D28.s b/asm/non_matchings/code/z_sram/func_800A9D28.s deleted file mode 100644 index 81710cf632..0000000000 --- a/asm/non_matchings/code/z_sram/func_800A9D28.s +++ /dev/null @@ -1,4 +0,0 @@ -glabel func_800A9D28 -/* B20EC8 800A9D28 AFA40000 */ sw $a0, ($sp) -/* B20ECC 800A9D2C 03E00008 */ jr $ra -/* B20ED0 800A9D30 AFA50004 */ sw $a1, 4($sp) diff --git a/asm/non_matchings/overlays/actors/ovl_kaleido_scope/KaleidoScope_Update.s b/asm/non_matchings/overlays/actors/ovl_kaleido_scope/KaleidoScope_Update.s index a5a054ea58..68a4744b0a 100644 --- a/asm/non_matchings/overlays/actors/ovl_kaleido_scope/KaleidoScope_Update.s +++ b/asm/non_matchings/overlays/actors/ovl_kaleido_scope/KaleidoScope_Update.s @@ -1881,7 +1881,7 @@ glabel L80828198 /* 14A40 80828260 3C098016 */ lui $t1, %hi(gSaveContext) /* 14A44 80828264 2529E660 */ addiu $t1, %lo(gSaveContext) /* 14A48 80828268 26241F74 */ addiu $a0, $s1, 0x1F74 ## $a0 = 00001F74 -/* 14A4C 8082826C 0C02A235 */ jal func_800A88D4 +/* 14A4C 8082826C 0C02A235 */ jal Sram_WriteSave /* 14A50 80828270 A52E0066 */ sh $t6, 0x0066($t1) ## 8015E6C6 /* 14A54 80828274 240F0004 */ addiu $t7, $zero, 0x0004 ## $t7 = 00000004 /* 14A58 80828278 A60F01EC */ sh $t7, 0x01EC($s0) ## 000001EC @@ -2950,7 +2950,7 @@ glabel L808290DC /* 1596C 8082918C 3C098016 */ lui $t1, %hi(gSaveContext) /* 15970 80829190 2529E660 */ addiu $t1, %lo(gSaveContext) /* 15974 80829194 26241F74 */ addiu $a0, $s1, 0x1F74 ## $a0 = 8082CB0C -/* 15978 80829198 0C02A235 */ jal func_800A88D4 +/* 15978 80829198 0C02A235 */ jal Sram_WriteSave /* 1597C 8082919C A5390066 */ sh $t9, 0x0066($t1) ## 8015E6C6 /* 15980 808291A0 240E000F */ addiu $t6, $zero, 0x000F ## $t6 = 0000000F /* 15984 808291A4 A60E01D4 */ sh $t6, 0x01D4($s0) ## 000001D4 diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80803ED8.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80803ED8.s index 8c67c265c7..741b035c23 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80803ED8.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80803ED8.s @@ -56,9 +56,9 @@ glabel func_80803ED8 .L80803FA4: /* 00264 80803FA4 11A00044 */ beq $t5, $zero, .L808040B8 /* 00268 80803FA8 00037040 */ sll $t6, $v1, 1 -/* 0026C 80803FAC 3C0F8013 */ lui $t7, %hi(D_8012A4E0) +/* 0026C 80803FAC 3C0F8013 */ lui $t7, %hi(gSramSlotOffsets) /* 00270 80803FB0 01EE7821 */ addu $t7, $t7, $t6 -/* 00274 80803FB4 95EFA4E0 */ lhu $t7, %lo(D_8012A4E0)($t7) +/* 00274 80803FB4 95EFA4E0 */ lhu $t7, %lo(gSramSlotOffsets)($t7) /* 00278 80803FB8 8E1801E0 */ lw $t8, 0x01E0($s0) ## 000001E0 /* 0027C 80803FBC 2404005A */ addiu $a0, $zero, 0x005A ## $a0 = 0000005A /* 00280 80803FC0 3C078013 */ lui $a3, %hi(D_801333E0) @@ -185,9 +185,9 @@ glabel func_80803ED8 .L80804180: /* 00440 80804180 1123002C */ beq $t1, $v1, .L80804234 /* 00444 80804184 00035040 */ sll $t2, $v1, 1 -/* 00448 80804188 3C0B8013 */ lui $t3, %hi(D_8012A4E0) +/* 00448 80804188 3C0B8013 */ lui $t3, %hi(gSramSlotOffsets) /* 0044C 8080418C 016A5821 */ addu $t3, $t3, $t2 -/* 00450 80804190 956BA4E0 */ lhu $t3, %lo(D_8012A4E0)($t3) +/* 00450 80804190 956BA4E0 */ lhu $t3, %lo(gSramSlotOffsets)($t3) /* 00454 80804194 8E0C01E0 */ lw $t4, 0x01E0($s0) ## 000001E0 /* 00458 80804198 2404005A */ addiu $a0, $zero, 0x005A ## $a0 = 0000005A /* 0045C 8080419C 016C1021 */ addu $v0, $t3, $t4 diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_808044A0.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_808044A0.s index 832318c890..2b42ca9af3 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_808044A0.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_808044A0.s @@ -53,9 +53,9 @@ glabel func_808044A0 .L80804560: /* 00820 80804560 11800044 */ beq $t4, $zero, .L80804674 /* 00824 80804564 00036840 */ sll $t5, $v1, 1 -/* 00828 80804568 3C0E8013 */ lui $t6, %hi(D_8012A4E0) +/* 00828 80804568 3C0E8013 */ lui $t6, %hi(gSramSlotOffsets) /* 0082C 8080456C 01CD7021 */ addu $t6, $t6, $t5 -/* 00830 80804570 95CEA4E0 */ lhu $t6, %lo(D_8012A4E0)($t6) +/* 00830 80804570 95CEA4E0 */ lhu $t6, %lo(gSramSlotOffsets)($t6) /* 00834 80804574 8E0F01E0 */ lw $t7, 0x01E0($s0) ## 000001E0 /* 00838 80804578 2404005A */ addiu $a0, $zero, 0x005A ## $a0 = 0000005A /* 0083C 8080457C 3C078013 */ lui $a3, %hi(D_801333E0) @@ -202,9 +202,9 @@ glabel func_808044A0 .L8080478C: /* 00A4C 8080478C 1123002D */ beq $t1, $v1, .L80804844 /* 00A50 80804790 00036040 */ sll $t4, $v1, 1 -/* 00A54 80804794 3C0D8013 */ lui $t5, %hi(D_8012A4E0) +/* 00A54 80804794 3C0D8013 */ lui $t5, %hi(gSramSlotOffsets) /* 00A58 80804798 01AC6821 */ addu $t5, $t5, $t4 -/* 00A5C 8080479C 95ADA4E0 */ lhu $t5, %lo(D_8012A4E0)($t5) +/* 00A5C 8080479C 95ADA4E0 */ lhu $t5, %lo(gSramSlotOffsets)($t5) /* 00A60 808047A0 8E0E01E0 */ lw $t6, 0x01E0($s0) ## 000001E0 /* 00A64 808047A4 2404005A */ addiu $a0, $zero, 0x005A ## $a0 = 0000005A /* 00A68 808047A8 01AE1021 */ addu $v0, $t5, $t6 diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80804A50.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80804A50.s index 1b12377740..82cef2e206 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80804A50.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80804A50.s @@ -11,12 +11,12 @@ glabel func_80804A50 /* 00D34 80804A74 844E4A6E */ lh $t6, 0x4A6E($v0) ## 00004A6E /* 00D38 80804A78 84584A70 */ lh $t8, 0x4A70($v0) ## 00004A70 /* 00D3C 80804A7C 3C148081 */ lui $s4, %hi(D_808124A4) ## $s4 = 80810000 -/* 00D40 80804A80 3C0D8013 */ lui $t5, %hi(D_8012A4E0) +/* 00D40 80804A80 3C0D8013 */ lui $t5, %hi(gSramSlotOffsets) /* 00D44 80804A84 25CFFFE1 */ addiu $t7, $t6, 0xFFE1 ## $t7 = FFFFFFE1 /* 00D48 80804A88 2719001F */ addiu $t9, $t8, 0x001F ## $t9 = 0000001F /* 00D4C 80804A8C A44F4A6E */ sh $t7, 0x4A6E($v0) ## 00004A6E /* 00D50 80804A90 A4594A70 */ sh $t9, 0x4A70($v0) ## 00004A70 -/* 00D54 80804A94 25ADA4E0 */ addiu $t5, %lo(D_8012A4E0) +/* 00D54 80804A94 25ADA4E0 */ addiu $t5, %lo(gSramSlotOffsets) /* 00D58 80804A98 269424A4 */ addiu $s4, $s4, %lo(D_808124A4) ## $s4 = 808124A4 /* 00D5C 80804A9C 24100045 */ addiu $s0, $zero, 0x0045 ## $s0 = 00000045 /* 00D60 80804AA0 2411004C */ addiu $s1, $zero, 0x004C ## $s1 = 0000004C diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80804CD0.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80804CD0.s index 6d672ba36d..31e6fcbf5f 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80804CD0.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80804CD0.s @@ -53,7 +53,7 @@ glabel func_80804CD0 /* 0104C 80804D8C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 /* 01050 80804D90 260501E0 */ addiu $a1, $s0, 0x01E0 ## $a1 = 000001E0 /* 01054 80804D94 AFA30028 */ sw $v1, 0x0028($sp) -/* 01058 80804D98 0C02A5FC */ jal func_800A97F0 +/* 01058 80804D98 0C02A5FC */ jal Sram_CopySave /* 0105C 80804D9C A7AE0032 */ sh $t6, 0x0032($sp) /* 01060 80804DA0 97AF0032 */ lhu $t7, 0x0032($sp) /* 01064 80804DA4 8FA30028 */ lw $v1, 0x0028($sp) diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80804ED8.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80804ED8.s index 502517ea8c..6ed9e9b76a 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80804ED8.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80804ED8.s @@ -13,12 +13,12 @@ glabel func_80804ED8 /* 011C4 80804F04 25CFFFE1 */ addiu $t7, $t6, 0xFFE1 ## $t7 = FFFFFFE1 /* 011C8 80804F08 844E4A96 */ lh $t6, 0x4A96($v0) ## 00004A96 /* 011CC 80804F0C A44F4A6E */ sh $t7, 0x4A6E($v0) ## 00004A6E -/* 011D0 80804F10 3C0C8013 */ lui $t4, %hi(D_8012A4E0) +/* 011D0 80804F10 3C0C8013 */ lui $t4, %hi(gSramSlotOffsets) /* 011D4 80804F14 2719001F */ addiu $t9, $t8, 0x001F ## $t9 = 0000001F /* 011D8 80804F18 25CFFFE7 */ addiu $t7, $t6, 0xFFE7 ## $t7 = FFFFFFE7 /* 011DC 80804F1C A4594A70 */ sh $t9, 0x4A70($v0) ## 00004A70 /* 011E0 80804F20 A44F4A96 */ sh $t7, 0x4A96($v0) ## 00004A96 -/* 011E4 80804F24 258CA4E0 */ addiu $t4, %lo(D_8012A4E0) +/* 011E4 80804F24 258CA4E0 */ addiu $t4, %lo(gSramSlotOffsets) /* 011E8 80804F28 2673248C */ addiu $s3, $s3, %lo(D_8081248C) ## $s3 = 8081248C /* 011EC 80804F2C 2410004C */ addiu $s0, $zero, 0x004C ## $s0 = 0000004C /* 011F0 80804F30 24110044 */ addiu $s1, $zero, 0x0044 ## $s1 = 00000044 diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80805524.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80805524.s index fcaa27bfff..6a7ebb4296 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80805524.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80805524.s @@ -51,8 +51,8 @@ glabel func_80805524 .L808055D0: /* 01890 808055D0 5420FFE0 */ bnel $at, $zero, .L80805554 /* 01894 808055D4 00067040 */ sll $t6, $a2, 1 -/* 01898 808055D8 3C0C8013 */ lui $t4, %hi(D_8012A4E0) -/* 0189C 808055DC 258CA4E0 */ addiu $t4, %lo(D_8012A4E0) +/* 01898 808055D8 3C0C8013 */ lui $t4, %hi(gSramSlotOffsets) +/* 0189C 808055DC 258CA4E0 */ addiu $t4, %lo(gSramSlotOffsets) /* 018A0 808055E0 00003025 */ or $a2, $zero, $zero ## $a2 = 00000000 /* 018A4 808055E4 24120041 */ addiu $s2, $zero, 0x0041 ## $s2 = 00000041 /* 018A8 808055E8 24110044 */ addiu $s1, $zero, 0x0044 ## $s1 = 00000044 diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80805B2C.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80805B2C.s index 72baf0983a..f53b631484 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80805B2C.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80805B2C.s @@ -57,9 +57,9 @@ glabel func_80805B2C .L80805BFC: /* 01EBC 80805BFC 11C00045 */ beq $t6, $zero, .L80805D14 /* 01EC0 80805C00 00037840 */ sll $t7, $v1, 1 -/* 01EC4 80805C04 3C188013 */ lui $t8, %hi(D_8012A4E0) +/* 01EC4 80805C04 3C188013 */ lui $t8, %hi(gSramSlotOffsets) /* 01EC8 80805C08 030FC021 */ addu $t8, $t8, $t7 -/* 01ECC 80805C0C 9718A4E0 */ lhu $t8, %lo(D_8012A4E0)($t8) +/* 01ECC 80805C0C 9718A4E0 */ lhu $t8, %lo(gSramSlotOffsets)($t8) /* 01ED0 80805C10 8E1901E0 */ lw $t9, 0x01E0($s0) ## 000001E0 /* 01ED4 80805C14 2404005A */ addiu $a0, $zero, 0x005A ## $a0 = 0000005A /* 01ED8 80805C18 3C078013 */ lui $a3, %hi(D_801333E0) @@ -188,9 +188,9 @@ glabel func_80805B2C /* 0209C 80805DDC 1123002E */ beq $t1, $v1, .L80805E98 /* 020A0 80805DE0 2418FFFF */ addiu $t8, $zero, 0xFFFF ## $t8 = FFFFFFFF /* 020A4 80805DE4 00036040 */ sll $t4, $v1, 1 -/* 020A8 80805DE8 3C0D8013 */ lui $t5, %hi(D_8012A4E0) +/* 020A8 80805DE8 3C0D8013 */ lui $t5, %hi(gSramSlotOffsets) /* 020AC 80805DEC 01AC6821 */ addu $t5, $t5, $t4 -/* 020B0 80805DF0 95ADA4E0 */ lhu $t5, %lo(D_8012A4E0)($t5) +/* 020B0 80805DF0 95ADA4E0 */ lhu $t5, %lo(gSramSlotOffsets)($t5) /* 020B4 80805DF4 8E0E01E0 */ lw $t6, 0x01E0($s0) ## 000001E0 /* 020B8 80805DF8 2404005A */ addiu $a0, $zero, 0x005A ## $a0 = 0000005A /* 020BC 80805DFC 01AE1021 */ addu $v0, $t5, $t6 diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80805EB8.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80805EB8.s index 18b6214be8..c88191d8cc 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80805EB8.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80805EB8.s @@ -5,8 +5,8 @@ glabel func_80805EB8 /* 02184 80805EC4 AFB10008 */ sw $s1, 0x0008($sp) /* 02188 80805EC8 AFB00004 */ sw $s0, 0x0004($sp) /* 0218C 80805ECC 34228000 */ ori $v0, $at, 0x8000 ## $v0 = 00018000 -/* 02190 80805ED0 3C0C8013 */ lui $t4, %hi(D_8012A4E0) -/* 02194 80805ED4 258CA4E0 */ addiu $t4, %lo(D_8012A4E0) +/* 02190 80805ED0 3C0C8013 */ lui $t4, %hi(gSramSlotOffsets) +/* 02194 80805ED4 258CA4E0 */ addiu $t4, %lo(gSramSlotOffsets) /* 02198 80805ED8 00821821 */ addu $v1, $a0, $v0 /* 0219C 80805EDC 2410004C */ addiu $s0, $zero, 0x004C ## $s0 = 0000004C /* 021A0 80805EE0 24110044 */ addiu $s1, $zero, 0x0044 ## $s1 = 00000044 diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_808064F4.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_808064F4.s index 82655e50e0..b2d791e75c 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_808064F4.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_808064F4.s @@ -26,7 +26,7 @@ glabel func_808064F4 .L80806550: /* 02810 80806550 84584A50 */ lh $t8, 0x4A50($v0) ## 00004A50 /* 02814 80806554 240C0045 */ addiu $t4, $zero, 0x0045 ## $t4 = 00000045 -/* 02818 80806558 3C0B8013 */ lui $t3, %hi(D_8012A4E0) +/* 02818 80806558 3C0B8013 */ lui $t3, %hi(gSramSlotOffsets) /* 0281C 8080655C 00D8001A */ div $zero, $a2, $t8 /* 02820 80806560 17000002 */ bne $t8, $zero, .L8080656C /* 02824 80806564 00000000 */ nop @@ -52,7 +52,7 @@ glabel func_808064F4 /* 02868 808065A8 A4EE4A52 */ sh $t6, 0x4A52($a3) ## 00004A52 .L808065AC: /* 0286C 808065AC 00003025 */ or $a2, $zero, $zero ## $a2 = 00000000 -/* 02870 808065B0 256BA4E0 */ addiu $t3, %lo(D_8012A4E0) +/* 02870 808065B0 256BA4E0 */ addiu $t3, %lo(gSramSlotOffsets) /* 02874 808065B4 240A005A */ addiu $t2, $zero, 0x005A ## $t2 = 0000005A /* 02878 808065B8 844F4A38 */ lh $t7, 0x4A38($v0) ## 00004A38 .L808065BC: diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80806710.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80806710.s index 02c2b387b9..59bd22d3b5 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80806710.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80806710.s @@ -61,7 +61,7 @@ glabel func_80806710 /* 02AB4 808067F4 55C0003B */ bnel $t6, $zero, .L808068E4 /* 02AB8 808067F8 8FBF001C */ lw $ra, 0x001C($sp) /* 02ABC 808067FC AFA20020 */ sw $v0, 0x0020($sp) -/* 02AC0 80806800 0C02A5B4 */ jal func_800A96D0 +/* 02AC0 80806800 0C02A5B4 */ jal Sram_EraseSave /* 02AC4 80806804 AFA40030 */ sw $a0, 0x0030($sp) /* 02AC8 80806808 8FA20020 */ lw $v0, 0x0020($sp) /* 02ACC 8080680C 8FA40030 */ lw $a0, 0x0030($sp) diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_808069B4.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_808069B4.s index 3fa7ec1c1a..18111f9d58 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_808069B4.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_808069B4.s @@ -48,8 +48,8 @@ glabel func_808069B4 .L80806A54: /* 02D14 80806A54 5420FFE0 */ bnel $at, $zero, .L808069D8 /* 02D18 80806A58 00067040 */ sll $t6, $a2, 1 -/* 02D1C 80806A5C 3C0B8013 */ lui $t3, %hi(D_8012A4E0) -/* 02D20 80806A60 256BA4E0 */ addiu $t3, %lo(D_8012A4E0) +/* 02D1C 80806A5C 3C0B8013 */ lui $t3, %hi(gSramSlotOffsets) +/* 02D20 80806A60 256BA4E0 */ addiu $t3, %lo(gSramSlotOffsets) /* 02D24 80806A64 00003025 */ or $a2, $zero, $zero ## $a2 = 00000000 /* 02D28 80806A68 248501E0 */ addiu $a1, $a0, 0x01E0 ## $a1 = 000001E0 /* 02D2C 80806A6C 24110041 */ addiu $s1, $zero, 0x0041 ## $s1 = 00000041 diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80808000.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80808000.s index 2585707786..ab86dc796b 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80808000.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80808000.s @@ -896,7 +896,7 @@ glabel func_80808000 /* 05000 80808D40 260501E0 */ addiu $a1, $s0, 0x01E0 ## $a1 = 000001E0 /* 05004 80808D44 AC2EF9B4 */ sw $t6, %lo(gSaveContext+0x1354)($at) /* 05008 80808D48 9718E66C */ lhu $t8, %lo(gSaveContext+0xc)($t8) -/* 0500C 80808D4C 0C02A496 */ jal func_800A9258 +/* 0500C 80808D4C 0C02A496 */ jal Sram_InitSave /* 05010 80808D50 A7B800DE */ sh $t8, 0x00DE($sp) /* 05014 80808D54 97AD00DE */ lhu $t5, 0x00DE($sp) /* 05018 80808D58 3C018016 */ lui $at, %hi(gSaveContext+0xc) diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080969C.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080969C.s index 5e7207ce1e..5d1b0bcfec 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080969C.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080969C.s @@ -41,7 +41,7 @@ glabel func_8080969C /* 059F4 80809734 0C00084C */ jal osSyncPrintf /* 059F8 80809738 AFA20028 */ sw $v0, 0x0028($sp) -/* 059FC 8080973C 0C02A6A7 */ jal func_800A9A9C +/* 059FC 8080973C 0C02A6A7 */ jal Sram_Write16Bytes /* 05A00 80809740 8FA40028 */ lw $a0, 0x0028($sp) /* 05A04 80809744 3C048081 */ lui $a0, %hi(D_80812BC0) ## $a0 = 80810000 /* 05A08 80809748 0C00084C */ jal osSyncPrintf diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080B1A8.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080B1A8.s index 5b11ef9244..71606ae964 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080B1A8.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080B1A8.s @@ -22,7 +22,7 @@ glabel func_8080B1A8 /* 074B8 8080B1F8 AFA60018 */ sw $a2, 0x0018($sp) /* 074BC 8080B1FC 8FA40018 */ lw $a0, 0x0018($sp) -/* 074C0 8080B200 0C02A288 */ jal func_800A8A20 +/* 074C0 8080B200 0C02A288 */ jal Sram_VerifyAndLoadAllSaves /* 074C4 8080B204 248501E0 */ addiu $a1, $a0, 0x01E0 ## $a1 = 000001E0 /* 074C8 8080B208 3C048081 */ lui $a0, %hi(D_80812D1C) ## $a0 = 80810000 /* 074CC 8080B20C 0C00084C */ jal osSyncPrintf diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080B22C.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080B22C.s index 722a4e2bf9..24b4bc2fc3 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080B22C.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080B22C.s @@ -18,9 +18,9 @@ glabel func_8080B22C /* 0752C 8080B26C A4794A6E */ sh $t9, 0x4A6E($v1) ## 00004A6E /* 07530 8080B270 8D4E0000 */ lw $t6, 0x0000($t2) ## 8015FA90 /* 07534 8080B274 00240821 */ addu $at, $at, $a0 -/* 07538 8080B278 3C0C8013 */ lui $t4, %hi(D_8012A4E0) +/* 07538 8080B278 3C0C8013 */ lui $t4, %hi(gSramSlotOffsets) /* 0753C 8080B27C 85D80F18 */ lh $t8, 0x0F18($t6) ## 00000F18 -/* 07540 8080B280 258CA4E0 */ addiu $t4, %lo(D_8012A4E0) +/* 07540 8080B280 258CA4E0 */ addiu $t4, %lo(gSramSlotOffsets) /* 07544 8080B284 2410004C */ addiu $s0, $zero, 0x004C ## $s0 = 0000004C /* 07548 8080B288 01F8C821 */ addu $t9, $t7, $t8 /* 0754C 8080B28C A439CA72 */ sh $t9, -0x358E($at) ## 0001CA72 diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080B52C.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080B52C.s index 8e36f8dc42..0bffa1ac03 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080B52C.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080B52C.s @@ -19,8 +19,8 @@ glabel func_8080B52C /* 0782C 8080B56C 34218000 */ ori $at, $at, 0x8000 ## $at = 00018000 /* 07830 8080B570 02011821 */ addu $v1, $s0, $at /* 07834 8080B574 84654A38 */ lh $a1, 0x4A38($v1) ## 00004A38 -/* 07838 8080B578 3C098013 */ lui $t1, %hi(D_8012A4E0) -/* 0783C 8080B57C 2529A4E0 */ addiu $t1, %lo(D_8012A4E0) +/* 07838 8080B578 3C098013 */ lui $t1, %hi(gSramSlotOffsets) +/* 0783C 8080B57C 2529A4E0 */ addiu $t1, %lo(gSramSlotOffsets) /* 07840 8080B580 28A10003 */ slti $at, $a1, 0x0003 /* 07844 8080B584 102000A5 */ beq $at, $zero, .L8080B81C /* 07848 8080B588 260801E0 */ addiu $t0, $s0, 0x01E0 ## $t0 = 000001E0 @@ -47,9 +47,9 @@ glabel func_8080B52C /* 07898 8080B5D8 AFAF001C */ sw $t7, 0x001C($sp) /* 0789C 8080B5DC 8FA30030 */ lw $v1, 0x0030($sp) /* 078A0 8080B5E0 8FA80034 */ lw $t0, 0x0034($sp) -/* 078A4 8080B5E4 3C098013 */ lui $t1, %hi(D_8012A4E0) +/* 078A4 8080B5E4 3C098013 */ lui $t1, %hi(gSramSlotOffsets) /* 078A8 8080B5E8 84644A38 */ lh $a0, 0x4A38($v1) ## 00004A38 -/* 078AC 8080B5EC 2529A4E0 */ addiu $t1, %lo(D_8012A4E0) +/* 078AC 8080B5EC 2529A4E0 */ addiu $t1, %lo(gSramSlotOffsets) /* 078B0 8080B5F0 8D0D0000 */ lw $t5, 0x0000($t0) ## 00000000 /* 078B4 8080B5F4 00042040 */ sll $a0, $a0, 1 /* 078B8 8080B5F8 0124C021 */ addu $t8, $t1, $a0 @@ -343,10 +343,10 @@ glabel func_8080B52C .L8080BA30: /* 07CF0 8080BA30 84664A38 */ lh $a2, 0x4A38($v1) ## 00004A38 /* 07CF4 8080BA34 24020003 */ addiu $v0, $zero, 0x0003 ## $v0 = 00000003 -/* 07CF8 8080BA38 3C098013 */ lui $t1, %hi(D_8012A4E0) +/* 07CF8 8080BA38 3C098013 */ lui $t1, %hi(gSramSlotOffsets) /* 07CFC 8080BA3C 1446009B */ bne $v0, $a2, .L8080BCAC /* 07D00 8080BA40 24010004 */ addiu $at, $zero, 0x0004 ## $at = 00000004 -/* 07D04 8080BA44 2529A4E0 */ addiu $t1, %lo(D_8012A4E0) +/* 07D04 8080BA44 2529A4E0 */ addiu $t1, %lo(gSramSlotOffsets) /* 07D08 8080BA48 952E0000 */ lhu $t6, 0x0000($t1) ## 8012A4E0 /* 07D0C 8080BA4C 8E0401E0 */ lw $a0, 0x01E0($s0) ## 000001E0 /* 07D10 8080BA50 2405005A */ addiu $a1, $zero, 0x005A ## $a1 = 0000005A @@ -510,8 +510,8 @@ glabel func_8080B52C .L8080BCAC: /* 07F6C 8080BCAC 14C10056 */ bne $a2, $at, .L8080BE08 /* 07F70 8080BCB0 2418FFFF */ addiu $t8, $zero, 0xFFFF ## $t8 = FFFFFFFF -/* 07F74 8080BCB4 3C098013 */ lui $t1, %hi(D_8012A4E0) -/* 07F78 8080BCB8 2529A4E0 */ addiu $t1, %lo(D_8012A4E0) +/* 07F74 8080BCB4 3C098013 */ lui $t1, %hi(gSramSlotOffsets) +/* 07F78 8080BCB8 2529A4E0 */ addiu $t1, %lo(gSramSlotOffsets) /* 07F7C 8080BCBC 95390000 */ lhu $t9, 0x0000($t1) ## 8012A4E0 /* 07F80 8080BCC0 8E0401E0 */ lw $a0, 0x01E0($s0) ## 000001E0 /* 07F84 8080BCC4 2405005A */ addiu $a1, $zero, 0x005A ## $a1 = 0000005A diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080BFE4.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080BFE4.s index 52fdd899be..eb4c00d7ca 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080BFE4.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080BFE4.s @@ -19,7 +19,7 @@ glabel func_8080BFE4 /* 082E8 8080C028 A1200002 */ sb $zero, %lo(D_80000002)($t1) /* 082EC 8080C02C 8E050000 */ lw $a1, 0x0000($s0) ## 000001E0 /* 082F0 8080C030 24060003 */ addiu $a2, $zero, 0x0003 ## $a2 = 00000003 -/* 082F4 8080C034 0C02A7A8 */ jal Sram_ReadWrite +/* 082F4 8080C034 0C02A7A8 */ jal SsSram_ReadWrite /* 082F8 8080C038 24070001 */ addiu $a3, $zero, 0x0001 ## $a3 = 00000001 /* 082FC 8080C03C 8E020000 */ lw $v0, 0x0000($s0) ## 000001E0 /* 08300 8080C040 3C048081 */ lui $a0, %hi(D_80812D4C) ## $a0 = 80810000 @@ -34,7 +34,7 @@ glabel func_8080BFE4 /* 08320 8080C060 3C040800 */ lui $a0, 0x0800 ## $a0 = 08000000 /* 08324 8080C064 8E050000 */ lw $a1, 0x0000($s0) ## 000001E0 /* 08328 8080C068 34068000 */ ori $a2, $zero, 0x8000 ## $a2 = 00008000 -/* 0832C 8080C06C 0C02A7A8 */ jal Sram_ReadWrite +/* 0832C 8080C06C 0C02A7A8 */ jal SsSram_ReadWrite /* 08330 8080C070 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000 /* 08334 8080C074 8E020000 */ lw $v0, 0x0000($s0) ## 000001E0 /* 08338 8080C078 3C048081 */ lui $a0, %hi(D_80812D6C) ## $a0 = 80810000 @@ -66,7 +66,7 @@ glabel func_8080BFE4 /* 08398 8080C0D8 A1CD0002 */ sb $t5, 0x0002($t6) ## 00000002 /* 0839C 8080C0DC A1ED0002 */ sb $t5, 0x0002($t7) ## 80000002 /* 083A0 8080C0E0 8E050000 */ lw $a1, 0x0000($s0) ## 000001E0 -/* 083A4 8080C0E4 0C02A7A8 */ jal Sram_ReadWrite +/* 083A4 8080C0E4 0C02A7A8 */ jal SsSram_ReadWrite /* 083A8 8080C0E8 24070001 */ addiu $a3, $zero, 0x0001 ## $a3 = 00000001 /* 083AC 8080C0EC 8E020000 */ lw $v0, 0x0000($s0) ## 000001E0 /* 083B0 8080C0F0 3C048081 */ lui $a0, %hi(D_80812D88) ## $a0 = 80810000 @@ -81,7 +81,7 @@ glabel func_8080BFE4 /* 083D0 8080C110 3C040800 */ lui $a0, 0x0800 ## $a0 = 08000000 /* 083D4 8080C114 8E050000 */ lw $a1, 0x0000($s0) ## 000001E0 /* 083D8 8080C118 34068000 */ ori $a2, $zero, 0x8000 ## $a2 = 00008000 -/* 083DC 8080C11C 0C02A7A8 */ jal Sram_ReadWrite +/* 083DC 8080C11C 0C02A7A8 */ jal SsSram_ReadWrite /* 083E0 8080C120 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000 /* 083E4 8080C124 8E020000 */ lw $v0, 0x0000($s0) ## 000001E0 /* 083E8 8080C128 3C048081 */ lui $a0, %hi(D_80812DA8) ## $a0 = 80810000 @@ -110,7 +110,7 @@ glabel func_8080BFE4 /* 0843C 8080C17C A18A0002 */ sb $t2, %lo(D_80000002)($t4) /* 08440 8080C180 8E050000 */ lw $a1, 0x0000($s0) ## 000001E0 /* 08444 8080C184 24060003 */ addiu $a2, $zero, 0x0003 ## $a2 = 00000003 -/* 08448 8080C188 0C02A7A8 */ jal Sram_ReadWrite +/* 08448 8080C188 0C02A7A8 */ jal SsSram_ReadWrite /* 0844C 8080C18C 24070001 */ addiu $a3, $zero, 0x0001 ## $a3 = 00000001 /* 08450 8080C190 8E020000 */ lw $v0, 0x0000($s0) ## 000001E0 /* 08454 8080C194 3C048081 */ lui $a0, %hi(D_80812DC4) ## $a0 = 80810000 @@ -125,7 +125,7 @@ glabel func_8080BFE4 /* 08474 8080C1B4 3C040800 */ lui $a0, 0x0800 ## $a0 = 08000000 /* 08478 8080C1B8 8E050000 */ lw $a1, 0x0000($s0) ## 000001E0 /* 0847C 8080C1BC 34068000 */ ori $a2, $zero, 0x8000 ## $a2 = 00008000 -/* 08480 8080C1C0 0C02A7A8 */ jal Sram_ReadWrite +/* 08480 8080C1C0 0C02A7A8 */ jal SsSram_ReadWrite /* 08484 8080C1C4 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000 /* 08488 8080C1C8 8E020000 */ lw $v0, 0x0000($s0) ## 000001E0 /* 0848C 8080C1CC 3C048081 */ lui $a0, %hi(D_80812DE4) ## $a0 = 80810000 diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080C60C.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080C60C.s index 2758ce4990..64c47e0bbb 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080C60C.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080C60C.s @@ -591,9 +591,9 @@ glabel func_8080C60C .L8080CF1C: /* 091DC 8080CF1C 8FB80034 */ lw $t8, 0x0034($sp) /* 091E0 8080CF20 000D1840 */ sll $v1, $t5, 1 -/* 091E4 8080CF24 3C0F8013 */ lui $t7, %hi(D_8012A4E0) +/* 091E4 8080CF24 3C0F8013 */ lui $t7, %hi(gSramSlotOffsets) /* 091E8 8080CF28 01E37821 */ addu $t7, $t7, $v1 -/* 091EC 8080CF2C 95EFA4E0 */ lhu $t7, %lo(D_8012A4E0)($t7) +/* 091EC 8080CF2C 95EFA4E0 */ lhu $t7, %lo(gSramSlotOffsets)($t7) /* 091F0 8080CF30 8F190000 */ lw $t9, 0x0000($t8) ## 00000000 /* 091F4 8080CF34 2401005A */ addiu $at, $zero, 0x005A ## $at = 0000005A /* 091F8 8080CF38 01F91021 */ addu $v0, $t7, $t9 diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080FE2C.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080FE2C.s index 5377a0d497..04098c854a 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080FE2C.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_8080FE2C.s @@ -4,8 +4,8 @@ glabel func_8080FE2C /* 0C0F4 8080FE34 AFB1000C */ sw $s1, 0x000C($sp) /* 0C0F8 8080FE38 AFB00008 */ sw $s0, 0x0008($sp) /* 0C0FC 8080FE3C 34298000 */ ori $t1, $at, 0x8000 ## $t1 = 00018000 -/* 0C100 8080FE40 3C0B8013 */ lui $t3, %hi(D_8012A4E0) -/* 0C104 8080FE44 256BA4E0 */ addiu $t3, %lo(D_8012A4E0) +/* 0C100 8080FE40 3C0B8013 */ lui $t3, %hi(gSramSlotOffsets) +/* 0C104 8080FE44 256BA4E0 */ addiu $t3, %lo(gSramSlotOffsets) /* 0C108 8080FE48 00893021 */ addu $a2, $a0, $t1 /* 0C10C 8080FE4C 24100044 */ addiu $s0, $zero, 0x0044 ## $s0 = 00000044 /* 0C110 8080FE50 24110041 */ addiu $s1, $zero, 0x0041 ## $s1 = 00000041 diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80810440.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80810440.s index 3d9c410d8f..665b5c22d5 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80810440.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_80810440.s @@ -9,7 +9,7 @@ glabel func_80810440 /* 0C71C 8081045C AFB00004 */ sw $s0, 0x0004($sp) /* 0C720 80810460 008B1021 */ addu $v0, $a0, $t3 /* 0C724 80810464 844E4A38 */ lh $t6, 0x4A38($v0) ## 00004A38 -/* 0C728 80810468 3C108013 */ lui $s0, %hi(D_8012A4E0) +/* 0C728 80810468 3C108013 */ lui $s0, %hi(gSramSlotOffsets) /* 0C72C 8081046C 24110045 */ addiu $s1, $zero, 0x0045 ## $s1 = 00000045 /* 0C730 80810470 000E7840 */ sll $t7, $t6, 1 /* 0C734 80810474 008FC021 */ addu $t8, $a0, $t7 @@ -25,7 +25,7 @@ glabel func_80810440 /* 0C758 80810498 00053023 */ subu $a2, $zero, $a1 .L8081049C: /* 0C75C 8081049C 84594A50 */ lh $t9, 0x4A50($v0) ## 00004A50 -/* 0C760 808104A0 2610A4E0 */ addiu $s0, %lo(D_8012A4E0) +/* 0C760 808104A0 2610A4E0 */ addiu $s0, %lo(gSramSlotOffsets) /* 0C764 808104A4 240D005A */ addiu $t5, $zero, 0x005A ## $t5 = 0000005A /* 0C768 808104A8 00D9001A */ div $zero, $a2, $t9 /* 0C76C 808104AC 00003812 */ mflo $a3 diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_808106F4.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_808106F4.s index d9976e2ddb..555edea9c5 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_808106F4.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_808106F4.s @@ -25,7 +25,7 @@ glabel func_808106F4 /* 0CA0C 8081074C 3C018016 */ lui $at, %hi(gSaveContext+0x1354) /* 0CA10 80810750 260401E0 */ addiu $a0, $s0, 0x01E0 ## $a0 = 000001E0 /* 0CA14 80810754 84584A38 */ lh $t8, 0x4A38($v0) ## 00004A38 -/* 0CA18 80810758 0C02A121 */ jal func_800A8484 +/* 0CA18 80810758 0C02A121 */ jal Sram_OpenSave /* 0CA1C 8081075C AC38F9B4 */ sw $t8, %lo(gSaveContext+0x1354)($at) /* 0CA20 80810760 3C028016 */ lui $v0, %hi(gSaveContext) /* 0CA24 80810764 2442E660 */ addiu $v0, %lo(gSaveContext) @@ -55,7 +55,7 @@ glabel func_808106F4 /* 0CA7C 808107BC 3C018016 */ lui $at, %hi(gSaveContext+0x1354) /* 0CA80 808107C0 260401E0 */ addiu $a0, $s0, 0x01E0 ## $a0 = 000001E0 /* 0CA84 808107C4 844A4A38 */ lh $t2, 0x4A38($v0) ## 00004A38 -/* 0CA88 808107C8 0C02A121 */ jal func_800A8484 +/* 0CA88 808107C8 0C02A121 */ jal Sram_OpenSave /* 0CA8C 808107CC AC2AF9B4 */ sw $t2, %lo(gSaveContext+0x1354)($at) /* 0CA90 808107D0 3C028016 */ lui $v0, %hi(gSaveContext) /* 0CA94 808107D4 2442E660 */ addiu $v0, %lo(gSaveContext) diff --git a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_808113A8.s b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_808113A8.s index 1a8cc5b763..74d1da57dd 100644 --- a/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_808113A8.s +++ b/asm/non_matchings/overlays/gamestates/ovl_file_choose/func_808113A8.s @@ -6,7 +6,7 @@ glabel func_808113A8 /* 0D678 808113B8 AFBF0024 */ sw $ra, 0x0024($sp) /* 0D67C 808113BC 261201E0 */ addiu $s2, $s0, 0x01E0 ## $s2 = 000001E0 /* 0D680 808113C0 AFB1001C */ sw $s1, 0x001C($sp) -/* 0D684 808113C4 0C02A735 */ jal func_800A9CD4 +/* 0D684 808113C4 0C02A735 */ jal Sram_Alloc /* 0D688 808113C8 02402825 */ or $a1, $s2, $zero ## $a1 = 000001E0 /* 0D68C 808113CC 3C028016 */ lui $v0, %hi(gGameInfo) /* 0D690 808113D0 2442FA90 */ addiu $v0, %lo(gGameInfo) @@ -392,7 +392,7 @@ glabel func_808113A8 /* 0DC80 808119C0 8E450000 */ lw $a1, 0x0000($s2) ## 000001E0 /* 0DC84 808119C4 3C040800 */ lui $a0, 0x0800 ## $a0 = 08000000 /* 0DC88 808119C8 34068000 */ ori $a2, $zero, 0x8000 ## $a2 = 00008000 -/* 0DC8C 808119CC 0C02A7A8 */ jal Sram_ReadWrite +/* 0DC8C 808119CC 0C02A7A8 */ jal SsSram_ReadWrite /* 0DC90 808119D0 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000 /* 0DC94 808119D4 8E4F0000 */ lw $t7, 0x0000($s2) ## 000001E0 /* 0DC98 808119D8 3C018016 */ lui $at, %hi(gSaveContext+0x1409) diff --git a/data/code_800EC960.data.s b/data/code_800EC960.data.s index 243e2b9fbe..8b594008db 100644 --- a/data/code_800EC960.data.s +++ b/data/code_800EC960.data.s @@ -294,10 +294,10 @@ glabel D_80131884 glabel D_8013188C .incbin "baserom.z64", 0xBA8A2C, 0x358 -glabel D_80131BE4 +glabel gScarecrowCustomSongPtr .word D_80131884 -glabel D_80131BE8 +glabel gScarecrowSpawnSongPtr .word D_80131700 glabel D_80131BEC diff --git a/data/z_sram.data.s b/data/z_sram.data.s deleted file mode 100644 index 3b45c99342..0000000000 --- a/data/z_sram.data.s +++ /dev/null @@ -1,46 +0,0 @@ -.include "macro.inc" - -# assembler directives -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches -.set gp=64 # allow use of 64-bit general purpose registers - -.section .data - -.balign 16 - -glabel D_8012A4E0 - .incbin "baserom.z64", 0xBA1680, 0x6 - -glabel D_8012A4E6 - .incbin "baserom.z64", 0xBA1686, 0x6 - -glabel D_8012A4EC - .incbin "baserom.z64", 0xBA168C, 0xC - -glabel D_8012A4F8 - .incbin "baserom.z64", 0xBA1698, 0x4C - -glabel D_8012A544 - .incbin "baserom.z64", 0xBA16E4, 0xC - -glabel D_8012A550 - .incbin "baserom.z64", 0xBA16F0, 0x60 - -glabel D_8012A5B0 - .incbin "baserom.z64", 0xBA1750, 0x4 - -glabel D_8012A5B4 - .incbin "baserom.z64", 0xBA1754, 0x4C - -glabel D_8012A600 - .incbin "baserom.z64", 0xBA17A0, 0xC - -glabel D_8012A60C - .incbin "baserom.z64", 0xBA17AC, 0x60 - -glabel D_8012A66C - .incbin "baserom.z64", 0xBA180C, 0x4 - -glabel D_8012A670 - .incbin "baserom.z64", 0xBA1810, 0x20 diff --git a/include/functions.h b/include/functions.h index 92792bc78e..212e03cf49 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1397,14 +1397,21 @@ void SkinMatrix_SetScaleRotateYRPTranslate(MtxF* mf, f32 scaleX, f32 scaleY, f32 f32 dx, f32 dy, f32 dz); Mtx* SkinMatrix_MtxFToNewMtx(GraphicsContext* gfxCtx, MtxF* src); void func_800A7EC0(MtxF* mf, s16 a, f32 x, f32 y, f32 z); -// ? func_800A81A0(?); -// ? func_800A82C8(?); -// ? func_800A9A9C(?); -// ? func_800A9D28(?); -void func_800A9D40(u32 addr, u8 handleType, u8 handleDomain, u8 handleLatency, u8 handlePageSize, u8 handleRelDuration, - u8 handlePulse, u32 handleSpeed); -void func_800A9E14(UNK_PTR dramAddr, size_t size, UNK_TYPE arg2); -void Sram_ReadWrite(UNK_TYPE arg0, UNK_PTR dramAddr, size_t size, UNK_TYPE arg3); +void Sram_InitNewSave(void); +void Sram_InitDebugSave(void); +void Sram_OpenSave(SramContext* sramCtx); +void Sram_WriteSave(s32 unused); +void Sram_VerifyAndLoadAllSaves(FileChooseContext* fileChoose, SramContext* sramCtx); +void Sram_InitSave(FileChooseContext* fileChoose, SramContext* sramCtx); +void Sram_EraseSave(FileChooseContext* fileChoose, SramContext* sramCtx); +void Sram_CopySave(FileChooseContext* fileChoose, SramContext* sramCtx); +void Sram_Write16Bytes(SramContext* sramCtx); +void Sram_InitSram(GameState* gameState, SramContext* sramCtx); +void Sram_Alloc(GameState* gameState, SramContext* sramCtx); +void Sram_Init(GlobalContext* globalCtx, SramContext* sramCtx); +void SsSram_Init(u32 addr, u8 handleType, u8 handleDomain, u8 handleLatency, u8 handlePageSize, u8 handleRelDuration, u8 handlePulse, u32 handleSpeed); +void SsSram_Dma(void* dramAddr, size_t size, s32 direction); +void SsSram_ReadWrite(u32 addr, void* dramAddr, size_t size, s32 direction); void func_800A9F30(PadMgr*, s32); void func_800A9F6C(f32, u8, u8, u8); void func_800AA000(f32, u8, u8, u8); @@ -2284,7 +2291,7 @@ void func_800F6584(UNK_TYPE); void func_800F6584(UNK_TYPE); // ? func_800F66C0(?); void func_800F66DC(s8); -// ? func_800F6700(?); +void func_800F6700(s8 outputMode); void func_800F67A0(u8); // ? func_800F6828(?); void func_800F68BC(s8); diff --git a/include/macros.h b/include/macros.h index 8ebfb26fbc..d61729e57b 100644 --- a/include/macros.h +++ b/include/macros.h @@ -30,19 +30,19 @@ #define LINK_AGE_IN_YEARS (LINK_IS_CHILD ? YEARS_CHILD : YEARS_ADULT) #define SLOT(item) gItemSlots[item] -#define INV_CONTENT(item) gSaveContext.items[SLOT(item)] -#define AMMO(item) gSaveContext.ammo[SLOT(item)] +#define INV_CONTENT(item) gSaveContext.inventory.items[SLOT(item)] +#define AMMO(item) gSaveContext.inventory.ammo[SLOT(item)] #define BEANS_BOUGHT AMMO(ITEM_BEAN + 1) -#define ALL_EQUIP_VALUE(equip) ((s32)(gSaveContext.equipment & gEquipMasks[equip]) >> gEquipShifts[equip]) +#define ALL_EQUIP_VALUE(equip) ((s32)(gSaveContext.inventory.equipment & gEquipMasks[equip]) >> gEquipShifts[equip]) #define CUR_EQUIP_VALUE(equip) ((s32)(gSaveContext.equips.equipment & gEquipMasks[equip]) >> gEquipShifts[equip]) -#define CHECK_OWNED_EQUIP(equip, value) ((gBitFlags[value] << gEquipShifts[equip]) & gSaveContext.equipment) +#define CHECK_OWNED_EQUIP(equip, value) ((gBitFlags[value] << gEquipShifts[equip]) & gSaveContext.inventory.equipment) -#define CUR_UPG_VALUE(upg) ((s32)(gSaveContext.upgrades & gUpgradeMasks[upg]) >> gUpgradeShifts[upg]) +#define CUR_UPG_VALUE(upg) ((s32)(gSaveContext.inventory.upgrades & gUpgradeMasks[upg]) >> gUpgradeShifts[upg]) #define CAPACITY(upg, value) gUpgradeCapacities[upg][value] #define CUR_CAPACITY(upg) CAPACITY(upg, CUR_UPG_VALUE(upg)) -#define CHECK_QUEST_ITEM(item) (gBitFlags[item] & gSaveContext.questItems) +#define CHECK_QUEST_ITEM(item) (gBitFlags[item] & gSaveContext.inventory.questItems) #define B_BTN_ITEM ((gSaveContext.buttonStatus[0] == ITEM_NONE) \ ? ITEM_NONE \ diff --git a/include/variables.h b/include/variables.h index 135d5c2e7a..7c13c64746 100644 --- a/include/variables.h +++ b/include/variables.h @@ -439,16 +439,7 @@ extern RomFile gObjectTable[402]; extern EntranceInfo gEntranceTable[1556]; extern Scene gSceneTable[110]; //extern ? D_8012A4A0; -//extern ? D_8012A4E0; -//extern ? D_8012A4EC; -//extern ? D_8012A4F8; -//extern ? D_8012A544; -//extern ? D_8012A550; -//extern ? D_8012A5B0; -//extern ? D_8012A5B4; -//extern ? D_8012A600; -//extern ? D_8012A60C; -//extern ? D_8012A66C; +extern u16 gSramSlotOffsets[2][3]; //extern ? D_8012A690; //extern ? D_8012A69C; //extern ? D_8012A6A4; @@ -704,8 +695,8 @@ extern s32 D_80130514; //extern ? D_80131880; //extern ? D_80131884; //extern ? D_8013188C; -//extern ? D_80131BE4; -//extern ? D_80131BE8; +extern u8* gScarecrowCustomSongPtr; +extern u8* gScarecrowSpawnSongPtr; //extern ? D_80131BEC; //extern ? D_80131BF0; //extern ? D_80131C00; diff --git a/include/z64.h b/include/z64.h index bd7cb633a7..303fe24a98 100644 --- a/include/z64.h +++ b/include/z64.h @@ -3,6 +3,7 @@ #include "ultra64.h" #include "ultra64/gs2dex.h" +#include "z64save.h" #include "z64light.h" #include "z64actor.h" #include "z64player.h" @@ -55,178 +56,6 @@ typedef struct { /* 0x14 */ s16 data[REG_GROUPS * REG_PER_GROUP]; // 0xAE0 entries } GameInfo; // size = 0x15D4 -typedef struct { - /* 0x00 */ u8 buttonItems[4]; - /* 0x04 */ u8 cButtonSlots[3]; - /* 0x08 */ u16 equipment; -} ItemEquips; // size = 0x0A - -typedef struct { - /* 0x00 */ u32 chest; - /* 0x04 */ u32 swch; - /* 0x08 */ u32 clear; - /* 0x0C */ u32 collect; - /* 0x10 */ u32 unk; - /* 0x14 */ u32 rooms; - /* 0x18 */ u32 floors; -} SaveSceneFlags; // size = 0x1C - -typedef struct { - /* 0x00 */ s16 scene; - /* 0x02 */ Vec3s pos; - /* 0x08 */ s16 angle; -} HorseData; // size = 0x0A - -typedef struct { - /* 0x00 */ Vec3f pos; - /* 0x0C */ s16 yaw; - /* 0x0E */ s16 playerParams; - /* 0x10 */ s16 entranceIndex; - /* 0x12 */ u8 roomIndex; - /* 0x13 */ s8 data; - /* 0x14 */ u32 tempSwchFlags; - /* 0x18 */ u32 tempCollectFlags; -} RespawnData; // size = 0x1C - -typedef enum { - /* 0x00 */ RESPAWN_MODE_DOWN, /* Normal Void Outs */ - /* 0x01 */ RESPAWN_MODE_RETURN, /* Grotto Returnpoints */ - /* 0x02 */ RESPAWN_MODE_TOP /* Farore's Wind */ -} RespawnMode; - -typedef enum { - /* 0x00 */ BTN_ENABLED, - /* 0xFF */ BTN_DISABLED = 0xFF -} ButtonStatus; - -// Save Context (dbg ram start: 8015E660) -typedef struct { - /* 0x0000 */ s32 entranceIndex; - /* 0x0004 */ s32 linkAge; // 0: Adult; 1: Child - /* 0x0008 */ s32 cutsceneIndex; - /* 0x000C */ u16 dayTime; // "zelda_time" - /* 0x0010 */ s32 nightFlag; - /* 0x0014 */ s32 unk_14; - /* 0x0018 */ s32 unk_18; - /* 0x001C */ char newf[6]; // string "ZELDAZ" - /* 0x0022 */ s16 deaths; - /* 0x0024 */ char playerName[8]; - /* 0x002C */ s16 n64ddFlag; - /* 0x002E */ s16 healthCapacity; // "max_life" - /* 0x0030 */ s16 health; // "now_life" - /* 0x0032 */ s8 magicLevel; - /* 0x0033 */ s8 magic; - /* 0x0034 */ s16 rupees; - /* 0x0036 */ u16 swordHealth; - /* 0x0038 */ u16 naviTimer; - /* 0x003A */ u8 magicAcquired; - /* 0x003B */ char unk_3B[0x0001]; - /* 0x003C */ u8 doubleMagic; - /* 0x003D */ u8 doubleDefense; - /* 0x003E */ u8 bgsFlag; - /* 0x0040 */ ItemEquips childEquips; - /* 0x004A */ ItemEquips adultEquips; - /* 0x0054 */ char unk_54[0x0014]; - /* 0x0068 */ ItemEquips equips; - /* 0x0072 */ char unk_72[0x0002]; - /* 0x0074 */ u8 items[24]; - /* 0x008C */ s8 ammo[16]; - /* 0x009C */ u16 equipment; - /* 0x00A0 */ u32 upgrades; - /* 0x00A4 */ u32 questItems; - /* 0x00A8 */ u8 dungeonItems[20]; - /* 0x00BC */ s8 dungeonKeys[19]; - /* 0x00CF */ s8 defenseHearts; - /* 0x00D0 */ s16 gsTokens; - /* 0x00D4 */ SaveSceneFlags sceneFlags[124]; - struct { - /* 0x0E64 */ Vec3i pos; - /* 0x0E70 */ s32 yaw; - /* 0x0E74 */ s32 playerParams; - /* 0x0E78 */ s32 entranceIndex; - /* 0x0E7C */ s32 roomIndex; - /* 0x0E80 */ s32 set; - /* 0x0E84 */ s32 tempSwchFlags; - /* 0x0E88 */ s32 tempCollectFlags; - } fw; - /* 0x0E8C */ char unk_E8C[0x0010]; - /* 0x0E9C */ s32 gsFlags[6]; - /* 0x0EB4 */ char unk_EB4[0x0010]; - /* 0x0EC4 */ s32 unk_EC4; - /* 0x0EC8 */ char unk_EC8[0x000C]; - /* 0x0ED4 */ u16 eventChkInf[14]; // "event_chk_inf" - /* 0x0EF0 */ u16 itemGetInf[4]; // "item_get_inf" - /* 0x0EF8 */ u16 infTable[30]; // "inf_table" - /* 0x0F34 */ char unk_F34[0x0004]; - /* 0x0F38 */ u32 worldMapAreaData; // "area_arrival" - /* 0x0F3C */ char unk_F3C[0x0389]; - /* 0x12C5 */ u8 unk_12C5; - /* 0x12C6 */ char unk_12C6[0x0082]; - /* 0x1348 */ HorseData horseData; - /* 0x1352 */ u16 checksum; // "check_sum" - /* 0x1354 */ s32 fileNum; // "file_no" - /* 0x1358 */ char unk_1358[0x0004]; - /* 0x135C */ s32 gameMode; - /* 0x1360 */ s32 sceneSetupIndex; - /* 0x1364 */ s32 respawnFlag; // "restart_flag" - /* 0x1368 */ RespawnData respawn[3]; // "restart_data" - /* 0x13BC */ f32 unk_13BC; - /* 0x13C0 */ u16 unk_13C0; - /* 0x13C2 */ char unk_13C2[0x0001]; - /* 0x13C3 */ u8 unk_13C3; - /* 0x13C4 */ s16 dogParams; - /* 0x13C6 */ u8 textTriggerFlags; - /* 0x13C7 */ u8 unk_13C7; - /* 0x13C8 */ s16 nayrusLoveTimer; - /* 0x13CA */ char unk_13CA[0x0002]; - /* 0x13CC */ s16 rupeeAccumulator; - /* 0x13CE */ s16 timer1State; - /* 0x13D0 */ s16 timer1Value; - /* 0x13D2 */ s16 timer2State; - /* 0x13D4 */ s16 timer2Value; - /* 0x13D6 */ s16 timerX[2]; - /* 0x13DA */ s16 timerY[2]; - /* 0x13DE */ char unk_13DE[0x0002]; - /* 0x13E0 */ u8 seqIndex; - /* 0x13E1 */ u8 nightSeqIndex; - /* 0x13E2 */ u8 buttonStatus[5]; - /* 0x13E7 */ u8 unk_13E7; - /* 0x13E8 */ u16 unk_13E8; // alpha type? - /* 0x13EA */ u16 unk_13EA; // also alpha type? - /* 0x13EC */ u16 unk_13EC; // alpha type counter? - /* 0x13EE */ u16 unk_13EE; // previous alpha type? - /* 0x13F0 */ s16 unk_13F0; - /* 0x13F2 */ s16 unk_13F2; - /* 0x13F4 */ s16 unk_13F4; - /* 0x13F6 */ s16 unk_13F6; - /* 0x13F8 */ s16 unk_13F8; - /* 0x13FA */ u16 eventInf[4]; // "event_inf" - /* 0x1402 */ u16 mapIndex; // intended for maps/minimaps but commonly used as the dungeon index - /* 0x1404 */ u16 minigameState; - /* 0x1406 */ u16 minigameScore; // "yabusame_total" - /* 0x1408 */ char unk_1408[0x0001]; - /* 0x1409 */ u8 language; - /* 0x140A */ u8 audioSetting; - /* 0x140B */ char unk_140B[0x0001]; - /* 0x140C */ u8 zTargetingSetting; // 0: Switch; 1: Hold - /* 0x140E */ u16 unk_140E; // bgm related - /* 0x1410 */ u8 unk_1410; - /* 0x1411 */ u8 unk_1411; - /* 0x1412 */ u16 nextCutsceneIndex; - /* 0x1414 */ u8 cutsceneTrigger; - /* 0x1415 */ u8 chamberCutsceneNum; - /* 0x1416 */ u16 nextDayTime; // "next_zelda_time" - /* 0x1418 */ u8 fadeDuration; - /* 0x1419 */ u8 unk_1419; // transition related - /* 0x141A */ u16 environmentTime; - /* 0x141C */ u8 dogIsLost; - /* 0x141D */ u8 nextTransition; - /* 0x141E */ char unk_141E[0x0002]; - /* 0x1420 */ s16 worldMapArea; - /* 0x1422 */ s16 unk_1422; // day time related - /* 0x1424 */ s16 healthAccumulator; -} SaveContext; // size = 0x1428 - typedef struct { /* 0x00000 */ u16 headMagic; // 1234 /* 0x00008 */ Gfx polyOpaBuffer[0x17E0]; @@ -266,12 +95,12 @@ typedef struct { typedef struct OSScTask { /* 0x00 */ struct OSScTask* next; - /* 0x04 */ u32 state; - /* 0x08 */ u32 flags; - /* 0x0C */ CfbInfo* framebuffer; - /* 0x10 */ OSTask list; - /* 0x50 */ OSMesgQueue* msgQ; - /* 0x54 */ OSMesg msg; + /* 0x04 */ u32 state; + /* 0x08 */ u32 flags; + /* 0x0C */ CfbInfo* framebuffer; + /* 0x10 */ OSTask list; + /* 0x50 */ OSMesgQueue* msgQ; + /* 0x54 */ OSMesg msg; } OSScTask; typedef struct GraphicsContext { @@ -656,10 +485,6 @@ typedef struct { /* 0x10 */ Vec3f relativePos; } SoundSource; // size = 0x1C -typedef struct { - /* 0x00 */ char unk_0[0x4]; -} SubGlobalContext1F74; // size = 0x4 - typedef struct { /* 0x000 */ char unk_00[0x128]; /* 0x128 */ void* staticSegments[3]; @@ -1030,8 +855,7 @@ typedef struct { /* 0x1C4 */ Collider* colOc[COLLISION_CHECK_OC_MAX]; /* 0x28C */ s32 colOcLineCount; /* 0x290 */ OcLine* colOcLine[COLLISION_CHECK_OC_LINE_MAX]; - -} CollisionCheckContext; // size = 0x29C SubGlobalContext11E60 +} CollisionCheckContext; // size = 0x29C typedef struct ListAlloc { /* 0x00 */ struct ListAlloc* prev; @@ -1104,8 +928,10 @@ typedef struct { } EntranceEntry; typedef struct { - /* 0x00 */ void* read_buff; -} Sram; // size = 0x4 + /* 0x00 */ u8* readBuff; +} SramContext; // size = 0x4 + +#define SRAM_SIZE 0x8000 typedef struct GameAllocEntry { /* 0x00 */ struct GameAllocEntry* next; @@ -1141,7 +967,7 @@ typedef struct { /* 0x0000 */ GameState state; /* 0x00A4 */ void* staticSegment; /* 0x00A8 */ View view; - /* 0x01D0 */ Sram sram; + /* 0x01D0 */ SramContext sramCtx; /* 0x01D4 */ u16 unk_1D4; // not used in mq dbg (some sort of timer that doesn't seem to affect anything) /* 0x01D6 */ s16 coverAlpha; /* 0x01D8 */ s16 addAlpha; // not used in mq dbg @@ -1221,7 +1047,7 @@ typedef struct GlobalContext { /* 0x01C24 */ ActorContext actorCtx; /* 0x01D64 */ CutsceneContext csCtx; // "demo_play" /* 0x01DB4 */ SoundSource soundSources[16]; - /* 0x01F74 */ SubGlobalContext1F74 sub_1F74; + /* 0x01F74 */ SramContext sramCtx; /* 0x01F78 */ SkyboxContext skyboxCtx; /* 0x020C8 */ char unk_20C8[0x10]; /* 0x020D8 */ MessageContext msgCtx; // "message" @@ -1291,6 +1117,95 @@ typedef struct { /* 0x00A8 */ View view; } OpeningContext; // size = 0x1D0 +typedef struct { + /* 0x00000 */ GameState state; + /* 0x000A4 */ Vtx* allocVtx1; + /* 0x000A8 */ void* staticSegment; + /* 0x000AC */ void* parameterSegment; + /* 0x000B0 */ char unk_B0[0x8]; + /* 0x000B8 */ View view; + /* 0x001E0 */ SramContext sramCtx; + /* 0x001E4 */ char unk_1E4[0x4]; + /* 0x001E8 */ SkyboxContext skyboxCtx; + /* 0x00338 */ char unk_338[0x10]; + /* 0x00348 */ MessageContext msgCtx; + /* 0x0E760 */ char kanfont[0xE188]; + /* 0x1C8E8 */ EnvironmentContext envCtx; + /* 0x1C9E4 */ char unk_1C9E4[0x4]; + /* 0x1C9E8 */ Vtx* allocVtx2; + /* 0x1C9EC */ Vtx* allocVtx3; + /* 0x1C9F0 */ Vtx* allocVtx4; + /* 0x1C9F4 */ u8 n64ddFlag; + /* 0x1C9F6 */ u16 deaths[3]; + /* 0x1C9FC */ u8 fileNames[3][8]; + /* 0x1CA14 */ u16 healthCapacities[3]; + /* 0x1CA1C */ u32 questItems[3]; + /* 0x1CA28 */ s16 n64ddFlags[3]; + /* 0x1CA2E */ s8 heartStatus[3]; + /* 0x1CA32 */ u16 nowLife[3]; + /* 0x1CA38 */ s16 btnIdx; + /* 0x1CA3A */ u16 yesNoButtonIdx; + /* 0x1CA3C */ s16 menuIdx; + /* 0x1CA3E */ s16 fileSelectStateIdx; + /* 0x1CA40 */ s16 unkActionIndex; + /* 0x1CA42 */ u16 nextFileSelectStateIdx; + /* 0x1CA44 */ s16 openFileStateIdx; + /* 0x1CA46 */ s16 selectedFileIdx; + /* 0x1CA48 */ char unk_1CA48[0x2]; + /* 0x1CA4A */ u16 fileNamesY[3]; + /* 0x1CA50 */ u16 actionTimer; + /* 0x1CA52 */ u16 buttonsY[6]; + /* 0x1CA5E */ s16 copyDestFileIdx; + /* 0x1CA60 */ u16 fileWarningTexIdx; + /* 0x1CA62 */ u16 warningFileIdx; + /* 0x1CA64 */ u16 titleTexIdx; + /* 0x1CA66 */ u16 nextTitleTexIdx; + /* 0x1CA68 */ s16 windowR; + /* 0x1CA6A */ s16 windowG; + /* 0x1CA6C */ s16 windowB; + /* 0x1CA6E */ u16 selectFileTitleA; + /* 0x1CA70 */ u16 openFileTitleA; + /* 0x1CA72 */ u16 windowA; + /* 0x1CA74 */ u16 fileButtonsA[3]; + /* 0x1CA7A */ u16 fileNameBoxesA[3]; + /* 0x1CA80 */ u16 fileNamesA[3]; + /* 0x1CA86 */ u16 metalJointsA[3]; + /* 0x1CA8C */ u16 fileInfoA; + /* 0x1CA8E */ u16 targetFileInfoBoxA; + /* 0x1CA90 */ u16 unkFileInfoBoxA; + /* 0x1CA92 */ u16 copyButtonA; + /* 0x1CA94 */ u16 eraseButtonA; + /* 0x1CA96 */ u16 yesBiuttonA; + /* 0x1CA98 */ u16 quitButtonA; + /* 0x1CA9A */ u16 optionButtonA; + /* 0x1CA9C */ u16 newFileNameBoxA; + /* 0x1CA9E */ u16 decideCancelTextA; + /* 0x1CAA0 */ u16 fileEmptyTextA; + /* 0x1CAA2 */ u16 highlightColorR; + /* 0x1CAA4 */ u16 highlightColorG; + /* 0x1CAA6 */ u16 highlightColorB; + /* 0x1CAA8 */ u16 highlightColorA; + /* 0x1CAAA */ u16 highlightColorAIncrease; + /* 0x1CAAC */ char unk_1CAAC[0x6]; + /* 0x1CAB2 */ u16 stickXTimer; + /* 0x1CAB4 */ u16 stickYTimer; + /* 0x1CAB6 */ u16 idxXOff; + /* 0x1CAB8 */ u16 idxYOff; + /* 0x1CABA */ s16 stickX; + /* 0x1CABC */ s16 stickY; + /* 0x1CABE */ u16 newFileNameBoxX; + /* 0x1CAC0 */ u16 windowX; + /* 0x1CAC4 */ f32 windowRotX; + /* 0x1CAC8 */ u16 kbdButtonIdx; + /* 0x1CACA */ u16 unk_1CACA; + /* 0x1CACC */ u16 kbdCharBoxA; + /* 0x1CACE */ s16 kbdCharIdx; + /* 0x1CAD0 */ s16 kbdCharX; + /* 0x1CAD2 */ s16 kbdCharY; + /* 0x1CAD4 */ s16 newFileNameCharCount; + /* 0x1CAD6 */ u16 unk_1CAD6[3]; +} FileChooseContext; // size = 0x1CADC + typedef enum { DPM_UNK = 0, DPM_PLAYER = 1, diff --git a/include/z64save.h b/include/z64save.h new file mode 100644 index 0000000000..7ef1cba0e8 --- /dev/null +++ b/include/z64save.h @@ -0,0 +1,190 @@ +#ifndef _Z64SAVE_H_ +#define _Z64SAVE_H_ + +#include "ultra64.h" +#include "z64math.h" + +typedef struct { + /* 0x00 */ u8 buttonItems[4]; + /* 0x04 */ u8 cButtonSlots[3]; + /* 0x08 */ u16 equipment; +} ItemEquips; // size = 0x0A + +typedef struct { + /* 0x00 */ u8 items[24]; + /* 0x18 */ s8 ammo[16]; + /* 0x28 */ u16 equipment; + /* 0x2C */ u32 upgrades; + /* 0x30 */ u32 questItems; + /* 0x34 */ u8 dungeonItems[20]; + /* 0x48 */ s8 dungeonKeys[19]; + /* 0x5B */ s8 defenseHearts; + /* 0x5C */ s16 gsTokens; +} Inventory; // size = 0x5E + +typedef struct { + /* 0x00 */ u32 chest; + /* 0x04 */ u32 swch; + /* 0x08 */ u32 clear; + /* 0x0C */ u32 collect; + /* 0x10 */ u32 unk; + /* 0x14 */ u32 rooms; + /* 0x18 */ u32 floors; +} SavedSceneFlags; // size = 0x1C + +typedef struct { + /* 0x00 */ s16 scene; + /* 0x02 */ Vec3s pos; + /* 0x08 */ s16 angle; +} HorseData; // size = 0x0A + +typedef struct { + /* 0x00 */ Vec3f pos; + /* 0x0C */ s16 yaw; + /* 0x0E */ s16 playerParams; + /* 0x10 */ s16 entranceIndex; + /* 0x12 */ u8 roomIndex; + /* 0x13 */ s8 data; + /* 0x14 */ u32 tempSwchFlags; + /* 0x18 */ u32 tempCollectFlags; +} RespawnData; // size = 0x1C + +typedef struct { + /* 0x00 */ Vec3i pos; + /* 0x0C */ s32 yaw; + /* 0x10 */ s32 playerParams; + /* 0x14 */ s32 entranceIndex; + /* 0x18 */ s32 roomIndex; + /* 0x1C */ s32 set; + /* 0x20 */ s32 tempSwchFlags; + /* 0x24 */ s32 tempCollectFlags; +} FaroresWindData; // size = 0x28 + +typedef struct { + /* 0x0000 */ s32 entranceIndex; // start of `save` substruct, originally called "memory" + /* 0x0004 */ s32 linkAge; // 0: Adult; 1: Child + /* 0x0008 */ s32 cutsceneIndex; + /* 0x000C */ u16 dayTime; // "zelda_time" + /* 0x0010 */ s32 nightFlag; + /* 0x0014 */ s32 numDays; + /* 0x0018 */ s32 unk_18; // increments with numDays, gets reset by goron for bgs and one other use + /* 0x001C */ char newf[6]; // string "ZELDAZ". start of `info` substruct, originally called "information" + /* 0x0022 */ s16 deaths; + /* 0x0024 */ char playerName[8]; + /* 0x002C */ s16 n64ddFlag; + /* 0x002E */ s16 healthCapacity; // "max_life" + /* 0x0030 */ s16 health; // "now_life" + /* 0x0032 */ s8 magicLevel; + /* 0x0033 */ s8 magic; + /* 0x0034 */ s16 rupees; + /* 0x0036 */ u16 swordHealth; + /* 0x0038 */ u16 naviTimer; + /* 0x003A */ u8 magicAcquired; + /* 0x003B */ char unk_3B[0x01]; + /* 0x003C */ u8 doubleMagic; + /* 0x003D */ u8 doubleDefense; + /* 0x003E */ u8 bgsFlag; + /* 0x003F */ u8 ocarinaGameReward; + /* 0x0040 */ ItemEquips childEquips; + /* 0x004A */ ItemEquips adultEquips; + /* 0x0054 */ u32 unk_54; // this may be incorrect, currently used for alignement + /* 0x0058 */ char unk_58[0x0E]; + /* 0x0066 */ s16 savedSceneNum; + /* 0x0068 */ ItemEquips equips; + /* 0x0074 */ Inventory inventory; + /* 0x00D4 */ SavedSceneFlags sceneFlags[124]; + /* 0x0E64 */ FaroresWindData fw; + /* 0x0E8C */ char unk_E8C[0x10]; + /* 0x0E9C */ s32 gsFlags[6]; + /* 0x0EB4 */ char unk_EB4[0x10]; + /* 0x0EC4 */ s32 horseRaceRecord; + /* 0x0EC8 */ char unk_EC8[0x0C]; + /* 0x0ED4 */ u16 eventChkInf[14]; // "event_chk_inf" + /* 0x0EF0 */ u16 itemGetInf[4]; // "item_get_inf" + /* 0x0EF8 */ u16 infTable[30]; // "inf_table" + /* 0x0F34 */ char unk_F34[0x04]; + /* 0x0F38 */ u32 worldMapAreaData; // "area_arrival" + /* 0x0F3C */ char unk_F3C[0x4]; + /* 0x0F40 */ u8 scarecrowCustomSongSet; + /* 0x0F41 */ u8 scarecrowCustomSong[0x360]; + /* 0x12A1 */ char unk_12A1[0x24]; + /* 0x12C5 */ u8 scarecrowSpawnSongSet; + /* 0x12C6 */ u8 scarecrowSpawnSong[0x80]; + /* 0x1346 */ char unk_1346[0x02]; + /* 0x1348 */ HorseData horseData; + /* 0x1352 */ u16 checksum; // "check_sum" + /* 0x1354 */ s32 fileNum; // "file_no" + /* 0x1358 */ char unk_1358[0x0004]; + /* 0x135C */ s32 gameMode; + /* 0x1360 */ s32 sceneSetupIndex; + /* 0x1364 */ s32 respawnFlag; // "restart_flag" + /* 0x1368 */ RespawnData respawn[3]; // "restart_data" + /* 0x13BC */ f32 entranceSpeed; + /* 0x13C0 */ u16 entranceSound; + /* 0x13C2 */ char unk_13C2[0x0001]; + /* 0x13C3 */ u8 unk_13C3; + /* 0x13C4 */ s16 dogParams; + /* 0x13C6 */ u8 textTriggerFlags; + /* 0x13C7 */ u8 showTitleCard; + /* 0x13C8 */ s16 nayrusLoveTimer; + /* 0x13CA */ char unk_13CA[0x0002]; + /* 0x13CC */ s16 rupeeAccumulator; + /* 0x13CE */ s16 timer1State; + /* 0x13D0 */ s16 timer1Value; + /* 0x13D2 */ s16 timer2State; + /* 0x13D4 */ s16 timer2Value; + /* 0x13D6 */ s16 timerX[2]; + /* 0x13DA */ s16 timerY[2]; + /* 0x13DE */ char unk_13DE[0x0002]; + /* 0x13E0 */ u8 seqIndex; + /* 0x13E1 */ u8 nightSeqIndex; + /* 0x13E2 */ u8 buttonStatus[5]; + /* 0x13E7 */ u8 unk_13E7; // alpha related + /* 0x13E8 */ u16 unk_13E8; // alpha type? + /* 0x13EA */ u16 unk_13EA; // also alpha type? + /* 0x13EC */ u16 unk_13EC; // alpha type counter? + /* 0x13EE */ u16 unk_13EE; // previous alpha type? + /* 0x13F0 */ s16 unk_13F0; // magic related + /* 0x13F2 */ s16 unk_13F2; // magic related + /* 0x13F4 */ s16 unk_13F4; // magic related + /* 0x13F6 */ s16 unk_13F6; // magic related + /* 0x13F8 */ s16 unk_13F8; // magic related + /* 0x13FA */ u16 eventInf[4]; // "event_inf" + /* 0x1402 */ u16 mapIndex; // intended for maps/minimaps but commonly used as the dungeon index + /* 0x1404 */ u16 minigameState; + /* 0x1406 */ u16 minigameScore; // "yabusame_total" + /* 0x1408 */ char unk_1408[0x0001]; + /* 0x1409 */ u8 language; + /* 0x140A */ u8 audioSetting; + /* 0x140B */ char unk_140B[0x0001]; + /* 0x140C */ u8 zTargetSetting; // 0: Switch; 1: Hold + /* 0x140E */ u16 unk_140E; // bgm related + /* 0x1410 */ u8 unk_1410; // transition related + /* 0x1411 */ char unk_1411[0x0001]; + /* 0x1412 */ u16 nextCutsceneIndex; + /* 0x1414 */ u8 cutsceneTrigger; + /* 0x1415 */ u8 chamberCutsceneNum; + /* 0x1416 */ u16 nextDayTime; // "next_zelda_time" + /* 0x1418 */ u8 fadeDuration; + /* 0x1419 */ u8 unk_1419; // transition related + /* 0x141A */ u16 environmentTime; + /* 0x141C */ u8 dogIsLost; + /* 0x141D */ u8 nextTransition; + /* 0x141E */ char unk_141E[0x0002]; + /* 0x1420 */ s16 worldMapArea; + /* 0x1422 */ s16 unk_1422; // day time related + /* 0x1424 */ s16 healthAccumulator; +} SaveContext; // size = 0x1428 + +typedef enum { + /* 0x00 */ RESPAWN_MODE_DOWN, /* Normal Void Outs */ + /* 0x01 */ RESPAWN_MODE_RETURN, /* Grotto Returnpoints */ + /* 0x02 */ RESPAWN_MODE_TOP /* Farore's Wind */ +} RespawnMode; + +typedef enum { + /* 0x00 */ BTN_ENABLED, + /* 0xFF */ BTN_DISABLED = 0xFF +} ButtonStatus; + +#endif diff --git a/spec b/spec index 58a3aa5f18..9f197ebd2a 100644 --- a/spec +++ b/spec @@ -346,8 +346,7 @@ beginseg include "build/src/code/z_skin_awb.o" include "build/src/code/z_skin_matrix.o" include "build/src/code/z_sram.o" - include "build/data/z_sram.data.o" - include "build/src/code/code_800A9D40.o" + include "build/src/code/z_ss_sram.o" include "build/src/code/code_800A9F30.o" include "build/data/z_text.data.o" include "build/src/code/z_view.o" diff --git a/src/code/code_80097A00.c b/src/code/code_80097A00.c index b61559de60..457fe72cef 100644 --- a/src/code/code_80097A00.c +++ b/src/code/code_80097A00.c @@ -85,7 +85,7 @@ u8 Inventory_DeleteEquipment(GlobalContext* globalCtx, s16 equipment) { sp26 >>= gEquipShifts[equipment]; gSaveContext.equips.equipment &= gEquipNegMasks[equipment]; - gSaveContext.equipment ^= gBitFlags[sp26 - 1] << gEquipShifts[equipment]; + gSaveContext.inventory.equipment ^= gBitFlags[sp26 - 1] << gEquipShifts[equipment]; if (equipment == EQUIP_TUNIC) { gSaveContext.equips.equipment |= 0x0100; @@ -104,6 +104,6 @@ u8 Inventory_DeleteEquipment(GlobalContext* globalCtx, s16 equipment) { } void Inventory_ChangeUpgrade(s16 upgrade, s16 value) { - gSaveContext.upgrades &= gUpgradeNegMasks[upgrade]; - gSaveContext.upgrades |= value << gUpgradeShifts[upgrade]; + gSaveContext.inventory.upgrades &= gUpgradeNegMasks[upgrade]; + gSaveContext.inventory.upgrades |= value << gUpgradeShifts[upgrade]; } diff --git a/src/code/z_actor.c b/src/code/z_actor.c index b9638879b7..4c90d800a6 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -1949,10 +1949,10 @@ void func_800304B0(GlobalContext* globalCtx) { // Actor_InitContext void func_800304DC(GlobalContext* globalCtx, ActorContext* actorCtx, ActorEntry* actorEntry) { ActorOverlay* overlayEntry; - SaveSceneFlags* saveSceneFlags; + SavedSceneFlags* savedSceneFlags; s32 i; - saveSceneFlags = &gSaveContext.sceneFlags[globalCtx->sceneNum]; + savedSceneFlags = &gSaveContext.sceneFlags[globalCtx->sceneNum]; bzero(actorCtx, sizeof(*actorCtx)); @@ -1967,10 +1967,10 @@ void func_800304DC(GlobalContext* globalCtx, ActorContext* actorCtx, ActorEntry* overlayEntry++; } - actorCtx->flags.chest = saveSceneFlags->chest; - actorCtx->flags.swch = saveSceneFlags->swch; - actorCtx->flags.clear = saveSceneFlags->clear; - actorCtx->flags.collect = saveSceneFlags->collect; + actorCtx->flags.chest = savedSceneFlags->chest; + actorCtx->flags.swch = savedSceneFlags->swch; + actorCtx->flags.clear = savedSceneFlags->clear; + actorCtx->flags.collect = savedSceneFlags->collect; func_8002CDE4(globalCtx, &actorCtx->titleCtx); diff --git a/src/code/z_demo.c b/src/code/z_demo.c index 9210fe1d13..4c4401617c 100644 --- a/src/code/z_demo.c +++ b/src/code/z_demo.c @@ -2009,7 +2009,7 @@ void Cutscene_HandleEntranceTriggers(GlobalContext* globalCtx) { Flags_SetEventChkInf(entranceCutscene->flag); Cutscene_SetSegment(globalCtx, entranceCutscene->segAddr); gSaveContext.cutsceneTrigger = 2; - gSaveContext.unk_13C7 = 0; + gSaveContext.showTitleCard = false; break; } } diff --git a/src/code/z_elf_message.c b/src/code/z_elf_message.c index d3552c419d..6db1527b1b 100644 --- a/src/code/z_elf_message.c +++ b/src/code/z_elf_message.c @@ -22,8 +22,8 @@ u32 ElfMessage_CheckCondition(ElfMessage* msg) { flag = 1 << (msg->byte1 & 0x0F); return ((msg->byte0 & 1) == 1) == ((flag & gSaveContext.eventChkInf[(msg->byte1 & 0xF0) >> 4]) != 0); case 2: - return ((msg->byte0 & 1) == 1) == - ((gSaveContext.dungeonItems[gSaveContext.mapIndex] & gBitFlags[msg->byte1 - ITEM_KEY_BOSS]) != 0); + return ((msg->byte0 & 1) == 1) == ((gSaveContext.inventory.dungeonItems[gSaveContext.mapIndex] & + gBitFlags[msg->byte1 - ITEM_KEY_BOSS]) != 0); case 4: return ((msg->byte0 & 1) == 1) == (msg->byte3 == INV_CONTENT(msg->byte1)); case 6: @@ -33,7 +33,7 @@ u32 ElfMessage_CheckCondition(ElfMessage* msg) { case 0x10: return ((msg->byte0 & 1) == 1) == (((gBitFlags[msg->byte3 - ITEM_BOOTS_KOKIRI] << gEquipShifts[EQUIP_BOOTS]) & - gSaveContext.equipment) != 0); + gSaveContext.inventory.equipment) != 0); case 0x20: return ((msg->byte0 & 1) == 1) == ((CHECK_QUEST_ITEM(msg->byte3 - ITEM_SONG_MINUET + QUEST_SONG_MINUET)) != 0); diff --git a/src/code/z_kankyo.c b/src/code/z_kankyo.c index 70b8e2c313..016743503d 100644 --- a/src/code/z_kankyo.c +++ b/src/code/z_kankyo.c @@ -77,7 +77,7 @@ void func_800775D8() { } s32 func_800775E4() { - return gSaveContext.unk_14; + return gSaveContext.numDays; } void func_800775F0(u16 arg0) { diff --git a/src/code/z_lifemeter.c b/src/code/z_lifemeter.c index 64fe2e53e9..63c5350088 100644 --- a/src/code/z_lifemeter.c +++ b/src/code/z_lifemeter.c @@ -204,7 +204,7 @@ void Health_Draw(GlobalContext* globalCtx) { f32 sp144 = interfaceCtx->unk_22A * 0.1f; s32 curCombineModeSet = 0; u8* curBgImgLoaded = NULL; - s32 ddHeartCountMinusOne = gSaveContext.defenseHearts - 1; + s32 ddHeartCountMinusOne = gSaveContext.inventory.defenseHearts - 1; OPEN_DISPS(gfxCtx, "../z_lifemeter.c", 353); diff --git a/src/code/z_map_exp.c b/src/code/z_map_exp.c index c409d0cf8f..68e68e0f36 100644 --- a/src/code/z_map_exp.c +++ b/src/code/z_map_exp.c @@ -46,7 +46,7 @@ void Map_SetFloorPalettesData(GlobalContext* globalCtx, s16 floor) { interfaceCtx->unk_140[i + 16] = 0; } - if (gSaveContext.dungeonItems[mapIndex] & gBitFlags[DUNGEON_MAP]) { + if (gSaveContext.inventory.dungeonItems[mapIndex] & gBitFlags[DUNGEON_MAP]) { interfaceCtx->unk_140[30] = 0; interfaceCtx->unk_140[31] = 1; } @@ -383,7 +383,7 @@ void Minimap_Draw(GlobalContext* globalCtx) { gDPSetCombineLERP(oGfxCtx->overlay.p++, 1, 0, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, 0, 1, 0, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, 0); - if (gSaveContext.dungeonItems[mapIndex] & gBitFlags[DUNGEON_MAP]) { + if (gSaveContext.inventory.dungeonItems[mapIndex] & gBitFlags[DUNGEON_MAP]) { gDPSetPrimColor(oGfxCtx->overlay.p++, 0, 0, 100, 255, 255, interfaceCtx->minimapAlpha); gDPLoadTextureBlock_4b(oGfxCtx->overlay.p++, interfaceCtx->mapSegment, G_IM_FMT_I, 96, 85, 0, @@ -395,7 +395,7 @@ void Minimap_Draw(GlobalContext* globalCtx) { 0, 0, 1024, 1024); } - if (gSaveContext.dungeonItems[mapIndex] & gBitFlags[DUNGEON_COMPASS]) { + if (gSaveContext.inventory.dungeonItems[mapIndex] & gBitFlags[DUNGEON_COMPASS]) { Minimap_DrawCompassIcons(globalCtx); // Draw icons for the player spawn and current position func_80094520(globalCtx->state.gfxCtx); MapMark_DrawConditionally(globalCtx); @@ -525,7 +525,7 @@ void Map_Update(GlobalContext* globalCtx) { case SCENE_HAKADANCH: case SCENE_ICE_DOUKUTO: interfaceCtx->unk_140[30] = 0; - if (gSaveContext.dungeonItems[mapIndex] & gBitFlags[DUNGEON_MAP]) { + if (gSaveContext.inventory.dungeonItems[mapIndex] & gBitFlags[DUNGEON_MAP]) { interfaceCtx->unk_140[31] = 1; } else { interfaceCtx->unk_140[31] = 0; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 97ef34dc45..87b0787049 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -636,7 +636,7 @@ void func_80083108(GlobalContext* globalCtx) { Interface_LoadItemIcon1(globalCtx, 0); } else { - if (gSaveContext.items[SLOT_BOW] == ITEM_NONE) { + if (gSaveContext.inventory.items[SLOT_BOW] == ITEM_NONE) { gSaveContext.equips.buttonItems[0] = ITEM_NONE; } else { Interface_LoadItemIcon1(globalCtx, 0); @@ -752,7 +752,7 @@ void func_80083108(GlobalContext* globalCtx) { if (player->stateFlags1 & 0x00800000) { if ((gSaveContext.equips.buttonItems[0] != ITEM_NONE) && (gSaveContext.equips.buttonItems[0] != ITEM_BOW)) { - if (gSaveContext.items[SLOT_BOW] == ITEM_NONE) { + if (gSaveContext.inventory.items[SLOT_BOW] == ITEM_NONE) { gSaveContext.equips.buttonItems[0] = ITEM_NONE; } else { gSaveContext.equips.buttonItems[0] = ITEM_BOW; @@ -1154,7 +1154,7 @@ void Inventory_SwapAgeEquipment(void) { if (gSaveContext.adultEquips.buttonItems[0] == ITEM_NONE) { gSaveContext.equips.buttonItems[0] = ITEM_SWORD_MASTER; - if (gSaveContext.items[SLOT_NUT] != ITEM_NONE) { + if (gSaveContext.inventory.items[SLOT_NUT] != ITEM_NONE) { gSaveContext.equips.buttonItems[1] = ITEM_NUT; gSaveContext.equips.cButtonSlots[0] = SLOT_NUT; } else { @@ -1162,7 +1162,7 @@ void Inventory_SwapAgeEquipment(void) { } gSaveContext.equips.buttonItems[2] = ITEM_BOMB; - gSaveContext.equips.buttonItems[3] = gSaveContext.items[SLOT_OCARINA]; + gSaveContext.equips.buttonItems[3] = gSaveContext.inventory.items[SLOT_OCARINA]; gSaveContext.equips.cButtonSlots[1] = SLOT_BOMB; gSaveContext.equips.cButtonSlots[2] = SLOT_OCARINA; gSaveContext.equips.equipment = 0x1122; @@ -1179,7 +1179,8 @@ void Inventory_SwapAgeEquipment(void) { ((gSaveContext.equips.buttonItems[i] >= ITEM_WEIRD_EGG) && (gSaveContext.equips.buttonItems[i] <= ITEM_CLAIM_CHECK))) { osSyncPrintf("Register_Item_Pt(%d)=%d\n", i, gSaveContext.equips.cButtonSlots[i - 1]); - gSaveContext.equips.buttonItems[i] = gSaveContext.items[gSaveContext.equips.cButtonSlots[i - 1]]; + gSaveContext.equips.buttonItems[i] = + gSaveContext.inventory.items[gSaveContext.equips.cButtonSlots[i - 1]]; } } @@ -1209,7 +1210,8 @@ void Inventory_SwapAgeEquipment(void) { ((gSaveContext.equips.buttonItems[i] >= ITEM_WEIRD_EGG) && (gSaveContext.equips.buttonItems[i] <= ITEM_CLAIM_CHECK))) { osSyncPrintf("Register_Item_Pt(%d)=%d\n", i, gSaveContext.equips.cButtonSlots[i - 1]); - gSaveContext.equips.buttonItems[i] = gSaveContext.items[gSaveContext.equips.cButtonSlots[i - 1]]; + gSaveContext.equips.buttonItems[i] = + gSaveContext.inventory.items[gSaveContext.equips.cButtonSlots[i - 1]]; } } @@ -1222,7 +1224,7 @@ void Inventory_SwapAgeEquipment(void) { temp = gEquipMasks[EQUIP_SHIELD] & gSaveContext.equips.equipment; if (temp != 0) { temp >>= gEquipShifts[EQUIP_SHIELD]; - if (!(gBitFlags[temp + 3] & gSaveContext.equipment)) { + if (!(gBitFlags[temp + 3] & gSaveContext.inventory.equipment)) { gSaveContext.equips.equipment &= gEquipNegMasks[EQUIP_SHIELD]; } } @@ -1238,10 +1240,10 @@ void Interface_InitHorsebackArchery(GlobalContext* globalCtx) { } void func_800849EC(GlobalContext* globalCtx) { - gSaveContext.equipment |= gBitFlags[2] << gEquipShifts[EQUIP_SWORD]; - gSaveContext.equipment ^= 8 << gEquipShifts[EQUIP_SWORD]; + gSaveContext.inventory.equipment |= gBitFlags[2] << gEquipShifts[EQUIP_SWORD]; + gSaveContext.inventory.equipment ^= 8 << gEquipShifts[EQUIP_SWORD]; - if (gBitFlags[3] & gSaveContext.equipment) { + if (gBitFlags[3] & gSaveContext.inventory.equipment) { gSaveContext.equips.buttonItems[0] = ITEM_SWORD_KNIFE; } else { gSaveContext.equips.buttonItems[0] = ITEM_SWORD_BGS; @@ -1318,15 +1320,15 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } osSyncPrintf(VT_FGCOL(YELLOW)); - osSyncPrintf("item_get_setting=%d pt=%d z=%x\n", item, slot, gSaveContext.items[slot]); + osSyncPrintf("item_get_setting=%d pt=%d z=%x\n", item, slot, gSaveContext.inventory.items[slot]); osSyncPrintf(VT_RST); if ((item >= ITEM_MEDALLION_FOREST) && (item <= ITEM_MEDALLION_LIGHT)) { - gSaveContext.questItems |= gBitFlags[item - ITEM_MEDALLION_FOREST + QUEST_MEDALLION_FOREST]; + gSaveContext.inventory.questItems |= gBitFlags[item - ITEM_MEDALLION_FOREST + QUEST_MEDALLION_FOREST]; osSyncPrintf(VT_FGCOL(YELLOW)); // Translates to: "Seals = %x" - osSyncPrintf("封印 = %x\n", gSaveContext.questItems); + osSyncPrintf("封印 = %x\n", gSaveContext.inventory.questItems); osSyncPrintf(VT_RST); if (item == ITEM_MEDALLION_WATER) { @@ -1335,53 +1337,53 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } else if ((item >= ITEM_SONG_MINUET) && (item <= ITEM_SONG_STORMS)) { - gSaveContext.questItems |= gBitFlags[item - ITEM_SONG_MINUET + QUEST_SONG_MINUET]; + gSaveContext.inventory.questItems |= gBitFlags[item - ITEM_SONG_MINUET + QUEST_SONG_MINUET]; osSyncPrintf(VT_FGCOL(YELLOW)); // Translates to: "Musical scores = %x" - osSyncPrintf("楽譜 = %x\n", gSaveContext.questItems); + osSyncPrintf("楽譜 = %x\n", gSaveContext.inventory.questItems); // Translates to: "Musical scores = %x (%x) (%x)" - osSyncPrintf("楽譜 = %x (%x) (%x)\n", gSaveContext.questItems, + osSyncPrintf("楽譜 = %x (%x) (%x)\n", gSaveContext.inventory.questItems, gBitFlags[item - ITEM_SONG_MINUET + QUEST_SONG_MINUET], gBitFlags[item - ITEM_SONG_MINUET]); osSyncPrintf(VT_RST); return ITEM_NONE; } else if ((item >= ITEM_KOKIRI_EMERALD) && (item <= ITEM_ZORA_SAPPHIRE)) { - gSaveContext.questItems |= gBitFlags[item - ITEM_KOKIRI_EMERALD + QUEST_KOKIRI_EMERALD]; + gSaveContext.inventory.questItems |= gBitFlags[item - ITEM_KOKIRI_EMERALD + QUEST_KOKIRI_EMERALD]; osSyncPrintf(VT_FGCOL(YELLOW)); // Translates to: "Spiritual Stones = %x" - osSyncPrintf("精霊石 = %x\n", gSaveContext.questItems); + osSyncPrintf("精霊石 = %x\n", gSaveContext.inventory.questItems); osSyncPrintf(VT_RST); return ITEM_NONE; } else if ((item == ITEM_STONE_OF_AGONY) || (item == ITEM_GERUDO_CARD)) { - gSaveContext.questItems |= gBitFlags[item - ITEM_STONE_OF_AGONY + QUEST_STONE_OF_AGONY]; + gSaveContext.inventory.questItems |= gBitFlags[item - ITEM_STONE_OF_AGONY + QUEST_STONE_OF_AGONY]; osSyncPrintf(VT_FGCOL(YELLOW)); // Translates to: "Items = %x" - osSyncPrintf("アイテム = %x\n", gSaveContext.questItems); + osSyncPrintf("アイテム = %x\n", gSaveContext.inventory.questItems); osSyncPrintf(VT_RST); return ITEM_NONE; } else if (item == ITEM_SKULL_TOKEN) { - gSaveContext.questItems |= gBitFlags[item - ITEM_SKULL_TOKEN + QUEST_SKULL_TOKEN]; - gSaveContext.gsTokens++; + gSaveContext.inventory.questItems |= gBitFlags[item - ITEM_SKULL_TOKEN + QUEST_SKULL_TOKEN]; + gSaveContext.inventory.gsTokens++; osSyncPrintf(VT_FGCOL(YELLOW)); // Translates to: "N Coins = %x(%d)" - osSyncPrintf("Nコイン = %x(%d)\n", gSaveContext.questItems, gSaveContext.gsTokens); + osSyncPrintf("Nコイン = %x(%d)\n", gSaveContext.inventory.questItems, gSaveContext.inventory.gsTokens); osSyncPrintf(VT_RST); return ITEM_NONE; } else if ((item >= ITEM_SWORD_KOKIRI) && (item <= ITEM_SWORD_BGS)) { - gSaveContext.equipment |= gBitFlags[item - ITEM_SWORD_KOKIRI] << gEquipShifts[EQUIP_SWORD]; + gSaveContext.inventory.equipment |= gBitFlags[item - ITEM_SWORD_KOKIRI] << gEquipShifts[EQUIP_SWORD]; if (item == ITEM_SWORD_BGS) { gSaveContext.swordHealth = 8; if (ALL_EQUIP_VALUE(EQUIP_SWORD) == 0xF) { - gSaveContext.equipment ^= 8 << gEquipShifts[EQUIP_SWORD]; + gSaveContext.inventory.equipment ^= 8 << gEquipShifts[EQUIP_SWORD]; if (gSaveContext.equips.buttonItems[0] == ITEM_SWORD_KNIFE) { gSaveContext.equips.buttonItems[0] = ITEM_SWORD_BGS; Interface_LoadItemIcon1(globalCtx, 0); @@ -1396,23 +1398,23 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } else if ((item >= ITEM_SHIELD_DEKU) && (item <= ITEM_SHIELD_MIRROR)) { - gSaveContext.equipment |= (gBitFlags[item - ITEM_SHIELD_DEKU] << gEquipShifts[EQUIP_SHIELD]); + gSaveContext.inventory.equipment |= (gBitFlags[item - ITEM_SHIELD_DEKU] << gEquipShifts[EQUIP_SHIELD]); return ITEM_NONE; } else if ((item >= ITEM_TUNIC_KOKIRI) && (item <= ITEM_TUNIC_ZORA)) { - gSaveContext.equipment |= (gBitFlags[item - ITEM_TUNIC_KOKIRI] << gEquipShifts[EQUIP_TUNIC]); + gSaveContext.inventory.equipment |= (gBitFlags[item - ITEM_TUNIC_KOKIRI] << gEquipShifts[EQUIP_TUNIC]); return ITEM_NONE; } else if ((item >= ITEM_BOOTS_KOKIRI) && (item <= ITEM_BOOTS_HOVER)) { - gSaveContext.equipment |= (gBitFlags[item - ITEM_BOOTS_KOKIRI] << gEquipShifts[EQUIP_BOOTS]); + gSaveContext.inventory.equipment |= (gBitFlags[item - ITEM_BOOTS_KOKIRI] << gEquipShifts[EQUIP_BOOTS]); return ITEM_NONE; } else if ((item == ITEM_KEY_BOSS) || (item == ITEM_COMPASS) || (item == ITEM_DUNGEON_MAP)) { - gSaveContext.dungeonItems[gSaveContext.mapIndex] |= gBitFlags[item - ITEM_KEY_BOSS]; + gSaveContext.inventory.dungeonItems[gSaveContext.mapIndex] |= gBitFlags[item - ITEM_KEY_BOSS]; return ITEM_NONE; } else if (item == ITEM_KEY_SMALL) { - if (gSaveContext.dungeonKeys[gSaveContext.mapIndex] < 0) { - gSaveContext.dungeonKeys[gSaveContext.mapIndex] = 1; + if (gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] < 0) { + gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] = 1; return ITEM_NONE; } else { - gSaveContext.dungeonKeys[gSaveContext.mapIndex]++; + gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex]++; return ITEM_NONE; } } else if ((item == ITEM_QUIVER_30) || (item == ITEM_BOW)) { @@ -1485,28 +1487,28 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { Inventory_ChangeUpgrade(UPG_WALLET, 2); return ITEM_NONE; } else if (item == ITEM_STICK_UPGRADE_20) { - if (gSaveContext.items[slot] == ITEM_NONE) { + if (gSaveContext.inventory.items[slot] == ITEM_NONE) { INV_CONTENT(ITEM_STICK) = ITEM_STICK; } Inventory_ChangeUpgrade(UPG_STICKS, 2); AMMO(ITEM_STICK) = CAPACITY(UPG_STICKS, 2); return ITEM_NONE; } else if (item == ITEM_STICK_UPGRADE_30) { - if (gSaveContext.items[slot] == ITEM_NONE) { + if (gSaveContext.inventory.items[slot] == ITEM_NONE) { INV_CONTENT(ITEM_STICK) = ITEM_STICK; } Inventory_ChangeUpgrade(UPG_STICKS, 3); AMMO(ITEM_STICK) = CAPACITY(UPG_STICKS, 3); return ITEM_NONE; } else if (item == ITEM_NUT_UPGRADE_30) { - if (gSaveContext.items[slot] == ITEM_NONE) { + if (gSaveContext.inventory.items[slot] == ITEM_NONE) { INV_CONTENT(ITEM_NUT) = ITEM_NUT; } Inventory_ChangeUpgrade(UPG_NUTS, 2); AMMO(ITEM_NUT) = CAPACITY(UPG_NUTS, 2); return ITEM_NONE; } else if (item == ITEM_NUT_UPGRADE_40) { - if (gSaveContext.items[slot] == ITEM_NONE) { + if (gSaveContext.inventory.items[slot] == ITEM_NONE) { INV_CONTENT(ITEM_NUT) = ITEM_NUT; } Inventory_ChangeUpgrade(UPG_NUTS, 3); @@ -1522,7 +1524,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } return ITEM_NONE; } else if (item == ITEM_STICK) { - if (gSaveContext.items[slot] == ITEM_NONE) { + if (gSaveContext.inventory.items[slot] == ITEM_NONE) { Inventory_ChangeUpgrade(UPG_STICKS, 1); AMMO(ITEM_STICK) = 1; } else { @@ -1532,7 +1534,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } } } else if ((item == ITEM_STICKS_5) || (item == ITEM_STICKS_10)) { - if (gSaveContext.items[slot] == ITEM_NONE) { + if (gSaveContext.inventory.items[slot] == ITEM_NONE) { Inventory_ChangeUpgrade(UPG_STICKS, 1); AMMO(ITEM_STICK) = sAmmoRefillCounts[item - ITEM_STICKS_5]; } else { @@ -1543,7 +1545,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } item = ITEM_STICK; } else if (item == ITEM_NUT) { - if (gSaveContext.items[slot] == ITEM_NONE) { + if (gSaveContext.inventory.items[slot] == ITEM_NONE) { Inventory_ChangeUpgrade(UPG_NUTS, 1); AMMO(ITEM_NUT) = ITEM_NUT; } else { @@ -1553,7 +1555,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } } } else if ((item == ITEM_NUTS_5) || (item == ITEM_NUTS_10)) { - if (gSaveContext.items[slot] == ITEM_NONE) { + if (gSaveContext.inventory.items[slot] == ITEM_NONE) { Inventory_ChangeUpgrade(UPG_NUTS, 1); AMMO(ITEM_NUT) += sAmmoRefillCounts[item - ITEM_NUTS_5]; // Translates to: "Deku Nuts %d(%d)=%d BS_count=%d" @@ -1583,7 +1585,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } return ITEM_NONE; } else if (item == ITEM_BOMBCHU) { - if (gSaveContext.items[slot] == ITEM_NONE) { + if (gSaveContext.inventory.items[slot] == ITEM_NONE) { INV_CONTENT(ITEM_BOMBCHU) = ITEM_BOMBCHU; AMMO(ITEM_BOMBCHU) = 10; return ITEM_NONE; @@ -1595,7 +1597,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } } else if ((item == ITEM_BOMBCHUS_5) || (item == ITEM_BOMBCHUS_20)) { - if (gSaveContext.items[slot] == ITEM_NONE) { + if (gSaveContext.inventory.items[slot] == ITEM_NONE) { INV_CONTENT(ITEM_BOMBCHU) = ITEM_BOMBCHU; AMMO(ITEM_BOMBCHU) += sAmmoRefillCounts[item - ITEM_BOMBCHUS_5 + 8]; return ITEM_NONE; @@ -1660,7 +1662,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } return ITEM_NONE; } else if (item == ITEM_BEAN) { - if (gSaveContext.items[slot] == ITEM_NONE) { + if (gSaveContext.inventory.items[slot] == ITEM_NONE) { INV_CONTENT(item) = item; AMMO(ITEM_BEAN) = 1; BEANS_BOUGHT = 1; @@ -1670,7 +1672,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } return ITEM_NONE; } else if ((item == ITEM_HEART_PIECE_2) || (item == ITEM_HEART_PIECE)) { - gSaveContext.questItems += 1 << (QUEST_HEART_PIECE + 4); + gSaveContext.inventory.questItems += 1 << (QUEST_HEART_PIECE + 4); return ITEM_NONE; } else if (item == ITEM_HEART_CONTAINER) { gSaveContext.healthCapacity += 0x10; @@ -1712,8 +1714,8 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } else if (item == ITEM_BOTTLE) { for (i = 0; i < 4; i++) { - if (gSaveContext.items[SLOT(item) + i] == ITEM_NONE) { - gSaveContext.items[SLOT(item) + i] = item; + if (gSaveContext.inventory.items[SLOT(item) + i] == ITEM_NONE) { + gSaveContext.inventory.items[SLOT(item) + i] = item; return ITEM_NONE; } } @@ -1727,7 +1729,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { } for (i = 0; i < 4; i++) { - if (gSaveContext.items[bottleSlot + i] == ITEM_BOTTLE) { + if (gSaveContext.inventory.items[bottleSlot + i] == ITEM_BOTTLE) { // Translates to: "Item_Pt(1)=%d Item_Pt(2)=%d Item_Pt(3)=%d Empty Bottle=%d Content=%d" osSyncPrintf("Item_Pt(1)=%d Item_Pt(2)=%d Item_Pt(3)=%d 空瓶=%d 中味=%d\n", gSaveContext.equips.cButtonSlots[0], gSaveContext.equips.cButtonSlots[1], @@ -1747,14 +1749,14 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { gSaveContext.buttonStatus[3] = BTN_ENABLED; } - gSaveContext.items[bottleSlot + i] = item; + gSaveContext.inventory.items[bottleSlot + i] = item; return ITEM_NONE; } } } else { for (i = 0; i < 4; i++) { - if (gSaveContext.items[bottleSlot + i] == ITEM_NONE) { - gSaveContext.items[bottleSlot + i] = item; + if (gSaveContext.inventory.items[bottleSlot + i] == ITEM_NONE) { + gSaveContext.inventory.items[bottleSlot + i] = item; return ITEM_NONE; } } @@ -1784,7 +1786,7 @@ u8 Item_Give(GlobalContext* globalCtx, u8 item) { return ITEM_NONE; } - oldItem = gSaveContext.items[slot]; + oldItem = gSaveContext.inventory.items[slot]; osSyncPrintf("Item_Register(%d)=%d %d\n", slot, item, oldItem); INV_CONTENT(item) = item; @@ -1805,7 +1807,7 @@ u8 Item_CheckObtainability(u8 item) { } osSyncPrintf(VT_FGCOL(GREEN)); - osSyncPrintf("item_get_non_setting=%d pt=%d z=%x\n", item, slot, gSaveContext.items[slot]); + osSyncPrintf("item_get_non_setting=%d pt=%d z=%x\n", item, slot, gSaveContext.inventory.items[slot]); osSyncPrintf(VT_RST); if ((item >= ITEM_MEDALLION_FOREST) && (item <= ITEM_MEDALLION_LIGHT)) { @@ -1815,25 +1817,26 @@ u8 Item_CheckObtainability(u8 item) { } else if ((item >= ITEM_SWORD_KOKIRI) && (item <= ITEM_SWORD_BGS)) { if (item == ITEM_SWORD_BGS) { return ITEM_NONE; - } else if ((gBitFlags[item - ITEM_SWORD_KOKIRI] << gEquipShifts[EQUIP_SWORD]) & gSaveContext.equipment) { + } else if ((gBitFlags[item - ITEM_SWORD_KOKIRI] << gEquipShifts[EQUIP_SWORD]) & + gSaveContext.inventory.equipment) { return item; } else { return ITEM_NONE; } } else if ((item >= ITEM_SHIELD_DEKU) && (item <= ITEM_SHIELD_MIRROR)) { - if ((gBitFlags[item - ITEM_SHIELD_DEKU] << gEquipShifts[EQUIP_SHIELD]) & gSaveContext.equipment) { + if ((gBitFlags[item - ITEM_SHIELD_DEKU] << gEquipShifts[EQUIP_SHIELD]) & gSaveContext.inventory.equipment) { return item; } else { return ITEM_NONE; } } else if ((item >= ITEM_TUNIC_KOKIRI) && (item <= ITEM_TUNIC_ZORA)) { - if ((gBitFlags[item - ITEM_TUNIC_KOKIRI] << gEquipShifts[EQUIP_TUNIC]) & gSaveContext.equipment) { + if ((gBitFlags[item - ITEM_TUNIC_KOKIRI] << gEquipShifts[EQUIP_TUNIC]) & gSaveContext.inventory.equipment) { return item; } else { return ITEM_NONE; } } else if ((item >= ITEM_BOOTS_KOKIRI) && (item <= ITEM_BOOTS_HOVER)) { - if ((gBitFlags[item - ITEM_BOOTS_KOKIRI] << gEquipShifts[EQUIP_BOOTS]) & gSaveContext.equipment) { + if ((gBitFlags[item - ITEM_BOOTS_KOKIRI] << gEquipShifts[EQUIP_BOOTS]) & gSaveContext.inventory.equipment) { return item; } else { return ITEM_NONE; @@ -1904,13 +1907,13 @@ u8 Item_CheckObtainability(u8 item) { } for (i = 0; i < 4; i++) { - if (gSaveContext.items[bottleSlot + i] == ITEM_BOTTLE) { + if (gSaveContext.inventory.items[bottleSlot + i] == ITEM_BOTTLE) { return ITEM_NONE; } } } else { for (i = 0; i < 4; i++) { - if (gSaveContext.items[bottleSlot + i] == ITEM_NONE) { + if (gSaveContext.inventory.items[bottleSlot + i] == ITEM_NONE) { return ITEM_NONE; } } @@ -1919,7 +1922,7 @@ u8 Item_CheckObtainability(u8 item) { return ITEM_NONE; } - return gSaveContext.items[slot]; + return gSaveContext.inventory.items[slot]; } void Inventory_DeleteItem(u16 item, u16 invSlot) { @@ -1929,9 +1932,9 @@ void Inventory_DeleteItem(u16 item, u16 invSlot) { BEANS_BOUGHT = 0; } - gSaveContext.items[invSlot] = ITEM_NONE; + gSaveContext.inventory.items[invSlot] = ITEM_NONE; - osSyncPrintf("\nItem_Register(%d)\n", invSlot, gSaveContext.items[invSlot]); + osSyncPrintf("\nItem_Register(%d)\n", invSlot, gSaveContext.inventory.items[invSlot]); for (i = 1; i < 4; i++) { if (gSaveContext.equips.buttonItems[i] == item) { @@ -1944,9 +1947,9 @@ void Inventory_DeleteItem(u16 item, u16 invSlot) { s32 Inventory_ReplaceItem(GlobalContext* globalCtx, u16 oldItem, u16 newItem) { s16 i; - for (i = 0; i < ARRAY_COUNT(gSaveContext.items); i++) { - if (gSaveContext.items[i] == oldItem) { - gSaveContext.items[i] = newItem; + for (i = 0; i < ARRAY_COUNT(gSaveContext.inventory.items); i++) { + if (gSaveContext.inventory.items[i] == oldItem) { + gSaveContext.inventory.items[i] = newItem; // Translates to: "Item Purge (%d)" osSyncPrintf("アイテム消去(%d)\n", i); for (i = 1; i < 4; i++) { @@ -1964,7 +1967,7 @@ s32 Inventory_ReplaceItem(GlobalContext* globalCtx, u16 oldItem, u16 newItem) { } s32 Inventory_HasEmptyBottle(void) { - u8* items = gSaveContext.items; + u8* items = gSaveContext.inventory.items; if (items[SLOT_BOTTLE_1] == ITEM_BOTTLE) { return 1; @@ -1980,7 +1983,7 @@ s32 Inventory_HasEmptyBottle(void) { } s32 Inventory_HasSpecificBottle(u8 bottleItem) { - u8* items = gSaveContext.items; + u8* items = gSaveContext.inventory.items; if (items[SLOT_BOTTLE_1] == bottleItem) { return 1; @@ -1998,15 +2001,15 @@ s32 Inventory_HasSpecificBottle(u8 bottleItem) { void Inventory_UpdateBottleItem(GlobalContext* globalCtx, u8 item, u8 button) { osSyncPrintf("item_no=%x, c_no=%x, Pt=%x Item_Register=%x\n", item, button, gSaveContext.equips.cButtonSlots[button - 1], - gSaveContext.items[gSaveContext.equips.cButtonSlots[button - 1]]); + gSaveContext.inventory.items[gSaveContext.equips.cButtonSlots[button - 1]]); // Special case to only empty half of a Lon Lon Milk Bottle - if ((gSaveContext.items[gSaveContext.equips.cButtonSlots[button - 1]] == ITEM_MILK_BOTTLE) && + if ((gSaveContext.inventory.items[gSaveContext.equips.cButtonSlots[button - 1]] == ITEM_MILK_BOTTLE) && (item == ITEM_BOTTLE)) { item = ITEM_MILK_HALF; } - gSaveContext.items[gSaveContext.equips.cButtonSlots[button - 1]] = item; + gSaveContext.inventory.items[gSaveContext.equips.cButtonSlots[button - 1]] = item; gSaveContext.equips.buttonItems[button] = item; Interface_LoadItemIcon1(globalCtx, button); @@ -2023,7 +2026,7 @@ s32 Inventory_ConsumeFairy(GlobalContext* globalCtx) { bottleSlot = SLOT(ITEM_FAIRY); for (i = 0; i < 4; i++) { - if (gSaveContext.items[bottleSlot + i] == ITEM_FAIRY) { + if (gSaveContext.inventory.items[bottleSlot + i] == ITEM_FAIRY) { for (j = 1; j < 4; j++) { if (gSaveContext.equips.buttonItems[j] == ITEM_FAIRY) { gSaveContext.equips.buttonItems[j] = ITEM_BOTTLE; @@ -2035,7 +2038,7 @@ s32 Inventory_ConsumeFairy(GlobalContext* globalCtx) { } // Translates to: "Fairy Usage=%d" osSyncPrintf("妖精使用=%d\n", bottleSlot); - gSaveContext.items[bottleSlot + i] = ITEM_BOTTLE; + gSaveContext.inventory.items[bottleSlot + i] = ITEM_BOTTLE; return 1; } } @@ -3124,7 +3127,7 @@ void Interface_Draw(GlobalContext* globalCtx) { case SCENE_GANON_SONOGO: case SCENE_GANONTIKA_SONOGO: case SCENE_TAKARAYA: - if (gSaveContext.dungeonKeys[gSaveContext.mapIndex] >= 0) { + if (gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] >= 0) { // Small Key Icon gDPPipeSync(oGfxCtx->overlay.p++); gDPSetPrimColor(oGfxCtx->overlay.p++, 0, 0, 200, 230, 255, interfaceCtx->magicAlpha); @@ -3139,7 +3142,7 @@ void Interface_Draw(GlobalContext* globalCtx) { PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); interfaceCtx->counterDigits[2] = 0; - interfaceCtx->counterDigits[3] = gSaveContext.dungeonKeys[gSaveContext.mapIndex]; + interfaceCtx->counterDigits[3] = gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex]; while (interfaceCtx->counterDigits[3] >= 10) { interfaceCtx->counterDigits[2]++; diff --git a/src/code/z_play.c b/src/code/z_play.c index 29cad25382..3700054563 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -234,7 +234,7 @@ void Gameplay_Init(GlobalContext* globalCtx) { globalCtx->cameraPtrs[0]->uid = 0; globalCtx->activeCamera = 0; func_8005AC48(&globalCtx->mainCamera, 0xFF); - func_800A9D28(globalCtx, &globalCtx->sub_1F74); + Sram_Init(globalCtx, &globalCtx->sramCtx); func_80112098(globalCtx); func_80110F68(globalCtx); func_80110450(globalCtx); @@ -317,7 +317,7 @@ void Gameplay_Init(GlobalContext* globalCtx) { if (gSaveContext.nextDayTime != 0xFFFF) { if (gSaveContext.nextDayTime == 0x8001) { - gSaveContext.unk_14++; + gSaveContext.numDays++; gSaveContext.unk_18++; gSaveContext.dogIsLost = true; if (Inventory_ReplaceItem(globalCtx, ITEM_WEIRD_EGG, ITEM_CHICKEN) || @@ -1724,12 +1724,12 @@ s16 func_800C09D8(GlobalContext* globalCtx, s16 camId, s16 arg2) { } void Gameplay_SaveSceneFlags(GlobalContext* globalCtx) { - SaveSceneFlags* sceneFlags = &gSaveContext.sceneFlags[globalCtx->sceneNum]; + SavedSceneFlags* savedSceneFlags = &gSaveContext.sceneFlags[globalCtx->sceneNum]; - sceneFlags->chest = globalCtx->actorCtx.flags.chest; - sceneFlags->swch = globalCtx->actorCtx.flags.swch; - sceneFlags->clear = globalCtx->actorCtx.flags.clear; - sceneFlags->collect = globalCtx->actorCtx.flags.collect; + savedSceneFlags->chest = globalCtx->actorCtx.flags.chest; + savedSceneFlags->swch = globalCtx->actorCtx.flags.swch; + savedSceneFlags->clear = globalCtx->actorCtx.flags.clear; + savedSceneFlags->collect = globalCtx->actorCtx.flags.collect; } void Gameplay_SetRespawnData(GlobalContext* globalCtx, s32 respawnMode, s16 entranceIndex, s32 roomIndex, diff --git a/src/code/z_sram.c b/src/code/z_sram.c index 06517245f3..1145bd9b36 100644 --- a/src/code/z_sram.c +++ b/src/code/z_sram.c @@ -1,25 +1,905 @@ #include "global.h" +#include "vt.h" -#pragma GLOBAL_ASM("asm/non_matchings/code/z_sram/func_800A81A0.s") +// these are the main substructs of save context. +// we are going to hold off on splitting save context until later on, +// so these temporary structs will live here for now. -#pragma GLOBAL_ASM("asm/non_matchings/code/z_sram/func_800A82C8.s") +typedef struct { + /* 0x00 */ char newf[6]; // string "ZELDAZ" + /* 0x06 */ s16 deaths; + /* 0x08 */ char playerName[8]; + /* 0x10 */ s16 n64ddFlag; + /* 0x12 */ s16 healthCapacity; // "max_life" + /* 0x14 */ s16 health; // "now_life" + /* 0x16 */ s8 magicLevel; + /* 0x17 */ s8 magic; + /* 0x18 */ s16 rupees; + /* 0x1A */ u16 swordHealth; + /* 0x1C */ u16 naviTimer; + /* 0x1E */ u8 magicAcquired; + /* 0x1F */ u8 unk_1F; + /* 0x20 */ u8 doubleMagic; + /* 0x21 */ u8 doubleDefense; + /* 0x22 */ u8 bgsFlag; + /* 0x23 */ u8 ocarinaGameReward; + /* 0x24 */ ItemEquips childEquips; + /* 0x2E */ ItemEquips adultEquips; + /* 0x38 */ u32 unk_38; // this may be incorrect, currently used for alignement + /* 0x3C */ char unk_3C[0x0E]; + /* 0x4A */ s16 savedSceneNum; +} SavePlayerData; // size = 0x4C -#pragma GLOBAL_ASM("asm/non_matchings/code/z_sram/func_800A8484.s") +typedef struct { + /* 0x0000 */ SavePlayerData playerData; // "S_Private" substruct name + /* 0x004C */ ItemEquips equips; + /* 0x0058 */ Inventory inventory; + /* 0x00B8 */ SavedSceneFlags sceneFlags[124]; + /* 0x0E48 */ FaroresWindData fw; + /* 0x0E70 */ char unk_E70[0x10]; + /* 0x0E80 */ s32 gsFlags[6]; + /* 0x0E98 */ char unk_E98[0x10]; + /* 0x0EA8 */ s32 horseRaceRecord; + /* 0x0EAC */ char unk_EAC[0x0C]; + /* 0x0EB8 */ u16 eventChkInf[14]; // "event_chk_inf" + /* 0x0ED4 */ u16 itemGetInf[4]; // "item_get_inf" + /* 0x0EDC */ u16 infTable[30]; // "inf_table" + /* 0x0F18 */ char unk_F18[0x04]; + /* 0x0F1C */ u32 worldMapAreaData; // "area_arrival" + /* 0x0F20 */ char unk_F20[0x4]; + /* 0x0F24 */ u8 scarecrowCustomSongSet; + /* 0x0F25 */ u8 scarecrowCustomSong[0x360]; + /* 0x1285 */ char unk_1285[0x24]; + /* 0x12A9 */ u8 scarecrowSpawnSongSet; + /* 0x12AA */ u8 scarecrowSpawnSong[0x80]; + /* 0x132A */ char unk_132A[0x02]; + /* 0x132C */ HorseData horseData; + /* 0x1336 */ u16 checksum; // "check_sum" +} SaveInfo; // size = 0x1338 -#pragma GLOBAL_ASM("asm/non_matchings/code/z_sram/func_800A88D4.s") +typedef struct { + /* 0x00 */ s32 entranceIndex; + /* 0x04 */ s32 linkAge; // 0: Adult; 1: Child + /* 0x08 */ s32 cutsceneIndex; + /* 0x0C */ u16 dayTime; // "zelda_time" + /* 0x10 */ s32 nightFlag; + /* 0x14 */ s32 numDays; + /* 0x18 */ s32 unk_18; // increments with numDays, gets reset by goron for bgs and one other use + /* 0x1C */ SaveInfo info; // "information" +} Save; // size = 0x1354 -#pragma GLOBAL_ASM("asm/non_matchings/code/z_sram/func_800A8A20.s") +#define SAVE_PLAYER_DATA (*((SavePlayerData*)&gSaveContext.newf)) +#define SAVE_INFO (*((SaveInfo*)&gSaveContext.newf)) -#pragma GLOBAL_ASM("asm/non_matchings/code/z_sram/func_800A9258.s") +#define SLOT_SIZE (sizeof(SaveContext) + 0x28) +#define CHECKSUM_SIZE (sizeof(Save) / 2) -#pragma GLOBAL_ASM("asm/non_matchings/code/z_sram/func_800A96D0.s") +#define DEATHS OFFSETOF(SaveContext, deaths) +#define NAME OFFSETOF(SaveContext, playerName) +#define N64DD OFFSETOF(SaveContext, n64ddFlag) +#define HEALTH_CAP OFFSETOF(SaveContext, healthCapacity) +#define QUEST OFFSETOF(SaveContext, inventory.questItems) +#define DEFENSE OFFSETOF(SaveContext, inventory.defenseHearts) +#define HEALTH OFFSETOF(SaveContext, health) -#pragma GLOBAL_ASM("asm/non_matchings/code/z_sram/func_800A97F0.s") +#define SLOT_OFFSET(idx) (SLOT_SIZE * idx + 0x20) -#pragma GLOBAL_ASM("asm/non_matchings/code/z_sram/func_800A9A9C.s") +u16 gSramSlotOffsets[][3] = { + { + SLOT_OFFSET(0), + SLOT_OFFSET(1), + SLOT_OFFSET(2), + }, + { + SLOT_OFFSET(3), + SLOT_OFFSET(4), + SLOT_OFFSET(5), + }, +}; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_sram/func_800A9AD0.s") +char sZeldaMagic[] = { '\0', '\0', '\0', '\x98', '\x09', '\x10', '\x21', 'Z', 'E', 'L', 'D', 'A' }; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_sram/func_800A9CD4.s") +SavePlayerData sNewSavePlayerData = { + { '\0', '\0', '\0', '\0', '\0', '\0' }, // newf + 0, // deaths + { 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E }, // playerName + 0, // n64ddFlag + 0x30, // healthCapacity + 0x30, // heartStatus + 0, // magicLevel + 0x30, // magic + 0, // rupees + 0, // swordHealth + 0, // naviTimer + 0, // magicAcquired + 0, // unk_1F + 0, // doubleMagic + 0, // doubleDefense + 0, // bgsFlag + 0, // ocarinaGameReward + { + { ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE }, // buttonItems + { SLOT_NONE, SLOT_NONE, SLOT_NONE }, // cButtonSlots + 0, // equipment + }, // childEquips + { + { ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE }, // buttonItems + { SLOT_NONE, SLOT_NONE, SLOT_NONE }, // cButtonSlots + 0, // equipment + }, // adultEquips + 0, // unk_38 + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // unk_3C + 0x34, // savedSceneNum +}; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_sram/func_800A9D28.s") +ItemEquips sNewSaveEquips = { + { ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE }, // buttonItems + { SLOT_NONE, SLOT_NONE, SLOT_NONE }, // cButtonSlots + 0x1100, // equipment +}; + +Inventory sNewSaveInventory = { + { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, // items + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // ammo + 0x1100, // equipment + 0, // upgrades + 0, // questItems + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // dungeonItems + { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + }, // dungeonKeys + 0, // defenseHearts + 0, // gsTokens +}; + +u16 sNewSaveChecksum = 0; + +/** + * Initialize new save. + * This save has an empty inventory with 3 hearts and single magic. + */ +void Sram_InitNewSave(void) { + SaveContext* temp = &gSaveContext; + + bzero(&SAVE_INFO, sizeof(SaveInfo)); + gSaveContext.numDays = 0; + gSaveContext.unk_18 = 0; + + SAVE_PLAYER_DATA = sNewSavePlayerData; + gSaveContext.equips = sNewSaveEquips; + gSaveContext.inventory = sNewSaveInventory; + + temp->checksum = sNewSaveChecksum; + gSaveContext.horseData.scene = SCENE_SPOT00; + gSaveContext.horseData.pos.x = -1840; + gSaveContext.horseData.pos.y = 72; + gSaveContext.horseData.pos.z = 5497; + gSaveContext.horseData.angle = -0x6AD9; + gSaveContext.magicLevel = 0; + gSaveContext.infTable[29] = 1; + gSaveContext.sceneFlags[5].swch = 0x40000000; +} + +SavePlayerData sDebugSavePlayerData = { + { 'Z', 'E', 'L', 'D', 'A', 'Z' }, // newf + 0, // deaths + { 0x15, 0x12, 0x17, 0x14, 0x3E, 0x3E, 0x3E, 0x3E }, // playerName ( "LINK" ) + 0, // n64ddFlag + 0xE0, // healthCapacity + 0xE0, // health + 0, // magicLevel + 0x30, // magic + 150, // rupees + 8, // swordHealth + 0, // naviTimer + 1, // magicAcquired + 0, // unk_1F + 0, // doubleMagic + 0, // doubleDefense + 0, // bgsFlag + 0, // ocarinaGameReward + { + { ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE }, // buttonItems + { SLOT_NONE, SLOT_NONE, SLOT_NONE }, // cButtonSlots + 0, // equipment + }, // childEquips + { + { ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE }, // buttonItems + { SLOT_NONE, SLOT_NONE, SLOT_NONE }, // cButtonSlots + 0, // equipment + }, // adultEquips + 0, // unk_38 + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // unk_3C + 0x51, // savedSceneNum +}; + +ItemEquips sDebugSaveEquips = { + { ITEM_SWORD_MASTER, ITEM_BOW, ITEM_BOMB, ITEM_OCARINA_FAIRY }, // buttonItems + { SLOT_BOW, SLOT_BOMB, SLOT_OCARINA }, // cButtonSlots + 0x1122, // equipment +}; + +Inventory sDebugSaveInventory = { + { ITEM_STICK, ITEM_NUT, ITEM_BOMB, ITEM_BOW, ITEM_ARROW_FIRE, ITEM_DINS_FIRE, + ITEM_SLINGSHOT, ITEM_OCARINA_FAIRY, ITEM_BOMBCHU, ITEM_HOOKSHOT, ITEM_ARROW_ICE, ITEM_FARORES_WIND, + ITEM_BOOMERANG, ITEM_LENS, ITEM_BEAN, ITEM_HAMMER, ITEM_ARROW_LIGHT, ITEM_NAYRUS_LOVE, + ITEM_BOTTLE, ITEM_POTION_RED, ITEM_POTION_GREEN, ITEM_POTION_BLUE, ITEM_POCKET_EGG, ITEM_WEIRD_EGG }, // items + { 50, 50, 10, 30, 1, 1, 30, 1, 50, 1, 1, 1, 1, 1, 1, 1 }, // ammo + 0x7777, // equipment + 0x125249, // upgrades + 0x1E3FFFF, // questItems + { 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // dungeonItems + { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 }, // dungeonKeys + 0, // defenseHearts + 0, // gsTokens +}; + +u16 sDebugSaveChecksum = 0; + +/** + * Initialize debug save. This is also used on the Title Screen + * This save has a mostly full inventory with 10 hearts and single magic. + * + * Some noteable flags that are set: + * Showed Mido sword/shield, met Deku Tree, Deku Tree mouth opened, + * used blue warp in Gohmas room, Zelda fled castle, light arrow cutscene watched, + * and set water level in Water Temple to lowest level. + */ +void Sram_InitDebugSave(void) { + SaveContext* temp = &gSaveContext; + + bzero(&SAVE_INFO, sizeof(SaveInfo)); + gSaveContext.numDays = 0; + gSaveContext.unk_18 = 0; + + SAVE_PLAYER_DATA = sDebugSavePlayerData; + gSaveContext.equips = sDebugSaveEquips; + gSaveContext.inventory = sDebugSaveInventory; + + temp->checksum = sDebugSaveChecksum; + gSaveContext.horseData.scene = SCENE_SPOT00; + gSaveContext.horseData.pos.x = -1840; + gSaveContext.horseData.pos.y = 72; + gSaveContext.horseData.pos.z = 5497; + gSaveContext.horseData.angle = -0x6AD9; + gSaveContext.infTable[0] |= 0x5009; + gSaveContext.eventChkInf[0] |= 0x123F; + gSaveContext.eventChkInf[8] |= 1; + gSaveContext.eventChkInf[12] |= 0x10; + + if (LINK_AGE_IN_YEARS == YEARS_CHILD) { + gSaveContext.equips.buttonItems[0] = ITEM_SWORD_KOKIRI; + Inventory_ChangeEquipment(EQUIP_SWORD, 1); + if (gSaveContext.fileNum == 0xFF) { + gSaveContext.equips.buttonItems[1] = ITEM_SLINGSHOT; + gSaveContext.equips.cButtonSlots[0] = SLOT_SLINGSHOT; + Inventory_ChangeEquipment(EQUIP_SHIELD, 1); + } + } + + gSaveContext.entranceIndex = 0xCD; + gSaveContext.magicLevel = 0; + gSaveContext.sceneFlags[5].swch = 0x40000000; +} + +/** + * Copy save currently on the buffer to Save Context and complete various tasks to open the save. + * This includes: + * - Set proper entrance depending on where the game was saved + * - If health is less than 3 hearts, give 3 hearts + * - If either scarecrow song is set, copy them from save context to the proper location + * - Handle a case where the player saved and quit after zelda cutscene but didnt get the song + * - Give and equip master sword if player is adult and doesnt have kokiri sword (bug?) + * - Revert any trade items that spoil + */ +#ifdef NON_MATCHING +// regalloc differences at the end +void Sram_OpenSave(SramContext* sramCtx) { + static s16 dungeonEntrances[] = { + 0x0000, 0x0004, 0x0028, 0x0169, 0x0165, 0x0010, 0x0082, 0x0037, + 0x0098, 0x0088, 0x041B, 0x0008, 0x0486, 0x0467, 0x0179, 0x056C, + }; + u16 i; + u16 j; + u8* ptr; + + osSyncPrintf("個人File作成\n"); // Create personal file + i = gSramSlotOffsets[0][gSaveContext.fileNum]; + osSyncPrintf("ぽいんと=%x(%d)\n", i, gSaveContext.fileNum); // Point= + + MemCopy(&gSaveContext, sramCtx->readBuff + i, sizeof(Save)); + + osSyncPrintf(VT_FGCOL(YELLOW)); + osSyncPrintf("SCENE_DATA_ID = %d SceneNo = %d\n", gSaveContext.savedSceneNum, + ((void)0, gSaveContext.entranceIndex)); + + switch (gSaveContext.savedSceneNum) { + case SCENE_YDAN: + case SCENE_DDAN: + case SCENE_BDAN: + case SCENE_BMORI1: + case SCENE_HIDAN: + case SCENE_MIZUSIN: + case SCENE_JYASINZOU: + case SCENE_HAKADAN: + case SCENE_HAKADANCH: + case SCENE_ICE_DOUKUTO: + case SCENE_GANON: + case SCENE_MEN: + case SCENE_GERUDOWAY: + case SCENE_GANONTIKA: + gSaveContext.entranceIndex = dungeonEntrances[gSaveContext.savedSceneNum]; + break; + case SCENE_YDAN_BOSS: + gSaveContext.entranceIndex = 0; + break; + case SCENE_DDAN_BOSS: + gSaveContext.entranceIndex = 4; + break; + case SCENE_BDAN_BOSS: + gSaveContext.entranceIndex = 0x28; + break; + case SCENE_MORIBOSSROOM: + gSaveContext.entranceIndex = 0x169; + break; + case SCENE_FIRE_BS: + gSaveContext.entranceIndex = 0x165; + break; + case SCENE_MIZUSIN_BS: + gSaveContext.entranceIndex = 0x10; + break; + case SCENE_JYASINBOSS: + gSaveContext.entranceIndex = 0x82; + break; + case SCENE_HAKADAN_BS: + gSaveContext.entranceIndex = 0x37; + break; + case SCENE_GANON_SONOGO: + case SCENE_GANONTIKA_SONOGO: + case SCENE_GANON_BOSS: + case SCENE_GANON_FINAL: + case SCENE_GANON_DEMO: + gSaveContext.entranceIndex = 0x41B; + break; + + default: + if (gSaveContext.savedSceneNum != SCENE_LINK_HOME) { + gSaveContext.entranceIndex = (LINK_AGE_IN_YEARS == YEARS_CHILD) ? 0xBB : 0x5F4; + } else { + gSaveContext.entranceIndex = 0xBB; + } + break; + } + + osSyncPrintf("scene_no = %d\n", gSaveContext.entranceIndex); + osSyncPrintf(VT_RST); + + if (gSaveContext.health < 0x30) { + gSaveContext.health = 0x30; + } + + if (gSaveContext.scarecrowCustomSongSet) { + osSyncPrintf(VT_FGCOL(BLUE)); + osSyncPrintf("\n====================================================================\n"); + + MemCopy(gScarecrowCustomSongPtr, &gSaveContext.scarecrowCustomSong, 0x360); + + ptr = gScarecrowCustomSongPtr; + for (i = 0; i < 0x360; i++, ptr++) { + osSyncPrintf("%d, ", *ptr); + } + + osSyncPrintf("\n====================================================================\n"); + osSyncPrintf(VT_RST); + } + + if (gSaveContext.scarecrowSpawnSongSet) { + osSyncPrintf(VT_FGCOL(GREEN)); + osSyncPrintf("\n====================================================================\n"); + + MemCopy(gScarecrowSpawnSongPtr, &gSaveContext.scarecrowSpawnSong, 0x80); + + ptr = gScarecrowSpawnSongPtr; + for (i = 0; i < 0x80; i++, ptr++) { + osSyncPrintf("%d, ", *ptr); + } + + osSyncPrintf("\n====================================================================\n"); + osSyncPrintf(VT_RST); + } + + // if zelda cutscene has been watched but lullaby was not obtained, restore cutscene and take away letter + if ((gSaveContext.eventChkInf[4] & 1) && !CHECK_QUEST_ITEM(QUEST_SONG_LULLABY)) { + gSaveContext.eventChkInf[4] &= ~1; + INV_CONTENT(ITEM_LETTER_ZELDA) = ITEM_CHICKEN; + + for (i = 1; i < 4; i++) { + if (gSaveContext.equips.buttonItems[i] == ITEM_LETTER_ZELDA) { + gSaveContext.equips.buttonItems[i] = ITEM_CHICKEN; + } + } + } + + // check for owning kokiri sword.. to restore master sword? bug or debug feature? + if (LINK_AGE_IN_YEARS == YEARS_ADULT && !CHECK_OWNED_EQUIP(EQUIP_SWORD, 1)) { + gSaveContext.inventory.equipment |= gBitFlags[1] << gEquipShifts[EQUIP_SWORD]; + gSaveContext.equips.buttonItems[0] = ITEM_SWORD_MASTER; + gSaveContext.equips.equipment &= ~0xF; + gSaveContext.equips.equipment |= 2; + } + + for (i = 0; i < ARRAY_COUNT(gSpoilingItems); i++) { + if (INV_CONTENT(ITEM_TRADE_ADULT) == gSpoilingItems[i]) { + INV_CONTENT(gSpoilingItemReverts[i]) = gSpoilingItemReverts[i]; + + for (j = 1; j < 4; j++) { + if (gSaveContext.equips.buttonItems[j] == gSpoilingItems[i]) { + gSaveContext.equips.buttonItems[j] = gSpoilingItemReverts[i]; + } + } + } + } + + gSaveContext.magicLevel = 0; +} +#else +s16 dungeonEntrances[] = { + 0x0000, 0x0004, 0x0028, 0x0169, 0x0165, 0x0010, 0x0082, 0x0037, + 0x0098, 0x0088, 0x041B, 0x0008, 0x0486, 0x0467, 0x0179, 0x056C, +}; +#pragma GLOBAL_ASM("asm/non_matchings/code/z_sram/Sram_OpenSave.s") +#endif + +/** + * Write the contents of the Save Context to a main and backup slot in SRAM. + * Note: The whole Save Context is written even though only the `save` substruct is read back later + */ +void Sram_WriteSave(s32 unused) { + u16 offset; + u16 checksum; + u16 j; + u16* ptr; + + gSaveContext.checksum = 0; + + ptr = (u16*)&gSaveContext; + checksum = 0; + j = 0; + + for (offset = 0; offset < CHECKSUM_SIZE; offset++) { + if (++j == 0x20U) { + j = 0; + } + checksum += *ptr++; + } + + gSaveContext.checksum = checksum; + + ptr = (u16*)&gSaveContext; + checksum = 0; + + for (offset = 0; offset < CHECKSUM_SIZE; offset++) { + if (++j == 0x20U) { + j = 0; + } + checksum += *ptr++; + } + + offset = gSramSlotOffsets[0][gSaveContext.fileNum]; + SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE, OS_WRITE); + + ptr = (u16*)&gSaveContext; + checksum = 0; + + for (offset = 0; offset < CHECKSUM_SIZE; offset++) { + if (++j == 0x20U) { + j = 0; + } + checksum += *ptr++; + } + + offset = gSramSlotOffsets[1][gSaveContext.fileNum]; + SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE, OS_WRITE); +} + +/** + * For all 3 slots, verify that the checksum is correct. If corrupted, attempt to load a backup save. + * If backup is also corrupted, default to a new save (or debug save for slot 0 on debug rom). + * + * After verifying all 3 saves, pass relevant data to File Select to be displayed. + */ +#ifdef NON_MATCHING +// There's a problem with how "offset" is loaded +void Sram_VerifyAndLoadAllSaves(FileChooseContext* fileChooseCtx, SramContext* sramCtx) { + u16 slotNum; // 0x72 + u16 oldChecksum; + u16 newChecksum; + u16 dayTime; // 0x66 + // u16* offPtr; + s32 offset; + u16 i; + u16 j; + u16* ptr; + + osSyncPrintf("SRAM START─LOAD\n"); + bzero(sramCtx->readBuff, SRAM_SIZE); + SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE, OS_READ); + + dayTime = gSaveContext.dayTime; + + for (slotNum = 0; slotNum < 3; slotNum++) { + offset = gSramSlotOffsets[0][slotNum]; + osSyncPrintf("ぽいんと=%x(%d) SAVE_MAX=%d\n", offset, gSaveContext.fileNum, sizeof(Save)); + MemCopy(&gSaveContext, sramCtx->readBuff + offset, sizeof(Save)); + + oldChecksum = gSaveContext.checksum; + gSaveContext.checksum = 0; + osSyncPrintf("\n============= S(%d) =============\n", slotNum); + + // j = 0; + newChecksum = 0; + ptr = (u16*)&gSaveContext; + for (i = 0; i < CHECKSUM_SIZE; i++) { + j += 2; + newChecksum += *ptr++; + } + + // SAVE checksum calculation + osSyncPrintf("\nSAVEチェックサム計算 j=%x mmm=%x ", newChecksum, oldChecksum); + + if (oldChecksum != newChecksum) { + // checksum didnt match, try backup save + osSyncPrintf("ERROR!!! = %x(%d)\n", offset, slotNum); + offset = gSramSlotOffsets[1][slotNum]; + MemCopy(&gSaveContext, sramCtx->readBuff + offset, sizeof(Save)); + + oldChecksum = gSaveContext.checksum; + gSaveContext.checksum = 0; + osSyncPrintf("================= BACK─UP ========================\n"); + + newChecksum = 0; + ptr = (u16*)&gSaveContext; + for (i = 0; i < CHECKSUM_SIZE; i++) { + j += 2; + newChecksum += *ptr++; + } + // (B) SAVE checksum calculation + osSyncPrintf("\n(B)SAVEチェックサム計算 j=%x mmm=%x ", newChecksum, oldChecksum); + + if (oldChecksum != newChecksum) { + // backup save didnt work, make new save + // offPtr = &gSramSlotOffsets[1][slotNum]; + osSyncPrintf("ERROR!!! = %x(%d+3)\n", offset, slotNum); + bzero(&gSaveContext.entranceIndex, sizeof(gSaveContext.entranceIndex)); + bzero(&gSaveContext.linkAge, sizeof(gSaveContext.linkAge)); + bzero(&gSaveContext.cutsceneIndex, sizeof(gSaveContext.cutsceneIndex)); + bzero(&gSaveContext.dayTime, sizeof(gSaveContext.dayTime)); + bzero(&gSaveContext.nightFlag, sizeof(gSaveContext.nightFlag)); + bzero(&gSaveContext.numDays, sizeof(gSaveContext.numDays)); + bzero(&gSaveContext.unk_18, sizeof(gSaveContext.unk_18)); + + if (slotNum == 0) { + Sram_InitDebugSave(); + gSaveContext.newf[0] = 'Z'; + gSaveContext.newf[1] = 'E'; + gSaveContext.newf[2] = 'L'; + gSaveContext.newf[3] = 'D'; + gSaveContext.newf[4] = 'A'; + gSaveContext.newf[5] = 'Z'; + osSyncPrintf("newf=%x,%x,%x,%x,%x,%x\n", gSaveContext.newf[0], gSaveContext.newf[1], + gSaveContext.newf[2], gSaveContext.newf[3], gSaveContext.newf[4], + gSaveContext.newf[5]); + } else { + Sram_InitNewSave(); + } + + osSyncPrintf("\n--------------------------------------------------------------\n"); + + j = 0; + newChecksum = 0; + ptr = (u16*)&gSaveContext; + for (i = 0; i < CHECKSUM_SIZE; i++) { + osSyncPrintf("%x ", *ptr); + if (++j == 0x20) { + osSyncPrintf("\n"); + j = 0; + } + newChecksum += *ptr++; + } + + gSaveContext.checksum = newChecksum; + osSyncPrintf("\nCheck_Sum=%x(%x)\n", gSaveContext.checksum, newChecksum); + + offset = gSramSlotOffsets[1][slotNum]; + SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE, OS_WRITE); + + osSyncPrintf("????#%x,%x,%x,%x,%x,%x\n", gSaveContext.newf[0], gSaveContext.newf[1], + gSaveContext.newf[2], gSaveContext.newf[3], gSaveContext.newf[4], gSaveContext.newf[5]); + osSyncPrintf("\nぽいんと=%x(%d+3) check_sum=%x(%x)\n", offset, slotNum, gSaveContext.checksum, + newChecksum); + } + + offset = gSramSlotOffsets[0][slotNum]; + SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE, OS_WRITE); + + osSyncPrintf("ぽいんと=%x(%d) check_sum=%x(%x)\n", offset, slotNum, gSaveContext.checksum, newChecksum); + } else { + // SAVE data OK! ! ! ! + osSyncPrintf("\nSAVEデータ OK!!!!\n"); + } + } + + bzero(sramCtx->readBuff, SRAM_SIZE); + SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE, OS_READ); + gSaveContext.dayTime = dayTime; + + osSyncPrintf("SAVECT=%x, NAME=%x, LIFE=%x, ITEM=%x, 64DD=%x, HEART=%x\n", DEATHS, NAME, HEALTH_CAP, QUEST, N64DD, + DEFENSE); + + MemCopy(&fileChooseCtx->deaths[0], sramCtx->readBuff + SLOT_OFFSET(0) + DEATHS, sizeof(fileChooseCtx->deaths[0])); + MemCopy(&fileChooseCtx->deaths[1], sramCtx->readBuff + SLOT_OFFSET(1) + DEATHS, sizeof(fileChooseCtx->deaths[0])); + MemCopy(&fileChooseCtx->deaths[2], sramCtx->readBuff + SLOT_OFFSET(2) + DEATHS, sizeof(fileChooseCtx->deaths[0])); + + MemCopy(&fileChooseCtx->fileNames[0], sramCtx->readBuff + SLOT_OFFSET(0) + NAME, + sizeof(fileChooseCtx->fileNames[0])); + MemCopy(&fileChooseCtx->fileNames[1], sramCtx->readBuff + SLOT_OFFSET(1) + NAME, + sizeof(fileChooseCtx->fileNames[0])); + MemCopy(&fileChooseCtx->fileNames[2], sramCtx->readBuff + SLOT_OFFSET(2) + NAME, + sizeof(fileChooseCtx->fileNames[0])); + + MemCopy(&fileChooseCtx->healthCapacities[0], sramCtx->readBuff + SLOT_OFFSET(0) + HEALTH_CAP, + sizeof(fileChooseCtx->healthCapacities[0])); + MemCopy(&fileChooseCtx->healthCapacities[1], sramCtx->readBuff + SLOT_OFFSET(1) + HEALTH_CAP, + sizeof(fileChooseCtx->healthCapacities[0])); + MemCopy(&fileChooseCtx->healthCapacities[2], sramCtx->readBuff + SLOT_OFFSET(2) + HEALTH_CAP, + sizeof(fileChooseCtx->healthCapacities[0])); + + MemCopy(&fileChooseCtx->questItems[0], sramCtx->readBuff + SLOT_OFFSET(0) + QUEST, + sizeof(fileChooseCtx->questItems[0])); + MemCopy(&fileChooseCtx->questItems[1], sramCtx->readBuff + SLOT_OFFSET(1) + QUEST, + sizeof(fileChooseCtx->questItems[0])); + MemCopy(&fileChooseCtx->questItems[2], sramCtx->readBuff + SLOT_OFFSET(2) + QUEST, + sizeof(fileChooseCtx->questItems[0])); + + MemCopy(&fileChooseCtx->n64ddFlags[0], sramCtx->readBuff + SLOT_OFFSET(0) + N64DD, + sizeof(fileChooseCtx->n64ddFlags[0])); + MemCopy(&fileChooseCtx->n64ddFlags[1], sramCtx->readBuff + SLOT_OFFSET(1) + N64DD, + sizeof(fileChooseCtx->n64ddFlags[0])); + MemCopy(&fileChooseCtx->n64ddFlags[2], sramCtx->readBuff + SLOT_OFFSET(2) + N64DD, + sizeof(fileChooseCtx->n64ddFlags[0])); + + MemCopy(&fileChooseCtx->heartStatus[0], sramCtx->readBuff + SLOT_OFFSET(0) + DEFENSE, + sizeof(fileChooseCtx->heartStatus[0])); + MemCopy(&fileChooseCtx->heartStatus[1], sramCtx->readBuff + SLOT_OFFSET(1) + DEFENSE, + sizeof(fileChooseCtx->heartStatus[0])); + MemCopy(&fileChooseCtx->heartStatus[2], sramCtx->readBuff + SLOT_OFFSET(2) + DEFENSE, + sizeof(fileChooseCtx->heartStatus[0])); + + MemCopy(&fileChooseCtx->nowLife[0], sramCtx->readBuff + SLOT_OFFSET(0) + HEALTH, sizeof(fileChooseCtx->nowLife[0])); + MemCopy(&fileChooseCtx->nowLife[1], sramCtx->readBuff + SLOT_OFFSET(1) + HEALTH, sizeof(fileChooseCtx->nowLife[0])); + MemCopy(&fileChooseCtx->nowLife[2], sramCtx->readBuff + SLOT_OFFSET(2) + HEALTH, sizeof(fileChooseCtx->nowLife[0])); + + osSyncPrintf("f_64dd=%d, %d, %d\n", fileChooseCtx->n64ddFlags[0], fileChooseCtx->n64ddFlags[1], + fileChooseCtx->n64ddFlags[2]); + osSyncPrintf("heart_status=%d, %d, %d\n", fileChooseCtx->heartStatus[0], fileChooseCtx->heartStatus[1], + fileChooseCtx->heartStatus[2]); + osSyncPrintf("now_life=%d, %d, %d\n", fileChooseCtx->nowLife[0], fileChooseCtx->nowLife[1], + fileChooseCtx->nowLife[2]); +} +#else +#pragma GLOBAL_ASM("asm/non_matchings/code/z_sram/Sram_VerifyAndLoadAllSaves.s") +#endif + +void Sram_InitSave(FileChooseContext* fileChooseCtx, SramContext* sramCtx) { + u16 offset; + u16 j; + u16* ptr; + u16 checksum; + + if (fileChooseCtx->btnIdx != 0) { + Sram_InitNewSave(); + } else { + Sram_InitDebugSave(); + } + + gSaveContext.entranceIndex = 0xBB; + gSaveContext.linkAge = 1; + gSaveContext.dayTime = 0x6AAB; + gSaveContext.cutsceneIndex = 0xFFF1; + + if (fileChooseCtx->btnIdx == 0) { + gSaveContext.cutsceneIndex = 0; + } + + for (offset = 0; offset < 8; offset++) { + gSaveContext.playerName[offset] = fileChooseCtx->fileNames[fileChooseCtx->btnIdx][offset]; + } + + gSaveContext.newf[0] = 'Z'; + gSaveContext.newf[1] = 'E'; + gSaveContext.newf[2] = 'L'; + gSaveContext.newf[3] = 'D'; + gSaveContext.newf[4] = 'A'; + gSaveContext.newf[5] = 'Z'; + + gSaveContext.n64ddFlag = fileChooseCtx->n64ddFlag; + osSyncPrintf("64DDフラグ=%d\n", fileChooseCtx->n64ddFlag); + osSyncPrintf("newf=%x,%x,%x,%x,%x,%x\n", gSaveContext.newf[0], gSaveContext.newf[1], gSaveContext.newf[2], + gSaveContext.newf[3], gSaveContext.newf[4], gSaveContext.newf[5]); + osSyncPrintf("\n$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n"); + + ptr = (u16*)&gSaveContext; + j = 0; + checksum = 0; + + for (offset = 0; offset < CHECKSUM_SIZE; offset++) { + osSyncPrintf("%x ", *ptr); + checksum += *ptr++; + if (++j == 0x20u) { + osSyncPrintf("\n"); + j = 0; + } + } + + gSaveContext.checksum = checksum; + osSyncPrintf("\nチェックサム=%x\n", gSaveContext.checksum); // Checksum = %x + + offset = gSramSlotOffsets[0][gSaveContext.fileNum]; + osSyncPrintf("I=%x no=%d\n", offset, gSaveContext.fileNum); + MemCopy(sramCtx->readBuff + offset, &gSaveContext, sizeof(Save)); + + offset = gSramSlotOffsets[1][gSaveContext.fileNum]; + osSyncPrintf("I=%x no=%d\n", offset, gSaveContext.fileNum + 3); + MemCopy(sramCtx->readBuff + offset, &gSaveContext, sizeof(Save)); + + SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE, OS_WRITE); + + // SAVE end + osSyncPrintf("SAVE終了\n"); + osSyncPrintf("z_common_data.file_no = %d\n", gSaveContext.fileNum); + osSyncPrintf("SAVECT=%x, NAME=%x, LIFE=%x, ITEM=%x, SAVE_64DD=%x\n", DEATHS, NAME, HEALTH_CAP, QUEST, N64DD); + + j = gSramSlotOffsets[0][gSaveContext.fileNum]; + + MemCopy(&fileChooseCtx->deaths[gSaveContext.fileNum], sramCtx->readBuff + j + DEATHS, + sizeof(fileChooseCtx->deaths[0])); + MemCopy(&fileChooseCtx->fileNames[gSaveContext.fileNum], sramCtx->readBuff + j + NAME, + sizeof(fileChooseCtx->fileNames[0])); + MemCopy(&fileChooseCtx->healthCapacities[gSaveContext.fileNum], sramCtx->readBuff + j + HEALTH_CAP, + sizeof(fileChooseCtx->healthCapacities[0])); + MemCopy(&fileChooseCtx->questItems[gSaveContext.fileNum], sramCtx->readBuff + j + QUEST, + sizeof(fileChooseCtx->questItems[0])); + MemCopy(&fileChooseCtx->n64ddFlags[gSaveContext.fileNum], sramCtx->readBuff + j + N64DD, + sizeof(fileChooseCtx->n64ddFlags[0])); + MemCopy(&fileChooseCtx->heartStatus[gSaveContext.fileNum], sramCtx->readBuff + j + DEFENSE, + sizeof(fileChooseCtx->heartStatus[0])); + MemCopy(&fileChooseCtx->nowLife[gSaveContext.fileNum], sramCtx->readBuff + j + HEALTH, + sizeof(fileChooseCtx->nowLife[0])); + + osSyncPrintf("f_64dd[%d]=%d\n", gSaveContext.fileNum, fileChooseCtx->n64ddFlags[gSaveContext.fileNum]); + osSyncPrintf("heart_status[%d]=%d\n", gSaveContext.fileNum, fileChooseCtx->heartStatus[gSaveContext.fileNum]); + osSyncPrintf("now_life[%d]=%d\n", gSaveContext.fileNum, fileChooseCtx->nowLife[gSaveContext.fileNum]); +} + +void Sram_EraseSave(FileChooseContext* fileChooseCtx, SramContext* sramCtx) { + s32 offset; + + Sram_InitNewSave(); + + offset = gSramSlotOffsets[0][fileChooseCtx->selectedFileIdx]; + MemCopy(sramCtx->readBuff + offset, &gSaveContext, sizeof(Save)); + SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE, OS_WRITE); + + MemCopy(&fileChooseCtx->n64ddFlags[fileChooseCtx->selectedFileIdx], sramCtx->readBuff + offset + N64DD, + sizeof(fileChooseCtx->n64ddFlags[0])); + + offset = gSramSlotOffsets[1][fileChooseCtx->selectedFileIdx]; + MemCopy(sramCtx->readBuff + offset, &gSaveContext, sizeof(Save)); + SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE, OS_WRITE); + + osSyncPrintf("CLEAR終了\n"); +} + +void Sram_CopySave(FileChooseContext* fileChooseCtx, SramContext* sramCtx) { + s32 offset; + + osSyncPrintf("READ=%d(%x) COPY=%d(%x)\n", fileChooseCtx->selectedFileIdx, + gSramSlotOffsets[0][fileChooseCtx->selectedFileIdx], fileChooseCtx->copyDestFileIdx, + gSramSlotOffsets[0][fileChooseCtx->copyDestFileIdx]); + + offset = gSramSlotOffsets[0][fileChooseCtx->selectedFileIdx]; + MemCopy(&gSaveContext, sramCtx->readBuff + offset, sizeof(Save)); + + offset = gSramSlotOffsets[0][fileChooseCtx->copyDestFileIdx]; + MemCopy(sramCtx->readBuff + offset, &gSaveContext, sizeof(Save)); + + offset = gSramSlotOffsets[1][fileChooseCtx->copyDestFileIdx]; + MemCopy(sramCtx->readBuff + offset, &gSaveContext, sizeof(Save)); + + SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE, OS_WRITE); + + offset = gSramSlotOffsets[0][fileChooseCtx->copyDestFileIdx]; + + MemCopy(&fileChooseCtx->deaths[fileChooseCtx->copyDestFileIdx], sramCtx->readBuff + offset + DEATHS, + sizeof(fileChooseCtx->deaths[0])); + MemCopy(&fileChooseCtx->fileNames[fileChooseCtx->copyDestFileIdx], sramCtx->readBuff + offset + NAME, + sizeof(fileChooseCtx->fileNames[0])); + MemCopy(&fileChooseCtx->healthCapacities[fileChooseCtx->copyDestFileIdx], sramCtx->readBuff + offset + HEALTH_CAP, + sizeof(fileChooseCtx->healthCapacities[0])); + MemCopy(&fileChooseCtx->questItems[fileChooseCtx->copyDestFileIdx], sramCtx->readBuff + offset + QUEST, + sizeof(fileChooseCtx->questItems[0])); + MemCopy(&fileChooseCtx->n64ddFlags[fileChooseCtx->copyDestFileIdx], sramCtx->readBuff + offset + N64DD, + sizeof(fileChooseCtx->n64ddFlags[0])); + MemCopy(&fileChooseCtx->heartStatus[fileChooseCtx->copyDestFileIdx], sramCtx->readBuff + offset + DEFENSE, + sizeof(fileChooseCtx->heartStatus[0])); + MemCopy(&fileChooseCtx->nowLife[fileChooseCtx->copyDestFileIdx], (sramCtx->readBuff + offset) + HEALTH, + sizeof(fileChooseCtx->nowLife[0])); + + osSyncPrintf("f_64dd[%d]=%d\n", gSaveContext.fileNum, fileChooseCtx->n64ddFlags[gSaveContext.fileNum]); + osSyncPrintf("heart_status[%d]=%d\n", gSaveContext.fileNum, fileChooseCtx->heartStatus[gSaveContext.fileNum]); + osSyncPrintf("COPY終了\n"); // Copy end +} + +void Sram_Write16Bytes(SramContext* sramCtx) { + SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, 0x10, OS_WRITE); +} + +void Sram_InitSram(GameState* gameState, SramContext* sramCtx) { + u16 i; + + osSyncPrintf("sram_initialize( Game *game, Sram *sram )\n"); + SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE, OS_READ); + + for (i = 0; i < ARRAY_COUNTU(sZeldaMagic) - 3; i++) { + if (sZeldaMagic[i + 3] != sramCtx->readBuff[i + 3]) { + // SRAM destruction! ! ! ! ! ! + osSyncPrintf("SRAM破壊!!!!!!\n"); + gSaveContext.language = sramCtx->readBuff[2]; + MemCopy(sramCtx->readBuff, sZeldaMagic, sizeof(sZeldaMagic)); + sramCtx->readBuff[2] = gSaveContext.language; + Sram_Write16Bytes(sramCtx); + } + } + + gSaveContext.audioSetting = sramCtx->readBuff[0] & 3; + gSaveContext.zTargetSetting = sramCtx->readBuff[1] & 1; + gSaveContext.language = sramCtx->readBuff[2]; + + if (gSaveContext.language > 2) { + gSaveContext.language = 0; + sramCtx->readBuff[2] = gSaveContext.language; + Sram_Write16Bytes(sramCtx); + } + + if (CHECK_BTN_ANY(gameState->input[2].cur.button, BTN_DRIGHT)) { + bzero(sramCtx->readBuff, SRAM_SIZE); + for (i = 0; i < CHECKSUM_SIZE; i++) { + sramCtx->readBuff[i] = i; + } + SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE, OS_WRITE); + // SRAM destruction! ! ! ! ! ! + osSyncPrintf("SRAM破壊!!!!!!\n"); + } + + // GOOD! GOOD! Size =% d +% d =% d + osSyncPrintf("GOOD!GOOD! サイズ=%d + %d = %d\n", sizeof(SaveInfo), 4, sizeof(SaveInfo) + 4); + osSyncPrintf(VT_FGCOL(BLUE)); + osSyncPrintf("Na_SetSoundOutputMode = %d\n", gSaveContext.audioSetting); + osSyncPrintf("Na_SetSoundOutputMode = %d\n", gSaveContext.audioSetting); + osSyncPrintf("Na_SetSoundOutputMode = %d\n", gSaveContext.audioSetting); + osSyncPrintf(VT_RST); + func_800F6700(gSaveContext.audioSetting); +} + +void Sram_Alloc(GameState* gameState, SramContext* sramCtx) { + sramCtx->readBuff = GameState_Alloc(gameState, SRAM_SIZE, "../z_sram.c", 1294); + + if (!(sramCtx->readBuff != NULL)) { + __assert("sram->read_buff != NULL", "../z_sram.c", 1295); + } +} + +void Sram_Init(GlobalContext* globalCtx, SramContext* sramCtx) { +} diff --git a/src/code/z_ss_sram.c b/src/code/z_ss_sram.c new file mode 100644 index 0000000000..6f929678c8 --- /dev/null +++ b/src/code/z_ss_sram.c @@ -0,0 +1,53 @@ +#include "ultra64.h" +#include "global.h" + +typedef struct { + /* 0x00 */ OSPiHandle piHandle; + /* 0x74 */ OSIoMesg ioMesg; + /* 0x8C */ OSMesgQueue mesgQ; +} SsSramContext; // size = 0xA4 + +SsSramContext sSsSramContext = { 0 }; + +void SsSram_Init(u32 addr, u8 handleType, u8 handleDomain, u8 handleLatency, u8 handlePageSize, u8 handleRelDuration, + u8 handlePulse, u32 handleSpeed) { + u32 intDisabled; + OSPiHandle* handle = &sSsSramContext.piHandle; + + if ((u32)OS_PHYSICAL_TO_K1(addr) != (*handle).baseAddress) { + sSsSramContext.piHandle.type = handleType; + (*handle).baseAddress = OS_PHYSICAL_TO_K1(addr); + sSsSramContext.piHandle.latency = handleLatency; + sSsSramContext.piHandle.pulse = handlePulse; + sSsSramContext.piHandle.pageSize = handlePageSize; + sSsSramContext.piHandle.relDuration = handleRelDuration; + sSsSramContext.piHandle.domain = handleDomain; + sSsSramContext.piHandle.speed = handleSpeed; + bzero(&sSsSramContext.piHandle.transferInfo, sizeof(__OSTranxInfo)); + intDisabled = __osDisableInt(); + sSsSramContext.piHandle.next = __osPiTable; + __osPiTable = &sSsSramContext.piHandle; + __osRestoreInt(intDisabled); + sSsSramContext.ioMesg.hdr.pri = 0; + sSsSramContext.ioMesg.hdr.retQueue = &sSsSramContext.mesgQ; + sSsSramContext.ioMesg.devAddr = addr; + } +} + +void SsSram_Dma(void* dramAddr, size_t size, s32 direction) { + OSMesg mesg; + + osCreateMesgQueue(&sSsSramContext.mesgQ, &mesg, 1); + sSsSramContext.ioMesg.dramAddr = dramAddr; + sSsSramContext.ioMesg.size = size; + osWritebackDCache(dramAddr, size); + osEPiStartDma(&sSsSramContext.piHandle, &sSsSramContext.ioMesg, direction); + osRecvMesg(&sSsSramContext.mesgQ, &mesg, OS_MESG_BLOCK); + osInvalDCache(dramAddr, size); +} + +void SsSram_ReadWrite(u32 addr, void* dramAddr, size_t size, s32 direction) { + osSyncPrintf("ssSRAMReadWrite:%08x %08x %08x %d\n", addr, dramAddr, size, direction); + SsSram_Init(addr, DEVICE_TYPE_SRAM, 1, 5, 0xD, 2, 0xC, 0); + SsSram_Dma(dramAddr, size, direction); +} diff --git a/src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.c b/src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.c index a24114dd06..ec4d23211e 100644 --- a/src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.c +++ b/src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.c @@ -104,7 +104,7 @@ s32 func_80994750(DoorGerudo* this, GlobalContext* globalCtx) { void func_8099485C(DoorGerudo* this, GlobalContext* globalCtx) { if (this->unk_164 != 0) { this->actionFunc = func_8099496C; - gSaveContext.dungeonKeys[gSaveContext.mapIndex] -= 1; + gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] -= 1; Flags_SetSwitch(globalCtx, this->dyna.actor.params & 0x3F); Audio_PlayActorSound2(&this->dyna.actor, NA_SE_EV_CHAIN_KEY_UNLOCK); } else { @@ -113,7 +113,7 @@ void func_8099485C(DoorGerudo* this, GlobalContext* globalCtx) { if (direction != 0) { Player* player = PLAYER; - if (gSaveContext.dungeonKeys[gSaveContext.mapIndex] <= 0) { + if (gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] <= 0) { player->naviMessageId = -0x203; } else if (!Flags_GetCollectible(globalCtx, (this->dyna.actor.params >> 8) & 0x1F)) { player->naviMessageId = -0x225; diff --git a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c index d4af67f4a3..d8b52903aa 100644 --- a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c +++ b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c @@ -426,7 +426,7 @@ s32 func_80A3AEBC(GlobalContext* globalCtx, EnGirlA* this) { } s32 func_80A3AF30(GlobalContext* globalCtx, EnGirlA* this) { - if ((gBitFlags[2] & gSaveContext.equipment) && !(gBitFlags[3] & gSaveContext.equipment)) { + if ((gBitFlags[2] & gSaveContext.inventory.equipment) && !(gBitFlags[3] & gSaveContext.inventory.equipment)) { return 2; } if (gSaveContext.rupees < this->unk_1C8) { @@ -439,7 +439,7 @@ s32 func_80A3AF30(GlobalContext* globalCtx, EnGirlA* this) { } s32 func_80A3AFC4(GlobalContext* globalCtx, EnGirlA* this) { - if (gBitFlags[5] & gSaveContext.equipment) { + if (gBitFlags[5] & gSaveContext.inventory.equipment) { return 2; } if (gSaveContext.rupees < this->unk_1C8) { @@ -452,7 +452,7 @@ s32 func_80A3AFC4(GlobalContext* globalCtx, EnGirlA* this) { } s32 func_80A3B040(GlobalContext* globalCtx, EnGirlA* this) { - if (gBitFlags[4] & gSaveContext.equipment) { + if (gBitFlags[4] & gSaveContext.inventory.equipment) { return 2; } if (gSaveContext.rupees < this->unk_1C8) { @@ -468,7 +468,7 @@ s32 func_80A3B0BC(GlobalContext* globalCtx, EnGirlA* this) { if (LINK_AGE_IN_YEARS == YEARS_CHILD) { return 2; } - if (gBitFlags[9] & gSaveContext.equipment) { + if (gBitFlags[9] & gSaveContext.inventory.equipment) { return 2; } if (gSaveContext.rupees < this->unk_1C8) { @@ -484,7 +484,7 @@ s32 func_80A3B160(GlobalContext* globalCtx, EnGirlA* this) { if (LINK_AGE_IN_YEARS == YEARS_CHILD) { return 2; } - if (gBitFlags[10] & gSaveContext.equipment) { + if (gBitFlags[10] & gSaveContext.inventory.equipment) { return 2; } if (gSaveContext.rupees < this->unk_1C8) { diff --git a/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c b/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c index aa9ce8a1ac..4e8d84a607 100644 --- a/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c +++ b/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c @@ -234,7 +234,7 @@ void EnIshi_DropCollectible(EnIshi* this, GlobalContext* globalCtx) { if (dropParams >= 0xD) { dropParams = 0; } - + Item_DropCollectibleRandom(globalCtx, NULL, &this->actor.posRot.pos, dropParams << 4); } } diff --git a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c index 718959413f..2a72df2b17 100644 --- a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c +++ b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c @@ -169,13 +169,13 @@ void func_80A8F660(EnKakasi* this, GlobalContext* globalCtx) { this->unk_196 = 6; if (LINK_IS_CHILD) { this->unk_194 = false; - if (gSaveContext.unk_F3C[4] != 0) { + if (gSaveContext.scarecrowCustomSongSet) { this->actor.textId = 0x407A; this->unk_196 = 5; } } else { this->unk_194 = true; - if (gSaveContext.unk_F3C[4] != 0) { + if (gSaveContext.scarecrowCustomSongSet) { this->actor.textId = 0x4079; this->unk_196 = 5; } @@ -335,7 +335,7 @@ void EnKakasi_Draw(Actor* thisx, GlobalContext* globalCtx) { if (BREG(3) != 0) { osSyncPrintf("\n\n"); // flag! - osSyncPrintf(VT_FGCOL(YELLOW) "☆☆☆☆☆ フラグ! ☆☆☆☆☆ %d\n" VT_RST, gSaveContext.unk_F3C[4]); + osSyncPrintf(VT_FGCOL(YELLOW) "☆☆☆☆☆ フラグ! ☆☆☆☆☆ %d\n" VT_RST, gSaveContext.scarecrowCustomSongSet); } func_80093D18(globalCtx->state.gfxCtx); SkelAnime_DrawSV(globalCtx, this->skelanime.skeleton, this->skelanime.limbDrawTbl, this->skelanime.dListCount, NULL, diff --git a/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.c b/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.c index b3cb061f53..be25f5f20a 100644 --- a/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.c +++ b/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.c @@ -205,7 +205,8 @@ void EnKakasi2_Update(Actor* thisx, GlobalContext* globalCtx) { } if (BREG(0) != 0) { if (BREG(5) != 0) { - osSyncPrintf(VT_FGCOL(YELLOW) "☆☆☆☆☆ this->actor.player_distance ☆☆☆☆☆ %f\n" VT_RST, this->actor.xzDistFromLink); + osSyncPrintf(VT_FGCOL(YELLOW) "☆☆☆☆☆ this->actor.player_distance ☆☆☆☆☆ %f\n" VT_RST, + this->actor.xzDistFromLink); osSyncPrintf(VT_FGCOL(YELLOW) "☆☆☆☆☆ this->hosei.x ☆☆☆☆☆ %f\n" VT_RST, this->maxSpawnDistance.x); osSyncPrintf("\n\n"); } diff --git a/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.c b/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.c index b0e0acea6b..2ad430e028 100644 --- a/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.c +++ b/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.c @@ -179,14 +179,14 @@ void func_80A91284(EnKakasi3* this, GlobalContext* globalCtx) { if (LINK_IS_CHILD) { this->unk_194 = false; - if (gSaveContext.unk_12C5 != 0) { + if (gSaveContext.scarecrowSpawnSongSet) { this->actor.textId = 0x40A0; this->dialogState = 5; this->unk_1A8 = 1; } } else { this->unk_194 = true; - if (gSaveContext.unk_12C5 != 0) { + if (gSaveContext.scarecrowSpawnSongSet) { if (this->unk_195) { this->actor.textId = 0x40A2; } else { @@ -238,7 +238,7 @@ void func_80A91348(EnKakasi3* this, GlobalContext* globalCtx) { if (this->actor.xzDistFromLink < 80.0f) { player->stateFlags2 |= 0x800000; } - } else if (gSaveContext.unk_12C5 != 0 && !this->unk_195) { + } else if (gSaveContext.scarecrowSpawnSongSet && !this->unk_195) { if (player->stateFlags2 & 0x1000000) { this->camId = func_800800F8(globalCtx, 0x8D4, -0x63, &this->actor, 0); @@ -341,7 +341,7 @@ void func_80A918E4(EnKakasi3* this, GlobalContext* globalCtx) { } if ((globalCtx->msgCtx.unk_E3EE == 4 || (globalCtx->msgCtx.unk_E3EE >= 5 && globalCtx->msgCtx.unk_E3EE < 11)) && globalCtx->msgCtx.msgMode == 0) { - + func_8010B680(globalCtx, 0x40A6, NULL); this->dialogState = 5; func_800803F0(globalCtx, this->camId); @@ -405,7 +405,7 @@ void EnKakasi3_Update(Actor* thisx, GlobalContext* globalCtx) { if (BREG(2) != 0) { osSyncPrintf("\n\n"); // flag! - osSyncPrintf(VT_FGCOL(YELLOW) "☆☆☆☆☆ フラグ! ☆☆☆☆☆ %d\n" VT_RST, gSaveContext.unk_12C5); + osSyncPrintf(VT_FGCOL(YELLOW) "☆☆☆☆☆ フラグ! ☆☆☆☆☆ %d\n" VT_RST, gSaveContext.scarecrowSpawnSongSet); } this->unk_198++; diff --git a/src/overlays/actors/ovl_En_Ma3/z_en_ma3.c b/src/overlays/actors/ovl_En_Ma3/z_en_ma3.c index 2b9998f894..2423df6535 100644 --- a/src/overlays/actors/ovl_En_Ma3/z_en_ma3.c +++ b/src/overlays/actors/ovl_En_Ma3/z_en_ma3.c @@ -83,13 +83,13 @@ u16 func_80AA2AA0(GlobalContext* globalCtx, Actor* thisx) { if (gSaveContext.timer1Value >= 0xD3) { return 0x208E; } - if ((gSaveContext.unk_EC4 == 0) || (gSaveContext.unk_EC4 >= 0xB4)) { - gSaveContext.unk_EC4 = 0xB4; + if ((gSaveContext.horseRaceRecord == 0) || (gSaveContext.horseRaceRecord >= 0xB4)) { + gSaveContext.horseRaceRecord = 0xB4; gSaveContext.timer1Value = *timer1ValuePtr; } if (!(gSaveContext.eventChkInf[1] & 0x4000) && (gSaveContext.timer1Value < 0x32)) { return 0x208F; - } else if (gSaveContext.timer1Value < gSaveContext.unk_EC4) { + } else if (gSaveContext.timer1Value < gSaveContext.horseRaceRecord) { return 0x2012; } else { return 0x2004; @@ -126,7 +126,7 @@ s16 func_80AA2BD4(GlobalContext* globalCtx, Actor* thisx) { if (globalCtx->msgCtx.choiceIndex == 0) { if (gSaveContext.eventChkInf[1] & 0x4000) { func_8010B720(globalCtx, 0x2091); - } else if (gSaveContext.unk_EC4 == 0) { + } else if (gSaveContext.horseRaceRecord == 0) { func_8010B720(globalCtx, 0x2092); } else { func_8010B720(globalCtx, 0x2090); @@ -144,8 +144,8 @@ s16 func_80AA2BD4(GlobalContext* globalCtx, Actor* thisx) { gSaveContext.eventChkInf[1] |= 0x4000; case 0x2004: case 0x2012: - if (gSaveContext.unk_EC4 > gSaveContext.timer1Value) { - gSaveContext.unk_EC4 = gSaveContext.timer1Value; + if (gSaveContext.horseRaceRecord > gSaveContext.timer1Value) { + gSaveContext.horseRaceRecord = gSaveContext.timer1Value; } case 0x208E: gSaveContext.eventInf[0] &= ~0x400; diff --git a/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c b/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c index e6afa9516c..bcecb5aff1 100644 --- a/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c +++ b/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c @@ -117,7 +117,7 @@ void func_80ABEF2C(EnOkarinaTag* this, GlobalContext* globalCtx) { if ((this->switchFlag >= 0) && (Flags_GetSwitch(globalCtx, this->switchFlag))) { this->actor.flags &= ~1; } else { - if ((this->unk_152 != 6) || (gSaveContext.unk_12C5 != 0)) { + if ((this->unk_152 != 6) || (gSaveContext.scarecrowSpawnSongSet)) { if (player->stateFlags2 & 0x1000000) { // "North! ! ! ! !" osSyncPrintf(VT_FGCOL(RED) "☆☆☆☆☆ 北!!!!! ☆☆☆☆☆ %f\n" VT_RST, this->actor.xzDistFromLink); @@ -189,7 +189,7 @@ void func_80ABF28C(EnOkarinaTag* this, GlobalContext* globalCtx) { Player* player = PLAYER; this->unk_15A++; - if ((this->unk_152 != 6) || (gSaveContext.unk_12C5 != 0)) { + if ((this->unk_152 != 6) || (gSaveContext.scarecrowSpawnSongSet)) { if ((this->switchFlag >= 0) && Flags_GetSwitch(globalCtx, this->switchFlag)) { this->actor.flags &= ~1; } else if (((this->unk_150 != 4) || !(gSaveContext.eventChkInf[4] & 0x800)) && diff --git a/src/overlays/actors/ovl_En_Reeba/z_en_reeba.c b/src/overlays/actors/ovl_En_Reeba/z_en_reeba.c index 9792a5c0a3..9d34370265 100644 --- a/src/overlays/actors/ovl_En_Reeba/z_en_reeba.c +++ b/src/overlays/actors/ovl_En_Reeba/z_en_reeba.c @@ -229,12 +229,11 @@ void func_80AE5270(EnReeba* this, GlobalContext* globalCtx) { this->actionfunc = func_80AE5688; return; } - + if (this->unk_274 == 0) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_RIVA_MOVE); this->unk_274 = 10; } - } void func_80AE538C(EnReeba* this, GlobalContext* globalCtx) { diff --git a/src/overlays/actors/ovl_En_Rl/z_en_rl.c b/src/overlays/actors/ovl_En_Rl/z_en_rl.c index 78ea321bbb..f72590aabb 100644 --- a/src/overlays/actors/ovl_En_Rl/z_en_rl.c +++ b/src/overlays/actors/ovl_En_Rl/z_en_rl.c @@ -396,4 +396,4 @@ const ActorInit En_Rl_InitVars = { (ActorFunc)EnRl_Destroy, (ActorFunc)EnRl_Update, (ActorFunc)EnRl_Draw, -}; \ No newline at end of file +}; diff --git a/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.c b/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.c index e07be92745..552133f83b 100644 --- a/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.c +++ b/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.c @@ -57,7 +57,7 @@ void EnTakaraMan_Init(Actor* thisx, GlobalContext* globalCtx) { osSyncPrintf(VT_FGCOL(PURPLE) "☆☆☆☆☆ ばぅん! ☆☆☆☆☆ %x\n" VT_RST, globalCtx->actorCtx.flags.chest); // "Bun! %x" (needs a better translation) globalCtx->actorCtx.flags.chest = 0; - gSaveContext.dungeonKeys[gSaveContext.mapIndex] = -1; + gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex] = -1; SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06004FE0, &D_06000498, this->limbDrawTbl, this->transitionDrawTbl, 10); thisx->posRot2.pos = thisx->posRot.pos; diff --git a/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.c b/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.c index daa7d7477b..ca2271722c 100644 --- a/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.c +++ b/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.c @@ -268,10 +268,8 @@ void ObjSyokudai_Draw(Actor* thisx, GlobalContext* globalCtx) { gDPSetEnvColor(oGfxCtx->polyXlu.p++, 255, 0, 0, 0); Matrix_Translate(0.0f, 52.0f, 0.0f, MTXMODE_APPLY); - Matrix_RotateY( - (s16)(func_8005A9F4(ACTIVE_CAM) - this->actor.shape.rot.y + 0x8000) * - (M_PI / 0x8000), - MTXMODE_APPLY); + Matrix_RotateY((s16)(func_8005A9F4(ACTIVE_CAM) - this->actor.shape.rot.y + 0x8000) * (M_PI / 0x8000), + MTXMODE_APPLY); Matrix_Scale(flameScale, flameScale, flameScale, MTXMODE_APPLY); gSPMatrix(oGfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_obj_syokudai.c", 745), diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c index 03931dd03b..c68642e50c 100644 --- a/src/overlays/actors/ovl_player_actor/z_player.c +++ b/src/overlays/actors/ovl_player_actor/z_player.c @@ -3056,7 +3056,7 @@ void func_80836BEC(Player* this, GlobalContext* globalCtx) { actorToTarget = &PLAYER->actor; } - holdTarget = (gSaveContext.zTargetingSetting != 0) || (this->actor.type != ACTORTYPE_PLAYER); + holdTarget = (gSaveContext.zTargetSetting != 0) || (this->actor.type != ACTORTYPE_PLAYER); this->stateFlags1 |= 0x8000; if ((actorToTarget != NULL) && !(actorToTarget->flags & 0x8000000)) { @@ -4042,9 +4042,9 @@ s32 func_80839034(GlobalContext* globalCtx, Player* this, CollisionPoly* arg2, u } if (linearVel > R_RUN_SPEED_LIMIT / 100.0f) { - gSaveContext.unk_13BC = R_RUN_SPEED_LIMIT / 100.0f; + gSaveContext.entranceSpeed = R_RUN_SPEED_LIMIT / 100.0f; } else { - gSaveContext.unk_13BC = linearVel; + gSaveContext.entranceSpeed = linearVel; } if (D_808535F4 != 0) { @@ -4273,8 +4273,8 @@ s32 func_80839800(Player* this, GlobalContext* globalCtx) { func_8003C890(&globalCtx->colCtx, &sp58, &sp4C); if (func_80839034(globalCtx, this, sp58, 50)) { - gSaveContext.unk_13BC = 2.0f; - gSaveContext.unk_13C0 = NA_SE_OC_DOOR_OPEN; + gSaveContext.entranceSpeed = 2.0f; + gSaveContext.entranceSound = NA_SE_OC_DOOR_OPEN; } } else { func_8005AD40(Gameplay_GetCamera(globalCtx, 0), doorActor, @@ -5356,18 +5356,18 @@ void func_8083CA20(GlobalContext* globalCtx, Player* this) { void func_8083CA54(GlobalContext* globalCtx, Player* this) { this->linearVelocity = 2.0f; - gSaveContext.unk_13BC = 2.0f; + gSaveContext.entranceSpeed = 2.0f; if (func_8083C910(globalCtx, this, 120.0f)) { this->unk_850 = -15; } } void func_8083CA9C(GlobalContext* globalCtx, Player* this) { - if (gSaveContext.unk_13BC < 0.1f) { - gSaveContext.unk_13BC = 0.1f; + if (gSaveContext.entranceSpeed < 0.1f) { + gSaveContext.entranceSpeed = 0.1f; } - this->linearVelocity = gSaveContext.unk_13BC; + this->linearVelocity = gSaveContext.entranceSpeed; if (func_8083C910(globalCtx, this, 800.0f)) { this->unk_850 = -80 / this->linearVelocity; @@ -8676,7 +8676,7 @@ void func_80845CA4(Player* this, GlobalContext* globalCtx) { sp30 = 20; if (this->stateFlags1 & 1) { - sp34 = gSaveContext.unk_13BC; + sp34 = gSaveContext.entranceSpeed; if (D_808535F4 != 0) { this->unk_450.x = (Math_Sins(D_808535FC) * 400.0f) + this->actor.posRot.pos.x; @@ -8685,7 +8685,7 @@ void func_80845CA4(Player* this, GlobalContext* globalCtx) { } else if (this->unk_850 < 0) { this->unk_850++; - sp34 = gSaveContext.unk_13BC; + sp34 = gSaveContext.entranceSpeed; sp30 = -1; } @@ -9071,7 +9071,7 @@ void Player_Init(Actor* thisx, GlobalContext* globalCtx) { s32 sp4C; s32 initMode; s16 params; - u16 unk_13C0; + u16 entranceSound; globalCtx->unk_11E5C = globalCtx->bombchuBowlingAmmo = 0; @@ -9125,7 +9125,7 @@ void Player_Init(Actor* thisx, GlobalContext* globalCtx) { } if ((sp50 == 0) || (sp50 < -1)) { - if ((scene->titleFile.vromStart != scene->titleFile.vromEnd) && (gSaveContext.unk_13C7 != 0) && + if ((scene->titleFile.vromStart != scene->titleFile.vromEnd) && (gSaveContext.showTitleCard) && (gSaveContext.sceneSetupIndex < 4) && (gEntranceTable[gSaveContext.entranceIndex + gSaveContext.sceneSetupIndex].field & 0x4000) && ((globalCtx->sceneNum != SCENE_DDAN) || (gSaveContext.eventChkInf[11] & 1)) && @@ -9133,7 +9133,7 @@ void Player_Init(Actor* thisx, GlobalContext* globalCtx) { TitleCard_InitPlaceName(globalCtx, &globalCtx->actorCtx.titleCtx, this->giObjectSegment, 0xA0, 0x78, 0x90, 0x18, 0x14); } - gSaveContext.unk_13C7 = 1; + gSaveContext.showTitleCard = true; } if (sp50 == 2) { @@ -9177,10 +9177,10 @@ void Player_Init(Actor* thisx, GlobalContext* globalCtx) { this->stateFlags3 &= ~0x40; } - if (gSaveContext.unk_13C0 != 0) { - unk_13C0 = gSaveContext.unk_13C0; - Audio_PlayActorSound2(&this->actor, unk_13C0); - gSaveContext.unk_13C0 = 0; + if (gSaveContext.entranceSound != 0) { + entranceSound = gSaveContext.entranceSound; + Audio_PlayActorSound2(&this->actor, entranceSound); + gSaveContext.entranceSound = 0; } Map_SavePlayerInitialInfo(globalCtx); @@ -11818,7 +11818,8 @@ s32 func_8084DFF4(GlobalContext* globalCtx, Player* this) { Audio_PlaySoundGeneral(NA_SE_SY_GET_BOXITEM, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8); } else { if ((this->getItemId == GI_HEART_CONTAINER_2) || (this->getItemId == GI_HEART_CONTAINER) || - ((this->getItemId == GI_HEART_PIECE) && ((gSaveContext.questItems & 0xF0000000) == 0x40000000))) { + ((this->getItemId == GI_HEART_PIECE) && + ((gSaveContext.inventory.questItems & 0xF0000000) == 0x40000000))) { temp1 = 0x924; } else { temp1 = temp2 = (this->getItemId == GI_HEART_PIECE) ? 0x39 : 0x922; diff --git a/src/overlays/gamestates/ovl_opening/z_opening.c b/src/overlays/gamestates/ovl_opening/z_opening.c index 149b1e2b73..9fe700d050 100644 --- a/src/overlays/gamestates/ovl_opening/z_opening.c +++ b/src/overlays/gamestates/ovl_opening/z_opening.c @@ -10,7 +10,7 @@ void Opening_SetupTitleScreen(OpeningContext* this) { gSaveContext.gameMode = 1; this->state.running = false; gSaveContext.linkAge = 0; - func_800A82C8(); + Sram_InitDebugSave(); gSaveContext.cutsceneIndex = 0xFFF3; gSaveContext.sceneSetupIndex = 7; SET_NEXT_GAMESTATE(&this->state, Gameplay_Init, GlobalContext); diff --git a/src/overlays/gamestates/ovl_select/z_select.c b/src/overlays/gamestates/ovl_select/z_select.c index 309139e03d..f858abf0fd 100644 --- a/src/overlays/gamestates/ovl_select/z_select.c +++ b/src/overlays/gamestates/ovl_select/z_select.c @@ -19,7 +19,7 @@ void Select_LoadGame(SelectContext* this, s32 entranceIndex) { osSyncPrintf("\n\n\nFILE_NO=%x\n\n\n", gSaveContext.fileNum); osSyncPrintf(VT_RST); if (gSaveContext.fileNum == 0xFF) { - func_800A82C8(); + Sram_InitDebugSave(); gSaveContext.unk_13F6 = gSaveContext.magic; gSaveContext.magic = 0; gSaveContext.unk_13F4 = 0; @@ -37,7 +37,7 @@ void Select_LoadGame(SelectContext* this, s32 entranceIndex) { gSaveContext.respawn[RESPAWN_MODE_DOWN].entranceIndex = -1; gSaveContext.seqIndex = 0xFF; gSaveContext.nightSeqIndex = 0xFF; - gSaveContext.unk_13C7 = 1; + gSaveContext.showTitleCard = true; D_8011FB30 = 0; this->state.running = false; SET_NEXT_GAMESTATE(&this->state, Gameplay_Init, GlobalContext); diff --git a/src/overlays/gamestates/ovl_title/z_title.c b/src/overlays/gamestates/ovl_title/z_title.c index ee1408768e..72ce3e69a4 100644 --- a/src/overlays/gamestates/ovl_title/z_title.c +++ b/src/overlays/gamestates/ovl_title/z_title.c @@ -155,7 +155,7 @@ void Title_Main(TitleContext* this) { } void Title_Destroy(TitleContext* this) { - func_800A9AD0(this, &this->sram); + Sram_InitSram(this, &this->sramCtx); } void Title_Init(TitleContext* this) { @@ -175,7 +175,7 @@ void Title_Init(TitleContext* this) { this->state.destroy = Title_Destroy; this->exit = false; gSaveContext.fileNum = 0xFF; - func_800A9CD4(&this->state, &this->sram); + Sram_Alloc(&this->state, &this->sramCtx); this->ult = 0; this->unk_1D4 = 0x14; this->coverAlpha = 255;