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

Kudistos Megistos

  • Banned
  • *
  • Posts: 3929
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #100 on: 2008-11-18 21:51:13 »
Quote from: NFITC1
I wasn't able to show this earlier

 :lol:

Seriously though, nice work; keep it up!

nfitc1

  • *
  • Posts: 3010
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #101 on: 2008-11-19 20:14:33 »
There are only nine more KERNEL.BIN sections left for me to encode (sans 2 & 3 still). That's the description sections and the battle text. This may sound like a lot, but it's really just means two nearly-identical overloaded functions remaining. That being said, I'm going to need testers for this version. I'd like people who can test the PC and people who can test the PSX sides of it. You don't need to be able to test both, but I need to know that both work. I think this will be ready to be tested before the week is over so PM me your email address if you're interested.

EDIT: An odd thing just happened... I was testing out KERNEL.BIN, putting the pieces back together and all, and before I started working on a encoding method that would implement the decoding method Akari mentioned in reply #85 I decided to rebuild it and see how big the KERNEL.BIN gets over the original. It didn't. It got smaller. The original KERNEL.BIN is 22,376 bytes with blocks 9-16 and 25 encoded and GZipped. Without these blocks encoded, the size is 21,337 GZipped. So in addition to making kernel2.bin smaller (which it is now becoming smaller than I reported a few posts ago), KERNEL.BIN is smaller too. Oh yes, and it works, of course. :) This will prove to be no problem for the PC version since it doesn't use those texts, but I wondering about the memory issues of the PSX. Would it be worth it to encode these? GunZipped and left decoded these 9 sections are 17,898 bytes in size. GunZipped and encoded, they are 14,206 bytes. 3,692 bytes doesn't sound significant, but the PSX has limited RAM to begin with. I don't know how it loads it into memory. Does it decode it into memory or leave encoded text in memory and decode it on the fly? If the answer is decode into memory then the developers made a mistake in making the text encoded in the first place. I wouldn't put it past them, but if this is the case I'm not going to bother writing my own encoding function. I REALLY need someone who can test this out on PSX hardware for this reason. It might be just as well emulated as long as the emulator keeps the same RAM size restriction that the original hardware has.


UPDATE: I have good news, but it's against the forum rules to double post (but someone else can post to bump this *hint*) so I'll have to say it like this:

The working beta is HOT and ready to be tested!!
I did end up compressing the PSX text and finally got it to cooperate only to learn something odd. GZipping makes no sense. That's what I learned.
Once I compressed the PSX text for compiling I noticed that the raw files were smaller. If I just take the original KERNEL.BIN, which is 22,376 bytes, and decompress it, the pieces total 46,534 bytes. After WallMarket gets its virtual hands/claws/teeth on it and re-writes it/compresses it, KERNEL.BIN becomes 22,535 bytes and the pieces total 46,136 bytes. I'm dumbfounded how the loss of nearly 400 bytes of source actually make the compression nearly 160 bytes larger..... So weird.

Anyway, I have no way of testing if this new KERNEL.BIN works with the edited text pieces. I NEED a PSX tester for this. PM me your email address if you're interested.
« Last Edit: 2008-11-21 21:46:31 by NFITC1 »

BlitzNCS

  • *
  • Posts: 889
  • Master of nothing in particular
    • View Profile
    • My Youtube
Wall Market, FFVII KERNEL.BIN editor
« Reply #102 on: 2008-11-22 22:38:39 »
well due to my laziness, i've been hiding away from the PSX side of things. however i REALLY like wallmarket and so i must confess that I have FF7 on PSX and would like to test whatever you need. however, right now, i only have copied discs, which cannot be made into ISO's due to their crappiness. IF you can wait a day to a week, i can get my originals returned to me and make an ISO :D

EDIT: I have reclaimed my Discs and am ready to begin the ISOage :D
« Last Edit: 2008-11-24 19:35:50 by NeoCLoudstrife »

nfitc1

  • *
  • Posts: 3010
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #103 on: 2008-11-25 21:54:01 »
So I'm here to inform you all on some decisions I've made and some help I need.
First of all, WM WILL be able to change Character Growth and Initial Data. Even if it kills me, I'll get it done. It may be a Christmas present...or a New Year's present....maybe even a 4th of July present. But I'll get it done.
Second, I've decided that the only Initial Data that will change will be character data, party formation, item list, and materia list. Everything else in that section is null and is likely overridden when the game begins anyway. In fact, the initial data suggests that Barret and Tifa are in your party to begin with. Apparently they leave before you jump off the train.
Third, I need some help identifying things. The Initial Data section is simple enough to understand and it's all pretty straightforward, but the growth data is still largely unknown to me. For instance, there's this rather large section that the wiki describes only as character AI data with no further details. I'm not good enough at debugging to deduce what these are used for. There are four references in this block to the text "#lovepara@chrZE" which I doubt is just a coincidental set of data the text "!resist earth monster" also resides further toward the end of this block. This data block seems to be the last big question mark in my head. Once this is figured out I'll be able to finish WM.
Four. Still looking for testers. One person PMed me and hasn't replied since I emailed him the beta last Friday (maybe it was Saturday).

Kudistos Megistos

  • Banned
  • *
  • Posts: 3929
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #104 on: 2008-11-25 22:36:33 »
Quote from: NFITC1
First of all, WM WILL be able to change Character Growth and Initial Data. Even if it kills me, I'll get it done. It may be a Christmas present...or a New Year's present....maybe even a 4th of July present. But I'll get it done.

This makes me happy (except the killing part).

Regarding some of the stranger sections of kernel.bin2, this post may be of some use (or may not). I'd like to give you more help for this (because I desperately want something that can mod these files as well ;-) ), but I'm afraid that I'm in way over my head, and since I don't have my PSX discs with me, I can't help with that either :-( .

Izban

  • *
  • Posts: 432
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #105 on: 2008-11-26 00:39:10 »
the first bug i have found so far is that it kills what sense sees only showing you the

hp:
weak against:

shows nothing else after using wall market even without changing anything in the kernal2.bin with it

oh sorry about the taking some time to start getting started on the testing

bug 2 sometimes when you change things in the materia tab you get and error usually while editing the hp plus type of materia

bug 3 game crashes if you max the effect modifyer with the additional effect 00 or multy hits so far 55 is the highest that doenst make it crash

just a quick question is it supposed to make 27 parts to both kernal.bin and kernal2.bin if not thats an error too
« Last Edit: 2008-11-26 02:03:18 by Zack Fair »

Akari

  • *
  • Posts: 766
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #106 on: 2008-11-26 03:45:10 »
For instance, there's this rather large section that the wiki describes only as character AI data with no further details. I'm not good enough at debugging to deduce what these are used for. There are four references in this block to the text "#lovepara@chrZE" which I doubt is just a coincidental set of data the text "!resist earth monster" also resides further toward the end of this block. This data block seems to be the last big question mark in my head. Once this is figured out I'll be able to finish WM.

Player AI is simple. It's exactly like enemy AI. First there are 12 two bytes offsets to AI blocks. If this is 0xffff - then there is no AI for this character. This offsets points to block of AI data which is identical to enemy AI. There are 0x10 offsets to AI scripts.

"LOVEPARA:%d %d->%d" - are the script debug log output (opcode 0xA0[number of variable to pop from stack(placed in %d parts)][ASCII string]). You cant see this in game. If you have PSX devkit then this will output to console or log. This part of code is work though. It is related to love affection in battle. But it is never use in field though =(

there are limit ai for vincent and ai for sephiroth too.
« Last Edit: 2008-11-26 04:13:58 by Akari »

nfitc1

  • *
  • Posts: 3010
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #107 on: 2008-11-26 12:14:09 »
@LKM: That's the exact post I happened across that informed me of the rest of the character data. I've added that info almost word for word to the wiki. Terence is already credited for providing all that info so I don't think there'd be a problem with that. That guy is just amazing. I don't know how he figured all that out. Maybe he's on the Sony team that developed the game and isn't telling us. ;)

the first bug i have found so far is that it kills what sense sees only showing you the

hp:
weak against:

shows nothing else after using wall market even without changing anything in the kernal2.bin with it

oh sorry about the taking some time to start getting started on the testing

bug 2 sometimes when you change things in the materia tab you get and error usually while editing the hp plus type of materia

bug 3 game crashes if you max the effect modifyer with the additional effect 00 or multy hits so far 55 is the highest that doenst make it crash

just a quick question is it supposed to make 27 parts to both kernal.bin and kernal2.bin if not thats an error too

1. I'll have to look at that. I sort of suspected this would happen and I figure there's some special character following each of those lines. The same thing probably happens with Learning E.Skills too. Did this happen while creating kernel.bin or kernel2.bin?
2. You mean an error in WM? Can you give an exact example? If it's an error in FFVII I'm not going to touch it.
3. That's a gameplay limitation and I'm not going to enforce that in WM.
4. Yes, there are 27 sections to the Kernel.bin (0-26), but only sections 9-26 in kernel2.bin. There shouldn't be a kernel2.bin0 - kernel2.bin8

@Akari: What effect does character AI have on the game? I'll take a look at the enemy AI data and see what I can find out. I didn't think love points were related to battles at all. I remember a rumor once upon a time that it would go down if Cloud died in battle and up if he healed a character, but I thought that was shot down.

EDIT: After reviewing reported bug #1 I noticed that there is a LOT of battle text that doesn't have references made in it. This might account for the text files getting smaller. If it's not referenced WM doesn't read it, ergo, doesn't re-write it. Like the text " was caught by surprise" is at 0x0633 but there are no pointers to it, yet the game says this when Sneak Attack is performed. I may have to read it as binary data. I'd rather not, but I don't see that I have a lot of choice. :( Can someone tell me if this unreferenced data is important?. Never mind this. I figured it out. It's actually a variable insertion code which is followed by two null terminators. Not sure why that is exactly, but at least I don't have to change too much.
I see what's happening with error #2. I don't know what I was thinking with that line (yup, it was only one line messing the modifiers up). I fixed it.
« Last Edit: 2008-11-26 15:09:55 by NFITC1 »

Akari

  • *
  • Posts: 766
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #108 on: 2008-11-26 16:28:43 »
@Akari: What effect does character AI have on the game? I'll take a look at the enemy AI data and see what I can find out. I didn't think love points were related to battles at all. I remember a rumor once upon a time that it would go down if Cloud died in battle and up if he healed a character, but I thought that was shot down.

This is battle love point. It doesn't have any influence in game. They are just stored in savemap memory bank1 with offset 80 81 82 and 83. For example when Cloud covers some character and this character is one of those Aeris, Barret, Tifa or Yuffie - variable increase by 3.
When some of this character dies it discrease by 5. Only cloud barret tifa aeris and yuffie has this script.
It can't be less than 50 and greater than 200. This variable set to 100 at start of the game and doesn't check anywhere else on fields. I think square planned to use it someway but it was dummied out.

Vincent AI used during limit. Vincent limit enables script1 to run instead of manual input so this script deside what attack to use.
Sephiroth AI enables script1 in the initialization script and use it in battle.

darkrandom12

  • *
  • Posts: 12
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #109 on: 2008-11-29 15:37:43 »
Whenever I try to run the .exe it comes up with an error message telling me that "Component 'comdlg32.ocx' or one of its dependencies not correctly registered: a file is missing or invalid" even though that file is there :)
I'm wondering if it's something to do with Vista? although I doubt it.
Any help would be appreciated.

EDIT: Never mind, I ran it as Administrator and it seemed to work :)

nfitc1

  • *
  • Posts: 3010
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #110 on: 2008-11-30 15:28:58 »
After looking through the forums about AI data, I found this little gem written by Terence Fergusson! I don't know how this guy does it, but he's awesome! :)

Anyway, This has lead me to decipher at least the first script in the character AI area. Turning assembler into a readable code is something I'm a little new at, but I think I've got the basics down. If I were on my laptop right now (which is where I'm developing WM) and if the wireless weren't crashing the system, I'd post my interpretation of the first script. Let's see if I can remember this:

Code: [Select]
BEGIN AI SCRIPT: Counter - Physical

TempVar:FF=00

if SELF AND &40B8 = 19 then
{
   TempVar:0 = 80
}
elseif SELF AND &40B8 = 18 then
{
   TempVar:0 = 81
}
elseif SELF AND &40B8 = 17 then
{
   TempVar:0 = 82
}
elseif SELF AND &40B8 = 21 then
{
   TempVar:0 = 83
}

If TempVar:FF != 0 then
{
   TempGlobalVar = GlobalVar:(0+TempVar:0)

   TempGlobalVar = TempGlobalVar + 3

   if TempGlobalVar > 200 then
   {
      TempGlobalVar = 200
   }

   GlobalVar:(0+TempVar:0) = TempGlobalVar
   Debug.Print("LOVEPARA CHR:%d, %d->%d/n", 3)
}
END SCRIPT

So what I'm seeing here is this is on Cloud when he is attacked Physically. Characters 17, 18, 19, 21 are Barret, Tifa, Aeris, and Yuffie and the 80, 81, 82, 83 are the global addresses of their love points (or something like that). If Cloud blocks for them (that's the self AND &40B8 where, I suppose, &40B8 is the character being covered) then that will change Var:FF somehow (via another script) and increase the points by 3. Here the cap is 200. then the GlobalVar, offset by the given number, is restored as global. A string is printed to the debug console stating the address of the character's love points, previous love points, and current love points.
*WHEW!* That took me over an hour last night to figure out. I'm not going to be able to decompile that into readable code, but translating into assembler will be good enough.

Akari

  • *
  • Posts: 766
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #111 on: 2008-11-30 17:42:58 »
After looking through the forums about AI data, I found this little gem written by Terence Fergusson! I don't know how this guy does it, but he's awesome! :)

Anyway, This has lead me to decipher at least the first script in the character AI area. Turning assembler into a readable code is something I'm a little new at, but I think I've got the basics down. If I were on my laptop right now (which is where I'm developing WM) and if the wireless weren't crashing the system, I'd post my interpretation of the first script. Let's see if I can remember this:

Code: [Select]
BEGIN AI SCRIPT: Counter - Physical

TempVar:FF=00

if SELF AND &40B8 = 19 then
{
   TempVar:0 = 80
}
elseif SELF AND &40B8 = 18 then
{
   TempVar:0 = 81
}
elseif SELF AND &40B8 = 17 then
{
   TempVar:0 = 82
}
elseif SELF AND &40B8 = 21 then
{
   TempVar:0 = 83
}

If TempVar:FF != 0 then
{
   TempGlobalVar = GlobalVar:(0+TempVar:0)

   TempGlobalVar = TempGlobalVar + 3

   if TempGlobalVar > 200 then
   {
      TempGlobalVar = 200
   }

   GlobalVar:(0+TempVar:0) = TempGlobalVar
   Debug.Print("LOVEPARA CHR:%d, %d->%d/n", 3)
}
END SCRIPT

So what I'm seeing here is this is on Cloud when he is attacked Physically. Characters 17, 18, 19, 21 are Barret, Tifa, Aeris, and Yuffie and the 80, 81, 82, 83 are the global addresses of their love points (or something like that). If Cloud blocks for them (that's the self AND &40B8 where, I suppose, &40B8 is the character being covered) then that will change Var:FF somehow (via another script) and increase the points by 3. Here the cap is 200. then the GlobalVar, offset by the given number, is restored as global. A string is printed to the debug console stating the address of the character's love points, previous love points, and current love points.
*WHEW!* That took me over an hour last night to figure out. I'm not going to be able to decompile that into readable code, but translating into assembler will be good enough.

40B8 - this is ID of character. In case of cover - self mask replaces with mask with covered character. So this check what character has been covered.

nfitc1

  • *
  • Posts: 3010
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #112 on: 2008-12-01 14:24:16 »
40B8 - this is ID of character. In case of cover - self mask replaces with mask with covered character. So this check what character has been covered.

Looking through SceneEdit, there are a lot of these addresses I don't know. I wonder if there's a list of any of them anywhere?

Update: I sent what I hope will be the release of WM 1.0 to my testers. This one's gonna kick so much butt compared to the last one, being able to edit all but two sections of kernel.bin and kernel2.bin combined. XD I'm loosely working on 1.1 which will have the ability to edit the initial data, though I expect that some of it will be pointless to edit since the game is likely to re-write it as it gets it anyway.
I've got a neat looking graph set up for the stat growth section, but exp will need a different graph. That's likely to be annoying.

Akari

  • *
  • Posts: 766
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #113 on: 2008-12-01 16:35:08 »
40B8 - this is ID of character. In case of cover - self mask replaces with mask with covered character. So this check what character has been covered.

Looking through SceneEdit, there are a lot of these addresses I don't know. I wonder if there's a list of any of them anywhere?

From my notes

Code: [Select]
800f83a4               battle global structure. (address 0x2000).
00 []       store data performed action type id here. (0x20 for example)
01 []       store data performed attack index here.
04 []       camera data from battle setup 1 (+12[]).
0a [][]     add bits for every inited unit here. Mask for alive units???
0c [][]     self mask for current unit ().
0e [][]     attack mask for current unit (2070).
10 [][]     friends mask for current unit (2080).
12 [][]     0 ().
14 [][]     opponents mask for current unit (0x20A0).
16 [][]     0 ().
18 [][]     init with 0. Add bits for player units.
1a [][]     init with 0. Addt bits for inited enemy units.
1c [][]     all units mask ().
22 [][]     init with 0 at start of battle cycle. Some flags. A0 = (V0 & 25) ? 1 : 7; funca23e0; // battle queue function
28 [][]     store battle id here.
2c [][]     something flags used during attack queue coping. Used during 8 and A 2bytes copying from attack data. 0x0004 checked in battle cycle.
2e [][]     flags. 0x0004 (magical or physical attack)
30 [][]
38 [][][][]


800f83e0               unit data structure. (size 0x68). (address 0x4000).
800f8580               enemy start
00 [][][][] current status. Init with 0. Set sandess/fury flags from savemap structure in case of player. Add 0x00000001 if current hp of character is 0.
04 [][][][] some flags. Init with 0 in case of enemy. Set +0c in battle formation &0x1f here in case of enemy.
            00000002 - looks like if this bit set we are left fighters (right otherwise) in case of side battle.
            00000008 - seems like enabled units in battle. Init with this in case of player.
            00000010 - units with activates auto script 0x01 (action).
            00000020 - remove this flag if we add action with priority >= 2. Looks like defend flag (if we in defend state or not).
            00000040 - set this bit if we in back row.
            00000080 - set this bit for: enemies in case of battle type 0, player in case of battle 2, left row an player 2 in case of battle 4. func1b19ac.
            00000800 - probably bit for temporary unreachable unit (set in battle_update_unit_mask).
            00002000 - set this bit if unit is dead in battle (if unit was dead at the begin of battle flag is not set).
08 []       index. Init with 0xff. Set player character id here in case of player. Set index in case of enemy.
09 []       level. Init with player level.
0b []       store minimum elemental influence here (0 - death, 2 - 200%damage, 3 - normal, 4 - 50%damage, 5 - 0%damage, 6 - 100%absorb, 7 - fully recover)
0c []       formation number. Init with 0. If we init second unit of this type we increment this value by 1 for this unit. If 6 same unit on field they will have 0,1,2,3,4,5 as this value. Set player character id + 0x10 in case of player.
0d []       attack power (strength in enemy data format).
0e []       magic power (magic in enemy data format).
0f []       set evade from armor in case of player (defense% in game).
10 []       init with 0. Set 0x10 during player init. Idle action id.
11 []       init with 5 in case of player. Init with 1 in case of enemy. Hurt action id.
12 []       some data from +a2[] in enemy data (usually 0x10).
13 []       init with 10.
14 []       dexterity.
15 []       luck.
16 []       init with 0 in case of player.
17 []       store 0xff here at start of funcabb0c
18 [][]     attack mask set during run command.
1a [][]     - some mask (maybe mask of those who attack this unit)
1c [][]     -
1e [][]     -
20 [][]     defense. Multiplied by 2 in case of enemy.
22 [][]     magic defense. Multiplied by 2 in case of enemy.
24 [][]     init with 0xffff. Set enemy id here.
28 [][]     current MP.
2a [][]     max MP.
2c [][][][] current HP.
30 [][][][] max HP.
44 [][][][] Init with 0. Store status of this unit here during initialization.
4c []       Init with 1.
4d []       set magic evade (magic defense% in game) from armor equipped in case of player.
4e []       store row from battle formation here during init.
4f []       init with 0xff.
50 [][]     init with 0.
52 [][]     init with 0xffff.
56 []       store 2 here during init in case of enemy. Init with 8 in case of player.
56 [][]     ap.
58 [][][][] gil.
5c [][][][] exp.

And don't forget how modify 40B8 to get real address. drop 0x4000, then right shift by 3 to get bytes. (shifted bits points to bit to get.)
40B8
B8
1011 1000
10111
17
« Last Edit: 2008-12-01 16:41:39 by Akari »

BlitzNCS

  • *
  • Posts: 889
  • Master of nothing in particular
    • View Profile
    • My Youtube
Wall Market, FFVII KERNEL.BIN editor
« Reply #114 on: 2008-12-01 17:27:00 »
Hey there!


My Beta-Testing of the latest version of WallMarket hasn't been very sucessful.
It's probably my own fault, but it looks like editing the PSX kernel is a no-go.
running debug in the emulator, before the game actualy boots ANYTHING, i would get LOTS of:

Code: [Select]
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908
r3000: executed illegal opcode 67319060
r3000: executed illegal opcode 7dd06cb1
translate_address: illegal physical address 044a0908

is that my poor attempt at creating an ISO, or a problem with WallMarket?
« Last Edit: 2008-12-01 18:20:00 by NeoCLoudstrife »

nfitc1

  • *
  • Posts: 3010
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #115 on: 2008-12-01 18:27:14 »
Hey there!


My Beta-Testing of the latest version of WallMarket hasn't been very sucessful.
It's probably my own fault, but it looks like editing the PSX kernel is a no-go.
running debug in the emulator, before the game actualy boots ANYTHING, i would get LOTS of:

. . .

is that my poor attempt at creating an ISO, or a problem with WallMarket?

I don't know... It works fine on the PC version so I couldn't say. Have you tried recreating the ISO without changing anything to see if that's it? I DO know that if any error exists in the Kernel that it would appear at load time. Since the PC version ignores sections 10-27 of kernel.bin I have no way of testing it myself. Sorry. :( Are you using the corrected version (most recent) that I sent you? I believe that I sent two yesterday and I'm pretty sure the first one won't work.

This also may be the side-effect of my "evil genius" of not throwing up terminators when the text is NULL is coming back to haunt me. This works fine on the PC version in the kernel2.bin so I thought it'd work fine in kernel.bin.
« Last Edit: 2008-12-01 18:35:10 by NFITC1 »

BlitzNCS

  • *
  • Posts: 889
  • Master of nothing in particular
    • View Profile
    • My Youtube
Wall Market, FFVII KERNEL.BIN editor
« Reply #116 on: 2008-12-01 18:36:43 »
well, in actual fact, i'm using the one from about a week ago, i havent used either of the more recent ones at all. so It should have worked, right? in any case, if you think i should re-test using the latest one, i will. also, yes, it does work without editing it. so perhaps it is WM. however, anything could have happened...

nfitc1

  • *
  • Posts: 3010
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #117 on: 2008-12-01 18:55:58 »
well, in actual fact, i'm using the one from about a week ago, i havent used either of the more recent ones at all. so It should have worked, right? in any case, if you think i should re-test using the latest one, i will. also, yes, it does work without editing it. so perhaps it is WM. however, anything could have happened...

That's why then. That one was incorrect. It wasn't writing one of the kernel text sections correctly (teehee) so it's no wonder that you were getting illegal address errors. :)

BlitzNCS

  • *
  • Posts: 889
  • Master of nothing in particular
    • View Profile
    • My Youtube
Wall Market, FFVII KERNEL.BIN editor
« Reply #118 on: 2008-12-01 19:01:50 »
ahah. i see. i shall try again then :D

Armorvil

  • *
  • Posts: 621
  • Working on : FFVII Total Grudge
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #119 on: 2008-12-01 19:17:54 »
Sorry for not replying earlier - but yes, I can test Wall Market 1.1 on the PSX version if you like  :-)
« Last Edit: 2008-12-01 19:19:36 by Armorvil »

Izban

  • *
  • Posts: 432
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #120 on: 2008-12-02 02:09:45 »
ok next bug
materia section
just clicking in one of the boxes which is clear places a value of 0 there so clicking in the level 5 box gives it a 0 which makes it so that the materia is mastered as soon as you get it

when you set the materia type to 19 and any of the values to 56+ then game seems to glitch also you cant select limits attack ids for the materia type modifiers

dual drain crashes the game

so far with my meddleing there has been 0 bugs in the kernal2.bin files or anything text related

lol you can make a materia that lets you use limits whenever you want to only problem is you can only use the limits you know
« Last Edit: 2008-12-02 04:27:52 by Zack Fair »

Armorvil

  • *
  • Posts: 621
  • Working on : FFVII Total Grudge
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #121 on: 2008-12-02 09:32:12 »
Quote
dual drain crashes the game

It's normal. For the dual status effect to work correctly, both "Dual" and "Dual drain" must be checked or the game crashes. Wall Market has nothing to do with it.

nfitc1

  • *
  • Posts: 3010
  • I just don't know what went wrong.
    • View Profile
    • WM/PrC Blog
Wall Market, FFVII KERNEL.BIN editor
« Reply #122 on: 2008-12-02 15:12:44 »
Quote
just clicking in one of the boxes which is clear places a value of 0 there so clicking in the level 5 box gives it a 0 which makes it so that the materia is mastered as soon as you get it

Dang. I thought I fixed that. The Materia modifiers and AP requirements are the only ones that should be able to have empty values. The game acts weirdly when they are 0s instead of NULLs.

Quote
when you set the materia type to 19 and any of the values to 56+ then game seems to glitch also you cant select limits attack ids for the materia type modifiers

Materia type 19 is magic materia. Therefore, it will only allow magic attacks. These are attack sections 0 - 3 which comprise the first 56 attacks, or indexes 0-55. Command types will only allow commands so if you go past 31 with any of them that will glitch/crash too. I will NOT make WM enforce these constraints, but I should make a note in the readme for acceptable values. The only constraints that currently exist are only for making sure that the values don't overflow. They're stored very carefully. If any of them go negative or out of scope the program would crash (both WM and FFVII) so that's all the enforcing I'm going to do.

UPDATE: Remember a few posts back when I said GZipping made no sense because the files were larger when the source was smaller? Well now I can say things are even weirder. Kernel.bin file 4 (Item Data) refuses to get along with the rest of the files. The way WM has worked since the first release (and still does) is it executes gzip in a hidden shell with the "-9 -n" extensions. I didn't really like the idea of gzipping each file individually because that's 27 shell commands and 27 chances for something to go wrong. So what I did was chain all the filenames into one LONG command that tells gzip to compress all 27 files at once into 27 different files. Brilliant, right? Yes. But no. When I do this, every file created exactly matches the contents of the original KERNEL.BIN file with one exception. Kernel.bin4.gz is 2 bytes larger. Yet, oddly, extracting both of them results in identical files. I don't know why. When I run it all individually, Kernel.bin4.gz becomes the correct size and I can create a file 100% accurate to the original KERNEL.BIN file when no changes are made. Thus, to maintain complete accuracy with the original file I'm forced to, once again, run gzip 27 times. This ability has improved greatly from VB6 to VB9 so I'm not seeing much of a drop in performance either way.
Also several posts back I was wondering about the text referencing used in the kernel to get descriptions. Battle Text also uses that referencing scheme, but not on the texts that have variable injections like scans and item steals. This is part of the reason why my creation of the battle text was smaller. This has been fixed and now it is identical to the way it is originally stored.
Zack Fair also mentioned that WM kills the ability to sense, making the text show nothing on the PC game. I think I fixed that. :)
Armorvil also suggested in an email to me that a KERNEL.BIN file larger than the original will not work properly on a PSX emulator. I still think it's his method of injecting it into the ISO, but now there will likely be two new changes:
1. An "Update Text" box has been added that will be unchecked if you are not changing the text.
2. When all the data is compiled and ready to be written, WM will warn you that the file about to be written is larger than the original file.
I think these changes will complement each other well. If you change text and realize that it's too large, you just cancel the writing and uncheck that box and compile again. These changes will only affect the PSX version anyway.
« Last Edit: 2008-12-02 19:36:56 by NFITC1 »

BlitzNCS

  • *
  • Posts: 889
  • Master of nothing in particular
    • View Profile
    • My Youtube
Wall Market, FFVII KERNEL.BIN editor
« Reply #123 on: 2008-12-02 19:30:10 »
Sadly, anything i try with modding the PSX version corrupts the "playstation" screen and chashes straight after...however i may not be the best tester...

Jonnylossus

  • *
  • Posts: 115
    • View Profile
Wall Market, FFVII KERNEL.BIN editor
« Reply #124 on: 2008-12-03 12:31:19 »
Hi!
This program is very great, but sadly i encounter an error, if i want to compile the (changed files to the) KERNEL.BIN. :( I decompressed the files, changed some items and then i wanted to compress the KERNEL.BIN again, but the result was this:

http://666kb.com/i/b4cye1iqo44kemyub.jpg

Btw, the VB Files 4, 5 and 6 couldn't help me with this problem. :( I guess i need a different pack, or something else. I hope someone can help me. =)

Any suggestion would be great!

Greetings

Edit: I have the german version of FF7, because i am german and live there.
Also, my OS is "Windows Server 2008 Enterprise" (Trial Version, since Microsoft was/is giving the Trialversion out for 240 Days). Maybe this information is needed.
« Last Edit: 2008-12-03 12:35:00 by Jonnylossus »