mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-11-22 01:12:19 -05:00
Merges origin/develop into LocationTracker to resolve conflict with randomizer_check_objects.cpp
This commit is contained in:
commit
08a487f35e
32
.github/workflows/pr-artifacts.yml
vendored
32
.github/workflows/pr-artifacts.yml
vendored
@ -11,7 +11,31 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.event.workflow_run.event == 'pull_request' }}
|
||||
steps:
|
||||
- id: 'get-info'
|
||||
- id: 'pr-number'
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
result-encoding: string
|
||||
script: |
|
||||
const {owner, repo} = context.repo;
|
||||
const pullHeadSHA = '${{github.event.workflow_run.head_sha}}';
|
||||
const pullUserId = ${{github.event.sender.id}};
|
||||
const prNumber = await (async () => {
|
||||
const pulls = await github.rest.pulls.list({owner, repo});
|
||||
for await (const {data} of github.paginate.iterator(pulls)) {
|
||||
for (const pull of data) {
|
||||
if (pull.head.sha === pullHeadSHA && pull.user.id === pullUserId) {
|
||||
return pull.number;
|
||||
}
|
||||
}
|
||||
}
|
||||
})();
|
||||
|
||||
if (!prNumber) {
|
||||
return core.error(`No matching pull request found`);
|
||||
}
|
||||
|
||||
return prNumber;
|
||||
- id: 'artifacts-text'
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
result-encoding: string
|
||||
@ -25,13 +49,13 @@ jobs:
|
||||
return allArtifacts.data.artifacts.reduce((acc, item) => {
|
||||
if (item.name === "assets") return acc;
|
||||
acc += `
|
||||
- [${item.name}](${context.payload.repository.html_url}/suites/${context.payload.workflow_run.check_suite_id}/artifacts/${item.id})`;
|
||||
- [${item.name}.zip](https://nightly.link/${context.repo.owner}/${context.repo.repo}/actions/artifacts/${item.id}.zip)`;
|
||||
return acc;
|
||||
}, '### Build Artifacts');
|
||||
- id: 'add-to-pr'
|
||||
uses: garrettjoecox/pr-section@3.1.0
|
||||
with:
|
||||
repo-token: '${{ secrets.GITHUB_TOKEN }}'
|
||||
pr-number: ${{ github.event.workflow_run.pull_requests[0].number }}
|
||||
pr-number: ${{ steps.pr-number.outputs.result }}
|
||||
section-name: 'artifacts'
|
||||
section-value: '${{ steps.get-info.outputs.result }}'
|
||||
section-value: '${{ steps.artifacts-text.outputs.result }}'
|
||||
|
@ -85,6 +85,8 @@ _Note: If you're using Visual Studio Code, the [cpack plugin](https://marketplac
|
||||
# Clone the repo
|
||||
git clone https://github.com/HarbourMasters/Shipwright.git
|
||||
cd Shipwright
|
||||
# Clone the submodule libultraship
|
||||
git submodule update --init
|
||||
# Copy the baserom to the OTRExporter folder
|
||||
cp <path to your ROM> OTRExporter
|
||||
# Generate Ninja project
|
||||
@ -123,6 +125,8 @@ _Note: If you're using Visual Studio Code, the [cpack plugin](https://marketplac
|
||||
# Clone the repo
|
||||
git clone https://github.com/HarbourMasters/Shipwright.git
|
||||
cd ShipWright
|
||||
# Clone the submodule libultraship
|
||||
git submodule update --init
|
||||
# Copy the baserom to the OTRExporter folder
|
||||
cp <path to your ROM> OTRExporter
|
||||
# Generate Ninja project
|
||||
|
@ -7,8 +7,8 @@ set(CMAKE_CXX_STANDARD 20 CACHE STRING "The C++ standard to use")
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version" FORCE)
|
||||
|
||||
project(Ship LANGUAGES C CXX
|
||||
VERSION 5.0.0)
|
||||
set(PROJECT_BUILD_NAME "FLYNN ALFA" CACHE STRING "")
|
||||
VERSION 5.0.1)
|
||||
set(PROJECT_BUILD_NAME "FLYNN BRAVO" CACHE STRING "")
|
||||
set(PROJECT_TEAM "github.com/harbourmasters" CACHE STRING "")
|
||||
|
||||
set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT soh)
|
||||
|
16
soh/include/alignment.h
Normal file
16
soh/include/alignment.h
Normal file
@ -0,0 +1,16 @@
|
||||
#ifndef ALIGNMENT_H
|
||||
#define ALIGNMENT_H
|
||||
|
||||
#define ALIGN8(val) (((val) + 7) & ~7)
|
||||
#define ALIGN16(val) (((val) + 0xF) & ~0xF)
|
||||
#define ALIGN32(val) (((val) + 0x1F) & ~0x1F)
|
||||
#define ALIGN64(val) (((val) + 0x3F) & ~0x3F)
|
||||
#define ALIGN256(val) (((val) + 0xFF) & ~0xFF)
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define ALIGNED8 __attribute__ ((aligned (8)))
|
||||
#else
|
||||
#define ALIGNED8
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1173,42 +1173,42 @@ s16 Quake_Calc(Camera* camera, QuakeCamCalc* camData);
|
||||
Gfx* Gfx_SetFog(Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
|
||||
Gfx* Gfx_SetFogWithSync(Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
|
||||
Gfx* Gfx_SetFog2(Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 near, s32 far);
|
||||
Gfx* Gfx_CallSetupDL(Gfx* gfx, u32 i);
|
||||
Gfx* func_800937C0(Gfx* gfx);
|
||||
Gfx* func_80093808(Gfx* gfx);
|
||||
void func_800938B4(GraphicsContext* gfxCtx);
|
||||
void func_8009398C(GraphicsContext* gfxCtx);
|
||||
void func_80093AD0(GraphicsContext* gfxCtx);
|
||||
void func_80093BA8(GraphicsContext* gfxCtx);
|
||||
void func_80093C14(GraphicsContext* gfxCtx);
|
||||
Gfx* Gfx_SetupDL(Gfx* gfx, u32 i);
|
||||
Gfx* Gfx_SetupDL_57(Gfx* gfx);
|
||||
Gfx* Gfx_SetupDL_52NoCD(Gfx* gfx);
|
||||
void Gfx_SetupDL_57Opa(GraphicsContext* gfxCtx);
|
||||
void Gfx_SetupDL_51Opa(GraphicsContext* gfxCtx);
|
||||
void Gfx_SetupDL_54Opa(GraphicsContext* gfxCtx);
|
||||
void Gfx_SetupDL_26Opa(GraphicsContext* gfxCtx);
|
||||
void Gfx_SetupDL_25Xlu2(GraphicsContext* gfxCtx);
|
||||
void func_80093C80(PlayState* play);
|
||||
void func_80093D18(GraphicsContext* gfxCtx);
|
||||
void func_80093D84(GraphicsContext* gfxCtx);
|
||||
Gfx* func_80093F34(Gfx* gfx);
|
||||
Gfx* func_80093F58(Gfx* gfx);
|
||||
void func_80094044(GraphicsContext* gfxCtx);
|
||||
void func_800940B0(GraphicsContext* gfxCtx);
|
||||
void func_80094140(GraphicsContext* gfxCtx);
|
||||
Gfx* func_8009411C(Gfx* gfx);
|
||||
void func_800942F0(GraphicsContext* gfxCtx);
|
||||
void func_8009435C(GraphicsContext* gfxCtx);
|
||||
void func_800943C8(GraphicsContext* gfxCtx);
|
||||
Gfx* func_800944A0(Gfx* gfx);
|
||||
void func_800944C4(GraphicsContext* gfxCtx);
|
||||
void func_80094520(GraphicsContext* gfxCtx);
|
||||
void func_8009457C(Gfx** gfxp);
|
||||
void func_800945A0(GraphicsContext* gfxCtx);
|
||||
void func_8009460C(GraphicsContext* gfxCtx);
|
||||
void func_80094678(GraphicsContext* gfxCtx);
|
||||
Gfx* func_80094968(Gfx* gfx);
|
||||
Gfx* func_800946E4(Gfx* gfx);
|
||||
void Gfx_SetupDL_25Opa(GraphicsContext* gfxCtx);
|
||||
void Gfx_SetupDL_25Xlu(GraphicsContext* gfxCtx);
|
||||
Gfx* Gfx_SetupDL_64(Gfx* gfx);
|
||||
Gfx* Gfx_SetupDL_34(Gfx* gfx);
|
||||
void Gfx_SetupDL_44Xlu(GraphicsContext* gfxCtx);
|
||||
void Gfx_SetupDL_36Opa(GraphicsContext* gfxCtx);
|
||||
void Gfx_SetupDL_28Opa(GraphicsContext* gfxCtx);
|
||||
Gfx* Gfx_SetupDL_28(Gfx* gfx);
|
||||
void Gfx_SetupDL_38Xlu(GraphicsContext* gfxCtx);
|
||||
void Gfx_SetupDL_4Xlu(GraphicsContext* gfxCtx);
|
||||
void Gfx_SetupDL_37Opa(GraphicsContext* gfxCtx);
|
||||
Gfx* Gfx_SetupDL_39(Gfx* gfx);
|
||||
void Gfx_SetupDL_39Opa(GraphicsContext* gfxCtx);
|
||||
void Gfx_SetupDL_39Overlay(GraphicsContext* gfxCtx);
|
||||
void Gfx_SetupDL_39Ptr(Gfx** gfxp);
|
||||
void Gfx_SetupDL_40Opa(GraphicsContext* gfxCtx);
|
||||
void Gfx_SetupDL_41Opa(GraphicsContext* gfxCtx);
|
||||
void Gfx_SetupDL_47Xlu(GraphicsContext* gfxCtx);
|
||||
Gfx* Gfx_SetupDL_20NoCD(Gfx* gfx);
|
||||
Gfx* Gfx_SetupDL_66(Gfx* gfx);
|
||||
Gfx* func_800947AC(Gfx* gfx);
|
||||
void func_800949A8(GraphicsContext* gfxCtx);
|
||||
void func_80094A14(GraphicsContext* gfxCtx);
|
||||
void func_80094B58(GraphicsContext* gfxCtx);
|
||||
void func_80094BC4(GraphicsContext* gfxCtx);
|
||||
void func_80094C50(GraphicsContext* gfxCtx);
|
||||
void func_80094D28(Gfx** gfxp);
|
||||
void Gfx_SetupDL_42Opa(GraphicsContext* gfxCtx);
|
||||
void Gfx_SetupDL_42Overlay(GraphicsContext* gfxCtx);
|
||||
void Gfx_SetupDL_27Xlu(GraphicsContext* gfxCtx);
|
||||
void Gfx_SetupDL_60NoCDXlu(GraphicsContext* gfxCtx);
|
||||
void Gfx_SetupDL_61Xlu(GraphicsContext* gfxCtx);
|
||||
void Gfx_SetupDL_56Ptr(Gfx** gfxp);
|
||||
Gfx* Gfx_BranchTexScroll(Gfx** gfxp, u32 x, u32 y, s32 width, s32 height);
|
||||
Gfx* func_80094E78(GraphicsContext* gfxCtx, u32 x, u32 y);
|
||||
Gfx* Gfx_TexScroll(GraphicsContext* gfxCtx, u32 x, u32 y, s32 width, s32 height);
|
||||
@ -1217,7 +1217,7 @@ Gfx* Gfx_TwoTexScroll(GraphicsContext* gfxCtx, s32 tile1, u32 x1, u32 y1, s32 wi
|
||||
Gfx* Gfx_TwoTexScrollEnvColor(GraphicsContext* gfxCtx, s32 tile1, u32 x1, u32 y1, s32 width1, s32 height1, s32 tile2,
|
||||
u32 x2, u32 y2, s32 width2, s32 height2, s32 r, s32 g, s32 b, s32 a);
|
||||
Gfx* Gfx_EnvColor(GraphicsContext* gfxCtx, s32 r, s32 g, s32 b, s32 a);
|
||||
void func_80095248(GraphicsContext* gfxCtx, u8 r, u8 g, u8 b);
|
||||
void Gfx_SetupFrame(GraphicsContext* gfxCtx, u8 r, u8 g, u8 b);
|
||||
void func_80095974(GraphicsContext* gfxCtx);
|
||||
void func_80095AA0(PlayState* play, Room* room, Input* arg2, UNK_TYPE arg3);
|
||||
void func_8009638C(Gfx** displayList, void* source, void* tlut, u16 width, u16 height, u8 fmt, u8 siz, u16 mode0,
|
||||
|
@ -3,49 +3,51 @@
|
||||
|
||||
#include <endianness.h>
|
||||
|
||||
// Upstream TODO: Document reasoning for change
|
||||
// #ifndef __GNUC__
|
||||
// #define __attribute__(x)
|
||||
// #endif
|
||||
|
||||
// #ifndef AVOID_UB
|
||||
// #define BAD_RETURN(type) type
|
||||
// #else
|
||||
// #define BAD_RETURN(type) void
|
||||
// #endif
|
||||
|
||||
// #define UNUSED __attribute__((unused))
|
||||
// #define FALLTHROUGH __attribute__((fallthrough))
|
||||
|
||||
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
|
||||
#define ARRAY_COUNTU(arr) (u32)(sizeof(arr) / sizeof(arr[0]))
|
||||
|
||||
#define PHYSICAL_TO_VIRTUAL(addr) (void*)((uintptr_t)(addr) + 0x80000000)
|
||||
#define VIRTUAL_TO_PHYSICAL(addr) (uintptr_t)((u8*)(addr) - 0x80000000)
|
||||
// Upstream TODO: Document reasoning for change
|
||||
//#define SEGMENTED_TO_VIRTUAL(addr) PHYSICAL_TO_VIRTUAL(gSegments[SEGMENT_NUMBER(addr)] + SEGMENT_OFFSET(addr))
|
||||
|
||||
#define SEGMENTED_TO_VIRTUAL(addr) addr
|
||||
|
||||
#define ALIGN16(val) (((val) + 0xF) & ~0xF)
|
||||
#define ALIGN32(val) (((val) + 0x1F) & ~0x1F)
|
||||
#define ALIGN64(val) (((val) + 0x3F) & ~0x3F)
|
||||
#define ALIGN256(val) (((val) + 0xFF) & ~0xFF)
|
||||
|
||||
#define OFFSETOF(structure, member) ((size_t)&(((structure*)0)->member))
|
||||
|
||||
#define SQ(x) ((x)*(x))
|
||||
#define ABS(x) ((x) >= 0 ? (x) : -(x))
|
||||
#define DECR(x) ((x) == 0 ? 0 : --(x))
|
||||
#define CLAMP(x, min, max) ((x) < (min) ? (min) : (x) > (max) ? (max) : (x))
|
||||
#define CLAMP_MAX(x, max) ((x) > (max) ? (max) : (x))
|
||||
#define CLAMP_MIN(x, min) ((x) < (min) ? (min) : (x))
|
||||
#define MEDIAN3(a1, a2, a3) \
|
||||
(((a2) >= (a1)) ? (((a3) >= (a2)) ? (a2) : (((a1) >= (a3)) ? (a1) : (a3))) \
|
||||
: (((a2) >= (a3)) ? (a2) : (((a3) >= (a1)) ? (a1) : (a3))))
|
||||
|
||||
#define RGBA8(r, g, b, a) ((((r) & 0xFF) << 24) | (((g) & 0xFF) << 16) | (((b) & 0xFF) << 8) | (((a) & 0xFF) << 0))
|
||||
|
||||
#define GET_PLAYER(play) ((Player*)(play)->actorCtx.actorLists[ACTORCAT_PLAYER].head)
|
||||
|
||||
#define GET_ACTIVE_CAM(play) ((play)->cameraPtrs[(play)->activeCamera])
|
||||
#define GET_ACTIVE_CAM(play) ((play)->cameraPtrs[(play)->activeCamera]) // Upstream TODO: Camera
|
||||
|
||||
#define LINK_IS_ADULT (gSaveContext.linkAge == 0)
|
||||
#define LINK_IS_CHILD (gSaveContext.linkAge == 1)
|
||||
|
||||
#define CHECK_EQUIPMENT_AGE(i, j) (CVar_GetS32("gTimelessEquipment", 0) || (gEquipAgeReqs[i][j] == 9) || (gEquipAgeReqs[i][j] == ((void)0, gSaveContext.linkAge)))
|
||||
#define CHECK_SLOT_AGE(slotIndex) (CVar_GetS32("gTimelessEquipment", 0) || (gSlotAgeReqs[slotIndex] == 9) || gSlotAgeReqs[slotIndex] == ((void)0, gSaveContext.linkAge))
|
||||
#define CHECK_ITEM_AGE(itemIndex) (CVar_GetS32("gTimelessEquipment", 0) || (gItemAgeReqs[itemIndex] == 9) || (gItemAgeReqs[itemIndex] == gSaveContext.linkAge))
|
||||
#define LINK_IS_ADULT (gSaveContext.linkAge == LINK_AGE_ADULT)
|
||||
#define LINK_IS_CHILD (gSaveContext.linkAge == LINK_AGE_CHILD)
|
||||
|
||||
#define YEARS_CHILD 5
|
||||
#define YEARS_ADULT 17
|
||||
#define LINK_AGE_IN_YEARS (!LINK_IS_ADULT ? YEARS_CHILD : YEARS_ADULT)
|
||||
|
||||
#define CLOCK_TIME(hr, min) ((s32)(((hr) * 60 + (min)) * (f32)0x10000 / (24 * 60) + 0.5f))
|
||||
|
||||
#define IS_DAY (gSaveContext.nightFlag == 0)
|
||||
#define IS_NIGHT (gSaveContext.nightFlag == 1)
|
||||
|
||||
@ -56,7 +58,15 @@
|
||||
|
||||
#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.inventory.equipment)
|
||||
#define OWNED_EQUIP_FLAG(equip, value) (gBitFlags[value] << gEquipShifts[equip])
|
||||
#define OWNED_EQUIP_FLAG_ALT(equip, value) ((1 << (value)) << gEquipShifts[equip])
|
||||
#define CHECK_OWNED_EQUIP(equip, value) (OWNED_EQUIP_FLAG(equip, value) & gSaveContext.inventory.equipment)
|
||||
#define CHECK_OWNED_EQUIP_ALT(equip, value) (gBitFlags[(value) + (equip) * 4] & gSaveContext.inventory.equipment)
|
||||
|
||||
#define SWORD_EQUIP_TO_PLAYER(swordEquip) (swordEquip)
|
||||
#define SHIELD_EQUIP_TO_PLAYER(shieldEquip) (shieldEquip)
|
||||
#define TUNIC_EQUIP_TO_PLAYER(tunicEquip) ((tunicEquip) - 1)
|
||||
#define BOOTS_EQUIP_TO_PLAYER(bootsEquip) ((bootsEquip) - 1)
|
||||
|
||||
#define CUR_UPG_VALUE(upg) ((s32)(gSaveContext.inventory.upgrades & gUpgradeMasks[upg]) >> gUpgradeShifts[upg])
|
||||
#define CAPACITY(upg, value) gUpgradeCapacities[upg][value]
|
||||
@ -72,6 +82,21 @@
|
||||
|
||||
#define HIGH_SCORE(score) (gSaveContext.highScores[score])
|
||||
|
||||
#define GET_EVENTCHKINF(flag) (gSaveContext.eventChkInf[(flag) >> 4] & (1 << ((flag) & 0xF)))
|
||||
#define SET_EVENTCHKINF(flag) (gSaveContext.eventChkInf[(flag) >> 4] |= (1 << ((flag) & 0xF)))
|
||||
#define CLEAR_EVENTCHKINF(flag) (gSaveContext.eventChkInf[(flag) >> 4] &= ~(1 << ((flag) & 0xF)))
|
||||
|
||||
#define GET_ITEMGETINF(flag) (gSaveContext.itemGetInf[(flag) >> 4] & (1 << ((flag) & 0xF)))
|
||||
#define SET_ITEMGETINF(flag) (gSaveContext.itemGetInf[(flag) >> 4] |= (1 << ((flag) & 0xF)))
|
||||
|
||||
#define GET_INFTABLE(flag) (gSaveContext.infTable[(flag) >> 4] & (1 << ((flag) & 0xF)))
|
||||
#define SET_INFTABLE(flag) (gSaveContext.infTable[(flag) >> 4] |= (1 << ((flag) & 0xF)))
|
||||
#define CLEAR_INFTABLE(flag) (gSaveContext.infTable[(flag) >> 4] &= ~(1 << ((flag) & 0xF)))
|
||||
|
||||
#define GET_EVENTINF(flag) (gSaveContext.eventInf[(flag) >> 4] & (1 << ((flag) & 0xF)))
|
||||
#define SET_EVENTINF(flag) (gSaveContext.eventInf[(flag) >> 4] |= (1 << ((flag) & 0xF)))
|
||||
#define CLEAR_EVENTINF(flag) (gSaveContext.eventInf[(flag) >> 4] &= ~(1 << ((flag) & 0xF)))
|
||||
|
||||
#define B_BTN_ITEM ((gSaveContext.buttonStatus[0] == ITEM_NONE) \
|
||||
? ITEM_NONE \
|
||||
: (gSaveContext.equips.buttonItems[0] == ITEM_SWORD_KNIFE) \
|
||||
@ -82,15 +107,13 @@
|
||||
? gSaveContext.equips.buttonItems[(button) + 1] \
|
||||
: ITEM_NONE)
|
||||
|
||||
#define DPAD_ITEM(button) ((gSaveContext.buttonStatus[(button) + 5] != BTN_DISABLED) \
|
||||
? gSaveContext.equips.buttonItems[(button) + 4] \
|
||||
: ITEM_NONE)
|
||||
|
||||
#define CHECK_BTN_ALL(state, combo) (~((state) | ~(combo)) == 0)
|
||||
#define CHECK_BTN_ANY(state, combo) (((state) & (combo)) != 0)
|
||||
|
||||
#define CHECK_FLAG_ALL(flags, mask) (((flags) & (mask)) == (mask))
|
||||
|
||||
// #region SOH [General]
|
||||
// Logging changes
|
||||
#ifndef NDEBUG
|
||||
#define LOG(exp, value, format) \
|
||||
do { \
|
||||
@ -133,30 +156,8 @@
|
||||
#define LOG_THREAD_ID() ((void)0)
|
||||
#define LOG_HUNGUP_THREAD() ((void)0)
|
||||
#endif
|
||||
// #endregion
|
||||
|
||||
#define MATRIX_TOMTX(dest) Matrix_ToMtx(dest, __FILE__, __LINE__)
|
||||
#define MATRIX_NEWMTX(gfxCtx) Matrix_NewMtx(gfxCtx, __FILE__, __LINE__)
|
||||
#define MATRIX_CHECKFLOATS(mf) Matrix_CheckFloats(mf, __FILE__, __LINE__)
|
||||
|
||||
#define ZELDA_ARENA_MALLOC_DEBUG(size) ZeldaArena_MallocDebug(size, __FILE__, __LINE__)
|
||||
#define ZELDA_ARENA_MALLOC_RDEBUG(size) ZeldaArena_MallocRDebug(size, __FILE__, __LINE__)
|
||||
#define ZELDA_ARENA_REALLOC_DEBUG(ptr, newSize) ZeldaArena_ReallocDebug(ptr, newSize, __FILE__, __LINE__)
|
||||
#define ZELDA_ARENA_FREE_DEBUG(ptr) ZeldaArena_FreeDebug(ptr, __FILE__, __LINE__)
|
||||
|
||||
#define SYSTEM_ARENA_MALLOC_DEBUG(size) SystemArena_MallocDebug(size, __FILE__, __LINE__)
|
||||
#define SYSTEM_ARENA_MALLOC_RDEBUG(size) SystemArena_MallocRDebug(size, __FILE__, __LINE__)
|
||||
#define SYSTEM_ARENA_REALLOC_DEBUG(ptr, newSize) SystemArena_ReallocDebug(ptr, newSize, __FILE__, __LINE__)
|
||||
#define SYSTEM_ARENA_FREE_DEBUG(ptr) SystemArena_FreeDebug(ptr, __FILE__, __LINE__)
|
||||
|
||||
#define DEBUG_ARENA_MALLOC_DEBUG(size) DebugArena_MallocDebug(size, __FILE__, __LINE__)
|
||||
#define DEBUG_ARENA_MALLOC_RDEBUG(size) DebugArena_MallocRDebug(size, __FILE__, __LINE__)
|
||||
#define DEBUG_ARENA_REALLOC_DEBUG(ptr, newSize) DebugArena_ReallocDebug(ptr, newSize, __FILE__, __LINE__)
|
||||
#define DEBUG_ARENA_FREE_DEBUG(ptr) DebugArena_FreeDebug(ptr, __FILE__, __LINE__)
|
||||
|
||||
#define GAMESTATE_ALLOC_MC(gameState, size) GameState_Alloc(gameState, size, __FILE__, __LINE__)
|
||||
#define GAMESTATE_MALLOC_DEBUG(gameState, size) GameAlloc_MallocDebug(gameState, size, __FILE__, __LINE__)
|
||||
|
||||
#define BGCHECK_POS_ERROR_CHECK(vec3f) BgCheck_PosErrorCheck(vec3f, __FILE__, __LINE__)
|
||||
|
||||
#define SET_NEXT_GAMESTATE(curState, newInit, newStruct) \
|
||||
do { \
|
||||
@ -180,12 +181,17 @@ extern GraphicsContext* __gfxCtx;
|
||||
#define WORK_DISP __gfxCtx->work.p
|
||||
#define POLY_OPA_DISP __gfxCtx->polyOpa.p
|
||||
#define POLY_XLU_DISP __gfxCtx->polyXlu.p
|
||||
// #region SOH [General]
|
||||
// Upstream TODO: Document reasoning for these only existing in SoH
|
||||
#define WORLD_OVERLAY_DISP __gfxCtx->worldOverlay.p
|
||||
#define POLY_KAL_DISP __gfxCtx->polyKal.p
|
||||
// #endregion
|
||||
#define OVERLAY_DISP __gfxCtx->overlay.p
|
||||
|
||||
// __gfxCtx shouldn't be used directly.
|
||||
// Use the DISP macros defined above when writing to display buffers.
|
||||
// #region SOH [General]
|
||||
// Augmented to provide debug information in debug build and support interpolation
|
||||
#ifndef NDEBUG
|
||||
#define OPEN_DISPS(gfxCtx) \
|
||||
{ \
|
||||
@ -221,6 +227,7 @@ extern GraphicsContext* __gfxCtx;
|
||||
} \
|
||||
(void)0
|
||||
#endif
|
||||
// #endregion
|
||||
|
||||
/**
|
||||
* `x` vertex x
|
||||
@ -237,11 +244,13 @@ extern GraphicsContext* __gfxCtx;
|
||||
|
||||
#define VTX_T(x,y,z,s,t,cr,cg,cb,a) { { x, y, z }, 0, { s, t }, { cr, cg, cb, a } }
|
||||
|
||||
// #region SOH [WiiU]
|
||||
#ifdef __WIIU__
|
||||
#define ASSERT(expression) (void)((!!(expression)) || (_assert(#expression, __FILE__, (unsigned)(__LINE__)), 0))
|
||||
#else
|
||||
#define ASSERT(expression) (void)((!!(expression)) || (__assert(#expression, __FILE__, (unsigned)(__LINE__)), 0))
|
||||
#endif
|
||||
// #endregion
|
||||
|
||||
#define gDPSetTileCustom(pkt, fmt, siz, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \
|
||||
do { \
|
||||
@ -256,14 +265,51 @@ extern GraphicsContext* __gfxCtx;
|
||||
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
|
||||
} while (0)
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define ALIGNED8 __attribute__ ((aligned (8)))
|
||||
#else
|
||||
#define ALIGNED8
|
||||
#endif
|
||||
// #region SOH [General]
|
||||
#define OFFSETOF(structure, member) ((size_t)&(((structure*)0)->member))
|
||||
|
||||
#define MEDIAN3(a1, a2, a3) \
|
||||
(((a2) >= (a1)) ? (((a3) >= (a2)) ? (a2) : (((a1) >= (a3)) ? (a1) : (a3))) \
|
||||
: (((a2) >= (a3)) ? (a2) : (((a3) >= (a1)) ? (a1) : (a3))))
|
||||
|
||||
#define MATRIX_TOMTX(dest) Matrix_ToMtx(dest, __FILE__, __LINE__)
|
||||
#define MATRIX_NEWMTX(gfxCtx) Matrix_NewMtx(gfxCtx, __FILE__, __LINE__)
|
||||
#define MATRIX_CHECKFLOATS(mf) Matrix_CheckFloats(mf, __FILE__, __LINE__)
|
||||
|
||||
#define ZELDA_ARENA_MALLOC_DEBUG(size) ZeldaArena_MallocDebug(size, __FILE__, __LINE__)
|
||||
#define ZELDA_ARENA_MALLOC_RDEBUG(size) ZeldaArena_MallocRDebug(size, __FILE__, __LINE__)
|
||||
#define ZELDA_ARENA_REALLOC_DEBUG(ptr, newSize) ZeldaArena_ReallocDebug(ptr, newSize, __FILE__, __LINE__)
|
||||
#define ZELDA_ARENA_FREE_DEBUG(ptr) ZeldaArena_FreeDebug(ptr, __FILE__, __LINE__)
|
||||
|
||||
#define SYSTEM_ARENA_MALLOC_DEBUG(size) SystemArena_MallocDebug(size, __FILE__, __LINE__)
|
||||
#define SYSTEM_ARENA_MALLOC_RDEBUG(size) SystemArena_MallocRDebug(size, __FILE__, __LINE__)
|
||||
#define SYSTEM_ARENA_REALLOC_DEBUG(ptr, newSize) SystemArena_ReallocDebug(ptr, newSize, __FILE__, __LINE__)
|
||||
#define SYSTEM_ARENA_FREE_DEBUG(ptr) SystemArena_FreeDebug(ptr, __FILE__, __LINE__)
|
||||
|
||||
#define DEBUG_ARENA_MALLOC_DEBUG(size) DebugArena_MallocDebug(size, __FILE__, __LINE__)
|
||||
#define DEBUG_ARENA_MALLOC_RDEBUG(size) DebugArena_MallocRDebug(size, __FILE__, __LINE__)
|
||||
#define DEBUG_ARENA_REALLOC_DEBUG(ptr, newSize) DebugArena_ReallocDebug(ptr, newSize, __FILE__, __LINE__)
|
||||
#define DEBUG_ARENA_FREE_DEBUG(ptr) DebugArena_FreeDebug(ptr, __FILE__, __LINE__)
|
||||
|
||||
#define GAMESTATE_ALLOC_MC(gameState, size) GameState_Alloc(gameState, size, __FILE__, __LINE__)
|
||||
#define GAMESTATE_MALLOC_DEBUG(gameState, size) GameAlloc_MallocDebug(gameState, size, __FILE__, __LINE__)
|
||||
|
||||
#define BGCHECK_POS_ERROR_CHECK(vec3f) BgCheck_PosErrorCheck(vec3f, __FILE__, __LINE__)
|
||||
|
||||
#define SEG_ADDR(seg, addr) (addr | (seg << 24) | 1)
|
||||
// #endregion
|
||||
|
||||
// #region SOH [Enhancements]
|
||||
#define CHECK_EQUIPMENT_AGE(i, j) (CVar_GetS32("gTimelessEquipment", 0) || (gEquipAgeReqs[i][j] == 9) || (gEquipAgeReqs[i][j] == ((void)0, gSaveContext.linkAge)))
|
||||
#define CHECK_SLOT_AGE(slotIndex) (CVar_GetS32("gTimelessEquipment", 0) || (gSlotAgeReqs[slotIndex] == 9) || gSlotAgeReqs[slotIndex] == ((void)0, gSaveContext.linkAge))
|
||||
#define CHECK_ITEM_AGE(itemIndex) (CVar_GetS32("gTimelessEquipment", 0) || (gItemAgeReqs[itemIndex] == 9) || (gItemAgeReqs[itemIndex] == gSaveContext.linkAge))
|
||||
|
||||
#define DPAD_ITEM(button) ((gSaveContext.buttonStatus[(button) + 5] != BTN_DISABLED) \
|
||||
? gSaveContext.equips.buttonItems[(button) + 4] \
|
||||
: ITEM_NONE)
|
||||
// #endregion
|
||||
|
||||
// #region SOH [Randomizer]
|
||||
#define NUM_TRIALS 6
|
||||
#define NUM_SHOP_ITEMS 64
|
||||
#define NUM_SCRUBS 46
|
||||
@ -277,5 +323,6 @@ extern GraphicsContext* __gfxCtx;
|
||||
#define GERUDO_FORTRESS_SMALL_KEY_MAX 4
|
||||
#define GANONS_CASTLE_SMALL_KEY_MAX (ResourceMgr_IsSceneMasterQuest(SCENE_GANONTIKA) ? 3 : 2)
|
||||
#define TREASURE_GAME_SMALL_KEY_MAX 6
|
||||
// #endregion
|
||||
|
||||
#endif
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "z64skin.h"
|
||||
#include "z64transition.h"
|
||||
#include "z64interface.h"
|
||||
#include "alignment.h"
|
||||
#include "sequence.h"
|
||||
#include "sfx.h"
|
||||
#include <color.h>
|
||||
@ -212,6 +213,81 @@ typedef struct {
|
||||
/* 0x0124 */ s32 unk_124;
|
||||
} View; // size = 0x128
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ SETUPDL_0,
|
||||
/* 1 */ SETUPDL_1,
|
||||
/* 2 */ SETUPDL_2,
|
||||
/* 3 */ SETUPDL_3,
|
||||
/* 4 */ SETUPDL_4,
|
||||
/* 5 */ SETUPDL_5,
|
||||
/* 6 */ SETUPDL_6,
|
||||
/* 7 */ SETUPDL_7,
|
||||
/* 8 */ SETUPDL_8,
|
||||
/* 9 */ SETUPDL_9,
|
||||
/* 10 */ SETUPDL_10,
|
||||
/* 11 */ SETUPDL_11,
|
||||
/* 12 */ SETUPDL_12,
|
||||
/* 13 */ SETUPDL_13,
|
||||
/* 14 */ SETUPDL_14,
|
||||
/* 15 */ SETUPDL_15,
|
||||
/* 16 */ SETUPDL_16,
|
||||
/* 17 */ SETUPDL_17,
|
||||
/* 18 */ SETUPDL_18,
|
||||
/* 19 */ SETUPDL_19,
|
||||
/* 20 */ SETUPDL_20,
|
||||
/* 21 */ SETUPDL_21,
|
||||
/* 22 */ SETUPDL_22,
|
||||
/* 23 */ SETUPDL_23,
|
||||
/* 24 */ SETUPDL_24,
|
||||
/* 25 */ SETUPDL_25,
|
||||
/* 26 */ SETUPDL_26,
|
||||
/* 27 */ SETUPDL_27,
|
||||
/* 28 */ SETUPDL_28,
|
||||
/* 29 */ SETUPDL_29,
|
||||
/* 30 */ SETUPDL_30,
|
||||
/* 31 */ SETUPDL_31,
|
||||
/* 32 */ SETUPDL_32,
|
||||
/* 33 */ SETUPDL_33,
|
||||
/* 34 */ SETUPDL_34,
|
||||
/* 35 */ SETUPDL_35,
|
||||
/* 36 */ SETUPDL_36,
|
||||
/* 37 */ SETUPDL_37,
|
||||
/* 38 */ SETUPDL_38,
|
||||
/* 39 */ SETUPDL_39,
|
||||
/* 40 */ SETUPDL_40,
|
||||
/* 41 */ SETUPDL_41,
|
||||
/* 42 */ SETUPDL_42,
|
||||
/* 43 */ SETUPDL_43,
|
||||
/* 44 */ SETUPDL_44,
|
||||
/* 45 */ SETUPDL_45,
|
||||
/* 46 */ SETUPDL_46,
|
||||
/* 47 */ SETUPDL_47,
|
||||
/* 48 */ SETUPDL_48,
|
||||
/* 49 */ SETUPDL_49,
|
||||
/* 50 */ SETUPDL_50,
|
||||
/* 51 */ SETUPDL_51,
|
||||
/* 52 */ SETUPDL_52,
|
||||
/* 53 */ SETUPDL_53,
|
||||
/* 54 */ SETUPDL_54,
|
||||
/* 55 */ SETUPDL_55,
|
||||
/* 56 */ SETUPDL_56,
|
||||
/* 57 */ SETUPDL_57,
|
||||
/* 58 */ SETUPDL_58,
|
||||
/* 59 */ SETUPDL_59,
|
||||
/* 60 */ SETUPDL_60,
|
||||
/* 61 */ SETUPDL_61,
|
||||
/* 62 */ SETUPDL_62,
|
||||
/* 63 */ SETUPDL_63,
|
||||
/* 64 */ SETUPDL_64,
|
||||
/* 65 */ SETUPDL_65,
|
||||
/* 66 */ SETUPDL_66,
|
||||
/* 67 */ SETUPDL_67,
|
||||
/* 68 */ SETUPDL_68,
|
||||
/* 69 */ SETUPDL_69,
|
||||
/* 70 */ SETUPDL_70,
|
||||
/* 71 */ SETUPDL_MAX
|
||||
} SetupDL;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 seqId;
|
||||
/* 0x01 */ u8 natureAmbienceId;
|
||||
|
@ -2,6 +2,7 @@
|
||||
#define Z64PLAYER_H
|
||||
|
||||
#include "z64actor.h"
|
||||
#include "alignment.h"
|
||||
#include "soh/Enhancements/item-tables/ItemTableTypes.h"
|
||||
|
||||
struct Player;
|
||||
@ -64,84 +65,85 @@ typedef enum {
|
||||
} PlayerMask;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ PLAYER_AP_NONE,
|
||||
/* 0x01 */ PLAYER_AP_LAST_USED,
|
||||
/* 0x02 */ PLAYER_AP_FISHING_POLE,
|
||||
/* 0x03 */ PLAYER_AP_SWORD_MASTER,
|
||||
/* 0x04 */ PLAYER_AP_SWORD_KOKIRI,
|
||||
/* 0x05 */ PLAYER_AP_SWORD_BGS,
|
||||
/* 0x06 */ PLAYER_AP_STICK,
|
||||
/* 0x07 */ PLAYER_AP_HAMMER,
|
||||
/* 0x08 */ PLAYER_AP_BOW,
|
||||
/* 0x09 */ PLAYER_AP_BOW_FIRE,
|
||||
/* 0x0A */ PLAYER_AP_BOW_ICE,
|
||||
/* 0x0B */ PLAYER_AP_BOW_LIGHT,
|
||||
/* 0x0C */ PLAYER_AP_BOW_0C,
|
||||
/* 0x0D */ PLAYER_AP_BOW_0D,
|
||||
/* 0x0E */ PLAYER_AP_BOW_0E,
|
||||
/* 0x0F */ PLAYER_AP_SLINGSHOT,
|
||||
/* 0x10 */ PLAYER_AP_HOOKSHOT,
|
||||
/* 0x11 */ PLAYER_AP_LONGSHOT,
|
||||
/* 0x12 */ PLAYER_AP_BOMB,
|
||||
/* 0x13 */ PLAYER_AP_BOMBCHU,
|
||||
/* 0x14 */ PLAYER_AP_BOOMERANG,
|
||||
/* 0x15 */ PLAYER_AP_MAGIC_SPELL_15,
|
||||
/* 0x16 */ PLAYER_AP_MAGIC_SPELL_16,
|
||||
/* 0x17 */ PLAYER_AP_MAGIC_SPELL_17,
|
||||
/* 0x18 */ PLAYER_AP_FARORES_WIND,
|
||||
/* 0x19 */ PLAYER_AP_NAYRUS_LOVE,
|
||||
/* 0x1A */ PLAYER_AP_DINS_FIRE,
|
||||
/* 0x1B */ PLAYER_AP_NUT,
|
||||
/* 0x1C */ PLAYER_AP_OCARINA_FAIRY,
|
||||
/* 0x1D */ PLAYER_AP_OCARINA_TIME,
|
||||
/* 0x1E */ PLAYER_AP_BOTTLE,
|
||||
/* 0x1F */ PLAYER_AP_BOTTLE_FISH,
|
||||
/* 0x20 */ PLAYER_AP_BOTTLE_FIRE,
|
||||
/* 0x21 */ PLAYER_AP_BOTTLE_BUG,
|
||||
/* 0x22 */ PLAYER_AP_BOTTLE_POE,
|
||||
/* 0x23 */ PLAYER_AP_BOTTLE_BIG_POE,
|
||||
/* 0x24 */ PLAYER_AP_BOTTLE_LETTER,
|
||||
/* 0x25 */ PLAYER_AP_BOTTLE_POTION_RED,
|
||||
/* 0x26 */ PLAYER_AP_BOTTLE_POTION_BLUE,
|
||||
/* 0x27 */ PLAYER_AP_BOTTLE_POTION_GREEN,
|
||||
/* 0x28 */ PLAYER_AP_BOTTLE_MILK,
|
||||
/* 0x29 */ PLAYER_AP_BOTTLE_MILK_HALF,
|
||||
/* 0x2A */ PLAYER_AP_BOTTLE_FAIRY,
|
||||
/* 0x2B */ PLAYER_AP_LETTER_ZELDA,
|
||||
/* 0x2C */ PLAYER_AP_WEIRD_EGG,
|
||||
/* 0x2D */ PLAYER_AP_CHICKEN,
|
||||
/* 0x2E */ PLAYER_AP_BEAN,
|
||||
/* 0x2F */ PLAYER_AP_POCKET_EGG,
|
||||
/* 0x30 */ PLAYER_AP_POCKET_CUCCO,
|
||||
/* 0x31 */ PLAYER_AP_COJIRO,
|
||||
/* 0x32 */ PLAYER_AP_ODD_MUSHROOM,
|
||||
/* 0x33 */ PLAYER_AP_ODD_POTION,
|
||||
/* 0x34 */ PLAYER_AP_SAW,
|
||||
/* 0x35 */ PLAYER_AP_SWORD_BROKEN,
|
||||
/* 0x36 */ PLAYER_AP_PRESCRIPTION,
|
||||
/* 0x37 */ PLAYER_AP_FROG,
|
||||
/* 0x38 */ PLAYER_AP_EYEDROPS,
|
||||
/* 0x39 */ PLAYER_AP_CLAIM_CHECK,
|
||||
/* 0x3A */ PLAYER_AP_MASK_KEATON,
|
||||
/* 0x3B */ PLAYER_AP_MASK_SKULL,
|
||||
/* 0x3C */ PLAYER_AP_MASK_SPOOKY,
|
||||
/* 0x3D */ PLAYER_AP_MASK_BUNNY,
|
||||
/* 0x3E */ PLAYER_AP_MASK_GORON,
|
||||
/* 0x3F */ PLAYER_AP_MASK_ZORA,
|
||||
/* 0x40 */ PLAYER_AP_MASK_GERUDO,
|
||||
/* 0x41 */ PLAYER_AP_MASK_TRUTH,
|
||||
/* 0x42 */ PLAYER_AP_LENS,
|
||||
/* 0x43 */ PLAYER_AP_SHIELD_DEKU,
|
||||
/* 0x44 */ PLAYER_AP_SHIELD_HYLIAN,
|
||||
/* 0x45 */ PLAYER_AP_SHIELD_MIRROR,
|
||||
/* 0x46 */ PLAYER_AP_TUNIC_KOKIRI,
|
||||
/* 0x47 */ PLAYER_AP_TUNIC_GORON,
|
||||
/* 0x48 */ PLAYER_AP_TUNIC_ZORA,
|
||||
/* 0x49 */ PLAYER_AP_BOOTS_KOKIRI,
|
||||
/* 0x4A */ PLAYER_AP_BOOTS_IRON,
|
||||
/* 0x4B */ PLAYER_AP_BOOTS_HOVER,
|
||||
/* 0x4C */ PLAYER_AP_MAX
|
||||
} PlayerActionParam;
|
||||
/* 0x00 */ PLAYER_IA_NONE,
|
||||
/* 0x01 */ PLAYER_IA_LAST_USED,
|
||||
/* 0x02 */ PLAYER_IA_FISHING_POLE,
|
||||
/* 0x03 */ PLAYER_IA_SWORD_MASTER,
|
||||
/* 0x04 */ PLAYER_IA_SWORD_KOKIRI,
|
||||
/* 0x05 */ PLAYER_IA_SWORD_BGS,
|
||||
/* 0x06 */ PLAYER_IA_STICK,
|
||||
/* 0x07 */ PLAYER_IA_HAMMER,
|
||||
/* 0x08 */ PLAYER_IA_BOW,
|
||||
/* 0x09 */ PLAYER_IA_BOW_FIRE,
|
||||
/* 0x0A */ PLAYER_IA_BOW_ICE,
|
||||
/* 0x0B */ PLAYER_IA_BOW_LIGHT,
|
||||
/* 0x0C */ PLAYER_IA_BOW_0C,
|
||||
/* 0x0D */ PLAYER_IA_BOW_0D,
|
||||
/* 0x0E */ PLAYER_IA_BOW_0E,
|
||||
/* 0x0F */ PLAYER_IA_SLINGSHOT,
|
||||
/* 0x10 */ PLAYER_IA_HOOKSHOT,
|
||||
/* 0x11 */ PLAYER_IA_LONGSHOT,
|
||||
/* 0x12 */ PLAYER_IA_BOMB,
|
||||
/* 0x13 */ PLAYER_IA_BOMBCHU,
|
||||
/* 0x14 */ PLAYER_IA_BOOMERANG,
|
||||
/* 0x15 */ PLAYER_IA_MAGIC_SPELL_15,
|
||||
/* 0x16 */ PLAYER_IA_MAGIC_SPELL_16,
|
||||
/* 0x17 */ PLAYER_IA_MAGIC_SPELL_17,
|
||||
/* 0x18 */ PLAYER_IA_FARORES_WIND,
|
||||
/* 0x19 */ PLAYER_IA_NAYRUS_LOVE,
|
||||
/* 0x1A */ PLAYER_IA_DINS_FIRE,
|
||||
/* 0x1B */ PLAYER_IA_NUT,
|
||||
/* 0x1C */ PLAYER_IA_OCARINA_FAIRY,
|
||||
/* 0x1D */ PLAYER_IA_OCARINA_TIME,
|
||||
/* 0x1E */ PLAYER_IA_BOTTLE,
|
||||
/* 0x1F */ PLAYER_IA_BOTTLE_FISH,
|
||||
/* 0x20 */ PLAYER_IA_BOTTLE_FIRE,
|
||||
/* 0x21 */ PLAYER_IA_BOTTLE_BUG,
|
||||
/* 0x22 */ PLAYER_IA_BOTTLE_POE,
|
||||
/* 0x23 */ PLAYER_IA_BOTTLE_BIG_POE,
|
||||
/* 0x24 */ PLAYER_IA_BOTTLE_LETTER,
|
||||
/* 0x25 */ PLAYER_IA_BOTTLE_POTION_RED,
|
||||
/* 0x26 */ PLAYER_IA_BOTTLE_POTION_BLUE,
|
||||
/* 0x27 */ PLAYER_IA_BOTTLE_POTION_GREEN,
|
||||
/* 0x28 */ PLAYER_IA_BOTTLE_MILK,
|
||||
/* 0x29 */ PLAYER_IA_BOTTLE_MILK_HALF,
|
||||
/* 0x2A */ PLAYER_IA_BOTTLE_FAIRY,
|
||||
/* 0x2B */ PLAYER_IA_LETTER_ZELDA,
|
||||
/* 0x2C */ PLAYER_IA_WEIRD_EGG,
|
||||
/* 0x2D */ PLAYER_IA_CHICKEN,
|
||||
/* 0x2E */ PLAYER_IA_BEAN,
|
||||
/* 0x2F */ PLAYER_IA_POCKET_EGG,
|
||||
/* 0x30 */ PLAYER_IA_POCKET_CUCCO,
|
||||
/* 0x31 */ PLAYER_IA_COJIRO,
|
||||
/* 0x32 */ PLAYER_IA_ODD_MUSHROOM,
|
||||
/* 0x33 */ PLAYER_IA_ODD_POTION,
|
||||
/* 0x34 */ PLAYER_IA_SAW,
|
||||
/* 0x35 */ PLAYER_IA_SWORD_BROKEN,
|
||||
/* 0x36 */ PLAYER_IA_PRESCRIPTION,
|
||||
/* 0x37 */ PLAYER_IA_FROG,
|
||||
/* 0x38 */ PLAYER_IA_EYEDROPS,
|
||||
/* 0x39 */ PLAYER_IA_CLAIM_CHECK,
|
||||
/* 0x3A */ PLAYER_IA_MASK_KEATON,
|
||||
/* 0x3B */ PLAYER_IA_MASK_SKULL,
|
||||
/* 0x3C */ PLAYER_IA_MASK_SPOOKY,
|
||||
/* 0x3D */ PLAYER_IA_MASK_BUNNY,
|
||||
/* 0x3E */ PLAYER_IA_MASK_GORON,
|
||||
/* 0x3F */ PLAYER_IA_MASK_ZORA,
|
||||
/* 0x40 */ PLAYER_IA_MASK_GERUDO,
|
||||
/* 0x41 */ PLAYER_IA_MASK_TRUTH,
|
||||
/* 0x42 */ PLAYER_IA_LENS,
|
||||
// Upstream TODO: Document why these entries were added
|
||||
/* 0x43 */ PLAYER_IA_SHIELD_DEKU,
|
||||
/* 0x44 */ PLAYER_IA_SHIELD_HYLIAN,
|
||||
/* 0x45 */ PLAYER_IA_SHIELD_MIRROR,
|
||||
/* 0x46 */ PLAYER_IA_TUNIC_KOKIRI,
|
||||
/* 0x47 */ PLAYER_IA_TUNIC_GORON,
|
||||
/* 0x48 */ PLAYER_IA_TUNIC_ZORA,
|
||||
/* 0x49 */ PLAYER_IA_BOOTS_KOKIRI,
|
||||
/* 0x4A */ PLAYER_IA_BOOTS_IRON,
|
||||
/* 0x4B */ PLAYER_IA_BOOTS_HOVER,
|
||||
/* 0x4C */ PLAYER_IA_MAX
|
||||
} PlayerItemAction;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ PLAYER_LIMB_NONE,
|
||||
@ -170,27 +172,59 @@ typedef enum {
|
||||
} PlayerLimb;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ PLAYER_BODYPART_WAIST, // PLAYER_LIMB_WAIST
|
||||
/* 1 */ PLAYER_BODYPART_R_THIGH, // PLAYER_LIMB_R_THIGH
|
||||
/* 2 */ PLAYER_BODYPART_R_SHIN, // PLAYER_LIMB_R_SHIN
|
||||
/* 3 */ PLAYER_BODYPART_R_FOOT, // PLAYER_LIMB_R_FOOT
|
||||
/* 4 */ PLAYER_BODYPART_L_THIGH, // PLAYER_LIMB_L_THIGH
|
||||
/* 5 */ PLAYER_BODYPART_L_SHIN, // PLAYER_LIMB_L_SHIN
|
||||
/* 6 */ PLAYER_BODYPART_L_FOOT, // PLAYER_LIMB_L_FOOT
|
||||
/* 7 */ PLAYER_BODYPART_HEAD, // PLAYER_LIMB_HEAD
|
||||
/* 8 */ PLAYER_BODYPART_HAT, // PLAYER_LIMB_HAT
|
||||
/* 9 */ PLAYER_BODYPART_COLLAR, // PLAYER_LIMB_COLLAR
|
||||
/* 10 */ PLAYER_BODYPART_L_SHOULDER, // PLAYER_LIMB_L_SHOULDER
|
||||
/* 11 */ PLAYER_BODYPART_L_FOREARM, // PLAYER_LIMB_L_FOREARM
|
||||
/* 12 */ PLAYER_BODYPART_L_HAND, // PLAYER_LIMB_L_HAND
|
||||
/* 13 */ PLAYER_BODYPART_R_SHOULDER, // PLAYER_LIMB_R_SHOULDER
|
||||
/* 14 */ PLAYER_BODYPART_R_FOREARM, // PLAYER_LIMB_R_FOREARM
|
||||
/* 15 */ PLAYER_BODYPART_R_HAND, // PLAYER_LIMB_R_HAND
|
||||
/* 16 */ PLAYER_BODYPART_SHEATH, // PLAYER_LIMB_SHEATH
|
||||
/* 17 */ PLAYER_BODYPART_TORSO, // PLAYER_LIMB_TORSO
|
||||
/* 18 */ PLAYER_BODYPART_MAX
|
||||
/* 0x00 */ PLAYER_BODYPART_WAIST, // PLAYER_LIMB_WAIST
|
||||
/* 0x01 */ PLAYER_BODYPART_R_THIGH, // PLAYER_LIMB_R_THIGH
|
||||
/* 0x02 */ PLAYER_BODYPART_R_SHIN, // PLAYER_LIMB_R_SHIN
|
||||
/* 0x03 */ PLAYER_BODYPART_R_FOOT, // PLAYER_LIMB_R_FOOT
|
||||
/* 0x04 */ PLAYER_BODYPART_L_THIGH, // PLAYER_LIMB_L_THIGH
|
||||
/* 0x05 */ PLAYER_BODYPART_L_SHIN, // PLAYER_LIMB_L_SHIN
|
||||
/* 0x06 */ PLAYER_BODYPART_L_FOOT, // PLAYER_LIMB_L_FOOT
|
||||
/* 0x07 */ PLAYER_BODYPART_HEAD, // PLAYER_LIMB_HEAD
|
||||
/* 0x08 */ PLAYER_BODYPART_HAT, // PLAYER_LIMB_HAT
|
||||
/* 0x09 */ PLAYER_BODYPART_COLLAR, // PLAYER_LIMB_COLLAR
|
||||
/* 0x0A */ PLAYER_BODYPART_L_SHOULDER, // PLAYER_LIMB_L_SHOULDER
|
||||
/* 0x0B */ PLAYER_BODYPART_L_FOREARM, // PLAYER_LIMB_L_FOREARM
|
||||
/* 0x0C */ PLAYER_BODYPART_L_HAND, // PLAYER_LIMB_L_HAND
|
||||
/* 0x0D */ PLAYER_BODYPART_R_SHOULDER, // PLAYER_LIMB_R_SHOULDER
|
||||
/* 0x0E */ PLAYER_BODYPART_R_FOREARM, // PLAYER_LIMB_R_FOREARM
|
||||
/* 0x0F */ PLAYER_BODYPART_R_HAND, // PLAYER_LIMB_R_HAND
|
||||
/* 0x10 */ PLAYER_BODYPART_SHEATH, // PLAYER_LIMB_SHEATH
|
||||
/* 0x11 */ PLAYER_BODYPART_TORSO, // PLAYER_LIMB_TORSO
|
||||
/* 0x12 */ PLAYER_BODYPART_MAX
|
||||
} PlayerBodyPart;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ PLAYER_MWA_FORWARD_SLASH_1H,
|
||||
/* 1 */ PLAYER_MWA_FORWARD_SLASH_2H,
|
||||
/* 2 */ PLAYER_MWA_FORWARD_COMBO_1H,
|
||||
/* 3 */ PLAYER_MWA_FORWARD_COMBO_2H,
|
||||
/* 4 */ PLAYER_MWA_RIGHT_SLASH_1H,
|
||||
/* 5 */ PLAYER_MWA_RIGHT_SLASH_2H,
|
||||
/* 6 */ PLAYER_MWA_RIGHT_COMBO_1H,
|
||||
/* 7 */ PLAYER_MWA_RIGHT_COMBO_2H,
|
||||
/* 8 */ PLAYER_MWA_LEFT_SLASH_1H,
|
||||
/* 9 */ PLAYER_MWA_LEFT_SLASH_2H,
|
||||
/* 10 */ PLAYER_MWA_LEFT_COMBO_1H,
|
||||
/* 11 */ PLAYER_MWA_LEFT_COMBO_2H,
|
||||
/* 12 */ PLAYER_MWA_STAB_1H,
|
||||
/* 13 */ PLAYER_MWA_STAB_2H,
|
||||
/* 14 */ PLAYER_MWA_STAB_COMBO_1H,
|
||||
/* 15 */ PLAYER_MWA_STAB_COMBO_2H,
|
||||
/* 16 */ PLAYER_MWA_FLIPSLASH_START,
|
||||
/* 17 */ PLAYER_MWA_JUMPSLASH_START,
|
||||
/* 18 */ PLAYER_MWA_FLIPSLASH_FINISH,
|
||||
/* 19 */ PLAYER_MWA_JUMPSLASH_FINISH,
|
||||
/* 20 */ PLAYER_MWA_BACKSLASH_RIGHT,
|
||||
/* 21 */ PLAYER_MWA_BACKSLASH_LEFT,
|
||||
/* 22 */ PLAYER_MWA_HAMMER_FORWARD,
|
||||
/* 23 */ PLAYER_MWA_HAMMER_SIDE,
|
||||
/* 24 */ PLAYER_MWA_SPIN_ATTACK_1H,
|
||||
/* 25 */ PLAYER_MWA_SPIN_ATTACK_2H,
|
||||
/* 26 */ PLAYER_MWA_BIG_SPIN_1H,
|
||||
/* 27 */ PLAYER_MWA_BIG_SPIN_2H,
|
||||
/* 28 */ PLAYER_MWA_MAX
|
||||
} PlayerMeleeWeaponAnimation;
|
||||
|
||||
typedef enum {
|
||||
/* -1 */ PLAYER_DOORTYPE_AJAR = -1,
|
||||
/* 0 */ PLAYER_DOORTYPE_NONE,
|
||||
@ -200,124 +234,125 @@ typedef enum {
|
||||
} PlayerDoorType;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ PLAYER_MODELGROUP_0, // unused (except with the `Player_OverrideLimbDrawPause` bug)
|
||||
/* 1 */ PLAYER_MODELGROUP_CHILD_HYLIAN_SHIELD, // kokiri/master sword, shield not in hand
|
||||
/* 2 */ PLAYER_MODELGROUP_SWORD, // kokiri/master sword and possibly shield
|
||||
/* 3 */ PLAYER_MODELGROUP_DEFAULT, // non-specific models, for items that don't have particular link models
|
||||
/* 4 */ PLAYER_MODELGROUP_4, // unused, same as PLAYER_MODELGROUP_DEFAULT
|
||||
/* 5 */ PLAYER_MODELGROUP_BGS, // biggoron sword
|
||||
/* 6 */ PLAYER_MODELGROUP_BOW_SLINGSHOT, // bow/slingshot
|
||||
/* 7 */ PLAYER_MODELGROUP_EXPLOSIVES, // bombs, bombchus, same as PLAYER_MODELGROUP_DEFAULT
|
||||
/* 8 */ PLAYER_MODELGROUP_BOOMERANG,
|
||||
/* 9 */ PLAYER_MODELGROUP_HOOKSHOT,
|
||||
/* 10 */ PLAYER_MODELGROUP_10, // stick/fishing pole (which are drawn separately)
|
||||
/* 11 */ PLAYER_MODELGROUP_HAMMER,
|
||||
/* 12 */ PLAYER_MODELGROUP_OCARINA, // ocarina
|
||||
/* 13 */ PLAYER_MODELGROUP_OOT, // ocarina of time
|
||||
/* 14 */ PLAYER_MODELGROUP_BOTTLE, // bottles (drawn separately)
|
||||
/* 15 */ PLAYER_MODELGROUP_15, // "last used"
|
||||
/* 16 */ PLAYER_MODELGROUP_MAX
|
||||
/* 0x00 */ PLAYER_MODELGROUP_0, // unused (except with the `Player_OverrideLimbDrawPause` bug)
|
||||
/* 0x01 */ PLAYER_MODELGROUP_CHILD_HYLIAN_SHIELD, // kokiri/master sword, shield not in hand
|
||||
/* 0x02 */ PLAYER_MODELGROUP_SWORD, // kokiri/master sword and possibly shield
|
||||
/* 0x03 */ PLAYER_MODELGROUP_DEFAULT, // non-specific models, for items that don't have particular link models
|
||||
/* 0x04 */ PLAYER_MODELGROUP_4, // unused, same as PLAYER_MODELGROUP_DEFAULT
|
||||
/* 0x05 */ PLAYER_MODELGROUP_BGS, // biggoron sword
|
||||
/* 0x06 */ PLAYER_MODELGROUP_BOW_SLINGSHOT, // bow/slingshot
|
||||
/* 0x07 */ PLAYER_MODELGROUP_EXPLOSIVES, // bombs, bombchus, same as PLAYER_MODELGROUP_DEFAULT
|
||||
/* 0x08 */ PLAYER_MODELGROUP_BOOMERANG,
|
||||
/* 0x09 */ PLAYER_MODELGROUP_HOOKSHOT,
|
||||
/* 0x0A */ PLAYER_MODELGROUP_10, // stick/fishing pole (which are drawn separately)
|
||||
/* 0x0B */ PLAYER_MODELGROUP_HAMMER,
|
||||
/* 0x0C */ PLAYER_MODELGROUP_OCARINA, // ocarina
|
||||
/* 0x0D */ PLAYER_MODELGROUP_OOT, // ocarina of time
|
||||
/* 0x0E */ PLAYER_MODELGROUP_BOTTLE, // bottles (drawn separately)
|
||||
/* 0x0F */ PLAYER_MODELGROUP_15, // "last used"
|
||||
/* 0x10 */ PLAYER_MODELGROUP_MAX
|
||||
} PlayerModelGroup;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ PLAYER_MODELGROUPENTRY_ANIM,
|
||||
/* 1 */ PLAYER_MODELGROUPENTRY_LEFT_HAND,
|
||||
/* 2 */ PLAYER_MODELGROUPENTRY_RIGHT_HAND,
|
||||
/* 3 */ PLAYER_MODELGROUPENTRY_SHEATH,
|
||||
/* 4 */ PLAYER_MODELGROUPENTRY_WAIST,
|
||||
/* 5 */ PLAYER_MODELGROUPENTRY_MAX
|
||||
/* 0x00 */ PLAYER_MODELGROUPENTRY_ANIM,
|
||||
/* 0x01 */ PLAYER_MODELGROUPENTRY_LEFT_HAND,
|
||||
/* 0x02 */ PLAYER_MODELGROUPENTRY_RIGHT_HAND,
|
||||
/* 0x03 */ PLAYER_MODELGROUPENTRY_SHEATH,
|
||||
/* 0x04 */ PLAYER_MODELGROUPENTRY_WAIST,
|
||||
/* 0x05 */ PLAYER_MODELGROUPENTRY_MAX
|
||||
} PlayerModelGroupEntry;
|
||||
|
||||
typedef enum {
|
||||
// left hand
|
||||
/* 0 */ PLAYER_MODELTYPE_LH_OPEN, // empty open hand
|
||||
/* 1 */ PLAYER_MODELTYPE_LH_CLOSED, // empty closed hand
|
||||
/* 2 */ PLAYER_MODELTYPE_LH_SWORD, // holding kokiri/master sword
|
||||
/* 3 */ PLAYER_MODELTYPE_3, // unused, same as PLAYER_MODELTYPE_LH_SWORD
|
||||
/* 4 */ PLAYER_MODELTYPE_LH_BGS, // holding bgs/broken giant knife (child: master sword)
|
||||
/* 5 */ PLAYER_MODELTYPE_LH_HAMMER, // holding hammer (child: empty hand)
|
||||
/* 6 */ PLAYER_MODELTYPE_LH_BOOMERANG, // holding boomerang (adult: empty hand)
|
||||
/* 7 */ PLAYER_MODELTYPE_LH_BOTTLE, // holding bottle (bottle drawn separately)
|
||||
/* 0x00 */ PLAYER_MODELTYPE_LH_OPEN, // empty open hand
|
||||
/* 0x01 */ PLAYER_MODELTYPE_LH_CLOSED, // empty closed hand
|
||||
/* 0x02 */ PLAYER_MODELTYPE_LH_SWORD, // holding kokiri/master sword
|
||||
/* 0x03 */ PLAYER_MODELTYPE_LH_SWORD_2, // unused, same as PLAYER_MODELTYPE_LH_SWORD
|
||||
/* 0x04 */ PLAYER_MODELTYPE_LH_BGS, // holding bgs/broken giant knife (child: master sword)
|
||||
/* 0x05 */ PLAYER_MODELTYPE_LH_HAMMER, // holding hammer (child: empty hand)
|
||||
/* 0x06 */ PLAYER_MODELTYPE_LH_BOOMERANG, // holding boomerang (adult: empty hand)
|
||||
/* 0x07 */ PLAYER_MODELTYPE_LH_BOTTLE, // holding bottle (bottle drawn separately)
|
||||
// right hand
|
||||
/* 8 */ PLAYER_MODELTYPE_RH_OPEN, // empty open hand
|
||||
/* 9 */ PLAYER_MODELTYPE_RH_CLOSED, // empty closed hand
|
||||
/* 10 */ PLAYER_MODELTYPE_RH_SHIELD, // holding a shield (including no shield)
|
||||
/* 11 */ PLAYER_MODELTYPE_RH_BOW_SLINGSHOT, // holding bow/slingshot
|
||||
/* 12 */ PLAYER_MODELTYPE_12, // unused, same as PLAYER_MODELTYPE_RH_BOW_SLINGSHOT
|
||||
/* 13 */ PLAYER_MODELTYPE_RH_OCARINA, // holding ocarina (child: fairy ocarina, adult: OoT)
|
||||
/* 14 */ PLAYER_MODELTYPE_RH_OOT, // holding OoT
|
||||
/* 15 */ PLAYER_MODELTYPE_RH_HOOKSHOT, // holding hookshot (child: empty hand)
|
||||
/* 0x08 */ PLAYER_MODELTYPE_RH_OPEN, // empty open hand
|
||||
/* 0x09 */ PLAYER_MODELTYPE_RH_CLOSED, // empty closed hand
|
||||
/* 0x0A */ PLAYER_MODELTYPE_RH_SHIELD, // holding a shield (including no shield)
|
||||
/* 0x0B */ PLAYER_MODELTYPE_RH_BOW_SLINGSHOT, // holding bow/slingshot
|
||||
/* 0x0C */ PLAYER_MODELTYPE_RH_BOW_SLINGSHOT_2, // unused, same as PLAYER_MODELTYPE_RH_BOW_SLINGSHOT
|
||||
/* 0x0D */ PLAYER_MODELTYPE_RH_OCARINA, // holding ocarina (child: fairy ocarina, adult: OoT)
|
||||
/* 0x0E */ PLAYER_MODELTYPE_RH_OOT, // holding OoT
|
||||
/* 0x0F */ PLAYER_MODELTYPE_RH_HOOKSHOT, // holding hookshot (child: empty hand)
|
||||
// sheath
|
||||
/* 16 */ PLAYER_MODELTYPE_SHEATH_16, // sheathed kokiri/master sword?
|
||||
/* 17 */ PLAYER_MODELTYPE_SHEATH_17, // empty sheath?
|
||||
/* 18 */ PLAYER_MODELTYPE_SHEATH_18, // sword sheathed and shield on back?
|
||||
/* 19 */ PLAYER_MODELTYPE_SHEATH_19, // empty sheath and shield on back?
|
||||
/* 0x10 */ PLAYER_MODELTYPE_SHEATH_16, // sheathed kokiri/master sword?
|
||||
/* 0x11 */ PLAYER_MODELTYPE_SHEATH_17, // empty sheath?
|
||||
/* 0x12 */ PLAYER_MODELTYPE_SHEATH_18, // sword sheathed and shield on back?
|
||||
/* 0x13 */ PLAYER_MODELTYPE_SHEATH_19, // empty sheath and shield on back?
|
||||
// waist
|
||||
/* 20 */ PLAYER_MODELTYPE_WAIST,
|
||||
/* 21 */ PLAYER_MODELTYPE_MAX,
|
||||
/* 0x14 */ PLAYER_MODELTYPE_WAIST,
|
||||
/* 0x15 */ PLAYER_MODELTYPE_MAX,
|
||||
/* 0xFF */ PLAYER_MODELTYPE_RH_FF = 0xFF // disable shield collider, cutscene-specific
|
||||
} PlayerModelType;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ PLAYER_ANIMTYPE_0,
|
||||
/* 1 */ PLAYER_ANIMTYPE_1,
|
||||
/* 2 */ PLAYER_ANIMTYPE_2,
|
||||
/* 3 */ PLAYER_ANIMTYPE_3,
|
||||
/* 4 */ PLAYER_ANIMTYPE_4,
|
||||
/* 5 */ PLAYER_ANIMTYPE_5,
|
||||
/* 6 */ PLAYER_ANIMTYPE_MAX
|
||||
/* 0x00 */ PLAYER_ANIMTYPE_0,
|
||||
/* 0x01 */ PLAYER_ANIMTYPE_1,
|
||||
/* 0x02 */ PLAYER_ANIMTYPE_2,
|
||||
/* 0x03 */ PLAYER_ANIMTYPE_3,
|
||||
/* 0x04 */ PLAYER_ANIMTYPE_4,
|
||||
/* 0x05 */ PLAYER_ANIMTYPE_5,
|
||||
/* 0x06 */ PLAYER_ANIMTYPE_MAX
|
||||
} PlayerAnimType;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ PLAYER_ANIMGROUP_0,
|
||||
/* 1 */ PLAYER_ANIMGROUP_1,
|
||||
/* 2 */ PLAYER_ANIMGROUP_2,
|
||||
/* 3 */ PLAYER_ANIMGROUP_3,
|
||||
/* 4 */ PLAYER_ANIMGROUP_4,
|
||||
/* 5 */ PLAYER_ANIMGROUP_5,
|
||||
/* 6 */ PLAYER_ANIMGROUP_6,
|
||||
/* 7 */ PLAYER_ANIMGROUP_7,
|
||||
/* 8 */ PLAYER_ANIMGROUP_8,
|
||||
/* 9 */ PLAYER_ANIMGROUP_9,
|
||||
/* 10 */ PLAYER_ANIMGROUP_10,
|
||||
/* 11 */ PLAYER_ANIMGROUP_11,
|
||||
/* 12 */ PLAYER_ANIMGROUP_12,
|
||||
/* 13 */ PLAYER_ANIMGROUP_13,
|
||||
/* 14 */ PLAYER_ANIMGROUP_14,
|
||||
/* 15 */ PLAYER_ANIMGROUP_15,
|
||||
/* 16 */ PLAYER_ANIMGROUP_16,
|
||||
/* 17 */ PLAYER_ANIMGROUP_17,
|
||||
/* 18 */ PLAYER_ANIMGROUP_18,
|
||||
/* 19 */ PLAYER_ANIMGROUP_19,
|
||||
/* 20 */ PLAYER_ANIMGROUP_20,
|
||||
/* 21 */ PLAYER_ANIMGROUP_21,
|
||||
/* 22 */ PLAYER_ANIMGROUP_22,
|
||||
/* 23 */ PLAYER_ANIMGROUP_23,
|
||||
/* 24 */ PLAYER_ANIMGROUP_24,
|
||||
/* 25 */ PLAYER_ANIMGROUP_25,
|
||||
/* 26 */ PLAYER_ANIMGROUP_26,
|
||||
/* 27 */ PLAYER_ANIMGROUP_27,
|
||||
/* 28 */ PLAYER_ANIMGROUP_28,
|
||||
/* 29 */ PLAYER_ANIMGROUP_29,
|
||||
/* 30 */ PLAYER_ANIMGROUP_30,
|
||||
/* 31 */ PLAYER_ANIMGROUP_31,
|
||||
/* 32 */ PLAYER_ANIMGROUP_32,
|
||||
/* 33 */ PLAYER_ANIMGROUP_33,
|
||||
/* 34 */ PLAYER_ANIMGROUP_34,
|
||||
/* 35 */ PLAYER_ANIMGROUP_35,
|
||||
/* 36 */ PLAYER_ANIMGROUP_36,
|
||||
/* 37 */ PLAYER_ANIMGROUP_37,
|
||||
/* 38 */ PLAYER_ANIMGROUP_38,
|
||||
/* 39 */ PLAYER_ANIMGROUP_39,
|
||||
/* 40 */ PLAYER_ANIMGROUP_40,
|
||||
/* 41 */ PLAYER_ANIMGROUP_41,
|
||||
/* 42 */ PLAYER_ANIMGROUP_42,
|
||||
/* 43 */ PLAYER_ANIMGROUP_43,
|
||||
/* 44 */ PLAYER_ANIMGROUP_44,
|
||||
/* 45 */ PLAYER_ANIMGROUP_MAX
|
||||
/* 0x00 */ PLAYER_ANIMGROUP_0,
|
||||
/* 0x01 */ PLAYER_ANIMGROUP_1,
|
||||
/* 0x02 */ PLAYER_ANIMGROUP_2,
|
||||
/* 0x03 */ PLAYER_ANIMGROUP_3,
|
||||
/* 0x04 */ PLAYER_ANIMGROUP_4,
|
||||
/* 0x05 */ PLAYER_ANIMGROUP_5,
|
||||
/* 0x06 */ PLAYER_ANIMGROUP_6,
|
||||
/* 0x07 */ PLAYER_ANIMGROUP_7,
|
||||
/* 0x08 */ PLAYER_ANIMGROUP_8,
|
||||
/* 0x09 */ PLAYER_ANIMGROUP_9,
|
||||
/* 0x0A */ PLAYER_ANIMGROUP_10,
|
||||
/* 0x0B */ PLAYER_ANIMGROUP_11,
|
||||
/* 0x0C */ PLAYER_ANIMGROUP_12,
|
||||
/* 0x0D */ PLAYER_ANIMGROUP_13,
|
||||
/* 0x0E */ PLAYER_ANIMGROUP_14,
|
||||
/* 0x0F */ PLAYER_ANIMGROUP_15,
|
||||
/* 0x10 */ PLAYER_ANIMGROUP_16,
|
||||
/* 0x11 */ PLAYER_ANIMGROUP_17,
|
||||
/* 0x12 */ PLAYER_ANIMGROUP_18,
|
||||
/* 0x13 */ PLAYER_ANIMGROUP_19,
|
||||
/* 0x14 */ PLAYER_ANIMGROUP_20,
|
||||
/* 0x15 */ PLAYER_ANIMGROUP_21,
|
||||
/* 0x16 */ PLAYER_ANIMGROUP_22,
|
||||
/* 0x17 */ PLAYER_ANIMGROUP_23,
|
||||
/* 0x18 */ PLAYER_ANIMGROUP_24,
|
||||
/* 0x19 */ PLAYER_ANIMGROUP_25,
|
||||
/* 0x1A */ PLAYER_ANIMGROUP_26,
|
||||
/* 0x1B */ PLAYER_ANIMGROUP_27,
|
||||
/* 0x1C */ PLAYER_ANIMGROUP_28,
|
||||
/* 0x1D */ PLAYER_ANIMGROUP_29,
|
||||
/* 0x1E */ PLAYER_ANIMGROUP_30,
|
||||
/* 0x1F */ PLAYER_ANIMGROUP_31,
|
||||
/* 0x20 */ PLAYER_ANIMGROUP_32,
|
||||
/* 0x21 */ PLAYER_ANIMGROUP_33,
|
||||
/* 0x22 */ PLAYER_ANIMGROUP_34,
|
||||
/* 0x23 */ PLAYER_ANIMGROUP_35,
|
||||
/* 0x24 */ PLAYER_ANIMGROUP_36,
|
||||
/* 0x25 */ PLAYER_ANIMGROUP_37,
|
||||
/* 0x26 */ PLAYER_ANIMGROUP_38,
|
||||
/* 0x27 */ PLAYER_ANIMGROUP_39,
|
||||
/* 0x28 */ PLAYER_ANIMGROUP_40,
|
||||
/* 0x29 */ PLAYER_ANIMGROUP_41,
|
||||
/* 0x2A */ PLAYER_ANIMGROUP_42,
|
||||
/* 0x2B */ PLAYER_ANIMGROUP_43,
|
||||
/* 0x2C */ PLAYER_ANIMGROUP_44,
|
||||
/* 0x2D */ PLAYER_ANIMGROUP_MAX
|
||||
} PlayerAnimGroup;
|
||||
|
||||
#define PLAYER_LIMB_BUF_COUNT PLAYER_LIMB_MAX + 2 // 2 extra entries in limb buffers?
|
||||
#define LIMB_BUF_COUNT(limbCount) ((ALIGN16((limbCount) * sizeof(Vec3s)) + sizeof(Vec3s) - 1) / sizeof(Vec3s))
|
||||
#define PLAYER_LIMB_BUF_COUNT LIMB_BUF_COUNT(PLAYER_LIMB_MAX)
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ f32 unk_00;
|
||||
@ -361,6 +396,9 @@ typedef struct {
|
||||
/* 0x10 */ Vec3f base;
|
||||
} WeaponInfo; // size = 0x1C
|
||||
|
||||
// #region SOH [General]
|
||||
// Supporting pendingFlag
|
||||
// Upstream TODO: Rename these to be more obviously SoH specific
|
||||
typedef enum {
|
||||
FLAG_NONE,
|
||||
FLAG_SCENE_SWITCH,
|
||||
@ -375,9 +413,10 @@ typedef struct {
|
||||
/* 0x00 */ s32 flagID; // which flag to set when Player_SetPendingFlag is called
|
||||
/* 0x04 */ FlagType flagType; // type of flag to set when Player_SetPendingFlag is called
|
||||
} PendingFlag; // size = 0x06
|
||||
// #endregion
|
||||
|
||||
#define PLAYER_STATE1_0 (1 << 0)
|
||||
#define PLAYER_STATE1_1 (1 << 1)
|
||||
#define PLAYER_STATE1_SWINGING_BOTTLE (1 << 1)
|
||||
#define PLAYER_STATE1_2 (1 << 2)
|
||||
#define PLAYER_STATE1_3 (1 << 3)
|
||||
#define PLAYER_STATE1_4 (1 << 4)
|
||||
@ -425,9 +464,9 @@ typedef struct {
|
||||
#define PLAYER_STATE2_13 (1 << 13)
|
||||
#define PLAYER_STATE2_14 (1 << 14)
|
||||
#define PLAYER_STATE2_15 (1 << 15)
|
||||
#define PLAYER_STATE2_16 (1 << 16)
|
||||
#define PLAYER_STATE2_DO_ACTION_ENTER (1 << 16) // Turns on the "Enter On A" DoAction
|
||||
#define PLAYER_STATE2_17 (1 << 17)
|
||||
#define PLAYER_STATE2_18 (1 << 18)
|
||||
#define PLAYER_STATE2_CRAWLING (1 << 18) // Crawling through a crawlspace
|
||||
#define PLAYER_STATE2_19 (1 << 19)
|
||||
#define PLAYER_STATE2_20 (1 << 20)
|
||||
#define PLAYER_STATE2_21 (1 << 21)
|
||||
@ -448,24 +487,24 @@ typedef struct {
|
||||
#define PLAYER_STATE3_3 (1 << 3)
|
||||
#define PLAYER_STATE3_4 (1 << 4)
|
||||
#define PLAYER_STATE3_5 (1 << 5)
|
||||
#define PLAYER_STATE3_6 (1 << 6)
|
||||
#define PLAYER_STATE3_RESTORE_NAYRUS_LOVE (1 << 6) // Set by ocarina effects actors when destroyed to signal Nayru's Love may be restored (see `ACTOROVL_ALLOC_ABSOLUTE`)
|
||||
#define PLAYER_STATE3_7 (1 << 7)
|
||||
|
||||
typedef void (*PlayerFunc674)(struct Player*, struct PlayState*);
|
||||
typedef s32(*PlayerFunc82C)(struct Player*, struct PlayState*);
|
||||
typedef s32 (*PlayerFunc82C)(struct Player*, struct PlayState*);
|
||||
typedef void (*PlayerFuncA74)(struct PlayState*, struct Player*);
|
||||
|
||||
typedef struct Player {
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ s8 currentTunic; // current tunic from `PlayerTunic`
|
||||
/* 0x014D */ s8 currentSwordItem; // current sword Item ID
|
||||
/* 0x014D */ s8 currentSwordItemId;
|
||||
/* 0x014E */ s8 currentShield; // current shield from `PlayerShield`
|
||||
/* 0x014F */ s8 currentBoots; // current boots from `PlayerBoots`
|
||||
/* 0x0150 */ s8 heldItemButton; // Button index for the item currently used
|
||||
/* 0x0151 */ s8 heldItemActionParam; // Action param for the item currently used
|
||||
/* 0x0151 */ s8 heldItemAction; // Item action for the item currently used
|
||||
/* 0x0152 */ u8 heldItemId; // Item id for the item currently used
|
||||
/* 0x0153 */ s8 prevBoots; // previous boots from `PlayerBoots`
|
||||
/* 0x0154 */ s8 itemActionParam; // the difference between this and heldItemActionParam is unclear
|
||||
/* 0x0154 */ s8 itemAction; // the difference between this and heldItemAction is unclear
|
||||
/* 0x0155 */ char unk_155[0x003];
|
||||
/* 0x0158 */ u8 modelGroup;
|
||||
/* 0x0159 */ u8 nextModelGroup;
|
||||
@ -475,71 +514,71 @@ typedef struct Player {
|
||||
/* 0x015D */ u8 rightHandType;
|
||||
/* 0x015E */ u8 sheathType;
|
||||
/* 0x015F */ u8 currentMask; // current mask equipped from `PlayerMask`
|
||||
/* 0x0160 */ Gfx** rightHandDLists;
|
||||
/* 0x0164 */ Gfx** leftHandDLists;
|
||||
/* 0x0168 */ Gfx** sheathDLists;
|
||||
/* 0x016C */ Gfx** waistDLists;
|
||||
/* 0x0160 */ Gfx** rightHandDLists;
|
||||
/* 0x0164 */ Gfx** leftHandDLists;
|
||||
/* 0x0168 */ Gfx** sheathDLists;
|
||||
/* 0x016C */ Gfx** waistDLists;
|
||||
/* 0x0170 */ u8 giObjectLoading;
|
||||
/* 0x0174 */ DmaRequest giObjectDmaRequest;
|
||||
/* 0x0194 */ OSMesgQueue giObjectLoadQueue;
|
||||
/* 0x01AC */ OSMesg giObjectLoadMsg;
|
||||
/* 0x01B0 */ void* giObjectSegment; // also used for title card textures
|
||||
/* 0x01B0 */ void* giObjectSegment; // also used for title card textures
|
||||
/* 0x01B4 */ SkelAnime skelAnime;
|
||||
/* 0x01F8 */ Vec3s jointTable[PLAYER_LIMB_BUF_COUNT];
|
||||
/* 0x0288 */ Vec3s morphTable[PLAYER_LIMB_BUF_COUNT];
|
||||
/* 0x0318 */ Vec3s blendTable[PLAYER_LIMB_BUF_COUNT];
|
||||
/* 0x03A8 */ s16 unk_3A8[2];
|
||||
/* 0x03AC */ Actor* heldActor;
|
||||
/* 0x03AC */ Actor* heldActor;
|
||||
/* 0x03B0 */ Vec3f leftHandPos;
|
||||
/* 0x03BC */ Vec3s unk_3BC;
|
||||
/* 0x03C4 */ Actor* unk_3C4;
|
||||
/* 0x03C4 */ Actor* unk_3C4;
|
||||
/* 0x03C8 */ Vec3f unk_3C8;
|
||||
/* 0x03D4 */ char unk_3D4[0x058];
|
||||
/* 0x042C */ s8 doorType;
|
||||
/* 0x042D */ s8 doorDirection;
|
||||
/* 0x042E */ s16 doorTimer;
|
||||
/* 0x0430 */ Actor* doorActor;
|
||||
/* 0x0434 */ s16 getItemId;
|
||||
/* 0x0430 */ Actor* doorActor;
|
||||
/* 0x0434 */ s16 getItemId; // Upstream TODO: Document why this is s16 while it's s8 upstream
|
||||
/* 0x0436 */ u16 getItemDirection;
|
||||
/* 0x0438 */ Actor* interactRangeActor;
|
||||
/* 0x0438 */ Actor* interactRangeActor;
|
||||
/* 0x043C */ s8 mountSide;
|
||||
/* 0x043D */ char unk_43D[0x003];
|
||||
/* 0x0440 */ Actor* rideActor;
|
||||
/* 0x0440 */ Actor* rideActor;
|
||||
/* 0x0444 */ u8 csMode;
|
||||
/* 0x0445 */ u8 prevCsMode;
|
||||
/* 0x0446 */ u8 unk_446;
|
||||
/* 0x0447 */ u8 unk_447;
|
||||
/* 0x0448 */ Actor* unk_448;
|
||||
/* 0x0448 */ Actor* unk_448;
|
||||
/* 0x044C */ char unk_44C[0x004];
|
||||
/* 0x0450 */ Vec3f unk_450;
|
||||
/* 0x045C */ Vec3f unk_45C;
|
||||
/* 0x0468 */ char unk_468[0x002];
|
||||
/* 0x046A */ s16 unk_46A;
|
||||
/* 0x046C */ s16 unk_46C;
|
||||
/* 0x046A */ s16 doorBgCamIndex;
|
||||
/* 0x046C */ s16 subCamId;
|
||||
/* 0x046E */ char unk_46E[0x02A];
|
||||
/* 0x0498 */ ColliderCylinder cylinder;
|
||||
/* 0x04E4 */ ColliderQuad swordQuads[2];
|
||||
/* 0x04E4 */ ColliderQuad meleeWeaponQuads[2];
|
||||
/* 0x05E4 */ ColliderQuad shieldQuad;
|
||||
/* 0x0664 */ Actor* unk_664;
|
||||
/* 0x0664 */ Actor* unk_664;
|
||||
/* 0x0668 */ char unk_668[0x004];
|
||||
/* 0x066C */ s32 unk_66C;
|
||||
/* 0x0670 */ s32 swordEffectIndex;
|
||||
/* 0x0670 */ s32 meleeWeaponEffectIndex;
|
||||
/* 0x0674 */ PlayerFunc674 func_674;
|
||||
/* 0x0678 */ PlayerAgeProperties* ageProperties;
|
||||
/* 0x067C */ u32 stateFlags1;
|
||||
/* 0x0680 */ u32 stateFlags2;
|
||||
/* 0x0684 */ Actor* unk_684;
|
||||
/* 0x0688 */ Actor* boomerangActor;
|
||||
/* 0x068C */ Actor* naviActor;
|
||||
/* 0x0684 */ Actor* unk_684;
|
||||
/* 0x0688 */ Actor* boomerangActor;
|
||||
/* 0x068C */ Actor* naviActor;
|
||||
/* 0x0690 */ s16 naviTextId;
|
||||
/* 0x0692 */ u8 stateFlags3;
|
||||
/* 0x0693 */ s8 exchangeItemId;
|
||||
/* 0x0694 */ Actor* targetActor;
|
||||
/* 0x0694 */ Actor* targetActor;
|
||||
/* 0x0698 */ f32 targetActorDistance;
|
||||
/* 0x069C */ char unk_69C[0x004];
|
||||
/* 0x06A0 */ f32 unk_6A0;
|
||||
/* 0x06A4 */ f32 unk_6A4;
|
||||
/* 0x06A8 */ Actor* unk_6A8;
|
||||
/* 0x06A8 */ Actor* unk_6A8;
|
||||
/* 0x06AC */ s8 unk_6AC;
|
||||
/* 0x06AD */ u8 unk_6AD;
|
||||
/* 0x06AE */ u16 unk_6AE;
|
||||
@ -565,8 +604,8 @@ typedef struct Player {
|
||||
/* 0x083C */ s16 currentYaw;
|
||||
/* 0x083E */ s16 targetYaw;
|
||||
/* 0x0840 */ u16 unk_840;
|
||||
/* 0x0842 */ s8 swordAnimation;
|
||||
/* 0x0843 */ s8 swordState;
|
||||
/* 0x0842 */ s8 meleeWeaponAnimation;
|
||||
/* 0x0843 */ s8 swordState; // Upstream TODO: meleeWeaponState
|
||||
/* 0x0844 */ s8 unk_844;
|
||||
/* 0x0845 */ u8 unk_845;
|
||||
/* 0x0846 */ u8 unk_846;
|
||||
@ -609,14 +648,14 @@ typedef struct Player {
|
||||
/* 0x08A2 */ s16 unk_8A2;
|
||||
/* 0x08A4 */ f32 unk_8A4;
|
||||
/* 0x08A8 */ f32 unk_8A8;
|
||||
/* 0x08AC */ f32 windSpeed;
|
||||
/* 0x08B0 */ s16 windDirection;
|
||||
/* 0x08B4 */ WeaponInfo swordInfo[3];
|
||||
/* 0x0908 */ Vec3f bodyPartsPos[18];
|
||||
/* 0x08AC */ f32 windSpeed; // Pushing player, examples include water currents, floor conveyors, climbing sloped surfaces // Upstream TODO: pushedSpeed
|
||||
/* 0x08B0 */ s16 windDirection; // Yaw direction of player being pushed // Upstream TODO: pushedYaw
|
||||
/* 0x08B4 */ WeaponInfo meleeWeaponInfo[3];
|
||||
/* 0x0908 */ Vec3f bodyPartsPos[PLAYER_BODYPART_MAX];
|
||||
/* 0x09E0 */ MtxF mf_9E0;
|
||||
/* 0x0A20 */ MtxF shieldMf;
|
||||
/* 0x0A60 */ u8 isBurning;
|
||||
/* 0x0A61 */ u8 flameTimers[18]; // one flame per body part
|
||||
/* 0x0A61 */ u8 flameTimers[PLAYER_BODYPART_MAX]; // one flame per body part
|
||||
/* 0x0A73 */ u8 unk_A73;
|
||||
/* 0x0A74 */ PlayerFuncA74 func_A74;
|
||||
/* 0x0A78 */ s8 invincibilityTimer; // prevents damage when nonzero (positive = visible, counts towards zero each frame)
|
||||
@ -630,9 +669,15 @@ typedef struct Player {
|
||||
/* 0x0A86 */ s8 unk_A86;
|
||||
/* 0x0A87 */ u8 unk_A87;
|
||||
/* 0x0A88 */ Vec3f unk_A88; // previous body part 0 position
|
||||
/* 0x0A95 */ PendingFlag pendingFlag;
|
||||
/* 0x0AA1 */ u8 boomerangQuickRecall; // Has the player pressed the boomerang button while it's in the air still?
|
||||
/* 0x0AA2 */ GetItemEntry getItemEntry;
|
||||
} Player; // size = 0xAAA
|
||||
// #region SOH [General]
|
||||
// Upstream TODO: Rename these to be more obviously SoH specific
|
||||
/* */ PendingFlag pendingFlag;
|
||||
/* */ GetItemEntry getItemEntry;
|
||||
// #endregion
|
||||
// #region SOH [Enhancements]
|
||||
// Upstream TODO: Rename this to make it more obvious it is apart of an enhancement
|
||||
/* */ u8 boomerangQuickRecall; // Has the player pressed the boomerang button while it's in the air still?
|
||||
// #endregion
|
||||
} Player; // size = 0xA94
|
||||
|
||||
#endif
|
||||
|
@ -9,16 +9,42 @@
|
||||
#include "soh/Enhancements/gameplaystats.h"
|
||||
#include "soh/Enhancements/randomizer/randomizer_entrance.h"
|
||||
|
||||
typedef enum {
|
||||
/* 0x0 */ MAGIC_STATE_IDLE, // Regular gameplay
|
||||
/* 0x1 */ MAGIC_STATE_CONSUME_SETUP, // Sets the speed at which magic border flashes
|
||||
/* 0x2 */ MAGIC_STATE_CONSUME, // Consume magic until target is reached or no more magic is available
|
||||
/* 0x3 */ MAGIC_STATE_METER_FLASH_1, // Flashes border and freezes Dark Link
|
||||
/* 0x4 */ MAGIC_STATE_METER_FLASH_2, // Flashes border and draws yellow magic to preview target consumption
|
||||
/* 0x5 */ MAGIC_STATE_RESET, // Reset colors and return to idle
|
||||
/* 0x6 */ MAGIC_STATE_METER_FLASH_3, // Flashes border with no additional behaviour
|
||||
/* 0x7 */ MAGIC_STATE_CONSUME_LENS, // Magic slowly consumed by lens.
|
||||
/* 0x8 */ MAGIC_STATE_STEP_CAPACITY, // Step `magicCapacity` to full capacity
|
||||
/* 0x9 */ MAGIC_STATE_FILL, // Add magic until magicFillTarget is reached.
|
||||
/* 0xA */ MAGIC_STATE_ADD // Add requested magic
|
||||
} MagicState;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ MAGIC_CONSUME_NOW, // Consume Magic immediately without preview
|
||||
/* 1 */ MAGIC_CONSUME_WAIT_NO_PREVIEW, // Sets consume target but waits to consume. No yellow magic preview to target consumption. Unused
|
||||
/* 2 */ MAGIC_CONSUME_NOW_ALT, // Identical behaviour to MAGIC_CONSUME_NOW. Unused
|
||||
/* 3 */ MAGIC_CONSUME_LENS, // Lens consumption
|
||||
/* 4 */ MAGIC_CONSUME_WAIT_PREVIEW, // Sets consume target but waits to consume. Draws yellow magic to target consumption
|
||||
/* 5 */ MAGIC_ADD // Sets a target to add magic
|
||||
} MagicChangeType;
|
||||
|
||||
#define MAGIC_NORMAL_METER 0x30
|
||||
#define MAGIC_DOUBLE_METER (2 * MAGIC_NORMAL_METER)
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 buttonItems[8];
|
||||
/* 0x04 */ u8 cButtonSlots[7];
|
||||
/* 0x08 */ u16 equipment;
|
||||
/* 0x00 */ u8 buttonItems[8]; // SOH [Enhancements] Changed from 4 to 8 to support Dpad equips
|
||||
/* 0x04 */ u8 cButtonSlots[7]; // SOH [Enhancements] Changed from 3 to 7 to support Dpad equips
|
||||
/* 0x08 */ u16 equipment; // a mask where each nibble corresponds to a type of equipment `EquipmentType`, and each nibble is a piece `EquipValue*`
|
||||
} ItemEquips; // size = 0x0A
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 items[24];
|
||||
/* 0x18 */ s8 ammo[16];
|
||||
/* 0x28 */ u16 equipment;
|
||||
/* 0x28 */ u16 equipment; // a mask where each nibble corresponds to a type of equipment `EquipmentType`, and each bit to an owned piece `EquipInv*`
|
||||
/* 0x2C */ u32 upgrades;
|
||||
/* 0x30 */ u32 questItems;
|
||||
/* 0x34 */ u8 dungeonItems[20];
|
||||
@ -49,11 +75,24 @@ typedef struct {
|
||||
} SavedSceneFlags; // size = 0x1C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 scene;
|
||||
/* 0x00 */ s16 scene; // Upstream TODO: sceneId
|
||||
/* 0x02 */ Vec3s pos;
|
||||
/* 0x08 */ s16 angle;
|
||||
} HorseData; // size = 0x0A
|
||||
|
||||
/**
|
||||
* The respawn mode names refer to the perceived player movement when respawning
|
||||
* "down": being on ground
|
||||
* "return": coming from the ground
|
||||
* "top": coming from the air
|
||||
*/
|
||||
typedef enum {
|
||||
/* 0x00 */ RESPAWN_MODE_DOWN, /* Normal Void Outs */
|
||||
/* 0x01 */ RESPAWN_MODE_RETURN, /* Grotto Returnpoints */
|
||||
/* 0x02 */ RESPAWN_MODE_TOP, /* Farore's Wind */
|
||||
/* 0x03 */ RESPAWN_MODE_MAX
|
||||
} RespawnMode;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f pos;
|
||||
/* 0x0C */ s16 yaw;
|
||||
@ -93,60 +132,71 @@ typedef struct {
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ s32 entranceIndex; // start of `save` substruct, originally called "memory"
|
||||
/* 0x0004 */ s32 linkAge; // 0: Adult; 1: Child
|
||||
/* 0x0004 */ s32 linkAge; // 0: Adult; 1: Child (see enum `LinkAge`)
|
||||
/* 0x0008 */ s32 cutsceneIndex;
|
||||
/* 0x000C */ u16 dayTime; // "zelda_time"
|
||||
/* 0x0010 */ s32 nightFlag;
|
||||
/* 0x0014 */ s32 totalDays;
|
||||
/* 0x0018 */ s32 bgsDayCount; // increments with totalDays, can be cleared with `Environment_ClearBgsDayCount`
|
||||
/* 0x001C */ char newf[6]; // string "ZELDAZ". start of `info` substruct, originally called "information"
|
||||
/* 0x0022 */ u16 deaths;
|
||||
/* 0x0024 */ char playerName[8];
|
||||
/* 0x002C */ s16 n64ddFlag;
|
||||
/* 0x002E */ s16 healthCapacity; // "max_life"
|
||||
/* 0x0030 */ s16 health; // "now_life"
|
||||
/* 0x0032 */ s8 magicLevel;
|
||||
/* 0x0033 */ s8 magic;
|
||||
/* 0x0032 */ s8 magicLevel; // 0 for no magic/new load, 1 for magic, 2 for double magic
|
||||
/* 0x0033 */ s8 magic; // current magic available for use
|
||||
/* 0x0034 */ s16 rupees;
|
||||
/* 0x0036 */ u16 swordHealth;
|
||||
/* 0x0038 */ u16 naviTimer;
|
||||
/* 0x003A */ u8 magicAcquired;
|
||||
/* 0x003C */ u8 doubleMagic;
|
||||
/* 0x003D */ u8 doubleDefense;
|
||||
/* 0x003A */ u8 isMagicAcquired;
|
||||
/* 0x003B */ char unk_3B[0x01];
|
||||
/* 0x003C */ u8 isDoubleMagicAcquired;
|
||||
/* 0x003D */ u8 isDoubleDefenseAcquired;
|
||||
/* 0x003E */ u8 bgsFlag;
|
||||
/* 0x003F */ u8 ocarinaGameRoundNum;
|
||||
/* 0x0040 */ ItemEquips childEquips;
|
||||
/* 0x004A */ ItemEquips adultEquips;
|
||||
/* 0x0054 */ u32 unk_54; // this may be incorrect, currently used for alignement
|
||||
/* 0x0066 */ s16 savedSceneNum;
|
||||
/* 0x0054 */ u32 unk_54; // this may be incorrect, currently used for alignment
|
||||
/* 0x0058 */ char unk_58[0x0E];
|
||||
/* 0x0066 */ s16 savedSceneNum; // Upstream TODO: sceneId
|
||||
/* 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[0x4];
|
||||
/* 0x0EB8 */ s32 highScores[7];
|
||||
/* 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"
|
||||
/* 0x0F40 */ u8 scarecrowCustomSongSet;
|
||||
/* 0x0F41 */ OcarinaNote scarecrowCustomSong[108];
|
||||
/* 0x0F3C */ char unk_F3C[0x4];
|
||||
/* 0x0F40 */ u8 scarecrowLongSongSet;
|
||||
/* 0x0F41 */ OcarinaNote scarecrowLongSong[108]; // Upstream TODO: Audio
|
||||
/* 0x12A1 */ char unk_12A1[0x24];
|
||||
/* 0x12C5 */ u8 scarecrowSpawnSongSet;
|
||||
/* 0x12C6 */ OcarinaNote scarecrowSpawnSong[16];
|
||||
/* 0x12C6 */ OcarinaNote scarecrowSpawnSong[16]; // Upstream TODO: Audio
|
||||
/* 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;
|
||||
/* 0x1360 */ s32 sceneSetupIndex; // "counter" // Upstream TODO: sceneLayer
|
||||
/* 0x1364 */ s32 respawnFlag; // "restart_flag"
|
||||
/* 0x1368 */ RespawnData respawn[3]; // "restart_data"
|
||||
/* 0x1368 */ RespawnData respawn[RESPAWN_MODE_MAX]; // "restart_data"
|
||||
/* 0x13BC */ f32 entranceSpeed;
|
||||
/* 0x13C0 */ u16 entranceSound;
|
||||
/* 0x13C3 */ u8 unk_13C3;
|
||||
/* 0x13C2 */ char unk_13C2[0x0001];
|
||||
/* 0x13C3 */ u8 retainWeatherMode;
|
||||
/* 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;
|
||||
@ -154,64 +204,69 @@ typedef struct {
|
||||
/* 0x13D4 */ s16 timer2Value;
|
||||
/* 0x13D6 */ s16 timerX[2];
|
||||
/* 0x13DA */ s16 timerY[2];
|
||||
/* 0x13DE */ char unk_13DE[0x0002];
|
||||
/* 0x13E0 */ u8 seqId;
|
||||
/* 0x13E1 */ u8 natureAmbienceId;
|
||||
/* 0x13E2 */ u8 buttonStatus[9];
|
||||
/* 0x13E2 */ u8 buttonStatus[9]; // SOH [Enhancements] Changed from 5 to 9 to support Dpad equips
|
||||
/* 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
|
||||
/* 0x13F0 */ s16 magicState; // determines magic meter behavior on each frame
|
||||
/* 0x13F2 */ s16 prevMagicState; // used to resume the previous state after adding or filling magic
|
||||
/* 0x13F4 */ s16 magicCapacity; // maximum magic available
|
||||
/* 0x13F6 */ s16 magicFillTarget; // target used to fill magic. Target can either be full capacity (Magic_Fill, magic upgrades), or the saved magic amount (loading a file, game over)
|
||||
/* 0x13F8 */ s16 magicTarget; // target for magic to step to when adding or consuming magic
|
||||
/* 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; // NTSC 0: Japanese; 1: English | PAL 0: English; 1: German; 2: French
|
||||
/* 0x140A */ u8 audioSetting;
|
||||
/* 0x140B */ char unk_140B[0x0001];
|
||||
/* 0x140C */ u8 zTargetSetting; // 0: Switch; 1: Hold
|
||||
/* 0x140E */ u16 forcedSeqId; // immediately start playing the sequence if set
|
||||
/* 0x1410 */ u8 unk_1410; // transition related
|
||||
/* 0x1410 */ u8 cutsceneTransitionControl; // context dependent usage: can either trigger a delayed fade or control fill alpha
|
||||
/* 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
|
||||
/* 0x1418 */ u8 transFadeDuration;
|
||||
/* 0x1419 */ u8 transWipeSpeed;
|
||||
/* 0x141A */ u16 skyboxTime;
|
||||
/* 0x141C */ u8 dogIsLost;
|
||||
/* 0x141D */ u8 nextTransition;
|
||||
/* 0x141D */ u8 nextTransitionType;
|
||||
/* 0x141E */ char unk_141E[0x0002];
|
||||
/* 0x1420 */ s16 worldMapArea;
|
||||
/* 0x1422 */ s16 sunsSongState; // controls the effects of suns song
|
||||
/* 0x1424 */ s16 healthAccumulator;
|
||||
uint32_t isMasterQuest;
|
||||
RandoSetting randoSettings[300];
|
||||
ItemLocationRando itemLocations[RC_MAX];
|
||||
HintLocationRando hintLocations[50];
|
||||
EntranceOverride entranceOverrides[ENTRANCE_OVERRIDES_MAX_COUNT];
|
||||
char childAltarText[250];
|
||||
char adultAltarText[750];
|
||||
char ganonHintText[150];
|
||||
char ganonText[250];
|
||||
u8 seedIcons[5];
|
||||
u16 randomizerInf[9];
|
||||
u8 temporaryWeapon;
|
||||
u16 adultTradeItems;
|
||||
u8 pendingIceTrapCount;
|
||||
u8 mqDungeonCount;
|
||||
SohStats sohStats;
|
||||
// #region SOH [General]
|
||||
// Upstream TODO: Move these to their own struct or name to more obviously specific to SoH
|
||||
/* */ uint32_t isMasterQuest;
|
||||
/* */ u8 mqDungeonCount;
|
||||
/* */ u8 pendingIceTrapCount;
|
||||
/* */ SohStats sohStats;
|
||||
/* */ u8 temporaryWeapon;
|
||||
// #endregion
|
||||
// #region SOH [Randomizer]
|
||||
// Upstream TODO: Move these to their own struct or name to more obviously specific to Randomizer
|
||||
/* */ RandoSetting randoSettings[300];
|
||||
/* */ ItemLocationRando itemLocations[RC_MAX];
|
||||
/* */ HintLocationRando hintLocations[50];
|
||||
/* */ EntranceOverride entranceOverrides[ENTRANCE_OVERRIDES_MAX_COUNT];
|
||||
/* */ char childAltarText[250];
|
||||
/* */ char adultAltarText[750];
|
||||
/* */ char ganonHintText[150];
|
||||
/* */ char ganonText[250];
|
||||
/* */ u8 seedIcons[5];
|
||||
/* */ u16 randomizerInf[9];
|
||||
/* */ u16 adultTradeItems;
|
||||
// #endregion
|
||||
} 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
|
||||
@ -243,4 +298,521 @@ typedef enum {
|
||||
/* 3 */ SUNSSONG_SPECIAL // time does not advance, but signals the song was played. used for freezing redeads
|
||||
} SunsSongState;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ GAMEMODE_NORMAL,
|
||||
/* 1 */ GAMEMODE_TITLE_SCREEN,
|
||||
/* 2 */ GAMEMODE_FILE_SELECT, // Note: only instance type transitions swap to file select
|
||||
/* 3 */ GAMEMODE_END_CREDITS
|
||||
} GameMode;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ SCENE_LAYER_CHILD_DAY,
|
||||
/* 1 */ SCENE_LAYER_CHILD_NIGHT,
|
||||
/* 2 */ SCENE_LAYER_ADULT_DAY,
|
||||
/* 3 */ SCENE_LAYER_ADULT_NIGHT,
|
||||
/* 4 */ SCENE_LAYER_CUTSCENE_FIRST
|
||||
} SceneLayer;
|
||||
|
||||
#define IS_CUTSCENE_LAYER (gSaveContext.sceneLayer >= SCENE_LAYER_CUTSCENE_FIRST)
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ LINK_AGE_ADULT,
|
||||
/* 1 */ LINK_AGE_CHILD
|
||||
} LinkAge;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* SaveContext flags
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* SaveContext.eventChkInf
|
||||
*/
|
||||
|
||||
#define EVENTCHKINF_02 0x02
|
||||
#define EVENTCHKINF_03 0x03
|
||||
#define EVENTCHKINF_04 0x04
|
||||
#define EVENTCHKINF_05 0x05
|
||||
#define EVENTCHKINF_07 0x07
|
||||
#define EVENTCHKINF_09 0x09
|
||||
#define EVENTCHKINF_0A 0x0A
|
||||
#define EVENTCHKINF_0B 0x0B
|
||||
#define EVENTCHKINF_0C 0x0C
|
||||
#define EVENTCHKINF_0F 0x0F
|
||||
#define EVENTCHKINF_10 0x10
|
||||
#define EVENTCHKINF_11 0x11
|
||||
#define EVENTCHKINF_12 0x12
|
||||
#define EVENTCHKINF_TALON_WOKEN_IN_CASTLE 0x13
|
||||
#define EVENTCHKINF_TALON_RETURNED_FROM_CASTLE 0x14
|
||||
#define EVENTCHKINF_15 0x15
|
||||
#define EVENTCHKINF_16 0x16
|
||||
#define EVENTCHKINF_EPONA_OBTAINED 0x18
|
||||
#define EVENTCHKINF_1B 0x1B
|
||||
#define EVENTCHKINF_1C 0x1C
|
||||
#define EVENTCHKINF_1D 0x1D
|
||||
#define EVENTCHKINF_1E 0x1E
|
||||
#define EVENTCHKINF_20 0x20
|
||||
#define EVENTCHKINF_21 0x21
|
||||
#define EVENTCHKINF_22 0x22
|
||||
#define EVENTCHKINF_23 0x23
|
||||
#define EVENTCHKINF_25 0x25
|
||||
#define EVENTCHKINF_2A 0x2A
|
||||
#define EVENTCHKINF_2B 0x2B
|
||||
#define EVENTCHKINF_2C 0x2C
|
||||
#define EVENTCHKINF_2D 0x2D
|
||||
#define EVENTCHKINF_2F 0x2F
|
||||
#define EVENTCHKINF_30 0x30
|
||||
#define EVENTCHKINF_31 0x31
|
||||
#define EVENTCHKINF_32 0x32
|
||||
#define EVENTCHKINF_33 0x33
|
||||
#define EVENTCHKINF_37 0x37
|
||||
#define EVENTCHKINF_38 0x38
|
||||
#define EVENTCHKINF_39 0x39
|
||||
#define EVENTCHKINF_3A 0x3A
|
||||
#define EVENTCHKINF_3B 0x3B
|
||||
#define EVENTCHKINF_3C 0x3C
|
||||
|
||||
// 0x40
|
||||
#define EVENTCHKINF_40_INDEX 4
|
||||
#define EVENTCHKINF_40_SHIFT 0
|
||||
#define EVENTCHKINF_40_MASK (1 << EVENTCHKINF_40_SHIFT)
|
||||
#define EVENTCHKINF_40 ((EVENTCHKINF_40_INDEX << 4) | EVENTCHKINF_40_SHIFT)
|
||||
|
||||
#define EVENTCHKINF_41 0x41
|
||||
#define EVENTCHKINF_42 0x42
|
||||
#define EVENTCHKINF_43 0x43
|
||||
#define EVENTCHKINF_45 0x45
|
||||
#define EVENTCHKINF_48 0x48
|
||||
#define EVENTCHKINF_49 0x49
|
||||
#define EVENTCHKINF_4A 0x4A
|
||||
#define EVENTCHKINF_4B 0x4B
|
||||
#define EVENTCHKINF_4C 0x4C
|
||||
#define EVENTCHKINF_4D 0x4D
|
||||
#define EVENTCHKINF_4E 0x4E
|
||||
#define EVENTCHKINF_4F 0x4F
|
||||
#define EVENTCHKINF_50 0x50
|
||||
#define EVENTCHKINF_51 0x51
|
||||
#define EVENTCHKINF_52 0x52
|
||||
#define EVENTCHKINF_54 0x54
|
||||
#define EVENTCHKINF_55 0x55
|
||||
#define EVENTCHKINF_59 0x59
|
||||
#define EVENTCHKINF_5A 0x5A
|
||||
#define EVENTCHKINF_5B 0x5B
|
||||
#define EVENTCHKINF_5C 0x5C
|
||||
#define EVENTCHKINF_65 0x65
|
||||
#define EVENTCHKINF_67 0x67
|
||||
#define EVENTCHKINF_68 0x68
|
||||
#define EVENTCHKINF_69 0x69
|
||||
#define EVENTCHKINF_TALON_WOKEN_IN_KAKARIKO 0x6A
|
||||
|
||||
// 0x6B
|
||||
#define EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_INDEX 6
|
||||
#define EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_SHIFT 11
|
||||
#define EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_MASK (1 << EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_SHIFT)
|
||||
#define EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO ((EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_INDEX << 4) | EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_SHIFT)
|
||||
|
||||
#define EVENTCHKINF_6E 0x6E
|
||||
#define EVENTCHKINF_6F 0x6F
|
||||
#define EVENTCHKINF_70 0x70
|
||||
#define EVENTCHKINF_71 0x71
|
||||
#define EVENTCHKINF_72 0x72
|
||||
#define EVENTCHKINF_73 0x73
|
||||
#define EVENTCHKINF_74 0x74
|
||||
#define EVENTCHKINF_75 0x75
|
||||
#define EVENTCHKINF_76 0x76
|
||||
#define EVENTCHKINF_77 0x77
|
||||
#define EVENTCHKINF_78 0x78
|
||||
#define EVENTCHKINF_80 0x80
|
||||
#define EVENTCHKINF_82 0x82
|
||||
#define EVENTCHKINF_8C 0x8C
|
||||
#define EVENTCHKINF_8D 0x8D
|
||||
#define EVENTCHKINF_8E 0x8E
|
||||
#define EVENTCHKINF_8F 0x8F
|
||||
|
||||
// 0x90-0x93
|
||||
// carpenters freed from the gerudo
|
||||
#define EVENTCHKINF_CARPENTERS_FREE_INDEX 9
|
||||
#define EVENTCHKINF_CARPENTERS_FREE_SHIFT(n) (0 + (n))
|
||||
#define EVENTCHKINF_CARPENTERS_FREE_MASK(n) (1 << EVENTCHKINF_CARPENTERS_FREE_SHIFT(n))
|
||||
#define EVENTCHKINF_CARPENTERS_FREE(n) ((EVENTCHKINF_CARPENTERS_FREE_INDEX << 4) | EVENTCHKINF_CARPENTERS_FREE_SHIFT(n))
|
||||
#define EVENTCHKINF_CARPENTERS_FREE_MASK_ALL (\
|
||||
EVENTCHKINF_CARPENTERS_FREE_MASK(0) \
|
||||
| EVENTCHKINF_CARPENTERS_FREE_MASK(1) \
|
||||
| EVENTCHKINF_CARPENTERS_FREE_MASK(2) \
|
||||
| EVENTCHKINF_CARPENTERS_FREE_MASK(3) )
|
||||
#define GET_EVENTCHKINF_CARPENTERS_FREE_ALL() \
|
||||
CHECK_FLAG_ALL(gSaveContext.eventChkInf[EVENTCHKINF_CARPENTERS_FREE_INDEX], EVENTCHKINF_CARPENTERS_FREE_MASK_ALL)
|
||||
|
||||
#define EVENTCHKINF_94 0x94
|
||||
#define EVENTCHKINF_95 0x95
|
||||
#define EVENTCHKINF_96 0x96
|
||||
#define EVENTCHKINF_9C 0x9C
|
||||
#define EVENTCHKINF_A0 0xA0
|
||||
#define EVENTCHKINF_A1 0xA1
|
||||
#define EVENTCHKINF_A3 0xA3
|
||||
#define EVENTCHKINF_A4 0xA4
|
||||
#define EVENTCHKINF_A5 0xA5
|
||||
#define EVENTCHKINF_A6 0xA6
|
||||
#define EVENTCHKINF_A7 0xA7
|
||||
#define EVENTCHKINF_A8 0xA8
|
||||
#define EVENTCHKINF_A9 0xA9
|
||||
#define EVENTCHKINF_AA 0xAA
|
||||
#define EVENTCHKINF_AC 0xAC
|
||||
#define EVENTCHKINF_AD 0xAD
|
||||
#define EVENTCHKINF_B0 0xB0
|
||||
#define EVENTCHKINF_B1 0xB1
|
||||
#define EVENTCHKINF_B2 0xB2
|
||||
#define EVENTCHKINF_B3 0xB3
|
||||
#define EVENTCHKINF_B4 0xB4
|
||||
#define EVENTCHKINF_B5 0xB5
|
||||
#define EVENTCHKINF_B6 0xB6
|
||||
#define EVENTCHKINF_B7 0xB7
|
||||
#define EVENTCHKINF_B8 0xB8
|
||||
#define EVENTCHKINF_B9 0xB9
|
||||
#define EVENTCHKINF_BA 0xBA
|
||||
#define EVENTCHKINF_BB 0xBB
|
||||
#define EVENTCHKINF_BC 0xBC
|
||||
#define EVENTCHKINF_BD 0xBD
|
||||
#define EVENTCHKINF_BE 0xBE
|
||||
#define EVENTCHKINF_BF 0xBF
|
||||
#define EVENTCHKINF_C0 0xC0
|
||||
#define EVENTCHKINF_C1 0xC1
|
||||
#define EVENTCHKINF_C3 0xC3
|
||||
#define EVENTCHKINF_C4 0xC4
|
||||
#define EVENTCHKINF_C5 0xC5
|
||||
#define EVENTCHKINF_C6 0xC6
|
||||
#define EVENTCHKINF_C7 0xC7
|
||||
#define EVENTCHKINF_C8 0xC8
|
||||
#define EVENTCHKINF_C9 0xC9
|
||||
|
||||
// 0xD0-0xD6
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_INDEX 13
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_CHOIR_SHIFT 0
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_ZL_SHIFT 1
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_EPONA_SHIFT 2
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_SUNS_SHIFT 3
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_SARIA_SHIFT 4
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_SOT_SHIFT 5
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_STORMS_SHIFT 6
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_CHOIR_MASK (1 << EVENTCHKINF_SONGS_FOR_FROGS_CHOIR_SHIFT)
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_ZL_MASK (1 << EVENTCHKINF_SONGS_FOR_FROGS_ZL_SHIFT)
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_EPONA_MASK (1 << EVENTCHKINF_SONGS_FOR_FROGS_EPONA_SHIFT)
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_SUNS_MASK (1 << EVENTCHKINF_SONGS_FOR_FROGS_SUNS_SHIFT)
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_SARIA_MASK (1 << EVENTCHKINF_SONGS_FOR_FROGS_SARIA_SHIFT)
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_SOT_MASK (1 << EVENTCHKINF_SONGS_FOR_FROGS_SOT_SHIFT)
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_STORMS_MASK (1 << EVENTCHKINF_SONGS_FOR_FROGS_STORMS_SHIFT)
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_CHOIR ((EVENTCHKINF_SONGS_FOR_FROGS_INDEX << 4) | EVENTCHKINF_SONGS_FOR_FROGS_CHOIR_SHIFT)
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_ZL ((EVENTCHKINF_SONGS_FOR_FROGS_INDEX << 4) | EVENTCHKINF_SONGS_FOR_FROGS_ZL_SHIFT)
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_EPONA ((EVENTCHKINF_SONGS_FOR_FROGS_INDEX << 4) | EVENTCHKINF_SONGS_FOR_FROGS_EPONA_SHIFT)
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_SUNS ((EVENTCHKINF_SONGS_FOR_FROGS_INDEX << 4) | EVENTCHKINF_SONGS_FOR_FROGS_SUNS_SHIFT)
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_SARIA ((EVENTCHKINF_SONGS_FOR_FROGS_INDEX << 4) | EVENTCHKINF_SONGS_FOR_FROGS_SARIA_SHIFT)
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_SOT ((EVENTCHKINF_SONGS_FOR_FROGS_INDEX << 4) | EVENTCHKINF_SONGS_FOR_FROGS_SOT_SHIFT)
|
||||
#define EVENTCHKINF_SONGS_FOR_FROGS_STORMS ((EVENTCHKINF_SONGS_FOR_FROGS_INDEX << 4) | EVENTCHKINF_SONGS_FOR_FROGS_STORMS_SHIFT)
|
||||
|
||||
// 0xDA-0xDE
|
||||
#define EVENTCHKINF_DA_DB_DC_DD_DE_INDEX 13
|
||||
#define EVENTCHKINF_DA_MASK (1 << 10)
|
||||
#define EVENTCHKINF_DB_MASK (1 << 11)
|
||||
#define EVENTCHKINF_DC_MASK (1 << 12)
|
||||
#define EVENTCHKINF_DD_MASK (1 << 13)
|
||||
#define EVENTCHKINF_DE_MASK (1 << 14)
|
||||
|
||||
|
||||
/*
|
||||
* SaveContext.itemGetInf
|
||||
*/
|
||||
|
||||
#define ITEMGETINF_TALON_BOTTLE 0x02
|
||||
#define ITEMGETINF_03 0x03
|
||||
#define ITEMGETINF_04 0x04
|
||||
#define ITEMGETINF_05 0x05
|
||||
#define ITEMGETINF_06 0x06
|
||||
#define ITEMGETINF_07 0x07
|
||||
#define ITEMGETINF_08 0x08
|
||||
#define ITEMGETINF_09 0x09
|
||||
#define ITEMGETINF_0A 0x0A
|
||||
#define ITEMGETINF_0B 0x0B
|
||||
#define ITEMGETINF_0C 0x0C
|
||||
#define ITEMGETINF_0D 0x0D
|
||||
#define ITEMGETINF_0E 0x0E
|
||||
#define ITEMGETINF_0F 0x0F
|
||||
#define ITEMGETINF_10 0x10
|
||||
#define ITEMGETINF_11 0x11
|
||||
#define ITEMGETINF_12 0x12
|
||||
#define ITEMGETINF_13 0x13
|
||||
#define ITEMGETINF_15 0x15
|
||||
#define ITEMGETINF_16 0x16
|
||||
#define ITEMGETINF_17 0x17
|
||||
|
||||
// 0x18-0x1A
|
||||
#define ITEMGETINF_18_19_1A_INDEX 1
|
||||
#define ITEMGETINF_18_SHIFT 8
|
||||
#define ITEMGETINF_19_SHIFT 9
|
||||
#define ITEMGETINF_1A_SHIFT 10
|
||||
#define ITEMGETINF_18_MASK (1 << ITEMGETINF_18_SHIFT)
|
||||
#define ITEMGETINF_19_MASK (1 << ITEMGETINF_19_SHIFT)
|
||||
#define ITEMGETINF_1A_MASK (1 << ITEMGETINF_1A_SHIFT)
|
||||
#define ITEMGETINF_18 ((ITEMGETINF_18_19_1A_INDEX << 4) | ITEMGETINF_18_SHIFT)
|
||||
#define ITEMGETINF_19 ((ITEMGETINF_18_19_1A_INDEX << 4) | ITEMGETINF_19_SHIFT)
|
||||
#define ITEMGETINF_1A ((ITEMGETINF_18_19_1A_INDEX << 4) | ITEMGETINF_1A_SHIFT)
|
||||
|
||||
#define ITEMGETINF_1B 0x1B
|
||||
#define ITEMGETINF_1C 0x1C
|
||||
#define ITEMGETINF_1D 0x1D
|
||||
#define ITEMGETINF_1E 0x1E
|
||||
#define ITEMGETINF_1F 0x1F
|
||||
#define ITEMGETINF_23 0x23
|
||||
#define ITEMGETINF_24 0x24
|
||||
#define ITEMGETINF_25 0x25
|
||||
#define ITEMGETINF_26 0x26
|
||||
#define ITEMGETINF_2A 0x2A
|
||||
#define ITEMGETINF_2C 0x2C
|
||||
#define ITEMGETINF_2E 0x2E
|
||||
#define ITEMGETINF_30 0x30
|
||||
#define ITEMGETINF_31 0x31
|
||||
#define ITEMGETINF_38 0x38
|
||||
#define ITEMGETINF_39 0x39
|
||||
#define ITEMGETINF_3A 0x3A
|
||||
#define ITEMGETINF_3B 0x3B
|
||||
#define ITEMGETINF_3F 0x3F
|
||||
|
||||
|
||||
/*
|
||||
* SaveContext.infTable
|
||||
*/
|
||||
|
||||
#define INFTABLE_00 0x00
|
||||
#define INFTABLE_01 0x01
|
||||
#define INFTABLE_03 0x03
|
||||
#define INFTABLE_05 0x05
|
||||
#define INFTABLE_0C 0x0C
|
||||
#define INFTABLE_0E 0x0E
|
||||
#define INFTABLE_10 0x10
|
||||
#define INFTABLE_15 0x15
|
||||
#define INFTABLE_17 0x17
|
||||
#define INFTABLE_19 0x19
|
||||
#define INFTABLE_1E 0x1E
|
||||
#define INFTABLE_22 0x22
|
||||
#define INFTABLE_24 0x24
|
||||
#define INFTABLE_26 0x26
|
||||
#define INFTABLE_28 0x28
|
||||
#define INFTABLE_2A 0x2A
|
||||
#define INFTABLE_2B 0x2B
|
||||
#define INFTABLE_2E 0x2E
|
||||
#define INFTABLE_2F 0x2F
|
||||
#define INFTABLE_30 0x30
|
||||
#define INFTABLE_41 0x41
|
||||
#define INFTABLE_47 0x47
|
||||
#define INFTABLE_51 0x51
|
||||
#define INFTABLE_59 0x59
|
||||
#define INFTABLE_61 0x61
|
||||
#define INFTABLE_66 0x66
|
||||
#define INFTABLE_6A 0x6A
|
||||
#define INFTABLE_6C 0x6C
|
||||
#define INFTABLE_71 0x71
|
||||
#define INFTABLE_76 0x76
|
||||
#define INFTABLE_77 0x77
|
||||
#define INFTABLE_TALKED_TO_TALON_IN_RANCH_HOUSE 0x7E
|
||||
#define INFTABLE_84 0x84
|
||||
#define INFTABLE_85 0x85
|
||||
#define INFTABLE_8B 0x8B
|
||||
#define INFTABLE_8C 0x8C
|
||||
#define INFTABLE_8D 0x8D
|
||||
#define INFTABLE_8E 0x8E
|
||||
#define INFTABLE_94 0x94
|
||||
#define INFTABLE_97 0x97
|
||||
#define INFTABLE_9A 0x9A
|
||||
#define INFTABLE_A2 0xA2
|
||||
#define INFTABLE_AB 0xAB
|
||||
#define INFTABLE_B0 0xB0
|
||||
#define INFTABLE_B1 0xB1
|
||||
#define INFTABLE_B4 0xB4
|
||||
#define INFTABLE_B6 0xB6
|
||||
#define INFTABLE_B7 0xB7
|
||||
#define INFTABLE_B8 0xB8
|
||||
#define INFTABLE_B9 0xB9
|
||||
#define INFTABLE_BC 0xBC
|
||||
#define INFTABLE_C0 0xC0
|
||||
#define INFTABLE_C1 0xC1
|
||||
#define INFTABLE_C2 0xC2
|
||||
#define INFTABLE_C3 0xC3
|
||||
#define INFTABLE_C4 0xC4
|
||||
#define INFTABLE_C5 0xC5
|
||||
#define INFTABLE_C6 0xC6
|
||||
#define INFTABLE_C7 0xC7
|
||||
#define INFTABLE_C8 0xC8
|
||||
#define INFTABLE_C9 0xC9
|
||||
#define INFTABLE_CA 0xCA
|
||||
#define INFTABLE_CB 0xCB
|
||||
#define INFTABLE_CC 0xCC
|
||||
#define INFTABLE_CD 0xCD
|
||||
#define INFTABLE_CE 0xCE
|
||||
#define INFTABLE_D0 0xD0
|
||||
#define INFTABLE_D2 0xD2
|
||||
#define INFTABLE_D4 0xD4
|
||||
#define INFTABLE_D6 0xD6
|
||||
#define INFTABLE_D8 0xD8
|
||||
#define INFTABLE_D9 0xD9
|
||||
#define INFTABLE_E0 0xE0
|
||||
#define INFTABLE_E3 0xE3
|
||||
#define INFTABLE_E6 0xE6
|
||||
#define INFTABLE_EB 0xEB
|
||||
#define INFTABLE_F0 0xF0
|
||||
#define INFTABLE_F4 0xF4
|
||||
#define INFTABLE_F8 0xF8
|
||||
#define INFTABLE_FC 0xFC
|
||||
#define INFTABLE_109 0x109
|
||||
#define INFTABLE_10A 0x10A
|
||||
#define INFTABLE_10B 0x10B
|
||||
#define INFTABLE_10C 0x10C
|
||||
#define INFTABLE_10D 0x10D
|
||||
#define INFTABLE_10E 0x10E
|
||||
#define INFTABLE_10F 0x10F
|
||||
#define INFTABLE_113 0x113
|
||||
#define INFTABLE_11A 0x11A
|
||||
#define INFTABLE_11E 0x11E
|
||||
#define INFTABLE_124 0x124
|
||||
#define INFTABLE_129 0x129
|
||||
#define INFTABLE_12A 0x12A
|
||||
#define INFTABLE_138 0x138
|
||||
#define INFTABLE_139 0x139
|
||||
#define INFTABLE_140 0x140
|
||||
#define INFTABLE_141 0x141
|
||||
#define INFTABLE_142 0x142
|
||||
#define INFTABLE_143 0x143
|
||||
#define INFTABLE_144 0x144
|
||||
#define INFTABLE_145 0x145
|
||||
#define INFTABLE_146 0x146
|
||||
#define INFTABLE_147 0x147
|
||||
#define INFTABLE_160 0x160
|
||||
#define INFTABLE_161 0x161
|
||||
#define INFTABLE_162 0x162
|
||||
#define INFTABLE_163 0x163
|
||||
#define INFTABLE_164 0x164
|
||||
#define INFTABLE_166 0x166
|
||||
#define INFTABLE_16A 0x16A
|
||||
#define INFTABLE_16C 0x16C
|
||||
#define INFTABLE_170 0x170
|
||||
#define INFTABLE_171 0x171
|
||||
#define INFTABLE_172 0x172
|
||||
#define INFTABLE_176 0x176
|
||||
#define INFTABLE_178 0x178
|
||||
#define INFTABLE_17C 0x17C
|
||||
#define INFTABLE_17F 0x17F
|
||||
#define INFTABLE_190 0x190
|
||||
#define INFTABLE_191 0x191
|
||||
#define INFTABLE_192 0x192
|
||||
#define INFTABLE_193 0x193
|
||||
#define INFTABLE_195 0x195
|
||||
#define INFTABLE_196 0x196
|
||||
#define INFTABLE_197 0x197
|
||||
#define INFTABLE_198 0x198
|
||||
|
||||
// 0x199-0x19F
|
||||
#define INFTABLE_199_19A_19B_19C_19D_19E_19F_INDEX 25
|
||||
#define INFTABLE_199_MASK (1 << 9)
|
||||
#define INFTABLE_19A_MASK (1 << 10)
|
||||
#define INFTABLE_19B_MASK (1 << 11)
|
||||
#define INFTABLE_19C_MASK (1 << 12)
|
||||
#define INFTABLE_19D_MASK (1 << 13)
|
||||
#define INFTABLE_19E_MASK (1 << 14)
|
||||
#define INFTABLE_19F_MASK (1 << 15)
|
||||
|
||||
// 0x1A0-0x1AF
|
||||
#define INFTABLE_1AX_INDEX 26
|
||||
#define INFTABLE_1A0_SHIFT 0
|
||||
#define INFTABLE_1A1_SHIFT 1
|
||||
#define INFTABLE_1A2_SHIFT 2
|
||||
#define INFTABLE_1A3_SHIFT 3
|
||||
#define INFTABLE_1A4_SHIFT 4
|
||||
#define INFTABLE_1A5_SHIFT 5
|
||||
#define INFTABLE_1A6_SHIFT 6
|
||||
#define INFTABLE_1A7_SHIFT 7
|
||||
#define INFTABLE_1A8_SHIFT 8
|
||||
#define INFTABLE_1A9_SHIFT 9
|
||||
#define INFTABLE_1AB_SHIFT 11
|
||||
#define INFTABLE_1AD_SHIFT 13
|
||||
|
||||
// 0x1D0-0x1DF
|
||||
#define INFTABLE_1DX_INDEX 29
|
||||
|
||||
|
||||
/*
|
||||
* SaveContext.eventInf
|
||||
*/
|
||||
|
||||
// 0x00-0x0F
|
||||
// horses related
|
||||
#define EVENTINF_HORSES_INDEX 0
|
||||
#define EVENTINF_HORSES_STATE_SHIFT 0
|
||||
#define EVENTINF_HORSES_HORSETYPE_SHIFT 4
|
||||
#define EVENTINF_HORSES_05_SHIFT 5
|
||||
#define EVENTINF_HORSES_06_SHIFT 6
|
||||
#define EVENTINF_HORSES_08_SHIFT 8
|
||||
#define EVENTINF_HORSES_0A_SHIFT 10
|
||||
#define EVENTINF_HORSES_0F_SHIFT 15 // unused?
|
||||
#define EVENTINF_HORSES_STATE_MASK (0xF << EVENTINF_HORSES_STATE_SHIFT)
|
||||
#define EVENTINF_HORSES_HORSETYPE_MASK (1 << EVENTINF_HORSES_HORSETYPE_SHIFT)
|
||||
#define EVENTINF_HORSES_05_MASK (1 << EVENTINF_HORSES_05_SHIFT)
|
||||
#define EVENTINF_HORSES_06_MASK (1 << EVENTINF_HORSES_06_SHIFT)
|
||||
#define EVENTINF_HORSES_0F_MASK (1 << EVENTINF_HORSES_0F_SHIFT)
|
||||
#define EVENTINF_HORSES_05 ((EVENTINF_HORSES_INDEX << 4) | EVENTINF_HORSES_05_SHIFT)
|
||||
#define EVENTINF_HORSES_06 ((EVENTINF_HORSES_INDEX << 4) | EVENTINF_HORSES_06_SHIFT)
|
||||
// Used in z_en_ta (Talon) to store Cucco game winning status
|
||||
// and in z_en_ge1 (Gerudo) to store archery in-progress status
|
||||
#define EVENTINF_HORSES_08 ((EVENTINF_HORSES_INDEX << 4) | EVENTINF_HORSES_08_SHIFT)
|
||||
#define EVENTINF_CUCCO_GAME_WON EVENTINF_HORSES_08
|
||||
// Used in z_en_ta (Talon) and z_en_ma3 (Malon) to store minigame finishing status
|
||||
#define EVENTINF_HORSES_0A ((EVENTINF_HORSES_INDEX << 4) | EVENTINF_HORSES_0A_SHIFT)
|
||||
#define EVENTINF_CUCCO_GAME_FINISHED EVENTINF_HORSES_0A
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ EVENTINF_HORSES_STATE_0,
|
||||
/* 1 */ EVENTINF_HORSES_STATE_1,
|
||||
/* 2 */ EVENTINF_HORSES_STATE_2,
|
||||
/* 3 */ EVENTINF_HORSES_STATE_3,
|
||||
/* 4 */ EVENTINF_HORSES_STATE_4,
|
||||
/* 5 */ EVENTINF_HORSES_STATE_5,
|
||||
/* 6 */ EVENTINF_HORSES_STATE_6,
|
||||
/* 7 */ EVENTINF_HORSES_STATE_7
|
||||
} EventInfHorsesState;
|
||||
|
||||
// "InRaceSeq"
|
||||
#define GET_EVENTINF_HORSES_STATE() \
|
||||
((gSaveContext.eventInf[EVENTINF_HORSES_INDEX] & EVENTINF_HORSES_STATE_MASK) >> EVENTINF_HORSES_STATE_SHIFT)
|
||||
#define SET_EVENTINF_HORSES_STATE(v) \
|
||||
gSaveContext.eventInf[EVENTINF_HORSES_INDEX] = \
|
||||
(gSaveContext.eventInf[EVENTINF_HORSES_INDEX] & ~EVENTINF_HORSES_STATE_MASK) | \
|
||||
((v) << EVENTINF_HORSES_STATE_SHIFT)
|
||||
|
||||
#define GET_EVENTINF_HORSES_HORSETYPE() \
|
||||
((gSaveContext.eventInf[EVENTINF_HORSES_INDEX] & EVENTINF_HORSES_HORSETYPE_MASK) >> EVENTINF_HORSES_HORSETYPE_SHIFT)
|
||||
#define SET_EVENTINF_HORSES_HORSETYPE(v) \
|
||||
gSaveContext.eventInf[EVENTINF_HORSES_INDEX] = \
|
||||
(gSaveContext.eventInf[EVENTINF_HORSES_INDEX] & ~EVENTINF_HORSES_HORSETYPE_MASK) | \
|
||||
((v) << EVENTINF_HORSES_HORSETYPE_SHIFT)
|
||||
|
||||
#define SET_EVENTINF_HORSES_0F(v) \
|
||||
gSaveContext.eventInf[EVENTINF_HORSES_INDEX] = \
|
||||
(gSaveContext.eventInf[EVENTINF_HORSES_INDEX] & ~EVENTINF_HORSES_0F_MASK) | ((v) << EVENTINF_HORSES_0F_SHIFT)
|
||||
|
||||
|
||||
#define EVENTINF_10 0x10
|
||||
|
||||
// 0x20-0x24
|
||||
#define EVENTINF_20_21_22_23_24_INDEX 2
|
||||
#define EVENTINF_20_MASK (1 << 0)
|
||||
#define EVENTINF_21_MASK (1 << 1)
|
||||
#define EVENTINF_22_MASK (1 << 2)
|
||||
#define EVENTINF_23_MASK (1 << 3)
|
||||
#define EVENTINF_24_MASK (1 << 4)
|
||||
|
||||
#define EVENTINF_30 0x30
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
@ -245,6 +245,52 @@ namespace GameControlEditor {
|
||||
UIWidgets::EnhancementSliderFloat("Camera Sensitivity: %d %%", "##Sensitivity", "gCameraSensitivity", 0.01f, 5.0f, "", 1.0f, true, true);
|
||||
}
|
||||
|
||||
void DrawDpadControlPanel() {
|
||||
if (!ImGui::CollapsingHeader("D-Pad Controls")) {
|
||||
return;
|
||||
}
|
||||
|
||||
ImVec2 cursor = ImGui::GetCursorPos();
|
||||
ImGui::SetCursorPos(ImVec2(cursor.x + 5, cursor.y + 5));
|
||||
SohImGui::BeginGroupPanel("D-Pad Options", ImGui::GetContentRegionAvail());
|
||||
UIWidgets::PaddedEnhancementCheckbox("D-pad Support on Pause Screen", "gDpadPause");
|
||||
DrawHelpIcon("Navigate Pause with the D-pad\nIf used with D-pad as Equip Items, you must hold C-Up to equip instead of navigate\n"
|
||||
"To make the cursor only move a single space no matter how long a direction is held, manually set gDpadHoldChange to 0");
|
||||
UIWidgets::PaddedEnhancementCheckbox("D-pad Support in Text Boxes", "gDpadText");
|
||||
DrawHelpIcon("Navigate choices in text boxes, shop item selection, and the file select / name entry screens with the D-pad\n"
|
||||
"To make the cursor only move a single space during name entry no matter how long a direction is held, manually set gDpadHoldChange to 0");
|
||||
UIWidgets::PaddedEnhancementCheckbox("D-pad as Equip Items", "gDpadEquips");
|
||||
DrawHelpIcon("Equip items and equipment on the D-pad\nIf used with D-pad on Pause Screen, you must hold C-Up to equip instead of navigate");
|
||||
SohImGui::EndGroupPanel();
|
||||
}
|
||||
|
||||
void DrawMiscControlPanel() {
|
||||
if (!ImGui::CollapsingHeader("Miscellaneous Controls")) {
|
||||
return;
|
||||
}
|
||||
|
||||
ImVec2 cursor = ImGui::GetCursorPos();
|
||||
ImGui::SetCursorPos(ImVec2(cursor.x + 5, cursor.y + 5));
|
||||
SohImGui::BeginGroupPanel("Misc Controls", ImGui::GetContentRegionAvail());
|
||||
UIWidgets::PaddedEnhancementCheckbox("Enable walk speed modifiers", "gEnableWalkModify", true, false);
|
||||
DrawHelpIcon("Hold the assigned button to change the maximum walking speed\nTo change the assigned button, go into the Ports tabs above");
|
||||
if (CVar_GetS32("gEnableWalkModify", 0)) {
|
||||
UIWidgets::Spacer(5);
|
||||
SohImGui::BeginGroupPanel("Walk Modifier", ImGui::GetContentRegionAvail());
|
||||
UIWidgets::PaddedEnhancementCheckbox("Toggle modifier instead of holding", "gWalkSpeedToggle", true, false);
|
||||
UIWidgets::EnhancementSliderFloat("Modifier 1: %d %%", "##WalkMod1", "gWalkModifierOne", 0.0f, 5.0f, "", 1.0f, true);
|
||||
UIWidgets::EnhancementSliderFloat("Modifier 2: %d %%", "##WalkMod2", "gWalkModifierTwo", 0.0f, 5.0f, "", 1.0f, true);
|
||||
SohImGui::EndGroupPanel();
|
||||
}
|
||||
UIWidgets::Spacer(0);
|
||||
UIWidgets::PaddedEnhancementCheckbox("Allow the cursor to be on any slot", "gPauseAnyCursor");
|
||||
DrawHelpIcon("Allows the cursor on the pause menu to be over any slot\nSimilar to Rando and Spaceworld 97");
|
||||
UIWidgets::PaddedEnhancementCheckbox("Answer Navi Prompt with L Button", "gNaviOnL");
|
||||
DrawHelpIcon("Speak to Navi with L but enter first-person camera with C-Up");
|
||||
SohImGui::EndGroupPanel();
|
||||
|
||||
}
|
||||
|
||||
void DrawUI(bool& open) {
|
||||
if (!open) {
|
||||
CVar_SetS32("gGameControlEditorEnabled", false);
|
||||
@ -271,6 +317,8 @@ namespace GameControlEditor {
|
||||
if (CurrentPort == 0) {
|
||||
DrawOcarinaControlPanel();
|
||||
DrawCameraControlPanel();
|
||||
DrawDpadControlPanel();
|
||||
DrawMiscControlPanel();
|
||||
} else {
|
||||
DrawCustomButtons();
|
||||
}
|
||||
|
@ -347,18 +347,18 @@ CrowdControl::EffectResult CrowdControl::ExecuteEffect(std::string effectId, uin
|
||||
if (dryRun == 0) CMD_EXECUTE(EFFECT_REMOVE_HEART_CONTAINER);
|
||||
return EffectResult::Success;
|
||||
} else if (effectId == EFFECT_FILL_MAGIC) {
|
||||
if (!gSaveContext.magicAcquired) {
|
||||
if (!gSaveContext.isMagicAcquired) {
|
||||
return EffectResult::Failure;
|
||||
}
|
||||
|
||||
if (gSaveContext.magic >= (gSaveContext.doubleMagic + 1) + 0x30) {
|
||||
if (gSaveContext.magic >= (gSaveContext.isDoubleMagicAcquired + 1) + 0x30) {
|
||||
return EffectResult::Failure;
|
||||
}
|
||||
|
||||
if (dryRun == 0) CMD_EXECUTE(EFFECT_FILL_MAGIC);
|
||||
return EffectResult::Success;
|
||||
} else if (effectId == EFFECT_EMPTY_MAGIC) {
|
||||
if (!gSaveContext.magicAcquired || gSaveContext.magic <= 0) {
|
||||
if (!gSaveContext.isMagicAcquired || gSaveContext.magic <= 0) {
|
||||
return EffectResult::Failure;
|
||||
}
|
||||
|
||||
|
@ -355,7 +355,7 @@ static bool EntranceHandler(std::shared_ptr<Ship::Console> Console, const std::v
|
||||
gPlayState->nextEntranceIndex = entrance;
|
||||
gPlayState->sceneLoadFlag = 0x14;
|
||||
gPlayState->fadeTransition = 11;
|
||||
gSaveContext.nextTransition = 11;
|
||||
gSaveContext.nextTransitionType = 11;
|
||||
}
|
||||
|
||||
static bool VoidHandler(std::shared_ptr<Ship::Console> Console, const std::vector<std::string>& args) {
|
||||
@ -366,7 +366,7 @@ static bool VoidHandler(std::shared_ptr<Ship::Console> Console, const std::vecto
|
||||
gPlayState->sceneLoadFlag = 0x14;
|
||||
gPlayState->nextEntranceIndex = gSaveContext.respawn[RESPAWN_MODE_DOWN].entranceIndex;
|
||||
gPlayState->fadeTransition = 2;
|
||||
gSaveContext.nextTransition = 2;
|
||||
gSaveContext.nextTransitionType = 2;
|
||||
} else {
|
||||
SohImGui::GetConsole()->SendErrorMessage("gPlayState == nullptr");
|
||||
return CMD_FAILED;
|
||||
@ -379,7 +379,7 @@ static bool ReloadHandler(std::shared_ptr<Ship::Console> Console, const std::vec
|
||||
gPlayState->nextEntranceIndex = gSaveContext.entranceIndex;
|
||||
gPlayState->sceneLoadFlag = 0x14;
|
||||
gPlayState->fadeTransition = 11;
|
||||
gSaveContext.nextTransition = 11;
|
||||
gSaveContext.nextTransitionType = 11;
|
||||
} else {
|
||||
SohImGui::GetConsole()->SendErrorMessage("gPlayState == nullptr");
|
||||
return CMD_FAILED;
|
||||
|
@ -341,11 +341,11 @@ void DrawInfoTab() {
|
||||
ImGui::SliderScalar("Health", ImGuiDataType_S16, &gSaveContext.health, &healthMin, &healthMax);
|
||||
UIWidgets::InsertHelpHoverText("Current health. 16 units per full heart");
|
||||
|
||||
bool doubleDefense = gSaveContext.doubleDefense != 0;
|
||||
if (ImGui::Checkbox("Double Defense", &doubleDefense)) {
|
||||
gSaveContext.doubleDefense = doubleDefense;
|
||||
bool isDoubleDefenseAcquired = gSaveContext.isDoubleDefenseAcquired != 0;
|
||||
if (ImGui::Checkbox("Double Defense", &isDoubleDefenseAcquired)) {
|
||||
gSaveContext.isDoubleDefenseAcquired = isDoubleDefenseAcquired;
|
||||
gSaveContext.inventory.defenseHearts =
|
||||
gSaveContext.doubleDefense ? 20 : 0; // Set to get the border drawn in the UI
|
||||
gSaveContext.isDoubleDefenseAcquired ? 20 : 0; // Set to get the border drawn in the UI
|
||||
}
|
||||
UIWidgets::InsertHelpHoverText("Is double defense unlocked?");
|
||||
|
||||
@ -361,30 +361,30 @@ void DrawInfoTab() {
|
||||
if (ImGui::BeginCombo("Magic Level", magicName.c_str())) {
|
||||
if (ImGui::Selectable("Double")) {
|
||||
gSaveContext.magicLevel = 2;
|
||||
gSaveContext.magicAcquired = true;
|
||||
gSaveContext.doubleMagic = true;
|
||||
gSaveContext.isMagicAcquired = true;
|
||||
gSaveContext.isDoubleMagicAcquired = true;
|
||||
}
|
||||
if (ImGui::Selectable("Single")) {
|
||||
gSaveContext.magicLevel = 1;
|
||||
gSaveContext.magicAcquired = true;
|
||||
gSaveContext.doubleMagic = false;
|
||||
gSaveContext.isMagicAcquired = true;
|
||||
gSaveContext.isDoubleMagicAcquired = false;
|
||||
}
|
||||
if (ImGui::Selectable("None")) {
|
||||
gSaveContext.magicLevel = 0;
|
||||
gSaveContext.magicAcquired = false;
|
||||
gSaveContext.doubleMagic = false;
|
||||
gSaveContext.isMagicAcquired = false;
|
||||
gSaveContext.isDoubleMagicAcquired = false;
|
||||
}
|
||||
|
||||
ImGui::EndCombo();
|
||||
}
|
||||
UIWidgets::InsertHelpHoverText("Current magic level");
|
||||
gSaveContext.unk_13F4 = gSaveContext.magicLevel * 0x30; // Set to get the bar drawn in the UI
|
||||
if (gSaveContext.magic > gSaveContext.unk_13F4) {
|
||||
gSaveContext.magic = gSaveContext.unk_13F4; // Clamp magic to new max
|
||||
gSaveContext.magicCapacity = gSaveContext.magicLevel * 0x30; // Set to get the bar drawn in the UI
|
||||
if (gSaveContext.magic > gSaveContext.magicCapacity) {
|
||||
gSaveContext.magic = gSaveContext.magicCapacity; // Clamp magic to new max
|
||||
}
|
||||
|
||||
const uint8_t magicMin = 0;
|
||||
const uint8_t magicMax = gSaveContext.unk_13F4;
|
||||
const uint8_t magicMax = gSaveContext.magicCapacity;
|
||||
ImGui::SetNextItemWidth(ImGui::GetFontSize() * 15);
|
||||
ImGui::SliderScalar("Magic", ImGuiDataType_S8, &gSaveContext.magic, &magicMin, &magicMax);
|
||||
UIWidgets::InsertHelpHoverText("Current magic. 48 units per magic level");
|
||||
@ -1392,7 +1392,7 @@ void DrawPlayerTab() {
|
||||
const char* curTunic;
|
||||
const char* curBoots;
|
||||
|
||||
switch (player->currentSwordItem) {
|
||||
switch (player->currentSwordItemId) {
|
||||
case ITEM_SWORD_KOKIRI:
|
||||
curSword = "Kokiri Sword";
|
||||
break;
|
||||
@ -1521,17 +1521,17 @@ void DrawPlayerTab() {
|
||||
ImGui::PushItemWidth(ImGui::GetFontSize() * 15);
|
||||
if (ImGui::BeginCombo("Sword", curSword)) {
|
||||
if (ImGui::Selectable("None")) {
|
||||
player->currentSwordItem = ITEM_NONE;
|
||||
player->currentSwordItemId = ITEM_NONE;
|
||||
gSaveContext.equips.buttonItems[0] = ITEM_NONE;
|
||||
Inventory_ChangeEquipment(EQUIP_SWORD, PLAYER_SWORD_NONE);
|
||||
}
|
||||
if (ImGui::Selectable("Kokiri Sword")) {
|
||||
player->currentSwordItem = ITEM_SWORD_KOKIRI;
|
||||
player->currentSwordItemId = ITEM_SWORD_KOKIRI;
|
||||
gSaveContext.equips.buttonItems[0] = ITEM_SWORD_KOKIRI;
|
||||
Inventory_ChangeEquipment(EQUIP_SWORD, PLAYER_SWORD_KOKIRI);
|
||||
}
|
||||
if (ImGui::Selectable("Master Sword")) {
|
||||
player->currentSwordItem = ITEM_SWORD_MASTER;
|
||||
player->currentSwordItemId = ITEM_SWORD_MASTER;
|
||||
gSaveContext.equips.buttonItems[0] = ITEM_SWORD_MASTER;
|
||||
Inventory_ChangeEquipment(EQUIP_SWORD, PLAYER_SWORD_MASTER);
|
||||
}
|
||||
@ -1540,20 +1540,20 @@ void DrawPlayerTab() {
|
||||
if (gSaveContext.swordHealth < 8) {
|
||||
gSaveContext.swordHealth = 8;
|
||||
}
|
||||
player->currentSwordItem = ITEM_SWORD_BGS;
|
||||
player->currentSwordItemId = ITEM_SWORD_BGS;
|
||||
gSaveContext.equips.buttonItems[0] = ITEM_SWORD_BGS;
|
||||
} else {
|
||||
if (gSaveContext.swordHealth < 8) {
|
||||
gSaveContext.swordHealth = 8;
|
||||
}
|
||||
player->currentSwordItem = ITEM_SWORD_BGS;
|
||||
player->currentSwordItemId = ITEM_SWORD_BGS;
|
||||
gSaveContext.equips.buttonItems[0] = ITEM_SWORD_KNIFE;
|
||||
}
|
||||
|
||||
Inventory_ChangeEquipment(EQUIP_SWORD, PLAYER_SWORD_BGS);
|
||||
}
|
||||
if (ImGui::Selectable("Fishing Pole")) {
|
||||
player->currentSwordItem = ITEM_FISHING_POLE;
|
||||
player->currentSwordItemId = ITEM_FISHING_POLE;
|
||||
gSaveContext.equips.buttonItems[0] = ITEM_FISHING_POLE;
|
||||
Inventory_ChangeEquipment(EQUIP_SWORD, PLAYER_SWORD_MASTER);
|
||||
}
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include <vector>
|
||||
#include <variant>
|
||||
#include <cstdint>
|
||||
#include "soh/Enhancements/randomizer/randomizerTypes.h"
|
||||
|
||||
enum PresetEntryType {
|
||||
PRESET_ENTRY_TYPE_S32,
|
||||
@ -551,19 +552,19 @@ const std::vector<PresetEntry> s6PresetEntries = {
|
||||
PRESET_ENTRY_S32("gMMBunnyHood", 2),
|
||||
PRESET_ENTRY_S32("gRandomizeBigPoeTargetCount", 1),
|
||||
PRESET_ENTRY_S32("gRandomizeCuccosToReturn", 4),
|
||||
PRESET_ENTRY_S32("gRandomizeDoorOfTime", 2),
|
||||
PRESET_ENTRY_S32("gRandomizeDoorOfTime", RO_DOOROFTIME_OPEN),
|
||||
PRESET_ENTRY_STRING("gRandomizeExcludedLocations", "48,"),
|
||||
PRESET_ENTRY_S32("gRandomizeForest", 1),
|
||||
PRESET_ENTRY_S32("gRandomizeForest", RO_FOREST_CLOSED_DEKU),
|
||||
PRESET_ENTRY_S32("gRandomizeGanonTrial", 0),
|
||||
PRESET_ENTRY_S32("gRandomizeGerudoFortress", 1),
|
||||
PRESET_ENTRY_S32("gRandomizeIceTraps", 0),
|
||||
PRESET_ENTRY_S32("gRandomizeKakarikoGate", 1),
|
||||
PRESET_ENTRY_S32("gRandomizeGerudoFortress", RO_GF_FAST),
|
||||
PRESET_ENTRY_S32("gRandomizeIceTraps", RO_ICE_TRAPS_OFF),
|
||||
PRESET_ENTRY_S32("gRandomizeKakarikoGate", RO_KAK_GATE_OPEN),
|
||||
PRESET_ENTRY_S32("gRandomizeMedallionCount", 6),
|
||||
PRESET_ENTRY_S32("gRandomizeMqDungeons", 0),
|
||||
PRESET_ENTRY_S32("gRandomizeRainbowBridge", 3),
|
||||
PRESET_ENTRY_S32("gRandomizeShuffleAdultTrade", 1),
|
||||
PRESET_ENTRY_S32("gRandomizeShuffleDungeonReward", 0),
|
||||
PRESET_ENTRY_S32("gRandomizeShuffleGanonBossKey", 2),
|
||||
PRESET_ENTRY_S32("gRandomizeShuffleDungeonReward", RO_DUNGEON_REWARDS_END_OF_DUNGEON),
|
||||
PRESET_ENTRY_S32("gRandomizeShuffleGanonBossKey", RO_GANON_BOSS_KEY_STARTWITH),
|
||||
PRESET_ENTRY_S32("gRandomizeShuffleKokiriSword", 1),
|
||||
PRESET_ENTRY_S32("gRandomizeSkipChildStealth", 1),
|
||||
PRESET_ENTRY_S32("gRandomizeSkipChildZelda", 1),
|
||||
@ -586,28 +587,28 @@ const std::vector<PresetEntry> hellModePresetEntries = {
|
||||
PRESET_ENTRY_S32("gRandomizeBossKeysanity", 5),
|
||||
PRESET_ENTRY_S32("gRandomizeCompleteMaskQuest", 1),
|
||||
PRESET_ENTRY_S32("gRandomizeCuccosToReturn", 1),
|
||||
PRESET_ENTRY_S32("gRandomizeDoorOfTime", 2),
|
||||
PRESET_ENTRY_S32("gRandomizeDoorOfTime", RO_DOOROFTIME_OPEN),
|
||||
PRESET_ENTRY_S32("gRandomizeEnableBombchuDrops", 1),
|
||||
PRESET_ENTRY_S32("gRandomizeEnableGlitchCutscenes", 1),
|
||||
PRESET_ENTRY_S32("gRandomizeForest", 2),
|
||||
PRESET_ENTRY_S32("gRandomizeForest", RO_FOREST_OPEN),
|
||||
PRESET_ENTRY_S32("gRandomizeGanonTrial", 2),
|
||||
PRESET_ENTRY_S32("gRandomizeGanonTrialCount", 6),
|
||||
PRESET_ENTRY_S32("gRandomizeGerudoKeys", 3),
|
||||
PRESET_ENTRY_S32("gRandomizeGsExpectSunsSong", 1),
|
||||
PRESET_ENTRY_S32("gRandomizeIceTraps", 4),
|
||||
PRESET_ENTRY_S32("gRandomizeItemPool", 1),
|
||||
PRESET_ENTRY_S32("gRandomizeKakarikoGate", 1),
|
||||
PRESET_ENTRY_S32("gRandomizeKeysanity", 5),
|
||||
PRESET_ENTRY_S32("gRandomizeLinksPocket", 3),
|
||||
PRESET_ENTRY_S32("gRandomizeIceTraps", RO_ICE_TRAPS_ONSLAUGHT),
|
||||
PRESET_ENTRY_S32("gRandomizeItemPool", RO_ITEM_POOL_MINIMAL),
|
||||
PRESET_ENTRY_S32("gRandomizeKakarikoGate", RO_KAK_GATE_OPEN),
|
||||
PRESET_ENTRY_S32("gRandomizeKeysanity", RO_DUNGEON_ITEM_LOC_ANYWHERE),
|
||||
PRESET_ENTRY_S32("gRandomizeLinksPocket", RO_LINKS_POCKET_NOTHING),
|
||||
PRESET_ENTRY_S32("gRandomizeMqDungeons", 2),
|
||||
PRESET_ENTRY_S32("gRandomizeRainbowBridge", 4),
|
||||
PRESET_ENTRY_S32("gRandomizeShopsanity", 5),
|
||||
PRESET_ENTRY_S32("gRandomizeShuffleAdultTrade", 1),
|
||||
PRESET_ENTRY_S32("gRandomizeShuffleBeans", 1),
|
||||
PRESET_ENTRY_S32("gRandomizeShuffleCows", 1),
|
||||
PRESET_ENTRY_S32("gRandomizeShuffleDungeonReward", 3),
|
||||
PRESET_ENTRY_S32("gRandomizeShuffleDungeonReward", RO_DUNGEON_REWARDS_ANYWHERE),
|
||||
PRESET_ENTRY_S32("gRandomizeShuffleFrogSongRupees", 1),
|
||||
PRESET_ENTRY_S32("gRandomizeShuffleGanonBossKey", 10),
|
||||
PRESET_ENTRY_S32("gRandomizeShuffleGanonBossKey", RO_GANON_BOSS_KEY_LACS_DUNGEONS),
|
||||
PRESET_ENTRY_S32("gRandomizeShuffleGerudoToken", 1),
|
||||
PRESET_ENTRY_S32("gRandomizeShuffleKeyRings", 1),
|
||||
PRESET_ENTRY_S32("gRandomizeShuffleKokiriSword", 1),
|
||||
|
@ -2838,7 +2838,7 @@ void HintTable_Init() {
|
||||
/*spanish*/ "Para aquel que se convierta en el héroe...&La puerta al futuro está a su disposición..." },
|
||||
});
|
||||
|
||||
hintTable[CHILD_ALTAR_TEXT_END_DOTCLOSED] = HintText::Altar({
|
||||
hintTable[CHILD_ALTAR_TEXT_END_DOTSONGONLY] = HintText::Altar({
|
||||
// obscure text
|
||||
Text{
|
||||
"Ye who may become a Hero...&Stand with the Ocarina and&play the Song of Time.",
|
||||
@ -2846,7 +2846,7 @@ void HintTable_Init() {
|
||||
/*spanish*/ "Para aquel que se convierta en el héroe...&Tome la ocarina y&entone la Canción del Tiempo." },
|
||||
});
|
||||
|
||||
hintTable[CHILD_ALTAR_TEXT_END_DOTINTENDED] = HintText::Altar({
|
||||
hintTable[CHILD_ALTAR_TEXT_END_DOTCLOSED] = HintText::Altar({
|
||||
// obscure text
|
||||
Text{ "Ye who may become a Hero...&Offer the spiritual stones and&play the Song of Time.",
|
||||
/*french*/
|
||||
|
@ -555,13 +555,13 @@ static Text BuildDoorOfTimeText() {
|
||||
itemObtained = "$o";
|
||||
doorOfTimeText = Hint(CHILD_ALTAR_TEXT_END_DOTOPEN).GetText();
|
||||
|
||||
} else if (OpenDoorOfTime.Is(OPENDOOROFTIME_CLOSED)) {
|
||||
} else if (OpenDoorOfTime.Is(OPENDOOROFTIME_SONGONLY)) {
|
||||
itemObtained = "$c";
|
||||
doorOfTimeText = Hint(CHILD_ALTAR_TEXT_END_DOTCLOSED).GetText();
|
||||
doorOfTimeText = Hint(CHILD_ALTAR_TEXT_END_DOTSONGONLY).GetText();
|
||||
|
||||
} else if (OpenDoorOfTime.Is(OPENDOOROFTIME_INTENDED)) {
|
||||
} else if (OpenDoorOfTime.Is(OPENDOOROFTIME_CLOSED)) {
|
||||
itemObtained = "$i";
|
||||
doorOfTimeText = Hint(CHILD_ALTAR_TEXT_END_DOTINTENDED).GetText();
|
||||
doorOfTimeText = Hint(CHILD_ALTAR_TEXT_END_DOTCLOSED).GetText();
|
||||
}
|
||||
|
||||
return Text()+itemObtained+doorOfTimeText;
|
||||
|
@ -1742,8 +1742,8 @@ typedef enum {
|
||||
|
||||
SPIRITUAL_STONE_TEXT_START,
|
||||
CHILD_ALTAR_TEXT_END_DOTOPEN,
|
||||
CHILD_ALTAR_TEXT_END_DOTSONGONLY,
|
||||
CHILD_ALTAR_TEXT_END_DOTCLOSED,
|
||||
CHILD_ALTAR_TEXT_END_DOTINTENDED,
|
||||
ADULT_ALTAR_TEXT_START,
|
||||
ADULT_ALTAR_TEXT_END,
|
||||
|
||||
|
@ -56,8 +56,8 @@ void AreaTable_Init_CastleTown() {
|
||||
}, {
|
||||
//Exits
|
||||
Entrance(TOT_ENTRANCE, {[]{return true;}}),
|
||||
Entrance(TOT_BEYOND_DOOR_OF_TIME, {[]{return OpenDoorOfTime.Is(OPENDOOROFTIME_OPEN) || (CanPlay(SongOfTime) && (OpenDoorOfTime.Is(OPENDOOROFTIME_CLOSED) || (HasAllStones && OcarinaOfTime)));},
|
||||
/*Glitched*/[]{return SongOfTime && OpenDoorOfTime.Is(OPENDOOROFTIME_CLOSED) && (CanDoGlitch(GlitchType::IndoorBombOI, GlitchDifficulty::ADVANCED) ||
|
||||
Entrance(TOT_BEYOND_DOOR_OF_TIME, {[]{return OpenDoorOfTime.Is(OPENDOOROFTIME_OPEN) || (CanPlay(SongOfTime) && (OpenDoorOfTime.Is(OPENDOOROFTIME_SONGONLY) || (HasAllStones && OcarinaOfTime)));},
|
||||
/*Glitched*/[]{return SongOfTime && OpenDoorOfTime.Is(OPENDOOROFTIME_SONGONLY) && (CanDoGlitch(GlitchType::IndoorBombOI, GlitchDifficulty::ADVANCED) ||
|
||||
((Bugs || Fish) && Bombs && (CanSurviveDamage || (Fairy && NumBottles >= 2)) && CanShield && CanDoGlitch(GlitchType::QPA, GlitchDifficulty::ADVANCED) && CanDoGlitch(GlitchType::RestrictedItems, GlitchDifficulty::NOVICE)));}}),
|
||||
});
|
||||
|
||||
|
@ -63,9 +63,9 @@ string_view kakGateClosed = "The gate and the Happy Mask Shop both r
|
||||
------------------------------*/ //
|
||||
string_view doorOfTimeOpen = "The Door of Time starts opened instead of needing\n"
|
||||
"to play the Song of Time."; //
|
||||
string_view doorOfTimeClosed = "Only an Ocarina and the Song of Time need to be\n"//
|
||||
string_view doorOfTimeSongOnly = "Only an Ocarina and the Song of Time need to be\n"//
|
||||
"found to open the Door of Time."; //
|
||||
string_view doorOfTimeIntended = "The Ocarina of Time, the Song of Time, and\n" //
|
||||
string_view doorOfTimeClosed = "The Ocarina of Time, the Song of Time, and\n" //
|
||||
"all Spiritual Stones need to be found to\n" //
|
||||
"open the Door of Time."; //
|
||||
/*------------------------------ //
|
||||
|
@ -22,8 +22,8 @@ extern string_view kakGateOpen;
|
||||
extern string_view kakGateClosed;
|
||||
|
||||
extern string_view doorOfTimeOpen;
|
||||
extern string_view doorOfTimeSongOnly;
|
||||
extern string_view doorOfTimeClosed;
|
||||
extern string_view doorOfTimeIntended;
|
||||
|
||||
extern string_view fountainNormal;
|
||||
extern string_view fountainAdult;
|
||||
|
@ -55,7 +55,7 @@ namespace Settings {
|
||||
Option RandomizeOpen = Option::Bool("Randomize Settings", {"No","Yes"}, {openRandomize}, OptionCategory::Toggle);
|
||||
Option OpenForest = Option::U8 ("Forest", {"Closed", "Closed Deku", "Open"}, {forestClosed, forestClosedDeku, forestOpen}, OptionCategory::Setting, OPENFOREST_CLOSED);
|
||||
Option OpenKakariko = Option::U8 ("Kakariko Gate", {"Closed", "Open"}, {kakGateClosed, kakGateOpen});
|
||||
Option OpenDoorOfTime = Option::U8 ("Door of Time", {"Closed", "Song only", "Open"}, {doorOfTimeIntended, doorOfTimeClosed, doorOfTimeOpen});
|
||||
Option OpenDoorOfTime = Option::U8 ("Door of Time", {"Closed", "Song only", "Open"}, {doorOfTimeClosed, doorOfTimeSongOnly, doorOfTimeOpen});
|
||||
Option ZorasFountain = Option::U8 ("Zora's Fountain", {"Closed", "Closed as child", "Open"}, {fountainNormal, fountainAdult, fountainOpen});
|
||||
Option GerudoFortress = Option::U8 ("Gerudo Fortress", {"Normal", "Fast", "Open"}, {gerudoNormal, gerudoFast, gerudoOpen});
|
||||
Option Bridge = Option::U8 ("Rainbow Bridge", {"Vanilla", "Always open", "Stones", "Medallions", "Dungeon rewards", "Dungeons", "Tokens"}, {bridgeVanilla, bridgeOpen, bridgeStones, bridgeMedallions, bridgeRewards, bridgeDungeons, bridgeTokens}, OptionCategory::Setting, RAINBOWBRIDGE_VANILLA);
|
||||
@ -1864,7 +1864,7 @@ namespace Settings {
|
||||
|
||||
//Adult is also not compatible with the following combination:
|
||||
//DoT:Intended, ShuffleOcarinas:false, Logic:Glitchless
|
||||
if (OpenDoorOfTime.Is(OPENDOOROFTIME_INTENDED) && !ShuffleOcarinas &&
|
||||
if (OpenDoorOfTime.Is(OPENDOOROFTIME_CLOSED) && !ShuffleOcarinas &&
|
||||
Logic.Is(LOGIC_GLITCHLESS)) {
|
||||
StartingAge.SetSelectedIndex(AGE_CHILD);
|
||||
StartingAge.Lock();
|
||||
|
@ -44,8 +44,8 @@ typedef enum {
|
||||
} OpenKakarikoSetting;
|
||||
|
||||
typedef enum {
|
||||
OPENDOOROFTIME_INTENDED,
|
||||
OPENDOOROFTIME_CLOSED,
|
||||
OPENDOOROFTIME_SONGONLY,
|
||||
OPENDOOROFTIME_OPEN,
|
||||
} OpenDoorOfTimeSetting;
|
||||
|
||||
|
@ -26,7 +26,7 @@ extern "C" void Randomizer_DrawSmallKey(PlayState* play, GetItemEntry* getItemEn
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
@ -56,7 +56,7 @@ extern "C" void Randomizer_DrawBossKey(PlayState* play, GetItemEntry* getItemEnt
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
@ -72,7 +72,7 @@ extern "C" void Randomizer_DrawBossKey(PlayState* play, GetItemEntry* getItemEnt
|
||||
gSPGrayscale(POLY_OPA_DISP++, false);
|
||||
}
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
|
||||
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
@ -106,7 +106,7 @@ extern "C" void Randomizer_DrawKeyRing(PlayState* play, GetItemEntry* getItemEnt
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
|
||||
gDPSetGrayscaleColor(POLY_OPA_DISP++, colors[color_slot][0], colors[color_slot][1], colors[color_slot][2], 255);
|
||||
gSPGrayscale(POLY_OPA_DISP++, true);
|
||||
@ -140,7 +140,7 @@ extern "C" void Randomizer_DrawDoubleDefense(PlayState* play, GetItemEntry getIt
|
||||
s32 pad;
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
|
||||
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx, (char*)__FILE__, __LINE__), G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
|
||||
|
@ -598,16 +598,16 @@ void Randomizer::ParseRandomizerSettingsFile(const char* spoilerFileName) {
|
||||
if(it.value() == "Closed") {
|
||||
gSaveContext.randoSettings[index].value = RO_FOREST_CLOSED;
|
||||
} else if(it.value() == "Open") {
|
||||
gSaveContext.randoSettings[index].value = RO_FOREST_CLOSED_DEKU;
|
||||
} else if(it.value() == "Closed Deku") {
|
||||
gSaveContext.randoSettings[index].value = RO_FOREST_OPEN;
|
||||
} else if(it.value() == "Closed Deku") {
|
||||
gSaveContext.randoSettings[index].value = RO_FOREST_CLOSED_DEKU;
|
||||
}
|
||||
break;
|
||||
case RSK_KAK_GATE:
|
||||
if(it.value() == "Closed") {
|
||||
gSaveContext.randoSettings[index].value = RO_GENERIC_OFF;
|
||||
gSaveContext.randoSettings[index].value = RO_KAK_GATE_CLOSED;
|
||||
} else if(it.value() == "Open") {
|
||||
gSaveContext.randoSettings[index].value = RO_GENERIC_ON;
|
||||
gSaveContext.randoSettings[index].value = RO_KAK_GATE_OPEN;
|
||||
}
|
||||
break;
|
||||
case RSK_DOOR_OF_TIME:
|
||||
@ -1470,7 +1470,7 @@ ItemObtainability Randomizer::GetItemObtainabilityFromRandomizerGet(RandomizerGe
|
||||
case RG_GERUDO_MEMBERSHIP_CARD:
|
||||
return !CHECK_QUEST_ITEM(QUEST_GERUDO_CARD) ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_DOUBLE_DEFENSE:
|
||||
return !gSaveContext.doubleDefense ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
return !gSaveContext.isDoubleDefenseAcquired ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_GOLD_SKULLTULA_TOKEN:
|
||||
return gSaveContext.inventory.gsTokens < 100 ? CAN_OBTAIN : CANT_OBTAIN_ALREADY_HAVE;
|
||||
case RG_PROGRESSIVE_STRENGTH:
|
||||
@ -1927,7 +1927,9 @@ GetItemID Randomizer::GetItemIdFromRandomizerGet(RandomizerGet randoGet, GetItem
|
||||
return (GetItemID)randoGet;
|
||||
}
|
||||
case RG_GANONS_CASTLE_BOSS_KEY:
|
||||
if (GetRandoSettingValue(RSK_GANONS_BOSS_KEY) < 3) {
|
||||
if (GetRandoSettingValue(RSK_GANONS_BOSS_KEY) == RO_GANON_BOSS_KEY_VANILLA ||
|
||||
GetRandoSettingValue(RSK_GANONS_BOSS_KEY) == RO_GANON_BOSS_KEY_OWN_DUNGEON ||
|
||||
GetRandoSettingValue(RSK_GANONS_BOSS_KEY) == RO_GANON_BOSS_KEY_STARTWITH) {
|
||||
return GI_KEY_BOSS;
|
||||
} else {
|
||||
return (GetItemID)randoGet;
|
||||
@ -1941,7 +1943,9 @@ GetItemID Randomizer::GetItemIdFromRandomizerGet(RandomizerGet randoGet, GetItem
|
||||
case RG_BOTTOM_OF_THE_WELL_SMALL_KEY:
|
||||
case RG_GERUDO_TRAINING_GROUNDS_SMALL_KEY:
|
||||
case RG_GANONS_CASTLE_SMALL_KEY:
|
||||
if (GetRandoSettingValue(RSK_KEYSANITY) < 3) {
|
||||
if (GetRandoSettingValue(RSK_KEYSANITY) == RO_DUNGEON_ITEM_LOC_STARTWITH ||
|
||||
GetRandoSettingValue(RSK_KEYSANITY) == RO_DUNGEON_ITEM_LOC_VANILLA ||
|
||||
GetRandoSettingValue(RSK_KEYSANITY) == RO_DUNGEON_ITEM_LOC_OWN_DUNGEON) {
|
||||
return GI_KEY_SMALL;
|
||||
} else {
|
||||
return (GetItemID)randoGet;
|
||||
@ -2138,10 +2142,12 @@ bool Randomizer::IsItemVanilla(RandomizerGet randoGet) {
|
||||
}
|
||||
return true;
|
||||
case RG_GANONS_CASTLE_BOSS_KEY:
|
||||
if (GetRandoSettingValue(RSK_GANONS_BOSS_KEY) > 2) {
|
||||
return false;
|
||||
if (GetRandoSettingValue(RSK_GANONS_BOSS_KEY) == RO_GANON_BOSS_KEY_VANILLA ||
|
||||
GetRandoSettingValue(RSK_GANONS_BOSS_KEY) == RO_GANON_BOSS_KEY_OWN_DUNGEON ||
|
||||
GetRandoSettingValue(RSK_GANONS_BOSS_KEY) == RO_GANON_BOSS_KEY_STARTWITH) {
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
return false;
|
||||
case RG_DEKU_TREE_COMPASS:
|
||||
case RG_DODONGOS_CAVERN_COMPASS:
|
||||
case RG_JABU_JABUS_BELLY_COMPASS:
|
||||
@ -2578,12 +2584,12 @@ void GenerateRandomizerImgui() {
|
||||
|
||||
std::unordered_map<RandomizerSettingKey, u8> cvarSettings;
|
||||
cvarSettings[RSK_LOGIC_RULES] = CVar_GetS32("gRandomizeLogicRules", 0);
|
||||
cvarSettings[RSK_FOREST] = CVar_GetS32("gRandomizeForest", 0);
|
||||
cvarSettings[RSK_KAK_GATE] = CVar_GetS32("gRandomizeKakarikoGate", 0);
|
||||
cvarSettings[RSK_DOOR_OF_TIME] = CVar_GetS32("gRandomizeDoorOfTime", 0);
|
||||
cvarSettings[RSK_FOREST] = CVar_GetS32("gRandomizeForest", RO_FOREST_CLOSED);
|
||||
cvarSettings[RSK_KAK_GATE] = CVar_GetS32("gRandomizeKakarikoGate", RO_KAK_GATE_CLOSED);
|
||||
cvarSettings[RSK_DOOR_OF_TIME] = CVar_GetS32("gRandomizeDoorOfTime", RO_DOOROFTIME_CLOSED);
|
||||
cvarSettings[RSK_ZORAS_FOUNTAIN] = CVar_GetS32("gRandomizeZorasFountain", 0);
|
||||
cvarSettings[RSK_STARTING_AGE] = CVar_GetS32("gRandomizeStartingAge", 0);
|
||||
cvarSettings[RSK_GERUDO_FORTRESS] = CVar_GetS32("gRandomizeGerudoFortress", 0);
|
||||
cvarSettings[RSK_GERUDO_FORTRESS] = CVar_GetS32("gRandomizeGerudoFortress", RO_GF_NORMAL);
|
||||
cvarSettings[RSK_RAINBOW_BRIDGE] = CVar_GetS32("gRandomizeRainbowBridge", 0);
|
||||
cvarSettings[RSK_RAINBOW_BRIDGE_STONE_COUNT] = CVar_GetS32("gRandomizeStoneCount", 3);
|
||||
cvarSettings[RSK_RAINBOW_BRIDGE_MEDALLION_COUNT] = CVar_GetS32("gRandomizeMedallionCount", 6);
|
||||
@ -2601,7 +2607,7 @@ void GenerateRandomizerImgui() {
|
||||
cvarSettings[RSK_STARTING_DEKU_SHIELD] = CVar_GetS32("gRandomizeStartingDekuShield", 0);
|
||||
cvarSettings[RSK_STARTING_SKULLTULA_TOKEN] = CVar_GetS32("gRandomizeStartingSkulltulaToken", 0);
|
||||
cvarSettings[RSK_STARTING_MAPS_COMPASSES] = CVar_GetS32("gRandomizeStartingMapsCompasses", 2);
|
||||
cvarSettings[RSK_SHUFFLE_DUNGEON_REWARDS] = CVar_GetS32("gRandomizeShuffleDungeonReward", 0);
|
||||
cvarSettings[RSK_SHUFFLE_DUNGEON_REWARDS] = CVar_GetS32("gRandomizeShuffleDungeonReward", RO_DUNGEON_REWARDS_END_OF_DUNGEON);
|
||||
cvarSettings[RSK_SHUFFLE_SONGS] = CVar_GetS32("gRandomizeShuffleSongs", 0);
|
||||
cvarSettings[RSK_SHUFFLE_TOKENS] = CVar_GetS32("gRandomizeShuffleTokens", 0);
|
||||
cvarSettings[RSK_SHOPSANITY] = CVar_GetS32("gRandomizeShopsanity", 0);
|
||||
@ -2621,14 +2627,14 @@ void GenerateRandomizerImgui() {
|
||||
|
||||
cvarSettings[RSK_SHUFFLE_GERUDO_MEMBERSHIP_CARD] = CVar_GetS32("gRandomizeShuffleGerudoToken", 0);
|
||||
cvarSettings[RSK_SHUFFLE_FROG_SONG_RUPEES] = CVar_GetS32("gRandomizeShuffleFrogSongRupees", 0);
|
||||
cvarSettings[RSK_ITEM_POOL] = CVar_GetS32("gRandomizeItemPool", 1);
|
||||
cvarSettings[RSK_ICE_TRAPS] = CVar_GetS32("gRandomizeIceTraps", 1);
|
||||
cvarSettings[RSK_ITEM_POOL] = CVar_GetS32("gRandomizeItemPool", RO_ITEM_POOL_BALANCED);
|
||||
cvarSettings[RSK_ICE_TRAPS] = CVar_GetS32("gRandomizeIceTraps", RO_ICE_TRAPS_NORMAL);
|
||||
cvarSettings[RSK_GOSSIP_STONE_HINTS] = CVar_GetS32("gRandomizeGossipStoneHints", 1);
|
||||
cvarSettings[RSK_HINT_CLARITY] = CVar_GetS32("gRandomizeHintClarity", 2);
|
||||
cvarSettings[RSK_HINT_DISTRIBUTION] = CVar_GetS32("gRandomizeHintDistribution", 1);
|
||||
cvarSettings[RSK_BLUE_FIRE_ARROWS] = CVar_GetS32("gRandomizeBlueFireArrows", 0);
|
||||
cvarSettings[RSK_SUNLIGHT_ARROWS] = CVar_GetS32("gRandomizeSunlightArrows", 0);
|
||||
cvarSettings[RSK_KEYSANITY] = CVar_GetS32("gRandomizeKeysanity", 2);
|
||||
cvarSettings[RSK_KEYSANITY] = CVar_GetS32("gRandomizeKeysanity", RO_DUNGEON_ITEM_LOC_OWN_DUNGEON);
|
||||
cvarSettings[RSK_GERUDO_KEYS] = CVar_GetS32("gRandomizeGerudoKeys", 0);
|
||||
cvarSettings[RSK_KEYRINGS] = CVar_GetS32("gRandomizeShuffleKeyRings", 0);
|
||||
cvarSettings[RSK_KEYRINGS_RANDOM_COUNT] = CVar_GetS32("gRandomizeShuffleKeyRingsRandomCount", 8);
|
||||
@ -2641,7 +2647,7 @@ void GenerateRandomizerImgui() {
|
||||
cvarSettings[RSK_KEYRINGS_GTG] = CVar_GetS32("gRandomizeShuffleKeyRingsGTG", 0);
|
||||
cvarSettings[RSK_KEYRINGS_GANONS_CASTLE] = CVar_GetS32("gRandomizeShuffleKeyRingsGanonsCastle", 0);
|
||||
cvarSettings[RSK_BOSS_KEYSANITY] = CVar_GetS32("gRandomizeBossKeysanity", 2);
|
||||
cvarSettings[RSK_GANONS_BOSS_KEY] = CVar_GetS32("gRandomizeShuffleGanonBossKey", 1);
|
||||
cvarSettings[RSK_GANONS_BOSS_KEY] = CVar_GetS32("gRandomizeShuffleGanonBossKey", RO_GANON_BOSS_KEY_VANILLA);
|
||||
cvarSettings[RSK_LACS_STONE_COUNT] = CVar_GetS32("gRandomizeLacsStoneCount", 3);
|
||||
cvarSettings[RSK_LACS_MEDALLION_COUNT] = CVar_GetS32("gRandomizeLacsMedallionCount", 6);
|
||||
cvarSettings[RSK_LACS_REWARD_COUNT] = CVar_GetS32("gRandomizeLacsRewardCount", 9);
|
||||
@ -2670,8 +2676,9 @@ void GenerateRandomizerImgui() {
|
||||
|
||||
cvarSettings[RSK_SKULLS_SUNS_SONG] = CVar_GetS32("gRandomizeGsExpectSunsSong", 0);
|
||||
// Link's Pocket has to have a dungeon reward if the other rewards are shuffled to end of dungeon.
|
||||
cvarSettings[RSK_LINKS_POCKET] = CVar_GetS32("gRandomizeShuffleDungeonReward", 0) != 0 ?
|
||||
CVar_GetS32("gRandomizeLinksPocket", 0) : 0;
|
||||
cvarSettings[RSK_LINKS_POCKET] = CVar_GetS32("gRandomizeShuffleDungeonReward", RO_DUNGEON_REWARDS_END_OF_DUNGEON) != RO_DUNGEON_REWARDS_END_OF_DUNGEON ?
|
||||
CVar_GetS32("gRandomizeLinksPocket", RO_LINKS_POCKET_DUNGEON_REWARD) :
|
||||
RO_LINKS_POCKET_DUNGEON_REWARD;
|
||||
|
||||
if (OTRGlobals::Instance->HasMasterQuest() && OTRGlobals::Instance->HasOriginal()) {
|
||||
// If both OTRs are loaded.
|
||||
@ -2859,7 +2866,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"Open - The gate is always open. The happy mask shop "
|
||||
"will open immediately after obtaining Zelda's letter."
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeKakarikoGate", randoKakarikoGate, 2, RO_GENERIC_DONT_SKIP);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeKakarikoGate", randoKakarikoGate, 2, RO_KAK_GATE_CLOSED);
|
||||
|
||||
UIWidgets::PaddedSeparator();
|
||||
|
||||
@ -2907,8 +2914,8 @@ void DrawRandoEditor(bool& open) {
|
||||
//Disabled when Forest is set to Closed or under very specific conditions
|
||||
//RANDOTODO: Replace magic number checks with enums
|
||||
bool disableRandoStartingAge = (CVar_GetS32("gRandomizeLogicRules", 0) == 0) && // glitchless logic
|
||||
((CVar_GetS32("gRandomizeForest", 0) == 0) || // Closed Forest
|
||||
((CVar_GetS32("gRandomizeDoorOfTime", 0) == 0) && // Closed Door of Time
|
||||
((CVar_GetS32("gRandomizeForest", RO_FOREST_CLOSED) == RO_FOREST_CLOSED) ||
|
||||
((CVar_GetS32("gRandomizeDoorOfTime", RO_DOOROFTIME_CLOSED) == RO_DOOROFTIME_CLOSED) &&
|
||||
(CVar_GetS32("gRandomizeShuffleOcarinas", 0) == 0))); // ocarinas not shuffled
|
||||
|
||||
const char* disableRandoStartingAgeText = "This option is disabled due to other options making the game unbeatable.";
|
||||
@ -3042,7 +3049,7 @@ void DrawRandoEditor(bool& open) {
|
||||
"\n"
|
||||
"None - All Dungeons will be their Vanilla versions.\n"
|
||||
"\n"
|
||||
"Set Number - Select a number of dungeons that will be their Master Quest versions"
|
||||
"Set Number - Select a number of dungeons that will be their Master Quest versions "
|
||||
"using the slider below. Which dungeons are set to be the Master Quest variety will be random.\n"
|
||||
"\n"
|
||||
"Random Number - A Random number and set of dungeons will be their Master Quest varieties."
|
||||
@ -3501,7 +3508,7 @@ void DrawRandoEditor(bool& open) {
|
||||
);
|
||||
UIWidgets::EnhancementCombobox("gRandomizeShuffleGanonBossKey", randoShuffleGanonsBossKey, 12, RO_GANON_BOSS_KEY_VANILLA);
|
||||
ImGui::PopItemWidth();
|
||||
switch (CVar_GetS32("gRandomizeShuffleGanonBossKey", RO_GANON_BOSS_KEY_OWN_DUNGEON)) {
|
||||
switch (CVar_GetS32("gRandomizeShuffleGanonBossKey", RO_GANON_BOSS_KEY_VANILLA)) {
|
||||
case RO_GANON_BOSS_KEY_LACS_MEDALLIONS:
|
||||
ImGui::Dummy(ImVec2(0.0f, 0.0f));
|
||||
UIWidgets::EnhancementSliderInt("Medallion Count: %d", "##RandoLacsMedallionCount",
|
||||
@ -3969,7 +3976,7 @@ void DrawRandoEditor(bool& open) {
|
||||
ImGui::BeginChild("ChildStartingEquipment", ImVec2(0, -8));
|
||||
// Don't display this option if Dungeon Rewards are Shuffled to End of Dungeon.
|
||||
// TODO: Show this but disabled when we have options for disabled Comboboxes.
|
||||
if (CVar_GetS32("gRandomizeShuffleDungeonReward", 0) != 0) {
|
||||
if (CVar_GetS32("gRandomizeShuffleDungeonReward", RO_DUNGEON_REWARDS_END_OF_DUNGEON) != RO_DUNGEON_REWARDS_END_OF_DUNGEON) {
|
||||
ImGui::Text(Settings::LinksPocketItem.GetName().c_str());
|
||||
UIWidgets::EnhancementCombobox("gRandomizeLinksPocket", randoLinksPocket, 4, RO_LINKS_POCKET_DUNGEON_REWARD);
|
||||
UIWidgets::PaddedSeparator();
|
||||
|
@ -1085,10 +1085,10 @@ typedef enum RandoOption {
|
||||
RO_FOREST_CLOSED_DEKU,
|
||||
RO_FOREST_OPEN,
|
||||
|
||||
//Door of Time settings (open, song only, closed)
|
||||
RO_DOOROFTIME_OPEN = 0,
|
||||
//Door of Time settings (closed, song only, open)
|
||||
RO_DOOROFTIME_CLOSED = 0,
|
||||
RO_DOOROFTIME_SONGONLY,
|
||||
RO_DOOROFTIME_CLOSED,
|
||||
RO_DOOROFTIME_OPEN,
|
||||
|
||||
//Zora's Fountain settings (closed, closed as child, open)
|
||||
RO_ZF_CLOSED = 0,
|
||||
@ -1105,9 +1105,13 @@ typedef enum RandoOption {
|
||||
RO_GF_FAST,
|
||||
RO_GF_OPEN,
|
||||
|
||||
//Kakariko Gate settings (closed/open)
|
||||
RO_KAK_GATE_CLOSED = 0,
|
||||
RO_KAK_GATE_OPEN,
|
||||
|
||||
//Rainbow Bridge settings (always open, vanilla, stones, medallions, dungeon rewards, dungeons, tokens)
|
||||
RO_BRIDGE_VANILLA = 0,
|
||||
RO_BRIDGE_ALWAYS_OPEN,
|
||||
RO_BRIDGE_ALWAYS_OPEN = 0,
|
||||
RO_BRIDGE_VANILLA,
|
||||
RO_BRIDGE_STONES,
|
||||
RO_BRIDGE_MEDALLIONS,
|
||||
RO_BRIDGE_DUNGEON_REWARDS,
|
||||
@ -1129,11 +1133,6 @@ typedef enum RandoOption {
|
||||
RO_SCRUBS_EXPENSIVE,
|
||||
RO_SCRUBS_RANDOM,
|
||||
|
||||
//Shuffle Merchants settings (off, on w/o hints, on w/hints)
|
||||
RO_MERCHANTS_OFF = 0,
|
||||
RO_MERCHANTS_ON_NO_HINTS,
|
||||
RO_MERCHANTS_ON_WITH_HINTS,
|
||||
|
||||
//Ammo drop settings (on, "on+bombchu", off)
|
||||
RO_AMMO_DROPS_ON = 0,
|
||||
RO_AMMO_DROPS_ON_PLUS_BOMBCHU,
|
||||
|
@ -938,10 +938,10 @@ void RandomizerCheckObjects::UpdateImGuiVisibility() {
|
||||
((locationIt.rc != RC_GF_GERUDO_MEMBERSHIP_CARD) || CVar_GetS32("gRandomizeShuffleGerudoToken", 0)) &&
|
||||
((locationIt.rcType != RCTYPE_FROG_SONG) || CVar_GetS32("gRandomizeShuffleFrogSongRupees", 0)) &&
|
||||
((locationIt.rcType != RCTYPE_MAP_COMPASS) || CVar_GetS32("gRandomizeStartingMapsCompasses", 0) != 1) && // 1 is the value for "vanilla" maps/compasses
|
||||
((locationIt.rcType != RCTYPE_SMALL_KEY) || CVar_GetS32("gRandomizeKeysanity", 0) != 1) && // 1 is the value for "vanilla" small keys
|
||||
((locationIt.rcType != RCTYPE_SMALL_KEY) || CVar_GetS32("gRandomizeKeysanity", RO_DUNGEON_ITEM_LOC_OWN_DUNGEON) != RO_DUNGEON_ITEM_LOC_VANILLA) &&
|
||||
((locationIt.rcType != RCTYPE_GF_KEY) || CVar_GetS32("randoShuffleGerudoFortressKeys", 0) != 0) && // 0 is the value for "vanilla" gf keys
|
||||
((locationIt.rcType != RCTYPE_BOSS_KEY) || CVar_GetS32("gRandomizeBossKeysanity", 0) != 1) && // 1 is the value for "vanilla" boss keys
|
||||
((locationIt.rcType != RCTYPE_GANON_BOSS_KEY) || CVar_GetS32("gRandomizeShuffleGanonBossKey", 0) != 0) && // 0 is the value for "vanilla" ganon's boss key
|
||||
((locationIt.rcType != RCTYPE_GANON_BOSS_KEY) || CVar_GetS32("gRandomizeShuffleGanonBossKey", RO_GANON_BOSS_KEY_VANILLA) != RO_GANON_BOSS_KEY_VANILLA)
|
||||
((!RC_IS_CARPENTER(locationIt.rc) && locationIt.rc != RC_GF_GERUDO_MEMBERSHIP_CARD) ||
|
||||
(CVar_GetS32("gRandomizeGerudoFortress", 0) == 2 && !RC_IS_CARPENTER(locationIt.rc) && locationIt.rc != RC_GF_GERUDO_MEMBERSHIP_CARD) || //2 is the value for "open" gerudo's fortress
|
||||
(CVar_GetS32("gRandomizeGerudoFortress", 0) == 1 && (locationIt.rc == RC_GF_NORTH_F1_CARPENTER || locationIt.rc == RC_GF_GERUDO_MEMBERSHIP_CARD)) || //1 is the value for "fast" gerudo's fortress
|
||||
|
@ -163,7 +163,7 @@ s16 Grotto_OverrideSpecialEntrance(s16 nextEntranceIndex) {
|
||||
gSaveContext.respawnFlag = 2;
|
||||
nextEntranceIndex = grotto.entranceIndex;
|
||||
gPlayState->fadeTransition = 3;
|
||||
gSaveContext.nextTransition = 3;
|
||||
gSaveContext.nextTransitionType = 3;
|
||||
// Otherwise return 0x7FFF and let the game handle it
|
||||
} else {
|
||||
nextEntranceIndex = 0x7FFF;
|
||||
|
@ -307,48 +307,6 @@ namespace GameMenuBar {
|
||||
|
||||
UIWidgets::Spacer(0);
|
||||
|
||||
if (ImGui::BeginMenu("Controls")) {
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(12.0f, 6.0f));
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_ButtonTextAlign, ImVec2(0, 0));
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0f);
|
||||
ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0.22f, 0.38f, 0.56f, 1.0f));
|
||||
float availableWidth = ImGui::GetContentRegionAvail().x;
|
||||
if (ImGui::Button(
|
||||
GetWindowButtonText("Customize Game Controls", CVar_GetS32("gGameControlEditorEnabled", 0)).c_str(),
|
||||
ImVec2(availableWidth, 0)
|
||||
)) {
|
||||
bool currentValue = CVar_GetS32("gGameControlEditorEnabled", 0);
|
||||
CVar_SetS32("gGameControlEditorEnabled", !currentValue);
|
||||
SohImGui::RequestCvarSaveOnNextTick();
|
||||
SohImGui::EnableWindow("Game Control Editor", CVar_GetS32("gGameControlEditorEnabled", 0));
|
||||
}
|
||||
ImGui::PopStyleVar(3);
|
||||
ImGui::PopStyleColor(1);
|
||||
|
||||
UIWidgets::PaddedEnhancementCheckbox("D-pad Support on Pause Screen", "gDpadPause", true, false);
|
||||
UIWidgets::Tooltip("Navigate Pause with the D-pad\nIf used with D-pad as Equip Items, you must hold C-Up to equip instead of navigate\n"
|
||||
"To make the cursor only move a single space no matter how long a direction is held, manually set gDpadHoldChange to 0");
|
||||
UIWidgets::PaddedEnhancementCheckbox("D-pad Support in Text Boxes", "gDpadText", true, false);
|
||||
UIWidgets::Tooltip("Navigate choices in text boxes, shop item selection, and the file select / name entry screens with the D-pad\n"
|
||||
"To make the cursor only move a single space during name entry no matter how long a direction is held, manually set gDpadHoldChange to 0");
|
||||
UIWidgets::PaddedEnhancementCheckbox("D-pad as Equip Items", "gDpadEquips", true, false);
|
||||
UIWidgets::Tooltip("Equip items and equipment on the D-pad\nIf used with D-pad on Pause Screen, you must hold C-Up to equip instead of navigate");
|
||||
UIWidgets::PaddedEnhancementCheckbox("Allow the cursor to be on any slot", "gPauseAnyCursor", true, false);
|
||||
UIWidgets::Tooltip("Allows the cursor on the pause menu to be over any slot\nSimilar to Rando and Spaceworld 97");
|
||||
UIWidgets::PaddedEnhancementCheckbox("Answer Navi Prompt with L Button", "gNaviOnL", true, false);
|
||||
UIWidgets::Tooltip("Speak to Navi with L but enter first-person camera with C-Up");
|
||||
UIWidgets::PaddedEnhancementCheckbox("Enable walk speed modifiers", "gEnableWalkModify", true, false);
|
||||
UIWidgets::Tooltip("Hold the assigned button to change the maximum walking speed\nTo change the assigned button, click Customize Game Controls");
|
||||
if (CVar_GetS32("gEnableWalkModify", 0)) {
|
||||
UIWidgets::PaddedEnhancementCheckbox("Toggle modifier instead of holding", "gWalkSpeedToggle", true, false);
|
||||
UIWidgets::EnhancementSliderFloat("Modifier 1: %d %%", "##WalkMod1", "gWalkModifierOne", 0.0f, 5.0f, "", 1.0f, true);
|
||||
UIWidgets::EnhancementSliderFloat("Modifier 2: %d %%", "##WalkMod2", "gWalkModifierTwo", 0.0f, 5.0f, "", 1.0f, true);
|
||||
}
|
||||
ImGui::EndMenu();
|
||||
}
|
||||
|
||||
UIWidgets::Spacer(0);
|
||||
|
||||
if (ImGui::BeginMenu("Gameplay"))
|
||||
{
|
||||
if (ImGui::BeginMenu("Time Savers"))
|
||||
@ -792,6 +750,14 @@ namespace GameMenuBar {
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_ButtonTextAlign, ImVec2(0, 0));
|
||||
ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0f);
|
||||
ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0.22f, 0.38f, 0.56f, 1.0f));
|
||||
|
||||
if (ImGui::Button(GetWindowButtonText("Customize Game Controls", CVar_GetS32("gGameControlEditorEnabled", 0)).c_str(), ImVec2(-1.0f, 0.0f)))
|
||||
{
|
||||
bool currentValue = CVar_GetS32("gGameControlEditorEnabled", 0);
|
||||
CVar_SetS32("gGameControlEditorEnabled", !currentValue);
|
||||
SohImGui::RequestCvarSaveOnNextTick();
|
||||
SohImGui::EnableWindow("Game Control Editor", CVar_GetS32("gGameControlEditorEnabled", 0));
|
||||
}
|
||||
if (ImGui::Button(GetWindowButtonText("Cosmetics Editor", CVar_GetS32("gCosmeticsEditorEnabled", 0)).c_str(), ImVec2(-1.0f, 0.0f)))
|
||||
{
|
||||
bool currentValue = CVar_GetS32("gCosmeticsEditorEnabled", 0);
|
||||
@ -1237,10 +1203,14 @@ namespace GameMenuBar {
|
||||
// Only disable the key colors checkbox when none of the keysanity settings are set to "Any Dungeon", "Overworld" or "Anywhere"
|
||||
bool disableKeyColors = true;
|
||||
|
||||
if (OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_KEYSANITY) > 2 ||
|
||||
if (OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_KEYSANITY) == RO_DUNGEON_ITEM_LOC_ANY_DUNGEON ||
|
||||
OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_KEYSANITY) == RO_DUNGEON_ITEM_LOC_OVERWORLD ||
|
||||
OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_KEYSANITY) == RO_DUNGEON_ITEM_LOC_ANYWHERE ||
|
||||
OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_GERUDO_KEYS) > 0 ||
|
||||
OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_BOSS_KEYSANITY) > 2 ||
|
||||
OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_GANONS_BOSS_KEY) > 2 ||
|
||||
(OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_GANONS_BOSS_KEY) != RO_GANON_BOSS_KEY_VANILLA &&
|
||||
OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_GANONS_BOSS_KEY) != RO_GANON_BOSS_KEY_OWN_DUNGEON &&
|
||||
OTRGlobals::Instance->gRandomizer->GetRandoSettingValue(RSK_GANONS_BOSS_KEY) != RO_GANON_BOSS_KEY_STARTWITH) ||
|
||||
!gSaveContext.n64ddFlag) {
|
||||
disableKeyColors = false;
|
||||
}
|
||||
|
@ -385,9 +385,9 @@ void SaveManager::InitFileNormal() {
|
||||
gSaveContext.rupees = 0;
|
||||
gSaveContext.swordHealth = 0;
|
||||
gSaveContext.naviTimer = 0;
|
||||
gSaveContext.magicAcquired = 0;
|
||||
gSaveContext.doubleMagic = 0;
|
||||
gSaveContext.doubleDefense = 0;
|
||||
gSaveContext.isMagicAcquired = 0;
|
||||
gSaveContext.isDoubleMagicAcquired = 0;
|
||||
gSaveContext.isDoubleDefenseAcquired = 0;
|
||||
gSaveContext.bgsFlag = 0;
|
||||
gSaveContext.ocarinaGameRoundNum = 0;
|
||||
for (int button = 0; button < ARRAY_COUNT(gSaveContext.childEquips.buttonItems); button++) {
|
||||
@ -483,15 +483,15 @@ void SaveManager::InitFileNormal() {
|
||||
gSaveContext.infTable[flag] = 0;
|
||||
}
|
||||
gSaveContext.worldMapAreaData = 0;
|
||||
gSaveContext.scarecrowCustomSongSet = 0;
|
||||
for (int i = 0; i < ARRAY_COUNT(gSaveContext.scarecrowCustomSong); i++) {
|
||||
gSaveContext.scarecrowCustomSong[i].noteIdx = 0;
|
||||
gSaveContext.scarecrowCustomSong[i].unk_01 = 0;
|
||||
gSaveContext.scarecrowCustomSong[i].unk_02 = 0;
|
||||
gSaveContext.scarecrowCustomSong[i].volume = 0;
|
||||
gSaveContext.scarecrowCustomSong[i].vibrato = 0;
|
||||
gSaveContext.scarecrowCustomSong[i].tone = 0;
|
||||
gSaveContext.scarecrowCustomSong[i].semitone = 0;
|
||||
gSaveContext.scarecrowLongSongSet = 0;
|
||||
for (int i = 0; i < ARRAY_COUNT(gSaveContext.scarecrowLongSong); i++) {
|
||||
gSaveContext.scarecrowLongSong[i].noteIdx = 0;
|
||||
gSaveContext.scarecrowLongSong[i].unk_01 = 0;
|
||||
gSaveContext.scarecrowLongSong[i].unk_02 = 0;
|
||||
gSaveContext.scarecrowLongSong[i].volume = 0;
|
||||
gSaveContext.scarecrowLongSong[i].vibrato = 0;
|
||||
gSaveContext.scarecrowLongSong[i].tone = 0;
|
||||
gSaveContext.scarecrowLongSong[i].semitone = 0;
|
||||
}
|
||||
gSaveContext.scarecrowSpawnSongSet = 0;
|
||||
for (int i = 0; i < ARRAY_COUNT(gSaveContext.scarecrowSpawnSong); i++) {
|
||||
@ -534,9 +534,9 @@ void SaveManager::InitFileDebug() {
|
||||
gSaveContext.rupees = 150;
|
||||
gSaveContext.swordHealth = 8;
|
||||
gSaveContext.naviTimer = 0;
|
||||
gSaveContext.magicAcquired = 1;
|
||||
gSaveContext.doubleMagic = 0;
|
||||
gSaveContext.doubleDefense = 0;
|
||||
gSaveContext.isMagicAcquired = 1;
|
||||
gSaveContext.isDoubleMagicAcquired = 0;
|
||||
gSaveContext.isDoubleDefenseAcquired = 0;
|
||||
gSaveContext.bgsFlag = 0;
|
||||
gSaveContext.ocarinaGameRoundNum = 0;
|
||||
for (int button = 0; button < ARRAY_COUNT(gSaveContext.childEquips.buttonItems); button++) {
|
||||
@ -794,9 +794,9 @@ void SaveManager::LoadBaseVersion1() {
|
||||
SaveManager::Instance->LoadData("rupees", gSaveContext.rupees);
|
||||
SaveManager::Instance->LoadData("swordHealth", gSaveContext.swordHealth);
|
||||
SaveManager::Instance->LoadData("naviTimer", gSaveContext.naviTimer);
|
||||
SaveManager::Instance->LoadData("magicAcquired", gSaveContext.magicAcquired);
|
||||
SaveManager::Instance->LoadData("doubleMagic", gSaveContext.doubleMagic);
|
||||
SaveManager::Instance->LoadData("doubleDefense", gSaveContext.doubleDefense);
|
||||
SaveManager::Instance->LoadData("isMagicAcquired", gSaveContext.isMagicAcquired);
|
||||
SaveManager::Instance->LoadData("isDoubleMagicAcquired", gSaveContext.isDoubleMagicAcquired);
|
||||
SaveManager::Instance->LoadData("isDoubleDefenseAcquired", gSaveContext.isDoubleDefenseAcquired);
|
||||
SaveManager::Instance->LoadData("bgsFlag", gSaveContext.bgsFlag);
|
||||
SaveManager::Instance->LoadData("ocarinaGameRoundNum", gSaveContext.ocarinaGameRoundNum);
|
||||
SaveManager::Instance->LoadStruct("childEquips", []() {
|
||||
@ -892,9 +892,9 @@ void SaveManager::LoadBaseVersion1() {
|
||||
SaveManager::Instance->LoadData("", gSaveContext.infTable[i]);
|
||||
});
|
||||
SaveManager::Instance->LoadData("worldMapAreaData", gSaveContext.worldMapAreaData);
|
||||
SaveManager::Instance->LoadData("scarecrowCustomSongSet", gSaveContext.scarecrowCustomSongSet);
|
||||
SaveManager::Instance->LoadArray("scarecrowCustomSong", sizeof(gSaveContext.scarecrowCustomSong), [](size_t i) {
|
||||
SaveManager::Instance->LoadData("", ((u8*)&gSaveContext.scarecrowCustomSong)[i]);
|
||||
SaveManager::Instance->LoadData("scarecrowLongSongSet", gSaveContext.scarecrowLongSongSet);
|
||||
SaveManager::Instance->LoadArray("scarecrowLongSong", sizeof(gSaveContext.scarecrowLongSong), [](size_t i) {
|
||||
SaveManager::Instance->LoadData("", ((u8*)&gSaveContext.scarecrowLongSong)[i]);
|
||||
});
|
||||
SaveManager::Instance->LoadData("scarecrowSpawnSongSet", gSaveContext.scarecrowSpawnSongSet);
|
||||
SaveManager::Instance->LoadArray("scarecrowSpawnSong", sizeof(gSaveContext.scarecrowSpawnSong), [](size_t i) {
|
||||
@ -935,9 +935,9 @@ void SaveManager::LoadBaseVersion2() {
|
||||
SaveManager::Instance->LoadData("rupees", gSaveContext.rupees);
|
||||
SaveManager::Instance->LoadData("swordHealth", gSaveContext.swordHealth);
|
||||
SaveManager::Instance->LoadData("naviTimer", gSaveContext.naviTimer);
|
||||
SaveManager::Instance->LoadData("magicAcquired", gSaveContext.magicAcquired);
|
||||
SaveManager::Instance->LoadData("doubleMagic", gSaveContext.doubleMagic);
|
||||
SaveManager::Instance->LoadData("doubleDefense", gSaveContext.doubleDefense);
|
||||
SaveManager::Instance->LoadData("isMagicAcquired", gSaveContext.isMagicAcquired);
|
||||
SaveManager::Instance->LoadData("isDoubleMagicAcquired", gSaveContext.isDoubleMagicAcquired);
|
||||
SaveManager::Instance->LoadData("isDoubleDefenseAcquired", gSaveContext.isDoubleDefenseAcquired);
|
||||
SaveManager::Instance->LoadData("bgsFlag", gSaveContext.bgsFlag);
|
||||
SaveManager::Instance->LoadData("ocarinaGameRoundNum", gSaveContext.ocarinaGameRoundNum);
|
||||
SaveManager::Instance->LoadStruct("childEquips", []() {
|
||||
@ -1048,16 +1048,16 @@ void SaveManager::LoadBaseVersion2() {
|
||||
SaveManager::Instance->LoadData("", gSaveContext.infTable[i]);
|
||||
});
|
||||
SaveManager::Instance->LoadData("worldMapAreaData", gSaveContext.worldMapAreaData);
|
||||
SaveManager::Instance->LoadData("scarecrowCustomSongSet", gSaveContext.scarecrowCustomSongSet);
|
||||
SaveManager::Instance->LoadArray("scarecrowCustomSong", ARRAY_COUNT(gSaveContext.scarecrowCustomSong), [](size_t i) {
|
||||
SaveManager::Instance->LoadData("scarecrowLongSongSet", gSaveContext.scarecrowLongSongSet);
|
||||
SaveManager::Instance->LoadArray("scarecrowLongSong", ARRAY_COUNT(gSaveContext.scarecrowLongSong), [](size_t i) {
|
||||
SaveManager::Instance->LoadStruct("", [&i]() {
|
||||
SaveManager::Instance->LoadData("noteIdx", gSaveContext.scarecrowCustomSong[i].noteIdx);
|
||||
SaveManager::Instance->LoadData("unk_01", gSaveContext.scarecrowCustomSong[i].unk_01);
|
||||
SaveManager::Instance->LoadData("unk_02", gSaveContext.scarecrowCustomSong[i].unk_02);
|
||||
SaveManager::Instance->LoadData("volume", gSaveContext.scarecrowCustomSong[i].volume);
|
||||
SaveManager::Instance->LoadData("vibrato", gSaveContext.scarecrowCustomSong[i].vibrato);
|
||||
SaveManager::Instance->LoadData("tone", gSaveContext.scarecrowCustomSong[i].tone);
|
||||
SaveManager::Instance->LoadData("semitone", gSaveContext.scarecrowCustomSong[i].semitone);
|
||||
SaveManager::Instance->LoadData("noteIdx", gSaveContext.scarecrowLongSong[i].noteIdx);
|
||||
SaveManager::Instance->LoadData("unk_01", gSaveContext.scarecrowLongSong[i].unk_01);
|
||||
SaveManager::Instance->LoadData("unk_02", gSaveContext.scarecrowLongSong[i].unk_02);
|
||||
SaveManager::Instance->LoadData("volume", gSaveContext.scarecrowLongSong[i].volume);
|
||||
SaveManager::Instance->LoadData("vibrato", gSaveContext.scarecrowLongSong[i].vibrato);
|
||||
SaveManager::Instance->LoadData("tone", gSaveContext.scarecrowLongSong[i].tone);
|
||||
SaveManager::Instance->LoadData("semitone", gSaveContext.scarecrowLongSong[i].semitone);
|
||||
});
|
||||
});
|
||||
SaveManager::Instance->LoadData("scarecrowSpawnSongSet", gSaveContext.scarecrowSpawnSongSet);
|
||||
@ -1108,9 +1108,9 @@ void SaveManager::SaveBase() {
|
||||
SaveManager::Instance->SaveData("rupees", gSaveContext.rupees);
|
||||
SaveManager::Instance->SaveData("swordHealth", gSaveContext.swordHealth);
|
||||
SaveManager::Instance->SaveData("naviTimer", gSaveContext.naviTimer);
|
||||
SaveManager::Instance->SaveData("magicAcquired", gSaveContext.magicAcquired);
|
||||
SaveManager::Instance->SaveData("doubleMagic", gSaveContext.doubleMagic);
|
||||
SaveManager::Instance->SaveData("doubleDefense", gSaveContext.doubleDefense);
|
||||
SaveManager::Instance->SaveData("isMagicAcquired", gSaveContext.isMagicAcquired);
|
||||
SaveManager::Instance->SaveData("isDoubleMagicAcquired", gSaveContext.isDoubleMagicAcquired);
|
||||
SaveManager::Instance->SaveData("isDoubleDefenseAcquired", gSaveContext.isDoubleDefenseAcquired);
|
||||
SaveManager::Instance->SaveData("bgsFlag", gSaveContext.bgsFlag);
|
||||
SaveManager::Instance->SaveData("ocarinaGameRoundNum", gSaveContext.ocarinaGameRoundNum);
|
||||
SaveManager::Instance->SaveStruct("childEquips", []() {
|
||||
@ -1217,16 +1217,16 @@ void SaveManager::SaveBase() {
|
||||
SaveManager::Instance->SaveData("", gSaveContext.infTable[i]);
|
||||
});
|
||||
SaveManager::Instance->SaveData("worldMapAreaData", gSaveContext.worldMapAreaData);
|
||||
SaveManager::Instance->SaveData("scarecrowCustomSongSet", gSaveContext.scarecrowCustomSongSet);
|
||||
SaveManager::Instance->SaveArray("scarecrowCustomSong", ARRAY_COUNT(gSaveContext.scarecrowCustomSong), [](size_t i) {
|
||||
SaveManager::Instance->SaveData("scarecrowLongSongSet", gSaveContext.scarecrowLongSongSet);
|
||||
SaveManager::Instance->SaveArray("scarecrowLongSong", ARRAY_COUNT(gSaveContext.scarecrowLongSong), [](size_t i) {
|
||||
SaveManager::Instance->SaveStruct("", [&i]() {
|
||||
SaveManager::Instance->SaveData("noteIdx", gSaveContext.scarecrowCustomSong[i].noteIdx);
|
||||
SaveManager::Instance->SaveData("unk_01", gSaveContext.scarecrowCustomSong[i].unk_01);
|
||||
SaveManager::Instance->SaveData("unk_02", gSaveContext.scarecrowCustomSong[i].unk_02);
|
||||
SaveManager::Instance->SaveData("volume", gSaveContext.scarecrowCustomSong[i].volume);
|
||||
SaveManager::Instance->SaveData("vibrato", gSaveContext.scarecrowCustomSong[i].vibrato);
|
||||
SaveManager::Instance->SaveData("tone", gSaveContext.scarecrowCustomSong[i].tone);
|
||||
SaveManager::Instance->SaveData("semitone", gSaveContext.scarecrowCustomSong[i].semitone);
|
||||
SaveManager::Instance->SaveData("noteIdx", gSaveContext.scarecrowLongSong[i].noteIdx);
|
||||
SaveManager::Instance->SaveData("unk_01", gSaveContext.scarecrowLongSong[i].unk_01);
|
||||
SaveManager::Instance->SaveData("unk_02", gSaveContext.scarecrowLongSong[i].unk_02);
|
||||
SaveManager::Instance->SaveData("volume", gSaveContext.scarecrowLongSong[i].volume);
|
||||
SaveManager::Instance->SaveData("vibrato", gSaveContext.scarecrowLongSong[i].vibrato);
|
||||
SaveManager::Instance->SaveData("tone", gSaveContext.scarecrowLongSong[i].tone);
|
||||
SaveManager::Instance->SaveData("semitone", gSaveContext.scarecrowLongSong[i].semitone);
|
||||
});
|
||||
});
|
||||
SaveManager::Instance->SaveData("scarecrowSpawnSongSet", gSaveContext.scarecrowSpawnSongSet);
|
||||
@ -1600,9 +1600,9 @@ void CopyV0Save(SaveContext_v0& src, SaveContext& dst) {
|
||||
dst.rupees = src.rupees;
|
||||
dst.swordHealth = src.swordHealth;
|
||||
dst.naviTimer = src.naviTimer;
|
||||
dst.magicAcquired = src.magicAcquired;
|
||||
dst.doubleMagic = src.doubleMagic;
|
||||
dst.doubleDefense = src.doubleDefense;
|
||||
dst.isMagicAcquired = src.magicAcquired;
|
||||
dst.isDoubleMagicAcquired = src.doubleMagic;
|
||||
dst.isDoubleDefenseAcquired = src.doubleDefense;
|
||||
dst.bgsFlag = src.bgsFlag;
|
||||
dst.ocarinaGameRoundNum = src.ocarinaGameRoundNum;
|
||||
for (size_t i = 0; i < ARRAY_COUNT(src.childEquips.buttonItems); i++) {
|
||||
@ -1680,8 +1680,8 @@ void CopyV0Save(SaveContext_v0& src, SaveContext& dst) {
|
||||
dst.infTable[i] = src.infTable[i];
|
||||
}
|
||||
dst.worldMapAreaData = src.worldMapAreaData;
|
||||
dst.scarecrowCustomSongSet = src.scarecrowCustomSongSet;
|
||||
memcpy(&dst.scarecrowCustomSong[0], &src.scarecrowCustomSong[0], sizeof(src.scarecrowCustomSong));
|
||||
dst.scarecrowLongSongSet = src.scarecrowCustomSongSet;
|
||||
memcpy(&dst.scarecrowLongSong[0], &src.scarecrowCustomSong[0], sizeof(src.scarecrowCustomSong));
|
||||
dst.scarecrowSpawnSongSet = src.scarecrowSpawnSongSet;
|
||||
memcpy(&dst.scarecrowSpawnSong[0], &src.scarecrowSpawnSong[0], sizeof(src.scarecrowSpawnSong));
|
||||
dst.horseData.scene = src.horseData.scene;
|
||||
|
@ -132,7 +132,7 @@ extern "C" void OTRMessage_Init()
|
||||
TEXTBOX_TYPE_BLUE, TEXTBOX_POS_BOTTOM,
|
||||
"You got a %rHeart Container%w!&You've collected %r{{heartContainerCount}}%w containers&in total!",
|
||||
"Du erhältst ein %rHerzgefäß%w! Du&hast insgesamt %r{{heartContainerCount}}%w Gefäße&gesammelt!",
|
||||
"Vous obtenez un %rRécipient de&coeur%w! Vous avez&collecté %r{{heartContainerCount}}%w récipients en tout!"
|
||||
"Vous obtenez un %rCoeur&d'Energie%w! Vous en avez&collecté %r{{heartContainerCount}}%w en tout!"
|
||||
}
|
||||
);
|
||||
CustomMessageManager::Instance->CreateGetItemMessage(
|
||||
@ -141,7 +141,7 @@ extern "C" void OTRMessage_Init()
|
||||
TEXTBOX_TYPE_BLUE, TEXTBOX_POS_BOTTOM,
|
||||
"You got a %rHeart Piece%w!&You've collected %r{{heartPieceCount}}%w pieces&in total!",
|
||||
"Du erhältst ein %rHerzteil%w! Du hast&insgesamt %r{{heartPieceCount}}%w Teile&gesammelt!",
|
||||
"Vous obtenez un %rMorceau de&coeur%w! Vous avez&collecté %r{{heartPieceCount}}%w morceaux en tout!"
|
||||
"Vous obtenez un %rQuart de&Coeur%w! Vous en avez collecté&%r{{heartPieceCount}}%w en tout!"
|
||||
}
|
||||
);
|
||||
}
|
||||
|
@ -381,8 +381,8 @@ void GameState_Update(GameState* gameState) {
|
||||
|
||||
// Inf Magic
|
||||
if (CVar_GetS32("gInfiniteMagic", 0) != 0) {
|
||||
if (gSaveContext.magicAcquired && gSaveContext.magic != (gSaveContext.doubleMagic + 1) * 0x30) {
|
||||
gSaveContext.magic = (gSaveContext.doubleMagic + 1) * 0x30;
|
||||
if (gSaveContext.isMagicAcquired && gSaveContext.magic != (gSaveContext.isDoubleMagicAcquired + 1) * 0x30) {
|
||||
gSaveContext.magic = (gSaveContext.isDoubleMagicAcquired + 1) * 0x30;
|
||||
}
|
||||
}
|
||||
|
||||
@ -440,7 +440,7 @@ void GameState_Update(GameState* gameState) {
|
||||
gPlayState->nextEntranceIndex = gSaveContext.entranceIndex;
|
||||
gPlayState->sceneLoadFlag = 0x14;
|
||||
gPlayState->fadeTransition = 11;
|
||||
gSaveContext.nextTransition = 11;
|
||||
gSaveContext.nextTransitionType = 11;
|
||||
warped = true;
|
||||
if (gPlayState->linkAgeOnLoad == 1) {
|
||||
gPlayState->linkAgeOnLoad = 0;
|
||||
@ -451,7 +451,7 @@ void GameState_Update(GameState* gameState) {
|
||||
}
|
||||
|
||||
if (gPlayState) {
|
||||
if (warped && gPlayState->sceneLoadFlag != 0x0014 && gSaveContext.nextTransition == 255) {
|
||||
if (warped && gPlayState->sceneLoadFlag != 0x0014 && gSaveContext.nextTransitionType == 255) {
|
||||
GET_PLAYER(gPlayState)->actor.shape.rot.y = playerYaw;
|
||||
GET_PLAYER(gPlayState)->actor.world.pos = playerPos;
|
||||
warped = false;
|
||||
|
@ -95,7 +95,7 @@ void ActorShadow_Draw(Actor* actor, Lights* lights, PlayState* play, Gfx* dlist,
|
||||
if (temp1 >= -50.0f && temp1 < 500.0f) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
POLY_OPA_DISP = Gfx_CallSetupDL(POLY_OPA_DISP, 0x2C);
|
||||
POLY_OPA_DISP = Gfx_SetupDL(POLY_OPA_DISP, 0x2C);
|
||||
|
||||
gDPSetCombineLERP(POLY_OPA_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, 0, 0, 0,
|
||||
COMBINED);
|
||||
@ -202,7 +202,7 @@ void ActorShadow_DrawFeet(Actor* actor, Lights* lights, PlayState* play) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
POLY_OPA_DISP = Gfx_CallSetupDL(POLY_OPA_DISP, 0x2C);
|
||||
POLY_OPA_DISP = Gfx_SetupDL(POLY_OPA_DISP, 0x2C);
|
||||
|
||||
actor->shape.feetFloorFlags = 0;
|
||||
|
||||
@ -465,7 +465,7 @@ void func_8002C124(TargetContext* targetCtx, PlayState* play) {
|
||||
func_8002BE64(targetCtx, targetCtx->unk_4C, spBC.x, spBC.y, spBC.z);
|
||||
|
||||
if ((!(player->stateFlags1 & 0x40)) || (actor != player->unk_664)) {
|
||||
OVERLAY_DISP = Gfx_CallSetupDL(OVERLAY_DISP, 0x39);
|
||||
OVERLAY_DISP = Gfx_SetupDL(OVERLAY_DISP, 0x39);
|
||||
|
||||
for (spB0 = 0, spAC = targetCtx->unk_4C; spB0 < spB8; spB0++, spAC = (spAC + 1) % 3) {
|
||||
entry = &targetCtx->arr_50[spAC];
|
||||
@ -509,7 +509,7 @@ void func_8002C124(TargetContext* targetCtx, PlayState* play) {
|
||||
FrameInterpolation_RecordOpenChild(actor, 1);
|
||||
NaviColor* naviColor = &sNaviColorList[actor->category];
|
||||
|
||||
POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 0x7);
|
||||
POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, 0x7);
|
||||
|
||||
Matrix_Translate(actor->focus.pos.x, actor->focus.pos.y + (actor->targetArrowOffset * actor->scale.y) + 17.0f,
|
||||
actor->focus.pos.z, MTXMODE_NEW);
|
||||
@ -1105,7 +1105,7 @@ void TitleCard_Draw(PlayState* play, TitleCardContext* titleCtx) {
|
||||
}
|
||||
|
||||
// WORLD_OVERLAY_DISP Goes over POLY_XLU_DISP but under POLY_KAL_DISP
|
||||
WORLD_OVERLAY_DISP = func_80093808(WORLD_OVERLAY_DISP);
|
||||
WORLD_OVERLAY_DISP = Gfx_SetupDL_52NoCD(WORLD_OVERLAY_DISP);
|
||||
|
||||
gDPSetPrimColor(WORLD_OVERLAY_DISP++, 0, 0, (u8)titleCtx->intensityR, (u8)titleCtx->intensityG, (u8)titleCtx->intensityB,
|
||||
(u8)titleCtx->alpha);
|
||||
@ -1423,7 +1423,7 @@ s32 func_8002DF38(PlayState* play, Actor* actor, u8 csMode) {
|
||||
|
||||
player->csMode = csMode;
|
||||
player->unk_448 = actor;
|
||||
player->unk_46A = 0;
|
||||
player->doorBgCamIndex = 0;
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -1432,7 +1432,7 @@ s32 func_8002DF54(PlayState* play, Actor* actor, u8 csMode) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
func_8002DF38(play, actor, csMode);
|
||||
player->unk_46A = 1;
|
||||
player->doorBgCamIndex = 1;
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -2384,7 +2384,7 @@ void Actor_DrawFaroresWindPointer(PlayState* play) {
|
||||
(((void)0, gSaveContext.respawn[RESPAWN_MODE_TOP].roomIndex) == play->roomCtx.curRoom.num)) {
|
||||
f32 scale = 0.025f * ratio;
|
||||
|
||||
POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 0x19);
|
||||
POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, 0x19);
|
||||
|
||||
Matrix_Translate(((void)0, gSaveContext.respawn[RESPAWN_MODE_TOP].pos.x),
|
||||
((void)0, gSaveContext.respawn[RESPAWN_MODE_TOP].pos.y) + yOffset,
|
||||
@ -3969,7 +3969,7 @@ void func_80033C30(Vec3f* arg0, Vec3f* arg1, u8 alpha, PlayState* play) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
POLY_OPA_DISP = Gfx_CallSetupDL(POLY_OPA_DISP, 0x2C);
|
||||
POLY_OPA_DISP = Gfx_SetupDL(POLY_OPA_DISP, 0x2C);
|
||||
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 0, 0, 0, alpha);
|
||||
|
||||
@ -4344,7 +4344,7 @@ void func_80034BA0(PlayState* play, SkelAnime* skelAnime, OverrideLimbDraw overr
|
||||
PostLimbDraw postLimbDraw, Actor* actor, s16 alpha) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
|
||||
gDPPipeSync(POLY_OPA_DISP++);
|
||||
gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, alpha);
|
||||
@ -4361,7 +4361,7 @@ void func_80034CC4(PlayState* play, SkelAnime* skelAnime, OverrideLimbDraw overr
|
||||
PostLimbDraw postLimbDraw, Actor* actor, s16 alpha) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
|
||||
gDPPipeSync(POLY_XLU_DISP++);
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, 0, 0, 0, alpha);
|
||||
@ -4529,7 +4529,7 @@ void func_800355B8(PlayState* play, Vec3f* pos) {
|
||||
u8 func_800355E4(PlayState* play, Collider* collider) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
if ((collider->acFlags & AC_TYPE_PLAYER) && (player->swordState != 0) && (player->swordAnimation == 0x16)) {
|
||||
if ((collider->acFlags & AC_TYPE_PLAYER) && (player->swordState != 0) && (player->meleeWeaponAnimation == 0x16)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
|
@ -3,7 +3,7 @@
|
||||
void Gfx_DrawDListOpa(PlayState* play, Gfx* dlist) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, dlist);
|
||||
@ -14,7 +14,7 @@ void Gfx_DrawDListOpa(PlayState* play, Gfx* dlist) {
|
||||
void Gfx_DrawDListXlu(PlayState* play, Gfx* dlist) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_XLU_DISP++, dlist);
|
||||
|
@ -14,6 +14,6 @@ void SaveContext_Init(void) {
|
||||
gSaveContext.nextDayTime = 0xFFFF;
|
||||
gSaveContext.skyboxTime = 0;
|
||||
gSaveContext.dogIsLost = true;
|
||||
gSaveContext.nextTransition = 0xFF;
|
||||
gSaveContext.nextTransitionType = 0xFF;
|
||||
gSaveContext.unk_13EE = 50;
|
||||
}
|
||||
|
@ -69,7 +69,7 @@ void DebugDisplay_DrawObjects(PlayState* play) {
|
||||
void DebugDisplay_DrawSpriteI8(DebugDispObject* dispObj, void* texture, PlayState* play) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80094678(play->state.gfxCtx);
|
||||
Gfx_SetupDL_47Xlu(play->state.gfxCtx);
|
||||
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, dispObj->color.r, dispObj->color.g, dispObj->color.b, dispObj->color.a);
|
||||
|
||||
@ -91,7 +91,7 @@ void DebugDisplay_DrawSpriteI8(DebugDispObject* dispObj, void* texture, PlayStat
|
||||
void DebugDisplay_DrawPolygon(DebugDispObject* dispObj, void* dlist, PlayState* play) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_8009435C(play->state.gfxCtx);
|
||||
Gfx_SetupDL_4Xlu(play->state.gfxCtx);
|
||||
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, dispObj->color.r, dispObj->color.g, dispObj->color.b, dispObj->color.a);
|
||||
|
||||
|
@ -562,7 +562,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
|
||||
csCtx->state = CS_STATE_UNSKIPPABLE_EXEC;
|
||||
Audio_SetCutsceneFlag(0);
|
||||
gSaveContext.unk_1410 = 1;
|
||||
gSaveContext.cutsceneTransitionControl = 1;
|
||||
|
||||
osSyncPrintf("\n分岐先指定!!=[%d]番", cmd->base); // "Future fork designation=No. [%d]"
|
||||
|
||||
@ -635,7 +635,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
play->nextEntranceIndex = 0x02CA;
|
||||
play->sceneLoadFlag = 0x14;
|
||||
play->fadeTransition = 3;
|
||||
gSaveContext.nextTransition = 3;
|
||||
gSaveContext.nextTransitionType = 3;
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
@ -665,7 +665,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
play->nextEntranceIndex = 0x010E;
|
||||
play->sceneLoadFlag = 0x14;
|
||||
play->fadeTransition = 2;
|
||||
gSaveContext.nextTransition = 2;
|
||||
gSaveContext.nextTransitionType = 2;
|
||||
break;
|
||||
case 14:
|
||||
play->nextEntranceIndex = 0x0457;
|
||||
@ -695,7 +695,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
play->nextEntranceIndex = 0x0324;
|
||||
play->sceneLoadFlag = 0x14;
|
||||
play->fadeTransition = 2;
|
||||
gSaveContext.nextTransition = 2;
|
||||
gSaveContext.nextTransitionType = 2;
|
||||
break;
|
||||
case 19:
|
||||
play->nextEntranceIndex = 0x013D;
|
||||
@ -853,7 +853,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
play->nextEntranceIndex = 0x01ED;
|
||||
play->sceneLoadFlag = 0x14;
|
||||
play->fadeTransition = 15;
|
||||
gSaveContext.nextTransition = 15;
|
||||
gSaveContext.nextTransitionType = 15;
|
||||
break;
|
||||
case 49:
|
||||
play->nextEntranceIndex = 0x058C;
|
||||
@ -985,7 +985,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
play->sceneLoadFlag = 0x14;
|
||||
gSaveContext.cutsceneIndex = 0xFFF4;
|
||||
play->fadeTransition = 2;
|
||||
gSaveContext.nextTransition = 2;
|
||||
gSaveContext.nextTransitionType = 2;
|
||||
break;
|
||||
case 71:
|
||||
gSaveContext.equips.equipment |= 0x0100;
|
||||
@ -1003,7 +1003,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
play->sceneLoadFlag = 0x14;
|
||||
gSaveContext.cutsceneIndex = 0xFFF0;
|
||||
play->fadeTransition = 2;
|
||||
gSaveContext.nextTransition = 2;
|
||||
gSaveContext.nextTransitionType = 2;
|
||||
break;
|
||||
case 73:
|
||||
play->linkAgeOnLoad = 1;
|
||||
@ -1017,7 +1017,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
play->sceneLoadFlag = 0x14;
|
||||
gSaveContext.cutsceneIndex = 0xFFF3;
|
||||
play->fadeTransition = 3;
|
||||
gSaveContext.nextTransition = 3;
|
||||
gSaveContext.nextTransitionType = 3;
|
||||
break;
|
||||
case 75:
|
||||
play->linkAgeOnLoad = 1;
|
||||
@ -1109,7 +1109,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
play->nextEntranceIndex = 0x0610;
|
||||
play->sceneLoadFlag = 0x14;
|
||||
play->fadeTransition = 3;
|
||||
gSaveContext.nextTransition = 3;
|
||||
gSaveContext.nextTransitionType = 3;
|
||||
}
|
||||
break;
|
||||
case 97:
|
||||
@ -1122,27 +1122,27 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
play->nextEntranceIndex = 0x0580;
|
||||
play->sceneLoadFlag = 0x14;
|
||||
play->fadeTransition = 3;
|
||||
gSaveContext.nextTransition = 3;
|
||||
gSaveContext.nextTransitionType = 3;
|
||||
}
|
||||
break;
|
||||
case 98:
|
||||
play->nextEntranceIndex = 0x0564;
|
||||
play->sceneLoadFlag = 0x14;
|
||||
play->fadeTransition = 3;
|
||||
gSaveContext.nextTransition = 3;
|
||||
gSaveContext.nextTransitionType = 3;
|
||||
break;
|
||||
case 99:
|
||||
play->nextEntranceIndex = 0x0608;
|
||||
play->sceneLoadFlag = 0x14;
|
||||
play->fadeTransition = 2;
|
||||
gSaveContext.nextTransition = 2;
|
||||
gSaveContext.nextTransitionType = 2;
|
||||
break;
|
||||
case 100:
|
||||
play->nextEntranceIndex = 0x00EE;
|
||||
gSaveContext.cutsceneIndex = 0xFFF8;
|
||||
play->sceneLoadFlag = 0x14;
|
||||
play->fadeTransition = 3;
|
||||
gSaveContext.nextTransition = 3;
|
||||
gSaveContext.nextTransitionType = 3;
|
||||
break;
|
||||
case 101:
|
||||
play->nextEntranceIndex = 0x01F5;
|
||||
@ -1248,7 +1248,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
play->nextEntranceIndex = 0x0594;
|
||||
play->sceneLoadFlag = 0x14;
|
||||
play->fadeTransition = 2;
|
||||
gSaveContext.nextTransition = 2;
|
||||
gSaveContext.nextTransitionType = 2;
|
||||
break;
|
||||
case 116:
|
||||
if (gSaveContext.eventChkInf[12] & 0x100) {
|
||||
@ -1260,7 +1260,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
play->sceneLoadFlag = 0x14;
|
||||
play->fadeTransition = 3;
|
||||
}
|
||||
gSaveContext.nextTransition = 3;
|
||||
gSaveContext.nextTransitionType = 3;
|
||||
break;
|
||||
case 117:
|
||||
gSaveContext.gameMode = 3;
|
||||
@ -1275,7 +1275,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB
|
||||
gSaveContext.respawn[RESPAWN_MODE_DOWN].entranceIndex = 0x0517;
|
||||
Play_TriggerVoidOut(play);
|
||||
gSaveContext.respawnFlag = -2;
|
||||
gSaveContext.nextTransition = 2;
|
||||
gSaveContext.nextTransitionType = 2;
|
||||
break;
|
||||
case 119:
|
||||
gSaveContext.dayTime = 0x8000;
|
||||
@ -1357,7 +1357,7 @@ void Cutscene_Command_TransitionFX(PlayState* play, CutsceneContext* csCtx, CsCm
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
gSaveContext.unk_1410 = 1;
|
||||
gSaveContext.cutsceneTransitionControl = 1;
|
||||
break;
|
||||
case 10:
|
||||
case 11:
|
||||
@ -1371,7 +1371,7 @@ void Cutscene_Command_TransitionFX(PlayState* play, CutsceneContext* csCtx, CsCm
|
||||
}
|
||||
break;
|
||||
case 12:
|
||||
gSaveContext.unk_1410 = 255.0f - (155.0f * temp);
|
||||
gSaveContext.cutsceneTransitionControl = 255.0f - (155.0f * temp);
|
||||
break;
|
||||
case 13:
|
||||
play->envCtx.screenFillColor[0] = 0;
|
||||
|
@ -484,13 +484,13 @@ void GetItem_DrawJewel(PlayState* play, s16 drawId) {
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx, "../z_demo_effect.c", 2599),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
|
||||
// func_8002ED80(&this->actor, play, 0);
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 128, primXluColor[0], primXluColor[1], primXluColor[2], 255);
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, envXluColor[0], envXluColor[1], envXluColor[2], 255);
|
||||
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[0]);
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
// func_8002EBCC(&this->actor, play, 0);
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 128, primOpaColor[0], primOpaColor[1], primOpaColor[2], 255);
|
||||
gDPSetEnvColor(POLY_OPA_DISP++, envOpaColor[0], envOpaColor[1], envOpaColor[2], 255);
|
||||
@ -506,7 +506,7 @@ void GetItem_DrawMaskOrBombchu(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093BA8(play->state.gfxCtx);
|
||||
Gfx_SetupDL_26Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
|
||||
@ -519,7 +519,7 @@ void GetItem_DrawSoldOut(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 5);
|
||||
POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, 5);
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[0]);
|
||||
@ -532,12 +532,12 @@ void GetItem_DrawBlueFire(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPSegment(POLY_XLU_DISP++, 0x08,
|
||||
Gfx_TwoTexScroll(play->state.gfxCtx, 0, 0 * (play->state.frames * 0),
|
||||
0 * (play->state.frames * 0), 16, 32, 1, 1 * (play->state.frames * 1),
|
||||
@ -558,12 +558,12 @@ void GetItem_DrawPoes(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[1]);
|
||||
@ -587,12 +587,12 @@ void GetItem_DrawFairy(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[1]);
|
||||
@ -615,7 +615,7 @@ void GetItem_DrawMirrorShield(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08,
|
||||
Gfx_TwoTexScroll(play->state.gfxCtx, 0, 0 * (play->state.frames * 0) % 256,
|
||||
1 * (play->state.frames * 2) % 256, 64, 64, 1,
|
||||
@ -625,7 +625,7 @@ void GetItem_DrawMirrorShield(PlayState* play, s16 drawId) {
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[1]);
|
||||
@ -638,12 +638,12 @@ void GetItem_DrawSkullToken(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPSegment(POLY_XLU_DISP++, 0x08,
|
||||
Gfx_TwoTexScroll(play->state.gfxCtx, 0, 0 * (play->state.frames * 0),
|
||||
1 * -(play->state.frames * 5), 32, 32, 1, 0 * (play->state.frames * 0),
|
||||
@ -660,7 +660,7 @@ void GetItem_DrawEggOrMedallion(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093BA8(play->state.gfxCtx);
|
||||
Gfx_SetupDL_26Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
|
||||
@ -674,12 +674,12 @@ void GetItem_DrawCompass(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
|
||||
|
||||
POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 5);
|
||||
POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, 5);
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[1]);
|
||||
@ -692,7 +692,7 @@ void GetItem_DrawPotion(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08,
|
||||
Gfx_TwoTexScroll(play->state.gfxCtx, 0, -1 * (play->state.frames * 1),
|
||||
1 * (play->state.frames * 1), 32, 32, 1, -1 * (play->state.frames * 1),
|
||||
@ -704,7 +704,7 @@ void GetItem_DrawPotion(PlayState* play, s16 drawId) {
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[2]);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[3]);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[4]);
|
||||
@ -718,7 +718,7 @@ void GetItem_DrawGoronSword(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08,
|
||||
Gfx_TwoTexScroll(play->state.gfxCtx, 0, 1 * (play->state.frames * 1),
|
||||
0 * (play->state.frames * 1), 32, 32, 1, 0 * (play->state.frames * 1),
|
||||
@ -735,7 +735,7 @@ void GetItem_DrawDekuNuts(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08,
|
||||
Gfx_TwoTexScroll(play->state.gfxCtx, 0, 1 * (play->state.frames * 6),
|
||||
1 * (play->state.frames * 6), 32, 32, 1, 1 * (play->state.frames * 6),
|
||||
@ -752,7 +752,7 @@ void GetItem_DrawRecoveryHeart(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPSegment(POLY_XLU_DISP++, 0x08,
|
||||
Gfx_TwoTexScroll(play->state.gfxCtx, 0, 0 * (play->state.frames * 1),
|
||||
1 * -(play->state.frames * 3), 32, 32, 1, 0 * (play->state.frames * 1),
|
||||
@ -769,7 +769,7 @@ void GetItem_DrawFish(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPSegment(POLY_XLU_DISP++, 0x08,
|
||||
Gfx_TwoTexScroll(play->state.gfxCtx, 0, 0 * (play->state.frames * 0),
|
||||
1 * (play->state.frames * 1), 32, 32, 1, 0 * (play->state.frames * 0),
|
||||
@ -786,7 +786,7 @@ void GetItem_DrawOpa0(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
|
||||
@ -799,12 +799,12 @@ void GetItem_DrawOpa0Xlu1(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[1]);
|
||||
@ -830,7 +830,7 @@ void GetItem_DrawGenericMusicNote(PlayState* play, s16 drawId) {
|
||||
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx, __FILE__, __LINE__), G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gDPSetGrayscaleColor(POLY_XLU_DISP++, colors[color_slot][0], colors[color_slot][1], colors[color_slot][2], 255);
|
||||
gSPGrayscale(POLY_XLU_DISP++, true);
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[0]);
|
||||
gSPGrayscale(POLY_XLU_DISP++, false);
|
||||
|
||||
@ -842,7 +842,7 @@ void GetItem_DrawXlu01(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[0]);
|
||||
@ -856,13 +856,13 @@ void GetItem_DrawOpa10Xlu2(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[1]);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[2]);
|
||||
@ -875,12 +875,12 @@ void GetItem_DrawMagicArrow(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[1]);
|
||||
@ -894,7 +894,7 @@ void GetItem_DrawMagicSpell(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPSegment(POLY_XLU_DISP++, 0x08,
|
||||
Gfx_TwoTexScroll(play->state.gfxCtx, 0, 1 * (play->state.frames * 2),
|
||||
1 * -(play->state.frames * 6), 32, 32, 1, 1 * (play->state.frames * 1),
|
||||
@ -913,7 +913,7 @@ void GetItem_DrawOpa1023(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[1]);
|
||||
@ -929,13 +929,13 @@ void GetItem_DrawOpa10Xlu32(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[1]);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[3]);
|
||||
@ -951,13 +951,13 @@ void GetItem_DrawSmallRupee(PlayState* play, s16 drawId) {
|
||||
|
||||
Matrix_Scale(0.7f, 0.7f, 0.7f, MTXMODE_APPLY);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[1]);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[3]);
|
||||
@ -971,7 +971,7 @@ void GetItem_DrawScale(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPSegment(POLY_XLU_DISP++, 0x08,
|
||||
Gfx_TwoTexScroll(play->state.gfxCtx, 0, 1 * (play->state.frames * 2),
|
||||
-1 * (play->state.frames * 2), 64, 64, 1, 1 * (play->state.frames * 4),
|
||||
@ -991,13 +991,13 @@ void GetItem_DrawBulletBag(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[1]);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[2]);
|
||||
@ -1012,7 +1012,7 @@ void GetItem_DrawWallet(PlayState* play, s16 drawId) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[1]);
|
||||
|
@ -589,7 +589,7 @@ void EffectBlure_GetComputedValues(EffectBlure* this, s32 index, f32 ratio, Vec3
|
||||
void EffectBlure_SetupSmooth(EffectBlure* this, GraphicsContext* gfxCtx) {
|
||||
OPEN_DISPS(gfxCtx);
|
||||
|
||||
POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 0x26);
|
||||
POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, 0x26);
|
||||
|
||||
CLOSE_DISPS(gfxCtx);
|
||||
}
|
||||
@ -923,7 +923,7 @@ void EffectBlure_DrawSmooth(EffectBlure* this2, GraphicsContext* gfxCtx) {
|
||||
void EffectBlure_SetupSimple(GraphicsContext* gfxCtx, EffectBlure* this, Vtx* vtx) {
|
||||
OPEN_DISPS(gfxCtx);
|
||||
|
||||
POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 0x26);
|
||||
POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, 0x26);
|
||||
|
||||
CLOSE_DISPS(gfxCtx);
|
||||
}
|
||||
@ -932,7 +932,7 @@ void EffectBlure_SetupSimpleAlt(GraphicsContext* gfxCtx, EffectBlure* this, Vtx*
|
||||
OPEN_DISPS(gfxCtx);
|
||||
|
||||
gDPPipeSync(POLY_XLU_DISP++);
|
||||
POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 0x26);
|
||||
POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, 0x26);
|
||||
|
||||
gDPSetCycleType(POLY_XLU_DISP++, G_CYC_2CYCLE);
|
||||
gDPSetTextureLUT(POLY_XLU_DISP++, G_TT_NONE);
|
||||
@ -1162,7 +1162,7 @@ void EffectBlure_Draw(void* thisx, GraphicsContext* gfxCtx) {
|
||||
|
||||
if (this->numElements != 0) {
|
||||
if (this->flags == 0) {
|
||||
func_800942F0(gfxCtx);
|
||||
Gfx_SetupDL_38Xlu(gfxCtx);
|
||||
gDPPipeSync(POLY_XLU_DISP++);
|
||||
|
||||
vtx = Graph_Alloc(gfxCtx, sizeof(Vtx[32]));
|
||||
|
@ -160,7 +160,7 @@ void EffectShieldParticle_Draw(void* thisx, GraphicsContext* gfxCtx) {
|
||||
OPEN_DISPS(gfxCtx);
|
||||
|
||||
if (this != NULL) {
|
||||
POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 0x26);
|
||||
POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, 0x26);
|
||||
|
||||
gDPSetCycleType(POLY_XLU_DISP++, G_CYC_2CYCLE);
|
||||
gDPPipeSync(POLY_XLU_DISP++);
|
||||
|
@ -161,7 +161,7 @@ void EffectSpark_Draw(void* thisx, GraphicsContext* gfxCtx) {
|
||||
if (this != NULL) {
|
||||
gSPMatrix(POLY_XLU_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
||||
POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 0x26);
|
||||
POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, 0x26);
|
||||
gDPSetCycleType(POLY_XLU_DISP++, G_CYC_2CYCLE);
|
||||
gDPPipeSync(POLY_XLU_DISP++);
|
||||
|
||||
|
@ -66,7 +66,7 @@ void EffectSs_DrawGEffect(PlayState* play, EffectSs* this, void* texture) {
|
||||
if (mtx != NULL) {
|
||||
gSPMatrix(POLY_XLU_DISP++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(texture));
|
||||
func_80094C50(gfxCtx);
|
||||
Gfx_SetupDL_61Xlu(gfxCtx);
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, this->rgPrimColorR, this->rgPrimColorG, this->rgPrimColorB,
|
||||
this->rgPrimColorA);
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, this->rgEnvColorR, this->rgEnvColorG, this->rgEnvColorB, this->rgEnvColorA);
|
||||
|
@ -54,7 +54,7 @@ u32 ElfMessage_CheckCondition(ElfMessage* msg) {
|
||||
return ((msg->byte0 & 1) == 1) ==
|
||||
(CHECK_QUEST_ITEM(msg->byte3 - ITEM_MEDALLION_FOREST + QUEST_MEDALLION_FOREST) != 0);
|
||||
case (ELF_MSG_CONDITION_MAGIC << 4):
|
||||
return ((msg->byte0 & 1) == 1) == (((void)0, gSaveContext.magicAcquired) != 0);
|
||||
return ((msg->byte0 & 1) == 1) == (((void)0, gSaveContext.isMagicAcquired) != 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -349,7 +349,7 @@ void EnAObj_Draw(Actor* thisx, PlayState* play) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
|
||||
if (type >= A_OBJ_MAX) {
|
||||
type = A_OBJ_BOULDER_FRAGMENT;
|
||||
|
@ -1363,7 +1363,7 @@ void EnItem00_DrawRupee(EnItem00* this, PlayState* play) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
func_8002EBCC(&this->actor, play, 0);
|
||||
|
||||
if (this->actor.params <= ITEM00_RUPEE_RED) {
|
||||
@ -1407,7 +1407,7 @@ void EnItem00_DrawCollectible(EnItem00* this, PlayState* play) {
|
||||
texIndex -= 3;
|
||||
}
|
||||
|
||||
POLY_OPA_DISP = func_800946E4(POLY_OPA_DISP);
|
||||
POLY_OPA_DISP = Gfx_SetupDL_66(POLY_OPA_DISP);
|
||||
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sItemDropTex[texIndex]));
|
||||
|
||||
@ -1427,13 +1427,13 @@ void EnItem00_DrawHeartContainer(EnItem00* this, PlayState* play) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
func_8002EBCC(&this->actor, play, 0);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, gHeartPieceExteriorDL);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
func_8002ED80(&this->actor, play, 0);
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
@ -1456,7 +1456,7 @@ void EnItem00_DrawHeartPiece(EnItem00* this, PlayState* play) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
func_8002ED80(&this->actor, play, 0);
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
|
@ -51,16 +51,16 @@ void TransitionFade_Update(void* thisx, s32 updateRate) {
|
||||
break;
|
||||
case 1:
|
||||
this->fadeTimer += updateRate;
|
||||
if (this->fadeTimer >= gSaveContext.fadeDuration) {
|
||||
this->fadeTimer = gSaveContext.fadeDuration;
|
||||
if (this->fadeTimer >= gSaveContext.transFadeDuration) {
|
||||
this->fadeTimer = gSaveContext.transFadeDuration;
|
||||
this->isDone = 1;
|
||||
}
|
||||
if (!gSaveContext.fadeDuration) {
|
||||
if (!gSaveContext.transFadeDuration) {
|
||||
// "Divide by 0! Zero is included in ZCommonGet fade_speed"
|
||||
osSyncPrintf(VT_COL(RED, WHITE) "0除算! ZCommonGet fade_speed に0がはいってる" VT_RST);
|
||||
}
|
||||
|
||||
alpha = (255.0f * this->fadeTimer) / ((void)0, gSaveContext.fadeDuration);
|
||||
alpha = (255.0f * this->fadeTimer) / ((void)0, gSaveContext.transFadeDuration);
|
||||
this->fadeColor.a = (this->fadeDirection != 0) ? 255 - alpha : alpha;
|
||||
break;
|
||||
case 2:
|
||||
|
@ -67,14 +67,14 @@ void TransitionWipe_Update(void* thisx, s32 updateRate) {
|
||||
u8 unk1419;
|
||||
|
||||
if (this->direction != 0) {
|
||||
unk1419 = gSaveContext.unk_1419;
|
||||
unk1419 = gSaveContext.transWipeSpeed;
|
||||
this->texY += (unk1419 * 3) / updateRate;
|
||||
if (this->texY >= 0x264) {
|
||||
this->texY = 0x264;
|
||||
this->isDone = 1;
|
||||
}
|
||||
} else {
|
||||
unk1419 = gSaveContext.unk_1419;
|
||||
unk1419 = gSaveContext.transWipeSpeed;
|
||||
this->texY -= (unk1419 * 3) / updateRate;
|
||||
if (this->texY < 0x14E) {
|
||||
this->texY = 0x14D;
|
||||
|
@ -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.unk_13F0 != 8 && gSaveContext.unk_13F0 != 9 &&
|
||||
play->shootingGalleryStatus <= 1 && gSaveContext.magicState != 8 && gSaveContext.magicState != 9 &&
|
||||
(play->sceneNum != SCENE_BOWLING || !Flags_GetSwitch(play, 0x38))) {
|
||||
|
||||
if (CVar_GetS32("gCheatEasyPauseBufferFrameAdvance", 0) == 2 && !CHECK_BTN_ALL(input->press.button, BTN_START)) {
|
||||
|
@ -295,7 +295,7 @@ void Environment_Init(PlayState* play2, EnvironmentContext* envCtx, s32 unused)
|
||||
|
||||
sLightningFlashAlpha = 0;
|
||||
|
||||
gSaveContext.unk_1410 = 0;
|
||||
gSaveContext.cutsceneTransitionControl = 0;
|
||||
|
||||
envCtx->adjAmbientColor[0] = envCtx->adjAmbientColor[1] = envCtx->adjAmbientColor[2] = envCtx->adjLight1Color[0] =
|
||||
envCtx->adjLight1Color[1] = envCtx->adjLight1Color[2] = envCtx->adjFogColor[0] = envCtx->adjFogColor[1] =
|
||||
@ -326,7 +326,7 @@ void Environment_Init(PlayState* play2, EnvironmentContext* envCtx, s32 unused)
|
||||
|
||||
play->envCtx.unk_F2[0] = 0;
|
||||
|
||||
if (gSaveContext.unk_13C3 != 0) {
|
||||
if (gSaveContext.retainWeatherMode != 0) {
|
||||
if (((void)0, gSaveContext.sceneSetupIndex) < 4) {
|
||||
switch (gWeatherMode) {
|
||||
case 1:
|
||||
@ -378,7 +378,7 @@ void Environment_Init(PlayState* play2, EnvironmentContext* envCtx, s32 unused)
|
||||
D_8011FB38 = 0;
|
||||
D_8011FB34 = 0;
|
||||
gSkyboxBlendingEnabled = false;
|
||||
gSaveContext.unk_13C3 = 0;
|
||||
gSaveContext.retainWeatherMode = 0;
|
||||
R_ENV_LIGHT1_DIR(0) = 80;
|
||||
R_ENV_LIGHT1_DIR(1) = 80;
|
||||
R_ENV_LIGHT1_DIR(2) = 80;
|
||||
@ -1350,7 +1350,7 @@ void Environment_DrawSunAndMoon(PlayState* play) {
|
||||
scale = (color * 2.0f) + 10.0f;
|
||||
Matrix_Scale(scale, scale, scale, MTXMODE_APPLY);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_LOAD);
|
||||
func_80093AD0(play->state.gfxCtx);
|
||||
Gfx_SetupDL_54Opa(play->state.gfxCtx);
|
||||
|
||||
static Vtx vertices[] = {
|
||||
VTX(-31, -31, 0, 0, 0, 255, 255, 255, 255),
|
||||
@ -1388,7 +1388,7 @@ void Environment_DrawSunAndMoon(PlayState* play) {
|
||||
|
||||
if (alpha > 0.0f) {
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx), G_MTX_LOAD);
|
||||
func_8009398C(play->state.gfxCtx);
|
||||
Gfx_SetupDL_51Opa(play->state.gfxCtx);
|
||||
gDPPipeSync(POLY_OPA_DISP++);
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 240, 255, 180, alpha);
|
||||
gDPSetEnvColor(POLY_OPA_DISP++, 80, 70, 20, alpha);
|
||||
@ -1581,7 +1581,7 @@ void Environment_DrawLensFlare(PlayState* play, EnvironmentContext* envCtx, View
|
||||
|
||||
if (screenFillAlpha != 0) {
|
||||
if (alphaScale > 0.0f) {
|
||||
POLY_XLU_DISP = func_800937C0(POLY_XLU_DISP);
|
||||
POLY_XLU_DISP = Gfx_SetupDL_57(POLY_XLU_DISP);
|
||||
|
||||
alpha = colorIntensity / 10.0f;
|
||||
alpha = CLAMP_MAX(alpha, 1.0f);
|
||||
@ -1664,7 +1664,7 @@ void Environment_DrawRain(PlayState* play, View* view, GraphicsContext* gfxCtx)
|
||||
if (play->envCtx.unk_EE[1]) {
|
||||
gDPPipeSync(POLY_XLU_DISP++);
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 150, 255, 255, 30);
|
||||
POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 20);
|
||||
POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, 20);
|
||||
}
|
||||
|
||||
// draw rain drops
|
||||
@ -1708,7 +1708,7 @@ void Environment_DrawRain(PlayState* play, View* view, GraphicsContext* gfxCtx)
|
||||
FrameInterpolation_RecordOpenChild("Droplet Ring", i);
|
||||
|
||||
if (!firstDone) {
|
||||
func_80093D84(gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(gfxCtx);
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, 155, 155, 155, 0);
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 255, 120);
|
||||
firstDone++;
|
||||
@ -1768,7 +1768,7 @@ void Environment_DrawSkyboxFilters(PlayState* play) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_800938B4(play->state.gfxCtx);
|
||||
Gfx_SetupDL_57Opa(play->state.gfxCtx);
|
||||
|
||||
alpha = (1000 - play->lightCtx.fogNear) * 0.02f;
|
||||
|
||||
@ -1790,7 +1790,7 @@ void Environment_DrawSkyboxFilters(PlayState* play) {
|
||||
if (play->envCtx.customSkyboxFilter) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_800938B4(play->state.gfxCtx);
|
||||
Gfx_SetupDL_57Opa(play->state.gfxCtx);
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, play->envCtx.skyboxFilterColor[0],
|
||||
play->envCtx.skyboxFilterColor[1], play->envCtx.skyboxFilterColor[2],
|
||||
play->envCtx.skyboxFilterColor[3]);
|
||||
@ -1803,7 +1803,7 @@ void Environment_DrawSkyboxFilters(PlayState* play) {
|
||||
void Environment_DrawLightningFlash(PlayState* play, u8 red, u8 green, u8 blue, u8 alpha) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_800938B4(play->state.gfxCtx);
|
||||
Gfx_SetupDL_57Opa(play->state.gfxCtx);
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, red, green, blue, alpha);
|
||||
gDPFillRectangle(POLY_OPA_DISP++, 0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1);
|
||||
|
||||
@ -1977,7 +1977,7 @@ void Environment_DrawLightning(PlayState* play, s32 unused) {
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(lightningTextures[sLightningBolts[i].textureIndex]));
|
||||
func_80094C50(play->state.gfxCtx);
|
||||
Gfx_SetupDL_61Xlu(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_XLU_DISP++, SEG_ADDR(1, 0), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_XLU_DISP++, gEffLightningDL);
|
||||
}
|
||||
@ -2252,7 +2252,7 @@ void Environment_FillScreen(GraphicsContext* gfxCtx, u8 red, u8 green, u8 blue,
|
||||
OPEN_DISPS(gfxCtx);
|
||||
|
||||
if (drawFlags & FILL_SCREEN_OPA) {
|
||||
POLY_OPA_DISP = func_800937C0(POLY_OPA_DISP);
|
||||
POLY_OPA_DISP = Gfx_SetupDL_57(POLY_OPA_DISP);
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, red, green, blue, alpha);
|
||||
gDPSetAlphaDither(POLY_OPA_DISP++, G_AD_DISABLE);
|
||||
gDPSetColorDither(POLY_OPA_DISP++, G_CD_DISABLE);
|
||||
@ -2260,7 +2260,7 @@ void Environment_FillScreen(GraphicsContext* gfxCtx, u8 red, u8 green, u8 blue,
|
||||
}
|
||||
|
||||
if (drawFlags & FILL_SCREEN_XLU) {
|
||||
POLY_XLU_DISP = func_800937C0(POLY_XLU_DISP);
|
||||
POLY_XLU_DISP = Gfx_SetupDL_57(POLY_XLU_DISP);
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, red, green, blue, alpha);
|
||||
|
||||
if ((u32)alpha == 255) {
|
||||
@ -2420,7 +2420,7 @@ void Environment_DrawSandstorm(PlayState* play, u8 sandstormState) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
POLY_XLU_DISP = func_80093F34(POLY_XLU_DISP);
|
||||
POLY_XLU_DISP = Gfx_SetupDL_64(POLY_XLU_DISP);
|
||||
gDPSetAlphaDither(POLY_XLU_DISP++, G_AD_NOISE);
|
||||
gDPSetColorDither(POLY_XLU_DISP++, G_CD_NOISE);
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0x80, primColor.r, primColor.g, primColor.b, play->envCtx.sandstormPrimA);
|
||||
@ -2531,7 +2531,7 @@ void Environment_WarpSongLeave(PlayState* play) {
|
||||
play->nextEntranceIndex = gSaveContext.respawn[RESPAWN_MODE_RETURN].entranceIndex;
|
||||
play->sceneLoadFlag = 0x14;
|
||||
play->fadeTransition = 3;
|
||||
gSaveContext.nextTransition = 3;
|
||||
gSaveContext.nextTransitionType = 3;
|
||||
|
||||
switch (play->nextEntranceIndex) {
|
||||
case 0x147:
|
||||
|
@ -594,14 +594,14 @@ void HealthMeter_Draw(PlayState* play) {
|
||||
if ((ddHeartCountMinusOne < 0) || (i > ddHeartCountMinusOne)) {
|
||||
if (curCombineModeSet != 1) {
|
||||
curCombineModeSet = 1;
|
||||
func_80094520(gfxCtx);
|
||||
Gfx_SetupDL_39Overlay(gfxCtx);
|
||||
gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE,
|
||||
0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0);
|
||||
}
|
||||
} else {
|
||||
if (curCombineModeSet != 3) {
|
||||
curCombineModeSet = 3;
|
||||
func_80094520(gfxCtx);
|
||||
Gfx_SetupDL_39Overlay(gfxCtx);
|
||||
gDPSetCombineLERP(OVERLAY_DISP++, ENVIRONMENT, PRIMITIVE, TEXEL0, PRIMITIVE, TEXEL0, 0, PRIMITIVE,
|
||||
0, ENVIRONMENT, PRIMITIVE, TEXEL0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0);
|
||||
}
|
||||
@ -632,14 +632,14 @@ void HealthMeter_Draw(PlayState* play) {
|
||||
if ((ddHeartCountMinusOne < 0) || (i > ddHeartCountMinusOne)) {
|
||||
if (curCombineModeSet != 2) {
|
||||
curCombineModeSet = 2;
|
||||
func_80094A14(gfxCtx);
|
||||
Gfx_SetupDL_42Overlay(gfxCtx);
|
||||
gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE,
|
||||
0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0);
|
||||
}
|
||||
} else {
|
||||
if (curCombineModeSet != 4) {
|
||||
curCombineModeSet = 4;
|
||||
func_80094A14(gfxCtx);
|
||||
Gfx_SetupDL_42Overlay(gfxCtx);
|
||||
gDPSetCombineLERP(OVERLAY_DISP++, ENVIRONMENT, PRIMITIVE, TEXEL0, PRIMITIVE, TEXEL0, 0, PRIMITIVE,
|
||||
0, ENVIRONMENT, PRIMITIVE, TEXEL0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0);
|
||||
}
|
||||
|
@ -616,7 +616,7 @@ void Minimap_DrawCompassIcons(PlayState* play) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
if (play->interfaceCtx.minimapAlpha >= 0xAA) {
|
||||
func_80094A14(play->state.gfxCtx);
|
||||
Gfx_SetupDL_42Overlay(play->state.gfxCtx);
|
||||
|
||||
//Player current position (yellow arrow)
|
||||
gSPMatrix(OVERLAY_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
@ -749,7 +749,7 @@ void Minimap_Draw(PlayState* play) {
|
||||
case SCENE_HAKADANCH:
|
||||
case SCENE_ICE_DOUKUTO:
|
||||
if (!R_MINIMAP_DISABLED) {
|
||||
func_80094520(play->state.gfxCtx);
|
||||
Gfx_SetupDL_39Overlay(play->state.gfxCtx);
|
||||
gDPSetCombineLERP(OVERLAY_DISP++, 1, 0, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, 0, 1, 0, PRIMITIVE, 0,
|
||||
TEXEL0, 0, PRIMITIVE, 0);
|
||||
|
||||
@ -788,7 +788,7 @@ void Minimap_Draw(PlayState* play) {
|
||||
|
||||
if (CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, mapIndex)) {
|
||||
Minimap_DrawCompassIcons(play); // Draw icons for the player spawn and current position
|
||||
func_80094520(play->state.gfxCtx);
|
||||
Gfx_SetupDL_39Overlay(play->state.gfxCtx);
|
||||
MapMark_Draw(play);
|
||||
}
|
||||
}
|
||||
@ -826,7 +826,7 @@ void Minimap_Draw(PlayState* play) {
|
||||
case SCENE_SPOT20:
|
||||
case SCENE_GANON_TOU:
|
||||
if (!R_MINIMAP_DISABLED) {
|
||||
func_80094520(play->state.gfxCtx);
|
||||
Gfx_SetupDL_39Overlay(play->state.gfxCtx);
|
||||
|
||||
gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM);
|
||||
if (CVar_GetS32("gHudColors", 1) == 2) {//Overworld minimap
|
||||
|
@ -2210,11 +2210,11 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
msgCtx->msgMode >= MSGMODE_TEXT_BOX_GROWING && msgCtx->msgMode < MSGMODE_TEXT_CLOSING &&
|
||||
msgCtx->textBoxType < TEXTBOX_TYPE_NONE_BOTTOM) {
|
||||
Message_SetView(&msgCtx->view);
|
||||
func_8009457C(&gfx);
|
||||
Gfx_SetupDL_39Ptr(&gfx);
|
||||
Message_DrawTextBox(play, &gfx);
|
||||
}
|
||||
|
||||
func_8009457C(&gfx);
|
||||
Gfx_SetupDL_39Ptr(&gfx);
|
||||
|
||||
gDPSetAlphaCompare(gfx++, G_AC_NONE);
|
||||
gDPSetCombineLERP(gfx++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE,
|
||||
@ -2917,7 +2917,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
// "Recording complete!!!!!!!!!"
|
||||
osSyncPrintf("録音終了!!!!!!!!! message->info->status=%d \n",
|
||||
msgCtx->ocarinaStaff->state);
|
||||
gSaveContext.scarecrowCustomSongSet = true;
|
||||
gSaveContext.scarecrowLongSongSet = true;
|
||||
}
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_OCARINA_ERROR, &D_801333D4, 4, &D_801333E0, &D_801333E0,
|
||||
&D_801333E8);
|
||||
@ -2930,10 +2930,10 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
osSyncPrintf("録音終了!!!!!!!!!録音終了\n");
|
||||
osSyncPrintf(VT_FGCOL(YELLOW));
|
||||
osSyncPrintf("\n====================================================================\n");
|
||||
memcpy(gSaveContext.scarecrowCustomSong, gScarecrowCustomSongPtr,
|
||||
sizeof(gSaveContext.scarecrowCustomSong));
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.scarecrowCustomSong); i++) {
|
||||
osSyncPrintf("%d, ", gSaveContext.scarecrowCustomSong[i]);
|
||||
memcpy(gSaveContext.scarecrowLongSong, gScarecrowCustomSongPtr,
|
||||
sizeof(gSaveContext.scarecrowLongSong));
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.scarecrowLongSong); i++) {
|
||||
osSyncPrintf("%d, ", gSaveContext.scarecrowLongSong[i]);
|
||||
}
|
||||
osSyncPrintf(VT_RST);
|
||||
osSyncPrintf("\n====================================================================\n");
|
||||
@ -3176,7 +3176,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) {
|
||||
|
||||
if (msgCtx->msgMode >= MSGMODE_OCARINA_PLAYING && msgCtx->msgMode < MSGMODE_TEXT_AWAIT_NEXT &&
|
||||
msgCtx->ocarinaAction != OCARINA_ACTION_FREE_PLAY && msgCtx->ocarinaAction != OCARINA_ACTION_CHECK_NOWARP) {
|
||||
func_8009457C(&gfx);
|
||||
Gfx_SetupDL_39Ptr(&gfx);
|
||||
|
||||
gDPSetCombineLERP(gfx++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE,
|
||||
ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0);
|
||||
@ -3310,7 +3310,7 @@ void Message_Draw(PlayState* play) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
watchVar = gSaveContext.scarecrowCustomSongSet;
|
||||
watchVar = gSaveContext.scarecrowLongSongSet;
|
||||
Message_DrawDebugVariableChanged(&watchVar, play->state.gfxCtx);
|
||||
if (BREG(0) != 0 && play->msgCtx.textId != 0) {
|
||||
plusOne = Graph_GfxPlusOne(polyOpaP = POLY_OPA_DISP);
|
||||
|
@ -987,7 +987,7 @@ void func_80083108(PlayState* play) {
|
||||
}
|
||||
|
||||
Interface_ChangeAlpha(50);
|
||||
} else if ((player->stateFlags1 & 0x00200000) || (player->stateFlags2 & 0x00040000)) {
|
||||
} else if ((player->stateFlags1 & 0x00200000) || (player->stateFlags2 & PLAYER_STATE2_CRAWLING)) {
|
||||
if (gSaveContext.buttonStatus[0] != BTN_DISABLED) {
|
||||
gSaveContext.buttonStatus[0] = BTN_DISABLED;
|
||||
gSaveContext.buttonStatus[1] = BTN_DISABLED;
|
||||
@ -2222,7 +2222,7 @@ u8 Item_Give(PlayState* play, u8 item) {
|
||||
PerformAutosave(play, item);
|
||||
return item;
|
||||
} else if (item == ITEM_MAGIC_SMALL) {
|
||||
if (gSaveContext.unk_13F0 != 10) {
|
||||
if (gSaveContext.magicState != 10) {
|
||||
if (play != NULL) {
|
||||
Magic_Fill(play);
|
||||
}
|
||||
@ -2241,7 +2241,7 @@ u8 Item_Give(PlayState* play, u8 item) {
|
||||
PerformAutosave(play, item);
|
||||
return item;
|
||||
} else if (item == ITEM_MAGIC_LARGE) {
|
||||
if (gSaveContext.unk_13F0 != 10) {
|
||||
if (gSaveContext.magicState != 10) {
|
||||
if (play != NULL) {
|
||||
Magic_Fill(play);
|
||||
}
|
||||
@ -2365,16 +2365,16 @@ u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
|
||||
|
||||
slot = SLOT(item);
|
||||
if (item == RG_MAGIC_SINGLE) {
|
||||
gSaveContext.magicAcquired = true;
|
||||
gSaveContext.unk_13F6 = 0x30;
|
||||
gSaveContext.isMagicAcquired = true;
|
||||
gSaveContext.magicFillTarget = 0x30;
|
||||
Magic_Fill(play);
|
||||
return RG_NONE;
|
||||
} else if (item == RG_MAGIC_DOUBLE) {
|
||||
if (!gSaveContext.magicAcquired) {
|
||||
gSaveContext.magicAcquired = true;
|
||||
if (!gSaveContext.isMagicAcquired) {
|
||||
gSaveContext.isMagicAcquired = true;
|
||||
}
|
||||
gSaveContext.doubleMagic = true;
|
||||
gSaveContext.unk_13F6 = 0x60;
|
||||
gSaveContext.isDoubleMagicAcquired = true;
|
||||
gSaveContext.magicFillTarget = 0x60;
|
||||
gSaveContext.magicLevel = 0;
|
||||
Magic_Fill(play);
|
||||
return RG_NONE;
|
||||
@ -2389,7 +2389,7 @@ u16 Randomizer_Item_Give(PlayState* play, GetItemEntry giEntry) {
|
||||
}
|
||||
|
||||
if (item == RG_DOUBLE_DEFENSE) {
|
||||
gSaveContext.doubleDefense = true;
|
||||
gSaveContext.isDoubleDefenseAcquired = true;
|
||||
gSaveContext.inventory.defenseHearts = 20;
|
||||
gSaveContext.healthAccumulator = 0x140;
|
||||
return RG_NONE;
|
||||
@ -3063,7 +3063,7 @@ s32 Health_ChangeBy(PlayState* play, s16 healthChange) {
|
||||
// clang-format off
|
||||
if (healthChange > 0) { Audio_PlaySoundGeneral(NA_SE_SY_HP_RECOVER, &D_801333D4, 4,
|
||||
&D_801333E0, &D_801333E0, &D_801333E8);
|
||||
} else if ((gSaveContext.doubleDefense != 0) && (healthChange < 0)) {
|
||||
} else if ((gSaveContext.isDoubleDefenseAcquired != 0) && (healthChange < 0)) {
|
||||
healthChange >>= 1;
|
||||
osSyncPrintf("ハート減少半分!!=%d\n", healthChange); // "Heart decrease halved!!=%d"
|
||||
}
|
||||
@ -3220,29 +3220,29 @@ void Inventory_ChangeAmmo(s16 item, s16 ammoChange) {
|
||||
}
|
||||
|
||||
void Magic_Fill(PlayState* play) {
|
||||
if (gSaveContext.magicAcquired) {
|
||||
gSaveContext.unk_13F2 = gSaveContext.unk_13F0;
|
||||
gSaveContext.unk_13F6 = (gSaveContext.doubleMagic + 1) * 0x30;
|
||||
gSaveContext.unk_13F0 = 9;
|
||||
if (gSaveContext.isMagicAcquired) {
|
||||
gSaveContext.prevMagicState = gSaveContext.magicState;
|
||||
gSaveContext.magicFillTarget = (gSaveContext.isDoubleMagicAcquired + 1) * 0x30;
|
||||
gSaveContext.magicState = 9;
|
||||
}
|
||||
}
|
||||
|
||||
void func_800876C8(PlayState* play) {
|
||||
if ((gSaveContext.unk_13F0 != 8) && (gSaveContext.unk_13F0 != 9)) {
|
||||
if (gSaveContext.unk_13F0 == 10) {
|
||||
gSaveContext.unk_13F2 = gSaveContext.unk_13F0;
|
||||
if ((gSaveContext.magicState != 8) && (gSaveContext.magicState != 9)) {
|
||||
if (gSaveContext.magicState == 10) {
|
||||
gSaveContext.prevMagicState = gSaveContext.magicState;
|
||||
}
|
||||
gSaveContext.unk_13F0 = 5;
|
||||
gSaveContext.magicState = 5;
|
||||
}
|
||||
}
|
||||
|
||||
s32 func_80087708(PlayState* play, s16 arg1, s16 arg2) {
|
||||
if (!gSaveContext.magicAcquired) {
|
||||
if (!gSaveContext.isMagicAcquired) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((arg2 != 5) && (gSaveContext.magic - arg1) < 0) {
|
||||
if (gSaveContext.unk_13F4 != 0) {
|
||||
if (gSaveContext.magicCapacity != 0) {
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_ERROR, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
|
||||
}
|
||||
return 0;
|
||||
@ -3251,66 +3251,66 @@ s32 func_80087708(PlayState* play, s16 arg1, s16 arg2) {
|
||||
switch (arg2) {
|
||||
case 0:
|
||||
case 2:
|
||||
if ((gSaveContext.unk_13F0 == 0) || (gSaveContext.unk_13F0 == 7)) {
|
||||
if (gSaveContext.unk_13F0 == 7) {
|
||||
if ((gSaveContext.magicState == 0) || (gSaveContext.magicState == 7)) {
|
||||
if (gSaveContext.magicState == 7) {
|
||||
play->actorCtx.lensActive = false;
|
||||
}
|
||||
gSaveContext.unk_13F8 = gSaveContext.magic - arg1;
|
||||
gSaveContext.unk_13F0 = 1;
|
||||
gSaveContext.magicTarget = gSaveContext.magic - arg1;
|
||||
gSaveContext.magicState = 1;
|
||||
return 1;
|
||||
} else {
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_ERROR, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
|
||||
return 0;
|
||||
}
|
||||
case 1:
|
||||
if ((gSaveContext.unk_13F0 == 0) || (gSaveContext.unk_13F0 == 7)) {
|
||||
if (gSaveContext.unk_13F0 == 7) {
|
||||
if ((gSaveContext.magicState == 0) || (gSaveContext.magicState == 7)) {
|
||||
if (gSaveContext.magicState == 7) {
|
||||
play->actorCtx.lensActive = false;
|
||||
}
|
||||
gSaveContext.unk_13F8 = gSaveContext.magic - arg1;
|
||||
gSaveContext.unk_13F0 = 6;
|
||||
gSaveContext.magicTarget = gSaveContext.magic - arg1;
|
||||
gSaveContext.magicState = 6;
|
||||
return 1;
|
||||
} else {
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_ERROR, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
|
||||
return 0;
|
||||
}
|
||||
case 3:
|
||||
if (gSaveContext.unk_13F0 == 0) {
|
||||
if (gSaveContext.magicState == 0) {
|
||||
if (gSaveContext.magic != 0) {
|
||||
play->interfaceCtx.unk_230 = 80;
|
||||
gSaveContext.unk_13F0 = 7;
|
||||
gSaveContext.magicState = 7;
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
if (gSaveContext.unk_13F0 == 7) {
|
||||
if (gSaveContext.magicState == 7) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
case 4:
|
||||
if ((gSaveContext.unk_13F0 == 0) || (gSaveContext.unk_13F0 == 7)) {
|
||||
if (gSaveContext.unk_13F0 == 7) {
|
||||
if ((gSaveContext.magicState == 0) || (gSaveContext.magicState == 7)) {
|
||||
if (gSaveContext.magicState == 7) {
|
||||
play->actorCtx.lensActive = false;
|
||||
}
|
||||
gSaveContext.unk_13F8 = gSaveContext.magic - arg1;
|
||||
gSaveContext.unk_13F0 = 4;
|
||||
gSaveContext.magicTarget = gSaveContext.magic - arg1;
|
||||
gSaveContext.magicState = 4;
|
||||
return 1;
|
||||
} else {
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_ERROR, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
|
||||
return 0;
|
||||
}
|
||||
case 5:
|
||||
if (gSaveContext.unk_13F4 >= gSaveContext.magic) {
|
||||
gSaveContext.unk_13F8 = gSaveContext.magic + arg1;
|
||||
if (gSaveContext.magicCapacity >= gSaveContext.magic) {
|
||||
gSaveContext.magicTarget = gSaveContext.magic + arg1;
|
||||
|
||||
if (gSaveContext.unk_13F8 >= gSaveContext.unk_13F4) {
|
||||
gSaveContext.unk_13F8 = gSaveContext.unk_13F4;
|
||||
if (gSaveContext.magicTarget >= gSaveContext.magicCapacity) {
|
||||
gSaveContext.magicTarget = gSaveContext.magicCapacity;
|
||||
}
|
||||
|
||||
gSaveContext.unk_13F0 = 10;
|
||||
gSaveContext.magicState = 10;
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
@ -3359,23 +3359,23 @@ void Interface_UpdateMagicBar(PlayState* play) {
|
||||
s16 borderChangeB;
|
||||
s16 temp;
|
||||
|
||||
switch (gSaveContext.unk_13F0) {
|
||||
switch (gSaveContext.magicState) {
|
||||
case 8:
|
||||
temp = gSaveContext.magicLevel * 0x30;
|
||||
if (gSaveContext.unk_13F4 != temp) {
|
||||
if (gSaveContext.unk_13F4 < temp) {
|
||||
gSaveContext.unk_13F4 += 8;
|
||||
if (gSaveContext.unk_13F4 > temp) {
|
||||
gSaveContext.unk_13F4 = temp;
|
||||
if (gSaveContext.magicCapacity != temp) {
|
||||
if (gSaveContext.magicCapacity < temp) {
|
||||
gSaveContext.magicCapacity += 8;
|
||||
if (gSaveContext.magicCapacity > temp) {
|
||||
gSaveContext.magicCapacity = temp;
|
||||
}
|
||||
} else {
|
||||
gSaveContext.unk_13F4 -= 8;
|
||||
if (gSaveContext.unk_13F4 <= temp) {
|
||||
gSaveContext.unk_13F4 = temp;
|
||||
gSaveContext.magicCapacity -= 8;
|
||||
if (gSaveContext.magicCapacity <= temp) {
|
||||
gSaveContext.magicCapacity = temp;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
gSaveContext.unk_13F0 = 9;
|
||||
gSaveContext.magicState = 9;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -3388,31 +3388,31 @@ void Interface_UpdateMagicBar(PlayState* play) {
|
||||
}
|
||||
|
||||
// "Storage MAGIC_NOW=%d (%d)"
|
||||
osSyncPrintf("蓄電 MAGIC_NOW=%d (%d)\n", gSaveContext.magic, gSaveContext.unk_13F6);
|
||||
if (gSaveContext.magic >= gSaveContext.unk_13F6) {
|
||||
gSaveContext.magic = gSaveContext.unk_13F6;
|
||||
gSaveContext.unk_13F0 = gSaveContext.unk_13F2;
|
||||
gSaveContext.unk_13F2 = 0;
|
||||
osSyncPrintf("蓄電 MAGIC_NOW=%d (%d)\n", gSaveContext.magic, gSaveContext.magicFillTarget);
|
||||
if (gSaveContext.magic >= gSaveContext.magicFillTarget) {
|
||||
gSaveContext.magic = gSaveContext.magicFillTarget;
|
||||
gSaveContext.magicState = gSaveContext.prevMagicState;
|
||||
gSaveContext.prevMagicState = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
sMagicBorderRatio = 2;
|
||||
gSaveContext.unk_13F0 = 2;
|
||||
gSaveContext.magicState = 2;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
gSaveContext.magic -= 2;
|
||||
if (gSaveContext.magic <= 0) {
|
||||
gSaveContext.magic = 0;
|
||||
gSaveContext.unk_13F0 = 3;
|
||||
gSaveContext.magicState = 3;
|
||||
if (CVar_GetS32("gHudColors", 1) == 2) {
|
||||
sMagicBorder = CVar_GetRGB("gCCMagicBorderNormPrim", sMagicBorder_ori);
|
||||
} else {
|
||||
sMagicBorder = sMagicBorder_ori;
|
||||
}
|
||||
} else if (gSaveContext.magic == gSaveContext.unk_13F8) {
|
||||
gSaveContext.unk_13F0 = 3;
|
||||
} else if (gSaveContext.magic == gSaveContext.magicTarget) {
|
||||
gSaveContext.magicState = 3;
|
||||
if (CVar_GetS32("gHudColors", 1) == 2) {
|
||||
sMagicBorder = CVar_GetRGB("gCCMagicBorderNormPrim", sMagicBorder_ori);
|
||||
} else {
|
||||
@ -3464,7 +3464,7 @@ void Interface_UpdateMagicBar(PlayState* play) {
|
||||
} else {
|
||||
sMagicBorder = sMagicBorder_ori;
|
||||
}
|
||||
gSaveContext.unk_13F0 = 0;
|
||||
gSaveContext.magicState = 0;
|
||||
break;
|
||||
|
||||
case 7:
|
||||
@ -3484,7 +3484,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.unk_13F0 = 0;
|
||||
gSaveContext.magicState = 0;
|
||||
if (CVar_GetS32("gHudColors", 1) == 2) {
|
||||
sMagicBorder = CVar_GetRGB("gCCMagicBorderNormPrim", sMagicBorder_ori);
|
||||
} else {
|
||||
@ -3539,15 +3539,15 @@ void Interface_UpdateMagicBar(PlayState* play) {
|
||||
case 10:
|
||||
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.unk_13F8) {
|
||||
gSaveContext.magic = gSaveContext.unk_13F8;
|
||||
gSaveContext.unk_13F0 = gSaveContext.unk_13F2;
|
||||
gSaveContext.unk_13F2 = 0;
|
||||
if (gSaveContext.magic >= gSaveContext.magicTarget) {
|
||||
gSaveContext.magic = gSaveContext.magicTarget;
|
||||
gSaveContext.magicState = gSaveContext.prevMagicState;
|
||||
gSaveContext.prevMagicState = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
gSaveContext.unk_13F0 = 0;
|
||||
gSaveContext.magicState = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -3557,7 +3557,7 @@ void Interface_DrawLineupTick(PlayState* play) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80094520(play->state.gfxCtx);
|
||||
Gfx_SetupDL_39Overlay(play->state.gfxCtx);
|
||||
|
||||
gDPSetEnvColor(OVERLAY_DISP++, 255, 255, 255, 255);
|
||||
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255);
|
||||
@ -3652,7 +3652,7 @@ void Interface_DrawMagicBar(PlayState* play) {
|
||||
rMagicFillX = rMagicFillX_original;
|
||||
}
|
||||
|
||||
func_80094520(play->state.gfxCtx);
|
||||
Gfx_SetupDL_39Overlay(play->state.gfxCtx);
|
||||
|
||||
if (CVar_GetS32("gHudColors", 1) == 2) {//Original game add color there so to prevent miss match we make it all white :)
|
||||
gDPSetEnvColor(OVERLAY_DISP++, 255, 255, 255, 255);
|
||||
@ -3663,13 +3663,13 @@ void Interface_DrawMagicBar(PlayState* play) {
|
||||
|
||||
OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gMagicMeterEndTex, 8, 16, PosX_Start, magicBarY, 8, 16, 1 << 10, 1 << 10);
|
||||
|
||||
OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gMagicMeterMidTex, 24, 16, PosX_MidEnd, magicBarY, gSaveContext.unk_13F4, 16, 1 << 10, 1 << 10);
|
||||
OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gMagicMeterMidTex, 24, 16, PosX_MidEnd, magicBarY, gSaveContext.magicCapacity, 16, 1 << 10, 1 << 10);
|
||||
|
||||
gDPLoadTextureBlock(OVERLAY_DISP++, gMagicMeterEndTex, G_IM_FMT_IA, G_IM_SIZ_8b, 8, 16, 0,
|
||||
G_TX_MIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 3, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
|
||||
gSPWideTextureRectangle(OVERLAY_DISP++, ((rMagicBarX + gSaveContext.unk_13F4) + 8) << 2, magicBarY << 2,
|
||||
((rMagicBarX + gSaveContext.unk_13F4) + 16) << 2, (magicBarY + 16) << 2, G_TX_RENDERTILE,
|
||||
gSPWideTextureRectangle(OVERLAY_DISP++, ((rMagicBarX + gSaveContext.magicCapacity) + 8) << 2, magicBarY << 2,
|
||||
((rMagicBarX + gSaveContext.magicCapacity) + 16) << 2, (magicBarY + 16) << 2, G_TX_RENDERTILE,
|
||||
256, 0, 1 << 10, 1 << 10);
|
||||
|
||||
gDPPipeSync(OVERLAY_DISP++);
|
||||
@ -3677,7 +3677,7 @@ void Interface_DrawMagicBar(PlayState* play) {
|
||||
ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, PRIMITIVE);
|
||||
gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255);
|
||||
|
||||
if (gSaveContext.unk_13F0 == 4) {
|
||||
if (gSaveContext.magicState == 4) {
|
||||
// Yellow part of the bar indicating the amount of magic to be subtracted
|
||||
if (CVar_GetS32("gHudColors", 1) == 2) {
|
||||
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, CVar_GetRGB("gCCMagicUsePrim", magicbar_yellow).r, CVar_GetRGB("gCCMagicUsePrim", magicbar_yellow).g, CVar_GetRGB("gCCMagicUsePrim", magicbar_yellow).b, interfaceCtx->magicAlpha);
|
||||
@ -3702,7 +3702,7 @@ void Interface_DrawMagicBar(PlayState* play) {
|
||||
}
|
||||
|
||||
gSPWideTextureRectangle(OVERLAY_DISP++, rMagicFillX << 2, (magicBarY + 3) << 2,
|
||||
(rMagicFillX + gSaveContext.unk_13F8) << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE,
|
||||
(rMagicFillX + gSaveContext.magicTarget) << 2, (magicBarY + 10) << 2, G_TX_RENDERTILE,
|
||||
0, 0, 1 << 10, 1 << 10);
|
||||
} else {
|
||||
// Fill the whole bar with the normal magic color
|
||||
@ -4164,7 +4164,7 @@ void Interface_DrawItemButtons(PlayState* play) {
|
||||
if ((gSaveContext.unk_13EA == 1) || (gSaveContext.unk_13EA == 2) || (gSaveContext.unk_13EA == 5)) {
|
||||
temp = 0;
|
||||
} else if ((player->stateFlags1 & 0x00200000) || (func_8008F2F8(play) == 4) ||
|
||||
(player->stateFlags2 & 0x00040000)) {
|
||||
(player->stateFlags2 & PLAYER_STATE2_CRAWLING)) {
|
||||
temp = 70;
|
||||
} else {
|
||||
temp = interfaceCtx->healthAlpha;
|
||||
@ -4995,7 +4995,7 @@ void Interface_Draw(PlayState* play) {
|
||||
HealthMeter_Draw(play);
|
||||
}
|
||||
|
||||
func_80094520(play->state.gfxCtx);
|
||||
Gfx_SetupDL_39Overlay(play->state.gfxCtx);
|
||||
|
||||
if (fullUi) {
|
||||
// Rupee Icon
|
||||
@ -5194,7 +5194,7 @@ void Interface_Draw(PlayState* play) {
|
||||
Interface_DrawLineupTick(play);
|
||||
}
|
||||
|
||||
if (fullUi || gSaveContext.unk_13F0 > 0) {
|
||||
if (fullUi || gSaveContext.magicState > 0) {
|
||||
Interface_DrawMagicBar(play);
|
||||
}
|
||||
|
||||
@ -5204,7 +5204,7 @@ void Interface_Draw(PlayState* play) {
|
||||
func_8002C124(&play->actorCtx.targetCtx, play); // Draw Z-Target
|
||||
}
|
||||
|
||||
func_80094520(play->state.gfxCtx);
|
||||
Gfx_SetupDL_39Overlay(play->state.gfxCtx);
|
||||
|
||||
if (fullUi) {
|
||||
Interface_DrawItemButtons(play);
|
||||
@ -5431,7 +5431,7 @@ void Interface_Draw(PlayState* play) {
|
||||
}
|
||||
|
||||
// A Button
|
||||
func_80094A14(play->state.gfxCtx);
|
||||
Gfx_SetupDL_42Overlay(play->state.gfxCtx);
|
||||
const Color_RGB8 A_Button_Colors = {R_A_BTN_COLOR(0), R_A_BTN_COLOR(1), R_A_BTN_COLOR(2)};
|
||||
s16 X_Margins_BtnA;
|
||||
s16 Y_Margins_BtnA;
|
||||
@ -5513,7 +5513,7 @@ void Interface_Draw(PlayState* play) {
|
||||
if ((pauseCtx->state == 6) && (pauseCtx->unk_1E4 == 3)) {
|
||||
// Inventory Equip Effects
|
||||
gSPSegment(OVERLAY_DISP++, 0x08, pauseCtx->iconItemSegment);
|
||||
func_80094A14(play->state.gfxCtx);
|
||||
Gfx_SetupDL_42Overlay(play->state.gfxCtx);
|
||||
gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATERGBA_PRIM, G_CC_MODULATERGBA_PRIM);
|
||||
gSPMatrix(OVERLAY_DISP++, &gMtxClear, G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
|
||||
@ -5559,7 +5559,7 @@ void Interface_Draw(PlayState* play) {
|
||||
gSP1Quadrangle(OVERLAY_DISP++, 0, 2, 3, 1, 0);
|
||||
}
|
||||
|
||||
func_80094520(play->state.gfxCtx);
|
||||
Gfx_SetupDL_39Overlay(play->state.gfxCtx);
|
||||
|
||||
if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugState == 0)) {
|
||||
if (gSaveContext.minigameState != 1) {
|
||||
@ -6367,15 +6367,15 @@ void Interface_Update(PlayState* play) {
|
||||
(msgCtx->msgMode == MSGMODE_NONE) && (play->sceneLoadFlag == 0) &&
|
||||
(play->gameOverCtx.state == GAMEOVER_INACTIVE) && (play->transitionMode == 0) &&
|
||||
((play->csCtx.state == CS_STATE_IDLE) || !Player_InCsMode(play))) {
|
||||
if ((gSaveContext.magicAcquired != 0) && (gSaveContext.magicLevel == 0)) {
|
||||
gSaveContext.magicLevel = gSaveContext.doubleMagic + 1;
|
||||
gSaveContext.unk_13F0 = 8;
|
||||
if ((gSaveContext.isMagicAcquired != 0) && (gSaveContext.magicLevel == 0)) {
|
||||
gSaveContext.magicLevel = gSaveContext.isDoubleMagicAcquired + 1;
|
||||
gSaveContext.magicState = 8;
|
||||
osSyncPrintf(VT_FGCOL(YELLOW));
|
||||
osSyncPrintf("魔法スター─────ト!!!!!!!!!\n"); // "Magic Start!!!!!!!!!"
|
||||
osSyncPrintf("MAGIC_MAX=%d\n", gSaveContext.magicLevel);
|
||||
osSyncPrintf("MAGIC_NOW=%d\n", gSaveContext.magic);
|
||||
osSyncPrintf("Z_MAGIC_NOW_NOW=%d\n", gSaveContext.unk_13F6);
|
||||
osSyncPrintf("Z_MAGIC_NOW_MAX=%d\n", gSaveContext.unk_13F4);
|
||||
osSyncPrintf("Z_MAGIC_NOW_NOW=%d\n", gSaveContext.magicFillTarget);
|
||||
osSyncPrintf("Z_MAGIC_NOW_MAX=%d\n", gSaveContext.magicCapacity);
|
||||
osSyncPrintf(VT_RST);
|
||||
}
|
||||
|
||||
@ -6463,18 +6463,18 @@ void Interface_Update(PlayState* play) {
|
||||
if ((gSaveContext.dayTime >= 0x4555) && (gSaveContext.dayTime < 0xC001)) {
|
||||
gSaveContext.nextDayTime = 0;
|
||||
play->fadeTransition = 4;
|
||||
gSaveContext.nextTransition = 2;
|
||||
gSaveContext.nextTransitionType = 2;
|
||||
play->unk_11DE9 = 1;
|
||||
} else {
|
||||
gSaveContext.nextDayTime = 0x8001;
|
||||
play->fadeTransition = 5;
|
||||
gSaveContext.nextTransition = 3;
|
||||
gSaveContext.nextTransitionType = 3;
|
||||
play->unk_11DE9 = 1;
|
||||
}
|
||||
|
||||
if (play->sceneNum == SCENE_SPOT13) {
|
||||
play->fadeTransition = 14;
|
||||
gSaveContext.nextTransition = 14;
|
||||
gSaveContext.nextTransitionType = 14;
|
||||
}
|
||||
|
||||
gSaveContext.respawnFlag = -2;
|
||||
|
@ -214,7 +214,7 @@ void GivePlayerRandoRewardSongOfTime(PlayState* play, RandomizerCheck check) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
if (gSaveContext.entranceIndex == 0x050F && player != NULL && !Player_InBlockingCsMode(play, player) &&
|
||||
!Flags_GetTreasure(play, 0x1F) && gSaveContext.nextTransition == 0xFF && !gSaveContext.pendingIceTrapCount) {
|
||||
!Flags_GetTreasure(play, 0x1F) && gSaveContext.nextTransitionType == 0xFF && !gSaveContext.pendingIceTrapCount) {
|
||||
GetItemEntry getItemEntry = Randomizer_GetItemFromKnownCheck(check, RG_SONG_OF_TIME);
|
||||
GiveItemEntryWithoutActor(play, getItemEntry);
|
||||
player->pendingFlag.flagID = 0x1F;
|
||||
@ -343,27 +343,27 @@ void GivePlayerRandoRewardZeldaLightArrowsGift(PlayState* play, RandomizerCheck
|
||||
u8 meetsRequirements = 0;
|
||||
|
||||
switch (Randomizer_GetSettingValue(RSK_GANONS_BOSS_KEY)) {
|
||||
case 7:
|
||||
case RO_GANON_BOSS_KEY_LACS_MEDALLIONS:
|
||||
if (CheckMedallionCount() >= Randomizer_GetSettingValue(RSK_LACS_MEDALLION_COUNT)) {
|
||||
meetsRequirements = true;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
case RO_GANON_BOSS_KEY_LACS_STONES:
|
||||
if (CheckStoneCount() >= Randomizer_GetSettingValue(RSK_LACS_STONE_COUNT)) {
|
||||
meetsRequirements = true;
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
case RO_GANON_BOSS_KEY_LACS_REWARDS:
|
||||
if ((CheckMedallionCount() + CheckStoneCount()) >= Randomizer_GetSettingValue(RSK_LACS_REWARD_COUNT)) {
|
||||
meetsRequirements = true;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
case RO_GANON_BOSS_KEY_LACS_DUNGEONS:
|
||||
if (CheckDungeonCount() >= Randomizer_GetSettingValue(RSK_LACS_DUNGEON_COUNT)) {
|
||||
meetsRequirements = true;
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
case RO_GANON_BOSS_KEY_LACS_TOKENS:
|
||||
if (gSaveContext.inventory.gsTokens >= Randomizer_GetSettingValue(RSK_LACS_TOKEN_COUNT)) {
|
||||
meetsRequirements = true;
|
||||
}
|
||||
@ -556,7 +556,7 @@ void Play_Init(GameState* thisx) {
|
||||
|
||||
if (CVar_GetS32("gSceneTransitions", 255)!= 255){
|
||||
play->transitionMode = CVar_GetS32("gSceneTransitions", 0);
|
||||
gSaveContext.nextTransition = CVar_GetS32("gSceneTransitions", 0);
|
||||
gSaveContext.nextTransitionType = CVar_GetS32("gSceneTransitions", 0);
|
||||
play->fadeTransition = CVar_GetS32("gSceneTransitions", 0);
|
||||
}
|
||||
|
||||
@ -571,12 +571,12 @@ void Play_Init(GameState* thisx) {
|
||||
play->unk_11DE9 = 0;
|
||||
|
||||
if (gSaveContext.gameMode != 1) {
|
||||
if (gSaveContext.nextTransition == 0xFF) {
|
||||
if (gSaveContext.nextTransitionType == 0xFF) {
|
||||
play->fadeTransition =
|
||||
(gEntranceTable[((void)0, gSaveContext.entranceIndex) + tempSetupIndex].field >> 7) & 0x7F; // Fade In
|
||||
} else {
|
||||
play->fadeTransition = gSaveContext.nextTransition;
|
||||
gSaveContext.nextTransition = 0xFF;
|
||||
play->fadeTransition = gSaveContext.nextTransitionType;
|
||||
gSaveContext.nextTransitionType = 0xFF;
|
||||
}
|
||||
} else {
|
||||
play->fadeTransition = 6;
|
||||
@ -704,9 +704,9 @@ void Play_Update(PlayState* play) {
|
||||
if (CHECK_BTN_ALL(input[0].press.button, BTN_A)) {gSaveContext.sohStats.count[COUNT_BUTTON_PRESSES_A]++;}
|
||||
if (CHECK_BTN_ALL(input[0].press.button, BTN_B)) {gSaveContext.sohStats.count[COUNT_BUTTON_PRESSES_B]++;}
|
||||
if (CHECK_BTN_ALL(input[0].press.button, BTN_CUP)) {gSaveContext.sohStats.count[COUNT_BUTTON_PRESSES_CUP]++;}
|
||||
if (CHECK_BTN_ALL(input[0].press.button, BTN_CRIGHT)) {gSaveContext.sohStats.count[COUNT_BUTTON_PRESSES_CLEFT]++;}
|
||||
if (CHECK_BTN_ALL(input[0].press.button, BTN_CLEFT)) {gSaveContext.sohStats.count[COUNT_BUTTON_PRESSES_CDOWN]++;}
|
||||
if (CHECK_BTN_ALL(input[0].press.button, BTN_CDOWN)) {gSaveContext.sohStats.count[COUNT_BUTTON_PRESSES_CRIGHT]++;}
|
||||
if (CHECK_BTN_ALL(input[0].press.button, BTN_CRIGHT)) {gSaveContext.sohStats.count[COUNT_BUTTON_PRESSES_CRIGHT]++;}
|
||||
if (CHECK_BTN_ALL(input[0].press.button, BTN_CLEFT)) {gSaveContext.sohStats.count[COUNT_BUTTON_PRESSES_CLEFT]++;}
|
||||
if (CHECK_BTN_ALL(input[0].press.button, BTN_CDOWN)) {gSaveContext.sohStats.count[COUNT_BUTTON_PRESSES_CDOWN]++;}
|
||||
if (CHECK_BTN_ALL(input[0].press.button, BTN_DUP)) {gSaveContext.sohStats.count[COUNT_BUTTON_PRESSES_DUP]++;}
|
||||
if (CHECK_BTN_ALL(input[0].press.button, BTN_DRIGHT)) {gSaveContext.sohStats.count[COUNT_BUTTON_PRESSES_DRIGHT]++;}
|
||||
if (CHECK_BTN_ALL(input[0].press.button, BTN_DDOWN)) {gSaveContext.sohStats.count[COUNT_BUTTON_PRESSES_DDOWN]++;}
|
||||
@ -777,21 +777,21 @@ void Play_Update(PlayState* play) {
|
||||
play->transitionCtx.transitionType | 0x80);
|
||||
}
|
||||
|
||||
gSaveContext.unk_1419 = 14;
|
||||
gSaveContext.transWipeSpeed = 14;
|
||||
if ((play->transitionCtx.transitionType == 8) ||
|
||||
(play->transitionCtx.transitionType == 9)) {
|
||||
gSaveContext.unk_1419 = 28;
|
||||
gSaveContext.transWipeSpeed = 28;
|
||||
}
|
||||
|
||||
gSaveContext.fadeDuration = 60;
|
||||
gSaveContext.transFadeDuration = 60;
|
||||
if ((play->transitionCtx.transitionType == 4) ||
|
||||
(play->transitionCtx.transitionType == 5)) {
|
||||
gSaveContext.fadeDuration = 20;
|
||||
gSaveContext.transFadeDuration = 20;
|
||||
} else if ((play->transitionCtx.transitionType == 6) ||
|
||||
(play->transitionCtx.transitionType == 7)) {
|
||||
gSaveContext.fadeDuration = 150;
|
||||
gSaveContext.transFadeDuration = 150;
|
||||
} else if (play->transitionCtx.transitionType == 17) {
|
||||
gSaveContext.fadeDuration = 2;
|
||||
gSaveContext.transFadeDuration = 2;
|
||||
}
|
||||
|
||||
if ((play->transitionCtx.transitionType == 3) ||
|
||||
@ -954,7 +954,7 @@ void Play_Update(PlayState* play) {
|
||||
break;
|
||||
|
||||
case 11:
|
||||
if (gSaveContext.unk_1410 != 0) {
|
||||
if (gSaveContext.cutsceneTransitionControl != 0) {
|
||||
play->transitionMode = 3;
|
||||
}
|
||||
break;
|
||||
@ -1029,9 +1029,9 @@ void Play_Update(PlayState* play) {
|
||||
break;
|
||||
|
||||
case 17:
|
||||
if (gSaveContext.unk_1410 != 0) {
|
||||
play->envCtx.screenFillColor[3] = gSaveContext.unk_1410;
|
||||
if (gSaveContext.unk_1410 < 0x65) {
|
||||
if (gSaveContext.cutsceneTransitionControl != 0) {
|
||||
play->envCtx.screenFillColor[3] = gSaveContext.cutsceneTransitionControl;
|
||||
if (gSaveContext.cutsceneTransitionControl < 0x65) {
|
||||
gTrnsnUnkState = 0;
|
||||
R_UPDATE_RATE = 3;
|
||||
play->sceneLoadFlag = 0;
|
||||
@ -1369,7 +1369,7 @@ void Play_Draw(PlayState* play) {
|
||||
gSPSegment(POLY_XLU_DISP++, 0x02, play->sceneSegment);
|
||||
gSPSegment(OVERLAY_DISP++, 0x02, play->sceneSegment);
|
||||
|
||||
func_80095248(gfxCtx, 0, 0, 0);
|
||||
Gfx_SetupFrame(gfxCtx, 0, 0, 0);
|
||||
|
||||
if ((HREG(80) != 10) || (HREG(82) != 0)) {
|
||||
POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP);
|
||||
@ -2177,11 +2177,11 @@ void Play_PerformSave(PlayState* play) {
|
||||
gSaveContext.savedSceneNum = play->sceneNum;
|
||||
if (gSaveContext.temporaryWeapon) {
|
||||
gSaveContext.equips.buttonItems[0] = ITEM_NONE;
|
||||
GET_PLAYER(play)->currentSwordItem = ITEM_NONE;
|
||||
GET_PLAYER(play)->currentSwordItemId = ITEM_NONE;
|
||||
Inventory_ChangeEquipment(EQUIP_SWORD, PLAYER_SWORD_NONE);
|
||||
Save_SaveFile();
|
||||
gSaveContext.equips.buttonItems[0] = ITEM_SWORD_KOKIRI;
|
||||
GET_PLAYER(play)->currentSwordItem = ITEM_SWORD_KOKIRI;
|
||||
GET_PLAYER(play)->currentSwordItemId = ITEM_SWORD_KOKIRI;
|
||||
Inventory_ChangeEquipment(EQUIP_SWORD, PLAYER_SWORD_KOKIRI);
|
||||
} else {
|
||||
Save_SaveFile();
|
||||
|
@ -332,7 +332,7 @@ void Player_SetBootData(PlayState* play, Player* this) {
|
||||
s32 Player_InBlockingCsMode(PlayState* play, Player* this) {
|
||||
return (this->stateFlags1 & 0x20000080) || (this->csMode != 0) || (play->sceneLoadFlag == 0x14) ||
|
||||
(this->stateFlags1 & 1) || (this->stateFlags3 & 0x80) ||
|
||||
((gSaveContext.unk_13F0 != 0) && (Player_ActionToMagicSpell(this, this->itemActionParam) >= 0));
|
||||
((gSaveContext.magicState != 0) && (Player_ActionToMagicSpell(this, this->itemAction) >= 0));
|
||||
}
|
||||
|
||||
s32 Player_InCsMode(PlayState* play) {
|
||||
@ -361,8 +361,8 @@ s32 Player_ActionToModelGroup(Player* this, s32 actionParam) {
|
||||
|
||||
void Player_SetModelsForHoldingShield(Player* this) {
|
||||
if ((this->stateFlags1 & 0x400000) &&
|
||||
((this->itemActionParam < 0) || (this->itemActionParam == this->heldItemActionParam))) {
|
||||
if ((CVar_GetS32("gShieldTwoHanded", 0) && (this->heldItemActionParam != PLAYER_AP_STICK) ||
|
||||
((this->itemAction < 0) || (this->itemAction == this->heldItemAction))) {
|
||||
if ((CVar_GetS32("gShieldTwoHanded", 0) && (this->heldItemAction != PLAYER_IA_STICK) ||
|
||||
!Player_HoldsTwoHandedWeapon(this)) && !Player_IsChildWithHylianShield(this)) {
|
||||
this->rightHandType = 10;
|
||||
this->rightHandDLists = &sPlayerDListGroups[10][gSaveContext.linkAge];
|
||||
@ -373,7 +373,7 @@ void Player_SetModelsForHoldingShield(Player* this) {
|
||||
}
|
||||
this->sheathDLists = &sPlayerDListGroups[this->sheathType][gSaveContext.linkAge];
|
||||
this->modelAnimType = 2;
|
||||
this->itemActionParam = -1;
|
||||
this->itemAction = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -408,8 +408,8 @@ void Player_SetModelGroup(Player* this, s32 modelGroup) {
|
||||
}
|
||||
|
||||
void func_8008EC70(Player* this) {
|
||||
this->itemActionParam = this->heldItemActionParam;
|
||||
Player_SetModelGroup(this, Player_ActionToModelGroup(this, this->heldItemActionParam));
|
||||
this->itemAction = this->heldItemAction;
|
||||
Player_SetModelGroup(this, Player_ActionToModelGroup(this, this->heldItemAction));
|
||||
this->unk_6AD = 0;
|
||||
}
|
||||
|
||||
@ -418,8 +418,8 @@ void Player_SetEquipmentData(PlayState* play, Player* this) {
|
||||
this->currentShield = CUR_EQUIP_VALUE(EQUIP_SHIELD);
|
||||
this->currentTunic = CUR_EQUIP_VALUE(EQUIP_TUNIC) - 1;
|
||||
this->currentBoots = CUR_EQUIP_VALUE(EQUIP_BOOTS) - 1;
|
||||
this->currentSwordItem = B_BTN_ITEM;
|
||||
Player_SetModelGroup(this, Player_ActionToModelGroup(this, this->heldItemActionParam));
|
||||
this->currentSwordItemId = B_BTN_ITEM;
|
||||
Player_SetModelGroup(this, Player_ActionToModelGroup(this, this->heldItemAction));
|
||||
Player_SetBootData(play, this);
|
||||
}
|
||||
}
|
||||
@ -429,10 +429,10 @@ void Player_UpdateBottleHeld(PlayState* play, Player* this, s32 item, s32 action
|
||||
|
||||
if (item != ITEM_BOTTLE) {
|
||||
this->heldItemId = item;
|
||||
this->heldItemActionParam = actionParam;
|
||||
this->heldItemAction = actionParam;
|
||||
}
|
||||
|
||||
this->itemActionParam = actionParam;
|
||||
this->itemAction = actionParam;
|
||||
}
|
||||
|
||||
void func_8008EDF0(Player* this) {
|
||||
@ -478,8 +478,8 @@ s32 Player_IsBurningStickInRange(PlayState* play, Vec3f* pos, f32 xzRange, f32 y
|
||||
Vec3f diff;
|
||||
s32 pad;
|
||||
|
||||
if ((this->heldItemActionParam == PLAYER_AP_STICK) && (this->unk_860 != 0)) {
|
||||
Math_Vec3f_Diff(&this->swordInfo[0].tip, pos, &diff);
|
||||
if ((this->heldItemAction == PLAYER_IA_STICK) && (this->unk_860 != 0)) {
|
||||
Math_Vec3f_Diff(&this->meleeWeaponInfo[0].tip, pos, &diff);
|
||||
return ((SQ(diff.x) + SQ(diff.z)) <= SQ(xzRange)) && (0.0f <= diff.y) && (diff.y <= yRange);
|
||||
} else {
|
||||
return false;
|
||||
@ -525,7 +525,7 @@ s32 Player_HasMirrorShieldSetToDraw(PlayState* play) {
|
||||
}
|
||||
|
||||
s32 Player_ActionToMagicSpell(Player* this, s32 actionParam) {
|
||||
s32 magicSpell = actionParam - PLAYER_AP_MAGIC_SPELL_15;
|
||||
s32 magicSpell = actionParam - PLAYER_IA_MAGIC_SPELL_15;
|
||||
|
||||
if ((magicSpell >= 0) && (magicSpell < 6)) {
|
||||
return magicSpell;
|
||||
@ -535,7 +535,7 @@ s32 Player_ActionToMagicSpell(Player* this, s32 actionParam) {
|
||||
}
|
||||
|
||||
s32 Player_HoldsHookshot(Player* this) {
|
||||
return (this->heldItemActionParam == PLAYER_AP_HOOKSHOT) || (this->heldItemActionParam == PLAYER_AP_LONGSHOT);
|
||||
return (this->heldItemAction == PLAYER_IA_HOOKSHOT) || (this->heldItemAction == PLAYER_IA_LONGSHOT);
|
||||
}
|
||||
|
||||
s32 func_8008F128(Player* this) {
|
||||
@ -543,7 +543,7 @@ s32 func_8008F128(Player* this) {
|
||||
}
|
||||
|
||||
s32 Player_ActionToSword(s32 actionParam) {
|
||||
s32 sword = actionParam - PLAYER_AP_FISHING_POLE;
|
||||
s32 sword = actionParam - PLAYER_IA_FISHING_POLE;
|
||||
|
||||
if ((sword > 0) && (sword < 6)) {
|
||||
return sword;
|
||||
@ -553,11 +553,11 @@ s32 Player_ActionToSword(s32 actionParam) {
|
||||
}
|
||||
|
||||
s32 Player_GetSwordHeld(Player* this) {
|
||||
return Player_ActionToSword(this->heldItemActionParam);
|
||||
return Player_ActionToSword(this->heldItemAction);
|
||||
}
|
||||
|
||||
s32 Player_HoldsTwoHandedWeapon(Player* this) {
|
||||
if ((this->heldItemActionParam >= PLAYER_AP_SWORD_BGS) && (this->heldItemActionParam <= PLAYER_AP_HAMMER)) {
|
||||
if ((this->heldItemAction >= PLAYER_IA_SWORD_BGS) && (this->heldItemAction <= PLAYER_IA_HAMMER)) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
@ -565,11 +565,11 @@ s32 Player_HoldsTwoHandedWeapon(Player* this) {
|
||||
}
|
||||
|
||||
s32 Player_HoldsBrokenKnife(Player* this) {
|
||||
return (this->heldItemActionParam == PLAYER_AP_SWORD_BGS) && (gSaveContext.swordHealth <= 0.0f);
|
||||
return (this->heldItemAction == PLAYER_IA_SWORD_BGS) && (gSaveContext.swordHealth <= 0.0f);
|
||||
}
|
||||
|
||||
s32 Player_ActionToBottle(Player* this, s32 actionParam) {
|
||||
s32 bottle = actionParam - PLAYER_AP_BOTTLE;
|
||||
s32 bottle = actionParam - PLAYER_IA_BOTTLE;
|
||||
|
||||
if ((bottle >= 0) && (bottle < 13)) {
|
||||
return bottle;
|
||||
@ -579,11 +579,11 @@ s32 Player_ActionToBottle(Player* this, s32 actionParam) {
|
||||
}
|
||||
|
||||
s32 Player_GetBottleHeld(Player* this) {
|
||||
return Player_ActionToBottle(this, this->heldItemActionParam);
|
||||
return Player_ActionToBottle(this, this->heldItemAction);
|
||||
}
|
||||
|
||||
s32 Player_ActionToExplosive(Player* this, s32 actionParam) {
|
||||
s32 explosive = actionParam - PLAYER_AP_BOMB;
|
||||
s32 explosive = actionParam - PLAYER_IA_BOMB;
|
||||
|
||||
if ((explosive >= 0) && (explosive < 2)) {
|
||||
return explosive;
|
||||
@ -593,14 +593,14 @@ s32 Player_ActionToExplosive(Player* this, s32 actionParam) {
|
||||
}
|
||||
|
||||
s32 Player_GetExplosiveHeld(Player* this) {
|
||||
return Player_ActionToExplosive(this, this->heldItemActionParam);
|
||||
return Player_ActionToExplosive(this, this->heldItemAction);
|
||||
}
|
||||
|
||||
s32 func_8008F2BC(Player* this, s32 actionParam) {
|
||||
s32 sword = 0;
|
||||
|
||||
if (actionParam != PLAYER_AP_LAST_USED) {
|
||||
sword = actionParam - PLAYER_AP_SWORD_MASTER;
|
||||
if (actionParam != PLAYER_IA_LAST_USED) {
|
||||
sword = actionParam - PLAYER_IA_SWORD_MASTER;
|
||||
if ((sword < 0) || (sword >= 3)) {
|
||||
goto return_neg;
|
||||
}
|
||||
@ -857,7 +857,7 @@ void func_8008F87C(PlayState* play, Player* this, SkelAnime* skelAnime, Vec3f* p
|
||||
s32 temp3;
|
||||
|
||||
if ((this->actor.scale.y >= 0.0f) && !(this->stateFlags1 & 0x80) &&
|
||||
(Player_ActionToMagicSpell(this, this->itemActionParam) < 0)) {
|
||||
(Player_ActionToMagicSpell(this, this->itemAction) < 0)) {
|
||||
s32 pad;
|
||||
|
||||
sp7C = D_80126058[gSaveContext.linkAge];
|
||||
@ -931,7 +931,7 @@ s32 func_8008FCC8(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s
|
||||
if (limbIndex == PLAYER_LIMB_ROOT) {
|
||||
D_80160014 = this->leftHandType;
|
||||
D_80160018 = this->rightHandType;
|
||||
D_80160000 = &this->swordInfo[2].base;
|
||||
D_80160000 = &this->meleeWeaponInfo[2].base;
|
||||
|
||||
if (!LINK_IS_ADULT) {
|
||||
if (!(this->skelAnime.moveFlags & 4) || (this->skelAnime.moveFlags & 1)) {
|
||||
@ -1157,15 +1157,15 @@ void func_800906D4(PlayState* play, Player* this, Vec3f* newTipPos) {
|
||||
Matrix_MultVec3f(&D_801260A4[1], &newBasePos[1]);
|
||||
Matrix_MultVec3f(&D_801260A4[2], &newBasePos[2]);
|
||||
|
||||
if (func_80090480(play, NULL, &this->swordInfo[0], &newTipPos[0], &newBasePos[0]) &&
|
||||
if (func_80090480(play, NULL, &this->meleeWeaponInfo[0], &newTipPos[0], &newBasePos[0]) &&
|
||||
!(this->stateFlags1 & 0x400000)) {
|
||||
EffectBlure_AddVertex(Effect_GetByIndex(this->swordEffectIndex), &this->swordInfo[0].tip,
|
||||
&this->swordInfo[0].base);
|
||||
EffectBlure_AddVertex(Effect_GetByIndex(this->meleeWeaponEffectIndex), &this->meleeWeaponInfo[0].tip,
|
||||
&this->meleeWeaponInfo[0].base);
|
||||
}
|
||||
|
||||
if ((this->swordState > 0) && ((this->swordAnimation < 0x18) || (this->stateFlags2 & 0x20000))) {
|
||||
func_80090480(play, &this->swordQuads[0], &this->swordInfo[1], &newTipPos[1], &newBasePos[1]);
|
||||
func_80090480(play, &this->swordQuads[1], &this->swordInfo[2], &newTipPos[2], &newBasePos[2]);
|
||||
if ((this->swordState > 0) && ((this->meleeWeaponAnimation < 0x18) || (this->stateFlags2 & 0x20000))) {
|
||||
func_80090480(play, &this->meleeWeaponQuads[0], &this->meleeWeaponInfo[1], &newTipPos[1], &newBasePos[1]);
|
||||
func_80090480(play, &this->meleeWeaponQuads[1], &this->meleeWeaponInfo[2], &newTipPos[2], &newBasePos[2]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1240,7 +1240,7 @@ void Player_DrawHookshotReticle(PlayState* play, Player* this, f32 arg2) {
|
||||
if (BgCheck_AnyLineTest3(&play->colCtx, &sp8C, &sp80, &sp74, &sp9C, 1, 1, 1, 1, &bgId)) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
WORLD_OVERLAY_DISP = Gfx_CallSetupDL(WORLD_OVERLAY_DISP, 0x07);
|
||||
WORLD_OVERLAY_DISP = Gfx_SetupDL(WORLD_OVERLAY_DISP, 0x07);
|
||||
|
||||
SkinMatrix_Vec3fMtxFMultXYZW(&play->viewProjectionMtxF, &sp74, &sp68, &sp64);
|
||||
|
||||
@ -1321,7 +1321,7 @@ void func_80090D20(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void
|
||||
|
||||
Math_Vec3f_Copy(&this->leftHandPos, D_80160000);
|
||||
|
||||
if (this->itemActionParam == PLAYER_AP_STICK) {
|
||||
if (this->itemAction == PLAYER_IA_STICK) {
|
||||
Vec3f sp124[3];
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
@ -1330,10 +1330,10 @@ void func_80090D20(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void
|
||||
D_80126080.x = this->unk_85C * 5000.0f;
|
||||
func_80090A28(this, sp124);
|
||||
if (this->swordState != 0) {
|
||||
EffectBlure_ChangeType(Effect_GetByIndex(this->swordEffectIndex), 7); // default sword type
|
||||
EffectBlure_ChangeType(Effect_GetByIndex(this->meleeWeaponEffectIndex), 7); // default sword type
|
||||
func_800906D4(play, this, sp124);
|
||||
} else {
|
||||
Math_Vec3f_Copy(&this->swordInfo[0].tip, &sp124[0]);
|
||||
Math_Vec3f_Copy(&this->meleeWeaponInfo[0].tip, &sp124[0]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1354,15 +1354,15 @@ void func_80090D20(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void
|
||||
} else {
|
||||
D_80126080.x = sSwordLengths[Player_GetSwordHeld(this)];
|
||||
if (CVar_GetS32("gSeperateSwords", 0) != 0)
|
||||
EffectBlure_ChangeType(Effect_GetByIndex(this->swordEffectIndex), sSwordTypes[Player_GetSwordHeld(this)]);
|
||||
EffectBlure_ChangeType(Effect_GetByIndex(this->meleeWeaponEffectIndex), sSwordTypes[Player_GetSwordHeld(this)]);
|
||||
else
|
||||
EffectBlure_ChangeType(Effect_GetByIndex(this->swordEffectIndex),1); //default sword type
|
||||
EffectBlure_ChangeType(Effect_GetByIndex(this->meleeWeaponEffectIndex),1); //default sword type
|
||||
}
|
||||
|
||||
func_80090A28(this, spE4);
|
||||
func_800906D4(play, this, spE4);
|
||||
} else if ((*dList != NULL) && (this->leftHandType == 7)) {
|
||||
Color_RGB8* bottleColor = &sBottleColors[Player_ActionToBottle(this, this->itemActionParam)];
|
||||
Color_RGB8* bottleColor = &sBottleColors[Player_ActionToBottle(this, this->itemAction)];
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
@ -1451,8 +1451,8 @@ void func_80090D20(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void
|
||||
}
|
||||
|
||||
if (this->actor.scale.y >= 0.0f) {
|
||||
if ((this->heldItemActionParam == PLAYER_AP_HOOKSHOT) ||
|
||||
(this->heldItemActionParam == PLAYER_AP_LONGSHOT)) {
|
||||
if ((this->heldItemAction == PLAYER_IA_HOOKSHOT) ||
|
||||
(this->heldItemAction == PLAYER_IA_LONGSHOT)) {
|
||||
Matrix_MultVec3f(&D_80126184, &this->unk_3C8);
|
||||
|
||||
if (heldActor != NULL) {
|
||||
@ -1468,7 +1468,7 @@ void func_80090D20(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void
|
||||
if (func_8002DD78(this) != 0) {
|
||||
Matrix_Translate(500.0f, 300.0f, 0.0f, MTXMODE_APPLY);
|
||||
Player_DrawHookshotReticle(
|
||||
play, this, (this->heldItemActionParam == PLAYER_AP_HOOKSHOT) ? 38600.0f : 77600.0f);
|
||||
play, this, (this->heldItemAction == PLAYER_IA_HOOKSHOT) ? 38600.0f : 77600.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -33,8 +33,8 @@ void PreNMI_Draw(PreNMIContext* this) {
|
||||
OPEN_DISPS(gfxCtx);
|
||||
|
||||
gSPSegment(POLY_OPA_DISP++, 0x00, NULL);
|
||||
func_80095248(gfxCtx, 0, 0, 0);
|
||||
func_800940B0(gfxCtx);
|
||||
Gfx_SetupFrame(gfxCtx, 0, 0, 0);
|
||||
Gfx_SetupDL_36Opa(gfxCtx);
|
||||
gDPSetFillColor(POLY_OPA_DISP++, (GPACK_RGBA5551(255, 255, 255, 1) << 16) | GPACK_RGBA5551(255, 255, 255, 1));
|
||||
gDPFillRectangle(POLY_OPA_DISP++, 0, this->timer + 100, SCREEN_WIDTH - 1, this->timer + 100);
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -49,7 +49,7 @@ void func_80095AB4(PlayState* play, Room* room, u32 flags) {
|
||||
if (flags & 2) {
|
||||
func_8003435C(&D_801270A0, play);
|
||||
gSPSegment(POLY_XLU_DISP++, 0x03, room->segment);
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_XLU_DISP++, &gMtxClear, G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
}
|
||||
|
||||
@ -109,7 +109,7 @@ void func_80095D04(PlayState* play, Room* room, u32 flags) {
|
||||
if (flags & 2) {
|
||||
func_8003435C(&D_801270A0, play);
|
||||
//gSPSegment(POLY_XLU_DISP++, 0x03, room->segment);
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_XLU_DISP++, &gMtxClear, G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
}
|
||||
|
||||
@ -356,7 +356,7 @@ void func_80096680(PlayState* play, Room* room, u32 flags) {
|
||||
gSPSegment(POLY_OPA_DISP++, 0x03, room->segment);
|
||||
|
||||
if (sp94) {
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, &gMtxClear, G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, polygonDlist->opa);
|
||||
}
|
||||
@ -383,7 +383,7 @@ void func_80096680(PlayState* play, Room* room, u32 flags) {
|
||||
|
||||
if (sp90) {
|
||||
gSPSegment(POLY_XLU_DISP++, 0x03, room->segment);
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_XLU_DISP++, &gMtxClear, G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_XLU_DISP++, polygonDlist->xlu);
|
||||
}
|
||||
@ -458,7 +458,7 @@ void func_80096B6C(PlayState* play, Room* room, u32 flags) {
|
||||
gSPSegment(POLY_OPA_DISP++, 0x03, room->segment);
|
||||
|
||||
if (sp90) {
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, &gMtxClear, G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, polygonDlist->opa);
|
||||
}
|
||||
@ -484,7 +484,7 @@ void func_80096B6C(PlayState* play, Room* room, u32 flags) {
|
||||
|
||||
if (sp8C) {
|
||||
gSPSegment(POLY_XLU_DISP++, 0x03, room->segment);
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_XLU_DISP++, &gMtxClear, G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_XLU_DISP++, polygonDlist->xlu);
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ void Sample_Draw(SampleContext* this) {
|
||||
gSPSegment(POLY_OPA_DISP++, 0x00, NULL);
|
||||
gSPSegment(POLY_OPA_DISP++, 0x01, this->staticSegment);
|
||||
|
||||
func_80095248(gfxCtx, 0, 0, 0);
|
||||
Gfx_SetupFrame(gfxCtx, 0, 0, 0);
|
||||
|
||||
view->flags = 1 | 2 | 4;
|
||||
func_800AAA50(view, 15);
|
||||
@ -29,7 +29,7 @@ void Sample_Draw(SampleContext* this) {
|
||||
}
|
||||
|
||||
POLY_OPA_DISP = Gfx_SetFog2(POLY_OPA_DISP, 255, 255, 255, 0, 0, 0);
|
||||
func_80093D18(gfxCtx);
|
||||
Gfx_SetupDL_25Opa(gfxCtx);
|
||||
|
||||
gDPSetCycleType(POLY_OPA_DISP++, G_CYC_1CYCLE);
|
||||
gDPSetRenderMode(POLY_OPA_DISP++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
|
@ -97,7 +97,7 @@ void GiveLinkDekuNuts(int howManyNuts) {
|
||||
}
|
||||
|
||||
void GiveLinksPocketItem() {
|
||||
if (Randomizer_GetSettingValue(RSK_LINKS_POCKET) < 3) {
|
||||
if (Randomizer_GetSettingValue(RSK_LINKS_POCKET) != RO_LINKS_POCKET_NOTHING) {
|
||||
GetItemEntry getItemEntry = Randomizer_GetItemFromKnownCheck(RC_LINKS_POCKET, RG_NONE);
|
||||
|
||||
if (getItemEntry.modIndex == MOD_NONE) {
|
||||
@ -217,14 +217,14 @@ void Sram_OpenSave() {
|
||||
gSaveContext.health = 0x30;
|
||||
}
|
||||
|
||||
if (gSaveContext.scarecrowCustomSongSet) {
|
||||
if (gSaveContext.scarecrowLongSongSet) {
|
||||
osSyncPrintf(VT_FGCOL(BLUE));
|
||||
osSyncPrintf("\n====================================================================\n");
|
||||
|
||||
memcpy(gScarecrowCustomSongPtr, gSaveContext.scarecrowCustomSong, sizeof(gSaveContext.scarecrowCustomSong));
|
||||
memcpy(gScarecrowCustomSongPtr, gSaveContext.scarecrowLongSong, sizeof(gSaveContext.scarecrowLongSong));
|
||||
|
||||
ptr = (u8*)gScarecrowCustomSongPtr;
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.scarecrowCustomSong); i++, ptr++) {
|
||||
for (i = 0; i < ARRAY_COUNT(gSaveContext.scarecrowLongSong); i++, ptr++) {
|
||||
osSyncPrintf("%d, ", *ptr);
|
||||
}
|
||||
|
||||
@ -372,15 +372,15 @@ void Sram_InitSave(FileChooseContext* fileChooseCtx) {
|
||||
|
||||
int openForest = Randomizer_GetSettingValue(RSK_FOREST);
|
||||
switch (openForest) {
|
||||
case 0: // closed
|
||||
case RO_FOREST_CLOSED:
|
||||
break;
|
||||
case 1: // open
|
||||
case RO_FOREST_CLOSED_DEKU:
|
||||
Flags_SetEventChkInf(7);
|
||||
break;
|
||||
case RO_FOREST_OPEN:
|
||||
Flags_SetEventChkInf(7);
|
||||
gSaveContext.eventChkInf[0] |= 0x10;
|
||||
break;
|
||||
case 2: // closed deku
|
||||
Flags_SetEventChkInf(7);
|
||||
break;
|
||||
}
|
||||
|
||||
int startingAge = Randomizer_GetSettingValue(RSK_STARTING_AGE);
|
||||
@ -399,16 +399,13 @@ void Sram_InitSave(FileChooseContext* fileChooseCtx) {
|
||||
|
||||
int doorOfTime = Randomizer_GetSettingValue(RSK_DOOR_OF_TIME);
|
||||
switch (doorOfTime) {
|
||||
case 0: // open
|
||||
case RO_DOOROFTIME_OPEN:
|
||||
gSaveContext.eventChkInf[4] |= 0x800;
|
||||
break;
|
||||
}
|
||||
|
||||
int kakGate = Randomizer_GetSettingValue(RSK_KAK_GATE);
|
||||
switch (kakGate) {
|
||||
case 1: // open
|
||||
gSaveContext.infTable[7] |= 0x40;
|
||||
break;
|
||||
if (Randomizer_GetSettingValue(RSK_KAK_GATE) == RO_KAK_GATE_OPEN) {
|
||||
gSaveContext.infTable[7] |= 0x40;
|
||||
}
|
||||
|
||||
if(Randomizer_GetSettingValue(RSK_STARTING_KOKIRI_SWORD)) Item_Give(NULL, ITEM_SWORD_KOKIRI);
|
||||
@ -476,8 +473,7 @@ void Sram_InitSave(FileChooseContext* fileChooseCtx) {
|
||||
GiveLinkRupees(9001);
|
||||
}
|
||||
|
||||
// "Start with" == 0 for Keysanity
|
||||
if(Randomizer_GetSettingValue(RSK_KEYSANITY) == 0) {
|
||||
if(Randomizer_GetSettingValue(RSK_KEYSANITY) == RO_DUNGEON_ITEM_LOC_STARTWITH) {
|
||||
// TODO: If master quest there are different key counts
|
||||
gSaveContext.inventory.dungeonKeys[SCENE_BMORI1] = FOREST_TEMPLE_SMALL_KEY_MAX; // Forest
|
||||
gSaveContext.sohStats.dungeonKeys[SCENE_BMORI1] = FOREST_TEMPLE_SMALL_KEY_MAX; // Forest
|
||||
@ -506,8 +502,7 @@ void Sram_InitSave(FileChooseContext* fileChooseCtx) {
|
||||
gSaveContext.inventory.dungeonItems[SCENE_HAKADAN] |= 1; // Shadow
|
||||
}
|
||||
|
||||
// "Start with" == 2 for Ganon's Boss Key
|
||||
if(Randomizer_GetSettingValue(RSK_GANONS_BOSS_KEY) == 2) {
|
||||
if(Randomizer_GetSettingValue(RSK_GANONS_BOSS_KEY) == RO_GANON_BOSS_KEY_STARTWITH) {
|
||||
gSaveContext.inventory.dungeonItems[SCENE_GANON] |= 1;
|
||||
}
|
||||
|
||||
@ -539,8 +534,8 @@ void Sram_InitSave(FileChooseContext* fileChooseCtx) {
|
||||
// skip verbose lake owl, skip to "i'm on my way back to the castle"
|
||||
gSaveContext.infTable[25] |= 0x20;
|
||||
|
||||
// fast gerudo fortress
|
||||
if (Randomizer_GetSettingValue(RSK_GERUDO_FORTRESS) == 1 || Randomizer_GetSettingValue(RSK_GERUDO_FORTRESS) == 2) {
|
||||
if (Randomizer_GetSettingValue(RSK_GERUDO_FORTRESS) == RO_GF_FAST ||
|
||||
Randomizer_GetSettingValue(RSK_GERUDO_FORTRESS) == RO_GF_OPEN) {
|
||||
gSaveContext.eventChkInf[9] |= 2;
|
||||
gSaveContext.eventChkInf[9] |= 4;
|
||||
gSaveContext.eventChkInf[9] |= 8;
|
||||
@ -558,8 +553,7 @@ void Sram_InitSave(FileChooseContext* fileChooseCtx) {
|
||||
gSaveContext.sceneFlags[12].collect |= (1 << 0x0F);
|
||||
}
|
||||
|
||||
// open gerudo fortress
|
||||
if (Randomizer_GetSettingValue(RSK_GERUDO_FORTRESS) == 2) {
|
||||
if (Randomizer_GetSettingValue(RSK_GERUDO_FORTRESS) == RO_GF_OPEN) {
|
||||
gSaveContext.eventChkInf[9] |= 1;
|
||||
gSaveContext.sceneFlags[12].swch |= (1 << 0x01);
|
||||
gSaveContext.sceneFlags[12].swch |= (1 << 0x05);
|
||||
|
@ -604,7 +604,7 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
{
|
||||
case SKYBOX_NORMAL_SKY:
|
||||
phi_v1 = 0;
|
||||
if (gSaveContext.unk_13C3 != 0 && gSaveContext.sceneSetupIndex < 4 && gWeatherMode > 0 &&
|
||||
if (gSaveContext.retainWeatherMode != 0 && gSaveContext.sceneSetupIndex < 4 && gWeatherMode > 0 &&
|
||||
gWeatherMode < 6) {
|
||||
phi_v1 = 1;
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ void SkyboxDraw_Draw(SkyboxContext* skyboxCtx, GraphicsContext* gfxCtx, s16 skyb
|
||||
OPEN_DISPS(gfxCtx);
|
||||
FrameInterpolation_RecordOpenChild(NULL, FrameInterpolation_GetCameraEpoch());
|
||||
|
||||
func_800945A0(gfxCtx);
|
||||
Gfx_SetupDL_40Opa(gfxCtx);
|
||||
|
||||
//gsSPShaderTest(POLY_OPA_DISP++);
|
||||
|
||||
|
@ -85,7 +85,7 @@ void ArmsHook_Wait(ArmsHook* this, PlayState* play) {
|
||||
if (this->actor.parent == NULL) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
// get correct timer length for hookshot or longshot
|
||||
s32 length = (player->heldItemActionParam == PLAYER_AP_HOOKSHOT) ? 13 : 26;
|
||||
s32 length = (player->heldItemAction == PLAYER_IA_HOOKSHOT) ? 13 : 26;
|
||||
|
||||
ArmsHook_SetupAction(this, ArmsHook_Shoot);
|
||||
func_8002D9A4(&this->actor, 20.0f);
|
||||
@ -121,7 +121,7 @@ s32 ArmsHook_CheckForCancel(ArmsHook* this) {
|
||||
Player* player = (Player*)this->actor.parent;
|
||||
|
||||
if (Player_HoldsHookshot(player)) {
|
||||
if ((player->itemActionParam != player->heldItemActionParam) || (player->actor.flags & ACTOR_FLAG_8) ||
|
||||
if ((player->itemAction != player->heldItemAction) || (player->actor.flags & ACTOR_FLAG_8) ||
|
||||
((player->stateFlags1 & 0x4000080))) {
|
||||
this->timer = 0;
|
||||
ArmsHook_DetachHookFromActor(this);
|
||||
@ -320,7 +320,7 @@ void ArmsHook_Draw(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
func_80090480(play, &this->collider, &this->hookInfo, &sp6C, &sp60);
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_OPA_DISP++, gLinkAdultHookshotTipDL);
|
||||
|
@ -215,7 +215,7 @@ void ArrowFire_Draw(Actor* thisx, PlayState* play2) {
|
||||
|
||||
// Draw red effect over the screen when arrow hits
|
||||
if (this->unk_15C > 0) {
|
||||
POLY_XLU_DISP = func_800937C0(POLY_XLU_DISP);
|
||||
POLY_XLU_DISP = Gfx_SetupDL_57(POLY_XLU_DISP);
|
||||
if (CVar_GetS32("gUseArrowsCol", 0)) {
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0,
|
||||
(s32)(Arrow_env.r * this->unk_15C) & 0xFF,
|
||||
@ -232,7 +232,7 @@ void ArrowFire_Draw(Actor* thisx, PlayState* play2) {
|
||||
}
|
||||
|
||||
// Draw fire on the arrow
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
if (CVar_GetS32("gUseArrowsCol", 0)) {
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0x80, 0x80, Arrow_col.r, Arrow_col.g, Arrow_col.b, this->alpha);
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, Arrow_env.r, Arrow_env.g, Arrow_env.b, 128);
|
||||
|
@ -213,7 +213,7 @@ void ArrowIce_Draw(Actor* thisx, PlayState* play) {
|
||||
|
||||
// Draw blue effect over the screen when arrow hits
|
||||
if (this->unk_164 > 0) {
|
||||
POLY_XLU_DISP = func_800937C0(POLY_XLU_DISP);
|
||||
POLY_XLU_DISP = Gfx_SetupDL_57(POLY_XLU_DISP);
|
||||
if (CVar_GetS32("gUseArrowsCol", 0)) {
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0,
|
||||
(s32)(Arrow_env.r * this->unk_164) & 0xFF,
|
||||
@ -230,7 +230,7 @@ void ArrowIce_Draw(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
// Draw ice on the arrow
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
if (CVar_GetS32("gUseArrowsCol", 0)) {
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0x80, 0x80, Arrow_col.r, Arrow_col.g, Arrow_col.b, this->alpha);
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, Arrow_env.r, Arrow_env.g, Arrow_env.b, 128);
|
||||
|
@ -211,7 +211,7 @@ void ArrowLight_Draw(Actor* thisx, PlayState* play) {
|
||||
|
||||
// Draw yellow effect over the screen when arrow hits
|
||||
if (this->unk_164 > 0) {
|
||||
POLY_XLU_DISP = func_800937C0(POLY_XLU_DISP);
|
||||
POLY_XLU_DISP = Gfx_SetupDL_57(POLY_XLU_DISP);
|
||||
if (CVar_GetS32("gUseArrowsCol", 0)) {
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0,
|
||||
(s32)(Arrow_env.r * this->unk_164) & 0xFF,
|
||||
@ -228,7 +228,7 @@ void ArrowLight_Draw(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
// Draw light on the arrow
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
if (CVar_GetS32("gUseArrowsCol", 0)) {
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0x80, 0x80, Arrow_col.r, Arrow_col.g, Arrow_col.b, this->alpha);
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, Arrow_env.r, Arrow_env.g, Arrow_env.b, 128);
|
||||
|
@ -203,7 +203,7 @@ void BgBowlWall_Draw(Actor* thisx, PlayState* play2) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPSegment(POLY_OPA_DISP++, 0x8,
|
||||
Gfx_TexScroll(play->state.gfxCtx, 0, -2 * (frames = play->state.frames), 16, 16));
|
||||
gDPPipeSync(POLY_OPA_DISP++);
|
||||
|
@ -343,7 +343,7 @@ void BgBreakwall_Draw(Actor* thisx, PlayState* play) {
|
||||
if (this->bombableWallDList != NULL) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_OPA_DISP++, this->bombableWallDList);
|
||||
|
@ -312,7 +312,7 @@ void BgDodoago_Draw(Actor* thisx, PlayState* play) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
if (Flags_GetEventChkInf(0xB0)) {
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_OPA_DISP++, gDodongoLowerJawDL);
|
||||
|
@ -209,12 +209,12 @@ void BgDyYoseizo_CheckMagicAcquired(BgDyYoseizo* this, PlayState* play) {
|
||||
}
|
||||
|
||||
if (play->sceneNum == SCENE_DAIYOUSEI_IZUMI) {
|
||||
if (!gSaveContext.magicAcquired && (this->fountainType != FAIRY_UPGRADE_MAGIC)) {
|
||||
if (!gSaveContext.isMagicAcquired && (this->fountainType != FAIRY_UPGRADE_MAGIC)) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if (!gSaveContext.magicAcquired) {
|
||||
if (!gSaveContext.isMagicAcquired) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
@ -253,7 +253,7 @@ void BgDyYoseizo_ChooseType(BgDyYoseizo* this, PlayState* play) {
|
||||
} else {
|
||||
switch (this->fountainType) {
|
||||
case FAIRY_UPGRADE_MAGIC:
|
||||
if (!gSaveContext.magicAcquired || BREG(2)) {
|
||||
if (!gSaveContext.isMagicAcquired || BREG(2)) {
|
||||
// "Spin Attack speed UP"
|
||||
osSyncPrintf(VT_FGCOL(GREEN) " ☆☆☆☆☆ 回転切り速度UP ☆☆☆☆☆ \n" VT_RST);
|
||||
this->givingSpell = true;
|
||||
@ -261,7 +261,7 @@ void BgDyYoseizo_ChooseType(BgDyYoseizo* this, PlayState* play) {
|
||||
}
|
||||
break;
|
||||
case FAIRY_UPGRADE_DOUBLE_MAGIC:
|
||||
if (!gSaveContext.doubleMagic) {
|
||||
if (!gSaveContext.isDoubleMagicAcquired) {
|
||||
// "Magic Meter doubled"
|
||||
osSyncPrintf(VT_FGCOL(YELLOW) " ☆☆☆☆☆ 魔法ゲージメーター倍増 ☆☆☆☆☆ \n" VT_RST);
|
||||
this->givingSpell = true;
|
||||
@ -269,7 +269,7 @@ void BgDyYoseizo_ChooseType(BgDyYoseizo* this, PlayState* play) {
|
||||
}
|
||||
break;
|
||||
case FAIRY_UPGRADE_HALF_DAMAGE:
|
||||
if (!gSaveContext.doubleDefense) {
|
||||
if (!gSaveContext.isDoubleDefenseAcquired) {
|
||||
// "Damage halved"
|
||||
osSyncPrintf(VT_FGCOL(PURPLE) " ☆☆☆☆☆ ダメージ半減 ☆☆☆☆☆ \n" VT_RST);
|
||||
this->givingSpell = true;
|
||||
@ -495,7 +495,7 @@ void BgDyYoseizo_HealPlayer_NoReward(BgDyYoseizo* this, PlayState* play) {
|
||||
this->refillTimer = 200;
|
||||
}
|
||||
|
||||
if (((gSaveContext.healthCapacity == gSaveContext.health) && (gSaveContext.magic == gSaveContext.unk_13F4)) ||
|
||||
if (((gSaveContext.healthCapacity == gSaveContext.health) && (gSaveContext.magic == gSaveContext.magicCapacity)) ||
|
||||
(this->refillTimer == 1)) {
|
||||
this->healingTimer--;
|
||||
if (this->healingTimer == 90) {
|
||||
@ -738,21 +738,21 @@ void BgDyYoseizo_Give_Reward(BgDyYoseizo* this, PlayState* play) {
|
||||
|
||||
switch (actionIndex) {
|
||||
case FAIRY_UPGRADE_MAGIC:
|
||||
gSaveContext.magicAcquired = true;
|
||||
gSaveContext.unk_13F6 = 0x30;
|
||||
gSaveContext.isMagicAcquired = true;
|
||||
gSaveContext.magicFillTarget = 0x30;
|
||||
Interface_ChangeAlpha(9);
|
||||
break;
|
||||
case FAIRY_UPGRADE_DOUBLE_MAGIC:
|
||||
if (!gSaveContext.magicAcquired) {
|
||||
gSaveContext.magicAcquired = true;
|
||||
if (!gSaveContext.isMagicAcquired) {
|
||||
gSaveContext.isMagicAcquired = true;
|
||||
}
|
||||
gSaveContext.doubleMagic = true;
|
||||
gSaveContext.unk_13F6 = 0x60;
|
||||
gSaveContext.isDoubleMagicAcquired = true;
|
||||
gSaveContext.magicFillTarget = 0x60;
|
||||
gSaveContext.magicLevel = 0;
|
||||
Interface_ChangeAlpha(9);
|
||||
break;
|
||||
case FAIRY_UPGRADE_HALF_DAMAGE:
|
||||
gSaveContext.doubleDefense = true;
|
||||
gSaveContext.isDoubleDefenseAcquired = true;
|
||||
Interface_ChangeAlpha(9);
|
||||
break;
|
||||
}
|
||||
@ -780,8 +780,8 @@ void BgDyYoseizo_Give_Reward(BgDyYoseizo* this, PlayState* play) {
|
||||
itemPos.x, itemPos.y, itemPos.z, 0, 0, 0, sExItemTypes[actionIndex]);
|
||||
|
||||
if (this->item != NULL) {
|
||||
if (gSaveContext.magicAcquired == 0) {
|
||||
gSaveContext.magicAcquired = 1;
|
||||
if (gSaveContext.isMagicAcquired == 0) {
|
||||
gSaveContext.isMagicAcquired = 1;
|
||||
} else {
|
||||
Magic_Fill(play);
|
||||
}
|
||||
@ -922,7 +922,7 @@ void BgDyYoseizo_Draw(Actor* thisx, PlayState* play) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
if (this->actionFunc != BgDyYoseizo_Vanish) {
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sEyeTextures[this->eyeState]));
|
||||
|
||||
@ -1038,7 +1038,7 @@ void BgDyYoseizo_ParticleDraw(BgDyYoseizo* this, PlayState* play) {
|
||||
s16 i;
|
||||
|
||||
OPEN_DISPS(gfxCtx);
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
|
||||
for (i = 0; i < 200; i++, particle++) {
|
||||
FrameInterpolation_RecordOpenChild(particle, particle->epoch);
|
||||
|
@ -276,7 +276,7 @@ void BgGanonOtyuka_Draw(Actor* thisx, PlayState* play) {
|
||||
actor = actor->next;
|
||||
}
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPDisplayList(POLY_OPA_DISP++, sPlatformMaterialDL);
|
||||
|
||||
actor = play->actorCtx.actorLists[ACTORCAT_PROP].head;
|
||||
@ -330,7 +330,7 @@ void BgGanonOtyuka_Draw(Actor* thisx, PlayState* play) {
|
||||
actor = actor->next;
|
||||
}
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
actor = play->actorCtx.actorLists[ACTORCAT_PROP].head;
|
||||
while (actor != NULL) {
|
||||
if (actor->id == ACTOR_BG_GANON_OTYUKA) {
|
||||
|
@ -46,7 +46,7 @@ void BgGateShutter_Init(Actor* thisx, PlayState* play) {
|
||||
this->somePos.z = thisx->world.pos.z;
|
||||
if (((gSaveContext.infTable[7] & 0x40) ||
|
||||
(!gSaveContext.n64ddFlag && (gSaveContext.eventChkInf[4] & 0x20)) ||
|
||||
(gSaveContext.n64ddFlag && Randomizer_GetSettingValue(RSK_KAK_GATE))) &&
|
||||
(gSaveContext.n64ddFlag && (Randomizer_GetSettingValue(RSK_KAK_GATE) == RO_KAK_GATE_OPEN))) &&
|
||||
(play->sceneNum == SCENE_SPOT01)) {
|
||||
thisx->world.pos.x = -89.0f;
|
||||
thisx->world.pos.z = -1375.0f;
|
||||
@ -128,7 +128,7 @@ void BgGateShutter_Update(Actor* thisx, PlayState* play) {
|
||||
void BgGateShutter_Draw(Actor* thisx, PlayState* play) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
@ -159,7 +159,7 @@ void BgGjyoBridge_Draw(Actor* thisx, PlayState* play) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
|
||||
gSPSegment(POLY_XLU_DISP++, 8,
|
||||
Gfx_TexScroll(play->state.gfxCtx, play->gameplayFrames & 127,
|
||||
|
@ -140,7 +140,7 @@ void BgGndFiremeiro_Update(Actor* thisx, PlayState* play) {
|
||||
|
||||
void BgGndFiremeiro_Draw(Actor* thisx, PlayState* play) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
func_800943C8(play->state.gfxCtx);
|
||||
Gfx_SetupDL_37Opa(play->state.gfxCtx);
|
||||
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
@ -200,7 +200,7 @@ void BgGndSoulmeiro_Draw(Actor* thisx, PlayState* play) {
|
||||
switch (params) {
|
||||
case 0:
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_XLU_DISP++, dLists[params]);
|
||||
|
@ -150,8 +150,8 @@ void BgHaka_Update(Actor* thisx, PlayState* play) {
|
||||
void BgHaka_Draw(Actor* thisx, PlayState* play) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
@ -317,7 +317,7 @@ void BgHakaGate_DrawFlame(BgHakaGate* this, PlayState* play) {
|
||||
if (this->vFlameScale > 0) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPSegment(POLY_XLU_DISP++, 0x08,
|
||||
Gfx_TwoTexScroll(play->state.gfxCtx, 0, 0, 0, 0x20, 0x40, 1, 0,
|
||||
(this->vScrollTimer * -20) & 0x1FF, 0x20, 0x80));
|
||||
@ -348,7 +348,7 @@ void BgHakaGate_Draw(Actor* thisx, PlayState* play) {
|
||||
if (CHECK_FLAG_ALL(thisx->flags, ACTOR_FLAG_7)) {
|
||||
Gfx_DrawDListXlu(play, object_haka_objects_DL_00F1B0);
|
||||
} else {
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
if (thisx->params == BGHAKAGATE_FLOOR) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
Matrix_Get(¤tMtxF);
|
||||
|
@ -199,7 +199,7 @@ void BgHakaShip_Draw(Actor* thisx, PlayState* play) {
|
||||
f32 angleTemp;
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
if (this->dyna.actor.params == 0) {
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
@ -231,7 +231,7 @@ void BgHakaTubo_DrawFlameCircle(BgHakaTubo* this, PlayState* play) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
Matrix_Translate(this->dyna.actor.world.pos.x, this->dyna.actor.world.pos.y + 235.0f, this->dyna.actor.world.pos.z,
|
||||
MTXMODE_NEW);
|
||||
Matrix_RotateY(this->dyna.actor.shape.rot.y * (M_PI / 0x8000), MTXMODE_APPLY);
|
||||
|
@ -113,7 +113,7 @@ void BgHakaWater_Draw(Actor* thisx, PlayState* play) {
|
||||
s32 pad2;
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
|
||||
if (this->isLowered) {
|
||||
temp = this->actor.world.pos.y - this->actor.home.pos.y;
|
||||
|
@ -509,7 +509,7 @@ void BgHeavyBlock_Draw(Actor* thisx, PlayState* play) {
|
||||
|
||||
Matrix_MultVec3f(&D_80884EC8, &thisx->world.pos);
|
||||
Matrix_MultVec3f(&D_80884ED4, &thisx->home.pos);
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
@ -243,7 +243,7 @@ void BgHidanCurtain_Draw(Actor* thisx, PlayState* play) {
|
||||
BgHidanCurtain* this = (BgHidanCurtain*)thisx;
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0x80, 0x80, 255, 220, 0, this->alpha);
|
||||
|
||||
|
@ -127,7 +127,7 @@ void BgHidanDalm_Wait(BgHidanDalm* this, PlayState* play) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
if ((this->collider.base.acFlags & AC_HIT) && !Player_InCsMode(play) &&
|
||||
(player->swordAnimation == 22 || player->swordAnimation == 23)) {
|
||||
(player->meleeWeaponAnimation == 22 || player->meleeWeaponAnimation == 23)) {
|
||||
this->collider.base.acFlags &= ~AC_HIT;
|
||||
if ((this->collider.elements[0].info.bumperFlags & BUMP_HIT) ||
|
||||
(this->collider.elements[1].info.bumperFlags & BUMP_HIT)) {
|
||||
|
@ -204,7 +204,7 @@ void BgHidanFirewall_Draw(Actor* thisx, PlayState* play) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 0x14);
|
||||
POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, 0x14);
|
||||
|
||||
gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sFireballTexs[this->unk_150]));
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0x01, 255, 255, 0, 150);
|
||||
|
@ -253,7 +253,7 @@ void BgHidanFwbig_Draw(Actor* thisx, PlayState* play) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
|
||||
gSPSegment(POLY_XLU_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(gEffUnknown4Tex));
|
||||
|
||||
|
@ -397,7 +397,7 @@ void BgHidanHamstep_Update(Actor* thisx, PlayState* play) {
|
||||
void BgHidanHamstep_Draw(Actor* thisx, PlayState* play) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
@ -153,7 +153,7 @@ void BgHidanKousi_Update(Actor* thisx, PlayState* play) {
|
||||
void BgHidanKousi_Draw(Actor* thisx, PlayState* play) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
@ -326,7 +326,7 @@ void BgHidanKowarerukabe_Draw(Actor* thisx, PlayState* play) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
@ -355,7 +355,7 @@ void func_8088BC40(PlayState* play, BgHidanRock* this) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 0x14);
|
||||
POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, 0x14);
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0x01, 255, 255, 0, 150);
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, 255, 0, 0, 255);
|
||||
|
||||
|
@ -231,14 +231,14 @@ void BgHidanRsekizou_Draw(Actor* thisx, PlayState* play) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_OPA_DISP++, gFireTempleSpinningFlamethrowerDL);
|
||||
Matrix_MtxFCopy(&mf, &gMtxFClear);
|
||||
|
||||
POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 0x14);
|
||||
POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, 0x14);
|
||||
|
||||
// Strange original code. Add || 1 for frame interpolation to get correct.
|
||||
if ((s16)((Camera_GetCamDirYaw(GET_ACTIVE_CAM(play)) - this->dyna.actor.shape.rot.y) - 0x2E6C) >= 0 || 1) {
|
||||
|
@ -396,7 +396,7 @@ void BgHidanSekizou_Draw(Actor* thisx, PlayState* play2) {
|
||||
s32 sp6C[4];
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
if (this->dyna.actor.params == 0) {
|
||||
@ -404,7 +404,7 @@ void BgHidanSekizou_Draw(Actor* thisx, PlayState* play2) {
|
||||
} else {
|
||||
gSPDisplayList(POLY_OPA_DISP++, gFireTempleStationaryFlamethrowerTallDL);
|
||||
}
|
||||
POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 0x14);
|
||||
POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, 0x14);
|
||||
if (this->dyna.actor.params == 0) {
|
||||
if (this->unk_168[0] > 0) {
|
||||
if ((s16)(Camera_GetCamDirYaw(GET_ACTIVE_CAM(play)) - this->dyna.actor.shape.rot.y) >= 0) {
|
||||
|
@ -280,7 +280,7 @@ void BgHidanSima_Draw(Actor* thisx, PlayState* play) {
|
||||
BgHidanSima* this = (BgHidanSima*)thisx;
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
if (this->dyna.actor.params == 0) {
|
||||
@ -288,7 +288,7 @@ void BgHidanSima_Draw(Actor* thisx, PlayState* play) {
|
||||
} else {
|
||||
gSPDisplayList(POLY_OPA_DISP++, gFireTempleStonePlatform2DL);
|
||||
if (this->actionFunc == func_8088E7A8) {
|
||||
POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 0x14);
|
||||
POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, 0x14);
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 1, 255, 255, 0, 150);
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, 255, 0, 0, 255);
|
||||
POLY_XLU_DISP = func_8088EB54(play, this, POLY_XLU_DISP);
|
||||
|
@ -447,7 +447,7 @@ void BgIceShelter_Draw(Actor* thisx, PlayState* play2) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
@ -106,7 +106,7 @@ void BgInGate_Update(Actor* thisx, PlayState* play) {
|
||||
void BgInGate_Draw(Actor* thisx, PlayState* play) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
@ -213,7 +213,7 @@ void BgJyaBigmirror_DrawLightBeam(Actor* thisx, PlayState* play) {
|
||||
Actor* lift;
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
lift = Actor_Find(&play->actorCtx, ACTOR_BG_JYA_LIFT, ACTORCAT_BG);
|
||||
if (lift != NULL) {
|
||||
this->liftHeight = lift->world.pos.y;
|
||||
|
@ -66,7 +66,7 @@ void BgJyaBlock_Update(Actor* thisx, PlayState* play) {
|
||||
void BgJyaBlock_Draw(Actor* thisx, PlayState* play) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(gPushBlockGrayTex));
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
|
@ -198,7 +198,7 @@ void BgJyaBombchuiwa_Update(Actor* thisx, PlayState* play) {
|
||||
|
||||
void BgJyaBombchuiwa_DrawRock(PlayState* play) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_XLU_DISP++, gBombchuiwa2DL);
|
||||
@ -209,7 +209,7 @@ void BgJyaBombchuiwa_DrawLight(Actor* thisx, PlayState* play) {
|
||||
BgJyaBombchuiwa* this = (BgJyaBombchuiwa*)thisx;
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 255, CLAMP_MAX((u32)(this->lightRayIntensity * 153.0f), 153));
|
||||
|
@ -531,7 +531,7 @@ void BgJyaCobra_Update(Actor* thisx, PlayState* play2) {
|
||||
void func_80896CB4(PlayState* play) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_XLU_DISP++, gCobra2DL);
|
||||
@ -544,7 +544,7 @@ void func_80896D78(BgJyaCobra* this, PlayState* play) {
|
||||
Vec3s sp44;
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
|
||||
sp44.x = D_80897308[this->dyna.actor.params & 3] + this->dyna.actor.shape.rot.x;
|
||||
sp44.y = this->dyna.actor.shape.rot.y;
|
||||
@ -568,7 +568,7 @@ void BgJyaCobra_DrawShadow(BgJyaCobra* this, PlayState* play) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80094044(play->state.gfxCtx);
|
||||
Gfx_SetupDL_44Xlu(play->state.gfxCtx);
|
||||
|
||||
if (params == 0) {
|
||||
sp64.x = this->dyna.actor.world.pos.x - 50.0f;
|
||||
|
@ -301,7 +301,7 @@ static void* sLeftSideCrumbles[] = {
|
||||
void BgJyaMegami_DrawFace(BgJyaMegami* this, PlayState* play) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sRightSideCrumbles[this->crumbleIndex]));
|
||||
gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(sLeftSideCrumbles[this->crumbleIndex]));
|
||||
gSPMatrix(POLY_OPA_DISP++, MATRIX_NEWMTX(play->state.gfxCtx),
|
||||
@ -324,7 +324,7 @@ void BgJyaMegami_DrawExplode(BgJyaMegami* this, PlayState* play) {
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(this->pieces); i++) {
|
||||
piece = &this->pieces[i];
|
||||
|
@ -124,7 +124,7 @@ void BgMenkuriEye_Draw(Actor* thisx, PlayState* play) {
|
||||
s32 pad;
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
func_80093D84(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||
if (Flags_GetSwitch(play, this->actor.params)) {
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, 200, 0, 0, 255);
|
||||
} else if (this->framesUntilDisable == -1) {
|
||||
|
@ -508,7 +508,7 @@ void BgMizuBwall_Draw(Actor* thisx, PlayState* play2) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
frames = play->gameplayFrames;
|
||||
|
||||
func_80093D18(play->state.gfxCtx);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08,
|
||||
Gfx_TwoTexScrollEnvColor(play->state.gfxCtx, 0, 1 * frames, 0, 0x20, 0x20, 1, 0, 0, 0x20, 0x20, 0,
|
||||
0, 0, this->scrollAlpha1));
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user