From d066586872cc7cc704873b4c7579885d6b3f731a Mon Sep 17 00:00:00 2001 From: cadmic Date: Fri, 17 Jan 2025 03:56:22 -0800 Subject: [PATCH] [iQue] Match z_sram (#2426) * [iQue] z_sram: Use iQue-specific read/write macros * [iQue] z_sram: Make checksum a struct * [iQue] z_sram: Finish matching * Call the trigraph usage a bug * Fix bss * Sram_iQueReadWrite -> Sram_ReadWriteIQue * Use SRAM_HEADER_MAGIC for loop bound * Rename sZeldaMagic -> sSramDefaultHeader and use less char literals --- Makefile | 2 +- include/z64save.h | 6 +- include/z64sram.h | 2 +- src/boot/z_std_dma.c | 2 +- src/code/main.c | 2 +- src/code/z_camera.c | 2 +- src/code/z_kaleido_scope_call.c | 2 +- src/code/z_kankyo.c | 4 +- src/code/z_sram.c | 134 +++++++++++++------- src/overlays/actors/ovl_Fishing/z_fishing.c | 2 +- tools/disasm/ique-cn/functions.txt | 1 + 11 files changed, 106 insertions(+), 53 deletions(-) diff --git a/Makefile b/Makefile index ec1d5f07bf..9530a56aee 100644 --- a/Makefile +++ b/Makefile @@ -581,7 +581,7 @@ EGCS_O_FILES += $(BUILD_DIR)/src/code/z_construct.o # EGCS_O_FILES += $(BUILD_DIR)/src/code/z_kanfont.o # EGCS_O_FILES += $(BUILD_DIR)/src/code/z_message.o EGCS_O_FILES += $(BUILD_DIR)/src/code/z_parameter.o -# EGCS_O_FILES += $(BUILD_DIR)/src/code/z_sram.o +EGCS_O_FILES += $(BUILD_DIR)/src/code/z_sram.o EGCS_O_FILES += $(BUILD_DIR)/src/overlays/actors/ovl_En_Mag/z_en_mag.o EGCS_O_FILES += $(BUILD_DIR)/src/overlays/actors/ovl_End_Title/z_end_title.o EGCS_O_FILES += $(BUILD_DIR)/src/overlays/actors/ovl_Fishing/z_fishing.o diff --git a/include/z64save.h b/include/z64save.h index 142a11294a..ab753a515d 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -84,6 +84,10 @@ typedef struct Inventory { /* 0x5C */ s16 gsTokens; } Inventory; // size = 0x5E +typedef struct Checksum { + /* 0x00 */ u16 value; +} Checksum; // size = 0x02 + typedef struct SavedSceneFlags { /* 0x00 */ u32 chest; /* 0x04 */ u32 swch; @@ -254,7 +258,7 @@ typedef struct SaveInfo { /* 0x12AA 0x12C6 */ u8 scarecrowSpawnSong[0x80]; /* 0x132A 0x1346 */ char unk_1346[0x02]; /* 0x132C 0x1348 */ HorseData horseData; - /* 0x1336 0x1352 */ u16 checksum; // "check_sum" + /* 0x1336 0x1352 */ Checksum checksum; // "check_sum" } SaveInfo; typedef struct Save { diff --git a/include/z64sram.h b/include/z64sram.h index 36478c1716..3769f4419d 100644 --- a/include/z64sram.h +++ b/include/z64sram.h @@ -14,7 +14,7 @@ typedef enum SramHeaderField { /* 0x00 */ SRAM_HEADER_SOUND, /* 0x01 */ SRAM_HEADER_ZTARGET, /* 0x02 */ SRAM_HEADER_LANGUAGE, - /* 0x03 */ SRAM_HEADER_MAGIC // must be the value of `sZeldaMagic` for save to be considered valid + /* 0x03 */ SRAM_HEADER_MAGIC // must be the value in `sSramDefaultHeader` for save to be considered valid } SramHeaderField; #endif diff --git a/src/boot/z_std_dma.c b/src/boot/z_std_dma.c index 8fe2982e7b..ec2aa1f75c 100644 --- a/src/boot/z_std_dma.c +++ b/src/boot/z_std_dma.c @@ -28,7 +28,7 @@ #endif #pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ - "ntsc-1.2:70 pal-1.0:68 pal-1.1:68" + "ntsc-1.2:68 pal-1.0:66 pal-1.1:66" StackEntry sDmaMgrStackInfo; OSMesgQueue sDmaMgrMsgQueue; diff --git a/src/code/main.c b/src/code/main.c index d2c3c9f8bc..6e6e3026c4 100644 --- a/src/code/main.c +++ b/src/code/main.c @@ -24,7 +24,7 @@ extern struct IrqMgr gIrqMgr; #endif #pragma increment_block_number "gc-eu:144 gc-eu-mq:144 gc-jp:144 gc-jp-ce:144 gc-jp-mq:144 gc-us:144 gc-us-mq:144" \ - "ntsc-1.0:130 ntsc-1.1:130 ntsc-1.2:130 pal-1.0:128 pal-1.1:128" + "ntsc-1.0:127 ntsc-1.1:127 ntsc-1.2:127 pal-1.0:125 pal-1.1:125" extern u8 _buffersSegmentEnd[]; diff --git a/src/code/z_camera.c b/src/code/z_camera.c index cb59ef55e9..715d3f42c2 100644 --- a/src/code/z_camera.c +++ b/src/code/z_camera.c @@ -3639,7 +3639,7 @@ s32 Camera_KeepOn3(Camera* camera) { } #pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ - "ntsc-1.0:133 ntsc-1.1:133 ntsc-1.2:133 pal-1.0:131 pal-1.1:131" + "ntsc-1.0:130 ntsc-1.1:130 ntsc-1.2:130 pal-1.0:128 pal-1.1:128" s32 Camera_KeepOn4(Camera* camera) { static Vec3f D_8015BD50; diff --git a/src/code/z_kaleido_scope_call.c b/src/code/z_kaleido_scope_call.c index 10fff2bb07..da348b3316 100644 --- a/src/code/z_kaleido_scope_call.c +++ b/src/code/z_kaleido_scope_call.c @@ -1,4 +1,4 @@ -#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:224 gc-jp-ce:224 gc-jp-mq:224 gc-us:224 gc-us-mq:224" \ +#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \ "ntsc-1.0:224 ntsc-1.1:224 ntsc-1.2:224 pal-1.0:224 pal-1.1:224" #include "global.h" diff --git a/src/code/z_kankyo.c b/src/code/z_kankyo.c index a113a73bff..eff23ff2a0 100644 --- a/src/code/z_kankyo.c +++ b/src/code/z_kankyo.c @@ -1,5 +1,5 @@ -#pragma increment_block_number "gc-eu:220 gc-eu-mq:220 gc-jp:212 gc-jp-ce:212 gc-jp-mq:212 gc-us:212 gc-us-mq:212" \ - "ntsc-1.0:224 ntsc-1.1:224 ntsc-1.2:224 pal-1.0:228 pal-1.1:228" +#pragma increment_block_number "gc-eu:216 gc-eu-mq:216 gc-jp:212 gc-jp-ce:212 gc-jp-mq:212 gc-us:212 gc-us-mq:212" \ + "ntsc-1.0:208 ntsc-1.1:208 ntsc-1.2:208 pal-1.0:228 pal-1.1:228" #include "global.h" #include "ultra64.h" diff --git a/src/code/z_sram.c b/src/code/z_sram.c index 22d9cc07c8..d7d453c9aa 100644 --- a/src/code/z_sram.c +++ b/src/code/z_sram.c @@ -17,6 +17,30 @@ #define SLOT_OFFSET(index) (SRAM_HEADER_SIZE + 0x10 + (index * SLOT_SIZE)) +#if !PLATFORM_IQUE + +#define SRAM_READ(addr, dramAddr, size) SsSram_ReadWrite(addr, dramAddr, size, OS_READ) +#define SRAM_WRITE(addr, dramAddr, size) SsSram_ReadWrite(addr, dramAddr, size, OS_WRITE) + +#else + +void Sram_ReadWriteIQue(s32 addr, void* dramAddr, size_t size, s32 direction) { + void* sramAddr; + + addr -= OS_K1_TO_PHYSICAL(0xA8000000); + sramAddr = (void*)(__osBbSramAddress + addr); + if (direction == OS_READ) { + bcopy(sramAddr, dramAddr, size); + } else if (direction == OS_WRITE) { + bcopy(dramAddr, sramAddr, size); + } +} + +#define SRAM_READ(addr, dramAddr, size) Sram_ReadWriteIQue(addr, dramAddr, size, OS_READ) +#define SRAM_WRITE(addr, dramAddr, size) Sram_ReadWriteIQue(addr, dramAddr, size, OS_WRITE) + +#endif + u16 gSramSlotOffsets[] = { SLOT_OFFSET(0), SLOT_OFFSET(1), @@ -27,7 +51,23 @@ u16 gSramSlotOffsets[] = { SLOT_OFFSET(5), }; -static char sZeldaMagic[] = { '\0', '\0', '\0', '\x98', '\x09', '\x10', '\x21', 'Z', 'E', 'L', 'D', 'A' }; +static u8 sSramDefaultHeader[] = { + // TODO: use enums for these + 0, // SRAM_HEADER_SOUND + 0, // SRAM_HEADER_ZTARGET + 0, // SRAM_HEADER_LANGUAGE + + // SRAM_HEADER_MAGIC + 0x98, + 0x09, + 0x10, + 0x21, + 'Z', + 'E', + 'L', + 'D', + 'A', +}; static SavePlayerData sNewSavePlayerData = { { '\0', '\0', '\0', '\0', '\0', '\0' }, // newf @@ -138,15 +178,13 @@ static Inventory sNewSaveInventory = { 0, // gsTokens }; -static u16 sNewSaveChecksum = 0; +static Checksum 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(&gSaveContext.save.info, sizeof(SaveInfo)); gSaveContext.save.totalDays = 0; gSaveContext.save.bgsDayCount = 0; @@ -154,8 +192,8 @@ void Sram_InitNewSave(void) { gSaveContext.save.info.playerData = sNewSavePlayerData; gSaveContext.save.info.equips = sNewSaveEquips; gSaveContext.save.info.inventory = sNewSaveInventory; + gSaveContext.save.info.checksum = sNewSaveChecksum; - temp->save.info.checksum = sNewSaveChecksum; gSaveContext.save.info.horseData.sceneId = SCENE_HYRULE_FIELD; gSaveContext.save.info.horseData.pos.x = -1840; gSaveContext.save.info.horseData.pos.y = 72; @@ -297,7 +335,7 @@ static Inventory sDebugSaveInventory = { 0, // gsTokens }; -static u16 sDebugSaveChecksum = 0; +static Checksum sDebugSaveChecksum = { 0 }; /** * Initialize debug save. This is also used on the Title Screen @@ -309,8 +347,6 @@ static u16 sDebugSaveChecksum = 0; * and set water level in Water Temple to lowest level. */ void Sram_InitDebugSave(void) { - SaveContext* temp = &gSaveContext; - bzero(&gSaveContext.save.info, sizeof(SaveInfo)); gSaveContext.save.totalDays = 0; gSaveContext.save.bgsDayCount = 0; @@ -318,8 +354,8 @@ void Sram_InitDebugSave(void) { gSaveContext.save.info.playerData = sDebugSavePlayerData; gSaveContext.save.info.equips = sDebugSaveEquips; gSaveContext.save.info.inventory = sDebugSaveInventory; + gSaveContext.save.info.checksum = sDebugSaveChecksum; - temp->save.info.checksum = sDebugSaveChecksum; gSaveContext.save.info.horseData.sceneId = SCENE_HYRULE_FIELD; gSaveContext.save.info.horseData.pos.x = -1840; gSaveContext.save.info.horseData.pos.y = 72; @@ -456,8 +492,11 @@ void Sram_OpenSave(SramContext* sramCtx) { default: if (gSaveContext.save.info.playerData.savedSceneId != SCENE_LINKS_HOUSE) { - gSaveContext.save.entranceIndex = - (LINK_AGE_IN_YEARS == YEARS_CHILD) ? ENTR_LINKS_HOUSE_0 : ENTR_TEMPLE_OF_TIME_7; + if (LINK_AGE_IN_YEARS == YEARS_CHILD) { + gSaveContext.save.entranceIndex = ENTR_LINKS_HOUSE_0; + } else { + gSaveContext.save.entranceIndex = ENTR_TEMPLE_OF_TIME_7; + } } else { gSaveContext.save.entranceIndex = ENTR_LINKS_HOUSE_0; } @@ -505,7 +544,8 @@ void Sram_OpenSave(SramContext* sramCtx) { // if zelda cutscene has been watched but lullaby was not obtained, restore cutscene and take away letter if (GET_EVENTCHKINF(EVENTCHKINF_40) && !CHECK_QUEST_ITEM(QUEST_SONG_LULLABY)) { - i = gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_40] & ~EVENTCHKINF_MASK(EVENTCHKINF_40); + i = gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_40]; + i &= ~EVENTCHKINF_MASK(EVENTCHKINF_40); gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_40] = i; INV_CONTENT(ITEM_ZELDAS_LETTER) = ITEM_CHICKEN; @@ -551,7 +591,7 @@ void Sram_WriteSave(SramContext* sramCtx) { u16 j; u16* ptr; - gSaveContext.save.info.checksum = 0; + gSaveContext.save.info.checksum.value = 0; ptr = (u16*)&gSaveContext; checksum = j = 0; @@ -563,7 +603,7 @@ void Sram_WriteSave(SramContext* sramCtx) { checksum += *ptr++; } - gSaveContext.save.info.checksum = checksum; + gSaveContext.save.info.checksum.value = checksum; ptr = (u16*)&gSaveContext; checksum = 0; @@ -576,7 +616,7 @@ void Sram_WriteSave(SramContext* sramCtx) { } offset = gSramSlotOffsets[gSaveContext.fileNum]; - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE, OS_WRITE); + SRAM_WRITE(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE); ptr = (u16*)&gSaveContext; checksum = 0; @@ -589,7 +629,7 @@ void Sram_WriteSave(SramContext* sramCtx) { } offset = gSramSlotOffsets[gSaveContext.fileNum + 3]; - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE, OS_WRITE); + SRAM_WRITE(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE); } /** @@ -610,7 +650,7 @@ void Sram_VerifyAndLoadAllSaves(FileSelectState* fileSelect, SramContext* sramCt PRINTF("SRAM START─LOAD\n"); bzero(sramCtx->readBuff, SRAM_SIZE); - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE, OS_READ); + SRAM_READ(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE); dayTime = ((void)0, gSaveContext.save.dayTime); @@ -620,8 +660,8 @@ void Sram_VerifyAndLoadAllSaves(FileSelectState* fileSelect, SramContext* sramCt sizeof(Save)); MemCpy(&gSaveContext, sramCtx->readBuff + offset, sizeof(Save)); - oldChecksum = gSaveContext.save.info.checksum; - gSaveContext.save.info.checksum = 0; + oldChecksum = gSaveContext.save.info.checksum.value; + gSaveContext.save.info.checksum.value = 0; ptr = (u16*)&gSaveContext; PRINTF("\n============= S(%d) =============\n", slotNum); @@ -645,8 +685,8 @@ void Sram_VerifyAndLoadAllSaves(FileSelectState* fileSelect, SramContext* sramCt offset = gSramSlotOffsets[slotNum + 3]; MemCpy(&gSaveContext, sramCtx->readBuff + offset, sizeof(Save)); - oldChecksum = gSaveContext.save.info.checksum; - gSaveContext.save.info.checksum = 0; + oldChecksum = gSaveContext.save.info.checksum.value; + gSaveContext.save.info.checksum.value = 0; ptr = (u16*)&gSaveContext; PRINTF("================= BACK─UP ========================\n"); @@ -710,32 +750,33 @@ void Sram_VerifyAndLoadAllSaves(FileSelectState* fileSelect, SramContext* sramCt newChecksum += *ptr++; } - gSaveContext.save.info.checksum = newChecksum; - PRINTF("\nCheck_Sum=%x(%x)\n", gSaveContext.save.info.checksum, newChecksum); + gSaveContext.save.info.checksum.value = newChecksum; + PRINTF("\nCheck_Sum=%x(%x)\n", gSaveContext.save.info.checksum.value, newChecksum); i = gSramSlotOffsets[slotNum + 3]; - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000) + i, &gSaveContext, SLOT_SIZE, OS_WRITE); + SRAM_WRITE(OS_K1_TO_PHYSICAL(0xA8000000) + i, &gSaveContext, SLOT_SIZE); - PRINTF("????#%x,%x,%x,%x,%x,%x\n", gSaveContext.save.info.playerData.newf[0], + //! @bug The ??= below is interpreted as a trigraph for # by IDO + PRINTF("??????=%x,%x,%x,%x,%x,%x\n", gSaveContext.save.info.playerData.newf[0], gSaveContext.save.info.playerData.newf[1], gSaveContext.save.info.playerData.newf[2], gSaveContext.save.info.playerData.newf[3], gSaveContext.save.info.playerData.newf[4], gSaveContext.save.info.playerData.newf[5]); PRINTF(T("\nぽいんと=%x(%d+3) check_sum=%x(%x)\n", "\npoints=%x(%d+3) check_sum=%x(%x)\n"), i, - slotNum, gSaveContext.save.info.checksum, newChecksum); + slotNum, gSaveContext.save.info.checksum.value, newChecksum); } i = gSramSlotOffsets[slotNum]; - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000) + i, &gSaveContext, SLOT_SIZE, OS_WRITE); + SRAM_WRITE(OS_K1_TO_PHYSICAL(0xA8000000) + i, &gSaveContext, SLOT_SIZE); PRINTF(T("ぽいんと=%x(%d) check_sum=%x(%x)\n", "point=%x(%d) check_sum=%x(%x)\n"), i, slotNum, - gSaveContext.save.info.checksum, newChecksum); + gSaveContext.save.info.checksum.value, newChecksum); } else { PRINTF(T("\nSAVEデータ OK!!!!\n", "\nSAVE data OK!!!!\n")); } } bzero(sramCtx->readBuff, SRAM_SIZE); - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE, OS_READ); + SRAM_READ(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE); gSaveContext.save.dayTime = dayTime; PRINTF("SAVECT=%x, NAME=%x, LIFE=%x, ITEM=%x, 64DD=%x, HEART=%x\n", DEATHS, NAME, HEALTH_CAP, QUEST, N64DD, @@ -809,7 +850,14 @@ void Sram_InitSave(FileSelectState* fileSelect, SramContext* sramCtx) { #endif for (offset = 0; offset < 8; offset++) { +#if !PLATFORM_IQUE gSaveContext.save.info.playerData.playerName[offset] = fileSelect->fileNames[fileSelect->buttonIndex][offset]; +#else + // Workaround for EGCS bug + u8* fileName = fileSelect->fileNames[fileSelect->buttonIndex]; + + gSaveContext.save.info.playerData.playerName[offset] = fileName[offset]; +#endif } gSaveContext.save.info.playerData.newf[0] = 'Z'; @@ -838,8 +886,8 @@ void Sram_InitSave(FileSelectState* fileSelect, SramContext* sramCtx) { } } - gSaveContext.save.info.checksum = checksum; - PRINTF(T("\nチェックサム=%x\n", "\nChecksum = %x\n"), gSaveContext.save.info.checksum); + gSaveContext.save.info.checksum.value = checksum; + PRINTF(T("\nチェックサム=%x\n", "\nChecksum = %x\n"), gSaveContext.save.info.checksum.value); offset = gSramSlotOffsets[gSaveContext.fileNum]; PRINTF("I=%x no=%d\n", offset, gSaveContext.fileNum); @@ -849,7 +897,7 @@ void Sram_InitSave(FileSelectState* fileSelect, SramContext* sramCtx) { PRINTF("I=%x no=%d\n", offset, gSaveContext.fileNum + 3); MemCpy(sramCtx->readBuff + offset, &gSaveContext, sizeof(Save)); - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE, OS_WRITE); + SRAM_WRITE(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE); PRINTF(T("SAVE終了\n", "SAVE end\n")); PRINTF("z_common_data.file_no = %d\n", gSaveContext.fileNum); @@ -879,26 +927,26 @@ void Sram_InitSave(FileSelectState* fileSelect, SramContext* sramCtx) { } void Sram_EraseSave(FileSelectState* fileSelect, SramContext* sramCtx) { - s32 offset; + u16 offset; Sram_InitNewSave(); offset = gSramSlotOffsets[fileSelect->selectedFileIndex]; MemCpy(sramCtx->readBuff + offset, &gSaveContext, sizeof(Save)); - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE, OS_WRITE); + SRAM_WRITE(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE); MemCpy(&fileSelect->n64ddFlags[fileSelect->selectedFileIndex], sramCtx->readBuff + offset + N64DD, sizeof(fileSelect->n64ddFlags[0])); offset = gSramSlotOffsets[fileSelect->selectedFileIndex + 3]; MemCpy(sramCtx->readBuff + offset, &gSaveContext, sizeof(Save)); - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE, OS_WRITE); + SRAM_WRITE(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE); PRINTF(T("CLEAR終了\n", "CLEAR END\n")); } void Sram_CopySave(FileSelectState* fileSelect, SramContext* sramCtx) { - s32 offset; + u16 offset; PRINTF("READ=%d(%x) COPY=%d(%x)\n", fileSelect->selectedFileIndex, gSramSlotOffsets[fileSelect->selectedFileIndex], fileSelect->copyDestFileIndex, @@ -913,7 +961,7 @@ void Sram_CopySave(FileSelectState* fileSelect, SramContext* sramCtx) { offset = gSramSlotOffsets[fileSelect->copyDestFileIndex + 3]; MemCpy(sramCtx->readBuff + offset, &gSaveContext, sizeof(Save)); - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE, OS_WRITE); + SRAM_WRITE(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE); offset = gSramSlotOffsets[fileSelect->copyDestFileIndex]; @@ -943,23 +991,23 @@ void Sram_CopySave(FileSelectState* fileSelect, SramContext* sramCtx) { * Write the first 16 bytes of the read buffer to the SRAM header */ void Sram_WriteSramHeader(SramContext* sramCtx) { - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_HEADER_SIZE, OS_WRITE); + SRAM_WRITE(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_HEADER_SIZE); } void Sram_InitSram(GameState* gameState, SramContext* sramCtx) { u16 i; PRINTF("sram_initialize( Game *game, Sram *sram )\n"); - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE, OS_READ); + SRAM_READ(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE); - for (i = 0; i < ARRAY_COUNTU(sZeldaMagic) - 3; i++) { - if (sZeldaMagic[i + SRAM_HEADER_MAGIC] != sramCtx->readBuff[i + SRAM_HEADER_MAGIC]) { + for (i = 0; i < ARRAY_COUNTU(sSramDefaultHeader) - SRAM_HEADER_MAGIC; i++) { + if (sSramDefaultHeader[i + SRAM_HEADER_MAGIC] != sramCtx->readBuff[i + SRAM_HEADER_MAGIC]) { PRINTF(T("SRAM破壊!!!!!!\n", "SRAM destruction!!!!!!\n")); #if PLATFORM_GC && OOT_PAL gSaveContext.language = sramCtx->readBuff[SRAM_HEADER_LANGUAGE]; #endif - MemCpy(sramCtx->readBuff, sZeldaMagic, sizeof(sZeldaMagic)); + MemCpy(sramCtx->readBuff, sSramDefaultHeader, sizeof(sSramDefaultHeader)); #if PLATFORM_GC && OOT_PAL sramCtx->readBuff[SRAM_HEADER_LANGUAGE] = gSaveContext.language; @@ -986,7 +1034,7 @@ void Sram_InitSram(GameState* gameState, SramContext* sramCtx) { 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_WRITE(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE); PRINTF(T("SRAM破壊!!!!!!\n", "SRAM destruction!!!!!!\n")); } #endif diff --git a/src/overlays/actors/ovl_Fishing/z_fishing.c b/src/overlays/actors/ovl_Fishing/z_fishing.c index a2c5ee5ae6..63bf23cdc2 100644 --- a/src/overlays/actors/ovl_Fishing/z_fishing.c +++ b/src/overlays/actors/ovl_Fishing/z_fishing.c @@ -35,7 +35,7 @@ #include "cic6105.h" #endif -#pragma increment_block_number "gc-eu:167 gc-eu-mq:167 gc-jp:167 gc-jp-ce:167 gc-jp-mq:167 gc-us:167 gc-us-mq:167" \ +#pragma increment_block_number "gc-eu:164 gc-eu-mq:164 gc-jp:164 gc-jp-ce:164 gc-jp-mq:164 gc-us:164 gc-us-mq:164" \ "ntsc-1.0:121 ntsc-1.1:121 ntsc-1.2:121 pal-1.0:121 pal-1.1:121" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/tools/disasm/ique-cn/functions.txt b/tools/disasm/ique-cn/functions.txt index 41abd66a7c..0cbe54456d 100644 --- a/tools/disasm/ique-cn/functions.txt +++ b/tools/disasm/ique-cn/functions.txt @@ -1824,6 +1824,7 @@ SkinMatrix_MtxFToMtx = 0x80095D40; // type:func SkinMatrix_MtxFToNewMtx = 0x80095F58; // type:func SkinMatrix_SetRotateAxis = 0x80095FA0; // type:func func_800A8030 = 0x80096110; // type:func +Sram_ReadWriteIQue = 0x80096280; // type:func Sram_InitNewSave = 0x800962D0; // type:func Sram_InitDebugSave = 0x80096420; // type:func Sram_OpenSave = 0x800965E8; // type:func