diff options
| author | cadmic <cadmic24@gmail.com> | 2024-09-23 17:13:09 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-23 20:13:09 -0400 |
| commit | 52a1c2f9694a45f42397121ab52d62662b82a045 (patch) | |
| tree | 2d5fbc072ab55ee32e45f6b252a4faba6bd51110 /src/code | |
| parent | 56981d5297dcb37c892a1e433684944381062995 (diff) | |
[PAL N64] Miscellaneous changes (#2211)
* [PAL N64] Miscellaneous changes
* Reword comment
Co-authored-by: fig02 <fig02srl@gmail.com>
* glitch -> Glitch
---------
Co-authored-by: fig02 <fig02srl@gmail.com>
Diffstat (limited to 'src/code')
| -rw-r--r-- | src/code/z_play.c | 4 | ||||
| -rw-r--r-- | src/code/z_scene.c | 23 |
2 files changed, 19 insertions, 8 deletions
diff --git a/src/code/z_play.c b/src/code/z_play.c index 99bb02468..dc61dd25f 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -176,8 +176,10 @@ void Play_SetupTransition(PlayState* this, s32 transitionType) { break; default: -#if PLATFORM_N64 +#if OOT_VERSION < PAL_1_1 HUNGUP_AND_CRASH("../z_play.c", 2269); +#elif OOT_VERSION < GC_JP + HUNGUP_AND_CRASH("../z_play.c", 2272); #elif OOT_VERSION < GC_EU_MQ_DBG HUNGUP_AND_CRASH("../z_play.c", 2287); #elif OOT_VERSION < GC_JP_CE diff --git a/src/code/z_scene.c b/src/code/z_scene.c index f72c06cad..44ad2f9bb 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -45,6 +45,15 @@ s32 Object_SpawnPersistent(ObjectContext* objectCtx, s16 objectId) { return objectCtx->numEntries - 1; } +// PAL N64 versions reduce the size of object space by 4 KiB in order to give some space back to +// the Zelda arena, which can help prevent an issue where actors fail to spawn in specific areas +// (sometimes referred to as the "Hyrule Field Glitch" although it can happen in more places than Hyrule Field). +#if !OOT_PAL_N64 +#define OBJECT_SPACE_ADJUSTMENT 0 +#else +#define OBJECT_SPACE_ADJUSTMENT (4 * 1024) +#endif + void Object_InitContext(PlayState* play, ObjectContext* objectCtx) { PlayState* play2 = play; s32 pad; @@ -52,21 +61,21 @@ void Object_InitContext(PlayState* play, ObjectContext* objectCtx) { s32 i; if (play2->sceneId == SCENE_HYRULE_FIELD) { - spaceSize = 1000 * 1024; + spaceSize = 1000 * 1024 - OBJECT_SPACE_ADJUSTMENT; } else if (play2->sceneId == SCENE_GANON_BOSS) { if (gSaveContext.sceneLayer != 4) { - spaceSize = 1150 * 1024; + spaceSize = 1150 * 1024 - OBJECT_SPACE_ADJUSTMENT; } else { - spaceSize = 1000 * 1024; + spaceSize = 1000 * 1024 - OBJECT_SPACE_ADJUSTMENT; } } else if (play2->sceneId == SCENE_SPIRIT_TEMPLE_BOSS) { - spaceSize = 1050 * 1024; + spaceSize = 1050 * 1024 - OBJECT_SPACE_ADJUSTMENT; } else if (play2->sceneId == SCENE_CHAMBER_OF_THE_SAGES) { - spaceSize = 1050 * 1024; + spaceSize = 1050 * 1024 - OBJECT_SPACE_ADJUSTMENT; } else if (play2->sceneId == SCENE_GANONDORF_BOSS) { - spaceSize = 1050 * 1024; + spaceSize = 1050 * 1024 - OBJECT_SPACE_ADJUSTMENT; } else { - spaceSize = 1000 * 1024; + spaceSize = 1000 * 1024 - OBJECT_SPACE_ADJUSTMENT; } objectCtx->numEntries = objectCtx->numPersistentEntries = 0; |
