From 729d446789d550be140bcbf342fb7b3957cd15a4 Mon Sep 17 00:00:00 2001 From: Eblo <7004497+Eblo@users.noreply.github.com> Date: Mon, 3 Nov 2025 23:06:59 -0500 Subject: Fix lens actors not showing (#1315) --- mm/src/code/z_actor.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/src/code/z_actor.c b/mm/src/code/z_actor.c index dc7742660..1540456d7 100644 --- a/mm/src/code/z_actor.c +++ b/mm/src/code/z_actor.c @@ -3116,7 +3116,7 @@ void Actor_DrawLensActors(PlayState* play, s32 numLensActors, Actor** lensActors POLY_XLU_DISP = gfx; // BENTODO: Since actor masking is diabled for actors that would normally // be "hidden", we are opting to just not render them at all - if (play->roomCtx.curRoom.lensMode == LENS_MODE_HIDE_ACTORS) { + if (play->roomCtx.curRoom.lensMode == LENS_MODE_SHOW_ACTORS) { Actor_Draw(play, *lensActor); } gfx = POLY_XLU_DISP; -- cgit v1.2.3 From db078cd82022249c643e00c32994977c486ed6ba Mon Sep 17 00:00:00 2001 From: Eblo <7004497+Eblo@users.noreply.github.com> Date: Mon, 3 Nov 2025 23:07:21 -0500 Subject: Restrict Ossan draw hook to Bomb Shop Owner (#1316) --- mm/2s2h/Rando/ActorBehavior/EnSob1.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/2s2h/Rando/ActorBehavior/EnSob1.cpp b/mm/2s2h/Rando/ActorBehavior/EnSob1.cpp index c382457a7..050dc3c70 100644 --- a/mm/2s2h/Rando/ActorBehavior/EnSob1.cpp +++ b/mm/2s2h/Rando/ActorBehavior/EnSob1.cpp @@ -28,7 +28,7 @@ void Rando::ActorBehavior::InitEnSob1Behavior() { }); COND_ID_HOOK(OnActorDraw, ACTOR_EN_OSSAN, IS_RANDO, [](Actor* actor) { - if (RANDO_SAVE_CHECKS[RC_BOMB_SHOP_ITEM_01].shuffled) { + if (RANDO_SAVE_CHECKS[RC_BOMB_SHOP_ITEM_01].shuffled && actor->params == 2) { // Bomb Shop Owner Matrix_Put(&sLeftHandMtxF); EnSob1_DrawCustomItem(actor, gPlayState); } -- cgit v1.2.3 From 1c97d8f5dac4595b56dbe7d24c174c18caca9608 Mon Sep 17 00:00:00 2001 From: Eblo <7004497+Eblo@users.noreply.github.com> Date: Mon, 3 Nov 2025 23:07:43 -0500 Subject: Fix UB in Item_DropCollectible hook usage (#1314) * Fix UB in Item_DropCollectible hook usage * Clang format * Again --- mm/src/code/z_en_item00.c | 102 +++++++++++++++++++++++----------------------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/mm/src/code/z_en_item00.c b/mm/src/code/z_en_item00.c index 12233a36f..3af9d8133 100644 --- a/mm/src/code/z_en_item00.c +++ b/mm/src/code/z_en_item00.c @@ -918,9 +918,6 @@ s16 func_800A7650(s16 dropId) { } Actor* Item_DropCollectible(PlayState* play, Vec3f* spawnPos, u32 params) { - if (!(GameInteractor_Should(VB_ENEMY_DROP_COLLECTIBLE, true, *spawnPos))) { - return; - } s32 pad; Actor* spawnedActor = NULL; @@ -932,61 +929,64 @@ Actor* Item_DropCollectible(PlayState* play, Vec3f* spawnPos, u32 params) { s32 paramFF = params & 0xFF; s32 i; - params &= 0x7FFF; - newParamFF = params & 0xFF; - - if (paramFF == ITEM00_3_HEARTS) { - for (i = 0; i < 3; i++) { - spawnedActor = Item_DropCollectible(play, spawnPos, param7F00 | ITEM00_RECOVERY_HEART | param8000); - } - } else if (paramFF == ITEM00_MUSHROOM_CLOUD) { - param7F00 >>= 8; - if (!Flags_GetCollectible(play, param7F00)) { - Actor_Spawn(&play->actorCtx, play, ACTOR_OBJ_KINOKO, spawnPos->x, spawnPos->y, spawnPos->z, 0, 0, 0, - param7F00); - } - } else if (((paramFF == ITEM00_FLEXIBLE) || (newParamFF == ITEM00_BIG_FAIRY)) && (param10000 == 0)) { + if ((GameInteractor_Should(VB_ENEMY_DROP_COLLECTIBLE, true, *spawnPos))) { + params &= 0x7FFF; newParamFF = params & 0xFF; - if (newParamFF == ITEM00_FLEXIBLE) { - spawnedActor = Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ELF, spawnPos->x, spawnPos->y + 40.0f, - spawnPos->z, 0, 0, 0, FAIRY_PARAMS(FAIRY_TYPE_2, true, param7F00 >> 8)); - if (!Flags_GetCollectible(play, (param7F00 >> 8) & 0x7F)) { - SoundSource_PlaySfxAtFixedWorldPos(play, spawnPos, 40, NA_SE_EV_BUTTERFRY_TO_FAIRY); + + if (paramFF == ITEM00_3_HEARTS) { + for (i = 0; i < 3; i++) { + spawnedActor = Item_DropCollectible(play, spawnPos, param7F00 | ITEM00_RECOVERY_HEART | param8000); } - } else { - spawnedActor = Actor_Spawn( - &play->actorCtx, play, ACTOR_EN_ELFORG, spawnPos->x, spawnPos->y + 40.0f, spawnPos->z, 0, 0, 0, - STRAY_FAIRY_PARAMS((param7F00 >> 8) & 0x7F, STRAY_FAIRY_AREA_CLOCK_TOWN, STRAY_FAIRY_TYPE_COLLECTIBLE)); - if (param20000 == 0) { + } else if (paramFF == ITEM00_MUSHROOM_CLOUD) { + param7F00 >>= 8; + if (!Flags_GetCollectible(play, param7F00)) { + Actor_Spawn(&play->actorCtx, play, ACTOR_OBJ_KINOKO, spawnPos->x, spawnPos->y, spawnPos->z, 0, 0, 0, + param7F00); + } + } else if (((paramFF == ITEM00_FLEXIBLE) || (newParamFF == ITEM00_BIG_FAIRY)) && (param10000 == 0)) { + newParamFF = params & 0xFF; + if (newParamFF == ITEM00_FLEXIBLE) { + spawnedActor = Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ELF, spawnPos->x, spawnPos->y + 40.0f, + spawnPos->z, 0, 0, 0, FAIRY_PARAMS(FAIRY_TYPE_2, true, param7F00 >> 8)); if (!Flags_GetCollectible(play, (param7F00 >> 8) & 0x7F)) { SoundSource_PlaySfxAtFixedWorldPos(play, spawnPos, 40, NA_SE_EV_BUTTERFRY_TO_FAIRY); } - } - } - } else { - if (param8000 == 0) { - params = func_800A7650(newParamFF); - } - if ((s32)params != ITEM00_NO_DROP) { - spawnedActor = Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ITEM00, spawnPos->x, spawnPos->y, spawnPos->z, 0, - 0, 0, (s32)params | param8000 | param7F00); - if ((spawnedActor != NULL) && (param8000 == 0)) { - if (param10000 == 0) { - spawnedActor->velocity.y = 8.0f; - } else { - spawnedActor->velocity.y = -2.0f; + } else { + spawnedActor = Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ELFORG, spawnPos->x, spawnPos->y + 40.0f, + spawnPos->z, 0, 0, 0, + STRAY_FAIRY_PARAMS((param7F00 >> 8) & 0x7F, STRAY_FAIRY_AREA_CLOCK_TOWN, + STRAY_FAIRY_TYPE_COLLECTIBLE)); + if (param20000 == 0) { + if (!Flags_GetCollectible(play, (param7F00 >> 8) & 0x7F)) { + SoundSource_PlaySfxAtFixedWorldPos(play, spawnPos, 40, NA_SE_EV_BUTTERFRY_TO_FAIRY); + } } - spawnedActor->speed = 2.0f; - spawnedActor->gravity = -0.9f; - spawnedActor->world.rot.y = Rand_CenteredFloat(0x10000); - Actor_SetScale(spawnedActor, 0.0f); - ((EnItem00*)spawnedActor)->actionFunc = func_800A6780; - ((EnItem00*)spawnedActor)->unk152 = 0xDC; - if ((spawnedActor->params != ITEM00_SMALL_KEY) && (spawnedActor->params != ITEM00_HEART_PIECE) && - (spawnedActor->params != ITEM00_HEART_CONTAINER)) { - spawnedActor->room = -1; + } + } else { + if (param8000 == 0) { + params = func_800A7650(newParamFF); + } + if ((s32)params != ITEM00_NO_DROP) { + spawnedActor = Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ITEM00, spawnPos->x, spawnPos->y, + spawnPos->z, 0, 0, 0, (s32)params | param8000 | param7F00); + if ((spawnedActor != NULL) && (param8000 == 0)) { + if (param10000 == 0) { + spawnedActor->velocity.y = 8.0f; + } else { + spawnedActor->velocity.y = -2.0f; + } + spawnedActor->speed = 2.0f; + spawnedActor->gravity = -0.9f; + spawnedActor->world.rot.y = Rand_CenteredFloat(0x10000); + Actor_SetScale(spawnedActor, 0.0f); + ((EnItem00*)spawnedActor)->actionFunc = func_800A6780; + ((EnItem00*)spawnedActor)->unk152 = 0xDC; + if ((spawnedActor->params != ITEM00_SMALL_KEY) && (spawnedActor->params != ITEM00_HEART_PIECE) && + (spawnedActor->params != ITEM00_HEART_CONTAINER)) { + spawnedActor->room = -1; + } + spawnedActor->flags |= 0x0010; } - spawnedActor->flags |= 0x0010; } } } -- cgit v1.2.3 From 5215c79dedd94b6042b96e6e5c446a0a36760311 Mon Sep 17 00:00:00 2001 From: Eblo <7004497+Eblo@users.noreply.github.com> Date: Mon, 3 Nov 2025 23:08:06 -0500 Subject: Address logging issues (#1317) * Address logging issues * Default log levels for debug and release --- CMake/logging.cmake | 20 ++++++++++++++++++++ CMakeLists.txt | 1 + libultraship | 2 +- mm/2s2h/BenPort.cpp | 7 ++++++- 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 CMake/logging.cmake diff --git a/CMake/logging.cmake b/CMake/logging.cmake new file mode 100644 index 000000000..12b201b53 --- /dev/null +++ b/CMake/logging.cmake @@ -0,0 +1,20 @@ +set(SPDLOG_LEVEL_TRACE 0) +set(SPDLOG_LEVEL_DEBUG 1) +set(SPDLOG_LEVEL_INFO 2) +set(SPDLOG_LEVEL_WARN 3) +set(SPDLOG_LEVEL_ERROR 4) +set(SPDLOG_LEVEL_CRITICAL 5) +set(SPDLOG_LEVEL_OFF 6) +set(LOG_LEVELS "SPDLOG_LEVEL_TRACE;SPDLOG_LEVEL_DEBUG;SPDLOG_LEVEL_INFO;SPDLOG_LEVEL_WARN;SPDLOG_LEVEL_ERROR;SPDLOG_LEVEL_CRITICAL;SPDLOG_LEVEL_OFF") +set(LOG_LEVEL SPDLOG_LEVEL_TRACE CACHE STRING "The spdlog level that prints will be logged out. Overridden to SPDLOG_LEVEL_ERROR on Release builds.") +set_property(CACHE LOG_LEVEL PROPERTY STRINGS ${LOG_LEVELS}) +if(NOT LOG_LEVEL IN_LIST LOG_LEVELS) + message(FATAL_ERROR "LOG_LEVEL must be one of ${LOG_LEVELS}") +endif() +set(SPDLOG_ACTIVE_LEVEL ${${LOG_LEVEL}}) +set(LOG_LEVEL_GAME_PRINTS ${SPDLOG_LEVEL_OFF}) + +add_compile_definitions( + LOG_LEVEL_GAME_PRINTS=${LOG_LEVEL_GAME_PRINTS} + SPDLOG_ACTIVE_LEVEL=${SPDLOG_ACTIVE_LEVEL} +) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f2a9fbde..38efb64cf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,7 @@ set(GAME_STR "MM") project(2s2h VERSION 3.0.0 LANGUAGES C CXX) include(CMake/2ship-cvars.cmake) include(CMake/lus-cvars.cmake) +include(CMake/logging.cmake) set(PROJECT_BUILD_NAME "Mion Alfa" CACHE STRING "" FORCE) set(PROJECT_TEAM "github.com/harbourmasters" CACHE STRING "" FORCE) diff --git a/libultraship b/libultraship index 5f4be9b6f..5d498e780 160000 --- a/libultraship +++ b/libultraship @@ -1 +1 @@ -Subproject commit 5f4be9b6f5f74917c303ab8b66a0b2f4ef91613d +Subproject commit 5d498e780f25dc3c05804b0328db683121d96a2d diff --git a/mm/2s2h/BenPort.cpp b/mm/2s2h/BenPort.cpp index 680334a1d..e23afc2a1 100644 --- a/mm/2s2h/BenPort.cpp +++ b/mm/2s2h/BenPort.cpp @@ -195,8 +195,13 @@ OTRGlobals::OTRGlobals() { context->InitWindow(benFast3dWindow); // Override LUS defaults +#if (_DEBUG) + int defaultLogLevel = 0; +#else + int defaultLogLevel = 2; +#endif Ship::Context::GetInstance()->GetLogger()->set_level( - (spdlog::level::level_enum)CVarGetInteger("gDeveloperTools.LogLevel", 1)); + (spdlog::level::level_enum)CVarGetInteger("gDeveloperTools.LogLevel", defaultLogLevel)); Ship::Context::GetInstance()->GetLogger()->set_pattern("[%H:%M:%S.%e] [%s:%#] [%l] %v"); auto overlay = context->GetInstance()->GetWindow()->GetGui()->GetGameOverlay(); -- cgit v1.2.3 From f45acdd794712fefa0fae0bca86dcac22e040f09 Mon Sep 17 00:00:00 2001 From: balloondude2 <55861555+balloondude2@users.noreply.github.com> Date: Tue, 4 Nov 2025 05:21:46 -0700 Subject: bump to mion bravo (#1318) --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 38efb64cf..26f51c776 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,11 +5,11 @@ 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") set(GAME_STR "MM") -project(2s2h VERSION 3.0.0 LANGUAGES C CXX) +project(2s2h VERSION 3.0.1 LANGUAGES C CXX) include(CMake/2ship-cvars.cmake) include(CMake/lus-cvars.cmake) include(CMake/logging.cmake) -set(PROJECT_BUILD_NAME "Mion Alfa" CACHE STRING "" FORCE) +set(PROJECT_BUILD_NAME "Mion Bravo" CACHE STRING "" FORCE) set(PROJECT_TEAM "github.com/harbourmasters" CACHE STRING "" FORCE) execute_process( -- cgit v1.2.3