Purifying FDS Disk Dumps

Are you new to 6502, NES, or even programming in general? Post any of your questions here. Remember - the only dumb question is the question that remains unasked.

Moderator: Moderators

Great Hierophant
Posts: 780
Joined: Tue Nov 23, 2004 9:35 pm

Purifying FDS Disk Dumps

Post by Great Hierophant »

A lot of Famicom Disk System dumps of games that save information to disk have information saved to disk like save games, high scores and worlds/rounds/levels/games beaten. Unfortunately, for most games there is no way to restore the game to a pristine, never-played state within the game itself. I have always wanted a tool or utility that could take these disk images and do just that, but since none exists I decided to investigate the images and try to fix them myself. Restoring a Famicom Disk System game to a pristine state is more than just deleting or zeroing out the last file. The resulting disk image has to work. I used Nestopia UE 1.46 and FDSExplorer 1.63 and my favorite hex editor.

What made this much easier was the fact that Famicom Disk System games always seem to save to the last file on a disk's side. Sometimes the save file has an obvious name and is so small it could be nothing else, but for other games it is not so obvious. So the first thing I had to do was to observe which side was being written. Nestopia tells you when a disk is being read or written, so I just played until there was a save. Metroid was almost unique among the games I looked at because it saves to both sides.

Once I figured out which side was being saved, I opened the disk image in FDSExplorer and looked at the file. For games with three save slots, I simply deleted two and made a third with a file name that was easy to find like ABCDEFGH. With a little deductive reasoning I could figure out how the file could be corrected so that no save games would be present at startup. Dr. Chaos did not follow the typical rule about writing changes to all files after starting a new game, but its save file is really simple and my image came with one unused file.

On a couple of occasions, I discovered that my image was pristine but the game actually created a file once there was saving. FDSExplorer makes it easy to delete the last file in these cases, but you have to verify that the game creates a file before you delete it. I made it a point to alter no more bytes than was necessary to make the game appear to look pristine. Whether it would actually correspond to a pristine, errorless dump of a sealed Disk Card is an issue that may never be known for some games, but for other games the changes are so obvious and minor that it can hardly be doubted that this is how they should have appeared.

Here is a list of the games and what I did to make them "pure". Please let me know if I overlooked anything before I publish this information more broadly :

Ai Senshi Nicol
Information Saved - Progress in game
Fix : Side A - Zero out last file

Akumajou Dracula (all versions) (Konami, 1986)
Information Saved - Three slots, last stage completed and number of continues
Fix : Side A - Zero out last file
NES/Famicom Port : Castlevania/Akumajou Dracula

All Night Nippon Super Mario Bros. (Nintendo 1986)
Information Saved - Number of times you have beaten the game
Fix : Side A - Zero out last file
NES/Famicom Original : Super Mario Bros.

Bubble Bobble (Taito, 1987)
Information Saved - Allows you to select a starting level up to the last level you completed
Fix : Side A - Game creates a save file when you save your level progress, delete file with FDS Explorer
NES Port : Bubble Bobble

Clu Clu Land - Welcome to New Clu Clu Land (Nintendo, 1992)
Information Saved - High scores
Fix : Side A - In the last file, this pattern must repeat ten times : 14 EF EF EF 24 00 00 00
NES/Famicom Connection : Clu Clu Land

Dr. Chaos (Pony Canon, 1987)
Information Saved - Three slots, progress through game
Fix : Side A - Zero out last file, except for the last eight bytes, should say DR.CHAOS in ASCII
NES Port : Dr. Chaos (NTSC Only)

Dracula II - Noroi no Fuuin (Konami, 1987)
Information Saved - Three slots, items acquired, character level, time taken in game in days
Fix : Side A - Zero out last file
NES Port : Castlevania II : Simon's Quest

Eggerland (HAL Laboratory, 1987)
Information Saved - Rooms completed
Fix : Side B - Start a new game, commit suicide until you see the Game Over screen, then save.
NES/Famicom Connection : Adventures of Lolo 1, 2 & 3, Eggerland - Meikyuu no Fukkatsu

Eggerland - Souzouhe no Tabidachi (HAL Laboratory, 1988)
Information Saved - Allows you to select a starting level up to the last level you completed, saves levels you build with the construction editor in the game.
Fix : Side B - Zero out the last byte in the last file and remove all tiles for all construction levels using the in-game utility, then save.
NES/Famicom Connection : Adventures of Lolo 1, 2 & 3, Eggerland - Meikyuu no Fukkatsu

Hao-Kun no Fushigina Tabi (DOG, 1987)
Information Saved - Three slots, progress through game
Fix : Side A - Delete all three save files in the main menu, then create file one. Immediately close the FDS image in Nestopia. Replace the first seven bytes in the last file with 00 5F 5F 5F 5F 5F 5F.
NES Port : Mystery Quest (NTSC Only)

Hikari Shinwa - Palutena no Kagami (Nintendo, 1986)
Information Saved - Three slots, progress through game, time taken to beat game, high scores
Fix : Side A - Copy hex from REG BACK and paste into REG.SAVE
NES Port : Kid Icarus

Kaettekita Mario Bros. (Nintendo, 1988)
Information Saved - Name, age and gender of players controlling Mario and Luigi, High Scores
Fix : Side A - Rename characters to the default, use hiragana for Mario and Luigi, set the ages to 00 and the gender to male (おとこ). Mario is まりお and Luigi is るいーじ in Nintendo's preferred hiragana spelling.
Side B - Copy over all bytes in file 9 to file 10
NES Port : Mario Bros. Classic Series (PAL Only)
NES/Famicom Connection : Mario Bros.

Knight Move (Nintendo, 1990)
Information Saved - High Scores
Fix : Side A - Save file is split into four sections of 48 bytes. The game uses the first and last section for saving the scores, so copy the second or third section to the first and fourth section.
NES/Famicom Connection : Tetris/Tetris (designed by Alexey Pajitnov)

Legend of Zelda 2, The - Link no Bouken (Nintendo, 1987)
Information Saved - Three slots, progress through game, number of saves
Fix : Side A - Kill all save files on the file select screen, the game will reset each slot as after it is killed. If your find that, after starting a new game, objects like Heart Containers and Magic Potions are not where they should be, delete the file and make a new file.
NES Port : Zelda II - The Adventure of Link

Metroid (Nintendo, 1986)
Information Saved - Three slots, progress through game, time taken in game, ending earned for last game, number of saves
Fix : Side B - Create a new character for file one, then start the game. Immediately close the FDS image in Nestopia. Do the same for file two and three. Do NOT save the game. This causes the game to reset the save information for the world for the three files because the game will write to side B when you create a new character. Side A - Overwrite the first three bytes with 80 and the next forty eight bytes with FF. Zero out the rest of the file. This deletes character information.
NES Port : Metroid

Nazo no Kabe - Block Kuzushi (Konami, 1986)
Information Saved - Three slots, allows you to select a starting level up to the last level you completed
Fix : Side A - Delete all three save files, then create file one. Start the game, lose all your balls, then save and quit. In the last file, replace the first sixteen bytes with the second sixteen bytes. These two sets of bytes should be identical to the third set of sixteen bytes. The last sixteen bytes of the file should be 00.
NES Port : Crackout (PAL Only)

Nazo no Murasamejou (Nintendo, 1986)
Information Saved - Three slots, progress through game
Fix : Side A - Kill all save files on the file select screen, the game will reset each slot as after it is killed.
NES/Famicom Connection : The Legend of Zelda/Zelda no Densetsu 1 - The Hyrule Fantasy (engine)

Section-Z (Capcom, 1987)
Information Saved - Three slots, progress through game
Fix : Side A - Delete all three character saves in the game menu, then create file one. Start the game, get killed, then save and quit. In the last file, replace the first twenty three bytes with the second twenty three bytes. These two sets of bytes should be identical to the third set of twenty three bytes. The last four bytes of the file should be 00.
NES Port : Section Z

Super Mario Bros. 2 (Nintendo 1986)
Information Saved - Number of times you have beaten the game
Fix : Side A - Zero out last file
NES/Famicom Connection : Super Mario Bros. 1, 3

Vs. Excitebike (Nintendo, 1988)
Information Saved - Race times, data for custom tracks 4-7 designed with built in construction editor.
Fix : Side A - Delete the last file
NES/Famicom Connection : Excitebike

Winter Games (Pony Canon, 1987)
Information Saved - Records for each event
Fix : Side B - Zero out last file
NES Port : Winter Games (NTSC Only)

Wrecking Crew (Nintendo, 1989)
Information Saved - Custom level designs for phases 1-4 designed with built in construction editor.
Fix : Side A - Delete all objects on each of the four phases of the design part, then save.
NES/Famicom Original : Wrecking Crew

Yume Koujou Doki Doki Panic (Nintendo/Fuji Television, 1987)
Information Saved - Worlds completed by each character.
Fix : Side A - Zero out first four bytes in last file
NES/Famicom Port : Super Mario Bros. 2/Super Mario Bros. USA

Zelda no Densetsu - The Hyrule Fantasy (Prototype and final) (Nintendo, 1986)
Information Saved - Three slots, progress through game, second quest, number of deaths
Fix : Side B - Kill all save files on the file select screen, the game will reset each slot as after it is killed.
NES/Famicom Port : The Legend of Zelda/Zelda no Densetsu 1 - The Hyrule Fantasy

Nestopia does not save to the disk image by default, but can in its options menu. Make backups when experimenting. Nestopia saves to an image when the image is closed or the user quits Nestopia. Unfortunately, FDSExplorer does not allow you to edit files inside a disk image directly, it is easiest to use a Hex Editor and search for the bytes you wish to alter.

This list really only scratches the surface, but I wanted to focus on games that were ported in some way or form on or related to a NES cartridge. Since my Japanese is "a little rusty", I did not want to tackle the more Japanese text-heavy games.
Last edited by Great Hierophant on Wed Sep 09, 2015 8:25 pm, edited 5 times in total.
Pokun
Posts: 2681
Joined: Tue May 28, 2013 5:49 am
Location: Hokkaido, Japan

Re: Purifying FDS Disk Dumps

Post by Pokun »

Good job! I always wished there was an easy way to restore the games to factory default. I just wish I could do it on my real disks somehow without having to rewrite the disks (which I can't do). Only way I know of is trying to corrupt the save data by resetting when it's writing to disk and let the game clean the file.

I spotted a typo:
Kaettekita Mario Bros. (Nintendo, 1988)
Information Saved - Name, age and gender of players controlling Mario and Luigi, High Scores
Fix : Side A - Rename characters to the default, use hiragana for Mario and Luigi, set the ages to 00 and the gender to male (おとこ). Mario is まりお and Luigi is るいーぎ in Nintendo's preferred hiragana spelling.
るいーぎ can't be right, it should be るいーじ.
Great Hierophant
Posts: 780
Joined: Tue Nov 23, 2004 9:35 pm

Re: Purifying FDS Disk Dumps

Post by Great Hierophant »

Pokun wrote:Good job! I always wished there was an easy way to restore the games to factory default. I just wish I could do it on my real disks somehow without having to rewrite the disks (which I can't do). Only way I know of is trying to corrupt the save data by resetting when it's writing to disk and let the game clean the file.

I spotted a typo:
Kaettekita Mario Bros. (Nintendo, 1988)
Information Saved - Name, age and gender of players controlling Mario and Luigi, High Scores
Fix : Side A - Rename characters to the default, use hiragana for Mario and Luigi, set the ages to 00 and the gender to male (おとこ). Mario is まりお and Luigi is るいーぎ in Nintendo's preferred hiragana spelling.
るいーぎ can't be right, it should be るいーじ.
You are quite right and the game agrees with you. It has been changed.
Pokun
Posts: 2681
Joined: Tue May 28, 2013 5:49 am
Location: Hokkaido, Japan

Re: Purifying FDS Disk Dumps

Post by Pokun »

I checked the game in an emulator and Mario's name had been changed to Yoyuーda (Luigi was still default though). lol
I guess you can't trust FDS images on the net to be clean.
Great Hierophant
Posts: 780
Joined: Tue Nov 23, 2004 9:35 pm

Re: Purifying FDS Disk Dumps

Post by Great Hierophant »

Pokun wrote:I checked the game in an emulator and Mario's name had been changed to Yoyuーda (Luigi was still default though). lol
I guess you can't trust FDS images on the net to be clean.
That's why I figured the default name for Mario was まりお and changed it accordingly to make it as close to fresh out of the box as it is likely to get. A fair number of these changes required inferences and deductive reasoning.
Pokun
Posts: 2681
Joined: Tue May 28, 2013 5:49 am
Location: Hokkaido, Japan

Re: Purifying FDS Disk Dumps

Post by Pokun »

Yeah in some cases it can be hard to know what the initial data is like. In the case of game progress save files for games like Doki Doki one could corrupt the data and let the game purify it, but in the case of F1 Race or Kaettekita that doesn't work.

And there are stuff in the header with info about how many times the disk was rewritten and such, which values I guess might not be initialized if it was dumped from a disk that was rewritten on a Disk Writer.
Pokun
Posts: 2681
Joined: Tue May 28, 2013 5:49 am
Location: Hokkaido, Japan

Re: Purifying FDS Disk Dumps

Post by Pokun »

A small thing, and a bit off topic but I noticed this part:
Legend of Zelda 2, The - Link no Bouken (Nintendo, 1987)
Information Saved - Three slots, progress through game, number of deaths
It's actually not number of deaths that is counted but the number of times you save. In Zelda 1 I think it actually counts number of deaths though. You can save without dying by pausing and then pressing UP+A on controller II (works in Metroid as well, both FDS and NES version).
Great Hierophant
Posts: 780
Joined: Tue Nov 23, 2004 9:35 pm

Re: Purifying FDS Disk Dumps

Post by Great Hierophant »

Pokun wrote:A small thing, and a bit off topic but I noticed this part:
Legend of Zelda 2, The - Link no Bouken (Nintendo, 1987)
Information Saved - Three slots, progress through game, number of deaths
It's actually not number of deaths that is counted but the number of times you save. In Zelda 1 I think it actually counts number of deaths though. You can save without dying by pausing and then pressing UP+A on controller II (works in Metroid as well, both FDS and NES version).
You are right, the Up + A on controller II works for both Zeldas and Metroid, but for Zelda 2 and Metroid, it counts the number of saves, not deaths.

I wanted to give a general overview of the saved information, so I did not list everything every game saved.
Pokun
Posts: 2681
Joined: Tue May 28, 2013 5:49 am
Location: Hokkaido, Japan

Re: Purifying FDS Disk Dumps

Post by Pokun »

Yeah I figured. Many people doesn't know about the A+UP trick though, and the English Metroid manual even fails to mention it even though the Japanese one does. Incidentally it doesn't work in Palutena or Kid Icarus, you just have to kill yourself to save.
Palutena counts the number of times you pick continue after dying and it affects the ending (resetting and reloading the save file does not count as a continue though).
User avatar
nintendo2600
Posts: 367
Joined: Mon Mar 30, 2009 4:40 pm

Re: Purifying FDS Disk Dumps

Post by nintendo2600 »

doki doki panic? I think that would count as it was ported to cartridge format as USA mario 2.
Pokun
Posts: 2681
Joined: Tue May 28, 2013 5:49 am
Location: Hokkaido, Japan

Re: Purifying FDS Disk Dumps

Post by Pokun »

Wrong thread? Of course all FDS games count if you know how to purify them. Doki doki is in the list though.
Great Hierophant
Posts: 780
Joined: Tue Nov 23, 2004 9:35 pm

Re: Purifying FDS Disk Dumps

Post by Great Hierophant »

There are two sources for FDS Disk Dumps, No-Intro and TOSEC. Both have their value. I was using the No-Intro dump for "Hikari Shinwa - Parthenon no Kagami (Japan) (v1.1) ". Often in the No Intro means that it is not pure, there is a save game on it but the game otherwise works fine. In this case, the really meant an error in the disk image, the background graphics for the Overworld stages appeared mostly corrupt because the file SO BG was missing from side B.

The TOSEC image "Hikari Shinwa - Palutena no Kagami (1986)(Nintendo)[a].fds" contains this file, so you should use that. I had a save file in progress, so I copied over the SO BG with FDSExplorer to fix my image.
Great Hierophant
Posts: 780
Joined: Tue Nov 23, 2004 9:35 pm

Re: Purifying FDS Disk Dumps

Post by Great Hierophant »

I think I found a game bug in Legend of Zelda 2, The - Link no Bouken. Start a game with the name LINK in the first slot. You will find that all the placeable objects like heart containers, magic potions, keys and special items have disappeared, making the game into a demo. The name LINK seems OK in slots 2 and 3.
Pokun
Posts: 2681
Joined: Tue May 28, 2013 5:49 am
Location: Hokkaido, Japan

Re: Purifying FDS Disk Dumps

Post by Pokun »

Oh I remember a guy several years ago on Famicom World Forums having this problem (I believe he played on both a real FDS and an emulator with the same result). I have the disk and never had this problem (I never tried naming my files LINK though) so I thought it was very strange. Later I tried the game in an emulator and the items didn't show up. We thought that it was a problem with the disks.

I just tested Link no Bouken v1.0 (in FCEUX 2.2.1) and named my character LINK and checked the grove close to the north temple for the points bag and sure it wasn't there. Then I erased my file and registered ABC and tried again, it appeared! Seems you are right. But then I tried the same thing with v1.1 and this time the points bag was gone with ABC and appeared when I renamed him LINK.
What's going on here?

I noticed another bug though. Pressing left and right at the same time (no problem in an emulator) made Link skid backwards very fast!
Great Hierophant
Posts: 780
Joined: Tue Nov 23, 2004 9:35 pm

Re: Purifying FDS Disk Dumps

Post by Great Hierophant »

My hypothesis is that there were prior saves on the disks and for whatever reason, some data was left behind in the save file. I checked the supposedly pure disk dump and there were some differences between it and a freshly cleaned game's dump. To fix the issue, starting the game, die and save, then delete the file. This appears to clear the save slot.
Post Reply