mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-05-31 01:25:16 -04:00
Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a133be625e | |||
| 06e8a5af41 | |||
| f1070a2e74 | |||
| 02c0caff4f | |||
| 2ad0b37fa5 | |||
| 6b6a352205 | |||
| 37ffc8b9c8 | |||
| d75b38d457 | |||
| 36e40665bb | |||
| 9804035dc0 | |||
| 973ec52b2a | |||
| d61b398f41 | |||
| af13595aae | |||
| 97211093f3 | |||
| 15e22349df |
@@ -22,7 +22,7 @@ endif()
|
|||||||
|
|
||||||
if (CPACK_GENERATOR MATCHES "Bundle")
|
if (CPACK_GENERATOR MATCHES "Bundle")
|
||||||
set(CPACK_BUNDLE_NAME "soh")
|
set(CPACK_BUNDLE_NAME "soh")
|
||||||
set(CPACK_BUNDLE_PLIST "../soh/macosx/Info.plist")
|
set(CPACK_BUNDLE_PLIST "macosx/Info.plist")
|
||||||
set(CPACK_BUNDLE_ICON "macosx/soh.icns")
|
set(CPACK_BUNDLE_ICON "macosx/soh.icns")
|
||||||
set(CPACK_BUNDLE_STARTUP_COMMAND "../soh/macosx/soh-macos.sh")
|
set(CPACK_BUNDLE_STARTUP_COMMAND "../soh/macosx/soh-macos.sh")
|
||||||
set(CPACK_BUNDLE_APPLE_CERT_APP "-")
|
set(CPACK_BUNDLE_APPLE_CERT_APP "-")
|
||||||
|
|||||||
+4
-5
@@ -6,11 +6,10 @@ 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)
|
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version" FORCE)
|
||||||
|
|
||||||
project(Ship C CXX)
|
project(Ship LANGUAGES C CXX
|
||||||
|
VERSION 4.0.2)
|
||||||
set(PROJECT_VERSION_MAJOR "4")
|
set(PROJECT_BUILD_NAME "ZHORA CHARLIE" CACHE STRING "")
|
||||||
set(PROJECT_VERSION_MINOR "0")
|
set(PROJECT_TEAM "github.com/harbourmasters" CACHE STRING "")
|
||||||
set(PROJECT_VERSION_PATCH "0")
|
|
||||||
|
|
||||||
set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT soh)
|
set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT soh)
|
||||||
add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/MP>)
|
add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/MP>)
|
||||||
|
|||||||
@@ -738,15 +738,11 @@ static std::unordered_map<std::pair<float, float>, uint16_t, hash_pair_ff> gfx_g
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::unordered_map<std::pair<float, float>, uint16_t, hash_pair_ff> res;
|
std::unordered_map<std::pair<float, float>, uint16_t, hash_pair_ff> res;
|
||||||
if (!coordinates.size()) {
|
GX2Rect srcRects[25];
|
||||||
return res;
|
GX2Point dstPoints[25];
|
||||||
}
|
|
||||||
|
|
||||||
GX2Rect srcRects[32];
|
|
||||||
GX2Point dstPoints[32];
|
|
||||||
size_t num_coordinates = coordinates.size();
|
size_t num_coordinates = coordinates.size();
|
||||||
while (num_coordinates > 0) {
|
while (num_coordinates > 0) {
|
||||||
size_t numRects = 32;
|
size_t numRects = 25;
|
||||||
if (num_coordinates < numRects) {
|
if (num_coordinates < numRects) {
|
||||||
numRects = num_coordinates;
|
numRects = num_coordinates;
|
||||||
}
|
}
|
||||||
@@ -755,8 +751,8 @@ static std::unordered_map<std::pair<float, float>, uint16_t, hash_pair_ff> gfx_g
|
|||||||
// initialize rects and points
|
// initialize rects and points
|
||||||
for (size_t i = 0; i < numRects; ++i) {
|
for (size_t i = 0; i < numRects; ++i) {
|
||||||
const auto& c = *std::next(coordinates.begin(), num_coordinates + i);
|
const auto& c = *std::next(coordinates.begin(), num_coordinates + i);
|
||||||
const int32_t x = (int32_t) std::clamp(c.first, 0.0f, (float) buffer->depth_buffer.surface.width - 1);
|
const int32_t x = (int32_t) std::clamp(c.first, 0.0f, (float) (buffer->depth_buffer.surface.width - 1));
|
||||||
const int32_t y = (int32_t) std::clamp(c.second, 0.0f, (float) buffer->depth_buffer.surface.height - 1);
|
const int32_t y = (int32_t) std::clamp(c.second, 0.0f, (float) (buffer->depth_buffer.surface.height - 1));
|
||||||
|
|
||||||
srcRects[i] = GX2Rect{
|
srcRects[i] = GX2Rect{
|
||||||
x,
|
x,
|
||||||
|
|||||||
@@ -25,6 +25,10 @@ while [[ ! -e "$SHIP_HOME"/oot.otr ]]; do
|
|||||||
ROM=GC_NMQ_D;;
|
ROM=GC_NMQ_D;;
|
||||||
0227d7c0074f2d0ac935631990da8ec5914597b4)
|
0227d7c0074f2d0ac935631990da8ec5914597b4)
|
||||||
ROM=GC_NMQ_PAL_F;;
|
ROM=GC_NMQ_PAL_F;;
|
||||||
|
50bebedad9e0f10746a52b07239e47fa6c284d03)
|
||||||
|
ROM=GC_MQ_D;;
|
||||||
|
079b855b943d6ad8bd1eb026c0ed169ecbdac7da)
|
||||||
|
ROM=GC_MQ_D;;
|
||||||
*)
|
*)
|
||||||
if [ -n "$ZENITY" ]; then
|
if [ -n "$ZENITY" ]; then
|
||||||
zenity --error --timeout=10 --text="ROM hash <b>$ROMHASH</b> does not match" --title="Incorrect ROM file" --width=500 --width=200
|
zenity --error --timeout=10 --text="ROM hash <b>$ROMHASH</b> does not match" --title="Incorrect ROM file" --width=500 --width=200
|
||||||
|
|||||||
+7
-4
@@ -95,6 +95,8 @@ set(PROJECT_NAME soh)
|
|||||||
################################################################################
|
################################################################################
|
||||||
# Source groups
|
# Source groups
|
||||||
################################################################################
|
################################################################################
|
||||||
|
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/src/boot/build.c.in ${CMAKE_BINARY_DIR}/build.c @ONLY)
|
||||||
|
|
||||||
set(Header_Files
|
set(Header_Files
|
||||||
"resource.h"
|
"resource.h"
|
||||||
)
|
)
|
||||||
@@ -395,7 +397,7 @@ endif()
|
|||||||
set(Source_Files__src__boot
|
set(Source_Files__src__boot
|
||||||
"src/boot/assert.c"
|
"src/boot/assert.c"
|
||||||
"src/boot/boot_main.c"
|
"src/boot/boot_main.c"
|
||||||
"src/boot/build.c"
|
"${CMAKE_BINARY_DIR}/build.c"
|
||||||
"src/boot/idle.c"
|
"src/boot/idle.c"
|
||||||
"src/boot/is_debug.c"
|
"src/boot/is_debug.c"
|
||||||
"src/boot/logutils.c"
|
"src/boot/logutils.c"
|
||||||
@@ -2039,6 +2041,7 @@ find_program(CURL NAMES curl DOC "Path to the curl program. Used to download fi
|
|||||||
execute_process(COMMAND ${CURL} -sSfL https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt -o ${CMAKE_BINARY_DIR}/gamecontrollerdb.txt OUTPUT_VARIABLE RESULT)
|
execute_process(COMMAND ${CURL} -sSfL https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt -o ${CMAKE_BINARY_DIR}/gamecontrollerdb.txt OUTPUT_VARIABLE RESULT)
|
||||||
|
|
||||||
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
|
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
|
||||||
|
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/macosx/Info.plist.in ${CMAKE_BINARY_DIR}/macosx/Info.plist @ONLY)
|
||||||
INSTALL(FILES ${CMAKE_BINARY_DIR}/gamecontrollerdb.txt DESTINATION ../MacOS COMPONENT ship)
|
INSTALL(FILES ${CMAKE_BINARY_DIR}/gamecontrollerdb.txt DESTINATION ../MacOS COMPONENT ship)
|
||||||
elseif(NOT "${CMAKE_SYSTEM_NAME}" MATCHES "NintendoSwitch|CafeOS")
|
elseif(NOT "${CMAKE_SYSTEM_NAME}" MATCHES "NintendoSwitch|CafeOS")
|
||||||
INSTALL(FILES ${CMAKE_BINARY_DIR}/gamecontrollerdb.txt DESTINATION . COMPONENT ship)
|
INSTALL(FILES ${CMAKE_BINARY_DIR}/gamecontrollerdb.txt DESTINATION . COMPONENT ship)
|
||||||
@@ -2057,8 +2060,8 @@ if(CMAKE_SYSTEM_NAME MATCHES "NintendoSwitch")
|
|||||||
|
|
||||||
nx_generate_nacp(Ship.nacp
|
nx_generate_nacp(Ship.nacp
|
||||||
NAME "Ship of Harkinian"
|
NAME "Ship of Harkinian"
|
||||||
AUTHOR "Harbour Masters"
|
AUTHOR "${PROJECT_TEAM}"
|
||||||
VERSION "4.0.0"
|
VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}"
|
||||||
)
|
)
|
||||||
|
|
||||||
nx_create_nro(soh
|
nx_create_nro(soh
|
||||||
@@ -2075,7 +2078,7 @@ wut_create_rpx(${PROJECT_NAME})
|
|||||||
wut_create_wuhb(${PROJECT_NAME}
|
wut_create_wuhb(${PROJECT_NAME}
|
||||||
NAME "Ship of Harkinian"
|
NAME "Ship of Harkinian"
|
||||||
SHORTNAME "SoH"
|
SHORTNAME "SoH"
|
||||||
AUTHOR "Harbour Masters"
|
AUTHOR "${PROJECT_TEAM}"
|
||||||
ICON ${CMAKE_CURRENT_SOURCE_DIR}/icon.jpg
|
ICON ${CMAKE_CURRENT_SOURCE_DIR}/icon.jpg
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<Root>
|
<Root>
|
||||||
|
<ExternalFile XmlPath="objects/object_mori_tex.xml" OutPath="objects/object_mori_tex/"/>
|
||||||
<File Name="object_mori_hineri1" Segment="6">
|
<File Name="object_mori_hineri1" Segment="6">
|
||||||
<DList Name="object_mori_hineri1_DL_0024E0" Offset="0x24E0"/>
|
<DList Name="object_mori_hineri1_DL_0024E0" Offset="0x24E0"/>
|
||||||
<Collision Name="object_mori_hineri1_Col_0054B8" Offset="0x54B8"/>
|
<Collision Name="object_mori_hineri1_Col_0054B8" Offset="0x54B8"/>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<Root>
|
<Root>
|
||||||
|
<ExternalFile XmlPath="objects/object_mori_tex.xml" OutPath="objects/object_mori_tex/"/>
|
||||||
<File Name="object_mori_hineri1a" Segment="6">
|
<File Name="object_mori_hineri1a" Segment="6">
|
||||||
<DList Name="object_mori_hineri1a_DL_001980" Offset="0x1980"/>
|
<DList Name="object_mori_hineri1a_DL_001980" Offset="0x1980"/>
|
||||||
<Collision Name="object_mori_hineri1a_Col_003490" Offset="0x3490"/>
|
<Collision Name="object_mori_hineri1a_Col_003490" Offset="0x3490"/>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<Root>
|
<Root>
|
||||||
|
<ExternalFile XmlPath="objects/object_mori_tex.xml" OutPath="objects/object_mori_tex/"/>
|
||||||
<File Name="object_mori_hineri2" Segment="6">
|
<File Name="object_mori_hineri2" Segment="6">
|
||||||
<DList Name="object_mori_hineri2_DL_0020F0" Offset="0x20F0"/>
|
<DList Name="object_mori_hineri2_DL_0020F0" Offset="0x20F0"/>
|
||||||
<Collision Name="object_mori_hineri2_Col_0043D0" Offset="0x43D0"/>
|
<Collision Name="object_mori_hineri2_Col_0043D0" Offset="0x43D0"/>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<Root>
|
<Root>
|
||||||
|
<ExternalFile XmlPath="objects/object_mori_tex.xml" OutPath="objects/object_mori_tex/"/>
|
||||||
<File Name="object_mori_hineri2a" Segment="6">
|
<File Name="object_mori_hineri2a" Segment="6">
|
||||||
<DList Name="object_mori_hineri2a_DL_002B70" Offset="0x2B70"/>
|
<DList Name="object_mori_hineri2a_DL_002B70" Offset="0x2B70"/>
|
||||||
<Collision Name="object_mori_hineri2a_Col_006078" Offset="0x6078"/>
|
<Collision Name="object_mori_hineri2a_Col_006078" Offset="0x6078"/>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<Root>
|
<Root>
|
||||||
|
<ExternalFile XmlPath="objects/object_mori_tex.xml" OutPath="objects/object_mori_tex/"/>
|
||||||
<File Name="object_mori_objects" Segment="6">
|
<File Name="object_mori_objects" Segment="6">
|
||||||
<Texture Name="gMoriHashiraTLUT" OutName="hashira_tlut" Format="rgba16" Width="112" Height="1" Offset="0x0000"/>
|
<Texture Name="gMoriHashiraTLUT" OutName="hashira_tlut" Format="rgba16" Width="112" Height="1" Offset="0x0000"/>
|
||||||
<Texture Name="gMoriHashiraTex" OutName="hashira" Format="ci8" Width="32" Height="32" Offset="0x00E0" TlutOffset="0x0000"/>
|
<Texture Name="gMoriHashiraTex" OutName="hashira" Format="ci8" Width="32" Height="32" Offset="0x00E0" TlutOffset="0x0000"/>
|
||||||
|
|||||||
@@ -1,5 +1,30 @@
|
|||||||
<Root>
|
<Root>
|
||||||
<File Name="object_mori_tex" Segment="6">
|
<File Name="object_mori_tex" Segment="8">
|
||||||
<Blob Name="object_moriTex_Blob_000000" Size="0x9E00" Offset="0x0"/>
|
<Texture Name="gMoriElevatorBarTex" OutName="elevator_bar" Format="rgba16" Height="16" Width="64" Offset="0x0"/>
|
||||||
|
<Texture Name="gMoriElevatorTopTex" OutName="elevator_top" Format="rgba16" Height="32" Width="32" Offset="0x800"/>
|
||||||
|
<Texture Name="gMoriElevatorSideTex" OutName="elevator_side" Format="rgba16" Height="16" Width="16" Offset="0x1000"/>
|
||||||
|
|
||||||
|
<Texture Name="gMorieStoneWallTex" OutName="stone_wall" Format="rgba16" Height="32" Width="32" Offset="0x1200"/>
|
||||||
|
<Texture Name="gMoriKaitenkabeMetalWallTex" OutName="metal_wall" Format="rgba16" Height="32" Width="32" Offset="0x1A00"/>
|
||||||
|
<Texture Name="gMoriRakkatenjoCheckerboardTex" OutName="checkerboard" Format="rgba16" Height="32" Width="64" Offset="0x2200"/>
|
||||||
|
|
||||||
|
<Texture Name="gMoriStalfosPlatformSideTex" OutName="stalfos_platform_side" Format="rgba16" Height="32" Width="64" Offset="0x3200"/>
|
||||||
|
<Texture Name="gMoriStalfosPlatformTopTex" OutName="stalfos_platform_top" Format="rgba16" Height="32" Width="32" Offset="0x4200"/>
|
||||||
|
|
||||||
|
<Texture Name="gMoriHashiraPlatformsTex" OutName="hashira_platform" Format="rgba16" Height="32" Width="32" Offset="0x4A00"/>
|
||||||
|
|
||||||
|
<!-- This is just a guess since its unused -->
|
||||||
|
<Texture Name="gMoriWaterTex" OutName="water_tex" Format="rgba16" Height="8" Width="32" Offset="0x5200"/>
|
||||||
|
|
||||||
|
<Texture Name="gMoriHashigoLadderTex" OutName="ladder" Format="rgba16" Height="32" Width="32" Offset="0x5400"/>
|
||||||
|
|
||||||
|
<Texture Name="gForestTwistedHallwayPillarTex" OutName="twisted_hall_pillar" Format="rgba16" Height="64" Width="16" Offset="0x5C00"/>
|
||||||
|
<Texture Name="gForestTwistedHallwayWallAndFloorTex" OutName="twisted_hall_wall_and_floor" Format="rgba16" Width="32" Height="32" Offset="0x6400"/>
|
||||||
|
<Texture Name="gForestTwistedHallwayWallDesignTex" OutName="twisted_hall_design" Format="rgba16" Width="64" Height="32" Offset="0x6C00"/>
|
||||||
|
<Texture Name="gForestTwistedHallCarpetTex" OutName="twisted_hall_carpet" Format="rgba16" Width="16" Height="16" Offset="0x7C00"/>
|
||||||
|
<Texture Name="gForestTwistedHallLadderTex" OutName="twisted_hall_ladder" Format="rgba16" Height="32" Width="32" Offset="0x7E00"/>
|
||||||
|
<Texture Name="gForestTwistedHallBrickTex" OutName="twisted_hall_brick" Format="rgba16" Width="32" Height="32" Offset="0x8600"/>
|
||||||
|
|
||||||
|
<Texture Name="gMoriHashiraGateTex" OutName="hashira_gate" Format="rgba16" Width="32" Height="64" Offset="0x8E00"/>
|
||||||
</File>
|
</File>
|
||||||
</Root>
|
</Root>
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>soh</string>
|
<string>soh</string>
|
||||||
<key>CFBundleGetInfoString</key>
|
<key>CFBundleGetInfoString</key>
|
||||||
<string>4.0.0</string>
|
<string>@CMAKE_PROJECT_VERSION@</string>
|
||||||
<key>CFBundleIconFile</key>
|
<key>CFBundleIconFile</key>
|
||||||
<string>soh.icns</string>
|
<string>soh.icns</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
@@ -22,11 +22,11 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>4.0.0</string>
|
<string>@CMAKE_PROJECT_VERSION@</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>ZOoT</string>
|
<string>ZOoT</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>4.0.0</string>
|
<string>@CMAKE_PROJECT_VERSION@</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
<string>Copyright 2022 HarbourMasters.</string>
|
<string>Copyright 2022 HarbourMasters.</string>
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersion</key>
|
||||||
@@ -40,6 +40,10 @@ while [ ! -e "$DATA_SHARE/oot.otr" ]; do
|
|||||||
export ROM=GC_NMQ_D;;
|
export ROM=GC_NMQ_D;;
|
||||||
0227d7c0074f2d0ac935631990da8ec5914597b4)
|
0227d7c0074f2d0ac935631990da8ec5914597b4)
|
||||||
export ROM=GC_NMQ_PAL_F;;
|
export ROM=GC_NMQ_PAL_F;;
|
||||||
|
50bebedad9e0f10746a52b07239e47fa6c284d03)
|
||||||
|
export ROM=GC_MQ_D;;
|
||||||
|
079b855b943d6ad8bd1eb026c0ed169ecbdac7da)
|
||||||
|
export ROM=GC_MQ_D;;
|
||||||
*)
|
*)
|
||||||
WRONGHASH="$(osascript -ss - "$ROMHASH" <<-EOF
|
WRONGHASH="$(osascript -ss - "$ROMHASH" <<-EOF
|
||||||
display dialog "Incompatible ROM hash $ROMHASH" \
|
display dialog "Incompatible ROM hash $ROMHASH" \
|
||||||
|
|||||||
@@ -27,6 +27,11 @@ void BootCommands_Init()
|
|||||||
CVar_RegisterS32("gHudColors", 1); //0 = N64 / 1 = NGC / 2 = Custom
|
CVar_RegisterS32("gHudColors", 1); //0 = N64 / 1 = NGC / 2 = Custom
|
||||||
CVar_RegisterS32("gInvertYAxis", 1);
|
CVar_RegisterS32("gInvertYAxis", 1);
|
||||||
CVar_RegisterS32("gTrailDuration", 4); // 4 = Default trail duration
|
CVar_RegisterS32("gTrailDuration", 4); // 4 = Default trail duration
|
||||||
|
if (ResourceMgr_IsGameMasterQuest()) {
|
||||||
|
CVar_SetS32("gRandomizer", 0);
|
||||||
|
} else {
|
||||||
|
CVar_RegisterS32("gRandomizer", 0);
|
||||||
|
}
|
||||||
#if defined(__SWITCH__) || defined(__WIIU__)
|
#if defined(__SWITCH__) || defined(__WIIU__)
|
||||||
CVar_RegisterS32("gControlNav", 1); // always enable controller nav on switch/wii u
|
CVar_RegisterS32("gControlNav", 1); // always enable controller nav on switch/wii u
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -238,7 +238,7 @@ namespace GameControlEditor {
|
|||||||
UIWidgets::PaddedEnhancementCheckbox("Right Stick Aiming", "gRightStickAiming");
|
UIWidgets::PaddedEnhancementCheckbox("Right Stick Aiming", "gRightStickAiming");
|
||||||
UIWidgets::Tooltip("Allows for aiming with the rights stick when:\n-Aiming in the C-Up view\n-Aiming with weapons");
|
UIWidgets::Tooltip("Allows for aiming with the rights stick when:\n-Aiming in the C-Up view\n-Aiming with weapons");
|
||||||
ImGui::SetCursorPosX(ImGui::GetCursorPosX() + 5);
|
ImGui::SetCursorPosX(ImGui::GetCursorPosX() + 5);
|
||||||
UIWidgets::PaddedEnhancementCheckbox("Disable Auto-Centering in First Person View", "gAutoCenterView");
|
UIWidgets::PaddedEnhancementCheckbox("Disable Auto-Centering in First Person View", "gDisableAutoCenterView");
|
||||||
UIWidgets::Tooltip("Prevents the C-Up view from auto-centering, allowing for Gyro Aiming");
|
UIWidgets::Tooltip("Prevents the C-Up view from auto-centering, allowing for Gyro Aiming");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -73,8 +73,8 @@ static CosmeticsColorIndividual Navi_Npc_Inner = { "Navi NPC (Primary)", "Inner
|
|||||||
static CosmeticsColorIndividual Navi_Npc_Outer = { "Navi NPC (Secondary)", "Outer color for Navi (when Navi fly around NPCs)", "gNavi_NPC_Outer", navi_npc_o_col, ImVec4(150, 150, 255, 255), false, false, false };
|
static CosmeticsColorIndividual Navi_Npc_Outer = { "Navi NPC (Secondary)", "Outer color for Navi (when Navi fly around NPCs)", "gNavi_NPC_Outer", navi_npc_o_col, ImVec4(150, 150, 255, 255), false, false, false };
|
||||||
static CosmeticsColorIndividual Navi_Enemy_Inner = { "Navi Enemy (Primary)", "Inner color for Navi (when Navi fly around Enemies or Bosses)", "gNavi_Enemy_Inner", navi_enemy_i_col, ImVec4(255, 255, 0, 255), false, false, false };
|
static CosmeticsColorIndividual Navi_Enemy_Inner = { "Navi Enemy (Primary)", "Inner color for Navi (when Navi fly around Enemies or Bosses)", "gNavi_Enemy_Inner", navi_enemy_i_col, ImVec4(255, 255, 0, 255), false, false, false };
|
||||||
static CosmeticsColorIndividual Navi_Enemy_Outer = { "Navi Enemy (Secondary)", "Outer color for Navi (when Navi fly around Enemies or Bosses)", "gNavi_Enemy_Outer", navi_enemy_o_col, ImVec4(220, 155, 0, 255), false, false, false };
|
static CosmeticsColorIndividual Navi_Enemy_Outer = { "Navi Enemy (Secondary)", "Outer color for Navi (when Navi fly around Enemies or Bosses)", "gNavi_Enemy_Outer", navi_enemy_o_col, ImVec4(220, 155, 0, 255), false, false, false };
|
||||||
static CosmeticsColorIndividual Navi_Prop_Inner = { "Navi Enemy (Primary)", "Inner color for Navi (when Navi fly around props (signs etc))", "gNavi_Prop_Inner", navi_prop_i_col, ImVec4(0, 255, 0, 255), false, false, false };
|
static CosmeticsColorIndividual Navi_Prop_Inner = { "Navi Props (Primary)", "Inner color for Navi (when Navi fly around props (signs etc))", "gNavi_Prop_Inner", navi_prop_i_col, ImVec4(0, 255, 0, 255), false, false, false };
|
||||||
static CosmeticsColorIndividual Navi_Prop_Outer = { "Navi Enemy (Secondary)", "Outer color for Navi (when Navi fly around props (signs etc))", "gNavi_Prop_Outer", navi_prop_o_col, ImVec4(0, 255, 0, 255), false, false, false };
|
static CosmeticsColorIndividual Navi_Prop_Outer = { "Navi Props (Secondary)", "Outer color for Navi (when Navi fly around props (signs etc))", "gNavi_Prop_Outer", navi_prop_o_col, ImVec4(0, 255, 0, 255), false, false, false };
|
||||||
|
|
||||||
//Keese
|
//Keese
|
||||||
static CosmeticsColorIndividual Keese1_prim = { "Fire Primary color", "Affects the primary color of the Fire itself of the Keese", "gKeese1_Ef_Prim", Keese1_primcol, ImVec4(255, 255, 100, 255), true, false, false };
|
static CosmeticsColorIndividual Keese1_prim = { "Fire Primary color", "Affects the primary color of the Fire itself of the Keese", "gKeese1_Ef_Prim", Keese1_primcol, ImVec4(255, 255, 100, 255), true, false, false };
|
||||||
|
|||||||
@@ -1040,7 +1040,7 @@ typedef struct ScrubIdentity {
|
|||||||
RandomizerCheck randomizerCheck;
|
RandomizerCheck randomizerCheck;
|
||||||
GetItemID getItemId;
|
GetItemID getItemId;
|
||||||
int32_t itemPrice;
|
int32_t itemPrice;
|
||||||
bool isShuffled;
|
uint8_t isShuffled;
|
||||||
} ScrubIdentity;
|
} ScrubIdentity;
|
||||||
|
|
||||||
typedef struct ShopItemIdentity {
|
typedef struct ShopItemIdentity {
|
||||||
|
|||||||
@@ -117,8 +117,8 @@ namespace GameMenuBar {
|
|||||||
CVar_SetS32("gInvertYAxis", 1);
|
CVar_SetS32("gInvertYAxis", 1);
|
||||||
// Right Stick Aiming
|
// Right Stick Aiming
|
||||||
CVar_SetS32("gRightStickAiming", 0);
|
CVar_SetS32("gRightStickAiming", 0);
|
||||||
// Auto-Center First Person View
|
// Disable Auto-Center First Person View
|
||||||
CVar_SetS32("gAutoCenterView", 0);
|
CVar_SetS32("gDisableAutoCenterView", 0);
|
||||||
|
|
||||||
// Text Speed (1 to 5)
|
// Text Speed (1 to 5)
|
||||||
CVar_SetS32("gTextSpeed", 1);
|
CVar_SetS32("gTextSpeed", 1);
|
||||||
|
|||||||
@@ -543,7 +543,10 @@ void SaveManager::SaveGlobal() {
|
|||||||
globalBlock["zTargetSetting"] = gSaveContext.zTargetSetting;
|
globalBlock["zTargetSetting"] = gSaveContext.zTargetSetting;
|
||||||
globalBlock["language"] = gSaveContext.language;
|
globalBlock["language"] = gSaveContext.language;
|
||||||
|
|
||||||
std::ofstream output("Save/global.sav");
|
const std::filesystem::path sSavePath(Ship::Window::GetPathRelativeToAppDirectory("Save"));
|
||||||
|
const std::filesystem::path sGlobalPath = sSavePath / std::string("global.sav");
|
||||||
|
|
||||||
|
std::ofstream output(sGlobalPath);
|
||||||
output << std::setw(4) << globalBlock << std::endl;
|
output << std::setw(4) << globalBlock << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
const char gBuildVersion[] = "ZHORA ALFA (4.0.0)";
|
|
||||||
const char gBuildTeam[] = "github.com/harbourmasters";
|
|
||||||
const char gBuildDate[] = __DATE__ " " __TIME__;
|
|
||||||
const char gBuildMakeOption[] = "";
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
const char gBuildVersion[] = "@PROJECT_BUILD_NAME@ (@CMAKE_PROJECT_VERSION_MAJOR@.@CMAKE_PROJECT_VERSION_MINOR@.@CMAKE_PROJECT_VERSION_PATCH@)";
|
||||||
|
const char gBuildTeam[] = "@PROJECT_TEAM@";
|
||||||
|
const char gBuildDate[] = __DATE__ " " __TIME__;
|
||||||
|
const char gBuildMakeOption[] = "";
|
||||||
|
|
||||||
+17
-9
@@ -335,8 +335,10 @@ void func_8002BE98(TargetContext* targetCtx, s32 actorCategory, GlobalContext* g
|
|||||||
|
|
||||||
void func_8002BF60(TargetContext* targetCtx, Actor* actor, s32 actorCategory, GlobalContext* globalCtx) {
|
void func_8002BF60(TargetContext* targetCtx, Actor* actor, s32 actorCategory, GlobalContext* globalCtx) {
|
||||||
NaviColor* naviColor = &sNaviColorList[actorCategory];
|
NaviColor* naviColor = &sNaviColorList[actorCategory];
|
||||||
|
Color_RGB8 customInnerNaviColor;
|
||||||
|
Color_RGB8 customOuterNaviColor;
|
||||||
|
|
||||||
if (CVar_GetS32("gUseNaviCol",0) != 1 ) {
|
if (!CVar_GetS32("gUseNaviCol",0)) {
|
||||||
if (actorCategory == ACTORCAT_PLAYER) {
|
if (actorCategory == ACTORCAT_PLAYER) {
|
||||||
naviColor->inner.r = 255; naviColor->inner.g = 255; naviColor->inner.b = 255;
|
naviColor->inner.r = 255; naviColor->inner.g = 255; naviColor->inner.b = 255;
|
||||||
naviColor->outer.r = 0; naviColor->outer.g = 0; naviColor->outer.b = 255;
|
naviColor->outer.r = 0; naviColor->outer.g = 0; naviColor->outer.b = 255;
|
||||||
@@ -355,21 +357,27 @@ void func_8002BF60(TargetContext* targetCtx, Actor* actor, s32 actorCategory, Gl
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (actorCategory == ACTORCAT_PLAYER) {
|
if (actorCategory == ACTORCAT_PLAYER) {
|
||||||
naviColor->inner = CVar_GetRGBA("gNavi_Idle_Inner", naviColor->inner);
|
customInnerNaviColor = CVar_GetRGB("gNavi_Idle_Inner", (Color_RGB8){ 0, 0, 0 });
|
||||||
naviColor->outer = CVar_GetRGBA("gNavi_Idle_Outer", naviColor->outer);
|
customOuterNaviColor = CVar_GetRGB("gNavi_Idle_Outer", (Color_RGB8){ 0, 0, 0 });
|
||||||
}
|
}
|
||||||
if (actorCategory == ACTORCAT_NPC) {
|
if (actorCategory == ACTORCAT_NPC) {
|
||||||
naviColor->inner = CVar_GetRGBA("gNavi_NPC_Inner", naviColor->inner);
|
customInnerNaviColor = CVar_GetRGB("gNavi_NPC_Inner", (Color_RGB8){ 0, 0, 0 });
|
||||||
naviColor->outer = CVar_GetRGBA("gNavi_NPC_Outer", naviColor->outer);
|
customOuterNaviColor = CVar_GetRGB("gNavi_NPC_Outer", (Color_RGB8){ 0, 0, 0 });
|
||||||
}
|
}
|
||||||
if (actorCategory == ACTORCAT_BOSS || actorCategory == ACTORCAT_ENEMY) {
|
if (actorCategory == ACTORCAT_BOSS || actorCategory == ACTORCAT_ENEMY) {
|
||||||
naviColor->inner = CVar_GetRGBA("gNavi_Enemy_Inner", naviColor->inner);
|
customInnerNaviColor = CVar_GetRGB("gNavi_Enemy_Inner", (Color_RGB8){ 0, 0, 0 });
|
||||||
naviColor->outer = CVar_GetRGBA("gNavi_Enemy_Outer", naviColor->outer);
|
customOuterNaviColor = CVar_GetRGB("gNavi_Enemy_Outer", (Color_RGB8){ 0, 0, 0 });
|
||||||
}
|
}
|
||||||
if (actorCategory == ACTORCAT_PROP) {
|
if (actorCategory == ACTORCAT_PROP) {
|
||||||
naviColor->inner = CVar_GetRGBA("gNavi_Prop_Inner", naviColor->inner);
|
customInnerNaviColor = CVar_GetRGB("gNavi_Prop_Inner", (Color_RGB8){ 0, 0, 0 });
|
||||||
naviColor->outer = CVar_GetRGBA("gNavi_Prop_Outer", naviColor->outer);
|
customOuterNaviColor = CVar_GetRGB("gNavi_Prop_Outer", (Color_RGB8){ 0, 0, 0 });
|
||||||
}
|
}
|
||||||
|
naviColor->inner.r = customInnerNaviColor.r;
|
||||||
|
naviColor->inner.g = customInnerNaviColor.g;
|
||||||
|
naviColor->inner.b = customInnerNaviColor.b;
|
||||||
|
naviColor->outer.r = customOuterNaviColor.r;
|
||||||
|
naviColor->outer.g = customOuterNaviColor.g;
|
||||||
|
naviColor->outer.b = customOuterNaviColor.b;
|
||||||
}
|
}
|
||||||
|
|
||||||
targetCtx->naviRefPos.x = actor->focus.pos.x;
|
targetCtx->naviRefPos.x = actor->focus.pos.x;
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ void EnDns_Init(Actor* thisx, GlobalContext* globalCtx) {
|
|||||||
s16 respawnData = gSaveContext.respawn[RESPAWN_MODE_RETURN].data & ((1 << 8) - 1);
|
s16 respawnData = gSaveContext.respawn[RESPAWN_MODE_RETURN].data & ((1 << 8) - 1);
|
||||||
this->scrubIdentity = Randomizer_IdentifyScrub(globalCtx->sceneNum, this->actor.params, respawnData);
|
this->scrubIdentity = Randomizer_IdentifyScrub(globalCtx->sceneNum, this->actor.params, respawnData);
|
||||||
|
|
||||||
if (Randomizer_GetSettingValue(RSK_SHUFFLE_SCRUBS) == 1 || Randomizer_GetSettingValue(RSK_SHUFFLE_SCRUBS) == 3 && this->scrubIdentity.itemPrice != -1) {
|
if ((Randomizer_GetSettingValue(RSK_SHUFFLE_SCRUBS) == 1 || Randomizer_GetSettingValue(RSK_SHUFFLE_SCRUBS) == 3) && this->scrubIdentity.itemPrice != -1) {
|
||||||
this->dnsItemEntry->itemPrice = this->scrubIdentity.itemPrice;
|
this->dnsItemEntry->itemPrice = this->scrubIdentity.itemPrice;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11175,8 +11175,8 @@ s16 func_8084ABD8(GlobalContext* globalCtx, Player* this, s32 arg2, s16 arg3) {
|
|||||||
s16 temp3;
|
s16 temp3;
|
||||||
|
|
||||||
if (!func_8002DD78(this) && !func_808334B4(this) && (arg2 == 0)) {
|
if (!func_8002DD78(this) && !func_808334B4(this) && (arg2 == 0)) {
|
||||||
if (CVar_GetS32("gAutoCenterView", 0)) {
|
if (!CVar_GetS32("gDisableAutoCenterView", 0)) {
|
||||||
temp2 = sControlInput->rel.stick_y * 240.0f * (CVar_GetS32("gInvertYAxis", 1) ? -1 : 1);
|
temp2 = sControlInput->rel.stick_y * 240.0f * (CVar_GetS32("gInvertYAxis", 1) ? 1 : -1);
|
||||||
Math_SmoothStepToS(&this->actor.focus.rot.x, temp2, 14, 4000, 30);
|
Math_SmoothStepToS(&this->actor.focus.rot.x, temp2, 14, 4000, 30);
|
||||||
|
|
||||||
temp2 = sControlInput->rel.stick_x * -16.0f * (CVar_GetS32("gInvertXAxis", 0) ? -1 : 1);
|
temp2 = sControlInput->rel.stick_x * -16.0f * (CVar_GetS32("gInvertXAxis", 0) ? -1 : 1);
|
||||||
|
|||||||
@@ -1421,7 +1421,7 @@ void FileChoose_DrawWindowContents(GameState* thisx) {
|
|||||||
gSP1Quadrangle(POLY_OPA_DISP++, 8, 10, 11, 9, 0);
|
gSP1Quadrangle(POLY_OPA_DISP++, 8, 10, 11, 9, 0);
|
||||||
}
|
}
|
||||||
//Draw MQ label
|
//Draw MQ label
|
||||||
if (Save_GetSaveMetaInfo(i)->isMasterQuest) {
|
if (Save_GetSaveMetaInfo(i)->isMasterQuest && Save_GetSaveMetaInfo(i)->valid) {
|
||||||
if (CVar_GetS32("gHudColors", 1) == 2 && FileChoose_IsSaveCompatible(Save_GetSaveMetaInfo(i))) {
|
if (CVar_GetS32("gHudColors", 1) == 2 && FileChoose_IsSaveCompatible(Save_GetSaveMetaInfo(i))) {
|
||||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, CVar_GetRGB("gCCFileChoosePrim", Background_Color).r, CVar_GetRGB("gCCFileChoosePrim", Background_Color).g, CVar_GetRGB("gCCFileChoosePrim", Background_Color).b, this->nameAlpha[i]);
|
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, CVar_GetRGB("gCCFileChoosePrim", Background_Color).r, CVar_GetRGB("gCCFileChoosePrim", Background_Color).g, CVar_GetRGB("gCCFileChoosePrim", Background_Color).b, this->nameAlpha[i]);
|
||||||
} else if (!FileChoose_IsSaveCompatible(Save_GetSaveMetaInfo(i))) {
|
} else if (!FileChoose_IsSaveCompatible(Save_GetSaveMetaInfo(i))) {
|
||||||
@@ -1921,8 +1921,8 @@ void FileChoose_LoadGame(GameState* thisx) {
|
|||||||
|
|
||||||
Randomizer_LoadSettings("");
|
Randomizer_LoadSettings("");
|
||||||
Randomizer_LoadHintLocations("");
|
Randomizer_LoadHintLocations("");
|
||||||
Randomizer_LoadMerchantMessages("");
|
|
||||||
Randomizer_LoadItemLocations("", true);
|
Randomizer_LoadItemLocations("", true);
|
||||||
|
Randomizer_LoadMerchantMessages("");
|
||||||
|
|
||||||
gSaveContext.respawn[0].entranceIndex = -1;
|
gSaveContext.respawn[0].entranceIndex = -1;
|
||||||
gSaveContext.respawnFlag = 0;
|
gSaveContext.respawnFlag = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user