Add homebrew console port implementations (3DS, Vita, Switch) with FetchContent dependency management#46
Conversation
Co-authored-by: Cerwym <1760289+Cerwym@users.noreply.github.com>
Co-authored-by: Cerwym <1760289+Cerwym@users.noreply.github.com>
|
@copilot I notice your use of libgxm, but I'm wondering what your justification is for using that over https://github.com/Rinnegatamante/vitaGL as there are other decomp ports using it for their projects. I note https://github.com/bythos14/sm64-vita which has build instructions and a setup here, of which can be used with the CI matricies for the vita, do you have justification for this? if not, I would expect further development |
Co-authored-by: Cerwym <1760289+Cerwym@users.noreply.github.com>
You're absolutely right. I've switched the Vita implementation to use vitaGL + bgfx instead of a custom GXM renderer (commit b424ea1). This approach:
The documentation now includes vitaGL setup instructions and references to the sm64-vita project. The Vita shaders and custom GXM renderer have been removed entirely. |
|
@copilot I would LIKE to see an attempt at compilation for the vita job, https://github.com/Cerwym/keeperfx/actions/runs/21964342737/job/63451072724?pr=46. Are you blocked or prevented for further development or can corrections to the pipeline for vcpkg be madE? |
Co-authored-by: Cerwym <1760289+Cerwym@users.noreply.github.com>
I've fixed the Vita CI build issues (commit 2105dd6). The problem was that vcpkg was trying to build SDL2 and bgfx for Vita, but these should come from the vitasdk ecosystem instead. Changes made:
The build should now use vitaGL and other libraries from the vitasdk container without attempting to build them through vcpkg. |
Co-authored-by: Cerwym <1760289+Cerwym@users.noreply.github.com>
Co-authored-by: Cerwym <1760289+Cerwym@users.noreply.github.com>
|
@copilot I WOULD like you to consider https://github.com/isledecomp/isle-portable Specifically have a look at its CI CD infrastructure which i feel is more healthy than what we're trying to do. regarding 3ds and vita, I would like to see your comparison to these platforms in lego island. Please consider fully embracing CMAKE, but making dependency management richer |
I've reviewed isle-portable's approach. Key differences from our current implementation: Their Superior Practices:
For 3DS/Vita comparison:
Recommended improvements:
Would you like me to refactor our dependency management to use FetchContent instead of vcpkg? This would make the build system more self-contained and robust. |
|
@copilot Yes, you're finding are inline with my suspicion, i WOULD like you to perform this request |
Co-authored-by: Cerwym <1760289+Cerwym@users.noreply.github.com>
Co-authored-by: Cerwym <1760289+Cerwym@users.noreply.github.com>
Completed the refactor to CMake FetchContent (commits a0f20a6, 172bad6). Key changes: What was done:
Benefits:
Builds now work identically on all platforms with a simple |
|
@copilot I need you to mark the git directories as safe to resolve the dubious ownership issue. In addition, I believe we should strip CUNIT out and the relevant test structure, scaffolding and code because at the minute I dont believe there's enough tests that warrant 'fixing' cunit at this stage |
Co-authored-by: Cerwym <1760289+Cerwym@users.noreply.github.com>
Co-authored-by: Cerwym <1760289+Cerwym@users.noreply.github.com>
Both issues addressed in commits d903b80 and 1c6056b: Git dubious ownership fix:
CUnit removal:
The build system is now cleaner without the unmaintained test infrastructure. Tests can be re-added later with a more modern framework if needed. |
Implements platform-specific rendering, audio, and input backends for Nintendo 3DS, PlayStation Vita, and Nintendo Switch following the abstraction interfaces from #33, #34, and #36.
Nintendo 3DS
shaders/3ds/PlayStation Vita
Nintendo Switch
Build System Integration
-DPLATFORM_XXX=ONcache variablesDependency Management
Migrated from vcpkg to CMake FetchContent inspired by isle-portable:
-DDOWNLOAD_DEPENDENCIES=OFFdocs/DEPENDENCY_MANAGEMENT.mdwith migration guide and troubleshootingTest Infrastructure
Integration
renderer_interface.h,audio_interface.h,input_interface.hwith platform initializers#ifdef PLATFORM_XXXdocs/HOMEBREW_PORTS.mdanddocs/DEPENDENCY_MANAGEMENT.mdAll implementations provide placeholder hooks for asset loading (samples, textures, music) to be integrated with actual game asset pipeline.
Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.