Author Topic: [PSX/PC] KERNEL.BIN editor - WallMarket (v1.4.5)  (Read 410004 times)

warmist

  • Newbie
  • *
  • Posts: 4
  • Karma: 0
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #400 on: 2009-05-18 17:07:15 »
sure go ahead.

[edit]
New version works perfectly! Thank you very much. Now I can start hacking  :evil:  :-)
« Last Edit: 2009-05-18 20:51:45 by warmist »

-Ric-

  • Crazy poster
  • *
  • Posts: 225
  • Karma: 6
  • .
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #401 on: 2009-05-19 02:32:03 »
somehow i cant install Microsoft Visual Basic Power Packs 3.0  :/
when its finishing it gives this error

"Cannot register types for DXCore assembly"

any ideas?

directX 9.0c (4.09.0000.0904)

any ideas to fix this?  :|

NFITC1

  • No life
  • *
  • Posts: 2906
  • Karma: 72
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #402 on: 2009-05-19 13:18:04 »
sure go ahead.

[edit]
New version works perfectly! Thank you very much. Now I can start hacking  :evil:  :-)

Great! That version I gave you had a few tweaks that I'll upload to the main file. It doesn't have any major changes (I'm not sure that most people will notice what it fixes) so it won't get its own version number. At best it'll be 1.2.0a or something.

somehow i cant install Microsoft Visual Basic Power Packs 3.0  :/
when its finishing it gives this error

"Cannot register types for DXCore assembly"

any ideas?

directX 9.0c (4.09.0000.0904)

any ideas to fix this?  :|

Not from me. Can you get a screenshot when the error comes up and expand the error to show any details?

-Ric-

  • Crazy poster
  • *
  • Posts: 225
  • Karma: 6
  • .
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #403 on: 2009-05-19 18:33:33 »



incase u cant watch it well like that, direct link: http://i44.tinypic.com/64gw2t.jpg

NFITC1

  • No life
  • *
  • Posts: 2906
  • Karma: 72
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #404 on: 2009-05-19 20:57:55 »
incase u cant watch it well like that, direct link: http://i44.tinypic.com/64gw2t.jpg

What the heck is Refactor! 1.3? That doesn't have anything to do with the powerpacks link on the first post.

EDIT:
Wanna know what I've been doing?
Code: [Select]
Midgar Zolom :
Init:
0x0000 11 0020
0x0003 60 08
0x0005 90
0x0006 11 0040
0x0009 60 02
0x000B 90
0x000C 73
Main:
0x0000 02 2060
0x0003 01 4080
0x0006 80
0x0007 60 00
0x0009 40
0x000A 70 001E
0x000D 12 2070
0x0010 02 20A0
0x0013 82
0x0014 90
0x0015 60 20
0x0017 61 01B8
0x001A 92
0x001B 72 0096
0x001E 01 0000
0x0021 60 00
0x0023 71 0029
0x0026 72 002E
0x0029 60 01
0x002B 71 0031
0x002E 72 0036
0x0031 60 02
0x0033 71 0054
0x0036 12 2070
0x0039 02 20A0
0x003C 82
0x003D 90
0x003E 60 20
0x0040 61 01B9
0x0043 92
0x0044 11 0000
0x0047 01 0000
0x004A 60 01
0x004C 30
0x004D 90
0x004E 72 0095
0x0051 72 0054
0x0054 81
0x0055 01 0020
0x0058 34
0x0059 52
0x005A 01 0040
0x005D 50
0x005E 70 007C
0x0061 12 2070
0x0064 02 20A0
0x0067 82
0x0068 90
0x0069 60 20
0x006B 61 01BA
0x006E 92
0x006F 11 0040
0x0072 01 0040
0x0075 60 01
0x0077 31
0x0078 90
0x0079 72 008A
0x007C 12 2070
0x007F 02 20A0
0x0082 82
0x0083 90
0x0084 60 20
0x0086 61 01B9
0x0089 92
0x008A 11 0000
0x008D 81
0x008E 60 02
0x0090 34
0x0091 90
0x0092 72 0095
0x0095 91
0x0096 73
General Counter:
0x0000 02 2060
0x0003 01 4080
0x0006 80
0x0007 60 00
0x0009 40
0x000A 70 001A
0x000D 12 2060
0x0010 11 4088
0x0013 80
0x0014 60 01
0x0016 90
0x0017 72 0024
0x001A 12 2060
0x001D 11 4088
0x0020 80
0x0021 60 06
0x0023 90
0x0024 02 2060
0x0027 03 4160
0x002A 80
0x002B 02 2060
0x002E 03 4180
0x0031 80
0x0032 60 08
0x0034 33
0x0035 60 03
0x0037 32
0x0038 43
0x0039 01 0020
0x003C 60 05
0x003E 40
0x003F 50
0x0040 70 0058
0x0043 12 2070
0x0046 02 20A0
0x0049 90
0x004A 60 20
0x004C 60 54
0x004E 92
0x004F 11 0020
0x0052 60 04
0x0054 90
0x0055 72 0108
0x0058 02 2060
0x005B 03 4160
0x005E 80
0x005F 02 2060
0x0062 03 4180
0x0065 80
0x0066 60 08
0x0068 33
0x0069 60 04
0x006B 32
0x006C 43
0x006D 01 0020
0x0070 60 06
0x0072 40
0x0073 50
0x0074 70 00A4
0x0077 01 0040
0x007A 60 02
0x007C 40
0x007D 70 009B
0x0080 12 2070
0x0083 02 2060
0x0086 02 40D0
0x0089 80
0x008A 90
0x008B 60 20
0x008D 61 01BA
0x0090 92
0x0091 11 0040
0x0094 01 0040
0x0097 60 01
0x0099 31
0x009A 90
0x009B 11 0020
0x009E 60 05
0x00A0 90
0x00A1 72 0108
0x00A4 02 2060
0x00A7 03 4160
0x00AA 80
0x00AB 02 2060
0x00AE 03 4180
0x00B1 80
0x00B2 60 08
0x00B4 33
0x00B5 60 05
0x00B7 32
0x00B8 43
0x00B9 01 0020
0x00BC 60 07
0x00BE 40
0x00BF 50
0x00C0 70 00CC
0x00C3 11 0020
0x00C6 60 06
0x00C8 90
0x00C9 72 0108
0x00CC 02 2060
0x00CF 03 4160
0x00D2 80
0x00D3 02 2060
0x00D6 03 4180
0x00D9 80
0x00DA 60 08
0x00DC 33
0x00DD 60 06
0x00DF 32
0x00E0 43
0x00E1 01 0020
0x00E4 60 08
0x00E6 40
0x00E7 50
0x00E8 70 0108
0x00EB 12 2070
0x00EE 02 2060
0x00F1 90
0x00F2 60 20
0x00F4 61 0201
0x00F7 92
0x00F8 12 2060
0x00FB 11 4080
0x00FE 80
0x00FF 60 05
0x0101 90
0x0102 11 0020
0x0105 60 07
0x0107 90
0x0108 73

There's plenty more where that came from too. There's a massive txt file now (1,602,747 bytes) containing all the enemies' AI in this format. Well, at least, all the enemies that HAVE AI.
There are 114231 "lines" of assembler code in the scene file.
There are 1544 scripts in same.
The longest script is 2682 bytes long (there are two of them) and is on Eligor's main script (a monster in the north train graveyard after fighting Aps).
The average script length is 157 bytes.
Total Script size (all scripts combined) take up approximately 238114 bytes. That's roughly 12% of all the uncompressed scene data.
Opcode usage statistics:
Code: [Select]
code usage
00 3296
01 3008
02 10635
03 1635
10 2589
11 4044
12 8123
13 380
30 990
31 269
32 439
33 463
34 1313
35 374
36 98
37 22
40 4686
41 83
42 300
43 450
44 152
45 125
50 755
51 223
52 1054
60 19664
61 4177
62 79
70 4389
71 1746
72 6272
73 1544
75 0
80 8430
81 1311
82 2668
83 268
84 102
85 77
86 306
87 229
90 12414
91 562
92 3477
93 407
94 15
95 539
96 0
A0 49
Pretty cool stuff. Sorta. To me anyway. :(

UPDATE:
Big Oops! I just realized that 62 only gives an argument of three bytes and type 03 is probably just as long. *sigh* That changes quite a lot. I'll have to change WM just a bit (fortunately not much) to account for that. You'd think a 32-bit system could hold a 32-bit value in its stack....
« Last Edit: 2009-05-20 21:46:14 by NFITC1 »

-Ric-

  • Crazy poster
  • *
  • Posts: 225
  • Karma: 6
  • .
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #405 on: 2009-05-20 01:13:00 »
wow i feel so stupid now... :cry: :cry:

NFITC1

  • No life
  • *
  • Posts: 2906
  • Karma: 72
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #406 on: 2009-05-20 14:10:02 »
wow i feel so stupid now... :cry: :cry:

I'm sorry. I didn't mean to make you feel stupid. I just want to get it working for you. Install the PowerPacks properly and it'll work.

-Ric-

  • Crazy poster
  • *
  • Posts: 225
  • Karma: 6
  • .
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #407 on: 2009-05-20 15:50:20 »
its already working and its pretty cool, thanks  :-D

The Seer of Shadows

  • No life
  • *
  • Posts: 1146
  • Karma: 0
  • I used to be indecisive. But now, I'm not sure...
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #408 on: 2009-05-21 06:44:05 »
Now that it is possible to equip a third Limit Break to each level using WM, does anyone know how to unlock those Limit Breaks ingame?

 :oops: Can't believe it took me this long to realize just what a stupid question that was.  Everyone, thank you for not embarrassing me with a reply.

Kudistos Megistos

  • Banned
  • No life
  • *
  • Posts: 3936
  • Karma: 1
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #409 on: 2009-05-21 07:09:58 »
Quote from: NFITC1
EDIT:
Wanna know what I've been doing?

Hmmmm, so, how's ProudClod coming along?  8-)

And I've noticed a couple of things about Wallmarket's AI editing. Is the program not supposed to be able to make new scripts for characters? It seems that I can only edit ones that already exist (my apologies if this has already been answered somewhere else).

And I think that the instructions on using the 44 and 45 opcodes in the "if-conditions" part of the help file are the wrong way around; when I programmed Cloud to use heal when his health dropped below a certain point I needed to use the 45 opcode to make it work.

NFITC1

  • No life
  • *
  • Posts: 2906
  • Karma: 72
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #410 on: 2009-05-21 13:12:54 »
Quote from: NFITC1
EDIT:
Wanna know what I've been doing?

Hmmmm, so, how's ProudClod coming along?  8-)

Getting closer. It just crashes on certain scripts, but that's probably because of the error I noticed yesterday (now I know what the trouble was. Attempting to fix now...).

And I've noticed a couple of things about Wallmarket's AI editing. Is the program not supposed to be able to make new scripts for characters? It seems that I can only edit ones that already exist (my apologies if this has already been answered somewhere else).

I don't think this was ever even asked, but if you select a new script and press Enter then it will begin a new script.

And I think that the instructions on using the 44 and 45 opcodes in the "if-conditions" part of the help file are the wrong way around; when I programmed Cloud to use heal when his health dropped below a certain point I needed to use the 45 opcode to make it work.

This is not surprising. the helpfile's documentation on the opcodes is no where near complete and I think it's only moderately accurate. I'm still working on improving it since I did release it before it was totally complete. I'll have a new one up today with the fix of the 62 code. That might even fix Proud Clod up for release status.
« Last Edit: 2009-05-21 13:59:44 by NFITC1 »

Kudistos Megistos

  • Banned
  • No life
  • *
  • Posts: 3936
  • Karma: 1
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #411 on: 2009-05-21 14:05:30 »
Quote from: NFITC1
I don't think this was ever even asked, but if you select a new script and press Enter then it will begin a new script.


Hmmm, whenever I do that I get this (I have .NET Framework 3.5 and Visual Basic Power Packs 3.0):


Code: [Select]
************** Exception Text **************
System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
   at System.Collections.ArrayList.get_Item(Int32 index)
   at System.Windows.Forms.DataGridViewSelectedCellCollection.get_Item(Int32 index)
   at WallMarket.Form1.EditCharAI_KeyPress(Object sender, KeyPressEventArgs e)
   at WallMarket.Form1.AISectionList_KeyUp(Object sender, KeyEventArgs e)
   at System.Windows.Forms.Control.OnKeyUp(KeyEventArgs e)
   at System.Windows.Forms.Control.ProcessKeyEventArgs(Message& m)
   at System.Windows.Forms.Control.ProcessKeyMessage(Message& m)
   at System.Windows.Forms.Control.WmKeyChar(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ListBox.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

I've also been getting this when editing my more heavily modded (and therefore bigger) KERNEL.BINs:

Code: [Select]
************** Exception Text **************
System.OverflowException: Arithmetic operation resulted in an overflow.
   at WallMarket.Form1.Load_Growth()
   at WallMarket.Form1.OpenKERNELBINToolStripMenuItem_Click(Object sender, EventArgs e)
   at WallMarket.Form1.Form1_Load(Object sender, EventArgs e)
   at System.EventHandler.Invoke(Object sender, EventArgs e)
   at System.Windows.Forms.Form.OnLoad(EventArgs e)
   at System.Windows.Forms.Form.OnCreateControl()
   at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   at System.Windows.Forms.Control.CreateControl()
   at System.Windows.Forms.Control.WmShowWindow(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   at System.Windows.Forms.ContainerControl.WndProc(Message& m)
   at System.Windows.Forms.Form.WmShowWindow(Message& m)
   at System.Windows.Forms.Form.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

The latter doesn't stop me doing anything (I think), so it hasn't really bothered me.

NFITC1

  • No life
  • *
  • Posts: 2906
  • Karma: 72
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #412 on: 2009-05-21 14:54:37 »
Quote from: NFITC1
I don't think this was ever even asked, but if you select a new script and press Enter then it will begin a new script.


Hmmm, whenever I do that I get this (I have .NET Framework 3.5 and Visual Basic Power Packs 3.0):


Code: [Select]
************** Exception Text **************
System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
   at System.Collections.ArrayList.get_Item(Int32 index)
   at System.Windows.Forms.DataGridViewSelectedCellCollection.get_Item(Int32 index)
   at WallMarket.Form1.EditCharAI_KeyPress(Object sender, KeyPressEventArgs e)
   at WallMarket.Form1.AISectionList_KeyUp(Object sender, KeyEventArgs e)
   at System.Windows.Forms.Control.OnKeyUp(KeyEventArgs e)
   at System.Windows.Forms.Control.ProcessKeyEventArgs(Message& m)
   at System.Windows.Forms.Control.ProcessKeyMessage(Message& m)
   at System.Windows.Forms.Control.WmKeyChar(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ListBox.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

This, at least, has been resolved now. Did some things out of order like trying to find the selected cell when there were no cells. That's bad.

I've also been getting this when editing my more heavily modded (and therefore bigger) KERNEL.BINs:

Code: [Select]
************** Exception Text **************
System.OverflowException: Arithmetic operation resulted in an overflow.
   at WallMarket.Form1.Load_Growth()
   at WallMarket.Form1.OpenKERNELBINToolStripMenuItem_Click(Object sender, EventArgs e)
   at WallMarket.Form1.Form1_Load(Object sender, EventArgs e)
   at System.EventHandler.Invoke(Object sender, EventArgs e)
   at System.Windows.Forms.Form.OnLoad(EventArgs e)
   at System.Windows.Forms.Form.OnCreateControl()
   at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   at System.Windows.Forms.Control.CreateControl()
   at System.Windows.Forms.Control.WmShowWindow(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   at System.Windows.Forms.ContainerControl.WndProc(Message& m)
   at System.Windows.Forms.Form.WmShowWindow(Message& m)
   at System.Windows.Forms.Form.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

The scripts in the KERNEL.BIN should not take up more than 2048 bytes. That's all the game will handle. If the growth section is larger than 3988 bytes uncompressed (I think that's the size), then the game will not run at all. Compressed size isn't an issue so I don't think that's a big deal. It might be the script in it that's causing the problem. I identified the problem with loading Ruby Weapon's script because it has a jump to an address with a "73" in it. That's the code to end the script and that's what I was using to end the AI loading. That's worse! Errors abound when this happens. I'm in the process of fixing that now and we'll see if that is the issue.
The script size issue has been fixed, it just takes a while for longer scripts to load. Ruby Weapon's script took about 50+ seconds to load and Eligor's Main (which does have the longest script) ... I started it about a minute and a half ago and it's still loading. :) Be VERY patient with the enemy AI. The longer ones just take a while, but the length-based errors have been accounted for and won't cause errors anymore.

Forget what WAS here. My readme example sucked. My logic is fine
« Last Edit: 2009-05-21 19:17:29 by NFITC1 »

AlbusJC

  • Crazy poster
  • *
  • Posts: 117
  • Karma: 1
  • If you really love something let it go
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #413 on: 2009-05-22 14:39:48 »
I tried proudclod 1.0. this program can change the AI of the enemies, right? So, you can add dialogue to the fighting as well as fighting the scorpion? I have tried to do with Scene Edit but have not managed to change the script...  :? :

NFITC1

  • No life
  • *
  • Posts: 2906
  • Karma: 72
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #414 on: 2009-05-22 15:34:36 »
I tried proudclod 1.0. this program can change the AI of the enemies, right? So, you can add dialogue to the fighting as well as fighting the scorpion? I have tried to do with Scene Edit but have not managed to change the script...  :? :

Sure can. Just make sure that if you do you also make the characters pause. There's documentation in WallMarket's helpfile on how to do that under command 92h.

Kudistos Megistos

  • Banned
  • No life
  • *
  • Posts: 3936
  • Karma: 1
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #415 on: 2009-05-22 16:07:29 »
Ah, now I can make new scripts!

And I think I'm going to have some fun with ProudClod as well. Virtual cake for you  :-D

I changed my name because this is what I use everywhere else; I doubt it will be enough to confuse anyone.

Zen

  • Insane poster
  • *
  • Posts: 403
  • Karma: -4
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #416 on: 2009-05-22 17:11:50 »
Just a question...

Do you have to start a new game when you edit the scene.bin file? Because it surprised me when I could use my old saves with the modified kernel.bin.


NFITC1

  • No life
  • *
  • Posts: 2906
  • Karma: 72
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #417 on: 2009-05-22 18:08:07 »
Just a question...

Do you have to start a new game when you edit the scene.bin file? Because it surprised me when I could use my old saves with the modified kernel.bin.



...I never had to start a new game in either case. I guess it depends on what you edit in the KERNEL.BIN, but editing the scene.bin should be safe.

gjoerulv

  • No life
  • *
  • Posts: 1158
  • Karma: 35
  • me
    • View Profile
    • My Youtube
Wall Market, FFVII KERNEL.BIN editor
« Reply #418 on: 2009-05-23 08:27:34 »
Hey, great work here N.

I just noticed something with Proud Clod. I was checking out my new enemies with it, and the program seem to be importing scripts from other scenes on certain enemies. For instance, in scene 4 (or 3 zero based) I made a new enemy called Jinx. I only made a Pre-Battle and Main script, but according to PC it has All the counters as well, except magical (The CGeneral and CPhysical are from the standard chocobo AI). As far as I know it only happens with my new enemies.

I should thank you as well 'cause I discovered some bugs in my mod.  :-D

Just a question...

Do you have to start a new game when you edit the scene.bin file? Because it surprised me when I could use my old saves with the modified kernel.bin.



No, but certain things will be messed up. Like Current Materia AP vs Master. And editing initial data is pretty useless (the initial savemap).

Tonfa

  • Fast newbie
  • *
  • Posts: 18
  • Karma: 0
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #419 on: 2009-05-23 08:52:06 »
Fantastic work, with relatively simple enemy AI editing I finally have all the needed tools for a FF7 rebalancing hack.

There's a bug with it though: If you check/edit a scene (let's use scene 93 in this example - MP, Guard Hound, Smogger), then move to another scene (let's use scene 78 - Mono Drive, Grunt, 1st Ray) it doesn't unload AI scripts that don't exist in the new scene properly. 1st Ray now has Smogger's PreBattle script in the example used. Only one scene can be edited at a time as is.

Akari

  • Freak
  • *
  • Posts: 764
  • Karma: 28
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #420 on: 2009-05-23 09:17:19 »
By the way, NFITC1, contact me through ICQ about detail about AI opcodes. I can explain how any opcode works. I just too lazy to write about it.
I looked at your documentation about opcodes and found a lot of missing things. For example about 0x96 opcode =)
« Last Edit: 2009-05-23 09:19:36 by Akari »

NFITC1

  • No life
  • *
  • Posts: 2906
  • Karma: 72
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #421 on: 2009-05-23 15:25:53 »
Fantastic work, with relatively simple enemy AI editing I finally have all the needed tools for a FF7 rebalancing hack.

There's a bug with it though: If you check/edit a scene (let's use scene 93 in this example - MP, Guard Hound, Smogger), then move to another scene (let's use scene 78 - Mono Drive, Grunt, 1st Ray) it doesn't unload AI scripts that don't exist in the new scene properly. 1st Ray now has Smogger's PreBattle script in the example used. Only one scene can be edited at a time as is.

Oops! Definitely something that needs to be addressed. I didn't ever run into that when I was just testing to see if it was reading individual scenes. I'll get this fixed ASAP (but likely later in the day today).

By the way, NFITC1, contact me through ICQ about detail about AI opcodes. I can explain how any opcode works. I just too lazy to write about it.
I looked at your documentation about opcodes and found a lot of missing things. For example about 0x96 opcode =)

I would greatly appreciate your help in writing those documentations. I wrote what's currently in the help file mostly from memory and what little documentation I had on them. Also I felt in a hurry to finish it so I could release what I had as soon as I could.
Granted, 96 was the most peculiar as it's only used once. And I don't see any evidence that 90 would take all the arguments that Fergusson says it will. That doesn't mean it won't, it just might never get used that way or I just never noticed it.
I'll have to start an ICQ account. I used to have one, but it was so long ago I don't remember the number.

gjoerulv

  • No life
  • *
  • Posts: 1158
  • Karma: 35
  • me
    • View Profile
    • My Youtube
Wall Market, FFVII KERNEL.BIN editor
« Reply #422 on: 2009-05-23 16:23:53 »
Fantastic work, with relatively simple enemy AI editing I finally have all the needed tools for a FF7 rebalancing hack.

There's a bug with it though: If you check/edit a scene (let's use scene 93 in this example - MP, Guard Hound, Smogger), then move to another scene (let's use scene 78 - Mono Drive, Grunt, 1st Ray) it doesn't unload AI scripts that don't exist in the new scene properly. 1st Ray now has Smogger's PreBattle script in the example used. Only one scene can be edited at a time as is.

Ok that answers my question. Great!
Once again good work NFITC1. It's a lot easier moding AI now.

NFITC1

  • No life
  • *
  • Posts: 2906
  • Karma: 72
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #423 on: 2009-05-23 17:14:43 »
Fantastic work, with relatively simple enemy AI editing I finally have all the needed tools for a FF7 rebalancing hack.

There's a bug with it though: If you check/edit a scene (let's use scene 93 in this example - MP, Guard Hound, Smogger), then move to another scene (let's use scene 78 - Mono Drive, Grunt, 1st Ray) it doesn't unload AI scripts that don't exist in the new scene properly. 1st Ray now has Smogger's PreBattle script in the example used. Only one scene can be edited at a time as is.

Ok that answers my question. Great!
Once again good work NFITC1. It's a lot easier moding AI now.

This issue has now been resolved. It was a very simple fix, but the reason I didn't think I'd get it done this early is because I wanted to be lazy today. Well, it all works out now so whatever. :) The link on the first post has been changed.
I also caught another bug that only happens in one case (that I found). In scene 12 the first enemy is a Mu and the third enemy is a Levikron. These both have scripts, but the second monster in this scene was apparently removed, but it still has a script. All it is is a 73h where the Main script WOULD be, but it sort of errors out because it has no name. In that case the program acts weird because it thinks that monster's name doesn't exist. I solved that too.

Akari

  • Freak
  • *
  • Posts: 764
  • Karma: 28
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #424 on: 2009-05-23 18:39:17 »
And maybe you need to simplify things in descriptions cause a lot of things is difficult to understand, because they magic numbers. For example addreses where battle ai stores values.
0x0000, 0x2000 and 0x4000 are not understandable, but "unit variable array" (0x0000), "battle global structure" (0x2000) and "unit data structure" (0x4000) are much more convinient.
So opcode 0x90 store data to current "unit variable array" (you can think of it as current unit variable array, because you can set variable only to current unit), can store to global battle structure (which is only one), or it can set values to unit data structures by mask.

It may be good idea to add descriptions of this structures with addreses to easier understanding =)