summaryrefslogtreecommitdiff
path: root/soh/src/code
diff options
context:
space:
mode:
Diffstat (limited to 'soh/src/code')
-rw-r--r--soh/src/code/main.c5
-rw-r--r--soh/src/code/z_actor.c2
-rw-r--r--soh/src/code/z_kaleido_setup.c2
-rw-r--r--soh/src/code/z_parameter.c158
-rw-r--r--soh/src/code/z_play.c9
-rw-r--r--soh/src/code/z_player_lib.c2
6 files changed, 96 insertions, 82 deletions
diff --git a/soh/src/code/main.c b/soh/src/code/main.c
index b59a825c1..9d52833fd 100644
--- a/soh/src/code/main.c
+++ b/soh/src/code/main.c
@@ -65,8 +65,10 @@ int main(int argc, char** argv)
CrashHandlerRegisterCallback(CrashHandler_PrintSohData);
BootCommands_Init();
+ Heaps_Alloc();
Main(0);
DeinitOTR();
+ Heaps_Free();
return 0;
}
@@ -87,7 +89,6 @@ void Main(void* arg) {
PreNmiBuff_Init(gAppNmiBufferPtr);
Fault_Init();
SysCfb_Init(0);
- Heaps_Alloc();
sysHeap = (uintptr_t)gSystemHeap;
fb = SysCfb_GetFbPtr(0);
gSystemHeapSize = 1024 * 1024 * 4;
@@ -156,6 +157,4 @@ void Main(void* arg) {
osDestroyThread(&sGraphThread);
func_800FBFD8();
osSyncPrintf("mainproc 実行終了\n"); // "End of execution"
-
- Heaps_Free();
}
diff --git a/soh/src/code/z_actor.c b/soh/src/code/z_actor.c
index 1a122cc9b..79a3c8ace 100644
--- a/soh/src/code/z_actor.c
+++ b/soh/src/code/z_actor.c
@@ -2451,7 +2451,7 @@ void func_80030488(PlayState* play) {
void Actor_DisableLens(PlayState* play) {
if (play->actorCtx.lensActive) {
play->actorCtx.lensActive = false;
- func_800876C8(play);
+ Magic_Reset(play);
}
}
diff --git a/soh/src/code/z_kaleido_setup.c b/soh/src/code/z_kaleido_setup.c
index e9f097a45..77cc43e99 100644
--- a/soh/src/code/z_kaleido_setup.c
+++ b/soh/src/code/z_kaleido_setup.c
@@ -15,7 +15,7 @@ void KaleidoSetup_Update(PlayState* play) {
if (pauseCtx->state == 0 && pauseCtx->debugState == 0 && play->gameOverCtx.state == GAMEOVER_INACTIVE &&
play->sceneLoadFlag == 0 && play->transitionMode == 0 && gSaveContext.cutsceneIndex < 0xFFF0 &&
gSaveContext.nextCutsceneIndex < 0xFFF0 && !Play_InCsMode(play) &&
- play->shootingGalleryStatus <= 1 && gSaveContext.magicState != 8 && gSaveContext.magicState != 9 &&
+ play->shootingGalleryStatus <= 1 && gSaveContext.magicState != MAGIC_STATE_STEP_CAPACITY && gSaveContext.magicState != MAGIC_STATE_FILL &&
(play->sceneNum != SCENE_BOMBCHU_BOWLING_ALLEY || !Flags_GetSwitch(play, 0x38))) {
u8 easyPauseBufferEnabled = CVarGetInteger("gCheatEasyPauseBufferEnabled", 0);
diff --git a/soh/src/code/z_parameter.c b/soh/src/code/z_parameter.c
index 75c85e3e4..c41d1c188 100644
--- a/soh/src/code/z_parameter.c
+++ b/soh/src/code/z_parameter.c
@@ -2196,14 +2196,14 @@ u8 Item_Give(PlayState* play, u8 item) {
}
return Return_Item(item, MOD_NONE, item);
} else if (item == ITEM_MAGIC_SMALL) {
- if (gSaveContext.magicState != 10) {
+ if (gSaveContext.magicState != MAGIC_STATE_ADD) {
if (play != NULL) {
Magic_Fill(play);
}
}
if (play != NULL) {
- func_80087708(play, 12, 5);
+ Magic_RequestChange(play, 12, MAGIC_ADD);
}
if (!Flags_GetInfTable(INFTABLE_198)) {
@@ -2213,13 +2213,13 @@ u8 Item_Give(PlayState* play, u8 item) {
return Return_Item(item, MOD_NONE, item);
} else if (item == ITEM_MAGIC_LARGE) {
- if (gSaveContext.magicState != 10) {
+ if (gSaveContext.magicState != MAGIC_STATE_ADD) {
if (play != NULL) {
Magic_Fill(play);
}
}
if (play != NULL) {
- func_80087708(play, 24, 5);
+ Magic_RequestChange(play, 24, MAGIC_ADD);
}
if (!Flags_GetInfTable(INFTABLE_198)) {
@@ -2328,7 +2328,7 @@ u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
slot = SLOT(item);
if (item == RG_MAGIC_SINGLE) {
gSaveContext.isMagicAcquired = true;
- gSaveContext.magicFillTarget = 0x30;
+ gSaveContext.magicFillTarget = MAGIC_NORMAL_METER;
Magic_Fill(play);
return Return_Item_Entry(giEntry, RG_NONE);
} else if (item == RG_MAGIC_DOUBLE) {
@@ -2336,7 +2336,7 @@ u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
gSaveContext.isMagicAcquired = true;
}
gSaveContext.isDoubleMagicAcquired = true;
- gSaveContext.magicFillTarget = 0x60;
+ gSaveContext.magicFillTarget = MAGIC_DOUBLE_METER;
gSaveContext.magicLevel = 0;
Magic_Fill(play);
return Return_Item_Entry(giEntry, RG_NONE);
@@ -2782,6 +2782,13 @@ s32 Inventory_HasSpecificBottle(u8 bottleItem) {
}
}
+void byteSwapInventory() {
+ gSaveContext.inventory.equipment = BE16SWAP(gSaveContext.inventory.equipment);
+ gSaveContext.inventory.upgrades = BE32SWAP(gSaveContext.inventory.upgrades);
+ gSaveContext.inventory.questItems = BE32SWAP(gSaveContext.inventory.questItems);
+ gSaveContext.inventory.gsTokens = BE16SWAP(gSaveContext.inventory.gsTokens);
+}
+
void Inventory_UpdateBottleItem(PlayState* play, u8 item, u8 button) {
osSyncPrintf("item_no=%x, c_no=%x, Pt=%x Item_Register=%x\n", item, button,
gSaveContext.equips.cButtonSlots[button - 1],
@@ -2793,7 +2800,14 @@ void Inventory_UpdateBottleItem(PlayState* play, u8 item, u8 button) {
item = ITEM_MILK_HALF;
}
- gSaveContext.inventory.items[gSaveContext.equips.cButtonSlots[button - 1]] = item;
+ if (CVarGetInteger("gRestoreRBAValues",0)) {
+ byteSwapInventory();
+ gSaveContext.inventory.items[gSaveContext.equips.cButtonSlots[button - 1]] = item;
+ byteSwapInventory();
+ } else {
+ gSaveContext.inventory.items[gSaveContext.equips.cButtonSlots[button - 1]] = item;
+ }
+
gSaveContext.equips.buttonItems[button] = item;
Interface_LoadItemIcon1(play, button);
@@ -3126,96 +3140,96 @@ void Inventory_ChangeAmmo(s16 item, s16 ammoChange) {
void Magic_Fill(PlayState* play) {
if (gSaveContext.isMagicAcquired) {
gSaveContext.prevMagicState = gSaveContext.magicState;
- gSaveContext.magicFillTarget = (gSaveContext.isDoubleMagicAcquired + 1) * 0x30;
- gSaveContext.magicState = 9;
+ gSaveContext.magicFillTarget = (gSaveContext.isDoubleMagicAcquired + 1) * MAGIC_NORMAL_METER;
+ gSaveContext.magicState = MAGIC_STATE_FILL;
}
}
-void func_800876C8(PlayState* play) {
- if ((gSaveContext.magicState != 8) && (gSaveContext.magicState != 9)) {
- if (gSaveContext.magicState == 10) {
+void Magic_Reset(PlayState* play) {
+ if ((gSaveContext.magicState != MAGIC_STATE_STEP_CAPACITY) && (gSaveContext.magicState != MAGIC_STATE_FILL)) {
+ if (gSaveContext.magicState == MAGIC_STATE_ADD) {
gSaveContext.prevMagicState = gSaveContext.magicState;
}
- gSaveContext.magicState = 5;
+ gSaveContext.magicState = MAGIC_STATE_RESET;
}
}
-s32 func_80087708(PlayState* play, s16 arg1, s16 arg2) {
+s32 Magic_RequestChange(PlayState* play, s16 amount, s16 type) {
if (!gSaveContext.isMagicAcquired) {
- return 0;
+ return false;
}
- if ((arg2 != 5) && (gSaveContext.magic - arg1) < 0) {
+ if ((type != 5) && (gSaveContext.magic - amount) < 0) {
if (gSaveContext.magicCapacity != 0) {
Audio_PlaySoundGeneral(NA_SE_SY_ERROR, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
}
- return 0;
+ return false;
}
- switch (arg2) {
- case 0:
- case 2:
- if ((gSaveContext.magicState == 0) || (gSaveContext.magicState == 7)) {
- if (gSaveContext.magicState == 7) {
+ switch (type) {
+ case MAGIC_CONSUME_NOW:
+ case MAGIC_CONSUME_NOW_ALT:
+ if ((gSaveContext.magicState == MAGIC_STATE_IDLE) || (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS)) {
+ if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) {
play->actorCtx.lensActive = false;
}
- gSaveContext.magicTarget = gSaveContext.magic - arg1;
- gSaveContext.magicState = 1;
+ gSaveContext.magicTarget = gSaveContext.magic - amount;
+ gSaveContext.magicState = MAGIC_STATE_CONSUME_SETUP;
return 1;
} else {
Audio_PlaySoundGeneral(NA_SE_SY_ERROR, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
- return 0;
+ return false;
}
- case 1:
- if ((gSaveContext.magicState == 0) || (gSaveContext.magicState == 7)) {
- if (gSaveContext.magicState == 7) {
+ case MAGIC_CONSUME_WAIT_NO_PREVIEW:
+ if ((gSaveContext.magicState == MAGIC_STATE_IDLE) || (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS)) {
+ if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) {
play->actorCtx.lensActive = false;
}
- gSaveContext.magicTarget = gSaveContext.magic - arg1;
- gSaveContext.magicState = 6;
- return 1;
+ gSaveContext.magicTarget = gSaveContext.magic - amount;
+ gSaveContext.magicState = MAGIC_STATE_METER_FLASH_3;
+ return true;
} else {
Audio_PlaySoundGeneral(NA_SE_SY_ERROR, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
- return 0;
+ return false;
}
- case 3:
- if (gSaveContext.magicState == 0) {
+ case MAGIC_CONSUME_LENS:
+ if (gSaveContext.magicState == MAGIC_STATE_IDLE) {
if (gSaveContext.magic != 0) {
play->interfaceCtx.unk_230 = 80;
- gSaveContext.magicState = 7;
- return 1;
+ gSaveContext.magicState = MAGIC_STATE_CONSUME_LENS;
+ return true;
} else {
- return 0;
+ return false;
}
} else {
- if (gSaveContext.magicState == 7) {
- return 1;
+ if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) {
+ return true;
} else {
- return 0;
+ return false;
}
}
- case 4:
- if ((gSaveContext.magicState == 0) || (gSaveContext.magicState == 7)) {
- if (gSaveContext.magicState == 7) {
+ case MAGIC_CONSUME_WAIT_PREVIEW:
+ if ((gSaveContext.magicState == MAGIC_STATE_IDLE) || (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS)) {
+ if (gSaveContext.magicState == MAGIC_STATE_CONSUME_LENS) {
play->actorCtx.lensActive = false;
}
- gSaveContext.magicTarget = gSaveContext.magic - arg1;
- gSaveContext.magicState = 4;
- return 1;
+ gSaveContext.magicTarget = gSaveContext.magic - amount;
+ gSaveContext.magicState = MAGIC_STATE_METER_FLASH_2;
+ return true;
} else {
Audio_PlaySoundGeneral(NA_SE_SY_ERROR, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
- return 0;
+ return false;
}
- case 5:
+ case MAGIC_ADD:
if (gSaveContext.magicCapacity >= gSaveContext.magic) {
- gSaveContext.magicTarget = gSaveContext.magic + arg1;
+ gSaveContext.magicTarget = gSaveContext.magic + amount;
if (gSaveContext.magicTarget >= gSaveContext.magicCapacity) {
gSaveContext.magicTarget = gSaveContext.magicCapacity;
}
- gSaveContext.magicState = 10;
- return 1;
+ gSaveContext.magicState = MAGIC_STATE_ADD;
+ return true;
}
break;
}
@@ -3264,8 +3278,8 @@ void Interface_UpdateMagicBar(PlayState* play) {
s16 temp;
switch (gSaveContext.magicState) {
- case 8:
- temp = gSaveContext.magicLevel * 0x30;
+ case MAGIC_STATE_STEP_CAPACITY:
+ temp = gSaveContext.magicLevel * MAGIC_NORMAL_METER;
if (gSaveContext.magicCapacity != temp) {
if (gSaveContext.magicCapacity < temp) {
gSaveContext.magicCapacity += 8;
@@ -3279,11 +3293,11 @@ void Interface_UpdateMagicBar(PlayState* play) {
}
}
} else {
- gSaveContext.magicState = 9;
+ gSaveContext.magicState = MAGIC_STATE_FILL;
}
break;
- case 9:
+ case MAGIC_STATE_FILL:
gSaveContext.magic += 4;
if (gSaveContext.gameMode == 0 && gSaveContext.sceneSetupIndex < 4) {
@@ -3300,32 +3314,32 @@ void Interface_UpdateMagicBar(PlayState* play) {
}
break;
- case 1:
+ case MAGIC_STATE_CONSUME_SETUP:
sMagicBorderRatio = 2;
- gSaveContext.magicState = 2;
+ gSaveContext.magicState = MAGIC_STATE_CONSUME;
break;
- case 2:
+ case MAGIC_STATE_CONSUME:
gSaveContext.magic -= 2;
if (gSaveContext.magic <= 0) {
gSaveContext.magic = 0;
- gSaveContext.magicState = 3;
+ gSaveContext.magicState = MAGIC_STATE_METER_FLASH_1;
if (CVarGetInteger("gCosmetics.Consumable_MagicBorder.Changed", 0)) {
sMagicBorder = CVarGetColor24("gCosmetics.Consumable_MagicBorder.Value", sMagicBorder_ori);
} else {
sMagicBorder = sMagicBorder_ori;
}
} else if (gSaveContext.magic == gSaveContext.magicTarget) {
- gSaveContext.magicState = 3;
+ gSaveContext.magicState = MAGIC_STATE_METER_FLASH_1;
if (CVarGetInteger("gCosmetics.Consumable_MagicBorder.Changed", 0)) {
sMagicBorder = CVarGetColor24("gCosmetics.Consumable_MagicBorder.Value", sMagicBorder_ori);
} else {
sMagicBorder = sMagicBorder_ori;
}
}
- case 3:
- case 4:
- case 6:
+ case MAGIC_STATE_METER_FLASH_1:
+ case MAGIC_STATE_METER_FLASH_2:
+ case MAGIC_STATE_METER_FLASH_3:
temp = sMagicBorderIndexes[sMagicBorderStep];
borderChangeR = ABS(sMagicBorder.r - sMagicBorderColors[temp][0]) / sMagicBorderRatio;
borderChangeG = ABS(sMagicBorder.g - sMagicBorderColors[temp][1]) / sMagicBorderRatio;
@@ -3362,16 +3376,16 @@ void Interface_UpdateMagicBar(PlayState* play) {
}
break;
- case 5:
+ case MAGIC_STATE_RESET:
if (CVarGetInteger("gCosmetics.Consumable_MagicBorder.Changed", 0)) {
sMagicBorder = CVarGetColor24("gCosmetics.Consumable_MagicBorder.Value", sMagicBorder_ori);
} else {
sMagicBorder = sMagicBorder_ori;
}
- gSaveContext.magicState = 0;
+ gSaveContext.magicState = MAGIC_STATE_IDLE;
break;
- case 7:
+ case MAGIC_STATE_CONSUME_LENS:
if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugState == 0) &&
(msgCtx->msgMode == MSGMODE_NONE) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) &&
(play->sceneLoadFlag == 0) && (play->transitionMode == 0) && !Play_InCsMode(play)) {
@@ -3388,7 +3402,7 @@ void Interface_UpdateMagicBar(PlayState* play) {
play->actorCtx.lensActive = false;
Audio_PlaySoundGeneral(NA_SE_SY_GLASSMODE_OFF, &D_801333D4, 4, &D_801333E0, &D_801333E0,
&D_801333E8);
- gSaveContext.magicState = 0;
+ gSaveContext.magicState = MAGIC_STATE_IDLE;
if (CVarGetInteger("gCosmetics.Consumable_MagicBorder.Changed", 0)) {
sMagicBorder = CVarGetColor24("gCosmetics.Consumable_MagicBorder.Value", sMagicBorder_ori);
} else {
@@ -3440,7 +3454,7 @@ void Interface_UpdateMagicBar(PlayState* play) {
}
break;
- case 10:
+ case MAGIC_STATE_ADD:
gSaveContext.magic += 4;
Audio_PlaySoundGeneral(NA_SE_SY_GAUGE_UP - SFX_FLAG, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
if (gSaveContext.magic >= gSaveContext.magicTarget) {
@@ -3451,7 +3465,7 @@ void Interface_UpdateMagicBar(PlayState* play) {
break;
default:
- gSaveContext.magicState = 0;
+ gSaveContext.magicState = MAGIC_STATE_IDLE;
break;
}
}
@@ -3584,7 +3598,7 @@ void Interface_DrawMagicBar(PlayState* play) {
ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, PRIMITIVE);
gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255);
- if (gSaveContext.magicState == 4) {
+ if (gSaveContext.magicState == MAGIC_STATE_METER_FLASH_2) {
// Yellow part of the bar indicating the amount of magic to be subtracted
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, magicbar_yellow.r, magicbar_yellow.g, magicbar_yellow.b, interfaceCtx->magicAlpha);
@@ -5231,7 +5245,7 @@ void Interface_Draw(PlayState* play) {
Interface_DrawLineupTick(play);
}
- if (fullUi || gSaveContext.magicState > 0) {
+ if (fullUi || gSaveContext.magicState > MAGIC_STATE_IDLE) {
Interface_DrawMagicBar(play);
}
@@ -6527,7 +6541,7 @@ void Interface_Update(PlayState* play) {
((play->csCtx.state == CS_STATE_IDLE) || !Player_InCsMode(play))) {
if ((gSaveContext.isMagicAcquired != 0) && (gSaveContext.magicLevel == 0)) {
gSaveContext.magicLevel = gSaveContext.isDoubleMagicAcquired + 1;
- gSaveContext.magicState = 8;
+ gSaveContext.magicState = MAGIC_STATE_STEP_CAPACITY;
osSyncPrintf(VT_FGCOL(YELLOW));
osSyncPrintf("魔法スター─────ト!!!!!!!!!\n"); // "Magic Start!!!!!!!!!"
osSyncPrintf("MAGIC_MAX=%d\n", gSaveContext.magicLevel);
diff --git a/soh/src/code/z_play.c b/soh/src/code/z_play.c
index fb4628834..817c90ecf 100644
--- a/soh/src/code/z_play.c
+++ b/soh/src/code/z_play.c
@@ -9,6 +9,7 @@
#include "soh/Enhancements/game-interactor/GameInteractor.h"
#include "soh/Enhancements/randomizer/randomizer_entrance.h"
#include <overlays/actors/ovl_En_Niw/z_en_niw.h>
+#include <overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h>
#include "soh/Enhancements/enhancementTypes.h"
#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
@@ -545,7 +546,7 @@ void Play_Init(GameState* thisx) {
if (gSaveContext.gameMode != 0 || gSaveContext.cutsceneIndex >= 0xFFF0) {
gSaveContext.nayrusLoveTimer = 0;
- func_800876C8(play);
+ Magic_Reset(play);
gSaveContext.sceneSetupIndex = (gSaveContext.cutsceneIndex & 0xF) + 4;
} else if (!LINK_IS_ADULT && IS_DAY) {
gSaveContext.sceneSetupIndex = 0;
@@ -654,12 +655,12 @@ void Play_Init(GameState* thisx) {
Fault_AddClient(&D_801614B8, ZeldaArena_Display, NULL, NULL);
// In order to keep bunny hood equipped on first load, we need to pre-set the age reqs for the item and slot
if ((CVarGetInteger("gMMBunnyHood", BUNNY_HOOD_VANILLA) != BUNNY_HOOD_VANILLA && CVarGetInteger("gAdultBunnyHood", 0)) || CVarGetInteger("gTimelessEquipment", 0)) {
- gItemAgeReqs[ITEM_MASK_BUNNY] = 9;
+ gItemAgeReqs[ITEM_MASK_BUNNY] = AGE_REQ_NONE;
if(INV_CONTENT(ITEM_TRADE_CHILD) == ITEM_MASK_BUNNY)
- gSlotAgeReqs[SLOT_TRADE_CHILD] = 9;
+ gSlotAgeReqs[SLOT_TRADE_CHILD] = AGE_REQ_NONE;
}
else {
- gItemAgeReqs[ITEM_MASK_BUNNY] = gSlotAgeReqs[SLOT_TRADE_CHILD] = 1;
+ gItemAgeReqs[ITEM_MASK_BUNNY] = gSlotAgeReqs[SLOT_TRADE_CHILD] = AGE_REQ_CHILD;
}
func_800304DC(play, &play->actorCtx, play->linkActorEntry);
diff --git a/soh/src/code/z_player_lib.c b/soh/src/code/z_player_lib.c
index 32a3e6e48..3b005bbbf 100644
--- a/soh/src/code/z_player_lib.c
+++ b/soh/src/code/z_player_lib.c
@@ -342,7 +342,7 @@ uint8_t Player_IsCustomLinkModel() {
s32 Player_InBlockingCsMode(PlayState* play, Player* this) {
return (this->stateFlags1 & 0x20000080) || (this->csMode != 0) || (play->sceneLoadFlag == 0x14) ||
(this->stateFlags1 & 1) || (this->stateFlags3 & 0x80) ||
- ((gSaveContext.magicState != 0) && (Player_ActionToMagicSpell(this, this->itemAction) >= 0));
+ ((gSaveContext.magicState != MAGIC_STATE_IDLE) && (Player_ActionToMagicSpell(this, this->itemAction) >= 0));
}
s32 Player_InCsMode(PlayState* play) {