Homebrew game Project [Release] The Minish Cap – Alek's Ultimate NX Edition | Dual Screen, FLIP GRIP SUPPORT, Touch, RetroAchievements

  • Thread starter Thread starter alexgg1014
  • Start date Start date
  • Views Views 5,700
  • Replies Replies 64
  • Likes Likes 15
Found it, and your logs nailed it — thank you.

It's not an asset problem: your assetfix.log shows the Cave of Flames-era
repairs all working, so re-extracting wouldn't have helped.

The Lake Hylia crash is an out-of-bounds read in the NPC sprite-loading code.
An NPC type index runs 43 slots past the end of a 21-entry table and lands in
the font colour buffer next to it, so the game ends up dereferencing pixel data
as a pointer. On the original GBA that read is harmless garbage; on the Switch
it's a hard fault, which is why it happens every single time in the same spot.

Fix is straightforward (bounds-check the index) and will be in the next build.
The other log you sent is a separate one in Julietta's house from an older
build, and the hang_report is a third thing — a freeze inside the renderer in
the Minish Woods. I'll look at both.
Thank you! Has been fun re-playing this, its been a looong time! Appreciate your effort!
Post automatically merged:

Ran into a crash when trying to talk to this guy as well, game crashes and back to atmosphere

2026090820303000-BAA196B407E24F826958809FC86B3A30.jpg
 

Attachments

Last edited by digdat0,
  • Love
Reactions: impeeza
Thank you! Has been fun re-playing this, its been a looong time! Appreciate your effort!
Post automatically merged:

Ran into a crash when trying to talk to this guy as well, game crashes and back to atmosphere

View attachment 589919
Ok thx sorry for dont updated yet i hadn't enough time I will release a hotfix, thx
Post automatically merged:

v1.3.3 is up.

https://github.com/Alexgg1014/The-L...lek-s-Ultimate-NX-Edition/releases/tag/v1.3.3

Update even if none of the achievement bugs affect you. This one fixes a way
your save file could be destroyed.

SAVES
The game commits a save eight bytes at a time — about 160 writes for one file —
and until now it rewrote the entire save file after every single one of them,
starting each rewrite by emptying it. For a fraction of a second, ~160 times per
save, tmc.sav was either empty or half-written. Close the game in one of those
moments (exiting homebrew from the HOME menu is enough) and the file was left
too short. Next boot the game read it, found a broken header, and did what a
game does with a broken save: it formatted it. All three files, gone.

Saves are now written to a temp file and swapped into place, so the real file is
only ever replaced by a complete one, and a save that isn't a whole image is
refused instead of formatted over. A backup of what you started the session with
is kept beside it as tmc.sav.bak.

If this already happened to you, check SETTINGS -> LOAD AUTOSAVE before starting
over. The autosave ring is written safely and was never affected.

LAKE HYLIA CRASH
Fixed. An NPC asked a 21-entry sprite table for entry 64, read 43 slots past the
end into the font colour buffer behind it, and handed the sprite loader eight
bytes of that as a memory address. On real GBA hardware that lands on a ROM word
— wrong sprite, no crash. Thanks to digdat0 for the logs that pinned it.

ACHIEVEMENTS
Three fixes:

- Offline achievements never actually worked. v1.3.0 cached the login and the
session start but not the achievement set itself, because the list of
cacheable steps was written for the old RetroAchievements flow where the set
arrived in a request called "patch". rcheevos 12 fetches it through
"achievementsets" and never sends "patch" at all.
- Unlocks earned offline were saved to your SD card correctly and then never
sent. The only thing that drained that queue was a reconnect within the same
session, so an unlock earned offline in a run that then closed was never
looked at again. It now drains on every boot.
- Unlocked achievements kept their grey badge. RA publishes each badge twice,
colour and greyed, under the same id, and the game filed both under the same
name. Whichever arrived first won for good.

IMPORTANT: connect to the internet once after updating. The achievement set has
never been written to your SD card, so the first boot with a network is what
saves it. Offline boots after that will show your achievements.

STILL OPEN
The crash digdat0 hit with the Tingle sibling in Hyrule Field is not fixed. It's
a different bug from the Lake Hylia one and the report couldn't be resolved to a
function: every address in a crash log is where the code happened to be mapped
that run, and the load base only existed in Atmosphere's own crash report.

So this build makes the crash log resolve itself — it now prints an anchor
address that gives the load base — and drops a breadcrumb when a Kinstone fusion
starts, naming the fuser and the candidate slot.

digdat0: if you update and reproduce it, that new log alone will tell me the
exact function. That's the one I need.

Verification:
SHA-256 2cd63de916b1e9a76645a9f6369df09b1cd911bc5b8e392a9ceaff7059162150
tmc_aleks_ultimate_nx_v1.3.3.nro
Size 14210739 bytes

No need to touch your assets folder for any of this.
 
Last edited by alexgg1014,
@alexgg1014 Really appreciate your effort! No rush on any of this!

I tested both, the transition from Lon Lon Ranch to the right screen crashed the first time, second attempt gave a white screen, the third attempt loaded the next section and I could see the page, but it froze and then crashed.

Tingle sibling in Hyrule Field still crashes.

I'm also seeing the in-game updater give error "Update manifest rejected" which stopped working in 1.3.2.

Crash logs attached, let me know if I missed anything. Also adding atmosphere logs if thaat helps.
 

Attachments

  • Like
Reactions: alexgg1014
On the latest build 1.3.3 I just get the "loading" text and nothing else. I tried rebuilding the assets, which worked and I got to the menu.

When I attempted to start a new game, it froze on the initial save file creation. There was only a save.tmp file created.

On a restart, it just shows the screen with the "loading" text.
 
v1.3.5 — fixes the v1.3.3 save freeze

If you're on 1.3.3, update. That build freezes when it creates a save file, and that one is on me.

https://github.com/Alexgg1014/The-L...lek-s-Ultimate-NX-Edition/releases/tag/v1.3.5




What I broke

1.3.3 fixed a way your save could be destroyed. The fix was right, and it was also unusably slow — which I didn't catch because I never measured it.

The game writes a save eight bytes at a time: about 160 of those for one file, several hundred when it sets up a new game. 1.3.3 made every single one of them rewrite the whole file and swap it into place — create a temp file, write 8 KB, close, delete the real one, rename. Four SD card operations per eight bytes.

For a new game that's this:

Code:
1024 blocks (new game)
  operations during the writes : 0
  operations after one commit  : 3      <- v1.3.5
  what v1.3.3 did              : ~4096  <- minutes of freeze

And if you gave up and closed the game, you were left with just a tmc.sav.tmp — because the delete had already happened and the rename never did.

Writes are now gathered up and committed once per frame. Same protection: the real file is still only ever replaced by a complete one. Three operations instead of four thousand.

If it happened to you, your save is not gone. A complete tmc.sav.tmp is now recognised and restored on the next launch.

I also added a test that compiles the save code on a PC and asserts the number of filesystem operations, not just that the result is correct. That's the check that would have caught this before it shipped.




Also in this build

These were in 1.3.4, which the updater never actually offered anyone.

  • The Lon Lon Ranch transition crash. A Darknut's sword slash could be updated for one moment after its owner was gone during a room change, and it looked up the owner's data before the check that handles exactly that. On a GBA that read lands harmlessly in the BIOS; the Switch faults.
  • "Update manifest rejected". @digdat0 was right that it broke in 1.3.2. The file the game downloads to check for updates keeps three changelog lines, and on a fourth it threw the whole file away instead of ignoring the extra. 1.3.2 was the first release to ship four. Already fixed for everyone without updating — 1.3.5 just makes it impossible to repeat.
  • Crash reports resolve themselves. They now carry the address needed to turn a crash into a function name, and record which script command was running.




Still open

The Tingle sibling crash in Hyrule Field. It happens inside a script command handler, and those leave no trace on the call stack — so a report could only say "somewhere in the script engine", out of a hundred-plus commands. 1.3.5 names it.

@digdat0 — if you reproduce it on this build, that log is the one I need.




Verification

Code:
SHA-256  b672b0a840f0bd790619e74e9cc0a828318ddb719d3911fdc72753d7901b172c
         tmc_aleks_ultimate_nx_v1.3.5.nro
Size     14218931 bytes

Nothing to do with your assets folder — no deleting, no regenerating.
 

Site & Scene News

Popular threads in this forum