Please don't say such an ignorant thing as to tell someone who wishes to learn about game hacking that he should literally STOP using a hex editor. That is probably the most offensive and willfully detrimental piece of advice I've ever seen thrown to someone. How dare you tell someone to NOT LEARN?
I would be less offended if at least there had been then been many other examples of all of the other things he should be googling/studying/learning instead of hex editing but nope, absolutely nothing... Telling someone to stop doing something without a valid reason as to why they should stop and then not providing alternatives is worse than giving bad advice it's basically sabotaging the person.
Of course he can change a spell's spell level using a hex editor. In fact it's probably, _probably_, the simplest and fastest way to make such tiny changes in an RPG game.
My point of view on this "subject" is that hex editing is the single most essential tool in a game translation project. It is not the BEST tool for any single area, as there are better ways to translate text than by editing the strings in a hex editor; and it is not the BEST tool for editing anything at all that has to do with images/textures as you would need to be a bonafide hex-editing genius overlord to accomplish a texture edit that you could do in 2 minutes by simply extracting the game images and editing them with software and then re-inserting them; and it is certainly not the BEST tool for changing around game code as the majority of things needed in a translation project such as changing font width or hacking a new pointer table so you can make your own pointers and give yourself longer text strings to work with and of course for the implementation of variable width-- none of these things are done "better" with a hex editor".
HOWEVER beginning with a FIRM grasp of hexadecimal values can do and how the game itself utilizes them is extremely helpful for: DEBUGGING, REVERSE-ENGINEERING AND CODE MODIFICATION (ASM/ETC); and last but not least hex-knowledge is probably the single most important tool in the translation box when translating actual game text. Knowing the nitty-gritty of how what a HEADER is and what it does and knowing what CONTROL CHARACTERS for CARRIAGE-RETURN/LINE-FEED/ETC are of unbelievable importance.
Knowing what double-width is and why it exists and how it used and knowing what single-width is and why it exists and how it used and knowing the history and makeup of CHARACTER SET CODIFICATION, all the way back to the 1960's, will provide anyone with a better understanding of game translation due to the simple fact that they can immediately know how and why an NPC dialog box stops where it stops, and/or why TEXT WRAPPING issues happen.
These are very simplified examples, I know. I am not saying that you need to translate an entire game using a hex editor (although I have, and I enjoy editing hex more than I do implementing ASM OPCODES or editing textures for translation in Photoshop or dealing with anything else really).
I realize that you are speaking about this subject, i.e. game hacking, in a COMPLETE context. As you said yourself, level editing, etc.
I'm coming from a purely translation-oriented point of view as I have never been interested in changing a game's levels or in doing things like changing Cloud's 3D MODEL with SCOOBY-DOO sprites. Whatever floats your boat, I say, and indeed for those type of things you will NEVER, EVER need to use a hex editor!
However, some of the things one can do by editing hex values which a lot of people would say "should not be done in a hex editor" and instead done with "tools":
- I can open one the file containing the entire list of item data in any of Starfish studios' games (My goal is to eventually translate into english every single Starfish game, from 1999 to 2016); for example the ITEM.DAT file from Wizardry Empire 1, go to the item HOLY WATER which when used in battle produces the spell TZALIK which is useful versus undead enemies and I can LEARN the following things:
Each item has a hex value that assigns its DMG/Defense/Number of hits/special effect when used/special property it gives you passively or actively/what specific spell the item triggers when used that way/from what spell school that spell comes from/the amount of times that item can be used/etc. You can know instantly ALL OF THOSE THINGS simply from looking at the item's entry in a hex editor.
In the Holy Water item example I learned that it uses the spell Tzalik which the game assigns the hex value of '44', and guess what? when converted into decimal that relates directly to the placement of the spell in the game interface AND also relates directly to the spell LEVEL, i.e. 4th level in that spell school.
I also learned that it uses the value '68' to denote that this item is considered part of the PRIEST CLASS spell book. Items that trigger a MAGICIAN CLASS spell utilize the value '64' _in this particular game_.
Now guess what? I went back to the game's executable where all of the character class information and all of the spell information is there for our pleasure and I LEARNED that these values are no coincidence whatsoever!
Starfish utilized the hex value '64' as an invisible control character inside the double-width abbreviation of the Magician spell book, in this case what you see is M A G, and THAT is why items that utilize Magician spells are assigned the 64 value.
This isn't necessarily helpful at all for actually translating TEXT, _but_ it IS a completely LEGITIMATE example of how hex editing can be utilized to do things that people always tell you cannot be done or simply should not be done via hex. Armed with this game-specific knowledge I can play around and mod all of the items, all of the classes, all of the spells and switch whatever I wish around and effectively make a gameplay mod... all in less than 10 minutes and using a hex editor without ever using any other tool.
Now, the thing is the original poster was asking about two things: mainly about editing text, (naturally), and about how to change a spell's workings. I wanted to try to communicate that both things can be easily done with a hex editor if you study, REALLY study, how hexadecimal values relate to in-game factors.
Obviously if his questions were about how to extract a complete game script from a compressed game archive and then build a text-editing tool that will re-insert the text back into the archive and modify the appropriate headers then of course no one in their right mind would say "brah use windhex32" or whatever. Same with if he wanted to modify the game's music/sounds, or the game's textures/models.
If he HAD asked about that I would now be writing an extremely long post about how to use, STEP-BY-FUCKING-STEP, the myriad CONSOLE-SPECIFIC tools that are currently available so he can go and rip the textures/models/music/etc and then what programs he needs to download so he edit them, how to edit them to achieve what he wants, and then finally how he can go about re-inserting them.
I'm not saying It would be a guarantee of what I write working for him, since every game is completely different (a TRUTH I have had to learn the hard way...) but it would at least HELP HIM GET STARTED.
And, btw... STILL no need for any programming knowledge as of yet in ANY of these examples.
Where programming knowledge "comes in handy" is when reverse-engineering, which is what I'm teaching myself right now. (I need to implement a variable-width font hack into Wizardry Empire 3: Return of the Emperor for the PSP console). And fuck, I'm being generous here as reverse-engineering and implementing a few opcodes and/or expanding a "rom" are not REAL PROGRAMMING.
Some of the people in these communities, mainly here but also in GBATemp (they're much nicer and much more helpful to people than the people here on RH) have a somewhat high opinion of themselves in terms of how they are master coders and how game hacking is all about being a l33t programmer. Sure, in many, many examples, but not in others; such as someone asking how to translate into english a text string for example.
I had excellent success modifying the Wizardry 1 font utilize ADA/Cheat Engine but then I hit the hard truth that the second game's font I need to hack, Empire 3 on PSP, is not x86 architecture. I DID NOT EVEN KNOW WHAT x86 IS BEFORE THIS. However I googled and taught myself and of course asked for help from people (not from gbatemp/RH, but from an RPG website I post in, where one person actually went and step-by-step showed me how to use cheat engine to locate strings and eventually locate and modify the _HEX VALUES_ that determined the font's width, height, pitch, precision, output, quality, pixel size and its weight.
Once again, he probably only did it because it is an x86 game and thus easy as fuck to hack since absolutely EVERYTHING is spelled out for you inside IDA or even Cheat Engine. A toddler could figure most things out. The problems are always in console game hacking as they are... tedious to work with... to say the least.
I choose to look at it positively: if it hadn't been for my deciding to begin translating Empire 3 on PSP I would never have run into the font problems and I would never be on the path I am right now studying websites and forum posts and googling obsessively on my free time and learning more and more about reverse-engineering.
Dabbling with Elminage 2, also on PSP, I was forced to learn to extract and edit textures and translate the japanese characters on the textures into english and then re-insert them into the game. I had NEVER BEFORE EVER edited a single image file in my life before this. Once again an obstacle became a great experience for learning. Note that I have not mentioned that a hex editor would be needed in this example!
Anyway, fingers are tired from typing lol
May 29, 2016, 09:30:09 pm - (Auto Merged - Double Posts are not allowed before 7 days.)