[PSX/PC] kernel.bin data editor - Doomtrain (v1.0.1)

  • Thread starter Thread starter alexfilth
  • Start date Start date
Status
Not open for further replies.
Looking through this, it looks like there's not a way to add items to the list of battle items. Is that as simple as changing a byte somewhere in a given item's data structure, or is it hardcoded in some really obtuse way? If it's the former I can do it via hex editor or something when I get around to needing to, the latter might take some more work. I'm not too familiar with FF8's internal workings yet, but I've got some ideas I'm trying to get a sense of feasibility for.

This is fantastic, by the way. Really opens a lot of doors.
 
It's hardcoded in the exe, if the item id is <32 (iirc it was something like this), it treats it as a battle item and uses a different section of the kernel to get names and data.
In addition to this, the sections before the text in the kernel are hardcoded in size, so it's not possible to add anything to the sections - the exe uses hardcoded offsets to pull the data from the kernel and doesn't use the offsets present at the beginning.
 
Can the experiment curve be modified by modifying the CharEXP.cs file?

Because I did a test and it really changes nothing ...

Me new code:

chartEXP.Series["Default"].Points.AddXY
(0, Math.Floor((Math.Pow((2 - 1), 2) * KernelWorker.GetSelectedCharactersData.EXP2) / 256 + (2 - 1) * KernelWorker.GetSelectedCharactersData.EXP1 * 3) * 50 / 77);

chartEXP.Series["Default"].Points.AddXY
(1, Math.Floor((Math.Pow((10 - 1), 2) * KernelWorker.GetSelectedCharactersData.EXP2) / 256 + (10 - 1) * KernelWorker.GetSelectedCharactersData.EXP1 * 5) * 60 / 70);

chartEXP.Series["Default"].Points.AddXY
(2, Math.Floor((Math.Pow((20 - 1), 2) * KernelWorker.GetSelectedCharactersData.EXP2) / 256 + (20 - 1) * KernelWorker.GetSelectedCharactersData.EXP1 * 7) * 80 / 63);

chartEXP.Series["Default"].Points.AddXY
(3, Math.Floor((Math.Pow((30 - 1), 2) * KernelWorker.GetSelectedCharactersData.EXP2) / 256 + (30 - 1) * KernelWorker.GetSelectedCharactersData.EXP1 * 9) * 110 / 57);

chartEXP.Series["Default"].Points.AddXY
(4, Math.Floor((Math.Pow((40 - 1), 2) * KernelWorker.GetSelectedCharactersData.EXP2) / 256 + (40 - 1) * KernelWorker.GetSelectedCharactersData.EXP1 * 11) * 150 / 51);

chartEXP.Series["Default"].Points.AddXY
(5, Math.Floor((Math.Pow((50 - 1), 2) * KernelWorker.GetSelectedCharactersData.EXP2) / 256 + (50 - 1) * KernelWorker.GetSelectedCharactersData.EXP1 * 13) * 200 / 45);

chartEXP.Series["Default"].Points.AddXY
(6, Math.Floor((Math.Pow((60 - 1), 2) * KernelWorker.GetSelectedCharactersData.EXP2) / 256 + (60 - 1) * KernelWorker.GetSelectedCharactersData.EXP1 * 15) * 260 / 40);

chartEXP.Series["Default"].Points.AddXY
(7, Math.Floor((Math.Pow((70 - 1), 2) * KernelWorker.GetSelectedCharactersData.EXP2) / 256 + (70 - 1) * KernelWorker.GetSelectedCharactersData.EXP1 * 17) * 330 / 35);

chartEXP.Series["Default"].Points.AddXY
(8, Math.Floor((Math.Pow((80 - 1), 2) * KernelWorker.GetSelectedCharactersData.EXP2) / 256 + (80 - 1) * KernelWorker.GetSelectedCharactersData.EXP1 * 19) * 410 / 30);

chartEXP.Series["Default"].Points.AddXY
(9, Math.Floor((Math.Pow((90 - 1), 2) * KernelWorker.GetSelectedCharactersData.EXP2) / 256 + (90 - 1) * KernelWorker.GetSelectedCharactersData.EXP1 * 21) * 500 / 26);

chartEXP.Series["Default"].Points.AddXY
(10, Math.Floor((Math.Pow((100 - 1), 2) * KernelWorker.GetSelectedCharactersData.EXP2) / 256 + (100 - 1) * KernelWorker.GetSelectedCharactersData.EXP1 * 23) * 600 / 22);

Thanx so much...
 
Last edited:
If you're trying to mod it in the actual game, no.
The curve in CharEXP.cs is just a copy of how the game calculates EXP, it wouldn't change how the game calculates it.
 
With what program have the kernel.bin file been compiled to main.fs?
 
Seems that everyone has no problem with Deling, but for the life of me, I can't seem to get it to work with Qt.

Qt misses compiler that matches its version. I have qt-windows-opensource-5.0.2-msvc2012_64-x64-offline, and I can't seem to get MSVC compiler hooked up. Other Qt versions have MinGW bundled by default (these seem to work well), but I can't find one.

Which out-of-box version of Qt works with Deling? Any alternative to extract, modify, and replace FF8 kernel?
 
Last edited:
Whoa! It worked! Very cool and useful tool! Thanks Girl next door :)

Only thing I had to do was change language from Polish to English (I'm a little rusty)  ::).
 
Is there any program like CDMage (Final Fantasy VII) for Final Fantasy VIII ?
I would like to use a kernel.bin editor but i can´t extract it from my ff8.bin file.

Thanks
 
doomtrain isn't compatible with the steam version of final fantasy 8 , i check that out now , it look for some kernel file that's not present in the steam version :\
 
doomtrain isn't compatible with the steam version of final fantasy 8 , i check that out now , it look for some kernel file that's not present in the steam version :\
Really? I've been using Doomtrain for FFVIII Steam version some days already and my mods had been working so far, except for two...

1 - When I try to modify the GF's abilities order it got bugged in-game, some were empty and others wasnt the one I changed in Doomtrain.
2 - I dont know whats going on, but since I've changed the ATK Power from Zell's Duel, his limit break were bugging the game, making the enemy receive multiple hits nonstop, being impossible to continue the gameplay, forcing to alt+F4.

Does someone know why these things are happening? The rest of the mods worked just fine. (characters stats growth and exp to level, magics atk power, others limit break atk power, enemies abilities power...)
 
doomtrain isn't compatible with the steam version of final fantasy 8 , i check that out now , it look for some kernel file that's not present in the steam version :\
it is you just need to use Deling FF8 Field Editor to extract the file from Final Fantasy VIII\Data\lang-en\main.fs

also you might aswell try out Cactilio another great tool for FF8 found on these forums :)
it's used to modify the battle.out which is found inside Final Fantasy VIII\Data\lang-en\battle.fs

and back up your files before you start... :)

also if this sounds like too much... maybe have a look at my first attempt at modifying both of those :)
https://www.ff7catalog.com/threads/12731/
started just a few days ago, i've already done so much :) loving these tools :)
for eg lvled up bosses past their previous max lvl... adjusted the attack power / magic powers for almost everything...
since i'm a fan of the Hard_Mode_Launcher for FF8... my mods work alongside that + complement it imo...
i also made some changes to CERBERUS the GF since he is made useless when you use the hard mode ... since double/triple are broken by the unlimited magic mod i guess... now with my mod Cerberus Casts: Haste + Angel Wing + Regen on all party members...
this is like Rinoa's Angel Wing in that it makes the character BERSERK except it's RANDOM MAGIC ATTACKS BASED ON THEIR STOCK AND DOUBLE DAMAGE...

I also broke the DMG LIMITS for most big moves in the game... Limits / High end Magic / GF's other then Bahumut/Eden
also gave the other GF's better stats at higher levels to try to make them less useless, and made EDEN do a less DMG in fact...

also Doomtrain is great for trying out weird stuff... like Making Zell Perform LIONHEART :P Despite having no Sword / Gunblade LOL
https://nofile.io/f/yQ6nAcHa3Pw/2018-07-01+04_05_51-FINAL+FANTASY+VIII.jpg

basically you can easily change the "button" for something like "doom" "devour" etc to Cast something else... and not limited to just magic obv...
Also managed to make RINOA perform Seifer's Limit Break... FIRE CROSS... her animation is fun to watch, and her weapon reacts as his would pretty much...
 
Last edited:
Hi guys, I have a problem with the Break Damage Limit tag for Zell's finishers. It's not working. I have no problem with Squall, Irvine or Quistis. Just Zell. Could you please look at it to see if there's a problem with the code ? Or maybe tell me where I can find it by hexedit ? Thanks !
 
Hi
How would i go about changing the junction stat boosts for magic, in the ff8 new threat mod having 1 stock of a spell has the same effect as having 100, any help on how i could make this happen?
thanks  :)
 
I made a list of what the Unnamed entries in the Enemy Attacks list are. Many of them are used for dialogue, and when I wasn't sure which line an attack triggered I wrote down the conditions for its activation instead.


001 - Used by Trauma (involved in summoning monsters?)
002 - Basic physical attack (used by most enemies)
003 - Griever basic physical attack
004 - Ultimecia(3) basic physical attack
024 - Belhelmel dialogue/form change
030 - Cockatrice attack
040 - Fastitocalon form change
041 - Fastitocalon(2) form change
042 - Fastitocalon attack
043 - Fastitocalon(2) attack
044 - Biggs HP < 50%
046 - Snow Lion attack
047 - Snow Lion attack
050 - Armadodo attack
051 - Armadodo-related ("Armadodo falls over!" text or unused?)
052 - Armadodo gets up
075 - Gayla attack
078 - Adamantoise attack
081 - Righty attack
082 - Bomb enlarges once
083 - Bomb enlarges twice
087 - Vysage attack
092 - Blue Dragon attack
101 - Grendel attack
104 - Forbidden's HP < 20%
105 - Appears in Forbidden's ability list but appears to be unused?
115 - Funguar laser
116 - Biggs(2) attack
117 - BGH251F2(2) attack
119 - BGH251F2(2) death
132 - Torama stands up
134 - Thrustaevis attack
156 - Cerberus/Jumbo Cactuar/Seifer/Gargantua/"Sorceress"(3)/Ultimecia(2)/Ultimecia(3)/Seifer(4)/Slapper crit attack
160 - Base Leader HP < 50%
167 - Iron Giant/Red Giant attack
170 - Escaped... (Cactuar)
171 - Imp flies
172 - Abyss Worm rise
173 - Abyss Worm recede
178 - Used by Elastoid (involved with its use of Reflect Beam)
179 - Used by Elastoid (involved with its use of Reflect Beam?)
186 - Seifer(1) death
187 - Abadon stands
188 - Abadon returns to normal
189 - Abadon attack
190 - Abadon attack
191 - Abadon death
195 - Ochu attack
196 - Seifer(1) Turn count = 4
197 - Seifer(1) HP < 50%
198 - Seifer(1) HP < 50% (counter)
202 - Red Giant attack
203 - Red Giant death
205 - Edea(1) turn taken (initial dialogue?)
206 - Edea(1) - >= 1 ally dead
207 - Edea(1) HP < 100% / allies dead >= 1
208 - Raijin(1) death
209 - Raijin(2) death / Fujin alive
217 - Fujin(1) turn count = 4 dialogue ("ELLONE, WHERE?" ?)
218 - Fujin(1) death / Raijin dead
219 - Fujin(2) death / Raijin alive
221 - Tonberry falls over...
224 - Tonberry advances
228 - In Tonberry King's movelist, but unused?
229 - In Tonberry King's movelist, but unused?
232 - "Jumbo Cactuar is hesitating..." ?
241 - Catoblepas death
258 - Used by Sphinxaur upon death
259 - Sphinxara death
260 - Tri-Point death
264 - Edea(1) death
265 - Gargantua appearance?
266 - Gargantua death
267 - Raijin(2) / Fujin dead
268 - Raijin(2) used before using a heal
269 - Raijin(2) "I don't hit girls, ya know?"
270 - Blitz attack
275 - Odin death
277 - Krysta death animation
278 - Krysta counter
279 - Krysta counter
286 - Mobile Type 8 death
290 - Used by Trauma (involved in summoning monsters?)
291 - Trauma death
294 - Raijin(3) attack
296 - Fujin(2) pre-Meteor dialogue?
297 - Fujin(2) death
298 - Raijin(3) moved
299 - Raijin(3) death
300 - Raijin(3) HP > 50% (counter) Squall-related dialogue?
301 - Raijin(3) counter dialogue?
302 - Raijin(3) pre-Aura dialogue?
303 - Raijin(3) dialogue
304 - Raijin(3) dialogue ("I won't take it easy on ya!" ?)
306 - Tiamat death
313 - UFO? death
320 - Adel (Squall dialogue)
321 - Adel (Zell dialogue)
322 - Adel (Selphie dialogue)
323 - Adel (Quistis dialogue)
324 - Rinoa dialogue (Adel fight)
325 - Cerberus HP  20%
326 - Cerberus death
330 - Seifer(4) death (Gilgamesh)
331 - Seifer(2) turn count = 3
332 - Seifer(2) HP < 40% (counter)
333 - Seifer(2) death
334 - Seifer(2) Demon Slice on Squall ("I'll show you who's the better man!" ?)
335 - Ultimecia's GF instakill
340 - Seifer(4) - involved in Odin/Gilgamesh event?
341 - Seifer(4) death (normal)
342 - Seifer(3) death
343 - Edea(2) death
344 - Seifer(3) turn count = 1
345 - Seifer(3) turn count = 4
346 - PuPu-related ("Elixir please"?)
347 - PuPu-related ("More Elixir"?)
348 - PuPu "death"
349 - Edea(2) turn taken (first dialogue?)
361 - Helix attack
363 - Ultimecia(2) - involved in using Great Attractor?
366 - "Sorceress"(1) attack
367 - "Sorceress"(2) attack
368 - Griever death (changes music?)
370 - BGH251F2(1) HP < 60% counter/death
371 - BGH251F2(1) HP < 40% counter/death
372 - Elite Soldier - all allies alive (during BGH251F2 battle)
374 - Used by Helix on init
376 - Ultimecia(2) summons Helix
382 - Unused
383 - Unused
 
thanks for this tool , it solve a lot of problems in this game , but i need to know this : the "Limit Break Param" value determine the percentage for getting crysis level 4 , what is the correct value to set to make sure that the limit breaks are always at level 4 ? i ask because sometimes even if i set 255 the crysis level goes to 1, also please notice that i take only three lines to write this comment so please don't be lazy and reply\help me
 
AAARRRRRRGGGGGG!!!!!!!!!!!
please help someone i wanna mess about an have some fun with this, but i honestly dunno what im doin. i have doomtrain and deling i think i have extracted the right file, but then i dont know how to modify in doomtrain or even begin to put the file back in the main.
im asking please someone if you would be so kind as to take some time an write a step by step on how to extract the file, open with doomtrain ,then put file back with whatever. please please its the magic draw i really wanna play with.

No problems figured it out, being a dumbass

New question, are there other kernel.bins to edit with doomtrain or just the one?
 
Last edited:
Thanks :). Good luck with your mod, hopefully it'll be easier to do what you want with Doomtrain.
can you share with us the hexadecimal digits to permanently set the effect of the item "hero"? it the one that make you invincible, basically it would be like what you did with the permanent limit brake, or if it is easier , implement something to permanently active it trough this program
 
Status
Not open for further replies.
Back
Top