Go Back   Project64 Forums > General Discussion > Open Discussion

Thread Tools Display Modes
Old 13th July 2018, 02:43 PM
Crash_ Crash_ is offline
Junior Member
Join Date: Jul 2018
Location: Homeless
Posts: 5

Originally Posted by HatCat View Post
So! Ended up working on this utility again and added a couple new features.

Has anyone here gotten frustrated that you've played through the whole game, see less than 20 full hearts in Link's HUD, and cannot remember what heart piece you could have possibly missed? That's happened to me a few times...very frustrating. I think I've read a couple users outside of here who desperately were trying to remember what heart piece they missed and had to go back and get for completion.

So now, with the -v flag (no parameters necessary), you can get a full list of heart pieces and heart containers (in case you killed a boss and got their remains but somehow overlooked collecting the heart container for some reason) missing in your game save:

Yeah, it'll show other stuff as well, like the number of times you've saved your game with the Song of Time or by defeating Majora. (I'd have to double-check, but I think saving with owl statues also increments the times saved counter as well...not sure off hand.)

In the future I plan to also implement missing stray fairies detection. Sure, it's easy enough to use this save editor to load the game up with all 15 stray fairies for every temple you want, but just as we can be frustrated with not remembering what heart piece we missed, some of us who are genuinely trying to complete the game might want to save with an owl statue and have this tool print out which stray fairies they've forgotten. (Besides, unlike with heart pieces, the 1s and 0s of the stray fairy collections are contiguously stored in linear pairs of bits, which means each stray fairy has a fixed number that is the shift amount in that struct bitfield...makes me curious about documenting the internal ID numbers for stray fairy locations. I can already tell it doesn't match Nintendo Power's stray fairy numbers.)

Names of heart pieces I have just copied off of the naming in Nintendo Power's magazine for MM. I've tossed my old Prima Games strategy guide for the game many years ago and can't find an online copy, so I went with Nintendo Power. My preferred (and in my not-so-humble opinion, far superior) numbers of ordering the heart pieces are given first, followed by "(Nintendo Power ###)" at the end with the number you can look up in their magazine if you don't recognize the HP.

As an aside, I've also since implemented a new -W command switch for the 800-bit flags array of event-based stuff Link has done during the 3-day cycle. This includes infinite magic from drinking Chateau Romani, which is what the -W 115 true is for in the screenshot above. It gives Link infinite magic upon beginning the game. (Previously I had to accomplish this by putting Chateau Romani in Link's inventory with the save editor, but I think this saves an extra step and an empty bottle.)

For anyone curious, bit addresses of the heart pieces and storage of the names are all documented in the commit to source:
God damn, you never get bored of this.
Reply With Quote
Old 30th July 2018, 09:48 AM
buckchow buckchow is offline
Junior Member
Join Date: Mar 2018
Posts: 6

Originally Posted by HatCat View Post
And yeah, if you're adding this feature in just for yourself then that makes it a little easier to implement. One good thing about open-source.
I finally had time to get automatic inventory and button conversion working between the old (early Japan) and new (other) save versions. The new/additional code is attached (not full source files, sorry).

Adding -S will cause the inventory (0x0070-0x009F) and button assignments (0x004C-0x005B) to be converted to the opposite format.

To convert save slot 0 (file 1) from old -> new:
zs flash.fla -J true -S -J false
-J true = treat input as old format
-S = swap/convert old format to new format
-J false = set checksum calculation mode for new format

To convert save slot 0 (file 1) from new -> old:
zs flash.fla -S -J true
-S = swap/convert new format to old format
-J true = set checksum calculation mode for old format

To convert save slots 0 and 1 (file 1 and file 2) from new -> old:
zs flash.fla -S -J true "-@" 1 -J false -S -J true
-S = swap/convert new format to old format
-J true = set checksum calculation mode for old format
"-@" 1 = calculate checksum for slot 0 (file 1) and select slot 1 (file 2)
-J false = treat input as new format
-S = swap/convert new format to old format
-J true = set checksum calculation mode for old format

The order of the items on the command-line is essential so that the old/new mode is always set correctly.

Currently no attempt is made to change anything else like the name.

Hopefully somebody finds this useful.
Attached Files
File Type: zip zs_data changes.zip (1.2 KB, 0 views)
Reply With Quote

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

All times are GMT. The time now is 09:57 AM.

Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.