Editing the in game menu

  • Thread starter Thread starter Tsuna
  • Start date Start date
Status
Not open for further replies.
Unfortunately no not yet, i have a friend that has a fair bit of knowledge on hex the hex editing and basic assembly work so im waiting on him to get some free time.
 
Hey guys, right umm ive been doing tons of research with this and im beginning to grasp tile mapping, which file does what and the basic assembly. What im struggling with or at least i think is .. the dll file you sent me Paul to replace the original, What exactly do i do with it, do i delete all the text and call references or do i need to keep some? From what i cam tell the graphics are in btl_win_h.tex but im unsure, also im looking in the menu overhaul mod to get an idea of how things work and i dont understand how we separate the textures into different bmp's and call them to a specific command in script. How can i just add a bmp/png whichever, name it something and have it called to different modules (menu, equip, limit ect) just a single pic like buster_00. Im fairly sure with a lot of google'ing ive managed to find the right number thingys in the exe for specific text/avatars but not the cursor or cursor shadow when selecting a specific text. Again with the config menu i dont know where or how the window colour operation is performed and it doesn't lead me to anything. I dont  know if any of this makes sense i don't really understand it myself nevermind explain it to anyone else.
 
Hey guys, right umm ive been doing tons of research with this and im beginning to grasp tile mapping, which file does what and the basic assembly. What im struggling with or at least i think is .. the dll file you sent me Paul to replace the original, What exactly do i do with it, do i delete all the text and call references or do i need to keep some? From what i cam tell the graphics are in btl_win_h.tex but im unsure, also im looking in the menu overhaul mod to get an idea of how things work and i dont understand how we separate the textures into different bmp's and call them to a specific command in script. How can i just add a bmp/png whichever, name it something and have it called to different modules (menu, equip, limit ect) just a single pic like buster_00. Im fairly sure with a lot of google'ing ive managed to find the right number thingys in the exe for specific text/avatars but not the cursor or cursor shadow when selecting a specific text. Again with the config menu i dont know where or how the window colour operation is performed and it doesn't lead me to anything. I dont  know if any of this makes sense i don't really understand it myself nevermind explain it to anyone else.
Sounds like you're better building a replacement menu outside of the game, then add it into the game later?
 
Yeah but I still don't exactly know how to do it. I don't think I know enough to so this project but I don't wanna give up
 
Working on this again, got it all figured out now

Does anyone know how to resolve an issue i have with this, i am able to completely design the menu to a state where it looks awesome and im happy but everything i move ie hp bar mp bar level etc also moves on every other menu like item magic and such resulting in everything not fitting. i need to only move in the 1 menu at a time.
 
Last edited:
Sorry for the triple post here but i dont think my edit re-bumps the topic. In addition to my previous comment im also having trouble saving my edits, i have all my numbers written down so i can copy/paste easily but i need to save it back into an exe so i dont have to do this every time. Im using cheat engine to do it
 
Use HextLaunch in DLPB Tools.  After you are done, you can use the same text file with HextEdit.  This will save you a LOT of time.
 
Ill try that, thanks. You were right this is a long process, i was using cheat engine because it allows me to see whats moving as i do it. Does yours do the same?
 
No, but it will allow you to instantly end up back where you were every time you load the game. You still use cheat engine.
 
So whenever i change a number and crash it it'll save, if so thats so handy, thanks DLPB. Did you happen to know if i can change the location of things on the menu without also moving in all other menus too or will i have to redesign every menu to fit around it?
 
It depends what menu you are trying to change and what the code is.  You can always recode things.
 
Ok ive got all that sorted, its saving now which saves soooo much time, i can put it in IRO and everything. Only problem im having without introducing my item menu magic etc issues is im trying to move the HP/MP values along the X-axis, i can move them but it'll only go to like 73 then it vanish's. Ive tried editing the adjacent values but it still vanishes. Are there rules in this that im missing?
 
Yeah - you need to understand that there are signed byte values....  7f is the maximum you can have with a signed byte. To extend it, you need to look in to making the value range larger.

This will obviously mean at least one more byte of space is needed, which you don't have.  You have to make that extra byte by editing code - or when that's not possible - moving to a blank area of code, replicating the piece you needed as the jump or call opcode - and the  jumping back.

Depending on situation you can use call - ret, rather than jump jump.

But it's best to edit code rather than jump or call where possible.

Show me the exact address and I will give you an example.
 
Last edited:
Yeah i havent got a grasp of the move, add push stuff. Ive just been messing with numbers and found patterns to help me out. Uhh the code i have is 006C64C5 =28 i altered the address so the 1st number was the one i could change cuz it kept crashing. Right now it's an xor

Also with some like the word HP/MP and LV when the values goes above something it changes from say HP to MP. It's confusing me

2nd edit, i dunno if this example is the easiest to understand. when its 28, its says HP i can alter it to 30 which will move it left, but if i alter it to 31 The H the sorta dissapears behind something and im left with just the P

AHH another edit, this is probably better 006C6518 = 7B i guess i can take it 7F but i need it further to the Right. Use this one its more like what your asking

What do you use to change the coding, ive tried a few decompilers but it never gets me  anywhere
 
Last edited:
You use cheat engine to edit code... it is a full debugger.  You need to get the basics of assembly down (for example, you don't need to enter "68" to create a push.  Just highlight the instruction and type in "Push 10" to push 10 onto the stack.  Also... learn all about the stack.)  Learn the opcodes.  It doesn't take that long - assembly is logical  and has good syntax despite being time consuming.  Unlike C and C++ that I want to bomb out of existence and refuse to learn.

I will take a look at your example soon and show you.  It's much easier being shown.
 
Last edited:
To move that value, a quicker way is to move all values across and then adjust, unless you can't do that?

mov edx,[ebp+08]

You can see here that the starting value is being taken from ebp +8 (which is the first argument of the current function you are in).  You can edit that argument to move it across  - or you can remove that entry entirely which will save 3 bytes.  Let's take the latter example:

While not on the screen you are editing (so game doesn't crash)

 Change mov edx,[ebp+08] to  "push 100"

And then delete the "push edx" below. Either right click and replace with code that does nothing or left click and enter "nop"  which is opcode 90 and means "no operation".  If you don't delete the push edx, you will have TWO pushes which completely wrecks the stack and will likely cause a crash.

But I have a feeling you actually want to move the whole lot right before you make a tweak to the add instruction - in which case, you need to find what placed a value at [ebp+08] in the first place.  Easy to do.

Simply search for the current function:

The current function starts at 6C62A2 (these usually follow a "ret" instruction - which is the function before it returning).

So search for 6C62A2 in "find assembly code" 

You'll end up seeing that there are many of them - this is because that function is called for all the different menus.... The PHS menu etc all call that same function.

The first one returned in my list is 6CAC02. Go into it and you can see that the first argument is added to at 6CABFB - so change from 9D to maybe 100  and you'll see that the main menu has been altered.... ALL entries have been moved right.  And also notice that this value is already past 7F and uses more bytes... so you can go as far as you want. If you want to move left, you need to use FF FF FF 10 etc to use negative numbers or... better yet... change the add to a sub (I am not sure if that add opcode allows negative add... I'd need to look at documentation.  But remember this for a 4 byte push value.).

You will need to do this for all functions that call 6C62A2  if you want to make the change on all menus...  OR you can do it the other way as my first example - and change THAT function.  The change will then be reflected on all menus.  It all depends how you want to do it.
 
Last edited:
Okay, thats very helpful. Assuming i get the same numbers. I did notice that altering some would change the type and also change the numbers that corresponded to that type. If i can work this out properly i may go back to the beginning and start with this new idea. The only thing on the menu this far i haven't been able to move is the players name. Only way i could do it was using the status line i got from the notes you sent me. But that required everything to move which knocked it all out of place. If i can extend the reach of each component i can use the status to move everything but only focus on the name, leave it there and rearrange everything around it i guess. If a value goes too far the the left and appears like its behind something im guessing its a box placed for the form position. Or just the same situation as my 1st example where it reaches the end of its acceptable area. There are a few lines i didnt understand where if i changed it from C2 to C1 or 50 to 51 (This occurred alot with these specific numbers) It would alter the player names separately for instance cloud would move left and barret would move right. This confused me but it also made me think that if i can access these and move each players stats independently i could even have them going vertically rather than horizontal. Kinda like FF13 (Hated it but i though the menu was pretty cool)
 
Status
Not open for further replies.
Back
Top