326
Scripting and Reverse Engineering / Re: Editing the battle scripts
« on: 2017-05-09 20:25:48 »
Both the field and the battle scripts have access to the entirety of the savemap.
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.
Also, it's confirmed...This is known. It's a floating point error when the graph gets high. I've corrected it in the not-yet-released version.
You have an off-by-one error in wall market:
[img]
I think the function needs to be able to do that in other places though. To be able to revive or kill based on simple assignments to HP of a character. I'm not sure where else it's used. What was really needed was a function to set HP to an absolute number rather than "decrease" and "increase". They likely came up with the idea of "make HP 1 after being hit with the needles" later in development.Then the fault is in the field script. I just checked it and it just removes 501 HP and restores 1. That will heal all dead characters.
What I am doing for Weapon is simply making these needles and so on an instant death or other bad effect like decrease HP. If all 3 chars are 0 HP, then game over. The latter is already another bug (all 3 chars can be dead on field), which will need fixing.
Make sure to specify which tab. There are a few #14s... though I assume you mean Field #14.didn't notice the tabs. Yes, I meant the field bug. The trick is "don't revive, but don't kill either". The field opcode probably needs an asm edit.
Hmm... it seems to work only when it feels like it. Like I'm pretty certain I saw the Limit Bar go down at some point, but at another point both Cloud's and Barret's were nearly full at the end of a battle and they were both still that high when I entered the next battle.
SO NFITC1, you'd be adept with asm too?Sure. You could PM me any time.
Once we figure out a solution for this guy think you could help me with something?
Regarding max HP, I presume there's no way to modify the correct value then?
Address: Former Value: New Value:
=========================================
0x1C60A4 8B 8A
0x1C60A5 45 8A
0x1C60A6 E0 C0
0x1C60A7 8A 8D
0x1C60A8 8A 9A
0x1C60A9 C0 00
0x1C60AA 8D D0
0x1C60AB 9A F9
0x1C60AC 00 90
v3 = 1000;
v4 = 1;
if ( v4 >= 0 ) v3 = v3 / v4;
for ( i = timeGetTime(); i OR FFFFFFFFh <= 2 * v3; i = timeGetTime() ); //purposefully wait until timeGetTime's lower DWord value is less than 2000; BUT WHY?!
i = timeGetTime();
while ( i == timeGetTime() ); //This will have a small difference, but it never does anything with this delta
i = timeGetTime();
sub_40AA12(&v2);
while ( timeGetTime() - i <= v3 );
sub_40AA12(&v5)
The RDTSC instruction is not a serializing instruction. Thus, it does not necessarily wait until all previous instructions have been executed before reading the counter. Similarly, subsequent instructions may begin execution before the read operation is performed.
That's not how a proper limiter should work at all. You can't just put an extra 0.5 on if things aren't working out for you lol.Since when has "proper" stopped Square from doing things?
I thought there was a directory tree in magic.lgp hmm..Hey, halkun. It's been a while.
Oh man, why the DS Remake? The PSP remake is by far the best version of this game.