mirror of
https://github.com/Cesarus85/ringfall-mjolnir-vr.git
synced 2026-10-25 08:00:29 +01:00
The loading screen (interface/progress_bar.c: a light sweeping from left to right over a picture, with a glowing trail) drew nothing: it uses the fixed-function pipeline (SetVertexShader with 0), which d3d8_gl.c did not have, and its picture, loading.tga, is on no retail disc. - d3d8_gl.c draws fixed-function immediate-mode draws with a vertex shader of its own (nv2a_fixed_function_glsl), positions transformed by the world, view and projection matrices; and keeps a front buffer (a 640x480 render target taking the middle of the frame at BlockUntilVerticalBlank) for GetBackBuffer with -1, the frame before, whose blur makes the light's trail. The screen is drawn in the middle 640 columns, as the menus are on a wide screen. - After it, the rasterizer's caches of the device's states and of its vertex shader are made the device's again (rasterizer_forget_hardware_state, rasterizer_vertex_shader_runtime_forget): it sets them itself; and SelectVertexShader (a packed program) always leaves the fixed-function pipeline. - On OpenGL ES (Android, the web) the fixed-function shader turns Direct3D's clip space as the others do (HALO_GLES); without OpenGL (debug.null_renderer) it is not compiled. - The picture is the Xbox's own: the retail default.xbe holds it (320 by 240, runs of 4-bit greys after its width and height), and importing a disc image now writes it into the maps folder as loading.tga: port/linux/src/ xiso.c, the Android app's XisoExtractor.java and the web page's xiso-worker.js. Without one (a maps folder copied by hand) the light sweeps over clouds the game makes. No game data is in the repository. - progress_bar.c also has a mode a download screen over the menus can use (a share given, from 0, drawn over the menus, and let go of). - A picture that cannot be written whole is not left cut short (the loading screen would read past it). Checked: port/web/tests/xiso.test.js takes the picture out of made-up executables (and an image's default.xbe); the Java decoder gives the same bytes as the JavaScript one; xiso.c's picture from a Rev 2 disc image matched a separate decoder's byte for byte; the Linux CI steps and the web build and its tests in Docker; the Windows release build. [The disc image parts (xiso.c, xiso-worker.js, XisoExtractor.java and xiso.test.js) redone on the rewritten disc-image readers.] Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit 010110026e719c3e8c38d36b93d57cf67b616230)