apps/launcher: launcher for wolf3d, doom, quake (fix #39) #472

Merged
Burer merged 5 commits from wolf3d-launcher into main 2026-06-30 04:49:00 +00:00
Owner

Game launcher for Wolf3D, DOOM and Quake

Adds a launcher to pick window size/mode for the SDL games and start them with the right CLI args, plus the per-game and SDL-backend fixes needed for that.

Special thanks to @mxlgv for idea.

libs/sdl:

  • Add full-screen support (borderless window when SDL_FULLSCREEN is set)
  • Fix windowed frame size so the game buffer no longer overruns the bottom/right border by 1px
  • Skip the redundant kernel work-area fill (the per-frame blit covers it anyway)
    (Also resolves an old report asking for a transparent game-window background.)

apps/wolf3d:

  • Fix viewport shift on non-standard window sizes (use bufferPitch, not screenWidth)
  • Default to windowed and honor --windowed/--fullscreen (was force-fullscreen on KolibriOS)

apps/doom:

  • Render to 24bpp and SDL_SoftStretch to an arbitrary -winsize; drop the old integer scaler
  • Fix sound effects (use the slice size from the obtained SDL audio spec)
  • Set CWD to the executable dir so the WAD is found when run from the launcher
  • Read config from DOOMRC.TXT next to the WAD
  • Add to autobuild (built from source; prebuilt binary removed)

apps/quake:

  • Add full-screen support
  • Grow the heap to fit the z-buffer and surface cache, fixing OOM at larger resolutions
  • Clamp -winsize to MAXWIDTH×MAXHEIGHT so a large window can't overrun the renderer's static tables

apps/launcher:

  • FASM launcher that starts wolf3d/doom/quake with the chosen size and mode
  • Passes the per-game mode flag so each game opens windowed or full-screen as selected
  • Ships CLI-argument reference docs for each game
  • Wired into autobuild and the Games Center

Known limitations (out of scope):

  • Quake mouse control and a "bad server message" error are pre-existing sdlquake bugs (reproduce at any resolution).
  • Closing a Quake window has a short delay (SDL audio-thread teardown); left as-is.
image.png image.png image.png
## Game launcher for Wolf3D, DOOM and Quake Adds a launcher to pick window size/mode for the SDL games and start them with the right CLI args, plus the per-game and SDL-backend fixes needed for that. Special thanks to @mxlgv for idea. ### libs/sdl: - Add full-screen support (borderless window when `SDL_FULLSCREEN` is set) - Fix windowed frame size so the game buffer no longer overruns the bottom/right border by 1px - Skip the redundant kernel work-area fill (the per-frame blit covers it anyway) *(Also resolves an old report asking for a transparent game-window background.)* ### apps/wolf3d: - Fix viewport shift on non-standard window sizes (use `bufferPitch`, not `screenWidth`) - Default to windowed and honor `--windowed`/`--fullscreen` (was force-fullscreen on KolibriOS) ### apps/doom: - Render to 24bpp and `SDL_SoftStretch` to an arbitrary `-winsize`; drop the old integer scaler - Fix sound effects (use the slice size from the obtained SDL audio spec) - Set CWD to the executable dir so the WAD is found when run from the launcher - Read config from `DOOMRC.TXT` next to the WAD - Add to autobuild (built from source; prebuilt binary removed) ### apps/quake: - Add full-screen support - Grow the heap to fit the z-buffer and surface cache, fixing OOM at larger resolutions - Clamp `-winsize` to `MAXWIDTH`×`MAXHEIGHT` so a large window can't overrun the renderer's static tables ### apps/launcher: - FASM launcher that starts wolf3d/doom/quake with the chosen size and mode - Passes the per-game mode flag so each game opens windowed or full-screen as selected - Ships CLI-argument reference docs for each game - Wired into autobuild and the Games Center ### Known limitations (out of scope): - Quake mouse control and a "bad server message" error are pre-existing `sdlquake` bugs (reproduce at any resolution). - Closing a Quake window has a short delay (SDL audio-thread teardown); left as-is. <img alt="image.png" src="attachments/995ff13b-722c-44e7-880a-d135aa88a27d"> <img alt="image.png" src="attachments/2287c8cd-a8aa-4499-b157-65d3b3ac0b9d"> <img alt="image.png" src="attachments/c4ab87e1-f47a-4d5c-bee3-281a04a7bb32">
Burer force-pushed wolf3d-launcher from ba384f9e38 to 0c1ba93494 2026-06-21 19:54:24 +00:00 Compare
Burer changed title from WIP: apps/launcher: launcher for wolf3d, doom, quake to WIP: apps/launcher: launcher for wolf3d, doom, quake (fix #39) 2026-06-23 08:39:35 +00:00
Burer force-pushed wolf3d-launcher from cfd41875fa to 87a896a94e 2026-06-23 08:45:07 +00:00 Compare
Burer marked the pull request as ready for review 2026-06-23 08:47:55 +00:00
Burer force-pushed wolf3d-launcher from 87a896a94e to 0ee082d988 2026-06-23 10:25:45 +00:00 Compare
Burer force-pushed wolf3d-launcher from 0ee082d988 to 188f30b16c 2026-06-23 10:30:23 +00:00 Compare
Burer requested review from Developers 2026-06-23 10:46:04 +00:00
Burer requested review from Owners 2026-06-23 10:46:05 +00:00
Burer force-pushed wolf3d-launcher from 188f30b16c to aeb6b86c5d 2026-06-24 14:19:21 +00:00 Compare
Burer force-pushed wolf3d-launcher from 68615deace to 4b66bfc459 2026-06-26 06:29:32 +00:00 Compare
Burer force-pushed wolf3d-launcher from 4b66bfc459 to 6b36cca951 2026-06-26 08:50:54 +00:00 Compare
Burer force-pushed wolf3d-launcher from 6b36cca951 to 96ee6da702 2026-06-26 09:05:36 +00:00 Compare
Burer force-pushed wolf3d-launcher from 96ee6da702 to 5410320fa5 2026-06-26 09:42:31 +00:00 Compare
Burer force-pushed wolf3d-launcher from 5410320fa5 to 1940f90f0e 2026-06-26 09:46:03 +00:00 Compare
Leency approved these changes 2026-06-29 08:44:13 +00:00
bad_Dr3dd0x approved these changes 2026-06-29 18:12:11 +00:00
Burer added 5 commits 2026-06-30 04:45:09 +00:00
- borderless full-screen window (style Y=1) when SDL_FULLSCREEN is set
- correct the windowed frame size (5px skin border on the left, right and
  bottom) so the framebuffer blit no longer overruns the frame by 1px
- skip the redundant kernel work-area fill (the per-frame blit covers the
  whole client anyway)
- more robust debug output
- use bufferPitch instead of screenWidth for the view offset on
  non-standard window sizes
- default to windowed and honor --windowed/--fullscreen so the launcher
  controls the mode (the SDL backend now acts on SDL_FULLSCREEN, which
  used to be ignored)
- center the logical 320x200 layer (menus, title/intro, fonts, fullscreen
  pics) when the resolution is not an exact multiple of 320x200; the 3D
  view and in-game HUD stay full-screen
- render the fixed 320x200 frame to a 24bpp surface and SoftStretch it to
  an arbitrary window size (-winsize); drop the old blocky integer scaler
- fix sfx: take the slice size from the obtained SDL audio spec
- set CWD to the executable dir so the WAD is found when run from launcher
- read config from DOOMRC.TXT next to the WAD
- add to autobuild
- grow the heap to fit the z-buffer and surface cache for the requested
  resolution
- clamp -winsize to MAXWIDTH x MAXHEIGHT so a large window cannot overrun
  the software renderer''s static tables
apps/launcher: game launcher for wolf3d, doom and quake
Test PR / Build (en_US) (pull_request) Successful in 3m2s
Test PR / Build (es_ES) (pull_request) Successful in 3m6s
Test PR / Build (ru_RU) (pull_request) Successful in 3m6s
Build system / Build (es_ES) (push) Successful in 2m38s
Build system / Build (en_US) (push) Successful in 2m39s
Build system / Build (ru_RU) (push) Successful in 2m42s
Build system / Publish Images (push) Successful in 4m56s
89a7cd62e1
FASM launcher that starts wolf3d/doom/quake with the chosen window size and
mode via CLI args. Wire it into autobuild and the games menu; doom is now
built from source, so drop the prebuilt binary.
Burer force-pushed wolf3d-launcher from 1940f90f0e to 89a7cd62e1 2026-06-30 04:45:09 +00:00 Compare
Burer merged commit 89a7cd62e1 into main 2026-06-30 04:49:00 +00:00
Burer deleted branch wolf3d-launcher 2026-06-30 04:49:01 +00:00
Sign in to join this conversation.
No Reviewers
No labels
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: KolibriOS/kolibrios#472