Editing the in game menu

  • Thread starter Thread starter Tsuna
  • Start date Start date
Status
Not open for further replies.
With practice and research you'll become more adept and wonder why you ever did it the way you did when you started.  I restarted the menu project 3 times - one of those times was to redo all the hex changes. And now I'm happy with it :)

If the string goes outside the box, then you need to move the box.  It's not difficult, as I showed you above.  It's all about looking at what is causing the offset in the first place. When a value is truly 0, it will be at position 0 - the furthest left coordinate on screen.  When you see ebp + 8 or whatever, and then add, edx 2D - push edx (for example), chances are that it is inside a box and is being fed the start box X or Y pos. 

Also, there are times when you will need to adjust the Z value.  This is a floating point push value usually... so you'll see things like Push 3F x x x  or whatever the numbers are. It will be near the x y pushes obviously.  Sometimes it's not there because a register is being pushed in its place.  I had to add one or two of them manually.
 
Last edited:
Alright ill do all this research now anyway. Yeah i never understood how a Z could be in, Pushing on a Z should be no different unless its a 3d space which its not so? Meh. After i do have this im gonna need to figure out out how to disconnect the main menu from all the others. When i get it perfect on the main window the others look ridiculous cuz its just copy and pasted basically.

Also ive been using your BC as a basis to edit so my changes will also have yours in if thats okay
 
No problem, when i first opened this thread and seen what you sent me i felt like i was looking at ancient Egyptian rocket science but it's not bad after a little trial and error
 
Nah im lost again, i couldn't really work out how your programs help so what i ended up doing was opening your because IRO and looking in the hext folder to see what you did. I coppied your style and that's how i was able to save it with repacking. For some reason some values arent changing. Im thinking maybe im doing something completely wrong, ive been wreaking my head and getting nowhere, starting to get stressfull. Can i send you a copy of my notepad instructions so you can put them in your because mod and see what i have and help me that way?
 
did you check the hextlaunch log?  It tells you if something hasn't changed.  Also, I don't use iro (that's 7th heaven?)... I use my own installer :)
 
So how am i doing this? Alot of the values on this list dont have any new changes there just listed so i dont forget them. Heres what i have right now if you google ff7 remake menu images will give you a rough picture of what im attempting. You'll see the max Hp problem im having among others. If you figure this out and send it back perhaps with a list of what you did i would learn it better

https://www.mediafire.com/?oamxu671vb14tu7
 
I don't see any issue there.  The syntax is correct - and the values you have stated will be changed.  Check hextlaunch.log.

What's the problem?
 
The problem was moving the current HP further to the right without it sisapearing among similar issues with the others too
 
Remember to do as I did above.  Trace what pushes the values onto the stack for that function.  Head up until you find the start of the function (usually after a ret) and then search for it. Or edit the current function how I did.
 
Yeah it seems so simple and ive attempted it i just cant for some reason. I can right click it, select function and scoll to the top of it and find the ret. Replace with no code then im lost.
 
Which address.  I'll go through this one with you, but then I am back to my own projects :P
 
Thanks i know im being a pain, once i see it done ill get it.
006C6553 Try move this to the very right of the hp bar for me. Then just a brief explanation, if you wanna make sure i get this perfect maybe a screenshot from time to time lol
After this ill leave you alone unless i get an unrelated question :D Promise
 
Again, if you are moving numbers from there, then why not move the entire box?  But regardless...  to move that further right from that position you need to modify the code.

mov edx,[ebp+08]

Isn't going to be needed because you are going to set the push manually and regardless of the box position.

So change it to push 100. Then nop the push edx, because you cannot pass another push into the function that follows (the Call) when it isn't expecting one.

this leaves:  006C654E = 68 00 01 00 00 90 90

And that will do what you need.

Unfortunately, the screen transition does not work nice when you edit this function and you'll likely have to duplicate this change in a few places.  That's why it's better to just move the whole box right from the push values that go into this function (This function starts 6C62A2)  and then make a small change to the add edx.

I'm not going to be able to help much because my workload is massive. Definitely look up assembly tutorials and learn about the stack.

The basics are that a function is CALLed and usually uses all the push values that preceded it.  If a function is expecting 3 arguments (X Y Z) then it will expect 3 values to be pushed onto the stack. Each push is 4 bytes of data.  After the function, the stack is corrected to remove the 12 bytes that were used.  The data remains in memory but is redundant.  The pointer (esp) changes.

That's why at 6C655A you see add esp,18 (24 decimal) - because it's correcting the stack pointer for 24 /4 (6) arguments.  In other words, 6 arguments were fed in to  call 006F9739. Two of those were the HP number's X and Y position.  The function 006F9739 then draws that to the screen.  You'll see 006F9739 an awful lot... because it's always doing the same task with different push values for each menu item.  That's how code works - functions call functions - and the stack works away in the background.

In ff7, you can always work out where the arguments reside, because they will always use ebp. So [Ebp+ 8] is the FIRST argument. [EBP + C] the second.  [EBP + 10] the 3rd.

[EBP + 4] holds the return address. The address that the program will jump to when it reaches a return (ret).

See here:

http://www.cs.virginia.edu/~evans/cs216/guides/stack-convention.png

Note that when optimization is on in compilers, they usually use ebp for a normal register (like eax, ecx, edx).  Debugging those programs is a lot harder, because you are always working with esp and have no easy reference that I just mentioned.  That's not relevant to FF7.
 
Last edited:
Yeah with the 1st part you mentioned it works and the item moves to place but on other screens its different, plus opening and closing the menu has no slide effect. I see what you mean. Ill try get the second one working and after this id like to attempt to be able to get gifs working or possibly code in my own timelapse movie like the prelude credits
 
If there is a way i can separate 006C62C0 for example (HP bar X) from 006CABFB (The Box)without separating it from anything else it would be perfect. So it would still transition when changing form opening and closing the menu and if i remove it after using the box command to place it then it'll look good on other pages too. But i also would like a way i could move it myself on every page.

Is there a way i can cut the tie between 1 address to another instead of all of them. And how would i find these address's (Or is it just trial and error....)
 
Completely losing faith here... i feel like i have gotten so close but im still so far away. I can get the main page to look great. No problem. At the cost or detaching a code from all other codes. Is there anyone that can show me a way, ill try to use an analogy to explain this.

If code 000000001 is the HP bar on screen 1, can i right click it and choose show me what happens if i edit this.

And it then says yeah when this is changed 0000000002 will also move it in the item screen.

00000000003 will move it on the magic screen

00000000004 is the transition when opening and closing the menu.

00000000005 is if you choose to place the top character in the middle it comes with the rest of the stuff

Is there a way i can say "Yeah id like to remove number 2 and 3 but not the others?"
I can change the opcode to nop but that removes everything. When i select show me what access's this code i get a stupid amount of results.

I just need someone to do 1 address in the way im attempting to explain and show me in Lamens terms how it was done and ill be able to change all the menu to however i want it for everyone. When i understand this a little better im sure i can get the avatars to be shown as GIF's rather than PNG's along with maybe Buster.tex. If we can load PNG's instead of a tex why not a GIF? It;s all here somewhere i just cant see it, please help i hate to say it but im giving up slowly, it's been too long with no results
 
We can load png only because aali added support for it.  I don't think he added support for any other format.
 
Could support be added? But with the rest of the stuff if there's no way of getting help with this I'll gladly accept defeat and release my hex addresses for someone else to make use of.
 
Last edited:
It would be great if Aali would come back or if some body would make a new plugin for the graphic. The source of it was fully reversed: http://magnetiktank.blogspot.de/?m=1
Still programming is beyond my capability at the moment so I only have a hunch of an idea what he has reached there.

As alter alternative you could look what's possible with uMod and the steam version. Maybe some of the image formats support animations.
 
Status
Not open for further replies.
Back
Top