![]() |
Zelda Majora's Mask FLASHRAM Save Editor
|
doesn't work in W7.. TuT
|
Lies! I'm using Windows 7.
You're not calling the EXE right. 32-bit or 64-bit has no effect here.... Anyway I must have forgotten to upload source code...or...buried my reason for not doing so? I might have to look into maintaining this software again sometime soon. It's not as high a quality as I'd have liked, but I had no idea my attachment would get that many downloads, or that this thread would get read so many times...so, since people seem to like it, I'm rather ashamed of myself for not doing a more complete implementation. Also some people, would want to do a GUI frontend extension, to this console application, so, this should get another update. |
So it has been almost a full year since this thread was started, but no one else has made anything quite like this. Has there been, or is there any chance of progress being made on this?
I get it if there really isn't, it's just that for a game where it's relatively easy to accidentally not save your progress, I know a WHOLE lot of people would find a tool such as this to be really handy. I've tried using the tool you attached but I was lost almost instantly. I don't have the right expertise or know-how to figure out how to use it. Sorry for bringing up an old topic, but there is literally nothing else about this online. |
Didn't the zip come with a Bat file, & instructions on how to use? I remember not having a hard time, considering I was a total noob like 10 months ago, so it should be simple for you as well.
It's unfinished, since it's quite tedious to collect all information ;/ . Anyway, all you have to do is write the desired data in the bat file and run it. Unless other people help out with finding the values and addresses, don't expect this to be finished anytime soon. Maybe retroben could help :D . |
It isn't working for me, then. I run the .bat and nothing changes; I DO get a message saying "File occupation label missing" under the 2nd entry in cmd ("...ZS.EXE ZELDAM~1.FLA --owl-statues...").
Looking at the Manual, I understand it. I don't think I have a problem with entering the data I want to change. I think the problem is that I don't have the paths right, but I don't have an example of how it should look. Here's what's in the .bat file: Quote:
|
"File occupation label missing" is the error I wrote to indicate that you are modifying save data for a file that doesn't exist yet.
So if you have File 1 named "Link" or anything you like, it works. If you have File 1 blank/erased/new with no progress on it, it throws that error to complain a warning that you may be accidentally updating save data for what's really a blank progress slot. As to whether or not it works or quits the program as a fatal error, I don't remember. Been too many years since I started coding this thing. I regret forgetting to include working source code in this zip file so that other people could pick up from my source. I also would like to remove the CRT dependency and use lower-level code, but I'm too busy with things pertinent to emulation to get back to this. |
Quote:
Maybe it thinks the file occupation label is missing because in fact it was in the wrong byte order. That was another thing I should have done with this program ... detect if the byte order was swapped by Project64 and automatically determine whether doing the algorithm of my ZSENSWAP.EXE was even necessary, rather than making the user or commands script call it automatically every time and assume a Project64 format FLASHRAM. Apart from that endianness issue, yes, the save would work off a real N64 and not just an emulator. You might try omitting the first call to zsenswap.exe and keeping the second one. |
Quote:
Something that didn't work properly for me, and my guess is that I'm just confused about how it actually works, is the "--songs" action. All of these binary values you put in the MANUAL correspond to a song: Quote:
I didn't want to give myself every song though, just a few. Everything except the Bossa Nova, Elegy of Emptiness, Epona's Song and the Song of Storms. So based on my understanding of it above, I entere: Quote:
Quote:
The weirdest result was when I put in a binary (I forget the exact value) that gave the results of Epona's Song, Song of Soaring, Song of Storms, and each area's song except for the Oath to Order. Then, using that save, I entered the string for the Sonata of Awakening (0000000000000001). The results were that I had: Epona's Song, the Song of Storms but just the musical note icon (no name or diagram shown for it), the Goron Lullaby, and the Elegy of Emptiness. Then I got frustrated and started putting in totally random binary values that almost always gave me some combination without the Song of Time and Healing, and usually with all of the area songs, especially the New Wave Bossa Nova and Elegy of Emptiness. Odds are I'm just confused about how binary numbers work and I should be put to shame for it. For now I have every song learned, not using them until I actually obtain them in game, but I feel bad not being able to get some of them because the game thinks I already have them. :( But I am seriously thankful for this HatCat, even if you say it's sort of sloppy. It saved me a veritable shit-ton of time and trouble! :) |
I may try to get those Majora save bytes since I got a mouse replacement.
Let's just hope it is not too well protected or frequently repositioning in the RDRAM locations. I got a mouse to replace a cheaply made GE one that was doubling clicks,releasing dragged content,and missing clicks altogether. It is that "Giga" brand which also has a PS/2 adapter included so I may get better response times with that input slot. Thanks Radio Shack! |
Quote:
Doing --songs 00000001 or w/e turns off 7 songs, turns on 1. Then you did something like --songs 00010000 which turns off the 1 you just turned on earlier, turns on another one, with the other 7 still being forced off. There is no "default" or "neutral" or "leave as-is". If you say 0 you don't know the song; if you say 1 you do. The rest of the stuff you're observing does sound pretty strange though. I never had any trouble with --songs as it gave me exactly what I wanted whenever I ran it. Quote:
If the icon's there but you can't select it or get the pause screen to show the name, and it's white, it's Saria's Song. Can't learn it by playing the game obviously, but it's definitely in there. The other one is the Sun's Song, except the music note icon is golden. Or I have these two backwards. Quote:
|
Quote:
No CRC or anything like Ocarina of Time's SRAM had, just a basic 16-bit additive checksum that adds up to the sum of all the previous bytes for each save slot, nothing special. Only problem is that the location of the 16-bit checksum is different when saved/accessed by the Japanese Zelda Majora's Mask than the USA/PAL release. |
Sorry for bumping, but can I get some help here please? I'm trying to get this save file, but I have no idea how to use this save editor, can I get some help please? :<
EDIT: Okay, got it to work, save file appears on the menu screen, but when I open it, it starts from the beginning. |
Probably because of the byte order. There is a lot of bad code in this save editor, despite how effectively it may work. Any continuation of it has to be done by starting from scratch, maybe backport over the flash offsets used for the progress bits, hopefully the command option names too though that is going to be very difficult to staticize.
You have to call `zsenswap` first on the flash save, then `zs` to edit it, then `zsenswap` a second time to get it back into the artificial byte ordering N64 emulators use. Otherwise the flash would work only on a real N64 as tested by dsx and not on emulators such as pj64. |
Would anyone object to single-letter command opts?
Like instead of Code:
zs flashram.fla 0 --owl-statues 0000000011111100 Code:
zs flashram.fla 0 -o 0000000011111100 # unlock most owl statues I do miss the GNU style of cmd args really, but it has a big problem with algorithm. I can't think of a simple, readable way to staticize it...it's not like a single char where you can just do a switch on it, and this isn't JavaScript where you can do a switch on strings (which interprets as who-knows-what...), I would hate to write my own string CRC mechanism to work around it. Working with mass strings like that while parsing options would be a huge if-else-if which is just ugly and too dynamic. I didn't want to break compatibility with current released versions if anyone was too used to the "--owl-statues" way of saying it, but I figure I probably have to break backwards compatibility to a point anyway because right now this stupid EXE in this thread won't let you change more than one progress field per call to the exe (exactly 5 arguments every time) which is inflexible and does too much file I/O just to change 50 pieces of progress over 50 calls to the program. |
Quote:
I'm gettin bored these days, so I figure I may try collecting data on this game. I doubt I'd collect everything, but maybe add a few items to the list :D . |
Hello, I hope you have collected more information on this, really appreciate your work!
I have a strange problem: I lost my save file on which I played to right after the first boss after the first temple, so I tried your program with this code (I think you posted something like this somwhere here): ZSENSWAP.EXE ZELDAM~1.FLA zs ZELDAM~1.FLA 0 --file-erase zs ZELDAM~1.FLA 0 --file-new true zs ZELDAM~1.FLA 0 --file-rename "Link " # or whatever name you want zs ZELDAM~1.FLA 0 --owl-statues 0000000011011100 zs ZELDAM~1.FLA 0 --inv-subscreen 0000 # have Ocarina of Time zs ZELDAM~1.FLA 0 --inv-subscreen 0101 # have Hero's Bow zs ZELDAM~1.FLA 0 --inv-subscreen 0E0D # have Pictograph Box zs ZELDAM~1.FLA 0 --inv-subscreen 1212 # have an Empty Bottle zs ZELDAM~1.FLA 0 --inv-subscreen 1D32 # Deku Mask zs ZELDAM~1.FLA 0 --songs 0000000011010011 zs ZELDAM~1.FLA 0 --wallet 01 zs ZELDAM~1.FLA 0 --temple-Woodfall 00000111 zs ZELDAM~1.FLA 0 --boss-masks 0001 # you finished Woodfall ZSENSWAP.EXE ZELDAM~1.FLA PAUSE Issues: All my C buttons are assigned to Ocarina and can't be changed. My attack button is located to Ocarina, can't attack with my sword but instead he just pulls out the Ocarina TL;DR: Everything assigned to Ocarina Now what? ;( Thanks |
Seeife yeah I thought I had already done in-depth testing on the `--file-new true` command, but for whatever reason I seem to have not noticed my neglecting to clear the inventory to blank items (instead of the NULL byte 0 which really means the Ocarina of Time).
Look around in the "MANUAL" text file included with the release for some extra commands you could use to overwrite the remaining slots that have the ocarina assigned to them. I know offhand there's a --inv-b-button (?) or similar named command for changing your B-button icon to something else, like the Kokiri Sword for instance. Should be able to do the same with the C buttons. Unfortunately I can't remember if there's a command option for the equipment slots. Quote:
Yeah single-letter is faster to type, less self-explanatory less easy to remember without looking up for new people all the time. |
Okay, I'll try that. Really cool tool though, any chance on getting the source? :)
|
The source was something that has always been available but also that I blindly forgot to include in the zip with the binary release.
So the working source to the release would be in a slightly older branch/commit to the public repository. I can try to dig a link to that in case you think you might be able to fix the new file reset initialization issue yourself in the C code. |
Yes I think I could sure do that. Only problem is that the value for kokiri sword isn't documented in your MANUAL and I'm not exactly good at this reverse engineering stuff :D
Edit: It's 4D apparently. Nothing at all seems to be FF. So should be easy. |
Found a link which should work; let us know if it doesn't. Really what I've been trying to do is rewrite this little thing to be less embarrassingly coded, but in the meantime I think that should do it.
|
Anyway to change the name that you created before you started the game in Zelda?
|
Code:
--file-rename: What the game does with less-than-8-character names is just pad with spaces until the name is 8 characters, so you have to fill in the spaces yourself when renaming the file. Example if you want to rename File 1 to "Link", you actually have to specify as Code:
"Link " |
Thanks. Does this also work with OoT?
|
OOT uses SRAM, not flash RAM, so it is a different save chip entirely.
Never was particularly fond of Zelda OOT. Figured it was popular and rated highly enough that somebody else would do a save editor for it even if I never cared to, with or without any sort of help or influence from the MM one I am doing here. So far I've done at least one save editor for: a) mempak, b) EEPROM 512 B, c) EEPROM 2048B, d) flash RAM, but SRAM is the only type of save chip I have not yet written a game save editor for. I was contemplating whether I should do one for Super Smash Bros. or Zelda OOT...but if it ends up that I were to choose Zelda OOT, it only is because of my interest in Majora's Mask as a game. I figure maybe if I did decide to write a save editor for OOT it would continue to unravel more information about MM, both in and out of the flash save. |
Quote:
|
Sorry for the bump but better late than never for me to clarify this.
I've long since deleted the OP attachment in this thread. I'm no longer providing the binary release of this 4-year-old utility. So I have already ported most of the features to my new, from-scratch save editor sources: https://github.com/cxd4/zs-flash List of features I have implemented so far to edit the progress: https://github.com/cxd4/zs-flash/wiki/File-Format (Scroll down to Data Structure in each 4096-Byte Section.) You can compile it right away by executing `./make.sh` on Unix-based systems, or in the MSYS/MinGW Git command shell on Windows (or by double-clicking make_w64.cmd if you happen to have the Windows DDK installed). I might push release binaries once the crossover has been completed more. |
Update--I could swear that somebody in one of the threads here (or maybe in a PM) asked about the lottery numbers and how the flash save file stores the winning numbers. Can't remember where or who it was.
Well actually I just happened upon a pattern that fit exactly that, so it's implemented. Now this save editor can be used to view or change the winning 3 lottery numbers. The command to do it goes something like: Code:
zs ./mysavefile.fla -l 0 1 0 1 https://dl.dropboxusercontent.com/u/...da_lottery.png You can also just see the winning numbers by executing `zs ./mysave.fla $DAY_NUMBER` without the last 3 parameters. As usual there is more info on the wiki page about the featured command. |
i've spent hours in Visual Studio 2015 trying to compile build this thing... no luck. can someone smarter than me please do it? thanks in advance.... :confused:
|
I have not yet really recommended Visual Studio solution files to this project for some reasons.
Plain MSVC will build it fine without having to install the VS IDE if you can get a variation of it installed from Microsoft's installer files inside their ISO: https://www.microsoft.com/en-us/down....aspx?id=11800 I have just updated the README.md file in the repository to talk about compile directions. Quote:
|
File, new, project from existing code is what you want.
|
GIMP is telling me that it doesn't support EXE files.
:( |
Not sure if joking or asking for picture tutorial.
|
Nah, trolling pretty much. :3 (Except actually that did happen, lul.)
Anyway, I tried your exe on a public Windows computer this time. It says: Quote:
|
Quote:
forum [put a dot here] pj64-emu.com/showthread.php?t=4419 when i click it it just opens and its just this one white pixel dot. How do I download it? I have no idea how to use this website and I'm embarrassed about it so sorry to bother everyone. |
I've re-enabled private messages.
Didn't really occur to me it would inconvenience this many people; I only meant to kill randomizer's rage spam. :) Quote:
That download seems to be irretrievable, and I no longer run the computer from which I uploaded it so do not have it anymore. The source code on the other hand...that I do always have. Here, maybe you can compile it: https://github.com/cxd4/tooie-save-edit If not then maybe somebody here still has a copy of the original archive I uploaded back then. |
Quote:
Also I have no idea how to compile stuff or what to do after compiling stuff... |
Quote:
Quote:
Sounds like maybe you're having a device issue with your drivers (esp. if Mayflash). I wouldn't know because I've only ever used a keyboard. Masochistic as this may sound, I have indeed beaten Grunty's Pot O' Gold challenge in Cloud Cuckooland using only my keyboard, thanks in part to my custom keyboard plugin I wrote with programmable control stick range/sensitivity. Either way this really is a separate issue with the plugins you're using with Project64, not the emulator itself or my save editor. Only jiggy I never got in emulators was that Canary Mary race in the clouds. I needed to add rapid fire/turbo button feature to my keyboard plugin to win that. Quote:
Can't compile it for you though, because I'm not running Windows. Quote:
|
Quote:
Would you like me to record it for you? I can film it if you want where it just doesn't move very fast at all and makes it hard. on n64 i did it it was really easy but with my xbox controller it just doesn't register directly diagonal for some reason... The Canary Mary race is frustrating as hell UNLESS you know how to do it, the secret is just tapping relatively slowly and then when you get to the home stretch you tap like crazy, this is because she flies at a relative pace to you that's why if you tap like crazy she'll catch up and surpass you unless you turbo it. :) Is there a way to give you my save file so you can get that jiggy for me? :D |
All times are GMT. The time now is 01:49 PM. |
Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.