mirror of
https://github.com/zeldaret/oot.git
synced 2025-05-09 18:43:45 +00:00
Decompile z_sram.c (#431)
* Decompile z_sram.c * rename Sram_CalcChecksum to Sram_WriteSaveSlot * progress * done i think * add original name comments * temp substructs * minor fixes * review * review 2 * fix Co-authored-by: fig <fig02srl@gmail.com>
This commit is contained in:
parent
9d35542207
commit
b010db7c19
74 changed files with 1514 additions and 1672 deletions
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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)
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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);
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -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;
|
||||
|
|
291
include/z64.h
291
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,
|
||||
|
|
190
include/z64save.h
Normal file
190
include/z64save.h
Normal file
|
@ -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
|
3
spec
3
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"
|
||||
|
|
|
@ -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];
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -77,7 +77,7 @@ void func_800775D8() {
|
|||
}
|
||||
|
||||
s32 func_800775E4() {
|
||||
return gSaveContext.unk_14;
|
||||
return gSaveContext.numDays;
|
||||
}
|
||||
|
||||
void func_800775F0(u16 arg0) {
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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]++;
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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) {
|
||||
}
|
||||
|
|
53
src/code/z_ss_sram.c
Normal file
53
src/code/z_ss_sram.c
Normal file
|
@ -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);
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
|
|
@ -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++;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)) &&
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -396,4 +396,4 @@ const ActorInit En_Rl_InitVars = {
|
|||
(ActorFunc)EnRl_Destroy,
|
||||
(ActorFunc)EnRl_Update,
|
||||
(ActorFunc)EnRl_Draw,
|
||||
};
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue