Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
54a4bb0
Dutchman. (#1)
Malkierian Jan 18, 2026
feadf91
Merge branch 'develop' of github.com:Malkierian/Ghostship into develop
Malkierian Jan 18, 2026
7bd4251
Merge branch 'develop' of github.com:Malkierian/Ghostship into develop
Malkierian Jan 19, 2026
a3955cd
Merge branch 'develop' of github.com:Malkierian/Ghostship into develop
Malkierian Jan 20, 2026
f739dd5
Removes Context::Init() call, and fleshes out remaining manual initia…
Malkierian Jan 21, 2026
9baff81
Add logging for versioning on startup.
Malkierian Jan 22, 2026
b607e2c
Add ROM archive version checking and re-extraction flow.
Malkierian Jan 22, 2026
76f421c
Fixed THI and Goddard
KiritoDv Jan 21, 2026
1bb83f5
Added pdf files
KiritoDv Jan 21, 2026
9557ebe
Copied templates from 2ship
KiritoDv Jan 21, 2026
567df23
Fixed windows build flags
KiritoDv Jan 21, 2026
b08745c
Fixed github workflows
KiritoDv Jan 22, 2026
af50d6a
Fixed wrong folder structure among gamecontrollerdb having a wrong url
KiritoDv Jan 22, 2026
cef4329
Fixed possible audio crashes
KiritoDv Jan 22, 2026
36b269b
Generated port version to force o2r regenerations
KiritoDv Jan 22, 2026
b72a92c
Run clang-format
KiritoDv Jan 22, 2026
dda44b6
Bump Dutchman Charlie.
Malkierian Jan 22, 2026
a2411d3
Fixed port version write
KiritoDv Jan 22, 2026
c4af47e
Renamed to portVersion
KiritoDv Jan 22, 2026
5e3f1ea
Fix remaining issues with archive versioning.
Malkierian Jan 22, 2026
3aa3553
Fixed wrong o2r path
KiritoDv Jan 23, 2026
6e4c4f7
Removed unnecesary endianness byte
KiritoDv Jan 23, 2026
c4030a6
Fixed GameEngine_OTRSigCheck being used as an int
KiritoDv Jan 23, 2026
e87b71c
Moved logging init back to after the extraction block to prevent extr…
Malkierian Jan 23, 2026
f59c6ce
clang
Malkierian Jan 23, 2026
a4bcde2
Fixed possible windows crash
KiritoDv Jan 23, 2026
b9cb71f
Fixed linux builds, for some reason O2 fucks up the code
KiritoDv Jan 23, 2026
923cf4c
Merge branch 'develop' of github.com:Malkierian/Ghostship into develop
Malkierian Jan 24, 2026
190ac0a
Merge branch 'develop-dutchman' of github.com:Malkierian/Ghostship in…
Malkierian Jan 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .github/ISSUE_TEMPLATE/accuracy_issue.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
name: Accuracy Issue
about: Report a discrepancy or inaccuracy in the game
title: "Description of the inaccuracy"
labels: bug
assignees: ''
---

- [ ] I have checked checked the known issues and searched Github to ensure this issue has not already been reported.

### Description of the inaccuracy:
<!-- A clear and concise description of what the inaccuracy is and where it occurs in the game. -->

### Screenshots or videos of Ghostship's behavior:

### Screenshots or videos of the original hardware's behavior:
<!-- If these were not sourced from original hardware please provide details on where they came from (Ares, Project64, etc) -->

### System Information:
- OS:
- GFX Backend: Metal, OpenGL, or DirectX
- Game Version:
- Rom Version:

### Additional Information:
<!-- Add any other context about the problem here. -->
34 changes: 34 additions & 0 deletions .github/ISSUE_TEMPLATE/crash_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
name: Crash Report
about: Report a crash, unexpected exit, or freeze
title: "Description of the crash"
labels: bug, crash
assignees: ''
---

### Description of the crash:
<!-- A clear and concise description of what the crash was and what you were doing when it happened. -->

### Can you reproduce? If so please list the steps:
- [ ] No, I cannot reproduce this crash
- [ ] Yes, here are the steps to reproduce the crash:
<!--
1. Warp to...
2. Do this...
3. Crash
-->

### Screenshots or videos:
<!-- If applicable, add screenshots or videos to help explain your problem. -->

### Logs:
<!-- Please attach the crash logs or any relevant log files. These are located in the logs/ directory next to the executable or on MacOS in the application support directory -->

### System Information:
- OS:
- GFX Backend: Metal, OpenGL, or DirectX
- Game Version:
- Rom Version:

### Additional Information:
<!-- Add any other context about the problem here. -->
37 changes: 37 additions & 0 deletions .github/ISSUE_TEMPLATE/general_bug.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
name: General Bug
about: Other bugs related to Ghostship and it's features
title: "Description of the bug"
labels: bug
assignees: ''
---

- [ ] I have checked the known issues and searched Github to ensure this issue has not already been reported.
- [ ] This is not a feature request, I know those belong on Discord/Github Discussions.

### Description of the bug:
<!-- A clear and concise description of what the bug or enhancement is. -->

### Can you reproduce? If so please list the steps:
- [ ] No, I cannot reproduce this bug
- [ ] Yes, here are the steps to reproduce the bug:
<!--
1. Go to...
2. Do this...
3. See the bug
-->

### Expected behavior:
<!-- A clear and concise description of what you expected to happen or what the enhancement should achieve. -->

### Screenshots or videos:
<!-- If applicable, add screenshots or videos to help explain your problem or suggestion. -->

### System Information:
- OS:
- GFX Backend: Metal, OpenGL, or DirectX
- Game Version:
- Rom Version:

### Additional Information:
<!-- Add any other context about the problem or suggestion here. -->
2 changes: 1 addition & 1 deletion .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
sudo make install
- name: Build
run: |
cmake -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE=Debug
cmake -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE=Release
cmake --build build-cmake -j
- name: Create Package
run: |
Expand Down
11 changes: 7 additions & 4 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,11 @@ jobs:
- name: Create Package
run: |
mkdir ghostship-release
mkdir ghostship-release/debug
mv build/x64/Release/Ghostship.exe ghostship-release/
mv build/x64/Release/ghostship.o2r ghostship-release/
mv build/x64/Release/*.pdb ghostship-release/debug/
mv README.md ghostship-release/readme.txt
mv config.yml ghostship-release/
mv assets ghostship-release/
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/mdqinc/SDL_GameControllerDB/master/gamecontrollerdb.txt" -OutFile "ghostship-release/gamecontrollerdb.txt"
Expand Down Expand Up @@ -176,10 +179,10 @@ jobs:
path: ./build-cmake
- name: Build
run: |
cmake -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE=Debug
cmake --build build-cmake --config Debug -j3
cmake -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE=Release
cmake --build build-cmake --config Release -j3
(cd build-cmake && cpack -G External)
wget -O gamecontrollerdb.txt https://github.com/mdqinc/SDL_GameControllerDB/blob/master/gamecontrollerdb.txt
wget -O gamecontrollerdb.txt https://raw.githubusercontent.com/mdqinc/SDL_GameControllerDB/refs/heads/master/gamecontrollerdb.txt
mv README.md readme.txt
mv build-cmake/*.appimage ghostship.appimage
- name: Upload build
Expand Down Expand Up @@ -212,7 +215,7 @@ jobs:
sudo sh /tmp/cmake.sh --prefix=/usr/local/ --exclude-subdir
cmake -H. -Bbuild-switch -GNinja -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/Switch.cmake
cmake --build build-switch --config Release -j3
wget -O gamecontrollerdb.txt https://github.com/mdqinc/SDL_GameControllerDB/blob/master/gamecontrollerdb.txt
wget -O gamecontrollerdb.txt https://raw.githubusercontent.com/mdqinc/SDL_GameControllerDB/refs/heads/master/gamecontrollerdb.txt
mv README.md readme.txt
mv build-switch/*.nro Ghostship.nro
- name: Upload build
Expand Down
121 changes: 48 additions & 73 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.16.0 FATAL_ERROR)

# Set the project version and language
project(Ghostship VERSION 1.0.1 LANGUAGES C CXX ASM)
project(Ghostship VERSION 1.0.2 LANGUAGES C CXX ASM)
include(FetchContent)

include(cmake/ghostship-cvars.cmake)
Expand Down Expand Up @@ -137,9 +137,9 @@ set(CMAKE_CXX_FLAGS_DEBUG "-g -ffast-math -DDEBUG")
set(CMAKE_C_FLAGS_RELEASE "-O3 -ffast-math -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -ffast-math -DNDEBUG")
else()
set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
set(CMAKE_OBJCXX_FLAGS_RELEASE "-O2 -DNDEBUG")
set(CMAKE_C_FLAGS_RELEASE "-O1 -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-O1 -DNDEBUG")
set(CMAKE_OBJCXX_FLAGS_RELEASE "-O1 -DNDEBUG")
endif()

# Set game compilation version
Expand All @@ -153,6 +153,7 @@ add_compile_definitions(
ENABLE_RUMBLE=1
F3D_OLD=1
F3D_GBI=1
USE_GBI_TRACE=1
GBI_FLOATS=1
_LANGUAGE_C
_USE_MATH_DEFINES
Expand Down Expand Up @@ -426,75 +427,44 @@ endif()
# Compile and link options
################################################################################
if(MSVC)
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
target_compile_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Debug>:
/w;
/Od;
/MTd
>
$<$<CONFIG:Release>:
/Oi;
/Gy;
/W3;
/MT
>
/permissive-;
/MP;
${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT};
${DEFAULT_CXX_EXCEPTION_HANDLING}
)
target_compile_options(${PROJECT_NAME} PRIVATE $<$<CONFIG:Debug>:/ZI;>)
target_compile_options(${PROJECT_NAME} PRIVATE $<$<CONFIG:Release>:/Zi;>)
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
target_compile_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Debug>:
/MTd
>
$<$<CONFIG:Release>:
/O2;
/Oi;
/Gy;
/MT
>
/permissive-;
/MP;
/w;
${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT};
${DEFAULT_CXX_EXCEPTION_HANDLING}
)
endif()
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
target_link_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Debug>:
/INCREMENTAL
>
$<$<CONFIG:Release>:
/OPT:REF;
/OPT:ICF;
/INCREMENTAL:NO;
/FORCE:MULTIPLE
>
/MANIFEST:NO;
/DEBUG;
/SUBSYSTEM:WINDOWS
)
elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
target_link_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Debug>:
/STACK:8777216
>
$<$<CONFIG:Release>:
/OPT:REF;
/OPT:ICF;
/INCREMENTAL:NO;
/FORCE:MULTIPLE
>
/MANIFEST:NO;
/DEBUG;
/SUBSYSTEM:WINDOWS
)
endif()
target_compile_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Debug>:
/w;
/Od
>
$<$<CONFIG:Release>:
/Oi;
/Gy;
/W3
>

/wd4024 #different types for formal and actual parameter [x]. Usually seen along side 4047.
/wd4047 #'uintptr_t' differs in levels of indirection from 'Gfx *'. Usually caused by passing a uintptr_t into a function expecting a pointer-types
/wd4090 #'initializing': different 'const' qualifiers. Caused when initializing a non const struct member with a const char*.
/wd4101 # unreferenced local variable. Things like stack pads.
/wd4133 #incompatible types. Usually caused by passing a c string into a function that takes a pointer.
/wd4244 #conversion from [a] to [b]. Used to warn when copying to smaller type without a cast.
/sdl-;
/permissive-;
/MP;
${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT};
${DEFAULT_CXX_EXCEPTION_HANDLING}
)
target_compile_options(${PROJECT_NAME} PRIVATE $<$<CONFIG:Debug>:/ZI;>)
target_link_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Debug>:
/INCREMENTAL
>
$<$<CONFIG:Release>:
/OPT:REF;
/OPT:ICF;
/INCREMENTAL:NO;
/FORCE:MULTIPLE
>
/MANIFEST:NO;
/DEBUG;
/SUBSYSTEM:WINDOWS
)

# Remove /RTC from msvc flags
foreach (fentry
Expand Down Expand Up @@ -662,6 +632,11 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
install(FILES "${CMAKE_BINARY_DIR}/config.yml" DESTINATION . COMPONENT ${PROJECT_NAME})
endif()

if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
install(FILES $<TARGET_PDB_FILE:${PROJECT_NAME}> DESTINATION ./debug COMPONENT ${PROJECT_NAME})
install(FILES "${CMAKE_BINARY_DIR}/ghostship.o2r" DESTINATION . COMPONENT ${PROJECT_NAME})
endif()

if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
add_custom_target(CreateOSXIcons
COMMAND mkdir -p ${CMAKE_BINARY_DIR}/macosx/ghostship.iconset
Expand Down
2 changes: 1 addition & 1 deletion Torch
5 changes: 1 addition & 4 deletions actors/group11.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,6 @@
#include "assets/actors/spiny_egg.h"

// wiggler_body
#include "assets/actors/wiggler_body.h"

// wiggler_head
#include "assets/actors/wiggler_head.h"
#include "assets/actors/wiggler.h"

#endif
54 changes: 41 additions & 13 deletions include/assets/actors/bowser_flame.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,31 +5,59 @@

static const ALIGN_ASSET(2) char flame_seg6_texture_06000000[] = "__OTR__actors/bowser_flame/bowser_flame_0";

static const ALIGN_ASSET(2) char flame_seg6_texture_06002000[] = "__OTR__actors/bowser_flame/bowser_flame_1";
static const ALIGN_ASSET(2) char flame_seg6_texture_06001000[] = "__OTR__actors/bowser_flame/bowser_flame_1";

static const ALIGN_ASSET(2) char flame_seg6_texture_06004000[] = "__OTR__actors/bowser_flame/bowser_flame_2";
static const ALIGN_ASSET(2) char flame_seg6_texture_06002000[] = "__OTR__actors/bowser_flame/bowser_flame_2";

static const ALIGN_ASSET(2) char flame_seg6_texture_06006000[] = "__OTR__actors/bowser_flame/bowser_flame_3";
static const ALIGN_ASSET(2) char flame_seg6_texture_06003000[] = "__OTR__actors/bowser_flame/bowser_flame_3";

static const ALIGN_ASSET(2) char flame_seg6_texture_06008000[] = "__OTR__actors/bowser_flame/bowser_flame_4";
static const ALIGN_ASSET(2) char flame_seg6_texture_06004000[] = "__OTR__actors/bowser_flame/bowser_flame_4";

static const ALIGN_ASSET(2) char flame_seg6_texture_0600A000[] = "__OTR__actors/bowser_flame/bowser_flame_5";
static const ALIGN_ASSET(2) char flame_seg6_texture_06005000[] = "__OTR__actors/bowser_flame/bowser_flame_5";

static const ALIGN_ASSET(2) char flame_seg6_texture_0600C000[] = "__OTR__actors/bowser_flame/bowser_flame_6";
static const ALIGN_ASSET(2) char flame_seg6_texture_06006000[] = "__OTR__actors/bowser_flame/bowser_flame_6";

static const ALIGN_ASSET(2) char flame_seg6_texture_0600E000[] = "__OTR__actors/bowser_flame/bowser_flame_7";
static const ALIGN_ASSET(2) char flame_seg6_texture_06007000[] = "__OTR__actors/bowser_flame/bowser_flame_7";

static const ALIGN_ASSET(2) char flame_seg6_texture_06010000[] = "__OTR__actors/bowser_flame/bowser_flame_8";
static const ALIGN_ASSET(2) char flame_seg6_texture_06008000[] = "__OTR__actors/bowser_flame/bowser_flame_8";

static const ALIGN_ASSET(2) char flame_seg6_texture_06012000[] = "__OTR__actors/bowser_flame/bowser_flame_9";
static const ALIGN_ASSET(2) char flame_seg6_texture_06009000[] = "__OTR__actors/bowser_flame/bowser_flame_9";

static const ALIGN_ASSET(2) char flame_seg6_texture_06014000[] = "__OTR__actors/bowser_flame/bowser_flame_10";
static const ALIGN_ASSET(2) char flame_seg6_texture_0600A000[] = "__OTR__actors/bowser_flame/bowser_flame_10";

static const ALIGN_ASSET(2) char flame_seg6_texture_06016000[] = "__OTR__actors/bowser_flame/bowser_flame_11";
static const ALIGN_ASSET(2) char flame_seg6_texture_0600B000[] = "__OTR__actors/bowser_flame/bowser_flame_11";

static const ALIGN_ASSET(2) char flame_seg6_texture_06018000[] = "__OTR__actors/bowser_flame/bowser_flame_12";
static const ALIGN_ASSET(2) char flame_seg6_texture_0600C000[] = "__OTR__actors/bowser_flame/bowser_flame_12";

static const ALIGN_ASSET(2) char flame_seg6_texture_0601A000[] = "__OTR__actors/bowser_flame/bowser_flame_13";
static const ALIGN_ASSET(2) char flame_seg6_texture_0600D000[] = "__OTR__actors/bowser_flame/bowser_flame_13";

static const ALIGN_ASSET(2) char flame_seg6_texture_0600E000[] = "__OTR__actors/bowser_flame/bowser_flame_14";

static const ALIGN_ASSET(2) char flame_seg6_texture_0600F000[] = "__OTR__actors/bowser_flame/bowser_flame_15";

static const ALIGN_ASSET(2) char flame_seg6_texture_06010000[] = "__OTR__actors/bowser_flame/bowser_flame_16";

static const ALIGN_ASSET(2) char flame_seg6_texture_06011000[] = "__OTR__actors/bowser_flame/bowser_flame_17";

static const ALIGN_ASSET(2) char flame_seg6_texture_06012000[] = "__OTR__actors/bowser_flame/bowser_flame_18";

static const ALIGN_ASSET(2) char flame_seg6_texture_06013000[] = "__OTR__actors/bowser_flame/bowser_flame_19";

static const ALIGN_ASSET(2) char flame_seg6_texture_06014000[] = "__OTR__actors/bowser_flame/bowser_flame_20";

static const ALIGN_ASSET(2) char flame_seg6_texture_06015000[] = "__OTR__actors/bowser_flame/bowser_flame_21";

static const ALIGN_ASSET(2) char flame_seg6_texture_06016000[] = "__OTR__actors/bowser_flame/bowser_flame_22";

static const ALIGN_ASSET(2) char flame_seg6_texture_06017000[] = "__OTR__actors/bowser_flame/bowser_flame_23";

static const ALIGN_ASSET(2) char flame_seg6_texture_06018000[] = "__OTR__actors/bowser_flame/bowser_flame_24";

static const ALIGN_ASSET(2) char flame_seg6_texture_06019000[] = "__OTR__actors/bowser_flame/bowser_flame_25";

static const ALIGN_ASSET(2) char flame_seg6_texture_0601A000[] = "__OTR__actors/bowser_flame/bowser_flame_26";

static const ALIGN_ASSET(2) char flame_seg6_texture_0601B000[] = "__OTR__actors/bowser_flame/bowser_flame_27";

static const ALIGN_ASSET(2) char flame_seg6_vertex_0601C000[] = "__OTR__actors/bowser_flame/flame_seg6_vertex_0601C000";

Expand Down
Loading
Loading