Commit Graph

37 Commits

Author SHA1 Message Date
Anders Jenbo
9997e45fa0
DOS port (#799)
Some checks are pending
CI / clang-format (push) Waiting to run
CI / ${{ matrix.name }} (false, --toolchain $GITHUB_WORKSPACE/CMake/i586-pc-msdosdjgpp.cmake, false, true, false, Ninja, DOS, ubuntu-latest, true) (push) Waiting to run
CI / ${{ matrix.name }} (false, --toolchain /usr/local/vitasdk/share/vita.toolchain.cmake, false, false, Ninja, Vita, ubuntu-latest, true, true) (push) Waiting to run
CI / ${{ matrix.name }} (false, -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0.26100.0, false, false, Visual Studio 17 2022, true, Xbox One, windows-latest, amd64, false, true) (push) Waiting to run
CI / ${{ matrix.name }} (false, -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/3DS.cmake, false, devkitpro/devkitarm:latest, false, Ninja, true, Nintendo 3DS, ubuntu-latest, true) (push) Waiting to run
CI / ${{ matrix.name }} (false, -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/Switch.cmake, false, devkitpro/devkita64:latest, false, Ninja, Nintendo Switch, true, ubuntu-latest, true) (push) Waiting to run
CI / ${{ matrix.name }} (false, emcmake, false, false, true, Ninja, Emscripten, ubuntu-latest, true) (push) Waiting to run
CI / ${{ matrix.name }} (false, false, false, Ninja, true, MSVC (arm64), windows-latest, amd64_arm64, false) (push) Waiting to run
CI / ${{ matrix.name }} (false, false, true, Ninja, true, MSVC (x86), windows-latest, amd64_x86, false) (push) Waiting to run
CI / ${{ matrix.name }} (false, true, false, Ninja, true, MSVC (x64), windows-latest, amd64, false) (push) Waiting to run
CI / ${{ matrix.name }} (false, true, true, false, Ninja, true, MSVC (x64 Debug), windows-latest, amd64, false) (push) Waiting to run
CI / ${{ matrix.name }} (true, false, -DCMAKE_SYSTEM_NAME=iOS, false, false, Xcode, true, iOS, macos-15, true) (push) Waiting to run
CI / ${{ matrix.name }} (true, false, false, false, Ninja, Android, ubuntu-latest, true) (push) Waiting to run
CI / ${{ matrix.name }} (true, false, true, false, Ninja, macOS, macos-latest, true) (push) Waiting to run
CI / ${{ matrix.name }} (true, true, false, Ninja, true, mingw-w64-x86_64, mingw64, msys2 mingw64, windows-latest, msys2 {0}, true) (push) Waiting to run
CI / ${{ matrix.name }} (true, true, true, false, Ninja, true, Linux (Debug), ubuntu-latest, true) (push) Waiting to run
CI / ${{ matrix.name }} (true, true, true, false, Ninja, true, Linux, ubuntu-latest, true) (push) Waiting to run
CI / FreeBSD (push) Waiting to run
CI / Flatpak (${{ matrix.arch }}) (aarch64, ubuntu-22.04-arm) (push) Waiting to run
CI / Flatpak (${{ matrix.arch }}) (x86_64, ubuntu-latest) (push) Waiting to run
CI / C++ (push) Waiting to run
CI / Release (push) Blocked by required conditions
Docker / Publish web port (push) Waiting to run
Co-authored-by: Anonymous Maarten <anonymous.maarten@gmail.com>
2026-05-04 01:25:27 +02:00
foxtacles
7b114bbe59
Add multiplayer extension (#789)
* Add multiplayer extension

* Fix animation system to work when host is outside ISLE world

- Move TickHostSessions outside m_inIsleWorld gate so the host can
  coordinate animations from any world
- Load animation catalog early in HandleCreate so the host can
  coordinate before entering the ISLE world
- Use network-reported positions for remote player location detection
  instead of requiring spawned ROIs
- Always erase sessions at launch — the host's job ends when the
  animation starts; clients play and complete independently
- Replace BroadcastAnimComplete with locally-driven completion
  callbacks: host generates eventId at launch, clients cache
  completion JSON at start time, fire it when ScenePlayer finishes
- Make StopAnimation only do local cleanup (stop playback, cancel
  own interest, reset coordinator) without destroying the session
  host, so other players' sessions survive world transitions
- Broadcast state=0 in ResetAnimationState for full teardown paths
  (shutdown, reconnect, host migration) so clients aren't left with
  stale session state

* Fix use-after-free crash in ScenePlayer when remote player disconnects mid-animation

When a remote player's ROI is destroyed (disconnect, timeout, or respawn),
notify all active ScenePlayer instances to null out dangling references
before the ROI is freed. The animation engine already handles null ROI map
entries gracefully, so playback continues for remaining participants.

* Fix crash when performer's child ROIs are left dangling in ScenePlayer

NotifyROIDestroyed now walks the parent chain to also invalidate child
ROIs of the destroyed performer (head, limbs, etc.) that were placed
into the roiMap by BuildROIMap. The ancestor walk happens once; all
other fields are cleaned with simple pointer equality.

* Allow spectator to play click animation during scene playback

* Make PTATCAM track spectator ROI instead of camera in ScenePlayer

* Only regenerate emscripten version files when git state changes

Replace add_custom_target(ALL) with add_custom_command(OUTPUT) so the
version script only runs when .git/HEAD or the current branch ref file
changes, instead of on every build.

* Fix ROI name collision causing dangling pointers in NPC locomotion roiMaps

When ScenePlayer created cloned NPC ROIs for cooperative animations, it
renamed them to match the original character name and added them to the
ViewManager. This created a name collision: two ROIs with the same name.
The original game's AppendROIToScene searches by name and stops at the
first match, so if a locomotion BuildROIMap ran while the clone existed,
it could capture pointers to the clone's child ROIs. When the clone was
later destroyed (CleanupProps), those roiMap entries became dangling
pointers, crashing in AnimateWithTransform at roi.h:151 (SetVisibility).

Fix: use the alias mechanism (already supported by AnimUtils::BuildROIMap)
instead of renaming clones. Also unify all ROI name generation behind a
shared counter to prevent character manager key collisions.
2026-04-05 17:13:15 +02:00
Anders Jenbo
6df6ae407c
Fix transition on software rendere (#543) 2025-07-07 02:43:25 +02:00
Anders Jenbo
6b446d242f
SDL_GPU: Fix transitions on scenes with 2D overlay (#529) 2025-07-05 22:01:21 +00:00
Anders Jenbo
af9f7cd791
3DS: Account for sprite scaling when resizing UI (#503) 2025-07-05 01:48:13 +02:00
Anders Jenbo
c63d725b64
Port WipeDown and Window to use DDBLT_COLORFILL (#506) 2025-07-03 22:20:31 +00:00
Anders Jenbo
55c13cd140
Implement dithering where relevant (#473) 2025-07-02 12:07:20 +02:00
Joshua Peisach
1ff768935e
3DS Port (#450)
* [WIP] 3ds port

Recommit of everything after the 2d renderer merge

* VERY AWESOME FEATURE FRFR

* Stopped CPU suicide and app crashing for now

* put in Texture3DS function thing

* Fix clear color

* Implement 2D rendering via Citro3D

* Set 3dsx smdh metadata

* Render world content, sort of

* Push mesh dynamically

* Remove Citro3D init hacks

* Clean up Citro3D implementation

* Try to upload meshes and convert matricies

* Fix 3D rendering

* Apply optimizations

* Implement lighting

* Set 3dsx smdh metadata

* Revert "Apply optimizations"

This reverts commit 6660082fef.

* Apply optimizations

* Added a cleaner icon (#4)

* Fix pure buffer clear frames (#9)

* Disable OpenGL on 3DS (#10)

* Fix tiled textures and improve UI image quality (#11)

* Create 3DS default config overrides

* 3ds: implement apt hooks

* remove unused import

* Apply suggestions from code review

Co-authored-by: Christian Semmler <mail@csemmler.com>
Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>

* Update miniwin/src/d3drm/backends/citro3d/renderer.cpp

Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>

* Separate 3DS apt hook code + move cmake 3ds into ISLE_BUILD_APP

* miniwin: use citro3dd if debugging

* Optimize texture encoding (#12)

* Cleanup

* Set correct mipmap level for UI textures (#13)

* cpack: include the .3dsx

* Add 3DS CI

* Fix CI

Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>

* syntax

* Refactor c3d renderer (#14)

* Refactor c3d renderer

* format

* Apply suggestions from code review

Co-authored-by: Anders Jenbo <anders@jenbo.dk>

---------

Co-authored-by: Anders Jenbo <anders@jenbo.dk>

* n3ds: just distribute the .3dsx

* upload 3dsx

* Skip uploading 3DS artifacts

* Update ci.yml

* Update ci.yml

* Remove extraneous ifdef

---------

Co-authored-by: MaxBrick <maximusbrick@gmail.com>
Co-authored-by: Anders Jenbo <anders@jenbo.dk>
Co-authored-by: Steven <139715581+StevenSYS@users.noreply.github.com>
Co-authored-by: Christian Semmler <mail@csemmler.com>
Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
2025-07-01 02:43:10 +00:00
Anders Jenbo
225adda309
Rendering refactoring (#459)
* Hint texture intent to renderer

* improve transparancy for 32bit rendering

* Align OpenGL ES 2.0 with SDL_GPU's 2D rendering
2025-06-30 22:51:26 +02:00
Anders Jenbo
b65284a7a0
Move 2D drawing and upscaling to the renderer (#348) 2025-06-25 19:45:26 +02:00
Christian Semmler
3cfa3f5bec
Hotfix: reserve instead of resize 2025-06-16 21:00:12 -07:00
Christian Semmler
83205e2e4e
Fix UB in software renderer (#322)
* Fix UB in software renderer

One cannot access elements of the vector that don't exist. `reserve` allocates memory, but doesn't add elements.

`D3DRMVERTEX& dst = m_transformedVerts[i];` is UB and crashes on Windows debug build

* Update renderer.cpp
2025-06-17 05:25:34 +02:00
Anders Jenbo
eab95514d6
Add an OpenGL ES 2.0 renderer (#287) 2025-06-17 03:47:23 +02:00
Anders Jenbo
2828452b35
Clean up rendering (#301) 2025-06-16 04:28:32 +02:00
Anders Jenbo
d06caa99cb
Dial software speculare color in to match the original as best possible (#302) 2025-06-14 16:52:08 +02:00
Anders Jenbo
81ba75ea65
SIMD optimize z-buffer clear (#283) 2025-06-13 01:21:34 +02:00
Christian Semmler
b95ca4b2a3
Fix m_callbacks resource issue (#289) 2025-06-12 21:37:51 +02:00
Anders Jenbo
4374453cb7
Align cache destruction callback in software renderer (#284) 2025-06-12 01:45:07 +02:00
Anders Jenbo
7732a3ccfd
Use edge walking for triangle rasterization (#280) 2025-06-11 21:56:12 +02:00
Anders Jenbo
b2354a85d0
Sort and render transparent objects last (#277) 2025-06-11 02:15:26 +02:00
Anders Jenbo
c8b8035de8
Upload models to GPU before rendering (#272) 2025-06-10 06:34:49 +02:00
Anders Jenbo
de82e8477a
Use dedicated path for flat shading (#248) 2025-06-09 05:06:19 +02:00
Anders Jenbo
cd4a24ec9e
Use indexed faces (#257) 2025-06-09 04:56:29 +02:00
Anders Jenbo
5be9b09b40
SDL3 GPU texture support (#254)
Co-authored-by: Anonymous Maarten <anonymous.maarten@gmail.com>
2025-06-09 01:04:19 +02:00
Anders Jenbo
4cd0385c38
Some cleanups for the software rendere (#261) 2025-06-08 23:31:29 +02:00
Anders Jenbo
ee372fbc8f
Replace GeometryVertex with D3DRMVERTEX (#259) 2025-06-08 23:06:38 +02:00
Anders Jenbo
12d01ae311
Refactor renderers (#237) 2025-06-05 04:07:42 +02:00
Anders Jenbo
0ac7fee23c
Renderer clean up (#228) 2025-06-04 02:21:06 +02:00
Anders Jenbo
f412d44f83
Config clean ups (#226) 2025-06-03 20:08:09 +02:00
Anders Jenbo
2affbdfcc7
Align hardware lighting with software (#221) 2025-06-03 02:16:33 +02:00
Anders Jenbo
f08aec7438
Add highlights to software rendering (#218) 2025-06-02 04:14:40 +02:00
Anders Jenbo
ec7204ed38
Add texture rendering to the software rendere (#211) 2025-06-01 05:21:59 +02:00
Anders Jenbo
403ead7453
Push textures to the rendere (#209) 2025-05-31 23:48:20 +02:00
Anders Jenbo
613e5b8d9f
Add lighting for software renderer (#205) 2025-05-31 03:28:00 +02:00
Anders Jenbo
0ab5070b46
software: Add support for transparent surfaces (#201)
Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
2025-05-31 02:41:09 +02:00
Anders Jenbo
6afb7626a0
Add lighting (#200)
Co-authored-by: Anonymous Maarten <madebr@users.noreply.github.com>
2025-05-31 01:12:54 +02:00
Anders Jenbo
4abd404f2d Implement Software rendering 2025-05-29 04:08:01 +02:00