Skip to content

Arceuszada v1.0.8 ( L_jt_fix FIX )

Choose a tag to compare

@CarlosExabyte CarlosExabyte released this 05 Nov 08:08
3d44186
## Release Notes — Arceuszada v1.0.8 (Arceus Recomp)

This release resolves the post-intro loading screen crash on updated ROMs (`v1.0.1` through `v1.1.1`, such as `unhandled mid-function branch to 0x71017f7180 inside f_71017f6878+0x908`) and introduces 6 compilation and runtime safeguards across Windows environments.

---

### 🚀 Key Fixes & Improvements

#### 1. Universal Intra-Function Indirect Branch Dispatcher (`runtime/jump_table_fix.h`)
* **Root Cause Fixed:** In updated game dumps (e.g., `v1.1.1`, which compiles 2,083 object chunks instead of base v1.0.0's 2,067), function addresses shift (such as `f_71017ccbf8` moving `+0x29C80` bytes to `f_71017f6878`), causing unpatched mid-function `BR Xn` jumps to abort during the transition from the intro cutscene to Prelude Beach.
* **Solution:** Replaced address-specific filters and brittle lookback heuristics with a universal `L_jt_fix` local label switch generator. Any function containing an indirect register branch (`c->pc = c->x[...]`) now automatically maps all of its local `L_71<hex>` labels into a zero-overhead `switch (c->pc)` table before falling back to `rt_dispatch(c)` for external tail-calls.

#### 2. Automatic Fallback to `-O0` on Compilation Retries (`runtime/gamebuild.c`)
* If any medium-sized C chunk encounters an LLVM `-O1`/`-O2` out-of-memory error or timeout on systems with tight RAM/pagefile limits, subsequent retry attempts (`u->retries > 0`) automatically force `-O0` to guarantee 100% compilation completion.

#### 3. Smart Generator Concurrency on Low-RAM Systems (`runtime/gamebuild.c`)
* Prevents out-of-memory freezes during the initial 0%–20% code lifting phase on PCs with `<= 9 GB` of RAM by throttling concurrent `lasgen.exe` processes while lifting the massive `main` module.

#### 4. Linker Response File (`@objects.rsp`) for Long Directory Paths (`runtime/gamebuild.c`)
* Passes all 2,067–2,083 `.o` object file paths via `extracted/.gamebuild/objects.rsp` instead of raw command-line arguments, eliminating `CreateProcess` 32,767-character limit failures at 98% when extracted inside deep folder trees.

#### 5. Windows Defender Lock Retry Loop at 99% (`runtime/gamebuild.c`)
* Adds a 15-attempt retry loop (`300 ms` intervals) when moving the newly linked `lasgame.dll` into place, preventing `EACCES` (Access Denied) build failures while Windows Defender scans the newly created ~350 MB binary.

#### 6. Guaranteed 17 MB Shared Font Memory (`runtime/services/pl.c`)
* Enforces `SHMEM_SIZE = 0x1100000` (17 MB) for the `nn::pl` shared memory buffer in strict compliance with the Nintendo SDK.

---

### 📦 How to Update from v1.0.7 or Earlier
1. Extract `Arceuszada-v1.0.8.zip` and overwrite your existing files.
2. **Important (if upgrading from an older version):** Delete `extracted/lasgame.dll` and the `extracted/.gamebuild` folder once so the compiler rebuilds your game code with the new v1.0.8 jump-table dispatcher.
3. Run `Iniciar_Jogo.bat` or `arceusrecomp.exe`