mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-07-05 03:29:45 -04:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0cdcd71b6a | |||
| 318ad2a00f | |||
| a913f1699f | |||
| 01b4eaa2fa | |||
| 9d2ba3eb49 | |||
| 6026b4bb9b | |||
| 7a77d48954 | |||
| 4ee0d8ed4b |
@@ -4059,7 +4059,7 @@ public:
|
|||||||
/* 0x02180 */ daAlink_matAnm_c* field_0x2180[2];
|
/* 0x02180 */ daAlink_matAnm_c* field_0x2180[2];
|
||||||
/* 0x02188 */ dEyeHL_c mEyeHL1;
|
/* 0x02188 */ dEyeHL_c mEyeHL1;
|
||||||
/* 0x0219C */ dEyeHL_c mEyeHL2;
|
/* 0x0219C */ dEyeHL_c mEyeHL2;
|
||||||
/* 0x021B0 */ daPy_anmHeap_c mItemHeap[2];
|
/* 0x021B0 */ daPy_anmHeap_c mItemHeap[3];
|
||||||
/* 0x021D8 */ daPy_anmHeap_c mAnmHeap9;
|
/* 0x021D8 */ daPy_anmHeap_c mAnmHeap9;
|
||||||
/* 0x021EC */ daAlinkHIO_c* mpHIO;
|
/* 0x021EC */ daAlinkHIO_c* mpHIO;
|
||||||
/* 0x021F0 */ daAlink_blur_c m_swordBlur;
|
/* 0x021F0 */ daAlink_blur_c m_swordBlur;
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ enum dEvt_type_e {
|
|||||||
/* 0x5 */ dEvt_type_ITEM_e,
|
/* 0x5 */ dEvt_type_ITEM_e,
|
||||||
/* 0x6 */ dEvt_type_SHOWITEM_X_e,
|
/* 0x6 */ dEvt_type_SHOWITEM_X_e,
|
||||||
/* 0x7 */ dEvt_type_SHOWITEM_Y_e,
|
/* 0x7 */ dEvt_type_SHOWITEM_Y_e,
|
||||||
|
/* 0x8 */ dEvt_type_SHOWITEM_Z_e,
|
||||||
/* 0xA */ dEvt_type_CATCH_e = 10,
|
/* 0xA */ dEvt_type_CATCH_e = 10,
|
||||||
/* 0xB */ dEvt_type_TREASURE_e,
|
/* 0xB */ dEvt_type_TREASURE_e,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ private:
|
|||||||
/* 0x6A9 */ u8 field_0x6a9; // unused
|
/* 0x6A9 */ u8 field_0x6a9; // unused
|
||||||
/* 0x6AA */ u8 mXButtonSlot;
|
/* 0x6AA */ u8 mXButtonSlot;
|
||||||
/* 0x6AB */ u8 mYButtonSlot;
|
/* 0x6AB */ u8 mYButtonSlot;
|
||||||
/* 0x6AC */ u8 field_0x6ac;
|
/* 0x6AC */ u8 mZButtonSlot;
|
||||||
/* 0x6AD */ u8 field_0x6ad;
|
/* 0x6AD */ u8 field_0x6ad;
|
||||||
/* 0x6AE */ u8 mItemsTotal; // Contains the amount of items which are actually obtained and in
|
/* 0x6AE */ u8 mItemsTotal; // Contains the amount of items which are actually obtained and in
|
||||||
// the item wheel
|
// the item wheel
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ private:
|
|||||||
/* 0x078 */ J2DScreen* mpScreen;
|
/* 0x078 */ J2DScreen* mpScreen;
|
||||||
/* 0x07C */ J2DScreen* mpKanteraScreen;
|
/* 0x07C */ J2DScreen* mpKanteraScreen;
|
||||||
/* 0x080 */ J2DScreen* mpPikariScreen;
|
/* 0x080 */ J2DScreen* mpPikariScreen;
|
||||||
/* 0x084 */ J2DPicture* mpItemNumTex[2][3];
|
/* 0x084 */ J2DPicture* mpItemNumTex[3][3];
|
||||||
/* 0x09C */ CPaneMgr* field_0x9c[3];
|
/* 0x09C */ CPaneMgr* field_0x9c[3];
|
||||||
/* 0x0A8 */ int field_0xa8;
|
/* 0x0A8 */ int field_0xa8;
|
||||||
/* 0x0AC */ dKantera_icon_c* mpKanteraMeter[2];
|
/* 0x0AC */ dKantera_icon_c* mpKanteraMeter[2];
|
||||||
|
|||||||
+2
-1
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
static const int DEFAULT_SELECT_ITEM_INDEX = 0;
|
static const int DEFAULT_SELECT_ITEM_INDEX = 0;
|
||||||
static const int MAX_SELECT_ITEM = 4;
|
static const int MAX_SELECT_ITEM = 4;
|
||||||
static const int SELECT_ITEM_NUM = 2;
|
static const int SELECT_ITEM_NUM = 3;
|
||||||
static const int MAX_EQUIPMENT = 6;
|
static const int MAX_EQUIPMENT = 6;
|
||||||
static const int MAX_EVENTS = 256;
|
static const int MAX_EVENTS = 256;
|
||||||
static const int MAX_ITEM_SLOTS = 24;
|
static const int MAX_ITEM_SLOTS = 24;
|
||||||
@@ -123,6 +123,7 @@ enum {
|
|||||||
/* 0x3 */ SELECT_ITEM_B,
|
/* 0x3 */ SELECT_ITEM_B,
|
||||||
/* 0x0 */ SELECT_ITEM_X = SELECT_ITEM_LEFT,
|
/* 0x0 */ SELECT_ITEM_X = SELECT_ITEM_LEFT,
|
||||||
/* 0x1 */ SELECT_ITEM_Y = SELECT_ITEM_RIGHT,
|
/* 0x1 */ SELECT_ITEM_Y = SELECT_ITEM_RIGHT,
|
||||||
|
/* 0x2 */ SELECT_ITEM_Z = SELECT_ITEM_DOWN,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
|||||||
@@ -1,8 +1,19 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <cmath>
|
||||||
#include <dolphin/types.h>
|
#include <dolphin/types.h>
|
||||||
|
|
||||||
namespace dusk::audio {
|
namespace dusk::audio {
|
||||||
|
|
||||||
|
// Converts a 0-1 volume to a linear amplitude multiplier.
|
||||||
|
// The curve is -4 dB per 10% step: 100% = 0 dB, 90% = -4 dB, ..., 0% = -inf dB
|
||||||
|
inline f32 MasterVolumeToLinear(f32 v) {
|
||||||
|
if (v <= 0.0f) {
|
||||||
|
return 0.0f;
|
||||||
|
}
|
||||||
|
return std::pow(10.0f, (v - 1.0f) * 2.0f);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize the audio system and start playing audio.
|
* Initialize the audio system and start playing audio.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -175,6 +175,7 @@ class ConfigVar : public ConfigVarBase {
|
|||||||
T defaultValue;
|
T defaultValue;
|
||||||
T value;
|
T value;
|
||||||
T overrideValue;
|
T overrideValue;
|
||||||
|
ConfigVarLayer priorLayer = ConfigVarLayer::Default;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
@@ -265,6 +266,7 @@ public:
|
|||||||
void setSpeedrunValue(T newValue) {
|
void setSpeedrunValue(T newValue) {
|
||||||
checkRegistered();
|
checkRegistered();
|
||||||
if (layer != ConfigVarLayer::Override) {
|
if (layer != ConfigVarLayer::Override) {
|
||||||
|
priorLayer = layer;
|
||||||
overrideValue = std::move(newValue);
|
overrideValue = std::move(newValue);
|
||||||
layer = ConfigVarLayer::Speedrun;
|
layer = ConfigVarLayer::Speedrun;
|
||||||
}
|
}
|
||||||
@@ -282,7 +284,7 @@ public:
|
|||||||
checkRegistered();
|
checkRegistered();
|
||||||
if (layer == ConfigVarLayer::Speedrun) {
|
if (layer == ConfigVarLayer::Speedrun) {
|
||||||
overrideValue = {};
|
overrideValue = {};
|
||||||
layer = ConfigVarLayer::Value;
|
layer = priorLayer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -293,7 +295,8 @@ public:
|
|||||||
*/
|
*/
|
||||||
[[nodiscard]] constexpr const T& getValueForSave() const noexcept {
|
[[nodiscard]] constexpr const T& getValueForSave() const noexcept {
|
||||||
checkRegistered();
|
checkRegistered();
|
||||||
return layer == ConfigVarLayer::Default ? defaultValue : value;
|
const ConfigVarLayer effectiveLayer = (layer == ConfigVarLayer::Speedrun) ? priorLayer : layer;
|
||||||
|
return effectiveLayer == ConfigVarLayer::Default ? defaultValue : value;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+20
-20
@@ -4552,7 +4552,7 @@ void daAlink_c::playerInit() {
|
|||||||
PLAYER_CREATE_ANM_HEAP(mFaceBtkHeap, daPy_anmHeap_c::HEAP_TYPE_2, "daAlink_c::mFaceBtkHeap");
|
PLAYER_CREATE_ANM_HEAP(mFaceBtkHeap, daPy_anmHeap_c::HEAP_TYPE_2, "daAlink_c::mFaceBtkHeap");
|
||||||
PLAYER_CREATE_ANM_HEAP(mFaceBckHeap, daPy_anmHeap_c::HEAP_TYPE_3, "daAlink_c::mFaceBckHeap");
|
PLAYER_CREATE_ANM_HEAP(mFaceBckHeap, daPy_anmHeap_c::HEAP_TYPE_3, "daAlink_c::mFaceBckHeap");
|
||||||
|
|
||||||
for (i = 0; i < 2; i++) {
|
for (i = 0; i < SELECT_ITEM_NUM; i++) {
|
||||||
mItemHeap[i].setBufferSize(0x13200);
|
mItemHeap[i].setBufferSize(0x13200);
|
||||||
PLAYER_CREATE_ANM_HEAP_F(mItemHeap[i], daPy_anmHeap_c::HEAP_TYPE_4, "daAlink_c::mItemHeap[%d]", i);
|
PLAYER_CREATE_ANM_HEAP_F(mItemHeap[i], daPy_anmHeap_c::HEAP_TYPE_4, "daAlink_c::mItemHeap[%d]", i);
|
||||||
}
|
}
|
||||||
@@ -9494,7 +9494,7 @@ void daAlink_c::setStickData() {
|
|||||||
if (mDoCPd_c::getTrigY(PAD_1)) {
|
if (mDoCPd_c::getTrigY(PAD_1)) {
|
||||||
mItemTrigger |= (daAlink_ITEM_BTN)BTN_Y;
|
mItemTrigger |= (daAlink_ITEM_BTN)BTN_Y;
|
||||||
}
|
}
|
||||||
if (mDoCPd_c::getTrigZ(PAD_1)) {
|
if (mDoCPd_c::getTrigZ(PAD_1) && !mDoCPd_c::getHoldR(PAD_1)) {
|
||||||
mItemTrigger |= (daAlink_ITEM_BTN)BTN_Z;
|
mItemTrigger |= (daAlink_ITEM_BTN)BTN_Z;
|
||||||
}
|
}
|
||||||
if (mDoCPd_c::getTrigL(PAD_1)) {
|
if (mDoCPd_c::getTrigL(PAD_1)) {
|
||||||
@@ -11297,8 +11297,8 @@ BOOL daAlink_c::checkUpperItemActionFly() {
|
|||||||
void daAlink_c::checkItemButtonChange() {
|
void daAlink_c::checkItemButtonChange() {
|
||||||
if (mProcID != PROC_CANOE_PADDLE_PUT && mEquipItem != dItemNo_NONE_e && !checkEquipAnime()) {
|
if (mProcID != PROC_CANOE_PADDLE_PUT && mEquipItem != dItemNo_NONE_e && !checkEquipAnime()) {
|
||||||
u8 temp_r0;
|
u8 temp_r0;
|
||||||
for (u8 i = 0; i < 2; i++) {
|
for (u8 i = 0; i < SELECT_ITEM_NUM; i++) {
|
||||||
temp_r0 = (i + 1) % 2;
|
temp_r0 = (i + 1) % SELECT_ITEM_NUM;
|
||||||
if (mEquipItem == dComIfGp_getSelectItem(i) &&
|
if (mEquipItem == dComIfGp_getSelectItem(i) &&
|
||||||
(mEquipItem != dComIfGp_getSelectItem(temp_r0) || mSelectItemId != temp_r0))
|
(mEquipItem != dComIfGp_getSelectItem(temp_r0) || mSelectItemId != temp_r0))
|
||||||
{
|
{
|
||||||
@@ -11468,8 +11468,8 @@ int daAlink_c::orderTalk(int i_checkZTalk) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!checkWolf() && checkRequestTalkActor(mAttList2, field_0x27f8)) {
|
if (!checkWolf() && checkRequestTalkActor(mAttList2, field_0x27f8)) {
|
||||||
for (int i = 0; i < 2; i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
// check if pressed X or Y and if item on button is a trade item
|
// check if pressed X or Y or Z and if item on button is a trade item
|
||||||
if (checkTradeItem(dComIfGp_getSelectItem(i)) && itemTriggerCheck(1 << i)) {
|
if (checkTradeItem(dComIfGp_getSelectItem(i)) && itemTriggerCheck(1 << i)) {
|
||||||
fopAcM_orderTalkItemBtnEvent(itemTalkType[i], this, field_0x27f8, 0, 0);
|
fopAcM_orderTalkItemBtnEvent(itemTalkType[i], this, field_0x27f8, 0, 0);
|
||||||
return 1;
|
return 1;
|
||||||
@@ -12107,7 +12107,7 @@ void daAlink_c::allUnequip(BOOL param_0) {
|
|||||||
if (checkNoResetFlg2(FLG2_UNK_1) && param_0 && !checkCanoeRide() &&
|
if (checkNoResetFlg2(FLG2_UNK_1) && param_0 && !checkCanoeRide() &&
|
||||||
mEquipItem != dItemNo_KANTERA_e)
|
mEquipItem != dItemNo_KANTERA_e)
|
||||||
{
|
{
|
||||||
for (u8 i = 0; i < 2; i++) {
|
for (u8 i = 0; i < SELECT_ITEM_NUM; i++) {
|
||||||
if (dComIfGp_getSelectItem(i) == dItemNo_KANTERA_e) {
|
if (dComIfGp_getSelectItem(i) == dItemNo_KANTERA_e) {
|
||||||
mSelectItemId = i;
|
mSelectItemId = i;
|
||||||
}
|
}
|
||||||
@@ -12159,7 +12159,7 @@ BOOL daAlink_c::checkItemChangeFromButton() {
|
|||||||
itemEquip(0x105);
|
itemEquip(0x105);
|
||||||
} else {
|
} else {
|
||||||
u8 i;
|
u8 i;
|
||||||
for (i = 0; i < 2; i++) {
|
for (i = 0; i < SELECT_ITEM_NUM; i++) {
|
||||||
int proc_type = checkNewItemChange(i);
|
int proc_type = checkNewItemChange(i);
|
||||||
if (proc_type != 0 && itemTriggerCheck(1 << i)) {
|
if (proc_type != 0 && itemTriggerCheck(1 << i)) {
|
||||||
BOOL var_r27 = changeItemTriggerKeepProc(i, proc_type);
|
BOOL var_r27 = changeItemTriggerKeepProc(i, proc_type);
|
||||||
@@ -12180,7 +12180,7 @@ BOOL daAlink_c::checkItemChangeFromButton() {
|
|||||||
} else if (mEquipItem == dItemNo_NONE_e && mThrowBoomerangAcKeep.getActor() == NULL &&
|
} else if (mEquipItem == dItemNo_NONE_e && mThrowBoomerangAcKeep.getActor() == NULL &&
|
||||||
!checkCanoeRide() && checkNoUpperAnime() && checkNoResetFlg2(FLG2_UNK_1))
|
!checkCanoeRide() && checkNoUpperAnime() && checkNoResetFlg2(FLG2_UNK_1))
|
||||||
{
|
{
|
||||||
for (i = 0; i < 2; i++) {
|
for (i = 0; i < SELECT_ITEM_NUM; i++) {
|
||||||
if (dComIfGp_getSelectItem(i) == dItemNo_KANTERA_e) {
|
if (dComIfGp_getSelectItem(i) == dItemNo_KANTERA_e) {
|
||||||
mSelectItemId = i;
|
mSelectItemId = i;
|
||||||
}
|
}
|
||||||
@@ -12192,7 +12192,7 @@ BOOL daAlink_c::checkItemChangeFromButton() {
|
|||||||
mEquipItem != 0x102 && (!checkCanoeRide() || !checkFisingRodLure()))
|
mEquipItem != 0x102 && (!checkCanoeRide() || !checkFisingRodLure()))
|
||||||
{
|
{
|
||||||
if (!checkEventRun() || strcmp(dComIfGp_getEventManager().getRunEventName(), "ANGER") != 0) {
|
if (!checkEventRun() || strcmp(dComIfGp_getEventManager().getRunEventName(), "ANGER") != 0) {
|
||||||
if (strcmp(dComIfGp_getEventManager().getRunEventName(), "ANGER2") != 0 && checkItemSetButton(mEquipItem) == 2) {
|
if (strcmp(dComIfGp_getEventManager().getRunEventName(), "ANGER2") != 0 && checkItemSetButton(mEquipItem) == 3) {
|
||||||
allUnequip(1);
|
allUnequip(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -14386,7 +14386,7 @@ BOOL daAlink_c::checkGroupItem(int i_itemNo, int i_selItem) const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int daAlink_c::checkSetItemTrigger(int i_itemNo) {
|
int daAlink_c::checkSetItemTrigger(int i_itemNo) {
|
||||||
for (u8 i = 0; i < 2; i++) {
|
for (u8 i = 0; i < SELECT_ITEM_NUM; i++) {
|
||||||
if (checkGroupItem(i_itemNo, dComIfGp_getSelectItem(i)) && itemTriggerCheck(1 << i)) {
|
if (checkGroupItem(i_itemNo, dComIfGp_getSelectItem(i)) && itemTriggerCheck(1 << i)) {
|
||||||
if (i_itemNo != dItemNo_HVY_BOOTS_e) {
|
if (i_itemNo != dItemNo_HVY_BOOTS_e) {
|
||||||
mSelectItemId = i;
|
mSelectItemId = i;
|
||||||
@@ -14399,13 +14399,13 @@ int daAlink_c::checkSetItemTrigger(int i_itemNo) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int daAlink_c::checkItemSetButton(int i_itemNo) {
|
int daAlink_c::checkItemSetButton(int i_itemNo) {
|
||||||
for (u8 i = 0; i < 2; i++) {
|
for (u8 i = 0; i < SELECT_ITEM_NUM; i++) {
|
||||||
if (checkGroupItem(i_itemNo, dComIfGp_getSelectItem(i))) {
|
if (checkGroupItem(i_itemNo, dComIfGp_getSelectItem(i))) {
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 2;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool daAlink_c::checkField() {
|
bool daAlink_c::checkField() {
|
||||||
@@ -14605,7 +14605,7 @@ int daAlink_c::checkNewItemChange(u8 i_selItemIdx) {
|
|||||||
return ITEM_PROC_BOTTLE_DRINK;
|
return ITEM_PROC_BOTTLE_DRINK;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (checkOilBottleItem(sel_item) && checkItemSetButton(dItemNo_KANTERA_e) != 2) {
|
if (checkOilBottleItem(sel_item) && checkItemSetButton(dItemNo_KANTERA_e) != 3) {
|
||||||
return ITEM_PROC_KANDELAAR_POUR;
|
return ITEM_PROC_KANDELAAR_POUR;
|
||||||
}
|
}
|
||||||
} else if (sel_item == dItemNo_HVY_BOOTS_e) {
|
} else if (sel_item == dItemNo_HVY_BOOTS_e) {
|
||||||
@@ -14650,7 +14650,7 @@ int daAlink_c::checkNewItemChange(u8 i_selItemIdx) {
|
|||||||
return ITEM_PROC_SPINNER_READY;
|
return ITEM_PROC_SPINNER_READY;
|
||||||
} else if (checkDungeonWarpItem(sel_item)) {
|
} else if (checkDungeonWarpItem(sel_item)) {
|
||||||
return ITEM_PROC_DUNGEON_WARP_READY;
|
return ITEM_PROC_DUNGEON_WARP_READY;
|
||||||
} else if (checkItemSetButton(0x108) != 2 &&
|
} else if (checkItemSetButton(0x108) != 3 &&
|
||||||
(sel_item == dItemNo_WORM_e || sel_item == dItemNo_BEE_CHILD_e))
|
(sel_item == dItemNo_WORM_e || sel_item == dItemNo_BEE_CHILD_e))
|
||||||
{
|
{
|
||||||
int itemNo = dComIfGp_getSelectItem(checkItemSetButton(0x108));
|
int itemNo = dComIfGp_getSelectItem(checkItemSetButton(0x108));
|
||||||
@@ -14674,7 +14674,7 @@ int daAlink_c::checkNewItemChange(u8 i_selItemIdx) {
|
|||||||
return ITEM_PROC_NOT_USE_ITEM;
|
return ITEM_PROC_NOT_USE_ITEM;
|
||||||
} else if (sel_item == dItemNo_HORSE_FLUTE_e) {
|
} else if (sel_item == dItemNo_HORSE_FLUTE_e) {
|
||||||
return ITEM_PROC_GRASS_WHISTLE;
|
return ITEM_PROC_GRASS_WHISTLE;
|
||||||
} else if (checkOilBottleItem(sel_item) && checkItemSetButton(0x48) != 2) {
|
} else if (checkOilBottleItem(sel_item) && checkItemSetButton(0x48) != 3) {
|
||||||
return ITEM_PROC_KANDELAAR_POUR;
|
return ITEM_PROC_KANDELAAR_POUR;
|
||||||
} else if (sel_item == dItemNo_HAWK_EYE_e) {
|
} else if (sel_item == dItemNo_HAWK_EYE_e) {
|
||||||
if (acceptSubjectModeChange()) {
|
if (acceptSubjectModeChange()) {
|
||||||
@@ -17826,7 +17826,7 @@ int daAlink_c::execute() {
|
|||||||
|
|
||||||
if (checkNoResetFlg2(FLG2_UNK_1) != FALSE &&
|
if (checkNoResetFlg2(FLG2_UNK_1) != FALSE &&
|
||||||
mEquipItem != dItemNo_KANTERA_e &&
|
mEquipItem != dItemNo_KANTERA_e &&
|
||||||
checkItemSetButton(dItemNo_KANTERA_e) == 2) {
|
checkItemSetButton(dItemNo_KANTERA_e) == 3) {
|
||||||
offKandelaarModel();
|
offKandelaarModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -18215,7 +18215,7 @@ int daAlink_c::execute() {
|
|||||||
|
|
||||||
if (checkEquipHeavyBoots()) {
|
if (checkEquipHeavyBoots()) {
|
||||||
int itemButton = checkItemSetButton(dItemNo_HVY_BOOTS_e);
|
int itemButton = checkItemSetButton(dItemNo_HVY_BOOTS_e);
|
||||||
if (itemButton == 2 || checkNotHeavyBootsStage()) {
|
if (itemButton == 3 || checkNotHeavyBootsStage()) {
|
||||||
if (!dComIfGp_checkPlayerStatus1(0, 0x10000) || !checkHookshotRoofLv7Boss()) {
|
if (!dComIfGp_checkPlayerStatus1(0, 0x10000) || !checkHookshotRoofLv7Boss()) {
|
||||||
setHeavyBoots(0);
|
setHeavyBoots(0);
|
||||||
}
|
}
|
||||||
@@ -18737,7 +18737,7 @@ int daAlink_c::execute() {
|
|||||||
|
|
||||||
if (!checkWolf()) {
|
if (!checkWolf()) {
|
||||||
u8 tmp;
|
u8 tmp;
|
||||||
for (u8 i = 0; i < 2; i++) {
|
for (u8 i = 0; i < SELECT_ITEM_NUM; i++) {
|
||||||
tmp = (i + 1) % 2;
|
tmp = (i + 1) % 2;
|
||||||
if (dComIfGp_getSelectItem(i) == dItemNo_EMPTY_BOTTLE_e && (mUseButtonFlags & (1 << i)) &&
|
if (dComIfGp_getSelectItem(i) == dItemNo_EMPTY_BOTTLE_e && (mUseButtonFlags & (1 << i)) &&
|
||||||
dComIfGp_getSelectItem(tmp) == dItemNo_EMPTY_BOTTLE_e)
|
dComIfGp_getSelectItem(tmp) == dItemNo_EMPTY_BOTTLE_e)
|
||||||
@@ -18747,7 +18747,7 @@ int daAlink_c::execute() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 2; i++) {
|
for (int i = 0; i < SELECT_ITEM_NUM; i++) {
|
||||||
if (!(mUseButtonFlags & (1 << i)) && !(field_0x2faf & (1 << i))) {
|
if (!(mUseButtonFlags & (1 << i)) && !(field_0x2faf & (1 << i))) {
|
||||||
dMeter2Info_offUseButton(METER2_USEBUTTON_X << i);
|
dMeter2Info_offUseButton(METER2_USEBUTTON_X << i);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4121,7 +4121,7 @@ int daAlink_c::procDungeonWarpReadyInit() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fpc_ProcID id;
|
fpc_ProcID id;
|
||||||
if (checkItemSetButton(dItemNo_DUNGEON_EXIT_e) != 2) {
|
if (checkItemSetButton(dItemNo_DUNGEON_EXIT_e) != 3) {
|
||||||
id = fopAcM_create(fpcNm_OBJ_TKS_e, 0, ¤t.pos, fopAcM_GetRoomNo(this), &shape_angle,
|
id = fopAcM_create(fpcNm_OBJ_TKS_e, 0, ¤t.pos, fopAcM_GetRoomNo(this), &shape_angle,
|
||||||
NULL, -1);
|
NULL, -1);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -211,7 +211,7 @@ int daAlink_c::procSpinnerWait() {
|
|||||||
mProcVar3.field_0x300e = shape_angle.y;
|
mProcVar3.field_0x300e = shape_angle.y;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (checkSetItemTrigger(dItemNo_SPINNER_e) || swordSwingTrigger() || itemSetBtn == 2) {
|
if (checkSetItemTrigger(dItemNo_SPINNER_e) || swordSwingTrigger() || itemSetBtn == SELECT_ITEM_NUM) {
|
||||||
if (swordSwingTrigger()) {
|
if (swordSwingTrigger()) {
|
||||||
swordEquip(0);
|
swordEquip(0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,7 +77,12 @@ int daAlink_c::loadModelDVD() {
|
|||||||
mpWlMidnaHairModel = NULL;
|
mpWlMidnaHairModel = NULL;
|
||||||
|
|
||||||
if (!checkNoResetFlg2(FLG2_UNK_280000)) {
|
if (!checkNoResetFlg2(FLG2_UNK_280000)) {
|
||||||
dComIfG_resDelete(&mPhaseReq, mArcName);
|
if (!dComIfG_resDelete(&mPhaseReq, mArcName)) {
|
||||||
|
#if TARGET_PC
|
||||||
|
// resDelete no-ops if load was in-progress; force-unregister before freeAll
|
||||||
|
dComIfG_deleteObjectResMain(mArcName);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
cPhs_Reset(&mPhaseReq);
|
cPhs_Reset(&mPhaseReq);
|
||||||
mpArcHeap->freeAll();
|
mpArcHeap->freeAll();
|
||||||
|
|
||||||
|
|||||||
@@ -8723,6 +8723,12 @@ int daAlink_c::procWolfCargoCarry() {
|
|||||||
return checkNextActionWolf(0);
|
return checkNextActionWolf(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if TARGET_PC
|
||||||
|
if (field_0x280c.getActor() == NULL) {
|
||||||
|
return checkNextActionWolf(0);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
mDoMtx_stack_c::copy(((e_yc_class*)field_0x280c.getActor())->getLegR3Mtx());
|
mDoMtx_stack_c::copy(((e_yc_class*)field_0x280c.getActor())->getLegR3Mtx());
|
||||||
mDoMtx_stack_c::transM(-9.0f, -7.0f, -30.0f);
|
mDoMtx_stack_c::transM(-9.0f, -7.0f, -30.0f);
|
||||||
mDoMtx_stack_c::multVecZero(¤t.pos);
|
mDoMtx_stack_c::multVecZero(¤t.pos);
|
||||||
|
|||||||
@@ -7053,6 +7053,12 @@ static int daE_RD_IsDelete(e_rd_class*) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int daE_RD_Delete(e_rd_class* i_this) {
|
static int daE_RD_Delete(e_rd_class* i_this) {
|
||||||
|
#if TARGET_PC
|
||||||
|
if (boss == i_this) {
|
||||||
|
boss = NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
fopEn_enemy_c* enemy = (fopEn_enemy_c*)&i_this->enemy;
|
fopEn_enemy_c* enemy = (fopEn_enemy_c*)&i_this->enemy;
|
||||||
fopAcM_RegisterDeleteID(i_this, "E_RD");
|
fopAcM_RegisterDeleteID(i_this, "E_RD");
|
||||||
|
|
||||||
|
|||||||
@@ -1952,18 +1952,7 @@ u8 dComIfGs_getMixItemIndex(int i_no) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void dComIfGp_setSelectItem(int i_selItemIdx) {
|
void dComIfGp_setSelectItem(int i_selItemIdx) {
|
||||||
if (i_selItemIdx == SELECT_ITEM_DOWN) {
|
if (dComIfGs_getSelectItemIndex(i_selItemIdx) != 0xFF) {
|
||||||
if (dComIfGs_getSelectItemIndex(i_selItemIdx) != 0xFF) {
|
|
||||||
u8 selItem_slotNo = dComIfGs_getSelectItemIndex(i_selItemIdx);
|
|
||||||
g_dComIfG_gameInfo.play.setSelectItem(i_selItemIdx, selItem_slotNo);
|
|
||||||
|
|
||||||
if (selItem_slotNo == 0xFF) {
|
|
||||||
dComIfGs_setSelectItemIndex(i_selItemIdx, 0xFF);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
g_dComIfG_gameInfo.play.setSelectItem(i_selItemIdx, dItemNo_NONE_e);
|
|
||||||
}
|
|
||||||
} else if (dComIfGs_getSelectItemIndex(i_selItemIdx) != 0xFF) {
|
|
||||||
u8 item = dComIfGs_getItem(dComIfGs_getSelectItemIndex(i_selItemIdx), false);
|
u8 item = dComIfGs_getItem(dComIfGs_getSelectItemIndex(i_selItemIdx), false);
|
||||||
g_dComIfG_gameInfo.play.setSelectItem(i_selItemIdx, item);
|
g_dComIfG_gameInfo.play.setSelectItem(i_selItemIdx, item);
|
||||||
|
|
||||||
@@ -1978,7 +1967,8 @@ void dComIfGp_setSelectItem(int i_selItemIdx) {
|
|||||||
u8 dComIfGp_getSelectItem(int i_selItemIdx) {
|
u8 dComIfGp_getSelectItem(int i_selItemIdx) {
|
||||||
u8 playItem = g_dComIfG_gameInfo.play.getSelectItem(i_selItemIdx);
|
u8 playItem = g_dComIfG_gameInfo.play.getSelectItem(i_selItemIdx);
|
||||||
|
|
||||||
if ((i_selItemIdx == SELECT_ITEM_X || i_selItemIdx == SELECT_ITEM_Y) &&
|
if ((i_selItemIdx == SELECT_ITEM_X || i_selItemIdx == SELECT_ITEM_Y ||
|
||||||
|
i_selItemIdx == SELECT_ITEM_Z) &&
|
||||||
dComIfGs_getMixItemIndex(i_selItemIdx) != 0xFF)
|
dComIfGs_getMixItemIndex(i_selItemIdx) != 0xFF)
|
||||||
{
|
{
|
||||||
u8 saveItem = dComIfGs_getItem(dComIfGs_getMixItemIndex(i_selItemIdx), false);
|
u8 saveItem = dComIfGs_getItem(dComIfGs_getMixItemIndex(i_selItemIdx), false);
|
||||||
|
|||||||
@@ -3882,7 +3882,11 @@ bool dCamera_c::hintTalkEvCamera() {
|
|||||||
|
|
||||||
cSAngle acStack_1fc(20.0f);
|
cSAngle acStack_1fc(20.0f);
|
||||||
for (i = 0; i < 2; i++) {
|
for (i = 0; i < 2; i++) {
|
||||||
|
#if AVOID_UB
|
||||||
|
for (j = 0; j < 10; j++) {
|
||||||
|
#else
|
||||||
for (j = 0; j < 12; j++) {
|
for (j = 0; j < 12; j++) {
|
||||||
|
#endif
|
||||||
cSAngle acStack_200(local_b0[j] * fVar22);
|
cSAngle acStack_200(local_b0[j] * fVar22);
|
||||||
hintTalk->mDirection.U(acStack_1f8 + acStack_200);
|
hintTalk->mDirection.U(acStack_1f8 + acStack_200);
|
||||||
hintTalk->mDirection.V(((hintTalk->field_0x28.V() * acStack_200.Cos()) * 0.2f) + acStack_1fc);
|
hintTalk->mDirection.V(((hintTalk->field_0x28.V() * acStack_200.Cos()) * 0.2f) + acStack_1fc);
|
||||||
|
|||||||
@@ -287,6 +287,10 @@ int dEvt_control_c::talkXyCheck(dEvt_order_c* order) {
|
|||||||
mTalkXyType = 2;
|
mTalkXyType = 2;
|
||||||
itemIndex = SELECT_ITEM_Y;
|
itemIndex = SELECT_ITEM_Y;
|
||||||
break;
|
break;
|
||||||
|
case dEvt_type_SHOWITEM_Z_e:
|
||||||
|
mTalkXyType = 3;
|
||||||
|
itemIndex = SELECT_ITEM_Z;
|
||||||
|
break;
|
||||||
#if PLATFORM_WII || PLATFORM_SHIELD
|
#if PLATFORM_WII || PLATFORM_SHIELD
|
||||||
case 8:
|
case 8:
|
||||||
mTalkXyType = 3;
|
mTalkXyType = 3;
|
||||||
|
|||||||
@@ -446,7 +446,7 @@ void dMenu_ItemExplain_c::move_proc() {
|
|||||||
if (field_0xe7 == 0) {
|
if (field_0xe7 == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!mDoCPd_c::getTrigX(PAD_1) && !mDoCPd_c::getTrigY(PAD_1)) {
|
if (!mDoCPd_c::getTrigX(PAD_1) && !mDoCPd_c::getTrigY(PAD_1) && !mDoCPd_c::getTrigZ(PAD_1)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -460,6 +460,8 @@ void dMenu_ItemExplain_c::move_proc() {
|
|||||||
mEndButton = 3;
|
mEndButton = 3;
|
||||||
} else if (mDoCPd_c::getTrigY(PAD_1)) {
|
} else if (mDoCPd_c::getTrigY(PAD_1)) {
|
||||||
mEndButton = 4;
|
mEndButton = 4;
|
||||||
|
} else if (mDoCPd_c::getTrigZ(PAD_1)) {
|
||||||
|
mEndButton = 5;
|
||||||
}
|
}
|
||||||
mStatus = 5;
|
mStatus = 5;
|
||||||
Z2GetAudioMgr()->seStart(Z2SE_SY_EXP_WIN_CLOSE, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
Z2GetAudioMgr()->seStart(Z2SE_SY_EXP_WIN_CLOSE, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
||||||
|
|||||||
+45
-15
@@ -134,7 +134,7 @@ dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i
|
|||||||
field_0x6a9 = 0;
|
field_0x6a9 = 0;
|
||||||
mXButtonSlot = 0xff;
|
mXButtonSlot = 0xff;
|
||||||
mYButtonSlot = 0xff;
|
mYButtonSlot = 0xff;
|
||||||
field_0x6ac = 0xff;
|
mZButtonSlot = 0xff;
|
||||||
field_0x6ad = 0xff;
|
field_0x6ad = 0xff;
|
||||||
field_0x670 = 0;
|
field_0x670 = 0;
|
||||||
field_0x67e = 0;
|
field_0x67e = 0;
|
||||||
@@ -244,8 +244,8 @@ dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i
|
|||||||
if (dComIfGs_getSelectItemIndex(1) == dComIfGs_getLineUpItem(i)) {
|
if (dComIfGs_getSelectItemIndex(1) == dComIfGs_getLineUpItem(i)) {
|
||||||
mYButtonSlot = i;
|
mYButtonSlot = i;
|
||||||
}
|
}
|
||||||
if (dComIfGs_getSelectItemIndex(2) == dComIfGs_getWolfAbility(i)) {
|
if (dComIfGs_getSelectItemIndex(2) == dComIfGs_getLineUpItem(i)) {
|
||||||
field_0x6ac = i;
|
mZButtonSlot = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mRingRadiusH = g_ringHIO.mRingRadiusH;
|
mRingRadiusH = g_ringHIO.mRingRadiusH;
|
||||||
@@ -259,7 +259,7 @@ dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
field_0x6be[i] = 0;
|
field_0x6be[i] = 0;
|
||||||
if (i == 2) {
|
if (i == MAX_SELECT_ITEM) {
|
||||||
setSelectItem(i, 0);
|
setSelectItem(i, 0);
|
||||||
} else {
|
} else {
|
||||||
setSelectItem(i, 0x43);
|
setSelectItem(i, 0x43);
|
||||||
@@ -977,8 +977,8 @@ void dMenu_Ring_c::setItem() {
|
|||||||
} else {
|
} else {
|
||||||
uVar2 = dItemNo_NONE_e;
|
uVar2 = dItemNo_NONE_e;
|
||||||
}
|
}
|
||||||
if (field_0x6ac != dItemNo_NONE_e) {
|
if (mZButtonSlot != dItemNo_NONE_e) {
|
||||||
uVar3 = mItemSlots[field_0x6ac];
|
uVar3 = mItemSlots[mZButtonSlot];
|
||||||
} else {
|
} else {
|
||||||
uVar3 = dItemNo_NONE_e;
|
uVar3 = dItemNo_NONE_e;
|
||||||
}
|
}
|
||||||
@@ -1058,6 +1058,9 @@ void dMenu_Ring_c::setItem() {
|
|||||||
mixItemIndex1 = dItemNo_NONE_e;
|
mixItemIndex1 = dItemNo_NONE_e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (field_0x6b3 == 2) {
|
||||||
|
mZButtonSlot = mCurrentSlot;
|
||||||
|
uVar3 = mItemSlots[mZButtonSlot];
|
||||||
}
|
}
|
||||||
field_0x6b4[0] = uVar1;
|
field_0x6b4[0] = uVar1;
|
||||||
field_0x6b4[1] = uVar2;
|
field_0x6b4[1] = uVar2;
|
||||||
@@ -1073,7 +1076,7 @@ void dMenu_Ring_c::setItem() {
|
|||||||
|
|
||||||
void dMenu_Ring_c::setJumpItem(bool i_useVibrationM) {
|
void dMenu_Ring_c::setJumpItem(bool i_useVibrationM) {
|
||||||
for (int i = 0; i < 4; i++) {
|
for (int i = 0; i < 4; i++) {
|
||||||
if (i == 2) {
|
if (i == 4) {
|
||||||
setSelectItem(i, field_0x6b4[i]);
|
setSelectItem(i, field_0x6b4[i]);
|
||||||
} else if (i == field_0x6cd) {
|
} else if (i == field_0x6cd) {
|
||||||
setSelectItem(i, getItem(field_0x6cb, 0));
|
setSelectItem(i, getItem(field_0x6cb, 0));
|
||||||
@@ -1089,9 +1092,9 @@ void dMenu_Ring_c::setJumpItem(bool i_useVibrationM) {
|
|||||||
field_0x518[1] = mItemSlotPosX[mYButtonSlot];
|
field_0x518[1] = mItemSlotPosX[mYButtonSlot];
|
||||||
field_0x528[1] = mItemSlotPosY[mYButtonSlot];
|
field_0x528[1] = mItemSlotPosY[mYButtonSlot];
|
||||||
}
|
}
|
||||||
if (field_0x6ac != dItemNo_NONE_e) {
|
if (mZButtonSlot != dItemNo_NONE_e) {
|
||||||
field_0x518[2] = mItemSlotPosX[field_0x6ac];
|
field_0x518[2] = mItemSlotPosX[mZButtonSlot];
|
||||||
field_0x528[2] = mItemSlotPosY[field_0x6ac];
|
field_0x528[2] = mItemSlotPosY[mZButtonSlot];
|
||||||
}
|
}
|
||||||
if (field_0x6ad != dItemNo_NONE_e) {
|
if (field_0x6ad != dItemNo_NONE_e) {
|
||||||
field_0x518[3] = mItemSlotPosX[field_0x6ad];
|
field_0x518[3] = mItemSlotPosX[field_0x6ad];
|
||||||
@@ -1117,9 +1120,21 @@ void dMenu_Ring_c::setJumpItem(bool i_useVibrationM) {
|
|||||||
field_0x674[1] = 1;
|
field_0x674[1] = 1;
|
||||||
#if TARGET_PC
|
#if TARGET_PC
|
||||||
mSelectItemSlideElapsed[1] = 0.0f;
|
mSelectItemSlideElapsed[1] = 0.0f;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
} else if (field_0x6b3 == 2) {
|
||||||
|
field_0x538[0] = g_ringHIO.mUnselectItemScale;
|
||||||
|
field_0x538[1] = g_ringHIO.mSelectItemScale;
|
||||||
|
if (field_0x6b4[2] != dComIfGs_getSelectItemIndex(2) ||
|
||||||
|
field_0x6b8[2] != dComIfGs_getMixItemIndex(2))
|
||||||
|
{
|
||||||
|
field_0x674[2] = 1;
|
||||||
|
#if TARGET_PC
|
||||||
|
mSelectItemSlideElapsed[2] = 0.0f;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (field_0x674[0] == 1) {
|
if (field_0x674[0] == 1) {
|
||||||
if (i_useVibrationM) {
|
if (i_useVibrationM) {
|
||||||
dMeter2Info_set2DVibrationM();
|
dMeter2Info_set2DVibrationM();
|
||||||
@@ -1160,7 +1175,7 @@ void dMenu_Ring_c::setScale() {
|
|||||||
}
|
}
|
||||||
setNameString(itemId);
|
setNameString(itemId);
|
||||||
setItemScale(i, g_ringHIO.mUnselectItemScale);
|
setItemScale(i, g_ringHIO.mUnselectItemScale);
|
||||||
for (int j = 0; j < 2; j++) {
|
for (int j = 0; j < SELECT_ITEM_NUM; j++) {
|
||||||
if (j == field_0x6cf) {
|
if (j == field_0x6cf) {
|
||||||
setButtonScale(j, g_ringHIO.mSelectButtonScale);
|
setButtonScale(j, g_ringHIO.mSelectButtonScale);
|
||||||
} else {
|
} else {
|
||||||
@@ -1180,7 +1195,7 @@ void dMenu_Ring_c::setScale() {
|
|||||||
} else {
|
} else {
|
||||||
setItemScale(i, g_ringHIO.mUnselectItemScale);
|
setItemScale(i, g_ringHIO.mUnselectItemScale);
|
||||||
}
|
}
|
||||||
for (int j = 0; j < 2; j++) {
|
for (int j = 0; j < SELECT_ITEM_NUM; j++) {
|
||||||
setButtonScale(j, g_ringHIO.mUnselectButtonScale);
|
setButtonScale(j, g_ringHIO.mUnselectButtonScale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1214,6 +1229,7 @@ void dMenu_Ring_c::setNameString(u32 i_stringID) {
|
|||||||
|
|
||||||
void dMenu_Ring_c::setActiveCursor() {
|
void dMenu_Ring_c::setActiveCursor() {
|
||||||
u8 item = dComIfGs_getItem(mItemSlots[mCurrentSlot], false);
|
u8 item = dComIfGs_getItem(mItemSlots[mCurrentSlot], false);
|
||||||
|
|
||||||
if (mStatus == STATUS_WAIT && mOldStatus != STATUS_EXPLAIN_FORCE && mOldStatus != STATUS_EXPLAIN && mpItemExplain->getStatus() == 0) {
|
if (mStatus == STATUS_WAIT && mOldStatus != STATUS_EXPLAIN_FORCE && mOldStatus != STATUS_EXPLAIN && mpItemExplain->getStatus() == 0) {
|
||||||
if (mDoCPd_c::getTrigR(PAD_1) && !mPlayerIsWolf && item != dItemNo_NONE_e) {
|
if (mDoCPd_c::getTrigR(PAD_1) && !mPlayerIsWolf && item != dItemNo_NONE_e) {
|
||||||
for (int i = 0; i < MAX_SELECT_ITEM; i++) {
|
for (int i = 0; i < MAX_SELECT_ITEM; i++) {
|
||||||
@@ -1244,7 +1260,21 @@ void dMenu_Ring_c::setActiveCursor() {
|
|||||||
(this->*stick_init[mStatus])();
|
(this->*stick_init[mStatus])();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (mDoCPd_c::getTrigX(PAD_1) || mDoCPd_c::getTrigY(PAD_1)) {
|
} else if (mDoCPd_c::getTrigZ(PAD_1) && !mPlayerIsWolf && item != dItemNo_NONE_e) {
|
||||||
|
for (int i = 0; i < MAX_SELECT_ITEM; i++) {
|
||||||
|
setSelectItemForce(i);
|
||||||
|
}
|
||||||
|
field_0x6b3 = 2;
|
||||||
|
if (!checkCombineBomb(field_0x6b3)) {
|
||||||
|
setItem();
|
||||||
|
if (mpItemExplain->getStatus() == 0) {
|
||||||
|
setStatus(STATUS_WAIT);
|
||||||
|
(this->*stick_init[mStatus])();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (mDoCPd_c::getTrigX(PAD_1) || mDoCPd_c::getTrigY(PAD_1) ||
|
||||||
|
mDoCPd_c::getTrigZ(PAD_1))
|
||||||
|
{
|
||||||
// If the player is a wolf or somehow manages to access an item slot with no item, error
|
// If the player is a wolf or somehow manages to access an item slot with no item, error
|
||||||
Z2GetAudioMgr()->seStart(Z2SE_SYS_ERROR, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
Z2GetAudioMgr()->seStart(Z2SE_SYS_ERROR, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
||||||
}
|
}
|
||||||
@@ -1660,7 +1690,7 @@ void dMenu_Ring_c::drawSelectItem() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void dMenu_Ring_c::setSelectItemForce(int i_idx) {
|
void dMenu_Ring_c::setSelectItemForce(int i_idx) {
|
||||||
if (i_idx == 2) {
|
if (i_idx == SELECT_ITEM_NUM) {
|
||||||
if (field_0x674[i_idx] != 0) {
|
if (field_0x674[i_idx] != 0) {
|
||||||
dComIfGs_setSelectItemIndex(i_idx, field_0x6b4[i_idx]);
|
dComIfGs_setSelectItemIndex(i_idx, field_0x6b4[i_idx]);
|
||||||
field_0x674[i_idx] = 0;
|
field_0x674[i_idx] = 0;
|
||||||
@@ -1669,7 +1699,7 @@ void dMenu_Ring_c::setSelectItemForce(int i_idx) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
} else if (field_0x674[i_idx] != 0) {
|
} else if (field_0x674[i_idx] != 0) {
|
||||||
for (int i = 0; i < 2; i++) {
|
for (int i = 0; i < SELECT_ITEM_NUM; i++) {
|
||||||
dComIfGs_setMixItemIndex(i, field_0x6b8[i]);
|
dComIfGs_setMixItemIndex(i, field_0x6b8[i]);
|
||||||
dComIfGs_setSelectItemIndex(i, field_0x6b4[i]);
|
dComIfGs_setSelectItemIndex(i, field_0x6b4[i]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1533,6 +1533,8 @@ void dMeter2Info_c::setMiniGameItem(u8 i_minigameFlag) {
|
|||||||
if (mMiniGameItemSetFlag != 3) {
|
if (mMiniGameItemSetFlag != 3) {
|
||||||
dComIfGs_setItem(SLOT_4, dItemNo_BOW_e);
|
dComIfGs_setItem(SLOT_4, dItemNo_BOW_e);
|
||||||
dComIfGp_setItem(SLOT_4, dItemNo_BOW_e);
|
dComIfGp_setItem(SLOT_4, dItemNo_BOW_e);
|
||||||
|
dComIfGs_setMixItemIndex(SELECT_ITEM_Z, 0xFF);
|
||||||
|
dComIfGs_setSelectItemIndex(SELECT_ITEM_Z, 0xFF);
|
||||||
dComIfGs_setMixItemIndex(SELECT_ITEM_Y, 0xFF);
|
dComIfGs_setMixItemIndex(SELECT_ITEM_Y, 0xFF);
|
||||||
dComIfGs_setSelectItemIndex(SELECT_ITEM_Y, 0xFF);
|
dComIfGs_setSelectItemIndex(SELECT_ITEM_Y, 0xFF);
|
||||||
dComIfGs_setMixItemIndex(SELECT_ITEM_X, SLOT_4);
|
dComIfGs_setMixItemIndex(SELECT_ITEM_X, SLOT_4);
|
||||||
|
|||||||
+10
-4
@@ -26,8 +26,12 @@ void updateAutoSave() {
|
|||||||
(AutoSaveFuncsProc[mAutoSaveProc])();
|
(AutoSaveFuncsProc[mAutoSaveProc])();
|
||||||
}
|
}
|
||||||
|
|
||||||
void writeAutoSave() {
|
bool writeAutoSave() {
|
||||||
int stageNo = dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo());
|
stage_stag_info_class* stagInfo = dComIfGp_getStageStagInfo();
|
||||||
|
if (stagInfo == nullptr) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
int stageNo = dStage_stagInfo_GetSaveTbl(stagInfo);
|
||||||
|
|
||||||
dComIfGs_putSave(stageNo);
|
dComIfGs_putSave(stageNo);
|
||||||
dComIfGs_setMemoryToCard(mSaveBuffer, dComIfGs_getDataNum());
|
dComIfGs_setMemoryToCard(mSaveBuffer, dComIfGs_getDataNum());
|
||||||
@@ -40,6 +44,7 @@ void writeAutoSave() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
g_mDoMemCd_control.save(mSaveBuffer, sizeof(mSaveBuffer), 0);
|
g_mDoMemCd_control.save(mSaveBuffer, sizeof(mSaveBuffer), 0);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void autoSaving() {
|
void autoSaving() {
|
||||||
@@ -48,8 +53,9 @@ void autoSaving() {
|
|||||||
if (cardState == 2) {
|
if (cardState == 2) {
|
||||||
mAutoSaveProc = 1;
|
mAutoSaveProc = 1;
|
||||||
} else if (cardState == 1) {
|
} else if (cardState == 1) {
|
||||||
writeAutoSave();
|
if (writeAutoSave()) {
|
||||||
mAutoSaveProc = 3;
|
mAutoSaveProc = 3;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+43
-23
@@ -78,6 +78,7 @@ struct MigrationStats {
|
|||||||
|
|
||||||
std::optional<std::filesystem::path> sConfiguredDataPath;
|
std::optional<std::filesystem::path> sConfiguredDataPath;
|
||||||
std::optional<std::filesystem::path> sActiveDescriptorPath;
|
std::optional<std::filesystem::path> sActiveDescriptorPath;
|
||||||
|
std::optional<std::filesystem::path> sActivePrefPath;
|
||||||
|
|
||||||
std::filesystem::path path_from_utf8(std::string_view value) {
|
std::filesystem::path path_from_utf8(std::string_view value) {
|
||||||
return std::filesystem::path{
|
return std::filesystem::path{
|
||||||
@@ -86,19 +87,22 @@ std::filesystem::path path_from_utf8(std::string_view value) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
std::filesystem::path get_legacy_path() {
|
std::filesystem::path legacy_path_for_pref_path(const std::filesystem::path& prefPath) {
|
||||||
if (std::string_view{LegacyAppName}.empty()) {
|
if (std::string_view{LegacyAppName}.empty() || prefPath.empty()) {
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
char* prefPath = SDL_GetPrefPath(OrgName, LegacyAppName);
|
auto normalizedPrefPath = prefPath;
|
||||||
if (!prefPath) {
|
if (normalizedPrefPath.filename().empty()) {
|
||||||
Log.fatal("Unable to get PrefPath: {}", SDL_GetError());
|
normalizedPrefPath = normalizedPrefPath.parent_path();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::filesystem::path result{reinterpret_cast<const char8_t*>(prefPath)};
|
const auto parentPath = normalizedPrefPath.parent_path();
|
||||||
SDL_free(prefPath);
|
if (parentPath.empty()) {
|
||||||
return result;
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
return parentPath / LegacyAppName;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::filesystem::path get_pref_path() {
|
std::filesystem::path get_pref_path() {
|
||||||
@@ -112,6 +116,13 @@ std::filesystem::path get_pref_path() {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::filesystem::path active_pref_path() {
|
||||||
|
if (sActivePrefPath) {
|
||||||
|
return *sActivePrefPath;
|
||||||
|
}
|
||||||
|
return get_pref_path();
|
||||||
|
}
|
||||||
|
|
||||||
std::filesystem::path base_path_relative(const std::filesystem::path& path) {
|
std::filesystem::path base_path_relative(const std::filesystem::path& path) {
|
||||||
const auto* basePath = SDL_GetBasePath();
|
const auto* basePath = SDL_GetBasePath();
|
||||||
if (!basePath) {
|
if (!basePath) {
|
||||||
@@ -265,12 +276,12 @@ std::filesystem::path absolute_path(const std::filesystem::path& path) {
|
|||||||
return absolute.lexically_normal();
|
return absolute.lexically_normal();
|
||||||
}
|
}
|
||||||
|
|
||||||
void rename_legacy_pref_path(
|
std::filesystem::path rename_legacy_pref_path(
|
||||||
const std::filesystem::path& legacyPath, const std::filesystem::path& prefPath) {
|
const std::filesystem::path& legacyPath, const std::filesystem::path& prefPath) {
|
||||||
if (legacyPath.empty() || prefPath.empty() ||
|
if (legacyPath.empty() || prefPath.empty() ||
|
||||||
normalized_path(legacyPath) == normalized_path(prefPath))
|
normalized_path(legacyPath) == normalized_path(prefPath))
|
||||||
{
|
{
|
||||||
return;
|
return prefPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::error_code ec;
|
std::error_code ec;
|
||||||
@@ -279,14 +290,14 @@ void rename_legacy_pref_path(
|
|||||||
Log.warn("Failed to inspect legacy data directory '{}': {}",
|
Log.warn("Failed to inspect legacy data directory '{}': {}",
|
||||||
io::fs_path_to_string(legacyPath), ec.message());
|
io::fs_path_to_string(legacyPath), ec.message());
|
||||||
}
|
}
|
||||||
return;
|
return prefPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool prefExists = std::filesystem::exists(prefPath, ec);
|
const bool prefExists = std::filesystem::exists(prefPath, ec);
|
||||||
if (ec) {
|
if (ec) {
|
||||||
Log.warn("Failed to inspect data directory '{}': {}", io::fs_path_to_string(prefPath),
|
Log.warn("Failed to inspect data directory '{}': {}", io::fs_path_to_string(prefPath),
|
||||||
ec.message());
|
ec.message());
|
||||||
return;
|
return prefPath;
|
||||||
}
|
}
|
||||||
if (prefExists) {
|
if (prefExists) {
|
||||||
if (!std::filesystem::is_directory(prefPath, ec) ||
|
if (!std::filesystem::is_directory(prefPath, ec) ||
|
||||||
@@ -299,14 +310,14 @@ void rename_legacy_pref_path(
|
|||||||
Log.info("Skipping legacy data directory rename because '{}' is not empty",
|
Log.info("Skipping legacy data directory rename because '{}' is not empty",
|
||||||
io::fs_path_to_string(prefPath));
|
io::fs_path_to_string(prefPath));
|
||||||
}
|
}
|
||||||
return;
|
return prefPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::filesystem::remove(prefPath, ec);
|
std::filesystem::remove(prefPath, ec);
|
||||||
if (ec) {
|
if (ec) {
|
||||||
Log.warn("Failed to remove empty data directory '{}' before legacy rename: {}",
|
Log.warn("Failed to remove empty data directory '{}' before legacy rename: {}",
|
||||||
io::fs_path_to_string(prefPath), ec.message());
|
io::fs_path_to_string(prefPath), ec.message());
|
||||||
return;
|
return prefPath;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -314,11 +325,18 @@ void rename_legacy_pref_path(
|
|||||||
if (ec) {
|
if (ec) {
|
||||||
Log.warn("Failed to rename legacy data directory '{}' to '{}': {}",
|
Log.warn("Failed to rename legacy data directory '{}' to '{}': {}",
|
||||||
io::fs_path_to_string(legacyPath), io::fs_path_to_string(prefPath), ec.message());
|
io::fs_path_to_string(legacyPath), io::fs_path_to_string(prefPath), ec.message());
|
||||||
return;
|
ec.clear();
|
||||||
|
if (!std::filesystem::exists(prefPath, ec) && !ec) {
|
||||||
|
Log.info("Using legacy data directory '{}' because the new data directory is absent",
|
||||||
|
io::fs_path_to_string(legacyPath));
|
||||||
|
return legacyPath;
|
||||||
|
}
|
||||||
|
return prefPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.info("Renamed legacy data directory '{}' to '{}'", io::fs_path_to_string(legacyPath),
|
Log.info("Renamed legacy data directory '{}' to '{}'", io::fs_path_to_string(legacyPath),
|
||||||
io::fs_path_to_string(prefPath));
|
io::fs_path_to_string(prefPath));
|
||||||
|
return prefPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is_same_or_inside(const std::filesystem::path& root, const std::filesystem::path& path) {
|
bool is_same_or_inside(const std::filesystem::path& root, const std::filesystem::path& path) {
|
||||||
@@ -394,7 +412,7 @@ std::filesystem::path current_data_path() {
|
|||||||
if (!ConfigPath.empty()) {
|
if (!ConfigPath.empty()) {
|
||||||
return ConfigPath;
|
return ConfigPath;
|
||||||
}
|
}
|
||||||
const auto prefPath = get_pref_path();
|
const auto prefPath = active_pref_path();
|
||||||
const auto descriptor = read_location_descriptor(prefPath);
|
const auto descriptor = read_location_descriptor(prefPath);
|
||||||
if (descriptor) {
|
if (descriptor) {
|
||||||
sActiveDescriptorPath = descriptor->path;
|
sActiveDescriptorPath = descriptor->path;
|
||||||
@@ -460,7 +478,7 @@ bool write_location_descriptor(LocationMode mode, const std::filesystem::path& t
|
|||||||
json["previousPath"] = io::fs_path_to_string(descriptor.previousPath);
|
json["previousPath"] = io::fs_path_to_string(descriptor.previousPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto prefPath = get_pref_path();
|
const auto prefPath = active_pref_path();
|
||||||
for (const auto& path : descriptor_write_paths(prefPath)) {
|
for (const auto& path : descriptor_write_paths(prefPath)) {
|
||||||
if (write_descriptor_json(path, json)) {
|
if (write_descriptor_json(path, json)) {
|
||||||
sActiveDescriptorPath = path;
|
sActiveDescriptorPath = path;
|
||||||
@@ -1013,12 +1031,12 @@ bool set_portable_data_path() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool reset_data_path() {
|
bool reset_data_path() {
|
||||||
const auto prefPath = get_pref_path();
|
const auto prefPath = active_pref_path();
|
||||||
return write_location_descriptor(LocationMode::Default, default_data_path(prefPath));
|
return write_location_descriptor(LocationMode::Default, default_data_path(prefPath));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is_default_data_path() {
|
bool is_default_data_path() {
|
||||||
const auto prefPath = get_pref_path();
|
const auto prefPath = active_pref_path();
|
||||||
return normalized_path(configured_data_path()) == normalized_path(default_data_path(prefPath));
|
return normalized_path(configured_data_path()) == normalized_path(default_data_path(prefPath));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1027,7 +1045,7 @@ std::filesystem::path configured_data_path() {
|
|||||||
return *sConfiguredDataPath;
|
return *sConfiguredDataPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto prefPath = get_pref_path();
|
const auto prefPath = active_pref_path();
|
||||||
const auto descriptor = read_location_descriptor(prefPath);
|
const auto descriptor = read_location_descriptor(prefPath);
|
||||||
if (descriptor) {
|
if (descriptor) {
|
||||||
sActiveDescriptorPath = descriptor->path;
|
sActiveDescriptorPath = descriptor->path;
|
||||||
@@ -1041,7 +1059,7 @@ std::filesystem::path cache_path() {
|
|||||||
if (!CachePath.empty()) {
|
if (!CachePath.empty()) {
|
||||||
return CachePath;
|
return CachePath;
|
||||||
}
|
}
|
||||||
return get_pref_path();
|
return active_pref_path();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is_data_path_restart_pending() {
|
bool is_data_path_restart_pending() {
|
||||||
@@ -1053,8 +1071,10 @@ bool is_data_path_restart_pending() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Paths initialize_data() {
|
Paths initialize_data() {
|
||||||
const auto prefPath = get_pref_path();
|
const auto preferredPrefPath = get_pref_path();
|
||||||
rename_legacy_pref_path(get_legacy_path(), prefPath);
|
const auto prefPath =
|
||||||
|
rename_legacy_pref_path(legacy_path_for_pref_path(preferredPrefPath), preferredPrefPath);
|
||||||
|
sActivePrefPath = prefPath;
|
||||||
|
|
||||||
const auto descriptor = read_location_descriptor(prefPath);
|
const auto descriptor = read_location_descriptor(prefPath);
|
||||||
if (descriptor) {
|
if (descriptor) {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ UserSettings g_userSettings = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
.audio = {
|
.audio = {
|
||||||
.masterVolume {"audio.masterVolume", 80},
|
.masterVolume {"audio.masterVolume", 60},
|
||||||
.mainMusicVolume {"audio.mainMusicVolume", 100},
|
.mainMusicVolume {"audio.mainMusicVolume", 100},
|
||||||
.subMusicVolume {"audio.subMusicVolume", 100},
|
.subMusicVolume {"audio.subMusicVolume", 100},
|
||||||
.soundEffectsVolume {"audio.soundEffectsVolume", 100},
|
.soundEffectsVolume {"audio.soundEffectsVolume", 100},
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ Rml::String format_graphics_setting_value(GraphicsOption option, int value) {
|
|||||||
case BloomMode::Classic:
|
case BloomMode::Classic:
|
||||||
return "Classic";
|
return "Classic";
|
||||||
case BloomMode::Dusk:
|
case BloomMode::Dusk:
|
||||||
return "Dusk";
|
return "Dusklight";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GraphicsOption::BloomMultiplier:
|
case GraphicsOption::BloomMultiplier:
|
||||||
|
|||||||
@@ -354,8 +354,9 @@ void Overlay::update() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u32 count = 0;
|
||||||
const bool showControllerWarning = PADGetIndexForPort(PAD_CHAN0) < 0 &&
|
const bool showControllerWarning = PADGetIndexForPort(PAD_CHAN0) < 0 &&
|
||||||
PADGetKeyButtonBindings(PAD_CHAN0, nullptr) == nullptr &&
|
PADGetKeyButtonBindings(PAD_CHAN0, &count) == nullptr &&
|
||||||
dynamic_cast<Window*>(top_document()) == nullptr &&
|
dynamic_cast<Window*>(top_document()) == nullptr &&
|
||||||
dynamic_cast<WindowSmall*>(top_document()) == nullptr;
|
dynamic_cast<WindowSmall*>(top_document()) == nullptr;
|
||||||
if (showControllerWarning && mControllerWarning == nullptr) {
|
if (showControllerWarning && mControllerWarning == nullptr) {
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ PresetWindow::PresetWindow() : WindowSmall("modal", "modal-dialog") {
|
|||||||
"Enhancements disabled to match the GameCube version. "
|
"Enhancements disabled to match the GameCube version. "
|
||||||
"Good for speedrunning or simple nostalgia!",
|
"Good for speedrunning or simple nostalgia!",
|
||||||
applyPresetClassic},
|
applyPresetClassic},
|
||||||
{"Dusk",
|
{"Dusklight",
|
||||||
"Graphics & quality of life tweaks, including some from the Wii U version. "
|
"Graphics & quality of life tweaks, including some from the Wii U version. "
|
||||||
"Our recommended way to play!",
|
"Our recommended way to play!",
|
||||||
applyPresetDusk},
|
applyPresetDusk},
|
||||||
|
|||||||
@@ -953,7 +953,7 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) {
|
|||||||
[](int value) {
|
[](int value) {
|
||||||
getSettings().audio.masterVolume.setValue(value);
|
getSettings().audio.masterVolume.setValue(value);
|
||||||
config::Save();
|
config::Save();
|
||||||
audio::SetMasterVolume(value / 100.f);
|
audio::SetMasterVolume(audio::MasterVolumeToLinear(value / 100.0f));
|
||||||
},
|
},
|
||||||
.isModified =
|
.isModified =
|
||||||
[] {
|
[] {
|
||||||
|
|||||||
+10
-1
@@ -136,8 +136,17 @@ base_process_class* fpcBs_Create(s16 i_profname, fpc_ProcID i_procID, void* i_ap
|
|||||||
u32 size;
|
u32 size;
|
||||||
|
|
||||||
pprofile = (process_profile_definition*)fpcPf_Get(i_profname);
|
pprofile = (process_profile_definition*)fpcPf_Get(i_profname);
|
||||||
|
if (pprofile == NULL) {
|
||||||
|
#if TARGET_PC
|
||||||
|
DuskLog.debug("fpcBs_Create: profile not found for profname={}", i_profname);
|
||||||
|
#endif
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
#if TARGET_PC
|
||||||
|
const char* procName = getProcName(i_profname);
|
||||||
DuskLog.debug("fpcBs_Create: pid={} profname={} ({}) profile={} procSize={} unkSize={}",
|
DuskLog.debug("fpcBs_Create: pid={} profname={} ({}) profile={} procSize={} unkSize={}",
|
||||||
i_procID, getProcName(i_profname), i_profname, (void*)pprofile, pprofile->process_size, pprofile->unk_size);
|
i_procID, procName ? procName : "(unknown)", i_profname, (void*)pprofile, pprofile->process_size, pprofile->unk_size);
|
||||||
|
#endif
|
||||||
size = pprofile->process_size + pprofile->unk_size;
|
size = pprofile->process_size + pprofile->unk_size;
|
||||||
|
|
||||||
pprocess = (base_process_class*)cMl::memalignB(-4, size);
|
pprocess = (base_process_class*)cMl::memalignB(-4, size);
|
||||||
|
|||||||
@@ -585,7 +585,7 @@ int game_main(int argc, char* argv[]) {
|
|||||||
}
|
}
|
||||||
VISetFrameBufferScale(dusk::getSettings().game.internalResolutionScale.getValue());
|
VISetFrameBufferScale(dusk::getSettings().game.internalResolutionScale.getValue());
|
||||||
|
|
||||||
dusk::audio::SetMasterVolume(dusk::getSettings().audio.masterVolume / 100.0f);
|
dusk::audio::SetMasterVolume(dusk::audio::MasterVolumeToLinear(dusk::getSettings().audio.masterVolume / 100.0f));
|
||||||
dusk::audio::SetEnableReverb(dusk::getSettings().audio.enableReverb);
|
dusk::audio::SetEnableReverb(dusk::getSettings().audio.enableReverb);
|
||||||
dusk::audio::EnableHrtf = dusk::getSettings().audio.enableHrtf;
|
dusk::audio::EnableHrtf = dusk::getSettings().audio.enableHrtf;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user