Repository navigation
Conversation
… fps on the Mac The game runs from its own code (rewritten where Apple's kernel requires it) on the shared runtime and the d2r_gfx Metal layer, as a self-contained games/engage folder: the rewriter, the shader tools (the Unity reader included), the NVN-on-Metal layer and the scripts are this folder's own copies, and nothing reads another games/ folder. What it needs: the base game plus the 2.0.0 update (SDK 12.3.7, Unity 2020.3.18f1 IL2CPP, Wwise), the 22.5.0 firmware for the shared fonts, and the 15 rewriter cuts on main that open the display size past its 1080p clamp. The render resolution is a runtime setting rather than a rebuild: runtime/render_res.c writes those 15 immediates at module load from the settings panel's value (0 = 1080p, 1 = 1440p, 2 = 2160p; the 2160p words are computed from the 1440p word's Rd, with the same word checked against the image before it is written), so one binary covers all three. Measured on an M1 Pro, macOS 27.2, 4K@60 display, from the title into the first chapters: the game builds its own 3840x2160 swap chain, the window is 1920x1080 points at contentsScale 2.000 (pixel for pixel; the MetalFX spatial scaler runs 0 times, where the 1440p build ran it 15,600 times), 60.0 fps steady over 37,007 frames / 620 s, 2,118 MB of GPU memory (1,788 MB at 1080p, 1,856 MB at 1440p), no red lines, no aborts. Also in the folder: nn::ro, nn::pctl and nn::account takeovers (the battle entry and the first boss both crashed on SDK fallbacks before), nvnCommandBufferDownsample as the MSAA resolve the game actually asks for (480x480, 2 samples to 1), the shader-reflection rule that a read is a 16-byte row (upstream dmsh_reflect's rule, which names this game), and the Switch 2 Pro Controller over USB (vendor-interface initialisation, raw report decode, drift gated before the reach self-calibration) including the name-entry screen, which blocks the main thread on nn::swkbd and now polls the pad as well. Known open, documented in the folder's README: no sound yet (the game never calls the AudioOut or renderer client entries; the device queries it does make all succeed), the opening movie looks magnified at 2160p only, and the settings panel's temporal-scaling entry stays disabled because the game's pipeline (Unity Post Processing Stack v1) produces no motion vectors.
|
| GitGuardian id | GitGuardian status | Secret | Commit | Filename | |
|---|---|---|---|---|---|
| 38336659 | Triggered | Generic Password | 34e5a87 | games/engage/runtime/swkbd_host.c | View secret |
🛠 Guidelines to remediate hardcoded secrets
- Understand the implications of revoking this secret by investigating where it is used in your code.
- Replace and store your secret safely. Learn here the best practices.
- Revoke and rotate this secret.
- If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.
To avoid such incidents in the future consider
- following these best practices for managing and storing secrets including API keys and other credentials
- install secret detection on pre-commit to catch secret before it leaves your machine and ease remediation.
🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.
…anner read 'password' as a credential) The ShowKeyboardArg field at +0x3b4 only asks the keyboard to conceal the text; nothing is stored and nothing is logged (the bar prints the character count instead). Renamed so an automated secret scanner does not flag a local uint32 variable, and the log line now says 'hidden text'.
|
False positive, and it is fixed in a3c007d anyway. The finding points at The scanner matched the identifier, so the variable and the offset constant are now named |
What this adds
games/engage/— Fire Emblem Engage 2.0.0 (title0100A6301214E000, SDK 12.3.7, Unity 2020.3.18f1 IL2CPP, Wwise, NVN) on the Mac, as a self-contained folder in the same shape asgames/ori: the rewriter, the shader tools (including the Unity bundle reader), the NVN-on-Metal layer and the build scripts are this folder's own copies, and nothing reads anothergames/folder.Build it from your own dump (base game + the 2.0.0 update) with
games/engage/scripts/build_engage.py; the 22.5.0 firmware supplies the shared fonts.Picture and performance (measured, M1 Pro, macOS 27.2, 4K@60 display)
contentsScale 2.000— pixel for pixel, no scalerThe render resolution is a runtime setting, not a rebuild:
runtime/render_res.cwrites the 15 immediates onmainat module load from the settings panel's value (0 = 1080p, 1 = 1440p, 2 = 2160p, applied on the next launch). The 2160p words are computed (0x52800000 | ((imm & 0xffff) << 5) | Rd,Rddecoded from the 1440p word) and each site is checked against the image before it is written, so one binary covers all three levels — verified by running the same binary three times and watching the swap chain come out 1920×1080 / 2560×1440 / 3840×2160.Two fixes were needed for 4K to actually be 1:1, both in
runtime/frontend.m: borderless/full-screen may cover the menu bar and Dock (the visible frame here is 1657×928 points, which pushedcontentsScaleto 2.328 and made the compositor resample every frame), andfront_fit_windowstays out of the way when the mode is not windowed (it counts the 28-point title bar, which turned 1080 points into 1048).What it took beyond the shared runtime
nn::ro,nn::pctl,nn::account: the game crashed on SDK fallbacks at start-up, when it enters the first battle, and at the first boss. Account now answers "query succeeds, no network account" for the network-account queries and fails the ones that need a real account.nvnCommandBufferDownsample: the call at battle entry is an MSAA resolve (480×480, 2 samples → 1, same format), not a 2×2 box; implemented as the Metal resolve.dmsh_reflect.pydocuments, naming this game) — one compute shader also binds a word that lands in the image region, which is bound to that image's texture.0x057e:0x2069, USB): vendor-interface initialisation, raw report decode, buttons debounced by one report and a drift gate before the reach self-calibration (the pad rests at 0.07–0.09, which the calibration amplified ontostick_axis's 0.12 deadzone). The name-entry screen blocks the main thread onnn::swkbd, which this port replaces with a Mac text bar, so the bar now polls the pad and offers a navigable character grid.How it was tested
Played on a Mac (M1 Pro) only: from the title through the name-entry screen into the first chapters, including the first boss; the opening movie, the title and the field all present. No iPhone or iPad build was made or played.
The repository has no
tests/directory to run.make runtimebuilds clean under-Werror -Wall -Wextra.Known open (also in the folder's README)
AudioTvOutput, 2 channels, volume 1.00). The IPC layer was ruled out with a request diary (100 requests, noOpenAudioRenderer), and four host-side experiments changed nothing. Next step is a debugger, stopping on the caller of the device queries.bloom, depth of field, camera motion blur,finalPost) and produces no motion vectors — nosmaa/fxaa/dlss/fsr/temporalshader exists among its 186 shader groups, and the run logs show no velocity target.