News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Vegetaman

Pages: 1 2 [3]
Newcomer's Board / Re: Introduction Topic
« on: February 03, 2010, 04:54:01 pm »
Howdy, I'm Vegetaman (call me Veg, V-man or Veggie for short), and am in my early 20s and have a degree in computer science. Been into hex editing for a few years and figured I should try my hand at some ROM stuff. Oh... I also enjoy heavy metal.  :thumbsup:

Also, the only systems I own are Atari 2600, NES, SNES, N64, GameBoy, and Dreamcast. I pretty much gave up on gaming (I haven't bought a game in years, though one of these days I'll pick up the Half-Life 2 stuff and maybe Diablo 3, I've pretty much moved on to PC games). I just like the older stuff, really (including older PC games like Diablo, Wolfenstein, Doom, etc.)

News Submissions / Re: Utilities: Geiger's Snes9x Debugger M10R1 released
« on: February 03, 2010, 03:51:12 pm »
Why does no one who ever works on this project seem to know what a proper coding style, class, enumeration, inheritance, code reuse, or even a freakin' whitespace is?  BLARGH!) :banghead:

It's a good question, and sadly it's quite a common occurrence. Quick and dirty over reusable and well thought out. Also, I guess they've never been chewed out over "lack of readability", like many of us have in our lifetime (usually people do it for job security, lol).  :(

Speaking of that VS 05 problem, they seemed to have screwed stuff up in VS '08 as well. Namely my OpenGL (w/ GLUT) programming, I find that I can't even compile a blank 2D screen because they screwed up the libraries and it can't find a bunch of .dll files that exist because it's using an older version (or older path, anyway) to look 'em up, and it doesn't want to let me force it to look for them. Also, it keeps screwing up the manifest file for it, too. They really screwed the pooch with Visual C++. :banghead:

And they are of no help to remedy the problem, and there's been 4 different fixes for it, and it only has helped probably half of the people. But, I digress...

Oh! Great program, by the way. I am very excited to use it.  :D

Personal Projects / Re: Are these sorts of projects worthy of this place?
« on: February 03, 2010, 01:52:18 am »
DarknessSavior - Well, I'm glad to be aboard. I want to develop this program beyond listing things, that was just a jumping off point for this program. However, I see that SRAM is much more direct than doing it to just a simple ZSNES save state (and more useful, too).

Oh, I still use C++ on Linux/Unix frequently, so I'm no stranger to command line (and how much of a PITA in can be). Just using C# to build some skill with it. :) Just figured after reading some modding sites and save state hacking guides on these games that there could be programs made to cut out a lot of extra legwork (plus I could fill in gaps of information that was never discovered or at least put out on the net).

KingMike - Thank you so much for that. Due to my earlier work, I just popped into the SRAM and discovered that, for "File00" (Save Slot 1), the offsets are:

13E -> begin items (listed as item #, quantity #)
1B5 -> end of item list
1B6 -> Hero's Level
1B7 -> Lufia's Level
1B8 -> Aguro's Level
1B9 -> Jerin's Level
1C6 to 1C7 -> Hero HP
1C8 to 1C9 -> Lufia HP
1CA to 1CB -> Aguro HP
1CC to 1CD -> Jerin HP
1CE to 1CF -> Hero MP

Well, you get the rest. Anyway, it lends itself quite easily to picking up (very similar to the ZSNES save files, though even more concise, it appears). Never really messed with SRAM before (because of that little checksum dealie, probably, always knew I could edit the ZSNES save files). Seems like everything is little endian (including the pointers for unique item names in Diablo I).

Anyway, I took the ASM information you gave me (and it's been about 4 years since I've touched assembler... I enjoyed it, but it has long been forgotten), and made a little program that compares the file checksum (offset 6-7) to the checksum it calculates for the entire 2KB save slot.

I've only set it up for File00, but to extend it for File01 and File02 should be easy. This is great, now I just need to make it so it will compute the checksum after I modify something about the game and have it automatically replace it at offset 6-7 for me (right?).


Well, got back around to working on Lufia again last night and this morning. Upgraded the checksum program to do all 3 save slots (I know, unimpressive, I just had to add in an offset incrementer):

I got sidetracked making a small program to pull spell names out of Eye of the Beholder (SNES & PC).

Oh, and could somebody move this to the "personal projects" section? I think I'll be working on this Lufia thing for awhile now.

I'm currently trying to figure out where/how stats are saved. Like, if you change your character level in the SRAM, it shows up that way in game but it doesn't do anything (also, it only shows the last 2 digits, ie. level 255 displays "55". Interestingly, if you set your level to 99, you no longer gain experience because you cannot level further. I am wondering if this means that when you hit level 99 if you can set your SRAM value to say 77 and level up some more (unsure what kind of weird effects this could cause). Just pitching ideas. I seem to recall that if you edit your stats via a save state, the first time you equipped an item or leveled up your stats went back to normal. Oh, and found the offset for gold in the save slot, too.

==UPDATE== (JUNE 6, 2011)

Just a small update; had a request for a Mac/Linux compatible way to figure the checksum (haven't made a full blown command line editor yet; sorry -- it's somewhere on the to do list...), so here's the source code for a small program that should handle it for you in case you want to use the SRAM guide to edit your own file (always remember to make a backup):

You can also check my last post in this topic for a copy of the code directly (and yes, I know that the while loop part should really be it's own function with variables -- I did it this way on purpose).

I haven't updated my guide enough to warrant updating on the site, it's mostly superficial stuff right now... Still have plans to work on it, though; I have not forsaken it yet!

 :beer: :thumbsup: :cookie: 8)

==UPDATE== (FEBRUARY 20, 2011)

DOWNLOAD Version 2.2: *NEW*



- added support for modifying 32 spell slots instead of 24 (run over the lists at your own risk!)
- added the readme file to the .rar package and updated the readme as well



UPDATE - FEB 19: [just completed a readme.txt]

DOWNLOAD & INSTALL LINK (unzip/unrar and click on setup.exe):


See my last post in this topic for details.

In game screens after use:

Hopefully I can get back in to updating it again as more feedback (or bug report) rolls in.

======OLD POST======

I only ask this because I got into hex editing a few years ago due to playing SNES games and doing some programming, and I have been working on a little Lufia & The Fortress of Doom Program (trying to build my C# skills) that takes a ZSNES Save State File and will read out the Gold, Items, Characters, and Stats for that particular save state:

(screenshots and small write-up)

Anyway, I'm (working on) adding some features to it like being able to take an existing item and change the quantity or turn it into something else, or to add an item where none exists. But is this really "ROM hacking"? I don't see a lot of topics making programs like these (and honestly, once you know the offsets for a game, the programming side is relatively simplistic).

Also, I take it you guys don't do PC games at all? Like I made a program that goes into the Diablo.exe file (v.1.09 only) and pulls out the Unique Item data and makes a text dump file of it.

(screenshots and small write-up)
(text dump of item uniques)

Just wondered if any of this stuff is relevant here, or if I'm a little outside the scope of this place (I think a lot of your graphical and regular ROM hacking is amazingly complicated and my stuff is boringly simplistic by comparison). Also, I have crappy GUI-skills. 



Can somebody move this to the "Personal Projects" forum for me? I'm currently going to focus on Lufia, but I don't think it's necessary for me to make a second topic.

UPDATE #2: (you can read a better version of this update as the current post from me as of Feb 13, 2010)

I took some time to try and figure out the way text is stored in Lufia I (like, text box text), in case I ever wanted to edit what people say. Turns out it is some words or letters and pointers to other words that are in some sort of dictionary. So, after 10 hours of tinkering, this is what I came up with:

And the actual reference dictionary file I made (a sort of key so you can look up words that you just have a pointer to) so you can read through the "ugly looking text dump" and refer to an actual word or name:

Still, it is nowhere near complete, and any help would be much appreciated!  :woot!: :crazy: 8) :D


Okay, the Lufia SRAM program is complete. See my latest post (#12, I believe) for info.

Pages: 1 2 [3]