Sorry to keep you all waiting! University has me very busy.
Please make sure to read all the new features and fixes, and the warning in the Upgrade Notes section.
1.1.0 is the content-and-customization release: a Workshop for sharing tracks, machines, ghosts
and mods, Course Edit and input upgrades, a post-processing shader pipeline, and a batch of
long-standing bug fixes. It also adds experimental support for importing courses and machines
straight out of emulator disk images, and for playing ROM hacks. Save data from 1.0.x carries
over untouched.
Highlights
- Workshop > Content Library: export tracks and machines from the 64DD disk as
.gdxc
files, import ones you receive, and move the whole Edit Cup as a single bundle. - Shader pipeline: RetroArch
.slangppresets (CRT Royale, crt-geom, most of the
libretro slang pack) with live-editable parameters and custom preset saving. - Course Edit and Create Machine mouse support: place and steer with the mouse,
including optional mouse steering while test-driving. - Mod framework growth: model packs, sequence/sample/soundfont audio packs, Lua
script packs, per-tile atlas overrides, and pack ordering. - Experimental: import content from a 64DD disk dump without a conversion step, and
play ROM hacks packaged as.o2rarchives.
New features
Workshop & content
| Feature | What it does |
|---|---|
| Content Library | Lists tracks/machines on the disk; export to exports/<name>.gdxc, import back, share files with other players
|
| Edit Cup bundles | Export CENT + its tracks as one .gdxc; import registers the whole cup
|
| Ghost library names | Ghosts show machine and track names instead of raw IDs |
| Model packs (F4a) | Replace stock machine models via Workshop packs |
| Audio packs | Sequence (stage 2), sample (stage 3) and soundfont (stage 4) replacement packs |
| Lua scripting v1 | Workshop.Scripts runs Lua packs; example: docs/examples/lua/lap_timer.lua
|
| Pack ordering | Workshop.PackOrder decides which mod wins on conflicts, with Up/Down UI
|
| Atlas per-tile overrides | Texture packs can override individual atlas tiles by containing range |
| CI4/CI8 tooling | palette_key manifest column + TLUT swatch in gen_texture_pack.py
|
| EK static asset override | ek/<symbol> keys replace Expansion Kit assets
|
Experimental
These are new, they work on real content, and they are marked experimental because the failure
modes are not fully mapped yet. Nothing here can damage your existing data: disk images and ROMs
are only ever read, and your stock save is never touched.
| Feature | What it does |
|---|---|
| Import from a disk image | Content Library reads tracks and machines straight out of a 64DD disk dump from an emulator or console, with no .gdxc conversion step. Accepts .ndd, .ndr, .d6r, .n64dd (Project64, Mupen64Plus, RMG, ares, 64DD Dump Tool), .disk and .disk_save (ares, MAME, RetroArch), .d64, and raw .ram partition dumps (MiSTer). The extension is not what decides: the image is identified by its size and filesystem, so a renamed dump still opens.
|
| ROM Hacks | Play a hack packaged as an .o2r archive from mods/~romhacks/. One hack at a time, each with its own save file, so stock progress is never touched. The selection is latched at boot, so a change takes effect on the next launch.
|
| Build a hack archive | Point G-Diffuser at a ROM that already has the hack patched into it. It reads that ROM with the base game's recipes and writes an .o2r into mods/~romhacks/. Your ROM is only read, never written. US rev0 base only.
|
| Hack course names, subtitles and music | Track names, subtitles and per-course music now come from the hack rather than falling back to the retail game's. Extracted into the archive, so a hack is still a single file. |
Course Edit & gameplay
| Feature | What it does |
|---|---|
| Course Edit mouse (S1-S5) | Full mouse workflow in the editor |
| Mouse steering (#18) | Steer with the mouse in-game; sensitivity CVar included |
| Test drive machine/engine (F6) | Pick the machine and engine used in Course Edit test drive |
| OFFICIAL Back | Official courses return cleanly to the menu flow |
| Ending venue (F8) | Choose the venue for the ending ceremony |
| Widescreen test drive (F7) | Test drive renders in widescreen |
| Random opponent colors (F1) | Shuffles rival machine palettes per race |
| Palette editor (F2) | Edit machine palettes and persist them |
| Custom grid (F3) | Define the starting-grid roster yourself |
| Aggressive AI (F5) | Gameplay.AiAggression slider
|
| Effect colors (F9) | Boost, dash-pad, side-attack and ghost-boost color pickers |
| X Cup seed codes (M3) | Enter/share seeds for the generated cup |
Input & UI
- Gamepad seating G1-G3: assign pads to players, auto-assign on connect.
- Rumble (#15): motor support through
__osMotorAccess. - Menu gamepad navigation batch (D1/D4/D5/D9).
Graphics
- Slang shader pipeline: multi-pass
.slangppresets on both D3D11 and OpenGL,
with pass outputs, feedback, history, LUT textures and per-pass sizes wired up. - Shader parameters are editable live from the menu and persist as CVars; custom
presets can be saved as new.slangpfiles. - Shaders are user-installed: drop preset folders under
shaders/next to the
executable. There is no built-in downloader; the libretro slang-shaders pack has
no repo-wide license, so I do not bundle or fetch it.
Playtime & achievements
- Playtime tracking plus 26 local achievements (F10), persisted to
saves/. - RetroAchievements (F11) is not in this release, because RetroAchievements staff
have not responded to my messages yet.
Bug fixes
- #34 Ghost data endianness (byteswap) fixed; ghosts load correctly.
- #15 Rumble implemented.
- #18 Mouse steering.
- Shader menu no longer rescans thousands of files on a timer (the FPS tank when
entering the Shaders menu with a large pack installed). - "Reset to defaults" in shader parameters now resets the current shader's
parameters instead of switching to a different shader. - Shader parameter sliders apply live (no shader reload needed).
- Preset parser:
#referencechains resolve relative to each referencing file
(nested preset folders work), multiple references per preset, long paths on
Windows. - Slang translator: interpolation-qualified varyings (
noperspective), shaders
that shadow builtins (SourceSizeglobals/locals), UBO instance prefixes that
collide with local struct variables, and self-defined builtin macros all
translate correctly now. - A shader that fails to translate or parse no longer crashes the game; the frame
renders unfiltered and the failure is logged. - Disk image search also accepts the
baserom.translated.ek.nndfilename variant. - A freshly built ROM hack archive no longer warns that it is stale or incompatible.
The mount-time check classified archives by filename, so a hack was measured against
the texture-pack schema version instead of the ROM CRC it correctly carries. - ROM hack archives now report failures instead of loading nothing silently, and the
ROM Hacks panel has an Open folder button for installing a hack someone else built.
Known issues and limitations
Shaders
.glslpand.hlslpresets are not listed or loaded; the pipeline is.slangponly.- Very large shader chains (Mega_Bezel ADV class, 40+ passes) translate but may not
render correctly under OpenGL (texture-unit budget) and are heavy under frame
interpolation; the interpolation scheduler will shed sub-frames to protect game
speed, which shows as a lower, quantized FPS (for example ~130 with crt-geom). - Shaders relying on typed (non-float) uniforms are unsupported, for example
koko-aio'sfinal_passrotation uniform.
ROM hacks
- Only assets and courses come across. G-Diffuser runs the decompiled game's own
code, so whatever a hack changed in code does not run. Physics, AI, rules and menu
logic stay vanilla. - A hack has no reference archive to be checked against, so an asset that reads as
valid but is wrong cannot be detected when the archive is built. Booting it is the
only way to find out. - Building a hack archive requires a US rev0 base; JP is not supported.
- Course names, subtitles and music are read from fixed table offsets. A hack that
relocated those tables falls back to the retail text rather than showing garbage. - Expect visual glitches in hacks that changed things the recipes do not describe.
Other
- Frame interpolation camera smoothing (
GDX_INTERP_CAMERA) remains behind a dev
gate. - Intermittent race-entry crash (~1/13) is still under investigation.
G-Diffuser-JPbuild remains untested this cycle. Please, if you value your ears,
do not try to use the JP build right now.
Upgrade notes
- The About menu now reports version 1.1.0.
- The asset archive gained an entry this release, so an archive extracted by 1.0.x no
longer matches and is rebuilt on first launch. Keep your ROM where setup put it.
Without it, G-Diffuser sets the old archive aside and falls back to the raw ROM.