-------------------------------------------------------------------------------- | hack4u 0.90 | Copyright (C) 2004 emuWorks | Written by John Ratliff | http://games.technoplaza.net/ -------------------------------------------------------------------------------- ---------------- - Introduction - ---------------- hack4u is a tool for editing save state files for Ultima: Quest of the Avatar on the NES. It was released as Ultima II on the NES, but it is actually the fourth game in the series, hence the program's name. You can take the battery backed RAM files created by Nintendo emulators such as FCEU, Nesten, Nestopia, VirtuaNES, and more and modify them. These files have the extention .SAV and are usually named the same as your ROM file. So if your Ultima IV ROM is named "Ultima - Quest of the Avatar (U).zip", which is the GoodNES name for one of the known Ultima IV dumps, then your SRAM file is probably "Ultima - Quest of the Avatar (U).sav". FCEU adds the ROM checksum value by default to its files, so on FCEU, it might have a long string of extra characters before the .SAV. ---------------- - Installation - ---------------- For Windows and Linux, I have provided a binary version. You should be able to download it and double-click the hack4u executable to start the program. On Windows, there shouldn't be any extra dependencies required. For the Linux binary, you will need GTK+ >= 2.0. I used GTK+ 2.0.49 at the time of the build. The program can most likely be built against GTK+ 1.2, but this hasn't been tested. For all other platforms, you will need to compile the source code yourself. It shouldn't be too hard to compile. It is expected (but untested) to compile and run on Linux, Solaris, Mac OS-X, and any Unix that supports the GTK+ toolkit. To compile the source, you will need an ISO C++ compiler (I recommend GNU G++ >= 3.3), and the wxWidgets library. You can compile under wxWidgets 2.4.2, but >= 2.5.3 is recommended due to vast improvements to wxWidgets since 2.4.2 not the least of which is the XRC system. You can download the wxWidgets library at http://www.wxwidgets.org. After you have wxWidgets installed, you should be able to do something like this: ./configure && make This will (*should*) produce a program hack4u in the source subdirectory. If it doesn't, well, contact me and we'll talk about it. You can use make install to install the program, but it's not a perfect solution yet as I can't seem to figure out how to install the XRC file where I want. So currently, the XRC file doesn't get installed. There are a few options: a) specify the path to the XRC file manually at runtime hack4u /path/to/xrc/hack4u.xrc b) set a default path and put the XRC file there ./configure XRC_PREFIX=/usr/share/hack4u make && make install mkdir /usr/share/hack4u && cp source/xrc/hack4u.xrc /usr/share/hack4u c) accept the default XRC prefix (./xrc) and put the XRC file there mkdir /path/to/binary/xrc && cp source/xrc/hack4u.xrc /path/to/binary/xrc The binary package uses option C cause that's just easiest if you don't care about putting binaries and share files in separate locations. If you do, then I'd pick B. Fortunately, starting with version 0.90, the program will no longer crash if the XRC file isn't found. It will give an error message on the console and exit gracefully. I am working on a gentoo ebuild, but they get added very slowly, so it may take some time before it is added to portage. Still, if you use gentoo, you might try 'emerge hack4u' and see what happens. Compiling on wxWidgets 2.4.2 requires not only that you build wxWidgets, but also the XRC library which was not built by default in 2.4.2. To do this, go to your wxWidgets build directory in the contrib/src/xrc directory and do a make && make install. When compiling hack4u, you will need to specify the library. Under Linux, I was able to do the following: ./configure LIBS="-lwx_gtk2-2.4 -lwx_gtk2_xrc-2.4" && make Under Linux with GTK+ 2.0.49. I don't know if the same procedure would work under mingw or cygwin for Linux or not. The library name would obviously be different. As I mentioned, if you use 2.5.3, this won't be a problem. If you compile with wxWidgets 2.4.2, you will get a warning about wxCLOSE_BOX not being recognized when you start the program. This message can be safely ignored. I no longer have any access to Macs, so I cannot compile an OS-X binary. If you have access to a Mac with OS-X, I can try and help you compile the program and see if we can get it to work. Compiling wxWidgets applications and the library itself under Max OS-X is currently a nightmare, but it can be done. --------- - Usage - --------- Using the program should (I hope) be fairly straightforward. Start the program hack4u either by double-clicking or from the command line. Load the SRAM .SAV file. For FCEU on Windows, this is in the FCEU directory in the SAV subdirectory. For FCEU on Unix, this is in the ~/.fceu directory. I don't know about other emulators. The program should work on any emulator that uses the battery backed RAM (SRAM). Once the file is open, it will load the first save game it finds. Ultima used three save slots, and you can edit any of the three that are available. I assume in most cases this will be the the first game "Game1". You can choose a different save slot from the Game menu. If any are greyed out, that means they are not valid. You must have at least one save in SRAM to edit, or the program will not be able to edit anything. We can only make changes to existing files. We cannot generate them. There are three tabs, "General", "Inventory", and "Character". They will allow you to edit almost any part of the game. Items you have, your characters stats, magic you know, etc. The one thing that cannot yet be edited (that I plan to implement) is characters waiting in Britannia's Hostel. If there is something you want to be able to edit that you cannot, contact me and I'll see what I can do. When you load a .SAV file, it will make a backup in a file named the same as your SRAM file with a .bak on the end. If something goes wrong when you try to start your edited game, just delete the SRAM file and rename the backup to .sav instead of .sav.bak. --------- - Notes - --------- Some important things to be aware of. - This is BETA software. Your use of it is AT YOUR OWN RISK. I take no responsibility if this program screws up your Ultima Data, or any other thing on your or any other computer. I'm pretty sure it won't, but don't blame me if it does! - The program checks for valid values in most cases, but I'm not altogether sure all the ranges I put in are correct. Contact me if you feel a valid value is being ignored by the program. - You can create some invalid combinations. Having a blank between party members, equipping two weapons or bows or armors, or duplicating party members (e.g. two Paladins, two Fighters). The program will warn you about these, but will not prevent you from using them. None of these combinations seem to *adversely* affect the game, but I've only tested a few for about a minute each. Duplicating Party Members: Since each member has stats for their class, if you use duplicate party members, all stats are shared, including current HP, and MP. If one member would die, all duplicates die too. Blank inbetween Members: This looks neat to have a blank walking around, but it will prevent members after the blank from having their stats displayed in battle. I noticed no other adverse affects, but I only tested a short time keep in mind. Equipping Multiple Items: I didn't notice any problems with this. The game seems to notice only the first item you equip, but since it was never intended, there may be problems I didn't notice. - Taking away items you already found in your quest will not let you "rediscover" these items. They are "gone" as far as the game knows. This probably means things you add can still be found. I don't know what impact this might have on gameplay if you do either one. - I've never heard of the 'Wheel' or the 'Dagger'. Neither seem to be of much use, but maybe I just didn't know what to do with them. - Virtues I don't know what ranges correspond to what "ranks" (very poor, poor, well, very well), but I do know that 0 is bad and 100 is good (avatar in fact). So 99 is the best you can be without being the avatar. 100 will give you partial avatarhood in that virtue. 100 in all should make you the avatar. -------------------- - Revision History - -------------------- Version 0.90 - Friday, Dec 3, 2004 - Added hero's name validation (only proper characters are allowed now) - Changed Panel backgrounds to white - Replaced herb/virtue/tool spin controls with sliders - Replaced stat spin controls with text controls - Added validation for stat controls - Added validation for equipment and party members (with warnings if invalid) - Changed menu shortcuts to more universal ones - Fixed a bug where the game menu didn't go back to 1 on close/reopen - Added XRC_PREFIX to configure to change the default XRC path - Added argument check to specify XRC file location at runtime Version 0.82 - Wednesday, Dec 1, 2004 - Added Linux binary version. - Fixed bug that caused crashing (segfault) in Linux - Added resize and maximize options to the frame for greater platform compatability Version 0.81 - Tuesday, Nov 30, 2004 - Added Drag N Drop support - Added Loading/Saving of All Three Games - Added Save confirmation on exit - Added Save As and Close - First Public Beta Version 0.80 - Monday, Nov 29, 2004 - Support for Loading/Saving Game 1 - First Private Beta ----------- - License - ----------- hack4u is free software released under the GNU General Public License. For more information, you can visit http://www.gnu.org/. For the terms of the license, you can visit http://resume.technoplaza.net/license/gnu-gpl.html ----------------------- - Contact Information - ----------------------- The latest version of hack4u can always be found at emuWorks http://games.technoplaza.net/ You can contact me at http://www.technoplaza.net/feedback.php