diff --git a/assets/xml/textures/icon_item_jpn_static.xml b/assets/xml/textures/icon_item_jpn_static.xml index 95e1ea0552..f2fe854b8e 100644 --- a/assets/xml/textures/icon_item_jpn_static.xml +++ b/assets/xml/textures/icon_item_jpn_static.xml @@ -11,8 +11,8 @@ - - + + diff --git a/include/regs.h b/include/regs.h index 7878d5aada..53e8053a71 100644 --- a/include/regs.h +++ b/include/regs.h @@ -100,6 +100,14 @@ #define R_TEXTBOX_TEXHEIGHT YREG(17) #define R_TEXTBOX_WIDTH YREG(22) #define R_TEXTBOX_HEIGHT YREG(23) +#if OOT_NTSC +#define R_KALEIDO_UNK1(i) YREG(48 + (i)) +#define R_KALEIDO_UNK2(i) YREG(50 + (i)) +#define R_KALEIDO_UNK3(i) YREG(52 + (i)) +#define R_KALEIDO_UNK4(i) YREG(54 + (i)) +#define R_KALEIDO_UNK5(i) YREG(56 + (i)) +#define R_KALEIDO_UNK6(i) YREG(58 + (i)) +#endif #define R_TEXTBOX_ICON_XPOS YREG(71) #define R_TEXTBOX_ICON_YPOS YREG(72) #define R_TEXTBOX_ICON_DIMENSION YREG(75) @@ -187,6 +195,12 @@ #define R_B_LABEL_X(i) WREG(40 + (i)) #define R_B_LABEL_Y(i) WREG(43 + (i)) #define R_A_LABEL_Z(i) WREG(46 + (i)) +#define R_KALEIDO_UNK1(i) WREG(49 + (i)) +#define R_KALEIDO_UNK2(i) WREG(52 + (i)) +#define R_KALEIDO_UNK3(i) WREG(55 + (i)) +#define R_KALEIDO_UNK4(i) WREG(58 + (i)) +#define R_KALEIDO_UNK5(i) WREG(61 + (i)) +#define R_KALEIDO_UNK6(i) WREG(64 + (i)) #endif #define R_DGN_MINIMAP_X WREG(68) #define R_DGN_MINIMAP_Y WREG(69) diff --git a/src/code/z_construct.c b/src/code/z_construct.c index ac1291e2d0..f9bfa5efdc 100644 --- a/src/code/z_construct.c +++ b/src/code/z_construct.c @@ -247,6 +247,22 @@ void Regs_InitDataImpl(void) { YREG(45) = 236; YREG(46) = 36; YREG(47) = 0; + +#if OOT_NTSC + R_KALEIDO_UNK1(0) = -45; + R_KALEIDO_UNK1(1) = -48; + R_KALEIDO_UNK2(0) = 16; + R_KALEIDO_UNK2(1) = 22; + R_KALEIDO_UNK3(0) = -55; + R_KALEIDO_UNK3(1) = -53; + R_KALEIDO_UNK4(0) = 43; + R_KALEIDO_UNK4(1) = 47; + R_KALEIDO_UNK5(0) = -33; + R_KALEIDO_UNK5(1) = -42; + R_KALEIDO_UNK6(0) = -33; + R_KALEIDO_UNK6(1) = -37; +#else + // Same as above, although these regs are now unused for PAL versions YREG(48) = -45; YREG(49) = -48; YREG(50) = 16; @@ -259,6 +275,8 @@ void Regs_InitDataImpl(void) { YREG(57) = -42; YREG(58) = -33; YREG(59) = -37; +#endif + YREG(60) = 14; YREG(61) = -2; YREG(62) = -2; @@ -533,24 +551,24 @@ void Regs_InitDataImpl(void) { R_A_LABEL_Z(0) = -380; R_A_LABEL_Z(1) = -360; R_A_LABEL_Z(2) = -350; - WREG(49) = -48; - WREG(50) = 16; - WREG(51) = -62; - WREG(52) = 22; - WREG(53) = -84; - WREG(54) = 20; - WREG(55) = -53; - WREG(56) = 40; - WREG(57) = -64; - WREG(58) = 47; - WREG(59) = -84; - WREG(60) = 44; - WREG(61) = -42; - WREG(62) = 32; - WREG(63) = -45; - WREG(64) = -37; - WREG(65) = 30; - WREG(66) = -50; + R_KALEIDO_UNK1(0) = -48; + R_KALEIDO_UNK1(1) = 16; + R_KALEIDO_UNK1(2) = -62; + R_KALEIDO_UNK2(0) = 22; + R_KALEIDO_UNK2(1) = -84; + R_KALEIDO_UNK2(2) = 20; + R_KALEIDO_UNK3(0) = -53; + R_KALEIDO_UNK3(1) = 40; + R_KALEIDO_UNK3(2) = -64; + R_KALEIDO_UNK4(0) = 47; + R_KALEIDO_UNK4(1) = -84; + R_KALEIDO_UNK4(2) = 44; + R_KALEIDO_UNK5(0) = -42; + R_KALEIDO_UNK5(1) = 32; + R_KALEIDO_UNK5(2) = -45; + R_KALEIDO_UNK6(0) = -37; + R_KALEIDO_UNK6(1) = 30; + R_KALEIDO_UNK6(2) = -50; #endif R_DGN_MINIMAP_X = 204; diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c index 2e9f652f36..0eba73593f 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c @@ -132,18 +132,49 @@ static void* sGameOverTexs[] = { gPauseSave20Tex, gPauseSave21Tex, gPauseSave22Tex, gPauseSave23Tex, gPauseSave24Tex, }; -static void* sEquipmentTexs[] = - LANGUAGE_ARRAY(sEquipmentJPNTexs, sEquipmentENGTexs, sEquipmentGERTexs, sEquipmentFRATexs); +#if OOT_NTSC +#define EQUIPMENT_TEXS(language) ((language) != LANGUAGE_JPN ? sEquipmentENGTexs : sEquipmentJPNTexs) +#define SELECT_ITEM_TEXS(language) ((language) != LANGUAGE_JPN ? sSelectItemENGTexs : sSelectItemJPNTexs) +#define MAP_TEXS(language) ((language) != LANGUAGE_JPN ? sMapENGTexs : sMapJPNTexs) +#define QUEST_STATUS_TEXS(language) ((language) != LANGUAGE_JPN ? sQuestStatusENGTexs : sQuestStatusJPNTexs) +#define SAVE_TEXS(language) ((language) != LANGUAGE_JPN ? sSaveENGTexs : sSaveJPNTexs) +#else +static void* sEquipmentTexs[] = { + sEquipmentENGTexs, + sEquipmentGERTexs, + sEquipmentFRATexs, +}; -static void* sSelectItemTexs[] = - LANGUAGE_ARRAY(sSelectItemJPNTexs, sSelectItemENGTexs, sSelectItemGERTexs, sSelectItemFRATexs); +static void* sSelectItemTexs[] = { + sSelectItemENGTexs, + sSelectItemGERTexs, + sSelectItemFRATexs, +}; -static void* sMapTexs[] = LANGUAGE_ARRAY(sMapJPNTexs, sMapENGTexs, sMapGERTexs, sMapFRATexs); +static void* sMapTexs[] = { + sMapENGTexs, + sMapGERTexs, + sMapFRATexs, +}; -static void* sQuestStatusTexs[] = - LANGUAGE_ARRAY(sQuestStatusJPNTexs, sQuestStatusENGTexs, sQuestStatusGERTexs, sQuestStatusFRATexs); +static void* sQuestStatusTexs[] = { + sQuestStatusENGTexs, + sQuestStatusGERTexs, + sQuestStatusFRATexs, +}; -static void* sSaveTexs[] = LANGUAGE_ARRAY(sSaveJPNTexs, sSaveENGTexs, sSaveGERTexs, sSaveFRATexs); +static void* sSaveTexs[] = { + sSaveENGTexs, + sSaveGERTexs, + sSaveFRATexs, +}; + +#define EQUIPMENT_TEXS(language) (sEquipmentTexs[(language)]) +#define SELECT_ITEM_TEXS(language) (sSelectItemTexs[(language)]) +#define MAP_TEXS(language) (sMapTexs[(language)]) +#define QUEST_STATUS_TEXS(language) (sQuestStatusTexs[(language)]) +#define SAVE_TEXS(language) (sSaveTexs[(language)]) +#endif s16 D_8082AAEC[] = { 32, 112, 32, 48, 32, 32, 32, 48, 32, 64, 32, 48, 48, 48, 48, 64, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 80, 64, @@ -588,6 +619,9 @@ void KaleidoScope_SetupPageSwitch(PauseContext* pauseCtx, u8 pt) { pauseCtx->cursorSpecialPos = PAUSE_CURSOR_PAGE_LEFT; } +#if OOT_NTSC + gSaveContext.buttonStatus[0] = gPageSwitchNextButtonStatus[pauseCtx->pageIndex + pt][0]; +#endif gSaveContext.buttonStatus[1] = gPageSwitchNextButtonStatus[pauseCtx->pageIndex + pt][1]; gSaveContext.buttonStatus[2] = gPageSwitchNextButtonStatus[pauseCtx->pageIndex + pt][2]; gSaveContext.buttonStatus[3] = gPageSwitchNextButtonStatus[pauseCtx->pageIndex + pt][3]; @@ -832,7 +866,7 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) { G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->itemPageVtx, - sSelectItemTexs[gSaveContext.language]); + SELECT_ITEM_TEXS(gSaveContext.language)); KaleidoScope_DrawItemSelect(play); } @@ -850,7 +884,7 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) { G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->equipPageVtx, - sEquipmentTexs[gSaveContext.language]); + EQUIPMENT_TEXS(gSaveContext.language)); KaleidoScope_DrawEquipment(play); } @@ -869,7 +903,7 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) { G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->questPageVtx, - sQuestStatusTexs[gSaveContext.language]); + QUEST_STATUS_TEXS(gSaveContext.language)); KaleidoScope_DrawQuestStatus(play, gfxCtx); } @@ -888,7 +922,7 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) { G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); POLY_OPA_DISP = - KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->mapPageVtx, sMapTexs[gSaveContext.language]); + KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->mapPageVtx, MAP_TEXS(gSaveContext.language)); if (sInDungeonScene) { KaleidoScope_DrawDungeonMap(play, gfxCtx); @@ -917,7 +951,7 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) { G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->itemPageVtx, - sSelectItemTexs[gSaveContext.language]); + SELECT_ITEM_TEXS(gSaveContext.language)); KaleidoScope_DrawItemSelect(play); break; @@ -932,7 +966,7 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) { G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); POLY_OPA_DISP = - KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->mapPageVtx, sMapTexs[gSaveContext.language]); + KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->mapPageVtx, MAP_TEXS(gSaveContext.language)); if (sInDungeonScene) { KaleidoScope_DrawDungeonMap(play, gfxCtx); @@ -964,7 +998,7 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) { G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->questPageVtx, - sQuestStatusTexs[gSaveContext.language]); + QUEST_STATUS_TEXS(gSaveContext.language)); KaleidoScope_DrawQuestStatus(play, gfxCtx); @@ -983,7 +1017,7 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) { G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->equipPageVtx, - sEquipmentTexs[gSaveContext.language]); + EQUIPMENT_TEXS(gSaveContext.language)); KaleidoScope_DrawEquipment(play); @@ -1037,7 +1071,7 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) { POLY_OPA_DISP = KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->saveVtx, sGameOverTexs); } else { // PAUSE_STATE_SAVE_PROMPT POLY_OPA_DISP = - KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->saveVtx, sSaveTexs[gSaveContext.language]); + KaleidoScope_DrawPageSections(POLY_OPA_DISP, pauseCtx->saveVtx, SAVE_TEXS(gSaveContext.language)); } gSPVertex(POLY_OPA_DISP++, &pauseCtx->saveVtx[60], 32, 0); @@ -1132,9 +1166,9 @@ void KaleidoScope_DrawInfoPanel(PlayState* play) { LANGUAGE_ARRAY(gPauseToSelectItemJPNTex, gPauseToSelectItemENGTex, gPauseToSelectItemGERTex, gPauseToSelectItemFRATex), }; - static u16 D_8082ADD8[3] = { 56, 88, 80 }; - static u16 D_8082ADE0[3] = { 64, 88, 72 }; - static u16 D_8082ADE8[3] = { 80, 104, 112 }; + static u16 D_8082ADD8[] = LANGUAGE_ARRAY(56, 56, 88, 80); + static u16 D_8082ADE0[] = LANGUAGE_ARRAY(48, 64, 88, 72); + static u16 D_8082ADE8[] = LANGUAGE_ARRAY(96, 80, 104, 112); static s16 D_8082ADF0[][4] = { { 180, 210, 255, 220 }, { 100, 100, 150, 220 }, @@ -1415,13 +1449,14 @@ void KaleidoScope_DrawInfoPanel(PlayState* play) { gSPVertex(POLY_OPA_DISP++, &pauseCtx->infoPanelVtx[16], 8, 0); if (pauseCtx->state == PAUSE_STATE_SAVE_PROMPT) { - pauseCtx->infoPanelVtx[16].v.ob[0] = pauseCtx->infoPanelVtx[18].v.ob[0] = WREG(61 + gSaveContext.language); + pauseCtx->infoPanelVtx[16].v.ob[0] = pauseCtx->infoPanelVtx[18].v.ob[0] = + R_KALEIDO_UNK5(gSaveContext.language); pauseCtx->infoPanelVtx[17].v.ob[0] = pauseCtx->infoPanelVtx[19].v.ob[0] = pauseCtx->infoPanelVtx[16].v.ob[0] + 24; pauseCtx->infoPanelVtx[20].v.ob[0] = pauseCtx->infoPanelVtx[22].v.ob[0] = - pauseCtx->infoPanelVtx[16].v.ob[0] + WREG(52 + gSaveContext.language); + pauseCtx->infoPanelVtx[16].v.ob[0] + R_KALEIDO_UNK2(gSaveContext.language); pauseCtx->infoPanelVtx[21].v.ob[0] = pauseCtx->infoPanelVtx[23].v.ob[0] = pauseCtx->infoPanelVtx[20].v.ob[0] + D_8082ADE0[gSaveContext.language]; @@ -1461,13 +1496,13 @@ void KaleidoScope_DrawInfoPanel(PlayState* play) { } else { if ((u32)pauseCtx->pageIndex == PAUSE_ITEM) { pauseCtx->infoPanelVtx[16].v.ob[0] = pauseCtx->infoPanelVtx[18].v.ob[0] = - WREG(49 + gSaveContext.language); + R_KALEIDO_UNK1(gSaveContext.language); pauseCtx->infoPanelVtx[17].v.ob[0] = pauseCtx->infoPanelVtx[19].v.ob[0] = pauseCtx->infoPanelVtx[16].v.ob[0] + 48; pauseCtx->infoPanelVtx[20].v.ob[0] = pauseCtx->infoPanelVtx[22].v.ob[0] = - pauseCtx->infoPanelVtx[16].v.ob[0] + WREG(58 + gSaveContext.language); + pauseCtx->infoPanelVtx[16].v.ob[0] + R_KALEIDO_UNK4(gSaveContext.language); pauseCtx->infoPanelVtx[21].v.ob[0] = pauseCtx->infoPanelVtx[23].v.ob[0] = pauseCtx->infoPanelVtx[20].v.ob[0] + D_8082ADD8[gSaveContext.language]; @@ -1490,13 +1525,13 @@ void KaleidoScope_DrawInfoPanel(PlayState* play) { (pauseCtx->cursorSlot[PAUSE_QUEST] <= 0x11)) { if (pauseCtx->namedItem != PAUSE_ITEM_NONE) { pauseCtx->infoPanelVtx[16].v.ob[0] = pauseCtx->infoPanelVtx[18].v.ob[0] = - WREG(55 + gSaveContext.language); + R_KALEIDO_UNK3(gSaveContext.language); pauseCtx->infoPanelVtx[17].v.ob[0] = pauseCtx->infoPanelVtx[19].v.ob[0] = pauseCtx->infoPanelVtx[16].v.ob[0] + 24; pauseCtx->infoPanelVtx[20].v.ob[0] = pauseCtx->infoPanelVtx[22].v.ob[0] = - pauseCtx->infoPanelVtx[16].v.ob[0] + WREG(52 + gSaveContext.language); + pauseCtx->infoPanelVtx[16].v.ob[0] + R_KALEIDO_UNK2(gSaveContext.language); #if OOT_PAL if (gSaveContext.language == LANGUAGE_GER) { @@ -1523,13 +1558,13 @@ void KaleidoScope_DrawInfoPanel(PlayState* play) { } } else if (pauseCtx->pageIndex == PAUSE_EQUIP) { pauseCtx->infoPanelVtx[16].v.ob[0] = pauseCtx->infoPanelVtx[18].v.ob[0] = - WREG(64 + gSaveContext.language); + R_KALEIDO_UNK6(gSaveContext.language); pauseCtx->infoPanelVtx[17].v.ob[0] = pauseCtx->infoPanelVtx[19].v.ob[0] = pauseCtx->infoPanelVtx[16].v.ob[0] + 24; pauseCtx->infoPanelVtx[20].v.ob[0] = pauseCtx->infoPanelVtx[22].v.ob[0] = - pauseCtx->infoPanelVtx[16].v.ob[0] + WREG(52 + gSaveContext.language); + pauseCtx->infoPanelVtx[16].v.ob[0] + R_KALEIDO_UNK2(gSaveContext.language); pauseCtx->infoPanelVtx[21].v.ob[0] = pauseCtx->infoPanelVtx[23].v.ob[0] = pauseCtx->infoPanelVtx[20].v.ob[0] + D_8082ADD8[gSaveContext.language]; @@ -2675,7 +2710,9 @@ void KaleidoScope_UpdateCursorSize(PlayState* play) { void KaleidoScope_LoadDungeonMap(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; +#if OOT_PAL s32 pad; +#endif DMA_REQUEST_SYNC(interfaceCtx->mapSegment, (uintptr_t)_map_48x85_staticSegmentRomStart + ((R_MAP_TEX_INDEX + 0) * MAP_48x85_TEX_SIZE), @@ -3190,6 +3227,9 @@ void KaleidoScope_Update(PlayState* play) { pauseCtx->state = PAUSE_STATE_CLOSING; WREG(2) = -6240; func_800F64E0(0); +#if OOT_NTSC + AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); +#endif } else if (CHECK_BTN_ALL(input->press.button, BTN_B)) { pauseCtx->nextPageMode = 0; pauseCtx->promptChoice = 0; @@ -3335,6 +3375,9 @@ void KaleidoScope_Update(PlayState* play) { WREG(2) = -6240; YREG(8) = pauseCtx->unk_204; func_800F64E0(0); +#if OOT_NTSC + AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); +#endif } else { Audio_PlaySfxGeneral(NA_SE_SY_PIECE_OF_HEART, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, @@ -3356,6 +3399,9 @@ void KaleidoScope_Update(PlayState* play) { gSaveContext.buttonStatus[3] = BTN_ENABLED; gSaveContext.hudVisibilityMode = HUD_VISIBILITY_NO_CHANGE; Interface_ChangeHudVisibilityMode(HUD_VISIBILITY_ALL); +#if OOT_NTSC + AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); +#endif } break;