[PSX/PC] Battle editor - Proud Clod (1.5.0/FINAL)

  • Thread starter Thread starter nfitc1
  • Start date Start date
Status
Not open for further replies.
Didn't bother to check if this was already reported but:
if you paste AI in a previously empty slot ( counter for an enemy that had none for example ) and then dont touch it and just click Done, it won't save the AI. you need to make any change ( even if you change 0000 to 0000 ) and it will save fine
 
Hello. I am having a problem with Proud Clod. When I try to update the KERNEL.BIN look-up table, I see this message from Proud Clod:

          "Everything's fine

                  (!)   KERNEL.BIN look-up table appears to be correct."

But it isn't correct at all. I am still fighting enemies in the wrong places. Such as Gas Ducters in the sunken Gelnika. I will try another approach in the meanwhile. I plan on using an unmodded KERNEL.BIN with Proud Clod, updating it, and then comparing the look up table in the unmodded KERNEL.BIN with my modded one. Then I can just change the look up table in my modded KERNEL.BIN manually.  I modded my SCENE.BIN and my KERNEL.BIN extensively so I can't say exactly what is causing this. As a side note, Hojo and Scene.edit also will not update my look up table, but I posted this here since Proud Clod has made those two programs almost obsolete. Do you think I may have modded my SCENE.BIN too much? I thought there was plenty of memory in the PC version but maybe I added too much and that's why it's unable to update. Thanks for anyone that can help.
 
Are you telling it to look at the correct KERNEL.BIN that your game is using? I've run this look up numerous times and haven't had a problem.
 
Yes. I'm 100% sure. I just checked again for the sake of it. I think the problem is my scene.bin. I have other modded scene.bin files that do work. But I would really like this particular scene.bin file to work. I'm thinking that I changed something in the scene.bin to cause this problem. I think maybe the battle formation data(the scenes themselves) are messed up and the kernel is still reading it as though it is normal. Maybe I have too much data in the scene.bin file. Is it like an odometer? If you make the number too high it rolls over to 0? That would perhaps explain this. I don't know much about it but for now I will just use a different scene.bin and start toying around, testing periodically to see when it messes up.
 
Last edited:
You can't have modified the scene.bin too much for the look-up table to not work correctly. That's not the way it works. Info on the scene.bin look up table lacking in explanation on the wiki. I'll remedy that shortly. Here's how the whole thing works:

Each of the 256 "scenes" in the scene.bin contain four formations. The entire uncompressed scene is 7808 bytes (or something like that). When the individual scenes are compiled, they are compressed and sequentially stored in chunks of 8192 bytes.

Each of these chunks begins with a 32 byte header stating where the compressed scene is located within that chunk. So the first scene would start at 0x0000 within that chunk and the next might start at 0x01F2, the third at 0x0342, etc. The chunk ends when it gets to be 8192 bytes in size or contains 16 scenes.

The scene look-up table in the KERNEL.BIN indicates the first scene in a particular chunk. So the first chunk will always start with scene 0, the second chunk starts with scene C, etc. The game checks this when a formation is requested. From the formation requested it can get the particular scene that the data for said formation is in and it can easily find the scene by checking the SLUT (Scene Look-Up Table, SLUT was too awesome an acronym to NOT use :D ). If the game requests scene 15 it will find the last chunk whose first scene is less than that and search that compressed block.

ex.
Formation 134h requested (I don't know what that is, it's just an example). The scene that's contained in is ( 134h >> 2 ) = 4Dh. The SLUT in the example KERNEL.BIN I have starts like this:
Code: [Select]
Code:
00 09 10 16 1A 25 2C 34 3C 49 52 59 60 66 6A 72
It will find that the 49 is the greatest number in that list that is lower than 4D so it will search through chunk 0A of the scene.bin to find this formation. That happens to be the fifth scene in the chunk (4D - 49 = 5) so it will use the formation out of that scene. However, if that scene isn't really 4D (meaning the SLUT was off) it will look like the battle is out of place.

In conclusion (tl;dr for you more text-y types), based on the way the scenes are structured you CANNOT have done anything to them to make them suddenly not work. The scene.bin can be as small as 128K in size or as large as 512K in size (which is practically impossible). If it's in between those sizes (which it has to be) then you don't "have too much data".

There are at least three things that could be wrong:
1. Your SLUT is off and PrC is incorrectly reporting it as correct. Many people have used this feature and no one has recently said it's wrong, but that doesn't mean it's working in all cases. You can double-check it "manually" with a hex editor.
2. You screwed up something in the formation data and added an enemy you didn't mean to. This is likely the case if the background in the battle is what you want, but the enemy is out of place.
3. Your flevel is requesting the wrong formations.

I need more info to determine which one is the case. What does your SLUT look like?
 
Lol. She is a model SLUT. She's definately a looker. Her bust is FF, but they're fake. Thanx for the info. My guess is #2. Bad formation data. I messed around with that and perhaps that is why the enemies look messed up. Ex: The Sea Serpent battle had a bad camera angle, as if it was supposed to be a smaller monster. Correct SCENE, wrong enemy. I think my SLUT is fine, but my enemies are just out of place. I am using an older mod and just working my way back up, being careful this time. Good thing I back up my mods after major changes.

BTW, are you going to add that info on SLUTS to the wiki?
 
The current PrC version will tell you what enemies you have in in the scene in the formation window. You can't really add enemies on the fly without their data being in the scene. So don't go adding enemies to formations when they're not in the scene.

As for the SLUT, there's info there, it's just been there since before I came on to the scene so it doesn't give as good an explanation as it could. :D It just needs some updating.
 
First i have to say what a wonderful tool Proud Clod. I does modding significant easier  ;D

I have a question: is it possible to make physical enemy attacks ignoring rows? I tried some things but nothing worked.

Thanks in advance
 
is it possible to make physical enemy attacks ignoring rows? I tried some things but nothing worked.
Not by altering any attack property, no. However, you can adjust the AI to use different attacks on targets in different rows. I think there's only front and back rows for playable characters so that cuts down significantly the amount of checking you'd have to do. The trick is to check a potential target's row (402X-something, it's not in front of me right now) BEFORE adding them to the target mask (2070) and giving the command to attack. You could even set it up to do one attack to the front-rowers and then do one to the back rowers. I think I could give an example if you need some more clarification.
 
Not by altering any attack property, no. However, you can adjust the AI to use different attacks on targets in different rows. I think there's only front and back rows for playable characters so that cuts down significantly the amount of checking you'd have to do. The trick is to check a potential target's row (402X-something, it's not in front of me right now) BEFORE adding them to the target mask (2070) and giving the command to attack. You could even set it up to do one attack to the front-rowers and then do one to the back rowers. I think I could give an example if you need some more clarification.
Thanks for the fast answer.
I had hope that i don't have resort to this but it should help in most cases except for attacking multiple targets. The problem is that scripting with the version i have is not possible because i get an error message everytime.
 
Using the SYNC command for enemies breaks formations in all scenes including that enemy. This is the source of the reports of wrong enemies even though the lookup table is correct.

Edit: Also, the status-type element table is wrong. The editor claims palmer takes double damage from reflect when it's really sleep.
 
Last edited:
Using the SYNC command for enemies breaks formations in all scenes including that enemy. This is the source of the reports of wrong enemies even though the lookup table is correct.

Edit: Also, the status-type element table is wrong. The editor claims palmer takes double damage from reflect when it's really sleep.
I was afraid of that sync-breaking. I knew it could happen, but it's one of the newer features that made it an alpha version.

About the double damage, does it really claim reflect? I don't remember that one specifically, but I did check a few others and they were correct (I thought). Maybe my offsets are wrong.

Regardless, PrC is being re-written and these won't even be issues in the new edition.
 
Did the help docs get removed on the alpha? I was trying to find them to learn opcodes again and they aren't in the zip.
 
Did the help docs get removed on the alpha? I was trying to find them to learn opcodes again and they aren't in the zip.
Yeah. Sorry about that. I lost the source. WM's help still has the opcode info, but the wiki is more accurate.
 
It's actually not, though, I feel. I'm reading through the WM helpdoc right now and there are things that I just can't find on the wiki, such as for opcode 92:

NOTE: This also requires two values to be set first. The battle variables 2060 and 2070 from the calling script's owner. The 2060 is read to determine who executes the action and the 2070 determines whom the target of the action is.
Maybe I'm blind and the wiki stores a list of what the set addresses for battle variables are somewhere, but honestly, your documentation is much more accessible and comprehensive to me, and these details are incredibly important if you're trying to decipher and modify the AI scripts.
 
...your documentation is much more accessible and comprehensive to me...
They're both written by me.

From the wiki:
Code: [Select]
Code:
Code    Arguments   Value(s) to pop   Effect 92h     N/A         Two of any type   First pop is attack ID to perform. Second pop action type
...
92 CODE NOTES:
    Second pop must be one of the following:

    Command index in case of character AI
    20h - For enemy attack
    22h - Force execution of script (referenced by first pop)
    24h - Pauses battle engine while string is displayed (in conjunction with code 93)
I don't remember what's in the documentation, but I do know there are examples that probably explain what it should do better.
 
Hello  ;D

First congratulations to NFITC1 for this fantastic tool!


Have some questions, I try show debug message window (for testing) in battle but cant see  :-(

Its really possible print debug window message?

Is possible show values (global var,local var, etc..) in window?

For example in IA Aeris have debug print:

Debug.Print: "LOVEPARA CHR:%d, %d->%d" ; Self.FormationNumber - 16; Unknown(2018); GlobalAddress

The opcode to print debug message is opcode A0 and Argument 03 "LOVEPARA CHR:%d, %d->%d" and A0 opcode in proudcloud is refuse, not possible?


And other question...its think its hard, created IA battle with special event, in moment you kill the boss others enemies already died.

Imagine that cloud kill boss, the others enemies died (these cant target, wait for the turn died, if he dies boss orders them die), but if you have previously be turn of allies (aeris and yuffie for example) they do so (for example if aeris prepare magic cure do), until "other enemies" end turn (for disabled and end battle), really dying boss "other enemies" also, but need wait their turn to die, but allies should not "try" turn (no enemy target), this being the problem.

The question is:

Anyone know OPCODE for cancel / suspend / end automatically turn allies?

Otherwise some solution to allow boss battle end when he dies without waiting turn of "others enemies" or allies to end battle?

Any suggestion to be good!

Sorry for english hard to explain T.T
 
Status
Not open for further replies.
Back
Top