3.3 KiB
Celeste (01002B30028F6000)
Update 1.4.1.1 (v589824; the title shows v.1.4.1.0), SDK 15.3.2. MonoGame for the Switch: MonoGame's and the game's C# compiled to C++ by Sickhead's BRUTE into main (78 MB with its bss), FMOD Studio sound (its banks in Content/FMOD/Desktop) through AudioOut, on NVN. Modules main and sdk only; sdk is the same build as Paper Mario: The Thousand-Year Door 1.0.1's (0100ECD018EBE000). Brought up with no host change; plays on the iPhone.
On the Mac: the logos, the title, a new file and the prologue (walking, jumping, the camera following Madeline), at 60 fps with music and sound, no red line; about 1.6–1.7 GB resident, flat over five minutes.
What it needs
The provisional profile's guesses held: no key needed changing.
| Setting | Where | Why |
|---|---|---|
sys_resource 0x0 |
game.tsv |
the NPDM declares no system resource, so IsVirtualAddressMemoryEnabled is false, as on Horizon: no virtual address memory. The game sets a 3.11 GB heap (pool − used memory) |
4 GB layout: mem_reserve 0x100000000, mem_alias 0x10000000, mem_stack 0x10000000, app_pool 0xCD500000 |
game.tsv |
256 MB in front + 256 MB alias region + 256 MB stack region + 3.25 GB heap region |
mem_used 0x6400000 (100 MB) |
game.tsv |
the rewritten modules are larger than the default 64 MB of used memory (BRUTE's main alone is 78 MB with its bss), so the heap request plus the modules would exceed the pool |
| Node area cut and 1 GB → 32 MB region alignment | dm/tools/sdk_patches.py, sdk build 8618895246b4… |
Absolum's cuts, registered on this build for Paper Mario; Celeste has no virtual address memory and never makes an address region |
shader_groups /Content/=content |
game.tsv |
the MonoGame effects; see Shaders |
No pad_layout: the virtual gamepad starts in the 2D layout (the default).
Shaders
- Current: 26 (20 pixel, 6 vertex) in MonoGame effects (MGFX version 8): the 13 XNB files in
Content/Effectsand SpriteBatch's built-in effect inmain, read byshader_split.py(mgfx_effect). No other file and no GLSLC output holds shaders. Every binding decodes, with Mario's binding layout. - The XNB files are platform
S, uncompressed, read byEffectReader; each holds one MGFX effect. Inmain, four bytesMGFXcount only when version 8 and a control section follow. - 10 of the 13 effects have no vertex shader: SpriteBatch binds its own and the effect's pass only replaces the pixel shader. Vertex and pixel shaders therefore combine across effects, and they are paired as single-stage programs.
Input
- Controller only. The game maps its buttons by position, so B and X jump.
Mac routes
- A fresh save reaches the prologue with
DM_KEYS="f1850:A,f2200:A,f2600:A,f3000:A"(the title, Climb, a new file, Begin; control of Madeline from about frame 5,000); thenf5100:LRight~1.0,f5400:LRight+X~0.3walks to the first ledge and jumps onto it.
Found on this game
General host changes first needed here; each applies to every game:
- MonoGame effects (MGFX) in XNB files and in
main(mgfx_effectinshader_split.py): MGFX effects in MonoGame XNB files.
Open
- Only the merged 1.4.1.1 copy is extracted; the base game v0 is not.