K
Kudistos Megistos
Guest
:lol:I wasn't able to show this earlier
Seriously though, nice work; keep it up!
:lol:I wasn't able to show this earlier
This makes me happy (except the killing part).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.
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.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.
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?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
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.@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.
BEGIN AI SCRIPT: Counter - PhysicalTempVar:FF=00if 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
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.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]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.Code:BEGIN AI SCRIPT: Counter - PhysicalTempVar:FF=00if 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
*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.
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?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.
From my notesLooking 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?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.
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 function28 [][] 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 start00 [][][][] 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 funcabb0c18 [][] 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.
r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908r3000: executed illegal opcode 67319060r3000: executed illegal opcode 7dd06cb1translate_address: illegal physical address 044a0908
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.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?
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.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...